From 066341a03d6a0ac1f66ea5f23e43af85865eccdb Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 3 Apr 2023 10:51:51 -0700 Subject: [PATCH 001/525] Added missing invocation of test case. --- packages/pyright-internal/src/tests/typeEvaluator2.test.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 771ab164e..d9cdd1ed4 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1037,6 +1037,12 @@ test('GenericTypes104', () => { TestUtils.validateResults(analysisResults, 1); }); +test('GenericTypes105', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes105.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From f25a43f27df54bbaad1c3bc6aac4313701c25fcc Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 3 Apr 2023 10:52:58 -0700 Subject: [PATCH 002/525] Fixed a bug that led to a false positive error when applying bidirectional type inference to a call expression that invokes a generic function where the return type includes a generic class with multiple type arguments, some of which are supplied by the expected type and some of which are not. This addresses https://github.com/microsoft/pyright/issues/4895. --- .../src/analyzer/typeEvaluator.ts | 10 ++++++---- .../src/tests/samples/genericTypes106.py | 20 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes106.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 42d797a1c..a732fa004 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -22547,6 +22547,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions srcTypeArgs = srcType.typeArguments; } + let isCompatible = true; + if (srcTypeArgs) { for (let srcArgIndex = 0; srcArgIndex < srcTypeArgs.length; srcArgIndex++) { const srcTypeArg = srcTypeArgs[srcArgIndex]; @@ -22584,7 +22586,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions diag.addAddendum(assignmentDiag); } } - return false; + isCompatible = false; } } else if (TypeVarType.getVariance(destTypeParam) === Variance.Contravariant) { if ( @@ -22607,7 +22609,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); childDiag.addAddendum(assignmentDiag); } - return false; + isCompatible = false; } } else { if ( @@ -22633,14 +22635,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); childDiag.addAddendum(assignmentDiag); } - return false; + isCompatible = false; } } } } } - return true; + return isCompatible; } // Determines if the source type can be assigned to the dest type. diff --git a/packages/pyright-internal/src/tests/samples/genericTypes106.py b/packages/pyright-internal/src/tests/samples/genericTypes106.py new file mode 100644 index 000000000..3a82e2988 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes106.py @@ -0,0 +1,20 @@ +# This sample tests bidirectional type inference for the call of a generic +# method that returns a generic type with multiple type arguments where +# some of these type arguments can be satisfied directly by the expected +# type's type arguments and some cannot. + +from typing import Generic, Literal, TypeVar + +_T_co = TypeVar("_T_co", covariant=True) +_N = TypeVar("_N", bound=int) + + +class ClassA(Generic[_T_co, _N]): + ... + + +def func1(n: _N) -> ClassA[Literal[0], _N]: + ... + + +v1: ClassA[int, Literal[1]] = func1(1) diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index d9cdd1ed4..160c1a055 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1043,6 +1043,12 @@ test('GenericTypes105', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes106', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes106.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 403715604419ecdd3572fb90edec7a88f61b2440 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 4 Apr 2023 10:19:47 -0700 Subject: [PATCH 003/525] Fixed bug that resulted in incorrect type narrowing in the negative (fall-through) case for certain value patterns. This addresses https://github.com/microsoft/pyright/issues/4899. --- .../src/analyzer/patternMatching.ts | 1 + .../src/tests/samples/match4.py | 42 ++++++++++++++----- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index a8fcc60a3..278dc8337 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -913,6 +913,7 @@ function narrowTypeBasedOnValuePattern( } else if ( isClassInstance(subjectSubtypeExpanded) && isClassInstance(valueSubtypeExpanded) && + isLiteralType(subjectSubtypeExpanded) && ClassType.isLiteralValueSame(valueSubtypeExpanded, subjectSubtypeExpanded) ) { return undefined; diff --git a/packages/pyright-internal/src/tests/samples/match4.py b/packages/pyright-internal/src/tests/samples/match4.py index ba32474a7..48b723312 100644 --- a/packages/pyright-internal/src/tests/samples/match4.py +++ b/packages/pyright-internal/src/tests/samples/match4.py @@ -5,13 +5,14 @@ from typing import Tuple, TypeVar, Union from http import HTTPStatus + def handle_reply(reply: Tuple[HTTPStatus, str] | Tuple[HTTPStatus]): match reply: case (HTTPStatus.OK as a1, a2): reveal_type(a1, expected_text="Literal[HTTPStatus.OK]") reveal_type(a2, expected_text="str") - case (HTTPStatus.NOT_FOUND as d1, ): + case (HTTPStatus.NOT_FOUND as d1,): reveal_type(d1, expected_text="Literal[HTTPStatus.NOT_FOUND]") @@ -19,10 +20,13 @@ class MyEnum(Enum): V1 = 0 V2 = 1 + class MyClass: class_var_1: "MyClass" - def __eq__(self, object: "MyClass") -> bool: ... + def __eq__(self, object: "MyClass") -> bool: + ... + def test_unknown(value_to_match): match value_to_match: @@ -47,6 +51,7 @@ def test_class_var(value_to_match: str): TInt = TypeVar("TInt", bound=MyEnum) + def test_union(value_to_match: Union[TInt, MyEnum]) -> Union[TInt, MyEnum]: match value_to_match: case MyEnum.V1 as a1: @@ -61,6 +66,7 @@ class Medal(Enum): silver = 2 bronze = 3 + class Color(Enum): red = 1 blue = 2 @@ -70,20 +76,20 @@ class Color(Enum): def test_enum_narrowing(m: Union[Medal, Color, int]): match m: case Medal.gold as a1: - reveal_type(a1, expected_text='Literal[Medal.gold]') - reveal_type(m, expected_text='Literal[Medal.gold]') + reveal_type(a1, expected_text="Literal[Medal.gold]") + reveal_type(m, expected_text="Literal[Medal.gold]") case Medal.silver as b1: - reveal_type(b1, expected_text='Literal[Medal.silver]') - reveal_type(m, expected_text='Literal[Medal.silver]') + reveal_type(b1, expected_text="Literal[Medal.silver]") + reveal_type(m, expected_text="Literal[Medal.silver]") case Color() as c1: - reveal_type(c1, expected_text='Color') - reveal_type(m, expected_text='Color') + reveal_type(c1, expected_text="Color") + reveal_type(m, expected_text="Color") case d1: - reveal_type(d1, expected_text='int | Literal[Medal.bronze]') - reveal_type(m, expected_text='int | Literal[Medal.bronze]') + reveal_type(d1, expected_text="int | Literal[Medal.bronze]") + reveal_type(m, expected_text="int | Literal[Medal.bronze]") class Foo(Enum): @@ -98,3 +104,19 @@ def __str__(self) -> str: reveal_type(x, expected_text="Never") +class Numbers: + ZERO = 0.0 + ONE = 1 + INFINITY = float("inf") + + +def parse_float(subj: float): + match subj: + case Numbers.ONE: + reveal_type(subj, expected_text="Literal[1]") + case Numbers.INFINITY: + reveal_type(subj, expected_text="float") + case Numbers.ZERO: + reveal_type(subj, expected_text="float") + case f: + reveal_type(subj, expected_text="float") From 2e22fe80253f22d500cc9bd2382f32d5e84c6737 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 4 Apr 2023 13:49:10 -0700 Subject: [PATCH 004/525] Special-cased check for `self` super-type to handle typeshed's `str` class definition. --- packages/pyright-internal/src/analyzer/checker.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 076605e50..eb9ba1224 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -6008,6 +6008,16 @@ export class Checker extends ParseTreeWalker { return; } + // If the declared type is LiteralString and the class is str, exempt this case. + // It's used in the typeshed stubs. + if ( + isClassInstance(paramType) && + ClassType.isBuiltIn(paramType, 'LiteralString') && + ClassType.isBuiltIn(classType, 'str') + ) { + return; + } + const typeVarContext = new TypeVarContext(getTypeVarScopeId(functionType)); if (!this._evaluator.assignType(paramType, expectedType, /* diag */ undefined, typeVarContext)) { // We exempt Never from this check because it has a legitimate use in this case. From 4d3ccbf540948b3d44d70e16e18325088640cf50 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 4 Apr 2023 14:12:03 -0700 Subject: [PATCH 005/525] Improved handling when a generic function is passed as an argument to another generic function multiple times within a tuple. This further addresses https://github.com/microsoft/pyright/issues/4852. --- .../src/analyzer/typeUtils.ts | 121 +++++++++++------- .../src/tests/samples/genericTypes105.py | 2 +- 2 files changed, 73 insertions(+), 50 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 231a93251..b182a2095 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3013,7 +3013,7 @@ class TypeVarTransformer { return classType; } - let newTypeArgs: Type[] = []; + let newTypeArgs: Type[] | undefined; let newTupleTypeArgs: TupleTypeArgument[] | undefined; let specializationNeeded = false; const typeParams = ClassType.getTypeParameters(classType); @@ -3032,55 +3032,8 @@ class TypeVarTransformer { this._isTransformingTypeArg = true; // If type args were previously provided, specialize them. - if (classType.typeArguments) { - newTypeArgs = classType.typeArguments.map((oldTypeArgType) => { - if (isTypeVar(oldTypeArgType) && oldTypeArgType.details.isParamSpec) { - return transformParamSpec(oldTypeArgType); - } - - let newTypeArgType = this.apply(oldTypeArgType, recursionCount); - if (newTypeArgType !== oldTypeArgType) { - specializationNeeded = true; - - // If this was a variadic type variable that was part of a union - // (e.g. Union[Unpack[Vs]]), expand the subtypes into a union here. - if ( - isTypeVar(oldTypeArgType) && - isVariadicTypeVar(oldTypeArgType) && - oldTypeArgType.isVariadicInUnion - ) { - newTypeArgType = _expandVariadicUnpackedUnion(newTypeArgType); - } - } - return newTypeArgType; - }); - } else { - typeParams.forEach((typeParam) => { - let replacementType: Type = typeParam; - - if (typeParam.details.isParamSpec) { - replacementType = transformParamSpec(typeParam); - if (replacementType !== typeParam) { - specializationNeeded = true; - } - } else { - const typeParamName = TypeVarType.getNameWithScope(typeParam); - if (!this._pendingTypeVarTransformations.has(typeParamName)) { - const transformedType = this.transformTypeVar(typeParam, recursionCount); - replacementType = transformedType ?? typeParam; - - if (replacementType !== typeParam) { - specializationNeeded = true; - } else if (transformedType !== undefined && !classType.typeArguments) { - specializationNeeded = true; - } - } - } - - newTypeArgs.push(replacementType); - }); - } + // Handle tuples specially. if (ClassType.isTupleClass(classType)) { if (classType.tupleTypeArguments) { newTupleTypeArgs = []; @@ -3108,6 +3061,76 @@ class TypeVarTransformer { specializationNeeded = true; } } + + // If this is an empty tuple, don't recompute the non-tuple type argument. + if (newTupleTypeArgs && newTupleTypeArgs.length > 0) { + // Combine the tuple type args into a single non-tuple type argument. + newTypeArgs = [ + combineTypes( + newTupleTypeArgs.map((t) => { + if (isTypeVar(t.type) && isUnpackedVariadicTypeVar(t.type)) { + // Treat the unpacked TypeVarTuple as a union. + return TypeVarType.cloneForUnpacked(t.type, /* isInUnion */ true); + } + + return t.type; + }) + ), + ]; + } + } + + if (!newTypeArgs) { + if (classType.typeArguments) { + newTypeArgs = classType.typeArguments.map((oldTypeArgType) => { + if (isTypeVar(oldTypeArgType) && oldTypeArgType.details.isParamSpec) { + return transformParamSpec(oldTypeArgType); + } + + let newTypeArgType = this.apply(oldTypeArgType, recursionCount); + if (newTypeArgType !== oldTypeArgType) { + specializationNeeded = true; + + // If this was a variadic type variable that was part of a union + // (e.g. Union[Unpack[Vs]]), expand the subtypes into a union here. + if ( + isTypeVar(oldTypeArgType) && + isVariadicTypeVar(oldTypeArgType) && + oldTypeArgType.isVariadicInUnion + ) { + newTypeArgType = _expandVariadicUnpackedUnion(newTypeArgType); + } + } + return newTypeArgType; + }); + } else { + newTypeArgs = []; + + typeParams.forEach((typeParam) => { + let replacementType: Type = typeParam; + + if (typeParam.details.isParamSpec) { + replacementType = transformParamSpec(typeParam); + if (replacementType !== typeParam) { + specializationNeeded = true; + } + } else { + const typeParamName = TypeVarType.getNameWithScope(typeParam); + if (!this._pendingTypeVarTransformations.has(typeParamName)) { + const transformedType = this.transformTypeVar(typeParam, recursionCount); + replacementType = transformedType ?? typeParam; + + if (replacementType !== typeParam) { + specializationNeeded = true; + } else if (transformedType !== undefined && !classType.typeArguments) { + specializationNeeded = true; + } + } + } + + newTypeArgs!.push(replacementType); + }); + } } this._isTransformingTypeArg = wasTransformingTypeArg; diff --git a/packages/pyright-internal/src/tests/samples/genericTypes105.py b/packages/pyright-internal/src/tests/samples/genericTypes105.py index 83a677378..4dcdb0eb6 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes105.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes105.py @@ -50,7 +50,7 @@ def test_2(f: Callable[[A], X]) -> Callable[[A, B, C], tuple[X, B, C]]: reveal_type( val, - expected_text="(A@test_2, T(1)@identity, T(2)@identity) -> tuple[X@test_2, T(1)@identity, T(2)@identity]", + expected_text="(A@test_2, T@identity, T(1)@identity) -> tuple[X@test_2, T@identity, T(1)@identity]", ) return val From 1359d004f67aa2854c66f6fc16f28deaaa99c539 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 4 Apr 2023 21:15:28 -0700 Subject: [PATCH 006/525] Updated typeshed stubs to the latest version. --- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/_compression.pyi | 2 +- .../stdlib/_dummy_thread.pyi | 2 +- .../stdlib/_dummy_threading.pyi | 2 +- .../stdlib/_sitebuiltins.pyi | 2 +- .../typeshed-fallback/stdlib/_winapi.pyi | 5 +- .../typeshed-fallback/stdlib/argparse.pyi | 4 +- .../stdlib/asyncio/base_events.pyi | 6 +- .../stdlib/asyncio/events.pyi | 6 +- .../stdlib/asyncio/windows_utils.pyi | 2 +- .../typeshed-fallback/stdlib/builtins.pyi | 2 +- .../stdlib/concurrent/futures/process.pyi | 10 +- .../stdlib/concurrent/futures/thread.pyi | 8 +- .../typeshed-fallback/stdlib/configparser.pyi | 12 +- .../typeshed-fallback/stdlib/copy.pyi | 2 +- .../typeshed-fallback/stdlib/dataclasses.pyi | 28 +- .../typeshed-fallback/stdlib/datetime.pyi | 50 +- .../typeshed-fallback/stdlib/dis.pyi | 10 +- .../stdlib/distutils/command/config.pyi | 2 +- .../stdlib/distutils/dist.pyi | 2 +- .../stdlib/distutils/fancy_getopt.pyi | 2 +- .../stdlib/email/message.pyi | 6 +- .../typeshed-fallback/stdlib/ftplib.pyi | 2 +- .../typeshed-fallback/stdlib/functools.pyi | 10 +- .../typeshed-fallback/stdlib/getopt.pyi | 4 +- .../typeshed-fallback/stdlib/http/client.pyi | 2 +- .../stdlib/http/cookiejar.pyi | 2 +- .../stdlib/importlib/__init__.pyi | 2 +- .../typeshed-fallback/stdlib/inspect.pyi | 6 +- .../stdlib/lib2to3/pytree.pyi | 2 +- .../typeshed-fallback/stdlib/locale.pyi | 4 +- .../stdlib/logging/__init__.pyi | 2 +- .../stdlib/logging/handlers.pyi | 4 +- .../typeshed-fallback/stdlib/mailcap.pyi | 2 +- .../typeshed-fallback/stdlib/mimetypes.pyi | 2 +- .../typeshed-fallback/stdlib/modulefinder.pyi | 4 +- .../stdlib/multiprocessing/context.pyi | 2 +- .../stdlib/multiprocessing/dummy/__init__.pyi | 8 +- .../stdlib/multiprocessing/forkserver.pyi | 2 +- .../stdlib/multiprocessing/managers.pyi | 4 +- .../stdlib/multiprocessing/pool.pyi | 10 +- .../stdlib/multiprocessing/process.pyi | 4 +- .../multiprocessing/resource_tracker.pyi | 2 +- .../stdlib/multiprocessing/util.pyi | 4 +- .../typeshed-fallback/stdlib/pdb.pyi | 2 +- .../typeshed-fallback/stdlib/pickle.pyi | 4 +- .../typeshed-fallback/stdlib/platform.pyi | 4 +- .../typeshed-fallback/stdlib/pydoc.pyi | 24 +- .../typeshed-fallback/stdlib/random.pyi | 4 +- .../typeshed-fallback/stdlib/reprlib.pyi | 25 + .../typeshed-fallback/stdlib/sched.pyi | 4 +- .../typeshed-fallback/stdlib/shlex.pyi | 10 +- .../typeshed-fallback/stdlib/shutil.pyi | 2 +- .../typeshed-fallback/stdlib/smtplib.pyi | 12 +- .../stdlib/sqlite3/dbapi2.pyi | 2 +- .../typeshed-fallback/stdlib/string.pyi | 4 +- .../typeshed-fallback/stdlib/subprocess.pyi | 48 +- .../typeshed-fallback/stdlib/sys.pyi | 7 +- .../typeshed-fallback/stdlib/threading.pyi | 2 +- .../stdlib/tkinter/__init__.pyi | 1238 +++++------ .../stdlib/tkinter/colorchooser.pyi | 6 +- .../stdlib/tkinter/dialog.pyi | 2 +- .../stdlib/tkinter/simpledialog.pyi | 2 +- .../typeshed-fallback/stdlib/tkinter/tix.pyi | 108 +- .../typeshed-fallback/stdlib/tkinter/ttk.pyi | 50 +- .../typeshed-fallback/stdlib/trace.pyi | 4 +- .../typeshed-fallback/stdlib/turtle.pyi | 6 +- .../typeshed-fallback/stdlib/types.pyi | 4 +- .../typeshed-fallback/stdlib/typing.pyi | 24 +- .../stdlib/typing_extensions.pyi | 6 +- .../stdlib/unittest/mock.pyi | 6 +- .../stdlib/unittest/suite.pyi | 2 +- .../typeshed-fallback/stdlib/urllib/parse.pyi | 13 +- .../stdlib/urllib/request.pyi | 2 +- .../typeshed-fallback/stdlib/uuid.pyi | 15 +- .../typeshed-fallback/stdlib/weakref.pyi | 2 +- .../stdlib/xml/dom/domreg.pyi | 4 +- .../stdlib/xml/dom/minicompat.pyi | 9 +- .../stdlib/xml/dom/minidom.pyi | 22 +- .../stdlib/xml/sax/__init__.pyi | 4 +- .../stdlib/xml/sax/saxutils.pyi | 6 +- .../stdlib/xmlrpc/client.pyi | 6 +- .../stdlib/xmlrpc/server.pyi | 6 +- .../typeshed-fallback/stdlib/zipfile.pyi | 2 +- .../stubs/D3DShot/METADATA.toml | 9 - .../stubs/D3DShot/d3dshot/__init__.pyi | 12 - .../stubs/D3DShot/d3dshot/capture_output.pyi | 42 - .../d3dshot/capture_outputs/__init__.pyi | 0 .../capture_outputs/numpy_capture_output.pyi | 28 - .../numpy_float_capture_output.pyi | 5 - .../capture_outputs/pil_capture_output.pyi | 24 - .../pytorch_capture_output.pyi | 26 - .../pytorch_float_capture_output.pyi | 3 - .../pytorch_float_gpu_capture_output.pyi | 3 - .../pytorch_gpu_capture_output.pyi | 3 - .../stubs/D3DShot/d3dshot/d3dshot.pyi | 45 - .../stubs/D3DShot/d3dshot/display.pyi | 49 - .../stubs/D3DShot/d3dshot/dll/__init__.pyi | 28 - .../stubs/D3DShot/d3dshot/dll/d3d.pyi | 214 -- .../stubs/D3DShot/d3dshot/dll/dxgi.pyi | 154 -- .../stubs/D3DShot/d3dshot/dll/shcore.pyi | 3 - .../stubs/D3DShot/d3dshot/dll/user32.pyi | 13 - .../DateTimeRange/datetimerange/__init__.pyi | 18 +- .../datetimerange/__version__.pyi | 2 +- .../stubs/Deprecated/deprecated/classic.pyi | 2 +- .../stubs/Deprecated/deprecated/sphinx.pyi | 18 +- .../stubs/ExifRead/exifread/__init__.pyi | 12 +- .../stubs/ExifRead/exifread/classes.pyi | 10 +- .../stubs/ExifRead/exifread/exif_log.pyi | 4 +- .../stubs/ExifRead/exifread/utils.pyi | 2 +- .../stubs/Flask-Cors/flask_cors/core.pyi | 4 +- .../stubs/Flask-Cors/flask_cors/extension.pyi | 2 +- .../Flask-Migrate/flask_migrate/__init__.pyi | 106 +- .../flask_sqlalchemy/__init__.pyi | 52 +- .../stubs/JACK-Client/jack/__init__.pyi | 56 +- .../Markdown/markdown/blockprocessors.pyi | 26 +- .../stubs/Markdown/markdown/core.pyi | 2 +- .../Markdown/markdown/extensions/__init__.pyi | 4 +- .../markdown/extensions/codehilite.pyi | 2 +- .../markdown/extensions/fenced_code.pyi | 10 +- .../markdown/extensions/footnotes.pyi | 8 +- .../Markdown/markdown/extensions/tables.pyi | 11 +- .../Markdown/markdown/extensions/toc.pyi | 4 +- .../Markdown/markdown/inlinepatterns.pyi | 36 +- .../stubs/Markdown/markdown/preprocessors.pyi | 10 +- .../Markdown/markdown/treeprocessors.pyi | 2 +- .../stubs/Markdown/markdown/util.pyi | 12 +- .../stubs/Pillow/PIL/BlpImagePlugin.pyi | 2 +- .../stubs/Pillow/PIL/ContainerIO.pyi | 4 +- .../stubs/Pillow/PIL/EpsImagePlugin.pyi | 6 +- .../stubs/Pillow/PIL/GdImageFile.pyi | 2 +- .../stubs/Pillow/PIL/GifImagePlugin.pyi | 4 +- .../stubs/Pillow/PIL/GimpGradientFile.pyi | 2 +- .../stubs/Pillow/PIL/IcnsImagePlugin.pyi | 2 +- .../stubs/Pillow/PIL/IcoImagePlugin.pyi | 4 +- .../stubs/Pillow/PIL/Image.pyi | 86 +- .../stubs/Pillow/PIL/ImageChops.pyi | 6 +- .../stubs/Pillow/PIL/ImageCms.pyi | 22 +- .../stubs/Pillow/PIL/ImageDraw.pyi | 166 +- .../stubs/Pillow/PIL/ImageDraw2.pyi | 10 +- .../stubs/Pillow/PIL/ImageFile.pyi | 6 +- .../stubs/Pillow/PIL/ImageFilter.pyi | 28 +- .../stubs/Pillow/PIL/ImageFont.pyi | 106 +- .../stubs/Pillow/PIL/ImageGrab.pyi | 2 +- .../stubs/Pillow/PIL/ImageMath.pyi | 4 +- .../stubs/Pillow/PIL/ImageMorph.pyi | 4 +- .../stubs/Pillow/PIL/ImageOps.pyi | 24 +- .../stubs/Pillow/PIL/ImagePalette.pyi | 12 +- .../stubs/Pillow/PIL/ImageQt.pyi | 2 +- .../stubs/Pillow/PIL/ImageSequence.pyi | 2 +- .../stubs/Pillow/PIL/ImageShow.pyi | 14 +- .../stubs/Pillow/PIL/ImageStat.pyi | 2 +- .../stubs/Pillow/PIL/ImageTk.pyi | 6 +- .../stubs/Pillow/PIL/ImageWin.pyi | 10 +- .../stubs/Pillow/PIL/JpegImagePlugin.pyi | 2 +- .../stubs/Pillow/PIL/MpoImagePlugin.pyi | 2 +- .../stubs/Pillow/PIL/PSDraw.pyi | 4 +- .../stubs/Pillow/PIL/PcfFontFile.pyi | 2 +- .../stubs/Pillow/PIL/PdfParser.pyi | 22 +- .../stubs/Pillow/PIL/PngImagePlugin.pyi | 10 +- .../stubs/Pillow/PIL/PyAccess.pyi | 4 +- .../stubs/Pillow/PIL/SpiderImagePlugin.pyi | 4 +- .../stubs/Pillow/PIL/TiffImagePlugin.pyi | 26 +- .../stubs/Pillow/PIL/TiffTags.pyi | 12 +- .../stubs/Pillow/PIL/WmfImagePlugin.pyi | 2 +- .../stubs/Pillow/PIL/_binary.pyi | 12 +- .../stubs/Pillow/PIL/features.pyi | 2 +- .../stubs/PyMySQL/pymysql/connections.pyi | 166 +- .../stubs/PyMySQL/pymysql/converters.pyi | 34 +- .../stubs/PyMySQL/pymysql/cursors.pyi | 12 +- .../stubs/PyYAML/yaml/__init__.pyi | 130 +- .../stubs/PyYAML/yaml/constructor.pyi | 26 +- .../stubs/PyYAML/yaml/cyaml.pyi | 52 +- .../stubs/PyYAML/yaml/dumper.pyi | 78 +- .../stubs/PyYAML/yaml/emitter.pyi | 22 +- .../stubs/PyYAML/yaml/error.pyi | 12 +- .../stubs/PyYAML/yaml/events.pyi | 14 +- .../stubs/PyYAML/yaml/nodes.pyi | 4 +- .../stubs/PyYAML/yaml/parser.pyi | 6 +- .../stubs/PyYAML/yaml/reader.pyi | 8 +- .../stubs/PyYAML/yaml/representer.pyi | 10 +- .../stubs/PyYAML/yaml/resolver.pyi | 2 +- .../stubs/PyYAML/yaml/serializer.pyi | 2 +- .../stubs/PyYAML/yaml/tokens.pyi | 4 +- .../stubs/Pygments/pygments/__init__.pyi | 4 +- .../stubs/Pygments/pygments/cmdline.pyi | 4 +- .../stubs/Pygments/pygments/filter.pyi | 2 +- .../stubs/Pygments/pygments/formatter.pyi | 8 +- .../Pygments/pygments/formatters/__init__.pyi | 2 +- .../Pygments/pygments/formatters/html.pyi | 6 +- .../Pygments/pygments/formatters/img.pyi | 4 +- .../Pygments/pygments/formatters/latex.pyi | 2 +- .../pygments/formatters/terminal256.pyi | 10 +- .../stubs/Pygments/pygments/lexer.pyi | 20 +- .../Pygments/pygments/lexers/__init__.pyi | 8 +- .../stubs/Pygments/pygments/modeline.pyi | 2 +- .../stubs/Pygments/pygments/regexopt.pyi | 2 +- .../stubs/Pygments/pygments/scanner.pyi | 2 +- .../stubs/Pygments/pygments/util.pyi | 12 +- .../SQLAlchemy/sqlalchemy/cimmutabledict.pyi | 2 +- .../sqlalchemy/connectors/mxodbc.pyi | 4 +- .../sqlalchemy/connectors/pyodbc.pyi | 2 +- .../sqlalchemy/dialects/firebird/base.pyi | 28 +- .../sqlalchemy/dialects/firebird/fdb.pyi | 2 +- .../dialects/firebird/kinterbasdb.pyi | 4 +- .../sqlalchemy/dialects/mssql/base.pyi | 32 +- .../sqlalchemy/dialects/mssql/mxodbc.pyi | 2 +- .../sqlalchemy/dialects/mssql/pyodbc.pyi | 4 +- .../sqlalchemy/dialects/mysql/aiomysql.pyi | 8 +- .../sqlalchemy/dialects/mysql/asyncmy.pyi | 8 +- .../sqlalchemy/dialects/mysql/base.pyi | 46 +- .../dialects/mysql/mariadbconnector.pyi | 4 +- .../sqlalchemy/dialects/mysql/mysqldb.pyi | 4 +- .../sqlalchemy/dialects/mysql/oursql.pyi | 16 +- .../sqlalchemy/dialects/mysql/pymysql.pyi | 2 +- .../sqlalchemy/dialects/mysql/types.pyi | 58 +- .../sqlalchemy/dialects/oracle/base.pyi | 48 +- .../sqlalchemy/dialects/oracle/cx_oracle.pyi | 18 +- .../sqlalchemy/dialects/postgresql/array.pyi | 4 +- .../dialects/postgresql/asyncpg.pyi | 10 +- .../sqlalchemy/dialects/postgresql/base.pyi | 74 +- .../sqlalchemy/dialects/postgresql/dml.pyi | 30 +- .../sqlalchemy/dialects/postgresql/ext.pyi | 2 +- .../sqlalchemy/dialects/postgresql/hstore.pyi | 2 +- .../sqlalchemy/dialects/postgresql/json.pyi | 2 +- .../sqlalchemy/dialects/postgresql/pg8000.pyi | 12 +- .../dialects/postgresql/psycopg2.pyi | 16 +- .../sqlalchemy/dialects/sqlite/aiosqlite.pyi | 8 +- .../sqlalchemy/dialects/sqlite/base.pyi | 36 +- .../sqlalchemy/dialects/sqlite/dml.pyi | 20 +- .../sqlalchemy/dialects/sybase/base.pyi | 20 +- .../sqlalchemy/dialects/sybase/pysybase.pyi | 2 +- .../SQLAlchemy/sqlalchemy/engine/base.pyi | 48 +- .../SQLAlchemy/sqlalchemy/engine/create.pyi | 4 +- .../SQLAlchemy/sqlalchemy/engine/cursor.pyi | 24 +- .../SQLAlchemy/sqlalchemy/engine/default.pyi | 32 +- .../sqlalchemy/engine/interfaces.pyi | 42 +- .../sqlalchemy/engine/reflection.pyi | 32 +- .../SQLAlchemy/sqlalchemy/engine/result.pyi | 42 +- .../SQLAlchemy/sqlalchemy/engine/url.pyi | 32 +- .../SQLAlchemy/sqlalchemy/event/base.pyi | 2 +- .../SQLAlchemy/sqlalchemy/event/registry.pyi | 9 +- .../stubs/SQLAlchemy/sqlalchemy/exc.pyi | 26 +- .../sqlalchemy/ext/associationproxy.pyi | 28 +- .../sqlalchemy/ext/asyncio/base.pyi | 2 +- .../sqlalchemy/ext/asyncio/engine.pyi | 24 +- .../sqlalchemy/ext/asyncio/result.pyi | 20 +- .../sqlalchemy/ext/asyncio/scoping.pyi | 34 +- .../sqlalchemy/ext/asyncio/session.pyi | 40 +- .../SQLAlchemy/sqlalchemy/ext/automap.pyi | 20 +- .../stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi | 6 +- .../sqlalchemy/ext/horizontal_shard.pyi | 8 +- .../SQLAlchemy/sqlalchemy/ext/hybrid.pyi | 12 +- .../SQLAlchemy/sqlalchemy/ext/indexable.pyi | 2 +- .../sqlalchemy/ext/instrumentation.pyi | 6 +- .../sqlalchemy/ext/orderinglist.pyi | 6 +- .../SQLAlchemy/sqlalchemy/ext/serializer.pyi | 8 +- .../SQLAlchemy/sqlalchemy/future/engine.pyi | 4 +- .../SQLAlchemy/sqlalchemy/inspection.pyi | 2 +- .../stubs/SQLAlchemy/sqlalchemy/log.pyi | 2 +- .../SQLAlchemy/sqlalchemy/orm/__init__.pyi | 2 +- .../SQLAlchemy/sqlalchemy/orm/attributes.pyi | 72 +- .../stubs/SQLAlchemy/sqlalchemy/orm/base.pyi | 2 +- .../SQLAlchemy/sqlalchemy/orm/clsregistry.pyi | 4 +- .../SQLAlchemy/sqlalchemy/orm/collections.pyi | 18 +- .../SQLAlchemy/sqlalchemy/orm/context.pyi | 12 +- .../SQLAlchemy/sqlalchemy/orm/decl_api.pyi | 42 +- .../SQLAlchemy/sqlalchemy/orm/decl_base.pyi | 2 +- .../sqlalchemy/orm/descriptor_props.pyi | 10 +- .../SQLAlchemy/sqlalchemy/orm/dynamic.pyi | 18 +- .../SQLAlchemy/sqlalchemy/orm/evaluator.pyi | 2 +- .../stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi | 6 +- .../SQLAlchemy/sqlalchemy/orm/identity.pyi | 4 +- .../sqlalchemy/orm/instrumentation.pyi | 24 +- .../SQLAlchemy/sqlalchemy/orm/interfaces.pyi | 10 +- .../SQLAlchemy/sqlalchemy/orm/loading.pyi | 26 +- .../SQLAlchemy/sqlalchemy/orm/mapper.pyi | 62 +- .../sqlalchemy/orm/path_registry.pyi | 2 +- .../SQLAlchemy/sqlalchemy/orm/persistence.pyi | 2 +- .../stubs/SQLAlchemy/sqlalchemy/orm/query.pyi | 29 +- .../sqlalchemy/orm/relationships.pyi | 106 +- .../SQLAlchemy/sqlalchemy/orm/scoping.pyi | 60 +- .../SQLAlchemy/sqlalchemy/orm/session.pyi | 104 +- .../SQLAlchemy/sqlalchemy/orm/strategies.pyi | 14 +- .../sqlalchemy/orm/strategy_options.pyi | 12 +- .../SQLAlchemy/sqlalchemy/orm/unitofwork.pyi | 10 +- .../stubs/SQLAlchemy/sqlalchemy/orm/util.pyi | 89 +- .../stubs/SQLAlchemy/sqlalchemy/pool/base.pyi | 24 +- .../stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi | 4 +- .../SQLAlchemy/sqlalchemy/processors.pyi | 4 +- .../stubs/SQLAlchemy/sqlalchemy/sql/base.pyi | 10 +- .../SQLAlchemy/sqlalchemy/sql/coercions.pyi | 6 +- .../SQLAlchemy/sqlalchemy/sql/compiler.pyi | 186 +- .../stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi | 56 +- .../stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi | 40 +- .../SQLAlchemy/sqlalchemy/sql/elements.pyi | 108 +- .../SQLAlchemy/sqlalchemy/sql/functions.pyi | 22 +- .../SQLAlchemy/sqlalchemy/sql/lambdas.pyi | 30 +- .../SQLAlchemy/sqlalchemy/sql/operators.pyi | 62 +- .../SQLAlchemy/sqlalchemy/sql/schema.pyi | 210 +- .../SQLAlchemy/sqlalchemy/sql/selectable.pyi | 114 +- .../SQLAlchemy/sqlalchemy/sql/sqltypes.pyi | 70 +- .../SQLAlchemy/sqlalchemy/sql/traversals.pyi | 2 +- .../SQLAlchemy/sqlalchemy/sql/type_api.pyi | 4 +- .../stubs/SQLAlchemy/sqlalchemy/sql/util.pyi | 52 +- .../SQLAlchemy/sqlalchemy/sql/visitors.pyi | 2 +- .../sqlalchemy/testing/assertions.pyi | 76 +- .../sqlalchemy/testing/assertsql.pyi | 6 +- .../SQLAlchemy/sqlalchemy/testing/engines.pyi | 30 +- .../sqlalchemy/testing/exclusions.pyi | 30 +- .../sqlalchemy/testing/profiling.pyi | 6 +- .../SQLAlchemy/sqlalchemy/testing/util.pyi | 8 +- .../sqlalchemy/testing/warnings.pyi | 2 +- .../sqlalchemy/util/_collections.pyi | 20 +- .../sqlalchemy/util/_concurrency_py3k.pyi | 2 +- .../SQLAlchemy/sqlalchemy/util/_preloaded.pyi | 2 +- .../SQLAlchemy/sqlalchemy/util/compat.pyi | 20 +- .../sqlalchemy/util/deprecations.pyi | 22 +- .../sqlalchemy/util/langhelpers.pyi | 48 +- .../SQLAlchemy/sqlalchemy/util/queue.pyi | 12 +- .../sqlalchemy/util/topological.pyi | 2 +- .../stubs/aiofiles/aiofiles/base.pyi | 2 +- .../stubs/aiofiles/aiofiles/os.pyi | 22 +- .../aiofiles/aiofiles/tempfile/__init__.pyi | 276 +-- .../aiofiles/aiofiles/threadpool/__init__.pyi | 80 +- .../stubs/annoy/annoy/annoylib.pyi | 4 +- .../stubs/aws-xray-sdk/METADATA.toml | 2 +- .../aws_xray_sdk/core/async_context.pyi | 4 +- .../aws_xray_sdk/core/async_recorder.pyi | 6 +- .../aws_xray_sdk/core/context.pyi | 6 +- .../aws_xray_sdk/core/daemon_config.pyi | 2 +- .../core/emitters/udp_emitter.pyi | 2 +- .../aws_xray_sdk/core/lambda_launcher.pyi | 2 +- .../core/models/dummy_entities.pyi | 12 +- .../aws_xray_sdk/core/models/entity.pyi | 8 +- .../core/models/facade_segment.pyi | 6 +- .../aws_xray_sdk/core/models/segment.pyi | 4 +- .../aws_xray_sdk/core/models/subsegment.pyi | 4 +- .../aws_xray_sdk/core/models/throwable.pyi | 2 +- .../aws_xray_sdk/core/models/trace_header.pyi | 2 +- .../aws_xray_sdk/core/patcher.pyi | 4 +- .../aws_xray_sdk/core/plugins/ec2_plugin.pyi | 4 +- .../aws_xray_sdk/core/recorder.pyi | 44 +- .../core/sampling/local/reservoir.pyi | 2 +- .../core/sampling/local/sampler.pyi | 2 +- .../core/sampling/local/sampling_rule.pyi | 2 +- .../aws_xray_sdk/core/sampling/sampler.pyi | 4 +- .../core/sampling/sampling_rule.pyi | 10 +- .../core/streaming/default_streaming.pyi | 2 +- .../core/utils/atomic_counter.pyi | 6 +- .../core/utils/search_pattern.pyi | 2 +- .../aws_xray_sdk/core/utils/stacktrace.pyi | 2 +- .../stubs/babel/babel/core.pyi | 26 +- .../stubs/babel/babel/dates.pyi | 92 +- .../stubs/babel/babel/languages.pyi | 2 +- .../stubs/babel/babel/lists.pyi | 2 +- .../stubs/babel/babel/localedata.pyi | 4 +- .../stubs/babel/babel/messages/catalog.pyi | 68 +- .../stubs/babel/babel/messages/extract.pyi | 36 +- .../stubs/babel/babel/messages/frontend.pyi | 10 +- .../stubs/babel/babel/messages/jslexer.pyi | 4 +- .../stubs/babel/babel/messages/mofile.pyi | 2 +- .../stubs/babel/babel/messages/plurals.pyi | 2 +- .../stubs/babel/babel/messages/pofile.pyi | 30 +- .../stubs/babel/babel/numbers.pyi | 56 +- .../stubs/babel/babel/plural.pyi | 8 +- .../stubs/babel/babel/support.pyi | 28 +- .../stubs/babel/babel/units.pyi | 16 +- .../stubs/babel/babel/util.pyi | 6 +- .../stubs/beautifulsoup4/METADATA.toml | 2 +- .../stubs/beautifulsoup4/bs4/__init__.pyi | 42 +- .../beautifulsoup4/bs4/builder/__init__.pyi | 6 +- .../bs4/builder/_htmlparser.pyi | 12 +- .../beautifulsoup4/bs4/builder/_lxml.pyi | 10 +- .../stubs/beautifulsoup4/bs4/dammit.pyi | 30 +- .../stubs/beautifulsoup4/bs4/diagnose.pyi | 12 +- .../stubs/beautifulsoup4/bs4/element.pyi | 178 +- .../stubs/beautifulsoup4/bs4/formatter.pyi | 12 +- .../stubs/bleach/bleach/__init__.pyi | 8 +- .../stubs/bleach/bleach/callbacks.pyi | 4 +- .../stubs/bleach/bleach/html5lib_shim.pyi | 2 +- .../stubs/bleach/bleach/sanitizer.pyi | 8 +- .../stubs/boto/boto/__init__.pyi | 147 +- .../stubs/boto/boto/auth.pyi | 6 +- .../stubs/boto/boto/connection.pyi | 106 +- .../stubs/boto/boto/exception.pyi | 18 +- .../stubs/boto/boto/kms/layer1.pyi | 48 +- .../stubs/boto/boto/plugin.pyi | 2 +- .../stubs/boto/boto/regioninfo.pyi | 10 +- .../stubs/boto/boto/s3/acl.pyi | 18 +- .../stubs/boto/boto/s3/bucket.pyi | 202 +- .../boto/boto/s3/bucketlistresultset.pyi | 66 +- .../stubs/boto/boto/s3/bucketlogging.pyi | 2 +- .../stubs/boto/boto/s3/connection.pyi | 124 +- .../stubs/boto/boto/s3/cors.pyi | 20 +- .../stubs/boto/boto/s3/deletemarker.pyi | 2 +- .../stubs/boto/boto/s3/key.pyi | 240 +- .../stubs/boto/boto/s3/keyfile.pyi | 2 +- .../stubs/boto/boto/s3/lifecycle.pyi | 26 +- .../stubs/boto/boto/s3/multidelete.pyi | 18 +- .../stubs/boto/boto/s3/multipart.pyi | 34 +- .../stubs/boto/boto/s3/prefix.pyi | 2 +- .../stubs/boto/boto/s3/tagging.pyi | 2 +- .../stubs/boto/boto/s3/user.pyi | 4 +- .../stubs/boto/boto/s3/website.pyi | 38 +- .../stubs/boto/boto/utils.pyi | 56 +- .../stubs/braintree/braintree/address.pyi | 4 +- .../braintree/braintree/address_gateway.pyi | 4 +- .../braintree/braintree/attribute_getter.pyi | 2 +- .../braintree/braintree/braintree_gateway.pyi | 2 +- .../braintree/braintree/client_token.pyi | 2 +- .../braintree/client_token_gateway.pyi | 2 +- .../braintree/braintree/configuration.pyi | 14 +- .../braintree/credentials_parser.pyi | 2 +- .../stubs/braintree/braintree/credit_card.pyi | 4 +- .../braintree/credit_card_gateway.pyi | 4 +- .../stubs/braintree/braintree/customer.pyi | 6 +- .../braintree/braintree/customer_gateway.pyi | 6 +- .../braintree/braintree/document_upload.pyi | 2 +- .../braintree/document_upload_gateway.pyi | 2 +- .../stubs/braintree/braintree/environment.pyi | 2 +- .../merchant_account/merchant_account.pyi | 2 +- .../braintree/merchant_account_gateway.pyi | 6 +- .../braintree/braintree/payment_method.pyi | 4 +- .../braintree/payment_method_gateway.pyi | 6 +- .../braintree/payment_method_nonce.pyi | 2 +- .../braintree/braintree/paypal_account.pyi | 2 +- .../braintree/paypal_account_gateway.pyi | 2 +- .../stubs/braintree/braintree/search.pyi | 4 +- .../braintree/settlement_batch_summary.pyi | 2 +- .../settlement_batch_summary_gateway.pyi | 2 +- .../braintree/braintree/subscription.pyi | 6 +- .../braintree/subscription_gateway.pyi | 6 +- .../braintree/braintree/testing_gateway.pyi | 2 +- .../stubs/braintree/braintree/transaction.pyi | 12 +- .../braintree/transaction_gateway.pyi | 8 +- .../braintree/util/graphql_client.pyi | 4 +- .../stubs/braintree/braintree/util/http.pyi | 10 +- .../braintree/validation_error_collection.pyi | 2 +- .../braintree/braintree/webhook_testing.pyi | 2 +- .../braintree/webhook_testing_gateway.pyi | 2 +- .../stubs/cachetools/cachetools/__init__.pyi | 20 +- .../stubs/cachetools/cachetools/func.pyi | 12 +- .../stubs/caldav/caldav/davclient.pyi | 20 +- .../stubs/caldav/caldav/elements/base.pyi | 6 +- .../stubs/caldav/caldav/elements/cdav.pyi | 6 +- .../stubs/caldav/caldav/lib/error.pyi | 2 +- .../stubs/caldav/caldav/lib/namespace.pyi | 2 +- .../stubs/caldav/caldav/objects.pyi | 165 +- .../typeshed-fallback/stubs/cffi/cffi/api.pyi | 56 +- .../stubs/cffi/cffi/backend_ctypes.pyi | 20 +- .../stubs/cffi/cffi/cparser.pyi | 2 +- .../stubs/cffi/cffi/ffiplatform.pyi | 4 +- .../stubs/cffi/cffi/model.pyi | 22 +- .../stubs/cffi/cffi/pkgconfig.pyi | 2 +- .../stubs/cffi/cffi/recompiler.pyi | 24 +- .../stubs/cffi/cffi/vengine_cpy.pyi | 2 +- .../stubs/cffi/cffi/vengine_gen.pyi | 2 +- .../stubs/cffi/cffi/verifier.pyi | 20 +- .../stubs/chardet/chardet/__init__.pyi | 2 +- .../chardet/chardet/universaldetector.pyi | 2 +- .../stubs/chevron/chevron/main.pyi | 2 +- .../stubs/chevron/chevron/renderer.pyi | 20 +- .../stubs/chevron/chevron/tokenizer.pyi | 2 +- .../click-spinner/click_spinner/__init__.pyi | 4 +- .../stubs/colorama/colorama/ansi.pyi | 90 +- .../stubs/colorama/colorama/ansitowin32.pyi | 24 +- .../stubs/colorama/colorama/initialise.pyi | 2 +- .../stubs/colorama/colorama/win32.pyi | 4 +- .../stubs/colorama/colorama/winterm.pyi | 41 +- .../console-menu/consolemenu/console_menu.pyi | 28 +- .../consolemenu/format/menu_margins.pyi | 2 +- .../consolemenu/format/menu_padding.pyi | 2 +- .../consolemenu/format/menu_style.pyi | 10 +- .../consolemenu/items/function_item.pyi | 8 +- .../consolemenu/menu_component.pyi | 36 +- .../consolemenu/menu_formatter.pyi | 20 +- .../consolemenu/multiselect_menu.pyi | 18 +- .../console-menu/consolemenu/prompt_utils.pyi | 32 +- .../stubs/console-menu/consolemenu/screen.pyi | 2 +- .../consolemenu/selection_menu.pyi | 26 +- .../stubs/contextvars/contextvars.pyi | 6 +- .../stubs/croniter/croniter/croniter.pyi | 38 +- .../stubs/dateparser/dateparser/__init__.pyi | 12 +- .../stubs/dateparser/dateparser/conf.pyi | 6 +- .../stubs/dateparser/dateparser/date.pyi | 28 +- .../dateparser/dateparser/date_parser.pyi | 2 +- .../dateparser/freshness_date_parser.pyi | 2 +- .../dateparser/languages/dictionary.pyi | 6 +- .../dateparser/languages/loader.pyi | 20 +- .../dateparser/languages/locale.pyi | 10 +- .../stubs/dateparser/dateparser/parser.pyi | 4 +- .../dateparser/dateparser/search/__init__.pyi | 10 +- .../dateparser/search/detection.pyi | 8 +- .../dateparser/dateparser/search/search.pyi | 12 +- .../dateparser/dateparser/timezone_parser.pyi | 4 +- .../dateparser/dateparser/utils/__init__.pyi | 4 +- .../stubs/dj-database-url/METADATA.toml | 2 +- .../stubs/dj-database-url/dj_database_url.pyi | 6 +- .../dockerfile_parse/parser.pyi | 12 +- .../dockerfile_parse/util.pyi | 21 +- .../stubs/docutils/docutils/__init__.pyi | 2 +- .../stubs/docutils/docutils/frontend.pyi | 32 +- .../stubs/docutils/docutils/io.pyi | 28 +- .../docutils/docutils/languages/__init__.pyi | 2 +- .../stubs/docutils/docutils/nodes.pyi | 54 +- .../docutils/parsers/rst/__init__.pyi | 2 +- .../docutils/docutils/transforms/__init__.pyi | 4 +- .../docutils/docutils/utils/__init__.pyi | 4 +- .../stubs/emoji/emoji/core.pyi | 22 +- .../stubs/flake8-bugbear/METADATA.toml | 2 +- .../flake8_plugin_utils/plugin.pyi | 2 +- .../flake8_plugin_utils/utils/assertions.pyi | 4 +- .../stubs/flake8-simplify/METADATA.toml | 2 +- .../stubs/fpdf2/fpdf/actions.pyi | 12 +- .../stubs/fpdf2/fpdf/annotations.pyi | 36 +- .../stubs/fpdf2/fpdf/drawing.pyi | 50 +- .../stubs/fpdf2/fpdf/errors.pyi | 2 +- .../stubs/fpdf2/fpdf/fpdf.pyi | 250 ++- .../stubs/fpdf2/fpdf/html.pyi | 10 +- .../stubs/fpdf2/fpdf/image_parsing.pyi | 2 +- .../stubs/fpdf2/fpdf/line_break.pyi | 12 +- .../stubs/fpdf2/fpdf/outline.pyi | 2 +- .../stubs/fpdf2/fpdf/output.pyi | 21 +- .../stubs/fpdf2/fpdf/prefs.pyi | 12 +- .../stubs/fpdf2/fpdf/recorder.pyi | 2 +- .../stubs/fpdf2/fpdf/sign.pyi | 8 +- .../stubs/fpdf2/fpdf/structure_tree.pyi | 8 +- .../stubs/fpdf2/fpdf/svg.pyi | 16 +- .../stubs/fpdf2/fpdf/syntax.pyi | 16 +- .../stubs/fpdf2/fpdf/template.pyi | 28 +- .../stubs/fpdf2/fpdf/transitions.pyi | 2 +- .../stubs/fpdf2/fpdf/util.pyi | 2 +- .../google/cloud/ndb/model.pyi | 6 +- .../stubs/hdbcli/hdbcli/dbapi.pyi | 4 +- .../stubs/html5lib/html5lib/_ihatexml.pyi | 14 +- .../stubs/html5lib/html5lib/_inputstream.pyi | 18 +- .../stubs/html5lib/html5lib/_tokenizer.pyi | 4 +- .../stubs/html5lib/html5lib/_trie/_base.pyi | 2 +- .../stubs/html5lib/html5lib/_trie/py.pyi | 2 +- .../stubs/html5lib/html5lib/_utils.pyi | 4 +- .../stubs/html5lib/html5lib/filters/lint.pyi | 2 +- .../stubs/html5lib/html5lib/html5parser.pyi | 14 +- .../stubs/html5lib/html5lib/serializer.pyi | 8 +- .../html5lib/treebuilders/__init__.pyi | 2 +- .../html5lib/html5lib/treebuilders/base.pyi | 10 +- .../html5lib/html5lib/treebuilders/etree.pyi | 2 +- .../html5lib/treebuilders/etree_lxml.pyi | 6 +- .../html5lib/treewalkers/__init__.pyi | 2 +- .../html5lib/html5lib/treewalkers/base.pyi | 4 +- .../stubs/httplib2/METADATA.toml | 2 +- .../stubs/httplib2/httplib2/__init__.pyi | 60 +- .../stubs/httplib2/httplib2/socks.pyi | 28 +- .../humanfriendly/humanfriendly/__init__.pyi | 22 +- .../humanfriendly/humanfriendly/case.pyi | 12 +- .../stubs/humanfriendly/humanfriendly/cli.pyi | 2 +- .../humanfriendly/humanfriendly/prompts.pyi | 8 +- .../humanfriendly/humanfriendly/sphinx.pyi | 4 +- .../humanfriendly/humanfriendly/tables.pyi | 4 +- .../humanfriendly/terminal/__init__.pyi | 10 +- .../humanfriendly/terminal/html.pyi | 4 +- .../humanfriendly/terminal/spinners.pyi | 16 +- .../humanfriendly/humanfriendly/testing.pyi | 18 +- .../humanfriendly/humanfriendly/text.pyi | 12 +- .../influxdb_client/_async/api_client.pyi | 52 +- .../influxdb_client/_async/rest.pyi | 90 +- .../influxdb_client/_sync/api_client.pyi | 54 +- .../influxdb_client/_sync/rest.pyi | 90 +- .../influxdb_client/client/_base.pyi | 16 +- .../client/authorizations_api.pyi | 6 +- .../influxdb_client/client/bucket_api.pyi | 12 +- .../influxdb_client/client/delete_api.pyi | 2 +- .../client/delete_api_async.pyi | 2 +- .../influxdb_client/client/exceptions.pyi | 2 +- .../client/flux_csv_parser.pyi | 4 +- .../influxdb_client/client/flux_table.pyi | 16 +- .../client/influxdb_client.pyi | 18 +- .../client/influxdb_client_async.pyi | 16 +- .../client/invokable_scripts_api.pyi | 12 +- .../influxdb_client/client/labels_api.pyi | 2 +- .../client/logging_handler.pyi | 2 +- .../client/organizations_api.pyi | 2 +- .../influxdb_client/client/query_api.pyi | 30 +- .../client/query_api_async.pyi | 18 +- .../influxdb_client/client/tasks_api.pyi | 4 +- .../influxdb_client/client/util/helpers.pyi | 2 +- .../client/write/dataframe_serializer.pyi | 6 +- .../influxdb_client/client/write/point.pyi | 6 +- .../influxdb_client/client/write/retry.pyi | 28 +- .../influxdb_client/client/write_api.pyi | 12 +- .../client/write_api_async.pyi | 6 +- .../add_resource_member_request_body.pyi | 2 +- .../domain/analyze_query_response.pyi | 2 +- .../domain/analyze_query_response_errors.pyi | 8 +- .../domain/array_expression.pyi | 2 +- .../influxdb_client/domain/ast_response.pyi | 2 +- .../influxdb_client/domain/authorization.pyi | 24 +- .../domain/authorization_post_request.pyi | 10 +- .../domain/authorization_update_request.pyi | 2 +- .../influxdb_client/domain/authorizations.pyi | 2 +- .../influxdb_client/domain/axes.pyi | 2 +- .../influxdb_client/domain/axis.pyi | 12 +- .../influxdb_client/domain/bad_statement.pyi | 2 +- .../domain/band_view_properties.pyi | 56 +- .../domain/binary_expression.pyi | 8 +- .../influxdb_client/domain/block.pyi | 2 +- .../domain/boolean_literal.pyi | 2 +- .../influxdb_client/domain/bucket.pyi | 24 +- .../influxdb_client/domain/bucket_links.pyi | 12 +- .../domain/bucket_metadata_manifest.pyi | 14 +- .../domain/bucket_retention_rules.pyi | 5 +- .../domain/bucket_shard_mapping.pyi | 2 +- .../influxdb_client/domain/buckets.pyi | 2 +- .../influxdb_client/domain/builder_config.pyi | 8 +- .../builder_config_aggregate_window.pyi | 2 +- .../domain/builder_functions_type.pyi | 2 +- .../domain/builder_tags_type.pyi | 2 +- .../domain/builtin_statement.pyi | 2 +- .../domain/call_expression.pyi | 2 +- .../influxdb_client/domain/cell.pyi | 14 +- .../influxdb_client/domain/cell_links.pyi | 2 +- .../influxdb_client/domain/cell_update.pyi | 2 +- .../domain/cell_with_view_properties.pyi | 18 +- .../influxdb_client/domain/check.pyi | 2 +- .../influxdb_client/domain/check_base.pyi | 30 +- .../domain/check_base_links.pyi | 10 +- .../domain/check_discriminator.pyi | 30 +- .../influxdb_client/domain/check_patch.pyi | 2 +- .../domain/check_view_properties.pyi | 20 +- .../influxdb_client/domain/checks.pyi | 2 +- .../domain/conditional_expression.pyi | 8 +- .../influxdb_client/domain/config.pyi | 2 +- .../domain/constant_variable_properties.pyi | 2 +- .../influxdb_client/domain/create_cell.pyi | 12 +- .../domain/create_dashboard_request.pyi | 2 +- .../influxdb_client/domain/custom_check.pyi | 32 +- .../influxdb_client/domain/dashboard.pyi | 16 +- .../domain/dashboard_color.pyi | 10 +- .../domain/dashboard_query.pyi | 8 +- .../domain/dashboard_with_view_properties.pyi | 16 +- .../influxdb_client/domain/dashboards.pyi | 2 +- .../domain/date_time_literal.pyi | 2 +- .../influxdb_client/domain/dbr_ps.pyi | 2 +- .../influxdb_client/domain/dbrp.pyi | 14 +- .../influxdb_client/domain/dbrp_create.pyi | 12 +- .../influxdb_client/domain/dbrp_get.pyi | 2 +- .../influxdb_client/domain/dbrp_update.pyi | 2 +- .../influxdb_client/domain/deadman_check.pyi | 48 +- .../influxdb_client/domain/decimal_places.pyi | 2 +- .../domain/delete_predicate_request.pyi | 2 +- .../influxdb_client/domain/dialect.pyi | 10 +- .../domain/dict_expression.pyi | 2 +- .../influxdb_client/domain/dict_item.pyi | 2 +- .../influxdb_client/domain/duration.pyi | 2 +- .../domain/duration_literal.pyi | 2 +- .../influxdb_client/domain/error.pyi | 8 +- .../domain/expression_statement.pyi | 2 +- .../influxdb_client/domain/field.pyi | 8 +- .../influxdb_client/domain/file.pyi | 10 +- .../influxdb_client/domain/float_literal.pyi | 2 +- .../influxdb_client/domain/flux_response.pyi | 2 +- .../domain/flux_suggestion.pyi | 2 +- .../domain/flux_suggestions.pyi | 2 +- .../domain/function_expression.pyi | 4 +- .../domain/gauge_view_properties.pyi | 22 +- .../domain/greater_threshold.pyi | 6 +- .../influxdb_client/domain/health_check.pyi | 12 +- .../domain/heatmap_view_properties.pyi | 60 +- .../domain/histogram_view_properties.pyi | 32 +- .../domain/http_notification_endpoint.pyi | 38 +- .../domain/http_notification_rule.pyi | 50 +- .../domain/http_notification_rule_base.pyi | 50 +- .../influxdb_client/domain/identifier.pyi | 2 +- .../domain/import_declaration.pyi | 2 +- .../domain/index_expression.pyi | 4 +- .../domain/integer_literal.pyi | 2 +- .../influxdb_client/domain/is_onboarding.pyi | 2 +- .../influxdb_client/domain/label.pyi | 8 +- .../domain/label_create_request.pyi | 2 +- .../influxdb_client/domain/label_mapping.pyi | 2 +- .../influxdb_client/domain/label_response.pyi | 2 +- .../influxdb_client/domain/label_update.pyi | 2 +- .../domain/labels_response.pyi | 2 +- .../domain/language_request.pyi | 2 +- .../legacy_authorization_post_request.pyi | 12 +- .../domain/lesser_threshold.pyi | 6 +- .../line_plus_single_stat_properties.pyi | 58 +- .../domain/line_protocol_error.pyi | 10 +- .../domain/line_protocol_length_error.pyi | 2 +- .../influxdb_client/domain/links.pyi | 4 +- .../domain/list_stacks_response.pyi | 2 +- .../influxdb_client/domain/log_event.pyi | 2 +- .../domain/logical_expression.pyi | 8 +- .../influxdb_client/domain/logs.pyi | 2 +- .../domain/map_variable_properties.pyi | 2 +- .../domain/markdown_view_properties.pyi | 4 +- .../domain/measurement_schema.pyi | 14 +- .../domain/measurement_schema_column.pyi | 2 +- .../measurement_schema_create_request.pyi | 2 +- .../domain/measurement_schema_list.pyi | 2 +- .../measurement_schema_update_request.pyi | 2 +- .../domain/member_assignment.pyi | 4 +- .../domain/member_expression.pyi | 2 +- .../domain/metadata_backup.pyi | 4 +- .../influxdb_client/domain/model_property.pyi | 4 +- .../domain/mosaic_view_properties.pyi | 58 +- .../domain/notification_endpoint.pyi | 2 +- .../domain/notification_endpoint_base.pyi | 22 +- .../notification_endpoint_base_links.pyi | 8 +- .../notification_endpoint_discriminator.pyi | 22 +- .../domain/notification_endpoint_update.pyi | 2 +- .../domain/notification_endpoints.pyi | 2 +- .../domain/notification_rule.pyi | 2 +- .../domain/notification_rule_base.pyi | 46 +- .../domain/notification_rule_base_links.pyi | 10 +- .../notification_rule_discriminator.pyi | 46 +- .../domain/notification_rule_update.pyi | 2 +- .../domain/notification_rules.pyi | 2 +- .../domain/object_expression.pyi | 2 +- .../domain/onboarding_request.pyi | 14 +- .../domain/onboarding_response.pyi | 8 +- .../domain/option_statement.pyi | 2 +- .../influxdb_client/domain/organization.pyi | 14 +- .../domain/organization_links.pyi | 16 +- .../influxdb_client/domain/organizations.pyi | 2 +- .../influxdb_client/domain/package.pyi | 8 +- .../influxdb_client/domain/package_clause.pyi | 2 +- .../pager_duty_notification_endpoint.pyi | 26 +- .../domain/pager_duty_notification_rule.pyi | 50 +- .../pager_duty_notification_rule_base.pyi | 50 +- .../domain/paren_expression.pyi | 2 +- .../domain/password_reset_body.pyi | 2 +- .../domain/patch_bucket_request.pyi | 2 +- .../domain/patch_dashboard_request.pyi | 2 +- .../domain/patch_organization_request.pyi | 2 +- .../domain/patch_retention_rule.pyi | 5 +- .../domain/patch_stack_request.pyi | 8 +- ...tch_stack_request_additional_resources.pyi | 2 +- .../influxdb_client/domain/permission.pyi | 2 +- .../domain/permission_resource.pyi | 10 +- .../domain/pipe_expression.pyi | 2 +- .../influxdb_client/domain/pipe_literal.pyi | 2 +- .../domain/post_bucket_request.pyi | 12 +- .../influxdb_client/domain/post_check.pyi | 2 +- .../domain/post_notification_endpoint.pyi | 2 +- .../domain/post_notification_rule.pyi | 2 +- .../domain/post_organization_request.pyi | 2 +- .../domain/post_restore_kv_response.pyi | 2 +- .../domain/post_stack_request.pyi | 8 +- .../influxdb_client/domain/query.pyi | 12 +- .../domain/query_variable_properties.pyi | 2 +- .../query_variable_properties_values.pyi | 2 +- .../domain/range_threshold.pyi | 12 +- .../influxdb_client/domain/ready.pyi | 2 +- .../influxdb_client/domain/regexp_literal.pyi | 2 +- .../domain/remote_connection.pyi | 14 +- .../remote_connection_creation_request.pyi | 14 +- .../remote_connection_update_request.pyi | 12 +- .../domain/remote_connections.pyi | 2 +- .../domain/renamable_field.pyi | 2 +- .../influxdb_client/domain/replication.pyi | 24 +- .../domain/replication_creation_request.pyi | 16 +- .../domain/replication_update_request.pyi | 12 +- .../influxdb_client/domain/replications.pyi | 2 +- .../domain/resource_member.pyi | 12 +- .../domain/resource_members.pyi | 2 +- .../domain/resource_members_links.pyi | 2 +- .../influxdb_client/domain/resource_owner.pyi | 12 +- .../domain/resource_owners.pyi | 2 +- .../domain/restored_bucket_mappings.pyi | 2 +- .../domain/retention_policy_manifest.pyi | 12 +- .../domain/return_statement.pyi | 2 +- .../influxdb_client/domain/routes.pyi | 36 +- .../domain/routes_external.pyi | 2 +- .../influxdb_client/domain/routes_query.pyi | 8 +- .../influxdb_client/domain/routes_system.pyi | 2 +- .../influxdb_client/domain/run.pyi | 18 +- .../influxdb_client/domain/run_links.pyi | 4 +- .../influxdb_client/domain/run_manually.pyi | 2 +- .../influxdb_client/domain/runs.pyi | 2 +- .../domain/scatter_view_properties.pyi | 62 +- .../domain/scraper_target_request.pyi | 12 +- .../domain/scraper_target_response.pyi | 20 +- .../domain/scraper_target_responses.pyi | 2 +- .../influxdb_client/domain/script.pyi | 18 +- .../domain/script_create_request.pyi | 8 +- .../domain/script_invocation_params.pyi | 2 +- .../domain/script_update_request.pyi | 2 +- .../influxdb_client/domain/scripts.pyi | 2 +- .../influxdb_client/domain/secret_keys.pyi | 2 +- .../domain/secret_keys_response.pyi | 2 +- .../domain/shard_group_manifest.pyi | 12 +- .../influxdb_client/domain/shard_manifest.pyi | 2 +- .../influxdb_client/domain/shard_owner.pyi | 2 +- .../domain/simple_table_view_properties.pyi | 12 +- .../domain/single_stat_view_properties.pyi | 24 +- .../domain/slack_notification_endpoint.pyi | 26 +- .../domain/slack_notification_rule.pyi | 52 +- .../domain/slack_notification_rule_base.pyi | 52 +- .../domain/smtp_notification_rule.pyi | 54 +- .../domain/smtp_notification_rule_base.pyi | 54 +- .../influxdb_client/domain/source.pyi | 32 +- .../influxdb_client/domain/source_links.pyi | 8 +- .../influxdb_client/domain/sources.pyi | 2 +- .../influxdb_client/domain/stack.pyi | 8 +- .../domain/stack_associations.pyi | 2 +- .../influxdb_client/domain/stack_events.pyi | 14 +- .../influxdb_client/domain/stack_links.pyi | 2 +- .../domain/stack_resources.pyi | 12 +- .../influxdb_client/domain/static_legend.pyi | 14 +- .../influxdb_client/domain/status_rule.pyi | 8 +- .../influxdb_client/domain/string_literal.pyi | 2 +- .../domain/subscription_manifest.pyi | 2 +- .../domain/table_view_properties.pyi | 20 +- .../table_view_properties_table_options.pyi | 8 +- .../influxdb_client/domain/tag_rule.pyi | 2 +- .../influxdb_client/domain/task.pyi | 40 +- .../domain/task_create_request.pyi | 10 +- .../influxdb_client/domain/task_links.pyi | 12 +- .../domain/task_update_request.pyi | 14 +- .../influxdb_client/domain/tasks.pyi | 2 +- .../influxdb_client/domain/telegraf.pyi | 16 +- .../domain/telegraf_plugin.pyi | 8 +- .../domain/telegraf_plugin_request.pyi | 12 +- .../telegraf_plugin_request_plugins.pyi | 10 +- .../domain/telegraf_plugins.pyi | 2 +- .../domain/telegraf_request.pyi | 10 +- .../domain/telegraf_request_metadata.pyi | 2 +- .../influxdb_client/domain/telegrafs.pyi | 2 +- .../domain/telegram_notification_endpoint.pyi | 26 +- .../domain/telegram_notification_rule.pyi | 54 +- .../telegram_notification_rule_base.pyi | 54 +- .../influxdb_client/domain/template_apply.pyi | 18 +- .../domain/template_apply_remotes.pyi | 2 +- .../domain/template_apply_template.pyi | 2 +- .../influxdb_client/domain/template_chart.pyi | 10 +- .../domain/template_export_by_id.pyi | 2 +- .../domain/template_export_by_id_org_ids.pyi | 2 +- ...template_export_by_id_resource_filters.pyi | 2 +- .../template_export_by_id_resources.pyi | 2 +- .../domain/template_export_by_name.pyi | 2 +- .../template_export_by_name_resources.pyi | 2 +- .../domain/template_summary.pyi | 10 +- .../domain/template_summary_diff.pyi | 20 +- .../domain/template_summary_diff_buckets.pyi | 12 +- .../template_summary_diff_buckets_new_old.pyi | 2 +- .../domain/template_summary_diff_checks.pyi | 12 +- .../template_summary_diff_dashboards.pyi | 12 +- ...mplate_summary_diff_dashboards_new_old.pyi | 2 +- .../template_summary_diff_label_mappings.pyi | 16 +- .../domain/template_summary_diff_labels.pyi | 12 +- .../template_summary_diff_labels_new_old.pyi | 2 +- ...te_summary_diff_notification_endpoints.pyi | 12 +- ...mplate_summary_diff_notification_rules.pyi | 12 +- ...ummary_diff_notification_rules_new_old.pyi | 22 +- .../domain/template_summary_diff_tasks.pyi | 12 +- .../template_summary_diff_tasks_new_old.pyi | 14 +- ...template_summary_diff_telegraf_configs.pyi | 12 +- .../template_summary_diff_variables.pyi | 12 +- ...emplate_summary_diff_variables_new_old.pyi | 2 +- .../domain/template_summary_errors.pyi | 8 +- .../domain/template_summary_label.pyi | 14 +- .../template_summary_label_properties.pyi | 2 +- .../domain/template_summary_summary.pyi | 24 +- .../template_summary_summary_buckets.pyi | 18 +- .../template_summary_summary_dashboards.pyi | 18 +- ...emplate_summary_summary_label_mappings.pyi | 16 +- ...ate_summary_summary_notification_rules.pyi | 30 +- .../template_summary_summary_status_rules.pyi | 2 +- .../template_summary_summary_tag_rules.pyi | 2 +- .../domain/template_summary_summary_tasks.pyi | 22 +- .../template_summary_summary_variables.pyi | 18 +- .../influxdb_client/domain/test_statement.pyi | 2 +- .../influxdb_client/domain/threshold.pyi | 2 +- .../influxdb_client/domain/threshold_base.pyi | 2 +- .../domain/threshold_check.pyi | 42 +- .../domain/unary_expression.pyi | 2 +- .../domain/unsigned_integer_literal.pyi | 2 +- .../influxdb_client/domain/user.pyi | 6 +- .../influxdb_client/domain/user_response.pyi | 10 +- .../domain/user_response_links.pyi | 2 +- .../influxdb_client/domain/users.pyi | 2 +- .../influxdb_client/domain/variable.pyi | 20 +- .../domain/variable_assignment.pyi | 2 +- .../influxdb_client/domain/variable_links.pyi | 4 +- .../influxdb_client/domain/variables.pyi | 2 +- .../influxdb_client/domain/view.pyi | 8 +- .../influxdb_client/domain/view_links.pyi | 2 +- .../influxdb_client/domain/views.pyi | 2 +- .../domain/xy_view_properties.pyi | 56 +- .../influxdb-client/influxdb_client/rest.pyi | 2 +- .../influxdb_client/service/_base_service.pyi | 4 +- .../service/authorizations_service.pyi | 2 +- .../service/backup_service.pyi | 2 +- .../service/bucket_schemas_service.pyi | 2 +- .../service/buckets_service.pyi | 2 +- .../influxdb_client/service/cells_service.pyi | 2 +- .../service/checks_service.pyi | 2 +- .../service/config_service.pyi | 2 +- .../service/dashboards_service.pyi | 2 +- .../service/dbr_ps_service.pyi | 2 +- .../service/delete_service.pyi | 2 +- .../service/health_service.pyi | 2 +- .../service/invokable_scripts_service.pyi | 2 +- .../service/labels_service.pyi | 2 +- .../service/legacy_authorizations_service.pyi | 2 +- .../service/metrics_service.pyi | 2 +- .../notification_endpoints_service.pyi | 2 +- .../service/notification_rules_service.pyi | 2 +- .../service/organizations_service.pyi | 2 +- .../influxdb_client/service/ping_service.pyi | 2 +- .../influxdb_client/service/query_service.pyi | 2 +- .../influxdb_client/service/ready_service.pyi | 2 +- .../service/remote_connections_service.pyi | 2 +- .../service/replications_service.pyi | 2 +- .../service/resources_service.pyi | 2 +- .../service/restore_service.pyi | 2 +- .../service/routes_service.pyi | 2 +- .../influxdb_client/service/rules_service.pyi | 2 +- .../service/scraper_targets_service.pyi | 2 +- .../service/secrets_service.pyi | 2 +- .../influxdb_client/service/setup_service.pyi | 2 +- .../service/signin_service.pyi | 2 +- .../service/signout_service.pyi | 2 +- .../service/sources_service.pyi | 2 +- .../influxdb_client/service/tasks_service.pyi | 2 +- .../service/telegraf_plugins_service.pyi | 2 +- .../service/telegrafs_service.pyi | 2 +- .../service/templates_service.pyi | 2 +- .../influxdb_client/service/users_service.pyi | 2 +- .../service/variables_service.pyi | 2 +- .../influxdb_client/service/views_service.pyi | 2 +- .../influxdb_client/service/write_service.pyi | 2 +- .../stubs/invoke/invoke/collection.pyi | 10 +- .../stubs/invoke/invoke/config.pyi | 32 +- .../stubs/invoke/invoke/context.pyi | 4 +- .../stubs/invoke/invoke/exceptions.pyi | 6 +- .../stubs/invoke/invoke/executor.pyi | 2 +- .../stubs/invoke/invoke/loader.pyi | 6 +- .../stubs/invoke/invoke/parser/argument.pyi | 18 +- .../stubs/invoke/invoke/parser/context.pyi | 2 +- .../stubs/invoke/invoke/parser/parser.pyi | 4 +- .../stubs/invoke/invoke/program.pyi | 24 +- .../stubs/invoke/invoke/runners.pyi | 30 +- .../stubs/invoke/invoke/tasks.pyi | 34 +- .../stubs/invoke/invoke/util.pyi | 2 +- .../stubs/jmespath/jmespath/__init__.pyi | 2 +- .../stubs/jmespath/jmespath/exceptions.pyi | 6 +- .../stubs/jmespath/jmespath/parser.pyi | 4 +- .../stubs/jmespath/jmespath/visitor.pyi | 4 +- .../stubs/jsonschema/jsonschema/_format.pyi | 6 +- .../stubs/jsonschema/jsonschema/_types.pyi | 2 +- .../jsonschema/jsonschema/exceptions.pyi | 14 +- .../stubs/jsonschema/jsonschema/protocols.pyi | 2 +- .../jsonschema/jsonschema/validators.pyi | 22 +- .../stubs/keyboard/keyboard/__init__.pyi | 52 +- .../keyboard/keyboard/_keyboard_event.pyi | 12 +- .../stubs/keyboard/keyboard/mouse.pyi | 38 +- .../stubs/ldap3/ldap3/abstract/attrDef.pyi | 18 +- .../stubs/ldap3/ldap3/abstract/cursor.pyi | 52 +- .../stubs/ldap3/ldap3/abstract/entry.pyi | 34 +- .../stubs/ldap3/ldap3/abstract/objectDef.pyi | 12 +- .../stubs/ldap3/ldap3/core/connection.pyi | 151 +- .../stubs/ldap3/ldap3/core/exceptions.pyi | 24 +- .../stubs/ldap3/ldap3/core/pooling.pyi | 10 +- .../stubs/ldap3/ldap3/core/rdns.pyi | 2 +- .../stubs/ldap3/ldap3/core/server.pyi | 36 +- .../stubs/ldap3/ldap3/core/tls.pyi | 24 +- .../stubs/ldap3/ldap3/core/usage.pyi | 2 +- .../stubs/ldap3/ldap3/extend/__init__.pyi | 141 +- .../extend/microsoft/addMembersToGroups.pyi | 2 +- .../ldap3/extend/microsoft/modifyPassword.pyi | 2 +- .../extend/microsoft/persistentSearch.pyi | 6 +- .../microsoft/removeMembersFromGroups.pyi | 2 +- .../ldap3/extend/microsoft/unlockAccount.pyi | 2 +- .../ldap3/extend/novell/endTransaction.pyi | 2 +- .../ldap3/extend/novell/listReplicas.pyi | 2 +- .../novell/nmasGetUniversalPassword.pyi | 2 +- .../novell/nmasSetUniversalPassword.pyi | 2 +- .../extend/novell/partition_entry_count.pyi | 2 +- .../ldap3/ldap3/extend/novell/replicaInfo.pyi | 2 +- .../ldap3/extend/novell/startTransaction.pyi | 2 +- .../stubs/ldap3/ldap3/extend/operation.pyi | 4 +- .../ldap3/extend/standard/PagedSearch.pyi | 40 +- .../extend/standard/PersistentSearch.pyi | 6 +- .../ldap3/extend/standard/modifyPassword.pyi | 12 +- .../stubs/ldap3/ldap3/operation/add.pyi | 2 +- .../stubs/ldap3/ldap3/operation/bind.pyi | 18 +- .../stubs/ldap3/ldap3/operation/compare.pyi | 6 +- .../stubs/ldap3/ldap3/operation/extended.pyi | 2 +- .../stubs/ldap3/ldap3/operation/modify.pyi | 2 +- .../stubs/ldap3/ldap3/operation/modifyDn.pyi | 2 +- .../stubs/ldap3/ldap3/operation/search.pyi | 16 +- .../stubs/ldap3/ldap3/protocol/controls.pyi | 2 +- .../stubs/ldap3/ldap3/protocol/convert.pyi | 4 +- .../stubs/ldap3/ldap3/protocol/microsoft.pyi | 8 +- .../ldap3/ldap3/protocol/persistentSearch.pyi | 2 +- .../stubs/ldap3/ldap3/protocol/rfc2696.pyi | 2 +- .../stubs/ldap3/ldap3/protocol/rfc2849.pyi | 12 +- .../stubs/ldap3/ldap3/protocol/rfc4512.pyi | 180 +- .../stubs/ldap3/ldap3/protocol/rfc4527.pyi | 4 +- .../stubs/ldap3/ldap3/protocol/sasl/sasl.pyi | 2 +- .../ldap3/ldap3/strategy/asynchronous.pyi | 2 +- .../stubs/ldap3/ldap3/strategy/base.pyi | 10 +- .../ldap3/ldap3/strategy/ldifProducer.pyi | 2 +- .../stubs/ldap3/ldap3/strategy/mockAsync.pyi | 2 +- .../stubs/ldap3/ldap3/strategy/mockBase.pyi | 6 +- .../ldap3/ldap3/strategy/restartable.pyi | 4 +- .../stubs/ldap3/ldap3/strategy/reusable.pyi | 6 +- .../stubs/ldap3/ldap3/strategy/sync.pyi | 2 +- .../stubs/ldap3/ldap3/utils/asn1.pyi | 16 +- .../stubs/ldap3/ldap3/utils/ciDict.pyi | 6 +- .../stubs/ldap3/ldap3/utils/conv.pyi | 10 +- .../stubs/ldap3/ldap3/utils/dn.pyi | 8 +- .../stubs/ldap3/ldap3/utils/hashed.pyi | 2 +- .../stubs/ldap3/ldap3/utils/log.pyi | 2 +- .../stubs/ldap3/ldap3/utils/ntlm.pyi | 2 +- .../stubs/mock/mock/mock.pyi | 130 +- .../stubs/mysqlclient/MySQLdb/connections.pyi | 2 +- .../stubs/mysqlclient/MySQLdb/cursors.pyi | 10 +- .../netaddr/contrib/subnet_splitter.pyi | 2 +- .../stubs/netaddr/netaddr/core.pyi | 2 +- .../stubs/netaddr/netaddr/eui/__init__.pyi | 12 +- .../stubs/netaddr/netaddr/ip/__init__.pyi | 26 +- .../stubs/netaddr/netaddr/ip/iana.pyi | 4 +- .../stubs/netaddr/netaddr/ip/sets.pyi | 8 +- .../netaddr/netaddr/strategy/__init__.pyi | 6 +- .../stubs/netaddr/netaddr/strategy/eui48.pyi | 16 +- .../stubs/netaddr/netaddr/strategy/eui64.pyi | 16 +- .../stubs/netaddr/netaddr/strategy/ipv4.pyi | 6 +- .../stubs/netaddr/netaddr/strategy/ipv6.pyi | 10 +- .../stubs/oauthlib/oauthlib/common.pyi | 19 +- .../oauthlib/oauth1/rfc5849/__init__.pyi | 34 +- .../oauth1/rfc5849/endpoints/access_token.pyi | 8 +- .../rfc5849/endpoints/authorization.pyi | 12 +- .../oauth1/rfc5849/endpoints/base.pyi | 2 +- .../rfc5849/endpoints/request_token.pyi | 8 +- .../oauth1/rfc5849/endpoints/resource.pyi | 8 +- .../rfc5849/endpoints/signature_only.pyi | 4 +- .../oauthlib/oauth1/rfc5849/errors.pyi | 8 +- .../oauthlib/oauth1/rfc5849/signature.pyi | 20 +- .../rfc6749/clients/backend_application.pyi | 4 +- .../oauthlib/oauth2/rfc6749/clients/base.pyi | 64 +- .../rfc6749/clients/legacy_application.pyi | 2 +- .../rfc6749/clients/mobile_application.pyi | 9 +- .../rfc6749/clients/service_application.pyi | 28 +- .../rfc6749/clients/web_application.pyi | 24 +- .../rfc6749/endpoints/authorization.pyi | 12 +- .../oauth2/rfc6749/endpoints/introspect.pyi | 4 +- .../oauth2/rfc6749/endpoints/metadata.pyi | 6 +- .../rfc6749/endpoints/pre_configured.pyi | 30 +- .../oauth2/rfc6749/endpoints/resource.pyi | 8 +- .../oauth2/rfc6749/endpoints/revocation.pyi | 6 +- .../oauth2/rfc6749/endpoints/token.pyi | 12 +- .../oauthlib/oauth2/rfc6749/errors.pyi | 12 +- .../oauth2/rfc6749/grant_types/base.pyi | 2 +- .../rfc6749/grant_types/refresh_token.pyi | 2 +- .../oauthlib/oauth2/rfc6749/parameters.pyi | 20 +- .../oauthlib/oauth2/rfc6749/tokens.pyi | 34 +- .../connect/core/endpoints/pre_configured.pyi | 6 +- .../connect/core/endpoints/userinfo.pyi | 2 +- .../openid/connect/core/exceptions.pyi | 2 +- .../core/grant_types/authorization_code.pyi | 2 +- .../openid/connect/core/grant_types/base.pyi | 2 +- .../connect/core/grant_types/dispatchers.pyi | 6 +- .../connect/core/grant_types/hybrid.pyi | 2 +- .../connect/core/grant_types/implicit.pyi | 2 +- .../oauthlib/openid/connect/core/tokens.pyi | 10 +- .../stubs/oauthlib/oauthlib/signals.pyi | 4 +- .../stubs/openpyxl/openpyxl/cell/_writer.pyi | 4 +- .../stubs/openpyxl/openpyxl/cell/cell.pyi | 36 +- .../openpyxl/openpyxl/cell/read_only.pyi | 2 +- .../openpyxl/openpyxl/cell/rich_text.pyi | 24 + .../stubs/openpyxl/openpyxl/cell/text.pyi | 38 +- .../stubs/openpyxl/openpyxl/chart/_3d.pyi | 30 +- .../stubs/openpyxl/openpyxl/chart/_chart.pyi | 6 +- .../openpyxl/openpyxl/chart/area_chart.pyi | 14 +- .../stubs/openpyxl/openpyxl/chart/axis.pyi | 106 +- .../openpyxl/openpyxl/chart/bar_chart.pyi | 28 +- .../openpyxl/openpyxl/chart/bubble_chart.pyi | 16 +- .../openpyxl/openpyxl/chart/chartspace.pyi | 68 +- .../openpyxl/openpyxl/chart/data_source.pyi | 34 +- .../openpyxl/openpyxl/chart/error_bar.pyi | 18 +- .../stubs/openpyxl/openpyxl/chart/label.pyi | 30 +- .../stubs/openpyxl/openpyxl/chart/layout.pyi | 22 +- .../stubs/openpyxl/openpyxl/chart/legend.pyi | 16 +- .../openpyxl/openpyxl/chart/line_chart.pyi | 30 +- .../stubs/openpyxl/openpyxl/chart/marker.pyi | 24 +- .../stubs/openpyxl/openpyxl/chart/picture.pyi | 10 +- .../openpyxl/openpyxl/chart/pie_chart.pyi | 24 +- .../stubs/openpyxl/openpyxl/chart/pivot.pyi | 14 +- .../openpyxl/openpyxl/chart/plotarea.pyi | 28 +- .../openpyxl/chart/print_settings.pyi | 4 +- .../openpyxl/openpyxl/chart/radar_chart.pyi | 10 +- .../openpyxl/openpyxl/chart/reference.pyi | 12 +- .../openpyxl/openpyxl/chart/scatter_chart.pyi | 10 +- .../stubs/openpyxl/openpyxl/chart/series.pyi | 46 +- .../openpyxl/chart/series_factory.pyi | 8 +- .../stubs/openpyxl/openpyxl/chart/shapes.pyi | 24 +- .../openpyxl/openpyxl/chart/stock_chart.pyi | 12 +- .../openpyxl/openpyxl/chart/surface_chart.pyi | 6 +- .../stubs/openpyxl/openpyxl/chart/text.pyi | 6 +- .../stubs/openpyxl/openpyxl/chart/title.pyi | 12 +- .../openpyxl/openpyxl/chart/trendline.pyi | 36 +- .../openpyxl/openpyxl/chart/updown_bars.pyi | 8 +- .../openpyxl/chartsheet/chartsheet.pyi | 30 +- .../openpyxl/openpyxl/chartsheet/custom.pyi | 16 +- .../openpyxl/chartsheet/properties.pyi | 2 +- .../openpyxl/chartsheet/protection.pyi | 14 +- .../openpyxl/openpyxl/chartsheet/publish.pyi | 18 +- .../openpyxl/openpyxl/chartsheet/relation.pyi | 38 +- .../openpyxl/openpyxl/chartsheet/views.pyi | 12 +- .../openpyxl/openpyxl/comments/author.pyi | 2 +- .../openpyxl/comments/comment_sheet.pyi | 54 +- .../openpyxl/openpyxl/comments/comments.pyi | 2 +- .../openpyxl/openpyxl/descriptors/base.pyi | 12 +- .../openpyxl/openpyxl/descriptors/excel.pyi | 4 +- .../openpyxl/descriptors/namespace.pyi | 2 +- .../openpyxl/openpyxl/descriptors/nested.pyi | 12 +- .../openpyxl/descriptors/sequence.pyi | 8 +- .../openpyxl/descriptors/serialisable.pyi | 2 +- .../openpyxl/openpyxl/drawing/colors.pyi | 160 +- .../openpyxl/openpyxl/drawing/connector.pyi | 42 +- .../openpyxl/openpyxl/drawing/effect.pyi | 94 +- .../stubs/openpyxl/openpyxl/drawing/fill.pyi | 132 +- .../openpyxl/openpyxl/drawing/geometry.pyi | 134 +- .../openpyxl/openpyxl/drawing/graphic.pyi | 34 +- .../stubs/openpyxl/openpyxl/drawing/line.pyi | 38 +- .../openpyxl/openpyxl/drawing/picture.pyi | 40 +- .../openpyxl/openpyxl/drawing/properties.pyi | 54 +- .../openpyxl/drawing/spreadsheet_drawing.pyi | 26 +- .../stubs/openpyxl/openpyxl/drawing/text.pyi | 282 +-- .../openpyxl/formatting/formatting.pyi | 2 +- .../openpyxl/openpyxl/formatting/rule.pyi | 128 +- .../openpyxl/openpyxl/formula/tokenizer.pyi | 6 +- .../openpyxl/openpyxl/formula/translate.pyi | 2 +- .../openpyxl/openpyxl/packaging/core.pyi | 38 +- .../openpyxl/openpyxl/packaging/custom.pyi | 49 + .../openpyxl/openpyxl/packaging/extended.pyi | 54 +- .../openpyxl/openpyxl/packaging/manifest.pyi | 2 +- .../openpyxl/packaging/relationship.pyi | 14 +- .../openpyxl/openpyxl/packaging/workbook.pyi | 58 +- .../stubs/openpyxl/openpyxl/pivot/cache.pyi | 374 ++-- .../stubs/openpyxl/openpyxl/pivot/fields.pyi | 140 +- .../stubs/openpyxl/openpyxl/pivot/record.pyi | 18 +- .../stubs/openpyxl/openpyxl/pivot/table.pyi | 528 ++--- .../openpyxl/openpyxl/reader/workbook.pyi | 2 +- .../openpyxl/openpyxl/styles/alignment.pyi | 26 +- .../openpyxl/openpyxl/styles/borders.pyi | 28 +- .../openpyxl/openpyxl/styles/cell_style.pyi | 36 +- .../stubs/openpyxl/openpyxl/styles/colors.pyi | 18 +- .../openpyxl/openpyxl/styles/differential.pyi | 16 +- .../stubs/openpyxl/openpyxl/styles/fills.pyi | 14 +- .../stubs/openpyxl/openpyxl/styles/fonts.pyi | 40 +- .../openpyxl/openpyxl/styles/named_styles.pyi | 36 +- .../openpyxl/openpyxl/styles/numbers.pyi | 4 +- .../openpyxl/openpyxl/styles/protection.pyi | 2 +- .../openpyxl/openpyxl/styles/styleable.pyi | 2 +- .../openpyxl/openpyxl/styles/stylesheet.pyi | 24 +- .../stubs/openpyxl/openpyxl/styles/table.pyi | 20 +- .../openpyxl/utils/bound_dictionary.pyi | 12 +- .../openpyxl/openpyxl/utils/dataframe.pyi | 4 +- .../openpyxl/openpyxl/utils/datetime.pyi | 2 +- .../openpyxl/openpyxl/utils/indexed_list.pyi | 2 +- .../openpyxl/openpyxl/utils/protection.pyi | 2 +- .../stubs/openpyxl/openpyxl/utils/units.pyi | 4 +- .../openpyxl/openpyxl/workbook/child.pyi | 2 +- .../openpyxl/workbook/defined_name.pyi | 34 +- .../workbook/external_link/external.pyi | 28 +- .../openpyxl/workbook/function_group.pyi | 4 +- .../openpyxl/openpyxl/workbook/properties.pyi | 74 +- .../openpyxl/openpyxl/workbook/protection.pyi | 48 +- .../openpyxl/openpyxl/workbook/smart_tags.pyi | 6 +- .../openpyxl/openpyxl/workbook/views.pyi | 78 +- .../stubs/openpyxl/openpyxl/workbook/web.pyi | 32 +- .../openpyxl/openpyxl/workbook/workbook.pyi | 14 +- .../openpyxl/worksheet/_read_only.pyi | 2 +- .../openpyxl/openpyxl/worksheet/_writer.pyi | 4 +- .../openpyxl/worksheet/cell_range.pyi | 18 +- .../openpyxl/worksheet/cell_watch.pyi | 4 +- .../openpyxl/openpyxl/worksheet/controls.pyi | 36 +- .../openpyxl/openpyxl/worksheet/custom.pyi | 4 +- .../openpyxl/worksheet/datavalidation.pyi | 46 +- .../openpyxl/worksheet/dimensions.pyi | 176 +- .../openpyxl/openpyxl/worksheet/drawing.pyi | 2 +- .../openpyxl/openpyxl/worksheet/errors.pyi | 26 +- .../openpyxl/openpyxl/worksheet/filters.pyi | 102 +- .../openpyxl/worksheet/header_footer.pyi | 30 +- .../openpyxl/openpyxl/worksheet/hyperlink.pyi | 14 +- .../openpyxl/openpyxl/worksheet/merge.pyi | 4 +- .../stubs/openpyxl/openpyxl/worksheet/ole.pyi | 50 +- .../openpyxl/openpyxl/worksheet/page.pyi | 52 +- .../openpyxl/openpyxl/worksheet/pagebreak.pyi | 6 +- .../openpyxl/worksheet/print_settings.pyi | 47 + .../openpyxl/worksheet/properties.pyi | 34 +- .../openpyxl/worksheet/protection.pyi | 46 +- .../openpyxl/openpyxl/worksheet/related.pyi | 4 +- .../openpyxl/openpyxl/worksheet/scenario.pyi | 26 +- .../openpyxl/openpyxl/worksheet/smart_tag.pyi | 10 +- .../openpyxl/openpyxl/worksheet/table.pyi | 112 +- .../openpyxl/openpyxl/worksheet/views.pyi | 58 +- .../openpyxl/openpyxl/worksheet/worksheet.pyi | 111 +- .../stubs/openpyxl/openpyxl/xml/functions.pyi | 1 + .../opentracing/mocktracer/context.pyi | 4 +- .../opentracing/mocktracer/span.pyi | 14 +- .../opentracing/mocktracer/tracer.pyi | 14 +- .../stubs/opentracing/opentracing/span.pyi | 6 +- .../stubs/opentracing/opentracing/tracer.pyi | 32 +- .../stubs/paho-mqtt/paho/mqtt/client.pyi | 112 +- .../stubs/paho-mqtt/paho/mqtt/publish.pyi | 46 +- .../stubs/paho-mqtt/paho/mqtt/reasoncodes.pyi | 2 +- .../stubs/paho-mqtt/paho/mqtt/subscribe.pyi | 54 +- .../paho-mqtt/paho/mqtt/subscribeoptions.pyi | 2 +- .../stubs/paramiko/paramiko/_winapi.pyi | 12 +- .../stubs/paramiko/paramiko/agent.pyi | 2 +- .../stubs/paramiko/paramiko/auth_handler.pyi | 2 +- .../stubs/paramiko/paramiko/ber.pyi | 2 +- .../stubs/paramiko/paramiko/buffered_pipe.pyi | 2 +- .../stubs/paramiko/paramiko/channel.pyi | 16 +- .../stubs/paramiko/paramiko/client.pyi | 62 +- .../stubs/paramiko/paramiko/config.pyi | 2 +- .../stubs/paramiko/paramiko/dsskey.pyi | 20 +- .../stubs/paramiko/paramiko/ecdsakey.pyi | 22 +- .../stubs/paramiko/paramiko/ed25519key.pyi | 12 +- .../stubs/paramiko/paramiko/file.pyi | 8 +- .../stubs/paramiko/paramiko/hostkeys.pyi | 8 +- .../stubs/paramiko/paramiko/kex_gex.pyi | 6 +- .../stubs/paramiko/paramiko/message.pyi | 2 +- .../stubs/paramiko/paramiko/packet.pyi | 14 +- .../stubs/paramiko/paramiko/pkey.pyi | 14 +- .../stubs/paramiko/paramiko/rsakey.pyi | 20 +- .../stubs/paramiko/paramiko/server.pyi | 8 +- .../stubs/paramiko/paramiko/sftp_attr.pyi | 2 +- .../stubs/paramiko/paramiko/sftp_client.pyi | 22 +- .../stubs/paramiko/paramiko/sftp_file.pyi | 10 +- .../stubs/paramiko/paramiko/sftp_handle.pyi | 2 +- .../stubs/paramiko/paramiko/ssh_gss.pyi | 26 +- .../stubs/paramiko/paramiko/transport.pyi | 70 +- .../stubs/paramiko/paramiko/util.pyi | 8 +- .../parsimonious/parsimonious/exceptions.pyi | 2 +- .../parsimonious/parsimonious/expressions.pyi | 34 +- .../parsimonious/parsimonious/grammar.pyi | 8 +- .../stubs/parsimonious/parsimonious/nodes.pyi | 12 +- .../stubs/passlib/passlib/apache.pyi | 32 +- .../stubs/passlib/passlib/context.pyi | 74 +- .../passlib/crypto/_blowfish/_gen_files.pyi | 6 +- .../passlib/passlib/crypto/_blowfish/base.pyi | 2 +- .../stubs/passlib/passlib/crypto/_md4.pyi | 2 +- .../stubs/passlib/passlib/crypto/des.pyi | 4 +- .../stubs/passlib/passlib/crypto/digest.pyi | 12 +- .../passlib/crypto/scrypt/__init__.pyi | 2 +- .../stubs/passlib/passlib/exc.pyi | 24 +- .../passlib/passlib/ext/django/utils.pyi | 16 +- .../stubs/passlib/passlib/handlers/argon2.pyi | 26 +- .../stubs/passlib/passlib/handlers/bcrypt.pyi | 4 +- .../stubs/passlib/passlib/handlers/cisco.pyi | 6 +- .../passlib/passlib/handlers/digests.pyi | 8 +- .../stubs/passlib/passlib/handlers/fshp.pyi | 4 +- .../stubs/passlib/passlib/handlers/misc.pyi | 16 +- .../stubs/passlib/passlib/handlers/scram.pyi | 8 +- .../stubs/passlib/passlib/handlers/scrypt.pyi | 8 +- .../passlib/passlib/handlers/sha1_crypt.pyi | 2 +- .../passlib/passlib/handlers/sha2_crypt.pyi | 2 +- .../passlib/handlers/sun_md5_crypt.pyi | 4 +- .../passlib/passlib/handlers/windows.pyi | 4 +- .../stubs/passlib/passlib/ifc.pyi | 6 +- .../stubs/passlib/passlib/pwd.pyi | 12 +- .../stubs/passlib/passlib/registry.pyi | 4 +- .../stubs/passlib/passlib/totp.pyi | 54 +- .../stubs/passlib/passlib/utils/__init__.pyi | 10 +- .../stubs/passlib/passlib/utils/binary.pyi | 4 +- .../stubs/passlib/passlib/utils/decor.pyi | 26 +- .../stubs/passlib/passlib/utils/des.pyi | 2 +- .../stubs/passlib/passlib/utils/handlers.pyi | 74 +- .../stubs/passlib/passlib/utils/pbkdf2.pyi | 4 +- .../stubs/passlib/passlib/win32.pyi | 2 +- .../stubs/passpy/passpy/store.pyi | 24 +- .../stubs/passpy/passpy/util.pyi | 4 +- .../pika/pika/adapters/asyncio_connection.pyi | 18 +- .../pika/pika/adapters/base_connection.pyi | 2 +- .../pika/adapters/blocking_connection.pyi | 97 +- .../pika/pika/adapters/select_connection.pyi | 14 +- .../pika/pika/adapters/twisted_connection.pyi | 97 +- .../adapters/utils/connection_workflow.pyi | 2 +- .../pika/adapters/utils/io_services_utils.pyi | 2 +- .../pika/adapters/utils/nbio_interface.pyi | 4 +- .../utils/selector_ioloop_adapter.pyi | 4 +- .../stubs/pika/pika/callback.pyi | 8 +- .../stubs/pika/pika/channel.pyi | 121 +- .../stubs/pika/pika/connection.pyi | 20 +- .../stubs/pika/pika/credentials.pyi | 2 +- .../stubs/pika/pika/frame.pyi | 2 +- .../stubs/pika/pika/spec.pyi | 395 ++-- .../stubs/pika/pika/validators.pyi | 2 +- .../stubs/prettytable/METADATA.toml | 2 - .../prettytable/prettytable/__init__.pyi | 21 - .../prettytable/prettytable/colortable.pyi | 43 - .../prettytable/prettytable/prettytable.pyi | 241 -- .../google/protobuf/internal/containers.pyi | 4 +- .../protobuf/internal/well_known_types.pyi | 20 +- .../protobuf/google/protobuf/text_format.pyi | 40 +- .../stubs/psutil/psutil/__init__.pyi | 48 +- .../stubs/psutil/psutil/_common.pyi | 20 +- .../stubs/psutil/psutil/_psposix.pyi | 4 +- .../stubs/psutil/psutil/_pswindows.pyi | 8 +- .../stubs/psycopg2/psycopg2/__init__.pyi | 10 +- .../stubs/psycopg2/psycopg2/_ipaddress.pyi | 6 +- .../stubs/psycopg2/psycopg2/_json.pyi | 18 +- .../stubs/psycopg2/psycopg2/_range.pyi | 8 +- .../stubs/psycopg2/psycopg2/errorcodes.pyi | 2 +- .../stubs/psycopg2/psycopg2/extensions.pyi | 4 +- .../stubs/psycopg2/psycopg2/extras.pyi | 64 +- .../stubs/psycopg2/psycopg2/pool.pyi | 2 +- .../stubs/psycopg2/psycopg2/sql.pyi | 2 +- .../stubs/psycopg2/psycopg2/tz.pyi | 4 +- .../stubs/pyOpenSSL/METADATA.toml | 2 +- .../stubs/pyOpenSSL/OpenSSL/SSL.pyi | 25 +- .../stubs/pyOpenSSL/OpenSSL/crypto.pyi | 16 +- .../stubs/pyRFC3339/pyrfc3339/generator.pyi | 2 +- .../stubs/pyRFC3339/pyrfc3339/parser.pyi | 2 +- .../stubs/pyasn1/pyasn1/codec/ber/decoder.pyi | 194 +- .../stubs/pyasn1/pyasn1/codec/ber/encoder.pyi | 6 +- .../stubs/pyasn1/pyasn1/codec/cer/decoder.pyi | 10 +- .../pyasn1/pyasn1/codec/native/decoder.pyi | 10 +- .../pyasn1/pyasn1/codec/native/encoder.pyi | 2 +- .../stubs/pyasn1/pyasn1/compat/integer.pyi | 4 +- .../stubs/pyasn1/pyasn1/debug.pyi | 6 +- .../stubs/pyasn1/pyasn1/error.pyi | 2 +- .../stubs/pyasn1/pyasn1/type/base.pyi | 14 +- .../stubs/pyasn1/pyasn1/type/char.pyi | 6 +- .../stubs/pyasn1/pyasn1/type/constraint.pyi | 2 +- .../stubs/pyasn1/pyasn1/type/namedtype.pyi | 2 +- .../stubs/pyasn1/pyasn1/type/opentype.pyi | 2 +- .../stubs/pyasn1/pyasn1/type/tag.pyi | 2 +- .../stubs/pyasn1/pyasn1/type/tagmap.pyi | 6 +- .../stubs/pyasn1/pyasn1/type/univ.pyi | 62 +- .../stubs/pyasn1/pyasn1/type/useful.pyi | 2 +- .../stubs/pycocotools/pycocotools/coco.pyi | 24 +- .../pycocotools/pycocotools/cocoeval.pyi | 6 +- .../stubs/pycurl/METADATA.toml | 2 +- .../typeshed-fallback/stubs/pycurl/pycurl.pyi | 2 +- .../stubs/pyflakes/pyflakes/api.pyi | 6 +- .../stubs/pyflakes/pyflakes/checker.pyi | 74 +- .../stubs/pyflakes/pyflakes/messages.pyi | 2 +- .../PyInstaller/depend/analysis.pyi | 4 +- .../PyInstaller/utils/hooks/__init__.pyi | 4 +- .../stubs/pynput/pynput/_util.pyi | 4 +- .../stubs/pynput/pynput/keyboard/__init__.pyi | 2 +- .../stubs/pynput/pynput/keyboard/_base.pyi | 8 +- .../stubs/pynput/pynput/mouse/__init__.pyi | 2 +- .../stubs/pynput/pynput/mouse/_base.pyi | 10 +- .../stubs/pyserial/serial/rfc2217.pyi | 14 +- .../stubs/pyserial/serial/rs485.pyi | 10 +- .../stubs/pyserial/serial/serialutil.pyi | 28 +- .../stubs/pyserial/serial/serialwin32.pyi | 4 +- .../pyserial/serial/tools/hexlify_codec.pyi | 12 +- .../pyserial/serial/tools/list_ports.pyi | 2 +- .../serial/tools/list_ports_common.pyi | 2 +- .../serial/tools/list_ports_linux.pyi | 2 +- .../serial/tools/list_ports_windows.pyi | 6 +- .../stubs/pyserial/serial/tools/miniterm.pyi | 10 +- .../serial/urlhandler/protocol_spy.pyi | 2 +- .../stubs/pysftp/pysftp/__init__.pyi | 79 +- .../stubs/pysftp/pysftp/exceptions.pyi | 4 +- .../stubs/pysftp/pysftp/helpers.pyi | 4 +- .../python-datemath/datemath/helpers.pyi | 2 +- .../python-dateutil/dateutil/_common.pyi | 2 +- .../stubs/python-dateutil/dateutil/easter.pyi | 2 +- .../dateutil/parser/__init__.pyi | 12 +- .../dateutil/parser/isoparser.pyi | 4 +- .../dateutil/relativedelta.pyi | 42 +- .../stubs/python-dateutil/dateutil/rrule.pyi | 101 +- .../python-dateutil/dateutil/tz/_common.pyi | 2 +- .../stubs/python-dateutil/dateutil/tz/tz.pyi | 22 +- .../stubs/python-dateutil/dateutil/utils.pyi | 2 +- .../dateutil/zoneinfo/__init__.pyi | 6 +- .../dateutil/zoneinfo/rebuild.pyi | 8 +- .../stubs/python-jose/jose/backends/base.pyi | 4 +- .../jose/backends/cryptography_backend.pyi | 8 +- .../python-jose/jose/backends/rsa_backend.pyi | 4 +- .../stubs/python-jose/jose/jwe.pyi | 10 +- .../stubs/python-jose/jose/jwk.pyi | 2 +- .../stubs/python-jose/jose/jws.pyi | 6 +- .../stubs/python-jose/jose/jwt.pyi | 18 +- .../stubs/python-jose/jose/utils.pyi | 4 +- .../stubs/python-nmap/nmap/nmap.pyi | 37 +- .../stubs/python-slugify/slugify/slugify.pyi | 26 +- .../stubs/python-xlib/Xlib/X.pyi | 692 +++--- .../stubs/python-xlib/Xlib/Xatom.pyi | 140 +- .../stubs/python-xlib/Xlib/Xcursorfont.pyi | 158 +- .../stubs/python-xlib/Xlib/Xutil.pyi | 116 +- .../stubs/python-xlib/Xlib/display.pyi | 70 +- .../stubs/python-xlib/Xlib/error.pyi | 4 +- .../stubs/python-xlib/Xlib/ext/composite.pyi | 20 +- .../stubs/python-xlib/Xlib/ext/damage.pyi | 24 +- .../stubs/python-xlib/Xlib/ext/dpms.pyi | 14 +- .../stubs/python-xlib/Xlib/ext/ge.pyi | 6 +- .../stubs/python-xlib/Xlib/ext/nvcontrol.pyi | 1968 +++++++++-------- .../stubs/python-xlib/Xlib/ext/randr.pyi | 124 +- .../stubs/python-xlib/Xlib/ext/record.pyi | 33 +- .../stubs/python-xlib/Xlib/ext/res.pyi | 25 +- .../python-xlib/Xlib/ext/screensaver.pyi | 30 +- .../stubs/python-xlib/Xlib/ext/security.pyi | 20 +- .../stubs/python-xlib/Xlib/ext/shape.pyi | 3 +- .../stubs/python-xlib/Xlib/ext/xfixes.pyi | 24 +- .../stubs/python-xlib/Xlib/ext/xinerama.pyi | 4 +- .../stubs/python-xlib/Xlib/ext/xinput.pyi | 208 +- .../stubs/python-xlib/Xlib/ext/xtest.pyi | 14 +- .../stubs/python-xlib/Xlib/keysymdef/apl.pyi | 40 +- .../python-xlib/Xlib/keysymdef/arabic.pyi | 102 +- .../python-xlib/Xlib/keysymdef/cyrillic.pyi | 216 +- .../python-xlib/Xlib/keysymdef/greek.pyi | 150 +- .../python-xlib/Xlib/keysymdef/hebrew.pyi | 82 +- .../python-xlib/Xlib/keysymdef/katakana.pyi | 142 +- .../python-xlib/Xlib/keysymdef/korean.pyi | 216 +- .../python-xlib/Xlib/keysymdef/latin1.pyi | 392 ++-- .../python-xlib/Xlib/keysymdef/latin2.pyi | 116 +- .../python-xlib/Xlib/keysymdef/latin3.pyi | 46 +- .../python-xlib/Xlib/keysymdef/latin4.pyi | 74 +- .../python-xlib/Xlib/keysymdef/miscellany.pyi | 340 +-- .../python-xlib/Xlib/keysymdef/publishing.pyi | 168 +- .../python-xlib/Xlib/keysymdef/special.pyi | 50 +- .../python-xlib/Xlib/keysymdef/technical.pyi | 100 +- .../stubs/python-xlib/Xlib/keysymdef/thai.pyi | 170 +- .../stubs/python-xlib/Xlib/keysymdef/xf86.pyi | 370 ++-- .../python-xlib/Xlib/keysymdef/xk3270.pyi | 62 +- .../stubs/python-xlib/Xlib/keysymdef/xkb.pyi | 202 +- .../python-xlib/Xlib/protocol/display.pyi | 26 +- .../stubs/python-xlib/Xlib/protocol/event.pyi | 4 +- .../python-xlib/Xlib/protocol/request.pyi | 5 +- .../stubs/python-xlib/Xlib/protocol/rq.pyi | 47 +- .../stubs/python-xlib/Xlib/rdb.pyi | 28 +- .../python-xlib/Xlib/support/connect.pyi | 4 +- .../python-xlib/Xlib/support/unix_connect.pyi | 10 +- .../python-xlib/Xlib/support/vms_connect.pyi | 3 +- .../stubs/python-xlib/Xlib/xauth.pyi | 20 +- .../python-xlib/Xlib/xobject/colormap.pyi | 15 +- .../stubs/python-xlib/Xlib/xobject/cursor.pyi | 4 +- .../python-xlib/Xlib/xobject/drawable.pyi | 158 +- .../python-xlib/Xlib/xobject/fontable.pyi | 12 +- .../python-xlib/Xlib/xobject/resource.pyi | 4 +- .../stubs/pytz/METADATA.toml | 2 +- .../stubs/pytz/pytz/__init__.pyi | 6 +- .../stubs/pytz/pytz/lazy.pyi | 4 +- .../stubs/pytz/pytz/tzinfo.pyi | 22 +- .../stubs/pywin32/METADATA.toml | 2 +- .../stubs/pywin32/isapi/__init__.pyi | 2 +- .../stubs/pywin32/win32/lib/win32con.pyi | 2 + .../pywin32/win32/lib/win32evtlogutil.pyi | 7 +- .../stubs/pywin32/win32/win32api.pyi | 29 +- .../stubs/pywin32/win32/win32gui.pyi | 7 + .../pywin32/win32com/client/__init__.pyi | 4 +- .../stubs/pywin32/win32com/client/dynamic.pyi | 10 +- .../stubs/pywin32/win32comext/axdebug/adb.pyi | 1 + .../win32comext/axdebug/codecontainer.pyi | 2 + .../stubs/redis/METADATA.toml | 2 +- .../stubs/redis/redis/__init__.pyi | 7 +- .../stubs/redis/redis/asyncio/client.pyi | 642 +++--- .../stubs/redis/redis/asyncio/cluster.pyi | 84 +- .../stubs/redis/redis/asyncio/connection.pyi | 118 +- .../stubs/redis/redis/asyncio/lock.pyi | 14 +- .../stubs/redis/redis/asyncio/parser.pyi | 2 +- .../stubs/redis/redis/asyncio/sentinel.pyi | 2 +- .../stubs/redis/redis/backoff.pyi | 8 +- .../stubs/redis/redis/client.pyi | 480 ++-- .../stubs/redis/redis/cluster.pyi | 80 +- .../redis/redis/commands/bf/commands.pyi | 30 +- .../stubs/redis/redis/commands/cluster.pyi | 30 +- .../stubs/redis/redis/commands/core.pyi | 1132 +++++----- .../redis/redis/commands/graph/__init__.pyi | 2 +- .../redis/redis/commands/graph/commands.pyi | 11 +- .../stubs/redis/redis/commands/graph/edge.pyi | 2 +- .../stubs/redis/redis/commands/graph/node.pyi | 8 +- .../redis/commands/graph/query_result.pyi | 2 +- .../stubs/redis/redis/commands/helpers.pyi | 2 +- .../redis/redis/commands/json/__init__.pyi | 4 +- .../redis/redis/commands/json/commands.pyi | 42 +- .../redis/redis/commands/redismodules.pyi | 4 +- .../redis/redis/commands/search/__init__.pyi | 18 +- .../redis/commands/search/aggregation.pyi | 6 +- .../redis/redis/commands/search/commands.pyi | 54 +- .../redis/redis/commands/search/query.pyi | 20 +- .../redis/redis/commands/search/result.pyi | 2 +- .../redis/commands/timeseries/__init__.pyi | 4 +- .../redis/commands/timeseries/commands.pyi | 154 +- .../stubs/redis/redis/connection.pyi | 152 +- .../stubs/redis/redis/crc.pyi | 2 +- .../stubs/redis/redis/credentials.pyi | 2 +- .../stubs/redis/redis/lock.pyi | 20 +- .../stubs/redis/redis/ocsp.pyi | 4 +- .../stubs/redis/redis/sentinel.pyi | 6 +- .../stubs/redis/redis/utils.pyi | 2 +- .../stubs/regex/METADATA.toml | 2 +- .../stubs/regex/regex/_regex_core.pyi | 4 +- .../stubs/regex/regex/regex.pyi | 314 +-- .../stubs/requests/requests/adapters.pyi | 26 +- .../stubs/requests/requests/api.pyi | 10 +- .../stubs/requests/requests/cookies.pyi | 10 +- .../stubs/requests/requests/models.pyi | 34 +- .../stubs/requests/requests/sessions.pyi | 48 +- .../stubs/requests/requests/structures.pyi | 6 +- .../stubs/requests/requests/utils.pyi | 12 +- .../stubs/retry/retry/api.pyi | 24 +- .../setuptools/pkg_resources/__init__.pyi | 62 +- .../stubs/setuptools/setuptools/__init__.pyi | 4 +- .../setuptools/setuptools/archive_util.pyi | 2 +- .../setuptools/setuptools/build_meta.pyi | 22 +- .../setuptools/command/build_ext.pyi | 22 +- .../setuptools/command/easy_install.pyi | 24 +- .../setuptools/command/egg_info.pyi | 6 +- .../setuptools/command/install_lib.pyi | 2 +- .../setuptools/command/install_scripts.pyi | 2 +- .../setuptools/setuptools/command/sdist.pyi | 2 +- .../setuptools/setuptools/command/setopt.pyi | 4 +- .../setuptools/setuptools/command/test.pyi | 4 +- .../stubs/setuptools/setuptools/config.pyi | 4 +- .../stubs/setuptools/setuptools/depends.pyi | 16 +- .../stubs/setuptools/setuptools/dist.pyi | 2 +- .../setuptools/setuptools/extern/__init__.pyi | 4 +- .../stubs/setuptools/setuptools/glob.pyi | 4 +- .../stubs/setuptools/setuptools/msvc.pyi | 14 +- .../setuptools/setuptools/package_index.pyi | 34 +- .../stubs/setuptools/setuptools/sandbox.pyi | 2 +- .../stubs/simplejson/simplejson/encoder.pyi | 2 +- .../stubs/simplejson/simplejson/errors.pyi | 4 +- .../stubs/simplejson/simplejson/scanner.pyi | 16 +- .../stubs/six/six/__init__.pyi | 14 +- .../stubs/slumber/slumber/__init__.pyi | 20 +- .../stubs/slumber/slumber/serialize.pyi | 10 +- .../stubs/stdlib-list/stdlib_list/base.pyi | 4 +- .../stubs/stripe/stripe/__init__.pyi | 2 +- .../stubs/stripe/stripe/api_requestor.pyi | 21 +- .../api_resources/abstract/api_resource.pyi | 2 +- .../abstract/createable_api_resource.pyi | 8 +- .../api_resources/abstract/custom_method.pyi | 2 +- .../abstract/listable_api_resource.pyi | 6 +- .../nested_resource_class_methods.pyi | 2 +- .../abstract/updateable_api_resource.pyi | 2 +- .../api_resources/abstract/verify_mixin.pyi | 2 +- .../stripe/stripe/api_resources/account.pyi | 26 +- .../stripe/api_resources/alipay_account.pyi | 6 +- .../stripe/api_resources/application_fee.pyi | 2 +- .../api_resources/application_fee_refund.pyi | 2 +- .../stripe/api_resources/bank_account.pyi | 6 +- .../stripe/api_resources/capability.pyi | 2 +- .../stripe/stripe/api_resources/card.pyi | 6 +- .../stripe/stripe/api_resources/charge.pyi | 12 +- .../stripe/api_resources/checkout/session.pyi | 2 +- .../stripe/api_resources/credit_note.pyi | 8 +- .../stripe/stripe/api_resources/customer.pyi | 16 +- .../customer_balance_transaction.pyi | 2 +- .../stripe/stripe/api_resources/dispute.pyi | 2 +- .../stripe/api_resources/ephemeral_key.pyi | 8 +- .../stripe/api_resources/error_object.pyi | 20 +- .../stripe/stripe/api_resources/file.pyi | 8 +- .../identity/verification_session.pyi | 4 +- .../stripe/stripe/api_resources/invoice.pyi | 16 +- .../api_resources/issuing/authorization.pyi | 4 +- .../stripe/api_resources/issuing/card.pyi | 2 +- .../stripe/api_resources/issuing/dispute.pyi | 2 +- .../stripe/api_resources/list_object.pyi | 34 +- .../stripe/stripe/api_resources/order.pyi | 8 +- .../stripe/api_resources/payment_intent.pyi | 6 +- .../stripe/api_resources/payment_method.pyi | 4 +- .../stripe/stripe/api_resources/payout.pyi | 4 +- .../stripe/stripe/api_resources/person.pyi | 2 +- .../stripe/stripe/api_resources/quote.pyi | 16 +- .../stripe/stripe/api_resources/reversal.pyi | 2 +- .../stripe/stripe/api_resources/review.pyi | 2 +- .../api_resources/search_result_object.pyi | 6 +- .../stripe/api_resources/setup_intent.pyi | 4 +- .../stripe/stripe/api_resources/source.pyi | 2 +- .../api_resources/subscription_item.pyi | 8 +- .../api_resources/subscription_schedule.pyi | 4 +- .../stripe/stripe/api_resources/tax_id.pyi | 2 +- .../api_resources/test_helpers/test_clock.pyi | 2 +- .../stripe/stripe/api_resources/topup.pyi | 2 +- .../stripe/stripe/api_resources/transfer.pyi | 2 +- .../stripe/api_resources/usage_record.pyi | 8 +- .../stubs/stripe/stripe/error.pyi | 44 +- .../stubs/stripe/stripe/http_client.pyi | 34 +- .../stripe/multipart_data_generator.pyi | 2 +- .../stubs/stripe/stripe/oauth.pyi | 6 +- .../stubs/stripe/stripe/oauth_error.pyi | 8 +- .../stubs/stripe/stripe/stripe_object.pyi | 30 +- .../stubs/stripe/stripe/util.pyi | 14 +- .../stubs/stripe/stripe/webhook.pyi | 4 +- .../stubs/tabulate/tabulate/__init__.pyi | 26 +- .../stubs/termcolor/METADATA.toml | 2 - .../stubs/termcolor/termcolor.pyi | 14 - .../stubs/toml/toml/decoder.pyi | 12 +- .../stubs/toml/toml/encoder.pyi | 14 +- .../stubs/tqdm/tqdm/asyncio.pyi | 14 +- .../typeshed-fallback/stubs/tqdm/tqdm/cli.pyi | 2 +- .../stubs/tqdm/tqdm/contrib/__init__.pyi | 4 +- .../stubs/tqdm/tqdm/contrib/discord.pyi | 2 +- .../stubs/tqdm/tqdm/contrib/logging.pyi | 2 +- .../stubs/tqdm/tqdm/contrib/slack.pyi | 2 +- .../stubs/tqdm/tqdm/contrib/telegram.pyi | 2 +- .../typeshed-fallback/stubs/tqdm/tqdm/gui.pyi | 2 +- .../stubs/tqdm/tqdm/keras.pyi | 10 +- .../stubs/tqdm/tqdm/notebook.pyi | 18 +- .../stubs/tqdm/tqdm/rich.pyi | 2 +- .../typeshed-fallback/stubs/tqdm/tqdm/std.pyi | 150 +- .../typeshed-fallback/stubs/tqdm/tqdm/tk.pyi | 8 +- .../stubs/tqdm/tqdm/utils.pyi | 4 +- .../stubs/translationstring/METADATA.toml | 1 + .../translationstring/__init__.pyi | 81 + .../stubs/tree-sitter/tree_sitter/binding.pyi | 2 +- .../stubs/ttkthemes/ttkthemes/_utils.pyi | 2 +- .../stubs/ttkthemes/ttkthemes/_widget.pyi | 14 +- .../ttkthemes/ttkthemes/themed_style.pyi | 2 +- .../stubs/ttkthemes/ttkthemes/themed_tk.pyi | 6 +- .../stubs/typed-ast/typed_ast/ast27.pyi | 8 +- .../stubs/typed-ast/typed_ast/ast3.pyi | 8 +- .../stubs/urllib3/urllib3/__init__.pyi | 2 +- .../stubs/urllib3/urllib3/_collections.pyi | 4 +- .../stubs/urllib3/urllib3/connection.pyi | 6 +- .../stubs/urllib3/urllib3/connectionpool.pyi | 62 +- .../stubs/urllib3/urllib3/exceptions.pyi | 4 +- .../stubs/urllib3/urllib3/fields.pyi | 8 +- .../stubs/urllib3/urllib3/filepost.pyi | 11 +- .../stubs/urllib3/urllib3/poolmanager.pyi | 8 +- .../stubs/urllib3/urllib3/request.pyi | 10 +- .../stubs/urllib3/urllib3/response.pyi | 42 +- .../stubs/urllib3/urllib3/util/connection.pyi | 2 +- .../stubs/urllib3/urllib3/util/request.pyi | 2 +- .../stubs/urllib3/urllib3/util/retry.pyi | 44 +- .../stubs/urllib3/urllib3/util/ssl_.pyi | 18 +- .../stubs/urllib3/urllib3/util/timeout.pyi | 2 +- .../stubs/urllib3/urllib3/util/url.pyi | 14 +- .../stubs/vobject/vobject/base.pyi | 62 +- .../stubs/vobject/vobject/behavior.pyi | 4 +- .../stubs/vobject/vobject/change_tz.pyi | 2 +- .../stubs/vobject/vobject/hcalendar.pyi | 2 +- .../stubs/vobject/vobject/icalendar.pyi | 28 +- .../stubs/vobject/vobject/ics_diff.pyi | 2 +- .../stubs/vobject/vobject/vcard.pyi | 22 +- .../stubs/waitress/waitress/adjustments.pyi | 66 +- .../stubs/waitress/waitress/buffers.pyi | 48 +- .../stubs/waitress/waitress/channel.pyi | 46 +- .../stubs/waitress/waitress/parser.pyi | 36 +- .../stubs/waitress/waitress/proxy_headers.pyi | 18 +- .../stubs/waitress/waitress/receiver.pyi | 26 +- .../stubs/waitress/waitress/runner.pyi | 2 +- .../stubs/waitress/waitress/server.pyi | 68 +- .../stubs/waitress/waitress/task.pyi | 70 +- .../stubs/waitress/waitress/trigger.pyi | 14 +- .../stubs/waitress/waitress/utilities.pyi | 28 +- .../stubs/waitress/waitress/wasyncore.pyi | 58 +- .../stubs/whatthepatch/whatthepatch/apply.pyi | 2 +- .../whatthepatch/whatthepatch/exceptions.pyi | 2 +- .../stubs/xxhash/METADATA.toml | 2 - .../stubs/xxhash/xxhash/__init__.pyi | 49 - .../stubs/xxhash/xxhash/version.pyi | 4 - .../typeshed-fallback/stubs/zstd/zstd.pyi | 2 + .../stubs/zxcvbn/zxcvbn/__init__.pyi | 2 +- .../stubs/zxcvbn/zxcvbn/scoring.pyi | 4 +- 1658 files changed, 19639 insertions(+), 19720 deletions(-) delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_output.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/numpy_capture_output.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/numpy_float_capture_output.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pil_capture_output.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_capture_output.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_float_capture_output.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_float_gpu_capture_output.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_gpu_capture_output.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/d3dshot.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/display.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/d3d.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/dxgi.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/shcore.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/user32.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/prettytable/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/colortable.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/prettytable.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/termcolor/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/termcolor/termcolor.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/translationstring/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/translationstring/translationstring/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/xxhash/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/xxhash/xxhash/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/xxhash/xxhash/version.pyi diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index 3208cb04b..72dade181 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -8080e491d2fa92b1b1390c87fac23a1a38dcd919 +60939b00afede13feeec3cee6f6dfe6eb2df1593 diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_compression.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_compression.pyi index 817f25158..24e112611 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_compression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_compression.pyi @@ -17,7 +17,7 @@ class DecompressReader(RawIOBase): self, fp: _Reader, decomp_factory: Callable[..., object], - trailing_error: type[Exception] | tuple[type[Exception], ...] = ..., + trailing_error: type[Exception] | tuple[type[Exception], ...] = (), **decomp_args: Any, ) -> None: ... def readinto(self, b: WriteableBuffer) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_dummy_thread.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_dummy_thread.pyi index e371dd0e9..541096734 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_dummy_thread.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_dummy_thread.pyi @@ -7,7 +7,7 @@ __all__ = ["error", "start_new_thread", "exit", "get_ident", "allocate_lock", "i TIMEOUT_MAX: int error = RuntimeError -def start_new_thread(function: Callable[..., object], args: tuple[Any, ...], kwargs: dict[str, Any] = ...) -> None: ... +def start_new_thread(function: Callable[..., object], args: tuple[Any, ...], kwargs: dict[str, Any] = {}) -> None: ... def exit() -> NoReturn: ... def get_ident() -> int: ... def allocate_lock() -> LockType: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_dummy_threading.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_dummy_threading.pyi index 9a49dfa96..abcf3a13a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_dummy_threading.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_dummy_threading.pyi @@ -62,7 +62,7 @@ class Thread: group: None = None, target: Callable[..., object] | None = None, name: str | None = None, - args: Iterable[Any] = ..., + args: Iterable[Any] = (), kwargs: Mapping[str, Any] | None = None, *, daemon: bool | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_sitebuiltins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_sitebuiltins.pyi index 3bda2d884..94ad701d4 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_sitebuiltins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_sitebuiltins.pyi @@ -10,7 +10,7 @@ class Quitter: class _Printer: MAXLINES: ClassVar[Literal[23]] - def __init__(self, name: str, data: str, files: Iterable[str] = ..., dirs: Iterable[str] = ...) -> None: ... + def __init__(self, name: str, data: str, files: Iterable[str] = (), dirs: Iterable[str] = ()) -> None: ... def __call__(self) -> None: ... class _Helper: diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_winapi.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_winapi.pyi index e21402b80..ca1e61f0f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_winapi.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_winapi.pyi @@ -54,7 +54,10 @@ if sys.platform == "win32": HIGH_PRIORITY_CLASS: Literal[0x80] INFINITE: Literal[0xFFFFFFFF] if sys.version_info >= (3, 8): - INVALID_HANDLE_VALUE: Literal[0xFFFFFFFFFFFFFFFF] + # Ignore the flake8 error -- flake8-pyi assumes + # most numbers this long will be implementation details, + # but here we can see that it's a power of 2 + INVALID_HANDLE_VALUE: Literal[0xFFFFFFFFFFFFFFFF] # noqa: Y054 IDLE_PRIORITY_CLASS: Literal[0x40] NORMAL_PRIORITY_CLASS: Literal[0x20] REALTIME_PRIORITY_CLASS: Literal[0x100] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi index eb0b707ba..1e9560693 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi @@ -135,7 +135,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): usage: str | None = None, description: str | None = None, epilog: str | None = None, - parents: Sequence[ArgumentParser] = ..., + parents: Sequence[ArgumentParser] = [], formatter_class: _FormatterClass = ..., prefix_chars: str = "-", fromfile_prefix_chars: str | None = None, @@ -152,7 +152,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): usage: str | None = None, description: str | None = None, epilog: str | None = None, - parents: Sequence[ArgumentParser] = ..., + parents: Sequence[ArgumentParser] = [], formatter_class: _FormatterClass = ..., prefix_chars: str = "-", fromfile_prefix_chars: str | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi index 3b8f28671..992f6af5c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi @@ -417,9 +417,9 @@ class BaseEventLoop(AbstractEventLoop): async def sock_connect(self, sock: socket, address: _Address) -> None: ... async def sock_accept(self, sock: socket) -> tuple[socket, _RetAddress]: ... if sys.version_info >= (3, 11): - async def sock_recvfrom(self, sock: socket, bufsize: int) -> bytes: ... - async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = 0) -> int: ... - async def sock_sendto(self, sock: socket, data: ReadableBuffer, address: _Address) -> None: ... + async def sock_recvfrom(self, sock: socket, bufsize: int) -> tuple[bytes, _RetAddress]: ... + async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = 0) -> tuple[int, _RetAddress]: ... + async def sock_sendto(self, sock: socket, data: ReadableBuffer, address: _Address) -> int: ... # Signal handling. def add_signal_handler(self, sig: int, callback: Callable[..., Any], *args: Any) -> None: ... def remove_signal_handler(self, sig: int) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi index f97afe873..34576b091 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi @@ -569,11 +569,11 @@ class AbstractEventLoop: async def sock_accept(self, sock: socket) -> tuple[socket, _RetAddress]: ... if sys.version_info >= (3, 11): @abstractmethod - async def sock_recvfrom(self, sock: socket, bufsize: int) -> bytes: ... + async def sock_recvfrom(self, sock: socket, bufsize: int) -> tuple[bytes, _RetAddress]: ... @abstractmethod - async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = 0) -> int: ... + async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = 0) -> tuple[int, _RetAddress]: ... @abstractmethod - async def sock_sendto(self, sock: socket, data: ReadableBuffer, address: _Address) -> None: ... + async def sock_sendto(self, sock: socket, data: ReadableBuffer, address: _Address) -> int: ... # Signal handling. @abstractmethod def add_signal_handler(self, sig: int, callback: Callable[..., object], *args: Any) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/windows_utils.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/windows_utils.pyi index f3a82e2b8..9f88718b7 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/windows_utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/windows_utils.pyi @@ -15,7 +15,7 @@ if sys.platform == "win32": BUFSIZE: Literal[8192] PIPE = subprocess.PIPE STDOUT = subprocess.STDOUT - def pipe(*, duplex: bool = False, overlapped: tuple[bool, bool] = ..., bufsize: int = 8192) -> tuple[int, int]: ... + def pipe(*, duplex: bool = False, overlapped: tuple[bool, bool] = (True, True), bufsize: int = 8192) -> tuple[int, int]: ... class PipeHandle: def __init__(self, handle: int) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index 2b191734c..2c21cd95d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -1839,7 +1839,7 @@ def __import__( name: str, globals: Mapping[str, object] | None = None, locals: Mapping[str, object] | None = None, - fromlist: Sequence[str] = ..., + fromlist: Sequence[str] = (), level: int = 0, ) -> types.ModuleType: ... def __build_class__(__func: Callable[[], _Cell | Any], __name: str, *bases: Any, metaclass: Any = ..., **kwds: Any) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/concurrent/futures/process.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/concurrent/futures/process.pyi index 85af2e7f8..000e7a435 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/concurrent/futures/process.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/concurrent/futures/process.pyi @@ -153,9 +153,9 @@ def _chain_from_iterable_of_lists(iterable: Iterable[MutableSequence[Any]]) -> A class BrokenProcessPool(BrokenExecutor): ... class ProcessPoolExecutor(Executor): - _mp_context: BaseContext | None = ... - _initializer: Callable[..., None] | None = ... - _initargs: tuple[Any, ...] = ... + _mp_context: BaseContext | None + _initializer: Callable[..., None] | None + _initargs: tuple[Any, ...] _executor_manager_thread: _ThreadWakeup _processes: MutableMapping[int, Process] _shutdown_thread: bool @@ -174,7 +174,7 @@ class ProcessPoolExecutor(Executor): max_workers: int | None = None, mp_context: BaseContext | None = None, initializer: Callable[..., object] | None = None, - initargs: tuple[Any, ...] = ..., + initargs: tuple[Any, ...] = (), *, max_tasks_per_child: int | None = None, ) -> None: ... @@ -184,7 +184,7 @@ class ProcessPoolExecutor(Executor): max_workers: int | None = None, mp_context: BaseContext | None = None, initializer: Callable[..., object] | None = None, - initargs: tuple[Any, ...] = ..., + initargs: tuple[Any, ...] = (), ) -> None: ... if sys.version_info >= (3, 9): def _start_executor_manager_thread(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/concurrent/futures/thread.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/concurrent/futures/thread.pyi index e43dd3dfa..0b00d524a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/concurrent/futures/thread.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/concurrent/futures/thread.pyi @@ -44,16 +44,16 @@ class ThreadPoolExecutor(Executor): _broken: bool _shutdown: bool _shutdown_lock: Lock - _thread_name_prefix: str | None = ... - _initializer: Callable[..., None] | None = ... - _initargs: tuple[Any, ...] = ... + _thread_name_prefix: str | None + _initializer: Callable[..., None] | None + _initargs: tuple[Any, ...] _work_queue: queue.SimpleQueue[_WorkItem[Any]] def __init__( self, max_workers: int | None = None, thread_name_prefix: str = "", initializer: Callable[..., object] | None = None, - initargs: tuple[Any, ...] = ..., + initargs: tuple[Any, ...] = (), ) -> None: ... def _adjust_thread_count(self) -> None: ... def _initializer_failed(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/configparser.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/configparser.pyi index 2c5b68385..92931a89b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/configparser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/configparser.pyi @@ -69,8 +69,8 @@ class RawConfigParser(_Parser): dict_type: type[Mapping[str, str]] = ..., *, allow_no_value: Literal[True], - delimiters: Sequence[str] = ..., - comment_prefixes: Sequence[str] = ..., + delimiters: Sequence[str] = ("=", ":"), + comment_prefixes: Sequence[str] = ("#", ";"), inline_comment_prefixes: Sequence[str] | None = None, strict: bool = True, empty_lines_in_values: bool = True, @@ -85,8 +85,8 @@ class RawConfigParser(_Parser): dict_type: type[Mapping[str, str]], allow_no_value: Literal[True], *, - delimiters: Sequence[str] = ..., - comment_prefixes: Sequence[str] = ..., + delimiters: Sequence[str] = ("=", ":"), + comment_prefixes: Sequence[str] = ("#", ";"), inline_comment_prefixes: Sequence[str] | None = None, strict: bool = True, empty_lines_in_values: bool = True, @@ -101,8 +101,8 @@ class RawConfigParser(_Parser): dict_type: type[Mapping[str, str]] = ..., allow_no_value: bool = False, *, - delimiters: Sequence[str] = ..., - comment_prefixes: Sequence[str] = ..., + delimiters: Sequence[str] = ("=", ":"), + comment_prefixes: Sequence[str] = ("#", ";"), inline_comment_prefixes: Sequence[str] | None = None, strict: bool = True, empty_lines_in_values: bool = True, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/copy.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/copy.pyi index f68965d3d..8a2dcc508 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/copy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/copy.pyi @@ -8,7 +8,7 @@ _T = TypeVar("_T") PyStringMap: Any # Note: memo and _nil are internal kwargs. -def deepcopy(x: _T, memo: dict[int, Any] | None = None, _nil: Any = ...) -> _T: ... +def deepcopy(x: _T, memo: dict[int, Any] | None = None, _nil: Any = []) -> _T: ... def copy(x: _T) -> _T: ... class Error(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/dataclasses.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/dataclasses.pyi index d254a594d..13cffcd70 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/dataclasses.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/dataclasses.pyi @@ -247,12 +247,32 @@ class InitVar(Generic[_T], metaclass=_InitVarMeta): @overload def __class_getitem__(cls, type: Any) -> InitVar[Any]: ... -if sys.version_info >= (3, 11): +if sys.version_info >= (3, 12): + def make_dataclass( + cls_name: str, + fields: Iterable[str | tuple[str, type] | tuple[str, type, Any]], + *, + bases: tuple[type, ...] = (), + namespace: dict[str, Any] | None = None, + init: bool = True, + repr: bool = True, + eq: bool = True, + order: bool = False, + unsafe_hash: bool = False, + frozen: bool = False, + match_args: bool = True, + kw_only: bool = False, + slots: bool = False, + weakref_slot: bool = False, + module: str | None = None, + ) -> type: ... + +elif sys.version_info >= (3, 11): def make_dataclass( cls_name: str, fields: Iterable[str | tuple[str, type] | tuple[str, type, Any]], *, - bases: tuple[type, ...] = ..., + bases: tuple[type, ...] = (), namespace: dict[str, Any] | None = None, init: bool = True, repr: bool = True, @@ -271,7 +291,7 @@ elif sys.version_info >= (3, 10): cls_name: str, fields: Iterable[str | tuple[str, type] | tuple[str, type, Any]], *, - bases: tuple[type, ...] = ..., + bases: tuple[type, ...] = (), namespace: dict[str, Any] | None = None, init: bool = True, repr: bool = True, @@ -289,7 +309,7 @@ else: cls_name: str, fields: Iterable[str | tuple[str, type] | tuple[str, type, Any]], *, - bases: tuple[type, ...] = ..., + bases: tuple[type, ...] = (), namespace: dict[str, Any] | None = None, init: bool = True, repr: bool = True, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi index f78737e98..2bb2264c9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi @@ -2,7 +2,7 @@ import sys from abc import abstractmethod from time import struct_time from typing import ClassVar, NamedTuple, NoReturn, TypeVar, overload -from typing_extensions import Literal, Self, TypeAlias, final +from typing_extensions import Literal, Self, SupportsIndex, TypeAlias, final if sys.version_info >= (3, 11): __all__ = ("date", "datetime", "time", "timedelta", "timezone", "tzinfo", "MINYEAR", "MAXYEAR", "UTC") @@ -49,7 +49,7 @@ class date: min: ClassVar[date] max: ClassVar[date] resolution: ClassVar[timedelta] - def __new__(cls, year: int, month: int, day: int) -> Self: ... + def __new__(cls, year: SupportsIndex, month: SupportsIndex, day: SupportsIndex) -> Self: ... @classmethod def fromtimestamp(cls, __timestamp: float) -> Self: ... @classmethod @@ -81,7 +81,7 @@ class date: def isoformat(self) -> str: ... def timetuple(self) -> struct_time: ... def toordinal(self) -> int: ... - def replace(self, year: int = ..., month: int = ..., day: int = ...) -> Self: ... + def replace(self, year: SupportsIndex = ..., month: SupportsIndex = ..., day: SupportsIndex = ...) -> Self: ... def __le__(self, __value: date) -> bool: ... def __lt__(self, __value: date) -> bool: ... def __ge__(self, __value: date) -> bool: ... @@ -119,10 +119,10 @@ class time: resolution: ClassVar[timedelta] def __new__( cls, - hour: int = ..., - minute: int = ..., - second: int = ..., - microsecond: int = ..., + hour: SupportsIndex = ..., + minute: SupportsIndex = ..., + second: SupportsIndex = ..., + microsecond: SupportsIndex = ..., tzinfo: _TzInfo | None = ..., *, fold: int = ..., @@ -160,10 +160,10 @@ class time: def dst(self) -> timedelta | None: ... def replace( self, - hour: int = ..., - minute: int = ..., - second: int = ..., - microsecond: int = ..., + hour: SupportsIndex = ..., + minute: SupportsIndex = ..., + second: SupportsIndex = ..., + microsecond: SupportsIndex = ..., tzinfo: _TzInfo | None = ..., *, fold: int = ..., @@ -223,13 +223,13 @@ class datetime(date): max: ClassVar[datetime] def __new__( cls, - year: int, - month: int, - day: int, - hour: int = ..., - minute: int = ..., - second: int = ..., - microsecond: int = ..., + year: SupportsIndex, + month: SupportsIndex, + day: SupportsIndex, + hour: SupportsIndex = ..., + minute: SupportsIndex = ..., + second: SupportsIndex = ..., + microsecond: SupportsIndex = ..., tzinfo: _TzInfo | None = ..., *, fold: int = ..., @@ -280,13 +280,13 @@ class datetime(date): def timetz(self) -> _Time: ... def replace( self, - year: int = ..., - month: int = ..., - day: int = ..., - hour: int = ..., - minute: int = ..., - second: int = ..., - microsecond: int = ..., + year: SupportsIndex = ..., + month: SupportsIndex = ..., + day: SupportsIndex = ..., + hour: SupportsIndex = ..., + minute: SupportsIndex = ..., + second: SupportsIndex = ..., + microsecond: SupportsIndex = ..., tzinfo: _TzInfo | None = ..., *, fold: int = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/dis.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/dis.pyi index ac0c5356f..d153771e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/dis.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/dis.pyi @@ -39,10 +39,10 @@ _HaveCodeType: TypeAlias = types.MethodType | types.FunctionType | types.CodeTyp if sys.version_info >= (3, 11): class Positions(NamedTuple): - lineno: int | None = ... - end_lineno: int | None = ... - col_offset: int | None = ... - end_col_offset: int | None = ... + lineno: int | None = None + end_lineno: int | None = None + col_offset: int | None = None + end_col_offset: int | None = None if sys.version_info >= (3, 11): class Instruction(NamedTuple): @@ -54,7 +54,7 @@ if sys.version_info >= (3, 11): offset: int starts_line: int | None is_jump_target: bool - positions: Positions | None = ... + positions: Positions | None = None else: class Instruction(NamedTuple): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/command/config.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/command/config.pyi index 81fdf76b2..7077c9a4c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/command/config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/command/config.pyi @@ -74,7 +74,7 @@ class config(Command): library_dirs: Sequence[str] | None = None, headers: Sequence[str] | None = None, include_dirs: Sequence[str] | None = None, - other_libraries: list[str] = ..., + other_libraries: list[str] = [], ) -> bool: ... def check_header( self, header: str, include_dirs: Sequence[str] | None = None, library_dirs: Sequence[str] | None = None, lang: str = "c" diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/dist.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/dist.pyi index 697bd896f..b296b11f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/dist.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/dist.pyi @@ -110,7 +110,7 @@ class Distribution: def reinitialize_command(self, command: str, reinit_subcommands: bool = False) -> Command: ... @overload def reinitialize_command(self, command: _CommandT, reinit_subcommands: bool = False) -> _CommandT: ... - def announce(self, msg, level: int = ...) -> None: ... + def announce(self, msg, level: int = 2) -> None: ... def run_commands(self) -> None: ... def run_command(self, command: str) -> None: ... def has_pure_modules(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/fancy_getopt.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/fancy_getopt.pyi index c15bb8a16..f9916d451 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/fancy_getopt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/fancy_getopt.pyi @@ -31,4 +31,4 @@ def wrap_text(text: str, width: int) -> list[str]: ... def translate_longopt(opt: str) -> str: ... class OptionDummy: - def __init__(self, options: Iterable[str] = ...) -> None: ... + def __init__(self, options: Iterable[str] = []) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/email/message.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/email/message.pyi index 14e018073..18852f4d3 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/email/message.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/email/message.pyi @@ -80,9 +80,9 @@ class Message: @overload def get_content_charset(self, failobj: _T) -> str | _T: ... @overload - def get_charsets(self, failobj: None = None) -> list[str] | None: ... + def get_charsets(self, failobj: None = None) -> list[str | None]: ... @overload - def get_charsets(self, failobj: _T) -> list[str] | _T: ... + def get_charsets(self, failobj: _T) -> list[str | _T]: ... def walk(self) -> Generator[Self, None, None]: ... def get_content_disposition(self) -> str | None: ... def as_string(self, unixfrom: bool = False, maxheaderlen: int = 0, policy: Policy | None = None) -> str: ... @@ -105,7 +105,7 @@ class Message: class MIMEPart(Message): def __init__(self, policy: Policy | None = None) -> None: ... - def get_body(self, preferencelist: Sequence[str] = ...) -> Message | None: ... + def get_body(self, preferencelist: Sequence[str] = ("related", "html", "plain")) -> Message | None: ... def iter_attachments(self) -> Iterator[Message]: ... def iter_parts(self) -> Iterator[Message]: ... def get_content(self, *args: Any, content_manager: ContentManager | None = None, **kw: Any) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi index 76d9dc02a..36a213d48 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi @@ -106,7 +106,7 @@ class FTP: def nlst(self, *args: str) -> list[str]: ... # Technically only the last arg can be a Callable but ... def dir(self, *args: str | Callable[[str], object]) -> None: ... - def mlsd(self, path: str = "", facts: Iterable[str] = ...) -> Iterator[tuple[str, dict[str, str]]]: ... + def mlsd(self, path: str = "", facts: Iterable[str] = []) -> Iterator[tuple[str, dict[str, str]]]: ... def rename(self, fromname: str, toname: str) -> str: ... def delete(self, filename: str) -> str: ... def cwd(self, dirname: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi index 20b612123..f96147bae 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi @@ -82,11 +82,13 @@ class _Wrapper(Generic[_PWrapped, _RWrapped]): def update_wrapper( wrapper: Callable[_PWrapper, _RWapper], wrapped: Callable[_PWrapped, _RWrapped], - assigned: Sequence[str] = ..., - updated: Sequence[str] = ..., + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), + updated: Sequence[str] = ("__dict__",), ) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... def wraps( - wrapped: Callable[_PWrapped, _RWrapped], assigned: Sequence[str] = ..., updated: Sequence[str] = ... + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), + updated: Sequence[str] = ("__dict__",), ) -> _Wrapper[_PWrapped, _RWrapped]: ... def total_ordering(cls: type[_T]) -> type[_T]: ... def cmp_to_key(mycmp: Callable[[_T, _T], int]) -> Callable[[_T], SupportsAllComparisons]: ... @@ -163,7 +165,7 @@ if sys.version_info >= (3, 8): attrname: str | None def __init__(self, func: Callable[[Any], _T]) -> None: ... @overload - def __get__(self, instance: None, owner: type[Any] | None = None) -> cached_property[_T]: ... + def __get__(self, instance: None, owner: type[Any] | None = None) -> Self: ... @overload def __get__(self, instance: object, owner: type[Any] | None = None) -> _T: ... def __set_name__(self, owner: type[Any], name: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/getopt.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/getopt.pyi index 14d63dbd6..bc9d4da47 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/getopt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/getopt.pyi @@ -1,7 +1,7 @@ __all__ = ["GetoptError", "error", "getopt", "gnu_getopt"] -def getopt(args: list[str], shortopts: str, longopts: list[str] = ...) -> tuple[list[tuple[str, str]], list[str]]: ... -def gnu_getopt(args: list[str], shortopts: str, longopts: list[str] = ...) -> tuple[list[tuple[str, str]], list[str]]: ... +def getopt(args: list[str], shortopts: str, longopts: list[str] = []) -> tuple[list[tuple[str, str]], list[str]]: ... +def gnu_getopt(args: list[str], shortopts: str, longopts: list[str] = []) -> tuple[list[tuple[str, str]], list[str]]: ... class GetoptError(Exception): msg: str diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi index cc142fbb2..9c7c0c1c4 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi @@ -158,7 +158,7 @@ class HTTPConnection: method: str, url: str, body: _DataType | str | None = None, - headers: Mapping[str, str] = ..., + headers: Mapping[str, str] = {}, *, encode_chunked: bool = False, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/http/cookiejar.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/http/cookiejar.pyi index 7f2c9c6cc..482cbca1d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/http/cookiejar.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/http/cookiejar.pyi @@ -99,7 +99,7 @@ class DefaultCookiePolicy(CookiePolicy): strict_ns_domain: int = 0, strict_ns_set_initial_dollar: bool = False, strict_ns_set_path: bool = False, - secure_protocols: Sequence[str] = ..., + secure_protocols: Sequence[str] = ("https", "wss"), ) -> None: ... else: def __init__( diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/importlib/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/importlib/__init__.pyi index 1747b2741..8d73319f8 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/importlib/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/importlib/__init__.pyi @@ -9,7 +9,7 @@ def __import__( name: str, globals: Mapping[str, object] | None = None, locals: Mapping[str, object] | None = None, - fromlist: Sequence[str] = ..., + fromlist: Sequence[str] = (), level: int = 0, ) -> ModuleType: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi index b9283475f..a2252e38e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi @@ -450,9 +450,9 @@ if sys.version_info < (3, 11): varargs: str | None = None, varkw: str | None = None, defaults: tuple[Any, ...] | None = None, - kwonlyargs: Sequence[str] | None = ..., - kwonlydefaults: Mapping[str, Any] | None = ..., - annotations: Mapping[str, Any] = ..., + kwonlyargs: Sequence[str] | None = (), + kwonlydefaults: Mapping[str, Any] | None = {}, + annotations: Mapping[str, Any] = {}, formatarg: Callable[[str], str] = ..., formatvarargs: Callable[[str], str] = ..., formatvarkw: Callable[[str], str] = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pytree.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pytree.pyi index 4f756c976..8b44d4352 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pytree.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pytree.pyi @@ -57,7 +57,7 @@ class Leaf(Base): value: str fixers_applied: list[Any] def __init__( - self, type: int, value: str, context: _Context | None = None, prefix: str | None = None, fixers_applied: list[Any] = ... + self, type: int, value: str, context: _Context | None = None, prefix: str | None = None, fixers_applied: list[Any] = [] ) -> None: ... def __unicode__(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/locale.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/locale.pyi index 0b0dd9456..c6cc7cacf 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/locale.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/locale.pyi @@ -114,7 +114,9 @@ class Error(Exception): ... def setlocale(category: int, locale: _str | Iterable[_str | None] | None = None) -> _str: ... def localeconv() -> Mapping[_str, int | _str | list[int]]: ... def nl_langinfo(__key: int) -> _str: ... -def getdefaultlocale(envvars: tuple[_str, ...] = ...) -> tuple[_str | None, _str | None]: ... +def getdefaultlocale( + envvars: tuple[_str, ...] = ("LC_ALL", "LC_CTYPE", "LANG", "LANGUAGE") +) -> tuple[_str | None, _str | None]: ... def getlocale(category: int = ...) -> tuple[_str | None, _str | None]: ... def getpreferredencoding(do_setlocale: bool = True) -> _str: ... def normalize(localename: _str) -> _str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi index 3c547a6e0..938410ae6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi @@ -389,7 +389,7 @@ class LogRecord: msecs: float # Only created when logging.Formatter.format is called. See #6132. message: str - msg: str + msg: str | Any # The runtime accepts any object, but will be a str in 99% of cases name: str pathname: str process: int | None diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi index 7e0bfd705..8a0373435 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi @@ -177,7 +177,9 @@ class SysLogHandler(Handler): priority_names: ClassVar[dict[str, int]] # undocumented facility_names: ClassVar[dict[str, int]] # undocumented priority_map: ClassVar[dict[str, str]] # undocumented - def __init__(self, address: tuple[str, int] | str = ..., facility: int = 1, socktype: SocketKind | None = None) -> None: ... + def __init__( + self, address: tuple[str, int] | str = ("localhost", 514), facility: int = 1, socktype: SocketKind | None = None + ) -> None: ... if sys.version_info >= (3, 11): def createSocket(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/mailcap.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/mailcap.pyi index 5905f5826..ce549e01f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/mailcap.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/mailcap.pyi @@ -6,6 +6,6 @@ _Cap: TypeAlias = dict[str, str | int] __all__ = ["getcaps", "findmatch"] def findmatch( - caps: Mapping[str, list[_Cap]], MIMEtype: str, key: str = "view", filename: str = "/dev/null", plist: Sequence[str] = ... + caps: Mapping[str, list[_Cap]], MIMEtype: str, key: str = "view", filename: str = "/dev/null", plist: Sequence[str] = [] ) -> tuple[str | None, _Cap | None]: ... def getcaps() -> dict[str, list[_Cap]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/mimetypes.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/mimetypes.pyi index fd3908680..128a05fa5 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/mimetypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/mimetypes.pyi @@ -43,7 +43,7 @@ class MimeTypes: encodings_map: dict[str, str] types_map: tuple[dict[str, str], dict[str, str]] types_map_inv: tuple[dict[str, str], dict[str, str]] - def __init__(self, filenames: tuple[str, ...] = ..., strict: bool = True) -> None: ... + def __init__(self, filenames: tuple[str, ...] = (), strict: bool = True) -> None: ... def guess_extension(self, type: str, strict: bool = True) -> str | None: ... if sys.version_info >= (3, 8): def guess_type(self, url: StrPath, strict: bool = True) -> tuple[str | None, str | None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/modulefinder.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/modulefinder.pyi index 6f1917644..06bb50d26 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/modulefinder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/modulefinder.pyi @@ -44,8 +44,8 @@ class ModuleFinder: self, path: list[str] | None = None, debug: int = 0, - excludes: Container[str] = ..., - replace_paths: Sequence[tuple[str, str]] = ..., + excludes: Container[str] = [], + replace_paths: Sequence[tuple[str, str]] = [], ) -> None: ... def msg(self, level: int, str: str, *args: Any) -> None: ... # undocumented diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/context.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/context.pyi index c498649a7..fe3b98024 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/context.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/context.pyi @@ -72,7 +72,7 @@ class BaseContext: self, processes: int | None = None, initializer: Callable[..., object] | None = None, - initargs: Iterable[Any] = ..., + initargs: Iterable[Any] = (), maxtasksperchild: int | None = None, ) -> _Pool: ... @overload diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/dummy/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/dummy/__init__.pyi index 5b2a33772..967b57ded 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/dummy/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/dummy/__init__.pyi @@ -50,8 +50,8 @@ class DummyProcess(threading.Thread): group: Any = None, target: Callable[..., object] | None = None, name: str | None = None, - args: Iterable[Any] = ..., - kwargs: Mapping[str, Any] = ..., + args: Iterable[Any] = (), + kwargs: Mapping[str, Any] = {}, ) -> None: ... Process = DummyProcess @@ -69,9 +69,7 @@ class Value: def Array(typecode: Any, sequence: Sequence[Any], lock: Any = True) -> array.array[Any]: ... def Manager() -> Any: ... -def Pool( - processes: int | None = None, initializer: Callable[..., object] | None = None, initargs: Iterable[Any] = ... -) -> Any: ... +def Pool(processes: int | None = None, initializer: Callable[..., object] | None = None, initargs: Iterable[Any] = ()) -> Any: ... def active_children() -> list[Any]: ... current_process = threading.current_thread diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/forkserver.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/forkserver.pyi index df435f00e..9a15f2683 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/forkserver.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/forkserver.pyi @@ -24,7 +24,7 @@ def main( def read_signed(fd: int) -> Any: ... def write_signed(fd: int, n: int) -> None: ... -_forkserver: ForkServer = ... +_forkserver: ForkServer ensure_running = _forkserver.ensure_running get_inherited_fds = _forkserver.get_inherited_fds connect_to_new_process = _forkserver.connect_to_new_process diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi index ad147fca3..4ac602374 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi @@ -54,7 +54,7 @@ class BaseProxy: manager_owned: bool = False, ) -> None: ... def __deepcopy__(self, memo: Any | None) -> Any: ... - def _callmethod(self, methodname: str, args: tuple[Any, ...] = ..., kwds: dict[Any, Any] = ...) -> None: ... + def _callmethod(self, methodname: str, args: tuple[Any, ...] = (), kwds: dict[Any, Any] = {}) -> None: ... def _getvalue(self) -> Any: ... def __reduce__(self) -> tuple[Any, tuple[Any, Any, str, dict[Any, Any]]]: ... @@ -150,7 +150,7 @@ class BaseManager: def get_server(self) -> Server: ... def connect(self) -> None: ... - def start(self, initializer: Callable[..., object] | None = None, initargs: Iterable[Any] = ...) -> None: ... + def start(self, initializer: Callable[..., object] | None = None, initargs: Iterable[Any] = ()) -> None: ... def shutdown(self) -> None: ... # only available after start() was called def join(self, timeout: float | None = None) -> None: ... # undocumented @property diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/pool.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/pool.pyi index a19dd555e..dd4b865a3 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/pool.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/pool.pyi @@ -72,16 +72,16 @@ class Pool: self, processes: int | None = None, initializer: Callable[..., object] | None = None, - initargs: Iterable[Any] = ..., + initargs: Iterable[Any] = (), maxtasksperchild: int | None = None, context: Any | None = None, ) -> None: ... - def apply(self, func: Callable[..., _T], args: Iterable[Any] = ..., kwds: Mapping[str, Any] = ...) -> _T: ... + def apply(self, func: Callable[..., _T], args: Iterable[Any] = (), kwds: Mapping[str, Any] = {}) -> _T: ... def apply_async( self, func: Callable[..., _T], - args: Iterable[Any] = ..., - kwds: Mapping[str, Any] = ..., + args: Iterable[Any] = (), + kwds: Mapping[str, Any] = {}, callback: Callable[[_T], object] | None = None, error_callback: Callable[[BaseException], object] | None = None, ) -> AsyncResult[_T]: ... @@ -115,7 +115,7 @@ class Pool: class ThreadPool(Pool): def __init__( - self, processes: int | None = None, initializer: Callable[..., object] | None = None, initargs: Iterable[Any] = ... + self, processes: int | None = None, initializer: Callable[..., object] | None = None, initargs: Iterable[Any] = () ) -> None: ... # undocumented diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/process.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/process.pyi index ef1b4b596..9863013fc 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/process.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/process.pyi @@ -17,8 +17,8 @@ class BaseProcess: group: None = None, target: Callable[..., object] | None = None, name: str | None = None, - args: Iterable[Any] = ..., - kwargs: Mapping[str, Any] = ..., + args: Iterable[Any] = (), + kwargs: Mapping[str, Any] = {}, *, daemon: bool | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/resource_tracker.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/resource_tracker.pyi index e2b940796..7f726a00d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/resource_tracker.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/resource_tracker.pyi @@ -9,7 +9,7 @@ class ResourceTracker: def register(self, name: Sized, rtype: Incomplete) -> None: ... def unregister(self, name: Sized, rtype: Incomplete) -> None: ... -_resource_tracker: ResourceTracker = ... +_resource_tracker: ResourceTracker ensure_running = _resource_tracker.ensure_running register = _resource_tracker.register unregister = _resource_tracker.unregister diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/util.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/util.pyi index 006ec3a9f..7ca650511 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/util.pyi @@ -50,14 +50,14 @@ class Finalize: self, obj: Incomplete | None, callback: Callable[..., Incomplete], - args: Sequence[Any] = ..., + args: Sequence[Any] = (), kwargs: Mapping[str, Any] | None = None, exitpriority: int | None = None, ) -> None: ... def __call__( self, wr: Unused = None, - _finalizer_registry: MutableMapping[Incomplete, Incomplete] = ..., + _finalizer_registry: MutableMapping[Incomplete, Incomplete] = {}, sub_debug: Callable[..., object] = ..., getpid: Callable[[], int] = ..., ) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi index e2871bb54..405c45ca0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi @@ -128,7 +128,7 @@ class Pdb(Bdb, Cmd): def _select_frame(self, number: int) -> None: ... def _getval_except(self, arg: str, frame: FrameType | None = None) -> object: ... def _print_lines( - self, lines: Sequence[str], start: int, breaks: Sequence[int] = ..., frame: FrameType | None = None + self, lines: Sequence[str], start: int, breaks: Sequence[int] = (), frame: FrameType | None = None ) -> None: ... def _cmdloop(self) -> None: ... def do_display(self, arg: str) -> bool | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi index 57c4cb03e..55ff38585 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi @@ -121,7 +121,7 @@ if sys.version_info >= (3, 8): fix_imports: bool = True, encoding: str = "ASCII", errors: str = "strict", - buffers: Iterable[Any] | None = ..., + buffers: Iterable[Any] | None = (), ) -> Any: ... def loads( __data: ReadableBuffer, @@ -129,7 +129,7 @@ if sys.version_info >= (3, 8): fix_imports: bool = True, encoding: str = "ASCII", errors: str = "strict", - buffers: Iterable[Any] | None = ..., + buffers: Iterable[Any] | None = (), ) -> Any: ... else: diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/platform.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/platform.pyi index 291f302b4..483d6c454 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/platform.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/platform.pyi @@ -33,10 +33,10 @@ if sys.version_info >= (3, 8): def win32_is_iot() -> bool: ... def mac_ver( - release: str = "", versioninfo: tuple[str, str, str] = ..., machine: str = "" + release: str = "", versioninfo: tuple[str, str, str] = ("", "", ""), machine: str = "" ) -> tuple[str, tuple[str, str, str], str]: ... def java_ver( - release: str = "", vendor: str = "", vminfo: tuple[str, str, str] = ..., osinfo: tuple[str, str, str] = ... + release: str = "", vendor: str = "", vminfo: tuple[str, str, str] = ("", "", ""), osinfo: tuple[str, str, str] = ("", "", "") ) -> tuple[str, str, tuple[str, str, str], tuple[str, str, str]]: ... def system_alias(system: str, release: str, version: str) -> tuple[str, str, str]: ... def architecture(executable: str = sys.executable, bits: str = "", linkage: str = "") -> tuple[str, str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi index f09976ad3..ed97f1918 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi @@ -30,7 +30,7 @@ def visiblename(name: str, all: Container[str] | None = None, obj: object = None def classify_class_attrs(object: object) -> list[tuple[str, str, type, str]]: ... def ispackage(path: str) -> bool: ... def source_synopsis(file: IO[AnyStr]) -> AnyStr | None: ... -def synopsis(filename: str, cache: MutableMapping[str, tuple[int, str]] = ...) -> str | None: ... +def synopsis(filename: str, cache: MutableMapping[str, tuple[int, str]] = {}) -> str | None: ... class ErrorDuringImport(Exception): filename: str @@ -40,7 +40,7 @@ class ErrorDuringImport(Exception): def __init__(self, filename: str, exc_info: OptExcInfo) -> None: ... def importfile(path: str) -> ModuleType: ... -def safeimport(path: str, forceload: bool = ..., cache: MutableMapping[str, ModuleType] = ...) -> ModuleType | None: ... +def safeimport(path: str, forceload: bool = ..., cache: MutableMapping[str, ModuleType] = {}) -> ModuleType | None: ... class Doc: PYTHONDOCS: str @@ -70,7 +70,7 @@ class HTMLRepr(Repr): def repr_unicode(self, x: AnyStr, level: complex) -> str: ... class HTMLDoc(Doc): - _repr_instance: HTMLRepr = ... + _repr_instance: HTMLRepr repr = _repr_instance.repr escape = _repr_instance.escape def page(self, title: str, contents: str) -> str: ... @@ -113,9 +113,9 @@ class HTMLDoc(Doc): self, text: str, escape: Callable[[str], str] | None = None, - funcs: Mapping[str, str] = ..., - classes: Mapping[str, str] = ..., - methods: Mapping[str, str] = ..., + funcs: Mapping[str, str] = {}, + classes: Mapping[str, str] = {}, + methods: Mapping[str, str] = {}, ) -> str: ... def formattree( self, tree: list[tuple[type, tuple[type, ...]] | list[Any]], modname: str, parent: type | None = None @@ -126,8 +126,8 @@ class HTMLDoc(Doc): object: object, name: str | None = None, mod: str | None = None, - funcs: Mapping[str, str] = ..., - classes: Mapping[str, str] = ..., + funcs: Mapping[str, str] = {}, + classes: Mapping[str, str] = {}, *ignored: Any, ) -> str: ... def formatvalue(self, object: object) -> str: ... @@ -136,9 +136,9 @@ class HTMLDoc(Doc): object: object, name: str | None = None, mod: str | None = None, - funcs: Mapping[str, str] = ..., - classes: Mapping[str, str] = ..., - methods: Mapping[str, str] = ..., + funcs: Mapping[str, str] = {}, + classes: Mapping[str, str] = {}, + methods: Mapping[str, str] = {}, cl: type | None = None, ) -> str: ... def docproperty(self, object: object, name: str | None = None, mod: str | None = None, cl: Any | None = None) -> str: ... # type: ignore[override] @@ -154,7 +154,7 @@ class TextRepr(Repr): def repr_instance(self, x: object, level: complex) -> str: ... class TextDoc(Doc): - _repr_instance: TextRepr = ... + _repr_instance: TextRepr repr = _repr_instance.repr def bold(self, text: str) -> str: ... def indent(self, text: str, prefix: str = " ") -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi index 484987869..5434f2240 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi @@ -100,9 +100,7 @@ class SystemRandom(Random): def getstate(self, *args: Any, **kwds: Any) -> NoReturn: ... def setstate(self, *args: Any, **kwds: Any) -> NoReturn: ... -# ----- random function stubs ----- - -_inst: Random = ... +_inst: Random seed = _inst.seed random = _inst.random uniform = _inst.uniform diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/reprlib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/reprlib.pyi index 21c8a5cd4..68ada6569 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/reprlib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/reprlib.pyi @@ -1,3 +1,4 @@ +import sys from array import array from collections import deque from collections.abc import Callable @@ -22,6 +23,30 @@ class Repr: maxlong: int maxstring: int maxother: int + if sys.version_info >= (3, 11): + fillvalue: str + if sys.version_info >= (3, 12): + indent: str | int | None + + if sys.version_info >= (3, 12): + def __init__( + self, + *, + maxlevel: int = 6, + maxtuple: int = 6, + maxlist: int = 6, + maxarray: int = 5, + maxdict: int = 4, + maxset: int = 6, + maxfrozenset: int = 6, + maxdeque: int = 6, + maxstring: int = 30, + maxlong: int = 40, + maxother: int = 30, + fillvalue: str = "...", + indent: str | int | None = None, + ) -> None: ... + def repr(self, x: Any) -> str: ... def repr1(self, x: Any, level: int) -> str: ... def repr_tuple(self, x: tuple[Any, ...], level: int) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sched.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sched.pyi index a8ec78d68..75dd63d04 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sched.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sched.pyi @@ -30,10 +30,10 @@ class scheduler: def __init__(self, timefunc: Callable[[], float] = ..., delayfunc: Callable[[float], object] = ...) -> None: ... def enterabs( - self, time: float, priority: Any, action: _ActionCallback, argument: tuple[Any, ...] = ..., kwargs: dict[str, Any] = ... + self, time: float, priority: Any, action: _ActionCallback, argument: tuple[Any, ...] = (), kwargs: dict[str, Any] = ... ) -> Event: ... def enter( - self, delay: float, priority: Any, action: _ActionCallback, argument: tuple[Any, ...] = ..., kwargs: dict[str, Any] = ... + self, delay: float, priority: Any, action: _ActionCallback, argument: tuple[Any, ...] = (), kwargs: dict[str, Any] = ... ) -> Event: ... def run(self, blocking: bool = True) -> float | None: ... def cancel(self, event: Event) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/shlex.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/shlex.pyi index fa04932db..c4fd23d60 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/shlex.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/shlex.pyi @@ -29,7 +29,7 @@ class shlex(Iterable[str]): debug: int lineno: int token: str - eof: str + eof: str | None @property def punctuation_chars(self) -> str: ... def __init__( @@ -39,12 +39,12 @@ class shlex(Iterable[str]): posix: bool = False, punctuation_chars: bool | str = False, ) -> None: ... - def get_token(self) -> str: ... + def get_token(self) -> str | None: ... def push_token(self, tok: str) -> None: ... - def read_token(self) -> str: ... - def sourcehook(self, newfile: str) -> tuple[str, TextIO]: ... + def read_token(self) -> str | None: ... + def sourcehook(self, newfile: str) -> tuple[str, TextIO] | None: ... def push_source(self, newstream: str | TextIO, newfile: str | None = None) -> None: ... def pop_source(self) -> None: ... - def error_leader(self, infile: str | None = None, lineno: int | None = None) -> None: ... + def error_leader(self, infile: str | None = None, lineno: int | None = None) -> str: ... def __iter__(self) -> Self: ... def __next__(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi index 0e4f521e5..e8eb46833 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi @@ -182,4 +182,4 @@ def register_unpack_format( ) -> None: ... def unregister_unpack_format(name: str) -> None: ... def get_unpack_formats() -> list[tuple[str, list[str], str]]: ... -def get_terminal_size(fallback: tuple[int, int] = ...) -> os.terminal_size: ... +def get_terminal_size(fallback: tuple[int, int] = (80, 24)) -> os.terminal_size: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi index 0d7595fc1..4228ad551 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi @@ -111,8 +111,8 @@ class SMTP: def help(self, args: str = "") -> bytes: ... def rset(self) -> _Reply: ... def noop(self) -> _Reply: ... - def mail(self, sender: str, options: Sequence[str] = ...) -> _Reply: ... - def rcpt(self, recip: str, options: Sequence[str] = ...) -> _Reply: ... + def mail(self, sender: str, options: Sequence[str] = ()) -> _Reply: ... + def rcpt(self, recip: str, options: Sequence[str] = ()) -> _Reply: ... def data(self, msg: ReadableBuffer | str) -> _Reply: ... def verify(self, address: str) -> _Reply: ... vrfy = verify @@ -134,16 +134,16 @@ class SMTP: from_addr: str, to_addrs: str | Sequence[str], msg: _BufferWithLen | str, - mail_options: Sequence[str] = ..., - rcpt_options: Sequence[str] = ..., + mail_options: Sequence[str] = (), + rcpt_options: Sequence[str] = (), ) -> _SendErrs: ... def send_message( self, msg: _Message, from_addr: str | None = None, to_addrs: str | Sequence[str] | None = None, - mail_options: Sequence[str] = ..., - rcpt_options: Sequence[str] = ..., + mail_options: Sequence[str] = (), + rcpt_options: Sequence[str] = (), ) -> _SendErrs: ... def close(self) -> None: ... def quit(self) -> _Reply: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi index da58c3aa9..372c7e3f4 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi @@ -377,7 +377,7 @@ class Cursor(Iterator[Any]): def rowcount(self) -> int: ... def __init__(self, __cursor: Connection) -> None: ... def close(self) -> None: ... - def execute(self, __sql: str, __parameters: _Parameters = ...) -> Self: ... + def execute(self, __sql: str, __parameters: _Parameters = ()) -> Self: ... def executemany(self, __sql: str, __seq_of_parameters: Iterable[_Parameters]) -> Self: ... def executescript(self, __sql_script: str) -> Cursor: ... def fetchall(self) -> list[Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/string.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/string.pyi index dc9a449e0..1a875a071 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/string.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/string.pyi @@ -47,8 +47,8 @@ class Template(metaclass=_TemplateMetaclass): flags: ClassVar[RegexFlag] pattern: ClassVar[Pattern[str]] def __init__(self, template: str) -> None: ... - def substitute(self, __mapping: Mapping[str, object] = ..., **kwds: object) -> str: ... - def safe_substitute(self, __mapping: Mapping[str, object] = ..., **kwds: object) -> str: ... + def substitute(self, __mapping: Mapping[str, object] = {}, **kwds: object) -> str: ... + def safe_substitute(self, __mapping: Mapping[str, object] = {}, **kwds: object) -> str: ... if sys.version_info >= (3, 11): def get_identifiers(self) -> list[str]: ... def is_valid(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/subprocess.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/subprocess.pyi index 3c8041811..346e4d551 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/subprocess.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/subprocess.pyi @@ -1870,7 +1870,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str, @@ -1901,7 +1901,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str | None = None, @@ -1933,7 +1933,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), # where the *real* keyword only args start text: bool | None = None, encoding: str | None = None, @@ -1964,7 +1964,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: Literal[True], encoding: str | None = None, @@ -1995,7 +1995,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: Literal[None, False] = None, encoding: None = None, @@ -2026,7 +2026,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str | None = None, @@ -2059,7 +2059,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str, @@ -2089,7 +2089,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str | None = None, @@ -2120,7 +2120,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), # where the *real* keyword only args start text: bool | None = None, encoding: str | None = None, @@ -2150,7 +2150,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: Literal[True], encoding: str | None = None, @@ -2180,7 +2180,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: Literal[None, False] = None, encoding: None = None, @@ -2210,7 +2210,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str | None = None, @@ -2242,7 +2242,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str, @@ -2271,7 +2271,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str | None = None, @@ -2301,7 +2301,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), # where the *real* keyword only args start text: bool | None = None, encoding: str | None = None, @@ -2330,7 +2330,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: Literal[True], encoding: str | None = None, @@ -2359,7 +2359,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: Literal[None, False] = None, encoding: None = None, @@ -2388,7 +2388,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str | None = None, @@ -2418,7 +2418,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str, @@ -2443,7 +2443,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str | None = None, @@ -2469,7 +2469,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), # where the *real* keyword only args start text: bool | None = None, encoding: str | None = None, @@ -2494,7 +2494,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: Literal[True], encoding: str | None = None, @@ -2519,7 +2519,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: Literal[None, False] = None, encoding: None = None, @@ -2544,7 +2544,7 @@ class Popen(Generic[AnyStr]): creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, - pass_fds: Collection[int] = ..., + pass_fds: Collection[int] = (), *, text: bool | None = None, encoding: str | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi index 6e97fbb32..7dba4603b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi @@ -6,7 +6,7 @@ from importlib.abc import PathEntryFinder from importlib.machinery import ModuleSpec from io import TextIOWrapper from types import FrameType, ModuleType, TracebackType -from typing import Any, NoReturn, Protocol, TextIO, TypeVar, overload +from typing import Any, NoReturn, Protocol, TextIO, TypeVar from typing_extensions import Final, Literal, TypeAlias, final _T = TypeVar("_T") @@ -239,10 +239,7 @@ def getfilesystemencoding() -> str: ... def getfilesystemencodeerrors() -> str: ... def getrefcount(__object: Any) -> int: ... def getrecursionlimit() -> int: ... -@overload -def getsizeof(obj: object) -> int: ... -@overload -def getsizeof(obj: object, default: int) -> int: ... +def getsizeof(obj: object, default: int = ...) -> int: ... def getswitchinterval() -> float: ... def getprofile() -> ProfileFunction | None: ... def setprofile(profilefunc: ProfileFunction | None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi index c01797880..6275e4552 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi @@ -78,7 +78,7 @@ class Thread: group: None = None, target: Callable[..., object] | None = None, name: str | None = None, - args: Iterable[Any] = ..., + args: Iterable[Any] = (), kwargs: Mapping[str, Any] | None = None, *, daemon: bool | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi index 7b4b06be4..3291b0c9d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi @@ -173,10 +173,7 @@ EXCEPTION = _tkinter.EXCEPTION # Some widgets have an option named -compound that accepts different values # than the _Compound defined here. Many other options have similar things. _Anchor: TypeAlias = Literal["nw", "n", "ne", "w", "center", "e", "sw", "s", "se"] # manual page: Tk_GetAnchor -_Bitmap: TypeAlias = str # manual page: Tk_GetBitmap _ButtonCommand: TypeAlias = str | Callable[[], Any] # accepts string of tcl code, return value is returned from Button.invoke() -_CanvasItemId: TypeAlias = int -_Color: TypeAlias = str # typically '#rrggbb', '#rgb' or color names. _Compound: TypeAlias = Literal["top", "left", "center", "right", "bottom", "none"] # -compound in manual page named 'options' # manual page: Tk_GetCursor _Cursor: TypeAlias = str | tuple[str] | tuple[str, str] | tuple[str, str, str] | tuple[str, str, str, str] @@ -405,7 +402,7 @@ class Misc: def winfo_pointery(self) -> int: ... def winfo_reqheight(self) -> int: ... def winfo_reqwidth(self) -> int: ... - def winfo_rgb(self, color: _Color) -> tuple[int, int, int]: ... + def winfo_rgb(self, color: str) -> tuple[int, int, int]: ... def winfo_rootx(self) -> int: ... def winfo_rooty(self) -> int: ... def winfo_screen(self) -> str: ... @@ -504,7 +501,7 @@ class Misc: def grid_columnconfigure( self, index: _GridIndex, - cnf: _GridIndexInfo = ..., + cnf: _GridIndexInfo = {}, *, minsize: _ScreenUnits = ..., pad: _ScreenUnits = ..., @@ -514,7 +511,7 @@ class Misc: def grid_rowconfigure( self, index: _GridIndex, - cnf: _GridIndexInfo = ..., + cnf: _GridIndexInfo = {}, *, minsize: _ScreenUnits = ..., pad: _ScreenUnits = ..., @@ -745,15 +742,15 @@ class Tk(Misc, Wm): self, cnf: dict[str, Any] | None = None, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., menu: Menu = ..., padx: _ScreenUnits = ..., @@ -825,7 +822,7 @@ class Pack: # replaced by **kwargs. def pack_configure( self, - cnf: Mapping[str, Any] | None = ..., + cnf: Mapping[str, Any] | None = {}, *, after: Misc = ..., anchor: _Anchor = ..., @@ -861,7 +858,7 @@ class _PlaceInfo(_InMiscNonTotal): # empty dict if widget hasn't been placed class Place: def place_configure( self, - cnf: Mapping[str, Any] | None = ..., + cnf: Mapping[str, Any] | None = {}, *, anchor: _Anchor = ..., bordermode: Literal["inside", "outside", "ignore"] = ..., @@ -896,7 +893,7 @@ class _GridInfo(_InMiscNonTotal): # empty dict if widget hasn't been gridded class Grid: def grid_configure( self, - cnf: Mapping[str, Any] | None = ..., + cnf: Mapping[str, Any] | None = {}, *, column: int = ..., columnspan: int = ..., @@ -920,7 +917,7 @@ class Grid: class BaseWidget(Misc): master: Misc widgetName: Incomplete - def __init__(self, master, widgetName, cnf=..., kw=..., extra=...) -> None: ... + def __init__(self, master, widgetName, cnf={}, kw={}, extra=()) -> None: ... def destroy(self) -> None: ... # This class represents any widget except Toplevel or Tk. @@ -947,11 +944,11 @@ class Toplevel(BaseWidget, Wm): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., class_: str = ..., @@ -959,8 +956,8 @@ class Toplevel(BaseWidget, Wm): container: bool = ..., cursor: _Cursor = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., menu: Menu = ..., name: str = ..., @@ -978,15 +975,15 @@ class Toplevel(BaseWidget, Wm): self, cnf: dict[str, Any] | None = None, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., menu: Menu = ..., padx: _ScreenUnits = ..., @@ -1003,30 +1000,30 @@ class Button(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., # same as borderwidth - bg: _Color = ..., # same as background - bitmap: _Bitmap = ..., + bg: str = ..., # same as background + bitmap: str = ..., border: _ScreenUnits = ..., # same as borderwidth borderwidth: _ScreenUnits = ..., command: _ButtonCommand = ..., compound: _Compound = ..., cursor: _Cursor = ..., default: Literal["normal", "active", "disabled"] = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., # same as foreground + disabledforeground: str = ..., + fg: str = ..., # same as foreground font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., # width and height must be int for buttons containing just text, but # ints are also valid _ScreenUnits height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., justify: Literal["left", "center", "right"] = ..., @@ -1053,26 +1050,26 @@ class Button(Widget): self, cnf: dict[str, Any] | None = None, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., - bitmap: _Bitmap = ..., + bg: str = ..., + bitmap: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., command: _ButtonCommand = ..., compound: _Compound = ..., cursor: _Cursor = ..., default: Literal["normal", "active", "disabled"] = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., justify: Literal["left", "center", "right"] = ..., @@ -1100,11 +1097,11 @@ class Canvas(Widget, XView, YView): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., closeenough: float = ..., @@ -1113,10 +1110,10 @@ class Canvas(Widget, XView, YView): # canvas manual page has a section named COORDINATES, and the first # part of it describes _ScreenUnits. height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., - insertbackground: _Color = ..., + insertbackground: str = ..., insertborderwidth: _ScreenUnits = ..., insertofftime: int = ..., insertontime: int = ..., @@ -1127,9 +1124,9 @@ class Canvas(Widget, XView, YView): # Setting scrollregion to None doesn't reset it back to empty, # but setting it to () does. scrollregion: tuple[_ScreenUnits, _ScreenUnits, _ScreenUnits, _ScreenUnits] | tuple[()] = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., # man page says that state can be 'hidden', but it can't state: Literal["normal", "disabled"] = ..., takefocus: _TakeFocusValue = ..., @@ -1144,19 +1141,19 @@ class Canvas(Widget, XView, YView): self, cnf: dict[str, Any] | None = None, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., closeenough: float = ..., confine: bool = ..., cursor: _Cursor = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., - insertbackground: _Color = ..., + insertbackground: str = ..., insertborderwidth: _ScreenUnits = ..., insertofftime: int = ..., insertontime: int = ..., @@ -1164,9 +1161,9 @@ class Canvas(Widget, XView, YView): offset=..., # undocumented relief: _Relief = ..., scrollregion: tuple[_ScreenUnits, _ScreenUnits, _ScreenUnits, _ScreenUnits] | tuple[()] = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., state: Literal["normal", "disabled"] = ..., takefocus: _TakeFocusValue = ..., width: _ScreenUnits = ..., @@ -1179,38 +1176,31 @@ class Canvas(Widget, XView, YView): def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ... config = configure def addtag(self, *args): ... # internal method - def addtag_above(self, newtag: str, tagOrId: str | _CanvasItemId) -> None: ... + def addtag_above(self, newtag: str, tagOrId: str | int) -> None: ... def addtag_all(self, newtag: str) -> None: ... - def addtag_below(self, newtag: str, tagOrId: str | _CanvasItemId) -> None: ... + def addtag_below(self, newtag: str, tagOrId: str | int) -> None: ... def addtag_closest( - self, - newtag: str, - x: _ScreenUnits, - y: _ScreenUnits, - halo: _ScreenUnits | None = None, - start: str | _CanvasItemId | None = None, + self, newtag: str, x: _ScreenUnits, y: _ScreenUnits, halo: _ScreenUnits | None = None, start: str | int | None = None ) -> None: ... def addtag_enclosed(self, newtag: str, x1: _ScreenUnits, y1: _ScreenUnits, x2: _ScreenUnits, y2: _ScreenUnits) -> None: ... def addtag_overlapping(self, newtag: str, x1: _ScreenUnits, y1: _ScreenUnits, x2: _ScreenUnits, y2: _ScreenUnits) -> None: ... - def addtag_withtag(self, newtag: str, tagOrId: str | _CanvasItemId) -> None: ... + def addtag_withtag(self, newtag: str, tagOrId: str | int) -> None: ... def find(self, *args): ... # internal method - def find_above(self, tagOrId: str | _CanvasItemId) -> tuple[_CanvasItemId, ...]: ... - def find_all(self) -> tuple[_CanvasItemId, ...]: ... - def find_below(self, tagOrId: str | _CanvasItemId) -> tuple[_CanvasItemId, ...]: ... + def find_above(self, tagOrId: str | int) -> tuple[int, ...]: ... + def find_all(self) -> tuple[int, ...]: ... + def find_below(self, tagOrId: str | int) -> tuple[int, ...]: ... def find_closest( - self, x: _ScreenUnits, y: _ScreenUnits, halo: _ScreenUnits | None = None, start: str | _CanvasItemId | None = None - ) -> tuple[_CanvasItemId, ...]: ... - def find_enclosed( - self, x1: _ScreenUnits, y1: _ScreenUnits, x2: _ScreenUnits, y2: _ScreenUnits - ) -> tuple[_CanvasItemId, ...]: ... - def find_overlapping(self, x1: _ScreenUnits, y1: _ScreenUnits, x2: _ScreenUnits, y2: float) -> tuple[_CanvasItemId, ...]: ... - def find_withtag(self, tagOrId: str | _CanvasItemId) -> tuple[_CanvasItemId, ...]: ... + self, x: _ScreenUnits, y: _ScreenUnits, halo: _ScreenUnits | None = None, start: str | int | None = None + ) -> tuple[int, ...]: ... + def find_enclosed(self, x1: _ScreenUnits, y1: _ScreenUnits, x2: _ScreenUnits, y2: _ScreenUnits) -> tuple[int, ...]: ... + def find_overlapping(self, x1: _ScreenUnits, y1: _ScreenUnits, x2: _ScreenUnits, y2: float) -> tuple[int, ...]: ... + def find_withtag(self, tagOrId: str | int) -> tuple[int, ...]: ... # Incompatible with Misc.bbox(), tkinter violates LSP - def bbox(self, *args: str | _CanvasItemId) -> tuple[int, int, int, int]: ... # type: ignore[override] + def bbox(self, *args: str | int) -> tuple[int, int, int, int]: ... # type: ignore[override] @overload def tag_bind( self, - tagOrId: str | _CanvasItemId, + tagOrId: str | int, sequence: str | None = None, func: Callable[[Event[Canvas]], object] | None = None, add: Literal["", "+"] | bool | None = None, @@ -1220,22 +1210,22 @@ class Canvas(Widget, XView, YView): self, tagOrId: str | int, sequence: str | None, func: str, add: Literal["", "+"] | bool | None = None ) -> None: ... @overload - def tag_bind(self, tagOrId: str | _CanvasItemId, *, func: str, add: Literal["", "+"] | bool | None = None) -> None: ... - def tag_unbind(self, tagOrId: str | _CanvasItemId, sequence: str, funcid: str | None = None) -> None: ... + def tag_bind(self, tagOrId: str | int, *, func: str, add: Literal["", "+"] | bool | None = None) -> None: ... + def tag_unbind(self, tagOrId: str | int, sequence: str, funcid: str | None = None) -> None: ... def canvasx(self, screenx, gridspacing: Incomplete | None = None): ... def canvasy(self, screeny, gridspacing: Incomplete | None = None): ... @overload - def coords(self, __tagOrId: str | _CanvasItemId) -> list[float]: ... + def coords(self, __tagOrId: str | int) -> list[float]: ... @overload - def coords(self, __tagOrId: str | _CanvasItemId, __args: list[int] | list[float] | tuple[float, ...]) -> None: ... + def coords(self, __tagOrId: str | int, __args: list[int] | list[float] | tuple[float, ...]) -> None: ... @overload - def coords(self, __tagOrId: str | _CanvasItemId, __x1: float, __y1: float, *args: float) -> None: ... + def coords(self, __tagOrId: str | int, __x1: float, __y1: float, *args: float) -> None: ... # create_foo() methods accept coords as a list or tuple, or as separate arguments. # Lists and tuples can be flat as in [1, 2, 3, 4], or nested as in [(1, 2), (3, 4)]. # Keyword arguments should be the same in all overloads of each method. - def create_arc(self, *args, **kw) -> _CanvasItemId: ... - def create_bitmap(self, *args, **kw) -> _CanvasItemId: ... - def create_image(self, *args, **kw) -> _CanvasItemId: ... + def create_arc(self, *args, **kw) -> int: ... + def create_bitmap(self, *args, **kw) -> int: ... + def create_image(self, *args, **kw) -> int: ... @overload def create_line( self, @@ -1244,58 +1234,58 @@ class Canvas(Widget, XView, YView): __x1: float, __y1: float, *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., arrow: Literal["first", "last", "both"] = ..., arrowshape: tuple[float, float, float] = ..., capstyle: Literal["round", "projecting", "butt"] = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., joinstyle: Literal["round", "bevel", "miter"] = ..., offset: _ScreenUnits = ..., smooth: bool = ..., splinesteps: float = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_line( self, __xy_pair_0: tuple[float, float], __xy_pair_1: tuple[float, float], *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., arrow: Literal["first", "last", "both"] = ..., arrowshape: tuple[float, float, float] = ..., capstyle: Literal["round", "projecting", "butt"] = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., joinstyle: Literal["round", "bevel", "miter"] = ..., offset: _ScreenUnits = ..., smooth: bool = ..., splinesteps: float = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_line( self, @@ -1308,29 +1298,29 @@ class Canvas(Widget, XView, YView): | list[tuple[float, float]] ), *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., arrow: Literal["first", "last", "both"] = ..., arrowshape: tuple[float, float, float] = ..., capstyle: Literal["round", "projecting", "butt"] = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., joinstyle: Literal["round", "bevel", "miter"] = ..., offset: _ScreenUnits = ..., smooth: bool = ..., splinesteps: float = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_oval( self, @@ -1339,60 +1329,60 @@ class Canvas(Widget, XView, YView): __x1: float, __y1: float, *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., - activeoutline: _Color = ..., - activeoutlinestipple: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., + activeoutline: str = ..., + activeoutlinestipple: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledoutline: _Color = ..., - disabledoutlinestipple: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledoutline: str = ..., + disabledoutlinestipple: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., offset: _ScreenUnits = ..., - outline: _Color = ..., + outline: str = ..., outlineoffset: _ScreenUnits = ..., - outlinestipple: _Bitmap = ..., + outlinestipple: str = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_oval( self, __xy_pair_0: tuple[float, float], __xy_pair_1: tuple[float, float], *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., - activeoutline: _Color = ..., - activeoutlinestipple: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., + activeoutline: str = ..., + activeoutlinestipple: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledoutline: _Color = ..., - disabledoutlinestipple: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledoutline: str = ..., + disabledoutlinestipple: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., offset: _ScreenUnits = ..., - outline: _Color = ..., + outline: str = ..., outlineoffset: _ScreenUnits = ..., - outlinestipple: _Bitmap = ..., + outlinestipple: str = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_oval( self, @@ -1405,30 +1395,30 @@ class Canvas(Widget, XView, YView): | list[tuple[float, float]] ), *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., - activeoutline: _Color = ..., - activeoutlinestipple: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., + activeoutline: str = ..., + activeoutlinestipple: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledoutline: _Color = ..., - disabledoutlinestipple: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledoutline: str = ..., + disabledoutlinestipple: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., offset: _ScreenUnits = ..., - outline: _Color = ..., + outline: str = ..., outlineoffset: _ScreenUnits = ..., - outlinestipple: _Bitmap = ..., + outlinestipple: str = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_polygon( self, @@ -1437,66 +1427,66 @@ class Canvas(Widget, XView, YView): __x1: float, __y1: float, *xy_pairs: float, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., - activeoutline: _Color = ..., - activeoutlinestipple: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., + activeoutline: str = ..., + activeoutlinestipple: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledoutline: _Color = ..., - disabledoutlinestipple: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledoutline: str = ..., + disabledoutlinestipple: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., joinstyle: Literal["round", "bevel", "miter"] = ..., offset: _ScreenUnits = ..., - outline: _Color = ..., + outline: str = ..., outlineoffset: _ScreenUnits = ..., - outlinestipple: _Bitmap = ..., + outlinestipple: str = ..., smooth: bool = ..., splinesteps: float = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_polygon( self, __xy_pair_0: tuple[float, float], __xy_pair_1: tuple[float, float], *xy_pairs: tuple[float, float], - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., - activeoutline: _Color = ..., - activeoutlinestipple: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., + activeoutline: str = ..., + activeoutlinestipple: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledoutline: _Color = ..., - disabledoutlinestipple: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledoutline: str = ..., + disabledoutlinestipple: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., joinstyle: Literal["round", "bevel", "miter"] = ..., offset: _ScreenUnits = ..., - outline: _Color = ..., + outline: str = ..., outlineoffset: _ScreenUnits = ..., - outlinestipple: _Bitmap = ..., + outlinestipple: str = ..., smooth: bool = ..., splinesteps: float = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_polygon( self, @@ -1509,33 +1499,33 @@ class Canvas(Widget, XView, YView): | list[tuple[float, float]] ), *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., - activeoutline: _Color = ..., - activeoutlinestipple: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., + activeoutline: str = ..., + activeoutlinestipple: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledoutline: _Color = ..., - disabledoutlinestipple: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledoutline: str = ..., + disabledoutlinestipple: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., joinstyle: Literal["round", "bevel", "miter"] = ..., offset: _ScreenUnits = ..., - outline: _Color = ..., + outline: str = ..., outlineoffset: _ScreenUnits = ..., - outlinestipple: _Bitmap = ..., + outlinestipple: str = ..., smooth: bool = ..., splinesteps: float = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_rectangle( self, @@ -1544,60 +1534,60 @@ class Canvas(Widget, XView, YView): __x1: float, __y1: float, *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., - activeoutline: _Color = ..., - activeoutlinestipple: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., + activeoutline: str = ..., + activeoutlinestipple: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledoutline: _Color = ..., - disabledoutlinestipple: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledoutline: str = ..., + disabledoutlinestipple: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., offset: _ScreenUnits = ..., - outline: _Color = ..., + outline: str = ..., outlineoffset: _ScreenUnits = ..., - outlinestipple: _Bitmap = ..., + outlinestipple: str = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_rectangle( self, __xy_pair_0: tuple[float, float], __xy_pair_1: tuple[float, float], *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., - activeoutline: _Color = ..., - activeoutlinestipple: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., + activeoutline: str = ..., + activeoutlinestipple: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledoutline: _Color = ..., - disabledoutlinestipple: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledoutline: str = ..., + disabledoutlinestipple: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., offset: _ScreenUnits = ..., - outline: _Color = ..., + outline: str = ..., outlineoffset: _ScreenUnits = ..., - outlinestipple: _Bitmap = ..., + outlinestipple: str = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_rectangle( self, @@ -1610,71 +1600,71 @@ class Canvas(Widget, XView, YView): | list[tuple[float, float]] ), *, - activedash: str | list[int] | tuple[int, ...] = ..., - activefill: _Color = ..., - activeoutline: _Color = ..., - activeoutlinestipple: _Color = ..., + activedash: str | int | list[int] | tuple[int, ...] = ..., + activefill: str = ..., + activeoutline: str = ..., + activeoutlinestipple: str = ..., activestipple: str = ..., activewidth: _ScreenUnits = ..., - dash: str | list[int] | tuple[int, ...] = ..., + dash: str | int | list[int] | tuple[int, ...] = ..., dashoffset: _ScreenUnits = ..., - disableddash: str | list[int] | tuple[int, ...] = ..., - disabledfill: _Color = ..., - disabledoutline: _Color = ..., - disabledoutlinestipple: _Color = ..., - disabledstipple: _Bitmap = ..., + disableddash: str | int | list[int] | tuple[int, ...] = ..., + disabledfill: str = ..., + disabledoutline: str = ..., + disabledoutlinestipple: str = ..., + disabledstipple: str = ..., disabledwidth: _ScreenUnits = ..., - fill: _Color = ..., + fill: str = ..., offset: _ScreenUnits = ..., - outline: _Color = ..., + outline: str = ..., outlineoffset: _ScreenUnits = ..., - outlinestipple: _Bitmap = ..., + outlinestipple: str = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_text( self, __x: float, __y: float, *, - activefill: _Color = ..., + activefill: str = ..., activestipple: str = ..., anchor: _Anchor = ..., - disabledfill: _Color = ..., - disabledstipple: _Bitmap = ..., - fill: _Color = ..., + disabledfill: str = ..., + disabledstipple: str = ..., + fill: str = ..., font: _FontDescription = ..., justify: Literal["left", "center", "right"] = ..., offset: _ScreenUnits = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., text: float | str = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_text( self, __coords: tuple[float, float] | list[int] | list[float], *, - activefill: _Color = ..., + activefill: str = ..., activestipple: str = ..., anchor: _Anchor = ..., - disabledfill: _Color = ..., - disabledstipple: _Bitmap = ..., - fill: _Color = ..., + disabledfill: str = ..., + disabledstipple: str = ..., + fill: str = ..., font: _FontDescription = ..., justify: Literal["left", "center", "right"] = ..., offset: _ScreenUnits = ..., state: Literal["normal", "active", "disabled"] = ..., - stipple: _Bitmap = ..., + stipple: str = ..., tags: str | list[str] | tuple[str, ...] = ..., text: float | str = ..., width: _ScreenUnits = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_window( self, @@ -1687,7 +1677,7 @@ class Canvas(Widget, XView, YView): tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., window: Widget = ..., - ) -> _CanvasItemId: ... + ) -> int: ... @overload def create_window( self, @@ -1699,39 +1689,39 @@ class Canvas(Widget, XView, YView): tags: str | list[str] | tuple[str, ...] = ..., width: _ScreenUnits = ..., window: Widget = ..., - ) -> _CanvasItemId: ... + ) -> int: ... def dchars(self, *args) -> None: ... - def delete(self, *tagsOrCanvasIds: str | _CanvasItemId) -> None: ... + def delete(self, *tagsOrCanvasIds: str | int) -> None: ... @overload def dtag(self, __tag: str, __tag_to_delete: str | None = ...) -> None: ... @overload - def dtag(self, __id: _CanvasItemId, __tag_to_delete: str) -> None: ... + def dtag(self, __id: int, __tag_to_delete: str) -> None: ... def focus(self, *args): ... - def gettags(self, __tagOrId: str | _CanvasItemId) -> tuple[str, ...]: ... + def gettags(self, __tagOrId: str | int) -> tuple[str, ...]: ... def icursor(self, *args) -> None: ... def index(self, *args): ... def insert(self, *args) -> None: ... def itemcget(self, tagOrId, option): ... # itemconfigure kwargs depend on item type, which is not known when type checking def itemconfigure( - self, tagOrId: str | _CanvasItemId, cnf: dict[str, Any] | None = None, **kw: Any + self, tagOrId: str | int, cnf: dict[str, Any] | None = None, **kw: Any ) -> dict[str, tuple[str, str, str, str, str]] | None: ... itemconfig = itemconfigure def move(self, *args) -> None: ... if sys.version_info >= (3, 8): - def moveto(self, tagOrId: str | _CanvasItemId, x: Literal[""] | float = "", y: Literal[""] | float = "") -> None: ... + def moveto(self, tagOrId: str | int, x: Literal[""] | float = "", y: Literal[""] | float = "") -> None: ... - def postscript(self, cnf=..., **kw): ... + def postscript(self, cnf={}, **kw): ... # tkinter does: # lower = tag_lower # lift = tkraise = tag_raise # # But mypy doesn't like aliasing here (maybe because Misc defines the same names) - def tag_lower(self, __first: str | _CanvasItemId, __second: str | _CanvasItemId | None = ...) -> None: ... - def lower(self, __first: str | _CanvasItemId, __second: str | _CanvasItemId | None = ...) -> None: ... # type: ignore[override] - def tag_raise(self, __first: str | _CanvasItemId, __second: str | _CanvasItemId | None = ...) -> None: ... - def tkraise(self, __first: str | _CanvasItemId, __second: str | _CanvasItemId | None = ...) -> None: ... # type: ignore[override] - def lift(self, __first: str | _CanvasItemId, __second: str | _CanvasItemId | None = ...) -> None: ... # type: ignore[override] + def tag_lower(self, __first: str | int, __second: str | int | None = ...) -> None: ... + def lower(self, __first: str | int, __second: str | int | None = ...) -> None: ... # type: ignore[override] + def tag_raise(self, __first: str | int, __second: str | int | None = ...) -> None: ... + def tkraise(self, __first: str | int, __second: str | int | None = ...) -> None: ... # type: ignore[override] + def lift(self, __first: str | int, __second: str | int | None = ...) -> None: ... # type: ignore[override] def scale(self, *args) -> None: ... def scan_mark(self, x, y) -> None: ... def scan_dragto(self, x, y, gain: int = 10) -> None: ... @@ -1746,27 +1736,27 @@ class Checkbutton(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., - bitmap: _Bitmap = ..., + bg: str = ..., + bitmap: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., command: _ButtonCommand = ..., compound: _Compound = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., indicatoron: bool = ..., @@ -1789,7 +1779,7 @@ class Checkbutton(Widget): padx: _ScreenUnits = ..., pady: _ScreenUnits = ..., relief: _Relief = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., selectimage: _ImageSpec = ..., state: Literal["normal", "active", "disabled"] = ..., takefocus: _TakeFocusValue = ..., @@ -1807,25 +1797,25 @@ class Checkbutton(Widget): self, cnf: dict[str, Any] | None = None, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., - bitmap: _Bitmap = ..., + bg: str = ..., + bitmap: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., command: _ButtonCommand = ..., compound: _Compound = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., indicatoron: bool = ..., @@ -1837,7 +1827,7 @@ class Checkbutton(Widget): padx: _ScreenUnits = ..., pady: _ScreenUnits = ..., relief: _Relief = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., selectimage: _ImageSpec = ..., state: Literal["normal", "active", "disabled"] = ..., takefocus: _TakeFocusValue = ..., @@ -1865,24 +1855,24 @@ class Entry(Widget, XView): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., - disabledbackground: _Color = ..., - disabledforeground: _Color = ..., + disabledbackground: str = ..., + disabledforeground: str = ..., exportselection: bool = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + foreground: str = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., - insertbackground: _Color = ..., + insertbackground: str = ..., insertborderwidth: _ScreenUnits = ..., insertofftime: int = ..., insertontime: int = ..., @@ -1891,11 +1881,11 @@ class Entry(Widget, XView): invcmd: _EntryValidateCommand = ..., # same as invalidcommand justify: Literal["left", "center", "right"] = ..., name: str = ..., - readonlybackground: _Color = ..., + readonlybackground: str = ..., relief: _Relief = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., show: str = ..., state: Literal["normal", "disabled", "readonly"] = ..., takefocus: _TakeFocusValue = ..., @@ -1911,22 +1901,22 @@ class Entry(Widget, XView): self, cnf: dict[str, Any] | None = None, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., - disabledbackground: _Color = ..., - disabledforeground: _Color = ..., + disabledbackground: str = ..., + disabledforeground: str = ..., exportselection: bool = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + foreground: str = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., - insertbackground: _Color = ..., + insertbackground: str = ..., insertborderwidth: _ScreenUnits = ..., insertofftime: int = ..., insertontime: int = ..., @@ -1934,11 +1924,11 @@ class Entry(Widget, XView): invalidcommand: _EntryValidateCommand = ..., invcmd: _EntryValidateCommand = ..., justify: Literal["left", "center", "right"] = ..., - readonlybackground: _Color = ..., + readonlybackground: str = ..., relief: _Relief = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., show: str = ..., state: Literal["normal", "disabled", "readonly"] = ..., takefocus: _TakeFocusValue = ..., @@ -1976,11 +1966,11 @@ class Frame(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., class_: str = ..., # can't be changed with configure() @@ -1988,8 +1978,8 @@ class Frame(Widget): container: bool = ..., # can't be changed with configure() cursor: _Cursor = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., name: str = ..., padx: _ScreenUnits = ..., @@ -2004,15 +1994,15 @@ class Frame(Widget): self, cnf: dict[str, Any] | None = None, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., padx: _ScreenUnits = ..., pady: _ScreenUnits = ..., @@ -2028,26 +2018,26 @@ class Label(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., - bitmap: _Bitmap = ..., + bg: str = ..., + bitmap: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., compound: _Compound = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., justify: Literal["left", "center", "right"] = ..., @@ -2068,24 +2058,24 @@ class Label(Widget): self, cnf: dict[str, Any] | None = None, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., - bitmap: _Bitmap = ..., + bg: str = ..., + bitmap: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., compound: _Compound = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., justify: Literal["left", "center", "right"] = ..., @@ -2108,23 +2098,23 @@ class Listbox(Widget, XView, YView): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, activestyle: Literal["dotbox", "none", "underline"] = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., + disabledforeground: str = ..., exportselection: int = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: int = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., justify: Literal["left", "center", "right"] = ..., # There's no tkinter.ListVar, but seems like bare tkinter.Variable @@ -2139,9 +2129,9 @@ class Listbox(Widget, XView, YView): listvariable: Variable = ..., name: str = ..., relief: _Relief = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., # from listbox man page: "The value of the [selectmode] option may be # arbitrary, but the default bindings expect it to be ..." # @@ -2161,27 +2151,27 @@ class Listbox(Widget, XView, YView): cnf: dict[str, Any] | None = None, *, activestyle: Literal["dotbox", "none", "underline"] = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., + disabledforeground: str = ..., exportselection: bool = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: int = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., justify: Literal["left", "center", "right"] = ..., listvariable: Variable = ..., relief: _Relief = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., selectmode: str = ..., setgrid: bool = ..., state: Literal["normal", "disabled"] = ..., @@ -2221,25 +2211,25 @@ class Menu(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - activebackground: _Color = ..., + activebackground: str = ..., activeborderwidth: _ScreenUnits = ..., - activeforeground: _Color = ..., - background: _Color = ..., + activeforeground: str = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., name: str = ..., postcommand: Callable[[], object] | str = ..., relief: _Relief = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., takefocus: _TakeFocusValue = ..., tearoff: int = ..., # I guess tearoffcommand arguments are supposed to be widget objects, @@ -2254,22 +2244,22 @@ class Menu(Widget): self, cnf: dict[str, Any] | None = None, *, - activebackground: _Color = ..., + activebackground: str = ..., activeborderwidth: _ScreenUnits = ..., - activeforeground: _Color = ..., - background: _Color = ..., + activeforeground: str = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., postcommand: Callable[[], object] | str = ..., relief: _Relief = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., takefocus: _TakeFocusValue = ..., tearoff: bool = ..., tearoffcommand: Callable[[str, str], object] | str = ..., @@ -2281,22 +2271,22 @@ class Menu(Widget): config = configure def tk_popup(self, x: int, y: int, entry: str | int = "") -> None: ... def activate(self, index: str | int) -> None: ... - def add(self, itemType, cnf=..., **kw): ... # docstring says "Internal function." - def insert(self, index, itemType, cnf=..., **kw): ... # docstring says "Internal function." + def add(self, itemType, cnf={}, **kw): ... # docstring says "Internal function." + def insert(self, index, itemType, cnf={}, **kw): ... # docstring says "Internal function." def add_cascade( self, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, accelerator: str = ..., - activebackground: _Color = ..., - activeforeground: _Color = ..., - background: _Color = ..., - bitmap: _Bitmap = ..., + activebackground: str = ..., + activeforeground: str = ..., + background: str = ..., + bitmap: str = ..., columnbreak: int = ..., command: Callable[[], object] | str = ..., compound: _Compound = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., hidemargin: bool = ..., image: _ImageSpec = ..., label: str = ..., @@ -2306,25 +2296,25 @@ class Menu(Widget): ) -> None: ... def add_checkbutton( self, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, accelerator: str = ..., - activebackground: _Color = ..., - activeforeground: _Color = ..., - background: _Color = ..., - bitmap: _Bitmap = ..., + activebackground: str = ..., + activeforeground: str = ..., + background: str = ..., + bitmap: str = ..., columnbreak: int = ..., command: Callable[[], object] | str = ..., compound: _Compound = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., hidemargin: bool = ..., image: _ImageSpec = ..., indicatoron: bool = ..., label: str = ..., offvalue: Any = ..., onvalue: Any = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., selectimage: _ImageSpec = ..., state: Literal["normal", "active", "disabled"] = ..., underline: int = ..., @@ -2332,18 +2322,18 @@ class Menu(Widget): ) -> None: ... def add_command( self, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, accelerator: str = ..., - activebackground: _Color = ..., - activeforeground: _Color = ..., - background: _Color = ..., - bitmap: _Bitmap = ..., + activebackground: str = ..., + activeforeground: str = ..., + background: str = ..., + bitmap: str = ..., columnbreak: int = ..., command: Callable[[], object] | str = ..., compound: _Compound = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., hidemargin: bool = ..., image: _ImageSpec = ..., label: str = ..., @@ -2352,45 +2342,45 @@ class Menu(Widget): ) -> None: ... def add_radiobutton( self, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, accelerator: str = ..., - activebackground: _Color = ..., - activeforeground: _Color = ..., - background: _Color = ..., - bitmap: _Bitmap = ..., + activebackground: str = ..., + activeforeground: str = ..., + background: str = ..., + bitmap: str = ..., columnbreak: int = ..., command: Callable[[], object] | str = ..., compound: _Compound = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., hidemargin: bool = ..., image: _ImageSpec = ..., indicatoron: bool = ..., label: str = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., selectimage: _ImageSpec = ..., state: Literal["normal", "active", "disabled"] = ..., underline: int = ..., value: Any = ..., variable: Variable = ..., ) -> None: ... - def add_separator(self, cnf: dict[str, Any] | None = ..., *, background: _Color = ...) -> None: ... + def add_separator(self, cnf: dict[str, Any] | None = {}, *, background: str = ...) -> None: ... def insert_cascade( self, index: str | int, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, accelerator: str = ..., - activebackground: _Color = ..., - activeforeground: _Color = ..., - background: _Color = ..., - bitmap: _Bitmap = ..., + activebackground: str = ..., + activeforeground: str = ..., + background: str = ..., + bitmap: str = ..., columnbreak: int = ..., command: Callable[[], object] | str = ..., compound: _Compound = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., hidemargin: bool = ..., image: _ImageSpec = ..., label: str = ..., @@ -2401,25 +2391,25 @@ class Menu(Widget): def insert_checkbutton( self, index: str | int, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, accelerator: str = ..., - activebackground: _Color = ..., - activeforeground: _Color = ..., - background: _Color = ..., - bitmap: _Bitmap = ..., + activebackground: str = ..., + activeforeground: str = ..., + background: str = ..., + bitmap: str = ..., columnbreak: int = ..., command: Callable[[], object] | str = ..., compound: _Compound = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., hidemargin: bool = ..., image: _ImageSpec = ..., indicatoron: bool = ..., label: str = ..., offvalue: Any = ..., onvalue: Any = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., selectimage: _ImageSpec = ..., state: Literal["normal", "active", "disabled"] = ..., underline: int = ..., @@ -2428,18 +2418,18 @@ class Menu(Widget): def insert_command( self, index: str | int, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, accelerator: str = ..., - activebackground: _Color = ..., - activeforeground: _Color = ..., - background: _Color = ..., - bitmap: _Bitmap = ..., + activebackground: str = ..., + activeforeground: str = ..., + background: str = ..., + bitmap: str = ..., columnbreak: int = ..., command: Callable[[], object] | str = ..., compound: _Compound = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., hidemargin: bool = ..., image: _ImageSpec = ..., label: str = ..., @@ -2449,30 +2439,30 @@ class Menu(Widget): def insert_radiobutton( self, index: str | int, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, accelerator: str = ..., - activebackground: _Color = ..., - activeforeground: _Color = ..., - background: _Color = ..., - bitmap: _Bitmap = ..., + activebackground: str = ..., + activeforeground: str = ..., + background: str = ..., + bitmap: str = ..., columnbreak: int = ..., command: Callable[[], object] | str = ..., compound: _Compound = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., hidemargin: bool = ..., image: _ImageSpec = ..., indicatoron: bool = ..., label: str = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., selectimage: _ImageSpec = ..., state: Literal["normal", "active", "disabled"] = ..., underline: int = ..., value: Any = ..., variable: Variable = ..., ) -> None: ... - def insert_separator(self, index: str | int, cnf: dict[str, Any] | None = ..., *, background: _Color = ...) -> None: ... + def insert_separator(self, index: str | int, cnf: dict[str, Any] | None = {}, *, background: str = ...) -> None: ... def delete(self, index1: str | int, index2: str | int | None = None) -> None: ... def entrycget(self, index: str | int, option: str) -> Any: ... def entryconfigure( @@ -2491,27 +2481,27 @@ class Menubutton(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., - bitmap: _Bitmap = ..., + bg: str = ..., + bitmap: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., compound: _Compound = ..., cursor: _Cursor = ..., direction: Literal["above", "below", "left", "right", "flush"] = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., indicatoron: bool = ..., @@ -2534,25 +2524,25 @@ class Menubutton(Widget): self, cnf: dict[str, Any] | None = None, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., - bitmap: _Bitmap = ..., + bg: str = ..., + bitmap: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., compound: _Compound = ..., cursor: _Cursor = ..., direction: Literal["above", "below", "left", "right", "flush"] = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., indicatoron: bool = ..., @@ -2577,21 +2567,21 @@ class Message(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, anchor: _Anchor = ..., aspect: int = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + foreground: str = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., justify: Literal["left", "center", "right"] = ..., name: str = ..., @@ -2611,17 +2601,17 @@ class Message(Widget): *, anchor: _Anchor = ..., aspect: int = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + foreground: str = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., justify: Literal["left", "center", "right"] = ..., padx: _ScreenUnits = ..., @@ -2640,27 +2630,27 @@ class Radiobutton(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., - bitmap: _Bitmap = ..., + bg: str = ..., + bitmap: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., command: _ButtonCommand = ..., compound: _Compound = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., indicatoron: bool = ..., @@ -2671,7 +2661,7 @@ class Radiobutton(Widget): padx: _ScreenUnits = ..., pady: _ScreenUnits = ..., relief: _Relief = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., selectimage: _ImageSpec = ..., state: Literal["normal", "active", "disabled"] = ..., takefocus: _TakeFocusValue = ..., @@ -2690,25 +2680,25 @@ class Radiobutton(Widget): self, cnf: dict[str, Any] | None = None, *, - activebackground: _Color = ..., - activeforeground: _Color = ..., + activebackground: str = ..., + activeforeground: str = ..., anchor: _Anchor = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., - bitmap: _Bitmap = ..., + bg: str = ..., + bitmap: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., command: _ButtonCommand = ..., compound: _Compound = ..., cursor: _Cursor = ..., - disabledforeground: _Color = ..., - fg: _Color = ..., + disabledforeground: str = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., image: _ImageSpec = ..., indicatoron: bool = ..., @@ -2718,7 +2708,7 @@ class Radiobutton(Widget): padx: _ScreenUnits = ..., pady: _ScreenUnits = ..., relief: _Relief = ..., - selectcolor: _Color = ..., + selectcolor: str = ..., selectimage: _ImageSpec = ..., state: Literal["normal", "active", "disabled"] = ..., takefocus: _TakeFocusValue = ..., @@ -2744,12 +2734,12 @@ class Scale(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - activebackground: _Color = ..., - background: _Color = ..., + activebackground: str = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., bigincrement: float = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., @@ -2757,12 +2747,12 @@ class Scale(Widget): command: str | Callable[[str], object] = ..., cursor: _Cursor = ..., digits: int = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., from_: float = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., label: str = ..., length: _ScreenUnits = ..., @@ -2779,7 +2769,7 @@ class Scale(Widget): takefocus: _TakeFocusValue = ..., tickinterval: float = ..., to: float = ..., - troughcolor: _Color = ..., + troughcolor: str = ..., variable: IntVar | DoubleVar = ..., width: _ScreenUnits = ..., ) -> None: ... @@ -2788,22 +2778,22 @@ class Scale(Widget): self, cnf: dict[str, Any] | None = None, *, - activebackground: _Color = ..., - background: _Color = ..., + activebackground: str = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., bigincrement: float = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., command: str | Callable[[str], object] = ..., cursor: _Cursor = ..., digits: int = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., from_: float = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., label: str = ..., length: _ScreenUnits = ..., @@ -2819,7 +2809,7 @@ class Scale(Widget): takefocus: _TakeFocusValue = ..., tickinterval: float = ..., to: float = ..., - troughcolor: _Color = ..., + troughcolor: str = ..., variable: IntVar | DoubleVar = ..., width: _ScreenUnits = ..., ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ... @@ -2835,13 +2825,13 @@ class Scrollbar(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - activebackground: _Color = ..., + activebackground: str = ..., activerelief: _Relief = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., # There are many ways how the command may get called. Search for @@ -2851,8 +2841,8 @@ class Scrollbar(Widget): command: Callable[..., tuple[float, float] | None] | str = ..., cursor: _Cursor = ..., elementborderwidth: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., jump: bool = ..., name: str = ..., @@ -2861,7 +2851,7 @@ class Scrollbar(Widget): repeatdelay: int = ..., repeatinterval: int = ..., takefocus: _TakeFocusValue = ..., - troughcolor: _Color = ..., + troughcolor: str = ..., width: _ScreenUnits = ..., ) -> None: ... @overload @@ -2869,18 +2859,18 @@ class Scrollbar(Widget): self, cnf: dict[str, Any] | None = None, *, - activebackground: _Color = ..., + activebackground: str = ..., activerelief: _Relief = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., command: Callable[..., tuple[float, float] | None] | str = ..., cursor: _Cursor = ..., elementborderwidth: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., jump: bool = ..., orient: Literal["horizontal", "vertical"] = ..., @@ -2888,7 +2878,7 @@ class Scrollbar(Widget): repeatdelay: int = ..., repeatinterval: int = ..., takefocus: _TakeFocusValue = ..., - troughcolor: _Color = ..., + troughcolor: str = ..., width: _ScreenUnits = ..., ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ... @overload @@ -2907,30 +2897,30 @@ class Text(Widget, XView, YView): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, autoseparators: bool = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., blockcursor: bool = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., endline: int | Literal[""] = ..., exportselection: bool = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., # width is always int, but height is allowed to be ScreenUnits. # This doesn't make any sense to me, and this isn't documented. # The docs seem to say that both should be integers. height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., - inactiveselectbackground: _Color = ..., - insertbackground: _Color = ..., + inactiveselectbackground: str = ..., + insertbackground: str = ..., insertborderwidth: _ScreenUnits = ..., insertofftime: int = ..., insertontime: int = ..., @@ -2941,9 +2931,9 @@ class Text(Widget, XView, YView): padx: _ScreenUnits = ..., pady: _ScreenUnits = ..., relief: _Relief = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., setgrid: bool = ..., spacing1: _ScreenUnits = ..., spacing2: _ScreenUnits = ..., @@ -2966,24 +2956,24 @@ class Text(Widget, XView, YView): cnf: dict[str, Any] | None = None, *, autoseparators: bool = ..., - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., blockcursor: bool = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., endline: int | Literal[""] = ..., exportselection: bool = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., - inactiveselectbackground: _Color = ..., - insertbackground: _Color = ..., + inactiveselectbackground: str = ..., + insertbackground: str = ..., insertborderwidth: _ScreenUnits = ..., insertofftime: int = ..., insertontime: int = ..., @@ -2993,9 +2983,9 @@ class Text(Widget, XView, YView): padx: _ScreenUnits = ..., pady: _ScreenUnits = ..., relief: _Relief = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., setgrid: bool = ..., spacing1: _ScreenUnits = ..., spacing2: _ScreenUnits = ..., @@ -3078,7 +3068,7 @@ class Text(Widget, XView, YView): # TODO: image_* methods def image_cget(self, index, option): ... def image_configure(self, index, cnf: Incomplete | None = None, **kw): ... - def image_create(self, index, cnf=..., **kw): ... + def image_create(self, index, cnf={}, **kw): ... def image_names(self): ... def index(self, index: _TextIndex) -> str: ... def insert(self, index: _TextIndex, chars: str, *args: str | list[str] | tuple[str, ...]) -> None: ... @@ -3092,7 +3082,7 @@ class Text(Widget, XView, YView): def mark_next(self, index: _TextIndex) -> str | None: ... def mark_previous(self, index: _TextIndex) -> str | None: ... # **kw of peer_create is same as the kwargs of Text.__init__ - def peer_create(self, newPathName: str | Text, cnf: dict[str, Any] = ..., **kw) -> None: ... + def peer_create(self, newPathName: str | Text, cnf: dict[str, Any] = {}, **kw) -> None: ... def peer_names(self) -> tuple[_tkinter.Tcl_Obj, ...]: ... def replace(self, index1: _TextIndex, index2: _TextIndex, chars: str, *args: str | list[str] | tuple[str, ...]) -> None: ... def scan_mark(self, x: int, y: int) -> None: ... @@ -3132,33 +3122,33 @@ class Text(Widget, XView, YView): tagName: str, cnf: dict[str, Any] | None = None, *, - background: _Color = ..., - bgstipple: _Bitmap = ..., + background: str = ..., + bgstipple: str = ..., borderwidth: _ScreenUnits = ..., border: _ScreenUnits = ..., # alias for borderwidth elide: bool = ..., - fgstipple: _Bitmap = ..., + fgstipple: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., justify: Literal["left", "right", "center"] = ..., lmargin1: _ScreenUnits = ..., lmargin2: _ScreenUnits = ..., - lmargincolor: _Color = ..., + lmargincolor: str = ..., offset: _ScreenUnits = ..., overstrike: bool = ..., - overstrikefg: _Color = ..., + overstrikefg: str = ..., relief: _Relief = ..., rmargin: _ScreenUnits = ..., - rmargincolor: _Color = ..., - selectbackground: _Color = ..., - selectforeground: _Color = ..., + rmargincolor: str = ..., + selectbackground: str = ..., + selectforeground: str = ..., spacing1: _ScreenUnits = ..., spacing2: _ScreenUnits = ..., spacing3: _ScreenUnits = ..., tabs: Any = ..., # the exact type is kind of complicated, see manual page tabstyle: Literal["tabular", "wordprocessor"] = ..., underline: bool = ..., - underlinefg: _Color = ..., + underlinefg: str = ..., wrap: Literal["none", "char", "word"] = ..., # be careful with "none" vs None ) -> dict[str, tuple[str, str, str, Any, Any]] | None: ... @overload @@ -3181,7 +3171,7 @@ class Text(Widget, XView, YView): def window_cget(self, index, option): ... def window_configure(self, index, cnf: Incomplete | None = None, **kw): ... window_config = window_configure - def window_create(self, index, cnf=..., **kw) -> None: ... + def window_create(self, index, cnf={}, **kw) -> None: ... def window_names(self): ... def yview_pickplace(self, *what): ... # deprecated @@ -3222,7 +3212,7 @@ class Image(_Image): name: Incomplete tk: _tkinter.TkappType def __init__( - self, imgtype, name: Incomplete | None = None, cnf=..., master: Misc | _tkinter.TkappType | None = None, **kw + self, imgtype, name: Incomplete | None = None, cnf={}, master: Misc | _tkinter.TkappType | None = None, **kw ) -> None: ... def __del__(self) -> None: ... def __setitem__(self, key, value) -> None: ... @@ -3238,7 +3228,7 @@ class PhotoImage(Image, _PhotoImageLike): def __init__( self, name: str | None = None, - cnf: dict[str, Any] = ..., + cnf: dict[str, Any] = {}, master: Misc | _tkinter.TkappType | None = None, *, data: str | bytes = ..., # not same as data argument of put() @@ -3273,11 +3263,11 @@ class PhotoImage(Image, _PhotoImageLike): data: ( str | list[str] - | list[list[_Color]] - | list[tuple[_Color, ...]] + | list[list[str]] + | list[tuple[str, ...]] | tuple[str, ...] - | tuple[list[_Color], ...] - | tuple[tuple[_Color, ...], ...] + | tuple[list[str], ...] + | tuple[tuple[str, ...], ...] ), to: tuple[int, int] | None = None, ) -> None: ... @@ -3291,13 +3281,13 @@ class BitmapImage(Image, _BitmapImageLike): def __init__( self, name: Incomplete | None = None, - cnf: dict[str, Any] = ..., + cnf: dict[str, Any] = {}, master: Misc | _tkinter.TkappType | None = None, *, - background: _Color = ..., + background: str = ..., data: str | bytes = ..., file: StrOrBytesPath = ..., - foreground: _Color = ..., + foreground: str = ..., maskdata: str = ..., maskfile: StrOrBytesPath = ..., ) -> None: ... @@ -3309,34 +3299,34 @@ class Spinbox(Widget, XView): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - activebackground: _Color = ..., - background: _Color = ..., + activebackground: str = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., - buttonbackground: _Color = ..., + buttonbackground: str = ..., buttoncursor: _Cursor = ..., buttondownrelief: _Relief = ..., buttonuprelief: _Relief = ..., # percent substitutions don't seem to be supported, it's similar to Entry's validation stuff command: Callable[[], object] | str | list[str] | tuple[str, ...] = ..., cursor: _Cursor = ..., - disabledbackground: _Color = ..., - disabledforeground: _Color = ..., + disabledbackground: str = ..., + disabledforeground: str = ..., exportselection: bool = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., format: str = ..., from_: float = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., increment: float = ..., - insertbackground: _Color = ..., + insertbackground: str = ..., insertborderwidth: _ScreenUnits = ..., insertofftime: int = ..., insertontime: int = ..., @@ -3345,13 +3335,13 @@ class Spinbox(Widget, XView): invcmd: _EntryValidateCommand = ..., justify: Literal["left", "center", "right"] = ..., name: str = ..., - readonlybackground: _Color = ..., + readonlybackground: str = ..., relief: _Relief = ..., repeatdelay: int = ..., repeatinterval: int = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., state: Literal["normal", "disabled", "readonly"] = ..., takefocus: _TakeFocusValue = ..., textvariable: Variable = ..., @@ -3369,31 +3359,31 @@ class Spinbox(Widget, XView): self, cnf: dict[str, Any] | None = None, *, - activebackground: _Color = ..., - background: _Color = ..., + activebackground: str = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., - buttonbackground: _Color = ..., + buttonbackground: str = ..., buttoncursor: _Cursor = ..., buttondownrelief: _Relief = ..., buttonuprelief: _Relief = ..., command: Callable[[], object] | str | list[str] | tuple[str, ...] = ..., cursor: _Cursor = ..., - disabledbackground: _Color = ..., - disabledforeground: _Color = ..., + disabledbackground: str = ..., + disabledforeground: str = ..., exportselection: bool = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., format: str = ..., from_: float = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., increment: float = ..., - insertbackground: _Color = ..., + insertbackground: str = ..., insertborderwidth: _ScreenUnits = ..., insertofftime: int = ..., insertontime: int = ..., @@ -3401,13 +3391,13 @@ class Spinbox(Widget, XView): invalidcommand: _EntryValidateCommand = ..., invcmd: _EntryValidateCommand = ..., justify: Literal["left", "center", "right"] = ..., - readonlybackground: _Color = ..., + readonlybackground: str = ..., relief: _Relief = ..., repeatdelay: int = ..., repeatinterval: int = ..., - selectbackground: _Color = ..., + selectbackground: str = ..., selectborderwidth: _ScreenUnits = ..., - selectforeground: _Color = ..., + selectforeground: str = ..., state: Literal["normal", "disabled", "readonly"] = ..., takefocus: _TakeFocusValue = ..., textvariable: Variable = ..., @@ -3449,23 +3439,23 @@ class LabelFrame(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., class_: str = ..., # can't be changed with configure() colormap: Literal["new", ""] | Misc = ..., # can't be changed with configure() container: bool = ..., # undocumented, can't be changed with configure() cursor: _Cursor = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., # 'ne' and 'en' are valid labelanchors, but only 'ne' is a valid _Anchor. labelanchor: Literal["nw", "n", "ne", "en", "e", "es", "se", "s", "sw", "ws", "w", "wn"] = ..., @@ -3484,18 +3474,18 @@ class LabelFrame(Widget): self, cnf: dict[str, Any] | None = None, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., - fg: _Color = ..., + fg: str = ..., font: _FontDescription = ..., - foreground: _Color = ..., + foreground: str = ..., height: _ScreenUnits = ..., - highlightbackground: _Color = ..., - highlightcolor: _Color = ..., + highlightbackground: str = ..., + highlightcolor: str = ..., highlightthickness: _ScreenUnits = ..., labelanchor: Literal["nw", "n", "ne", "en", "e", "es", "se", "s", "sw", "ws", "w", "wn"] = ..., labelwidget: Misc = ..., @@ -3514,11 +3504,11 @@ class PanedWindow(Widget): def __init__( self, master: Misc | None = None, - cnf: dict[str, Any] | None = ..., + cnf: dict[str, Any] | None = {}, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., @@ -3528,7 +3518,7 @@ class PanedWindow(Widget): name: str = ..., opaqueresize: bool = ..., orient: Literal["horizontal", "vertical"] = ..., - proxybackground: _Color = ..., + proxybackground: str = ..., proxyborderwidth: _ScreenUnits = ..., proxyrelief: _Relief = ..., relief: _Relief = ..., @@ -3544,9 +3534,9 @@ class PanedWindow(Widget): self, cnf: dict[str, Any] | None = None, *, - background: _Color = ..., + background: str = ..., bd: _ScreenUnits = ..., - bg: _Color = ..., + bg: str = ..., border: _ScreenUnits = ..., borderwidth: _ScreenUnits = ..., cursor: _Cursor = ..., @@ -3555,7 +3545,7 @@ class PanedWindow(Widget): height: _ScreenUnits = ..., opaqueresize: bool = ..., orient: Literal["horizontal", "vertical"] = ..., - proxybackground: _Color = ..., + proxybackground: str = ..., proxyborderwidth: _ScreenUnits = ..., proxyrelief: _Relief = ..., relief: _Relief = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/colorchooser.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/colorchooser.pyi index 4300d94f5..09bc8cbb4 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/colorchooser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/colorchooser.pyi @@ -1,5 +1,5 @@ import sys -from tkinter import Misc, _Color +from tkinter import Misc from tkinter.commondialog import Dialog from typing import ClassVar @@ -11,10 +11,10 @@ class Chooser(Dialog): if sys.version_info >= (3, 9): def askcolor( - color: str | bytes | None = None, *, initialcolor: _Color = ..., parent: Misc = ..., title: str = ... + color: str | bytes | None = None, *, initialcolor: str = ..., parent: Misc = ..., title: str = ... ) -> tuple[None, None] | tuple[tuple[int, int, int], str]: ... else: def askcolor( - color: str | bytes | None = None, *, initialcolor: _Color = ..., parent: Misc = ..., title: str = ... + color: str | bytes | None = None, *, initialcolor: str = ..., parent: Misc = ..., title: str = ... ) -> tuple[None, None] | tuple[tuple[float, float, float], str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/dialog.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/dialog.pyi index 8825188c7..7bc77ac6d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/dialog.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/dialog.pyi @@ -12,5 +12,5 @@ DIALOG_ICON: str class Dialog(Widget): widgetName: str num: int - def __init__(self, master: Incomplete | None = None, cnf: Mapping[str, Any] = ..., **kw: Incomplete) -> None: ... + def __init__(self, master: Incomplete | None = None, cnf: Mapping[str, Any] = {}, **kw: Incomplete) -> None: ... def destroy(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/simpledialog.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/simpledialog.pyi index 2c57cce73..45dce21a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/simpledialog.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/simpledialog.pyi @@ -14,7 +14,7 @@ class SimpleDialog: self, master: Misc | None, text: str = "", - buttons: list[str] = ..., + buttons: list[str] = [], default: int | None = None, cancel: int | None = None, title: str | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/tix.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/tix.pyi index 5dd6f040f..672c5ab67 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/tix.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/tix.pyi @@ -54,117 +54,117 @@ class TixWidget(tkinter.Widget): master: tkinter.Misc | None = None, widgetName: str | None = None, static_options: list[str] | None = None, - cnf: dict[str, Any] = ..., - kw: dict[str, Any] = ..., + cnf: dict[str, Any] = {}, + kw: dict[str, Any] = {}, ) -> None: ... def __getattr__(self, name: str): ... def set_silent(self, value: str) -> None: ... def subwidget(self, name: str) -> tkinter.Widget: ... def subwidgets_all(self) -> list[tkinter.Widget]: ... def config_all(self, option: Any, value: Any) -> None: ... - def image_create(self, imgtype: str, cnf: dict[str, Any] = ..., master: tkinter.Widget | None = None, **kw) -> None: ... + def image_create(self, imgtype: str, cnf: dict[str, Any] = {}, master: tkinter.Widget | None = None, **kw) -> None: ... def image_delete(self, imgname: str) -> None: ... class TixSubWidget(TixWidget): def __init__(self, master: tkinter.Widget, name: str, destroy_physically: int = 1, check_intermediate: int = 1) -> None: ... class DisplayStyle: - def __init__(self, itemtype: str, cnf: dict[str, Any] = ..., *, master: tkinter.Widget | None = None, **kw) -> None: ... + def __init__(self, itemtype: str, cnf: dict[str, Any] = {}, *, master: tkinter.Widget | None = None, **kw) -> None: ... def __getitem__(self, key: str): ... def __setitem__(self, key: str, value: Any) -> None: ... def delete(self) -> None: ... - def config(self, cnf: dict[str, Any] = ..., **kw): ... + def config(self, cnf: dict[str, Any] = {}, **kw): ... class Balloon(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... - def bind_widget(self, widget: tkinter.Widget, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... + def bind_widget(self, widget: tkinter.Widget, cnf: dict[str, Any] = {}, **kw) -> None: ... def unbind_widget(self, widget: tkinter.Widget) -> None: ... class ButtonBox(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... - def add(self, name: str, cnf: dict[str, Any] = ..., **kw) -> tkinter.Widget: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... + def add(self, name: str, cnf: dict[str, Any] = {}, **kw) -> tkinter.Widget: ... def invoke(self, name: str) -> None: ... class ComboBox(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... def add_history(self, str: str) -> None: ... def append_history(self, str: str) -> None: ... def insert(self, index: int, str: str) -> None: ... def pick(self, index: int) -> None: ... class Control(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... def decrement(self) -> None: ... def increment(self) -> None: ... def invoke(self) -> None: ... class LabelEntry(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... class LabelFrame(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... class Meter(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... class OptionMenu(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... - def add_command(self, name: str, cnf: dict[str, Any] = ..., **kw) -> None: ... - def add_separator(self, name: str, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... + def add_command(self, name: str, cnf: dict[str, Any] = {}, **kw) -> None: ... + def add_separator(self, name: str, cnf: dict[str, Any] = {}, **kw) -> None: ... def delete(self, name: str) -> None: ... def disable(self, name: str) -> None: ... def enable(self, name: str) -> None: ... class PopupMenu(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... def bind_widget(self, widget: tkinter.Widget) -> None: ... def unbind_widget(self, widget: tkinter.Widget) -> None: ... def post_widget(self, widget: tkinter.Widget, x: int, y: int) -> None: ... class Select(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... - def add(self, name: str, cnf: dict[str, Any] = ..., **kw) -> tkinter.Widget: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... + def add(self, name: str, cnf: dict[str, Any] = {}, **kw) -> tkinter.Widget: ... def invoke(self, name: str) -> None: ... class StdButtonBox(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... def invoke(self, name: str) -> None: ... class DirList(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... def chdir(self, dir: str) -> None: ... class DirTree(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... def chdir(self, dir: str) -> None: ... class DirSelectDialog(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... def popup(self) -> None: ... def popdown(self) -> None: ... class DirSelectBox(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... class ExFileSelectBox(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... def filter(self) -> None: ... def invoke(self) -> None: ... class FileSelectBox(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... def apply_filter(self) -> None: ... def invoke(self) -> None: ... class FileEntry(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... def invoke(self) -> None: ... def file_dialog(self) -> None: ... class HList(TixWidget, tkinter.XView, tkinter.YView): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... - def add(self, entry: str, cnf: dict[str, Any] = ..., **kw) -> tkinter.Widget: ... - def add_child(self, parent: str | None = None, cnf: dict[str, Any] = ..., **kw) -> tkinter.Widget: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... + def add(self, entry: str, cnf: dict[str, Any] = {}, **kw) -> tkinter.Widget: ... + def add_child(self, parent: str | None = None, cnf: dict[str, Any] = {}, **kw) -> tkinter.Widget: ... def anchor_set(self, entry: str) -> None: ... def anchor_clear(self) -> None: ... # FIXME: Overload, certain combos return, others don't @@ -177,16 +177,16 @@ class HList(TixWidget, tkinter.XView, tkinter.YView): def dragsite_clear(self) -> None: ... def dropsite_set(self, index: int) -> None: ... def dropsite_clear(self) -> None: ... - def header_create(self, col: int, cnf: dict[str, Any] = ..., **kw) -> None: ... - def header_configure(self, col: int, cnf: dict[str, Any] = ..., **kw) -> Incomplete | None: ... + def header_create(self, col: int, cnf: dict[str, Any] = {}, **kw) -> None: ... + def header_configure(self, col: int, cnf: dict[str, Any] = {}, **kw) -> Incomplete | None: ... def header_cget(self, col: int, opt): ... def header_exists(self, col: int) -> bool: ... def header_exist(self, col: int) -> bool: ... def header_delete(self, col: int) -> None: ... def header_size(self, col: int) -> int: ... def hide_entry(self, entry: str) -> None: ... - def indicator_create(self, entry: str, cnf: dict[str, Any] = ..., **kw) -> None: ... - def indicator_configure(self, entry: str, cnf: dict[str, Any] = ..., **kw) -> Incomplete | None: ... + def indicator_create(self, entry: str, cnf: dict[str, Any] = {}, **kw) -> None: ... + def indicator_configure(self, entry: str, cnf: dict[str, Any] = {}, **kw) -> Incomplete | None: ... def indicator_cget(self, entry: str, opt): ... def indicator_exists(self, entry: str) -> bool: ... def indicator_delete(self, entry: str) -> None: ... @@ -204,21 +204,21 @@ class HList(TixWidget, tkinter.XView, tkinter.YView): def info_prev(self, entry: str) -> str: ... def info_selection(self) -> tuple[str, ...]: ... def item_cget(self, entry: str, col: int, opt): ... - def item_configure(self, entry: str, col: int, cnf: dict[str, Any] = ..., **kw) -> Incomplete | None: ... - def item_create(self, entry: str, col: int, cnf: dict[str, Any] = ..., **kw) -> None: ... + def item_configure(self, entry: str, col: int, cnf: dict[str, Any] = {}, **kw) -> Incomplete | None: ... + def item_create(self, entry: str, col: int, cnf: dict[str, Any] = {}, **kw) -> None: ... def item_exists(self, entry: str, col: int) -> bool: ... def item_delete(self, entry: str, col: int) -> None: ... def entrycget(self, entry: str, opt): ... - def entryconfigure(self, entry: str, cnf: dict[str, Any] = ..., **kw) -> Incomplete | None: ... + def entryconfigure(self, entry: str, cnf: dict[str, Any] = {}, **kw) -> Incomplete | None: ... def nearest(self, y: int) -> str: ... def see(self, entry: str) -> None: ... - def selection_clear(self, cnf: dict[str, Any] = ..., **kw) -> None: ... + def selection_clear(self, cnf: dict[str, Any] = {}, **kw) -> None: ... def selection_includes(self, entry: str) -> bool: ... def selection_set(self, first: str, last: str | None = None) -> None: ... def show_entry(self, entry: str) -> None: ... class CheckList(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... def autosetmode(self) -> None: ... def close(self, entrypath: str) -> None: ... def getmode(self, entrypath: str) -> str: ... @@ -228,7 +228,7 @@ class CheckList(TixWidget): def setstatus(self, entrypath: str, mode: str = "on") -> None: ... class Tree(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... def autosetmode(self) -> None: ... def close(self, entrypath: str) -> None: ... def getmode(self, entrypath: str) -> str: ... @@ -236,7 +236,7 @@ class Tree(TixWidget): def setmode(self, entrypath: str, mode: str = "none") -> None: ... class TList(TixWidget, tkinter.XView, tkinter.YView): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... def active_set(self, index: int) -> None: ... def active_clear(self) -> None: ... def anchor_set(self, index: int) -> None: ... @@ -246,7 +246,7 @@ class TList(TixWidget, tkinter.XView, tkinter.YView): def dragsite_clear(self) -> None: ... def dropsite_set(self, index: int) -> None: ... def dropsite_clear(self) -> None: ... - def insert(self, index: int, cnf: dict[str, Any] = ..., **kw) -> None: ... + def insert(self, index: int, cnf: dict[str, Any] = {}, **kw) -> None: ... def info_active(self) -> int: ... def info_anchor(self) -> int: ... def info_down(self, index: int) -> int: ... @@ -257,29 +257,29 @@ class TList(TixWidget, tkinter.XView, tkinter.YView): def info_up(self, index: int) -> int: ... def nearest(self, x: int, y: int) -> int: ... def see(self, index: int) -> None: ... - def selection_clear(self, cnf: dict[str, Any] = ..., **kw) -> None: ... + def selection_clear(self, cnf: dict[str, Any] = {}, **kw) -> None: ... def selection_includes(self, index: int) -> bool: ... def selection_set(self, first: int, last: int | None = None) -> None: ... class PanedWindow(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... - def add(self, name: str, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... + def add(self, name: str, cnf: dict[str, Any] = {}, **kw) -> None: ... def delete(self, name: str) -> None: ... def forget(self, name: str) -> None: ... # type: ignore[override] def panecget(self, entry: str, opt): ... - def paneconfigure(self, entry: str, cnf: dict[str, Any] = ..., **kw) -> Incomplete | None: ... + def paneconfigure(self, entry: str, cnf: dict[str, Any] = {}, **kw) -> Incomplete | None: ... def panes(self) -> list[tkinter.Widget]: ... class ListNoteBook(TixWidget): - def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = ..., **kw) -> None: ... - def add(self, name: str, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None, cnf: dict[str, Any] = {}, **kw) -> None: ... + def add(self, name: str, cnf: dict[str, Any] = {}, **kw) -> None: ... def page(self, name: str) -> tkinter.Widget: ... def pages(self) -> list[tkinter.Widget]: ... def raise_page(self, name: str) -> None: ... class NoteBook(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... - def add(self, name: str, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... + def add(self, name: str, cnf: dict[str, Any] = {}, **kw) -> None: ... def delete(self, name: str) -> None: ... def page(self, name: str) -> tkinter.Widget: ... def pages(self) -> list[tkinter.Widget]: ... @@ -287,12 +287,12 @@ class NoteBook(TixWidget): def raised(self) -> bool: ... class InputOnly(TixWidget): - def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = ..., **kw) -> None: ... + def __init__(self, master: tkinter.Widget | None = None, cnf: dict[str, Any] = {}, **kw) -> None: ... class Form: def __setitem__(self, key: str, value: Any) -> None: ... - def config(self, cnf: dict[str, Any] = ..., **kw) -> None: ... - def form(self, cnf: dict[str, Any] = ..., **kw) -> None: ... + def config(self, cnf: dict[str, Any] = {}, **kw) -> None: ... + def form(self, cnf: dict[str, Any] = {}, **kw) -> None: ... def check(self) -> bool: ... def forget(self) -> None: ... def grid(self, xsize: int = 0, ysize: int = 0) -> tuple[int, int] | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi index 61ebc0e27..009fdf51a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi @@ -177,12 +177,12 @@ class Entry(Widget, tkinter.Entry): master: tkinter.Misc | None = None, widget: str | None = None, *, - background: tkinter._Color = ..., # undocumented + background: str = ..., # undocumented class_: str = ..., cursor: tkinter._Cursor = ..., exportselection: bool = ..., font: _FontDescription = ..., - foreground: tkinter._Color = ..., + foreground: str = ..., invalidcommand: tkinter._EntryValidateCommand = ..., justify: Literal["left", "center", "right"] = ..., name: str = ..., @@ -201,11 +201,11 @@ class Entry(Widget, tkinter.Entry): self, cnf: dict[str, Any] | None = None, *, - background: tkinter._Color = ..., + background: str = ..., cursor: tkinter._Cursor = ..., exportselection: bool = ..., font: _FontDescription = ..., - foreground: tkinter._Color = ..., + foreground: str = ..., invalidcommand: tkinter._EntryValidateCommand = ..., justify: Literal["left", "center", "right"] = ..., show: str = ..., @@ -226,11 +226,11 @@ class Entry(Widget, tkinter.Entry): self, cnf: dict[str, Any] | None = None, *, - background: tkinter._Color = ..., + background: str = ..., cursor: tkinter._Cursor = ..., exportselection: bool = ..., font: _FontDescription = ..., - foreground: tkinter._Color = ..., + foreground: str = ..., invalidcommand: tkinter._EntryValidateCommand = ..., justify: Literal["left", "center", "right"] = ..., show: str = ..., @@ -254,12 +254,12 @@ class Combobox(Entry): self, master: tkinter.Misc | None = None, *, - background: tkinter._Color = ..., # undocumented + background: str = ..., # undocumented class_: str = ..., cursor: tkinter._Cursor = ..., exportselection: bool = ..., font: _FontDescription = ..., # undocumented - foreground: tkinter._Color = ..., # undocumented + foreground: str = ..., # undocumented height: int = ..., invalidcommand: tkinter._EntryValidateCommand = ..., # undocumented justify: Literal["left", "center", "right"] = ..., @@ -281,11 +281,11 @@ class Combobox(Entry): self, cnf: dict[str, Any] | None = None, *, - background: tkinter._Color = ..., + background: str = ..., cursor: tkinter._Cursor = ..., exportselection: bool = ..., font: _FontDescription = ..., - foreground: tkinter._Color = ..., + foreground: str = ..., height: int = ..., invalidcommand: tkinter._EntryValidateCommand = ..., justify: Literal["left", "center", "right"] = ..., @@ -309,11 +309,11 @@ class Combobox(Entry): self, cnf: dict[str, Any] | None = None, *, - background: tkinter._Color = ..., + background: str = ..., cursor: tkinter._Cursor = ..., exportselection: bool = ..., font: _FontDescription = ..., - foreground: tkinter._Color = ..., + foreground: str = ..., height: int = ..., invalidcommand: tkinter._EntryValidateCommand = ..., justify: Literal["left", "center", "right"] = ..., @@ -376,14 +376,14 @@ class Label(Widget): master: tkinter.Misc | None = None, *, anchor: tkinter._Anchor = ..., - background: tkinter._Color = ..., + background: str = ..., border: tkinter._ScreenUnits = ..., # alias for borderwidth borderwidth: tkinter._ScreenUnits = ..., # undocumented class_: str = ..., compound: _TtkCompound = ..., cursor: tkinter._Cursor = ..., font: _FontDescription = ..., - foreground: tkinter._Color = ..., + foreground: str = ..., image: tkinter._ImageSpec = ..., justify: Literal["left", "center", "right"] = ..., name: str = ..., @@ -404,13 +404,13 @@ class Label(Widget): cnf: dict[str, Any] | None = None, *, anchor: tkinter._Anchor = ..., - background: tkinter._Color = ..., + background: str = ..., border: tkinter._ScreenUnits = ..., borderwidth: tkinter._ScreenUnits = ..., compound: _TtkCompound = ..., cursor: tkinter._Cursor = ..., font: _FontDescription = ..., - foreground: tkinter._Color = ..., + foreground: str = ..., image: tkinter._ImageSpec = ..., justify: Literal["left", "center", "right"] = ..., padding: _Padding = ..., @@ -865,13 +865,13 @@ class Spinbox(Entry): self, master: tkinter.Misc | None = None, *, - background: tkinter._Color = ..., # undocumented + background: str = ..., # undocumented class_: str = ..., command: Callable[[], object] | str | list[str] | tuple[str, ...] = ..., cursor: tkinter._Cursor = ..., exportselection: bool = ..., # undocumented font: _FontDescription = ..., # undocumented - foreground: tkinter._Color = ..., # undocumented + foreground: str = ..., # undocumented format: str = ..., from_: float = ..., increment: float = ..., @@ -896,12 +896,12 @@ class Spinbox(Entry): self, cnf: dict[str, Any] | None = None, *, - background: tkinter._Color = ..., + background: str = ..., command: Callable[[], object] | str | list[str] | tuple[str, ...] = ..., cursor: tkinter._Cursor = ..., exportselection: bool = ..., font: _FontDescription = ..., - foreground: tkinter._Color = ..., + foreground: str = ..., format: str = ..., from_: float = ..., increment: float = ..., @@ -934,8 +934,8 @@ class _TreeviewItemDict(TypedDict): class _TreeviewTagDict(TypedDict): # There is also 'text' and 'anchor', but they don't seem to do anything, using them is likely a bug - foreground: tkinter._Color - background: tkinter._Color + foreground: str + background: str font: _FontDescription image: str # not wrapped in list :D @@ -1130,7 +1130,7 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): @overload def tag_bind(self, tagname: str, *, callback: str) -> None: ... @overload - def tag_configure(self, tagname: str, option: Literal["foreground", "background"]) -> tkinter._Color: ... + def tag_configure(self, tagname: str, option: Literal["foreground", "background"]) -> str: ... @overload def tag_configure(self, tagname: str, option: Literal["font"]) -> _FontDescription: ... @overload @@ -1142,8 +1142,8 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): option: None = None, *, # There is also 'text' and 'anchor', but they don't seem to do anything, using them is likely a bug - foreground: tkinter._Color = ..., - background: tkinter._Color = ..., + foreground: str = ..., + background: str = ..., font: _FontDescription = ..., image: tkinter._ImageSpec = ..., ) -> _TreeviewTagDict | Any: ... # can be None but annoying to check diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/trace.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/trace.pyi index f79b38f1c..3764a5b06 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/trace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/trace.pyi @@ -34,8 +34,8 @@ class Trace: trace: int = 1, countfuncs: int = 0, countcallers: int = 0, - ignoremods: Sequence[str] = ..., - ignoredirs: Sequence[str] = ..., + ignoremods: Sequence[str] = (), + ignoredirs: Sequence[str] = (), infile: StrPath | None = None, outfile: StrPath | None = None, timing: bool = False, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/turtle.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/turtle.pyi index 8017c8290..5df3e4b90 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/turtle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/turtle.pyi @@ -405,7 +405,9 @@ class RawTurtle(TPen, TNavigator): def begin_fill(self) -> None: ... def end_fill(self) -> None: ... def dot(self, size: int | None = None, *color: _Color) -> None: ... - def write(self, arg: object, move: bool = False, align: str = "left", font: tuple[str, int, str] = ...) -> None: ... + def write( + self, arg: object, move: bool = False, align: str = "left", font: tuple[str, int, str] = ("Arial", 8, "normal") + ) -> None: ... def begin_poly(self) -> None: ... def end_poly(self) -> None: ... def get_poly(self) -> _PolygonCoords | None: ... @@ -674,7 +676,7 @@ def filling() -> bool: ... def begin_fill() -> None: ... def end_fill() -> None: ... def dot(size: int | None = None, *color: _Color) -> None: ... -def write(arg: object, move: bool = False, align: str = "left", font: tuple[str, int, str] = ...) -> None: ... +def write(arg: object, move: bool = False, align: str = "left", font: tuple[str, int, str] = ("Arial", 8, "normal")) -> None: ... def begin_poly() -> None: ... def end_poly() -> None: ... def get_poly() -> _PolygonCoords | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi index 2b3e58b8a..22acb5a2f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi @@ -554,13 +554,13 @@ class MemberDescriptorType: def new_class( name: str, - bases: Iterable[object] = ..., + bases: Iterable[object] = (), kwds: dict[str, Any] | None = None, exec_body: Callable[[dict[str, Any]], object] | None = None, ) -> type: ... def resolve_bases(bases: Iterable[object]) -> tuple[Any, ...]: ... def prepare_class( - name: str, bases: tuple[type, ...] = ..., kwds: dict[str, Any] | None = None + name: str, bases: tuple[type, ...] = (), kwds: dict[str, Any] | None = None ) -> tuple[type, dict[str, Any], dict[str, Any]]: ... # Actually a different type, but `property` is special and we want that too. diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi index 0a8de1a7b..6fc677dcb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi @@ -167,20 +167,14 @@ _T = TypeVar("_T") def overload(func: _F) -> _F: ... -# Unlike the vast majority module-level objects in stub files, -# these `_SpecialForm` objects in typing need the default value `= ...`, -# due to the fact that they are used elswhere in the same file. -# Otherwise, flake8 erroneously flags them as undefined. -# `_SpecialForm` objects in typing.py that are not used elswhere in the same file -# do not need the default value assignment. -Union: _SpecialForm = ... -Generic: _SpecialForm = ... +Union: _SpecialForm +Generic: _SpecialForm # Protocol is only present in 3.8 and later, but mypy needs it unconditionally -Protocol: _SpecialForm = ... -Callable: _SpecialForm = ... -Type: _SpecialForm = ... -NoReturn: _SpecialForm = ... -ClassVar: _SpecialForm = ... +Protocol: _SpecialForm +Callable: _SpecialForm +Type: _SpecialForm +NoReturn: _SpecialForm +ClassVar: _SpecialForm Optional: _SpecialForm Tuple: _SpecialForm @@ -193,7 +187,7 @@ if sys.version_info >= (3, 8): if sys.version_info >= (3, 11): Self: _SpecialForm - Never: _SpecialForm = ... + Never: _SpecialForm Unpack: _SpecialForm Required: _SpecialForm NotRequired: _SpecialForm @@ -798,7 +792,7 @@ if sys.version_info >= (3, 11): order_default: bool = False, kw_only_default: bool = False, frozen_default: bool = False, # on 3.11, runtime accepts it as part of kwargs - field_specifiers: tuple[type[Any] | Callable[..., Any], ...] = ..., + field_specifiers: tuple[type[Any] | Callable[..., Any], ...] = (), **kwargs: Any, ) -> IdentityFunction: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi index d8cf4e800..5437979c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi @@ -113,7 +113,7 @@ class _SpecialForm: # typing.Protocol and typing_extensions.Protocol so they can properly # warn users about potential runtime exceptions when using typing.Protocol # on older versions of Python. -Protocol: _SpecialForm = ... +Protocol: _SpecialForm def runtime_checkable(cls: _TC) -> _TC: ... @@ -227,7 +227,7 @@ if sys.version_info >= (3, 11): ) else: Self: _SpecialForm - Never: _SpecialForm = ... + Never: _SpecialForm def reveal_type(__obj: _T) -> _T: ... def assert_never(__arg: Never) -> Never: ... def assert_type(__val: _T, __typ: Any) -> _T: ... @@ -245,7 +245,7 @@ else: order_default: bool = False, kw_only_default: bool = False, frozen_default: bool = False, - field_specifiers: tuple[type[Any] | Callable[..., Any], ...] = ..., + field_specifiers: tuple[type[Any] | Callable[..., Any], ...] = (), **kwargs: object, ) -> IdentityFunction: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi index 953480549..a054d3c4c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi @@ -67,14 +67,14 @@ _CallValue: TypeAlias = str | tuple[Any, ...] | Mapping[str, Any] | _ArgsKwargs class _Call(tuple[Any, ...]): def __new__( - cls, value: _CallValue = ..., name: str | None = "", parent: Any | None = None, two: bool = False, from_kall: bool = True + cls, value: _CallValue = (), name: str | None = "", parent: Any | None = None, two: bool = False, from_kall: bool = True ) -> Self: ... name: Any parent: Any from_kall: Any def __init__( self, - value: _CallValue = ..., + value: _CallValue = (), name: str | None = None, parent: Any | None = None, two: bool = False, @@ -259,7 +259,7 @@ class _patch_dict: in_dict: Any values: Any clear: Any - def __init__(self, in_dict: Any, values: Any = ..., clear: Any = False, **kwargs: Any) -> None: ... + def __init__(self, in_dict: Any, values: Any = (), clear: Any = False, **kwargs: Any) -> None: ... def __call__(self, f: Any) -> Any: ... if sys.version_info >= (3, 10): def decorate_callable(self, f: _F) -> _F: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/suite.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/suite.pyi index f6b8ef003..c10cbc75d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/suite.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/suite.pyi @@ -8,7 +8,7 @@ _TestType: TypeAlias = unittest.case.TestCase | TestSuite class BaseTestSuite(Iterable[_TestType]): _tests: list[unittest.case.TestCase] _removed_tests: int - def __init__(self, tests: Iterable[_TestType] = ...) -> None: ... + def __init__(self, tests: Iterable[_TestType] = ()) -> None: ... def __call__(self, result: unittest.result.TestResult) -> unittest.result.TestResult: ... def addTest(self, test: _TestType) -> None: ... def addTests(self, tests: Iterable[_TestType]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/urllib/parse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/urllib/parse.pyi index 8e179ca76..116754091 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/urllib/parse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/urllib/parse.pyi @@ -196,14 +196,15 @@ else: url: bytes | bytearray | None, scheme: bytes | bytearray | None | Literal[""] = "", allow_fragments: bool = True ) -> SplitResultBytes: ... +# Requires an iterable of length 6 @overload -def urlunparse( - components: tuple[AnyStr | None, AnyStr | None, AnyStr | None, AnyStr | None, AnyStr | None, AnyStr | None] -) -> AnyStr: ... +def urlunparse(components: Iterable[None]) -> Literal[b""]: ... @overload -def urlunparse(components: Sequence[AnyStr | None]) -> AnyStr: ... +def urlunparse(components: Iterable[AnyStr | None]) -> AnyStr: ... + +# Requires an iterable of length 5 @overload -def urlunsplit(components: tuple[AnyStr | None, AnyStr | None, AnyStr | None, AnyStr | None, AnyStr | None]) -> AnyStr: ... +def urlunsplit(components: Iterable[None]) -> Literal[b""]: ... @overload -def urlunsplit(components: Sequence[AnyStr | None]) -> AnyStr: ... +def urlunsplit(components: Iterable[AnyStr | None]) -> AnyStr: ... def unwrap(url: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/urllib/request.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/urllib/request.pyi index 09ce27961..8f99c5837 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/urllib/request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/urllib/request.pyi @@ -102,7 +102,7 @@ class Request: self, url: str, data: _DataType = None, - headers: MutableMapping[str, str] = ..., + headers: MutableMapping[str, str] = {}, origin_req_host: str | None = None, unverifiable: bool = False, method: str | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi index 249257783..935e44e80 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi @@ -73,9 +73,20 @@ else: def getnode(*, getters: Unused = None) -> int: ... # undocumented def uuid1(node: _Int | None = None, clock_seq: _Int | None = None) -> UUID: ... -def uuid3(namespace: UUID, name: str) -> UUID: ... + +if sys.version_info >= (3, 12): + def uuid3(namespace: UUID, name: str | bytes) -> UUID: ... + +else: + def uuid3(namespace: UUID, name: str) -> UUID: ... + def uuid4() -> UUID: ... -def uuid5(namespace: UUID, name: str) -> UUID: ... + +if sys.version_info >= (3, 12): + def uuid5(namespace: UUID, name: str | bytes) -> UUID: ... + +else: + def uuid5(namespace: UUID, name: str) -> UUID: ... NAMESPACE_DNS: UUID NAMESPACE_URL: UUID diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi index 1e0aac814..0bbab52f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi @@ -53,7 +53,7 @@ class WeakValueDictionary(MutableMapping[_KT, _VT]): def __init__(self: WeakValueDictionary[_KT, _VT], __other: Mapping[_KT, _VT] | Iterable[tuple[_KT, _VT]]) -> None: ... @overload def __init__( - self: WeakValueDictionary[str, _VT], __other: Mapping[str, _VT] | Iterable[tuple[str, _VT]] = ..., **kwargs: _VT + self: WeakValueDictionary[str, _VT], __other: Mapping[str, _VT] | Iterable[tuple[str, _VT]] = (), **kwargs: _VT ) -> None: ... def __len__(self) -> int: ... def __getitem__(self, key: _KT) -> _VT: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/domreg.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/domreg.pyi index a46d3ff09..346a4bf63 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/domreg.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/domreg.pyi @@ -5,6 +5,4 @@ well_known_implementations: dict[str, str] registered: dict[str, Callable[[], DOMImplementation]] def registerDOMImplementation(name: str, factory: Callable[[], DOMImplementation]) -> None: ... -def getDOMImplementation( - name: str | None = None, features: str | Iterable[tuple[str, str | None]] = ... -) -> DOMImplementation: ... +def getDOMImplementation(name: str | None = None, features: str | Iterable[tuple[str, str | None]] = ()) -> DOMImplementation: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minicompat.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minicompat.pyi index 4507b3d98..4d83bef02 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minicompat.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minicompat.pyi @@ -1,5 +1,6 @@ from collections.abc import Iterable from typing import Any, TypeVar +from typing_extensions import Literal __all__ = ["NodeList", "EmptyNodeList", "StringTypes", "defproperty"] @@ -8,11 +9,13 @@ _T = TypeVar("_T") StringTypes: tuple[type[str]] class NodeList(list[_T]): - length: int + @property + def length(self) -> int: ... def item(self, index: int) -> _T | None: ... -class EmptyNodeList(tuple[Any, ...]): - length: int +class EmptyNodeList(tuple[()]): + @property + def length(self) -> Literal[0]: ... def item(self, index: int) -> None: ... def __add__(self, other: Iterable[_T]) -> NodeList[_T]: ... # type: ignore[override] def __radd__(self, other: Iterable[_T]) -> NodeList[_T]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minidom.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minidom.pyi index ecc7bb6bc..e2880ae85 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minidom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minidom.pyi @@ -9,8 +9,10 @@ from xml.sax.xmlreader import XMLReader _N = TypeVar("_N", bound=Node) -def parse(file: str | SupportsRead[ReadableBuffer | str], parser: XMLReader | None = None, bufsize: int | None = None): ... -def parseString(string: str | ReadableBuffer, parser: XMLReader | None = None): ... +def parse( + file: str | SupportsRead[ReadableBuffer | str], parser: XMLReader | None = None, bufsize: int | None = None +) -> Document: ... +def parseString(string: str | ReadableBuffer, parser: XMLReader | None = None) -> Document: ... def getDOMImplementation(features=None) -> DOMImplementation | None: ... class Node(xml.dom.Node): @@ -28,10 +30,10 @@ class Node(xml.dom.Node): def localName(self) -> str | None: ... def __bool__(self) -> Literal[True]: ... if sys.version_info >= (3, 9): - def toxml(self, encoding: str | None = None, standalone: bool | None = None): ... + def toxml(self, encoding: str | None = None, standalone: bool | None = None) -> str: ... def toprettyxml( self, indent: str = "\t", newl: str = "\n", encoding: str | None = None, standalone: bool | None = None - ): ... + ) -> str: ... else: def toxml(self, encoding: str | None = None): ... def toprettyxml(self, indent: str = "\t", newl: str = "\n", encoding: str | None = None): ... @@ -147,8 +149,8 @@ class Element(Node): removeAttributeNodeNS: Incomplete def hasAttribute(self, name: str) -> bool: ... def hasAttributeNS(self, namespaceURI: str, localName) -> bool: ... - def getElementsByTagName(self, name: str) -> NodeList[Node]: ... - def getElementsByTagNameNS(self, namespaceURI: str, localName): ... + def getElementsByTagName(self, name: str) -> NodeList[Element]: ... + def getElementsByTagNameNS(self, namespaceURI: str, localName: str) -> NodeList[Element]: ... def writexml(self, writer: SupportsWrite[str], indent: str = "", addindent: str = "", newl: str = "") -> None: ... def hasAttributes(self) -> bool: ... def setIdAttribute(self, name) -> None: ... @@ -218,7 +220,7 @@ class CDATASection(Text): def writexml(self, writer: SupportsWrite[str], indent: str = "", addindent: str = "", newl: str = "") -> None: ... class ReadOnlySequentialNamedNodeMap: - def __init__(self, seq=...) -> None: ... + def __init__(self, seq=()) -> None: ... def __len__(self) -> int: ... def getNamedItem(self, name): ... def getNamedItemNS(self, namespaceURI: str, localName): ... @@ -318,9 +320,9 @@ class Document(Node, DocumentLS): def createAttribute(self, qName) -> Attr: ... def createElementNS(self, namespaceURI: str, qualifiedName: str): ... def createAttributeNS(self, namespaceURI: str, qualifiedName: str) -> Attr: ... - def getElementById(self, id): ... - def getElementsByTagName(self, name: str) -> NodeList[Node]: ... - def getElementsByTagNameNS(self, namespaceURI: str, localName): ... + def getElementById(self, id: str) -> Element | None: ... + def getElementsByTagName(self, name: str) -> NodeList[Element]: ... + def getElementsByTagNameNS(self, namespaceURI: str, localName: str) -> NodeList[Element]: ... def isSupported(self, feature: str, version: str | None) -> bool: ... def importNode(self, node, deep): ... if sys.version_info >= (3, 9): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xml/sax/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xml/sax/__init__.pyi index ca981a00d..8bcf902df 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xml/sax/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xml/sax/__init__.pyi @@ -28,7 +28,7 @@ class SAXReaderNotAvailable(SAXNotSupportedException): ... default_parser_list: list[str] if sys.version_info >= (3, 8): - def make_parser(parser_list: Iterable[str] = ...) -> XMLReader: ... + def make_parser(parser_list: Iterable[str] = ()) -> XMLReader: ... def parse( source: StrPath | _SupportsReadClose[bytes] | _SupportsReadClose[str], handler: ContentHandler, @@ -36,7 +36,7 @@ if sys.version_info >= (3, 8): ) -> None: ... else: - def make_parser(parser_list: list[str] = ...) -> XMLReader: ... + def make_parser(parser_list: list[str] = []) -> XMLReader: ... def parse( source: str | _SupportsReadClose[bytes] | _SupportsReadClose[str], handler: ContentHandler, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xml/sax/saxutils.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xml/sax/saxutils.pyi index 67a06d2fc..0d9223770 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xml/sax/saxutils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xml/sax/saxutils.pyi @@ -4,9 +4,9 @@ from collections.abc import Mapping from io import RawIOBase, TextIOBase from xml.sax import handler, xmlreader -def escape(data: str, entities: Mapping[str, str] = ...) -> str: ... -def unescape(data: str, entities: Mapping[str, str] = ...) -> str: ... -def quoteattr(data: str, entities: Mapping[str, str] = ...) -> str: ... +def escape(data: str, entities: Mapping[str, str] = {}) -> str: ... +def unescape(data: str, entities: Mapping[str, str] = {}) -> str: ... +def quoteattr(data: str, entities: Mapping[str, str] = {}) -> str: ... class XMLGenerator(handler.ContentHandler): def __init__( diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi index 7bf701ae7..8c32f3080 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi @@ -230,7 +230,7 @@ class Transport: if sys.version_info >= (3, 8): def __init__( - self, use_datetime: bool = False, use_builtin_types: bool = False, *, headers: Iterable[tuple[str, str]] = ... + self, use_datetime: bool = False, use_builtin_types: bool = False, *, headers: Iterable[tuple[str, str]] = () ) -> None: ... else: def __init__(self, use_datetime: bool = False, use_builtin_types: bool = False) -> None: ... @@ -259,7 +259,7 @@ class SafeTransport(Transport): use_datetime: bool = False, use_builtin_types: bool = False, *, - headers: Iterable[tuple[str, str]] = ..., + headers: Iterable[tuple[str, str]] = (), context: Any | None = None, ) -> None: ... else: @@ -288,7 +288,7 @@ class ServerProxy: use_datetime: bool = False, use_builtin_types: bool = False, *, - headers: Iterable[tuple[str, str]] = ..., + headers: Iterable[tuple[str, str]] = (), context: Any | None = None, ) -> None: ... else: diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/server.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/server.pyi index 800c20551..832fe265e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/server.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/server.pyi @@ -108,9 +108,9 @@ class ServerHTMLDoc(pydoc.HTMLDoc): # undocumented object: object, name: str, mod: str | None = None, - funcs: Mapping[str, str] = ..., - classes: Mapping[str, str] = ..., - methods: Mapping[str, str] = ..., + funcs: Mapping[str, str] = {}, + classes: Mapping[str, str] = {}, + methods: Mapping[str, str] = {}, cl: type | None = None, ) -> str: ... def docserver(self, server_name: str, package_documentation: str, methods: dict[str, str]) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi index b969d0cf9..6e632fbe6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi @@ -211,7 +211,7 @@ class ZipInfo: compress_size: int file_size: int orig_filename: str # undocumented - def __init__(self, filename: str = "NoName", date_time: _DateTuple = ...) -> None: ... + def __init__(self, filename: str = "NoName", date_time: _DateTuple = (1980, 1, 1, 0, 0, 0)) -> None: ... if sys.version_info >= (3, 8): @classmethod def from_file(cls, filename: StrPath, arcname: StrPath | None = None, *, strict_timestamps: bool = True) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/METADATA.toml deleted file mode 100644 index 2d07bb359..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/METADATA.toml +++ /dev/null @@ -1,9 +0,0 @@ -version = "0.1.*" -requires = ["types-Pillow"] - -[tool.stubtest] -ignore_missing_stub = true -# TODO: figure out how to run stubtest for this package -# (the package pins Pillow in a problematic way) -skip = true -platforms = ["win32"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/__init__.pyi deleted file mode 100644 index 17f1dd8e9..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/__init__.pyi +++ /dev/null @@ -1,12 +0,0 @@ -from d3dshot.capture_output import CaptureOutputs as CaptureOutputs -from d3dshot.d3dshot import D3DShot as D3DShot - -pil_is_available: bool -numpy_is_available: bool -pytorch_is_available: bool -pytorch_gpu_is_available: bool -capture_output_mapping: dict[str, CaptureOutputs] -capture_outputs: list[str] - -def determine_available_capture_outputs() -> list[CaptureOutputs]: ... -def create(capture_output: str = ..., frame_buffer_size: int = ...) -> D3DShot: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_output.pyi deleted file mode 100644 index 0fc75136e..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_output.pyi +++ /dev/null @@ -1,42 +0,0 @@ -import enum -from _typeshed import Incomplete -from collections.abc import Sequence -from ctypes import _CVoidConstPLike -from typing_extensions import Literal, TypeAlias - -from PIL import Image - -_Frame: TypeAlias = Image.Image | Incomplete -# stub_uploader doesn't allow numpy and torch because D3DShot doesn't declare it as a dependency -# from torch import Tensor -# import numpy.typing as npt -# _Frame: TypeAlias = Image.Image | npt.NDArray[np.int32] | npt.NDArray[np.float32] | Tensor - -class CaptureOutputs(enum.Enum): - PIL: int - NUMPY: int - NUMPY_FLOAT: int - PYTORCH: int - PYTORCH_FLOAT: int - PYTORCH_GPU: int - PYTORCH_FLOAT_GPU: int - -class CaptureOutputError(BaseException): ... - -# All CaptureOutput methods just reference the backend. Making this both a base class and a wrapper. -class CaptureOutput: - # `backend` is a subclass of CaptureOutput based on the CaptureOutputs enum passed to __init__ - backend: CaptureOutput - def __init__(self, backend: CaptureOutputs = ...) -> None: ... - def process( - self, - pointer: _CVoidConstPLike, - pitch: int, - size: int, - width: int, - height: int, - region: tuple[int, int, int, int], - rotation: int, - ) -> _Frame: ... - def to_pil(self, frame: _Frame) -> Image.Image: ... - def stack(self, frames: Sequence[_Frame], stack_dimension: Literal["first", "last"]) -> _Frame: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/__init__.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/numpy_capture_output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/numpy_capture_output.pyi deleted file mode 100644 index 0aec1bc85..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/numpy_capture_output.pyi +++ /dev/null @@ -1,28 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Sequence -from ctypes import _CVoidConstPLike -from typing_extensions import Literal, TypeAlias - -from d3dshot.capture_output import CaptureOutput -from PIL import Image - -# stub_uploader doesn't allow numpy because D3DShot doesn't declare it as a dependency -# import numpy as np -# import numpy.typing as npt -# _NDArray: TypeAlias = npt.NDArray[np.int32] -_NDArray: TypeAlias = Incomplete - -class NumpyCaptureOutput(CaptureOutput): - def __init__(self) -> None: ... - def process( - self, - pointer: _CVoidConstPLike, - pitch: int, - size: int, - width: int, - height: int, - region: tuple[int, int, int, int], - rotation: int, - ) -> _NDArray: ... - def to_pil(self, frame: _NDArray) -> Image.Image: ... - def stack(self, frames: Sequence[_NDArray] | _NDArray, stack_dimension: Literal["first", "last"]) -> _NDArray: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/numpy_float_capture_output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/numpy_float_capture_output.pyi deleted file mode 100644 index 2bf3331d4..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/numpy_float_capture_output.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from d3dshot.capture_outputs.numpy_capture_output import NumpyCaptureOutput - -# stub_uploader doesn't allow numpy because D3DShot doesn't declare it as a dependency -# this CaptureOutput should be float based -class NumpyFloatCaptureOutput(NumpyCaptureOutput): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pil_capture_output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pil_capture_output.pyi deleted file mode 100644 index d1e2c8782..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pil_capture_output.pyi +++ /dev/null @@ -1,24 +0,0 @@ -from _typeshed import Unused -from collections.abc import Sequence -from ctypes import _CVoidConstPLike -from typing import TypeVar - -from d3dshot.capture_output import CaptureOutput -from PIL import Image - -_ImageT = TypeVar("_ImageT", bound=Image.Image) - -class PILCaptureOutput(CaptureOutput): - def __init__(self) -> None: ... - def process( - self, - pointer: _CVoidConstPLike, - pitch: int, - size: int, - width: int, - height: int, - region: tuple[int, int, int, int], - rotation: int, - ) -> Image.Image: ... - def to_pil(self, frame: _ImageT) -> _ImageT: ... - def stack(self, frames: Sequence[_ImageT], stack_dimension: Unused) -> Sequence[_ImageT]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_capture_output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_capture_output.pyi deleted file mode 100644 index 9fc7df7e3..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_capture_output.pyi +++ /dev/null @@ -1,26 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Sequence -from ctypes import _CVoidConstPLike -from typing_extensions import Literal, TypeAlias - -from d3dshot.capture_output import CaptureOutput -from PIL import Image - -# stub_uploader doesn't allow torch because D3DShot doesn't declare it as a dependency -# from torch import Tensor -_Tensor: TypeAlias = Incomplete - -class PytorchCaptureOutput(CaptureOutput): - def __init__(self) -> None: ... - def process( - self, - pointer: _CVoidConstPLike, - pitch: int, - size: int, - width: int, - height: int, - region: tuple[int, int, int, int], - rotation: int, - ) -> _Tensor: ... - def to_pil(self, frame: _Tensor) -> Image.Image: ... - def stack(self, frames: Sequence[_Tensor], stack_dimension: Literal["first", "last"]) -> _Tensor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_float_capture_output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_float_capture_output.pyi deleted file mode 100644 index 53e7a73d7..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_float_capture_output.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from d3dshot.capture_outputs.pytorch_capture_output import PytorchCaptureOutput - -class PytorchFloatCaptureOutput(PytorchCaptureOutput): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_float_gpu_capture_output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_float_gpu_capture_output.pyi deleted file mode 100644 index 2e7c6c105..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_float_gpu_capture_output.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from d3dshot.capture_outputs.pytorch_gpu_capture_output import PytorchGPUCaptureOutput - -class PytorchFloatGPUCaptureOutput(PytorchGPUCaptureOutput): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_gpu_capture_output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_gpu_capture_output.pyi deleted file mode 100644 index d78cc60eb..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/capture_outputs/pytorch_gpu_capture_output.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from d3dshot.capture_outputs.pytorch_capture_output import PytorchCaptureOutput - -class PytorchGPUCaptureOutput(PytorchCaptureOutput): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/d3dshot.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/d3dshot.pyi deleted file mode 100644 index 5424517ee..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/d3dshot.pyi +++ /dev/null @@ -1,45 +0,0 @@ -from collections import deque -from collections.abc import Iterable - -from d3dshot.capture_output import CaptureOutput as CaptureOutput, CaptureOutputs as CaptureOutputs, _Frame -from d3dshot.display import Display as Display - -class Singleton(type): ... - -class D3DShot(metaclass=Singleton): - displays: list[Display] - display: Display - capture_output: CaptureOutput - frame_buffer_size: int - frame_buffer: deque[_Frame] - previous_screenshot: _Frame | None - region: tuple[int, int, int, int] | None - - def __init__( - self, - capture_output: CaptureOutputs = ..., - frame_buffer_size: int = ..., - pil_is_available: bool = ..., - numpy_is_available: bool = ..., - pytorch_is_available: bool = ..., - pytorch_gpu_is_available: bool = ..., - ) -> None: ... - @property - def is_capturing(self) -> bool: ... - def get_latest_frame(self) -> _Frame | None: ... - def get_frame(self, frame_index: int) -> _Frame | None: ... - def get_frames(self, frame_indices: Iterable[int]) -> list[_Frame]: ... - def get_frame_stack(self, frame_indices: Iterable[int], stack_dimension: str | None = ...) -> _Frame: ... - def screenshot(self, region: tuple[int, int, int, int] | None = ...) -> _Frame | None: ... - def screenshot_to_disk( - self, directory: str | None = ..., file_name: str | None = ..., region: tuple[int, int, int, int] | None = ... - ) -> str: ... - def frame_buffer_to_disk(self, directory: str | None = ...) -> None: ... - def capture(self, target_fps: int = ..., region: tuple[int, int, int, int] | None = ...) -> bool: ... - def screenshot_every(self, interval: float, region: tuple[int, int, int, int] | None = ...) -> bool: ... - def screenshot_to_disk_every( - self, interval: float, directory: str | None = ..., region: tuple[int, int, int, int] | None = ... - ) -> bool: ... - def stop(self) -> bool: ... - def benchmark(self) -> None: ... - def detect_displays(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/display.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/display.pyi deleted file mode 100644 index fb30dd2b5..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/display.pyi +++ /dev/null @@ -1,49 +0,0 @@ -from ctypes import _Pointer -from typing_extensions import TypedDict - -from d3dshot.dll import _ProcessFunc, _ProcessFuncRegionArg, _ProcessFuncReturn -from d3dshot.dll.d3d import ID3D11Device, ID3D11DeviceContext -from d3dshot.dll.dxgi import IDXGIAdapter, IDXGIOutput1, IDXGIOutputDuplication - -class _PositionDict(TypedDict): - left: int - top: int - right: int - bottom: int - -class Display: - name: str - adapter_name: str - resolution: tuple[int, int] - position: _PositionDict - rotation: int - scale_factor: float - is_primary: bool - hmonitor: int - dxgi_output: IDXGIOutput1 | None - dxgi_adapter: _Pointer[IDXGIAdapter] | None - # Note that Display.d3d_device and Display.d3d_device_context can never be None. - # Despite initially being set to None in __init__, - # they're always immediately set in _initialize_dxgi_output_duplication() - d3d_device: ID3D11Device - d3d_device_context: ID3D11DeviceContext - dxgi_output_duplication: _Pointer[IDXGIOutputDuplication] - - def __init__( - self, - name: str | None = ..., - adapter_name: str | None = ..., - resolution: tuple[int, int] | None = ..., - position: _PositionDict | None = ..., - rotation: int | None = ..., - scale_factor: float | None = ..., - is_primary: bool = ..., - hmonitor: int | None = ..., - dxgi_output: IDXGIOutput1 | None = ..., - dxgi_adapter: _Pointer[IDXGIAdapter] | None = ..., - ) -> None: ... - def capture( - self, process_func: _ProcessFunc[_ProcessFuncRegionArg, _ProcessFuncReturn] | None, region: _ProcessFuncRegionArg = ... - ) -> _ProcessFuncReturn: ... - @classmethod - def discover_displays(cls) -> list[Display]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/__init__.pyi deleted file mode 100644 index 82dc9b18b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/__init__.pyi +++ /dev/null @@ -1,28 +0,0 @@ -import sys -from _typeshed import Incomplete -from collections.abc import Callable -from ctypes import _CData, c_ulong -from ctypes.wintypes import PFLOAT -from typing import TypeVar -from typing_extensions import TypeAlias - -from d3dshot.capture_output import _Frame - -_ProcessFuncRegionArg = TypeVar("_ProcessFuncRegionArg", tuple[int, int, int, int], None) -_ProcessFuncReturn = TypeVar("_ProcessFuncReturn", _Frame, None) -# The _ProcessFunc alias is used in multiple submodules -_ProcessFunc: TypeAlias = Callable[[PFLOAT, int, int, int, int, _ProcessFuncRegionArg, int], _ProcessFuncReturn] # noqa: Y047 - -if sys.platform == "win32": - from ctypes import HRESULT - - _HRESULT: TypeAlias = HRESULT -else: - _HRESULT: TypeAlias = Incomplete - -# comtypes is not typed -# from comtypes import IUnknown -class _IUnknown(_CData): - def QueryInterface(self, interface: type, iid: _CData | None = ...) -> _HRESULT: ... - def AddRef(self) -> c_ulong: ... - def Release(self) -> c_ulong: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/d3d.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/d3d.pyi deleted file mode 100644 index e412c2dbb..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/d3d.pyi +++ /dev/null @@ -1,214 +0,0 @@ -from ctypes import Structure, _Pointer, c_int32, c_uint, c_void_p -from ctypes.wintypes import FLOAT, UINT - -from d3dshot.dll import _HRESULT, _IUnknown -from d3dshot.dll.dxgi import IDXGIAdapter - -class DXGI_SAMPLE_DESC(Structure): - Count: UINT - Quality: UINT - -class D3D11_BOX(Structure): - left: UINT - top: UINT - front: UINT - right: UINT - bottom: UINT - back: UINT - -class D3D11_TEXTURE2D_DESC(Structure): - Width: UINT - Height: UINT - MipLevels: UINT - ArraySize: UINT - Format: UINT - SampleDesc: DXGI_SAMPLE_DESC - Usage: UINT - BindFlags: UINT - CPUAccessFlags: UINT - MiscFlags: UINT - -class ID3D11DeviceChild(_IUnknown): - def GetDevice(self) -> None: ... - def GetPrivateData(self) -> _HRESULT: ... - def SetPrivateData(self) -> _HRESULT: ... - def SetPrivateDataInterface(self) -> _HRESULT: ... - -class ID3D11Resource(ID3D11DeviceChild): - def GetType(self) -> None: ... - def SetEvictionPriority(self) -> None: ... - def GetEvictionPriority(self) -> UINT: ... - -class ID3D11Texture2D(ID3D11Resource): - def GetDesc(self, __pDesc: _Pointer[D3D11_TEXTURE2D_DESC]) -> None: ... - -class ID3D11DeviceContext(ID3D11DeviceChild): - def VSSetConstantBuffers(self) -> None: ... - def PSSetShaderResources(self) -> None: ... - def PSSetShader(self) -> None: ... - def PSSetSamplers(self) -> None: ... - def VSSetShader(self) -> None: ... - def DrawIndexed(self) -> None: ... - def Draw(self) -> None: ... - def Map(self) -> _HRESULT: ... - def Unmap(self) -> None: ... - def PSSetConstantBuffers(self) -> None: ... - def IASetInputLayout(self) -> None: ... - def IASetVertexBuffers(self) -> None: ... - def IASetIndexBuffer(self) -> None: ... - def DrawIndexedInstanced(self) -> None: ... - def DrawInstanced(self) -> None: ... - def GSSetConstantBuffers(self) -> None: ... - def GSSetShader(self) -> None: ... - def IASetPrimitiveTopology(self) -> None: ... - def VSSetShaderResources(self) -> None: ... - def VSSetSamplers(self) -> None: ... - def Begin(self) -> None: ... - def End(self) -> None: ... - def GetData(self) -> _HRESULT: ... - def SetPredication(self) -> None: ... - def GSSetShaderResources(self) -> None: ... - def GSSetSamplers(self) -> None: ... - def OMSetRenderTargets(self) -> None: ... - def OMSetRenderTargetsAndUnorderedAccessViews(self) -> None: ... - def OMSetBlendState(self) -> None: ... - def OMSetDepthStencilState(self) -> None: ... - def SOSetTargets(self) -> None: ... - def DrawAuto(self) -> None: ... - def DrawIndexedInstancedIndirect(self) -> None: ... - def DrawInstancedIndirect(self) -> None: ... - def Dispatch(self) -> None: ... - def DispatchIndirect(self) -> None: ... - def RSSetState(self) -> None: ... - def RSSetViewports(self) -> None: ... - def RSSetScissorRects(self) -> None: ... - def CopySubresourceRegion( - self, - __pDstResource: _Pointer[ID3D11Resource], - __DstSubresource: UINT, - __DstX: UINT, - __DstY: UINT, - __DstZ: UINT, - __pSrcResource: _Pointer[ID3D11Resource], - __SrcSubresource: UINT, - __pSrcBox: _Pointer[D3D11_BOX], - ) -> None: ... - def CopyResource(self, __pDstResource: _Pointer[ID3D11Resource], __pSrcResource: _Pointer[ID3D11Resource]) -> None: ... - def UpdateSubresource(self) -> None: ... - def CopyStructureCount(self) -> None: ... - def ClearRenderTargetView(self) -> None: ... - def ClearUnorderedAccessViewUint(self) -> None: ... - def ClearUnorderedAccessViewFloat(self) -> None: ... - def ClearDepthStencilView(self) -> None: ... - def GenerateMips(self) -> None: ... - def SetResourceMinLOD(self) -> None: ... - def GetResourceMinLOD(self) -> FLOAT: ... - def ResolveSubresource(self) -> None: ... - def ExecuteCommandList(self) -> None: ... - def HSSetShaderResources(self) -> None: ... - def HSSetShader(self) -> None: ... - def HSSetSamplers(self) -> None: ... - def HSSetConstantBuffers(self) -> None: ... - def DSSetShaderResources(self) -> None: ... - def DSSetShader(self) -> None: ... - def DSSetSamplers(self) -> None: ... - def DSSetConstantBuffers(self) -> None: ... - def CSSetShaderResources(self) -> None: ... - def CSSetUnorderedAccessViews(self) -> None: ... - def CSSetShader(self) -> None: ... - def CSSetSamplers(self) -> None: ... - def CSSetConstantBuffers(self) -> None: ... - def VSGetConstantBuffers(self) -> None: ... - def PSGetShaderResources(self) -> None: ... - def PSGetShader(self) -> None: ... - def PSGetSamplers(self) -> None: ... - def VSGetShader(self) -> None: ... - def PSGetConstantBuffers(self) -> None: ... - def IAGetInputLayout(self) -> None: ... - def IAGetVertexBuffers(self) -> None: ... - def IAGetIndexBuffer(self) -> None: ... - def GSGetConstantBuffers(self) -> None: ... - def GSGetShader(self) -> None: ... - def IAGetPrimitiveTopology(self) -> None: ... - def VSGetShaderResources(self) -> None: ... - def VSGetSamplers(self) -> None: ... - def GetPredication(self) -> None: ... - def GSGetShaderResources(self) -> None: ... - def GSGetSamplers(self) -> None: ... - def OMGetRenderTargets(self) -> None: ... - def OMGetRenderTargetsAndUnorderedAccessViews(self) -> None: ... - def OMGetBlendState(self) -> None: ... - def OMGetDepthStencilState(self) -> None: ... - def SOGetTargets(self) -> None: ... - def RSGetState(self) -> None: ... - def RSGetViewports(self) -> None: ... - def RSGetScissorRects(self) -> None: ... - def HSGetShaderResources(self) -> None: ... - def HSGetShader(self) -> None: ... - def HSGetSamplers(self) -> None: ... - def HSGetConstantBuffers(self) -> None: ... - def DSGetShaderResources(self) -> None: ... - def DSGetShader(self) -> None: ... - def DSGetSamplers(self) -> None: ... - def DSGetConstantBuffers(self) -> None: ... - def CSGetShaderResources(self) -> None: ... - def CSGetUnorderedAccessViews(self) -> None: ... - def CSGetShader(self) -> None: ... - def CSGetSamplers(self) -> None: ... - def CSGetConstantBuffers(self) -> None: ... - def ClearState(self) -> None: ... - def Flush(self) -> None: ... - def GetType(self) -> None: ... - def GetContextFlags(self) -> UINT: ... - def FinishCommandList(self) -> _HRESULT: ... - -class ID3D11Device(_IUnknown): - def CreateBuffer(self) -> _HRESULT: ... - def CreateTexture1D(self) -> _HRESULT: ... - def CreateTexture2D( - self, - __pDesc: _Pointer[D3D11_TEXTURE2D_DESC], - __pInitialData: c_void_p, - __ppTexture2D: _Pointer[_Pointer[ID3D11Texture2D]], - ) -> _HRESULT: ... - def CreateTexture3D(self) -> _HRESULT: ... - def CreateShaderResourceView(self) -> _HRESULT: ... - def CreateUnorderedAccessView(self) -> _HRESULT: ... - def CreateRenderTargetView(self) -> _HRESULT: ... - def CreateDepthStencilView(self) -> _HRESULT: ... - def CreateInputLayout(self) -> _HRESULT: ... - def CreateVertexShader(self) -> _HRESULT: ... - def CreateGeometryShader(self) -> _HRESULT: ... - def CreateGeometryShaderWithStreamOutput(self) -> _HRESULT: ... - def CreatePixelShader(self) -> _HRESULT: ... - def CreateHullShader(self) -> _HRESULT: ... - def CreateDomainShader(self) -> _HRESULT: ... - def CreateComputeShader(self) -> _HRESULT: ... - def CreateClassLinkage(self) -> _HRESULT: ... - def CreateBlendState(self) -> _HRESULT: ... - def CreateDepthStencilState(self) -> _HRESULT: ... - def CreateRasterizerState(self) -> _HRESULT: ... - def CreateSamplerState(self) -> _HRESULT: ... - def CreateQuery(self) -> _HRESULT: ... - def CreatePredicate(self) -> _HRESULT: ... - def CreateCounter(self) -> _HRESULT: ... - def CreateDeferredContext(self) -> _HRESULT: ... - def OpenSharedResource(self) -> _HRESULT: ... - def CheckFormatSupport(self) -> _HRESULT: ... - def CheckMultisampleQualityLevels(self) -> _HRESULT: ... - def CheckCounterInfo(self) -> _HRESULT: ... - def CheckCounter(self) -> _HRESULT: ... - def CheckFeatureSupport(self) -> _HRESULT: ... - def GetPrivateData(self) -> _HRESULT: ... - def SetPrivateData(self) -> _HRESULT: ... - def SetPrivateDataInterface(self) -> _HRESULT: ... - def GetFeatureLevel(self) -> c_int32: ... - def GetCreationFlags(self) -> c_uint: ... - def GetDeviceRemovedReason(self) -> _HRESULT: ... - def GetImmediateContext(self, __ppImmediateContext: _Pointer[_Pointer[ID3D11DeviceContext]]) -> None: ... - def SetExceptionMode(self) -> _HRESULT: ... - def GetExceptionMode(self) -> c_uint: ... - -def initialize_d3d_device(dxgi_adapter: _Pointer[IDXGIAdapter]) -> tuple[ID3D11Device, ID3D11DeviceContext]: ... -def describe_d3d11_texture_2d(d3d11_texture_2d: ID3D11Texture2D) -> D3D11_TEXTURE2D_DESC: ... -def prepare_d3d11_texture_2d_for_cpu(d3d11_texture_2d: ID3D11Texture2D, d3d_device: ID3D11Device) -> ID3D11Texture2D: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/dxgi.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/dxgi.pyi deleted file mode 100644 index d26d46867..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/dxgi.pyi +++ /dev/null @@ -1,154 +0,0 @@ -from ctypes import Array, Structure, _Pointer, c_uint -from ctypes.wintypes import BOOL, DWORD, HMONITOR, INT, LARGE_INTEGER, LONG, PFLOAT, POINT, RECT, UINT, ULARGE_INTEGER, WCHAR -from typing_extensions import TypedDict - -from d3dshot.dll import _HRESULT, _IUnknown, _ProcessFunc, _ProcessFuncRegionArg, _ProcessFuncReturn -from d3dshot.dll.d3d import ID3D11Device - -class _DXGIOutputPosition(TypedDict): - left: LONG - top: LONG - right: LONG - bottom: LONG - -class _DXGIOutput(TypedDict): - name: str - position: _DXGIOutputPosition - resolution: tuple[tuple[LONG, LONG], tuple[LONG, LONG]] - rotation: int - is_attached_to_desktop: bool - -class LUID(Structure): - LowPart: DWORD - HighPart: LONG - -class DXGI_ADAPTER_DESC1(Structure): - Description: Array[WCHAR] - VendorId: UINT - DeviceId: UINT - SubSysId: UINT - Revision: UINT - DedicatedVideoMemory: ULARGE_INTEGER - DedicatedSystemMemory: ULARGE_INTEGER - SharedSystemMemory: ULARGE_INTEGER - AdapterLuid: LUID - Flags: UINT - -class DXGI_OUTPUT_DESC(Structure): - DeviceName: Array[WCHAR] - DesktopCoordinates: RECT - AttachedToDesktop: BOOL - Rotation: UINT - Monitor: HMONITOR - -class DXGI_OUTDUPL_POINTER_POSITION(Structure): - Position: POINT - Visible: BOOL - -class DXGI_OUTDUPL_FRAME_INFO(Structure): - LastPresentTime: LARGE_INTEGER - LastMouseUpdateTime: LARGE_INTEGER - AccumulatedFrames: UINT - RectsCoalesced: BOOL - ProtectedContentMaskedOut: BOOL - PointerPosition: DXGI_OUTDUPL_POINTER_POSITION - TotalMetadataBufferSize: UINT - PointerShapeBufferSize: UINT - -class DXGI_MAPPED_RECT(Structure): - Pitch: INT - pBits: PFLOAT - -class IDXGIObject(_IUnknown): - def SetPrivateData(self) -> _HRESULT: ... - def SetPrivateDataInterface(self) -> _HRESULT: ... - def GetPrivateData(self) -> _HRESULT: ... - def GetParent(self) -> _HRESULT: ... - -class IDXGIDeviceSubObject(IDXGIObject): - def GetDevice(self) -> _HRESULT: ... - -class IDXGIResource(IDXGIDeviceSubObject): - def GetSharedHandle(self) -> _HRESULT: ... - def GetUsage(self) -> _HRESULT: ... - def SetEvictionPriority(self) -> _HRESULT: ... - def GetEvictionPriority(self) -> _HRESULT: ... - -class IDXGISurface(IDXGIDeviceSubObject): - def GetDesc(self) -> _HRESULT: ... - def Map(self, __pLockedRect: _Pointer[DXGI_MAPPED_RECT], __MapFlags: UINT) -> _HRESULT: ... - def Unmap(self) -> _HRESULT: ... - -class IDXGIOutputDuplication(IDXGIObject): - def GetDesc(self) -> None: ... - def AcquireNextFrame( - self, - __TimeoutInMilliseconds: UINT, - __pFrameInfo: _Pointer[DXGI_OUTDUPL_FRAME_INFO], - __ppDesktopResource: _Pointer[_Pointer[IDXGIResource]], - ) -> _HRESULT: ... - def GetFrameDirtyRects(self) -> _HRESULT: ... - def GetFrameMoveRects(self) -> _HRESULT: ... - def GetFramePointerShape(self) -> _HRESULT: ... - def MapDesktopSurface(self) -> _HRESULT: ... - def UnMapDesktopSurface(self) -> _HRESULT: ... - def ReleaseFrame(self) -> _HRESULT: ... - -class IDXGIOutput(IDXGIObject): - def GetDesc(self, __pDesc: _Pointer[DXGI_OUTPUT_DESC]) -> _HRESULT: ... - def GetDisplayModeList(self) -> _HRESULT: ... - def FindClosestMatchingMode(self) -> _HRESULT: ... - def WaitForVBlank(self) -> _HRESULT: ... - def TakeOwnership(self) -> _HRESULT: ... - def ReleaseOwnership(self) -> None: ... - def GetGammaControlCapabilities(self) -> _HRESULT: ... - def SetGammaControl(self) -> _HRESULT: ... - def GetGammaControl(self) -> _HRESULT: ... - def SetDisplaySurface(self) -> _HRESULT: ... - def GetDisplaySurfaceData(self) -> _HRESULT: ... - def GetFrameStatistics(self) -> _HRESULT: ... - -class IDXGIOutput1(IDXGIOutput): - def GetDisplayModeList1(self) -> _HRESULT: ... - def FindClosestMatchingMode1(self) -> _HRESULT: ... - def GetDisplaySurfaceData1(self) -> _HRESULT: ... - def DuplicateOutput( - self, __pDevice: _Pointer[ID3D11Device], __ppOutputDuplication: _Pointer[_Pointer[IDXGIOutputDuplication]] - ) -> _HRESULT: ... - -class IDXGIAdapter(IDXGIObject): - def EnumOutputs(self, __Output: UINT, __ppOutput: _Pointer[_Pointer[IDXGIOutput]]) -> _HRESULT: ... - def GetDesc(self) -> _HRESULT: ... - def CheckInterfaceSupport(self) -> _HRESULT: ... - -class IDXGIAdapter1(IDXGIAdapter): - def GetDesc1(self, __pDesc: _Pointer[DXGI_ADAPTER_DESC1]) -> _HRESULT: ... - -class IDXGIFactory(IDXGIObject): - def EnumAdapters(self) -> _HRESULT: ... - def MakeWindowAssociation(self) -> _HRESULT: ... - def GetWindowAssociation(self) -> _HRESULT: ... - def CreateSwapChain(self) -> _HRESULT: ... - def CreateSoftwareAdapter(self) -> _HRESULT: ... - -class IDXGIFactory1(IDXGIFactory): - def EnumAdapters1(self, __Adapter: c_uint, __ppAdapter: _Pointer[_Pointer[IDXGIAdapter1]]) -> _HRESULT: ... - def IsCurrent(self) -> BOOL: ... - -def initialize_dxgi_factory() -> _Pointer[IDXGIFactory1]: ... -def discover_dxgi_adapters(dxgi_factory: IDXGIFactory1) -> list[_Pointer[IDXGIAdapter1]]: ... -def describe_dxgi_adapter(dxgi_adapter: IDXGIAdapter1) -> Array[WCHAR]: ... -def discover_dxgi_outputs(dxgi_adapter: IDXGIAdapter) -> list[_Pointer[IDXGIOutput1]]: ... -def describe_dxgi_output(dxgi_output: IDXGIOutput) -> _DXGIOutput: ... -def initialize_dxgi_output_duplication( - dxgi_output: IDXGIOutput1, d3d_device: _Pointer[ID3D11Device] -) -> _Pointer[IDXGIOutputDuplication]: ... -def get_dxgi_output_duplication_frame( - dxgi_output_duplication: IDXGIOutputDuplication, - d3d_device: ID3D11Device, - process_func: _ProcessFunc[_ProcessFuncRegionArg, _ProcessFuncReturn] | None = ..., - width: int = ..., - height: int = ..., - region: _ProcessFuncRegionArg = ..., - rotation: int = ..., -) -> _ProcessFuncReturn | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/shcore.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/shcore.pyi deleted file mode 100644 index 3fd5237ef..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/shcore.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from ctypes.wintypes import HMONITOR - -def get_scale_factor_for_monitor(hmonitor: HMONITOR) -> float: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/user32.pyi b/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/user32.pyi deleted file mode 100644 index a8dfaec82..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/D3DShot/d3dshot/dll/user32.pyi +++ /dev/null @@ -1,13 +0,0 @@ -import ctypes -from ctypes import wintypes - -class DISPLAY_DEVICE(ctypes.Structure): - cb: wintypes.DWORD - DeviceName: wintypes.WCHAR - DeviceString: wintypes.WCHAR - StateFlags: wintypes.DWORD - DeviceID: wintypes.WCHAR - DeviceKey: wintypes.WCHAR - -def get_display_device_name_mapping() -> dict[str, tuple[str, bool]]: ... -def get_hmonitor_by_point(x: wintypes.LONG, y: wintypes.LONG) -> wintypes.HMONITOR: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__init__.pyi index 7f1d403af..d5bc25cc9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__init__.pyi @@ -21,14 +21,18 @@ class DateTimeRange: separator: str def __init__( self, - start_datetime: datetime.datetime | str | None = ..., - end_datetime: datetime.datetime | str | None = ..., - start_time_format: str = ..., - end_time_format: str = ..., + start_datetime: datetime.datetime | str | None = None, + end_datetime: datetime.datetime | str | None = None, + start_time_format: str = "%Y-%m-%dT%H:%M:%S%z", + end_time_format: str = "%Y-%m-%dT%H:%M:%S%z", ) -> None: ... @classmethod def from_range_text( - cls, range_text: str, separator: str = ..., start_time_format: str | None = ..., end_time_format: str | None = ... + cls, + range_text: str, + separator: str = "\\s+\\-\\s+", + start_time_format: str | None = None, + end_time_format: str | None = None, ) -> DateTimeRange: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... @@ -50,8 +54,8 @@ class DateTimeRange: def get_start_time_str(self) -> str: ... def get_end_time_str(self) -> str: ... def get_timedelta_second(self) -> float: ... - def set_start_datetime(self, value: datetime.datetime | str | None, timezone: str | None = ...) -> None: ... - def set_end_datetime(self, value: datetime.datetime | str | None, timezone: str | None = ...) -> None: ... + def set_start_datetime(self, value: datetime.datetime | str | None, timezone: str | None = None) -> None: ... + def set_end_datetime(self, value: datetime.datetime | str | None, timezone: str | None = None) -> None: ... def set_time_range(self, start: datetime.datetime | str | None, end: datetime.datetime | str | None) -> None: ... def range(self, step: datetime.timedelta | relativedelta) -> Iterable[datetime.datetime]: ... def intersection(self, x: DateTimeRange, intersection_threshold: datetime.timedelta | None = None) -> DateTimeRange: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__version__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__version__.pyi index 48c3f57fa..37e897a65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__version__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__version__.pyi @@ -1,4 +1,4 @@ -__author__: str = ... +__author__: str __copyright__: str __license__: str __version__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/deprecated/classic.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/deprecated/classic.pyi index 902e64374..86d0f7f27 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/deprecated/classic.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/deprecated/classic.pyi @@ -13,7 +13,7 @@ class ClassicAdapter: action: _Actions | None category: type[Warning] def __init__( - self, reason: str = ..., version: str = ..., action: _Actions | None = ..., category: type[Warning] = ... + self, reason: str = "", version: str = "", action: _Actions | None = None, category: type[Warning] = ... ) -> None: ... def get_deprecated_msg(self, wrapped: Callable[..., Any], instance: object) -> str: ... def __call__(self, wrapped: _F) -> Callable[[_F], _F]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/deprecated/sphinx.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/deprecated/sphinx.pyi index c9b37eabb..bcde1f5c4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/deprecated/sphinx.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/deprecated/sphinx.pyi @@ -15,20 +15,20 @@ class SphinxAdapter(ClassicAdapter): def __init__( self, directive: Literal["versionadded", "versionchanged", "deprecated"], - reason: str = ..., - version: str = ..., - action: _Actions | None = ..., + reason: str = "", + version: str = "", + action: _Actions | None = None, category: type[Warning] = ..., - line_length: int = ..., + line_length: int = 70, ) -> None: ... def __call__(self, wrapped: _F) -> Callable[[_F], _F]: ... -def versionadded(reason: str = ..., version: str = ..., line_length: int = ...) -> Callable[[_F], _F]: ... -def versionchanged(reason: str = ..., version: str = ..., line_length: int = ...) -> Callable[[_F], _F]: ... +def versionadded(reason: str = "", version: str = "", line_length: int = 70) -> Callable[[_F], _F]: ... +def versionchanged(reason: str = "", version: str = "", line_length: int = 70) -> Callable[[_F], _F]: ... def deprecated( - reason: str = ..., - version: str = ..., - line_length: int = ..., + reason: str = "", + version: str = "", + line_length: int = 70, *, action: _Actions | None = ..., category: type[Warning] | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/__init__.pyi index c8b41bc1a..eede72dcd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/__init__.pyi @@ -8,10 +8,10 @@ logger: Logger def process_file( fh: Reader, - stop_tag: str = ..., - details: bool = ..., - strict: bool = ..., - debug: bool = ..., - truncate_tags: bool = ..., - auto_seek: bool = ..., + stop_tag: str = "UNDEF", + details: bool = True, + strict: bool = False, + debug: bool = False, + truncate_tags: bool = True, + auto_seek: bool = True, ) -> dict[str, Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/classes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/classes.pyi index 669fb7414..4e62179ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/classes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/classes.pyi @@ -32,15 +32,15 @@ class ExifHeader: offset: int, fake_exif: bool, strict: bool, - debug: bool = ..., - detailed: bool = ..., - truncate_tags: bool = ..., + debug: bool = False, + detailed: bool = True, + truncate_tags: bool = True, ) -> None: ... - def s2n(self, offset: int, length: int, signed: bool = ...) -> int: ... + def s2n(self, offset: int, length: int, signed: bool = False) -> int: ... def n2b(self, offset: int, length: int) -> bytes: ... def list_ifd(self) -> list[int]: ... def dump_ifd( - self, ifd: int, ifd_name: str, tag_dict: TagDict | None = ..., relative: int = ..., stop_tag: str = ... + self, ifd: int, ifd_name: str, tag_dict: TagDict | None = None, relative: int = 0, stop_tag: str = "UNDEF" ) -> None: ... def extract_tiff_thumbnail(self, thumb_ifd: int) -> None: ... def extract_jpeg_thumbnail(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/exif_log.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/exif_log.pyi index 15899f4da..f7cbc2521 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/exif_log.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/exif_log.pyi @@ -16,9 +16,9 @@ def setup_logger(debug: bool, color: bool) -> None: ... class Formatter(logging.Formatter): color: bool debug: bool - def __init__(self, debug: bool = ..., color: bool = ...) -> None: ... + def __init__(self, debug: bool = False, color: bool = False) -> None: ... class Handler(logging.StreamHandler[TextIO]): color: bool debug: bool - def __init__(self, log_level: logging._Level, debug: bool = ..., color: bool = ...) -> None: ... + def __init__(self, log_level: logging._Level, debug: bool = False, color: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/utils.pyi index d534019c3..0f8c58219 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/exifread/utils.pyi @@ -14,7 +14,7 @@ def make_string_uc(seq: str | list[int]) -> str: ... def get_gps_coords(tags: Mapping[str, Any]) -> tuple[float, float]: ... class Ratio(Fraction): - def __new__(cls, numerator: int = ..., denominator: int | None = ...) -> Self: ... + def __new__(cls, numerator: int = 0, denominator: int | None = None) -> Self: ... @property def num(self) -> int: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/flask_cors/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/flask_cors/core.pyi index 475a0a2f9..c69cfe507 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/flask_cors/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/flask_cors/core.pyi @@ -51,9 +51,9 @@ def re_fix(reg: str) -> str: ... def try_match_any(inst: str, patterns: Iterable[str | Pattern[str]]) -> bool: ... def try_match(request_origin: str, maybe_regex: str | Pattern[str]) -> bool: ... def get_cors_options(appInstance: flask.Flask | None, *dicts: _Options) -> _Options: ... -def get_app_kwarg_dict(appInstance: flask.Flask | None = ...) -> _Options: ... +def get_app_kwarg_dict(appInstance: flask.Flask | None = None) -> _Options: ... def flexible_str(obj: object) -> str | None: ... -def serialize_option(options_dict: _Options, key: str, upper: bool = ...) -> None: ... +def serialize_option(options_dict: _Options, key: str, upper: bool = False) -> None: ... @overload def ensure_iterable(inst: str) -> list[str]: ... # type: ignore[misc] @overload diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/flask_cors/extension.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/flask_cors/extension.pyi index aef6c137c..28f2d1f1f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/flask_cors/extension.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/flask_cors/extension.pyi @@ -11,7 +11,7 @@ LOG: Logger class CORS: def __init__( self, - app: Incomplete | None = ..., + app: Incomplete | None = None, *, resources: dict[str, dict[str, Any]] | list[str] | str | None = ..., origins: str | list[str] | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/flask_migrate/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/flask_migrate/__init__.pyi index 6a68c7c6f..5f60a5080 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/flask_migrate/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/flask_migrate/__init__.pyi @@ -25,82 +25,82 @@ class Migrate: alembic_ctx_kwargs: dict[str, Any] def __init__( self, - app: flask.Flask | None = ..., - db: SQLAlchemy | None = ..., - directory: str = ..., - command: str = ..., - compare_type: bool = ..., - render_as_batch: bool = ..., + app: flask.Flask | None = None, + db: SQLAlchemy | None = None, + directory: str = "migrations", + command: str = "db", + compare_type: bool = True, + render_as_batch: bool = True, **kwargs, ) -> None: ... def init_app( self, app: flask.Flask, - db: SQLAlchemy | None = ..., - directory: str | None = ..., - command: str | None = ..., - compare_type: bool | None = ..., - render_as_batch: bool | None = ..., + db: SQLAlchemy | None = None, + directory: str | None = None, + command: str | None = None, + compare_type: bool | None = None, + render_as_batch: bool | None = None, **kwargs, ) -> None: ... def configure(self, f: _ConfigureCallback) -> _ConfigureCallback: ... def call_configure_callbacks(self, config: Config): ... def get_config( - self, directory: str | None = ..., x_arg: str | Sequence[str] | None = ..., opts: Iterable[str] | None = ... + self, directory: str | None = None, x_arg: str | Sequence[str] | None = None, opts: Iterable[str] | None = None ): ... def catch_errors(f: Callable[_P, _T]) -> Callable[_P, _T]: ... def list_templates() -> None: ... -def init(directory: str | None = ..., multidb: bool = ..., template: str | None = ..., package: bool = ...) -> None: ... +def init(directory: str | None = None, multidb: bool = False, template: str | None = None, package: bool = False) -> None: ... def revision( - directory: str | None = ..., - message: str | None = ..., - autogenerate: bool = ..., - sql: bool = ..., - head: str = ..., - splice: bool = ..., - branch_label: str | None = ..., - version_path: str | None = ..., - rev_id: str | None = ..., + directory: str | None = None, + message: str | None = None, + autogenerate: bool = False, + sql: bool = False, + head: str = "head", + splice: bool = False, + branch_label: str | None = None, + version_path: str | None = None, + rev_id: str | None = None, ) -> None: ... def migrate( - directory: str | None = ..., - message: str | None = ..., - sql: bool = ..., - head: str = ..., - splice: bool = ..., - branch_label: str | None = ..., - version_path: str | None = ..., - rev_id: str | None = ..., - x_arg: str | Sequence[str] | None = ..., + directory: str | None = None, + message: str | None = None, + sql: bool = False, + head: str = "head", + splice: bool = False, + branch_label: str | None = None, + version_path: str | None = None, + rev_id: str | None = None, + x_arg: str | Sequence[str] | None = None, ) -> None: ... -def edit(directory: str | None = ..., revision: str = ...) -> None: ... +def edit(directory: str | None = None, revision: str = "current") -> None: ... def merge( - directory: str | None = ..., - revisions: str = ..., - message: str | None = ..., - branch_label: str | None = ..., - rev_id: str | None = ..., + directory: str | None = None, + revisions: str = "", + message: str | None = None, + branch_label: str | None = None, + rev_id: str | None = None, ) -> None: ... def upgrade( - directory: str | None = ..., - revision: str = ..., - sql: bool = ..., - tag: str | None = ..., - x_arg: str | Sequence[str] | None = ..., + directory: str | None = None, + revision: str = "head", + sql: bool = False, + tag: str | None = None, + x_arg: str | Sequence[str] | None = None, ) -> None: ... def downgrade( - directory: str | None = ..., - revision: str = ..., - sql: bool = ..., - tag: str | None = ..., - x_arg: str | Sequence[str] | None = ..., + directory: str | None = None, + revision: str = "-1", + sql: bool = False, + tag: str | None = None, + x_arg: str | Sequence[str] | None = None, ) -> None: ... -def show(directory: str | None = ..., revision: str = ...) -> None: ... +def show(directory: str | None = None, revision: str = "head") -> None: ... def history( - directory: str | None = ..., rev_range: str | None = ..., verbose: bool = ..., indicate_current: bool = ... + directory: str | None = None, rev_range: str | None = None, verbose: bool = False, indicate_current: bool = False ) -> None: ... -def heads(directory: str | None = ..., verbose: bool = ..., resolve_dependencies: bool = ...) -> None: ... -def branches(directory: str | None = ..., verbose: bool = ...) -> None: ... -def current(directory: str | None = ..., verbose: bool = ...) -> None: ... -def stamp(directory: str | None = ..., revision: str = ..., sql: bool = ..., tag: str | None = ...) -> None: ... +def heads(directory: str | None = None, verbose: bool = False, resolve_dependencies: bool = False) -> None: ... +def branches(directory: str | None = None, verbose: bool = False) -> None: ... +def current(directory: str | None = None, verbose: bool = False) -> None: ... +def stamp(directory: str | None = None, revision: str = "head", sql: bool = False, tag: str | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/__init__.pyi index e2fadfce8..3b92518bd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/__init__.pyi @@ -14,22 +14,22 @@ before_models_committed: Any class SignallingSession(Session): app: Any - def __init__(self, db, autocommit: bool = ..., autoflush: bool = ..., **options) -> None: ... - def get_bind(self, mapper: Incomplete | None = ..., clause: Incomplete | None = ...): ... # type: ignore[override] + def __init__(self, db, autocommit: bool = False, autoflush: bool = True, **options) -> None: ... + def get_bind(self, mapper: Incomplete | None = None, clause: Incomplete | None = None): ... # type: ignore[override] def get_debug_queries(): ... _T = TypeVar("_T") class BaseQuery(Query[_T]): - def get_or_404(self, ident, description: Incomplete | None = ...): ... - def first_or_404(self, description: Incomplete | None = ...): ... + def get_or_404(self, ident, description: Incomplete | None = None): ... + def first_or_404(self, description: Incomplete | None = None): ... def paginate( self, - page: Incomplete | None = ..., - per_page: Incomplete | None = ..., - error_out: bool = ..., - max_per_page: Incomplete | None = ..., + page: Incomplete | None = None, + per_page: Incomplete | None = None, + error_out: bool = True, + max_per_page: Incomplete | None = None, ) -> Pagination[_T]: ... class Pagination(Generic[_T]): @@ -41,18 +41,18 @@ class Pagination(Generic[_T]): def __init__(self, query: BaseQuery[_T] | None, page: int, per_page: int, total: int | None, items) -> None: ... @property def pages(self) -> int: ... - def prev(self, error_out: bool = ...) -> Pagination[_T]: ... + def prev(self, error_out: bool = False) -> Pagination[_T]: ... @property def prev_num(self) -> int | None: ... @property def has_prev(self) -> bool: ... - def next(self, error_out: bool = ...) -> Pagination[_T]: ... + def next(self, error_out: bool = False) -> Pagination[_T]: ... @property def has_next(self) -> bool: ... @property def next_num(self) -> int | None: ... def iter_pages( - self, left_edge: int = ..., left_current: int = ..., right_current: int = ..., right_edge: int = ... + self, left_edge: int = 2, left_current: int = 2, right_current: int = 5, right_edge: int = 2 ) -> Generator[int | None, None, None]: ... def get_state(app): ... @@ -65,33 +65,33 @@ class SQLAlchemy: app: Any def __init__( self, - app: Incomplete | None = ..., - use_native_unicode: bool = ..., - session_options: Incomplete | None = ..., - metadata: Incomplete | None = ..., + app: Incomplete | None = None, + use_native_unicode: bool = True, + session_options: Incomplete | None = None, + metadata: Incomplete | None = None, query_class=..., model_class=..., - engine_options: Incomplete | None = ..., + engine_options: Incomplete | None = None, ) -> None: ... @property def metadata(self): ... - def create_scoped_session(self, options: Incomplete | None = ...): ... + def create_scoped_session(self, options: Incomplete | None = None): ... def create_session(self, options): ... - def make_declarative_base(self, model, metadata: Incomplete | None = ...): ... + def make_declarative_base(self, model, metadata: Incomplete | None = None): ... def init_app(self, app): ... def apply_pool_defaults(self, app, options): ... def apply_driver_hacks(self, app, sa_url, options): ... @property def engine(self): ... - def make_connector(self, app: Incomplete | None = ..., bind: Incomplete | None = ...): ... - def get_engine(self, app: Incomplete | None = ..., bind: Incomplete | None = ...): ... + def make_connector(self, app: Incomplete | None = None, bind: Incomplete | None = None): ... + def get_engine(self, app: Incomplete | None = None, bind: Incomplete | None = None): ... def create_engine(self, sa_url, engine_opts): ... - def get_app(self, reference_app: Incomplete | None = ...): ... - def get_tables_for_bind(self, bind: Incomplete | None = ...): ... - def get_binds(self, app: Incomplete | None = ...): ... - def create_all(self, bind: str = ..., app: Incomplete | None = ...) -> None: ... - def drop_all(self, bind: str = ..., app: Incomplete | None = ...) -> None: ... - def reflect(self, bind: str = ..., app: Incomplete | None = ...) -> None: ... + def get_app(self, reference_app: Incomplete | None = None): ... + def get_tables_for_bind(self, bind: Incomplete | None = None): ... + def get_binds(self, app: Incomplete | None = None): ... + def create_all(self, bind: str = "__all__", app: Incomplete | None = None) -> None: ... + def drop_all(self, bind: str = "__all__", app: Incomplete | None = None) -> None: ... + def reflect(self, bind: str = "__all__", app: Incomplete | None = None) -> None: ... def __getattr__(self, name: str) -> Any: ... # exposes dynamically classes of SQLAlchemy class FSADeprecationWarning(DeprecationWarning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/JACK-Client/jack/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/JACK-Client/jack/__init__.pyi index 8d5c1adfd..c3ae62ea0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/JACK-Client/jack/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/JACK-Client/jack/__init__.pyi @@ -63,22 +63,22 @@ class JackError(Exception): ... class JackErrorCode(JackError): def __init__(self, message: str, code: int) -> None: ... - message: str = ... - code: int = ... + message: str + code: int class JackOpenError(JackError): def __init__(self, name: str, status: Status) -> None: ... - name: str = ... - status: Status = ... + name: str + status: Status class Client: def __init__( self, name: str, - use_exact_name: bool = ..., - no_start_server: bool = ..., - servername: str | None = ..., - session_id: str | None = ..., + use_exact_name: bool = False, + no_start_server: bool = False, + servername: str | None = None, + session_id: str | None = None, ) -> None: ... def __enter__(self) -> Self: ... def __exit__(self, *args: Unused) -> None: ... @@ -112,9 +112,9 @@ class Client: def midi_outports(self) -> Ports: ... def owns(self, port: str | Port) -> bool: ... def activate(self) -> None: ... - def deactivate(self, ignore_errors: bool = ...) -> None: ... + def deactivate(self, ignore_errors: bool = True) -> None: ... def cpu_load(self) -> float: ... - def close(self, ignore_errors: bool = ...) -> None: ... + def close(self, ignore_errors: bool = True) -> None: ... def connect(self, source: str | Port, destination: str | Port) -> None: ... def disconnect(self, source: str | Port, destination: str | Port) -> None: ... def transport_start(self) -> None: ... @@ -138,20 +138,20 @@ class Client: def set_samplerate_callback(self, callback: Callable[[int], object]) -> None: ... def set_client_registration_callback(self, callback: Callable[[str, bool], object]) -> None: ... def set_port_registration_callback( - self, callback: Callable[[Port, bool], object] | None = ..., only_available: bool = ... + self, callback: Callable[[Port, bool], object] | None = None, only_available: bool = True ) -> None: ... def set_port_connect_callback( - self, callback: Callable[[Port, Port, bool], object] | None = ..., only_available: bool = ... + self, callback: Callable[[Port, Port, bool], object] | None = None, only_available: bool = True ) -> None: ... def set_port_rename_callback( - self, callback: Callable[[Port, str, str], object] | None = ..., only_available: bool = ... + self, callback: Callable[[Port, str, str], object] | None = None, only_available: bool = True ) -> None: ... def set_graph_order_callback(self, callback: Callable[[], object]) -> None: ... def set_xrun_callback(self, callback: Callable[[float], object]) -> None: ... def set_sync_callback(self, callback: Callable[[int, _JackPositionT], object] | None) -> None: ... def release_timebase(self) -> None: ... def set_timebase_callback( - self, callback: Callable[[int, int, _JackPositionT, bool], object] | None = ..., conditional: bool = ... + self, callback: Callable[[int, int, _JackPositionT, bool], object] | None = None, conditional: bool = False ) -> bool: ... def set_property_change_callback(self, callback: Callable[[int, str, int], object]) -> None: ... def get_uuid_for_client_name(self, name: str) -> str: ... @@ -160,16 +160,16 @@ class Client: def get_all_connections(self, port: Port) -> list[Port]: ... def get_ports( self, - name_pattern: str = ..., - is_audio: bool = ..., - is_midi: bool = ..., - is_input: bool = ..., - is_output: bool = ..., - is_physical: bool = ..., - can_monitor: bool = ..., - is_terminal: bool = ..., + name_pattern: str = "", + is_audio: bool = False, + is_midi: bool = False, + is_input: bool = False, + is_output: bool = False, + is_physical: bool = False, + can_monitor: bool = False, + is_terminal: bool = False, ) -> list[Port]: ... - def set_property(self, subject: int | str, key: str, value: str | bytes, type: str = ...) -> None: ... + def set_property(self, subject: int | str, key: str, value: str | bytes, type: str = "") -> None: ... def remove_property(self, subject: int | str, key: str) -> None: ... def remove_properties(self, subject: int | str) -> int: ... def remove_all_properties(self) -> None: ... @@ -220,7 +220,7 @@ class OwnPort(Port): def connections(self) -> list[Port]: ... def is_connected_to(self, port: str | Port) -> bool: ... def connect(self, port: str | Port) -> None: ... - def disconnect(self, other: str | Port | None = ...) -> None: ... + def disconnect(self, other: str | Port | None = None) -> None: ... def unregister(self) -> None: ... def get_buffer(self) -> _CBufferType: ... def get_array(self) -> NDArray[numpy.float32]: ... @@ -245,7 +245,7 @@ class Ports: def __len__(self) -> int: ... def __getitem__(self, name: str) -> Port: ... def __iter__(self) -> Iterator[Port]: ... - def register(self, shortname: str, is_terminal: bool = ..., is_physical: bool = ...) -> Port: ... + def register(self, shortname: str, is_terminal: bool = False, is_physical: bool = False) -> Port: ... def clear(self) -> None: ... class RingBuffer: @@ -264,7 +264,7 @@ class RingBuffer: def read_buffers(self) -> tuple[_CBufferType, _CBufferType]: ... def read_advance(self, size: int) -> None: ... def mlock(self) -> None: ... - def reset(self, size: int | None = ...) -> None: ... + def reset(self, size: int | None = None) -> None: ... @property def size(self) -> int: ... @@ -312,8 +312,8 @@ def version() -> tuple[int, int, int, int]: ... def version_string() -> str: ... def client_name_size() -> int: ... def port_name_size() -> int: ... -def set_error_function(callback: Callable[[str], object] | None = ...) -> None: ... -def set_info_function(callback: Callable[[str], object] | None = ...) -> None: ... +def set_error_function(callback: Callable[[str], object] | None = None) -> None: ... +def set_info_function(callback: Callable[[str], object] | None = None) -> None: ... def client_pid(name: str) -> int: ... METADATA_CONNECTED: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/blockprocessors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/blockprocessors.pyi index 70919f799..b563bc12a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/blockprocessors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/blockprocessors.pyi @@ -1,6 +1,6 @@ from logging import Logger from re import Match, Pattern -from typing import Any +from typing import Any, ClassVar from xml.etree.ElementTree import Element from markdown import Markdown @@ -16,8 +16,8 @@ class BlockProcessor: tab_length: int def __init__(self, parser: BlockParser) -> None: ... def lastChild(self, parent: Element) -> Element | None: ... - def detab(self, text: str, length: int | None = ...) -> tuple[str, str]: ... - def looseDetab(self, text: str, level: int = ...) -> str: ... + def detab(self, text: str, length: int | None = None) -> tuple[str, str]: ... + def looseDetab(self, text: str, level: int = 1) -> str: ... def test(self, parent: Element, block: str) -> bool: ... def run(self, parent: Element, blocks: list[str]) -> bool | None: ... @@ -36,10 +36,10 @@ class BlockQuoteProcessor(BlockProcessor): def clean(self, line: str) -> str: ... class OListProcessor(BlockProcessor): - TAG: str = ... - STARTSWITH: str = ... - LAZY_OL: bool = ... - SIBLING_TAGS: list[str] + TAG: ClassVar[str] + STARTSWITH: ClassVar[str] + LAZY_OL: ClassVar[bool] + SIBLING_TAGS: ClassVar[list[str]] RE: Pattern[str] CHILD_RE: Pattern[str] INDENT_RE: Pattern[str] @@ -47,24 +47,22 @@ class OListProcessor(BlockProcessor): def get_items(self, block: str) -> list[str]: ... class UListProcessor(OListProcessor): - TAG: str = ... - RE: Pattern[str] def __init__(self, parser: BlockParser) -> None: ... class HashHeaderProcessor(BlockProcessor): - RE: Pattern[str] + RE: ClassVar[Pattern[str]] class SetextHeaderProcessor(BlockProcessor): - RE: Pattern[str] + RE: ClassVar[Pattern[str]] class HRProcessor(BlockProcessor): - RE: str = ... - SEARCH_RE: Pattern[str] + RE: ClassVar[str] + SEARCH_RE: ClassVar[Pattern[str]] match: Match[str] class EmptyBlockProcessor(BlockProcessor): ... class ReferenceProcessor(BlockProcessor): - RE: Pattern[str] + RE: ClassVar[Pattern[str]] class ParagraphProcessor(BlockProcessor): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/core.pyi index 394417945..4f4df50db 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/core.pyi @@ -49,7 +49,7 @@ class Markdown: def is_block_level(self, tag: str) -> bool: ... def convert(self, source: str) -> str: ... def convertFile( - self, input: str | _ReadableStream | None = ..., output: str | _WritableStream | None = ..., encoding: str | None = ... + self, input: str | _ReadableStream | None = None, output: str | _WritableStream | None = None, encoding: str | None = None ) -> Markdown: ... def markdown( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/__init__.pyi index e01e02de6..cd02ff3ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/__init__.pyi @@ -4,9 +4,9 @@ from typing import Any from markdown.core import Markdown class Extension: - config: Mapping[str, list[Any]] = ... + config: Mapping[str, list[Any]] def __init__(self, **kwargs: Any) -> None: ... - def getConfig(self, key: str, default: Any = ...) -> Any: ... + def getConfig(self, key: str, default: Any = "") -> Any: ... def getConfigs(self) -> dict[str, Any]: ... def getConfigInfo(self) -> list[tuple[str, str]]: ... def setConfig(self, key: str, value: Any) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/codehilite.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/codehilite.pyi index 2526ce4c0..df9948b65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/codehilite.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/codehilite.pyi @@ -35,7 +35,7 @@ class CodeHilite: use_pygments: bool = ..., **options: Any, ) -> None: ... - def hilite(self, shebang: bool = ...) -> str: ... + def hilite(self, shebang: bool = True) -> str: ... class HiliteTreeprocessor(Treeprocessor): def code_unescape(self, text): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/fenced_code.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/fenced_code.pyi index 2d26b070c..7a84ab0e4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/fenced_code.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/fenced_code.pyi @@ -1,5 +1,6 @@ +from _typeshed import Incomplete from re import Pattern -from typing import Any +from typing import ClassVar from markdown.extensions import Extension from markdown.preprocessors import Preprocessor @@ -7,11 +8,8 @@ from markdown.preprocessors import Preprocessor class FencedCodeExtension(Extension): ... class FencedBlockPreprocessor(Preprocessor): - FENCED_BLOCK_RE: Pattern[str] - CODE_WRAP: str = ... - LANG_TAG: str = ... - checked_for_codehilite: bool = ... - codehilite_conf: Any + FENCED_BLOCK_RE: ClassVar[Pattern[str]] + codehilite_conf: dict[Incomplete, Incomplete] def __init__(self, md) -> None: ... def makeExtension(**kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/footnotes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/footnotes.pyi index 3f9320314..92b34ecbb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/footnotes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/footnotes.pyi @@ -15,7 +15,7 @@ TABBED_RE: Pattern[str] RE_REF_ID: Any class FootnoteExtension(Extension): - unique_prefix: int = ... + unique_prefix: int found_refs: Any used_refs: Any def __init__(self, **kwargs) -> None: ... @@ -23,12 +23,12 @@ class FootnoteExtension(Extension): md: Markdown footnotes: Any def reset(self) -> None: ... - def unique_ref(self, reference, found: bool = ...): ... + def unique_ref(self, reference, found: bool = False): ... def findFootnotesPlaceholder(self, root): ... def setFootnote(self, id, text) -> None: ... def get_separator(self): ... def makeFootnoteId(self, id): ... - def makeFootnoteRefId(self, id, found: bool = ...): ... + def makeFootnoteRefId(self, id, found: bool = False): ... def makeFootnotesDiv(self, root): ... class FootnotePreprocessor(Preprocessor): @@ -46,7 +46,7 @@ class FootnotePostTreeprocessor(Treeprocessor): def add_duplicates(self, li, duplicates) -> None: ... def get_num_duplicates(self, li): ... def handle_duplicates(self, parent) -> None: ... - offset: int = ... + offset: int class FootnoteTreeprocessor(Treeprocessor): footnotes: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/tables.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/tables.pyi index 39a4e96b8..26bb7c0e2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/tables.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/tables.pyi @@ -1,4 +1,5 @@ -from typing import Any +from re import Pattern +from typing import ClassVar from markdown.blockprocessors import BlockProcessor from markdown.extensions import Extension @@ -8,10 +9,10 @@ PIPE_LEFT: int PIPE_RIGHT: int class TableProcessor(BlockProcessor): - RE_CODE_PIPES: Any - RE_END_BORDER: Any - border: bool = ... - separator: str = ... + RE_CODE_PIPES: ClassVar[Pattern[str]] + RE_END_BORDER: ClassVar[Pattern[str]] + border: bool + separator: str def __init__(self, parser, config) -> None: ... class TableExtension(Extension): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/toc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/toc.pyi index 519880bb9..60c465f4c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/toc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/extensions/toc.pyi @@ -11,7 +11,7 @@ IDCOUNT_RE: Pattern[str] def unique(id, ids): ... def get_name(el): ... -def stashedHTML2text(text, md, strip_entities: bool = ...): ... +def stashedHTML2text(text, md, strip_entities: bool = True): ... def unescape(text): ... def nest_toc_tokens(toc_list): ... @@ -27,7 +27,7 @@ class TocTreeprocessor(Treeprocessor): permalink_class: Any permalink_title: Any header_rgx: Any - toc_top: int = ... + toc_top: int toc_bottom: Any def __init__(self, md, config) -> None: ... def iterparent(self, node) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/inlinepatterns.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/inlinepatterns.pyi index 6cea38b1f..270f74a4b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/inlinepatterns.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/inlinepatterns.pyi @@ -1,6 +1,6 @@ import re -from re import Match -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import Any, ClassVar, NamedTuple from xml.etree.ElementTree import Element from markdown.core import Markdown @@ -33,23 +33,28 @@ LINE_BREAK_RE: str def dequote(string): ... -class EmStrongItem: ... +class _EmStrongItemBase(NamedTuple): + pattern: re.Pattern[str] + builder: str + tags: str + +class EmStrongItem(_EmStrongItemBase): ... class Pattern: - ANCESTOR_EXCLUDES: Any + ANCESTOR_EXCLUDES: ClassVar[tuple[Incomplete, ...]] pattern: Any - compiled_re: Any + compiled_re: re.Pattern[str] md: Markdown - def __init__(self, pattern, md: Markdown | None = ...) -> None: ... + def __init__(self, pattern, md: Markdown | None = None) -> None: ... def getCompiledRegExp(self): ... - def handleMatch(self, m: Match[str]) -> str | Element | None: ... + def handleMatch(self, m: re.Match[str]) -> str | Element | None: ... def type(self): ... def unescape(self, text): ... class InlineProcessor(Pattern): - safe_mode: bool = ... - def __init__(self, pattern, md: Markdown | None = ...) -> None: ... - def handleMatch(self, m: Match[str], data) -> tuple[Element, int, int] | tuple[None, None, None]: ... # type: ignore[override] + safe_mode: bool + def __init__(self, pattern, md: Markdown | None = None) -> None: ... + def handleMatch(self, m: re.Match[str], data) -> tuple[Element, int, int] | tuple[None, None, None]: ... # type: ignore[override] class SimpleTextPattern(Pattern): ... class SimpleTextInlineProcessor(InlineProcessor): ... @@ -68,7 +73,7 @@ class SubstituteTagInlineProcessor(SimpleTagInlineProcessor): ... class BacktickInlineProcessor(InlineProcessor): ESCAPED_BSLASH: Any - tag: str = ... + tag: str def __init__(self, pattern) -> None: ... class DoubleTagPattern(SimpleTagPattern): ... @@ -76,19 +81,18 @@ class DoubleTagInlineProcessor(SimpleTagInlineProcessor): ... class HtmlInlineProcessor(InlineProcessor): ... class AsteriskProcessor(InlineProcessor): - PATTERNS: Any + PATTERNS: ClassVar[list[EmStrongItem]] def build_single(self, m, tag, idx): ... def build_double(self, m, tags, idx): ... def build_double2(self, m, tags, idx): ... def parse_sub_patterns(self, data, parent, last, idx) -> None: ... def build_element(self, m, builder, tags, index): ... -class UnderscoreProcessor(AsteriskProcessor): - PATTERNS: Any +class UnderscoreProcessor(AsteriskProcessor): ... class LinkInlineProcessor(InlineProcessor): - RE_LINK: Any - RE_TITLE_CLEAN: Any + RE_LINK: ClassVar[re.Pattern[str]] + RE_TITLE_CLEAN: ClassVar[re.Pattern[str]] def getLink(self, data, index): ... def getText(self, data, index): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/preprocessors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/preprocessors.pyi index 9478ffdfb..52702d7ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/preprocessors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/preprocessors.pyi @@ -1,4 +1,3 @@ -from re import Pattern from typing import Any from . import util @@ -12,13 +11,8 @@ class NormalizeWhitespace(Preprocessor): ... class HtmlBlockPreprocessor(Preprocessor): right_tag_patterns: Any - attrs_pattern: str = ... + attrs_pattern: str left_tag_pattern: Any attrs_re: Any left_tag_re: Any - markdown_in_raw: bool = ... - -class ReferencePreprocessor(Preprocessor): - TITLE: str = ... - RE: Pattern[str] - TITLE_RE: Pattern[str] + markdown_in_raw: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/treeprocessors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/treeprocessors.pyi index 86968de15..5e9e7936e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/treeprocessors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/treeprocessors.pyi @@ -17,7 +17,7 @@ class InlineProcessor(Treeprocessor): def __init__(self, md) -> None: ... stashed_nodes: Any parent_map: Any - def run(self, tree: Element, ancestors: Incomplete | None = ...) -> Element: ... + def run(self, tree: Element, ancestors: Incomplete | None = None) -> Element: ... class PrettifyTreeprocessor(Treeprocessor): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/util.pyi index 865abdd55..7482313b6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/util.pyi @@ -15,8 +15,8 @@ HTML_PLACEHOLDER_RE: Pattern[str] TAG_PLACEHOLDER: Any RTL_BIDI_RANGES: Any -def deprecated(message: str, stacklevel: int = ...): ... -def parseBoolValue(value: object, fail_on_errors: bool = ..., preserve_none: bool = ...) -> bool | None: ... +def deprecated(message: str, stacklevel: int = 2): ... +def parseBoolValue(value: object, fail_on_errors: bool = True, preserve_none: bool = False) -> bool | None: ... def code_escape(text: str) -> str: ... def nearing_recursion_limit() -> bool: ... @@ -24,12 +24,12 @@ class AtomicString(str): ... class Processor: md: Markdown - def __init__(self, md: Markdown | None = ...) -> None: ... + def __init__(self, md: Markdown | None = None) -> None: ... class HtmlStash: - html_counter: int = ... + html_counter: int rawHtmlBlocks: list[str] - tag_counter: int = ... + tag_counter: int tag_data: list[dict[str, Any]] def __init__(self) -> None: ... def store(self, html: str) -> str: ... @@ -48,4 +48,4 @@ class Registry: def __len__(self) -> int: ... def get_index_for_name(self, name: str) -> int: ... def register(self, item: Any, name: str, priority: float) -> None: ... - def deregister(self, name: str, strict: bool = ...) -> None: ... + def deregister(self, name: str, strict: bool = True) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi index 1ad9df579..50a091c5b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi @@ -28,7 +28,7 @@ BLP_ALPHA_ENCODING_DXT3: Literal[AlphaEncoding.DXT3] BLP_ALPHA_ENCODING_DXT5: Literal[AlphaEncoding.DXT5] def unpack_565(i): ... -def decode_dxt1(data, alpha: bool = ...): ... +def decode_dxt1(data, alpha: bool = False): ... def decode_dxt3(data): ... def decode_dxt5(data): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ContainerIO.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ContainerIO.pyi index 6ca38fbe1..88baae6b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ContainerIO.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ContainerIO.pyi @@ -7,8 +7,8 @@ class ContainerIO: length: Any def __init__(self, file, offset, length) -> None: ... def isatty(self): ... - def seek(self, offset, mode=...) -> None: ... + def seek(self, offset, mode=0) -> None: ... def tell(self): ... - def read(self, n: int = ...): ... + def read(self, n: int = 0): ... def readline(self): ... def readlines(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi index 7e76e8681..d4ad860b2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi @@ -8,13 +8,13 @@ field: Any gs_windows_binary: Any def has_ghostscript(): ... -def Ghostscript(tile, size, fp, scale: int = ..., transparency: bool = ...): ... +def Ghostscript(tile, size, fp, scale: int = 1, transparency: bool = False): ... class PSFile: fp: Any char: Any def __init__(self, fp) -> None: ... - def seek(self, offset, whence=...) -> None: ... + def seek(self, offset, whence=0) -> None: ... def readline(self): ... class EpsImageFile(ImageFile): @@ -24,5 +24,5 @@ class EpsImageFile(ImageFile): im: Any mode: Any tile: Any - def load(self, scale: int = ..., transparency: bool = ...) -> None: ... + def load(self, scale: int = 1, transparency: bool = False) -> None: ... def load_seek(self, *args, **kwargs) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GdImageFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GdImageFile.pyi index a50f3f3c3..2eb004e84 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GdImageFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GdImageFile.pyi @@ -7,4 +7,4 @@ class GdImageFile(ImageFile): format: ClassVar[Literal["GD"]] format_description: ClassVar[str] -def open(fp, mode: str = ...): ... +def open(fp, mode: str = "r"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi index 26278948a..309a666d5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi @@ -20,5 +20,5 @@ class GifImageFile(ImageFile): RAWMODE: Any def get_interlace(im): ... -def getheader(im, palette: Incomplete | None = ..., info: Incomplete | None = ...): ... -def getdata(im, offset=..., **params): ... +def getheader(im, palette: Incomplete | None = None, info: Incomplete | None = None): ... +def getdata(im, offset=(0, 0), **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpGradientFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpGradientFile.pyi index f4f61bd7a..9261f4c10 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpGradientFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpGradientFile.pyi @@ -12,7 +12,7 @@ SEGMENTS: Any class GradientFile: gradient: Any - def getpalette(self, entries: int = ...): ... + def getpalette(self, entries: int = 256): ... class GimpGradientFile(GradientFile): gradient: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi index bc0b57784..8460d46ca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi @@ -21,7 +21,7 @@ class IcnsFile: def itersizes(self): ... def bestsize(self): ... def dataforsize(self, size): ... - def getimage(self, size: Incomplete | None = ...): ... + def getimage(self, size: Incomplete | None = None): ... class IcnsImageFile(ImageFile): format: ClassVar[Literal["ICNS"]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi index f84ed76d5..0037cd06b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi @@ -9,8 +9,8 @@ class IcoFile: nb_items: Any def __init__(self, buf): ... def sizes(self): ... - def getentryindex(self, size, bpp: bool = ...): ... - def getimage(self, size, bpp: bool = ...): ... + def getentryindex(self, size, bpp: bool = False): ... + def getimage(self, size, bpp: bool = False): ... def frame(self, idx): ... class IcoImageFile(ImageFile): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi index 5a1983a79..e85e42df8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi @@ -177,74 +177,74 @@ class Image: def __eq__(self, other: object) -> bool: ... def __getstate__(self) -> _ImageState: ... def __setstate__(self, state: _ImageState) -> None: ... - def tobytes(self, encoder_name: str = ..., *args) -> bytes: ... - def tobitmap(self, name: str = ...) -> bytes: ... - def frombytes(self, data: bytes, decoder_name: str = ..., *args) -> None: ... + def tobytes(self, encoder_name: str = "raw", *args) -> bytes: ... + def tobitmap(self, name: str = "image") -> bytes: ... + def frombytes(self, data: bytes, decoder_name: str = "raw", *args) -> None: ... def load(self) -> None: ... def verify(self) -> None: ... def convert( self, - mode: _Mode | None = ..., - matrix: _ConversionMatrix | None = ..., - dither: int | None = ..., + mode: _Mode | None = None, + matrix: _ConversionMatrix | None = None, + dither: int | None = None, palette: Palette | Literal[0, 1] = ..., - colors: int = ..., + colors: int = 256, ) -> Image: ... def quantize( self, - colors: int = ..., - method: Quantize | Literal[0, 1, 2, 3] | None = ..., - kmeans: int = ..., - palette: Image | None = ..., + colors: int = 256, + method: Quantize | Literal[0, 1, 2, 3] | None = None, + kmeans: int = 0, + palette: Image | None = None, dither: int = ..., ) -> Image: ... def copy(self) -> Image: ... __copy__ = copy - def crop(self, box: _Box | None = ...) -> Image: ... + def crop(self, box: _Box | None = None) -> Image: ... def draft(self, mode: _Mode, size: _Size) -> None: ... def filter(self, filter: Filter | Callable[[], Filter]) -> Image: ... def getbands(self) -> tuple[str, ...]: ... def getbbox(self) -> tuple[int, int, int, int] | None: ... - def getcolors(self, maxcolors: int = ...) -> list[tuple[int, int]]: ... - def getdata(self, band: int | None = ...): ... + def getcolors(self, maxcolors: int = 256) -> list[tuple[int, int]]: ... + def getdata(self, band: int | None = None): ... def getextrema(self): ... def getexif(self) -> Exif: ... def get_child_images(self) -> list[Image]: ... def getim(self): ... - def getpalette(self, rawmode: str | None = ...) -> list[int] | None: ... + def getpalette(self, rawmode: str | None = "RGB") -> list[int] | None: ... def getpixel(self, xy: tuple[int, int]): ... def getprojection(self) -> tuple[list[int], list[int]]: ... - def histogram(self, mask: Image | None = ..., extrema: tuple[int, int] | tuple[float, float] | None = ...) -> list[int]: ... - def entropy(self, mask: Image | None = ..., extrema: tuple[int, int] | tuple[float, float] | None = ...) -> float: ... - def paste(self, im: Image | _Color, box: tuple[int, int] | _Box | None = ..., mask: Image | None = ...) -> None: ... - def alpha_composite(self, im: Image, dest: tuple[int, int] = ..., source: tuple[int, int] = ...) -> None: ... - def point(self, lut, mode: _Mode | None = ...) -> Image: ... + def histogram(self, mask: Image | None = None, extrema: tuple[int, int] | tuple[float, float] | None = None) -> list[int]: ... + def entropy(self, mask: Image | None = None, extrema: tuple[int, int] | tuple[float, float] | None = None) -> float: ... + def paste(self, im: Image | _Color, box: tuple[int, int] | _Box | None = None, mask: Image | None = None) -> None: ... + def alpha_composite(self, im: Image, dest: tuple[int, int] = (0, 0), source: tuple[int, int] = (0, 0)) -> None: ... + def point(self, lut, mode: _Mode | None = None) -> Image: ... def putalpha(self, alpha: Image | int) -> None: ... - def putdata(self, data: Sequence[int], scale: float = ..., offset: float = ...) -> None: ... - def putpalette(self, data: ImagePalette | bytes | Iterable[int] | SupportsBytes, rawmode: _Mode | None = ...) -> None: ... + def putdata(self, data: Sequence[int], scale: float = 1.0, offset: float = 0.0) -> None: ... + def putpalette(self, data: ImagePalette | bytes | Iterable[int] | SupportsBytes, rawmode: _Mode | None = "RGB") -> None: ... def putpixel(self, xy: tuple[int, int], value: _Color | list[float]) -> None: ... - def remap_palette(self, dest_map: Iterable[int], source_palette: Sequence[int] | None = ...) -> Image: ... + def remap_palette(self, dest_map: Iterable[int], source_palette: Sequence[int] | None = None) -> Image: ... def resize( self, size: tuple[int, int], - resample: Resampling | _Resample | None = ..., - box: tuple[float, float, float, float] | None = ..., - reducing_gap: float | None = ..., + resample: Resampling | _Resample | None = None, + box: tuple[float, float, float, float] | None = None, + reducing_gap: float | None = None, ) -> Image: ... - def reduce(self, factor: int | tuple[int, int] | list[int], box: _Box | None = ...) -> Image: ... + def reduce(self, factor: int | tuple[int, int] | list[int], box: _Box | None = None) -> Image: ... def rotate( self, angle: float, resample: Resampling | _Resample = ..., expand: bool = ..., - center: tuple[float, float] | None = ..., - translate: tuple[float, float] | None = ..., - fillcolor: _Color | None = ..., + center: tuple[float, float] | None = None, + translate: tuple[float, float] | None = None, + fillcolor: _Color | None = None, ) -> Image: ... def save( self, fp: str | bytes | Path | _Writeable, - format: str | None = ..., + format: str | None = None, *, save_all: bool = ..., bitmap_format: Literal["bmp", "png"] = ..., # for ICO files @@ -252,19 +252,19 @@ class Image: **params: Any, ) -> None: ... def seek(self, frame: int) -> None: ... - def show(self, title: str | None = ...) -> None: ... + def show(self, title: str | None = None) -> None: ... def split(self) -> tuple[Image, ...]: ... def getchannel(self, channel: int | str) -> Image: ... def tell(self) -> int: ... - def thumbnail(self, size: tuple[int, int], resample: Resampling | _Resample = ..., reducing_gap: float = ...) -> None: ... + def thumbnail(self, size: tuple[int, int], resample: Resampling | _Resample = ..., reducing_gap: float = 2.0) -> None: ... def transform( self, size: _Size, method: Transform | Literal[0, 1, 2, 3, 4], - data=..., + data=None, resample: Resampling | _Resample = ..., - fill: int = ..., - fillcolor: _Color | int | None = ..., + fill: int = 1, + fillcolor: _Color | int | None = None, ) -> Image: ... def transpose(self, method: Transpose | Literal[0, 1, 2, 3, 4, 5, 6]) -> Image: ... def effect_spread(self, distance: int) -> Image: ... @@ -274,21 +274,21 @@ class Image: class ImagePointHandler: ... class ImageTransformHandler: ... -def new(mode: _Mode, size: tuple[int, int], color: _Color = ...) -> Image: ... -def frombytes(mode: _Mode, size: tuple[int, int], data, decoder_name: str = ..., *args) -> Image: ... -def frombuffer(mode: _Mode, size: tuple[int, int], data, decoder_name: str = ..., *args) -> Image: ... -def fromarray(obj, mode: _Mode | None = ...) -> Image: ... +def new(mode: _Mode, size: tuple[int, int], color: _Color = 0) -> Image: ... +def frombytes(mode: _Mode, size: tuple[int, int], data, decoder_name: str = "raw", *args) -> Image: ... +def frombuffer(mode: _Mode, size: tuple[int, int], data, decoder_name: str = "raw", *args) -> Image: ... +def fromarray(obj, mode: _Mode | None = None) -> Image: ... def fromqimage(im) -> Image: ... def fromqpixmap(im) -> Image: ... def open( - fp: str | bytes | Path | SupportsRead[bytes], mode: Literal["r"] = ..., formats: list[str] | tuple[str, ...] | None = ... + fp: str | bytes | Path | SupportsRead[bytes], mode: Literal["r"] = "r", formats: list[str] | tuple[str, ...] | None = None ) -> Image: ... def alpha_composite(im1: Image, im2: Image) -> Image: ... def blend(im1: Image, im2: Image, alpha: float) -> Image: ... def composite(image1: Image, image2: Image, mask: Image) -> Image: ... def eval(image: Image, *args) -> Image: ... def merge(mode: _Mode, bands: Sequence[Image]) -> Image: ... -def register_open(id: str, factory, accept=...) -> None: ... +def register_open(id: str, factory, accept=None) -> None: ... def register_mime(id: str, mimetype: str) -> None: ... def register_save(id: str, driver) -> None: ... def register_save_all(id: str, driver) -> None: ... @@ -304,7 +304,7 @@ def radial_gradient(mode: _Mode) -> Image: ... class Exif(MutableMapping[int, Any]): def load(self, data: bytes) -> None: ... - def tobytes(self, offset: int = ...) -> bytes: ... + def tobytes(self, offset: int = 8) -> bytes: ... def get_ifd(self, tag: int): ... def hide_offsets(self) -> None: ... def __len__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageChops.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageChops.pyi index 0e9f53046..efc1d29b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageChops.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageChops.pyi @@ -11,8 +11,8 @@ def screen(image1: Image, image2: Image) -> Image: ... def soft_light(image1: Image, image2: Image) -> Image: ... def hard_light(image1: Image, image2: Image) -> Image: ... def overlay(image1: Image, image2: Image) -> Image: ... -def add(image1: Image, image2: Image, scale: float = ..., offset: int = ...) -> Image: ... -def subtract(image1: Image, image2: Image, scale: float = ..., offset: int = ...) -> Image: ... +def add(image1: Image, image2: Image, scale: float = 1.0, offset: int = 0) -> Image: ... +def subtract(image1: Image, image2: Image, scale: float = 1.0, offset: int = 0) -> Image: ... def add_modulo(image1: Image, image2: Image) -> Image: ... def subtract_modulo(image1: Image, image2: Image) -> Image: ... def logical_and(image1: Image, image2: Image) -> Image: ... @@ -20,4 +20,4 @@ def logical_or(image1: Image, image2: Image) -> Image: ... def logical_xor(image1: Image, image2: Image) -> Image: ... def blend(image1: Image, image2: Image, alpha: float) -> Image: ... def composite(image1: Image, image2: Image, mask: Image) -> Image: ... -def offset(image: Image, xoffset: int, yoffset: int | None = ...) -> Image: ... +def offset(image: Image, xoffset: int, yoffset: int | None = None) -> Image: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi index cc750ee55..b4a65c4d0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi @@ -47,15 +47,15 @@ class ImageCmsTransform(ImagePointHandler): input_mode, output_mode, intent=..., - proof: Incomplete | None = ..., + proof: Incomplete | None = None, proof_intent=..., - flags: int = ..., + flags: int = 0, ) -> None: ... def point(self, im): ... - def apply(self, im, imOut: Incomplete | None = ...): ... + def apply(self, im, imOut: Incomplete | None = None): ... def apply_in_place(self, im): ... -def get_display_profile(handle: Incomplete | None = ...): ... +def get_display_profile(handle: Incomplete | None = None): ... class PyCMSError(Exception): ... @@ -64,21 +64,21 @@ def profileToProfile( inputProfile, outputProfile, renderingIntent=..., - outputMode: Incomplete | None = ..., - inPlace: bool = ..., - flags: int = ..., + outputMode: Incomplete | None = None, + inPlace: bool = False, + flags: int = 0, ): ... def getOpenProfile(profileFilename): ... -def buildTransform(inputProfile, outputProfile, inMode, outMode, renderingIntent=..., flags: int = ...): ... +def buildTransform(inputProfile, outputProfile, inMode, outMode, renderingIntent=..., flags: int = 0): ... def buildProofTransform( - inputProfile, outputProfile, proofProfile, inMode, outMode, renderingIntent=..., proofRenderingIntent=..., flags=... + inputProfile, outputProfile, proofProfile, inMode, outMode, renderingIntent=..., proofRenderingIntent=..., flags=16384 ): ... buildTransformFromOpenProfiles = buildTransform buildProofTransformFromOpenProfiles = buildProofTransform -def applyTransform(im, transform, inPlace: bool = ...): ... -def createProfile(colorSpace, colorTemp: int = ...): ... +def applyTransform(im, transform, inPlace: bool = False): ... +def createProfile(colorSpace, colorTemp: int = -1): ... def getProfileName(profile): ... def getProfileInfo(profile): ... def getProfileCopyright(profile): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi index a146d856c..5ff7e3386 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi @@ -11,65 +11,65 @@ _XY: TypeAlias = Sequence[float | tuple[float, float]] _Outline: TypeAlias = Any class ImageDraw: - def __init__(self, im: Image, mode: str | None = ...) -> None: ... + def __init__(self, im: Image, mode: str | None = None) -> None: ... def getfont(self): ... - def arc(self, xy: _XY, start: float, end: float, fill: _Ink | None = ..., width: float = ...) -> None: ... - def bitmap(self, xy: _XY, bitmap: Image, fill: _Ink | None = ...) -> None: ... + def arc(self, xy: _XY, start: float, end: float, fill: _Ink | None = None, width: float = 1) -> None: ... + def bitmap(self, xy: _XY, bitmap: Image, fill: _Ink | None = None) -> None: ... def chord( - self, xy: _XY, start: float, end: float, fill: _Ink | None = ..., outline: _Ink | None = ..., width: float = ... + self, xy: _XY, start: float, end: float, fill: _Ink | None = None, outline: _Ink | None = None, width: float = 1 ) -> None: ... - def ellipse(self, xy: _XY, fill: _Ink | None = ..., outline: _Ink | None = ..., width: float = ...) -> None: ... - def line(self, xy: _XY, fill: _Ink | None = ..., width: float = ..., joint: Literal["curve"] | None = ...) -> None: ... - def shape(self, shape: _Outline, fill: _Ink | None = ..., outline: _Ink | None = ...) -> None: ... + def ellipse(self, xy: _XY, fill: _Ink | None = None, outline: _Ink | None = None, width: float = 1) -> None: ... + def line(self, xy: _XY, fill: _Ink | None = None, width: float = 0, joint: Literal["curve"] | None = None) -> None: ... + def shape(self, shape: _Outline, fill: _Ink | None = None, outline: _Ink | None = None) -> None: ... def pieslice( self, xy: tuple[tuple[float, float], tuple[float, float]], start: float, end: float, - fill: _Ink | None = ..., - outline: _Ink | None = ..., - width: float = ..., + fill: _Ink | None = None, + outline: _Ink | None = None, + width: float = 1, ) -> None: ... - def point(self, xy: _XY, fill: _Ink | None = ...) -> None: ... - def polygon(self, xy: _XY, fill: _Ink | None = ..., outline: _Ink | None = ..., width: float = ...) -> None: ... + def point(self, xy: _XY, fill: _Ink | None = None) -> None: ... + def polygon(self, xy: _XY, fill: _Ink | None = None, outline: _Ink | None = None, width: float = 1) -> None: ... def regular_polygon( self, bounding_circle: tuple[float, float] | tuple[float, float, float] | list[int], n_sides: int, - rotation: float = ..., - fill: _Ink | None = ..., - outline: _Ink | None = ..., + rotation: float = 0, + fill: _Ink | None = None, + outline: _Ink | None = None, ) -> None: ... def rectangle( self, xy: tuple[float, float, float, float] | tuple[tuple[float, float], tuple[float, float]], - fill: _Ink | None = ..., - outline: _Ink | None = ..., - width: float = ..., + fill: _Ink | None = None, + outline: _Ink | None = None, + width: float = 1, ) -> None: ... def rounded_rectangle( self, xy: tuple[float, float, float, float] | tuple[tuple[float, float], tuple[float, float]], - radius: float = ..., - fill: _Ink | None = ..., - outline: _Ink | None = ..., - width: float = ..., + radius: float = 0, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: float = 1, ) -> None: ... def text( self, xy: tuple[float, float], text: str | bytes, - fill: _Ink | None = ..., - font: _Font | None = ..., - anchor: str | None = ..., - spacing: float = ..., - align: Literal["left", "center", "right"] = ..., - direction: Literal["rtl", "ltr", "ttb"] | None = ..., - features: Sequence[str] | None = ..., - language: str | None = ..., - stroke_width: int = ..., - stroke_fill: _Ink | None = ..., - embedded_color: bool = ..., + fill: _Ink | None = None, + font: _Font | None = None, + anchor: str | None = None, + spacing: float = 4, + align: Literal["left", "center", "right"] = "left", + direction: Literal["rtl", "ltr", "ttb"] | None = None, + features: Sequence[str] | None = None, + language: str | None = None, + stroke_width: int = 0, + stroke_fill: _Ink | None = None, + embedded_color: bool = False, *args, **kwargs, ) -> None: ... @@ -77,80 +77,80 @@ class ImageDraw: self, xy: tuple[float, float], text: str | bytes, - fill: _Ink | None = ..., - font: _Font | None = ..., - anchor: str | None = ..., - spacing: float = ..., - align: Literal["left", "center", "right"] = ..., - direction: Literal["rtl", "ltr", "ttb"] | None = ..., - features: Incomplete | None = ..., - language: str | None = ..., - stroke_width: int = ..., - stroke_fill: _Ink | None = ..., - embedded_color: bool = ..., + fill: _Ink | None = None, + font: _Font | None = None, + anchor: str | None = None, + spacing: float = 4, + align: Literal["left", "center", "right"] = "left", + direction: Literal["rtl", "ltr", "ttb"] | None = None, + features: Incomplete | None = None, + language: str | None = None, + stroke_width: int = 0, + stroke_fill: _Ink | None = None, + embedded_color: bool = False, ) -> None: ... def textsize( self, text: str | bytes, - font: _Font | None = ..., - spacing: float = ..., - direction: Literal["rtl", "ltr", "ttb"] | None = ..., - features: Sequence[str] | None = ..., - language: str | None = ..., - stroke_width: int = ..., + font: _Font | None = None, + spacing: float = 4, + direction: Literal["rtl", "ltr", "ttb"] | None = None, + features: Sequence[str] | None = None, + language: str | None = None, + stroke_width: int = 0, ) -> tuple[int, int]: ... def multiline_textsize( self, text: str | bytes, - font: _Font | None = ..., - spacing: float = ..., - direction: Literal["rtl", "ltr", "ttb"] | None = ..., - features: Sequence[str] | None = ..., - language: str | None = ..., - stroke_width: int = ..., + font: _Font | None = None, + spacing: float = 4, + direction: Literal["rtl", "ltr", "ttb"] | None = None, + features: Sequence[str] | None = None, + language: str | None = None, + stroke_width: int = 0, ) -> tuple[int, int]: ... def textlength( self, text: str | bytes, - font: _Font | None = ..., - direction: Literal["rtl", "ltr", "ttb"] | None = ..., - features: Sequence[str] | None = ..., - language: str | None = ..., - embedded_color: bool = ..., + font: _Font | None = None, + direction: Literal["rtl", "ltr", "ttb"] | None = None, + features: Sequence[str] | None = None, + language: str | None = None, + embedded_color: bool = False, ) -> float: ... def textbbox( self, xy: tuple[float, float], text: str | bytes, - font: _Font | None = ..., - anchor: str | None = ..., - spacing: float = ..., - align: Literal["left", "center", "right"] = ..., - direction: Literal["rtl", "ltr", "ttb"] | None = ..., - features: Incomplete | None = ..., - language: str | None = ..., - stroke_width: int = ..., - embedded_color: bool = ..., + font: _Font | None = None, + anchor: str | None = None, + spacing: float = 4, + align: Literal["left", "center", "right"] = "left", + direction: Literal["rtl", "ltr", "ttb"] | None = None, + features: Incomplete | None = None, + language: str | None = None, + stroke_width: int = 0, + embedded_color: bool = False, ) -> tuple[int, int, int, int]: ... def multiline_textbbox( self, xy: tuple[float, float], text: str | bytes, - font: _Font | None = ..., - anchor: str | None = ..., - spacing: float = ..., - align: Literal["left", "center", "right"] = ..., - direction: Literal["rtl", "ltr", "ttb"] | None = ..., - features: Incomplete | None = ..., - language: str | None = ..., - stroke_width: int = ..., - embedded_color: bool = ..., + font: _Font | None = None, + anchor: str | None = None, + spacing: float = 4, + align: Literal["left", "center", "right"] = "left", + direction: Literal["rtl", "ltr", "ttb"] | None = None, + features: Incomplete | None = None, + language: str | None = None, + stroke_width: int = 0, + embedded_color: bool = False, ) -> tuple[int, int, int, int]: ... -def Draw(im: Image, mode: str | None = ...) -> ImageDraw: ... +def Draw(im: Image, mode: str | None = None) -> ImageDraw: ... def Outline() -> _Outline: ... @overload -def getdraw(im: None = ..., hints: Container[Literal["nicest"]] | None = ...) -> tuple[None, Any]: ... +def getdraw(im: None = None, hints: Container[Literal["nicest"]] | None = None) -> tuple[None, Any]: ... @overload -def getdraw(im: Image, hints: Container[Literal["nicest"]] | None = ...) -> tuple[Image, Any]: ... -def floodfill(image: Image, xy: tuple[float, float], value, border=..., thresh: float = ...) -> None: ... +def getdraw(im: Image, hints: Container[Literal["nicest"]] | None = None) -> tuple[Image, Any]: ... +def floodfill(image: Image, xy: tuple[float, float], value, border=None, thresh: float = 0) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi index b38d3e803..307c97701 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi @@ -4,24 +4,24 @@ from typing import Any class Pen: color: Any width: Any - def __init__(self, color, width: int = ..., opacity: int = ...) -> None: ... + def __init__(self, color, width: int = 1, opacity: int = 255) -> None: ... class Brush: color: Any - def __init__(self, color, opacity: int = ...) -> None: ... + def __init__(self, color, opacity: int = 255) -> None: ... class Font: color: Any font: Any - def __init__(self, color, file, size: int = ...) -> None: ... + def __init__(self, color, file, size: int = 12) -> None: ... class Draw: draw: Any image: Any transform: Any - def __init__(self, image, size: Incomplete | None = ..., color: Incomplete | None = ...) -> None: ... + def __init__(self, image, size: Incomplete | None = None, color: Incomplete | None = None) -> None: ... def flush(self): ... - def render(self, op, xy, pen, brush: Incomplete | None = ...) -> None: ... + def render(self, op, xy, pen, brush: Incomplete | None = None) -> None: ... def settransform(self, offset) -> None: ... def arc(self, xy, start, end, *options) -> None: ... def chord(self, xy, start, end, *options) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi index 215a47246..361909ee3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi @@ -19,7 +19,7 @@ class ImageFile(Image): decodermaxblock: Any fp: Any filename: Any - def __init__(self, fp: Incomplete | None = ..., filename: Incomplete | None = ...) -> None: ... + def __init__(self, fp: Incomplete | None = None, filename: Incomplete | None = None) -> None: ... def get_format_mimetype(self): ... def verify(self) -> None: ... map: Any @@ -65,5 +65,5 @@ class PyDecoder: def decode(self, buffer) -> None: ... def cleanup(self) -> None: ... def setfd(self, fd) -> None: ... - def setimage(self, im, extents: Incomplete | None = ...) -> None: ... - def set_as_raw(self, data, rawmode: Incomplete | None = ...) -> None: ... + def setimage(self, im, extents: Incomplete | None = None) -> None: ... + def set_as_raw(self, data, rawmode: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFilter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFilter.pyi index bbb647a4b..9a83da5a0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFilter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFilter.pyi @@ -18,7 +18,7 @@ class BuiltinFilter(MultibandFilter): class Kernel(BuiltinFilter): name: str filterargs: _FilterArgs - def __init__(self, size: Sequence[int], kernel: Sequence[int], scale: Incomplete | None = ..., offset: int = ...) -> None: ... + def __init__(self, size: Sequence[int], kernel: Sequence[int], scale: Incomplete | None = None, offset: int = 0) -> None: ... class RankFilter(Filter): name: str @@ -31,30 +31,30 @@ class MedianFilter(RankFilter): name: str size: int rank: int - def __init__(self, size: int = ...) -> None: ... + def __init__(self, size: int = 3) -> None: ... class MinFilter(RankFilter): name: str size: int rank: int - def __init__(self, size: int = ...) -> None: ... + def __init__(self, size: int = 3) -> None: ... class MaxFilter(RankFilter): name: str size: int rank: int - def __init__(self, size: int = ...) -> None: ... + def __init__(self, size: int = 3) -> None: ... class ModeFilter(Filter): name: str size: int - def __init__(self, size: int = ...) -> None: ... + def __init__(self, size: int = 3) -> None: ... def filter(self, image) -> Image: ... class GaussianBlur(MultibandFilter): name: str radius: float - def __init__(self, radius: float = ...) -> None: ... + def __init__(self, radius: float = 2) -> None: ... def filter(self, image) -> Image: ... class BoxBlur(MultibandFilter): @@ -68,7 +68,7 @@ class UnsharpMask(MultibandFilter): radius: float percent: int threshold: int - def __init__(self, radius: float = ..., percent: int = ..., threshold: int = ...) -> None: ... + def __init__(self, radius: float = 2, percent: int = 150, threshold: int = 3) -> None: ... def filter(self, image) -> Image: ... class BLUR(BuiltinFilter): @@ -117,22 +117,20 @@ class Color3DLUT(MultibandFilter): channels: int mode: str | None table: Any - def __init__( - self, size: int | Iterable[int], table, channels: int = ..., target_mode: str | None = ..., **kwargs - ) -> None: ... + def __init__(self, size: int | Iterable[int], table, channels: int = 3, target_mode: str | None = None, **kwargs) -> None: ... @classmethod def generate( cls, size: int | tuple[int, int, int], callback: Callable[[float, float, float], Iterable[float]], - channels: int = ..., - target_mode: str | None = ..., + channels: int = 3, + target_mode: str | None = None, ) -> Self: ... def transform( self, callback: Callable[..., Iterable[float]], - with_normals: bool = ..., - channels: Literal[3, 4] | None = ..., - target_mode: Incomplete | None = ..., + with_normals: bool = False, + channels: Literal[3, 4] | None = None, + target_mode: Incomplete | None = None, ) -> Self: ... def filter(self, image) -> Image: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi index 63e566dc0..aded9707e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi @@ -15,7 +15,7 @@ class _Font(Protocol): class ImageFont: def getsize(self, text: str | bytes, *args, **kwargs) -> tuple[int, int]: ... - def getmask(self, text: str | bytes, mode: str = ..., direction=..., features=...): ... + def getmask(self, text: str | bytes, mode: str = "", direction=..., features=...): ... class FreeTypeFont: path: str | bytes | SupportsRead[bytes] | None @@ -25,84 +25,84 @@ class FreeTypeFont: layout_engine: Layout def __init__( self, - font: str | bytes | SupportsRead[bytes] | None = ..., - size: int = ..., - index: int = ..., - encoding: str = ..., - layout_engine: Layout | None = ..., + font: str | bytes | SupportsRead[bytes] | None = None, + size: int = 10, + index: int = 0, + encoding: str = "", + layout_engine: Layout | None = None, ) -> None: ... def getname(self) -> tuple[str, str]: ... def getmetrics(self) -> tuple[int, int]: ... def getlength( self, text: str | bytes, - mode: str = ..., - direction: Literal["ltr", "rtl", "ttb"] | None = ..., - features: Incomplete | None = ..., - language: str | None = ..., + mode: str = "", + direction: Literal["ltr", "rtl", "ttb"] | None = None, + features: Incomplete | None = None, + language: str | None = None, ) -> int: ... def getbbox( self, text: str | bytes, - mode: str = ..., - direction=..., - features=..., - language: str | None = ..., - stroke_width: int = ..., - anchor: str | None = ..., + mode: str = "", + direction=None, + features=None, + language: str | None = None, + stroke_width: int = 0, + anchor: str | None = None, ) -> tuple[int, int, int, int]: ... def getsize( self, text: str | bytes, - direction: Literal["ltr", "rtl", "ttb"] | None = ..., - features: Incomplete | None = ..., - language: str | None = ..., - stroke_width: int = ..., + direction: Literal["ltr", "rtl", "ttb"] | None = None, + features: Incomplete | None = None, + language: str | None = None, + stroke_width: int = 0, ) -> tuple[int, int]: ... def getsize_multiline( self, text: str | bytes, - direction: Literal["ltr", "rtl", "ttb"] | None = ..., - spacing: float = ..., - features: Incomplete | None = ..., - language: str | None = ..., - stroke_width: float = ..., + direction: Literal["ltr", "rtl", "ttb"] | None = None, + spacing: float = 4, + features: Incomplete | None = None, + language: str | None = None, + stroke_width: float = 0, ) -> tuple[int, int]: ... def getoffset(self, text: str | bytes) -> tuple[int, int]: ... def getmask( self, text: str | bytes, - mode: str = ..., - direction: Literal["ltr", "rtl", "ttb"] | None = ..., - features: Incomplete | None = ..., - language: str | None = ..., - stroke_width: float = ..., - anchor: str | None = ..., - ink=..., - start: tuple[float, float] | None = ..., + mode: str = "", + direction: Literal["ltr", "rtl", "ttb"] | None = None, + features: Incomplete | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ink=0, + start: tuple[float, float] | None = None, ): ... def getmask2( self, text: str | bytes, - mode: str = ..., + mode: str = "", fill=..., - direction: Literal["ltr", "rtl", "ttb"] | None = ..., - features: Incomplete | None = ..., - language: str | None = ..., - stroke_width: float = ..., - anchor: str | None = ..., - ink=..., - start: tuple[float, float] | None = ..., + direction: Literal["ltr", "rtl", "ttb"] | None = None, + features: Incomplete | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ink=0, + start: tuple[float, float] | None = None, *args, **kwargs, ): ... def font_variant( self, - font: str | bytes | SupportsRead[bytes] | None = ..., - size: int | None = ..., - index: int | None = ..., - encoding: str | None = ..., - layout_engine: Layout | None = ..., + font: str | bytes | SupportsRead[bytes] | None = None, + size: int | None = None, + index: int | None = None, + encoding: str | None = None, + layout_engine: Layout | None = None, ) -> FreeTypeFont: ... def get_variation_names(self): ... def set_variation_by_name(self, name): ... @@ -110,17 +110,17 @@ class FreeTypeFont: def set_variation_by_axes(self, axes): ... class TransposedFont: - def __init__(self, font: _Font, orientation: int | None = ...) -> None: ... + def __init__(self, font: _Font, orientation: int | None = None) -> None: ... def getsize(self, text: str | bytes, *args, **kwargs) -> tuple[int, int]: ... - def getmask(self, text: str | bytes, mode: str = ..., *args, **kwargs): ... + def getmask(self, text: str | bytes, mode: str = "", *args, **kwargs): ... def load(filename: FileDescriptorOrPath) -> ImageFont: ... def truetype( - font: str | bytes | SupportsRead[bytes] | None = ..., - size: int = ..., - index: int = ..., - encoding: str = ..., - layout_engine: Layout | None = ..., + font: str | bytes | SupportsRead[bytes] | None = None, + size: int = 10, + index: int = 0, + encoding: str = "", + layout_engine: Layout | None = None, ) -> FreeTypeFont: ... def load_path(filename: str | bytes) -> ImageFont: ... def load_default() -> ImageFont: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageGrab.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageGrab.pyi index 513b2caa8..c0885ca3a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageGrab.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageGrab.pyi @@ -3,6 +3,6 @@ from _typeshed import Incomplete from .Image import Image, _Box def grab( - bbox: _Box | None = ..., include_layered_windows: bool = ..., all_screens: bool = ..., xdisplay: Incomplete | None = ... + bbox: _Box | None = None, include_layered_windows: bool = False, all_screens: bool = False, xdisplay: Incomplete | None = None ) -> Image: ... def grabclipboard() -> Image | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMath.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMath.pyi index 6f524aa81..4a462480b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMath.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMath.pyi @@ -4,7 +4,7 @@ from typing import Any class _Operand: im: Any def __init__(self, im) -> None: ... - def apply(self, op, im1, im2: Incomplete | None = ..., mode: Incomplete | None = ...): ... + def apply(self, op, im1, im2: Incomplete | None = None, mode: Incomplete | None = None): ... def __bool__(self) -> bool: ... def __abs__(self): ... def __pos__(self): ... @@ -47,4 +47,4 @@ def imagemath_convert(self, mode): ... ops: Any -def eval(expression, _dict=..., **kw): ... +def eval(expression, _dict={}, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMorph.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMorph.pyi index 2668787b7..328815bd3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMorph.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMorph.pyi @@ -9,7 +9,7 @@ MIRROR_MATRIX: list[int] class LutBuilder: patterns: list[str] lut: bytearray - def __init__(self, patterns: list[str] | None = ..., op_name: str | None = ...) -> None: ... + def __init__(self, patterns: list[str] | None = None, op_name: str | None = None) -> None: ... def add_patterns(self, patterns: list[str]) -> None: ... def build_default_lut(self) -> None: ... def get_lut(self) -> bytearray: ... @@ -17,7 +17,7 @@ class LutBuilder: class MorphOp: lut: bytearray - def __init__(self, lut: bytearray | None = ..., op_name: str | None = ..., patterns: list[str] | None = ...) -> None: ... + def __init__(self, lut: bytearray | None = None, op_name: str | None = None, patterns: list[str] | None = None) -> None: ... def apply(self, image: Image) -> tuple[int, Image]: ... def match(self, image: Image) -> list[tuple[int, int]]: ... def get_on_pixels(self, image: Image) -> list[tuple[int, int]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageOps.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageOps.pyi index 9cc148018..5e88c1749 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageOps.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageOps.pyi @@ -12,37 +12,37 @@ class _Deformer(Protocol): def getmesh(self, image: Image): ... def autocontrast( - image: Image, cutoff: int = ..., ignore: int | None = ..., mask: Image | None = ..., preserve_tone: bool = ... + image: Image, cutoff: int = 0, ignore: int | None = None, mask: Image | None = None, preserve_tone: bool = False ) -> Image: ... def colorize( image: Image, black: int | str, white: int | str, - mid: int | str | None = ..., - blackpoint: int = ..., - whitepoint: int = ..., - midpoint: int = ..., + mid: int | str | None = None, + blackpoint: int = 0, + whitepoint: int = 255, + midpoint: int = 127, ) -> Image: ... def contain(image: Image, size: _Size, method: Resampling | _Resample = ...) -> Image: ... def pad( image: Image, size: _Size, method: Resampling | _Resample = ..., - color: Incomplete | None = ..., - centering: Iterable[float] = ..., + color: Incomplete | None = None, + centering: Iterable[float] = (0.5, 0.5), ) -> Image: ... -def crop(image: Image, border: _Border = ...) -> Image: ... +def crop(image: Image, border: _Border = 0) -> Image: ... def scale(image: Image, factor: float, resample: Resampling | _Resample = ...) -> Image: ... def deform(image: Image, deformer: _Deformer, resample: Resampling | _Resample = ...) -> Image: ... -def equalize(image: Image, mask: Incomplete | None = ...) -> Image: ... -def expand(image: Image, border: _Border = ..., fill: _Ink = ...) -> Image: ... +def equalize(image: Image, mask: Incomplete | None = None) -> Image: ... +def expand(image: Image, border: _Border = 0, fill: _Ink = 0) -> Image: ... def fit( - image: Image, size: _Size, method: Resampling | _Resample = ..., bleed: float = ..., centering: Iterable[float] = ... + image: Image, size: _Size, method: Resampling | _Resample = ..., bleed: float = 0.0, centering: Iterable[float] = (0.5, 0.5) ) -> Image: ... def flip(image: Image) -> Image: ... def grayscale(image: Image) -> Image: ... def invert(image: Image) -> Image: ... def mirror(image: Image) -> Image: ... def posterize(image: Image, bits: int) -> Image: ... -def solarize(image: Image, threshold: int = ...) -> Image: ... +def solarize(image: Image, threshold: int = 128) -> Image: ... def exif_transpose(image: Image) -> Image: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImagePalette.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImagePalette.pyi index 76d6582fa..7a6567496 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImagePalette.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImagePalette.pyi @@ -9,19 +9,19 @@ class ImagePalette: palette: Any colors: Any dirty: Any - def __init__(self, mode: str = ..., palette: Incomplete | None = ..., size: int = ...) -> None: ... + def __init__(self, mode: str = "RGB", palette: Incomplete | None = None, size: int = 0) -> None: ... def copy(self) -> ImagePalette: ... def getdata(self): ... def tobytes(self) -> bytes: ... tostring = tobytes - def getcolor(self, color: tuple[int, int, int], image: Image | None = ...) -> int: ... + def getcolor(self, color: tuple[int, int, int], image: Image | None = None) -> int: ... def save(self, fp) -> None: ... def raw(rawmode, data): ... def make_linear_lut(black, white): ... def make_gamma_lut(exp): ... -def negative(mode: str = ...): ... -def random(mode: str = ...): ... -def sepia(white: str = ...): ... -def wedge(mode: str = ...): ... +def negative(mode: str = "RGB"): ... +def random(mode: str = "RGB"): ... +def sepia(white: str = "#fff0c0"): ... +def wedge(mode: str = "RGB"): ... def load(filename): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageQt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageQt.pyi index f11ae150e..bff69d300 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageQt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageQt.pyi @@ -13,7 +13,7 @@ qt_versions: Any qt_is_installed: bool qt_version: Any -def rgb(r: int, g: int, b: int, a: int = ...) -> int: ... +def rgb(r: int, g: int, b: int, a: int = 255) -> int: ... def fromqimage(im: ImageQt | _QImage) -> Image: ... def fromqpixmap(im: ImageQt | _QImage) -> Image: ... def align8to32(bytes: bytes, width: int, mode: Literal["1", "L", "P"]) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageSequence.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageSequence.pyi index dcf42c4fa..e96de0cc7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageSequence.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageSequence.pyi @@ -9,4 +9,4 @@ class Iterator: def __iter__(self): ... def __next__(self): ... -def all_frames(im, func: Incomplete | None = ...): ... +def all_frames(im, func: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageShow.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageShow.pyi index 851c88555..62a9e8e1e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageShow.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageShow.pyi @@ -2,8 +2,8 @@ from _typeshed import Incomplete from typing import Any from typing_extensions import Literal -def register(viewer, order: int = ...) -> None: ... -def show(image, title: Incomplete | None = ..., **options): ... +def register(viewer, order: int = 1) -> None: ... +def show(image, title: Incomplete | None = None, **options): ... class Viewer: def show(self, image, **options): ... @@ -13,7 +13,7 @@ class Viewer: def get_command(self, file, **options) -> None: ... def save_image(self, image): ... def show_image(self, image, **options): ... - def show_file(self, path: Incomplete | None = ..., **options): ... + def show_file(self, path: Incomplete | None = None, **options): ... class WindowsViewer(Viewer): format: str @@ -24,19 +24,19 @@ class MacViewer(Viewer): format: str options: Any def get_command(self, file, **options): ... - def show_file(self, path: Incomplete | None = ..., **options): ... + def show_file(self, path: Incomplete | None = None, **options): ... class UnixViewer(Viewer): format: str options: Any def get_command(self, file, **options): ... - def show_file(self, path: Incomplete | None = ..., **options): ... + def show_file(self, path: Incomplete | None = None, **options): ... class XDGViewer(UnixViewer): def get_command_ex(self, file, **options) -> tuple[Literal["xdg-open"], Literal["xdg-open"]]: ... class DisplayViewer(UnixViewer): - def get_command_ex(self, file, title: str | None = ..., **options): ... + def get_command_ex(self, file, title: str | None = None, **options): ... class GmDisplayViewer(UnixViewer): def get_command_ex(self, file, **options): ... @@ -45,7 +45,7 @@ class EogViewer(UnixViewer): def get_command_ex(self, file, **options): ... class XVViewer(UnixViewer): - def get_command_ex(self, file, title: Incomplete | None = ..., **options): ... + def get_command_ex(self, file, title: Incomplete | None = None, **options): ... class IPythonViewer(Viewer): def show_image(self, image, **options): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageStat.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageStat.pyi index 82723e301..2c4088fd6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageStat.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageStat.pyi @@ -4,7 +4,7 @@ from typing import Any class Stat: h: Any bands: Any - def __init__(self, image_or_list, mask: Incomplete | None = ...) -> None: ... + def __init__(self, image_or_list, mask: Incomplete | None = None) -> None: ... def __getattr__(self, id: str): ... Global = Stat diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTk.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTk.pyi index af3bd4fc2..f6b5efd0e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTk.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTk.pyi @@ -27,7 +27,7 @@ class PhotoImage(tkinter._PhotoImageLike): def width(self) -> int: ... def height(self) -> int: ... # box is deprecated and unused - def paste(self, im: Image, box: _Box | None = ...) -> None: ... + def paste(self, im: Image, box: _Box | None = None) -> None: ... class BitmapImage(tkinter._BitmapImageLike): def __init__( @@ -40,8 +40,8 @@ class BitmapImage(tkinter._BitmapImageLike): name: str | None = None, cnf: dict[str, Any] = ..., master: tkinter.Misc | _tkinter.TkappType | None = None, - background: tkinter._Color = ..., - foreground: tkinter._Color = ..., + background: str = ..., + foreground: str = ..., maskdata: str = ..., maskfile: StrOrBytesPath = ..., ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageWin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageWin.pyi index a51ae49bf..b4479f386 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageWin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageWin.pyi @@ -15,17 +15,17 @@ class Dib: image: Any mode: Any size: Any - def __init__(self, image, size: Incomplete | None = ...) -> None: ... + def __init__(self, image, size: Incomplete | None = None) -> None: ... def expose(self, handle): ... - def draw(self, handle, dst, src: Incomplete | None = ...): ... + def draw(self, handle, dst, src: Incomplete | None = None): ... def query_palette(self, handle): ... - def paste(self, im, box: Incomplete | None = ...) -> None: ... + def paste(self, im, box: Incomplete | None = None) -> None: ... def frombytes(self, buffer): ... def tobytes(self): ... class Window: hwnd: Any - def __init__(self, title: str = ..., width: Incomplete | None = ..., height: Incomplete | None = ...) -> None: ... + def __init__(self, title: str = "PIL", width: Incomplete | None = None, height: Incomplete | None = None) -> None: ... def ui_handle_clear(self, dc, x0, y0, x1, y1) -> None: ... def ui_handle_damage(self, x0, y0, x1, y1) -> None: ... def ui_handle_destroy(self) -> None: ... @@ -35,5 +35,5 @@ class Window: class ImageWindow(Window): image: Any - def __init__(self, image, title: str = ...) -> None: ... + def __init__(self, image, title: str = "PIL") -> None: ... def ui_handle_repair(self, dc, x0, y0, x1, y1) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegImagePlugin.pyi index c558a1329..efec297c5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegImagePlugin.pyi @@ -30,4 +30,4 @@ samplings: Any def convert_dict_qtables(qtables): ... def get_sampling(im): ... -def jpeg_factory(fp: Incomplete | None = ..., filename: Incomplete | None = ...): ... +def jpeg_factory(fp: Incomplete | None = None, filename: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpoImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpoImagePlugin.pyi index 14761e5da..63e20b08e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpoImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpoImagePlugin.pyi @@ -13,4 +13,4 @@ class MpoImageFile(JpegImageFile): def seek(self, frame) -> None: ... def tell(self): ... @staticmethod - def adopt(jpeg_instance, mpheader: Incomplete | None = ...): ... + def adopt(jpeg_instance, mpheader: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PSDraw.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PSDraw.pyi index d25d1cba6..cf6a02ae1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PSDraw.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PSDraw.pyi @@ -4,7 +4,7 @@ from .Image import Image class PSDraw: fp: SupportsWrite[bytes] - def __init__(self, fp: SupportsWrite[bytes] | None = ...) -> None: ... + def __init__(self, fp: SupportsWrite[bytes] | None = None) -> None: ... isofont: dict[bytes, int] def begin_document(self, id: Unused = None) -> None: ... def end_document(self) -> None: ... @@ -12,7 +12,7 @@ class PSDraw: def line(self, xy0: tuple[int, int], xy1: tuple[int, int]) -> None: ... def rectangle(self, box: tuple[int, int, int, int]) -> None: ... def text(self, xy: tuple[int, int], text: str) -> None: ... - def image(self, box: tuple[int, int, int, int], im: Image, dpi: float | None = ...) -> None: ... + def image(self, box: tuple[int, int, int, int], im: Image, dpi: float | None = None) -> None: ... EDROFF_PS: bytes VDI_PS: bytes diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcfFontFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcfFontFile.pyi index 97836cb78..8af6c9041 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcfFontFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcfFontFile.pyi @@ -22,4 +22,4 @@ class PcfFontFile(FontFile): toc: Any fp: Any info: Any - def __init__(self, fp, charset_encoding: str = ...) -> None: ... + def __init__(self, fp, charset_encoding: str = "iso8859-1") -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PdfParser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PdfParser.pyi index a2130bd06..aab4b2e73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PdfParser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PdfParser.pyi @@ -90,11 +90,11 @@ class PdfParser: xref_table: Any def __init__( self, - filename: Incomplete | None = ..., - f: Incomplete | None = ..., - buf: Incomplete | None = ..., - start_offset: int = ..., - mode: str = ..., + filename: Incomplete | None = None, + f: Incomplete | None = None, + buf: Incomplete | None = None, + start_offset: int = 0, + mode: str = "rb", ) -> None: ... def __enter__(self): ... def __exit__( @@ -108,7 +108,7 @@ class PdfParser: def write_comment(self, s) -> None: ... def write_catalog(self): ... def rewrite_pages(self) -> None: ... - def write_xref_and_trailer(self, new_root_ref: Incomplete | None = ...) -> None: ... + def write_xref_and_trailer(self, new_root_ref: Incomplete | None = None) -> None: ... def write_page(self, ref, *objs, **dict_obj): ... def write_obj(self, ref, *objs, **dict_obj): ... def del_root(self) -> None: ... @@ -116,7 +116,7 @@ class PdfParser: def get_buf_from_file(f): ... file_size_this: Any def read_pdf_info(self) -> None: ... - def next_object_id(self, offset: Incomplete | None = ...): ... + def next_object_id(self, offset: Incomplete | None = None): ... delimiter: bytes delimiter_or_ws: bytes whitespace: bytes @@ -138,7 +138,7 @@ class PdfParser: def interpret_trailer(cls, trailer_data): ... re_hashes_in_name: Any @classmethod - def interpret_name(cls, raw, as_text: bool = ...): ... + def interpret_name(cls, raw, as_text: bool = False): ... re_null: Any re_true: Any re_false: Any @@ -155,7 +155,7 @@ class PdfParser: re_stream_start: Any re_stream_end: Any @classmethod - def get_value(cls, data, offset, expect_indirect: Incomplete | None = ..., max_nesting: int = ...): ... + def get_value(cls, data, offset, expect_indirect: Incomplete | None = None, max_nesting: int = -1): ... re_lit_str_token: Any escaped_chars: Any @classmethod @@ -164,5 +164,5 @@ class PdfParser: re_xref_subsection_start: Any re_xref_entry: Any def read_xref_table(self, xref_section_offset): ... - def read_indirect(self, ref, max_nesting: int = ...): ... - def linearize_page_tree(self, node: Incomplete | None = ...): ... + def read_indirect(self, ref, max_nesting: int = -1): ... + def linearize_page_tree(self, node: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi index e47e20153..178ffa9ac 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi @@ -39,20 +39,20 @@ class ChunkStream: def call(self, cid, pos, length): ... def crc(self, cid, data) -> None: ... def crc_skip(self, cid, data) -> None: ... - def verify(self, endchunk: bytes = ...): ... + def verify(self, endchunk: bytes = b"IEND"): ... class iTXt(str): lang: Any tkey: Any @staticmethod - def __new__(cls, text, lang: Incomplete | None = ..., tkey: Incomplete | None = ...): ... + def __new__(cls, text, lang: Incomplete | None = None, tkey: Incomplete | None = None): ... class PngInfo: chunks: Any def __init__(self) -> None: ... - def add(self, cid, data, after_idat: bool = ...) -> None: ... - def add_itxt(self, key, value, lang: str = ..., tkey: str = ..., zip: bool = ...) -> None: ... - def add_text(self, key, value, zip: bool = ...): ... + def add(self, cid, data, after_idat: bool = False) -> None: ... + def add_itxt(self, key, value, lang: str = "", tkey: str = "", zip: bool = False) -> None: ... + def add_text(self, key, value, zip: bool = False): ... class PngStream(ChunkStream): im_info: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi index 3d9231274..ed22f7d49 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi @@ -9,7 +9,7 @@ class PyAccess: image8: Any image32: Any image: Any - def __init__(self, img, readonly: bool = ...) -> None: ... + def __init__(self, img, readonly: bool = False) -> None: ... def __setitem__(self, xy, color) -> None: ... def __getitem__(self, xy): ... putpixel: Any @@ -59,4 +59,4 @@ class _PyAccessF(PyAccess): mode_map: Any -def new(img, readonly: bool = ...): ... +def new(img, readonly: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SpiderImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SpiderImagePlugin.pyi index 2c115b347..5500289f8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SpiderImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SpiderImagePlugin.pyi @@ -22,8 +22,8 @@ class SpiderImageFile(ImageFile): stkoffset: Any fp: Any def seek(self, frame) -> None: ... - def convert2byte(self, depth: int = ...): ... + def convert2byte(self, depth: int = 255): ... def tkPhotoImage(self): ... -def loadImageSeries(filelist: Incomplete | None = ...): ... +def loadImageSeries(filelist: Incomplete | None = None): ... def makeSpiderHeader(im): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi index d39e79581..bb1ad85d6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi @@ -55,7 +55,7 @@ OPEN_INFO: Any PREFIXES: Any class IFDRational(Rational): - def __init__(self, value, denominator: int = ...) -> None: ... + def __init__(self, value, denominator: int = 1) -> None: ... @property def numerator(a): ... @property @@ -93,7 +93,9 @@ class IFDRational(Rational): class ImageFileDirectory_v2(MutableMapping[int, Any]): group: int | None tagtype: dict[int, int] - def __init__(self, ifh: bytes = ..., prefix: bytes | None = ..., group: int | None = ...) -> None: ... + def __init__( + self, ifh: bytes = b"II*\x00\x00\x00\x00\x00", prefix: bytes | None = None, group: int | None = None + ) -> None: ... @property def prefix(self) -> bytes: ... @property @@ -108,18 +110,18 @@ class ImageFileDirectory_v2(MutableMapping[int, Any]): def __setitem__(self, tag, value) -> None: ... def __delitem__(self, tag) -> None: ... def __iter__(self): ... - def load_byte(self, data, legacy_api: bool = ...): ... + def load_byte(self, data, legacy_api: bool = True): ... def write_byte(self, data): ... - def load_string(self, data, legacy_api: bool = ...): ... + def load_string(self, data, legacy_api: bool = True): ... def write_string(self, value: int | str | bytes) -> bytes: ... - def load_rational(self, data, legacy_api: bool = ...): ... + def load_rational(self, data, legacy_api: bool = True): ... def write_rational(self, *values): ... - def load_undefined(self, data, legacy_api: bool = ...): ... + def load_undefined(self, data, legacy_api: bool = True): ... def write_undefined(self, value): ... - def load_signed_rational(self, data, legacy_api: bool = ...): ... + def load_signed_rational(self, data, legacy_api: bool = True): ... def write_signed_rational(self, *values): ... def load(self, fp) -> None: ... - def tobytes(self, offset: int = ...): ... + def tobytes(self, offset: int = 0): ... def save(self, fp): ... class ImageFileDirectory_v1(ImageFileDirectory_v2): @@ -145,7 +147,7 @@ class TiffImageFile(ImageFile): format_description: ClassVar[str] tag_v2: Any tag: Any - def __init__(self, fp: Incomplete | None = ..., filename: Incomplete | None = ...) -> None: ... + def __init__(self, fp: Incomplete | None = None, filename: Incomplete | None = None) -> None: ... @property def n_frames(self): ... im: Any @@ -163,7 +165,7 @@ class AppendingTiffWriter: close_fp: bool name: Any beginning: Any - def __init__(self, fn, new: bool = ...) -> None: ... + def __init__(self, fn, new: bool = False) -> None: ... whereToWriteNewIFDOffset: Any offsetOfNewPage: int IIMM: Any @@ -176,7 +178,7 @@ class AppendingTiffWriter: self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None ) -> Literal[False]: ... def tell(self): ... - def seek(self, offset, whence=...): ... + def seek(self, offset, whence=0): ... def goToEnd(self) -> None: ... endian: Any longFmt: Any @@ -194,4 +196,4 @@ class AppendingTiffWriter: def writeLong(self, value) -> None: ... def close(self) -> None: ... def fixIFD(self) -> None: ... - def fixOffsets(self, count, isShort: bool = ..., isLong: bool = ...) -> None: ... + def fixOffsets(self, count, isShort: bool = False, isLong: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi index f546f604b..30a7e9d72 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi @@ -12,15 +12,15 @@ class _TagInfo(NamedTuple): class TagInfo(_TagInfo): def __new__( cls, - value: Incomplete | None = ..., - name: str = ..., - type: _TagType | None = ..., - length: int | None = ..., - enum: dict[str, int] | None = ..., + value: Incomplete | None = None, + name: str = "unknown", + type: _TagType | None = None, + length: int | None = None, + enum: dict[str, int] | None = None, ): ... def cvt_enum(self, value): ... -def lookup(tag: int, group: int | None = ...) -> _TagInfo: ... +def lookup(tag: int, group: int | None = None) -> _TagInfo: ... BYTE: Literal[1] ASCII: Literal[2] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi index 0834c0b2a..76554cda2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi @@ -16,4 +16,4 @@ if sys.platform == "win32": class WmfStubImageFile(StubImageFile): format: ClassVar[Literal["WMF"]] format_description: ClassVar[str] - def load(self, dpi: Incomplete | None = ...) -> None: ... + def load(self, dpi: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_binary.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_binary.pyi index 4db3be89e..a6a62b7ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_binary.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_binary.pyi @@ -1,11 +1,11 @@ def i8(c): ... def o8(i): ... -def i16le(c, o: int = ...): ... -def si16le(c, o: int = ...): ... -def i32le(c, o: int = ...): ... -def si32le(c, o: int = ...): ... -def i16be(c, o: int = ...): ... -def i32be(c, o: int = ...): ... +def i16le(c, o: int = 0): ... +def si16le(c, o: int = 0): ... +def i32le(c, o: int = 0): ... +def si32le(c, o: int = 0): ... +def i16be(c, o: int = 0): ... +def i32be(c, o: int = 0): ... def o16le(i): ... def o32le(i): ... def o16be(i): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/features.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/features.pyi index a6deedd47..ff7bca82e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/features.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/features.pyi @@ -21,4 +21,4 @@ def get_supported_features(): ... def check(feature): ... def version(feature): ... def get_supported(): ... -def pilinfo(out: Incomplete | None = ..., supported_formats: bool = ...) -> None: ... +def pilinfo(out: Incomplete | None = None, supported_formats: bool = True) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/connections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/connections.pyi index e17b91807..a70a23091 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/connections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/connections.pyi @@ -28,8 +28,8 @@ class MysqlPacket: def read(self, size): ... def read_all(self): ... def advance(self, length): ... - def rewind(self, position: int = ...): ... - def get_bytes(self, position, length: int = ...): ... + def rewind(self, position: int = 0): ... + def get_bytes(self, position, length: int = 1): ... def read_string(self) -> bytes: ... def read_uint8(self) -> Any: ... def read_uint16(self) -> Any: ... @@ -81,87 +81,87 @@ class Connection(Generic[_C]): def __init__( self: Connection[Cursor], # different between overloads *, - host: str | None = ..., - user: Incomplete | None = ..., - password: str = ..., - database: Incomplete | None = ..., - port: int = ..., - unix_socket: Incomplete | None = ..., - charset: str = ..., - sql_mode: Incomplete | None = ..., - read_default_file: Incomplete | None = ..., - conv=..., - use_unicode: bool | None = ..., - client_flag: int = ..., - cursorclass: None = ..., # different between overloads - init_command: Incomplete | None = ..., - connect_timeout: int | None = ..., - ssl: Mapping[Any, Any] | None = ..., - ssl_ca=..., - ssl_cert=..., - ssl_disabled=..., - ssl_key=..., - ssl_verify_cert=..., - ssl_verify_identity=..., - read_default_group: Incomplete | None = ..., - compress: Incomplete | None = ..., - named_pipe: Incomplete | None = ..., - autocommit: bool | None = ..., - db: Incomplete | None = ..., - passwd: Incomplete | None = ..., - local_infile: Incomplete | None = ..., - max_allowed_packet: int = ..., - defer_connect: bool | None = ..., - auth_plugin_map: Mapping[Any, Any] | None = ..., - read_timeout: float | None = ..., - write_timeout: float | None = ..., - bind_address: Incomplete | None = ..., - binary_prefix: bool | None = ..., - program_name: Incomplete | None = ..., - server_public_key: bytes | None = ..., + host: str | None = None, + user: Incomplete | None = None, + password: str = "", + database: Incomplete | None = None, + port: int = 0, + unix_socket: Incomplete | None = None, + charset: str = "", + sql_mode: Incomplete | None = None, + read_default_file: Incomplete | None = None, + conv=None, + use_unicode: bool | None = True, + client_flag: int = 0, + cursorclass: None = None, # different between overloads + init_command: Incomplete | None = None, + connect_timeout: int | None = 10, + ssl: Mapping[Any, Any] | None = None, + ssl_ca=None, + ssl_cert=None, + ssl_disabled=None, + ssl_key=None, + ssl_verify_cert=None, + ssl_verify_identity=None, + read_default_group: Incomplete | None = None, + compress: Incomplete | None = None, + named_pipe: Incomplete | None = None, + autocommit: bool | None = False, + db: Incomplete | None = None, + passwd: Incomplete | None = None, + local_infile: Incomplete | None = False, + max_allowed_packet: int = 16777216, + defer_connect: bool | None = False, + auth_plugin_map: Mapping[Any, Any] | None = None, + read_timeout: float | None = None, + write_timeout: float | None = None, + bind_address: Incomplete | None = None, + binary_prefix: bool | None = False, + program_name: Incomplete | None = None, + server_public_key: bytes | None = None, ): ... @overload def __init__( self: Connection[_C], # different between overloads *, - host: str | None = ..., - user: Incomplete | None = ..., - password: str = ..., - database: Incomplete | None = ..., - port: int = ..., - unix_socket: Incomplete | None = ..., - charset: str = ..., - sql_mode: Incomplete | None = ..., - read_default_file: Incomplete | None = ..., - conv=..., - use_unicode: bool | None = ..., - client_flag: int = ..., + host: str | None = None, + user: Incomplete | None = None, + password: str = "", + database: Incomplete | None = None, + port: int = 0, + unix_socket: Incomplete | None = None, + charset: str = "", + sql_mode: Incomplete | None = None, + read_default_file: Incomplete | None = None, + conv=None, + use_unicode: bool | None = True, + client_flag: int = 0, cursorclass: type[_C] = ..., # different between overloads - init_command: Incomplete | None = ..., - connect_timeout: int | None = ..., - ssl: Mapping[Any, Any] | None = ..., - ssl_ca=..., - ssl_cert=..., - ssl_disabled=..., - ssl_key=..., - ssl_verify_cert=..., - ssl_verify_identity=..., - read_default_group: Incomplete | None = ..., - compress: Incomplete | None = ..., - named_pipe: Incomplete | None = ..., - autocommit: bool | None = ..., - db: Incomplete | None = ..., - passwd: Incomplete | None = ..., - local_infile: Incomplete | None = ..., - max_allowed_packet: int = ..., - defer_connect: bool | None = ..., - auth_plugin_map: Mapping[Any, Any] | None = ..., - read_timeout: float | None = ..., - write_timeout: float | None = ..., - bind_address: Incomplete | None = ..., - binary_prefix: bool | None = ..., - program_name: Incomplete | None = ..., - server_public_key: bytes | None = ..., + init_command: Incomplete | None = None, + connect_timeout: int | None = 10, + ssl: Mapping[Any, Any] | None = None, + ssl_ca=None, + ssl_cert=None, + ssl_disabled=None, + ssl_key=None, + ssl_verify_cert=None, + ssl_verify_identity=None, + read_default_group: Incomplete | None = None, + compress: Incomplete | None = None, + named_pipe: Incomplete | None = None, + autocommit: bool | None = False, + db: Incomplete | None = None, + passwd: Incomplete | None = None, + local_infile: Incomplete | None = False, + max_allowed_packet: int = 16777216, + defer_connect: bool | None = False, + auth_plugin_map: Mapping[Any, Any] | None = None, + read_timeout: float | None = None, + write_timeout: float | None = None, + bind_address: Incomplete | None = None, + binary_prefix: bool | None = False, + program_name: Incomplete | None = None, + server_public_key: bytes | None = None, ): ... socket: Any rfile: Any @@ -175,20 +175,20 @@ class Connection(Generic[_C]): def begin(self) -> None: ... def rollback(self) -> None: ... def select_db(self, db) -> None: ... - def escape(self, obj, mapping: Mapping[Any, Any] | None = ...): ... + def escape(self, obj, mapping: Mapping[Any, Any] | None = None): ... def literal(self, obj): ... def escape_string(self, s: AnyStr) -> AnyStr: ... @overload - def cursor(self, cursor: None = ...) -> _C: ... + def cursor(self, cursor: None = None) -> _C: ... @overload def cursor(self, cursor: type[_C2]) -> _C2: ... - def query(self, sql, unbuffered: bool = ...) -> int: ... - def next_result(self, unbuffered: bool = ...) -> int: ... + def query(self, sql, unbuffered: bool = False) -> int: ... + def next_result(self, unbuffered: bool = False) -> int: ... def affected_rows(self): ... def kill(self, thread_id): ... - def ping(self, reconnect: bool = ...) -> None: ... + def ping(self, reconnect: bool = True) -> None: ... def set_charset(self, charset) -> None: ... - def connect(self, sock: _socket | None = ...) -> None: ... + def connect(self, sock: _socket | None = None) -> None: ... def write_packet(self, payload) -> None: ... def _read_packet(self, packet_type=...): ... def insert_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/converters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/converters.pyi index 6ce9f25eb..407162d7c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/converters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/converters.pyi @@ -9,23 +9,23 @@ from typing_extensions import TypeAlias _EscaperMapping: TypeAlias = Mapping[type[object], Callable[..., str]] | None _T = TypeVar("_T") -def escape_item(val: object, charset: object, mapping: _EscaperMapping = ...) -> str: ... -def escape_dict(val: Mapping[str, object], charset: object, mapping: _EscaperMapping = ...) -> dict[str, str]: ... -def escape_sequence(val: Sequence[object], charset: object, mapping: _EscaperMapping = ...) -> str: ... -def escape_set(val: set[object], charset: object, mapping: _EscaperMapping = ...) -> str: ... -def escape_bool(value: bool, mapping: _EscaperMapping = ...) -> str: ... -def escape_int(value: int, mapping: _EscaperMapping = ...) -> str: ... -def escape_float(value: float, mapping: _EscaperMapping = ...) -> str: ... -def escape_string(value: str, mapping: _EscaperMapping = ...) -> str: ... -def escape_bytes_prefixed(value: bytes, mapping: _EscaperMapping = ...) -> str: ... -def escape_bytes(value: bytes, mapping: _EscaperMapping = ...) -> str: ... -def escape_str(value: str, mapping: _EscaperMapping = ...) -> str: ... -def escape_None(value: None, mapping: _EscaperMapping = ...) -> str: ... -def escape_timedelta(obj: datetime.timedelta, mapping: _EscaperMapping = ...) -> str: ... -def escape_time(obj: datetime.time, mapping: _EscaperMapping = ...) -> str: ... -def escape_datetime(obj: datetime.datetime, mapping: _EscaperMapping = ...) -> str: ... -def escape_date(obj: datetime.date, mapping: _EscaperMapping = ...) -> str: ... -def escape_struct_time(obj: time.struct_time, mapping: _EscaperMapping = ...) -> str: ... +def escape_item(val: object, charset: object, mapping: _EscaperMapping = None) -> str: ... +def escape_dict(val: Mapping[str, object], charset: object, mapping: _EscaperMapping = None) -> dict[str, str]: ... +def escape_sequence(val: Sequence[object], charset: object, mapping: _EscaperMapping = None) -> str: ... +def escape_set(val: set[object], charset: object, mapping: _EscaperMapping = None) -> str: ... +def escape_bool(value: bool, mapping: _EscaperMapping = None) -> str: ... +def escape_int(value: int, mapping: _EscaperMapping = None) -> str: ... +def escape_float(value: float, mapping: _EscaperMapping = None) -> str: ... +def escape_string(value: str, mapping: _EscaperMapping = None) -> str: ... +def escape_bytes_prefixed(value: bytes, mapping: _EscaperMapping = None) -> str: ... +def escape_bytes(value: bytes, mapping: _EscaperMapping = None) -> str: ... +def escape_str(value: str, mapping: _EscaperMapping = None) -> str: ... +def escape_None(value: None, mapping: _EscaperMapping = None) -> str: ... +def escape_timedelta(obj: datetime.timedelta, mapping: _EscaperMapping = None) -> str: ... +def escape_time(obj: datetime.time, mapping: _EscaperMapping = None) -> str: ... +def escape_datetime(obj: datetime.datetime, mapping: _EscaperMapping = None) -> str: ... +def escape_date(obj: datetime.date, mapping: _EscaperMapping = None) -> str: ... +def escape_struct_time(obj: time.struct_time, mapping: _EscaperMapping = None) -> str: ... def Decimal2Literal(o: Decimal, d: Unused) -> str: ... def convert_datetime(obj: str | bytes) -> datetime.datetime | str: ... def convert_timedelta(obj: str | bytes) -> datetime.timedelta | str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/cursors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/cursors.pyi index 4f2d374b9..4cc5e21ec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/cursors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/cursors.pyi @@ -19,16 +19,16 @@ class Cursor: def setinputsizes(self, *args) -> None: ... def setoutputsizes(self, *args) -> None: ... def nextset(self) -> bool | None: ... - def mogrify(self, query: str, args: object = ...) -> str: ... - def execute(self, query: str, args: object = ...) -> int: ... + def mogrify(self, query: str, args: object = None) -> str: ... + def execute(self, query: str, args: object = None) -> int: ... def executemany(self, query: str, args: Iterable[object]) -> int | None: ... - def callproc(self, procname: str, args: Iterable[Any] = ...) -> Any: ... - def scroll(self, value: int, mode: str = ...) -> None: ... + def callproc(self, procname: str, args: Iterable[Any] = ()) -> Any: ... + def scroll(self, value: int, mode: str = "relative") -> None: ... def __enter__(self) -> Self: ... def __exit__(self, *exc_info: object) -> None: ... # Methods returning result tuples are below. def fetchone(self) -> tuple[Any, ...] | None: ... - def fetchmany(self, size: int | None = ...) -> tuple[tuple[Any, ...], ...]: ... + def fetchmany(self, size: int | None = None) -> tuple[tuple[Any, ...], ...]: ... def fetchall(self) -> tuple[tuple[Any, ...], ...]: ... def __iter__(self) -> Iterator[tuple[Any, ...]]: ... @@ -42,7 +42,7 @@ class DictCursorMixin: class SSCursor(Cursor): def fetchall(self) -> list[tuple[Any, ...]]: ... # type: ignore[override] def fetchall_unbuffered(self) -> Iterator[tuple[Any, ...]]: ... - def scroll(self, value: int, mode: str = ...) -> None: ... + def scroll(self, value: int, mode: str = "relative") -> None: ... class DictCursor(DictCursorMixin, Cursor): ... # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi index e42fc881d..14dc7b537 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi @@ -30,7 +30,7 @@ _Representer = TypeVar("_Representer", bound=BaseRepresenter) __with_libyaml__: bool __version__: str -def warnings(settings=...): ... +def warnings(settings=None): ... def scan(stream, Loader: type[_Loader | _CLoader] = ...): ... def parse(stream, Loader: type[_Loader | _CLoader] = ...): ... def compose(stream, Loader: type[_Loader | _CLoader] = ...): ... @@ -45,45 +45,45 @@ def unsafe_load(stream: _ReadStream) -> Any: ... def unsafe_load_all(stream: _ReadStream) -> Iterator[Any]: ... def emit( events, - stream: _WriteStream[Any] | None = ..., + stream: _WriteStream[Any] | None = None, Dumper=..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, ): ... @overload def serialize_all( nodes, stream: _WriteStream[Any], Dumper=..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, ) -> None: ... @overload def serialize_all( nodes, - stream: None = ..., + stream: None = None, Dumper=..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, ) -> _Yaml: ... @overload def serialize( @@ -105,7 +105,7 @@ def serialize( @overload def serialize( node, - stream: None = ..., + stream: None = None, Dumper=..., *, canonical: bool | None = ..., @@ -124,38 +124,38 @@ def dump_all( documents: Iterable[Any], stream: _WriteStream[Any], Dumper=..., - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... @overload def dump_all( documents: Iterable[Any], - stream: None = ..., + stream: None = None, Dumper=..., - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> _Yaml: ... @overload def dump( @@ -180,7 +180,7 @@ def dump( @overload def dump( data: Any, - stream: None = ..., + stream: None = None, Dumper=..., *, default_style: str | None = ..., @@ -219,7 +219,7 @@ def safe_dump_all( @overload def safe_dump_all( documents: Iterable[Any], - stream: None = ..., + stream: None = None, *, default_style: str | None = ..., default_flow_style: bool | None = ..., @@ -257,7 +257,7 @@ def safe_dump( @overload def safe_dump( data: Any, - stream: None = ..., + stream: None = None, *, default_style: str | None = ..., default_flow_style: bool | None = ..., @@ -276,26 +276,26 @@ def safe_dump( def add_implicit_resolver( tag: str, regexp: Pattern[str], - first: Iterable[Any] | None = ..., - Loader: type[BaseResolver] | None = ..., + first: Iterable[Any] | None = None, + Loader: type[BaseResolver] | None = None, Dumper: type[BaseResolver] = ..., ) -> None: ... def add_path_resolver( tag: str, path: Iterable[Any], - kind: type[Any] | None = ..., - Loader: type[BaseResolver] | None = ..., + kind: type[Any] | None = None, + Loader: type[BaseResolver] | None = None, Dumper: type[BaseResolver] = ..., ) -> None: ... @overload def add_constructor( - tag: str, constructor: Callable[[Loader | FullLoader | UnsafeLoader, Node], Any], Loader: None = ... + tag: str, constructor: Callable[[Loader | FullLoader | UnsafeLoader, Node], Any], Loader: None = None ) -> None: ... @overload def add_constructor(tag: str, constructor: Callable[[_Constructor, Node], Any], Loader: type[_Constructor]) -> None: ... @overload def add_multi_constructor( - tag_prefix: str, multi_constructor: Callable[[Loader | FullLoader | UnsafeLoader, str, Node], Any], Loader: None = ... + tag_prefix: str, multi_constructor: Callable[[Loader | FullLoader | UnsafeLoader, str, Node], Any], Loader: None = None ) -> None: ... @overload def add_multi_constructor( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/constructor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/constructor.pyi index fb383a7db..46374d906 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/constructor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/constructor.pyi @@ -30,11 +30,11 @@ class BaseConstructor: def get_data(self): ... def get_single_data(self) -> Any: ... def construct_document(self, node): ... - def construct_object(self, node, deep=...): ... + def construct_object(self, node, deep=False): ... def construct_scalar(self, node: ScalarNode) -> _Scalar: ... - def construct_sequence(self, node: SequenceNode, deep: bool = ...) -> list[Any]: ... - def construct_mapping(self, node: MappingNode, deep: bool = ...) -> dict[Hashable, Any]: ... - def construct_pairs(self, node, deep=...): ... + def construct_sequence(self, node: SequenceNode, deep: bool = False) -> list[Any]: ... + def construct_mapping(self, node: MappingNode, deep: bool = False) -> dict[Hashable, Any]: ... + def construct_pairs(self, node, deep=False): ... @classmethod # Use typevars so we can have covariant behaviour in the parameter types def add_constructor(cls, tag: str, constructor: Callable[[_L, _N], Any]) -> None: ... @@ -44,7 +44,7 @@ class BaseConstructor: class SafeConstructor(BaseConstructor): def construct_scalar(self, node: ScalarNode) -> _Scalar: ... def flatten_mapping(self, node: MappingNode) -> None: ... - def construct_mapping(self, node: MappingNode, deep: bool = ...) -> dict[Hashable, Any]: ... + def construct_mapping(self, node: MappingNode, deep: bool = False) -> dict[Hashable, Any]: ... def construct_yaml_null(self, node: ScalarNode) -> None: ... bool_values: ClassVar[dict[str, bool]] def construct_yaml_bool(self, node: ScalarNode) -> bool: ... @@ -73,20 +73,20 @@ class FullConstructor(SafeConstructor): def construct_python_long(self, node): ... def construct_python_complex(self, node): ... def construct_python_tuple(self, node): ... - def find_python_module(self, name, mark, unsafe=...): ... - def find_python_name(self, name, mark, unsafe=...): ... + def find_python_module(self, name, mark, unsafe=False): ... + def find_python_name(self, name, mark, unsafe=False): ... def construct_python_name(self, suffix, node): ... def construct_python_module(self, suffix, node): ... - def make_python_instance(self, suffix, node, args=..., kwds=..., newobj=..., unsafe=...): ... - def set_python_instance_state(self, instance, state, unsafe: bool = ...) -> None: ... + def make_python_instance(self, suffix, node, args=None, kwds=None, newobj=False, unsafe=False): ... + def set_python_instance_state(self, instance, state, unsafe: bool = False) -> None: ... def construct_python_object(self, suffix, node): ... - def construct_python_object_apply(self, suffix, node, newobj=...): ... + def construct_python_object_apply(self, suffix, node, newobj=False): ... def construct_python_object_new(self, suffix, node): ... class UnsafeConstructor(FullConstructor): def find_python_module(self, name, mark): ... def find_python_name(self, name, mark): ... - def make_python_instance(self, suffix, node, args=..., kwds=..., newobj=...): ... + def make_python_instance(self, suffix, node, args=None, kwds=None, newobj=False): ... def set_python_instance_state(self, instance, state): ... class Constructor(SafeConstructor): @@ -99,8 +99,8 @@ class Constructor(SafeConstructor): def find_python_name(self, name, mark): ... def construct_python_name(self, suffix, node): ... def construct_python_module(self, suffix, node): ... - def make_python_instance(self, suffix, node, args=..., kwds=..., newobj=...): ... + def make_python_instance(self, suffix, node, args=None, kwds=None, newobj=False): ... def set_python_instance_state(self, instance, state): ... def construct_python_object(self, suffix, node): ... - def construct_python_object_apply(self, suffix, node, newobj=...): ... + def construct_python_object_apply(self, suffix, node, newobj=False): ... def construct_python_object_new(self, suffix, node): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/cyaml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/cyaml.pyi index 90870b0e0..85526cc44 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/cyaml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/cyaml.pyi @@ -32,38 +32,38 @@ class CBaseDumper(CEmitter, BaseRepresenter, BaseResolver): def __init__( self, stream: IO[Any], - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: Incomplete | None = ..., - indent: int | None = ..., - width: int | None = ..., - allow_unicode: Incomplete | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: Incomplete | None = ..., - explicit_end: Incomplete | None = ..., - version: Sequence[int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: Incomplete | None = None, + indent: int | None = None, + width: int | None = None, + allow_unicode: Incomplete | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: Incomplete | None = None, + explicit_end: Incomplete | None = None, + version: Sequence[int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... class CDumper(CEmitter, SafeRepresenter, Resolver): def __init__( self, stream: IO[Any], - default_style: str | None = ..., - default_flow_style: bool = ..., - canonical: Incomplete | None = ..., - indent: int | None = ..., - width: int | None = ..., - allow_unicode: Incomplete | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: Incomplete | None = ..., - explicit_end: Incomplete | None = ..., - version: Sequence[int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool = False, + canonical: Incomplete | None = None, + indent: int | None = None, + width: int | None = None, + allow_unicode: Incomplete | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: Incomplete | None = None, + explicit_end: Incomplete | None = None, + version: Sequence[int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... CSafeDumper = CDumper diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/dumper.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/dumper.pyi index 7203aaeab..e9b18e1dc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/dumper.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/dumper.pyi @@ -17,55 +17,55 @@ class BaseDumper(Emitter, Serializer, BaseRepresenter, BaseResolver): def __init__( self, stream: _WriteStream[Any], - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... class SafeDumper(Emitter, Serializer, SafeRepresenter, Resolver): def __init__( self, stream: _WriteStream[Any], - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... class Dumper(Emitter, Serializer, Representer, Resolver): def __init__( self, stream: _WriteStream[Any], - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/emitter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/emitter.pyi index aaf3b02d5..7b5245de4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/emitter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/emitter.pyi @@ -56,20 +56,20 @@ class Emitter: analysis: Any style: Any def __init__( - self, stream: _WriteStream[Any], canonical=..., indent=..., width=..., allow_unicode=..., line_break=... + self, stream: _WriteStream[Any], canonical=None, indent=None, width=None, allow_unicode=None, line_break=None ) -> None: ... def dispose(self): ... def emit(self, event): ... def need_more_events(self): ... def need_events(self, count): ... - def increase_indent(self, flow=..., indentless=...): ... + def increase_indent(self, flow=False, indentless=False): ... def expect_stream_start(self): ... def expect_nothing(self): ... def expect_first_document_start(self): ... - def expect_document_start(self, first=...): ... + def expect_document_start(self, first=False): ... def expect_document_end(self): ... def expect_document_root(self): ... - def expect_node(self, root=..., sequence=..., mapping=..., simple_key=...): ... + def expect_node(self, root=False, sequence=False, mapping=False, simple_key=False): ... def expect_alias(self): ... def expect_scalar(self): ... def expect_flow_sequence(self): ... @@ -82,10 +82,10 @@ class Emitter: def expect_flow_mapping_value(self): ... def expect_block_sequence(self): ... def expect_first_block_sequence_item(self): ... - def expect_block_sequence_item(self, first=...): ... + def expect_block_sequence_item(self, first=False): ... def expect_block_mapping(self): ... def expect_first_block_mapping_key(self): ... - def expect_block_mapping_key(self, first=...): ... + def expect_block_mapping_key(self, first=False): ... def expect_block_mapping_simple_value(self): ... def expect_block_mapping_value(self): ... def check_empty_sequence(self): ... @@ -105,15 +105,15 @@ class Emitter: def flush_stream(self): ... def write_stream_start(self): ... def write_stream_end(self): ... - def write_indicator(self, indicator, need_whitespace, whitespace=..., indention=...): ... + def write_indicator(self, indicator, need_whitespace, whitespace=False, indention=False): ... def write_indent(self): ... - def write_line_break(self, data=...): ... + def write_line_break(self, data=None): ... def write_version_directive(self, version_text): ... def write_tag_directive(self, handle_text, prefix_text): ... - def write_single_quoted(self, text, split=...): ... + def write_single_quoted(self, text, split=True): ... ESCAPE_REPLACEMENTS: Any - def write_double_quoted(self, text, split=...): ... + def write_double_quoted(self, text, split=True): ... def determine_block_hints(self, text): ... def write_folded(self, text): ... def write_literal(self, text): ... - def write_plain(self, text, split=...): ... + def write_plain(self, text, split=True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/error.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/error.pyi index 4bb59d35d..35c410ac9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/error.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/error.pyi @@ -6,7 +6,7 @@ class Mark: buffer: str | None pointer: int def __init__(self, name: str, index: int, line: int, column: int, buffer: str | None, pointer: int) -> None: ... - def get_snippet(self, indent: int = ..., max_length: int = ...) -> str | None: ... + def get_snippet(self, indent: int = 4, max_length: int = 75) -> str | None: ... class YAMLError(Exception): ... @@ -18,9 +18,9 @@ class MarkedYAMLError(YAMLError): note: str | None def __init__( self, - context: str | None = ..., - context_mark: Mark | None = ..., - problem: str | None = ..., - problem_mark: Mark | None = ..., - note: str | None = ..., + context: str | None = None, + context_mark: Mark | None = None, + problem: str | None = None, + problem_mark: Mark | None = None, + note: str | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/events.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/events.pyi index 7096d157c..e4e2a8f1c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/events.pyi @@ -3,13 +3,13 @@ from typing import Any class Event: start_mark: Any end_mark: Any - def __init__(self, start_mark=..., end_mark=...) -> None: ... + def __init__(self, start_mark=None, end_mark=None) -> None: ... class NodeEvent(Event): anchor: Any start_mark: Any end_mark: Any - def __init__(self, anchor, start_mark=..., end_mark=...) -> None: ... + def __init__(self, anchor, start_mark=None, end_mark=None) -> None: ... class CollectionStartEvent(NodeEvent): anchor: Any @@ -18,7 +18,7 @@ class CollectionStartEvent(NodeEvent): start_mark: Any end_mark: Any flow_style: Any - def __init__(self, anchor, tag, implicit, start_mark=..., end_mark=..., flow_style=...) -> None: ... + def __init__(self, anchor, tag, implicit, start_mark=None, end_mark=None, flow_style=None) -> None: ... class CollectionEndEvent(Event): ... @@ -26,7 +26,7 @@ class StreamStartEvent(Event): start_mark: Any end_mark: Any encoding: Any - def __init__(self, start_mark=..., end_mark=..., encoding=...) -> None: ... + def __init__(self, start_mark=None, end_mark=None, encoding=None) -> None: ... class StreamEndEvent(Event): ... @@ -36,13 +36,13 @@ class DocumentStartEvent(Event): explicit: Any version: Any tags: Any - def __init__(self, start_mark=..., end_mark=..., explicit=..., version=..., tags=...) -> None: ... + def __init__(self, start_mark=None, end_mark=None, explicit=None, version=None, tags=None) -> None: ... class DocumentEndEvent(Event): start_mark: Any end_mark: Any explicit: Any - def __init__(self, start_mark=..., end_mark=..., explicit=...) -> None: ... + def __init__(self, start_mark=None, end_mark=None, explicit=None) -> None: ... class AliasEvent(NodeEvent): ... @@ -54,7 +54,7 @@ class ScalarEvent(NodeEvent): start_mark: Any end_mark: Any style: Any - def __init__(self, anchor, tag, implicit, value, start_mark=..., end_mark=..., style=...) -> None: ... + def __init__(self, anchor, tag, implicit, value, start_mark=None, end_mark=None, style=None) -> None: ... class SequenceStartEvent(CollectionStartEvent): ... class SequenceEndEvent(CollectionEndEvent): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/nodes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/nodes.pyi index 4ee971260..de490db93 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/nodes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/nodes.pyi @@ -16,13 +16,13 @@ class ScalarNode(Node): id: ClassVar[str] style: str | Any def __init__( - self, tag: str, value, start_mark: Mark | None = ..., end_mark: Mark | None = ..., style: str | None = ... + self, tag: str, value, start_mark: Mark | None = None, end_mark: Mark | None = None, style: str | None = None ) -> None: ... class CollectionNode(Node): flow_style: bool | Any def __init__( - self, tag: str, value, start_mark: Mark | None = ..., end_mark: Mark | None = ..., flow_style: bool | None = ... + self, tag: str, value, start_mark: Mark | None = None, end_mark: Mark | None = None, flow_style: bool | None = None ) -> None: ... class SequenceNode(CollectionNode): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/parser.pyi index 9dc41d2ae..1db45c4ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/parser.pyi @@ -26,7 +26,7 @@ class Parser: def parse_block_node(self): ... def parse_flow_node(self): ... def parse_block_node_or_indentless_sequence(self): ... - def parse_node(self, block=..., indentless_sequence=...): ... + def parse_node(self, block=False, indentless_sequence=False): ... def parse_block_sequence_first_entry(self): ... def parse_block_sequence_entry(self): ... def parse_indentless_sequence_entry(self): ... @@ -34,12 +34,12 @@ class Parser: def parse_block_mapping_key(self): ... def parse_block_mapping_value(self): ... def parse_flow_sequence_first_entry(self): ... - def parse_flow_sequence_entry(self, first=...): ... + def parse_flow_sequence_entry(self, first=False): ... def parse_flow_sequence_entry_mapping_key(self): ... def parse_flow_sequence_entry_mapping_value(self): ... def parse_flow_sequence_entry_mapping_end(self): ... def parse_flow_mapping_first_key(self): ... - def parse_flow_mapping_key(self, first=...): ... + def parse_flow_mapping_key(self, first=False): ... def parse_flow_mapping_value(self): ... def parse_flow_mapping_empty_value(self): ... def process_empty_scalar(self, mark): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/reader.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/reader.pyi index 01d74cc9b..cace808a8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/reader.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/reader.pyi @@ -28,12 +28,12 @@ class Reader: line: Any column: Any def __init__(self, stream: _ReadStream) -> None: ... - def peek(self, index=...): ... - def prefix(self, length=...): ... - def forward(self, length=...): ... + def peek(self, index=0): ... + def prefix(self, length=1): ... + def forward(self, length=1): ... def get_mark(self): ... def determine_encoding(self): ... NON_PRINTABLE: Any def check_printable(self, data): ... def update(self, length): ... - def update_raw(self, size=...): ... + def update_raw(self, size=4096): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/representer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/representer.pyi index 35f82355c..c84c56218 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/representer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/representer.pyi @@ -21,17 +21,17 @@ class BaseRepresenter: represented_objects: dict[int, Node] object_keeper: list[Any] alias_key: int | Incomplete - def __init__(self, default_style: str | None = ..., default_flow_style: bool = ..., sort_keys: bool = ...) -> None: ... + def __init__(self, default_style: str | None = None, default_flow_style: bool = False, sort_keys: bool = True) -> None: ... def represent(self, data) -> None: ... def represent_data(self, data) -> Node: ... @classmethod def add_representer(cls: type[_R], data_type: type[_T], representer: Callable[[_R, _T], Node]) -> None: ... @classmethod def add_multi_representer(cls: type[_R], data_type: type[_T], representer: Callable[[_R, _T], Node]) -> None: ... - def represent_scalar(self, tag: str, value, style: str | None = ...) -> ScalarNode: ... - def represent_sequence(self, tag: str, sequence: Iterable[Any], flow_style: bool | None = ...) -> SequenceNode: ... + def represent_scalar(self, tag: str, value, style: str | None = None) -> ScalarNode: ... + def represent_sequence(self, tag: str, sequence: Iterable[Any], flow_style: bool | None = None) -> SequenceNode: ... def represent_mapping( - self, tag: str, mapping: SupportsItems[Any, Any] | Iterable[tuple[Any, Any]], flow_style: bool | None = ... + self, tag: str, mapping: SupportsItems[Any, Any] | Iterable[tuple[Any, Any]], flow_style: bool | None = None ) -> MappingNode: ... def ignore_aliases(self, data) -> bool: ... @@ -49,7 +49,7 @@ class SafeRepresenter(BaseRepresenter): def represent_set(self, data: Iterable[Any]) -> MappingNode: ... def represent_date(self, data: datetime.date) -> ScalarNode: ... def represent_datetime(self, data: datetime.datetime) -> ScalarNode: ... - def represent_yaml_object(self, tag: str, data, cls, flow_style: bool | None = ...) -> MappingNode: ... + def represent_yaml_object(self, tag: str, data, cls, flow_style: bool | None = None) -> MappingNode: ... def represent_undefined(self, data) -> NoReturn: ... class Representer(SafeRepresenter): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/resolver.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/resolver.pyi index f5f534dee..cffe02a41 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/resolver.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/resolver.pyi @@ -16,7 +16,7 @@ class BaseResolver: @classmethod def add_implicit_resolver(cls, tag, regexp, first): ... @classmethod - def add_path_resolver(cls, tag, path, kind=...): ... + def add_path_resolver(cls, tag, path, kind=None): ... def descend_resolver(self, current_node, current_index): ... def ascend_resolver(self): ... def check_resolver_prefix(self, depth, path, kind, current_node, current_index): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/serializer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/serializer.pyi index 0c51590f4..471429020 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/serializer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/serializer.pyi @@ -16,7 +16,7 @@ class Serializer: anchors: Any last_anchor_id: Any closed: Any - def __init__(self, encoding=..., explicit_start=..., explicit_end=..., version=..., tags=...) -> None: ... + def __init__(self, encoding=None, explicit_start=None, explicit_end=None, version=None, tags=None) -> None: ... def open(self) -> None: ... def close(self) -> None: ... def serialize(self, node: Node) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/tokens.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/tokens.pyi index b258ec7b2..632a1644a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/tokens.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/tokens.pyi @@ -24,7 +24,7 @@ class StreamStartToken(Token): start_mark: Any end_mark: Any encoding: Any - def __init__(self, start_mark=..., end_mark=..., encoding=...) -> None: ... + def __init__(self, start_mark=None, end_mark=None, encoding=None) -> None: ... class StreamEndToken(Token): id: Any @@ -90,4 +90,4 @@ class ScalarToken(Token): start_mark: Any end_mark: Any style: Any - def __init__(self, value, plain, start_mark, end_mark, style=...) -> None: ... + def __init__(self, value, plain, start_mark, end_mark, style=None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/__init__.pyi index 59c06c2a1..ce36f3c07 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/__init__.pyi @@ -12,8 +12,8 @@ def lex(code, lexer): ... @overload def format(tokens, formatter: Formatter[_T], outfile: SupportsWrite[_T]) -> None: ... @overload -def format(tokens, formatter: Formatter[_T], outfile: None = ...) -> _T: ... +def format(tokens, formatter: Formatter[_T], outfile: None = None) -> _T: ... @overload def highlight(code, lexer, formatter: Formatter[_T], outfile: SupportsWrite[_T]) -> None: ... @overload -def highlight(code, lexer, formatter: Formatter[_T], outfile: None = ...) -> _T: ... +def highlight(code, lexer, formatter: Formatter[_T], outfile: None = None) -> _T: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/cmdline.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/cmdline.pyi index 76dbb3b3a..d835e626a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/cmdline.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/cmdline.pyi @@ -4,8 +4,6 @@ from _typeshed import Incomplete def main_inner(parser, argns): ... class HelpFormatter(argparse.HelpFormatter): - def __init__( - self, prog, indent_increment: int = ..., max_help_position: int = ..., width: Incomplete | None = ... - ) -> None: ... + def __init__(self, prog, indent_increment: int = 2, max_help_position: int = 16, width: Incomplete | None = None) -> None: ... def main(args=...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/filter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/filter.pyi index 52676b63c..b3e9709d1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/filter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/filter.pyi @@ -5,7 +5,7 @@ from typing import Any from pygments.lexer import Lexer from pygments.token import _TokenType -def apply_filters(stream, filters, lexer: Incomplete | None = ...): ... +def apply_filters(stream, filters, lexer: Incomplete | None = None): ... def simplefilter(f): ... class Filter: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatter.pyi index f441d487c..f13948978 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatter.pyi @@ -13,10 +13,10 @@ class Formatter(Generic[_T]): encoding: Any options: Any @overload - def __init__(self: Formatter[str], *, encoding: None = ..., outencoding: None = ..., **options) -> None: ... + def __init__(self: Formatter[str], *, encoding: None = None, outencoding: None = None, **options) -> None: ... @overload - def __init__(self: Formatter[bytes], *, encoding: str, outencoding: None = ..., **options) -> None: ... + def __init__(self: Formatter[bytes], *, encoding: str, outencoding: None = None, **options) -> None: ... @overload - def __init__(self: Formatter[bytes], *, encoding: None = ..., outencoding: str, **options) -> None: ... - def get_style_defs(self, arg: str = ...): ... + def __init__(self: Formatter[bytes], *, encoding: None = None, outencoding: str, **options) -> None: ... + def get_style_defs(self, arg: str = ""): ... def format(self, tokensource, outfile): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/__init__.pyi index 217aa9e4a..09fc071c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/__init__.pyi @@ -21,5 +21,5 @@ from .terminal256 import Terminal256Formatter as Terminal256Formatter, TerminalT def get_all_formatters() -> Generator[type[Formatter[Any]], None, None]: ... def get_formatter_by_name(_alias, **options): ... -def load_formatter_from_file(filename, formattername: str = ..., **options): ... +def load_formatter_from_file(filename, formattername: str = "CustomFormatter", **options): ... def get_formatter_for_filename(fn, **options): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/html.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/html.pyi index b34348ff9..aba09dad6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/html.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/html.pyi @@ -33,9 +33,9 @@ class HtmlFormatter(Formatter[_T]): linespans: Any anchorlinenos: Any hl_lines: Any - def get_style_defs(self, arg: Incomplete | None = ...): ... - def get_token_style_defs(self, arg: Incomplete | None = ...): ... - def get_background_style_defs(self, arg: Incomplete | None = ...): ... + def get_style_defs(self, arg: Incomplete | None = None): ... + def get_token_style_defs(self, arg: Incomplete | None = None): ... + def get_background_style_defs(self, arg: Incomplete | None = None): ... def get_linenos_style_defs(self): ... def get_css_prefix(self, arg): ... def wrap(self, source): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/img.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/img.pyi index 255dc80fd..66b29e852 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/img.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/img.pyi @@ -12,7 +12,7 @@ class FontManager: font_size: Any fonts: Any encoding: Any - def __init__(self, font_name, font_size: int = ...) -> None: ... + def __init__(self, font_name, font_size: int = 14) -> None: ... def get_char_size(self): ... def get_text_size(self, text): ... def get_font(self, bold, oblique): ... @@ -44,7 +44,7 @@ class ImageFormatter(Formatter[_T]): hl_lines: Any hl_color: Any drawables: Any - def get_style_defs(self, arg: str = ...) -> None: ... + def get_style_defs(self, arg: str = "") -> None: ... def format(self, tokensource, outfile) -> None: ... class GifImageFormatter(ImageFormatter[_T]): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/latex.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/latex.pyi index 83147436e..1cdbf7b2c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/latex.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/latex.pyi @@ -23,7 +23,7 @@ class LatexFormatter(Formatter[_T]): left: Any right: Any envname: Any - def get_style_defs(self, arg: str = ...): ... + def get_style_defs(self, arg: str = ""): ... def format_unencoded(self, tokensource, outfile) -> None: ... class LatexEmbeddedLexer(Lexer): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/terminal256.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/terminal256.pyi index 82b06aecb..362c09d90 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/terminal256.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/terminal256.pyi @@ -13,11 +13,11 @@ class EscapeSequence: italic: Any def __init__( self, - fg: Incomplete | None = ..., - bg: Incomplete | None = ..., - bold: bool = ..., - underline: bool = ..., - italic: bool = ..., + fg: Incomplete | None = None, + bg: Incomplete | None = None, + bold: bool = False, + underline: bool = False, + italic: bool = False, ) -> None: ... def escape(self, attrs): ... def color_string(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/lexer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/lexer.pyi index deda4ff56..e9d93e5eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/lexer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/lexer.pyi @@ -26,7 +26,7 @@ class Lexer(metaclass=LexerMeta): filters: Any def __init__(self, **options) -> None: ... def add_filter(self, filter_, **options) -> None: ... - def get_tokens(self, text: str, unfiltered: bool = ...) -> Iterator[tuple[_TokenType, str]]: ... + def get_tokens(self, text: str, unfiltered: bool = False) -> Iterator[tuple[_TokenType, str]]: ... def get_tokens_unprocessed(self, text: str) -> Iterator[tuple[int, _TokenType, str]]: ... class DelegatingLexer(Lexer): @@ -47,9 +47,9 @@ class combined(tuple[Any, ...]): class _PseudoMatch: def __init__(self, start, text) -> None: ... - def start(self, arg: Incomplete | None = ...): ... - def end(self, arg: Incomplete | None = ...): ... - def group(self, arg: Incomplete | None = ...): ... + def start(self, arg: Incomplete | None = None): ... + def end(self, arg: Incomplete | None = None): ... + def group(self, arg: Incomplete | None = None): ... def groups(self): ... def groupdict(self): ... @@ -69,32 +69,32 @@ class words(Future): words: Any prefix: Any suffix: Any - def __init__(self, words, prefix: str = ..., suffix: str = ...) -> None: ... + def __init__(self, words, prefix: str = "", suffix: str = "") -> None: ... def get(self): ... class RegexLexerMeta(LexerMeta): - def process_tokendef(cls, name, tokendefs: Incomplete | None = ...): ... + def process_tokendef(cls, name, tokendefs: Incomplete | None = None): ... def get_tokendefs(cls): ... def __call__(cls, *args, **kwds): ... class RegexLexer(Lexer, metaclass=RegexLexerMeta): flags: Any tokens: Any - def get_tokens_unprocessed(self, text: str, stack: Iterable[str] = ...) -> Iterator[tuple[int, _TokenType, str]]: ... + def get_tokens_unprocessed(self, text: str, stack: Iterable[str] = ("root",)) -> Iterator[tuple[int, _TokenType, str]]: ... class LexerContext: text: Any pos: Any end: Any stack: Any - def __init__(self, text, pos, stack: Incomplete | None = ..., end: Incomplete | None = ...) -> None: ... + def __init__(self, text, pos, stack: Incomplete | None = None, end: Incomplete | None = None) -> None: ... class ExtendedRegexLexer(RegexLexer): def get_tokens_unprocessed( # type: ignore[override] - self, text: str | None = ..., context: LexerContext | None = ... + self, text: str | None = None, context: LexerContext | None = None ) -> Iterator[tuple[int, _TokenType, str]]: ... class ProfilingRegexLexerMeta(RegexLexerMeta): ... class ProfilingRegexLexer(RegexLexer, metaclass=ProfilingRegexLexerMeta): - def get_tokens_unprocessed(self, text: str, stack: Iterable[str] = ...) -> Iterator[tuple[int, _TokenType, str]]: ... + def get_tokens_unprocessed(self, text: str, stack: Iterable[str] = ("root",)) -> Iterator[tuple[int, _TokenType, str]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/lexers/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/lexers/__init__.pyi index 4421d7a29..5e04e24e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/lexers/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/lexers/__init__.pyi @@ -4,13 +4,13 @@ from typing import Any from pygments.lexer import Lexer, LexerMeta -def get_all_lexers(plugins: bool = ...) -> Iterator[tuple[str, tuple[str, ...], tuple[str, ...], tuple[str, ...]]]: ... +def get_all_lexers(plugins: bool = True) -> Iterator[tuple[str, tuple[str, ...], tuple[str, ...], tuple[str, ...]]]: ... def find_lexer_class(name: str) -> LexerMeta | None: ... def find_lexer_class_by_name(_alias: str) -> LexerMeta: ... def get_lexer_by_name(_alias: str, **options: Any) -> Lexer: ... -def load_lexer_from_file(filename: FileDescriptorOrPath, lexername: str = ..., **options: Any) -> Lexer: ... -def find_lexer_class_for_filename(_fn: StrPath, code: str | bytes | None = ...) -> LexerMeta | None: ... -def get_lexer_for_filename(_fn: StrPath, code: str | bytes | None = ..., **options: Any) -> Lexer: ... +def load_lexer_from_file(filename: FileDescriptorOrPath, lexername: str = "CustomLexer", **options: Any) -> Lexer: ... +def find_lexer_class_for_filename(_fn: StrPath, code: str | bytes | None = None) -> LexerMeta | None: ... +def get_lexer_for_filename(_fn: StrPath, code: str | bytes | None = None, **options: Any) -> Lexer: ... def get_lexer_for_mimetype(_mime: str, **options: Any) -> Lexer: ... def guess_lexer_for_filename(_fn: StrPath, _text: str, **options: Any) -> LexerMeta: ... def guess_lexer(_text: str | bytes, **options: Any) -> Lexer: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/modeline.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/modeline.pyi index 3bfa98602..e13780553 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/modeline.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/modeline.pyi @@ -1 +1 @@ -def get_filetype_from_buffer(buf, max_lines: int = ...): ... +def get_filetype_from_buffer(buf, max_lines: int = 5): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/regexopt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/regexopt.pyi index 799bebfc6..0d5b90a96 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/regexopt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/regexopt.pyi @@ -5,4 +5,4 @@ FIRST_ELEMENT: Any def make_charset(letters): ... def regex_opt_inner(strings, open_paren): ... -def regex_opt(strings, prefix: str = ..., suffix: str = ...): ... +def regex_opt(strings, prefix: str = "", suffix: str = ""): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/scanner.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/scanner.pyi index d43e47da1..df5c2c886 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/scanner.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/scanner.pyi @@ -10,7 +10,7 @@ class Scanner: flags: Any last: Any match: Any - def __init__(self, text, flags: int = ...) -> None: ... + def __init__(self, text, flags: int = 0) -> None: ... @property def eos(self): ... def check(self, pattern): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/util.pyi index 13ecaabe0..160045340 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/util.pyi @@ -10,10 +10,10 @@ xml_decl_re: Any class ClassNotFound(ValueError): ... class OptionError(Exception): ... -def get_choice_opt(options, optname, allowed, default: Incomplete | None = ..., normcase: bool = ...): ... -def get_bool_opt(options, optname, default: Incomplete | None = ...): ... -def get_int_opt(options, optname, default: Incomplete | None = ...): ... -def get_list_opt(options, optname, default: Incomplete | None = ...): ... +def get_choice_opt(options, optname, allowed, default: Incomplete | None = None, normcase: bool = False): ... +def get_bool_opt(options, optname, default: Incomplete | None = None): ... +def get_int_opt(options, optname, default: Incomplete | None = None): ... +def get_list_opt(options, optname, default: Incomplete | None = None): ... def docstring_headline(obj): ... def make_analysator(f): ... def shebang_matches(text, regex): ... @@ -21,8 +21,8 @@ def doctype_matches(text, regex): ... def html_doctype_matches(text): ... def looks_like_xml(text): ... def surrogatepair(c): ... -def format_lines(var_name, seq, raw: bool = ..., indent_level: int = ...): ... -def duplicates_removed(it, already_seen=...): ... +def format_lines(var_name, seq, raw: bool = False, indent_level: int = 0): ... +def duplicates_removed(it, already_seen=()): ... class Future: def get(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cimmutabledict.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cimmutabledict.pyi index 9883315dc..1a1a3006a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cimmutabledict.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cimmutabledict.pyi @@ -13,7 +13,7 @@ class immutabledict(dict[_KT, _VT], Generic[_KT, _VT]): @overload def union(self, __dict: dict[_KT2, _VT2]) -> immutabledict[_KT | _KT2, _VT | _VT2]: ... @overload - def union(self, __dict: None = ..., **kw: SupportsKeysAndGetItem[_KT2, _VT2]) -> immutabledict[_KT | _KT2, _VT | _VT2]: ... + def union(self, __dict: None = None, **kw: SupportsKeysAndGetItem[_KT2, _VT2]) -> immutabledict[_KT | _KT2, _VT | _VT2]: ... def merge_with( self, *args: SupportsKeysAndGetItem[_KT | _KT2, _VT2] | Iterable[tuple[_KT2, _VT2]] | None ) -> immutabledict[_KT | _KT2, _VT | _VT2]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/mxodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/mxodbc.pyi index 350b3df4a..3bf803352 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/mxodbc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/mxodbc.pyi @@ -13,5 +13,5 @@ class MxODBCConnector(Connector): def on_connect(self): ... def create_connect_args(self, url): ... def is_disconnect(self, e, connection, cursor): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... + def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... + def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/pyodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/pyodbc.pyi index b0b7ce25d..7210734f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/pyodbc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/pyodbc.pyi @@ -13,7 +13,7 @@ class PyODBCConnector(Connector): default_paramstyle: str use_setinputsizes: bool pyodbc_driver_name: Any - def __init__(self, supports_unicode_binds: Incomplete | None = ..., use_setinputsizes: bool = ..., **kw) -> None: ... + def __init__(self, supports_unicode_binds: Incomplete | None = None, use_setinputsizes: bool = False, **kw) -> None: ... @classmethod def dbapi(cls): ... def create_connect_args(self, url): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi index 564282e8e..a0d8dd01b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi @@ -22,15 +22,15 @@ RESERVED_WORDS: Any class _StringType(sqltypes.String): charset: Any - def __init__(self, charset: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, charset: Incomplete | None = None, **kw) -> None: ... class VARCHAR(_StringType, sqltypes.VARCHAR): __visit_name__: str - def __init__(self, length: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... class CHAR(_StringType, sqltypes.CHAR): __visit_name__: str - def __init__(self, length: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... class _FBDateTime(sqltypes.DateTime): def bind_processor(self, dialect): ... @@ -52,7 +52,7 @@ class FBCompiler(sql.compiler.SQLCompiler): def visit_startswith_op_binary(self, binary, operator, **kw): ... def visit_not_startswith_op_binary(self, binary, operator, **kw): ... def visit_mod_binary(self, binary, operator, **kw): ... - def visit_alias(self, alias, asfrom: bool = ..., **kwargs): ... # type: ignore[override] + def visit_alias(self, alias, asfrom: bool = False, **kwargs): ... # type: ignore[override] def visit_substring_func(self, func, **kw): ... def visit_length_func(self, function, **kw): ... visit_char_length_func: Any @@ -97,13 +97,13 @@ class FBDialect(default.DefaultDialect): def __init__(self, *args, **kwargs) -> None: ... implicit_returning: Any def initialize(self, connection) -> None: ... - def has_table(self, connection, table_name, schema: Incomplete | None = ...): ... # type: ignore[override] - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = ...): ... # type: ignore[override] - def get_table_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = ..., **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_column_sequence(self, connection, table_name, column_name, schema: Incomplete | None = ..., **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... + def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] + def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None): ... # type: ignore[override] + def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... + def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_column_sequence(self, connection, table_name, column_name, schema: Incomplete | None = None, **kw): ... + def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/fdb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/fdb.pyi index 4bc56c5a6..c2c7a025a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/fdb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/fdb.pyi @@ -2,7 +2,7 @@ from .kinterbasdb import FBDialect_kinterbasdb class FBDialect_fdb(FBDialect_kinterbasdb): supports_statement_cache: bool - def __init__(self, enable_rowcount: bool = ..., retaining: bool = ..., **kwargs) -> None: ... + def __init__(self, enable_rowcount: bool = True, retaining: bool = False, **kwargs) -> None: ... @classmethod def dbapi(cls): ... def create_connect_args(self, url): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi index 09d3dabd6..7f957f3ce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi @@ -26,11 +26,11 @@ class FBDialect_kinterbasdb(FBDialect): concurrency_level: Any retaining: Any def __init__( - self, type_conv: int = ..., concurrency_level: int = ..., enable_rowcount: bool = ..., retaining: bool = ..., **kwargs + self, type_conv: int = 200, concurrency_level: int = 1, enable_rowcount: bool = True, retaining: bool = False, **kwargs ) -> None: ... @classmethod def dbapi(cls): ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... + def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... def do_rollback(self, dbapi_connection) -> None: ... def do_commit(self, dbapi_connection) -> None: ... def create_connect_args(self, url): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi index 47b9703ad..db60f2b7a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi @@ -47,7 +47,7 @@ class _MSDate(sqltypes.Date): class TIME(sqltypes.TIME): precision: Any - def __init__(self, precision: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, precision: Incomplete | None = None, **kwargs) -> None: ... def bind_processor(self, dialect): ... def result_processor(self, dialect, coltype): ... @@ -67,12 +67,12 @@ class SMALLDATETIME(_DateTimeBase, sqltypes.DateTime): class DATETIME2(_DateTimeBase, sqltypes.DateTime): __visit_name__: str precision: Any - def __init__(self, precision: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, precision: Incomplete | None = None, **kw) -> None: ... class DATETIMEOFFSET(_DateTimeBase, sqltypes.DateTime): __visit_name__: str precision: Any - def __init__(self, precision: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, precision: Incomplete | None = None, **kw) -> None: ... class _UnicodeLiteral: def literal_processor(self, dialect): ... @@ -84,7 +84,7 @@ class TIMESTAMP(sqltypes._Binary): __visit_name__: str length: Any convert_int: Any - def __init__(self, convert_int: bool = ...) -> None: ... + def __init__(self, convert_int: bool = False) -> None: ... def result_processor(self, dialect, coltype): ... class ROWVERSION(TIMESTAMP): @@ -101,7 +101,7 @@ class VARBINARY(sqltypes.VARBINARY, sqltypes.LargeBinary): @overload def __init__(self, *, filestream: Literal[True]) -> None: ... @overload - def __init__(self, length: Incomplete | None = ..., filestream: Literal[False] = ...) -> None: ... + def __init__(self, length: Incomplete | None = None, filestream: Literal[False] = False) -> None: ... class IMAGE(sqltypes.LargeBinary): __visit_name__: str @@ -251,7 +251,7 @@ class MSSQLStrictCompiler(MSSQLCompiler): class MSDDLCompiler(compiler.DDLCompiler): def get_column_specification(self, column, **kwargs): ... - def visit_create_index(self, create, include_schema: bool = ...): ... # type: ignore[override] + def visit_create_index(self, create, include_schema: bool = False): ... # type: ignore[override] def visit_drop_index(self, drop): ... def visit_primary_key_constraint(self, constraint): ... def visit_unique_constraint(self, constraint): ... @@ -262,7 +262,7 @@ class MSDDLCompiler(compiler.DDLCompiler): class MSIdentifierPreparer(compiler.IdentifierPreparer): reserved_words: Any def __init__(self, dialect) -> None: ... - def quote_schema(self, schema, force: Incomplete | None = ...): ... + def quote_schema(self, schema, force: Incomplete | None = None): ... class MSDialect(default.DefaultDialect): name: str @@ -296,15 +296,15 @@ class MSDialect(default.DefaultDialect): isolation_level: Any def __init__( self, - query_timeout: Incomplete | None = ..., - use_scope_identity: bool = ..., - schema_name: str = ..., - isolation_level: Incomplete | None = ..., - deprecate_large_types: Incomplete | None = ..., - json_serializer: Incomplete | None = ..., - json_deserializer: Incomplete | None = ..., - legacy_schema_aliasing: Incomplete | None = ..., - ignore_no_transaction_on_rollback: bool = ..., + query_timeout: Incomplete | None = None, + use_scope_identity: bool = True, + schema_name: str = "dbo", + isolation_level: Incomplete | None = None, + deprecate_large_types: Incomplete | None = None, + json_serializer: Incomplete | None = None, + json_deserializer: Incomplete | None = None, + legacy_schema_aliasing: Incomplete | None = None, + ignore_no_transaction_on_rollback: bool = False, **opts, ) -> None: ... def do_savepoint(self, connection, name) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/mxodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/mxodbc.pyi index ee58d3dec..2f0a14ffa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/mxodbc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/mxodbc.pyi @@ -22,6 +22,6 @@ class MSDialect_mxodbc(MxODBCConnector, MSDialect): supports_statement_cache: bool colspecs: Any description_encoding: Any - def __init__(self, description_encoding: Incomplete | None = ..., **params) -> None: ... + def __init__(self, description_encoding: Incomplete | None = None, **params) -> None: ... dialect = MSDialect_mxodbc diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi index 0ee156b64..50d53b123 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi @@ -37,9 +37,9 @@ class MSDialect_pyodbc(PyODBCConnector, MSDialect): description_encoding: Any use_scope_identity: Any fast_executemany: Any - def __init__(self, description_encoding: Incomplete | None = ..., fast_executemany: bool = ..., **params) -> None: ... + def __init__(self, description_encoding: Incomplete | None = None, fast_executemany: bool = False, **params) -> None: ... def on_connect(self): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... + def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... def is_disconnect(self, e, connection, cursor): ... dialect = MSDialect_pyodbc diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/aiomysql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/aiomysql.pyi index 3dc245d01..a91b28976 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/aiomysql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/aiomysql.pyi @@ -19,12 +19,12 @@ class AsyncAdapt_aiomysql_cursor: @property def lastrowid(self): ... def close(self) -> None: ... - def execute(self, operation, parameters: Incomplete | None = ...): ... + def execute(self, operation, parameters: Incomplete | None = None): ... def executemany(self, operation, seq_of_parameters): ... def setinputsizes(self, *inputsizes) -> None: ... def __iter__(self): ... def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... class AsyncAdapt_aiomysql_ss_cursor(AsyncAdapt_aiomysql_cursor): @@ -33,7 +33,7 @@ class AsyncAdapt_aiomysql_ss_cursor(AsyncAdapt_aiomysql_cursor): def __init__(self, adapt_connection) -> None: ... def close(self) -> None: ... def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... class AsyncAdapt_aiomysql_connection(AdaptedConnection): @@ -43,7 +43,7 @@ class AsyncAdapt_aiomysql_connection(AdaptedConnection): def ping(self, reconnect): ... def character_set_name(self): ... def autocommit(self, value) -> None: ... - def cursor(self, server_side: bool = ...): ... + def cursor(self, server_side: bool = False): ... def rollback(self) -> None: ... def commit(self) -> None: ... def close(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi index 69a9d5576..16180d582 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi @@ -19,12 +19,12 @@ class AsyncAdapt_asyncmy_cursor: @property def lastrowid(self): ... def close(self) -> None: ... - def execute(self, operation, parameters: Incomplete | None = ...): ... + def execute(self, operation, parameters: Incomplete | None = None): ... def executemany(self, operation, seq_of_parameters): ... def setinputsizes(self, *inputsizes) -> None: ... def __iter__(self): ... def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... class AsyncAdapt_asyncmy_ss_cursor(AsyncAdapt_asyncmy_cursor): @@ -33,7 +33,7 @@ class AsyncAdapt_asyncmy_ss_cursor(AsyncAdapt_asyncmy_cursor): def __init__(self, adapt_connection) -> None: ... def close(self) -> None: ... def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... class AsyncAdapt_asyncmy_connection(AdaptedConnection): @@ -43,7 +43,7 @@ class AsyncAdapt_asyncmy_connection(AdaptedConnection): def ping(self, reconnect): ... def character_set_name(self): ... def autocommit(self, value) -> None: ... - def cursor(self, server_side: bool = ...): ... + def cursor(self, server_side: bool = False): ... def rollback(self) -> None: ... def commit(self) -> None: ... def close(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi index 129de51eb..8a36027eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi @@ -89,13 +89,13 @@ class MySQLCompiler(compiler.SQLCompiler): def visit_mysql_match(self, element, **kw): ... def visit_match_op_binary(self, binary, operator, **kw): ... def get_from_hint_text(self, table, text): ... - def visit_typeclause(self, typeclause, type_: Incomplete | None = ..., **kw): ... + def visit_typeclause(self, typeclause, type_: Incomplete | None = None, **kw): ... def visit_cast(self, cast, **kw): ... def render_literal_value(self, value, type_): ... def visit_true(self, element, **kw): ... def visit_false(self, element, **kw): ... def get_select_precolumns(self, select, **kw): ... - def visit_join(self, join, asfrom: bool = ..., from_linter: Incomplete | None = ..., **kwargs): ... + def visit_join(self, join, asfrom: bool = False, from_linter: Incomplete | None = None, **kwargs): ... def for_update_clause(self, select, **kw): ... def limit_clause(self, select, **kw): ... def update_limit_clause(self, update_stmt): ... @@ -161,7 +161,7 @@ class MySQLTypeCompiler(compiler.GenericTypeCompiler): class MySQLIdentifierPreparer(compiler.IdentifierPreparer): reserved_words: Any - def __init__(self, dialect, server_ansiquotes: bool = ..., **kw) -> None: ... + def __init__(self, dialect, server_ansiquotes: bool = False, **kw) -> None: ... class MariaDBIdentifierPreparer(MySQLIdentifierPreparer): reserved_words: Any @@ -199,10 +199,10 @@ class MySQLDialect(default.DefaultDialect): isolation_level: Any def __init__( self, - isolation_level: Incomplete | None = ..., - json_serializer: Incomplete | None = ..., - json_deserializer: Incomplete | None = ..., - is_mariadb: Incomplete | None = ..., + isolation_level: Incomplete | None = None, + json_serializer: Incomplete | None = None, + json_deserializer: Incomplete | None = None, + is_mariadb: Incomplete | None = None, **kwargs, ) -> None: ... def on_connect(self): ... @@ -210,27 +210,27 @@ class MySQLDialect(default.DefaultDialect): def get_isolation_level(self, connection): ... def do_begin_twophase(self, connection, xid) -> None: ... def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... + def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... + def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... def do_recover_twophase(self, connection): ... def is_disconnect(self, e, connection, cursor): ... - def has_table(self, connection, table_name, schema: Incomplete | None = ...): ... # type: ignore[override] - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = ...): ... # type: ignore[override] - def get_sequence_names(self, connection, schema: Incomplete | None = ..., **kw): ... + def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] + def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None): ... # type: ignore[override] + def get_sequence_names(self, connection, schema: Incomplete | None = None, **kw): ... identifier_preparer: Any def initialize(self, connection) -> None: ... def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_table_options(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_check_constraints(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_table_comment(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = ..., **kw): ... + def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_table_options(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_check_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_table_comment(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... class _DecodingRow: rowproxy: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadbconnector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadbconnector.pyi index 0735fb75a..b4ab06a53 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadbconnector.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadbconnector.pyi @@ -30,7 +30,7 @@ class MySQLDialect_mariadbconnector(MySQLDialect): def create_connect_args(self, url): ... def do_begin_twophase(self, connection, xid) -> None: ... def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... + def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... + def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... dialect = MySQLDialect_mariadbconnector diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi index a8479ad8b..8daaf59a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi @@ -27,7 +27,7 @@ class MySQLDialect_mysqldb(MySQLDialect): def dbapi(cls): ... def on_connect(self): ... def do_ping(self, dbapi_connection): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... - def create_connect_args(self, url, _translate_args: Incomplete | None = ...): ... + def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... + def create_connect_args(self, url, _translate_args: Incomplete | None = None): ... dialect = MySQLDialect_mysqldb diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/oursql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/oursql.pyi index 1bc65d97b..fa7ea6fbe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/oursql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/oursql.pyi @@ -21,17 +21,17 @@ class MySQLDialect_oursql(MySQLDialect): colspecs: Any @classmethod def dbapi(cls): ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... + def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... def do_begin(self, connection) -> None: ... def do_begin_twophase(self, connection, xid) -> None: ... def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... - def has_table(self, connection, table_name, schema: Incomplete | None = ...): ... # type: ignore[override] - def get_table_options(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = ..., **kw): ... + def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... + def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... + def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] + def get_table_options(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... def get_schema_names(self, connection, **kw): ... def initialize(self, connection): ... def is_disconnect(self, e, connection, cursor): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi index fa7a49088..f91c2119f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi @@ -14,7 +14,7 @@ class MySQLDialect_pymysql(MySQLDialect_mysqldb): def supports_server_side_cursors(self): ... @classmethod def dbapi(cls): ... - def create_connect_args(self, url, _translate_args: Incomplete | None = ...): ... + def create_connect_args(self, url, _translate_args: Incomplete | None = None): ... def is_disconnect(self, e, connection, cursor): ... dialect = MySQLDialect_pymysql diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi index 5db2c9257..80e81e150 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi @@ -6,17 +6,17 @@ import sqlalchemy.types as sqltypes class _NumericType: unsigned: Any zerofill: Any - def __init__(self, unsigned: bool = ..., zerofill: bool = ..., **kw) -> None: ... + def __init__(self, unsigned: bool = False, zerofill: bool = False, **kw) -> None: ... class _FloatType(_NumericType, sqltypes.Float): scale: Any def __init__( - self, precision: Incomplete | None = ..., scale: Incomplete | None = ..., asdecimal: bool = ..., **kw + self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw ) -> None: ... class _IntegerType(_NumericType, sqltypes.Integer): display_width: Any - def __init__(self, display_width: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... class _StringType(sqltypes.String): charset: Any @@ -26,12 +26,12 @@ class _StringType(sqltypes.String): national: Any def __init__( self, - charset: Incomplete | None = ..., - collation: Incomplete | None = ..., - ascii: bool = ..., - binary: bool = ..., - unicode: bool = ..., - national: bool = ..., + charset: Incomplete | None = None, + collation: Incomplete | None = None, + ascii: bool = False, + binary: bool = False, + unicode: bool = False, + national: bool = False, **kw, ) -> None: ... @@ -41,84 +41,84 @@ class _MatchType(sqltypes.Float, sqltypes.MatchType): # type: ignore[misc] # i class NUMERIC(_NumericType, sqltypes.NUMERIC): __visit_name__: str def __init__( - self, precision: Incomplete | None = ..., scale: Incomplete | None = ..., asdecimal: bool = ..., **kw + self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw ) -> None: ... class DECIMAL(_NumericType, sqltypes.DECIMAL): __visit_name__: str def __init__( - self, precision: Incomplete | None = ..., scale: Incomplete | None = ..., asdecimal: bool = ..., **kw + self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw ) -> None: ... class DOUBLE(_FloatType): __visit_name__: str def __init__( - self, precision: Incomplete | None = ..., scale: Incomplete | None = ..., asdecimal: bool = ..., **kw + self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw ) -> None: ... class REAL(_FloatType, sqltypes.REAL): __visit_name__: str def __init__( - self, precision: Incomplete | None = ..., scale: Incomplete | None = ..., asdecimal: bool = ..., **kw + self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw ) -> None: ... class FLOAT(_FloatType, sqltypes.FLOAT): __visit_name__: str def __init__( - self, precision: Incomplete | None = ..., scale: Incomplete | None = ..., asdecimal: bool = ..., **kw + self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = False, **kw ) -> None: ... def bind_processor(self, dialect) -> None: ... class INTEGER(_IntegerType, sqltypes.INTEGER): __visit_name__: str - def __init__(self, display_width: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... class BIGINT(_IntegerType, sqltypes.BIGINT): __visit_name__: str - def __init__(self, display_width: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... class MEDIUMINT(_IntegerType): __visit_name__: str - def __init__(self, display_width: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... class TINYINT(_IntegerType): __visit_name__: str - def __init__(self, display_width: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... class SMALLINT(_IntegerType, sqltypes.SMALLINT): __visit_name__: str - def __init__(self, display_width: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... class BIT(sqltypes.TypeEngine): __visit_name__: str length: Any - def __init__(self, length: Incomplete | None = ...) -> None: ... + def __init__(self, length: Incomplete | None = None) -> None: ... def result_processor(self, dialect, coltype): ... class TIME(sqltypes.TIME): __visit_name__: str fsp: Any - def __init__(self, timezone: bool = ..., fsp: Incomplete | None = ...) -> None: ... + def __init__(self, timezone: bool = False, fsp: Incomplete | None = None) -> None: ... def result_processor(self, dialect, coltype): ... class TIMESTAMP(sqltypes.TIMESTAMP): __visit_name__: str fsp: Any - def __init__(self, timezone: bool = ..., fsp: Incomplete | None = ...) -> None: ... + def __init__(self, timezone: bool = False, fsp: Incomplete | None = None) -> None: ... class DATETIME(sqltypes.DATETIME): __visit_name__: str fsp: Any - def __init__(self, timezone: bool = ..., fsp: Incomplete | None = ...) -> None: ... + def __init__(self, timezone: bool = False, fsp: Incomplete | None = None) -> None: ... class YEAR(sqltypes.TypeEngine): __visit_name__: str display_width: Any - def __init__(self, display_width: Incomplete | None = ...) -> None: ... + def __init__(self, display_width: Incomplete | None = None) -> None: ... class TEXT(_StringType, sqltypes.TEXT): __visit_name__: str - def __init__(self, length: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, length: Incomplete | None = None, **kw) -> None: ... class TINYTEXT(_StringType): __visit_name__: str @@ -134,19 +134,19 @@ class LONGTEXT(_StringType): class VARCHAR(_StringType, sqltypes.VARCHAR): __visit_name__: str - def __init__(self, length: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... class CHAR(_StringType, sqltypes.CHAR): __visit_name__: str - def __init__(self, length: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... class NVARCHAR(_StringType, sqltypes.NVARCHAR): __visit_name__: str - def __init__(self, length: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... class NCHAR(_StringType, sqltypes.NCHAR): __visit_name__: str - def __init__(self, length: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... class TINYBLOB(sqltypes._Binary): __visit_name__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi index 9b41e88b2..cd2bdf53f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi @@ -36,7 +36,7 @@ NVARCHAR2 = NVARCHAR class NUMBER(sqltypes.Numeric, sqltypes.Integer): __visit_name__: str def __init__( - self, precision: Incomplete | None = ..., scale: Incomplete | None = ..., asdecimal: Incomplete | None = ... + self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: Incomplete | None = None ) -> None: ... def adapt(self, impltype): ... @@ -62,8 +62,8 @@ class INTERVAL(sqltypes.NativeForEmulated, sqltypes._AbstractInterval): __visit_name__: str day_precision: Any second_precision: Any - def __init__(self, day_precision: Incomplete | None = ..., second_precision: Incomplete | None = ...) -> None: ... - def as_generic(self, allow_nulltype: bool = ...): ... + def __init__(self, day_precision: Incomplete | None = None, second_precision: Incomplete | None = None) -> None: ... + def as_generic(self, allow_nulltype: bool = False): ... def coerce_compared_value(self, op, value): ... class ROWID(sqltypes.TypeEngine): @@ -115,7 +115,7 @@ class OracleCompiler(compiler.SQLCompiler): def visit_function(self, func, **kw): ... def visit_table_valued_column(self, element, **kw): ... def default_from(self): ... - def visit_join(self, join, from_linter: Incomplete | None = ..., **kwargs): ... # type: ignore[override] + def visit_join(self, join, from_linter: Incomplete | None = None, **kwargs): ... # type: ignore[override] def visit_outer_join_column(self, vc, **kw): ... def visit_sequence(self, seq, **kw): ... def get_render_as_alias_suffix(self, alias_name_text): ... @@ -180,11 +180,11 @@ class OracleDialect(default.DefaultDialect): exclude_tablespaces: Any def __init__( self, - use_ansi: bool = ..., - optimize_limits: bool = ..., - use_binds_for_limits: Incomplete | None = ..., - use_nchar_for_unicode: bool = ..., - exclude_tablespaces=..., + use_ansi: bool = True, + optimize_limits: bool = False, + use_binds_for_limits: Incomplete | None = None, + use_nchar_for_unicode: bool = False, + exclude_tablespaces=("SYSTEM", "SYSAUX"), **kwargs, ) -> None: ... implicit_returning: Any @@ -193,28 +193,30 @@ class OracleDialect(default.DefaultDialect): def get_isolation_level(self, connection) -> None: ... def get_default_isolation_level(self, dbapi_conn): ... def set_isolation_level(self, connection, level) -> None: ... - def has_table(self, connection, table_name, schema: Incomplete | None = ...): ... # type: ignore[override] - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = ...): ... # type: ignore[override] + def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] + def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None): ... # type: ignore[override] def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = ..., **kw): ... + def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... def get_temp_table_names(self, connection, **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_sequence_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_table_options(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... + def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_sequence_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_table_options(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... def get_table_comment( - self, connection, table_name, schema: Incomplete | None = ..., resolve_synonyms: bool = ..., dblink: str = ..., **kw + self, connection, table_name, schema: Incomplete | None = None, resolve_synonyms: bool = False, dblink: str = "", **kw ): ... def get_indexes( - self, connection, table_name, schema: Incomplete | None = ..., resolve_synonyms: bool = ..., dblink: str = ..., **kw + self, connection, table_name, schema: Incomplete | None = None, resolve_synonyms: bool = False, dblink: str = "", **kw ): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... + def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... def get_view_definition( - self, connection, view_name, schema: Incomplete | None = ..., resolve_synonyms: bool = ..., dblink: str = ..., **kw + self, connection, view_name, schema: Incomplete | None = None, resolve_synonyms: bool = False, dblink: str = "", **kw + ): ... + def get_check_constraints( + self, connection, table_name, schema: Incomplete | None = None, include_all: bool = False, **kw ): ... - def get_check_constraints(self, connection, table_name, schema: Incomplete | None = ..., include_all: bool = ..., **kw): ... class _OuterJoinColumn(ClauseElement): __visit_name__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi index 3484c83e0..1b755370b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi @@ -100,12 +100,12 @@ class OracleDialect_cx_oracle(OracleDialect): cx_oracle_ver: Any def __init__( self, - auto_convert_lobs: bool = ..., - coerce_to_unicode: bool = ..., - coerce_to_decimal: bool = ..., - arraysize: int = ..., - encoding_errors: Incomplete | None = ..., - threaded: Incomplete | None = ..., + auto_convert_lobs: bool = True, + coerce_to_unicode: bool = True, + coerce_to_decimal: bool = True, + arraysize: int = 50, + encoding_errors: Incomplete | None = None, + threaded: Incomplete | None = None, **kwargs, ): ... @classmethod @@ -117,11 +117,11 @@ class OracleDialect_cx_oracle(OracleDialect): def create_connect_args(self, url): ... def is_disconnect(self, e, connection, cursor): ... def create_xid(self): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... + def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... def do_begin_twophase(self, connection, xid) -> None: ... def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... + def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... + def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... def do_set_input_sizes(self, cursor, list_of_tuples, context) -> None: ... def do_recover_twophase(self, connection) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi index fe7c0e8bc..834619c95 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi @@ -14,7 +14,7 @@ class array(expression.ClauseList, expression.ColumnElement[_Any]): inherit_cache: bool type: _Any def __init__(self, clauses, **kw) -> None: ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... CONTAINS: _Any CONTAINED_BY: _Any @@ -31,7 +31,7 @@ class ARRAY(sqltypes.ARRAY): dimensions: _Any zero_indexes: _Any def __init__( - self, item_type, as_tuple: bool = ..., dimensions: Incomplete | None = ..., zero_indexes: bool = ... + self, item_type, as_tuple: bool = False, dimensions: Incomplete | None = None, zero_indexes: bool = False ) -> None: ... @property def hashable(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi index dfe48e376..a2894f2dc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi @@ -87,12 +87,12 @@ class AsyncAdapt_asyncpg_cursor: rowcount: int def __init__(self, adapt_connection) -> None: ... def close(self) -> None: ... - def execute(self, operation, parameters: Incomplete | None = ...) -> None: ... + def execute(self, operation, parameters: Incomplete | None = None) -> None: ... def executemany(self, operation, seq_of_parameters): ... def setinputsizes(self, *inputsizes) -> None: ... def __iter__(self): ... def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... class AsyncAdapt_asyncpg_ss_cursor(AsyncAdapt_asyncpg_cursor): @@ -102,7 +102,7 @@ class AsyncAdapt_asyncpg_ss_cursor(AsyncAdapt_asyncpg_cursor): def __aiter__(self): ... async def __anext__(self) -> None: ... def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... def executemany(self, operation, seq_of_parameters) -> None: ... @@ -112,13 +112,13 @@ class AsyncAdapt_asyncpg_connection(AdaptedConnection): isolation_level: str readonly: bool deferrable: bool - def __init__(self, dbapi, connection, prepared_statement_cache_size: int = ...) -> None: ... + def __init__(self, dbapi, connection, prepared_statement_cache_size: int = 100) -> None: ... @property def autocommit(self): ... @autocommit.setter def autocommit(self, value) -> None: ... def set_isolation_level(self, level) -> None: ... - def cursor(self, server_side: bool = ...): ... + def cursor(self, server_side: bool = False): ... def rollback(self) -> None: ... def commit(self) -> None: ... def close(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi index d72b1ed8d..1d62398c2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi @@ -60,21 +60,21 @@ class REGCLASS(sqltypes.TypeEngine): class TIMESTAMP(sqltypes.TIMESTAMP): precision: Any - def __init__(self, timezone: bool = ..., precision: Incomplete | None = ...) -> None: ... + def __init__(self, timezone: bool = False, precision: Incomplete | None = None) -> None: ... class TIME(sqltypes.TIME): precision: Any - def __init__(self, timezone: bool = ..., precision: Incomplete | None = ...) -> None: ... + def __init__(self, timezone: bool = False, precision: Incomplete | None = None) -> None: ... class INTERVAL(sqltypes.NativeForEmulated, sqltypes._AbstractInterval): __visit_name__: str native: bool precision: Any fields: Any - def __init__(self, precision: Incomplete | None = ..., fields: Incomplete | None = ...) -> None: ... + def __init__(self, precision: Incomplete | None = None, fields: Incomplete | None = None) -> None: ... @classmethod def adapt_emulated_to_native(cls, interval, **kw): ... - def as_generic(self, allow_nulltype: bool = ...): ... + def as_generic(self, allow_nulltype: bool = False): ... @property def python_type(self): ... def coerce_compared_value(self, op, value): ... @@ -85,14 +85,14 @@ class BIT(sqltypes.TypeEngine): __visit_name__: str length: Any varying: Any - def __init__(self, length: Incomplete | None = ..., varying: bool = ...) -> None: ... + def __init__(self, length: Incomplete | None = None, varying: bool = False) -> None: ... PGBit = BIT class UUID(sqltypes.TypeEngine): __visit_name__: str as_uuid: Any - def __init__(self, as_uuid: bool = ...) -> None: ... + def __init__(self, as_uuid: bool = False) -> None: ... def coerce_compared_value(self, op, value): ... def bind_processor(self, dialect): ... def result_processor(self, dialect, coltype): ... @@ -108,17 +108,17 @@ class ENUM(sqltypes.NativeForEmulated, sqltypes.Enum): # type: ignore[misc] # def __init__(self, *enums, **kw) -> None: ... @classmethod def adapt_emulated_to_native(cls, impl, **kw): ... - def create(self, bind: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... - def drop(self, bind: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... + def create(self, bind: Incomplete | None = None, checkfirst: bool = True) -> None: ... + def drop(self, bind: Incomplete | None = None, checkfirst: bool = True) -> None: ... class EnumGenerator(DDLBase): checkfirst: Any - def __init__(self, dialect, connection, checkfirst: bool = ..., **kwargs) -> None: ... + def __init__(self, dialect, connection, checkfirst: bool = False, **kwargs) -> None: ... def visit_enum(self, enum) -> None: ... class EnumDropper(DDLBase): checkfirst: Any - def __init__(self, dialect, connection, checkfirst: bool = ..., **kwargs) -> None: ... + def __init__(self, dialect, connection, checkfirst: bool = False, **kwargs) -> None: ... def visit_enum(self, enum) -> None: ... class _ColonCast(elements.Cast): @@ -135,8 +135,8 @@ class PGCompiler(compiler.SQLCompiler): def visit_colon_cast(self, element, **kw): ... def visit_array(self, element, **kw): ... def visit_slice(self, element, **kw): ... - def visit_json_getitem_op_binary(self, binary, operator, _cast_applied: bool = ..., **kw): ... - def visit_json_path_getitem_op_binary(self, binary, operator, _cast_applied: bool = ..., **kw): ... + def visit_json_getitem_op_binary(self, binary, operator, _cast_applied: bool = False, **kw): ... + def visit_json_path_getitem_op_binary(self, binary, operator, _cast_applied: bool = False, **kw): ... def visit_getitem_binary(self, binary, operator, **kw): ... def visit_aggregate_order_by(self, element, **kw): ... def visit_match_op_binary(self, binary, operator, **kw): ... @@ -195,7 +195,7 @@ class PGTypeCompiler(compiler.GenericTypeCompiler): def visit_TSTZRANGE(self, type_, **kw): ... def visit_datetime(self, type_, **kw): ... def visit_enum(self, type_, **kw): ... - def visit_ENUM(self, type_, identifier_preparer: Incomplete | None = ..., **kw): ... + def visit_ENUM(self, type_, identifier_preparer: Incomplete | None = None, **kw): ... def visit_TIMESTAMP(self, type_, **kw): ... def visit_TIME(self, type_, **kw): ... def visit_INTERVAL(self, type_, **kw): ... @@ -207,13 +207,13 @@ class PGTypeCompiler(compiler.GenericTypeCompiler): class PGIdentifierPreparer(compiler.IdentifierPreparer): reserved_words: Any - def format_type(self, type_, use_schema: bool = ...): ... + def format_type(self, type_, use_schema: bool = True): ... class PGInspector(reflection.Inspector): - def get_table_oid(self, table_name, schema: Incomplete | None = ...): ... - def get_enums(self, schema: Incomplete | None = ...): ... - def get_foreign_table_names(self, schema: Incomplete | None = ...): ... - def get_view_names(self, schema: Incomplete | None = ..., include=...): ... + def get_table_oid(self, table_name, schema: Incomplete | None = None): ... + def get_enums(self, schema: Incomplete | None = None): ... + def get_foreign_table_names(self, schema: Incomplete | None = None): ... + def get_view_names(self, schema: Incomplete | None = None, include=("plain", "materialized")): ... class CreateEnumType(_CreateDropBase): __visit_name__: str @@ -273,9 +273,9 @@ class PGDialect(default.DefaultDialect): reflection_options: Any def __init__( self, - isolation_level: Incomplete | None = ..., - json_serializer: Incomplete | None = ..., - json_deserializer: Incomplete | None = ..., + isolation_level: Incomplete | None = None, + json_serializer: Incomplete | None = None, + json_deserializer: Incomplete | None = None, **kwargs, ) -> None: ... def initialize(self, connection) -> None: ... @@ -288,25 +288,25 @@ class PGDialect(default.DefaultDialect): def get_deferrable(self, connection) -> None: ... def do_begin_twophase(self, connection, xid) -> None: ... def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... + def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... + def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... def do_recover_twophase(self, connection): ... def has_schema(self, connection, schema): ... - def has_table(self, connection, table_name, schema: Incomplete | None = ...): ... # type: ignore[override] - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = ...): ... # type: ignore[override] - def has_type(self, connection, type_name, schema: Incomplete | None = ...): ... - def get_table_oid(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... + def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] + def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None): ... # type: ignore[override] + def has_type(self, connection, type_name, schema: Incomplete | None = None): ... + def get_table_oid(self, connection, table_name, schema: Incomplete | None = None, **kw): ... def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = ..., include=..., **kw): ... - def get_sequence_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = ..., **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... + def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_view_names(self, connection, schema: Incomplete | None = None, include=("plain", "materialized"), **kw): ... + def get_sequence_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... + def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... def get_foreign_keys( - self, connection, table_name, schema: Incomplete | None = ..., postgresql_ignore_search_path: bool = ..., **kw + self, connection, table_name, schema: Incomplete | None = None, postgresql_ignore_search_path: bool = False, **kw ): ... def get_indexes(self, connection, table_name, schema, **kw): ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_table_comment(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_check_constraints(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... + def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_table_comment(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_check_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi index 9ddcfcce2..3a59fcef6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi @@ -12,14 +12,17 @@ class Insert(StandardInsert): def excluded(self): ... def on_conflict_do_update( self, - constraint: Incomplete | None = ..., - index_elements: Incomplete | None = ..., - index_where: Incomplete | None = ..., - set_: Incomplete | None = ..., - where: Incomplete | None = ..., + constraint: Incomplete | None = None, + index_elements: Incomplete | None = None, + index_where: Incomplete | None = None, + set_: Incomplete | None = None, + where: Incomplete | None = None, ) -> None: ... def on_conflict_do_nothing( - self, constraint: Incomplete | None = ..., index_elements: Incomplete | None = ..., index_where: Incomplete | None = ... + self, + constraint: Incomplete | None = None, + index_elements: Incomplete | None = None, + index_where: Incomplete | None = None, ) -> None: ... insert: Any @@ -30,7 +33,10 @@ class OnConflictClause(ClauseElement): inferred_target_elements: Any inferred_target_whereclause: Any def __init__( - self, constraint: Incomplete | None = ..., index_elements: Incomplete | None = ..., index_where: Incomplete | None = ... + self, + constraint: Incomplete | None = None, + index_elements: Incomplete | None = None, + index_where: Incomplete | None = None, ) -> None: ... class OnConflictDoNothing(OnConflictClause): @@ -42,9 +48,9 @@ class OnConflictDoUpdate(OnConflictClause): update_whereclause: Any def __init__( self, - constraint: Incomplete | None = ..., - index_elements: Incomplete | None = ..., - index_where: Incomplete | None = ..., - set_: Incomplete | None = ..., - where: Incomplete | None = ..., + constraint: Incomplete | None = None, + index_elements: Incomplete | None = None, + index_where: Incomplete | None = None, + set_: Incomplete | None = None, + where: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ext.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ext.pyi index c9e682f0c..834e86264 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ext.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ext.pyi @@ -11,7 +11,7 @@ class aggregate_order_by(expression.ColumnElement[Any]): type: Any order_by: Any def __init__(self, target, *order_by) -> None: ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... def get_children(self, **kwargs): ... class ExcludeConstraint(ColumnCollectionConstraint): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi index 3f37cdef1..afb341117 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi @@ -9,7 +9,7 @@ class HSTORE(sqltypes.Indexable, sqltypes.Concatenable, sqltypes.TypeEngine): __visit_name__: str hashable: bool text_type: Any - def __init__(self, text_type: Incomplete | None = ...) -> None: ... + def __init__(self, text_type: Incomplete | None = None) -> None: ... class Comparator(sqltypes.Indexable.Comparator[Any], sqltypes.Concatenable.Comparator[Any]): def has_key(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi index 728842b88..7898fd46f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi @@ -9,7 +9,7 @@ class JSONPathType(sqltypes.JSON.JSONPathType): class JSON(sqltypes.JSON): astext_type: Any - def __init__(self, none_as_null: bool = ..., astext_type: Incomplete | None = ...) -> None: ... + def __init__(self, none_as_null: bool = False, astext_type: Incomplete | None = None) -> None: ... class Comparator(sqltypes.JSON.Comparator): @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi index d87f2c0b5..dd8b31441 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi @@ -84,14 +84,14 @@ class ServerSideCursor: def rowcount(self): ... @property def description(self): ... - def execute(self, operation, args=..., stream: Incomplete | None = ...): ... + def execute(self, operation, args=(), stream: Incomplete | None = None): ... def executemany(self, operation, param_sets): ... def fetchone(self): ... - def fetchmany(self, num: Incomplete | None = ...): ... + def fetchmany(self, num: Incomplete | None = None): ... def fetchall(self): ... def close(self) -> None: ... def setinputsizes(self, *sizes) -> None: ... - def setoutputsize(self, size, column: Incomplete | None = ...) -> None: ... + def setoutputsize(self, size, column: Incomplete | None = None) -> None: ... class PGCompiler_pg8000(PGCompiler): def visit_mod_binary(self, binary, operator, **kw): ... @@ -113,7 +113,7 @@ class PGDialect_pg8000(PGDialect): description_encoding: Any colspecs: Any client_encoding: Any - def __init__(self, client_encoding: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, client_encoding: Incomplete | None = None, **kwargs) -> None: ... @classmethod def dbapi(cls): ... def create_connect_args(self, url): ... @@ -127,8 +127,8 @@ class PGDialect_pg8000(PGDialect): def do_set_input_sizes(self, cursor, list_of_tuples, context) -> None: ... def do_begin_twophase(self, connection, xid) -> None: ... def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... + def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... + def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... def do_recover_twophase(self, connection): ... def on_connect(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi index e94fb3e02..a64d86f6d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi @@ -70,13 +70,13 @@ class PGDialect_psycopg2(PGDialect): executemany_values_page_size: Any def __init__( self, - use_native_unicode: bool = ..., - client_encoding: Incomplete | None = ..., - use_native_hstore: bool = ..., - use_native_uuid: bool = ..., - executemany_mode: str = ..., - executemany_batch_page_size: int = ..., - executemany_values_page_size: int = ..., + use_native_unicode: bool = True, + client_encoding: Incomplete | None = None, + use_native_hstore: bool = True, + use_native_uuid: bool = True, + executemany_mode: str = "values_only", + executemany_batch_page_size: int = 100, + executemany_values_page_size: int = 1000, **kwargs, ) -> None: ... def initialize(self, connection) -> None: ... @@ -89,7 +89,7 @@ class PGDialect_psycopg2(PGDialect): def get_deferrable(self, connection): ... def do_ping(self, dbapi_connection): ... def on_connect(self): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... + def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... def create_connect_args(self, url): ... def is_disconnect(self, e, connection, cursor): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/aiosqlite.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/aiosqlite.pyi index 8d48580c1..a4c15cb91 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/aiosqlite.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/aiosqlite.pyi @@ -14,12 +14,12 @@ class AsyncAdapt_aiosqlite_cursor: def __init__(self, adapt_connection) -> None: ... def close(self) -> None: ... lastrowid: int - def execute(self, operation, parameters: Incomplete | None = ...) -> None: ... + def execute(self, operation, parameters: Incomplete | None = None) -> None: ... def executemany(self, operation, seq_of_parameters) -> None: ... def setinputsizes(self, *inputsizes) -> None: ... def __iter__(self): ... def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... class AsyncAdapt_aiosqlite_ss_cursor(AsyncAdapt_aiosqlite_cursor): @@ -27,7 +27,7 @@ class AsyncAdapt_aiosqlite_ss_cursor(AsyncAdapt_aiosqlite_cursor): def __init__(self, *arg, **kw) -> None: ... def close(self) -> None: ... def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... class AsyncAdapt_aiosqlite_connection(AdaptedConnection): @@ -39,7 +39,7 @@ class AsyncAdapt_aiosqlite_connection(AdaptedConnection): @isolation_level.setter def isolation_level(self, value) -> None: ... def create_function(self, *args, **kw) -> None: ... - def cursor(self, server_side: bool = ...): ... + def cursor(self, server_side: bool = False): ... def execute(self, *args, **kw): ... def rollback(self) -> None: ... def commit(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi index bb7d0c25e..3ade0d400 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi @@ -25,7 +25,7 @@ class _SQliteJson(JSON): def result_processor(self, dialect, coltype): ... class _DateTimeMixin: - def __init__(self, storage_format: Incomplete | None = ..., regexp: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, storage_format: Incomplete | None = None, regexp: Incomplete | None = None, **kw) -> None: ... @property def format_is_text_affinity(self): ... def adapt(self, cls, **kw): ... @@ -78,7 +78,7 @@ class SQLiteDDLCompiler(compiler.DDLCompiler): def visit_column_check_constraint(self, constraint): ... def visit_foreign_key_constraint(self, constraint): ... def define_constraint_remote_table(self, constraint, table, preparer): ... - def visit_create_index(self, create, include_schema: bool = ..., include_table_schema: bool = ...): ... # type: ignore[override] + def visit_create_index(self, create, include_schema: bool = False, include_table_schema: bool = True): ... # type: ignore[override] def post_create_table(self, table): ... class SQLiteTypeCompiler(compiler.GenericTypeCompiler): @@ -117,27 +117,27 @@ class SQLiteDialect(default.DefaultDialect): native_datetime: Any def __init__( self, - isolation_level: Incomplete | None = ..., - native_datetime: bool = ..., - json_serializer: Incomplete | None = ..., - json_deserializer: Incomplete | None = ..., - _json_serializer: Incomplete | None = ..., - _json_deserializer: Incomplete | None = ..., + isolation_level: Incomplete | None = None, + native_datetime: bool = False, + json_serializer: Incomplete | None = None, + json_deserializer: Incomplete | None = None, + _json_serializer: Incomplete | None = None, + _json_deserializer: Incomplete | None = None, **kwargs, ) -> None: ... def set_isolation_level(self, connection, level) -> None: ... def get_isolation_level(self, connection): ... def on_connect(self): ... def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = ..., **kw): ... + def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... def get_temp_table_names(self, connection, **kw): ... def get_temp_view_names(self, connection, **kw): ... - def has_table(self, connection, table_name, schema: Incomplete | None = ...): ... # type: ignore[override] - def get_view_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = ..., **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_check_constraints(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... + def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] + def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... + def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_check_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi index da20b23ad..cfd505042 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi @@ -12,12 +12,12 @@ class Insert(StandardInsert): def excluded(self): ... def on_conflict_do_update( self, - index_elements: Incomplete | None = ..., - index_where: Incomplete | None = ..., - set_: Incomplete | None = ..., - where: Incomplete | None = ..., + index_elements: Incomplete | None = None, + index_where: Incomplete | None = None, + set_: Incomplete | None = None, + where: Incomplete | None = None, ) -> None: ... - def on_conflict_do_nothing(self, index_elements: Incomplete | None = ..., index_where: Incomplete | None = ...) -> None: ... + def on_conflict_do_nothing(self, index_elements: Incomplete | None = None, index_where: Incomplete | None = None) -> None: ... insert: Any @@ -26,7 +26,7 @@ class OnConflictClause(ClauseElement): constraint_target: Any inferred_target_elements: Any inferred_target_whereclause: Any - def __init__(self, index_elements: Incomplete | None = ..., index_where: Incomplete | None = ...) -> None: ... + def __init__(self, index_elements: Incomplete | None = None, index_where: Incomplete | None = None) -> None: ... class OnConflictDoNothing(OnConflictClause): __visit_name__: str @@ -37,8 +37,8 @@ class OnConflictDoUpdate(OnConflictClause): update_whereclause: Any def __init__( self, - index_elements: Incomplete | None = ..., - index_where: Incomplete | None = ..., - set_: Incomplete | None = ..., - where: Incomplete | None = ..., + index_elements: Incomplete | None = None, + index_where: Incomplete | None = None, + set_: Incomplete | None = None, + where: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi index f6a90151b..cb1e7c17c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi @@ -77,7 +77,7 @@ ischema_names: Any class SybaseInspector(reflection.Inspector): def __init__(self, conn) -> None: ... - def get_table_id(self, table_name, schema: Incomplete | None = ...): ... + def get_table_id(self, table_name, schema: Incomplete | None = None): ... class SybaseExecutionContext(default.DefaultExecutionContext): def set_ddl_autocommit(self, connection, value) -> None: ... @@ -124,13 +124,13 @@ class SybaseDialect(default.DefaultDialect): def __init__(self, *args, **kwargs) -> None: ... max_identifier_length: int def initialize(self, connection) -> None: ... - def get_table_id(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = ..., **kw): ... + def get_table_id(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw): ... + def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = ..., **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = ..., **kw): ... - def has_table(self, connection, table_name, schema: Incomplete | None = ...): ... # type: ignore[override] + def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... + def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... + def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... + def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi index d0a7a81aa..e88d8e6ce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi @@ -22,7 +22,7 @@ class SybaseDialect_pysybase(SybaseDialect): @classmethod def dbapi(cls): ... def create_connect_args(self, url): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... + def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... def is_disconnect(self, e, connection, cursor): ... dialect = SybaseDialect_pysybase diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/base.pyi index 9d7376520..2b69e99d3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/base.pyi @@ -31,13 +31,13 @@ class Connection(Connectable): def __init__( self, engine: Engine, - connection: DBAPIConnection | None = ..., - close_with_result: bool = ..., - _branch_from: Incomplete | None = ..., - _execution_options: Incomplete | None = ..., - _dispatch: Incomplete | None = ..., - _has_events: Incomplete | None = ..., - _allow_revalidate: bool = ..., + connection: DBAPIConnection | None = None, + close_with_result: bool = False, + _branch_from: Incomplete | None = None, + _execution_options: Incomplete | None = None, + _dispatch: Incomplete | None = None, + _has_events: Incomplete | None = None, + _allow_revalidate: bool = True, ) -> None: ... def schema_for_object(self, obj) -> str | None: ... def __enter__(self) -> Self: ... @@ -57,15 +57,15 @@ class Connection(Connectable): def default_isolation_level(self): ... @property def info(self): ... - def connect(self, close_with_result: bool = ...): ... # type: ignore[override] - def invalidate(self, exception: Exception | None = ...) -> None: ... + def connect(self, close_with_result: bool = False): ... # type: ignore[override] + def invalidate(self, exception: Exception | None = None) -> None: ... def detach(self) -> None: ... def begin(self) -> Transaction: ... def begin_nested(self) -> Transaction | None: ... - def begin_twophase(self, xid: Incomplete | None = ...) -> TwoPhaseTransaction: ... + def begin_twophase(self, xid: Incomplete | None = None) -> TwoPhaseTransaction: ... def recover_twophase(self): ... - def rollback_prepared(self, xid, recover: bool = ...) -> None: ... - def commit_prepared(self, xid, recover: bool = ...) -> None: ... + def rollback_prepared(self, xid, recover: bool = False) -> None: ... + def commit_prepared(self, xid, recover: bool = False) -> None: ... def in_transaction(self) -> bool: ... def in_nested_transaction(self) -> bool: ... def get_transaction(self) -> Transaction | None: ... @@ -81,7 +81,7 @@ class Connection(Connectable): @overload def execute(self, statement: str, *multiparams: Any | tuple[Any, ...] | Mapping[str, Any], **params) -> CursorResult: ... def exec_driver_sql( - self, statement: str, parameters: Incomplete | None = ..., execution_options: Incomplete | None = ... + self, statement: str, parameters: Incomplete | None = None, execution_options: Incomplete | None = None ): ... def transaction(self, callable_: Callable[Concatenate[Connection, _P], _T], *args: _P.args, **kwargs: _P.kwargs) -> _T: ... def run_callable(self, callable_: Callable[Concatenate[Connection, _P], _T], *args: _P.args, **kwargs: _P.kwargs) -> _T: ... @@ -156,11 +156,11 @@ class Engine(Connectable, Identified): pool: Pool, dialect: Dialect, url: str | URL, - logging_name: str | None = ..., - echo: _EchoFlag = ..., - query_cache_size: int = ..., - execution_options: Mapping[str, Any] | None = ..., - hide_parameters: bool = ..., + logging_name: str | None = None, + echo: _EchoFlag = None, + query_cache_size: int = 500, + execution_options: Mapping[str, Any] | None = None, + hide_parameters: bool = False, ) -> None: ... @property def engine(self) -> Engine: ... @@ -172,7 +172,7 @@ class Engine(Connectable, Identified): def name(self) -> str: ... @property def driver(self): ... - def dispose(self, close: bool = ...) -> None: ... + def dispose(self, close: bool = True) -> None: ... class _trans_ctx: conn: Connection @@ -184,7 +184,7 @@ class Engine(Connectable, Identified): self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None ) -> None: ... - def begin(self, close_with_result: bool = ...) -> _trans_ctx: ... + def begin(self, close_with_result: bool = False) -> _trans_ctx: ... def transaction( self, callable_: Callable[Concatenate[Connection, _P], _T], *args: _P.args, **kwargs: _P.kwargs ) -> _T | None: ... @@ -197,10 +197,10 @@ class Engine(Connectable, Identified): def scalar(self, statement: _Executable, *multiparams: Mapping[str, Any], **params: Any) -> Any: ... @overload def scalar(self, statement: str, *multiparams: Any | tuple[Any, ...] | Mapping[str, Any], **params: Any) -> Any: ... - def connect(self, close_with_result: bool = ...) -> Connection: ... # type: ignore[override] - def table_names(self, schema: Incomplete | None = ..., connection: Connection | None = ...): ... - def has_table(self, table_name: str, schema: Incomplete | None = ...) -> bool: ... - def raw_connection(self, _connection: Connection | None = ...) -> DBAPIConnection: ... + def connect(self, close_with_result: bool = False) -> Connection: ... # type: ignore[override] + def table_names(self, schema: Incomplete | None = None, connection: Connection | None = None): ... + def has_table(self, table_name: str, schema: Incomplete | None = None) -> bool: ... + def raw_connection(self, _connection: Connection | None = None) -> DBAPIConnection: ... class OptionEngineMixin: url: URL diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/create.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/create.pyi index 97070a374..ae20f2002 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/create.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/create.pyi @@ -17,6 +17,6 @@ def create_engine( ) -> FutureEngine: ... @overload def create_engine( - url: URL | str, *, module: Incomplete | None = ..., enable_from_linting: bool = ..., future: Literal[False] = ..., **kwargs + url: URL | str, *, module: Incomplete | None = ..., enable_from_linting: bool = ..., future: Literal[False] = False, **kwargs ) -> Engine: ... -def engine_from_config(configuration: Mapping[str, Any], prefix: str = ..., **kwargs) -> Engine: ... +def engine_from_config(configuration: Mapping[str, Any], prefix: str = "sqlalchemy.", **kwargs) -> Engine: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi index 76d0d369d..7b67eba1f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi @@ -26,16 +26,16 @@ class ResultFetchStrategy: def soft_close(self, result, dbapi_cursor) -> None: ... def hard_close(self, result, dbapi_cursor) -> None: ... def yield_per(self, result, dbapi_cursor, num) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = ...) -> None: ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = ...) -> None: ... + def fetchone(self, result, dbapi_cursor, hard_close: bool = False) -> None: ... + def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None) -> None: ... def fetchall(self, result) -> None: ... def handle_exception(self, result, dbapi_cursor, err) -> None: ... class NoCursorFetchStrategy(ResultFetchStrategy): def soft_close(self, result, dbapi_cursor) -> None: ... def hard_close(self, result, dbapi_cursor) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = ...): ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = ...): ... + def fetchone(self, result, dbapi_cursor, hard_close: bool = False): ... + def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None): ... def fetchall(self, result, dbapi_cursor): ... class NoCursorDQLFetchStrategy(NoCursorFetchStrategy): ... @@ -46,33 +46,33 @@ class CursorFetchStrategy(ResultFetchStrategy): def hard_close(self, result, dbapi_cursor) -> None: ... def handle_exception(self, result, dbapi_cursor, err) -> None: ... def yield_per(self, result, dbapi_cursor, num) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = ...): ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = ...): ... + def fetchone(self, result, dbapi_cursor, hard_close: bool = False): ... + def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None): ... def fetchall(self, result, dbapi_cursor): ... class BufferedRowCursorFetchStrategy(CursorFetchStrategy): def __init__( - self, dbapi_cursor, execution_options, growth_factor: int = ..., initial_buffer: Incomplete | None = ... + self, dbapi_cursor, execution_options, growth_factor: int = 5, initial_buffer: Incomplete | None = None ) -> None: ... @classmethod def create(cls, result): ... def yield_per(self, result, dbapi_cursor, num) -> None: ... def soft_close(self, result, dbapi_cursor) -> None: ... def hard_close(self, result, dbapi_cursor) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = ...): ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = ...): ... + def fetchone(self, result, dbapi_cursor, hard_close: bool = False): ... + def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None): ... def fetchall(self, result, dbapi_cursor): ... class FullyBufferedCursorFetchStrategy(CursorFetchStrategy): alternate_cursor_description: Any def __init__( - self, dbapi_cursor, alternate_description: Incomplete | None = ..., initial_buffer: Incomplete | None = ... + self, dbapi_cursor, alternate_description: Incomplete | None = None, initial_buffer: Incomplete | None = None ) -> None: ... def yield_per(self, result, dbapi_cursor, num) -> None: ... def soft_close(self, result, dbapi_cursor) -> None: ... def hard_close(self, result, dbapi_cursor) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = ...): ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = ...): ... + def fetchone(self, result, dbapi_cursor, hard_close: bool = False): ... + def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None): ... def fetchall(self, result, dbapi_cursor): ... class _NoResultMetaData(ResultMetaData): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi index fa725cb70..e7784485a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi @@ -89,17 +89,17 @@ class DefaultDialect(interfaces.Dialect): # type: ignore[misc] compiler_linting: Any def __init__( self, - convert_unicode: bool = ..., - encoding: str = ..., - paramstyle: Incomplete | None = ..., - dbapi: Incomplete | None = ..., - implicit_returning: Incomplete | None = ..., - case_sensitive: bool = ..., - supports_native_boolean: Incomplete | None = ..., - max_identifier_length: Incomplete | None = ..., - label_length: Incomplete | None = ..., - compiler_linting=..., - server_side_cursors: bool = ..., + convert_unicode: bool = False, + encoding: str = "utf-8", + paramstyle: Incomplete | None = None, + dbapi: Incomplete | None = None, + implicit_returning: Incomplete | None = None, + case_sensitive: bool = True, + supports_native_boolean: Incomplete | None = None, + max_identifier_length: Incomplete | None = None, + label_length: Incomplete | None = None, + compiler_linting=0, + server_side_cursors: bool = False, **kwargs, ) -> None: ... @property @@ -116,7 +116,7 @@ class DefaultDialect(interfaces.Dialect): # type: ignore[misc] def on_connect(self) -> None: ... def get_default_isolation_level(self, dbapi_conn): ... def type_descriptor(self, typeobj): ... - def has_index(self, connection, table_name, index_name, schema: Incomplete | None = ...): ... + def has_index(self, connection, table_name, index_name, schema: Incomplete | None = None): ... def validate_identifier(self, ident) -> None: ... def connect(self, *cargs, **cparams): ... def create_connect_args(self, url): ... @@ -131,9 +131,9 @@ class DefaultDialect(interfaces.Dialect): # type: ignore[misc] def do_savepoint(self, connection, name) -> None: ... def do_rollback_to_savepoint(self, connection, name) -> None: ... def do_release_savepoint(self, connection, name) -> None: ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... - def do_execute_no_params(self, cursor, statement, context: Incomplete | None = ...) -> None: ... # type: ignore[override] + def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... + def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... + def do_execute_no_params(self, cursor, statement, context: Incomplete | None = None) -> None: ... # type: ignore[override] def is_disconnect(self, e, connection, cursor): ... def reset_isolation_level(self, dbapi_conn) -> None: ... def normalize_name(self, name): ... @@ -216,6 +216,6 @@ class DefaultExecutionContext(interfaces.ExecutionContext): def inserted_primary_key_rows(self): ... def lastrow_has_defaults(self): ... current_parameters: Any - def get_current_parameters(self, isolate_multiinsert_groups: bool = ...): ... + def get_current_parameters(self, isolate_multiinsert_groups: bool = True): ... def get_insert_default(self, column): ... def get_update_default(self, column): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi index 7b6eac7d8..3b4412abe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi @@ -54,24 +54,24 @@ class Dialect: # as abstract. @classmethod def type_descriptor(cls, typeobj) -> None: ... - def get_columns(self, connection, table_name, schema: Incomplete | None = ..., **kw) -> None: ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = ..., **kw) -> None: ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = ..., **kw) -> None: ... - def get_table_names(self, connection, schema: Incomplete | None = ..., **kw) -> None: ... - def get_temp_table_names(self, connection, schema: Incomplete | None = ..., **kw) -> None: ... - def get_view_names(self, connection, schema: Incomplete | None = ..., **kw) -> None: ... - def get_sequence_names(self, connection, schema: Incomplete | None = ..., **kw) -> None: ... - def get_temp_view_names(self, connection, schema: Incomplete | None = ..., **kw) -> None: ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = ..., **kw) -> None: ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = ..., **kw) -> None: ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = ..., **kw) -> None: ... - def get_check_constraints(self, connection, table_name, schema: Incomplete | None = ..., **kw) -> None: ... - def get_table_comment(self, connection, table_name, schema: Incomplete | None = ..., **kw) -> None: ... + def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... + def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... + def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... + def get_table_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... + def get_temp_table_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... + def get_view_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... + def get_sequence_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... + def get_temp_view_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... + def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw) -> None: ... + def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... + def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... + def get_check_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... + def get_table_comment(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... def normalize_name(self, name) -> None: ... def denormalize_name(self, name) -> None: ... - def has_table(self, connection, table_name, schema: Incomplete | None = ..., **kw) -> None: ... - def has_index(self, connection, table_name, index_name, schema: Incomplete | None = ...) -> None: ... - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = ..., **kw) -> None: ... + def has_table(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... + def has_index(self, connection, table_name, index_name, schema: Incomplete | None = None) -> None: ... + def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None, **kw) -> None: ... def do_begin(self, dbapi_connection) -> None: ... def do_rollback(self, dbapi_connection) -> None: ... def do_commit(self, dbapi_connection) -> None: ... @@ -83,12 +83,12 @@ class Dialect: def do_release_savepoint(self, connection, name) -> None: ... def do_begin_twophase(self, connection, xid) -> None: ... def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = ..., recover: bool = ...) -> None: ... + def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... + def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... def do_recover_twophase(self, connection) -> None: ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... - def do_execute_no_params(self, cursor, statement, parameters, context: Incomplete | None = ...) -> None: ... + def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... + def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... + def do_execute_no_params(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... def is_disconnect(self, e, connection, cursor) -> None: ... def connect(self, *cargs, **cparams) -> DBAPIConnection: ... def reset_isolation_level(self, dbapi_conn) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/reflection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/reflection.pyi index 350ba42ee..242cf7868 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/reflection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/reflection.pyi @@ -9,24 +9,24 @@ class Inspector: @property def default_schema_name(self): ... def get_schema_names(self): ... - def get_table_names(self, schema: Incomplete | None = ...): ... - def has_table(self, table_name, schema: Incomplete | None = ...): ... - def has_sequence(self, sequence_name, schema: Incomplete | None = ...): ... - def get_sorted_table_and_fkc_names(self, schema: Incomplete | None = ...): ... + def get_table_names(self, schema: Incomplete | None = None): ... + def has_table(self, table_name, schema: Incomplete | None = None): ... + def has_sequence(self, sequence_name, schema: Incomplete | None = None): ... + def get_sorted_table_and_fkc_names(self, schema: Incomplete | None = None): ... def get_temp_table_names(self): ... def get_temp_view_names(self): ... - def get_table_options(self, table_name, schema: Incomplete | None = ..., **kw): ... - def get_view_names(self, schema: Incomplete | None = ...): ... - def get_sequence_names(self, schema: Incomplete | None = ...): ... - def get_view_definition(self, view_name, schema: Incomplete | None = ...): ... - def get_columns(self, table_name, schema: Incomplete | None = ..., **kw): ... - def get_pk_constraint(self, table_name, schema: Incomplete | None = ..., **kw): ... - def get_foreign_keys(self, table_name, schema: Incomplete | None = ..., **kw): ... - def get_indexes(self, table_name, schema: Incomplete | None = ..., **kw): ... - def get_unique_constraints(self, table_name, schema: Incomplete | None = ..., **kw): ... - def get_table_comment(self, table_name, schema: Incomplete | None = ..., **kw): ... - def get_check_constraints(self, table_name, schema: Incomplete | None = ..., **kw): ... + def get_table_options(self, table_name, schema: Incomplete | None = None, **kw): ... + def get_view_names(self, schema: Incomplete | None = None): ... + def get_sequence_names(self, schema: Incomplete | None = None): ... + def get_view_definition(self, view_name, schema: Incomplete | None = None): ... + def get_columns(self, table_name, schema: Incomplete | None = None, **kw): ... + def get_pk_constraint(self, table_name, schema: Incomplete | None = None, **kw): ... + def get_foreign_keys(self, table_name, schema: Incomplete | None = None, **kw): ... + def get_indexes(self, table_name, schema: Incomplete | None = None, **kw): ... + def get_unique_constraints(self, table_name, schema: Incomplete | None = None, **kw): ... + def get_table_comment(self, table_name, schema: Incomplete | None = None, **kw): ... + def get_check_constraints(self, table_name, schema: Incomplete | None = None, **kw): ... def reflecttable(self, *args, **kwargs): ... def reflect_table( - self, table, include_columns, exclude_columns=..., resolve_fks: bool = ..., _extend_on: Incomplete | None = ... + self, table, include_columns, exclude_columns=(), resolve_fks: bool = True, _extend_on: Incomplete | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi index 7328eb5e2..9500d7a11 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi @@ -22,14 +22,14 @@ class SimpleResultMetaData(ResultMetaData): def __init__( self, keys, - extra: Incomplete | None = ..., - _processors: Incomplete | None = ..., - _tuplefilter: Incomplete | None = ..., - _translated_indexes: Incomplete | None = ..., - _unique_filters: Incomplete | None = ..., + extra: Incomplete | None = None, + _processors: Incomplete | None = None, + _tuplefilter: Incomplete | None = None, + _translated_indexes: Incomplete | None = None, + _unique_filters: Incomplete | None = None, ) -> None: ... -def result_tuple(fields, extra: Incomplete | None = ...): ... +def result_tuple(fields, extra: Incomplete | None = None): ... class ResultInternal(InPlaceGenerative): ... @@ -40,16 +40,16 @@ class Result(_WithKeys, ResultInternal): def __init__(self, cursor_metadata) -> None: ... def close(self) -> None: ... def yield_per(self, num: int) -> Self: ... - def unique(self, strategy: Incomplete | None = ...) -> Self: ... + def unique(self, strategy: Incomplete | None = None) -> Self: ... def columns(self, *col_expressions): ... - def scalars(self, index: int = ...) -> ScalarResult: ... + def scalars(self, index: int = 0) -> ScalarResult: ... def mappings(self) -> MappingResult: ... def __iter__(self): ... def __next__(self): ... - def partitions(self, size: int | None = ...) -> Generator[list[Row], None, None]: ... + def partitions(self, size: int | None = None) -> Generator[list[Row], None, None]: ... def fetchall(self) -> list[Row]: ... def fetchone(self) -> Row | None: ... - def fetchmany(self, size: int | None = ...) -> list[Row]: ... + def fetchmany(self, size: int | None = None) -> list[Row]: ... def all(self) -> list[Row]: ... def first(self) -> Row | None: ... def one_or_none(self) -> Row | None: ... @@ -64,10 +64,10 @@ class FilterResult(ResultInternal): ... class ScalarResult(FilterResult): def __init__(self, real_result, index) -> None: ... - def unique(self, strategy: Incomplete | None = ...): ... - def partitions(self, size: Incomplete | None = ...) -> None: ... + def unique(self, strategy: Incomplete | None = None): ... + def partitions(self, size: Incomplete | None = None) -> None: ... def fetchall(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def all(self): ... def __iter__(self): ... def __next__(self): ... @@ -77,12 +77,12 @@ class ScalarResult(FilterResult): class MappingResult(_WithKeys, FilterResult): def __init__(self, result) -> None: ... - def unique(self, strategy: Incomplete | None = ...): ... + def unique(self, strategy: Incomplete | None = None): ... def columns(self, *col_expressions): ... - def partitions(self, size: Incomplete | None = ...) -> None: ... + def partitions(self, size: Incomplete | None = None) -> None: ... def fetchall(self): ... def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def all(self): ... def __iter__(self): ... def __next__(self): ... @@ -101,7 +101,9 @@ class FrozenResult: class IteratorResult(Result): iterator: Any raw: Any - def __init__(self, cursor_metadata, iterator, raw: Incomplete | None = ..., _source_supports_scalars: bool = ...) -> None: ... + def __init__( + self, cursor_metadata, iterator, raw: Incomplete | None = None, _source_supports_scalars: bool = False + ) -> None: ... def null_result() -> IteratorResult: ... @@ -114,9 +116,9 @@ class ChunkedIteratorResult(IteratorResult): self, cursor_metadata, chunks, - source_supports_scalars: bool = ..., - raw: Incomplete | None = ..., - dynamic_yield_per: bool = ..., + source_supports_scalars: bool = False, + raw: Incomplete | None = None, + dynamic_yield_per: bool = False, ) -> None: ... class MergedResult(IteratorResult): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi index 6d4281113..0f2bfda2e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi @@ -26,31 +26,31 @@ class URL(_URLTuple): def create( cls, drivername: str, - username: str | None = ..., + username: str | None = None, password: str | _PasswordObject | None = None, - host: str | None = ..., - port: int | None = ..., - database: str | None = ..., + host: str | None = None, + port: int | None = None, + database: str | None = None, query: _Query | None = ..., ) -> URL: ... def set( self, - drivername: str | None = ..., - username: str | None = ..., + drivername: str | None = None, + username: str | None = None, password: str | _PasswordObject | None = None, - host: str | None = ..., - port: int | None = ..., - database: str | None = ..., - query: _Query | None = ..., + host: str | None = None, + port: int | None = None, + database: str | None = None, + query: _Query | None = None, ) -> Self: ... - def update_query_string(self, query_string: str, append: bool = ...) -> Self: ... - def update_query_pairs(self, key_value_pairs: Iterable[tuple[str, str]], append: bool = ...) -> Self: ... - def update_query_dict(self, query_parameters: SupportsItems[str, str | Sequence[str]], append: bool = ...) -> Self: ... + def update_query_string(self, query_string: str, append: bool = False) -> Self: ... + def update_query_pairs(self, key_value_pairs: Iterable[tuple[str, str]], append: bool = False) -> Self: ... + def update_query_dict(self, query_parameters: SupportsItems[str, str | Sequence[str]], append: bool = False) -> Self: ... def difference_update_query(self, names: Iterable[str]) -> URL: ... @property def normalized_query(self) -> immutabledict[str, tuple[str, ...]]: ... - def __to_string__(self, hide_password: bool = ...) -> str: ... - def render_as_string(self, hide_password: bool = ...) -> str: ... + def __to_string__(self, hide_password: bool = True) -> str: ... + def render_as_string(self, hide_password: bool = True) -> str: ... def __copy__(self) -> Self: ... def __deepcopy__(self, memo: Unused) -> Self: ... def __hash__(self) -> int: ... @@ -59,6 +59,6 @@ class URL(_URLTuple): def get_backend_name(self) -> str: ... def get_driver_name(self) -> str: ... def get_dialect(self) -> type[Dialect]: ... - def translate_connect_args(self, names: list[str] | None = ..., **kw: str) -> dict[str, Any]: ... + def translate_connect_args(self, names: list[str] | None = None, **kw: str) -> dict[str, Any]: ... def make_url(name_or_url: str | URL) -> URL: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi index 9b1341c16..b3780d27b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi @@ -5,7 +5,7 @@ class _UnpickleDispatch: def __call__(self, _instance_cls): ... class _Dispatch: - def __init__(self, parent, instance_cls: Incomplete | None = ...) -> None: ... + def __init__(self, parent, instance_cls: Incomplete | None = None) -> None: ... def __getattr__(self, name: str): ... def __reduce__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/registry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/registry.pyi index f513b9664..616d3d784 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/registry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/registry.pyi @@ -8,14 +8,19 @@ class _EventKey: fn_key: Any fn_wrap: Any dispatch_target: Any - def __init__(self, target, identifier, fn, dispatch_target, _fn_wrap: Incomplete | None = ...) -> None: ... + def __init__(self, target, identifier, fn, dispatch_target, _fn_wrap: Incomplete | None = None) -> None: ... def with_wrapper(self, fn_wrap): ... def with_dispatch_target(self, dispatch_target): ... def listen(self, *args, **kw) -> None: ... def remove(self) -> None: ... def contains(self): ... def base_listen( - self, propagate: bool = ..., insert: bool = ..., named: bool = ..., retval: Incomplete | None = ..., asyncio: bool = ... + self, + propagate: bool = False, + insert: bool = False, + named: bool = False, + retval: Incomplete | None = None, + asyncio: bool = False, ) -> None: ... def append_to_list(self, owner, list_): ... def remove_from_list(self, owner, list_) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/exc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/exc.pyi index 30dba09fc..876de1270 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/exc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/exc.pyi @@ -22,7 +22,7 @@ class AmbiguousForeignKeysError(ArgumentError): ... class CircularDependencyError(SQLAlchemyError): cycles: Any edges: Any - def __init__(self, message, cycles, edges, msg: Incomplete | None = ..., code: Incomplete | None = ...) -> None: ... + def __init__(self, message, cycles, edges, msg: Incomplete | None = None, code: Incomplete | None = None) -> None: ... def __reduce__(self): ... class CompileError(SQLAlchemyError): ... @@ -32,7 +32,7 @@ class UnsupportedCompilationError(CompileError): compiler: Any element_type: Any message: str | None - def __init__(self, compiler, element_type, message: str | None = ...) -> None: ... + def __init__(self, compiler, element_type, message: str | None = None) -> None: ... def __reduce__(self): ... class IdentifierError(SQLAlchemyError): ... @@ -88,9 +88,9 @@ class StatementError(SQLAlchemyError): statement, params, orig, - hide_parameters: bool = ..., - code: Incomplete | None = ..., - ismulti: Incomplete | None = ..., + hide_parameters: bool = False, + code: Incomplete | None = None, + ismulti: Incomplete | None = None, ) -> None: ... def add_detail(self, msg) -> None: ... def __reduce__(self): ... @@ -104,10 +104,10 @@ class DBAPIError(StatementError): params, orig, dbapi_base_err, - hide_parameters: bool = ..., - connection_invalidated: bool = ..., - dialect: Incomplete | None = ..., - ismulti: Incomplete | None = ..., + hide_parameters: bool = False, + connection_invalidated: bool = False, + dialect: Incomplete | None = None, + ismulti: Incomplete | None = None, ): ... def __reduce__(self): ... connection_invalidated: Any @@ -116,10 +116,10 @@ class DBAPIError(StatementError): statement, params, orig, - hide_parameters: bool = ..., - connection_invalidated: bool = ..., - code: Incomplete | None = ..., - ismulti: Incomplete | None = ..., + hide_parameters: bool = False, + connection_invalidated: bool = False, + code: Incomplete | None = None, + ismulti: Incomplete | None = None, ) -> None: ... class InterfaceError(DBAPIError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi index d72c6d7ee..f75244e2a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi @@ -25,17 +25,17 @@ class AssociationProxy(interfaces.InspectionAttrInfo): self, target_collection, attr, - creator: Incomplete | None = ..., - getset_factory: Incomplete | None = ..., - proxy_factory: Incomplete | None = ..., - proxy_bulk_set: Incomplete | None = ..., - info: Incomplete | None = ..., - cascade_scalar_deletes: bool = ..., + creator: Incomplete | None = None, + getset_factory: Incomplete | None = None, + proxy_factory: Incomplete | None = None, + proxy_bulk_set: Incomplete | None = None, + info: Incomplete | None = None, + cascade_scalar_deletes: bool = False, ) -> None: ... def __get__(self, obj, class_): ... def __set__(self, obj, values) -> None: ... def __delete__(self, obj) -> None: ... - def for_class(self, class_, obj: Incomplete | None = ...): ... + def for_class(self, class_, obj: Incomplete | None = None): ... class AssociationProxyInstance: parent: Any @@ -62,15 +62,15 @@ class AssociationProxyInstance: def get(self, obj): ... def set(self, obj, values) -> None: ... def delete(self, obj) -> None: ... - def any(self, criterion: Incomplete | None = ..., **kwargs): ... - def has(self, criterion: Incomplete | None = ..., **kwargs): ... + def any(self, criterion: Incomplete | None = None, **kwargs): ... + def has(self, criterion: Incomplete | None = None, **kwargs): ... class AmbiguousAssociationProxyInstance(AssociationProxyInstance): def get(self, obj): ... def __eq__(self, obj): ... def __ne__(self, obj): ... - def any(self, criterion: Incomplete | None = ..., **kwargs) -> None: ... - def has(self, criterion: Incomplete | None = ..., **kwargs) -> None: ... + def any(self, criterion: Incomplete | None = None, **kwargs) -> None: ... + def has(self, criterion: Incomplete | None = None, **kwargs) -> None: ... class ObjectAssociationProxyInstance(AssociationProxyInstance): def contains(self, obj): ... @@ -113,7 +113,7 @@ class _AssociationList(_AssociationCollection): def count(self, value): ... def extend(self, values) -> None: ... def insert(self, index, value) -> None: ... - def pop(self, index: int = ...): ... + def pop(self, index: int = -1): ... def remove(self, value) -> None: ... def reverse(self) -> None: ... def sort(self) -> None: ... @@ -150,8 +150,8 @@ class _AssociationDict(_AssociationCollection): def __gt__(self, other): ... def __ge__(self, other): ... def __cmp__(self, other): ... - def get(self, key, default: Incomplete | None = ...): ... - def setdefault(self, key, default: Incomplete | None = ...): ... + def get(self, key, default: Incomplete | None = None): ... + def setdefault(self, key, default: Incomplete | None = None): ... def keys(self): ... def items(self): ... def values(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi index 61f3579ae..5e1b2c263 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi @@ -5,7 +5,7 @@ class ReversibleProxy: ... class StartableContext(abc.ABC, metaclass=abc.ABCMeta): @abc.abstractmethod - async def start(self, is_ctxmanager: bool = ...): ... + async def start(self, is_ctxmanager: bool = False): ... def __await__(self): ... async def __aenter__(self): ... @abc.abstractmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi index 26538f549..15aa84848 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi @@ -12,8 +12,8 @@ class AsyncConnection(ProxyComparable, StartableContext, AsyncConnectable): engine: Any sync_engine: Any sync_connection: Any - def __init__(self, async_engine, sync_connection: Incomplete | None = ...) -> None: ... - async def start(self, is_ctxmanager: bool = ...): ... + def __init__(self, async_engine, sync_connection: Incomplete | None = None) -> None: ... + async def start(self, is_ctxmanager: bool = False): ... @property def connection(self) -> None: ... async def get_raw_connection(self): ... @@ -21,7 +21,7 @@ class AsyncConnection(ProxyComparable, StartableContext, AsyncConnectable): def info(self): ... def begin(self): ... def begin_nested(self): ... - async def invalidate(self, exception: Incomplete | None = ...): ... + async def invalidate(self, exception: Incomplete | None = None): ... async def get_isolation_level(self): ... async def set_isolation_level(self): ... def in_transaction(self): ... @@ -32,12 +32,12 @@ class AsyncConnection(ProxyComparable, StartableContext, AsyncConnectable): async def commit(self) -> None: ... async def rollback(self) -> None: ... async def close(self) -> None: ... - async def exec_driver_sql(self, statement, parameters: Incomplete | None = ..., execution_options=...): ... - async def stream(self, statement, parameters: Incomplete | None = ..., execution_options=...): ... - async def execute(self, statement, parameters: Incomplete | None = ..., execution_options=...): ... - async def scalar(self, statement, parameters: Incomplete | None = ..., execution_options=...): ... - async def scalars(self, statement, parameters: Incomplete | None = ..., execution_options=...): ... - async def stream_scalars(self, statement, parameters: Incomplete | None = ..., execution_options=...): ... + async def exec_driver_sql(self, statement, parameters: Incomplete | None = None, execution_options=...): ... + async def stream(self, statement, parameters: Incomplete | None = None, execution_options=...): ... + async def execute(self, statement, parameters: Incomplete | None = None, execution_options=...): ... + async def scalar(self, statement, parameters: Incomplete | None = None, execution_options=...): ... + async def scalars(self, statement, parameters: Incomplete | None = None, execution_options=...): ... + async def stream_scalars(self, statement, parameters: Incomplete | None = None, execution_options=...): ... async def run_sync(self, fn, *arg, **kw): ... def __await__(self): ... async def __aexit__( @@ -57,7 +57,7 @@ class AsyncEngine(ProxyComparable, AsyncConnectable): conn: Any def __init__(self, conn) -> None: ... transaction: Any - async def start(self, is_ctxmanager: bool = ...): ... + async def start(self, is_ctxmanager: bool = False): ... async def __aexit__( self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None ) -> None: ... @@ -87,7 +87,7 @@ class AsyncTransaction(ProxyComparable, StartableContext): connection: Any sync_transaction: Any nested: Any - def __init__(self, connection, nested: bool = ...) -> None: ... + def __init__(self, connection, nested: bool = False) -> None: ... @property def is_valid(self): ... @property @@ -95,7 +95,7 @@ class AsyncTransaction(ProxyComparable, StartableContext): async def close(self) -> None: ... async def rollback(self) -> None: ... async def commit(self) -> None: ... - async def start(self, is_ctxmanager: bool = ...): ... + async def start(self, is_ctxmanager: bool = False): ... async def __aexit__( self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi index 43a2a3b0b..ee9864e0b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi @@ -8,11 +8,11 @@ class AsyncCommon(FilterResult): class AsyncResult(AsyncCommon): def __init__(self, real_result) -> None: ... def keys(self): ... - def unique(self, strategy: Incomplete | None = ...): ... + def unique(self, strategy: Incomplete | None = None): ... def columns(self, *col_expressions): ... - async def partitions(self, size: Incomplete | None = ...) -> None: ... + async def partitions(self, size: Incomplete | None = None) -> None: ... async def fetchone(self): ... - async def fetchmany(self, size: Incomplete | None = ...): ... + async def fetchmany(self, size: Incomplete | None = None): ... async def all(self): ... def __aiter__(self): ... async def __anext__(self): ... @@ -23,15 +23,15 @@ class AsyncResult(AsyncCommon): async def one(self): ... async def scalar(self): ... async def freeze(self): ... - def scalars(self, index: int = ...): ... + def scalars(self, index: int = 0): ... def mappings(self): ... class AsyncScalarResult(AsyncCommon): def __init__(self, real_result, index) -> None: ... - def unique(self, strategy: Incomplete | None = ...): ... - async def partitions(self, size: Incomplete | None = ...) -> None: ... + def unique(self, strategy: Incomplete | None = None): ... + async def partitions(self, size: Incomplete | None = None) -> None: ... async def fetchall(self): ... - async def fetchmany(self, size: Incomplete | None = ...): ... + async def fetchmany(self, size: Incomplete | None = None): ... async def all(self): ... def __aiter__(self): ... async def __anext__(self): ... @@ -42,12 +42,12 @@ class AsyncScalarResult(AsyncCommon): class AsyncMappingResult(AsyncCommon): def __init__(self, result) -> None: ... def keys(self): ... - def unique(self, strategy: Incomplete | None = ...): ... + def unique(self, strategy: Incomplete | None = None): ... def columns(self, *col_expressions): ... - async def partitions(self, size: Incomplete | None = ...) -> None: ... + async def partitions(self, size: Incomplete | None = None) -> None: ... async def fetchall(self): ... async def fetchone(self): ... - async def fetchmany(self, size: Incomplete | None = ...): ... + async def fetchmany(self, size: Incomplete | None = None): ... async def all(self): ... def __aiter__(self): ... async def __anext__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi index a71390ced..2d6557caf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi @@ -21,7 +21,7 @@ class async_scoped_session(ScopedSessionMixin): autoflush: Any def __contains__(self, instance): ... def __iter__(self): ... - def add(self, instance, _warn: bool = ...) -> None: ... + def add(self, instance, _warn: bool = True) -> None: ... def add_all(self, instances) -> None: ... def begin(self, **kw): ... def begin_nested(self, **kw): ... @@ -30,38 +30,40 @@ class async_scoped_session(ScopedSessionMixin): async def connection(self, **kw): ... async def delete(self, instance): ... async def execute( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... - def expire(self, instance, attribute_names: Incomplete | None = ...) -> None: ... + def expire(self, instance, attribute_names: Incomplete | None = None) -> None: ... def expire_all(self) -> None: ... def expunge(self, instance) -> None: ... def expunge_all(self) -> None: ... - async def flush(self, objects: Incomplete | None = ...) -> None: ... + async def flush(self, objects: Incomplete | None = None) -> None: ... async def get( self, entity, ident, - options: Incomplete | None = ..., - populate_existing: bool = ..., - with_for_update: Incomplete | None = ..., - identity_token: Incomplete | None = ..., + options: Incomplete | None = None, + populate_existing: bool = False, + with_for_update: Incomplete | None = None, + identity_token: Incomplete | None = None, ): ... - def get_bind(self, mapper: Incomplete | None = ..., clause: Incomplete | None = ..., bind: Incomplete | None = ..., **kw): ... - def is_modified(self, instance, include_collections: bool = ...): ... - async def merge(self, instance, load: bool = ..., options: Incomplete | None = ...): ... - async def refresh(self, instance, attribute_names: Incomplete | None = ..., with_for_update: Incomplete | None = ...): ... + def get_bind( + self, mapper: Incomplete | None = None, clause: Incomplete | None = None, bind: Incomplete | None = None, **kw + ): ... + def is_modified(self, instance, include_collections: bool = True): ... + async def merge(self, instance, load: bool = True, options: Incomplete | None = None): ... + async def refresh(self, instance, attribute_names: Incomplete | None = None, with_for_update: Incomplete | None = None): ... async def rollback(self): ... async def scalar( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... async def scalars( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... async def stream( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... async def stream_scalars( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... @property def dirty(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi index 02e1e942f..aefe03ad9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi @@ -13,40 +13,42 @@ class AsyncSession(ReversibleProxy): sync_session_class: Any sync_session: Any def __init__( - self, bind: Incomplete | None = ..., binds: Incomplete | None = ..., sync_session_class: Incomplete | None = ..., **kw + self, bind: Incomplete | None = None, binds: Incomplete | None = None, sync_session_class: Incomplete | None = None, **kw ) -> None: ... - async def refresh(self, instance, attribute_names: Incomplete | None = ..., with_for_update: Incomplete | None = ...): ... + async def refresh(self, instance, attribute_names: Incomplete | None = None, with_for_update: Incomplete | None = None): ... async def run_sync(self, fn, *arg, **kw): ... async def execute( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... async def scalar( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... async def scalars( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... async def get( self, entity, ident, - options: Incomplete | None = ..., - populate_existing: bool = ..., - with_for_update: Incomplete | None = ..., - identity_token: Incomplete | None = ..., + options: Incomplete | None = None, + populate_existing: bool = False, + with_for_update: Incomplete | None = None, + identity_token: Incomplete | None = None, ): ... async def stream( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... async def stream_scalars( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... async def delete(self, instance): ... - async def merge(self, instance, load: bool = ..., options: Incomplete | None = ...): ... - async def flush(self, objects: Incomplete | None = ...) -> None: ... + async def merge(self, instance, load: bool = True, options: Incomplete | None = None): ... + async def flush(self, objects: Incomplete | None = None) -> None: ... def get_transaction(self): ... def get_nested_transaction(self): ... - def get_bind(self, mapper: Incomplete | None = ..., clause: Incomplete | None = ..., bind: Incomplete | None = ..., **kw): ... + def get_bind( + self, mapper: Incomplete | None = None, clause: Incomplete | None = None, bind: Incomplete | None = None, **kw + ): ... async def connection(self, **kw): ... def begin(self, **kw): ... def begin_nested(self, **kw): ... @@ -68,13 +70,13 @@ class AsyncSession(ReversibleProxy): def object_session(cls, instance): ... def __contains__(self, instance): ... def __iter__(self): ... - def add(self, instance, _warn: bool = ...) -> None: ... + def add(self, instance, _warn: bool = True) -> None: ... def add_all(self, instances) -> None: ... - def expire(self, instance, attribute_names: Incomplete | None = ...) -> None: ... + def expire(self, instance, attribute_names: Incomplete | None = None) -> None: ... def expire_all(self) -> None: ... def expunge(self, instance) -> None: ... def expunge_all(self) -> None: ... - def is_modified(self, instance, include_collections: bool = ...): ... + def is_modified(self, instance, include_collections: bool = True): ... def in_transaction(self): ... def in_nested_transaction(self): ... @property @@ -103,12 +105,12 @@ class AsyncSessionTransaction(ReversibleProxy, StartableContext): session: Any nested: Any sync_transaction: Any - def __init__(self, session, nested: bool = ...) -> None: ... + def __init__(self, session, nested: bool = False) -> None: ... @property def is_active(self): ... async def rollback(self) -> None: ... async def commit(self) -> None: ... - async def start(self, is_ctxmanager: bool = ...): ... + async def start(self, is_ctxmanager: bool = False): ... async def __aexit__( self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/automap.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/automap.pyi index f17b2d3b6..47a5793cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/automap.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/automap.pyi @@ -12,16 +12,16 @@ class AutomapBase: @classmethod def prepare( cls, - autoload_with: Incomplete | None = ..., - engine: Incomplete | None = ..., - reflect: bool = ..., - schema: Incomplete | None = ..., - classname_for_table: Incomplete | None = ..., - collection_class: Incomplete | None = ..., - name_for_scalar_relationship: Incomplete | None = ..., - name_for_collection_relationship: Incomplete | None = ..., - generate_relationship: Incomplete | None = ..., + autoload_with: Incomplete | None = None, + engine: Incomplete | None = None, + reflect: bool = False, + schema: Incomplete | None = None, + classname_for_table: Incomplete | None = None, + collection_class: Incomplete | None = None, + name_for_scalar_relationship: Incomplete | None = None, + name_for_collection_relationship: Incomplete | None = None, + generate_relationship: Incomplete | None = None, reflection_options=..., ) -> None: ... -def automap_base(declarative_base: Incomplete | None = ..., **kw): ... +def automap_base(declarative_base: Incomplete | None = None, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi index 2cf3c3250..250844a1d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi @@ -11,16 +11,16 @@ class Bakery: class BakedQuery: steps: Any - def __init__(self, bakery, initial_fn, args=...) -> None: ... + def __init__(self, bakery, initial_fn, args=()) -> None: ... @classmethod - def bakery(cls, size: int = ..., _size_alert: Incomplete | None = ...): ... + def bakery(cls, size: int = 200, _size_alert: Incomplete | None = None): ... def __iadd__(self, other): ... def __add__(self, other): ... def add_criteria(self, fn, *args): ... def with_criteria(self, fn, *args): ... def for_session(self, session): ... def __call__(self, session): ... - def spoil(self, full: bool = ...): ... + def spoil(self, full: bool = False): ... def to_query(self, query_or_session): ... class Result: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/horizontal_shard.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/horizontal_shard.pyi index 08a80eb03..b8355d51c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/horizontal_shard.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/horizontal_shard.pyi @@ -22,13 +22,13 @@ class ShardedSession(Session): self, shard_chooser, id_chooser, - execute_chooser: Incomplete | None = ..., - shards: Incomplete | None = ..., + execute_chooser: Incomplete | None = None, + shards: Incomplete | None = None, query_cls=..., **kwargs, ): ... def connection_callable( - self, mapper: Incomplete | None = ..., instance: Incomplete | None = ..., shard_id: Incomplete | None = ..., **kwargs + self, mapper: Incomplete | None = None, instance: Incomplete | None = None, shard_id: Incomplete | None = None, **kwargs ): ... - def get_bind(self, mapper: Incomplete | None = ..., shard_id: Incomplete | None = ..., instance: Incomplete | None = ..., clause: Incomplete | None = ..., **kw): ... # type: ignore[override] + def get_bind(self, mapper: Incomplete | None = None, shard_id: Incomplete | None = None, instance: Incomplete | None = None, clause: Incomplete | None = None, **kw): ... # type: ignore[override] def bind_shard(self, shard_id, bind) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/hybrid.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/hybrid.pyi index eda35d683..d9d20108f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/hybrid.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/hybrid.pyi @@ -10,7 +10,7 @@ class hybrid_method(interfaces.InspectionAttrInfo): is_attribute: bool extension_type: Any func: Any - def __init__(self, func, expr: Incomplete | None = ...) -> None: ... + def __init__(self, func, expr: Incomplete | None = None) -> None: ... def __get__(self, instance, owner): ... expr: Any def expression(self, expr): ... @@ -27,11 +27,11 @@ class hybrid_property(interfaces.InspectionAttrInfo): def __init__( self, fget, - fset: Incomplete | None = ..., - fdel: Incomplete | None = ..., - expr: Incomplete | None = ..., - custom_comparator: Incomplete | None = ..., - update_expr: Incomplete | None = ..., + fset: Incomplete | None = None, + fdel: Incomplete | None = None, + expr: Incomplete | None = None, + custom_comparator: Incomplete | None = None, + update_expr: Incomplete | None = None, ) -> None: ... def __get__(self, instance, owner): ... def __set__(self, instance, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/indexable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/indexable.pyi index 1178ebd4f..8d34ff0db 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/indexable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/indexable.pyi @@ -10,7 +10,7 @@ class index_property(hybrid_property): datatype: Any onebased: Any def __init__( - self, attr_name, index, default=..., datatype: Incomplete | None = ..., mutable: bool = ..., onebased: bool = ... + self, attr_name, index, default=..., datatype: Incomplete | None = None, mutable: bool = True, onebased: bool = True ): ... def fget(self, instance): ... def fset(self, instance, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/instrumentation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/instrumentation.pyi index d054f2def..d88af6e40 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/instrumentation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/instrumentation.pyi @@ -39,7 +39,7 @@ class _ClassInstrumentationAdapter(ClassManager): def manage(self) -> None: ... def unregister(self) -> None: ... def manager_getter(self): ... - def instrument_attribute(self, key, inst, propagated: bool = ...) -> None: ... + def instrument_attribute(self, key, inst, propagated: bool = False) -> None: ... def post_configure_attribute(self, key) -> None: ... def install_descriptor(self, key, inst) -> None: ... def uninstall_descriptor(self, key) -> None: ... @@ -47,8 +47,8 @@ class _ClassInstrumentationAdapter(ClassManager): def uninstall_member(self, key) -> None: ... def instrument_collection_class(self, key, collection_class): ... def initialize_collection(self, key, state, factory): ... - def new_instance(self, state: Incomplete | None = ...): ... - def setup_instance(self, instance, state: Incomplete | None = ...): ... + def new_instance(self, state: Incomplete | None = None): ... + def setup_instance(self, instance, state: Incomplete | None = None): ... def teardown_instance(self, instance) -> None: ... def has_state(self, instance): ... def state_getter(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/orderinglist.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/orderinglist.pyi index 7c86012ba..bebca695b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/orderinglist.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/orderinglist.pyi @@ -1,20 +1,20 @@ from _typeshed import Incomplete from typing import Any -def ordering_list(attr, count_from: Incomplete | None = ..., **kw): ... +def ordering_list(attr, count_from: Incomplete | None = None, **kw): ... class OrderingList(list[Any]): ordering_attr: Any ordering_func: Any reorder_on_append: Any def __init__( - self, ordering_attr: Incomplete | None = ..., ordering_func: Incomplete | None = ..., reorder_on_append: bool = ... + self, ordering_attr: Incomplete | None = None, ordering_func: Incomplete | None = None, reorder_on_append: bool = False ) -> None: ... def reorder(self) -> None: ... def append(self, entity) -> None: ... def insert(self, index, entity) -> None: ... def remove(self, entity) -> None: ... - def pop(self, index: int = ...): ... # type: ignore[override] + def pop(self, index: int = -1): ... # type: ignore[override] def __setitem__(self, index, entity) -> None: ... def __delitem__(self, index) -> None: ... def __setslice__(self, start, end, values) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/serializer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/serializer.pyi index 4177beb2f..3584cf3eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/serializer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/serializer.pyi @@ -2,7 +2,9 @@ from _typeshed import Incomplete def Serializer(*args, **kw): ... def Deserializer( - file, metadata: Incomplete | None = ..., scoped_session: Incomplete | None = ..., engine: Incomplete | None = ... + file, metadata: Incomplete | None = None, scoped_session: Incomplete | None = None, engine: Incomplete | None = None +): ... +def dumps(obj, protocol=5): ... +def loads( + data, metadata: Incomplete | None = None, scoped_session: Incomplete | None = None, engine: Incomplete | None = None ): ... -def dumps(obj, protocol=...): ... -def loads(data, metadata: Incomplete | None = ..., scoped_session: Incomplete | None = ..., engine: Incomplete | None = ...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/engine.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/engine.pyi index f1b3362d1..049185fd8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/engine.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/engine.pyi @@ -22,8 +22,8 @@ class Connection(_LegacyConnection): def commit(self) -> None: ... def rollback(self) -> None: ... def close(self) -> None: ... - def execute(self, statement, parameters: Incomplete | None = ..., execution_options: Incomplete | None = ...): ... # type: ignore[override] - def scalar(self, statement, parameters: Incomplete | None = ..., execution_options: Incomplete | None = ...): ... # type: ignore[override] + def execute(self, statement, parameters: Incomplete | None = None, execution_options: Incomplete | None = None): ... # type: ignore[override] + def scalar(self, statement, parameters: Incomplete | None = None, execution_options: Incomplete | None = None): ... # type: ignore[override] class Engine(_LegacyEngine): transaction: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/inspection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/inspection.pyi index d758818c5..3e92030a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/inspection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/inspection.pyi @@ -1 +1 @@ -def inspect(subject, raiseerr: bool = ...): ... +def inspect(subject, raiseerr: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi index 98b20ef91..2bb42e332 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi @@ -28,7 +28,7 @@ class InstanceLogger: def isEnabledFor(self, level): ... def getEffectiveLevel(self): ... -def instance_logger(instance: Identified, echoflag: _EchoFlag = ...) -> None: ... +def instance_logger(instance: Identified, echoflag: _EchoFlag = None) -> None: ... class echo_property: __doc__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/__init__.pyi index 6e32aa68b..a0ba4126d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/__init__.pyi @@ -85,7 +85,7 @@ from .util import ( with_polymorphic as with_polymorphic, ) -def create_session(bind: Incomplete | None = ..., **kwargs): ... +def create_session(bind: Incomplete | None = None, **kwargs): ... with_loader_criteria: Any relationship: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi index c054153ee..d181cf386 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi @@ -32,10 +32,10 @@ class QueryableAttribute( class_, key, parententity, - impl: Incomplete | None = ..., - comparator: Incomplete | None = ..., - of_type: Incomplete | None = ..., - extra_criteria=..., + impl: Incomplete | None = None, + comparator: Incomplete | None = None, + of_type: Incomplete | None = None, + extra_criteria=(), ) -> None: ... def __reduce__(self): ... def get_history(self, instance, passive=...): ... @@ -52,7 +52,7 @@ class QueryableAttribute( def label(self, name): ... def operate(self, op, *other, **kwargs): ... def reverse_operate(self, op, other, **kwargs): ... - def hasparent(self, state, optimistic: bool = ...): ... + def hasparent(self, state, optimistic: bool = False): ... def __getattr__(self, key: str): ... @memoized_property def property(self): ... @@ -112,17 +112,17 @@ class AttributeImpl: key, callable_, dispatch, - trackparent: bool = ..., - compare_function: Incomplete | None = ..., - active_history: bool = ..., - parent_token: Incomplete | None = ..., - load_on_unexpire: bool = ..., - send_modified_events: bool = ..., - accepts_scalar_loader: Incomplete | None = ..., + trackparent: bool = False, + compare_function: Incomplete | None = None, + active_history: bool = False, + parent_token: Incomplete | None = None, + load_on_unexpire: bool = True, + send_modified_events: bool = True, + accepts_scalar_loader: Incomplete | None = None, **kwargs, ) -> None: ... active_history: Any - def hasparent(self, state, optimistic: bool = ...): ... + def hasparent(self, state, optimistic: bool = False): ... def sethasparent(self, state, parent_state, value) -> None: ... def get_history(self, state, dict_, passive=...) -> None: ... def get_all_pending(self, state, dict_, passive=...) -> None: ... @@ -130,7 +130,9 @@ class AttributeImpl: def append(self, state, dict_, value, initiator, passive=...) -> None: ... def remove(self, state, dict_, value, initiator, passive=...) -> None: ... def pop(self, state, dict_, value, initiator, passive=...) -> None: ... - def set(self, state, dict_, value, initiator, passive=..., check_old: Incomplete | None = ..., pop: bool = ...) -> None: ... + def set( + self, state, dict_, value, initiator, passive=..., check_old: Incomplete | None = None, pop: bool = False + ) -> None: ... def get_committed_value(self, state, dict_, passive=...): ... def set_committed_value(self, state, dict_, value): ... @@ -143,7 +145,9 @@ class ScalarAttributeImpl(AttributeImpl): def __init__(self, *arg, **kw) -> None: ... def delete(self, state, dict_) -> None: ... def get_history(self, state, dict_, passive=...): ... - def set(self, state, dict_, value, initiator, passive=..., check_old: Incomplete | None = ..., pop: bool = ...) -> None: ... + def set( + self, state, dict_, value, initiator, passive=..., check_old: Incomplete | None = None, pop: bool = False + ) -> None: ... def fire_replace_event(self, state, dict_, value, previous, initiator): ... def fire_remove_event(self, state, dict_, value, initiator) -> None: ... @property @@ -157,7 +161,9 @@ class ScalarObjectAttributeImpl(ScalarAttributeImpl): def delete(self, state, dict_) -> None: ... def get_history(self, state, dict_, passive=...): ... def get_all_pending(self, state, dict_, passive=...): ... - def set(self, state, dict_, value, initiator, passive=..., check_old: Incomplete | None = ..., pop: bool = ...) -> None: ... + def set( + self, state, dict_, value, initiator, passive=..., check_old: Incomplete | None = None, pop: bool = False + ) -> None: ... def fire_remove_event(self, state, dict_, value, initiator) -> None: ... def fire_replace_event(self, state, dict_, value, previous, initiator): ... @@ -175,10 +181,10 @@ class CollectionAttributeImpl(AttributeImpl): key, callable_, dispatch, - typecallable: Incomplete | None = ..., - trackparent: bool = ..., - copy_function: Incomplete | None = ..., - compare_function: Incomplete | None = ..., + typecallable: Incomplete | None = None, + trackparent: bool = False, + copy_function: Incomplete | None = None, + compare_function: Incomplete | None = None, **kwargs, ) -> None: ... def get_history(self, state, dict_, passive=...): ... @@ -196,14 +202,14 @@ class CollectionAttributeImpl(AttributeImpl): state, dict_, value, - initiator: Incomplete | None = ..., + initiator: Incomplete | None = None, passive=..., - check_old: Incomplete | None = ..., - pop: bool = ..., - _adapt: bool = ..., + check_old: Incomplete | None = None, + pop: bool = False, + _adapt: bool = True, ) -> None: ... def set_committed_value(self, state, dict_, value): ... - def get_collection(self, state, dict_, user_data: Incomplete | None = ..., passive=...): ... + def get_collection(self, state, dict_, user_data: Incomplete | None = None, passive=...): ... def backref_listeners(attribute, key, uselist): ... @@ -227,26 +233,26 @@ HISTORY_BLANK: Any def get_history(obj, key, passive=...): ... def get_state_history(state, key, passive=...): ... -def has_parent(cls, obj, key, optimistic: bool = ...): ... +def has_parent(cls, obj, key, optimistic: bool = False): ... def register_attribute(class_, key, **kw): ... def register_attribute_impl( class_, key, - uselist: bool = ..., - callable_: Incomplete | None = ..., - useobject: bool = ..., - impl_class: Incomplete | None = ..., - backref: Incomplete | None = ..., + uselist: bool = False, + callable_: Incomplete | None = None, + useobject: bool = False, + impl_class: Incomplete | None = None, + backref: Incomplete | None = None, **kw, ): ... def register_descriptor( - class_, key, comparator: Incomplete | None = ..., parententity: Incomplete | None = ..., doc: Incomplete | None = ... + class_, key, comparator: Incomplete | None = None, parententity: Incomplete | None = None, doc: Incomplete | None = None ): ... def unregister_attribute(class_, key) -> None: ... def init_collection(obj, key): ... def init_state_collection(state, dict_, key): ... def set_committed_value(instance, key, value) -> None: ... -def set_attribute(instance, key, value, initiator: Incomplete | None = ...) -> None: ... +def set_attribute(instance, key, value, initiator: Incomplete | None = None) -> None: ... def get_attribute(instance, key): ... def del_attribute(instance, key) -> None: ... def flag_modified(instance, key) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi index 4d247f53c..d231d89d4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi @@ -55,7 +55,7 @@ def _is_mapped_class(entity): ... _state_mapper: Any -def class_mapper(class_, configure: bool = ...): ... +def class_mapper(class_, configure: bool = True): ... class InspectionAttr: is_selectable: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/clsregistry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/clsregistry.pyi index b21f02a3a..129b82fbb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/clsregistry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/clsregistry.pyi @@ -7,7 +7,7 @@ def remove_class(classname, cls, decl_class_registry) -> None: ... class _MultipleClassMarker: on_remove: Any contents: Any - def __init__(self, classes, on_remove: Incomplete | None = ...) -> None: ... + def __init__(self, classes, on_remove: Incomplete | None = None) -> None: ... def remove_item(self, cls) -> None: ... def __iter__(self): ... def attempt_get(self, path, key): ... @@ -48,5 +48,5 @@ class _class_resolver: arg: Any fallback: Any favor_tables: Any - def __init__(self, cls, prop, fallback, arg, favor_tables: bool = ...) -> None: ... + def __init__(self, cls, prop, fallback, arg, favor_tables: bool = False) -> None: ... def __call__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi index 0160b4919..acfc63049 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi @@ -64,22 +64,22 @@ class CollectionAdapter: @property def data(self): ... def bulk_appender(self): ... - def append_with_event(self, item, initiator: Incomplete | None = ...) -> None: ... + def append_with_event(self, item, initiator: Incomplete | None = None) -> None: ... def append_without_event(self, item) -> None: ... def append_multiple_without_event(self, items) -> None: ... def bulk_remover(self): ... - def remove_with_event(self, item, initiator: Incomplete | None = ...) -> None: ... + def remove_with_event(self, item, initiator: Incomplete | None = None) -> None: ... def remove_without_event(self, item) -> None: ... - def clear_with_event(self, initiator: Incomplete | None = ...) -> None: ... + def clear_with_event(self, initiator: Incomplete | None = None) -> None: ... def clear_without_event(self) -> None: ... def __iter__(self): ... def __len__(self) -> int: ... def __bool__(self) -> bool: ... def __nonzero__(self) -> bool: ... - def fire_append_wo_mutation_event(self, item, initiator: Incomplete | None = ...): ... - def fire_append_event(self, item, initiator: Incomplete | None = ...): ... - def fire_remove_event(self, item, initiator: Incomplete | None = ...) -> None: ... - def fire_pre_remove_event(self, initiator: Incomplete | None = ...) -> None: ... + def fire_append_wo_mutation_event(self, item, initiator: Incomplete | None = None): ... + def fire_append_event(self, item, initiator: Incomplete | None = None): ... + def fire_remove_event(self, item, initiator: Incomplete | None = None) -> None: ... + def fire_pre_remove_event(self, initiator: Incomplete | None = None) -> None: ... class InstrumentedList(list[Any]): ... class InstrumentedSet(set[Any]): ... @@ -88,5 +88,5 @@ class InstrumentedDict(dict[Any, Any]): ... class MappedCollection(dict[Any, Any]): keyfunc: Any def __init__(self, keyfunc) -> None: ... - def set(self, value, _sa_initiator: Incomplete | None = ...) -> None: ... - def remove(self, value, _sa_initiator: Incomplete | None = ...) -> None: ... + def set(self, value, _sa_initiator: Incomplete | None = None) -> None: ... + def remove(self, value, _sa_initiator: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi index 423eeb985..7986198b2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi @@ -37,8 +37,8 @@ class QueryContext: params, session, load_options, - execution_options: Incomplete | None = ..., - bind_arguments: Incomplete | None = ..., + execution_options: Incomplete | None = None, + bind_arguments: Incomplete | None = None, ) -> None: ... class ORMCompileState(CompileState): @@ -142,8 +142,8 @@ class _BundleEntity(_QueryEntity): expr, entities_collection, is_current_entities: bool, - setup_entities: bool = ..., - parent_bundle: Incomplete | None = ..., + setup_entities: bool = True, + parent_bundle: Incomplete | None = None, ) -> None: ... @property def mapper(self): ... @@ -178,7 +178,7 @@ class _RawColumnEntity(_ColumnEntity): entities_collection, raw_column_index, is_current_entities: bool, - parent_bundle: Incomplete | None = ..., + parent_bundle: Incomplete | None = None, ) -> None: ... def corresponds_to(self, entity): ... def setup_compile_state(self, compile_state) -> None: ... @@ -200,7 +200,7 @@ class _ORMColumnEntity(_ColumnEntity): parententity, raw_column_index, is_current_entities: bool, - parent_bundle: Incomplete | None = ..., + parent_bundle: Incomplete | None = None, ) -> None: ... def corresponds_to(self, entity): ... def setup_compile_state(self, compile_state) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi index dc181862a..f36163478 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi @@ -32,10 +32,10 @@ class DeclarativeMeta(type): def __setattr__(cls, key: str, value: Any) -> None: ... def __delattr__(cls, key: str) -> None: ... -def synonym_for(name, map_column: bool = ...): ... +def synonym_for(name, map_column: bool = False): ... class declared_attr(interfaces._MappedAttribute, property): - def __init__(self, fget, cascading: bool = ...) -> None: ... + def __init__(self, fget, cascading: bool = False) -> None: ... def __get__(self, self_, cls): ... @hybridproperty def cascading(self): ... @@ -48,23 +48,23 @@ class _stateful_declared_attr(declared_attr): def declarative_mixin(cls: _ClsT) -> _ClsT: ... @overload def declarative_base( - bind: Connectable | None = ..., - metadata: MetaData | None = ..., - mapper: Incomplete | None = ..., + bind: Connectable | None = None, + metadata: MetaData | None = None, + mapper: Incomplete | None = None, cls: type[Any] | tuple[type[Any], ...] = ..., - name: str = ..., + name: str = "Base", constructor: Callable[..., None] = ..., - class_registry: dict[str, type[Any]] | None = ..., + class_registry: dict[str, type[Any]] | None = None, ) -> type[_DeclarativeBase]: ... @overload def declarative_base( - bind: Connectable | None = ..., - metadata: MetaData | None = ..., - mapper: Incomplete | None = ..., + bind: Connectable | None = None, + metadata: MetaData | None = None, + mapper: Incomplete | None = None, cls: type[Any] | tuple[type[Any], ...] = ..., - name: str = ..., + name: str = "Base", constructor: Callable[..., None] = ..., - class_registry: dict[str, type[Any]] | None = ..., + class_registry: dict[str, type[Any]] | None = None, *, metaclass: _DeclarativeBaseMeta[_DeclT], ) -> _DeclT: ... @@ -85,25 +85,25 @@ class registry: constructor: Callable[..., None] def __init__( self, - metadata: MetaData | None = ..., - class_registry: dict[str, type[Any]] | None = ..., + metadata: MetaData | None = None, + class_registry: dict[str, type[Any]] | None = None, constructor: Callable[..., None] = ..., - _bind: Connectable | None = ..., + _bind: Connectable | None = None, ) -> None: ... @property def mappers(self) -> frozenset[Any]: ... - def configure(self, cascade: bool = ...) -> None: ... - def dispose(self, cascade: bool = ...) -> None: ... + def configure(self, cascade: bool = False) -> None: ... + def dispose(self, cascade: bool = False) -> None: ... @overload def generate_base( - self, mapper: Incomplete | None = ..., cls: type[Any] | tuple[type[Any], ...] = ..., name: str = ... + self, mapper: Incomplete | None = None, cls: type[Any] | tuple[type[Any], ...] = ..., name: str = "Base" ) -> type[_DeclarativeBase]: ... @overload def generate_base( self, - mapper: Incomplete | None = ..., + mapper: Incomplete | None = None, cls: type[Any] | tuple[type[Any], ...] = ..., - name: str = ..., + name: str = "Base", *, metaclass: _DeclarativeBaseMeta[_DeclT], ) -> _DeclT: ... @@ -125,7 +125,7 @@ class registry: self, *, mapper: Incomplete | None = ..., metaclass: _DeclarativeBaseMeta[_DeclT] ) -> Callable[[_ClsT], _ClsT | _DeclT | Any]: ... def map_declaratively(self, cls): ... - def map_imperatively(self, class_, local_table: Incomplete | None = ..., **kw): ... + def map_imperatively(self, class_, local_table: Incomplete | None = None, **kw): ... @overload def as_declarative( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_base.pyi index 9d5dbf1c0..7aab93cf9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_base.pyi @@ -43,5 +43,5 @@ class _DeferredMapperConfig(_ClassScanMapperConfig): @classmethod def config_for_cls(cls, class_): ... @classmethod - def classes_for_base(cls, base_cls, sort: bool = ...): ... + def classes_for_base(cls, base_cls, sort: bool = True): ... def map(self, mapper_kw=...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi index f4e8b7930..119d974fa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi @@ -61,11 +61,11 @@ class SynonymProperty(DescriptorProperty): def __init__( self, name, - map_column: Incomplete | None = ..., - descriptor: Incomplete | None = ..., - comparator_factory: Incomplete | None = ..., - doc: Incomplete | None = ..., - info: Incomplete | None = ..., + map_column: Incomplete | None = None, + descriptor: Incomplete | None = None, + comparator_factory: Incomplete | None = None, + doc: Incomplete | None = None, + info: Incomplete | None = None, ) -> None: ... @property def uses_objects(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dynamic.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dynamic.pyi index 40193a48f..6008d1d9f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dynamic.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dynamic.pyi @@ -21,22 +21,22 @@ class DynamicAttributeImpl(attributes.AttributeImpl): target_mapper: Any query_class: Any def __init__( - self, class_, key, typecallable, dispatch, target_mapper, order_by, query_class: Incomplete | None = ..., **kw + self, class_, key, typecallable, dispatch, target_mapper, order_by, query_class: Incomplete | None = None, **kw ) -> None: ... def get(self, state, dict_, passive=...): ... - def get_collection(self, state, dict_, user_data: Incomplete | None = ..., passive=...): ... - def fire_append_event(self, state, dict_, value, initiator, collection_history: Incomplete | None = ...) -> None: ... - def fire_remove_event(self, state, dict_, value, initiator, collection_history: Incomplete | None = ...) -> None: ... + def get_collection(self, state, dict_, user_data: Incomplete | None = None, passive=...): ... + def fire_append_event(self, state, dict_, value, initiator, collection_history: Incomplete | None = None) -> None: ... + def fire_remove_event(self, state, dict_, value, initiator, collection_history: Incomplete | None = None) -> None: ... def set( self, state, dict_, value, - initiator: Incomplete | None = ..., + initiator: Incomplete | None = None, passive=..., - check_old: Incomplete | None = ..., - pop: bool = ..., - _adapt: bool = ..., + check_old: Incomplete | None = None, + pop: bool = False, + _adapt: bool = True, ) -> None: ... def delete(self, *args, **kwargs) -> None: ... def set_committed_value(self, state, dict_, value) -> None: ... @@ -74,7 +74,7 @@ class CollectionHistory: unchanged_items: Any added_items: Any deleted_items: Any - def __init__(self, attr, state, apply_to: Incomplete | None = ...) -> None: ... + def __init__(self, attr, state, apply_to: Incomplete | None = None) -> None: ... @property def added_plus_unchanged(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/evaluator.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/evaluator.pyi index 9091e9694..1e4cf1b01 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/evaluator.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/evaluator.pyi @@ -11,7 +11,7 @@ class _NoObject(operators.ColumnOperators[Any]): class EvaluatorCompiler: target_cls: Any - def __init__(self, target_cls: Incomplete | None = ...) -> None: ... + def __init__(self, target_cls: Incomplete | None = None) -> None: ... def process(self, *clauses): ... def visit_grouping(self, clause): ... def visit_null(self, clause): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi index 384ffdf11..b589abf2f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi @@ -18,15 +18,15 @@ class DetachedInstanceError(sa_exc.SQLAlchemyError): code: str class UnmappedInstanceError(UnmappedError): - def __init__(self, obj, msg: Incomplete | None = ...) -> None: ... + def __init__(self, obj, msg: Incomplete | None = None) -> None: ... def __reduce__(self): ... class UnmappedClassError(UnmappedError): - def __init__(self, cls, msg: Incomplete | None = ...) -> None: ... + def __init__(self, cls, msg: Incomplete | None = None) -> None: ... def __reduce__(self): ... class ObjectDeletedError(sa_exc.InvalidRequestError): - def __init__(self, state, msg: Incomplete | None = ...) -> None: ... + def __init__(self, state, msg: Incomplete | None = None) -> None: ... def __reduce__(self): ... class UnmappedColumnError(sa_exc.InvalidRequestError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/identity.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/identity.pyi index 062e91c0c..59f767906 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/identity.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/identity.pyi @@ -10,7 +10,7 @@ class IdentityMap: def has_key(self, key): ... def popitem(self) -> None: ... def pop(self, key, *args) -> None: ... - def setdefault(self, key, default: Incomplete | None = ...) -> None: ... + def setdefault(self, key, default: Incomplete | None = None) -> None: ... def __len__(self) -> int: ... def copy(self) -> None: ... def __setitem__(self, key, value) -> None: ... @@ -22,7 +22,7 @@ class WeakInstanceDict(IdentityMap): def contains_state(self, state): ... def replace(self, state): ... def add(self, state): ... - def get(self, key, default: Incomplete | None = ...): ... + def get(self, key, default: Incomplete | None = None): ... def items(self): ... def values(self): ... def __iter__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi index 6c972cef5..cfdfa096d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi @@ -38,10 +38,10 @@ class ClassManager(HasMemoized, dict[Any, Any]): def state_getter(self): ... @hybridmethod def dict_getter(self): ... - def instrument_attribute(self, key, inst, propagated: bool = ...) -> None: ... + def instrument_attribute(self, key, inst, propagated: bool = False) -> None: ... def subclass_managers(self, recursive) -> None: ... def post_configure_attribute(self, key) -> None: ... - def uninstrument_attribute(self, key, propagated: bool = ...) -> None: ... + def uninstrument_attribute(self, key, propagated: bool = False) -> None: ... def unregister(self) -> None: ... def install_descriptor(self, key, inst) -> None: ... def uninstall_descriptor(self, key) -> None: ... @@ -49,15 +49,15 @@ class ClassManager(HasMemoized, dict[Any, Any]): def uninstall_member(self, key) -> None: ... def instrument_collection_class(self, key, collection_class): ... def initialize_collection(self, key, state, factory): ... - def is_instrumented(self, key, search: bool = ...): ... + def is_instrumented(self, key, search: bool = False): ... def get_impl(self, key): ... @property def attributes(self): ... - def new_instance(self, state: Incomplete | None = ...): ... - def setup_instance(self, instance, state: Incomplete | None = ...) -> None: ... + def new_instance(self, state: Incomplete | None = None): ... + def setup_instance(self, instance, state: Incomplete | None = None) -> None: ... def teardown_instance(self, instance) -> None: ... def has_state(self, instance): ... - def has_parent(self, state, key, optimistic: bool = ...): ... + def has_parent(self, state, key, optimistic: bool = False): ... def __bool__(self) -> bool: ... def __nonzero__(self) -> bool: ... @@ -77,12 +77,12 @@ manager_of_class = base.manager_of_class def register_class( class_, - finalize: bool = ..., - mapper: Incomplete | None = ..., - registry: Incomplete | None = ..., - declarative_scan: Incomplete | None = ..., - expired_attribute_loader: Incomplete | None = ..., - init_method: Incomplete | None = ..., + finalize: bool = True, + mapper: Incomplete | None = None, + registry: Incomplete | None = None, + declarative_scan: Incomplete | None = None, + expired_attribute_loader: Incomplete | None = None, + init_method: Incomplete | None = None, ): ... def unregister_class(class_) -> None: ... def is_instrumented(instance, key): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi index 61b1c7f7e..07a897578 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi @@ -46,7 +46,7 @@ class MapperProperty(HasCacheKey, _MappedAttribute, InspectionAttr, util.Memoize is_property: bool def setup(self, context, query_entity, path, adapter, **kwargs) -> None: ... def create_row_processor(self, context, query_entity, path, mapper, result, adapter, populators) -> None: ... - def cascade_iterator(self, type_, state, dict_, visited_states, halt_on: Incomplete | None = ...): ... + def cascade_iterator(self, type_, state, dict_, visited_states, halt_on: Incomplete | None = None): ... parent: Any def set_parent(self, parent, init) -> None: ... def instrument_class(self, mapper) -> None: ... @@ -64,7 +64,7 @@ class PropComparator(operators.ColumnOperators[_T], Generic[_T]): __visit_name__: str prop: Any property: Any - def __init__(self, prop, parentmapper, adapt_to_entity: Incomplete | None = ...) -> None: ... + def __init__(self, prop, parentmapper, adapt_to_entity: Incomplete | None = None) -> None: ... def __clause_element__(self) -> None: ... def adapt_to_entity(self, adapt_to_entity): ... @property @@ -79,8 +79,8 @@ class PropComparator(operators.ColumnOperators[_T], Generic[_T]): def of_type_op(a, class_): ... def of_type(self, class_): ... def and_(self, *criteria): ... - def any(self, criterion: Incomplete | None = ..., **kwargs): ... - def has(self, criterion: Incomplete | None = ..., **kwargs): ... + def any(self, criterion: Incomplete | None = None, **kwargs): ... + def has(self, criterion: Incomplete | None = None, **kwargs): ... class StrategizedProperty(MapperProperty): inherit_cache: bool @@ -111,7 +111,7 @@ class CriteriaOption(CompileStateOption): class UserDefinedOption(ORMOption): propagate_to_loaders: bool payload: Any - def __init__(self, payload: Incomplete | None = ...) -> None: ... + def __init__(self, payload: Incomplete | None = None) -> None: ... class MapperOption(ORMOption): propagate_to_loaders: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/loading.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/loading.pyi index 834124598..328b33ef1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/loading.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/loading.pyi @@ -2,18 +2,18 @@ from _typeshed import Incomplete from typing import Any def instances(cursor, context): ... -def merge_frozen_result(session, statement, frozen_result, load: bool = ...): ... -def merge_result(query, iterator, load: bool = ...): ... +def merge_frozen_result(session, statement, frozen_result, load: bool = True): ... +def merge_result(query, iterator, load: bool = True): ... def get_from_identity(session, mapper, key, passive): ... def load_on_ident( session, statement, key, - load_options: Incomplete | None = ..., - refresh_state: Incomplete | None = ..., - with_for_update: Incomplete | None = ..., - only_load_props: Incomplete | None = ..., - no_autoflush: bool = ..., + load_options: Incomplete | None = None, + refresh_state: Incomplete | None = None, + with_for_update: Incomplete | None = None, + only_load_props: Incomplete | None = None, + no_autoflush: bool = False, bind_arguments=..., execution_options=..., ): ... @@ -21,12 +21,12 @@ def load_on_pk_identity( session, statement, primary_key_identity, - load_options: Incomplete | None = ..., - refresh_state: Incomplete | None = ..., - with_for_update: Incomplete | None = ..., - only_load_props: Incomplete | None = ..., - identity_token: Incomplete | None = ..., - no_autoflush: bool = ..., + load_options: Incomplete | None = None, + refresh_state: Incomplete | None = None, + with_for_update: Incomplete | None = None, + only_load_props: Incomplete | None = None, + identity_token: Incomplete | None = None, + no_autoflush: bool = False, bind_arguments=..., execution_options=..., ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi index 999ad8981..816e98eb1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi @@ -46,33 +46,33 @@ class Mapper(ORMFromClauseRole, ORMEntityColumnsClauseRole, sql_base.MemoizedHas def __init__( self, class_, - local_table: Incomplete | None = ..., - properties: Incomplete | None = ..., - primary_key: Incomplete | None = ..., - non_primary: bool = ..., - inherits: Incomplete | None = ..., - inherit_condition: Incomplete | None = ..., - inherit_foreign_keys: Incomplete | None = ..., - always_refresh: bool = ..., - version_id_col: Incomplete | None = ..., - version_id_generator: Incomplete | None = ..., - polymorphic_on: Incomplete | None = ..., - _polymorphic_map: Incomplete | None = ..., - polymorphic_identity: Incomplete | None = ..., - concrete: bool = ..., - with_polymorphic: Incomplete | None = ..., - polymorphic_load: Incomplete | None = ..., - allow_partial_pks: bool = ..., - batch: bool = ..., - column_prefix: Incomplete | None = ..., - include_properties: Incomplete | None = ..., - exclude_properties: Incomplete | None = ..., - passive_updates: bool = ..., - passive_deletes: bool = ..., - confirm_deleted_rows: bool = ..., - eager_defaults: bool = ..., - legacy_is_orphan: bool = ..., - _compiled_cache_size: int = ..., + local_table: Incomplete | None = None, + properties: Incomplete | None = None, + primary_key: Incomplete | None = None, + non_primary: bool = False, + inherits: Incomplete | None = None, + inherit_condition: Incomplete | None = None, + inherit_foreign_keys: Incomplete | None = None, + always_refresh: bool = False, + version_id_col: Incomplete | None = None, + version_id_generator: Incomplete | None = None, + polymorphic_on: Incomplete | None = None, + _polymorphic_map: Incomplete | None = None, + polymorphic_identity: Incomplete | None = None, + concrete: bool = False, + with_polymorphic: Incomplete | None = None, + polymorphic_load: Incomplete | None = None, + allow_partial_pks: bool = True, + batch: bool = True, + column_prefix: Incomplete | None = None, + include_properties: Incomplete | None = None, + exclude_properties: Incomplete | None = None, + passive_updates: bool = True, + passive_deletes: bool = False, + confirm_deleted_rows: bool = True, + eager_defaults: bool = False, + legacy_is_orphan: bool = False, + _compiled_cache_size: int = 100, ): ... is_mapper: bool represents_outer_join: bool @@ -92,7 +92,7 @@ class Mapper(ORMFromClauseRole, ORMEntityColumnsClauseRole, sql_base.MemoizedHas def add_properties(self, dict_of_properties) -> None: ... def add_property(self, key, prop) -> None: ... def has_property(self, key): ... - def get_property(self, key, _configure_mappers: bool = ...): ... + def get_property(self, key, _configure_mappers: bool = True): ... def get_property_by_column(self, column): ... @property def iterate_properties(self): ... @@ -126,11 +126,11 @@ class Mapper(ORMFromClauseRole, ORMEntityColumnsClauseRole, sql_base.MemoizedHas def primary_mapper(self): ... @property def primary_base_mapper(self): ... - def identity_key_from_row(self, row, identity_token: Incomplete | None = ..., adapter: Incomplete | None = ...): ... - def identity_key_from_primary_key(self, primary_key, identity_token: Incomplete | None = ...): ... + def identity_key_from_row(self, row, identity_token: Incomplete | None = None, adapter: Incomplete | None = None): ... + def identity_key_from_primary_key(self, primary_key, identity_token: Incomplete | None = None): ... def identity_key_from_instance(self, instance): ... def primary_key_from_instance(self, instance): ... - def cascade_iterator(self, type_, state, halt_on: Incomplete | None = ...) -> None: ... + def cascade_iterator(self, type_, state, halt_on: Incomplete | None = None) -> None: ... class _OptGetColumnsNotAvailable(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi index 9da5d3161..8b7e23033 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi @@ -15,7 +15,7 @@ class PathRegistry(HasCacheKey): def __ne__(self, other): ... def set(self, attributes, key, value) -> None: ... def setdefault(self, attributes, key, value) -> None: ... - def get(self, attributes, key, value: Incomplete | None = ...): ... + def get(self, attributes, key, value: Incomplete | None = None): ... def __len__(self) -> int: ... def __hash__(self) -> int: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi index 8d5d721e7..f6bef4909 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi @@ -3,7 +3,7 @@ from typing import Any from ..sql.base import CompileState, Options from ..sql.dml import DeleteDMLState, UpdateDMLState -def save_obj(base_mapper, states, uowtransaction, single: bool = ...) -> None: ... +def save_obj(base_mapper, states, uowtransaction, single: bool = False) -> None: ... def post_update(base_mapper, states, uowtransaction, post_update_cols) -> None: ... def delete_obj(base_mapper, states, uowtransaction) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi index ab769f034..30fd70110 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi @@ -19,11 +19,11 @@ class Query(_SelectFromElements, SupportsCloneAnnotations, HasPrefixes, HasSuffi logger: Any load_options: Any session: Any - def __init__(self, entities, session: Incomplete | None = ...) -> None: ... + def __init__(self, entities, session: Incomplete | None = None) -> None: ... @property def statement(self): ... - def subquery(self, name: str | None = ..., with_labels: bool = ..., reduce_columns: bool = ...): ... - def cte(self, name: Incomplete | None = ..., recursive: bool = ..., nesting: bool = ...): ... + def subquery(self, name: str | None = None, with_labels: bool = False, reduce_columns: bool = False): ... + def cte(self, name: Incomplete | None = None, recursive: bool = False, nesting: bool = False): ... def label(self, name): ... def as_scalar(self): ... def scalar_subquery(self): ... @@ -43,7 +43,7 @@ class Query(_SelectFromElements, SupportsCloneAnnotations, HasPrefixes, HasSuffi @property def whereclause(self): ... def with_polymorphic( - self, cls_or_mappers, selectable: Incomplete | None = ..., polymorphic_on: Incomplete | None = ... + self, cls_or_mappers, selectable: Incomplete | None = None, polymorphic_on: Incomplete | None = None ) -> Self: ... def yield_per(self, count) -> Self: ... def get(self, ident): ... @@ -52,8 +52,8 @@ class Query(_SelectFromElements, SupportsCloneAnnotations, HasPrefixes, HasSuffi def correlate(self, *fromclauses) -> Self: ... def autoflush(self, setting) -> Self: ... def populate_existing(self) -> Self: ... - def with_parent(self, instance, property: Incomplete | None = ..., from_entity: Incomplete | None = ...): ... - def add_entity(self, entity, alias: Incomplete | None = ...) -> Self: ... + def with_parent(self, instance, property: Incomplete | None = None, from_entity: Incomplete | None = None): ... + def add_entity(self, entity, alias: Incomplete | None = None) -> Self: ... def with_session(self, session) -> Self: ... def from_self(self, *entities): ... def values(self, *columns): ... @@ -66,7 +66,12 @@ class Query(_SelectFromElements, SupportsCloneAnnotations, HasPrefixes, HasSuffi def get_execution_options(self): ... def execution_options(self, **kwargs) -> Self: ... def with_for_update( - self, read: bool = ..., nowait: bool = ..., of: Incomplete | None = ..., skip_locked: bool = ..., key_share: bool = ... + self, + read: bool = False, + nowait: bool = False, + of: Incomplete | None = None, + skip_locked: bool = False, + key_share: bool = False, ) -> Self: ... def params(self, *args, **kwargs) -> Self: ... def where(self, *criterion): ... @@ -100,12 +105,14 @@ class Query(_SelectFromElements, SupportsCloneAnnotations, HasPrefixes, HasSuffi def __iter__(self) -> Iterator[_T]: ... @property def column_descriptions(self): ... - def instances(self, result_proxy, context: Incomplete | None = ...): ... - def merge_result(self, iterator, load: bool = ...): ... + def instances(self, result_proxy, context: Incomplete | None = None): ... + def merge_result(self, iterator, load: bool = True): ... def exists(self): ... def count(self) -> int: ... - def delete(self, synchronize_session: _SynchronizeSessionArgument = ...) -> int: ... - def update(self, values, synchronize_session: _SynchronizeSessionArgument = ..., update_args: Incomplete | None = ...): ... + def delete(self, synchronize_session: _SynchronizeSessionArgument = "evaluate") -> int: ... + def update( + self, values, synchronize_session: _SynchronizeSessionArgument = "evaluate", update_args: Incomplete | None = None + ): ... class FromStatement(GroupedElement, SelectBase, Executable): __visit_name__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi index e7382a512..cac546132 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi @@ -51,40 +51,40 @@ class RelationshipProperty(StrategizedProperty): def __init__( self, argument, - secondary: Incomplete | None = ..., - primaryjoin: Incomplete | None = ..., - secondaryjoin: Incomplete | None = ..., - foreign_keys: Incomplete | None = ..., - uselist: Incomplete | None = ..., - order_by: bool = ..., - backref: Incomplete | None = ..., - back_populates: Incomplete | None = ..., - overlaps: Incomplete | None = ..., - post_update: bool = ..., - cascade: bool = ..., - viewonly: bool = ..., - lazy: str = ..., - collection_class: Incomplete | None = ..., - passive_deletes=..., - passive_updates=..., - remote_side: Incomplete | None = ..., - enable_typechecks=..., - join_depth: Incomplete | None = ..., - comparator_factory: Incomplete | None = ..., - single_parent: bool = ..., - innerjoin: bool = ..., - distinct_target_key: Incomplete | None = ..., - doc: Incomplete | None = ..., - active_history=..., - cascade_backrefs=..., - load_on_pending: bool = ..., - bake_queries: bool = ..., - _local_remote_pairs: Incomplete | None = ..., - query_class: Incomplete | None = ..., - info: Incomplete | None = ..., - omit_join: Incomplete | None = ..., - sync_backref: Incomplete | None = ..., - _legacy_inactive_history_style: bool = ..., + secondary: Incomplete | None = None, + primaryjoin: Incomplete | None = None, + secondaryjoin: Incomplete | None = None, + foreign_keys: Incomplete | None = None, + uselist: Incomplete | None = None, + order_by: bool = False, + backref: Incomplete | None = None, + back_populates: Incomplete | None = None, + overlaps: Incomplete | None = None, + post_update: bool = False, + cascade: bool = False, + viewonly: bool = False, + lazy: str = "select", + collection_class: Incomplete | None = None, + passive_deletes=False, + passive_updates=True, + remote_side: Incomplete | None = None, + enable_typechecks=True, + join_depth: Incomplete | None = None, + comparator_factory: Incomplete | None = None, + single_parent: bool = False, + innerjoin: bool = False, + distinct_target_key: Incomplete | None = None, + doc: Incomplete | None = None, + active_history=False, + cascade_backrefs=True, + load_on_pending: bool = False, + bake_queries: bool = True, + _local_remote_pairs: Incomplete | None = None, + query_class: Incomplete | None = None, + info: Incomplete | None = None, + omit_join: Incomplete | None = None, + sync_backref: Incomplete | None = None, + _legacy_inactive_history_style: bool = False, ) -> None: ... def instrument_class(self, mapper) -> None: ... @@ -94,9 +94,9 @@ class RelationshipProperty(StrategizedProperty): self, prop, parentmapper, - adapt_to_entity: Incomplete | None = ..., - of_type: Incomplete | None = ..., - extra_criteria=..., + adapt_to_entity: Incomplete | None = None, + of_type: Incomplete | None = None, + extra_criteria=(), ) -> None: ... def adapt_to_entity(self, adapt_to_entity): ... @memoized_property @@ -109,8 +109,8 @@ class RelationshipProperty(StrategizedProperty): def in_(self, other) -> ColumnOperators[_T]: ... __hash__: ClassVar[None] # type: ignore[assignment] def __eq__(self, other): ... - def any(self, criterion: Incomplete | None = ..., **kwargs): ... - def has(self, criterion: Incomplete | None = ..., **kwargs): ... + def any(self, criterion: Incomplete | None = None, **kwargs): ... + def has(self, criterion: Incomplete | None = None, **kwargs): ... def contains(self, other, **kwargs) -> ColumnOperators[_T]: ... def __ne__(self, other) -> ColumnOperators[_T]: ... # type: ignore[override] @memoized_property @@ -119,7 +119,7 @@ class RelationshipProperty(StrategizedProperty): def merge( self, session, source_state, source_dict, dest_state, dest_dict, load, _recursive, _resolve_conflict_map ) -> None: ... - def cascade_iterator(self, type_, state, dict_, visited_states, halt_on: Incomplete | None = ...) -> None: ... + def cascade_iterator(self, type_, state, dict_, visited_states, halt_on: Incomplete | None = None) -> None: ... @memoized_property def entity(self): ... @memoized_property @@ -151,17 +151,17 @@ class JoinCondition: child_persist_selectable, parent_local_selectable, child_local_selectable, - primaryjoin: Incomplete | None = ..., - secondary: Incomplete | None = ..., - secondaryjoin: Incomplete | None = ..., - parent_equivalents: Incomplete | None = ..., - child_equivalents: Incomplete | None = ..., - consider_as_foreign_keys: Incomplete | None = ..., - local_remote_pairs: Incomplete | None = ..., - remote_side: Incomplete | None = ..., - self_referential: bool = ..., - prop: Incomplete | None = ..., - support_sync: bool = ..., + primaryjoin: Incomplete | None = None, + secondary: Incomplete | None = None, + secondaryjoin: Incomplete | None = None, + parent_equivalents: Incomplete | None = None, + child_equivalents: Incomplete | None = None, + consider_as_foreign_keys: Incomplete | None = None, + local_remote_pairs: Incomplete | None = None, + remote_side: Incomplete | None = None, + self_referential: bool = False, + prop: Incomplete | None = None, + support_sync: bool = True, can_be_synced_fn=..., ): ... @property @@ -177,9 +177,9 @@ class JoinCondition: @memoized_property def foreign_key_columns(self): ... def join_targets( - self, source_selectable, dest_selectable, aliased, single_crit: Incomplete | None = ..., extra_criteria=... + self, source_selectable, dest_selectable, aliased, single_crit: Incomplete | None = None, extra_criteria=() ): ... - def create_lazy_clause(self, reverse_direction: bool = ...): ... + def create_lazy_clause(self, reverse_direction: bool = False): ... class _ColInAnnotations: name: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi index 0731e4616..4f007eae9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi @@ -10,9 +10,9 @@ class ScopedSessionMixin: class scoped_session(ScopedSessionMixin): session_factory: Any registry: Any - def __init__(self, session_factory, scopefunc: Incomplete | None = ...) -> None: ... + def __init__(self, session_factory, scopefunc: Incomplete | None = None) -> None: ... def remove(self) -> None: ... - def query_property(self, query_cls: Incomplete | None = ...): ... + def query_property(self, query_cls: Incomplete | None = None): ... # dynamically proxied from class Session bind: Any identity_map: Any @@ -38,68 +38,68 @@ class scoped_session(ScopedSessionMixin): def object_session(cls, instance): ... def __contains__(self, instance): ... def __iter__(self): ... - def add(self, instance, _warn: bool = ...) -> None: ... + def add(self, instance, _warn: bool = True) -> None: ... def add_all(self, instances) -> None: ... - def begin(self, subtransactions: bool = ..., nested: bool = ..., _subtrans: bool = ...): ... + def begin(self, subtransactions: bool = False, nested: bool = False, _subtrans: bool = False): ... def begin_nested(self): ... def close(self) -> None: ... def commit(self) -> None: ... def connection( self, - bind_arguments: Incomplete | None = ..., - close_with_result: bool = ..., - execution_options: Incomplete | None = ..., + bind_arguments: Incomplete | None = None, + close_with_result: bool = False, + execution_options: Incomplete | None = None, **kw, ): ... def delete(self, instance) -> None: ... def execute( self, statement, - params: Incomplete | None = ..., + params: Incomplete | None = None, execution_options=..., - bind_arguments: Incomplete | None = ..., - _parent_execute_state: Incomplete | None = ..., - _add_event: Incomplete | None = ..., + bind_arguments: Incomplete | None = None, + _parent_execute_state: Incomplete | None = None, + _add_event: Incomplete | None = None, **kw, ): ... - def expire(self, instance, attribute_names: Incomplete | None = ...) -> None: ... + def expire(self, instance, attribute_names: Incomplete | None = None) -> None: ... def expire_all(self) -> None: ... def expunge(self, instance) -> None: ... def expunge_all(self) -> None: ... - def flush(self, objects: Incomplete | None = ...) -> None: ... + def flush(self, objects: Incomplete | None = None) -> None: ... def get( self, entity, ident, - options: Incomplete | None = ..., - populate_existing: bool = ..., - with_for_update: Incomplete | None = ..., - identity_token: Incomplete | None = ..., - execution_options: Incomplete | None = ..., + options: Incomplete | None = None, + populate_existing: bool = False, + with_for_update: Incomplete | None = None, + identity_token: Incomplete | None = None, + execution_options: Incomplete | None = None, ): ... def get_bind( self, - mapper: Incomplete | None = ..., - clause: Incomplete | None = ..., - bind: Incomplete | None = ..., - _sa_skip_events: Incomplete | None = ..., - _sa_skip_for_implicit_returning: bool = ..., + mapper: Incomplete | None = None, + clause: Incomplete | None = None, + bind: Incomplete | None = None, + _sa_skip_events: Incomplete | None = None, + _sa_skip_for_implicit_returning: bool = False, ): ... - def is_modified(self, instance, include_collections: bool = ...): ... + def is_modified(self, instance, include_collections: bool = True): ... def bulk_save_objects( - self, objects, return_defaults: bool = ..., update_changed_only: bool = ..., preserve_order: bool = ... + self, objects, return_defaults: bool = False, update_changed_only: bool = True, preserve_order: bool = True ): ... - def bulk_insert_mappings(self, mapper, mappings, return_defaults: bool = ..., render_nulls: bool = ...) -> None: ... + def bulk_insert_mappings(self, mapper, mappings, return_defaults: bool = False, render_nulls: bool = False) -> None: ... def bulk_update_mappings(self, mapper, mappings) -> None: ... - def merge(self, instance, load: bool = ..., options: Incomplete | None = ...): ... + def merge(self, instance, load: bool = True, options: Incomplete | None = None): ... def query(self, *entities, **kwargs): ... - def refresh(self, instance, attribute_names: Incomplete | None = ..., with_for_update: Incomplete | None = ...) -> None: ... + def refresh(self, instance, attribute_names: Incomplete | None = None, with_for_update: Incomplete | None = None) -> None: ... def rollback(self) -> None: ... def scalar( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... def scalars( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... ScopedSession = scoped_session diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi index 9f60a2669..91ef8ebe2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi @@ -34,10 +34,10 @@ class ORMExecuteState(MemoizedSlots): ) -> None: ... def invoke_statement( self, - statement: Incomplete | None = ..., - params: Incomplete | None = ..., - execution_options: Incomplete | None = ..., - bind_arguments: Incomplete | None = ..., + statement: Incomplete | None = None, + params: Incomplete | None = None, + execution_options: Incomplete | None = None, + bind_arguments: Incomplete | None = None, ): ... @property def bind_mapper(self): ... @@ -72,16 +72,16 @@ class ORMExecuteState(MemoizedSlots): class SessionTransaction(TransactionalContext): session: Any nested: Any - def __init__(self, session, parent: Incomplete | None = ..., nested: bool = ..., autobegin: bool = ...) -> None: ... + def __init__(self, session, parent: Incomplete | None = None, nested: bool = False, autobegin: bool = False) -> None: ... @property def parent(self): ... @property def is_active(self): ... - def connection(self, bindkey, execution_options: Incomplete | None = ..., **kwargs): ... + def connection(self, bindkey, execution_options: Incomplete | None = None, **kwargs): ... def prepare(self) -> None: ... - def commit(self, _to_root: bool = ...): ... - def rollback(self, _capture_exception: bool = ..., _to_root: bool = ...): ... - def close(self, invalidate: bool = ...) -> None: ... + def commit(self, _to_root: bool = False): ... + def rollback(self, _capture_exception: bool = False, _to_root: bool = False): ... + def close(self, invalidate: bool = False) -> None: ... class Session(_SessionClassMethods): identity_map: Any @@ -95,16 +95,16 @@ class Session(_SessionClassMethods): twophase: Any def __init__( self, - bind: Incomplete | None = ..., - autoflush: bool = ..., - future: bool = ..., - expire_on_commit: bool = ..., - autocommit: bool = ..., - twophase: bool = ..., - binds: Incomplete | None = ..., - enable_baked_queries: bool = ..., - info: Incomplete | None = ..., - query_cls: Incomplete | None = ..., + bind: Incomplete | None = None, + autoflush: bool = True, + future: bool = False, + expire_on_commit: bool = True, + autocommit: bool = False, + twophase: bool = False, + binds: Incomplete | None = None, + enable_baked_queries: bool = True, + info: Incomplete | None = None, + query_cls: Incomplete | None = None, ) -> None: ... connection_callable: Any def __enter__(self) -> Self: ... @@ -119,7 +119,7 @@ class Session(_SessionClassMethods): def get_nested_transaction(self): ... @memoized_property def info(self): ... - def begin(self, subtransactions: bool = ..., nested: bool = ..., _subtrans: bool = ...): ... + def begin(self, subtransactions: bool = False, nested: bool = False, _subtrans: bool = False): ... def begin_nested(self): ... def rollback(self) -> None: ... def commit(self) -> None: ... @@ -127,26 +127,26 @@ class Session(_SessionClassMethods): # TODO: bind_arguments could use a TypedDict def connection( self, - bind_arguments: Mapping[str, Any] | None = ..., - close_with_result: bool = ..., - execution_options: Mapping[str, Any] | None = ..., + bind_arguments: Mapping[str, Any] | None = None, + close_with_result: bool = False, + execution_options: Mapping[str, Any] | None = None, **kw: Any, ) -> Connection: ... def execute( self, statement, - params: Incomplete | None = ..., + params: Incomplete | None = None, execution_options=..., - bind_arguments: Incomplete | None = ..., - _parent_execute_state: Incomplete | None = ..., - _add_event: Incomplete | None = ..., + bind_arguments: Incomplete | None = None, + _parent_execute_state: Incomplete | None = None, + _add_event: Incomplete | None = None, **kw, ) -> Result: ... def scalar( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... def scalars( - self, statement, params: Incomplete | None = ..., execution_options=..., bind_arguments: Incomplete | None = ..., **kw + self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw ): ... def close(self) -> None: ... def invalidate(self) -> None: ... @@ -155,11 +155,11 @@ class Session(_SessionClassMethods): def bind_table(self, table, bind) -> None: ... def get_bind( self, - mapper: Incomplete | None = ..., - clause: Incomplete | None = ..., - bind: Incomplete | None = ..., - _sa_skip_events: Incomplete | None = ..., - _sa_skip_for_implicit_returning: bool = ..., + mapper: Incomplete | None = None, + clause: Incomplete | None = None, + bind: Incomplete | None = None, + _sa_skip_events: Incomplete | None = None, + _sa_skip_for_implicit_returning: bool = False, ): ... @overload def query(self, entities: Table, **kwargs: Any) -> Query[Any]: ... @@ -171,34 +171,34 @@ class Session(_SessionClassMethods): def query(self, *entities: type[_T], **kwargs: Any) -> Query[_T]: ... @property def no_autoflush(self) -> None: ... - def refresh(self, instance, attribute_names: Incomplete | None = ..., with_for_update: Incomplete | None = ...) -> None: ... + def refresh(self, instance, attribute_names: Incomplete | None = None, with_for_update: Incomplete | None = None) -> None: ... def expire_all(self) -> None: ... - def expire(self, instance, attribute_names: Incomplete | None = ...) -> None: ... + def expire(self, instance, attribute_names: Incomplete | None = None) -> None: ... def expunge(self, instance) -> None: ... - def add(self, instance, _warn: bool = ...) -> None: ... + def add(self, instance, _warn: bool = True) -> None: ... def add_all(self, instances) -> None: ... def delete(self, instance) -> None: ... def get( self, entity, ident, - options: Incomplete | None = ..., - populate_existing: bool = ..., - with_for_update: Incomplete | None = ..., - identity_token: Incomplete | None = ..., - execution_options: Incomplete | None = ..., + options: Incomplete | None = None, + populate_existing: bool = False, + with_for_update: Incomplete | None = None, + identity_token: Incomplete | None = None, + execution_options: Incomplete | None = None, ): ... - def merge(self, instance, load: bool = ..., options: Incomplete | None = ...): ... + def merge(self, instance, load: bool = True, options: Incomplete | None = None): ... def enable_relationship_loading(self, obj) -> None: ... def __contains__(self, instance): ... def __iter__(self): ... - def flush(self, objects: Incomplete | None = ...) -> None: ... + def flush(self, objects: Incomplete | None = None) -> None: ... def bulk_save_objects( - self, objects, return_defaults: bool = ..., update_changed_only: bool = ..., preserve_order: bool = ... + self, objects, return_defaults: bool = False, update_changed_only: bool = True, preserve_order: bool = True ): ... - def bulk_insert_mappings(self, mapper, mappings, return_defaults: bool = ..., render_nulls: bool = ...) -> None: ... + def bulk_insert_mappings(self, mapper, mappings, return_defaults: bool = False, render_nulls: bool = False) -> None: ... def bulk_update_mappings(self, mapper, mappings) -> None: ... - def is_modified(self, instance, include_collections: bool = ...): ... + def is_modified(self, instance, include_collections: bool = True): ... @property def is_active(self): ... @property @@ -213,12 +213,12 @@ class sessionmaker(_SessionClassMethods): class_: Any def __init__( self, - bind: Incomplete | None = ..., + bind: Incomplete | None = None, class_=..., - autoflush: bool = ..., - autocommit: bool = ..., - expire_on_commit: bool = ..., - info: Incomplete | None = ..., + autoflush: bool = True, + autocommit: bool = False, + expire_on_commit: bool = True, + info: Incomplete | None = None, **kw, ) -> None: ... def begin(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategies.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategies.pyi index f4b950814..7ca4a1c2d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategies.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategies.pyi @@ -8,7 +8,7 @@ class UninstrumentedColumnLoader(LoaderStrategy): columns: Any def __init__(self, parent, strategy_key) -> None: ... def setup_query( - self, compile_state, query_entity, path, loadopt, adapter, column_collection: Incomplete | None = ..., **kwargs + self, compile_state, query_entity, path, loadopt, adapter, column_collection: Incomplete | None = None, **kwargs ) -> None: ... def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... @@ -17,7 +17,7 @@ class ColumnLoader(LoaderStrategy): columns: Any is_composite: Any def __init__(self, parent, strategy_key) -> None: ... - def setup_query(self, compile_state, query_entity, path, loadopt, adapter, column_collection, memoized_populators, check_for_adapt: bool = ..., **kwargs) -> None: ... # type: ignore[override] + def setup_query(self, compile_state, query_entity, path, loadopt, adapter, column_collection, memoized_populators, check_for_adapt: bool = False, **kwargs) -> None: ... # type: ignore[override] is_class_level: bool def init_class_attribute(self, mapper) -> None: ... def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... @@ -39,12 +39,12 @@ class DeferredColumnLoader(LoaderStrategy): def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... is_class_level: bool def init_class_attribute(self, mapper) -> None: ... - def setup_query(self, compile_state, query_entity, path, loadopt, adapter, column_collection, memoized_populators, only_load_props: Incomplete | None = ..., **kw) -> None: ... # type: ignore[override] + def setup_query(self, compile_state, query_entity, path, loadopt, adapter, column_collection, memoized_populators, only_load_props: Incomplete | None = None, **kw) -> None: ... # type: ignore[override] class LoadDeferredColumns: key: Any raiseload: Any - def __init__(self, key, raiseload: bool = ...) -> None: ... + def __init__(self, key, raiseload: bool = False) -> None: ... def __call__(self, state, passive=...): ... class AbstractRelationshipLoader(LoaderStrategy): @@ -116,9 +116,9 @@ class JoinedLoader(AbstractRelationshipLoader): path, loadopt, adapter, - column_collection: Incomplete | None = ..., - parentmapper: Incomplete | None = ..., - chained_from_outerjoin: bool = ..., + column_collection: Incomplete | None = None, + parentmapper: Incomplete | None = None, + chained_from_outerjoin: bool = False, **kwargs, ) -> None: ... def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi index 5422cfffb..7147a204f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi @@ -18,22 +18,22 @@ class Load(Generative, LoaderOption): def process_compile_state_replaced_entities(self, compile_state, mapper_entities) -> None: ... def process_compile_state(self, compile_state) -> None: ... def options(self, *opts) -> None: ... - def set_relationship_strategy(self, attr, strategy, propagate_to_loaders: bool = ...) -> None: ... - def set_column_strategy(self, attrs, strategy, opts: Incomplete | None = ..., opts_only: bool = ...) -> None: ... + def set_relationship_strategy(self, attr, strategy, propagate_to_loaders: bool = True) -> None: ... + def set_column_strategy(self, attrs, strategy, opts: Incomplete | None = None, opts_only: bool = False) -> None: ... def set_generic_strategy(self, attrs, strategy) -> None: ... def set_class_strategy(self, strategy, opts) -> None: ... # added dynamically at runtime - def contains_eager(self, attr, alias: Incomplete | None = ...): ... + def contains_eager(self, attr, alias: Incomplete | None = None): ... def load_only(self, *attrs): ... - def joinedload(self, attr, innerjoin: Incomplete | None = ...): ... + def joinedload(self, attr, innerjoin: Incomplete | None = None): ... def subqueryload(self, attr): ... def selectinload(self, attr): ... def lazyload(self, attr): ... def immediateload(self, attr): ... def noload(self, attr): ... - def raiseload(self, attr, sql_only: bool = ...): ... + def raiseload(self, attr, sql_only: bool = False): ... def defaultload(self, attr): ... - def defer(self, key, raiseload: bool = ...): ... + def defer(self, key, raiseload: bool = False): ... def undefer(self, key): ... def undefer_group(self, name): ... def with_expression(self, key, expression): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/unitofwork.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/unitofwork.pyi index 20de2df97..26b13e383 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/unitofwork.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/unitofwork.pyi @@ -26,11 +26,11 @@ class UOWTransaction: def register_object( self, state, - isdelete: bool = ..., - listonly: bool = ..., - cancel_delete: bool = ..., - operation: Incomplete | None = ..., - prop: Incomplete | None = ..., + isdelete: bool = False, + listonly: bool = False, + cancel_delete: bool = False, + operation: Incomplete | None = None, + prop: Incomplete | None = None, ): ... def register_post_update(self, state, post_update_cols) -> None: ... def filter_states_for_dep(self, dep, states): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/util.pyi index b7c6fd4f7..cb7e9f809 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/util.pyi @@ -32,7 +32,7 @@ class CascadeOptions(frozenset[Any]): @classmethod def from_string(cls, arg): ... -def polymorphic_union(table_map, typecolname, aliasname: str = ..., cast_nulls: bool = ...): ... +def polymorphic_union(table_map, typecolname, aliasname: str = "p_union", cast_nulls: bool = True): ... def identity_key(*args, **kwargs): ... class ORMAdapter(sql_util.ColumnAdapter): @@ -41,10 +41,10 @@ class ORMAdapter(sql_util.ColumnAdapter): def __init__( self, entity, - equivalents: Incomplete | None = ..., - adapt_required: bool = ..., - allow_label_resolve: bool = ..., - anonymize_labels: bool = ..., + equivalents: Incomplete | None = None, + adapt_required: bool = False, + allow_label_resolve: bool = True, + anonymize_labels: bool = False, ) -> None: ... class AliasedClass: @@ -52,15 +52,15 @@ class AliasedClass: def __init__( self, mapped_class_or_ac, - alias: Incomplete | None = ..., - name: Incomplete | None = ..., - flat: bool = ..., - adapt_on_names: bool = ..., - with_polymorphic_mappers=..., - with_polymorphic_discriminator: Incomplete | None = ..., - base_alias: Incomplete | None = ..., - use_mapper_path: bool = ..., - represents_outer_join: bool = ..., + alias: Incomplete | None = None, + name: Incomplete | None = None, + flat: bool = False, + adapt_on_names: bool = False, + with_polymorphic_mappers=(), + with_polymorphic_discriminator: Incomplete | None = None, + base_alias: Incomplete | None = None, + use_mapper_path: bool = False, + represents_outer_join: bool = False, ) -> None: ... def __getattr__(self, key: str): ... @@ -110,29 +110,29 @@ class LoaderCriteriaOption(CriteriaOption): self, entity_or_base, where_criteria, - loader_only: bool = ..., - include_aliases: bool = ..., - propagate_to_loaders: bool = ..., - track_closure_variables: bool = ..., + loader_only: bool = False, + include_aliases: bool = False, + propagate_to_loaders: bool = True, + track_closure_variables: bool = True, ) -> None: ... def process_compile_state_replaced_entities(self, compile_state, mapper_entities): ... def process_compile_state(self, compile_state) -> None: ... def get_global_criteria(self, attributes) -> None: ... def aliased( - element, alias: Incomplete | None = ..., name: Incomplete | None = ..., flat: bool = ..., adapt_on_names: bool = ... + element, alias: Incomplete | None = None, name: Incomplete | None = None, flat: bool = False, adapt_on_names: bool = False ): ... def with_polymorphic( base, classes, - selectable: bool = ..., - flat: bool = ..., - polymorphic_on: Incomplete | None = ..., - aliased: bool = ..., - adapt_on_names: bool = ..., - innerjoin: bool = ..., - _use_mapper_path: bool = ..., - _existing_alias: Incomplete | None = ..., + selectable: bool = False, + flat: bool = False, + polymorphic_on: Incomplete | None = None, + aliased: bool = False, + adapt_on_names: bool = False, + innerjoin: bool = False, + _use_mapper_path: bool = False, + _existing_alias: Incomplete | None = None, ) -> AliasedClass: ... class Bundle(ORMColumnsClauseRole, SupportsCloneAnnotations, sql_base.MemoizedHasCacheKey, InspectionAttr): @@ -166,28 +166,35 @@ class _ORMJoin(expression.Join): self, left, right, - onclause: Incomplete | None = ..., - isouter: bool = ..., - full: bool = ..., - _left_memo: Incomplete | None = ..., - _right_memo: Incomplete | None = ..., - _extra_criteria=..., + onclause: Incomplete | None = None, + isouter: bool = False, + full: bool = False, + _left_memo: Incomplete | None = None, + _right_memo: Incomplete | None = None, + _extra_criteria=(), ) -> None: ... def join( self, right, - onclause: Incomplete | None = ..., - isouter: bool = ..., - full: bool = ..., - join_to_left: Incomplete | None = ..., + onclause: Incomplete | None = None, + isouter: bool = False, + full: bool = False, + join_to_left: Incomplete | None = None, + ): ... + def outerjoin( + self, right, onclause: Incomplete | None = None, full: bool = False, join_to_left: Incomplete | None = None ): ... - def outerjoin(self, right, onclause: Incomplete | None = ..., full: bool = ..., join_to_left: Incomplete | None = ...): ... def join( - left, right, onclause: Incomplete | None = ..., isouter: bool = ..., full: bool = ..., join_to_left: Incomplete | None = ... + left, + right, + onclause: Incomplete | None = None, + isouter: bool = False, + full: bool = False, + join_to_left: Incomplete | None = None, ): ... -def outerjoin(left, right, onclause: Incomplete | None = ..., full: bool = ..., join_to_left: Incomplete | None = ...): ... -def with_parent(instance, prop, from_entity: Incomplete | None = ...): ... +def outerjoin(left, right, onclause: Incomplete | None = None, full: bool = False, join_to_left: Incomplete | None = None): ... +def with_parent(instance, prop, from_entity: Incomplete | None = None): ... def has_identity(object_): ... def was_deleted(object_): ... def randomize_unitofwork() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi index b169e6d8e..464a884c4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi @@ -25,14 +25,14 @@ class Pool(log.Identified): def __init__( self, creator, - recycle: int = ..., - echo: Incomplete | None = ..., - logging_name: Incomplete | None = ..., - reset_on_return: bool = ..., - events: Incomplete | None = ..., - dialect: Incomplete | None = ..., - pre_ping: bool = ..., - _dispatch: Incomplete | None = ..., + recycle: int = -1, + echo: Incomplete | None = None, + logging_name: Incomplete | None = None, + reset_on_return: bool = True, + events: Incomplete | None = None, + dialect: Incomplete | None = None, + pre_ping: bool = False, + _dispatch: Incomplete | None = None, ) -> None: ... def recreate(self) -> None: ... def dispose(self) -> None: ... @@ -41,7 +41,7 @@ class Pool(log.Identified): class _ConnectionRecord: finalize_callback: Any - def __init__(self, pool, connect: bool = ...) -> None: ... + def __init__(self, pool, connect: bool = True) -> None: ... fresh: bool fairy_ref: Any starttime: Any @@ -58,13 +58,13 @@ class _ConnectionRecord: def record_info(self): ... @classmethod def checkout(cls, pool): ... - def checkin(self, _fairy_was_created: bool = ...) -> None: ... + def checkin(self, _fairy_was_created: bool = True) -> None: ... @property def in_use(self): ... @property def last_connect_time(self): ... def close(self) -> None: ... - def invalidate(self, e: Incomplete | None = ..., soft: bool = ...) -> None: ... + def invalidate(self, e: Incomplete | None = None, soft: bool = False) -> None: ... def get_connection(self): ... class _ConnectionFairy: @@ -82,7 +82,7 @@ class _ConnectionFairy: def info(self): ... @property def record_info(self): ... - def invalidate(self, e: Incomplete | None = ..., soft: bool = ...) -> None: ... + def invalidate(self, e: Incomplete | None = None, soft: bool = False) -> None: ... def cursor(self, *args, **kwargs): ... def __getattr__(self, key: str): ... def detach(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi index 2646cafd5..88eb1fb2e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi @@ -5,7 +5,7 @@ from .base import Pool class QueuePool(Pool): def __init__( - self, creator, pool_size: int = ..., max_overflow: int = ..., timeout: float = ..., use_lifo: bool = ..., **kw + self, creator, pool_size: int = 5, max_overflow: int = 10, timeout: float = 30.0, use_lifo: bool = False, **kw ) -> None: ... def recreate(self): ... def dispose(self) -> None: ... @@ -26,7 +26,7 @@ class NullPool(Pool): class SingletonThreadPool(Pool): size: Any - def __init__(self, creator, pool_size: int = ..., **kw) -> None: ... + def __init__(self, creator, pool_size: int = 5, **kw) -> None: ... def recreate(self): ... def dispose(self) -> None: ... def status(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/processors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/processors.pyi index 2c74bf499..26ee40a7c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/processors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/processors.pyi @@ -2,6 +2,6 @@ from _typeshed import Incomplete def str_to_datetime_processor_factory(regexp, type_): ... def py_fallback(): ... -def to_unicode_processor_factory(encoding, errors: Incomplete | None = ...): ... -def to_conditional_unicode_processor_factory(encoding, errors: Incomplete | None = ...): ... +def to_unicode_processor_factory(encoding, errors: Incomplete | None = None): ... +def to_conditional_unicode_processor_factory(encoding, errors: Incomplete | None = None): ... def to_decimal_processor_factory(target_class, scale): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi index 885aac1d0..e2bd4daa9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi @@ -116,7 +116,7 @@ class SchemaVisitor(ClauseVisitor): __traverse_options__: Any class ColumnCollection: - def __init__(self, columns: Incomplete | None = ...) -> None: ... + def __init__(self, columns: Incomplete | None = None) -> None: ... def keys(self): ... def values(self): ... def items(self): ... @@ -128,7 +128,7 @@ class ColumnCollection: def __contains__(self, key): ... def compare(self, other): ... def __eq__(self, other): ... - def get(self, key, default: Incomplete | None = ...): ... + def get(self, key, default: Incomplete | None = None): ... def __setitem__(self, key, value) -> None: ... def __delitem__(self, key) -> None: ... def __setattr__(self, key: str, obj) -> None: ... @@ -136,13 +136,13 @@ class ColumnCollection: def remove(self, column) -> None: ... def update(self, iter_) -> None: ... __hash__: ClassVar[None] # type: ignore[assignment] - def add(self, column, key: Incomplete | None = ...) -> None: ... + def add(self, column, key: Incomplete | None = None) -> None: ... def contains_column(self, col): ... def as_immutable(self): ... - def corresponding_column(self, column, require_embedded: bool = ...): ... + def corresponding_column(self, column, require_embedded: bool = False): ... class DedupeColumnCollection(ColumnCollection): - def add(self, column, key: Incomplete | None = ...) -> None: ... + def add(self, column, key: Incomplete | None = None) -> None: ... def extend(self, iter_) -> None: ... def remove(self, column) -> None: ... def replace(self, column) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/coercions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/coercions.pyi index 034252252..605ed309a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/coercions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/coercions.pyi @@ -13,9 +13,9 @@ traversals: Any def expect( role, element, - apply_propagate_attrs: Incomplete | None = ..., - argname: Incomplete | None = ..., - post_inspect: bool = ..., + apply_propagate_attrs: Incomplete | None = None, + argname: Incomplete | None = None, + post_inspect: bool = False, **kw, ): ... def expect_as_key(role, element, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi index 44178d7f6..f33bda45a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi @@ -36,7 +36,7 @@ WARN_LINTING: Incomplete FROM_LINTING: Incomplete class FromLinter: - def lint(self, start: Incomplete | None = ...): ... + def lint(self, start: Incomplete | None = None): ... def warn(self) -> None: ... class Compiled: @@ -53,8 +53,8 @@ class Compiled: self, dialect, statement, - schema_translate_map: Incomplete | None = ..., - render_schema_translate: bool = ..., + schema_translate_map: Incomplete | None = None, + render_schema_translate: bool = False, compile_kwargs=..., ) -> None: ... def visit_unsupported_compilation(self, element, err) -> None: ... @@ -62,7 +62,7 @@ class Compiled: def sql_compiler(self) -> None: ... def process(self, obj, **kwargs): ... def construct_params( - self, params: Incomplete | None = ..., extracted_parameters: Incomplete | None = ..., escape_names: bool = ... + self, params: Incomplete | None = None, extracted_parameters: Incomplete | None = None, escape_names: bool = True ) -> None: ... @property def params(self): ... @@ -78,7 +78,7 @@ class _CompileLabel(elements.ColumnElement[Incomplete]): __visit_name__: str element: Incomplete name: Incomplete - def __init__(self, col, name, alt_names=...) -> None: ... + def __init__(self, col, name, alt_names=()) -> None: ... @property def proxy_set(self): ... @property @@ -123,9 +123,9 @@ class SQLCompiler(Compiled): self, dialect, statement, - cache_key: Incomplete | None = ..., - column_keys: Incomplete | None = ..., - for_executemany: bool = ..., + cache_key: Incomplete | None = None, + column_keys: Incomplete | None = None, + for_executemany: bool = False, linting=..., **kwargs, ) -> None: ... @@ -136,27 +136,27 @@ class SQLCompiler(Compiled): def is_subquery(self): ... @property def sql_compiler(self): ... - def construct_params(self, params: Incomplete | None = ..., _group_number: Incomplete | None = ..., _check: bool = ..., extracted_parameters: Incomplete | None = ..., escape_names: bool = ...): ... # type: ignore[override] + def construct_params(self, params: Incomplete | None = None, _group_number: Incomplete | None = None, _check: bool = True, extracted_parameters: Incomplete | None = None, escape_names: bool = True): ... # type: ignore[override] @property def params(self): ... def default_from(self): ... - def visit_grouping(self, grouping, asfrom: bool = ..., **kwargs): ... + def visit_grouping(self, grouping, asfrom: bool = False, **kwargs): ... def visit_select_statement_grouping(self, grouping, **kwargs): ... - def visit_label_reference(self, element, within_columns_clause: bool = ..., **kwargs): ... - def visit_textual_label_reference(self, element, within_columns_clause: bool = ..., **kwargs): ... + def visit_label_reference(self, element, within_columns_clause: bool = False, **kwargs): ... + def visit_textual_label_reference(self, element, within_columns_clause: bool = False, **kwargs): ... def visit_label( self, label, - add_to_result_map: Incomplete | None = ..., - within_label_clause: bool = ..., - within_columns_clause: bool = ..., - render_label_as_label: Incomplete | None = ..., - result_map_targets=..., + add_to_result_map: Incomplete | None = None, + within_label_clause: bool = False, + within_columns_clause: bool = False, + render_label_as_label: Incomplete | None = None, + result_map_targets=(), **kw, ): ... def visit_lambda_element(self, element, **kw): ... def visit_column( - self, column, add_to_result_map: Incomplete | None = ..., include_table: bool = ..., result_map_targets=..., **kwargs + self, column, add_to_result_map: Incomplete | None = None, include_table: bool = True, result_map_targets=(), **kwargs ): ... def visit_collation(self, element, **kw): ... def visit_fromclause(self, fromclause, **kwargs): ... @@ -164,8 +164,8 @@ class SQLCompiler(Compiled): def visit_typeclause(self, typeclause, **kw): ... def post_process_text(self, text): ... def escape_literal_column(self, text): ... - def visit_textclause(self, textclause, add_to_result_map: Incomplete | None = ..., **kw): ... - def visit_textual_select(self, taf, compound_index: Incomplete | None = ..., asfrom: bool = ..., **kw): ... + def visit_textclause(self, textclause, add_to_result_map: Incomplete | None = None, **kw): ... + def visit_textual_select(self, taf, compound_index: Incomplete | None = None, asfrom: bool = False, **kw): ... def visit_null(self, expr, **kw): ... def visit_true(self, expr, **kw): ... def visit_false(self, expr, **kw): ... @@ -179,13 +179,13 @@ class SQLCompiler(Compiled): def visit_funcfilter(self, funcfilter, **kwargs): ... def visit_extract(self, extract, **kwargs): ... def visit_scalar_function_column(self, element, **kw): ... - def visit_function(self, func, add_to_result_map: Incomplete | None = ..., **kwargs): ... + def visit_function(self, func, add_to_result_map: Incomplete | None = None, **kwargs): ... def visit_next_value_func(self, next_value, **kw): ... def visit_sequence(self, sequence, **kw) -> None: ... def function_argspec(self, func, **kwargs): ... compile_state: Incomplete - def visit_compound_select(self, cs, asfrom: bool = ..., compound_index: Incomplete | None = ..., **kwargs): ... - def visit_unary(self, unary, add_to_result_map: Incomplete | None = ..., result_map_targets=..., **kw): ... + def visit_compound_select(self, cs, asfrom: bool = False, compound_index: Incomplete | None = None, **kwargs): ... + def visit_unary(self, unary, add_to_result_map: Incomplete | None = None, result_map_targets=(), **kw): ... def visit_is_true_unary_operator(self, element, operator, **kw): ... def visit_is_false_unary_operator(self, element, operator, **kw): ... def visit_not_match_op_binary(self, binary, operator, **kw): ... @@ -195,10 +195,10 @@ class SQLCompiler(Compiled): def visit_binary( self, binary, - override_operator: Incomplete | None = ..., - eager_grouping: bool = ..., - from_linter: Incomplete | None = ..., - lateral_from_linter: Incomplete | None = ..., + override_operator: Incomplete | None = None, + eager_grouping: bool = False, + from_linter: Incomplete | None = None, + lateral_from_linter: Incomplete | None = None, **kw, ): ... def visit_function_as_comparison_op_binary(self, element, operator, **kw): ... @@ -224,24 +224,24 @@ class SQLCompiler(Compiled): def visit_bindparam( self, bindparam, - within_columns_clause: bool = ..., - literal_binds: bool = ..., - skip_bind_expression: bool = ..., - literal_execute: bool = ..., - render_postcompile: bool = ..., + within_columns_clause: bool = False, + literal_binds: bool = False, + skip_bind_expression: bool = False, + literal_execute: bool = False, + render_postcompile: bool = False, **kwargs, ): ... def render_literal_bindparam( - self, bindparam, render_literal_value=..., bind_expression_template: Incomplete | None = ..., **kw + self, bindparam, render_literal_value=..., bind_expression_template: Incomplete | None = None, **kw ): ... def render_literal_value(self, value, type_): ... def bindparam_string( self, name, - positional_names: Incomplete | None = ..., - post_compile: bool = ..., - expanding: bool = ..., - escaped_from: Incomplete | None = ..., + positional_names: Incomplete | None = None, + post_compile: bool = False, + expanding: bool = False, + escaped_from: Incomplete | None = None, **kw, ): ... execution_options: Incomplete @@ -249,11 +249,11 @@ class SQLCompiler(Compiled): def visit_cte( self, cte, - asfrom: bool = ..., - ashint: bool = ..., - fromhints: Incomplete | None = ..., - visiting_cte: Incomplete | None = ..., - from_linter: Incomplete | None = ..., + asfrom: bool = False, + ashint: bool = False, + fromhints: Incomplete | None = None, + visiting_cte: Incomplete | None = None, + from_linter: Incomplete | None = None, **kwargs, ): ... def visit_table_valued_alias(self, element, **kw): ... @@ -261,20 +261,20 @@ class SQLCompiler(Compiled): def visit_alias( self, alias, - asfrom: bool = ..., - ashint: bool = ..., - iscrud: bool = ..., - fromhints: Incomplete | None = ..., - subquery: bool = ..., - lateral: bool = ..., - enclosing_alias: Incomplete | None = ..., - from_linter: Incomplete | None = ..., + asfrom: bool = False, + ashint: bool = False, + iscrud: bool = False, + fromhints: Incomplete | None = None, + subquery: bool = False, + lateral: bool = False, + enclosing_alias: Incomplete | None = None, + from_linter: Incomplete | None = None, **kwargs, ): ... def visit_subquery(self, subquery, **kw): ... def visit_lateral(self, lateral_, **kw): ... - def visit_tablesample(self, tablesample, asfrom: bool = ..., **kw): ... - def visit_values(self, element, asfrom: bool = ..., from_linter: Incomplete | None = ..., **kw): ... + def visit_tablesample(self, tablesample, asfrom: bool = False, **kw): ... + def visit_values(self, element, asfrom: bool = False, from_linter: Incomplete | None = None, **kw): ... def get_render_as_alias_suffix(self, alias_name_text): ... def format_from_hint_text(self, sqltext, table, hint, iscrud): ... def get_select_hint_text(self, byfroms) -> None: ... @@ -285,13 +285,13 @@ class SQLCompiler(Compiled): def visit_select( self, select_stmt, - asfrom: bool = ..., - insert_into: bool = ..., - fromhints: Incomplete | None = ..., - compound_index: Incomplete | None = ..., - select_wraps_for: Incomplete | None = ..., - lateral: bool = ..., - from_linter: Incomplete | None = ..., + asfrom: bool = False, + insert_into: bool = False, + fromhints: Incomplete | None = None, + compound_index: Incomplete | None = None, + select_wraps_for: Incomplete | None = None, + lateral: bool = False, + from_linter: Incomplete | None = None, **kwargs, ): ... def get_cte_preamble(self, recursive): ... @@ -305,15 +305,15 @@ class SQLCompiler(Compiled): def visit_table( self, table, - asfrom: bool = ..., - iscrud: bool = ..., - ashint: bool = ..., - fromhints: Incomplete | None = ..., - use_schema: bool = ..., - from_linter: Incomplete | None = ..., + asfrom: bool = False, + iscrud: bool = False, + ashint: bool = False, + fromhints: Incomplete | None = None, + use_schema: bool = True, + from_linter: Incomplete | None = None, **kwargs, ): ... - def visit_join(self, join, asfrom: bool = ..., from_linter: Incomplete | None = ..., **kwargs): ... + def visit_join(self, join, asfrom: bool = False, from_linter: Incomplete | None = None, **kwargs): ... def visit_insert(self, insert_stmt, **kw): ... def update_limit_clause(self, update_stmt) -> None: ... def update_tables_clause(self, update_stmt, from_table, extra_froms, **kw): ... @@ -347,17 +347,17 @@ class DDLCompiler(Compiled): @memoized_property def type_compiler(self): ... def construct_params( - self, params: Incomplete | None = ..., extracted_parameters: Incomplete | None = ..., escape_names: bool = ... + self, params: Incomplete | None = None, extracted_parameters: Incomplete | None = None, escape_names: bool = True ) -> None: ... def visit_ddl(self, ddl, **kwargs): ... def visit_create_schema(self, create, **kw): ... def visit_drop_schema(self, drop, **kw): ... def visit_create_table(self, create, **kw): ... - def visit_create_column(self, create, first_pk: bool = ..., **kw): ... - def create_table_constraints(self, table, _include_foreign_key_constraints: Incomplete | None = ..., **kw): ... + def visit_create_column(self, create, first_pk: bool = False, **kw): ... + def create_table_constraints(self, table, _include_foreign_key_constraints: Incomplete | None = None, **kw): ... def visit_drop_table(self, drop, **kw): ... def visit_drop_view(self, drop, **kw): ... - def visit_create_index(self, create, include_schema: bool = ..., include_table_schema: bool = ..., **kw): ... + def visit_create_index(self, create, include_schema: bool = False, include_table_schema: bool = True, **kw): ... def visit_drop_index(self, drop, **kw): ... def visit_add_constraint(self, create, **kw): ... def visit_set_table_comment(self, create, **kw): ... @@ -365,7 +365,7 @@ class DDLCompiler(Compiled): def visit_set_column_comment(self, create, **kw): ... def visit_drop_column_comment(self, drop, **kw): ... def get_identity_options(self, identity_options): ... - def visit_create_sequence(self, create, prefix: Incomplete | None = ..., **kw): ... + def visit_create_sequence(self, create, prefix: Incomplete | None = None, **kw): ... def visit_drop_sequence(self, drop, **kw): ... def visit_drop_constraint(self, drop, **kw): ... def get_column_specification(self, column, **kwargs): ... @@ -449,36 +449,36 @@ class IdentifierPreparer: def __init__( self, dialect, - initial_quote: str = ..., - final_quote: Incomplete | None = ..., - escape_quote: str = ..., - quote_case_sensitive_collations: bool = ..., - omit_schema: bool = ..., + initial_quote: str = '"', + final_quote: Incomplete | None = None, + escape_quote: str = '"', + quote_case_sensitive_collations: bool = True, + omit_schema: bool = False, ) -> None: ... def validate_sql_phrase(self, element, reg): ... def quote_identifier(self, value): ... - def quote_schema(self, schema, force: Incomplete | None = ...): ... - def quote(self, ident, force: Incomplete | None = ...): ... + def quote_schema(self, schema, force: Incomplete | None = None): ... + def quote(self, ident, force: Incomplete | None = None): ... def format_collation(self, collation_name): ... - def format_sequence(self, sequence, use_schema: bool = ...): ... - def format_label(self, label, name: Incomplete | None = ...): ... - def format_alias(self, alias, name: Incomplete | None = ...): ... - def format_savepoint(self, savepoint, name: Incomplete | None = ...): ... - def format_constraint(self, constraint, _alembic_quote: bool = ...): ... - def truncate_and_render_index_name(self, name, _alembic_quote: bool = ...): ... - def truncate_and_render_constraint_name(self, name, _alembic_quote: bool = ...): ... + def format_sequence(self, sequence, use_schema: bool = True): ... + def format_label(self, label, name: Incomplete | None = None): ... + def format_alias(self, alias, name: Incomplete | None = None): ... + def format_savepoint(self, savepoint, name: Incomplete | None = None): ... + def format_constraint(self, constraint, _alembic_quote: bool = True): ... + def truncate_and_render_index_name(self, name, _alembic_quote: bool = True): ... + def truncate_and_render_constraint_name(self, name, _alembic_quote: bool = True): ... def format_index(self, index): ... - def format_table(self, table, use_schema: bool = ..., name: Incomplete | None = ...): ... + def format_table(self, table, use_schema: bool = True, name: Incomplete | None = None): ... def format_schema(self, name): ... - def format_label_name(self, name, anon_map: Incomplete | None = ...): ... + def format_label_name(self, name, anon_map: Incomplete | None = None): ... def format_column( self, column, - use_table: bool = ..., - name: Incomplete | None = ..., - table_name: Incomplete | None = ..., - use_schema: bool = ..., - anon_map: Incomplete | None = ..., + use_table: bool = False, + name: Incomplete | None = None, + table_name: Incomplete | None = None, + use_schema: bool = False, + anon_map: Incomplete | None = None, ): ... - def format_table_seq(self, table, use_schema: bool = ...): ... + def format_table_seq(self, table, use_schema: bool = True): ... def unformat_identifiers(self, identifiers): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi index 5d34ce026..4749fedd2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi @@ -12,11 +12,11 @@ class DDLElement(roles.DDLRole, Executable, _DDLCompiles): on: Any dialect: Any callable_: Any - def execute(self, bind: Incomplete | None = ..., target: Incomplete | None = ...): ... # type: ignore[override] + def execute(self, bind: Incomplete | None = None, target: Incomplete | None = None): ... # type: ignore[override] def against(self, target) -> None: ... state: Any def execute_if( - self, dialect: Incomplete | None = ..., callable_: Incomplete | None = ..., state: Incomplete | None = ... + self, dialect: Incomplete | None = None, callable_: Incomplete | None = None, state: Incomplete | None = None ) -> None: ... def __call__(self, target, bind, **kw): ... bind: Any @@ -25,7 +25,7 @@ class DDL(DDLElement): __visit_name__: str statement: Any context: Any - def __init__(self, statement, context: Incomplete | None = ..., bind: Incomplete | None = ...) -> None: ... + def __init__(self, statement, context: Incomplete | None = None, bind: Incomplete | None = None) -> None: ... class _CreateDropBase(DDLElement): element: Any @@ -35,10 +35,10 @@ class _CreateDropBase(DDLElement): def __init__( self, element, - bind: Incomplete | None = ..., - if_exists: bool = ..., - if_not_exists: bool = ..., - _legacy_bind: Incomplete | None = ..., + bind: Incomplete | None = None, + if_exists: bool = False, + if_not_exists: bool = False, + _legacy_bind: Incomplete | None = None, ) -> None: ... @property def stringify_dialect(self): ... @@ -46,13 +46,13 @@ class _CreateDropBase(DDLElement): class CreateSchema(_CreateDropBase): __visit_name__: str quote: Any - def __init__(self, name, quote: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, name, quote: Incomplete | None = None, **kw) -> None: ... class DropSchema(_CreateDropBase): __visit_name__: str quote: Any cascade: Any - def __init__(self, name, quote: Incomplete | None = ..., cascade: bool = ..., **kw) -> None: ... + def __init__(self, name, quote: Incomplete | None = None, cascade: bool = False, **kw) -> None: ... class CreateTable(_CreateDropBase): __visit_name__: str @@ -61,9 +61,9 @@ class CreateTable(_CreateDropBase): def __init__( self, element, - bind: Incomplete | None = ..., - include_foreign_key_constraints: Incomplete | None = ..., - if_not_exists: bool = ..., + bind: Incomplete | None = None, + include_foreign_key_constraints: Incomplete | None = None, + if_not_exists: bool = False, ) -> None: ... class _DropView(_CreateDropBase): @@ -76,7 +76,7 @@ class CreateColumn(_DDLCompiles): class DropTable(_CreateDropBase): __visit_name__: str - def __init__(self, element, bind: Incomplete | None = ..., if_exists: bool = ...) -> None: ... + def __init__(self, element, bind: Incomplete | None = None, if_exists: bool = False) -> None: ... class CreateSequence(_CreateDropBase): __visit_name__: str @@ -86,11 +86,11 @@ class DropSequence(_CreateDropBase): class CreateIndex(_CreateDropBase): __visit_name__: str - def __init__(self, element, bind: Incomplete | None = ..., if_not_exists: bool = ...) -> None: ... + def __init__(self, element, bind: Incomplete | None = None, if_not_exists: bool = False) -> None: ... class DropIndex(_CreateDropBase): __visit_name__: str - def __init__(self, element, bind: Incomplete | None = ..., if_exists: bool = ...) -> None: ... + def __init__(self, element, bind: Incomplete | None = None, if_exists: bool = False) -> None: ... class AddConstraint(_CreateDropBase): __visit_name__: str @@ -99,7 +99,7 @@ class AddConstraint(_CreateDropBase): class DropConstraint(_CreateDropBase): __visit_name__: str cascade: Any - def __init__(self, element, cascade: bool = ..., **kw) -> None: ... + def __init__(self, element, cascade: bool = False, **kw) -> None: ... class SetTableComment(_CreateDropBase): __visit_name__: str @@ -123,18 +123,18 @@ class SchemaGenerator(DDLBase): preparer: Any dialect: Any memo: Any - def __init__(self, dialect, connection, checkfirst: bool = ..., tables: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, dialect, connection, checkfirst: bool = False, tables: Incomplete | None = None, **kwargs) -> None: ... def visit_metadata(self, metadata) -> None: ... def visit_table( self, table, - create_ok: bool = ..., - include_foreign_key_constraints: Incomplete | None = ..., - _is_metadata_operation: bool = ..., + create_ok: bool = False, + include_foreign_key_constraints: Incomplete | None = None, + _is_metadata_operation: bool = False, ) -> None: ... def visit_foreign_key_constraint(self, constraint) -> None: ... - def visit_sequence(self, sequence, create_ok: bool = ...) -> None: ... - def visit_index(self, index, create_ok: bool = ...) -> None: ... + def visit_sequence(self, sequence, create_ok: bool = False) -> None: ... + def visit_index(self, index, create_ok: bool = False) -> None: ... class SchemaDropper(DDLBase): checkfirst: Any @@ -142,14 +142,14 @@ class SchemaDropper(DDLBase): preparer: Any dialect: Any memo: Any - def __init__(self, dialect, connection, checkfirst: bool = ..., tables: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, dialect, connection, checkfirst: bool = False, tables: Incomplete | None = None, **kwargs) -> None: ... def visit_metadata(self, metadata): ... - def visit_index(self, index, drop_ok: bool = ...) -> None: ... - def visit_table(self, table, drop_ok: bool = ..., _is_metadata_operation: bool = ..., _ignore_sequences=...) -> None: ... + def visit_index(self, index, drop_ok: bool = False) -> None: ... + def visit_table(self, table, drop_ok: bool = False, _is_metadata_operation: bool = False, _ignore_sequences=()) -> None: ... def visit_foreign_key_constraint(self, constraint) -> None: ... - def visit_sequence(self, sequence, drop_ok: bool = ...) -> None: ... + def visit_sequence(self, sequence, drop_ok: bool = False) -> None: ... -def sort_tables(tables, skip_fn: Incomplete | None = ..., extra_dependencies: Incomplete | None = ...): ... +def sort_tables(tables, skip_fn: Incomplete | None = None, extra_dependencies: Incomplete | None = None): ... def sort_tables_and_constraints( - tables, filter_fn: Incomplete | None = ..., extra_dependencies: Incomplete | None = ..., _warn_for_cycles: bool = ... + tables, filter_fn: Incomplete | None = None, extra_dependencies: Incomplete | None = None, _warn_for_cycles: bool = False ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi index 8dbc7c04b..891beefdf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi @@ -42,7 +42,7 @@ class UpdateBase(roles.DMLRole, HasCTE, HasCompileState, DialectKWArgs, HasPrefi def returning(self, *cols) -> None: ... @property def exported_columns(self): ... - def with_hint(self, text, selectable: Incomplete | None = ..., dialect_name: str = ...) -> None: ... + def with_hint(self, text, selectable: Incomplete | None = None, dialect_name: str = "*") -> None: ... class ValuesBase(UpdateBase): __visit_name__: str @@ -60,16 +60,16 @@ class Insert(ValuesBase): def __init__( self, table, - values: Incomplete | None = ..., - inline: bool = ..., - bind: Incomplete | None = ..., - prefixes: Incomplete | None = ..., - returning: Incomplete | None = ..., - return_defaults: bool = ..., + values: Incomplete | None = None, + inline: bool = False, + bind: Incomplete | None = None, + prefixes: Incomplete | None = None, + returning: Incomplete | None = None, + return_defaults: bool = False, **dialect_kw, ) -> None: ... def inline(self) -> None: ... - def from_select(self, names, select, include_defaults: bool = ...) -> None: ... + def from_select(self, names, select, include_defaults: bool = True) -> None: ... class DMLWhereBase: def where(self, *whereclause) -> None: ... @@ -84,14 +84,14 @@ class Update(DMLWhereBase, ValuesBase): def __init__( self, table, - whereclause: Incomplete | None = ..., - values: Incomplete | None = ..., - inline: bool = ..., - bind: Incomplete | None = ..., - prefixes: Incomplete | None = ..., - returning: Incomplete | None = ..., - return_defaults: bool = ..., - preserve_parameter_order: bool = ..., + whereclause: Incomplete | None = None, + values: Incomplete | None = None, + inline: bool = False, + bind: Incomplete | None = None, + prefixes: Incomplete | None = None, + returning: Incomplete | None = None, + return_defaults: bool = False, + preserve_parameter_order: bool = False, **dialect_kw, ) -> None: ... def ordered_values(self, *args) -> None: ... @@ -104,9 +104,9 @@ class Delete(DMLWhereBase, UpdateBase): def __init__( self, table, - whereclause: Incomplete | None = ..., - bind: Incomplete | None = ..., - returning: Incomplete | None = ..., - prefixes: Incomplete | None = ..., + whereclause: Incomplete | None = None, + bind: Incomplete | None = None, + returning: Incomplete | None = None, + prefixes: Incomplete | None = None, **dialect_kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi index 93c53c0c5..48be8c466 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi @@ -13,9 +13,9 @@ from .visitors import Traversible _T = TypeVar("_T") def collate(expression, collation): ... -def between(expr, lower_bound, upper_bound, symmetric: bool = ...): ... -def literal(value, type_: Incomplete | None = ...): ... -def outparam(key, type_: Incomplete | None = ...): ... +def between(expr, lower_bound, upper_bound, symmetric: bool = False): ... +def literal(value, type_: Incomplete | None = None): ... +def outparam(key, type_: Incomplete | None = None): ... def not_(clause): ... class ClauseElement(roles.SQLRole, SupportsWrappingAnnotations, MemoizedHasCacheKey, HasCopyInternals, Traversible): @@ -31,8 +31,8 @@ class ClauseElement(roles.SQLRole, SupportsWrappingAnnotations, MemoizedHasCache def unique_params(self, *optionaldict, **kwargs): ... def params(self, *optionaldict, **kwargs): ... def compare(self, other, **kw): ... - def self_group(self, against: Incomplete | None = ...): ... - def compile(self, bind: Incomplete | None = ..., dialect: Incomplete | None = ..., **kw): ... + def self_group(self, against: Incomplete | None = None): ... + def compile(self, bind: Incomplete | None = None, dialect: Incomplete | None = None, **kw): ... def __invert__(self): ... def __bool__(self) -> bool: ... def __nonzero__(self) -> bool: ... @@ -56,7 +56,7 @@ class ColumnElement( primary_key: bool foreign_keys: Any key: Any - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... @memoized_property def type(self): ... @HasMemoized.memoized_attribute @@ -99,17 +99,17 @@ class BindParameter(roles.InElementRole, ColumnElement[_T], Generic[_T]): self, key, value=..., - type_: Incomplete | None = ..., - unique: bool = ..., + type_: Incomplete | None = None, + unique: bool = False, required=..., - quote: Incomplete | None = ..., - callable_: Incomplete | None = ..., - expanding: bool = ..., - isoutparam: bool = ..., - literal_execute: bool = ..., - _compared_to_operator: Incomplete | None = ..., - _compared_to_type: Incomplete | None = ..., - _is_crud: bool = ..., + quote: Incomplete | None = None, + callable_: Incomplete | None = None, + expanding: bool = False, + isoutparam: bool = False, + literal_execute: bool = False, + _compared_to_operator: Incomplete | None = None, + _compared_to_type: Incomplete | None = None, + _is_crud: bool = False, ) -> None: ... @property def effective_value(self): ... @@ -144,7 +144,7 @@ class TextClause( def type(self): ... @property def comparator(self): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... class Null(SingletonConstant, roles.ConstExprRole, ColumnElement[None]): __visit_name__: str @@ -171,7 +171,7 @@ class ClauseList(roles.InElementRole, roles.OrderByRole, roles.ColumnsClauseRole def __iter__(self): ... def __len__(self) -> int: ... def append(self, clause) -> None: ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... class BooleanClauseList(ClauseList, ColumnElement[Any]): __visit_name__: str @@ -181,7 +181,7 @@ class BooleanClauseList(ClauseList, ColumnElement[Any]): def and_(cls, *clauses): ... @classmethod def or_(cls, *clauses): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... and_: Any or_: Any @@ -190,7 +190,7 @@ class Tuple(ClauseList, ColumnElement[Any]): __visit_name__: str type: Any def __init__(self, *clauses, **kw) -> None: ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... class Case(ColumnElement[Any]): __visit_name__: str @@ -200,7 +200,7 @@ class Case(ColumnElement[Any]): else_: Any def __init__(self, *whens, **kw) -> None: ... -def literal_column(text, type_: Incomplete | None = ...): ... +def literal_column(text, type_: Incomplete | None = None): ... class Cast(WrapsColumnExpression, ColumnElement[Any]): __visit_name__: str @@ -220,7 +220,7 @@ class TypeCoerce(WrapsColumnExpression, ColumnElement[Any]): def typed_expression(self): ... @property def wrapped_column_expression(self): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... class Extract(ColumnElement[Any]): __visit_name__: str @@ -249,12 +249,12 @@ class UnaryExpression(ColumnElement[Any]): def __init__( self, element, - operator: Incomplete | None = ..., - modifier: Incomplete | None = ..., - type_: Incomplete | None = ..., - wraps_column_expression: bool = ..., + operator: Incomplete | None = None, + modifier: Incomplete | None = None, + type_: Incomplete | None = None, + wraps_column_expression: bool = False, ) -> None: ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... class CollectionAggregate(UnaryExpression): inherit_cache: bool @@ -272,7 +272,7 @@ class AsBoolean(WrapsColumnExpression, UnaryExpression): def __init__(self, element, operator, negate) -> None: ... @property def wrapped_column_expression(self): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... class BinaryExpression(ColumnElement[Any]): __visit_name__: str @@ -287,15 +287,15 @@ class BinaryExpression(ColumnElement[Any]): left, right, operator, - type_: Incomplete | None = ..., - negate: Incomplete | None = ..., - modifiers: Incomplete | None = ..., + type_: Incomplete | None = None, + negate: Incomplete | None = None, + modifiers: Incomplete | None = None, ) -> None: ... def __bool__(self) -> bool: ... def __nonzero__(self) -> bool: ... @property def is_comparison(self): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... class Slice(ColumnElement[Any]): __visit_name__: str @@ -303,15 +303,15 @@ class Slice(ColumnElement[Any]): stop: Any step: Any type: Any - def __init__(self, start, stop, step, _name: Incomplete | None = ...) -> None: ... - def self_group(self, against: Incomplete | None = ...): ... + def __init__(self, start, stop, step, _name: Incomplete | None = None) -> None: ... + def self_group(self, against: Incomplete | None = None): ... class IndexExpression(BinaryExpression): inherit_cache: bool class GroupedElement(ClauseElement): __visit_name__: str - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... class Grouping(GroupedElement, ColumnElement[Any]): element: Any @@ -332,10 +332,10 @@ class Over(ColumnElement[Any]): def __init__( self, element, - partition_by: Incomplete | None = ..., - order_by: Incomplete | None = ..., - range_: Incomplete | None = ..., - rows: Incomplete | None = ..., + partition_by: Incomplete | None = None, + order_by: Incomplete | None = None, + range_: Incomplete | None = None, + rows: Incomplete | None = None, ) -> None: ... def __reduce__(self): ... @memoized_property @@ -349,10 +349,10 @@ class WithinGroup(ColumnElement[Any]): def __reduce__(self): ... def over( self, - partition_by: Incomplete | None = ..., - order_by: Incomplete | None = ..., - range_: Incomplete | None = ..., - rows: Incomplete | None = ..., + partition_by: Incomplete | None = None, + order_by: Incomplete | None = None, + range_: Incomplete | None = None, + rows: Incomplete | None = None, ): ... @memoized_property def type(self): ... @@ -365,12 +365,12 @@ class FunctionFilter(ColumnElement[Any]): def filter(self, *criterion): ... def over( self, - partition_by: Incomplete | None = ..., - order_by: Incomplete | None = ..., - range_: Incomplete | None = ..., - rows: Incomplete | None = ..., + partition_by: Incomplete | None = None, + order_by: Incomplete | None = None, + range_: Incomplete | None = None, + rows: Incomplete | None = None, ): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... @memoized_property def type(self): ... @@ -378,13 +378,13 @@ class Label(roles.LabeledColumnExprRole, ColumnElement[Any]): __visit_name__: str name: Any key: Any - def __init__(self, name, element, type_: Incomplete | None = ...) -> None: ... + def __init__(self, name, element, type_: Incomplete | None = None) -> None: ... def __reduce__(self): ... @memoized_property def type(self): ... @HasMemoized.memoized_attribute def element(self): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... @property def primary_key(self): ... @property @@ -407,9 +407,9 @@ class ColumnClause(roles.DDLReferredColumnRole, roles.LabeledColumnExprRole, rol key: Any type: Any def __init__( - self, text, type_: Incomplete | None = ..., is_literal: bool = ..., _selectable: Incomplete | None = ... + self, text, type_: Incomplete | None = None, is_literal: bool = False, _selectable: Incomplete | None = None ) -> None: ... - def get_children(self, column_tables: bool = ..., **kw): ... # type: ignore[override] + def get_children(self, column_tables: bool = False, **kw): ... # type: ignore[override] @property def entity_namespace(self): ... @@ -459,7 +459,7 @@ class AnnotatedColumnElement(Annotated): def info(self): ... class _truncated_label(quoted_name): - def __new__(cls, value, quote: Incomplete | None = ...): ... + def __new__(cls, value, quote: Incomplete | None = None): ... def __reduce__(self): ... def apply_map(self, map_): ... @@ -467,7 +467,7 @@ class conv(_truncated_label): ... class _anonymous_label(_truncated_label): @classmethod - def safe_construct(cls, seed, body, enclosing_label: Incomplete | None = ..., sanitize_key: bool = ...): ... + def safe_construct(cls, seed, body, enclosing_label: Incomplete | None = None, sanitize_key: bool = False): ... def __add__(self, other): ... def __radd__(self, other): ... def apply_map(self, map_): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi index c1a0d1ec4..1cf78c365 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi @@ -7,15 +7,15 @@ from .elements import BinaryExpression, ColumnElement, NamedColumn from .selectable import FromClause, TableValuedAlias from .visitors import TraversibleType -def register_function(identifier, fn, package: str = ...) -> None: ... +def register_function(identifier, fn, package: str = "_default") -> None: ... class FunctionElement(Executable, ColumnElement[Any], FromClause, Generative): # type: ignore[misc] packagenames: Incomplete clause_expr: Incomplete def __init__(self, *clauses, **kwargs) -> None: ... - def scalar_table_valued(self, name, type_: Incomplete | None = ...): ... + def scalar_table_valued(self, name, type_: Incomplete | None = None): ... def table_valued(self, *expr, **kw): ... - def column_valued(self, name: str | None = ..., joins_implicitly: bool = ...): ... + def column_valued(self, name: str | None = None, joins_implicitly: bool = False): ... @property def columns(self): ... @property @@ -24,20 +24,20 @@ class FunctionElement(Executable, ColumnElement[Any], FromClause, Generative): def clauses(self): ... def over( self, - partition_by: Incomplete | None = ..., - order_by: Incomplete | None = ..., - rows: Incomplete | None = ..., - range_: Incomplete | None = ..., + partition_by: Incomplete | None = None, + order_by: Incomplete | None = None, + rows: Incomplete | None = None, + range_: Incomplete | None = None, ): ... def within_group(self, *order_by): ... def filter(self, *criterion): ... def as_comparison(self, left_index, right_index): ... def within_group_type(self, within_group) -> None: ... - def alias(self, name: str | None = ..., joins_implicitly: bool = ...) -> TableValuedAlias: ... # type: ignore[override] + def alias(self, name: str | None = None, joins_implicitly: bool = False) -> TableValuedAlias: ... # type: ignore[override] def select(self): ... def scalar(self): ... def execute(self): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... @property def entity_namespace(self): ... @@ -66,7 +66,7 @@ class ScalarFunctionColumn(NamedColumn): fn: Incomplete name: Incomplete type: Incomplete - def __init__(self, fn, name, type_: Incomplete | None = ...) -> None: ... + def __init__(self, fn, name, type_: Incomplete | None = None) -> None: ... class _FunctionGenerator: opts: Incomplete @@ -143,7 +143,7 @@ class random(GenericFunction): class count(GenericFunction): type: Incomplete inherit_cache: bool - def __init__(self, expression: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, expression: Incomplete | None = None, **kwargs) -> None: ... class current_date(AnsiFunction): type: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/lambdas.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/lambdas.pyi index b6ada6db4..49c91eefc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/lambdas.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/lambdas.pyi @@ -17,12 +17,12 @@ class LambdaOptions(Options): def lambda_stmt( lmb, - enable_tracking: bool = ..., - track_closure_variables: bool = ..., - track_on: Incomplete | None = ..., - global_track_bound_values: bool = ..., - track_bound_values: bool = ..., - lambda_cache: Incomplete | None = ..., + enable_tracking: bool = True, + track_closure_variables: bool = True, + track_on: Incomplete | None = None, + global_track_bound_values: bool = True, + track_bound_values: bool = True, + lambda_cache: Incomplete | None = None, ): ... class LambdaElement(elements.ClauseElement): @@ -32,22 +32,22 @@ class LambdaElement(elements.ClauseElement): role: Incomplete tracker_key: Incomplete opts: Incomplete - def __init__(self, fn, role, opts=..., apply_propagate_attrs: Incomplete | None = ...) -> None: ... + def __init__(self, fn, role, opts=..., apply_propagate_attrs: Incomplete | None = None) -> None: ... def __getattr__(self, key: str): ... class DeferredLambdaElement(LambdaElement): lambda_args: Incomplete - def __init__(self, fn, role, opts=..., lambda_args=...) -> None: ... + def __init__(self, fn, role, opts=..., lambda_args=()) -> None: ... class StatementLambdaElement(roles.AllowsLambdaRole, LambdaElement): def __add__(self, other): ... def add_criteria( self, other, - enable_tracking: bool = ..., - track_on: Incomplete | None = ..., - track_closure_variables: bool = ..., - track_bound_values: bool = ..., + enable_tracking: bool = True, + track_on: Incomplete | None = None, + track_closure_variables: bool = True, + track_bound_values: bool = True, ): ... def spoil(self): ... @@ -105,9 +105,9 @@ class PyWrapper(ColumnOperators[_T], Generic[_T]): fn, name, to_evaluate, - closure_index: Incomplete | None = ..., - getter: Incomplete | None = ..., - track_bound_values: bool = ..., + closure_index: Incomplete | None = None, + getter: Incomplete | None = None, + track_bound_values: bool = True, ) -> None: ... def __call__(self, *arg, **kw): ... def operate(self, op, *other, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/operators.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/operators.pyi index abfafe7c2..cb91ff535 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/operators.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/operators.pyi @@ -11,8 +11,8 @@ class Operators: def __and__(self, other): ... def __or__(self, other): ... def __invert__(self): ... - def op(self, opstring, precedence: int = ..., is_comparison: bool = ..., return_type: Incomplete | None = ...): ... - def bool_op(self, opstring, precedence: int = ...): ... + def op(self, opstring, precedence: int = 0, is_comparison: bool = False, return_type: Incomplete | None = None): ... + def bool_op(self, opstring, precedence: int = 0): ... def operate(self, op, *other, **kwargs): ... def reverse_operate(self, op, other, **kwargs): ... @@ -27,11 +27,11 @@ class custom_op: def __init__( self, opstring, - precedence: int = ..., - is_comparison: bool = ..., - return_type: Incomplete | None = ..., - natural_self_precedent: bool = ..., - eager_grouping: bool = ..., + precedence: int = 0, + is_comparison: bool = False, + return_type: Incomplete | None = None, + natural_self_precedent: bool = False, + eager_grouping: bool = False, ) -> None: ... def __eq__(self, other): ... def __hash__(self) -> int: ... @@ -55,15 +55,15 @@ class ColumnOperators(Operators, Generic[_T]): def __lshift__(self, other) -> ColumnOperators[_T]: ... def __rshift__(self, other) -> ColumnOperators[_T]: ... def concat(self, other: _T | ColumnOperators[_T] | None) -> ColumnOperators[_T]: ... - def like(self, other: _T, escape: str | None = ...) -> ColumnOperators[_T]: ... - def ilike(self, other: _T, escape: str | None = ...) -> ColumnOperators[_T]: ... + def like(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... + def ilike(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... def in_(self, other: Container[_T] | Iterable[_T]) -> ColumnOperators[_T]: ... def not_in(self, other: Container[_T] | Iterable[_T]) -> ColumnOperators[_T]: ... def notin_(self, other: Container[_T] | Iterable[_T]) -> ColumnOperators[_T]: ... - def not_like(self, other: _T, escape: str | None = ...) -> ColumnOperators[_T]: ... - def notlike(self, other: _T, escape: str | None = ...) -> ColumnOperators[_T]: ... - def not_ilike(self, other: _T, escape: str | None = ...) -> ColumnOperators[_T]: ... - def notilike(self, other: _T, escape: str | None = ...) -> ColumnOperators[_T]: ... + def not_like(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... + def notlike(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... + def not_ilike(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... + def notilike(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... def is_(self, other: _T) -> ColumnOperators[_T]: ... def is_not(self, other: _T) -> ColumnOperators[_T]: ... def isnot(self, other: _T) -> ColumnOperators[_T]: ... @@ -71,8 +71,8 @@ class ColumnOperators(Operators, Generic[_T]): def endswith(self, other: str, **kwargs) -> ColumnOperators[_T]: ... def contains(self, other: str, **kwargs) -> ColumnOperators[_T]: ... def match(self, other: str, **kwargs) -> ColumnOperators[_T]: ... - def regexp_match(self, pattern, flags: Incomplete | None = ...) -> ColumnOperators[_T]: ... - def regexp_replace(self, pattern, replacement, flags: Incomplete | None = ...) -> ColumnOperators[_T]: ... + def regexp_match(self, pattern, flags: Incomplete | None = None) -> ColumnOperators[_T]: ... + def regexp_replace(self, pattern, replacement, flags: Incomplete | None = None) -> ColumnOperators[_T]: ... def desc(self) -> ColumnOperators[_T]: ... def asc(self) -> ColumnOperators[_T]: ... def nulls_first(self) -> ColumnOperators[_T]: ... @@ -85,7 +85,7 @@ class ColumnOperators(Operators, Generic[_T]): def __rmul__(self, other) -> ColumnOperators[_T]: ... def __rdiv__(self, other) -> ColumnOperators[_T]: ... def __rmod__(self, other) -> ColumnOperators[_T]: ... - def between(self, cleft, cright, symmetric: bool = ...) -> ColumnOperators[_T]: ... + def between(self, cleft, cright, symmetric: bool = False) -> ColumnOperators[_T]: ... def distinct(self) -> ColumnOperators[_T]: ... def any_(self) -> ColumnOperators[_T]: ... def all_(self) -> ColumnOperators[_T]: ... @@ -123,18 +123,18 @@ isnot = is_not def collate(a, b): ... def op(a, opstring, b): ... -def like_op(a, b, escape: Incomplete | None = ...): ... -def not_like_op(a, b, escape: Incomplete | None = ...): ... +def like_op(a, b, escape: Incomplete | None = None): ... +def not_like_op(a, b, escape: Incomplete | None = None): ... notlike_op = not_like_op -def ilike_op(a, b, escape: Incomplete | None = ...): ... -def not_ilike_op(a, b, escape: Incomplete | None = ...): ... +def ilike_op(a, b, escape: Incomplete | None = None): ... +def not_ilike_op(a, b, escape: Incomplete | None = None): ... notilike_op = not_ilike_op -def between_op(a, b, c, symmetric: bool = ...): ... -def not_between_op(a, b, c, symmetric: bool = ...): ... +def between_op(a, b, c, symmetric: bool = False): ... +def not_between_op(a, b, c, symmetric: bool = False): ... notbetween_op = not_between_op @@ -146,25 +146,25 @@ notin_op = not_in_op def distinct_op(a): ... def any_op(a): ... def all_op(a): ... -def startswith_op(a, b, escape: Incomplete | None = ..., autoescape: bool = ...): ... -def not_startswith_op(a, b, escape: Incomplete | None = ..., autoescape: bool = ...): ... +def startswith_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... +def not_startswith_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... notstartswith_op = not_startswith_op -def endswith_op(a, b, escape: Incomplete | None = ..., autoescape: bool = ...): ... -def not_endswith_op(a, b, escape: Incomplete | None = ..., autoescape: bool = ...): ... +def endswith_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... +def not_endswith_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... notendswith_op = not_endswith_op -def contains_op(a, b, escape: Incomplete | None = ..., autoescape: bool = ...): ... -def not_contains_op(a, b, escape: Incomplete | None = ..., autoescape: bool = ...): ... +def contains_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... +def not_contains_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... notcontains_op = not_contains_op def match_op(a, b, **kw): ... -def regexp_match_op(a, b, flags: Incomplete | None = ...): ... -def not_regexp_match_op(a, b, flags: Incomplete | None = ...): ... -def regexp_replace_op(a, b, replacement, flags: Incomplete | None = ...): ... +def regexp_match_op(a, b, flags: Incomplete | None = None): ... +def not_regexp_match_op(a, b, flags: Incomplete | None = None): ... +def regexp_replace_op(a, b, replacement, flags: Incomplete | None = None): ... def not_match_op(a, b, **kw): ... notmatch_op = not_match_op diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi index 21656beed..3199c6d3d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi @@ -30,13 +30,13 @@ class Table(DialectKWArgs, SchemaItem, TableClause): @property def bind(self): ... def add_is_dependent_on(self, table) -> None: ... - def append_column(self, column, replace_existing: bool = ...) -> None: ... # type: ignore[override] + def append_column(self, column, replace_existing: bool = False) -> None: ... # type: ignore[override] def append_constraint(self, constraint) -> None: ... - def exists(self, bind: Incomplete | None = ...): ... - def create(self, bind: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... - def drop(self, bind: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... - def tometadata(self, metadata, schema=..., referred_schema_fn: Incomplete | None = ..., name: Incomplete | None = ...): ... - def to_metadata(self, metadata, schema=..., referred_schema_fn: Incomplete | None = ..., name: Incomplete | None = ...): ... + def exists(self, bind: Incomplete | None = None): ... + def create(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... + def drop(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... + def tometadata(self, metadata, schema=..., referred_schema_fn: Incomplete | None = None, name: Incomplete | None = None): ... + def to_metadata(self, metadata, schema=..., referred_schema_fn: Incomplete | None = None, name: Incomplete | None = None): ... class Column(DialectKWArgs, SchemaItem, ColumnClause): __visit_name__: str @@ -80,20 +80,20 @@ class ForeignKey(DialectKWArgs, SchemaItem): def __init__( self, column, - _constraint: Incomplete | None = ..., - use_alter: bool = ..., - name: Incomplete | None = ..., - onupdate: Incomplete | None = ..., - ondelete: Incomplete | None = ..., - deferrable: Incomplete | None = ..., - initially: Incomplete | None = ..., - link_to_name: bool = ..., - match: Incomplete | None = ..., - info: Incomplete | None = ..., - _unresolvable: bool = ..., + _constraint: Incomplete | None = None, + use_alter: bool = False, + name: Incomplete | None = None, + onupdate: Incomplete | None = None, + ondelete: Incomplete | None = None, + deferrable: Incomplete | None = None, + initially: Incomplete | None = None, + link_to_name: bool = False, + match: Incomplete | None = None, + info: Incomplete | None = None, + _unresolvable: bool = False, **dialect_kw, ) -> None: ... - def copy(self, schema: Incomplete | None = ..., **kw): ... + def copy(self, schema: Incomplete | None = None, **kw): ... @property def target_fullname(self): ... def references(self, table): ... @@ -107,8 +107,8 @@ class DefaultGenerator(Executable, SchemaItem): is_server_default: bool column: Any for_update: Any - def __init__(self, for_update: bool = ...) -> None: ... - def execute(self, bind: Incomplete | None = ...): ... # type: ignore[override] + def __init__(self, for_update: bool = False) -> None: ... + def execute(self, bind: Incomplete | None = None): ... # type: ignore[override] @property def bind(self): ... @@ -134,15 +134,15 @@ class IdentityOptions: order: Any def __init__( self, - start: Incomplete | None = ..., - increment: Incomplete | None = ..., - minvalue: Incomplete | None = ..., - maxvalue: Incomplete | None = ..., - nominvalue: Incomplete | None = ..., - nomaxvalue: Incomplete | None = ..., - cycle: Incomplete | None = ..., - cache: Incomplete | None = ..., - order: Incomplete | None = ..., + start: Incomplete | None = None, + increment: Incomplete | None = None, + minvalue: Incomplete | None = None, + maxvalue: Incomplete | None = None, + nominvalue: Incomplete | None = None, + nomaxvalue: Incomplete | None = None, + cycle: Incomplete | None = None, + cache: Incomplete | None = None, + order: Incomplete | None = None, ) -> None: ... class Sequence(IdentityOptions, DefaultGenerator): @@ -156,22 +156,22 @@ class Sequence(IdentityOptions, DefaultGenerator): def __init__( self, name, - start: Incomplete | None = ..., - increment: Incomplete | None = ..., - minvalue: Incomplete | None = ..., - maxvalue: Incomplete | None = ..., - nominvalue: Incomplete | None = ..., - nomaxvalue: Incomplete | None = ..., - cycle: Incomplete | None = ..., - schema: Incomplete | None = ..., - cache: Incomplete | None = ..., - order: Incomplete | None = ..., - data_type: Incomplete | None = ..., - optional: bool = ..., - quote: Incomplete | None = ..., - metadata: Incomplete | None = ..., - quote_schema: Incomplete | None = ..., - for_update: bool = ..., + start: Incomplete | None = None, + increment: Incomplete | None = None, + minvalue: Incomplete | None = None, + maxvalue: Incomplete | None = None, + nominvalue: Incomplete | None = None, + nomaxvalue: Incomplete | None = None, + cycle: Incomplete | None = None, + schema: Incomplete | None = None, + cache: Incomplete | None = None, + order: Incomplete | None = None, + data_type: Incomplete | None = None, + optional: bool = False, + quote: Incomplete | None = None, + metadata: Incomplete | None = None, + quote_schema: Incomplete | None = None, + for_update: bool = False, ) -> None: ... @memoized_property def is_callable(self): ... @@ -180,8 +180,8 @@ class Sequence(IdentityOptions, DefaultGenerator): def next_value(self): ... @property def bind(self): ... - def create(self, bind: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... - def drop(self, bind: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... + def create(self, bind: Incomplete | None = None, checkfirst: bool = True) -> None: ... + def drop(self, bind: Incomplete | None = None, checkfirst: bool = True) -> None: ... class FetchedValue(SchemaEventTarget): is_server_default: bool @@ -189,13 +189,13 @@ class FetchedValue(SchemaEventTarget): has_argument: bool is_clause_element: bool for_update: Any - def __init__(self, for_update: bool = ...) -> None: ... + def __init__(self, for_update: bool = False) -> None: ... class DefaultClause(FetchedValue): has_argument: bool arg: Any reflected: Any - def __init__(self, arg, for_update: bool = ..., _reflected: bool = ...) -> None: ... + def __init__(self, arg, for_update: bool = False, _reflected: bool = False) -> None: ... class Constraint(DialectKWArgs, SchemaItem): __visit_name__: str @@ -205,12 +205,12 @@ class Constraint(DialectKWArgs, SchemaItem): info: Any def __init__( self, - name: Incomplete | None = ..., - deferrable: Incomplete | None = ..., - initially: Incomplete | None = ..., - _create_rule: Incomplete | None = ..., - info: Incomplete | None = ..., - _type_bound: bool = ..., + name: Incomplete | None = None, + deferrable: Incomplete | None = None, + initially: Incomplete | None = None, + _create_rule: Incomplete | None = None, + info: Incomplete | None = None, + _type_bound: bool = False, **dialect_kw, ) -> None: ... @property @@ -225,7 +225,7 @@ class ColumnCollectionConstraint(ColumnCollectionMixin, Constraint): def __init__(self, *columns, **kw) -> None: ... columns: Any def __contains__(self, x): ... - def copy(self, target_table: Incomplete | None = ..., **kw): ... + def copy(self, target_table: Incomplete | None = None, **kw): ... def contains_column(self, col): ... def __iter__(self): ... def __len__(self) -> int: ... @@ -236,19 +236,19 @@ class CheckConstraint(ColumnCollectionConstraint): def __init__( self, sqltext, - name: Incomplete | None = ..., - deferrable: Incomplete | None = ..., - initially: Incomplete | None = ..., - table: Incomplete | None = ..., - info: Incomplete | None = ..., - _create_rule: Incomplete | None = ..., - _autoattach: bool = ..., - _type_bound: bool = ..., + name: Incomplete | None = None, + deferrable: Incomplete | None = None, + initially: Incomplete | None = None, + table: Incomplete | None = None, + info: Incomplete | None = None, + _create_rule: Incomplete | None = None, + _autoattach: bool = True, + _type_bound: bool = False, **kw, ) -> None: ... @property def is_column_level(self): ... - def copy(self, target_table: Incomplete | None = ..., **kw): ... + def copy(self, target_table: Incomplete | None = None, **kw): ... class ForeignKeyConstraint(ColumnCollectionConstraint): __visit_name__: str @@ -262,16 +262,16 @@ class ForeignKeyConstraint(ColumnCollectionConstraint): self, columns, refcolumns, - name: Incomplete | None = ..., - onupdate: Incomplete | None = ..., - ondelete: Incomplete | None = ..., - deferrable: Incomplete | None = ..., - initially: Incomplete | None = ..., - use_alter: bool = ..., - link_to_name: bool = ..., - match: Incomplete | None = ..., - table: Incomplete | None = ..., - info: Incomplete | None = ..., + name: Incomplete | None = None, + onupdate: Incomplete | None = None, + ondelete: Incomplete | None = None, + deferrable: Incomplete | None = None, + initially: Incomplete | None = None, + use_alter: bool = False, + link_to_name: bool = False, + match: Incomplete | None = None, + table: Incomplete | None = None, + info: Incomplete | None = None, **dialect_kw, ) -> None: ... columns: Any @@ -279,7 +279,7 @@ class ForeignKeyConstraint(ColumnCollectionConstraint): def referred_table(self): ... @property def column_keys(self): ... - def copy(self, schema: Incomplete | None = ..., target_table: Incomplete | None = ..., **kw): ... # type: ignore[override] + def copy(self, schema: Incomplete | None = None, target_table: Incomplete | None = None, **kw): ... # type: ignore[override] class PrimaryKeyConstraint(ColumnCollectionConstraint): __visit_name__: str @@ -300,8 +300,8 @@ class Index(DialectKWArgs, ColumnCollectionMixin, SchemaItem): def __init__(self, name, *expressions, **kw) -> None: ... @property def bind(self): ... - def create(self, bind: Incomplete | None = ..., checkfirst: bool = ...): ... - def drop(self, bind: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... + def create(self, bind: Incomplete | None = None, checkfirst: bool = False): ... + def drop(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... DEFAULT_NAMING_CONVENTION: Any @@ -313,11 +313,11 @@ class MetaData(SchemaItem): info: Any def __init__( self, - bind: Incomplete | None = ..., - schema: Incomplete | None = ..., - quote_schema: Incomplete | None = ..., - naming_convention: Incomplete | None = ..., - info: Incomplete | None = ..., + bind: Incomplete | None = None, + schema: Incomplete | None = None, + quote_schema: Incomplete | None = None, + naming_convention: Incomplete | None = None, + info: Incomplete | None = None, ) -> None: ... def __contains__(self, table_or_key) -> bool: ... def is_bound(self): ... @@ -328,17 +328,17 @@ class MetaData(SchemaItem): def sorted_tables(self): ... def reflect( self, - bind: Incomplete | None = ..., - schema: Incomplete | None = ..., - views: bool = ..., - only: Incomplete | None = ..., - extend_existing: bool = ..., - autoload_replace: bool = ..., - resolve_fks: bool = ..., + bind: Incomplete | None = None, + schema: Incomplete | None = None, + views: bool = False, + only: Incomplete | None = None, + extend_existing: bool = False, + autoload_replace: bool = True, + resolve_fks: bool = True, **dialect_kwargs, ) -> None: ... - def create_all(self, bind: Incomplete | None = ..., tables: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... - def drop_all(self, bind: Incomplete | None = ..., tables: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... + def create_all(self, bind: Incomplete | None = None, tables: Incomplete | None = None, checkfirst: bool = True) -> None: ... + def drop_all(self, bind: Incomplete | None = None, tables: Incomplete | None = None, checkfirst: bool = True) -> None: ... class ThreadLocalMetaData(MetaData): __visit_name__: str @@ -353,8 +353,8 @@ class Computed(FetchedValue, SchemaItem): sqltext: Any persisted: Any column: Any - def __init__(self, sqltext, persisted: Incomplete | None = ...) -> None: ... - def copy(self, target_table: Incomplete | None = ..., **kw): ... + def __init__(self, sqltext, persisted: Incomplete | None = None) -> None: ... + def copy(self, target_table: Incomplete | None = None, **kw): ... class Identity(IdentityOptions, FetchedValue, SchemaItem): __visit_name__: str @@ -363,16 +363,16 @@ class Identity(IdentityOptions, FetchedValue, SchemaItem): column: Any def __init__( self, - always: bool = ..., - on_null: Incomplete | None = ..., - start: Incomplete | None = ..., - increment: Incomplete | None = ..., - minvalue: Incomplete | None = ..., - maxvalue: Incomplete | None = ..., - nominvalue: Incomplete | None = ..., - nomaxvalue: Incomplete | None = ..., - cycle: Incomplete | None = ..., - cache: Incomplete | None = ..., - order: Incomplete | None = ..., + always: bool = False, + on_null: Incomplete | None = None, + start: Incomplete | None = None, + increment: Incomplete | None = None, + minvalue: Incomplete | None = None, + maxvalue: Incomplete | None = None, + nominvalue: Incomplete | None = None, + nomaxvalue: Incomplete | None = None, + cycle: Incomplete | None = None, + cache: Incomplete | None = None, + order: Incomplete | None = None, ) -> None: ... def copy(self, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi index eb24ab00c..c9ddc58d3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi @@ -34,9 +34,9 @@ class ReturnsRows(roles.ReturnsRowsRole, ClauseElement): class Selectable(ReturnsRows): __visit_name__: str is_selectable: bool - def lateral(self, name: Incomplete | None = ...): ... + def lateral(self, name: Incomplete | None = None): ... def replace_selectable(self, old, alias): ... - def corresponding_column(self, column, require_embedded: bool = ...): ... + def corresponding_column(self, column, require_embedded: bool = False): ... class HasPrefixes: def prefix_with(self, *expr, **kw) -> Self: ... @@ -45,20 +45,20 @@ class HasSuffixes: def suffix_with(self, *expr, **kw) -> Self: ... class HasHints: - def with_statement_hint(self, text, dialect_name: str = ...): ... - def with_hint(self, selectable, text: str, dialect_name: str = ...) -> Self: ... + def with_statement_hint(self, text, dialect_name: str = "*"): ... + def with_hint(self, selectable, text: str, dialect_name: str = "*") -> Self: ... class FromClause(roles.AnonymizedFromClauseRole, Selectable): __visit_name__: str named_with_column: bool schema: Any is_selectable: bool - def select(self, whereclause: Incomplete | None = ..., **kwargs): ... - def join(self, right, onclause: Incomplete | None = ..., isouter: bool = ..., full: bool = ...): ... - def outerjoin(self, right, onclause: Incomplete | None = ..., full: bool = ...): ... - def alias(self, name: Incomplete | None = ..., flat: bool = ...): ... + def select(self, whereclause: Incomplete | None = None, **kwargs): ... + def join(self, right, onclause: Incomplete | None = None, isouter: bool = False, full: bool = False): ... + def outerjoin(self, right, onclause: Incomplete | None = None, full: bool = False): ... + def alias(self, name: Incomplete | None = None, flat: bool = False): ... def table_valued(self): ... - def tablesample(self, sampling, name: Incomplete | None = ..., seed: Incomplete | None = ...): ... + def tablesample(self, sampling, name: Incomplete | None = None, seed: Incomplete | None = None): ... def is_derived_from(self, fromclause): ... @property def description(self): ... @@ -87,15 +87,15 @@ class Join(roles.DMLTableRole, FromClause): onclause: Any isouter: Any full: Any - def __init__(self, left, right, onclause: Incomplete | None = ..., isouter: bool = ..., full: bool = ...) -> None: ... + def __init__(self, left, right, onclause: Incomplete | None = None, isouter: bool = False, full: bool = False) -> None: ... @property def description(self): ... def is_derived_from(self, fromclause): ... - def self_group(self, against: Incomplete | None = ...): ... - def select(self, whereclause: Incomplete | None = ..., **kwargs): ... + def self_group(self, against: Incomplete | None = None): ... + def select(self, whereclause: Incomplete | None = None, **kwargs): ... @property def bind(self): ... - def alias(self, name: Incomplete | None = ..., flat: bool = ...): ... + def alias(self, name: Incomplete | None = None, flat: bool = False): ... class NoInit: def __init__(self, *arg, **kw) -> None: ... @@ -118,9 +118,9 @@ class TableValuedAlias(Alias): __visit_name__: str @HasMemoized.memoized_attribute def column(self): ... - def alias(self, name: Incomplete | None = ...): ... # type: ignore[override] - def lateral(self, name: Incomplete | None = ...): ... - def render_derived(self, name: Incomplete | None = ..., with_types: bool = ...): ... + def alias(self, name: Incomplete | None = None): ... # type: ignore[override] + def lateral(self, name: Incomplete | None = None): ... + def render_derived(self, name: Incomplete | None = None, with_types: bool = False): ... class Lateral(AliasedReturnsRows): __visit_name__: str @@ -131,13 +131,13 @@ class TableSample(AliasedReturnsRows): class CTE(roles.DMLTableRole, roles.IsCTERole, Generative, HasPrefixes, HasSuffixes, AliasedReturnsRows): __visit_name__: str - def alias(self, name: Incomplete | None = ..., flat: bool = ...): ... + def alias(self, name: Incomplete | None = None, flat: bool = False): ... def union(self, *other): ... def union_all(self, *other): ... class HasCTE(roles.HasCTERole): def add_cte(self, cte) -> None: ... - def cte(self, name: Incomplete | None = ..., recursive: bool = ..., nesting: bool = ...): ... + def cte(self, name: Incomplete | None = None, recursive: bool = False, nesting: bool = False): ... class Subquery(AliasedReturnsRows): __visit_name__: str @@ -169,9 +169,9 @@ class TableClause(roles.DMLTableRole, Immutable, FromClause): @memoized_property def description(self): ... def append_column(self, c, **kw) -> None: ... - def insert(self, values: Incomplete | None = ..., inline: bool = ..., **kwargs): ... - def update(self, whereclause: Incomplete | None = ..., values: Incomplete | None = ..., inline: bool = ..., **kwargs): ... - def delete(self, whereclause: Incomplete | None = ..., **kwargs): ... + def insert(self, values: Incomplete | None = None, inline: bool = False, **kwargs): ... + def update(self, whereclause: Incomplete | None = None, values: Incomplete | None = None, inline: bool = False, **kwargs): ... + def delete(self, whereclause: Incomplete | None = None, **kwargs): ... class ForUpdateArg(ClauseElement): def __eq__(self, other): ... @@ -183,7 +183,12 @@ class ForUpdateArg(ClauseElement): key_share: Any of: Any def __init__( - self, nowait: bool = ..., read: bool = ..., of: Incomplete | None = ..., skip_locked: bool = ..., key_share: bool = ... + self, + nowait: bool = False, + read: bool = False, + of: Incomplete | None = None, + skip_locked: bool = False, + key_share: bool = False, ) -> None: ... class Values(Generative, FromClause): @@ -193,7 +198,7 @@ class Values(Generative, FromClause): literal_binds: Any def __init__(self, *columns, **kw) -> None: ... def alias(self, name: Incomplete | None, **kw) -> Self: ... # type: ignore[override] - def lateral(self, name: Incomplete | None = ...) -> Self: ... + def lateral(self, name: Incomplete | None = None) -> Self: ... def data(self, values) -> Self: ... class SelectBase( @@ -220,9 +225,9 @@ class SelectBase( def exists(self): ... def scalar_subquery(self): ... def label(self, name): ... - def lateral(self, name: Incomplete | None = ...): ... - def subquery(self, name: Incomplete | None = ...): ... - def alias(self, name: Incomplete | None = ..., flat: bool = ...): ... + def lateral(self, name: Incomplete | None = None): ... + def subquery(self, name: Incomplete | None = None): ... + def alias(self, name: Incomplete | None = None, flat: bool = False): ... class SelectStatementGrouping(GroupedElement, SelectBase): __visit_name__: str @@ -232,7 +237,7 @@ class SelectStatementGrouping(GroupedElement, SelectBase): def set_label_style(self, label_style): ... @property def select_statement(self): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... @property def selected_columns(self): ... @@ -244,21 +249,26 @@ class GenerativeSelect(DeprecatedSelectBaseGenerations, SelectBase): def __init__( self, _label_style=..., - use_labels: bool = ..., - limit: Incomplete | None = ..., - offset: Incomplete | None = ..., - order_by: Incomplete | None = ..., - group_by: Incomplete | None = ..., - bind: Incomplete | None = ..., + use_labels: bool = False, + limit: Incomplete | None = None, + offset: Incomplete | None = None, + order_by: Incomplete | None = None, + group_by: Incomplete | None = None, + bind: Incomplete | None = None, ) -> None: ... def with_for_update( - self, nowait: bool = ..., read: bool = ..., of: Incomplete | None = ..., skip_locked: bool = ..., key_share: bool = ... + self, + nowait: bool = False, + read: bool = False, + of: Incomplete | None = None, + skip_locked: bool = False, + key_share: bool = False, ) -> Self: ... def get_label_style(self): ... def set_label_style(self, style): ... def apply_labels(self): ... def limit(self, limit: Incomplete | None) -> Self: ... - def fetch(self, count: Incomplete | None, with_ties: bool = ..., percent: bool = ...) -> Self: ... + def fetch(self, count: Incomplete | None, with_ties: bool = False, percent: bool = False) -> Self: ... def offset(self, offset: Incomplete | None) -> Self: ... def slice(self, start: Incomplete | None, stop: Incomplete | None) -> Self: ... def order_by(self, *clauses) -> Self: ... @@ -277,7 +287,7 @@ class CompoundSelect(HasCompileState, GenerativeSelect): keyword: Any selects: Any def __init__(self, keyword, *selects, **kwargs) -> None: ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... def is_derived_from(self, fromclause): ... @property def selected_columns(self): ... @@ -324,14 +334,14 @@ class Select( @classmethod def create_legacy_select( cls, - columns: Incomplete | None = ..., - whereclause: Incomplete | None = ..., - from_obj: Incomplete | None = ..., - distinct: bool = ..., - having: Incomplete | None = ..., - correlate: bool = ..., - prefixes: Incomplete | None = ..., - suffixes: Incomplete | None = ..., + columns: Incomplete | None = None, + whereclause: Incomplete | None = None, + from_obj: Incomplete | None = None, + distinct: bool = False, + having: Incomplete | None = None, + correlate: bool = True, + prefixes: Incomplete | None = None, + suffixes: Incomplete | None = None, **kwargs, ): ... def __init__(self) -> None: ... @@ -340,10 +350,10 @@ class Select( @property def column_descriptions(self): ... def from_statement(self, statement): ... - def join(self, target, onclause: Incomplete | None = ..., isouter: bool = ..., full: bool = ...) -> Self: ... - def outerjoin_from(self, from_, target, onclause: Incomplete | None = ..., full: bool = ...): ... - def join_from(self, from_, target, onclause: Incomplete | None = ..., isouter: bool = ..., full: bool = ...) -> Self: ... - def outerjoin(self, target, onclause: Incomplete | None = ..., full: bool = ...): ... + def join(self, target, onclause: Incomplete | None = None, isouter: bool = False, full: bool = False) -> Self: ... + def outerjoin_from(self, from_, target, onclause: Incomplete | None = None, full: bool = False): ... + def join_from(self, from_, target, onclause: Incomplete | None = None, isouter: bool = False, full: bool = False) -> Self: ... + def outerjoin(self, target, onclause: Incomplete | None = None, full: bool = False): ... def get_final_froms(self): ... @property def froms(self): ... @@ -355,7 +365,7 @@ class Select( def get_children(self, **kwargs): ... def add_columns(self, *columns) -> Self: ... def column(self, column): ... - def reduce_columns(self, only_synonyms: bool = ...): ... + def reduce_columns(self, only_synonyms: bool = True): ... def with_only_columns(self, *columns, **kw) -> Self: ... @property def whereclause(self): ... @@ -367,7 +377,7 @@ class Select( def correlate_except(self, *fromclauses) -> Self: ... @HasMemoized.memoized_attribute def selected_columns(self): ... - def self_group(self, against: Incomplete | None = ...): ... + def self_group(self, against: Incomplete | None = None): ... def union(self, *other, **kwargs): ... def union_all(self, *other, **kwargs): ... def except_(self, *other, **kwargs): ... @@ -396,7 +406,7 @@ class ScalarSelect(roles.InElementRole, Generative, Grouping): class Exists(UnaryExpression): inherit_cache: bool def __init__(self, *args, **kwargs) -> None: ... - def select(self, whereclause: Incomplete | None = ..., **kwargs): ... + def select(self, whereclause: Incomplete | None = None, **kwargs): ... def correlate(self, *fromclause): ... def correlate_except(self, *fromclause): ... def select_from(self, *froms): ... @@ -409,7 +419,7 @@ class TextualSelect(SelectBase): element: Any column_args: Any positional: Any - def __init__(self, text, columns, positional: bool = ...) -> None: ... + def __init__(self, text, columns, positional: bool = False) -> None: ... @HasMemoized.memoized_attribute def selected_columns(self): ... def bindparams(self, *binds, **bind_as_values) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi index eef39d632..1bdec2ced 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi @@ -38,12 +38,12 @@ class String(Concatenable, TypeEngine): collation: Any def __init__( self, - length: Incomplete | None = ..., - collation: Incomplete | None = ..., - convert_unicode: bool = ..., - unicode_error: Incomplete | None = ..., - _warn_on_bytestring: bool = ..., - _expect_unicode: bool = ..., + length: Incomplete | None = None, + collation: Incomplete | None = None, + convert_unicode: bool = False, + unicode_error: Incomplete | None = None, + _warn_on_bytestring: bool = False, + _expect_unicode: bool = False, ) -> None: ... def literal_processor(self, dialect): ... def bind_processor(self, dialect): ... @@ -57,11 +57,11 @@ class Text(String): class Unicode(String): __visit_name__: str - def __init__(self, length: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... class UnicodeText(Text): __visit_name__: str - def __init__(self, length: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... class Integer(_LookupExpressionAdapter, TypeEngine): __visit_name__: str @@ -84,10 +84,10 @@ class Numeric(_LookupExpressionAdapter, TypeEngine): asdecimal: Any def __init__( self, - precision: Incomplete | None = ..., - scale: Incomplete | None = ..., - decimal_return_scale: Incomplete | None = ..., - asdecimal: bool = ..., + precision: Incomplete | None = None, + scale: Incomplete | None = None, + decimal_return_scale: Incomplete | None = None, + asdecimal: bool = True, ) -> None: ... def get_dbapi_type(self, dbapi): ... def literal_processor(self, dialect): ... @@ -103,14 +103,14 @@ class Float(Numeric): asdecimal: Any decimal_return_scale: Any def __init__( - self, precision: Incomplete | None = ..., asdecimal: bool = ..., decimal_return_scale: Incomplete | None = ... + self, precision: Incomplete | None = None, asdecimal: bool = False, decimal_return_scale: Incomplete | None = None ) -> None: ... def result_processor(self, dialect, coltype): ... class DateTime(_LookupExpressionAdapter, TypeEngine): __visit_name__: str timezone: Any - def __init__(self, timezone: bool = ...) -> None: ... + def __init__(self, timezone: bool = False) -> None: ... def get_dbapi_type(self, dbapi): ... @property def python_type(self): ... @@ -124,14 +124,14 @@ class Date(_LookupExpressionAdapter, TypeEngine): class Time(_LookupExpressionAdapter, TypeEngine): __visit_name__: str timezone: Any - def __init__(self, timezone: bool = ...) -> None: ... + def __init__(self, timezone: bool = False) -> None: ... def get_dbapi_type(self, dbapi): ... @property def python_type(self): ... class _Binary(TypeEngine): length: Any - def __init__(self, length: Incomplete | None = ...) -> None: ... + def __init__(self, length: Incomplete | None = None) -> None: ... def literal_processor(self, dialect): ... @property def python_type(self): ... @@ -142,7 +142,7 @@ class _Binary(TypeEngine): class LargeBinary(_Binary): __visit_name__: str - def __init__(self, length: Incomplete | None = ...) -> None: ... + def __init__(self, length: Incomplete | None = None) -> None: ... class SchemaType(SchemaEventTarget): name: Any @@ -151,19 +151,19 @@ class SchemaType(SchemaEventTarget): inherit_schema: Any def __init__( self, - name: Incomplete | None = ..., - schema: Incomplete | None = ..., - metadata: Incomplete | None = ..., - inherit_schema: bool = ..., - quote: Incomplete | None = ..., - _create_events: bool = ..., + name: Incomplete | None = None, + schema: Incomplete | None = None, + metadata: Incomplete | None = None, + inherit_schema: bool = False, + quote: Incomplete | None = None, + _create_events: bool = True, ) -> None: ... def copy(self, **kw): ... def adapt(self, impltype, **kw): ... @property def bind(self): ... - def create(self, bind: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... - def drop(self, bind: Incomplete | None = ..., checkfirst: bool = ...) -> None: ... + def create(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... + def drop(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... class Enum(Emulated, String, SchemaType): __visit_name__: str @@ -175,7 +175,7 @@ class Enum(Emulated, String, SchemaType): class Comparator(Concatenable.Comparator[Any]): ... comparator_factory: Any - def as_generic(self, allow_nulltype: bool = ...): ... + def as_generic(self, allow_nulltype: bool = False): ... def adapt_to_emulated(self, impltype, **kw): ... def adapt(self, impltype, **kw): ... def literal_processor(self, dialect): ... @@ -192,7 +192,7 @@ class PickleType(TypeDecorator): pickler: Any comparator: Any def __init__( - self, protocol=..., pickler: Incomplete | None = ..., comparator: Incomplete | None = ..., impl: Incomplete | None = ... + self, protocol=5, pickler: Incomplete | None = None, comparator: Incomplete | None = None, impl: Incomplete | None = None ) -> None: ... def __reduce__(self): ... def bind_processor(self, dialect): ... @@ -204,7 +204,7 @@ class Boolean(Emulated, TypeEngine, SchemaType): # type: ignore[misc] native: bool create_constraint: Any name: Any - def __init__(self, create_constraint: bool = ..., name: Incomplete | None = ..., _create_events: bool = ...) -> None: ... + def __init__(self, create_constraint: bool = False, name: Incomplete | None = None, _create_events: bool = True) -> None: ... @property def python_type(self): ... def literal_processor(self, dialect): ... @@ -222,7 +222,7 @@ class Interval(Emulated, _AbstractInterval, TypeDecorator): # type: ignore[misc second_precision: Any day_precision: Any def __init__( - self, native: bool = ..., second_precision: Incomplete | None = ..., day_precision: Incomplete | None = ... + self, native: bool = True, second_precision: Incomplete | None = None, day_precision: Incomplete | None = None ) -> None: ... @property def python_type(self): ... @@ -235,7 +235,7 @@ class JSON(Indexable, TypeEngine): hashable: bool NULL: Any none_as_null: Any - def __init__(self, none_as_null: bool = ...) -> None: ... + def __init__(self, none_as_null: bool = False) -> None: ... class JSONElementType(TypeEngine): def string_bind_processor(self, dialect): ... @@ -253,7 +253,7 @@ class JSON(Indexable, TypeEngine): def as_string(self): ... def as_integer(self): ... def as_float(self): ... - def as_numeric(self, precision, scale, asdecimal: bool = ...): ... + def as_numeric(self, precision, scale, asdecimal: bool = True): ... def as_json(self): ... comparator_factory: Any @property @@ -271,14 +271,14 @@ class ARRAY(SchemaEventTarget, Indexable, Concatenable, TypeEngine): class Comparator(Indexable.Comparator[_T], Concatenable.Comparator[_T], Generic[_T]): def contains(self, *arg, **kw) -> ColumnOperators[_T]: ... - def any(self, other, operator: Incomplete | None = ...): ... - def all(self, other, operator: Incomplete | None = ...): ... + def any(self, other, operator: Incomplete | None = None): ... + def all(self, other, operator: Incomplete | None = None): ... comparator_factory: Any item_type: Any as_tuple: Any dimensions: Any def __init__( - self, item_type, as_tuple: bool = ..., dimensions: Incomplete | None = ..., zero_indexes: bool = ... + self, item_type, as_tuple: bool = False, dimensions: Incomplete | None = None, zero_indexes: bool = False ) -> None: ... @property def hashable(self): ... @@ -316,7 +316,7 @@ class BIGINT(BigInteger): class TIMESTAMP(DateTime): __visit_name__: str - def __init__(self, timezone: bool = ...) -> None: ... + def __init__(self, timezone: bool = False) -> None: ... def get_dbapi_type(self, dbapi): ... class DATETIME(DateTime): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi index 0bd171287..1f496655b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi @@ -152,7 +152,7 @@ class TraversalComparatorStrategy(InternalTraversal, util.MemoizedSlots): def compare_bindparam(self, left, right, **kw): ... class ColIdentityComparatorStrategy(TraversalComparatorStrategy): - def compare_column_element(self, left, right, use_proxies: bool = ..., equivalents=..., **kw): ... + def compare_column_element(self, left, right, use_proxies: bool = True, equivalents=(), **kw): ... def compare_column(self, left, right, **kw): ... def compare_label(self, left, right, **kw): ... def compare_table(self, left, right, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi index dd3f84929..446590658 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi @@ -44,11 +44,11 @@ class TypeEngine(Traversible): @property def python_type(self) -> None: ... def with_variant(self, type_, dialect_name): ... - def as_generic(self, allow_nulltype: bool = ...): ... + def as_generic(self, allow_nulltype: bool = False): ... def dialect_impl(self, dialect): ... def adapt(self, cls, **kw): ... def coerce_compared_value(self, op, value): ... - def compile(self, dialect: Incomplete | None = ...): ... + def compile(self, dialect: Incomplete | None = None): ... class VisitableCheckKWArg(util.EnsureKWArgType, TraversibleType): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/util.pyi index 8bf4c57f9..50e9b145a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/util.pyi @@ -11,11 +11,11 @@ def find_left_clause_to_join_from(clauses, join_to, onclause): ... def visit_binary_product(fn, expr) -> None: ... def find_tables( clause, - check_columns: bool = ..., - include_aliases: bool = ..., - include_joins: bool = ..., - include_selects: bool = ..., - include_crud: bool = ..., + check_columns: bool = False, + include_aliases: bool = False, + include_joins: bool = False, + include_selects: bool = False, + include_crud: bool = False, ): ... def unwrap_order_by(clause): ... def unwrap_label_reference(element): ... @@ -35,23 +35,23 @@ class _repr_base: class _repr_row(_repr_base): row: Any max_chars: Any - def __init__(self, row, max_chars: int = ...) -> None: ... + def __init__(self, row, max_chars: int = 300) -> None: ... class _repr_params(_repr_base): params: Any ismulti: Any batches: Any max_chars: Any - def __init__(self, params, batches, max_chars: int = ..., ismulti: Incomplete | None = ...) -> None: ... + def __init__(self, params, batches, max_chars: int = 300, ismulti: Incomplete | None = None) -> None: ... def adapt_criterion_to_null(crit, nulls): ... -def splice_joins(left, right, stop_on: Incomplete | None = ...): ... +def splice_joins(left, right, stop_on: Incomplete | None = None): ... def reduce_columns(columns, *clauses, **kw): ... def criterion_as_pairs( expression, - consider_as_foreign_keys: Incomplete | None = ..., - consider_as_referenced_keys: Incomplete | None = ..., - any_operator: bool = ..., + consider_as_foreign_keys: Incomplete | None = None, + consider_as_referenced_keys: Incomplete | None = None, + any_operator: bool = False, ): ... class ClauseAdapter(visitors.ReplacingExternalTraversal): @@ -65,14 +65,14 @@ class ClauseAdapter(visitors.ReplacingExternalTraversal): def __init__( self, selectable, - equivalents: Incomplete | None = ..., - include_fn: Incomplete | None = ..., - exclude_fn: Incomplete | None = ..., - adapt_on_names: bool = ..., - anonymize_labels: bool = ..., - adapt_from_selectables: Incomplete | None = ..., + equivalents: Incomplete | None = None, + include_fn: Incomplete | None = None, + exclude_fn: Incomplete | None = None, + adapt_on_names: bool = False, + anonymize_labels: bool = False, + adapt_from_selectables: Incomplete | None = None, ) -> None: ... - def replace(self, col, _include_singleton_constants: bool = ...): ... + def replace(self, col, _include_singleton_constants: bool = False): ... class ColumnAdapter(ClauseAdapter): columns: Any @@ -81,14 +81,14 @@ class ColumnAdapter(ClauseAdapter): def __init__( self, selectable, - equivalents: Incomplete | None = ..., - adapt_required: bool = ..., - include_fn: Incomplete | None = ..., - exclude_fn: Incomplete | None = ..., - adapt_on_names: bool = ..., - allow_label_resolve: bool = ..., - anonymize_labels: bool = ..., - adapt_from_selectables: Incomplete | None = ..., + equivalents: Incomplete | None = None, + adapt_required: bool = False, + include_fn: Incomplete | None = None, + exclude_fn: Incomplete | None = None, + adapt_on_names: bool = False, + allow_label_resolve: bool = True, + anonymize_labels: bool = False, + adapt_from_selectables: Incomplete | None = None, ) -> None: ... class _IncludeExcludeMapping: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi index c3dd44793..b3a9cc591 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi @@ -5,7 +5,7 @@ class TraversibleType(type): class Traversible: def __class_getitem__(cls, key): ... - def get_children(self, omit_attrs=..., **kw): ... + def get_children(self, omit_attrs=(), **kw): ... class _InternalTraversalType(type): def __init__(cls, clsname, bases, clsdict) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi index e8366e906..0d2920e93 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi @@ -8,27 +8,27 @@ def expect_deprecated_20(*messages, **kw): ... def emits_warning_on(db, *messages): ... def uses_deprecated(*messages): ... def global_cleanup_assertions() -> None: ... -def eq_regex(a, b, msg: Incomplete | None = ...) -> None: ... -def eq_(a, b, msg: Incomplete | None = ...) -> None: ... -def ne_(a, b, msg: Incomplete | None = ...) -> None: ... -def le_(a, b, msg: Incomplete | None = ...) -> None: ... -def is_instance_of(a, b, msg: Incomplete | None = ...) -> None: ... -def is_none(a, msg: Incomplete | None = ...) -> None: ... -def is_not_none(a, msg: Incomplete | None = ...) -> None: ... -def is_true(a, msg: Incomplete | None = ...) -> None: ... -def is_false(a, msg: Incomplete | None = ...) -> None: ... -def is_(a, b, msg: Incomplete | None = ...) -> None: ... -def is_not(a, b, msg: Incomplete | None = ...) -> None: ... +def eq_regex(a, b, msg: Incomplete | None = None) -> None: ... +def eq_(a, b, msg: Incomplete | None = None) -> None: ... +def ne_(a, b, msg: Incomplete | None = None) -> None: ... +def le_(a, b, msg: Incomplete | None = None) -> None: ... +def is_instance_of(a, b, msg: Incomplete | None = None) -> None: ... +def is_none(a, msg: Incomplete | None = None) -> None: ... +def is_not_none(a, msg: Incomplete | None = None) -> None: ... +def is_true(a, msg: Incomplete | None = None) -> None: ... +def is_false(a, msg: Incomplete | None = None) -> None: ... +def is_(a, b, msg: Incomplete | None = None) -> None: ... +def is_not(a, b, msg: Incomplete | None = None) -> None: ... is_not_ = is_not -def in_(a, b, msg: Incomplete | None = ...) -> None: ... -def not_in(a, b, msg: Incomplete | None = ...) -> None: ... +def in_(a, b, msg: Incomplete | None = None) -> None: ... +def not_in(a, b, msg: Incomplete | None = None) -> None: ... not_in_ = not_in -def startswith_(a, fragment, msg: Incomplete | None = ...) -> None: ... -def eq_ignore_whitespace(a, b, msg: Incomplete | None = ...) -> None: ... +def startswith_(a, fragment, msg: Incomplete | None = None) -> None: ... +def eq_ignore_whitespace(a, b, msg: Incomplete | None = None) -> None: ... def assert_raises(except_cls, callable_, *args, **kw): ... def assert_raises_context_ok(except_cls, callable_, *args, **kw): ... def assert_raises_message(except_cls, msg, callable_, *args, **kwargs): ... @@ -37,8 +37,8 @@ def assert_raises_message_context_ok(except_cls, msg, callable_, *args, **kwargs class _ErrorContainer: error: Incomplete -def expect_raises(except_cls, check_context: bool = ...): ... -def expect_raises_message(except_cls, msg, check_context: bool = ...): ... +def expect_raises(except_cls, check_context: bool = True): ... +def expect_raises_message(except_cls, msg, check_context: bool = True): ... class AssertsCompiledSQL: test_statement: Incomplete @@ -47,29 +47,29 @@ class AssertsCompiledSQL: self, clause, result, - params: Incomplete | None = ..., - checkparams: Incomplete | None = ..., - for_executemany: bool = ..., - check_literal_execute: Incomplete | None = ..., - check_post_param: Incomplete | None = ..., - dialect: Incomplete | None = ..., - checkpositional: Incomplete | None = ..., - check_prefetch: Incomplete | None = ..., - use_default_dialect: bool = ..., - allow_dialect_select: bool = ..., - supports_default_values: bool = ..., - supports_default_metavalue: bool = ..., - literal_binds: bool = ..., - render_postcompile: bool = ..., - schema_translate_map: Incomplete | None = ..., - render_schema_translate: bool = ..., - default_schema_name: Incomplete | None = ..., - from_linting: bool = ..., - check_param_order: bool = ..., + params: Incomplete | None = None, + checkparams: Incomplete | None = None, + for_executemany: bool = False, + check_literal_execute: Incomplete | None = None, + check_post_param: Incomplete | None = None, + dialect: Incomplete | None = None, + checkpositional: Incomplete | None = None, + check_prefetch: Incomplete | None = None, + use_default_dialect: bool = False, + allow_dialect_select: bool = False, + supports_default_values: bool = True, + supports_default_metavalue: bool = True, + literal_binds: bool = False, + render_postcompile: bool = False, + schema_translate_map: Incomplete | None = None, + render_schema_translate: bool = False, + default_schema_name: Incomplete | None = None, + from_linting: bool = False, + check_param_order: bool = True, ) -> None: ... class ComparesTables: - def assert_tables_equal(self, table, reflected_table, strict_types: bool = ...) -> None: ... + def assert_tables_equal(self, table, reflected_table, strict_types: bool = False) -> None: ... def assert_types_base(self, c1, c2) -> None: ... class AssertsExecutionResults: @@ -77,7 +77,7 @@ class AssertsExecutionResults: def assert_list(self, result, class_, list_) -> None: ... def assert_row(self, class_, rowobj, desc) -> None: ... def assert_unordered_result(self, result, cls, *expected): ... - def sql_execution_asserter(self, db: Incomplete | None = ...): ... + def sql_execution_asserter(self, db: Incomplete | None = None): ... def assert_sql_execution(self, db, callable_, *rules): ... def assert_sql(self, db, callable_, rules): ... def assert_sql_count(self, db, callable_, count) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertsql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertsql.pyi index c02391805..c7534746d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertsql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertsql.pyi @@ -14,7 +14,7 @@ class CursorSQL(SQLMatchRule): statement: Any params: Any consume_statement: Any - def __init__(self, statement, params: Incomplete | None = ..., consume_statement: bool = ...) -> None: ... + def __init__(self, statement, params: Incomplete | None = None, consume_statement: bool = True) -> None: ... errormessage: Any is_consumed: bool def process_statement(self, execute_observed) -> None: ... @@ -23,7 +23,7 @@ class CompiledSQL(SQLMatchRule): statement: Any params: Any dialect: Any - def __init__(self, statement, params: Incomplete | None = ..., dialect: str = ...) -> None: ... + def __init__(self, statement, params: Incomplete | None = None, dialect: str = "default") -> None: ... is_consumed: bool errormessage: Any def process_statement(self, execute_observed) -> None: ... @@ -33,7 +33,7 @@ class RegexSQL(CompiledSQL): orig_regex: Any params: Any dialect: Any - def __init__(self, regex, params: Incomplete | None = ..., dialect: str = ...) -> None: ... + def __init__(self, regex, params: Incomplete | None = None, dialect: str = "default") -> None: ... class DialectSQL(CompiledSQL): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/engines.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/engines.pyi index 4f0abf918..1ef8da6db 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/engines.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/engines.pyi @@ -30,7 +30,7 @@ def assert_conns_closed(fn, *args, **kw) -> None: ... def rollback_open_connections(fn, *args, **kw) -> None: ... def close_first(fn, *args, **kw) -> None: ... def close_open_connections(fn, *args, **kw) -> None: ... -def all_dialects(exclude: Incomplete | None = ...) -> None: ... +def all_dialects(exclude: Incomplete | None = None) -> None: ... class ReconnectFixture: dbapi: Any @@ -39,34 +39,34 @@ class ReconnectFixture: def __init__(self, dbapi) -> None: ... def __getattr__(self, key: str): ... def connect(self, *args, **kwargs): ... - def shutdown(self, stop: bool = ...) -> None: ... + def shutdown(self, stop: bool = False) -> None: ... def restart(self) -> None: ... -def reconnecting_engine(url: Incomplete | None = ..., options: Incomplete | None = ...): ... +def reconnecting_engine(url: Incomplete | None = None, options: Incomplete | None = None): ... @overload def testing_engine( # type: ignore[misc] - url: URL | str | None = ..., - options: Mapping[str, Any] | None = ..., - future: bool | None = ..., - asyncio: Literal[False] = ..., - transfer_staticpool: bool = ..., + url: URL | str | None = None, + options: Mapping[str, Any] | None = None, + future: bool | None = None, + asyncio: Literal[False] = False, + transfer_staticpool: bool = False, ) -> Engine: ... @overload def testing_engine( - url: URL | str | None = ..., - options: Mapping[str, Any] | None = ..., - future: bool | None = ..., - asyncio: Literal[True] = ..., - transfer_staticpool: bool = ..., + url: URL | str | None = None, + options: Mapping[str, Any] | None = None, + future: bool | None = None, + asyncio: Literal[True] = True, + transfer_staticpool: bool = False, ) -> AsyncEngine: ... -def mock_engine(dialect_name: Incomplete | None = ...): ... +def mock_engine(dialect_name: Incomplete | None = None): ... class DBAPIProxyCursor: engine: Any connection: Any cursor: Any def __init__(self, engine, conn, *args, **kwargs) -> None: ... - def execute(self, stmt, parameters: Incomplete | None = ..., **kw): ... + def execute(self, stmt, parameters: Incomplete | None = None, **kw): ... def executemany(self, stmt, params, **kw): ... def __iter__(self): ... def __getattr__(self, key: str): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/exclusions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/exclusions.pyi index 7041a0266..f9956ef44 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/exclusions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/exclusions.pyi @@ -1,8 +1,8 @@ from _typeshed import Incomplete from typing import Any -def skip_if(predicate, reason: Incomplete | None = ...): ... -def fails_if(predicate, reason: Incomplete | None = ...): ... +def skip_if(predicate, reason: Incomplete | None = None): ... +def fails_if(predicate, reason: Incomplete | None = None): ... class compound: fails: Any @@ -22,17 +22,17 @@ class compound: def requires_tag(tagname): ... def tags(tagnames): ... -def only_if(predicate, reason: Incomplete | None = ...): ... -def succeeds_if(predicate, reason: Incomplete | None = ...): ... +def only_if(predicate, reason: Incomplete | None = None): ... +def succeeds_if(predicate, reason: Incomplete | None = None): ... class Predicate: @classmethod - def as_predicate(cls, predicate, description: Incomplete | None = ...): ... + def as_predicate(cls, predicate, description: Incomplete | None = None): ... class BooleanPredicate(Predicate): value: Any description: Any - def __init__(self, value, description: Incomplete | None = ...) -> None: ... + def __init__(self, value, description: Incomplete | None = None) -> None: ... def __call__(self, config): ... class SpecPredicate(Predicate): @@ -41,7 +41,7 @@ class SpecPredicate(Predicate): spec: Any description: Any def __init__( - self, db, op: Incomplete | None = ..., spec: Incomplete | None = ..., description: Incomplete | None = ... + self, db, op: Incomplete | None = None, spec: Incomplete | None = None, description: Incomplete | None = None ) -> None: ... def __call__(self, config): ... @@ -51,30 +51,30 @@ class LambdaPredicate(Predicate): kw: Any description: Any def __init__( - self, lambda_, description: Incomplete | None = ..., args: Incomplete | None = ..., kw: Incomplete | None = ... + self, lambda_, description: Incomplete | None = None, args: Incomplete | None = None, kw: Incomplete | None = None ): ... def __call__(self, config): ... class NotPredicate(Predicate): predicate: Any description: Any - def __init__(self, predicate, description: Incomplete | None = ...) -> None: ... + def __init__(self, predicate, description: Incomplete | None = None) -> None: ... def __call__(self, config): ... class OrPredicate(Predicate): predicates: Any description: Any - def __init__(self, predicates, description: Incomplete | None = ...) -> None: ... + def __init__(self, predicates, description: Incomplete | None = None) -> None: ... def __call__(self, config): ... def db_spec(*dbs): ... def open(): ... def closed(): ... -def fails(reason: Incomplete | None = ...): ... +def fails(reason: Incomplete | None = None): ... def future(fn, *arg): ... -def fails_on(db, reason: Incomplete | None = ...): ... +def fails_on(db, reason: Incomplete | None = None): ... def fails_on_everything_except(*dbs): ... -def skip(db, reason: Incomplete | None = ...): ... -def only_on(dbs, reason: Incomplete | None = ...): ... -def exclude(db, op, spec, reason: Incomplete | None = ...): ... +def skip(db, reason: Incomplete | None = None): ... +def only_on(dbs, reason: Incomplete | None = None): ... +def exclude(db, op, spec, reason: Incomplete | None = None): ... def against(config, *queries): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/profiling.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/profiling.pyi index 5d3f8927d..c2aa3d0d0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/profiling.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/profiling.pyi @@ -9,7 +9,7 @@ class ProfileStatsFile: data: Any dump: Any sort: Any - def __init__(self, filename, sort: str = ..., dump: Incomplete | None = ...): ... + def __init__(self, filename, sort: str = "cumulative", dump: Incomplete | None = None): ... @property def platform_key(self): ... def has_stats(self): ... @@ -17,5 +17,5 @@ class ProfileStatsFile: def reset_count(self) -> None: ... def replace(self, callcount) -> None: ... -def function_call_count(variance: float = ..., times: int = ..., warmup: int = ...): ... -def count_functions(variance: float = ...) -> None: ... +def function_call_count(variance: float = 0.05, times: int = 1, warmup: int = 0): ... +def count_functions(variance: float = 0.05) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi index 0da8a3883..907653ac5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi @@ -2,10 +2,10 @@ from _typeshed import Incomplete from typing import Any def non_refcount_gc_collect(*args) -> None: ... # only present on Python implementations with non-refcount gc -def gc_collect(generation: int = ...) -> None: ... +def gc_collect(generation: int = 2) -> None: ... def lazy_gc() -> None: ... def picklers(): ... -def random_choices(population, k: int = ...): ... +def random_choices(population, k: int = 1): ... def round_decimal(value, prec): ... class RandomSet(set[Any]): @@ -26,7 +26,7 @@ def provide_metadata(fn, *args, **kw): ... def flag_combinations(*combinations): ... def lambda_combinations(lambda_arg_sets, **kw): ... def resolve_lambda(__fn, **kw): ... -def metadata_fixture(ddl: str = ...): ... +def metadata_fixture(ddl: str = "function"): ... def force_drop_names(*names): ... class adict(dict[Any, Any]): @@ -35,5 +35,5 @@ class adict(dict[Any, Any]): get_all: Any def drop_all_tables_from_metadata(metadata, engine_or_connection) -> None: ... -def drop_all_tables(engine, inspector, schema: Incomplete | None = ..., include_names: Incomplete | None = ...) -> None: ... +def drop_all_tables(engine, inspector, schema: Incomplete | None = None, include_names: Incomplete | None = None) -> None: ... def teardown_events(event_cls): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/warnings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/warnings.pyi index 9aa4255ce..7c72efd57 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/warnings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/warnings.pyi @@ -4,4 +4,4 @@ class SATestSuiteWarning(sa_exc.SAWarning): ... def warn_test_suite(message) -> None: ... def setup_filters() -> None: ... -def assert_warnings(fn, warning_msgs, regex: bool = ...): ... +def assert_warnings(fn, warning_msgs, regex: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi index 9e197be62..0317b827b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi @@ -68,11 +68,11 @@ class ImmutableProperties(ImmutableContainer, Properties[_T], Generic[_T]): ... OrderedDict = dict -def sort_dictionary(d, key: Incomplete | None = ...): ... +def sort_dictionary(d, key: Incomplete | None = None): ... class OrderedSet(set[_T], Generic[_T]): @overload - def __init__(self, d: None = ...) -> None: ... + def __init__(self, d: None = None) -> None: ... @overload def __init__(self, d: Iterable[_T]) -> None: ... def add(self, element: _T) -> None: ... @@ -101,7 +101,7 @@ class OrderedSet(set[_T], Generic[_T]): __isub__ = difference_update # type: ignore[assignment] class IdentitySet: - def __init__(self, iterable: Incomplete | None = ...) -> None: ... + def __init__(self, iterable: Incomplete | None = None) -> None: ... def add(self, value) -> None: ... def __contains__(self, value): ... def remove(self, value) -> None: ... @@ -147,7 +147,7 @@ class WeakSequence: def __getitem__(self, index): ... class OrderedIdentitySet(IdentitySet): - def __init__(self, iterable: Incomplete | None = ...) -> None: ... + def __init__(self, iterable: Incomplete | None = None) -> None: ... class PopulateDict(dict[Any, Any]): creator: Any @@ -168,28 +168,28 @@ column_dict = dict # or pyright complains ordered_column_set = OrderedSet[_T] # noqa: Y026 -def unique_list(seq: Iterable[_T], hashfunc: Callable[[_T], Any] | None = ...) -> list[_T]: ... +def unique_list(seq: Iterable[_T], hashfunc: Callable[[_T], Any] | None = None) -> list[_T]: ... class UniqueAppender: data: Any - def __init__(self, data, via: Incomplete | None = ...) -> None: ... + def __init__(self, data, via: Incomplete | None = None) -> None: ... def append(self, item) -> None: ... def __iter__(self): ... def coerce_generator_arg(arg): ... -def to_list(x, default: Incomplete | None = ...): ... +def to_list(x, default: Incomplete | None = None): ... def has_intersection(set_, iterable): ... def to_set(x): ... def to_column_set(x): ... -def update_copy(d, _new: Incomplete | None = ..., **kw): ... +def update_copy(d, _new: Incomplete | None = None, **kw): ... def flatten_iterator(x) -> None: ... class LRUCache(dict[Any, Any]): capacity: Any threshold: Any size_alert: Any - def __init__(self, capacity: int = ..., threshold: float = ..., size_alert: Incomplete | None = ...) -> None: ... - def get(self, key, default: Incomplete | None = ...): ... + def __init__(self, capacity: int = 100, threshold: float = 0.5, size_alert: Incomplete | None = None) -> None: ... + def get(self, key, default: Incomplete | None = None): ... def __getitem__(self, key): ... def values(self): ... def setdefault(self, key, value): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_concurrency_py3k.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_concurrency_py3k.pyi index 502245182..4a8d24e50 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_concurrency_py3k.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_concurrency_py3k.pyi @@ -8,7 +8,7 @@ from .langhelpers import memoized_property def is_exit_exception(e): ... def await_only(awaitable: Coroutine[Any, Any, Any]) -> Any: ... def await_fallback(awaitable: Coroutine[Any, Any, Any]) -> Any: ... -async def greenlet_spawn(fn: Callable[..., Any], *args, _require_await: bool = ..., **kwargs) -> Any: ... +async def greenlet_spawn(fn: Callable[..., Any], *args, _require_await: bool = False, **kwargs) -> Any: ... class AsyncAdaptedLock: @memoized_property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_preloaded.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_preloaded.pyi index eaabad390..f1e73ecf3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_preloaded.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_preloaded.pyi @@ -3,7 +3,7 @@ from typing import Any class _ModuleRegistry: module_registry: Any prefix: Any - def __init__(self, prefix: str = ...) -> None: ... + def __init__(self, prefix: str = "sqlalchemy.") -> None: ... def preload_module(self, *deps): ... def import_prefix(self, path) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi index 5368e9e3f..6bee9382e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi @@ -51,7 +51,7 @@ class FullArgSpec(NamedTuple): class nullcontext: enter_result: Any - def __init__(self, enter_result: Incomplete | None = ...) -> None: ... + def __init__(self, enter_result: Incomplete | None = None) -> None: ... def __enter__(self): ... def __exit__(self, *excinfo: Unused) -> None: ... @@ -78,7 +78,7 @@ def b64encode(x): ... def decode_backslashreplace(text, encoding): ... def cmp(a, b): ... def raise_( - exception, with_traceback: Incomplete | None = ..., replace_context: Incomplete | None = ..., from_: bool = ... + exception, with_traceback: Incomplete | None = None, replace_context: Incomplete | None = None, from_: bool = False ) -> None: ... def u(s): ... def ue(s): ... @@ -88,12 +88,12 @@ callable = builtins.callable def safe_bytestring(text): ... def inspect_formatargspec( args, - varargs: Incomplete | None = ..., - varkw: Incomplete | None = ..., - defaults: Incomplete | None = ..., - kwonlyargs=..., - kwonlydefaults=..., - annotations=..., + varargs: Incomplete | None = None, + varkw: Incomplete | None = None, + defaults: Incomplete | None = None, + kwonlyargs=(), + kwonlydefaults={}, + annotations={}, formatarg=..., formatvarargs=..., formatvarkw=..., @@ -103,6 +103,6 @@ def inspect_formatargspec( ): ... def dataclass_fields(cls): ... def local_dataclass_fields(cls): ... -def raise_from_cause(exception, exc_info: Incomplete | None = ...) -> None: ... -def reraise(tp, value, tb: Incomplete | None = ..., cause: Incomplete | None = ...) -> None: ... +def raise_from_cause(exception, exc_info: Incomplete | None = None) -> None: ... +def reraise(tp, value, tb: Incomplete | None = None, cause: Incomplete | None = None) -> None: ... def with_metaclass(meta, *bases, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi index ca733b24a..139b2b3ad 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi @@ -8,18 +8,20 @@ from .langhelpers import ( SQLALCHEMY_WARN_20: bool -def warn_deprecated(msg, version, stacklevel: int = ..., code: Incomplete | None = ...) -> None: ... -def warn_deprecated_limited(msg, args, version, stacklevel: int = ..., code: Incomplete | None = ...) -> None: ... -def warn_deprecated_20(msg, stacklevel: int = ..., code: Incomplete | None = ...) -> None: ... -def deprecated_cls(version, message, constructor: str = ...): ... -def deprecated_20_cls(clsname, alternative: Incomplete | None = ..., constructor: str = ..., becomes_legacy: bool = ...): ... +def warn_deprecated(msg, version, stacklevel: int = 3, code: Incomplete | None = None) -> None: ... +def warn_deprecated_limited(msg, args, version, stacklevel: int = 3, code: Incomplete | None = None) -> None: ... +def warn_deprecated_20(msg, stacklevel: int = 3, code: Incomplete | None = None) -> None: ... +def deprecated_cls(version, message, constructor: str = "__init__"): ... +def deprecated_20_cls( + clsname, alternative: Incomplete | None = None, constructor: str = "__init__", becomes_legacy: bool = False +): ... def deprecated( version, - message: Incomplete | None = ..., - add_deprecation_to_docstring: bool = ..., - warning: Incomplete | None = ..., - enable_warnings: bool = ..., + message: Incomplete | None = None, + add_deprecation_to_docstring: bool = True, + warning: Incomplete | None = None, + enable_warnings: bool = True, ): ... def moved_20(message, **kw): ... -def deprecated_20(api_name, alternative: Incomplete | None = ..., becomes_legacy: bool = ..., **kw): ... +def deprecated_20(api_name, alternative: Incomplete | None = None, becomes_legacy: bool = False, **kw): ... def deprecated_params(**specs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi index 021eee885..d57b9adde 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi @@ -12,7 +12,7 @@ def md5_hex(x): ... class safe_reraise: warn_only: Any - def __init__(self, warn_only: bool = ...) -> None: ... + def __init__(self, warn_only: bool = False) -> None: ... def __enter__(self) -> None: ... def __exit__( self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None @@ -25,34 +25,34 @@ def method_is_overridden(instance_or_cls, against_method): ... def decode_slice(slc): ... def map_bits(fn, n) -> None: ... def decorator(target): ... -def public_factory(target, location, class_location: Incomplete | None = ...): ... +def public_factory(target, location, class_location: Incomplete | None = None): ... class PluginLoader: group: Any impls: Any auto_fn: Any - def __init__(self, group, auto_fn: Incomplete | None = ...) -> None: ... + def __init__(self, group, auto_fn: Incomplete | None = None) -> None: ... def clear(self) -> None: ... def load(self, name): ... def register(self, name, modulepath, objname): ... -def get_cls_kwargs(cls, _set: Incomplete | None = ...): ... +def get_cls_kwargs(cls, _set: Incomplete | None = None): ... def get_func_kwargs(func): ... -def get_callable_argspec(fn, no_self: bool = ..., _is_init: bool = ...): ... -def format_argspec_plus(fn, grouped: bool = ...): ... -def format_argspec_init(method, grouped: bool = ...): ... +def get_callable_argspec(fn, no_self: bool = False, _is_init: bool = False): ... +def format_argspec_plus(fn, grouped: bool = True): ... +def format_argspec_init(method, grouped: bool = True): ... def create_proxy_methods( - target_cls, target_cls_sphinx_name, proxy_cls_sphinx_name, classmethods=..., methods=..., attributes=... + target_cls, target_cls_sphinx_name, proxy_cls_sphinx_name, classmethods=(), methods=(), attributes=() ): ... def getargspec_init(method): ... def unbound_method_to_callable(func_or_cls): ... -def generic_repr(obj, additional_kw=..., to_inspect: Incomplete | None = ..., omit_kwarg=...): ... +def generic_repr(obj, additional_kw=(), to_inspect: Incomplete | None = None, omit_kwarg=()): ... class portable_instancemethod: target: Any name: Any kwargs: Any - def __init__(self, meth, kwargs=...) -> None: ... + def __init__(self, meth, kwargs=()) -> None: ... def __call__(self, *arg, **kw): ... def class_hierarchy(cls): ... @@ -60,19 +60,19 @@ def iterate_attributes(cls) -> None: ... def monkeypatch_proxied_specials( into_cls, from_cls, - skip: Incomplete | None = ..., - only: Incomplete | None = ..., - name: str = ..., - from_instance: Incomplete | None = ..., + skip: Incomplete | None = None, + only: Incomplete | None = None, + name: str = "self.proxy", + from_instance: Incomplete | None = None, ) -> None: ... def methods_equivalent(meth1, meth2): ... -def as_interface(obj, cls: Incomplete | None = ..., methods: Incomplete | None = ..., required: Incomplete | None = ...): ... +def as_interface(obj, cls: Incomplete | None = None, methods: Incomplete | None = None, required: Incomplete | None = None): ... class memoized_property(Generic[_R]): fget: Callable[..., _R] __doc__: str __name__: str - def __init__(self, fget: Callable[..., _R], doc: str | None = ...) -> None: ... + def __init__(self, fget: Callable[..., _R], doc: str | None = None) -> None: ... @overload def __get__(self, obj: None, cls: Unused) -> Self: ... @overload @@ -87,7 +87,7 @@ class HasMemoized: fget: Callable[..., _R] __doc__: str __name__: str - def __init__(self, fget: Callable[..., _R], doc: str | None = ...) -> None: ... + def __init__(self, fget: Callable[..., _R], doc: str | None = None) -> None: ... @overload def __get__(self, obj: None, cls: Unused) -> Self: ... @overload @@ -102,11 +102,11 @@ class MemoizedSlots: def asbool(obj): ... def bool_or_str(*text): ... def asint(value): ... -def coerce_kw_type(kw, key, type_, flexi_bool: bool = ..., dest: Incomplete | None = ...) -> None: ... +def coerce_kw_type(kw, key, type_, flexi_bool: bool = True, dest: Incomplete | None = None) -> None: ... def constructor_key(obj, cls): ... def constructor_copy(obj, cls, *args, **kw): ... def counter(): ... -def duck_type_collection(specimen, default: Incomplete | None = ...): ... +def duck_type_collection(specimen, default: Incomplete | None = None): ... def assert_arg_type(arg, argtype, name): ... def dictlike_iteritems(dictlike): ... @@ -133,25 +133,25 @@ class hybridmethod: def classlevel(self, func): ... class _symbol(int): - def __new__(cls, name, doc: Incomplete | None = ..., canonical: Incomplete | None = ...): ... + def __new__(cls, name, doc: Incomplete | None = None, canonical: Incomplete | None = None): ... def __reduce__(self): ... class symbol: symbols: Any - def __new__(cls, name, doc: Incomplete | None = ..., canonical: Incomplete | None = ...): ... + def __new__(cls, name, doc: Incomplete | None = None, canonical: Incomplete | None = None): ... @classmethod - def parse_user_argument(cls, arg, choices, name, resolve_symbol_names: bool = ...): ... + def parse_user_argument(cls, arg, choices, name, resolve_symbol_names: bool = False): ... def set_creation_order(instance) -> None: ... def warn_exception(func, *args, **kwargs): ... -def ellipses_string(value, len_: int = ...): ... +def ellipses_string(value, len_: int = 25): ... class _hash_limit_string(compat.text_type): def __new__(cls, value, num, args): ... def __hash__(self) -> int: ... def __eq__(self, other): ... -def warn(msg, code: Incomplete | None = ...) -> None: ... +def warn(msg, code: Incomplete | None = None) -> None: ... def warn_limited(msg, args) -> None: ... def only_once(fn, retry_on_exception): ... def chop_traceback(tb, exclude_prefix=..., exclude_suffix=...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/queue.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/queue.pyi index 7a26c25d7..852018369 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/queue.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/queue.pyi @@ -9,27 +9,27 @@ class Queue: not_empty: Any not_full: Any use_lifo: Any - def __init__(self, maxsize: int = ..., use_lifo: bool = ...) -> None: ... + def __init__(self, maxsize: int = 0, use_lifo: bool = False) -> None: ... def qsize(self): ... def empty(self): ... def full(self): ... - def put(self, item, block: bool = ..., timeout: Incomplete | None = ...) -> None: ... + def put(self, item, block: bool = True, timeout: Incomplete | None = None) -> None: ... def put_nowait(self, item): ... - def get(self, block: bool = ..., timeout: Incomplete | None = ...): ... + def get(self, block: bool = True, timeout: Incomplete | None = None): ... def get_nowait(self): ... class AsyncAdaptedQueue: await_: Any use_lifo: Any maxsize: Any - def __init__(self, maxsize: int = ..., use_lifo: bool = ...) -> None: ... + def __init__(self, maxsize: int = 0, use_lifo: bool = False) -> None: ... def empty(self): ... def full(self): ... def qsize(self): ... def put_nowait(self, item): ... - def put(self, item, block: bool = ..., timeout: Incomplete | None = ...): ... + def put(self, item, block: bool = True, timeout: Incomplete | None = None): ... def get_nowait(self): ... - def get(self, block: bool = ..., timeout: Incomplete | None = ...): ... + def get(self, block: bool = True, timeout: Incomplete | None = None): ... class FallbackAsyncAdaptedQueue(AsyncAdaptedQueue): await_: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/topological.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/topological.pyi index 04428e1ba..7f54e1a05 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/topological.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/topological.pyi @@ -1,3 +1,3 @@ def sort_as_subsets(tuples, allitems) -> None: ... -def sort(tuples, allitems, deterministic_order: bool = ...) -> None: ... +def sort(tuples, allitems, deterministic_order: bool = True) -> None: ... def find_cycles(tuples, allitems): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/base.pyi index 2cf93d4e7..c705acb30 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/base.pyi @@ -19,7 +19,7 @@ class AsyncIndirectBase(AsyncBase[_T]): class AiofilesContextManager(Generic[_T_co, _T_contra, _V_co]): def __init__(self, coro: Coroutine[_T_co, _T_contra, _V_co]) -> None: ... def send(self, value: _T_contra) -> _T_co: ... - def throw(self, typ: type[BaseException], val: BaseException | object = ..., tb: TracebackType | None = ...) -> _T_co: ... + def throw(self, typ: type[BaseException], val: BaseException | object = None, tb: TracebackType | None = None) -> _T_co: ... def close(self) -> None: ... @property def gi_frame(self) -> FrameType: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi index e7d3edb47..c87bb2a0d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi @@ -12,8 +12,8 @@ path = ospath async def stat( path: FileDescriptorOrPath, *, - dir_fd: int | None = ..., - follow_symlinks: bool = ..., + dir_fd: int | None = None, + follow_symlinks: bool = True, loop: AbstractEventLoop | None = ..., executor: Any = ..., ) -> stat_result: ... @@ -21,8 +21,8 @@ async def rename( src: StrOrBytesPath, dst: StrOrBytesPath, *, - src_dir_fd: int | None = ..., - dst_dir_fd: int | None = ..., + src_dir_fd: int | None = None, + dst_dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ..., ) -> None: ... @@ -30,26 +30,26 @@ async def replace( src: StrOrBytesPath, dst: StrOrBytesPath, *, - src_dir_fd: int | None = ..., - dst_dir_fd: int | None = ..., + src_dir_fd: int | None = None, + dst_dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ..., ) -> None: ... async def remove( - path: StrOrBytesPath, *, dir_fd: int | None = ..., loop: AbstractEventLoop | None = ..., executor: Any = ... + path: StrOrBytesPath, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... async def mkdir( - path: StrOrBytesPath, mode: int = ..., *, dir_fd: int | None = ..., loop: AbstractEventLoop | None = ..., executor: Any = ... + path: StrOrBytesPath, mode: int = 511, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... async def makedirs( - name: StrOrBytesPath, mode: int = ..., exist_ok: bool = ..., *, loop: AbstractEventLoop | None = ..., executor: Any = ... + name: StrOrBytesPath, mode: int = 511, exist_ok: bool = False, *, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... async def rmdir( - path: StrOrBytesPath, *, dir_fd: int | None = ..., loop: AbstractEventLoop | None = ..., executor: Any = ... + path: StrOrBytesPath, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... async def removedirs(name: StrOrBytesPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> None: ... @overload -async def scandir(path: None = ..., *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> _ScandirIterator[str]: ... +async def scandir(path: None = None, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> _ScandirIterator[str]: ... @overload async def scandir(path: int, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> _ScandirIterator[str]: ... @overload diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/tempfile/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/tempfile/__init__.pyi index 95af3e1c7..bc59935d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/tempfile/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/tempfile/__init__.pyi @@ -26,15 +26,15 @@ _T_contra = TypeVar("_T_contra", contravariant=True) @overload def NamedTemporaryFile( mode: OpenTextMode, - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - delete: bool = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... # Unbuffered binary: returns a FileIO @@ -42,58 +42,58 @@ def NamedTemporaryFile( def NamedTemporaryFile( mode: OpenBinaryMode, buffering: Literal[0], - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - delete: bool = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncFileIO]: ... # Buffered binary reading/updating: AsyncBufferedReader @overload def NamedTemporaryFile( - mode: OpenBinaryModeReading | OpenBinaryModeUpdating = ..., - buffering: Literal[-1, 1] = ..., - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - delete: bool = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + mode: OpenBinaryModeReading | OpenBinaryModeUpdating = "w+b", + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... # Buffered binary writing: AsyncBufferedIOBase @overload def NamedTemporaryFile( mode: OpenBinaryModeWriting, - buffering: Literal[-1, 1] = ..., - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - delete: bool = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... # Text mode: always returns AsyncTextIOWrapper @overload def TemporaryFile( mode: OpenTextMode, - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... # Unbuffered binary: returns a FileIO @@ -101,159 +101,159 @@ def TemporaryFile( def TemporaryFile( mode: OpenBinaryMode, buffering: Literal[0], - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncFileIO]: ... # Buffered binary reading/updating: AsyncBufferedReader @overload def TemporaryFile( - mode: OpenBinaryModeReading | OpenBinaryModeUpdating = ..., - buffering: Literal[-1, 1] = ..., - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + mode: OpenBinaryModeReading | OpenBinaryModeUpdating = "w+b", + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... # Buffered binary writing: AsyncBufferedIOBase @overload def TemporaryFile( mode: OpenBinaryModeWriting, - buffering: Literal[-1, 1] = ..., - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... # Text mode: always returns AsyncTextIOWrapper @overload def SpooledTemporaryFile( - max_size: int = ..., + max_size: int = 0, *, mode: OpenTextMode, - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... @overload def SpooledTemporaryFile( max_size: int, mode: OpenTextMode, - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... # Unbuffered binary: returns a FileIO @overload def SpooledTemporaryFile( - max_size: int = ..., - mode: OpenBinaryMode = ..., + max_size: int = 0, + mode: OpenBinaryMode = "w+b", *, buffering: Literal[0], - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncFileIO]: ... @overload def SpooledTemporaryFile( max_size: int, mode: OpenBinaryMode, buffering: Literal[0], - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncFileIO]: ... # Buffered binary reading/updating: AsyncBufferedReader @overload def SpooledTemporaryFile( - max_size: int = ..., - mode: OpenBinaryModeReading | OpenBinaryModeUpdating = ..., - buffering: Literal[-1, 1] = ..., - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + max_size: int = 0, + mode: OpenBinaryModeReading | OpenBinaryModeUpdating = "w+b", + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... # Buffered binary writing: AsyncBufferedIOBase @overload def SpooledTemporaryFile( - max_size: int = ..., + max_size: int = 0, *, mode: OpenBinaryModeWriting, - buffering: Literal[-1, 1] = ..., - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... @overload def SpooledTemporaryFile( max_size: int, mode: OpenBinaryModeWriting, - buffering: Literal[-1, 1] = ..., - encoding: None = ..., - newline: None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: StrOrBytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... @overload def TemporaryDirectory( - suffix: str | None = ..., - prefix: str | None = ..., - dir: StrPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + suffix: str | None = None, + prefix: str | None = None, + dir: StrPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManagerTempDir[None, None, AsyncTemporaryDirectory]: ... @overload def TemporaryDirectory( - suffix: bytes | None = ..., - prefix: bytes | None = ..., - dir: BytesPath | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + suffix: bytes | None = None, + prefix: bytes | None = None, + dir: BytesPath | None = None, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManagerTempDir[None, None, AsyncTemporaryDirectory]: ... class AiofilesContextManagerTempDir(AiofilesContextManager[_T_co, _T_contra, _V_co]): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/threadpool/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/threadpool/__init__.pyi index 3176a3a3d..e9d9ec50e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/threadpool/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/threadpool/__init__.pyi @@ -22,16 +22,16 @@ _Opener: TypeAlias = Callable[[str, int], int] @overload def open( file: FileDescriptorOrPath, - mode: OpenTextMode = ..., - buffering: int = ..., - encoding: str | None = ..., - errors: str | None = ..., - newline: str | None = ..., - closefd: bool = ..., - opener: _Opener | None = ..., + mode: OpenTextMode = "r", + buffering: int = -1, + encoding: str | None = None, + errors: str | None = None, + newline: str | None = None, + closefd: bool = True, + opener: _Opener | None = None, *, - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... # Unbuffered binary: returns a FileIO @@ -40,14 +40,14 @@ def open( file: FileDescriptorOrPath, mode: OpenBinaryMode, buffering: Literal[0], - encoding: None = ..., - errors: None = ..., - newline: None = ..., - closefd: bool = ..., - opener: _Opener | None = ..., + encoding: None = None, + errors: None = None, + newline: None = None, + closefd: bool = True, + opener: _Opener | None = None, *, - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncFileIO]: ... # Buffered binary reading/updating: AsyncBufferedReader @@ -55,15 +55,15 @@ def open( def open( file: FileDescriptorOrPath, mode: OpenBinaryModeReading | OpenBinaryModeUpdating, - buffering: Literal[-1, 1] = ..., - encoding: None = ..., - errors: None = ..., - newline: None = ..., - closefd: bool = ..., - opener: _Opener | None = ..., + buffering: Literal[-1, 1] = -1, + encoding: None = None, + errors: None = None, + newline: None = None, + closefd: bool = True, + opener: _Opener | None = None, *, - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... # Buffered binary writing: AsyncBufferedIOBase @@ -71,15 +71,15 @@ def open( def open( file: FileDescriptorOrPath, mode: OpenBinaryModeWriting, - buffering: Literal[-1, 1] = ..., - encoding: None = ..., - errors: None = ..., - newline: None = ..., - closefd: bool = ..., - opener: _Opener | None = ..., + buffering: Literal[-1, 1] = -1, + encoding: None = None, + errors: None = None, + newline: None = None, + closefd: bool = True, + opener: _Opener | None = None, *, - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... # Buffering cannot be determined: fall back to _UnknownAsyncBinaryIO @@ -87,15 +87,15 @@ def open( def open( file: FileDescriptorOrPath, mode: OpenBinaryMode, - buffering: int = ..., - encoding: None = ..., - errors: None = ..., - newline: None = ..., - closefd: bool = ..., - opener: _Opener | None = ..., + buffering: int = -1, + encoding: None = None, + errors: None = None, + newline: None = None, + closefd: bool = True, + opener: _Opener | None = None, *, - loop: AbstractEventLoop | None = ..., - executor: Incomplete | None = ..., + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, _UnknownAsyncBinaryIO]: ... stdin: AsyncTextIndirectIOWrapper diff --git a/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/annoylib.pyi b/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/annoylib.pyi index cae6dd244..5e63a1394 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/annoylib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/annoylib.pyi @@ -10,7 +10,7 @@ class Annoy: def load(self, fn: str, prefault: bool = ...) -> Literal[True]: ... def save(self, fn: str, prefault: bool = ...) -> Literal[True]: ... @overload - def get_nns_by_item(self, i: int, n: int, search_k: int = ..., include_distances: Literal[False] = ...) -> list[int]: ... + def get_nns_by_item(self, i: int, n: int, search_k: int = ..., include_distances: Literal[False] = False) -> list[int]: ... @overload def get_nns_by_item( self, i: int, n: int, search_k: int, include_distances: Literal[True] @@ -21,7 +21,7 @@ class Annoy: ) -> tuple[list[int], list[float]]: ... @overload def get_nns_by_vector( - self, vector: _Vector, n: int, search_k: int = ..., include_distances: Literal[False] = ... + self, vector: _Vector, n: int, search_k: int = ..., include_distances: Literal[False] = False ) -> list[int]: ... @overload def get_nns_by_vector( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml index d4db0c1ac..4a08bb074 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.11.*" +version = "2.12.*" [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/async_context.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/async_context.pyi index 36c2d904b..d0fd6c1f8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/async_context.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/async_context.pyi @@ -3,11 +3,11 @@ from _typeshed import Incomplete from .context import Context as _Context class AsyncContext(_Context): - def __init__(self, *args, loop: Incomplete | None = ..., use_task_factory: bool = ..., **kwargs) -> None: ... + def __init__(self, *args, loop: Incomplete | None = None, use_task_factory: bool = True, **kwargs) -> None: ... def clear_trace_entities(self) -> None: ... class TaskLocalStorage: - def __init__(self, loop: Incomplete | None = ...) -> None: ... + def __init__(self, loop: Incomplete | None = None) -> None: ... def __setattr__(self, name: str, value) -> None: ... def __getattribute__(self, item: str): ... def clear(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/async_recorder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/async_recorder.pyi index d5d974908..146a71fc7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/async_recorder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/async_recorder.pyi @@ -24,7 +24,7 @@ class AsyncSubsegmentContextManager(SubsegmentContextManager): ) -> None: ... class AsyncAWSXRayRecorder(AWSXRayRecorder): - def capture_async(self, name: Incomplete | None = ...): ... - def in_segment_async(self, name: Incomplete | None = ..., **segment_kwargs): ... - def in_subsegment_async(self, name: Incomplete | None = ..., **subsegment_kwargs): ... + def capture_async(self, name: Incomplete | None = None): ... + def in_segment_async(self, name: Incomplete | None = None, **segment_kwargs): ... + def in_subsegment_async(self, name: Incomplete | None = None, **subsegment_kwargs): ... async def record_subsegment_async(self, wrapped, instance, args, kwargs, name, namespace, meta_processor): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/context.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/context.pyi index f495ac64a..d5f0806b6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/context.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/context.pyi @@ -15,11 +15,11 @@ MISSING_SEGMENT_MSG: str CXT_MISSING_STRATEGY_KEY: str class Context: - def __init__(self, context_missing: str = ...) -> None: ... + def __init__(self, context_missing: str = "LOG_ERROR") -> None: ... def put_segment(self, segment: Segment) -> None: ... - def end_segment(self, end_time: time.struct_time | None = ...) -> None: ... + def end_segment(self, end_time: time.struct_time | None = None) -> None: ... def put_subsegment(self, subsegment: Subsegment) -> None: ... - def end_subsegment(self, end_time: time.struct_time | None = ...): ... + def end_subsegment(self, end_time: time.struct_time | None = None): ... def get_trace_entity(self): ... def set_trace_entity(self, trace_entity: Entity) -> None: ... def clear_trace_entities(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/daemon_config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/daemon_config.pyi index 2cbec2ee8..3ac5aa77f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/daemon_config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/daemon_config.pyi @@ -4,7 +4,7 @@ DAEMON_ADDRESS_KEY: str DEFAULT_ADDRESS: str class DaemonConfig: - def __init__(self, daemon_address=...) -> None: ... + def __init__(self, daemon_address="127.0.0.1:2000") -> None: ... @property def udp_ip(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/emitters/udp_emitter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/emitters/udp_emitter.pyi index 4d5bfb3f2..9b4a5dfce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/emitters/udp_emitter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/emitters/udp_emitter.pyi @@ -10,7 +10,7 @@ PROTOCOL_DELIMITER: str DEFAULT_DAEMON_ADDRESS: str class UDPEmitter: - def __init__(self, daemon_address=...) -> None: ... + def __init__(self, daemon_address="127.0.0.1:2000") -> None: ... def send_entity(self, entity) -> None: ... def set_daemon_address(self, address) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/lambda_launcher.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/lambda_launcher.pyi index 0c254da64..622213441 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/lambda_launcher.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/lambda_launcher.pyi @@ -18,7 +18,7 @@ def check_in_lambda(): ... class LambdaContext(Context): def __init__(self) -> None: ... def put_segment(self, segment) -> None: ... - def end_segment(self, end_time: Incomplete | None = ...) -> None: ... + def end_segment(self, end_time: Incomplete | None = None) -> None: ... def put_subsegment(self, subsegment) -> None: ... def get_trace_entity(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/dummy_entities.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/dummy_entities.pyi index 018d9f3d4..cf2fd6e88 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/dummy_entities.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/dummy_entities.pyi @@ -5,25 +5,25 @@ from .traceid import TraceId as TraceId class DummySegment(Segment): sampled: bool - def __init__(self, name: str = ...) -> None: ... + def __init__(self, name: str = "dummy") -> None: ... def set_aws(self, aws_meta) -> None: ... def put_http_meta(self, key, value) -> None: ... def put_annotation(self, key, value) -> None: ... - def put_metadata(self, key, value, namespace: str = ...) -> None: ... + def put_metadata(self, key, value, namespace: str = "default") -> None: ... def set_user(self, user) -> None: ... def set_service(self, service_info) -> None: ... def apply_status_code(self, status_code) -> None: ... - def add_exception(self, exception, stack, remote: bool = ...) -> None: ... + def add_exception(self, exception, stack, remote: bool = False) -> None: ... def serialize(self) -> None: ... class DummySubsegment(Subsegment): sampled: bool - def __init__(self, segment, name: str = ...) -> None: ... + def __init__(self, segment, name: str = "dummy") -> None: ... def set_aws(self, aws_meta) -> None: ... def put_http_meta(self, key, value) -> None: ... def put_annotation(self, key, value) -> None: ... - def put_metadata(self, key, value, namespace: str = ...) -> None: ... + def put_metadata(self, key, value, namespace: str = "default") -> None: ... def set_sql(self, sql) -> None: ... def apply_status_code(self, status_code) -> None: ... - def add_exception(self, exception, stack, remote: bool = ...) -> None: ... + def add_exception(self, exception, stack, remote: bool = False) -> None: ... def serialize(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/entity.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/entity.pyi index 8bba421c2..b07998812 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/entity.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/entity.pyi @@ -26,13 +26,13 @@ class Entity: cause: Any subsegments: Any end_time: Any - def __init__(self, name, entity_id: Incomplete | None = ...) -> None: ... - def close(self, end_time: Incomplete | None = ...) -> None: ... + def __init__(self, name, entity_id: Incomplete | None = None) -> None: ... + def close(self, end_time: Incomplete | None = None) -> None: ... def add_subsegment(self, subsegment) -> None: ... def remove_subsegment(self, subsegment) -> None: ... def put_http_meta(self, key, value) -> None: ... def put_annotation(self, key, value) -> None: ... - def put_metadata(self, key, value, namespace: str = ...) -> None: ... + def put_metadata(self, key, value, namespace: str = "default") -> None: ... def set_aws(self, aws_meta) -> None: ... throttle: bool def add_throttle_flag(self) -> None: ... @@ -41,7 +41,7 @@ class Entity: error: bool def add_error_flag(self) -> None: ... def apply_status_code(self, status_code) -> None: ... - def add_exception(self, exception: Exception, stack: StackSummary, remote: bool = ...) -> None: ... + def add_exception(self, exception: Exception, stack: StackSummary, remote: bool = False) -> None: ... def save_origin_trace_header(self, trace_header) -> None: ... def get_origin_trace_header(self): ... def serialize(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/facade_segment.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/facade_segment.pyi index e00b7edd3..e8b054ac2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/facade_segment.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/facade_segment.pyi @@ -9,16 +9,16 @@ MUTATION_UNSUPPORTED_MESSAGE: str class FacadeSegment(Segment): initializing: Any def __init__(self, name, entityid, traceid, sampled) -> None: ... - def close(self, end_time: Incomplete | None = ...) -> None: ... + def close(self, end_time: Incomplete | None = None) -> None: ... def put_http_meta(self, key, value) -> None: ... def put_annotation(self, key, value) -> None: ... - def put_metadata(self, key, value, namespace: str = ...) -> None: ... + def put_metadata(self, key, value, namespace: str = "default") -> None: ... def set_aws(self, aws_meta) -> None: ... def set_user(self, user) -> None: ... def add_throttle_flag(self) -> None: ... def add_fault_flag(self) -> None: ... def add_error_flag(self) -> None: ... - def add_exception(self, exception, stack, remote: bool = ...) -> None: ... + def add_exception(self, exception, stack, remote: bool = False) -> None: ... def apply_status_code(self, status_code) -> None: ... def serialize(self) -> None: ... def ready_to_send(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/segment.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/segment.pyi index e273cebd8..7c90e37a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/segment.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/segment.pyi @@ -15,7 +15,7 @@ class SegmentContextManager: segment_kwargs: dict[str, Any] recorder: AWSXRayRecorder segment: Segment - def __init__(self, recorder: AWSXRayRecorder, name: str | None = ..., **segment_kwargs) -> None: ... + def __init__(self, recorder: AWSXRayRecorder, name: str | None = None, **segment_kwargs) -> None: ... def __enter__(self): ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None @@ -31,7 +31,7 @@ class Segment(Entity): parent_id: str | None service: dict[str, str] def __init__( - self, name, entityid: str | None = ..., traceid: str | None = ..., parent_id: str | None = ..., sampled: bool = ... + self, name, entityid: str | None = None, traceid: str | None = None, parent_id: str | None = None, sampled: bool = True ) -> None: ... def add_subsegment(self, subsegment: Subsegment) -> None: ... def increment(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/subsegment.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/subsegment.pyi index ddce021dd..45a6ae889 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/subsegment.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/subsegment.pyi @@ -19,7 +19,7 @@ class SubsegmentContextManager: subsegment_kwargs: dict[str, Any] | None recorder: AWSXRayRecorder subsegment: Subsegment - def __init__(self, recorder: AWSXRayRecorder, name: Incomplete | None = ..., **subsegment_kwargs) -> None: ... + def __init__(self, recorder: AWSXRayRecorder, name: Incomplete | None = None, **subsegment_kwargs) -> None: ... def __call__(self, wrapped, instance, args: list[Any], kwargs: dict[str, Any]): ... def __enter__(self) -> Subsegment: ... def __exit__( @@ -35,6 +35,6 @@ class Subsegment(Entity): def __init__(self, name: str, namespace: str, segment: Segment) -> None: ... def add_subsegment(self, subsegment: Subsegment) -> None: ... def remove_subsegment(self, subsegment: Subsegment) -> None: ... - def close(self, end_time: time.struct_time | None = ...) -> None: ... + def close(self, end_time: time.struct_time | None = None) -> None: ... def set_sql(self, sql: dict[str, Any]) -> None: ... def to_dict(self) -> dict[str, Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/throwable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/throwable.pyi index bc26c4c26..a7be6d684 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/throwable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/throwable.pyi @@ -10,5 +10,5 @@ class Throwable: type: Any remote: Any stack: Any - def __init__(self, exception, stack, remote: bool = ...) -> None: ... + def __init__(self, exception, stack, remote: bool = False) -> None: ... def to_dict(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/trace_header.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/trace_header.pyi index cb34fbaab..8b5514238 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/trace_header.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/models/trace_header.pyi @@ -10,7 +10,7 @@ HEADER_DELIMITER: str class TraceHeader: def __init__( - self, root: str | None = ..., parent: str | None = ..., sampled: bool | None = ..., data: dict[str, Any] | None = ... + self, root: str | None = None, parent: str | None = None, sampled: bool | None = None, data: dict[str, Any] | None = None ) -> None: ... @classmethod def from_header_str(cls, header) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/patcher.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/patcher.pyi index e0c095775..b33041f3f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/patcher.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/patcher.pyi @@ -10,5 +10,5 @@ log: Logger SUPPORTED_MODULES: Any NO_DOUBLE_PATCH: Any -def patch_all(double_patch: bool = ...) -> None: ... -def patch(modules_to_patch: Iterable[str], raise_errors: bool = ..., ignore_module_patterns: str | None = ...) -> None: ... +def patch_all(double_patch: bool = False) -> None: ... +def patch(modules_to_patch: Iterable[str], raise_errors: bool = True, ignore_module_patterns: str | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/plugins/ec2_plugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/plugins/ec2_plugin.pyi index 801eff411..1d6578904 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/plugins/ec2_plugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/plugins/ec2_plugin.pyi @@ -8,6 +8,6 @@ IMDS_URL: str def initialize() -> None: ... def get_token(): ... -def get_metadata(token: Incomplete | None = ...): ... +def get_metadata(token: Incomplete | None = None): ... def parse_metadata_json(json_str): ... -def do_request(url, headers: Incomplete | None = ..., method: str = ...): ... +def do_request(url, headers: Incomplete | None = None, method: str = "GET"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/recorder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/recorder.pyi index 7cfbf5b17..88f90f4ae 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/recorder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/recorder.pyi @@ -36,39 +36,39 @@ class AWSXRayRecorder: def __init__(self) -> None: ... def configure( self, - sampling: bool | None = ..., - plugins: Iterable[str] | None = ..., - context_missing: str | None = ..., - sampling_rules: dict[str, Any] | str | None = ..., - daemon_address: str | None = ..., - service: str | None = ..., - context: Context | None = ..., - emitter: UDPEmitter | None = ..., - streaming: DefaultStreaming | None = ..., - dynamic_naming: DefaultDynamicNaming | None = ..., - streaming_threshold: int | None = ..., - max_trace_back: int | None = ..., - sampler: LocalSampler | DefaultSampler | None = ..., - stream_sql: bool | None = ..., + sampling: bool | None = None, + plugins: Iterable[str] | None = None, + context_missing: str | None = None, + sampling_rules: dict[str, Any] | str | None = None, + daemon_address: str | None = None, + service: str | None = None, + context: Context | None = None, + emitter: UDPEmitter | None = None, + streaming: DefaultStreaming | None = None, + dynamic_naming: DefaultDynamicNaming | None = None, + streaming_threshold: int | None = None, + max_trace_back: int | None = None, + sampler: LocalSampler | DefaultSampler | None = None, + stream_sql: bool | None = True, ) -> None: ... - def in_segment(self, name: str | None = ..., **segment_kwargs) -> SegmentContextManager: ... - def in_subsegment(self, name: str | None = ..., **subsegment_kwargs) -> SubsegmentContextManager: ... + def in_segment(self, name: str | None = None, **segment_kwargs) -> SegmentContextManager: ... + def in_subsegment(self, name: str | None = None, **subsegment_kwargs) -> SubsegmentContextManager: ... def begin_segment( - self, name: str | None = ..., traceid: str | None = ..., parent_id: str | None = ..., sampling: bool | None = ... + self, name: str | None = None, traceid: str | None = None, parent_id: str | None = None, sampling: bool | None = None ) -> Segment | DummySegment: ... - def end_segment(self, end_time: time.struct_time | None = ...) -> None: ... + def end_segment(self, end_time: time.struct_time | None = None) -> None: ... def current_segment(self) -> Segment: ... - def begin_subsegment(self, name: str, namespace: str = ...) -> DummySubsegment | Subsegment | None: ... + def begin_subsegment(self, name: str, namespace: str = "local") -> DummySubsegment | Subsegment | None: ... def current_subsegment(self) -> Subsegment | DummySubsegment | None: ... - def end_subsegment(self, end_time: time.struct_time | None = ...) -> None: ... + def end_subsegment(self, end_time: time.struct_time | None = None) -> None: ... def put_annotation(self, key: str, value: Any) -> None: ... - def put_metadata(self, key: str, value: Any, namespace: str = ...) -> None: ... + def put_metadata(self, key: str, value: Any, namespace: str = "default") -> None: ... def is_sampled(self) -> bool: ... def get_trace_entity(self) -> Segment | Subsegment | DummySegment | DummySubsegment: ... def set_trace_entity(self, trace_entity: Segment | Subsegment | DummySegment | DummySubsegment) -> None: ... def clear_trace_entities(self) -> None: ... def stream_subsegments(self) -> None: ... - def capture(self, name: str | None = ...) -> SubsegmentContextManager: ... + def capture(self, name: str | None = None) -> SubsegmentContextManager: ... def record_subsegment( self, wrapped: Callable[..., Any], diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/reservoir.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/reservoir.pyi index aa5836b3e..e88695202 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/reservoir.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/reservoir.pyi @@ -4,5 +4,5 @@ class Reservoir: traces_per_sec: Any used_this_sec: int this_sec: Any - def __init__(self, traces_per_sec: int = ...) -> None: ... + def __init__(self, traces_per_sec: int = 0) -> None: ... def take(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/sampler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/sampler.pyi index 76882c9fa..b681bba35 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/sampler.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/sampler.pyi @@ -9,5 +9,5 @@ SUPPORTED_RULE_VERSION: Any class LocalSampler: def __init__(self, rules=...) -> None: ... - def should_trace(self, sampling_req: Incomplete | None = ...): ... + def should_trace(self, sampling_req: Incomplete | None = None): ... def load_local_rules(self, rules) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/sampling_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/sampling_rule.pyi index ff8f23b7c..9c56eb67e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/sampling_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/local/sampling_rule.pyi @@ -10,7 +10,7 @@ class SamplingRule: METHOD: str PATH: str SERVICE_NAME: str - def __init__(self, rule_dict, version: int = ..., default: bool = ...) -> None: ... + def __init__(self, rule_dict, version: int = 2, default: bool = False) -> None: ... def applies(self, host, method, path): ... @property def fixed_target(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/sampler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/sampler.pyi index eb5143d56..e9dd29095 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/sampler.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/sampler.pyi @@ -13,9 +13,9 @@ log: Any class DefaultSampler: def __init__(self) -> None: ... def start(self) -> None: ... - def should_trace(self, sampling_req: Incomplete | None = ...): ... + def should_trace(self, sampling_req: Incomplete | None = None): ... def load_local_rules(self, rules) -> None: ... - def load_settings(self, daemon_config, context, origin: Incomplete | None = ...) -> None: ... + def load_settings(self, daemon_config, context, origin: Incomplete | None = None) -> None: ... @property def xray_client(self): ... @xray_client.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/sampling_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/sampling_rule.pyi index 0893db197..268fc401c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/sampling_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/sampling/sampling_rule.pyi @@ -10,11 +10,11 @@ class SamplingRule: priority, rate, reservoir_size, - host: Incomplete | None = ..., - method: Incomplete | None = ..., - path: Incomplete | None = ..., - service: Incomplete | None = ..., - service_type: Incomplete | None = ..., + host: Incomplete | None = None, + method: Incomplete | None = None, + path: Incomplete | None = None, + service: Incomplete | None = None, + service_type: Incomplete | None = None, ) -> None: ... def match(self, sampling_req): ... def is_default(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/streaming/default_streaming.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/streaming/default_streaming.pyi index 21309ebd8..ab1c4119a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/streaming/default_streaming.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/streaming/default_streaming.pyi @@ -1,5 +1,5 @@ class DefaultStreaming: - def __init__(self, streaming_threshold: int = ...) -> None: ... + def __init__(self, streaming_threshold: int = 30) -> None: ... def is_eligible(self, segment): ... def stream(self, entity, callback) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/atomic_counter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/atomic_counter.pyi index 9cf8ebcd0..3bb8eca1c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/atomic_counter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/atomic_counter.pyi @@ -2,8 +2,8 @@ from typing import Any class AtomicCounter: value: Any - def __init__(self, initial: int = ...) -> None: ... - def increment(self, num: int = ...): ... - def decrement(self, num: int = ...): ... + def __init__(self, initial: int = 0) -> None: ... + def increment(self, num: int = 1): ... + def decrement(self, num: int = 1): ... def get_current(self): ... def reset(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/search_pattern.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/search_pattern.pyi index 5206e243f..457f742ee 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/search_pattern.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/search_pattern.pyi @@ -1 +1 @@ -def wildcard_match(pattern, text, case_insensitive: bool = ...): ... +def wildcard_match(pattern, text, case_insensitive: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/stacktrace.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/stacktrace.pyi index 05d8dc2cf..6ebf8da33 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/stacktrace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/aws_xray_sdk/core/utils/stacktrace.pyi @@ -1,3 +1,3 @@ from _typeshed import Incomplete -def get_stacktrace(limit: Incomplete | None = ...): ... +def get_stacktrace(limit: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/core.pyi index c969492cd..cdca12ff1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/core.pyi @@ -15,33 +15,33 @@ class Locale: script: str | None variant: str | None def __init__( - self, language: str, territory: str | None = ..., script: str | None = ..., variant: str | None = ... + self, language: str, territory: str | None = None, script: str | None = None, variant: str | None = None ) -> None: ... @classmethod - def default(cls, category: str | None = ..., aliases: Mapping[str, str] = ...) -> Locale: ... + def default(cls, category: str | None = None, aliases: Mapping[str, str] = ...) -> Locale: ... @classmethod def negotiate( - cls, preferred: Iterable[str], available: Iterable[str], sep: str = ..., aliases: Mapping[str, str] = ... + cls, preferred: Iterable[str], available: Iterable[str], sep: str = "_", aliases: Mapping[str, str] = ... ) -> Locale | None: ... @overload @classmethod - def parse(cls, identifier: None, sep: str = ..., resolve_likely_subtags: bool = ...) -> None: ... + def parse(cls, identifier: None, sep: str = "_", resolve_likely_subtags: bool = True) -> None: ... @overload @classmethod - def parse(cls, identifier: str | Locale, sep: str = ..., resolve_likely_subtags: bool = ...) -> Locale: ... + def parse(cls, identifier: str | Locale, sep: str = "_", resolve_likely_subtags: bool = True) -> Locale: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... def __hash__(self) -> int: ... - def get_display_name(self, locale: Locale | str | None = ...) -> str | None: ... + def get_display_name(self, locale: Locale | str | None = None) -> str | None: ... @property def display_name(self) -> str | None: ... - def get_language_name(self, locale: Locale | str | None = ...) -> str | None: ... + def get_language_name(self, locale: Locale | str | None = None) -> str | None: ... @property def language_name(self) -> str | None: ... - def get_territory_name(self, locale: Locale | str | None = ...) -> str | None: ... + def get_territory_name(self, locale: Locale | str | None = None) -> str | None: ... @property def territory_name(self) -> str | None: ... - def get_script_name(self, locale: Locale | str | None = ...) -> str | None: ... + def get_script_name(self, locale: Locale | str | None = None) -> str | None: ... @property def script_name(self) -> str | None: ... @property @@ -123,12 +123,12 @@ class Locale: @property def unit_display_names(self) -> LocaleDataDict: ... -def default_locale(category: str | None = ..., aliases: Mapping[str, str] = ...) -> str | None: ... +def default_locale(category: str | None = None, aliases: Mapping[str, str] = ...) -> str | None: ... def negotiate_locale( - preferred: Iterable[str], available: Iterable[str], sep: str = ..., aliases: Mapping[str, str] = ... + preferred: Iterable[str], available: Iterable[str], sep: str = "_", aliases: Mapping[str, str] = ... ) -> str | None: ... -def parse_locale(identifier: str, sep: str = ...) -> tuple[str, str | None, str | None, str | None]: ... -def get_locale_identifier(tup: tuple[str, str | None, str | None, str | None], sep: str = ...) -> str: ... +def parse_locale(identifier: str, sep: str = "_") -> tuple[str, str | None, str | None, str | None]: ... +def get_locale_identifier(tup: tuple[str, str | None, str | None, str | None], sep: str = "_") -> str: ... def get_global(key: _GLOBAL_KEY) -> Mapping[str, Any]: ... _GLOBAL_KEY: TypeAlias = Literal[ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/dates.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/dates.pyi index 36a5b41a6..8a679a445 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/dates.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/dates.pyi @@ -17,67 +17,71 @@ _PredefinedTimeFormat: TypeAlias = Literal["full", "long", "medium", "short"] _Context: TypeAlias = Literal["format", "stand-alone"] def format_datetime( - datetime: _Instant = ..., - format: _PredefinedTimeFormat | str = ..., - tzinfo: tzinfo | None = ..., + datetime: _Instant = None, + format: _PredefinedTimeFormat | str = "medium", + tzinfo: tzinfo | None = None, locale: Locale | str | None = ..., ) -> str: ... -def format_date(date: date | None = ..., format: _PredefinedTimeFormat | str = ..., locale: Locale | str | None = ...) -> str: ... +def format_date( + date: date | None = None, format: _PredefinedTimeFormat | str = "medium", locale: Locale | str | None = ... +) -> str: ... def format_time( - time: time | datetime | float | None = ..., - format: _PredefinedTimeFormat | str = ..., - tzinfo: tzinfo | None = ..., + time: time | datetime | float | None = None, + format: _PredefinedTimeFormat | str = "medium", + tzinfo: tzinfo | None = None, locale: Locale | str | None = ..., ) -> str: ... def format_timedelta( delta: timedelta | int, - granularity: Literal["year", "month", "week", "day", "hour", "minute", "second"] = ..., - threshold: float = ..., - add_direction: bool = ..., - format: Literal["narrow", "short", "medium", "long"] = ..., + granularity: Literal["year", "month", "week", "day", "hour", "minute", "second"] = "second", + threshold: float = 0.85, + add_direction: bool = False, + format: Literal["narrow", "short", "medium", "long"] = "long", locale: Locale | str | None = ..., ) -> str: ... def format_skeleton( - skeleton: str, datetime: _Instant = ..., tzinfo: tzinfo | None = ..., fuzzy: bool = ..., locale: Locale | str | None = ... + skeleton: str, datetime: _Instant = None, tzinfo: tzinfo | None = None, fuzzy: bool = True, locale: Locale | str | None = ... ) -> str: ... def format_interval( start: _Instant, end: _Instant, - skeleton: str | None = ..., - tzinfo: tzinfo | None = ..., - fuzzy: bool = ..., + skeleton: str | None = None, + tzinfo: tzinfo | None = None, + fuzzy: bool = True, locale: Locale | str | None = ..., ) -> str: ... # Timezone Functionality @overload -def get_timezone(zone: str | BaseTzInfo | None = ...) -> BaseTzInfo: ... +def get_timezone(zone: str | BaseTzInfo | None = None) -> BaseTzInfo: ... @overload def get_timezone(zone: tzinfo) -> tzinfo: ... def get_timezone_gmt( - datetime: _Instant = ..., - width: Literal["long", "short", "iso8601", "iso8601_short"] = ..., + datetime: _Instant = None, + width: Literal["long", "short", "iso8601", "iso8601_short"] = "long", locale: Locale | str | None = ..., - return_z: bool = ..., + return_z: bool = False, ) -> str: ... _DtOrTzinfo: TypeAlias = datetime | tzinfo | str | int | time | None -def get_timezone_location(dt_or_tzinfo: _DtOrTzinfo = ..., locale: Locale | str | None = ..., return_city: bool = ...) -> str: ... +def get_timezone_location( + dt_or_tzinfo: _DtOrTzinfo = None, locale: Locale | str | None = ..., return_city: bool = False +) -> str: ... def get_timezone_name( - dt_or_tzinfo: _DtOrTzinfo = ..., - width: Literal["long", "short"] = ..., - uncommon: bool = ..., + dt_or_tzinfo: _DtOrTzinfo = None, + width: Literal["long", "short"] = "long", + uncommon: bool = False, locale: Locale | str | None = ..., - zone_variant: Literal["generic", "daylight", "standard"] | None = ..., - return_zone: bool = ..., + zone_variant: Literal["generic", "daylight", "standard"] | None = None, + return_zone: bool = False, ) -> str: ... # Note: While Babel accepts any tzinfo for the most part, the get_next_timeout_transition() # function requires a tzinfo that is produced by get_timezone()/pytz AND has DST info. # The typing here will help you with the first requirement, but will not protect against # pytz tzinfo's without DST info, like what you get from get_timezone("UTC") for instance. -def get_next_timezone_transition(zone: BaseTzInfo | None = ..., dt: _Instant = ...) -> TimezoneTransition: ... +def get_next_timezone_transition(zone: BaseTzInfo | None = None, dt: _Instant = None) -> TimezoneTransition: ... class TimezoneTransition: # This class itself is not included in the documentation, yet it is mentioned by name. @@ -87,7 +91,7 @@ class TimezoneTransition: to_tzinfo: tzinfo reference_date: datetime | None def __init__( - self, activates: datetime, from_tzinfo: tzinfo, to_tzinfo: tzinfo, reference_date: datetime | None = ... + self, activates: datetime, from_tzinfo: tzinfo, to_tzinfo: tzinfo, reference_date: datetime | None = None ) -> None: ... @property def from_tz(self) -> str: ... @@ -100,27 +104,31 @@ class TimezoneTransition: # Data Access def get_period_names( - width: Literal["abbreviated", "narrow", "wide"] = ..., context: _Context = ..., locale: Locale | str | None = ... + width: Literal["abbreviated", "narrow", "wide"] = "wide", context: _Context = "stand-alone", locale: Locale | str | None = ... ) -> LocaleDataDict: ... def get_day_names( - width: Literal["abbreviated", "narrow", "short", "wide"] = ..., context: _Context = ..., locale: Locale | str | None = ... + width: Literal["abbreviated", "narrow", "short", "wide"] = "wide", + context: _Context = "format", + locale: Locale | str | None = ..., ) -> LocaleDataDict: ... def get_month_names( - width: Literal["abbreviated", "narrow", "wide"] = ..., context: _Context = ..., locale: Locale | str | None = ... + width: Literal["abbreviated", "narrow", "wide"] = "wide", context: _Context = "format", locale: Locale | str | None = ... ) -> LocaleDataDict: ... def get_quarter_names( - width: Literal["abbreviated", "narrow", "wide"] = ..., context: _Context = ..., locale: Locale | str | None = ... + width: Literal["abbreviated", "narrow", "wide"] = "wide", context: _Context = "format", locale: Locale | str | None = ... +) -> LocaleDataDict: ... +def get_era_names( + width: Literal["abbreviated", "narrow", "wide"] = "wide", locale: Locale | str | None = ... ) -> LocaleDataDict: ... -def get_era_names(width: Literal["abbreviated", "narrow", "wide"] = ..., locale: Locale | str | None = ...) -> LocaleDataDict: ... -def get_date_format(format: _PredefinedTimeFormat = ..., locale: Locale | str | None = ...) -> DateTimePattern: ... -def get_datetime_format(format: _PredefinedTimeFormat = ..., locale: Locale | str | None = ...) -> DateTimePattern: ... -def get_time_format(format: _PredefinedTimeFormat = ..., locale: Locale | str | None = ...) -> DateTimePattern: ... +def get_date_format(format: _PredefinedTimeFormat = "medium", locale: Locale | str | None = ...) -> DateTimePattern: ... +def get_datetime_format(format: _PredefinedTimeFormat = "medium", locale: Locale | str | None = ...) -> DateTimePattern: ... +def get_time_format(format: _PredefinedTimeFormat = "medium", locale: Locale | str | None = ...) -> DateTimePattern: ... class ParseError(ValueError): ... # Basic Parsing -def parse_date(string: str, locale: Locale | str | None = ..., format: _PredefinedTimeFormat = ...) -> date: ... -def parse_time(string: str, locale: Locale | str | None = ..., format: _PredefinedTimeFormat = ...) -> time: ... +def parse_date(string: str, locale: Locale | str | None = ..., format: _PredefinedTimeFormat = "medium") -> date: ... +def parse_time(string: str, locale: Locale | str | None = ..., format: _PredefinedTimeFormat = "medium") -> time: ... def parse_pattern(pattern: str) -> DateTimePattern: ... # Undocumented @@ -133,7 +141,7 @@ time_ = time TIMEDELTA_UNITS: tuple[tuple[str, int], ...] def get_period_id( - time: _Instant, tzinfo: BaseTzInfo | None = ..., type: Literal["selection"] | None = ..., locale: Locale | str | None = ... + time: _Instant, tzinfo: BaseTzInfo | None = None, type: Literal["selection"] | None = None, locale: Locale | str | None = ... ): ... class DateTimePattern: @@ -154,7 +162,7 @@ class DateTimeFormat: def format_quarter(self, char: str, num: int) -> str: ... def format_month(self, char: str, num: int) -> str: ... def format_week(self, char: str, num: int) -> str: ... - def format_weekday(self, char: str = ..., num: int = ...) -> str: ... + def format_weekday(self, char: str = "E", num: int = 4) -> str: ... def format_day_of_year(self, num: int) -> str: ... def format_day_of_week_in_month(self) -> str: ... def format_period(self, char: str, num: int) -> str: ... @@ -162,8 +170,8 @@ class DateTimeFormat: def format_milliseconds_in_day(self, num: int) -> str: ... def format_timezone(self, char: str, num: int) -> str: ... def format(self, value: SupportsInt, length: int) -> str: ... - def get_day_of_year(self, date: date | None = ...) -> int: ... - def get_week_number(self, day_of_period: int, day_of_week: int | None = ...) -> int: ... + def get_day_of_year(self, date: date | None = None) -> int: ... + def get_week_number(self, day_of_period: int, day_of_week: int | None = None) -> int: ... PATTERN_CHARS: dict[str, list[int] | None] PATTERN_CHAR_ORDER: str @@ -171,4 +179,4 @@ PATTERN_CHAR_ORDER: str def tokenize_pattern(pattern: str) -> list[tuple[str, str | tuple[str, int]]]: ... def untokenize_pattern(tokens: Iterable[tuple[str, str | tuple[str, int]]]) -> str: ... def split_interval_pattern(pattern: str) -> list[str]: ... -def match_skeleton(skeleton: str, options: Iterable[str], allow_different_fields: bool = ...) -> str | None: ... +def match_skeleton(skeleton: str, options: Iterable[str], allow_different_fields: bool = False) -> str | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/languages.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/languages.pyi index 14ede0355..d3b75c3e3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/languages.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/languages.pyi @@ -1,2 +1,2 @@ -def get_official_languages(territory: str, regional: bool = ..., de_facto: bool = ...) -> tuple[str, ...]: ... +def get_official_languages(territory: str, regional: bool = False, de_facto: bool = False) -> tuple[str, ...]: ... def get_territory_language_info(territory: str) -> dict[str, dict[str, float | str | None]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/lists.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/lists.pyi index da8d8fc0b..8465f20eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/lists.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/lists.pyi @@ -7,6 +7,6 @@ DEFAULT_LOCALE: str | None def format_list( lst: Iterable[str], - style: Literal["standard", "standard-short", "or", "or-short", "unit", "unit-short", "unit-narrow"] = ..., + style: Literal["standard", "standard-short", "or", "or-short", "unit", "unit-short", "unit-narrow"] = "standard", locale: Locale | str | None = ..., ) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localedata.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localedata.pyi index e2c1a63e2..67dc0716a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localedata.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localedata.pyi @@ -6,7 +6,7 @@ def normalize_locale(name: str) -> str | None: ... def resolve_locale_filename(name: PathLike[str] | str) -> str: ... def exists(name: str) -> bool: ... def locale_identifiers() -> list[str]: ... -def load(name: PathLike[str] | str, merge_inherited: bool = ...) -> dict[str, Any]: ... +def load(name: PathLike[str] | str, merge_inherited: bool = True) -> dict[str, Any]: ... def merge(dict1: MutableMapping[Any, Any], dict2: Mapping[Any, Any]) -> None: ... class Alias: @@ -16,7 +16,7 @@ class Alias: class LocaleDataDict(MutableMapping[Any, Any]): base: Mapping[str, Any] - def __init__(self, data: Mapping[str | int | None, Any], base: Mapping[str | int | None, Any] | None = ...) -> None: ... + def __init__(self, data: Mapping[str | int | None, Any], base: Mapping[str | int | None, Any] | None = None) -> None: ... def __len__(self) -> int: ... def __iter__(self) -> Iterator[str | int | None]: ... def __getitem__(self, key: str | int | None) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/catalog.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/catalog.pyi index 625bdd0e0..3a156b3e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/catalog.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/catalog.pyi @@ -22,14 +22,14 @@ class Message: def __init__( self, id: str, - string: str = ..., - locations: Iterable[tuple[str, int]] = ..., - flags: Iterable[str] = ..., - auto_comments: Iterable[str] = ..., - user_comments: Iterable[str] = ..., - previous_id: _MessageID = ..., - lineno: int | None = ..., - context: str | None = ..., + string: str = "", + locations: Iterable[tuple[str, int]] = (), + flags: Iterable[str] = (), + auto_comments: Iterable[str] = (), + user_comments: Iterable[str] = (), + previous_id: _MessageID = (), + lineno: int | None = None, + context: str | None = None, ) -> None: ... def __cmp__(self, other: Message) -> int: ... def __gt__(self, other: Message) -> bool: ... @@ -40,7 +40,7 @@ class Message: def __ne__(self, other: object) -> bool: ... def is_identical(self, other: Message) -> bool: ... def clone(self) -> Message: ... - def check(self, catalog: Catalog | None = ...) -> list[TranslationError]: ... + def check(self, catalog: Catalog | None = None) -> list[TranslationError]: ... @property def fuzzy(self) -> bool: ... @property @@ -65,19 +65,19 @@ class Catalog: obsolete: OrderedDict[str | tuple[str, str], Message] def __init__( self, - locale: str | Locale | None = ..., - domain: str | None = ..., + locale: str | Locale | None = None, + domain: str | None = None, header_comment: str | None = ..., - project: str | None = ..., - version: str | None = ..., - copyright_holder: str | None = ..., - msgid_bugs_address: str | None = ..., - creation_date: datetime.datetime | str | None = ..., - revision_date: datetime.datetime | datetime.time | float | str | None = ..., - last_translator: str | None = ..., - language_team: str | None = ..., - charset: str | None = ..., - fuzzy: bool = ..., + project: str | None = None, + version: str | None = None, + copyright_holder: str | None = None, + msgid_bugs_address: str | None = None, + creation_date: datetime.datetime | str | None = None, + revision_date: datetime.datetime | datetime.time | float | str | None = None, + last_translator: str | None = None, + language_team: str | None = None, + charset: str | None = None, + fuzzy: bool = True, ) -> None: ... @property def locale(self) -> Locale | None: ... @@ -108,19 +108,23 @@ class Catalog: def add( self, id: _MessageID, - string: _MessageID | None = ..., - locations: Iterable[tuple[str, int]] = ..., - flags: Iterable[str] = ..., - auto_comments: Iterable[str] = ..., - user_comments: Iterable[str] = ..., - previous_id: _MessageID = ..., - lineno: int | None = ..., - context: str | None = ..., + string: _MessageID | None = None, + locations: Iterable[tuple[str, int]] = (), + flags: Iterable[str] = (), + auto_comments: Iterable[str] = (), + user_comments: Iterable[str] = (), + previous_id: _MessageID = (), + lineno: int | None = None, + context: str | None = None, ) -> Message: ... def check(self) -> Generator[tuple[Message, list[TranslationError]], None, None]: ... - def get(self, id: _MessageID, context: str | None = ...): ... - def delete(self, id, context: str | None = ...) -> None: ... + def get(self, id: _MessageID, context: str | None = None): ... + def delete(self, id, context: str | None = None) -> None: ... def update( - self, template: Catalog, no_fuzzy_matching: bool = ..., update_header_comment: bool = ..., keep_user_comments: bool = ... + self, + template: Catalog, + no_fuzzy_matching: bool = False, + update_header_comment: bool = False, + keep_user_comments: bool = True, ) -> None: ... def is_identical(self, other: Catalog) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/extract.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/extract.pyi index 4702a953a..7c8bcb423 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/extract.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/extract.pyi @@ -15,23 +15,23 @@ empty_msgid_warning: str def extract_from_dir( dirname: AnyStr | PathLike[AnyStr], method_map: Iterable[tuple[str, str]] = ..., - options_map: SupportsItems[str, dict[str, Any]] | None = ..., + options_map: SupportsItems[str, dict[str, Any]] | None = None, keywords: Mapping[str, _Keyword] = ..., - comment_tags: Collection[str] = ..., - callback: Callable[[AnyStr, str, dict[str, Any]], object] | None = ..., - strip_comment_tags: bool = ..., - directory_filter: Callable[[str], bool] | None = ..., + comment_tags: Collection[str] = (), + callback: Callable[[AnyStr, str, dict[str, Any]], object] | None = None, + strip_comment_tags: bool = False, + directory_filter: Callable[[str], bool] | None = None, ) -> Generator[tuple[AnyStr, int, str | tuple[str, ...], list[str], str | None], None, None]: ... @overload def extract_from_dir( - dirname: None = ..., # No dirname causes os.getcwd() to be used, producing str. + dirname: None = None, # No dirname causes os.getcwd() to be used, producing str. method_map: Iterable[tuple[str, str]] = ..., - options_map: SupportsItems[str, dict[str, Any]] | None = ..., + options_map: SupportsItems[str, dict[str, Any]] | None = None, keywords: Mapping[str, _Keyword] = ..., - comment_tags: Collection[str] = ..., - callback: Callable[[str, str, dict[str, Any]], object] | None = ..., - strip_comment_tags: bool = ..., - directory_filter: Callable[[str], bool] | None = ..., + comment_tags: Collection[str] = (), + callback: Callable[[str, str, dict[str, Any]], object] | None = None, + strip_comment_tags: bool = False, + directory_filter: Callable[[str], bool] | None = None, ) -> Generator[tuple[str, int, str | tuple[str, ...], list[str], str | None], None, None]: ... def check_and_call_extract_file( filepath: AnyStr | PathLike[AnyStr], @@ -41,15 +41,15 @@ def check_and_call_extract_file( keywords: Mapping[str, _Keyword], comment_tags: Collection[str], strip_comment_tags, - dirpath: Incomplete | None = ..., + dirpath: Incomplete | None = None, ) -> Generator[tuple[AnyStr, int, str | tuple[str, ...], list[str], str | None], None, None]: ... def extract_from_file( method, filename: AnyStr | PathLike[AnyStr], keywords: Mapping[str, _Keyword] = ..., - comment_tags: Collection[str] = ..., - options: dict[str, Any] | None = ..., - strip_comment_tags: bool = ..., + comment_tags: Collection[str] = (), + options: dict[str, Any] | None = None, + strip_comment_tags: bool = False, ) -> list[tuple[AnyStr, int, str | tuple[str, ...], list[str], str | None]]: ... class _FileObj(SupportsRead[bytes], SupportsReadline[bytes], Protocol): @@ -60,9 +60,9 @@ def extract( method, fileobj: _FileObj, keywords: Mapping[str, _Keyword] = ..., - comment_tags: Collection[str] = ..., - options: dict[str, Any] | None = ..., - strip_comment_tags: bool = ..., + comment_tags: Collection[str] = (), + options: dict[str, Any] | None = None, + strip_comment_tags: bool = False, ) -> Iterable[tuple[int, str | tuple[str, ...], list[str], str | None]]: ... def extract_nothing( fileobj: _FileObj, keywords: Mapping[str, _Keyword], comment_tags: Collection[str], options: dict[str, Any] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi index 8bc7d5e16..dfc1a1308 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from distutils.cmd import Command as _Command from typing import Any -def listify_value(arg, split: Incomplete | None = ...): ... +def listify_value(arg, split: Incomplete | None = None): ... class Command(_Command, metaclass=abc.ABCMeta): as_args: Any @@ -17,7 +17,7 @@ class Command(_Command, metaclass=abc.ABCMeta): force: Any help: int finalized: int - def __init__(self, dist: Incomplete | None = ...) -> None: ... + def __init__(self, dist: Incomplete | None = None) -> None: ... class compile_catalog(Command): description: str @@ -112,8 +112,8 @@ class CommandLineInterface: command_classes: Any log: Any parser: Any - def run(self, argv: Incomplete | None = ...): ... + def run(self, argv: Incomplete | None = None): ... def main(): ... -def parse_mapping(fileobj, filename: Incomplete | None = ...): ... -def parse_keywords(strings=...): ... +def parse_mapping(fileobj, filename: Incomplete | None = None): ... +def parse_keywords(strings=[]): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/jslexer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/jslexer.pyi index 6eb487394..76628a084 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/jslexer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/jslexer.pyi @@ -21,4 +21,6 @@ class Token(NamedTuple): def get_rules(jsx: bool, dotted: bool, template_string: bool) -> list[tuple[str | None, Pattern[str]]]: ... # undocumented def indicates_division(token: Token) -> bool: ... def unquote_string(string: str) -> str: ... -def tokenize(source: str, jsx: bool = ..., dotted: bool = ..., template_string: bool = ...) -> Generator[Token, None, None]: ... +def tokenize( + source: str, jsx: bool = True, dotted: bool = True, template_string: bool = True +) -> Generator[Token, None, None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/mofile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/mofile.pyi index df15e4efd..c58705f4e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/mofile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/mofile.pyi @@ -6,4 +6,4 @@ LE_MAGIC: int BE_MAGIC: int def read_mo(fileobj: SupportsRead[bytes]) -> Catalog: ... -def write_mo(fileobj: SupportsWrite[bytes], catalog: Catalog, use_fuzzy: bool = ...) -> None: ... +def write_mo(fileobj: SupportsWrite[bytes], catalog: Catalog, use_fuzzy: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/plurals.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/plurals.pyi index 2d6ea9c76..4a5a87c69 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/plurals.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/plurals.pyi @@ -10,4 +10,4 @@ class _PluralTuple(tuple[int, str]): @property def plural_forms(self) -> str: ... -def get_plural(locale: str = ...) -> _PluralTuple: ... +def get_plural(locale: str | None = ...) -> _PluralTuple: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/pofile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/pofile.pyi index b349dc4bd..960021fcd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/pofile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/pofile.pyi @@ -46,31 +46,31 @@ class PoFileParser: in_msgid: bool in_msgstr: bool in_msgctxt: bool - def __init__(self, catalog, ignore_obsolete: bool = ..., abort_invalid: bool = ...) -> None: ... + def __init__(self, catalog, ignore_obsolete: bool = False, abort_invalid: bool = False) -> None: ... def parse(self, fileobj: Iterable[str | bytes]) -> None: ... def read_po( fileobj: Iterable[str | bytes], - locale: str | Locale | None = ..., - domain: str | None = ..., - ignore_obsolete: bool = ..., - charset: str | None = ..., - abort_invalid: bool = ..., + locale: str | Locale | None = None, + domain: str | None = None, + ignore_obsolete: bool = False, + charset: str | None = None, + abort_invalid: bool = False, ) -> Catalog: ... WORD_SEP: Pattern[str] def escape(string: str) -> str: ... -def normalize(string: str, prefix: str = ..., width: int = ...) -> str: ... +def normalize(string: str, prefix: str = "", width: int = 76) -> str: ... def write_po( fileobj: SupportsWrite[bytes], catalog: Catalog, - width: int | None = ..., - no_location: bool = ..., - omit_header: bool = ..., - sort_output: bool = ..., - sort_by_file: bool = ..., - ignore_obsolete: bool = ..., - include_previous: bool = ..., - include_lineno: bool = ..., + width: int | None = 76, + no_location: bool = False, + omit_header: bool = False, + sort_output: bool = False, + sort_by_file: bool = False, + ignore_obsolete: bool = False, + include_previous: bool = False, + include_lineno: bool = True, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/numbers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/numbers.pyi index f8a60df52..5bc5c2136 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/numbers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/numbers.pyi @@ -16,17 +16,17 @@ def list_currencies(locale: Locale | str | None = ...) -> set[str]: ... def validate_currency(currency: str, locale: Locale | str | None = ...) -> None: ... def is_currency(currency: str, locale: Locale | str | None = ...) -> bool: ... def normalize_currency(currency: str, locale: Locale | str | None = ...) -> str | None: ... -def get_currency_name(currency: str, count: float | decimal.Decimal | None = ..., locale: Locale | str | None = ...) -> str: ... +def get_currency_name(currency: str, count: float | decimal.Decimal | None = None, locale: Locale | str | None = ...) -> str: ... def get_currency_symbol(currency: str, locale: Locale | str | None = ...) -> str: ... def get_currency_precision(currency: str) -> int: ... -def get_currency_unit_pattern(currency: str, count: float | None = ..., locale: Locale | str | None = ...) -> str: ... +def get_currency_unit_pattern(currency: str, count: float | None = None, locale: Locale | str | None = ...) -> str: ... def get_territory_currencies( territory: str, - start_date: date | None = ..., - end_date: date | None = ..., - tender: bool = ..., - non_tender: bool = ..., - include_details: bool = ..., + start_date: date | None = None, + end_date: date | None = None, + tender: bool = True, + non_tender: bool = False, + include_details: bool = False, ) -> list[str]: ... def get_decimal_symbol(locale: Locale | str | None = ...) -> str: ... def get_plus_sign_symbol(locale: Locale | str | None = ...) -> str: ... @@ -38,13 +38,13 @@ def get_decimal_precision(number: decimal.Decimal) -> int: ... def get_decimal_quantum(precision: int | decimal.Decimal) -> decimal.Decimal: ... def format_decimal( number: float | decimal.Decimal | str, - format: str | None = ..., + format: str | None = None, locale: Locale | str | None = ..., - decimal_quantization: bool = ..., - group_separator: bool = ..., + decimal_quantization: bool = True, + group_separator: bool = True, ): ... def format_compact_decimal( - number: float, *, format_type: Literal["short", "long"] = ..., locale: Locale | str | None = ..., fraction_digits: int = ... + number: float, *, format_type: Literal["short", "long"] = "short", locale: Locale | str | None = ..., fraction_digits: int = 0 ) -> str: ... class UnknownCurrencyFormatError(KeyError): ... @@ -52,33 +52,33 @@ class UnknownCurrencyFormatError(KeyError): ... def format_currency( number: float | decimal.Decimal | str, currency: str, - format: str | None = ..., + format: str | None = None, locale: Locale | str | None = ..., - currency_digits: bool = ..., - format_type: Literal["name", "standard", "accounting"] = ..., - decimal_quantization: bool = ..., - group_separator: bool = ..., + currency_digits: bool = True, + format_type: Literal["name", "standard", "accounting"] = "standard", + decimal_quantization: bool = True, + group_separator: bool = True, ) -> str: ... def format_percent( number: float | decimal.Decimal | str, - format: str | None = ..., + format: str | None = None, locale: Locale | str | None = ..., - decimal_quantization: bool = ..., - group_separator: bool = ..., + decimal_quantization: bool = True, + group_separator: bool = True, ) -> str: ... def format_scientific( number: float | decimal.Decimal | str, - format: str | None = ..., + format: str | None = None, locale: Locale | str | None = ..., - decimal_quantization: bool = ..., + decimal_quantization: bool = True, ) -> str: ... class NumberFormatError(ValueError): suggestions: str | None - def __init__(self, message: str, suggestions: str | None = ...) -> None: ... + def __init__(self, message: str, suggestions: str | None = None) -> None: ... def parse_number(string: str, locale: Locale | str | None = ...) -> int: ... -def parse_decimal(string: str, locale: Locale | str | None = ..., strict: bool = ...) -> decimal.Decimal: ... +def parse_decimal(string: str, locale: Locale | str | None = ..., strict: bool = False) -> decimal.Decimal: ... PREFIX_END: str NUMBER_TOKEN: str @@ -119,9 +119,9 @@ class NumberPattern: self, value: float | decimal.Decimal, locale: Locale | str | None, - currency: str | None = ..., - currency_digits: bool = ..., - decimal_quantization: bool = ..., - force_frac: int | None = ..., - group_separator: bool = ..., + currency: str | None = None, + currency_digits: bool = True, + decimal_quantization: bool = True, + force_frac: int | None = None, + group_separator: bool = True, ) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/plural.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/plural.pyi index 51c2ff4f4..1060597bd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/plural.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/plural.pyi @@ -26,8 +26,8 @@ def cldr_modulo(a, b): ... class RuleError(Exception): ... def tokenize_rule(s): ... -def test_next_token(tokens, type_, value: Incomplete | None = ...): ... -def skip_token(tokens, type_, value: Incomplete | None = ...): ... +def test_next_token(tokens, type_, value: Incomplete | None = None): ... +def skip_token(tokens, type_, value: Incomplete | None = None): ... def value_node(value): ... def ident_node(name): ... def range_list_node(range_list): ... @@ -37,7 +37,7 @@ class _Parser: tokens: Any ast: Any def __init__(self, string) -> None: ... - def expect(self, type_, value: Incomplete | None = ..., term: Incomplete | None = ...): ... + def expect(self, type_, value: Incomplete | None = None, term: Incomplete | None = None): ... def condition(self): ... def and_condition(self): ... def relation(self): ... @@ -96,4 +96,4 @@ class _UnicodeCompiler(_Compiler): compile_or: Any compile_mod: Any def compile_not(self, relation): ... - def compile_relation(self, method, expr, range_list, negated: bool = ...): ... + def compile_relation(self, method, expr, range_list, negated: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/support.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/support.pyi index b7c307ec8..14b027d14 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/support.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/support.pyi @@ -13,22 +13,22 @@ from .dates import _PredefinedTimeFormat class Format: locale: Locale tzinfo: BaseTzInfo | None - def __init__(self, locale: Locale | str, tzinfo: BaseTzInfo | None = ...) -> None: ... - def date(self, date: _date | None = ..., format: _PredefinedTimeFormat | str = ...) -> str: ... - def datetime(self, datetime: _date | None = ..., format: _PredefinedTimeFormat | str = ...) -> str: ... - def time(self, time: _time | _datetime | None = ..., format: _PredefinedTimeFormat | str = ...) -> str: ... + def __init__(self, locale: Locale | str, tzinfo: BaseTzInfo | None = None) -> None: ... + def date(self, date: _date | None = None, format: _PredefinedTimeFormat | str = "medium") -> str: ... + def datetime(self, datetime: _date | None = None, format: _PredefinedTimeFormat | str = "medium") -> str: ... + def time(self, time: _time | _datetime | None = None, format: _PredefinedTimeFormat | str = "medium") -> str: ... def timedelta( self, delta: _timedelta | int, - granularity: Literal["year", "month", "week", "day", "hour", "minute", "second"] = ..., - threshold: float = ..., - format: _PredefinedTimeFormat = ..., - add_direction: bool = ..., + granularity: Literal["year", "month", "week", "day", "hour", "minute", "second"] = "second", + threshold: float = 0.85, + format: _PredefinedTimeFormat = "long", + add_direction: bool = False, ) -> str: ... def number(self, number: float | Decimal | str) -> str: ... - def decimal(self, number: float | Decimal | str, format: str | None = ...) -> str: ... + def decimal(self, number: float | Decimal | str, format: str | None = None) -> str: ... def currency(self, number: float | Decimal | str, currency: str) -> str: ... - def percent(self, number: float | Decimal | str, format: str | None = ...) -> str: ... + def percent(self, number: float | Decimal | str, format: str | None = None) -> str: ... def scientific(self, number: float | Decimal | str) -> str: ... class LazyProxy: @@ -67,7 +67,7 @@ class NullTranslations(gettext.NullTranslations): plural: Any files: Any domain: Any - def __init__(self, fp: Incomplete | None = ...): ... + def __init__(self, fp: Incomplete | None = None): ... def dgettext(self, domain, message): ... def ldgettext(self, domain, message): ... def udgettext(self, domain, message): ... @@ -97,10 +97,10 @@ class NullTranslations(gettext.NullTranslations): class Translations(NullTranslations, gettext.GNUTranslations): DEFAULT_DOMAIN: str domain: Any - def __init__(self, fp: Incomplete | None = ..., domain: Incomplete | None = ...) -> None: ... + def __init__(self, fp: Incomplete | None = None, domain: Incomplete | None = None) -> None: ... ugettext: Any ungettext: Any @classmethod - def load(cls, dirname: Incomplete | None = ..., locales: Incomplete | None = ..., domain: Incomplete | None = ...): ... - def add(self, translations, merge: bool = ...): ... + def load(cls, dirname: Incomplete | None = None, locales: Incomplete | None = None, domain: Incomplete | None = None): ... + def add(self, translations, merge: bool = True): ... def merge(self, translations): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/units.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/units.pyi index 90808cabd..dfb4f7d1b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/units.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/units.pyi @@ -7,21 +7,21 @@ class UnknownUnitError(ValueError): def __init__(self, unit: str, locale: Locale) -> None: ... def get_unit_name( - measurement_unit: str, length: Literal["short", "long", "narrow"] = ..., locale: Locale | str | None = ... + measurement_unit: str, length: Literal["short", "long", "narrow"] = "long", locale: Locale | str | None = ... ) -> str: ... def format_unit( value: float | decimal.Decimal, measurement_unit: str, - length: Literal["short", "long", "narrow"] = ..., - format: str | None = ..., + length: Literal["short", "long", "narrow"] = "long", + format: str | None = None, locale: Locale | str | None = ..., ) -> str: ... def format_compound_unit( numerator_value: float | decimal.Decimal, - numerator_unit: str | None = ..., - denominator_value: float | decimal.Decimal = ..., - denominator_unit: str | None = ..., - length: Literal["short", "long", "narrow"] = ..., - format: str | None = ..., + numerator_unit: str | None = None, + denominator_value: float | decimal.Decimal = 1, + denominator_unit: str | None = None, + length: Literal["short", "long", "narrow"] = "long", + format: str | None = None, locale: Locale | str | None = ..., ) -> str | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/util.pyi index 7b40659de..ea7994c31 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/util.pyi @@ -20,19 +20,19 @@ def parse_encoding(fp: IO[bytes]) -> str | None: ... PYTHON_FUTURE_IMPORT_re: Pattern[str] -def parse_future_flags(fp: IO[bytes], encoding: str = ...) -> int: ... +def parse_future_flags(fp: IO[bytes], encoding: str = "latin-1") -> int: ... def pathmatch(pattern: str, filename: str) -> bool: ... class TextWrapper(textwrap.TextWrapper): wordsep_re: Pattern[str] -def wraptext(text, width: int = ..., initial_indent: str = ..., subsequent_indent: str = ...): ... +def wraptext(text, width: int = 70, initial_indent: str = "", subsequent_indent: str = ""): ... odict = collections.OrderedDict class FixedOffsetTimezone(tzinfo): zone: str - def __init__(self, offset: float, name: str | None = ...) -> None: ... + def __init__(self, offset: float, name: str | None = None) -> None: ... def utcoffset(self, dt: Any) -> timedelta: ... def tzname(self, dt: Any) -> str: ... def dst(self, dt: Any) -> timedelta: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml index ba9a16498..b152aa7ac 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.11.*" +version = "4.12.*" requires = ["types-html5lib"] [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/__init__.pyi index 21ed6f204..4c6b894c0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/__init__.pyi @@ -37,13 +37,13 @@ class BeautifulSoup(Tag): markup: str def __init__( self, - markup: str | bytes | SupportsRead[str] | SupportsRead[bytes] = ..., - features: str | Sequence[str] | None = ..., - builder: TreeBuilder | type[TreeBuilder] | None = ..., - parse_only: SoupStrainer | None = ..., - from_encoding: str | None = ..., - exclude_encodings: Sequence[str] | None = ..., - element_classes: dict[type[PageElement], type[Any]] | None = ..., + markup: str | bytes | SupportsRead[str] | SupportsRead[bytes] = "", + features: str | Sequence[str] | None = None, + builder: TreeBuilder | type[TreeBuilder] | None = None, + parse_only: SoupStrainer | None = None, + from_encoding: str | None = None, + exclude_encodings: Sequence[str] | None = None, + element_classes: dict[type[PageElement], type[Any]] | None = None, **kwargs, ) -> None: ... def __copy__(self) -> Self: ... @@ -58,35 +58,35 @@ class BeautifulSoup(Tag): def new_tag( self, name, - namespace: Incomplete | None = ..., - nsprefix: Incomplete | None = ..., - attrs=..., - sourceline: Incomplete | None = ..., - sourcepos: Incomplete | None = ..., + namespace: Incomplete | None = None, + nsprefix: Incomplete | None = None, + attrs={}, + sourceline: Incomplete | None = None, + sourcepos: Incomplete | None = None, **kwattrs, ) -> Tag: ... - def string_container(self, base_class: Incomplete | None = ...): ... - def new_string(self, s, subclass: Incomplete | None = ...): ... + def string_container(self, base_class: Incomplete | None = None): ... + def new_string(self, s, subclass: Incomplete | None = None): ... def insert_before(self, *args) -> None: ... def insert_after(self, *args) -> None: ... def popTag(self): ... def pushTag(self, tag) -> None: ... - def endData(self, containerClass: Incomplete | None = ...) -> None: ... - def object_was_parsed(self, o, parent: Incomplete | None = ..., most_recent_element: Incomplete | None = ...) -> None: ... + def endData(self, containerClass: Incomplete | None = None) -> None: ... + def object_was_parsed(self, o, parent: Incomplete | None = None, most_recent_element: Incomplete | None = None) -> None: ... def handle_starttag( self, name, namespace, nsprefix, attrs, - sourceline: Incomplete | None = ..., - sourcepos: Incomplete | None = ..., - namespaces: dict[str, str] | None = ..., + sourceline: Incomplete | None = None, + sourcepos: Incomplete | None = None, + namespaces: dict[str, str] | None = None, ): ... - def handle_endtag(self, name, nsprefix: Incomplete | None = ...) -> None: ... + def handle_endtag(self, name, nsprefix: Incomplete | None = None) -> None: ... def handle_data(self, data) -> None: ... def decode( # type: ignore[override] - self, pretty_print: bool = ..., eventual_encoding: str = ..., formatter: str | Formatter = ... + self, pretty_print: bool = False, eventual_encoding: str = "utf-8", formatter: str | Formatter = "minimal" ): ... # missing some arguments class BeautifulStoneSoup(BeautifulSoup): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/__init__.pyi index 3807629e9..126205fa2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/__init__.pyi @@ -35,9 +35,9 @@ class TreeBuilder: def prepare_markup( self, markup, - user_specified_encoding: Incomplete | None = ..., - document_declared_encoding: Incomplete | None = ..., - exclude_encodings: Incomplete | None = ..., + user_specified_encoding: Incomplete | None = None, + document_declared_encoding: Incomplete | None = None, + exclude_encodings: Incomplete | None = None, ) -> None: ... def test_fragment_to_document(self, fragment): ... def set_up_substitutions(self, tag): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/_htmlparser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/_htmlparser.pyi index b21a0d44e..c4677b05a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/_htmlparser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/_htmlparser.pyi @@ -11,8 +11,8 @@ class BeautifulSoupHTMLParser(HTMLParser): already_closed_empty_element: Any def __init__(self, *args, **kwargs) -> None: ... def handle_startendtag(self, name, attrs) -> None: ... - def handle_starttag(self, name, attrs, handle_empty_element: bool = ...) -> None: ... - def handle_endtag(self, name, check_already_closed: bool = ...) -> None: ... + def handle_starttag(self, name, attrs, handle_empty_element: bool = True) -> None: ... + def handle_endtag(self, name, check_already_closed: bool = True) -> None: ... def handle_data(self, data) -> None: ... def handle_charref(self, name) -> None: ... def handle_entityref(self, name) -> None: ... @@ -28,12 +28,12 @@ class HTMLParserTreeBuilder(HTMLTreeBuilder): features: Any TRACKS_LINE_NUMBERS: bool parser_args: Any - def __init__(self, parser_args: Incomplete | None = ..., parser_kwargs: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, parser_args: Incomplete | None = None, parser_kwargs: Incomplete | None = None, **kwargs) -> None: ... def prepare_markup( self, markup, - user_specified_encoding: Incomplete | None = ..., - document_declared_encoding: Incomplete | None = ..., - exclude_encodings: Incomplete | None = ..., + user_specified_encoding: Incomplete | None = None, + document_declared_encoding: Incomplete | None = None, + exclude_encodings: Incomplete | None = None, ) -> None: ... def feed(self, markup) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/_lxml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/_lxml.pyi index ef57b0583..63b2a2f4b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/_lxml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/builder/_lxml.pyi @@ -19,18 +19,18 @@ class LXMLTreeBuilderForXML(TreeBuilder): empty_element_tags: Any soup: Any nsmaps: Any - def __init__(self, parser: Incomplete | None = ..., empty_element_tags: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, parser: Incomplete | None = None, empty_element_tags: Incomplete | None = None, **kwargs) -> None: ... def prepare_markup( # type: ignore[override] # the order of the parameters is different self, markup, - user_specified_encoding: Incomplete | None = ..., - exclude_encodings: Incomplete | None = ..., - document_declared_encoding: Incomplete | None = ..., + user_specified_encoding: Incomplete | None = None, + exclude_encodings: Incomplete | None = None, + document_declared_encoding: Incomplete | None = None, ) -> None: ... parser: Any def feed(self, markup) -> None: ... def close(self) -> None: ... - def start(self, name, attrs, nsmap=...) -> None: ... + def start(self, name, attrs, nsmap={}) -> None: ... def end(self, name) -> None: ... def pi(self, target, data) -> None: ... def data(self, content) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/dammit.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/dammit.pyi index 6422049e0..3de33971c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/dammit.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/dammit.pyi @@ -20,9 +20,9 @@ class EntitySubstitution: @classmethod def quoted_attribute_value(cls, value): ... @classmethod - def substitute_xml(cls, value, make_quoted_attribute: bool = ...): ... + def substitute_xml(cls, value, make_quoted_attribute: bool = False): ... @classmethod - def substitute_xml_containing_entities(cls, value, make_quoted_attribute: bool = ...): ... + def substitute_xml_containing_entities(cls, value, make_quoted_attribute: bool = False): ... @classmethod def substitute_html(cls, s): ... @@ -38,18 +38,18 @@ class EncodingDetector: def __init__( self, markup, - known_definite_encodings: Iterable[str] | None = ..., - is_html: bool = ..., - exclude_encodings: list[str] | None = ..., - user_encodings: list[str] | None = ..., - override_encodings: list[str] | None = ..., + known_definite_encodings: Iterable[str] | None = None, + is_html: bool = False, + exclude_encodings: list[str] | None = None, + user_encodings: list[str] | None = None, + override_encodings: list[str] | None = None, ) -> None: ... @property def encodings(self) -> Iterator[str]: ... @classmethod def strip_byte_order_mark(cls, data): ... @classmethod - def find_declared_encoding(cls, markup, is_html: bool = ..., search_entire_document: bool = ...) -> str | None: ... + def find_declared_encoding(cls, markup, is_html: bool = False, search_entire_document: bool = False) -> str | None: ... class UnicodeDammit: CHARSET_ALIASES: dict[str, str] @@ -66,12 +66,12 @@ class UnicodeDammit: def __init__( self, markup, - known_definite_encodings: list[str] | None = ..., - smart_quotes_to: Literal["ascii", "xml", "html"] | None = ..., - is_html: bool = ..., - exclude_encodings: list[str] | None = ..., - user_encodings: list[str] | None = ..., - override_encodings: list[str] | None = ..., + known_definite_encodings: list[str] | None = [], + smart_quotes_to: Literal["ascii", "xml", "html"] | None = None, + is_html: bool = False, + exclude_encodings: list[str] | None = [], + user_encodings: list[str] | None = None, + override_encodings: list[str] | None = None, ) -> None: ... @property def declared_html_encoding(self) -> str | None: ... @@ -83,4 +83,4 @@ class UnicodeDammit: FIRST_MULTIBYTE_MARKER: int LAST_MULTIBYTE_MARKER: int @classmethod - def detwingle(cls, in_bytes: bytes, main_encoding: str = ..., embedded_encoding: str = ...) -> bytes: ... + def detwingle(cls, in_bytes: bytes, main_encoding: str = "utf8", embedded_encoding: str = "windows-1252") -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/diagnose.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/diagnose.pyi index f498f996d..ccb7a01dd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/diagnose.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/diagnose.pyi @@ -1,7 +1,7 @@ from html.parser import HTMLParser def diagnose(data) -> None: ... -def lxml_trace(data, html: bool = ..., **kwargs) -> None: ... +def lxml_trace(data, html: bool = True, **kwargs) -> None: ... class AnnouncingParser(HTMLParser): def handle_starttag(self, name, attrs) -> None: ... @@ -15,8 +15,8 @@ class AnnouncingParser(HTMLParser): def handle_pi(self, data) -> None: ... def htmlparser_trace(data) -> None: ... -def rword(length: int = ...): ... -def rsentence(length: int = ...): ... -def rdoc(num_elements: int = ...): ... -def benchmark_parsers(num_elements: int = ...) -> None: ... -def profile(num_elements: int = ..., parser: str = ...) -> None: ... +def rword(length: int = 5): ... +def rsentence(length: int = 4): ... +def rdoc(num_elements: int = 1000): ... +def benchmark_parsers(num_elements: int = 100000) -> None: ... +def profile(num_elements: int = 100000, parser: str = "lxml") -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi index f7fa39afa..18f91d38e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi @@ -14,7 +14,7 @@ whitespace_re: Pattern[str] PYTHON_SPECIFIC_ENCODINGS: set[str] class NamespacedAttribute(str): - def __new__(cls, prefix: str, name: str | None = ..., namespace: str | None = ...) -> Self: ... + def __new__(cls, prefix: str, name: str | None = None, namespace: str | None = None) -> Self: ... class AttributeValueWithCharsetSubstitution(str): ... @@ -41,11 +41,11 @@ class PageElement: previous_sibling: PageElement | None def setup( self, - parent: Tag | None = ..., - previous_element: PageElement | None = ..., - next_element: PageElement | None = ..., - previous_sibling: PageElement | None = ..., - next_sibling: PageElement | None = ..., + parent: Tag | None = None, + previous_element: PageElement | None = None, + next_element: PageElement | None = None, + previous_sibling: PageElement | None = None, + next_sibling: PageElement | None = None, ) -> None: ... def format_string(self, s: str, formatter: Formatter | str | None) -> str: ... def formatter_for_name(self, formatter: Formatter | str | _EntitySubstitution): ... @@ -53,7 +53,7 @@ class PageElement: previousSibling: PageElement | None @property def stripped_strings(self) -> Iterator[str]: ... - def get_text(self, separator: str = ..., strip: bool = ..., types: tuple[type[NavigableString], ...] = ...) -> str: ... + def get_text(self, separator: str = "", strip: bool = False, types: tuple[type[NavigableString], ...] = ...) -> str: ... getText = get_text @property def text(self) -> str: ... @@ -63,7 +63,7 @@ class PageElement: replace_with_children = unwrap replaceWithChildren = unwrap def wrap(self, wrap_inside: _PageElementT) -> _PageElementT: ... - def extract(self, _self_index: int | None = ...) -> Self: ... + def extract(self, _self_index: int | None = None) -> Self: ... def insert(self, position: int, new_child: PageElement | str) -> None: ... def append(self, tag: PageElement | str) -> None: ... def extend(self, tags: Iterable[PageElement | str]) -> None: ... @@ -71,87 +71,87 @@ class PageElement: def insert_after(self, *args: PageElement | str) -> None: ... def find_next( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - string: _Strainable | None = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + string: _Strainable | None = None, **kwargs: _Strainable, ) -> Tag | NavigableString | None: ... findNext = find_next def find_all_next( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - string: _Strainable | None = ..., - limit: int | None = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + string: _Strainable | None = None, + limit: int | None = None, **kwargs: _Strainable, ) -> ResultSet[PageElement]: ... findAllNext = find_all_next def find_next_sibling( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - string: _Strainable | None = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + string: _Strainable | None = None, **kwargs: _Strainable, ) -> Tag | NavigableString | None: ... findNextSibling = find_next_sibling def find_next_siblings( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - string: _Strainable | None = ..., - limit: int | None = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + string: _Strainable | None = None, + limit: int | None = None, **kwargs: _Strainable, ) -> ResultSet[PageElement]: ... findNextSiblings = find_next_siblings fetchNextSiblings = find_next_siblings def find_previous( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - string: _Strainable | None = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + string: _Strainable | None = None, **kwargs: _Strainable, ) -> Tag | NavigableString | None: ... findPrevious = find_previous def find_all_previous( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - string: _Strainable | None = ..., - limit: int | None = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + string: _Strainable | None = None, + limit: int | None = None, **kwargs: _Strainable, ) -> ResultSet[PageElement]: ... findAllPrevious = find_all_previous fetchPrevious = find_all_previous def find_previous_sibling( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - string: _Strainable | None = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + string: _Strainable | None = None, **kwargs: _Strainable, ) -> Tag | NavigableString | None: ... findPreviousSibling = find_previous_sibling def find_previous_siblings( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - string: _Strainable | None = ..., - limit: int | None = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + string: _Strainable | None = None, + limit: int | None = None, **kwargs: _Strainable, ) -> ResultSet[PageElement]: ... findPreviousSiblings = find_previous_siblings fetchPreviousSiblings = find_previous_siblings def find_parent( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, **kwargs: _Strainable, ) -> Tag | None: ... findParent = find_parent def find_parents( self, - name: _Strainable | SoupStrainer | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - limit: int | None = ..., + name: _Strainable | SoupStrainer | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + limit: int | None = None, **kwargs: _Strainable, ) -> ResultSet[Tag]: ... findParents = find_parents @@ -185,7 +185,7 @@ class NavigableString(str, PageElement): def __new__(cls, value: str | bytes) -> Self: ... def __copy__(self) -> Self: ... def __getnewargs__(self) -> tuple[str]: ... - def output_ready(self, formatter: Formatter | str | None = ...) -> str: ... + def output_ready(self, formatter: Formatter | str | None = "minimal") -> str: ... @property def name(self) -> None: ... @property @@ -194,7 +194,7 @@ class NavigableString(str, PageElement): class PreformattedString(NavigableString): PREFIX: str SUFFIX: str - def output_ready(self, formatter: Formatter | str | None = ...) -> str: ... + def output_ready(self, formatter: Formatter | str | None = None) -> str: ... class CData(PreformattedString): PREFIX: str @@ -242,22 +242,22 @@ class Tag(PageElement): preserve_whitespace_tags: list[str] | None def __init__( self, - parser: BeautifulSoup | None = ..., - builder: TreeBuilder | None = ..., - name: str | None = ..., - namespace: str | None = ..., - prefix: str | None = ..., - attrs: dict[str, str] | None = ..., - parent: Tag | None = ..., - previous: PageElement | None = ..., - is_xml: bool | None = ..., - sourceline: int | None = ..., - sourcepos: int | None = ..., - can_be_empty_element: bool | None = ..., - cdata_list_attributes: list[str] | None = ..., - preserve_whitespace_tags: list[str] | None = ..., - interesting_string_types: type[NavigableString] | tuple[type[NavigableString], ...] | None = ..., - namespaces: dict[str, str] | None = ..., + parser: BeautifulSoup | None = None, + builder: TreeBuilder | None = None, + name: str | None = None, + namespace: str | None = None, + prefix: str | None = None, + attrs: dict[str, str] | None = None, + parent: Tag | None = None, + previous: PageElement | None = None, + is_xml: bool | None = None, + sourceline: int | None = None, + sourcepos: int | None = None, + can_be_empty_element: bool | None = None, + cdata_list_attributes: list[str] | None = None, + preserve_whitespace_tags: list[str] | None = None, + interesting_string_types: type[NavigableString] | tuple[type[NavigableString], ...] | None = None, + namespaces: dict[str, str] | None = None, ) -> None: ... parserClass: type[BeautifulSoup] | None def __copy__(self) -> Self: ... @@ -273,11 +273,11 @@ class Tag(PageElement): @property def strings(self) -> Iterable[str]: ... def decompose(self) -> None: ... - def clear(self, decompose: bool = ...) -> None: ... + def clear(self, decompose: bool = False) -> None: ... def smooth(self) -> None: ... def index(self, element: PageElement) -> int: ... - def get(self, key: str, default: str | list[str] | None = ...) -> str | list[str] | None: ... - def get_attribute_list(self, key: str, default: str | list[str] | None = ...) -> list[str]: ... + def get(self, key: str, default: str | list[str] | None = None) -> str | list[str] | None: ... + def get_attribute_list(self, key: str, default: str | list[str] | None = None) -> list[str]: ... def has_attr(self, key: str) -> bool: ... def __hash__(self) -> int: ... def __getitem__(self, key: str) -> str | list[str]: ... @@ -292,34 +292,42 @@ class Tag(PageElement): def __ne__(self, other: object) -> bool: ... def __unicode__(self) -> str: ... def encode( - self, encoding: str = ..., indent_level: int | None = ..., formatter: str | Formatter = ..., errors: str = ... + self, + encoding: str = "utf-8", + indent_level: int | None = None, + formatter: str | Formatter = "minimal", + errors: str = "xmlcharrefreplace", ) -> bytes: ... - def decode(self, indent_level: int | None = ..., eventual_encoding: str = ..., formatter: str | Formatter = ...) -> str: ... + def decode( + self, indent_level: int | None = None, eventual_encoding: str = "utf-8", formatter: str | Formatter = "minimal" + ) -> str: ... @overload - def prettify(self, encoding: str, formatter: str | Formatter = ...) -> bytes: ... + def prettify(self, encoding: str, formatter: str | Formatter = "minimal") -> bytes: ... @overload - def prettify(self, encoding: None = ..., formatter: str | Formatter = ...) -> str: ... + def prettify(self, encoding: None = None, formatter: str | Formatter = "minimal") -> str: ... def decode_contents( - self, indent_level: int | None = ..., eventual_encoding: str = ..., formatter: str | Formatter = ... + self, indent_level: int | None = None, eventual_encoding: str = "utf-8", formatter: str | Formatter = "minimal" ) -> str: ... - def encode_contents(self, indent_level: int | None = ..., encoding: str = ..., formatter: str | Formatter = ...) -> bytes: ... - def renderContents(self, encoding: str = ..., prettyPrint: bool = ..., indentLevel: int = ...) -> bytes: ... + def encode_contents( + self, indent_level: int | None = None, encoding: str = "utf-8", formatter: str | Formatter = "minimal" + ) -> bytes: ... + def renderContents(self, encoding: str = "utf-8", prettyPrint: bool = False, indentLevel: int = 0) -> bytes: ... def find( self, - name: _Strainable | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - recursive: bool = ..., - string: _Strainable | None = ..., + name: _Strainable | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + recursive: bool = True, + string: _Strainable | None = None, **kwargs: _Strainable, ) -> Tag | NavigableString | None: ... findChild = find def find_all( self, - name: _Strainable | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - recursive: bool = ..., - string: _Strainable | None = ..., - limit: int | None = ..., + name: _Strainable | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + recursive: bool = True, + string: _Strainable | None = None, + limit: int | None = None, **kwargs: _Strainable, ) -> ResultSet[Any]: ... __call__ = find_all @@ -330,13 +338,13 @@ class Tag(PageElement): @property def descendants(self) -> Iterable[PageElement]: ... def select_one( - self, selector: str, namespaces: Incomplete | None = ..., *, flags: int = ..., custom: dict[str, str] | None = ... + self, selector: str, namespaces: Incomplete | None = None, *, flags: int = ..., custom: dict[str, str] | None = ... ) -> Tag | None: ... def select( self, selector: str, - namespaces: Incomplete | None = ..., - limit: int | None = ..., + namespaces: Incomplete | None = None, + limit: int | None = None, *, flags: int = ..., custom: dict[str, str] | None = ..., @@ -351,12 +359,12 @@ class SoupStrainer: string: _NormalizedStrainable def __init__( self, - name: _Strainable | None = ..., - attrs: dict[str, _Strainable] | _Strainable = ..., - string: _Strainable | None = ..., + name: _Strainable | None = None, + attrs: dict[str, _Strainable] | _Strainable = {}, + string: _Strainable | None = None, **kwargs: _Strainable, ) -> None: ... - def search_tag(self, markup_name: Tag | str | None = ..., markup_attrs=...): ... + def search_tag(self, markup_name: Tag | str | None = None, markup_attrs={}): ... searchTag = search_tag def search(self, markup: PageElement | Iterable[PageElement]): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/formatter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/formatter.pyi index bfbba8279..8d934dfb9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/formatter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/formatter.pyi @@ -16,12 +16,12 @@ class Formatter(EntitySubstitution): empty_attributes_are_booleans: bool def __init__( self, - language: str | None = ..., - entity_substitution: _EntitySubstitution | None = ..., - void_element_close_prefix: str = ..., - cdata_containing_tags: list[str] | None = ..., - empty_attributes_are_booleans: bool = ..., - indent: int = ..., + language: str | None = None, + entity_substitution: _EntitySubstitution | None = None, + void_element_close_prefix: str = "/", + cdata_containing_tags: list[str] | None = None, + empty_attributes_are_booleans: bool = False, + indent: int = 1, ) -> None: ... def substitute(self, ns: str) -> str: ... def attribute_value(self, value: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/__init__.pyi index 5ce681f23..24befbe11 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/__init__.pyi @@ -24,10 +24,10 @@ def clean( tags: Iterable[str] = ..., attributes: _Attributes = ..., protocols: Iterable[str] = ..., - strip: bool = ..., - strip_comments: bool = ..., - css_sanitizer: CSSSanitizer | None = ..., + strip: bool = False, + strip_comments: bool = True, + css_sanitizer: CSSSanitizer | None = None, ) -> str: ... def linkify( - text: str, callbacks: Iterable[_Callback] = ..., skip_tags: Container[str] | None = ..., parse_email: bool = ... + text: str, callbacks: Iterable[_Callback] = ..., skip_tags: Container[str] | None = None, parse_email: bool = False ) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/callbacks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/callbacks.pyi index 54e94d3e2..7529d620a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/callbacks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/callbacks.pyi @@ -9,5 +9,5 @@ _HTMLAttrs: TypeAlias = MutableMapping[_HTMLAttrKey, str] class _Callback(Protocol): # noqa: Y046 def __call__(self, attrs: _HTMLAttrs, new: bool = ...) -> _HTMLAttrs: ... -def nofollow(attrs: _HTMLAttrs, new: bool = ...) -> _HTMLAttrs: ... -def target_blank(attrs: _HTMLAttrs, new: bool = ...) -> _HTMLAttrs: ... +def nofollow(attrs: _HTMLAttrs, new: bool = False) -> _HTMLAttrs: ... +def target_blank(attrs: _HTMLAttrs, new: bool = False) -> _HTMLAttrs: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/html5lib_shim.pyi b/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/html5lib_shim.pyi index bfe7e9cac..ee35bc62d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/html5lib_shim.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/html5lib_shim.pyi @@ -22,6 +22,6 @@ class BleachHTMLParser(HTMLParser): class BleachHTMLSerializer(HTMLSerializer): escape_rcdata: bool def escape_base_amp(self, stoken: str) -> Generator[str, None, None]: ... - def serialize(self, treewalker, encoding: str | None = ...) -> Generator[str, None, None]: ... + def serialize(self, treewalker, encoding: str | None = None) -> Generator[str, None, None]: ... def __getattr__(__name: str) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/sanitizer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/sanitizer.pyi index fc2fd8107..4ba0144b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/sanitizer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/bleach/bleach/sanitizer.pyi @@ -42,10 +42,10 @@ class Cleaner: tags: Iterable[str] = ..., attributes: _Attributes = ..., protocols: Iterable[str] = ..., - strip: bool = ..., - strip_comments: bool = ..., - filters: Iterable[_Filter] | None = ..., - css_sanitizer: CSSSanitizer | None = ..., + strip: bool = False, + strip_comments: bool = True, + filters: Iterable[_Filter] | None = None, + css_sanitizer: CSSSanitizer | None = None, ) -> None: ... def clean(self, text: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/__init__.pyi index e3dc24ae1..fc1738360 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/__init__.pyi @@ -21,108 +21,121 @@ class NullHandler(logging.Handler): log: Any perflog: Any -def set_file_logger(name, filepath, level: Any = ..., format_string: Incomplete | None = ...): ... -def set_stream_logger(name, level: Any = ..., format_string: Incomplete | None = ...): ... -def connect_sqs(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_s3(aws_access_key_id: str | None = ..., aws_secret_access_key: str | None = ..., **kwargs) -> S3Connection: ... -def connect_gs(gs_access_key_id: Incomplete | None = ..., gs_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_ec2(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_elb(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_autoscale(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_cloudwatch(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_sdb(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_fps(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_mturk(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_cloudfront(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_vpc(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_rds(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_rds2(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_emr(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_sns(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_iam(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_route53(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... +def set_file_logger(name, filepath, level: Any = 20, format_string: Incomplete | None = None): ... +def set_stream_logger(name, level: Any = 10, format_string: Incomplete | None = None): ... +def connect_sqs(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_s3(aws_access_key_id: str | None = None, aws_secret_access_key: str | None = None, **kwargs) -> S3Connection: ... +def connect_gs(gs_access_key_id: Incomplete | None = None, gs_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_ec2(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_elb(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_autoscale(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_cloudwatch( + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs +): ... +def connect_sdb(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_fps(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_mturk(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_cloudfront( + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs +): ... +def connect_vpc(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_rds(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_rds2(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_emr(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_sns(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_iam(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_route53(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... def connect_cloudformation( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... def connect_euca( - host: Incomplete | None = ..., - aws_access_key_id: Incomplete | None = ..., - aws_secret_access_key: Incomplete | None = ..., - port: int = ..., - path: str = ..., - is_secure: bool = ..., + host: Incomplete | None = None, + aws_access_key_id: Incomplete | None = None, + aws_secret_access_key: Incomplete | None = None, + port: int = 8773, + path: str = "/services/Eucalyptus", + is_secure: bool = False, **kwargs, ): ... -def connect_glacier(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... +def connect_glacier(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... def connect_ec2_endpoint( - url, aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + url, aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... def connect_walrus( - host: Incomplete | None = ..., - aws_access_key_id: Incomplete | None = ..., - aws_secret_access_key: Incomplete | None = ..., - port: int = ..., - path: str = ..., - is_secure: bool = ..., + host: Incomplete | None = None, + aws_access_key_id: Incomplete | None = None, + aws_secret_access_key: Incomplete | None = None, + port: int = 8773, + path: str = "/services/Walrus", + is_secure: bool = False, **kwargs, ): ... -def connect_ses(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_sts(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... +def connect_ses(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_sts(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... def connect_ia( - ia_access_key_id: Incomplete | None = ..., ia_secret_access_key: Incomplete | None = ..., is_secure: bool = ..., **kwargs + ia_access_key_id: Incomplete | None = None, ia_secret_access_key: Incomplete | None = None, is_secure: bool = False, **kwargs +): ... +def connect_dynamodb(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_swf(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_cloudsearch( + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... -def connect_dynamodb(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_swf(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_cloudsearch(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... def connect_cloudsearch2( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., sign_request: bool = ..., **kwargs + aws_access_key_id: Incomplete | None = None, + aws_secret_access_key: Incomplete | None = None, + sign_request: bool = False, + **kwargs, ): ... def connect_cloudsearchdomain( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... -def connect_beanstalk(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... +def connect_beanstalk(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... def connect_elastictranscoder( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs +): ... +def connect_opsworks(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_redshift(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_support(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_cloudtrail( + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... -def connect_opsworks(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_redshift(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_support(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_cloudtrail(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... def connect_directconnect( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... -def connect_kinesis(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_logs(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... +def connect_kinesis(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_logs(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... def connect_route53domains( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... def connect_cognito_identity( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... def connect_cognito_sync( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs +): ... +def connect_kms(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_awslambda(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... +def connect_codedeploy( + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... -def connect_kms(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_awslambda(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... -def connect_codedeploy(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... def connect_configservice( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... -def connect_cloudhsm(aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs): ... +def connect_cloudhsm(aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs): ... def connect_ec2containerservice( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... def connect_machinelearning( - aws_access_key_id: Incomplete | None = ..., aws_secret_access_key: Incomplete | None = ..., **kwargs + aws_access_key_id: Incomplete | None = None, aws_secret_access_key: Incomplete | None = None, **kwargs ): ... def storage_uri( uri_str, - default_scheme: str = ..., - debug: int = ..., - validate: bool = ..., + default_scheme: str = "file", + debug: int = 0, + validate: bool = True, bucket_storage_uri_class: Any = ..., - suppress_consec_slashes: bool = ..., - is_latest: bool = ..., + suppress_consec_slashes: bool = True, + is_latest: bool = False, ): ... def storage_uri_for_key(key): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/auth.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/auth.pyi index 9beccfa62..108d14bdd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/auth.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/auth.pyi @@ -47,7 +47,7 @@ class HmacAuthV4Handler(AuthHandler, HmacKeys): service_name: Any region_name: Any def __init__( - self, host, config, provider, service_name: Incomplete | None = ..., region_name: Incomplete | None = ... + self, host, config, provider, service_name: Incomplete | None = None, region_name: Incomplete | None = None ) -> None: ... def headers_to_sign(self, http_request): ... def host_header(self, host, http_request): ... @@ -81,7 +81,7 @@ class S3HmacAuthV4Handler(HmacAuthV4Handler, AuthHandler): def mangle_path_and_params(self, req): ... def payload(self, http_request): ... def add_auth(self, req, **kwargs): ... - def presign(self, req, expires, iso_date: Incomplete | None = ...): ... + def presign(self, req, expires, iso_date: Incomplete | None = None): ... class STSAnonHandler(AuthHandler): capability: Any @@ -107,6 +107,6 @@ class POSTPathQSV2AuthHandler(QuerySignatureV2AuthHandler, AuthHandler): capability: Any def add_auth(self, req, **kwargs): ... -def get_auth_handler(host, config, provider, requested_capability: Incomplete | None = ...): ... +def get_auth_handler(host, config, provider, requested_capability: Incomplete | None = None): ... def detect_potential_sigv4(func): ... def detect_potential_s3sigv4(func): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/connection.pyi index 8a86a9804..1fe485dea 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/connection.pyi @@ -42,7 +42,7 @@ class HTTPRequest: class HTTPResponse(http.client.HTTPResponse): def __init__(self, *args, **kwargs) -> None: ... - def read(self, amt: Incomplete | None = ...): ... + def read(self, amt: Incomplete | None = None): ... class AWSAuthConnection: suppress_consec_slashes: Any @@ -67,22 +67,22 @@ class AWSAuthConnection: def __init__( self, host, - aws_access_key_id: Incomplete | None = ..., - aws_secret_access_key: Incomplete | None = ..., - is_secure: bool = ..., - port: Incomplete | None = ..., - proxy: Incomplete | None = ..., - proxy_port: Incomplete | None = ..., - proxy_user: Incomplete | None = ..., - proxy_pass: Incomplete | None = ..., - debug: int = ..., - https_connection_factory: Incomplete | None = ..., - path: str = ..., - provider: str = ..., - security_token: Incomplete | None = ..., - suppress_consec_slashes: bool = ..., - validate_certs: bool = ..., - profile_name: Incomplete | None = ..., + aws_access_key_id: Incomplete | None = None, + aws_secret_access_key: Incomplete | None = None, + is_secure: bool = True, + port: Incomplete | None = None, + proxy: Incomplete | None = None, + proxy_port: Incomplete | None = None, + proxy_user: Incomplete | None = None, + proxy_pass: Incomplete | None = None, + debug: int = 0, + https_connection_factory: Incomplete | None = None, + path: str = "/", + provider: str = "aws", + security_token: Incomplete | None = None, + suppress_consec_slashes: bool = True, + validate_certs: bool = True, + profile_name: Incomplete | None = None, ) -> None: ... auth_region_name: Any @property @@ -101,8 +101,8 @@ class AWSAuthConnection: def secret_key(self): ... @property def profile_name(self): ... - def get_path(self, path: str = ...): ... - def server_name(self, port: Incomplete | None = ...): ... + def get_path(self, path: str = "/"): ... + def server_name(self, port: Incomplete | None = None): ... proxy: Any proxy_port: Any proxy_user: Any @@ -114,8 +114,8 @@ class AWSAuthConnection: def skip_proxy(self, host): ... def new_http_connection(self, host, port, is_secure): ... def put_http_connection(self, host, port, is_secure, connection): ... - def proxy_ssl(self, host: Incomplete | None = ..., port: Incomplete | None = ...): ... - def prefix_proxy_to_path(self, path, host: Incomplete | None = ...): ... + def proxy_ssl(self, host: Incomplete | None = None, port: Incomplete | None = None): ... + def prefix_proxy_to_path(self, path, host: Incomplete | None = None): ... def get_proxy_auth_header(self): ... def get_proxy_url_with_auth(self): ... def set_host_header(self, request): ... @@ -125,23 +125,23 @@ class AWSAuthConnection: method, path, auth_path, - params: Incomplete | None = ..., - headers: Incomplete | None = ..., - data: str = ..., - host: Incomplete | None = ..., + params: Incomplete | None = None, + headers: Incomplete | None = None, + data: str = "", + host: Incomplete | None = None, ): ... def make_request( self, method, path, - headers: Incomplete | None = ..., - data: str = ..., - host: Incomplete | None = ..., - auth_path: Incomplete | None = ..., - sender: Incomplete | None = ..., - override_num_retries: Incomplete | None = ..., - params: Incomplete | None = ..., - retry_handler: Incomplete | None = ..., + headers: Incomplete | None = None, + data: str = "", + host: Incomplete | None = None, + auth_path: Incomplete | None = None, + sender: Incomplete | None = None, + override_num_retries: Incomplete | None = None, + params: Incomplete | None = None, + retry_handler: Incomplete | None = None, ): ... def close(self): ... @@ -150,29 +150,29 @@ class AWSQueryConnection(AWSAuthConnection): ResponseError: Any def __init__( self, - aws_access_key_id: Incomplete | None = ..., - aws_secret_access_key: Incomplete | None = ..., - is_secure: bool = ..., - port: Incomplete | None = ..., - proxy: Incomplete | None = ..., - proxy_port: Incomplete | None = ..., - proxy_user: Incomplete | None = ..., - proxy_pass: Incomplete | None = ..., - host: Incomplete | None = ..., - debug: int = ..., - https_connection_factory: Incomplete | None = ..., - path: str = ..., - security_token: Incomplete | None = ..., - validate_certs: bool = ..., - profile_name: Incomplete | None = ..., - provider: str = ..., + aws_access_key_id: Incomplete | None = None, + aws_secret_access_key: Incomplete | None = None, + is_secure: bool = True, + port: Incomplete | None = None, + proxy: Incomplete | None = None, + proxy_port: Incomplete | None = None, + proxy_user: Incomplete | None = None, + proxy_pass: Incomplete | None = None, + host: Incomplete | None = None, + debug: int = 0, + https_connection_factory: Incomplete | None = None, + path: str = "/", + security_token: Incomplete | None = None, + validate_certs: bool = True, + profile_name: Incomplete | None = None, + provider: str = "aws", ) -> None: ... def get_utf8_value(self, value): ... def make_request( # type: ignore[override] - self, action, params: Incomplete | None = ..., path: str = ..., verb: str = ..., *args, **kwargs + self, action, params: Incomplete | None = None, path: str = "/", verb: str = "GET", *args, **kwargs ): ... def build_list_params(self, params, items, label): ... def build_complex_list_params(self, params, items, label, names): ... - def get_list(self, action, params, markers, path: str = ..., parent: Incomplete | None = ..., verb: str = ...): ... - def get_object(self, action, params, cls, path: str = ..., parent: Incomplete | None = ..., verb: str = ...): ... - def get_status(self, action, params, path: str = ..., parent: Incomplete | None = ..., verb: str = ...): ... + def get_list(self, action, params, markers, path: str = "/", parent: Incomplete | None = None, verb: str = "GET"): ... + def get_object(self, action, params, cls, path: str = "/", parent: Incomplete | None = None, verb: str = "GET"): ... + def get_status(self, action, params, path: str = "/", parent: Incomplete | None = None, verb: str = "GET"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/exception.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/exception.pyi index 009da58d1..e031ed8c3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/exception.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/exception.pyi @@ -20,7 +20,7 @@ class BotoServerError(StandardError): error_code: Any message: str box_usage: Any - def __init__(self, status, reason, body: Incomplete | None = ..., *args) -> None: ... + def __init__(self, status, reason, body: Incomplete | None = None, *args) -> None: ... def __getattr__(self, name: str): ... def __setattr__(self, name: str, value) -> None: ... def startElement(self, name, attrs, connection): ... @@ -32,13 +32,13 @@ class ConsoleOutput: timestamp: Any comment: Any output: Any - def __init__(self, parent: Incomplete | None = ...) -> None: ... + def __init__(self, parent: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... class StorageCreateError(BotoServerError): bucket: Any - def __init__(self, status, reason, body: Incomplete | None = ...) -> None: ... + def __init__(self, status, reason, body: Incomplete | None = None) -> None: ... def endElement(self, name, value, connection): ... class S3CreateError(StorageCreateError): ... @@ -50,7 +50,7 @@ class GSCopyError(StorageCopyError): ... class SQSError(BotoServerError): detail: Any type: Any - def __init__(self, status, reason, body: Incomplete | None = ...) -> None: ... + def __init__(self, status, reason, body: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @@ -60,7 +60,7 @@ class SQSDecodeError(BotoClientError): class StorageResponseError(BotoServerError): resource: Any - def __init__(self, status, reason, body: Incomplete | None = ...) -> None: ... + def __init__(self, status, reason, body: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @@ -69,7 +69,7 @@ class GSResponseError(StorageResponseError): ... class EC2ResponseError(BotoServerError): errors: Any - def __init__(self, status, reason, body: Incomplete | None = ...) -> None: ... + def __init__(self, status, reason, body: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... request_id: Any def endElement(self, name, value, connection): ... @@ -80,7 +80,7 @@ class JSONResponseError(BotoServerError): body: Any error_message: Any error_code: Any - def __init__(self, status, reason, body: Incomplete | None = ..., *args) -> None: ... + def __init__(self, status, reason, body: Incomplete | None = None, *args) -> None: ... class DynamoDBResponseError(JSONResponseError): ... class SWFResponseError(JSONResponseError): ... @@ -90,7 +90,7 @@ class _EC2Error: connection: Any error_code: Any error_message: Any - def __init__(self, connection: Incomplete | None = ...) -> None: ... + def __init__(self, connection: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @@ -141,7 +141,7 @@ class TooManyRecordsException(Exception): class PleaseRetryException(Exception): message: Any response: Any - def __init__(self, message, response: Incomplete | None = ...) -> None: ... + def __init__(self, message, response: Incomplete | None = None) -> None: ... class InvalidInstanceMetadataError(Exception): MSG: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/kms/layer1.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/kms/layer1.pyi index ed34447c7..8f5ca4f0d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/kms/layer1.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/kms/layer1.pyi @@ -17,16 +17,16 @@ class KMSConnection(AWSQueryConnection): self, key_id: str, grantee_principal: str, - retiring_principal: str | None = ..., - operations: list[str] | None = ..., - constraints: dict[str, dict[str, str]] | None = ..., - grant_tokens: list[str] | None = ..., + retiring_principal: str | None = None, + operations: list[str] | None = None, + constraints: dict[str, dict[str, str]] | None = None, + grant_tokens: list[str] | None = None, ) -> dict[str, Any] | None: ... def create_key( - self, policy: str | None = ..., description: str | None = ..., key_usage: str | None = ... + self, policy: str | None = None, description: str | None = None, key_usage: str | None = None ) -> dict[str, Any] | None: ... def decrypt( - self, ciphertext_blob: bytes, encryption_context: Mapping[str, Any] | None = ..., grant_tokens: list[str] | None = ... + self, ciphertext_blob: bytes, encryption_context: Mapping[str, Any] | None = None, grant_tokens: list[str] | None = None ) -> dict[str, Any] | None: ... def delete_alias(self, alias_name: str) -> dict[str, Any] | None: ... def describe_key(self, key_id: str) -> dict[str, Any] | None: ... @@ -38,40 +38,40 @@ class KMSConnection(AWSQueryConnection): self, key_id: str, plaintext: bytes, - encryption_context: Mapping[str, Any] | None = ..., - grant_tokens: list[str] | None = ..., + encryption_context: Mapping[str, Any] | None = None, + grant_tokens: list[str] | None = None, ) -> dict[str, Any] | None: ... def generate_data_key( self, key_id: str, - encryption_context: Mapping[str, Any] | None = ..., - number_of_bytes: int | None = ..., - key_spec: str | None = ..., - grant_tokens: list[str] | None = ..., + encryption_context: Mapping[str, Any] | None = None, + number_of_bytes: int | None = None, + key_spec: str | None = None, + grant_tokens: list[str] | None = None, ) -> dict[str, Any] | None: ... def generate_data_key_without_plaintext( self, key_id: str, - encryption_context: Mapping[str, Any] | None = ..., - key_spec: str | None = ..., - number_of_bytes: int | None = ..., - grant_tokens: list[str] | None = ..., + encryption_context: Mapping[str, Any] | None = None, + key_spec: str | None = None, + number_of_bytes: int | None = None, + grant_tokens: list[str] | None = None, ) -> dict[str, Any] | None: ... - def generate_random(self, number_of_bytes: int | None = ...) -> dict[str, Any] | None: ... + def generate_random(self, number_of_bytes: int | None = None) -> dict[str, Any] | None: ... def get_key_policy(self, key_id: str, policy_name: str) -> dict[str, Any] | None: ... def get_key_rotation_status(self, key_id: str) -> dict[str, Any] | None: ... - def list_aliases(self, limit: int | None = ..., marker: str | None = ...) -> dict[str, Any] | None: ... - def list_grants(self, key_id: str, limit: int | None = ..., marker: str | None = ...) -> dict[str, Any] | None: ... - def list_key_policies(self, key_id: str, limit: int | None = ..., marker: str | None = ...) -> dict[str, Any] | None: ... - def list_keys(self, limit: int | None = ..., marker: str | None = ...) -> dict[str, Any] | None: ... + def list_aliases(self, limit: int | None = None, marker: str | None = None) -> dict[str, Any] | None: ... + def list_grants(self, key_id: str, limit: int | None = None, marker: str | None = None) -> dict[str, Any] | None: ... + def list_key_policies(self, key_id: str, limit: int | None = None, marker: str | None = None) -> dict[str, Any] | None: ... + def list_keys(self, limit: int | None = None, marker: str | None = None) -> dict[str, Any] | None: ... def put_key_policy(self, key_id: str, policy_name: str, policy: str) -> dict[str, Any] | None: ... def re_encrypt( self, ciphertext_blob: bytes, destination_key_id: str, - source_encryption_context: Mapping[str, Any] | None = ..., - destination_encryption_context: Mapping[str, Any] | None = ..., - grant_tokens: list[str] | None = ..., + source_encryption_context: Mapping[str, Any] | None = None, + destination_encryption_context: Mapping[str, Any] | None = None, + grant_tokens: list[str] | None = None, ) -> dict[str, Any] | None: ... def retire_grant(self, grant_token: str) -> dict[str, Any] | None: ... def revoke_grant(self, key_id: str, grant_id: str) -> dict[str, Any] | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/plugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/plugin.pyi index 3723cf68c..0bcaad3c7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/plugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/plugin.pyi @@ -6,5 +6,5 @@ class Plugin: @classmethod def is_capable(cls, requested_capability): ... -def get_plugin(cls, requested_capability: Incomplete | None = ...): ... +def get_plugin(cls, requested_capability: Incomplete | None = None): ... def load_plugins(config): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/regioninfo.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/regioninfo.pyi index 9a400e885..b121a3240 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/regioninfo.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/regioninfo.pyi @@ -4,7 +4,7 @@ from typing import Any def load_endpoint_json(path): ... def merge_endpoints(defaults, additions): ... def load_regions(): ... -def get_regions(service_name, region_cls: Incomplete | None = ..., connection_cls: Incomplete | None = ...): ... +def get_regions(service_name, region_cls: Incomplete | None = None, connection_cls: Incomplete | None = None): ... class RegionInfo: connection: Any @@ -13,10 +13,10 @@ class RegionInfo: connection_cls: Any def __init__( self, - connection: Incomplete | None = ..., - name: Incomplete | None = ..., - endpoint: Incomplete | None = ..., - connection_cls: Incomplete | None = ..., + connection: Incomplete | None = None, + name: Incomplete | None = None, + endpoint: Incomplete | None = None, + connection_cls: Incomplete | None = None, ) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/acl.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/acl.pyi index 1c22780a8..ed969fda0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/acl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/acl.pyi @@ -10,7 +10,7 @@ class Policy: parent: Any namespace: Any acl: ACL - def __init__(self, parent: Incomplete | None = ...) -> None: ... + def __init__(self, parent: Incomplete | None = None) -> None: ... owner: User def startElement(self, name: str, attrs: dict[str, Any], connection: S3Connection) -> None | User | ACL: ... def endElement(self, name: str, value: Any, connection: S3Connection) -> None: ... @@ -19,10 +19,10 @@ class Policy: class ACL: policy: Policy grants: list[Grant] - def __init__(self, policy: Policy | None = ...) -> None: ... + def __init__(self, policy: Policy | None = None) -> None: ... def add_grant(self, grant: Grant) -> None: ... def add_email_grant(self, permission: str, email_address: str) -> None: ... - def add_user_grant(self, permission: str, user_id: str, display_name: str | None = ...) -> None: ... + def add_user_grant(self, permission: str, user_id: str, display_name: str | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name: str, value: Any, connection: S3Connection) -> None: ... def to_xml(self) -> str: ... @@ -37,12 +37,12 @@ class Grant: type: str def __init__( self, - permission: str | None = ..., - type: str | None = ..., - id: str | None = ..., - display_name: str | None = ..., - uri: str | None = ..., - email_address: str | None = ..., + permission: str | None = None, + type: str | None = None, + id: str | None = None, + display_name: str | None = None, + uri: str | None = None, + email_address: str | None = None, ) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name: str, value: Any, connection: S3Connection) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucket.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucket.pyi index 9e0656448..05e25b428 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucket.pyi @@ -21,170 +21,172 @@ class Bucket: name: str connection: S3Connection key_class: type[Key] - def __init__(self, connection: S3Connection | None = ..., name: str | None = ..., key_class: type[Key] = ...) -> None: ... + def __init__(self, connection: S3Connection | None = None, name: str | None = None, key_class: type[Key] = ...) -> None: ... def __iter__(self): ... def __contains__(self, key_name) -> bool: ... def startElement(self, name, attrs, connection): ... creation_date: Any def endElement(self, name, value, connection): ... def set_key_class(self, key_class): ... - def lookup(self, key_name, headers: dict[str, str] | None = ...): ... + def lookup(self, key_name, headers: dict[str, str] | None = None): ... def get_key( self, key_name, - headers: dict[str, str] | None = ..., - version_id: Incomplete | None = ..., - response_headers: dict[str, str] | None = ..., - validate: bool = ..., + headers: dict[str, str] | None = None, + version_id: Incomplete | None = None, + response_headers: dict[str, str] | None = None, + validate: bool = True, ) -> Key: ... def list( self, - prefix: str = ..., - delimiter: str = ..., - marker: str = ..., - headers: dict[str, str] | None = ..., - encoding_type: Incomplete | None = ..., + prefix: str = "", + delimiter: str = "", + marker: str = "", + headers: dict[str, str] | None = None, + encoding_type: Incomplete | None = None, ) -> BucketListResultSet: ... def list_versions( self, - prefix: str = ..., - delimiter: str = ..., - key_marker: str = ..., - version_id_marker: str = ..., - headers: dict[str, str] | None = ..., - encoding_type: str | None = ..., + prefix: str = "", + delimiter: str = "", + key_marker: str = "", + version_id_marker: str = "", + headers: dict[str, str] | None = None, + encoding_type: str | None = None, ) -> BucketListResultSet: ... def list_multipart_uploads( self, - key_marker: str = ..., - upload_id_marker: str = ..., - headers: dict[str, str] | None = ..., - encoding_type: Incomplete | None = ..., + key_marker: str = "", + upload_id_marker: str = "", + headers: dict[str, str] | None = None, + encoding_type: Incomplete | None = None, ): ... def validate_kwarg_names(self, kwargs, names): ... - def get_all_keys(self, headers: dict[str, str] | None = ..., **params): ... - def get_all_versions(self, headers: dict[str, str] | None = ..., **params): ... + def get_all_keys(self, headers: dict[str, str] | None = None, **params): ... + def get_all_versions(self, headers: dict[str, str] | None = None, **params): ... def validate_get_all_versions_params(self, params): ... - def get_all_multipart_uploads(self, headers: dict[str, str] | None = ..., **params): ... - def new_key(self, key_name: Incomplete | None = ...): ... + def get_all_multipart_uploads(self, headers: dict[str, str] | None = None, **params): ... + def new_key(self, key_name: Incomplete | None = None): ... def generate_url( self, expires_in, - method: str = ..., - headers: dict[str, str] | None = ..., - force_http: bool = ..., - response_headers: dict[str, str] | None = ..., - expires_in_absolute: bool = ..., + method: str = "GET", + headers: dict[str, str] | None = None, + force_http: bool = False, + response_headers: dict[str, str] | None = None, + expires_in_absolute: bool = False, + ): ... + def delete_keys( + self, keys, quiet: bool = False, mfa_token: Incomplete | None = None, headers: dict[str, str] | None = None ): ... - def delete_keys(self, keys, quiet: bool = ..., mfa_token: Incomplete | None = ..., headers: dict[str, str] | None = ...): ... def delete_key( self, key_name, - headers: dict[str, str] | None = ..., - version_id: Incomplete | None = ..., - mfa_token: Incomplete | None = ..., + headers: dict[str, str] | None = None, + version_id: Incomplete | None = None, + mfa_token: Incomplete | None = None, ): ... def copy_key( self, new_key_name, src_bucket_name, src_key_name, - metadata: Incomplete | None = ..., - src_version_id: Incomplete | None = ..., - storage_class: str = ..., - preserve_acl: bool = ..., - encrypt_key: bool = ..., - headers: dict[str, str] | None = ..., - query_args: Incomplete | None = ..., + metadata: Incomplete | None = None, + src_version_id: Incomplete | None = None, + storage_class: str = "STANDARD", + preserve_acl: bool = False, + encrypt_key: bool = False, + headers: dict[str, str] | None = None, + query_args: Incomplete | None = None, ): ... def set_canned_acl( - self, acl_str, key_name: str = ..., headers: dict[str, str] | None = ..., version_id: Incomplete | None = ... + self, acl_str, key_name: str = "", headers: dict[str, str] | None = None, version_id: Incomplete | None = None ): ... - def get_xml_acl(self, key_name: str = ..., headers: dict[str, str] | None = ..., version_id: Incomplete | None = ...): ... + def get_xml_acl(self, key_name: str = "", headers: dict[str, str] | None = None, version_id: Incomplete | None = None): ... def set_xml_acl( self, acl_str, - key_name: str = ..., - headers: dict[str, str] | None = ..., - version_id: Incomplete | None = ..., - query_args: str = ..., + key_name: str = "", + headers: dict[str, str] | None = None, + version_id: Incomplete | None = None, + query_args: str = "acl", ): ... def set_acl( - self, acl_or_str, key_name: str = ..., headers: dict[str, str] | None = ..., version_id: Incomplete | None = ... + self, acl_or_str, key_name: str = "", headers: dict[str, str] | None = None, version_id: Incomplete | None = None ): ... - def get_acl(self, key_name: str = ..., headers: dict[str, str] | None = ..., version_id: Incomplete | None = ...): ... + def get_acl(self, key_name: str = "", headers: dict[str, str] | None = None, version_id: Incomplete | None = None): ... def set_subresource( - self, subresource, value, key_name: str = ..., headers: dict[str, str] | None = ..., version_id: Incomplete | None = ... + self, subresource, value, key_name: str = "", headers: dict[str, str] | None = None, version_id: Incomplete | None = None ): ... def get_subresource( - self, subresource, key_name: str = ..., headers: dict[str, str] | None = ..., version_id: Incomplete | None = ... + self, subresource, key_name: str = "", headers: dict[str, str] | None = None, version_id: Incomplete | None = None ): ... - def make_public(self, recursive: bool = ..., headers: dict[str, str] | None = ...): ... - def add_email_grant(self, permission, email_address, recursive: bool = ..., headers: dict[str, str] | None = ...): ... + def make_public(self, recursive: bool = False, headers: dict[str, str] | None = None): ... + def add_email_grant(self, permission, email_address, recursive: bool = False, headers: dict[str, str] | None = None): ... def add_user_grant( self, permission, user_id, - recursive: bool = ..., - headers: dict[str, str] | None = ..., - display_name: Incomplete | None = ..., + recursive: bool = False, + headers: dict[str, str] | None = None, + display_name: Incomplete | None = None, ): ... - def list_grants(self, headers: dict[str, str] | None = ...): ... + def list_grants(self, headers: dict[str, str] | None = None): ... def get_location(self): ... - def set_xml_logging(self, logging_str, headers: dict[str, str] | None = ...): ... + def set_xml_logging(self, logging_str, headers: dict[str, str] | None = None): ... def enable_logging( - self, target_bucket, target_prefix: str = ..., grants: Incomplete | None = ..., headers: dict[str, str] | None = ... + self, target_bucket, target_prefix: str = "", grants: Incomplete | None = None, headers: dict[str, str] | None = None ): ... - def disable_logging(self, headers: dict[str, str] | None = ...): ... - def get_logging_status(self, headers: dict[str, str] | None = ...): ... - def set_as_logging_target(self, headers: dict[str, str] | None = ...): ... - def get_request_payment(self, headers: dict[str, str] | None = ...): ... - def set_request_payment(self, payer: str = ..., headers: dict[str, str] | None = ...): ... + def disable_logging(self, headers: dict[str, str] | None = None): ... + def get_logging_status(self, headers: dict[str, str] | None = None): ... + def set_as_logging_target(self, headers: dict[str, str] | None = None): ... + def get_request_payment(self, headers: dict[str, str] | None = None): ... + def set_request_payment(self, payer: str = "BucketOwner", headers: dict[str, str] | None = None): ... def configure_versioning( - self, versioning, mfa_delete: bool = ..., mfa_token: Incomplete | None = ..., headers: dict[str, str] | None = ... + self, versioning, mfa_delete: bool = False, mfa_token: Incomplete | None = None, headers: dict[str, str] | None = None ): ... - def get_versioning_status(self, headers: dict[str, str] | None = ...): ... - def configure_lifecycle(self, lifecycle_config, headers: dict[str, str] | None = ...): ... - def get_lifecycle_config(self, headers: dict[str, str] | None = ...): ... - def delete_lifecycle_configuration(self, headers: dict[str, str] | None = ...): ... + def get_versioning_status(self, headers: dict[str, str] | None = None): ... + def configure_lifecycle(self, lifecycle_config, headers: dict[str, str] | None = None): ... + def get_lifecycle_config(self, headers: dict[str, str] | None = None): ... + def delete_lifecycle_configuration(self, headers: dict[str, str] | None = None): ... def configure_website( self, - suffix: Incomplete | None = ..., - error_key: Incomplete | None = ..., - redirect_all_requests_to: Incomplete | None = ..., - routing_rules: Incomplete | None = ..., - headers: dict[str, str] | None = ..., + suffix: Incomplete | None = None, + error_key: Incomplete | None = None, + redirect_all_requests_to: Incomplete | None = None, + routing_rules: Incomplete | None = None, + headers: dict[str, str] | None = None, ): ... - def set_website_configuration(self, config, headers: dict[str, str] | None = ...): ... - def set_website_configuration_xml(self, xml, headers: dict[str, str] | None = ...): ... - def get_website_configuration(self, headers: dict[str, str] | None = ...): ... - def get_website_configuration_obj(self, headers: dict[str, str] | None = ...): ... - def get_website_configuration_with_xml(self, headers: dict[str, str] | None = ...): ... - def get_website_configuration_xml(self, headers: dict[str, str] | None = ...): ... - def delete_website_configuration(self, headers: dict[str, str] | None = ...): ... + def set_website_configuration(self, config, headers: dict[str, str] | None = None): ... + def set_website_configuration_xml(self, xml, headers: dict[str, str] | None = None): ... + def get_website_configuration(self, headers: dict[str, str] | None = None): ... + def get_website_configuration_obj(self, headers: dict[str, str] | None = None): ... + def get_website_configuration_with_xml(self, headers: dict[str, str] | None = None): ... + def get_website_configuration_xml(self, headers: dict[str, str] | None = None): ... + def delete_website_configuration(self, headers: dict[str, str] | None = None): ... def get_website_endpoint(self): ... - def get_policy(self, headers: dict[str, str] | None = ...): ... - def set_policy(self, policy, headers: dict[str, str] | None = ...): ... - def delete_policy(self, headers: dict[str, str] | None = ...): ... - def set_cors_xml(self, cors_xml, headers: dict[str, str] | None = ...): ... - def set_cors(self, cors_config, headers: dict[str, str] | None = ...): ... - def get_cors_xml(self, headers: dict[str, str] | None = ...): ... - def get_cors(self, headers: dict[str, str] | None = ...): ... - def delete_cors(self, headers: dict[str, str] | None = ...): ... + def get_policy(self, headers: dict[str, str] | None = None): ... + def set_policy(self, policy, headers: dict[str, str] | None = None): ... + def delete_policy(self, headers: dict[str, str] | None = None): ... + def set_cors_xml(self, cors_xml, headers: dict[str, str] | None = None): ... + def set_cors(self, cors_config, headers: dict[str, str] | None = None): ... + def get_cors_xml(self, headers: dict[str, str] | None = None): ... + def get_cors(self, headers: dict[str, str] | None = None): ... + def delete_cors(self, headers: dict[str, str] | None = None): ... def initiate_multipart_upload( self, key_name, - headers: dict[str, str] | None = ..., - reduced_redundancy: bool = ..., - metadata: Incomplete | None = ..., - encrypt_key: bool = ..., - policy: Incomplete | None = ..., + headers: dict[str, str] | None = None, + reduced_redundancy: bool = False, + metadata: Incomplete | None = None, + encrypt_key: bool = False, + policy: Incomplete | None = None, ): ... - def complete_multipart_upload(self, key_name, upload_id, xml_body, headers: dict[str, str] | None = ...): ... - def cancel_multipart_upload(self, key_name, upload_id, headers: dict[str, str] | None = ...): ... - def delete(self, headers: dict[str, str] | None = ...): ... + def complete_multipart_upload(self, key_name, upload_id, xml_body, headers: dict[str, str] | None = None): ... + def cancel_multipart_upload(self, key_name, upload_id, headers: dict[str, str] | None = None): ... + def delete(self, headers: dict[str, str] | None = None): ... def get_tags(self): ... def get_xml_tags(self): ... - def set_xml_tags(self, tag_str, headers: dict[str, str] | None = ..., query_args: str = ...): ... - def set_tags(self, tags, headers: dict[str, str] | None = ...): ... - def delete_tags(self, headers: dict[str, str] | None = ...): ... + def set_xml_tags(self, tag_str, headers: dict[str, str] | None = None, query_args: str = "tagging"): ... + def set_tags(self, tags, headers: dict[str, str] | None = None): ... + def delete_tags(self, headers: dict[str, str] | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucketlistresultset.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucketlistresultset.pyi index e85adad7b..c9781a5e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucketlistresultset.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucketlistresultset.pyi @@ -6,11 +6,11 @@ from .key import Key def bucket_lister( bucket, - prefix: str = ..., - delimiter: str = ..., - marker: str = ..., - headers: Incomplete | None = ..., - encoding_type: Incomplete | None = ..., + prefix: str = "", + delimiter: str = "", + marker: str = "", + headers: Incomplete | None = None, + encoding_type: Incomplete | None = None, ): ... class BucketListResultSet(Iterable[Key]): @@ -22,23 +22,23 @@ class BucketListResultSet(Iterable[Key]): encoding_type: Any def __init__( self, - bucket: Incomplete | None = ..., - prefix: str = ..., - delimiter: str = ..., - marker: str = ..., - headers: Incomplete | None = ..., - encoding_type: Incomplete | None = ..., + bucket: Incomplete | None = None, + prefix: str = "", + delimiter: str = "", + marker: str = "", + headers: Incomplete | None = None, + encoding_type: Incomplete | None = None, ) -> None: ... def __iter__(self) -> Iterator[Key]: ... def versioned_bucket_lister( bucket, - prefix: str = ..., - delimiter: str = ..., - key_marker: str = ..., - version_id_marker: str = ..., - headers: Incomplete | None = ..., - encoding_type: Incomplete | None = ..., + prefix: str = "", + delimiter: str = "", + key_marker: str = "", + version_id_marker: str = "", + headers: Incomplete | None = None, + encoding_type: Incomplete | None = None, ): ... class VersionedBucketListResultSet: @@ -51,22 +51,22 @@ class VersionedBucketListResultSet: encoding_type: Any def __init__( self, - bucket: Incomplete | None = ..., - prefix: str = ..., - delimiter: str = ..., - key_marker: str = ..., - version_id_marker: str = ..., - headers: Incomplete | None = ..., - encoding_type: Incomplete | None = ..., + bucket: Incomplete | None = None, + prefix: str = "", + delimiter: str = "", + key_marker: str = "", + version_id_marker: str = "", + headers: Incomplete | None = None, + encoding_type: Incomplete | None = None, ) -> None: ... def __iter__(self) -> Iterator[Key]: ... def multipart_upload_lister( bucket, - key_marker: str = ..., - upload_id_marker: str = ..., - headers: Incomplete | None = ..., - encoding_type: Incomplete | None = ..., + key_marker: str = "", + upload_id_marker: str = "", + headers: Incomplete | None = None, + encoding_type: Incomplete | None = None, ): ... class MultiPartUploadListResultSet: @@ -77,10 +77,10 @@ class MultiPartUploadListResultSet: encoding_type: Any def __init__( self, - bucket: Incomplete | None = ..., - key_marker: str = ..., - upload_id_marker: str = ..., - headers: Incomplete | None = ..., - encoding_type: Incomplete | None = ..., + bucket: Incomplete | None = None, + key_marker: str = "", + upload_id_marker: str = "", + headers: Incomplete | None = None, + encoding_type: Incomplete | None = None, ) -> None: ... def __iter__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucketlogging.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucketlogging.pyi index bde7fc4fb..e9e5297fc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucketlogging.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/bucketlogging.pyi @@ -6,7 +6,7 @@ class BucketLogging: prefix: Any grants: Any def __init__( - self, target: Incomplete | None = ..., prefix: Incomplete | None = ..., grants: Incomplete | None = ... + self, target: Incomplete | None = None, prefix: Incomplete | None = None, grants: Incomplete | None = None ) -> None: ... def add_grant(self, grant): ... def startElement(self, name, attrs, connection): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/connection.pyi index 5fe8c3c18..bbec849f0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/connection.pyi @@ -11,10 +11,10 @@ def assert_case_insensitive(f): ... class _CallingFormat: def get_bucket_server(self, server, bucket): ... - def build_url_base(self, connection, protocol, server, bucket, key: str = ...): ... + def build_url_base(self, connection, protocol, server, bucket, key: str = ""): ... def build_host(self, server, bucket): ... - def build_auth_path(self, bucket, key: str = ...): ... - def build_path_base(self, bucket, key: str = ...): ... + def build_auth_path(self, bucket, key: str = ""): ... + def build_path_base(self, bucket, key: str = ""): ... class SubdomainCallingFormat(_CallingFormat): def get_bucket_server(self, server, bucket): ... @@ -24,10 +24,10 @@ class VHostCallingFormat(_CallingFormat): class OrdinaryCallingFormat(_CallingFormat): def get_bucket_server(self, server, bucket): ... - def build_path_base(self, bucket, key: str = ...): ... + def build_path_base(self, bucket, key: str = ""): ... class ProtocolIndependentOrdinaryCallingFormat(OrdinaryCallingFormat): - def build_url_base(self, connection, protocol, server, bucket, key: str = ...): ... + def build_url_base(self, connection, protocol, server, bucket, key: str = ""): ... class Location: DEFAULT: str @@ -53,26 +53,26 @@ class S3Connection(AWSAuthConnection): anon: Any def __init__( self, - aws_access_key_id: Incomplete | None = ..., - aws_secret_access_key: Incomplete | None = ..., - is_secure: bool = ..., - port: Incomplete | None = ..., - proxy: Incomplete | None = ..., - proxy_port: Incomplete | None = ..., - proxy_user: Incomplete | None = ..., - proxy_pass: Incomplete | None = ..., + aws_access_key_id: Incomplete | None = None, + aws_secret_access_key: Incomplete | None = None, + is_secure: bool = True, + port: Incomplete | None = None, + proxy: Incomplete | None = None, + proxy_port: Incomplete | None = None, + proxy_user: Incomplete | None = None, + proxy_pass: Incomplete | None = None, host: Any = ..., - debug: int = ..., - https_connection_factory: Incomplete | None = ..., - calling_format: Any = ..., - path: str = ..., - provider: str = ..., + debug: int = 0, + https_connection_factory: Incomplete | None = None, + calling_format: Any = "boto.s3.connection.SubdomainCallingFormat", + path: str = "/", + provider: str = "aws", bucket_class: type[Bucket] = ..., - security_token: Incomplete | None = ..., - suppress_consec_slashes: bool = ..., - anon: bool = ..., - validate_certs: Incomplete | None = ..., - profile_name: Incomplete | None = ..., + security_token: Incomplete | None = None, + suppress_consec_slashes: bool = True, + anon: bool = False, + validate_certs: Incomplete | None = None, + profile_name: Incomplete | None = None, ) -> None: ... def __iter__(self): ... def __contains__(self, bucket_name): ... @@ -82,61 +82,61 @@ class S3Connection(AWSAuthConnection): self, bucket_name, key, - expires_in: int = ..., - acl: Incomplete | None = ..., - success_action_redirect: Incomplete | None = ..., - max_content_length: Incomplete | None = ..., - http_method: str = ..., - fields: Incomplete | None = ..., - conditions: Incomplete | None = ..., - storage_class: str = ..., - server_side_encryption: Incomplete | None = ..., + expires_in: int = 6000, + acl: Incomplete | None = None, + success_action_redirect: Incomplete | None = None, + max_content_length: Incomplete | None = None, + http_method: str = "http", + fields: Incomplete | None = None, + conditions: Incomplete | None = None, + storage_class: str = "STANDARD", + server_side_encryption: Incomplete | None = None, ): ... def generate_url_sigv4( self, expires_in, method, - bucket: str = ..., - key: str = ..., - headers: dict[str, str] | None = ..., - force_http: bool = ..., - response_headers: dict[str, str] | None = ..., - version_id: Incomplete | None = ..., - iso_date: Incomplete | None = ..., + bucket: str = "", + key: str = "", + headers: dict[str, str] | None = None, + force_http: bool = False, + response_headers: dict[str, str] | None = None, + version_id: Incomplete | None = None, + iso_date: Incomplete | None = None, ): ... def generate_url( self, expires_in, method, - bucket: str = ..., - key: str = ..., - headers: dict[str, str] | None = ..., - query_auth: bool = ..., - force_http: bool = ..., - response_headers: dict[str, str] | None = ..., - expires_in_absolute: bool = ..., - version_id: Incomplete | None = ..., + bucket: str = "", + key: str = "", + headers: dict[str, str] | None = None, + query_auth: bool = True, + force_http: bool = False, + response_headers: dict[str, str] | None = None, + expires_in_absolute: bool = False, + version_id: Incomplete | None = None, ): ... - def get_all_buckets(self, headers: dict[str, str] | None = ...): ... - def get_canonical_user_id(self, headers: dict[str, str] | None = ...): ... - def get_bucket(self, bucket_name: str, validate: bool = ..., headers: dict[str, str] | None = ...) -> Bucket: ... - def head_bucket(self, bucket_name, headers: dict[str, str] | None = ...): ... - def lookup(self, bucket_name, validate: bool = ..., headers: dict[str, str] | None = ...): ... + def get_all_buckets(self, headers: dict[str, str] | None = None): ... + def get_canonical_user_id(self, headers: dict[str, str] | None = None): ... + def get_bucket(self, bucket_name: str, validate: bool = True, headers: dict[str, str] | None = None) -> Bucket: ... + def head_bucket(self, bucket_name, headers: dict[str, str] | None = None): ... + def lookup(self, bucket_name, validate: bool = True, headers: dict[str, str] | None = None): ... def create_bucket( - self, bucket_name, headers: dict[str, str] | None = ..., location: Any = ..., policy: Incomplete | None = ... + self, bucket_name, headers: dict[str, str] | None = None, location: Any = "", policy: Incomplete | None = None ): ... - def delete_bucket(self, bucket, headers: dict[str, str] | None = ...): ... + def delete_bucket(self, bucket, headers: dict[str, str] | None = None): ... def make_request( # type: ignore[override] self, method, - bucket: str = ..., - key: str = ..., - headers: Incomplete | None = ..., - data: str = ..., - query_args: Incomplete | None = ..., - sender: Incomplete | None = ..., - override_num_retries: Incomplete | None = ..., - retry_handler: Incomplete | None = ..., + bucket: str = "", + key: str = "", + headers: Incomplete | None = None, + data: str = "", + query_args: Incomplete | None = None, + sender: Incomplete | None = None, + override_num_retries: Incomplete | None = None, + retry_handler: Incomplete | None = None, *args, **kwargs, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/cors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/cors.pyi index 1b3e66b52..f497246be 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/cors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/cors.pyi @@ -10,12 +10,12 @@ class CORSRule: expose_header: Any def __init__( self, - allowed_method: Incomplete | None = ..., - allowed_origin: Incomplete | None = ..., - id: Incomplete | None = ..., - allowed_header: Incomplete | None = ..., - max_age_seconds: Incomplete | None = ..., - expose_header: Incomplete | None = ..., + allowed_method: Incomplete | None = None, + allowed_origin: Incomplete | None = None, + id: Incomplete | None = None, + allowed_header: Incomplete | None = None, + max_age_seconds: Incomplete | None = None, + expose_header: Incomplete | None = None, ) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @@ -29,8 +29,8 @@ class CORSConfiguration(list[CORSRule]): self, allowed_method, allowed_origin, - id: Incomplete | None = ..., - allowed_header: Incomplete | None = ..., - max_age_seconds: Incomplete | None = ..., - expose_header: Incomplete | None = ..., + id: Incomplete | None = None, + allowed_header: Incomplete | None = None, + max_age_seconds: Incomplete | None = None, + expose_header: Incomplete | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/deletemarker.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/deletemarker.pyi index 179f35f83..38fe39bfd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/deletemarker.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/deletemarker.pyi @@ -8,6 +8,6 @@ class DeleteMarker: is_latest: bool last_modified: Any owner: Any - def __init__(self, bucket: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, bucket: Incomplete | None = None, name: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/key.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/key.pyi index 52a31fd24..227403367 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/key.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/key.pyi @@ -32,7 +32,7 @@ class Key: ongoing_restore: Any expiry_date: Any local_hashes: Any - def __init__(self, bucket: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, bucket: Incomplete | None = None, name: Incomplete | None = None) -> None: ... def __iter__(self): ... @property def provider(self): ... @@ -42,194 +42,194 @@ class Key: storage_class: Any def get_md5_from_hexdigest(self, md5_hexdigest): ... def handle_encryption_headers(self, resp): ... - def handle_version_headers(self, resp, force: bool = ...): ... + def handle_version_headers(self, resp, force: bool = False): ... def handle_restore_headers(self, response): ... def handle_addl_headers(self, headers): ... def open_read( self, - headers: dict[str, str] | None = ..., - query_args: str = ..., - override_num_retries: Incomplete | None = ..., - response_headers: dict[str, str] | None = ..., + headers: dict[str, str] | None = None, + query_args: str = "", + override_num_retries: Incomplete | None = None, + response_headers: dict[str, str] | None = None, ): ... - def open_write(self, headers: dict[str, str] | None = ..., override_num_retries: Incomplete | None = ...): ... + def open_write(self, headers: dict[str, str] | None = None, override_num_retries: Incomplete | None = None): ... def open( self, - mode: str = ..., - headers: dict[str, str] | None = ..., - query_args: Incomplete | None = ..., - override_num_retries: Incomplete | None = ..., + mode: str = "r", + headers: dict[str, str] | None = None, + query_args: Incomplete | None = None, + override_num_retries: Incomplete | None = None, ): ... closed: bool - def close(self, fast: bool = ...): ... + def close(self, fast: bool = False): ... def next(self): ... __next__: Any - def read(self, size: int = ...): ... - def change_storage_class(self, new_storage_class, dst_bucket: Incomplete | None = ..., validate_dst_bucket: bool = ...): ... + def read(self, size: int = 0): ... + def change_storage_class(self, new_storage_class, dst_bucket: Incomplete | None = None, validate_dst_bucket: bool = True): ... def copy( self, dst_bucket, dst_key, - metadata: Incomplete | None = ..., - reduced_redundancy: bool = ..., - preserve_acl: bool = ..., - encrypt_key: bool = ..., - validate_dst_bucket: bool = ..., + metadata: Incomplete | None = None, + reduced_redundancy: bool = False, + preserve_acl: bool = False, + encrypt_key: bool = False, + validate_dst_bucket: bool = True, ): ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... - def exists(self, headers: dict[str, str] | None = ...): ... - def delete(self, headers: dict[str, str] | None = ...): ... + def exists(self, headers: dict[str, str] | None = None): ... + def delete(self, headers: dict[str, str] | None = None): ... def get_metadata(self, name): ... def set_metadata(self, name, value): ... def update_metadata(self, d): ... - def set_acl(self, acl_str, headers: dict[str, str] | None = ...): ... - def get_acl(self, headers: dict[str, str] | None = ...): ... - def get_xml_acl(self, headers: dict[str, str] | None = ...): ... - def set_xml_acl(self, acl_str, headers: dict[str, str] | None = ...): ... - def set_canned_acl(self, acl_str, headers: dict[str, str] | None = ...): ... + def set_acl(self, acl_str, headers: dict[str, str] | None = None): ... + def get_acl(self, headers: dict[str, str] | None = None): ... + def get_xml_acl(self, headers: dict[str, str] | None = None): ... + def set_xml_acl(self, acl_str, headers: dict[str, str] | None = None): ... + def set_canned_acl(self, acl_str, headers: dict[str, str] | None = None): ... def get_redirect(self): ... - def set_redirect(self, redirect_location, headers: dict[str, str] | None = ...): ... - def make_public(self, headers: dict[str, str] | None = ...): ... + def set_redirect(self, redirect_location, headers: dict[str, str] | None = None): ... + def make_public(self, headers: dict[str, str] | None = None): ... def generate_url( self, expires_in, - method: str = ..., - headers: dict[str, str] | None = ..., - query_auth: bool = ..., - force_http: bool = ..., - response_headers: dict[str, str] | None = ..., - expires_in_absolute: bool = ..., - version_id: Incomplete | None = ..., - policy: Incomplete | None = ..., - reduced_redundancy: bool = ..., - encrypt_key: bool = ..., + method: str = "GET", + headers: dict[str, str] | None = None, + query_auth: bool = True, + force_http: bool = False, + response_headers: dict[str, str] | None = None, + expires_in_absolute: bool = False, + version_id: Incomplete | None = None, + policy: Incomplete | None = None, + reduced_redundancy: bool = False, + encrypt_key: bool = False, ): ... def send_file( self, fp, - headers: dict[str, str] | None = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - query_args: Incomplete | None = ..., - chunked_transfer: bool = ..., - size: Incomplete | None = ..., + headers: dict[str, str] | None = None, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + query_args: Incomplete | None = None, + chunked_transfer: bool = False, + size: Incomplete | None = None, ): ... - def should_retry(self, response, chunked_transfer: bool = ...): ... - def compute_md5(self, fp, size: Incomplete | None = ...): ... + def should_retry(self, response, chunked_transfer: bool = False): ... + def compute_md5(self, fp, size: Incomplete | None = None): ... def set_contents_from_stream( self, fp, - headers: dict[str, str] | None = ..., - replace: bool = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - policy: Incomplete | None = ..., - reduced_redundancy: bool = ..., - query_args: Incomplete | None = ..., - size: Incomplete | None = ..., + headers: dict[str, str] | None = None, + replace: bool = True, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + policy: Incomplete | None = None, + reduced_redundancy: bool = False, + query_args: Incomplete | None = None, + size: Incomplete | None = None, ): ... def set_contents_from_file( self, fp, - headers: dict[str, str] | None = ..., - replace: bool = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - policy: Incomplete | None = ..., - md5: Incomplete | None = ..., - reduced_redundancy: bool = ..., - query_args: Incomplete | None = ..., - encrypt_key: bool = ..., - size: Incomplete | None = ..., - rewind: bool = ..., + headers: dict[str, str] | None = None, + replace: bool = True, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + policy: Incomplete | None = None, + md5: Incomplete | None = None, + reduced_redundancy: bool = False, + query_args: Incomplete | None = None, + encrypt_key: bool = False, + size: Incomplete | None = None, + rewind: bool = False, ): ... def set_contents_from_filename( self, filename, - headers: dict[str, str] | None = ..., - replace: bool = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - policy: Incomplete | None = ..., - md5: Incomplete | None = ..., - reduced_redundancy: bool = ..., - encrypt_key: bool = ..., + headers: dict[str, str] | None = None, + replace: bool = True, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + policy: Incomplete | None = None, + md5: Incomplete | None = None, + reduced_redundancy: bool = False, + encrypt_key: bool = False, ): ... def set_contents_from_string( self, string_data: str | bytes, - headers: dict[str, str] | None = ..., - replace: bool = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - policy: Incomplete | None = ..., - md5: Incomplete | None = ..., - reduced_redundancy: bool = ..., - encrypt_key: bool = ..., + headers: dict[str, str] | None = None, + replace: bool = True, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + policy: Incomplete | None = None, + md5: Incomplete | None = None, + reduced_redundancy: bool = False, + encrypt_key: bool = False, ) -> None: ... def get_file( self, fp, - headers: dict[str, str] | None = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - torrent: bool = ..., - version_id: Incomplete | None = ..., - override_num_retries: Incomplete | None = ..., - response_headers: dict[str, str] | None = ..., + headers: dict[str, str] | None = None, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + torrent: bool = False, + version_id: Incomplete | None = None, + override_num_retries: Incomplete | None = None, + response_headers: dict[str, str] | None = None, ): ... def get_torrent_file( - self, fp, headers: dict[str, str] | None = ..., cb: Callable[[int, int], object] | None = ..., num_cb: int = ... + self, fp, headers: dict[str, str] | None = None, cb: Callable[[int, int], object] | None = None, num_cb: int = 10 ): ... def get_contents_to_file( self, fp, - headers: dict[str, str] | None = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - torrent: bool = ..., - version_id: Incomplete | None = ..., - res_download_handler: Incomplete | None = ..., - response_headers: dict[str, str] | None = ..., + headers: dict[str, str] | None = None, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + torrent: bool = False, + version_id: Incomplete | None = None, + res_download_handler: Incomplete | None = None, + response_headers: dict[str, str] | None = None, ): ... def get_contents_to_filename( self, filename, - headers: dict[str, str] | None = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - torrent: bool = ..., - version_id: Incomplete | None = ..., - res_download_handler: Incomplete | None = ..., - response_headers: dict[str, str] | None = ..., + headers: dict[str, str] | None = None, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + torrent: bool = False, + version_id: Incomplete | None = None, + res_download_handler: Incomplete | None = None, + response_headers: dict[str, str] | None = None, ): ... @overload def get_contents_as_string( self, - headers: dict[str, str] | None = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - torrent: bool = ..., - version_id: Incomplete | None = ..., - response_headers: dict[str, str] | None = ..., - encoding: None = ..., + headers: dict[str, str] | None = None, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + torrent: bool = False, + version_id: Incomplete | None = None, + response_headers: dict[str, str] | None = None, + encoding: None = None, ) -> bytes: ... @overload def get_contents_as_string( self, - headers: dict[str, str] | None = ..., - cb: Callable[[int, int], object] | None = ..., - num_cb: int = ..., - torrent: bool = ..., - version_id: Incomplete | None = ..., - response_headers: dict[str, str] | None = ..., + headers: dict[str, str] | None = None, + cb: Callable[[int, int], object] | None = None, + num_cb: int = 10, + torrent: bool = False, + version_id: Incomplete | None = None, + response_headers: dict[str, str] | None = None, *, encoding: str, ) -> str: ... - def add_email_grant(self, permission, email_address, headers: dict[str, str] | None = ...): ... + def add_email_grant(self, permission, email_address, headers: dict[str, str] | None = None): ... def add_user_grant( - self, permission, user_id, headers: dict[str, str] | None = ..., display_name: Incomplete | None = ... + self, permission, user_id, headers: dict[str, str] | None = None, display_name: Incomplete | None = None ): ... - def set_remote_metadata(self, metadata_plus, metadata_minus, preserve_acl, headers: dict[str, str] | None = ...): ... - def restore(self, days, headers: dict[str, str] | None = ...): ... + def set_remote_metadata(self, metadata_plus, metadata_minus, preserve_acl, headers: dict[str, str] | None = None): ... + def restore(self, days, headers: dict[str, str] | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/keyfile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/keyfile.pyi index 121da165a..fc2efb646 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/keyfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/keyfile.pyi @@ -12,7 +12,7 @@ class KeyFile: name: Any def __init__(self, key) -> None: ... def tell(self): ... - def seek(self, pos, whence: Any = ...): ... + def seek(self, pos, whence: Any = 0): ... def read(self, size): ... def close(self): ... def isatty(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/lifecycle.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/lifecycle.pyi index 358faaff8..b2e095695 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/lifecycle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/lifecycle.pyi @@ -9,11 +9,11 @@ class Rule: transition: Any def __init__( self, - id: Incomplete | None = ..., - prefix: Incomplete | None = ..., - status: Incomplete | None = ..., - expiration: Incomplete | None = ..., - transition: Incomplete | None = ..., + id: Incomplete | None = None, + prefix: Incomplete | None = None, + status: Incomplete | None = None, + expiration: Incomplete | None = None, + transition: Incomplete | None = None, ) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @@ -22,7 +22,7 @@ class Rule: class Expiration: days: Any date: Any - def __init__(self, days: Incomplete | None = ..., date: Incomplete | None = ...) -> None: ... + def __init__(self, days: Incomplete | None = None, date: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... def to_xml(self): ... @@ -32,7 +32,7 @@ class Transition: date: Any storage_class: Any def __init__( - self, days: Incomplete | None = ..., date: Incomplete | None = ..., storage_class: Incomplete | None = ... + self, days: Incomplete | None = None, date: Incomplete | None = None, storage_class: Incomplete | None = None ) -> None: ... def to_xml(self): ... @@ -47,7 +47,7 @@ class Transitions(list[Transition]): def endElement(self, name, value, connection): ... def to_xml(self): ... def add_transition( - self, days: Incomplete | None = ..., date: Incomplete | None = ..., storage_class: Incomplete | None = ... + self, days: Incomplete | None = None, date: Incomplete | None = None, storage_class: Incomplete | None = None ): ... @property def days(self): ... @@ -62,9 +62,9 @@ class Lifecycle(list[Rule]): def to_xml(self): ... def add_rule( self, - id: Incomplete | None = ..., - prefix: str = ..., - status: str = ..., - expiration: Incomplete | None = ..., - transition: Incomplete | None = ..., + id: Incomplete | None = None, + prefix: str = "", + status: str = "Enabled", + expiration: Incomplete | None = None, + transition: Incomplete | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/multidelete.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/multidelete.pyi index 3ab86b04d..3af7db1eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/multidelete.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/multidelete.pyi @@ -8,10 +8,10 @@ class Deleted: delete_marker_version_id: Any def __init__( self, - key: Incomplete | None = ..., - version_id: Incomplete | None = ..., - delete_marker: bool = ..., - delete_marker_version_id: Incomplete | None = ..., + key: Incomplete | None = None, + version_id: Incomplete | None = None, + delete_marker: bool = False, + delete_marker_version_id: Incomplete | None = None, ) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @@ -23,10 +23,10 @@ class Error: message: Any def __init__( self, - key: Incomplete | None = ..., - version_id: Incomplete | None = ..., - code: Incomplete | None = ..., - message: Incomplete | None = ..., + key: Incomplete | None = None, + version_id: Incomplete | None = None, + code: Incomplete | None = None, + message: Incomplete | None = None, ) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @@ -35,6 +35,6 @@ class MultiDeleteResult: bucket: Any deleted: Any errors: Any - def __init__(self, bucket: Incomplete | None = ...) -> None: ... + def __init__(self, bucket: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/multipart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/multipart.pyi index 9fd513139..e764158f3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/multipart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/multipart.pyi @@ -9,7 +9,7 @@ class CompleteMultiPartUpload: etag: Any version_id: Any encrypted: Any - def __init__(self, bucket: Incomplete | None = ...) -> None: ... + def __init__(self, bucket: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @@ -19,11 +19,11 @@ class Part: last_modified: Any etag: Any size: Any - def __init__(self, bucket: Incomplete | None = ...) -> None: ... + def __init__(self, bucket: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... -def part_lister(mpupload, part_number_marker: Incomplete | None = ...): ... +def part_lister(mpupload, part_number_marker: Incomplete | None = None): ... class MultiPartUpload: bucket: Any @@ -38,37 +38,37 @@ class MultiPartUpload: next_part_number_marker: Any max_parts: Any is_truncated: bool - def __init__(self, bucket: Incomplete | None = ...) -> None: ... + def __init__(self, bucket: Incomplete | None = None) -> None: ... def __iter__(self): ... def to_xml(self): ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... def get_all_parts( self, - max_parts: Incomplete | None = ..., - part_number_marker: Incomplete | None = ..., - encoding_type: Incomplete | None = ..., + max_parts: Incomplete | None = None, + part_number_marker: Incomplete | None = None, + encoding_type: Incomplete | None = None, ): ... def upload_part_from_file( self, fp, part_num, - headers: Incomplete | None = ..., - replace: bool = ..., - cb: Incomplete | None = ..., - num_cb: int = ..., - md5: Incomplete | None = ..., - size: Incomplete | None = ..., + headers: Incomplete | None = None, + replace: bool = True, + cb: Incomplete | None = None, + num_cb: int = 10, + md5: Incomplete | None = None, + size: Incomplete | None = None, ): ... def copy_part_from_key( self, src_bucket_name, src_key_name, part_num, - start: Incomplete | None = ..., - end: Incomplete | None = ..., - src_version_id: Incomplete | None = ..., - headers: Incomplete | None = ..., + start: Incomplete | None = None, + end: Incomplete | None = None, + src_version_id: Incomplete | None = None, + headers: Incomplete | None = None, ): ... def complete_upload(self): ... def cancel_upload(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/prefix.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/prefix.pyi index b4164f485..d362f22c3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/prefix.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/prefix.pyi @@ -4,7 +4,7 @@ from typing import Any class Prefix: bucket: Any name: Any - def __init__(self, bucket: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, bucket: Incomplete | None = None, name: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/tagging.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/tagging.pyi index 3515e91c2..e8356b4e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/tagging.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/tagging.pyi @@ -4,7 +4,7 @@ from typing import Any class Tag: key: Any value: Any - def __init__(self, key: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__(self, key: Incomplete | None = None, value: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... def to_xml(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/user.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/user.pyi index d5c56ee3a..c18968340 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/user.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/user.pyi @@ -5,7 +5,7 @@ class User: type: Any id: Any display_name: Any - def __init__(self, parent: Incomplete | None = ..., id: str = ..., display_name: str = ...) -> None: ... + def __init__(self, parent: Incomplete | None = None, id: str = "", display_name: str = "") -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... - def to_xml(self, element_name: str = ...): ... + def to_xml(self, element_name: str = "Owner"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/website.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/website.pyi index e7597a0d6..a596cebd9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/website.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/s3/website.pyi @@ -10,10 +10,10 @@ class WebsiteConfiguration: routing_rules: Any def __init__( self, - suffix: Incomplete | None = ..., - error_key: Incomplete | None = ..., - redirect_all_requests_to: Incomplete | None = ..., - routing_rules: Incomplete | None = ..., + suffix: Incomplete | None = None, + error_key: Incomplete | None = None, + redirect_all_requests_to: Incomplete | None = None, + routing_rules: Incomplete | None = None, ) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... @@ -22,7 +22,7 @@ class WebsiteConfiguration: class _XMLKeyValue: translator: Any container: Any - def __init__(self, translator, container: Incomplete | None = ...) -> None: ... + def __init__(self, translator, container: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... def to_xml(self): ... @@ -31,7 +31,7 @@ class RedirectLocation(_XMLKeyValue): TRANSLATOR: Any hostname: Any protocol: Any - def __init__(self, hostname: Incomplete | None = ..., protocol: Incomplete | None = ...) -> None: ... + def __init__(self, hostname: Incomplete | None = None, protocol: Incomplete | None = None) -> None: ... def to_xml(self): ... class RoutingRules(list[RoutingRule]): @@ -43,26 +43,26 @@ class RoutingRules(list[RoutingRule]): class RoutingRule: condition: Any redirect: Any - def __init__(self, condition: Incomplete | None = ..., redirect: Incomplete | None = ...) -> None: ... + def __init__(self, condition: Incomplete | None = None, redirect: Incomplete | None = None) -> None: ... def startElement(self, name, attrs, connection): ... def endElement(self, name, value, connection): ... def to_xml(self): ... @classmethod - def when(cls, key_prefix: Incomplete | None = ..., http_error_code: Incomplete | None = ...): ... + def when(cls, key_prefix: Incomplete | None = None, http_error_code: Incomplete | None = None): ... def then_redirect( self, - hostname: Incomplete | None = ..., - protocol: Incomplete | None = ..., - replace_key: Incomplete | None = ..., - replace_key_prefix: Incomplete | None = ..., - http_redirect_code: Incomplete | None = ..., + hostname: Incomplete | None = None, + protocol: Incomplete | None = None, + replace_key: Incomplete | None = None, + replace_key_prefix: Incomplete | None = None, + http_redirect_code: Incomplete | None = None, ): ... class Condition(_XMLKeyValue): TRANSLATOR: Any key_prefix: Any http_error_code: Any - def __init__(self, key_prefix: Incomplete | None = ..., http_error_code: Incomplete | None = ...) -> None: ... + def __init__(self, key_prefix: Incomplete | None = None, http_error_code: Incomplete | None = None) -> None: ... def to_xml(self): ... class Redirect(_XMLKeyValue): @@ -74,10 +74,10 @@ class Redirect(_XMLKeyValue): http_redirect_code: Any def __init__( self, - hostname: Incomplete | None = ..., - protocol: Incomplete | None = ..., - replace_key: Incomplete | None = ..., - replace_key_prefix: Incomplete | None = ..., - http_redirect_code: Incomplete | None = ..., + hostname: Incomplete | None = None, + protocol: Incomplete | None = None, + replace_key: Incomplete | None = None, + replace_key_prefix: Incomplete | None = None, + http_redirect_code: Incomplete | None = None, ) -> None: ... def to_xml(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/utils.pyi index ae9a2396b..6b61db28d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/boto/utils.pyi @@ -24,25 +24,33 @@ qsa_of_interest: list[str] def unquote_v(nv: str) -> str | tuple[str, str]: ... def canonical_string( - method: str, path: str, headers: Mapping[str, str | None], expires: int | None = ..., provider: _Provider | None = ... + method: str, path: str, headers: Mapping[str, str | None], expires: int | None = None, provider: _Provider | None = None ) -> str: ... def merge_meta( - headers: Mapping[str, str], metadata: Mapping[str, str], provider: _Provider | None = ... + headers: Mapping[str, str], metadata: Mapping[str, str], provider: _Provider | None = None ) -> Mapping[str, str]: ... -def get_aws_metadata(headers: Mapping[str, str], provider: _Provider | None = ...) -> Mapping[str, str]: ... -def retry_url(url: str, retry_on_404: bool = ..., num_retries: int = ..., timeout: int | None = ...) -> str: ... +def get_aws_metadata(headers: Mapping[str, str], provider: _Provider | None = None) -> Mapping[str, str]: ... +def retry_url(url: str, retry_on_404: bool = True, num_retries: int = 10, timeout: int | None = None) -> str: ... class LazyLoadMetadata(dict[_KT, _VT]): - def __init__(self, url: str, num_retries: int, timeout: int | None = ...) -> None: ... + def __init__(self, url: str, num_retries: int, timeout: int | None = None) -> None: ... def get_instance_metadata( - version: str = ..., url: str = ..., data: str = ..., timeout: int | None = ..., num_retries: int = ... + version: str = "latest", + url: str = "http://169.254.169.254", + data: str = "meta-data/", + timeout: int | None = None, + num_retries: int = 5, ) -> LazyLoadMetadata[Any, Any] | None: ... def get_instance_identity( - version: str = ..., url: str = ..., timeout: int | None = ..., num_retries: int = ... + version: str = "latest", url: str = "http://169.254.169.254", timeout: int | None = None, num_retries: int = 5 ) -> Mapping[str, Any] | None: ... def get_instance_userdata( - version: str = ..., sep: str | None = ..., url: str = ..., timeout: int | None = ..., num_retries: int = ... + version: str = "latest", + sep: str | None = None, + url: str = "http://169.254.169.254", + timeout: int | None = None, + num_retries: int = 5, ) -> Mapping[str, str]: ... ISO8601: str @@ -51,12 +59,12 @@ RFC1123: str LOCALE_LOCK: _LockType def setlocale(name: str | tuple[str, str]) -> AbstractContextManager[str]: ... -def get_ts(ts: time.struct_time | None = ...) -> str: ... +def get_ts(ts: time.struct_time | None = None) -> str: ... def parse_ts(ts: str) -> datetime.datetime: ... -def find_class(module_name: str, class_name: str | None = ...) -> type[Any] | None: ... +def find_class(module_name: str, class_name: str | None = None) -> type[Any] | None: ... def update_dme(username: str, password: str, dme_id: str, ip_address: str) -> str: ... def fetch_file( - uri: str, file: IO[str] | None = ..., username: str | None = ..., password: str | None = ... + uri: str, file: IO[str] | None = None, username: str | None = None, password: str | None = None ) -> IO[str] | None: ... class ShellCommand: @@ -66,10 +74,10 @@ class ShellCommand: wait: bool fail_fast: bool def __init__( - self, command: subprocess._CMD, wait: bool = ..., fail_fast: bool = ..., cwd: StrOrBytesPath | None = ... + self, command: subprocess._CMD, wait: bool = True, fail_fast: bool = False, cwd: StrOrBytesPath | None = None ) -> None: ... process: subprocess.Popen[Any] - def run(self, cwd: subprocess._CMD | None = ...) -> int | None: ... + def run(self, cwd: subprocess._CMD | None = None) -> int | None: ... def setReadOnly(self, value) -> None: ... def getStatus(self) -> int | None: ... status: int | None @@ -102,34 +110,36 @@ _Str: TypeAlias = str class Password: hashfunc: Callable[[bytes], _Hash] str: _Str | None - def __init__(self, str: _Str | None = ..., hashfunc: Callable[[bytes], _Hash] | None = ...) -> None: ... + def __init__(self, str: _Str | None = None, hashfunc: Callable[[bytes], _Hash] | None = None) -> None: ... def set(self, value: bytes | _Str) -> None: ... def __eq__(self, other: _Str | bytes | None) -> bool: ... # type: ignore[override] def __len__(self) -> int: ... def notify( subject: str, - body: str | None = ..., - html_body: Sequence[str] | str | None = ..., - to_string: str | None = ..., - attachments: Iterable[Message] | None = ..., - append_instance_id: bool = ..., + body: str | None = None, + html_body: Sequence[str] | str | None = None, + to_string: str | None = None, + attachments: Iterable[Message] | None = None, + append_instance_id: bool = True, ) -> None: ... def get_utf8_value(value: str) -> bytes: ... def mklist(value: Any) -> list[Any]: ... def pythonize_name(name: str) -> str: ... def write_mime_multipart( - content: list[tuple[str, str]], compress: bool = ..., deftype: str = ..., delimiter: str = ... + content: list[tuple[str, str]], compress: bool = False, deftype: str = "text/plain", delimiter: str = ":" ) -> str: ... def guess_mime_type(content: str, deftype: str) -> str: ... -def compute_md5(fp: IO[Any], buf_size: int = ..., size: int | None = ...) -> tuple[str, str, int]: ... -def compute_hash(fp: IO[Any], buf_size: int = ..., size: int | None = ..., hash_algorithm: Any = ...) -> tuple[str, str, int]: ... +def compute_md5(fp: IO[Any], buf_size: int = 8192, size: int | None = None) -> tuple[str, str, int]: ... +def compute_hash( + fp: IO[Any], buf_size: int = 8192, size: int | None = None, hash_algorithm: Any = ... +) -> tuple[str, str, int]: ... def find_matching_headers(name: str, headers: Mapping[str, str | None]) -> list[str]: ... def merge_headers_by_name(name: str, headers: Mapping[str, str | None]) -> str: ... class RequestHook: def handle_request_data( - self, request: boto.connection.HTTPRequest, response: boto.connection.HTTPResponse, error: bool = ... + self, request: boto.connection.HTTPRequest, response: boto.connection.HTTPResponse, error: bool = False ) -> Any: ... def host_is_ipv6(hostname: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/address.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/address.pyi index e3a3b33e4..bd6d26c7d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/address.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/address.pyi @@ -14,13 +14,13 @@ class Address(Resource): Electronic: str ShipToStore: str @staticmethod - def create(params: Incomplete | None = ...): ... + def create(params: Incomplete | None = None): ... @staticmethod def delete(customer_id, address_id): ... @staticmethod def find(customer_id, address_id): ... @staticmethod - def update(customer_id, address_id, params: Incomplete | None = ...): ... + def update(customer_id, address_id, params: Incomplete | None = None): ... @staticmethod def create_signature(): ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/address_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/address_gateway.pyi index 15997901b..07f7530ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/address_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/address_gateway.pyi @@ -11,7 +11,7 @@ class AddressGateway: gateway: Any config: Any def __init__(self, gateway) -> None: ... - def create(self, params: Incomplete | None = ...): ... + def create(self, params: Incomplete | None = None): ... def delete(self, customer_id, address_id): ... def find(self, customer_id, address_id): ... - def update(self, customer_id, address_id, params: Incomplete | None = ...): ... + def update(self, customer_id, address_id, params: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/attribute_getter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/attribute_getter.pyi index 848f30634..ce928b494 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/attribute_getter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/attribute_getter.pyi @@ -1,4 +1,4 @@ from _typeshed import Incomplete class AttributeGetter: - def __init__(self, attributes: Incomplete | None = ...) -> None: ... + def __init__(self, attributes: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/braintree_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/braintree_gateway.pyi index 5f4947b99..c82ef2f03 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/braintree_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/braintree_gateway.pyi @@ -58,4 +58,4 @@ class BraintreeGateway: verification: Any webhook_notification: Any webhook_testing: Any - def __init__(self, config: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, config: Incomplete | None = None, **kwargs) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/client_token.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/client_token.pyi index 42afabe60..286447431 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/client_token.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/client_token.pyi @@ -7,6 +7,6 @@ from braintree.util.crypto import Crypto as Crypto class ClientToken: @staticmethod - def generate(params: Incomplete | None = ..., gateway: Incomplete | None = ...): ... + def generate(params: Incomplete | None = None, gateway: Incomplete | None = None): ... @staticmethod def generate_signature(): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/client_token_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/client_token_gateway.pyi index 1f66fe5b7..49d8bf37e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/client_token_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/client_token_gateway.pyi @@ -9,4 +9,4 @@ class ClientTokenGateway: gateway: Any config: Any def __init__(self, gateway) -> None: ... - def generate(self, params: Incomplete | None = ...): ... + def generate(self, params: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/configuration.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/configuration.pyi index 68e415501..a3a0667a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/configuration.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/configuration.pyi @@ -30,13 +30,13 @@ class Configuration: wrap_http_exceptions: Any def __init__( self, - environment: Incomplete | None = ..., - merchant_id: Incomplete | None = ..., - public_key: Incomplete | None = ..., - private_key: Incomplete | None = ..., - client_id: Incomplete | None = ..., - client_secret: Incomplete | None = ..., - access_token: Incomplete | None = ..., + environment: Incomplete | None = None, + merchant_id: Incomplete | None = None, + public_key: Incomplete | None = None, + private_key: Incomplete | None = None, + client_id: Incomplete | None = None, + client_secret: Incomplete | None = None, + access_token: Incomplete | None = None, *args, **kwargs, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credentials_parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credentials_parser.pyi index e801f2872..0eddad1c9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credentials_parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credentials_parser.pyi @@ -9,7 +9,7 @@ class CredentialsParser: client_secret: Any access_token: Any def __init__( - self, client_id: Incomplete | None = ..., client_secret: Incomplete | None = ..., access_token: Incomplete | None = ... + self, client_id: Incomplete | None = None, client_secret: Incomplete | None = None, access_token: Incomplete | None = None ) -> None: ... environment: Any def parse_client_credentials(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credit_card.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credit_card.pyi index 8c8958245..e406a2b3b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credit_card.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credit_card.pyi @@ -45,9 +45,9 @@ class CreditCard(Resource): Prepaid: Any ProductId: Any @staticmethod - def create(params: Incomplete | None = ...): ... + def create(params: Incomplete | None = None): ... @staticmethod - def update(credit_card_token, params: Incomplete | None = ...): ... + def update(credit_card_token, params: Incomplete | None = None): ... @staticmethod def delete(credit_card_token): ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credit_card_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credit_card_gateway.pyi index 68fbe2d9f..3f0140c4e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credit_card_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/credit_card_gateway.pyi @@ -13,11 +13,11 @@ class CreditCardGateway: gateway: Any config: Any def __init__(self, gateway) -> None: ... - def create(self, params: Incomplete | None = ...): ... + def create(self, params: Incomplete | None = None): ... def delete(self, credit_card_token): ... def expired(self): ... def expiring_between(self, start_date, end_date): ... def find(self, credit_card_token): ... def forward(self, credit_card_token, receiving_merchant_id) -> None: ... def from_nonce(self, nonce): ... - def update(self, credit_card_token, params: Incomplete | None = ...): ... + def update(self, credit_card_token, params: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/customer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/customer.pyi index 6c81cc8b4..25bbe139d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/customer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/customer.pyi @@ -26,15 +26,15 @@ class Customer(Resource): @staticmethod def all(): ... @staticmethod - def create(params: Incomplete | None = ...): ... + def create(params: Incomplete | None = None): ... @staticmethod def delete(customer_id): ... @staticmethod - def find(customer_id, association_filter_id: Incomplete | None = ...): ... + def find(customer_id, association_filter_id: Incomplete | None = None): ... @staticmethod def search(*query): ... @staticmethod - def update(customer_id, params: Incomplete | None = ...): ... + def update(customer_id, params: Incomplete | None = None): ... @staticmethod def create_signature(): ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/customer_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/customer_gateway.pyi index 077933ae3..3e24ca695 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/customer_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/customer_gateway.pyi @@ -14,8 +14,8 @@ class CustomerGateway: config: Any def __init__(self, gateway) -> None: ... def all(self): ... - def create(self, params: Incomplete | None = ...): ... + def create(self, params: Incomplete | None = None): ... def delete(self, customer_id): ... - def find(self, customer_id, association_filter_id: Incomplete | None = ...): ... + def find(self, customer_id, association_filter_id: Incomplete | None = None): ... def search(self, *query): ... - def update(self, customer_id, params: Incomplete | None = ...): ... + def update(self, customer_id, params: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/document_upload.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/document_upload.pyi index e0d47ae14..51d673dd3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/document_upload.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/document_upload.pyi @@ -8,7 +8,7 @@ class DocumentUpload(Resource): class Kind: EvidenceDocument: str @staticmethod - def create(params: Incomplete | None = ...): ... + def create(params: Incomplete | None = None): ... @staticmethod def create_signature(): ... def __init__(self, gateway, attributes) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/document_upload_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/document_upload_gateway.pyi index c076510cd..9b2c1adfb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/document_upload_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/document_upload_gateway.pyi @@ -10,4 +10,4 @@ class DocumentUploadGateway: gateway: Any config: Any def __init__(self, gateway) -> None: ... - def create(self, params: Incomplete | None = ...): ... + def create(self, params: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/environment.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/environment.pyi index 7ebd8bf03..a778ab4fa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/environment.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/environment.pyi @@ -7,7 +7,7 @@ class Environment: is_ssl: Any ssl_certificate: Any def __init__( - self, name, server, port, auth_url, is_ssl, ssl_certificate, graphql_server: str = ..., graphql_port: str = ... + self, name, server, port, auth_url, is_ssl, ssl_certificate, graphql_server: str = "", graphql_port: str = "" ) -> None: ... @property def base_url(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/merchant_account/merchant_account.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/merchant_account/merchant_account.pyi index 45259e0fa..83e51e471 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/merchant_account/merchant_account.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/merchant_account/merchant_account.pyi @@ -26,7 +26,7 @@ class MerchantAccount(Resource): master_merchant_account: Any def __init__(self, gateway, attributes) -> None: ... @staticmethod - def create(params: Incomplete | None = ...): ... + def create(params: Incomplete | None = None): ... @staticmethod def update(id, attributes): ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/merchant_account_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/merchant_account_gateway.pyi index 1bd64629a..73b0af872 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/merchant_account_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/merchant_account_gateway.pyi @@ -14,8 +14,8 @@ class MerchantAccountGateway: gateway: Any config: Any def __init__(self, gateway) -> None: ... - def create(self, params: Incomplete | None = ...): ... - def update(self, merchant_account_id, params: Incomplete | None = ...): ... + def create(self, params: Incomplete | None = None): ... + def update(self, merchant_account_id, params: Incomplete | None = None): ... def find(self, merchant_account_id): ... - def create_for_currency(self, params: Incomplete | None = ...): ... + def create_for_currency(self, params: Incomplete | None = None): ... def all(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method.pyi index c2c358115..a94add23e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method.pyi @@ -6,13 +6,13 @@ from braintree.resource import Resource as Resource class PaymentMethod(Resource): @staticmethod - def create(params: Incomplete | None = ...): ... + def create(params: Incomplete | None = None): ... @staticmethod def find(payment_method_token): ... @staticmethod def update(payment_method_token, params): ... @staticmethod - def delete(payment_method_token, options: Incomplete | None = ...): ... + def delete(payment_method_token, options: Incomplete | None = None): ... @staticmethod def create_signature(): ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method_gateway.pyi index f3d71a7b2..4eec27e86 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method_gateway.pyi @@ -27,10 +27,10 @@ class PaymentMethodGateway: gateway: Any config: Any def __init__(self, gateway) -> None: ... - def create(self, params: Incomplete | None = ...): ... + def create(self, params: Incomplete | None = None): ... def find(self, payment_method_token): ... def update(self, payment_method_token, params): ... - def delete(self, payment_method_token, options: Incomplete | None = ...): ... + def delete(self, payment_method_token, options: Incomplete | None = None): ... options: Any - def grant(self, payment_method_token, options: Incomplete | None = ...): ... + def grant(self, payment_method_token, options: Incomplete | None = None): ... def revoke(self, payment_method_token): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method_nonce.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method_nonce.pyi index 35a804c8e..80944a7ae 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method_nonce.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/payment_method_nonce.pyi @@ -7,7 +7,7 @@ from braintree.three_d_secure_info import ThreeDSecureInfo as ThreeDSecureInfo class PaymentMethodNonce(Resource): @staticmethod - def create(payment_method_token, params=...): ... + def create(payment_method_token, params={}): ... @staticmethod def find(payment_method_nonce): ... three_d_secure_info: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/paypal_account.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/paypal_account.pyi index 6dccea80c..d46cd89ef 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/paypal_account.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/paypal_account.pyi @@ -10,7 +10,7 @@ class PayPalAccount(Resource): @staticmethod def delete(paypal_account_token): ... @staticmethod - def update(paypal_account_token, params: Incomplete | None = ...): ... + def update(paypal_account_token, params: Incomplete | None = None): ... @staticmethod def signature(): ... subscriptions: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/paypal_account_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/paypal_account_gateway.pyi index 8716ac8ea..bc89d299e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/paypal_account_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/paypal_account_gateway.pyi @@ -13,4 +13,4 @@ class PayPalAccountGateway: def __init__(self, gateway) -> None: ... def find(self, paypal_account_token): ... def delete(self, paypal_account_token): ... - def update(self, paypal_account_token, params: Incomplete | None = ...): ... + def update(self, paypal_account_token, params: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/search.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/search.pyi index 14257a8d1..31fa26976 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/search.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/search.pyi @@ -40,12 +40,12 @@ class Search: class MultipleValueNodeBuilder: name: Any whitelist: Any - def __init__(self, name, whitelist=...) -> None: ... + def __init__(self, name, whitelist=[]) -> None: ... def in_list(self, *values): ... def __eq__(self, value): ... class MultipleValueOrTextNodeBuilder(TextNodeBuilder, MultipleValueNodeBuilder): - def __init__(self, name, whitelist=...) -> None: ... + def __init__(self, name, whitelist=[]) -> None: ... class RangeNodeBuilder: name: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/settlement_batch_summary.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/settlement_batch_summary.pyi index 681747e0f..a54d467eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/settlement_batch_summary.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/settlement_batch_summary.pyi @@ -10,4 +10,4 @@ from braintree.util.http import Http as Http class SettlementBatchSummary(Resource): @staticmethod - def generate(settlement_date, group_by_custom_field: Incomplete | None = ...): ... + def generate(settlement_date, group_by_custom_field: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/settlement_batch_summary_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/settlement_batch_summary_gateway.pyi index f1ef2565d..e1b49c6e9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/settlement_batch_summary_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/settlement_batch_summary_gateway.pyi @@ -10,4 +10,4 @@ class SettlementBatchSummaryGateway: gateway: Any config: Any def __init__(self, gateway) -> None: ... - def generate(self, settlement_date, group_by_custom_field: Incomplete | None = ...): ... + def generate(self, settlement_date, group_by_custom_field: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/subscription.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/subscription.pyi index 5cae727ed..898794b0c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/subscription.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/subscription.pyi @@ -31,15 +31,15 @@ class Subscription(Resource): PastDue: str Pending: str @staticmethod - def create(params: Incomplete | None = ...): ... + def create(params: Incomplete | None = None): ... @staticmethod def create_signature(): ... @staticmethod def find(subscription_id): ... @staticmethod - def retry_charge(subscription_id, amount: Incomplete | None = ..., submit_for_settlement: bool = ...): ... + def retry_charge(subscription_id, amount: Incomplete | None = None, submit_for_settlement: bool = False): ... @staticmethod - def update(subscription_id, params: Incomplete | None = ...): ... + def update(subscription_id, params: Incomplete | None = None): ... @staticmethod def cancel(subscription_id): ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/subscription_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/subscription_gateway.pyi index 08e9dc80b..33a806602 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/subscription_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/subscription_gateway.pyi @@ -14,8 +14,8 @@ class SubscriptionGateway: config: Any def __init__(self, gateway) -> None: ... def cancel(self, subscription_id): ... - def create(self, params: Incomplete | None = ...): ... + def create(self, params: Incomplete | None = None): ... def find(self, subscription_id): ... - def retry_charge(self, subscription_id, amount: Incomplete | None = ..., submit_for_settlement: bool = ...): ... + def retry_charge(self, subscription_id, amount: Incomplete | None = None, submit_for_settlement: bool = False): ... def search(self, *query): ... - def update(self, subscription_id, params: Incomplete | None = ...): ... + def update(self, subscription_id, params: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/testing_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/testing_gateway.pyi index 262997c5d..90063ba3a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/testing_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/testing_gateway.pyi @@ -8,7 +8,7 @@ class TestingGateway: gateway: Any config: Any def __init__(self, gateway) -> None: ... - def make_past_due(self, subscription_id, number_of_days_past_due: int = ...) -> None: ... + def make_past_due(self, subscription_id, number_of_days_past_due: int = 1) -> None: ... def escrow_transaction(self, transaction_id) -> None: ... def settle_transaction(self, transaction_id): ... def settlement_confirm_transaction(self, transaction_id): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/transaction.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/transaction.pyi index b0e8ba211..23498bbf2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/transaction.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/transaction.pyi @@ -104,23 +104,23 @@ class Transaction(Resource): @staticmethod def cancel_release(transaction_id): ... @staticmethod - def credit(params: Incomplete | None = ...): ... + def credit(params: Incomplete | None = None): ... @staticmethod def find(transaction_id): ... @staticmethod def hold_in_escrow(transaction_id): ... @staticmethod - def refund(transaction_id, amount_or_options: Incomplete | None = ...): ... + def refund(transaction_id, amount_or_options: Incomplete | None = None): ... @staticmethod - def sale(params: Incomplete | None = ...): ... + def sale(params: Incomplete | None = None): ... @staticmethod def search(*query): ... @staticmethod def release_from_escrow(transaction_id): ... @staticmethod - def submit_for_settlement(transaction_id, amount: Incomplete | None = ..., params: Incomplete | None = ...): ... + def submit_for_settlement(transaction_id, amount: Incomplete | None = None, params: Incomplete | None = None): ... @staticmethod - def update_details(transaction_id, params: Incomplete | None = ...): ... + def update_details(transaction_id, params: Incomplete | None = None): ... @staticmethod def void(transaction_id): ... @staticmethod @@ -136,7 +136,7 @@ class Transaction(Resource): @staticmethod def refund_signature(): ... @staticmethod - def submit_for_partial_settlement(transaction_id, amount, params: Incomplete | None = ...): ... + def submit_for_partial_settlement(transaction_id, amount, params: Incomplete | None = None): ... amount: Any tax_amount: Any discount_amount: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/transaction_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/transaction_gateway.pyi index 63b5c9136..f7f77f328 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/transaction_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/transaction_gateway.pyi @@ -20,11 +20,11 @@ class TransactionGateway: def credit(self, params): ... def find(self, transaction_id): ... def hold_in_escrow(self, transaction_id): ... - def refund(self, transaction_id, amount_or_options: Incomplete | None = ...): ... + def refund(self, transaction_id, amount_or_options: Incomplete | None = None): ... def sale(self, params): ... def search(self, *query): ... def release_from_escrow(self, transaction_id): ... - def submit_for_settlement(self, transaction_id, amount: Incomplete | None = ..., params: Incomplete | None = ...): ... - def update_details(self, transaction_id, params: Incomplete | None = ...): ... - def submit_for_partial_settlement(self, transaction_id, amount, params: Incomplete | None = ...): ... + def submit_for_settlement(self, transaction_id, amount: Incomplete | None = None, params: Incomplete | None = None): ... + def update_details(self, transaction_id, params: Incomplete | None = None): ... + def submit_for_partial_settlement(self, transaction_id, amount, params: Incomplete | None = None): ... def void(self, transaction_id): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/util/graphql_client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/util/graphql_client.pyi index ec47e43fd..67003af08 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/util/graphql_client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/util/graphql_client.pyi @@ -15,5 +15,5 @@ class GraphQLClient(Http): @staticmethod def raise_exception_for_graphql_error(response) -> None: ... graphql_headers: Any - def __init__(self, config: Incomplete | None = ..., environment: Incomplete | None = ...) -> None: ... - def query(self, definition, variables: Incomplete | None = ..., operation_name: Incomplete | None = ...): ... + def __init__(self, config: Incomplete | None = None, environment: Incomplete | None = None) -> None: ... + def query(self, definition, variables: Incomplete | None = None, operation_name: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/util/http.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/util/http.pyi index c782212cd..970209c3b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/util/http.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/util/http.pyi @@ -30,14 +30,14 @@ class Http: @staticmethod def is_error_status(status): ... @staticmethod - def raise_exception_from_status(status, message: Incomplete | None = ...) -> None: ... + def raise_exception_from_status(status, message: Incomplete | None = None) -> None: ... config: Any environment: Any - def __init__(self, config, environment: Incomplete | None = ...) -> None: ... - def post(self, path, params: Incomplete | None = ...): ... + def __init__(self, config, environment: Incomplete | None = None) -> None: ... + def post(self, path, params: Incomplete | None = None): ... def delete(self, path): ... def get(self, path): ... - def put(self, path, params: Incomplete | None = ...): ... - def post_multipart(self, path, files, params: Incomplete | None = ...): ... + def put(self, path, params: Incomplete | None = None): ... + def post_multipart(self, path, files, params: Incomplete | None = None): ... def http_do(self, http_verb, path, headers, request_body): ... def handle_exception(self, exception) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/validation_error_collection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/validation_error_collection.pyi index 268cd0469..337dd2c5b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/validation_error_collection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/validation_error_collection.pyi @@ -5,7 +5,7 @@ from braintree.validation_error import ValidationError as ValidationError class ValidationErrorCollection: data: Any - def __init__(self, data: Incomplete | None = ...) -> None: ... + def __init__(self, data: Incomplete | None = None) -> None: ... @property def deep_errors(self): ... def for_index(self, index): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/webhook_testing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/webhook_testing.pyi index 78fa449c8..b5c8bdca1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/webhook_testing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/webhook_testing.pyi @@ -4,4 +4,4 @@ from braintree.configuration import Configuration as Configuration class WebhookTesting: @staticmethod - def sample_notification(kind, id, source_merchant_id: Incomplete | None = ...): ... + def sample_notification(kind, id, source_merchant_id: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/webhook_testing_gateway.pyi b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/webhook_testing_gateway.pyi index 73c71e931..9e089d789 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/webhook_testing_gateway.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/braintree/webhook_testing_gateway.pyi @@ -8,4 +8,4 @@ class WebhookTestingGateway: gateway: Any config: Any def __init__(self, gateway) -> None: ... - def sample_notification(self, kind, id, source_merchant_id: Incomplete | None = ...): ... + def sample_notification(self, kind, id, source_merchant_id: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cachetools/cachetools/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cachetools/cachetools/__init__.pyi index d7431feee..5cac854c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cachetools/cachetools/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cachetools/cachetools/__init__.pyi @@ -14,7 +14,7 @@ class Cache(MutableMapping[_KT, _VT], Generic[_KT, _VT]): @overload def __init__(self, maxsize: float, getsizeof: Callable[[_VT], float]) -> None: ... @overload - def __init__(self, maxsize: float, getsizeof: None = ...) -> None: ... + def __init__(self, maxsize: float, getsizeof: None = None) -> None: ... def __getitem__(self, key: _KT) -> _VT: ... def __setitem__(self, key: _KT, value: _VT) -> None: ... def __delitem__(self, key: _KT) -> None: ... @@ -25,7 +25,7 @@ class Cache(MutableMapping[_KT, _VT], Generic[_KT, _VT]): def pop(self, key: _KT) -> _VT: ... @overload def pop(self, key: _KT, default: _VT | _T) -> _VT | _T: ... - def setdefault(self, key: _KT, default: _VT | None = ...) -> _VT: ... + def setdefault(self, key: _KT, default: _VT | None = None) -> _VT: ... @property def maxsize(self) -> float: ... @property @@ -40,13 +40,13 @@ class MRUCache(Cache[_KT, _VT]): ... class RRCache(Cache[_KT, _VT]): @overload - def __init__(self, maxsize: float, choice: None = ..., getsizeof: None = ...) -> None: ... + def __init__(self, maxsize: float, choice: None = None, getsizeof: None = None) -> None: ... @overload def __init__(self, maxsize: float, *, getsizeof: Callable[[_VT], float]) -> None: ... @overload def __init__(self, maxsize: float, choice: None, getsizeof: Callable[[_VT], float]) -> None: ... @overload - def __init__(self, maxsize: float, choice: Callable[[Sequence[_KT]], _KT], getsizeof: None = ...) -> None: ... + def __init__(self, maxsize: float, choice: Callable[[Sequence[_KT]], _KT], getsizeof: None = None) -> None: ... @overload def __init__(self, maxsize: float, choice: Callable[[Sequence[_KT]], _KT], getsizeof: Callable[[_VT], float]) -> None: ... @property @@ -54,7 +54,7 @@ class RRCache(Cache[_KT, _VT]): class _TimedCache(Cache[_KT, _VT]): @overload - def __init__(self, maxsize: float, timer: Callable[[], float] = ..., getsizeof: None = ...) -> None: ... + def __init__(self, maxsize: float, timer: Callable[[], float] = ..., getsizeof: None = None) -> None: ... @overload def __init__(self, maxsize: float, timer: Callable[[], float], getsizeof: Callable[[_VT], float]) -> None: ... @overload @@ -73,7 +73,7 @@ class _TimedCache(Cache[_KT, _VT]): class TTLCache(_TimedCache[_KT, _VT]): @overload - def __init__(self, maxsize: float, ttl: float, timer: Callable[[], float] = ..., getsizeof: None = ...) -> None: ... + def __init__(self, maxsize: float, ttl: float, timer: Callable[[], float] = ..., getsizeof: None = None) -> None: ... @overload def __init__(self, maxsize: float, ttl: float, timer: Callable[[], float], getsizeof: Callable[[_VT], float]) -> None: ... @overload @@ -82,7 +82,7 @@ class TTLCache(_TimedCache[_KT, _VT]): ) -> None: ... @property def ttl(self) -> float: ... - def expire(self, time: float | None = ...) -> None: ... + def expire(self, time: float | None = None) -> None: ... class TLRUCache(_TimedCache[_KT, _VT]): def __init__( @@ -90,11 +90,11 @@ class TLRUCache(_TimedCache[_KT, _VT]): maxsize: float, ttu: Callable[[_KT, _VT, float], float], timer: Callable[[], float] = ..., - getsizeof: Callable[[_VT], float] | None = ..., + getsizeof: Callable[[_VT], float] | None = None, ) -> None: ... @property def ttu(self) -> Callable[[_KT, _VT, float], float]: ... - def expire(self, time: float | None = ...) -> None: ... + def expire(self, time: float | None = None) -> None: ... def cached( cache: MutableMapping[_KT, Any] | None, @@ -105,5 +105,5 @@ def cached( def cachedmethod( cache: Callable[[Any], MutableMapping[_KT, Any] | None], key: Callable[..., _KT] = ..., - lock: Callable[[Any], AbstractContextManager[Any]] | None = ..., + lock: Callable[[Any], AbstractContextManager[Any]] | None = None, ) -> IdentityFunction: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cachetools/cachetools/func.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cachetools/cachetools/func.pyi index 4d2238400..e18e09683 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cachetools/cachetools/func.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cachetools/cachetools/func.pyi @@ -5,13 +5,13 @@ from typing import TypeVar __all__ = ("fifo_cache", "lfu_cache", "lru_cache", "mru_cache", "rr_cache", "ttl_cache") _T = TypeVar("_T") -def fifo_cache(maxsize: float | None = ..., typed: bool = ...) -> IdentityFunction: ... -def lfu_cache(maxsize: float | None = ..., typed: bool = ...) -> IdentityFunction: ... -def lru_cache(maxsize: float | None = ..., typed: bool = ...) -> IdentityFunction: ... -def mru_cache(maxsize: float | None = ..., typed: bool = ...) -> IdentityFunction: ... +def fifo_cache(maxsize: float | None = 128, typed: bool = False) -> IdentityFunction: ... +def lfu_cache(maxsize: float | None = 128, typed: bool = False) -> IdentityFunction: ... +def lru_cache(maxsize: float | None = 128, typed: bool = False) -> IdentityFunction: ... +def mru_cache(maxsize: float | None = 128, typed: bool = False) -> IdentityFunction: ... def rr_cache( - maxsize: float | None = ..., choice: Callable[[Sequence[_T]], _T] | None = ..., typed: bool = ... + maxsize: float | None = 128, choice: Callable[[Sequence[_T]], _T] | None = ..., typed: bool = False ) -> IdentityFunction: ... def ttl_cache( - maxsize: float | None = ..., ttl: float = ..., timer: Callable[[], float] = ..., typed: bool = ... + maxsize: float | None = 128, ttl: float = 600, timer: Callable[[], float] = ..., typed: bool = False ) -> IdentityFunction: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/davclient.pyi b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/davclient.pyi index ffe393ad6..8cc3c5bc2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/davclient.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/davclient.pyi @@ -26,7 +26,7 @@ class DAVResponse: def validate_status(self, status: str) -> None: ... def find_objects_and_props(self) -> None: ... def expand_simple_props( - self, props: Iterable[Incomplete] = ..., multi_value_props: Iterable[Incomplete] = ..., xpath: str | None = ... + self, props: Iterable[Incomplete] = [], multi_value_props: Iterable[Incomplete] = [], xpath: str | None = None ) -> dict[str, dict[str, str]]: ... class DAVClient: @@ -49,7 +49,7 @@ class DAVClient: timeout: _Timeout | None = None, ssl_verify_cert: bool | str = True, ssl_cert: str | tuple[str, str] | None = None, - headers: dict[str, str] = ..., + headers: dict[str, str] = {}, ) -> None: ... def __enter__(self) -> Self: ... def __exit__( @@ -68,13 +68,13 @@ class DAVClient: def check_dav_support(self) -> str | None: ... def check_cdav_support(self) -> bool: ... def check_scheduling_support(self) -> bool: ... - def propfind(self, url: str | None = ..., props: str = ..., depth: int = ...) -> DAVResponse: ... - def proppatch(self, url: str, body: str, dummy: None = ...) -> DAVResponse: ... - def report(self, url: str, query: str = ..., depth: int = ...) -> DAVResponse: ... - def mkcol(self, url: str, body: str, dummy: None = ...) -> DAVResponse: ... - def mkcalendar(self, url: str, body: str = ..., dummy: None = ...) -> DAVResponse: ... - def put(self, url: str, body: str, headers: Mapping[str, str] = ...) -> DAVResponse: ... - def post(self, url: str, body: str, headers: Mapping[str, str] = ...) -> DAVResponse: ... + def propfind(self, url: str | None = None, props: str = "", depth: int = 0) -> DAVResponse: ... + def proppatch(self, url: str, body: str, dummy: None = None) -> DAVResponse: ... + def report(self, url: str, query: str = "", depth: int = 0) -> DAVResponse: ... + def mkcol(self, url: str, body: str, dummy: None = None) -> DAVResponse: ... + def mkcalendar(self, url: str, body: str = "", dummy: None = None) -> DAVResponse: ... + def put(self, url: str, body: str, headers: Mapping[str, str] = {}) -> DAVResponse: ... + def post(self, url: str, body: str, headers: Mapping[str, str] = {}) -> DAVResponse: ... def delete(self, url: str) -> DAVResponse: ... def options(self, url: str) -> DAVResponse: ... - def request(self, url: str, method: str = ..., body: str = ..., headers: Mapping[str, str] = ...) -> DAVResponse: ... + def request(self, url: str, method: str = "GET", body: str = "", headers: Mapping[str, str] = {}) -> DAVResponse: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/elements/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/elements/base.pyi index c55dbf7d0..ceae8c1b3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/elements/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/elements/base.pyi @@ -11,14 +11,14 @@ class BaseElement: value: str | None attributes: Incomplete | None caldav_class: Incomplete | None - def __init__(self, name: str | None = ..., value: str | bytes | None = ...) -> None: ... + def __init__(self, name: str | None = None, value: str | bytes | None = None) -> None: ... def __add__(self, other: BaseElement) -> Self: ... def xmlelement(self) -> _Element: ... def xmlchildren(self, root: _Element) -> None: ... def append(self, element: BaseElement | Iterable[BaseElement]) -> Self: ... class NamedBaseElement(BaseElement): - def __init__(self, name: str | None = ...) -> None: ... + def __init__(self, name: str | None = None) -> None: ... class ValuedBaseElement(BaseElement): - def __init__(self, value: str | bytes | None = ...) -> None: ... + def __init__(self, value: str | bytes | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/elements/cdav.pyi b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/elements/cdav.pyi index 632894a24..65c57264c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/elements/cdav.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/elements/cdav.pyi @@ -35,11 +35,11 @@ class ParamFilter(NamedBaseElement): class TextMatch(ValuedBaseElement): tag: ClassVar[str] - def __init__(self, value, collation: str = ..., negate: bool = ...) -> None: ... + def __init__(self, value, collation: str = "i;octet", negate: bool = False) -> None: ... class TimeRange(BaseElement): tag: ClassVar[str] - def __init__(self, start: datetime.datetime | None = ..., end: datetime.datetime | None = ...) -> None: ... + def __init__(self, start: datetime.datetime | None = None, end: datetime.datetime | None = None) -> None: ... class NotDefined(BaseElement): tag: ClassVar[str] @@ -49,7 +49,7 @@ class CalendarData(BaseElement): class Expand(BaseElement): tag: ClassVar[str] - def __init__(self, start: datetime.datetime | None, end: datetime.datetime | None = ...) -> None: ... + def __init__(self, start: datetime.datetime | None, end: datetime.datetime | None = None) -> None: ... class Comp(NamedBaseElement): tag: ClassVar[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/lib/error.pyi b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/lib/error.pyi index 66de08c19..f9a3b01b4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/lib/error.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/lib/error.pyi @@ -5,7 +5,7 @@ ERR_FRAGMENT: str class DAVError(Exception): url: str | None reason: str - def __init__(self, url: str | None = ..., reason: str | None = ...) -> None: ... + def __init__(self, url: str | None = None, reason: str | None = None) -> None: ... class AuthorizationError(DAVError): ... class PropsetError(DAVError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/lib/namespace.pyi b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/lib/namespace.pyi index a3ad5724e..58b6920bf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/lib/namespace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/lib/namespace.pyi @@ -1,4 +1,4 @@ nsmap: dict[str, str] nsmap2: dict[str, str] -def ns(prefix: str, tag: str | None = ...) -> str: ... +def ns(prefix: str, tag: str | None = None) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/objects.pyi b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/objects.pyi index ee62b347f..524fec9f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/objects.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/objects.pyi @@ -26,37 +26,37 @@ class DAVObject: extra_init_options: dict[str, Incomplete] def __init__( self, - client: DAVClient | None = ..., - url: str | ParseResult | SplitResult | URL | None = ..., - parent: DAVObject | None = ..., - name: str | None = ..., - id: str | None = ..., - props: Mapping[Incomplete, Incomplete] | None = ..., + client: DAVClient | None = None, + url: str | ParseResult | SplitResult | URL | None = None, + parent: DAVObject | None = None, + name: str | None = None, + id: str | None = None, + props: Mapping[Incomplete, Incomplete] | None = None, **extra: Incomplete, ) -> None: ... @property def canonical_url(self) -> str: ... - def children(self, type: str | None = ...) -> list[tuple[URL, Incomplete, Incomplete]]: ... - def get_property(self, prop, use_cached: bool = ..., **passthrough) -> Incomplete | None: ... + def children(self, type: str | None = None) -> list[tuple[URL, Incomplete, Incomplete]]: ... + def get_property(self, prop, use_cached: bool = False, **passthrough) -> Incomplete | None: ... def get_properties( - self, props: Incomplete | None = ..., depth: int = ..., parse_response_xml: bool = ..., parse_props: bool = ... + self, props: Incomplete | None = None, depth: int = 0, parse_response_xml: bool = True, parse_props: bool = True ): ... - def set_properties(self, props: Incomplete | None = ...) -> Self: ... + def set_properties(self, props: Incomplete | None = None) -> Self: ... def save(self) -> Self: ... def delete(self) -> None: ... class CalendarSet(DAVObject): def calendars(self) -> list[Calendar]: ... def make_calendar( - self, name: str | None = ..., cal_id: str | None = ..., supported_calendar_component_set: Incomplete | None = ... + self, name: str | None = None, cal_id: str | None = None, supported_calendar_component_set: Incomplete | None = None ) -> Calendar: ... - def calendar(self, name: str | None = ..., cal_id: str | None = ...) -> Calendar: ... + def calendar(self, name: str | None = None, cal_id: str | None = None) -> Calendar: ... class Principal(DAVObject): - def __init__(self, client: DAVClient | None = ..., url: str | ParseResult | SplitResult | URL | None = ...) -> None: ... + def __init__(self, client: DAVClient | None = None, url: str | ParseResult | SplitResult | URL | None = None) -> None: ... def calendars(self) -> list[Calendar]: ... def make_calendar( - self, name: str | None = ..., cal_id: str | None = ..., supported_calendar_component_set: Incomplete | None = ... + self, name: str | None = None, cal_id: str | None = None, supported_calendar_component_set: Incomplete | None = None ) -> Calendar: ... def calendar(self, name: str | None = None, cal_id: str | None = None, cal_url: str | None = None) -> Calendar: ... def get_vcal_address(self) -> _VCalAddress: ... @@ -70,13 +70,13 @@ class Calendar(DAVObject): def get_supported_components(self) -> list[Incomplete]: ... def save_with_invites(self, ical: str, attendees, **attendeeoptions) -> None: ... def save_event( - self, ical: str | None = ..., no_overwrite: bool = ..., no_create: bool = ..., **ical_data: Incomplete + self, ical: str | None = None, no_overwrite: bool = False, no_create: bool = False, **ical_data: Incomplete ) -> Event: ... def save_todo( - self, ical: str | None = ..., no_overwrite: bool = ..., no_create: bool = ..., **ical_data: Incomplete + self, ical: str | None = None, no_overwrite: bool = False, no_create: bool = False, **ical_data: Incomplete ) -> Todo: ... def save_journal( - self, ical: str | None = ..., no_overwrite: bool = ..., no_create: bool = ..., **ical_data: Incomplete + self, ical: str | None = None, no_overwrite: bool = False, no_create: bool = False, **ical_data: Incomplete ) -> Journal: ... add_event = save_event add_todo = save_todo @@ -85,22 +85,27 @@ class Calendar(DAVObject): def build_date_search_query( self, start, - end: datetime.datetime | None = ..., - compfilter: Literal["VEVENT"] | None = ..., - expand: bool | Literal["maybe"] = ..., + end: datetime.datetime | None = None, + compfilter: Literal["VEVENT"] | None = "VEVENT", + expand: bool | Literal["maybe"] = "maybe", ): ... @overload def date_search( self, start: datetime.datetime, - end: datetime.datetime | None = ..., - compfilter: Literal["VEVENT"] = ..., - expand: bool | Literal["maybe"] = ..., - verify_expand: bool = ..., + end: datetime.datetime | None = None, + compfilter: Literal["VEVENT"] = "VEVENT", + expand: bool | Literal["maybe"] = "maybe", + verify_expand: bool = False, ) -> list[Event]: ... @overload def date_search( - self, start: datetime.datetime, *, compfilter: None, expand: bool | Literal["maybe"] = ..., verify_expand: bool = ... + self, + start: datetime.datetime, + *, + compfilter: None, + expand: bool | Literal["maybe"] = "maybe", + verify_expand: bool = False, ) -> list[CalendarObjectResource]: ... @overload def date_search( @@ -108,18 +113,18 @@ class Calendar(DAVObject): start: datetime.datetime, end: datetime.datetime | None, compfilter: None, - expand: bool | Literal["maybe"] = ..., - verify_expand: bool = ..., + expand: bool | Literal["maybe"] = "maybe", + verify_expand: bool = False, ) -> list[CalendarObjectResource]: ... @overload def search( self, - xml: None = ..., - comp_class: None = ..., - todo: bool | None = ..., - include_completed: bool = ..., - sort_keys: Sequence[str] = ..., - split_expanded: bool = ..., + xml: None = None, + comp_class: None = None, + todo: bool | None = None, + include_completed: bool = False, + sort_keys: Sequence[str] = (), + split_expanded: bool = True, **kwargs, ) -> list[CalendarObjectResource]: ... @overload @@ -127,10 +132,10 @@ class Calendar(DAVObject): self, xml, comp_class: type[_CC], - todo: bool | None = ..., - include_completed: bool = ..., - sort_keys: Sequence[str] = ..., - split_expanded: bool = ..., + todo: bool | None = None, + include_completed: bool = False, + sort_keys: Sequence[str] = (), + split_expanded: bool = True, **kwargs, ) -> list[_CC]: ... @overload @@ -138,24 +143,24 @@ class Calendar(DAVObject): self, *, comp_class: type[_CC], - todo: bool | None = ..., - include_completed: bool = ..., - sort_keys: Sequence[str] = ..., - split_expanded: bool = ..., + todo: bool | None = None, + include_completed: bool = False, + sort_keys: Sequence[str] = (), + split_expanded: bool = True, **kwargs, ) -> list[_CC]: ... def build_search_xml_query( self, - comp_class: _CompClass | None = ..., - todo: bool | None = ..., - ignore_completed1: bool | None = ..., - ignore_completed2: bool | None = ..., - ignore_completed3: bool | None = ..., - event: bool | None = ..., - filters: list[Incomplete] | None = ..., - expand: bool | None = ..., - start: datetime.datetime | None = ..., - end: datetime.datetime | None = ..., + comp_class: _CompClass | None = None, + todo: bool | None = None, + ignore_completed1: bool | None = None, + ignore_completed2: bool | None = None, + ignore_completed3: bool | None = None, + event: bool | None = None, + filters: list[Incomplete] | None = None, + expand: bool | None = None, + start: datetime.datetime | None = None, + end: datetime.datetime | None = None, *, uid=..., summary=..., @@ -165,16 +170,18 @@ class Calendar(DAVObject): status=..., ) -> tuple[CalendarQuery, _CompClass]: ... def freebusy_request(self, start: datetime.datetime, end: datetime.datetime) -> FreeBusy: ... - def todos(self, sort_keys: Iterable[str] = ..., include_completed: bool = ..., sort_key: str | None = ...) -> list[Todo]: ... - def event_by_url(self, href, data: Incomplete | None = ...) -> Event: ... - def object_by_uid(self, uid: str, comp_filter: CompFilter | None = ..., comp_class: _CompClass | None = ...) -> Event: ... + def todos( + self, sort_keys: Iterable[str] = ("due", "priority"), include_completed: bool = False, sort_key: str | None = None + ) -> list[Todo]: ... + def event_by_url(self, href, data: Incomplete | None = None) -> Event: ... + def object_by_uid(self, uid: str, comp_filter: CompFilter | None = None, comp_class: _CompClass | None = None) -> Event: ... def todo_by_uid(self, uid: str) -> CalendarObjectResource: ... def event_by_uid(self, uid: str) -> CalendarObjectResource: ... def journal_by_uid(self, uid: str) -> CalendarObjectResource: ... event = event_by_uid def events(self) -> list[Event]: ... def objects_by_sync_token( - self, sync_token: Incomplete | None = ..., load_objects: bool = ... + self, sync_token: Incomplete | None = None, load_objects: bool = False ) -> SynchronizableCalendarObjectCollection: ... objects = objects_by_sync_token def journals(self) -> list[Journal]: ... @@ -182,9 +189,9 @@ class Calendar(DAVObject): class ScheduleMailbox(Calendar): def __init__( self, - client: DAVClient | None = ..., - principal: Principal | None = ..., - url: str | ParseResult | SplitResult | URL | None = ..., + client: DAVClient | None = None, + principal: Principal | None = None, + url: str | ParseResult | SplitResult | URL | None = None, ) -> None: ... def get_items(self): ... @@ -204,31 +211,31 @@ class SynchronizableCalendarObjectCollection: class CalendarObjectResource(DAVObject): def __init__( self, - client: DAVClient | None = ..., - url: str | ParseResult | SplitResult | URL | None = ..., - data: Incomplete | None = ..., - parent: Incomplete | None = ..., - id: Incomplete | None = ..., - props: Incomplete | None = ..., + client: DAVClient | None = None, + url: str | ParseResult | SplitResult | URL | None = None, + data: Incomplete | None = None, + parent: Incomplete | None = None, + id: Incomplete | None = None, + props: Incomplete | None = None, ) -> None: ... def add_organizer(self) -> None: ... def split_expanded(self) -> list[Self]: ... def expand_rrule(self, start: datetime.datetime, end: datetime.datetime) -> None: ... - def add_attendee(self, attendee, no_default_parameters: bool = ..., **parameters) -> None: ... + def add_attendee(self, attendee, no_default_parameters: bool = False, **parameters) -> None: ... def is_invite_request(self) -> bool: ... - def accept_invite(self, calendar: Incomplete | None = ...) -> None: ... - def decline_invite(self, calendar: Incomplete | None = ...) -> None: ... - def tentatively_accept_invite(self, calendar: Incomplete | None = ...) -> None: ... - def copy(self, keep_uid: bool = ..., new_parent: Incomplete | None = ...) -> Self: ... + def accept_invite(self, calendar: Incomplete | None = None) -> None: ... + def decline_invite(self, calendar: Incomplete | None = None) -> None: ... + def tentatively_accept_invite(self, calendar: Incomplete | None = None) -> None: ... + def copy(self, keep_uid: bool = False, new_parent: Incomplete | None = None) -> Self: ... def load(self, only_if_unloaded: bool = False) -> Self: ... - def change_attendee_status(self, attendee: Incomplete | None = ..., **kwargs) -> None: ... + def change_attendee_status(self, attendee: Incomplete | None = None, **kwargs) -> None: ... def save( self, - no_overwrite: bool = ..., - no_create: bool = ..., - obj_type: str | None = ..., - increase_seqno: bool = ..., - if_schedule_tag_match: bool = ..., + no_overwrite: bool = False, + no_create: bool = False, + obj_type: str | None = None, + increase_seqno: bool = True, + if_schedule_tag_match: bool = False, ) -> Self: ... def get_duration(self) -> datetime.timedelta: ... data: Incomplete @@ -241,13 +248,13 @@ class Journal(CalendarObjectResource): ... class FreeBusy(CalendarObjectResource): def __init__( - self, parent, data, url: str | ParseResult | SplitResult | URL | None = ..., id: Incomplete | None = ... + self, parent, data, url: str | ParseResult | SplitResult | URL | None = None, id: Incomplete | None = None ) -> None: ... class Todo(CalendarObjectResource): def complete( self, - completion_timestamp: datetime.datetime | None = ..., - handle_rrule: bool = ..., - rrule_mode: Literal["safe", "this_and_future"] = ..., + completion_timestamp: datetime.datetime | None = None, + handle_rrule: bool = False, + rrule_mode: Literal["safe", "this_and_future"] = "safe", ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi index c95a5b358..e3ae14188 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi @@ -22,59 +22,61 @@ class FFI: NULL: CType errno: int - def __init__(self, backend: types.ModuleType | None = ...) -> None: ... - def cdef(self, csource: str, override: bool = ..., packed: bool = ..., pack: int | None = ...) -> None: ... - def embedding_api(self, csource: str, packed: bool = ..., pack: bool | int | None = ...) -> None: ... - def dlopen(self, name: str, flags: int = ...) -> _cffi_backend.Lib: ... + def __init__(self, backend: types.ModuleType | None = None) -> None: ... + def cdef(self, csource: str, override: bool = False, packed: bool = False, pack: int | None = None) -> None: ... + def embedding_api(self, csource: str, packed: bool = False, pack: bool | int | None = None) -> None: ... + def dlopen(self, name: str, flags: int = 0) -> _cffi_backend.Lib: ... def dlclose(self, lib: _cffi_backend.Lib) -> None: ... def typeof(self, cdecl: str | CData | types.BuiltinFunctionType | types.FunctionType) -> CType: ... def sizeof(self, cdecl: str | CData) -> int: ... def alignof(self, cdecl: str | CData) -> int: ... def offsetof(self, cdecl: str | CData, *fields_or_indexes: str | int) -> int: ... - def new(self, cdecl: str | CType, init: Incomplete | None = ...) -> CData: ... + def new(self, cdecl: str | CType, init: Incomplete | None = None) -> CData: ... def new_allocator( self, - alloc: Callable[[int], CData] | None = ..., - free: Callable[[CData], Any] | None = ..., - should_clear_after_alloc: bool = ..., + alloc: Callable[[int], CData] | None = None, + free: Callable[[CData], Any] | None = None, + should_clear_after_alloc: bool = True, ) -> _cffi_backend._Allocator: ... - def cast(self, cdecl: str | CType, source: CData) -> CData: ... - def string(self, cdata: CData, maxlen: int = ...) -> bytes | str: ... + def cast(self, cdecl: str | CType, source: CData | int) -> CData: ... + def string(self, cdata: CData, maxlen: int = -1) -> bytes | str: ... def unpack(self, cdata: CData, length: int) -> bytes | str | list[Any]: ... @overload - def from_buffer(self, cdecl: ReadableBuffer, require_writable: Literal[False] = ...) -> CData: ... + def from_buffer(self, cdecl: ReadableBuffer, require_writable: Literal[False] = False) -> CData: ... @overload def from_buffer(self, cdecl: WriteableBuffer, require_writable: Literal[True]) -> CData: ... @overload - def from_buffer(self, cdecl: str, python_buffer: ReadableBuffer, require_writable: Literal[False] = ...) -> CData: ... + def from_buffer( + self, cdecl: str | CType, python_buffer: ReadableBuffer, require_writable: Literal[False] = False + ) -> CData: ... @overload - def from_buffer(self, cdecl: str, python_buffer: WriteableBuffer, require_writable: Literal[True]) -> CData: ... + def from_buffer(self, cdecl: str | CType, python_buffer: WriteableBuffer, require_writable: Literal[True]) -> CData: ... def memmove(self, dest: CData | WriteableBuffer, src: CData | ReadableBuffer, n: int) -> None: ... @overload def callback( self, cdecl: str | CType, - python_callable: None = ..., - error: Any = ..., - onerror: Callable[[Exception, Any, Any], None] | None = ..., + python_callable: None = None, + error: Any = None, + onerror: Callable[[Exception, Any, Any], None] | None = None, ) -> Callable[[Callable[..., _T]], Callable[..., _T]]: ... @overload def callback( self, cdecl: str | CType, python_callable: Callable[..., _T], - error: Any = ..., - onerror: Callable[[Exception, Any, Any], None] | None = ..., + error: Any = None, + onerror: Callable[[Exception, Any, Any], None] | None = None, ) -> Callable[..., _T]: ... - def getctype(self, cdecl: str | CType, replace_with: str = ...) -> str: ... + def getctype(self, cdecl: str | CType, replace_with: str = "") -> str: ... @overload - def gc(self, cdata: CData, destructor: Callable[[CData], Any], size: int = ...) -> CData: ... + def gc(self, cdata: CData, destructor: Callable[[CData], Any], size: int = 0) -> CData: ... @overload - def gc(self, cdata: CData, destructor: None, size: int = ...) -> None: ... - def verify(self, source: str = ..., tmpdir: str | None = ..., **kwargs: Any) -> _cffi_backend.Lib: ... + def gc(self, cdata: CData, destructor: None, size: int = 0) -> None: ... + def verify(self, source: str = "", tmpdir: str | None = None, **kwargs: Any) -> _cffi_backend.Lib: ... # Technically exists on all OSs, but crashes on all but Windows. So we hide it in stubs if sys.platform == "win32": - def getwinerror(self, code: int = ...) -> tuple[int, str] | None: ... + def getwinerror(self, code: int = -1) -> tuple[int, str] | None: ... def addressof(self, cdata: CData, *fields_or_indexes: str | int) -> CData: ... def include(self, ffi_to_include: FFI) -> None: ... @@ -82,14 +84,14 @@ class FFI: def from_handle(self, x: CData) -> Any: ... def release(self, x: CData) -> None: ... def set_unicode(self, enabled_flag: bool) -> None: ... - def set_source(self, module_name: str, source: str, source_extension: str = ..., **kwds: Any) -> None: ... + def set_source(self, module_name: str, source: str, source_extension: str = ".c", **kwds: Any) -> None: ... def set_source_pkgconfig( - self, module_name: str, pkgconfig_libs: list[str], source: str, source_extension: str = ..., **kwds: Any + self, module_name: str, pkgconfig_libs: list[str], source: str, source_extension: str = ".c", **kwds: Any ) -> None: ... - def distutils_extension(self, tmpdir: str = ..., verbose: bool = ...) -> distutils.core.Extension: ... + def distutils_extension(self, tmpdir: str = "build", verbose: bool = True) -> distutils.core.Extension: ... def emit_c_code(self, filename: str) -> None: ... def emit_python_code(self, filename: str) -> None: ... - def compile(self, tmpdir: str = ..., verbose: int = ..., target: str | None = ..., debug: bool | None = ...) -> str: ... + def compile(self, tmpdir: str = ".", verbose: int = 0, target: str | None = None, debug: bool | None = None) -> str: ... def init_once(self, func: Callable[[], Any], tag: Hashable) -> Any: ... def embedding_init_code(self, pysource: str) -> None: ... def def_extern(self, *args: Any, **kwds: Any) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/backend_ctypes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/backend_ctypes.pyi index 32c66b8c6..9f123f1f4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/backend_ctypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/backend_ctypes.pyi @@ -19,7 +19,7 @@ class CTypesData: def __gt__(self, other): ... def __ge__(self, other): ... def __hash__(self) -> int: ... - def __repr__(self, c_name: str | None = ...): ... + def __repr__(self, c_name: str | None = None): ... class CTypesGenericPrimitive(CTypesData): def __hash__(self) -> int: ... @@ -43,7 +43,7 @@ class CTypesBackend: def __init__(self) -> None: ... ffi: Incomplete def set_ffi(self, ffi) -> None: ... - def load_library(self, path, flags: int = ...): ... + def load_library(self, path, flags: int = 0): ... def new_void_type(self): ... def new_primitive_type(self, name): ... def new_pointer_type(self, BItem): ... @@ -51,24 +51,24 @@ class CTypesBackend: def new_struct_type(self, name): ... def new_union_type(self, name): ... def complete_struct_or_union( - self, CTypesStructOrUnion, fields, tp, totalsize: int = ..., totalalignment: int = ..., sflags: int = ..., pack: int = ... + self, CTypesStructOrUnion, fields, tp, totalsize: int = -1, totalalignment: int = -1, sflags: int = 0, pack: int = 0 ): ... def new_function_type(self, BArgs, BResult, has_varargs): ... def new_enum_type(self, name, enumerators, enumvalues, CTypesInt): ... def get_errno(self): ... def set_errno(self, value) -> None: ... - def string(self, b, maxlen: int = ...): ... - def buffer(self, bptr, size: int = ...) -> None: ... - def sizeof(self, cdata_or_BType): ... - def alignof(self, BType): ... + def string(self, b, maxlen: int = -1): ... + def buffer(self, bptr, size: int = -1) -> None: ... + def sizeof(self, cdata_or_BType) -> int: ... + def alignof(self, BType) -> int: ... def newp(self, BType, source): ... def cast(self, BType, source): ... def callback(self, BType, source, error, onerror): ... - def gcp(self, cdata, destructor, size: int = ...): ... + def gcp(self, cdata, destructor, size: int = 0): ... typeof: Incomplete def getcname(self, BType, replace_with): ... - def typeoffsetof(self, BType, fieldname, num: int = ...): ... - def rawaddressof(self, BTypePtr, cdata, offset: Incomplete | None = ...): ... + def typeoffsetof(self, BType, fieldname, num: int = 0): ... + def rawaddressof(self, BTypePtr, cdata, offset: Incomplete | None = None): ... class CTypesLibrary: backend: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/cparser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/cparser.pyi index 8fcab85b1..63946020c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/cparser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/cparser.pyi @@ -7,7 +7,7 @@ class Parser: def __init__(self) -> None: ... def convert_pycparser_error(self, e, csource) -> None: ... def parse( - self, csource, override: bool = ..., packed: bool = ..., pack: Incomplete | None = ..., dllexport: bool = ... + self, csource, override: bool = False, packed: bool = False, pack: Incomplete | None = None, dllexport: bool = False ) -> None: ... def parse_type(self, cdecl): ... def parse_type_and_quals(self, cdecl): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/ffiplatform.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/ffiplatform.pyi index d96b7559b..127454f6a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/ffiplatform.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/ffiplatform.pyi @@ -2,8 +2,8 @@ from _typeshed import Incomplete LIST_OF_FILE_NAMES: Incomplete -def get_extension(srcfilename, modname, sources=..., **kwds): ... -def compile(tmpdir, ext, compiler_verbose: int = ..., debug: Incomplete | None = ...): ... +def get_extension(srcfilename, modname, sources=(), **kwds): ... +def compile(tmpdir, ext, compiler_verbose: int = 0, debug: Incomplete | None = None): ... def maybe_relative_path(path): ... int_or_long = int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/model.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/model.pyi index cc09cdc53..c9ab0639b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/model.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/model.pyi @@ -13,10 +13,10 @@ def qualify(quals, replace_with): ... class BaseTypeByIdentity: is_array_type: bool is_raw_function: bool - def get_c_name(self, replace_with: str = ..., context: str = ..., quals: int = ...): ... + def get_c_name(self, replace_with: str = "", context: str = "a C file", quals: int = 0): ... def has_c_name(self): ... def is_integer_type(self): ... - def get_cached_btype(self, ffi, finishlist, can_delay: bool = ...): ... + def get_cached_btype(self, ffi, finishlist, can_delay: bool = False): ... class BaseType(BaseTypeByIdentity): def __eq__(self, other): ... @@ -63,7 +63,7 @@ class BaseFunctionType(BaseType): ellipsis: Incomplete abi: Incomplete c_name_with_marker: Incomplete - def __init__(self, args, result, ellipsis, abi: Incomplete | None = ...) -> None: ... + def __init__(self, args, result, ellipsis, abi: Incomplete | None = None) -> None: ... class RawFunctionType(BaseFunctionType): is_raw_function: bool @@ -78,7 +78,7 @@ class PointerType(BaseType): totype: Incomplete quals: Incomplete c_name_with_marker: Incomplete - def __init__(self, totype, quals: int = ...) -> None: ... + def __init__(self, totype, quals: int = 0) -> None: ... def build_backend_type(self, ffi, finishlist): ... voidp_type: Incomplete @@ -90,7 +90,7 @@ const_voidp_type: Incomplete class NamedPointerType(PointerType): name: Incomplete c_name_with_marker: Incomplete - def __init__(self, totype, name, quals: int = ...) -> None: ... + def __init__(self, totype, name, quals: int = 0) -> None: ... class ArrayType(BaseType): is_array_type: bool @@ -121,11 +121,11 @@ class StructOrUnion(StructOrUnionOrEnum): fldtypes: Incomplete fldbitsize: Incomplete fldquals: Incomplete - def __init__(self, name, fldnames, fldtypes, fldbitsize, fldquals: Incomplete | None = ...) -> None: ... + def __init__(self, name, fldnames, fldtypes, fldbitsize, fldquals: Incomplete | None = None) -> None: ... def anonymous_struct_fields(self) -> Generator[Incomplete, None, None]: ... - def enumfields(self, expand_anonymous_struct_union: bool = ...) -> Generator[Incomplete, None, None]: ... + def enumfields(self, expand_anonymous_struct_union: bool = True) -> Generator[Incomplete, None, None]: ... def force_flatten(self) -> None: ... - def get_cached_btype(self, ffi, finishlist, can_delay: bool = ...): ... + def get_cached_btype(self, ffi, finishlist, can_delay: bool = False): ... def finish_backend_type(self, ffi, finishlist) -> None: ... def check_not_partial(self) -> None: ... def build_backend_type(self, ffi, finishlist): ... @@ -144,15 +144,15 @@ class EnumType(StructOrUnionOrEnum): enumerators: Incomplete enumvalues: Incomplete baseinttype: Incomplete - def __init__(self, name, enumerators, enumvalues, baseinttype: Incomplete | None = ...) -> None: ... + def __init__(self, name, enumerators, enumvalues, baseinttype: Incomplete | None = None) -> None: ... forcename: Incomplete def force_the_name(self, forcename) -> None: ... def check_not_partial(self) -> None: ... def build_backend_type(self, ffi, finishlist): ... def build_baseinttype(self, ffi, finishlist): ... -def unknown_type(name, structname: Incomplete | None = ...): ... -def unknown_ptr_type(name, structname: Incomplete | None = ...): ... +def unknown_type(name, structname: Incomplete | None = None): ... +def unknown_ptr_type(name, structname: Incomplete | None = None): ... global_lock: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/pkgconfig.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/pkgconfig.pyi index bb53098f0..081d923e3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/pkgconfig.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/pkgconfig.pyi @@ -1,3 +1,3 @@ def merge_flags(cfg1, cfg2): ... -def call(libname, flag, encoding=...): ... +def call(libname, flag, encoding="utf-8"): ... def flags_from_pkgconfig(libs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/recompiler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/recompiler.pyi index ee17f6b16..053f7c46a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/recompiler.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/recompiler.pyi @@ -15,7 +15,7 @@ class GlobalExpr: type_op: Incomplete size: Incomplete check_value: Incomplete - def __init__(self, name, address, type_op, size: int = ..., check_value: int = ...) -> None: ... + def __init__(self, name, address, type_op, size: int = 0, check_value: int = 0) -> None: ... def as_c_expr(self): ... def as_python_expr(self): ... @@ -64,7 +64,7 @@ class Recompiler: ffi: Incomplete module_name: Incomplete target_is_python: Incomplete - def __init__(self, ffi, module_name, target_is_python: bool = ...) -> None: ... + def __init__(self, ffi, module_name, target_is_python: bool = False) -> None: ... def needs_version(self, ver) -> None: ... cffi_types: Incomplete def collect_type_table(self): ... @@ -76,19 +76,19 @@ class Recompiler: NativeIO: TypeAlias = io.StringIO -def make_c_source(ffi, module_name, preamble, target_c_file, verbose: bool = ...): ... -def make_py_source(ffi, module_name, target_py_file, verbose: bool = ...): ... +def make_c_source(ffi, module_name, preamble, target_c_file, verbose: bool = False): ... +def make_py_source(ffi, module_name, target_py_file, verbose: bool = False): ... def recompile( ffi, module_name, preamble, - tmpdir: str = ..., - call_c_compiler: bool = ..., - c_file: Incomplete | None = ..., - source_extension: str = ..., - extradir: Incomplete | None = ..., - compiler_verbose: int = ..., - target: Incomplete | None = ..., - debug: Incomplete | None = ..., + tmpdir: str = ".", + call_c_compiler: bool = True, + c_file: Incomplete | None = None, + source_extension: str = ".c", + extradir: Incomplete | None = None, + compiler_verbose: int = 1, + target: Incomplete | None = None, + debug: Incomplete | None = None, **kwds, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/vengine_cpy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/vengine_cpy.pyi index dea9f16f8..0ff656759 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/vengine_cpy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/vengine_cpy.pyi @@ -8,6 +8,6 @@ class VCPythonEngine: def find_module(self, module_name, path, so_suffixes): ... def collect_types(self) -> None: ... def write_source_to_f(self) -> None: ... - def load_library(self, flags: Incomplete | None = ...): ... + def load_library(self, flags: Incomplete | None = None): ... cffimod_header: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/vengine_gen.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/vengine_gen.pyi index d4477094c..f77bf20fc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/vengine_gen.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/vengine_gen.pyi @@ -9,6 +9,6 @@ class VGenericEngine: def find_module(self, module_name, path, so_suffixes): ... def collect_types(self) -> None: ... def write_source_to_f(self) -> None: ... - def load_library(self, flags: int = ...): ... + def load_library(self, flags: int = 0): ... cffimod_header: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/verifier.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/verifier.pyi index 3b9e558ca..f26e532a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/verifier.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/verifier.pyi @@ -17,17 +17,17 @@ class Verifier: self, ffi, preamble, - tmpdir: Incomplete | None = ..., - modulename: Incomplete | None = ..., - ext_package: Incomplete | None = ..., - tag: str = ..., - force_generic_engine: bool = ..., - source_extension: str = ..., - flags: Incomplete | None = ..., - relative_to: Incomplete | None = ..., + tmpdir: Incomplete | None = None, + modulename: Incomplete | None = None, + ext_package: Incomplete | None = None, + tag: str = "", + force_generic_engine: bool = False, + source_extension: str = ".c", + flags: Incomplete | None = None, + relative_to: Incomplete | None = None, **kwds, ) -> None: ... - def write_source(self, file: Incomplete | None = ...) -> None: ... + def write_source(self, file: Incomplete | None = None) -> None: ... def compile_module(self) -> None: ... def load_library(self): ... def get_module_name(self): ... @@ -36,4 +36,4 @@ class Verifier: def make_relative_to(self, kwds, relative_to): ... def set_tmpdir(dirname) -> None: ... -def cleanup_tmpdir(tmpdir: Incomplete | None = ..., keep_so: bool = ...) -> None: ... +def cleanup_tmpdir(tmpdir: Incomplete | None = None, keep_so: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi index 0ab162451..f279c6392 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi @@ -18,4 +18,4 @@ class _LangModelType(TypedDict): # noqa: Y049 language: str def detect(byte_str: bytes | bytearray) -> _FinalResultType: ... -def detect_all(byte_str: bytes | bytearray, ignore_threshold: bool = ...) -> list[_IntermediateResultType]: ... +def detect_all(byte_str: bytes | bytearray, ignore_threshold: bool = False) -> list[_IntermediateResultType]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi index a721160f8..e1c748dab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi @@ -23,7 +23,7 @@ class UniversalDetector: done: bool lang_filter: int logger: Logger - def __init__(self, lang_filter: int = ...) -> None: ... + def __init__(self, lang_filter: int = 31) -> None: ... def reset(self) -> None: ... def feed(self, byte_str: bytes) -> None: ... def close(self) -> _FinalResultType: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/main.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/main.pyi index a9e2f57e9..c12595aae 100755 --- a/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/main.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/main.pyi @@ -1,5 +1,5 @@ from _typeshed import FileDescriptorOrPath from typing import Any -def main(template: FileDescriptorOrPath, data: FileDescriptorOrPath | None = ..., **kwargs: Any) -> str: ... +def main(template: FileDescriptorOrPath, data: FileDescriptorOrPath | None = None, **kwargs: Any) -> str: ... def cli_main() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/renderer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/renderer.pyi index 1ae8065a4..c7b8cb069 100755 --- a/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/renderer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/renderer.pyi @@ -8,14 +8,14 @@ python3: Literal[True] def unicode(x: str, y: str) -> str: ... def render( - template: SupportsRead[str] | str | Sequence[tuple[str, str]] = ..., - data: dict[str, Any] = ..., - partials_path: StrPath | None = ..., - partials_ext: str = ..., - partials_dict: dict[str, str] = ..., - padding: str = ..., - def_ldel: str | None = ..., - def_rdel: str | None = ..., - scopes: MutableSequence[int] | None = ..., - warn: bool = ..., + template: SupportsRead[str] | str | Sequence[tuple[str, str]] = "", + data: dict[str, Any] = {}, + partials_path: StrPath | None = ".", + partials_ext: str = "mustache", + partials_dict: dict[str, str] = {}, + padding: str = "", + def_ldel: str | None = "{{", + def_rdel: str | None = "}}", + scopes: MutableSequence[int] | None = None, + warn: bool = False, ) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/tokenizer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/tokenizer.pyi index b34ed1cc8..1103c68c2 100755 --- a/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/tokenizer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/chevron/chevron/tokenizer.pyi @@ -7,5 +7,5 @@ def l_sa_check(template: str, literal: str, is_standalone: bool) -> bool | None: def r_sa_check(template: str, tag_type: str, is_standalone: bool) -> bool: ... # undocumented def parse_tag(template: str, l_del: str | None, r_del: str | None) -> tuple[tuple[str, str], str]: ... # undocumented def tokenize( - template: str, def_ldel: str | None = ..., def_rdel: str | None = ... + template: str, def_ldel: str | None = "{{", def_rdel: str | None = "}}" ) -> Iterator[tuple[str, str]]: ... # undocumented diff --git a/packages/pyright-internal/typeshed-fallback/stubs/click-spinner/click_spinner/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/click-spinner/click_spinner/__init__.pyi index 8b3a64fcb..6a68a5f40 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/click-spinner/click_spinner/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/click-spinner/click_spinner/__init__.pyi @@ -19,7 +19,7 @@ class Spinner: stream: _Stream stop_running: threading.Event | None spin_thread: threading.Thread | None - def __init__(self, beep: bool = ..., disable: bool = ..., force: bool = ..., stream: _Stream = ...) -> None: ... + def __init__(self, beep: bool = False, disable: bool = False, force: bool = False, stream: _Stream = ...) -> None: ... def start(self) -> None: ... def stop(self) -> None: ... def init_spin(self) -> None: ... @@ -28,4 +28,4 @@ class Spinner: self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> Literal[False]: ... -def spinner(beep: bool = ..., disable: bool = ..., force: bool = ..., stream: _Stream = ...) -> Spinner: ... +def spinner(beep: bool = False, disable: bool = False, force: bool = False, stream: _Stream = ...) -> Spinner: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/ansi.pyi b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/ansi.pyi index 7224a7a81..3b857496e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/ansi.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/ansi.pyi @@ -4,64 +4,64 @@ BEL: str def code_to_chars(code: int) -> str: ... def set_title(title: str) -> str: ... -def clear_screen(mode: int = ...) -> str: ... -def clear_line(mode: int = ...) -> str: ... +def clear_screen(mode: int = 2) -> str: ... +def clear_line(mode: int = 2) -> str: ... class AnsiCodes: def __init__(self) -> None: ... class AnsiCursor: - def UP(self, n: int = ...) -> str: ... - def DOWN(self, n: int = ...) -> str: ... - def FORWARD(self, n: int = ...) -> str: ... - def BACK(self, n: int = ...) -> str: ... - def POS(self, x: int = ..., y: int = ...) -> str: ... + def UP(self, n: int = 1) -> str: ... + def DOWN(self, n: int = 1) -> str: ... + def FORWARD(self, n: int = 1) -> str: ... + def BACK(self, n: int = 1) -> str: ... + def POS(self, x: int = 1, y: int = 1) -> str: ... # All attributes in the following classes are string in instances and int in the class. # We use str since that is the common case for users. class AnsiFore(AnsiCodes): - BLACK: str = ... - RED: str = ... - GREEN: str = ... - YELLOW: str = ... - BLUE: str = ... - MAGENTA: str = ... - CYAN: str = ... - WHITE: str = ... - RESET: str = ... - LIGHTBLACK_EX: str = ... - LIGHTRED_EX: str = ... - LIGHTGREEN_EX: str = ... - LIGHTYELLOW_EX: str = ... - LIGHTBLUE_EX: str = ... - LIGHTMAGENTA_EX: str = ... - LIGHTCYAN_EX: str = ... - LIGHTWHITE_EX: str = ... + BLACK: str + RED: str + GREEN: str + YELLOW: str + BLUE: str + MAGENTA: str + CYAN: str + WHITE: str + RESET: str + LIGHTBLACK_EX: str + LIGHTRED_EX: str + LIGHTGREEN_EX: str + LIGHTYELLOW_EX: str + LIGHTBLUE_EX: str + LIGHTMAGENTA_EX: str + LIGHTCYAN_EX: str + LIGHTWHITE_EX: str class AnsiBack(AnsiCodes): - BLACK: str = ... - RED: str = ... - GREEN: str = ... - YELLOW: str = ... - BLUE: str = ... - MAGENTA: str = ... - CYAN: str = ... - WHITE: str = ... - RESET: str = ... - LIGHTBLACK_EX: str = ... - LIGHTRED_EX: str = ... - LIGHTGREEN_EX: str = ... - LIGHTYELLOW_EX: str = ... - LIGHTBLUE_EX: str = ... - LIGHTMAGENTA_EX: str = ... - LIGHTCYAN_EX: str = ... - LIGHTWHITE_EX: str = ... + BLACK: str + RED: str + GREEN: str + YELLOW: str + BLUE: str + MAGENTA: str + CYAN: str + WHITE: str + RESET: str + LIGHTBLACK_EX: str + LIGHTRED_EX: str + LIGHTGREEN_EX: str + LIGHTYELLOW_EX: str + LIGHTBLUE_EX: str + LIGHTMAGENTA_EX: str + LIGHTCYAN_EX: str + LIGHTWHITE_EX: str class AnsiStyle(AnsiCodes): - BRIGHT: str = ... - DIM: str = ... - NORMAL: str = ... - RESET_ALL: str = ... + BRIGHT: str + DIM: str + NORMAL: str + RESET_ALL: str Fore: AnsiFore Back: AnsiBack diff --git a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/ansitowin32.pyi b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/ansitowin32.pyi index f406f2e20..094a08ee2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/ansitowin32.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/ansitowin32.pyi @@ -3,7 +3,7 @@ from _typeshed import SupportsWrite from collections.abc import Callable, Sequence from re import Pattern from types import TracebackType -from typing import Any, TextIO +from typing import Any, ClassVar, TextIO from typing_extensions import TypeAlias if sys.platform == "win32": @@ -29,16 +29,18 @@ _WinTermCall: TypeAlias = Callable[[int | None, bool, bool], None] _WinTermCallDict: TypeAlias = dict[int, tuple[_WinTermCall] | tuple[_WinTermCall, int] | tuple[_WinTermCall, int, bool]] class AnsiToWin32: - ANSI_CSI_RE: Pattern[str] = ... - ANSI_OSC_RE: Pattern[str] = ... - wrapped: TextIO = ... - autoreset: bool = ... - stream: StreamWrapper = ... - strip: bool = ... - convert: bool = ... - win32_calls: _WinTermCallDict = ... - on_stderr: bool = ... - def __init__(self, wrapped: TextIO, convert: bool | None = ..., strip: bool | None = ..., autoreset: bool = ...) -> None: ... + ANSI_CSI_RE: ClassVar[Pattern[str]] + ANSI_OSC_RE: ClassVar[Pattern[str]] + wrapped: TextIO + autoreset: bool + stream: StreamWrapper + strip: bool + convert: bool + win32_calls: _WinTermCallDict + on_stderr: bool + def __init__( + self, wrapped: TextIO, convert: bool | None = None, strip: bool | None = None, autoreset: bool = False + ) -> None: ... def should_wrap(self) -> bool: ... def get_win32_calls(self) -> _WinTermCallDict: ... def write(self, text: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/initialise.pyi b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/initialise.pyi index 25107f16a..028b98130 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/initialise.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/initialise.pyi @@ -13,7 +13,7 @@ atexit_done: bool fixed_windows_console: bool def reset_all() -> None: ... -def init(autoreset: bool = ..., convert: bool | None = ..., strip: bool | None = ..., wrap: bool = ...) -> None: ... +def init(autoreset: bool = False, convert: bool | None = None, strip: bool | None = None, wrap: bool = True) -> None: ... def deinit() -> None: ... def colorama_text(*args: Any, **kwargs: Any) -> AbstractContextManager[None]: ... def reinit() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/win32.pyi b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/win32.pyi index 38825fa70..7423c14d9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/win32.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/win32.pyi @@ -19,9 +19,9 @@ if sys.platform == "win32": srWindow: wintypes.SMALL_RECT dwMaximumWindowSize: COORD def winapi_test() -> bool: ... - def GetConsoleScreenBufferInfo(stream_id: int = ...) -> CONSOLE_SCREEN_BUFFER_INFO: ... + def GetConsoleScreenBufferInfo(stream_id: int = -11) -> CONSOLE_SCREEN_BUFFER_INFO: ... def SetConsoleTextAttribute(stream_id: int, attrs: wintypes.WORD) -> wintypes.BOOL: ... - def SetConsoleCursorPosition(stream_id: int, position: COORD, adjust: bool = ...) -> wintypes.BOOL: ... + def SetConsoleCursorPosition(stream_id: int, position: COORD, adjust: bool = True) -> wintypes.BOOL: ... def FillConsoleOutputCharacter(stream_id: int, char: str, length: int, start: COORD) -> int: ... def FillConsoleOutputAttribute(stream_id: int, attr: int, length: int, start: COORD) -> wintypes.BOOL: ... def SetConsoleTitle(title: str) -> wintypes.BOOL: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/winterm.pyi b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/winterm.pyi index 0de2c6d51..038f39838 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/winterm.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/colorama/colorama/winterm.pyi @@ -1,37 +1,38 @@ import sys +from typing_extensions import Final if sys.platform == "win32": from . import win32 class WinColor: - BLACK: int = ... - BLUE: int = ... - GREEN: int = ... - CYAN: int = ... - RED: int = ... - MAGENTA: int = ... - YELLOW: int = ... - GREY: int = ... + BLACK: Final = 0 + BLUE: Final = 1 + GREEN: Final = 2 + CYAN: Final = 3 + RED: Final = 4 + MAGENTA: Final = 5 + YELLOW: Final = 6 + GREY: Final = 7 class WinStyle: - NORMAL: int = ... - BRIGHT: int = ... - BRIGHT_BACKGROUND: int = ... + NORMAL: Final = 0x00 + BRIGHT: Final = 0x08 + BRIGHT_BACKGROUND: Final = 0x80 class WinTerm: def __init__(self) -> None: ... def get_attrs(self) -> int: ... def set_attrs(self, value: int) -> None: ... - def reset_all(self, on_stderr: bool | None = ...) -> None: ... - def fore(self, fore: int | None = ..., light: bool = ..., on_stderr: bool = ...) -> None: ... - def back(self, back: int | None = ..., light: bool = ..., on_stderr: bool = ...) -> None: ... - def style(self, style: int | None = ..., on_stderr: bool = ...) -> None: ... - def set_console(self, attrs: int | None = ..., on_stderr: bool = ...) -> None: ... + def reset_all(self, on_stderr: bool | None = None) -> None: ... + def fore(self, fore: int | None = None, light: bool = False, on_stderr: bool = False) -> None: ... + def back(self, back: int | None = None, light: bool = False, on_stderr: bool = False) -> None: ... + def style(self, style: int | None = None, on_stderr: bool = False) -> None: ... + def set_console(self, attrs: int | None = None, on_stderr: bool = False) -> None: ... def get_position(self, handle: int) -> win32.COORD: ... - def set_cursor_position(self, position: win32.COORD | None = ..., on_stderr: bool = ...) -> None: ... - def cursor_adjust(self, x: int, y: int, on_stderr: bool = ...) -> None: ... - def erase_screen(self, mode: int = ..., on_stderr: bool = ...) -> None: ... - def erase_line(self, mode: int = ..., on_stderr: bool = ...) -> None: ... + def set_cursor_position(self, position: win32.COORD | None = None, on_stderr: bool = False) -> None: ... + def cursor_adjust(self, x: int, y: int, on_stderr: bool = False) -> None: ... + def erase_screen(self, mode: int = 0, on_stderr: bool = False) -> None: ... + def erase_line(self, mode: int = 0, on_stderr: bool = False) -> None: ... def set_title(self, title: str) -> None: ... def enable_vt_processing(fd: int) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/console_menu.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/console_menu.pyi index a39ec1364..49bbdd7cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/console_menu.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/console_menu.pyi @@ -25,15 +25,15 @@ class ConsoleMenu: previous_active_menu: ConsoleMenu | None def __init__( self, - title: str | Callable[[], str] | None = ..., - subtitle: str | Callable[[], str] | None = ..., - screen: Screen | None = ..., - formatter: MenuFormatBuilder | None = ..., - prologue_text: str | Callable[[], str] | None = ..., - epilogue_text: str | Callable[[], str] | None = ..., - clear_screen: bool = ..., - show_exit_option: bool = ..., - exit_option_text: str = ..., + title: str | Callable[[], str] | None = None, + subtitle: str | Callable[[], str] | None = None, + screen: Screen | None = None, + formatter: MenuFormatBuilder | None = None, + prologue_text: str | Callable[[], str] | None = None, + epilogue_text: str | Callable[[], str] | None = None, + clear_screen: bool = True, + show_exit_option: bool = True, + exit_option_text: str = "Exit", exit_menu_char: str | None = None, ) -> None: ... @property @@ -45,15 +45,15 @@ class ConsoleMenu: def add_exit(self) -> bool: ... def remove_exit(self) -> bool: ... def is_selected_item_exit(self) -> bool: ... - def start(self, show_exit_option: bool | None = ...) -> None: ... - def show(self, show_exit_option: bool | None = ...) -> None: ... + def start(self, show_exit_option: bool | None = None) -> None: ... + def show(self, show_exit_option: bool | None = None) -> None: ... def draw(self) -> None: ... def is_running(self) -> bool: ... - def wait_for_start(self, timeout: float | None = ...) -> bool: ... + def wait_for_start(self, timeout: float | None = None) -> bool: ... def is_alive(self) -> bool: ... def pause(self) -> None: ... def resume(self) -> None: ... - def join(self, timeout: float | None = ...) -> None: ... + def join(self, timeout: float | None = None) -> None: ... def get_input(self) -> int: ... def process_user_input(self) -> int | None: ... def go_to(self, option: int) -> None: ... @@ -92,6 +92,6 @@ class ExitItem(MenuItem): def __init__( self, text: str | Callable[[], str] = "Exit", menu: ConsoleMenu | None = None, menu_char: str | None = None ) -> None: ... - def show(self, index: int, available_width: None = ...) -> str: ... + def show(self, index: int, available_width: None = None) -> str: ... def clear_terminal() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_margins.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_margins.pyi index f37b33386..210b8e517 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_margins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_margins.pyi @@ -1,5 +1,5 @@ class MenuMargins: - def __init__(self, top: int = ..., left: int = ..., bottom: int = ..., right: int = ...) -> None: ... + def __init__(self, top: int = 1, left: int = 2, bottom: int = 0, right: int = 2) -> None: ... @property def left(self) -> int: ... @left.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_padding.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_padding.pyi index 46855b29d..21a05db01 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_padding.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_padding.pyi @@ -1,5 +1,5 @@ class MenuPadding: - def __init__(self, top: int = ..., left: int = ..., bottom: int = ..., right: int = ...) -> None: ... + def __init__(self, top: int = 1, left: int = 2, bottom: int = 1, right: int = 2) -> None: ... @property def left(self) -> int: ... @left.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_style.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_style.pyi index e7e3c11c1..7ab8bd8b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_style.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/format/menu_style.pyi @@ -5,11 +5,11 @@ from consolemenu.format.menu_padding import MenuPadding as MenuPadding class MenuStyle: def __init__( self, - margins: MenuMargins | None = ..., - padding: MenuPadding | None = ..., - border_style: MenuBorderStyle | None = ..., - border_style_type: int | None = ..., - border_style_factory: MenuBorderStyleFactory | None = ..., + margins: MenuMargins | None = None, + padding: MenuPadding | None = None, + border_style: MenuBorderStyle | None = None, + border_style_type: int | None = None, + border_style_factory: MenuBorderStyleFactory | None = None, ) -> None: ... @property def margins(self) -> MenuMargins: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/items/function_item.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/items/function_item.pyi index 937932613..3322c4a30 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/items/function_item.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/items/function_item.pyi @@ -14,10 +14,10 @@ class FunctionItem(ExternalItem): self, text: str, function: Callable[..., Any], - args: Sequence[Any] | None = ..., - kwargs: Mapping[str, Any] | None = ..., - menu: ConsoleMenu | None = ..., - should_exit: bool = ..., + args: Sequence[Any] | None = None, + kwargs: Mapping[str, Any] | None = None, + menu: ConsoleMenu | None = None, + should_exit: bool = False, menu_char: str | None = None, ) -> None: ... def action(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/menu_component.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/menu_component.pyi index 651483650..5c9362118 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/menu_component.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/menu_component.pyi @@ -8,10 +8,10 @@ def ansilen(s: str) -> int: ... class Dimension: width: int height: int - def __init__(self, width: int = ..., height: int = ..., dimension: Dimension | None = ...) -> None: ... + def __init__(self, width: int = 0, height: int = 0, dimension: Dimension | None = None) -> None: ... class MenuComponent: - def __init__(self, menu_style: MenuStyle, max_dimension: Dimension | None = ...) -> None: ... + def __init__(self, menu_style: MenuStyle, max_dimension: Dimension | None = None) -> None: ... @property def max_dimension(self) -> Dimension: ... @property @@ -30,7 +30,7 @@ class MenuComponent: def outer_horizontals(self) -> str: ... def outer_horizontal_border_bottom(self) -> str: ... def outer_horizontal_border_top(self) -> str: ... - def row(self, content: str = ..., align: str = ..., indent_len: int = ...) -> str: ... + def row(self, content: str = "", align: str = "left", indent_len: int = 0) -> str: ... class MenuHeader(MenuComponent): title: str @@ -41,12 +41,12 @@ class MenuHeader(MenuComponent): def __init__( self, menu_style: MenuStyle, - max_dimension: Dimension | None = ..., - title: str | None = ..., - title_align: str = ..., - subtitle: str | None = ..., - subtitle_align: str = ..., - show_bottom_border: bool = ..., + max_dimension: Dimension | None = None, + title: str | None = None, + title_align: str = "left", + subtitle: str | None = None, + subtitle_align: str = "left", + show_bottom_border: bool = False, ) -> None: ... def generate(self) -> Generator[str, None, None]: ... @@ -58,11 +58,11 @@ class MenuTextSection(MenuComponent): def __init__( self, menu_style: MenuStyle, - max_dimension: Dimension | None = ..., - text: str | None = ..., - text_align: str = ..., - show_top_border: bool = ..., - show_bottom_border: bool = ..., + max_dimension: Dimension | None = None, + text: str | None = None, + text_align: str = "left", + show_top_border: bool = False, + show_bottom_border: bool = False, ) -> None: ... def generate(self) -> Generator[str, None, None]: ... @@ -71,9 +71,9 @@ class MenuItemsSection(MenuComponent): def __init__( self, menu_style: MenuStyle, - max_dimension: Dimension | None = ..., - items: list[MenuItem] | None = ..., - items_align: str = ..., + max_dimension: Dimension | None = None, + items: list[MenuItem] | None = None, + items_align: str = "left", ) -> None: ... @property def items(self) -> list[MenuItem]: ... @@ -91,7 +91,7 @@ class MenuFooter(MenuComponent): def generate(self) -> Generator[str, None, None]: ... class MenuPrompt(MenuComponent): - def __init__(self, menu_style: MenuStyle, max_dimension: Dimension | None = ..., prompt_string: str = ...) -> None: ... + def __init__(self, menu_style: MenuStyle, max_dimension: Dimension | None = None, prompt_string: str = ">>") -> None: ... @property def prompt(self) -> str: ... @prompt.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/menu_formatter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/menu_formatter.pyi index cfd09a695..1144678da 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/menu_formatter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/menu_formatter.pyi @@ -12,7 +12,7 @@ from consolemenu.menu_component import ( ) class MenuFormatBuilder: - def __init__(self, max_dimension: Dimension | None = ...) -> None: ... + def __init__(self, max_dimension: Dimension | None = None) -> None: ... def set_border_style(self, border_style: MenuBorderStyle) -> MenuFormatBuilder: ... def set_border_style_type(self, border_style_type: MenuBorderStyleType) -> MenuFormatBuilder: ... def set_border_style_factory(self, border_style_factory: MenuBorderStyleFactory) -> MenuFormatBuilder: ... @@ -20,8 +20,8 @@ class MenuFormatBuilder: def set_left_margin(self, left_margin: int) -> MenuFormatBuilder: ... def set_right_margin(self, right_margin: int) -> MenuFormatBuilder: ... def set_top_margin(self, top_margin: int) -> MenuFormatBuilder: ... - def set_title_align(self, align: str = ...) -> MenuFormatBuilder: ... - def set_subtitle_align(self, align: str = ...) -> MenuFormatBuilder: ... + def set_title_align(self, align: str = "left") -> MenuFormatBuilder: ... + def set_subtitle_align(self, align: str = "left") -> MenuFormatBuilder: ... def set_header_left_padding(self, x: int) -> MenuFormatBuilder: ... def set_header_right_padding(self, x: int) -> MenuFormatBuilder: ... def set_header_bottom_padding(self, x: int) -> MenuFormatBuilder: ... @@ -37,19 +37,19 @@ class MenuFormatBuilder: def set_items_top_padding(self, x: int) -> MenuFormatBuilder: ... def show_item_bottom_border(self, item_text: str, flag: bool) -> MenuFormatBuilder: ... def show_item_top_border(self, item_text: str, flag: bool) -> MenuFormatBuilder: ... - def set_prologue_text_align(self, align: str = ...) -> MenuFormatBuilder: ... + def set_prologue_text_align(self, align: str = "left") -> MenuFormatBuilder: ... def show_prologue_top_border(self, flag: bool) -> MenuFormatBuilder: ... def show_prologue_bottom_border(self, flag: bool) -> MenuFormatBuilder: ... - def set_epilogue_text_align(self, align: str = ...) -> MenuFormatBuilder: ... + def set_epilogue_text_align(self, align: str = "left") -> MenuFormatBuilder: ... def show_epilogue_top_border(self, flag: bool) -> MenuFormatBuilder: ... def show_epilogue_bottom_border(self, flag: bool) -> MenuFormatBuilder: ... def set_prompt(self, prompt: MenuPrompt) -> MenuFormatBuilder: ... def clear_data(self) -> None: ... def format( self, - title: str | None = ..., - subtitle: str | None = ..., - prologue_text: str | None = ..., - epilogue_text: str | None = ..., - items: list[MenuItem] | None = ..., + title: str | None = None, + subtitle: str | None = None, + prologue_text: str | None = None, + epilogue_text: str | None = None, + items: list[MenuItem] | None = None, ) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/multiselect_menu.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/multiselect_menu.pyi index 06e2a5e75..4fe1a6260 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/multiselect_menu.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/multiselect_menu.pyi @@ -7,15 +7,15 @@ class MultiSelectMenu(ConsoleMenu): ack_item_completion: bool def __init__( self, - title: str | None = ..., - subtitle: str | None = ..., - formatter: MenuFormatBuilder | None = ..., - prologue_text: str | None = ..., - epilogue_text: str | None = ..., - ack_item_completion: bool = ..., - show_exit_option: bool = ..., - exit_option_text: str = ..., - clear_screen: bool = ..., + title: str | None = None, + subtitle: str | None = None, + formatter: MenuFormatBuilder | None = None, + prologue_text: str | None = None, + epilogue_text: str | None = None, + ack_item_completion: bool = True, + show_exit_option: bool = True, + exit_option_text: str = "Exit", + clear_screen: bool = True, ) -> None: ... def append_item(self, item: MenuItem) -> None: ... current_option: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/prompt_utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/prompt_utils.pyi index 507d716f7..d40dda7d9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/prompt_utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/prompt_utils.pyi @@ -11,37 +11,37 @@ class InputResult(NamedTuple): class PromptFormatter: @staticmethod def format_prompt( - prompt: str | None = ..., - default: str | None = ..., - enable_quit: bool = ..., - quit_string: str = ..., - quit_message: str = ..., + prompt: str | None = None, + default: str | None = None, + enable_quit: bool = False, + quit_string: str = "q", + quit_message: str = "(enter q to Quit)", ) -> str: ... class PromptUtils: - def __init__(self, screen: Screen, prompt_formatter: PromptFormatter | None = ...) -> None: ... + def __init__(self, screen: Screen, prompt_formatter: PromptFormatter | None = None) -> None: ... @property def screen(self) -> Screen: ... def clear(self) -> None: ... - def confirm_answer(self, answer: str, message: str | None = ...) -> bool: ... - def enter_to_continue(self, message: str | None = ...) -> None: ... + def confirm_answer(self, answer: str, message: str | None = None) -> bool: ... + def enter_to_continue(self, message: str | None = None) -> None: ... def input( self, - prompt: str | None = ..., - default: str | None = ..., - validators: Iterable[BaseValidator] | None = ..., - enable_quit: bool = ..., - quit_string: str = ..., - quit_message: str = ..., + prompt: str | None = None, + default: str | None = None, + validators: Iterable[BaseValidator] | None = None, + enable_quit: bool = False, + quit_string: str = "q", + quit_message: str = "(enter q to Quit)", ) -> InputResult: ... - def input_password(self, message: str | None = ...) -> str: ... + def input_password(self, message: str | None = None) -> str: ... def printf(self, *args: Any) -> None: ... def println(self, *args: Any) -> None: ... def prompt_and_confirm_password(self, message: str) -> str: ... def prompt_for_bilateral_choice(self, prompt: str, option1: str, option2: str) -> str: ... def prompt_for_trilateral_choice(self, prompt: str, option1: str, option2: str, option3: str) -> str: ... def prompt_for_yes_or_no(self, prompt: str) -> bool: ... - def prompt_for_numbered_choice(self, choices: Sequence[str], title: str | None = ..., prompt: str = ...) -> int: ... + def prompt_for_numbered_choice(self, choices: Sequence[str], title: str | None = None, prompt: str = ">") -> int: ... def validate_input(self, input_string: str, validators: BaseValidator) -> bool: ... class UserQuit(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/screen.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/screen.pyi index 712823c8b..63d573432 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/screen.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/screen.pyi @@ -10,7 +10,7 @@ class Screen: def clear() -> None: ... @staticmethod def flush() -> None: ... - def input(self, prompt: str = ...) -> str: ... + def input(self, prompt: str = "") -> str: ... @staticmethod def printf(*args: Any) -> None: ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/selection_menu.pyi b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/selection_menu.pyi index 4735cb80e..9760461e9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/selection_menu.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/consolemenu/selection_menu.pyi @@ -9,23 +9,23 @@ class SelectionMenu(ConsoleMenu): def __init__( self, strings: Iterable[str], - title: str | None = ..., - subtitle: str | None = ..., - screen: Screen | None = ..., - formatter: MenuFormatBuilder | None = ..., - prologue_text: str | None = ..., - epilogue_text: str | None = ..., - show_exit_option: bool = ..., - exit_option_text: str = ..., - clear_screen: bool = ..., + title: str | None = None, + subtitle: str | None = None, + screen: Screen | None = None, + formatter: MenuFormatBuilder | None = None, + prologue_text: str | None = None, + epilogue_text: str | None = None, + show_exit_option: bool = True, + exit_option_text: str = "Exit", + clear_screen: bool = True, ) -> None: ... @classmethod def get_selection( cls, strings: Iterable[str], - title: str = ..., - subtitle: str | None = ..., - show_exit_option: bool = ..., - _menu: ConsoleMenu | None = ..., + title: str = "Select an option", + subtitle: str | None = None, + show_exit_option: bool = True, + _menu: ConsoleMenu | None = None, ) -> int: ... def append_string(self, string: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/contextvars/contextvars.pyi b/packages/pyright-internal/typeshed-fallback/stubs/contextvars/contextvars.pyi index 044d8a43c..8ce52bdfe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/contextvars/contextvars.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/contextvars/contextvars.pyi @@ -7,6 +7,7 @@ if sys.version_info >= (3, 9): from types import GenericAlias _T = TypeVar("_T") +_D = TypeVar("_D") _P = ParamSpec("_P") @final @@ -17,7 +18,10 @@ class ContextVar(Generic[_T]): def __init__(self, name: str, *, default: _T) -> None: ... @property def name(self) -> str: ... - def get(self, default: _T = ...) -> _T: ... + @overload + def get(self) -> _T: ... + @overload + def get(self, default: _D | _T) -> _D | _T: ... def set(self, value: _T) -> Token[_T]: ... def reset(self, token: Token[_T]) -> None: ... if sys.version_info >= (3, 9): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi index 0799a69f8..817578fa4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi @@ -56,43 +56,43 @@ class croniter(Iterator[Any]): def __init__( self, expr_format: str, - start_time: float | datetime.datetime | None = ..., + start_time: float | datetime.datetime | None = None, ret_type: _RetType | None = ..., - day_or: bool = ..., - max_years_between_matches: int | None = ..., - is_prev: bool = ..., - hash_id: str | bytes | None = ..., + day_or: bool = True, + max_years_between_matches: int | None = None, + is_prev: bool = False, + hash_id: str | bytes | None = None, ) -> None: ... # Most return value depend on ret_type, which can be passed in both as a method argument and as # a constructor argument. - def get_next(self, ret_type: _RetType | None = ..., start_time: float | datetime.datetime | None = ...) -> Any: ... - def get_prev(self, ret_type: _RetType | None = ...) -> Any: ... - def get_current(self, ret_type: _RetType | None = ...) -> Any: ... - def set_current(self, start_time: float | datetime.datetime | None, force: bool = ...) -> float: ... + def get_next(self, ret_type: _RetType | None = None, start_time: float | datetime.datetime | None = None) -> Any: ... + def get_prev(self, ret_type: _RetType | None = None) -> Any: ... + def get_current(self, ret_type: _RetType | None = None) -> Any: ... + def set_current(self, start_time: float | datetime.datetime | None, force: bool = True) -> float: ... def __iter__(self) -> Self: ... def next( - self, ret_type: _RetType | None = ..., start_time: float | datetime.datetime | None = ..., is_prev: bool | None = ... + self, ret_type: _RetType | None = None, start_time: float | datetime.datetime | None = None, is_prev: bool | None = None ) -> Any: ... __next__ = next - def all_next(self, ret_type: _RetType | None = ...) -> Iterator[Any]: ... - def all_prev(self, ret_type: _RetType | None = ...) -> Iterator[Any]: ... + def all_next(self, ret_type: _RetType | None = None) -> Iterator[Any]: ... + def all_prev(self, ret_type: _RetType | None = None) -> Iterator[Any]: ... def iter(self, ret_type: _RetType | None = ...) -> Iterator[Any]: ... def is_leap(self, year: int) -> bool: ... @classmethod - def expand(cls, expr_format: str, hash_id: str | bytes | None = ...) -> tuple[list[list[str]], dict[str, Any]]: ... + def expand(cls, expr_format: str, hash_id: str | bytes | None = None) -> tuple[list[list[str]], dict[str, Any]]: ... @classmethod - def is_valid(cls, expression: str, hash_id: str | bytes | None = ...) -> bool: ... + def is_valid(cls, expression: str, hash_id: str | bytes | None = None) -> bool: ... @classmethod - def match(cls, cron_expression: str, testdate: float | datetime.datetime | None, day_or: bool = ...) -> bool: ... + def match(cls, cron_expression: str, testdate: float | datetime.datetime | None, day_or: bool = True) -> bool: ... def croniter_range( start: float | datetime.datetime, stop: float | datetime.datetime, expr_format: str, - ret_type: _RetType | None = ..., - day_or: bool = ..., - exclude_ends: bool = ..., - _croniter: type[croniter] | None = ..., + ret_type: _RetType | None = None, + day_or: bool = True, + exclude_ends: bool = False, + _croniter: type[croniter] | None = None, ) -> Iterator[Any]: ... class HashExpander: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/__init__.pyi index b649b36f5..b0aaf351a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/__init__.pyi @@ -28,10 +28,10 @@ class _Settings(TypedDict, total=False): def parse( date_string: str, - date_formats: list[str] | tuple[str, ...] | set[str] | None = ..., - languages: list[str] | tuple[str, ...] | set[str] | None = ..., - locales: list[str] | tuple[str, ...] | set[str] | None = ..., - region: str | None = ..., - settings: _Settings | None = ..., - detect_languages_function: _DetectLanguagesFunction | None = ..., + date_formats: list[str] | tuple[str, ...] | set[str] | None = None, + languages: list[str] | tuple[str, ...] | set[str] | None = None, + locales: list[str] | tuple[str, ...] | set[str] | None = None, + region: str | None = None, + settings: _Settings | None = None, + detect_languages_function: _DetectLanguagesFunction | None = None, ) -> datetime.datetime | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/conf.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/conf.pyi index 08883e884..096afd732 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/conf.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/conf.pyi @@ -4,10 +4,10 @@ from typing_extensions import Self class Settings: def __new__(cls, *args, **kw) -> Self: ... - def __init__(self, settings: Incomplete | None = ...) -> None: ... + def __init__(self, settings: Incomplete | None = None) -> None: ... @classmethod - def get_key(cls, settings: Incomplete | None = ...): ... - def replace(self, mod_settings: Incomplete | None = ..., **kwds): ... + def get_key(cls, settings: Incomplete | None = None): ... + def replace(self, mod_settings: Incomplete | None = None, **kwds): ... settings: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/date.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/date.pyi index de772b0c3..c92148d1c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/date.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/date.pyi @@ -29,9 +29,9 @@ RE_SEARCH_NEGATIVE_TIMESTAMP: Pattern[str] def sanitize_spaces(date_string: str) -> str: ... def date_range(begin, end, **kwargs) -> None: ... -def get_intersecting_periods(low, high, period: str = ...) -> None: ... +def get_intersecting_periods(low, high, period: str = "day") -> None: ... def sanitize_date(date_string: str) -> str: ... -def get_date_from_timestamp(date_string: str, settings: Settings, negative: bool = ...) -> datetime | None: ... +def get_date_from_timestamp(date_string: str, settings: Settings, negative: bool = False) -> datetime | None: ... def parse_with_formats(date_string: str, date_formats: Iterable[str], settings: Settings) -> DateData: ... class _DateLocaleParser: @@ -43,15 +43,15 @@ class _DateLocaleParser: locale: Locale, date_string: str, date_formats: list[str] | tuple[str, ...] | set[str] | None, - settings: Settings | None = ..., + settings: Settings | None = None, ) -> None: ... @classmethod def parse( cls, locale: Locale, date_string: str, - date_formats: list[str] | tuple[str, ...] | set[str] | None = ..., - settings: Settings | None = ..., + date_formats: list[str] | tuple[str, ...] | set[str] | None = None, + settings: Settings | None = None, ) -> DateData: ... def _parse(self) -> DateData | None: ... def _try_timestamp(self) -> DateData: ... @@ -68,7 +68,7 @@ class DateData: date_obj: datetime | None locale: str | None period: _Period | None - def __init__(self, *, date_obj: datetime | None = ..., period: _Period | None = ..., locale: str | None = ...) -> None: ... + def __init__(self, *, date_obj: datetime | None = None, period: _Period | None = None, locale: str | None = None) -> None: ... @overload def __getitem__(self, k: Literal["date_obj"]) -> datetime | None: ... @overload @@ -94,15 +94,15 @@ class DateDataParser: previous_locales: collections.OrderedDict[Locale, None] def __init__( self, - languages: list[str] | tuple[str, ...] | set[str] | None = ..., - locales: list[str] | tuple[str, ...] | set[str] | None = ..., - region: str | None = ..., - try_previous_locales: bool = ..., - use_given_order: bool = ..., - settings: _Settings | None = ..., - detect_languages_function: _DetectLanguagesFunction | None = ..., + languages: list[str] | tuple[str, ...] | set[str] | None = None, + locales: list[str] | tuple[str, ...] | set[str] | None = None, + region: str | None = None, + try_previous_locales: bool = False, + use_given_order: bool = False, + settings: _Settings | None = None, + detect_languages_function: _DetectLanguagesFunction | None = None, ) -> None: ... - def get_date_data(self, date_string: str, date_formats: list[str] | tuple[str, ...] | set[str] | None = ...) -> DateData: ... + def get_date_data(self, date_string: str, date_formats: list[str] | tuple[str, ...] | set[str] | None = None) -> DateData: ... def get_date_tuple(self, date_string: str, date_formats: list[str] | tuple[str, ...] | set[str] | None = ...): ... def _get_applicable_locales(self, date_string: str) -> Iterator[Locale]: ... def _is_applicable_locale(self, locale: Locale, date_string: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/date_parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/date_parser.pyi index b4e92d7a2..ed3645621 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/date_parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/date_parser.pyi @@ -2,6 +2,6 @@ from _typeshed import Incomplete from typing import Any class DateParser: - def parse(self, date_string, parse_method, settings: Incomplete | None = ...): ... + def parse(self, date_string, parse_method, settings: Incomplete | None = None): ... date_parser: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/freshness_date_parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/freshness_date_parser.pyi index 06cec0949..547840648 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/freshness_date_parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/freshness_date_parser.pyi @@ -7,6 +7,6 @@ class FreshnessDateDataParser: def get_local_tz(self): ... def parse(self, date_string, settings): ... def get_kwargs(self, date_string): ... - def get_date_data(self, date_string, settings: Incomplete | None = ...): ... + def get_date_data(self, date_string, settings: Incomplete | None = None): ... freshness_date_parser: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/dictionary.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/dictionary.pyi index 8ace03eb3..693546430 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/dictionary.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/dictionary.pyi @@ -13,12 +13,12 @@ class UnknownTokenError(Exception): ... class Dictionary: info: Any - def __init__(self, locale_info, settings: Incomplete | None = ...) -> None: ... + def __init__(self, locale_info, settings: Incomplete | None = None) -> None: ... def __contains__(self, key): ... def __getitem__(self, key): ... def __iter__(self) -> Any: ... def are_tokens_valid(self, tokens): ... - def split(self, string, keep_formatting: bool = ...): ... + def split(self, string, keep_formatting: bool = False): ... class NormalizedDictionary(Dictionary): - def __init__(self, locale_info, settings: Incomplete | None = ...) -> None: ... + def __init__(self, locale_info, settings: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/loader.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/loader.pyi index 87e532b2c..36d08c63f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/loader.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/loader.pyi @@ -9,19 +9,19 @@ LOCALE_SPLIT_PATTERN: Any class LocaleDataLoader: def get_locale_map( self, - languages: list[str] | None = ..., - locales: list[str] | None = ..., - region: str | None = ..., - use_given_order: bool = ..., - allow_conflicting_locales: bool = ..., + languages: list[str] | None = None, + locales: list[str] | None = None, + region: str | None = None, + use_given_order: bool = False, + allow_conflicting_locales: bool = False, ) -> OrderedDict[str, list[Any] | str | int]: ... def get_locales( self, - languages: list[str] | None = ..., - locales: list[str] | None = ..., - region: str | None = ..., - use_given_order: bool = ..., - allow_conflicting_locales: bool = ..., + languages: list[str] | None = None, + locales: list[str] | None = None, + region: str | None = None, + use_given_order: bool = False, + allow_conflicting_locales: bool = False, ) -> Iterator[Locale]: ... def get_locale(self, shortname: str) -> Locale: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/locale.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/locale.pyi index cc54a5d57..5ac12c35b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/locale.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/languages/locale.pyi @@ -7,11 +7,11 @@ NUMERAL_PATTERN: Pattern[str] class Locale: shortname: str def __init__(self, shortname: str, language_info) -> None: ... - def is_applicable(self, date_string: str, strip_timezone: bool = ..., settings: Settings | None = ...) -> bool: ... - def count_applicability(self, text: str, strip_timezone: bool = ..., settings: Settings | None = ...): ... + def is_applicable(self, date_string: str, strip_timezone: bool = False, settings: Settings | None = None) -> bool: ... + def count_applicability(self, text: str, strip_timezone: bool = False, settings: Settings | None = None): ... @staticmethod - def clean_dictionary(dictionary, threshold: int = ...): ... - def translate(self, date_string: str, keep_formatting: bool = ..., settings: Settings | None = ...) -> str: ... - def translate_search(self, search_string, settings: Settings | None = ...): ... + def clean_dictionary(dictionary, threshold: int = 2): ... + def translate(self, date_string: str, keep_formatting: bool = False, settings: Settings | None = None) -> str: ... + def translate_search(self, search_string, settings: Settings | None = None): ... def get_wordchars_for_detection(self, settings): ... def to_parserinfo(self, base_cls=...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/parser.pyi index 889187a86..e95a043cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/parser.pyi @@ -13,7 +13,7 @@ def get_unresolved_attrs(parser_object): ... date_order_chart: Any -def resolve_date_order(order, lst: Incomplete | None = ...): ... +def resolve_date_order(order, lst: Incomplete | None = None): ... class _time_parser: time_directives: Any @@ -43,7 +43,7 @@ class _parser: ordered_num_directives: Any def __init__(self, tokens, settings): ... @classmethod - def parse(cls, datestring, settings, tz: datetime.tzinfo | None = ...): ... + def parse(cls, datestring, settings, tz: datetime.tzinfo | None = None): ... class tokenizer: digits: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/__init__.pyi index b9b1d3e68..1920fa998 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/__init__.pyi @@ -11,13 +11,13 @@ def search_dates( languages: list[str] | tuple[str, ...] | AbstractSet[str] | None, settings: Mapping[Any, Any] | None, add_detected_language: Literal[True], - detect_languages_function: _DetectLanguagesFunction | None = ..., + detect_languages_function: _DetectLanguagesFunction | None = None, ) -> list[tuple[str, datetime, str]]: ... @overload def search_dates( text: str, - languages: list[str] | tuple[str, ...] | AbstractSet[str] | None = ..., - settings: Mapping[Any, Any] | None = ..., - add_detected_language: Literal[False] = ..., - detect_languages_function: _DetectLanguagesFunction | None = ..., + languages: list[str] | tuple[str, ...] | AbstractSet[str] | None = None, + settings: Mapping[Any, Any] | None = None, + add_detected_language: Literal[False] = False, + detect_languages_function: _DetectLanguagesFunction | None = None, ) -> list[tuple[str, datetime]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/detection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/detection.pyi index e8d030807..499ca50b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/detection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/detection.pyi @@ -4,15 +4,15 @@ from typing import Any class BaseLanguageDetector: languages: Any def __init__(self, languages) -> None: ... - def iterate_applicable_languages(self, date_string, modify: bool = ..., settings: Incomplete | None = ...) -> None: ... + def iterate_applicable_languages(self, date_string, modify: bool = False, settings: Incomplete | None = None) -> None: ... class AutoDetectLanguage(BaseLanguageDetector): language_pool: Any allow_redetection: Any - def __init__(self, languages, allow_redetection: bool = ...) -> None: ... + def __init__(self, languages, allow_redetection: bool = False) -> None: ... languages: Any - def iterate_applicable_languages(self, date_string, modify: bool = ..., settings: Incomplete | None = ...) -> None: ... + def iterate_applicable_languages(self, date_string, modify: bool = False, settings: Incomplete | None = None) -> None: ... class ExactLanguages(BaseLanguageDetector): def __init__(self, languages) -> None: ... - def iterate_applicable_languages(self, date_string, modify: bool = ..., settings: Incomplete | None = ...) -> None: ... + def iterate_applicable_languages(self, date_string, modify: bool = False, settings: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/search.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/search.pyi index cd5904a54..7c96046a4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/search.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/search/search.pyi @@ -29,12 +29,16 @@ class DateSearchWithDetection: def __init__(self) -> None: ... language_detector: Any def detect_language( - self, text, languages, settings: Incomplete | None = ..., detect_languages_function: _DetectLanguagesFunction | None = ... + self, + text, + languages, + settings: Incomplete | None = None, + detect_languages_function: _DetectLanguagesFunction | None = None, ): ... def search_dates( self, text, - languages: Incomplete | None = ..., - settings: Incomplete | None = ..., - detect_languages_function: _DetectLanguagesFunction | None = ..., + languages: Incomplete | None = None, + settings: Incomplete | None = None, + detect_languages_function: _DetectLanguagesFunction | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/timezone_parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/timezone_parser.pyi index dc7dccd68..51ed8dedd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/timezone_parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/timezone_parser.pyi @@ -6,10 +6,10 @@ class StaticTzInfo(tzinfo): def tzname(self, dt): ... def utcoffset(self, dt): ... def dst(self, dt): ... - def localize(self, dt, is_dst: bool = ...): ... + def localize(self, dt, is_dst: bool = False): ... def __getinitargs__(self): ... -def pop_tz_offset_from_string(date_string, as_offset: bool = ...): ... +def pop_tz_offset_from_string(date_string, as_offset: bool = True): ... def word_is_tz(word): ... def convert_to_local_tz(datetime_obj, datetime_tz_offset): ... def build_tz_offsets(search_regex_parts): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/utils/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/utils/__init__.pyi index 1814c88fe..320ca8c32 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/utils/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/dateparser/utils/__init__.pyi @@ -4,7 +4,7 @@ from collections.abc import Mapping from typing import Any def strip_braces(date_string: str) -> str: ... -def normalize_unicode(string: str, form: str = ...) -> str: ... +def normalize_unicode(string: str, form: str = "NFKD") -> str: ... def combine_dicts( primary_dict: Mapping[Any, Any], supplementary_dict: Mapping[Any, Any] ) -> OrderedDict[str, str | list[Any]]: ... @@ -17,7 +17,7 @@ def apply_timezone_from_settings(date_obj, settings): ... def get_last_day_of_month(year, month): ... def get_previous_leap_year(year): ... def get_next_leap_year(year): ... -def set_correct_day_from_settings(date_obj, settings, current_day: Incomplete | None = ...): ... +def set_correct_day_from_settings(date_obj, settings, current_day: Incomplete | None = None): ... def registry(cls): ... def get_logger() -> Any: ... def setup_logging() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml index 249b0a7c0..3ea18392d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml @@ -1 +1 @@ -version = "1.2.*" +version = "1.3.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/dj_database_url.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/dj_database_url.pyi index c0d3f5672..4537ae4bf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/dj_database_url.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/dj_database_url.pyi @@ -6,7 +6,7 @@ DEFAULT_ENV: str SCHEMES: dict[str, str] # From https://docs.djangoproject.com/en/4.0/ref/settings/#databases -class _DBConfig(TypedDict, total=False): +class DBConfig(TypedDict, total=False): ATOMIC_REQUESTS: bool AUTOCOMMIT: bool CONN_MAX_AGE: int @@ -28,7 +28,7 @@ def parse( conn_health_checks: bool = ..., ssl_require: bool = ..., test_options: dict[Incomplete, Incomplete] | None = ..., -) -> _DBConfig: ... +) -> DBConfig: ... def config( env: str = ..., default: str | None = ..., @@ -37,4 +37,4 @@ def config( conn_health_checks: bool = ..., ssl_require: bool = ..., test_options: dict[Incomplete, Incomplete] | None = ..., -) -> _DBConfig: ... +) -> DBConfig: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/dockerfile_parse/parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/dockerfile_parse/parser.pyi index 30939a415..3f06fbea9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/dockerfile_parse/parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/dockerfile_parse/parser.pyi @@ -37,12 +37,12 @@ class DockerfileParser: build_args: dict[str, str] def __init__( self, - path: str | None = ..., - cache_content: bool = ..., - env_replace: bool = ..., - parent_env: dict[str, str] | None = ..., - fileobj: IO[str] | None = ..., - build_args: dict[str, str] | None = ..., + path: str | None = None, + cache_content: bool = False, + env_replace: bool = True, + parent_env: dict[str, str] | None = None, + fileobj: IO[str] | None = None, + build_args: dict[str, str] | None = None, ) -> None: ... lines: list[str] content: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/dockerfile_parse/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/dockerfile_parse/util.pyi index 73f29abeb..6677299fe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/dockerfile_parse/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/dockerfile_parse/util.pyi @@ -17,15 +17,18 @@ class WordSplitter: envs: Mapping[str, str] | None quotes: _Quotes | None escaped: bool - def __init__(self, s: str, args: Mapping[str, str] | None = ..., envs: Mapping[str, str] | None = ...) -> None: ... + def __init__(self, s: str, args: Mapping[str, str] | None = None, envs: Mapping[str, str] | None = None) -> None: ... def dequote(self) -> str: ... - def split(self, maxsplit: int | None = ..., dequote: bool = ...) -> Generator[str | None, None, None]: ... + def split(self, maxsplit: int | None = None, dequote: bool = True) -> Generator[str | None, None, None]: ... def extract_key_values( env_replace: bool, args: Mapping[str, str], envs: Mapping[str, str], instruction_value: str ) -> list[tuple[str, str]]: ... def get_key_val_dictionary( - instruction_value: str, env_replace: bool = ..., args: Mapping[str, str] | None = ..., envs: Mapping[str, str] | None = ... + instruction_value: str, + env_replace: bool = False, + args: Mapping[str, str] | None = None, + envs: Mapping[str, str] | None = None, ) -> dict[str, str]: ... class Context: @@ -37,12 +40,12 @@ class Context: line_labels: Mapping[str, str] def __init__( self, - args: MutableMapping[str, str] | None = ..., - envs: MutableMapping[str, str] | None = ..., - labels: MutableMapping[str, str] | None = ..., - line_args: Mapping[str, str] | None = ..., - line_envs: Mapping[str, str] | None = ..., - line_labels: Mapping[str, str] | None = ..., + args: MutableMapping[str, str] | None = None, + envs: MutableMapping[str, str] | None = None, + labels: MutableMapping[str, str] | None = None, + line_args: Mapping[str, str] | None = None, + line_envs: Mapping[str, str] | None = None, + line_labels: Mapping[str, str] | None = None, ) -> None: ... def set_line_value(self, context_type: _ContextType, value: Mapping[str, str]) -> None: ... def get_line_value(self, context_type: _ContextType) -> Mapping[str, str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/__init__.pyi index 1a2f9df43..006592eb5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/__init__.pyi @@ -14,7 +14,7 @@ class _VersionInfo(NamedTuple): class VersionInfo(_VersionInfo): def __new__( - cls, major: int = ..., minor: int = ..., micro: int = ..., releaselevel: str = ..., serial: int = ..., release: bool = ... + cls, major: int = 0, minor: int = 0, micro: int = 0, releaselevel: str = "final", serial: int = 0, release: bool = True ) -> Self: ... __version_info__: VersionInfo diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/frontend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/frontend.pyi index 328decf96..0df9ff514 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/frontend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/frontend.pyi @@ -13,42 +13,42 @@ __docformat__: str def store_multiple(option, opt, value, parser, *args, **kwargs) -> None: ... def read_config_file(option, opt, value, parser) -> None: ... def validate_encoding( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ): ... def validate_encoding_error_handler( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ): ... def validate_encoding_and_error_handler( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ): ... def validate_boolean( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ) -> bool: ... def validate_nonnegative_int( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ) -> int: ... def validate_threshold( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ) -> int: ... def validate_colon_separated_string_list( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ) -> list[str]: ... def validate_comma_separated_list( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ) -> list[str]: ... def validate_url_trailing_slash( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ) -> str: ... def validate_dependency_file( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ) -> DependencyList: ... def validate_strip_class( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ): ... def validate_smartquotes_locales( - setting, value, option_parser, config_parser: Incomplete | None = ..., config_section: Incomplete | None = ... + setting, value, option_parser, config_parser: Incomplete | None = None, config_section: Incomplete | None = None ) -> list[tuple[str, str]]: ... -def make_paths_absolute(pathdict, keys, base_path: Incomplete | None = ...) -> None: ... +def make_paths_absolute(pathdict, keys, base_path: Incomplete | None = None) -> None: ... def make_one_path_absolute(base_path, path) -> str: ... def filter_settings_spec(settings_spec, *exclude, **replace) -> tuple[Any, ...]: ... @@ -69,9 +69,9 @@ class OptionParser(optparse.OptionParser, SettingsSpec): version_template: ClassVar[str] def __init__( self, - components: Iterable[type[Parser]] = ..., - defaults: Mapping[str, Any] | None = ..., - read_config_files: bool | None = ..., + components: Iterable[type[Parser]] = (), + defaults: Mapping[str, Any] | None = None, + read_config_files: bool | None = False, *args, **kwargs, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/io.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/io.pyi index 8a2a7d072..f99949d96 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/io.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/io.pyi @@ -36,10 +36,10 @@ class Output(TransformSpec): default_destination_path: ClassVar[str | None] def __init__( self, - destination: Incomplete | None = ..., - destination_path: Incomplete | None = ..., - encoding: str | None = ..., - error_handler: str = ..., + destination: Incomplete | None = None, + destination_path: Incomplete | None = None, + encoding: str | None = None, + error_handler: str = "strict", ) -> None: ... def write(self, data: str) -> Any: ... # returns bytes or str def encode(self, data: str) -> Any: ... # returns bytes or str @@ -47,10 +47,10 @@ class Output(TransformSpec): class ErrorOutput: def __init__( self, - destination: str | SupportsWrite[str] | SupportsWrite[bytes] | Literal[False] | None = ..., - encoding: str | None = ..., - encoding_errors: str = ..., - decoding_errors: str = ..., + destination: str | SupportsWrite[str] | SupportsWrite[bytes] | Literal[False] | None = None, + encoding: str | None = None, + encoding_errors: str = "backslashreplace", + decoding_errors: str = "replace", ) -> None: ... def write(self, data: str | bytes | Exception) -> None: ... def close(self) -> None: ... @@ -59,12 +59,12 @@ class ErrorOutput: class FileInput(Input): def __init__( self, - source: Incomplete | None = ..., - source_path: Incomplete | None = ..., - encoding: str | None = ..., - error_handler: str = ..., - autoclose: bool = ..., - mode: OpenTextModeReading | OpenBinaryModeReading = ..., + source: Incomplete | None = None, + source_path: Incomplete | None = None, + encoding: str | None = None, + error_handler: str = "strict", + autoclose: bool = True, + mode: OpenTextModeReading | OpenBinaryModeReading = "r", ) -> None: ... def read(self) -> str: ... def readlines(self) -> list[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/languages/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/languages/__init__.pyi index 3638be182..35522c07a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/languages/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/languages/__init__.pyi @@ -9,7 +9,7 @@ class _LanguageModule(Protocol): bibliographic_fields: list[str] class LanguageImporter: - def __call__(self, language_code: str, reporter: Reporter | None = ...) -> _LanguageModule: ... + def __call__(self, language_code: str, reporter: Reporter | None = None) -> _LanguageModule: ... def __getattr__(self, __name: str) -> Incomplete: ... get_language: LanguageImporter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi index 80ee6bbe7..30c32ed0c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi @@ -20,7 +20,7 @@ class Node: line: int | None document: document | None def __bool__(self) -> Literal[True]: ... - def asdom(self, dom: _DomModule | None = ...) -> xml.dom.minidom.Element: ... + def asdom(self, dom: _DomModule | None = None) -> xml.dom.minidom.Element: ... # While docutils documents the Node class to be abstract it does not # actually use the ABCMeta metaclass. We still set @abstractmethod here # (although it's not used in the docutils implementation) because it @@ -30,7 +30,7 @@ class Node: @abstractmethod def deepcopy(self) -> Self: ... @abstractmethod - def pformat(self, indent: str = ..., level: int = ...) -> str: ... + def pformat(self, indent: str = " ", level: int = 0) -> str: ... @abstractmethod def astext(self) -> str: ... def setup_child(self, child: Node) -> None: ... @@ -38,48 +38,48 @@ class Node: def walkabout(self, visitor: NodeVisitor) -> bool: ... @overload def findall( - self, condition: type[_N], include_self: bool = ..., descend: bool = ..., siblings: bool = ..., ascend: bool = ... + self, condition: type[_N], include_self: bool = True, descend: bool = True, siblings: bool = False, ascend: bool = False ) -> Generator[_N, None, None]: ... @overload def findall( self, - condition: Callable[[Node], bool] | None = ..., - include_self: bool = ..., - descend: bool = ..., - siblings: bool = ..., - ascend: bool = ..., + condition: Callable[[Node], bool] | None = None, + include_self: bool = True, + descend: bool = True, + siblings: bool = False, + ascend: bool = False, ) -> Generator[Node, None, None]: ... @overload def traverse( - self, condition: type[_N], include_self: bool = ..., descend: bool = ..., siblings: bool = ..., ascend: bool = ... + self, condition: type[_N], include_self: bool = True, descend: bool = True, siblings: bool = False, ascend: bool = False ) -> list[_N]: ... @overload def traverse( self, - condition: Callable[[Node], bool] | None = ..., - include_self: bool = ..., - descend: bool = ..., - siblings: bool = ..., - ascend: bool = ..., + condition: Callable[[Node], bool] | None = None, + include_self: bool = True, + descend: bool = True, + siblings: bool = False, + ascend: bool = False, ) -> list[Node]: ... @overload def next_node( - self, condition: type[_N], include_self: bool = ..., descend: bool = ..., siblings: bool = ..., ascend: bool = ... + self, condition: type[_N], include_self: bool = False, descend: bool = True, siblings: bool = False, ascend: bool = False ) -> _N: ... @overload def next_node( self, - condition: Callable[[Node], bool] | None = ..., - include_self: bool = ..., - descend: bool = ..., - siblings: bool = ..., - ascend: bool = ..., + condition: Callable[[Node], bool] | None = None, + include_self: bool = False, + descend: bool = True, + siblings: bool = False, + ascend: bool = False, ) -> Node: ... def previous_sibling(self) -> Node | None: ... class Element(Node): children: list[Node] - def __init__(self, rawsource: str = ..., *children: Node, **attributes): ... + def __init__(self, rawsource: str = "", *children: Node, **attributes): ... def __len__(self) -> int: ... def __contains__(self, key: str | Node) -> bool: ... @overload @@ -100,7 +100,7 @@ class Element(Node): def __iadd__(self, other: Node | Iterable[Node]) -> Self: ... def copy(self) -> Self: ... def deepcopy(self) -> Self: ... - def pformat(self, indent: str = ..., level: int = ...) -> str: ... + def pformat(self, indent: str = " ", level: int = 0) -> str: ... def astext(self) -> str: ... def __getattr__(self, __name: str) -> Incomplete: ... @@ -111,13 +111,13 @@ class Text(Node, str): # we omit the rawsource parameter because it has been deprecated and is ignored def __new__(cls, data: str) -> Self: ... def __init__(self, data: str) -> None: ... - def shortrepr(self, maxlen: int = ...) -> str: ... + def shortrepr(self, maxlen: int = 18) -> str: ... def copy(self) -> Self: ... def deepcopy(self) -> Self: ... - def pformat(self, indent: str = ..., level: int = ...) -> str: ... + def pformat(self, indent: str = " ", level: int = 0) -> str: ... def astext(self) -> str: ... - def rstrip(self, chars: str | None = ...) -> str: ... - def lstrip(self, chars: str | None = ...) -> str: ... + def rstrip(self, chars: str | None = None) -> str: ... + def lstrip(self, chars: str | None = None) -> str: ... class Structural: ... class Root: ... @@ -126,7 +126,7 @@ class document(Root, Structural, Element): transformer: Transformer def copy(self) -> Self: ... def deepcopy(self) -> Self: ... - def pformat(self, indent: str = ..., level: int = ...) -> str: ... + def pformat(self, indent: str = " ", level: int = 0) -> str: ... def astext(self) -> str: ... def __getattr__(self, __name: str) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/parsers/rst/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/parsers/rst/__init__.pyi index 04a24b3d7..a7e314148 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/parsers/rst/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/parsers/rst/__init__.pyi @@ -10,7 +10,7 @@ class Parser(parsers.Parser): initial_state: Literal["Body", "RFC2822Body"] state_classes: Any inliner: Any - def __init__(self, rfc2822: bool = ..., inliner: Incomplete | None = ...) -> None: ... + def __init__(self, rfc2822: bool = False, inliner: Incomplete | None = None) -> None: ... class DirectiveError(Exception): level: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/transforms/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/transforms/__init__.pyi index 1fdb00b4a..7a2c0d6a5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/transforms/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/transforms/__init__.pyi @@ -3,12 +3,12 @@ from _typeshed import Incomplete from docutils.nodes import Node, document class Transform: - def __init__(self, document: document, startnode: Node | None = ...): ... + def __init__(self, document: document, startnode: Node | None = None): ... def __getattr__(self, __name: str) -> Incomplete: ... class Transformer: def __init__(self, document: document): ... - def add_transform(self, transform_class: type[Transform], priority: int | None = ..., **kwargs) -> None: ... + def add_transform(self, transform_class: type[Transform], priority: int | None = None, **kwargs) -> None: ... def __getattr__(self, __name: str) -> Incomplete: ... def __getattr__(name: str) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/utils/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/utils/__init__.pyi index 8c3733dbb..9ed328dc6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/utils/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/utils/__init__.pyi @@ -11,7 +11,7 @@ from docutils.nodes import document class DependencyList: list: _list[str] file: FileOutput | None - def __init__(self, output_file: str | None = ..., dependencies: Iterable[str] = ...) -> None: ... + def __init__(self, output_file: str | None = None, dependencies: Iterable[str] = []) -> None: ... def set_output(self, output_file: str | None) -> None: ... def add(self, *filenames: str) -> None: ... def close(self) -> None: ... @@ -35,5 +35,5 @@ class SystemMessage(ApplicationError): def __init__(self, system_message: object, level: _SystemMessageLevel): ... def new_reporter(source_path: str, settings: optparse.Values) -> Reporter: ... -def new_document(source_path: str, settings: optparse.Values | None = ...) -> document: ... +def new_document(source_path: str, settings: optparse.Values | None = None) -> document: ... def __getattr__(name: str) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/core.pyi index 498586dee..5dfdfc171 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/core.pyi @@ -10,22 +10,22 @@ class _EmojiListReturn(TypedDict): def emojize( string: str, - delimiters: tuple[str, str] = ..., - variant: Literal["text_type", "emoji_type", None] = ..., - language: str = ..., - version: float | None = ..., - handle_version: str | Callable[[str, dict[str, str]], str] | None = ..., + delimiters: tuple[str, str] = (":", ":"), + variant: Literal["text_type", "emoji_type", None] = None, + language: str = "en", + version: float | None = None, + handle_version: str | Callable[[str, dict[str, str]], str] | None = None, ) -> str: ... def demojize( string: str, - delimiters: tuple[str, str] = ..., - language: str = ..., - version: float | None = ..., - handle_version: str | Callable[[str, dict[str, str]], str] | None = ..., + delimiters: tuple[str, str] = (":", ":"), + language: str = "en", + version: float | None = None, + handle_version: str | Callable[[str, dict[str, str]], str] | None = None, ) -> str: ... -def replace_emoji(string: str, replace: str | Callable[[str, dict[str, str]], str] = ..., version: float = ...) -> str: ... +def replace_emoji(string: str, replace: str | Callable[[str, dict[str, str]], str] = "", version: float = -1) -> str: ... def emoji_list(string: str) -> list[_EmojiListReturn]: ... def distinct_emoji_list(string: str) -> list[str]: ... -def emoji_count(string: str, unique: bool = ...) -> int: ... +def emoji_count(string: str, unique: bool = False) -> int: ... def version(string: str) -> float: ... def is_emoji(string: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml index d15c66550..f281c01fb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.3.12" +version = "23.3.23" [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/flake8_plugin_utils/plugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/flake8_plugin_utils/plugin.pyi index 6949ec275..b2f4267cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/flake8_plugin_utils/plugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/flake8_plugin_utils/plugin.pyi @@ -19,7 +19,7 @@ class Error: class Visitor(ast.NodeVisitor, Generic[TConfig]): errors: list[Error] @overload - def __init__(self, config: None = ...) -> None: ... + def __init__(self, config: None = None) -> None: ... @overload def __init__(self, config: TConfig) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/flake8_plugin_utils/utils/assertions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/flake8_plugin_utils/utils/assertions.pyi index d030a527f..2071ea301 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/flake8_plugin_utils/utils/assertions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/flake8_plugin_utils/utils/assertions.pyi @@ -3,6 +3,6 @@ from typing import Any from ..plugin import Error as Error, TConfig as TConfig, Visitor as Visitor def assert_error( - visitor_cls: type[Visitor[TConfig]], src: str, expected: type[Error], config: TConfig | None = ..., **kwargs: Any + visitor_cls: type[Visitor[TConfig]], src: str, expected: type[Error], config: TConfig | None = None, **kwargs: Any ) -> None: ... -def assert_not_error(visitor_cls: type[Visitor[TConfig]], src: str, config: TConfig | None = ...) -> None: ... +def assert_not_error(visitor_cls: type[Visitor[TConfig]], src: str, config: TConfig | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml index 1647ad358..a11150fa1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml @@ -1,4 +1,4 @@ -version = "0.19.*" +version = "0.20.*" [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/actions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/actions.pyi index 128155fab..98c9dc82b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/actions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/actions.pyi @@ -5,32 +5,32 @@ from .syntax import PDFObject class Action(ABC): next: PDFObject | str | None - def __init__(self, next_action: PDFObject | str | None = ...) -> None: ... + def __init__(self, next_action: PDFObject | str | None = None) -> None: ... @abstractmethod def serialize(self) -> str: ... class URIAction(Action): uri: str - def __init__(self, uri: str, next_action: PDFObject | str | None = ...) -> None: ... + def __init__(self, uri: str, next_action: PDFObject | str | None = None) -> None: ... def serialize(self) -> str: ... class NamedAction(Action): action_name: str - def __init__(self, action_name: str, next_action: PDFObject | str | None = ...) -> None: ... + def __init__(self, action_name: str, next_action: PDFObject | str | None = None) -> None: ... def serialize(self) -> str: ... class GoToAction(Action): dest: Incomplete - def __init__(self, dest, next_action: PDFObject | str | None = ...) -> None: ... + def __init__(self, dest, next_action: PDFObject | str | None = None) -> None: ... def serialize(self) -> str: ... class GoToRemoteAction(Action): file: str dest: Incomplete - def __init__(self, file: str, dest, next_action: PDFObject | str | None = ...) -> None: ... + def __init__(self, file: str, dest, next_action: PDFObject | str | None = None) -> None: ... def serialize(self) -> str: ... class LaunchAction(Action): file: str - def __init__(self, file: str, next_action: PDFObject | str | None = ...) -> None: ... + def __init__(self, file: str, next_action: PDFObject | str | None = None) -> None: ... def serialize(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/annotations.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/annotations.pyi index acf715b1d..fc0b76521 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/annotations.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/annotations.pyi @@ -35,19 +35,19 @@ class AnnotationMixin: width: int, height: int, flags: tuple[AnnotationFlag, ...] = ..., - contents: str | None = ..., - dest: Destination | None = ..., - action: Action | None = ..., - color: tuple[int, int, int] | None = ..., - modification_time: datetime | None = ..., - title: str | None = ..., - quad_points: tuple[float, ...] | None = ..., # multiple of 8 floats - border_width: int = ..., - name: AnnotationName | FileAttachmentAnnotationName | None = ..., - ink_list: tuple[int, ...] = ..., - file_spec: str | None = ..., - field_type: str | None = ..., - value: Incomplete | None = ..., + contents: str | None = None, + dest: Destination | None = None, + action: Action | None = None, + color: tuple[int, int, int] | None = None, + modification_time: datetime | None = None, + title: str | None = None, + quad_points: tuple[float, ...] | None = None, # multiple of 8 floats + border_width: int = 0, + name: AnnotationName | FileAttachmentAnnotationName | None = None, + ink_list: tuple[int, ...] = (), + file_spec: str | None = None, + field_type: str | None = None, + value: Incomplete | None = None, ) -> None: ... class PDFAnnotation(AnnotationMixin, PDFObject): ... @@ -62,11 +62,11 @@ class PDFEmbeddedFile(PDFContentStream): self, basename: str, contents: bytes, - desc: str = ..., - creation_date: datetime | None = ..., - modification_date: datetime | None = ..., - compress: bool = ..., - checksum: bool = ..., + desc: str = "", + creation_date: datetime | None = None, + modification_date: datetime | None = None, + compress: bool = False, + checksum: bool = False, ) -> None: ... def globally_enclosed(self) -> bool: ... def set_globally_enclosed(self, value: bool) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/drawing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/drawing.pyi index 24a1b543c..ed2aa272c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/drawing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/drawing.pyi @@ -38,7 +38,7 @@ class _DeviceRGBBase(NamedTuple): class DeviceRGB(_DeviceRGBBase): OPERATOR: ClassVar[str] - def __new__(cls, r: Number, g: Number, b: Number, a: Number | None = ...) -> Self: ... + def __new__(cls, r: Number, g: Number, b: Number, a: Number | None = None) -> Self: ... @property def colors(self) -> tuple[Number, Number, Number]: ... def serialize(self) -> str: ... @@ -49,7 +49,7 @@ class _DeviceGrayBase(NamedTuple): class DeviceGray(_DeviceGrayBase): OPERATOR: ClassVar[str] - def __new__(cls, g: Number, a: Number | None = ...) -> Self: ... + def __new__(cls, g: Number, a: Number | None = None) -> Self: ... @property def colors(self) -> tuple[Number]: ... def serialize(self) -> str: ... @@ -63,14 +63,14 @@ class _DeviceCMYKBase(NamedTuple): class DeviceCMYK(_DeviceCMYKBase): OPERATOR: ClassVar[str] - def __new__(cls, c: Number, m: Number, y: Number, k: Number, a: Number | None = ...) -> Self: ... + def __new__(cls, c: Number, m: Number, y: Number, k: Number, a: Number | None = None) -> Self: ... @property def colors(self) -> tuple[Number, Number, Number, Number]: ... def serialize(self) -> str: ... -def rgb8(r, g, b, a: Incomplete | None = ...) -> DeviceRGB: ... -def gray8(g, a: Incomplete | None = ...) -> DeviceGray: ... -def cmyk8(c, m, y, k, a: Incomplete | None = ...) -> DeviceCMYK: ... +def rgb8(r, g, b, a: Incomplete | None = None) -> DeviceRGB: ... +def gray8(g, a: Incomplete | None = None) -> DeviceGray: ... +def cmyk8(c, m, y, k, a: Incomplete | None = None) -> DeviceCMYK: ... def color_from_hex_string(hexstr) -> DeviceRGB: ... def color_from_rgb_string(rgbstr) -> DeviceRGB: ... @@ -102,18 +102,18 @@ class Transform(NamedTuple): @classmethod def translation(cls, x, y): ... @classmethod - def scaling(cls, x, y: Incomplete | None = ...): ... + def scaling(cls, x, y: Incomplete | None = None): ... @classmethod def rotation(cls, theta): ... @classmethod def rotation_d(cls, theta_d): ... @classmethod - def shearing(cls, x, y: Incomplete | None = ...): ... + def shearing(cls, x, y: Incomplete | None = None): ... def translate(self, x, y): ... - def scale(self, x, y: Incomplete | None = ...): ... + def scale(self, x, y: Incomplete | None = None): ... def rotate(self, theta): ... def rotate_d(self, theta_d): ... - def shear(self, x, y: Incomplete | None = ...): ... + def shear(self, x, y: Incomplete | None = None): ... def about(self, x, y): ... def __mul__(self, other): ... def __rmul__(self, other): ... @@ -316,12 +316,12 @@ class Close(NamedTuple): class DrawingContext: def __init__(self) -> None: ... - def add_item(self, item, _copy: bool = ...) -> None: ... + def add_item(self, item, _copy: bool = True) -> None: ... def render(self, gsd_registry, first_point, scale, height, starting_style): ... def render_debug(self, gsd_registry, first_point, scale, height, starting_style, debug_stream): ... class PaintedPath: - def __init__(self, x: int = ..., y: int = ...) -> None: ... + def __init__(self, x: int = 0, y: int = 0) -> None: ... def __deepcopy__(self, memo) -> Self: ... @property def style(self): ... @@ -343,9 +343,9 @@ class PaintedPath: def clipping_path(self, new_clipath) -> None: ... @contextmanager def transform_group(self, transform) -> Iterator[Self]: ... - def add_path_element(self, item, _copy: bool = ...) -> None: ... + def add_path_element(self, item, _copy: bool = True) -> None: ... def remove_last_path_element(self) -> None: ... - def rectangle(self, x, y, w, h, rx: int = ..., ry: int = ...) -> Self: ... + def rectangle(self, x, y, w, h, rx: int = 0, ry: int = 0) -> Self: ... def circle(self, cx, cy, r) -> Self: ... def ellipse(self, cx, cy, rx, ry) -> Self: ... def move_to(self, x, y) -> Self: ... @@ -364,15 +364,15 @@ class PaintedPath: def arc_relative(self, rx, ry, rotation, large_arc, positive_sweep, dx, dy) -> Self: ... def close(self) -> None: ... def render( - self, gsd_registry, style, last_item, initial_point, debug_stream: Incomplete | None = ..., pfx: Incomplete | None = ... + self, gsd_registry, style, last_item, initial_point, debug_stream: Incomplete | None = None, pfx: Incomplete | None = None ): ... def render_debug(self, gsd_registry, style, last_item, initial_point, debug_stream, pfx): ... class ClippingPath(PaintedPath): paint_rule: Incomplete - def __init__(self, x: int = ..., y: int = ...) -> None: ... + def __init__(self, x: int = 0, y: int = 0) -> None: ... def render( - self, gsd_registry, style, last_item, initial_point, debug_stream: Incomplete | None = ..., pfx: Incomplete | None = ... + self, gsd_registry, style, last_item, initial_point, debug_stream: Incomplete | None = None, pfx: Incomplete | None = None ): ... def render_debug(self, gsd_registry, style, last_item, initial_point, debug_stream, pfx): ... @@ -389,7 +389,7 @@ class GraphicsContext: def clipping_path(self) -> ClippingPath | None: ... @clipping_path.setter def clipping_path(self, new_clipath) -> None: ... - def add_item(self, item, _copy: bool = ...) -> None: ... + def add_item(self, item, _copy: bool = True) -> None: ... def remove_last_item(self) -> None: ... def merge(self, other_context) -> None: ... def build_render_list( @@ -398,9 +398,9 @@ class GraphicsContext: style, last_item, initial_point, - debug_stream: Incomplete | None = ..., - pfx: Incomplete | None = ..., - _push_stack: bool = ..., + debug_stream: Incomplete | None = None, + pfx: Incomplete | None = None, + _push_stack: bool = True, ): ... def render( self, @@ -408,10 +408,10 @@ class GraphicsContext: style: DrawingContext, last_item, initial_point, - debug_stream: Incomplete | None = ..., - pfx: Incomplete | None = ..., - _push_stack: bool = ..., + debug_stream: Incomplete | None = None, + pfx: Incomplete | None = None, + _push_stack: bool = True, ): ... def render_debug( - self, gsd_registry, style: DrawingContext, last_item, initial_point, debug_stream, pfx, _push_stack: bool = ... + self, gsd_registry, style: DrawingContext, last_item, initial_point, debug_stream, pfx, _push_stack: bool = True ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/errors.pyi index c417166e0..a2aff7bb1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/errors.pyi @@ -6,7 +6,7 @@ class FPDFPageFormatException(FPDFException): argument: Any unknown: Any one: Any - def __init__(self, argument, unknown: bool = ..., one: bool = ...) -> None: ... + def __init__(self, argument, unknown: bool = False, one: bool = False) -> None: ... class FPDFUnicodeEncodingException(FPDFException): def __init__(self, text_index, character, font_name) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi index 0c6b86b34..1c65fb915 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi @@ -64,7 +64,7 @@ class SubsetMap: def pick(self, unicode: int) -> int: ... def dict(self) -> dict[int, int]: ... -def get_page_format(format: _Format | tuple[float, float], k: float | None = ...) -> tuple[float, float]: ... +def get_page_format(format: _Format | tuple[float, float], k: float | None = None) -> tuple[float, float]: ... # TODO: TypedDicts _Font: TypeAlias = dict[str, Any] @@ -143,10 +143,10 @@ class FPDF: def __init__( self, - orientation: _Orientation = ..., - unit: _Unit | float = ..., - format: _Format | tuple[float, float] = ..., - font_cache_dir: Literal["DEPRECATED"] = ..., + orientation: _Orientation = "portrait", + unit: _Unit | float = "mm", + format: _Format | tuple[float, float] = "A4", + font_cache_dir: Literal["DEPRECATED"] = "DEPRECATED", ) -> None: ... # The following definition crashes stubtest 0.991, but seems to be fixed # in later versions. @@ -171,7 +171,7 @@ class FPDF: @property def pages_count(self) -> int: ... def set_margin(self, margin: float) -> None: ... - def set_margins(self, left: float, top: float, right: float = ...) -> None: ... + def set_margins(self, left: float, top: float, right: float = -1) -> None: ... def set_left_margin(self, margin: float) -> None: ... def set_top_margin(self, margin: float) -> None: ... r_margin: float @@ -179,7 +179,7 @@ class FPDF: auto_page_break: bool b_margin: float page_break_trigger: float - def set_auto_page_break(self, auto: bool, margin: float = ...) -> None: ... + def set_auto_page_break(self, auto: bool, margin: float = 0) -> None: ... @property def default_page_dimensions(self) -> tuple[float, float]: ... zoom_mode: Literal["fullpage", "fullwidth", "real", "default"] | float @@ -187,7 +187,7 @@ class FPDF: def set_display_mode( self, zoom: Literal["fullpage", "fullwidth", "real", "default"] | float, - layout: Literal["single", "continuous", "two", "default"] = ..., + layout: Literal["single", "continuous", "two", "default"] = "continuous", ) -> None: ... def set_compression(self, compress: bool) -> None: ... title: str @@ -208,56 +208,62 @@ class FPDF: def set_xmp_metadata(self, xmp_metadata: str) -> None: ... def set_doc_option(self, opt: str, value: str) -> None: ... def set_image_filter(self, image_filter: str) -> None: ... - def alias_nb_pages(self, alias: str = ...) -> None: ... + def alias_nb_pages(self, alias: str = "{nb}") -> None: ... def add_page( self, - orientation: _Orientation = ..., - format: _Format | tuple[float, float] = ..., - same: bool = ..., - duration: int = ..., - transition: Incomplete | None = ..., + orientation: _Orientation = "", + format: _Format | tuple[float, float] = "", + same: bool = False, + duration: int = 0, + transition: Incomplete | None = None, ) -> None: ... def header(self) -> None: ... def footer(self) -> None: ... def page_no(self) -> int: ... - def set_draw_color(self, r: int, g: int = ..., b: int = ...) -> None: ... - def set_fill_color(self, r: int, g: int = ..., b: int = ...) -> None: ... - def set_text_color(self, r: int, g: int = ..., b: int = ...) -> None: ... - def get_string_width(self, s: str, normalized: bool = ..., markdown: bool = ...) -> float: ... + def set_draw_color(self, r: int, g: int = -1, b: int = -1) -> None: ... + def set_fill_color(self, r: int, g: int = -1, b: int = -1) -> None: ... + def set_text_color(self, r: int, g: int = -1, b: int = -1) -> None: ... + def get_string_width(self, s: str, normalized: bool = False, markdown: bool = False) -> float: ... def set_line_width(self, width: float) -> None: ... def set_page_background(self, background) -> None: ... - def drawing_context(self, debug_stream: Incomplete | None = ...) -> _GeneratorContextManager[DrawingContext]: ... + def drawing_context(self, debug_stream: Incomplete | None = None) -> _GeneratorContextManager[DrawingContext]: ... def new_path( - self, x: float = ..., y: float = ..., paint_rule: PathPaintRule = ..., debug_stream: Incomplete | None = ... + self, x: float = 0, y: float = 0, paint_rule: PathPaintRule = ..., debug_stream: Incomplete | None = None ) -> _GeneratorContextManager[PaintedPath]: ... - def draw_path(self, path: PaintedPath, debug_stream: Incomplete | None = ...) -> None: ... - def set_dash_pattern(self, dash: float = ..., gap: float = ..., phase: float = ...) -> None: ... + def draw_path(self, path: PaintedPath, debug_stream: Incomplete | None = None) -> None: ... + def set_dash_pattern(self, dash: float = 0, gap: float = 0, phase: float = 0) -> None: ... def line(self, x1: float, y1: float, x2: float, y2: float) -> None: ... def polyline( - self, point_list: list[tuple[float, float]], fill: bool = ..., polygon: bool = ..., style: RenderStyle | str | None = ... + self, + point_list: list[tuple[float, float]], + fill: bool = False, + polygon: bool = False, + style: RenderStyle | str | None = None, + ) -> None: ... + def polygon( + self, point_list: list[tuple[float, float]], fill: bool = False, style: RenderStyle | str | None = None ) -> None: ... - def polygon(self, point_list: list[tuple[float, float]], fill: bool = ..., style: RenderStyle | str | None = ...) -> None: ... - def dashed_line(self, x1, y1, x2, y2, dash_length: int = ..., space_length: int = ...) -> None: ... + def dashed_line(self, x1, y1, x2, y2, dash_length: int = 1, space_length: int = 1) -> None: ... def rect( self, x: float, y: float, w: float, h: float, - style: RenderStyle | str | None = ..., - round_corners: tuple[str, ...] | tuple[Corner, ...] | bool = ..., - corner_radius: float = ..., + style: RenderStyle | str | None = None, + round_corners: tuple[str, ...] | tuple[Corner, ...] | bool = False, + corner_radius: float = 0, ) -> None: ... - def ellipse(self, x: float, y: float, w: float, h: float, style: RenderStyle | str | None = ...) -> None: ... - def circle(self, x: float, y: float, r, style: RenderStyle | str | None = ...) -> None: ... + def ellipse(self, x: float, y: float, w: float, h: float, style: RenderStyle | str | None = None) -> None: ... + def circle(self, x: float, y: float, r, style: RenderStyle | str | None = None) -> None: ... def regular_polygon( self, x: float, y: float, numSides: int, polyWidth: float, - rotateDegrees: float = ..., - style: RenderStyle | str | None = ..., + rotateDegrees: float = 0, + style: RenderStyle | str | None = None, ): ... def star( self, @@ -266,8 +272,8 @@ class FPDF: r_in: float, r_out: float, corners: int, - rotate_degrees: float = ..., - style: RenderStyle | str | None = ..., + rotate_degrees: float = 0, + style: RenderStyle | str | None = None, ): ... def arc( self, @@ -276,12 +282,12 @@ class FPDF: a: float, start_angle: float, end_angle: float, - b: float | None = ..., - inclination: float = ..., - clockwise: bool = ..., - start_from_center: bool = ..., - end_at_center: bool = ..., - style: RenderStyle | str | None = ..., + b: float | None = None, + inclination: float = 0, + clockwise: bool = False, + start_from_center: bool = False, + end_at_center: bool = False, + style: RenderStyle | str | None = None, ) -> None: ... def solid_arc( self, @@ -290,10 +296,10 @@ class FPDF: a: float, start_angle: float, end_angle: float, - b: float | None = ..., - inclination: float = ..., - clockwise: bool = ..., - style: RenderStyle | str | None = ..., + b: float | None = None, + inclination: float = 0, + clockwise: bool = False, + style: RenderStyle | str | None = None, ) -> None: ... def add_font( self, @@ -302,21 +308,21 @@ class FPDF: fname: str | PurePath | None = None, uni: bool | Literal["DEPRECATED"] = "DEPRECATED", ) -> None: ... - def set_font(self, family: str | None = ..., style: _FontStyles = ..., size: int = ...) -> None: ... + def set_font(self, family: str | None = None, style: _FontStyles = "", size: int = 0) -> None: ... def set_font_size(self, size: float) -> None: ... def set_char_spacing(self, spacing: float) -> None: ... def set_stretching(self, stretching: float) -> None: ... def add_link(self, y: float = 0, x: float = 0, page: int = -1, zoom: float | Literal["null"] = "null") -> int: ... def set_link(self, link, y: float = 0, x: float = 0, page: int = -1, zoom: float | Literal["null"] = "null") -> None: ... def link( - self, x: float, y: float, w: float, h: float, link: str | int, alt_text: str | None = ..., border_width: int = ... + self, x: float, y: float, w: float, h: float, link: str | int, alt_text: str | None = None, border_width: int = 0 ) -> AnnotationDict: ... def embed_file( self, - file_path: StrPath | None = ..., - bytes: bytes | None = ..., - basename: str | None = ..., - modification_date: datetime.datetime | None = ..., + file_path: StrPath | None = None, + bytes: bytes | None = None, + basename: str | None = None, + modification_date: datetime.datetime | None = None, *, creation_date: datetime.datetime | None = ..., desc: str = ..., @@ -328,9 +334,9 @@ class FPDF: file_path: StrPath, x: float, y: float, - w: float = ..., - h: float = ..., - name: FileAttachmentAnnotationName | str | None = ..., + w: float = 1, + h: float = 1, + name: FileAttachmentAnnotationName | str | None = None, flags: Iterable[AnnotationFlag | str] = ..., *, bytes: bytes | None = ..., @@ -346,19 +352,19 @@ class FPDF: x: float, y: float, text: str, - w: float = ..., - h: float = ..., - name: AnnotationName | str | None = ..., + w: float = 1, + h: float = 1, + name: AnnotationName | str | None = None, flags: tuple[AnnotationFlag, ...] | tuple[str, ...] = ..., ) -> None: ... def add_action(self, action, x: float, y: float, w: float, h: float) -> None: ... def highlight( self, text: str, - title: str = ..., - type: TextMarkupType | str = ..., - color: tuple[float, float, float] = ..., - modification_time: datetime.datetime | None = ..., + title: str = "", + type: TextMarkupType | str = "Highlight", + color: tuple[float, float, float] = (1, 1, 0), + modification_time: datetime.datetime | None = None, ) -> _GeneratorContextManager[None]: ... add_highlight = highlight def add_text_markup_annotation( @@ -366,51 +372,51 @@ class FPDF: type: str, text: str, quad_points: Sequence[int], - title: str = ..., - color: tuple[float, float, float] = ..., - modification_time: datetime.datetime | None = ..., - page: int | None = ..., + title: str = "", + color: tuple[float, float, float] = (1, 1, 0), + modification_time: datetime.datetime | None = None, + page: int | None = None, ) -> AnnotationDict: ... def ink_annotation( self, coords: Iterable[Incomplete], - contents: str = ..., - title: str = ..., - color: Sequence[float] = ..., - border_width: int = ..., + contents: str = "", + title: str = "", + color: Sequence[float] = (1, 1, 0), + border_width: int = 1, ) -> AnnotationDict: ... - def text(self, x: float, y: float, txt: str = ...) -> None: ... - def rotate(self, angle: float, x: float | None = ..., y: float | None = ...) -> None: ... - def rotation(self, angle: float, x: float | None = ..., y: float | None = ...) -> _GeneratorContextManager[None]: ... + def text(self, x: float, y: float, txt: str = "") -> None: ... + def rotate(self, angle: float, x: float | None = None, y: float | None = None) -> None: ... + def rotation(self, angle: float, x: float | None = None, y: float | None = None) -> _GeneratorContextManager[None]: ... def skew( self, ax: float = 0, ay: float = 0, x: float | None = None, y: float | None = None ) -> _GeneratorContextManager[None]: ... def local_context( self, - font_family: Incomplete | None = ..., - font_style: Incomplete | None = ..., - font_size: Incomplete | None = ..., - line_width: Incomplete | None = ..., - draw_color: Incomplete | None = ..., - fill_color: Incomplete | None = ..., - text_color: Incomplete | None = ..., - dash_pattern: Incomplete | None = ..., + font_family: Incomplete | None = None, + font_style: Incomplete | None = None, + font_size: Incomplete | None = None, + line_width: Incomplete | None = None, + draw_color: Incomplete | None = None, + fill_color: Incomplete | None = None, + text_color: Incomplete | None = None, + dash_pattern: Incomplete | None = None, **kwargs, ) -> _GeneratorContextManager[None]: ... @property def accept_page_break(self) -> bool: ... def cell( self, - w: float | None = ..., - h: float | None = ..., - txt: str = ..., - border: bool | Literal[0, 1] | str = ..., - ln: int | Literal["DEPRECATED"] = ..., + w: float | None = None, + h: float | None = None, + txt: str = "", + border: bool | Literal[0, 1] | str = 0, + ln: int | Literal["DEPRECATED"] = "DEPRECATED", align: str | Align = ..., - fill: bool = ..., - link: str = ..., - center: bool | Literal["DEPRECATED"] = ..., - markdown: bool = ..., + fill: bool = False, + link: str = "", + center: bool | Literal["DEPRECATED"] = "DEPRECATED", + markdown: bool = False, new_x: XPos | str = ..., new_y: YPos | str = ..., ) -> bool: ... @@ -418,21 +424,21 @@ class FPDF: def multi_cell( self, w: float, - h: float | None = ..., - txt: str = ..., - border: bool | Literal[0, 1] | str = ..., + h: float | None = None, + txt: str = "", + border: bool | Literal[0, 1] | str = 0, align: str | Align = ..., - fill: bool = ..., - split_only: bool = ..., - link: str | int = ..., - ln: int | Literal["DEPRECATED"] = ..., - max_line_height: float | None = ..., - markdown: bool = ..., - print_sh: bool = ..., + fill: bool = False, + split_only: bool = False, + link: str | int = "", + ln: int | Literal["DEPRECATED"] = "DEPRECATED", + max_line_height: float | None = None, + markdown: bool = False, + print_sh: bool = False, new_x: XPos | str = ..., new_y: YPos | str = ..., ): ... - def write(self, h: float | None = ..., txt: str = ..., link: str = ..., print_sh: bool = ...) -> None: ... + def write(self, h: float | None = None, txt: str = "", link: str = "", print_sh: bool = False) -> None: ... def image( self, name: str | Image.Image | BytesIO | StrPath, @@ -446,57 +452,57 @@ class FPDF: alt_text: str | None = None, dims: tuple[float, float] | None = None, ) -> _Image: ... - def ln(self, h: float | None = ...) -> None: ... + def ln(self, h: float | None = None) -> None: ... def get_x(self) -> float: ... def set_x(self, x: float) -> None: ... def get_y(self) -> float: ... def set_y(self, y: float) -> None: ... def set_xy(self, x: float, y: float) -> None: ... @overload - def output(self, name: Literal[""] = ...) -> bytearray: ... # type: ignore[misc] + def output(self, name: Literal[""] = "") -> bytearray: ... # type: ignore[misc] @overload def output(self, name: str) -> None: ... def normalize_text(self, txt: str) -> str: ... def sign_pkcs12( self, pkcs_filepath: str, - password: bytes | None = ..., - hashalgo: str = ..., - contact_info: str | None = ..., - location: str | None = ..., - signing_time: datetime.datetime | None = ..., - reason: str | None = ..., + password: bytes | None = None, + hashalgo: str = "sha256", + contact_info: str | None = None, + location: str | None = None, + signing_time: datetime.datetime | None = None, + reason: str | None = None, flags: tuple[AnnotationFlag, ...] = ..., ) -> None: ... def sign( self, key, cert, - extra_certs: Sequence[Incomplete] = ..., - hashalgo: str = ..., - contact_info: str | None = ..., - location: str | None = ..., - signing_time: datetime.datetime | None = ..., - reason: str | None = ..., + extra_certs: Sequence[Incomplete] = (), + hashalgo: str = "sha256", + contact_info: str | None = None, + location: str | None = None, + signing_time: datetime.datetime | None = None, + reason: str | None = None, flags: tuple[AnnotationFlag, ...] = ..., ) -> None: ... def file_id(self) -> str: ... - def interleaved2of5(self, txt, x: float, y: float, w: float = ..., h: float = ...) -> None: ... - def code39(self, txt, x: float, y: float, w: float = ..., h: float = ...) -> None: ... + def interleaved2of5(self, txt, x: float, y: float, w: float = 1, h: float = 10) -> None: ... + def code39(self, txt, x: float, y: float, w: float = 1.5, h: float = 5) -> None: ... def rect_clip(self, x: float, y: float, w: float, h: float) -> _GeneratorContextManager[None]: ... def elliptic_clip(self, x: float, y: float, w: float, h: float) -> _GeneratorContextManager[None]: ... def round_clip(self, x: float, y: float, r: float) -> _GeneratorContextManager[None]: ... def unbreakable(self) -> _GeneratorContextManager[FPDFRecorder]: ... def offset_rendering(self) -> _GeneratorContextManager[FPDFRecorder]: ... - def insert_toc_placeholder(self, render_toc_function, pages: int = ...) -> None: ... + def insert_toc_placeholder(self, render_toc_function, pages: int = 1) -> None: ... def set_section_title_styles( self, level0: TitleStyle, - level1: TitleStyle | None = ..., - level2: TitleStyle | None = ..., - level3: TitleStyle | None = ..., - level4: TitleStyle | None = ..., - level5: TitleStyle | None = ..., - level6: TitleStyle | None = ..., + level1: TitleStyle | None = None, + level2: TitleStyle | None = None, + level3: TitleStyle | None = None, + level4: TitleStyle | None = None, + level5: TitleStyle | None = None, + level6: TitleStyle | None = None, ) -> None: ... def start_section(self, name: str, level: int = 0, strict: bool = True) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/html.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/html.pyi index 34ae19685..1cd38573f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/html.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/html.pyi @@ -22,7 +22,7 @@ TRAILING_SPACE: Pattern[str] COLOR_DICT: Final[dict[str, str]] def px2mm(px: float) -> float: ... -def color_as_decimal(color: str | None = ...) -> tuple[int, int, int] | None: ... +def color_as_decimal(color: str | None = "#000000") -> tuple[int, int, int] | None: ... class HTML2FPDF(HTMLParser): HTML_UNCLOSED_TAGS: ClassVar[tuple[str, ...]] @@ -65,7 +65,7 @@ class HTML2FPDF(HTMLParser): li_tag_indent: int = 5, dd_tag_indent: int = 10, table_line_separators: bool = False, - ul_bullet_char: str = ..., + ul_bullet_char: str = "\x95", heading_sizes: Incomplete | None = None, warn_on_tags_not_matching: bool = True, **_: Unused, @@ -83,9 +83,9 @@ class HTML2FPDF(HTMLParser): tbody: Incomplete def handle_endtag(self, tag) -> None: ... h: Incomplete - def set_font(self, face: Incomplete | None = ..., size: Incomplete | None = ...) -> None: ... - def set_style(self, tag: Incomplete | None = ..., enable: bool = ...) -> None: ... - def set_text_color(self, r: Incomplete | None = ..., g: int = ..., b: int = ...) -> None: ... + def set_font(self, face: Incomplete | None = None, size: Incomplete | None = None) -> None: ... + def set_style(self, tag: Incomplete | None = None, enable: bool = False) -> None: ... + def set_text_color(self, r: Incomplete | None = None, g: int = 0, b: int = 0) -> None: ... def put_link(self, txt) -> None: ... def render_toc(self, pdf, outline) -> None: ... def error(self, message: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/image_parsing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/image_parsing.pyi index 24060e554..352086bf7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/image_parsing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/image_parsing.pyi @@ -12,4 +12,4 @@ SUPPORTED_IMAGE_FILTERS: tuple[_ImageFilter, ...] def load_image(filename): ... # Returned dict could be typed as a TypedDict. -def get_img_info(img, image_filter: _ImageFilter = ..., dims: Incomplete | None = ...) -> dict[str, Any]: ... +def get_img_info(img, image_filter: _ImageFilter = "AUTO", dims: Incomplete | None = None) -> dict[str, Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/line_break.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/line_break.pyi index 01d3a3518..27888c13d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/line_break.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/line_break.pyi @@ -53,8 +53,8 @@ class Fragment: def string(self): ... def trim(self, index: int): ... def __eq__(self, other: Fragment) -> bool: ... # type: ignore[override] - def get_width(self, start: int = ..., end: int | None = ..., chars: str | None = ..., initial_cs: bool = ...): ... - def get_character_width(self, character: str, print_sh: bool = ..., initial_cs: bool = ...): ... + def get_width(self, start: int = 0, end: int | None = None, chars: str | None = None, initial_cs: bool = True): ... + def get_character_width(self, character: str, print_sh: bool = False, initial_cs: bool = True): ... class TextLine(NamedTuple): fragments: tuple[Incomplete, ...] @@ -90,7 +90,7 @@ class CurrentLine: number_of_spaces: int space_break_hint: Incomplete hyphen_break_hint: Incomplete - def __init__(self, print_sh: bool = ...) -> None: ... + def __init__(self, print_sh: bool = False) -> None: ... def add_character( self, character: str, @@ -101,7 +101,7 @@ class CurrentLine: original_character_index: int, url: str | None = None, ): ... - def manual_break(self, justify: bool = ..., trailing_nl: bool = ...): ... + def manual_break(self, justify: bool = False, trailing_nl: bool = False): ... def automatic_break_possible(self): ... def automatic_break(self, justify: bool): ... @@ -112,5 +112,5 @@ class MultiLineBreak: fragment_index: int character_index: int idx_last_forced_break: Incomplete - def __init__(self, styled_text_fragments: Sequence[Fragment], justify: bool = ..., print_sh: bool = ...) -> None: ... - def get_line_of_given_width(self, maximum_width: float, wordsplit: bool = ...): ... + def __init__(self, styled_text_fragments: Sequence[Fragment], justify: bool = False, print_sh: bool = False) -> None: ... + def get_line_of_given_width(self, maximum_width: float, wordsplit: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/outline.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/outline.pyi index 4e57c1d8e..963d2728a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/outline.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/outline.pyi @@ -22,7 +22,7 @@ class OutlineItemDictionary(PDFObject): count: int dest: Destination | None struct_elem: StructElem | None - def __init__(self, title: str, dest: Destination | None = ..., struct_elem: StructElem | None = ...) -> None: ... + def __init__(self, title: str, dest: Destination | None = None, struct_elem: StructElem | None = None) -> None: ... class OutlineDictionary(PDFObject): type: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/output.pyi index 686abcbb4..7dc1776ec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/output.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/output.pyi @@ -31,7 +31,12 @@ class PDFFont(PDFObject): font_descriptor: Incomplete | None c_i_d_to_g_i_d_map: Incomplete | None def __init__( - self, subtype: str, base_font: str, encoding: str | None = ..., d_w: Incomplete | None = ..., w: Incomplete | None = ... + self, + subtype: str, + base_font: str, + encoding: str | None = None, + d_w: Incomplete | None = None, + w: Incomplete | None = None, ) -> None: ... class PDFFontDescriptor(PDFObject): @@ -94,10 +99,10 @@ class PDFCatalog(PDFObject): struct_tree_root: Incomplete | None def __init__( self, - lang: str | None = ..., - page_layout: Incomplete | None = ..., - page_mode: Incomplete | None = ..., - viewer_preferences: Incomplete | None = ..., + lang: str | None = None, + page_layout: Incomplete | None = None, + page_mode: Incomplete | None = None, + viewer_preferences: Incomplete | None = None, ) -> None: ... class PDFResources(PDFObject): @@ -135,9 +140,9 @@ class PDFXObject(PDFContentStream): height, color_space, bits_per_component, - img_filter: str | None = ..., - decode: Incomplete | None = ..., - decode_parms: Incomplete | None = ..., + img_filter: str | None = None, + decode: Incomplete | None = None, + decode_parms: Incomplete | None = None, ) -> None: ... class PDFPage(PDFObject): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/prefs.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/prefs.pyi index 2ec95cd79..8317b3434 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/prefs.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/prefs.pyi @@ -9,12 +9,12 @@ class ViewerPreferences: display_doc_title: bool def __init__( self, - hide_toolbar: bool = ..., - hide_menubar: bool = ..., - hide_window_u_i: bool = ..., - fit_window: bool = ..., - center_window: bool = ..., - display_doc_title: bool = ..., + hide_toolbar: bool = False, + hide_menubar: bool = False, + hide_window_u_i: bool = False, + fit_window: bool = False, + center_window: bool = False, + display_doc_title: bool = False, non_full_screen_page_mode: PageMode | str = ..., ) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/recorder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/recorder.pyi index 9d73e9fc0..2588eef8e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/recorder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/recorder.pyi @@ -3,7 +3,7 @@ from typing import Any class FPDFRecorder: pdf: Any accept_page_break: bool - def __init__(self, pdf, accept_page_break: bool = ...) -> None: ... + def __init__(self, pdf, accept_page_break: bool = True) -> None: ... def __getattr__(self, name: str): ... def rewind(self) -> None: ... def replay(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/sign.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/sign.pyi index e6878ea81..8130207e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/sign.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/sign.pyi @@ -12,10 +12,10 @@ class Signature: contents: str def __init__( self, - contact_info: Incomplete | None = ..., - location: Incomplete | None = ..., - m: Incomplete | None = ..., - reason: Incomplete | None = ..., + contact_info: Incomplete | None = None, + location: Incomplete | None = None, + m: Incomplete | None = None, + reason: Incomplete | None = None, ) -> None: ... def serialize(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/structure_tree.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/structure_tree.pyi index 2aec226f5..039e91771 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/structure_tree.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/structure_tree.pyi @@ -29,9 +29,9 @@ class StructElem(PDFObject): struct_type: str, parent: PDFObject, kids: Iterable[int] | Iterable[StructElem], - page_number: int | None = ..., - title: str | None = ..., - alt: str | None = ..., + page_number: int | None = None, + title: str | None = None, + alt: str | None = None, ) -> None: ... def page_number(self) -> int | None: ... @@ -41,7 +41,7 @@ class StructureTreeBuilder: struct_elem_per_mc: Incomplete def __init__(self) -> None: ... def add_marked_content( - self, page_number: int, struct_type: str, mcid: int | None = ..., title: str | None = ..., alt_text: str | None = ... + self, page_number: int, struct_type: str, mcid: int | None = None, title: str | None = None, alt_text: str | None = None ) -> tuple[Incomplete, Incomplete]: ... def next_mcid_for_page(self, page_number: int) -> int: ... def empty(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/svg.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/svg.pyi index 0d4c9cb43..82f18d4a9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/svg.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/svg.pyi @@ -20,8 +20,8 @@ relative_length_units: set[str] absolute_length_units: dict[str, int] angle_units: dict[str, float] -def resolve_length(length_str, default_unit: str = ...): ... -def resolve_angle(angle_str, default_unit: str = ...): ... +def resolve_length(length_str, default_unit: str = "pt"): ... +def resolve_angle(angle_str, default_unit: str = "deg"): ... def xmlns(space, name): ... def xmlns_lookup(space, *names): ... @@ -68,7 +68,7 @@ def svg_path_converter(pdf_path: PaintedPath, svg_path: str) -> None: ... class SVGObject: @classmethod - def from_file(cls, filename, *args, encoding: str = ..., **kwargs): ... + def from_file(cls, filename, *args, encoding: str = "utf-8", **kwargs): ... cross_references: Incomplete def __init__(self, svg_text) -> None: ... preserve_ar: Incomplete @@ -78,12 +78,14 @@ class SVGObject: def extract_shape_info(self, root_tag) -> None: ... base_group: Incomplete def convert_graphics(self, root_tag) -> None: ... - def transform_to_page_viewport(self, pdf, align_viewbox: bool = ...): ... - def transform_to_rect_viewport(self, scale, width, height, align_viewbox: bool = ..., ignore_svg_top_attrs: bool = ...): ... + def transform_to_page_viewport(self, pdf, align_viewbox: bool = True): ... + def transform_to_rect_viewport( + self, scale, width, height, align_viewbox: bool = True, ignore_svg_top_attrs: bool = False + ): ... def draw_to_page( - self, pdf, x: Incomplete | None = ..., y: Incomplete | None = ..., debug_stream: Incomplete | None = ... + self, pdf, x: Incomplete | None = None, y: Incomplete | None = None, debug_stream: Incomplete | None = None ) -> None: ... def handle_defs(self, defs) -> None: ... def build_xref(self, xref): ... - def build_group(self, group, pdf_group: Incomplete | None = ...): ... + def build_group(self, group, pdf_group: Incomplete | None = None): ... def build_path(self, path): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/syntax.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/syntax.pyi index bff2ec0f0..7e65e3b7c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/syntax.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/syntax.pyi @@ -11,11 +11,11 @@ _T = TypeVar("_T") def clear_empty_fields(d): ... def create_dictionary_string( dict_, - open_dict: str = ..., - close_dict: str = ..., - field_join: str = ..., - key_value_join: str = ..., - has_empty_fields: bool = ..., + open_dict: str = "<<", + close_dict: str = ">>", + field_join: str = "\n", + key_value_join: str = " ", + has_empty_fields: bool = False, ): ... def create_list_string(list_): ... def iobj_ref(n): ... @@ -37,13 +37,13 @@ class PDFObject: def id(self, n: int) -> None: ... @property def ref(self) -> str: ... - def serialize(self, obj_dict: Incomplete | None = ..., _security_handler: StandardSecurityHandler | None = None) -> str: ... + def serialize(self, obj_dict: Incomplete | None = None, _security_handler: StandardSecurityHandler | None = None) -> str: ... def content_stream(self) -> bytes: ... class PDFContentStream(PDFObject): filter: Name | None length: int - def __init__(self, contents: bytes, compress: bool = ...) -> None: ... + def __init__(self, contents: bytes, compress: bool = False) -> None: ... def encrypt(self, security_handler: StandardSecurityHandler) -> None: ... def build_obj_dict(key_values: SupportsItems[str, Incomplete]) -> dict[str, str]: ... @@ -66,5 +66,5 @@ class DestinationXYZ(Destination): left: float zoom: float | Literal["null"] page_ref: Incomplete | None - def __init__(self, page: int, top: float, left: float = ..., zoom: float | Literal["null"] = ...) -> None: ... + def __init__(self, page: int, top: float, left: float = 0, zoom: float | Literal["null"] = "null") -> None: ... def serialize(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/template.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/template.pyi index c0546012e..12addfb78 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/template.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/template.pyi @@ -10,31 +10,31 @@ class FlexTemplate: splitting_pdf: Any handlers: Any texts: Any - def __init__(self, pdf, elements: Incomplete | None = ...) -> None: ... + def __init__(self, pdf, elements: Incomplete | None = None) -> None: ... elements: Any keys: Any def load_elements(self, elements) -> None: ... - def parse_csv(self, infile, delimiter: str = ..., decimal_sep: str = ..., encoding: Incomplete | None = ...): ... + def parse_csv(self, infile, delimiter: str = ",", decimal_sep: str = ".", encoding: Incomplete | None = None): ... def __setitem__(self, name, value) -> None: ... set: Any def __contains__(self, name): ... def __getitem__(self, name): ... def split_multicell(self, text, element_name): ... - def render(self, offsetx: float = ..., offsety: float = ..., rotate: float = ..., scale: float = ...): ... + def render(self, offsetx: float = 0.0, offsety: float = 0.0, rotate: float = 0.0, scale: float = 1.0): ... class Template(FlexTemplate): def __init__( self, - infile: Incomplete | None = ..., - elements: Incomplete | None = ..., - format: str = ..., - orientation: str = ..., - unit: str = ..., - title: str = ..., - author: str = ..., - subject: str = ..., - creator: str = ..., - keywords: str = ..., + infile: Incomplete | None = None, + elements: Incomplete | None = None, + format: str = "A4", + orientation: str = "portrait", + unit: str = "mm", + title: str = "", + author: str = "", + subject: str = "", + creator: str = "", + keywords: str = "", ) -> None: ... def add_page(self) -> None: ... - def render(self, outfile: Incomplete | None = ..., dest: Incomplete | None = ...) -> None: ... # type: ignore[override] + def render(self, outfile: Incomplete | None = None, dest: Incomplete | None = None) -> None: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/transitions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/transitions.pyi index 5180d148a..b10df4bd6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/transitions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/transitions.pyi @@ -37,7 +37,7 @@ class GlitterTransition(Transition): class FlyTransition(Transition): dimension: Literal["H", "V"] direction: Literal[0, 270] | None - def __init__(self, dimension: Literal["H", "V"], direction: Literal[0, 270] | None = ...) -> None: ... + def __init__(self, dimension: Literal["H", "V"], direction: Literal[0, 270] | None = None) -> None: ... def serialize(self) -> str: ... class PushTransition(Transition): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/util.pyi index 805a44c63..7b33a2bce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/util.pyi @@ -6,7 +6,7 @@ from typing_extensions import Literal, TypeAlias _Unit: TypeAlias = Literal["pt", "mm", "cm", "in"] def buffer_subst(buffer: bytearray, placeholder: str, value: str) -> bytearray: ... -def format_date(date: datetime.datetime, with_tz: bool = ...) -> str: ... +def format_date(date: datetime.datetime, with_tz: bool = False) -> str: ... def enclose_in_parens(s: str) -> str: ... def escape_parens(s): ... def b(s): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/model.pyi b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/model.pyi index 8a8dc1809..1d272f020 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/model.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/model.pyi @@ -66,7 +66,7 @@ def make_connection(*args, **kwargs) -> NoReturn: ... class ModelAttribute: ... class _BaseValue(_NotEqualMixin): - b_val: object = ... + b_val: object def __init__(self, b_val) -> None: ... def __eq__(self, other) -> bool: ... def __hash__(self) -> int: ... @@ -110,7 +110,7 @@ class FloatProperty(Property): def __get__(self, entity: Model, unused_cls: type[Model] | None = ...) -> float | list[float] | None: ... class _CompressedValue(bytes): - z_val: bytes = ... + z_val: bytes def __init__(self, z_val: bytes) -> None: ... def __eq__(self, other: object) -> bool: ... def __hash__(self) -> NoReturn: ... @@ -249,7 +249,7 @@ class MetaModel(type): def __init__(cls, name: str, bases, classdict) -> None: ... class Model(_NotEqualMixin, metaclass=MetaModel): - key: ModelKey = ... + key: ModelKey def __init__(_self, **kwargs) -> None: ... def __hash__(self) -> NoReturn: ... def __eq__(self, other: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi index 51216e873..c44b9e9d0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi @@ -120,8 +120,8 @@ class ExecuteManyErrorEntry(Error): rownumber: int def Date(year: int, month: int, day: int) -> date: ... -def Time(hour: int, minute: int, second: int, millisecond: int = ...) -> time: ... -def Timestamp(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int = ...) -> datetime: ... +def Time(hour: int, minute: int, second: int, millisecond: int = 0) -> time: ... +def Timestamp(year: int, month: int, day: int, hour: int, minute: int, second: int, millisecond: int = 0) -> datetime: ... def DateFromTicks(ticks: float) -> date: ... def TimeFromTicks(ticks: float) -> time: ... def TimestampFromTicks(ticks: float) -> datetime: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_ihatexml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_ihatexml.pyi index 60edb7028..ea95b52c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_ihatexml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_ihatexml.pyi @@ -37,14 +37,14 @@ class InfosetFilter: replaceCache: Any def __init__( self, - dropXmlnsLocalName: bool = ..., - dropXmlnsAttrNs: bool = ..., - preventDoubleDashComments: bool = ..., - preventDashAtCommentEnd: bool = ..., - replaceFormFeedCharacters: bool = ..., - preventSingleQuotePubid: bool = ..., + dropXmlnsLocalName: bool = False, + dropXmlnsAttrNs: bool = False, + preventDoubleDashComments: bool = False, + preventDashAtCommentEnd: bool = False, + replaceFormFeedCharacters: bool = True, + preventSingleQuotePubid: bool = False, ) -> None: ... - def coerceAttribute(self, name, namespace: Incomplete | None = ...): ... + def coerceAttribute(self, name, namespace: Incomplete | None = None): ... def coerceElement(self, name): ... def coerceComment(self, data): ... def coerceCharacters(self, data): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_inputstream.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_inputstream.pyi index 000193386..cb3b9c7f6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_inputstream.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_inputstream.pyi @@ -38,10 +38,10 @@ class HTMLUnicodeInputStream: def openStream(self, source): ... def position(self): ... def char(self): ... - def readChunk(self, chunkSize: Incomplete | None = ...): ... + def readChunk(self, chunkSize: Incomplete | None = None): ... def characterErrorsUCS4(self, data) -> None: ... def characterErrorsUCS2(self, data) -> None: ... - def charsUntil(self, characters, opposite: bool = ...): ... + def charsUntil(self, characters, opposite: bool = False): ... def unget(self, char) -> None: ... class HTMLBinaryInputStream(HTMLUnicodeInputStream): @@ -57,17 +57,17 @@ class HTMLBinaryInputStream(HTMLUnicodeInputStream): def __init__( self, source, - override_encoding: Incomplete | None = ..., - transport_encoding: Incomplete | None = ..., - same_origin_parent_encoding: Incomplete | None = ..., - likely_encoding: Incomplete | None = ..., - default_encoding: str = ..., - useChardet: bool = ..., + override_encoding: Incomplete | None = None, + transport_encoding: Incomplete | None = None, + same_origin_parent_encoding: Incomplete | None = None, + likely_encoding: Incomplete | None = None, + default_encoding: str = "windows-1252", + useChardet: bool = True, ) -> None: ... dataStream: Any def reset(self) -> None: ... def openStream(self, source): ... - def determineEncoding(self, chardet: bool = ...): ... + def determineEncoding(self, chardet: bool = True): ... def changeEncoding(self, newEncoding) -> None: ... def detectBOM(self): ... def detectEncodingMeta(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_tokenizer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_tokenizer.pyi index 639a4ca9a..f9685a0dd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_tokenizer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_tokenizer.pyi @@ -12,11 +12,11 @@ class HTMLTokenizer: state: Any escape: bool currentToken: Any - def __init__(self, stream, parser: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, stream, parser: Incomplete | None = None, **kwargs) -> None: ... tokenQueue: Any def __iter__(self): ... def consumeNumberEntity(self, isHex): ... - def consumeEntity(self, allowedChar: Incomplete | None = ..., fromAttribute: bool = ...) -> None: ... + def consumeEntity(self, allowedChar: Incomplete | None = None, fromAttribute: bool = False) -> None: ... def processEntityInAttribute(self, allowedChar) -> None: ... def emitCurrentToken(self) -> None: ... def dataState(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_trie/_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_trie/_base.pyi index 3b0773a7d..1d88b9a60 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_trie/_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_trie/_base.pyi @@ -4,7 +4,7 @@ from collections.abc import Mapping from typing import Any class Trie(Mapping[Any, Any], metaclass=ABCMeta): - def keys(self, prefix: Incomplete | None = ...): ... + def keys(self, prefix: Incomplete | None = None): ... def has_keys_with_prefix(self, prefix): ... def longest_prefix(self, prefix): ... def longest_prefix_item(self, prefix): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_trie/py.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_trie/py.pyi index ec50ef0d5..03d9a4687 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_trie/py.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_trie/py.pyi @@ -8,5 +8,5 @@ class Trie(ABCTrie): def __len__(self) -> int: ... def __iter__(self): ... def __getitem__(self, key): ... - def keys(self, prefix: Incomplete | None = ...): ... + def keys(self, prefix: Incomplete | None = None): ... def has_keys_with_prefix(self, prefix): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_utils.pyi index cfd97de7e..50ee4e5d0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/_utils.pyi @@ -6,9 +6,9 @@ supports_lone_surrogates: bool class MethodDispatcher(dict[Any, Any]): default: Any - def __init__(self, items=...) -> None: ... + def __init__(self, items=()) -> None: ... def __getitem__(self, key): ... - def __get__(self, instance, owner: Incomplete | None = ...): ... + def __get__(self, instance, owner: Incomplete | None = None): ... class BoundMethodDispatcher(Mapping[Any, Any]): instance: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/filters/lint.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/filters/lint.pyi index 5803963a1..9aba9592a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/filters/lint.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/filters/lint.pyi @@ -4,5 +4,5 @@ from . import base class Filter(base.Filter): require_matching_tags: Any - def __init__(self, source, require_matching_tags: bool = ...) -> None: ... + def __init__(self, source, require_matching_tags: bool = True) -> None: ... def __iter__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/html5parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/html5parser.pyi index 79dc56c0d..4f08a2e2c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/html5parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/html5parser.pyi @@ -6,15 +6,15 @@ from xml.etree.ElementTree import Element @overload def parse( doc: str | bytes | SupportsRead[str] | SupportsRead[bytes], - treebuilder: Literal["etree"] = ..., - namespaceHTMLElements: bool = ..., + treebuilder: Literal["etree"] = "etree", + namespaceHTMLElements: bool = True, **kwargs, ) -> Element: ... @overload def parse( - doc: str | bytes | SupportsRead[str] | SupportsRead[bytes], treebuilder: str, namespaceHTMLElements: bool = ..., **kwargs + doc: str | bytes | SupportsRead[str] | SupportsRead[bytes], treebuilder: str, namespaceHTMLElements: bool = True, **kwargs ): ... -def parseFragment(doc, container: str = ..., treebuilder: str = ..., namespaceHTMLElements: bool = ..., **kwargs): ... +def parseFragment(doc, container: str = "div", treebuilder: str = "etree", namespaceHTMLElements: bool = True, **kwargs): ... def method_decorator_metaclass(function): ... class HTMLParser: @@ -23,7 +23,7 @@ class HTMLParser: errors: Any phases: Any def __init__( - self, tree: Incomplete | None = ..., strict: bool = ..., namespaceHTMLElements: bool = ..., debug: bool = ... + self, tree: Incomplete | None = None, strict: bool = False, namespaceHTMLElements: bool = True, debug: bool = False ) -> None: ... firstStartTag: bool log: Any @@ -41,7 +41,7 @@ class HTMLParser: def mainLoop(self) -> None: ... def parse(self, stream, scripting: bool = ..., **kwargs): ... def parseFragment(self, stream, *args, **kwargs): ... - def parseError(self, errorcode: str = ..., datavars: Incomplete | None = ...) -> None: ... + def parseError(self, errorcode: str = "XXX-undefined-error", datavars: Incomplete | None = None) -> None: ... def adjustMathMLAttributes(self, token) -> None: ... def adjustSVGAttributes(self, token) -> None: ... def adjustForeignAttributes(self, token) -> None: ... @@ -52,6 +52,6 @@ class HTMLParser: def getPhases(debug): ... def adjust_attributes(token, replacements) -> None: ... -def impliedTagToken(name, type: str = ..., attributes: Incomplete | None = ..., selfClosing: bool = ...): ... +def impliedTagToken(name, type: str = "EndTag", attributes: Incomplete | None = None, selfClosing: bool = False): ... class ParseError(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/serializer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/serializer.pyi index dc505f247..5e230a05c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/serializer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/serializer.pyi @@ -3,7 +3,7 @@ from typing import Any, overload def htmlentityreplace_errors(exc: Exception) -> tuple[str | bytes, int]: ... @overload -def serialize(input, tree: str = ..., encoding: None = ..., **serializer_opts) -> str: ... +def serialize(input, tree: str = "etree", encoding: None = None, **serializer_opts) -> str: ... @overload def serialize(input, tree: str, encoding: str, **serializer_opts) -> bytes: ... @overload @@ -31,8 +31,8 @@ class HTMLSerializer: def encode(self, string): ... def encodeStrict(self, string): ... encoding: Any - def serialize(self, treewalker, encoding: Incomplete | None = ...) -> None: ... - def render(self, treewalker, encoding: Incomplete | None = ...): ... - def serializeError(self, data: str = ...) -> None: ... + def serialize(self, treewalker, encoding: Incomplete | None = None) -> None: ... + def render(self, treewalker, encoding: Incomplete | None = None): ... + def serializeError(self, data: str = "XXX ERROR MESSAGE NEEDED") -> None: ... class SerializeError(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/__init__.pyi index f577600b4..b8bc40a63 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/__init__.pyi @@ -3,4 +3,4 @@ from typing import Any treeBuilderCache: Any -def getTreeBuilder(treeType, implementation: Incomplete | None = ..., **kwargs): ... +def getTreeBuilder(treeType, implementation: Incomplete | None = None, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/base.pyi index b1623bae6..eae192172 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/base.pyi @@ -12,7 +12,7 @@ class Node: childNodes: Any def __init__(self, name) -> None: ... def appendChild(self, node) -> None: ... - def insertText(self, data, insertBefore: Incomplete | None = ...) -> None: ... + def insertText(self, data, insertBefore: Incomplete | None = None) -> None: ... def insertBefore(self, node, refNode) -> None: ... def removeChild(self, node) -> None: ... def reparentChildren(self, newParent) -> None: ... @@ -38,19 +38,19 @@ class TreeBuilder: insertFromTable: bool document: Any def reset(self) -> None: ... - def elementInScope(self, target, variant: Incomplete | None = ...): ... + def elementInScope(self, target, variant: Incomplete | None = None): ... def reconstructActiveFormattingElements(self) -> None: ... def clearActiveFormattingElements(self) -> None: ... def elementInActiveFormattingElements(self, name): ... def insertRoot(self, token) -> None: ... def insertDoctype(self, token) -> None: ... - def insertComment(self, token, parent: Incomplete | None = ...) -> None: ... + def insertComment(self, token, parent: Incomplete | None = None) -> None: ... def createElement(self, token): ... def insertElementNormal(self, token): ... def insertElementTable(self, token): ... - def insertText(self, data, parent: Incomplete | None = ...) -> None: ... + def insertText(self, data, parent: Incomplete | None = None) -> None: ... def getTableMisnestedNodePosition(self): ... - def generateImpliedEndTags(self, exclude: Incomplete | None = ...) -> None: ... + def generateImpliedEndTags(self, exclude: Incomplete | None = None) -> None: ... def getDocument(self): ... def getFragment(self): ... def testSerializer(self, node) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/etree.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/etree.pyi index f4b8e54b5..948651dab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/etree.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/etree.pyi @@ -2,6 +2,6 @@ from typing import Any tag_regexp: Any -def getETreeBuilder(ElementTreeImplementation, fullTree: bool = ...): ... +def getETreeBuilder(ElementTreeImplementation, fullTree: bool = False): ... getETreeModule: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/etree_lxml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/etree_lxml.pyi index 1f76a6fa2..018bf60a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/etree_lxml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treebuilders/etree_lxml.pyi @@ -30,7 +30,7 @@ class TreeBuilder(base.TreeBuilder): fragmentClass: Any implementation: Any namespaceHTMLElements: Any - def __init__(self, namespaceHTMLElements, fullTree: bool = ...): ... + def __init__(self, namespaceHTMLElements, fullTree: bool = False): ... insertComment: Any initial_comments: Any doctype: Any @@ -39,7 +39,7 @@ class TreeBuilder(base.TreeBuilder): def getDocument(self): ... def getFragment(self): ... def insertDoctype(self, token) -> None: ... - def insertCommentInitial(self, data, parent: Incomplete | None = ...) -> None: ... - def insertCommentMain(self, data, parent: Incomplete | None = ...) -> None: ... + def insertCommentInitial(self, data, parent: Incomplete | None = None) -> None: ... + def insertCommentMain(self, data, parent: Incomplete | None = None) -> None: ... document: Any def insertRoot(self, token) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treewalkers/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treewalkers/__init__.pyi index 0eda70032..8246ff05a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treewalkers/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treewalkers/__init__.pyi @@ -1,4 +1,4 @@ from _typeshed import Incomplete -def getTreeWalker(treeType, implementation: Incomplete | None = ..., **kwargs): ... +def getTreeWalker(treeType, implementation: Incomplete | None = None, **kwargs): ... def pprint(walker): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treewalkers/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treewalkers/base.pyi index 919b22011..87fdc9447 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treewalkers/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/html5lib/treewalkers/base.pyi @@ -14,12 +14,12 @@ class TreeWalker: def __init__(self, tree) -> None: ... def __iter__(self): ... def error(self, msg): ... - def emptyTag(self, namespace, name, attrs, hasChildren: bool = ...) -> None: ... + def emptyTag(self, namespace, name, attrs, hasChildren: bool = False) -> None: ... def startTag(self, namespace, name, attrs): ... def endTag(self, namespace, name): ... def text(self, data) -> None: ... def comment(self, data): ... - def doctype(self, name, publicId: Incomplete | None = ..., systemId: Incomplete | None = ...): ... + def doctype(self, name, publicId: Incomplete | None = None, systemId: Incomplete | None = None): ... def entity(self, name): ... def unknown(self, nodeType): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/httplib2/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/METADATA.toml index e22598a66..035554b96 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/httplib2/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/METADATA.toml @@ -1 +1 @@ -version = "0.21.*" +version = "0.22.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/httplib2/httplib2/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/httplib2/__init__.pyi index 485c09178..a8cc8e90d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/httplib2/httplib2/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/httplib2/__init__.pyi @@ -41,7 +41,7 @@ class DigestAuthentication(Authentication): challenge: Any A1: Any def __init__(self, credentials, host, request_uri, headers, response, content, http) -> None: ... - def request(self, method, request_uri, headers, content, cnonce: Incomplete | None = ...): ... + def request(self, method, request_uri, headers, content, cnonce: Incomplete | None = None): ... def response(self, response, content): ... class HmacDigestAuthentication(Authentication): @@ -74,7 +74,7 @@ class FileCache: class Credentials: credentials: Any def __init__(self) -> None: ... - def add(self, name, password, domain: str = ...) -> None: ... + def add(self, name, password, domain: str = "") -> None: ... def clear(self) -> None: ... def iter(self, domain) -> Generator[tuple[str, str], None, None]: ... @@ -91,10 +91,10 @@ class ProxyInfo: proxy_type, proxy_host, proxy_port, - proxy_rdns: bool = ..., - proxy_user: Incomplete | None = ..., - proxy_pass: Incomplete | None = ..., - proxy_headers: Incomplete | None = ..., + proxy_rdns: bool = True, + proxy_user: Incomplete | None = None, + proxy_pass: Incomplete | None = None, + proxy_headers: Incomplete | None = None, ) -> None: ... def astuple(self): ... def isgood(self): ... @@ -104,7 +104,7 @@ class ProxyInfo: class HTTPConnectionWithTimeout(http.client.HTTPConnection): proxy_info: Any def __init__( - self, host, port: Incomplete | None = ..., timeout: Incomplete | None = ..., proxy_info: Incomplete | None = ... + self, host, port: Incomplete | None = None, timeout: Incomplete | None = None, proxy_info: Incomplete | None = None ) -> None: ... sock: Any def connect(self) -> None: ... @@ -119,16 +119,16 @@ class HTTPSConnectionWithTimeout(http.client.HTTPSConnection): def __init__( self, host, - port: Incomplete | None = ..., - key_file: Incomplete | None = ..., - cert_file: Incomplete | None = ..., - timeout: Incomplete | None = ..., - proxy_info: Incomplete | None = ..., - ca_certs: Incomplete | None = ..., - disable_ssl_certificate_validation: bool = ..., - tls_maximum_version: Incomplete | None = ..., - tls_minimum_version: Incomplete | None = ..., - key_password: Incomplete | None = ..., + port: Incomplete | None = None, + key_file: Incomplete | None = None, + cert_file: Incomplete | None = None, + timeout: Incomplete | None = None, + proxy_info: Incomplete | None = None, + ca_certs: Incomplete | None = None, + disable_ssl_certificate_validation: bool = False, + tls_maximum_version: Incomplete | None = None, + tls_minimum_version: Incomplete | None = None, + key_password: Incomplete | None = None, ) -> None: ... sock: Any def connect(self) -> None: ... @@ -155,26 +155,26 @@ class Http: forward_authorization_headers: bool def __init__( self, - cache: Incomplete | None = ..., - timeout: Incomplete | None = ..., + cache: Incomplete | None = None, + timeout: Incomplete | None = None, proxy_info=..., - ca_certs: Incomplete | None = ..., - disable_ssl_certificate_validation: bool = ..., - tls_maximum_version: Incomplete | None = ..., - tls_minimum_version: Incomplete | None = ..., + ca_certs: Incomplete | None = None, + disable_ssl_certificate_validation: bool = False, + tls_maximum_version: Incomplete | None = None, + tls_minimum_version: Incomplete | None = None, ) -> None: ... def close(self) -> None: ... - def add_credentials(self, name, password, domain: str = ...) -> None: ... - def add_certificate(self, key, cert, domain, password: Incomplete | None = ...) -> None: ... + def add_credentials(self, name, password, domain: str = "") -> None: ... + def add_certificate(self, key, cert, domain, password: Incomplete | None = None) -> None: ... def clear_credentials(self) -> None: ... def request( self, uri, - method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - redirections=..., - connection_type: Incomplete | None = ..., + method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + redirections=5, + connection_type: Incomplete | None = None, ): ... class Response(dict[str, Any]): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/httplib2/httplib2/socks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/httplib2/socks.pyi index ab1cff460..25d9b60d5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/httplib2/httplib2/socks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/httplib2/socks.pyi @@ -14,27 +14,27 @@ class Socks4Error(ProxyError): ... class HTTPError(ProxyError): ... def setdefaultproxy( - proxytype: Incomplete | None = ..., - addr: Incomplete | None = ..., - port: Incomplete | None = ..., - rdns: bool = ..., - username: Incomplete | None = ..., - password: Incomplete | None = ..., + proxytype: Incomplete | None = None, + addr: Incomplete | None = None, + port: Incomplete | None = None, + rdns: bool = True, + username: Incomplete | None = None, + password: Incomplete | None = None, ) -> None: ... def wrapmodule(module) -> None: ... class socksocket(socket.socket): - def __init__(self, family=..., type=..., proto: int = ..., _sock: Incomplete | None = ...) -> None: ... + def __init__(self, family=..., type=..., proto: int = 0, _sock: Incomplete | None = None) -> None: ... def sendall(self, content, *args): ... def setproxy( self, - proxytype: Incomplete | None = ..., - addr: Incomplete | None = ..., - port: Incomplete | None = ..., - rdns: bool = ..., - username: Incomplete | None = ..., - password: Incomplete | None = ..., - headers: Incomplete | None = ..., + proxytype: Incomplete | None = None, + addr: Incomplete | None = None, + port: Incomplete | None = None, + rdns: bool = True, + username: Incomplete | None = None, + password: Incomplete | None = None, + headers: Incomplete | None = None, ) -> None: ... def getproxysockname(self): ... def getproxypeername(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/__init__.pyi index 7e7761828..36b34922b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/__init__.pyi @@ -18,15 +18,15 @@ length_size_units: Any time_units: Any def coerce_boolean(value: object) -> bool: ... -def coerce_pattern(value: str | Pattern[str], flags: int = ...) -> Pattern[str]: ... +def coerce_pattern(value: str | Pattern[str], flags: int = 0) -> Pattern[str]: ... def coerce_seconds(value: float | datetime.timedelta) -> float: ... -def format_size(num_bytes: float, keep_width: bool = ..., binary: bool = ...) -> str: ... -def parse_size(size: str, binary: bool = ...) -> int: ... -def format_length(num_metres: float, keep_width: bool = ...) -> str: ... +def format_size(num_bytes: float, keep_width: bool = False, binary: bool = False) -> str: ... +def parse_size(size: str, binary: bool = False) -> int: ... +def format_length(num_metres: float, keep_width: bool = False) -> str: ... def parse_length(length: str) -> float: ... -def format_number(number: float, num_decimals: int = ...) -> str: ... -def round_number(count: float, keep_width: bool = ...) -> str: ... -def format_timespan(num_seconds: float | datetime.timedelta, detailed: bool = ..., max_units: int = ...) -> str: ... +def format_number(number: float, num_decimals: int = 2) -> str: ... +def round_number(count: float, keep_width: bool = False) -> str: ... +def format_timespan(num_seconds: float | datetime.timedelta, detailed: bool = False, max_units: int = 3) -> str: ... def parse_timespan(timespan: str) -> float: ... def parse_date(datestring: str) -> tuple[int, int, int, int, int, int]: ... def format_path(pathname: str) -> str: ... @@ -37,13 +37,13 @@ class Timer: resumable: bool start_time: float total_time: float - def __init__(self, start_time: Incomplete | None = ..., resumable: bool = ...) -> None: ... + def __init__(self, start_time: Incomplete | None = None, resumable: bool = False) -> None: ... def __enter__(self): ... def __exit__( self, - exc_type: type[BaseException] | None = ..., - exc_value: BaseException | None = ..., - traceback: TracebackType | None = ..., + exc_type: type[BaseException] | None = None, + exc_value: BaseException | None = None, + traceback: TracebackType | None = None, ) -> None: ... def sleep(self, seconds: float) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/case.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/case.pyi index 1ab0b0173..4240cf2ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/case.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/case.pyi @@ -8,14 +8,14 @@ _KT = TypeVar("_KT") _VT = TypeVar("_VT") class CaseInsensitiveDict(OrderedDict[_KT, _VT], Generic[_KT, _VT]): - def __init__(self, other: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, other: Incomplete | None = None, **kw) -> None: ... def coerce_key(self, key): ... @classmethod - def fromkeys(cls, iterable, value: Incomplete | None = ...): ... - def get(self, key, default: Incomplete | None = ...): ... - def pop(self, key, default: Incomplete | None = ...): ... - def setdefault(self, key, default: Incomplete | None = ...): ... - def update(self, other: Incomplete | None = ..., **kw) -> None: ... # type: ignore[override] + def fromkeys(cls, iterable, value: Incomplete | None = None): ... + def get(self, key, default: Incomplete | None = None): ... + def pop(self, key, default: Incomplete | None = None): ... + def setdefault(self, key, default: Incomplete | None = None): ... + def update(self, other: Incomplete | None = None, **kw) -> None: ... # type: ignore[override] def __contains__(self, key): ... def __delitem__(self, key) -> None: ... def __getitem__(self, key): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/cli.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/cli.pyi index a97befdcb..9a3652dd9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/cli.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/cli.pyi @@ -10,4 +10,4 @@ def print_formatted_timespan(value) -> None: ... def print_parsed_length(value) -> None: ... def print_parsed_size(value) -> None: ... def demonstrate_ansi_formatting() -> None: ... -def demonstrate_256_colors(i, j, group: Incomplete | None = ...) -> None: ... +def demonstrate_256_colors(i, j, group: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/prompts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/prompts.pyi index 909fa611b..738ac4d33 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/prompts.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/prompts.pyi @@ -4,11 +4,11 @@ from typing import Any MAX_ATTEMPTS: int logger: Any -def prompt_for_confirmation(question, default: Incomplete | None = ..., padding: bool = ...): ... -def prompt_for_choice(choices, default: Incomplete | None = ..., padding: bool = ...): ... -def prompt_for_input(question, default: Incomplete | None = ..., padding: bool = ..., strip: bool = ...): ... +def prompt_for_confirmation(question, default: Incomplete | None = None, padding: bool = True): ... +def prompt_for_choice(choices, default: Incomplete | None = None, padding: bool = True): ... +def prompt_for_input(question, default: Incomplete | None = None, padding: bool = True, strip: bool = True): ... def prepare_prompt_text(prompt_text, **options): ... def prepare_friendly_prompts() -> None: ... -def retry_limit(limit=...) -> None: ... +def retry_limit(limit=10) -> None: ... class TooManyInvalidReplies(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/sphinx.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/sphinx.pyi index eb6a63543..a84ebe5c5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/sphinx.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/sphinx.pyi @@ -8,8 +8,8 @@ def enable_man_role(app) -> None: ... def enable_pypi_role(app) -> None: ... def enable_special_methods(app) -> None: ... def enable_usage_formatting(app) -> None: ... -def man_role(role, rawtext, text, lineno, inliner, options=..., content=...): ... -def pypi_role(role, rawtext, text, lineno, inliner, options=..., content=...): ... +def man_role(role, rawtext, text, lineno, inliner, options={}, content=[]): ... +def pypi_role(role, rawtext, text, lineno, inliner, options={}, content=[]): ... def setup(app): ... def special_methods_callback(app, what, name, obj, skip, options): ... def usage_message_callback(app, what, name, obj, options, lines) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/tables.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/tables.pyi index 658a58327..b53900ef3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/tables.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/tables.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete def format_smart_table(data, column_names): ... -def format_pretty_table(data, column_names: Incomplete | None = ..., horizontal_bar: str = ..., vertical_bar: str = ...): ... +def format_pretty_table(data, column_names: Incomplete | None = None, horizontal_bar: str = "-", vertical_bar: str = "|"): ... def format_robust_table(data, column_names): ... -def format_rst_table(data, column_names: Incomplete | None = ...): ... +def format_rst_table(data, column_names: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/__init__.pyi index f7c26eaa4..67e76a28b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/__init__.pyi @@ -15,24 +15,24 @@ DEFAULT_COLUMNS: int DEFAULT_ENCODING: str HIGHLIGHT_COLOR: Any -def ansi_strip(text, readline_hints: bool = ...): ... +def ansi_strip(text, readline_hints: bool = True): ... def ansi_style(**kw): ... def ansi_width(text): ... def ansi_wrap(text, **kw): ... def auto_encode(stream, text, *args, **kw) -> None: ... def clean_terminal_output(text): ... -def connected_to_terminal(stream: Incomplete | None = ...): ... +def connected_to_terminal(stream: Incomplete | None = None): ... def enable_ansi_support(): ... def find_terminal_size(): ... def find_terminal_size_using_ioctl(stream): ... def find_terminal_size_using_stty(): ... -def get_pager_command(text: Incomplete | None = ...): ... +def get_pager_command(text: Incomplete | None = None): ... def have_windows_native_ansi_support(): ... def message(text, *args, **kw) -> None: ... def output(text, *args, **kw) -> None: ... def readline_strip(expr): ... def readline_wrap(expr): ... -def show_pager(formatted_text, encoding=...) -> None: ... -def terminal_supports_colors(stream: Incomplete | None = ...): ... +def show_pager(formatted_text, encoding="UTF-8") -> None: ... +def terminal_supports_colors(stream: Incomplete | None = None): ... def usage(usage_text) -> None: ... def warning(text, *args, **kw) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/html.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/html.pyi index 2525fc4ff..79286ed00 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/html.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/html.pyi @@ -3,7 +3,7 @@ from typing import Any from humanfriendly.compat import HTMLParser -def html_to_ansi(data, callback: Incomplete | None = ...): ... +def html_to_ansi(data, callback: Incomplete | None = None): ... class HTMLConverter(HTMLParser): BLOCK_TAGS: Any @@ -15,7 +15,7 @@ class HTMLConverter(HTMLParser): def current_style(self): ... stack: Any def close(self) -> None: ... - def emit_style(self, style: Incomplete | None = ...) -> None: ... + def emit_style(self, style: Incomplete | None = None) -> None: ... def handle_charref(self, value) -> None: ... link_text: Any def handle_data(self, data) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/spinners.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/spinners.pyi index 307201e22..5c342416f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/spinners.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/terminal/spinners.pyi @@ -16,15 +16,15 @@ class Spinner: counter: int last_update: int def __init__(self, **options) -> None: ... - def step(self, progress: int = ..., label: Incomplete | None = ...) -> None: ... + def step(self, progress: int = 0, label: Incomplete | None = None) -> None: ... def sleep(self) -> None: ... def clear(self) -> None: ... def __enter__(self): ... def __exit__( self, - exc_type: type[BaseException] | None = ..., - exc_value: BaseException | None = ..., - traceback: TracebackType | None = ..., + exc_type: type[BaseException] | None = None, + exc_value: BaseException | None = None, + traceback: TracebackType | None = None, ) -> None: ... class AutomaticSpinner: @@ -32,11 +32,11 @@ class AutomaticSpinner: show_time: Any shutdown_event: Any subprocess: Any - def __init__(self, label, show_time: bool = ...) -> None: ... + def __init__(self, label, show_time: bool = True) -> None: ... def __enter__(self) -> None: ... def __exit__( self, - exc_type: type[BaseException] | None = ..., - exc_value: BaseException | None = ..., - traceback: TracebackType | None = ..., + exc_type: type[BaseException] | None = None, + exc_value: BaseException | None = None, + traceback: TracebackType | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/testing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/testing.pyi index aecfad7ea..8254e6c90 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/testing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/testing.pyi @@ -5,9 +5,9 @@ from typing import Any from humanfriendly.compat import StringIO -def configure_logging(log_level=...) -> None: ... +def configure_logging(log_level=10) -> None: ... def make_dirs(pathname) -> None: ... -def retry(func, timeout: int = ..., exc_type=...): ... +def retry(func, timeout: int = 60, exc_type=...): ... def run_cli(entry_point, *arguments, **options): ... def skip_on_raise(*exc_types): ... def touch(filename) -> None: ... @@ -18,9 +18,9 @@ class ContextManager: def __enter__(self): ... def __exit__( self, - exc_type: type[BaseException] | None = ..., - exc_value: BaseException | None = ..., - traceback: TracebackType | None = ..., + exc_type: type[BaseException] | None = None, + exc_value: BaseException | None = None, + traceback: TracebackType | None = None, ) -> None: ... class PatchedAttribute(ContextManager): @@ -52,7 +52,7 @@ class MockedHomeDirectory(PatchedItem, TemporaryDirectory): class CustomSearchPath(PatchedItem, TemporaryDirectory): isolated_search_path: Any - def __init__(self, isolated: bool = ...) -> None: ... + def __init__(self, isolated: bool = False) -> None: ... patched_value: Any def __enter__(self): ... @property @@ -63,7 +63,7 @@ class MockedProgram(CustomSearchPath): program_returncode: Any program_script: Any program_signal_file: Any - def __init__(self, name, returncode: int = ..., script: Incomplete | None = ...) -> None: ... + def __init__(self, name, returncode: int = 0, script: Incomplete | None = None) -> None: ... def __enter__(self): ... def __exit__(self, *args: object, **kw: object): ... @@ -72,7 +72,7 @@ class CaptureOutput(ContextManager): stdout: Any stderr: Any patched_attributes: Any - def __init__(self, merged: bool = ..., input: str = ..., enabled: bool = ...) -> None: ... + def __init__(self, merged: bool = False, input: str = "", enabled: bool = True) -> None: ... def __enter__(self): ... def get_lines(self): ... def get_text(self): ... @@ -84,4 +84,4 @@ class CaptureBuffer(StringIO): class TestCase(unittest.TestCase): def __init__(self, *args, **kw) -> None: ... - def setUp(self, log_level=...) -> None: ... + def setUp(self, log_level=10) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/text.pyi index 98cf0588e..d368e5101 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/humanfriendly/text.pyi @@ -2,16 +2,16 @@ from _typeshed import Incomplete def compact(text, *args, **kw): ... def compact_empty_lines(text): ... -def concatenate(items, conjunction: str = ..., serial_comma: bool = ...): ... +def concatenate(items, conjunction: str = "and", serial_comma: bool = False): ... def dedent(text, *args, **kw): ... def format(text, *args, **kw): ... -def generate_slug(text, delimiter: str = ...): ... +def generate_slug(text, delimiter: str = "-"): ... def is_empty_line(text): ... def join_lines(text): ... -def pluralize(count, singular, plural: Incomplete | None = ...): ... -def pluralize_raw(count, singular, plural: Incomplete | None = ...): ... -def random_string(length=..., characters=...): ... -def split(text, delimiter: str = ...): ... +def pluralize(count, singular, plural: Incomplete | None = None): ... +def pluralize_raw(count, singular, plural: Incomplete | None = None): ... +def random_string(length=(25, 100), characters=...): ... +def split(text, delimiter: str = ","): ... def split_paragraphs(text): ... def tokenize(text): ... def trim_empty_lines(text): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_async/api_client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_async/api_client.pyi index 5c06e8a7f..7ab0099c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_async/api_client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_async/api_client.pyi @@ -10,11 +10,11 @@ class ApiClientAsync: cookie: Incomplete def __init__( self, - configuration: Incomplete | None = ..., - header_name: Incomplete | None = ..., - header_value: Incomplete | None = ..., - cookie: Incomplete | None = ..., - pool_threads: Incomplete | None = ..., + configuration: Incomplete | None = None, + header_name: Incomplete | None = None, + header_value: Incomplete | None = None, + cookie: Incomplete | None = None, + pool_threads: Incomplete | None = None, **kwargs, ) -> None: ... async def close(self) -> None: ... @@ -31,35 +31,35 @@ class ApiClientAsync: self, resource_path, method, - path_params: Incomplete | None = ..., - query_params: Incomplete | None = ..., - header_params: Incomplete | None = ..., - body: Incomplete | None = ..., - post_params: Incomplete | None = ..., - files: Incomplete | None = ..., - response_type: Incomplete | None = ..., - auth_settings: Incomplete | None = ..., - async_req: Incomplete | None = ..., - _return_http_data_only: Incomplete | None = ..., - collection_formats: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., - urlopen_kw: Incomplete | None = ..., + path_params: Incomplete | None = None, + query_params: Incomplete | None = None, + header_params: Incomplete | None = None, + body: Incomplete | None = None, + post_params: Incomplete | None = None, + files: Incomplete | None = None, + response_type: Incomplete | None = None, + auth_settings: Incomplete | None = None, + async_req: Incomplete | None = None, + _return_http_data_only: Incomplete | None = None, + collection_formats: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, + urlopen_kw: Incomplete | None = None, ): ... def request( self, method, url, - query_params: Incomplete | None = ..., - headers: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + query_params: Incomplete | None = None, + headers: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... def parameters_to_tuples(self, params, collection_formats): ... - def prepare_post_parameters(self, post_params: Incomplete | None = ..., files: Incomplete | None = ...): ... + def prepare_post_parameters(self, post_params: Incomplete | None = None, files: Incomplete | None = None): ... def select_header_accept(self, accepts): ... def select_header_content_type(self, content_types): ... def update_params_for_auth(self, headers, querys, auth_settings) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_async/rest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_async/rest.pyi index 912928e18..667662487 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_async/rest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_async/rest.pyi @@ -8,7 +8,7 @@ class RESTResponseAsync(io.IOBase): data: Incomplete def __init__(self, resp, data) -> None: ... def getheaders(self): ... - def getheader(self, name, default: Incomplete | None = ...): ... + def getheader(self, name, default: Incomplete | None = None): ... class RESTClientObjectAsync: proxy: Incomplete @@ -16,81 +16,81 @@ class RESTClientObjectAsync: allow_redirects: Incomplete max_redirects: Incomplete pool_manager: Incomplete - def __init__(self, configuration, pools_size: int = ..., maxsize: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, configuration, pools_size: int = 4, maxsize: Incomplete | None = None, **kwargs) -> None: ... async def close(self) -> None: ... async def request( self, method, url, - query_params: Incomplete | None = ..., - headers: Incomplete | None = ..., - body: Incomplete | None = ..., - post_params: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + query_params: Incomplete | None = None, + headers: Incomplete | None = None, + body: Incomplete | None = None, + post_params: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, ): ... async def GET( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, ): ... async def HEAD( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, ): ... async def OPTIONS( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, ): ... async def DELETE( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, ): ... async def POST( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, ): ... async def PUT( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, ): ... async def PATCH( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_sync/api_client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_sync/api_client.pyi index 379ea2e21..04033438d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_sync/api_client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_sync/api_client.pyi @@ -10,12 +10,12 @@ class ApiClient: cookie: Incomplete def __init__( self, - configuration: Incomplete | None = ..., - header_name: Incomplete | None = ..., - header_value: Incomplete | None = ..., - cookie: Incomplete | None = ..., - pool_threads: Incomplete | None = ..., - retries: bool = ..., + configuration: Incomplete | None = None, + header_name: Incomplete | None = None, + header_value: Incomplete | None = None, + cookie: Incomplete | None = None, + pool_threads: Incomplete | None = None, + retries: bool = False, ) -> None: ... def __del__(self) -> None: ... @property @@ -31,35 +31,35 @@ class ApiClient: self, resource_path, method, - path_params: Incomplete | None = ..., - query_params: Incomplete | None = ..., - header_params: Incomplete | None = ..., - body: Incomplete | None = ..., - post_params: Incomplete | None = ..., - files: Incomplete | None = ..., - response_type: Incomplete | None = ..., - auth_settings: Incomplete | None = ..., - async_req: Incomplete | None = ..., - _return_http_data_only: Incomplete | None = ..., - collection_formats: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., - urlopen_kw: Incomplete | None = ..., + path_params: Incomplete | None = None, + query_params: Incomplete | None = None, + header_params: Incomplete | None = None, + body: Incomplete | None = None, + post_params: Incomplete | None = None, + files: Incomplete | None = None, + response_type: Incomplete | None = None, + auth_settings: Incomplete | None = None, + async_req: Incomplete | None = None, + _return_http_data_only: Incomplete | None = None, + collection_formats: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, + urlopen_kw: Incomplete | None = None, ): ... def request( self, method, url, - query_params: Incomplete | None = ..., - headers: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + query_params: Incomplete | None = None, + headers: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... def parameters_to_tuples(self, params, collection_formats): ... - def prepare_post_parameters(self, post_params: Incomplete | None = ..., files: Incomplete | None = ...): ... + def prepare_post_parameters(self, post_params: Incomplete | None = None, files: Incomplete | None = None): ... def select_header_accept(self, accepts): ... def select_header_content_type(self, content_types): ... def update_params_for_auth(self, headers, querys, auth_settings) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_sync/rest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_sync/rest.pyi index f8b84cce4..6a196dbc0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_sync/rest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/_sync/rest.pyi @@ -8,7 +8,7 @@ class RESTResponse(io.IOBase): data: Incomplete def __init__(self, resp) -> None: ... def getheaders(self): ... - def getheader(self, name, default: Incomplete | None = ...): ... + def getheader(self, name, default: Incomplete | None = None): ... class RESTClientObject: configuration: Incomplete @@ -16,88 +16,88 @@ class RESTClientObject: maxsize: Incomplete retries: Incomplete pool_manager: Incomplete - def __init__(self, configuration, pools_size: int = ..., maxsize: Incomplete | None = ..., retries: bool = ...) -> None: ... + def __init__(self, configuration, pools_size: int = 4, maxsize: Incomplete | None = None, retries: bool = False) -> None: ... def request( self, method, url, - query_params: Incomplete | None = ..., - headers: Incomplete | None = ..., - body: Incomplete | None = ..., - post_params: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + query_params: Incomplete | None = None, + headers: Incomplete | None = None, + body: Incomplete | None = None, + post_params: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... def GET( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... def HEAD( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... def OPTIONS( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... def DELETE( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... def POST( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... def PUT( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... def PATCH( self, url, - headers: Incomplete | None = ..., - query_params: Incomplete | None = ..., - post_params: Incomplete | None = ..., - body: Incomplete | None = ..., - _preload_content: bool = ..., - _request_timeout: Incomplete | None = ..., + headers: Incomplete | None = None, + query_params: Incomplete | None = None, + post_params: Incomplete | None = None, + body: Incomplete | None = None, + _preload_content: bool = True, + _request_timeout: Incomplete | None = None, **urlopen_kw, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/_base.pyi index 20d5f7e4d..edc44395d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/_base.pyi @@ -18,12 +18,12 @@ class _BaseClient: self, url: str, token: str | None, - debug: bool | None = ..., - timeout: int = ..., - enable_gzip: bool = ..., - org: str | None = ..., - default_tags: dict[Incomplete, Incomplete] | None = ..., - http_client_logger: str | None = ..., + debug: bool | None = None, + timeout: int = 10000, + enable_gzip: bool = False, + org: str | None = None, + default_tags: dict[Incomplete, Incomplete] | None = None, + http_client_logger: str | None = None, *, verify_ssl: bool = ..., ssl_ca_cert: Incomplete | None = ..., @@ -43,10 +43,10 @@ class _BaseClient: class _BaseQueryApi: default_dialect: Incomplete - def __init__(self, influxdb_client, query_options: Incomplete | None = ...) -> None: ... + def __init__(self, influxdb_client, query_options: Incomplete | None = None) -> None: ... class _BaseWriteApi: - def __init__(self, influxdb_client, point_settings: Incomplete | None = ...) -> None: ... + def __init__(self, influxdb_client, point_settings: Incomplete | None = None) -> None: ... class _BaseDeleteApi: def __init__(self, influxdb_client) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/authorizations_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/authorizations_api.pyi index 1e4ef9a52..fbcdefe5b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/authorizations_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/authorizations_api.pyi @@ -6,9 +6,9 @@ class AuthorizationsApi: def __init__(self, influxdb_client) -> None: ... def create_authorization( self, - org_id: Incomplete | None = ..., - permissions: list[Incomplete] | None = ..., - authorization: Authorization | None = ..., + org_id: Incomplete | None = None, + permissions: list[Incomplete] | None = None, + authorization: Authorization | None = None, ) -> Authorization: ... def find_authorization_by_id(self, auth_id: str) -> Authorization: ... def find_authorizations(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/bucket_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/bucket_api.pyi index 1231020d0..b50467a24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/bucket_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/bucket_api.pyi @@ -6,12 +6,12 @@ class BucketsApi: def __init__(self, influxdb_client) -> None: ... def create_bucket( self, - bucket: Incomplete | None = ..., - bucket_name: Incomplete | None = ..., - org_id: Incomplete | None = ..., - retention_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - org: Incomplete | None = ..., + bucket: Incomplete | None = None, + bucket_name: Incomplete | None = None, + org_id: Incomplete | None = None, + retention_rules: Incomplete | None = None, + description: Incomplete | None = None, + org: Incomplete | None = None, ) -> Bucket: ... def update_bucket(self, bucket: Bucket) -> Bucket: ... def delete_bucket(self, bucket): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/delete_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/delete_api.pyi index ad1c992fd..369568891 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/delete_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/delete_api.pyi @@ -6,5 +6,5 @@ from influxdb_client.client._base import _BaseDeleteApi class DeleteApi(_BaseDeleteApi): def __init__(self, influxdb_client) -> None: ... def delete( - self, start: str | datetime, stop: str | datetime, predicate: str, bucket: str, org: str | Organization | None = ... + self, start: str | datetime, stop: str | datetime, predicate: str, bucket: str, org: str | Organization | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/delete_api_async.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/delete_api_async.pyi index 803794e44..dca8faa6e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/delete_api_async.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/delete_api_async.pyi @@ -6,5 +6,5 @@ from influxdb_client.client._base import _BaseDeleteApi class DeleteApiAsync(_BaseDeleteApi): def __init__(self, influxdb_client) -> None: ... async def delete( - self, start: str | datetime, stop: str | datetime, predicate: str, bucket: str, org: str | Organization | None = ... + self, start: str | datetime, stop: str | datetime, predicate: str, bucket: str, org: str | Organization | None = None ) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/exceptions.pyi index c3ec26704..2ddf0da72 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/exceptions.pyi @@ -8,4 +8,4 @@ class InfluxDBError(Exception): response: Incomplete message: Incomplete retry_after: Incomplete - def __init__(self, response: HTTPResponse | None = ..., message: str | None = ...) -> None: ... + def __init__(self, response: HTTPResponse | None = None, message: str | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/flux_csv_parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/flux_csv_parser.pyi index e317ae268..9e3d15f9b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/flux_csv_parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/flux_csv_parser.pyi @@ -42,8 +42,8 @@ class FluxCsvParser: self, response, serialization_mode: FluxSerializationMode, - data_frame_index: list[str] | None = ..., - query_options: Incomplete | None = ..., + data_frame_index: list[str] | None = None, + query_options: Incomplete | None = None, response_metadata_mode: FluxResponseMetadataMode = ..., ) -> None: ... def __enter__(self) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/flux_table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/flux_table.pyi index 4c2ba1392..66a791209 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/flux_table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/flux_table.pyi @@ -23,18 +23,18 @@ class FluxColumn(FluxStructure): index: Incomplete def __init__( self, - index: Incomplete | None = ..., - label: Incomplete | None = ..., - data_type: Incomplete | None = ..., - group: Incomplete | None = ..., - default_value: Incomplete | None = ..., + index: Incomplete | None = None, + label: Incomplete | None = None, + data_type: Incomplete | None = None, + group: Incomplete | None = None, + default_value: Incomplete | None = None, ) -> None: ... class FluxRecord(FluxStructure): table: Incomplete values: Incomplete row: Incomplete - def __init__(self, table, values: Incomplete | None = ...) -> None: ... + def __init__(self, table, values: Incomplete | None = None) -> None: ... def get_start(self): ... def get_stop(self): ... def get_time(self): ... @@ -45,8 +45,8 @@ class FluxRecord(FluxStructure): def __setitem__(self, key, value): ... class TableList(list[FluxTable]): - def to_values(self, columns: list[str] | None = ...) -> list[list[object]]: ... - def to_json(self, columns: list[str] | None = ..., **kwargs) -> str: ... + def to_values(self, columns: list[str] | None = None) -> list[list[object]]: ... + def to_json(self, columns: list[str] | None = None, **kwargs) -> str: ... class CSVIterator(Iterator[list[str]]): delegate: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/influxdb_client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/influxdb_client.pyi index 90c0b28d3..b67ad4451 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/influxdb_client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/influxdb_client.pyi @@ -21,12 +21,12 @@ class InfluxDBClient(_BaseClient): def __init__( self, url: str, - token: str | None = ..., - debug: bool | None = ..., - timeout: int = ..., - enable_gzip: bool = ..., - org: str | None = ..., - default_tags: dict[Incomplete, Incomplete] | None = ..., + token: str | None = None, + debug: bool | None = None, + timeout: int = 10000, + enable_gzip: bool = False, + org: str | None = None, + default_tags: dict[Incomplete, Incomplete] | None = None, *, verify_ssl: bool = ..., ssl_ca_cert: Incomplete | None = ..., @@ -48,9 +48,11 @@ class InfluxDBClient(_BaseClient): self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None ) -> None: ... @classmethod - def from_config_file(cls, config_file: str = ..., debug: Incomplete | None = ..., enable_gzip: bool = ..., **kwargs): ... + def from_config_file( + cls, config_file: str = "config.ini", debug: Incomplete | None = None, enable_gzip: bool = False, **kwargs + ): ... @classmethod - def from_env_properties(cls, debug: Incomplete | None = ..., enable_gzip: bool = ..., **kwargs): ... + def from_env_properties(cls, debug: Incomplete | None = None, enable_gzip: bool = False, **kwargs): ... def write_api(self, write_options: WriteOptions = ..., point_settings: PointSettings = ..., **kwargs) -> WriteApi: ... def query_api(self, query_options: QueryOptions = ...) -> QueryApi: ... def invokable_scripts_api(self) -> InvokableScriptsApi: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/influxdb_client_async.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/influxdb_client_async.pyi index 0355f41d9..3e308e031 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/influxdb_client_async.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/influxdb_client_async.pyi @@ -16,11 +16,11 @@ class InfluxDBClientAsync(_BaseClient): def __init__( self, url: str, - token: str | None = ..., - org: str | None = ..., - debug: bool | None = ..., - timeout: int = ..., - enable_gzip: bool = ..., + token: str | None = None, + org: str | None = None, + debug: bool | None = None, + timeout: int = 10000, + enable_gzip: bool = False, *, verify_ssl: bool = ..., ssl_ca_cert: Incomplete | None = ..., @@ -43,9 +43,11 @@ class InfluxDBClientAsync(_BaseClient): ) -> None: ... async def close(self) -> None: ... @classmethod - def from_config_file(cls, config_file: str = ..., debug: Incomplete | None = ..., enable_gzip: bool = ..., **kwargs): ... + def from_config_file( + cls, config_file: str = "config.ini", debug: Incomplete | None = None, enable_gzip: bool = False, **kwargs + ): ... @classmethod - def from_env_properties(cls, debug: Incomplete | None = ..., enable_gzip: bool = ..., **kwargs): ... + def from_env_properties(cls, debug: Incomplete | None = None, enable_gzip: bool = False, **kwargs): ... async def ping(self) -> bool: ... async def version(self) -> str: ... async def build(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/invokable_scripts_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/invokable_scripts_api.pyi index f4b85afbe..871547390 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/invokable_scripts_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/invokable_scripts_api.pyi @@ -12,15 +12,15 @@ class InvokableScriptsApi(_BaseQueryApi): def update_script(self, script_id: str, update_request: ScriptUpdateRequest) -> Script: ... def delete_script(self, script_id: str) -> None: ... def find_scripts(self, **kwargs): ... - def invoke_script(self, script_id: str, params: dict[Incomplete, Incomplete] | None = ...) -> TableList: ... + def invoke_script(self, script_id: str, params: dict[Incomplete, Incomplete] | None = None) -> TableList: ... def invoke_script_stream( - self, script_id: str, params: dict[Incomplete, Incomplete] | None = ... + self, script_id: str, params: dict[Incomplete, Incomplete] | None = None ) -> Generator[FluxRecord, Any, None]: ... def invoke_script_data_frame( - self, script_id: str, params: dict[Incomplete, Incomplete] | None = ..., data_frame_index: list[str] | None = ... + self, script_id: str, params: dict[Incomplete, Incomplete] | None = None, data_frame_index: list[str] | None = None ): ... def invoke_script_data_frame_stream( - self, script_id: str, params: dict[Incomplete, Incomplete] | None = ..., data_frame_index: list[str] | None = ... + self, script_id: str, params: dict[Incomplete, Incomplete] | None = None, data_frame_index: list[str] | None = None ): ... - def invoke_script_csv(self, script_id: str, params: dict[Incomplete, Incomplete] | None = ...) -> CSVIterator: ... - def invoke_script_raw(self, script_id: str, params: dict[Incomplete, Incomplete] | None = ...) -> Iterator[list[str]]: ... + def invoke_script_csv(self, script_id: str, params: dict[Incomplete, Incomplete] | None = None) -> CSVIterator: ... + def invoke_script_raw(self, script_id: str, params: dict[Incomplete, Incomplete] | None = None) -> Iterator[list[str]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/labels_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/labels_api.pyi index 01d3e06ea..026847095 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/labels_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/labels_api.pyi @@ -2,7 +2,7 @@ from influxdb_client import Label class LabelsApi: def __init__(self, influxdb_client) -> None: ... - def create_label(self, name: str, org_id: str, properties: dict[str, str] | None = ...) -> Label: ... + def create_label(self, name: str, org_id: str, properties: dict[str, str] | None = None) -> Label: ... def update_label(self, label: Label): ... def delete_label(self, label: str | Label): ... def clone_label(self, cloned_name: str, label: Label) -> Label: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/logging_handler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/logging_handler.pyi index 28c8363ac..c6561c780 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/logging_handler.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/logging_handler.pyi @@ -7,7 +7,7 @@ class InfluxLoggingHandler(logging.Handler): client: Incomplete write_api: Incomplete def __init__( - self, *, url, token, org, bucket, client_args: Incomplete | None = ..., write_api_args: Incomplete | None = ... + self, *, url, token, org, bucket, client_args: Incomplete | None = None, write_api_args: Incomplete | None = None ) -> None: ... def __del__(self) -> None: ... def close(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/organizations_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/organizations_api.pyi index 873cca7ba..fb014a491 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/organizations_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/organizations_api.pyi @@ -5,6 +5,6 @@ class OrganizationsApi: def me(self): ... def find_organization(self, org_id): ... def find_organizations(self, **kwargs): ... - def create_organization(self, name: str | None = ..., organization: Organization | None = ...) -> Organization: ... + def create_organization(self, name: str | None = None, organization: Organization | None = None) -> Organization: ... def update_organization(self, organization: Organization) -> Organization: ... def delete_organization(self, org_id: str): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/query_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/query_api.pyi index 0dc0c97a1..14bfed4c3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/query_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/query_api.pyi @@ -9,32 +9,40 @@ from influxdb_client.client.flux_table import CSVIterator, FluxRecord, TableList class QueryOptions: profilers: Incomplete profiler_callback: Incomplete - def __init__(self, profilers: list[str] | None = ..., profiler_callback: Callable[..., Incomplete] | None = ...) -> None: ... + def __init__( + self, profilers: list[str] | None = None, profiler_callback: Callable[..., Incomplete] | None = None + ) -> None: ... class QueryApi(_BaseQueryApi): def __init__(self, influxdb_client, query_options=...) -> None: ... def query_csv( - self, query: str, org: Incomplete | None = ..., dialect: Dialect = ..., params: dict[Incomplete, Incomplete] | None = ... + self, + query: str, + org: Incomplete | None = None, + dialect: Dialect = ..., + params: dict[Incomplete, Incomplete] | None = None, ) -> CSVIterator: ... def query_raw( - self, query: str, org: Incomplete | None = ..., dialect=..., params: dict[Incomplete, Incomplete] | None = ... + self, query: str, org: Incomplete | None = None, dialect=..., params: dict[Incomplete, Incomplete] | None = None ): ... - def query(self, query: str, org: Incomplete | None = ..., params: dict[Incomplete, Incomplete] | None = ...) -> TableList: ... + def query( + self, query: str, org: Incomplete | None = None, params: dict[Incomplete, Incomplete] | None = None + ) -> TableList: ... def query_stream( - self, query: str, org: Incomplete | None = ..., params: dict[Incomplete, Incomplete] | None = ... + self, query: str, org: Incomplete | None = None, params: dict[Incomplete, Incomplete] | None = None ) -> Generator[FluxRecord, Any, None]: ... def query_data_frame( self, query: str, - org: Incomplete | None = ..., - data_frame_index: list[str] | None = ..., - params: dict[Incomplete, Incomplete] | None = ..., + org: Incomplete | None = None, + data_frame_index: list[str] | None = None, + params: dict[Incomplete, Incomplete] | None = None, ): ... def query_data_frame_stream( self, query: str, - org: Incomplete | None = ..., - data_frame_index: list[str] | None = ..., - params: dict[Incomplete, Incomplete] | None = ..., + org: Incomplete | None = None, + data_frame_index: list[str] | None = None, + params: dict[Incomplete, Incomplete] | None = None, ): ... def __del__(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/query_api_async.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/query_api_async.pyi index 465e81650..f65b647f0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/query_api_async.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/query_api_async.pyi @@ -7,25 +7,25 @@ from influxdb_client.client.flux_table import FluxRecord, TableList class QueryApiAsync(_BaseQueryApi): def __init__(self, influxdb_client, query_options=...) -> None: ... async def query( - self, query: str, org: Incomplete | None = ..., params: dict[Incomplete, Incomplete] | None = ... + self, query: str, org: Incomplete | None = None, params: dict[Incomplete, Incomplete] | None = None ) -> TableList: ... async def query_stream( - self, query: str, org: Incomplete | None = ..., params: dict[Incomplete, Incomplete] | None = ... + self, query: str, org: Incomplete | None = None, params: dict[Incomplete, Incomplete] | None = None ) -> AsyncGenerator[FluxRecord, None]: ... async def query_data_frame( self, query: str, - org: Incomplete | None = ..., - data_frame_index: list[str] | None = ..., - params: dict[Incomplete, Incomplete] | None = ..., + org: Incomplete | None = None, + data_frame_index: list[str] | None = None, + params: dict[Incomplete, Incomplete] | None = None, ): ... async def query_data_frame_stream( self, query: str, - org: Incomplete | None = ..., - data_frame_index: list[str] | None = ..., - params: dict[Incomplete, Incomplete] | None = ..., + org: Incomplete | None = None, + data_frame_index: list[str] | None = None, + params: dict[Incomplete, Incomplete] | None = None, ): ... async def query_raw( - self, query: str, org: Incomplete | None = ..., dialect=..., params: dict[Incomplete, Incomplete] | None = ... + self, query: str, org: Incomplete | None = None, dialect=..., params: dict[Incomplete, Incomplete] | None = None ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/tasks_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/tasks_api.pyi index 97d78972f..01c831f6e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/tasks_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/tasks_api.pyi @@ -6,7 +6,7 @@ class TasksApi: def __init__(self, influxdb_client) -> None: ... def find_task_by_id(self, task_id) -> Task: ... def find_tasks(self, **kwargs): ... - def create_task(self, task: Task | None = ..., task_create_request: TaskCreateRequest | None = ...) -> Task: ... + def create_task(self, task: Task | None = None, task_create_request: TaskCreateRequest | None = None) -> Task: ... def create_task_every(self, name, flux, every, organization) -> Task: ... def create_task_cron(self, name: str, flux: str, cron: str, org_id: str) -> Task: ... def delete_task(self, task_id: str): ... @@ -25,7 +25,7 @@ class TasksApi: def get_runs(self, task_id, **kwargs) -> list[Run]: ... def get_run(self, task_id: str, run_id: str) -> Run: ... def get_run_logs(self, task_id: str, run_id: str) -> list[LogEvent]: ... - def run_manually(self, task_id: str, scheduled_for: datetime | None = ...): ... + def run_manually(self, task_id: str, scheduled_for: datetime | None = None): ... def retry_run(self, task_id: str, run_id: str): ... def cancel_run(self, task_id: str, run_id: str): ... def get_logs(self, task_id: str) -> list[LogEvent]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/util/helpers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/util/helpers.pyi index e5e7609b9..385ebda06 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/util/helpers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/util/helpers.pyi @@ -1 +1 @@ -def get_org_query_param(org, client, required_id: bool = ...): ... +def get_org_query_param(org, client, required_id: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/dataframe_serializer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/dataframe_serializer.pyi index b5b4b7ab8..9cdc625d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/dataframe_serializer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/dataframe_serializer.pyi @@ -8,8 +8,8 @@ class DataframeSerializer: field_indexes: Incomplete first_field_maybe_null: Incomplete chunk_size: Incomplete - def __init__(self, data_frame, point_settings, precision=..., chunk_size: int | None = ..., **kwargs) -> None: ... - def serialize(self, chunk_idx: int | None = ...): ... + def __init__(self, data_frame, point_settings, precision="ns", chunk_size: int | None = None, **kwargs) -> None: ... + def serialize(self, chunk_idx: int | None = None): ... def number_of_chunks(self): ... -def data_frame_to_list_of_points(data_frame, point_settings, precision=..., **kwargs): ... +def data_frame_to_list_of_points(data_frame, point_settings, precision="ns", **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/point.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/point.pyi index d18ecc289..c160541d9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/point.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/point.pyi @@ -19,7 +19,7 @@ class Point: @staticmethod def from_dict( dictionary: SupportsGetItem[str, Any], - write_precision: _WritePrecision = ..., + write_precision: _WritePrecision = "ns", *, record_measurement_name: str | None = ..., record_measurement_key: str = ..., @@ -29,10 +29,10 @@ class Point: fields: SupportsItems[str, Literal["int", "uint", "float"]] = ..., ) -> Point: ... def __init__(self, measurement_name: str) -> None: ... - def time(self, time: _Time, write_precision: _WritePrecision = ...) -> Self: ... + def time(self, time: _Time, write_precision: _WritePrecision = "ns") -> Self: ... def tag(self, key: str, value: _Value) -> Self: ... def field(self, field: str, value: _Value) -> Self: ... - def to_line_protocol(self, precision: _WritePrecision | None = ...) -> str: ... + def to_line_protocol(self, precision: _WritePrecision | None = None) -> str: ... @property def write_precision(self) -> _WritePrecision: ... @classmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/retry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/retry.pyi index 7a814a49c..49848de59 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/retry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write/retry.pyi @@ -16,25 +16,25 @@ class WritesRetry(Retry): retry_callback: Incomplete def __init__( self, - jitter_interval: int = ..., - max_retry_delay: int = ..., - exponential_base: int = ..., - max_retry_time: int = ..., - total: int = ..., - retry_interval: int = ..., - retry_callback: Callable[[Exception], int] | None = ..., + jitter_interval: int = 0, + max_retry_delay: int = 125, + exponential_base: int = 2, + max_retry_time: int = 180, + total: int = 5, + retry_interval: int = 5, + retry_callback: Callable[[Exception], int] | None = None, **kw, ) -> None: ... def new(self, **kw): ... - def is_retry(self, method, status_code, has_retry_after: bool = ...): ... + def is_retry(self, method, status_code, has_retry_after: bool = False): ... def get_backoff_time(self): ... def get_retry_after(self, response): ... def increment( self, - method: Incomplete | None = ..., - url: Incomplete | None = ..., - response: Incomplete | None = ..., - error: Incomplete | None = ..., - _pool: Incomplete | None = ..., - _stacktrace: Incomplete | None = ..., + method: Incomplete | None = None, + url: Incomplete | None = None, + response: Incomplete | None = None, + error: Incomplete | None = None, + _pool: Incomplete | None = None, + _stacktrace: Incomplete | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write_api.pyi index 3707c95b3..85bf6adde 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write_api.pyi @@ -61,7 +61,7 @@ class _BatchItemKey: bucket: Incomplete org: Incomplete precision: Incomplete - def __init__(self, bucket, org, precision=...) -> None: ... + def __init__(self, bucket, org, precision="ns") -> None: ... def __hash__(self) -> int: ... def __eq__(self, o: object) -> bool: ... @@ -69,13 +69,13 @@ class _BatchItem: key: Incomplete data: Incomplete size: Incomplete - def __init__(self, key: _BatchItemKey, data, size: int = ...) -> None: ... + def __init__(self, key: _BatchItemKey, data, size: int = 1) -> None: ... def to_key_tuple(self) -> tuple[str, str, str]: ... class _BatchResponse: data: Incomplete exception: Incomplete - def __init__(self, data: _BatchItem, exception: Exception | None = ...) -> None: ... + def __init__(self, data: _BatchItem, exception: Exception | None = None) -> None: ... class WriteApi(_BaseWriteApi): def __init__( @@ -84,7 +84,7 @@ class WriteApi(_BaseWriteApi): def write( self, bucket: str, - org: str | None = ..., + org: str | None = None, record: str | Iterable[str] | Point @@ -97,8 +97,8 @@ class WriteApi(_BaseWriteApi): | _NamedTuple | Iterable[_NamedTuple] | _DataClass - | Iterable[_DataClass] = ..., - write_precision: _WritePrecision = ..., + | Iterable[_DataClass] = None, + write_precision: _WritePrecision = "ns", **kwargs, ) -> Any: ... def flush(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write_api_async.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write_api_async.pyi index f33896d53..365f5b7f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write_api_async.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/client/write_api_async.pyi @@ -18,7 +18,7 @@ class WriteApiAsync(_BaseWriteApi): async def write( self, bucket: str, - org: str | None = ..., + org: str | None = None, record: str | Iterable[str] | Point @@ -30,7 +30,7 @@ class WriteApiAsync(_BaseWriteApi): | _NamedTuple | Iterable[_NamedTuple] | _DataClass - | Iterable[_DataClass] = ..., - write_precision: _WritePrecision = ..., + | Iterable[_DataClass] = None, + write_precision: _WritePrecision = "ns", **kwargs, ) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/add_resource_member_request_body.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/add_resource_member_request_body.pyi index 5632abf96..e46d43db2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/add_resource_member_request_body.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/add_resource_member_request_body.pyi @@ -4,7 +4,7 @@ class AddResourceMemberRequestBody: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, id: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, id: Incomplete | None = None, name: Incomplete | None = None) -> None: ... @property def id(self): ... @id.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/analyze_query_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/analyze_query_response.pyi index 2736b432e..eea43aa2e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/analyze_query_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/analyze_query_response.pyi @@ -4,7 +4,7 @@ class AnalyzeQueryResponse: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, errors: Incomplete | None = ...) -> None: ... + def __init__(self, errors: Incomplete | None = None) -> None: ... @property def errors(self): ... @errors.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/analyze_query_response_errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/analyze_query_response_errors.pyi index 6f1078328..67962686d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/analyze_query_response_errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/analyze_query_response_errors.pyi @@ -6,10 +6,10 @@ class AnalyzeQueryResponseErrors: discriminator: Incomplete def __init__( self, - line: Incomplete | None = ..., - column: Incomplete | None = ..., - character: Incomplete | None = ..., - message: Incomplete | None = ..., + line: Incomplete | None = None, + column: Incomplete | None = None, + character: Incomplete | None = None, + message: Incomplete | None = None, ) -> None: ... @property def line(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/array_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/array_expression.pyi index 8d1a6cb10..b552bb067 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/array_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/array_expression.pyi @@ -6,7 +6,7 @@ class ArrayExpression(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., elements: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, elements: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/ast_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/ast_response.pyi index 586efd22e..faa12e7b7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/ast_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/ast_response.pyi @@ -4,7 +4,7 @@ class ASTResponse: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, ast: Incomplete | None = ...) -> None: ... + def __init__(self, ast: Incomplete | None = None) -> None: ... @property def ast(self): ... @ast.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization.pyi index b8afa636c..571333cca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization.pyi @@ -8,18 +8,18 @@ class Authorization(AuthorizationUpdateRequest): discriminator: Incomplete def __init__( self, - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - org_id: Incomplete | None = ..., - permissions: Incomplete | None = ..., - id: Incomplete | None = ..., - token: Incomplete | None = ..., - user_id: Incomplete | None = ..., - user: Incomplete | None = ..., - org: Incomplete | None = ..., - links: Incomplete | None = ..., - status: str = ..., - description: Incomplete | None = ..., + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + org_id: Incomplete | None = None, + permissions: Incomplete | None = None, + id: Incomplete | None = None, + token: Incomplete | None = None, + user_id: Incomplete | None = None, + user: Incomplete | None = None, + org: Incomplete | None = None, + links: Incomplete | None = None, + status: str = "active", + description: Incomplete | None = None, ) -> None: ... @property def created_at(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization_post_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization_post_request.pyi index 98afba0f1..360b6fa64 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization_post_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization_post_request.pyi @@ -8,11 +8,11 @@ class AuthorizationPostRequest(AuthorizationUpdateRequest): discriminator: Incomplete def __init__( self, - org_id: Incomplete | None = ..., - user_id: Incomplete | None = ..., - permissions: Incomplete | None = ..., - status: str = ..., - description: Incomplete | None = ..., + org_id: Incomplete | None = None, + user_id: Incomplete | None = None, + permissions: Incomplete | None = None, + status: str = "active", + description: Incomplete | None = None, ) -> None: ... @property def org_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization_update_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization_update_request.pyi index e6b69b75c..d8dfe9157 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization_update_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorization_update_request.pyi @@ -4,7 +4,7 @@ class AuthorizationUpdateRequest: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, status: str = ..., description: Incomplete | None = ...) -> None: ... + def __init__(self, status: str = "active", description: Incomplete | None = None) -> None: ... @property def status(self): ... @status.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorizations.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorizations.pyi index 1da35137d..efb9ae966 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorizations.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/authorizations.pyi @@ -4,7 +4,7 @@ class Authorizations: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., authorizations: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, authorizations: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/axes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/axes.pyi index 73989df62..5efb4f00a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/axes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/axes.pyi @@ -4,7 +4,7 @@ class Axes: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, x: Incomplete | None = ..., y: Incomplete | None = ...) -> None: ... + def __init__(self, x: Incomplete | None = None, y: Incomplete | None = None) -> None: ... @property def x(self): ... @x.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/axis.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/axis.pyi index 0c487a22e..c47f8311b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/axis.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/axis.pyi @@ -6,12 +6,12 @@ class Axis: discriminator: Incomplete def __init__( self, - bounds: Incomplete | None = ..., - label: Incomplete | None = ..., - prefix: Incomplete | None = ..., - suffix: Incomplete | None = ..., - base: Incomplete | None = ..., - scale: Incomplete | None = ..., + bounds: Incomplete | None = None, + label: Incomplete | None = None, + prefix: Incomplete | None = None, + suffix: Incomplete | None = None, + base: Incomplete | None = None, + scale: Incomplete | None = None, ) -> None: ... @property def bounds(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bad_statement.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bad_statement.pyi index 306ee23bd..6136b67f6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bad_statement.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bad_statement.pyi @@ -6,7 +6,7 @@ class BadStatement(Statement): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., text: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, text: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/band_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/band_view_properties.pyi index d39485916..bec457b43 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/band_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/band_view_properties.pyi @@ -8,34 +8,34 @@ class BandViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - time_format: Incomplete | None = ..., - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - axes: Incomplete | None = ..., - static_legend: Incomplete | None = ..., - x_column: Incomplete | None = ..., - generate_x_axis_ticks: Incomplete | None = ..., - x_total_ticks: Incomplete | None = ..., - x_tick_start: Incomplete | None = ..., - x_tick_step: Incomplete | None = ..., - y_column: Incomplete | None = ..., - generate_y_axis_ticks: Incomplete | None = ..., - y_total_ticks: Incomplete | None = ..., - y_tick_start: Incomplete | None = ..., - y_tick_step: Incomplete | None = ..., - upper_column: Incomplete | None = ..., - main_column: Incomplete | None = ..., - lower_column: Incomplete | None = ..., - hover_dimension: Incomplete | None = ..., - geom: Incomplete | None = ..., - legend_colorize_rows: Incomplete | None = ..., - legend_hide: Incomplete | None = ..., - legend_opacity: Incomplete | None = ..., - legend_orientation_threshold: Incomplete | None = ..., + time_format: Incomplete | None = None, + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + axes: Incomplete | None = None, + static_legend: Incomplete | None = None, + x_column: Incomplete | None = None, + generate_x_axis_ticks: Incomplete | None = None, + x_total_ticks: Incomplete | None = None, + x_tick_start: Incomplete | None = None, + x_tick_step: Incomplete | None = None, + y_column: Incomplete | None = None, + generate_y_axis_ticks: Incomplete | None = None, + y_total_ticks: Incomplete | None = None, + y_tick_start: Incomplete | None = None, + y_tick_step: Incomplete | None = None, + upper_column: Incomplete | None = None, + main_column: Incomplete | None = None, + lower_column: Incomplete | None = None, + hover_dimension: Incomplete | None = None, + geom: Incomplete | None = None, + legend_colorize_rows: Incomplete | None = None, + legend_hide: Incomplete | None = None, + legend_opacity: Incomplete | None = None, + legend_orientation_threshold: Incomplete | None = None, ) -> None: ... @property def time_format(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/binary_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/binary_expression.pyi index cfb13da0a..6ddbcaef3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/binary_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/binary_expression.pyi @@ -8,10 +8,10 @@ class BinaryExpression(Expression): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - operator: Incomplete | None = ..., - left: Incomplete | None = ..., - right: Incomplete | None = ..., + type: Incomplete | None = None, + operator: Incomplete | None = None, + left: Incomplete | None = None, + right: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/block.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/block.pyi index 48a29bd26..183aaefa4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/block.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/block.pyi @@ -6,7 +6,7 @@ class Block(Node): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., body: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, body: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/boolean_literal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/boolean_literal.pyi index cea20b466..6c76f89c5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/boolean_literal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/boolean_literal.pyi @@ -6,7 +6,7 @@ class BooleanLiteral(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, value: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket.pyi index 1cb791172..c0110c298 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket.pyi @@ -6,18 +6,18 @@ class Bucket: discriminator: Incomplete def __init__( self, - links: Incomplete | None = ..., - id: Incomplete | None = ..., - type: str = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - org_id: Incomplete | None = ..., - rp: Incomplete | None = ..., - schema_type: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - retention_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., + links: Incomplete | None = None, + id: Incomplete | None = None, + type: str = "user", + name: Incomplete | None = None, + description: Incomplete | None = None, + org_id: Incomplete | None = None, + rp: Incomplete | None = None, + schema_type: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + retention_rules: Incomplete | None = None, + labels: Incomplete | None = None, ) -> None: ... @property def links(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_links.pyi index ace2e00db..afdd4c014 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_links.pyi @@ -6,12 +6,12 @@ class BucketLinks: discriminator: Incomplete def __init__( self, - labels: Incomplete | None = ..., - members: Incomplete | None = ..., - org: Incomplete | None = ..., - owners: Incomplete | None = ..., - _self: Incomplete | None = ..., - write: Incomplete | None = ..., + labels: Incomplete | None = None, + members: Incomplete | None = None, + org: Incomplete | None = None, + owners: Incomplete | None = None, + _self: Incomplete | None = None, + write: Incomplete | None = None, ) -> None: ... @property def labels(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_metadata_manifest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_metadata_manifest.pyi index 24cce2c97..4cf3cbb67 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_metadata_manifest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_metadata_manifest.pyi @@ -6,13 +6,13 @@ class BucketMetadataManifest: discriminator: Incomplete def __init__( self, - organization_id: Incomplete | None = ..., - organization_name: Incomplete | None = ..., - bucket_id: Incomplete | None = ..., - bucket_name: Incomplete | None = ..., - description: Incomplete | None = ..., - default_retention_policy: Incomplete | None = ..., - retention_policies: Incomplete | None = ..., + organization_id: Incomplete | None = None, + organization_name: Incomplete | None = None, + bucket_id: Incomplete | None = None, + bucket_name: Incomplete | None = None, + description: Incomplete | None = None, + default_retention_policy: Incomplete | None = None, + retention_policies: Incomplete | None = None, ) -> None: ... @property def organization_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_retention_rules.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_retention_rules.pyi index 7ddc6748a..48fc25543 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_retention_rules.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_retention_rules.pyi @@ -5,7 +5,10 @@ class BucketRetentionRules: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, type: str = ..., every_seconds: Incomplete | None = ..., shard_group_duration_seconds: Incomplete | None = ... + self, + type: str = "expire", + every_seconds: Incomplete | None = None, + shard_group_duration_seconds: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_shard_mapping.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_shard_mapping.pyi index 3977aa0ce..114d6b1cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_shard_mapping.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/bucket_shard_mapping.pyi @@ -4,7 +4,7 @@ class BucketShardMapping: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, old_id: Incomplete | None = ..., new_id: Incomplete | None = ...) -> None: ... + def __init__(self, old_id: Incomplete | None = None, new_id: Incomplete | None = None) -> None: ... @property def old_id(self): ... @old_id.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/buckets.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/buckets.pyi index d230562db..2aba7eeb1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/buckets.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/buckets.pyi @@ -4,7 +4,7 @@ class Buckets: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., buckets: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, buckets: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_config.pyi index c012e523d..730091fb2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_config.pyi @@ -6,10 +6,10 @@ class BuilderConfig: discriminator: Incomplete def __init__( self, - buckets: Incomplete | None = ..., - tags: Incomplete | None = ..., - functions: Incomplete | None = ..., - aggregate_window: Incomplete | None = ..., + buckets: Incomplete | None = None, + tags: Incomplete | None = None, + functions: Incomplete | None = None, + aggregate_window: Incomplete | None = None, ) -> None: ... @property def buckets(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_config_aggregate_window.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_config_aggregate_window.pyi index 74848bc03..88ec913de 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_config_aggregate_window.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_config_aggregate_window.pyi @@ -4,7 +4,7 @@ class BuilderConfigAggregateWindow: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, period: Incomplete | None = ..., fill_values: Incomplete | None = ...) -> None: ... + def __init__(self, period: Incomplete | None = None, fill_values: Incomplete | None = None) -> None: ... @property def period(self): ... @period.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_functions_type.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_functions_type.pyi index 4b6e331da..0ef39b154 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_functions_type.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_functions_type.pyi @@ -4,7 +4,7 @@ class BuilderFunctionsType: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, name: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None) -> None: ... @property def name(self): ... @name.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_tags_type.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_tags_type.pyi index 580c62804..234c29308 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_tags_type.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builder_tags_type.pyi @@ -5,7 +5,7 @@ class BuilderTagsType: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, key: Incomplete | None = ..., values: Incomplete | None = ..., aggregate_function_type: Incomplete | None = ... + self, key: Incomplete | None = None, values: Incomplete | None = None, aggregate_function_type: Incomplete | None = None ) -> None: ... @property def key(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builtin_statement.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builtin_statement.pyi index 5dba736e9..07acc0964 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builtin_statement.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/builtin_statement.pyi @@ -6,7 +6,7 @@ class BuiltinStatement(Statement): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., id: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, id: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/call_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/call_expression.pyi index 679705f36..ac679fc0d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/call_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/call_expression.pyi @@ -7,7 +7,7 @@ class CallExpression(Expression): attribute_map: Incomplete discriminator: Incomplete def __init__( - self, type: Incomplete | None = ..., callee: Incomplete | None = ..., arguments: Incomplete | None = ... + self, type: Incomplete | None = None, callee: Incomplete | None = None, arguments: Incomplete | None = None ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell.pyi index 9c0be23ee..ccb50b6d6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell.pyi @@ -6,13 +6,13 @@ class Cell: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - links: Incomplete | None = ..., - x: Incomplete | None = ..., - y: Incomplete | None = ..., - w: Incomplete | None = ..., - h: Incomplete | None = ..., - view_id: Incomplete | None = ..., + id: Incomplete | None = None, + links: Incomplete | None = None, + x: Incomplete | None = None, + y: Incomplete | None = None, + w: Incomplete | None = None, + h: Incomplete | None = None, + view_id: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_links.pyi index 90fbc708f..2b1d3dc8f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_links.pyi @@ -4,7 +4,7 @@ class CellLinks: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, _self: Incomplete | None = ..., view: Incomplete | None = ...) -> None: ... + def __init__(self, _self: Incomplete | None = None, view: Incomplete | None = None) -> None: ... @property def view(self): ... @view.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_update.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_update.pyi index 78b5f2008..654997afa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_update.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_update.pyi @@ -5,7 +5,7 @@ class CellUpdate: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, x: Incomplete | None = ..., y: Incomplete | None = ..., w: Incomplete | None = ..., h: Incomplete | None = ... + self, x: Incomplete | None = None, y: Incomplete | None = None, w: Incomplete | None = None, h: Incomplete | None = None ) -> None: ... @property def x(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_with_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_with_view_properties.pyi index fcb4fa486..cdb8d76b0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_with_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/cell_with_view_properties.pyi @@ -8,15 +8,15 @@ class CellWithViewProperties(Cell): discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - properties: Incomplete | None = ..., - id: Incomplete | None = ..., - links: Incomplete | None = ..., - x: Incomplete | None = ..., - y: Incomplete | None = ..., - w: Incomplete | None = ..., - h: Incomplete | None = ..., - view_id: Incomplete | None = ..., + name: Incomplete | None = None, + properties: Incomplete | None = None, + id: Incomplete | None = None, + links: Incomplete | None = None, + x: Incomplete | None = None, + y: Incomplete | None = None, + w: Incomplete | None = None, + h: Incomplete | None = None, + view_id: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check.pyi index d2013bdaf..a6d4dd4c9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check.pyi @@ -5,7 +5,7 @@ class Check: attribute_map: Incomplete discriminator_value_class_map: Incomplete discriminator: str - def __init__(self, type: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_base.pyi index 48c7aa77a..c32c0550a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_base.pyi @@ -6,21 +6,21 @@ class CheckBase: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - name: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - query: Incomplete | None = ..., - status: Incomplete | None = ..., - description: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + id: Incomplete | None = None, + name: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + query: Incomplete | None = None, + status: Incomplete | None = None, + description: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_base_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_base_links.pyi index da935fb9c..aeae82955 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_base_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_base_links.pyi @@ -6,11 +6,11 @@ class CheckBaseLinks: discriminator: Incomplete def __init__( self, - _self: Incomplete | None = ..., - labels: Incomplete | None = ..., - members: Incomplete | None = ..., - owners: Incomplete | None = ..., - query: Incomplete | None = ..., + _self: Incomplete | None = None, + labels: Incomplete | None = None, + members: Incomplete | None = None, + owners: Incomplete | None = None, + query: Incomplete | None = None, ) -> None: ... @property def labels(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_discriminator.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_discriminator.pyi index 50e776cb7..7fe7f09b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_discriminator.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_discriminator.pyi @@ -8,21 +8,21 @@ class CheckDiscriminator(CheckBase): discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - name: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - query: Incomplete | None = ..., - status: Incomplete | None = ..., - description: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + id: Incomplete | None = None, + name: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + query: Incomplete | None = None, + status: Incomplete | None = None, + description: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... def to_dict(self): ... def to_str(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_patch.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_patch.pyi index 9354879ea..670855c00 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_patch.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_patch.pyi @@ -5,7 +5,7 @@ class CheckPatch: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., description: Incomplete | None = ..., status: Incomplete | None = ... + self, name: Incomplete | None = None, description: Incomplete | None = None, status: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_view_properties.pyi index 4e2070481..ce42cd3eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/check_view_properties.pyi @@ -8,16 +8,16 @@ class CheckViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - shape: Incomplete | None = ..., - check_id: Incomplete | None = ..., - check: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - legend_colorize_rows: Incomplete | None = ..., - legend_hide: Incomplete | None = ..., - legend_opacity: Incomplete | None = ..., - legend_orientation_threshold: Incomplete | None = ..., + type: Incomplete | None = None, + shape: Incomplete | None = None, + check_id: Incomplete | None = None, + check: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + legend_colorize_rows: Incomplete | None = None, + legend_hide: Incomplete | None = None, + legend_opacity: Incomplete | None = None, + legend_orientation_threshold: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/checks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/checks.pyi index d9879c8d5..563fa0372 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/checks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/checks.pyi @@ -4,7 +4,7 @@ class Checks: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, checks: Incomplete | None = ..., links: Incomplete | None = ...) -> None: ... + def __init__(self, checks: Incomplete | None = None, links: Incomplete | None = None) -> None: ... @property def checks(self): ... @checks.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/conditional_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/conditional_expression.pyi index 89493f624..30f04107e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/conditional_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/conditional_expression.pyi @@ -8,10 +8,10 @@ class ConditionalExpression(Expression): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - test: Incomplete | None = ..., - alternate: Incomplete | None = ..., - consequent: Incomplete | None = ..., + type: Incomplete | None = None, + test: Incomplete | None = None, + alternate: Incomplete | None = None, + consequent: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/config.pyi index d81e64af3..bf02e6b82 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/config.pyi @@ -4,7 +4,7 @@ class Config: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, config: Incomplete | None = ...) -> None: ... + def __init__(self, config: Incomplete | None = None) -> None: ... @property def config(self): ... @config.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/constant_variable_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/constant_variable_properties.pyi index cd0c6ced8..9e077bb59 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/constant_variable_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/constant_variable_properties.pyi @@ -6,7 +6,7 @@ class ConstantVariableProperties(VariableProperties): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., values: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, values: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/create_cell.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/create_cell.pyi index ff8b1b42f..1ff16d2d2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/create_cell.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/create_cell.pyi @@ -6,12 +6,12 @@ class CreateCell: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - x: Incomplete | None = ..., - y: Incomplete | None = ..., - w: Incomplete | None = ..., - h: Incomplete | None = ..., - using_view: Incomplete | None = ..., + name: Incomplete | None = None, + x: Incomplete | None = None, + y: Incomplete | None = None, + w: Incomplete | None = None, + h: Incomplete | None = None, + using_view: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/create_dashboard_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/create_dashboard_request.pyi index 70a915787..6e4349f7b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/create_dashboard_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/create_dashboard_request.pyi @@ -5,7 +5,7 @@ class CreateDashboardRequest: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, org_id: Incomplete | None = ..., name: Incomplete | None = ..., description: Incomplete | None = ... + self, org_id: Incomplete | None = None, name: Incomplete | None = None, description: Incomplete | None = None ) -> None: ... @property def org_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/custom_check.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/custom_check.pyi index 3734b93c7..9dcb7281b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/custom_check.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/custom_check.pyi @@ -8,22 +8,22 @@ class CustomCheck(CheckDiscriminator): discriminator: Incomplete def __init__( self, - type: str = ..., - id: Incomplete | None = ..., - name: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - query: Incomplete | None = ..., - status: Incomplete | None = ..., - description: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: str = "custom", + id: Incomplete | None = None, + name: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + query: Incomplete | None = None, + status: Incomplete | None = None, + description: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard.pyi index 105115cef..1f3a1da4b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard.pyi @@ -8,14 +8,14 @@ class Dashboard(CreateDashboardRequest): discriminator: Incomplete def __init__( self, - links: Incomplete | None = ..., - id: Incomplete | None = ..., - meta: Incomplete | None = ..., - cells: Incomplete | None = ..., - labels: Incomplete | None = ..., - org_id: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., + links: Incomplete | None = None, + id: Incomplete | None = None, + meta: Incomplete | None = None, + cells: Incomplete | None = None, + labels: Incomplete | None = None, + org_id: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, ) -> None: ... @property def links(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_color.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_color.pyi index 2afe2bea7..92d00a479 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_color.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_color.pyi @@ -6,11 +6,11 @@ class DashboardColor: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - type: Incomplete | None = ..., - hex: Incomplete | None = ..., - name: Incomplete | None = ..., - value: Incomplete | None = ..., + id: Incomplete | None = None, + type: Incomplete | None = None, + hex: Incomplete | None = None, + name: Incomplete | None = None, + value: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_query.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_query.pyi index 54f9104f2..a9d3507da 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_query.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_query.pyi @@ -6,10 +6,10 @@ class DashboardQuery: discriminator: Incomplete def __init__( self, - text: Incomplete | None = ..., - edit_mode: Incomplete | None = ..., - name: Incomplete | None = ..., - builder_config: Incomplete | None = ..., + text: Incomplete | None = None, + edit_mode: Incomplete | None = None, + name: Incomplete | None = None, + builder_config: Incomplete | None = None, ) -> None: ... @property def text(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_with_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_with_view_properties.pyi index aaeeff0ec..56342a632 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_with_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboard_with_view_properties.pyi @@ -8,14 +8,14 @@ class DashboardWithViewProperties(CreateDashboardRequest): discriminator: Incomplete def __init__( self, - links: Incomplete | None = ..., - id: Incomplete | None = ..., - meta: Incomplete | None = ..., - cells: Incomplete | None = ..., - labels: Incomplete | None = ..., - org_id: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., + links: Incomplete | None = None, + id: Incomplete | None = None, + meta: Incomplete | None = None, + cells: Incomplete | None = None, + labels: Incomplete | None = None, + org_id: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, ) -> None: ... @property def links(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboards.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboards.pyi index 56b2a9d09..0755b771a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboards.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dashboards.pyi @@ -4,7 +4,7 @@ class Dashboards: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., dashboards: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, dashboards: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/date_time_literal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/date_time_literal.pyi index c1226ad9a..dd33297c3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/date_time_literal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/date_time_literal.pyi @@ -6,7 +6,7 @@ class DateTimeLiteral(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, value: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbr_ps.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbr_ps.pyi index 190351f70..94e8bbab1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbr_ps.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbr_ps.pyi @@ -4,7 +4,7 @@ class DBRPs: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, content: Incomplete | None = ...) -> None: ... + def __init__(self, content: Incomplete | None = None) -> None: ... @property def content(self): ... @content.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp.pyi index 23ecea546..2b6510fd1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp.pyi @@ -6,13 +6,13 @@ class DBRP: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - bucket_id: Incomplete | None = ..., - database: Incomplete | None = ..., - retention_policy: Incomplete | None = ..., - default: Incomplete | None = ..., - links: Incomplete | None = ..., + id: Incomplete | None = None, + org_id: Incomplete | None = None, + bucket_id: Incomplete | None = None, + database: Incomplete | None = None, + retention_policy: Incomplete | None = None, + default: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_create.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_create.pyi index 3d462b1bc..d4d10b092 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_create.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_create.pyi @@ -6,12 +6,12 @@ class DBRPCreate: discriminator: Incomplete def __init__( self, - org_id: Incomplete | None = ..., - org: Incomplete | None = ..., - bucket_id: Incomplete | None = ..., - database: Incomplete | None = ..., - retention_policy: Incomplete | None = ..., - default: Incomplete | None = ..., + org_id: Incomplete | None = None, + org: Incomplete | None = None, + bucket_id: Incomplete | None = None, + database: Incomplete | None = None, + retention_policy: Incomplete | None = None, + default: Incomplete | None = None, ) -> None: ... @property def org_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_get.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_get.pyi index df0e24b06..1d82e5b2d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_get.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_get.pyi @@ -4,7 +4,7 @@ class DBRPGet: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, content: Incomplete | None = ...) -> None: ... + def __init__(self, content: Incomplete | None = None) -> None: ... @property def content(self): ... @content.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_update.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_update.pyi index e36ca3337..66cf660e9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_update.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dbrp_update.pyi @@ -4,7 +4,7 @@ class DBRPUpdate: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, retention_policy: Incomplete | None = ..., default: Incomplete | None = ...) -> None: ... + def __init__(self, retention_policy: Incomplete | None = None, default: Incomplete | None = None) -> None: ... @property def retention_policy(self): ... @retention_policy.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/deadman_check.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/deadman_check.pyi index 7f270cee2..c7633cd73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/deadman_check.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/deadman_check.pyi @@ -8,30 +8,30 @@ class DeadmanCheck(CheckDiscriminator): discriminator: Incomplete def __init__( self, - type: str = ..., - time_since: Incomplete | None = ..., - stale_time: Incomplete | None = ..., - report_zero: Incomplete | None = ..., - level: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - tags: Incomplete | None = ..., - status_message_template: Incomplete | None = ..., - id: Incomplete | None = ..., - name: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - query: Incomplete | None = ..., - status: Incomplete | None = ..., - description: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: str = "deadman", + time_since: Incomplete | None = None, + stale_time: Incomplete | None = None, + report_zero: Incomplete | None = None, + level: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + tags: Incomplete | None = None, + status_message_template: Incomplete | None = None, + id: Incomplete | None = None, + name: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + query: Incomplete | None = None, + status: Incomplete | None = None, + description: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/decimal_places.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/decimal_places.pyi index 15400d4b2..7d8db236a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/decimal_places.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/decimal_places.pyi @@ -4,7 +4,7 @@ class DecimalPlaces: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, is_enforced: Incomplete | None = ..., digits: Incomplete | None = ...) -> None: ... + def __init__(self, is_enforced: Incomplete | None = None, digits: Incomplete | None = None) -> None: ... @property def is_enforced(self): ... @is_enforced.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/delete_predicate_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/delete_predicate_request.pyi index a4606ae4e..0c8cd263d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/delete_predicate_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/delete_predicate_request.pyi @@ -5,7 +5,7 @@ class DeletePredicateRequest: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, start: Incomplete | None = ..., stop: Incomplete | None = ..., predicate: Incomplete | None = ... + self, start: Incomplete | None = None, stop: Incomplete | None = None, predicate: Incomplete | None = None ) -> None: ... @property def start(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dialect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dialect.pyi index 420a1f231..0f33b9440 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dialect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dialect.pyi @@ -6,11 +6,11 @@ class Dialect: discriminator: Incomplete def __init__( self, - header: bool = ..., - delimiter: str = ..., - annotations: Incomplete | None = ..., - comment_prefix: str = ..., - date_time_format: str = ..., + header: bool = True, + delimiter: str = ",", + annotations: Incomplete | None = None, + comment_prefix: str = "#", + date_time_format: str = "RFC3339", ) -> None: ... @property def header(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dict_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dict_expression.pyi index 0200e72cf..ed47f1cfe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dict_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dict_expression.pyi @@ -6,7 +6,7 @@ class DictExpression(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., elements: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, elements: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dict_item.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dict_item.pyi index 06ebcad4c..f9dc62b3d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dict_item.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/dict_item.pyi @@ -4,7 +4,7 @@ class DictItem: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., key: Incomplete | None = ..., val: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, key: Incomplete | None = None, val: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/duration.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/duration.pyi index 4cbf5e986..e6465c8c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/duration.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/duration.pyi @@ -5,7 +5,7 @@ class Duration: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, type: Incomplete | None = ..., magnitude: Incomplete | None = ..., unit: Incomplete | None = ... + self, type: Incomplete | None = None, magnitude: Incomplete | None = None, unit: Incomplete | None = None ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/duration_literal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/duration_literal.pyi index 783fa7fd2..4e6663161 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/duration_literal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/duration_literal.pyi @@ -6,7 +6,7 @@ class DurationLiteral(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., values: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, values: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/error.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/error.pyi index 27d3183b4..bf554a229 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/error.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/error.pyi @@ -6,10 +6,10 @@ class Error: discriminator: Incomplete def __init__( self, - code: Incomplete | None = ..., - message: Incomplete | None = ..., - op: Incomplete | None = ..., - err: Incomplete | None = ..., + code: Incomplete | None = None, + message: Incomplete | None = None, + op: Incomplete | None = None, + err: Incomplete | None = None, ) -> None: ... @property def code(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/expression_statement.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/expression_statement.pyi index 815bfae9e..1a3d31cc4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/expression_statement.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/expression_statement.pyi @@ -6,7 +6,7 @@ class ExpressionStatement(Statement): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., expression: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, expression: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/field.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/field.pyi index 830b1567c..ae3b6c016 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/field.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/field.pyi @@ -6,10 +6,10 @@ class Field: discriminator: Incomplete def __init__( self, - value: Incomplete | None = ..., - type: Incomplete | None = ..., - alias: Incomplete | None = ..., - args: Incomplete | None = ..., + value: Incomplete | None = None, + type: Incomplete | None = None, + alias: Incomplete | None = None, + args: Incomplete | None = None, ) -> None: ... @property def value(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/file.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/file.pyi index 5a413d6b0..bec8e1152 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/file.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/file.pyi @@ -6,11 +6,11 @@ class File: discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - name: Incomplete | None = ..., - package: Incomplete | None = ..., - imports: Incomplete | None = ..., - body: Incomplete | None = ..., + type: Incomplete | None = None, + name: Incomplete | None = None, + package: Incomplete | None = None, + imports: Incomplete | None = None, + body: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/float_literal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/float_literal.pyi index 2033f4309..70ea53c9b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/float_literal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/float_literal.pyi @@ -6,7 +6,7 @@ class FloatLiteral(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, value: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_response.pyi index edcc9796e..7eada7645 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_response.pyi @@ -4,7 +4,7 @@ class FluxResponse: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, flux: Incomplete | None = ...) -> None: ... + def __init__(self, flux: Incomplete | None = None) -> None: ... @property def flux(self): ... @flux.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_suggestion.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_suggestion.pyi index 0eb66df44..9620dbd29 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_suggestion.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_suggestion.pyi @@ -4,7 +4,7 @@ class FluxSuggestion: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, name: Incomplete | None = ..., params: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None, params: Incomplete | None = None) -> None: ... @property def name(self): ... @name.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_suggestions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_suggestions.pyi index 8518329c0..8b919b10b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_suggestions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/flux_suggestions.pyi @@ -4,7 +4,7 @@ class FluxSuggestions: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, funcs: Incomplete | None = ...) -> None: ... + def __init__(self, funcs: Incomplete | None = None) -> None: ... @property def funcs(self): ... @funcs.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/function_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/function_expression.pyi index 5b1fb029f..9b22d9d8e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/function_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/function_expression.pyi @@ -6,7 +6,9 @@ class FunctionExpression(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., params: Incomplete | None = ..., body: Incomplete | None = ...) -> None: ... + def __init__( + self, type: Incomplete | None = None, params: Incomplete | None = None, body: Incomplete | None = None + ) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/gauge_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/gauge_view_properties.pyi index b128a2611..68543b312 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/gauge_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/gauge_view_properties.pyi @@ -8,17 +8,17 @@ class GaugeViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - prefix: Incomplete | None = ..., - tick_prefix: Incomplete | None = ..., - suffix: Incomplete | None = ..., - tick_suffix: Incomplete | None = ..., - decimal_places: Incomplete | None = ..., + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + prefix: Incomplete | None = None, + tick_prefix: Incomplete | None = None, + suffix: Incomplete | None = None, + tick_suffix: Incomplete | None = None, + decimal_places: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/greater_threshold.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/greater_threshold.pyi index 689b53be9..2a134031a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/greater_threshold.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/greater_threshold.pyi @@ -7,7 +7,11 @@ class GreaterThreshold(ThresholdBase): attribute_map: Incomplete discriminator: Incomplete def __init__( - self, type: str = ..., value: Incomplete | None = ..., level: Incomplete | None = ..., all_values: Incomplete | None = ... + self, + type: str = "greater", + value: Incomplete | None = None, + level: Incomplete | None = None, + all_values: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/health_check.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/health_check.pyi index c8b1c93f5..94f4b242d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/health_check.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/health_check.pyi @@ -6,12 +6,12 @@ class HealthCheck: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - message: Incomplete | None = ..., - checks: Incomplete | None = ..., - status: Incomplete | None = ..., - version: Incomplete | None = ..., - commit: Incomplete | None = ..., + name: Incomplete | None = None, + message: Incomplete | None = None, + checks: Incomplete | None = None, + status: Incomplete | None = None, + version: Incomplete | None = None, + commit: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/heatmap_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/heatmap_view_properties.pyi index 4de9504e8..a8b719b91 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/heatmap_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/heatmap_view_properties.pyi @@ -8,36 +8,36 @@ class HeatmapViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - time_format: Incomplete | None = ..., - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - x_column: Incomplete | None = ..., - generate_x_axis_ticks: Incomplete | None = ..., - x_total_ticks: Incomplete | None = ..., - x_tick_start: Incomplete | None = ..., - x_tick_step: Incomplete | None = ..., - y_column: Incomplete | None = ..., - generate_y_axis_ticks: Incomplete | None = ..., - y_total_ticks: Incomplete | None = ..., - y_tick_start: Incomplete | None = ..., - y_tick_step: Incomplete | None = ..., - x_domain: Incomplete | None = ..., - y_domain: Incomplete | None = ..., - x_axis_label: Incomplete | None = ..., - y_axis_label: Incomplete | None = ..., - x_prefix: Incomplete | None = ..., - x_suffix: Incomplete | None = ..., - y_prefix: Incomplete | None = ..., - y_suffix: Incomplete | None = ..., - bin_size: Incomplete | None = ..., - legend_colorize_rows: Incomplete | None = ..., - legend_hide: Incomplete | None = ..., - legend_opacity: Incomplete | None = ..., - legend_orientation_threshold: Incomplete | None = ..., + time_format: Incomplete | None = None, + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + x_column: Incomplete | None = None, + generate_x_axis_ticks: Incomplete | None = None, + x_total_ticks: Incomplete | None = None, + x_tick_start: Incomplete | None = None, + x_tick_step: Incomplete | None = None, + y_column: Incomplete | None = None, + generate_y_axis_ticks: Incomplete | None = None, + y_total_ticks: Incomplete | None = None, + y_tick_start: Incomplete | None = None, + y_tick_step: Incomplete | None = None, + x_domain: Incomplete | None = None, + y_domain: Incomplete | None = None, + x_axis_label: Incomplete | None = None, + y_axis_label: Incomplete | None = None, + x_prefix: Incomplete | None = None, + x_suffix: Incomplete | None = None, + y_prefix: Incomplete | None = None, + y_suffix: Incomplete | None = None, + bin_size: Incomplete | None = None, + legend_colorize_rows: Incomplete | None = None, + legend_hide: Incomplete | None = None, + legend_opacity: Incomplete | None = None, + legend_orientation_threshold: Incomplete | None = None, ) -> None: ... @property def time_format(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/histogram_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/histogram_view_properties.pyi index 54b641b49..7c7890271 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/histogram_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/histogram_view_properties.pyi @@ -8,22 +8,22 @@ class HistogramViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - x_column: Incomplete | None = ..., - fill_columns: Incomplete | None = ..., - x_domain: Incomplete | None = ..., - x_axis_label: Incomplete | None = ..., - position: Incomplete | None = ..., - bin_count: Incomplete | None = ..., - legend_colorize_rows: Incomplete | None = ..., - legend_hide: Incomplete | None = ..., - legend_opacity: Incomplete | None = ..., - legend_orientation_threshold: Incomplete | None = ..., + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + x_column: Incomplete | None = None, + fill_columns: Incomplete | None = None, + x_domain: Incomplete | None = None, + x_axis_label: Incomplete | None = None, + position: Incomplete | None = None, + bin_count: Incomplete | None = None, + legend_colorize_rows: Incomplete | None = None, + legend_hide: Incomplete | None = None, + legend_opacity: Incomplete | None = None, + legend_orientation_threshold: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_endpoint.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_endpoint.pyi index e0bdf1532..0b63747d2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_endpoint.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_endpoint.pyi @@ -8,25 +8,25 @@ class HTTPNotificationEndpoint(NotificationEndpointDiscriminator): discriminator: Incomplete def __init__( self, - url: Incomplete | None = ..., - username: Incomplete | None = ..., - password: Incomplete | None = ..., - token: Incomplete | None = ..., - method: Incomplete | None = ..., - auth_method: Incomplete | None = ..., - content_template: Incomplete | None = ..., - headers: Incomplete | None = ..., - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - user_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - description: Incomplete | None = ..., - name: Incomplete | None = ..., - status: str = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., - type: str = ..., + url: Incomplete | None = None, + username: Incomplete | None = None, + password: Incomplete | None = None, + token: Incomplete | None = None, + method: Incomplete | None = None, + auth_method: Incomplete | None = None, + content_template: Incomplete | None = None, + headers: Incomplete | None = None, + id: Incomplete | None = None, + org_id: Incomplete | None = None, + user_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + description: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", + labels: Incomplete | None = None, + links: Incomplete | None = None, + type: str = "http", ) -> None: ... @property def url(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_rule.pyi index 48b75ff84..c2af5dd93 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_rule.pyi @@ -8,31 +8,31 @@ class HTTPNotificationRule(HTTPNotificationRuleBase): discriminator: Incomplete def __init__( self, - type: str = ..., - url: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: str = "http", + url: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... def to_dict(self): ... def to_str(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_rule_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_rule_base.pyi index 94b8b48fa..cdbb00b1b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_rule_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/http_notification_rule_base.pyi @@ -8,31 +8,31 @@ class HTTPNotificationRuleBase(NotificationRuleDiscriminator): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - url: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: Incomplete | None = None, + url: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/identifier.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/identifier.pyi index 9243f8b0b..e06aa053f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/identifier.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/identifier.pyi @@ -6,7 +6,7 @@ class Identifier(PropertyKey): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, name: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/import_declaration.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/import_declaration.pyi index 3312ef86f..559312f7d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/import_declaration.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/import_declaration.pyi @@ -4,7 +4,7 @@ class ImportDeclaration: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., _as: Incomplete | None = ..., path: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, _as: Incomplete | None = None, path: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/index_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/index_expression.pyi index 7fe30f497..010928525 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/index_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/index_expression.pyi @@ -6,7 +6,9 @@ class IndexExpression(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., array: Incomplete | None = ..., index: Incomplete | None = ...) -> None: ... + def __init__( + self, type: Incomplete | None = None, array: Incomplete | None = None, index: Incomplete | None = None + ) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/integer_literal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/integer_literal.pyi index f679b6528..a20edb2cd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/integer_literal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/integer_literal.pyi @@ -6,7 +6,7 @@ class IntegerLiteral(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, value: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/is_onboarding.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/is_onboarding.pyi index f0c9af7d5..3425eaca5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/is_onboarding.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/is_onboarding.pyi @@ -4,7 +4,7 @@ class IsOnboarding: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, allowed: Incomplete | None = ...) -> None: ... + def __init__(self, allowed: Incomplete | None = None) -> None: ... @property def allowed(self): ... @allowed.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label.pyi index 913a3cf80..4fb33f0f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label.pyi @@ -6,10 +6,10 @@ class Label: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - name: Incomplete | None = ..., - properties: Incomplete | None = ..., + id: Incomplete | None = None, + org_id: Incomplete | None = None, + name: Incomplete | None = None, + properties: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_create_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_create_request.pyi index dd1cb27b2..c79bab007 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_create_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_create_request.pyi @@ -5,7 +5,7 @@ class LabelCreateRequest: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, org_id: Incomplete | None = ..., name: Incomplete | None = ..., properties: Incomplete | None = ... + self, org_id: Incomplete | None = None, name: Incomplete | None = None, properties: Incomplete | None = None ) -> None: ... @property def org_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_mapping.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_mapping.pyi index 951992bad..9a0b1239d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_mapping.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_mapping.pyi @@ -4,7 +4,7 @@ class LabelMapping: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, label_id: Incomplete | None = ...) -> None: ... + def __init__(self, label_id: Incomplete | None = None) -> None: ... @property def label_id(self): ... @label_id.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_response.pyi index 0d73edee8..370bbfbda 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_response.pyi @@ -4,7 +4,7 @@ class LabelResponse: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, label: Incomplete | None = ..., links: Incomplete | None = ...) -> None: ... + def __init__(self, label: Incomplete | None = None, links: Incomplete | None = None) -> None: ... @property def label(self): ... @label.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_update.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_update.pyi index a7b982fdb..05b0abcc4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_update.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/label_update.pyi @@ -4,7 +4,7 @@ class LabelUpdate: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, name: Incomplete | None = ..., properties: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None, properties: Incomplete | None = None) -> None: ... @property def name(self): ... @name.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/labels_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/labels_response.pyi index 1597ef0b5..83f3f38c1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/labels_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/labels_response.pyi @@ -4,7 +4,7 @@ class LabelsResponse: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, labels: Incomplete | None = ..., links: Incomplete | None = ...) -> None: ... + def __init__(self, labels: Incomplete | None = None, links: Incomplete | None = None) -> None: ... @property def labels(self): ... @labels.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/language_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/language_request.pyi index 6301bec72..00aaedb10 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/language_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/language_request.pyi @@ -4,7 +4,7 @@ class LanguageRequest: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, query: Incomplete | None = ...) -> None: ... + def __init__(self, query: Incomplete | None = None) -> None: ... @property def query(self): ... @query.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/legacy_authorization_post_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/legacy_authorization_post_request.pyi index 3a0817d50..e874a1c19 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/legacy_authorization_post_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/legacy_authorization_post_request.pyi @@ -8,12 +8,12 @@ class LegacyAuthorizationPostRequest(AuthorizationUpdateRequest): discriminator: Incomplete def __init__( self, - org_id: Incomplete | None = ..., - user_id: Incomplete | None = ..., - token: Incomplete | None = ..., - permissions: Incomplete | None = ..., - status: str = ..., - description: Incomplete | None = ..., + org_id: Incomplete | None = None, + user_id: Incomplete | None = None, + token: Incomplete | None = None, + permissions: Incomplete | None = None, + status: str = "active", + description: Incomplete | None = None, ) -> None: ... @property def org_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/lesser_threshold.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/lesser_threshold.pyi index 626af5b40..f427d5616 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/lesser_threshold.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/lesser_threshold.pyi @@ -7,7 +7,11 @@ class LesserThreshold(ThresholdBase): attribute_map: Incomplete discriminator: Incomplete def __init__( - self, type: str = ..., value: Incomplete | None = ..., level: Incomplete | None = ..., all_values: Incomplete | None = ... + self, + type: str = "lesser", + value: Incomplete | None = None, + level: Incomplete | None = None, + all_values: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_plus_single_stat_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_plus_single_stat_properties.pyi index aded4747f..4196ee7c5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_plus_single_stat_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_plus_single_stat_properties.pyi @@ -8,35 +8,35 @@ class LinePlusSingleStatProperties(ViewProperties): discriminator: Incomplete def __init__( self, - time_format: Incomplete | None = ..., - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - axes: Incomplete | None = ..., - static_legend: Incomplete | None = ..., - x_column: Incomplete | None = ..., - generate_x_axis_ticks: Incomplete | None = ..., - x_total_ticks: Incomplete | None = ..., - x_tick_start: Incomplete | None = ..., - x_tick_step: Incomplete | None = ..., - y_column: Incomplete | None = ..., - generate_y_axis_ticks: Incomplete | None = ..., - y_total_ticks: Incomplete | None = ..., - y_tick_start: Incomplete | None = ..., - y_tick_step: Incomplete | None = ..., - shade_below: Incomplete | None = ..., - hover_dimension: Incomplete | None = ..., - position: Incomplete | None = ..., - prefix: Incomplete | None = ..., - suffix: Incomplete | None = ..., - decimal_places: Incomplete | None = ..., - legend_colorize_rows: Incomplete | None = ..., - legend_hide: Incomplete | None = ..., - legend_opacity: Incomplete | None = ..., - legend_orientation_threshold: Incomplete | None = ..., + time_format: Incomplete | None = None, + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + axes: Incomplete | None = None, + static_legend: Incomplete | None = None, + x_column: Incomplete | None = None, + generate_x_axis_ticks: Incomplete | None = None, + x_total_ticks: Incomplete | None = None, + x_tick_start: Incomplete | None = None, + x_tick_step: Incomplete | None = None, + y_column: Incomplete | None = None, + generate_y_axis_ticks: Incomplete | None = None, + y_total_ticks: Incomplete | None = None, + y_tick_start: Incomplete | None = None, + y_tick_step: Incomplete | None = None, + shade_below: Incomplete | None = None, + hover_dimension: Incomplete | None = None, + position: Incomplete | None = None, + prefix: Incomplete | None = None, + suffix: Incomplete | None = None, + decimal_places: Incomplete | None = None, + legend_colorize_rows: Incomplete | None = None, + legend_hide: Incomplete | None = None, + legend_opacity: Incomplete | None = None, + legend_orientation_threshold: Incomplete | None = None, ) -> None: ... @property def time_format(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_protocol_error.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_protocol_error.pyi index f610aed62..47d4d3094 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_protocol_error.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_protocol_error.pyi @@ -6,11 +6,11 @@ class LineProtocolError: discriminator: Incomplete def __init__( self, - code: Incomplete | None = ..., - message: Incomplete | None = ..., - op: Incomplete | None = ..., - err: Incomplete | None = ..., - line: Incomplete | None = ..., + code: Incomplete | None = None, + message: Incomplete | None = None, + op: Incomplete | None = None, + err: Incomplete | None = None, + line: Incomplete | None = None, ) -> None: ... @property def code(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_protocol_length_error.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_protocol_length_error.pyi index 5a278a79e..42f1c348d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_protocol_length_error.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/line_protocol_length_error.pyi @@ -4,7 +4,7 @@ class LineProtocolLengthError: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, code: Incomplete | None = ..., message: Incomplete | None = ...) -> None: ... + def __init__(self, code: Incomplete | None = None, message: Incomplete | None = None) -> None: ... @property def code(self): ... @code.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/links.pyi index a24c7454f..202819af8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/links.pyi @@ -4,7 +4,9 @@ class Links: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, next: Incomplete | None = ..., _self: Incomplete | None = ..., prev: Incomplete | None = ...) -> None: ... + def __init__( + self, next: Incomplete | None = None, _self: Incomplete | None = None, prev: Incomplete | None = None + ) -> None: ... @property def next(self): ... @next.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/list_stacks_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/list_stacks_response.pyi index 6b550a0a0..d2b7ee8ec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/list_stacks_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/list_stacks_response.pyi @@ -4,7 +4,7 @@ class ListStacksResponse: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, stacks: Incomplete | None = ...) -> None: ... + def __init__(self, stacks: Incomplete | None = None) -> None: ... @property def stacks(self): ... @stacks.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/log_event.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/log_event.pyi index 85d8fade2..db1bda0c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/log_event.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/log_event.pyi @@ -5,7 +5,7 @@ class LogEvent: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, time: Incomplete | None = ..., message: Incomplete | None = ..., run_id: Incomplete | None = ... + self, time: Incomplete | None = None, message: Incomplete | None = None, run_id: Incomplete | None = None ) -> None: ... @property def time(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/logical_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/logical_expression.pyi index 154462de0..321a202df 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/logical_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/logical_expression.pyi @@ -8,10 +8,10 @@ class LogicalExpression(Expression): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - operator: Incomplete | None = ..., - left: Incomplete | None = ..., - right: Incomplete | None = ..., + type: Incomplete | None = None, + operator: Incomplete | None = None, + left: Incomplete | None = None, + right: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/logs.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/logs.pyi index a48b6f91c..b96b51f83 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/logs.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/logs.pyi @@ -4,7 +4,7 @@ class Logs: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, events: Incomplete | None = ...) -> None: ... + def __init__(self, events: Incomplete | None = None) -> None: ... @property def events(self): ... @events.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/map_variable_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/map_variable_properties.pyi index d624ce949..e3bd6f55e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/map_variable_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/map_variable_properties.pyi @@ -6,7 +6,7 @@ class MapVariableProperties(VariableProperties): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., values: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, values: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/markdown_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/markdown_view_properties.pyi index 77fd8035e..207bd88fe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/markdown_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/markdown_view_properties.pyi @@ -6,7 +6,9 @@ class MarkdownViewProperties(ViewProperties): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., shape: Incomplete | None = ..., note: Incomplete | None = ...) -> None: ... + def __init__( + self, type: Incomplete | None = None, shape: Incomplete | None = None, note: Incomplete | None = None + ) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema.pyi index c6f8d6e0a..77dc64063 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema.pyi @@ -6,13 +6,13 @@ class MeasurementSchema: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - bucket_id: Incomplete | None = ..., - name: Incomplete | None = ..., - columns: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., + id: Incomplete | None = None, + org_id: Incomplete | None = None, + bucket_id: Incomplete | None = None, + name: Incomplete | None = None, + columns: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_column.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_column.pyi index b24812dd1..ed1c0a542 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_column.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_column.pyi @@ -5,7 +5,7 @@ class MeasurementSchemaColumn: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., type: Incomplete | None = ..., data_type: Incomplete | None = ... + self, name: Incomplete | None = None, type: Incomplete | None = None, data_type: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_create_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_create_request.pyi index ad1dfdcd7..ee878f37f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_create_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_create_request.pyi @@ -4,7 +4,7 @@ class MeasurementSchemaCreateRequest: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, name: Incomplete | None = ..., columns: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None, columns: Incomplete | None = None) -> None: ... @property def name(self): ... @name.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_list.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_list.pyi index f0fafb2af..c040b8274 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_list.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_list.pyi @@ -4,7 +4,7 @@ class MeasurementSchemaList: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, measurement_schemas: Incomplete | None = ...) -> None: ... + def __init__(self, measurement_schemas: Incomplete | None = None) -> None: ... @property def measurement_schemas(self): ... @measurement_schemas.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_update_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_update_request.pyi index 5bdf02606..077bfbb2d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_update_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/measurement_schema_update_request.pyi @@ -4,7 +4,7 @@ class MeasurementSchemaUpdateRequest: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, columns: Incomplete | None = ...) -> None: ... + def __init__(self, columns: Incomplete | None = None) -> None: ... @property def columns(self): ... @columns.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/member_assignment.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/member_assignment.pyi index 68e2590f6..2eea4ac73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/member_assignment.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/member_assignment.pyi @@ -6,7 +6,9 @@ class MemberAssignment(Statement): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., member: Incomplete | None = ..., init: Incomplete | None = ...) -> None: ... + def __init__( + self, type: Incomplete | None = None, member: Incomplete | None = None, init: Incomplete | None = None + ) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/member_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/member_expression.pyi index 419a6dccb..61b21f854 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/member_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/member_expression.pyi @@ -7,7 +7,7 @@ class MemberExpression(Expression): attribute_map: Incomplete discriminator: Incomplete def __init__( - self, type: Incomplete | None = ..., object: Incomplete | None = ..., _property: Incomplete | None = ... + self, type: Incomplete | None = None, object: Incomplete | None = None, _property: Incomplete | None = None ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/metadata_backup.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/metadata_backup.pyi index 3cf8ef9a4..c201a5556 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/metadata_backup.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/metadata_backup.pyi @@ -4,7 +4,9 @@ class MetadataBackup: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, kv: Incomplete | None = ..., sql: Incomplete | None = ..., buckets: Incomplete | None = ...) -> None: ... + def __init__( + self, kv: Incomplete | None = None, sql: Incomplete | None = None, buckets: Incomplete | None = None + ) -> None: ... @property def kv(self): ... @kv.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/model_property.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/model_property.pyi index 759dc4f3e..fd4a3e5c2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/model_property.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/model_property.pyi @@ -4,7 +4,9 @@ class ModelProperty: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., key: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__( + self, type: Incomplete | None = None, key: Incomplete | None = None, value: Incomplete | None = None + ) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/mosaic_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/mosaic_view_properties.pyi index fdc39b0a9..aca6e7e66 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/mosaic_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/mosaic_view_properties.pyi @@ -8,35 +8,35 @@ class MosaicViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - time_format: Incomplete | None = ..., - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - x_column: Incomplete | None = ..., - generate_x_axis_ticks: Incomplete | None = ..., - x_total_ticks: Incomplete | None = ..., - x_tick_start: Incomplete | None = ..., - x_tick_step: Incomplete | None = ..., - y_label_column_separator: Incomplete | None = ..., - y_label_columns: Incomplete | None = ..., - y_series_columns: Incomplete | None = ..., - fill_columns: Incomplete | None = ..., - x_domain: Incomplete | None = ..., - y_domain: Incomplete | None = ..., - x_axis_label: Incomplete | None = ..., - y_axis_label: Incomplete | None = ..., - x_prefix: Incomplete | None = ..., - x_suffix: Incomplete | None = ..., - y_prefix: Incomplete | None = ..., - y_suffix: Incomplete | None = ..., - hover_dimension: Incomplete | None = ..., - legend_colorize_rows: Incomplete | None = ..., - legend_hide: Incomplete | None = ..., - legend_opacity: Incomplete | None = ..., - legend_orientation_threshold: Incomplete | None = ..., + time_format: Incomplete | None = None, + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + x_column: Incomplete | None = None, + generate_x_axis_ticks: Incomplete | None = None, + x_total_ticks: Incomplete | None = None, + x_tick_start: Incomplete | None = None, + x_tick_step: Incomplete | None = None, + y_label_column_separator: Incomplete | None = None, + y_label_columns: Incomplete | None = None, + y_series_columns: Incomplete | None = None, + fill_columns: Incomplete | None = None, + x_domain: Incomplete | None = None, + y_domain: Incomplete | None = None, + x_axis_label: Incomplete | None = None, + y_axis_label: Incomplete | None = None, + x_prefix: Incomplete | None = None, + x_suffix: Incomplete | None = None, + y_prefix: Incomplete | None = None, + y_suffix: Incomplete | None = None, + hover_dimension: Incomplete | None = None, + legend_colorize_rows: Incomplete | None = None, + legend_hide: Incomplete | None = None, + legend_opacity: Incomplete | None = None, + legend_orientation_threshold: Incomplete | None = None, ) -> None: ... @property def time_format(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint.pyi index de8ffbdce..9f45abb23 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint.pyi @@ -5,7 +5,7 @@ class NotificationEndpoint: attribute_map: Incomplete discriminator_value_class_map: Incomplete discriminator: str - def __init__(self, type: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_base.pyi index bb7a37d4c..1a213237b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_base.pyi @@ -6,17 +6,17 @@ class NotificationEndpointBase: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - user_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - description: Incomplete | None = ..., - name: Incomplete | None = ..., - status: str = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., - type: Incomplete | None = ..., + id: Incomplete | None = None, + org_id: Incomplete | None = None, + user_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + description: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", + labels: Incomplete | None = None, + links: Incomplete | None = None, + type: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_base_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_base_links.pyi index e945e848c..48e906186 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_base_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_base_links.pyi @@ -6,10 +6,10 @@ class NotificationEndpointBaseLinks: discriminator: Incomplete def __init__( self, - _self: Incomplete | None = ..., - labels: Incomplete | None = ..., - members: Incomplete | None = ..., - owners: Incomplete | None = ..., + _self: Incomplete | None = None, + labels: Incomplete | None = None, + members: Incomplete | None = None, + owners: Incomplete | None = None, ) -> None: ... @property def labels(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_discriminator.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_discriminator.pyi index 2315c3d5d..0179fcf6c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_discriminator.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_discriminator.pyi @@ -8,17 +8,17 @@ class NotificationEndpointDiscriminator(NotificationEndpointBase): discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - user_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - description: Incomplete | None = ..., - name: Incomplete | None = ..., - status: str = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., - type: Incomplete | None = ..., + id: Incomplete | None = None, + org_id: Incomplete | None = None, + user_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + description: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", + labels: Incomplete | None = None, + links: Incomplete | None = None, + type: Incomplete | None = None, ) -> None: ... def to_dict(self): ... def to_str(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_update.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_update.pyi index 80f30dffa..43fd259c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_update.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoint_update.pyi @@ -5,7 +5,7 @@ class NotificationEndpointUpdate: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., description: Incomplete | None = ..., status: Incomplete | None = ... + self, name: Incomplete | None = None, description: Incomplete | None = None, status: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoints.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoints.pyi index 5f3fab0ef..6a00e8d62 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoints.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_endpoints.pyi @@ -4,7 +4,7 @@ class NotificationEndpoints: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, notification_endpoints: Incomplete | None = ..., links: Incomplete | None = ...) -> None: ... + def __init__(self, notification_endpoints: Incomplete | None = None, links: Incomplete | None = None) -> None: ... @property def notification_endpoints(self): ... @notification_endpoints.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule.pyi index 8eeca7f6c..77c338d27 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule.pyi @@ -5,7 +5,7 @@ class NotificationRule: attribute_map: Incomplete discriminator_value_class_map: Incomplete discriminator: str - def __init__(self, type: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_base.pyi index 636a256f9..02bee2c23 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_base.pyi @@ -6,29 +6,29 @@ class NotificationRuleBase: discriminator: Incomplete def __init__( self, - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def latest_completed(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_base_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_base_links.pyi index a745181a2..0dabc441c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_base_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_base_links.pyi @@ -6,11 +6,11 @@ class NotificationRuleBaseLinks: discriminator: Incomplete def __init__( self, - _self: Incomplete | None = ..., - labels: Incomplete | None = ..., - members: Incomplete | None = ..., - owners: Incomplete | None = ..., - query: Incomplete | None = ..., + _self: Incomplete | None = None, + labels: Incomplete | None = None, + members: Incomplete | None = None, + owners: Incomplete | None = None, + query: Incomplete | None = None, ) -> None: ... @property def labels(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_discriminator.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_discriminator.pyi index bbb750af1..ac900e510 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_discriminator.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_discriminator.pyi @@ -8,29 +8,29 @@ class NotificationRuleDiscriminator(NotificationRuleBase): discriminator: Incomplete def __init__( self, - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... def to_dict(self): ... def to_str(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_update.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_update.pyi index 84062324d..d64b07bb1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_update.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rule_update.pyi @@ -5,7 +5,7 @@ class NotificationRuleUpdate: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., description: Incomplete | None = ..., status: Incomplete | None = ... + self, name: Incomplete | None = None, description: Incomplete | None = None, status: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rules.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rules.pyi index e1d717b6b..6eebc7c6b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rules.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/notification_rules.pyi @@ -4,7 +4,7 @@ class NotificationRules: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, notification_rules: Incomplete | None = ..., links: Incomplete | None = ...) -> None: ... + def __init__(self, notification_rules: Incomplete | None = None, links: Incomplete | None = None) -> None: ... @property def notification_rules(self): ... @notification_rules.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/object_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/object_expression.pyi index e251b611e..7080f527a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/object_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/object_expression.pyi @@ -6,7 +6,7 @@ class ObjectExpression(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., properties: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, properties: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/onboarding_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/onboarding_request.pyi index fa70e8432..13b3c7404 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/onboarding_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/onboarding_request.pyi @@ -6,13 +6,13 @@ class OnboardingRequest: discriminator: Incomplete def __init__( self, - username: Incomplete | None = ..., - password: Incomplete | None = ..., - org: Incomplete | None = ..., - bucket: Incomplete | None = ..., - retention_period_seconds: Incomplete | None = ..., - retention_period_hrs: Incomplete | None = ..., - token: Incomplete | None = ..., + username: Incomplete | None = None, + password: Incomplete | None = None, + org: Incomplete | None = None, + bucket: Incomplete | None = None, + retention_period_seconds: Incomplete | None = None, + retention_period_hrs: Incomplete | None = None, + token: Incomplete | None = None, ) -> None: ... @property def username(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/onboarding_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/onboarding_response.pyi index 9b81563a1..40422e36d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/onboarding_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/onboarding_response.pyi @@ -6,10 +6,10 @@ class OnboardingResponse: discriminator: Incomplete def __init__( self, - user: Incomplete | None = ..., - org: Incomplete | None = ..., - bucket: Incomplete | None = ..., - auth: Incomplete | None = ..., + user: Incomplete | None = None, + org: Incomplete | None = None, + bucket: Incomplete | None = None, + auth: Incomplete | None = None, ) -> None: ... @property def user(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/option_statement.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/option_statement.pyi index a36e898ac..91161b9b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/option_statement.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/option_statement.pyi @@ -6,7 +6,7 @@ class OptionStatement(Statement): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., assignment: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, assignment: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organization.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organization.pyi index 01274bd29..c7e9f3145 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organization.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organization.pyi @@ -6,13 +6,13 @@ class Organization: discriminator: Incomplete def __init__( self, - links: Incomplete | None = ..., - id: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: str = ..., + links: Incomplete | None = None, + id: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: str = "active", ) -> None: ... @property def links(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organization_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organization_links.pyi index 7f958c5eb..ec53731fd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organization_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organization_links.pyi @@ -6,14 +6,14 @@ class OrganizationLinks: discriminator: Incomplete def __init__( self, - _self: Incomplete | None = ..., - members: Incomplete | None = ..., - owners: Incomplete | None = ..., - labels: Incomplete | None = ..., - secrets: Incomplete | None = ..., - buckets: Incomplete | None = ..., - tasks: Incomplete | None = ..., - dashboards: Incomplete | None = ..., + _self: Incomplete | None = None, + members: Incomplete | None = None, + owners: Incomplete | None = None, + labels: Incomplete | None = None, + secrets: Incomplete | None = None, + buckets: Incomplete | None = None, + tasks: Incomplete | None = None, + dashboards: Incomplete | None = None, ) -> None: ... @property def members(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organizations.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organizations.pyi index 9cfa3535a..98d86c403 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organizations.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/organizations.pyi @@ -4,7 +4,7 @@ class Organizations: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., orgs: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, orgs: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/package.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/package.pyi index 2a9b332ba..c388e2062 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/package.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/package.pyi @@ -6,10 +6,10 @@ class Package: discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - path: Incomplete | None = ..., - package: Incomplete | None = ..., - files: Incomplete | None = ..., + type: Incomplete | None = None, + path: Incomplete | None = None, + package: Incomplete | None = None, + files: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/package_clause.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/package_clause.pyi index 4561d4128..8ca4885f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/package_clause.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/package_clause.pyi @@ -4,7 +4,7 @@ class PackageClause: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, name: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_endpoint.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_endpoint.pyi index c3b15a364..fc61ab9ce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_endpoint.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_endpoint.pyi @@ -8,19 +8,19 @@ class PagerDutyNotificationEndpoint(NotificationEndpointDiscriminator): discriminator: Incomplete def __init__( self, - client_url: Incomplete | None = ..., - routing_key: Incomplete | None = ..., - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - user_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - description: Incomplete | None = ..., - name: Incomplete | None = ..., - status: str = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., - type: str = ..., + client_url: Incomplete | None = None, + routing_key: Incomplete | None = None, + id: Incomplete | None = None, + org_id: Incomplete | None = None, + user_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + description: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", + labels: Incomplete | None = None, + links: Incomplete | None = None, + type: str = "pagerduty", ) -> None: ... @property def client_url(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_rule.pyi index 226f29d67..6090bb616 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_rule.pyi @@ -8,31 +8,31 @@ class PagerDutyNotificationRule(PagerDutyNotificationRuleBase): discriminator: Incomplete def __init__( self, - type: str = ..., - message_template: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: str = "pagerduty", + message_template: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... def to_dict(self): ... def to_str(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_rule_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_rule_base.pyi index 5b4e9ac62..6b020b577 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_rule_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pager_duty_notification_rule_base.pyi @@ -8,31 +8,31 @@ class PagerDutyNotificationRuleBase(NotificationRuleDiscriminator): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - message_template: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: Incomplete | None = None, + message_template: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/paren_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/paren_expression.pyi index bf43111cf..faec9ecec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/paren_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/paren_expression.pyi @@ -6,7 +6,7 @@ class ParenExpression(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., expression: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, expression: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/password_reset_body.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/password_reset_body.pyi index fe33edc20..56ba7003a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/password_reset_body.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/password_reset_body.pyi @@ -4,7 +4,7 @@ class PasswordResetBody: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, password: Incomplete | None = ...) -> None: ... + def __init__(self, password: Incomplete | None = None) -> None: ... @property def password(self): ... @password.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_bucket_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_bucket_request.pyi index 743ce3d64..ec49a5a57 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_bucket_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_bucket_request.pyi @@ -5,7 +5,7 @@ class PatchBucketRequest: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., description: Incomplete | None = ..., retention_rules: Incomplete | None = ... + self, name: Incomplete | None = None, description: Incomplete | None = None, retention_rules: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_dashboard_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_dashboard_request.pyi index 4101ccf89..3d486879b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_dashboard_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_dashboard_request.pyi @@ -5,7 +5,7 @@ class PatchDashboardRequest: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., description: Incomplete | None = ..., cells: Incomplete | None = ... + self, name: Incomplete | None = None, description: Incomplete | None = None, cells: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_organization_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_organization_request.pyi index d82975038..89880e6c2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_organization_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_organization_request.pyi @@ -4,7 +4,7 @@ class PatchOrganizationRequest: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, name: Incomplete | None = ..., description: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None, description: Incomplete | None = None) -> None: ... @property def name(self): ... @name.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_retention_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_retention_rule.pyi index 4078c21f6..1bb5f51b7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_retention_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_retention_rule.pyi @@ -5,7 +5,10 @@ class PatchRetentionRule: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, type: str = ..., every_seconds: Incomplete | None = ..., shard_group_duration_seconds: Incomplete | None = ... + self, + type: str = "expire", + every_seconds: Incomplete | None = None, + shard_group_duration_seconds: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_stack_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_stack_request.pyi index f272f1b35..df7a24343 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_stack_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_stack_request.pyi @@ -6,10 +6,10 @@ class PatchStackRequest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - description: Incomplete | None = ..., - template_ur_ls: Incomplete | None = ..., - additional_resources: Incomplete | None = ..., + name: Incomplete | None = None, + description: Incomplete | None = None, + template_ur_ls: Incomplete | None = None, + additional_resources: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_stack_request_additional_resources.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_stack_request_additional_resources.pyi index 9976e39ef..0da86d918 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_stack_request_additional_resources.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/patch_stack_request_additional_resources.pyi @@ -5,7 +5,7 @@ class PatchStackRequestAdditionalResources: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, resource_id: Incomplete | None = ..., kind: Incomplete | None = ..., template_meta_name: Incomplete | None = ... + self, resource_id: Incomplete | None = None, kind: Incomplete | None = None, template_meta_name: Incomplete | None = None ) -> None: ... @property def resource_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/permission.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/permission.pyi index f755646e6..a17cf8001 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/permission.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/permission.pyi @@ -4,7 +4,7 @@ class Permission: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, action: Incomplete | None = ..., resource: Incomplete | None = ...) -> None: ... + def __init__(self, action: Incomplete | None = None, resource: Incomplete | None = None) -> None: ... @property def action(self): ... @action.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/permission_resource.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/permission_resource.pyi index 6c86fd5a9..f50bdcbfc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/permission_resource.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/permission_resource.pyi @@ -6,11 +6,11 @@ class PermissionResource: discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - id: Incomplete | None = ..., - name: Incomplete | None = ..., - org_id: Incomplete | None = ..., - org: Incomplete | None = ..., + type: Incomplete | None = None, + id: Incomplete | None = None, + name: Incomplete | None = None, + org_id: Incomplete | None = None, + org: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pipe_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pipe_expression.pyi index 70c9bd868..9c0963be5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pipe_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pipe_expression.pyi @@ -7,7 +7,7 @@ class PipeExpression(Expression): attribute_map: Incomplete discriminator: Incomplete def __init__( - self, type: Incomplete | None = ..., argument: Incomplete | None = ..., call: Incomplete | None = ... + self, type: Incomplete | None = None, argument: Incomplete | None = None, call: Incomplete | None = None ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pipe_literal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pipe_literal.pyi index 100806090..ec66cd603 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pipe_literal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/pipe_literal.pyi @@ -6,7 +6,7 @@ class PipeLiteral(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_bucket_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_bucket_request.pyi index 36e452ada..6024849e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_bucket_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_bucket_request.pyi @@ -6,12 +6,12 @@ class PostBucketRequest: discriminator: Incomplete def __init__( self, - org_id: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - rp: Incomplete | None = ..., - retention_rules: Incomplete | None = ..., - schema_type: Incomplete | None = ..., + org_id: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + rp: Incomplete | None = None, + retention_rules: Incomplete | None = None, + schema_type: Incomplete | None = None, ) -> None: ... @property def org_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_check.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_check.pyi index b2a71ff5f..af00fc3f4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_check.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_check.pyi @@ -5,7 +5,7 @@ class PostCheck: attribute_map: Incomplete discriminator_value_class_map: Incomplete discriminator: str - def __init__(self, type: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_notification_endpoint.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_notification_endpoint.pyi index 63916caa9..68aa2013f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_notification_endpoint.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_notification_endpoint.pyi @@ -5,7 +5,7 @@ class PostNotificationEndpoint: attribute_map: Incomplete discriminator_value_class_map: Incomplete discriminator: str - def __init__(self, type: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_notification_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_notification_rule.pyi index 708f39c9e..347a704b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_notification_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_notification_rule.pyi @@ -5,7 +5,7 @@ class PostNotificationRule: attribute_map: Incomplete discriminator_value_class_map: Incomplete discriminator: str - def __init__(self, type: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_organization_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_organization_request.pyi index e5621f0a1..02bb451b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_organization_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_organization_request.pyi @@ -4,7 +4,7 @@ class PostOrganizationRequest: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, name: Incomplete | None = ..., description: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None, description: Incomplete | None = None) -> None: ... @property def name(self): ... @name.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_restore_kv_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_restore_kv_response.pyi index b429b19c1..7cef21628 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_restore_kv_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_restore_kv_response.pyi @@ -4,7 +4,7 @@ class PostRestoreKVResponse: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, token: Incomplete | None = ...) -> None: ... + def __init__(self, token: Incomplete | None = None) -> None: ... @property def token(self): ... @token.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_stack_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_stack_request.pyi index 91696b89d..d9e4b1e52 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_stack_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/post_stack_request.pyi @@ -6,10 +6,10 @@ class PostStackRequest: discriminator: Incomplete def __init__( self, - org_id: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - urls: Incomplete | None = ..., + org_id: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + urls: Incomplete | None = None, ) -> None: ... @property def org_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query.pyi index 35f787ec8..d4a2aac23 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query.pyi @@ -6,12 +6,12 @@ class Query: discriminator: Incomplete def __init__( self, - extern: Incomplete | None = ..., - query: Incomplete | None = ..., - type: Incomplete | None = ..., - params: Incomplete | None = ..., - dialect: Incomplete | None = ..., - now: Incomplete | None = ..., + extern: Incomplete | None = None, + query: Incomplete | None = None, + type: Incomplete | None = None, + params: Incomplete | None = None, + dialect: Incomplete | None = None, + now: Incomplete | None = None, ) -> None: ... @property def extern(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query_variable_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query_variable_properties.pyi index 008172f1b..b88949eb5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query_variable_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query_variable_properties.pyi @@ -6,7 +6,7 @@ class QueryVariableProperties(VariableProperties): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., values: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, values: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query_variable_properties_values.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query_variable_properties_values.pyi index e2194b3de..7a0068681 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query_variable_properties_values.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/query_variable_properties_values.pyi @@ -4,7 +4,7 @@ class QueryVariablePropertiesValues: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, query: Incomplete | None = ..., language: Incomplete | None = ...) -> None: ... + def __init__(self, query: Incomplete | None = None, language: Incomplete | None = None) -> None: ... @property def query(self): ... @query.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/range_threshold.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/range_threshold.pyi index af6352b71..bc6b3aa97 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/range_threshold.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/range_threshold.pyi @@ -8,12 +8,12 @@ class RangeThreshold(ThresholdBase): discriminator: Incomplete def __init__( self, - type: str = ..., - min: Incomplete | None = ..., - max: Incomplete | None = ..., - within: Incomplete | None = ..., - level: Incomplete | None = ..., - all_values: Incomplete | None = ..., + type: str = "range", + min: Incomplete | None = None, + max: Incomplete | None = None, + within: Incomplete | None = None, + level: Incomplete | None = None, + all_values: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/ready.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/ready.pyi index 60e4c3466..64aaea7ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/ready.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/ready.pyi @@ -5,7 +5,7 @@ class Ready: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, status: Incomplete | None = ..., started: Incomplete | None = ..., up: Incomplete | None = ... + self, status: Incomplete | None = None, started: Incomplete | None = None, up: Incomplete | None = None ) -> None: ... @property def status(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/regexp_literal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/regexp_literal.pyi index 7061ab112..5cf69b5b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/regexp_literal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/regexp_literal.pyi @@ -6,7 +6,7 @@ class RegexpLiteral(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, value: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection.pyi index 4e18ae18f..21c64d669 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection.pyi @@ -6,13 +6,13 @@ class RemoteConnection: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - name: Incomplete | None = ..., - org_id: Incomplete | None = ..., - description: Incomplete | None = ..., - remote_url: Incomplete | None = ..., - remote_org_id: Incomplete | None = ..., - allow_insecure_tls: bool = ..., + id: Incomplete | None = None, + name: Incomplete | None = None, + org_id: Incomplete | None = None, + description: Incomplete | None = None, + remote_url: Incomplete | None = None, + remote_org_id: Incomplete | None = None, + allow_insecure_tls: bool = False, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection_creation_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection_creation_request.pyi index 9abbc37cc..f829233ff 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection_creation_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection_creation_request.pyi @@ -6,13 +6,13 @@ class RemoteConnectionCreationRequest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - description: Incomplete | None = ..., - org_id: Incomplete | None = ..., - remote_url: Incomplete | None = ..., - remote_api_token: Incomplete | None = ..., - remote_org_id: Incomplete | None = ..., - allow_insecure_tls: bool = ..., + name: Incomplete | None = None, + description: Incomplete | None = None, + org_id: Incomplete | None = None, + remote_url: Incomplete | None = None, + remote_api_token: Incomplete | None = None, + remote_org_id: Incomplete | None = None, + allow_insecure_tls: bool = False, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection_update_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection_update_request.pyi index 545335441..38f48aa9b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection_update_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connection_update_request.pyi @@ -6,12 +6,12 @@ class RemoteConnectionUpdateRequest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - description: Incomplete | None = ..., - remote_url: Incomplete | None = ..., - remote_api_token: Incomplete | None = ..., - remote_org_id: Incomplete | None = ..., - allow_insecure_tls: bool = ..., + name: Incomplete | None = None, + description: Incomplete | None = None, + remote_url: Incomplete | None = None, + remote_api_token: Incomplete | None = None, + remote_org_id: Incomplete | None = None, + allow_insecure_tls: bool = False, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connections.pyi index a886cfca5..f55a99ee9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/remote_connections.pyi @@ -4,7 +4,7 @@ class RemoteConnections: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, remotes: Incomplete | None = ...) -> None: ... + def __init__(self, remotes: Incomplete | None = None) -> None: ... @property def remotes(self): ... @remotes.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/renamable_field.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/renamable_field.pyi index 1c1cd7386..64e02dbc4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/renamable_field.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/renamable_field.pyi @@ -5,7 +5,7 @@ class RenamableField: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, internal_name: Incomplete | None = ..., display_name: Incomplete | None = ..., visible: Incomplete | None = ... + self, internal_name: Incomplete | None = None, display_name: Incomplete | None = None, visible: Incomplete | None = None ) -> None: ... @property def internal_name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication.pyi index 888905326..465a23943 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication.pyi @@ -6,18 +6,18 @@ class Replication: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - org_id: Incomplete | None = ..., - remote_id: Incomplete | None = ..., - local_bucket_id: Incomplete | None = ..., - remote_bucket_id: Incomplete | None = ..., - max_queue_size_bytes: Incomplete | None = ..., - current_queue_size_bytes: Incomplete | None = ..., - latest_response_code: Incomplete | None = ..., - latest_error_message: Incomplete | None = ..., - drop_non_retryable_data: Incomplete | None = ..., + id: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + org_id: Incomplete | None = None, + remote_id: Incomplete | None = None, + local_bucket_id: Incomplete | None = None, + remote_bucket_id: Incomplete | None = None, + max_queue_size_bytes: Incomplete | None = None, + current_queue_size_bytes: Incomplete | None = None, + latest_response_code: Incomplete | None = None, + latest_error_message: Incomplete | None = None, + drop_non_retryable_data: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication_creation_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication_creation_request.pyi index 860ce912a..b1b34a2cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication_creation_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication_creation_request.pyi @@ -6,14 +6,14 @@ class ReplicationCreationRequest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - description: Incomplete | None = ..., - org_id: Incomplete | None = ..., - remote_id: Incomplete | None = ..., - local_bucket_id: Incomplete | None = ..., - remote_bucket_id: Incomplete | None = ..., - max_queue_size_bytes: int = ..., - drop_non_retryable_data: bool = ..., + name: Incomplete | None = None, + description: Incomplete | None = None, + org_id: Incomplete | None = None, + remote_id: Incomplete | None = None, + local_bucket_id: Incomplete | None = None, + remote_bucket_id: Incomplete | None = None, + max_queue_size_bytes: int = 67108860, + drop_non_retryable_data: bool = False, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication_update_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication_update_request.pyi index 31ef087cb..656f5d4a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication_update_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replication_update_request.pyi @@ -6,12 +6,12 @@ class ReplicationUpdateRequest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - description: Incomplete | None = ..., - remote_id: Incomplete | None = ..., - remote_bucket_id: Incomplete | None = ..., - max_queue_size_bytes: Incomplete | None = ..., - drop_non_retryable_data: Incomplete | None = ..., + name: Incomplete | None = None, + description: Incomplete | None = None, + remote_id: Incomplete | None = None, + remote_bucket_id: Incomplete | None = None, + max_queue_size_bytes: Incomplete | None = None, + drop_non_retryable_data: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replications.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replications.pyi index 504ae66d4..100ef1d0b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replications.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/replications.pyi @@ -4,7 +4,7 @@ class Replications: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, replications: Incomplete | None = ...) -> None: ... + def __init__(self, replications: Incomplete | None = None) -> None: ... @property def replications(self): ... @replications.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_member.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_member.pyi index 3ca8877e8..41d4d7554 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_member.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_member.pyi @@ -8,12 +8,12 @@ class ResourceMember(UserResponse): discriminator: Incomplete def __init__( self, - role: str = ..., - id: Incomplete | None = ..., - oauth_id: Incomplete | None = ..., - name: Incomplete | None = ..., - status: str = ..., - links: Incomplete | None = ..., + role: str = "member", + id: Incomplete | None = None, + oauth_id: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", + links: Incomplete | None = None, ) -> None: ... @property def role(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_members.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_members.pyi index a167c5207..371ff5e50 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_members.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_members.pyi @@ -4,7 +4,7 @@ class ResourceMembers: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., users: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, users: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_members_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_members_links.pyi index 20aa58c4d..0fd7995db 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_members_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_members_links.pyi @@ -4,7 +4,7 @@ class ResourceMembersLinks: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, _self: Incomplete | None = ...) -> None: ... + def __init__(self, _self: Incomplete | None = None) -> None: ... def to_dict(self): ... def to_str(self): ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_owner.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_owner.pyi index 8fd8644b7..5ea9bb5b0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_owner.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_owner.pyi @@ -8,12 +8,12 @@ class ResourceOwner(UserResponse): discriminator: Incomplete def __init__( self, - role: str = ..., - id: Incomplete | None = ..., - oauth_id: Incomplete | None = ..., - name: Incomplete | None = ..., - status: str = ..., - links: Incomplete | None = ..., + role: str = "owner", + id: Incomplete | None = None, + oauth_id: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", + links: Incomplete | None = None, ) -> None: ... @property def role(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_owners.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_owners.pyi index f1edc5d3d..befbb5de6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_owners.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/resource_owners.pyi @@ -4,7 +4,7 @@ class ResourceOwners: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., users: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, users: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/restored_bucket_mappings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/restored_bucket_mappings.pyi index e64d8cf3d..7ad10c273 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/restored_bucket_mappings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/restored_bucket_mappings.pyi @@ -5,7 +5,7 @@ class RestoredBucketMappings: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, id: Incomplete | None = ..., name: Incomplete | None = ..., shard_mappings: Incomplete | None = ... + self, id: Incomplete | None = None, name: Incomplete | None = None, shard_mappings: Incomplete | None = None ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/retention_policy_manifest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/retention_policy_manifest.pyi index 735b96693..d075925ff 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/retention_policy_manifest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/retention_policy_manifest.pyi @@ -6,12 +6,12 @@ class RetentionPolicyManifest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - replica_n: Incomplete | None = ..., - duration: Incomplete | None = ..., - shard_group_duration: Incomplete | None = ..., - shard_groups: Incomplete | None = ..., - subscriptions: Incomplete | None = ..., + name: Incomplete | None = None, + replica_n: Incomplete | None = None, + duration: Incomplete | None = None, + shard_group_duration: Incomplete | None = None, + shard_groups: Incomplete | None = None, + subscriptions: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/return_statement.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/return_statement.pyi index c4483197d..c35fb8958 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/return_statement.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/return_statement.pyi @@ -6,7 +6,7 @@ class ReturnStatement(Statement): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., argument: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, argument: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes.pyi index 72c93de24..909cae592 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes.pyi @@ -6,24 +6,24 @@ class Routes: discriminator: Incomplete def __init__( self, - authorizations: Incomplete | None = ..., - buckets: Incomplete | None = ..., - dashboards: Incomplete | None = ..., - external: Incomplete | None = ..., - variables: Incomplete | None = ..., - me: Incomplete | None = ..., - flags: Incomplete | None = ..., - orgs: Incomplete | None = ..., - query: Incomplete | None = ..., - setup: Incomplete | None = ..., - signin: Incomplete | None = ..., - signout: Incomplete | None = ..., - sources: Incomplete | None = ..., - system: Incomplete | None = ..., - tasks: Incomplete | None = ..., - telegrafs: Incomplete | None = ..., - users: Incomplete | None = ..., - write: Incomplete | None = ..., + authorizations: Incomplete | None = None, + buckets: Incomplete | None = None, + dashboards: Incomplete | None = None, + external: Incomplete | None = None, + variables: Incomplete | None = None, + me: Incomplete | None = None, + flags: Incomplete | None = None, + orgs: Incomplete | None = None, + query: Incomplete | None = None, + setup: Incomplete | None = None, + signin: Incomplete | None = None, + signout: Incomplete | None = None, + sources: Incomplete | None = None, + system: Incomplete | None = None, + tasks: Incomplete | None = None, + telegrafs: Incomplete | None = None, + users: Incomplete | None = None, + write: Incomplete | None = None, ) -> None: ... @property def authorizations(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_external.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_external.pyi index 3c942fe24..97ad969e5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_external.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_external.pyi @@ -4,7 +4,7 @@ class RoutesExternal: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, status_feed: Incomplete | None = ...) -> None: ... + def __init__(self, status_feed: Incomplete | None = None) -> None: ... @property def status_feed(self): ... @status_feed.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_query.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_query.pyi index 4341f7fc7..9d92d3d25 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_query.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_query.pyi @@ -6,10 +6,10 @@ class RoutesQuery: discriminator: Incomplete def __init__( self, - _self: Incomplete | None = ..., - ast: Incomplete | None = ..., - analyze: Incomplete | None = ..., - suggestions: Incomplete | None = ..., + _self: Incomplete | None = None, + ast: Incomplete | None = None, + analyze: Incomplete | None = None, + suggestions: Incomplete | None = None, ) -> None: ... @property def ast(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_system.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_system.pyi index 810c4c3bf..dbf28489b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_system.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/routes_system.pyi @@ -5,7 +5,7 @@ class RoutesSystem: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, metrics: Incomplete | None = ..., debug: Incomplete | None = ..., health: Incomplete | None = ... + self, metrics: Incomplete | None = None, debug: Incomplete | None = None, health: Incomplete | None = None ) -> None: ... @property def metrics(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run.pyi index d89f7c0c0..936d75b38 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run.pyi @@ -6,15 +6,15 @@ class Run: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - status: Incomplete | None = ..., - scheduled_for: Incomplete | None = ..., - log: Incomplete | None = ..., - started_at: Incomplete | None = ..., - finished_at: Incomplete | None = ..., - requested_at: Incomplete | None = ..., - links: Incomplete | None = ..., + id: Incomplete | None = None, + task_id: Incomplete | None = None, + status: Incomplete | None = None, + scheduled_for: Incomplete | None = None, + log: Incomplete | None = None, + started_at: Incomplete | None = None, + finished_at: Incomplete | None = None, + requested_at: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run_links.pyi index 0c70c4f92..380e3d22a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run_links.pyi @@ -4,7 +4,9 @@ class RunLinks: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, _self: Incomplete | None = ..., task: Incomplete | None = ..., retry: Incomplete | None = ...) -> None: ... + def __init__( + self, _self: Incomplete | None = None, task: Incomplete | None = None, retry: Incomplete | None = None + ) -> None: ... @property def task(self): ... @task.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run_manually.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run_manually.pyi index bd81d4700..a0058aec8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run_manually.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/run_manually.pyi @@ -4,7 +4,7 @@ class RunManually: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, scheduled_for: Incomplete | None = ...) -> None: ... + def __init__(self, scheduled_for: Incomplete | None = None) -> None: ... @property def scheduled_for(self): ... @scheduled_for.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/runs.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/runs.pyi index 2d79c00a8..a8c196959 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/runs.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/runs.pyi @@ -4,7 +4,7 @@ class Runs: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., runs: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, runs: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scatter_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scatter_view_properties.pyi index 72ec314cb..872f2a194 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scatter_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scatter_view_properties.pyi @@ -8,37 +8,37 @@ class ScatterViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - time_format: Incomplete | None = ..., - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - x_column: Incomplete | None = ..., - generate_x_axis_ticks: Incomplete | None = ..., - x_total_ticks: Incomplete | None = ..., - x_tick_start: Incomplete | None = ..., - x_tick_step: Incomplete | None = ..., - y_column: Incomplete | None = ..., - generate_y_axis_ticks: Incomplete | None = ..., - y_total_ticks: Incomplete | None = ..., - y_tick_start: Incomplete | None = ..., - y_tick_step: Incomplete | None = ..., - fill_columns: Incomplete | None = ..., - symbol_columns: Incomplete | None = ..., - x_domain: Incomplete | None = ..., - y_domain: Incomplete | None = ..., - x_axis_label: Incomplete | None = ..., - y_axis_label: Incomplete | None = ..., - x_prefix: Incomplete | None = ..., - x_suffix: Incomplete | None = ..., - y_prefix: Incomplete | None = ..., - y_suffix: Incomplete | None = ..., - legend_colorize_rows: Incomplete | None = ..., - legend_hide: Incomplete | None = ..., - legend_opacity: Incomplete | None = ..., - legend_orientation_threshold: Incomplete | None = ..., + time_format: Incomplete | None = None, + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + x_column: Incomplete | None = None, + generate_x_axis_ticks: Incomplete | None = None, + x_total_ticks: Incomplete | None = None, + x_tick_start: Incomplete | None = None, + x_tick_step: Incomplete | None = None, + y_column: Incomplete | None = None, + generate_y_axis_ticks: Incomplete | None = None, + y_total_ticks: Incomplete | None = None, + y_tick_start: Incomplete | None = None, + y_tick_step: Incomplete | None = None, + fill_columns: Incomplete | None = None, + symbol_columns: Incomplete | None = None, + x_domain: Incomplete | None = None, + y_domain: Incomplete | None = None, + x_axis_label: Incomplete | None = None, + y_axis_label: Incomplete | None = None, + x_prefix: Incomplete | None = None, + x_suffix: Incomplete | None = None, + y_prefix: Incomplete | None = None, + y_suffix: Incomplete | None = None, + legend_colorize_rows: Incomplete | None = None, + legend_hide: Incomplete | None = None, + legend_opacity: Incomplete | None = None, + legend_orientation_threshold: Incomplete | None = None, ) -> None: ... @property def time_format(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_request.pyi index 225d84df2..6d950407f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_request.pyi @@ -6,12 +6,12 @@ class ScraperTargetRequest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - type: Incomplete | None = ..., - url: Incomplete | None = ..., - org_id: Incomplete | None = ..., - bucket_id: Incomplete | None = ..., - allow_insecure: bool = ..., + name: Incomplete | None = None, + type: Incomplete | None = None, + url: Incomplete | None = None, + org_id: Incomplete | None = None, + bucket_id: Incomplete | None = None, + allow_insecure: bool = False, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_response.pyi index 12f3caf1b..4de5f6b06 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_response.pyi @@ -8,16 +8,16 @@ class ScraperTargetResponse(ScraperTargetRequest): discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org: Incomplete | None = ..., - bucket: Incomplete | None = ..., - links: Incomplete | None = ..., - name: Incomplete | None = ..., - type: Incomplete | None = ..., - url: Incomplete | None = ..., - org_id: Incomplete | None = ..., - bucket_id: Incomplete | None = ..., - allow_insecure: bool = ..., + id: Incomplete | None = None, + org: Incomplete | None = None, + bucket: Incomplete | None = None, + links: Incomplete | None = None, + name: Incomplete | None = None, + type: Incomplete | None = None, + url: Incomplete | None = None, + org_id: Incomplete | None = None, + bucket_id: Incomplete | None = None, + allow_insecure: bool = False, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_responses.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_responses.pyi index cc2b9730b..743bf68ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_responses.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scraper_target_responses.pyi @@ -4,7 +4,7 @@ class ScraperTargetResponses: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, configurations: Incomplete | None = ...) -> None: ... + def __init__(self, configurations: Incomplete | None = None) -> None: ... @property def configurations(self): ... @configurations.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script.pyi index 04fc8c0f4..3d697387c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script.pyi @@ -6,15 +6,15 @@ class Script: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - org_id: Incomplete | None = ..., - script: Incomplete | None = ..., - language: Incomplete | None = ..., - url: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., + id: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + org_id: Incomplete | None = None, + script: Incomplete | None = None, + language: Incomplete | None = None, + url: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_create_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_create_request.pyi index a48f36c75..14cebc924 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_create_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_create_request.pyi @@ -6,10 +6,10 @@ class ScriptCreateRequest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - description: Incomplete | None = ..., - script: Incomplete | None = ..., - language: Incomplete | None = ..., + name: Incomplete | None = None, + description: Incomplete | None = None, + script: Incomplete | None = None, + language: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_invocation_params.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_invocation_params.pyi index c20744958..b9a5f1f4c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_invocation_params.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_invocation_params.pyi @@ -4,7 +4,7 @@ class ScriptInvocationParams: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, params: Incomplete | None = ...) -> None: ... + def __init__(self, params: Incomplete | None = None) -> None: ... @property def params(self): ... @params.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_update_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_update_request.pyi index 71b5dcab2..2fd5a755f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_update_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/script_update_request.pyi @@ -5,7 +5,7 @@ class ScriptUpdateRequest: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., description: Incomplete | None = ..., script: Incomplete | None = ... + self, name: Incomplete | None = None, description: Incomplete | None = None, script: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scripts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scripts.pyi index 723152398..0f2ce357c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scripts.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/scripts.pyi @@ -4,7 +4,7 @@ class Scripts: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, scripts: Incomplete | None = ...) -> None: ... + def __init__(self, scripts: Incomplete | None = None) -> None: ... @property def scripts(self): ... @scripts.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/secret_keys.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/secret_keys.pyi index f8c58550d..04343cf06 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/secret_keys.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/secret_keys.pyi @@ -4,7 +4,7 @@ class SecretKeys: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, secrets: Incomplete | None = ...) -> None: ... + def __init__(self, secrets: Incomplete | None = None) -> None: ... @property def secrets(self): ... @secrets.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/secret_keys_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/secret_keys_response.pyi index 877920fd5..344544700 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/secret_keys_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/secret_keys_response.pyi @@ -6,7 +6,7 @@ class SecretKeysResponse(SecretKeys): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., secrets: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, secrets: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_group_manifest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_group_manifest.pyi index 7fcab8696..c60c68203 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_group_manifest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_group_manifest.pyi @@ -6,12 +6,12 @@ class ShardGroupManifest: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - start_time: Incomplete | None = ..., - end_time: Incomplete | None = ..., - deleted_at: Incomplete | None = ..., - truncated_at: Incomplete | None = ..., - shards: Incomplete | None = ..., + id: Incomplete | None = None, + start_time: Incomplete | None = None, + end_time: Incomplete | None = None, + deleted_at: Incomplete | None = None, + truncated_at: Incomplete | None = None, + shards: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_manifest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_manifest.pyi index 1ba7aa6cf..51cc75b2b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_manifest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_manifest.pyi @@ -4,7 +4,7 @@ class ShardManifest: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, id: Incomplete | None = ..., shard_owners: Incomplete | None = ...) -> None: ... + def __init__(self, id: Incomplete | None = None, shard_owners: Incomplete | None = None) -> None: ... @property def id(self): ... @id.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_owner.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_owner.pyi index 4bae41583..c284b237f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_owner.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/shard_owner.pyi @@ -4,7 +4,7 @@ class ShardOwner: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, node_id: Incomplete | None = ...) -> None: ... + def __init__(self, node_id: Incomplete | None = None) -> None: ... @property def node_id(self): ... @node_id.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/simple_table_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/simple_table_view_properties.pyi index 4c6610572..da173e6bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/simple_table_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/simple_table_view_properties.pyi @@ -8,12 +8,12 @@ class SimpleTableViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - show_all: Incomplete | None = ..., - queries: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., + type: Incomplete | None = None, + show_all: Incomplete | None = None, + queries: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/single_stat_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/single_stat_view_properties.pyi index 320cc4dba..a644310db 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/single_stat_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/single_stat_view_properties.pyi @@ -8,18 +8,18 @@ class SingleStatViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - prefix: Incomplete | None = ..., - tick_prefix: Incomplete | None = ..., - suffix: Incomplete | None = ..., - tick_suffix: Incomplete | None = ..., - static_legend: Incomplete | None = ..., - decimal_places: Incomplete | None = ..., + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + prefix: Incomplete | None = None, + tick_prefix: Incomplete | None = None, + suffix: Incomplete | None = None, + tick_suffix: Incomplete | None = None, + static_legend: Incomplete | None = None, + decimal_places: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_endpoint.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_endpoint.pyi index 76b00f502..b84baf437 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_endpoint.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_endpoint.pyi @@ -8,19 +8,19 @@ class SlackNotificationEndpoint(NotificationEndpointDiscriminator): discriminator: Incomplete def __init__( self, - url: Incomplete | None = ..., - token: Incomplete | None = ..., - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - user_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - description: Incomplete | None = ..., - name: Incomplete | None = ..., - status: str = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., - type: str = ..., + url: Incomplete | None = None, + token: Incomplete | None = None, + id: Incomplete | None = None, + org_id: Incomplete | None = None, + user_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + description: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", + labels: Incomplete | None = None, + links: Incomplete | None = None, + type: str = "slack", ) -> None: ... @property def url(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_rule.pyi index 1f53e48f4..c015f1018 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_rule.pyi @@ -8,32 +8,32 @@ class SlackNotificationRule(SlackNotificationRuleBase): discriminator: Incomplete def __init__( self, - type: str = ..., - channel: Incomplete | None = ..., - message_template: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: str = "slack", + channel: Incomplete | None = None, + message_template: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... def to_dict(self): ... def to_str(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_rule_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_rule_base.pyi index 414ed918c..763216a25 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_rule_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/slack_notification_rule_base.pyi @@ -8,32 +8,32 @@ class SlackNotificationRuleBase(NotificationRuleDiscriminator): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - channel: Incomplete | None = ..., - message_template: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: Incomplete | None = None, + channel: Incomplete | None = None, + message_template: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/smtp_notification_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/smtp_notification_rule.pyi index 58ef677a2..b2dccc5d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/smtp_notification_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/smtp_notification_rule.pyi @@ -8,33 +8,33 @@ class SMTPNotificationRule(SMTPNotificationRuleBase): discriminator: Incomplete def __init__( self, - type: str = ..., - subject_template: Incomplete | None = ..., - body_template: Incomplete | None = ..., - to: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: str = "smtp", + subject_template: Incomplete | None = None, + body_template: Incomplete | None = None, + to: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... def to_dict(self): ... def to_str(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/smtp_notification_rule_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/smtp_notification_rule_base.pyi index 48017fc82..dbbbdbf5a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/smtp_notification_rule_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/smtp_notification_rule_base.pyi @@ -8,33 +8,33 @@ class SMTPNotificationRuleBase(NotificationRuleDiscriminator): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - subject_template: Incomplete | None = ..., - body_template: Incomplete | None = ..., - to: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: Incomplete | None = None, + subject_template: Incomplete | None = None, + body_template: Incomplete | None = None, + to: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/source.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/source.pyi index 07ddff9a6..ab677a5b0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/source.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/source.pyi @@ -6,22 +6,22 @@ class Source: discriminator: Incomplete def __init__( self, - links: Incomplete | None = ..., - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - default: Incomplete | None = ..., - name: Incomplete | None = ..., - type: Incomplete | None = ..., - url: Incomplete | None = ..., - insecure_skip_verify: Incomplete | None = ..., - telegraf: Incomplete | None = ..., - token: Incomplete | None = ..., - username: Incomplete | None = ..., - password: Incomplete | None = ..., - shared_secret: Incomplete | None = ..., - meta_url: Incomplete | None = ..., - default_rp: Incomplete | None = ..., - languages: Incomplete | None = ..., + links: Incomplete | None = None, + id: Incomplete | None = None, + org_id: Incomplete | None = None, + default: Incomplete | None = None, + name: Incomplete | None = None, + type: Incomplete | None = None, + url: Incomplete | None = None, + insecure_skip_verify: Incomplete | None = None, + telegraf: Incomplete | None = None, + token: Incomplete | None = None, + username: Incomplete | None = None, + password: Incomplete | None = None, + shared_secret: Incomplete | None = None, + meta_url: Incomplete | None = None, + default_rp: Incomplete | None = None, + languages: Incomplete | None = None, ) -> None: ... @property def links(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/source_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/source_links.pyi index 5ce803e59..ae4afc68c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/source_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/source_links.pyi @@ -6,10 +6,10 @@ class SourceLinks: discriminator: Incomplete def __init__( self, - _self: Incomplete | None = ..., - query: Incomplete | None = ..., - health: Incomplete | None = ..., - buckets: Incomplete | None = ..., + _self: Incomplete | None = None, + query: Incomplete | None = None, + health: Incomplete | None = None, + buckets: Incomplete | None = None, ) -> None: ... @property def query(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/sources.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/sources.pyi index 287c49c0a..56eb1cfa8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/sources.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/sources.pyi @@ -4,7 +4,7 @@ class Sources: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., sources: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, sources: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack.pyi index 36353fe4b..4a80edaee 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack.pyi @@ -6,10 +6,10 @@ class Stack: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - events: Incomplete | None = ..., + id: Incomplete | None = None, + org_id: Incomplete | None = None, + created_at: Incomplete | None = None, + events: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_associations.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_associations.pyi index deda169d5..9baa40125 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_associations.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_associations.pyi @@ -4,7 +4,7 @@ class StackAssociations: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, kind: Incomplete | None = ..., meta_name: Incomplete | None = ...) -> None: ... + def __init__(self, kind: Incomplete | None = None, meta_name: Incomplete | None = None) -> None: ... @property def kind(self): ... @kind.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_events.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_events.pyi index f89bbd675..338524916 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_events.pyi @@ -6,13 +6,13 @@ class StackEvents: discriminator: Incomplete def __init__( self, - event_type: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - sources: Incomplete | None = ..., - resources: Incomplete | None = ..., - urls: Incomplete | None = ..., - updated_at: Incomplete | None = ..., + event_type: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + sources: Incomplete | None = None, + resources: Incomplete | None = None, + urls: Incomplete | None = None, + updated_at: Incomplete | None = None, ) -> None: ... @property def event_type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_links.pyi index 972a761d8..edd51b386 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_links.pyi @@ -4,7 +4,7 @@ class StackLinks: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, _self: Incomplete | None = ...) -> None: ... + def __init__(self, _self: Incomplete | None = None) -> None: ... def to_dict(self): ... def to_str(self): ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_resources.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_resources.pyi index 1dd5b27a4..c3ed860f6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_resources.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/stack_resources.pyi @@ -6,12 +6,12 @@ class StackResources: discriminator: Incomplete def __init__( self, - api_version: Incomplete | None = ..., - resource_id: Incomplete | None = ..., - kind: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - associations: Incomplete | None = ..., - links: Incomplete | None = ..., + api_version: Incomplete | None = None, + resource_id: Incomplete | None = None, + kind: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + associations: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def api_version(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/static_legend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/static_legend.pyi index 21a19ce91..485dea577 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/static_legend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/static_legend.pyi @@ -6,13 +6,13 @@ class StaticLegend: discriminator: Incomplete def __init__( self, - colorize_rows: Incomplete | None = ..., - height_ratio: Incomplete | None = ..., - show: Incomplete | None = ..., - opacity: Incomplete | None = ..., - orientation_threshold: Incomplete | None = ..., - value_axis: Incomplete | None = ..., - width_ratio: Incomplete | None = ..., + colorize_rows: Incomplete | None = None, + height_ratio: Incomplete | None = None, + show: Incomplete | None = None, + opacity: Incomplete | None = None, + orientation_threshold: Incomplete | None = None, + value_axis: Incomplete | None = None, + width_ratio: Incomplete | None = None, ) -> None: ... @property def colorize_rows(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/status_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/status_rule.pyi index 75a13b513..f8364cb46 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/status_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/status_rule.pyi @@ -6,10 +6,10 @@ class StatusRule: discriminator: Incomplete def __init__( self, - current_level: Incomplete | None = ..., - previous_level: Incomplete | None = ..., - count: Incomplete | None = ..., - period: Incomplete | None = ..., + current_level: Incomplete | None = None, + previous_level: Incomplete | None = None, + count: Incomplete | None = None, + period: Incomplete | None = None, ) -> None: ... @property def current_level(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/string_literal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/string_literal.pyi index e261c13af..3aeecf0eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/string_literal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/string_literal.pyi @@ -6,7 +6,7 @@ class StringLiteral(PropertyKey): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, value: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/subscription_manifest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/subscription_manifest.pyi index 1187b9adb..18c35652c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/subscription_manifest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/subscription_manifest.pyi @@ -5,7 +5,7 @@ class SubscriptionManifest: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., mode: Incomplete | None = ..., destinations: Incomplete | None = ... + self, name: Incomplete | None = None, mode: Incomplete | None = None, destinations: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/table_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/table_view_properties.pyi index be791e621..7a68faa84 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/table_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/table_view_properties.pyi @@ -8,16 +8,16 @@ class TableViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - table_options: Incomplete | None = ..., - field_options: Incomplete | None = ..., - time_format: Incomplete | None = ..., - decimal_places: Incomplete | None = ..., + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + table_options: Incomplete | None = None, + field_options: Incomplete | None = None, + time_format: Incomplete | None = None, + decimal_places: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/table_view_properties_table_options.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/table_view_properties_table_options.pyi index 847eb8d3c..b1be53b9c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/table_view_properties_table_options.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/table_view_properties_table_options.pyi @@ -6,10 +6,10 @@ class TableViewPropertiesTableOptions: discriminator: Incomplete def __init__( self, - vertical_time_axis: Incomplete | None = ..., - sort_by: Incomplete | None = ..., - wrapping: Incomplete | None = ..., - fix_first_column: Incomplete | None = ..., + vertical_time_axis: Incomplete | None = None, + sort_by: Incomplete | None = None, + wrapping: Incomplete | None = None, + fix_first_column: Incomplete | None = None, ) -> None: ... @property def vertical_time_axis(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/tag_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/tag_rule.pyi index dae4d4da6..5b00cd713 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/tag_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/tag_rule.pyi @@ -5,7 +5,7 @@ class TagRule: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, key: Incomplete | None = ..., value: Incomplete | None = ..., operator: Incomplete | None = ... + self, key: Incomplete | None = None, value: Incomplete | None = None, operator: Incomplete | None = None ) -> None: ... @property def key(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task.pyi index 19995ac55..7b4dcb9b3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task.pyi @@ -6,26 +6,26 @@ class Task: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - type: Incomplete | None = ..., - org_id: Incomplete | None = ..., - org: Incomplete | None = ..., - name: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - description: Incomplete | None = ..., - status: Incomplete | None = ..., - labels: Incomplete | None = ..., - authorization_id: Incomplete | None = ..., - flux: Incomplete | None = ..., - every: Incomplete | None = ..., - cron: Incomplete | None = ..., - offset: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - links: Incomplete | None = ..., + id: Incomplete | None = None, + type: Incomplete | None = None, + org_id: Incomplete | None = None, + org: Incomplete | None = None, + name: Incomplete | None = None, + owner_id: Incomplete | None = None, + description: Incomplete | None = None, + status: Incomplete | None = None, + labels: Incomplete | None = None, + authorization_id: Incomplete | None = None, + flux: Incomplete | None = None, + every: Incomplete | None = None, + cron: Incomplete | None = None, + offset: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_create_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_create_request.pyi index 490574601..bc531fae3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_create_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_create_request.pyi @@ -6,11 +6,11 @@ class TaskCreateRequest: discriminator: Incomplete def __init__( self, - org_id: Incomplete | None = ..., - org: Incomplete | None = ..., - status: Incomplete | None = ..., - flux: Incomplete | None = ..., - description: Incomplete | None = ..., + org_id: Incomplete | None = None, + org: Incomplete | None = None, + status: Incomplete | None = None, + flux: Incomplete | None = None, + description: Incomplete | None = None, ) -> None: ... @property def org_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_links.pyi index b9bf306a2..3fff3d7e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_links.pyi @@ -6,12 +6,12 @@ class TaskLinks: discriminator: Incomplete def __init__( self, - _self: Incomplete | None = ..., - owners: Incomplete | None = ..., - members: Incomplete | None = ..., - runs: Incomplete | None = ..., - logs: Incomplete | None = ..., - labels: Incomplete | None = ..., + _self: Incomplete | None = None, + owners: Incomplete | None = None, + members: Incomplete | None = None, + runs: Incomplete | None = None, + logs: Incomplete | None = None, + labels: Incomplete | None = None, ) -> None: ... @property def owners(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_update_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_update_request.pyi index 7aa0ad524..3e18b11f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_update_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/task_update_request.pyi @@ -6,13 +6,13 @@ class TaskUpdateRequest: discriminator: Incomplete def __init__( self, - status: Incomplete | None = ..., - flux: Incomplete | None = ..., - name: Incomplete | None = ..., - every: Incomplete | None = ..., - cron: Incomplete | None = ..., - offset: Incomplete | None = ..., - description: Incomplete | None = ..., + status: Incomplete | None = None, + flux: Incomplete | None = None, + name: Incomplete | None = None, + every: Incomplete | None = None, + cron: Incomplete | None = None, + offset: Incomplete | None = None, + description: Incomplete | None = None, ) -> None: ... @property def status(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/tasks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/tasks.pyi index 61ca67a03..717f01d1d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/tasks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/tasks.pyi @@ -4,7 +4,7 @@ class Tasks: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., tasks: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, tasks: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf.pyi index 18db320a7..d7c7a14c9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf.pyi @@ -8,14 +8,14 @@ class Telegraf(TelegrafRequest): discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - links: Incomplete | None = ..., - labels: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - metadata: Incomplete | None = ..., - config: Incomplete | None = ..., - org_id: Incomplete | None = ..., + id: Incomplete | None = None, + links: Incomplete | None = None, + labels: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + metadata: Incomplete | None = None, + config: Incomplete | None = None, + org_id: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin.pyi index aee33a0e5..eacf2afa6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin.pyi @@ -6,10 +6,10 @@ class TelegrafPlugin: discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - config: Incomplete | None = ..., + type: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + config: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin_request.pyi index 346a2f5a2..6457074f2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin_request.pyi @@ -6,12 +6,12 @@ class TelegrafPluginRequest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - description: Incomplete | None = ..., - plugins: Incomplete | None = ..., - metadata: Incomplete | None = ..., - config: Incomplete | None = ..., - org_id: Incomplete | None = ..., + name: Incomplete | None = None, + description: Incomplete | None = None, + plugins: Incomplete | None = None, + metadata: Incomplete | None = None, + config: Incomplete | None = None, + org_id: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin_request_plugins.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin_request_plugins.pyi index 1566558b6..2805f5807 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin_request_plugins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugin_request_plugins.pyi @@ -6,11 +6,11 @@ class TelegrafPluginRequestPlugins: discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - name: Incomplete | None = ..., - alias: Incomplete | None = ..., - description: Incomplete | None = ..., - config: Incomplete | None = ..., + type: Incomplete | None = None, + name: Incomplete | None = None, + alias: Incomplete | None = None, + description: Incomplete | None = None, + config: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugins.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugins.pyi index b000a1d97..5b5b0663f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_plugins.pyi @@ -5,7 +5,7 @@ class TelegrafPlugins: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, version: Incomplete | None = ..., os: Incomplete | None = ..., plugins: Incomplete | None = ... + self, version: Incomplete | None = None, os: Incomplete | None = None, plugins: Incomplete | None = None ) -> None: ... @property def version(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_request.pyi index 20f62efe6..7a76be4c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_request.pyi @@ -6,11 +6,11 @@ class TelegrafRequest: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - description: Incomplete | None = ..., - metadata: Incomplete | None = ..., - config: Incomplete | None = ..., - org_id: Incomplete | None = ..., + name: Incomplete | None = None, + description: Incomplete | None = None, + metadata: Incomplete | None = None, + config: Incomplete | None = None, + org_id: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_request_metadata.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_request_metadata.pyi index 684e89852..5a770c130 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_request_metadata.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegraf_request_metadata.pyi @@ -4,7 +4,7 @@ class TelegrafRequestMetadata: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, buckets: Incomplete | None = ...) -> None: ... + def __init__(self, buckets: Incomplete | None = None) -> None: ... @property def buckets(self): ... @buckets.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegrafs.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegrafs.pyi index a53f49e81..0ebdc56e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegrafs.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegrafs.pyi @@ -4,7 +4,7 @@ class Telegrafs: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, configurations: Incomplete | None = ...) -> None: ... + def __init__(self, configurations: Incomplete | None = None) -> None: ... @property def configurations(self): ... @configurations.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_endpoint.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_endpoint.pyi index dbd52d14b..c0d2714d0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_endpoint.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_endpoint.pyi @@ -8,19 +8,19 @@ class TelegramNotificationEndpoint(NotificationEndpointDiscriminator): discriminator: Incomplete def __init__( self, - token: Incomplete | None = ..., - channel: Incomplete | None = ..., - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - user_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - description: Incomplete | None = ..., - name: Incomplete | None = ..., - status: str = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., - type: str = ..., + token: Incomplete | None = None, + channel: Incomplete | None = None, + id: Incomplete | None = None, + org_id: Incomplete | None = None, + user_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + description: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", + labels: Incomplete | None = None, + links: Incomplete | None = None, + type: str = "telegram", ) -> None: ... @property def token(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_rule.pyi index 47fd76dd5..978f0429a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_rule.pyi @@ -8,33 +8,33 @@ class TelegramNotificationRule(TelegramNotificationRuleBase): discriminator: Incomplete def __init__( self, - type: str = ..., - message_template: Incomplete | None = ..., - parse_mode: Incomplete | None = ..., - disable_web_page_preview: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: str = "telegram", + message_template: Incomplete | None = None, + parse_mode: Incomplete | None = None, + disable_web_page_preview: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... def to_dict(self): ... def to_str(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_rule_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_rule_base.pyi index 4d3fee3e3..d0171b9af 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_rule_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/telegram_notification_rule_base.pyi @@ -8,33 +8,33 @@ class TelegramNotificationRuleBase(NotificationRuleDiscriminator): discriminator: Incomplete def __init__( self, - type: Incomplete | None = ..., - message_template: Incomplete | None = ..., - parse_mode: Incomplete | None = ..., - disable_web_page_preview: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - id: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - status: Incomplete | None = ..., - name: Incomplete | None = ..., - sleep_until: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - runbook_link: Incomplete | None = ..., - limit_every: Incomplete | None = ..., - limit: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - description: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: Incomplete | None = None, + message_template: Incomplete | None = None, + parse_mode: Incomplete | None = None, + disable_web_page_preview: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + id: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + status: Incomplete | None = None, + name: Incomplete | None = None, + sleep_until: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + runbook_link: Incomplete | None = None, + limit_every: Incomplete | None = None, + limit: Incomplete | None = None, + tag_rules: Incomplete | None = None, + description: Incomplete | None = None, + status_rules: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply.pyi index 2b7fbf5fa..125192bb9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply.pyi @@ -6,15 +6,15 @@ class TemplateApply: discriminator: Incomplete def __init__( self, - dry_run: Incomplete | None = ..., - org_id: Incomplete | None = ..., - stack_id: Incomplete | None = ..., - template: Incomplete | None = ..., - templates: Incomplete | None = ..., - env_refs: Incomplete | None = ..., - secrets: Incomplete | None = ..., - remotes: Incomplete | None = ..., - actions: Incomplete | None = ..., + dry_run: Incomplete | None = None, + org_id: Incomplete | None = None, + stack_id: Incomplete | None = None, + template: Incomplete | None = None, + templates: Incomplete | None = None, + env_refs: Incomplete | None = None, + secrets: Incomplete | None = None, + remotes: Incomplete | None = None, + actions: Incomplete | None = None, ) -> None: ... @property def dry_run(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply_remotes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply_remotes.pyi index 636c4a693..d37907b00 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply_remotes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply_remotes.pyi @@ -4,7 +4,7 @@ class TemplateApplyRemotes: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, url: Incomplete | None = ..., content_type: Incomplete | None = ...) -> None: ... + def __init__(self, url: Incomplete | None = None, content_type: Incomplete | None = None) -> None: ... @property def url(self): ... @url.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply_template.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply_template.pyi index e4f2dfe05..8bffdcbbf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply_template.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_apply_template.pyi @@ -5,7 +5,7 @@ class TemplateApplyTemplate: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, content_type: Incomplete | None = ..., sources: Incomplete | None = ..., contents: Incomplete | None = ... + self, content_type: Incomplete | None = None, sources: Incomplete | None = None, contents: Incomplete | None = None ) -> None: ... @property def content_type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_chart.pyi index 446232300..cc7fdcb26 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_chart.pyi @@ -6,11 +6,11 @@ class TemplateChart: discriminator: Incomplete def __init__( self, - x_pos: Incomplete | None = ..., - y_pos: Incomplete | None = ..., - height: Incomplete | None = ..., - width: Incomplete | None = ..., - properties: Incomplete | None = ..., + x_pos: Incomplete | None = None, + y_pos: Incomplete | None = None, + height: Incomplete | None = None, + width: Incomplete | None = None, + properties: Incomplete | None = None, ) -> None: ... @property def x_pos(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id.pyi index 102d5282a..e41d39828 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id.pyi @@ -5,7 +5,7 @@ class TemplateExportByID: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, stack_id: Incomplete | None = ..., org_ids: Incomplete | None = ..., resources: Incomplete | None = ... + self, stack_id: Incomplete | None = None, org_ids: Incomplete | None = None, resources: Incomplete | None = None ) -> None: ... @property def stack_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_org_ids.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_org_ids.pyi index c9f3c80a3..a85b35870 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_org_ids.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_org_ids.pyi @@ -4,7 +4,7 @@ class TemplateExportByIDOrgIDs: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, org_id: Incomplete | None = ..., resource_filters: Incomplete | None = ...) -> None: ... + def __init__(self, org_id: Incomplete | None = None, resource_filters: Incomplete | None = None) -> None: ... @property def org_id(self): ... @org_id.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_resource_filters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_resource_filters.pyi index 42a6a2c28..067e27aaa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_resource_filters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_resource_filters.pyi @@ -4,7 +4,7 @@ class TemplateExportByIDResourceFilters: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, by_label: Incomplete | None = ..., by_resource_kind: Incomplete | None = ...) -> None: ... + def __init__(self, by_label: Incomplete | None = None, by_resource_kind: Incomplete | None = None) -> None: ... @property def by_label(self): ... @by_label.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_resources.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_resources.pyi index 6893e928f..431f2434f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_resources.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_id_resources.pyi @@ -4,7 +4,7 @@ class TemplateExportByIDResources: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, id: Incomplete | None = ..., kind: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, id: Incomplete | None = None, kind: Incomplete | None = None, name: Incomplete | None = None) -> None: ... @property def id(self): ... @id.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_name.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_name.pyi index d7a2159b3..930d8beb0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_name.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_name.pyi @@ -5,7 +5,7 @@ class TemplateExportByName: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, stack_id: Incomplete | None = ..., org_ids: Incomplete | None = ..., resources: Incomplete | None = ... + self, stack_id: Incomplete | None = None, org_ids: Incomplete | None = None, resources: Incomplete | None = None ) -> None: ... @property def stack_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_name_resources.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_name_resources.pyi index 54607b2c9..d5b8892a5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_name_resources.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_export_by_name_resources.pyi @@ -4,7 +4,7 @@ class TemplateExportByNameResources: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, kind: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, kind: Incomplete | None = None, name: Incomplete | None = None) -> None: ... @property def kind(self): ... @kind.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary.pyi index b47f85365..4f11359ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary.pyi @@ -6,11 +6,11 @@ class TemplateSummary: discriminator: Incomplete def __init__( self, - sources: Incomplete | None = ..., - stack_id: Incomplete | None = ..., - summary: Incomplete | None = ..., - diff: Incomplete | None = ..., - errors: Incomplete | None = ..., + sources: Incomplete | None = None, + stack_id: Incomplete | None = None, + summary: Incomplete | None = None, + diff: Incomplete | None = None, + errors: Incomplete | None = None, ) -> None: ... @property def sources(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff.pyi index e0105bd3a..253ed22e9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff.pyi @@ -6,16 +6,16 @@ class TemplateSummaryDiff: discriminator: Incomplete def __init__( self, - buckets: Incomplete | None = ..., - checks: Incomplete | None = ..., - dashboards: Incomplete | None = ..., - labels: Incomplete | None = ..., - label_mappings: Incomplete | None = ..., - notification_endpoints: Incomplete | None = ..., - notification_rules: Incomplete | None = ..., - tasks: Incomplete | None = ..., - telegraf_configs: Incomplete | None = ..., - variables: Incomplete | None = ..., + buckets: Incomplete | None = None, + checks: Incomplete | None = None, + dashboards: Incomplete | None = None, + labels: Incomplete | None = None, + label_mappings: Incomplete | None = None, + notification_endpoints: Incomplete | None = None, + notification_rules: Incomplete | None = None, + tasks: Incomplete | None = None, + telegraf_configs: Incomplete | None = None, + variables: Incomplete | None = None, ) -> None: ... @property def buckets(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_buckets.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_buckets.pyi index e3ce470e8..d00432fc2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_buckets.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_buckets.pyi @@ -6,12 +6,12 @@ class TemplateSummaryDiffBuckets: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - state_status: Incomplete | None = ..., - id: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - new: Incomplete | None = ..., - old: Incomplete | None = ..., + kind: Incomplete | None = None, + state_status: Incomplete | None = None, + id: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + new: Incomplete | None = None, + old: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_buckets_new_old.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_buckets_new_old.pyi index a03004bf1..7be2bc1ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_buckets_new_old.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_buckets_new_old.pyi @@ -5,7 +5,7 @@ class TemplateSummaryDiffBucketsNewOld: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., description: Incomplete | None = ..., retention_rules: Incomplete | None = ... + self, name: Incomplete | None = None, description: Incomplete | None = None, retention_rules: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_checks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_checks.pyi index 58c772197..de592b552 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_checks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_checks.pyi @@ -6,12 +6,12 @@ class TemplateSummaryDiffChecks: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - state_status: Incomplete | None = ..., - id: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - new: Incomplete | None = ..., - old: Incomplete | None = ..., + kind: Incomplete | None = None, + state_status: Incomplete | None = None, + id: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + new: Incomplete | None = None, + old: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_dashboards.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_dashboards.pyi index 74c8f4ddc..7ec3dd4d3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_dashboards.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_dashboards.pyi @@ -6,12 +6,12 @@ class TemplateSummaryDiffDashboards: discriminator: Incomplete def __init__( self, - state_status: Incomplete | None = ..., - id: Incomplete | None = ..., - kind: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - new: Incomplete | None = ..., - old: Incomplete | None = ..., + state_status: Incomplete | None = None, + id: Incomplete | None = None, + kind: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + new: Incomplete | None = None, + old: Incomplete | None = None, ) -> None: ... @property def state_status(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_dashboards_new_old.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_dashboards_new_old.pyi index 68987fe72..2f3ec4a94 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_dashboards_new_old.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_dashboards_new_old.pyi @@ -5,7 +5,7 @@ class TemplateSummaryDiffDashboardsNewOld: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., description: Incomplete | None = ..., charts: Incomplete | None = ... + self, name: Incomplete | None = None, description: Incomplete | None = None, charts: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_label_mappings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_label_mappings.pyi index f5daed3b3..2f6c3b1e8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_label_mappings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_label_mappings.pyi @@ -6,14 +6,14 @@ class TemplateSummaryDiffLabelMappings: discriminator: Incomplete def __init__( self, - status: Incomplete | None = ..., - resource_type: Incomplete | None = ..., - resource_id: Incomplete | None = ..., - resource_template_meta_name: Incomplete | None = ..., - resource_name: Incomplete | None = ..., - label_id: Incomplete | None = ..., - label_template_meta_name: Incomplete | None = ..., - label_name: Incomplete | None = ..., + status: Incomplete | None = None, + resource_type: Incomplete | None = None, + resource_id: Incomplete | None = None, + resource_template_meta_name: Incomplete | None = None, + resource_name: Incomplete | None = None, + label_id: Incomplete | None = None, + label_template_meta_name: Incomplete | None = None, + label_name: Incomplete | None = None, ) -> None: ... @property def status(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_labels.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_labels.pyi index 386d4374c..aece37978 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_labels.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_labels.pyi @@ -6,12 +6,12 @@ class TemplateSummaryDiffLabels: discriminator: Incomplete def __init__( self, - state_status: Incomplete | None = ..., - kind: Incomplete | None = ..., - id: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - new: Incomplete | None = ..., - old: Incomplete | None = ..., + state_status: Incomplete | None = None, + kind: Incomplete | None = None, + id: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + new: Incomplete | None = None, + old: Incomplete | None = None, ) -> None: ... @property def state_status(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_labels_new_old.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_labels_new_old.pyi index 8bc87e00e..a51f3ea5a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_labels_new_old.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_labels_new_old.pyi @@ -5,7 +5,7 @@ class TemplateSummaryDiffLabelsNewOld: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., color: Incomplete | None = ..., description: Incomplete | None = ... + self, name: Incomplete | None = None, color: Incomplete | None = None, description: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_endpoints.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_endpoints.pyi index 58ef6786f..e4a6be4cf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_endpoints.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_endpoints.pyi @@ -6,12 +6,12 @@ class TemplateSummaryDiffNotificationEndpoints: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - state_status: Incomplete | None = ..., - id: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - new: Incomplete | None = ..., - old: Incomplete | None = ..., + kind: Incomplete | None = None, + state_status: Incomplete | None = None, + id: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + new: Incomplete | None = None, + old: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_rules.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_rules.pyi index f5d3b5307..c552c0673 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_rules.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_rules.pyi @@ -6,12 +6,12 @@ class TemplateSummaryDiffNotificationRules: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - state_status: Incomplete | None = ..., - id: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - new: Incomplete | None = ..., - old: Incomplete | None = ..., + kind: Incomplete | None = None, + state_status: Incomplete | None = None, + id: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + new: Incomplete | None = None, + old: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_rules_new_old.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_rules_new_old.pyi index e717dd804..3c4755932 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_rules_new_old.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_notification_rules_new_old.pyi @@ -6,17 +6,17 @@ class TemplateSummaryDiffNotificationRulesNewOld: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - description: Incomplete | None = ..., - endpoint_name: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - endpoint_type: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - message_template: Incomplete | None = ..., - status: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., + name: Incomplete | None = None, + description: Incomplete | None = None, + endpoint_name: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + endpoint_type: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + message_template: Incomplete | None = None, + status: Incomplete | None = None, + status_rules: Incomplete | None = None, + tag_rules: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_tasks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_tasks.pyi index a012bb4f9..a57fc9c4c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_tasks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_tasks.pyi @@ -6,12 +6,12 @@ class TemplateSummaryDiffTasks: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - state_status: Incomplete | None = ..., - id: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - new: Incomplete | None = ..., - old: Incomplete | None = ..., + kind: Incomplete | None = None, + state_status: Incomplete | None = None, + id: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + new: Incomplete | None = None, + old: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_tasks_new_old.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_tasks_new_old.pyi index ee87c2bd3..cd940e095 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_tasks_new_old.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_tasks_new_old.pyi @@ -6,13 +6,13 @@ class TemplateSummaryDiffTasksNewOld: discriminator: Incomplete def __init__( self, - name: Incomplete | None = ..., - cron: Incomplete | None = ..., - description: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - query: Incomplete | None = ..., - status: Incomplete | None = ..., + name: Incomplete | None = None, + cron: Incomplete | None = None, + description: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + query: Incomplete | None = None, + status: Incomplete | None = None, ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_telegraf_configs.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_telegraf_configs.pyi index 82f0309e3..e414f2cae 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_telegraf_configs.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_telegraf_configs.pyi @@ -6,12 +6,12 @@ class TemplateSummaryDiffTelegrafConfigs: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - state_status: Incomplete | None = ..., - id: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - new: Incomplete | None = ..., - old: Incomplete | None = ..., + kind: Incomplete | None = None, + state_status: Incomplete | None = None, + id: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + new: Incomplete | None = None, + old: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_variables.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_variables.pyi index f06525fb9..de68d83bf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_variables.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_variables.pyi @@ -6,12 +6,12 @@ class TemplateSummaryDiffVariables: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - state_status: Incomplete | None = ..., - id: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - new: Incomplete | None = ..., - old: Incomplete | None = ..., + kind: Incomplete | None = None, + state_status: Incomplete | None = None, + id: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + new: Incomplete | None = None, + old: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_variables_new_old.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_variables_new_old.pyi index bd55b8823..fca9b663e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_variables_new_old.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_diff_variables_new_old.pyi @@ -5,7 +5,7 @@ class TemplateSummaryDiffVariablesNewOld: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, name: Incomplete | None = ..., description: Incomplete | None = ..., args: Incomplete | None = ... + self, name: Incomplete | None = None, description: Incomplete | None = None, args: Incomplete | None = None ) -> None: ... @property def name(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_errors.pyi index aba5c8076..056464795 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_errors.pyi @@ -6,10 +6,10 @@ class TemplateSummaryErrors: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - reason: Incomplete | None = ..., - fields: Incomplete | None = ..., - indexes: Incomplete | None = ..., + kind: Incomplete | None = None, + reason: Incomplete | None = None, + fields: Incomplete | None = None, + indexes: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_label.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_label.pyi index c02353abb..9ffa1b1c0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_label.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_label.pyi @@ -6,13 +6,13 @@ class TemplateSummaryLabel: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - kind: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - name: Incomplete | None = ..., - properties: Incomplete | None = ..., - env_references: Incomplete | None = ..., + id: Incomplete | None = None, + org_id: Incomplete | None = None, + kind: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + name: Incomplete | None = None, + properties: Incomplete | None = None, + env_references: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_label_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_label_properties.pyi index bc4de9640..a77f76c5a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_label_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_label_properties.pyi @@ -4,7 +4,7 @@ class TemplateSummaryLabelProperties: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, color: Incomplete | None = ..., description: Incomplete | None = ...) -> None: ... + def __init__(self, color: Incomplete | None = None, description: Incomplete | None = None) -> None: ... @property def color(self): ... @color.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary.pyi index 939179cbd..589729bda 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary.pyi @@ -6,18 +6,18 @@ class TemplateSummarySummary: discriminator: Incomplete def __init__( self, - buckets: Incomplete | None = ..., - checks: Incomplete | None = ..., - dashboards: Incomplete | None = ..., - labels: Incomplete | None = ..., - label_mappings: Incomplete | None = ..., - missing_env_refs: Incomplete | None = ..., - missing_secrets: Incomplete | None = ..., - notification_endpoints: Incomplete | None = ..., - notification_rules: Incomplete | None = ..., - tasks: Incomplete | None = ..., - telegraf_configs: Incomplete | None = ..., - variables: Incomplete | None = ..., + buckets: Incomplete | None = None, + checks: Incomplete | None = None, + dashboards: Incomplete | None = None, + labels: Incomplete | None = None, + label_mappings: Incomplete | None = None, + missing_env_refs: Incomplete | None = None, + missing_secrets: Incomplete | None = None, + notification_endpoints: Incomplete | None = None, + notification_rules: Incomplete | None = None, + tasks: Incomplete | None = None, + telegraf_configs: Incomplete | None = None, + variables: Incomplete | None = None, ) -> None: ... @property def buckets(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_buckets.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_buckets.pyi index cc8184b90..60ca17aa3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_buckets.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_buckets.pyi @@ -6,15 +6,15 @@ class TemplateSummarySummaryBuckets: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - kind: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - retention_period: Incomplete | None = ..., - label_associations: Incomplete | None = ..., - env_references: Incomplete | None = ..., + id: Incomplete | None = None, + org_id: Incomplete | None = None, + kind: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + retention_period: Incomplete | None = None, + label_associations: Incomplete | None = None, + env_references: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_dashboards.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_dashboards.pyi index 3b616f5ad..f5580b0de 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_dashboards.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_dashboards.pyi @@ -6,15 +6,15 @@ class TemplateSummarySummaryDashboards: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - kind: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - label_associations: Incomplete | None = ..., - charts: Incomplete | None = ..., - env_references: Incomplete | None = ..., + id: Incomplete | None = None, + org_id: Incomplete | None = None, + kind: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + label_associations: Incomplete | None = None, + charts: Incomplete | None = None, + env_references: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_label_mappings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_label_mappings.pyi index bbc3b3602..ccf976416 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_label_mappings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_label_mappings.pyi @@ -6,14 +6,14 @@ class TemplateSummarySummaryLabelMappings: discriminator: Incomplete def __init__( self, - status: Incomplete | None = ..., - resource_template_meta_name: Incomplete | None = ..., - resource_name: Incomplete | None = ..., - resource_id: Incomplete | None = ..., - resource_type: Incomplete | None = ..., - label_template_meta_name: Incomplete | None = ..., - label_name: Incomplete | None = ..., - label_id: Incomplete | None = ..., + status: Incomplete | None = None, + resource_template_meta_name: Incomplete | None = None, + resource_name: Incomplete | None = None, + resource_id: Incomplete | None = None, + resource_type: Incomplete | None = None, + label_template_meta_name: Incomplete | None = None, + label_name: Incomplete | None = None, + label_id: Incomplete | None = None, ) -> None: ... @property def status(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_notification_rules.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_notification_rules.pyi index b68a224db..4cddeafed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_notification_rules.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_notification_rules.pyi @@ -6,21 +6,21 @@ class TemplateSummarySummaryNotificationRules: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - endpoint_template_meta_name: Incomplete | None = ..., - endpoint_id: Incomplete | None = ..., - endpoint_type: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - message_template: Incomplete | None = ..., - status: Incomplete | None = ..., - status_rules: Incomplete | None = ..., - tag_rules: Incomplete | None = ..., - label_associations: Incomplete | None = ..., - env_references: Incomplete | None = ..., + kind: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + endpoint_template_meta_name: Incomplete | None = None, + endpoint_id: Incomplete | None = None, + endpoint_type: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + message_template: Incomplete | None = None, + status: Incomplete | None = None, + status_rules: Incomplete | None = None, + tag_rules: Incomplete | None = None, + label_associations: Incomplete | None = None, + env_references: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_status_rules.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_status_rules.pyi index d07be95e4..29f307273 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_status_rules.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_status_rules.pyi @@ -4,7 +4,7 @@ class TemplateSummarySummaryStatusRules: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, current_level: Incomplete | None = ..., previous_level: Incomplete | None = ...) -> None: ... + def __init__(self, current_level: Incomplete | None = None, previous_level: Incomplete | None = None) -> None: ... @property def current_level(self): ... @current_level.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_tag_rules.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_tag_rules.pyi index 820c085b1..665b26c83 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_tag_rules.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_tag_rules.pyi @@ -5,7 +5,7 @@ class TemplateSummarySummaryTagRules: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, key: Incomplete | None = ..., value: Incomplete | None = ..., operator: Incomplete | None = ... + self, key: Incomplete | None = None, value: Incomplete | None = None, operator: Incomplete | None = None ) -> None: ... @property def key(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_tasks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_tasks.pyi index a2425cb34..acebc2925 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_tasks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_tasks.pyi @@ -6,17 +6,17 @@ class TemplateSummarySummaryTasks: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - id: Incomplete | None = ..., - name: Incomplete | None = ..., - cron: Incomplete | None = ..., - description: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - query: Incomplete | None = ..., - status: Incomplete | None = ..., - env_references: Incomplete | None = ..., + kind: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + id: Incomplete | None = None, + name: Incomplete | None = None, + cron: Incomplete | None = None, + description: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + query: Incomplete | None = None, + status: Incomplete | None = None, + env_references: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_variables.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_variables.pyi index 44133a7a7..c652d5229 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_variables.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/template_summary_summary_variables.pyi @@ -6,15 +6,15 @@ class TemplateSummarySummaryVariables: discriminator: Incomplete def __init__( self, - kind: Incomplete | None = ..., - template_meta_name: Incomplete | None = ..., - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - arguments: Incomplete | None = ..., - label_associations: Incomplete | None = ..., - env_references: Incomplete | None = ..., + kind: Incomplete | None = None, + template_meta_name: Incomplete | None = None, + id: Incomplete | None = None, + org_id: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + arguments: Incomplete | None = None, + label_associations: Incomplete | None = None, + env_references: Incomplete | None = None, ) -> None: ... @property def kind(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/test_statement.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/test_statement.pyi index 4c93f9487..25f3069da 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/test_statement.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/test_statement.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.domain.statement import Statement class TestStatement(Statement): - def __init__(self, type: Incomplete | None = ..., assignment: Incomplete | None = ...): ... + def __init__(self, type: Incomplete | None = None, assignment: Incomplete | None = None): ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold.pyi index 3633be3ce..9de0078b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold.pyi @@ -5,7 +5,7 @@ class Threshold: attribute_map: Incomplete discriminator_value_class_map: Incomplete discriminator: str - def __init__(self, type: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold_base.pyi index e67f3a77e..a1e666596 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold_base.pyi @@ -4,7 +4,7 @@ class ThresholdBase: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, level: Incomplete | None = ..., all_values: Incomplete | None = ...) -> None: ... + def __init__(self, level: Incomplete | None = None, all_values: Incomplete | None = None) -> None: ... @property def level(self): ... @level.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold_check.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold_check.pyi index 5ba66f089..a012f9b6e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold_check.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/threshold_check.pyi @@ -8,27 +8,27 @@ class ThresholdCheck(CheckDiscriminator): discriminator: Incomplete def __init__( self, - type: str = ..., - thresholds: Incomplete | None = ..., - every: Incomplete | None = ..., - offset: Incomplete | None = ..., - tags: Incomplete | None = ..., - status_message_template: Incomplete | None = ..., - id: Incomplete | None = ..., - name: Incomplete | None = ..., - org_id: Incomplete | None = ..., - task_id: Incomplete | None = ..., - owner_id: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., - query: Incomplete | None = ..., - status: Incomplete | None = ..., - description: Incomplete | None = ..., - latest_completed: Incomplete | None = ..., - last_run_status: Incomplete | None = ..., - last_run_error: Incomplete | None = ..., - labels: Incomplete | None = ..., - links: Incomplete | None = ..., + type: str = "threshold", + thresholds: Incomplete | None = None, + every: Incomplete | None = None, + offset: Incomplete | None = None, + tags: Incomplete | None = None, + status_message_template: Incomplete | None = None, + id: Incomplete | None = None, + name: Incomplete | None = None, + org_id: Incomplete | None = None, + task_id: Incomplete | None = None, + owner_id: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, + query: Incomplete | None = None, + status: Incomplete | None = None, + description: Incomplete | None = None, + latest_completed: Incomplete | None = None, + last_run_status: Incomplete | None = None, + last_run_error: Incomplete | None = None, + labels: Incomplete | None = None, + links: Incomplete | None = None, ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/unary_expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/unary_expression.pyi index 30d06beb8..085f3695c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/unary_expression.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/unary_expression.pyi @@ -7,7 +7,7 @@ class UnaryExpression(Expression): attribute_map: Incomplete discriminator: Incomplete def __init__( - self, type: Incomplete | None = ..., operator: Incomplete | None = ..., argument: Incomplete | None = ... + self, type: Incomplete | None = None, operator: Incomplete | None = None, argument: Incomplete | None = None ) -> None: ... @property def type(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/unsigned_integer_literal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/unsigned_integer_literal.pyi index 397cb61df..8349cc0a8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/unsigned_integer_literal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/unsigned_integer_literal.pyi @@ -6,7 +6,7 @@ class UnsignedIntegerLiteral(Expression): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, value: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user.pyi index 13b8516d7..52a123e4e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user.pyi @@ -5,7 +5,11 @@ class User: attribute_map: Incomplete discriminator: Incomplete def __init__( - self, id: Incomplete | None = ..., oauth_id: Incomplete | None = ..., name: Incomplete | None = ..., status: str = ... + self, + id: Incomplete | None = None, + oauth_id: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user_response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user_response.pyi index 6b89e1875..d9fcbdfb0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user_response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user_response.pyi @@ -6,11 +6,11 @@ class UserResponse: discriminator: Incomplete def __init__( self, - id: Incomplete | None = ..., - oauth_id: Incomplete | None = ..., - name: Incomplete | None = ..., - status: str = ..., - links: Incomplete | None = ..., + id: Incomplete | None = None, + oauth_id: Incomplete | None = None, + name: Incomplete | None = None, + status: str = "active", + links: Incomplete | None = None, ) -> None: ... @property def id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user_response_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user_response_links.pyi index 710d020f8..b1ecdff90 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user_response_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/user_response_links.pyi @@ -4,7 +4,7 @@ class UserResponseLinks: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, _self: Incomplete | None = ...) -> None: ... + def __init__(self, _self: Incomplete | None = None) -> None: ... def to_dict(self): ... def to_str(self): ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/users.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/users.pyi index 161f35e33..f526b5910 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/users.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/users.pyi @@ -4,7 +4,7 @@ class Users: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., users: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, users: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable.pyi index 4d8a35528..d7d51c413 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable.pyi @@ -6,16 +6,16 @@ class Variable: discriminator: Incomplete def __init__( self, - links: Incomplete | None = ..., - id: Incomplete | None = ..., - org_id: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - selected: Incomplete | None = ..., - labels: Incomplete | None = ..., - arguments: Incomplete | None = ..., - created_at: Incomplete | None = ..., - updated_at: Incomplete | None = ..., + links: Incomplete | None = None, + id: Incomplete | None = None, + org_id: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + selected: Incomplete | None = None, + labels: Incomplete | None = None, + arguments: Incomplete | None = None, + created_at: Incomplete | None = None, + updated_at: Incomplete | None = None, ) -> None: ... @property def links(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable_assignment.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable_assignment.pyi index 5a767f7a8..3229214f1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable_assignment.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable_assignment.pyi @@ -6,7 +6,7 @@ class VariableAssignment(Statement): openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, type: Incomplete | None = ..., id: Incomplete | None = ..., init: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, id: Incomplete | None = None, init: Incomplete | None = None) -> None: ... @property def type(self): ... @type.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable_links.pyi index 2ee8bb698..acec1d256 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variable_links.pyi @@ -4,7 +4,9 @@ class VariableLinks: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, _self: Incomplete | None = ..., org: Incomplete | None = ..., labels: Incomplete | None = ...) -> None: ... + def __init__( + self, _self: Incomplete | None = None, org: Incomplete | None = None, labels: Incomplete | None = None + ) -> None: ... @property def org(self): ... @org.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variables.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variables.pyi index 4dc5281c8..3c84f83bf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variables.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/variables.pyi @@ -4,7 +4,7 @@ class Variables: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, variables: Incomplete | None = ...) -> None: ... + def __init__(self, variables: Incomplete | None = None) -> None: ... @property def variables(self): ... @variables.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/view.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/view.pyi index ecaaa8cad..f4a27704d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/view.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/view.pyi @@ -6,10 +6,10 @@ class View: discriminator: Incomplete def __init__( self, - links: Incomplete | None = ..., - id: Incomplete | None = ..., - name: Incomplete | None = ..., - properties: Incomplete | None = ..., + links: Incomplete | None = None, + id: Incomplete | None = None, + name: Incomplete | None = None, + properties: Incomplete | None = None, ) -> None: ... @property def links(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/view_links.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/view_links.pyi index a290c0e0e..b848d86f6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/view_links.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/view_links.pyi @@ -4,7 +4,7 @@ class ViewLinks: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, _self: Incomplete | None = ...) -> None: ... + def __init__(self, _self: Incomplete | None = None) -> None: ... def to_dict(self): ... def to_str(self): ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/views.pyi index 86603392e..3480f632b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/views.pyi @@ -4,7 +4,7 @@ class Views: openapi_types: Incomplete attribute_map: Incomplete discriminator: Incomplete - def __init__(self, links: Incomplete | None = ..., views: Incomplete | None = ...) -> None: ... + def __init__(self, links: Incomplete | None = None, views: Incomplete | None = None) -> None: ... @property def links(self): ... @links.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/xy_view_properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/xy_view_properties.pyi index b1a3e9126..0d773fbf0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/xy_view_properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/domain/xy_view_properties.pyi @@ -8,34 +8,34 @@ class XYViewProperties(ViewProperties): discriminator: Incomplete def __init__( self, - time_format: Incomplete | None = ..., - type: Incomplete | None = ..., - queries: Incomplete | None = ..., - colors: Incomplete | None = ..., - color_mapping: Incomplete | None = ..., - shape: Incomplete | None = ..., - note: Incomplete | None = ..., - show_note_when_empty: Incomplete | None = ..., - axes: Incomplete | None = ..., - static_legend: Incomplete | None = ..., - x_column: Incomplete | None = ..., - generate_x_axis_ticks: Incomplete | None = ..., - x_total_ticks: Incomplete | None = ..., - x_tick_start: Incomplete | None = ..., - x_tick_step: Incomplete | None = ..., - y_column: Incomplete | None = ..., - generate_y_axis_ticks: Incomplete | None = ..., - y_total_ticks: Incomplete | None = ..., - y_tick_start: Incomplete | None = ..., - y_tick_step: Incomplete | None = ..., - shade_below: Incomplete | None = ..., - hover_dimension: Incomplete | None = ..., - position: Incomplete | None = ..., - geom: Incomplete | None = ..., - legend_colorize_rows: Incomplete | None = ..., - legend_hide: Incomplete | None = ..., - legend_opacity: Incomplete | None = ..., - legend_orientation_threshold: Incomplete | None = ..., + time_format: Incomplete | None = None, + type: Incomplete | None = None, + queries: Incomplete | None = None, + colors: Incomplete | None = None, + color_mapping: Incomplete | None = None, + shape: Incomplete | None = None, + note: Incomplete | None = None, + show_note_when_empty: Incomplete | None = None, + axes: Incomplete | None = None, + static_legend: Incomplete | None = None, + x_column: Incomplete | None = None, + generate_x_axis_ticks: Incomplete | None = None, + x_total_ticks: Incomplete | None = None, + x_tick_start: Incomplete | None = None, + x_tick_step: Incomplete | None = None, + y_column: Incomplete | None = None, + generate_y_axis_ticks: Incomplete | None = None, + y_total_ticks: Incomplete | None = None, + y_tick_start: Incomplete | None = None, + y_tick_step: Incomplete | None = None, + shade_below: Incomplete | None = None, + hover_dimension: Incomplete | None = None, + position: Incomplete | None = None, + geom: Incomplete | None = None, + legend_colorize_rows: Incomplete | None = None, + legend_hide: Incomplete | None = None, + legend_opacity: Incomplete | None = None, + legend_orientation_threshold: Incomplete | None = None, ) -> None: ... @property def time_format(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/rest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/rest.pyi index b82f60689..55b012b65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/rest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/rest.pyi @@ -8,7 +8,7 @@ class ApiException(InfluxDBError): body: Incomplete headers: Incomplete def __init__( - self, status: Incomplete | None = ..., reason: Incomplete | None = ..., http_resp: Incomplete | None = ... + self, status: Incomplete | None = None, reason: Incomplete | None = None, http_resp: Incomplete | None = None ) -> None: ... class _BaseRESTClient: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/_base_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/_base_service.pyi index dc2bed888..ef493c4ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/_base_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/_base_service.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete class _BaseService: api_client: Incomplete - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def build_type(self) -> str: ... async def build_type_async(self) -> str: ... - def response_header(self, response, header_name: str = ...) -> str: ... + def response_header(self, response, header_name: str = "X-Influxdb-Version") -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/authorizations_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/authorizations_service.pyi index 1cb3af2b0..ded67599e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/authorizations_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/authorizations_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class AuthorizationsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_authorizations_id(self, auth_id, **kwargs): ... def delete_authorizations_id_with_http_info(self, auth_id, **kwargs): ... async def delete_authorizations_id_async(self, auth_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/backup_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/backup_service.pyi index 96f89ced6..f8958e4b0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/backup_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/backup_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class BackupService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_backup_kv(self, **kwargs): ... def get_backup_kv_with_http_info(self, **kwargs): ... async def get_backup_kv_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/bucket_schemas_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/bucket_schemas_service.pyi index 276cf48b5..8eaa70793 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/bucket_schemas_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/bucket_schemas_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class BucketSchemasService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def create_measurement_schema(self, bucket_id, measurement_schema_create_request, **kwargs): ... def create_measurement_schema_with_http_info(self, bucket_id, measurement_schema_create_request, **kwargs): ... async def create_measurement_schema_async(self, bucket_id, measurement_schema_create_request, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/buckets_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/buckets_service.pyi index 9839754c8..3f2c9ae57 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/buckets_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/buckets_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class BucketsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_buckets_id(self, bucket_id, **kwargs): ... def delete_buckets_id_with_http_info(self, bucket_id, **kwargs): ... async def delete_buckets_id_async(self, bucket_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/cells_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/cells_service.pyi index 4135ddc01..0bf6fa8e2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/cells_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/cells_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class CellsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_dashboards_id_cells_id(self, dashboard_id, cell_id, **kwargs): ... def delete_dashboards_id_cells_id_with_http_info(self, dashboard_id, cell_id, **kwargs): ... async def delete_dashboards_id_cells_id_async(self, dashboard_id, cell_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/checks_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/checks_service.pyi index fd840989e..74b78eee3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/checks_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/checks_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class ChecksService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def create_check(self, post_check, **kwargs): ... def create_check_with_http_info(self, post_check, **kwargs): ... async def create_check_async(self, post_check, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/config_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/config_service.pyi index 89aca6557..4e10e286a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/config_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/config_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class ConfigService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_config(self, **kwargs): ... def get_config_with_http_info(self, **kwargs): ... async def get_config_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/dashboards_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/dashboards_service.pyi index 507d94389..4c7d53e73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/dashboards_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/dashboards_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class DashboardsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_dashboards_id(self, dashboard_id, **kwargs): ... def delete_dashboards_id_with_http_info(self, dashboard_id, **kwargs): ... async def delete_dashboards_id_async(self, dashboard_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/dbr_ps_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/dbr_ps_service.pyi index 00b189b6b..21afd8aec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/dbr_ps_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/dbr_ps_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class DBRPsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_dbrpid(self, dbrp_id, **kwargs): ... def delete_dbrpid_with_http_info(self, dbrp_id, **kwargs): ... async def delete_dbrpid_async(self, dbrp_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/delete_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/delete_service.pyi index 50407915e..87873c899 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/delete_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/delete_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class DeleteService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def post_delete(self, delete_predicate_request, **kwargs): ... def post_delete_with_http_info(self, delete_predicate_request, **kwargs): ... async def post_delete_async(self, delete_predicate_request, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/health_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/health_service.pyi index 0ade64f9f..7e07a98b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/health_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/health_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class HealthService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_health(self, **kwargs): ... def get_health_with_http_info(self, **kwargs): ... async def get_health_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/invokable_scripts_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/invokable_scripts_service.pyi index c5f0e227a..041288f5f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/invokable_scripts_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/invokable_scripts_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class InvokableScriptsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_scripts_id(self, script_id, **kwargs): ... def delete_scripts_id_with_http_info(self, script_id, **kwargs): ... async def delete_scripts_id_async(self, script_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/labels_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/labels_service.pyi index 63e974f5d..ef32cb375 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/labels_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/labels_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class LabelsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_labels_id(self, label_id, **kwargs): ... def delete_labels_id_with_http_info(self, label_id, **kwargs): ... async def delete_labels_id_async(self, label_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/legacy_authorizations_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/legacy_authorizations_service.pyi index fbec0e374..74ab8669d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/legacy_authorizations_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/legacy_authorizations_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class LegacyAuthorizationsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_legacy_authorizations_id(self, auth_id, **kwargs): ... def delete_legacy_authorizations_id_with_http_info(self, auth_id, **kwargs): ... async def delete_legacy_authorizations_id_async(self, auth_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/metrics_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/metrics_service.pyi index 8194e55c9..28c9f2807 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/metrics_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/metrics_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class MetricsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_metrics(self, **kwargs): ... def get_metrics_with_http_info(self, **kwargs): ... async def get_metrics_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/notification_endpoints_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/notification_endpoints_service.pyi index 35286fe1d..4d99507c1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/notification_endpoints_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/notification_endpoints_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class NotificationEndpointsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def create_notification_endpoint(self, post_notification_endpoint, **kwargs): ... def create_notification_endpoint_with_http_info(self, post_notification_endpoint, **kwargs): ... async def create_notification_endpoint_async(self, post_notification_endpoint, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/notification_rules_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/notification_rules_service.pyi index 2a449e3f4..614b00de2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/notification_rules_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/notification_rules_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class NotificationRulesService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def create_notification_rule(self, post_notification_rule, **kwargs): ... def create_notification_rule_with_http_info(self, post_notification_rule, **kwargs): ... async def create_notification_rule_async(self, post_notification_rule, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/organizations_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/organizations_service.pyi index 26b75e289..75424e736 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/organizations_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/organizations_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class OrganizationsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_orgs_id(self, org_id, **kwargs): ... def delete_orgs_id_with_http_info(self, org_id, **kwargs): ... async def delete_orgs_id_async(self, org_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/ping_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/ping_service.pyi index fd1b5bfa8..539860941 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/ping_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/ping_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class PingService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_ping(self, **kwargs): ... def get_ping_with_http_info(self, **kwargs): ... async def get_ping_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/query_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/query_service.pyi index 409d0070b..66c47a5cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/query_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/query_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class QueryService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_query_suggestions(self, **kwargs): ... def get_query_suggestions_with_http_info(self, **kwargs): ... async def get_query_suggestions_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/ready_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/ready_service.pyi index ff3e13dac..0bd5c56b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/ready_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/ready_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class ReadyService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_ready(self, **kwargs): ... def get_ready_with_http_info(self, **kwargs): ... async def get_ready_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/remote_connections_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/remote_connections_service.pyi index 1bfede4c8..363682d60 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/remote_connections_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/remote_connections_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class RemoteConnectionsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_remote_connection_by_id(self, remote_id, **kwargs): ... def delete_remote_connection_by_id_with_http_info(self, remote_id, **kwargs): ... async def delete_remote_connection_by_id_async(self, remote_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/replications_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/replications_service.pyi index 96e1056f0..bec647cf4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/replications_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/replications_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class ReplicationsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_replication_by_id(self, replication_id, **kwargs): ... def delete_replication_by_id_with_http_info(self, replication_id, **kwargs): ... async def delete_replication_by_id_async(self, replication_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/resources_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/resources_service.pyi index c5894161d..a98bd7ce4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/resources_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/resources_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class ResourcesService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_resources(self, **kwargs): ... def get_resources_with_http_info(self, **kwargs): ... async def get_resources_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/restore_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/restore_service.pyi index c826e5a4a..9f61c4abe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/restore_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/restore_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class RestoreService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def post_restore_bucket_id(self, bucket_id, body, **kwargs): ... def post_restore_bucket_id_with_http_info(self, bucket_id, body, **kwargs): ... async def post_restore_bucket_id_async(self, bucket_id, body, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/routes_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/routes_service.pyi index d04bac3ae..334e168e7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/routes_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/routes_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class RoutesService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_routes(self, **kwargs): ... def get_routes_with_http_info(self, **kwargs): ... async def get_routes_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/rules_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/rules_service.pyi index e11bec1b4..fc280827a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/rules_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/rules_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class RulesService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_notification_rules_id_query(self, rule_id, **kwargs): ... def get_notification_rules_id_query_with_http_info(self, rule_id, **kwargs): ... async def get_notification_rules_id_query_async(self, rule_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/scraper_targets_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/scraper_targets_service.pyi index 20876f187..99ce5213a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/scraper_targets_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/scraper_targets_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class ScraperTargetsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_scrapers_id(self, scraper_target_id, **kwargs): ... def delete_scrapers_id_with_http_info(self, scraper_target_id, **kwargs): ... async def delete_scrapers_id_async(self, scraper_target_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/secrets_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/secrets_service.pyi index 8e5e2c02a..73a935a11 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/secrets_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/secrets_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class SecretsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_orgs_id_secrets_id(self, org_id, secret_id, **kwargs): ... def delete_orgs_id_secrets_id_with_http_info(self, org_id, secret_id, **kwargs): ... async def delete_orgs_id_secrets_id_async(self, org_id, secret_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/setup_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/setup_service.pyi index a423d9ea1..576736a42 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/setup_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/setup_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class SetupService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_setup(self, **kwargs): ... def get_setup_with_http_info(self, **kwargs): ... async def get_setup_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/signin_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/signin_service.pyi index 45c335647..0d6d357b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/signin_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/signin_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class SigninService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def post_signin(self, **kwargs): ... def post_signin_with_http_info(self, **kwargs): ... async def post_signin_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/signout_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/signout_service.pyi index 99940d205..59adb059a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/signout_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/signout_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class SignoutService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def post_signout(self, **kwargs): ... def post_signout_with_http_info(self, **kwargs): ... async def post_signout_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/sources_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/sources_service.pyi index 8ee48a137..762a197d2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/sources_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/sources_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class SourcesService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_sources_id(self, source_id, **kwargs): ... def delete_sources_id_with_http_info(self, source_id, **kwargs): ... async def delete_sources_id_async(self, source_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/tasks_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/tasks_service.pyi index 218df1051..acc4d78c3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/tasks_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/tasks_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class TasksService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_tasks_id(self, task_id, **kwargs): ... def delete_tasks_id_with_http_info(self, task_id, **kwargs): ... async def delete_tasks_id_async(self, task_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/telegraf_plugins_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/telegraf_plugins_service.pyi index cfa934533..6a985c2c9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/telegraf_plugins_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/telegraf_plugins_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class TelegrafPluginsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_telegraf_plugins(self, **kwargs): ... def get_telegraf_plugins_with_http_info(self, **kwargs): ... async def get_telegraf_plugins_async(self, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/telegrafs_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/telegrafs_service.pyi index 18594458d..7b6be0bfb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/telegrafs_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/telegrafs_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class TelegrafsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_telegrafs_id(self, telegraf_id, **kwargs): ... def delete_telegrafs_id_with_http_info(self, telegraf_id, **kwargs): ... async def delete_telegrafs_id_async(self, telegraf_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/templates_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/templates_service.pyi index 199f0fc17..21bb85f65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/templates_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/templates_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class TemplatesService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def apply_template(self, template_apply, **kwargs): ... def apply_template_with_http_info(self, template_apply, **kwargs): ... async def apply_template_async(self, template_apply, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/users_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/users_service.pyi index b0bbd8818..17ab6a5e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/users_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/users_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class UsersService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_users_id(self, user_id, **kwargs): ... def delete_users_id_with_http_info(self, user_id, **kwargs): ... async def delete_users_id_async(self, user_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/variables_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/variables_service.pyi index 4a180192e..1afa53d20 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/variables_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/variables_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class VariablesService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def delete_variables_id(self, variable_id, **kwargs): ... def delete_variables_id_with_http_info(self, variable_id, **kwargs): ... async def delete_variables_id_async(self, variable_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/views_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/views_service.pyi index 127b8e5df..b55fd238b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/views_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/views_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class ViewsService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def get_dashboards_id_cells_id_view(self, dashboard_id, cell_id, **kwargs): ... def get_dashboards_id_cells_id_view_with_http_info(self, dashboard_id, cell_id, **kwargs): ... async def get_dashboards_id_cells_id_view_async(self, dashboard_id, cell_id, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/write_service.pyi b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/write_service.pyi index 7f1ec2ebb..748b716ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/write_service.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/influxdb_client/service/write_service.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from influxdb_client.service._base_service import _BaseService class WriteService(_BaseService): - def __init__(self, api_client: Incomplete | None = ...) -> None: ... + def __init__(self, api_client: Incomplete | None = None) -> None: ... def post_write(self, org, bucket, body, **kwargs): ... def post_write_with_http_info(self, org, bucket, body, **kwargs): ... async def post_write_async(self, org, bucket, body, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/collection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/collection.pyi index 415b0bfef..0727ca968 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/collection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/collection.pyi @@ -9,16 +9,16 @@ class Collection: auto_dash_names: bool def __init__(self, *args, **kwargs) -> None: ... @classmethod - def from_module(cls, module, name=..., config=..., loaded_from=..., auto_dash_names=...): ... - def add_task(self, task, name=..., aliases=..., default=...) -> None: ... - def add_collection(self, coll, name=..., default=...) -> None: ... + def from_module(cls, module, name=None, config=None, loaded_from=None, auto_dash_names=None): ... + def add_task(self, task, name=None, aliases=None, default=None) -> None: ... + def add_collection(self, coll, name=None, default=None) -> None: ... def subcollection_from_path(self, path): ... def task_with_config(self, name): ... - def to_contexts(self, ignore_unknown_help: bool | None = ...): ... + def to_contexts(self, ignore_unknown_help: bool | None = None): ... def subtask_name(self, collection_name, task_name): ... def transform(self, name): ... @property def task_names(self): ... - def configuration(self, taskpath=...): ... + def configuration(self, taskpath=None): ... def configure(self, options) -> None: ... def serialized(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/config.pyi index 6e843fdef..a67ef6961 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/config.pyi @@ -4,7 +4,7 @@ def load_source(name: str, path: str) -> dict[str, Any]: ... class DataProxy: @classmethod - def from_data(cls, data, root=..., keypath=...): ... + def from_data(cls, data, root=None, keypath=()): ... def __getattr__(self, key: str): ... def __setattr__(self, key: str, value) -> None: ... def __iter__(self): ... @@ -30,27 +30,27 @@ class Config(DataProxy): def global_defaults(): ... def __init__( self, - overrides=..., - defaults=..., - system_prefix=..., - user_prefix=..., - project_location=..., - runtime_path=..., - lazy: bool = ..., + overrides=None, + defaults=None, + system_prefix=None, + user_prefix=None, + project_location=None, + runtime_path=None, + lazy: bool = False, ) -> None: ... def load_base_conf_files(self) -> None: ... - def load_defaults(self, data, merge: bool = ...) -> None: ... - def load_overrides(self, data, merge: bool = ...) -> None: ... - def load_system(self, merge: bool = ...) -> None: ... - def load_user(self, merge: bool = ...) -> None: ... - def load_project(self, merge: bool = ...) -> None: ... + def load_defaults(self, data, merge: bool = True) -> None: ... + def load_overrides(self, data, merge: bool = True) -> None: ... + def load_system(self, merge: bool = True) -> None: ... + def load_user(self, merge: bool = True) -> None: ... + def load_project(self, merge: bool = True) -> None: ... def set_runtime_path(self, path) -> None: ... - def load_runtime(self, merge: bool = ...) -> None: ... + def load_runtime(self, merge: bool = True) -> None: ... def load_shell_env(self) -> None: ... - def load_collection(self, data, merge: bool = ...) -> None: ... + def load_collection(self, data, merge: bool = True) -> None: ... def set_project_location(self, path) -> None: ... def merge(self) -> None: ... - def clone(self, into=...): ... + def clone(self, into=None): ... class AmbiguousMergeError(ValueError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/context.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/context.pyi index 40844a34b..044fcf8fe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/context.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/context.pyi @@ -4,7 +4,7 @@ from contextlib import AbstractContextManager from .config import Config, DataProxy class Context(DataProxy): - def __init__(self, config: Config | None = ...) -> None: ... + def __init__(self, config: Config | None = None) -> None: ... @property def config(self) -> Config: ... @config.setter @@ -17,7 +17,7 @@ class Context(DataProxy): def cd(self, path: str | pathlib.Path) -> AbstractContextManager[None]: ... class MockContext(Context): - def __init__(self, config: Config | None = ..., **kwargs) -> None: ... + def __init__(self, config: Config | None = None, **kwargs) -> None: ... def run(self, command: str, *args, **kwargs): ... def sudo(self, command: str, *args, **kwargs): ... def set_result_for(self, attname, command, result) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/exceptions.pyi index 437cbc935..5d81f16ea 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/exceptions.pyi @@ -8,7 +8,7 @@ class CollectionNotFound(Exception): class Failure(Exception): result: Any reason: Any - def __init__(self, result, reason=...) -> None: ... + def __init__(self, result, reason=None) -> None: ... def streams_for_display(self): ... class UnexpectedExit(Failure): ... @@ -24,11 +24,11 @@ class AuthFailure(Failure): class ParseError(Exception): context: Any - def __init__(self, msg, context=...) -> None: ... + def __init__(self, msg, context=None) -> None: ... class Exit(Exception): message: Any - def __init__(self, message=..., code=...) -> None: ... + def __init__(self, message=None, code=None) -> None: ... @property def code(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/executor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/executor.pyi index fc9b6c147..dc915f896 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/executor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/executor.pyi @@ -10,7 +10,7 @@ class Executor: collection: Collection config: Config core: ParseResult | None - def __init__(self, collection: Collection, config: Config | None = ..., core: ParseResult | None = ...) -> None: ... + def __init__(self, collection: Collection, config: Config | None = None, core: ParseResult | None = None) -> None: ... def execute(self, *tasks: str | tuple[str, dict[str, Any]] | ParserContext) -> dict[Task[..., Any], Any]: ... def normalize(self, tasks: Iterable[str | tuple[str, dict[str, Any]] | ParserContext]): ... def dedupe(self, calls: Iterable[Call]) -> list[Call]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/loader.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/loader.pyi index b339d5de3..29e439ce0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/loader.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/loader.pyi @@ -5,11 +5,11 @@ from . import Config class Loader: config: Config - def __init__(self, config: Config | None = ...) -> None: ... + def __init__(self, config: Config | None = None) -> None: ... def find(self, name: str) -> tuple[str, IO[Any], str, tuple[str, str, int]]: ... - def load(self, name: str | None = ...) -> tuple[ModuleType, str]: ... + def load(self, name: str | None = None) -> tuple[ModuleType, str]: ... class FilesystemLoader(Loader): - def __init__(self, start: str | None = ..., **kwargs: Any) -> None: ... + def __init__(self, start: str | None = None, **kwargs: Any) -> None: ... @property def start(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/argument.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/argument.pyi index 1fd21823f..2a67349ca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/argument.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/argument.pyi @@ -12,15 +12,15 @@ class Argument: attr_name: Any def __init__( self, - name=..., - names=..., + name=None, + names=(), kind=..., - default=..., - help=..., - positional: bool = ..., - optional: bool = ..., - incrementable: bool = ..., - attr_name=..., + default=None, + help=None, + positional: bool = False, + optional: bool = False, + incrementable: bool = False, + attr_name=None, ) -> None: ... @property def name(self): ... @@ -32,6 +32,6 @@ class Argument: def value(self): ... @value.setter def value(self, arg) -> None: ... - def set_value(self, value, cast: bool = ...): ... + def set_value(self, value, cast: bool = True): ... @property def got_value(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/context.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/context.pyi index 80cc56a57..305db49c3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/context.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/context.pyi @@ -12,7 +12,7 @@ class ParserContext: inverse_flags: Any name: Any aliases: Any - def __init__(self, name=..., aliases=..., args=...) -> None: ... + def __init__(self, name=None, aliases=(), args=()) -> None: ... def add_arg(self, *args, **kwargs) -> None: ... @property def missing_positional_args(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/parser.pyi index 2f836db1a..fd95efa38 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/parser/parser.pyi @@ -9,7 +9,7 @@ class Parser: initial: Any contexts: Any ignore_unknown: Any - def __init__(self, contexts=..., initial=..., ignore_unknown: bool = ...) -> None: ... + def __init__(self, contexts=(), initial=None, ignore_unknown: bool = False) -> None: ... def parse_argv(self, argv): ... class ParseMachine: @@ -31,7 +31,7 @@ class ParseMachine: def switch_to_context(self, name) -> None: ... def complete_flag(self) -> None: ... def check_ambiguity(self, value): ... - def switch_to_flag(self, flag, inverse: bool = ...) -> None: ... + def switch_to_flag(self, flag, inverse: bool = False) -> None: ... def see_value(self, value) -> None: ... def see_positional_arg(self, value) -> None: ... def error(self, msg) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/program.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/program.pyi index 280458237..c6afda832 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/program.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/program.pyi @@ -16,19 +16,19 @@ class Program: config_class: Any def __init__( self, - version=..., - namespace=..., - name=..., - binary=..., - loader_class=..., - executor_class=..., - config_class=..., - binary_names=..., + version=None, + namespace=None, + name=None, + binary=None, + loader_class=None, + executor_class=None, + config_class=None, + binary_names=None, ) -> None: ... config: Any def create_config(self) -> None: ... - def update_config(self, merge: bool = ...) -> None: ... - def run(self, argv=..., exit: bool = ...) -> None: ... + def update_config(self, merge: bool = True) -> None: ... + def run(self, argv=None, exit: bool = True) -> None: ... def parse_core(self, argv) -> None: ... collection: Any list_root: Any @@ -66,6 +66,6 @@ class Program: def list_flat(self) -> None: ... def list_nested(self) -> None: ... def list_json(self) -> None: ... - def task_list_opener(self, extra: str = ...): ... - def display_with_columns(self, pairs, extra: str = ...) -> None: ... + def task_list_opener(self, extra: str = ""): ... + def display_with_columns(self, pairs, extra: str = "") -> None: ... def print_columns(self, tuples) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/runners.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/runners.pyi index 554f56286..ba0db6545 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/runners.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/runners.pyi @@ -48,7 +48,7 @@ class Runner: command: str, *, asynchronous: Literal[True], - disown: Literal[False] = ..., + disown: Literal[False] = False, dry: bool = ..., echo: bool = ..., echo_format: str = ..., @@ -73,8 +73,8 @@ class Runner: self, command: str, *, - asynchronous: Literal[False] = ..., - disown: Literal[False] = ..., + asynchronous: Literal[False] = False, + disown: Literal[False] = False, dry: bool = ..., echo: bool = ..., echo_format: str = ..., @@ -156,7 +156,7 @@ class Runner: class Local(Runner): status: Any def __init__(self, context) -> None: ... - def should_use_pty(self, pty: bool = ..., fallback: bool = ...): ... + def should_use_pty(self, pty: bool = False, fallback: bool = True): ... process: Any class Result: @@ -171,15 +171,15 @@ class Result: hide: tuple[Literal["stdout", "stderr"], ...] def __init__( self, - stdout: str = ..., - stderr: str = ..., - encoding: str | None = ..., - command: str = ..., - shell: str = ..., - env=..., - exited: int = ..., - pty: bool = ..., - hide: tuple[Literal["stdout", "stderr"], ...] = ..., + stdout: str = "", + stderr: str = "", + encoding: str | None = None, + command: str = "", + shell: str = "", + env=None, + exited: int = 0, + pty: bool = False, + hide: tuple[Literal["stdout", "stderr"], ...] = (), ) -> None: ... @property def return_code(self) -> int: ... @@ -188,7 +188,7 @@ class Result: def ok(self) -> bool: ... @property def failed(self) -> bool: ... - def tail(self, stream: Literal["stderr", "stdout"], count: int = ...) -> str: ... + def tail(self, stream: Literal["stderr", "stdout"], count: int = 10) -> str: ... class Promise(Result): runner: Any @@ -199,5 +199,5 @@ class Promise(Result): self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None ) -> None: ... -def normalize_hide(val, out_stream=..., err_stream=...): ... +def normalize_hide(val, out_stream=None, err_stream=None): ... def default_encoding() -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/tasks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/tasks.pyi index 0240aca9f..7a1188a4e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/tasks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/tasks.pyi @@ -31,18 +31,18 @@ class Task(Generic[_P, _R_co]): def __init__( self, body: Callable[..., Any], - name: str | None = ..., - aliases: tuple[str, ...] = ..., - positional: Iterable[str] | None = ..., - optional: Iterable[str] = ..., - default: bool = ..., - auto_shortflags: bool = ..., - help: dict[str, str] | None = ..., - pre: Iterable[Task[..., Any] | Call] | None = ..., - post: Iterable[Task[..., Any] | Call] | None = ..., - autoprint: bool = ..., - iterable: Iterable[str] | None = ..., - incrementable: Iterable[str] | None = ..., + name: str | None = None, + aliases: tuple[str, ...] = (), + positional: Iterable[str] | None = None, + optional: Iterable[str] = (), + default: bool = False, + auto_shortflags: bool = True, + help: dict[str, str] | None = None, + pre: Iterable[Task[..., Any] | Call] | None = None, + post: Iterable[Task[..., Any] | Call] | None = None, + autoprint: bool = False, + iterable: Iterable[str] | None = None, + incrementable: Iterable[str] | None = None, ) -> None: ... @property def name(self): ... @@ -54,7 +54,7 @@ class Task(Generic[_P, _R_co]): def argspec(self, body): ... def fill_implicit_positionals(self, positional: Iterable[str] | None) -> Iterable[str]: ... def arg_opts(self, name: str, default: Any, taken_names: Iterable[str]) -> dict[str, Any]: ... - def get_arguments(self, ignore_unknown_help: bool | None = ...) -> list[Argument]: ... + def get_arguments(self, ignore_unknown_help: bool | None = None) -> list[Argument]: ... @overload def task( @@ -100,9 +100,9 @@ class Call: def __init__( self, task: Task[..., Any], - called_as: str | None = ..., - args: tuple[Any, ...] | None = ..., - kwargs: dict[str, Any] | None = ..., + called_as: str | None = None, + args: tuple[Any, ...] | None = None, + kwargs: dict[str, Any] | None = None, ) -> None: ... def __getattr__(self, name: str) -> Any: ... def __deepcopy__(self, memo: Any) -> Self: ... @@ -110,6 +110,6 @@ class Call: def make_context(self, config: Config) -> Context: ... def clone_data(self): ... # TODO use overload - def clone(self, into: type[Call] | None = ..., with_: dict[str, Any] | None = ...) -> Call: ... + def clone(self, into: type[Call] | None = None, with_: dict[str, Any] | None = None) -> Call: ... def call(task: Task[..., Any], *args: Any, **kwargs: Any) -> Call: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/util.pyi index bfd238204..30cfaa62d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/invoke/util.pyi @@ -21,7 +21,7 @@ class ExceptionHandlingThread(threading.Thread): def __init__( self, *, - group: None = ..., + group: None = None, target: Callable[..., object] | None = ..., name: str | None = ..., args: Iterable[Any] = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/__init__.pyi index 9406a3dcc..46cae8183 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/__init__.pyi @@ -4,4 +4,4 @@ from jmespath import parser as parser from jmespath.visitor import Options as Options def compile(expression: str) -> parser.ParsedResult: ... -def search(expression: str, data: Any, options: Options | None = ...) -> Any: ... +def search(expression: str, data: Any, options: Options | None = None) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/exceptions.pyi index e09d9425a..13500a8e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/exceptions.pyi @@ -9,7 +9,9 @@ class ParseError(JMESPathError): token_type: str msg: str expression: str | None - def __init__(self, lex_position: int, token_value: str, token_type: str, msg: str = ...) -> None: ... + def __init__( + self, lex_position: int, token_value: str, token_type: str, msg: str = "Invalid jmespath expression" + ) -> None: ... class IncompleteExpressionError(ParseError): # When ParseError is used directly, the token always have a non-null value and type @@ -22,7 +24,7 @@ class LexerError(ParseError): lexer_position: int lexer_value: str message: str - def __init__(self, lexer_position: int, lexer_value: str, message: str, expression: str | None = ...) -> None: ... + def __init__(self, lexer_position: int, lexer_value: str, message: str, expression: str | None = None) -> None: ... class ArityError(ParseError): expected_arity: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/parser.pyi index cc75ceeda..fc3c7aa9d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/parser.pyi @@ -7,7 +7,7 @@ from jmespath.visitor import Options, _TreeNode class Parser: BINDING_POWER: ClassVar[dict[str, int]] tokenizer: Iterator[_LexerTokenizeResult] | None - def __init__(self, lookahead: int = ...) -> None: ... + def __init__(self, lookahead: int = 2) -> None: ... def parse(self, expression: str) -> ParsedResult: ... @classmethod def purge(cls) -> None: ... @@ -16,4 +16,4 @@ class ParsedResult: expression: str parsed: _TreeNode def __init__(self, expression: str, parsed: _TreeNode) -> None: ... - def search(self, value: Any, options: Options | None = ...) -> Any: ... + def search(self, value: Any, options: Options | None = None) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/visitor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/visitor.pyi index 4189200fd..7338286d0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/visitor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/jmespath/visitor.pyi @@ -8,7 +8,7 @@ class Options: dict_cls: Callable[[], MutableMapping[Any, Any]] | None custom_functions: Functions | None def __init__( - self, dict_cls: Callable[[], MutableMapping[Any, Any]] | None = ..., custom_functions: Functions | None = ... + self, dict_cls: Callable[[], MutableMapping[Any, Any]] | None = None, custom_functions: Functions | None = None ) -> None: ... class _Expression: @@ -30,7 +30,7 @@ class _TreeNode(TypedDict): class TreeInterpreter(Visitor): COMPARATOR_FUNC: ClassVar[dict[str, Callable[[Any, Any], Any]]] MAP_TYPE: ClassVar[Callable[[], MutableMapping[Any, Any]]] - def __init__(self, options: Options | None = ...) -> None: ... + def __init__(self, options: Options | None = None) -> None: ... def default_visit(self, node: _TreeNode, *args, **kwargs) -> NoReturn: ... def visit_subexpression(self, node: _TreeNode, value: Any) -> Any: ... def visit_field(self, node: _TreeNode, value: Any) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_format.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_format.pyi index 9c2b12ef1..fd4615fa7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_format.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_format.pyi @@ -9,10 +9,10 @@ _RaisesType: TypeAlias = type[Exception] | tuple[type[Exception], ...] class FormatChecker: checkers: dict[str, tuple[_FormatCheckCallable, _RaisesType]] - def __init__(self, formats: Iterable[str] | None = ...) -> None: ... - def checks(self, format: str, raises: _RaisesType = ...) -> Callable[[_F], _F]: ... + def __init__(self, formats: Iterable[str] | None = None) -> None: ... + def checks(self, format: str, raises: _RaisesType = ()) -> Callable[[_F], _F]: ... @classmethod - def cls_checks(cls, format: str, raises: _RaisesType = ...) -> Callable[[_F], _F]: ... + def cls_checks(cls, format: str, raises: _RaisesType = ()) -> Callable[[_F], _F]: ... def check(self, instance: object, format: str) -> None: ... def conforms(self, instance: object, format: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_types.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_types.pyi index 2a3641d32..4c248ab95 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_types.pyi @@ -13,7 +13,7 @@ class TypeChecker: def __init__(self, type_checkers: Mapping[str, Callable[[object], bool]] = ...) -> None: ... def is_type(self, instance, type: str) -> bool: ... def redefine(self, type: str, fn: Callable[..., bool]) -> TypeChecker: ... - def redefine_many(self, definitions=...) -> TypeChecker: ... + def redefine_many(self, definitions=()) -> TypeChecker: ... def remove(self, *types: Iterable[str]) -> TypeChecker: ... draft3_type_checker: TypeChecker diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/exceptions.pyi index a61828da1..0086a63b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/exceptions.pyi @@ -29,14 +29,14 @@ class _Error(Exception): self, message: str, validator: _utils.Unset | None | protocols.Validator = ..., - path: Sequence[str | int] = ..., - cause: Incomplete | None = ..., - context: Sequence[ValidationError] = ..., + path: Sequence[str | int] = (), + cause: Incomplete | None = None, + context: Sequence[ValidationError] = (), validator_value=..., instance: Any = ..., schema: Any = ..., - schema_path: Sequence[str | int] = ..., - parent: _Error | None = ..., + schema_path: Sequence[str | int] = (), + parent: _Error | None = None, type_checker: _utils.Unset | TypeChecker = ..., ) -> None: ... @classmethod @@ -70,11 +70,11 @@ class UnknownType(Exception): class FormatError(Exception): message: Any cause: Any - def __init__(self, message, cause: Incomplete | None = ...) -> None: ... + def __init__(self, message, cause: Incomplete | None = None) -> None: ... class ErrorTree: errors: Any - def __init__(self, errors=...) -> None: ... + def __init__(self, errors=()) -> None: ... def __contains__(self, index): ... def __getitem__(self, index): ... def __setitem__(self, index, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/protocols.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/protocols.pyi index 7a3c6e145..21ce62bc4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/protocols.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/protocols.pyi @@ -16,7 +16,7 @@ class Validator(Protocol): FORMAT_CHECKER: ClassVar[FormatChecker] schema: dict[Any, Any] | bool def __init__( - self, schema: dict[Any, Any] | bool, resolver: RefResolver | None = ..., format_checker: FormatChecker | None = ... + self, schema: dict[Any, Any] | bool, resolver: RefResolver | None = None, format_checker: FormatChecker | None = None ) -> None: ... @classmethod def check_schema(cls, schema: dict[Any, Any]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/validators.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/validators.pyi index 635d8f4e6..2e9afa99a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/validators.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/validators.pyi @@ -43,8 +43,8 @@ class _Validator: def validates(version: str) -> Callable[..., Any]: ... def create( meta_schema: _Schema, - validators: Mapping[str, _ValidatorCallback] | tuple[()] = ..., - version: Incomplete | None = ..., + validators: Mapping[str, _ValidatorCallback] | tuple[()] = (), + version: Incomplete | None = None, type_checker: TypeChecker = ..., format_checker: FormatChecker = ..., id_of: Callable[[_Schema], str] = ..., @@ -52,10 +52,10 @@ def create( ) -> type[_Validator]: ... def extend( validator, - validators=..., - version: Incomplete | None = ..., - type_checker: Incomplete | None = ..., - format_checker: Incomplete | None = ..., + validators=(), + version: Incomplete | None = None, + type_checker: Incomplete | None = None, + format_checker: Incomplete | None = None, ): ... # At runtime these are fields that are assigned the return values of create() calls. @@ -78,10 +78,10 @@ class RefResolver: base_uri: str, referrer: dict[str, Any], store: SupportsKeysAndGetItem[str, str] | Iterable[tuple[str, str]] = ..., - cache_remote: bool = ..., - handlers: SupportsKeysAndGetItem[str, _Handler] | Iterable[tuple[str, _Handler]] = ..., - urljoin_cache: Incomplete | None = ..., - remote_cache: Incomplete | None = ..., + cache_remote: bool = True, + handlers: SupportsKeysAndGetItem[str, _Handler] | Iterable[tuple[str, _Handler]] = (), + urljoin_cache: Incomplete | None = None, + remote_cache: Incomplete | None = None, ) -> None: ... @classmethod def from_schema(cls, schema: _Schema, id_of=..., *args, **kwargs): ... @@ -100,5 +100,5 @@ class RefResolver: def resolve_fragment(self, document, fragment): ... def resolve_remote(self, uri): ... -def validate(instance: object, schema: _Schema, cls: type[_Validator] | None = ..., *args: Any, **kwargs: Any) -> None: ... +def validate(instance: object, schema: _Schema, cls: type[_Validator] | None = None, *args: Any, **kwargs: Any) -> None: ... def validator_for(schema: _Schema | bool, default=...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/__init__.pyi index d65c0c508..432d23366 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/__init__.pyi @@ -20,9 +20,9 @@ class _Event(_UninterruptibleEvent): def wait(self) -> None: ... # type: ignore[override] # Actual implementation def is_modifier(key: _Key | None) -> bool: ... -def key_to_scan_codes(key: _ParseableHotkey, error_if_missing: bool = ...) -> tuple[int, ...]: ... +def key_to_scan_codes(key: _ParseableHotkey, error_if_missing: bool = True) -> tuple[int, ...]: ... def parse_hotkey(hotkey: _ParseableHotkey) -> tuple[tuple[tuple[int, ...], ...], ...]: ... -def send(hotkey: _ParseableHotkey, do_press: bool = ..., do_release: bool = ...) -> None: ... +def send(hotkey: _ParseableHotkey, do_press: bool = True, do_release: bool = True) -> None: ... press_and_release = send @@ -32,13 +32,13 @@ def release(hotkey: _ParseableHotkey) -> None: ... # is_pressed cannot check multi-step hotkeys, so not using _ParseableHotkey def is_pressed(hotkey: _Key | _ScanCodeList) -> bool: ... -def call_later(fn: Callable[..., None], args: _Ts = ..., delay: float = ...) -> None: ... -def hook(callback: _Callback, suppress: bool = ..., on_remove: Callable[[], None] = ...) -> Callable[[], None]: ... -def on_press(callback: _Callback, suppress: bool = ...) -> Callable[[], None]: ... -def on_release(callback: _Callback, suppress: bool = ...) -> Callable[[], None]: ... -def hook_key(key: _ParseableHotkey, callback: _Callback, suppress: bool = ...) -> Callable[[], None]: ... -def on_press_key(key: _ParseableHotkey, callback: _Callback, suppress: bool = ...) -> Callable[[], None]: ... -def on_release_key(key: _ParseableHotkey, callback: _Callback, suppress: bool = ...) -> Callable[[], None]: ... +def call_later(fn: Callable[..., None], args: _Ts = (), delay: float = 0.001) -> None: ... +def hook(callback: _Callback, suppress: bool = False, on_remove: Callable[[], None] = ...) -> Callable[[], None]: ... +def on_press(callback: _Callback, suppress: bool = False) -> Callable[[], None]: ... +def on_release(callback: _Callback, suppress: bool = False) -> Callable[[], None]: ... +def hook_key(key: _ParseableHotkey, callback: _Callback, suppress: bool = False) -> Callable[[], None]: ... +def on_press_key(key: _ParseableHotkey, callback: _Callback, suppress: bool = False) -> Callable[[], None]: ... +def on_release_key(key: _ParseableHotkey, callback: _Callback, suppress: bool = False) -> Callable[[], None]: ... def unhook(remove: _Callback) -> None: ... unhook_key = unhook @@ -56,10 +56,10 @@ def parse_hotkey_combinations(hotkey: _ParseableHotkey) -> tuple[tuple[tuple[int def add_hotkey( hotkey: _ParseableHotkey, callback: Callable[..., bool | None], - args: _Ts = ..., - suppress: bool = ..., - timeout: float = ..., - trigger_on_release: bool = ..., + args: _Ts = (), + suppress: bool = False, + timeout: float = 1, + trigger_on_release: bool = False, ) -> Callable[[], None]: ... register_hotkey = add_hotkey @@ -76,7 +76,7 @@ remove_all_hotkeys = unhook_all_hotkeys clear_all_hotkeys = unhook_all_hotkeys def remap_hotkey( - src: _ParseableHotkey, dst: _ParseableHotkey, suppress: bool = ..., trigger_on_release: bool = ... + src: _ParseableHotkey, dst: _ParseableHotkey, suppress: bool = True, trigger_on_release: bool = False ) -> Callable[[], None]: ... unremap_hotkey = remove_hotkey @@ -84,28 +84,28 @@ unremap_hotkey = remove_hotkey def stash_state() -> list[int]: ... def restore_state(scan_codes: Iterable[int]) -> None: ... def restore_modifiers(scan_codes: Iterable[int]) -> None: ... -def write(text: str, delay: float = ..., restore_state_after: bool = ..., exact: bool | None = ...) -> None: ... -def wait(hotkey: _ParseableHotkey | None = ..., suppress: bool = ..., trigger_on_release: bool = ...) -> None: ... -def get_hotkey_name(names: Iterable[str] | None = ...) -> str: ... -def read_event(suppress: bool = ...) -> KeyboardEvent: ... -def read_key(suppress: bool = ...) -> _Key: ... -def read_hotkey(suppress: bool = ...) -> str: ... -def get_typed_strings(events: Iterable[KeyboardEvent], allow_backspace: bool = ...) -> Generator[str, None, None]: ... +def write(text: str, delay: float = 0, restore_state_after: bool = True, exact: bool | None = None) -> None: ... +def wait(hotkey: _ParseableHotkey | None = None, suppress: bool = False, trigger_on_release: bool = False) -> None: ... +def get_hotkey_name(names: Iterable[str] | None = None) -> str: ... +def read_event(suppress: bool = False) -> KeyboardEvent: ... +def read_key(suppress: bool = False) -> _Key: ... +def read_hotkey(suppress: bool = True) -> str: ... +def get_typed_strings(events: Iterable[KeyboardEvent], allow_backspace: bool = True) -> Generator[str, None, None]: ... def start_recording( - recorded_events_queue: Queue[KeyboardEvent] | None = ..., + recorded_events_queue: Queue[KeyboardEvent] | None = None, ) -> tuple[Queue[KeyboardEvent], Callable[[], None]]: ... def stop_recording() -> list[KeyboardEvent]: ... -def record(until: str = ..., suppress: bool = ..., trigger_on_release: bool = ...) -> list[KeyboardEvent]: ... -def play(events: Iterable[KeyboardEvent], speed_factor: float = ...) -> None: ... +def record(until: str = "escape", suppress: bool = False, trigger_on_release: bool = False) -> list[KeyboardEvent]: ... +def play(events: Iterable[KeyboardEvent], speed_factor: float = 1.0) -> None: ... replay = play def add_word_listener( - word: str, callback: _Callback, triggers: Sequence[str] = ..., match_suffix: bool = ..., timeout: float = ... + word: str, callback: _Callback, triggers: Sequence[str] = ["space"], match_suffix: bool = False, timeout: float = 2 ) -> Callable[[], None]: ... def remove_word_listener(word_or_handler: str | _Callback) -> None: ... def add_abbreviation( - source_text: str, replacement_text: str, match_suffix: bool = ..., timeout: float = ... + source_text: str, replacement_text: str, match_suffix: bool = False, timeout: float = 2 ) -> Callable[[], None]: ... register_word_listener = add_word_listener diff --git a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/_keyboard_event.pyi b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/_keyboard_event.pyi index 9c511fdcc..e96ced9e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/_keyboard_event.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/_keyboard_event.pyi @@ -18,11 +18,11 @@ class KeyboardEvent: self, event_type: Literal["down", "up"] | None, scan_code: int, - name: str | None = ..., - time: float | None = ..., - device: str | None = ..., - modifiers: tuple[str, ...] | None = ..., - is_keypad: bool | None = ..., + name: str | None = None, + time: float | None = None, + device: str | None = None, + modifiers: tuple[str, ...] | None = None, + is_keypad: bool | None = None, ) -> None: ... - def to_json(self, ensure_ascii: bool = ...) -> str: ... + def to_json(self, ensure_ascii: bool = False) -> str: ... def __eq__(self, other: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/mouse.pyi b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/mouse.pyi index 48a10d234..d805a9d23 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/mouse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/mouse.pyi @@ -35,26 +35,26 @@ class _MouseListener(_GenericListener): ) -> Literal[True]: ... def listen(self) -> None: ... -def is_pressed(button: _MouseButton = ...) -> bool: ... -def press(button: _MouseButton = ...) -> None: ... -def release(button: _MouseButton = ...) -> None: ... -def click(button: _MouseButton = ...) -> None: ... -def double_click(button: _MouseButton = ...) -> None: ... +def is_pressed(button: _MouseButton = "left") -> bool: ... +def press(button: _MouseButton = "left") -> None: ... +def release(button: _MouseButton = "left") -> None: ... +def click(button: _MouseButton = "left") -> None: ... +def double_click(button: _MouseButton = "left") -> None: ... def right_click() -> None: ... -def wheel(delta: int = ...) -> None: ... -def move(x: SupportsInt, y: SupportsInt, absolute: bool = ..., duration: float = ...) -> None: ... -def drag(start_x: int, start_y: int, end_x: int, end_y: int, absolute: bool = ..., duration: float = ...) -> None: ... +def wheel(delta: int = 1) -> None: ... +def move(x: SupportsInt, y: SupportsInt, absolute: bool = True, duration: float = 0) -> None: ... +def drag(start_x: int, start_y: int, end_x: int, end_y: int, absolute: bool = True, duration: float = 0) -> None: ... def on_button( callback: Callable[..., None], - args: _Ts = ..., + args: _Ts = (), buttons: list[_MouseButton] | tuple[_MouseButton, ...] | _MouseButton = ..., types: list[_MouseEventType] | tuple[_MouseEventType, ...] | _MouseEventType = ..., ) -> _Callback: ... -def on_click(callback: Callable[..., None], args: _Ts = ...) -> _Callback: ... -def on_double_click(callback: Callable[..., None], args: _Ts = ...) -> _Callback: ... -def on_right_click(callback: Callable[..., None], args: _Ts = ...) -> _Callback: ... -def on_middle_click(callback: Callable[..., None], args: _Ts = ...) -> _Callback: ... -def wait(button: _MouseButton = ..., target_types: tuple[_MouseEventType] = ...) -> None: ... +def on_click(callback: Callable[..., None], args: _Ts = ()) -> _Callback: ... +def on_double_click(callback: Callable[..., None], args: _Ts = ()) -> _Callback: ... +def on_right_click(callback: Callable[..., None], args: _Ts = ()) -> _Callback: ... +def on_middle_click(callback: Callable[..., None], args: _Ts = ()) -> _Callback: ... +def wait(button: _MouseButton = "left", target_types: tuple[_MouseEventType] = ...) -> None: ... if sys.platform == "win32": def get_position() -> tuple[c_long, c_long]: ... @@ -65,13 +65,13 @@ else: def hook(callback: _C) -> _C: ... def unhook(callback: _Callback) -> None: ... def unhook_all() -> None: ... -def record(button: _MouseButton = ..., target_types: tuple[_MouseEventType] = ...) -> _MouseEvent: ... +def record(button: _MouseButton = "right", target_types: tuple[_MouseEventType] = ("down",)) -> _MouseEvent: ... def play( events: Iterable[_MouseEvent], - speed_factor: float = ..., - include_clicks: bool = ..., - include_moves: bool = ..., - include_wheel: bool = ..., + speed_factor: float = 1.0, + include_clicks: bool = True, + include_moves: bool = True, + include_wheel: bool = True, ) -> None: ... replay = play diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/attrDef.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/attrDef.pyi index 609123f43..d81a68f65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/attrDef.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/attrDef.pyi @@ -17,16 +17,16 @@ class AttrDef: def __init__( self, name, - key: Incomplete | None = ..., - validate: Incomplete | None = ..., - pre_query: Incomplete | None = ..., - post_query: Incomplete | None = ..., + key: Incomplete | None = None, + validate: Incomplete | None = None, + pre_query: Incomplete | None = None, + post_query: Incomplete | None = None, default=..., - dereference_dn: Incomplete | None = ..., - description: Incomplete | None = ..., - mandatory: bool = ..., - single_value: Incomplete | None = ..., - alias: Incomplete | None = ..., + dereference_dn: Incomplete | None = None, + description: Incomplete | None = None, + mandatory: bool = False, + single_value: Incomplete | None = None, + alias: Incomplete | None = None, ) -> None: ... def __eq__(self, other): ... def __lt__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/cursor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/cursor.pyi index 0787f9d28..862475b51 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/cursor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/cursor.pyi @@ -19,10 +19,10 @@ class Cursor: self, connection, object_def, - get_operational_attributes: bool = ..., - attributes: Incomplete | None = ..., - controls: Incomplete | None = ..., - auxiliary_class: Incomplete | None = ..., + get_operational_attributes: bool = False, + attributes: Incomplete | None = None, + controls: Incomplete | None = None, + auxiliary_class: Incomplete | None = None, ) -> None: ... def __iter__(self): ... def __getitem__(self, item): ... @@ -52,13 +52,13 @@ class Reader(Cursor): connection, object_def, base, - query: str = ..., - components_in_and: bool = ..., - sub_tree: bool = ..., - get_operational_attributes: bool = ..., - attributes: Incomplete | None = ..., - controls: Incomplete | None = ..., - auxiliary_class: Incomplete | None = ..., + query: str = "", + components_in_and: bool = True, + sub_tree: bool = True, + get_operational_attributes: bool = False, + attributes: Incomplete | None = None, + controls: Incomplete | None = None, + auxiliary_class: Incomplete | None = None, ) -> None: ... @property def query(self): ... @@ -72,12 +72,12 @@ class Reader(Cursor): execution_time: Any entries: Any def reset(self) -> None: ... - def search(self, attributes: Incomplete | None = ...): ... - def search_object(self, entry_dn: Incomplete | None = ..., attributes: Incomplete | None = ...): ... - def search_level(self, attributes: Incomplete | None = ...): ... - def search_subtree(self, attributes: Incomplete | None = ...): ... + def search(self, attributes: Incomplete | None = None): ... + def search_object(self, entry_dn: Incomplete | None = None, attributes: Incomplete | None = None): ... + def search_level(self, attributes: Incomplete | None = None): ... + def search_subtree(self, attributes: Incomplete | None = None): ... def search_paged( - self, paged_size, paged_criticality: bool = ..., generator: bool = ..., attributes: Incomplete | None = ... + self, paged_size, paged_criticality: bool = True, generator: bool = True, attributes: Incomplete | None = None ): ... class Writer(Cursor): @@ -87,24 +87,24 @@ class Writer(Cursor): @staticmethod def from_cursor( cursor, - connection: Incomplete | None = ..., - object_def: Incomplete | None = ..., - custom_validator: Incomplete | None = ..., + connection: Incomplete | None = None, + object_def: Incomplete | None = None, + custom_validator: Incomplete | None = None, ): ... @staticmethod - def from_response(connection, object_def, response: Incomplete | None = ...): ... + def from_response(connection, object_def, response: Incomplete | None = None): ... dereference_aliases: Any def __init__( self, connection, object_def, - get_operational_attributes: bool = ..., - attributes: Incomplete | None = ..., - controls: Incomplete | None = ..., - auxiliary_class: Incomplete | None = ..., + get_operational_attributes: bool = False, + attributes: Incomplete | None = None, + controls: Incomplete | None = None, + auxiliary_class: Incomplete | None = None, ) -> None: ... execution_time: Any - def commit(self, refresh: bool = ...): ... + def commit(self, refresh: bool = True): ... def discard(self) -> None: ... def new(self, dn): ... - def refresh_entry(self, entry, tries: int = ..., seconds: int = ...): ... + def refresh_entry(self, entry, tries: int = 4, seconds: int = 2): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/entry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/entry.pyi index ef5929cc6..ffc55feeb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/entry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/entry.pyi @@ -47,29 +47,29 @@ class EntryBase: def entry_read_time(self): ... def entry_to_json( self, - raw: bool = ..., - indent: int = ..., - sort: bool = ..., - stream: Incomplete | None = ..., - checked_attributes: bool = ..., - include_empty: bool = ..., + raw: bool = False, + indent: int = 4, + sort: bool = True, + stream: Incomplete | None = None, + checked_attributes: bool = True, + include_empty: bool = True, ): ... def entry_to_ldif( self, - all_base64: bool = ..., - line_separator: Incomplete | None = ..., - sort_order: Incomplete | None = ..., - stream: Incomplete | None = ..., + all_base64: bool = False, + line_separator: Incomplete | None = None, + sort_order: Incomplete | None = None, + stream: Incomplete | None = None, ): ... class Entry(EntryBase): def entry_writable( self, - object_def: Incomplete | None = ..., - writer_cursor: Incomplete | None = ..., - attributes: Incomplete | None = ..., - custom_validator: Incomplete | None = ..., - auxiliary_class: Incomplete | None = ..., + object_def: Incomplete | None = None, + writer_cursor: Incomplete | None = None, + attributes: Incomplete | None = None, + custom_validator: Incomplete | None = None, + auxiliary_class: Incomplete | None = None, ): ... class WritableEntry(EntryBase): @@ -78,10 +78,10 @@ class WritableEntry(EntryBase): def __getattr__(self, item: str): ... @property def entry_virtual_attributes(self): ... - def entry_commit_changes(self, refresh: bool = ..., controls: Incomplete | None = ..., clear_history: bool = ...): ... + def entry_commit_changes(self, refresh: bool = True, controls: Incomplete | None = None, clear_history: bool = True): ... def entry_discard_changes(self) -> None: ... def entry_delete(self) -> None: ... - def entry_refresh(self, tries: int = ..., seconds: int = ...): ... + def entry_refresh(self, tries: int = 4, seconds: int = 2): ... def entry_move(self, destination_dn) -> None: ... def entry_rename(self, new_name) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/objectDef.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/objectDef.pyi index f7a449cf8..8f3b42799 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/objectDef.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/abstract/objectDef.pyi @@ -3,10 +3,10 @@ from _typeshed import Incomplete class ObjectDef: def __init__( self, - object_class: Incomplete | None = ..., - schema: Incomplete | None = ..., - custom_validator: Incomplete | None = ..., - auxiliary_class: Incomplete | None = ..., + object_class: Incomplete | None = None, + schema: Incomplete | None = None, + custom_validator: Incomplete | None = None, + auxiliary_class: Incomplete | None = None, ) -> None: ... def __getitem__(self, item): ... def __getattr__(self, item: str): ... @@ -17,7 +17,7 @@ class ObjectDef: def __len__(self) -> int: ... def __bool__(self) -> bool: ... def __contains__(self, item): ... - def add_from_schema(self, attribute_name, mandatory: bool = ...) -> None: ... - def add_attribute(self, definition: Incomplete | None = ...) -> None: ... + def add_from_schema(self, attribute_name, mandatory: bool = False) -> None: ... + def add_attribute(self, definition: Incomplete | None = None) -> None: ... def remove_attribute(self, item) -> None: ... def clear_attributes(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/connection.pyi index 0e5b29c7a..2c9628d08 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/connection.pyi @@ -67,11 +67,11 @@ class Connection: def __init__( self, server: Server | str | _ServerSequence | ServerPool, - user: str | None = ..., - password: str | None = ..., - auto_bind: Literal["DEFAULT", "NONE", "NO_TLS", "TLS_BEFORE_BIND", "TLS_AFTER_BIND"] = ..., - version: int = ..., - authentication: Literal["ANONYMOUS", "SIMPLE", "SASL", "NTLM"] | None = ..., + user: str | None = None, + password: str | None = None, + auto_bind: Literal["DEFAULT", "NONE", "NO_TLS", "TLS_BEFORE_BIND", "TLS_AFTER_BIND"] = "DEFAULT", + version: int = 3, + authentication: Literal["ANONYMOUS", "SIMPLE", "SASL", "NTLM"] | None = None, client_strategy: Literal[ "SYNC", "SAFE_RESTARTABLE", @@ -83,30 +83,30 @@ class Connection: "MOCK_SYNC", "MOCK_ASYNC", "ASYNC_STREAM", - ] = ..., - auto_referrals: bool = ..., - auto_range: bool = ..., - sasl_mechanism: str | None = ..., - sasl_credentials: Incomplete | None = ..., - check_names: bool = ..., - collect_usage: bool = ..., - read_only: bool = ..., - lazy: bool = ..., - raise_exceptions: bool = ..., - pool_name: str | None = ..., - pool_size: int | None = ..., - pool_lifetime: int | None = ..., - cred_store: Incomplete | None = ..., - fast_decoder: bool = ..., - receive_timeout: Incomplete | None = ..., - return_empty_attributes: bool = ..., - use_referral_cache: bool = ..., - auto_escape: bool = ..., - auto_encode: bool = ..., - pool_keepalive: Incomplete | None = ..., - source_address: str | None = ..., - source_port: int | None = ..., - source_port_list: Incomplete | None = ..., + ] = "SYNC", + auto_referrals: bool = True, + auto_range: bool = True, + sasl_mechanism: str | None = None, + sasl_credentials: Incomplete | None = None, + check_names: bool = True, + collect_usage: bool = False, + read_only: bool = False, + lazy: bool = False, + raise_exceptions: bool = False, + pool_name: str | None = None, + pool_size: int | None = None, + pool_lifetime: int | None = None, + cred_store: Incomplete | None = None, + fast_decoder: bool = True, + receive_timeout: Incomplete | None = None, + return_empty_attributes: bool = True, + use_referral_cache: bool = False, + auto_escape: bool = True, + auto_encode: bool = True, + pool_keepalive: Incomplete | None = None, + source_address: str | None = None, + source_port: int | None = None, + source_port_list: Incomplete | None = None, ) -> None: ... def repr_with_sensitive_data_stripped(self): ... @property @@ -119,74 +119,79 @@ class Connection: def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> Literal[False] | None: ... - def bind(self, read_server_info: bool = ..., controls: Incomplete | None = ...): ... + def bind(self, read_server_info: bool = True, controls: Incomplete | None = None): ... def rebind( self, - user: Incomplete | None = ..., - password: Incomplete | None = ..., - authentication: Incomplete | None = ..., - sasl_mechanism: Incomplete | None = ..., - sasl_credentials: Incomplete | None = ..., - read_server_info: bool = ..., - controls: Incomplete | None = ..., + user: Incomplete | None = None, + password: Incomplete | None = None, + authentication: Incomplete | None = None, + sasl_mechanism: Incomplete | None = None, + sasl_credentials: Incomplete | None = None, + read_server_info: bool = True, + controls: Incomplete | None = None, ): ... - def unbind(self, controls: Incomplete | None = ...): ... + def unbind(self, controls: Incomplete | None = None): ... def search( self, search_base: str, search_filter: str, - search_scope: Literal["BASE", "LEVEL", "SUBTREE"] = ..., - dereference_aliases: Literal["NEVER", "SEARCH", "FINDING_BASE", "ALWAYS"] = ..., - attributes: Incomplete | None = ..., - size_limit: int = ..., - time_limit: int = ..., - types_only: bool = ..., - get_operational_attributes: bool = ..., - controls: Incomplete | None = ..., - paged_size: int | None = ..., - paged_criticality: bool = ..., - paged_cookie: str | bytes | None = ..., - auto_escape: bool | None = ..., + search_scope: Literal["BASE", "LEVEL", "SUBTREE"] = "SUBTREE", + dereference_aliases: Literal["NEVER", "SEARCH", "FINDING_BASE", "ALWAYS"] = "ALWAYS", + attributes: Incomplete | None = None, + size_limit: int = 0, + time_limit: int = 0, + types_only: bool = False, + get_operational_attributes: bool = False, + controls: Incomplete | None = None, + paged_size: int | None = None, + paged_criticality: bool = False, + paged_cookie: str | bytes | None = None, + auto_escape: bool | None = None, ): ... - def compare(self, dn, attribute, value, controls: Incomplete | None = ...): ... + def compare(self, dn, attribute, value, controls: Incomplete | None = None): ... def add( - self, dn, object_class: Incomplete | None = ..., attributes: Incomplete | None = ..., controls: Incomplete | None = ... + self, dn, object_class: Incomplete | None = None, attributes: Incomplete | None = None, controls: Incomplete | None = None ): ... - def delete(self, dn, controls: Incomplete | None = ...): ... - def modify(self, dn, changes, controls: Incomplete | None = ...): ... + def delete(self, dn, controls: Incomplete | None = None): ... + def modify(self, dn, changes, controls: Incomplete | None = None): ... def modify_dn( - self, dn, relative_dn, delete_old_dn: bool = ..., new_superior: Incomplete | None = ..., controls: Incomplete | None = ... + self, + dn, + relative_dn, + delete_old_dn: bool = True, + new_superior: Incomplete | None = None, + controls: Incomplete | None = None, ): ... - def abandon(self, message_id, controls: Incomplete | None = ...): ... + def abandon(self, message_id, controls: Incomplete | None = None): ... def extended( self, request_name, - request_value: Asn1Item | ReadableBuffer | None = ..., - controls: Incomplete | None = ..., - no_encode: bool | None = ..., + request_value: Asn1Item | ReadableBuffer | None = None, + controls: Incomplete | None = None, + no_encode: bool | None = None, ): ... - def start_tls(self, read_server_info: bool = ...): ... + def start_tls(self, read_server_info: bool = True): ... def do_sasl_bind(self, controls): ... def do_ntlm_bind(self, controls): ... def refresh_server_info(self) -> None: ... def response_to_ldif( self, - search_result: Incomplete | None = ..., - all_base64: bool = ..., - line_separator: Incomplete | None = ..., - sort_order: Incomplete | None = ..., - stream: Incomplete | None = ..., + search_result: Incomplete | None = None, + all_base64: bool = False, + line_separator: Incomplete | None = None, + sort_order: Incomplete | None = None, + stream: Incomplete | None = None, ): ... def response_to_json( self, - raw: bool = ..., - search_result: Incomplete | None = ..., - indent: int = ..., - sort: bool = ..., - stream: Incomplete | None = ..., - checked_attributes: bool = ..., - include_empty: bool = ..., + raw: bool = False, + search_result: Incomplete | None = None, + indent: int = 4, + sort: bool = True, + stream: Incomplete | None = None, + checked_attributes: bool = True, + include_empty: bool = True, ): ... - def response_to_file(self, target, raw: bool = ..., indent: int = ..., sort: bool = ...) -> None: ... + def response_to_file(self, target, raw: bool = False, indent: int = 4, sort: bool = True) -> None: ... @property def entries(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/exceptions.pyi index 7da6a70af..4fe7cfc30 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/exceptions.pyi @@ -8,12 +8,12 @@ class LDAPException(Exception): ... class LDAPOperationResult(LDAPException): def __new__( cls, - result: Incomplete | None = ..., - description: Incomplete | None = ..., - dn: Incomplete | None = ..., - message: Incomplete | None = ..., - response_type: Incomplete | None = ..., - response: Incomplete | None = ..., + result: Incomplete | None = None, + description: Incomplete | None = None, + dn: Incomplete | None = None, + message: Incomplete | None = None, + response_type: Incomplete | None = None, + response: Incomplete | None = None, ) -> Self: ... result: Any description: Any @@ -23,12 +23,12 @@ class LDAPOperationResult(LDAPException): response: Any def __init__( self, - result: Incomplete | None = ..., - description: Incomplete | None = ..., - dn: Incomplete | None = ..., - message: Incomplete | None = ..., - response_type: Incomplete | None = ..., - response: Incomplete | None = ..., + result: Incomplete | None = None, + description: Incomplete | None = None, + dn: Incomplete | None = None, + message: Incomplete | None = None, + response_type: Incomplete | None = None, + response: Incomplete | None = None, ) -> None: ... class LDAPOperationsErrorResult(LDAPOperationResult): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/pooling.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/pooling.pyi index e468fa9c4..d178b0e7c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/pooling.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/pooling.pyi @@ -32,11 +32,11 @@ class ServerPool: strategy: Any def __init__( self, - servers: Incomplete | None = ..., - pool_strategy=..., - active: bool = ..., - exhaust: bool = ..., - single_state: bool = ..., + servers: Incomplete | None = None, + pool_strategy="ROUND_ROBIN", + active: bool = True, + exhaust: bool = False, + single_state: bool = True, ) -> None: ... def __len__(self) -> int: ... def __getitem__(self, item): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/rdns.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/rdns.pyi index e712f803b..32123eff5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/rdns.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/rdns.pyi @@ -8,5 +8,5 @@ class ReverseDnsSetting: OPTIONAL_RESOLVE_IP_ADDRESSES_ONLY: Any SUPPORTED_VALUES: Any -def get_hostname_by_addr(addr, success_required: bool = ...): ... +def get_hostname_by_addr(addr, success_required: bool = True): ... def is_ip_addr(addr): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/server.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/server.pyi index 870ddbab9..cf109594f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/server.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/server.pyi @@ -22,15 +22,15 @@ class Server: def __init__( self, host: str, - port: int | None = ..., - use_ssl: bool = ..., - allowed_referral_hosts: Incomplete | None = ..., - get_info: Literal["NO_INFO", "DSA", "SCHEMA", "ALL"] = ..., - tls: Incomplete | None = ..., - formatter: Incomplete | None = ..., - connect_timeout: Incomplete | None = ..., - mode: Literal["IP_SYSTEM_DEFAULT", "IP_V4_ONLY", "IP_V6_ONLY", "IP_V4_PREFERRED", "IP_V6_PREFERRED"] = ..., - validator: Incomplete | None = ..., + port: int | None = None, + use_ssl: bool = False, + allowed_referral_hosts: Incomplete | None = None, + get_info: Literal["NO_INFO", "DSA", "SCHEMA", "ALL"] = "SCHEMA", + tls: Incomplete | None = None, + formatter: Incomplete | None = None, + connect_timeout: Incomplete | None = None, + mode: Literal["IP_SYSTEM_DEFAULT", "IP_V4_ONLY", "IP_V6_ONLY", "IP_V4_PREFERRED", "IP_V6_PREFERRED"] = "IP_V6_PREFERRED", + validator: Incomplete | None = None, ) -> None: ... @property def address_info(self): ... @@ -38,15 +38,15 @@ class Server: def reset_availability(self) -> None: ... def check_availability( self, - source_address: Incomplete | None = ..., - source_port: Incomplete | None = ..., - source_port_list: Incomplete | None = ..., + source_address: Incomplete | None = None, + source_port: Incomplete | None = None, + source_port_list: Incomplete | None = None, ): ... @staticmethod def next_message_id(): ... def get_info_from_server(self, connection) -> None: ... - def attach_dsa_info(self, dsa_info: Incomplete | None = ...) -> None: ... - def attach_schema_info(self, dsa_schema: Incomplete | None = ...) -> None: ... + def attach_dsa_info(self, dsa_info: Incomplete | None = None) -> None: ... + def attach_schema_info(self, dsa_schema: Incomplete | None = None) -> None: ... @property def info(self): ... @property @@ -56,10 +56,10 @@ class Server: host, dsa_info, dsa_schema, - port: Incomplete | None = ..., - use_ssl: bool = ..., - formatter: Incomplete | None = ..., - validator: Incomplete | None = ..., + port: Incomplete | None = None, + use_ssl: bool = False, + formatter: Incomplete | None = None, + validator: Incomplete | None = None, ): ... def candidate_addresses(self): ... def has_control(self, control): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/tls.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/tls.pyi index 240c93b24..11184b4fc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/tls.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/tls.pyi @@ -18,20 +18,20 @@ class Tls: sni: Any def __init__( self, - local_private_key_file: Incomplete | None = ..., - local_certificate_file: Incomplete | None = ..., + local_private_key_file: Incomplete | None = None, + local_certificate_file: Incomplete | None = None, validate=..., - version: Incomplete | None = ..., - ssl_options: Incomplete | None = ..., - ca_certs_file: Incomplete | None = ..., - valid_names: Incomplete | None = ..., - ca_certs_path: Incomplete | None = ..., - ca_certs_data: Incomplete | None = ..., - local_private_key_password: Incomplete | None = ..., - ciphers: Incomplete | None = ..., - sni: Incomplete | None = ..., + version: Incomplete | None = None, + ssl_options: Incomplete | None = None, + ca_certs_file: Incomplete | None = None, + valid_names: Incomplete | None = None, + ca_certs_path: Incomplete | None = None, + ca_certs_data: Incomplete | None = None, + local_private_key_password: Incomplete | None = None, + ciphers: Incomplete | None = None, + sni: Incomplete | None = None, ) -> None: ... - def wrap_socket(self, connection, do_handshake: bool = ...) -> None: ... + def wrap_socket(self, connection, do_handshake: bool = False) -> None: ... def start_tls(self, connection): ... def check_hostname(sock, server_name, additional_names) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/usage.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/usage.pyi index ccb805bbd..ff60063b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/usage.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/core/usage.pyi @@ -35,7 +35,7 @@ class ConnectionUsage: def __iadd__(self, other): ... def update_transmitted_message(self, message, length) -> None: ... def update_received_message(self, length) -> None: ... - def start(self, reset: bool = ...) -> None: ... + def start(self, reset: bool = True) -> None: ... def stop(self) -> None: ... @property def elapsed_time(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/__init__.pyi index e87b55ee9..72ae2d21a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/__init__.pyi @@ -5,98 +5,103 @@ class ExtendedOperationContainer: def __init__(self, connection) -> None: ... class StandardExtendedOperations(ExtendedOperationContainer): - def who_am_i(self, controls: Incomplete | None = ...): ... + def who_am_i(self, controls: Incomplete | None = None): ... def modify_password( self, - user: Incomplete | None = ..., - old_password: Incomplete | None = ..., - new_password: Incomplete | None = ..., - hash_algorithm: Incomplete | None = ..., - salt: Incomplete | None = ..., - controls: Incomplete | None = ..., + user: Incomplete | None = None, + old_password: Incomplete | None = None, + new_password: Incomplete | None = None, + hash_algorithm: Incomplete | None = None, + salt: Incomplete | None = None, + controls: Incomplete | None = None, ): ... def paged_search( self, search_base, search_filter, - search_scope=..., - dereference_aliases=..., - attributes: Incomplete | None = ..., - size_limit: int = ..., - time_limit: int = ..., - types_only: bool = ..., - get_operational_attributes: bool = ..., - controls: Incomplete | None = ..., - paged_size: int = ..., - paged_criticality: bool = ..., - generator: bool = ..., + search_scope="SUBTREE", + dereference_aliases="ALWAYS", + attributes: Incomplete | None = None, + size_limit: int = 0, + time_limit: int = 0, + types_only: bool = False, + get_operational_attributes: bool = False, + controls: Incomplete | None = None, + paged_size: int = 100, + paged_criticality: bool = False, + generator: bool = True, ): ... def persistent_search( self, - search_base: str = ..., - search_filter: str = ..., - search_scope=..., - dereference_aliases=..., - attributes=..., - size_limit: int = ..., - time_limit: int = ..., - controls: Incomplete | None = ..., - changes_only: bool = ..., - show_additions: bool = ..., - show_deletions: bool = ..., - show_modifications: bool = ..., - show_dn_modifications: bool = ..., - notifications: bool = ..., - streaming: bool = ..., - callback: Incomplete | None = ..., + search_base: str = "", + search_filter: str = "(objectclass=*)", + search_scope="SUBTREE", + dereference_aliases="NEVER", + attributes="*", + size_limit: int = 0, + time_limit: int = 0, + controls: Incomplete | None = None, + changes_only: bool = True, + show_additions: bool = True, + show_deletions: bool = True, + show_modifications: bool = True, + show_dn_modifications: bool = True, + notifications: bool = True, + streaming: bool = True, + callback: Incomplete | None = None, ): ... def funnel_search( self, - search_base: str = ..., - search_filter: str = ..., - search_scope=..., - dereference_aliases=..., - attributes=..., - size_limit: int = ..., - time_limit: int = ..., - controls: Incomplete | None = ..., - streaming: bool = ..., - callback: Incomplete | None = ..., + search_base: str = "", + search_filter: str = "", + search_scope="SUBTREE", + dereference_aliases="NEVER", + attributes="*", + size_limit: int = 0, + time_limit: int = 0, + controls: Incomplete | None = None, + streaming: bool = False, + callback: Incomplete | None = None, ): ... class NovellExtendedOperations(ExtendedOperationContainer): - def get_bind_dn(self, controls: Incomplete | None = ...): ... - def get_universal_password(self, user, controls: Incomplete | None = ...): ... - def set_universal_password(self, user, new_password: Incomplete | None = ..., controls: Incomplete | None = ...): ... - def list_replicas(self, server_dn, controls: Incomplete | None = ...): ... - def partition_entry_count(self, partition_dn, controls: Incomplete | None = ...): ... - def replica_info(self, server_dn, partition_dn, controls: Incomplete | None = ...): ... - def start_transaction(self, controls: Incomplete | None = ...): ... - def end_transaction(self, commit: bool = ..., controls: Incomplete | None = ...): ... - def add_members_to_groups(self, members, groups, fix: bool = ..., transaction: bool = ...): ... - def remove_members_from_groups(self, members, groups, fix: bool = ..., transaction: bool = ...): ... - def check_groups_memberships(self, members, groups, fix: bool = ..., transaction: bool = ...): ... + def get_bind_dn(self, controls: Incomplete | None = None): ... + def get_universal_password(self, user, controls: Incomplete | None = None): ... + def set_universal_password(self, user, new_password: Incomplete | None = None, controls: Incomplete | None = None): ... + def list_replicas(self, server_dn, controls: Incomplete | None = None): ... + def partition_entry_count(self, partition_dn, controls: Incomplete | None = None): ... + def replica_info(self, server_dn, partition_dn, controls: Incomplete | None = None): ... + def start_transaction(self, controls: Incomplete | None = None): ... + def end_transaction(self, commit: bool = True, controls: Incomplete | None = None): ... + def add_members_to_groups(self, members, groups, fix: bool = True, transaction: bool = True): ... + def remove_members_from_groups(self, members, groups, fix: bool = True, transaction: bool = True): ... + def check_groups_memberships(self, members, groups, fix: bool = False, transaction: bool = True): ... class MicrosoftExtendedOperations(ExtendedOperationContainer): def dir_sync( self, sync_base, - sync_filter: str = ..., - attributes=..., - cookie: Incomplete | None = ..., - object_security: bool = ..., - ancestors_first: bool = ..., - public_data_only: bool = ..., - incremental_values: bool = ..., - max_length: int = ..., - hex_guid: bool = ..., + sync_filter: str = "(objectclass=*)", + attributes="*", + cookie: Incomplete | None = None, + object_security: bool = False, + ancestors_first: bool = True, + public_data_only: bool = False, + incremental_values: bool = True, + max_length: int = 2147483647, + hex_guid: bool = False, ): ... - def modify_password(self, user, new_password, old_password: Incomplete | None = ..., controls: Incomplete | None = ...): ... + def modify_password(self, user, new_password, old_password: Incomplete | None = None, controls: Incomplete | None = None): ... def unlock_account(self, user): ... - def add_members_to_groups(self, members, groups, fix: bool = ...): ... - def remove_members_from_groups(self, members, groups, fix: bool = ...): ... + def add_members_to_groups(self, members, groups, fix: bool = True): ... + def remove_members_from_groups(self, members, groups, fix: bool = True): ... def persistent_search( - self, search_base: str = ..., search_scope=..., attributes=..., streaming: bool = ..., callback: Incomplete | None = ... + self, + search_base: str = "", + search_scope="SUBTREE", + attributes="*", + streaming: bool = True, + callback: Incomplete | None = None, ): ... class ExtendedOperationsRoot(ExtendedOperationContainer): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/addMembersToGroups.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/addMembersToGroups.pyi index 486d084f9..39195431a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/addMembersToGroups.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/addMembersToGroups.pyi @@ -1 +1 @@ -def ad_add_members_to_groups(connection, members_dn, groups_dn, fix: bool = ..., raise_error: bool = ...): ... +def ad_add_members_to_groups(connection, members_dn, groups_dn, fix: bool = True, raise_error: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/modifyPassword.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/modifyPassword.pyi index 454a1bd7e..598d74963 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/modifyPassword.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/modifyPassword.pyi @@ -1,3 +1,3 @@ from _typeshed import Incomplete -def ad_modify_password(connection, user_dn, new_password, old_password, controls: Incomplete | None = ...): ... +def ad_modify_password(connection, user_dn, new_password, old_password, controls: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/persistentSearch.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/persistentSearch.pyi index 18c01eb54..64164d437 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/persistentSearch.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/persistentSearch.pyi @@ -11,6 +11,6 @@ class ADPersistentSearch: filter: str def __init__(self, connection, search_base, search_scope, attributes, streaming, callback) -> None: ... def start(self) -> None: ... - def stop(self, unbind: bool = ...) -> None: ... - def next(self, block: bool = ..., timeout: Incomplete | None = ...): ... - def funnel(self, block: bool = ..., timeout: Incomplete | None = ...) -> None: ... + def stop(self, unbind: bool = True) -> None: ... + def next(self, block: bool = False, timeout: Incomplete | None = None): ... + def funnel(self, block: bool = False, timeout: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/removeMembersFromGroups.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/removeMembersFromGroups.pyi index 915fb9dbb..33fce56a8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/removeMembersFromGroups.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/removeMembersFromGroups.pyi @@ -1 +1 @@ -def ad_remove_members_from_groups(connection, members_dn, groups_dn, fix, raise_error: bool = ...): ... +def ad_remove_members_from_groups(connection, members_dn, groups_dn, fix, raise_error: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/unlockAccount.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/unlockAccount.pyi index 8dd6f01e5..b43e43e79 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/unlockAccount.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/microsoft/unlockAccount.pyi @@ -1,3 +1,3 @@ from _typeshed import Incomplete -def ad_unlock_account(connection, user_dn, controls: Incomplete | None = ...): ... +def ad_unlock_account(connection, user_dn, controls: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/endTransaction.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/endTransaction.pyi index d0b07c285..d54945837 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/endTransaction.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/endTransaction.pyi @@ -9,7 +9,7 @@ class EndTransaction(ExtendedOperation): request_value: EndGroupTypeRequestValue asn1_spec: EndGroupTypeResponseValue def config(self) -> None: ... - def __init__(self, connection, commit: bool = ..., controls: Incomplete | None = ...) -> None: ... + def __init__(self, connection, commit: bool = True, controls: Incomplete | None = None) -> None: ... def populate_result(self) -> None: ... response_value: Incomplete def set_response(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/listReplicas.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/listReplicas.pyi index ec94538a1..ce21c7f5c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/listReplicas.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/listReplicas.pyi @@ -11,5 +11,5 @@ class ListReplicas(ExtendedOperation): asn1_spec: ReplicaList response_attribute: str def config(self) -> None: ... - def __init__(self, connection, server_dn, controls: Incomplete | None = ...) -> None: ... + def __init__(self, connection, server_dn, controls: Incomplete | None = None) -> None: ... def populate_result(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/nmasGetUniversalPassword.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/nmasGetUniversalPassword.pyi index bc467cd51..120978753 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/nmasGetUniversalPassword.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/nmasGetUniversalPassword.pyi @@ -10,5 +10,5 @@ class NmasGetUniversalPassword(ExtendedOperation): asn1_spec: NmasGetUniversalPasswordResponseValue response_attribute: str def config(self) -> None: ... - def __init__(self, connection, user, controls: Incomplete | None = ...) -> None: ... + def __init__(self, connection, user, controls: Incomplete | None = None) -> None: ... def populate_result(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/nmasSetUniversalPassword.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/nmasSetUniversalPassword.pyi index de23d84d4..f62ae3c0b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/nmasSetUniversalPassword.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/nmasSetUniversalPassword.pyi @@ -10,5 +10,5 @@ class NmasSetUniversalPassword(ExtendedOperation): asn1_spec: NmasSetUniversalPasswordResponseValue response_attribute: str def config(self) -> None: ... - def __init__(self, connection, user, new_password, controls: Incomplete | None = ...) -> None: ... + def __init__(self, connection, user, new_password, controls: Incomplete | None = None) -> None: ... def populate_result(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/partition_entry_count.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/partition_entry_count.pyi index cd2e1c077..e9ac95352 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/partition_entry_count.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/partition_entry_count.pyi @@ -9,5 +9,5 @@ class PartitionEntryCount(ExtendedOperation): request_value: LDAPDN response_attribute: str def config(self) -> None: ... - def __init__(self, connection, partition_dn, controls: Incomplete | None = ...) -> None: ... + def __init__(self, connection, partition_dn, controls: Incomplete | None = None) -> None: ... def populate_result(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/replicaInfo.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/replicaInfo.pyi index a9405d21d..e690c60a9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/replicaInfo.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/replicaInfo.pyi @@ -9,5 +9,5 @@ class ReplicaInfo(ExtendedOperation): request_value: ReplicaInfoRequestValue response_attribute: str def config(self) -> None: ... - def __init__(self, connection, server_dn, partition_dn, controls: Incomplete | None = ...) -> None: ... + def __init__(self, connection, server_dn, partition_dn, controls: Incomplete | None = None) -> None: ... def populate_result(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/startTransaction.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/startTransaction.pyi index e013b81a2..3fa7312a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/startTransaction.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/novell/startTransaction.pyi @@ -9,7 +9,7 @@ class StartTransaction(ExtendedOperation): request_value: CreateGroupTypeRequestValue asn1_spec: CreateGroupTypeResponseValue def config(self) -> None: ... - def __init__(self, connection, controls: Incomplete | None = ...) -> None: ... + def __init__(self, connection, controls: Incomplete | None = None) -> None: ... def populate_result(self) -> None: ... response_value: Incomplete def set_response(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/operation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/operation.pyi index e07b81421..878cdfa36 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/operation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/operation.pyi @@ -13,9 +13,9 @@ class ExtendedOperation: response_value: Incomplete | None response_attribute: Incomplete | None controls: Incomplete - def __init__(self, connection, controls: Incomplete | None = ...) -> None: ... + def __init__(self, connection, controls: Incomplete | None = None) -> None: ... def send(self): ... def populate_result(self) -> None: ... - def decode_response(self, response: Incomplete | None = ...) -> None: ... + def decode_response(self, response: Incomplete | None = None) -> None: ... def set_response(self) -> None: ... def config(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/PagedSearch.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/PagedSearch.pyi index bf75db7e9..22d0a22f4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/PagedSearch.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/PagedSearch.pyi @@ -4,29 +4,29 @@ def paged_search_generator( connection, search_base, search_filter, - search_scope=..., - dereference_aliases=..., - attributes: Incomplete | None = ..., - size_limit: int = ..., - time_limit: int = ..., - types_only: bool = ..., - get_operational_attributes: bool = ..., - controls: Incomplete | None = ..., - paged_size: int = ..., - paged_criticality: bool = ..., + search_scope="SUBTREE", + dereference_aliases="ALWAYS", + attributes: Incomplete | None = None, + size_limit: int = 0, + time_limit: int = 0, + types_only: bool = False, + get_operational_attributes: bool = False, + controls: Incomplete | None = None, + paged_size: int = 100, + paged_criticality: bool = False, ) -> None: ... def paged_search_accumulator( connection, search_base, search_filter, - search_scope=..., - dereference_aliases=..., - attributes: Incomplete | None = ..., - size_limit: int = ..., - time_limit: int = ..., - types_only: bool = ..., - get_operational_attributes: bool = ..., - controls: Incomplete | None = ..., - paged_size: int = ..., - paged_criticality: bool = ..., + search_scope="SUBTREE", + dereference_aliases="ALWAYS", + attributes: Incomplete | None = None, + size_limit: int = 0, + time_limit: int = 0, + types_only: bool = False, + get_operational_attributes: bool = False, + controls: Incomplete | None = None, + paged_size: int = 100, + paged_criticality: bool = False, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/PersistentSearch.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/PersistentSearch.pyi index bc3c9c087..0b85f988d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/PersistentSearch.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/PersistentSearch.pyi @@ -32,6 +32,6 @@ class PersistentSearch: callback, ) -> None: ... def start(self) -> None: ... - def stop(self, unbind: bool = ...) -> None: ... - def next(self, block: bool = ..., timeout: Incomplete | None = ...): ... - def funnel(self, block: bool = ..., timeout: Incomplete | None = ...) -> None: ... + def stop(self, unbind: bool = True) -> None: ... + def next(self, block: bool = False, timeout: Incomplete | None = None): ... + def funnel(self, block: bool = False, timeout: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/modifyPassword.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/modifyPassword.pyi index 37698dcee..b609123ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/modifyPassword.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/extend/standard/modifyPassword.pyi @@ -12,11 +12,11 @@ class ModifyPassword(ExtendedOperation): def __init__( self, connection, - user: Incomplete | None = ..., - old_password: Incomplete | None = ..., - new_password: Incomplete | None = ..., - hash_algorithm: Incomplete | None = ..., - salt: Incomplete | None = ..., - controls: Incomplete | None = ..., + user: Incomplete | None = None, + old_password: Incomplete | None = None, + new_password: Incomplete | None = None, + hash_algorithm: Incomplete | None = None, + salt: Incomplete | None = None, + controls: Incomplete | None = None, ) -> None: ... def populate_result(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/add.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/add.pyi index 956aa7446..2d10f9e12 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/add.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/add.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete def add_operation( - dn, attributes, auto_encode, schema: Incomplete | None = ..., validator: Incomplete | None = ..., check_names: bool = ... + dn, attributes, auto_encode, schema: Incomplete | None = None, validator: Incomplete | None = None, check_names: bool = False ): ... def add_request_to_dict(request): ... def add_response_to_dict(response): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/bind.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/bind.pyi index d6572b7f1..3c2473d9e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/bind.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/bind.pyi @@ -3,19 +3,19 @@ from _typeshed import Incomplete def bind_operation( version, authentication, - name: str = ..., - password: Incomplete | None = ..., - sasl_mechanism: Incomplete | None = ..., - sasl_credentials: Incomplete | None = ..., - auto_encode: bool = ..., + name: str = "", + password: Incomplete | None = None, + sasl_mechanism: Incomplete | None = None, + sasl_credentials: Incomplete | None = None, + auto_encode: bool = False, ): ... def bind_request_to_dict(request): ... def bind_response_operation( result_code, - matched_dn: str = ..., - diagnostic_message: str = ..., - referral: Incomplete | None = ..., - server_sasl_credentials: Incomplete | None = ..., + matched_dn: str = "", + diagnostic_message: str = "", + referral: Incomplete | None = None, + server_sasl_credentials: Incomplete | None = None, ): ... def bind_response_to_dict(response): ... def sicily_bind_response_to_dict(response): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/compare.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/compare.pyi index 16003f1c7..88d507c4c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/compare.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/compare.pyi @@ -5,9 +5,9 @@ def compare_operation( attribute, value, auto_encode, - schema: Incomplete | None = ..., - validator: Incomplete | None = ..., - check_names: bool = ..., + schema: Incomplete | None = None, + validator: Incomplete | None = None, + check_names: bool = False, ): ... def compare_request_to_dict(request): ... def compare_response_to_dict(response): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/extended.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/extended.pyi index 470849ed2..e519cf999 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/extended.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/extended.pyi @@ -5,7 +5,7 @@ from pyasn1.type.base import Asn1Item from ..protocol.rfc4511 import ExtendedRequest def extended_operation( - request_name, request_value: Asn1Item | ReadableBuffer | None = ..., no_encode: bool | None = ... + request_name, request_value: Asn1Item | ReadableBuffer | None = None, no_encode: bool | None = None ) -> ExtendedRequest: ... def extended_request_to_dict(request): ... def extended_response_to_dict(response): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/modify.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/modify.pyi index 5094e52d8..971f323f2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/modify.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/modify.pyi @@ -4,7 +4,7 @@ from typing import Any change_table: Any def modify_operation( - dn, changes, auto_encode, schema: Incomplete | None = ..., validator: Incomplete | None = ..., check_names: bool = ... + dn, changes, auto_encode, schema: Incomplete | None = None, validator: Incomplete | None = None, check_names: bool = False ): ... def modify_request_to_dict(request): ... def modify_response_to_dict(response): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/modifyDn.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/modifyDn.pyi index acf50577a..dcd409b7e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/modifyDn.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/modifyDn.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete -def modify_dn_operation(dn, new_relative_dn, delete_old_rdn: bool = ..., new_superior: Incomplete | None = ...): ... +def modify_dn_operation(dn, new_relative_dn, delete_old_rdn: bool = True, new_superior: Incomplete | None = None): ... def modify_dn_request_to_dict(request): ... def modify_dn_response_to_dict(response): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/search.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/search.pyi index 166e31dbd..19df68da5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/search.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/operation/search.pyi @@ -22,9 +22,9 @@ class FilterNode: parent: Any assertion: Any elements: Any - def __init__(self, tag: Incomplete | None = ..., assertion: Incomplete | None = ...) -> None: ... - def __str__(self, pos: int = ...) -> str: ... - def __repr__(self, pos: int = ...) -> str: ... + def __init__(self, tag: Incomplete | None = None, assertion: Incomplete | None = None) -> None: ... + def __str__(self, pos: int = 0) -> str: ... + def __repr__(self, pos: int = 0) -> str: ... def append(self, filter_node): ... def evaluate_match(match, schema, auto_escape, auto_encode, validator, check_names): ... @@ -42,9 +42,9 @@ def search_operation( types_only, auto_escape, auto_encode, - schema: Incomplete | None = ..., - validator: Incomplete | None = ..., - check_names: bool = ..., + schema: Incomplete | None = None, + validator: Incomplete | None = None, + check_names: bool = False, ): ... def decode_vals(vals): ... def decode_vals_fast(vals): ... @@ -54,9 +54,9 @@ def decode_raw_vals(vals): ... def decode_raw_vals_fast(vals): ... def raw_attributes_to_dict(attribute_list): ... def raw_attributes_to_dict_fast(attribute_list): ... -def checked_attributes_to_dict(attribute_list, schema: Incomplete | None = ..., custom_formatter: Incomplete | None = ...): ... +def checked_attributes_to_dict(attribute_list, schema: Incomplete | None = None, custom_formatter: Incomplete | None = None): ... def checked_attributes_to_dict_fast( - attribute_list, schema: Incomplete | None = ..., custom_formatter: Incomplete | None = ... + attribute_list, schema: Incomplete | None = None, custom_formatter: Incomplete | None = None ): ... def matching_rule_assertion_to_string(matching_rule_assertion): ... def filter_to_string(filter_object): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/controls.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/controls.pyi index 7c67b9f3c..589001327 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/controls.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/controls.pyi @@ -1 +1 @@ -def build_control(oid, criticality, value, encode_control_value: bool = ...): ... +def build_control(oid, criticality, value, encode_control_value: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/convert.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/convert.pyi index f57fce20c..e85da5f58 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/convert.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/convert.pyi @@ -17,6 +17,8 @@ def substring_to_dict(substring): ... def prepare_changes_for_request(changes): ... def build_controls_list(controls): ... def validate_assertion_value(schema, name, value, auto_escape, auto_encode, validator, check_names): ... -def validate_attribute_value(schema, name, value, auto_encode, validator: Incomplete | None = ..., check_names: bool = ...): ... +def validate_attribute_value( + schema, name, value, auto_encode, validator: Incomplete | None = None, check_names: bool = False +): ... def prepare_filter_for_sending(raw_string): ... def prepare_for_sending(raw_string): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/microsoft.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/microsoft.pyi index c2961a7d5..ac18a70ff 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/microsoft.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/microsoft.pyi @@ -19,7 +19,7 @@ class ExtendedDN(Sequence): componentType: NamedTypes def dir_sync_control(criticality, object_security, ancestors_first, public_data_only, incremental_values, max_length, cookie): ... -def extended_dn_control(criticality: bool = ..., hex_format: bool = ...): ... -def show_deleted_control(criticality: bool = ...): ... -def security_descriptor_control(criticality: bool = ..., sdflags: int = ...): ... -def persistent_search_control(criticality: bool = ...): ... +def extended_dn_control(criticality: bool = False, hex_format: bool = False): ... +def show_deleted_control(criticality: bool = False): ... +def security_descriptor_control(criticality: bool = False, sdflags: int = 15): ... +def persistent_search_control(criticality: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/persistentSearch.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/persistentSearch.pyi index c584d4070..199e6c4c7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/persistentSearch.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/persistentSearch.pyi @@ -11,4 +11,4 @@ class ChangeType(Enumerated): class EntryChangeNotificationControl(Sequence): componentType: NamedTypes -def persistent_search_control(change_types, changes_only: bool = ..., return_ecs: bool = ..., criticality: bool = ...): ... +def persistent_search_control(change_types, changes_only: bool = True, return_ecs: bool = True, criticality: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc2696.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc2696.pyi index 28159c273..86d70346b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc2696.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc2696.pyi @@ -17,4 +17,4 @@ class Cookie(OctetString): ... class RealSearchControlValue(Sequence): componentType: NamedTypes -def paged_search_control(criticality: bool = ..., size: int = ..., cookie: Incomplete | None = ...): ... +def paged_search_control(criticality: bool = False, size: int = 10, cookie: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc2849.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc2849.pyi index 4859b42a7..6bfed49cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc2849.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc2849.pyi @@ -7,12 +7,12 @@ def safe_ldif_string(bytes_value): ... def add_controls(controls, all_base64): ... def add_attributes(attributes, all_base64): ... def sort_ldif_lines(lines, sort_order): ... -def search_response_to_ldif(entries, all_base64, sort_order: Incomplete | None = ...): ... -def add_request_to_ldif(entry, all_base64, sort_order: Incomplete | None = ...): ... -def delete_request_to_ldif(entry, all_base64, sort_order: Incomplete | None = ...): ... -def modify_request_to_ldif(entry, all_base64, sort_order: Incomplete | None = ...): ... -def modify_dn_request_to_ldif(entry, all_base64, sort_order: Incomplete | None = ...): ... -def operation_to_ldif(operation_type, entries, all_base64: bool = ..., sort_order: Incomplete | None = ...): ... +def search_response_to_ldif(entries, all_base64, sort_order: Incomplete | None = None): ... +def add_request_to_ldif(entry, all_base64, sort_order: Incomplete | None = None): ... +def delete_request_to_ldif(entry, all_base64, sort_order: Incomplete | None = None): ... +def modify_request_to_ldif(entry, all_base64, sort_order: Incomplete | None = None): ... +def modify_dn_request_to_ldif(entry, all_base64, sort_order: Incomplete | None = None): ... +def operation_to_ldif(operation_type, entries, all_base64: bool = False, sort_order: Incomplete | None = None): ... def add_ldif_header(ldif_lines): ... def ldif_sort(line, sort_order): ... def decode_persistent_search_control(change): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc4512.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc4512.pyi index c47cdfc1b..6f5868200 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc4512.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc4512.pyi @@ -13,11 +13,11 @@ class BaseServerInfo: raw: Any def __init__(self, raw_attributes) -> None: ... @classmethod - def from_json(cls, json_definition, schema: Incomplete | None = ..., custom_formatter: Incomplete | None = ...): ... + def from_json(cls, json_definition, schema: Incomplete | None = None, custom_formatter: Incomplete | None = None): ... @classmethod - def from_file(cls, target, schema: Incomplete | None = ..., custom_formatter: Incomplete | None = ...): ... - def to_file(self, target, indent: int = ..., sort: bool = ...) -> None: ... - def to_json(self, indent: int = ..., sort: bool = ...): ... + def from_file(cls, target, schema: Incomplete | None = None, custom_formatter: Incomplete | None = None): ... + def to_file(self, target, indent: int = 4, sort: bool = True) -> None: ... + def to_json(self, indent: int = 4, sort: bool = True): ... class DsaInfo(BaseServerInfo): alt_servers: Any @@ -59,13 +59,13 @@ class BaseObjectInfo: raw_definition: Any def __init__( self, - oid: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - obsolete: bool = ..., - extensions: Incomplete | None = ..., - experimental: Incomplete | None = ..., - definition: Incomplete | None = ..., + oid: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + obsolete: bool = False, + extensions: Incomplete | None = None, + experimental: Incomplete | None = None, + definition: Incomplete | None = None, ) -> None: ... @property def oid_info(self): ... @@ -76,28 +76,28 @@ class MatchingRuleInfo(BaseObjectInfo): syntax: Any def __init__( self, - oid: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - obsolete: bool = ..., - syntax: Incomplete | None = ..., - extensions: Incomplete | None = ..., - experimental: Incomplete | None = ..., - definition: Incomplete | None = ..., + oid: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + obsolete: bool = False, + syntax: Incomplete | None = None, + extensions: Incomplete | None = None, + experimental: Incomplete | None = None, + definition: Incomplete | None = None, ) -> None: ... class MatchingRuleUseInfo(BaseObjectInfo): apply_to: Any def __init__( self, - oid: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - obsolete: bool = ..., - apply_to: Incomplete | None = ..., - extensions: Incomplete | None = ..., - experimental: Incomplete | None = ..., - definition: Incomplete | None = ..., + oid: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + obsolete: bool = False, + apply_to: Incomplete | None = None, + extensions: Incomplete | None = None, + experimental: Incomplete | None = None, + definition: Incomplete | None = None, ) -> None: ... class ObjectClassInfo(BaseObjectInfo): @@ -107,17 +107,17 @@ class ObjectClassInfo(BaseObjectInfo): may_contain: Any def __init__( self, - oid: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - obsolete: bool = ..., - superior: Incomplete | None = ..., - kind: Incomplete | None = ..., - must_contain: Incomplete | None = ..., - may_contain: Incomplete | None = ..., - extensions: Incomplete | None = ..., - experimental: Incomplete | None = ..., - definition: Incomplete | None = ..., + oid: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + obsolete: bool = False, + superior: Incomplete | None = None, + kind: Incomplete | None = None, + must_contain: Incomplete | None = None, + may_contain: Incomplete | None = None, + extensions: Incomplete | None = None, + experimental: Incomplete | None = None, + definition: Incomplete | None = None, ) -> None: ... class AttributeTypeInfo(BaseObjectInfo): @@ -135,33 +135,33 @@ class AttributeTypeInfo(BaseObjectInfo): optional_in: Any def __init__( self, - oid: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - obsolete: bool = ..., - superior: Incomplete | None = ..., - equality: Incomplete | None = ..., - ordering: Incomplete | None = ..., - substring: Incomplete | None = ..., - syntax: Incomplete | None = ..., - min_length: Incomplete | None = ..., - single_value: bool = ..., - collective: bool = ..., - no_user_modification: bool = ..., - usage: Incomplete | None = ..., - extensions: Incomplete | None = ..., - experimental: Incomplete | None = ..., - definition: Incomplete | None = ..., + oid: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + obsolete: bool = False, + superior: Incomplete | None = None, + equality: Incomplete | None = None, + ordering: Incomplete | None = None, + substring: Incomplete | None = None, + syntax: Incomplete | None = None, + min_length: Incomplete | None = None, + single_value: bool = False, + collective: bool = False, + no_user_modification: bool = False, + usage: Incomplete | None = None, + extensions: Incomplete | None = None, + experimental: Incomplete | None = None, + definition: Incomplete | None = None, ) -> None: ... class LdapSyntaxInfo(BaseObjectInfo): def __init__( self, - oid: Incomplete | None = ..., - description: Incomplete | None = ..., - extensions: Incomplete | None = ..., - experimental: Incomplete | None = ..., - definition: Incomplete | None = ..., + oid: Incomplete | None = None, + description: Incomplete | None = None, + extensions: Incomplete | None = None, + experimental: Incomplete | None = None, + definition: Incomplete | None = None, ) -> None: ... class DitContentRuleInfo(BaseObjectInfo): @@ -171,17 +171,17 @@ class DitContentRuleInfo(BaseObjectInfo): not_contains: Any def __init__( self, - oid: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - obsolete: bool = ..., - auxiliary_classes: Incomplete | None = ..., - must_contain: Incomplete | None = ..., - may_contain: Incomplete | None = ..., - not_contains: Incomplete | None = ..., - extensions: Incomplete | None = ..., - experimental: Incomplete | None = ..., - definition: Incomplete | None = ..., + oid: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + obsolete: bool = False, + auxiliary_classes: Incomplete | None = None, + must_contain: Incomplete | None = None, + may_contain: Incomplete | None = None, + not_contains: Incomplete | None = None, + extensions: Incomplete | None = None, + experimental: Incomplete | None = None, + definition: Incomplete | None = None, ) -> None: ... class DitStructureRuleInfo(BaseObjectInfo): @@ -189,15 +189,15 @@ class DitStructureRuleInfo(BaseObjectInfo): name_form: Any def __init__( self, - oid: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - obsolete: bool = ..., - name_form: Incomplete | None = ..., - superior: Incomplete | None = ..., - extensions: Incomplete | None = ..., - experimental: Incomplete | None = ..., - definition: Incomplete | None = ..., + oid: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + obsolete: bool = False, + name_form: Incomplete | None = None, + superior: Incomplete | None = None, + extensions: Incomplete | None = None, + experimental: Incomplete | None = None, + definition: Incomplete | None = None, ) -> None: ... class NameFormInfo(BaseObjectInfo): @@ -206,14 +206,14 @@ class NameFormInfo(BaseObjectInfo): may_contain: Any def __init__( self, - oid: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - obsolete: bool = ..., - object_class: Incomplete | None = ..., - must_contain: Incomplete | None = ..., - may_contain: Incomplete | None = ..., - extensions: Incomplete | None = ..., - experimental: Incomplete | None = ..., - definition: Incomplete | None = ..., + oid: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + obsolete: bool = False, + object_class: Incomplete | None = None, + must_contain: Incomplete | None = None, + may_contain: Incomplete | None = None, + extensions: Incomplete | None = None, + experimental: Incomplete | None = None, + definition: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc4527.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc4527.pyi index eacc393c4..bcacd4814 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc4527.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/rfc4527.pyi @@ -1,2 +1,2 @@ -def pre_read_control(attributes, criticality: bool = ...): ... -def post_read_control(attributes, criticality: bool = ...): ... +def pre_read_control(attributes, criticality: bool = False): ... +def post_read_control(attributes, criticality: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/sasl/sasl.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/sasl/sasl.pyi index 564c26ab5..32c30e0f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/sasl/sasl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/protocol/sasl/sasl.pyi @@ -1,5 +1,5 @@ def sasl_prep(data): ... -def validate_simple_password(password, accept_empty: bool = ...): ... +def validate_simple_password(password, accept_empty: bool = False): ... def abort_sasl_negotiation(connection, controls): ... def send_sasl_negotiation(connection, controls, payload): ... def random_hex_string(size): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/asynchronous.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/asynchronous.pyi index ecc746f86..a5509f8df 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/asynchronous.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/asynchronous.pyi @@ -17,7 +17,7 @@ class AsyncStrategy(BaseStrategy): async_lock: Any event_lock: Any def __init__(self, ldap_connection) -> None: ... - def open(self, reset_usage: bool = ..., read_server_info: bool = ...) -> None: ... + def open(self, reset_usage: bool = True, read_server_info: bool = True) -> None: ... def close(self) -> None: ... def set_event_for_message(self, message_id) -> None: ... def post_send_search(self, message_id): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/base.pyi index e324089b3..f0437a94e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/base.pyi @@ -15,10 +15,10 @@ class BaseStrategy: referral_cache: Any thread_safe: bool def __init__(self, ldap_connection) -> None: ... - def open(self, reset_usage: bool = ..., read_server_info: bool = ...) -> None: ... + def open(self, reset_usage: bool = True, read_server_info: bool = True) -> None: ... def close(self) -> None: ... - def send(self, message_type, request, controls: Incomplete | None = ...): ... - def get_response(self, message_id, timeout: Incomplete | None = ..., get_request: bool = ...): ... + def send(self, message_type, request, controls: Incomplete | None = None): ... + def get_response(self, message_id, timeout: Incomplete | None = None, get_request: bool = False): ... @staticmethod def compute_ldap_message_size(data): ... def decode_response(self, ldap_message): ... @@ -26,9 +26,9 @@ class BaseStrategy: @staticmethod def decode_control(control): ... @staticmethod - def decode_control_fast(control, from_server: bool = ...): ... + def decode_control_fast(control, from_server: bool = True): ... @staticmethod - def decode_request(message_type, component, controls: Incomplete | None = ...): ... + def decode_request(message_type, component, controls: Incomplete | None = None): ... def valid_referral_list(self, referrals): ... def do_next_range_search(self, request, response, attr_name): ... def do_search_on_auto_range(self, request, response): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/ldifProducer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/ldifProducer.pyi index a6aa78faf..5daee79b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/ldifProducer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/ldifProducer.pyi @@ -14,7 +14,7 @@ class LdifProducerStrategy(BaseStrategy): order: Any def __init__(self, ldap_connection) -> None: ... def receiving(self) -> None: ... - def send(self, message_type, request, controls: Incomplete | None = ...): ... + def send(self, message_type, request, controls: Incomplete | None = None): ... def post_send_single_response(self, message_id): ... def post_send_search(self, message_id) -> None: ... def accumulate_stream(self, fragment) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/mockAsync.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/mockAsync.pyi index 042511bd6..3b690c890 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/mockAsync.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/mockAsync.pyi @@ -9,4 +9,4 @@ class MockAsyncStrategy(MockBaseStrategy, AsyncStrategy): def post_send_search(self, payload): ... bound: Any def post_send_single_response(self, payload): ... - def get_response(self, message_id, timeout: Incomplete | None = ..., get_request: bool = ...): ... + def get_response(self, message_id, timeout: Incomplete | None = None, get_request: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/mockBase.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/mockBase.pyi index 8daea2cf8..e5d9e213b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/mockBase.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/mockBase.pyi @@ -13,7 +13,7 @@ class PagedSearchSet: sent: int done: bool def __init__(self, response, size, criticality) -> None: ... - def next(self, size: Incomplete | None = ...): ... + def next(self, size: Incomplete | None = None): ... class MockBaseStrategy: entries: Any @@ -22,7 +22,7 @@ class MockBaseStrategy: custom_validators: Any operational_attributes: Any def __init__(self) -> None: ... - def add_entry(self, dn, attributes, validate: bool = ...): ... + def add_entry(self, dn, attributes, validate: bool = True): ... def remove_entry(self, dn): ... def entries_from_json(self, json_entry_file) -> None: ... def mock_bind(self, request_message, controls): ... @@ -35,4 +35,4 @@ class MockBaseStrategy: def mock_extended(self, request_message, controls): ... def evaluate_filter_node(self, node, candidates): ... def equal(self, dn, attribute_type, value_to_check): ... - def send(self, message_type, request, controls: Incomplete | None = ...): ... + def send(self, message_type, request, controls: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/restartable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/restartable.pyi index e0d02e854..f7bce1d24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/restartable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/restartable.pyi @@ -12,8 +12,8 @@ class RestartableStrategy(SyncStrategy): restartable_tries: Any exception_history: Any def __init__(self, ldap_connection) -> None: ... - def open(self, reset_usage: bool = ..., read_server_info: bool = ...) -> None: ... - def send(self, message_type, request, controls: Incomplete | None = ...): ... + def open(self, reset_usage: bool = False, read_server_info: bool = True) -> None: ... + def send(self, message_type, request, controls: Incomplete | None = None): ... def post_send_single_response(self, message_id): ... def post_send_search(self, message_id): ... def get_stream(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/reusable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/reusable.pyi index cd900b1d4..8e26343bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/reusable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/reusable.pyi @@ -66,10 +66,10 @@ class ReusableStrategy(BaseStrategy): can_stream: bool pool: Any def __init__(self, ldap_connection) -> None: ... - def open(self, reset_usage: bool = ..., read_server_info: bool = ...) -> None: ... + def open(self, reset_usage: bool = True, read_server_info: bool = True) -> None: ... def terminate(self) -> None: ... - def send(self, message_type, request, controls: Incomplete | None = ...): ... + def send(self, message_type, request, controls: Incomplete | None = None): ... def validate_bind(self, controls): ... - def get_response(self, counter, timeout: Incomplete | None = ..., get_request: bool = ...): ... + def get_response(self, counter, timeout: Incomplete | None = None, get_request: bool = False): ... def post_send_single_response(self, counter): ... def post_send_search(self, counter): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/sync.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/sync.pyi index a1a846090..fb77f5909 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/sync.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/strategy/sync.pyi @@ -11,7 +11,7 @@ class SyncStrategy(BaseStrategy): can_stream: bool socket_size: Any def __init__(self, ldap_connection) -> None: ... - def open(self, reset_usage: bool = ..., read_server_info: bool = ...) -> None: ... + def open(self, reset_usage: bool = True, read_server_info: bool = True) -> None: ... def receiving(self): ... def post_send_single_response(self, message_id): ... def post_send_search(self, message_id): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/asn1.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/asn1.pyi index 3f4bc7094..ff28c62cd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/asn1.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/asn1.pyi @@ -25,15 +25,15 @@ def decode_message_fast(message): ... def decode_sequence(message: _B, start: int, stop: int, context_decoders: Mapping[int, Callable[[_B, int, int], _R]]) -> _R: ... @overload def decode_sequence( - message: _SupportsGetItemBuffer, start: int, stop: int, context_decoders: None = ... + message: _SupportsGetItemBuffer, start: int, stop: int, context_decoders: None = None ) -> _AllDecodersReturnType: ... -def decode_integer(message, start: int, stop: int, context_decoders: Unused = ...): ... -def decode_octet_string(message, start: int, stop: int, context_decoders: Unused = ...): ... -def decode_boolean(message, start: int, stop: int, context_decoders: Unused = ...): ... -def decode_bind_response(message, start: int, stop: int, context_decoders: Unused = ...): ... -def decode_extended_response(message, start: int, stop: int, context_decoders: Unused = ...): ... -def decode_intermediate_response(message, start: int, stop: int, context_decoders: Unused = ...): ... -def decode_controls(message, start: int, stop: int, context_decoders: Unused = ...): ... +def decode_integer(message, start: int, stop: int, context_decoders: Unused = None): ... +def decode_octet_string(message, start: int, stop: int, context_decoders: Unused = None): ... +def decode_boolean(message, start: int, stop: int, context_decoders: Unused = None): ... +def decode_bind_response(message, start: int, stop: int, context_decoders: Unused = None): ... +def decode_extended_response(message, start: int, stop: int, context_decoders: Unused = None): ... +def decode_intermediate_response(message, start: int, stop: int, context_decoders: Unused = None): ... +def decode_controls(message, start: int, stop: int, context_decoders: Unused = None): ... def ldap_result_to_dict_fast(response): ... def get_byte(x): ... def get_bytes(x): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/ciDict.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/ciDict.pyi index 154199401..828dcece0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/ciDict.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/ciDict.pyi @@ -6,7 +6,7 @@ _KT = TypeVar("_KT") _VT = TypeVar("_VT") class CaseInsensitiveDict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): - def __init__(self, other: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, other: Incomplete | None = None, **kwargs) -> None: ... def __contains__(self, item): ... def __delitem__(self, key) -> None: ... def __setitem__(self, key, item) -> None: ... @@ -20,11 +20,11 @@ class CaseInsensitiveDict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): def copy(self): ... class CaseInsensitiveWithAliasDict(CaseInsensitiveDict[_KT, _VT], Generic[_KT, _VT]): - def __init__(self, other: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, other: Incomplete | None = None, **kwargs) -> None: ... def aliases(self): ... def __setitem__(self, key, value) -> None: ... def __delitem__(self, key) -> None: ... - def set_alias(self, key, alias, ignore_duplicates: bool = ...) -> None: ... + def set_alias(self, key, alias, ignore_duplicates: bool = False) -> None: ... def remove_alias(self, alias) -> None: ... def __getitem__(self, key): ... def copy(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/conv.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/conv.pyi index 4955a853e..6837700a3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/conv.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/conv.pyi @@ -1,14 +1,14 @@ from _typeshed import Incomplete -def to_unicode(obj: float | bytes | str, encoding: str | None = ..., from_server: bool = ...) -> str: ... -def to_raw(obj, encoding: str = ...): ... -def escape_filter_chars(text: float | bytes | str, encoding: str | None = ...) -> str: ... -def unescape_filter_chars(text, encoding: Incomplete | None = ...): ... +def to_unicode(obj: float | bytes | str, encoding: str | None = None, from_server: bool = False) -> str: ... +def to_raw(obj, encoding: str = "utf-8"): ... +def escape_filter_chars(text: float | bytes | str, encoding: str | None = None) -> str: ... +def unescape_filter_chars(text, encoding: Incomplete | None = None): ... def escape_bytes(bytes_value: str | bytes) -> str: ... def prepare_for_stream(value): ... def json_encode_b64(obj): ... def check_json_dict(json_dict) -> None: ... def json_hook(obj): ... -def format_json(obj, iso_format: bool = ...): ... +def format_json(obj, iso_format: bool = False): ... def is_filter_escaped(text): ... def ldap_escape_to_bytes(text): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/dn.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/dn.pyi index dab0cdffd..0b5c559c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/dn.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/dn.pyi @@ -3,9 +3,9 @@ STATE_ESCAPE: int STATE_ESCAPE_HEX: int def to_dn( - iterator, decompose: bool = ..., remove_space: bool = ..., space_around_equal: bool = ..., separate_rdn: bool = ... + iterator, decompose: bool = False, remove_space: bool = False, space_around_equal: bool = False, separate_rdn: bool = False ): ... -def parse_dn(dn, escape: bool = ..., strip: bool = ...): ... -def safe_dn(dn, decompose: bool = ..., reverse: bool = ...): ... -def safe_rdn(dn, decompose: bool = ...): ... +def parse_dn(dn, escape: bool = False, strip: bool = False): ... +def safe_dn(dn, decompose: bool = False, reverse: bool = False): ... +def safe_rdn(dn, decompose: bool = False): ... def escape_rdn(rdn: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/hashed.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/hashed.pyi index 876932194..e255563f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/hashed.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/hashed.pyi @@ -4,4 +4,4 @@ from typing import Any algorithms_table: Any salted_table: Any -def hashed(algorithm, value, salt: Incomplete | None = ..., raw: bool = ..., encoding: str = ...): ... +def hashed(algorithm, value, salt: Incomplete | None = None, raw: bool = False, encoding: str = "utf-8"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/log.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/log.pyi index a5c47f7bd..e7a4681b0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/log.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/log.pyi @@ -12,7 +12,7 @@ DETAIL_LEVELS: Any def get_detail_level_name(level_name): ... def log(detail, message, *args) -> None: ... def log_enabled(detail): ... -def set_library_log_hide_sensitive_data(hide: bool = ...) -> None: ... +def set_library_log_hide_sensitive_data(hide: bool = True) -> None: ... def get_library_log_hide_sensitive_data(): ... def set_library_log_activation_level(logging_level) -> None: ... def get_library_log_activation_lavel(): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/ntlm.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/ntlm.pyi index 6e122f3a7..e03381cab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/ntlm.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/ldap3/utils/ntlm.pyi @@ -45,7 +45,7 @@ AV_FLAG_INTEGRITY: int AV_FLAG_TARGET_SPN_UNTRUSTED: int AV_FLAG_TYPES: Any -def pack_windows_version(debug: bool = ...): ... +def pack_windows_version(debug: bool = False): ... def unpack_windows_version(version_message): ... class NtlmClient: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi index 2723619a3..fb74c59eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi @@ -46,22 +46,22 @@ DEFAULT: _SentinelObject class _Call(tuple[Any, ...]): def __new__( cls, - value: Any = ..., - name: Incomplete | None = ..., - parent: Incomplete | None = ..., - two: bool = ..., - from_kall: bool = ..., + value: Any = (), + name: Incomplete | None = "", + parent: Incomplete | None = None, + two: bool = False, + from_kall: bool = True, ) -> Self: ... name: Any parent: Any from_kall: Any def __init__( self, - value: Any = ..., - name: Incomplete | None = ..., - parent: Incomplete | None = ..., - two: bool = ..., - from_kall: bool = ..., + value: Any = (), + name: Incomplete | None = None, + parent: Incomplete | None = None, + two: bool = False, + from_kall: bool = True, ) -> None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, __other: object) -> bool: ... @@ -86,48 +86,48 @@ class Base: class NonCallableMock(Base, Any): def __new__( cls, - spec: list[str] | object | type[object] | None = ..., - wraps: Incomplete | None = ..., - name: str | None = ..., - spec_set: list[str] | object | type[object] | None = ..., - parent: NonCallableMock | None = ..., - _spec_state: Incomplete | None = ..., - _new_name: str = ..., - _new_parent: NonCallableMock | None = ..., - _spec_as_instance: bool = ..., - _eat_self: bool | None = ..., - unsafe: bool = ..., + spec: list[str] | object | type[object] | None = None, + wraps: Incomplete | None = None, + name: str | None = None, + spec_set: list[str] | object | type[object] | None = None, + parent: NonCallableMock | None = None, + _spec_state: Incomplete | None = None, + _new_name: str = "", + _new_parent: NonCallableMock | None = None, + _spec_as_instance: bool = False, + _eat_self: bool | None = None, + unsafe: bool = False, **kwargs: Any, ) -> Self: ... def __init__( self, - spec: list[str] | object | type[object] | None = ..., - wraps: Incomplete | None = ..., - name: str | None = ..., - spec_set: list[str] | object | type[object] | None = ..., - parent: NonCallableMock | None = ..., - _spec_state: Incomplete | None = ..., - _new_name: str = ..., - _new_parent: NonCallableMock | None = ..., - _spec_as_instance: bool = ..., - _eat_self: bool | None = ..., - unsafe: bool = ..., + spec: list[str] | object | type[object] | None = None, + wraps: Incomplete | None = None, + name: str | None = None, + spec_set: list[str] | object | type[object] | None = None, + parent: NonCallableMock | None = None, + _spec_state: Incomplete | None = None, + _new_name: str = "", + _new_parent: NonCallableMock | None = None, + _spec_as_instance: bool = False, + _eat_self: bool | None = None, + unsafe: bool = False, **kwargs: Any, ) -> None: ... def __getattr__(self, name: str) -> Any: ... - def _calls_repr(self, prefix: str = ...) -> str: ... + def _calls_repr(self, prefix: str = "Calls") -> str: ... def assert_called_with(_mock_self, *args: Any, **kwargs: Any) -> None: ... def assert_not_called(_mock_self) -> None: ... def assert_called_once_with(_mock_self, *args: Any, **kwargs: Any) -> None: ... - def _format_mock_failure_message(self, args: Any, kwargs: Any, action: str = ...) -> str: ... + def _format_mock_failure_message(self, args: Any, kwargs: Any, action: str = "call") -> str: ... def assert_called(_mock_self) -> None: ... def assert_called_once(_mock_self) -> None: ... - def reset_mock(self, visited: Any = ..., *, return_value: bool = ..., side_effect: bool = ...) -> None: ... + def reset_mock(self, visited: Any = None, *, return_value: bool = False, side_effect: bool = False) -> None: ... def _extract_mock_name(self) -> str: ... def assert_any_call(self, *args: Any, **kwargs: Any) -> None: ... - def assert_has_calls(self, calls: Sequence[_Call], any_order: bool = ...) -> None: ... - def mock_add_spec(self, spec: Any, spec_set: bool = ...) -> None: ... - def _mock_add_spec(self, spec: Any, spec_set: bool, _spec_as_instance: bool = ..., _eat_self: bool = ...) -> None: ... + def assert_has_calls(self, calls: Sequence[_Call], any_order: bool = False) -> None: ... + def mock_add_spec(self, spec: Any, spec_set: bool = False) -> None: ... + def _mock_add_spec(self, spec: Any, spec_set: bool, _spec_as_instance: bool = False, _eat_self: bool = False) -> None: ... def attach_mock(self, mock: NonCallableMock, attribute: str) -> None: ... def configure_mock(self, **kwargs: Any) -> None: ... return_value: Any @@ -145,16 +145,16 @@ class CallableMixin(Base): side_effect: Any def __init__( self, - spec: Incomplete | None = ..., - side_effect: Incomplete | None = ..., + spec: Incomplete | None = None, + side_effect: Incomplete | None = None, return_value: Any = ..., - wraps: Incomplete | None = ..., - name: Incomplete | None = ..., - spec_set: Incomplete | None = ..., - parent: Incomplete | None = ..., - _spec_state: Incomplete | None = ..., - _new_name: Any = ..., - _new_parent: Incomplete | None = ..., + wraps: Incomplete | None = None, + name: Incomplete | None = None, + spec_set: Incomplete | None = None, + parent: Incomplete | None = None, + _spec_state: Incomplete | None = None, + _new_name: Any = "", + _new_parent: Incomplete | None = None, **kwargs: Any, ) -> None: ... def __call__(_mock_self, *args: Any, **kwargs: Any) -> Any: ... @@ -186,7 +186,7 @@ class _patch(Generic[_T]): new_callable: Incomplete | None, kwargs: Mapping[str, Any], *, - unsafe: bool = ..., + unsafe: bool = False, ) -> None: ... def copy(self) -> _patch[_T]: ... def __call__(self, func: Callable[..., _R]) -> Callable[..., _R]: ... @@ -211,7 +211,7 @@ class _patch_dict: in_dict: Any values: Any clear: Any - def __init__(self, in_dict: Any, values: Any = ..., clear: Any = ..., **kwargs: Any) -> None: ... + def __init__(self, in_dict: Any, values: Any = (), clear: Any = False, **kwargs: Any) -> None: ... def __call__(self, f: Any) -> Any: ... def decorate_callable(self, f: _F) -> _F: ... def decorate_async_callable(self, f: _AF) -> _AF: ... @@ -303,10 +303,10 @@ class MagicMixin: def __init__(self, *args: Any, **kw: Any) -> None: ... class NonCallableMagicMock(MagicMixin, NonCallableMock): - def mock_add_spec(self, spec: Any, spec_set: bool = ...) -> None: ... + def mock_add_spec(self, spec: Any, spec_set: bool = False) -> None: ... class MagicMock(MagicMixin, Mock): - def mock_add_spec(self, spec: Any, spec_set: bool = ...) -> None: ... + def mock_add_spec(self, spec: Any, spec_set: bool = False) -> None: ... class AsyncMockMixin(Base): def __init__(self, *args: Any, **kwargs: Any) -> None: ... @@ -315,7 +315,7 @@ class AsyncMockMixin(Base): def assert_awaited_with(_mock_self, *args: Any, **kwargs: Any) -> None: ... def assert_awaited_once_with(_mock_self, *args: Any, **kwargs: Any) -> None: ... def assert_any_await(_mock_self, *args: Any, **kwargs: Any) -> None: ... - def assert_has_awaits(_mock_self, calls: _CallList, any_order: bool = ...) -> None: ... + def assert_has_awaits(_mock_self, calls: _CallList, any_order: bool = False) -> None: ... def assert_not_awaited(_mock_self) -> None: ... def reset_mock(self, *args: Any, **kwargs: Any) -> None: ... await_count: int @@ -334,7 +334,7 @@ class MagicProxy(Base): parent: Any def __init__(self, name: str, parent: Any) -> None: ... def create_mock(self) -> Any: ... - def __get__(self, obj: Any, _type: Incomplete | None = ...) -> Any: ... + def __get__(self, obj: Any, _type: Incomplete | None = None) -> Any: ... class _ANY: def __eq__(self, other: object) -> Literal[True]: ... @@ -344,12 +344,12 @@ ANY: Any def create_autospec( spec: Any, - spec_set: Any = ..., - instance: Any = ..., - _parent: Incomplete | None = ..., - _name: Incomplete | None = ..., + spec_set: Any = False, + instance: Any = False, + _parent: Incomplete | None = None, + _name: Incomplete | None = None, *, - unsafe: bool = ..., + unsafe: bool = False, **kwargs: Any, ) -> Any: ... @@ -363,17 +363,17 @@ class _SpecState: def __init__( self, spec: Any, - spec_set: Any = ..., - parent: Incomplete | None = ..., - name: Incomplete | None = ..., - ids: Incomplete | None = ..., - instance: Any = ..., + spec_set: Any = False, + parent: Incomplete | None = None, + name: Incomplete | None = None, + ids: Incomplete | None = None, + instance: Any = False, ) -> None: ... -def mock_open(mock: Incomplete | None = ..., read_data: Any = ...) -> Any: ... +def mock_open(mock: Incomplete | None = None, read_data: Any = "") -> Any: ... class PropertyMock(Mock): - def __get__(self, obj: _T, obj_type: type[_T] | None = ...) -> Self: ... + def __get__(self, obj: _T, obj_type: type[_T] | None = None) -> Self: ... def __set__(self, obj: Any, value: Any) -> None: ... def seal(mock: Any) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/connections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/connections.pyi index d1034859a..327e76137 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/connections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/connections.pyi @@ -32,7 +32,7 @@ class Connection(_mysql.connection): self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None ) -> None: ... def autocommit(self, on: bool) -> None: ... - def cursor(self, cursorclass: type[cursors.BaseCursor] | None = ...): ... + def cursor(self, cursorclass: type[cursors.BaseCursor] | None = None): ... def query(self, query) -> None: ... def literal(self, o): ... def begin(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/cursors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/cursors.pyi index 2f1020c35..a739d1228 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/cursors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/cursors.pyi @@ -33,23 +33,23 @@ class BaseCursor: def nextset(self): ... def setinputsizes(self, *args) -> None: ... def setoutputsizes(self, *args) -> None: ... - def execute(self, query, args: Incomplete | None = ...): ... + def execute(self, query, args: Incomplete | None = None): ... def executemany(self, query: str, args: list[Any]) -> int: ... - def callproc(self, procname, args=...): ... + def callproc(self, procname, args=()): ... def __iter__(self): ... class CursorStoreResultMixIn: rownumber: Any def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... - def scroll(self, value, mode: str = ...) -> None: ... + def scroll(self, value, mode: str = "relative") -> None: ... def __iter__(self): ... class CursorUseResultMixIn: rownumber: Any def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = ...): ... + def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... def __iter__(self): ... def next(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/contrib/subnet_splitter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/contrib/subnet_splitter.pyi index 2e4200065..55edd7f09 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/contrib/subnet_splitter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/contrib/subnet_splitter.pyi @@ -2,6 +2,6 @@ from netaddr.ip import IPNetwork, _IPAddressAddr class SubnetSplitter: def __init__(self, base_cidr: _IPAddressAddr) -> None: ... - def extract_subnet(self, prefix: int, count: int | None = ...) -> list[IPNetwork]: ... + def extract_subnet(self, prefix: int, count: int | None = None) -> list[IPNetwork]: ... def available_subnets(self) -> list[IPNetwork]: ... def remove_subnet(self, ip_network: IPNetwork) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/core.pyi index da4d657f3..d0fdf7548 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/core.pyi @@ -22,7 +22,7 @@ class Subscriber: class PrettyPrinter(Subscriber): fh: SupportsWrite[str] write_eol: bool - def __init__(self, fh: SupportsWrite[str] = ..., write_eol: bool = ...) -> None: ... + def __init__(self, fh: SupportsWrite[str] = ..., write_eol: bool = True) -> None: ... def update(self, data: object) -> None: ... class Publisher: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/__init__.pyi index 9d2b963e0..5cd87789d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/__init__.pyi @@ -21,21 +21,21 @@ class OUI(BaseIdentifier): def __ne__(self, other: object) -> bool: ... @property def reg_count(self) -> int: ... - def registration(self, index: int = ...) -> DictDotLookup: ... + def registration(self, index: int = 0) -> DictDotLookup: ... class IAB(BaseIdentifier): IAB_EUI_VALUES: ClassVar[tuple[int, int]] @classmethod - def split_iab_mac(cls, eui_int: int, strict: bool = ...) -> tuple[int, int]: ... + def split_iab_mac(cls, eui_int: int, strict: bool = False) -> tuple[int, int]: ... record: dict[str, object] - def __init__(self, iab: str | int, strict: bool = ...) -> None: ... + def __init__(self, iab: str | int, strict: bool = False) -> None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... def registration(self) -> DictDotLookup: ... class EUI(BaseIdentifier): def __init__( - self, addr: EUI | int | str, version: int | None = ..., dialect: type[mac_eui48] | type[eui64_base] | None = ... + self, addr: EUI | int | str, version: int | None = None, dialect: type[mac_eui48] | type[eui64_base] | None = None ) -> None: ... @property def value(self) -> int: ... @@ -68,7 +68,7 @@ class EUI(BaseIdentifier): def __le__(self, other: EUI | int | str) -> bool: ... def __gt__(self, other: EUI | int | str) -> bool: ... def __ge__(self, other: EUI | int | str) -> bool: ... - def bits(self, word_sep: str | None = ...) -> str: ... + def bits(self, word_sep: str | None = None) -> str: ... @property def packed(self) -> bytes: ... @property @@ -81,4 +81,4 @@ class EUI(BaseIdentifier): def ipv6_link_local(self) -> IPAddress: ... @property def info(self) -> DictDotLookup: ... - def format(self, dialect: type[mac_eui48] | type[eui64_base] | None = ...) -> str: ... + def format(self, dialect: type[mac_eui48] | type[eui64_base] | None = None) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/__init__.pyi index 91651b731..24ed94f73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/__init__.pyi @@ -41,7 +41,7 @@ _IPAddressAddr: TypeAlias = BaseIP | int | str _IPNetworkAddr: TypeAlias = IPNetwork | IPAddress | tuple[int, int] | str class IPAddress(BaseIP): - def __init__(self, addr: _IPAddressAddr, version: Literal[4, 6] | None = ..., flags: int = ...) -> None: ... + def __init__(self, addr: _IPAddressAddr, version: Literal[4, 6] | None = None, flags: int = 0) -> None: ... def netmask_bits(self) -> int: ... def is_hostmask(self) -> bool: ... def is_netmask(self) -> bool: ... @@ -59,7 +59,7 @@ class IPAddress(BaseIP): def __hex__(self) -> str: ... def __index__(self) -> int: ... def __bytes__(self) -> bytes: ... - def bits(self, word_sep: str | None = ...) -> str: ... + def bits(self, word_sep: str | None = None) -> str: ... @property def packed(self) -> bytes: ... @property @@ -69,8 +69,8 @@ class IPAddress(BaseIP): @property def reverse_dns(self) -> str: ... def ipv4(self) -> Self: ... - def ipv6(self, ipv4_compatible: bool = ...) -> Self: ... - def format(self, dialect: type[ipv6_verbose] | None = ...) -> str: ... + def ipv6(self, ipv4_compatible: bool = False) -> Self: ... + def format(self, dialect: type[ipv6_verbose] | None = None) -> str: ... def __or__(self, other: str | SupportsInt | SupportsIndex) -> Self: ... def __and__(self, other: str | SupportsInt | SupportsIndex) -> Self: ... def __xor__(self, other: str | SupportsInt | SupportsIndex) -> Self: ... @@ -93,12 +93,12 @@ class IPListMixin: def __bool__(self) -> Literal[True]: ... def parse_ip_network( - module: Incomplete, addr: tuple[int, int] | str, implicit_prefix: bool = ..., flags: int = ... + module: Incomplete, addr: tuple[int, int] | str, implicit_prefix: bool = False, flags: int = 0 ) -> tuple[int, int]: ... class IPNetwork(BaseIP, IPListMixin): def __init__( - self, addr: _IPNetworkAddr, implicit_prefix: bool = ..., version: Literal[4, 6] | None = ..., flags: int = ... + self, addr: _IPNetworkAddr, implicit_prefix: bool = False, version: Literal[4, 6] | None = None, flags: int = 0 ) -> None: ... @property def prefixlen(self) -> int: ... @@ -129,15 +129,15 @@ class IPNetwork(BaseIP, IPListMixin): def key(self) -> tuple[int, ...]: ... def sort_key(self) -> tuple[int, ...]: ... def ipv4(self) -> Self: ... - def ipv6(self, ipv4_compatible: bool = ...) -> Self: ... - def previous(self, step: int = ...) -> Self: ... - def next(self, step: int = ...) -> Self: ... - def supernet(self, prefixlen: int = ...) -> list[IPNetwork]: ... - def subnet(self, prefixlen: int, count: int | None = ..., fmt: Unused = None) -> Iterator[Self]: ... + def ipv6(self, ipv4_compatible: bool = False) -> Self: ... + def previous(self, step: int = 1) -> Self: ... + def next(self, step: int = 1) -> Self: ... + def supernet(self, prefixlen: int = 0) -> list[IPNetwork]: ... + def subnet(self, prefixlen: int, count: int | None = None, fmt: Unused = None) -> Iterator[Self]: ... def iter_hosts(self) -> Iterator[IPAddress]: ... class IPRange(BaseIP, IPListMixin): - def __init__(self, start: _IPAddressAddr, end: _IPAddressAddr, flags: int = ...) -> None: ... + def __init__(self, start: _IPAddressAddr, end: _IPAddressAddr, flags: int = 0) -> None: ... def __contains__(self, other: BaseIP | _IPAddressAddr) -> bool: ... @property def first(self) -> int: ... @@ -155,7 +155,7 @@ def cidr_partition( target: _IPNetworkAddr, exclude: _IPNetworkAddr ) -> tuple[list[IPNetwork], list[IPNetwork], list[IPNetwork]]: ... def spanning_cidr(ip_addrs: Iterable[_IPNetworkAddr]) -> IPNetwork: ... -def iter_iprange(start: _IPAddressAddr, end: _IPAddressAddr, step: SupportsInt | SupportsIndex = ...) -> Iterator[IPAddress]: ... +def iter_iprange(start: _IPAddressAddr, end: _IPAddressAddr, step: SupportsInt | SupportsIndex = 1) -> Iterator[IPAddress]: ... def iprange_to_cidrs(start: _IPNetworkAddr, end: _IPNetworkAddr) -> list[IPNetwork]: ... def smallest_matching_cidr(ip: _IPAddressAddr, cidrs: Iterable[_IPNetworkAddr]) -> IPNetwork | None: ... def largest_matching_cidr(ip: _IPAddressAddr, cidrs: Iterable[_IPNetworkAddr]) -> IPNetwork | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/iana.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/iana.pyi index ef3657aa9..268023950 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/iana.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/iana.pyi @@ -13,7 +13,7 @@ _IanaInfoKey: TypeAlias = IPAddress | IPNetwork | IPRange IANA_INFO: dict[str, dict[_IanaInfoKey, dict[str, str]]] class SaxRecordParser(handler.ContentHandler): - def __init__(self, callback: Callable[[Mapping[str, object] | None], object] | None = ...) -> None: ... + def __init__(self, callback: Callable[[Mapping[str, object] | None], object] | None = None) -> None: ... def startElement(self, name: str, attrs: Mapping[str, object]) -> None: ... def endElement(self, name: str) -> None: ... def characters(self, content: str) -> None: ... @@ -48,5 +48,5 @@ class DictUpdater(Subscriber): def update(self, data: Incomplete) -> None: ... def load_info() -> None: ... -def pprint_info(fh: SupportsWrite[str] | None = ...) -> None: ... +def pprint_info(fh: SupportsWrite[str] | None = None) -> None: ... def query(ip_addr: IPAddress) -> dict[str, list[dict[str, str]]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/sets.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/sets.pyi index ac6e2cb1b..49f9cf64d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/sets.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/ip/sets.pyi @@ -7,19 +7,19 @@ from netaddr.ip import IPAddress, IPNetwork, IPRange, _IPNetworkAddr _IPIterable: TypeAlias = IPNetwork | IPRange | IPSet | Iterable[_IPNetworkAddr | IPRange | int] class IPSet: - def __init__(self, iterable: _IPIterable | None = ..., flags: int = ...) -> None: ... + def __init__(self, iterable: _IPIterable | None = None, flags: int = 0) -> None: ... def compact(self) -> None: ... def __hash__(self) -> NoReturn: ... def __contains__(self, ip: _IPNetworkAddr) -> bool: ... def __bool__(self) -> bool: ... def __iter__(self) -> Iterator[IPAddress]: ... def iter_cidrs(self) -> list[IPNetwork]: ... - def add(self, addr: IPRange | _IPNetworkAddr | int, flags: int = ...) -> None: ... - def remove(self, addr: IPRange | _IPNetworkAddr | int, flags: int = ...) -> None: ... + def add(self, addr: IPRange | _IPNetworkAddr | int, flags: int = 0) -> None: ... + def remove(self, addr: IPRange | _IPNetworkAddr | int, flags: int = 0) -> None: ... def pop(self) -> IPNetwork: ... def isdisjoint(self, other: IPSet) -> bool: ... def copy(self) -> Self: ... - def update(self, iterable: _IPIterable, flags: int = ...) -> None: ... + def update(self, iterable: _IPIterable, flags: int = 0) -> None: ... def clear(self) -> None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/__init__.pyi index d2daa0f00..0e93ac08c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/__init__.pyi @@ -7,9 +7,9 @@ BYTES_TO_BITS: list[str] def valid_words(words: Iterable[int], word_size: int, num_words: int) -> bool: ... def int_to_words(int_val: int, word_size: int, num_words: int) -> tuple[int, ...]: ... def words_to_int(words: Sequence[int], word_size: int, num_words: int) -> int: ... -def valid_bits(bits: str, width: int, word_sep: str = ...) -> bool: ... -def bits_to_int(bits: str, width: int, word_sep: str = ...) -> int: ... -def int_to_bits(int_val: int, word_size: int, num_words: int, word_sep: str = ...) -> str: ... +def valid_bits(bits: str, width: int, word_sep: str = "") -> bool: ... +def bits_to_int(bits: str, width: int, word_sep: str = "") -> int: ... +def int_to_bits(int_val: int, word_size: int, num_words: int, word_sep: str = "") -> str: ... def valid_bin(bin_val: str, width: int) -> bool: ... def int_to_bin(int_val: int, width: int) -> str: ... def bin_to_int(bin_val: str, width: int) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/eui48.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/eui48.pyi index aa7dcb241..8f62c3295 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/eui48.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/eui48.pyi @@ -29,15 +29,15 @@ RE_MAC_FORMATS: list[Pattern[str]] def valid_str(addr: str) -> bool: ... def str_to_int(addr: str) -> int: ... -def int_to_str(int_val: int, dialect: type[mac_eui48] | None = ...) -> str: ... +def int_to_str(int_val: int, dialect: type[mac_eui48] | None = None) -> str: ... def int_to_packed(int_val: int) -> bytes: ... def packed_to_int(packed_int: bytes) -> int: ... -def valid_words(words: Iterable[int], dialect: type[mac_eui48] | None = ...) -> bool: ... -def int_to_words(int_val: int, dialect: type[mac_eui48] | None = ...) -> tuple[int, ...]: ... -def words_to_int(words: Sequence[int], dialect: type[mac_eui48] | None = ...) -> int: ... -def valid_bits(bits: str, dialect: type[mac_eui48] | None = ...) -> bool: ... -def bits_to_int(bits: str, dialect: type[mac_eui48] | None = ...) -> int: ... -def int_to_bits(int_val: int, dialect: type[mac_eui48] | None = ...) -> str: ... -def valid_bin(bin_val: str, dialect: type[mac_eui48] | None = ...) -> bool: ... +def valid_words(words: Iterable[int], dialect: type[mac_eui48] | None = None) -> bool: ... +def int_to_words(int_val: int, dialect: type[mac_eui48] | None = None) -> tuple[int, ...]: ... +def words_to_int(words: Sequence[int], dialect: type[mac_eui48] | None = None) -> int: ... +def valid_bits(bits: str, dialect: type[mac_eui48] | None = None) -> bool: ... +def bits_to_int(bits: str, dialect: type[mac_eui48] | None = None) -> int: ... +def int_to_bits(int_val: int, dialect: type[mac_eui48] | None = None) -> str: ... +def valid_bin(bin_val: str, dialect: type[mac_eui48] | None = None) -> bool: ... def int_to_bin(int_val: int) -> str: ... def bin_to_int(bin_val: str) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/eui64.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/eui64.pyi index c5e456cc1..fff9e76b8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/eui64.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/eui64.pyi @@ -28,15 +28,15 @@ RE_EUI64_FORMATS: list[Pattern[str]] def valid_str(addr: str) -> bool: ... def str_to_int(addr: str) -> int: ... -def int_to_str(int_val: int, dialect: type[eui64_base] | None = ...) -> str: ... +def int_to_str(int_val: int, dialect: type[eui64_base] | None = None) -> str: ... def int_to_packed(int_val: int) -> bytes: ... def packed_to_int(packed_int: bytes) -> int: ... -def valid_words(words: Iterable[int], dialect: type[eui64_base] | None = ...) -> bool: ... -def int_to_words(int_val: int, dialect: type[eui64_base] | None = ...) -> tuple[int, ...]: ... -def words_to_int(words: Sequence[int], dialect: type[eui64_base] | None = ...) -> int: ... -def valid_bits(bits: str, dialect: type[eui64_base] | None = ...) -> bool: ... -def bits_to_int(bits: str, dialect: type[eui64_base] | None = ...) -> int: ... -def int_to_bits(int_val: int, dialect: type[eui64_base] | None = ...) -> str: ... -def valid_bin(bin_val: str, dialect: type[eui64_base] | None = ...) -> bool: ... +def valid_words(words: Iterable[int], dialect: type[eui64_base] | None = None) -> bool: ... +def int_to_words(int_val: int, dialect: type[eui64_base] | None = None) -> tuple[int, ...]: ... +def words_to_int(words: Sequence[int], dialect: type[eui64_base] | None = None) -> int: ... +def valid_bits(bits: str, dialect: type[eui64_base] | None = None) -> bool: ... +def bits_to_int(bits: str, dialect: type[eui64_base] | None = None) -> int: ... +def int_to_bits(int_val: int, dialect: type[eui64_base] | None = None) -> str: ... +def valid_bin(bin_val: str, dialect: type[eui64_base] | None = None) -> bool: ... def int_to_bin(int_val: int) -> str: ... def bin_to_int(bin_val: str) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/ipv4.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/ipv4.pyi index 763a858cb..707fa2174 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/ipv4.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/ipv4.pyi @@ -21,8 +21,8 @@ netmask_to_prefix: dict[int, int] prefix_to_hostmask: dict[int, int] hostmask_to_prefix: dict[int, int] -def valid_str(addr: str, flags: int = ...) -> bool: ... -def str_to_int(addr: str, flags: int = ...) -> int: ... +def valid_str(addr: str, flags: int = 0) -> bool: ... +def str_to_int(addr: str, flags: int = 0) -> int: ... def int_to_str(int_val: int, dialect: Unused = None) -> str: ... def int_to_arpa(int_val: int) -> str: ... def int_to_packed(int_val: int) -> bytes: ... @@ -32,7 +32,7 @@ def int_to_words(int_val: int) -> tuple[int, ...]: ... def words_to_int(words: Sequence[int]) -> int: ... def valid_bits(bits: str) -> bool: ... def bits_to_int(bits: str) -> int: ... -def int_to_bits(int_val: int, word_sep: str | None = ...) -> str: ... +def int_to_bits(int_val: int, word_sep: str | None = None) -> str: ... def valid_bin(bin_val: str) -> bool: ... def int_to_bin(int_val: int) -> str: ... def bin_to_int(bin_val: str) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/ipv6.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/ipv6.pyi index d96f42efe..b553ef001 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/ipv6.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/strategy/ipv6.pyi @@ -27,18 +27,18 @@ class ipv6_compact: class ipv6_full(ipv6_compact): ... class ipv6_verbose(ipv6_compact): ... -def valid_str(addr: str, flags: int = ...) -> bool: ... -def str_to_int(addr: str, flags: int = ...) -> int: ... -def int_to_str(int_val: int, dialect: type[ipv6_compact] | None = ...) -> str: ... +def valid_str(addr: str, flags: int = 0) -> bool: ... +def str_to_int(addr: str, flags: int = 0) -> int: ... +def int_to_str(int_val: int, dialect: type[ipv6_compact] | None = None) -> str: ... def int_to_arpa(int_val: int) -> str: ... def int_to_packed(int_val: int) -> bytes: ... def packed_to_int(packed_int: bytes) -> int: ... def valid_words(words: Iterable[int]) -> bool: ... -def int_to_words(int_val: int, num_words: int | None = ..., word_size: int | None = ...) -> tuple[int, ...]: ... +def int_to_words(int_val: int, num_words: int | None = None, word_size: int | None = None) -> tuple[int, ...]: ... def words_to_int(words: Sequence[int]) -> int: ... def valid_bits(bits: str) -> bool: ... def bits_to_int(bits: str) -> int: ... -def int_to_bits(int_val: int, word_sep: str | None = ...) -> str: ... +def int_to_bits(int_val: int, word_sep: str | None = None) -> str: ... def valid_bin(bin_val: str) -> bool: ... def int_to_bin(int_val: int) -> str: ... def bin_to_int(bin_val: str) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/common.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/common.pyi index 6dd0f731e..bd1dc5098 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/common.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/common.pyi @@ -8,7 +8,7 @@ INVALID_HEX_PATTERN: Any always_safe: str log: Any -def quote(s, safe: bytes = ...): ... +def quote(s, safe: bytes = b"/"): ... def unquote(s): ... def urlencode(params): ... def encode_params_utf8(params): ... @@ -20,14 +20,14 @@ def urldecode(query): ... def extract_params(raw): ... def generate_nonce(): ... def generate_timestamp(): ... -def generate_token(length: int = ..., chars=...): ... +def generate_token(length: int = 30, chars=...): ... def generate_signed_token(private_pem, request): ... def verify_signed_token(public_pem, token): ... -def generate_client_id(length: int = ..., chars=...): ... +def generate_client_id(length: int = 30, chars=...): ... def add_params_to_qs(query, params): ... -def add_params_to_uri(uri, params, fragment: bool = ...): ... +def add_params_to_uri(uri, params, fragment: bool = False): ... def safe_string_equals(a, b): ... -def to_unicode(data, encoding: str = ...): ... +def to_unicode(data, encoding: str = "UTF-8"): ... class CaseInsensitiveDict(dict[Any, Any]): proxy: Any @@ -35,7 +35,7 @@ class CaseInsensitiveDict(dict[Any, Any]): def __contains__(self, k): ... def __delitem__(self, k) -> None: ... def __getitem__(self, k): ... - def get(self, k, default: Incomplete | None = ...): ... + def get(self, k, default: Incomplete | None = None): ... def __setitem__(self, k, v) -> None: ... def update(self, *args, **kwargs) -> None: ... @@ -48,7 +48,12 @@ class Request: oauth_params: Any validator_log: Any def __init__( - self, uri, http_method: str = ..., body: Incomplete | None = ..., headers: Incomplete | None = ..., encoding: str = ... + self, + uri, + http_method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + encoding: str = "utf-8", ): ... def __getattr__(self, name: str): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/__init__.pyi index 3ee040dbc..6058e9d7f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/__init__.pyi @@ -38,27 +38,27 @@ class Client: def __init__( self, client_key, - client_secret: Incomplete | None = ..., - resource_owner_key: Incomplete | None = ..., - resource_owner_secret: Incomplete | None = ..., - callback_uri: Incomplete | None = ..., - signature_method=..., - signature_type=..., - rsa_key: Incomplete | None = ..., - verifier: Incomplete | None = ..., - realm: Incomplete | None = ..., - encoding: str = ..., - decoding: Incomplete | None = ..., - nonce: Incomplete | None = ..., - timestamp: Incomplete | None = ..., + client_secret: Incomplete | None = None, + resource_owner_key: Incomplete | None = None, + resource_owner_secret: Incomplete | None = None, + callback_uri: Incomplete | None = None, + signature_method="HMAC-SHA1", + signature_type="AUTH_HEADER", + rsa_key: Incomplete | None = None, + verifier: Incomplete | None = None, + realm: Incomplete | None = None, + encoding: str = "utf-8", + decoding: Incomplete | None = None, + nonce: Incomplete | None = None, + timestamp: Incomplete | None = None, ): ... def get_oauth_signature(self, request): ... def get_oauth_params(self, request): ... def sign( self, uri, - http_method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - realm: Incomplete | None = ..., + http_method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + realm: Incomplete | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/access_token.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/access_token.pyi index 8cd0094cf..b924cc7cc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/access_token.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/access_token.pyi @@ -10,9 +10,9 @@ class AccessTokenEndpoint(BaseEndpoint): def create_access_token_response( self, uri, - http_method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - credentials: Incomplete | None = ..., + http_method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + credentials: Incomplete | None = None, ): ... def validate_access_token_request(self, request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/authorization.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/authorization.pyi index 8e4ec0201..24c7747e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/authorization.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/authorization.pyi @@ -7,12 +7,12 @@ class AuthorizationEndpoint(BaseEndpoint): def create_authorization_response( self, uri, - http_method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - realms: Incomplete | None = ..., - credentials: Incomplete | None = ..., + http_method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + realms: Incomplete | None = None, + credentials: Incomplete | None = None, ): ... def get_realms_and_credentials( - self, uri, http_method: str = ..., body: Incomplete | None = ..., headers: Incomplete | None = ... + self, uri, http_method: str = "GET", body: Incomplete | None = None, headers: Incomplete | None = None ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/base.pyi index 467b40c90..941c42ac8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/base.pyi @@ -4,4 +4,4 @@ from typing import Any class BaseEndpoint: request_validator: Any token_generator: Any - def __init__(self, request_validator, token_generator: Incomplete | None = ...) -> None: ... + def __init__(self, request_validator, token_generator: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/request_token.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/request_token.pyi index a383e70e0..940486b28 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/request_token.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/request_token.pyi @@ -10,9 +10,9 @@ class RequestTokenEndpoint(BaseEndpoint): def create_request_token_response( self, uri, - http_method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - credentials: Incomplete | None = ..., + http_method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + credentials: Incomplete | None = None, ): ... def validate_request_token_request(self, request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/resource.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/resource.pyi index 9d7efb837..a7219c670 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/resource.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/resource.pyi @@ -9,8 +9,8 @@ class ResourceEndpoint(BaseEndpoint): def validate_protected_resource_request( self, uri, - http_method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - realms: Incomplete | None = ..., + http_method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + realms: Incomplete | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/signature_only.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/signature_only.pyi index a8b612bc8..0b0994158 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/signature_only.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/endpoints/signature_only.pyi @@ -6,4 +6,6 @@ from .base import BaseEndpoint as BaseEndpoint log: Any class SignatureOnlyEndpoint(BaseEndpoint): - def validate_request(self, uri, http_method: str = ..., body: Incomplete | None = ..., headers: Incomplete | None = ...): ... + def validate_request( + self, uri, http_method: str = "GET", body: Incomplete | None = None, headers: Incomplete | None = None + ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/errors.pyi index 311dbff74..4e05e4eca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/errors.pyi @@ -8,10 +8,10 @@ class OAuth1Error(Exception): status_code: Any def __init__( self, - description: Incomplete | None = ..., - uri: Incomplete | None = ..., - status_code: int = ..., - request: Incomplete | None = ..., + description: Incomplete | None = None, + uri: Incomplete | None = None, + status_code: int = 400, + request: Incomplete | None = None, ) -> None: ... def in_uri(self, uri): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/signature.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/signature.pyi index 1b7c8df8d..e37b9be48 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/signature.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth1/rfc5849/signature.pyi @@ -4,23 +4,23 @@ from typing import Any log: Any def signature_base_string(http_method: str, base_str_uri: str, normalized_encoded_request_parameters: str) -> str: ... -def base_string_uri(uri: str, host: str | None = ...) -> str: ... +def base_string_uri(uri: str, host: str | None = None) -> str: ... def collect_parameters( - uri_query: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - exclude_oauth_signature: bool = ..., - with_realm: bool = ..., + uri_query: str = "", + body: Incomplete | None = None, + headers: Incomplete | None = None, + exclude_oauth_signature: bool = True, + with_realm: bool = False, ): ... def normalize_parameters(params) -> str: ... def sign_hmac_sha1_with_client(sig_base_str, client): ... -def verify_hmac_sha1(request, client_secret: Incomplete | None = ..., resource_owner_secret: Incomplete | None = ...): ... +def verify_hmac_sha1(request, client_secret: Incomplete | None = None, resource_owner_secret: Incomplete | None = None): ... def sign_hmac_sha1(base_string, client_secret, resource_owner_secret): ... def sign_hmac_sha256_with_client(sig_base_str, client): ... -def verify_hmac_sha256(request, client_secret: Incomplete | None = ..., resource_owner_secret: Incomplete | None = ...): ... +def verify_hmac_sha256(request, client_secret: Incomplete | None = None, resource_owner_secret: Incomplete | None = None): ... def sign_hmac_sha256(base_string, client_secret, resource_owner_secret): ... def sign_hmac_sha512_with_client(sig_base_str: str, client): ... -def verify_hmac_sha512(request, client_secret: str | None = ..., resource_owner_secret: str | None = ...): ... +def verify_hmac_sha512(request, client_secret: str | None = None, resource_owner_secret: str | None = None): ... def sign_rsa_sha1_with_client(sig_base_str, client): ... def verify_rsa_sha1(request, rsa_public_key: str): ... def sign_rsa_sha1(base_string, rsa_private_key): ... @@ -30,4 +30,4 @@ def sign_rsa_sha512_with_client(sig_base_str: str, client): ... def verify_rsa_sha512(request, rsa_public_key: str): ... def sign_plaintext_with_client(_signature_base_string, client): ... def sign_plaintext(client_secret, resource_owner_secret): ... -def verify_plaintext(request, client_secret: Incomplete | None = ..., resource_owner_secret: Incomplete | None = ...): ... +def verify_plaintext(request, client_secret: Incomplete | None = None, resource_owner_secret: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/backend_application.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/backend_application.pyi index 5c6877c16..8bc1bd5b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/backend_application.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/backend_application.pyi @@ -4,4 +4,6 @@ from .base import Client as Client class BackendApplicationClient(Client): grant_type: str - def prepare_request_body(self, body: str = ..., scope: Incomplete | None = ..., include_client_id: bool = ..., **kwargs): ... + def prepare_request_body( + self, body: str = "", scope: Incomplete | None = None, include_client_id: bool = False, **kwargs + ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/base.pyi index ff329d440..2a75404ff 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/base.pyi @@ -28,20 +28,20 @@ class Client: def __init__( self, client_id, - default_token_placement=..., - token_type: str = ..., - access_token: Incomplete | None = ..., - refresh_token: Incomplete | None = ..., - mac_key: Incomplete | None = ..., - mac_algorithm: Incomplete | None = ..., - token: Incomplete | None = ..., - scope: Incomplete | None = ..., - state: Incomplete | None = ..., - redirect_url: Incomplete | None = ..., + default_token_placement="auth_header", + token_type: str = "Bearer", + access_token: Incomplete | None = None, + refresh_token: Incomplete | None = None, + mac_key: Incomplete | None = None, + mac_algorithm: Incomplete | None = None, + token: Incomplete | None = None, + scope: Incomplete | None = None, + state: Incomplete | None = None, + redirect_url: Incomplete | None = None, state_generator=..., - code_verifier: str | None = ..., - code_challenge: str | None = ..., - code_challenge_method: str | None = ..., + code_verifier: str | None = None, + code_challenge: str | None = None, + code_challenge_method: str | None = None, **kwargs, ) -> None: ... @property @@ -52,40 +52,46 @@ class Client: def add_token( self, uri, - http_method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - token_placement: Incomplete | None = ..., + http_method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + token_placement: Incomplete | None = None, **kwargs, ): ... def prepare_authorization_request( self, authorization_url, - state: Incomplete | None = ..., - redirect_url: Incomplete | None = ..., - scope: Incomplete | None = ..., + state: Incomplete | None = None, + redirect_url: Incomplete | None = None, + scope: Incomplete | None = None, **kwargs, ): ... def prepare_token_request( self, token_url, - authorization_response: Incomplete | None = ..., - redirect_url: Incomplete | None = ..., - state: Incomplete | None = ..., - body: str = ..., + authorization_response: Incomplete | None = None, + redirect_url: Incomplete | None = None, + state: Incomplete | None = None, + body: str = "", **kwargs, ): ... def prepare_refresh_token_request( - self, token_url, refresh_token: Incomplete | None = ..., body: str = ..., scope: Incomplete | None = ..., **kwargs + self, token_url, refresh_token: Incomplete | None = None, body: str = "", scope: Incomplete | None = None, **kwargs ): ... def prepare_token_revocation_request( - self, revocation_url, token, token_type_hint: str = ..., body: str = ..., callback: Incomplete | None = ..., **kwargs + self, + revocation_url, + token, + token_type_hint: str = "access_token", + body: str = "", + callback: Incomplete | None = None, + **kwargs, ): ... - def parse_request_body_response(self, body, scope: Incomplete | None = ..., **kwargs): ... + def parse_request_body_response(self, body, scope: Incomplete | None = None, **kwargs): ... def prepare_refresh_body( - self, body: str = ..., refresh_token: Incomplete | None = ..., scope: Incomplete | None = ..., **kwargs + self, body: str = "", refresh_token: Incomplete | None = None, scope: Incomplete | None = None, **kwargs ): ... def create_code_verifier(self, length: int) -> str: ... - def create_code_challenge(self, code_verifier: str, code_challenge_method: str | None = ...) -> str: ... + def create_code_challenge(self, code_verifier: str, code_challenge_method: str | None = None) -> str: ... def populate_code_attributes(self, response) -> None: ... def populate_token_attributes(self, response) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/legacy_application.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/legacy_application.pyi index 5cc028c99..81e2d0600 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/legacy_application.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/legacy_application.pyi @@ -6,5 +6,5 @@ class LegacyApplicationClient(Client): grant_type: str def __init__(self, client_id, **kwargs) -> None: ... def prepare_request_body( - self, username, password, body: str = ..., scope: Incomplete | None = ..., include_client_id: bool = ..., **kwargs + self, username, password, body: str = "", scope: Incomplete | None = None, include_client_id: bool = False, **kwargs ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/mobile_application.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/mobile_application.pyi index 283d45cf4..ce40e76b2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/mobile_application.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/mobile_application.pyi @@ -6,7 +6,12 @@ from .base import Client as Client class MobileApplicationClient(Client): response_type: str def prepare_request_uri( - self, uri, redirect_uri: Incomplete | None = ..., scope: Incomplete | None = ..., state: Incomplete | None = ..., **kwargs + self, + uri, + redirect_uri: Incomplete | None = None, + scope: Incomplete | None = None, + state: Incomplete | None = None, + **kwargs, ): ... token: Any - def parse_request_uri_response(self, uri, state: Incomplete | None = ..., scope: Incomplete | None = ...): ... + def parse_request_uri_response(self, uri, state: Incomplete | None = None, scope: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/service_application.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/service_application.pyi index eba9fe18b..2c3809439 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/service_application.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/service_application.pyi @@ -12,23 +12,23 @@ class ServiceApplicationClient(Client): def __init__( self, client_id, - private_key: Incomplete | None = ..., - subject: Incomplete | None = ..., - issuer: Incomplete | None = ..., - audience: Incomplete | None = ..., + private_key: Incomplete | None = None, + subject: Incomplete | None = None, + issuer: Incomplete | None = None, + audience: Incomplete | None = None, **kwargs, ) -> None: ... def prepare_request_body( self, - private_key: Incomplete | None = ..., - subject: Incomplete | None = ..., - issuer: Incomplete | None = ..., - audience: Incomplete | None = ..., - expires_at: Incomplete | None = ..., - issued_at: Incomplete | None = ..., - extra_claims: Incomplete | None = ..., - body: str = ..., - scope: Incomplete | None = ..., - include_client_id: bool = ..., + private_key: Incomplete | None = None, + subject: Incomplete | None = None, + issuer: Incomplete | None = None, + audience: Incomplete | None = None, + expires_at: Incomplete | None = None, + issued_at: Incomplete | None = None, + extra_claims: Incomplete | None = None, + body: str = "", + scope: Incomplete | None = None, + include_client_id: bool = False, **kwargs, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/web_application.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/web_application.pyi index c16e9e1ff..ab025bb04 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/web_application.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/clients/web_application.pyi @@ -6,24 +6,24 @@ from .base import Client as Client class WebApplicationClient(Client): grant_type: str code: Any - def __init__(self, client_id, code: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, client_id, code: Incomplete | None = None, **kwargs) -> None: ... def prepare_request_uri( self, uri, - redirect_uri: Incomplete | None = ..., - scope: Incomplete | None = ..., - state: Incomplete | None = ..., - code_challenge: str | None = ..., - code_challenge_method: str | None = ..., + redirect_uri: Incomplete | None = None, + scope: Incomplete | None = None, + state: Incomplete | None = None, + code_challenge: str | None = None, + code_challenge_method: str | None = "plain", **kwargs, ): ... def prepare_request_body( self, - code: Incomplete | None = ..., - redirect_uri: Incomplete | None = ..., - body: str = ..., - include_client_id: bool = ..., - code_verifier: str | None = ..., + code: Incomplete | None = None, + redirect_uri: Incomplete | None = None, + body: str = "", + include_client_id: bool = True, + code_verifier: str | None = None, **kwargs, ): ... - def parse_request_uri_response(self, uri, state: Incomplete | None = ...): ... + def parse_request_uri_response(self, uri, state: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/authorization.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/authorization.pyi index 35d455191..c0f595444 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/authorization.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/authorization.pyi @@ -18,12 +18,12 @@ class AuthorizationEndpoint(BaseEndpoint): def create_authorization_response( self, uri, - http_method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - scopes: Incomplete | None = ..., - credentials: Incomplete | None = ..., + http_method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + scopes: Incomplete | None = None, + credentials: Incomplete | None = None, ): ... def validate_authorization_request( - self, uri, http_method: str = ..., body: Incomplete | None = ..., headers: Incomplete | None = ... + self, uri, http_method: str = "GET", body: Incomplete | None = None, headers: Incomplete | None = None ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/introspect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/introspect.pyi index 40a148ab8..2a933125e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/introspect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/introspect.pyi @@ -10,8 +10,8 @@ class IntrospectEndpoint(BaseEndpoint): valid_request_methods: Any request_validator: Any supported_token_types: Any - def __init__(self, request_validator, supported_token_types: Incomplete | None = ...) -> None: ... + def __init__(self, request_validator, supported_token_types: Incomplete | None = None) -> None: ... def create_introspect_response( - self, uri, http_method: str = ..., body: Incomplete | None = ..., headers: Incomplete | None = ... + self, uri, http_method: str = "POST", body: Incomplete | None = None, headers: Incomplete | None = None ): ... def validate_introspect_request(self, request) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/metadata.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/metadata.pyi index 0c3176e7f..39494768f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/metadata.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/metadata.pyi @@ -10,12 +10,12 @@ class MetadataEndpoint(BaseEndpoint): endpoints: Any initial_claims: Any claims: Any - def __init__(self, endpoints, claims=..., raise_errors: bool = ...) -> None: ... + def __init__(self, endpoints, claims={}, raise_errors: bool = True) -> None: ... def create_metadata_response( - self, uri, http_method: str = ..., body: Incomplete | None = ..., headers: Incomplete | None = ... + self, uri, http_method: str = "GET", body: Incomplete | None = None, headers: Incomplete | None = None ): ... def validate_metadata( - self, array, key, is_required: bool = ..., is_list: bool = ..., is_url: bool = ..., is_issuer: bool = ... + self, array, key, is_required: bool = False, is_list: bool = False, is_url: bool = False, is_issuer: bool = False ) -> None: ... def validate_metadata_token(self, claims, endpoint) -> None: ... def validate_metadata_authorization(self, claims, endpoint): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/pre_configured.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/pre_configured.pyi index d33ea10ab..35bd25c7e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/pre_configured.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/pre_configured.pyi @@ -17,9 +17,9 @@ class Server(AuthorizationEndpoint, IntrospectEndpoint, TokenEndpoint, ResourceE def __init__( self, request_validator, - token_expires_in: Incomplete | None = ..., - token_generator: Incomplete | None = ..., - refresh_token_generator: Incomplete | None = ..., + token_expires_in: Incomplete | None = None, + token_generator: Incomplete | None = None, + refresh_token_generator: Incomplete | None = None, *args, **kwargs, ) -> None: ... @@ -31,9 +31,9 @@ class WebApplicationServer(AuthorizationEndpoint, IntrospectEndpoint, TokenEndpo def __init__( self, request_validator, - token_generator: Incomplete | None = ..., - token_expires_in: Incomplete | None = ..., - refresh_token_generator: Incomplete | None = ..., + token_generator: Incomplete | None = None, + token_expires_in: Incomplete | None = None, + refresh_token_generator: Incomplete | None = None, **kwargs, ) -> None: ... @@ -43,9 +43,9 @@ class MobileApplicationServer(AuthorizationEndpoint, IntrospectEndpoint, Resourc def __init__( self, request_validator, - token_generator: Incomplete | None = ..., - token_expires_in: Incomplete | None = ..., - refresh_token_generator: Incomplete | None = ..., + token_generator: Incomplete | None = None, + token_expires_in: Incomplete | None = None, + refresh_token_generator: Incomplete | None = None, **kwargs, ) -> None: ... @@ -56,9 +56,9 @@ class LegacyApplicationServer(TokenEndpoint, IntrospectEndpoint, ResourceEndpoin def __init__( self, request_validator, - token_generator: Incomplete | None = ..., - token_expires_in: Incomplete | None = ..., - refresh_token_generator: Incomplete | None = ..., + token_generator: Incomplete | None = None, + token_expires_in: Incomplete | None = None, + refresh_token_generator: Incomplete | None = None, **kwargs, ) -> None: ... @@ -68,8 +68,8 @@ class BackendApplicationServer(TokenEndpoint, IntrospectEndpoint, ResourceEndpoi def __init__( self, request_validator, - token_generator: Incomplete | None = ..., - token_expires_in: Incomplete | None = ..., - refresh_token_generator: Incomplete | None = ..., + token_generator: Incomplete | None = None, + token_expires_in: Incomplete | None = None, + refresh_token_generator: Incomplete | None = None, **kwargs, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/resource.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/resource.pyi index 19e06ae76..7bc1e22a9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/resource.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/resource.pyi @@ -16,9 +16,9 @@ class ResourceEndpoint(BaseEndpoint): def verify_request( self, uri, - http_method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - scopes: Incomplete | None = ..., + http_method: str = "GET", + body: Incomplete | None = None, + headers: Incomplete | None = None, + scopes: Incomplete | None = None, ): ... def find_token_type(self, request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/revocation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/revocation.pyi index d99634346..3fb860c8b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/revocation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/revocation.pyi @@ -11,8 +11,10 @@ class RevocationEndpoint(BaseEndpoint): request_validator: Any supported_token_types: Any enable_jsonp: Any - def __init__(self, request_validator, supported_token_types: Incomplete | None = ..., enable_jsonp: bool = ...) -> None: ... + def __init__( + self, request_validator, supported_token_types: Incomplete | None = None, enable_jsonp: bool = False + ) -> None: ... def create_revocation_response( - self, uri, http_method: str = ..., body: Incomplete | None = ..., headers: Incomplete | None = ... + self, uri, http_method: str = "POST", body: Incomplete | None = None, headers: Incomplete | None = None ): ... def validate_revocation_request(self, request) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/token.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/token.pyi index f1a474e94..5d73cc7a8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/token.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/endpoints/token.pyi @@ -19,11 +19,11 @@ class TokenEndpoint(BaseEndpoint): def create_token_response( self, uri, - http_method: str = ..., - body: Incomplete | None = ..., - headers: Incomplete | None = ..., - credentials: Incomplete | None = ..., - grant_type_for_scope: Incomplete | None = ..., - claims: Incomplete | None = ..., + http_method: str = "POST", + body: Incomplete | None = None, + headers: Incomplete | None = None, + credentials: Incomplete | None = None, + grant_type_for_scope: Incomplete | None = None, + claims: Incomplete | None = None, ): ... def validate_token_request(self, request) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/errors.pyi index 1ca35366e..3eb2db2c0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/errors.pyi @@ -15,11 +15,11 @@ class OAuth2Error(Exception): grant_type: Any def __init__( self, - description: Incomplete | None = ..., - uri: Incomplete | None = ..., - state: Incomplete | None = ..., - status_code: Incomplete | None = ..., - request: Incomplete | None = ..., + description: Incomplete | None = None, + uri: Incomplete | None = None, + state: Incomplete | None = None, + status_code: Incomplete | None = None, + request: Incomplete | None = None, ) -> None: ... def in_uri(self, uri): ... @property @@ -138,4 +138,4 @@ class CustomOAuth2Error(OAuth2Error): error: Any def __init__(self, error, *args, **kwargs) -> None: ... -def raise_from_error(error, params: Incomplete | None = ...) -> None: ... +def raise_from_error(error, params: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/grant_types/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/grant_types/base.pyi index f44125218..16955dff3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/grant_types/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/grant_types/base.pyi @@ -20,7 +20,7 @@ class GrantTypeBase: default_response_mode: str refresh_token: bool response_types: Any - def __init__(self, request_validator: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, request_validator: Incomplete | None = None, **kwargs) -> None: ... def register_response_type(self, response_type) -> None: ... def register_code_modifier(self, modifier) -> None: ... def register_token_modifier(self, modifier) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/grant_types/refresh_token.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/grant_types/refresh_token.pyi index c1d6c179d..61a5eacd1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/grant_types/refresh_token.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/grant_types/refresh_token.pyi @@ -6,6 +6,6 @@ from .base import GrantTypeBase as GrantTypeBase log: Any class RefreshTokenGrant(GrantTypeBase): - def __init__(self, request_validator: Incomplete | None = ..., issue_new_refresh_tokens: bool = ..., **kwargs) -> None: ... + def __init__(self, request_validator: Incomplete | None = None, issue_new_refresh_tokens: bool = True, **kwargs) -> None: ... def create_token_response(self, request, token_handler): ... def validate_token_request(self, request) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/parameters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/parameters.pyi index 2e9fe1277..c0dd38f9a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/parameters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/parameters.pyi @@ -4,20 +4,20 @@ def prepare_grant_uri( uri, client_id, response_type, - redirect_uri: Incomplete | None = ..., - scope: Incomplete | None = ..., - state: Incomplete | None = ..., - code_challenge: str | None = ..., - code_challenge_method: str | None = ..., + redirect_uri: Incomplete | None = None, + scope: Incomplete | None = None, + state: Incomplete | None = None, + code_challenge: str | None = None, + code_challenge_method: str | None = "plain", **kwargs, ): ... def prepare_token_request( - grant_type, body: str = ..., include_client_id: bool = ..., code_verifier: str | None = ..., **kwargs + grant_type, body: str = "", include_client_id: bool = True, code_verifier: str | None = None, **kwargs ): ... def prepare_token_revocation_request( - url, token, token_type_hint: str = ..., callback: Incomplete | None = ..., body: str = ..., **kwargs + url, token, token_type_hint: str = "access_token", callback: Incomplete | None = None, body: str = "", **kwargs ): ... -def parse_authorization_code_response(uri, state: Incomplete | None = ...): ... -def parse_implicit_response(uri, state: Incomplete | None = ..., scope: Incomplete | None = ...): ... -def parse_token_response(body, scope: Incomplete | None = ...): ... +def parse_authorization_code_response(uri, state: Incomplete | None = None): ... +def parse_implicit_response(uri, state: Incomplete | None = None, scope: Incomplete | None = None): ... +def parse_token_response(body, scope: Incomplete | None = None): ... def validate_token_parameters(params) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/tokens.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/tokens.pyi index 4fded89a5..9ef160a13 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/tokens.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/oauth2/rfc6749/tokens.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from typing import Any class OAuth2Token(dict[Any, Any]): - def __init__(self, params, old_scope: Incomplete | None = ...) -> None: ... + def __init__(self, params, old_scope: Incomplete | None = None) -> None: ... @property def scope_changed(self): ... @property @@ -23,23 +23,23 @@ def prepare_mac_header( uri, key, http_method, - nonce: Incomplete | None = ..., - headers: Incomplete | None = ..., - body: Incomplete | None = ..., - ext: str = ..., - hash_algorithm: str = ..., - issue_time: Incomplete | None = ..., - draft: int = ..., + nonce: Incomplete | None = None, + headers: Incomplete | None = None, + body: Incomplete | None = None, + ext: str = "", + hash_algorithm: str = "hmac-sha-1", + issue_time: Incomplete | None = None, + draft: int = 0, ): ... def prepare_bearer_uri(token, uri): ... -def prepare_bearer_headers(token, headers: Incomplete | None = ...): ... -def prepare_bearer_body(token, body: str = ...): ... -def random_token_generator(request, refresh_token: bool = ...): ... +def prepare_bearer_headers(token, headers: Incomplete | None = None): ... +def prepare_bearer_body(token, body: str = ""): ... +def random_token_generator(request, refresh_token: bool = False): ... def signed_token_generator(private_pem, **kwargs): ... def get_token_from_header(request): ... class TokenBase: - def __call__(self, request, refresh_token: bool = ...) -> None: ... + def __call__(self, request, refresh_token: bool = False) -> None: ... def validate_request(self, request) -> None: ... def estimate_type(self, request) -> None: ... @@ -50,11 +50,11 @@ class BearerToken(TokenBase): expires_in: Any def __init__( self, - request_validator: Incomplete | None = ..., - token_generator: Incomplete | None = ..., - expires_in: Incomplete | None = ..., - refresh_token_generator: Incomplete | None = ..., + request_validator: Incomplete | None = None, + token_generator: Incomplete | None = None, + expires_in: Incomplete | None = None, + refresh_token_generator: Incomplete | None = None, ) -> None: ... - def create_token(self, request, refresh_token: bool = ..., **kwargs): ... + def create_token(self, request, refresh_token: bool = False, **kwargs): ... def validate_request(self, request): ... def estimate_type(self, request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/endpoints/pre_configured.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/endpoints/pre_configured.pyi index c01840dbf..7ad48ddb2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/endpoints/pre_configured.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/endpoints/pre_configured.pyi @@ -28,9 +28,9 @@ class Server(AuthorizationEndpoint, IntrospectEndpoint, TokenEndpoint, ResourceE def __init__( self, request_validator, - token_expires_in: Incomplete | None = ..., - token_generator: Incomplete | None = ..., - refresh_token_generator: Incomplete | None = ..., + token_expires_in: Incomplete | None = None, + token_generator: Incomplete | None = None, + refresh_token_generator: Incomplete | None = None, *args, **kwargs, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/endpoints/userinfo.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/endpoints/userinfo.pyi index 90bda6046..4e6239a08 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/endpoints/userinfo.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/endpoints/userinfo.pyi @@ -10,6 +10,6 @@ class UserInfoEndpoint(BaseEndpoint): request_validator: Any def __init__(self, request_validator) -> None: ... def create_userinfo_response( - self, uri, http_method: str = ..., body: Incomplete | None = ..., headers: Incomplete | None = ... + self, uri, http_method: str = "GET", body: Incomplete | None = None, headers: Incomplete | None = None ): ... def validate_userinfo_request(self, request) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/exceptions.pyi index 7976462b5..ceb668657 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/exceptions.pyi @@ -50,4 +50,4 @@ class InsufficientScopeError(OAuth2Error): status_code: int description: str -def raise_from_error(error, params: Incomplete | None = ...) -> None: ... +def raise_from_error(error, params: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/authorization_code.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/authorization_code.pyi index d9f4eb632..2a0c5d02e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/authorization_code.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/authorization_code.pyi @@ -7,5 +7,5 @@ log: Any class AuthorizationCodeGrant(GrantTypeBase): proxy_target: Any - def __init__(self, request_validator: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, request_validator: Incomplete | None = None, **kwargs) -> None: ... def add_id_token(self, token, token_handler, request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/base.pyi index 8cd663245..be05e3f78 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/base.pyi @@ -8,7 +8,7 @@ class GrantTypeBase: def __setattr__(self, attr: str, value) -> None: ... def validate_authorization_request(self, request): ... def id_token_hash(self, value, hashfunc=...): ... - def add_id_token(self, token, token_handler, request, nonce: Incomplete | None = ...): ... + def add_id_token(self, token, token_handler, request, nonce: Incomplete | None = None): ... def openid_authorization_validator(self, request): ... OpenIDConnectBase = GrantTypeBase diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/dispatchers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/dispatchers.pyi index aa541de7f..f33ed5281 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/dispatchers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/dispatchers.pyi @@ -10,14 +10,14 @@ class Dispatcher: class AuthorizationCodeGrantDispatcher(Dispatcher): default_grant: Any oidc_grant: Any - def __init__(self, default_grant: Incomplete | None = ..., oidc_grant: Incomplete | None = ...) -> None: ... + def __init__(self, default_grant: Incomplete | None = None, oidc_grant: Incomplete | None = None) -> None: ... def create_authorization_response(self, request, token_handler): ... def validate_authorization_request(self, request): ... class ImplicitTokenGrantDispatcher(Dispatcher): default_grant: Any oidc_grant: Any - def __init__(self, default_grant: Incomplete | None = ..., oidc_grant: Incomplete | None = ...) -> None: ... + def __init__(self, default_grant: Incomplete | None = None, oidc_grant: Incomplete | None = None) -> None: ... def create_authorization_response(self, request, token_handler): ... def validate_authorization_request(self, request): ... @@ -26,6 +26,6 @@ class AuthorizationTokenGrantDispatcher(Dispatcher): oidc_grant: Any request_validator: Any def __init__( - self, request_validator, default_grant: Incomplete | None = ..., oidc_grant: Incomplete | None = ... + self, request_validator, default_grant: Incomplete | None = None, oidc_grant: Incomplete | None = None ) -> None: ... def create_token_response(self, request, token_handler): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/hybrid.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/hybrid.pyi index 555f185cd..54daa5e09 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/hybrid.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/hybrid.pyi @@ -11,6 +11,6 @@ log: Any class HybridGrant(GrantTypeBase): request_validator: Any proxy_target: Any - def __init__(self, request_validator: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, request_validator: Incomplete | None = None, **kwargs) -> None: ... def add_id_token(self, token, token_handler, request): ... def openid_authorization_validator(self, request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/implicit.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/implicit.pyi index b99659c11..134af4c4b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/implicit.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/grant_types/implicit.pyi @@ -7,6 +7,6 @@ log: Any class ImplicitGrant(GrantTypeBase): proxy_target: Any - def __init__(self, request_validator: Incomplete | None = ..., **kwargs) -> None: ... + def __init__(self, request_validator: Incomplete | None = None, **kwargs) -> None: ... def add_id_token(self, token, token_handler, request): ... def openid_authorization_validator(self, request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/tokens.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/tokens.pyi index efbc471af..4bff4f27f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/tokens.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/openid/connect/core/tokens.pyi @@ -10,11 +10,11 @@ class JWTToken(TokenBase): expires_in: Any def __init__( self, - request_validator: Incomplete | None = ..., - token_generator: Incomplete | None = ..., - expires_in: Incomplete | None = ..., - refresh_token_generator: Incomplete | None = ..., + request_validator: Incomplete | None = None, + token_generator: Incomplete | None = None, + expires_in: Incomplete | None = None, + refresh_token_generator: Incomplete | None = None, ) -> None: ... - def create_token(self, request, refresh_token: bool = ...): ... + def create_token(self, request, refresh_token: bool = False): ... def validate_request(self, request): ... def estimate_type(self, request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/signals.pyi b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/signals.pyi index d06f06336..33096927c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/signals.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/oauthlib/signals.pyi @@ -4,12 +4,12 @@ from typing import Any signals_available: bool class Namespace: - def signal(self, name, doc: Incomplete | None = ...): ... + def signal(self, name, doc: Incomplete | None = None): ... class _FakeSignal: name: Any __doc__: Any - def __init__(self, name, doc: Incomplete | None = ...) -> None: ... + def __init__(self, name, doc: Incomplete | None = None) -> None: ... send: Any connect: Any disconnect: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/_writer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/_writer.pyi index ab9092eb2..0502536f1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/_writer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/_writer.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete -def etree_write_cell(xf, worksheet, cell, styled: Incomplete | None = ...) -> None: ... -def lxml_write_cell(xf, worksheet, cell, styled: bool = ...) -> None: ... +def etree_write_cell(xf, worksheet, cell, styled: Incomplete | None = None) -> None: ... +def lxml_write_cell(xf, worksheet, cell, styled: bool = False) -> None: ... write_cell = lxml_write_cell write_cell = etree_write_cell diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/cell.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/cell.pyi index ce7c7df30..f8a90b74b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/cell.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/cell.pyi @@ -1,12 +1,21 @@ from _typeshed import Incomplete -from datetime import datetime +from datetime import date, datetime, time, timedelta +from decimal import Decimal +from typing import overload +from typing_extensions import TypeAlias +from openpyxl.cell.rich_text import CellRichText from openpyxl.comments.comments import Comment from openpyxl.styles.cell_style import StyleArray from openpyxl.styles.styleable import StyleableObject +from openpyxl.worksheet.formula import ArrayFormula, DataTableFormula from openpyxl.worksheet.hyperlink import Hyperlink from openpyxl.worksheet.worksheet import Worksheet +_CellValue: TypeAlias = ( # if numpy is installed also numpy bool and number types + bool | float | Decimal | str | CellRichText | date | time | timedelta | DataTableFormula | ArrayFormula +) + __docformat__: str TIME_TYPES: Incomplete TIME_FORMATS: Incomplete @@ -34,10 +43,10 @@ class Cell(StyleableObject): def __init__( self, worksheet: Worksheet, - row: int | None = ..., - column: int | None = ..., - value: str | float | datetime | None = ..., - style_array: StyleArray | None = ..., + row: int | None = None, + column: int | None = None, + value: str | float | datetime | None = None, + style_array: StyleArray | None = None, ) -> None: ... @property def coordinate(self) -> str: ... @@ -49,21 +58,24 @@ class Cell(StyleableObject): def encoding(self) -> str: ... @property def base_date(self) -> datetime: ... - def check_string(self, value: str): ... + @overload + def check_string(self, value: None) -> None: ... + @overload + def check_string(self, value: str | bytes) -> str: ... def check_error(self, value: object) -> str: ... @property - def value(self) -> str | float | datetime | None: ... + def value(self) -> _CellValue: ... @value.setter - def value(self, value: str | float | datetime | None) -> None: ... + def value(self, value: _CellValue | bytes | None) -> None: ... @property - def internal_value(self) -> str | float | datetime | None: ... + def internal_value(self) -> _CellValue: ... @property def hyperlink(self) -> Hyperlink | None: ... @hyperlink.setter def hyperlink(self, val: Hyperlink | str | None) -> None: ... @property def is_date(self) -> bool: ... - def offset(self, row: int = ..., column: int = ...) -> Cell: ... + def offset(self, row: int = 0, column: int = 0) -> Cell: ... @property def comment(self) -> Comment | None: ... @comment.setter @@ -75,9 +87,9 @@ class MergedCell(StyleableObject): hyperlink: Hyperlink | None row: int column: int - def __init__(self, worksheet: Worksheet, row: int | None = ..., column: int | None = ...) -> None: ... + def __init__(self, worksheet: Worksheet, row: int | None = None, column: int | None = None) -> None: ... @property def coordinate(self) -> str: ... value: str | float | int | datetime | None -def WriteOnlyCell(ws: Worksheet | None = ..., value: str | float | datetime | None = ...) -> Cell: ... +def WriteOnlyCell(ws: Worksheet | None = None, value: str | float | datetime | None = None) -> Cell: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/read_only.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/read_only.pyi index 970043444..2d1085d3c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/read_only.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/read_only.pyi @@ -5,7 +5,7 @@ class ReadOnlyCell: row: Incomplete column: Incomplete data_type: Incomplete - def __init__(self, sheet, row, column, value, data_type: str = ..., style_id: int = ...) -> None: ... + def __init__(self, sheet, row, column, value, data_type: str = "n", style_id: int = 0) -> None: ... def __eq__(self, other): ... def __ne__(self, other): ... # defined twice in the implementation diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi new file mode 100644 index 000000000..e084bdec8 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi @@ -0,0 +1,24 @@ +from collections.abc import Iterable +from typing import overload +from typing_extensions import Self + +from openpyxl.descriptors import Strict, String, Typed + +class TextBlock(Strict): + font: Typed + text: String + + def __init__(self, font: Typed, text: String) -> None: ... + def __eq__(self, other: TextBlock) -> bool: ... # type: ignore[override] + +class CellRichText(list[str | TextBlock]): + @overload + def __init__(self, __args: list[str] | list[TextBlock] | list[str | TextBlock] | tuple[str | TextBlock, ...]) -> None: ... + @overload + def __init__(self, *args: str | TextBlock) -> None: ... + @classmethod + def from_tree(cls, node) -> Self: ... + def __add__(self, arg: Iterable[str | TextBlock]) -> CellRichText: ... # type: ignore[override] + def append(self, arg: str | TextBlock) -> None: ... + def extend(self, arg: Iterable[str | TextBlock]) -> None: ... + def as_list(self) -> list[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi index 92771f02f..975890ee1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi @@ -9,7 +9,7 @@ class PhoneticProperties(Serialisable): type: Incomplete alignment: Incomplete def __init__( - self, fontId: Incomplete | None = ..., type: Incomplete | None = ..., alignment: Incomplete | None = ... + self, fontId: Incomplete | None = None, type: Incomplete | None = None, alignment: Incomplete | None = None ) -> None: ... class PhoneticText(Serialisable): @@ -18,7 +18,7 @@ class PhoneticText(Serialisable): eb: Incomplete t: Incomplete text: Incomplete - def __init__(self, sb: Incomplete | None = ..., eb: Incomplete | None = ..., t: Incomplete | None = ...) -> None: ... + def __init__(self, sb: Incomplete | None = None, eb: Incomplete | None = None, t: Incomplete | None = None) -> None: ... class InlineFont(Font): tagname: str @@ -40,21 +40,21 @@ class InlineFont(Font): __elements__: Incomplete def __init__( self, - rFont: Incomplete | None = ..., - charset: Incomplete | None = ..., - family: Incomplete | None = ..., - b: Incomplete | None = ..., - i: Incomplete | None = ..., - strike: Incomplete | None = ..., - outline: Incomplete | None = ..., - shadow: Incomplete | None = ..., - condense: Incomplete | None = ..., - extend: Incomplete | None = ..., - color: Incomplete | None = ..., - sz: Incomplete | None = ..., - u: Incomplete | None = ..., - vertAlign: Incomplete | None = ..., - scheme: Incomplete | None = ..., + rFont: Incomplete | None = None, + charset: Incomplete | None = None, + family: Incomplete | None = None, + b: Incomplete | None = None, + i: Incomplete | None = None, + strike: Incomplete | None = None, + outline: Incomplete | None = None, + shadow: Incomplete | None = None, + condense: Incomplete | None = None, + extend: Incomplete | None = None, + color: Incomplete | None = None, + sz: Incomplete | None = None, + u: Incomplete | None = None, + vertAlign: Incomplete | None = None, + scheme: Incomplete | None = None, ) -> None: ... class RichText(Serialisable): @@ -64,7 +64,7 @@ class RichText(Serialisable): t: Incomplete text: Incomplete __elements__: Incomplete - def __init__(self, rPr: Incomplete | None = ..., t: Incomplete | None = ...) -> None: ... + def __init__(self, rPr: Incomplete | None = None, t: Incomplete | None = None) -> None: ... class Text(Serialisable): tagname: str @@ -77,6 +77,6 @@ class Text(Serialisable): phoneticPr: Incomplete PhoneticProperties: Incomplete __elements__: Incomplete - def __init__(self, t: Incomplete | None = ..., r=..., rPh=..., phoneticPr: Incomplete | None = ...) -> None: ... + def __init__(self, t: Incomplete | None = None, r=(), rPh=(), phoneticPr: Incomplete | None = None) -> None: ... @property def content(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi index 174a349c6..24a5dab5b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi @@ -18,13 +18,13 @@ class View3D(Serialisable): __elements__: Incomplete def __init__( self, - rotX: int = ..., - hPercent: Incomplete | None = ..., - rotY: int = ..., - depthPercent: Incomplete | None = ..., - rAngAx: bool = ..., - perspective: Incomplete | None = ..., - extLst: Incomplete | None = ..., + rotX: int = 15, + hPercent: Incomplete | None = None, + rotY: int = 20, + depthPercent: Incomplete | None = None, + rAngAx: bool = True, + perspective: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class Surface(Serialisable): @@ -37,10 +37,10 @@ class Surface(Serialisable): __elements__: Incomplete def __init__( self, - thickness: Incomplete | None = ..., - spPr: Incomplete | None = ..., - pictureOptions: Incomplete | None = ..., - extLst: Incomplete | None = ..., + thickness: Incomplete | None = None, + spPr: Incomplete | None = None, + pictureOptions: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class _3DBase(Serialisable): @@ -51,8 +51,8 @@ class _3DBase(Serialisable): backWall: Incomplete def __init__( self, - view3D: Incomplete | None = ..., - floor: Incomplete | None = ..., - sideWall: Incomplete | None = ..., - backWall: Incomplete | None = ..., + view3D: Incomplete | None = None, + floor: Incomplete | None = None, + sideWall: Incomplete | None = None, + backWall: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi index fb9f38804..b4833baa9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi @@ -30,12 +30,12 @@ class ChartBase(Serialisable): pivotSource: Incomplete pivotFormats: Incomplete idx_base: int - def __init__(self, axId=..., **kw) -> None: ... + def __init__(self, axId=(), **kw) -> None: ... def __hash__(self) -> int: ... def __iadd__(self, other): ... - def to_tree(self, namespace: Incomplete | None = ..., tagname: Incomplete | None = ..., idx: Incomplete | None = ...): ... # type: ignore[override] + def to_tree(self, namespace: Incomplete | None = None, tagname: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] def set_categories(self, labels) -> None: ... - def add_data(self, data, from_rows: bool = ..., titles_from_data: bool = ...) -> None: ... + def add_data(self, data, from_rows: bool = False, titles_from_data: bool = False) -> None: ... def append(self, value) -> None: ... @property def path(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi index dc40da13a..3fb48ecbc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi @@ -13,11 +13,11 @@ class _AreaChartBase(ChartBase): __elements__: Incomplete def __init__( self, - grouping: str = ..., - varyColors: Incomplete | None = ..., - ser=..., - dLbls: Incomplete | None = ..., - dropLines: Incomplete | None = ..., + grouping: str = "standard", + varyColors: Incomplete | None = None, + ser=(), + dLbls: Incomplete | None = None, + dropLines: Incomplete | None = None, ) -> None: ... @property @abstractmethod @@ -34,7 +34,7 @@ class AreaChart(_AreaChartBase): y_axis: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, axId: Incomplete | None = ..., extLst: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, axId: Incomplete | None = None, extLst: Incomplete | None = None, **kw) -> None: ... class AreaChart3D(AreaChart): tagname: str @@ -48,4 +48,4 @@ class AreaChart3D(AreaChart): y_axis: Incomplete z_axis: Incomplete __elements__: Incomplete - def __init__(self, gapDepth: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, gapDepth: Incomplete | None = None, **kw) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi index 2bf227bc9..35b7e2463 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi @@ -7,7 +7,7 @@ class ChartLines(Serialisable): tagname: str spPr: Incomplete graphicalProperties: Incomplete - def __init__(self, spPr: Incomplete | None = ...) -> None: ... + def __init__(self, spPr: Incomplete | None = None) -> None: ... class Scaling(Serialisable): tagname: str @@ -19,11 +19,11 @@ class Scaling(Serialisable): __elements__: Incomplete def __init__( self, - logBase: Incomplete | None = ..., - orientation: str = ..., - max: Incomplete | None = ..., - min: Incomplete | None = ..., - extLst: Incomplete | None = ..., + logBase: Incomplete | None = None, + orientation: str = "minMax", + max: Incomplete | None = None, + min: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class _BaseAxis(Serialisable): @@ -49,22 +49,22 @@ class _BaseAxis(Serialisable): __elements__: Incomplete def __init__( self, - axId: Incomplete | None = ..., - scaling: Incomplete | None = ..., - delete: Incomplete | None = ..., - axPos: str = ..., - majorGridlines: Incomplete | None = ..., - minorGridlines: Incomplete | None = ..., - title: Incomplete | None = ..., - numFmt: Incomplete | None = ..., - majorTickMark: Incomplete | None = ..., - minorTickMark: Incomplete | None = ..., - tickLblPos: Incomplete | None = ..., - spPr: Incomplete | None = ..., - txPr: Incomplete | None = ..., - crossAx: Incomplete | None = ..., - crosses: Incomplete | None = ..., - crossesAt: Incomplete | None = ..., + axId: Incomplete | None = None, + scaling: Incomplete | None = None, + delete: Incomplete | None = None, + axPos: str = "l", + majorGridlines: Incomplete | None = None, + minorGridlines: Incomplete | None = None, + title: Incomplete | None = None, + numFmt: Incomplete | None = None, + majorTickMark: Incomplete | None = None, + minorTickMark: Incomplete | None = None, + tickLblPos: Incomplete | None = None, + spPr: Incomplete | None = None, + txPr: Incomplete | None = None, + crossAx: Incomplete | None = None, + crosses: Incomplete | None = None, + crossesAt: Incomplete | None = None, ) -> None: ... @property @abstractmethod @@ -82,10 +82,10 @@ class DisplayUnitsLabel(Serialisable): __elements__: Incomplete def __init__( self, - layout: Incomplete | None = ..., - tx: Incomplete | None = ..., - spPr: Incomplete | None = ..., - txPr: Incomplete | None = ..., + layout: Incomplete | None = None, + tx: Incomplete | None = None, + spPr: Incomplete | None = None, + txPr: Incomplete | None = None, ) -> None: ... class DisplayUnitsLabelList(Serialisable): @@ -97,10 +97,10 @@ class DisplayUnitsLabelList(Serialisable): __elements__: Incomplete def __init__( self, - custUnit: Incomplete | None = ..., - builtInUnit: Incomplete | None = ..., - dispUnitsLbl: Incomplete | None = ..., - extLst: Incomplete | None = ..., + custUnit: Incomplete | None = None, + builtInUnit: Incomplete | None = None, + dispUnitsLbl: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class NumericAxis(_BaseAxis): @@ -129,11 +129,11 @@ class NumericAxis(_BaseAxis): __elements__: Incomplete def __init__( self, - crossBetween: Incomplete | None = ..., - majorUnit: Incomplete | None = ..., - minorUnit: Incomplete | None = ..., - dispUnits: Incomplete | None = ..., - extLst: Incomplete | None = ..., + crossBetween: Incomplete | None = None, + majorUnit: Incomplete | None = None, + minorUnit: Incomplete | None = None, + dispUnits: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... @classmethod @@ -167,13 +167,13 @@ class TextAxis(_BaseAxis): __elements__: Incomplete def __init__( self, - auto: Incomplete | None = ..., - lblAlgn: Incomplete | None = ..., - lblOffset: int = ..., - tickLblSkip: Incomplete | None = ..., - tickMarkSkip: Incomplete | None = ..., - noMultiLvlLbl: Incomplete | None = ..., - extLst: Incomplete | None = ..., + auto: Incomplete | None = None, + lblAlgn: Incomplete | None = None, + lblOffset: int = 100, + tickLblSkip: Incomplete | None = None, + tickMarkSkip: Incomplete | None = None, + noMultiLvlLbl: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... @@ -206,14 +206,14 @@ class DateAxis(TextAxis): __elements__: Incomplete def __init__( self, - auto: Incomplete | None = ..., - lblOffset: Incomplete | None = ..., - baseTimeUnit: Incomplete | None = ..., - majorUnit: Incomplete | None = ..., - majorTimeUnit: Incomplete | None = ..., - minorUnit: Incomplete | None = ..., - minorTimeUnit: Incomplete | None = ..., - extLst: Incomplete | None = ..., + auto: Incomplete | None = None, + lblOffset: Incomplete | None = None, + baseTimeUnit: Incomplete | None = None, + majorUnit: Incomplete | None = None, + majorTimeUnit: Incomplete | None = None, + minorUnit: Incomplete | None = None, + minorTimeUnit: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... @@ -240,5 +240,9 @@ class SeriesAxis(_BaseAxis): extLst: Incomplete __elements__: Incomplete def __init__( - self, tickLblSkip: Incomplete | None = ..., tickMarkSkip: Incomplete | None = ..., extLst: Incomplete | None = ..., **kw + self, + tickLblSkip: Incomplete | None = None, + tickMarkSkip: Incomplete | None = None, + extLst: Incomplete | None = None, + **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi index 04cc873ce..f6ca9b733 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi @@ -15,11 +15,11 @@ class _BarChartBase(ChartBase): __elements__: Incomplete def __init__( self, - barDir: str = ..., - grouping: str = ..., - varyColors: Incomplete | None = ..., - ser=..., - dLbls: Incomplete | None = ..., + barDir: str = "col", + grouping: str = "clustered", + varyColors: Incomplete | None = None, + ser=(), + dLbls: Incomplete | None = None, **kw, ) -> None: ... @property @@ -43,10 +43,10 @@ class BarChart(_BarChartBase): legend: Incomplete def __init__( self, - gapWidth: int = ..., - overlap: Incomplete | None = ..., - serLines: Incomplete | None = ..., - extLst: Incomplete | None = ..., + gapWidth: int = 150, + overlap: Incomplete | None = None, + serLines: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... @@ -72,10 +72,10 @@ class BarChart3D(_BarChartBase, _3DBase): __elements__: Incomplete def __init__( self, - gapWidth: int = ..., - gapDepth: int = ..., - shape: Incomplete | None = ..., - serLines: Incomplete | None = ..., - extLst: Incomplete | None = ..., + gapWidth: int = 150, + gapDepth: int = 150, + shape: Incomplete | None = None, + serLines: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi index aea9771c1..e3f9130ef 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi @@ -18,13 +18,13 @@ class BubbleChart(ChartBase): __elements__: Incomplete def __init__( self, - varyColors: Incomplete | None = ..., - ser=..., - dLbls: Incomplete | None = ..., - bubble3D: Incomplete | None = ..., - bubbleScale: Incomplete | None = ..., - showNegBubbles: Incomplete | None = ..., - sizeRepresents: Incomplete | None = ..., - extLst: Incomplete | None = ..., + varyColors: Incomplete | None = None, + ser=(), + dLbls: Incomplete | None = None, + bubble3D: Incomplete | None = None, + bubbleScale: Incomplete | None = None, + showNegBubbles: Incomplete | None = None, + sizeRepresents: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi index 5d0628534..4b0e1aac8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi @@ -20,19 +20,19 @@ class ChartContainer(Serialisable): __elements__: Incomplete def __init__( self, - title: Incomplete | None = ..., - autoTitleDeleted: Incomplete | None = ..., - pivotFmts=..., - view3D: Incomplete | None = ..., - floor: Incomplete | None = ..., - sideWall: Incomplete | None = ..., - backWall: Incomplete | None = ..., - plotArea: Incomplete | None = ..., - legend: Incomplete | None = ..., - plotVisOnly: bool = ..., - dispBlanksAs: str = ..., - showDLblsOverMax: Incomplete | None = ..., - extLst: Incomplete | None = ..., + title: Incomplete | None = None, + autoTitleDeleted: Incomplete | None = None, + pivotFmts=(), + view3D: Incomplete | None = None, + floor: Incomplete | None = None, + sideWall: Incomplete | None = None, + backWall: Incomplete | None = None, + plotArea: Incomplete | None = None, + legend: Incomplete | None = None, + plotVisOnly: bool = True, + dispBlanksAs: str = "gap", + showDLblsOverMax: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class Protection(Serialisable): @@ -45,18 +45,18 @@ class Protection(Serialisable): __elements__: Incomplete def __init__( self, - chartObject: Incomplete | None = ..., - data: Incomplete | None = ..., - formatting: Incomplete | None = ..., - selection: Incomplete | None = ..., - userInterface: Incomplete | None = ..., + chartObject: Incomplete | None = None, + data: Incomplete | None = None, + formatting: Incomplete | None = None, + selection: Incomplete | None = None, + userInterface: Incomplete | None = None, ) -> None: ... class ExternalData(Serialisable): tagname: str autoUpdate: Incomplete id: Incomplete - def __init__(self, autoUpdate: Incomplete | None = ..., id: Incomplete | None = ...) -> None: ... + def __init__(self, autoUpdate: Incomplete | None = None, id: Incomplete | None = None) -> None: ... class ChartSpace(Serialisable): tagname: str @@ -79,19 +79,19 @@ class ChartSpace(Serialisable): __elements__: Incomplete def __init__( self, - date1904: Incomplete | None = ..., - lang: Incomplete | None = ..., - roundedCorners: Incomplete | None = ..., - style: Incomplete | None = ..., - clrMapOvr: Incomplete | None = ..., - pivotSource: Incomplete | None = ..., - protection: Incomplete | None = ..., - chart: Incomplete | None = ..., - spPr: Incomplete | None = ..., - txPr: Incomplete | None = ..., - externalData: Incomplete | None = ..., - printSettings: Incomplete | None = ..., - userShapes: Incomplete | None = ..., - extLst: Incomplete | None = ..., + date1904: Incomplete | None = None, + lang: Incomplete | None = None, + roundedCorners: Incomplete | None = None, + style: Incomplete | None = None, + clrMapOvr: Incomplete | None = None, + pivotSource: Incomplete | None = None, + protection: Incomplete | None = None, + chart: Incomplete | None = None, + spPr: Incomplete | None = None, + txPr: Incomplete | None = None, + externalData: Incomplete | None = None, + printSettings: Incomplete | None = None, + userShapes: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... - def to_tree(self, tagname: Incomplete | None = ..., idx: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi index b71a03dce..1210fb47a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi @@ -6,7 +6,7 @@ from openpyxl.descriptors.serialisable import Serialisable class NumFmt(Serialisable): # type: ignore[misc] formatCode: Incomplete sourceLinked: Incomplete - def __init__(self, formatCode: Incomplete | None = ..., sourceLinked: bool = ...) -> None: ... + def __init__(self, formatCode: Incomplete | None = None, sourceLinked: bool = False) -> None: ... class NumberValueDescriptor(NestedText): allow_none: bool @@ -17,7 +17,9 @@ class NumVal(Serialisable): # type: ignore[misc] idx: Incomplete formatCode: Incomplete v: Incomplete - def __init__(self, idx: Incomplete | None = ..., formatCode: Incomplete | None = ..., v: Incomplete | None = ...) -> None: ... + def __init__( + self, idx: Incomplete | None = None, formatCode: Incomplete | None = None, v: Incomplete | None = None + ) -> None: ... class NumData(Serialisable): # type: ignore[misc] formatCode: Incomplete @@ -26,7 +28,7 @@ class NumData(Serialisable): # type: ignore[misc] extLst: Incomplete __elements__: Incomplete def __init__( - self, formatCode: Incomplete | None = ..., ptCount: Incomplete | None = ..., pt=..., extLst: Incomplete | None = ... + self, formatCode: Incomplete | None = None, ptCount: Incomplete | None = None, pt=(), extLst: Incomplete | None = None ) -> None: ... class NumRef(Serialisable): # type: ignore[misc] @@ -36,14 +38,14 @@ class NumRef(Serialisable): # type: ignore[misc] extLst: Incomplete __elements__: Incomplete def __init__( - self, f: Incomplete | None = ..., numCache: Incomplete | None = ..., extLst: Incomplete | None = ... + self, f: Incomplete | None = None, numCache: Incomplete | None = None, extLst: Incomplete | None = None ) -> None: ... class StrVal(Serialisable): tagname: str idx: Incomplete v: Incomplete - def __init__(self, idx: int = ..., v: Incomplete | None = ...) -> None: ... + def __init__(self, idx: int = 0, v: Incomplete | None = None) -> None: ... class StrData(Serialisable): tagname: str @@ -51,7 +53,7 @@ class StrData(Serialisable): pt: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, ptCount: Incomplete | None = ..., pt=..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, ptCount: Incomplete | None = None, pt=(), extLst: Incomplete | None = None) -> None: ... class StrRef(Serialisable): tagname: str @@ -60,19 +62,19 @@ class StrRef(Serialisable): extLst: Incomplete __elements__: Incomplete def __init__( - self, f: Incomplete | None = ..., strCache: Incomplete | None = ..., extLst: Incomplete | None = ... + self, f: Incomplete | None = None, strCache: Incomplete | None = None, extLst: Incomplete | None = None ) -> None: ... class NumDataSource(Serialisable): # type: ignore[misc] numRef: Incomplete numLit: Incomplete - def __init__(self, numRef: Incomplete | None = ..., numLit: Incomplete | None = ...) -> None: ... + def __init__(self, numRef: Incomplete | None = None, numLit: Incomplete | None = None) -> None: ... class Level(Serialisable): tagname: str pt: Incomplete __elements__: Incomplete - def __init__(self, pt=...) -> None: ... + def __init__(self, pt=()) -> None: ... class MultiLevelStrData(Serialisable): tagname: str @@ -80,7 +82,7 @@ class MultiLevelStrData(Serialisable): lvl: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, ptCount: Incomplete | None = ..., lvl=..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, ptCount: Incomplete | None = None, lvl=(), extLst: Incomplete | None = None) -> None: ... class MultiLevelStrRef(Serialisable): tagname: str @@ -89,7 +91,7 @@ class MultiLevelStrRef(Serialisable): extLst: Incomplete __elements__: Incomplete def __init__( - self, f: Incomplete | None = ..., multiLvlStrCache: Incomplete | None = ..., extLst: Incomplete | None = ... + self, f: Incomplete | None = None, multiLvlStrCache: Incomplete | None = None, extLst: Incomplete | None = None ) -> None: ... class AxDataSource(Serialisable): @@ -101,9 +103,9 @@ class AxDataSource(Serialisable): multiLvlStrRef: Incomplete def __init__( self, - numRef: Incomplete | None = ..., - numLit: Incomplete | None = ..., - strRef: Incomplete | None = ..., - strLit: Incomplete | None = ..., - multiLvlStrRef: Incomplete | None = ..., + numRef: Incomplete | None = None, + numLit: Incomplete | None = None, + strRef: Incomplete | None = None, + strLit: Incomplete | None = None, + multiLvlStrRef: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi index 102fd176b..ae21656be 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi @@ -20,13 +20,13 @@ class ErrorBars(Serialisable): __elements__: Incomplete def __init__( self, - errDir: Incomplete | None = ..., - errBarType: str = ..., - errValType: str = ..., - noEndCap: Incomplete | None = ..., - plus: Incomplete | None = ..., - minus: Incomplete | None = ..., - val: Incomplete | None = ..., - spPr: Incomplete | None = ..., - extLst: Incomplete | None = ..., + errDir: Incomplete | None = None, + errBarType: str = "both", + errValType: str = "fixedVal", + noEndCap: Incomplete | None = None, + plus: Incomplete | None = None, + minus: Incomplete | None = None, + val: Incomplete | None = None, + spPr: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi index b5bb682f5..520f48e3c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi @@ -23,19 +23,19 @@ class _DataLabelBase(Serialisable): __elements__: Incomplete def __init__( self, - numFmt: Incomplete | None = ..., - spPr: Incomplete | None = ..., - txPr: Incomplete | None = ..., - dLblPos: Incomplete | None = ..., - showLegendKey: Incomplete | None = ..., - showVal: Incomplete | None = ..., - showCatName: Incomplete | None = ..., - showSerName: Incomplete | None = ..., - showPercent: Incomplete | None = ..., - showBubbleSize: Incomplete | None = ..., - showLeaderLines: Incomplete | None = ..., - separator: Incomplete | None = ..., - extLst: Incomplete | None = ..., + numFmt: Incomplete | None = None, + spPr: Incomplete | None = None, + txPr: Incomplete | None = None, + dLblPos: Incomplete | None = None, + showLegendKey: Incomplete | None = None, + showVal: Incomplete | None = None, + showCatName: Incomplete | None = None, + showSerName: Incomplete | None = None, + showPercent: Incomplete | None = None, + showBubbleSize: Incomplete | None = None, + showLeaderLines: Incomplete | None = None, + separator: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... @property @abstractmethod @@ -58,7 +58,7 @@ class DataLabel(_DataLabelBase): separator: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, idx: int = ..., **kw) -> None: ... + def __init__(self, idx: int = 0, **kw) -> None: ... class DataLabelList(_DataLabelBase): tagname: str @@ -78,4 +78,4 @@ class DataLabelList(_DataLabelBase): separator: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, dLbl=..., delete: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, dLbl=(), delete: Incomplete | None = None, **kw) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi index 1bb85f85e..dc6fcc14f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi @@ -19,16 +19,16 @@ class ManualLayout(Serialisable): __elements__: Incomplete def __init__( self, - layoutTarget: Incomplete | None = ..., - xMode: Incomplete | None = ..., - yMode: Incomplete | None = ..., - wMode: str = ..., - hMode: str = ..., - x: Incomplete | None = ..., - y: Incomplete | None = ..., - w: Incomplete | None = ..., - h: Incomplete | None = ..., - extLst: Incomplete | None = ..., + layoutTarget: Incomplete | None = None, + xMode: Incomplete | None = None, + yMode: Incomplete | None = None, + wMode: str = "factor", + hMode: str = "factor", + x: Incomplete | None = None, + y: Incomplete | None = None, + w: Incomplete | None = None, + h: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class Layout(Serialisable): @@ -36,4 +36,4 @@ class Layout(Serialisable): manualLayout: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, manualLayout: Incomplete | None = ..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, manualLayout: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi index 42e7543e0..12c95b9a5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi @@ -10,7 +10,7 @@ class LegendEntry(Serialisable): extLst: Incomplete __elements__: Incomplete def __init__( - self, idx: int = ..., delete: bool = ..., txPr: Incomplete | None = ..., extLst: Incomplete | None = ... + self, idx: int = 0, delete: bool = False, txPr: Incomplete | None = None, extLst: Incomplete | None = None ) -> None: ... class Legend(Serialisable): @@ -28,11 +28,11 @@ class Legend(Serialisable): __elements__: Incomplete def __init__( self, - legendPos: str = ..., - legendEntry=..., - layout: Incomplete | None = ..., - overlay: Incomplete | None = ..., - spPr: Incomplete | None = ..., - txPr: Incomplete | None = ..., - extLst: Incomplete | None = ..., + legendPos: str = "r", + legendEntry=(), + layout: Incomplete | None = None, + overlay: Incomplete | None = None, + spPr: Incomplete | None = None, + txPr: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi index 4df38afdc..e15820a74 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi @@ -13,11 +13,11 @@ class _LineChartBase(ChartBase): __elements__: Incomplete def __init__( self, - grouping: str = ..., - varyColors: Incomplete | None = ..., - ser=..., - dLbls: Incomplete | None = ..., - dropLines: Incomplete | None = ..., + grouping: str = "standard", + varyColors: Incomplete | None = None, + ser=(), + dLbls: Incomplete | None = None, + dropLines: Incomplete | None = None, **kw, ) -> None: ... @property @@ -41,11 +41,11 @@ class LineChart(_LineChartBase): __elements__: Incomplete def __init__( self, - hiLowLines: Incomplete | None = ..., - upDownBars: Incomplete | None = ..., - marker: Incomplete | None = ..., - smooth: Incomplete | None = ..., - extLst: Incomplete | None = ..., + hiLowLines: Incomplete | None = None, + upDownBars: Incomplete | None = None, + marker: Incomplete | None = None, + smooth: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... @@ -68,10 +68,10 @@ class LineChart3D(_LineChartBase): __elements__: Incomplete def __init__( self, - gapDepth: Incomplete | None = ..., - hiLowLines: Incomplete | None = ..., - upDownBars: Incomplete | None = ..., - marker: Incomplete | None = ..., - smooth: Incomplete | None = ..., + gapDepth: Incomplete | None = None, + hiLowLines: Incomplete | None = None, + upDownBars: Incomplete | None = None, + marker: Incomplete | None = None, + smooth: Incomplete | None = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi index 56825794a..07ff78671 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi @@ -12,10 +12,10 @@ class Marker(Serialisable): __elements__: Incomplete def __init__( self, - symbol: Incomplete | None = ..., - size: Incomplete | None = ..., - spPr: Incomplete | None = ..., - extLst: Incomplete | None = ..., + symbol: Incomplete | None = None, + size: Incomplete | None = None, + spPr: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class DataPoint(Serialisable): @@ -32,12 +32,12 @@ class DataPoint(Serialisable): __elements__: Incomplete def __init__( self, - idx: Incomplete | None = ..., - invertIfNegative: Incomplete | None = ..., - marker: Incomplete | None = ..., - bubble3D: Incomplete | None = ..., - explosion: Incomplete | None = ..., - spPr: Incomplete | None = ..., - pictureOptions: Incomplete | None = ..., - extLst: Incomplete | None = ..., + idx: Incomplete | None = None, + invertIfNegative: Incomplete | None = None, + marker: Incomplete | None = None, + bubble3D: Incomplete | None = None, + explosion: Incomplete | None = None, + spPr: Incomplete | None = None, + pictureOptions: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi index 5ec116071..b5638bc00 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi @@ -12,9 +12,9 @@ class PictureOptions(Serialisable): __elements__: Incomplete def __init__( self, - applyToFront: Incomplete | None = ..., - applyToSides: Incomplete | None = ..., - applyToEnd: Incomplete | None = ..., - pictureFormat: Incomplete | None = ..., - pictureStackUnit: Incomplete | None = ..., + applyToFront: Incomplete | None = None, + applyToSides: Incomplete | None = None, + applyToEnd: Incomplete | None = None, + pictureFormat: Incomplete | None = None, + pictureStackUnit: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi index 839e60d26..392c060e3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi @@ -11,7 +11,7 @@ class _PieChartBase(ChartBase): dLbls: Incomplete dataLabels: Incomplete __elements__: Incomplete - def __init__(self, varyColors: bool = ..., ser=..., dLbls: Incomplete | None = ...) -> None: ... + def __init__(self, varyColors: bool = True, ser=(), dLbls: Incomplete | None = None) -> None: ... @property @abstractmethod def tagname(self) -> str: ... @@ -24,7 +24,7 @@ class PieChart(_PieChartBase): firstSliceAng: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, firstSliceAng: int = ..., extLst: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, firstSliceAng: int = 0, extLst: Incomplete | None = None, **kw) -> None: ... class PieChart3D(_PieChartBase): tagname: str @@ -43,13 +43,13 @@ class DoughnutChart(_PieChartBase): holeSize: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, firstSliceAng: int = ..., holeSize: int = ..., extLst: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, firstSliceAng: int = 0, holeSize: int = 10, extLst: Incomplete | None = None, **kw) -> None: ... class CustomSplit(Serialisable): tagname: str secondPiePt: Incomplete __elements__: Incomplete - def __init__(self, secondPiePt=...) -> None: ... + def __init__(self, secondPiePt=()) -> None: ... class ProjectedPieChart(_PieChartBase): tagname: str @@ -69,13 +69,13 @@ class ProjectedPieChart(_PieChartBase): __elements__: Incomplete def __init__( self, - ofPieType: str = ..., - gapWidth: Incomplete | None = ..., - splitType: str = ..., - splitPos: Incomplete | None = ..., - custSplit: Incomplete | None = ..., - secondPieSize: int = ..., - serLines: Incomplete | None = ..., - extLst: Incomplete | None = ..., + ofPieType: str = "pie", + gapWidth: Incomplete | None = None, + splitType: str = "auto", + splitPos: Incomplete | None = None, + custSplit: Incomplete | None = None, + secondPieSize: int = 75, + serLines: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi index e5e86d237..f0ebd05bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi @@ -9,7 +9,7 @@ class PivotSource(Serialisable): extLst: Incomplete __elements__: Incomplete def __init__( - self, name: Incomplete | None = ..., fmtId: Incomplete | None = ..., extLst: Incomplete | None = ... + self, name: Incomplete | None = None, fmtId: Incomplete | None = None, extLst: Incomplete | None = None ) -> None: ... class PivotFormat(Serialisable): @@ -26,10 +26,10 @@ class PivotFormat(Serialisable): __elements__: Incomplete def __init__( self, - idx: int = ..., - spPr: Incomplete | None = ..., - txPr: Incomplete | None = ..., - marker: Incomplete | None = ..., - dLbl: Incomplete | None = ..., - extLst: Incomplete | None = ..., + idx: int = 0, + spPr: Incomplete | None = None, + txPr: Incomplete | None = None, + marker: Incomplete | None = None, + dLbl: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi index 2a9f7f31f..6b23d92bc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi @@ -15,13 +15,13 @@ class DataTable(Serialisable): __elements__: Incomplete def __init__( self, - showHorzBorder: Incomplete | None = ..., - showVertBorder: Incomplete | None = ..., - showOutline: Incomplete | None = ..., - showKeys: Incomplete | None = ..., - spPr: Incomplete | None = ..., - txPr: Incomplete | None = ..., - extLst: Incomplete | None = ..., + showHorzBorder: Incomplete | None = None, + showVertBorder: Incomplete | None = None, + showOutline: Incomplete | None = None, + showKeys: Incomplete | None = None, + spPr: Incomplete | None = None, + txPr: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class PlotArea(Serialisable): @@ -54,13 +54,13 @@ class PlotArea(Serialisable): __elements__: Incomplete def __init__( self, - layout: Incomplete | None = ..., - dTable: Incomplete | None = ..., - spPr: Incomplete | None = ..., - _charts=..., - _axes=..., - extLst: Incomplete | None = ..., + layout: Incomplete | None = None, + dTable: Incomplete | None = None, + spPr: Incomplete | None = None, + _charts=(), + _axes=(), + extLst: Incomplete | None = None, ) -> None: ... - def to_tree(self, tagname: Incomplete | None = ..., idx: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... @classmethod def from_tree(cls, node): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi index 3a1effc45..5fb000ca7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi @@ -15,7 +15,7 @@ class PageMargins(Serialisable): header: Incomplete footer: Incomplete def __init__( - self, l: float = ..., r: float = ..., t: int = ..., b: int = ..., header: float = ..., footer: float = ... + self, l: float = 0.75, r: float = 0.75, t: int = 1, b: int = 1, header: float = 0.5, footer: float = 0.5 ) -> None: ... class PrintSettings(Serialisable): @@ -25,5 +25,5 @@ class PrintSettings(Serialisable): pageSetup: Incomplete __elements__: Incomplete def __init__( - self, headerFooter: Incomplete | None = ..., pageMargins: Incomplete | None = ..., pageSetup: Incomplete | None = ... + self, headerFooter: Incomplete | None = None, pageMargins: Incomplete | None = None, pageSetup: Incomplete | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi index 21d1ea668..a32595079 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi @@ -16,10 +16,10 @@ class RadarChart(ChartBase): __elements__: Incomplete def __init__( self, - radarStyle: str = ..., - varyColors: Incomplete | None = ..., - ser=..., - dLbls: Incomplete | None = ..., - extLst: Incomplete | None = ..., + radarStyle: str = "standard", + varyColors: Incomplete | None = None, + ser=(), + dLbls: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/reference.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/reference.pyi index b27c3d2aa..10f0473d1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/reference.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/reference.pyi @@ -16,12 +16,12 @@ class Reference(Strict): worksheet: Incomplete def __init__( self, - worksheet: Incomplete | None = ..., - min_col: Incomplete | None = ..., - min_row: Incomplete | None = ..., - max_col: Incomplete | None = ..., - max_row: Incomplete | None = ..., - range_string: Incomplete | None = ..., + worksheet: Incomplete | None = None, + min_col: Incomplete | None = None, + min_row: Incomplete | None = None, + max_col: Incomplete | None = None, + max_row: Incomplete | None = None, + range_string: Incomplete | None = None, ) -> None: ... def __len__(self) -> int: ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi index 7d2936456..b0a7e49e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi @@ -15,10 +15,10 @@ class ScatterChart(ChartBase): __elements__: Incomplete def __init__( self, - scatterStyle: Incomplete | None = ..., - varyColors: Incomplete | None = ..., - ser=..., - dLbls: Incomplete | None = ..., - extLst: Incomplete | None = ..., + scatterStyle: Incomplete | None = None, + varyColors: Incomplete | None = None, + ser=(), + dLbls: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi index 06167b63c..5316058bc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi @@ -10,7 +10,7 @@ class SeriesLabel(Serialisable): v: Incomplete value: Incomplete __elements__: Incomplete - def __init__(self, strRef: Incomplete | None = ..., v: Incomplete | None = ...) -> None: ... + def __init__(self, strRef: Incomplete | None = None, v: Incomplete | None = None) -> None: ... class Series(Serialisable): tagname: str @@ -44,29 +44,29 @@ class Series(Serialisable): __elements__: Incomplete def __init__( self, - idx: int = ..., - order: int = ..., - tx: Incomplete | None = ..., - spPr: Incomplete | None = ..., - pictureOptions: Incomplete | None = ..., - dPt=..., - dLbls: Incomplete | None = ..., - trendline: Incomplete | None = ..., - errBars: Incomplete | None = ..., - cat: Incomplete | None = ..., - val: Incomplete | None = ..., - invertIfNegative: Incomplete | None = ..., - shape: Incomplete | None = ..., - xVal: Incomplete | None = ..., - yVal: Incomplete | None = ..., - bubbleSize: Incomplete | None = ..., - bubble3D: Incomplete | None = ..., - marker: Incomplete | None = ..., - smooth: Incomplete | None = ..., - explosion: Incomplete | None = ..., - extLst: Incomplete | None = ..., + idx: int = 0, + order: int = 0, + tx: Incomplete | None = None, + spPr: Incomplete | None = None, + pictureOptions: Incomplete | None = None, + dPt=(), + dLbls: Incomplete | None = None, + trendline: Incomplete | None = None, + errBars: Incomplete | None = None, + cat: Incomplete | None = None, + val: Incomplete | None = None, + invertIfNegative: Incomplete | None = None, + shape: Incomplete | None = None, + xVal: Incomplete | None = None, + yVal: Incomplete | None = None, + bubbleSize: Incomplete | None = None, + bubble3D: Incomplete | None = None, + marker: Incomplete | None = None, + smooth: Incomplete | None = None, + explosion: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... - def to_tree(self, tagname: Incomplete | None = ..., idx: Incomplete | None = ...): ... # type: ignore[override] + def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] class XYSeries(Series): idx: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series_factory.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series_factory.pyi index 53243ea23..a23b00606 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series_factory.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series_factory.pyi @@ -2,8 +2,8 @@ from _typeshed import Incomplete def SeriesFactory( values, - xvalues: Incomplete | None = ..., - zvalues: Incomplete | None = ..., - title: Incomplete | None = ..., - title_from_data: bool = ..., + xvalues: Incomplete | None = None, + zvalues: Incomplete | None = None, + title: Incomplete | None = None, + title_from_data: bool = False, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi index debb37a7c..423b76933 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi @@ -22,16 +22,16 @@ class GraphicalProperties(Serialisable): __elements__: Incomplete def __init__( self, - bwMode: Incomplete | None = ..., - xfrm: Incomplete | None = ..., - noFill: Incomplete | None = ..., - solidFill: Incomplete | None = ..., - gradFill: Incomplete | None = ..., - pattFill: Incomplete | None = ..., - ln: Incomplete | None = ..., - scene3d: Incomplete | None = ..., - custGeom: Incomplete | None = ..., - prstGeom: Incomplete | None = ..., - sp3d: Incomplete | None = ..., - extLst: Incomplete | None = ..., + bwMode: Incomplete | None = None, + xfrm: Incomplete | None = None, + noFill: Incomplete | None = None, + solidFill: Incomplete | None = None, + gradFill: Incomplete | None = None, + pattFill: Incomplete | None = None, + ln: Incomplete | None = None, + scene3d: Incomplete | None = None, + custGeom: Incomplete | None = None, + prstGeom: Incomplete | None = None, + sp3d: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi index 41318473c..1b72ff42b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi @@ -16,11 +16,11 @@ class StockChart(ChartBase): __elements__: Incomplete def __init__( self, - ser=..., - dLbls: Incomplete | None = ..., - dropLines: Incomplete | None = ..., - hiLowLines: Incomplete | None = ..., - upDownBars: Incomplete | None = ..., - extLst: Incomplete | None = ..., + ser=(), + dLbls: Incomplete | None = None, + dropLines: Incomplete | None = None, + hiLowLines: Incomplete | None = None, + upDownBars: Incomplete | None = None, + extLst: Incomplete | None = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi index 69734122a..bc32897e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi @@ -12,20 +12,20 @@ class BandFormat(Serialisable): spPr: Incomplete graphicalProperties: Incomplete __elements__: Incomplete - def __init__(self, idx: int = ..., spPr: Incomplete | None = ...) -> None: ... + def __init__(self, idx: int = 0, spPr: Incomplete | None = None) -> None: ... class BandFormatList(Serialisable): tagname: str bandFmt: Incomplete __elements__: Incomplete - def __init__(self, bandFmt=...) -> None: ... + def __init__(self, bandFmt=()) -> None: ... class _SurfaceChartBase(ChartBase): wireframe: Incomplete ser: Incomplete bandFmts: Incomplete __elements__: Incomplete - def __init__(self, wireframe: Incomplete | None = ..., ser=..., bandFmts: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, wireframe: Incomplete | None = None, ser=(), bandFmts: Incomplete | None = None, **kw) -> None: ... @property @abstractmethod def tagname(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi index c4420217d..5244666e7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi @@ -11,7 +11,7 @@ class RichText(Serialisable): paragraphs: Incomplete __elements__: Incomplete def __init__( - self, bodyPr: Incomplete | None = ..., lstStyle: Incomplete | None = ..., p: Incomplete | None = ... + self, bodyPr: Incomplete | None = None, lstStyle: Incomplete | None = None, p: Incomplete | None = None ) -> None: ... class Text(Serialisable): @@ -19,5 +19,5 @@ class Text(Serialisable): strRef: Incomplete rich: Incomplete __elements__: Incomplete - def __init__(self, strRef: Incomplete | None = ..., rich: Incomplete | None = ...) -> None: ... - def to_tree(self, tagname: Incomplete | None = ..., idx: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def __init__(self, strRef: Incomplete | None = None, rich: Incomplete | None = None) -> None: ... + def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi index d12c2900c..e7772ee2b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi @@ -17,12 +17,12 @@ class Title(Serialisable): __elements__: Incomplete def __init__( self, - tx: Incomplete | None = ..., - layout: Incomplete | None = ..., - overlay: Incomplete | None = ..., - spPr: Incomplete | None = ..., - txPr: Incomplete | None = ..., - extLst: Incomplete | None = ..., + tx: Incomplete | None = None, + layout: Incomplete | None = None, + overlay: Incomplete | None = None, + spPr: Incomplete | None = None, + txPr: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... def title_maker(text): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi index 5e5e21a83..2c7f1f4e7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi @@ -15,12 +15,12 @@ class TrendlineLabel(Serialisable): __elements__: Incomplete def __init__( self, - layout: Incomplete | None = ..., - tx: Incomplete | None = ..., - numFmt: Incomplete | None = ..., - spPr: Incomplete | None = ..., - txPr: Incomplete | None = ..., - extLst: Incomplete | None = ..., + layout: Incomplete | None = None, + tx: Incomplete | None = None, + numFmt: Incomplete | None = None, + spPr: Incomplete | None = None, + txPr: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class Trendline(Serialisable): @@ -41,16 +41,16 @@ class Trendline(Serialisable): __elements__: Incomplete def __init__( self, - name: Incomplete | None = ..., - spPr: Incomplete | None = ..., - trendlineType: str = ..., - order: Incomplete | None = ..., - period: Incomplete | None = ..., - forward: Incomplete | None = ..., - backward: Incomplete | None = ..., - intercept: Incomplete | None = ..., - dispRSqr: Incomplete | None = ..., - dispEq: Incomplete | None = ..., - trendlineLbl: Incomplete | None = ..., - extLst: Incomplete | None = ..., + name: Incomplete | None = None, + spPr: Incomplete | None = None, + trendlineType: str = "linear", + order: Incomplete | None = None, + period: Incomplete | None = None, + forward: Incomplete | None = None, + backward: Incomplete | None = None, + intercept: Incomplete | None = None, + dispRSqr: Incomplete | None = None, + dispEq: Incomplete | None = None, + trendlineLbl: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi index 89e21c27e..864cfa874 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi @@ -11,8 +11,8 @@ class UpDownBars(Serialisable): __elements__: Incomplete def __init__( self, - gapWidth: int = ..., - upBars: Incomplete | None = ..., - downBars: Incomplete | None = ..., - extLst: Incomplete | None = ..., + gapWidth: int = 150, + upBars: Incomplete | None = None, + downBars: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi index 9423f1cce..b2713e99a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi @@ -24,21 +24,21 @@ class Chartsheet(_WorkbookChild, Serialisable): __attrs__: Incomplete def __init__( self, - sheetPr: Incomplete | None = ..., - sheetViews: Incomplete | None = ..., - sheetProtection: Incomplete | None = ..., - customSheetViews: Incomplete | None = ..., - pageMargins: Incomplete | None = ..., - pageSetup: Incomplete | None = ..., - headerFooter: Incomplete | None = ..., - drawing: Incomplete | None = ..., - drawingHF: Incomplete | None = ..., - picture: Incomplete | None = ..., - webPublishItems: Incomplete | None = ..., - extLst: Incomplete | None = ..., - parent: Incomplete | None = ..., - title: str = ..., - sheet_state: str = ..., + sheetPr: Incomplete | None = None, + sheetViews: Incomplete | None = None, + sheetProtection: Incomplete | None = None, + customSheetViews: Incomplete | None = None, + pageMargins: Incomplete | None = None, + pageSetup: Incomplete | None = None, + headerFooter: Incomplete | None = None, + drawing: Incomplete | None = None, + drawingHF: Incomplete | None = None, + picture: Incomplete | None = None, + webPublishItems: Incomplete | None = None, + extLst: Incomplete | None = None, + parent: Incomplete | None = None, + title: str = "", + sheet_state: str = "visible", ) -> None: ... def add_chart(self, chart) -> None: ... def to_tree(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi index 88a26bd8b..00cefe838 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi @@ -14,17 +14,17 @@ class CustomChartsheetView(Serialisable): __elements__: Incomplete def __init__( self, - guid: Incomplete | None = ..., - scale: Incomplete | None = ..., - state: str = ..., - zoomToFit: Incomplete | None = ..., - pageMargins: Incomplete | None = ..., - pageSetup: Incomplete | None = ..., - headerFooter: Incomplete | None = ..., + guid: Incomplete | None = None, + scale: Incomplete | None = None, + state: str = "visible", + zoomToFit: Incomplete | None = None, + pageMargins: Incomplete | None = None, + pageSetup: Incomplete | None = None, + headerFooter: Incomplete | None = None, ) -> None: ... class CustomChartsheetViews(Serialisable): tagname: str customSheetView: Incomplete __elements__: Incomplete - def __init__(self, customSheetView: Incomplete | None = ...) -> None: ... + def __init__(self, customSheetView: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi index ecfa22fc4..818da9456 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi @@ -9,5 +9,5 @@ class ChartsheetProperties(Serialisable): tabColor: Incomplete __elements__: Incomplete def __init__( - self, published: Incomplete | None = ..., codeName: Incomplete | None = ..., tabColor: Incomplete | None = ... + self, published: Incomplete | None = None, codeName: Incomplete | None = None, tabColor: Incomplete | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi index 1565a57d9..8b6220b89 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi @@ -15,11 +15,11 @@ class ChartsheetProtection(Serialisable, _Protected): password: Incomplete def __init__( self, - content: Incomplete | None = ..., - objects: Incomplete | None = ..., - hashValue: Incomplete | None = ..., - spinCount: Incomplete | None = ..., - saltValue: Incomplete | None = ..., - algorithmName: Incomplete | None = ..., - password: Incomplete | None = ..., + content: Incomplete | None = None, + objects: Incomplete | None = None, + hashValue: Incomplete | None = None, + spinCount: Incomplete | None = None, + saltValue: Incomplete | None = None, + algorithmName: Incomplete | None = None, + password: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi index deb8575ec..1e1064060 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi @@ -14,14 +14,14 @@ class WebPublishItem(Serialisable): autoRepublish: Incomplete def __init__( self, - id: Incomplete | None = ..., - divId: Incomplete | None = ..., - sourceType: Incomplete | None = ..., - sourceRef: Incomplete | None = ..., - sourceObject: Incomplete | None = ..., - destinationFile: Incomplete | None = ..., - title: Incomplete | None = ..., - autoRepublish: Incomplete | None = ..., + id: Incomplete | None = None, + divId: Incomplete | None = None, + sourceType: Incomplete | None = None, + sourceRef: Incomplete | None = None, + sourceObject: Incomplete | None = None, + destinationFile: Incomplete | None = None, + title: Incomplete | None = None, + autoRepublish: Incomplete | None = None, ) -> None: ... class WebPublishItems(Serialisable): @@ -29,4 +29,4 @@ class WebPublishItems(Serialisable): count: Incomplete webPublishItem: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., webPublishItem: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, webPublishItem: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi index 5c4cf80d6..903c5f2fb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi @@ -47,23 +47,23 @@ class DrawingHF(Serialisable): rightFooterFirstPage: Incomplete def __init__( self, - id: Incomplete | None = ..., - lho: Incomplete | None = ..., - lhe: Incomplete | None = ..., - lhf: Incomplete | None = ..., - cho: Incomplete | None = ..., - che: Incomplete | None = ..., - chf: Incomplete | None = ..., - rho: Incomplete | None = ..., - rhe: Incomplete | None = ..., - rhf: Incomplete | None = ..., - lfo: Incomplete | None = ..., - lfe: Incomplete | None = ..., - lff: Incomplete | None = ..., - cfo: Incomplete | None = ..., - cfe: Incomplete | None = ..., - cff: Incomplete | None = ..., - rfo: Incomplete | None = ..., - rfe: Incomplete | None = ..., - rff: Incomplete | None = ..., + id: Incomplete | None = None, + lho: Incomplete | None = None, + lhe: Incomplete | None = None, + lhf: Incomplete | None = None, + cho: Incomplete | None = None, + che: Incomplete | None = None, + chf: Incomplete | None = None, + rho: Incomplete | None = None, + rhe: Incomplete | None = None, + rhf: Incomplete | None = None, + lfo: Incomplete | None = None, + lfe: Incomplete | None = None, + lff: Incomplete | None = None, + cfo: Incomplete | None = None, + cfe: Incomplete | None = None, + cff: Incomplete | None = None, + rfo: Incomplete | None = None, + rfe: Incomplete | None = None, + rff: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi index 772090b6c..d71696aa6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi @@ -12,11 +12,11 @@ class ChartsheetView(Serialisable): __elements__: Incomplete def __init__( self, - tabSelected: Incomplete | None = ..., - zoomScale: Incomplete | None = ..., - workbookViewId: int = ..., - zoomToFit: Incomplete | None = ..., - extLst: Incomplete | None = ..., + tabSelected: Incomplete | None = None, + zoomScale: Incomplete | None = None, + workbookViewId: int = 0, + zoomToFit: Incomplete | None = True, + extLst: Incomplete | None = None, ) -> None: ... class ChartsheetViewList(Serialisable): @@ -24,4 +24,4 @@ class ChartsheetViewList(Serialisable): sheetView: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, sheetView: Incomplete | None = ..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, sheetView: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi index e80cfa914..cda8676b3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi @@ -6,4 +6,4 @@ class AuthorList(Serialisable): tagname: str author: Incomplete authors: Incomplete - def __init__(self, author=...) -> None: ... + def __init__(self, author=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi index 50dcef57a..b2f7de628 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi @@ -22,22 +22,22 @@ class Properties(Serialisable): anchor: Incomplete def __init__( self, - locked: Incomplete | None = ..., - defaultSize: Incomplete | None = ..., - _print: Incomplete | None = ..., - disabled: Incomplete | None = ..., - uiObject: Incomplete | None = ..., - autoFill: Incomplete | None = ..., - autoLine: Incomplete | None = ..., - altText: Incomplete | None = ..., - textHAlign: Incomplete | None = ..., - textVAlign: Incomplete | None = ..., - lockText: Incomplete | None = ..., - justLastX: Incomplete | None = ..., - autoScale: Incomplete | None = ..., - rowHidden: Incomplete | None = ..., - colHidden: Incomplete | None = ..., - anchor: Incomplete | None = ..., + locked: Incomplete | None = None, + defaultSize: Incomplete | None = None, + _print: Incomplete | None = None, + disabled: Incomplete | None = None, + uiObject: Incomplete | None = None, + autoFill: Incomplete | None = None, + autoLine: Incomplete | None = None, + altText: Incomplete | None = None, + textHAlign: Incomplete | None = None, + textVAlign: Incomplete | None = None, + lockText: Incomplete | None = None, + justLastX: Incomplete | None = None, + autoScale: Incomplete | None = None, + rowHidden: Incomplete | None = None, + colHidden: Incomplete | None = None, + anchor: Incomplete | None = None, ) -> None: ... class CommentRecord(Serialisable): @@ -55,15 +55,15 @@ class CommentRecord(Serialisable): width: Incomplete def __init__( self, - ref: str = ..., - authorId: int = ..., - guid: Incomplete | None = ..., - shapeId: int = ..., - text: Incomplete | None = ..., - commentPr: Incomplete | None = ..., - author: Incomplete | None = ..., - height: int = ..., - width: int = ..., + ref: str = "", + authorId: int = 0, + guid: Incomplete | None = None, + shapeId: int = 0, + text: Incomplete | None = None, + commentPr: Incomplete | None = None, + author: Incomplete | None = None, + height: int = 79, + width: int = 144, ) -> None: ... @classmethod def from_cell(cls, cell): ... @@ -78,13 +78,13 @@ class CommentSheet(Serialisable): mime_type: str __elements__: Incomplete def __init__( - self, authors: Incomplete | None = ..., commentList: Incomplete | None = ..., extLst: Incomplete | None = ... + self, authors: Incomplete | None = None, commentList: Incomplete | None = None, extLst: Incomplete | None = None ) -> None: ... def to_tree(self): ... @property def comments(self) -> Generator[Incomplete, None, None]: ... @classmethod def from_comments(cls, comments): ... - def write_shapes(self, vml: Incomplete | None = ...): ... + def write_shapes(self, vml: Incomplete | None = None): ... @property def path(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comments.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comments.pyi index b751879a2..e529f78da 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comments.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comments.pyi @@ -5,7 +5,7 @@ class Comment: author: Incomplete height: Incomplete width: Incomplete - def __init__(self, text, author, height: int = ..., width: int = ...) -> None: ... + def __init__(self, text, author, height: int = 79, width: int = 144) -> None: ... @property def parent(self): ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi index c61b95e89..616c5f183 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete class Descriptor: name: Incomplete - def __init__(self, name: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, name: Incomplete | None = None, **kw) -> None: ... def __set__(self, instance, value) -> None: ... class Typed(Descriptor): @@ -32,11 +32,11 @@ class MinMax(Min, Max): ... class Set(Descriptor): __doc__: Incomplete - def __init__(self, name: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, name: Incomplete | None = None, **kw) -> None: ... def __set__(self, instance, value) -> None: ... class NoneSet(Set): - def __init__(self, name: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, name: Incomplete | None = None, **kw) -> None: ... def __set__(self, instance, value) -> None: ... class Integer(Convertible): @@ -61,11 +61,11 @@ class Tuple(Typed): expected_type: Incomplete class Length(Descriptor): - def __init__(self, name: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, name: Incomplete | None = None, **kw) -> None: ... def __set__(self, instance, value) -> None: ... class Default(Typed): - def __init__(self, name: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, name: Incomplete | None = None, **kw) -> None: ... def __call__(self): ... class Alias(Descriptor): @@ -77,7 +77,7 @@ class Alias(Descriptor): class MatchPattern(Descriptor): allow_none: bool test_pattern: Incomplete - def __init__(self, name: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, name: Incomplete | None = None, **kw) -> None: ... def __set__(self, instance, value) -> None: ... class DateTime(Typed): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi index 1d7c80f63..dfc212e86 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi @@ -24,11 +24,11 @@ class Percentage(MinMax): class Extension(Serialisable): uri: Incomplete - def __init__(self, uri: Incomplete | None = ...) -> None: ... + def __init__(self, uri: Incomplete | None = None) -> None: ... class ExtensionList(Serialisable): ext: Incomplete - def __init__(self, ext=...) -> None: ... + def __init__(self, ext=()) -> None: ... class Relation(String): namespace: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/namespace.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/namespace.pyi index 2d64ce84b..db3a017fc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/namespace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/namespace.pyi @@ -1,3 +1,3 @@ from _typeshed import Incomplete -def namespaced(obj, tagname, namespace: Incomplete | None = ...): ... +def namespaced(obj, tagname, namespace: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi index f4902e657..dbd1cbf72 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi @@ -7,13 +7,17 @@ class Nested(Descriptor): attribute: str def __set__(self, instance, value) -> None: ... def from_tree(self, node): ... - def to_tree(self, tagname: Incomplete | None = ..., value: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def to_tree( + self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None + ): ... class NestedValue(Nested, Convertible): ... class NestedText(NestedValue): def from_tree(self, node): ... - def to_tree(self, tagname: Incomplete | None = ..., value: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def to_tree( + self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None + ): ... class NestedFloat(NestedValue, Float): ... class NestedInteger(NestedValue, Integer): ... @@ -28,4 +32,6 @@ class NestedMinMax(Nested, MinMax): ... class EmptyTag(Nested, Bool): def from_tree(self, node): ... - def to_tree(self, tagname: Incomplete | None = ..., value: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def to_tree( + self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None + ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi index 81259a9df..3acbf2554 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi @@ -9,21 +9,21 @@ class Sequence(Descriptor): idx_base: int unique: bool def __set__(self, instance, seq) -> None: ... - def to_tree(self, tagname, obj, namespace: Incomplete | None = ...) -> Generator[Incomplete, None, None]: ... + def to_tree(self, tagname, obj, namespace: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... class ValueSequence(Sequence): attribute: str - def to_tree(self, tagname, obj, namespace: Incomplete | None = ...) -> Generator[Incomplete, None, None]: ... + def to_tree(self, tagname, obj, namespace: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... def from_tree(self, node): ... class NestedSequence(Sequence): count: bool - def to_tree(self, tagname, obj, namespace: Incomplete | None = ...): ... + def to_tree(self, tagname, obj, namespace: Incomplete | None = None): ... def from_tree(self, node): ... class MultiSequence(Sequence): def __set__(self, instance, seq) -> None: ... - def to_tree(self, tagname, obj, namespace: Incomplete | None = ...) -> Generator[Incomplete, None, None]: ... + def to_tree(self, tagname, obj, namespace: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... class MultiSequencePart(Alias): expected_type: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi index f309f6a4c..b2b279e4f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi @@ -18,7 +18,7 @@ class Serialisable(_Serialiasable): namespace: Incomplete @classmethod def from_tree(cls, node): ... - def to_tree(self, tagname: Incomplete | None = ..., idx: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... def __iter__(self): ... def __eq__(self, other): ... def __ne__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi index aaf77fd0f..9f90ab5c2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi @@ -44,36 +44,36 @@ class SystemColor(Serialisable): __elements__: Incomplete def __init__( self, - val: str = ..., - lastClr: Incomplete | None = ..., - tint: Incomplete | None = ..., - shade: Incomplete | None = ..., - comp: Incomplete | None = ..., - inv: Incomplete | None = ..., - gray: Incomplete | None = ..., - alpha: Incomplete | None = ..., - alphaOff: Incomplete | None = ..., - alphaMod: Incomplete | None = ..., - hue: Incomplete | None = ..., - hueOff: Incomplete | None = ..., - hueMod: Incomplete | None = ..., - sat: Incomplete | None = ..., - satOff: Incomplete | None = ..., - satMod: Incomplete | None = ..., - lum: Incomplete | None = ..., - lumOff: Incomplete | None = ..., - lumMod: Incomplete | None = ..., - red: Incomplete | None = ..., - redOff: Incomplete | None = ..., - redMod: Incomplete | None = ..., - green: Incomplete | None = ..., - greenOff: Incomplete | None = ..., - greenMod: Incomplete | None = ..., - blue: Incomplete | None = ..., - blueOff: Incomplete | None = ..., - blueMod: Incomplete | None = ..., - gamma: Incomplete | None = ..., - invGamma: Incomplete | None = ..., + val: str = "windowText", + lastClr: Incomplete | None = None, + tint: Incomplete | None = None, + shade: Incomplete | None = None, + comp: Incomplete | None = None, + inv: Incomplete | None = None, + gray: Incomplete | None = None, + alpha: Incomplete | None = None, + alphaOff: Incomplete | None = None, + alphaMod: Incomplete | None = None, + hue: Incomplete | None = None, + hueOff: Incomplete | None = None, + hueMod: Incomplete | None = None, + sat: Incomplete | None = None, + satOff: Incomplete | None = None, + satMod: Incomplete | None = None, + lum: Incomplete | None = None, + lumOff: Incomplete | None = None, + lumMod: Incomplete | None = None, + red: Incomplete | None = None, + redOff: Incomplete | None = None, + redMod: Incomplete | None = None, + green: Incomplete | None = None, + greenOff: Incomplete | None = None, + greenMod: Incomplete | None = None, + blue: Incomplete | None = None, + blueOff: Incomplete | None = None, + blueMod: Incomplete | None = None, + gamma: Incomplete | None = None, + invGamma: Incomplete | None = None, ) -> None: ... class HSLColor(Serialisable): @@ -81,14 +81,14 @@ class HSLColor(Serialisable): hue: Incomplete sat: Incomplete lum: Incomplete - def __init__(self, hue: Incomplete | None = ..., sat: Incomplete | None = ..., lum: Incomplete | None = ...) -> None: ... + def __init__(self, hue: Incomplete | None = None, sat: Incomplete | None = None, lum: Incomplete | None = None) -> None: ... class RGBPercent(Serialisable): tagname: str r: Incomplete g: Incomplete b: Incomplete - def __init__(self, r: Incomplete | None = ..., g: Incomplete | None = ..., b: Incomplete | None = ...) -> None: ... + def __init__(self, r: Incomplete | None = None, g: Incomplete | None = None, b: Incomplete | None = None) -> None: ... class SchemeColor(Serialisable): tagname: str @@ -125,35 +125,35 @@ class SchemeColor(Serialisable): __elements__: Incomplete def __init__( self, - tint: Incomplete | None = ..., - shade: Incomplete | None = ..., - comp: Incomplete | None = ..., - inv: Incomplete | None = ..., - gray: Incomplete | None = ..., - alpha: Incomplete | None = ..., - alphaOff: Incomplete | None = ..., - alphaMod: Incomplete | None = ..., - hue: Incomplete | None = ..., - hueOff: Incomplete | None = ..., - hueMod: Incomplete | None = ..., - sat: Incomplete | None = ..., - satOff: Incomplete | None = ..., - satMod: Incomplete | None = ..., - lum: Incomplete | None = ..., - lumOff: Incomplete | None = ..., - lumMod: Incomplete | None = ..., - red: Incomplete | None = ..., - redOff: Incomplete | None = ..., - redMod: Incomplete | None = ..., - green: Incomplete | None = ..., - greenOff: Incomplete | None = ..., - greenMod: Incomplete | None = ..., - blue: Incomplete | None = ..., - blueOff: Incomplete | None = ..., - blueMod: Incomplete | None = ..., - gamma: Incomplete | None = ..., - invGamma: Incomplete | None = ..., - val: Incomplete | None = ..., + tint: Incomplete | None = None, + shade: Incomplete | None = None, + comp: Incomplete | None = None, + inv: Incomplete | None = None, + gray: Incomplete | None = None, + alpha: Incomplete | None = None, + alphaOff: Incomplete | None = None, + alphaMod: Incomplete | None = None, + hue: Incomplete | None = None, + hueOff: Incomplete | None = None, + hueMod: Incomplete | None = None, + sat: Incomplete | None = None, + satOff: Incomplete | None = None, + satMod: Incomplete | None = None, + lum: Incomplete | None = None, + lumOff: Incomplete | None = None, + lumMod: Incomplete | None = None, + red: Incomplete | None = None, + redOff: Incomplete | None = None, + redMod: Incomplete | None = None, + green: Incomplete | None = None, + greenOff: Incomplete | None = None, + greenMod: Incomplete | None = None, + blue: Incomplete | None = None, + blueOff: Incomplete | None = None, + blueMod: Incomplete | None = None, + gamma: Incomplete | None = None, + invGamma: Incomplete | None = None, + val: Incomplete | None = None, ) -> None: ... class ColorChoice(Serialisable): @@ -170,12 +170,12 @@ class ColorChoice(Serialisable): __elements__: Incomplete def __init__( self, - scrgbClr: Incomplete | None = ..., - srgbClr: Incomplete | None = ..., - hslClr: Incomplete | None = ..., - sysClr: Incomplete | None = ..., - schemeClr: Incomplete | None = ..., - prstClr: Incomplete | None = ..., + scrgbClr: Incomplete | None = None, + srgbClr: Incomplete | None = None, + hslClr: Incomplete | None = None, + sysClr: Incomplete | None = None, + schemeClr: Incomplete | None = None, + prstClr: Incomplete | None = None, ) -> None: ... class ColorMapping(Serialisable): @@ -195,19 +195,19 @@ class ColorMapping(Serialisable): extLst: Incomplete def __init__( self, - bg1: str = ..., - tx1: str = ..., - bg2: str = ..., - tx2: str = ..., - accent1: str = ..., - accent2: str = ..., - accent3: str = ..., - accent4: str = ..., - accent5: str = ..., - accent6: str = ..., - hlink: str = ..., - folHlink: str = ..., - extLst: Incomplete | None = ..., + bg1: str = "lt1", + tx1: str = "dk1", + bg2: str = "lt2", + tx2: str = "dk2", + accent1: str = "accent1", + accent2: str = "accent2", + accent3: str = "accent3", + accent4: str = "accent4", + accent5: str = "accent5", + accent6: str = "accent6", + hlink: str = "hlink", + folHlink: str = "folHlink", + extLst: Incomplete | None = None, ) -> None: ... class ColorChoiceDescriptor(Typed): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi index 926b416c2..9d5b98816 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi @@ -5,11 +5,11 @@ from openpyxl.descriptors.serialisable import Serialisable class Connection(Serialisable): id: Incomplete idx: Incomplete - def __init__(self, id: Incomplete | None = ..., idx: Incomplete | None = ...) -> None: ... + def __init__(self, id: Incomplete | None = None, idx: Incomplete | None = None) -> None: ... class ConnectorLocking(Serialisable): extLst: Incomplete - def __init__(self, extLst: Incomplete | None = ...) -> None: ... + def __init__(self, extLst: Incomplete | None = None) -> None: ... class NonVisualConnectorProperties(Serialisable): cxnSpLocks: Incomplete @@ -18,17 +18,17 @@ class NonVisualConnectorProperties(Serialisable): extLst: Incomplete def __init__( self, - cxnSpLocks: Incomplete | None = ..., - stCxn: Incomplete | None = ..., - endCxn: Incomplete | None = ..., - extLst: Incomplete | None = ..., + cxnSpLocks: Incomplete | None = None, + stCxn: Incomplete | None = None, + endCxn: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class ConnectorNonVisual(Serialisable): cNvPr: Incomplete cNvCxnSpPr: Incomplete __elements__: Incomplete - def __init__(self, cNvPr: Incomplete | None = ..., cNvCxnSpPr: Incomplete | None = ...) -> None: ... + def __init__(self, cNvPr: Incomplete | None = None, cNvCxnSpPr: Incomplete | None = None) -> None: ... class ConnectorShape(Serialisable): tagname: str @@ -39,18 +39,18 @@ class ConnectorShape(Serialisable): fPublished: Incomplete def __init__( self, - nvCxnSpPr: Incomplete | None = ..., - spPr: Incomplete | None = ..., - style: Incomplete | None = ..., - macro: Incomplete | None = ..., - fPublished: Incomplete | None = ..., + nvCxnSpPr: Incomplete | None = None, + spPr: Incomplete | None = None, + style: Incomplete | None = None, + macro: Incomplete | None = None, + fPublished: Incomplete | None = None, ) -> None: ... class ShapeMeta(Serialisable): tagname: str cNvPr: Incomplete cNvSpPr: Incomplete - def __init__(self, cNvPr: Incomplete | None = ..., cNvSpPr: Incomplete | None = ...) -> None: ... + def __init__(self, cNvPr: Incomplete | None = None, cNvSpPr: Incomplete | None = None) -> None: ... class Shape(Serialisable): macro: Incomplete @@ -65,12 +65,12 @@ class Shape(Serialisable): txBody: Incomplete def __init__( self, - macro: Incomplete | None = ..., - textlink: Incomplete | None = ..., - fPublished: Incomplete | None = ..., - fLocksText: Incomplete | None = ..., - nvSpPr: Incomplete | None = ..., - spPr: Incomplete | None = ..., - style: Incomplete | None = ..., - txBody: Incomplete | None = ..., + macro: Incomplete | None = None, + textlink: Incomplete | None = None, + fPublished: Incomplete | None = None, + fLocksText: Incomplete | None = None, + nvSpPr: Incomplete | None = None, + spPr: Incomplete | None = None, + style: Incomplete | None = None, + txBody: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi index 58b6e09e7..1e340241a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi @@ -8,26 +8,26 @@ class TintEffect(Serialisable): tagname: str hue: Incomplete amt: Incomplete - def __init__(self, hue: int = ..., amt: int = ...) -> None: ... + def __init__(self, hue: int = 0, amt: int = 0) -> None: ... class LuminanceEffect(Serialisable): tagname: str bright: Incomplete contrast: Incomplete - def __init__(self, bright: int = ..., contrast: int = ...) -> None: ... + def __init__(self, bright: int = 0, contrast: int = 0) -> None: ... class HSLEffect(Serialisable): hue: Incomplete sat: Incomplete lum: Incomplete - def __init__(self, hue: Incomplete | None = ..., sat: Incomplete | None = ..., lum: Incomplete | None = ...) -> None: ... + def __init__(self, hue: Incomplete | None = None, sat: Incomplete | None = None, lum: Incomplete | None = None) -> None: ... class GrayscaleEffect(Serialisable): tagname: str class FillOverlayEffect(Serialisable): blend: Incomplete - def __init__(self, blend: Incomplete | None = ...) -> None: ... + def __init__(self, blend: Incomplete | None = None) -> None: ... class DuotoneEffect(Serialisable): ... class ColorReplaceEffect(Serialisable): ... @@ -38,34 +38,34 @@ class ColorChangeEffect(Serialisable): clrFrom: Incomplete clrTo: Incomplete def __init__( - self, useA: Incomplete | None = ..., clrFrom: Incomplete | None = ..., clrTo: Incomplete | None = ... + self, useA: Incomplete | None = None, clrFrom: Incomplete | None = None, clrTo: Incomplete | None = None ) -> None: ... class BlurEffect(Serialisable): rad: Incomplete grow: Incomplete - def __init__(self, rad: Incomplete | None = ..., grow: Incomplete | None = ...) -> None: ... + def __init__(self, rad: Incomplete | None = None, grow: Incomplete | None = None) -> None: ... class BiLevelEffect(Serialisable): thresh: Incomplete - def __init__(self, thresh: Incomplete | None = ...) -> None: ... + def __init__(self, thresh: Incomplete | None = None) -> None: ... class AlphaReplaceEffect(Serialisable): a: Incomplete - def __init__(self, a: Incomplete | None = ...) -> None: ... + def __init__(self, a: Incomplete | None = None) -> None: ... class AlphaModulateFixedEffect(Serialisable): amt: Incomplete - def __init__(self, amt: Incomplete | None = ...) -> None: ... + def __init__(self, amt: Incomplete | None = None) -> None: ... class EffectContainer(Serialisable): type: Incomplete name: Incomplete - def __init__(self, type: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, name: Incomplete | None = None) -> None: ... class AlphaModulateEffect(Serialisable): cont: Incomplete - def __init__(self, cont: Incomplete | None = ...) -> None: ... + def __init__(self, cont: Incomplete | None = None) -> None: ... class AlphaInverseEffect(Serialisable): ... class AlphaFloorEffect(Serialisable): ... @@ -73,7 +73,7 @@ class AlphaCeilingEffect(Serialisable): ... class AlphaBiLevelEffect(Serialisable): thresh: Incomplete - def __init__(self, thresh: Incomplete | None = ...) -> None: ... + def __init__(self, thresh: Incomplete | None = None) -> None: ... class GlowEffect(ColorChoice): rad: Incomplete @@ -84,7 +84,7 @@ class GlowEffect(ColorChoice): schemeClr: Incomplete prstClr: Incomplete __elements__: Incomplete - def __init__(self, rad: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, rad: Incomplete | None = None, **kw) -> None: ... class InnerShadowEffect(ColorChoice): blurRad: Incomplete @@ -98,7 +98,7 @@ class InnerShadowEffect(ColorChoice): prstClr: Incomplete __elements__: Incomplete def __init__( - self, blurRad: Incomplete | None = ..., dist: Incomplete | None = ..., dir: Incomplete | None = ..., **kw + self, blurRad: Incomplete | None = None, dist: Incomplete | None = None, dir: Incomplete | None = None, **kw ) -> None: ... class OuterShadow(ColorChoice): @@ -121,15 +121,15 @@ class OuterShadow(ColorChoice): __elements__: Incomplete def __init__( self, - blurRad: Incomplete | None = ..., - dist: Incomplete | None = ..., - dir: Incomplete | None = ..., - sx: Incomplete | None = ..., - sy: Incomplete | None = ..., - kx: Incomplete | None = ..., - ky: Incomplete | None = ..., - algn: Incomplete | None = ..., - rotWithShape: Incomplete | None = ..., + blurRad: Incomplete | None = None, + dist: Incomplete | None = None, + dir: Incomplete | None = None, + sx: Incomplete | None = None, + sy: Incomplete | None = None, + kx: Incomplete | None = None, + ky: Incomplete | None = None, + algn: Incomplete | None = None, + rotWithShape: Incomplete | None = None, **kw, ) -> None: ... @@ -145,7 +145,7 @@ class PresetShadowEffect(ColorChoice): prstClr: Incomplete __elements__: Incomplete def __init__( - self, prst: Incomplete | None = ..., dist: Incomplete | None = ..., dir: Incomplete | None = ..., **kw + self, prst: Incomplete | None = None, dist: Incomplete | None = None, dir: Incomplete | None = None, **kw ) -> None: ... class ReflectionEffect(Serialisable): @@ -165,25 +165,25 @@ class ReflectionEffect(Serialisable): rotWithShape: Incomplete def __init__( self, - blurRad: Incomplete | None = ..., - stA: Incomplete | None = ..., - stPos: Incomplete | None = ..., - endA: Incomplete | None = ..., - endPos: Incomplete | None = ..., - dist: Incomplete | None = ..., - dir: Incomplete | None = ..., - fadeDir: Incomplete | None = ..., - sx: Incomplete | None = ..., - sy: Incomplete | None = ..., - kx: Incomplete | None = ..., - ky: Incomplete | None = ..., - algn: Incomplete | None = ..., - rotWithShape: Incomplete | None = ..., + blurRad: Incomplete | None = None, + stA: Incomplete | None = None, + stPos: Incomplete | None = None, + endA: Incomplete | None = None, + endPos: Incomplete | None = None, + dist: Incomplete | None = None, + dir: Incomplete | None = None, + fadeDir: Incomplete | None = None, + sx: Incomplete | None = None, + sy: Incomplete | None = None, + kx: Incomplete | None = None, + ky: Incomplete | None = None, + algn: Incomplete | None = None, + rotWithShape: Incomplete | None = None, ) -> None: ... class SoftEdgesEffect(Serialisable): rad: Incomplete - def __init__(self, rad: Incomplete | None = ...) -> None: ... + def __init__(self, rad: Incomplete | None = None) -> None: ... class EffectList(Serialisable): blur: Incomplete @@ -197,12 +197,12 @@ class EffectList(Serialisable): __elements__: Incomplete def __init__( self, - blur: Incomplete | None = ..., - fillOverlay: Incomplete | None = ..., - glow: Incomplete | None = ..., - innerShdw: Incomplete | None = ..., - outerShdw: Incomplete | None = ..., - prstShdw: Incomplete | None = ..., - reflection: Incomplete | None = ..., - softEdge: Incomplete | None = ..., + blur: Incomplete | None = None, + fillOverlay: Incomplete | None = None, + glow: Incomplete | None = None, + innerShdw: Incomplete | None = None, + outerShdw: Incomplete | None = None, + prstShdw: Incomplete | None = None, + reflection: Incomplete | None = None, + softEdge: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi index 88b2ce165..dfc4a9d62 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi @@ -12,7 +12,9 @@ class PatternFillProperties(Serialisable): bgClr: Incomplete background: Incomplete __elements__: Incomplete - def __init__(self, prst: Incomplete | None = ..., fgClr: Incomplete | None = ..., bgClr: Incomplete | None = ...) -> None: ... + def __init__( + self, prst: Incomplete | None = None, fgClr: Incomplete | None = None, bgClr: Incomplete | None = None + ) -> None: ... class RelativeRect(Serialisable): tagname: str @@ -26,7 +28,7 @@ class RelativeRect(Serialisable): b: Incomplete bottom: Incomplete def __init__( - self, l: Incomplete | None = ..., t: Incomplete | None = ..., r: Incomplete | None = ..., b: Incomplete | None = ... + self, l: Incomplete | None = None, t: Incomplete | None = None, r: Incomplete | None = None, b: Incomplete | None = None ) -> None: ... class StretchInfoProperties(Serialisable): @@ -50,13 +52,13 @@ class GradientStop(Serialisable): __elements__: Incomplete def __init__( self, - pos: Incomplete | None = ..., - scrgbClr: Incomplete | None = ..., - srgbClr: Incomplete | None = ..., - hslClr: Incomplete | None = ..., - sysClr: Incomplete | None = ..., - schemeClr: Incomplete | None = ..., - prstClr: Incomplete | None = ..., + pos: Incomplete | None = None, + scrgbClr: Incomplete | None = None, + srgbClr: Incomplete | None = None, + hslClr: Incomplete | None = None, + sysClr: Incomplete | None = None, + schemeClr: Incomplete | None = None, + prstClr: Incomplete | None = None, ) -> None: ... class LinearShadeProperties(Serialisable): @@ -64,14 +66,14 @@ class LinearShadeProperties(Serialisable): namespace: Incomplete ang: Incomplete scaled: Incomplete - def __init__(self, ang: Incomplete | None = ..., scaled: Incomplete | None = ...) -> None: ... + def __init__(self, ang: Incomplete | None = None, scaled: Incomplete | None = None) -> None: ... class PathShadeProperties(Serialisable): tagname: str namespace: Incomplete path: Incomplete fillToRect: Incomplete - def __init__(self, path: Incomplete | None = ..., fillToRect: Incomplete | None = ...) -> None: ... + def __init__(self, path: Incomplete | None = None, fillToRect: Incomplete | None = None) -> None: ... class GradientFillProperties(Serialisable): tagname: str @@ -87,12 +89,12 @@ class GradientFillProperties(Serialisable): __elements__: Incomplete def __init__( self, - flip: Incomplete | None = ..., - rotWithShape: Incomplete | None = ..., - gsLst=..., - lin: Incomplete | None = ..., - path: Incomplete | None = ..., - tileRect: Incomplete | None = ..., + flip: Incomplete | None = None, + rotWithShape: Incomplete | None = None, + gsLst=(), + lin: Incomplete | None = None, + path: Incomplete | None = None, + tileRect: Incomplete | None = None, ) -> None: ... class SolidColorFillProperties(Serialisable): @@ -108,12 +110,12 @@ class SolidColorFillProperties(Serialisable): __elements__: Incomplete def __init__( self, - scrgbClr: Incomplete | None = ..., - srgbClr: Incomplete | None = ..., - hslClr: Incomplete | None = ..., - sysClr: Incomplete | None = ..., - schemeClr: Incomplete | None = ..., - prstClr: Incomplete | None = ..., + scrgbClr: Incomplete | None = None, + srgbClr: Incomplete | None = None, + hslClr: Incomplete | None = None, + sysClr: Incomplete | None = None, + schemeClr: Incomplete | None = None, + prstClr: Incomplete | None = None, ) -> None: ... class Blip(Serialisable): @@ -153,37 +155,37 @@ class Blip(Serialisable): __elements__: Incomplete def __init__( self, - cstate: Incomplete | None = ..., - embed: Incomplete | None = ..., - link: Incomplete | None = ..., - noGrp: Incomplete | None = ..., - noSelect: Incomplete | None = ..., - noRot: Incomplete | None = ..., - noChangeAspect: Incomplete | None = ..., - noMove: Incomplete | None = ..., - noResize: Incomplete | None = ..., - noEditPoints: Incomplete | None = ..., - noAdjustHandles: Incomplete | None = ..., - noChangeArrowheads: Incomplete | None = ..., - noChangeShapeType: Incomplete | None = ..., - extLst: Incomplete | None = ..., - alphaBiLevel: Incomplete | None = ..., - alphaCeiling: Incomplete | None = ..., - alphaFloor: Incomplete | None = ..., - alphaInv: Incomplete | None = ..., - alphaMod: Incomplete | None = ..., - alphaModFix: Incomplete | None = ..., - alphaRepl: Incomplete | None = ..., - biLevel: Incomplete | None = ..., - blur: Incomplete | None = ..., - clrChange: Incomplete | None = ..., - clrRepl: Incomplete | None = ..., - duotone: Incomplete | None = ..., - fillOverlay: Incomplete | None = ..., - grayscl: Incomplete | None = ..., - hsl: Incomplete | None = ..., - lum: Incomplete | None = ..., - tint: Incomplete | None = ..., + cstate: Incomplete | None = None, + embed: Incomplete | None = None, + link: Incomplete | None = None, + noGrp: Incomplete | None = None, + noSelect: Incomplete | None = None, + noRot: Incomplete | None = None, + noChangeAspect: Incomplete | None = None, + noMove: Incomplete | None = None, + noResize: Incomplete | None = None, + noEditPoints: Incomplete | None = None, + noAdjustHandles: Incomplete | None = None, + noChangeArrowheads: Incomplete | None = None, + noChangeShapeType: Incomplete | None = None, + extLst: Incomplete | None = None, + alphaBiLevel: Incomplete | None = None, + alphaCeiling: Incomplete | None = None, + alphaFloor: Incomplete | None = None, + alphaInv: Incomplete | None = None, + alphaMod: Incomplete | None = None, + alphaModFix: Incomplete | None = None, + alphaRepl: Incomplete | None = None, + biLevel: Incomplete | None = None, + blur: Incomplete | None = None, + clrChange: Incomplete | None = None, + clrRepl: Incomplete | None = None, + duotone: Incomplete | None = None, + fillOverlay: Incomplete | None = None, + grayscl: Incomplete | None = None, + hsl: Incomplete | None = None, + lum: Incomplete | None = None, + tint: Incomplete | None = None, ) -> None: ... class TileInfoProperties(Serialisable): @@ -195,12 +197,12 @@ class TileInfoProperties(Serialisable): algn: Incomplete def __init__( self, - tx: Incomplete | None = ..., - ty: Incomplete | None = ..., - sx: Incomplete | None = ..., - sy: Incomplete | None = ..., - flip: Incomplete | None = ..., - algn: Incomplete | None = ..., + tx: Incomplete | None = None, + ty: Incomplete | None = None, + sx: Incomplete | None = None, + sy: Incomplete | None = None, + flip: Incomplete | None = None, + algn: Incomplete | None = None, ) -> None: ... class BlipFillProperties(Serialisable): @@ -214,10 +216,10 @@ class BlipFillProperties(Serialisable): __elements__: Incomplete def __init__( self, - dpi: Incomplete | None = ..., - rotWithShape: Incomplete | None = ..., - blip: Incomplete | None = ..., - tile: Incomplete | None = ..., + dpi: Incomplete | None = None, + rotWithShape: Incomplete | None = None, + blip: Incomplete | None = None, + tile: Incomplete | None = None, stretch=..., - srcRect: Incomplete | None = ..., + srcRect: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi index f5ed079b8..cbfc29708 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi @@ -7,7 +7,7 @@ class Point2D(Serialisable): namespace: Incomplete x: Incomplete y: Incomplete - def __init__(self, x: Incomplete | None = ..., y: Incomplete | None = ...) -> None: ... + def __init__(self, x: Incomplete | None = None, y: Incomplete | None = None) -> None: ... class PositiveSize2D(Serialisable): tagname: str @@ -16,7 +16,7 @@ class PositiveSize2D(Serialisable): width: Incomplete cy: Incomplete height: Incomplete - def __init__(self, cx: Incomplete | None = ..., cy: Incomplete | None = ...) -> None: ... + def __init__(self, cx: Incomplete | None = None, cy: Incomplete | None = None) -> None: ... class Transform2D(Serialisable): tagname: str @@ -31,13 +31,13 @@ class Transform2D(Serialisable): __elements__: Incomplete def __init__( self, - rot: Incomplete | None = ..., - flipH: Incomplete | None = ..., - flipV: Incomplete | None = ..., - off: Incomplete | None = ..., - ext: Incomplete | None = ..., - chOff: Incomplete | None = ..., - chExt: Incomplete | None = ..., + rot: Incomplete | None = None, + flipH: Incomplete | None = None, + flipV: Incomplete | None = None, + off: Incomplete | None = None, + ext: Incomplete | None = None, + chOff: Incomplete | None = None, + chExt: Incomplete | None = None, ) -> None: ... class GroupTransform2D(Serialisable): @@ -53,13 +53,13 @@ class GroupTransform2D(Serialisable): __elements__: Incomplete def __init__( self, - rot: int = ..., - flipH: Incomplete | None = ..., - flipV: Incomplete | None = ..., - off: Incomplete | None = ..., - ext: Incomplete | None = ..., - chOff: Incomplete | None = ..., - chExt: Incomplete | None = ..., + rot: int = 0, + flipH: Incomplete | None = None, + flipV: Incomplete | None = None, + off: Incomplete | None = None, + ext: Incomplete | None = None, + chOff: Incomplete | None = None, + chExt: Incomplete | None = None, ) -> None: ... class SphereCoords(Serialisable): @@ -67,7 +67,7 @@ class SphereCoords(Serialisable): lat: Incomplete lon: Incomplete rev: Incomplete - def __init__(self, lat: Incomplete | None = ..., lon: Incomplete | None = ..., rev: Incomplete | None = ...) -> None: ... + def __init__(self, lat: Incomplete | None = None, lon: Incomplete | None = None, rev: Incomplete | None = None) -> None: ... class Camera(Serialisable): tagname: str @@ -77,10 +77,10 @@ class Camera(Serialisable): rot: Incomplete def __init__( self, - prst: Incomplete | None = ..., - fov: Incomplete | None = ..., - zoom: Incomplete | None = ..., - rot: Incomplete | None = ..., + prst: Incomplete | None = None, + fov: Incomplete | None = None, + zoom: Incomplete | None = None, + rot: Incomplete | None = None, ) -> None: ... class LightRig(Serialisable): @@ -88,21 +88,21 @@ class LightRig(Serialisable): rig: Incomplete dir: Incomplete rot: Incomplete - def __init__(self, rig: Incomplete | None = ..., dir: Incomplete | None = ..., rot: Incomplete | None = ...) -> None: ... + def __init__(self, rig: Incomplete | None = None, dir: Incomplete | None = None, rot: Incomplete | None = None) -> None: ... class Vector3D(Serialisable): tagname: str dx: Incomplete dy: Incomplete dz: Incomplete - def __init__(self, dx: Incomplete | None = ..., dy: Incomplete | None = ..., dz: Incomplete | None = ...) -> None: ... + def __init__(self, dx: Incomplete | None = None, dy: Incomplete | None = None, dz: Incomplete | None = None) -> None: ... class Point3D(Serialisable): tagname: str x: Incomplete y: Incomplete z: Incomplete - def __init__(self, x: Incomplete | None = ..., y: Incomplete | None = ..., z: Incomplete | None = ...) -> None: ... + def __init__(self, x: Incomplete | None = None, y: Incomplete | None = None, z: Incomplete | None = None) -> None: ... class Backdrop(Serialisable): anchor: Incomplete @@ -111,10 +111,10 @@ class Backdrop(Serialisable): extLst: Incomplete def __init__( self, - anchor: Incomplete | None = ..., - norm: Incomplete | None = ..., - up: Incomplete | None = ..., - extLst: Incomplete | None = ..., + anchor: Incomplete | None = None, + norm: Incomplete | None = None, + up: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class Scene3D(Serialisable): @@ -124,10 +124,10 @@ class Scene3D(Serialisable): extLst: Incomplete def __init__( self, - camera: Incomplete | None = ..., - lightRig: Incomplete | None = ..., - backdrop: Incomplete | None = ..., - extLst: Incomplete | None = ..., + camera: Incomplete | None = None, + lightRig: Incomplete | None = None, + backdrop: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class Bevel(Serialisable): @@ -135,7 +135,7 @@ class Bevel(Serialisable): w: Incomplete h: Incomplete prst: Incomplete - def __init__(self, w: Incomplete | None = ..., h: Incomplete | None = ..., prst: Incomplete | None = ...) -> None: ... + def __init__(self, w: Incomplete | None = None, h: Incomplete | None = None, prst: Incomplete | None = None) -> None: ... class Shape3D(Serialisable): namespace: Incomplete @@ -150,15 +150,15 @@ class Shape3D(Serialisable): extLst: Incomplete def __init__( self, - z: Incomplete | None = ..., - extrusionH: Incomplete | None = ..., - contourW: Incomplete | None = ..., - prstMaterial: Incomplete | None = ..., - bevelT: Incomplete | None = ..., - bevelB: Incomplete | None = ..., - extrusionClr: Incomplete | None = ..., - contourClr: Incomplete | None = ..., - extLst: Incomplete | None = ..., + z: Incomplete | None = None, + extrusionH: Incomplete | None = None, + contourW: Incomplete | None = None, + prstMaterial: Incomplete | None = None, + bevelT: Incomplete | None = None, + bevelB: Incomplete | None = None, + extrusionClr: Incomplete | None = None, + contourClr: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class Path2D(Serialisable): @@ -169,16 +169,16 @@ class Path2D(Serialisable): extrusionOk: Incomplete def __init__( self, - w: Incomplete | None = ..., - h: Incomplete | None = ..., - fill: Incomplete | None = ..., - stroke: Incomplete | None = ..., - extrusionOk: Incomplete | None = ..., + w: Incomplete | None = None, + h: Incomplete | None = None, + fill: Incomplete | None = None, + stroke: Incomplete | None = None, + extrusionOk: Incomplete | None = None, ) -> None: ... class Path2DList(Serialisable): path: Incomplete - def __init__(self, path: Incomplete | None = ...) -> None: ... + def __init__(self, path: Incomplete | None = None) -> None: ... class GeomRect(Serialisable): l: Incomplete @@ -186,33 +186,33 @@ class GeomRect(Serialisable): r: Incomplete b: Incomplete def __init__( - self, l: Incomplete | None = ..., t: Incomplete | None = ..., r: Incomplete | None = ..., b: Incomplete | None = ... + self, l: Incomplete | None = None, t: Incomplete | None = None, r: Incomplete | None = None, b: Incomplete | None = None ) -> None: ... class AdjPoint2D(Serialisable): x: Incomplete y: Incomplete - def __init__(self, x: Incomplete | None = ..., y: Incomplete | None = ...) -> None: ... + def __init__(self, x: Incomplete | None = None, y: Incomplete | None = None) -> None: ... class ConnectionSite(Serialisable): ang: Incomplete pos: Incomplete - def __init__(self, ang: Incomplete | None = ..., pos: Incomplete | None = ...) -> None: ... + def __init__(self, ang: Incomplete | None = None, pos: Incomplete | None = None) -> None: ... class ConnectionSiteList(Serialisable): cxn: Incomplete - def __init__(self, cxn: Incomplete | None = ...) -> None: ... + def __init__(self, cxn: Incomplete | None = None) -> None: ... class AdjustHandleList(Serialisable): ... class GeomGuide(Serialisable): name: Incomplete fmla: Incomplete - def __init__(self, name: Incomplete | None = ..., fmla: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None, fmla: Incomplete | None = None) -> None: ... class GeomGuideList(Serialisable): gd: Incomplete - def __init__(self, gd: Incomplete | None = ...) -> None: ... + def __init__(self, gd: Incomplete | None = None) -> None: ... class CustomGeometry2D(Serialisable): avLst: Incomplete @@ -223,27 +223,27 @@ class CustomGeometry2D(Serialisable): rect: Incomplete def __init__( self, - avLst: Incomplete | None = ..., - gdLst: Incomplete | None = ..., - ahLst: Incomplete | None = ..., - cxnLst: Incomplete | None = ..., - rect: Incomplete | None = ..., - pathLst: Incomplete | None = ..., + avLst: Incomplete | None = None, + gdLst: Incomplete | None = None, + ahLst: Incomplete | None = None, + cxnLst: Incomplete | None = None, + rect: Incomplete | None = None, + pathLst: Incomplete | None = None, ) -> None: ... class PresetGeometry2D(Serialisable): namespace: Incomplete prst: Incomplete avLst: Incomplete - def __init__(self, prst: Incomplete | None = ..., avLst: Incomplete | None = ...) -> None: ... + def __init__(self, prst: Incomplete | None = None, avLst: Incomplete | None = None) -> None: ... class FontReference(Serialisable): idx: Incomplete - def __init__(self, idx: Incomplete | None = ...) -> None: ... + def __init__(self, idx: Incomplete | None = None) -> None: ... class StyleMatrixReference(Serialisable): idx: Incomplete - def __init__(self, idx: Incomplete | None = ...) -> None: ... + def __init__(self, idx: Incomplete | None = None) -> None: ... class ShapeStyle(Serialisable): lnRef: Incomplete @@ -252,8 +252,8 @@ class ShapeStyle(Serialisable): fontRef: Incomplete def __init__( self, - lnRef: Incomplete | None = ..., - fillRef: Incomplete | None = ..., - effectRef: Incomplete | None = ..., - fontRef: Incomplete | None = ..., + lnRef: Incomplete | None = None, + fillRef: Incomplete | None = None, + effectRef: Incomplete | None = None, + fontRef: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi index c30ac13f5..d3ab2089b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi @@ -12,40 +12,40 @@ class GraphicFrameLocking(Serialisable): extLst: Incomplete def __init__( self, - noGrp: Incomplete | None = ..., - noDrilldown: Incomplete | None = ..., - noSelect: Incomplete | None = ..., - noChangeAspect: Incomplete | None = ..., - noMove: Incomplete | None = ..., - noResize: Incomplete | None = ..., - extLst: Incomplete | None = ..., + noGrp: Incomplete | None = None, + noDrilldown: Incomplete | None = None, + noSelect: Incomplete | None = None, + noChangeAspect: Incomplete | None = None, + noMove: Incomplete | None = None, + noResize: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class NonVisualGraphicFrameProperties(Serialisable): tagname: str graphicFrameLocks: Incomplete extLst: Incomplete - def __init__(self, graphicFrameLocks: Incomplete | None = ..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, graphicFrameLocks: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... class NonVisualGraphicFrame(Serialisable): tagname: str cNvPr: Incomplete cNvGraphicFramePr: Incomplete __elements__: Incomplete - def __init__(self, cNvPr: Incomplete | None = ..., cNvGraphicFramePr: Incomplete | None = ...) -> None: ... + def __init__(self, cNvPr: Incomplete | None = None, cNvGraphicFramePr: Incomplete | None = None) -> None: ... class GraphicData(Serialisable): tagname: str namespace: Incomplete uri: Incomplete chart: Incomplete - def __init__(self, uri=..., chart: Incomplete | None = ...) -> None: ... + def __init__(self, uri: str = ..., chart: Incomplete | None = None) -> None: ... class GraphicObject(Serialisable): tagname: str namespace: Incomplete graphicData: Incomplete - def __init__(self, graphicData: Incomplete | None = ...) -> None: ... + def __init__(self, graphicData: Incomplete | None = None) -> None: ... class GraphicFrame(Serialisable): tagname: str @@ -57,11 +57,11 @@ class GraphicFrame(Serialisable): __elements__: Incomplete def __init__( self, - nvGraphicFramePr: Incomplete | None = ..., - xfrm: Incomplete | None = ..., - graphic: Incomplete | None = ..., - macro: Incomplete | None = ..., - fPublished: Incomplete | None = ..., + nvGraphicFramePr: Incomplete | None = None, + xfrm: Incomplete | None = None, + graphic: Incomplete | None = None, + macro: Incomplete | None = None, + fPublished: Incomplete | None = None, ) -> None: ... class GroupShape(Serialisable): @@ -72,5 +72,5 @@ class GroupShape(Serialisable): pic: Incomplete __elements__: Incomplete def __init__( - self, nvGrpSpPr: Incomplete | None = ..., grpSpPr: Incomplete | None = ..., pic: Incomplete | None = ... + self, nvGrpSpPr: Incomplete | None = None, grpSpPr: Incomplete | None = None, pic: Incomplete | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi index 0c8ac33ac..27e57cb24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi @@ -8,7 +8,7 @@ class LineEndProperties(Serialisable): type: Incomplete w: Incomplete len: Incomplete - def __init__(self, type: Incomplete | None = ..., w: Incomplete | None = ..., len: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, w: Incomplete | None = None, len: Incomplete | None = None) -> None: ... class DashStop(Serialisable): tagname: str @@ -17,11 +17,11 @@ class DashStop(Serialisable): length: Incomplete sp: Incomplete space: Incomplete - def __init__(self, d: int = ..., sp: int = ...) -> None: ... + def __init__(self, d: int = 0, sp: int = 0) -> None: ... class DashStopList(Serialisable): ds: Incomplete - def __init__(self, ds: Incomplete | None = ...) -> None: ... + def __init__(self, ds: Incomplete | None = None) -> None: ... class LineProperties(Serialisable): tagname: str @@ -47,20 +47,20 @@ class LineProperties(Serialisable): __elements__: Incomplete def __init__( self, - w: Incomplete | None = ..., - cap: Incomplete | None = ..., - cmpd: Incomplete | None = ..., - algn: Incomplete | None = ..., - noFill: Incomplete | None = ..., - solidFill: Incomplete | None = ..., - gradFill: Incomplete | None = ..., - pattFill: Incomplete | None = ..., - prstDash: Incomplete | None = ..., - custDash: Incomplete | None = ..., - round: Incomplete | None = ..., - bevel: Incomplete | None = ..., - miter: Incomplete | None = ..., - headEnd: Incomplete | None = ..., - tailEnd: Incomplete | None = ..., - extLst: Incomplete | None = ..., + w: Incomplete | None = None, + cap: Incomplete | None = None, + cmpd: Incomplete | None = None, + algn: Incomplete | None = None, + noFill: Incomplete | None = None, + solidFill: Incomplete | None = None, + gradFill: Incomplete | None = None, + pattFill: Incomplete | None = None, + prstDash: Incomplete | None = None, + custDash: Incomplete | None = None, + round: Incomplete | None = None, + bevel: Incomplete | None = None, + miter: Incomplete | None = None, + headEnd: Incomplete | None = None, + tailEnd: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi index 9f916d778..d69cab296 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi @@ -20,18 +20,18 @@ class PictureLocking(Serialisable): __elements__: Incomplete def __init__( self, - noCrop: Incomplete | None = ..., - noGrp: Incomplete | None = ..., - noSelect: Incomplete | None = ..., - noRot: Incomplete | None = ..., - noChangeAspect: Incomplete | None = ..., - noMove: Incomplete | None = ..., - noResize: Incomplete | None = ..., - noEditPoints: Incomplete | None = ..., - noAdjustHandles: Incomplete | None = ..., - noChangeArrowheads: Incomplete | None = ..., - noChangeShapeType: Incomplete | None = ..., - extLst: Incomplete | None = ..., + noCrop: Incomplete | None = None, + noGrp: Incomplete | None = None, + noSelect: Incomplete | None = None, + noRot: Incomplete | None = None, + noChangeAspect: Incomplete | None = None, + noMove: Incomplete | None = None, + noResize: Incomplete | None = None, + noEditPoints: Incomplete | None = None, + noAdjustHandles: Incomplete | None = None, + noChangeArrowheads: Incomplete | None = None, + noChangeShapeType: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class NonVisualPictureProperties(Serialisable): @@ -41,7 +41,7 @@ class NonVisualPictureProperties(Serialisable): extLst: Incomplete __elements__: Incomplete def __init__( - self, preferRelativeResize: Incomplete | None = ..., picLocks: Incomplete | None = ..., extLst: Incomplete | None = ... + self, preferRelativeResize: Incomplete | None = None, picLocks: Incomplete | None = None, extLst: Incomplete | None = None ) -> None: ... class PictureNonVisual(Serialisable): @@ -49,7 +49,7 @@ class PictureNonVisual(Serialisable): cNvPr: Incomplete cNvPicPr: Incomplete __elements__: Incomplete - def __init__(self, cNvPr: Incomplete | None = ..., cNvPicPr: Incomplete | None = ...) -> None: ... + def __init__(self, cNvPr: Incomplete | None = None, cNvPicPr: Incomplete | None = None) -> None: ... class PictureFrame(Serialisable): tagname: str @@ -63,10 +63,10 @@ class PictureFrame(Serialisable): __elements__: Incomplete def __init__( self, - macro: Incomplete | None = ..., - fPublished: Incomplete | None = ..., - nvPicPr: Incomplete | None = ..., - blipFill: Incomplete | None = ..., - spPr: Incomplete | None = ..., - style: Incomplete | None = ..., + macro: Incomplete | None = None, + fPublished: Incomplete | None = None, + nvPicPr: Incomplete | None = None, + blipFill: Incomplete | None = None, + spPr: Incomplete | None = None, + style: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi index a7fdff46c..56adb9e44 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi @@ -10,10 +10,10 @@ class GroupShapeProperties(Serialisable): extLst: Incomplete def __init__( self, - bwMode: Incomplete | None = ..., - xfrm: Incomplete | None = ..., - scene3d: Incomplete | None = ..., - extLst: Incomplete | None = ..., + bwMode: Incomplete | None = None, + xfrm: Incomplete | None = None, + scene3d: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class GroupLocking(Serialisable): @@ -34,18 +34,18 @@ class GroupLocking(Serialisable): __elements__: Incomplete def __init__( self, - noGrp: Incomplete | None = ..., - noUngrp: Incomplete | None = ..., - noSelect: Incomplete | None = ..., - noRot: Incomplete | None = ..., - noChangeAspect: Incomplete | None = ..., - noChangeArrowheads: Incomplete | None = ..., - noMove: Incomplete | None = ..., - noResize: Incomplete | None = ..., - noEditPoints: Incomplete | None = ..., - noAdjustHandles: Incomplete | None = ..., - noChangeShapeType: Incomplete | None = ..., - extLst: Incomplete | None = ..., + noGrp: Incomplete | None = None, + noUngrp: Incomplete | None = None, + noSelect: Incomplete | None = None, + noRot: Incomplete | None = None, + noChangeAspect: Incomplete | None = None, + noChangeArrowheads: Incomplete | None = None, + noMove: Incomplete | None = None, + noResize: Incomplete | None = None, + noEditPoints: Incomplete | None = None, + noAdjustHandles: Incomplete | None = None, + noChangeShapeType: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class NonVisualGroupDrawingShapeProps(Serialisable): @@ -53,7 +53,7 @@ class NonVisualGroupDrawingShapeProps(Serialisable): grpSpLocks: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, grpSpLocks: Incomplete | None = ..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, grpSpLocks: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... class NonVisualDrawingShapeProps(Serialisable): tagname: str @@ -63,7 +63,7 @@ class NonVisualDrawingShapeProps(Serialisable): __elements__: Incomplete txBox: Incomplete def __init__( - self, spLocks: Incomplete | None = ..., txBox: Incomplete | None = ..., extLst: Incomplete | None = ... + self, spLocks: Incomplete | None = None, txBox: Incomplete | None = None, extLst: Incomplete | None = None ) -> None: ... class NonVisualDrawingProps(Serialisable): @@ -79,14 +79,14 @@ class NonVisualDrawingProps(Serialisable): __elements__: Incomplete def __init__( self, - id: Incomplete | None = ..., - name: Incomplete | None = ..., - descr: Incomplete | None = ..., - hidden: Incomplete | None = ..., - title: Incomplete | None = ..., - hlinkClick: Incomplete | None = ..., - hlinkHover: Incomplete | None = ..., - extLst: Incomplete | None = ..., + id: Incomplete | None = None, + name: Incomplete | None = None, + descr: Incomplete | None = None, + hidden: Incomplete | None = None, + title: Incomplete | None = None, + hlinkClick: Incomplete | None = None, + hlinkHover: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class NonVisualGroupShape(Serialisable): @@ -94,4 +94,4 @@ class NonVisualGroupShape(Serialisable): cNvPr: Incomplete cNvGrpSpPr: Incomplete __elements__: Incomplete - def __init__(self, cNvPr: Incomplete | None = ..., cNvGrpSpPr: Incomplete | None = ...) -> None: ... + def __init__(self, cNvPr: Incomplete | None = None, cNvGrpSpPr: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi index 3e1de73b5..c413406d9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi @@ -5,7 +5,7 @@ from openpyxl.descriptors.serialisable import Serialisable class AnchorClientData(Serialisable): fLocksWithSheet: Incomplete fPrintsWithSheet: Incomplete - def __init__(self, fLocksWithSheet: Incomplete | None = ..., fPrintsWithSheet: Incomplete | None = ...) -> None: ... + def __init__(self, fLocksWithSheet: Incomplete | None = None, fPrintsWithSheet: Incomplete | None = None) -> None: ... class AnchorMarker(Serialisable): tagname: str @@ -13,7 +13,7 @@ class AnchorMarker(Serialisable): colOff: Incomplete row: Incomplete rowOff: Incomplete - def __init__(self, col: int = ..., colOff: int = ..., row: int = ..., rowOff: int = ...) -> None: ... + def __init__(self, col: int = 0, colOff: int = 0, row: int = 0, rowOff: int = 0) -> None: ... class _AnchorBase(Serialisable): sp: Incomplete @@ -29,13 +29,13 @@ class _AnchorBase(Serialisable): __elements__: Incomplete def __init__( self, - clientData: Incomplete | None = ..., - sp: Incomplete | None = ..., - grpSp: Incomplete | None = ..., - graphicFrame: Incomplete | None = ..., - cxnSp: Incomplete | None = ..., - pic: Incomplete | None = ..., - contentPart: Incomplete | None = ..., + clientData: Incomplete | None = None, + sp: Incomplete | None = None, + grpSp: Incomplete | None = None, + graphicFrame: Incomplete | None = None, + cxnSp: Incomplete | None = None, + pic: Incomplete | None = None, + contentPart: Incomplete | None = None, ) -> None: ... class AbsoluteAnchor(_AnchorBase): @@ -50,7 +50,7 @@ class AbsoluteAnchor(_AnchorBase): contentPart: Incomplete clientData: Incomplete __elements__: Incomplete - def __init__(self, pos: Incomplete | None = ..., ext: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, pos: Incomplete | None = None, ext: Incomplete | None = None, **kw) -> None: ... class OneCellAnchor(_AnchorBase): tagname: str @@ -63,7 +63,7 @@ class OneCellAnchor(_AnchorBase): contentPart: Incomplete clientData: Incomplete __elements__: Incomplete - def __init__(self, _from: Incomplete | None = ..., ext: Incomplete | None = ..., **kw) -> None: ... + def __init__(self, _from: Incomplete | None = None, ext: Incomplete | None = None, **kw) -> None: ... class TwoCellAnchor(_AnchorBase): tagname: str @@ -78,7 +78,7 @@ class TwoCellAnchor(_AnchorBase): clientData: Incomplete __elements__: Incomplete def __init__( - self, editAs: Incomplete | None = ..., _from: Incomplete | None = ..., to: Incomplete | None = ..., **kw + self, editAs: Incomplete | None = None, _from: Incomplete | None = None, to: Incomplete | None = None, **kw ) -> None: ... class SpreadsheetDrawing(Serialisable): @@ -91,7 +91,7 @@ class SpreadsheetDrawing(Serialisable): __elements__: Incomplete charts: Incomplete images: Incomplete - def __init__(self, twoCellAnchor=..., oneCellAnchor=..., absoluteAnchor=...) -> None: ... + def __init__(self, twoCellAnchor=(), oneCellAnchor=(), absoluteAnchor=()) -> None: ... def __hash__(self) -> int: ... def __bool__(self) -> bool: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi index 8ace87800..d7115ebab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi @@ -4,7 +4,7 @@ from openpyxl.descriptors.serialisable import Serialisable class EmbeddedWAVAudioFile(Serialisable): # type: ignore[misc] name: Incomplete - def __init__(self, name: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None) -> None: ... class Hyperlink(Serialisable): tagname: str @@ -22,16 +22,16 @@ class Hyperlink(Serialisable): __elements__: Incomplete def __init__( self, - invalidUrl: Incomplete | None = ..., - action: Incomplete | None = ..., - tgtFrame: Incomplete | None = ..., - tooltip: Incomplete | None = ..., - history: Incomplete | None = ..., - highlightClick: Incomplete | None = ..., - endSnd: Incomplete | None = ..., - snd: Incomplete | None = ..., - extLst: Incomplete | None = ..., - id: Incomplete | None = ..., + invalidUrl: Incomplete | None = None, + action: Incomplete | None = None, + tgtFrame: Incomplete | None = None, + tooltip: Incomplete | None = None, + history: Incomplete | None = None, + highlightClick: Incomplete | None = None, + endSnd: Incomplete | None = None, + snd: Incomplete | None = None, + extLst: Incomplete | None = None, + id: Incomplete | None = None, ) -> None: ... class Font(Serialisable): @@ -43,10 +43,10 @@ class Font(Serialisable): charset: Incomplete def __init__( self, - typeface: Incomplete | None = ..., - panose: Incomplete | None = ..., - pitchFamily: Incomplete | None = ..., - charset: Incomplete | None = ..., + typeface: Incomplete | None = None, + panose: Incomplete | None = None, + pitchFamily: Incomplete | None = None, + charset: Incomplete | None = None, ) -> None: ... class CharacterProperties(Serialisable): @@ -96,68 +96,68 @@ class CharacterProperties(Serialisable): __elements__: Incomplete def __init__( self, - kumimoji: Incomplete | None = ..., - lang: Incomplete | None = ..., - altLang: Incomplete | None = ..., - sz: Incomplete | None = ..., - b: Incomplete | None = ..., - i: Incomplete | None = ..., - u: Incomplete | None = ..., - strike: Incomplete | None = ..., - kern: Incomplete | None = ..., - cap: Incomplete | None = ..., - spc: Incomplete | None = ..., - normalizeH: Incomplete | None = ..., - baseline: Incomplete | None = ..., - noProof: Incomplete | None = ..., - dirty: Incomplete | None = ..., - err: Incomplete | None = ..., - smtClean: Incomplete | None = ..., - smtId: Incomplete | None = ..., - bmk: Incomplete | None = ..., - ln: Incomplete | None = ..., - highlight: Incomplete | None = ..., - latin: Incomplete | None = ..., - ea: Incomplete | None = ..., - cs: Incomplete | None = ..., - sym: Incomplete | None = ..., - hlinkClick: Incomplete | None = ..., - hlinkMouseOver: Incomplete | None = ..., - rtl: Incomplete | None = ..., - extLst: Incomplete | None = ..., - noFill: Incomplete | None = ..., - solidFill: Incomplete | None = ..., - gradFill: Incomplete | None = ..., - blipFill: Incomplete | None = ..., - pattFill: Incomplete | None = ..., - grpFill: Incomplete | None = ..., - effectLst: Incomplete | None = ..., - effectDag: Incomplete | None = ..., - uLnTx: Incomplete | None = ..., - uLn: Incomplete | None = ..., - uFillTx: Incomplete | None = ..., - uFill: Incomplete | None = ..., + kumimoji: Incomplete | None = None, + lang: Incomplete | None = None, + altLang: Incomplete | None = None, + sz: Incomplete | None = None, + b: Incomplete | None = None, + i: Incomplete | None = None, + u: Incomplete | None = None, + strike: Incomplete | None = None, + kern: Incomplete | None = None, + cap: Incomplete | None = None, + spc: Incomplete | None = None, + normalizeH: Incomplete | None = None, + baseline: Incomplete | None = None, + noProof: Incomplete | None = None, + dirty: Incomplete | None = None, + err: Incomplete | None = None, + smtClean: Incomplete | None = None, + smtId: Incomplete | None = None, + bmk: Incomplete | None = None, + ln: Incomplete | None = None, + highlight: Incomplete | None = None, + latin: Incomplete | None = None, + ea: Incomplete | None = None, + cs: Incomplete | None = None, + sym: Incomplete | None = None, + hlinkClick: Incomplete | None = None, + hlinkMouseOver: Incomplete | None = None, + rtl: Incomplete | None = None, + extLst: Incomplete | None = None, + noFill: Incomplete | None = None, + solidFill: Incomplete | None = None, + gradFill: Incomplete | None = None, + blipFill: Incomplete | None = None, + pattFill: Incomplete | None = None, + grpFill: Incomplete | None = None, + effectLst: Incomplete | None = None, + effectDag: Incomplete | None = None, + uLnTx: Incomplete | None = None, + uLn: Incomplete | None = None, + uFillTx: Incomplete | None = None, + uFill: Incomplete | None = None, ) -> None: ... class TabStop(Serialisable): # type: ignore[misc] pos: Incomplete algn: Incomplete - def __init__(self, pos: Incomplete | None = ..., algn: Incomplete | None = ...) -> None: ... + def __init__(self, pos: Incomplete | None = None, algn: Incomplete | None = None) -> None: ... class TabStopList(Serialisable): # type: ignore[misc] tab: Incomplete - def __init__(self, tab: Incomplete | None = ...) -> None: ... + def __init__(self, tab: Incomplete | None = None) -> None: ... class Spacing(Serialisable): spcPct: Incomplete spcPts: Incomplete __elements__: Incomplete - def __init__(self, spcPct: Incomplete | None = ..., spcPts: Incomplete | None = ...) -> None: ... + def __init__(self, spcPct: Incomplete | None = None, spcPts: Incomplete | None = None) -> None: ... class AutonumberBullet(Serialisable): type: Incomplete startAt: Incomplete - def __init__(self, type: Incomplete | None = ..., startAt: Incomplete | None = ...) -> None: ... + def __init__(self, type: Incomplete | None = None, startAt: Incomplete | None = None) -> None: ... class ParagraphProperties(Serialisable): tagname: str @@ -193,34 +193,34 @@ class ParagraphProperties(Serialisable): __elements__: Incomplete def __init__( self, - marL: Incomplete | None = ..., - marR: Incomplete | None = ..., - lvl: Incomplete | None = ..., - indent: Incomplete | None = ..., - algn: Incomplete | None = ..., - defTabSz: Incomplete | None = ..., - rtl: Incomplete | None = ..., - eaLnBrk: Incomplete | None = ..., - fontAlgn: Incomplete | None = ..., - latinLnBrk: Incomplete | None = ..., - hangingPunct: Incomplete | None = ..., - lnSpc: Incomplete | None = ..., - spcBef: Incomplete | None = ..., - spcAft: Incomplete | None = ..., - tabLst: Incomplete | None = ..., - defRPr: Incomplete | None = ..., - extLst: Incomplete | None = ..., - buClrTx: Incomplete | None = ..., - buClr: Incomplete | None = ..., - buSzTx: Incomplete | None = ..., - buSzPct: Incomplete | None = ..., - buSzPts: Incomplete | None = ..., - buFontTx: Incomplete | None = ..., - buFont: Incomplete | None = ..., - buNone: Incomplete | None = ..., - buAutoNum: Incomplete | None = ..., - buChar: Incomplete | None = ..., - buBlip: Incomplete | None = ..., + marL: Incomplete | None = None, + marR: Incomplete | None = None, + lvl: Incomplete | None = None, + indent: Incomplete | None = None, + algn: Incomplete | None = None, + defTabSz: Incomplete | None = None, + rtl: Incomplete | None = None, + eaLnBrk: Incomplete | None = None, + fontAlgn: Incomplete | None = None, + latinLnBrk: Incomplete | None = None, + hangingPunct: Incomplete | None = None, + lnSpc: Incomplete | None = None, + spcBef: Incomplete | None = None, + spcAft: Incomplete | None = None, + tabLst: Incomplete | None = None, + defRPr: Incomplete | None = None, + extLst: Incomplete | None = None, + buClrTx: Incomplete | None = None, + buClr: Incomplete | None = None, + buSzTx: Incomplete | None = None, + buSzPct: Incomplete | None = None, + buSzPts: Incomplete | None = None, + buFontTx: Incomplete | None = None, + buFont: Incomplete | None = None, + buNone: Incomplete | None = None, + buAutoNum: Incomplete | None = None, + buChar: Incomplete | None = None, + buBlip: Incomplete | None = None, ) -> None: ... class ListStyle(Serialisable): @@ -240,17 +240,17 @@ class ListStyle(Serialisable): __elements__: Incomplete def __init__( self, - defPPr: Incomplete | None = ..., - lvl1pPr: Incomplete | None = ..., - lvl2pPr: Incomplete | None = ..., - lvl3pPr: Incomplete | None = ..., - lvl4pPr: Incomplete | None = ..., - lvl5pPr: Incomplete | None = ..., - lvl6pPr: Incomplete | None = ..., - lvl7pPr: Incomplete | None = ..., - lvl8pPr: Incomplete | None = ..., - lvl9pPr: Incomplete | None = ..., - extLst: Incomplete | None = ..., + defPPr: Incomplete | None = None, + lvl1pPr: Incomplete | None = None, + lvl2pPr: Incomplete | None = None, + lvl3pPr: Incomplete | None = None, + lvl4pPr: Incomplete | None = None, + lvl5pPr: Incomplete | None = None, + lvl6pPr: Incomplete | None = None, + lvl7pPr: Incomplete | None = None, + lvl8pPr: Incomplete | None = None, + lvl9pPr: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class RegularTextRun(Serialisable): @@ -261,14 +261,14 @@ class RegularTextRun(Serialisable): t: Incomplete value: Incomplete __elements__: Incomplete - def __init__(self, rPr: Incomplete | None = ..., t: str = ...) -> None: ... + def __init__(self, rPr: Incomplete | None = None, t: str = "") -> None: ... class LineBreak(Serialisable): tagname: str namespace: Incomplete rPr: Incomplete __elements__: Incomplete - def __init__(self, rPr: Incomplete | None = ...) -> None: ... + def __init__(self, rPr: Incomplete | None = None) -> None: ... class TextField(Serialisable): id: Incomplete @@ -279,11 +279,11 @@ class TextField(Serialisable): __elements__: Incomplete def __init__( self, - id: Incomplete | None = ..., - type: Incomplete | None = ..., - rPr: Incomplete | None = ..., - pPr: Incomplete | None = ..., - t: Incomplete | None = ..., + id: Incomplete | None = None, + type: Incomplete | None = None, + rPr: Incomplete | None = None, + pPr: Incomplete | None = None, + t: Incomplete | None = None, ) -> None: ... class Paragraph(Serialisable): @@ -299,31 +299,31 @@ class Paragraph(Serialisable): __elements__: Incomplete def __init__( self, - pPr: Incomplete | None = ..., - endParaRPr: Incomplete | None = ..., - r: Incomplete | None = ..., - br: Incomplete | None = ..., - fld: Incomplete | None = ..., + pPr: Incomplete | None = None, + endParaRPr: Incomplete | None = None, + r: Incomplete | None = None, + br: Incomplete | None = None, + fld: Incomplete | None = None, ) -> None: ... class GeomGuide(Serialisable): name: Incomplete fmla: Incomplete - def __init__(self, name: Incomplete | None = ..., fmla: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None, fmla: Incomplete | None = None) -> None: ... class GeomGuideList(Serialisable): gd: Incomplete - def __init__(self, gd: Incomplete | None = ...) -> None: ... + def __init__(self, gd: Incomplete | None = None) -> None: ... class PresetTextShape(Serialisable): prst: Incomplete avLst: Incomplete - def __init__(self, prst: Incomplete | None = ..., avLst: Incomplete | None = ...) -> None: ... + def __init__(self, prst: Incomplete | None = None, avLst: Incomplete | None = None) -> None: ... class TextNormalAutofit(Serialisable): fontScale: Incomplete lnSpcReduction: Incomplete - def __init__(self, fontScale: Incomplete | None = ..., lnSpcReduction: Incomplete | None = ...) -> None: ... + def __init__(self, fontScale: Incomplete | None = None, lnSpcReduction: Incomplete | None = None) -> None: ... class RichTextProperties(Serialisable): tagname: str @@ -357,30 +357,30 @@ class RichTextProperties(Serialisable): __elements__: Incomplete def __init__( self, - rot: Incomplete | None = ..., - spcFirstLastPara: Incomplete | None = ..., - vertOverflow: Incomplete | None = ..., - horzOverflow: Incomplete | None = ..., - vert: Incomplete | None = ..., - wrap: Incomplete | None = ..., - lIns: Incomplete | None = ..., - tIns: Incomplete | None = ..., - rIns: Incomplete | None = ..., - bIns: Incomplete | None = ..., - numCol: Incomplete | None = ..., - spcCol: Incomplete | None = ..., - rtlCol: Incomplete | None = ..., - fromWordArt: Incomplete | None = ..., - anchor: Incomplete | None = ..., - anchorCtr: Incomplete | None = ..., - forceAA: Incomplete | None = ..., - upright: Incomplete | None = ..., - compatLnSpc: Incomplete | None = ..., - prstTxWarp: Incomplete | None = ..., - scene3d: Incomplete | None = ..., - extLst: Incomplete | None = ..., - noAutofit: Incomplete | None = ..., - normAutofit: Incomplete | None = ..., - spAutoFit: Incomplete | None = ..., - flatTx: Incomplete | None = ..., + rot: Incomplete | None = None, + spcFirstLastPara: Incomplete | None = None, + vertOverflow: Incomplete | None = None, + horzOverflow: Incomplete | None = None, + vert: Incomplete | None = None, + wrap: Incomplete | None = None, + lIns: Incomplete | None = None, + tIns: Incomplete | None = None, + rIns: Incomplete | None = None, + bIns: Incomplete | None = None, + numCol: Incomplete | None = None, + spcCol: Incomplete | None = None, + rtlCol: Incomplete | None = None, + fromWordArt: Incomplete | None = None, + anchor: Incomplete | None = None, + anchorCtr: Incomplete | None = None, + forceAA: Incomplete | None = None, + upright: Incomplete | None = None, + compatLnSpc: Incomplete | None = None, + prstTxWarp: Incomplete | None = None, + scene3d: Incomplete | None = None, + extLst: Incomplete | None = None, + noAutofit: Incomplete | None = None, + normAutofit: Incomplete | None = None, + spAutoFit: Incomplete | None = None, + flatTx: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi index e4dfa0bc8..3b34563fd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi @@ -9,7 +9,7 @@ class ConditionalFormatting(Serialisable): pivot: Incomplete cfRule: Incomplete rules: Incomplete - def __init__(self, sqref=..., pivot: Incomplete | None = ..., cfRule=..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, sqref=(), pivot: Incomplete | None = None, cfRule=(), extLst: Incomplete | None = None) -> None: ... def __eq__(self, other): ... def __hash__(self) -> int: ... def __contains__(self, coord): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi index 5807e1f5f..958431086 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi @@ -15,7 +15,7 @@ class FormatObject(Serialisable): extLst: Incomplete __elements__: Incomplete def __init__( - self, type, val: Incomplete | None = ..., gte: Incomplete | None = ..., extLst: Incomplete | None = ... + self, type, val: Incomplete | None = None, gte: Incomplete | None = None, extLst: Incomplete | None = None ) -> None: ... class RuleType(Serialisable): # type: ignore[misc] @@ -31,11 +31,11 @@ class IconSet(RuleType): cfvo: Incomplete def __init__( self, - iconSet: Incomplete | None = ..., - showValue: Incomplete | None = ..., - percent: Incomplete | None = ..., - reverse: Incomplete | None = ..., - cfvo: Incomplete | None = ..., + iconSet: Incomplete | None = None, + showValue: Incomplete | None = None, + percent: Incomplete | None = None, + reverse: Incomplete | None = None, + cfvo: Incomplete | None = None, ) -> None: ... class DataBar(RuleType): @@ -48,11 +48,11 @@ class DataBar(RuleType): cfvo: Incomplete def __init__( self, - minLength: Incomplete | None = ..., - maxLength: Incomplete | None = ..., - showValue: Incomplete | None = ..., - cfvo: Incomplete | None = ..., - color: Incomplete | None = ..., + minLength: Incomplete | None = None, + maxLength: Incomplete | None = None, + showValue: Incomplete | None = None, + cfvo: Incomplete | None = None, + color: Incomplete | None = None, ) -> None: ... class ColorScale(RuleType): @@ -60,7 +60,7 @@ class ColorScale(RuleType): color: Incomplete __elements__: Incomplete cfvo: Incomplete - def __init__(self, cfvo: Incomplete | None = ..., color: Incomplete | None = ...) -> None: ... + def __init__(self, cfvo: Incomplete | None = None, color: Incomplete | None = None) -> None: ... class Rule(Serialisable): tagname: str @@ -88,67 +88,67 @@ class Rule(Serialisable): def __init__( self, type, - dxfId: Incomplete | None = ..., - priority: int = ..., - stopIfTrue: Incomplete | None = ..., - aboveAverage: Incomplete | None = ..., - percent: Incomplete | None = ..., - bottom: Incomplete | None = ..., - operator: Incomplete | None = ..., - text: Incomplete | None = ..., - timePeriod: Incomplete | None = ..., - rank: Incomplete | None = ..., - stdDev: Incomplete | None = ..., - equalAverage: Incomplete | None = ..., - formula=..., - colorScale: Incomplete | None = ..., - dataBar: Incomplete | None = ..., - iconSet: Incomplete | None = ..., - extLst: Incomplete | None = ..., - dxf: Incomplete | None = ..., + dxfId: Incomplete | None = None, + priority: int = 0, + stopIfTrue: Incomplete | None = None, + aboveAverage: Incomplete | None = None, + percent: Incomplete | None = None, + bottom: Incomplete | None = None, + operator: Incomplete | None = None, + text: Incomplete | None = None, + timePeriod: Incomplete | None = None, + rank: Incomplete | None = None, + stdDev: Incomplete | None = None, + equalAverage: Incomplete | None = None, + formula=(), + colorScale: Incomplete | None = None, + dataBar: Incomplete | None = None, + iconSet: Incomplete | None = None, + extLst: Incomplete | None = None, + dxf: Incomplete | None = None, ) -> None: ... def ColorScaleRule( - start_type: Incomplete | None = ..., - start_value: Incomplete | None = ..., - start_color: Incomplete | None = ..., - mid_type: Incomplete | None = ..., - mid_value: Incomplete | None = ..., - mid_color: Incomplete | None = ..., - end_type: Incomplete | None = ..., - end_value: Incomplete | None = ..., - end_color: Incomplete | None = ..., + start_type: Incomplete | None = None, + start_value: Incomplete | None = None, + start_color: Incomplete | None = None, + mid_type: Incomplete | None = None, + mid_value: Incomplete | None = None, + mid_color: Incomplete | None = None, + end_type: Incomplete | None = None, + end_value: Incomplete | None = None, + end_color: Incomplete | None = None, ): ... def FormulaRule( - formula: Incomplete | None = ..., - stopIfTrue: Incomplete | None = ..., - font: Incomplete | None = ..., - border: Incomplete | None = ..., - fill: Incomplete | None = ..., + formula: Incomplete | None = None, + stopIfTrue: Incomplete | None = None, + font: Incomplete | None = None, + border: Incomplete | None = None, + fill: Incomplete | None = None, ): ... def CellIsRule( - operator: Incomplete | None = ..., - formula: Incomplete | None = ..., - stopIfTrue: Incomplete | None = ..., - font: Incomplete | None = ..., - border: Incomplete | None = ..., - fill: Incomplete | None = ..., + operator: Incomplete | None = None, + formula: Incomplete | None = None, + stopIfTrue: Incomplete | None = None, + font: Incomplete | None = None, + border: Incomplete | None = None, + fill: Incomplete | None = None, ): ... def IconSetRule( - icon_style: Incomplete | None = ..., - type: Incomplete | None = ..., - values: Incomplete | None = ..., - showValue: Incomplete | None = ..., - percent: Incomplete | None = ..., - reverse: Incomplete | None = ..., + icon_style: Incomplete | None = None, + type: Incomplete | None = None, + values: Incomplete | None = None, + showValue: Incomplete | None = None, + percent: Incomplete | None = None, + reverse: Incomplete | None = None, ): ... def DataBarRule( - start_type: Incomplete | None = ..., - start_value: Incomplete | None = ..., - end_type: Incomplete | None = ..., - end_value: Incomplete | None = ..., - color: Incomplete | None = ..., - showValue: Incomplete | None = ..., - minLength: Incomplete | None = ..., - maxLength: Incomplete | None = ..., + start_type: Incomplete | None = None, + start_value: Incomplete | None = None, + end_type: Incomplete | None = None, + end_value: Incomplete | None = None, + color: Incomplete | None = None, + showValue: Incomplete | None = None, + minLength: Incomplete | None = None, + maxLength: Incomplete | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/tokenizer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/tokenizer.pyi index 16129f95f..4f2561741 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/tokenizer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/tokenizer.pyi @@ -15,7 +15,7 @@ class Tokenizer: token: Incomplete def __init__(self, formula) -> None: ... def check_scientific_notation(self): ... - def assert_empty_token(self, can_follow=...) -> None: ... + def assert_empty_token(self, can_follow=()) -> None: ... def save_token(self) -> None: ... def render(self): ... @@ -33,7 +33,7 @@ class Token: value: Incomplete type: Incomplete subtype: Incomplete - def __init__(self, value, type_, subtype: str = ...) -> None: ... + def __init__(self, value, type_, subtype: str = "") -> None: ... TEXT: str NUMBER: str LOGICAL: str @@ -44,7 +44,7 @@ class Token: OPEN: str CLOSE: str @classmethod - def make_subexp(cls, value, func: bool = ...): ... + def make_subexp(cls, value, func: bool = False): ... def get_closer(self): ... ARG: str ROW: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/translate.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/translate.pyi index 0904e1e64..61c618730 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/translate.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/translate.pyi @@ -17,4 +17,4 @@ class Translator: def strip_ws_name(range_str): ... @classmethod def translate_range(cls, range_str, rdelta, cdelta): ... - def translate_formula(self, dest: Incomplete | None = ..., row_delta: int = ..., col_delta: int = ...): ... + def translate_formula(self, dest: Incomplete | None = None, row_delta: int = 0, col_delta: int = 0): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi index 0fb87a72a..4162220c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi @@ -6,10 +6,14 @@ from openpyxl.descriptors.serialisable import Serialisable class NestedDateTime(DateTime, NestedText): expected_type: Incomplete - def to_tree(self, tagname: Incomplete | None = ..., value: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def to_tree( + self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None + ): ... class QualifiedDateTime(NestedDateTime): - def to_tree(self, tagname: Incomplete | None = ..., value: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def to_tree( + self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None + ): ... class DocumentProperties(Serialisable): tagname: str @@ -33,19 +37,19 @@ class DocumentProperties(Serialisable): __elements__: Incomplete def __init__( self, - category: Incomplete | None = ..., - contentStatus: Incomplete | None = ..., - keywords: Incomplete | None = ..., - lastModifiedBy: Incomplete | None = ..., - lastPrinted: Incomplete | None = ..., - revision: Incomplete | None = ..., - version: Incomplete | None = ..., - created=..., - creator: str = ..., - description: Incomplete | None = ..., - identifier: Incomplete | None = ..., - language: Incomplete | None = ..., - modified=..., - subject: Incomplete | None = ..., - title: Incomplete | None = ..., + category: Incomplete | None = None, + contentStatus: Incomplete | None = None, + keywords: Incomplete | None = None, + lastModifiedBy: Incomplete | None = None, + lastPrinted: Incomplete | None = None, + revision: Incomplete | None = None, + version: Incomplete | None = None, + created=None, + creator: str = "openpyxl", + description: Incomplete | None = None, + identifier: Incomplete | None = None, + language: Incomplete | None = None, + modified=None, + subject: Incomplete | None = None, + title: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi new file mode 100644 index 000000000..6de2d4756 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi @@ -0,0 +1,49 @@ +from _typeshed import Incomplete +from collections.abc import Iterator +from typing_extensions import Self + +from openpyxl.descriptors import Bool, DateTime, Float, Integer, Sequence, Strict, String +from openpyxl.descriptors.nested import NestedText + +class NestedBoolText(Bool, NestedText): ... + +class _TypedProperty(Strict): + name: String + value: Incomplete + def __init__(self, name: str, value) -> None: ... + def __eq__(self, other: _TypedProperty) -> bool: ... # type: ignore[override] + +class IntProperty(_TypedProperty): + value: Integer + +class FloatProperty(_TypedProperty): + value: Float + +class StringProperty(_TypedProperty): + value: String + +class DateTimeProperty(_TypedProperty): + value: DateTime + +class BoolProperty(_TypedProperty): + value: Bool + +class LinkProperty(_TypedProperty): + value: String + +CLASS_MAPPING: Incomplete +XML_MAPPING: Incomplete + +class CustomPropertyList(Strict): + props: Sequence + def __init__(self) -> None: ... + @classmethod + def from_tree(cls, tree) -> Self: ... + def append(self, prop) -> None: ... + def to_tree(self): ... + def __len__(self) -> int: ... + @property + def names(self) -> list[str]: ... + def __getitem__(self, name): ... + def __delitem__(self, name) -> None: ... + def __iter__(self) -> Iterator[Incomplete]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi index 644279d1a..7b4ca3f0d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi @@ -48,32 +48,32 @@ class ExtendedProperties(Serialisable): __elements__: Incomplete def __init__( self, - Template: Incomplete | None = ..., - Manager: Incomplete | None = ..., - Company: Incomplete | None = ..., - Pages: Incomplete | None = ..., - Words: Incomplete | None = ..., - Characters: Incomplete | None = ..., - PresentationFormat: Incomplete | None = ..., - Lines: Incomplete | None = ..., - Paragraphs: Incomplete | None = ..., - Slides: Incomplete | None = ..., - Notes: Incomplete | None = ..., - TotalTime: Incomplete | None = ..., - HiddenSlides: Incomplete | None = ..., - MMClips: Incomplete | None = ..., - ScaleCrop: Incomplete | None = ..., - HeadingPairs: Incomplete | None = ..., - TitlesOfParts: Incomplete | None = ..., - LinksUpToDate: Incomplete | None = ..., - CharactersWithSpaces: Incomplete | None = ..., - SharedDoc: Incomplete | None = ..., - HyperlinkBase: Incomplete | None = ..., - HLinks: Incomplete | None = ..., - HyperlinksChanged: Incomplete | None = ..., - DigSig: Incomplete | None = ..., - Application: str = ..., - AppVersion: Incomplete | None = ..., - DocSecurity: Incomplete | None = ..., + Template: Incomplete | None = None, + Manager: Incomplete | None = None, + Company: Incomplete | None = None, + Pages: Incomplete | None = None, + Words: Incomplete | None = None, + Characters: Incomplete | None = None, + PresentationFormat: Incomplete | None = None, + Lines: Incomplete | None = None, + Paragraphs: Incomplete | None = None, + Slides: Incomplete | None = None, + Notes: Incomplete | None = None, + TotalTime: Incomplete | None = None, + HiddenSlides: Incomplete | None = None, + MMClips: Incomplete | None = None, + ScaleCrop: Incomplete | None = None, + HeadingPairs: Incomplete | None = None, + TitlesOfParts: Incomplete | None = None, + LinksUpToDate: Incomplete | None = None, + CharactersWithSpaces: Incomplete | None = None, + SharedDoc: Incomplete | None = None, + HyperlinkBase: Incomplete | None = None, + HLinks: Incomplete | None = None, + HyperlinksChanged: Incomplete | None = None, + DigSig: Incomplete | None = None, + Application: str = "Microsoft Excel", + AppVersion: Incomplete | None = None, + DocSecurity: Incomplete | None = None, ) -> None: ... def to_tree(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi index 78ee86788..26a1cb5be 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi @@ -26,7 +26,7 @@ class Manifest(Serialisable): Override: Incomplete path: str __elements__: Incomplete - def __init__(self, Default=..., Override=...) -> None: ... + def __init__(self, Default=(), Override=()) -> None: ... @property def filenames(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi index c8447aa97..e39941b0c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi @@ -13,17 +13,17 @@ class Relationship(Serialisable): id: Incomplete def __init__( self, - Id: Incomplete | None = ..., - Type: Incomplete | None = ..., - type: Incomplete | None = ..., - Target: Incomplete | None = ..., - TargetMode: Incomplete | None = ..., + Id: Incomplete | None = None, + Type: Incomplete | None = None, + type: Incomplete | None = None, + Target: Incomplete | None = None, + TargetMode: Incomplete | None = None, ) -> None: ... class RelationshipList(Serialisable): tagname: str Relationship: Incomplete - def __init__(self, Relationship=...) -> None: ... + def __init__(self, Relationship=()) -> None: ... def append(self, value) -> None: ... def __len__(self) -> int: ... def __bool__(self) -> bool: ... @@ -33,4 +33,4 @@ class RelationshipList(Serialisable): def get_rels_path(path): ... def get_dependents(archive, filename): ... -def get_rel(archive, deps, id: Incomplete | None = ..., cls: Incomplete | None = ...): ... +def get_rel(archive, deps, id: Incomplete | None = None, cls: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi index a9b7497d7..d29395ad4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi @@ -10,10 +10,10 @@ class FileRecoveryProperties(Serialisable): repairLoad: Incomplete def __init__( self, - autoRecover: Incomplete | None = ..., - crashSave: Incomplete | None = ..., - dataExtractLoad: Incomplete | None = ..., - repairLoad: Incomplete | None = ..., + autoRecover: Incomplete | None = None, + crashSave: Incomplete | None = None, + dataExtractLoad: Incomplete | None = None, + repairLoad: Incomplete | None = None, ) -> None: ... class ChildSheet(Serialisable): @@ -23,14 +23,18 @@ class ChildSheet(Serialisable): state: Incomplete id: Incomplete def __init__( - self, name: Incomplete | None = ..., sheetId: Incomplete | None = ..., state: str = ..., id: Incomplete | None = ... + self, + name: Incomplete | None = None, + sheetId: Incomplete | None = None, + state: str = "visible", + id: Incomplete | None = None, ) -> None: ... class PivotCache(Serialisable): tagname: str cacheId: Incomplete id: Incomplete - def __init__(self, cacheId: Incomplete | None = ..., id: Incomplete | None = ...) -> None: ... + def __init__(self, cacheId: Incomplete | None = None, id: Incomplete | None = None) -> None: ... class WorkbookPackage(Serialisable): tagname: str @@ -59,27 +63,27 @@ class WorkbookPackage(Serialisable): __elements__: Incomplete def __init__( self, - conformance: Incomplete | None = ..., - fileVersion: Incomplete | None = ..., - fileSharing: Incomplete | None = ..., - workbookPr: Incomplete | None = ..., - workbookProtection: Incomplete | None = ..., - bookViews=..., - sheets=..., - functionGroups: Incomplete | None = ..., - externalReferences=..., - definedNames: Incomplete | None = ..., - calcPr: Incomplete | None = ..., - oleSize: Incomplete | None = ..., - customWorkbookViews=..., - pivotCaches=..., - smartTagPr: Incomplete | None = ..., - smartTagTypes: Incomplete | None = ..., - webPublishing: Incomplete | None = ..., - fileRecoveryPr: Incomplete | None = ..., - webPublishObjects: Incomplete | None = ..., - extLst: Incomplete | None = ..., - Ignorable: Incomplete | None = ..., + conformance: Incomplete | None = None, + fileVersion: Incomplete | None = None, + fileSharing: Incomplete | None = None, + workbookPr: Incomplete | None = None, + workbookProtection: Incomplete | None = None, + bookViews=(), + sheets=(), + functionGroups: Incomplete | None = None, + externalReferences=(), + definedNames: Incomplete | None = None, + calcPr: Incomplete | None = None, + oleSize: Incomplete | None = None, + customWorkbookViews=(), + pivotCaches=(), + smartTagPr: Incomplete | None = None, + smartTagTypes: Incomplete | None = None, + webPublishing: Incomplete | None = None, + fileRecoveryPr: Incomplete | None = None, + webPublishObjects: Incomplete | None = None, + extLst: Incomplete | None = None, + Ignorable: Incomplete | None = None, ) -> None: ... def to_tree(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi index 3c4906403..f807b116f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi @@ -6,13 +6,13 @@ class MeasureDimensionMap(Serialisable): tagname: str measureGroup: Incomplete dimension: Incomplete - def __init__(self, measureGroup: Incomplete | None = ..., dimension: Incomplete | None = ...) -> None: ... + def __init__(self, measureGroup: Incomplete | None = None, dimension: Incomplete | None = None) -> None: ... class MeasureGroup(Serialisable): tagname: str name: Incomplete caption: Incomplete - def __init__(self, name: Incomplete | None = ..., caption: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None, caption: Incomplete | None = None) -> None: ... class PivotDimension(Serialisable): tagname: str @@ -22,10 +22,10 @@ class PivotDimension(Serialisable): caption: Incomplete def __init__( self, - measure: Incomplete | None = ..., - name: Incomplete | None = ..., - uniqueName: Incomplete | None = ..., - caption: Incomplete | None = ..., + measure: Incomplete | None = None, + name: Incomplete | None = None, + uniqueName: Incomplete | None = None, + caption: Incomplete | None = None, ) -> None: ... class CalculatedMember(Serialisable): @@ -41,14 +41,14 @@ class CalculatedMember(Serialisable): __elements__: Incomplete def __init__( self, - name: Incomplete | None = ..., - mdx: Incomplete | None = ..., - memberName: Incomplete | None = ..., - hierarchy: Incomplete | None = ..., - parent: Incomplete | None = ..., - solveOrder: Incomplete | None = ..., - set: Incomplete | None = ..., - extLst: Incomplete | None = ..., + name: Incomplete | None = None, + mdx: Incomplete | None = None, + memberName: Incomplete | None = None, + hierarchy: Incomplete | None = None, + parent: Incomplete | None = None, + solveOrder: Incomplete | None = None, + set: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class CalculatedItem(Serialisable): @@ -60,24 +60,24 @@ class CalculatedItem(Serialisable): __elements__: Incomplete def __init__( self, - field: Incomplete | None = ..., - formula: Incomplete | None = ..., - pivotArea: Incomplete | None = ..., - extLst: Incomplete | None = ..., + field: Incomplete | None = None, + formula: Incomplete | None = None, + pivotArea: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class ServerFormat(Serialisable): tagname: str culture: Incomplete format: Incomplete - def __init__(self, culture: Incomplete | None = ..., format: Incomplete | None = ...) -> None: ... + def __init__(self, culture: Incomplete | None = None, format: Incomplete | None = None) -> None: ... class ServerFormatList(Serialisable): tagname: str serverFormat: Incomplete __elements__: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., serverFormat: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, serverFormat: Incomplete | None = None) -> None: ... @property def count(self): ... @@ -86,14 +86,14 @@ class Query(Serialisable): mdx: Incomplete tpls: Incomplete __elements__: Incomplete - def __init__(self, mdx: Incomplete | None = ..., tpls: Incomplete | None = ...) -> None: ... + def __init__(self, mdx: Incomplete | None = None, tpls: Incomplete | None = None) -> None: ... class QueryCache(Serialisable): tagname: str count: Incomplete query: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., query: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, query: Incomplete | None = None) -> None: ... class OLAPSet(Serialisable): tagname: str @@ -107,20 +107,20 @@ class OLAPSet(Serialisable): __elements__: Incomplete def __init__( self, - count: Incomplete | None = ..., - maxRank: Incomplete | None = ..., - setDefinition: Incomplete | None = ..., - sortType: Incomplete | None = ..., - queryFailed: Incomplete | None = ..., - tpls: Incomplete | None = ..., - sortByTuple: Incomplete | None = ..., + count: Incomplete | None = None, + maxRank: Incomplete | None = None, + setDefinition: Incomplete | None = None, + sortType: Incomplete | None = None, + queryFailed: Incomplete | None = None, + tpls: Incomplete | None = None, + sortByTuple: Incomplete | None = None, ) -> None: ... class OLAPSets(Serialisable): # type: ignore[misc] count: Incomplete set: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., set: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, set: Incomplete | None = None) -> None: ... class PCDSDTCEntries(Serialisable): tagname: str @@ -132,11 +132,11 @@ class PCDSDTCEntries(Serialisable): __elements__: Incomplete def __init__( self, - count: Incomplete | None = ..., - m: Incomplete | None = ..., - n: Incomplete | None = ..., - e: Incomplete | None = ..., - s: Incomplete | None = ..., + count: Incomplete | None = None, + m: Incomplete | None = None, + n: Incomplete | None = None, + e: Incomplete | None = None, + s: Incomplete | None = None, ) -> None: ... class TupleCache(Serialisable): @@ -149,11 +149,11 @@ class TupleCache(Serialisable): __elements__: Incomplete def __init__( self, - entries: Incomplete | None = ..., - sets: Incomplete | None = ..., - queryCache: Incomplete | None = ..., - serverFormats: Incomplete | None = ..., - extLst: Incomplete | None = ..., + entries: Incomplete | None = None, + sets: Incomplete | None = None, + queryCache: Incomplete | None = None, + serverFormats: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class PCDKPI(Serialisable): @@ -171,30 +171,30 @@ class PCDKPI(Serialisable): time: Incomplete def __init__( self, - uniqueName: Incomplete | None = ..., - caption: Incomplete | None = ..., - displayFolder: Incomplete | None = ..., - measureGroup: Incomplete | None = ..., - parent: Incomplete | None = ..., - value: Incomplete | None = ..., - goal: Incomplete | None = ..., - status: Incomplete | None = ..., - trend: Incomplete | None = ..., - weight: Incomplete | None = ..., - time: Incomplete | None = ..., + uniqueName: Incomplete | None = None, + caption: Incomplete | None = None, + displayFolder: Incomplete | None = None, + measureGroup: Incomplete | None = None, + parent: Incomplete | None = None, + value: Incomplete | None = None, + goal: Incomplete | None = None, + status: Incomplete | None = None, + trend: Incomplete | None = None, + weight: Incomplete | None = None, + time: Incomplete | None = None, ) -> None: ... class GroupMember(Serialisable): tagname: str uniqueName: Incomplete group: Incomplete - def __init__(self, uniqueName: Incomplete | None = ..., group: Incomplete | None = ...) -> None: ... + def __init__(self, uniqueName: Incomplete | None = None, group: Incomplete | None = None) -> None: ... class GroupMembers(Serialisable): # type: ignore[misc] count: Incomplete groupMember: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., groupMember: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, groupMember: Incomplete | None = None) -> None: ... class LevelGroup(Serialisable): tagname: str @@ -207,12 +207,12 @@ class LevelGroup(Serialisable): __elements__: Incomplete def __init__( self, - name: Incomplete | None = ..., - uniqueName: Incomplete | None = ..., - caption: Incomplete | None = ..., - uniqueParent: Incomplete | None = ..., - id: Incomplete | None = ..., - groupMembers: Incomplete | None = ..., + name: Incomplete | None = None, + uniqueName: Incomplete | None = None, + caption: Incomplete | None = None, + uniqueParent: Incomplete | None = None, + id: Incomplete | None = None, + groupMembers: Incomplete | None = None, ) -> None: ... class Groups(Serialisable): @@ -220,7 +220,7 @@ class Groups(Serialisable): count: Incomplete group: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., group: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, group: Incomplete | None = None) -> None: ... class GroupLevel(Serialisable): tagname: str @@ -233,30 +233,30 @@ class GroupLevel(Serialisable): __elements__: Incomplete def __init__( self, - uniqueName: Incomplete | None = ..., - caption: Incomplete | None = ..., - user: Incomplete | None = ..., - customRollUp: Incomplete | None = ..., - groups: Incomplete | None = ..., - extLst: Incomplete | None = ..., + uniqueName: Incomplete | None = None, + caption: Incomplete | None = None, + user: Incomplete | None = None, + customRollUp: Incomplete | None = None, + groups: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class GroupLevels(Serialisable): # type: ignore[misc] count: Incomplete groupLevel: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., groupLevel: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, groupLevel: Incomplete | None = None) -> None: ... class FieldUsage(Serialisable): tagname: str x: Incomplete - def __init__(self, x: Incomplete | None = ...) -> None: ... + def __init__(self, x: Incomplete | None = None) -> None: ... class FieldsUsage(Serialisable): # type: ignore[misc] count: Incomplete fieldUsage: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., fieldUsage: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, fieldUsage: Incomplete | None = None) -> None: ... class CacheHierarchy(Serialisable): tagname: str @@ -288,31 +288,31 @@ class CacheHierarchy(Serialisable): __elements__: Incomplete def __init__( self, - uniqueName: str = ..., - caption: Incomplete | None = ..., - measure: Incomplete | None = ..., - set: Incomplete | None = ..., - parentSet: Incomplete | None = ..., - iconSet: int = ..., - attribute: Incomplete | None = ..., - time: Incomplete | None = ..., - keyAttribute: Incomplete | None = ..., - defaultMemberUniqueName: Incomplete | None = ..., - allUniqueName: Incomplete | None = ..., - allCaption: Incomplete | None = ..., - dimensionUniqueName: Incomplete | None = ..., - displayFolder: Incomplete | None = ..., - measureGroup: Incomplete | None = ..., - measures: Incomplete | None = ..., - count: Incomplete | None = ..., - oneField: Incomplete | None = ..., - memberValueDatatype: Incomplete | None = ..., - unbalanced: Incomplete | None = ..., - unbalancedGroup: Incomplete | None = ..., - hidden: Incomplete | None = ..., - fieldsUsage: Incomplete | None = ..., - groupLevels: Incomplete | None = ..., - extLst: Incomplete | None = ..., + uniqueName: str = "", + caption: Incomplete | None = None, + measure: Incomplete | None = None, + set: Incomplete | None = None, + parentSet: Incomplete | None = None, + iconSet: int = 0, + attribute: Incomplete | None = None, + time: Incomplete | None = None, + keyAttribute: Incomplete | None = None, + defaultMemberUniqueName: Incomplete | None = None, + allUniqueName: Incomplete | None = None, + allCaption: Incomplete | None = None, + dimensionUniqueName: Incomplete | None = None, + displayFolder: Incomplete | None = None, + measureGroup: Incomplete | None = None, + measures: Incomplete | None = None, + count: Incomplete | None = None, + oneField: Incomplete | None = None, + memberValueDatatype: Incomplete | None = None, + unbalanced: Incomplete | None = None, + unbalancedGroup: Incomplete | None = None, + hidden: Incomplete | None = None, + fieldsUsage: Incomplete | None = None, + groupLevels: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class GroupItems(Serialisable): @@ -325,7 +325,7 @@ class GroupItems(Serialisable): d: Incomplete __elements__: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., m=..., n=..., b=..., e=..., s=..., d=...) -> None: ... + def __init__(self, count: Incomplete | None = None, m=(), n=(), b=(), e=(), s=(), d=()) -> None: ... @property def count(self): ... @@ -334,7 +334,7 @@ class DiscretePr(Serialisable): count: Incomplete x: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., x: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, x: Incomplete | None = None) -> None: ... class RangePr(Serialisable): tagname: str @@ -348,14 +348,14 @@ class RangePr(Serialisable): groupInterval: Incomplete def __init__( self, - autoStart: bool = ..., - autoEnd: bool = ..., - groupBy: str = ..., - startNum: Incomplete | None = ..., - endNum: Incomplete | None = ..., - startDate: Incomplete | None = ..., - endDate: Incomplete | None = ..., - groupInterval: int = ..., + autoStart: bool = True, + autoEnd: bool = True, + groupBy: str = "range", + startNum: Incomplete | None = None, + endNum: Incomplete | None = None, + startDate: Incomplete | None = None, + endDate: Incomplete | None = None, + groupInterval: int = 1, ) -> None: ... class FieldGroup(Serialisable): @@ -368,11 +368,11 @@ class FieldGroup(Serialisable): __elements__: Incomplete def __init__( self, - par: Incomplete | None = ..., - base: Incomplete | None = ..., - rangePr: Incomplete | None = ..., - discretePr: Incomplete | None = ..., - groupItems: Incomplete | None = ..., + par: Incomplete | None = None, + base: Incomplete | None = None, + rangePr: Incomplete | None = None, + discretePr: Incomplete | None = None, + groupItems: Incomplete | None = None, ) -> None: ... class SharedItems(Serialisable): @@ -399,21 +399,21 @@ class SharedItems(Serialisable): __attrs__: Incomplete def __init__( self, - _fields=..., - containsSemiMixedTypes: Incomplete | None = ..., - containsNonDate: Incomplete | None = ..., - containsDate: Incomplete | None = ..., - containsString: Incomplete | None = ..., - containsBlank: Incomplete | None = ..., - containsMixedTypes: Incomplete | None = ..., - containsNumber: Incomplete | None = ..., - containsInteger: Incomplete | None = ..., - minValue: Incomplete | None = ..., - maxValue: Incomplete | None = ..., - minDate: Incomplete | None = ..., - maxDate: Incomplete | None = ..., - count: Incomplete | None = ..., - longText: Incomplete | None = ..., + _fields=(), + containsSemiMixedTypes: Incomplete | None = None, + containsNonDate: Incomplete | None = None, + containsDate: Incomplete | None = None, + containsString: Incomplete | None = None, + containsBlank: Incomplete | None = None, + containsMixedTypes: Incomplete | None = None, + containsNumber: Incomplete | None = None, + containsInteger: Incomplete | None = None, + minValue: Incomplete | None = None, + maxValue: Incomplete | None = None, + minDate: Incomplete | None = None, + maxDate: Incomplete | None = None, + count: Incomplete | None = None, + longText: Incomplete | None = None, ) -> None: ... @property def count(self): ... @@ -440,23 +440,23 @@ class CacheField(Serialisable): __elements__: Incomplete def __init__( self, - sharedItems: Incomplete | None = ..., - fieldGroup: Incomplete | None = ..., - mpMap: Incomplete | None = ..., - extLst: Incomplete | None = ..., - name: Incomplete | None = ..., - caption: Incomplete | None = ..., - propertyName: Incomplete | None = ..., - serverField: Incomplete | None = ..., - uniqueList: bool = ..., - numFmtId: Incomplete | None = ..., - formula: Incomplete | None = ..., - sqlType: int = ..., - hierarchy: int = ..., - level: int = ..., - databaseField: bool = ..., - mappingCount: Incomplete | None = ..., - memberPropertyField: Incomplete | None = ..., + sharedItems: Incomplete | None = None, + fieldGroup: Incomplete | None = None, + mpMap: Incomplete | None = None, + extLst: Incomplete | None = None, + name: Incomplete | None = None, + caption: Incomplete | None = None, + propertyName: Incomplete | None = None, + serverField: Incomplete | None = None, + uniqueList: bool = True, + numFmtId: Incomplete | None = None, + formula: Incomplete | None = None, + sqlType: int = 0, + hierarchy: int = 0, + level: int = 0, + databaseField: bool = True, + mappingCount: Incomplete | None = None, + memberPropertyField: Incomplete | None = None, ) -> None: ... class RangeSet(Serialisable): @@ -470,25 +470,25 @@ class RangeSet(Serialisable): sheet: Incomplete def __init__( self, - i1: Incomplete | None = ..., - i2: Incomplete | None = ..., - i3: Incomplete | None = ..., - i4: Incomplete | None = ..., - ref: Incomplete | None = ..., - name: Incomplete | None = ..., - sheet: Incomplete | None = ..., + i1: Incomplete | None = None, + i2: Incomplete | None = None, + i3: Incomplete | None = None, + i4: Incomplete | None = None, + ref: Incomplete | None = None, + name: Incomplete | None = None, + sheet: Incomplete | None = None, ) -> None: ... class PageItem(Serialisable): tagname: str name: Incomplete - def __init__(self, name: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None) -> None: ... class Page(Serialisable): tagname: str pageItem: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., pageItem: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, pageItem: Incomplete | None = None) -> None: ... @property def count(self): ... @@ -498,14 +498,16 @@ class Consolidation(Serialisable): pages: Incomplete rangeSets: Incomplete __elements__: Incomplete - def __init__(self, autoPage: Incomplete | None = ..., pages=..., rangeSets=...) -> None: ... + def __init__(self, autoPage: Incomplete | None = None, pages=(), rangeSets=()) -> None: ... class WorksheetSource(Serialisable): tagname: str ref: Incomplete name: Incomplete sheet: Incomplete - def __init__(self, ref: Incomplete | None = ..., name: Incomplete | None = ..., sheet: Incomplete | None = ...) -> None: ... + def __init__( + self, ref: Incomplete | None = None, name: Incomplete | None = None, sheet: Incomplete | None = None + ) -> None: ... class CacheSource(Serialisable): tagname: str @@ -517,11 +519,11 @@ class CacheSource(Serialisable): __elements__: Incomplete def __init__( self, - type: Incomplete | None = ..., - connectionId: Incomplete | None = ..., - worksheetSource: Incomplete | None = ..., - consolidation: Incomplete | None = ..., - extLst: Incomplete | None = ..., + type: Incomplete | None = None, + connectionId: Incomplete | None = None, + worksheetSource: Incomplete | None = None, + consolidation: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class CacheDefinition(Serialisable): @@ -561,35 +563,35 @@ class CacheDefinition(Serialisable): __elements__: Incomplete def __init__( self, - invalid: Incomplete | None = ..., - saveData: Incomplete | None = ..., - refreshOnLoad: Incomplete | None = ..., - optimizeMemory: Incomplete | None = ..., - enableRefresh: Incomplete | None = ..., - refreshedBy: Incomplete | None = ..., - refreshedDate: Incomplete | None = ..., - refreshedDateIso: Incomplete | None = ..., - backgroundQuery: Incomplete | None = ..., - missingItemsLimit: Incomplete | None = ..., - createdVersion: Incomplete | None = ..., - refreshedVersion: Incomplete | None = ..., - minRefreshableVersion: Incomplete | None = ..., - recordCount: Incomplete | None = ..., - upgradeOnRefresh: Incomplete | None = ..., - tupleCache: Incomplete | None = ..., - supportSubquery: Incomplete | None = ..., - supportAdvancedDrill: Incomplete | None = ..., - cacheSource: Incomplete | None = ..., - cacheFields=..., - cacheHierarchies=..., - kpis=..., - calculatedItems=..., - calculatedMembers=..., - dimensions=..., - measureGroups=..., - maps=..., - extLst: Incomplete | None = ..., - id: Incomplete | None = ..., + invalid: Incomplete | None = None, + saveData: Incomplete | None = None, + refreshOnLoad: Incomplete | None = None, + optimizeMemory: Incomplete | None = None, + enableRefresh: Incomplete | None = None, + refreshedBy: Incomplete | None = None, + refreshedDate: Incomplete | None = None, + refreshedDateIso: Incomplete | None = None, + backgroundQuery: Incomplete | None = None, + missingItemsLimit: Incomplete | None = None, + createdVersion: Incomplete | None = None, + refreshedVersion: Incomplete | None = None, + minRefreshableVersion: Incomplete | None = None, + recordCount: Incomplete | None = None, + upgradeOnRefresh: Incomplete | None = None, + tupleCache: Incomplete | None = None, + supportSubquery: Incomplete | None = None, + supportAdvancedDrill: Incomplete | None = None, + cacheSource: Incomplete | None = None, + cacheFields=(), + cacheHierarchies=(), + kpis=(), + calculatedItems=(), + calculatedMembers=(), + dimensions=(), + measureGroups=(), + maps=(), + extLst: Incomplete | None = None, + id: Incomplete | None = None, ) -> None: ... def to_tree(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi index b3eb3158a..1bcb29a97 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi @@ -5,19 +5,19 @@ from openpyxl.descriptors.serialisable import Serialisable class Index(Serialisable): tagname: str v: Incomplete - def __init__(self, v: int = ...) -> None: ... + def __init__(self, v: int = 0) -> None: ... class Tuple(Serialisable): # type: ignore[misc] fld: Incomplete hier: Incomplete item: Incomplete - def __init__(self, fld: Incomplete | None = ..., hier: Incomplete | None = ..., item: Incomplete | None = ...) -> None: ... + def __init__(self, fld: Incomplete | None = None, hier: Incomplete | None = None, item: Incomplete | None = None) -> None: ... class TupleList(Serialisable): # type: ignore[misc] c: Incomplete tpl: Incomplete __elements__: Incomplete - def __init__(self, c: Incomplete | None = ..., tpl: Incomplete | None = ...) -> None: ... + def __init__(self, c: Incomplete | None = None, tpl: Incomplete | None = None) -> None: ... class Missing(Serialisable): tagname: str @@ -36,19 +36,19 @@ class Missing(Serialisable): __elements__: Incomplete def __init__( self, - tpls=..., - x=..., - u: Incomplete | None = ..., - f: Incomplete | None = ..., - c: Incomplete | None = ..., - cp: Incomplete | None = ..., - _in: Incomplete | None = ..., - bc: Incomplete | None = ..., - fc: Incomplete | None = ..., - i: Incomplete | None = ..., - un: Incomplete | None = ..., - st: Incomplete | None = ..., - b: Incomplete | None = ..., + tpls=(), + x=(), + u: Incomplete | None = None, + f: Incomplete | None = None, + c: Incomplete | None = None, + cp: Incomplete | None = None, + _in: Incomplete | None = None, + bc: Incomplete | None = None, + fc: Incomplete | None = None, + i: Incomplete | None = None, + un: Incomplete | None = None, + st: Incomplete | None = None, + b: Incomplete | None = None, ) -> None: ... class Number(Serialisable): @@ -69,20 +69,20 @@ class Number(Serialisable): __elements__: Incomplete def __init__( self, - tpls=..., - x=..., - v: Incomplete | None = ..., - u: Incomplete | None = ..., - f: Incomplete | None = ..., - c: Incomplete | None = ..., - cp: Incomplete | None = ..., - _in: Incomplete | None = ..., - bc: Incomplete | None = ..., - fc: Incomplete | None = ..., - i: Incomplete | None = ..., - un: Incomplete | None = ..., - st: Incomplete | None = ..., - b: Incomplete | None = ..., + tpls=(), + x=(), + v: Incomplete | None = None, + u: Incomplete | None = None, + f: Incomplete | None = None, + c: Incomplete | None = None, + cp: Incomplete | None = None, + _in: Incomplete | None = None, + bc: Incomplete | None = None, + fc: Incomplete | None = None, + i: Incomplete | None = None, + un: Incomplete | None = None, + st: Incomplete | None = None, + b: Incomplete | None = None, ) -> None: ... class Error(Serialisable): @@ -103,20 +103,20 @@ class Error(Serialisable): __elements__: Incomplete def __init__( self, - tpls: Incomplete | None = ..., - x=..., - v: Incomplete | None = ..., - u: Incomplete | None = ..., - f: Incomplete | None = ..., - c: Incomplete | None = ..., - cp: Incomplete | None = ..., - _in: Incomplete | None = ..., - bc: Incomplete | None = ..., - fc: Incomplete | None = ..., - i: Incomplete | None = ..., - un: Incomplete | None = ..., - st: Incomplete | None = ..., - b: Incomplete | None = ..., + tpls: Incomplete | None = None, + x=(), + v: Incomplete | None = None, + u: Incomplete | None = None, + f: Incomplete | None = None, + c: Incomplete | None = None, + cp: Incomplete | None = None, + _in: Incomplete | None = None, + bc: Incomplete | None = None, + fc: Incomplete | None = None, + i: Incomplete | None = None, + un: Incomplete | None = None, + st: Incomplete | None = None, + b: Incomplete | None = None, ) -> None: ... class Boolean(Serialisable): @@ -130,12 +130,12 @@ class Boolean(Serialisable): __elements__: Incomplete def __init__( self, - x=..., - v: Incomplete | None = ..., - u: Incomplete | None = ..., - f: Incomplete | None = ..., - c: Incomplete | None = ..., - cp: Incomplete | None = ..., + x=(), + v: Incomplete | None = None, + u: Incomplete | None = None, + f: Incomplete | None = None, + c: Incomplete | None = None, + cp: Incomplete | None = None, ) -> None: ... class Text(Serialisable): @@ -156,20 +156,20 @@ class Text(Serialisable): __elements__: Incomplete def __init__( self, - tpls=..., - x=..., - v: Incomplete | None = ..., - u: Incomplete | None = ..., - f: Incomplete | None = ..., - c: Incomplete | None = ..., - cp: Incomplete | None = ..., - _in: Incomplete | None = ..., - bc: Incomplete | None = ..., - fc: Incomplete | None = ..., - i: Incomplete | None = ..., - un: Incomplete | None = ..., - st: Incomplete | None = ..., - b: Incomplete | None = ..., + tpls=(), + x=(), + v: Incomplete | None = None, + u: Incomplete | None = None, + f: Incomplete | None = None, + c: Incomplete | None = None, + cp: Incomplete | None = None, + _in: Incomplete | None = None, + bc: Incomplete | None = None, + fc: Incomplete | None = None, + i: Incomplete | None = None, + un: Incomplete | None = None, + st: Incomplete | None = None, + b: Incomplete | None = None, ) -> None: ... class DateTimeField(Serialisable): @@ -183,10 +183,10 @@ class DateTimeField(Serialisable): __elements__: Incomplete def __init__( self, - x=..., - v: Incomplete | None = ..., - u: Incomplete | None = ..., - f: Incomplete | None = ..., - c: Incomplete | None = ..., - cp: Incomplete | None = ..., + x=(), + v: Incomplete | None = None, + u: Incomplete | None = None, + f: Incomplete | None = None, + c: Incomplete | None = None, + cp: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi index 3406068bd..90411cb66 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi @@ -13,14 +13,14 @@ class Record(Serialisable): x: Incomplete def __init__( self, - _fields=..., - m: Incomplete | None = ..., - n: Incomplete | None = ..., - b: Incomplete | None = ..., - e: Incomplete | None = ..., - s: Incomplete | None = ..., - d: Incomplete | None = ..., - x: Incomplete | None = ..., + _fields=(), + m: Incomplete | None = None, + n: Incomplete | None = None, + b: Incomplete | None = None, + e: Incomplete | None = None, + s: Incomplete | None = None, + d: Incomplete | None = None, + x: Incomplete | None = None, ) -> None: ... class RecordList(Serialisable): @@ -31,7 +31,7 @@ class RecordList(Serialisable): extLst: Incomplete __elements__: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., r=..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, r=(), extLst: Incomplete | None = None) -> None: ... @property def count(self): ... def to_tree(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi index 16a7b289b..2bca0d309 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi @@ -5,14 +5,14 @@ from openpyxl.descriptors.serialisable import Serialisable class HierarchyUsage(Serialisable): tagname: str hierarchyUsage: Incomplete - def __init__(self, hierarchyUsage: Incomplete | None = ...) -> None: ... + def __init__(self, hierarchyUsage: Incomplete | None = None) -> None: ... class ColHierarchiesUsage(Serialisable): tagname: str colHierarchyUsage: Incomplete __elements__: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., colHierarchyUsage=...) -> None: ... + def __init__(self, count: Incomplete | None = None, colHierarchyUsage=()) -> None: ... @property def count(self): ... @@ -21,7 +21,7 @@ class RowHierarchiesUsage(Serialisable): rowHierarchyUsage: Incomplete __elements__: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., rowHierarchyUsage=...) -> None: ... + def __init__(self, count: Incomplete | None = None, rowHierarchyUsage=()) -> None: ... @property def count(self): ... @@ -43,26 +43,26 @@ class PivotFilter(Serialisable): __elements__: Incomplete def __init__( self, - fld: Incomplete | None = ..., - mpFld: Incomplete | None = ..., - type: Incomplete | None = ..., - evalOrder: Incomplete | None = ..., - id: Incomplete | None = ..., - iMeasureHier: Incomplete | None = ..., - iMeasureFld: Incomplete | None = ..., - name: Incomplete | None = ..., - description: Incomplete | None = ..., - stringValue1: Incomplete | None = ..., - stringValue2: Incomplete | None = ..., - autoFilter: Incomplete | None = ..., - extLst: Incomplete | None = ..., + fld: Incomplete | None = None, + mpFld: Incomplete | None = None, + type: Incomplete | None = None, + evalOrder: Incomplete | None = None, + id: Incomplete | None = None, + iMeasureHier: Incomplete | None = None, + iMeasureFld: Incomplete | None = None, + name: Incomplete | None = None, + description: Incomplete | None = None, + stringValue1: Incomplete | None = None, + stringValue2: Incomplete | None = None, + autoFilter: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class PivotFilters(Serialisable): # type: ignore[misc] count: Incomplete filter: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., filter: Incomplete | None = ...) -> None: ... + def __init__(self, count: Incomplete | None = None, filter: Incomplete | None = None) -> None: ... class PivotTableStyle(Serialisable): tagname: str @@ -74,12 +74,12 @@ class PivotTableStyle(Serialisable): showLastColumn: Incomplete def __init__( self, - name: Incomplete | None = ..., - showRowHeaders: Incomplete | None = ..., - showColHeaders: Incomplete | None = ..., - showRowStripes: Incomplete | None = ..., - showColStripes: Incomplete | None = ..., - showLastColumn: Incomplete | None = ..., + name: Incomplete | None = None, + showRowHeaders: Incomplete | None = None, + showColHeaders: Incomplete | None = None, + showRowStripes: Incomplete | None = None, + showColStripes: Incomplete | None = None, + showLastColumn: Incomplete | None = None, ) -> None: ... class MemberList(Serialisable): @@ -87,7 +87,7 @@ class MemberList(Serialisable): level: Incomplete member: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., level: Incomplete | None = ..., member=...) -> None: ... + def __init__(self, count: Incomplete | None = None, level: Incomplete | None = None, member=()) -> None: ... @property def count(self): ... @@ -104,15 +104,15 @@ class MemberProperty(Serialisable): field: Incomplete def __init__( self, - name: Incomplete | None = ..., - showCell: Incomplete | None = ..., - showTip: Incomplete | None = ..., - showAsCaption: Incomplete | None = ..., - nameLen: Incomplete | None = ..., - pPos: Incomplete | None = ..., - pLen: Incomplete | None = ..., - level: Incomplete | None = ..., - field: Incomplete | None = ..., + name: Incomplete | None = None, + showCell: Incomplete | None = None, + showTip: Incomplete | None = None, + showAsCaption: Incomplete | None = None, + nameLen: Incomplete | None = None, + pPos: Incomplete | None = None, + pLen: Incomplete | None = None, + level: Incomplete | None = None, + field: Incomplete | None = None, ) -> None: ... class PivotHierarchy(Serialisable): @@ -134,20 +134,20 @@ class PivotHierarchy(Serialisable): __elements__: Incomplete def __init__( self, - outline: Incomplete | None = ..., - multipleItemSelectionAllowed: Incomplete | None = ..., - subtotalTop: Incomplete | None = ..., - showInFieldList: Incomplete | None = ..., - dragToRow: Incomplete | None = ..., - dragToCol: Incomplete | None = ..., - dragToPage: Incomplete | None = ..., - dragToData: Incomplete | None = ..., - dragOff: Incomplete | None = ..., - includeNewItemsInFilter: Incomplete | None = ..., - caption: Incomplete | None = ..., - mps=..., - members: Incomplete | None = ..., - extLst: Incomplete | None = ..., + outline: Incomplete | None = None, + multipleItemSelectionAllowed: Incomplete | None = None, + subtotalTop: Incomplete | None = None, + showInFieldList: Incomplete | None = None, + dragToRow: Incomplete | None = None, + dragToCol: Incomplete | None = None, + dragToPage: Incomplete | None = None, + dragToData: Incomplete | None = None, + dragOff: Incomplete | None = None, + includeNewItemsInFilter: Incomplete | None = None, + caption: Incomplete | None = None, + mps=(), + members: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class Reference(Serialisable): @@ -173,25 +173,25 @@ class Reference(Serialisable): __elements__: Incomplete def __init__( self, - field: Incomplete | None = ..., - count: Incomplete | None = ..., - selected: Incomplete | None = ..., - byPosition: Incomplete | None = ..., - relative: Incomplete | None = ..., - defaultSubtotal: Incomplete | None = ..., - sumSubtotal: Incomplete | None = ..., - countASubtotal: Incomplete | None = ..., - avgSubtotal: Incomplete | None = ..., - maxSubtotal: Incomplete | None = ..., - minSubtotal: Incomplete | None = ..., - productSubtotal: Incomplete | None = ..., - countSubtotal: Incomplete | None = ..., - stdDevSubtotal: Incomplete | None = ..., - stdDevPSubtotal: Incomplete | None = ..., - varSubtotal: Incomplete | None = ..., - varPSubtotal: Incomplete | None = ..., - x: Incomplete | None = ..., - extLst: Incomplete | None = ..., + field: Incomplete | None = None, + count: Incomplete | None = None, + selected: Incomplete | None = None, + byPosition: Incomplete | None = None, + relative: Incomplete | None = None, + defaultSubtotal: Incomplete | None = None, + sumSubtotal: Incomplete | None = None, + countASubtotal: Incomplete | None = None, + avgSubtotal: Incomplete | None = None, + maxSubtotal: Incomplete | None = None, + minSubtotal: Incomplete | None = None, + productSubtotal: Incomplete | None = None, + countSubtotal: Incomplete | None = None, + stdDevSubtotal: Incomplete | None = None, + stdDevPSubtotal: Incomplete | None = None, + varSubtotal: Incomplete | None = None, + varPSubtotal: Incomplete | None = None, + x: Incomplete | None = (), + extLst: Incomplete | None = None, ) -> None: ... @property def count(self): ... @@ -215,20 +215,20 @@ class PivotArea(Serialisable): __elements__: Incomplete def __init__( self, - references=..., - extLst: Incomplete | None = ..., - field: Incomplete | None = ..., - type: str = ..., - dataOnly: bool = ..., - labelOnly: Incomplete | None = ..., - grandRow: Incomplete | None = ..., - grandCol: Incomplete | None = ..., - cacheIndex: Incomplete | None = ..., - outline: bool = ..., - offset: Incomplete | None = ..., - collapsedLevelsAreSubtotals: Incomplete | None = ..., - axis: Incomplete | None = ..., - fieldPosition: Incomplete | None = ..., + references=(), + extLst: Incomplete | None = None, + field: Incomplete | None = None, + type: str = "normal", + dataOnly: bool = True, + labelOnly: Incomplete | None = None, + grandRow: Incomplete | None = None, + grandCol: Incomplete | None = None, + cacheIndex: Incomplete | None = None, + outline: bool = True, + offset: Incomplete | None = None, + collapsedLevelsAreSubtotals: Incomplete | None = None, + axis: Incomplete | None = None, + fieldPosition: Incomplete | None = None, ) -> None: ... class ChartFormat(Serialisable): @@ -240,10 +240,10 @@ class ChartFormat(Serialisable): __elements__: Incomplete def __init__( self, - chart: Incomplete | None = ..., - format: Incomplete | None = ..., - series: Incomplete | None = ..., - pivotArea: Incomplete | None = ..., + chart: Incomplete | None = None, + format: Incomplete | None = None, + series: Incomplete | None = None, + pivotArea: Incomplete | None = None, ) -> None: ... class ConditionalFormat(Serialisable): @@ -256,11 +256,11 @@ class ConditionalFormat(Serialisable): __elements__: Incomplete def __init__( self, - scope: Incomplete | None = ..., - type: Incomplete | None = ..., - priority: Incomplete | None = ..., - pivotAreas=..., - extLst: Incomplete | None = ..., + scope: Incomplete | None = "selection", + type: Incomplete | None = None, + priority: Incomplete | None = None, + pivotAreas=(), + extLst: Incomplete | None = None, ) -> None: ... class Format(Serialisable): @@ -272,10 +272,10 @@ class Format(Serialisable): __elements__: Incomplete def __init__( self, - action: str = ..., - dxfId: Incomplete | None = ..., - pivotArea: Incomplete | None = ..., - extLst: Incomplete | None = ..., + action: str = "formatting", + dxfId: Incomplete | None = None, + pivotArea: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class DataField(Serialisable): @@ -291,14 +291,14 @@ class DataField(Serialisable): __elements__: Incomplete def __init__( self, - name: Incomplete | None = ..., - fld: Incomplete | None = ..., - subtotal: str = ..., - showDataAs: str = ..., - baseField: int = ..., - baseItem: int = ..., - numFmtId: Incomplete | None = ..., - extLst: Incomplete | None = ..., + name: Incomplete | None = None, + fld: Incomplete | None = None, + subtotal: str = "sum", + showDataAs: str = "normal", + baseField: int = -1, + baseItem: int = 1048832, + numFmtId: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class PageField(Serialisable): @@ -312,12 +312,12 @@ class PageField(Serialisable): __elements__: Incomplete def __init__( self, - fld: Incomplete | None = ..., - item: Incomplete | None = ..., - hier: Incomplete | None = ..., - name: Incomplete | None = ..., - cap: Incomplete | None = ..., - extLst: Incomplete | None = ..., + fld: Incomplete | None = None, + item: Incomplete | None = None, + hier: Incomplete | None = None, + name: Incomplete | None = None, + cap: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class RowColItem(Serialisable): @@ -327,17 +327,17 @@ class RowColItem(Serialisable): i: Incomplete x: Incomplete __elements__: Incomplete - def __init__(self, t: str = ..., r: int = ..., i: int = ..., x=...) -> None: ... + def __init__(self, t: str = "data", r: int = 0, i: int = 0, x=()) -> None: ... class RowColField(Serialisable): tagname: str x: Incomplete - def __init__(self, x: Incomplete | None = ...) -> None: ... + def __init__(self, x: Incomplete | None = None) -> None: ... class AutoSortScope(Serialisable): # type: ignore[misc] pivotArea: Incomplete __elements__: Incomplete - def __init__(self, pivotArea: Incomplete | None = ...) -> None: ... + def __init__(self, pivotArea: Incomplete | None = None) -> None: ... class FieldItem(Serialisable): tagname: str @@ -354,17 +354,17 @@ class FieldItem(Serialisable): e: Incomplete def __init__( self, - n: Incomplete | None = ..., - t: str = ..., - h: Incomplete | None = ..., - s: Incomplete | None = ..., - sd: bool = ..., - f: Incomplete | None = ..., - m: Incomplete | None = ..., - c: Incomplete | None = ..., - x: Incomplete | None = ..., - d: Incomplete | None = ..., - e: Incomplete | None = ..., + n: Incomplete | None = None, + t: str = "data", + h: Incomplete | None = None, + s: Incomplete | None = None, + sd: bool = True, + f: Incomplete | None = None, + m: Incomplete | None = None, + c: Incomplete | None = None, + x: Incomplete | None = None, + d: Incomplete | None = None, + e: Incomplete | None = None, ) -> None: ... class PivotField(Serialisable): @@ -423,57 +423,57 @@ class PivotField(Serialisable): __elements__: Incomplete def __init__( self, - items=..., - autoSortScope: Incomplete | None = ..., - name: Incomplete | None = ..., - axis: Incomplete | None = ..., - dataField: Incomplete | None = ..., - subtotalCaption: Incomplete | None = ..., - showDropDowns: bool = ..., - hiddenLevel: Incomplete | None = ..., - uniqueMemberProperty: Incomplete | None = ..., - compact: bool = ..., - allDrilled: Incomplete | None = ..., - numFmtId: Incomplete | None = ..., - outline: bool = ..., - subtotalTop: bool = ..., - dragToRow: bool = ..., - dragToCol: bool = ..., - multipleItemSelectionAllowed: Incomplete | None = ..., - dragToPage: bool = ..., - dragToData: bool = ..., - dragOff: bool = ..., - showAll: bool = ..., - insertBlankRow: Incomplete | None = ..., - serverField: Incomplete | None = ..., - insertPageBreak: Incomplete | None = ..., - autoShow: Incomplete | None = ..., - topAutoShow: bool = ..., - hideNewItems: Incomplete | None = ..., - measureFilter: Incomplete | None = ..., - includeNewItemsInFilter: Incomplete | None = ..., - itemPageCount: int = ..., - sortType: str = ..., - dataSourceSort: Incomplete | None = ..., - nonAutoSortDefault: Incomplete | None = ..., - rankBy: Incomplete | None = ..., - defaultSubtotal: bool = ..., - sumSubtotal: Incomplete | None = ..., - countASubtotal: Incomplete | None = ..., - avgSubtotal: Incomplete | None = ..., - maxSubtotal: Incomplete | None = ..., - minSubtotal: Incomplete | None = ..., - productSubtotal: Incomplete | None = ..., - countSubtotal: Incomplete | None = ..., - stdDevSubtotal: Incomplete | None = ..., - stdDevPSubtotal: Incomplete | None = ..., - varSubtotal: Incomplete | None = ..., - varPSubtotal: Incomplete | None = ..., - showPropCell: Incomplete | None = ..., - showPropTip: Incomplete | None = ..., - showPropAsCaption: Incomplete | None = ..., - defaultAttributeDrillState: Incomplete | None = ..., - extLst: Incomplete | None = ..., + items=(), + autoSortScope: Incomplete | None = None, + name: Incomplete | None = None, + axis: Incomplete | None = None, + dataField: Incomplete | None = None, + subtotalCaption: Incomplete | None = None, + showDropDowns: bool = True, + hiddenLevel: Incomplete | None = None, + uniqueMemberProperty: Incomplete | None = None, + compact: bool = True, + allDrilled: Incomplete | None = None, + numFmtId: Incomplete | None = None, + outline: bool = True, + subtotalTop: bool = True, + dragToRow: bool = True, + dragToCol: bool = True, + multipleItemSelectionAllowed: Incomplete | None = None, + dragToPage: bool = True, + dragToData: bool = True, + dragOff: bool = True, + showAll: bool = True, + insertBlankRow: Incomplete | None = None, + serverField: Incomplete | None = None, + insertPageBreak: Incomplete | None = None, + autoShow: Incomplete | None = None, + topAutoShow: bool = True, + hideNewItems: Incomplete | None = None, + measureFilter: Incomplete | None = None, + includeNewItemsInFilter: Incomplete | None = None, + itemPageCount: int = 10, + sortType: str = "manual", + dataSourceSort: Incomplete | None = None, + nonAutoSortDefault: Incomplete | None = None, + rankBy: Incomplete | None = None, + defaultSubtotal: bool = True, + sumSubtotal: Incomplete | None = None, + countASubtotal: Incomplete | None = None, + avgSubtotal: Incomplete | None = None, + maxSubtotal: Incomplete | None = None, + minSubtotal: Incomplete | None = None, + productSubtotal: Incomplete | None = None, + countSubtotal: Incomplete | None = None, + stdDevSubtotal: Incomplete | None = None, + stdDevPSubtotal: Incomplete | None = None, + varSubtotal: Incomplete | None = None, + varPSubtotal: Incomplete | None = None, + showPropCell: Incomplete | None = None, + showPropTip: Incomplete | None = None, + showPropAsCaption: Incomplete | None = None, + defaultAttributeDrillState: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class Location(Serialisable): @@ -486,12 +486,12 @@ class Location(Serialisable): colPageCount: Incomplete def __init__( self, - ref: Incomplete | None = ..., - firstHeaderRow: Incomplete | None = ..., - firstDataRow: Incomplete | None = ..., - firstDataCol: Incomplete | None = ..., - rowPageCount: Incomplete | None = ..., - colPageCount: Incomplete | None = ..., + ref: Incomplete | None = None, + firstHeaderRow: Incomplete | None = None, + firstDataRow: Incomplete | None = None, + firstDataCol: Incomplete | None = None, + rowPageCount: Incomplete | None = None, + colPageCount: Incomplete | None = None, ) -> None: ... class TableDefinition(Serialisable): @@ -588,92 +588,92 @@ class TableDefinition(Serialisable): __elements__: Incomplete def __init__( self, - name: Incomplete | None = ..., - cacheId: Incomplete | None = ..., - dataOnRows: bool = ..., - dataPosition: Incomplete | None = ..., - dataCaption: Incomplete | None = ..., - grandTotalCaption: Incomplete | None = ..., - errorCaption: Incomplete | None = ..., - showError: bool = ..., - missingCaption: Incomplete | None = ..., - showMissing: bool = ..., - pageStyle: Incomplete | None = ..., - pivotTableStyle: Incomplete | None = ..., - vacatedStyle: Incomplete | None = ..., - tag: Incomplete | None = ..., - updatedVersion: int = ..., - minRefreshableVersion: int = ..., - asteriskTotals: bool = ..., - showItems: bool = ..., - editData: bool = ..., - disableFieldList: bool = ..., - showCalcMbrs: bool = ..., - visualTotals: bool = ..., - showMultipleLabel: bool = ..., - showDataDropDown: bool = ..., - showDrill: bool = ..., - printDrill: bool = ..., - showMemberPropertyTips: bool = ..., - showDataTips: bool = ..., - enableWizard: bool = ..., - enableDrill: bool = ..., - enableFieldProperties: bool = ..., - preserveFormatting: bool = ..., - useAutoFormatting: bool = ..., - pageWrap: int = ..., - pageOverThenDown: bool = ..., - subtotalHiddenItems: bool = ..., - rowGrandTotals: bool = ..., - colGrandTotals: bool = ..., - fieldPrintTitles: bool = ..., - itemPrintTitles: bool = ..., - mergeItem: bool = ..., - showDropZones: bool = ..., - createdVersion: int = ..., - indent: int = ..., - showEmptyRow: bool = ..., - showEmptyCol: bool = ..., - showHeaders: bool = ..., - compact: bool = ..., - outline: bool = ..., - outlineData: bool = ..., - compactData: bool = ..., - published: bool = ..., - gridDropZones: bool = ..., - immersive: bool = ..., - multipleFieldFilters: Incomplete | None = ..., - chartFormat: int = ..., - rowHeaderCaption: Incomplete | None = ..., - colHeaderCaption: Incomplete | None = ..., - fieldListSortAscending: Incomplete | None = ..., - mdxSubqueries: Incomplete | None = ..., - customListSort: Incomplete | None = ..., - autoFormatId: Incomplete | None = ..., - applyNumberFormats: bool = ..., - applyBorderFormats: bool = ..., - applyFontFormats: bool = ..., - applyPatternFormats: bool = ..., - applyAlignmentFormats: bool = ..., - applyWidthHeightFormats: bool = ..., - location: Incomplete | None = ..., - pivotFields=..., - rowFields=..., - rowItems=..., - colFields=..., - colItems=..., - pageFields=..., - dataFields=..., - formats=..., - conditionalFormats=..., - chartFormats=..., - pivotHierarchies=..., - pivotTableStyleInfo: Incomplete | None = ..., - filters=..., - rowHierarchiesUsage: Incomplete | None = ..., - colHierarchiesUsage: Incomplete | None = ..., - extLst: Incomplete | None = ..., - id: Incomplete | None = ..., + name: Incomplete | None = None, + cacheId: Incomplete | None = None, + dataOnRows: bool = False, + dataPosition: Incomplete | None = None, + dataCaption: Incomplete | None = None, + grandTotalCaption: Incomplete | None = None, + errorCaption: Incomplete | None = None, + showError: bool = False, + missingCaption: Incomplete | None = None, + showMissing: bool = True, + pageStyle: Incomplete | None = None, + pivotTableStyle: Incomplete | None = None, + vacatedStyle: Incomplete | None = None, + tag: Incomplete | None = None, + updatedVersion: int = 0, + minRefreshableVersion: int = 0, + asteriskTotals: bool = False, + showItems: bool = True, + editData: bool = False, + disableFieldList: bool = False, + showCalcMbrs: bool = True, + visualTotals: bool = True, + showMultipleLabel: bool = True, + showDataDropDown: bool = True, + showDrill: bool = True, + printDrill: bool = False, + showMemberPropertyTips: bool = True, + showDataTips: bool = True, + enableWizard: bool = True, + enableDrill: bool = True, + enableFieldProperties: bool = True, + preserveFormatting: bool = True, + useAutoFormatting: bool = False, + pageWrap: int = 0, + pageOverThenDown: bool = False, + subtotalHiddenItems: bool = False, + rowGrandTotals: bool = True, + colGrandTotals: bool = True, + fieldPrintTitles: bool = False, + itemPrintTitles: bool = False, + mergeItem: bool = False, + showDropZones: bool = True, + createdVersion: int = 0, + indent: int = 1, + showEmptyRow: bool = False, + showEmptyCol: bool = False, + showHeaders: bool = True, + compact: bool = True, + outline: bool = False, + outlineData: bool = False, + compactData: bool = True, + published: bool = False, + gridDropZones: bool = False, + immersive: bool = True, + multipleFieldFilters: Incomplete | None = None, + chartFormat: int = 0, + rowHeaderCaption: Incomplete | None = None, + colHeaderCaption: Incomplete | None = None, + fieldListSortAscending: Incomplete | None = None, + mdxSubqueries: Incomplete | None = None, + customListSort: Incomplete | None = None, + autoFormatId: Incomplete | None = None, + applyNumberFormats: bool = False, + applyBorderFormats: bool = False, + applyFontFormats: bool = False, + applyPatternFormats: bool = False, + applyAlignmentFormats: bool = False, + applyWidthHeightFormats: bool = False, + location: Incomplete | None = None, + pivotFields=(), + rowFields=(), + rowItems=(), + colFields=(), + colItems=(), + pageFields=(), + dataFields=(), + formats=(), + conditionalFormats=None, + chartFormats=(), + pivotHierarchies=(), + pivotTableStyleInfo: Incomplete | None = None, + filters=(), + rowHierarchiesUsage: Incomplete | None = None, + colHierarchiesUsage: Incomplete | None = None, + extLst: Incomplete | None = None, + id: Incomplete | None = None, ) -> None: ... def to_tree(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/workbook.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/workbook.pyi index 1eef773f2..7ef1b85e4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/workbook.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/workbook.pyi @@ -9,7 +9,7 @@ class WorkbookParser: wb: Workbook keep_links: Incomplete sheets: Incomplete - def __init__(self, archive, workbook_part_name, keep_links: bool = ...) -> None: ... + def __init__(self, archive, workbook_part_name, keep_links: bool = True) -> None: ... @property def rels(self): ... caches: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi index 6914145b6..3498ac9a0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi @@ -22,18 +22,18 @@ class Alignment(Serialisable): readingOrder: Incomplete def __init__( self, - horizontal: Incomplete | None = ..., - vertical: Incomplete | None = ..., - textRotation: int = ..., - wrapText: Incomplete | None = ..., - shrinkToFit: Incomplete | None = ..., - indent: int = ..., - relativeIndent: int = ..., - justifyLastLine: Incomplete | None = ..., - readingOrder: int = ..., - text_rotation: Incomplete | None = ..., - wrap_text: Incomplete | None = ..., - shrink_to_fit: Incomplete | None = ..., - mergeCell: Incomplete | None = ..., + horizontal: Incomplete | None = None, + vertical: Incomplete | None = None, + textRotation: int = 0, + wrapText: Incomplete | None = None, + shrinkToFit: Incomplete | None = None, + indent: int = 0, + relativeIndent: int = 0, + justifyLastLine: Incomplete | None = None, + readingOrder: int = 0, + text_rotation: Incomplete | None = None, + wrap_text: Incomplete | None = None, + shrink_to_fit: Incomplete | None = None, + mergeCell: Incomplete | None = None, ) -> None: ... def __iter__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi index 257e1c685..423581070 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi @@ -23,7 +23,7 @@ class Side(Serialisable): # type: ignore[misc] style: Incomplete border_style: Incomplete def __init__( - self, style: Incomplete | None = ..., color: Incomplete | None = ..., border_style: Incomplete | None = ... + self, style: Incomplete | None = None, color: Incomplete | None = None, border_style: Incomplete | None = None ) -> None: ... class Border(Serialisable): @@ -45,19 +45,19 @@ class Border(Serialisable): diagonal_direction: Incomplete def __init__( self, - left: Incomplete | None = ..., - right: Incomplete | None = ..., - top: Incomplete | None = ..., - bottom: Incomplete | None = ..., - diagonal: Incomplete | None = ..., - diagonal_direction: Incomplete | None = ..., - vertical: Incomplete | None = ..., - horizontal: Incomplete | None = ..., - diagonalUp: bool = ..., - diagonalDown: bool = ..., - outline: bool = ..., - start: Incomplete | None = ..., - end: Incomplete | None = ..., + left: Incomplete | None = None, + right: Incomplete | None = None, + top: Incomplete | None = None, + bottom: Incomplete | None = None, + diagonal: Incomplete | None = None, + diagonal_direction: Incomplete | None = None, + vertical: Incomplete | None = None, + horizontal: Incomplete | None = None, + diagonalUp: bool = False, + diagonalDown: bool = False, + outline: bool = True, + start: Incomplete | None = None, + end: Incomplete | None = None, ) -> None: ... def __iter__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi index 32355ec9d..81855a0de 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi @@ -20,7 +20,7 @@ class StyleArray(array[Incomplete]): pivotButton: Incomplete quotePrefix: Incomplete xfId: Incomplete - def __new__(cls, args=...): ... + def __new__(cls, args=[0, 0, 0, 0, 0, 0, 0, 0, 0]): ... def __hash__(self) -> int: ... def __copy__(self): ... def __deepcopy__(self, memo): ... @@ -48,22 +48,22 @@ class CellStyle(Serialisable): __attrs__: Incomplete def __init__( self, - numFmtId: int = ..., - fontId: int = ..., - fillId: int = ..., - borderId: int = ..., - xfId: Incomplete | None = ..., - quotePrefix: Incomplete | None = ..., - pivotButton: Incomplete | None = ..., - applyNumberFormat: Incomplete | None = ..., - applyFont: Incomplete | None = ..., - applyFill: Incomplete | None = ..., - applyBorder: Incomplete | None = ..., - applyAlignment: Incomplete | None = ..., - applyProtection: Incomplete | None = ..., - alignment: Incomplete | None = ..., - protection: Incomplete | None = ..., - extLst: Incomplete | None = ..., + numFmtId: int = 0, + fontId: int = 0, + fillId: int = 0, + borderId: int = 0, + xfId: Incomplete | None = None, + quotePrefix: Incomplete | None = None, + pivotButton: Incomplete | None = None, + applyNumberFormat: Incomplete | None = None, + applyFont: Incomplete | None = None, + applyFill: Incomplete | None = None, + applyBorder: Incomplete | None = None, + applyAlignment: Incomplete | None = None, + applyProtection: Incomplete | None = None, + alignment: Incomplete | None = None, + protection: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... def to_array(self): ... @classmethod @@ -82,7 +82,7 @@ class CellStyleList(Serialisable): alignment: Incomplete protection: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., xf=...) -> None: ... + def __init__(self, count: Incomplete | None = None, xf=()) -> None: ... @property def count(self): ... def __getitem__(self, idx): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi index 4cb7974e8..d05e52ead 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi @@ -23,13 +23,13 @@ class Color(Serialisable): type: Incomplete def __init__( self, - rgb=..., - indexed: Incomplete | None = ..., - auto: Incomplete | None = ..., - theme: Incomplete | None = ..., - tint: float = ..., - index: Incomplete | None = ..., - type: str = ..., + rgb="00000000", + indexed: Incomplete | None = None, + auto: Incomplete | None = None, + theme: Incomplete | None = None, + tint: float = 0.0, + index: Incomplete | None = None, + type: str = "rgb", ) -> None: ... @property def value(self): ... @@ -47,14 +47,14 @@ class ColorDescriptor(Typed): class RgbColor(Serialisable): tagname: str rgb: Incomplete - def __init__(self, rgb: Incomplete | None = ...) -> None: ... + def __init__(self, rgb: Incomplete | None = None) -> None: ... class ColorList(Serialisable): tagname: str indexedColors: Incomplete mruColors: Incomplete __elements__: Incomplete - def __init__(self, indexedColors=..., mruColors=...) -> None: ... + def __init__(self, indexedColors=(), mruColors=()) -> None: ... def __bool__(self) -> bool: ... @property def index(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi index 4e0be87bb..560e64d06 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi @@ -14,13 +14,13 @@ class DifferentialStyle(Serialisable): extLst: Incomplete def __init__( self, - font: Incomplete | None = ..., - numFmt: Incomplete | None = ..., - fill: Incomplete | None = ..., - alignment: Incomplete | None = ..., - border: Incomplete | None = ..., - protection: Incomplete | None = ..., - extLst: Incomplete | None = ..., + font: Incomplete | None = None, + numFmt: Incomplete | None = None, + fill: Incomplete | None = None, + alignment: Incomplete | None = None, + border: Incomplete | None = None, + protection: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class DifferentialStyleList(Serialisable): @@ -28,7 +28,7 @@ class DifferentialStyleList(Serialisable): dxf: Incomplete styles: Incomplete __attrs__: Incomplete - def __init__(self, dxf=..., count: Incomplete | None = ...) -> None: ... + def __init__(self, dxf=(), count: Incomplete | None = None) -> None: ... def append(self, dxf) -> None: ... def add(self, dxf): ... def __bool__(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi index 8afca1212..8606fc491 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi @@ -40,14 +40,14 @@ class PatternFill(Fill): end_color: Incomplete def __init__( self, - patternType: Incomplete | None = ..., + patternType: Incomplete | None = None, fgColor=..., bgColor=..., - fill_type: Incomplete | None = ..., - start_color: Incomplete | None = ..., - end_color: Incomplete | None = ..., + fill_type: Incomplete | None = None, + start_color: Incomplete | None = None, + end_color: Incomplete | None = None, ) -> None: ... - def to_tree(self, tagname: Incomplete | None = ..., idx: Incomplete | None = ...): ... # type: ignore[override] + def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] DEFAULT_EMPTY_FILL: Incomplete DEFAULT_GRAY_FILL: Incomplete @@ -73,7 +73,7 @@ class GradientFill(Fill): bottom: Incomplete stop: Incomplete def __init__( - self, type: str = ..., degree: int = ..., left: int = ..., right: int = ..., top: int = ..., bottom: int = ..., stop=... + self, type: str = "linear", degree: int = 0, left: int = 0, right: int = 0, top: int = 0, bottom: int = 0, stop=() ) -> None: ... def __iter__(self): ... - def to_tree(self, tagname: Incomplete | None = ..., namespace: Incomplete | None = ..., idx: Incomplete | None = ...): ... # type: ignore[override] + def to_tree(self, tagname: Incomplete | None = None, namespace: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi index cb565d647..2762a77fd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi @@ -31,26 +31,26 @@ class Font(Serialisable): __elements__: Incomplete def __init__( self, - name: Incomplete | None = ..., - sz: Incomplete | None = ..., - b: Incomplete | None = ..., - i: Incomplete | None = ..., - charset: Incomplete | None = ..., - u: Incomplete | None = ..., - strike: Incomplete | None = ..., - color: Incomplete | None = ..., - scheme: Incomplete | None = ..., - family: Incomplete | None = ..., - size: Incomplete | None = ..., - bold: Incomplete | None = ..., - italic: Incomplete | None = ..., - strikethrough: Incomplete | None = ..., - underline: Incomplete | None = ..., - vertAlign: Incomplete | None = ..., - outline: Incomplete | None = ..., - shadow: Incomplete | None = ..., - condense: Incomplete | None = ..., - extend: Incomplete | None = ..., + name: Incomplete | None = None, + sz: Incomplete | None = None, + b: Incomplete | None = None, + i: Incomplete | None = None, + charset: Incomplete | None = None, + u: Incomplete | None = None, + strike: Incomplete | None = None, + color: Incomplete | None = None, + scheme: Incomplete | None = None, + family: Incomplete | None = None, + size: Incomplete | None = None, + bold: Incomplete | None = None, + italic: Incomplete | None = None, + strikethrough: Incomplete | None = None, + underline: Incomplete | None = None, + vertAlign: Incomplete | None = None, + outline: Incomplete | None = None, + shadow: Incomplete | None = None, + condense: Incomplete | None = None, + extend: Incomplete | None = None, ) -> None: ... @classmethod def from_tree(cls, node): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi index d848629ac..3d35fa984 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi @@ -16,16 +16,16 @@ class NamedStyle(Serialisable): # type: ignore[misc] name: Incomplete def __init__( self, - name: str = ..., - font=..., - fill=..., - border=..., - alignment=..., - number_format: Incomplete | None = ..., - protection=..., - builtinId: Incomplete | None = ..., - hidden: bool = ..., - xfId: Incomplete | None = ..., + name: str = "Normal", + font=None, + fill=None, + border=None, + alignment=None, + number_format: Incomplete | None = None, + protection=None, + builtinId: Incomplete | None = None, + hidden: bool = False, + xfId: Incomplete | None = None, ) -> None: ... def __setattr__(self, attr: str, value) -> None: ... def __iter__(self): ... @@ -54,13 +54,13 @@ class _NamedCellStyle(Serialisable): __elements__: Incomplete def __init__( self, - name: Incomplete | None = ..., - xfId: Incomplete | None = ..., - builtinId: Incomplete | None = ..., - iLevel: Incomplete | None = ..., - hidden: Incomplete | None = ..., - customBuiltin: Incomplete | None = ..., - extLst: Incomplete | None = ..., + name: Incomplete | None = None, + xfId: Incomplete | None = None, + builtinId: Incomplete | None = None, + iLevel: Incomplete | None = None, + hidden: Incomplete | None = None, + customBuiltin: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class _NamedCellStyleList(Serialisable): @@ -69,7 +69,7 @@ class _NamedCellStyleList(Serialisable): # count: Integer cellStyle: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., cellStyle=...) -> None: ... + def __init__(self, count: Incomplete | None = None, cellStyle=()) -> None: ... @property def count(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi index 2762b586b..b8fc40e52 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi @@ -59,7 +59,7 @@ class NumberFormatDescriptor(String): class NumberFormat(Serialisable): # type: ignore[misc] numFmtId: Incomplete formatCode: Incomplete - def __init__(self, numFmtId: Incomplete | None = ..., formatCode: Incomplete | None = ...) -> None: ... + def __init__(self, numFmtId: Incomplete | None = None, formatCode: Incomplete | None = None) -> None: ... class NumberFormatList(Serialisable): # type: ignore[misc] # Overwritten by property below @@ -67,7 +67,7 @@ class NumberFormatList(Serialisable): # type: ignore[misc] numFmt: Incomplete __elements__: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., numFmt=...) -> None: ... + def __init__(self, count: Incomplete | None = None, numFmt=()) -> None: ... @property def count(self): ... def __getitem__(self, idx): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/protection.pyi index 0aae25a3d..0f533a668 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/protection.pyi @@ -6,4 +6,4 @@ class Protection(Serialisable): tagname: str locked: Incomplete hidden: Incomplete - def __init__(self, locked: bool = ..., hidden: bool = ...) -> None: ... + def __init__(self, locked: bool = True, hidden: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/styleable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/styleable.pyi index 15e2a4bb0..b5602dbf1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/styleable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/styleable.pyi @@ -37,7 +37,7 @@ class StyleableObject: quotePrefix: Incomplete pivotButton: Incomplete parent: Incomplete - def __init__(self, sheet, style_array: Incomplete | None = ...) -> None: ... + def __init__(self, sheet, style_array: Incomplete | None = None) -> None: ... @property def style_id(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi index 3af63a891..31434efbf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi @@ -23,23 +23,23 @@ class Stylesheet(Serialisable): named_styles: Incomplete def __init__( self, - numFmts: Incomplete | None = ..., - fonts=..., - fills=..., - borders=..., - cellStyleXfs: Incomplete | None = ..., - cellXfs: Incomplete | None = ..., - cellStyles: Incomplete | None = ..., - dxfs=..., - tableStyles: Incomplete | None = ..., - colors: Incomplete | None = ..., - extLst: Incomplete | None = ..., + numFmts: Incomplete | None = None, + fonts=(), + fills=(), + borders=(), + cellStyleXfs: Incomplete | None = None, + cellXfs: Incomplete | None = None, + cellStyles: Incomplete | None = None, + dxfs=(), + tableStyles: Incomplete | None = None, + colors: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... @classmethod def from_tree(cls, node): ... @property def custom_formats(self): ... - def to_tree(self, tagname: Incomplete | None = ..., idx: Incomplete | None = ..., namespace: Incomplete | None = ...): ... + def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... def apply_stylesheet(archive, wb): ... def write_stylesheet(wb): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi index eae5d3850..daf88cab3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi @@ -7,7 +7,9 @@ class TableStyleElement(Serialisable): type: Incomplete size: Incomplete dxfId: Incomplete - def __init__(self, type: Incomplete | None = ..., size: Incomplete | None = ..., dxfId: Incomplete | None = ...) -> None: ... + def __init__( + self, type: Incomplete | None = None, size: Incomplete | None = None, dxfId: Incomplete | None = None + ) -> None: ... class TableStyle(Serialisable): tagname: str @@ -19,11 +21,11 @@ class TableStyle(Serialisable): __elements__: Incomplete def __init__( self, - name: Incomplete | None = ..., - pivot: Incomplete | None = ..., - table: Incomplete | None = ..., - count: Incomplete | None = ..., - tableStyleElement=..., + name: Incomplete | None = None, + pivot: Incomplete | None = None, + table: Incomplete | None = None, + count: Incomplete | None = None, + tableStyleElement=(), ) -> None: ... class TableStyleList(Serialisable): @@ -34,7 +36,11 @@ class TableStyleList(Serialisable): __elements__: Incomplete __attrs__: Incomplete def __init__( - self, count: Incomplete | None = ..., defaultTableStyle: str = ..., defaultPivotStyle: str = ..., tableStyle=... + self, + count: Incomplete | None = None, + defaultTableStyle: str = "TableStyleMedium9", + defaultPivotStyle: str = "PivotStyleLight16", + tableStyle=(), ) -> None: ... @property def count(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/bound_dictionary.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/bound_dictionary.pyi index 71292228a..c4556fa4b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/bound_dictionary.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/bound_dictionary.pyi @@ -1,7 +1,9 @@ -from _typeshed import Incomplete from collections import defaultdict +from typing import TypeVar -class BoundDictionary(defaultdict[Incomplete, Incomplete]): - reference: Incomplete - def __init__(self, reference: Incomplete | None = ..., *args, **kw) -> None: ... - def __getitem__(self, key): ... +_KT = TypeVar("_KT") +_VT = TypeVar("_VT") + +class BoundDictionary(defaultdict[_KT, _VT]): + reference: str | None + def __init__(self, reference: str | None = None, *args, **kw) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/dataframe.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/dataframe.pyi index 2f2938db5..d82d6c3c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/dataframe.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/dataframe.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete from collections.abc import Generator -def dataframe_to_rows(df, index: bool = ..., header: bool = ...) -> Generator[Incomplete, None, None]: ... -def expand_index(index, header: bool = ...) -> Generator[Incomplete, None, None]: ... +def dataframe_to_rows(df, index: bool = True, header: bool = True) -> Generator[Incomplete, None, None]: ... +def expand_index(index, header: bool = False) -> Generator[Incomplete, None, None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi index 1fc8bec4b..941bd2489 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi @@ -13,7 +13,7 @@ ISO_DURATION: Incomplete def to_ISO8601(dt): ... def from_ISO8601(formatted_string): ... def to_excel(dt, epoch=...): ... -def from_excel(value, epoch=..., timedelta: bool = ...): ... +def from_excel(value, epoch=..., timedelta: bool = False): ... def time_to_days(value): ... def timedelta_to_days(value): ... def days_to_time(value): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/indexed_list.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/indexed_list.pyi index 00420455e..d4bd17462 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/indexed_list.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/indexed_list.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete class IndexedList(list[Incomplete]): clean: bool - def __init__(self, iterable: Incomplete | None = ...) -> None: ... + def __init__(self, iterable: Incomplete | None = None) -> None: ... def __contains__(self, value): ... def index(self, value): ... def append(self, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/protection.pyi index 28eb69b53..f2b3f73e3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/protection.pyi @@ -1 +1 @@ -def hash_password(plaintext_password: str = ...): ... +def hash_password(plaintext_password: str = ""): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/units.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/units.pyi index dde205065..8f9c3d1a5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/units.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/units.pyi @@ -17,8 +17,8 @@ def cm_to_EMU(value): ... def EMU_to_cm(value): ... def inch_to_EMU(value): ... def EMU_to_inch(value): ... -def pixels_to_points(value, dpi: int = ...): ... -def points_to_pixels(value, dpi: int = ...): ... +def pixels_to_points(value, dpi: int = 96): ... +def points_to_pixels(value, dpi: int = 96): ... def degrees_to_angle(value): ... def angle_to_degrees(value): ... def short_color(color): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi index 385ac4cd6..b347be49e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi @@ -6,7 +6,7 @@ def avoid_duplicate_name(names, value): ... class _WorkbookChild: HeaderFooter: Incomplete - def __init__(self, parent: Incomplete | None = ..., title: Incomplete | None = ...) -> None: ... + def __init__(self, parent: Incomplete | None = None, title: Incomplete | None = None) -> None: ... @property def parent(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi index bc03e3b3f..913a0ab35 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi @@ -30,22 +30,22 @@ class DefinedName(Serialisable): value: Incomplete def __init__( self, - name: Incomplete | None = ..., - comment: Incomplete | None = ..., - customMenu: Incomplete | None = ..., - description: Incomplete | None = ..., - help: Incomplete | None = ..., - statusBar: Incomplete | None = ..., - localSheetId: Incomplete | None = ..., - hidden: Incomplete | None = ..., - function: Incomplete | None = ..., - vbProcedure: Incomplete | None = ..., - xlm: Incomplete | None = ..., - functionGroupId: Incomplete | None = ..., - shortcutKey: Incomplete | None = ..., - publishToServer: Incomplete | None = ..., - workbookParameter: Incomplete | None = ..., - attr_text: Incomplete | None = ..., + name: Incomplete | None = None, + comment: Incomplete | None = None, + customMenu: Incomplete | None = None, + description: Incomplete | None = None, + help: Incomplete | None = None, + statusBar: Incomplete | None = None, + localSheetId: Incomplete | None = None, + hidden: Incomplete | None = None, + function: Incomplete | None = None, + vbProcedure: Incomplete | None = None, + xlm: Incomplete | None = None, + functionGroupId: Incomplete | None = None, + shortcutKey: Incomplete | None = None, + publishToServer: Incomplete | None = None, + workbookParameter: Incomplete | None = None, + attr_text: Incomplete | None = None, ) -> None: ... @property def type(self): ... @@ -63,6 +63,6 @@ class DefinedNameDict(dict[str, DefinedName]): class DefinedNameList(Serialisable): tagname: str definedName: Sequence - def __init__(self, definedName=...) -> None: ... + def __init__(self, definedName=()) -> None: ... def by_sheet(self) -> defaultdict[int, DefinedNameDict]: ... def __len__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi index 49590a3a3..91eb85597 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi @@ -8,31 +8,31 @@ class ExternalCell(Serialisable): # type: ignore[misc] vm: Incomplete v: Incomplete def __init__( - self, r: Incomplete | None = ..., t: Incomplete | None = ..., vm: Incomplete | None = ..., v: Incomplete | None = ... + self, r: Incomplete | None = None, t: Incomplete | None = None, vm: Incomplete | None = None, v: Incomplete | None = None ) -> None: ... class ExternalRow(Serialisable): # type: ignore[misc] r: Incomplete cell: Incomplete __elements__: Incomplete - def __init__(self, r=..., cell: Incomplete | None = ...) -> None: ... + def __init__(self, r=(), cell: Incomplete | None = None) -> None: ... class ExternalSheetData(Serialisable): # type: ignore[misc] sheetId: Incomplete refreshError: Incomplete row: Incomplete __elements__: Incomplete - def __init__(self, sheetId: Incomplete | None = ..., refreshError: Incomplete | None = ..., row=...) -> None: ... + def __init__(self, sheetId: Incomplete | None = None, refreshError: Incomplete | None = None, row=()) -> None: ... class ExternalSheetDataSet(Serialisable): # type: ignore[misc] sheetData: Incomplete __elements__: Incomplete - def __init__(self, sheetData: Incomplete | None = ...) -> None: ... + def __init__(self, sheetData: Incomplete | None = None) -> None: ... class ExternalSheetNames(Serialisable): # type: ignore[misc] sheetName: Incomplete __elements__: Incomplete - def __init__(self, sheetName=...) -> None: ... + def __init__(self, sheetName=()) -> None: ... class ExternalDefinedName(Serialisable): tagname: str @@ -40,7 +40,7 @@ class ExternalDefinedName(Serialisable): refersTo: Incomplete sheetId: Incomplete def __init__( - self, name: Incomplete | None = ..., refersTo: Incomplete | None = ..., sheetId: Incomplete | None = ... + self, name: Incomplete | None = None, refersTo: Incomplete | None = None, sheetId: Incomplete | None = None ) -> None: ... class ExternalBook(Serialisable): @@ -52,10 +52,10 @@ class ExternalBook(Serialisable): __elements__: Incomplete def __init__( self, - sheetNames: Incomplete | None = ..., - definedNames=..., - sheetDataSet: Incomplete | None = ..., - id: Incomplete | None = ..., + sheetNames: Incomplete | None = None, + definedNames=(), + sheetDataSet: Incomplete | None = None, + id: Incomplete | None = None, ) -> None: ... class ExternalLink(Serialisable): @@ -66,10 +66,10 @@ class ExternalLink(Serialisable): __elements__: Incomplete def __init__( self, - externalBook: Incomplete | None = ..., - ddeLink: Incomplete | None = ..., - oleLink: Incomplete | None = ..., - extLst: Incomplete | None = ..., + externalBook: Incomplete | None = None, + ddeLink: Incomplete | None = None, + oleLink: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... def to_tree(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi index 861dbf404..e8926313f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi @@ -5,11 +5,11 @@ from openpyxl.descriptors.serialisable import Serialisable class FunctionGroup(Serialisable): tagname: str name: Incomplete - def __init__(self, name: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None) -> None: ... class FunctionGroupList(Serialisable): tagname: str builtInGroupCount: Incomplete functionGroup: Incomplete __elements__: Incomplete - def __init__(self, builtInGroupCount: int = ..., functionGroup=...) -> None: ... + def __init__(self, builtInGroupCount: int = 16, functionGroup=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi index 91cc69fac..b68cee451 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi @@ -25,25 +25,25 @@ class WorkbookProperties(Serialisable): defaultThemeVersion: Incomplete def __init__( self, - date1904: Incomplete | None = ..., - dateCompatibility: Incomplete | None = ..., - showObjects: Incomplete | None = ..., - showBorderUnselectedTables: Incomplete | None = ..., - filterPrivacy: Incomplete | None = ..., - promptedSolutions: Incomplete | None = ..., - showInkAnnotation: Incomplete | None = ..., - backupFile: Incomplete | None = ..., - saveExternalLinkValues: Incomplete | None = ..., - updateLinks: Incomplete | None = ..., - codeName: Incomplete | None = ..., - hidePivotFieldList: Incomplete | None = ..., - showPivotChartFilter: Incomplete | None = ..., - allowRefreshQuery: Incomplete | None = ..., - publishItems: Incomplete | None = ..., - checkCompatibility: Incomplete | None = ..., - autoCompressPictures: Incomplete | None = ..., - refreshAllConnections: Incomplete | None = ..., - defaultThemeVersion: Incomplete | None = ..., + date1904: Incomplete | None = None, + dateCompatibility: Incomplete | None = None, + showObjects: Incomplete | None = None, + showBorderUnselectedTables: Incomplete | None = None, + filterPrivacy: Incomplete | None = None, + promptedSolutions: Incomplete | None = None, + showInkAnnotation: Incomplete | None = None, + backupFile: Incomplete | None = None, + saveExternalLinkValues: Incomplete | None = None, + updateLinks: Incomplete | None = None, + codeName: Incomplete | None = None, + hidePivotFieldList: Incomplete | None = None, + showPivotChartFilter: Incomplete | None = None, + allowRefreshQuery: Incomplete | None = None, + publishItems: Incomplete | None = None, + checkCompatibility: Incomplete | None = None, + autoCompressPictures: Incomplete | None = None, + refreshAllConnections: Incomplete | None = None, + defaultThemeVersion: Incomplete | None = None, ) -> None: ... class CalcProperties(Serialisable): @@ -63,19 +63,19 @@ class CalcProperties(Serialisable): forceFullCalc: Incomplete def __init__( self, - calcId: int = ..., - calcMode: Incomplete | None = ..., - fullCalcOnLoad: bool = ..., - refMode: Incomplete | None = ..., - iterate: Incomplete | None = ..., - iterateCount: Incomplete | None = ..., - iterateDelta: Incomplete | None = ..., - fullPrecision: Incomplete | None = ..., - calcCompleted: Incomplete | None = ..., - calcOnSave: Incomplete | None = ..., - concurrentCalc: Incomplete | None = ..., - concurrentManualCount: Incomplete | None = ..., - forceFullCalc: Incomplete | None = ..., + calcId: int = 124519, + calcMode: Incomplete | None = None, + fullCalcOnLoad: bool = True, + refMode: Incomplete | None = None, + iterate: Incomplete | None = None, + iterateCount: Incomplete | None = None, + iterateDelta: Incomplete | None = None, + fullPrecision: Incomplete | None = None, + calcCompleted: Incomplete | None = None, + calcOnSave: Incomplete | None = None, + concurrentCalc: Incomplete | None = None, + concurrentManualCount: Incomplete | None = None, + forceFullCalc: Incomplete | None = None, ) -> None: ... class FileVersion(Serialisable): @@ -87,9 +87,9 @@ class FileVersion(Serialisable): codeName: Incomplete def __init__( self, - appName: Incomplete | None = ..., - lastEdited: Incomplete | None = ..., - lowestEdited: Incomplete | None = ..., - rupBuild: Incomplete | None = ..., - codeName: Incomplete | None = ..., + appName: Incomplete | None = None, + lastEdited: Incomplete | None = None, + lowestEdited: Incomplete | None = None, + rupBuild: Incomplete | None = None, + codeName: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi index 44b18bf2b..f978e8e85 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi @@ -25,28 +25,28 @@ class WorkbookProtection(Serialisable): __attrs__: Incomplete def __init__( self, - workbookPassword: Incomplete | None = ..., - workbookPasswordCharacterSet: Incomplete | None = ..., - revisionsPassword: Incomplete | None = ..., - revisionsPasswordCharacterSet: Incomplete | None = ..., - lockStructure: Incomplete | None = ..., - lockWindows: Incomplete | None = ..., - lockRevision: Incomplete | None = ..., - revisionsAlgorithmName: Incomplete | None = ..., - revisionsHashValue: Incomplete | None = ..., - revisionsSaltValue: Incomplete | None = ..., - revisionsSpinCount: Incomplete | None = ..., - workbookAlgorithmName: Incomplete | None = ..., - workbookHashValue: Incomplete | None = ..., - workbookSaltValue: Incomplete | None = ..., - workbookSpinCount: Incomplete | None = ..., + workbookPassword: Incomplete | None = None, + workbookPasswordCharacterSet: Incomplete | None = None, + revisionsPassword: Incomplete | None = None, + revisionsPasswordCharacterSet: Incomplete | None = None, + lockStructure: Incomplete | None = None, + lockWindows: Incomplete | None = None, + lockRevision: Incomplete | None = None, + revisionsAlgorithmName: Incomplete | None = None, + revisionsHashValue: Incomplete | None = None, + revisionsSaltValue: Incomplete | None = None, + revisionsSpinCount: Incomplete | None = None, + workbookAlgorithmName: Incomplete | None = None, + workbookHashValue: Incomplete | None = None, + workbookSaltValue: Incomplete | None = None, + workbookSpinCount: Incomplete | None = None, ) -> None: ... - def set_workbook_password(self, value: str = ..., already_hashed: bool = ...) -> None: ... + def set_workbook_password(self, value: str = "", already_hashed: bool = False) -> None: ... @property def workbookPassword(self): ... @workbookPassword.setter def workbookPassword(self, value) -> None: ... - def set_revisions_password(self, value: str = ..., already_hashed: bool = ...) -> None: ... + def set_revisions_password(self, value: str = "", already_hashed: bool = False) -> None: ... @property def revisionsPassword(self): ... @revisionsPassword.setter @@ -67,11 +67,11 @@ class FileSharing(Serialisable): spinCount: Incomplete def __init__( self, - readOnlyRecommended: Incomplete | None = ..., - userName: Incomplete | None = ..., - reservationPassword: Incomplete | None = ..., - algorithmName: Incomplete | None = ..., - hashValue: Incomplete | None = ..., - saltValue: Incomplete | None = ..., - spinCount: Incomplete | None = ..., + readOnlyRecommended: Incomplete | None = None, + userName: Incomplete | None = None, + reservationPassword: Incomplete | None = None, + algorithmName: Incomplete | None = None, + hashValue: Incomplete | None = None, + saltValue: Incomplete | None = None, + spinCount: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi index d5be770ca..9c595258f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi @@ -8,17 +8,17 @@ class SmartTag(Serialisable): name: Incomplete url: Incomplete def __init__( - self, namespaceUri: Incomplete | None = ..., name: Incomplete | None = ..., url: Incomplete | None = ... + self, namespaceUri: Incomplete | None = None, name: Incomplete | None = None, url: Incomplete | None = None ) -> None: ... class SmartTagList(Serialisable): tagname: str smartTagType: Incomplete __elements__: Incomplete - def __init__(self, smartTagType=...) -> None: ... + def __init__(self, smartTagType=()) -> None: ... class SmartTagProperties(Serialisable): tagname: str embed: Incomplete show: Incomplete - def __init__(self, embed: Incomplete | None = ..., show: Incomplete | None = ...) -> None: ... + def __init__(self, embed: Incomplete | None = None, show: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi index 1a6e8e0b7..cedcaacb3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi @@ -21,20 +21,20 @@ class BookView(Serialisable): __elements__: Incomplete def __init__( self, - visibility: str = ..., - minimized: bool = ..., - showHorizontalScroll: bool = ..., - showVerticalScroll: bool = ..., - showSheetTabs: bool = ..., - xWindow: Incomplete | None = ..., - yWindow: Incomplete | None = ..., - windowWidth: Incomplete | None = ..., - windowHeight: Incomplete | None = ..., - tabRatio: int = ..., - firstSheet: int = ..., - activeTab: int = ..., - autoFilterDateGrouping: bool = ..., - extLst: Incomplete | None = ..., + visibility: str = "visible", + minimized: bool = False, + showHorizontalScroll: bool = True, + showVerticalScroll: bool = True, + showSheetTabs: bool = True, + xWindow: Incomplete | None = None, + yWindow: Incomplete | None = None, + windowWidth: Incomplete | None = None, + windowHeight: Incomplete | None = None, + tabRatio: int = 600, + firstSheet: int = 0, + activeTab: int = 0, + autoFilterDateGrouping: bool = True, + extLst: Incomplete | None = None, ) -> None: ... class CustomWorkbookView(Serialisable): @@ -67,29 +67,29 @@ class CustomWorkbookView(Serialisable): __elements__: Incomplete def __init__( self, - name: Incomplete | None = ..., - guid: Incomplete | None = ..., - autoUpdate: Incomplete | None = ..., - mergeInterval: Incomplete | None = ..., - changesSavedWin: Incomplete | None = ..., - onlySync: Incomplete | None = ..., - personalView: Incomplete | None = ..., - includePrintSettings: Incomplete | None = ..., - includeHiddenRowCol: Incomplete | None = ..., - maximized: Incomplete | None = ..., - minimized: Incomplete | None = ..., - showHorizontalScroll: Incomplete | None = ..., - showVerticalScroll: Incomplete | None = ..., - showSheetTabs: Incomplete | None = ..., - xWindow: Incomplete | None = ..., - yWindow: Incomplete | None = ..., - windowWidth: Incomplete | None = ..., - windowHeight: Incomplete | None = ..., - tabRatio: Incomplete | None = ..., - activeSheetId: Incomplete | None = ..., - showFormulaBar: Incomplete | None = ..., - showStatusbar: Incomplete | None = ..., - showComments: str = ..., - showObjects: str = ..., - extLst: Incomplete | None = ..., + name: Incomplete | None = None, + guid: Incomplete | None = None, + autoUpdate: Incomplete | None = None, + mergeInterval: Incomplete | None = None, + changesSavedWin: Incomplete | None = None, + onlySync: Incomplete | None = None, + personalView: Incomplete | None = None, + includePrintSettings: Incomplete | None = None, + includeHiddenRowCol: Incomplete | None = None, + maximized: Incomplete | None = None, + minimized: Incomplete | None = None, + showHorizontalScroll: Incomplete | None = None, + showVerticalScroll: Incomplete | None = None, + showSheetTabs: Incomplete | None = None, + xWindow: Incomplete | None = None, + yWindow: Incomplete | None = None, + windowWidth: Incomplete | None = None, + windowHeight: Incomplete | None = None, + tabRatio: Incomplete | None = None, + activeSheetId: Incomplete | None = None, + showFormulaBar: Incomplete | None = None, + showStatusbar: Incomplete | None = None, + showComments: str = "commIndicator", + showObjects: str = "all", + extLst: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi index 0f80700aa..c5a6bfe35 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi @@ -12,12 +12,12 @@ class WebPublishObject(Serialisable): autoRepublish: Incomplete def __init__( self, - id: Incomplete | None = ..., - divId: Incomplete | None = ..., - sourceObject: Incomplete | None = ..., - destinationFile: Incomplete | None = ..., - title: Incomplete | None = ..., - autoRepublish: Incomplete | None = ..., + id: Incomplete | None = None, + divId: Incomplete | None = None, + sourceObject: Incomplete | None = None, + destinationFile: Incomplete | None = None, + title: Incomplete | None = None, + autoRepublish: Incomplete | None = None, ) -> None: ... class WebPublishObjectList(Serialisable): @@ -26,7 +26,7 @@ class WebPublishObjectList(Serialisable): # count: Integer webPublishObject: Incomplete __elements__: Incomplete - def __init__(self, count: Incomplete | None = ..., webPublishObject=...) -> None: ... + def __init__(self, count: Incomplete | None = None, webPublishObject=()) -> None: ... @property def count(self): ... @@ -43,13 +43,13 @@ class WebPublishing(Serialisable): characterSet: Incomplete def __init__( self, - css: Incomplete | None = ..., - thicket: Incomplete | None = ..., - longFileNames: Incomplete | None = ..., - vml: Incomplete | None = ..., - allowPng: Incomplete | None = ..., - targetScreenSize: str = ..., - dpi: Incomplete | None = ..., - codePage: Incomplete | None = ..., - characterSet: Incomplete | None = ..., + css: Incomplete | None = None, + thicket: Incomplete | None = None, + longFileNames: Incomplete | None = None, + vml: Incomplete | None = None, + allowPng: Incomplete | None = None, + targetScreenSize: str = "800x600", + dpi: Incomplete | None = None, + codePage: Incomplete | None = None, + characterSet: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/workbook.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/workbook.pyi index f0b673d72..3fc2bf03e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/workbook.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/workbook.pyi @@ -27,7 +27,7 @@ class Workbook: rels: Incomplete calculation: Incomplete views: Incomplete - def __init__(self, write_only: bool = ..., iso_dates: bool = ...) -> None: ... + def __init__(self, write_only: bool = False, iso_dates: bool = False) -> None: ... @property def epoch(self) -> datetime: ... @epoch.setter @@ -44,11 +44,11 @@ class Workbook: def active(self) -> _WorkbookChild | None: ... @active.setter def active(self, value: _WorkbookChild | int) -> None: ... - def create_sheet(self, title: str | None = ..., index: int | None = ...): ... - def move_sheet(self, sheet: Worksheet | str, offset: int = ...) -> None: ... + def create_sheet(self, title: str | None = None, index: int | None = None): ... + def move_sheet(self, sheet: Worksheet | str, offset: int = 0) -> None: ... def remove(self, worksheet: Worksheet) -> None: ... def remove_sheet(self, worksheet: Worksheet) -> None: ... - def create_chartsheet(self, title: str | None = ..., index: int | None = ...) -> Chartsheet: ... + def create_chartsheet(self, title: str | None = None, index: int | None = None) -> Chartsheet: ... def get_sheet_by_name(self, name: str) -> Worksheet: ... def __contains__(self, key: str) -> bool: ... def index(self, worksheet: Worksheet) -> int: ... @@ -64,7 +64,11 @@ class Workbook: @property def sheetnames(self) -> list[str]: ... def create_named_range( - self, name: str, worksheet: Worksheet | None = ..., value: str | Incomplete | None = ..., scope: Incomplete | None = ... + self, + name: str, + worksheet: Worksheet | None = None, + value: str | Incomplete | None = None, + scope: Incomplete | None = None, ) -> None: ... def add_named_style(self, style: NamedStyle) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_read_only.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_read_only.pyi index 7be203764..e976e94ac 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_read_only.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_read_only.pyi @@ -15,7 +15,7 @@ class ReadOnlyWorksheet: title: Incomplete sheet_state: str def __init__(self, parent_workbook, title, worksheet_path, shared_strings) -> None: ... - def calculate_dimension(self, force: bool = ...): ... + def calculate_dimension(self, force: bool = False): ... def reset_dimensions(self) -> None: ... @property def min_row(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi index f5cc760b2..d22d6bb92 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi @@ -3,13 +3,13 @@ from collections.abc import Generator ALL_TEMP_FILES: Incomplete -def create_temporary_file(suffix: str = ...): ... +def create_temporary_file(suffix: str = ""): ... class WorksheetWriter: ws: Incomplete out: Incomplete xf: Incomplete - def __init__(self, ws, out: Incomplete | None = ...) -> None: ... + def __init__(self, ws, out: Incomplete | None = None) -> None: ... def write_properties(self) -> None: ... def write_dimensions(self) -> None: ... def write_format(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi index 72edc3e29..f6a409314 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi @@ -12,12 +12,12 @@ class CellRange(Serialisable): # type: ignore[misc] title: Incomplete def __init__( self, - range_string: Incomplete | None = ..., - min_col: Incomplete | None = ..., - min_row: Incomplete | None = ..., - max_col: Incomplete | None = ..., - max_row: Incomplete | None = ..., - title: Incomplete | None = ..., + range_string: Incomplete | None = None, + min_col: Incomplete | None = None, + min_row: Incomplete | None = None, + max_col: Incomplete | None = None, + max_row: Incomplete | None = None, + title: Incomplete | None = None, ) -> None: ... @property def bounds(self): ... @@ -30,7 +30,7 @@ class CellRange(Serialisable): # type: ignore[misc] @property def cells(self): ... def __copy__(self): ... - def shift(self, col_shift: int = ..., row_shift: int = ...) -> None: ... + def shift(self, col_shift: int = 0, row_shift: int = 0) -> None: ... def __ne__(self, other): ... def __eq__(self, other): ... def issubset(self, other): ... @@ -46,8 +46,8 @@ class CellRange(Serialisable): # type: ignore[misc] def union(self, other): ... __or__: Incomplete def __iter__(self): ... - def expand(self, right: int = ..., down: int = ..., left: int = ..., up: int = ...) -> None: ... - def shrink(self, right: int = ..., bottom: int = ..., left: int = ..., top: int = ...) -> None: ... + def expand(self, right: int = 0, down: int = 0, left: int = 0, up: int = 0) -> None: ... + def shrink(self, right: int = 0, bottom: int = 0, left: int = 0, top: int = 0) -> None: ... @property def size(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi index 35ebbda0f..d3c3434a4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi @@ -5,10 +5,10 @@ from openpyxl.descriptors.serialisable import Serialisable class CellWatch(Serialisable): tagname: str r: Incomplete - def __init__(self, r: Incomplete | None = ...) -> None: ... + def __init__(self, r: Incomplete | None = None) -> None: ... class CellWatches(Serialisable): tagname: str cellWatch: Incomplete __elements__: Incomplete - def __init__(self, cellWatch=...) -> None: ... + def __init__(self, cellWatch=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi index f56d3ae3a..99cfd33de 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi @@ -22,22 +22,22 @@ class ControlProperty(Serialisable): __elements__: Incomplete def __init__( self, - anchor: Incomplete | None = ..., - locked: bool = ..., - defaultSize: bool = ..., - _print: bool = ..., - disabled: bool = ..., - recalcAlways: bool = ..., - uiObject: bool = ..., - autoFill: bool = ..., - autoLine: bool = ..., - autoPict: bool = ..., - macro: Incomplete | None = ..., - altText: Incomplete | None = ..., - linkedCell: Incomplete | None = ..., - listFillRange: Incomplete | None = ..., - cf: str = ..., - id: Incomplete | None = ..., + anchor: Incomplete | None = None, + locked: bool = True, + defaultSize: bool = True, + _print: bool = True, + disabled: bool = False, + recalcAlways: bool = False, + uiObject: bool = False, + autoFill: bool = True, + autoLine: bool = True, + autoPict: bool = True, + macro: Incomplete | None = None, + altText: Incomplete | None = None, + linkedCell: Incomplete | None = None, + listFillRange: Incomplete | None = None, + cf: str = "pict", + id: Incomplete | None = None, ) -> None: ... class Control(Serialisable): @@ -47,11 +47,11 @@ class Control(Serialisable): name: Incomplete __elements__: Incomplete def __init__( - self, controlPr: Incomplete | None = ..., shapeId: Incomplete | None = ..., name: Incomplete | None = ... + self, controlPr: Incomplete | None = None, shapeId: Incomplete | None = None, name: Incomplete | None = None ) -> None: ... class Controls(Serialisable): tagname: str control: Incomplete __elements__: Incomplete - def __init__(self, control=...) -> None: ... + def __init__(self, control=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi index ba95ab03b..3c9b6616e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi @@ -5,10 +5,10 @@ from openpyxl.descriptors.serialisable import Serialisable class CustomProperty(Serialisable): tagname: str name: Incomplete - def __init__(self, name: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None) -> None: ... class CustomProperties(Serialisable): tagname: str customPr: Incomplete __elements__: Incomplete - def __init__(self, customPr=...) -> None: ... + def __init__(self, customPr=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi index 51bc50b7d..335fbd599 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from openpyxl.descriptors.serialisable import Serialisable -def collapse_cell_addresses(cells, input_ranges=...): ... +def collapse_cell_addresses(cells, input_ranges=()): ... def expand_cell_ranges(range_string): ... class DataValidation(Serialisable): @@ -29,22 +29,22 @@ class DataValidation(Serialisable): validation_type: Incomplete def __init__( self, - type: Incomplete | None = ..., - formula1: Incomplete | None = ..., - formula2: Incomplete | None = ..., - showErrorMessage: bool = ..., - showInputMessage: bool = ..., - showDropDown: Incomplete | None = ..., - allowBlank: Incomplete | None = ..., - sqref=..., - promptTitle: Incomplete | None = ..., - errorStyle: Incomplete | None = ..., - error: Incomplete | None = ..., - prompt: Incomplete | None = ..., - errorTitle: Incomplete | None = ..., - imeMode: Incomplete | None = ..., - operator: Incomplete | None = ..., - allow_blank: Incomplete | None = ..., + type: Incomplete | None = None, + formula1: Incomplete | None = None, + formula2: Incomplete | None = None, + showErrorMessage: bool = False, + showInputMessage: bool = False, + showDropDown: Incomplete | None = False, + allowBlank: Incomplete | None = False, + sqref=(), + promptTitle: Incomplete | None = None, + errorStyle: Incomplete | None = None, + error: Incomplete | None = None, + prompt: Incomplete | None = None, + errorTitle: Incomplete | None = None, + imeMode: Incomplete | None = None, + operator: Incomplete | None = None, + allow_blank: Incomplete | None = False, ) -> None: ... def add(self, cell) -> None: ... def __contains__(self, cell): ... @@ -59,14 +59,14 @@ class DataValidationList(Serialisable): __attrs__: Incomplete def __init__( self, - disablePrompts: Incomplete | None = ..., - xWindow: Incomplete | None = ..., - yWindow: Incomplete | None = ..., - count: Incomplete | None = ..., - dataValidation=..., + disablePrompts: Incomplete | None = None, + xWindow: Incomplete | None = None, + yWindow: Incomplete | None = None, + count: Incomplete | None = None, + dataValidation=(), ) -> None: ... @property def count(self): ... def __len__(self) -> int: ... def append(self, dv) -> None: ... - def to_tree(self, tagname: Incomplete | None = ...): ... # type: ignore[override] + def to_tree(self, tagname: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi index 8193a77bd..cdeac3983 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi @@ -1,95 +1,115 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from collections.abc import Callable, Iterator +from typing import ClassVar, Generic, TypeVar +from typing_extensions import Self from openpyxl.descriptors import Strict +from openpyxl.descriptors.base import Alias, Bool, Float, Integer, String from openpyxl.descriptors.serialisable import Serialisable from openpyxl.styles.styleable import StyleableObject from openpyxl.utils.bound_dictionary import BoundDictionary +from openpyxl.worksheet.worksheet import Worksheet +from openpyxl.xml.functions import Element + +_DimT = TypeVar("_DimT", bound=Dimension) class Dimension(Strict, StyleableObject): - __fields__: Incomplete - index: Incomplete - hidden: Incomplete - outlineLevel: Incomplete - outline_level: Incomplete - collapsed: Incomplete - style: Incomplete + __fields__: ClassVar[tuple[str, ...]] + + index: Integer + hidden: Bool + outlineLevel: Integer + outline_level: Alias + collapsed: Bool + style: Alias + def __init__( - self, index, hidden, outlineLevel, collapsed, worksheet, visible: bool = ..., style: Incomplete | None = ... + self, + index: int, + hidden: bool, + outlineLevel: int | None, + collapsed: bool, + worksheet: Worksheet, + visible: bool = True, + style: Incomplete | None = None, ) -> None: ... - def __iter__(self): ... - def __copy__(self): ... + def __iter__(self) -> Iterator[tuple[str, str]]: ... + def __copy__(self) -> Self: ... class RowDimension(Dimension): - __fields__: Incomplete - r: Incomplete - s: Incomplete - ht: Incomplete - height: Incomplete - thickBot: Incomplete - thickTop: Incomplete + r: Alias + s: Alias + ht: Float + height: Alias + thickBot: Bool + thickTop: Bool + def __init__( self, - worksheet, - index: int = ..., - ht: Incomplete | None = ..., - customHeight: Incomplete | None = ..., - s: Incomplete | None = ..., - customFormat: Incomplete | None = ..., - hidden: bool = ..., - outlineLevel: int = ..., - outline_level: Incomplete | None = ..., - collapsed: bool = ..., - visible: Incomplete | None = ..., - height: Incomplete | None = ..., - r: Incomplete | None = ..., - spans: Incomplete | None = ..., - thickBot: Incomplete | None = ..., - thickTop: Incomplete | None = ..., - **kw, + worksheet: Worksheet, + index: int = 0, + ht: Incomplete | None = None, + customHeight: Incomplete | None = None, + s: Incomplete | None = None, + customFormat: Incomplete | None = None, + hidden: bool = False, + outlineLevel: int = 0, + outline_level: Incomplete | None = None, + collapsed: bool = False, + visible: Incomplete | None = None, + height: Incomplete | None = None, + r: Incomplete | None = None, + spans: Incomplete | None = None, + thickBot: Incomplete | None = None, + thickTop: Incomplete | None = None, + **kw: Unused, ) -> None: ... @property - def customFormat(self): ... + def customFormat(self) -> bool: ... @property - def customHeight(self): ... + def customHeight(self) -> bool: ... class ColumnDimension(Dimension): - width: Incomplete - bestFit: Incomplete - auto_size: Incomplete - index: Incomplete - min: Incomplete - max: Incomplete - collapsed: Incomplete - __fields__: Incomplete + width: Float + bestFit: Bool + auto_size: Alias + index: String # type: ignore[assignment] + min: Integer + max: Integer + collapsed: Bool + def __init__( self, - worksheet, - index: str = ..., - width=..., - bestFit: bool = ..., - hidden: bool = ..., - outlineLevel: int = ..., - outline_level: Incomplete | None = ..., - collapsed: bool = ..., - style: Incomplete | None = ..., - min: Incomplete | None = ..., - max: Incomplete | None = ..., - customWidth: bool = ..., - visible: Incomplete | None = ..., - auto_size: Incomplete | None = ..., + worksheet: Worksheet, + index: str = "A", + width: int = 13, + bestFit: bool = False, + hidden: bool = False, + outlineLevel: int = 0, + outline_level: int | None = None, + collapsed: bool = False, + style: Incomplete | None = None, + min: int | None = None, + max: int | None = None, + customWidth: bool = False, + visible: bool | None = None, + auto_size: bool | None = None, ) -> None: ... @property - def customWidth(self): ... + def customWidth(self) -> bool: ... def reindex(self) -> None: ... - def to_tree(self): ... + def to_tree(self) -> Element | None: ... + +class DimensionHolder(BoundDictionary[str, _DimT], Generic[_DimT]): + worksheet: Worksheet + max_outline: int | None + default_factory: Callable[[], _DimT] | None -class DimensionHolder(BoundDictionary): - worksheet: Incomplete - max_outline: Incomplete - default_factory: Incomplete - def __init__(self, worksheet, reference: str = ..., default_factory: Incomplete | None = ...) -> None: ... - def group(self, start, end: Incomplete | None = ..., outline_level: int = ..., hidden: bool = ...) -> None: ... - def to_tree(self): ... + def __init__( + self, worksheet: Worksheet, reference: str = "index", default_factory: Callable[[], _DimT] | None = None + ) -> None: ... + def group(self, start: str, end: str | None = None, outline_level: int = 1, hidden: bool = False) -> None: ... + def to_tree(self) -> Element | None: ... class SheetFormatProperties(Serialisable): tagname: str @@ -104,20 +124,20 @@ class SheetFormatProperties(Serialisable): outlineLevelCol: Incomplete def __init__( self, - baseColWidth: int = ..., - defaultColWidth: Incomplete | None = ..., - defaultRowHeight: int = ..., - customHeight: Incomplete | None = ..., - zeroHeight: Incomplete | None = ..., - thickTop: Incomplete | None = ..., - thickBottom: Incomplete | None = ..., - outlineLevelRow: Incomplete | None = ..., - outlineLevelCol: Incomplete | None = ..., + baseColWidth: int = 8, + defaultColWidth: Incomplete | None = None, + defaultRowHeight: int = 15, + customHeight: Incomplete | None = None, + zeroHeight: Incomplete | None = None, + thickTop: Incomplete | None = None, + thickBottom: Incomplete | None = None, + outlineLevelRow: Incomplete | None = None, + outlineLevelCol: Incomplete | None = None, ) -> None: ... class SheetDimension(Serialisable): tagname: str ref: Incomplete - def __init__(self, ref: Incomplete | None = ...) -> None: ... + def __init__(self, ref: Incomplete | None = None) -> None: ... @property def boundaries(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/drawing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/drawing.pyi index 25de5747c..d95fbd256 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/drawing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/drawing.pyi @@ -5,4 +5,4 @@ from openpyxl.descriptors.serialisable import Serialisable class Drawing(Serialisable): tagname: str id: Incomplete - def __init__(self, id: Incomplete | None = ...) -> None: ... + def __init__(self, id: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi index 0481d7662..d29bc9cbc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi @@ -5,13 +5,13 @@ from openpyxl.descriptors.serialisable import Serialisable class Extension(Serialisable): tagname: str uri: Incomplete - def __init__(self, uri: Incomplete | None = ...) -> None: ... + def __init__(self, uri: Incomplete | None = None) -> None: ... class ExtensionList(Serialisable): tagname: str ext: Incomplete __elements__: Incomplete - def __init__(self, ext=...) -> None: ... + def __init__(self, ext=()) -> None: ... class IgnoredError(Serialisable): tagname: str @@ -27,16 +27,16 @@ class IgnoredError(Serialisable): calculatedColumn: Incomplete def __init__( self, - sqref: Incomplete | None = ..., - evalError: bool = ..., - twoDigitTextYear: bool = ..., - numberStoredAsText: bool = ..., - formula: bool = ..., - formulaRange: bool = ..., - unlockedFormula: bool = ..., - emptyCellReference: bool = ..., - listDataValidation: bool = ..., - calculatedColumn: bool = ..., + sqref: Incomplete | None = None, + evalError: bool = False, + twoDigitTextYear: bool = False, + numberStoredAsText: bool = False, + formula: bool = False, + formulaRange: bool = False, + unlockedFormula: bool = False, + emptyCellReference: bool = False, + listDataValidation: bool = False, + calculatedColumn: bool = False, ) -> None: ... class IgnoredErrors(Serialisable): @@ -44,4 +44,4 @@ class IgnoredErrors(Serialisable): ignoredError: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, ignoredError=..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, ignoredError=(), extLst: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi index 7526971d4..b3ad79588 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi @@ -13,13 +13,13 @@ class SortCondition(Serialisable): iconId: Incomplete def __init__( self, - ref: Incomplete | None = ..., - descending: Incomplete | None = ..., - sortBy: Incomplete | None = ..., - customList: Incomplete | None = ..., - dxfId: Incomplete | None = ..., - iconSet: Incomplete | None = ..., - iconId: Incomplete | None = ..., + ref: Incomplete | None = None, + descending: Incomplete | None = None, + sortBy: Incomplete | None = None, + customList: Incomplete | None = None, + dxfId: Incomplete | None = None, + iconSet: Incomplete | None = None, + iconId: Incomplete | None = None, ) -> None: ... class SortState(Serialisable): @@ -33,12 +33,12 @@ class SortState(Serialisable): __elements__: Incomplete def __init__( self, - columnSort: Incomplete | None = ..., - caseSensitive: Incomplete | None = ..., - sortMethod: Incomplete | None = ..., - ref: Incomplete | None = ..., - sortCondition=..., - extLst: Incomplete | None = ..., + columnSort: Incomplete | None = None, + caseSensitive: Incomplete | None = None, + sortMethod: Incomplete | None = None, + ref: Incomplete | None = None, + sortCondition=(), + extLst: Incomplete | None = None, ) -> None: ... def __bool__(self) -> bool: ... @@ -46,13 +46,13 @@ class IconFilter(Serialisable): tagname: str iconSet: Incomplete iconId: Incomplete - def __init__(self, iconSet: Incomplete | None = ..., iconId: Incomplete | None = ...) -> None: ... + def __init__(self, iconSet: Incomplete | None = None, iconId: Incomplete | None = None) -> None: ... class ColorFilter(Serialisable): tagname: str dxfId: Incomplete cellColor: Incomplete - def __init__(self, dxfId: Incomplete | None = ..., cellColor: Incomplete | None = ...) -> None: ... + def __init__(self, dxfId: Incomplete | None = None, cellColor: Incomplete | None = None) -> None: ... class DynamicFilter(Serialisable): tagname: str @@ -63,24 +63,24 @@ class DynamicFilter(Serialisable): maxValIso: Incomplete def __init__( self, - type: Incomplete | None = ..., - val: Incomplete | None = ..., - valIso: Incomplete | None = ..., - maxVal: Incomplete | None = ..., - maxValIso: Incomplete | None = ..., + type: Incomplete | None = None, + val: Incomplete | None = None, + valIso: Incomplete | None = None, + maxVal: Incomplete | None = None, + maxValIso: Incomplete | None = None, ) -> None: ... class CustomFilter(Serialisable): tagname: str operator: Incomplete val: Incomplete - def __init__(self, operator: Incomplete | None = ..., val: Incomplete | None = ...) -> None: ... + def __init__(self, operator: Incomplete | None = None, val: Incomplete | None = None) -> None: ... class CustomFilters(Serialisable): tagname: str customFilter: Incomplete __elements__: Incomplete - def __init__(self, _and: Incomplete | None = ..., customFilter=...) -> None: ... + def __init__(self, _and: Incomplete | None = False, customFilter=()) -> None: ... class Top10(Serialisable): tagname: str @@ -90,10 +90,10 @@ class Top10(Serialisable): filterVal: Incomplete def __init__( self, - top: Incomplete | None = ..., - percent: Incomplete | None = ..., - val: Incomplete | None = ..., - filterVal: Incomplete | None = ..., + top: Incomplete | None = None, + percent: Incomplete | None = None, + val: Incomplete | None = None, + filterVal: Incomplete | None = None, ) -> None: ... class DateGroupItem(Serialisable): @@ -107,13 +107,13 @@ class DateGroupItem(Serialisable): dateTimeGrouping: Incomplete def __init__( self, - year: Incomplete | None = ..., - month: Incomplete | None = ..., - day: Incomplete | None = ..., - hour: Incomplete | None = ..., - minute: Incomplete | None = ..., - second: Incomplete | None = ..., - dateTimeGrouping: Incomplete | None = ..., + year: Incomplete | None = None, + month: Incomplete | None = None, + day: Incomplete | None = None, + hour: Incomplete | None = None, + minute: Incomplete | None = None, + second: Incomplete | None = None, + dateTimeGrouping: Incomplete | None = None, ) -> None: ... class Filters(Serialisable): @@ -124,7 +124,7 @@ class Filters(Serialisable): dateGroupItem: Incomplete __elements__: Incomplete def __init__( - self, blank: Incomplete | None = ..., calendarType: Incomplete | None = ..., filter=..., dateGroupItem=... + self, blank: Incomplete | None = None, calendarType: Incomplete | None = None, filter=(), dateGroupItem=() ) -> None: ... class FilterColumn(Serialisable): @@ -143,18 +143,18 @@ class FilterColumn(Serialisable): __elements__: Incomplete def __init__( self, - colId: Incomplete | None = ..., - hiddenButton: Incomplete | None = ..., - showButton: Incomplete | None = ..., - filters: Incomplete | None = ..., - top10: Incomplete | None = ..., - customFilters: Incomplete | None = ..., - dynamicFilter: Incomplete | None = ..., - colorFilter: Incomplete | None = ..., - iconFilter: Incomplete | None = ..., - extLst: Incomplete | None = ..., - blank: Incomplete | None = ..., - vals: Incomplete | None = ..., + colId: Incomplete | None = None, + hiddenButton: Incomplete | None = False, + showButton: Incomplete | None = True, + filters: Incomplete | None = None, + top10: Incomplete | None = None, + customFilters: Incomplete | None = None, + dynamicFilter: Incomplete | None = None, + colorFilter: Incomplete | None = None, + iconFilter: Incomplete | None = None, + extLst: Incomplete | None = None, + blank: Incomplete | None = None, + vals: Incomplete | None = None, ) -> None: ... class AutoFilter(Serialisable): @@ -165,8 +165,12 @@ class AutoFilter(Serialisable): extLst: Incomplete __elements__: Incomplete def __init__( - self, ref: Incomplete | None = ..., filterColumn=..., sortState: Incomplete | None = ..., extLst: Incomplete | None = ... + self, + ref: Incomplete | None = None, + filterColumn=(), + sortState: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... def __bool__(self) -> bool: ... - def add_filter_column(self, col_id, vals, blank: bool = ...) -> None: ... - def add_sort_condition(self, ref, descending: bool = ...) -> None: ... + def add_filter_column(self, col_id, vals, blank: bool = False) -> None: ... + def add_sort_condition(self, ref, descending: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi index 3c4767707..4a876b3ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi @@ -16,10 +16,10 @@ class _HeaderFooterPart(Strict): color: Incomplete def __init__( self, - text: Incomplete | None = ..., - font: Incomplete | None = ..., - size: Incomplete | None = ..., - color: Incomplete | None = ..., + text: Incomplete | None = None, + font: Incomplete | None = None, + size: Incomplete | None = None, + color: Incomplete | None = None, ) -> None: ... def __bool__(self) -> bool: ... @classmethod @@ -31,7 +31,7 @@ class HeaderFooterItem(Strict): centre: Incomplete right: Incomplete def __init__( - self, left: Incomplete | None = ..., right: Incomplete | None = ..., center: Incomplete | None = ... + self, left: Incomplete | None = None, right: Incomplete | None = None, center: Incomplete | None = None ) -> None: ... def __bool__(self) -> bool: ... def to_tree(self, tagname): ... @@ -53,15 +53,15 @@ class HeaderFooter(Serialisable): __elements__: Incomplete def __init__( self, - differentOddEven: Incomplete | None = ..., - differentFirst: Incomplete | None = ..., - scaleWithDoc: Incomplete | None = ..., - alignWithMargins: Incomplete | None = ..., - oddHeader: Incomplete | None = ..., - oddFooter: Incomplete | None = ..., - evenHeader: Incomplete | None = ..., - evenFooter: Incomplete | None = ..., - firstHeader: Incomplete | None = ..., - firstFooter: Incomplete | None = ..., + differentOddEven: Incomplete | None = None, + differentFirst: Incomplete | None = None, + scaleWithDoc: Incomplete | None = None, + alignWithMargins: Incomplete | None = None, + oddHeader: Incomplete | None = None, + oddFooter: Incomplete | None = None, + evenHeader: Incomplete | None = None, + evenFooter: Incomplete | None = None, + firstHeader: Incomplete | None = None, + firstFooter: Incomplete | None = None, ) -> None: ... def __bool__(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi index ebf821ad1..deba3e34e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi @@ -13,18 +13,18 @@ class Hyperlink(Serialisable): __attrs__: Incomplete def __init__( self, - ref: Incomplete | None = ..., - location: Incomplete | None = ..., - tooltip: Incomplete | None = ..., - display: Incomplete | None = ..., - id: Incomplete | None = ..., - target: Incomplete | None = ..., + ref: Incomplete | None = None, + location: Incomplete | None = None, + tooltip: Incomplete | None = None, + display: Incomplete | None = None, + id: Incomplete | None = None, + target: Incomplete | None = None, ) -> None: ... class HyperlinkList(Serialisable): tagname: str hyperlink: Incomplete - def __init__(self, hyperlink=...) -> None: ... + def __init__(self, hyperlink=()) -> None: ... def __bool__(self) -> bool: ... def __len__(self) -> int: ... def append(self, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi index 2c7ca0a0b..e0324855b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi @@ -9,7 +9,7 @@ class MergeCell(CellRange): @property def ref(self): ... __attrs__: Incomplete - def __init__(self, ref: Incomplete | None = ...) -> None: ... + def __init__(self, ref: Incomplete | None = None) -> None: ... def __copy__(self): ... class MergeCells(Serialisable): @@ -19,7 +19,7 @@ class MergeCells(Serialisable): mergeCell: Incomplete __elements__: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., mergeCell=...) -> None: ... + def __init__(self, count: Incomplete | None = None, mergeCell=()) -> None: ... @property def count(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi index ce36b5172..ca159e62f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi @@ -10,11 +10,11 @@ class ObjectAnchor(Serialisable): z_order: Incomplete def __init__( self, - _from: Incomplete | None = ..., - to: Incomplete | None = ..., - moveWithCells: bool = ..., - sizeWithCells: bool = ..., - z_order: Incomplete | None = ..., + _from: Incomplete | None = None, + to: Incomplete | None = None, + moveWithCells: bool = False, + sizeWithCells: bool = False, + z_order: Incomplete | None = None, ) -> None: ... class ObjectPr(Serialisable): @@ -33,18 +33,18 @@ class ObjectPr(Serialisable): __elements__: Incomplete def __init__( self, - anchor: Incomplete | None = ..., - locked: bool = ..., - defaultSize: bool = ..., - _print: bool = ..., - disabled: bool = ..., - uiObject: bool = ..., - autoFill: bool = ..., - autoLine: bool = ..., - autoPict: bool = ..., - macro: Incomplete | None = ..., - altText: Incomplete | None = ..., - dde: bool = ..., + anchor: Incomplete | None = None, + locked: bool = True, + defaultSize: bool = True, + _print: bool = True, + disabled: bool = False, + uiObject: bool = False, + autoFill: bool = True, + autoLine: bool = True, + autoPict: bool = True, + macro: Incomplete | None = None, + altText: Incomplete | None = None, + dde: bool = False, ) -> None: ... class OleObject(Serialisable): @@ -59,17 +59,17 @@ class OleObject(Serialisable): __elements__: Incomplete def __init__( self, - objectPr: Incomplete | None = ..., - progId: Incomplete | None = ..., - dvAspect: str = ..., - link: Incomplete | None = ..., - oleUpdate: Incomplete | None = ..., - autoLoad: bool = ..., - shapeId: Incomplete | None = ..., + objectPr: Incomplete | None = None, + progId: Incomplete | None = None, + dvAspect: str = "DVASPECT_CONTENT", + link: Incomplete | None = None, + oleUpdate: Incomplete | None = None, + autoLoad: bool = False, + shapeId: Incomplete | None = None, ) -> None: ... class OleObjects(Serialisable): tagname: str oleObject: Incomplete __elements__: Incomplete - def __init__(self, oleObject=...) -> None: ... + def __init__(self, oleObject=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi index c81b5f284..a15c7b798 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi @@ -25,26 +25,26 @@ class PrintPageSetup(Serialisable): id: Incomplete def __init__( self, - worksheet: Incomplete | None = ..., - orientation: Incomplete | None = ..., - paperSize: Incomplete | None = ..., - scale: Incomplete | None = ..., - fitToHeight: Incomplete | None = ..., - fitToWidth: Incomplete | None = ..., - firstPageNumber: Incomplete | None = ..., - useFirstPageNumber: Incomplete | None = ..., - paperHeight: Incomplete | None = ..., - paperWidth: Incomplete | None = ..., - pageOrder: Incomplete | None = ..., - usePrinterDefaults: Incomplete | None = ..., - blackAndWhite: Incomplete | None = ..., - draft: Incomplete | None = ..., - cellComments: Incomplete | None = ..., - errors: Incomplete | None = ..., - horizontalDpi: Incomplete | None = ..., - verticalDpi: Incomplete | None = ..., - copies: Incomplete | None = ..., - id: Incomplete | None = ..., + worksheet: Incomplete | None = None, + orientation: Incomplete | None = None, + paperSize: Incomplete | None = None, + scale: Incomplete | None = None, + fitToHeight: Incomplete | None = None, + fitToWidth: Incomplete | None = None, + firstPageNumber: Incomplete | None = None, + useFirstPageNumber: Incomplete | None = None, + paperHeight: Incomplete | None = None, + paperWidth: Incomplete | None = None, + pageOrder: Incomplete | None = None, + usePrinterDefaults: Incomplete | None = None, + blackAndWhite: Incomplete | None = None, + draft: Incomplete | None = None, + cellComments: Incomplete | None = None, + errors: Incomplete | None = None, + horizontalDpi: Incomplete | None = None, + verticalDpi: Incomplete | None = None, + copies: Incomplete | None = None, + id: Incomplete | None = None, ) -> None: ... def __bool__(self) -> bool: ... @property @@ -69,11 +69,11 @@ class PrintOptions(Serialisable): gridLinesSet: Incomplete def __init__( self, - horizontalCentered: Incomplete | None = ..., - verticalCentered: Incomplete | None = ..., - headings: Incomplete | None = ..., - gridLines: Incomplete | None = ..., - gridLinesSet: Incomplete | None = ..., + horizontalCentered: Incomplete | None = None, + verticalCentered: Incomplete | None = None, + headings: Incomplete | None = None, + gridLines: Incomplete | None = None, + gridLinesSet: Incomplete | None = None, ) -> None: ... def __bool__(self) -> bool: ... @@ -86,5 +86,5 @@ class PageMargins(Serialisable): header: Incomplete footer: Incomplete def __init__( - self, left: float = ..., right: float = ..., top: int = ..., bottom: int = ..., header: float = ..., footer: float = ... + self, left: float = 0.75, right: float = 0.75, top: int = 1, bottom: int = 1, header: float = 0.5, footer: float = 0.5 ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi index c1e6420ff..04cb2018c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi @@ -9,7 +9,7 @@ class Break(Serialisable): max: Incomplete man: Incomplete pt: Incomplete - def __init__(self, id: int = ..., min: int = ..., max: int = ..., man: bool = ..., pt: Incomplete | None = ...) -> None: ... + def __init__(self, id: int = 0, min: int = 0, max: int = 16383, man: bool = True, pt: Incomplete | None = None) -> None: ... class RowBreak(Serialisable): tagname: str @@ -19,14 +19,14 @@ class RowBreak(Serialisable): brk: Incomplete __elements__: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., manualBreakCount: Incomplete | None = ..., brk=...) -> None: ... + def __init__(self, count: Incomplete | None = None, manualBreakCount: Incomplete | None = None, brk=()) -> None: ... def __bool__(self) -> bool: ... def __len__(self) -> int: ... @property def count(self): ... @property def manualBreakCount(self): ... - def append(self, brk: Incomplete | None = ...) -> None: ... + def append(self, brk: Incomplete | None = None) -> None: ... PageBreak = RowBreak diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi new file mode 100644 index 000000000..2c3ce1ae4 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi @@ -0,0 +1,47 @@ +from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Self + +from openpyxl.descriptors import Integer, Strict, String +from openpyxl.utils.cell import SHEETRANGE_RE as SHEETRANGE_RE + +from .cell_range import MultiCellRange + +COL_RANGE: str +COL_RANGE_RE: Pattern[str] +ROW_RANGE: str +ROW_RANGE_RE: Pattern[str] +TITLES_REGEX: Pattern[str] +PRINT_AREA_RE: Pattern[str] + +class ColRange(Strict): + min_col: String + max_col: String + def __init__( + self, range_string: Incomplete | None = None, min_col: Incomplete | None = None, max_col: Incomplete | None = None + ) -> None: ... + def __eq__(self, other: object) -> bool: ... + +class RowRange(Strict): + min_row: Integer + max_row: Integer + def __init__( + self, range_string: Incomplete | None = None, min_row: Incomplete | None = None, max_row: Incomplete | None = None + ) -> None: ... + def __eq__(self, other: object) -> bool: ... + +class PrintTitles(Strict): + cols: Incomplete + rows: Incomplete + title: String + def __init__(self, cols: Incomplete | None = None, rows: Incomplete | None = None, title: str = "") -> None: ... + @classmethod + def from_string(cls, value) -> Self: ... + def __eq__(self, other: object) -> bool: ... + +class PrintArea(MultiCellRange): + title: str + @classmethod + def from_string(cls, value) -> Self: ... + def __init__(self, ranges=(), title: str = "") -> None: ... + def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi index 37cbdac17..0f8eafb0f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi @@ -10,17 +10,17 @@ class Outline(Serialisable): showOutlineSymbols: Incomplete def __init__( self, - applyStyles: Incomplete | None = ..., - summaryBelow: Incomplete | None = ..., - summaryRight: Incomplete | None = ..., - showOutlineSymbols: Incomplete | None = ..., + applyStyles: Incomplete | None = None, + summaryBelow: Incomplete | None = None, + summaryRight: Incomplete | None = None, + showOutlineSymbols: Incomplete | None = None, ) -> None: ... class PageSetupProperties(Serialisable): tagname: str autoPageBreaks: Incomplete fitToPage: Incomplete - def __init__(self, autoPageBreaks: Incomplete | None = ..., fitToPage: Incomplete | None = ...) -> None: ... + def __init__(self, autoPageBreaks: Incomplete | None = None, fitToPage: Incomplete | None = None) -> None: ... class WorksheetProperties(Serialisable): tagname: str @@ -39,16 +39,16 @@ class WorksheetProperties(Serialisable): __elements__: Incomplete def __init__( self, - codeName: Incomplete | None = ..., - enableFormatConditionsCalculation: Incomplete | None = ..., - filterMode: Incomplete | None = ..., - published: Incomplete | None = ..., - syncHorizontal: Incomplete | None = ..., - syncRef: Incomplete | None = ..., - syncVertical: Incomplete | None = ..., - transitionEvaluation: Incomplete | None = ..., - transitionEntry: Incomplete | None = ..., - tabColor: Incomplete | None = ..., - outlinePr: Incomplete | None = ..., - pageSetUpPr: Incomplete | None = ..., + codeName: Incomplete | None = None, + enableFormatConditionsCalculation: Incomplete | None = None, + filterMode: Incomplete | None = None, + published: Incomplete | None = None, + syncHorizontal: Incomplete | None = None, + syncRef: Incomplete | None = None, + syncVertical: Incomplete | None = None, + transitionEvaluation: Incomplete | None = None, + transitionEntry: Incomplete | None = None, + tabColor: Incomplete | None = None, + outlinePr: Incomplete | None = None, + pageSetUpPr: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi index 8bd46afc4..cc910a11b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from openpyxl.descriptors.serialisable import Serialisable class _Protected: - def set_password(self, value: str = ..., already_hashed: bool = ...) -> None: ... + def set_password(self, value: str = "", already_hashed: bool = False) -> None: ... @property def password(self): ... @password.setter @@ -36,29 +36,29 @@ class SheetProtection(Serialisable, _Protected): password: Incomplete def __init__( self, - sheet: bool = ..., - objects: bool = ..., - scenarios: bool = ..., - formatCells: bool = ..., - formatRows: bool = ..., - formatColumns: bool = ..., - insertColumns: bool = ..., - insertRows: bool = ..., - insertHyperlinks: bool = ..., - deleteColumns: bool = ..., - deleteRows: bool = ..., - selectLockedCells: bool = ..., - selectUnlockedCells: bool = ..., - sort: bool = ..., - autoFilter: bool = ..., - pivotTables: bool = ..., - password: Incomplete | None = ..., - algorithmName: Incomplete | None = ..., - saltValue: Incomplete | None = ..., - spinCount: Incomplete | None = ..., - hashValue: Incomplete | None = ..., + sheet: bool = False, + objects: bool = False, + scenarios: bool = False, + formatCells: bool = True, + formatRows: bool = True, + formatColumns: bool = True, + insertColumns: bool = True, + insertRows: bool = True, + insertHyperlinks: bool = True, + deleteColumns: bool = True, + deleteRows: bool = True, + selectLockedCells: bool = False, + selectUnlockedCells: bool = False, + sort: bool = True, + autoFilter: bool = True, + pivotTables: bool = True, + password: Incomplete | None = None, + algorithmName: Incomplete | None = None, + saltValue: Incomplete | None = None, + spinCount: Incomplete | None = None, + hashValue: Incomplete | None = None, ) -> None: ... - def set_password(self, value: str = ..., already_hashed: bool = ...) -> None: ... + def set_password(self, value: str = "", already_hashed: bool = False) -> None: ... def enable(self) -> None: ... def disable(self) -> None: ... def __bool__(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/related.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/related.pyi index 89252ae67..b778c4ad9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/related.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/related.pyi @@ -4,5 +4,5 @@ from openpyxl.descriptors.serialisable import Serialisable class Related(Serialisable): # type: ignore[misc] id: Incomplete - def __init__(self, id: Incomplete | None = ...) -> None: ... - def to_tree(self, tagname, idx: Incomplete | None = ...): ... # type: ignore[override] + def __init__(self, id: Incomplete | None = None) -> None: ... + def to_tree(self, tagname, idx: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi index 2d287b95d..fc448de79 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi @@ -11,11 +11,11 @@ class InputCells(Serialisable): numFmtId: Incomplete def __init__( self, - r: Incomplete | None = ..., - deleted: bool = ..., - undone: bool = ..., - val: Incomplete | None = ..., - numFmtId: Incomplete | None = ..., + r: Incomplete | None = None, + deleted: bool = False, + undone: bool = False, + val: Incomplete | None = None, + numFmtId: Incomplete | None = None, ) -> None: ... class Scenario(Serialisable): @@ -30,13 +30,13 @@ class Scenario(Serialisable): __attrs__: Incomplete def __init__( self, - inputCells=..., - name: Incomplete | None = ..., - locked: bool = ..., - hidden: bool = ..., - count: Incomplete | None = ..., - user: Incomplete | None = ..., - comment: Incomplete | None = ..., + inputCells=(), + name: Incomplete | None = None, + locked: bool = False, + hidden: bool = False, + count: Incomplete | None = None, + user: Incomplete | None = None, + comment: Incomplete | None = None, ) -> None: ... @property def count(self): ... @@ -49,7 +49,7 @@ class ScenarioList(Serialisable): sqref: Incomplete __elements__: Incomplete def __init__( - self, scenario=..., current: Incomplete | None = ..., show: Incomplete | None = ..., sqref: Incomplete | None = ... + self, scenario=(), current: Incomplete | None = None, show: Incomplete | None = None, sqref: Incomplete | None = None ) -> None: ... def append(self, scenario) -> None: ... def __bool__(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi index 682d77911..4f3481098 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi @@ -6,7 +6,7 @@ class CellSmartTagPr(Serialisable): tagname: str key: Incomplete val: Incomplete - def __init__(self, key: Incomplete | None = ..., val: Incomplete | None = ...) -> None: ... + def __init__(self, key: Incomplete | None = None, val: Incomplete | None = None) -> None: ... class CellSmartTag(Serialisable): tagname: str @@ -15,17 +15,19 @@ class CellSmartTag(Serialisable): deleted: Incomplete xmlBased: Incomplete __elements__: Incomplete - def __init__(self, cellSmartTagPr=..., type: Incomplete | None = ..., deleted: bool = ..., xmlBased: bool = ...) -> None: ... + def __init__( + self, cellSmartTagPr=(), type: Incomplete | None = None, deleted: bool = False, xmlBased: bool = False + ) -> None: ... class CellSmartTags(Serialisable): tagname: str cellSmartTag: Incomplete r: Incomplete __elements__: Incomplete - def __init__(self, cellSmartTag=..., r: Incomplete | None = ...) -> None: ... + def __init__(self, cellSmartTag=(), r: Incomplete | None = None) -> None: ... class SmartTags(Serialisable): tagname: str cellSmartTags: Incomplete __elements__: Incomplete - def __init__(self, cellSmartTags=...) -> None: ... + def __init__(self, cellSmartTags=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi index c5eca03e8..c90397270 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi @@ -15,11 +15,11 @@ class TableStyleInfo(Serialisable): showColumnStripes: Incomplete def __init__( self, - name: Incomplete | None = ..., - showFirstColumn: Incomplete | None = ..., - showLastColumn: Incomplete | None = ..., - showRowStripes: Incomplete | None = ..., - showColumnStripes: Incomplete | None = ..., + name: Incomplete | None = None, + showFirstColumn: Incomplete | None = None, + showLastColumn: Incomplete | None = None, + showRowStripes: Incomplete | None = None, + showColumnStripes: Incomplete | None = None, ) -> None: ... class XMLColumnProps(Serialisable): @@ -32,11 +32,11 @@ class XMLColumnProps(Serialisable): __elements__: Incomplete def __init__( self, - mapId: Incomplete | None = ..., - xpath: Incomplete | None = ..., - denormalized: Incomplete | None = ..., - xmlDataType: Incomplete | None = ..., - extLst: Incomplete | None = ..., + mapId: Incomplete | None = None, + xpath: Incomplete | None = None, + denormalized: Incomplete | None = None, + xmlDataType: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... class TableFormula(Serialisable): @@ -44,7 +44,7 @@ class TableFormula(Serialisable): array: Incomplete attr_text: Incomplete text: Incomplete - def __init__(self, array: Incomplete | None = ..., attr_text: Incomplete | None = ...) -> None: ... + def __init__(self, array: Incomplete | None = None, attr_text: Incomplete | None = None) -> None: ... class TableColumn(Serialisable): tagname: str @@ -67,22 +67,22 @@ class TableColumn(Serialisable): __elements__: Incomplete def __init__( self, - id: Incomplete | None = ..., - uniqueName: Incomplete | None = ..., - name: Incomplete | None = ..., - totalsRowFunction: Incomplete | None = ..., - totalsRowLabel: Incomplete | None = ..., - queryTableFieldId: Incomplete | None = ..., - headerRowDxfId: Incomplete | None = ..., - dataDxfId: Incomplete | None = ..., - totalsRowDxfId: Incomplete | None = ..., - headerRowCellStyle: Incomplete | None = ..., - dataCellStyle: Incomplete | None = ..., - totalsRowCellStyle: Incomplete | None = ..., - calculatedColumnFormula: Incomplete | None = ..., - totalsRowFormula: Incomplete | None = ..., - xmlColumnPr: Incomplete | None = ..., - extLst: Incomplete | None = ..., + id: Incomplete | None = None, + uniqueName: Incomplete | None = None, + name: Incomplete | None = None, + totalsRowFunction: Incomplete | None = None, + totalsRowLabel: Incomplete | None = None, + queryTableFieldId: Incomplete | None = None, + headerRowDxfId: Incomplete | None = None, + dataDxfId: Incomplete | None = None, + totalsRowDxfId: Incomplete | None = None, + headerRowCellStyle: Incomplete | None = None, + dataCellStyle: Incomplete | None = None, + totalsRowCellStyle: Incomplete | None = None, + calculatedColumnFormula: Incomplete | None = None, + totalsRowFormula: Incomplete | None = None, + xmlColumnPr: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... def __iter__(self): ... @classmethod @@ -124,33 +124,33 @@ class Table(Serialisable): __elements__: Incomplete def __init__( self, - id: int = ..., - displayName: Incomplete | None = ..., - ref: Incomplete | None = ..., - name: Incomplete | None = ..., - comment: Incomplete | None = ..., - tableType: Incomplete | None = ..., - headerRowCount: int = ..., - insertRow: Incomplete | None = ..., - insertRowShift: Incomplete | None = ..., - totalsRowCount: Incomplete | None = ..., - totalsRowShown: Incomplete | None = ..., - published: Incomplete | None = ..., - headerRowDxfId: Incomplete | None = ..., - dataDxfId: Incomplete | None = ..., - totalsRowDxfId: Incomplete | None = ..., - headerRowBorderDxfId: Incomplete | None = ..., - tableBorderDxfId: Incomplete | None = ..., - totalsRowBorderDxfId: Incomplete | None = ..., - headerRowCellStyle: Incomplete | None = ..., - dataCellStyle: Incomplete | None = ..., - totalsRowCellStyle: Incomplete | None = ..., - connectionId: Incomplete | None = ..., - autoFilter: Incomplete | None = ..., - sortState: Incomplete | None = ..., - tableColumns=..., - tableStyleInfo: Incomplete | None = ..., - extLst: Incomplete | None = ..., + id: int = 1, + displayName: Incomplete | None = None, + ref: Incomplete | None = None, + name: Incomplete | None = None, + comment: Incomplete | None = None, + tableType: Incomplete | None = None, + headerRowCount: int = 1, + insertRow: Incomplete | None = None, + insertRowShift: Incomplete | None = None, + totalsRowCount: Incomplete | None = None, + totalsRowShown: Incomplete | None = None, + published: Incomplete | None = None, + headerRowDxfId: Incomplete | None = None, + dataDxfId: Incomplete | None = None, + totalsRowDxfId: Incomplete | None = None, + headerRowBorderDxfId: Incomplete | None = None, + tableBorderDxfId: Incomplete | None = None, + totalsRowBorderDxfId: Incomplete | None = None, + headerRowCellStyle: Incomplete | None = None, + dataCellStyle: Incomplete | None = None, + totalsRowCellStyle: Incomplete | None = None, + connectionId: Incomplete | None = None, + autoFilter: Incomplete | None = None, + sortState: Incomplete | None = None, + tableColumns=(), + tableStyleInfo: Incomplete | None = None, + extLst: Incomplete | None = None, ) -> None: ... def to_tree(self): ... @property @@ -165,7 +165,7 @@ class TablePartList(Serialisable): tablePart: Incomplete __elements__: Incomplete __attrs__: Incomplete - def __init__(self, count: Incomplete | None = ..., tablePart=...) -> None: ... + def __init__(self, count: Incomplete | None = None, tablePart=()) -> None: ... def append(self, part) -> None: ... @property def count(self): ... @@ -173,5 +173,5 @@ class TablePartList(Serialisable): class TableList(dict[Incomplete, Incomplete]): def add(self, table) -> None: ... - def get(self, name: Incomplete | None = ..., table_range: Incomplete | None = ...): ... + def get(self, name: Incomplete | None = None, table_range: Incomplete | None = None): ... def items(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi index 0abd81b98..86bb9afea 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi @@ -10,11 +10,11 @@ class Pane(Serialisable): # type: ignore[misc] state: Incomplete def __init__( self, - xSplit: Incomplete | None = ..., - ySplit: Incomplete | None = ..., - topLeftCell: Incomplete | None = ..., - activePane: str = ..., - state: str = ..., + xSplit: Incomplete | None = None, + ySplit: Incomplete | None = None, + topLeftCell: Incomplete | None = None, + activePane: str = "topLeft", + state: str = "split", ) -> None: ... class Selection(Serialisable): # type: ignore[misc] @@ -23,7 +23,7 @@ class Selection(Serialisable): # type: ignore[misc] activeCellId: Incomplete sqref: Incomplete def __init__( - self, pane: Incomplete | None = ..., activeCell: str = ..., activeCellId: Incomplete | None = ..., sqref: str = ... + self, pane: Incomplete | None = None, activeCell: str = "A1", activeCellId: Incomplete | None = None, sqref: str = "A1" ) -> None: ... class SheetView(Serialisable): @@ -52,28 +52,28 @@ class SheetView(Serialisable): pane: Incomplete def __init__( self, - windowProtection: Incomplete | None = ..., - showFormulas: Incomplete | None = ..., - showGridLines: Incomplete | None = ..., - showRowColHeaders: Incomplete | None = ..., - showZeros: Incomplete | None = ..., - rightToLeft: Incomplete | None = ..., - tabSelected: Incomplete | None = ..., - showRuler: Incomplete | None = ..., - showOutlineSymbols: Incomplete | None = ..., - defaultGridColor: Incomplete | None = ..., - showWhiteSpace: Incomplete | None = ..., - view: Incomplete | None = ..., - topLeftCell: Incomplete | None = ..., - colorId: Incomplete | None = ..., - zoomScale: Incomplete | None = ..., - zoomScaleNormal: Incomplete | None = ..., - zoomScaleSheetLayoutView: Incomplete | None = ..., - zoomScalePageLayoutView: Incomplete | None = ..., - zoomToFit: Incomplete | None = ..., - workbookViewId: int = ..., - selection: Incomplete | None = ..., - pane: Incomplete | None = ..., + windowProtection: Incomplete | None = None, + showFormulas: Incomplete | None = None, + showGridLines: Incomplete | None = None, + showRowColHeaders: Incomplete | None = None, + showZeros: Incomplete | None = None, + rightToLeft: Incomplete | None = None, + tabSelected: Incomplete | None = None, + showRuler: Incomplete | None = None, + showOutlineSymbols: Incomplete | None = None, + defaultGridColor: Incomplete | None = None, + showWhiteSpace: Incomplete | None = None, + view: Incomplete | None = None, + topLeftCell: Incomplete | None = None, + colorId: Incomplete | None = None, + zoomScale: Incomplete | None = None, + zoomScaleNormal: Incomplete | None = None, + zoomScaleSheetLayoutView: Incomplete | None = None, + zoomScalePageLayoutView: Incomplete | None = None, + zoomToFit: Incomplete | None = None, + workbookViewId: int = 0, + selection: Incomplete | None = None, + pane: Incomplete | None = None, ) -> None: ... class SheetViewList(Serialisable): @@ -81,4 +81,4 @@ class SheetViewList(Serialisable): sheetView: Incomplete extLst: Incomplete __elements__: Incomplete - def __init__(self, sheetView: Incomplete | None = ..., extLst: Incomplete | None = ...) -> None: ... + def __init__(self, sheetView: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi index f3402b772..97e75b9ec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi @@ -1,25 +1,34 @@ from _typeshed import Incomplete from collections.abc import Generator, Iterable, Iterator from datetime import datetime -from typing import overload -from typing_extensions import Literal +from typing import Any, overload +from typing_extensions import Final, Literal -from openpyxl.cell.cell import Cell +from openpyxl.cell.cell import Cell, _CellValue +from openpyxl.formatting.formatting import ConditionalFormattingList from openpyxl.workbook.child import _WorkbookChild +from openpyxl.workbook.defined_name import DefinedNameDict from openpyxl.workbook.workbook import Workbook -from openpyxl.worksheet.cell_range import CellRange -from openpyxl.worksheet.datavalidation import DataValidation +from openpyxl.worksheet.cell_range import CellRange, MultiCellRange +from openpyxl.worksheet.datavalidation import DataValidation, DataValidationList +from openpyxl.worksheet.dimensions import ColumnDimension, DimensionHolder, RowDimension, SheetFormatProperties +from openpyxl.worksheet.filters import AutoFilter +from openpyxl.worksheet.page import PageMargins, PrintOptions, PrintPageSetup +from openpyxl.worksheet.pagebreak import ColBreak, RowBreak +from openpyxl.worksheet.properties import WorksheetProperties +from openpyxl.worksheet.protection import SheetProtection +from openpyxl.worksheet.scenario import ScenarioList from openpyxl.worksheet.table import Table, TableList -from openpyxl.worksheet.views import SheetView +from openpyxl.worksheet.views import SheetView, SheetViewList class Worksheet(_WorkbookChild): mime_type: str BREAK_NONE: int BREAK_ROW: int BREAK_COLUMN: int - SHEETSTATE_VISIBLE: str - SHEETSTATE_HIDDEN: str - SHEETSTATE_VERYHIDDEN: str + SHEETSTATE_VISIBLE: Final = "visible" + SHEETSTATE_HIDDEN: Final = "hidden" + SHEETSTATE_VERYHIDDEN: Final = "veryHidden" PAPERSIZE_LETTER: str PAPERSIZE_LETTER_SMALL: str PAPERSIZE_TABLOID: str @@ -33,7 +42,28 @@ class Worksheet(_WorkbookChild): PAPERSIZE_A5: str ORIENTATION_PORTRAIT: str ORIENTATION_LANDSCAPE: str - def __init__(self, parent: Workbook, title: str | None = ...) -> None: ... + + row_dimensions: DimensionHolder[RowDimension] + column_dimensions: DimensionHolder[ColumnDimension] + row_breaks: RowBreak + col_breaks: ColBreak + merged_cells: MultiCellRange + data_validations: DataValidationList + sheet_state: Literal["visible", "hidden", "veryHidden"] + page_setup: PrintPageSetup + print_options: PrintOptions + page_margins: PageMargins + views: SheetViewList + protection: SheetProtection + defined_names: DefinedNameDict + auto_filter: AutoFilter + conditional_formatting: ConditionalFormattingList + legacy_drawing: Incomplete | None + sheet_properties: WorksheetProperties + sheet_format: SheetFormatProperties + scenarios: ScenarioList + + def __init__(self, parent: Workbook, title: str | None = None) -> None: ... @property def sheet_view(self) -> SheetView: ... @property @@ -48,8 +78,11 @@ class Worksheet(_WorkbookChild): def freeze_panes(self) -> str | None: ... @freeze_panes.setter def freeze_panes(self, topLeftCell: Incomplete | None = ...) -> None: ... - def cell(self, row: int, column: int, value: str | None = ...) -> Cell: ... - def __getitem__(self, key: str | int | slice) -> Cell | tuple[Cell, ...]: ... + def cell(self, row: int, column: int, value: str | None = None) -> Cell: ... + @overload + def __getitem__(self, key: int | slice) -> tuple[Cell, ...]: ... + @overload + def __getitem__(self, key: str) -> Any: ... # Cell | tuple[Cell, ...] def __setitem__(self, key: str, value: str) -> None: ... def __iter__(self) -> Iterator[Cell]: ... def __delitem__(self, key: str) -> None: ... @@ -81,10 +114,10 @@ class Worksheet(_WorkbookChild): @overload def iter_rows( self, - min_row: int | None = ..., - max_row: int | None = ..., - min_col: int | None = ..., - max_col: int | None = ..., + min_row: int | None = None, + max_row: int | None = None, + min_col: int | None = None, + max_col: int | None = None, values_only: Literal[False] = False, ) -> Generator[tuple[Cell, ...], None, None]: ... @overload @@ -102,9 +135,9 @@ class Worksheet(_WorkbookChild): values_only: bool, ) -> Generator[tuple[Cell | str | float | datetime | None, ...], None, None]: ... @property - def rows(self) -> Generator[Cell, None, None]: ... + def rows(self) -> Generator[tuple[Cell, ...], None, None]: ... @property - def values(self) -> Generator[str | float | datetime | None, None, None]: ... + def values(self) -> Generator[tuple[_CellValue, ...], None, None]: ... @overload def iter_cols( self, min_col: int | None, max_col: int | None, min_row: int | None, max_row: int | None, values_only: Literal[True] @@ -122,10 +155,10 @@ class Worksheet(_WorkbookChild): @overload def iter_cols( self, - min_col: int | None = ..., - max_col: int | None = ..., - min_row: int | None = ..., - max_row: int | None = ..., + min_col: int | None = None, + max_col: int | None = None, + min_row: int | None = None, + max_row: int | None = None, values_only: Literal[False] = False, ) -> Generator[tuple[Cell, ...], None, None]: ... @overload @@ -148,36 +181,36 @@ class Worksheet(_WorkbookChild): self, paper_size: int | None, orientation: None | Literal["default", "portrait", "landscape"] ) -> None: ... def add_data_validation(self, data_validation: DataValidation) -> None: ... - def add_chart(self, chart, anchor: Incomplete | None = ...) -> None: ... - def add_image(self, img, anchor: Incomplete | None = ...) -> None: ... + def add_chart(self, chart, anchor: Incomplete | None = None) -> None: ... + def add_image(self, img, anchor: Incomplete | None = None) -> None: ... def add_table(self, table: Table) -> None: ... @property def tables(self) -> TableList: ... def add_pivot(self, pivot) -> None: ... def merge_cells( self, - range_string: str | None = ..., - start_row: int | None = ..., - start_column: int | None = ..., - end_row: int | None = ..., - end_column: int | None = ..., + range_string: str | None = None, + start_row: int | None = None, + start_column: int | None = None, + end_row: int | None = None, + end_column: int | None = None, ) -> None: ... @property def merged_cell_ranges(self) -> list[CellRange]: ... def unmerge_cells( self, - range_string: str | None = ..., - start_row: int | None = ..., - start_column: int | None = ..., - end_row: int | None = ..., - end_column: int | None = ..., + range_string: str | None = None, + start_row: int | None = None, + start_column: int | None = None, + end_row: int | None = None, + end_column: int | None = None, ) -> None: ... def append(self, iterable: Iterable[Incomplete]) -> None: ... - def insert_rows(self, idx: int, amount: int = ...) -> None: ... - def insert_cols(self, idx: int, amount: int = ...) -> None: ... - def delete_rows(self, idx: int, amount: int = ...) -> None: ... - def delete_cols(self, idx: int, amount: int = ...) -> None: ... - def move_range(self, cell_range: CellRange | str, rows: int = ..., cols: int = ..., translate: bool = ...) -> None: ... + def insert_rows(self, idx: int, amount: int = 1) -> None: ... + def insert_cols(self, idx: int, amount: int = 1) -> None: ... + def delete_rows(self, idx: int, amount: int = 1) -> None: ... + def delete_cols(self, idx: int, amount: int = 1) -> None: ... + def move_range(self, cell_range: CellRange | str, rows: int = 0, cols: int = 0, translate: bool = False) -> None: ... @property def print_title_rows(self) -> str | None: ... @print_title_rows.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi index 2a6bab568..c9438a9e7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete +from xml.etree.ElementTree import Element as Element # possibly also imported from lxml NS_REGEX: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/context.pyi b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/context.pyi index 3264dd824..09022377e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/context.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/context.pyi @@ -5,7 +5,9 @@ import opentracing class SpanContext(opentracing.SpanContext): trace_id: int | None span_id: int | None - def __init__(self, trace_id: int | None = ..., span_id: int | None = ..., baggage: dict[str, str] | None = ...) -> None: ... + def __init__( + self, trace_id: int | None = None, span_id: int | None = None, baggage: dict[str, str] | None = None + ) -> None: ... @property def baggage(self) -> dict[str, str]: ... def with_baggage_item(self, key: str, value: str) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/span.pyi b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/span.pyi index 9d310d5bf..229af11b8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/span.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/span.pyi @@ -17,11 +17,11 @@ class MockSpan(Span): def __init__( self, tracer: Tracer, - operation_name: str | None = ..., - context: SpanContext | None = ..., - parent_id: int | None = ..., - tags: dict[str, Any] | None = ..., - start_time: float | None = ..., + operation_name: str | None = None, + context: SpanContext | None = None, + parent_id: int | None = None, + tags: dict[str, Any] | None = None, + start_time: float | None = None, ) -> None: ... @property def tracer(self) -> MockTracer: ... @@ -29,10 +29,10 @@ class MockSpan(Span): def context(self) -> SpanContext: ... def set_operation_name(self, operation_name: str) -> Self: ... def set_tag(self, key: str, value: str | bool | float) -> Self: ... - def log_kv(self, key_values: dict[str, Any], timestamp: float | None = ...) -> Self: ... + def log_kv(self, key_values: dict[str, Any], timestamp: float | None = None) -> Self: ... def set_baggage_item(self, key: str, value: str) -> Self: ... class LogData: key_values: dict[str, Any] timestamp: float | None - def __init__(self, key_values: dict[str, Any], timestamp: float | None = ...) -> None: ... + def __init__(self, key_values: dict[str, Any], timestamp: float | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/tracer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/tracer.pyi index 9336c1a05..46d12c48f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/tracer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/mocktracer/tracer.pyi @@ -8,7 +8,7 @@ from .propagator import Propagator from .span import MockSpan class MockTracer(Tracer): - def __init__(self, scope_manager: ScopeManager | None = ...) -> None: ... + def __init__(self, scope_manager: ScopeManager | None = None) -> None: ... @property def active_span(self) -> MockSpan | None: ... def register_propagator(self, format: str, propagator: Propagator) -> None: ... @@ -16,11 +16,11 @@ class MockTracer(Tracer): def reset(self) -> None: ... def start_span( # type: ignore[override] self, - operation_name: str | None = ..., - child_of: Span | SpanContext | None = ..., - references: list[Reference] | None = ..., - tags: dict[Any, Any] | None = ..., - start_time: float | None = ..., - ignore_active_span: bool = ..., + operation_name: str | None = None, + child_of: Span | SpanContext | None = None, + references: list[Reference] | None = None, + tags: dict[Any, Any] | None = None, + start_time: float | None = None, + ignore_active_span: bool = False, ) -> MockSpan: ... def extract(self, format: str, carrier: dict[Any, Any]) -> SpanContext: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/span.pyi b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/span.pyi index 74a6dc5d2..0bb1d18dd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/span.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/span.pyi @@ -17,14 +17,14 @@ class Span: @property def tracer(self) -> Tracer: ... def set_operation_name(self, operation_name: str) -> Self: ... - def finish(self, finish_time: float | None = ...) -> None: ... + def finish(self, finish_time: float | None = None) -> None: ... def set_tag(self, key: str, value: str | bool | float) -> Self: ... - def log_kv(self, key_values: dict[str, Any], timestamp: float | None = ...) -> Self: ... + def log_kv(self, key_values: dict[str, Any], timestamp: float | None = None) -> Self: ... def set_baggage_item(self, key: str, value: str) -> Self: ... def get_baggage_item(self, key: str) -> str | None: ... def __enter__(self) -> Self: ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> None: ... - def log_event(self, event: Any, payload: Incomplete | None = ...) -> Self: ... + def log_event(self, event: Any, payload: Incomplete | None = None) -> Self: ... def log(self, **kwargs: Any) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/tracer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/tracer.pyi index 6dcc47cd0..275b9d7f6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/tracer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/opentracing/tracer.pyi @@ -5,7 +5,7 @@ from .scope_manager import ScopeManager from .span import Span, SpanContext class Tracer: - def __init__(self, scope_manager: ScopeManager | None = ...) -> None: ... + def __init__(self, scope_manager: ScopeManager | None = None) -> None: ... @property def scope_manager(self) -> ScopeManager: ... @property @@ -13,21 +13,21 @@ class Tracer: def start_active_span( self, operation_name: str, - child_of: Span | SpanContext | None = ..., - references: list[Reference] | None = ..., - tags: dict[Any, Any] | None = ..., - start_time: float | None = ..., - ignore_active_span: bool = ..., - finish_on_close: bool = ..., + child_of: Span | SpanContext | None = None, + references: list[Reference] | None = None, + tags: dict[Any, Any] | None = None, + start_time: float | None = None, + ignore_active_span: bool = False, + finish_on_close: bool = True, ) -> Scope: ... def start_span( self, - operation_name: str | None = ..., - child_of: Span | SpanContext | None = ..., - references: list[Reference] | None = ..., - tags: dict[Any, Any] | None = ..., - start_time: float | None = ..., - ignore_active_span: bool = ..., + operation_name: str | None = None, + child_of: Span | SpanContext | None = None, + references: list[Reference] | None = None, + tags: dict[Any, Any] | None = None, + start_time: float | None = None, + ignore_active_span: bool = False, ) -> Span: ... def inject(self, span_context: SpanContext, format: str, carrier: dict[Any, Any]) -> None: ... def extract(self, format: str, carrier: dict[Any, Any]) -> SpanContext: ... @@ -40,8 +40,8 @@ class Reference(NamedTuple): type: str referenced_context: SpanContext | None -def child_of(referenced_context: SpanContext | None = ...) -> Reference: ... -def follows_from(referenced_context: SpanContext | None = ...) -> Reference: ... +def child_of(referenced_context: SpanContext | None = None) -> Reference: ... +def follows_from(referenced_context: SpanContext | None = None) -> Reference: ... def start_child_span( - parent_span: Span, operation_name: str, tags: dict[Any, Any] | None = ..., start_time: float | None = ... + parent_span: Span, operation_name: str, tags: dict[Any, Any] | None = None, start_time: float | None = None ) -> Span: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/client.pyi index 2cbe23800..35111866f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/client.pyi @@ -112,7 +112,7 @@ class WebsocketConnectionError(ValueError): ... def error_string(mqtt_errno: int) -> str: ... def connack_string(connack_code: int) -> str: ... -def base62(num: int, base: str = ..., padding: int = ...) -> str: ... +def base62(num: int, base: str = ..., padding: int = 1) -> str: ... def topic_matches_sub(sub: str, topic: str) -> bool: ... class MQTTMessageInfo: @@ -123,7 +123,7 @@ class MQTTMessageInfo: def __next__(self) -> int: ... def next(self) -> int: ... def __getitem__(self, index: int) -> int: ... - def wait_for_publish(self, timeout: float | None = ...) -> None: ... + def wait_for_publish(self, timeout: float | None = None) -> None: ... def is_published(self) -> bool: ... class MQTTMessage: @@ -136,7 +136,7 @@ class MQTTMessage: retain: bool info: MQTTMessageInfo properties: Properties | None - def __init__(self, mid: int = ..., topic: bytes | bytearray = ...) -> None: ... + def __init__(self, mid: int = 0, topic: bytes | bytearray = b"") -> None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... @property @@ -148,79 +148,84 @@ class Client: suppress_exceptions: bool def __init__( self, - client_id: str | None = ..., - clean_session: bool | None = ..., - userdata: _UserData | None = ..., - protocol: int = ..., - transport: str = ..., - reconnect_on_failure: bool = ..., + client_id: str | None = "", + clean_session: bool | None = None, + userdata: _UserData | None = None, + protocol: int = 4, + transport: str = "tcp", + reconnect_on_failure: bool = True, ) -> None: ... def __del__(self) -> None: ... - def reinitialise(self, client_id: str = ..., clean_session: bool = ..., userdata: _UserData | None = ...) -> None: ... - def ws_set_options(self, path: str = ..., headers: _ExtraHeader | None = ...) -> None: ... - def tls_set_context(self, context: _ssl.SSLContext | None = ...) -> None: ... + def reinitialise(self, client_id: str = "", clean_session: bool = True, userdata: _UserData | None = None) -> None: ... + def ws_set_options(self, path: str = "/mqtt", headers: _ExtraHeader | None = None) -> None: ... + def tls_set_context(self, context: _ssl.SSLContext | None = None) -> None: ... def tls_set( self, - ca_certs: str | None = ..., - certfile: str | None = ..., - keyfile: str | None = ..., - cert_reqs: _ssl.VerifyMode | None = ..., - tls_version: _ssl._SSLMethod | None = ..., - ciphers: str | None = ..., - keyfile_password: _ssl._PasswordType | None = ..., + ca_certs: str | None = None, + certfile: str | None = None, + keyfile: str | None = None, + cert_reqs: _ssl.VerifyMode | None = None, + tls_version: _ssl._SSLMethod | None = None, + ciphers: str | None = None, + keyfile_password: _ssl._PasswordType | None = None, ) -> None: ... def tls_insecure_set(self, value: bool) -> None: ... def proxy_set(self, **proxy_args: Any) -> None: ... - def enable_logger(self, logger: logging.Logger | None = ...) -> None: ... + def enable_logger(self, logger: logging.Logger | None = None) -> None: ... def disable_logger(self) -> None: ... def connect( self, host: str, - port: int = ..., - keepalive: int = ..., - bind_address: str = ..., - bind_port: int = ..., - clean_start: int = ..., - properties: Properties | None = ..., + port: int = 1883, + keepalive: int = 60, + bind_address: str = "", + bind_port: int = 0, + clean_start: int = 3, + properties: Properties | None = None, ) -> int: ... def connect_srv( self, - domain: str | None = ..., - keepalive: int = ..., - bind_address: str = ..., - clean_start: int = ..., - properties: Properties | None = ..., + domain: str | None = None, + keepalive: int = 60, + bind_address: str = "", + clean_start: int = 3, + properties: Properties | None = None, ) -> int: ... def connect_async( self, host: str, - port: int = ..., - keepalive: int = ..., - bind_address: str = ..., - bind_port: int = ..., - clean_start: int = ..., - properties: Properties | None = ..., + port: int = 1883, + keepalive: int = 60, + bind_address: str = "", + bind_port: int = 0, + clean_start: int = 3, + properties: Properties | None = None, ) -> None: ... - def reconnect_delay_set(self, min_delay: int = ..., max_delay: int = ...) -> None: ... + def reconnect_delay_set(self, min_delay: int = 1, max_delay: int = 120) -> None: ... def reconnect(self) -> int: ... - def loop(self, timeout: float = ..., max_packets: int = ...) -> int: ... + def loop(self, timeout: float = 1.0, max_packets: int = 1) -> int: ... def publish( - self, topic: str, payload: _Payload | None = ..., qos: int = ..., retain: bool = ..., properties: Properties | None = ... + self, + topic: str, + payload: _Payload | None = None, + qos: int = 0, + retain: bool = False, + properties: Properties | None = None, ) -> MQTTMessageInfo: ... - def username_pw_set(self, username: str, password: str | bytes | bytearray | None = ...) -> None: ... + def username_pw_set(self, username: str, password: str | bytes | bytearray | None = None) -> None: ... def enable_bridge_mode(self) -> None: ... def is_connected(self) -> bool: ... - def disconnect(self, reasoncode: ReasonCodes | None = ..., properties: Properties | None = ...) -> int: ... + def disconnect(self, reasoncode: ReasonCodes | None = None, properties: Properties | None = None) -> int: ... def subscribe( self, topic: str | tuple[str, SubscribeOptions] | list[tuple[str, SubscribeOptions]] | list[tuple[str, int]], - qos: int = ..., - options: SubscribeOptions | None = ..., - properties: Properties | None = ..., + qos: int = 0, + options: SubscribeOptions | None = None, + properties: Properties | None = None, ) -> tuple[int, int]: ... - def unsubscribe(self, topic: str | list[str], properties: Properties | None = ...) -> tuple[int, int]: ... - def loop_read(self, max_packets: int = ...) -> int: ... - def loop_write(self, max_packets: int = ...) -> int: ... + def unsubscribe(self, topic: str | list[str], properties: Properties | None = None) -> tuple[int, int]: ... + def loop_read(self, max_packets: int = 1) -> int: ... + def loop_write(self, max_packets: int = 1) -> int: ... def want_write(self) -> bool: ... def loop_misc(self) -> int: ... def max_inflight_messages_set(self, inflight: int) -> None: ... @@ -228,13 +233,18 @@ class Client: def message_retry_set(self, retry: Unused) -> None: ... def user_data_set(self, userdata: _UserData) -> None: ... def will_set( - self, topic: str, payload: _Payload | None = ..., qos: int = ..., retain: bool = ..., properties: Properties | None = ... + self, + topic: str, + payload: _Payload | None = None, + qos: int = 0, + retain: bool = False, + properties: Properties | None = None, ) -> None: ... def will_clear(self) -> None: ... def socket(self) -> _Socket | WebsocketWrapper: ... - def loop_forever(self, timeout: float = ..., max_packets: int = ..., retry_first_connection: bool = ...) -> int: ... + def loop_forever(self, timeout: float = 1.0, max_packets: int = 1, retry_first_connection: bool = False) -> int: ... def loop_start(self) -> int | None: ... - def loop_stop(self, force: bool = ...) -> int | None: ... + def loop_stop(self, force: bool = False) -> int | None: ... @property def on_log(self) -> _OnLog | None: ... @on_log.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/publish.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/publish.pyi index af1402336..aeb033d3c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/publish.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/publish.pyi @@ -33,30 +33,30 @@ class _Proxy(TypedDict): def multiple( msgs: Iterable[_Msg], - hostname: str = ..., - port: int = ..., - client_id: str = ..., - keepalive: int = ..., - will: _Msg | None = ..., - auth: _Auth | None = ..., - tls: _TLS | None = ..., - protocol: int = ..., - transport: str = ..., - proxy_args: _Proxy | None = ..., + hostname: str = "localhost", + port: int = 1883, + client_id: str = "", + keepalive: int = 60, + will: _Msg | None = None, + auth: _Auth | None = None, + tls: _TLS | None = None, + protocol: int = 4, + transport: str = "tcp", + proxy_args: _Proxy | None = None, ) -> None: ... def single( topic: str, - payload: _Payload | None = ..., - qos: int | None = ..., - retain: bool | None = ..., - hostname: str = ..., - port: int = ..., - client_id: str = ..., - keepalive: int = ..., - will: _Msg | None = ..., - auth: _Auth | None = ..., - tls: _TLS | None = ..., - protocol: int = ..., - transport: str = ..., - proxy_args: _Proxy | None = ..., + payload: _Payload | None = None, + qos: int | None = 0, + retain: bool | None = False, + hostname: str = "localhost", + port: int = 1883, + client_id: str = "", + keepalive: int = 60, + will: _Msg | None = None, + auth: _Auth | None = None, + tls: _TLS | None = None, + protocol: int = 4, + transport: str = "tcp", + proxy_args: _Proxy | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/reasoncodes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/reasoncodes.pyi index 3a3b20f5b..ff6322944 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/reasoncodes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/reasoncodes.pyi @@ -2,7 +2,7 @@ class ReasonCodes: packetType: int names: dict[int, dict[str, list[int]]] value: int - def __init__(self, packetType: int, aName: str = ..., identifier: int = ...) -> None: ... + def __init__(self, packetType: int, aName: str = "Success", identifier: int = -1) -> None: ... def __getName__(self, packetType: int, identifier: int) -> str: ... def getId(self, name: str) -> int: ... def set(self, name: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/subscribe.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/subscribe.pyi index a9a7e0058..e7e48255c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/subscribe.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/subscribe.pyi @@ -6,34 +6,34 @@ from .publish import _TLS, _Auth, _Msg, _Proxy def callback( callback: Callable[[Client, _UserData, MQTTMessage], None], topics: list[str], - qos: int = ..., - userdata: _UserData | None = ..., - hostname: str = ..., - port: int = ..., - client_id: str = ..., - keepalive: int = ..., - will: _Msg | None = ..., - auth: _Auth | None = ..., - tls: _TLS | None = ..., - protocol: int = ..., - transport: str = ..., - clean_session: bool = ..., - proxy_args: _Proxy | None = ..., + qos: int = 0, + userdata: _UserData | None = None, + hostname: str = "localhost", + port: int = 1883, + client_id: str = "", + keepalive: int = 60, + will: _Msg | None = None, + auth: _Auth | None = None, + tls: _TLS | None = None, + protocol: int = 4, + transport: str = "tcp", + clean_session: bool = True, + proxy_args: _Proxy | None = None, ) -> None: ... def simple( topics: str | list[str], - qos: int = ..., - msg_count: int = ..., - retained: bool = ..., - hostname: str = ..., - port: int = ..., - client_id: str = ..., - keepalive: int = ..., - will: _Msg | None = ..., - auth: _Auth | None = ..., - tls: _TLS | None = ..., - protocol: int = ..., - transport: str = ..., - clean_session: bool = ..., - proxy_args: _Proxy | None = ..., + qos: int = 0, + msg_count: int = 1, + retained: bool = True, + hostname: str = "localhost", + port: int = 1883, + client_id: str = "", + keepalive: int = 60, + will: _Msg | None = None, + auth: _Auth | None = None, + tls: _TLS | None = None, + protocol: int = 4, + transport: str = "tcp", + clean_session: bool = True, + proxy_args: _Proxy | None = None, ) -> list[MQTTMessage] | MQTTMessage: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/subscribeoptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/subscribeoptions.pyi index 4d9c58501..9356f7911 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/subscribeoptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/paho/mqtt/subscribeoptions.pyi @@ -18,7 +18,7 @@ class SubscribeOptions: noLocal: bool retainAsPublished: bool retainHandling: int - def __init__(self, qos: int = ..., noLocal: bool = ..., retainAsPublished: bool = ..., retainHandling: int = ...) -> None: ... + def __init__(self, qos: int = 0, noLocal: bool = False, retainAsPublished: bool = False, retainHandling: int = 0) -> None: ... def __setattr__(self, name: str, value: Any) -> None: ... def pack(self) -> bytes: ... def unpack(self, buffer: bytes | bytearray) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/_winapi.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/_winapi.pyi index 2943652ef..cbfcff392 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/_winapi.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/_winapi.pyi @@ -10,7 +10,7 @@ if sys.platform == "win32": def format_system_message(errno: int) -> str | None: ... class WindowsError(builtins.WindowsError): - def __init__(self, value: int | None = ...) -> None: ... + def __init__(self, value: int | None = None) -> None: ... @property def message(self) -> str: ... @property @@ -30,11 +30,11 @@ if sys.platform == "win32": class MemoryMap: name: str length: int - security_attributes: Any = ... + security_attributes: Incomplete | None pos: int - filemap: Any = ... - view: Any = ... - def __init__(self, name: str, length: int, security_attributes: Incomplete | None = ...) -> None: ... + filemap: Incomplete + view: Incomplete + def __init__(self, name: str, length: int, security_attributes: Incomplete | None = None) -> None: ... def __enter__(self) -> Self: ... def seek(self, pos: int) -> None: ... def write(self, msg: bytes) -> None: ... @@ -91,4 +91,4 @@ if sys.platform == "win32": def GetTokenInformation(token: Any, information_class: Any) -> Any: ... def OpenProcessToken(proc_handle: Any, access: Any) -> Any: ... def get_current_user() -> TOKEN_USER: ... - def get_security_attributes_for_user(user: TOKEN_USER | None = ...) -> SECURITY_ATTRIBUTES: ... + def get_security_attributes_for_user(user: TOKEN_USER | None = None) -> SECURITY_ATTRIBUTES: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi index a8a8c5325..464b0c612 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi @@ -64,4 +64,4 @@ class AgentKey(PKey): def __init__(self, agent: AgentSSH, blob: bytes) -> None: ... def asbytes(self) -> bytes: ... def get_name(self) -> str: ... - def sign_ssh_data(self, data: bytes, algorithm: str | None = ...) -> Message: ... + def sign_ssh_data(self, data: bytes, algorithm: str | None = None) -> Message: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_handler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_handler.pyi index d82d27e3c..bb062b859 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_handler.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_handler.pyi @@ -29,7 +29,7 @@ class AuthHandler: def auth_none(self, username: str, event: Event) -> None: ... def auth_publickey(self, username: str, key: PKey, event: Event) -> None: ... def auth_password(self, username: str, password: str, event: Event) -> None: ... - def auth_interactive(self, username: str, handler: _InteractiveCallback, event: Event, submethods: str = ...) -> None: ... + def auth_interactive(self, username: str, handler: _InteractiveCallback, event: Event, submethods: str = "") -> None: ... def auth_gssapi_with_mic(self, username: str, gss_host: str, gss_deleg_creds: bool, event: Event) -> None: ... def auth_gssapi_keyex(self, username: str, event: Event) -> None: ... def abort(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ber.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ber.pyi index 831ef1ef6..d847e528a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ber.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ber.pyi @@ -6,7 +6,7 @@ class BERException(Exception): ... class BER: content: bytes idx: int - def __init__(self, content: bytes = ...) -> None: ... + def __init__(self, content: bytes = b"") -> None: ... def asbytes(self) -> bytes: ... def decode(self) -> None | int | list[int]: ... def decode_next(self) -> None | int | list[int]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/buffered_pipe.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/buffered_pipe.pyi index c31584e50..558df9d30 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/buffered_pipe.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/buffered_pipe.pyi @@ -8,7 +8,7 @@ class BufferedPipe(Generic[AnyStr]): def set_event(self, event: Event) -> None: ... def feed(self, data: AnyStr) -> None: ... def read_ready(self) -> bool: ... - def read(self, nbytes: int, timeout: float | None = ...) -> AnyStr: ... + def read(self, nbytes: int, timeout: float | None = None) -> AnyStr: ... def empty(self) -> AnyStr: ... def close(self) -> None: ... def __len__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/channel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/channel.pyi index f88d5c753..536d3bfdc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/channel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/channel.pyi @@ -43,12 +43,12 @@ class Channel(ClosingContextManager): def __init__(self, chanid: int) -> None: ... def __del__(self) -> None: ... def get_pty( - self, term: str | bytes = ..., width: int = ..., height: int = ..., width_pixels: int = ..., height_pixels: int = ... + self, term: str | bytes = "vt100", width: int = 80, height: int = 24, width_pixels: int = 0, height_pixels: int = 0 ) -> None: ... def invoke_shell(self) -> None: ... def exec_command(self, command: str | bytes) -> None: ... def invoke_subsystem(self, subsystem: str | bytes) -> None: ... - def resize_pty(self, width: int = ..., height: int = ..., width_pixels: int = ..., height_pixels: int = ...) -> None: ... + def resize_pty(self, width: int = 80, height: int = 24, width_pixels: int = 0, height_pixels: int = 0) -> None: ... def update_environment(self, environment: Mapping[str | bytes, str | bytes]) -> None: ... def set_environment_variable(self, name: str | bytes, value: str | bytes) -> None: ... def exit_status_ready(self) -> bool: ... @@ -56,11 +56,11 @@ class Channel(ClosingContextManager): def send_exit_status(self, status: int) -> None: ... def request_x11( self, - screen_number: int = ..., - auth_protocol: str | bytes | None = ..., - auth_cookie: str | bytes | None = ..., - single_connection: bool = ..., - handler: Callable[[Channel, tuple[str, int]], object] | None = ..., + screen_number: int = 0, + auth_protocol: str | bytes | None = None, + auth_cookie: str | bytes | None = None, + single_connection: bool = False, + handler: Callable[[Channel, tuple[str, int]], object] | None = None, ) -> bytes: ... def request_forward_agent(self, handler: Callable[[Channel], object]) -> bool: ... def get_transport(self) -> Transport: ... @@ -92,7 +92,7 @@ class Channel(ClosingContextManager): class ChannelFile(BufferedFile[Any]): channel: Channel - def __init__(self, channel: Channel, mode: str = ..., bufsize: int = ...) -> None: ... + def __init__(self, channel: Channel, mode: str = "r", bufsize: int = -1) -> None: ... class ChannelStderrFile(ChannelFile): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi index e8adb90f9..feda1bdfc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi @@ -17,7 +17,7 @@ class _TransportFactory(Protocol): class SSHClient(ClosingContextManager): def __init__(self) -> None: ... - def load_system_host_keys(self, filename: str | None = ...) -> None: ... + def load_system_host_keys(self, filename: str | None = None) -> None: ... def load_host_keys(self, filename: str) -> None: ... def save_host_keys(self, filename: str) -> None: ... def get_host_keys(self) -> HostKeys: ... @@ -26,44 +26,44 @@ class SSHClient(ClosingContextManager): def connect( self, hostname: str, - port: int = ..., - username: str | None = ..., - password: str | None = ..., - pkey: PKey | None = ..., - key_filename: str | None = ..., - timeout: float | None = ..., - allow_agent: bool = ..., - look_for_keys: bool = ..., - compress: bool = ..., - sock: _SocketLike | None = ..., - gss_auth: bool = ..., - gss_kex: bool = ..., - gss_deleg_creds: bool = ..., - gss_host: str | None = ..., - banner_timeout: float | None = ..., - auth_timeout: float | None = ..., - gss_trust_dns: bool = ..., - passphrase: str | None = ..., - disabled_algorithms: dict[str, Iterable[str]] | None = ..., - transport_factory: _TransportFactory | None = ..., + port: int = 22, + username: str | None = None, + password: str | None = None, + pkey: PKey | None = None, + key_filename: str | None = None, + timeout: float | None = None, + allow_agent: bool = True, + look_for_keys: bool = True, + compress: bool = False, + sock: _SocketLike | None = None, + gss_auth: bool = False, + gss_kex: bool = False, + gss_deleg_creds: bool = True, + gss_host: str | None = None, + banner_timeout: float | None = None, + auth_timeout: float | None = None, + gss_trust_dns: bool = True, + passphrase: str | None = None, + disabled_algorithms: dict[str, Iterable[str]] | None = None, + transport_factory: _TransportFactory | None = None, ) -> None: ... def close(self) -> None: ... def exec_command( self, command: str, - bufsize: int = ..., - timeout: float | None = ..., - get_pty: bool = ..., - environment: dict[str, str] | None = ..., + bufsize: int = -1, + timeout: float | None = None, + get_pty: bool = False, + environment: dict[str, str] | None = None, ) -> tuple[ChannelStdinFile, ChannelFile, ChannelStderrFile]: ... def invoke_shell( self, - term: str = ..., - width: int = ..., - height: int = ..., - width_pixels: int = ..., - height_pixels: int = ..., - environment: Mapping[str, str] | None = ..., + term: str = "vt100", + width: int = 80, + height: int = 24, + width_pixels: int = 0, + height_pixels: int = 0, + environment: Mapping[str, str] | None = None, ) -> Channel: ... def open_sftp(self) -> SFTPClient: ... def get_transport(self) -> Transport | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/config.pyi index a7c30feaf..7c35f82ae 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/config.pyi @@ -26,7 +26,7 @@ class LazyFqdn: fqdn: str | None config: SSHConfig host: str | None - def __init__(self, config: SSHConfigDict, host: str | None = ...) -> None: ... + def __init__(self, config: SSHConfigDict, host: str | None = None) -> None: ... class SSHConfigDict(dict[str, str]): def as_bool(self, key: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/dsskey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/dsskey.pyi index f98c69f51..a63e8f31a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/dsskey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/dsskey.pyi @@ -14,21 +14,21 @@ class DSSKey(PKey): size: int def __init__( self, - msg: Message | None = ..., - data: bytes | None = ..., - filename: str | None = ..., - password: str | None = ..., - vals: tuple[int, int, int, int] | None = ..., - file_obj: IO[str] | None = ..., + msg: Message | None = None, + data: bytes | None = None, + filename: str | None = None, + password: str | None = None, + vals: tuple[int, int, int, int] | None = None, + file_obj: IO[str] | None = None, ) -> None: ... def asbytes(self) -> bytes: ... def __hash__(self) -> int: ... def get_name(self) -> str: ... def get_bits(self) -> int: ... def can_sign(self) -> bool: ... - def sign_ssh_data(self, data: bytes, algorithm: str | None = ...) -> Message: ... + def sign_ssh_data(self, data: bytes, algorithm: str | None = None) -> Message: ... def verify_ssh_sig(self, data: bytes, msg: Message) -> bool: ... - def write_private_key_file(self, filename: str, password: str | None = ...) -> None: ... - def write_private_key(self, file_obj: IO[str], password: str | None = ...) -> None: ... + def write_private_key_file(self, filename: str, password: str | None = None) -> None: ... + def write_private_key(self, file_obj: IO[str], password: str | None = None) -> None: ... @staticmethod - def generate(bits: int = ..., progress_func: Callable[..., object] | None = ...) -> DSSKey: ... + def generate(bits: int = 1024, progress_func: Callable[..., object] | None = None) -> DSSKey: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ecdsakey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ecdsakey.pyi index e5ff63c6b..661b27de6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ecdsakey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ecdsakey.pyi @@ -29,13 +29,13 @@ class ECDSAKey(PKey): ecdsa_curve: _ECDSACurve | None def __init__( self, - msg: Message | None = ..., - data: bytes | None = ..., - filename: str | None = ..., - password: str | None = ..., - vals: tuple[EllipticCurvePrivateKey, EllipticCurvePublicKey] | None = ..., - file_obj: IO[str] | None = ..., - validate_point: bool = ..., + msg: Message | None = None, + data: bytes | None = None, + filename: str | None = None, + password: str | None = None, + vals: tuple[EllipticCurvePrivateKey, EllipticCurvePublicKey] | None = None, + file_obj: IO[str] | None = None, + validate_point: bool = True, ) -> None: ... @classmethod def supported_key_format_identifiers(cls: Any) -> list[str]: ... @@ -44,11 +44,11 @@ class ECDSAKey(PKey): def get_name(self) -> str: ... def get_bits(self) -> int: ... def can_sign(self) -> bool: ... - def sign_ssh_data(self, data: bytes, algorithm: str | None = ...) -> Message: ... + def sign_ssh_data(self, data: bytes, algorithm: str | None = None) -> Message: ... def verify_ssh_sig(self, data: bytes, msg: Message) -> bool: ... - def write_private_key_file(self, filename: str, password: str | None = ...) -> None: ... - def write_private_key(self, file_obj: IO[str], password: str | None = ...) -> None: ... + def write_private_key_file(self, filename: str, password: str | None = None) -> None: ... + def write_private_key(self, file_obj: IO[str], password: str | None = None) -> None: ... @classmethod def generate( - cls, curve: EllipticCurve = ..., progress_func: Callable[..., object] | None = ..., bits: int | None = ... + cls, curve: EllipticCurve = ..., progress_func: Callable[..., object] | None = None, bits: int | None = None ) -> ECDSAKey: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ed25519key.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ed25519key.pyi index 43de9aa58..8c0361d4e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ed25519key.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ed25519key.pyi @@ -7,16 +7,16 @@ class Ed25519Key(PKey): public_blob: None def __init__( self, - msg: Message | None = ..., - data: bytes | None = ..., - filename: str | None = ..., - password: str | None = ..., - file_obj: IO[str] | None = ..., + msg: Message | None = None, + data: bytes | None = None, + filename: str | None = None, + password: str | None = None, + file_obj: IO[str] | None = None, ) -> None: ... def asbytes(self) -> bytes: ... def __hash__(self) -> int: ... def get_name(self) -> str: ... def get_bits(self) -> int: ... def can_sign(self) -> bool: ... - def sign_ssh_data(self, data: bytes, algorithm: str | None = ...) -> Message: ... + def sign_ssh_data(self, data: bytes, algorithm: str | None = None) -> Message: ... def verify_ssh_sig(self, data: bytes, msg: Message) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/file.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/file.pyi index e84863cf5..f18d2a856 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/file.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/file.pyi @@ -27,10 +27,10 @@ class BufferedFile(ClosingContextManager, Generic[AnyStr]): def writable(self) -> bool: ... def seekable(self) -> bool: ... def readinto(self, buff: bytearray) -> int: ... - def read(self, size: int | None = ...) -> bytes: ... - def readline(self, size: int | None = ...) -> AnyStr: ... - def readlines(self, sizehint: int | None = ...) -> list[AnyStr]: ... - def seek(self, offset: int, whence: int = ...) -> None: ... + def read(self, size: int | None = None) -> bytes: ... + def readline(self, size: int | None = None) -> AnyStr: ... + def readlines(self, sizehint: int | None = None) -> list[AnyStr]: ... + def seek(self, offset: int, whence: int = 0) -> None: ... def tell(self) -> int: ... def write(self, data: AnyStr) -> None: ... def writelines(self, sequence: Iterable[AnyStr]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/hostkeys.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/hostkeys.pyi index c48011a59..214b701b2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/hostkeys.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/hostkeys.pyi @@ -14,7 +14,7 @@ class _SubDict(MutableMapping[str, PKey]): def keys(self) -> list[str]: ... # type: ignore[override] class HostKeys(MutableMapping[str, _SubDict]): - def __init__(self, filename: str | None = ...) -> None: ... + def __init__(self, filename: str | None = None) -> None: ... def add(self, hostname: str, keytype: str, key: PKey) -> None: ... def load(self, filename: str) -> None: ... def save(self, filename: str) -> None: ... @@ -29,7 +29,7 @@ class HostKeys(MutableMapping[str, _SubDict]): def keys(self) -> list[str]: ... # type: ignore[override] def values(self) -> list[_SubDict]: ... # type: ignore[override] @staticmethod - def hash_host(hostname: str, salt: str | None = ...) -> str: ... + def hash_host(hostname: str, salt: str | None = None) -> str: ... class InvalidHostKey(Exception): line: str @@ -40,7 +40,7 @@ class HostKeyEntry: valid: bool hostnames: list[str] key: PKey - def __init__(self, hostnames: list[str] | None = ..., key: PKey | None = ...) -> None: ... + def __init__(self, hostnames: list[str] | None = None, key: PKey | None = None) -> None: ... @classmethod - def from_line(cls, line: str, lineno: int | None = ...) -> Self | None: ... + def from_line(cls, line: str, lineno: int | None = None) -> Self | None: ... def to_line(self) -> str | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/kex_gex.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/kex_gex.pyi index d65259a23..e1c61ce19 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/kex_gex.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/kex_gex.pyi @@ -16,7 +16,7 @@ class KexGex: min_bits: int max_bits: int preferred_bits: int - hash_algo: Callable[[ReadableBuffer], _Hash] = ... + hash_algo: Callable[[ReadableBuffer], _Hash] transport: Transport p: int | None q: int | None @@ -26,9 +26,9 @@ class KexGex: f: int | None old_style: bool def __init__(self, transport: Transport) -> None: ... - def start_kex(self, _test_old_style: bool = ...) -> None: ... + def start_kex(self, _test_old_style: bool = False) -> None: ... def parse_next(self, ptype: int, m: Message) -> None: ... class KexGexSHA256(KexGex): name: str - hash_algo: Callable[[ReadableBuffer], _Hash] = ... + hash_algo: Callable[[ReadableBuffer], _Hash] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/message.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/message.pyi index 7314f1e0c..0f1261c85 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/message.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/message.pyi @@ -12,7 +12,7 @@ class Message: big_int: int packet: BytesIO seqno: int # only when packet.Packetizer.read_message() is used - def __init__(self, content: bytes | None = ...) -> None: ... + def __init__(self, content: bytes | None = None) -> None: ... def __bytes__(self) -> bytes: ... def asbytes(self) -> bytes: ... def rewind(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/packet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/packet.pyi index 815eaed86..da6a0c9ef 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/packet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/packet.pyi @@ -31,11 +31,17 @@ class Packetizer: mac_engine: _Hash, mac_size: int, mac_key: bytes, - sdctr: bool = ..., - etm: bool = ..., + sdctr: bool = False, + etm: bool = False, ) -> None: ... def set_inbound_cipher( - self, block_engine: Cipher[Incomplete], block_size: int, mac_engine: _Hash, mac_size: int, mac_key: bytes, etm: bool = ... + self, + block_engine: Cipher[Incomplete], + block_size: int, + mac_engine: _Hash, + mac_size: int, + mac_key: bytes, + etm: bool = False, ) -> None: ... def set_outbound_compressor(self, compressor: ZlibCompressor) -> None: ... def set_inbound_compressor(self, compressor: ZlibDecompressor) -> None: ... @@ -50,7 +56,7 @@ class Packetizer: def start_handshake(self, timeout: float) -> None: ... def handshake_timed_out(self) -> bool: ... def complete_handshake(self) -> None: ... - def read_all(self, n: int, check_rekey: bool = ...) -> bytes: ... + def read_all(self, n: int, check_rekey: bool = False) -> bytes: ... def write_all(self, out: bytes) -> None: ... def readline(self, timeout: float) -> str: ... def send_message(self, data: Message) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/pkey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/pkey.pyi index 9daefd876..a71727411 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/pkey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/pkey.pyi @@ -12,7 +12,7 @@ class PKey: public_blob: PublicBlob | None BEGIN_TAG: Pattern[str] END_TAG: Pattern[str] - def __init__(self, msg: Message | None = ..., data: str | None = ...) -> None: ... + def __init__(self, msg: Message | None = None, data: str | None = None) -> None: ... def asbytes(self) -> bytes: ... def __bytes__(self) -> bytes: ... def __eq__(self, other: object) -> bool: ... @@ -21,21 +21,21 @@ class PKey: def can_sign(self) -> bool: ... def get_fingerprint(self) -> bytes: ... def get_base64(self) -> str: ... - def sign_ssh_data(self, data: bytes, algorithm: str | None = ...) -> Message: ... + def sign_ssh_data(self, data: bytes, algorithm: str | None = None) -> Message: ... def verify_ssh_sig(self, data: bytes, msg: Message) -> bool: ... @classmethod - def from_private_key_file(cls, filename: str, password: str | None = ...) -> Self: ... + def from_private_key_file(cls, filename: str, password: str | None = None) -> Self: ... @classmethod - def from_private_key(cls, file_obj: IO[str], password: str | None = ...) -> Self: ... - def write_private_key_file(self, filename: str, password: str | None = ...) -> None: ... - def write_private_key(self, file_obj: IO[str], password: str | None = ...) -> None: ... + def from_private_key(cls, file_obj: IO[str], password: str | None = None) -> Self: ... + def write_private_key_file(self, filename: str, password: str | None = None) -> None: ... + def write_private_key(self, file_obj: IO[str], password: str | None = None) -> None: ... def load_certificate(self, value: Message | str) -> None: ... class PublicBlob: key_type: str key_blob: str comment: str - def __init__(self, type_: str, blob: bytes, comment: str | None = ...) -> None: ... + def __init__(self, type_: str, blob: bytes, comment: str | None = None) -> None: ... @classmethod def from_file(cls, filename: str) -> Self: ... @classmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi index 477ac328a..b9ececeeb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi @@ -10,12 +10,12 @@ class RSAKey(PKey): public_blob: None def __init__( self, - msg: Message | None = ..., - data: bytes | None = ..., - filename: str | None = ..., - password: str | None = ..., - key: None | RSAPublicKey | RSAPrivateKey = ..., - file_obj: IO[str] | None = ..., + msg: Message | None = None, + data: bytes | None = None, + filename: str | None = None, + password: str | None = None, + key: None | RSAPublicKey | RSAPrivateKey = None, + file_obj: IO[str] | None = None, ) -> None: ... @property def size(self) -> int: ... @@ -26,9 +26,9 @@ class RSAKey(PKey): def get_name(self) -> str: ... def get_bits(self) -> int: ... def can_sign(self) -> bool: ... - def sign_ssh_data(self, data: bytes, algorithm: str = ...) -> Message: ... # type: ignore[override] + def sign_ssh_data(self, data: bytes, algorithm: str = "ssh-rsa") -> Message: ... # type: ignore[override] def verify_ssh_sig(self, data: bytes, msg: Message) -> bool: ... - def write_private_key_file(self, filename: str, password: str | None = ...) -> None: ... - def write_private_key(self, file_obj: IO[str], password: str | None = ...) -> None: ... + def write_private_key_file(self, filename: str, password: str | None = None) -> None: ... + def write_private_key(self, file_obj: IO[str], password: str | None = None) -> None: ... @staticmethod - def generate(bits: int, progress_func: Callable[..., object] | None = ...) -> RSAKey: ... + def generate(bits: int, progress_func: Callable[..., object] | None = None) -> RSAKey: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/server.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/server.pyi index 5bc25c3d6..f5995d389 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/server.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/server.pyi @@ -13,8 +13,8 @@ class ServerInterface: def check_auth_publickey(self, username: str, key: PKey) -> int: ... def check_auth_interactive(self, username: str, submethods: str) -> int | InteractiveQuery: ... def check_auth_interactive_response(self, responses: list[str]) -> int | InteractiveQuery: ... - def check_auth_gssapi_with_mic(self, username: str, gss_authenticated: int = ..., cc_file: str | None = ...) -> int: ... - def check_auth_gssapi_keyex(self, username: str, gss_authenticated: int = ..., cc_file: str | None = ...) -> int: ... + def check_auth_gssapi_with_mic(self, username: str, gss_authenticated: int = 2, cc_file: str | None = None) -> int: ... + def check_auth_gssapi_keyex(self, username: str, gss_authenticated: int = 2, cc_file: str | None = None) -> int: ... def enable_auth_gssapi(self) -> bool: ... def check_port_forward_request(self, address: str, port: int) -> int: ... def cancel_port_forward_request(self, address: str, port: int) -> None: ... @@ -40,8 +40,8 @@ class InteractiveQuery: name: str instructions: str prompts: list[tuple[str, bool]] - def __init__(self, name: str = ..., instructions: str = ..., *prompts: str | tuple[str, bool]) -> None: ... - def add_prompt(self, prompt: str, echo: bool = ...) -> None: ... + def __init__(self, name: str = "", instructions: str = "", *prompts: str | tuple[str, bool]) -> None: ... + def add_prompt(self, prompt: str, echo: bool = True) -> None: ... class SubsystemHandler(threading.Thread): def __init__(self, channel: Channel, name: str, server: ServerInterface) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_attr.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_attr.pyi index b97f99df6..7594ec937 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_attr.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_attr.pyi @@ -18,5 +18,5 @@ class SFTPAttributes: attr: dict[str, str] def __init__(self) -> None: ... @classmethod - def from_stat(cls, obj: stat_result, filename: str | None = ...) -> Self: ... + def from_stat(cls, obj: stat_result, filename: str | None = None) -> Self: ... def asbytes(self) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi index 54d543b39..5bad906be 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi @@ -21,19 +21,19 @@ class SFTPClient(BaseSFTP, ClosingContextManager): logger: Logger def __init__(self, sock: Channel) -> None: ... @classmethod - def from_transport(cls, t: Transport, window_size: int | None = ..., max_packet_size: int | None = ...) -> Self | None: ... + def from_transport(cls, t: Transport, window_size: int | None = None, max_packet_size: int | None = None) -> Self | None: ... def close(self) -> None: ... def get_channel(self) -> Channel | None: ... - def listdir(self, path: str = ...) -> list[str]: ... - def listdir_attr(self, path: str = ...) -> list[SFTPAttributes]: ... - def listdir_iter(self, path: bytes | str = ..., read_aheads: int = ...) -> Iterator[SFTPAttributes]: ... - def open(self, filename: bytes | str, mode: str = ..., bufsize: int = ...) -> SFTPFile: ... + def listdir(self, path: str = ".") -> list[str]: ... + def listdir_attr(self, path: str = ".") -> list[SFTPAttributes]: ... + def listdir_iter(self, path: bytes | str = ".", read_aheads: int = 50) -> Iterator[SFTPAttributes]: ... + def open(self, filename: bytes | str, mode: str = "r", bufsize: int = -1) -> SFTPFile: ... file = open def remove(self, path: bytes | str) -> None: ... unlink = remove def rename(self, oldpath: bytes | str, newpath: bytes | str) -> None: ... def posix_rename(self, oldpath: bytes | str, newpath: bytes | str) -> None: ... - def mkdir(self, path: bytes | str, mode: int = ...) -> None: ... + def mkdir(self, path: bytes | str, mode: int = 511) -> None: ... def rmdir(self, path: bytes | str) -> None: ... def stat(self, path: bytes | str) -> SFTPAttributes: ... def lstat(self, path: bytes | str) -> SFTPAttributes: ... @@ -44,17 +44,17 @@ class SFTPClient(BaseSFTP, ClosingContextManager): def truncate(self, path: bytes | str, size: int) -> None: ... def readlink(self, path: bytes | str) -> str | None: ... def normalize(self, path: bytes | str) -> str: ... - def chdir(self, path: None | bytes | str = ...) -> None: ... + def chdir(self, path: None | bytes | str = None) -> None: ... def getcwd(self) -> str | None: ... def putfo( - self, fl: IO[bytes], remotepath: bytes | str, file_size: int = ..., callback: _Callback | None = ..., confirm: bool = ... + self, fl: IO[bytes], remotepath: bytes | str, file_size: int = 0, callback: _Callback | None = None, confirm: bool = True ) -> SFTPAttributes: ... def put( - self, localpath: bytes | str, remotepath: bytes | str, callback: _Callback | None = ..., confirm: bool = ... + self, localpath: bytes | str, remotepath: bytes | str, callback: _Callback | None = None, confirm: bool = True ) -> SFTPAttributes: ... - def getfo(self, remotepath: bytes | str, fl: IO[bytes], callback: _Callback | None = ..., prefetch: bool = ...) -> int: ... + def getfo(self, remotepath: bytes | str, fl: IO[bytes], callback: _Callback | None = None, prefetch: bool = True) -> int: ... def get( - self, remotepath: bytes | str, localpath: bytes | str, callback: _Callback | None = ..., prefetch: bool = ... + self, remotepath: bytes | str, localpath: bytes | str, callback: _Callback | None = None, prefetch: bool = True ) -> None: ... class SFTP(SFTPClient): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi index 50415d127..cbb20b800 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi @@ -11,20 +11,20 @@ class SFTPFile(BufferedFile[Any]): sftp: SFTPClient handle: SFTPHandle pipelined: bool - def __init__(self, sftp: SFTPClient, handle: bytes, mode: str = ..., bufsize: int = ...) -> None: ... + def __init__(self, sftp: SFTPClient, handle: bytes, mode: str = "r", bufsize: int = -1) -> None: ... def __del__(self) -> None: ... def close(self) -> None: ... def settimeout(self, timeout: float) -> None: ... def gettimeout(self) -> float: ... def setblocking(self, blocking: bool) -> None: ... def seekable(self) -> bool: ... - def seek(self, offset: int, whence: int = ...) -> None: ... + def seek(self, offset: int, whence: int = 0) -> None: ... def stat(self) -> SFTPAttributes: ... def chmod(self, mode: int) -> None: ... def chown(self, uid: int, gid: int) -> None: ... def utime(self, times: tuple[float, float] | None) -> None: ... def truncate(self, size: int) -> None: ... - def check(self, hash_algorithm: str, offset: int = ..., length: int = ..., block_size: int = ...) -> bytes: ... - def set_pipelined(self, pipelined: bool = ...) -> None: ... - def prefetch(self, file_size: int | None = ...) -> None: ... + def check(self, hash_algorithm: str, offset: int = 0, length: int = 0, block_size: int = 0) -> bytes: ... + def set_pipelined(self, pipelined: bool = True) -> None: ... + def prefetch(self, file_size: int | None = None) -> None: ... def readv(self, chunks: Sequence[tuple[int, int]]) -> Iterator[bytes]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_handle.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_handle.pyi index 888e3c44e..08c199d3c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_handle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_handle.pyi @@ -2,7 +2,7 @@ from paramiko.sftp_attr import SFTPAttributes from paramiko.util import ClosingContextManager class SFTPHandle(ClosingContextManager): - def __init__(self, flags: int = ...) -> None: ... + def __init__(self, flags: int = 0) -> None: ... def close(self) -> None: ... def read(self, offset: int, length: int) -> bytes | int: ... def write(self, offset: int, data: bytes) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ssh_gss.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ssh_gss.pyi index 9c0d8bab9..89f234681 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ssh_gss.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ssh_gss.pyi @@ -3,24 +3,24 @@ from typing import Any GSS_AUTH_AVAILABLE: bool GSS_EXCEPTIONS: tuple[type[Exception], ...] -def GSSAuth(auth_method: str, gss_deleg_creds: bool = ...) -> _SSH_GSSAuth: ... +def GSSAuth(auth_method: str, gss_deleg_creds: bool = True) -> _SSH_GSSAuth: ... class _SSH_GSSAuth: cc_file: None def __init__(self, auth_method: str, gss_deleg_creds: bool) -> None: ... def set_service(self, service: str) -> None: ... def set_username(self, username: str) -> None: ... - def ssh_gss_oids(self, mode: str = ...) -> bytes: ... + def ssh_gss_oids(self, mode: str = "client") -> bytes: ... def ssh_check_mech(self, desired_mech: str) -> bool: ... class _SSH_GSSAPI_OLD(_SSH_GSSAuth): def __init__(self, auth_method: str, gss_deleg_creds: bool) -> None: ... def ssh_init_sec_context( - self, target: str, desired_mech: str | None = ..., username: str | None = ..., recv_token: str | None = ... + self, target: str, desired_mech: str | None = None, username: str | None = None, recv_token: str | None = None ) -> str | None: ... - def ssh_get_mic(self, session_id: bytes, gss_kex: bool = ...) -> Any: ... - def ssh_accept_sec_context(self, hostname: str, recv_token: str, username: str | None = ...) -> str | None: ... - def ssh_check_mic(self, mic_token: str, session_id: bytes, username: str | None = ...) -> None: ... + def ssh_get_mic(self, session_id: bytes, gss_kex: bool = False) -> Any: ... + def ssh_accept_sec_context(self, hostname: str, recv_token: str, username: str | None = None) -> str | None: ... + def ssh_check_mic(self, mic_token: str, session_id: bytes, username: str | None = None) -> None: ... @property def credentials_delegated(self) -> bool: ... def save_client_creds(self, client_token: str) -> None: ... @@ -30,11 +30,11 @@ _SSH_GSSAPI = _SSH_GSSAPI_OLD class _SSH_GSSAPI_NEW(_SSH_GSSAuth): def __init__(self, auth_method: str, gss_deleg_creds: bool) -> None: ... def ssh_init_sec_context( - self, target: str, desired_mech: str | None = ..., username: str | None = ..., recv_token: str | None = ... + self, target: str, desired_mech: str | None = None, username: str | None = None, recv_token: str | None = None ) -> str: ... - def ssh_get_mic(self, session_id: bytes, gss_kex: bool = ...) -> Any: ... - def ssh_accept_sec_context(self, hostname: str, recv_token: str, username: str | None = ...) -> str | None: ... - def ssh_check_mic(self, mic_token: str, session_id: bytes, username: str | None = ...) -> None: ... + def ssh_get_mic(self, session_id: bytes, gss_kex: bool = False) -> Any: ... + def ssh_accept_sec_context(self, hostname: str, recv_token: str, username: str | None = None) -> str | None: ... + def ssh_check_mic(self, mic_token: str, session_id: bytes, username: str | None = None) -> None: ... @property def credentials_delegated(self) -> bool: ... def save_client_creds(self, client_token: str) -> None: ... @@ -42,11 +42,11 @@ class _SSH_GSSAPI_NEW(_SSH_GSSAuth): class _SSH_SSPI(_SSH_GSSAuth): def __init__(self, auth_method: str, gss_deleg_creds: bool) -> None: ... def ssh_init_sec_context( - self, target: str, desired_mech: str | None = ..., username: str | None = ..., recv_token: str | None = ... + self, target: str, desired_mech: str | None = None, username: str | None = None, recv_token: str | None = None ) -> str: ... - def ssh_get_mic(self, session_id: bytes, gss_kex: bool = ...) -> Any: ... + def ssh_get_mic(self, session_id: bytes, gss_kex: bool = False) -> Any: ... def ssh_accept_sec_context(self, hostname: str, username: str, recv_token: str) -> str | None: ... - def ssh_check_mic(self, mic_token: str, session_id: bytes, username: str | None = ...) -> None: ... + def ssh_check_mic(self, mic_token: str, session_id: bytes, username: str | None = None) -> None: ... @property def credentials_delegated(self) -> bool: ... def save_client_creds(self, client_token: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/transport.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/transport.pyi index efaacd9e7..6443312a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/transport.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/transport.pyi @@ -75,12 +75,12 @@ class Transport(Thread, ClosingContextManager): def __init__( self, sock: _SocketLike, - default_window_size: int = ..., - default_max_packet_size: int = ..., - gss_kex: bool = ..., - gss_deleg_creds: bool = ..., - disabled_algorithms: dict[str, Iterable[str]] | None = ..., - server_sig_algs: bool = ..., + default_window_size: int = 2097152, + default_max_packet_size: int = 32768, + gss_kex: bool = False, + gss_deleg_creds: bool = True, + disabled_algorithms: dict[str, Iterable[str]] | None = None, + server_sig_algs: bool = True, ) -> None: ... @property def preferred_ciphers(self) -> Sequence[str]: ... @@ -94,52 +94,52 @@ class Transport(Thread, ClosingContextManager): def preferred_compression(self) -> Sequence[str]: ... def atfork(self) -> None: ... def get_security_options(self) -> SecurityOptions: ... - def set_gss_host(self, gss_host: str | None, trust_dns: bool = ..., gssapi_requested: bool = ...) -> None: ... - def start_client(self, event: Event | None = ..., timeout: float | None = ...) -> None: ... - def start_server(self, event: Event = ..., server: ServerInterface | None = ...) -> None: ... + def set_gss_host(self, gss_host: str | None, trust_dns: bool = True, gssapi_requested: bool = True) -> None: ... + def start_client(self, event: Event | None = None, timeout: float | None = None) -> None: ... + def start_server(self, event: Event | None = None, server: ServerInterface | None = None) -> None: ... def add_server_key(self, key: PKey) -> None: ... def get_server_key(self) -> PKey | None: ... @staticmethod - def load_server_moduli(filename: str | None = ...) -> bool: ... + def load_server_moduli(filename: str | None = None) -> bool: ... def close(self) -> None: ... def get_remote_server_key(self) -> PKey: ... def is_active(self) -> bool: ... def open_session( - self, window_size: int | None = ..., max_packet_size: int | None = ..., timeout: float | None = ... + self, window_size: int | None = None, max_packet_size: int | None = None, timeout: float | None = None ) -> Channel: ... - def open_x11_channel(self, src_addr: _Addr = ...) -> Channel: ... + def open_x11_channel(self, src_addr: _Addr | None = None) -> Channel: ... def open_forward_agent_channel(self) -> Channel: ... def open_forwarded_tcpip_channel(self, src_addr: _Addr, dest_addr: _Addr) -> Channel: ... def open_channel( self, kind: str, - dest_addr: _Addr | None = ..., - src_addr: _Addr | None = ..., - window_size: int | None = ..., - max_packet_size: int | None = ..., - timeout: float | None = ..., + dest_addr: _Addr | None = None, + src_addr: _Addr | None = None, + window_size: int | None = None, + max_packet_size: int | None = None, + timeout: float | None = None, ) -> Channel: ... def request_port_forward( - self, address: str, port: int, handler: Callable[[Channel, _Addr, _Addr], object] | None = ... + self, address: str, port: int, handler: Callable[[Channel, _Addr, _Addr], object] | None = None ) -> int: ... def cancel_port_forward(self, address: str, port: int) -> None: ... def open_sftp_client(self) -> SFTPClient | None: ... - def send_ignore(self, byte_count: int = ...) -> None: ... + def send_ignore(self, byte_count: int | None = None) -> None: ... def renegotiate_keys(self) -> None: ... def set_keepalive(self, interval: int) -> None: ... - def global_request(self, kind: str, data: Iterable[Any] | None = ..., wait: bool = ...) -> Message | None: ... - def accept(self, timeout: float | None = ...) -> Channel | None: ... + def global_request(self, kind: str, data: Iterable[Any] | None = None, wait: bool = True) -> Message | None: ... + def accept(self, timeout: float | None = None) -> Channel | None: ... def connect( self, - hostkey: PKey | None = ..., - username: str = ..., - password: str | None = ..., - pkey: PKey | None = ..., - gss_host: str | None = ..., - gss_auth: bool = ..., - gss_kex: bool = ..., - gss_deleg_creds: bool = ..., - gss_trust_dns: bool = ..., + hostkey: PKey | None = None, + username: str = "", + password: str | None = None, + pkey: PKey | None = None, + gss_host: str | None = None, + gss_auth: bool = False, + gss_kex: bool = False, + gss_deleg_creds: bool = True, + gss_trust_dns: bool = True, ) -> None: ... def get_exception(self) -> Exception | None: ... def set_subsystem_handler(self, name: str, handler: type[SubsystemHandler], *larg: Any, **kwarg: Any) -> None: ... @@ -147,11 +147,11 @@ class Transport(Thread, ClosingContextManager): def get_username(self) -> str | None: ... def get_banner(self) -> bytes | None: ... def auth_none(self, username: str) -> list[str]: ... - def auth_password(self, username: str, password: str, event: Event | None = ..., fallback: bool = ...) -> list[str]: ... - def auth_publickey(self, username: str, key: PKey, event: Event | None = ...) -> list[str]: ... - def auth_interactive(self, username: str, handler: _InteractiveCallback, submethods: str = ...) -> list[str]: ... + def auth_password(self, username: str, password: str, event: Event | None = None, fallback: bool = True) -> list[str]: ... + def auth_publickey(self, username: str, key: PKey, event: Event | None = None) -> list[str]: ... + def auth_interactive(self, username: str, handler: _InteractiveCallback, submethods: str = "") -> list[str]: ... def auth_interactive_dumb( - self, username: str, handler: _InteractiveCallback | None = ..., submethods: str = ... + self, username: str, handler: _InteractiveCallback | None = None, submethods: str = "" ) -> list[str]: ... def auth_gssapi_with_mic(self, username: str, gss_host: str, gss_deleg_creds: bool) -> list[str]: ... def auth_gssapi_keyex(self, username: str) -> list[str]: ... @@ -159,7 +159,7 @@ class Transport(Thread, ClosingContextManager): def get_log_channel(self) -> str: ... def set_hexdump(self, hexdump: bool) -> None: ... def get_hexdump(self) -> bool: ... - def use_compression(self, compress: bool = ...) -> None: ... + def use_compression(self, compress: bool = True) -> None: ... def getpeername(self) -> tuple[str, int]: ... def stop_thread(self) -> None: ... def run(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/util.pyi index 7f94a074f..f8cfecb21 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/util.pyi @@ -10,9 +10,9 @@ from paramiko.hostkeys import HostKeys class SupportsClose(Protocol): def close(self) -> None: ... -def inflate_long(s: bytes, always_positive: bool = ...) -> int: ... -def deflate_long(n: int, add_sign_padding: bool = ...) -> bytes: ... -def format_binary(data: bytes, prefix: str = ...) -> list[str]: ... +def inflate_long(s: bytes, always_positive: bool = False) -> int: ... +def deflate_long(n: int, add_sign_padding: bool = True) -> bytes: ... +def format_binary(data: bytes, prefix: str = "") -> list[str]: ... def format_binary_line(data: bytes) -> str: ... def safe_string(s: bytes) -> bytes: ... def bit_length(n: int) -> int: ... @@ -23,7 +23,7 @@ def parse_ssh_config(file_obj: IO[str]) -> SSHConfig: ... def lookup_ssh_host_config(hostname: str, config: SSHConfig) -> SSHConfigDict: ... def mod_inverse(x: int, m: int) -> int: ... def get_thread_id() -> int: ... -def log_to_file(filename: str, level: int = ...) -> None: ... +def log_to_file(filename: str, level: int = 10) -> None: ... class PFilter: def filter(self, record: LogRecord) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/exceptions.pyi index 9401ce5f8..10f2ca5c7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/exceptions.pyi @@ -7,7 +7,7 @@ class ParseError(StrAndRepr, Exception): text: str pos: int expr: Expression | None - def __init__(self, text: str, pos: int = ..., expr: Expression | None = ...) -> None: ... + def __init__(self, text: str, pos: int = -1, expr: Expression | None = None) -> None: ... def line(self) -> int: ... def column(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/expressions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/expressions.pyi index eef538916..a5445dd24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/expressions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/expressions.pyi @@ -23,17 +23,17 @@ IN_PROGRESS: object class Expression(StrAndRepr): name: str identity_tuple: tuple[str] - def __init__(self, name: str = ...) -> None: ... + def __init__(self, name: str = "") -> None: ... def resolve_refs(self, rule_map: Mapping[str, Expression]) -> Self: ... - def parse(self, text: str, pos: int = ...) -> Node: ... - def match(self, text: str, pos: int = ...) -> Node: ... + def parse(self, text: str, pos: int = 0) -> Node: ... + def match(self, text: str, pos: int = 0) -> Node: ... def match_core(self, text: str, pos: int, cache: Mapping[tuple[int, int], Node], error: ParseError) -> Node: ... def as_rule(self) -> str: ... class Literal(Expression): literal: str identity_tuple: tuple[str, str] # type: ignore[assignment] - def __init__(self, literal: str, name: str = ...) -> None: ... + def __init__(self, literal: str, name: str = "") -> None: ... class TokenMatcher(Literal): ... @@ -43,14 +43,14 @@ class Regex(Expression): def __init__( self, pattern: str, - name: str = ..., - ignore_case: bool = ..., - locale: bool = ..., - multiline: bool = ..., - dot_all: bool = ..., - unicode: bool = ..., - verbose: bool = ..., - ascii: bool = ..., + name: str = "", + ignore_case: bool = False, + locale: bool = False, + multiline: bool = False, + dot_all: bool = False, + unicode: bool = False, + verbose: bool = False, + ascii: bool = False, ) -> None: ... class Compound(Expression): @@ -62,15 +62,15 @@ class OneOf(Compound): ... class Lookahead(Compound): negativity: bool - def __init__(self, member: Expression, *, negative: bool = ..., **kwargs: Any) -> None: ... + def __init__(self, member: Expression, *, negative: bool = False, **kwargs: Any) -> None: ... def Not(term: Expression) -> Lookahead: ... class Quantifier(Compound): min: int max: float - def __init__(self, member: Expression, *, min: int = ..., max: float = ..., name: str = ..., **kwargs: Any) -> None: ... + def __init__(self, member: Expression, *, min: int = 0, max: float = ..., name: str = "", **kwargs: Any) -> None: ... -def ZeroOrMore(member: Expression, name: str = ...) -> Quantifier: ... -def OneOrMore(member: Expression, name: str = ..., min: int = ...) -> Quantifier: ... -def Optional(member: Expression, name: str = ...) -> Quantifier: ... +def ZeroOrMore(member: Expression, name: str = "") -> Quantifier: ... +def OneOrMore(member: Expression, name: str = "", min: int = 1) -> Quantifier: ... +def Optional(member: Expression, name: str = "") -> Quantifier: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/grammar.pyi b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/grammar.pyi index 84855da64..76e17e230 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/grammar.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/grammar.pyi @@ -9,10 +9,10 @@ from parsimonious.nodes import Node, NodeVisitor class Grammar(OrderedDict[str, Expression]): default_rule: Expression | Incomplete - def __init__(self, rules: str = ..., **more_rules: Expression | _CALLABLE_TYPE) -> None: ... + def __init__(self, rules: str = "", **more_rules: Expression | _CALLABLE_TYPE) -> None: ... def default(self, rule_name: str) -> Grammar: ... - def parse(self, text: str, pos: int = ...) -> Node: ... - def match(self, text: str, pos: int = ...) -> Node: ... + def parse(self, text: str, pos: int = 0) -> Node: ... + def match(self, text: str, pos: int = 0) -> Node: ... class TokenGrammar(Grammar): ... class BootstrappingGrammar(Grammar): ... @@ -29,7 +29,7 @@ class RuleVisitor(NodeVisitor[tuple[OrderedDict[str, Expression], Expression | N visit_term: Callable[[RuleVisitor, Node, collections.abc.Sequence[Any]], Any] visit_atom: Callable[[RuleVisitor, Node, collections.abc.Sequence[Any]], Any] custom_rules: dict[str, Expression] - def __init__(self, custom_rules: Mapping[str, Expression] | None = ...) -> None: ... + def __init__(self, custom_rules: Mapping[str, Expression] | None = None) -> None: ... def visit_parenthesized(self, node: Node, parenthesized: collections.abc.Sequence[Any]) -> Expression: ... def visit_quantifier(self, node: Node, quantifier: collections.abc.Sequence[Any]) -> Node: ... def visit_quantified(self, node: Node, quantified: collections.abc.Sequence[Any]) -> Expression: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/nodes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/nodes.pyi index 309a28cb1..ddbdb2a10 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/nodes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/parsimonious/nodes.pyi @@ -13,14 +13,16 @@ class Node: start: int end: int children: Sequence[Node] - def __init__(self, expr: Expression, full_text: str, start: int, end: int, children: Sequence[Node] | None = ...) -> None: ... + def __init__( + self, expr: Expression, full_text: str, start: int, end: int, children: Sequence[Node] | None = None + ) -> None: ... @property def expr_name(self) -> str: ... def __iter__(self) -> Iterator[Node]: ... @property def text(self) -> str: ... - def prettily(self, error: Node | None = ...) -> str: ... - def __repr__(self, top_level: bool = ...) -> str: ... + def prettily(self, error: Node | None = None) -> str: ... + def __repr__(self, top_level: bool = True) -> str: ... class RegexNode(Node): match: Match[str] @@ -35,8 +37,8 @@ class NodeVisitor(Generic[_VisitResultT], metaclass=RuleDecoratorMeta): unwrapped_exceptions: tuple[type[BaseException], ...] def visit(self, node: Node) -> _VisitResultT: ... def generic_visit(self, node: Node, visited_children: Sequence[Any]) -> Incomplete: ... - def parse(self, text: str, pos: int = ...) -> _VisitResultT: ... - def match(self, text: str, pos: int = ...) -> _VisitResultT: ... + def parse(self, text: str, pos: int = 0) -> _VisitResultT: ... + def match(self, text: str, pos: int = 0) -> _VisitResultT: ... def lift_child(self, node: Node, children: Sequence[_ChildT]) -> _ChildT: ... _CallableT = TypeVar("_CallableT", bound=Callable[..., Any]) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/apache.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/apache.pyi index fcb0a458e..4d261bd13 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/apache.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/apache.pyi @@ -11,12 +11,12 @@ class _CommonFile: def from_path(cls, path, **kwds): ... def __init__( self, - path: Incomplete | None = ..., - new: bool = ..., - autoload: bool = ..., - autosave: bool = ..., - encoding: str = ..., - return_unicode=..., + path: Incomplete | None = None, + new: bool = False, + autoload: bool = True, + autosave: bool = False, + encoding: str = "utf-8", + return_unicode=True, ) -> None: ... @property def path(self): ... @@ -25,14 +25,14 @@ class _CommonFile: @property def mtime(self): ... def load_if_changed(self): ... - def load(self, path: Incomplete | None = ..., force: bool = ...): ... + def load(self, path: Incomplete | None = None, force: bool = True): ... def load_string(self, data) -> None: ... - def save(self, path: Incomplete | None = ...) -> None: ... + def save(self, path: Incomplete | None = None) -> None: ... def to_string(self): ... class HtpasswdFile(_CommonFile): context: Any - def __init__(self, path: Incomplete | None = ..., default_scheme: Incomplete | None = ..., context=..., **kwds) -> None: ... + def __init__(self, path: Incomplete | None = None, default_scheme: Incomplete | None = None, context=..., **kwds) -> None: ... def users(self): ... def set_password(self, user, password): ... def update(self, user, password): ... @@ -45,15 +45,15 @@ class HtpasswdFile(_CommonFile): class HtdigestFile(_CommonFile): default_realm: Any - def __init__(self, path: Incomplete | None = ..., default_realm: Incomplete | None = ..., **kwds) -> None: ... + def __init__(self, path: Incomplete | None = None, default_realm: Incomplete | None = None, **kwds) -> None: ... def realms(self): ... - def users(self, realm: Incomplete | None = ...): ... - def set_password(self, user, realm: Incomplete | None = ..., password=...): ... + def users(self, realm: Incomplete | None = None): ... + def set_password(self, user, realm: Incomplete | None = None, password=...): ... def update(self, user, realm, password): ... - def get_hash(self, user, realm: Incomplete | None = ...): ... - def set_hash(self, user, realm: Incomplete | None = ..., hash=...): ... + def get_hash(self, user, realm: Incomplete | None = None): ... + def set_hash(self, user, realm: Incomplete | None = None, hash=...): ... def find(self, user, realm): ... - def delete(self, user, realm: Incomplete | None = ...): ... + def delete(self, user, realm: Incomplete | None = None): ... def delete_realm(self, realm): ... - def check_password(self, user, realm: Incomplete | None = ..., password=...): ... + def check_password(self, user, realm: Incomplete | None = None, password=...): ... def verify(self, user, realm, password): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/context.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/context.pyi index f2c511a36..cf853f4f0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/context.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/context.pyi @@ -4,53 +4,55 @@ from typing_extensions import Self class CryptPolicy: @classmethod - def from_path(cls, path, section: str = ..., encoding: str = ...): ... + def from_path(cls, path, section: str = "passlib", encoding: str = "utf-8"): ... @classmethod - def from_string(cls, source, section: str = ..., encoding: str = ...): ... + def from_string(cls, source, section: str = "passlib", encoding: str = "utf-8"): ... @classmethod - def from_source(cls, source, _warn: bool = ...): ... + def from_source(cls, source, _warn: bool = True): ... @classmethod - def from_sources(cls, sources, _warn: bool = ...): ... + def from_sources(cls, sources, _warn: bool = True): ... def replace(self, *args, **kwds): ... def __init__(self, *args, **kwds) -> None: ... def has_schemes(self): ... def iter_handlers(self): ... - def schemes(self, resolve: bool = ...): ... - def get_handler(self, name: Incomplete | None = ..., category: Incomplete | None = ..., required: bool = ...): ... - def get_min_verify_time(self, category: Incomplete | None = ...): ... - def get_options(self, name, category: Incomplete | None = ...): ... - def handler_is_deprecated(self, name, category: Incomplete | None = ...): ... - def iter_config(self, ini: bool = ..., resolve: bool = ...): ... - def to_dict(self, resolve: bool = ...): ... - def to_file(self, stream, section: str = ...) -> None: ... - def to_string(self, section: str = ..., encoding: Incomplete | None = ...): ... + def schemes(self, resolve: bool = False): ... + def get_handler(self, name: Incomplete | None = None, category: Incomplete | None = None, required: bool = False): ... + def get_min_verify_time(self, category: Incomplete | None = None): ... + def get_options(self, name, category: Incomplete | None = None): ... + def handler_is_deprecated(self, name, category: Incomplete | None = None): ... + def iter_config(self, ini: bool = False, resolve: bool = False): ... + def to_dict(self, resolve: bool = False): ... + def to_file(self, stream, section: str = "passlib") -> None: ... + def to_string(self, section: str = "passlib", encoding: Incomplete | None = None): ... class CryptContext: @classmethod - def from_string(cls, source: str | bytes, section: str = ..., encoding: str = ...) -> Self: ... + def from_string(cls, source: str | bytes, section: str = "passlib", encoding: str = "utf-8") -> Self: ... @classmethod - def from_path(cls, path: StrOrBytesPath, section: str = ..., encoding: str = ...) -> Self: ... + def from_path(cls, path: StrOrBytesPath, section: str = "passlib", encoding: str = "utf-8") -> Self: ... def copy(self, **kwds: Any) -> CryptContext: ... def using(self, **kwds: Any) -> CryptContext: ... def replace(self, **kwds): ... - def __init__(self, schemes: Incomplete | None = ..., policy=..., _autoload: bool = ..., **kwds) -> None: ... + def __init__(self, schemes: Incomplete | None = None, policy=..., _autoload: bool = True, **kwds) -> None: ... policy: CryptPolicy - def load_path(self, path: StrOrBytesPath, update: bool = ..., section: str = ..., encoding: str = ...) -> None: ... + def load_path( + self, path: StrOrBytesPath, update: bool = False, section: str = "passlib", encoding: str = "utf-8" + ) -> None: ... def load( self, source: str | bytes | SupportsItems[str, Any] | CryptContext, - update: bool = ..., - section: str = ..., - encoding: str = ..., + update: bool = False, + section: str = "passlib", + encoding: str = "utf-8", ) -> None: ... def update(self, *args: Any, **kwds: Any) -> None: ... - def schemes(self, resolve: bool = ..., category: Incomplete | None = ..., unconfigured: bool = ...): ... - def default_scheme(self, category: Incomplete | None = ..., resolve: bool = ..., unconfigured: bool = ...): ... - def handler(self, scheme: Incomplete | None = ..., category: Incomplete | None = ..., unconfigured: bool = ...): ... + def schemes(self, resolve: bool = False, category: Incomplete | None = None, unconfigured: bool = False): ... + def default_scheme(self, category: Incomplete | None = None, resolve: bool = False, unconfigured: bool = False): ... + def handler(self, scheme: Incomplete | None = None, category: Incomplete | None = None, unconfigured: bool = False): ... @property def context_kwds(self): ... - def to_dict(self, resolve: bool = ...) -> dict[str, Any]: ... - def to_string(self, section: str = ...) -> str: ... + def to_dict(self, resolve: bool = False) -> dict[str, Any]: ... + def to_string(self, section: str = "passlib") -> str: ... mvt_estimate_max_samples: int mvt_estimate_min_samples: int mvt_estimate_max_time: int @@ -59,27 +61,27 @@ class CryptContext: min_verify_time: int def reset_min_verify_time(self) -> None: ... def needs_update( - self, hash: str | bytes, scheme: str | None = ..., category: str | None = ..., secret: str | bytes | None = ... + self, hash: str | bytes, scheme: str | None = None, category: str | None = None, secret: str | bytes | None = None ) -> bool: ... - def hash_needs_update(self, hash, scheme: Incomplete | None = ..., category: Incomplete | None = ...): ... - def genconfig(self, scheme: Incomplete | None = ..., category: Incomplete | None = ..., **settings): ... - def genhash(self, secret, config, scheme: Incomplete | None = ..., category: Incomplete | None = ..., **kwds): ... + def hash_needs_update(self, hash, scheme: Incomplete | None = None, category: Incomplete | None = None): ... + def genconfig(self, scheme: Incomplete | None = None, category: Incomplete | None = None, **settings): ... + def genhash(self, secret, config, scheme: Incomplete | None = None, category: Incomplete | None = None, **kwds): ... def identify( - self, hash, category: Incomplete | None = ..., resolve: bool = ..., required: bool = ..., unconfigured: bool = ... + self, hash, category: Incomplete | None = None, resolve: bool = False, required: bool = False, unconfigured: bool = False ): ... - def hash(self, secret: str | bytes, scheme: str | None = ..., category: str | None = ..., **kwds: Any) -> str: ... + def hash(self, secret: str | bytes, scheme: str | None = None, category: str | None = None, **kwds: Any) -> str: ... def encrypt(self, *args, **kwds): ... def verify( - self, secret: str | bytes, hash: str | bytes | None, scheme: str | None = ..., category: str | None = ..., **kwds: Any + self, secret: str | bytes, hash: str | bytes | None, scheme: str | None = None, category: str | None = None, **kwds: Any ) -> bool: ... def verify_and_update( - self, secret: str | bytes, hash: str | bytes | None, scheme: str | None = ..., category: str | None = ..., **kwds: Any + self, secret: str | bytes, hash: str | bytes | None, scheme: str | None = None, category: str | None = None, **kwds: Any ) -> tuple[bool, str | None]: ... - def dummy_verify(self, elapsed: int = ...): ... + def dummy_verify(self, elapsed: int = 0): ... def is_enabled(self, hash: str | bytes) -> bool: ... - def disable(self, hash: str | bytes | None = ...) -> str: ... + def disable(self, hash: str | bytes | None = None) -> str: ... def enable(self, hash: str | bytes) -> str: ... class LazyCryptContext(CryptContext): - def __init__(self, schemes: Incomplete | None = ..., **kwds) -> None: ... + def __init__(self, schemes: Incomplete | None = None, **kwds) -> None: ... def __getattribute__(self, attr: str) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_blowfish/_gen_files.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_blowfish/_gen_files.pyi index fe0d7886c..8913fb4e4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_blowfish/_gen_files.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_blowfish/_gen_files.pyi @@ -5,7 +5,7 @@ def indent_block(block, padding): ... BFSTR: Any -def render_encipher(write, indent: int = ...) -> None: ... -def write_encipher_function(write, indent: int = ...) -> None: ... -def write_expand_function(write, indent: int = ...) -> None: ... +def render_encipher(write, indent: int = 0) -> None: ... +def write_encipher_function(write, indent: int = 0) -> None: ... +def write_expand_function(write, indent: int = 0) -> None: ... def main() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_blowfish/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_blowfish/base.pyi index 8ad01d75b..abdeed216 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_blowfish/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_blowfish/base.pyi @@ -5,7 +5,7 @@ class BlowfishEngine: S: Any def __init__(self) -> None: ... @staticmethod - def key_to_words(data, size: int = ...): ... + def key_to_words(data, size: int = 18): ... def encipher(self, l, r): ... def expand(self, key_words) -> None: ... def eks_salted_expand(self, key_words, salt_words) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_md4.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_md4.pyi index 0a21a688f..2175a2060 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_md4.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/_md4.pyi @@ -5,7 +5,7 @@ class md4: digest_size: int digestsize: int block_size: int - def __init__(self, content: Incomplete | None = ...) -> None: ... + def __init__(self, content: Incomplete | None = None) -> None: ... def update(self, content) -> None: ... def copy(self): ... def digest(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/des.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/des.pyi index 4d342d8eb..a71e9fe82 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/des.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/des.pyi @@ -1,5 +1,5 @@ __all__ = ["expand_des_key", "des_encrypt_block"] def expand_des_key(key): ... -def des_encrypt_block(key, input, salt: int = ..., rounds: int = ...): ... -def des_encrypt_int_block(key, input, salt: int = ..., rounds: int = ...): ... +def des_encrypt_block(key, input, salt: int = 0, rounds: int = 1): ... +def des_encrypt_int_block(key, input, salt: int = 0, rounds: int = 1): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/digest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/digest.pyi index fcc8070d1..15eec301b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/digest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/digest.pyi @@ -3,8 +3,8 @@ from typing import Any from passlib.utils import SequenceMixin -def lookup_hash(digest, return_unknown: bool = ..., required: bool = ...): ... -def norm_hash_name(name, format: str = ...): ... +def lookup_hash(digest, return_unknown: bool = False, required: bool = True): ... +def norm_hash_name(name, format: str = "hashlib"): ... class HashInfo(SequenceMixin): name: Any @@ -15,7 +15,7 @@ class HashInfo(SequenceMixin): block_size: Any error_text: Any unknown: bool - def __init__(self, const, names, required: bool = ...) -> None: ... + def __init__(self, const, names, required: bool = True) -> None: ... @property def supported(self): ... @property @@ -23,6 +23,6 @@ class HashInfo(SequenceMixin): @property def supported_by_hashlib_pbkdf2(self): ... -def compile_hmac(digest, key, multipart: bool = ...): ... -def pbkdf1(digest, secret, salt, rounds, keylen: Incomplete | None = ...): ... -def pbkdf2_hmac(digest, secret, salt, rounds, keylen: Incomplete | None = ...): ... +def compile_hmac(digest, key, multipart: bool = False): ... +def pbkdf1(digest, secret, salt, rounds, keylen: Incomplete | None = None): ... +def pbkdf2_hmac(digest, secret, salt, rounds, keylen: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/scrypt/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/scrypt/__init__.pyi index 88c74fe4a..913e9428b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/scrypt/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/crypto/scrypt/__init__.pyi @@ -1,2 +1,2 @@ def validate(n, r, p): ... -def scrypt(secret, salt, n, r, p: int = ..., keylen: int = ...): ... +def scrypt(secret, salt, n, r, p: int = 1, keylen: int = 32): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/exc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/exc.pyi index d7664ec1e..945a3ce04 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/exc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/exc.pyi @@ -12,15 +12,15 @@ class PasswordValueError(ValueError): ... class PasswordSizeError(PasswordValueError): max_size: Any - def __init__(self, max_size, msg: Incomplete | None = ...) -> None: ... + def __init__(self, max_size, msg: Incomplete | None = None) -> None: ... class PasswordTruncateError(PasswordSizeError): - def __init__(self, cls, msg: Incomplete | None = ...) -> None: ... + def __init__(self, cls, msg: Incomplete | None = None) -> None: ... class PasslibSecurityError(RuntimeError): ... class TokenError(ValueError): - def __init__(self, msg: Incomplete | None = ..., *args, **kwds) -> None: ... + def __init__(self, msg: Incomplete | None = None, *args, **kwds) -> None: ... class MalformedTokenError(TokenError): ... class InvalidTokenError(TokenError): ... @@ -32,7 +32,7 @@ class UsedTokenError(TokenError): class UnknownHashError(ValueError): value: Any message: Any - def __init__(self, message: Incomplete | None = ..., value: Incomplete | None = ...) -> None: ... + def __init__(self, message: Incomplete | None = None, value: Incomplete | None = None) -> None: ... class PasslibWarning(UserWarning): ... class PasslibConfigWarning(PasslibWarning): ... @@ -43,14 +43,14 @@ class PasslibSecurityWarning(PasslibWarning): ... def type_name(value): ... def ExpectedTypeError(value, expected, param): ... def ExpectedStringError(value, param): ... -def MissingDigestError(handler: Incomplete | None = ...): ... -def NullPasswordError(handler: Incomplete | None = ...): ... -def InvalidHashError(handler: Incomplete | None = ...): ... -def MalformedHashError(handler: Incomplete | None = ..., reason: Incomplete | None = ...): ... -def ZeroPaddedRoundsError(handler: Incomplete | None = ...): ... -def ChecksumSizeError(handler, raw: bool = ...): ... +def MissingDigestError(handler: Incomplete | None = None): ... +def NullPasswordError(handler: Incomplete | None = None): ... +def InvalidHashError(handler: Incomplete | None = None): ... +def MalformedHashError(handler: Incomplete | None = None, reason: Incomplete | None = None): ... +def ZeroPaddedRoundsError(handler: Incomplete | None = None): ... +def ChecksumSizeError(handler, raw: bool = False): ... ENABLE_DEBUG_ONLY_REPR: bool -def debug_only_repr(value, param: str = ...): ... -def CryptBackendError(handler, config, hash, source: str = ...) -> None: ... +def debug_only_repr(value, param: str = "hash"): ... +def CryptBackendError(handler, config, hash, source: str = "crypt.crypt()") -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/ext/django/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/ext/django/utils.pyi index e032611a9..aa67154af 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/ext/django/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/ext/django/utils.pyi @@ -15,13 +15,13 @@ def get_preset_config(name): ... class DjangoTranslator: context: Any - def __init__(self, context: Incomplete | None = ..., **kwds) -> None: ... + def __init__(self, context: Incomplete | None = None, **kwds) -> None: ... def reset_hashers(self) -> None: ... def passlib_to_django_name(self, passlib_name): ... - def passlib_to_django(self, passlib_hasher, cached: bool = ...): ... + def passlib_to_django(self, passlib_hasher, cached: bool = True): ... def django_to_passlib_name(self, django_name): ... - def django_to_passlib(self, django_name, cached: bool = ...): ... - def resolve_django_hasher(self, django_name, cached: bool = ...): ... + def django_to_passlib(self, django_name, cached: bool = True): ... + def resolve_django_hasher(self, django_name, cached: bool = True): ... class DjangoContextAdapter(DjangoTranslator): context: Any @@ -29,13 +29,13 @@ class DjangoContextAdapter(DjangoTranslator): enabled: bool patched: bool log: Any - def __init__(self, context: Incomplete | None = ..., get_user_category: Incomplete | None = ..., **kwds) -> None: ... + def __init__(self, context: Incomplete | None = None, get_user_category: Incomplete | None = None, **kwds) -> None: ... def reset_hashers(self) -> None: ... def get_hashers(self): ... - def get_hasher(self, algorithm: str = ...): ... + def get_hasher(self, algorithm: str = "default"): ... def identify_hasher(self, encoded): ... - def make_password(self, password, salt: Incomplete | None = ..., hasher: str = ...): ... - def check_password(self, password, encoded, setter: Incomplete | None = ..., preferred: str = ...): ... + def make_password(self, password, salt: Incomplete | None = None, hasher: str = "default"): ... + def check_password(self, password, encoded, setter: Incomplete | None = None, preferred: str = "default"): ... def user_check_password(self, user, password): ... def user_set_password(self, user, password) -> None: ... def get_user_category(self, user): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/argon2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/argon2.pyi index 5624b27d5..e7cd6228a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/argon2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/argon2.pyi @@ -39,14 +39,14 @@ class _Argon2Common( # type: ignore[misc] @classmethod def using( # type: ignore[override] cls, - type: Incomplete | None = ..., - memory_cost: Incomplete | None = ..., - salt_len: Incomplete | None = ..., - time_cost: Incomplete | None = ..., - digest_size: Incomplete | None = ..., - checksum_size: Incomplete | None = ..., - hash_len: Incomplete | None = ..., - max_threads: Incomplete | None = ..., + type: Incomplete | None = None, + memory_cost: Incomplete | None = None, + salt_len: Incomplete | None = None, + time_cost: Incomplete | None = None, + digest_size: Incomplete | None = None, + checksum_size: Incomplete | None = None, + hash_len: Incomplete | None = None, + max_threads: Incomplete | None = None, **kwds, ): ... @classmethod @@ -55,11 +55,11 @@ class _Argon2Common( # type: ignore[misc] def from_string(cls, hash): ... def __init__( self, - type: Incomplete | None = ..., - type_d: bool = ..., - version: Incomplete | None = ..., - memory_cost: Incomplete | None = ..., - data: Incomplete | None = ..., + type: Incomplete | None = None, + type_d: bool = False, + version: Incomplete | None = None, + memory_cost: Incomplete | None = None, + data: Incomplete | None = None, **kwds, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/bcrypt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/bcrypt.pyi index 426f1472d..278b137a3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/bcrypt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/bcrypt.pyi @@ -46,10 +46,10 @@ class bcrypt_sha256(_wrapped_bcrypt): default_ident: ClassVar[str] version: ClassVar[int] @classmethod - def using(cls, version: Incomplete | None = ..., **kwds): ... # type: ignore[override] + def using(cls, version: Incomplete | None = None, **kwds): ... # type: ignore[override] prefix: Any @classmethod def identify(cls, hash): ... @classmethod def from_string(cls, hash): ... - def __init__(self, version: Incomplete | None = ..., **kwds) -> None: ... + def __init__(self, version: Incomplete | None = None, **kwds) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/cisco.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/cisco.pyi index 2820a67fa..1d05ce2fb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/cisco.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/cisco.pyi @@ -18,10 +18,10 @@ class cisco_type7(uh.GenericHandler): min_salt_value: ClassVar[int] max_salt_value: ClassVar[int] @classmethod - def using(cls, salt: int | None = ..., **kwds): ... # type: ignore[override] + def using(cls, salt: int | None = None, **kwds): ... # type: ignore[override] @classmethod def from_string(cls, hash): ... salt: int - def __init__(self, salt: int | None = ..., **kwds) -> None: ... + def __init__(self, salt: int | None = None, **kwds) -> None: ... @classmethod - def decode(cls, hash, encoding: str = ...): ... + def decode(cls, hash, encoding: str = "utf-8"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/digests.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/digests.pyi index c97bdb47e..389d0328c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/digests.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/digests.pyi @@ -7,7 +7,7 @@ class HexDigestHash(uh.StaticHandler): checksum_chars: ClassVar[str] supported: ClassVar[bool] -def create_hex_hash(digest, module=..., django_name: Incomplete | None = ..., required: bool = ...): ... +def create_hex_hash(digest, module="passlib.handlers.digests", django_name: Incomplete | None = None, required: bool = True): ... hex_md4: Any hex_md5: Any @@ -21,12 +21,12 @@ class htdigest(uh.MinimalHandler): setting_kwds: ClassVar[tuple[str, ...]] context_kwds: ClassVar[tuple[str, ...]] @classmethod - def hash(cls, secret, user, realm, encoding: Incomplete | None = ...): ... # type: ignore[override] + def hash(cls, secret, user, realm, encoding: Incomplete | None = None): ... # type: ignore[override] @classmethod - def verify(cls, secret, hash, user, realm, encoding: str = ...): ... # type: ignore[override] + def verify(cls, secret, hash, user, realm, encoding: str = "utf-8"): ... # type: ignore[override] @classmethod def identify(cls, hash): ... @classmethod def genconfig(cls): ... @classmethod - def genhash(cls, secret, config, user, realm, encoding: Incomplete | None = ...): ... # type: ignore[override] + def genhash(cls, secret, config, user, realm, encoding: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/fshp.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/fshp.pyi index 373a44a7b..8a6fe9ecf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/fshp.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/fshp.pyi @@ -14,10 +14,10 @@ class fshp(uh.HasRounds, uh.HasRawSalt, uh.HasRawChecksum, uh.GenericHandler): rounds_cost: ClassVar[str] default_variant: ClassVar[int] @classmethod - def using(cls, variant: int | str | bytes | None = ..., **kwds): ... # type: ignore[override] + def using(cls, variant: int | str | bytes | None = None, **kwds): ... # type: ignore[override] variant: int | None use_defaults: Any - def __init__(self, variant: int | str | bytes | None = ..., **kwds) -> None: ... + def __init__(self, variant: int | str | bytes | None = None, **kwds) -> None: ... @property def checksum_alg(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/misc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/misc.pyi index 3c68095bc..822ae77b3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/misc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/misc.pyi @@ -9,9 +9,9 @@ class unix_fallback(DisabledHash, uh.StaticHandler): @classmethod def identify(cls, hash: str | bytes) -> bool: ... enable_wildcard: Any - def __init__(self, enable_wildcard: bool = ..., **kwds) -> None: ... + def __init__(self, enable_wildcard: bool = False, **kwds) -> None: ... @classmethod - def verify(cls, secret: str | bytes, hash: str | bytes, enable_wildcard: bool = ...): ... # type: ignore[override] + def verify(cls, secret: str | bytes, hash: str | bytes, enable_wildcard: bool = False): ... # type: ignore[override] class unix_disabled(DisabledHash, uh.MinimalHandler): name: ClassVar[str] @@ -19,7 +19,7 @@ class unix_disabled(DisabledHash, uh.MinimalHandler): setting_kwds: ClassVar[tuple[str, ...]] context_kwds: ClassVar[tuple[str, ...]] @classmethod - def using(cls, marker: Incomplete | None = ..., **kwds): ... # type: ignore[override] + def using(cls, marker: Incomplete | None = None, **kwds): ... # type: ignore[override] @classmethod def identify(cls, hash: str | bytes) -> bool: ... @classmethod @@ -27,9 +27,9 @@ class unix_disabled(DisabledHash, uh.MinimalHandler): @classmethod def hash(cls, secret: str | bytes, **kwds) -> str: ... @classmethod - def genhash(cls, secret: str | bytes, config, marker: Incomplete | None = ...): ... # type: ignore[override] + def genhash(cls, secret: str | bytes, config, marker: Incomplete | None = None): ... # type: ignore[override] @classmethod - def disable(cls, hash: str | bytes | None = ...) -> str: ... + def disable(cls, hash: str | bytes | None = None) -> str: ... @classmethod def enable(cls, hash: str | bytes) -> str: ... @@ -41,10 +41,10 @@ class plaintext(uh.MinimalHandler): @classmethod def identify(cls, hash: str | bytes): ... @classmethod - def hash(cls, secret: str | bytes, encoding: Incomplete | None = ...): ... # type: ignore[override] + def hash(cls, secret: str | bytes, encoding: Incomplete | None = None): ... # type: ignore[override] @classmethod - def verify(cls, secret: str | bytes, hash: str | bytes, encoding: str | None = ...): ... # type: ignore[override] + def verify(cls, secret: str | bytes, hash: str | bytes, encoding: str | None = None): ... # type: ignore[override] @classmethod def genconfig(cls): ... @classmethod - def genhash(cls, secret, config, encoding: str | None = ...): ... # type: ignore[override] + def genhash(cls, secret, config, encoding: str | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/scram.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/scram.pyi index 80e4586c5..36a4377bd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/scram.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/scram.pyi @@ -17,13 +17,13 @@ class scram(uh.HasRounds, uh.HasRawSalt, uh.HasRawChecksum, uh.GenericHandler): @classmethod def extract_digest_info(cls, hash, alg): ... @classmethod - def extract_digest_algs(cls, hash, format: str = ...): ... + def extract_digest_algs(cls, hash, format: str = "iana"): ... @classmethod def derive_digest(cls, password, salt, rounds, alg): ... @classmethod def from_string(cls, hash): ... @classmethod - def using(cls, default_algs: Incomplete | None = ..., algs: Incomplete | None = ..., **kwds): ... # type: ignore[override] - def __init__(self, algs: Incomplete | None = ..., **kwds) -> None: ... + def using(cls, default_algs: Incomplete | None = None, algs: Incomplete | None = None, **kwds): ... # type: ignore[override] + def __init__(self, algs: Incomplete | None = None, **kwds) -> None: ... @classmethod - def verify(cls, secret, hash, full: bool = ...): ... # type: ignore[override] + def verify(cls, secret, hash, full: bool = False): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/scrypt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/scrypt.pyi index 1f8ffda19..52285c931 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/scrypt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/scrypt.pyi @@ -18,16 +18,16 @@ class scrypt(uh.ParallelismMixin, uh.HasRounds, uh.HasRawSalt, uh.HasRawChecksum parallelism: int block_size: int @classmethod - def using(cls, block_size: Incomplete | None = ..., **kwds): ... # type: ignore[override] + def using(cls, block_size: Incomplete | None = None, **kwds): ... # type: ignore[override] @classmethod def from_string(cls, hash): ... @classmethod def parse(cls, hash): ... def to_string(self): ... - def __init__(self, block_size: Incomplete | None = ..., **kwds) -> None: ... + def __init__(self, block_size: Incomplete | None = None, **kwds) -> None: ... @classmethod def get_backend(cls): ... @classmethod - def has_backend(cls, name: str = ...): ... + def has_backend(cls, name: str = "any"): ... @classmethod - def set_backend(cls, name: str = ..., dryrun: bool = ...) -> None: ... + def set_backend(cls, name: str = "any", dryrun: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sha1_crypt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sha1_crypt.pyi index 14ea298da..dd4bdea86 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sha1_crypt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sha1_crypt.pyi @@ -19,5 +19,5 @@ class sha1_crypt(uh.HasManyBackends, uh.HasRounds, uh.HasSalt, uh.GenericHandler rounds_cost: ClassVar[str] @classmethod def from_string(cls, hash: str | bytes) -> Self: ... # type: ignore[override] - def to_string(self, config: bool = ...) -> str: ... + def to_string(self, config: bool = False) -> str: ... backends: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sha2_crypt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sha2_crypt.pyi index 82ba37af2..7ebaffb58 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sha2_crypt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sha2_crypt.pyi @@ -11,7 +11,7 @@ class _SHA2_Common(uh.HasManyBackends, uh.HasRounds, uh.HasSalt, uh.GenericHandl max_rounds: ClassVar[int] rounds_cost: ClassVar[str] implicit_rounds: bool - def __init__(self, implicit_rounds: bool | None = ..., **kwds) -> None: ... + def __init__(self, implicit_rounds: bool | None = None, **kwds) -> None: ... @classmethod def from_string(cls, hash: str | bytes) -> Self: ... # type: ignore[override] backends: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sun_md5_crypt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sun_md5_crypt.pyi index 43cb4a06c..c5b1a165a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sun_md5_crypt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/sun_md5_crypt.pyi @@ -16,9 +16,9 @@ class sun_md5_crypt(uh.HasRounds, uh.HasSalt, uh.GenericHandler): # type: ignor rounds_cost: ClassVar[str] ident_values: ClassVar[tuple[str, ...]] bare_salt: bool - def __init__(self, bare_salt: bool = ..., **kwds) -> None: ... + def __init__(self, bare_salt: bool = False, **kwds) -> None: ... @classmethod def identify(cls, hash): ... @classmethod def from_string(cls, hash: str | bytes) -> Self: ... # type: ignore[override] - def to_string(self, _withchk: bool = ...) -> str: ... + def to_string(self, _withchk: bool = True) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/windows.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/windows.pyi index cc5d6a642..28cbdf2c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/windows.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/handlers/windows.pyi @@ -9,7 +9,7 @@ class lmhash(uh.TruncateMixin, uh.HasEncodingContext, uh.StaticHandler): checksum_size: ClassVar[int] truncate_size: ClassVar[int] @classmethod - def raw(cls, secret, encoding: Incomplete | None = ...): ... + def raw(cls, secret, encoding: Incomplete | None = None): ... class nthash(uh.StaticHandler): name: ClassVar[str] @@ -18,7 +18,7 @@ class nthash(uh.StaticHandler): @classmethod def raw(cls, secret): ... @classmethod - def raw_nthash(cls, secret, hex: bool = ...): ... + def raw_nthash(cls, secret, hex: bool = False): ... bsd_nthash: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/ifc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/ifc.pyi index aec4570c8..64aa05755 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/ifc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/ifc.pyi @@ -17,9 +17,9 @@ class PasswordHash(metaclass=ABCMeta): def verify(cls, secret: str | bytes, hash: str | bytes, **context_kwds): ... @classmethod @abstractmethod - def using(cls, relaxed: bool = ..., **kwds: Any) -> type[Self]: ... + def using(cls, relaxed: bool = False, **kwds: Any) -> type[Self]: ... @classmethod - def needs_update(cls, hash: str, secret: str | bytes | None = ...) -> bool: ... + def needs_update(cls, hash: str, secret: str | bytes | None = None) -> bool: ... @classmethod @abstractmethod def identify(cls, hash: str | bytes) -> bool: ... @@ -32,6 +32,6 @@ class PasswordHash(metaclass=ABCMeta): class DisabledHash(PasswordHash, metaclass=ABCMeta): is_disabled: ClassVar[Literal[True]] @classmethod - def disable(cls, hash: str | None = ...) -> str: ... + def disable(cls, hash: str | None = None) -> str: ... @classmethod def enable(cls, hash: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/pwd.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/pwd.pyi index 42e01ae66..49ae560fa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/pwd.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/pwd.pyi @@ -11,14 +11,14 @@ class SequenceGenerator: @abstractmethod def symbol_count(self) -> int: ... def __init__( - self, entropy: Incomplete | None = ..., length: Incomplete | None = ..., rng: Incomplete | None = ..., **kwds + self, entropy: Incomplete | None = None, length: Incomplete | None = None, rng: Incomplete | None = None, **kwds ) -> None: ... @property def entropy_per_symbol(self) -> float: ... @property def entropy(self) -> float: ... def __next__(self) -> None: ... - def __call__(self, returns: Incomplete | None = ...): ... + def __call__(self, returns: Incomplete | None = None): ... def __iter__(self): ... default_charsets: Any @@ -26,12 +26,12 @@ default_charsets: Any class WordGenerator(SequenceGenerator): charset: str chars: Any - def __init__(self, chars: Incomplete | None = ..., charset: Incomplete | None = ..., **kwds) -> None: ... + def __init__(self, chars: Incomplete | None = None, charset: Incomplete | None = None, **kwds) -> None: ... @property def symbol_count(self): ... def __next__(self): ... -def genword(entropy: Incomplete | None = ..., length: Incomplete | None = ..., returns: Incomplete | None = ..., **kwds): ... +def genword(entropy: Incomplete | None = None, length: Incomplete | None = None, returns: Incomplete | None = None, **kwds): ... class WordsetDict(MutableMapping[Any, Any]): paths: Any @@ -51,10 +51,10 @@ class PhraseGenerator(SequenceGenerator): words: Any sep: str def __init__( - self, wordset: Incomplete | None = ..., words: Incomplete | None = ..., sep: Incomplete | None = ..., **kwds + self, wordset: Incomplete | None = None, words: Incomplete | None = None, sep: Incomplete | None = None, **kwds ) -> None: ... @property def symbol_count(self): ... def __next__(self): ... -def genphrase(entropy: Incomplete | None = ..., length: Incomplete | None = ..., returns: Incomplete | None = ..., **kwds): ... +def genphrase(entropy: Incomplete | None = None, length: Incomplete | None = None, returns: Incomplete | None = None, **kwds): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/registry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/registry.pyi index abfb25ef9..47ac49701 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/registry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/registry.pyi @@ -9,6 +9,6 @@ class _PasslibRegistryProxy: def __dir__(self): ... def register_crypt_handler_path(name, path) -> None: ... -def register_crypt_handler(handler, force: bool = ..., _attr: Incomplete | None = ...) -> None: ... +def register_crypt_handler(handler, force: bool = False, _attr: Incomplete | None = None) -> None: ... def get_crypt_handler(name, default=...): ... -def list_crypt_handlers(loaded_only: bool = ...): ... +def list_crypt_handlers(loaded_only: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/totp.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/totp.pyi index 7e5d23b67..2208bcded 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/totp.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/totp.pyi @@ -15,10 +15,10 @@ class AppWallet: default_tag: Any def __init__( self, - secrets: Incomplete | None = ..., - default_tag: Incomplete | None = ..., - encrypt_cost: Incomplete | None = ..., - secrets_path: Incomplete | None = ..., + secrets: Incomplete | None = None, + default_tag: Incomplete | None = None, + encrypt_cost: Incomplete | None = None, + secrets_path: Incomplete | None = None, ) -> None: ... @property def has_secrets(self): ... @@ -40,28 +40,28 @@ class TOTP: @classmethod def using( cls, - digits: Incomplete | None = ..., - alg: Incomplete | None = ..., - period: Incomplete | None = ..., - issuer: Incomplete | None = ..., - wallet: Incomplete | None = ..., - now: Incomplete | None = ..., + digits: Incomplete | None = None, + alg: Incomplete | None = None, + period: Incomplete | None = None, + issuer: Incomplete | None = None, + wallet: Incomplete | None = None, + now: Incomplete | None = None, **kwds, ): ... @classmethod def new(cls, **kwds): ... def __init__( self, - key: Incomplete | None = ..., - format: str = ..., - new: bool = ..., - digits: Incomplete | None = ..., - alg: Incomplete | None = ..., - size: Incomplete | None = ..., - period: Incomplete | None = ..., - label: Incomplete | None = ..., - issuer: Incomplete | None = ..., - changed: bool = ..., + key: Incomplete | None = None, + format: str = "base32", + new: bool = False, + digits: Incomplete | None = None, + alg: Incomplete | None = None, + size: Incomplete | None = None, + period: Incomplete | None = None, + label: Incomplete | None = None, + issuer: Incomplete | None = None, + changed: bool = False, **kwds, ) -> None: ... @property @@ -76,27 +76,27 @@ class TOTP: def hex_key(self): ... @property def base32_key(self): ... - def pretty_key(self, format: str = ..., sep: str = ...): ... + def pretty_key(self, format: str = "base32", sep: str = "-"): ... @classmethod def normalize_time(cls, time): ... def normalize_token(self_or_cls, token): ... - def generate(self, time: Incomplete | None = ...): ... + def generate(self, time: Incomplete | None = None): ... @classmethod def verify(cls, token, source, **kwds): ... def match( - self, token, time: Incomplete | None = ..., window: int = ..., skew: int = ..., last_counter: Incomplete | None = ... + self, token, time: Incomplete | None = None, window: int = 30, skew: int = 0, last_counter: Incomplete | None = None ): ... @classmethod def from_source(cls, source): ... @classmethod def from_uri(cls, uri): ... - def to_uri(self, label: Incomplete | None = ..., issuer: Incomplete | None = ...): ... + def to_uri(self, label: Incomplete | None = None, issuer: Incomplete | None = None): ... @classmethod def from_json(cls, source): ... - def to_json(self, encrypt: Incomplete | None = ...): ... + def to_json(self, encrypt: Incomplete | None = None): ... @classmethod def from_dict(cls, source): ... - def to_dict(self, encrypt: Incomplete | None = ...): ... + def to_dict(self, encrypt: Incomplete | None = None): ... class TotpToken(SequenceMixin): totp: Any @@ -117,7 +117,7 @@ class TotpMatch(SequenceMixin): counter: int time: int window: int - def __init__(self, totp, counter, time, window: int = ...) -> None: ... + def __init__(self, totp, counter, time, window: int = 30) -> None: ... @property def expected_counter(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/__init__.pyi index 5e8fd2181..05c444674 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/__init__.pyi @@ -48,14 +48,14 @@ class SequenceMixin: consteq = compare_digest def str_consteq(left, right): ... -def saslprep(source, param: str = ...): ... +def saslprep(source, param: str = "value"): ... def render_bytes(source, *args): ... def xor_bytes(left, right): ... def is_same_codec(left, right): ... def is_ascii_safe(source): ... -def to_bytes(source, encoding: str = ..., param: str = ..., source_encoding: Incomplete | None = ...): ... -def to_unicode(source, encoding: str = ..., param: str = ...): ... -def to_native_str(source, encoding: str = ..., param: str = ...): ... +def to_bytes(source, encoding: str = "utf-8", param: str = "value", source_encoding: Incomplete | None = None): ... +def to_unicode(source, encoding: str = "utf-8", param: str = "value"): ... +def to_native_str(source, encoding: str = "utf-8", param: str = "value"): ... has_crypt: bool @@ -68,7 +68,7 @@ rng: Any def getrandbytes(rng, count) -> Generator[None, None, Any]: ... def getrandstr(rng, charset, count) -> Generator[None, None, Any]: ... -def generate_password(size: int = ..., charset=...): ... +def generate_password(size: int = 10, charset=...): ... def is_crypt_handler(obj): ... def is_crypt_context(obj): ... def has_rounds_info(handler): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/binary.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/binary.pyi index 82928d5c3..c188e50e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/binary.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/binary.pyi @@ -11,7 +11,7 @@ UPPER_HEX_CHARS: Any LOWER_HEX_CHARS: Any ALL_BYTE_VALUES: Any -def compile_byte_translation(mapping, source: Incomplete | None = ...): ... +def compile_byte_translation(mapping, source: Incomplete | None = None): ... def b64s_encode(data): ... def b64s_decode(data): ... def ab64_encode(data): ... @@ -22,7 +22,7 @@ def b32decode(source): ... class Base64Engine: bytemap: Any big: Any - def __init__(self, charmap, big: bool = ...) -> None: ... + def __init__(self, charmap, big: bool = False) -> None: ... @property def charmap(self): ... def encode_bytes(self, source): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/decor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/decor.pyi index 4c7eda386..0087b9080 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/decor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/decor.pyi @@ -22,21 +22,21 @@ class memoized_property: def __init__(self, func) -> None: ... def __get__(self, obj, cls): ... def clear_cache(self, obj) -> None: ... - def peek_cache(self, obj, default: Incomplete | None = ...): ... + def peek_cache(self, obj, default: Incomplete | None = None): ... def deprecated_function( - msg: Incomplete | None = ..., - deprecated: Incomplete | None = ..., - removed: Incomplete | None = ..., - updoc: bool = ..., - replacement: Incomplete | None = ..., - _is_method: bool = ..., - func_module: Incomplete | None = ..., + msg: Incomplete | None = None, + deprecated: Incomplete | None = None, + removed: Incomplete | None = None, + updoc: bool = True, + replacement: Incomplete | None = None, + _is_method: bool = False, + func_module: Incomplete | None = None, ): ... def deprecated_method( - msg: Incomplete | None = ..., - deprecated: Incomplete | None = ..., - removed: Incomplete | None = ..., - updoc: bool = ..., - replacement: Incomplete | None = ..., + msg: Incomplete | None = None, + deprecated: Incomplete | None = None, + removed: Incomplete | None = None, + updoc: bool = True, + replacement: Incomplete | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/des.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/des.pyi index fe9982ff1..082fe8981 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/des.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/des.pyi @@ -5,4 +5,4 @@ from passlib.crypto.des import ( ) from passlib.utils.decor import deprecated_function as deprecated_function -def mdes_encrypt_int_block(key, input, salt: int = ..., rounds: int = ...): ... +def mdes_encrypt_int_block(key, input, salt: int = 0, rounds: int = 1): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/handlers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/handlers.pyi index 89ede12fd..1d7f21f54 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/handlers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/handlers.pyi @@ -12,22 +12,22 @@ PADDED_B64_CHARS = PADDED_BASE64_CHARS UC_HEX_CHARS = UPPER_HEX_CHARS LC_HEX_CHARS = LOWER_HEX_CHARS -def parse_mc2(hash, prefix, sep=..., handler: Incomplete | None = ...): ... +def parse_mc2(hash, prefix, sep="$", handler: Incomplete | None = None): ... def parse_mc3( - hash, prefix, sep=..., rounds_base: int = ..., default_rounds: Incomplete | None = ..., handler: Incomplete | None = ... + hash, prefix, sep="$", rounds_base: int = 10, default_rounds: Incomplete | None = None, handler: Incomplete | None = None ): ... -def render_mc2(ident, salt, checksum, sep=...): ... -def render_mc3(ident, rounds, salt, checksum, sep=..., rounds_base: int = ...): ... +def render_mc2(ident, salt, checksum, sep="$"): ... +def render_mc3(ident, rounds, salt, checksum, sep="$", rounds_base: int = 10): ... class MinimalHandler(PasswordHash, metaclass=abc.ABCMeta): @classmethod - def using(cls, relaxed: bool = ...) -> type[Self]: ... # type: ignore[override] + def using(cls, relaxed: bool = False) -> type[Self]: ... # type: ignore[override] class TruncateMixin(MinimalHandler, metaclass=abc.ABCMeta): truncate_error: ClassVar[bool] truncate_verify_reject: ClassVar[bool] @classmethod - def using(cls, truncate_error: object = ..., *, relaxed: bool = ...) -> type[Self]: ... # type: ignore[override] + def using(cls, truncate_error: object = None, *, relaxed: bool = ...) -> type[Self]: ... # type: ignore[override] class GenericHandler(MinimalHandler): setting_kwds: ClassVar[tuple[str, ...]] @@ -37,7 +37,7 @@ class GenericHandler(MinimalHandler): checksum_chars: ClassVar[str | None] checksum: str | None use_defaults: bool - def __init__(self, checksum: str | None = ..., use_defaults: bool = ...) -> None: ... + def __init__(self, checksum: str | None = None, use_defaults: bool = False) -> None: ... @classmethod def identify(cls, hash: str | bytes) -> bool: ... @classmethod @@ -52,9 +52,9 @@ class GenericHandler(MinimalHandler): @classmethod def genhash(cls, secret: str | bytes, config: str, **context: Any) -> str: ... @classmethod - def needs_update(cls, hash: str | bytes, secret: str | bytes | None = ..., **kwds: Any) -> bool: ... + def needs_update(cls, hash: str | bytes, secret: str | bytes | None = None, **kwds: Any) -> bool: ... @classmethod - def parsehash(cls, hash: str | bytes, checksum: bool = ..., sanitize: bool = ...) -> dict[str, Any]: ... + def parsehash(cls, hash: str | bytes, checksum: bool = True, sanitize: bool = False) -> dict[str, Any]: ... @classmethod def bitsize(cls, **kwds: Any) -> dict[str, Any]: ... @@ -64,17 +64,17 @@ class StaticHandler(GenericHandler): class HasEncodingContext(GenericHandler): default_encoding: ClassVar[str] encoding: str - def __init__(self, encoding: str | None = ..., **kwds) -> None: ... + def __init__(self, encoding: str | None = None, **kwds) -> None: ... class HasUserContext(GenericHandler): user: Incomplete | None - def __init__(self, user: Incomplete | None = ..., **kwds) -> None: ... + def __init__(self, user: Incomplete | None = None, **kwds) -> None: ... @classmethod - def hash(cls, secret, user: Incomplete | None = ..., **context): ... + def hash(cls, secret, user: Incomplete | None = None, **context): ... @classmethod - def verify(cls, secret, hash, user: Incomplete | None = ..., **context): ... + def verify(cls, secret, hash, user: Incomplete | None = None, **context): ... @classmethod - def genhash(cls, secret, config, user: Incomplete | None = ..., **context): ... + def genhash(cls, secret, config, user: Incomplete | None = None, **context): ... class HasRawChecksum(GenericHandler): ... @@ -84,8 +84,8 @@ class HasManyIdents(GenericHandler): ident_aliases: ClassVar[dict[str, str] | None] ident: str # type: ignore[misc] @classmethod - def using(cls, default_ident: Incomplete | None = ..., ident: Incomplete | None = ..., **kwds): ... # type: ignore[override] - def __init__(self, ident: Incomplete | None = ..., **kwds) -> None: ... + def using(cls, default_ident: Incomplete | None = None, ident: Incomplete | None = None, **kwds): ... # type: ignore[override] + def __init__(self, ident: Incomplete | None = None, **kwds) -> None: ... class HasSalt(GenericHandler): min_salt_size: ClassVar[int] @@ -95,10 +95,10 @@ class HasSalt(GenericHandler): default_salt_chars: ClassVar[str | None] salt: str | bytes | None @classmethod - def using(cls, default_salt_size: int | None = ..., salt_size: int | None = ..., salt: str | bytes | None = ..., **kwds): ... # type: ignore[override] - def __init__(self, salt: str | bytes | None = ..., **kwds) -> None: ... + def using(cls, default_salt_size: int | None = None, salt_size: int | None = None, salt: str | bytes | None = None, **kwds): ... # type: ignore[override] + def __init__(self, salt: str | bytes | None = None, **kwds) -> None: ... @classmethod - def bitsize(cls, salt_size: int | None = ..., **kwds): ... + def bitsize(cls, salt_size: int | None = None, **kwds): ... class HasRawSalt(HasSalt): salt_chars: ClassVar[bytes] # type: ignore[assignment] @@ -116,33 +116,33 @@ class HasRounds(GenericHandler): @classmethod def using( # type: ignore[override] cls, - min_desired_rounds: Incomplete | None = ..., - max_desired_rounds: Incomplete | None = ..., - default_rounds: Incomplete | None = ..., - vary_rounds: Incomplete | None = ..., - min_rounds: Incomplete | None = ..., - max_rounds: Incomplete | None = ..., - rounds: Incomplete | None = ..., + min_desired_rounds: Incomplete | None = None, + max_desired_rounds: Incomplete | None = None, + default_rounds: Incomplete | None = None, + vary_rounds: Incomplete | None = None, + min_rounds: Incomplete | None = None, + max_rounds: Incomplete | None = None, + rounds: Incomplete | None = None, **kwds, ): ... - def __init__(self, rounds: Incomplete | None = ..., **kwds) -> None: ... + def __init__(self, rounds: Incomplete | None = None, **kwds) -> None: ... @classmethod - def bitsize(cls, rounds: Incomplete | None = ..., vary_rounds: float = ..., **kwds): ... + def bitsize(cls, rounds: Incomplete | None = None, vary_rounds: float = 0.1, **kwds): ... class ParallelismMixin(GenericHandler): parallelism: int @classmethod - def using(cls, parallelism: Incomplete | None = ..., **kwds): ... # type: ignore[override] - def __init__(self, parallelism: Incomplete | None = ..., **kwds) -> None: ... + def using(cls, parallelism: Incomplete | None = None, **kwds): ... # type: ignore[override] + def __init__(self, parallelism: Incomplete | None = None, **kwds) -> None: ... class BackendMixin(PasswordHash, metaclass=abc.ABCMeta): backends: ClassVar[tuple[str, ...] | None] @classmethod def get_backend(cls): ... @classmethod - def has_backend(cls, name: str = ...) -> bool: ... + def has_backend(cls, name: str = "any") -> bool: ... @classmethod - def set_backend(cls, name: str = ..., dryrun: bool = ...): ... + def set_backend(cls, name: str = "any", dryrun: bool = False): ... class SubclassBackendMixin(BackendMixin, metaclass=abc.ABCMeta): ... class HasManyBackends(BackendMixin, GenericHandler): ... @@ -156,11 +156,11 @@ class PrefixWrapper: self, name, wrapped, - prefix=..., - orig_prefix=..., - lazy: bool = ..., - doc: Incomplete | None = ..., - ident: Incomplete | None = ..., + prefix="", + orig_prefix="", + lazy: bool = False, + doc: Incomplete | None = None, + ident: Incomplete | None = None, ) -> None: ... @property def wrapped(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/pbkdf2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/pbkdf2.pyi index 2b192ec29..57a5bb65b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/pbkdf2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/utils/pbkdf2.pyi @@ -3,5 +3,5 @@ from _typeshed import Incomplete from passlib.crypto.digest import norm_hash_name as norm_hash_name def get_prf(name): ... -def pbkdf1(secret, salt, rounds, keylen: Incomplete | None = ..., hash: str = ...): ... -def pbkdf2(secret, salt, rounds, keylen: Incomplete | None = ..., prf: str = ...): ... +def pbkdf1(secret, salt, rounds, keylen: Incomplete | None = None, hash: str = "sha1"): ... +def pbkdf2(secret, salt, rounds, keylen: Incomplete | None = None, prf: str = "hmac-sha1"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/win32.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/win32.pyi index 07d54a7bd..aade4ce9c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/win32.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/win32.pyi @@ -4,4 +4,4 @@ from passlib.hash import nthash as nthash raw_nthash: Any -def raw_lmhash(secret, encoding: str = ..., hex: bool = ...): ... +def raw_lmhash(secret, encoding: str = "ascii", hex: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passpy/passpy/store.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passpy/passpy/store.pyi index 07a9fcc5e..e906bbe38 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passpy/passpy/store.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passpy/passpy/store.pyi @@ -5,26 +5,26 @@ from re import Match class Store: def __init__( self, - gpg_bin: str = ..., - git_bin: str = ..., - store_dir: str = ..., - use_agent: bool = ..., - interactive: bool = ..., - verbose: bool = ..., + gpg_bin: str = "gpg2", + git_bin: str = "git", + store_dir: str = "~/.password-store", + use_agent: bool = True, + interactive: bool = False, + verbose: bool = False, ) -> None: ... def __iter__(self) -> Iterator[str]: ... def is_init(self) -> bool: ... - def init_store(self, gpg_ids: None | str | list[str], path: StrPath | None = ...) -> None: ... + def init_store(self, gpg_ids: None | str | list[str], path: StrPath | None = None) -> None: ... def init_git(self) -> None: ... def git(self, method: str, *args: object, **kwargs: object) -> None: ... def get_key(self, path: StrPath | None) -> str | None: ... - def set_key(self, path: StrPath | None, key_data: str, force: bool = ...) -> None: ... - def remove_path(self, path: StrPath, recursive: bool = ..., force: bool = ...) -> None: ... + def set_key(self, path: StrPath | None, key_data: str, force: bool = False) -> None: ... + def remove_path(self, path: StrPath, recursive: bool = False, force: bool = False) -> None: ... def gen_key( - self, path: StrPath | None, length: int, symbols: bool = ..., force: bool = ..., inplace: bool = ... + self, path: StrPath | None, length: int, symbols: bool = True, force: bool = False, inplace: bool = False ) -> str | None: ... - def copy_path(self, old_path: StrPath, new_path: StrPath, force: bool = ...) -> None: ... - def move_path(self, old_path: StrPath, new_path: StrPath, force: bool = ...) -> None: ... + def copy_path(self, old_path: StrPath, new_path: StrPath, force: bool = False) -> None: ... + def move_path(self, old_path: StrPath, new_path: StrPath, force: bool = False) -> None: ... def list_dir(self, path: StrPath) -> tuple[list[str], list[str]]: ... def iter_dir(self, path: StrPath) -> Iterator[str]: ... def find(self, names: None | str | list[str]) -> list[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passpy/passpy/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passpy/passpy/util.pyi index 4c10cdeaa..137b613f8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passpy/passpy/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passpy/passpy/util.pyi @@ -7,7 +7,7 @@ _C = TypeVar("_C", bound=Callable[..., Any]) # but for now we leave it simple: def initialised(func: _C) -> _C: ... def trap(path_index: str | int) -> Callable[[_C], _C]: ... -def gen_password(length: int, symbols: bool = ...) -> str: ... +def gen_password(length: int, symbols: bool = True) -> str: ... def copy_move( - src: str, dst: str, force: bool = ..., move: bool = ..., interactive: bool = ..., verbose: bool = ... + src: str, dst: str, force: bool = False, move: bool = False, interactive: bool = False, verbose: bool = False ) -> str | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/asyncio_connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/asyncio_connection.pyi index 621eb6fa2..d63590839 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/asyncio_connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/asyncio_connection.pyi @@ -13,16 +13,16 @@ LOGGER: Logger class AsyncioConnection(BaseConnection): def __init__( self, - parameters: Parameters | None = ..., - on_open_callback: Callable[[Self], object] | None = ..., - on_open_error_callback: Callable[[Self, BaseException], object] | None = ..., - on_close_callback: Callable[[Self, BaseException], object] | None = ..., - custom_ioloop: AbstractEventLoop | None = ..., - internal_connection_workflow: bool = ..., + parameters: Parameters | None = None, + on_open_callback: Callable[[Self], object] | None = None, + on_open_error_callback: Callable[[Self, BaseException], object] | None = None, + on_close_callback: Callable[[Self, BaseException], object] | None = None, + custom_ioloop: AbstractEventLoop | None = None, + internal_connection_workflow: bool = True, ) -> None: ... @classmethod def create_connection( - cls, connection_configs, on_done, custom_ioloop: AbstractEventLoop | None = ..., workflow: Incomplete | None = ... + cls, connection_configs, on_done, custom_ioloop: AbstractEventLoop | None = None, workflow: Incomplete | None = None ): ... class _AsyncioIOServicesAdapter( @@ -31,14 +31,14 @@ class _AsyncioIOServicesAdapter( nbio_interface.AbstractIOServices, nbio_interface.AbstractFileDescriptorServices, ): - def __init__(self, loop: Incomplete | None = ...) -> None: ... + def __init__(self, loop: Incomplete | None = None) -> None: ... def get_native_ioloop(self): ... def close(self) -> None: ... def run(self) -> None: ... def stop(self) -> None: ... def add_callback_threadsafe(self, callback) -> None: ... def call_later(self, delay, callback): ... - def getaddrinfo(self, host, port, on_done, family: int = ..., socktype: int = ..., proto: int = ..., flags: int = ...): ... + def getaddrinfo(self, host, port, on_done, family: int = 0, socktype: int = 0, proto: int = 0, flags: int = 0): ... def set_reader(self, fd, on_readable) -> None: ... def remove_reader(self, fd): ... def set_writer(self, fd, on_writable) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/base_connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/base_connection.pyi index db129fa75..198327c11 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/base_connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/base_connection.pyi @@ -21,7 +21,7 @@ class BaseConnection(Connection, metaclass=abc.ABCMeta): @classmethod @abc.abstractmethod def create_connection( - cls, connection_configs, on_done, custom_ioloop: Incomplete | None = ..., workflow: Incomplete | None = ... + cls, connection_configs, on_done, custom_ioloop: Incomplete | None = None, workflow: Incomplete | None = None ): ... @property def ioloop(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/blocking_connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/blocking_connection.pyi index 613c7ecde..02097b5c4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/blocking_connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/blocking_connection.pyi @@ -12,7 +12,7 @@ from ..spec import BasicProperties LOGGER: Incomplete class _CallbackResult: - def __init__(self, value_class: Incomplete | None = ...) -> None: ... + def __init__(self, value_class: Incomplete | None = None) -> None: ... def reset(self) -> None: ... def __bool__(self) -> bool: ... __nonzero__: Incomplete @@ -55,7 +55,7 @@ class BlockingConnection: class _OnChannelOpenedArgs(NamedTuple): channel: Incomplete def __init__( - self, parameters: Parameters | Sequence[Parameters] | None = ..., _impl_class: Incomplete | None = ... + self, parameters: Parameters | Sequence[Parameters] | None = None, _impl_class: Incomplete | None = None ) -> None: ... def __enter__(self) -> Self: ... def __exit__( @@ -67,10 +67,10 @@ class BlockingConnection: def add_callback_threadsafe(self, callback) -> None: ... def remove_timeout(self, timeout_id) -> None: ... def update_secret(self, new_secret, reason) -> None: ... - def close(self, reply_code: int = ..., reply_text: str = ...) -> None: ... - def process_data_events(self, time_limit: int = ...): ... + def close(self, reply_code: int = 200, reply_text: str = "Normal shutdown") -> None: ... + def process_data_events(self, time_limit: int = 0): ... def sleep(self, duration: float) -> None: ... - def channel(self, channel_number: int | None = ...) -> BlockingChannel: ... + def channel(self, channel_number: int | None = None) -> BlockingChannel: ... @property def is_closed(self) -> bool: ... @property @@ -128,7 +128,11 @@ class _ConsumerInfo: alternate_event_sink: Incomplete state: Incomplete def __init__( - self, consumer_tag, auto_ack, on_message_callback: Incomplete | None = ..., alternate_event_sink: Incomplete | None = ... + self, + consumer_tag, + auto_ack, + on_message_callback: Incomplete | None = None, + alternate_event_sink: Incomplete | None = None, ) -> None: ... @property def setting_up(self): ... @@ -176,7 +180,7 @@ class BlockingChannel: def is_open(self): ... @property def consumer_tags(self): ... - def close(self, reply_code: int = ..., reply_text: str = ...): ... + def close(self, reply_code: int = 0, reply_text: str = "Normal shutdown"): ... def flow(self, active): ... def add_on_cancel_callback(self, callback) -> None: ... def add_on_return_callback(self, callback): ... @@ -184,67 +188,76 @@ class BlockingChannel: self, queue, on_message_callback, - auto_ack: bool = ..., - exclusive: bool = ..., - consumer_tag: Incomplete | None = ..., - arguments: Incomplete | None = ..., + auto_ack: bool = False, + exclusive: bool = False, + consumer_tag: Incomplete | None = None, + arguments: Incomplete | None = None, ): ... def basic_cancel(self, consumer_tag): ... def start_consuming(self) -> None: ... - def stop_consuming(self, consumer_tag: Incomplete | None = ...) -> None: ... + def stop_consuming(self, consumer_tag: Incomplete | None = None) -> None: ... def consume( self, queue, - auto_ack: bool = ..., - exclusive: bool = ..., - arguments: Incomplete | None = ..., - inactivity_timeout: Incomplete | None = ..., + auto_ack: bool = False, + exclusive: bool = False, + arguments: Incomplete | None = None, + inactivity_timeout: Incomplete | None = None, ) -> Generator[Incomplete, None, None]: ... def get_waiting_message_count(self): ... def cancel(self): ... - def basic_ack(self, delivery_tag: int = ..., multiple: bool = ...) -> None: ... - def basic_nack(self, delivery_tag: int = ..., multiple: bool = ..., requeue: bool = ...) -> None: ... - def basic_get(self, queue, auto_ack: bool = ...): ... + def basic_ack(self, delivery_tag: int = 0, multiple: bool = False) -> None: ... + def basic_nack(self, delivery_tag: int = 0, multiple: bool = False, requeue: bool = True) -> None: ... + def basic_get(self, queue, auto_ack: bool = False): ... def basic_publish( - self, exchange: str, routing_key: str, body: str | bytes, properties: BasicProperties | None = ..., mandatory: bool = ... + self, + exchange: str, + routing_key: str, + body: str | bytes, + properties: BasicProperties | None = None, + mandatory: bool = False, ) -> None: ... - def basic_qos(self, prefetch_size: int = ..., prefetch_count: int = ..., global_qos: bool = ...) -> None: ... - def basic_recover(self, requeue: bool = ...) -> None: ... - def basic_reject(self, delivery_tag: int = ..., requeue: bool = ...) -> None: ... + def basic_qos(self, prefetch_size: int = 0, prefetch_count: int = 0, global_qos: bool = False) -> None: ... + def basic_recover(self, requeue: bool = False) -> None: ... + def basic_reject(self, delivery_tag: int = 0, requeue: bool = True) -> None: ... def confirm_delivery(self) -> None: ... def exchange_declare( self, exchange: str, exchange_type: ExchangeType | str = ..., - passive: bool = ..., - durable: bool = ..., - auto_delete: bool = ..., - internal: bool = ..., - arguments: _ArgumentMapping | None = ..., + passive: bool = False, + durable: bool = False, + auto_delete: bool = False, + internal: bool = False, + arguments: _ArgumentMapping | None = None, ): ... - def exchange_delete(self, exchange: str | None = ..., if_unused: bool = ...): ... - def exchange_bind(self, destination, source, routing_key: str = ..., arguments: Incomplete | None = ...): ... + def exchange_delete(self, exchange: str | None = None, if_unused: bool = False): ... + def exchange_bind(self, destination, source, routing_key: str = "", arguments: Incomplete | None = None): ... def exchange_unbind( self, - destination: Incomplete | None = ..., - source: Incomplete | None = ..., - routing_key: str = ..., - arguments: Incomplete | None = ..., + destination: Incomplete | None = None, + source: Incomplete | None = None, + routing_key: str = "", + arguments: Incomplete | None = None, ): ... def queue_declare( self, queue, - passive: bool = ..., - durable: bool = ..., - exclusive: bool = ..., - auto_delete: bool = ..., - arguments: Incomplete | None = ..., + passive: bool = False, + durable: bool = False, + exclusive: bool = False, + auto_delete: bool = False, + arguments: Incomplete | None = None, ): ... - def queue_delete(self, queue, if_unused: bool = ..., if_empty: bool = ...): ... + def queue_delete(self, queue, if_unused: bool = False, if_empty: bool = False): ... def queue_purge(self, queue): ... - def queue_bind(self, queue, exchange, routing_key: Incomplete | None = ..., arguments: Incomplete | None = ...): ... + def queue_bind(self, queue, exchange, routing_key: Incomplete | None = None, arguments: Incomplete | None = None): ... def queue_unbind( - self, queue, exchange: Incomplete | None = ..., routing_key: Incomplete | None = ..., arguments: Incomplete | None = ... + self, + queue, + exchange: Incomplete | None = None, + routing_key: Incomplete | None = None, + arguments: Incomplete | None = None, ): ... def tx_select(self): ... def tx_commit(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/select_connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/select_connection.pyi index 1a094f50f..cb8c8a8dd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/select_connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/select_connection.pyi @@ -11,16 +11,16 @@ SELECT_TYPE: Incomplete class SelectConnection(BaseConnection): def __init__( self, - parameters: Incomplete | None = ..., - on_open_callback: Incomplete | None = ..., - on_open_error_callback: Incomplete | None = ..., - on_close_callback: Incomplete | None = ..., - custom_ioloop: Incomplete | None = ..., - internal_connection_workflow: bool = ..., + parameters: Incomplete | None = None, + on_open_callback: Incomplete | None = None, + on_open_error_callback: Incomplete | None = None, + on_close_callback: Incomplete | None = None, + custom_ioloop: Incomplete | None = None, + internal_connection_workflow: bool = True, ) -> None: ... @classmethod def create_connection( - cls, connection_configs, on_done, custom_ioloop: Incomplete | None = ..., workflow: Incomplete | None = ... + cls, connection_configs, on_done, custom_ioloop: Incomplete | None = None, workflow: Incomplete | None = None ): ... class _Timeout: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/twisted_connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/twisted_connection.pyi index aea7a297f..a65304883 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/twisted_connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/twisted_connection.pyi @@ -1,22 +1,29 @@ +# twisted is optional and self-contained in this module. +# We don't want to force it as a dependency but that means we also can't test it with type-checkers given the current setup. + from _typeshed import Incomplete -from typing import Any, NamedTuple -from typing_extensions import TypeAlias +from typing import NamedTuple, TypeVar import pika.connection from pika.adapters.utils import nbio_interface +from twisted.internet.base import DelayedCall # type: ignore[import] # pyright: ignore[reportMissingImports] +from twisted.internet.defer import Deferred, DeferredQueue # type: ignore[import] # pyright: ignore[reportMissingImports] +from twisted.internet.interfaces import ITransport # type: ignore[import] # pyright: ignore[reportMissingImports] +from twisted.internet.protocol import Protocol # type: ignore[import] # pyright: ignore[reportMissingImports] +from twisted.python.failure import Failure # type: ignore[import] # pyright: ignore[reportMissingImports] -_DeferredQueue: TypeAlias = Any # TODO: twisted.internet.defer.DeferredQueue -_Protocol: TypeAlias = Any # TODO: twisted.internet.protocol.Protocol +_T = TypeVar("_T") LOGGER: Incomplete -class ClosableDeferredQueue(_DeferredQueue): - closed: Incomplete +class ClosableDeferredQueue(DeferredQueue[_T]): # pyright: ignore[reportUntypedBaseClass] + closed: Failure | BaseException | None def __init__(self, size: Incomplete | None = ..., backlog: Incomplete | None = ...) -> None: ... - def put(self, obj): ... - def get(self): ... + # Returns a Deferred with an error if fails. None if success + def put(self, obj: _T) -> Deferred[Failure | BaseException] | None: ... # type: ignore[override] # pyright: ignore[reportInvalidTypeVarUse] + def get(self) -> Deferred[Failure | BaseException | _T]: ... pending: Incomplete - def close(self, reason) -> None: ... + def close(self, reason: BaseException | None) -> None: ... class ReceivedMessage(NamedTuple): channel: Incomplete @@ -25,7 +32,7 @@ class ReceivedMessage(NamedTuple): body: Incomplete class TwistedChannel: - on_closed: Incomplete + on_closed: Deferred[Incomplete | Failure | BaseException | None] def __init__(self, channel) -> None: ... @property def channel_number(self): ... @@ -44,7 +51,7 @@ class TwistedChannel: def callback_deferred(self, deferred, replies) -> None: ... def add_on_return_callback(self, callback): ... def basic_ack(self, delivery_tag: int = ..., multiple: bool = ...): ... - def basic_cancel(self, consumer_tag: str = ...): ... + def basic_cancel(self, consumer_tag: str = ...) -> Deferred[Incomplete | Failure | BaseException | None]: ... def basic_consume( self, queue, @@ -52,16 +59,22 @@ class TwistedChannel: exclusive: bool = ..., consumer_tag: Incomplete | None = ..., arguments: Incomplete | None = ..., - ): ... - def basic_get(self, queue, auto_ack: bool = ...): ... + ) -> Deferred[Incomplete | Failure | BaseException]: ... + def basic_get(self, queue, auto_ack: bool = ...) -> Deferred[Incomplete | Failure | BaseException | None]: ... def basic_nack(self, delivery_tag: Incomplete | None = ..., multiple: bool = ..., requeue: bool = ...): ... - def basic_publish(self, exchange, routing_key, body, properties: Incomplete | None = ..., mandatory: bool = ...): ... - def basic_qos(self, prefetch_size: int = ..., prefetch_count: int = ..., global_qos: bool = ...): ... + def basic_publish( + self, exchange, routing_key, body, properties: Incomplete | None = ..., mandatory: bool = ... + ) -> Deferred[Incomplete | Failure | BaseException]: ... + def basic_qos( + self, prefetch_size: int = ..., prefetch_count: int = ..., global_qos: bool = ... + ) -> Deferred[Incomplete | Failure | BaseException | None]: ... def basic_reject(self, delivery_tag, requeue: bool = ...): ... - def basic_recover(self, requeue: bool = ...): ... + def basic_recover(self, requeue: bool = ...) -> Deferred[Incomplete | Failure | BaseException | None]: ... def close(self, reply_code: int = ..., reply_text: str = ...): ... - def confirm_delivery(self): ... - def exchange_bind(self, destination, source, routing_key: str = ..., arguments: Incomplete | None = ...): ... + def confirm_delivery(self) -> Deferred[Incomplete | None]: ... + def exchange_bind( + self, destination, source, routing_key: str = ..., arguments: Incomplete | None = ... + ) -> Deferred[Incomplete | Failure | BaseException | None]: ... def exchange_declare( self, exchange, @@ -71,18 +84,22 @@ class TwistedChannel: auto_delete: bool = ..., internal: bool = ..., arguments: Incomplete | None = ..., - ): ... - def exchange_delete(self, exchange: Incomplete | None = ..., if_unused: bool = ...): ... + ) -> Deferred[Incomplete | Failure | BaseException | None]: ... + def exchange_delete( + self, exchange: Incomplete | None = ..., if_unused: bool = ... + ) -> Deferred[Incomplete | Failure | BaseException | None]: ... def exchange_unbind( self, destination: Incomplete | None = ..., source: Incomplete | None = ..., routing_key: str = ..., arguments: Incomplete | None = ..., - ): ... - def flow(self, active): ... + ) -> Deferred[Incomplete | Failure | BaseException | None]: ... + def flow(self, active) -> Deferred[Incomplete | Failure | BaseException | None]: ... def open(self): ... - def queue_bind(self, queue, exchange, routing_key: Incomplete | None = ..., arguments: Incomplete | None = ...): ... + def queue_bind( + self, queue, exchange, routing_key: Incomplete | None = ..., arguments: Incomplete | None = ... + ) -> Deferred[Incomplete | Failure | BaseException | None]: ... def queue_declare( self, queue, @@ -91,37 +108,39 @@ class TwistedChannel: exclusive: bool = ..., auto_delete: bool = ..., arguments: Incomplete | None = ..., - ): ... - def queue_delete(self, queue, if_unused: bool = ..., if_empty: bool = ...): ... - def queue_purge(self, queue): ... + ) -> Deferred[Incomplete | Failure | BaseException | None]: ... + def queue_delete( + self, queue, if_unused: bool = ..., if_empty: bool = ... + ) -> Deferred[Incomplete | Failure | BaseException | None]: ... + def queue_purge(self, queue) -> Deferred[Incomplete | Failure | BaseException | None]: ... def queue_unbind( self, queue, exchange: Incomplete | None = ..., routing_key: Incomplete | None = ..., arguments: Incomplete | None = ... - ): ... - def tx_commit(self): ... - def tx_rollback(self): ... - def tx_select(self): ... + ) -> Deferred[Incomplete | Failure | BaseException | None]: ... + def tx_commit(self) -> Deferred[Incomplete | Failure | BaseException | None]: ... + def tx_rollback(self) -> Deferred[Incomplete | Failure | BaseException | None]: ... + def tx_select(self) -> Deferred[Incomplete | Failure | BaseException | None]: ... class _TwistedConnectionAdapter(pika.connection.Connection): def __init__(self, parameters, on_open_callback, on_open_error_callback, on_close_callback, custom_reactor) -> None: ... - def connection_made(self, transport) -> None: ... - def connection_lost(self, error) -> None: ... + def connection_made(self, transport: ITransport) -> None: ... + def connection_lost(self, error: Exception) -> None: ... def data_received(self, data) -> None: ... -class TwistedProtocolConnection(_Protocol): - ready: Incomplete - closed: Incomplete +class TwistedProtocolConnection(Protocol): # pyright: ignore[reportUntypedBaseClass] + ready: Deferred[None] | None + closed: Deferred[None] | Failure | BaseException | None def __init__(self, parameters: Incomplete | None = ..., custom_reactor: Incomplete | None = ...) -> None: ... def channel(self, channel_number: Incomplete | None = ...): ... @property def is_open(self): ... @property def is_closed(self): ... - def close(self, reply_code: int = ..., reply_text: str = ...): ... + def close(self, reply_code: int = ..., reply_text: str = ...) -> Deferred[None] | Failure | BaseException | None: ... def dataReceived(self, data) -> None: ... - def connectionLost(self, reason=...) -> None: ... - def makeConnection(self, transport) -> None: ... + def connectionLost(self, reason: Failure | BaseException = ...) -> None: ... + def makeConnection(self, transport: ITransport) -> None: ... def connectionReady(self): ... class _TimerHandle(nbio_interface.AbstractTimerReference): - def __init__(self, handle) -> None: ... + def __init__(self, handle: DelayedCall) -> None: ... def cancel(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/connection_workflow.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/connection_workflow.pyi index e68104c88..1adf533f8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/connection_workflow.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/connection_workflow.pyi @@ -31,7 +31,7 @@ class AbstractAMQPConnectionWorkflow(pika.compat.AbstractBase): def abort(self) -> None: ... class AMQPConnectionWorkflow(AbstractAMQPConnectionWorkflow): - def __init__(self, _until_first_amqp_attempt: bool = ...) -> None: ... + def __init__(self, _until_first_amqp_attempt: bool = False) -> None: ... def set_io_services(self, nbio) -> None: ... def start(self, connection_configs, connector_factory, native_loop, on_done) -> None: ... def abort(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/io_services_utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/io_services_utils.pyi index 81f8ddc63..c6f059279 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/io_services_utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/io_services_utils.pyi @@ -11,7 +11,7 @@ class SocketConnectionMixin: class StreamingConnectionMixin: def create_streaming_connection( - self, protocol_factory, sock, on_done, ssl_context: Incomplete | None = ..., server_hostname: Incomplete | None = ... + self, protocol_factory, sock, on_done, ssl_context: Incomplete | None = None, server_hostname: Incomplete | None = None ): ... class _AsyncServiceAsyncHandle(AbstractIOReference): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/nbio_interface.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/nbio_interface.pyi index 450da2c50..897e069d8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/nbio_interface.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/nbio_interface.pyi @@ -17,12 +17,12 @@ class AbstractIOServices(pika.compat.AbstractBase, metaclass=abc.ABCMeta): @abc.abstractmethod def call_later(self, delay, callback): ... @abc.abstractmethod - def getaddrinfo(self, host, port, on_done, family: int = ..., socktype: int = ..., proto: int = ..., flags: int = ...): ... + def getaddrinfo(self, host, port, on_done, family: int = 0, socktype: int = 0, proto: int = 0, flags: int = 0): ... @abc.abstractmethod def connect_socket(self, sock, resolved_addr, on_done): ... @abc.abstractmethod def create_streaming_connection( - self, protocol_factory, sock, on_done, ssl_context: Incomplete | None = ..., server_hostname: Incomplete | None = ... + self, protocol_factory, sock, on_done, ssl_context: Incomplete | None = None, server_hostname: Incomplete | None = None ): ... class AbstractFileDescriptorServices(pika.compat.AbstractBase, metaclass=abc.ABCMeta): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/selector_ioloop_adapter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/selector_ioloop_adapter.pyi index 3358c4df6..dea569613 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/selector_ioloop_adapter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/adapters/utils/selector_ioloop_adapter.pyi @@ -47,7 +47,7 @@ class SelectorIOServicesAdapter( def stop(self) -> None: ... def add_callback_threadsafe(self, callback) -> None: ... def call_later(self, delay, callback): ... - def getaddrinfo(self, host, port, on_done, family: int = ..., socktype: int = ..., proto: int = ..., flags: int = ...): ... + def getaddrinfo(self, host, port, on_done, family: int = 0, socktype: int = 0, proto: int = 0, flags: int = 0): ... def set_reader(self, fd, on_readable) -> None: ... def remove_reader(self, fd): ... def set_writer(self, fd, on_writable) -> None: ... @@ -56,7 +56,7 @@ class SelectorIOServicesAdapter( class _FileDescriptorCallbacks: reader: Incomplete writer: Incomplete - def __init__(self, reader: Incomplete | None = ..., writer: Incomplete | None = ...) -> None: ... + def __init__(self, reader: Incomplete | None = None, writer: Incomplete | None = None) -> None: ... class _TimerHandle(nbio_interface.AbstractTimerReference): def __init__(self, handle, loop) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/callback.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/callback.pyi index 593ad4b27..d96f77c9f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/callback.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/callback.pyi @@ -19,13 +19,13 @@ class CallbackManager: prefix, key, callback, - one_shot: bool = ..., - only_caller: Incomplete | None = ..., - arguments: Incomplete | None = ..., + one_shot: bool = True, + only_caller: Incomplete | None = None, + arguments: Incomplete | None = None, ): ... def clear(self) -> None: ... def cleanup(self, prefix): ... def pending(self, prefix, key): ... def process(self, prefix, key, caller, *args, **keywords): ... - def remove(self, prefix, key, callback_value: Incomplete | None = ..., arguments: Incomplete | None = ...): ... + def remove(self, prefix, key, callback_value: Incomplete | None = None, arguments: Incomplete | None = None): ... def remove_all(self, prefix, key) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/channel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/channel.pyi index 3f28e847c..8947c91a3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/channel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/channel.pyi @@ -27,46 +27,53 @@ class Channel: def __init__(self, connection: Connection, channel_number: int, on_open_callback: Callable[[Self], object]) -> None: ... def __int__(self) -> int: ... - def add_callback(self, callback, replies, one_shot: bool = ...) -> None: ... + def add_callback(self, callback, replies, one_shot: bool = True) -> None: ... def add_on_cancel_callback(self, callback) -> None: ... def add_on_close_callback(self, callback) -> None: ... def add_on_flow_callback(self, callback) -> None: ... def add_on_return_callback(self, callback) -> None: ... - def basic_ack(self, delivery_tag: int = ..., multiple: bool = ...) -> None: ... + def basic_ack(self, delivery_tag: int = 0, multiple: bool = False) -> None: ... def basic_cancel( - self, consumer_tag: str = ..., callback: Callable[[Method[Basic.CancelOk]], object] | None = ... + self, consumer_tag: str = "", callback: Callable[[Method[Basic.CancelOk]], object] | None = None ) -> None: ... def basic_consume( self, queue: str, on_message_callback: Callable[[Channel, Basic.Deliver, BasicProperties, bytes], object], - auto_ack: bool = ..., - exclusive: bool = ..., - consumer_tag: str | None = ..., - arguments: _ArgumentMapping | None = ..., - callback: Callable[[Method[Basic.ConsumeOk]], object] | None = ..., + auto_ack: bool = False, + exclusive: bool = False, + consumer_tag: str | None = None, + arguments: _ArgumentMapping | None = None, + callback: Callable[[Method[Basic.ConsumeOk]], object] | None = None, ) -> str: ... def basic_get( - self, queue: str, callback: Callable[[Channel, Basic.GetOk, BasicProperties, bytes], object], auto_ack: bool = ... + self, queue: str, callback: Callable[[Channel, Basic.GetOk, BasicProperties, bytes], object], auto_ack: bool = False ) -> None: ... - def basic_nack(self, delivery_tag: int = ..., multiple: bool = ..., requeue: bool = ...) -> None: ... + def basic_nack(self, delivery_tag: int = 0, multiple: bool = False, requeue: bool = True) -> None: ... def basic_publish( - self, exchange: str, routing_key: str, body: str | bytes, properties: BasicProperties | None = ..., mandatory: bool = ... + self, + exchange: str, + routing_key: str, + body: str | bytes, + properties: BasicProperties | None = None, + mandatory: bool = False, ) -> None: ... def basic_qos( self, - prefetch_size: int = ..., - prefetch_count: int = ..., - global_qos: bool = ..., - callback: Callable[[Method[Basic.QosOk]], object] | None = ..., + prefetch_size: int = 0, + prefetch_count: int = 0, + global_qos: bool = False, + callback: Callable[[Method[Basic.QosOk]], object] | None = None, + ) -> None: ... + def basic_reject(self, delivery_tag: int = 0, requeue: bool = True) -> None: ... + def basic_recover( + self, requeue: bool = False, callback: Callable[[Method[Basic.RecoverOk]], object] | None = None ) -> None: ... - def basic_reject(self, delivery_tag: int = ..., requeue: bool = ...) -> None: ... - def basic_recover(self, requeue: bool = ..., callback: Callable[[Method[Basic.RecoverOk]], object] | None = ...) -> None: ... - def close(self, reply_code: int = ..., reply_text: str = ...) -> None: ... + def close(self, reply_code: int = 0, reply_text: str = "Normal shutdown") -> None: ... def confirm_delivery( self, ack_nack_callback: Callable[[Method[Basic.Ack | Basic.Nack]], object], - callback: Callable[[Method[Confirm.SelectOk]], object] | None = ..., + callback: Callable[[Method[Confirm.SelectOk]], object] | None = None, ) -> None: ... @property def consumer_tags(self) -> list[str]: ... @@ -74,36 +81,36 @@ class Channel: self, destination: str, source: str, - routing_key: str = ..., - arguments: _ArgumentMapping | None = ..., - callback: Callable[[Method[Exchange.BindOk]], object] | None = ..., + routing_key: str = "", + arguments: _ArgumentMapping | None = None, + callback: Callable[[Method[Exchange.BindOk]], object] | None = None, ) -> None: ... def exchange_declare( self, exchange: str, exchange_type: ExchangeType | str = ..., - passive: bool = ..., - durable: bool = ..., - auto_delete: bool = ..., - internal: bool = ..., - arguments: _ArgumentMapping | None = ..., - callback: Callable[[Method[Exchange.DeclareOk]], object] | None = ..., + passive: bool = False, + durable: bool = False, + auto_delete: bool = False, + internal: bool = False, + arguments: _ArgumentMapping | None = None, + callback: Callable[[Method[Exchange.DeclareOk]], object] | None = None, ) -> None: ... def exchange_delete( self, - exchange: str | None = ..., - if_unused: bool = ..., - callback: Callable[[Method[Exchange.DeleteOk]], object] | None = ..., + exchange: str | None = None, + if_unused: bool = False, + callback: Callable[[Method[Exchange.DeleteOk]], object] | None = None, ) -> None: ... def exchange_unbind( self, - destination: str | None = ..., - source: str | None = ..., - routing_key: str = ..., - arguments: _ArgumentMapping | None = ..., - callback: Callable[[Method[Exchange.UnbindOk]], object] | None = ..., + destination: str | None = None, + source: str | None = None, + routing_key: str = "", + arguments: _ArgumentMapping | None = None, + callback: Callable[[Method[Exchange.UnbindOk]], object] | None = None, ) -> None: ... - def flow(self, active: bool, callback: Callable[[bool], object] | None = ...) -> None: ... + def flow(self, active: bool, callback: Callable[[bool], object] | None = None) -> None: ... @property def is_closed(self) -> bool: ... @property @@ -117,39 +124,39 @@ class Channel: self, queue: str, exchange: str, - routing_key: str | None = ..., - arguments: _ArgumentMapping | None = ..., - callback: Callable[[Method[Queue.BindOk]], object] | None = ..., + routing_key: str | None = None, + arguments: _ArgumentMapping | None = None, + callback: Callable[[Method[Queue.BindOk]], object] | None = None, ) -> None: ... def queue_declare( self, queue: str, - passive: bool = ..., - durable: bool = ..., - exclusive: bool = ..., - auto_delete: bool = ..., - arguments: _ArgumentMapping | None = ..., - callback: Callable[[Method[Queue.DeclareOk]], object] | None = ..., + passive: bool = False, + durable: bool = False, + exclusive: bool = False, + auto_delete: bool = False, + arguments: _ArgumentMapping | None = None, + callback: Callable[[Method[Queue.DeclareOk]], object] | None = None, ) -> None: ... def queue_delete( self, queue: str, - if_unused: bool = ..., - if_empty: bool = ..., - callback: Callable[[Method[Queue.DeleteOk]], object] | None = ..., + if_unused: bool = False, + if_empty: bool = False, + callback: Callable[[Method[Queue.DeleteOk]], object] | None = None, ) -> None: ... - def queue_purge(self, queue: str, callback: Callable[[Method[Queue.PurgeOk]], object] | None = ...) -> None: ... + def queue_purge(self, queue: str, callback: Callable[[Method[Queue.PurgeOk]], object] | None = None) -> None: ... def queue_unbind( self, queue: str, - exchange: str | None = ..., - routing_key: str | None = ..., - arguments: _ArgumentMapping | None = ..., - callback: Callable[[Method[Queue.UnbindOk]], object] | None = ..., + exchange: str | None = None, + routing_key: str | None = None, + arguments: _ArgumentMapping | None = None, + callback: Callable[[Method[Queue.UnbindOk]], object] | None = None, ): ... - def tx_commit(self, callback: Callable[[Method[Tx.CommitOk]], object] | None = ...) -> None: ... - def tx_rollback(self, callback: Callable[[Method[Tx.RollbackOk]], object] | None = ...) -> None: ... - def tx_select(self, callback: Callable[[Method[Tx.SelectOk]], object] | None = ...) -> None: ... + def tx_commit(self, callback: Callable[[Method[Tx.CommitOk]], object] | None = None) -> None: ... + def tx_rollback(self, callback: Callable[[Method[Tx.RollbackOk]], object] | None = None) -> None: ... + def tx_select(self, callback: Callable[[Method[Tx.SelectOk]], object] | None = None) -> None: ... class ContentFrameAssembler: def __init__(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/connection.pyi index 21024b427..889e667b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/connection.pyi @@ -130,7 +130,7 @@ class URLParameters(Parameters): class SSLOptions: context: Incomplete server_hostname: Incomplete - def __init__(self, context, server_hostname: Incomplete | None = ...) -> None: ... + def __init__(self, context, server_hostname: Incomplete | None = None) -> None: ... class Connection(AbstractBase, metaclass=abc.ABCMeta): ON_CONNECTION_CLOSED: Final[str] @@ -151,11 +151,11 @@ class Connection(AbstractBase, metaclass=abc.ABCMeta): known_hosts: Incomplete def __init__( self, - parameters: Parameters | None = ..., - on_open_callback: Callable[[Self], object] | None = ..., - on_open_error_callback: Callable[[Self, BaseException], object] | None = ..., - on_close_callback: Callable[[Self, BaseException], object] | None = ..., - internal_connection_workflow: bool = ..., + parameters: Parameters | None = None, + on_open_callback: Callable[[Self], object] | None = None, + on_open_error_callback: Callable[[Self, BaseException], object] | None = None, + on_close_callback: Callable[[Self, BaseException], object] | None = None, + internal_connection_workflow: bool = True, ) -> None: ... def add_on_close_callback(self, callback: Callable[[Self, BaseException], object]) -> None: ... def add_on_connection_blocked_callback(self, callback: Callable[[Self, Method[SpecConnection.Blocked]], object]) -> None: ... @@ -164,13 +164,13 @@ class Connection(AbstractBase, metaclass=abc.ABCMeta): ) -> None: ... def add_on_open_callback(self, callback: Callable[[Self], object]) -> None: ... def add_on_open_error_callback( - self, callback: Callable[[Self, BaseException], object], remove_default: bool = ... + self, callback: Callable[[Self, BaseException], object], remove_default: bool = True ) -> None: ... def channel( - self, channel_number: int | None = ..., on_open_callback: Callable[[Channel], object] | None = ... + self, channel_number: int | None = None, on_open_callback: Callable[[Channel], object] | None = None ) -> Channel: ... - def update_secret(self, new_secret, reason, callback: Incomplete | None = ...) -> None: ... - def close(self, reply_code: int = ..., reply_text: str = ...) -> None: ... + def update_secret(self, new_secret, reason, callback: Incomplete | None = None) -> None: ... + def close(self, reply_code: int = 200, reply_text: str = "Normal shutdown") -> None: ... @property def is_closed(self) -> bool: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/credentials.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/credentials.pyi index b813f7c99..86956e683 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/credentials.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/credentials.pyi @@ -15,7 +15,7 @@ class PlainCredentials: username: str password: str erase_on_connect: bool - def __init__(self, username: str, password: str, erase_on_connect: bool = ...) -> None: ... + def __init__(self, username: str, password: str, erase_on_connect: bool = False) -> None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... def response_for(self, start: Connection.Start) -> tuple[str | None, bytes | None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/frame.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/frame.pyi index e448dc8e0..f0019be80 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/frame.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/frame.pyi @@ -41,7 +41,7 @@ class ProtocolHeader(AMQPObject): major: int minor: int revision: int - def __init__(self, major: int | None = ..., minor: int | None = ..., revision: int | None = ...) -> None: ... + def __init__(self, major: int | None = None, minor: int | None = None, revision: int | None = None) -> None: ... def marshal(self) -> bytes: ... def decode_frame(data_in: bytes) -> tuple[int, Frame | None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/spec.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/spec.pyi index c213867c0..303743359 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/spec.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/spec.pyi @@ -1,3 +1,4 @@ +import builtins from _typeshed import Incomplete from typing import ClassVar from typing_extensions import Literal, Self, TypeAlias @@ -5,8 +6,8 @@ from typing_extensions import Literal, Self, TypeAlias from .amqp_object import Class, Method, Properties # Ouch. Since str = bytes at runtime, we need a type alias for "str". -_str: TypeAlias = str # noqa: Y042 -str = bytes +_str: TypeAlias = builtins.str # noqa: Y042 +str = builtins.bytes PROTOCOL_VERSION: Incomplete PORT: int @@ -53,15 +54,15 @@ class Connection(Class): locales: Incomplete def __init__( self, - version_major: int = ..., - version_minor: int = ..., - server_properties: Incomplete | None = ..., - mechanisms: _str = ..., - locales: _str = ..., + version_major: int = 0, + version_minor: int = 9, + server_properties: Incomplete | None = None, + mechanisms: _str = "PLAIN", + locales: _str = "en_US", ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class StartOk(Method): @@ -72,32 +73,32 @@ class Connection(Class): locale: Incomplete def __init__( self, - client_properties: Incomplete | None = ..., - mechanism: _str = ..., - response: Incomplete | None = ..., - locale: _str = ..., + client_properties: Incomplete | None = None, + mechanism: _str = "PLAIN", + response: Incomplete | None = None, + locale: _str = "en_US", ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Secure(Method): INDEX: ClassVar[int] challenge: Incomplete - def __init__(self, challenge: Incomplete | None = ...) -> None: ... + def __init__(self, challenge: Incomplete | None = None) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class SecureOk(Method): INDEX: ClassVar[int] response: Incomplete - def __init__(self, response: Incomplete | None = ...) -> None: ... + def __init__(self, response: Incomplete | None = None) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Tune(Method): @@ -105,10 +106,10 @@ class Connection(Class): channel_max: Incomplete frame_max: Incomplete heartbeat: Incomplete - def __init__(self, channel_max: int = ..., frame_max: int = ..., heartbeat: int = ...) -> None: ... + def __init__(self, channel_max: int = 0, frame_max: int = 0, heartbeat: int = 0) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class TuneOk(Method): @@ -116,10 +117,10 @@ class Connection(Class): channel_max: Incomplete frame_max: Incomplete heartbeat: Incomplete - def __init__(self, channel_max: int = ..., frame_max: int = ..., heartbeat: int = ...) -> None: ... + def __init__(self, channel_max: int = 0, frame_max: int = 0, heartbeat: int = 0) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Open(Method): @@ -127,19 +128,19 @@ class Connection(Class): virtual_host: Incomplete capabilities: Incomplete insist: Incomplete - def __init__(self, virtual_host: _str = ..., capabilities: _str = ..., insist: bool = ...) -> None: ... + def __init__(self, virtual_host: _str = "/", capabilities: _str = "", insist: bool = False) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class OpenOk(Method): INDEX: ClassVar[int] known_hosts: Incomplete - def __init__(self, known_hosts: _str = ...) -> None: ... + def __init__(self, known_hosts: _str = "") -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Close(Method): @@ -150,14 +151,14 @@ class Connection(Class): method_id: Incomplete def __init__( self, - reply_code: Incomplete | None = ..., - reply_text: _str = ..., - class_id: Incomplete | None = ..., - method_id: Incomplete | None = ..., + reply_code: Incomplete | None = None, + reply_text: _str = "", + class_id: Incomplete | None = None, + method_id: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class CloseOk(Method): @@ -165,16 +166,16 @@ class Connection(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Blocked(Method): INDEX: ClassVar[int] reason: Incomplete - def __init__(self, reason: _str = ...) -> None: ... + def __init__(self, reason: _str = "") -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Unblocked(Method): @@ -182,7 +183,7 @@ class Connection(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class UpdateSecret(Method): @@ -193,7 +194,7 @@ class Connection(Class): @property def synchronous(self): ... mechanisms: Incomplete - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class UpdateSecretOk(Method): @@ -201,7 +202,7 @@ class Connection(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Channel(Class): @@ -210,37 +211,37 @@ class Channel(Class): class Open(Method): INDEX: ClassVar[int] out_of_band: Incomplete - def __init__(self, out_of_band: _str = ...) -> None: ... + def __init__(self, out_of_band: _str = "") -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class OpenOk(Method): INDEX: ClassVar[int] channel_id: Incomplete - def __init__(self, channel_id: _str = ...) -> None: ... + def __init__(self, channel_id: _str = "") -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Flow(Method): INDEX: ClassVar[int] active: Incomplete - def __init__(self, active: Incomplete | None = ...) -> None: ... + def __init__(self, active: Incomplete | None = None) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class FlowOk(Method): INDEX: ClassVar[int] active: Incomplete - def __init__(self, active: Incomplete | None = ...) -> None: ... + def __init__(self, active: Incomplete | None = None) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Close(Method): @@ -251,14 +252,14 @@ class Channel(Class): method_id: Incomplete def __init__( self, - reply_code: Incomplete | None = ..., - reply_text: _str = ..., - class_id: Incomplete | None = ..., - method_id: Incomplete | None = ..., + reply_code: Incomplete | None = None, + reply_text: _str = "", + class_id: Incomplete | None = None, + method_id: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class CloseOk(Method): @@ -266,7 +267,7 @@ class Channel(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Access(Class): @@ -282,25 +283,25 @@ class Access(Class): read: Incomplete def __init__( self, - realm: _str = ..., - exclusive: bool = ..., - passive: bool = ..., - active: bool = ..., - write: bool = ..., - read: bool = ..., + realm: _str = "/data", + exclusive: bool = False, + passive: bool = True, + active: bool = True, + write: bool = True, + read: bool = True, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class RequestOk(Method): INDEX: ClassVar[int] ticket: Incomplete - def __init__(self, ticket: int = ...) -> None: ... + def __init__(self, ticket: int = 1) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Exchange(Class): @@ -319,19 +320,19 @@ class Exchange(Class): arguments: Incomplete def __init__( self, - ticket: int = ..., - exchange: Incomplete | None = ..., + ticket: int = 0, + exchange: Incomplete | None = None, type=..., - passive: bool = ..., - durable: bool = ..., - auto_delete: bool = ..., - internal: bool = ..., - nowait: bool = ..., - arguments: Incomplete | None = ..., + passive: bool = False, + durable: bool = False, + auto_delete: bool = False, + internal: bool = False, + nowait: bool = False, + arguments: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class DeclareOk(Method): @@ -339,7 +340,7 @@ class Exchange(Class): def __init__(self) -> None: ... @property def synchronous(self) -> Literal[False]: ... - def decode(self, encoded: bytes, offset: int = ...) -> Self: ... + def decode(self, encoded: bytes, offset: int = 0) -> Self: ... def encode(self) -> list[bytes]: ... class Delete(Method): @@ -349,11 +350,11 @@ class Exchange(Class): if_unused: Incomplete nowait: Incomplete def __init__( - self, ticket: int = ..., exchange: Incomplete | None = ..., if_unused: bool = ..., nowait: bool = ... + self, ticket: int = 0, exchange: Incomplete | None = None, if_unused: bool = False, nowait: bool = False ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class DeleteOk(Method): @@ -361,7 +362,7 @@ class Exchange(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Bind(Method): @@ -374,16 +375,16 @@ class Exchange(Class): arguments: Incomplete | None def __init__( self, - ticket: int = ..., - destination: Incomplete | None = ..., - source: Incomplete | None = ..., - routing_key: _str = ..., - nowait: bool = ..., - arguments: Incomplete | None = ..., + ticket: int = 0, + destination: Incomplete | None = None, + source: Incomplete | None = None, + routing_key: _str = "", + nowait: bool = False, + arguments: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class BindOk(Method): @@ -391,7 +392,7 @@ class Exchange(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Unbind(Method): @@ -404,16 +405,16 @@ class Exchange(Class): arguments: Incomplete def __init__( self, - ticket: int = ..., - destination: Incomplete | None = ..., - source: Incomplete | None = ..., - routing_key: _str = ..., - nowait: bool = ..., - arguments: Incomplete | None = ..., + ticket: int = 0, + destination: Incomplete | None = None, + source: Incomplete | None = None, + routing_key: _str = "", + nowait: bool = False, + arguments: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class UnbindOk(Method): @@ -421,7 +422,7 @@ class Exchange(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Queue(Class): @@ -439,18 +440,18 @@ class Queue(Class): arguments: Incomplete def __init__( self, - ticket: int = ..., - queue: _str = ..., - passive: bool = ..., - durable: bool = ..., - exclusive: bool = ..., - auto_delete: bool = ..., - nowait: bool = ..., - arguments: Incomplete | None = ..., + ticket: int = 0, + queue: _str = "", + passive: bool = False, + durable: bool = False, + exclusive: bool = False, + auto_delete: bool = False, + nowait: bool = False, + arguments: Incomplete | None = None, ) -> None: ... @property def synchronous(self) -> Literal[True]: ... - def decode(self, encoded: bytes, offset: int = ...) -> Self: ... + def decode(self, encoded: bytes, offset: int = 0) -> Self: ... def encode(self) -> list[bytes]: ... class DeclareOk(Method): @@ -461,7 +462,7 @@ class Queue(Class): def __init__(self, queue: _str, message_count: int, consumer_count: int) -> None: ... @property def synchronous(self) -> Literal[False]: ... - def decode(self, encoded: bytes, offset: int = ...) -> Self: ... + def decode(self, encoded: bytes, offset: int = 0) -> Self: ... def encode(self) -> list[bytes]: ... class Bind(Method): @@ -474,16 +475,16 @@ class Queue(Class): arguments: Incomplete def __init__( self, - ticket: int = ..., - queue: _str = ..., - exchange: Incomplete | None = ..., - routing_key: _str = ..., - nowait: bool = ..., - arguments: Incomplete | None = ..., + ticket: int = 0, + queue: _str = "", + exchange: Incomplete | None = None, + routing_key: _str = "", + nowait: bool = False, + arguments: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class BindOk(Method): @@ -491,7 +492,7 @@ class Queue(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Purge(Method): @@ -499,19 +500,19 @@ class Queue(Class): ticket: Incomplete queue: Incomplete nowait: Incomplete - def __init__(self, ticket: int = ..., queue: _str = ..., nowait: bool = ...) -> None: ... + def __init__(self, ticket: int = 0, queue: _str = "", nowait: bool = False) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class PurgeOk(Method): INDEX: ClassVar[int] message_count: Incomplete - def __init__(self, message_count: Incomplete | None = ...) -> None: ... + def __init__(self, message_count: Incomplete | None = None) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Delete(Method): @@ -522,20 +523,20 @@ class Queue(Class): if_empty: Incomplete nowait: Incomplete def __init__( - self, ticket: int = ..., queue: _str = ..., if_unused: bool = ..., if_empty: bool = ..., nowait: bool = ... + self, ticket: int = 0, queue: _str = "", if_unused: bool = False, if_empty: bool = False, nowait: bool = False ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class DeleteOk(Method): INDEX: ClassVar[int] message_count: Incomplete - def __init__(self, message_count: Incomplete | None = ...) -> None: ... + def __init__(self, message_count: Incomplete | None = None) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Unbind(Method): @@ -547,15 +548,15 @@ class Queue(Class): arguments: Incomplete def __init__( self, - ticket: int = ..., - queue: _str = ..., - exchange: Incomplete | None = ..., - routing_key: _str = ..., - arguments: Incomplete | None = ..., + ticket: int = 0, + queue: _str = "", + exchange: Incomplete | None = None, + routing_key: _str = "", + arguments: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class UnbindOk(Method): @@ -563,7 +564,7 @@ class Queue(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Basic(Class): @@ -574,10 +575,10 @@ class Basic(Class): prefetch_size: Incomplete prefetch_count: Incomplete global_qos: Incomplete - def __init__(self, prefetch_size: int = ..., prefetch_count: int = ..., global_qos: bool = ...) -> None: ... + def __init__(self, prefetch_size: int = 0, prefetch_count: int = 0, global_qos: bool = False) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class QosOk(Method): @@ -585,7 +586,7 @@ class Basic(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Consume(Method): @@ -600,46 +601,46 @@ class Basic(Class): arguments: Incomplete def __init__( self, - ticket: int = ..., - queue: _str = ..., - consumer_tag: _str = ..., - no_local: bool = ..., - no_ack: bool = ..., - exclusive: bool = ..., - nowait: bool = ..., - arguments: Incomplete | None = ..., + ticket: int = 0, + queue: _str = "", + consumer_tag: _str = "", + no_local: bool = False, + no_ack: bool = False, + exclusive: bool = False, + nowait: bool = False, + arguments: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class ConsumeOk(Method): INDEX: ClassVar[int] consumer_tag: Incomplete - def __init__(self, consumer_tag: Incomplete | None = ...) -> None: ... + def __init__(self, consumer_tag: Incomplete | None = None) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Cancel(Method): INDEX: ClassVar[int] consumer_tag: Incomplete nowait: Incomplete - def __init__(self, consumer_tag: Incomplete | None = ..., nowait: bool = ...) -> None: ... + def __init__(self, consumer_tag: Incomplete | None = None, nowait: bool = False) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class CancelOk(Method): INDEX: ClassVar[int] consumer_tag: Incomplete - def __init__(self, consumer_tag: Incomplete | None = ...) -> None: ... + def __init__(self, consumer_tag: Incomplete | None = None) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Publish(Method): @@ -650,11 +651,11 @@ class Basic(Class): mandatory: Incomplete immediate: Incomplete def __init__( - self, ticket: int = ..., exchange: _str = ..., routing_key: _str = ..., mandatory: bool = ..., immediate: bool = ... + self, ticket: int = 0, exchange: _str = "", routing_key: _str = "", mandatory: bool = False, immediate: bool = False ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Return(Method): @@ -665,14 +666,14 @@ class Basic(Class): routing_key: Incomplete def __init__( self, - reply_code: Incomplete | None = ..., - reply_text: _str = ..., - exchange: Incomplete | None = ..., - routing_key: Incomplete | None = ..., + reply_code: Incomplete | None = None, + reply_text: _str = "", + exchange: Incomplete | None = None, + routing_key: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Deliver(Method): @@ -684,15 +685,15 @@ class Basic(Class): routing_key: Incomplete def __init__( self, - consumer_tag: Incomplete | None = ..., - delivery_tag: Incomplete | None = ..., - redelivered: bool = ..., - exchange: Incomplete | None = ..., - routing_key: Incomplete | None = ..., + consumer_tag: Incomplete | None = None, + delivery_tag: Incomplete | None = None, + redelivered: bool = False, + exchange: Incomplete | None = None, + routing_key: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Get(Method): @@ -700,10 +701,10 @@ class Basic(Class): ticket: Incomplete queue: Incomplete no_ack: Incomplete - def __init__(self, ticket: int = ..., queue: _str = ..., no_ack: bool = ...) -> None: ... + def __init__(self, ticket: int = 0, queue: _str = "", no_ack: bool = False) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class GetOk(Method): @@ -715,62 +716,62 @@ class Basic(Class): message_count: Incomplete def __init__( self, - delivery_tag: Incomplete | None = ..., - redelivered: bool = ..., - exchange: Incomplete | None = ..., - routing_key: Incomplete | None = ..., - message_count: Incomplete | None = ..., + delivery_tag: Incomplete | None = None, + redelivered: bool = False, + exchange: Incomplete | None = None, + routing_key: Incomplete | None = None, + message_count: Incomplete | None = None, ) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class GetEmpty(Method): INDEX: ClassVar[int] cluster_id: Incomplete - def __init__(self, cluster_id: _str = ...) -> None: ... + def __init__(self, cluster_id: _str = "") -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Ack(Method): INDEX: ClassVar[int] delivery_tag: Incomplete multiple: Incomplete - def __init__(self, delivery_tag: int = ..., multiple: bool = ...) -> None: ... + def __init__(self, delivery_tag: int = 0, multiple: bool = False) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Reject(Method): INDEX: ClassVar[int] delivery_tag: Incomplete requeue: Incomplete - def __init__(self, delivery_tag: Incomplete | None = ..., requeue: bool = ...) -> None: ... + def __init__(self, delivery_tag: Incomplete | None = None, requeue: bool = True) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class RecoverAsync(Method): INDEX: ClassVar[int] requeue: Incomplete - def __init__(self, requeue: bool = ...) -> None: ... + def __init__(self, requeue: bool = False) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Recover(Method): INDEX: ClassVar[int] requeue: Incomplete - def __init__(self, requeue: bool = ...) -> None: ... + def __init__(self, requeue: bool = False) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class RecoverOk(Method): @@ -778,7 +779,7 @@ class Basic(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Nack(Method): @@ -786,10 +787,10 @@ class Basic(Class): delivery_tag: Incomplete multiple: Incomplete requeue: Incomplete - def __init__(self, delivery_tag: int = ..., multiple: bool = ..., requeue: bool = ...) -> None: ... + def __init__(self, delivery_tag: int = 0, multiple: bool = False, requeue: bool = True) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Tx(Class): @@ -800,7 +801,7 @@ class Tx(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class SelectOk(Method): @@ -808,7 +809,7 @@ class Tx(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Commit(Method): @@ -816,7 +817,7 @@ class Tx(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class CommitOk(Method): @@ -824,7 +825,7 @@ class Tx(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Rollback(Method): @@ -832,7 +833,7 @@ class Tx(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class RollbackOk(Method): @@ -840,7 +841,7 @@ class Tx(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class Confirm(Class): @@ -849,10 +850,10 @@ class Confirm(Class): class Select(Method): INDEX: ClassVar[int] nowait: Incomplete - def __init__(self, nowait: bool = ...) -> None: ... + def __init__(self, nowait: bool = False) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class SelectOk(Method): @@ -860,7 +861,7 @@ class Confirm(Class): def __init__(self) -> None: ... @property def synchronous(self): ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... class BasicProperties(Properties): @@ -896,22 +897,22 @@ class BasicProperties(Properties): cluster_id: Incomplete def __init__( self, - content_type: Incomplete | None = ..., - content_encoding: Incomplete | None = ..., - headers: Incomplete | None = ..., - delivery_mode: Incomplete | None = ..., - priority: Incomplete | None = ..., - correlation_id: Incomplete | None = ..., - reply_to: Incomplete | None = ..., - expiration: Incomplete | None = ..., - message_id: Incomplete | None = ..., - timestamp: Incomplete | None = ..., - type: Incomplete | None = ..., - user_id: Incomplete | None = ..., - app_id: Incomplete | None = ..., - cluster_id: Incomplete | None = ..., + content_type: Incomplete | None = None, + content_encoding: Incomplete | None = None, + headers: Incomplete | None = None, + delivery_mode: Incomplete | None = None, + priority: Incomplete | None = None, + correlation_id: Incomplete | None = None, + reply_to: Incomplete | None = None, + expiration: Incomplete | None = None, + message_id: Incomplete | None = None, + timestamp: Incomplete | None = None, + type: Incomplete | None = None, + user_id: Incomplete | None = None, + app_id: Incomplete | None = None, + cluster_id: Incomplete | None = None, ) -> None: ... - def decode(self, encoded, offset: int = ...): ... + def decode(self, encoded, offset: int = 0): ... def encode(self): ... methods: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/validators.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/validators.pyi index 52ea03623..d376e6f1c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/validators.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/pika/validators.pyi @@ -1,4 +1,4 @@ def require_string(value, value_name) -> None: ... -def require_callback(callback, callback_name: str = ...) -> None: ... +def require_callback(callback, callback_name: str = "callback") -> None: ... def rpc_completion_callback(callback): ... def zero_or_greater(name, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/prettytable/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/prettytable/METADATA.toml deleted file mode 100644 index a2c3acdba..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/prettytable/METADATA.toml +++ /dev/null @@ -1,2 +0,0 @@ -version = "3.4.*" -obsolete_since = "3.5.0" # Released on 2022-10-28 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/__init__.pyi deleted file mode 100644 index f66d036bc..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/__init__.pyi +++ /dev/null @@ -1,21 +0,0 @@ -from .prettytable import ( - ALL as ALL, - DEFAULT as DEFAULT, - DOUBLE_BORDER as DOUBLE_BORDER, - FRAME as FRAME, - HEADER as HEADER, - MARKDOWN as MARKDOWN, - MSWORD_FRIENDLY as MSWORD_FRIENDLY, - NONE as NONE, - ORGMODE as ORGMODE, - PLAIN_COLUMNS as PLAIN_COLUMNS, - RANDOM as RANDOM, - SINGLE_BORDER as SINGLE_BORDER, - PrettyTable as PrettyTable, - TableHandler as TableHandler, - from_csv as from_csv, - from_db_cursor as from_db_cursor, - from_html as from_html, - from_html_one as from_html_one, - from_json as from_json, -) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/colortable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/colortable.pyi deleted file mode 100644 index 39a60f592..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/colortable.pyi +++ /dev/null @@ -1,43 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Callable -from typing import ClassVar - -from .prettytable import PrettyTable - -RESET_CODE: str - -init: Callable[[], object] - -class Theme: - default_color: str - vertical_char: str - vertical_color: str - horizontal_char: str - horizontal_color: str - junction_char: str - junction_color: str - def __init__( - self, - default_color: str = ..., - vertical_char: str = ..., - vertical_color: str = ..., - horizontal_char: str = ..., - horizontal_color: str = ..., - junction_char: str = ..., - junction_color: str = ..., - ) -> None: ... - # The following method is broken in upstream code. - def format_code(s: str) -> str: ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues] - -class Themes: - DEFAULT: ClassVar[Theme] - OCEAN: ClassVar[Theme] - -class ColorTable(PrettyTable): - def __init__(self, field_names: Incomplete | None = ..., **kwargs) -> None: ... - @property - def theme(self) -> Theme: ... - @theme.setter - def theme(self, value: Theme): ... - def update_theme(self) -> None: ... - def get_string(self, **kwargs) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/prettytable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/prettytable.pyi deleted file mode 100644 index 1c1482501..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/prettytable/prettytable/prettytable.pyi +++ /dev/null @@ -1,241 +0,0 @@ -from _typeshed import Incomplete -from html.parser import HTMLParser -from typing import Any - -FRAME: int -ALL: int -NONE: int -HEADER: int -DEFAULT: int -MSWORD_FRIENDLY: int -PLAIN_COLUMNS: int -MARKDOWN: int -ORGMODE: int -RANDOM: int -SINGLE_BORDER: int -DOUBLE_BORDER: int -BASE_ALIGN_VALUE: str - -class PrettyTable: - encoding: Any - def __init__(self, field_names: Incomplete | None = ..., **kwargs): ... - def __getattr__(self, name: str): ... - def __getitem__(self, index): ... - @property - def field_names(self): ... - @field_names.setter - def field_names(self, val) -> None: ... - @property - def align(self): ... - @align.setter - def align(self, val) -> None: ... - @property - def valign(self): ... - @valign.setter - def valign(self, val) -> None: ... - @property - def max_width(self): ... - @max_width.setter - def max_width(self, val) -> None: ... - @property - def min_width(self): ... - @min_width.setter - def min_width(self, val) -> None: ... - @property - def min_table_width(self): ... - @min_table_width.setter - def min_table_width(self, val) -> None: ... - @property - def max_table_width(self): ... - @max_table_width.setter - def max_table_width(self, val) -> None: ... - @property - def fields(self): ... - @fields.setter - def fields(self, val) -> None: ... - @property - def title(self): ... - @title.setter - def title(self, val) -> None: ... - @property - def start(self): ... - @start.setter - def start(self, val) -> None: ... - @property - def end(self): ... - @end.setter - def end(self, val) -> None: ... - @property - def sortby(self): ... - @sortby.setter - def sortby(self, val) -> None: ... - @property - def reversesort(self): ... - @reversesort.setter - def reversesort(self, val) -> None: ... - @property - def sort_key(self): ... - @sort_key.setter - def sort_key(self, val) -> None: ... - @property - def header(self): ... - @header.setter - def header(self, val) -> None: ... - @property - def header_style(self): ... - @header_style.setter - def header_style(self, val) -> None: ... - @property - def border(self): ... - @border.setter - def border(self, val) -> None: ... - @property - def hrules(self): ... - @hrules.setter - def hrules(self, val) -> None: ... - @property - def vrules(self): ... - @vrules.setter - def vrules(self, val) -> None: ... - @property - def int_format(self): ... - @int_format.setter - def int_format(self, val) -> None: ... - @property - def float_format(self): ... - @float_format.setter - def float_format(self, val) -> None: ... - @property - def padding_width(self): ... - @padding_width.setter - def padding_width(self, val) -> None: ... - @property - def left_padding_width(self): ... - @left_padding_width.setter - def left_padding_width(self, val) -> None: ... - @property - def right_padding_width(self): ... - @right_padding_width.setter - def right_padding_width(self, val) -> None: ... - @property - def vertical_char(self): ... - @vertical_char.setter - def vertical_char(self, val) -> None: ... - @property - def horizontal_char(self): ... - @horizontal_char.setter - def horizontal_char(self, val) -> None: ... - @property - def junction_char(self): ... - @junction_char.setter - def junction_char(self, val) -> None: ... - @property - def format(self): ... - @format.setter - def format(self, val) -> None: ... - @property - def print_empty(self): ... - @print_empty.setter - def print_empty(self, val) -> None: ... - @property - def attributes(self): ... - @attributes.setter - def attributes(self, val) -> None: ... - @property - def oldsortslice(self): ... - @oldsortslice.setter - def oldsortslice(self, val) -> None: ... - @property - def bottom_junction_char(self): ... - @bottom_junction_char.setter - def bottom_junction_char(self, val) -> None: ... - @property - def bottom_left_junction_char(self): ... - @bottom_left_junction_char.setter - def bottom_left_junction_char(self, val) -> None: ... - @property - def bottom_right_junction_char(self): ... - @bottom_right_junction_char.setter - def bottom_right_junction_char(self, val) -> None: ... - @property - def custom_format(self): ... - @custom_format.setter - def custom_format(self, val) -> None: ... - @property - def horizontal_align_char(self): ... - @horizontal_align_char.setter - def horizontal_align_char(self, val) -> None: ... - @property - def left_junction_char(self): ... - @left_junction_char.setter - def left_junction_char(self, val) -> None: ... - @property - def none_format(self): ... - @none_format.setter - def none_format(self, val) -> None: ... - @property - def preserve_internal_border(self): ... - @preserve_internal_border.setter - def preserve_internal_border(self, val) -> None: ... - @property - def right_junction_char(self): ... - @right_junction_char.setter - def right_junction_char(self, val) -> None: ... - @property - def top_junction_char(self): ... - @top_junction_char.setter - def top_junction_char(self, val) -> None: ... - @property - def top_left_junction_char(self): ... - @top_left_junction_char.setter - def top_left_junction_char(self, val) -> None: ... - @property - def top_right_junction_char(self): ... - @top_right_junction_char.setter - def top_right_junction_char(self, val) -> None: ... - @property - def xhtml(self) -> bool: ... - @xhtml.setter - def xhtml(self, val: bool) -> None: ... - @property - def rows(self) -> list[Incomplete]: ... - def add_autoindex(self, fieldname: str = ...): ... - def get_latex_string(self, **kwargs) -> str: ... - def set_style(self, style) -> None: ... - def add_rows(self, rows) -> None: ... - def add_row(self, row) -> None: ... - def del_row(self, row_index) -> None: ... - def add_column(self, fieldname, column, align: str = ..., valign: str = ...) -> None: ... - def del_column(self, fieldname) -> None: ... - def clear_rows(self) -> None: ... - def clear(self) -> None: ... - def copy(self): ... - def get_string(self, **kwargs) -> str: ... - def paginate(self, page_length: int = ..., line_break: str = ..., **kwargs): ... - def get_csv_string(self, **kwargs) -> str: ... - def get_json_string(self, **kwargs) -> str: ... - def get_html_string(self, **kwargs) -> str: ... - -def from_csv(fp, field_names: Incomplete | None = ..., **kwargs): ... -def from_db_cursor(cursor, **kwargs): ... -def from_json(json_string, **kwargs): ... - -class TableHandler(HTMLParser): - kwargs: Any - tables: Any - last_row: Any - rows: Any - max_row_width: int - active: Any - last_content: str - is_last_row_header: bool - colspan: int - def __init__(self, **kwargs) -> None: ... - def handle_starttag(self, tag, attrs) -> None: ... - def handle_endtag(self, tag) -> None: ... - def handle_data(self, data) -> None: ... - def generate_table(self, rows): ... - def make_fields_unique(self, fields) -> None: ... - -def from_html(html_code, **kwargs): ... -def from_html_one(html_code, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/containers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/containers.pyi index 80da52a6b..044cd65dc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/containers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/containers.pyi @@ -67,7 +67,7 @@ class ScalarMap(MutableMapping[_K, _ScalarV]): def __iter__(self) -> Iterator[_K]: ... def __eq__(self, other: object) -> bool: ... @overload - def get(self, key: _K, default: None = ...) -> _ScalarV: ... + def get(self, key: _K, default: None = ...) -> _ScalarV | None: ... @overload def get(self, key: _K, default: _ScalarV | _T) -> _ScalarV | _T: ... def MergeFrom(self: _M, other: _M): ... @@ -89,7 +89,7 @@ class MessageMap(MutableMapping[_K, _MessageV]): def __iter__(self) -> Iterator[_K]: ... def __eq__(self, other: object) -> bool: ... @overload - def get(self, key: _K, default: None = ...) -> _MessageV: ... + def get(self, key: _K, default: None = ...) -> _MessageV | None: ... @overload def get(self, key: _K, default: _MessageV | _T) -> _MessageV | _T: ... def get_or_create(self, key: _K) -> _MessageV: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/well_known_types.pyi b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/well_known_types.pyi index f0e17309d..e257cf052 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/well_known_types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/well_known_types.pyi @@ -7,17 +7,19 @@ from typing_extensions import TypeAlias from google.protobuf import struct_pb2 class Any: - type_url: tAny = ... - value: tAny = ... - def Pack(self, msg: tAny, type_url_prefix: str = ..., deterministic: Incomplete | None = ...) -> None: ... - def Unpack(self, msg: tAny) -> bool: ... + type_url: str + value: Incomplete + def Pack( + self, msg: Incomplete, type_url_prefix: str = "type.googleapis.com/", deterministic: Incomplete | None = None + ) -> None: ... + def Unpack(self, msg: Incomplete) -> bool: ... def TypeName(self) -> str: ... - def Is(self, descriptor: tAny) -> bool: ... + def Is(self, descriptor: Incomplete) -> bool: ... class Timestamp: def ToJsonString(self) -> str: ... - seconds: int = ... - nanos: int = ... + seconds: int + nanos: int def FromJsonString(self, value: str) -> None: ... def GetCurrentTime(self) -> None: ... def ToNanoseconds(self) -> int: ... @@ -33,8 +35,8 @@ class Timestamp: class Duration: def ToJsonString(self) -> str: ... - seconds: int = ... - nanos: int = ... + seconds: int + nanos: int def FromJsonString(self, value: tAny) -> None: ... def ToNanoseconds(self) -> int: ... def ToMicroseconds(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/text_format.pyi b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/text_format.pyi index 3cd245913..593739c94 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/text_format.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/text_format.pyi @@ -107,20 +107,20 @@ def PrintFieldValue( ) -> None: ... class _Printer: - out: SupportsWrite[str] = ... - indent: int = ... - as_utf8: bool = ... - as_one_line: bool = ... - use_short_repeated_primitives: bool = ... - pointy_brackets: bool = ... - use_index_order: bool = ... - float_format: str | None = ... - double_format: str | None = ... - use_field_number: bool = ... - descriptor_pool: DescriptorPool | None = ... - message_formatter: _MessageFormatter | None = ... - print_unknown_fields: bool = ... - force_colon: bool = ... + out: SupportsWrite[str] + indent: int + as_utf8: bool + as_one_line: bool + use_short_repeated_primitives: bool + pointy_brackets: bool + use_index_order: bool + float_format: str | None + double_format: str | None + use_field_number: bool + descriptor_pool: DescriptorPool | None + message_formatter: _MessageFormatter | None + print_unknown_fields: bool + force_colon: bool def __init__( self, out: SupportsWrite[str], @@ -168,10 +168,10 @@ def MergeLines( ) -> _M: ... class _Parser: - allow_unknown_extension: bool = ... - allow_field_number: bool = ... - descriptor_pool: DescriptorPool | None = ... - allow_unknown_field: bool = ... + allow_unknown_extension: bool + allow_field_number: bool + descriptor_pool: DescriptorPool | None + allow_unknown_field: bool def __init__( self, allow_unknown_extension: bool = ..., @@ -185,8 +185,8 @@ class _Parser: _ParseError: TypeAlias = ParseError class Tokenizer: - token: str = ... - def __init__(self, lines: Iterable[str], skip_comments: bool = ...) -> None: ... + token: str + def __init__(self, lines: Iterable[str], skip_comments: bool = True) -> None: ... def LookingAt(self, token: str) -> bool: ... def AtEnd(self) -> bool: ... def TryConsume(self, token: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi index e4a72834c..54a282f72 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi @@ -156,7 +156,7 @@ _Status: TypeAlias = Literal[ ] class Process: - def __init__(self, pid: int | None = ...) -> None: ... + def __init__(self, pid: int | None = None) -> None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... def __hash__(self) -> int: ... @@ -164,7 +164,7 @@ class Process: def pid(self) -> int: ... def oneshot(self) -> AbstractContextManager[None]: ... def as_dict( - self, attrs: list[str] | tuple[str, ...] | set[str] | frozenset[str] | None = ..., ad_value: Incomplete | None = ... + self, attrs: list[str] | tuple[str, ...] | set[str] | frozenset[str] | None = None, ad_value: Incomplete | None = None ) -> dict[str, Any]: ... def parent(self) -> Process: ... def parents(self) -> list[Process]: ... @@ -177,7 +177,7 @@ class Process: def username(self) -> str: ... def create_time(self) -> float: ... def cwd(self) -> str: ... - def nice(self, value: int | None = ...) -> int: ... + def nice(self, value: int | None = None) -> int: ... if sys.platform != "win32": def uids(self) -> puids: ... def gids(self) -> pgids: ... @@ -185,9 +185,9 @@ class Process: def num_fds(self) -> int: ... if sys.platform != "darwin": def io_counters(self): ... - def ionice(self, ioclass: int | None = ..., value: int | None = ...) -> pionice: ... - def cpu_affinity(self, cpus: list[int] | None = ...) -> list[int] | None: ... - def memory_maps(self, grouped: bool = ...): ... + def ionice(self, ioclass: int | None = None, value: int | None = None) -> pionice: ... + def cpu_affinity(self, cpus: list[int] | None = None) -> list[int] | None: ... + def memory_maps(self, grouped: bool = True): ... if sys.platform == "linux": def rlimit(self, resource: int, limits: tuple[int, int] | None = ...) -> tuple[int, int]: ... def cpu_num(self) -> int: ... @@ -199,21 +199,21 @@ class Process: def num_ctx_switches(self) -> pctxsw: ... def num_threads(self) -> int: ... def threads(self) -> list[pthread]: ... - def children(self, recursive: bool = ...) -> list[Process]: ... - def cpu_percent(self, interval: float | None = ...) -> float: ... + def children(self, recursive: bool = False) -> list[Process]: ... + def cpu_percent(self, interval: float | None = None) -> float: ... def cpu_times(self) -> pcputimes: ... def memory_info(self) -> pmem: ... def memory_info_ex(self) -> pmem: ... def memory_full_info(self) -> pfullmem: ... - def memory_percent(self, memtype: str = ...) -> float: ... + def memory_percent(self, memtype: str = "rss") -> float: ... def open_files(self) -> list[popenfile]: ... - def connections(self, kind: str = ...) -> list[pconn]: ... + def connections(self, kind: str = "inet") -> list[pconn]: ... def send_signal(self, sig: int) -> None: ... def suspend(self) -> None: ... def resume(self) -> None: ... def terminate(self) -> None: ... def kill(self) -> None: ... - def wait(self, timeout: int | None = ...) -> int: ... + def wait(self, timeout: int | None = None) -> int: ... class Popen(Process): def __init__(self, *args, **kwargs) -> None: ... @@ -224,31 +224,31 @@ class Popen(Process): def pids() -> list[int]: ... def pid_exists(pid: int) -> bool: ... def process_iter( - attrs: list[str] | tuple[str, ...] | set[str] | frozenset[str] | None = ..., ad_value: Incomplete | None = ... + attrs: list[str] | tuple[str, ...] | set[str] | frozenset[str] | None = None, ad_value: Incomplete | None = None ) -> Iterator[Process]: ... def wait_procs( - procs: Iterable[Process], timeout: float | None = ..., callback: Callable[[Process], object] | None = ... + procs: Iterable[Process], timeout: float | None = None, callback: Callable[[Process], object] | None = None ) -> tuple[list[Process], list[Process]]: ... -def cpu_count(logical: bool = ...) -> int: ... -def cpu_times(percpu: bool = ...): ... -def cpu_percent(interval: float | None = ..., percpu: bool = ...) -> float: ... -def cpu_times_percent(interval: float | None = ..., percpu: bool = ...): ... +def cpu_count(logical: bool = True) -> int: ... +def cpu_times(percpu: bool = False): ... +def cpu_percent(interval: float | None = None, percpu: bool = False) -> float: ... +def cpu_times_percent(interval: float | None = None, percpu: bool = False): ... def cpu_stats() -> scpustats: ... -def cpu_freq(percpu: bool = ...) -> scpufreq: ... +def cpu_freq(percpu: bool = False) -> scpufreq: ... def getloadavg() -> tuple[float, float, float]: ... def virtual_memory() -> svmem: ... def swap_memory() -> sswap: ... def disk_usage(path: str) -> sdiskusage: ... -def disk_partitions(all: bool = ...) -> list[sdiskpart]: ... +def disk_partitions(all: bool = False) -> list[sdiskpart]: ... @overload -def disk_io_counters(perdisk: Literal[False] = ..., nowrap: bool = ...) -> sdiskio | None: ... +def disk_io_counters(perdisk: Literal[False] = False, nowrap: bool = True) -> sdiskio | None: ... @overload -def disk_io_counters(perdisk: Literal[True], nowrap: bool = ...) -> dict[str, sdiskio]: ... +def disk_io_counters(perdisk: Literal[True], nowrap: bool = True) -> dict[str, sdiskio]: ... @overload -def net_io_counters(pernic: Literal[False] = ..., nowrap: bool = ...) -> snetio: ... +def net_io_counters(pernic: Literal[False] = False, nowrap: bool = True) -> snetio: ... @overload -def net_io_counters(pernic: Literal[True], nowrap: bool = ...) -> dict[str, snetio]: ... -def net_connections(kind: str = ...) -> list[sconn]: ... +def net_io_counters(pernic: Literal[True], nowrap: bool = True) -> dict[str, snetio]: ... +def net_connections(kind: str = "inet") -> list[sconn]: ... def net_if_addrs() -> dict[str, list[snicaddr]]: ... def net_if_stats() -> dict[str, snicstats]: ... def boot_time() -> float: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_common.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_common.pyi index 3dc0db3c7..46fba3619 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_common.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_common.pyi @@ -222,7 +222,7 @@ class NoSuchProcess(Error): pid: Any name: Any msg: Any - def __init__(self, pid, name: Incomplete | None = ..., msg: Incomplete | None = ...) -> None: ... + def __init__(self, pid, name: Incomplete | None = None, msg: Incomplete | None = None) -> None: ... class ZombieProcess(NoSuchProcess): __module__: str @@ -231,7 +231,7 @@ class ZombieProcess(NoSuchProcess): name: Any msg: Any def __init__( - self, pid, name: Incomplete | None = ..., ppid: Incomplete | None = ..., msg: Incomplete | None = ... + self, pid, name: Incomplete | None = None, ppid: Incomplete | None = None, msg: Incomplete | None = None ) -> None: ... class AccessDenied(Error): @@ -239,18 +239,18 @@ class AccessDenied(Error): pid: Any name: Any msg: Any - def __init__(self, pid: Incomplete | None = ..., name: Incomplete | None = ..., msg: Incomplete | None = ...) -> None: ... + def __init__(self, pid: Incomplete | None = None, name: Incomplete | None = None, msg: Incomplete | None = None) -> None: ... class TimeoutExpired(Error): __module__: str seconds: Any pid: Any name: Any - def __init__(self, seconds, pid: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... + def __init__(self, seconds, pid: Incomplete | None = None, name: Incomplete | None = None) -> None: ... _Func = TypeVar("_Func", bound=Callable[..., Any]) -def usage_percent(used, total, round_: int | None = ...) -> float: ... +def usage_percent(used, total, round_: int | None = None) -> float: ... def memoize(fun: _Func) -> _Func: ... def memoize_when_activated(fun: _Func) -> _Func: ... def isfile_strict(path: StrOrBytesPath) -> bool: ... @@ -262,7 +262,7 @@ def socktype_to_enum(num: int) -> SocketKind: ... @overload def conn_to_ntuple(fd: int, fam: int, type_: int, laddr, raddr, status: str, status_map, pid: int) -> sconn: ... @overload -def conn_to_ntuple(fd: int, fam: int, type_: int, laddr, raddr, status: str, status_map, pid: None = ...) -> pconn: ... +def conn_to_ntuple(fd: int, fam: int, type_: int, laddr, raddr, status: str, status_map, pid: None = None) -> pconn: ... def deprecated_method(replacement: str) -> Callable[[_Func], _Func]: ... class _WrapNumbers: @@ -272,7 +272,7 @@ class _WrapNumbers: reminder_keys: Any def __init__(self) -> None: ... def run(self, input_dict, name): ... - def cache_clear(self, name: Incomplete | None = ...) -> None: ... + def cache_clear(self, name: Incomplete | None = None) -> None: ... def cache_info(self): ... def wrap_numbers(input_dict, name: str): ... @@ -280,9 +280,9 @@ def open_binary(fname): ... def open_text(fname): ... def cat(fname, fallback=..., _open=...): ... def bcat(fname, fallback=...): ... -def bytes2human(n: int, format: str = ...) -> str: ... +def bytes2human(n: int, format: str = "%(value).1f%(symbol)s") -> str: ... def get_procfs_path() -> str: ... def term_supports_colors(file: SupportsWrite[str] = ...) -> bool: ... -def hilite(s: str, color: str | None = ..., bold: bool = ...) -> str: ... -def print_color(s: str, color: str | None = ..., bold: bool = ..., file: SupportsWrite[str] = ...) -> None: ... +def hilite(s: str, color: str | None = None, bold: bool = False) -> str: ... +def print_color(s: str, color: str | None = None, bold: bool = False, file: SupportsWrite[str] = ...) -> None: ... def debug(msg) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psposix.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psposix.pyi index 972008dd1..6d1f357a7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psposix.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psposix.pyi @@ -3,8 +3,8 @@ from _typeshed import Incomplete def pid_exists(pid): ... def wait_pid( pid, - timeout: Incomplete | None = ..., - proc_name: Incomplete | None = ..., + timeout: Incomplete | None = None, + proc_name: Incomplete | None = None, _waitpid=..., _timer=..., _min=..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pswindows.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pswindows.pyi index 8dd501d99..7fc653304 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pswindows.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pswindows.pyi @@ -130,7 +130,7 @@ def cpu_count_cores() -> int | None: ... def cpu_stats(): ... def cpu_freq(): ... def getloadavg(): ... -def net_connections(kind, _pid: int = ...): ... +def net_connections(kind, _pid: int = -1): ... def net_if_stats(): ... def net_io_counters(): ... def net_if_addrs(): ... @@ -159,7 +159,7 @@ pid_exists: Any ppid_map: Any def is_permission_err(exc): ... -def convert_oserror(exc, pid: Incomplete | None = ..., name: Incomplete | None = ...): ... +def convert_oserror(exc, pid: Incomplete | None = None, name: Incomplete | None = None): ... def wrap_exceptions(fun): ... def retry_error_partial_copy(fun): ... @@ -178,7 +178,7 @@ class Process: def memory_maps(self) -> None: ... def kill(self): ... def send_signal(self, sig) -> None: ... - def wait(self, timeout: Incomplete | None = ...): ... + def wait(self, timeout: Incomplete | None = None): ... def username(self): ... def create_time(self): ... def num_threads(self): ... @@ -188,7 +188,7 @@ class Process: def resume(self) -> None: ... def cwd(self): ... def open_files(self): ... - def connections(self, kind: str = ...): ... + def connections(self, kind: str = "inet"): ... def nice_get(self): ... def nice_set(self, value): ... def ionice_get(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/__init__.pyi index 5c0277751..00267dd99 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/__init__.pyi @@ -36,15 +36,15 @@ from psycopg2._psycopg import ( _T_conn = TypeVar("_T_conn", bound=connection) @overload -def connect(dsn: str, connection_factory: Callable[..., _T_conn], cursor_factory: None = ..., **kwargs: Any) -> _T_conn: ... +def connect(dsn: str, connection_factory: Callable[..., _T_conn], cursor_factory: None = None, **kwargs: Any) -> _T_conn: ... @overload def connect( - dsn: str | None = ..., *, connection_factory: Callable[..., _T_conn], cursor_factory: None = ..., **kwargs: Any + dsn: str | None = None, *, connection_factory: Callable[..., _T_conn], cursor_factory: None = None, **kwargs: Any ) -> _T_conn: ... @overload def connect( - dsn: str | None = ..., - connection_factory: Callable[..., connection] | None = ..., - cursor_factory: Callable[..., cursor] | None = ..., + dsn: str | None = None, + connection_factory: Callable[..., connection] | None = None, + cursor_factory: Callable[..., cursor] | None = None, **kwargs: Any, ) -> connection: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_ipaddress.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_ipaddress.pyi index 0b0cf5a82..7c9cb8b0d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_ipaddress.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_ipaddress.pyi @@ -3,7 +3,7 @@ from typing import Any ipaddress: Any -def register_ipaddress(conn_or_curs: Incomplete | None = ...) -> None: ... -def cast_interface(s, cur: Incomplete | None = ...): ... -def cast_network(s, cur: Incomplete | None = ...): ... +def register_ipaddress(conn_or_curs: Incomplete | None = None) -> None: ... +def cast_interface(s, cur: Incomplete | None = None): ... +def cast_network(s, cur: Incomplete | None = None): ... def adapt_ipaddress(obj): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_json.pyi index 785bbc43c..c1dd3ee3f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_json.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_json.pyi @@ -8,19 +8,19 @@ JSONBARRAY_OID: int class Json: adapted: Any - def __init__(self, adapted, dumps: Incomplete | None = ...) -> None: ... + def __init__(self, adapted, dumps: Incomplete | None = None) -> None: ... def __conform__(self, proto): ... def dumps(self, obj): ... def prepare(self, conn) -> None: ... def getquoted(self): ... def register_json( - conn_or_curs: Incomplete | None = ..., - globally: bool = ..., - loads: Incomplete | None = ..., - oid: Incomplete | None = ..., - array_oid: Incomplete | None = ..., - name: str = ..., + conn_or_curs: Incomplete | None = None, + globally: bool = False, + loads: Incomplete | None = None, + oid: Incomplete | None = None, + array_oid: Incomplete | None = None, + name: str = "json", ): ... -def register_default_json(conn_or_curs: Incomplete | None = ..., globally: bool = ..., loads: Incomplete | None = ...): ... -def register_default_jsonb(conn_or_curs: Incomplete | None = ..., globally: bool = ..., loads: Incomplete | None = ...): ... +def register_default_json(conn_or_curs: Incomplete | None = None, globally: bool = False, loads: Incomplete | None = None): ... +def register_default_jsonb(conn_or_curs: Incomplete | None = None, globally: bool = False, loads: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_range.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_range.pyi index eed81ccb3..a3b3a118c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_range.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/_range.pyi @@ -3,7 +3,7 @@ from typing import Any class Range: def __init__( - self, lower: Incomplete | None = ..., upper: Incomplete | None = ..., bounds: str = ..., empty: bool = ... + self, lower: Incomplete | None = None, upper: Incomplete | None = None, bounds: str = "[)", empty: bool = False ) -> None: ... @property def lower(self): ... @@ -29,7 +29,7 @@ class Range: def __gt__(self, other): ... def __ge__(self, other): ... -def register_range(pgrange, pyrange, conn_or_curs, globally: bool = ...): ... +def register_range(pgrange, pyrange, conn_or_curs, globally: bool = False): ... class RangeAdapter: name: Any @@ -43,8 +43,8 @@ class RangeCaster: subtype_oid: Any typecaster: Any array_typecaster: Any - def __init__(self, pgrange, pyrange, oid, subtype_oid, array_oid: Incomplete | None = ...) -> None: ... - def parse(self, s, cur: Incomplete | None = ...): ... + def __init__(self, pgrange, pyrange, oid, subtype_oid, array_oid: Incomplete | None = None) -> None: ... + def parse(self, s, cur: Incomplete | None = None): ... class NumericRange(Range): ... class DateRange(Range): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/errorcodes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/errorcodes.pyi index f4726bd14..66e6cef18 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/errorcodes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/errorcodes.pyi @@ -1,4 +1,4 @@ -def lookup(code, _cache=...): ... +def lookup(code, _cache={}): ... CLASS_SUCCESSFUL_COMPLETION: str CLASS_WARNING: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/extensions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/extensions.pyi index 2dcac8227..227212312 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/extensions.pyi @@ -105,9 +105,9 @@ class SQL_IN: class NoneAdapter: def __init__(self, obj) -> None: ... - def getquoted(self, _null: bytes = ...): ... + def getquoted(self, _null: bytes = b"NULL"): ... -def make_dsn(dsn: Incomplete | None = ..., **kwargs): ... +def make_dsn(dsn: Incomplete | None = None, **kwargs): ... JSON: Any JSONARRAY: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/extras.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/extras.pyi index 7bce57e8b..5c809e51e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/extras.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/extras.pyi @@ -55,10 +55,10 @@ class DictConnection(_connection): class DictCursor(DictCursorBase): def __init__(self, *args, **kwargs) -> None: ... index: Any - def execute(self, query, vars: Incomplete | None = ...): ... - def callproc(self, procname, vars: Incomplete | None = ...): ... + def execute(self, query, vars: Incomplete | None = None): ... + def callproc(self, procname, vars: Incomplete | None = None): ... def fetchone(self) -> DictRow | None: ... # type: ignore[override] - def fetchmany(self, size: int | None = ...) -> list[DictRow]: ... # type: ignore[override] + def fetchmany(self, size: int | None = None) -> list[DictRow]: ... # type: ignore[override] def fetchall(self) -> list[DictRow]: ... # type: ignore[override] def __next__(self) -> DictRow: ... # type: ignore[override] @@ -69,7 +69,7 @@ class DictRow(list[Any]): def items(self): ... def keys(self): ... def values(self): ... - def get(self, x, default: Incomplete | None = ...): ... + def get(self, x, default: Incomplete | None = None): ... def copy(self): ... def __contains__(self, x): ... def __reduce__(self): ... @@ -96,10 +96,10 @@ class RealDictConnection(_connection): class RealDictCursor(DictCursorBase): def __init__(self, *args, **kwargs) -> None: ... column_mapping: Any - def execute(self, query, vars: Incomplete | None = ...): ... - def callproc(self, procname, vars: Incomplete | None = ...): ... + def execute(self, query, vars: Incomplete | None = None): ... + def callproc(self, procname, vars: Incomplete | None = None): ... def fetchone(self) -> RealDictRow | None: ... # type: ignore[override] - def fetchmany(self, size: int | None = ...) -> list[RealDictRow]: ... # type: ignore[override] + def fetchmany(self, size: int | None = None) -> list[RealDictRow]: ... # type: ignore[override] def fetchall(self) -> list[RealDictRow]: ... # type: ignore[override] def __next__(self) -> RealDictRow: ... # type: ignore[override] @@ -129,11 +129,11 @@ class NamedTupleConnection(_connection): class NamedTupleCursor(_cursor): Record: Any MAX_CACHE: int - def execute(self, query, vars: Incomplete | None = ...): ... + def execute(self, query, vars: Incomplete | None = None): ... def executemany(self, query, vars): ... - def callproc(self, procname, vars: Incomplete | None = ...): ... + def callproc(self, procname, vars: Incomplete | None = None): ... def fetchone(self) -> NamedTuple | None: ... - def fetchmany(self, size: int | None = ...) -> list[NamedTuple]: ... # type: ignore[override] + def fetchmany(self, size: int | None = None) -> list[NamedTuple]: ... # type: ignore[override] def fetchall(self) -> list[NamedTuple]: ... # type: ignore[override] def __next__(self) -> NamedTuple: ... @@ -144,18 +144,18 @@ class LoggingConnection(_connection): def cursor(self, *args, **kwargs): ... class LoggingCursor(_cursor): - def execute(self, query, vars: Incomplete | None = ...): ... - def callproc(self, procname, vars: Incomplete | None = ...): ... + def execute(self, query, vars: Incomplete | None = None): ... + def callproc(self, procname, vars: Incomplete | None = None): ... class MinTimeLoggingConnection(LoggingConnection): - def initialize(self, logobj, mintime: int = ...) -> None: ... + def initialize(self, logobj, mintime: int = 0) -> None: ... def filter(self, msg, curs): ... def cursor(self, *args, **kwargs): ... class MinTimeLoggingCursor(LoggingCursor): timestamp: Any - def execute(self, query, vars: Incomplete | None = ...): ... - def callproc(self, procname, vars: Incomplete | None = ...): ... + def execute(self, query, vars: Incomplete | None = None): ... + def callproc(self, procname, vars: Incomplete | None = None): ... class LogicalReplicationConnection(_replicationConnection): def __init__(self, *args, **kwargs) -> None: ... @@ -167,18 +167,18 @@ class StopReplication(Exception): ... class ReplicationCursor(_replicationCursor): def create_replication_slot( - self, slot_name, slot_type: Incomplete | None = ..., output_plugin: Incomplete | None = ... + self, slot_name, slot_type: Incomplete | None = None, output_plugin: Incomplete | None = None ) -> None: ... def drop_replication_slot(self, slot_name) -> None: ... def start_replication( self, - slot_name: Incomplete | None = ..., - slot_type: Incomplete | None = ..., - start_lsn: int = ..., - timeline: int = ..., - options: Incomplete | None = ..., - decode: bool = ..., - status_interval: int = ..., + slot_name: Incomplete | None = None, + slot_type: Incomplete | None = None, + start_lsn: int = 0, + timeline: int = 0, + options: Incomplete | None = None, + decode: bool = False, + status_interval: int = 10, ) -> None: ... def fileno(self): ... @@ -187,7 +187,7 @@ class UUID_adapter: def __conform__(self, proto): ... def getquoted(self): ... -def register_uuid(oids: Incomplete | None = ..., conn_or_curs: Incomplete | None = ...): ... +def register_uuid(oids: Incomplete | None = None, conn_or_curs: Incomplete | None = None): ... class Inet: addr: Any @@ -196,7 +196,7 @@ class Inet: def getquoted(self): ... def __conform__(self, proto): ... -def register_inet(oid: Incomplete | None = ..., conn_or_curs: Incomplete | None = ...): ... +def register_inet(oid: Incomplete | None = None, conn_or_curs: Incomplete | None = None): ... def wait_select(conn) -> None: ... class HstoreAdapter: @@ -213,7 +213,11 @@ class HstoreAdapter: def get_oids(cls, conn_or_curs): ... def register_hstore( - conn_or_curs, globally: bool = ..., unicode: bool = ..., oid: Incomplete | None = ..., array_oid: Incomplete | None = ... + conn_or_curs, + globally: bool = False, + unicode: bool = False, + oid: Incomplete | None = None, + array_oid: Incomplete | None = None, ) -> None: ... class CompositeCaster: @@ -225,12 +229,12 @@ class CompositeCaster: atttypes: Any typecaster: Any array_typecaster: Any - def __init__(self, name, oid, attrs, array_oid: Incomplete | None = ..., schema: Incomplete | None = ...) -> None: ... + def __init__(self, name, oid, attrs, array_oid: Incomplete | None = None, schema: Incomplete | None = None) -> None: ... def parse(self, s, curs): ... def make(self, values): ... @classmethod def tokenize(cls, s): ... -def register_composite(name, conn_or_curs, globally: bool = ..., factory: Incomplete | None = ...): ... -def execute_batch(cur, sql, argslist, page_size: int = ...) -> None: ... -def execute_values(cur, sql, argslist, template: Incomplete | None = ..., page_size: int = ..., fetch: bool = ...): ... +def register_composite(name, conn_or_curs, globally: bool = False, factory: Incomplete | None = None): ... +def execute_batch(cur, sql, argslist, page_size: int = 100) -> None: ... +def execute_values(cur, sql, argslist, template: Incomplete | None = None, page_size: int = 100, fetch: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/pool.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/pool.pyi index 94c7b1c56..d380aa19b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/pool.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/pool.pyi @@ -21,4 +21,4 @@ class SimpleConnectionPool(AbstractConnectionPool): ... class ThreadedConnectionPool(AbstractConnectionPool): # This subclass has a default value for conn which doesn't exist # in the SimpleConnectionPool class, nor in the documentation - def putconn(self, conn: Incomplete | None = ..., key: Incomplete | None = ..., close: bool = ...) -> None: ... + def putconn(self, conn: Incomplete | None = None, key: Incomplete | None = None, close: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/sql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/sql.pyi index 31f1ec25a..5721e9f43 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/sql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/sql.pyi @@ -41,7 +41,7 @@ class Literal(Composable): def as_string(self, context) -> str: ... class Placeholder(Composable): - def __init__(self, name: Incomplete | None = ...) -> None: ... + def __init__(self, name: Incomplete | None = None) -> None: ... @property def name(self) -> str | None: ... def as_string(self, context) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/tz.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/tz.pyi index f7e658dfc..5095ae74e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/tz.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/psycopg2/tz.pyi @@ -5,8 +5,8 @@ from typing import Any ZERO: Any class FixedOffsetTimezone(datetime.tzinfo): - def __init__(self, offset: Incomplete | None = ..., name: Incomplete | None = ...) -> None: ... - def __new__(cls, offset: Incomplete | None = ..., name: Incomplete | None = ...): ... + def __init__(self, offset: Incomplete | None = None, name: Incomplete | None = None) -> None: ... + def __new__(cls, offset: Incomplete | None = None, name: Incomplete | None = None): ... def __eq__(self, other): ... def __ne__(self, other): ... def __getinitargs__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml index f1c9279f4..baa929c65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.0.*" +version = "23.1.*" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/SSL.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/SSL.pyi index 7754145a7..a9c012867 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/SSL.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/SSL.pyi @@ -116,21 +116,24 @@ class Session: ... class Connection: def __getattr__(self, name: str) -> Any: ... # takes attributes from `self._socket` - def __init__(self, context: Context, socket: socket.socket | None = ...) -> None: ... + def __init__(self, context: Context, socket: socket.socket | None = None) -> None: ... def get_context(self) -> Context: ... def set_context(self, context: Context) -> None: ... def get_servername(self) -> bytes | None: ... def set_tlsext_host_name(self, name: bytes) -> None: ... def pending(self) -> int: ... - def send(self, buf: ReadableBuffer | str, flags: int = ...) -> int: ... + def send(self, buf: ReadableBuffer | str, flags: int = 0) -> int: ... write = send - def sendall(self, buf: ReadableBuffer | str, flags: int = ...) -> int: ... - def recv(self, bufsiz: int, flags: int | None = ...) -> bytes: ... + def sendall(self, buf: ReadableBuffer | str, flags: int = 0) -> int: ... + def recv(self, bufsiz: int, flags: int | None = None) -> bytes: ... read = recv - def recv_into(self, buffer: MutableSequence[int], nbytes: int | None = ..., flags: int | None = ...) -> int: ... + def recv_into(self, buffer: MutableSequence[int], nbytes: int | None = None, flags: int | None = None) -> int: ... def connect(self, addr: str | bytes | Sequence[str | int]) -> None: ... def connect_ex(self, addr: _Address | bytes) -> int: ... def accept(self) -> tuple[Connection, _RetAddress]: ... + def DTLSv1_listen(self) -> None: ... + def DTLSv1_get_timeout(self) -> float | None: ... + def DTLSv1_handle_timeout(self) -> bool: ... def shutdown(self) -> bool: ... def do_handshake(self) -> None: ... def get_certificate(self) -> X509 | None: ... @@ -159,7 +162,7 @@ class Connection: def client_random(self) -> bytes | None: ... def master_key(self) -> bytes | None: ... def export_keying_material( - self, label: Incomplete, olen: Incomplete, context: Incomplete = ... + self, label: Incomplete, olen: Incomplete, context: Incomplete = None ) -> Incomplete: ... # TODO: type, see RFC-5705 def get_app_data(self) -> Any: ... def set_app_data(self, data: Any) -> None: ... @@ -179,13 +182,13 @@ _T = TypeVar("_T") class Context: def __getattr__(self, name: str) -> Incomplete: ... def __init__(self, method: int) -> None: ... - def load_verify_locations(self, cafile: str | None, capath: str | None = ...) -> None: ... + def load_verify_locations(self, cafile: str | None, capath: str | None = None) -> None: ... def set_options(self, options: int) -> None: ... - def set_verify(self, mode: int, callback: Callable[[Connection, X509, int, int, int], bool] | None = ...) -> None: ... + def set_verify(self, mode: int, callback: Callable[[Connection, X509, int, int, int], bool] | None = None) -> None: ... def set_min_proto_version(self, version: int) -> None: ... def set_max_proto_version(self, version: int) -> None: ... def use_certificate_chain_file(self, certfile: str | bytes) -> None: ... - def use_certificate_file(self, certfile: str | bytes, filetype: int = ...) -> None: ... + def use_certificate_file(self, certfile: str | bytes, filetype: int = 1) -> None: ... def use_certificate(self, cert: X509) -> None: ... def use_privatekey_file(self, keyfile: str | bytes, filetype: int | None = ...) -> None: ... def use_privatekey(self, pkey: PKey) -> None: ... @@ -194,7 +197,7 @@ class Context: def set_keylog_callback(self, callback: Callable[[Connection, bytes], object]) -> None: ... def set_alpn_protos(self, protos: Sequence[bytes]) -> None: ... def set_alpn_select_callback(self, callback: Callable[[Connection, list[bytes]], bytes]) -> None: ... - def set_ocsp_server_callback(self, callback: Callable[[Connection, _T | None], bytes], data: _T | None = ...) -> None: ... + def set_ocsp_server_callback(self, callback: Callable[[Connection, _T | None], bytes], data: _T | None = None) -> None: ... def set_ocsp_client_callback( - self, callback: Callable[[Connection, bytes, _T | None], bool], data: _T | None = ... + self, callback: Callable[[Connection, bytes, _T | None], bool], data: _T | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/crypto.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/crypto.pyi index 8d02de69b..d89bfa256 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/crypto.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/crypto.pyi @@ -98,7 +98,7 @@ class X509Req: class X509Extension: def __init__( - self, type_name: bytes, critical: bool, value: bytes, subject: X509 | None = ..., issuer: X509 | None = ... + self, type_name: bytes, critical: bool, value: bytes, subject: X509 | None = None, issuer: X509 | None = None ) -> None: ... def get_critical(self) -> bool: ... def get_data(self) -> bytes: ... @@ -117,7 +117,7 @@ class Revoked: class CRL: def __init__(self) -> None: ... def add_revoked(self, revoked: Revoked) -> None: ... - def export(self, cert: X509, key: PKey, type: int = ..., days: int = ..., digest: bytes = ...) -> bytes: ... + def export(self, cert: X509, key: PKey, type: int = 1, days: int = 100, digest: bytes = ...) -> bytes: ... @classmethod def from_cryptography(cls, crypto_crl: CertificateRevocationList) -> CRL: ... def get_issuer(self) -> X509Name: ... @@ -132,12 +132,12 @@ class X509Store: def __init__(self) -> None: ... def add_cert(self, cert: X509) -> None: ... def add_crl(self, crl: CRL) -> None: ... - def load_locations(self, cafile: StrOrBytesPath, capath: StrOrBytesPath | None = ...) -> None: ... + def load_locations(self, cafile: StrOrBytesPath, capath: StrOrBytesPath | None = None) -> None: ... def set_flags(self, flags: int) -> None: ... def set_time(self, vfy_time: datetime) -> None: ... class X509StoreContext: - def __init__(self, store: X509Store, certificate: X509, chain: Sequence[X509] | None = ...) -> None: ... + def __init__(self, store: X509Store, certificate: X509, chain: Sequence[X509] | None = None) -> None: ... def get_verified_chain(self) -> list[X509]: ... def set_store(self, store: X509Store) -> None: ... def verify_certificate(self) -> None: ... @@ -170,7 +170,7 @@ class PKCS7: class PKCS12: def __init__(self) -> None: ... - def export(self, passphrase: bytes | None = ..., iter: int = ..., maciter: int = ...) -> bytes: ... + def export(self, passphrase: bytes | None = None, iter: int = 2048, maciter: int = 1) -> bytes: ... def get_ca_certificates(self) -> tuple[X509, ...]: ... def get_certificate(self) -> X509: ... def get_friendlyname(self) -> bytes | None: ... @@ -195,14 +195,14 @@ def load_certificate(type: int, buffer: bytes) -> X509: ... def dump_certificate_request(type: int, req: X509Req) -> bytes: ... def load_certificate_request(type: int, buffer: bytes) -> X509Req: ... def dump_privatekey( - type: int, pkey: PKey, cipher: str | None = ..., passphrase: bytes | Callable[[], bytes] | None = ... + type: int, pkey: PKey, cipher: str | None = None, passphrase: bytes | Callable[[], bytes] | None = None ) -> bytes: ... -def load_privatekey(type: int, buffer: str | bytes, passphrase: bytes | Callable[[], bytes] | None = ...) -> PKey: ... +def load_privatekey(type: int, buffer: str | bytes, passphrase: bytes | Callable[[], bytes] | None = None) -> PKey: ... def dump_publickey(type: int, pkey: PKey) -> bytes: ... def load_publickey(type: int, buffer: str | bytes) -> PKey: ... def dump_crl(type: int, crl: CRL) -> bytes: ... def load_crl(type: int, buffer: str | bytes) -> CRL: ... def load_pkcs7_data(type: int, buffer: str | bytes) -> PKCS7: ... -def load_pkcs12(buffer: str | bytes, passphrase: bytes | None = ...) -> PKCS12: ... +def load_pkcs12(buffer: str | bytes, passphrase: bytes | None = None) -> PKCS12: ... def sign(pkey: PKey, data: str | bytes, digest: str) -> bytes: ... def verify(cert: X509, signature: bytes, data: str | bytes, digest: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/pyrfc3339/generator.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/pyrfc3339/generator.pyi index 9375b5b61..0c0890120 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/pyrfc3339/generator.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/pyrfc3339/generator.pyi @@ -1,3 +1,3 @@ from datetime import datetime -def generate(dt: datetime, utc: bool = ..., accept_naive: bool = ..., microseconds: bool = ...) -> str: ... +def generate(dt: datetime, utc: bool = True, accept_naive: bool = False, microseconds: bool = False) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/pyrfc3339/parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/pyrfc3339/parser.pyi index 445b542c3..70bcfdbdf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/pyrfc3339/parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/pyrfc3339/parser.pyi @@ -1,3 +1,3 @@ from datetime import datetime -def parse(timestamp: str, utc: bool = ..., produce_naive: bool = ...) -> datetime: ... +def parse(timestamp: str, utc: bool = False, produce_naive: bool = False) -> datetime: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/ber/decoder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/ber/decoder.pyi index a2544e0c2..3e5e0eb6a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/ber/decoder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/ber/decoder.pyi @@ -13,11 +13,11 @@ class AbstractDecoder: self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Incomplete | None = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Incomplete | None = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ) -> None: ... # Abstract, but implementation is optional @@ -25,11 +25,11 @@ class AbstractDecoder: self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Incomplete | None = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Incomplete | None = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ) -> None: ... @@ -43,22 +43,22 @@ class ExplicitTagDecoder(AbstractSimpleDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... def indefLenValueDecoder( self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... @@ -68,11 +68,11 @@ class IntegerDecoder(AbstractSimpleDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Unused = ..., - substrateFun: Unused = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Unused = None, + substrateFun: Unused = None, **options, ): ... @@ -86,22 +86,22 @@ class BitStringDecoder(AbstractSimpleDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... def indefLenValueDecoder( self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... @@ -112,22 +112,22 @@ class OctetStringDecoder(AbstractSimpleDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... def indefLenValueDecoder( self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... @@ -137,11 +137,11 @@ class NullDecoder(AbstractSimpleDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Unused = ..., - substrateFun: Unused = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Unused = None, + substrateFun: Unused = None, **options, ): ... @@ -151,11 +151,11 @@ class ObjectIdentifierDecoder(AbstractSimpleDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Unused = ..., - substrateFun: Unused = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Unused = None, + substrateFun: Unused = None, **options, ): ... @@ -165,11 +165,11 @@ class RealDecoder(AbstractSimpleDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Unused = ..., - substrateFun: Unused = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Unused = None, + substrateFun: Unused = None, **options, ): ... @@ -183,22 +183,22 @@ class UniversalConstructedTypeDecoder(AbstractConstructedDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... def indefLenValueDecoder( self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... @@ -228,22 +228,22 @@ class ChoiceDecoder(AbstractConstructedDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Incomplete | None = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Incomplete | None = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... def indefLenValueDecoder( self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Incomplete | None = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Incomplete | None = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... @@ -253,22 +253,22 @@ class AnyDecoder(AbstractSimpleDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Unused = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Unused = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... def indefLenValueDecoder( self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Callable[..., Incomplete] | None = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Callable[..., Incomplete] | None = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... @@ -318,16 +318,16 @@ class Decoder: defaultErrorState: int defaultRawDecoder: AnyDecoder supportIndefLength: bool - def __init__(self, tagMap, typeMap=...) -> None: ... + def __init__(self, tagMap, typeMap={}) -> None: ... def __call__( self, substrate, - asn1Spec: Asn1Type | None = ..., - tagSet: TagSet | None = ..., - length: int | None = ..., - state=..., - decodeFun: Unused = ..., - substrateFun: Callable[..., Incomplete] | None = ..., + asn1Spec: Asn1Type | None = None, + tagSet: TagSet | None = None, + length: int | None = None, + state=0, + decodeFun: Unused = None, + substrateFun: Callable[..., Incomplete] | None = None, **options, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/ber/encoder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/ber/encoder.pyi index 28156078c..d9ed6218d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/ber/encoder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/ber/encoder.pyi @@ -11,7 +11,7 @@ class AbstractItemEncoder: def encodeLength(self, length, defMode): ... @abstractmethod def encodeValue(self, value, asn1Spec, encodeFun, **options) -> None: ... - def encode(self, value, asn1Spec: Asn1Type | None = ..., encodeFun: Incomplete | None = ..., **options): ... + def encode(self, value, asn1Spec: Asn1Type | None = None, encodeFun: Incomplete | None = None, **options): ... class EndOfOctetsEncoder(AbstractItemEncoder): def encodeValue(self, value, asn1Spec, encodeFun, **options): ... @@ -61,7 +61,7 @@ class AnyEncoder(OctetStringEncoder): class Encoder: fixedDefLengthMode: bool | None fixedChunkSize: int | None - def __init__(self, tagMap, typeMap=...) -> None: ... - def __call__(self, value, asn1Spec: Asn1Type | None = ..., **options): ... + def __init__(self, tagMap, typeMap={}) -> None: ... + def __call__(self, value, asn1Spec: Asn1Type | None = None, **options): ... encode: Encoder diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/cer/decoder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/cer/decoder.pyi index 22f51cdc0..024d3509e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/cer/decoder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/cer/decoder.pyi @@ -10,11 +10,11 @@ class BooleanDecoder(decoder.AbstractSimpleDecoder): self, substrate, asn1Spec, - tagSet: TagSet | None = ..., - length: int | None = ..., - state: Unused = ..., - decodeFun: Unused = ..., - substrateFun: Unused = ..., + tagSet: TagSet | None = None, + length: int | None = None, + state: Unused = None, + decodeFun: Unused = None, + substrateFun: Unused = None, **options, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/native/decoder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/native/decoder.pyi index 09d7b4eb0..e25ef738a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/native/decoder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/native/decoder.pyi @@ -2,19 +2,19 @@ from _typeshed import Incomplete, Unused from collections.abc import Callable class AbstractScalarDecoder: - def __call__(self, pyObject, asn1Spec, decodeFun: Unused = ..., **options): ... + def __call__(self, pyObject, asn1Spec, decodeFun: Unused = None, **options): ... class BitStringDecoder(AbstractScalarDecoder): - def __call__(self, pyObject, asn1Spec, decodeFun: Unused = ..., **options): ... + def __call__(self, pyObject, asn1Spec, decodeFun: Unused = None, **options): ... class SequenceOrSetDecoder: - def __call__(self, pyObject, asn1Spec, decodeFun: Callable[..., Incomplete] | None = ..., **options): ... + def __call__(self, pyObject, asn1Spec, decodeFun: Callable[..., Incomplete] | None = None, **options): ... class SequenceOfOrSetOfDecoder: - def __call__(self, pyObject, asn1Spec, decodeFun: Callable[..., Incomplete] | None = ..., **options): ... + def __call__(self, pyObject, asn1Spec, decodeFun: Callable[..., Incomplete] | None = None, **options): ... class ChoiceDecoder: - def __call__(self, pyObject, asn1Spec, decodeFun: Callable[..., Incomplete] | None = ..., **options): ... + def __call__(self, pyObject, asn1Spec, decodeFun: Callable[..., Incomplete] | None = None, **options): ... class Decoder: def __init__(self, tagMap, typeMap) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/native/encoder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/native/encoder.pyi index ec0cb54cf..337ab2329 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/native/encoder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/codec/native/encoder.pyi @@ -45,7 +45,7 @@ class AnyEncoder(AbstractItemEncoder): def encode(self, value, encodeFun, **options): ... class Encoder: - def __init__(self, tagMap, typeMap=...) -> None: ... + def __init__(self, tagMap, typeMap={}) -> None: ... def __call__(self, value, **options): ... encode: Encoder diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/compat/integer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/compat/integer.pyi index b7cafe633..b4f9c80ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/compat/integer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/compat/integer.pyi @@ -3,6 +3,6 @@ from typing_extensions import Literal implementation: str null: Literal[b""] -def from_bytes(octets, signed: bool = ...): ... -def to_bytes(value, signed: bool = ..., length: int = ...): ... +def from_bytes(octets, signed: bool = False): ... +def to_bytes(value, signed: bool = False, length: int = 0): ... def bitLength(number): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/debug.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/debug.pyi index 55480cdd5..5af57249f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/debug.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/debug.pyi @@ -4,9 +4,9 @@ from typing import TextIO class Printer: def __init__( self, - logger: logging.Logger | None = ..., - handler: logging.StreamHandler[TextIO] | None = ..., - formatter: logging.Formatter | None = ..., + logger: logging.Logger | None = None, + handler: logging.StreamHandler[TextIO] | None = None, + formatter: logging.Formatter | None = None, ) -> None: ... def __call__(self, msg) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/error.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/error.pyi index 97eb7898d..892e6e2c5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/error.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/error.pyi @@ -3,7 +3,7 @@ class ValueConstraintError(PyAsn1Error): ... class SubstrateUnderrunError(PyAsn1Error): ... class PyAsn1UnicodeError(PyAsn1Error, UnicodeError): - def __init__(self, message, unicode_error: UnicodeError | None = ...) -> None: ... + def __init__(self, message, unicode_error: UnicodeError | None = None) -> None: ... class PyAsn1UnicodeDecodeError(PyAsn1UnicodeError, UnicodeDecodeError): ... class PyAsn1UnicodeEncodeError(PyAsn1UnicodeError, UnicodeEncodeError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/base.pyi index b1b5e17f5..808cff5f1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/base.pyi @@ -7,7 +7,7 @@ from pyasn1.type.tag import TagSet class Asn1Item: @classmethod - def getTypeId(cls, increment: int = ...): ... + def getTypeId(cls, increment: int = 1): ... class Asn1Type(Asn1Item): tagSet: TagSet @@ -21,11 +21,11 @@ class Asn1Type(Asn1Item): def effectiveTagSet(self): ... @property def tagMap(self): ... - def isSameTypeWith(self, other, matchTags: bool = ..., matchConstraints: bool = ...): ... - def isSuperTypeOf(self, other, matchTags: bool = ..., matchConstraints: bool = ...): ... + def isSameTypeWith(self, other, matchTags: bool = True, matchConstraints: bool = True): ... + def isSuperTypeOf(self, other, matchTags: bool = True, matchConstraints: bool = True): ... @staticmethod def isNoValue(*values): ... - def prettyPrint(self, scope: int = ...) -> None: ... + def prettyPrint(self, scope: int = 0) -> None: ... def getTagSet(self): ... def getEffectiveTagSet(self): ... def getTagMap(self): ... @@ -118,8 +118,8 @@ class SimpleAsn1Type(Asn1Type): def subtype(self, value=..., **kwargs): ... def prettyIn(self, value): ... def prettyOut(self, value): ... - def prettyPrint(self, scope: int = ...): ... - def prettyPrintType(self, scope: int = ...): ... + def prettyPrint(self, scope: int = 0): ... + def prettyPrintType(self, scope: int = 0): ... AbstractSimpleAsn1Item = SimpleAsn1Type @@ -140,7 +140,7 @@ class ConstructedAsn1Type(Asn1Type): def clone(self, **kwargs): ... def subtype(self, **kwargs): ... def getComponentByPosition(self, idx) -> None: ... - def setComponentByPosition(self, idx, value, verifyConstraints: bool = ...) -> None: ... + def setComponentByPosition(self, idx, value, verifyConstraints: bool = True) -> None: ... def setComponents(self, *args, **kwargs): ... def setDefaultComponents(self) -> None: ... def getComponentType(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/char.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/char.pyi index b61ce2aa8..61a43f6fc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/char.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/char.pyi @@ -4,10 +4,10 @@ from pyasn1.type.tag import TagSet class AbstractCharacterString(univ.OctetString): def __bytes__(self) -> bytes: ... def prettyIn(self, value): ... - def asOctets(self, padding: bool = ...): ... - def asNumbers(self, padding: bool = ...): ... + def asOctets(self, padding: bool = True): ... + def asNumbers(self, padding: bool = True): ... def prettyOut(self, value): ... - def prettyPrint(self, scope: int = ...): ... + def prettyPrint(self, scope: int = 0): ... def __reversed__(self): ... class NumericString(AbstractCharacterString): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/constraint.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/constraint.pyi index 313ab6f93..21728b81f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/constraint.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/constraint.pyi @@ -1,6 +1,6 @@ class AbstractConstraint: def __init__(self, *values) -> None: ... - def __call__(self, value, idx: int | None = ...) -> None: ... + def __call__(self, value, idx: int | None = None) -> None: ... def __eq__(self, other): ... def __ne__(self, other): ... def __lt__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/namedtype.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/namedtype.pyi index a70704160..5c4eadf30 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/namedtype.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/namedtype.pyi @@ -1,7 +1,7 @@ class NamedType: isOptional: bool isDefaulted: bool - def __init__(self, name, asn1Object, openType: type | None = ...) -> None: ... + def __init__(self, name, asn1Object, openType: type | None = None) -> None: ... def __eq__(self, other): ... def __ne__(self, other): ... def __lt__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/opentype.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/opentype.pyi index e11aeac49..919055315 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/opentype.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/opentype.pyi @@ -4,7 +4,7 @@ from collections.abc import Mapping from pyasn1.type.base import Asn1Type class OpenType: - def __init__(self, name, typeMap: Mapping[Incomplete, Asn1Type] | None = ...) -> None: ... + def __init__(self, name, typeMap: Mapping[Incomplete, Asn1Type] | None = None) -> None: ... @property def name(self): ... def values(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/tag.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/tag.pyi index 8c484dd60..732916513 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/tag.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/tag.pyi @@ -29,7 +29,7 @@ class Tag: def tagId(self): ... class TagSet: - def __init__(self, baseTag=..., *superTags) -> None: ... + def __init__(self, baseTag=(), *superTags) -> None: ... def __add__(self, superTag): ... def __radd__(self, superTag): ... def __getitem__(self, i): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/tagmap.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/tagmap.pyi index 196234b75..175da1faa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/tagmap.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/tagmap.pyi @@ -5,9 +5,9 @@ from pyasn1.type.base import Asn1Type class TagMap: def __init__( self, - presentTypes: Mapping[TagMap, Asn1Type] | None = ..., - skipTypes: Container[TagMap] | None = ..., - defaultType: Asn1Type | None = ..., + presentTypes: Mapping[TagMap, Asn1Type] | None = None, + skipTypes: Container[TagMap] | None = None, + defaultType: Asn1Type | None = None, ) -> None: ... def __contains__(self, tagSet) -> bool: ... def __getitem__(self, tagSet): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/univ.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/univ.pyi index 7ac15848a..6330ba5d4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/univ.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/univ.pyi @@ -34,7 +34,7 @@ class Integer(base.SimpleAsn1Type): def __mod__(self, value): ... def __rmod__(self, value): ... # Accepts everything builtins.pow does - def __pow__(self, value: complex, modulo: int | None = ...) -> Self: ... + def __pow__(self, value: complex, modulo: int | None = None) -> Self: ... def __rpow__(self, value): ... def __floordiv__(self, value): ... def __rfloordiv__(self, value): ... @@ -50,7 +50,7 @@ class Integer(base.SimpleAsn1Type): def __pos__(self): ... def __neg__(self): ... def __invert__(self): ... - def __round__(self, n: int = ...): ... + def __round__(self, n: int = 0): ... def __floor__(self): ... def __ceil__(self): ... def __trunc__(self): ... @@ -109,11 +109,11 @@ class BitString(base.SimpleAsn1Type): def asInteger(self): ... def asBinary(self): ... @classmethod - def fromHexString(cls, value, internalFormat: bool = ..., prepend: _SizedIntegerable | None = ...): ... + def fromHexString(cls, value, internalFormat: bool = False, prepend: _SizedIntegerable | None = None): ... @classmethod - def fromBinaryString(cls, value, internalFormat: bool = ..., prepend: _SizedIntegerable | None = ...): ... + def fromBinaryString(cls, value, internalFormat: bool = False, prepend: _SizedIntegerable | None = None): ... @classmethod - def fromOctetString(cls, value, internalFormat: bool = ..., prepend: _SizedIntegerable | None = ..., padding: int = ...): ... + def fromOctetString(cls, value, internalFormat: bool = False, prepend: _SizedIntegerable | None = None, padding: int = 0): ... def prettyIn(self, value): ... class OctetString(base.SimpleAsn1Type): @@ -129,7 +129,7 @@ class OctetString(base.SimpleAsn1Type): def asOctets(self): ... def asNumbers(self): ... def prettyOut(self, value): ... - def prettyPrint(self, scope: int = ...): ... + def prettyPrint(self, scope: int = 0): ... @staticmethod def fromBinaryString(value): ... @staticmethod @@ -174,7 +174,7 @@ class Real(base.SimpleAsn1Type): subtypeSpec: constraint.ConstraintsIntersection typeId: int def prettyIn(self, value): ... - def prettyPrint(self, scope: int = ...): ... + def prettyPrint(self, scope: int = 0): ... @property def isPlusInf(self): ... @property @@ -190,7 +190,7 @@ class Real(base.SimpleAsn1Type): def __mod__(self, value): ... def __rmod__(self, value): ... # Accepts everything builtins.pow with a float base does - def __pow__(self, value: complex, modulo: int | None = ...) -> Self: ... + def __pow__(self, value: complex, modulo: int | None = None) -> Self: ... def __rpow__(self, value): ... def __truediv__(self, value): ... def __rtruediv__(self, value): ... @@ -201,7 +201,7 @@ class Real(base.SimpleAsn1Type): def __abs__(self): ... def __pos__(self): ... def __neg__(self): ... - def __round__(self, n: int = ...): ... + def __round__(self, n: int = 0): ... def __floor__(self): ... def __ceil__(self): ... def __trunc__(self): ... @@ -240,14 +240,14 @@ class SequenceOfAndSetOfBase(base.ConstructedAsn1Type): def append(self, value) -> None: ... def count(self, value): ... def extend(self, values) -> None: ... - def index(self, value, start: int = ..., stop: int | None = ...): ... + def index(self, value, start: int = 0, stop: int | None = None): ... def reverse(self) -> None: ... - def sort(self, key: Callable[[Incomplete], SupportsRichComparison] | None = ..., reverse: bool = ...) -> None: ... + def sort(self, key: Callable[[Incomplete], SupportsRichComparison] | None = None, reverse: bool = False) -> None: ... def __len__(self) -> int: ... def __iter__(self): ... - def getComponentByPosition(self, idx, default=..., instantiate: bool = ...): ... + def getComponentByPosition(self, idx, default=..., instantiate: bool = True): ... def setComponentByPosition( - self, idx, value=..., verifyConstraints: bool = ..., matchTags: bool = ..., matchConstraints: bool = ... + self, idx, value=..., verifyConstraints: bool = True, matchTags: bool = True, matchConstraints: bool = True ): ... @property def componentTagMap(self): ... @@ -255,8 +255,8 @@ class SequenceOfAndSetOfBase(base.ConstructedAsn1Type): def components(self): ... def clear(self): ... def reset(self): ... - def prettyPrint(self, scope: int = ...): ... - def prettyPrintType(self, scope: int = ...): ... + def prettyPrint(self, scope: int = 0): ... + def prettyPrintType(self, scope: int = 0): ... @property def isValue(self): ... @property @@ -295,20 +295,20 @@ class SequenceAndSetBase(base.ConstructedAsn1Type): def reset(self): ... @property def components(self): ... - def getComponentByName(self, name, default=..., instantiate: bool = ...): ... + def getComponentByName(self, name, default=..., instantiate: bool = True): ... def setComponentByName( - self, name, value=..., verifyConstraints: bool = ..., matchTags: bool = ..., matchConstraints: bool = ... + self, name, value=..., verifyConstraints: bool = True, matchTags: bool = True, matchConstraints: bool = True ): ... - def getComponentByPosition(self, idx, default=..., instantiate: bool = ...): ... + def getComponentByPosition(self, idx, default=..., instantiate: bool = True): ... def setComponentByPosition( - self, idx, value=..., verifyConstraints: bool = ..., matchTags: bool = ..., matchConstraints: bool = ... + self, idx, value=..., verifyConstraints: bool = True, matchTags: bool = True, matchConstraints: bool = True ): ... @property def isValue(self): ... @property def isInconsistent(self): ... - def prettyPrint(self, scope: int = ...): ... - def prettyPrintType(self, scope: int = ...): ... + def prettyPrint(self, scope: int = 0): ... + def prettyPrintType(self, scope: int = 0): ... def setDefaultComponents(self): ... def getComponentType(self): ... def getNameByPosition(self, idx): ... @@ -326,16 +326,16 @@ class Set(SequenceAndSetBase): componentType: namedtype.NamedTypes subtypeSpec: constraint.ConstraintsIntersection typeId: int - def getComponent(self, innerFlag: bool = ...): ... - def getComponentByType(self, tagSet, default=..., instantiate: bool = ..., innerFlag: bool = ...): ... + def getComponent(self, innerFlag: bool = False): ... + def getComponentByType(self, tagSet, default=..., instantiate: bool = True, innerFlag: bool = False): ... def setComponentByType( self, tagSet, value=..., - verifyConstraints: bool = ..., - matchTags: bool = ..., - matchConstraints: bool = ..., - innerFlag: bool = ..., + verifyConstraints: bool = True, + matchTags: bool = True, + matchConstraints: bool = True, + innerFlag: bool = False, ): ... @property def componentTagMap(self): ... @@ -359,16 +359,16 @@ class Choice(Set): def keys(self) -> Generator[Incomplete, None, None]: ... def items(self) -> Generator[Incomplete, None, None]: ... def checkConsistency(self) -> None: ... - def getComponentByPosition(self, idx, default=..., instantiate: bool = ...): ... + def getComponentByPosition(self, idx, default=..., instantiate: bool = True): ... def setComponentByPosition( - self, idx, value=..., verifyConstraints: bool = ..., matchTags: bool = ..., matchConstraints: bool = ... + self, idx, value=..., verifyConstraints: bool = True, matchTags: bool = True, matchConstraints: bool = True ): ... @property def effectiveTagSet(self): ... @property def tagMap(self): ... - def getComponent(self, innerFlag: bool = ...): ... - def getName(self, innerFlag: bool = ...): ... + def getComponent(self, innerFlag: bool = False): ... + def getName(self, innerFlag: bool = False): ... @property def isValue(self): ... def clear(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/useful.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/useful.pyi index 33f13a33a..76a80aefe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/useful.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/pyasn1/type/useful.pyi @@ -9,7 +9,7 @@ class ObjectDescriptor(char.GraphicString): class TimeMixIn: class FixedOffset(datetime.tzinfo): - def __init__(self, offset: int = ..., name: str = ...) -> None: ... + def __init__(self, offset: int = 0, name: str = "UTC") -> None: ... def utcoffset(self, dt): ... def tzname(self, dt): ... def dst(self, dt): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/pycocotools/coco.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/pycocotools/coco.pyi index 1cb93c63f..50e5bebce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/pycocotools/coco.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/pycocotools/coco.pyi @@ -62,26 +62,26 @@ class COCO: imgs: dict[int, _Image] imgToAnns: dict[int, list[_Annotation]] catToImgs: dict[int, list[int]] - def __init__(self, annotation_file: str | Path | None = ...) -> None: ... + def __init__(self, annotation_file: str | Path | None = None) -> None: ... def createIndex(self) -> None: ... def info(self) -> None: ... def getAnnIds( self, - imgIds: Collection[int] | int = ..., - catIds: Collection[int] | int = ..., - areaRng: Sequence[float] = ..., - iscrowd: bool | None = ..., + imgIds: Collection[int] | int = [], + catIds: Collection[int] | int = [], + areaRng: Sequence[float] = [], + iscrowd: bool | None = None, ) -> list[int]: ... def getCatIds( - self, catNms: Collection[str] | str = ..., supNms: Collection[str] | str = ..., catIds: Collection[int] | int = ... + self, catNms: Collection[str] | str = [], supNms: Collection[str] | str = [], catIds: Collection[int] | int = [] ) -> list[int]: ... - def getImgIds(self, imgIds: Collection[int] | int = ..., catIds: list[int] | int = ...) -> list[int]: ... - def loadAnns(self, ids: Collection[int] | int = ...) -> list[_Annotation]: ... - def loadCats(self, ids: Collection[int] | int = ...) -> list[_Category]: ... - def loadImgs(self, ids: Collection[int] | int = ...) -> list[_Image]: ... - def showAnns(self, anns: Sequence[_Annotation], draw_bbox: bool = ...) -> None: ... + def getImgIds(self, imgIds: Collection[int] | int = [], catIds: list[int] | int = []) -> list[int]: ... + def loadAnns(self, ids: Collection[int] | int = []) -> list[_Annotation]: ... + def loadCats(self, ids: Collection[int] | int = []) -> list[_Category]: ... + def loadImgs(self, ids: Collection[int] | int = []) -> list[_Image]: ... + def showAnns(self, anns: Sequence[_Annotation], draw_bbox: bool = False) -> None: ... def loadRes(self, resFile: str) -> COCO: ... - def download(self, tarDir: str | None = ..., imgIds: Collection[int] = ...) -> Literal[-1] | None: ... + def download(self, tarDir: str | None = None, imgIds: Collection[int] = []) -> Literal[-1] | None: ... def loadNumpyAnnotations(self, data: _NDArray) -> list[_Annotation]: ... # def loadNumpyAnnotations(self, data: npt.NDArray[np.float64]) -> list[_Annotation]: ... @overload diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/pycocotools/cocoeval.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/pycocotools/cocoeval.pyi index 1fd74e517..366f2138e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/pycocotools/cocoeval.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/pycocotools/cocoeval.pyi @@ -47,13 +47,13 @@ class COCOeval: stats: _NDArray # stats: npt.NDArray[np.float64] ious: dict[tuple[int, int], list[float]] - def __init__(self, cocoGt: COCO | None = ..., cocoDt: COCO | None = ..., iouType: _TIOU = ...) -> None: ... + def __init__(self, cocoGt: COCO | None = None, cocoDt: COCO | None = None, iouType: _TIOU = "segm") -> None: ... def evaluate(self) -> None: ... def computeIoU(self, imgId: int, catId: int) -> list[float]: ... def computeOks(self, imgId: int, catId: int) -> _NDArray: ... # def computeOks(self, imgId: int, catId: int) -> npt.NDArray[np.float64]: ... def evaluateImg(self, imgId: int, catId: int, aRng: list[int], maxDet: int) -> _ImageEvaluationResult: ... - def accumulate(self, p: Params | None = ...) -> None: ... + def accumulate(self, p: Params | None = None) -> None: ... def summarize(self) -> None: ... class Params: @@ -71,6 +71,6 @@ class Params: # kpt_oks_sigmas: npt.NDArray[np.float64] iouType: _TIOU useSegm: int | None - def __init__(self, iouType: _TIOU = ...) -> None: ... + def __init__(self, iouType: _TIOU = "segm") -> None: ... def setDetParams(self) -> None: ... def setKpParams(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pycurl/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pycurl/METADATA.toml index 454b5b899..6a7699667 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pycurl/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pycurl/METADATA.toml @@ -10,6 +10,6 @@ version = "7.45.2" # % pip install --compile --install-option="--with-openssl" pycurl # TODO: Test on Windows and/or MacOS once wheels are available. platforms = ["linux"] -apt_dependencies = ["libcurl4-openssl-dev"] +apt_dependencies = ["libcurl4-openssl-dev", "libssl-dev"] # No need to install on the CI. Leaving here as information for MacOS contributors. # brew_dependencies = ["openssl"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pycurl/pycurl.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pycurl/pycurl.pyi index 2a531b2b6..1fa0ce48e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pycurl/pycurl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pycurl/pycurl.pyi @@ -39,7 +39,7 @@ class CurlMulti: def setopt(self, option: int, value: Incomplete) -> None: ... def perform(self) -> tuple[Incomplete, int]: ... def fdset(self) -> tuple[list[Incomplete], list[Incomplete], list[Incomplete]]: ... - def select(self, timeout: float = ...) -> int: ... + def select(self, timeout: float) -> int: ... def info_read(self, max_objects: int = ...) -> tuple[int, list[Incomplete], list[Incomplete]]: ... def socket_action(self, sockfd: int, ev_bitmask: int) -> tuple[int, int]: ... def assign(self, __sockfd: int, __socket: Incomplete) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/api.pyi index 945a7a39c..3cf689390 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/api.pyi @@ -8,9 +8,9 @@ __all__ = ["check", "checkPath", "checkRecursive", "iterSourceCode", "main"] PYTHON_SHEBANG_REGEX: Pattern[bytes] -def check(codeString: str, filename: str, reporter: Reporter | None = ...) -> int: ... -def checkPath(filename, reporter: Reporter | None = ...) -> int: ... +def check(codeString: str, filename: str, reporter: Reporter | None = None) -> int: ... +def checkPath(filename, reporter: Reporter | None = None) -> int: ... def isPythonFile(filename) -> bool: ... def iterSourceCode(paths: Iterable[Any]) -> Iterator[Any]: ... def checkRecursive(paths: Iterable[Any], reporter: Reporter) -> int: ... -def main(prog: str | None = ..., args: Sequence[Any] | None = ...) -> None: ... +def main(prog: str | None = None, args: Sequence[Any] | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/checker.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/checker.pyi index 63a656387..4bf58bc5b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/checker.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/checker.pyi @@ -37,7 +37,7 @@ def counter(items: Iterable[_T]) -> dict[_T, int]: ... _OmitType: TypeAlias = str | tuple[str, ...] | None -def iter_child_nodes(node: ast.AST, omit: _OmitType = ..., _fields_order: _FieldsOrder = ...) -> Iterator[ast.AST]: ... +def iter_child_nodes(node: ast.AST, omit: _OmitType = None, _fields_order: _FieldsOrder = ...) -> Iterator[ast.AST]: ... @overload def convert_to_value(item: ast.Str) -> str: ... # type: ignore[misc] @overload @@ -73,7 +73,7 @@ class VariableKey: class Importation(Definition): fullName: str redefined: list[Any] - def __init__(self, name: str, source: ast.AST | None, full_name: str | None = ...) -> None: ... + def __init__(self, name: str, source: ast.AST | None, full_name: str | None = None) -> None: ... @property def source_statement(self) -> str: ... @@ -83,7 +83,7 @@ class SubmoduleImportation(Importation): class ImportationFrom(Importation): module: str real_name: str - def __init__(self, name: str, source: ast.AST, module: str, real_name: str | None = ...) -> None: ... + def __init__(self, name: str, source: ast.AST, module: str, real_name: str | None = None) -> None: ... class StarImportation(Importation): def __init__(self, name: str, source: ast.AST) -> None: ... @@ -183,10 +183,10 @@ class Checker: def __init__( self, tree: ast.AST, - filename: str = ..., - builtins: Iterable[str] | None = ..., - withDoctest: bool = ..., - file_tokens: tuple[Any, ...] = ..., + filename: str = "(none)", + builtins: Iterable[str] | None = None, + withDoctest: bool = False, + file_tokens: tuple[Any, ...] = (), ) -> None: ... def deferFunction(self, callable: _AnyFunction) -> None: ... def deferAssignment(self, callable: _AnyFunction) -> None: ... @@ -215,7 +215,7 @@ class Checker: def handleNodeLoad(self, node: ast.AST, parent: ast.AST) -> None: ... def handleNodeStore(self, node: ast.AST) -> None: ... def handleNodeDelete(self, node: ast.AST) -> None: ... - def handleChildren(self, tree: ast.AST, omit: _OmitType = ...) -> None: ... + def handleChildren(self, tree: ast.AST, omit: _OmitType = None) -> None: ... def isLiteralTupleUnpacking(self, node: ast.AST) -> bool | None: ... def isDocstring(self, node: ast.AST) -> bool: ... def getDocstring(self, node: ast.AST) -> tuple[str, int] | tuple[None, None]: ... @@ -224,23 +224,23 @@ class Checker: def handleStringAnnotation(self, s: str, node: ast.AST, ref_lineno: int, ref_col_offset: int, err: type[Message]) -> None: ... def handleAnnotation(self, annotation: ast.AST, node: ast.AST) -> None: ... def ignore(self, node: ast.AST) -> None: ... - def DELETE(self, tree: ast.Delete, omit: _OmitType = ...) -> None: ... - def FOR(self, tree: ast.For, omit: _OmitType = ...) -> None: ... - def ASYNCFOR(self, tree: ast.AsyncFor, omit: _OmitType = ...) -> None: ... - def WHILE(self, tree: ast.While, omit: _OmitType = ...) -> None: ... - def WITH(self, tree: ast.With, omit: _OmitType = ...) -> None: ... - def WITHITEM(self, tree: ast.AST, omit: _OmitType = ...) -> None: ... - def ASYNCWITH(self, tree: ast.AsyncWith, omit: _OmitType = ...) -> None: ... - def EXPR(self, tree: ast.AST, omit: _OmitType = ...) -> None: ... - def ASSIGN(self, tree: ast.Assign, omit: _OmitType = ...) -> None: ... + def DELETE(self, tree: ast.Delete, omit: _OmitType = None) -> None: ... + def FOR(self, tree: ast.For, omit: _OmitType = None) -> None: ... + def ASYNCFOR(self, tree: ast.AsyncFor, omit: _OmitType = None) -> None: ... + def WHILE(self, tree: ast.While, omit: _OmitType = None) -> None: ... + def WITH(self, tree: ast.With, omit: _OmitType = None) -> None: ... + def WITHITEM(self, tree: ast.AST, omit: _OmitType = None) -> None: ... + def ASYNCWITH(self, tree: ast.AsyncWith, omit: _OmitType = None) -> None: ... + def EXPR(self, tree: ast.AST, omit: _OmitType = None) -> None: ... + def ASSIGN(self, tree: ast.Assign, omit: _OmitType = None) -> None: ... def PASS(self, node: ast.AST) -> None: ... - def BOOLOP(self, tree: ast.BoolOp, omit: _OmitType = ...) -> None: ... - def UNARYOP(self, tree: ast.UnaryOp, omit: _OmitType = ...) -> None: ... - def SET(self, tree: ast.Set, omit: _OmitType = ...) -> None: ... - def ATTRIBUTE(self, tree: ast.Attribute, omit: _OmitType = ...) -> None: ... - def STARRED(self, tree: ast.Starred, omit: _OmitType = ...) -> None: ... - def NAMECONSTANT(self, tree: ast.NameConstant, omit: _OmitType = ...) -> None: ... - def NAMEDEXPR(self, tree: _NamedExpr, omit: _OmitType = ...) -> None: ... + def BOOLOP(self, tree: ast.BoolOp, omit: _OmitType = None) -> None: ... + def UNARYOP(self, tree: ast.UnaryOp, omit: _OmitType = None) -> None: ... + def SET(self, tree: ast.Set, omit: _OmitType = None) -> None: ... + def ATTRIBUTE(self, tree: ast.Attribute, omit: _OmitType = None) -> None: ... + def STARRED(self, tree: ast.Starred, omit: _OmitType = None) -> None: ... + def NAMECONSTANT(self, tree: ast.NameConstant, omit: _OmitType = None) -> None: ... + def NAMEDEXPR(self, tree: _NamedExpr, omit: _OmitType = None) -> None: ... def SUBSCRIPT(self, node: ast.Subscript) -> None: ... def CALL(self, node: ast.Call) -> None: ... def BINOP(self, node: ast.BinOp) -> None: ... @@ -251,9 +251,9 @@ class Checker: def ELLIPSIS(self, node: ast.Ellipsis) -> None: ... def STR(self, node: ast.Str) -> None: ... - def SLICE(self, tree: ast.Slice, omit: _OmitType = ...) -> None: ... - def EXTSLICE(self, tree: ast.ExtSlice, omit: _OmitType = ...) -> None: ... - def INDEX(self, tree: ast.Index, omit: _OmitType = ...) -> None: ... + def SLICE(self, tree: ast.Slice, omit: _OmitType = None) -> None: ... + def EXTSLICE(self, tree: ast.ExtSlice, omit: _OmitType = None) -> None: ... + def INDEX(self, tree: ast.Index, omit: _OmitType = None) -> None: ... def LOAD(self, node: ast.Load) -> None: ... def STORE(self, node: ast.Store) -> None: ... def DEL(self, node: ast.Del) -> None: ... @@ -290,9 +290,9 @@ class Checker: def NOTIN(self, node: ast.NotIn) -> None: ... def MATMULT(self, node: ast.MatMult) -> None: ... def RAISE(self, node: ast.Raise) -> None: ... - def COMPREHENSION(self, tree: ast.comprehension, omit: _OmitType = ...) -> None: ... - def KEYWORD(self, tree: ast.keyword, omit: _OmitType = ...) -> None: ... - def FORMATTEDVALUE(self, tree: ast.FormattedValue, omit: _OmitType = ...) -> None: ... + def COMPREHENSION(self, tree: ast.comprehension, omit: _OmitType = None) -> None: ... + def KEYWORD(self, tree: ast.keyword, omit: _OmitType = None) -> None: ... + def FORMATTEDVALUE(self, tree: ast.FormattedValue, omit: _OmitType = None) -> None: ... def JOINEDSTR(self, node: ast.AST) -> None: ... def DICT(self, node: ast.Dict) -> None: ... def IF(self, node: ast.If) -> None: ... @@ -326,13 +326,13 @@ class Checker: def EXCEPTHANDLER(self, node: ast.ExceptHandler) -> None: ... def ANNASSIGN(self, node: ast.AnnAssign) -> None: ... def COMPARE(self, node: ast.Compare) -> None: ... - def MATCH(self, tree: _Match, omit: _OmitType = ...) -> None: ... - def MATCH_CASE(self, tree: _MatchCase, omit: _OmitType = ...) -> None: ... - def MATCHCLASS(self, tree: _MatchClass, omit: _OmitType = ...) -> None: ... - def MATCHOR(self, tree: _MatchOr, omit: _OmitType = ...) -> None: ... - def MATCHSEQUENCE(self, tree: _MatchSequence, omit: _OmitType = ...) -> None: ... - def MATCHSINGLETON(self, tree: _MatchSingleton, omit: _OmitType = ...) -> None: ... - def MATCHVALUE(self, tree: _MatchValue, omit: _OmitType = ...) -> None: ... + def MATCH(self, tree: _Match, omit: _OmitType = None) -> None: ... + def MATCH_CASE(self, tree: _MatchCase, omit: _OmitType = None) -> None: ... + def MATCHCLASS(self, tree: _MatchClass, omit: _OmitType = None) -> None: ... + def MATCHOR(self, tree: _MatchOr, omit: _OmitType = None) -> None: ... + def MATCHSEQUENCE(self, tree: _MatchSequence, omit: _OmitType = None) -> None: ... + def MATCHSINGLETON(self, tree: _MatchSingleton, omit: _OmitType = None) -> None: ... + def MATCHVALUE(self, tree: _MatchValue, omit: _OmitType = None) -> None: ... def MATCHAS(self, node: _MatchAs) -> None: ... def MATCHMAPPING(self, node: _MatchMapping) -> None: ... def MATCHSTAR(self, node: _MatchStar) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/messages.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/messages.pyi index 9cad06981..c0b3b0d65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/messages.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/messages.pyi @@ -39,7 +39,7 @@ class UndefinedName(Message): class DoctestSyntaxError(Message): message_args: tuple[()] - def __init__(self, filename, loc: ast.AST, position: tuple[int, int] | None = ...) -> None: ... + def __init__(self, filename, loc: ast.AST, position: tuple[int, int] | None = None) -> None: ... class UndefinedExport(Message): message_args: tuple[Any] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/depend/analysis.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/depend/analysis.pyi index 84a0ec466..027d6a547 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/depend/analysis.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/depend/analysis.pyi @@ -16,8 +16,8 @@ class PyiModuleGraph: # incomplete def __init__( self, pyi_homepath: str, - user_hook_dirs: Iterable[StrPath] = ..., - excludes: Iterable[str] = ..., + user_hook_dirs: Iterable[StrPath] = (), + excludes: Iterable[str] = (), *, path: Iterable[str] | None = None, replace_paths: Iterable[tuple[StrPath, StrPath]] = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/__init__.pyi index b2ee86387..4943049d3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/__init__.pyi @@ -45,7 +45,9 @@ def is_module_or_submodule(name: str, mod_or_submod: str) -> bool: ... PY_DYLIB_PATTERNS: Final[list[str]] -def collect_dynamic_libs(package: str, destdir: object = None, search_patterns: Iterable[str] = ...) -> list[tuple[str, str]]: ... +def collect_dynamic_libs( + package: str, destdir: object = None, search_patterns: Iterable[str] = ["*.dll", "*.dylib", "lib*.so"] +) -> list[tuple[str, str]]: ... def collect_data_files( package: str, include_py_files: bool = False, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/_util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/_util.pyi index 87788dd6d..5d0e9d665 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/_util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/_util.pyi @@ -30,7 +30,7 @@ class AbstractListener(threading.Thread): _ready: bool # undocumented _queue: Queue[sys._OptExcInfo | None] # undocumented daemon: bool - def __init__(self, suppress: bool = ..., **kwargs: Callable[..., bool | None] | None) -> None: ... + def __init__(self, suppress: bool = False, **kwargs: Callable[..., bool | None] | None) -> None: ... @property def suppress(self) -> bool: ... @property @@ -65,7 +65,7 @@ class Events(Generic[_T, _AbstractListener_T]): ) -> None: ... def __iter__(self) -> Self: ... def __next__(self) -> _T: ... - def get(self, timeout: float | None = ...) -> _T | None: ... + def get(self, timeout: float | None = None) -> _T | None: ... def _event_mapper(self, event: Callable[_P, object]) -> Callable[_P, None]: ... class NotifierMixin: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/keyboard/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/keyboard/__init__.pyi index 7add85453..bda2b193f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/keyboard/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/keyboard/__init__.pyi @@ -17,7 +17,7 @@ class Events(_util.Events[Any, Listener]): def __init__(self) -> None: ... def __next__(self) -> Press | Release: ... - def get(self, timeout: float | None = ...) -> Press | Release | None: ... + def get(self, timeout: float | None = None) -> Press | Release | None: ... class HotKey: def __init__(self, keys: list[KeyCode], on_activate: Callable[[], object]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/keyboard/_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/keyboard/_base.pyi index a67c0d0ec..692af81ef 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/keyboard/_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/keyboard/_base.pyi @@ -13,7 +13,7 @@ class KeyCode: char: str | None is_dead: bool | None combining: str | None - def __init__(self, vk: str | None = ..., char: str | None = ..., is_dead: bool = ..., **kwargs: str) -> None: ... + def __init__(self, vk: str | None = None, char: str | None = None, is_dead: bool = False, **kwargs: str) -> None: ... def __eq__(self, other: object) -> bool: ... def __hash__(self) -> int: ... def join(self, key: Self) -> Self: ... @@ -124,9 +124,9 @@ class Controller: class Listener(AbstractListener): def __init__( self, - on_press: Callable[[Key | KeyCode | None], None] | None = ..., - on_release: Callable[[Key | KeyCode | None], None] | None = ..., - suppress: bool = ..., + on_press: Callable[[Key | KeyCode | None], None] | None = None, + on_release: Callable[[Key | KeyCode | None], None] | None = None, + suppress: bool = False, **kwargs: Any, ) -> None: ... def canonical(self, key: Key | KeyCode) -> Key | KeyCode: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/mouse/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/mouse/__init__.pyi index ad9546c84..a06bed394 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/mouse/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/mouse/__init__.pyi @@ -26,4 +26,4 @@ class Events(_util.Events[Any, Listener]): def __init__(self) -> None: ... def __next__(self) -> Move | Click | Scroll: ... - def get(self, timeout: float | None = ...) -> Move | Click | Scroll | None: ... + def get(self, timeout: float | None = None) -> Move | Click | Scroll | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/mouse/_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/mouse/_base.pyi index 409da415d..10141121b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/mouse/_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pynput/pynput/mouse/_base.pyi @@ -54,7 +54,7 @@ class Controller: def press(self, button: Button) -> None: ... def release(self, button: Button) -> None: ... def move(self, dx: int, dy: int) -> None: ... - def click(self, button: Button, count: int = ...) -> None: ... + def click(self, button: Button, count: int = 1) -> None: ... def __enter__(self) -> Self: ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None @@ -86,9 +86,9 @@ class Listener(AbstractListener): def __init__( self, - on_move: Callable[[int, int], bool | None] | None = ..., - on_click: Callable[[int, int, Button, bool], bool | None] | None = ..., - on_scroll: Callable[[int, int, int, int], bool | None] | None = ..., - suppress: bool = ..., + on_move: Callable[[int, int], bool | None] | None = None, + on_click: Callable[[int, int, Button, bool], bool | None] | None = None, + on_scroll: Callable[[int, int, int, int], bool | None] | None = None, + suppress: bool = False, **kwargs: Any, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/rfc2217.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/rfc2217.pyi index 059009324..6de6b3525 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/rfc2217.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/rfc2217.pyi @@ -125,7 +125,7 @@ class TelnetOption: ack_yes: bytes, ack_no: bytes, initial_state: str, - activation_callback: Callable[[], Any] | None = ..., + activation_callback: Callable[[], Any] | None = None, ) -> None: ... def process_incoming(self, command: bytes) -> None: ... @@ -136,12 +136,12 @@ class TelnetSubnegotiation: value: bytes | None ack_option: bytes state: str - def __init__(self, connection: Serial, name: str, option: bytes, ack_option: bytes | None = ...) -> None: ... + def __init__(self, connection: Serial, name: str, option: bytes, ack_option: bytes | None = None) -> None: ... def set(self, value: bytes) -> None: ... def is_ready(self) -> bool: ... @property def active(self) -> bool: ... - def wait(self, timeout: float = ...) -> None: ... + def wait(self, timeout: float = 3) -> None: ... def check_answer(self, suboption: bytes) -> None: ... class Serial(SerialBase): @@ -163,7 +163,7 @@ class Serial(SerialBase): @property def cd(self) -> bool: ... def telnet_send_option(self, action: bytes, option: bytes) -> None: ... - def rfc2217_send_subnegotiation(self, option: bytes, value: bytes = ...) -> None: ... + def rfc2217_send_subnegotiation(self, option: bytes, value: bytes = b"") -> None: ... def rfc2217_send_purge(self, value: bytes) -> None: ... def rfc2217_set_control(self, value: bytes) -> None: ... def rfc2217_flow_server_ready(self) -> None: ... @@ -179,9 +179,9 @@ class PortManager: modemstate_mask: int last_modemstate: int | None linstate_mask: int - def __init__(self, serial_port: Serial, connection: Serial, logger: logging.Logger | None = ...) -> None: ... + def __init__(self, serial_port: Serial, connection: Serial, logger: logging.Logger | None = None) -> None: ... def telnet_send_option(self, action: bytes, option: bytes) -> None: ... - def rfc2217_send_subnegotiation(self, option: bytes, value: bytes = ...) -> None: ... - def check_modem_lines(self, force_notification: bool = ...) -> None: ... + def rfc2217_send_subnegotiation(self, option: bytes, value: bytes = b"") -> None: ... + def check_modem_lines(self, force_notification: bool = False) -> None: ... def escape(self, data: bytes) -> Generator[bytes, None, None]: ... def filter(self, data: bytes) -> Generator[bytes, None, None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/rs485.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/rs485.pyi index 55d754440..b76617efb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/rs485.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/rs485.pyi @@ -8,11 +8,11 @@ class RS485Settings: delay_before_rx: float | None def __init__( self, - rts_level_for_tx: bool = ..., - rts_level_for_rx: bool = ..., - loopback: bool = ..., - delay_before_tx: float | None = ..., - delay_before_rx: float | None = ..., + rts_level_for_tx: bool = True, + rts_level_for_rx: bool = False, + loopback: bool = False, + delay_before_tx: float | None = None, + delay_before_rx: float | None = None, ) -> None: ... class RS485(serial.Serial): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/serialutil.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/serialutil.pyi index 6f01687db..c914c8e62 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/serialutil.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/serialutil.pyi @@ -52,18 +52,18 @@ class SerialBase(io.RawIOBase): name: str | None def __init__( self, - port: str | None = ..., - baudrate: int = ..., - bytesize: int = ..., - parity: str = ..., - stopbits: float = ..., - timeout: float | None = ..., - xonxoff: bool = ..., - rtscts: bool = ..., - write_timeout: float | None = ..., - dsrdtr: bool = ..., - inter_byte_timeout: float | None = ..., - exclusive: float | None = ..., + port: str | None = None, + baudrate: int = 9600, + bytesize: int = 8, + parity: str = "N", + stopbits: float = 1, + timeout: float | None = None, + xonxoff: bool = False, + rtscts: bool = False, + write_timeout: float | None = None, + dsrdtr: bool = False, + inter_byte_timeout: float | None = None, + exclusive: float | None = None, ) -> None: ... # Return type: @@ -147,7 +147,7 @@ class SerialBase(io.RawIOBase): def get_settings(self) -> dict[str, Any]: ... def apply_settings(self, d: dict[str, Any]) -> None: ... def readinto(self, __buffer: WriteableBuffer) -> int: ... # returns int unlike `io.RawIOBase` - def send_break(self, duration: float = ...) -> None: ... + def send_break(self, duration: float = 0.25) -> None: ... def read_all(self) -> bytes | None: ... - def read_until(self, expected: bytes = ..., size: int | None = ...) -> bytes: ... + def read_until(self, expected: bytes = b"\n", size: int | None = None) -> bytes: ... def iread_until(self, expected: bytes = ..., size: int | None = ...) -> Generator[bytes, None, None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/serialwin32.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/serialwin32.pyi index d44693d37..86d09dc25 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/serialwin32.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/serialwin32.pyi @@ -18,8 +18,8 @@ class Serial(SerialBase): def ri(self) -> bool: ... @property def cd(self) -> bool: ... - def set_buffer_size(self, rx_size: int = ..., tx_size: int | None = ...) -> None: ... - def set_output_flow_control(self, enable: bool = ...) -> None: ... + def set_buffer_size(self, rx_size: int = 4096, tx_size: int | None = None) -> None: ... + def set_output_flow_control(self, enable: bool = True) -> None: ... @property def out_waiting(self) -> int: ... def cancel_read(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/hexlify_codec.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/hexlify_codec.pyi index 252a6a5d4..10e43143e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/hexlify_codec.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/hexlify_codec.pyi @@ -3,19 +3,19 @@ from _typeshed import ReadableBuffer HEXDIGITS: str -def hex_encode(data: str, errors: str = ...) -> tuple[bytes, int]: ... -def hex_decode(data: bytes, errors: str = ...) -> tuple[str, int]: ... +def hex_encode(data: str, errors: str = "strict") -> tuple[bytes, int]: ... +def hex_decode(data: bytes, errors: str = "strict") -> tuple[str, int]: ... class Codec(codecs.Codec): - def encode(self, data: str, errors: str = ...) -> tuple[bytes, int]: ... - def decode(self, data: bytes, errors: str = ...) -> tuple[str, int]: ... + def encode(self, data: str, errors: str = "strict") -> tuple[bytes, int]: ... + def decode(self, data: bytes, errors: str = "strict") -> tuple[str, int]: ... class IncrementalEncoder(codecs.IncrementalEncoder): state: int - def encode(self, data: str, final: bool = ...) -> bytes: ... + def encode(self, data: str, final: bool = False) -> bytes: ... class IncrementalDecoder(codecs.IncrementalDecoder): - def decode(self, data: ReadableBuffer, final: bool = ...) -> str: ... + def decode(self, data: ReadableBuffer, final: bool = False) -> str: ... class StreamWriter(Codec, codecs.StreamWriter): ... class StreamReader(Codec, codecs.StreamReader): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports.pyi index 0266c39a2..d40bb0896 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports.pyi @@ -7,5 +7,5 @@ if sys.platform == "win32": else: from serial.tools.list_ports_posix import comports as comports -def grep(regexp: str | re.Pattern[str], include_links: bool = ...) -> Generator[tuple[str, str, str], None, None]: ... +def grep(regexp: str | re.Pattern[str], include_links: bool = False) -> Generator[tuple[str, str, str], None, None]: ... def main() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_common.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_common.pyi index ee607525d..465bb0406 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_common.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_common.pyi @@ -23,7 +23,7 @@ class ListPortInfo: manufacturer: str | None product: str | None interface: str | None - def __init__(self, device: str, skip_link_detection: bool = ...) -> None: ... + def __init__(self, device: str, skip_link_detection: bool = False) -> None: ... def usb_description(self) -> str: ... def usb_info(self) -> str: ... def apply_usb_info(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_linux.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_linux.pyi index 256f46ea0..a56d2c581 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_linux.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_linux.pyi @@ -8,4 +8,4 @@ class SysFS(ListPortInfo): def __init__(self, device: str) -> None: ... def read_line(self, *args: str) -> str | None: ... -def comports(include_links: bool = ...) -> list[SysFS]: ... +def comports(include_links: bool = False) -> list[SysFS]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_windows.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_windows.pyi index ce51d57b8..d1b6cfdad 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_windows.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/list_ports_windows.pyi @@ -69,8 +69,8 @@ if sys.platform == "win32": child_devinst: ctypes._CData, child_vid: int | None, child_pid: int | None, - depth: int = ..., - last_serial_number: str | None = ..., + depth: int = 0, + last_serial_number: str | None = None, ) -> str: ... def iterate_comports() -> Generator[ListPortInfo, None, None]: ... - def comports(include_links: bool = ...) -> list[ListPortInfo]: ... + def comports(include_links: bool = False) -> list[ListPortInfo]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/miniterm.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/miniterm.pyi index 26b059f9b..64dfece5d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/miniterm.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/tools/miniterm.pyi @@ -84,17 +84,17 @@ class Miniterm: rx_decoder: codecs.IncrementalDecoder | None tx_decoder: codecs.IncrementalDecoder | None tx_encoder: codecs.IncrementalEncoder | None - def __init__(self, serial_instance: Serial, echo: bool = ..., eol: str = ..., filters: Iterable[str] = ...) -> None: ... + def __init__(self, serial_instance: Serial, echo: bool = False, eol: str = "crlf", filters: Iterable[str] = ()) -> None: ... transmitter_thread: threading.Thread def start(self) -> None: ... def stop(self) -> None: ... - def join(self, transmit_only: bool = ...) -> None: ... + def join(self, transmit_only: bool = False) -> None: ... def close(self) -> None: ... tx_transformations: list[Transform] rx_transformations: list[Transform] def update_transformations(self) -> None: ... - def set_rx_encoding(self, encoding: str, errors: str = ...) -> None: ... - def set_tx_encoding(self, encoding: str, errors: str = ...) -> None: ... + def set_rx_encoding(self, encoding: str, errors: str = "replace") -> None: ... + def set_tx_encoding(self, encoding: str, errors: str = "replace") -> None: ... def dump_port_settings(self) -> None: ... def reader(self) -> None: ... def writer(self) -> None: ... @@ -108,5 +108,5 @@ class Miniterm: def get_help_text(self) -> str: ... def main( - default_port: str | None = ..., default_baudrate: int = ..., default_rts: int | None = ..., default_dtr: int | None = ... + default_port: str | None = None, default_baudrate: int = 9600, default_rts: int | None = None, default_dtr: int | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/urlhandler/protocol_spy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/urlhandler/protocol_spy.pyi index 7535be493..b5c6d243e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/urlhandler/protocol_spy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/serial/urlhandler/protocol_spy.pyi @@ -26,7 +26,7 @@ class FormatHexdump(_Formatter): tx_color: str control_color: str def __init__(self, output: TextIO, color: bool) -> None: ... - def write_line(self, timestamp: float, label: str, value: str, value2: str = ...) -> None: ... + def write_line(self, timestamp: float, label: str, value: str, value2: str = "") -> None: ... class Serial(serial.Serial): formatter: FormatRaw | FormatHexdump | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/__init__.pyi index 6e42892a6..e4606f6f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/__init__.pyi @@ -25,11 +25,11 @@ from pysftp.helpers import ( ) class CnOpts: - log: bool = ... - compression: bool = ... - ciphers: Sequence[str] | None = ... - hostkeys: paramiko.HostKeys = ... - def __init__(self, knownhosts: str | None = ...) -> None: ... + log: bool + compression: bool + ciphers: Sequence[str] | None + hostkeys: paramiko.HostKeys | None + def __init__(self, knownhosts: str | None = None) -> None: ... def get_hostkey(self, host: str) -> paramiko.PKey: ... _Callback: TypeAlias = Callable[[int, int], object] @@ -39,56 +39,56 @@ class Connection: def __init__( self, host: str, - username: str | None = ..., - private_key: str | paramiko.RSAKey | paramiko.AgentKey | None = ..., - password: str | None = ..., - port: int = ..., - private_key_pass: str | None = ..., - ciphers: Sequence[str] | None = ..., - log: bool = ..., - cnopts: CnOpts | None = ..., - default_path: _Path | None = ..., + username: str | None = None, + private_key: str | paramiko.RSAKey | paramiko.AgentKey | None = None, + password: str | None = None, + port: int = 22, + private_key_pass: str | None = None, + ciphers: Sequence[str] | None = None, + log: bool = False, + cnopts: CnOpts | None = None, + default_path: _Path | None = None, ) -> None: ... @property def pwd(self) -> str: ... def get( - self, remotepath: _Path, localpath: _Path | None = ..., callback: _Callback | None = ..., preserve_mtime: bool = ... + self, remotepath: _Path, localpath: _Path | None = None, callback: _Callback | None = None, preserve_mtime: bool = False ) -> None: ... - def get_d(self, remotedir: _Path, localdir: _Path, preserve_mtime: bool = ...) -> None: ... - def get_r(self, remotedir: _Path, localdir: _Path, preserve_mtime: bool = ...) -> None: ... - def getfo(self, remotepath: _Path, flo: IO[bytes], callback: _Callback | None = ...) -> int: ... + def get_d(self, remotedir: _Path, localdir: _Path, preserve_mtime: bool = False) -> None: ... + def get_r(self, remotedir: _Path, localdir: _Path, preserve_mtime: bool = False) -> None: ... + def getfo(self, remotepath: _Path, flo: IO[bytes], callback: _Callback | None = None) -> int: ... def put( self, localpath: _Path, - remotepath: _Path | None = ..., - callback: _Callback | None = ..., - confirm: bool = ..., - preserve_mtime: bool = ..., + remotepath: _Path | None = None, + callback: _Callback | None = None, + confirm: bool = True, + preserve_mtime: bool = False, ) -> paramiko.SFTPAttributes: ... - def put_d(self, localpath: _Path, remotepath: _Path, confirm: bool = ..., preserve_mtime: bool = ...) -> None: ... - def put_r(self, localpath: _Path, remotepath: _Path, confirm: bool = ..., preserve_mtime: bool = ...) -> None: ... + def put_d(self, localpath: _Path, remotepath: _Path, confirm: bool = True, preserve_mtime: bool = False) -> None: ... + def put_r(self, localpath: _Path, remotepath: _Path, confirm: bool = True, preserve_mtime: bool = False) -> None: ... def putfo( self, flo: IO[bytes], - remotepath: _Path | None = ..., - file_size: int = ..., - callback: _Callback | None = ..., - confirm: bool = ..., + remotepath: _Path | None = None, + file_size: int = 0, + callback: _Callback | None = None, + confirm: bool = True, ) -> paramiko.SFTPAttributes: ... def execute(self, command: str) -> list[str]: ... - def cd(self, remotepath: _Path | None = ...) -> AbstractContextManager[None]: ... # noqa: F811 + def cd(self, remotepath: _Path | None = None) -> AbstractContextManager[None]: ... # noqa: F811 def chdir(self, remotepath: _Path) -> None: ... def cwd(self, remotepath: _Path) -> None: ... - def chmod(self, remotepath: _Path, mode: int = ...) -> None: ... - def chown(self, remotepath: _Path, uid: int | None = ..., gid: int | None = ...) -> None: ... + def chmod(self, remotepath: _Path, mode: int = 777) -> None: ... + def chown(self, remotepath: _Path, uid: int | None = None, gid: int | None = None) -> None: ... def getcwd(self) -> str: ... - def listdir(self, remotepath: _Path = ...) -> list[str]: ... - def listdir_attr(self, remotepath: _Path = ...) -> list[paramiko.SFTPAttributes]: ... - def mkdir(self, remotepath: _Path, mode: int = ...) -> None: ... + def listdir(self, remotepath: _Path = ".") -> list[str]: ... + def listdir_attr(self, remotepath: _Path = ".") -> list[paramiko.SFTPAttributes]: ... + def mkdir(self, remotepath: _Path, mode: int = 777) -> None: ... def normalize(self, remotepath: _Path) -> str: ... def isdir(self, remotepath: _Path) -> bool: ... def isfile(self, remotepath: _Path) -> bool: ... - def makedirs(self, remotedir: _Path, mode: int = ...) -> None: ... + def makedirs(self, remotedir: _Path, mode: int = 777) -> None: ... def readlink(self, remotelink: _Path) -> str: ... def remove(self, remotefile: _Path) -> None: ... def unlink(self, remotefile: _Path) -> None: ... @@ -97,13 +97,18 @@ class Connection: def stat(self, remotepath: _Path) -> paramiko.SFTPAttributes: ... def lstat(self, remotepath: _Path) -> paramiko.SFTPAttributes: ... def close(self) -> None: ... - def open(self, remote_file: _Path, mode: str = ..., bufsize: int = ...) -> paramiko.SFTPFile: ... + def open(self, remote_file: _Path, mode: str = "r", bufsize: int = -1) -> paramiko.SFTPFile: ... def exists(self, remotepath: _Path) -> bool: ... def lexists(self, remotepath: _Path) -> bool: ... def symlink(self, remote_src: _Path, remote_dest: _Path) -> None: ... def truncate(self, remotepath: _Path, size: int) -> int: ... def walktree( # noqa: F811 - self, remotepath: _Path, fcallback: _PathCallback, dcallback: _PathCallback, ucallback: _PathCallback, recurse: bool = ... + self, + remotepath: _Path, + fcallback: _PathCallback, + dcallback: _PathCallback, + ucallback: _PathCallback, + recurse: bool = True, ) -> None: ... @property def sftp_client(self) -> paramiko.SFTPClient: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/exceptions.pyi index 7416456a8..8db14dead 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/exceptions.pyi @@ -1,9 +1,9 @@ class ConnectionException(Exception): - message: str = ... + message: str def __init__(self, host: str, port: int) -> None: ... class CredentialException(Exception): - message: str = ... + message: str def __init__(self, message: str) -> None: ... class HostKeysException(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/helpers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/helpers.pyi index f792cd3e1..96116d13f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/helpers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pysftp/pysftp/helpers.pyi @@ -30,6 +30,6 @@ def reparent(newparent: str, oldpath: str) -> str: ... _PathCallback: TypeAlias = Callable[[str], object] def walktree( - localpath: str, fcallback: _PathCallback, dcallback: _PathCallback, ucallback: _PathCallback, recurse: bool = ... + localpath: str, fcallback: _PathCallback, dcallback: _PathCallback, ucallback: _PathCallback, recurse: bool = True ) -> None: ... -def cd(localpath: str | None = ...) -> AbstractContextManager[None]: ... +def cd(localpath: str | None = None) -> AbstractContextManager[None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/datemath/helpers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/datemath/helpers.pyi index 52402ea63..ea600a2c4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/datemath/helpers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/datemath/helpers.pyi @@ -5,6 +5,6 @@ import arrow class DateMathException(Exception): ... def parse( - expression: str, now: arrow.Arrow | None = ..., tz: str = ..., type: str | None = ..., roundDown: bool = ... + expression: str, now: arrow.Arrow | None = None, tz: str = "UTC", type: str | None = None, roundDown: bool = True ) -> arrow.Arrow: ... def __getattr__(name: str) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/_common.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/_common.pyi index dd7eff9b6..75bf74c52 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/_common.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/_common.pyi @@ -1,7 +1,7 @@ from typing_extensions import Self class weekday: - def __init__(self, weekday: int, n: int | None = ...) -> None: ... + def __init__(self, weekday: int, n: int | None = None) -> None: ... def __call__(self, n: int) -> Self: ... def __eq__(self, other: object) -> bool: ... def __hash__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/easter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/easter.pyi index 33e366d47..1d041e9e4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/easter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/easter.pyi @@ -5,4 +5,4 @@ EASTER_JULIAN: Literal[1] EASTER_ORTHODOX: Literal[2] EASTER_WESTERN: Literal[3] -def easter(year: int, method: Literal[1, 2, 3] = ...) -> date: ... +def easter(year: int, method: Literal[1, 2, 3] = 3) -> date: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/parser/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/parser/__init__.pyi index 96fd22474..c375ff158 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/parser/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/parser/__init__.pyi @@ -18,7 +18,7 @@ class parserinfo: UTCZONE: list[str] PERTAIN: list[str] TZOFFSET: dict[str, int] - def __init__(self, dayfirst: bool = ..., yearfirst: bool = ...) -> None: ... + def __init__(self, dayfirst: bool = False, yearfirst: bool = False) -> None: ... def jump(self, name: str) -> bool: ... def weekday(self, name: str) -> int | None: ... def month(self, name: str) -> int | None: ... @@ -31,13 +31,13 @@ class parserinfo: def validate(self, res: datetime) -> bool: ... class parser: - def __init__(self, info: parserinfo | None = ...) -> None: ... + def __init__(self, info: parserinfo | None = None) -> None: ... def parse( self, timestr: _FileOrStr, - default: datetime | None = ..., - ignoretz: bool = ..., - tzinfos: _TzInfo | None = ..., + default: datetime | None = None, + ignoretz: bool = False, + tzinfos: _TzInfo | None = None, *, dayfirst: bool | None = ..., yearfirst: bool | None = ..., @@ -49,7 +49,7 @@ DEFAULTPARSER: parser def parse( timestr: _FileOrStr, - parserinfo: parserinfo | None = ..., + parserinfo: parserinfo | None = None, *, dayfirst: bool | None = ..., yearfirst: bool | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/parser/isoparser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/parser/isoparser.pyi index 4cc86712a..fc5e46d97 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/parser/isoparser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/parser/isoparser.pyi @@ -6,10 +6,10 @@ _Readable: TypeAlias = SupportsRead[str | bytes] _TakesAscii: TypeAlias = str | bytes | _Readable class isoparser: - def __init__(self, sep: str | bytes | None = ...): ... + def __init__(self, sep: str | bytes | None = None): ... def isoparse(self, dt_str: _TakesAscii) -> datetime: ... def parse_isodate(self, datestr: _TakesAscii) -> date: ... def parse_isotime(self, timestr: _TakesAscii) -> time: ... - def parse_tzstr(self, tzstr: _TakesAscii, zero_as_utc: bool = ...) -> tzinfo: ... + def parse_tzstr(self, tzstr: _TakesAscii, zero_as_utc: bool = True) -> tzinfo: ... def isoparse(dt_str: _TakesAscii) -> datetime: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/relativedelta.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/relativedelta.pyi index 4d300afac..f46d505b4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/relativedelta.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/relativedelta.pyi @@ -36,27 +36,27 @@ class relativedelta: microsecond: int | None def __init__( self, - dt1: date | None = ..., - dt2: date | None = ..., - years: int | None = ..., - months: int | None = ..., - days: int | None = ..., - leapdays: int | None = ..., - weeks: int | None = ..., - hours: int | None = ..., - minutes: int | None = ..., - seconds: int | None = ..., - microseconds: int | None = ..., - year: int | None = ..., - month: int | None = ..., - day: int | None = ..., - weekday: int | _Weekday | None = ..., - yearday: int | None = ..., - nlyearday: int | None = ..., - hour: int | None = ..., - minute: int | None = ..., - second: int | None = ..., - microsecond: int | None = ..., + dt1: date | None = None, + dt2: date | None = None, + years: int | None = 0, + months: int | None = 0, + days: int | None = 0, + leapdays: int | None = 0, + weeks: int | None = 0, + hours: int | None = 0, + minutes: int | None = 0, + seconds: int | None = 0, + microseconds: int | None = 0, + year: int | None = None, + month: int | None = None, + day: int | None = None, + weekday: int | _Weekday | None = None, + yearday: int | None = None, + nlyearday: int | None = None, + hour: int | None = None, + minute: int | None = None, + second: int | None = None, + microsecond: int | None = None, ) -> None: ... @property def weeks(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/rrule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/rrule.pyi index 60b84d63c..f091cfbd6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/rrule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/rrule.pyi @@ -1,7 +1,6 @@ import datetime from _typeshed import Incomplete -from collections.abc import Iterable, Iterator -from typing import Any +from collections.abc import Iterable, Iterator, Sequence from typing_extensions import TypeAlias from ._common import weekday as weekdaybase @@ -26,56 +25,58 @@ SA: weekday SU: weekday class rrulebase: - def __init__(self, cache: bool = ...) -> None: ... + def __init__(self, cache: bool = False) -> None: ... def __iter__(self) -> Iterator[datetime.datetime]: ... def __getitem__(self, item): ... def __contains__(self, item): ... def count(self): ... - def before(self, dt, inc: bool = ...): ... - def after(self, dt, inc: bool = ...): ... - def xafter(self, dt, count: Incomplete | None = ..., inc: bool = ...): ... - def between(self, after, before, inc: bool = ..., count: int = ...): ... + def before(self, dt, inc: bool = False): ... + def after(self, dt, inc: bool = False): ... + def xafter(self, dt, count: Incomplete | None = None, inc: bool = False): ... + def between(self, after, before, inc: bool = False, count: int = 1): ... class rrule(rrulebase): def __init__( self, freq, - dtstart: datetime.date | None = ..., - interval: int = ..., - wkst: weekday | int | None = ..., - count: int | None = ..., - until: datetime.date | int | None = ..., - bysetpos: int | Iterable[int] | None = ..., - bymonth: int | Iterable[int] | None = ..., - bymonthday: int | Iterable[int] | None = ..., - byyearday: int | Iterable[int] | None = ..., - byeaster: int | Iterable[int] | None = ..., - byweekno: int | Iterable[int] | None = ..., - byweekday: int | weekday | Iterable[int] | Iterable[weekday] | None = ..., - byhour: int | Iterable[int] | None = ..., - byminute: int | Iterable[int] | None = ..., - bysecond: int | Iterable[int] | None = ..., - cache: bool = ..., + dtstart: datetime.date | None = None, + interval: int = 1, + wkst: weekday | int | None = None, + count: int | None = None, + until: datetime.date | int | None = None, + bysetpos: int | Iterable[int] | None = None, + bymonth: int | Iterable[int] | None = None, + bymonthday: int | Iterable[int] | None = None, + byyearday: int | Iterable[int] | None = None, + byeaster: int | Iterable[int] | None = None, + byweekno: int | Iterable[int] | None = None, + byweekday: int | weekday | Iterable[int] | Iterable[weekday] | None = None, + byhour: int | Iterable[int] | None = None, + byminute: int | Iterable[int] | None = None, + bysecond: int | Iterable[int] | None = None, + cache: bool = False, ) -> None: ... def replace(self, **kwargs): ... +_RRule: TypeAlias = rrule + class _iterinfo: - rrule: Any = ... - def __init__(self, rrule) -> None: ... - yearlen: int = ... - nextyearlen: int = ... - yearordinal: int = ... - yearweekday: int = ... - mmask: Any = ... - mdaymask: Any = ... - nmdaymask: Any = ... - wdaymask: Any = ... - mrange: Any = ... - wnomask: Any = ... - nwdaymask: Any = ... - eastermask: Any = ... - lastyear: int = ... - lastmonth: int = ... + rrule: _RRule + def __init__(self, rrule: _RRule) -> None: ... + yearlen: int | None + nextyearlen: int | None + yearordinal: int | None + yearweekday: int | None + mmask: Sequence[int] | None + mdaymask: Sequence[int] | None + nmdaymask: Sequence[int] | None + wdaymask: Sequence[int] | None + mrange: Sequence[int] | None + wnomask: Sequence[int] | None + nwdaymask: Sequence[int] | None + eastermask: Sequence[int] | None + lastyear: int | None + lastmonth: int | None def rebuild(self, year, month): ... def ydayset(self, year, month, day): ... def mdayset(self, year, month, day): ... @@ -85,22 +86,20 @@ class _iterinfo: def mtimeset(self, hour, minute, second): ... def stimeset(self, hour, minute, second): ... -_RRule: TypeAlias = rrule - class rruleset(rrulebase): class _genitem: - dt: Any = ... - genlist: Any = ... - gen: Any = ... + dt: Incomplete + genlist: list[Incomplete] + gen: Incomplete def __init__(self, genlist, gen) -> None: ... - def __next__(self): ... - next: Any = ... - def __lt__(self, other): ... - def __gt__(self, other): ... - def __eq__(self, other): ... - def __ne__(self, other): ... + def __next__(self) -> None: ... + next = __next__ + def __lt__(self, other) -> bool: ... + def __gt__(self, other) -> bool: ... + def __eq__(self, other) -> bool: ... + def __ne__(self, other) -> bool: ... - def __init__(self, cache: bool = ...) -> None: ... + def __init__(self, cache: bool = False) -> None: ... def rrule(self, rrule: _RRule): ... def rdate(self, rdate): ... def exrule(self, exrule): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/tz/_common.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/tz/_common.pyi index c9e6ba5dd..4e64822fa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/tz/_common.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/tz/_common.pyi @@ -3,7 +3,7 @@ from datetime import datetime, timedelta, tzinfo from typing import ClassVar def tzname_in_python2(namefunc): ... -def enfold(dt: datetime, fold: int = ...): ... +def enfold(dt: datetime, fold: int = 1): ... class _DatetimeWithFold(datetime): @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/tz/tz.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/tz/tz.pyi index a84425283..89f55651c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/tz/tz.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/tz/tz.pyi @@ -61,8 +61,8 @@ class _TZFileReader(Protocol): def seek(self, __target: int, __whence: Literal[1]) -> object: ... class tzfile(_tzinfo): - def __init__(self, fileobj: str | _TZFileReader, filename: str | None = ...) -> None: ... - def is_ambiguous(self, dt: datetime.datetime | None, idx: int | None = ...) -> bool: ... + def __init__(self, fileobj: str | _TZFileReader, filename: str | None = None) -> None: ... + def is_ambiguous(self, dt: datetime.datetime | None, idx: int | None = None) -> bool: ... def utcoffset(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ... def dst(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ... def tzname(self, dt: datetime.datetime | None) -> str: ... @@ -77,18 +77,18 @@ class tzrange(tzrangebase): def __init__( self, stdabbr: str, - stdoffset: int | datetime.timedelta | None = ..., - dstabbr: str | None = ..., - dstoffset: int | datetime.timedelta | None = ..., - start: relativedelta | None = ..., - end: relativedelta | None = ..., + stdoffset: int | datetime.timedelta | None = None, + dstabbr: str | None = None, + dstoffset: int | datetime.timedelta | None = None, + start: relativedelta | None = None, + end: relativedelta | None = None, ) -> None: ... def transitions(self, year: int) -> tuple[datetime.datetime, datetime.datetime]: ... def __eq__(self, other): ... class tzstr(tzrange): hasdst: bool - def __init__(self, s: str, posix_offset: bool = ...) -> None: ... + def __init__(self, s: str, posix_offset: bool = False) -> None: ... @classmethod def instance(cls, name, offset) -> tzoffset: ... @@ -100,13 +100,13 @@ class _ICalReader(Protocol): class tzical: def __init__(self, fileobj: str | _ICalReader) -> None: ... def keys(self): ... - def get(self, tzid: Incomplete | None = ...): ... + def get(self, tzid: Incomplete | None = None): ... TZFILES: list[str] TZPATHS: list[str] -def datetime_exists(dt: datetime.datetime, tz: datetime.tzinfo | None = ...) -> bool: ... -def datetime_ambiguous(dt: datetime.datetime, tz: datetime.tzinfo | None = ...) -> bool: ... +def datetime_exists(dt: datetime.datetime, tz: datetime.tzinfo | None = None) -> bool: ... +def datetime_ambiguous(dt: datetime.datetime, tz: datetime.tzinfo | None = None) -> bool: ... def resolve_imaginary(dt: datetime.datetime) -> datetime.datetime: ... class _GetTZ: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/utils.pyi index 6ebd4031f..8c9f5e44a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/utils.pyi @@ -1,5 +1,5 @@ from datetime import datetime, timedelta, tzinfo def default_tzinfo(dt: datetime, tzinfo: tzinfo) -> datetime: ... -def today(tzinfo: tzinfo | None = ...) -> datetime: ... +def today(tzinfo: tzinfo | None = None) -> datetime: ... def within_delta(dt1: datetime, dt2: datetime, delta: timedelta) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/zoneinfo/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/zoneinfo/__init__.pyi index 59c12273f..7bd2845a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/zoneinfo/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/zoneinfo/__init__.pyi @@ -9,9 +9,9 @@ _MetadataType: TypeAlias = dict[str, Incomplete] class ZoneInfoFile: zones: dict[Incomplete, Incomplete] metadata: _MetadataType | None - def __init__(self, zonefile_stream: IO[bytes] | None = ...) -> None: ... - def get(self, name, default: Incomplete | None = ...): ... + def __init__(self, zonefile_stream: IO[bytes] | None = None) -> None: ... + def get(self, name, default: Incomplete | None = None): ... -def get_zonefile_instance(new_instance: bool = ...) -> ZoneInfoFile: ... +def get_zonefile_instance(new_instance: bool = False) -> ZoneInfoFile: ... def gettz(name): ... def gettz_db_metadata() -> _MetadataType: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/zoneinfo/rebuild.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/zoneinfo/rebuild.pyi index 67668644e..e38459267 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/zoneinfo/rebuild.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/dateutil/zoneinfo/rebuild.pyi @@ -4,8 +4,8 @@ from tarfile import TarInfo def rebuild( filename: StrOrBytesPath, - tag: Incomplete | None = ..., - format: str = ..., - zonegroups: Sequence[str | TarInfo] = ..., - metadata: Incomplete | None = ..., + tag: Incomplete | None = None, + format: str = "gz", + zonegroups: Sequence[str | TarInfo] = [], + metadata: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/base.pyi index 26313de27..f13da256d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/base.pyi @@ -11,9 +11,9 @@ class Key: def public_key(self) -> Self: ... def to_pem(self) -> bytes: ... def to_dict(self) -> dict[str, Any]: ... - def encrypt(self, plain_text: str | bytes, aad: bytes | None = ...) -> tuple[bytes, bytes, bytes | None]: ... + def encrypt(self, plain_text: str | bytes, aad: bytes | None = None) -> tuple[bytes, bytes, bytes | None]: ... def decrypt( - self, cipher_text: str | bytes, iv: str | bytes | None = ..., aad: bytes | None = ..., tag: bytes | None = ... + self, cipher_text: str | bytes, iv: str | bytes | None = None, aad: bytes | None = None, tag: bytes | None = None ) -> bytes: ... def wrap_key(self, key_data: bytes) -> bytes: ... def unwrap_key(self, wrapped_key: bytes) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/cryptography_backend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/cryptography_backend.pyi index d910e72d0..133ce8ec2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/cryptography_backend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/cryptography_backend.pyi @@ -38,7 +38,7 @@ class CryptographyRSAKey(Key): def verify(self, msg, sig): ... def is_public(self): ... def public_key(self): ... - def to_pem(self, pem_format: str = ...): ... + def to_pem(self, pem_format: str = "PKCS8"): ... def to_dict(self): ... def wrap_key(self, key_data): ... def unwrap_key(self, wrapped_key): ... @@ -53,8 +53,10 @@ class CryptographyAESKey(Key): MODES: Any def __init__(self, key, algorithm) -> None: ... def to_dict(self): ... - def encrypt(self, plain_text, aad: Incomplete | None = ...): ... - def decrypt(self, cipher_text, iv: Incomplete | None = ..., aad: Incomplete | None = ..., tag: Incomplete | None = ...): ... + def encrypt(self, plain_text, aad: Incomplete | None = None): ... + def decrypt( + self, cipher_text, iv: Incomplete | None = None, aad: Incomplete | None = None, tag: Incomplete | None = None + ): ... def wrap_key(self, key_data): ... def unwrap_key(self, wrapped_key): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/rsa_backend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/rsa_backend.pyi index 39e9b1715..495b39a4f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/rsa_backend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/rsa_backend.pyi @@ -9,7 +9,7 @@ RSA_ENCRYPTION_ASN1_OID: str # Enable when we can use stubs from installed dependencies: # from rsa import PublicKey -def pem_to_spki(pem, fmt: str = ...): ... +def pem_to_spki(pem, fmt: str = "PKCS8"): ... class RSAKey(Key): SHA256: str @@ -21,7 +21,7 @@ class RSAKey(Key): def verify(self, msg: bytes, sig: bytes) -> bool: ... def is_public(self) -> bool: ... def public_key(self) -> Self: ... - def to_pem(self, pem_format: str = ...) -> bytes: ... + def to_pem(self, pem_format: str = "PKCS8") -> bytes: ... def to_dict(self) -> dict[str, Any]: ... def wrap_key(self, key_data: bytes) -> bytes: ... def unwrap_key(self, wrapped_key: bytes) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwe.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwe.pyi index 82368e047..e49a1cb09 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwe.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwe.pyi @@ -7,11 +7,11 @@ def encrypt( # Internally it's passed down to jwk.construct(), which explicitly checks for # key as dict instance, instead of a Mapping key: str | bytes | dict[str, Any] | Key, - encryption: str = ..., - algorithm: str = ..., - zip: str | None = ..., - cty: str | None = ..., - kid: str | None = ..., + encryption: str = "A256GCM", + algorithm: str = "dir", + zip: str | None = None, + cty: str | None = None, + kid: str | None = None, ) -> bytes: ... def decrypt( jwe_str: str | bytes, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwk.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwk.pyi index c8113d1b0..8aa0b0f02 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwk.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwk.pyi @@ -9,5 +9,5 @@ def register_key(algorithm: str, key_class: type[Key]) -> Literal[True]: ... def construct( # explicitly checks for key_data as dict instance, instead of a Mapping key_data: str | bytes | dict[str, Any] | Key, - algorithm: str | None = ..., + algorithm: str | None = None, ) -> Key: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jws.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jws.pyi index 0898a14e1..777770ae6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jws.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jws.pyi @@ -8,8 +8,8 @@ def sign( # Internally it's passed down to jwk.construct(), which explicitly checks for # key as dict instance, instead of a Mapping key: str | bytes | dict[str, Any] | Key, - headers: Mapping[str, Any] | None = ..., - algorithm: str = ..., + headers: Mapping[str, Any] | None = None, + algorithm: str = "HS256", ) -> str: ... def verify( token: str | bytes, @@ -17,7 +17,7 @@ def verify( # Callers of this function, like jwt.decode(), and functions called internally, # like jws._verify_signature(), use and accept algorithms=None algorithms: str | Container[str] | None, - verify: bool = ..., + verify: bool = True, ) -> bytes: ... def get_unverified_header(token: str | bytes) -> dict[str, Any]: ... def get_unverified_headers(token: str | bytes) -> dict[str, Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwt.pyi index 4a297cb11..e0286fa2d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/jwt.pyi @@ -7,19 +7,19 @@ def encode( claims: MutableMapping[str, Any], # Internally it calls jws.sign() that expects a key dict instance instead of Mapping key: str | bytes | dict[str, Any] | Key, - algorithm: str = ..., - headers: Mapping[str, Any] | None = ..., - access_token: str | None = ..., + algorithm: str = "HS256", + headers: Mapping[str, Any] | None = None, + access_token: str | None = None, ) -> str: ... def decode( token: str | bytes, key: str | bytes | Mapping[str, Any] | Key, - algorithms: str | Container[str] | None = ..., - options: Mapping[str, Any] | None = ..., - audience: str | None = ..., - issuer: str | Iterable[str] | None = ..., - subject: str | None = ..., - access_token: str | None = ..., + algorithms: str | Container[str] | None = None, + options: Mapping[str, Any] | None = None, + audience: str | None = None, + issuer: str | Iterable[str] | None = None, + subject: str | None = None, + access_token: str | None = None, ) -> dict[str, Any]: ... def get_unverified_header(token: str | bytes) -> dict[str, Any]: ... def get_unverified_headers(token: str | bytes) -> dict[str, Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/utils.pyi index de0a0153a..13adfb02f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/utils.pyi @@ -3,8 +3,8 @@ from datetime import timedelta from hashlib import _Hash from typing import Any -def long_to_bytes(n: int, blocksize: int | None = ...) -> bytes: ... -def long_to_base64(data: int, size: int | None = ...) -> bytes: ... +def long_to_bytes(n: int, blocksize: int | None = 0) -> bytes: ... +def long_to_base64(data: int, size: int | None = 0) -> bytes: ... def int_arr_to_long(arr: Iterable[Any]) -> int: ... def base64_to_long(data: str | bytes) -> int: ... def calculate_at_hash(access_token: str, hash_alg: Callable[[bytes], _Hash]) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/nmap/nmap.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/nmap/nmap.pyi index ae8e48ba9..ff06de1b4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/nmap/nmap.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/nmap/nmap.pyi @@ -53,19 +53,22 @@ __author__: str __version__: str class PortScanner: - def __init__(self, nmap_search_path: Iterable[str] = ...) -> None: ... + def __init__( + self, + nmap_search_path: Iterable[str] = ("nmap", "/usr/bin/nmap", "/usr/local/bin/nmap", "/sw/bin/nmap", "/opt/local/bin/nmap"), + ) -> None: ... def get_nmap_last_output(self) -> str: ... def nmap_version(self) -> tuple[int, int]: ... - def listscan(self, hosts: str = ...) -> list[str]: ... + def listscan(self, hosts: str = "127.0.0.1") -> list[str]: ... def scan( - self, hosts: str = ..., ports: str | None = ..., arguments: str = ..., sudo: bool = ..., timeout: int = ... + self, hosts: str = "127.0.0.1", ports: str | None = None, arguments: str = "-sV", sudo: bool = False, timeout: int = 0 ) -> _Result: ... def analyse_nmap_xml_scan( self, - nmap_xml_output: str | None = ..., - nmap_err: str = ..., - nmap_err_keep_trace: str = ..., - nmap_warn_keep_trace: str = ..., + nmap_xml_output: str | None = None, + nmap_err: str = "", + nmap_err_keep_trace: str = "", + nmap_warn_keep_trace: str = "", ) -> _Result: ... def __getitem__(self, host: str) -> PortScannerHostDict: ... def all_hosts(self) -> list[str]: ... @@ -84,24 +87,24 @@ class PortScannerAsync: def __del__(self) -> None: ... def scan( self, - hosts: str = ..., - ports: str | None = ..., - arguments: str = ..., - callback: _Callback | None = ..., - sudo: bool = ..., - timeout: int = ..., + hosts: str = "127.0.0.1", + ports: str | None = None, + arguments: str = "-sV", + callback: _Callback | None = None, + sudo: bool = False, + timeout: int = 0, ) -> None: ... def stop(self) -> None: ... - def wait(self, timeout: int | None = ...) -> None: ... + def wait(self, timeout: int | None = None) -> None: ... def still_scanning(self) -> bool: ... class PortScannerYield(PortScannerAsync): def __init__(self) -> None: ... def scan( # type: ignore[override] - self, hosts: str = ..., ports: str | None = ..., arguments: str = ..., sudo: bool = ..., timeout: int = ... + self, hosts: str = "127.0.0.1", ports: str | None = None, arguments: str = "-sV", sudo: bool = False, timeout: int = 0 ) -> Iterator[tuple[str, _Result]]: ... def stop(self) -> None: ... - def wait(self, timeout: int | None = ...) -> None: ... + def wait(self, timeout: int | None = None) -> None: ... def still_scanning(self) -> None: ... # type: ignore[override] class PortScannerHostDict(dict[str, Any]): @@ -129,4 +132,4 @@ class PortScannerError(Exception): class PortScannerTimeout(PortScannerError): ... -def convert_nmap_output_to_encoding(value: _T, code: str = ...) -> _T: ... +def convert_nmap_output_to_encoding(value: _T, code: str = "ascii") -> _T: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/slugify/slugify.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/slugify/slugify.pyi index ce2276c09..585e18fa3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/slugify/slugify.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/slugify/slugify.pyi @@ -1,20 +1,20 @@ from collections.abc import Iterable def smart_truncate( - string: str, max_length: int = ..., word_boundary: bool = ..., separator: str = ..., save_order: bool = ... + string: str, max_length: int = 0, word_boundary: bool = False, separator: str = " ", save_order: bool = False ) -> str: ... def slugify( text: str, - entities: bool = ..., - decimal: bool = ..., - hexadecimal: bool = ..., - max_length: int = ..., - word_boundary: bool = ..., - separator: str = ..., - save_order: bool = ..., - stopwords: Iterable[str] = ..., - regex_pattern: str | None = ..., - lowercase: bool = ..., - replacements: Iterable[Iterable[str]] = ..., - allow_unicode: bool = ..., + entities: bool = True, + decimal: bool = True, + hexadecimal: bool = True, + max_length: int = 0, + word_boundary: bool = False, + separator: str = "-", + save_order: bool = False, + stopwords: Iterable[str] = (), + regex_pattern: str | None = None, + lowercase: bool = True, + replacements: Iterable[Iterable[str]] = (), + allow_unicode: bool = False, ) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/X.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/X.pyi index 30261ec97..f05bd07f0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/X.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/X.pyi @@ -1,345 +1,347 @@ -NONE: int -ParentRelative: int -CopyFromParent: int -PointerWindow: int -InputFocus: int -PointerRoot: int -AnyPropertyType: int -AnyKey: int -AnyButton: int -AllTemporary: int -CurrentTime: int -NoSymbol: int -NoEventMask: int -KeyPressMask: int -KeyReleaseMask: int -ButtonPressMask: int -ButtonReleaseMask: int -EnterWindowMask: int -LeaveWindowMask: int -PointerMotionMask: int -PointerMotionHintMask: int -Button1MotionMask: int -Button2MotionMask: int -Button3MotionMask: int -Button4MotionMask: int -Button5MotionMask: int -ButtonMotionMask: int -KeymapStateMask: int -ExposureMask: int -VisibilityChangeMask: int -StructureNotifyMask: int -ResizeRedirectMask: int -SubstructureNotifyMask: int -SubstructureRedirectMask: int -FocusChangeMask: int -PropertyChangeMask: int -ColormapChangeMask: int -OwnerGrabButtonMask: int -KeyPress: int -KeyRelease: int -ButtonPress: int -ButtonRelease: int -MotionNotify: int -EnterNotify: int -LeaveNotify: int -FocusIn: int -FocusOut: int -KeymapNotify: int -Expose: int -GraphicsExpose: int -NoExpose: int -VisibilityNotify: int -CreateNotify: int -DestroyNotify: int -UnmapNotify: int -MapNotify: int -MapRequest: int -ReparentNotify: int -ConfigureNotify: int -ConfigureRequest: int -GravityNotify: int -ResizeRequest: int -CirculateNotify: int -CirculateRequest: int -PropertyNotify: int -SelectionClear: int -SelectionRequest: int -SelectionNotify: int -ColormapNotify: int -ClientMessage: int -MappingNotify: int -LASTEvent: int -ShiftMask: int -LockMask: int -ControlMask: int -Mod1Mask: int -Mod2Mask: int -Mod3Mask: int -Mod4Mask: int -Mod5Mask: int -ShiftMapIndex: int -LockMapIndex: int -ControlMapIndex: int -Mod1MapIndex: int -Mod2MapIndex: int -Mod3MapIndex: int -Mod4MapIndex: int -Mod5MapIndex: int -Button1Mask: int -Button2Mask: int -Button3Mask: int -Button4Mask: int -Button5Mask: int -AnyModifier: int -Button1: int -Button2: int -Button3: int -Button4: int -Button5: int -NotifyNormal: int -NotifyGrab: int -NotifyUngrab: int -NotifyWhileGrabbed: int -NotifyHint: int -NotifyAncestor: int -NotifyVirtual: int -NotifyInferior: int -NotifyNonlinear: int -NotifyNonlinearVirtual: int -NotifyPointer: int -NotifyPointerRoot: int -NotifyDetailNone: int -VisibilityUnobscured: int -VisibilityPartiallyObscured: int -VisibilityFullyObscured: int -PlaceOnTop: int -PlaceOnBottom: int -FamilyInternet: int -FamilyDECnet: int -FamilyChaos: int -FamilyServerInterpreted: int -FamilyInternetV6: int -PropertyNewValue: int -PropertyDelete: int -ColormapUninstalled: int -ColormapInstalled: int -GrabModeSync: int -GrabModeAsync: int -GrabSuccess: int -AlreadyGrabbed: int -GrabInvalidTime: int -GrabNotViewable: int -GrabFrozen: int -AsyncPointer: int -SyncPointer: int -ReplayPointer: int -AsyncKeyboard: int -SyncKeyboard: int -ReplayKeyboard: int -AsyncBoth: int -SyncBoth: int -RevertToNone: int -RevertToPointerRoot: int -RevertToParent: int -Success: int -BadRequest: int -BadValue: int -BadWindow: int -BadPixmap: int -BadAtom: int -BadCursor: int -BadFont: int -BadMatch: int -BadDrawable: int -BadAccess: int -BadAlloc: int -BadColor: int -BadGC: int -BadIDChoice: int -BadName: int -BadLength: int -BadImplementation: int -FirstExtensionError: int -LastExtensionError: int -InputOutput: int -InputOnly: int -CWBackPixmap: int -CWBackPixel: int -CWBorderPixmap: int -CWBorderPixel: int -CWBitGravity: int -CWWinGravity: int -CWBackingStore: int -CWBackingPlanes: int -CWBackingPixel: int -CWOverrideRedirect: int -CWSaveUnder: int -CWEventMask: int -CWDontPropagate: int -CWColormap: int -CWCursor: int -CWX: int -CWY: int -CWWidth: int -CWHeight: int -CWBorderWidth: int -CWSibling: int -CWStackMode: int -ForgetGravity: int -NorthWestGravity: int -NorthGravity: int -NorthEastGravity: int -WestGravity: int -CenterGravity: int -EastGravity: int -SouthWestGravity: int -SouthGravity: int -SouthEastGravity: int -StaticGravity: int -UnmapGravity: int -NotUseful: int -WhenMapped: int -Always: int -IsUnmapped: int -IsUnviewable: int -IsViewable: int -SetModeInsert: int -SetModeDelete: int -DestroyAll: int -RetainPermanent: int -RetainTemporary: int -Above: int -Below: int -TopIf: int -BottomIf: int -Opposite: int -RaiseLowest: int -LowerHighest: int -PropModeReplace: int -PropModePrepend: int -PropModeAppend: int -GXclear: int -GXand: int -GXandReverse: int -GXcopy: int -GXandInverted: int -GXnoop: int -GXxor: int -GXor: int -GXnor: int -GXequiv: int -GXinvert: int -GXorReverse: int -GXcopyInverted: int -GXorInverted: int -GXnand: int -GXset: int -LineSolid: int -LineOnOffDash: int -LineDoubleDash: int -CapNotLast: int -CapButt: int -CapRound: int -CapProjecting: int -JoinMiter: int -JoinRound: int -JoinBevel: int -FillSolid: int -FillTiled: int -FillStippled: int -FillOpaqueStippled: int -EvenOddRule: int -WindingRule: int -ClipByChildren: int -IncludeInferiors: int -Unsorted: int -YSorted: int -YXSorted: int -YXBanded: int -CoordModeOrigin: int -CoordModePrevious: int -Complex: int -Nonconvex: int -Convex: int -ArcChord: int -ArcPieSlice: int -GCFunction: int -GCPlaneMask: int -GCForeground: int -GCBackground: int -GCLineWidth: int -GCLineStyle: int -GCCapStyle: int -GCJoinStyle: int -GCFillStyle: int -GCFillRule: int -GCTile: int -GCStipple: int -GCTileStipXOrigin: int -GCTileStipYOrigin: int -GCFont: int -GCSubwindowMode: int -GCGraphicsExposures: int -GCClipXOrigin: int -GCClipYOrigin: int -GCClipMask: int -GCDashOffset: int -GCDashList: int -GCArcMode: int -GCLastBit: int -FontLeftToRight: int -FontRightToLeft: int -FontChange: int -XYBitmap: int -XYPixmap: int -ZPixmap: int -AllocNone: int -AllocAll: int -DoRed: int -DoGreen: int -DoBlue: int -CursorShape: int -TileShape: int -StippleShape: int -AutoRepeatModeOff: int -AutoRepeatModeOn: int -AutoRepeatModeDefault: int -LedModeOff: int -LedModeOn: int -KBKeyClickPercent: int -KBBellPercent: int -KBBellPitch: int -KBBellDuration: int -KBLed: int -KBLedMode: int -KBKey: int -KBAutoRepeatMode: int -MappingSuccess: int -MappingBusy: int -MappingFailed: int -MappingModifier: int -MappingKeyboard: int -MappingPointer: int -DontPreferBlanking: int -PreferBlanking: int -DefaultBlanking: int -DisableScreenSaver: int -DisableScreenInterval: int -DontAllowExposures: int -AllowExposures: int -DefaultExposures: int -ScreenSaverReset: int -ScreenSaverActive: int -HostInsert: int -HostDelete: int -EnableAccess: int -DisableAccess: int -StaticGray: int -GrayScale: int -StaticColor: int -PseudoColor: int -TrueColor: int -DirectColor: int -LSBFirst: int -MSBFirst: int +from typing_extensions import Final + +NONE: Final = 0 +ParentRelative: Final = 1 +CopyFromParent: Final = 0 +PointerWindow: Final = 0 +InputFocus: Final = 1 +PointerRoot: Final = 1 +AnyPropertyType: Final = 0 +AnyKey: Final = 0 +AnyButton: Final = 0 +AllTemporary: Final = 0 +CurrentTime: Final = 0 +NoSymbol: Final = 0 +NoEventMask: Final = 0x0000000 +KeyPressMask: Final = 0x0000001 +KeyReleaseMask: Final = 0x0000002 +ButtonPressMask: Final = 0x0000004 +ButtonReleaseMask: Final = 0x0000008 +EnterWindowMask: Final = 0x0000010 +LeaveWindowMask: Final = 0x0000020 +PointerMotionMask: Final = 0x0000040 +PointerMotionHintMask: Final = 0x0000080 +Button1MotionMask: Final = 0x0000100 +Button2MotionMask: Final = 0x0000200 +Button3MotionMask: Final = 0x0000400 +Button4MotionMask: Final = 0x0000800 +Button5MotionMask: Final = 0x0001000 +ButtonMotionMask: Final = 0x0002000 +KeymapStateMask: Final = 0x0004000 +ExposureMask: Final = 0x0008000 +VisibilityChangeMask: Final = 0x0010000 +StructureNotifyMask: Final = 0x0020000 +ResizeRedirectMask: Final = 0x0040000 +SubstructureNotifyMask: Final = 0x0080000 +SubstructureRedirectMask: Final = 0x0100000 +FocusChangeMask: Final = 0x0200000 +PropertyChangeMask: Final = 0x0400000 +ColormapChangeMask: Final = 0x0800000 +OwnerGrabButtonMask: Final = 0x1000000 +KeyPress: Final = 2 +KeyRelease: Final = 3 +ButtonPress: Final = 4 +ButtonRelease: Final = 5 +MotionNotify: Final = 6 +EnterNotify: Final = 7 +LeaveNotify: Final = 8 +FocusIn: Final = 9 +FocusOut: Final = 10 +KeymapNotify: Final = 11 +Expose: Final = 12 +GraphicsExpose: Final = 13 +NoExpose: Final = 14 +VisibilityNotify: Final = 15 +CreateNotify: Final = 16 +DestroyNotify: Final = 17 +UnmapNotify: Final = 18 +MapNotify: Final = 19 +MapRequest: Final = 20 +ReparentNotify: Final = 21 +ConfigureNotify: Final = 22 +ConfigureRequest: Final = 23 +GravityNotify: Final = 24 +ResizeRequest: Final = 25 +CirculateNotify: Final = 26 +CirculateRequest: Final = 27 +PropertyNotify: Final = 28 +SelectionClear: Final = 29 +SelectionRequest: Final = 30 +SelectionNotify: Final = 31 +ColormapNotify: Final = 32 +ClientMessage: Final = 33 +MappingNotify: Final = 34 +LASTEvent: Final = 35 +ShiftMapIndex: Final = 0 +LockMapIndex: Final = 1 +ControlMapIndex: Final = 2 +Mod1MapIndex: Final = 3 +Mod2MapIndex: Final = 4 +Mod3MapIndex: Final = 5 +Mod4MapIndex: Final = 6 +Mod5MapIndex: Final = 7 +ShiftMask: Final = 0x0001 +LockMask: Final = 0x0002 +ControlMask: Final = 0x0004 +Mod1Mask: Final = 0x0008 +Mod2Mask: Final = 0x0010 +Mod3Mask: Final = 0x0020 +Mod4Mask: Final = 0x0040 +Mod5Mask: Final = 0x0080 +Button1Mask: Final = 0x0100 +Button2Mask: Final = 0x0200 +Button3Mask: Final = 0x0400 +Button4Mask: Final = 0x0800 +Button5Mask: Final = 0x1000 +AnyModifier: Final = 0x8000 +Button1: Final = 1 +Button2: Final = 2 +Button3: Final = 3 +Button4: Final = 4 +Button5: Final = 5 +NotifyNormal: Final = 0 +NotifyGrab: Final = 1 +NotifyUngrab: Final = 2 +NotifyWhileGrabbed: Final = 3 +NotifyHint: Final = 1 +NotifyAncestor: Final = 0 +NotifyVirtual: Final = 1 +NotifyInferior: Final = 2 +NotifyNonlinear: Final = 3 +NotifyNonlinearVirtual: Final = 4 +NotifyPointer: Final = 5 +NotifyPointerRoot: Final = 6 +NotifyDetailNone: Final = 7 +VisibilityUnobscured: Final = 0 +VisibilityPartiallyObscured: Final = 1 +VisibilityFullyObscured: Final = 2 +PlaceOnTop: Final = 0 +PlaceOnBottom: Final = 1 +FamilyInternet: Final = 0 +FamilyDECnet: Final = 1 +FamilyChaos: Final = 2 +FamilyServerInterpreted: Final = 5 +FamilyInternetV6: Final = 6 +PropertyNewValue: Final = 0 +PropertyDelete: Final = 1 +ColormapUninstalled: Final = 0 +ColormapInstalled: Final = 1 +GrabModeSync: Final = 0 +GrabModeAsync: Final = 1 +GrabSuccess: Final = 0 +AlreadyGrabbed: Final = 1 +GrabInvalidTime: Final = 2 +GrabNotViewable: Final = 3 +GrabFrozen: Final = 4 +AsyncPointer: Final = 0 +SyncPointer: Final = 1 +ReplayPointer: Final = 2 +AsyncKeyboard: Final = 3 +SyncKeyboard: Final = 4 +ReplayKeyboard: Final = 5 +AsyncBoth: Final = 6 +SyncBoth: Final = 7 +RevertToNone: Final = 0 +RevertToPointerRoot: Final = PointerRoot +RevertToParent: Final = 2 +Success: Final = 0 +BadRequest: Final = 1 +BadValue: Final = 2 +BadWindow: Final = 3 +BadPixmap: Final = 4 +BadAtom: Final = 5 +BadCursor: Final = 6 +BadFont: Final = 7 +BadMatch: Final = 8 +BadDrawable: Final = 9 +BadAccess: Final = 10 +BadAlloc: Final = 11 +BadColor: Final = 12 +BadGC: Final = 13 +BadIDChoice: Final = 14 +BadName: Final = 15 +BadLength: Final = 16 +BadImplementation: Final = 17 +FirstExtensionError: Final = 128 +LastExtensionError: Final = 255 +InputOutput: Final = 1 +InputOnly: Final = 2 +CWBackPixmap: Final = 0x0001 +CWBackPixel: Final = 0x0002 +CWBorderPixmap: Final = 0x0004 +CWBorderPixel: Final = 0x0008 +CWBitGravity: Final = 0x0010 +CWWinGravity: Final = 0x0020 +CWBackingStore: Final = 0x0040 +CWBackingPlanes: Final = 0x0080 +CWBackingPixel: Final = 0x0100 +CWOverrideRedirect: Final = 0x0200 +CWSaveUnder: Final = 0x0400 +CWEventMask: Final = 0x0800 +CWDontPropagate: Final = 0x1000 +CWColormap: Final = 0x2000 +CWCursor: Final = 0x4000 +CWX: Final = 0x01 +CWY: Final = 0x02 +CWWidth: Final = 0x04 +CWHeight: Final = 0x08 +CWBorderWidth: Final = 0x10 +CWSibling: Final = 0x20 +CWStackMode: Final = 0x40 +ForgetGravity: Final = 0 +NorthWestGravity: Final = 1 +NorthGravity: Final = 2 +NorthEastGravity: Final = 3 +WestGravity: Final = 4 +CenterGravity: Final = 5 +EastGravity: Final = 6 +SouthWestGravity: Final = 7 +SouthGravity: Final = 8 +SouthEastGravity: Final = 9 +StaticGravity: Final = 10 +UnmapGravity: Final = 0 +NotUseful: Final = 0 +WhenMapped: Final = 1 +Always: Final = 2 +IsUnmapped: Final = 0 +IsUnviewable: Final = 1 +IsViewable: Final = 2 +SetModeInsert: Final = 0 +SetModeDelete: Final = 1 +DestroyAll: Final = 0 +RetainPermanent: Final = 1 +RetainTemporary: Final = 2 +Above: Final = 0 +Below: Final = 1 +TopIf: Final = 2 +BottomIf: Final = 3 +Opposite: Final = 4 +RaiseLowest: Final = 0 +LowerHighest: Final = 1 +PropModeReplace: Final = 0 +PropModePrepend: Final = 1 +PropModeAppend: Final = 2 +GXclear: Final = 0x0 +GXand: Final = 0x1 +GXandReverse: Final = 0x2 +GXcopy: Final = 0x3 +GXandInverted: Final = 0x4 +GXnoop: Final = 0x5 +GXxor: Final = 0x6 +GXor: Final = 0x7 +GXnor: Final = 0x8 +GXequiv: Final = 0x9 +GXinvert: Final = 0xA +GXorReverse: Final = 0xB +GXcopyInverted: Final = 0xC +GXorInverted: Final = 0xD +GXnand: Final = 0xE +GXset: Final = 0xF +LineSolid: Final = 0 +LineOnOffDash: Final = 1 +LineDoubleDash: Final = 2 +CapNotLast: Final = 0 +CapButt: Final = 1 +CapRound: Final = 2 +CapProjecting: Final = 3 +JoinMiter: Final = 0 +JoinRound: Final = 1 +JoinBevel: Final = 2 +FillSolid: Final = 0 +FillTiled: Final = 1 +FillStippled: Final = 2 +FillOpaqueStippled: Final = 3 +EvenOddRule: Final = 0 +WindingRule: Final = 1 +ClipByChildren: Final = 0 +IncludeInferiors: Final = 1 +Unsorted: Final = 0 +YSorted: Final = 1 +YXSorted: Final = 2 +YXBanded: Final = 3 +CoordModeOrigin: Final = 0 +CoordModePrevious: Final = 1 +Complex: Final = 0 +Nonconvex: Final = 1 +Convex: Final = 2 +ArcChord: Final = 0 +ArcPieSlice: Final = 1 +GCFunction: Final = 0x000001 +GCPlaneMask: Final = 0x000002 +GCForeground: Final = 0x000004 +GCBackground: Final = 0x000008 +GCLineWidth: Final = 0x000010 +GCLineStyle: Final = 0x000020 +GCCapStyle: Final = 0x000040 +GCJoinStyle: Final = 0x000080 +GCFillStyle: Final = 0x000100 +GCFillRule: Final = 0x000200 +GCTile: Final = 0x000400 +GCStipple: Final = 0x000800 +GCTileStipXOrigin: Final = 0x001000 +GCTileStipYOrigin: Final = 0x002000 +GCFont: Final = 0x004000 +GCSubwindowMode: Final = 0x008000 +GCGraphicsExposures: Final = 0x010000 +GCClipXOrigin: Final = 0x020000 +GCClipYOrigin: Final = 0x040000 +GCClipMask: Final = 0x080000 +GCDashOffset: Final = 0x100000 +GCDashList: Final = 0x200000 +GCArcMode: Final = 0x400000 +GCLastBit: Final = 22 +FontLeftToRight: Final = 0 +FontRightToLeft: Final = 1 +FontChange: Final = 255 +XYBitmap: Final = 0 +XYPixmap: Final = 1 +ZPixmap: Final = 2 +AllocNone: Final = 0 +AllocAll: Final = 1 +DoRed: Final = 0x1 +DoGreen: Final = 0x2 +DoBlue: Final = 0x4 +CursorShape: Final = 0 +TileShape: Final = 1 +StippleShape: Final = 2 +AutoRepeatModeOff: Final = 0 +AutoRepeatModeOn: Final = 1 +AutoRepeatModeDefault: Final = 2 +LedModeOff: Final = 0 +LedModeOn: Final = 1 +KBKeyClickPercent: Final = 0x01 +KBBellPercent: Final = 0x02 +KBBellPitch: Final = 0x04 +KBBellDuration: Final = 0x08 +KBLed: Final = 0x10 +KBLedMode: Final = 0x20 +KBKey: Final = 0x40 +KBAutoRepeatMode: Final = 0x80 +MappingSuccess: Final = 0 +MappingBusy: Final = 1 +MappingFailed: Final = 2 +MappingModifier: Final = 0 +MappingKeyboard: Final = 1 +MappingPointer: Final = 2 +DontPreferBlanking: Final = 0 +PreferBlanking: Final = 1 +DefaultBlanking: Final = 2 +DisableScreenSaver: Final = 0 +DisableScreenInterval: Final = 0 +DontAllowExposures: Final = 0 +AllowExposures: Final = 1 +DefaultExposures: Final = 2 +ScreenSaverReset: Final = 0 +ScreenSaverActive: Final = 1 +HostInsert: Final = 0 +HostDelete: Final = 1 +EnableAccess: Final = 1 +DisableAccess: Final = 0 +StaticGray: Final = 0 +GrayScale: Final = 1 +StaticColor: Final = 2 +PseudoColor: Final = 3 +TrueColor: Final = 4 +DirectColor: Final = 5 +LSBFirst: Final = 0 +MSBFirst: Final = 1 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xatom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xatom.pyi index e0c1e0a9e..c9315306e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xatom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xatom.pyi @@ -1,69 +1,71 @@ -PRIMARY: int -SECONDARY: int -ARC: int -ATOM: int -BITMAP: int -CARDINAL: int -COLORMAP: int -CURSOR: int -CUT_BUFFER0: int -CUT_BUFFER1: int -CUT_BUFFER2: int -CUT_BUFFER3: int -CUT_BUFFER4: int -CUT_BUFFER5: int -CUT_BUFFER6: int -CUT_BUFFER7: int -DRAWABLE: int -FONT: int -INTEGER: int -PIXMAP: int -POINT: int -RECTANGLE: int -RESOURCE_MANAGER: int -RGB_COLOR_MAP: int -RGB_BEST_MAP: int -RGB_BLUE_MAP: int -RGB_DEFAULT_MAP: int -RGB_GRAY_MAP: int -RGB_GREEN_MAP: int -RGB_RED_MAP: int -STRING: int -VISUALID: int -WINDOW: int -WM_COMMAND: int -WM_HINTS: int -WM_CLIENT_MACHINE: int -WM_ICON_NAME: int -WM_ICON_SIZE: int -WM_NAME: int -WM_NORMAL_HINTS: int -WM_SIZE_HINTS: int -WM_ZOOM_HINTS: int -MIN_SPACE: int -NORM_SPACE: int -MAX_SPACE: int -END_SPACE: int -SUPERSCRIPT_X: int -SUPERSCRIPT_Y: int -SUBSCRIPT_X: int -SUBSCRIPT_Y: int -UNDERLINE_POSITION: int -UNDERLINE_THICKNESS: int -STRIKEOUT_ASCENT: int -STRIKEOUT_DESCENT: int -ITALIC_ANGLE: int -X_HEIGHT: int -QUAD_WIDTH: int -WEIGHT: int -POINT_SIZE: int -RESOLUTION: int -COPYRIGHT: int -NOTICE: int -FONT_NAME: int -FAMILY_NAME: int -FULL_NAME: int -CAP_HEIGHT: int -WM_CLASS: int -WM_TRANSIENT_FOR: int -LAST_PREDEFINED: int +from typing_extensions import Final + +PRIMARY: Final = 1 +SECONDARY: Final = 2 +ARC: Final = 3 +ATOM: Final = 4 +BITMAP: Final = 5 +CARDINAL: Final = 6 +COLORMAP: Final = 7 +CURSOR: Final = 8 +CUT_BUFFER0: Final = 9 +CUT_BUFFER1: Final = 10 +CUT_BUFFER2: Final = 11 +CUT_BUFFER3: Final = 12 +CUT_BUFFER4: Final = 13 +CUT_BUFFER5: Final = 14 +CUT_BUFFER6: Final = 15 +CUT_BUFFER7: Final = 16 +DRAWABLE: Final = 17 +FONT: Final = 18 +INTEGER: Final = 19 +PIXMAP: Final = 20 +POINT: Final = 21 +RECTANGLE: Final = 22 +RESOURCE_MANAGER: Final = 23 +RGB_COLOR_MAP: Final = 24 +RGB_BEST_MAP: Final = 25 +RGB_BLUE_MAP: Final = 26 +RGB_DEFAULT_MAP: Final = 27 +RGB_GRAY_MAP: Final = 28 +RGB_GREEN_MAP: Final = 29 +RGB_RED_MAP: Final = 30 +STRING: Final = 31 +VISUALID: Final = 32 +WINDOW: Final = 33 +WM_COMMAND: Final = 34 +WM_HINTS: Final = 35 +WM_CLIENT_MACHINE: Final = 36 +WM_ICON_NAME: Final = 37 +WM_ICON_SIZE: Final = 38 +WM_NAME: Final = 39 +WM_NORMAL_HINTS: Final = 40 +WM_SIZE_HINTS: Final = 41 +WM_ZOOM_HINTS: Final = 42 +MIN_SPACE: Final = 43 +NORM_SPACE: Final = 44 +MAX_SPACE: Final = 45 +END_SPACE: Final = 46 +SUPERSCRIPT_X: Final = 47 +SUPERSCRIPT_Y: Final = 48 +SUBSCRIPT_X: Final = 49 +SUBSCRIPT_Y: Final = 50 +UNDERLINE_POSITION: Final = 51 +UNDERLINE_THICKNESS: Final = 52 +STRIKEOUT_ASCENT: Final = 53 +STRIKEOUT_DESCENT: Final = 54 +ITALIC_ANGLE: Final = 55 +X_HEIGHT: Final = 56 +QUAD_WIDTH: Final = 57 +WEIGHT: Final = 58 +POINT_SIZE: Final = 59 +RESOLUTION: Final = 60 +COPYRIGHT: Final = 61 +NOTICE: Final = 62 +FONT_NAME: Final = 63 +FAMILY_NAME: Final = 64 +FULL_NAME: Final = 65 +CAP_HEIGHT: Final = 66 +WM_CLASS: Final = 67 +WM_TRANSIENT_FOR: Final = 68 +LAST_PREDEFINED: Final = 68 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xcursorfont.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xcursorfont.pyi index 431164885..b8f77c8d6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xcursorfont.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xcursorfont.pyi @@ -1,78 +1,80 @@ -num_glyphs: int -X_cursor: int -arrow: int -based_arrow_down: int -based_arrow_up: int -boat: int -bogosity: int -bottom_left_corner: int -bottom_right_corner: int -bottom_side: int -bottom_tee: int -box_spiral: int -center_ptr: int -circle: int -clock: int -coffee_mug: int -cross: int -cross_reverse: int -crosshair: int -diamond_cross: int -dot: int -dotbox: int -double_arrow: int -draft_large: int -draft_small: int -draped_box: int -exchange: int -fleur: int -gobbler: int -gumby: int -hand1: int -hand2: int -heart: int -icon: int -iron_cross: int -left_ptr: int -left_side: int -left_tee: int -leftbutton: int -ll_angle: int -lr_angle: int -man: int -middlebutton: int -mouse: int -pencil: int -pirate: int -plus: int -question_arrow: int -right_ptr: int -right_side: int -right_tee: int -rightbutton: int -rtl_logo: int -sailboat: int -sb_down_arrow: int -sb_h_double_arrow: int -sb_left_arrow: int -sb_right_arrow: int -sb_up_arrow: int -sb_v_double_arrow: int -shuttle: int -sizing: int -spider: int -spraycan: int -star: int -target: int -tcross: int -top_left_arrow: int -top_left_corner: int -top_right_corner: int -top_side: int -top_tee: int -trek: int -ul_angle: int -umbrella: int -ur_angle: int -watch: int -xterm: int +from typing_extensions import Final + +num_glyphs: Final = 154 +X_cursor: Final = 0 +arrow: Final = 2 +based_arrow_down: Final = 4 +based_arrow_up: Final = 6 +boat: Final = 8 +bogosity: Final = 10 +bottom_left_corner: Final = 12 +bottom_right_corner: Final = 14 +bottom_side: Final = 16 +bottom_tee: Final = 18 +box_spiral: Final = 20 +center_ptr: Final = 22 +circle: Final = 24 +clock: Final = 26 +coffee_mug: Final = 28 +cross: Final = 30 +cross_reverse: Final = 32 +crosshair: Final = 34 +diamond_cross: Final = 36 +dot: Final = 38 +dotbox: Final = 40 +double_arrow: Final = 42 +draft_large: Final = 44 +draft_small: Final = 46 +draped_box: Final = 48 +exchange: Final = 50 +fleur: Final = 52 +gobbler: Final = 54 +gumby: Final = 56 +hand1: Final = 58 +hand2: Final = 60 +heart: Final = 62 +icon: Final = 64 +iron_cross: Final = 66 +left_ptr: Final = 68 +left_side: Final = 70 +left_tee: Final = 72 +leftbutton: Final = 74 +ll_angle: Final = 76 +lr_angle: Final = 78 +man: Final = 80 +middlebutton: Final = 82 +mouse: Final = 84 +pencil: Final = 86 +pirate: Final = 88 +plus: Final = 90 +question_arrow: Final = 92 +right_ptr: Final = 94 +right_side: Final = 96 +right_tee: Final = 98 +rightbutton: Final = 100 +rtl_logo: Final = 102 +sailboat: Final = 104 +sb_down_arrow: Final = 106 +sb_h_double_arrow: Final = 108 +sb_left_arrow: Final = 110 +sb_right_arrow: Final = 112 +sb_up_arrow: Final = 114 +sb_v_double_arrow: Final = 116 +shuttle: Final = 118 +sizing: Final = 120 +spider: Final = 122 +spraycan: Final = 124 +star: Final = 126 +target: Final = 128 +tcross: Final = 130 +top_left_arrow: Final = 132 +top_left_corner: Final = 134 +top_right_corner: Final = 136 +top_side: Final = 138 +top_tee: Final = 140 +trek: Final = 142 +ul_angle: Final = 144 +umbrella: Final = 146 +ur_angle: Final = 148 +watch: Final = 150 +xterm: Final = 152 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xutil.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xutil.pyi index e30c44b13..22c6e3d8f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xutil.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/Xutil.pyi @@ -1,57 +1,59 @@ -NoValue: int -XValue: int -YValue: int -WidthValue: int -HeightValue: int -AllValues: int -XNegative: int -YNegative: int -USPosition: int -USSize: int -PPosition: int -PSize: int -PMinSize: int -PMaxSize: int -PResizeInc: int -PAspect: int -PBaseSize: int -PWinGravity: int -PAllHints: int -InputHint: int -StateHint: int -IconPixmapHint: int -IconWindowHint: int -IconPositionHint: int -IconMaskHint: int -WindowGroupHint: int -MessageHint: int -UrgencyHint: int -AllHints: int -WithdrawnState: int -NormalState: int -IconicState: int -DontCareState: int -ZoomState: int -InactiveState: int -RectangleOut: int -RectangleIn: int -RectanglePart: int -VisualNoMask: int -VisualIDMask: int -VisualScreenMask: int -VisualDepthMask: int -VisualClassMask: int -VisualRedMaskMask: int -VisualGreenMaskMask: int -VisualBlueMaskMask: int -VisualColormapSizeMask: int -VisualBitsPerRGBMask: int -VisualAllMask: int -ReleaseByFreeingColormap: int -BitmapSuccess: int -BitmapOpenFailed: int -BitmapFileInvalid: int -BitmapNoMemory: int -XCSUCCESS: int -XCNOMEM: int -XCNOENT: int +from typing_extensions import Final + +NoValue: Final = 0x0000 +XValue: Final = 0x0001 +YValue: Final = 0x0002 +WidthValue: Final = 0x0004 +HeightValue: Final = 0x0008 +AllValues: Final = 0x000F +XNegative: Final = 0x0010 +YNegative: Final = 0x0020 +USPosition: Final = 0x001 +USSize: Final = 0x002 +PPosition: Final = 0x004 +PSize: Final = 0x008 +PMinSize: Final = 0x010 +PMaxSize: Final = 0x020 +PResizeInc: Final = 0x040 +PAspect: Final = 0x080 +PBaseSize: Final = 0x100 +PWinGravity: Final = 0x200 +PAllHints: Final = 252 +InputHint: Final = 0x001 +StateHint: Final = 0x002 +IconPixmapHint: Final = 0x004 +IconWindowHint: Final = 0x008 +IconPositionHint: Final = 0x010 +IconMaskHint: Final = 0x020 +WindowGroupHint: Final = 0x040 +MessageHint: Final = 0x080 +UrgencyHint: Final = 0x100 +AllHints: Final = 511 +WithdrawnState: Final = 0 +NormalState: Final = 1 +IconicState: Final = 3 +DontCareState: Final = 0 +ZoomState: Final = 2 +InactiveState: Final = 4 +RectangleOut: Final = 0 +RectangleIn: Final = 1 +RectanglePart: Final = 2 +VisualNoMask: Final = 0x0 +VisualIDMask: Final = 0x1 +VisualScreenMask: Final = 0x2 +VisualDepthMask: Final = 0x4 +VisualClassMask: Final = 0x8 +VisualRedMaskMask: Final = 0x10 +VisualGreenMaskMask: Final = 0x20 +VisualBlueMaskMask: Final = 0x40 +VisualColormapSizeMask: Final = 0x80 +VisualBitsPerRGBMask: Final = 0x100 +VisualAllMask: Final = 0x1FF +ReleaseByFreeingColormap: Final = 1 +BitmapSuccess: Final = 0 +BitmapOpenFailed: Final = 1 +BitmapFileInvalid: Final = 2 +BitmapNoMemory: Final = 3 +XCSUCCESS: Final = 0 +XCNOMEM: Final = 1 +XCNOENT: Final = 2 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/display.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/display.pyi index b307a68e5..573b101e3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/display.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/display.pyi @@ -34,8 +34,8 @@ class _ResourceBaseClassesType(TypedDict): # noqa: Y049 cursor: type[cursor.Cursor] class _BaseDisplay(display.Display): - def __init__(self, display: str | None = ...) -> None: ... - def get_atom(self, atomname: str, only_if_exists: bool = ...) -> int: ... + def __init__(self, display: str | None = None) -> None: ... + def get_atom(self, atomname: str, only_if_exists: bool = False) -> int: ... class Display: display: _BaseDisplay @@ -44,7 +44,7 @@ class Display: class_extension_dicts: dict[str, dict[str, FunctionType]] display_extension_methods: dict[str, Callable[..., Any]] extension_event: rq.DictWrapper - def __init__(self, display: str | None = ...) -> None: ... + def __init__(self, display: str | None = None) -> None: ... def get_display_name(self) -> str: ... def fileno(self) -> int: ... def close(self) -> None: ... @@ -75,12 +75,12 @@ class Display: @overload def create_resource_object(self, type: str, id: int) -> resource.Resource: ... def __getattr__(self, attr: str) -> MethodType: ... - def screen(self, sno: int | None = ...) -> rq.Struct: ... + def screen(self, sno: int | None = None) -> rq.Struct: ... def screen_count(self) -> int: ... def get_default_screen(self) -> int: ... def extension_add_method(self, object: str, name: str, function: Callable[..., Any]) -> None: ... - def extension_add_event(self, code: int, evt: type, name: str | None = ...) -> None: ... - def extension_add_subevent(self, code: int, subcode: int | None, evt: type[rq.Event], name: str | None = ...) -> None: ... + def extension_add_event(self, code: int, evt: type, name: str | None = None) -> None: ... + def extension_add_subevent(self, code: int, subcode: int | None, evt: type[rq.Event], name: str | None = None) -> None: ... def extension_add_error(self, code: int, err: type[error.XError]) -> None: ... def keycode_to_keysym(self, keycode: int, index: int) -> int: ... def keysym_to_keycode(self, keysym: int) -> int: ... @@ -88,60 +88,60 @@ class Display: def refresh_keyboard_mapping(self, evt: rq.Event) -> None: ... def lookup_string(self, keysym: int) -> str | None: ... def rebind_string(self, keysym: int, newstring: str | None) -> None: ... - def intern_atom(self, name: str, only_if_exists: bool = ...) -> int: ... - def get_atom(self, atom: str, only_if_exists: bool = ...) -> int: ... + def intern_atom(self, name: str, only_if_exists: bool = False) -> int: ... + def get_atom(self, atom: str, only_if_exists: bool = False) -> int: ... def get_atom_name(self, atom: int) -> str: ... def get_selection_owner(self, selection: int) -> int: ... def send_event( self, destination: int, event: rq.Event, - event_mask: int = ..., - propagate: bool = ..., - onerror: ErrorHandler[object] | None = ..., + event_mask: int = 0, + propagate: bool = False, + onerror: ErrorHandler[object] | None = None, ) -> None: ... - def ungrab_pointer(self, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def ungrab_pointer(self, time: int, onerror: ErrorHandler[object] | None = None) -> None: ... def change_active_pointer_grab( - self, event_mask: int, cursor: cursor.Cursor, time: int, onerror: ErrorHandler[object] | None = ... + self, event_mask: int, cursor: cursor.Cursor, time: int, onerror: ErrorHandler[object] | None = None ) -> None: ... - def ungrab_keyboard(self, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def allow_events(self, mode: int, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def grab_server(self, onerror: ErrorHandler[object] | None = ...) -> None: ... - def ungrab_server(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def ungrab_keyboard(self, time: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def allow_events(self, mode: int, time: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def grab_server(self, onerror: ErrorHandler[object] | None = None) -> None: ... + def ungrab_server(self, onerror: ErrorHandler[object] | None = None) -> None: ... def warp_pointer( self, x: int, y: int, - src_window: int = ..., - src_x: int = ..., - src_y: int = ..., - src_width: int = ..., - src_height: int = ..., - onerror: ErrorHandler[object] | None = ..., + src_window: int = 0, + src_x: int = 0, + src_y: int = 0, + src_width: int = 0, + src_height: int = 0, + onerror: ErrorHandler[object] | None = None, ) -> None: ... - def set_input_focus(self, focus: int, revert_to: int, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_input_focus(self, focus: int, revert_to: int, time: int, onerror: ErrorHandler[object] | None = None) -> None: ... def get_input_focus(self) -> request.GetInputFocus: ... def query_keymap(self) -> bytes: ... # TODO: Validate if this is correct def open_font(self, name: str) -> _ResourceBaseClass | None: ... def list_fonts(self, pattern: Pattern[str] | str, max_names: int) -> list[str]: ... def list_fonts_with_info(self, pattern: Pattern[str] | str, max_names: int) -> request.ListFontsWithInfo: ... - def set_font_path(self, path: Sequence[str], onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_font_path(self, path: Sequence[str], onerror: ErrorHandler[object] | None = None) -> None: ... def get_font_path(self) -> list[str]: ... def query_extension(self, name: str) -> request.QueryExtension | None: ... def list_extensions(self) -> list[str]: ... def change_keyboard_mapping( - self, first_keycode: int, keysyms: Sequence[Sequence[int]], onerror: ErrorHandler[object] | None = ... + self, first_keycode: int, keysyms: Sequence[Sequence[int]], onerror: ErrorHandler[object] | None = None ) -> None: ... def get_keyboard_mapping(self, first_keycode: int, count: int) -> list[tuple[int, ...]]: ... - def change_keyboard_control(self, onerror: ErrorHandler[object] | None = ..., **keys: object) -> None: ... + def change_keyboard_control(self, onerror: ErrorHandler[object] | None = None, **keys: object) -> None: ... def get_keyboard_control(self) -> request.GetKeyboardControl: ... - def bell(self, percent: int = ..., onerror: ErrorHandler[object] | None = ...) -> None: ... + def bell(self, percent: int = 0, onerror: ErrorHandler[object] | None = None) -> None: ... def change_pointer_control( - self, accel: tuple[int, int] | None = ..., threshold: int | None = ..., onerror: ErrorHandler[object] | None = ... + self, accel: tuple[int, int] | None = None, threshold: int | None = None, onerror: ErrorHandler[object] | None = None ) -> None: ... def get_pointer_control(self) -> request.GetPointerControl: ... def set_screen_saver( - self, timeout: int, interval: int, prefer_blank: int, allow_exposures: int, onerror: ErrorHandler[object] | None = ... + self, timeout: int, interval: int, prefer_blank: int, allow_exposures: int, onerror: ErrorHandler[object] | None = None ) -> None: ... def get_screen_saver(self) -> request.GetScreenSaver: ... def change_hosts( @@ -149,14 +149,14 @@ class Display: mode: int, host_family: int, host: Sequence[int] | Sequence[bytes], # TODO: validate - onerror: ErrorHandler[object] | None = ..., + onerror: ErrorHandler[object] | None = None, ) -> None: ... def list_hosts(self) -> request.ListHosts: ... - def set_access_control(self, mode: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def set_close_down_mode(self, mode: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def force_screen_saver(self, mode: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_access_control(self, mode: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def set_close_down_mode(self, mode: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def force_screen_saver(self, mode: int, onerror: ErrorHandler[object] | None = None) -> None: ... def set_pointer_mapping(self, map: Sequence[int]) -> int: ... def get_pointer_mapping(self) -> list[int]: ... def set_modifier_mapping(self, keycodes: rq._ModifierMappingList8Elements) -> int: ... def get_modifier_mapping(self) -> Sequence[Sequence[int]]: ... - def no_operation(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def no_operation(self, onerror: ErrorHandler[object] | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/error.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/error.pyi index aa846f837..f8c331ee2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/error.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/error.pyi @@ -1,5 +1,5 @@ from _typeshed import SliceableBuffer -from typing_extensions import Literal +from typing_extensions import Final, Literal from Xlib.protocol import display, rq @@ -44,7 +44,7 @@ class BadName(XError): ... class BadLength(XError): ... class BadImplementation(XError): ... -xerror_class: dict[int, type[XError]] +xerror_class: Final[dict[int, type[XError]]] class CatchError: error_types: tuple[type[XError], ...] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/composite.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/composite.pyi index f974c1365..19685daec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/composite.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/composite.pyi @@ -1,6 +1,6 @@ from collections.abc import Callable from typing import Any -from typing_extensions import TypeAlias +from typing_extensions import Final, TypeAlias from Xlib._typing import ErrorHandler, Unused from Xlib.display import Display @@ -9,9 +9,9 @@ from Xlib.xobject import drawable, resource _Update: TypeAlias = Callable[[rq.DictWrapper | dict[str, Any]], object] -extname: str -RedirectAutomatic: int -RedirectManual: int +extname: Final = "Composite" +RedirectAutomatic: Final = 0 +RedirectManual: Final = 1 class QueryVersion(rq.ReplyRequest): ... @@ -19,27 +19,27 @@ def query_version(self: Display | resource.Resource) -> QueryVersion: ... class RedirectWindow(rq.Request): ... -def redirect_window(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = ...) -> None: ... +def redirect_window(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = None) -> None: ... class RedirectSubwindows(rq.Request): ... -def redirect_subwindows(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = ...) -> None: ... +def redirect_subwindows(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = None) -> None: ... class UnredirectWindow(rq.Request): ... -def unredirect_window(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = ...) -> None: ... +def unredirect_window(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = None) -> None: ... class UnredirectSubindows(rq.Request): ... -def unredirect_subwindows(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = ...) -> None: ... +def unredirect_subwindows(self: drawable.Window, update: _Update, onerror: ErrorHandler[object] | None = None) -> None: ... class CreateRegionFromBorderClip(rq.Request): ... -def create_region_from_border_clip(self: drawable.Window, onerror: ErrorHandler[object] | None = ...) -> int: ... +def create_region_from_border_clip(self: drawable.Window, onerror: ErrorHandler[object] | None = None) -> int: ... class NameWindowPixmap(rq.Request): ... -def name_window_pixmap(self: Display | resource.Resource, onerror: ErrorHandler[object] | None = ...) -> drawable.Pixmap: ... +def name_window_pixmap(self: Display | resource.Resource, onerror: ErrorHandler[object] | None = None) -> drawable.Pixmap: ... class GetOverlayWindow(rq.ReplyRequest): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/damage.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/damage.pyi index 35d8b7199..20aadc2e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/damage.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/damage.pyi @@ -1,21 +1,21 @@ +from typing_extensions import Final, Literal + from Xlib.display import Display from Xlib.error import XError from Xlib.protocol import request, rq from Xlib.xobject import resource -extname: str -DamageNotifyCode: int -BadDamageCode: int - -class BadDamageError(XError): ... - -DamageReportRawRectangles: int -DamageReportDeltaRectangles: int -DamageReportBoundingBox: int -DamageReportNonEmpty: int -DamageReportLevel: tuple[int, int, int, int] +extname: Final = "DAMAGE" +DamageNotifyCode: Final = 0 +BadDamageCode: Final = 0 +DamageReportRawRectangles: Final = 0 +DamageReportDeltaRectangles: Final = 1 +DamageReportBoundingBox: Final = 2 +DamageReportNonEmpty: Final = 3 +DamageReportLevel: Final[tuple[Literal[0], Literal[1], Literal[2], Literal[3]]] DAMAGE = rq.Card32 +class BadDamageError(XError): ... class QueryVersion(rq.ReplyRequest): ... def query_version(self: Display | resource.Resource) -> QueryVersion: ... @@ -30,7 +30,7 @@ def damage_destroy(self: Display | resource.Resource, damage: int) -> None: ... class DamageSubtract(rq.Request): ... -def damage_subtract(self: Display | resource.Resource, damage: int, repair: int = ..., parts: int = ...) -> None: ... +def damage_subtract(self: Display | resource.Resource, damage: int, repair: int = 0, parts: int = 0) -> None: ... class DamageAdd(rq.Request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/dpms.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/dpms.pyi index 35c6b9208..5fa92d48d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/dpms.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/dpms.pyi @@ -1,14 +1,16 @@ +from typing_extensions import Final, Literal + from Xlib._typing import Unused from Xlib.display import Display from Xlib.protocol import rq from Xlib.xobject import resource -extname: str -DPMSModeOn: int -DPMSModeStandby: int -DPMSModeSuspend: int -DPMSModeOff: int -DPMSPowerLevel: tuple[int, int, int, int] +extname: Final = "DPMS" +DPMSModeOn: Final = 0 +DPMSModeStandby: Final = 1 +DPMSModeSuspend: Final = 2 +DPMSModeOff: Final = 3 +DPMSPowerLevel: Final[tuple[Literal[0], Literal[1], Literal[2], Literal[3]]] class DPMSGetVersion(rq.ReplyRequest): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/ge.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/ge.pyi index 790c0a854..d0add2edb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/ge.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/ge.pyi @@ -1,10 +1,12 @@ +from typing_extensions import Final + from Xlib._typing import Unused from Xlib.display import Display from Xlib.protocol import rq from Xlib.xobject import resource -extname: str -GenericEventCode: int +extname: Final = "Generic Event Extension" +GenericEventCode: Final = 35 class GEQueryVersion(rq.ReplyRequest): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/nvcontrol.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/nvcontrol.pyi index edae4e22a..a0a8a88ce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/nvcontrol.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/nvcontrol.pyi @@ -1,9 +1,11 @@ +from typing_extensions import Final + from Xlib._typing import Unused from Xlib.display import Display from Xlib.protocol import rq from Xlib.xobject import resource -extname: str +extname: Final = "NV-CONTROL" def query_target_count(self: Display | resource.Resource, target: Target) -> int: ... def query_int_attribute(self: Display | resource.Resource, target: Target, display_mask: int, attr: int) -> int | None: ... @@ -61,998 +63,998 @@ def get_fan_rpm(self: Display | resource.Resource, target: Target) -> int | None def get_max_displays(self: Display | resource.Resource, target: Target) -> int | None: ... def init(disp: Display, info: Unused) -> None: ... -NV_CTRL_FLATPANEL_SCALING: int -NV_CTRL_FLATPANEL_SCALING_DEFAULT: int -NV_CTRL_FLATPANEL_SCALING_NATIVE: int -NV_CTRL_FLATPANEL_SCALING_SCALED: int -NV_CTRL_FLATPANEL_SCALING_CENTERED: int -NV_CTRL_FLATPANEL_SCALING_ASPECT_SCALED: int -NV_CTRL_FLATPANEL_DITHERING: int -NV_CTRL_FLATPANEL_DITHERING_DEFAULT: int -NV_CTRL_FLATPANEL_DITHERING_ENABLED: int -NV_CTRL_FLATPANEL_DITHERING_DISABLED: int -NV_CTRL_DITHERING: int -NV_CTRL_DITHERING_AUTO: int -NV_CTRL_DITHERING_ENABLED: int -NV_CTRL_DITHERING_DISABLED: int -NV_CTRL_DIGITAL_VIBRANCE: int -NV_CTRL_BUS_TYPE: int -NV_CTRL_BUS_TYPE_AGP: int -NV_CTRL_BUS_TYPE_PCI: int -NV_CTRL_BUS_TYPE_PCI_EXPRESS: int -NV_CTRL_BUS_TYPE_INTEGRATED: int -NV_CTRL_TOTAL_GPU_MEMORY: int -NV_CTRL_VIDEO_RAM: int -NV_CTRL_IRQ: int -NV_CTRL_OPERATING_SYSTEM: int -NV_CTRL_OPERATING_SYSTEM_LINUX: int -NV_CTRL_OPERATING_SYSTEM_FREEBSD: int -NV_CTRL_OPERATING_SYSTEM_SUNOS: int -NV_CTRL_SYNC_TO_VBLANK: int -NV_CTRL_SYNC_TO_VBLANK_OFF: int -NV_CTRL_SYNC_TO_VBLANK_ON: int -NV_CTRL_LOG_ANISO: int -NV_CTRL_FSAA_MODE: int -NV_CTRL_FSAA_MODE_NONE: int -NV_CTRL_FSAA_MODE_2x: int -NV_CTRL_FSAA_MODE_2x_5t: int -NV_CTRL_FSAA_MODE_15x15: int -NV_CTRL_FSAA_MODE_2x2: int -NV_CTRL_FSAA_MODE_4x: int -NV_CTRL_FSAA_MODE_4x_9t: int -NV_CTRL_FSAA_MODE_8x: int -NV_CTRL_FSAA_MODE_16x: int -NV_CTRL_FSAA_MODE_8xS: int -NV_CTRL_FSAA_MODE_8xQ: int -NV_CTRL_FSAA_MODE_16xS: int -NV_CTRL_FSAA_MODE_16xQ: int -NV_CTRL_FSAA_MODE_32xS: int -NV_CTRL_FSAA_MODE_32x: int -NV_CTRL_FSAA_MODE_64xS: int -NV_CTRL_FSAA_MODE_MAX: int -NV_CTRL_UBB: int -NV_CTRL_UBB_OFF: int -NV_CTRL_UBB_ON: int -NV_CTRL_OVERLAY: int -NV_CTRL_OVERLAY_OFF: int -NV_CTRL_OVERLAY_ON: int -NV_CTRL_STEREO: int -NV_CTRL_STEREO_OFF: int -NV_CTRL_STEREO_DDC: int -NV_CTRL_STEREO_BLUELINE: int -NV_CTRL_STEREO_DIN: int -NV_CTRL_STEREO_PASSIVE_EYE_PER_DPY: int -NV_CTRL_STEREO_VERTICAL_INTERLACED: int -NV_CTRL_STEREO_COLOR_INTERLACED: int -NV_CTRL_STEREO_HORIZONTAL_INTERLACED: int -NV_CTRL_STEREO_CHECKERBOARD_PATTERN: int -NV_CTRL_STEREO_INVERSE_CHECKERBOARD_PATTERN: int -NV_CTRL_STEREO_3D_VISION: int -NV_CTRL_STEREO_3D_VISION_PRO: int -NV_CTRL_STEREO_HDMI_3D: int -NV_CTRL_STEREO_TRIDELITY_SL: int -NV_CTRL_STEREO_INBAND_STEREO_SIGNALING: int -NV_CTRL_STEREO_MAX: int -NV_CTRL_EMULATE: int -NV_CTRL_EMULATE_NONE: int -NV_CTRL_TWINVIEW: int -NV_CTRL_TWINVIEW_NOT_ENABLED: int -NV_CTRL_TWINVIEW_ENABLED: int -NV_CTRL_CONNECTED_DISPLAYS: int -NV_CTRL_ENABLED_DISPLAYS: int -NV_CTRL_FRAMELOCK: int -NV_CTRL_FRAMELOCK_NOT_SUPPORTED: int -NV_CTRL_FRAMELOCK_SUPPORTED: int -NV_CTRL_FRAMELOCK_MASTER: int -NV_CTRL_FRAMELOCK_MASTER_FALSE: int -NV_CTRL_FRAMELOCK_MASTER_TRUE: int -NV_CTRL_FRAMELOCK_POLARITY: int -NV_CTRL_FRAMELOCK_POLARITY_RISING_EDGE: int -NV_CTRL_FRAMELOCK_POLARITY_FALLING_EDGE: int -NV_CTRL_FRAMELOCK_POLARITY_BOTH_EDGES: int -NV_CTRL_FRAMELOCK_SYNC_DELAY: int -NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX: int -NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR: float -NV_CTRL_FRAMELOCK_SYNC_INTERVAL: int -NV_CTRL_FRAMELOCK_PORT0_STATUS: int -NV_CTRL_FRAMELOCK_PORT0_STATUS_INPUT: int -NV_CTRL_FRAMELOCK_PORT0_STATUS_OUTPUT: int -NV_CTRL_FRAMELOCK_PORT1_STATUS: int -NV_CTRL_FRAMELOCK_PORT1_STATUS_INPUT: int -NV_CTRL_FRAMELOCK_PORT1_STATUS_OUTPUT: int -NV_CTRL_FRAMELOCK_HOUSE_STATUS: int -NV_CTRL_FRAMELOCK_HOUSE_STATUS_NOT_DETECTED: int -NV_CTRL_FRAMELOCK_HOUSE_STATUS_DETECTED: int -NV_CTRL_FRAMELOCK_SYNC: int -NV_CTRL_FRAMELOCK_SYNC_DISABLE: int -NV_CTRL_FRAMELOCK_SYNC_ENABLE: int -NV_CTRL_FRAMELOCK_SYNC_READY: int -NV_CTRL_FRAMELOCK_SYNC_READY_FALSE: int -NV_CTRL_FRAMELOCK_SYNC_READY_TRUE: int -NV_CTRL_FRAMELOCK_STEREO_SYNC: int -NV_CTRL_FRAMELOCK_STEREO_SYNC_FALSE: int -NV_CTRL_FRAMELOCK_STEREO_SYNC_TRUE: int -NV_CTRL_FRAMELOCK_TEST_SIGNAL: int -NV_CTRL_FRAMELOCK_TEST_SIGNAL_DISABLE: int -NV_CTRL_FRAMELOCK_TEST_SIGNAL_ENABLE: int -NV_CTRL_FRAMELOCK_ETHERNET_DETECTED: int -NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_NONE: int -NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT0: int -NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT1: int -NV_CTRL_FRAMELOCK_VIDEO_MODE: int -NV_CTRL_FRAMELOCK_VIDEO_MODE_NONE: int -NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL: int -NV_CTRL_FRAMELOCK_VIDEO_MODE_NTSCPALSECAM: int -NV_CTRL_FRAMELOCK_VIDEO_MODE_HDTV: int -NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_AUTO: int -NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_BI_LEVEL: int -NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_TRI_LEVEL: int -NV_CTRL_FRAMELOCK_SYNC_RATE: int -NV_CTRL_FORCE_GENERIC_CPU: int -NV_CTRL_FORCE_GENERIC_CPU_DISABLE: int -NV_CTRL_FORCE_GENERIC_CPU_ENABLE: int -NV_CTRL_OPENGL_AA_LINE_GAMMA: int -NV_CTRL_OPENGL_AA_LINE_GAMMA_DISABLE: int -NV_CTRL_OPENGL_AA_LINE_GAMMA_ENABLE: int -NV_CTRL_FRAMELOCK_TIMING: int -NV_CTRL_FRAMELOCK_TIMING_FALSE: int -NV_CTRL_FRAMELOCK_TIMING_TRUE: int -NV_CTRL_FLIPPING_ALLOWED: int -NV_CTRL_FLIPPING_ALLOWED_FALSE: int -NV_CTRL_FLIPPING_ALLOWED_TRUE: int -NV_CTRL_ARCHITECTURE: int -NV_CTRL_ARCHITECTURE_X86: int -NV_CTRL_ARCHITECTURE_X86_64: int -NV_CTRL_ARCHITECTURE_IA64: int -NV_CTRL_ARCHITECTURE_ARM: int -NV_CTRL_ARCHITECTURE_AARCH64: int -NV_CTRL_ARCHITECTURE_PPC64LE: int -NV_CTRL_TEXTURE_CLAMPING: int -NV_CTRL_TEXTURE_CLAMPING_EDGE: int -NV_CTRL_TEXTURE_CLAMPING_SPEC: int -NV_CTRL_CURSOR_SHADOW: int -NV_CTRL_CURSOR_SHADOW_DISABLE: int -NV_CTRL_CURSOR_SHADOW_ENABLE: int -NV_CTRL_CURSOR_SHADOW_ALPHA: int -NV_CTRL_CURSOR_SHADOW_RED: int -NV_CTRL_CURSOR_SHADOW_GREEN: int -NV_CTRL_CURSOR_SHADOW_BLUE: int -NV_CTRL_CURSOR_SHADOW_X_OFFSET: int -NV_CTRL_CURSOR_SHADOW_Y_OFFSET: int -NV_CTRL_FSAA_APPLICATION_CONTROLLED: int -NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED: int -NV_CTRL_FSAA_APPLICATION_CONTROLLED_DISABLED: int -NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED: int -NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_ENABLED: int -NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_DISABLED: int -NV_CTRL_IMAGE_SHARPENING: int -NV_CTRL_TV_OVERSCAN: int -NV_CTRL_TV_FLICKER_FILTER: int -NV_CTRL_TV_BRIGHTNESS: int -NV_CTRL_TV_HUE: int -NV_CTRL_TV_CONTRAST: int -NV_CTRL_TV_SATURATION: int -NV_CTRL_TV_RESET_SETTINGS: int -NV_CTRL_GPU_CORE_TEMPERATURE: int -NV_CTRL_GPU_CORE_THRESHOLD: int -NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD: int -NV_CTRL_GPU_MAX_CORE_THRESHOLD: int -NV_CTRL_AMBIENT_TEMPERATURE: int -NV_CTRL_PBUFFER_SCANOUT_SUPPORTED: int -NV_CTRL_PBUFFER_SCANOUT_FALSE: int -NV_CTRL_PBUFFER_SCANOUT_TRUE: int -NV_CTRL_PBUFFER_SCANOUT_XID: int -NV_CTRL_GVO_SUPPORTED: int -NV_CTRL_GVO_SUPPORTED_FALSE: int -NV_CTRL_GVO_SUPPORTED_TRUE: int -NV_CTRL_GVO_SYNC_MODE: int -NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING: int -NV_CTRL_GVO_SYNC_MODE_GENLOCK: int -NV_CTRL_GVO_SYNC_MODE_FRAMELOCK: int -NV_CTRL_GVO_SYNC_SOURCE: int -NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE: int -NV_CTRL_GVO_SYNC_SOURCE_SDI: int -NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT: int -NV_CTRL_GVIO_VIDEO_FORMAT_NONE: int -NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC: int -NV_CTRL_GVIO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL: int -NV_CTRL_GVIO_VIDEO_FORMAT_720P_59_94_SMPTE296: int -NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296: int -NV_CTRL_GVIO_VIDEO_FORMAT_1035I_59_94_SMPTE260: int -NV_CTRL_GVIO_VIDEO_FORMAT_1035I_60_00_SMPTE260: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE295: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_976_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_720P_50_00_SMPTE296: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_720P_30_00_SMPTE296: int -NV_CTRL_GVIO_VIDEO_FORMAT_720P_29_97_SMPTE296: int -NV_CTRL_GVIO_VIDEO_FORMAT_720P_25_00_SMPTE296: int -NV_CTRL_GVIO_VIDEO_FORMAT_720P_24_00_SMPTE296: int -NV_CTRL_GVIO_VIDEO_FORMAT_720P_23_98_SMPTE296: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_A_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_A_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_A_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_98_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_3G_LEVEL_B_SMPTE274: int -NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_3G_LEVEL_B_SMPTE372: int -NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT: int -NV_CTRL_GVO_VIDEO_FORMAT_NONE: int -NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC: int -NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL: int -NV_CTRL_GVO_VIDEO_FORMAT_720P_59_94_SMPTE296: int -NV_CTRL_GVO_VIDEO_FORMAT_720P_60_00_SMPTE296: int -NV_CTRL_GVO_VIDEO_FORMAT_1035I_59_94_SMPTE260: int -NV_CTRL_GVO_VIDEO_FORMAT_1035I_60_00_SMPTE260: int -NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE295: int -NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080I_59_94_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080I_60_00_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080P_23_976_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080P_24_00_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080P_25_00_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080P_29_97_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080P_30_00_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_720P_50_00_SMPTE296: int -NV_CTRL_GVO_VIDEO_FORMAT_1080I_48_00_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080I_47_96_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_720P_30_00_SMPTE296: int -NV_CTRL_GVO_VIDEO_FORMAT_720P_29_97_SMPTE296: int -NV_CTRL_GVO_VIDEO_FORMAT_720P_25_00_SMPTE296: int -NV_CTRL_GVO_VIDEO_FORMAT_720P_24_00_SMPTE296: int -NV_CTRL_GVO_VIDEO_FORMAT_720P_23_98_SMPTE296: int -NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274: int -NV_CTRL_GVO_VIDEO_FORMAT_2048P_30_00_SMPTE372: int -NV_CTRL_GVO_VIDEO_FORMAT_2048P_29_97_SMPTE372: int -NV_CTRL_GVO_VIDEO_FORMAT_2048I_60_00_SMPTE372: int -NV_CTRL_GVO_VIDEO_FORMAT_2048I_59_94_SMPTE372: int -NV_CTRL_GVO_VIDEO_FORMAT_2048P_25_00_SMPTE372: int -NV_CTRL_GVO_VIDEO_FORMAT_2048I_50_00_SMPTE372: int -NV_CTRL_GVO_VIDEO_FORMAT_2048P_24_00_SMPTE372: int -NV_CTRL_GVO_VIDEO_FORMAT_2048P_23_98_SMPTE372: int -NV_CTRL_GVO_VIDEO_FORMAT_2048I_48_00_SMPTE372: int -NV_CTRL_GVO_VIDEO_FORMAT_2048I_47_96_SMPTE372: int -NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT: int -NV_CTRL_GVO_INPUT_VIDEO_FORMAT: int -NV_CTRL_GVO_DATA_FORMAT: int -NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444: int -NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4444: int -NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4444: int -NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422: int -NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4224: int -NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4224: int -NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_RGB444: int -NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_RGBA4444: int -NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4444_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_RGBZ4444: int -NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4444_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_Y10CR10CB10_TO_YCRCB444: int -NV_CTRL_GVO_DATA_FORMAT_X10X10X10_444_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8_TO_YCRCB444: int -NV_CTRL_GVO_DATA_FORMAT_X10X8X8_444_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8A10_TO_YCRCBA4444: int -NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4444_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8Z10_TO_YCRCBZ4444: int -NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4444_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_DUAL_R8G8B8_TO_DUAL_YCRCB422: int -NV_CTRL_GVO_DATA_FORMAT_DUAL_Y8CR8CB8_TO_DUAL_YCRCB422: int -NV_CTRL_GVO_DATA_FORMAT_DUAL_X8X8X8_TO_DUAL_422_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB422: int -NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB444: int -NV_CTRL_GVO_DATA_FORMAT_Y12CR12CB12_TO_YCRCB444: int -NV_CTRL_GVO_DATA_FORMAT_X12X12X12_444_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB444: int -NV_CTRL_GVO_DATA_FORMAT_X8X8X8_422_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4224_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4224_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_X10X10X10_422_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_X10X8X8_422_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4224_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4224_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_X12X12X12_422_PASSTHRU: int -NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB422: int -NV_CTRL_GVO_DISPLAY_X_SCREEN: int -NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE: int -NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE: int -NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED: int -NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE: int -NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_TRUE: int -NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE: int -NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO: int -NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL: int -NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL: int -NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED: int -NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE: int -NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD: int -NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD: int -NV_CTRL_GVO_VIDEO_OUTPUTS: int -NV_CTRL_GVO_VIDEO_OUTPUTS_NONE: int -NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO1: int -NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO2: int -NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO_BOTH: int -NV_CTRL_GVO_FIRMWARE_VERSION: int -NV_CTRL_GVO_SYNC_DELAY_PIXELS: int -NV_CTRL_GVO_SYNC_DELAY_LINES: int -NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE: int -NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_FALSE: int -NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_TRUE: int -NV_CTRL_GVO_GLX_LOCKED: int -NV_CTRL_GVO_GLX_LOCKED_FALSE: int -NV_CTRL_GVO_GLX_LOCKED_TRUE: int -NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH: int -NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT: int -NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE: int -NV_CTRL_GVO_VIDEO_FORMAT_WIDTH: int -NV_CTRL_GVO_VIDEO_FORMAT_HEIGHT: int -NV_CTRL_GVO_VIDEO_FORMAT_REFRESH_RATE: int -NV_CTRL_GVO_X_SCREEN_PAN_X: int -NV_CTRL_GVO_X_SCREEN_PAN_Y: int -NV_CTRL_GPU_OVERCLOCKING_STATE: int -NV_CTRL_GPU_OVERCLOCKING_STATE_NONE: int -NV_CTRL_GPU_OVERCLOCKING_STATE_MANUAL: int -NV_CTRL_GPU_2D_CLOCK_FREQS: int -NV_CTRL_GPU_3D_CLOCK_FREQS: int -NV_CTRL_GPU_DEFAULT_2D_CLOCK_FREQS: int -NV_CTRL_GPU_DEFAULT_3D_CLOCK_FREQS: int -NV_CTRL_GPU_CURRENT_CLOCK_FREQS: int -NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS: int -NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID: int -NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION: int -NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_START: int -NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_CANCEL: int -NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE: int -NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_IDLE: int -NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_BUSY: int -NV_CTRL_FLATPANEL_CHIP_LOCATION: int -NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL: int -NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL: int -NV_CTRL_FLATPANEL_LINK: int -NV_CTRL_FLATPANEL_LINK_SINGLE: int -NV_CTRL_FLATPANEL_LINK_DUAL: int -NV_CTRL_FLATPANEL_LINK_QUAD: int -NV_CTRL_FLATPANEL_SIGNAL: int -NV_CTRL_FLATPANEL_SIGNAL_LVDS: int -NV_CTRL_FLATPANEL_SIGNAL_TMDS: int -NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT: int -NV_CTRL_USE_HOUSE_SYNC: int -NV_CTRL_USE_HOUSE_SYNC_DISABLED: int -NV_CTRL_USE_HOUSE_SYNC_INPUT: int -NV_CTRL_USE_HOUSE_SYNC_OUTPUT: int -NV_CTRL_USE_HOUSE_SYNC_FALSE: int -NV_CTRL_USE_HOUSE_SYNC_TRUE: int -NV_CTRL_EDID_AVAILABLE: int -NV_CTRL_EDID_AVAILABLE_FALSE: int -NV_CTRL_EDID_AVAILABLE_TRUE: int -NV_CTRL_FORCE_STEREO: int -NV_CTRL_FORCE_STEREO_FALSE: int -NV_CTRL_FORCE_STEREO_TRUE: int -NV_CTRL_IMAGE_SETTINGS: int -NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY: int -NV_CTRL_IMAGE_SETTINGS_QUALITY: int -NV_CTRL_IMAGE_SETTINGS_PERFORMANCE: int -NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE: int -NV_CTRL_XINERAMA: int -NV_CTRL_XINERAMA_OFF: int -NV_CTRL_XINERAMA_ON: int -NV_CTRL_XINERAMA_STEREO: int -NV_CTRL_XINERAMA_STEREO_FALSE: int -NV_CTRL_XINERAMA_STEREO_TRUE: int -NV_CTRL_BUS_RATE: int -NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH: int -NV_CTRL_SHOW_SLI_VISUAL_INDICATOR: int -NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE: int -NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE: int -NV_CTRL_SHOW_SLI_HUD: int -NV_CTRL_SHOW_SLI_HUD_FALSE: int -NV_CTRL_SHOW_SLI_HUD_TRUE: int -NV_CTRL_XV_SYNC_TO_DISPLAY: int -NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2: int -NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT2: int -NV_CTRL_GVO_OVERRIDE_HW_CSC: int -NV_CTRL_GVO_OVERRIDE_HW_CSC_FALSE: int -NV_CTRL_GVO_OVERRIDE_HW_CSC_TRUE: int -NV_CTRL_GVO_CAPABILITIES: int -NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY: int -NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_TO_X_SCREEN: int -NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION: int -NV_CTRL_GVO_CAPABILITIES_SHARED_SYNC_BNC: int -NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC: int -NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW: int -NV_CTRL_GVO_COMPOSITE_TERMINATION: int -NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE: int -NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE: int -NV_CTRL_ASSOCIATED_DISPLAY_DEVICES: int -NV_CTRL_FRAMELOCK_SLAVES: int -NV_CTRL_FRAMELOCK_MASTERABLE: int -NV_CTRL_PROBE_DISPLAYS: int -NV_CTRL_REFRESH_RATE: int -NV_CTRL_GVO_FLIP_QUEUE_SIZE: int -NV_CTRL_CURRENT_SCANLINE: int -NV_CTRL_INITIAL_PIXMAP_PLACEMENT: int -NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM: int -NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM: int -NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM: int -NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED: int -NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM: int -NV_CTRL_PCI_BUS: int -NV_CTRL_PCI_DEVICE: int -NV_CTRL_PCI_FUNCTION: int -NV_CTRL_FRAMELOCK_FPGA_REVISION: int -NV_CTRL_MAX_SCREEN_WIDTH: int -NV_CTRL_MAX_SCREEN_HEIGHT: int -NV_CTRL_MAX_DISPLAYS: int -NV_CTRL_DYNAMIC_TWINVIEW: int -NV_CTRL_MULTIGPU_DISPLAY_OWNER: int -NV_CTRL_GPU_SCALING: int -NV_CTRL_GPU_SCALING_TARGET_INVALID: int -NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT: int -NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE: int -NV_CTRL_GPU_SCALING_METHOD_INVALID: int -NV_CTRL_GPU_SCALING_METHOD_STRETCHED: int -NV_CTRL_GPU_SCALING_METHOD_CENTERED: int -NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED: int -NV_CTRL_FRONTEND_RESOLUTION: int -NV_CTRL_BACKEND_RESOLUTION: int -NV_CTRL_FLATPANEL_NATIVE_RESOLUTION: int -NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION: int -NV_CTRL_GPU_SCALING_ACTIVE: int -NV_CTRL_DFP_SCALING_ACTIVE: int -NV_CTRL_FSAA_APPLICATION_ENHANCED: int -NV_CTRL_FSAA_APPLICATION_ENHANCED_ENABLED: int -NV_CTRL_FSAA_APPLICATION_ENHANCED_DISABLED: int -NV_CTRL_FRAMELOCK_SYNC_RATE_4: int -NV_CTRL_GVO_LOCK_OWNER: int -NV_CTRL_GVO_LOCK_OWNER_NONE: int -NV_CTRL_GVO_LOCK_OWNER_GLX: int -NV_CTRL_GVO_LOCK_OWNER_CLONE: int -NV_CTRL_GVO_LOCK_OWNER_X_SCREEN: int -NV_CTRL_HWOVERLAY: int -NV_CTRL_HWOVERLAY_FALSE: int -NV_CTRL_HWOVERLAY_TRUE: int -NV_CTRL_NUM_GPU_ERRORS_RECOVERED: int -NV_CTRL_REFRESH_RATE_3: int -NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS: int -NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_OFF: int -NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_ON: int -NV_CTRL_GPU_POWER_SOURCE: int -NV_CTRL_GPU_POWER_SOURCE_AC: int -NV_CTRL_GPU_POWER_SOURCE_BATTERY: int -NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE: int -NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_DESKTOP: int -NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_MAXPERF: int -NV_CTRL_GLYPH_CACHE: int -NV_CTRL_GLYPH_CACHE_DISABLED: int -NV_CTRL_GLYPH_CACHE_ENABLED: int -NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL: int -NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE: int -NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_DISABLED: int -NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_ENABLED: int -NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED: int -NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_FALSE: int -NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_TRUE: int -NV_CTRL_GVO_SYNC_LOCK_STATUS: int -NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED: int -NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED: int -NV_CTRL_GVO_ANC_TIME_CODE_GENERATION: int -NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_DISABLE: int -NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_ENABLE: int -NV_CTRL_GVO_COMPOSITE: int -NV_CTRL_GVO_COMPOSITE_DISABLE: int -NV_CTRL_GVO_COMPOSITE_ENABLE: int -NV_CTRL_GVO_COMPOSITE_ALPHA_KEY: int -NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_DISABLE: int -NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_ENABLE: int -NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE: int -NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE: int -NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE: int -NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES: int -NV_CTRL_SWITCH_TO_DISPLAYS: int -NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT: int -NV_CTRL_NOTEBOOK_INTERNAL_LCD: int -NV_CTRL_DEPTH_30_ALLOWED: int -NV_CTRL_MODE_SET_EVENT: int -NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE: int -NV_CTRL_VCSC_HIGH_PERF_MODE: int -NV_CTRL_VCSC_HIGH_PERF_MODE_DISABLE: int -NV_CTRL_VCSC_HIGH_PERF_MODE_ENABLE: int -NV_CTRL_DISPLAYPORT_LINK_RATE: int -NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED: int -NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS: int -NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS: int -NV_CTRL_STEREO_EYES_EXCHANGE: int -NV_CTRL_STEREO_EYES_EXCHANGE_OFF: int -NV_CTRL_STEREO_EYES_EXCHANGE_ON: int -NV_CTRL_NO_SCANOUT: int -NV_CTRL_NO_SCANOUT_DISABLED: int -NV_CTRL_NO_SCANOUT_ENABLED: int -NV_CTRL_GVO_CSC_CHANGED_EVENT: int -NV_CTRL_FRAMELOCK_SLAVEABLE: int -NV_CTRL_GVO_SYNC_TO_DISPLAY: int -NV_CTRL_GVO_SYNC_TO_DISPLAY_DISABLE: int -NV_CTRL_GVO_SYNC_TO_DISPLAY_ENABLE: int -NV_CTRL_X_SERVER_UNIQUE_ID: int -NV_CTRL_PIXMAP_CACHE: int -NV_CTRL_PIXMAP_CACHE_DISABLE: int -NV_CTRL_PIXMAP_CACHE_ENABLE: int -NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB: int -NV_CTRL_IS_GVO_DISPLAY: int -NV_CTRL_IS_GVO_DISPLAY_FALSE: int -NV_CTRL_IS_GVO_DISPLAY_TRUE: int -NV_CTRL_PCI_ID: int -NV_CTRL_GVO_FULL_RANGE_COLOR: int -NV_CTRL_GVO_FULL_RANGE_COLOR_DISABLED: int -NV_CTRL_GVO_FULL_RANGE_COLOR_ENABLED: int -NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE: int -NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_FALSE: int -NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_TRUE: int -NV_CTRL_GVO_ENABLE_RGB_DATA: int -NV_CTRL_GVO_ENABLE_RGB_DATA_DISABLE: int -NV_CTRL_GVO_ENABLE_RGB_DATA_ENABLE: int -NV_CTRL_IMAGE_SHARPENING_DEFAULT: int -NV_CTRL_PCI_DOMAIN: int -NV_CTRL_GVI_NUM_JACKS: int -NV_CTRL_GVI_MAX_LINKS_PER_STREAM: int -NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT: int -NV_CTRL_GVI_BITS_PER_COMPONENT_UNKNOWN: int -NV_CTRL_GVI_BITS_PER_COMPONENT_8: int -NV_CTRL_GVI_BITS_PER_COMPONENT_10: int -NV_CTRL_GVI_BITS_PER_COMPONENT_12: int -NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT: int -NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING: int -NV_CTRL_GVI_COMPONENT_SAMPLING_UNKNOWN: int -NV_CTRL_GVI_COMPONENT_SAMPLING_4444: int -NV_CTRL_GVI_COMPONENT_SAMPLING_4224: int -NV_CTRL_GVI_COMPONENT_SAMPLING_444: int -NV_CTRL_GVI_COMPONENT_SAMPLING_422: int -NV_CTRL_GVI_COMPONENT_SAMPLING_420: int -NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING: int -NV_CTRL_GVI_REQUESTED_STREAM_CHROMA_EXPAND: int -NV_CTRL_GVI_CHROMA_EXPAND_FALSE: int -NV_CTRL_GVI_CHROMA_EXPAND_TRUE: int -NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE: int -NV_CTRL_GVI_COLOR_SPACE_UNKNOWN: int -NV_CTRL_GVI_COLOR_SPACE_GBR: int -NV_CTRL_GVI_COLOR_SPACE_GBRA: int -NV_CTRL_GVI_COLOR_SPACE_GBRD: int -NV_CTRL_GVI_COLOR_SPACE_YCBCR: int -NV_CTRL_GVI_COLOR_SPACE_YCBCRA: int -NV_CTRL_GVI_COLOR_SPACE_YCBCRD: int -NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID: int -NV_CTRL_GVI_LINK_ID_UNKNOWN: int -NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER: int -NV_CTRL_GVI_GLOBAL_IDENTIFIER: int -NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION: int -NV_CTRL_GPU_COOLER_MANUAL_CONTROL: int -NV_CTRL_GPU_COOLER_MANUAL_CONTROL_FALSE: int -NV_CTRL_GPU_COOLER_MANUAL_CONTROL_TRUE: int -NV_CTRL_THERMAL_COOLER_LEVEL: int -NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT: int -NV_CTRL_THERMAL_COOLER_CONTROL_TYPE: int -NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_NONE: int -NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_TOGGLE: int -NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_VARIABLE: int -NV_CTRL_THERMAL_COOLER_TARGET: int -NV_CTRL_THERMAL_COOLER_TARGET_NONE: int -NV_CTRL_THERMAL_COOLER_TARGET_GPU: int -NV_CTRL_THERMAL_COOLER_TARGET_MEMORY: int -NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY: int -NV_CTRL_THERMAL_COOLER_TARGET_GPU_RELATED: int -NV_CTRL_GPU_ECC_SUPPORTED: int -NV_CTRL_GPU_ECC_SUPPORTED_FALSE: int -NV_CTRL_GPU_ECC_SUPPORTED_TRUE: int -NV_CTRL_GPU_ECC_STATUS: int -NV_CTRL_GPU_ECC_STATUS_DISABLED: int -NV_CTRL_GPU_ECC_STATUS_ENABLED: int -NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED: int -NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_FALSE: int -NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_TRUE: int -NV_CTRL_GPU_ECC_CONFIGURATION: int -NV_CTRL_GPU_ECC_CONFIGURATION_DISABLED: int -NV_CTRL_GPU_ECC_CONFIGURATION_ENABLED: int -NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION: int -NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_DISABLED: int -NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_ENABLED: int -NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS: int -NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS: int -NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS: int -NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS: int -NV_CTRL_GPU_ECC_RESET_ERROR_STATUS: int -NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_VOLATILE: int -NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_AGGREGATE: int -NV_CTRL_GPU_POWER_MIZER_MODE: int -NV_CTRL_GPU_POWER_MIZER_MODE_ADAPTIVE: int -NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE: int -NV_CTRL_GPU_POWER_MIZER_MODE_AUTO: int -NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCE: int -NV_CTRL_GVI_SYNC_OUTPUT_FORMAT: int -NV_CTRL_GVI_MAX_CHANNELS_PER_JACK: int -NV_CTRL_GVI_MAX_STREAMS: int -NV_CTRL_GVI_NUM_CAPTURE_SURFACES: int -NV_CTRL_OVERSCAN_COMPENSATION: int -NV_CTRL_GPU_PCIE_GENERATION: int -NV_CTRL_GPU_PCIE_GENERATION1: int -NV_CTRL_GPU_PCIE_GENERATION2: int -NV_CTRL_GPU_PCIE_GENERATION3: int -NV_CTRL_GVI_BOUND_GPU: int -NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3: int -NV_CTRL_ACCELERATE_TRAPEZOIDS: int -NV_CTRL_ACCELERATE_TRAPEZOIDS_DISABLE: int -NV_CTRL_ACCELERATE_TRAPEZOIDS_ENABLE: int -NV_CTRL_GPU_CORES: int -NV_CTRL_GPU_MEMORY_BUS_WIDTH: int -NV_CTRL_GVI_TEST_MODE: int -NV_CTRL_GVI_TEST_MODE_DISABLE: int -NV_CTRL_GVI_TEST_MODE_ENABLE: int -NV_CTRL_COLOR_SPACE: int -NV_CTRL_COLOR_SPACE_RGB: int -NV_CTRL_COLOR_SPACE_YCbCr422: int -NV_CTRL_COLOR_SPACE_YCbCr444: int -NV_CTRL_COLOR_RANGE: int -NV_CTRL_COLOR_RANGE_FULL: int -NV_CTRL_COLOR_RANGE_LIMITED: int -NV_CTRL_GPU_SCALING_DEFAULT_TARGET: int -NV_CTRL_GPU_SCALING_DEFAULT_METHOD: int -NV_CTRL_DITHERING_MODE: int -NV_CTRL_DITHERING_MODE_AUTO: int -NV_CTRL_DITHERING_MODE_DYNAMIC_2X2: int -NV_CTRL_DITHERING_MODE_STATIC_2X2: int -NV_CTRL_DITHERING_MODE_TEMPORAL: int -NV_CTRL_CURRENT_DITHERING: int -NV_CTRL_CURRENT_DITHERING_DISABLED: int -NV_CTRL_CURRENT_DITHERING_ENABLED: int -NV_CTRL_CURRENT_DITHERING_MODE: int -NV_CTRL_CURRENT_DITHERING_MODE_NONE: int -NV_CTRL_CURRENT_DITHERING_MODE_DYNAMIC_2X2: int -NV_CTRL_CURRENT_DITHERING_MODE_STATIC_2X2: int -NV_CTRL_CURRENT_DITHERING_MODE_TEMPORAL: int -NV_CTRL_THERMAL_SENSOR_READING: int -NV_CTRL_THERMAL_SENSOR_PROVIDER: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_NONE: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_GPU_INTERNAL: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_ADM1032: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7461: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX6649: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX1617: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_LM99: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_LM89: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_LM64: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_G781: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7473: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_SBMAX6649: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_VBIOSEVT: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_OS: int -NV_CTRL_THERMAL_SENSOR_PROVIDER_UNKNOWN: int -NV_CTRL_THERMAL_SENSOR_TARGET: int -NV_CTRL_THERMAL_SENSOR_TARGET_NONE: int -NV_CTRL_THERMAL_SENSOR_TARGET_GPU: int -NV_CTRL_THERMAL_SENSOR_TARGET_MEMORY: int -NV_CTRL_THERMAL_SENSOR_TARGET_POWER_SUPPLY: int -NV_CTRL_THERMAL_SENSOR_TARGET_BOARD: int -NV_CTRL_THERMAL_SENSOR_TARGET_UNKNOWN: int -NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR: int -NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_FALSE: int -NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_TRUE: int -NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS: int -NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS: int -NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_NONE: int -NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_INTERLACED: int -NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PROGRESSIVE: int -NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PSF: int -NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A: int -NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B: int -NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G: int -NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC: int -NV_CTRL_GPU_PCIE_MAX_LINK_SPEED: int -NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_INVALID: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_LOW_RANGE: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_MEDIUM_RANGE: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_HIGH_RANGE: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_COUNT: int -NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES: int -NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_DISABLE: int -NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_ENABLE: int -NV_CTRL_DITHERING_DEPTH: int -NV_CTRL_DITHERING_DEPTH_AUTO: int -NV_CTRL_DITHERING_DEPTH_6_BITS: int -NV_CTRL_DITHERING_DEPTH_8_BITS: int -NV_CTRL_CURRENT_DITHERING_DEPTH: int -NV_CTRL_CURRENT_DITHERING_DEPTH_NONE: int -NV_CTRL_CURRENT_DITHERING_DEPTH_6_BITS: int -NV_CTRL_CURRENT_DITHERING_DEPTH_8_BITS: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY: int -NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT: int -NV_CTRL_3D_VISION_PRO_PAIR_GLASSES: int -NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP: int -NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON: int -NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES: int -NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES: int -NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES: int -NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE: int -NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES: int -NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL: int -NV_CTRL_GVO_ANC_PARITY_COMPUTATION: int -NV_CTRL_GVO_ANC_PARITY_COMPUTATION_AUTO: int -NV_CTRL_GVO_ANC_PARITY_COMPUTATION_ON: int -NV_CTRL_GVO_ANC_PARITY_COMPUTATION_OFF: int -NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT: int -NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT: int -NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH: int -NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED: int -NV_CTRL_GVO_AUDIO_BLANKING: int -NV_CTRL_GVO_AUDIO_BLANKING_DISABLE: int -NV_CTRL_GVO_AUDIO_BLANKING_ENABLE: int -NV_CTRL_CURRENT_METAMODE_ID: int -NV_CTRL_DISPLAY_ENABLED: int -NV_CTRL_DISPLAY_ENABLED_TRUE: int -NV_CTRL_DISPLAY_ENABLED_FALSE: int -NV_CTRL_FRAMELOCK_INCOMING_HOUSE_SYNC_RATE: int -NV_CTRL_FXAA: int -NV_CTRL_FXAA_DISABLE: int -NV_CTRL_FXAA_ENABLE: int -NV_CTRL_DISPLAY_RANDR_OUTPUT_ID: int -NV_CTRL_FRAMELOCK_DISPLAY_CONFIG: int -NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_DISABLED: int -NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_CLIENT: int -NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_SERVER: int -NV_CTRL_TOTAL_DEDICATED_GPU_MEMORY: int -NV_CTRL_USED_DEDICATED_GPU_MEMORY: int -NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE: int -NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE_DISABLED: int -NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE_ENABLED: int -NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT: int -NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT_DISABLED: int -NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT_ENALED: int -NV_CTRL_DPY_HDMI_3D: int -NV_CTRL_DPY_HDMI_3D_DISABLED: int -NV_CTRL_DPY_HDMI_3D_ENABLED: int -NV_CTRL_BASE_MOSAIC: int -NV_CTRL_BASE_MOSAIC_DISABLED: int -NV_CTRL_BASE_MOSAIC_FULL: int -NV_CTRL_BASE_MOSAIC_LIMITED: int -NV_CTRL_MULTIGPU_MASTER_POSSIBLE: int -NV_CTRL_MULTIGPU_MASTER_POSSIBLE_FALSE: int -NV_CTRL_MULTIGPU_MASTER_POSSIBLE_TRUE: int -NV_CTRL_GPU_POWER_MIZER_DEFAULT_MODE: int -NV_CTRL_XV_SYNC_TO_DISPLAY_ID: int -NV_CTRL_XV_SYNC_TO_DISPLAY_ID_AUTO: int -NV_CTRL_BACKLIGHT_BRIGHTNESS: int -NV_CTRL_GPU_LOGO_BRIGHTNESS: int -NV_CTRL_GPU_SLI_LOGO_BRIGHTNESS: int -NV_CTRL_THERMAL_COOLER_SPEED: int -NV_CTRL_PALETTE_UPDATE_EVENT: int -NV_CTRL_VIDEO_ENCODER_UTILIZATION: int -NV_CTRL_GSYNC_ALLOWED: int -NV_CTRL_GSYNC_ALLOWED_FALSE: int -NV_CTRL_GSYNC_ALLOWED_TRUE: int -NV_CTRL_GPU_NVCLOCK_OFFSET: int -NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET: int -NV_CTRL_VIDEO_DECODER_UTILIZATION: int -NV_CTRL_GPU_OVER_VOLTAGE_OFFSET: int -NV_CTRL_GPU_CURRENT_CORE_VOLTAGE: int -NV_CTRL_CURRENT_COLOR_SPACE: int -NV_CTRL_CURRENT_COLOR_SPACE_RGB: int -NV_CTRL_CURRENT_COLOR_SPACE_YCbCr422: int -NV_CTRL_CURRENT_COLOR_SPACE_YCbCr444: int -NV_CTRL_CURRENT_COLOR_SPACE_YCbCr420: int -NV_CTRL_CURRENT_COLOR_RANGE: int -NV_CTRL_CURRENT_COLOR_RANGE_FULL: int -NV_CTRL_CURRENT_COLOR_RANGE_LIMITED: int -NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR: int -NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR_FALSE: int -NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR_TRUE: int -NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL: int -NV_CTRL_STEREO_SWAP_MODE: int -NV_CTRL_STEREO_SWAP_MODE_APPLICATION_CONTROL: int -NV_CTRL_STEREO_SWAP_MODE_PER_EYE: int -NV_CTRL_STEREO_SWAP_MODE_PER_EYE_PAIR: int -NV_CTRL_CURRENT_XV_SYNC_TO_DISPLAY_ID: int -NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED: int -NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_FALSE: int -NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_TRUE: int -NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE: int -NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_UNKNOWN: int -NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_DISPLAYPORT: int -NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_HDMI: int -NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_DVI: int -NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_VGA: int -NV_CTRL_DISPLAYPORT_IS_MULTISTREAM: int -NV_CTRL_DISPLAYPORT_SINK_IS_AUDIO_CAPABLE: int -NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS: int -NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS: int -NV_CTRL_FRAMELOCK_FIRMWARE_VERSION: int -NV_CTRL_FRAMELOCK_FIRMWARE_MINOR_VERSION: int -NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR: int -NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR_FALSE: int -NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR_TRUE: int -NV_CTRL_LAST_ATTRIBUTE: int -NV_CTRL_STRING_PRODUCT_NAME: int -NV_CTRL_STRING_VBIOS_VERSION: int -NV_CTRL_STRING_NVIDIA_DRIVER_VERSION: int -NV_CTRL_STRING_DISPLAY_DEVICE_NAME: int -NV_CTRL_STRING_TV_ENCODER_NAME: int -NV_CTRL_STRING_GVIO_FIRMWARE_VERSION: int -NV_CTRL_STRING_GVO_FIRMWARE_VERSION: int -NV_CTRL_STRING_CURRENT_MODELINE: int -NV_CTRL_STRING_ADD_MODELINE: int -NV_CTRL_STRING_DELETE_MODELINE: int -NV_CTRL_STRING_CURRENT_METAMODE: int -NV_CTRL_STRING_CURRENT_METAMODE_VERSION_1: int -NV_CTRL_STRING_ADD_METAMODE: int -NV_CTRL_STRING_DELETE_METAMODE: int -NV_CTRL_STRING_VCSC_PRODUCT_NAME: int -NV_CTRL_STRING_VCSC_PRODUCT_ID: int -NV_CTRL_STRING_VCSC_SERIAL_NUMBER: int -NV_CTRL_STRING_VCSC_BUILD_DATE: int -NV_CTRL_STRING_VCSC_FIRMWARE_VERSION: int -NV_CTRL_STRING_VCSC_FIRMWARE_REVISION: int -NV_CTRL_STRING_VCSC_HARDWARE_VERSION: int -NV_CTRL_STRING_VCSC_HARDWARE_REVISION: int -NV_CTRL_STRING_MOVE_METAMODE: int -NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES: int -NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES: int -NV_CTRL_STRING_SCREEN_RECTANGLE: int -NV_CTRL_STRING_XINERAMA_SCREEN_INFO: int -NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER: int -NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER: int -NV_CTRL_STRING_SLI_MODE: int -NV_CTRL_STRING_PERFORMANCE_MODES: int -NV_CTRL_STRING_VCSC_FAN_STATUS: int -NV_CTRL_STRING_VCSC_TEMPERATURES: int -NV_CTRL_STRING_VCSC_PSU_INFO: int -NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME: int -NV_CTRL_STRING_GVO_VIDEO_FORMAT_NAME: int -NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS: int -NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION: int -NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A: int -NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A: int -NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B: int -NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B: int -NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS: int -NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A: int -NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A: int -NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS: int -NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME: int -NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2: int -NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME: int -NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID: int -NV_CTRL_STRING_DISPLAY_NAME_DP_GUID: int -NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH: int -NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX: int -NV_CTRL_STRING_DISPLAY_NAME_RANDR: int -NV_CTRL_STRING_GPU_UUID: int -NV_CTRL_STRING_GPU_UTILIZATION: int -NV_CTRL_STRING_MULTIGPU_MODE: int -NV_CTRL_STRING_PRIME_OUTPUTS_DATA: int -NV_CTRL_STRING_LAST_ATTRIBUTE: int -NV_CTRL_BINARY_DATA_EDID: int -NV_CTRL_BINARY_DATA_MODELINES: int -NV_CTRL_BINARY_DATA_METAMODES: int -NV_CTRL_BINARY_DATA_METAMODES_VERSION_1: int -NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU: int -NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN: int -NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK: int -NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT: int -NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU: int -NV_CTRL_BINARY_DATA_GPUS_USING_VCSC: int -NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU: int -NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU: int -NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN: int -NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU: int -NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER: int -NV_CTRL_BINARY_DATA_DISPLAY_TARGETS: int -NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU: int -NV_CTRL_BINARY_DATA_METAMODES_VERSION_2: int -NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN: int -NV_CTRL_BINARY_DATA_DISPLAYS_ASSIGNED_TO_XSCREEN: int -NV_CTRL_BINARY_DATA_GPU_FLAGS: int -NV_CTRL_BINARY_DATA_GPU_FLAGS_STEREO_DISPLAY_TRANSFORM_EXCLUSIVE: int -NV_CTRL_BINARY_DATA_GPU_FLAGS_OVERLAY_DISPLAY_TRANSFORM_EXCLUSIVE: int -NV_CTRL_BINARY_DATA_GPU_FLAGS_DEPTH_8_DISPLAY_TRANSFORM_EXCLUSIVE: int -NV_CTRL_BINARY_DATA_DISPLAYS_ON_GPU: int -NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE: int -NV_CTRL_STRING_OPERATION_ADD_METAMODE: int -NV_CTRL_STRING_OPERATION_GTF_MODELINE: int -NV_CTRL_STRING_OPERATION_CVT_MODELINE: int -NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL: int -NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS: int -NV_CTRL_STRING_OPERATION_PARSE_METAMODE: int -NV_CTRL_STRING_OPERATION_LAST_ATTRIBUTE: int -X_nvCtrlQueryExtension: int -X_nvCtrlQueryAttribute: int -X_nvCtrlQueryStringAttribute: int -X_nvCtrlQueryValidAttributeValues: int -X_nvCtrlSetStringAttribute: int -X_nvCtrlSetAttributeAndGetStatus: int -X_nvCtrlQueryBinaryData: int -X_nvCtrlQueryTargetCount: int -X_nvCtrlStringOperation: int -ATTRIBUTE_TYPE_UNKNOWN: int -ATTRIBUTE_TYPE_INTEGER: int -ATTRIBUTE_TYPE_BITMASK: int -ATTRIBUTE_TYPE_BOOL: int -ATTRIBUTE_TYPE_RANGE: int -ATTRIBUTE_TYPE_INT_BITS: int -ATTRIBUTE_TYPE_READ: int -ATTRIBUTE_TYPE_WRITE: int -ATTRIBUTE_TYPE_DISPLAY: int -ATTRIBUTE_TYPE_GPU: int -ATTRIBUTE_TYPE_FRAMELOCK: int -ATTRIBUTE_TYPE_X_SCREEN: int -ATTRIBUTE_TYPE_XINERAMA: int -ATTRIBUTE_TYPE_VCSC: int -NV_CTRL_TARGET_TYPE_X_SCREEN: int -NV_CTRL_TARGET_TYPE_GPU: int -NV_CTRL_TARGET_TYPE_FRAMELOCK: int -NV_CTRL_TARGET_TYPE_VCSC: int -NV_CTRL_TARGET_TYPE_GVI: int -NV_CTRL_TARGET_TYPE_COOLER: int -NV_CTRL_TARGET_TYPE_THERMAL_SENSOR: int -NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER: int -NV_CTRL_TARGET_TYPE_DISPLAY: int +NV_CTRL_FLATPANEL_SCALING: Final = 2 +NV_CTRL_FLATPANEL_SCALING_DEFAULT: Final = 0 +NV_CTRL_FLATPANEL_SCALING_NATIVE: Final = 1 +NV_CTRL_FLATPANEL_SCALING_SCALED: Final = 2 +NV_CTRL_FLATPANEL_SCALING_CENTERED: Final = 3 +NV_CTRL_FLATPANEL_SCALING_ASPECT_SCALED: Final = 4 +NV_CTRL_FLATPANEL_DITHERING: Final = 3 +NV_CTRL_FLATPANEL_DITHERING_DEFAULT: Final = 0 +NV_CTRL_FLATPANEL_DITHERING_ENABLED: Final = 1 +NV_CTRL_FLATPANEL_DITHERING_DISABLED: Final = 2 +NV_CTRL_DITHERING: Final = 3 +NV_CTRL_DITHERING_AUTO: Final = 0 +NV_CTRL_DITHERING_ENABLED: Final = 1 +NV_CTRL_DITHERING_DISABLED: Final = 2 +NV_CTRL_DIGITAL_VIBRANCE: Final = 4 +NV_CTRL_BUS_TYPE: Final = 5 +NV_CTRL_BUS_TYPE_AGP: Final = 0 +NV_CTRL_BUS_TYPE_PCI: Final = 1 +NV_CTRL_BUS_TYPE_PCI_EXPRESS: Final = 2 +NV_CTRL_BUS_TYPE_INTEGRATED: Final = 3 +NV_CTRL_TOTAL_GPU_MEMORY: Final = 6 +NV_CTRL_VIDEO_RAM: Final = NV_CTRL_TOTAL_GPU_MEMORY +NV_CTRL_IRQ: Final = 7 +NV_CTRL_OPERATING_SYSTEM: Final = 8 +NV_CTRL_OPERATING_SYSTEM_LINUX: Final = 0 +NV_CTRL_OPERATING_SYSTEM_FREEBSD: Final = 1 +NV_CTRL_OPERATING_SYSTEM_SUNOS: Final = 2 +NV_CTRL_SYNC_TO_VBLANK: Final = 9 +NV_CTRL_SYNC_TO_VBLANK_OFF: Final = 0 +NV_CTRL_SYNC_TO_VBLANK_ON: Final = 1 +NV_CTRL_LOG_ANISO: Final = 10 +NV_CTRL_FSAA_MODE: Final = 11 +NV_CTRL_FSAA_MODE_NONE: Final = 0 +NV_CTRL_FSAA_MODE_2x: Final = 1 +NV_CTRL_FSAA_MODE_2x_5t: Final = 2 +NV_CTRL_FSAA_MODE_15x15: Final = 3 +NV_CTRL_FSAA_MODE_2x2: Final = 4 +NV_CTRL_FSAA_MODE_4x: Final = 5 +NV_CTRL_FSAA_MODE_4x_9t: Final = 6 +NV_CTRL_FSAA_MODE_8x: Final = 7 +NV_CTRL_FSAA_MODE_16x: Final = 8 +NV_CTRL_FSAA_MODE_8xS: Final = 9 +NV_CTRL_FSAA_MODE_8xQ: Final = 10 +NV_CTRL_FSAA_MODE_16xS: Final = 11 +NV_CTRL_FSAA_MODE_16xQ: Final = 12 +NV_CTRL_FSAA_MODE_32xS: Final = 13 +NV_CTRL_FSAA_MODE_32x: Final = 14 +NV_CTRL_FSAA_MODE_64xS: Final = 15 +NV_CTRL_FSAA_MODE_MAX: Final = NV_CTRL_FSAA_MODE_64xS +NV_CTRL_UBB: Final = 13 +NV_CTRL_UBB_OFF: Final = 0 +NV_CTRL_UBB_ON: Final = 1 +NV_CTRL_OVERLAY: Final = 14 +NV_CTRL_OVERLAY_OFF: Final = 0 +NV_CTRL_OVERLAY_ON: Final = 1 +NV_CTRL_STEREO: Final = 16 +NV_CTRL_STEREO_OFF: Final = 0 +NV_CTRL_STEREO_DDC: Final = 1 +NV_CTRL_STEREO_BLUELINE: Final = 2 +NV_CTRL_STEREO_DIN: Final = 3 +NV_CTRL_STEREO_PASSIVE_EYE_PER_DPY: Final = 4 +NV_CTRL_STEREO_VERTICAL_INTERLACED: Final = 5 +NV_CTRL_STEREO_COLOR_INTERLACED: Final = 6 +NV_CTRL_STEREO_HORIZONTAL_INTERLACED: Final = 7 +NV_CTRL_STEREO_CHECKERBOARD_PATTERN: Final = 8 +NV_CTRL_STEREO_INVERSE_CHECKERBOARD_PATTERN: Final = 9 +NV_CTRL_STEREO_3D_VISION: Final = 10 +NV_CTRL_STEREO_3D_VISION_PRO: Final = 11 +NV_CTRL_STEREO_HDMI_3D: Final = 12 +NV_CTRL_STEREO_TRIDELITY_SL: Final = 13 +NV_CTRL_STEREO_INBAND_STEREO_SIGNALING: Final = 14 +NV_CTRL_STEREO_MAX: Final = NV_CTRL_STEREO_INBAND_STEREO_SIGNALING +NV_CTRL_EMULATE: Final = 17 +NV_CTRL_EMULATE_NONE: Final = 0 +NV_CTRL_TWINVIEW: Final = 18 +NV_CTRL_TWINVIEW_NOT_ENABLED: Final = 0 +NV_CTRL_TWINVIEW_ENABLED: Final = 1 +NV_CTRL_CONNECTED_DISPLAYS: Final = 19 +NV_CTRL_ENABLED_DISPLAYS: Final = 20 +NV_CTRL_FRAMELOCK: Final = 21 +NV_CTRL_FRAMELOCK_NOT_SUPPORTED: Final = 0 +NV_CTRL_FRAMELOCK_SUPPORTED: Final = 1 +NV_CTRL_FRAMELOCK_MASTER: Final = 22 +NV_CTRL_FRAMELOCK_MASTER_FALSE: Final = 0 +NV_CTRL_FRAMELOCK_MASTER_TRUE: Final = 1 +NV_CTRL_FRAMELOCK_POLARITY: Final = 23 +NV_CTRL_FRAMELOCK_POLARITY_RISING_EDGE: Final = 0x1 +NV_CTRL_FRAMELOCK_POLARITY_FALLING_EDGE: Final = 0x2 +NV_CTRL_FRAMELOCK_POLARITY_BOTH_EDGES: Final = 0x3 +NV_CTRL_FRAMELOCK_SYNC_DELAY: Final = 24 +NV_CTRL_FRAMELOCK_SYNC_DELAY_MAX: Final = 2047 +NV_CTRL_FRAMELOCK_SYNC_DELAY_FACTOR: Final[float] +NV_CTRL_FRAMELOCK_SYNC_INTERVAL: Final = 25 +NV_CTRL_FRAMELOCK_PORT0_STATUS: Final = 26 +NV_CTRL_FRAMELOCK_PORT0_STATUS_INPUT: Final = 0 +NV_CTRL_FRAMELOCK_PORT0_STATUS_OUTPUT: Final = 1 +NV_CTRL_FRAMELOCK_PORT1_STATUS: Final = 27 +NV_CTRL_FRAMELOCK_PORT1_STATUS_INPUT: Final = 0 +NV_CTRL_FRAMELOCK_PORT1_STATUS_OUTPUT: Final = 1 +NV_CTRL_FRAMELOCK_HOUSE_STATUS: Final = 28 +NV_CTRL_FRAMELOCK_HOUSE_STATUS_NOT_DETECTED: Final = 0 +NV_CTRL_FRAMELOCK_HOUSE_STATUS_DETECTED: Final = 1 +NV_CTRL_FRAMELOCK_SYNC: Final = 29 +NV_CTRL_FRAMELOCK_SYNC_DISABLE: Final = 0 +NV_CTRL_FRAMELOCK_SYNC_ENABLE: Final = 1 +NV_CTRL_FRAMELOCK_SYNC_READY: Final = 30 +NV_CTRL_FRAMELOCK_SYNC_READY_FALSE: Final = 0 +NV_CTRL_FRAMELOCK_SYNC_READY_TRUE: Final = 1 +NV_CTRL_FRAMELOCK_STEREO_SYNC: Final = 31 +NV_CTRL_FRAMELOCK_STEREO_SYNC_FALSE: Final = 0 +NV_CTRL_FRAMELOCK_STEREO_SYNC_TRUE: Final = 1 +NV_CTRL_FRAMELOCK_TEST_SIGNAL: Final = 32 +NV_CTRL_FRAMELOCK_TEST_SIGNAL_DISABLE: Final = 0 +NV_CTRL_FRAMELOCK_TEST_SIGNAL_ENABLE: Final = 1 +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED: Final = 33 +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_NONE: Final = 0 +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT0: Final = 0x1 +NV_CTRL_FRAMELOCK_ETHERNET_DETECTED_PORT1: Final = 0x2 +NV_CTRL_FRAMELOCK_VIDEO_MODE: Final = 34 +NV_CTRL_FRAMELOCK_VIDEO_MODE_NONE: Final = 0 +NV_CTRL_FRAMELOCK_VIDEO_MODE_TTL: Final = 1 +NV_CTRL_FRAMELOCK_VIDEO_MODE_NTSCPALSECAM: Final = 2 +NV_CTRL_FRAMELOCK_VIDEO_MODE_HDTV: Final = 3 +NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_AUTO: Final = 0 +NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_BI_LEVEL: Final = 2 +NV_CTRL_FRAMELOCK_VIDEO_MODE_COMPOSITE_TRI_LEVEL: Final = 3 +NV_CTRL_FRAMELOCK_SYNC_RATE: Final = 35 +NV_CTRL_FORCE_GENERIC_CPU: Final = 37 +NV_CTRL_FORCE_GENERIC_CPU_DISABLE: Final = 0 +NV_CTRL_FORCE_GENERIC_CPU_ENABLE: Final = 1 +NV_CTRL_OPENGL_AA_LINE_GAMMA: Final = 38 +NV_CTRL_OPENGL_AA_LINE_GAMMA_DISABLE: Final = 0 +NV_CTRL_OPENGL_AA_LINE_GAMMA_ENABLE: Final = 1 +NV_CTRL_FRAMELOCK_TIMING: Final = 39 +NV_CTRL_FRAMELOCK_TIMING_FALSE: Final = 0 +NV_CTRL_FRAMELOCK_TIMING_TRUE: Final = 1 +NV_CTRL_FLIPPING_ALLOWED: Final = 40 +NV_CTRL_FLIPPING_ALLOWED_FALSE: Final = 0 +NV_CTRL_FLIPPING_ALLOWED_TRUE: Final = 1 +NV_CTRL_ARCHITECTURE: Final = 41 +NV_CTRL_ARCHITECTURE_X86: Final = 0 +NV_CTRL_ARCHITECTURE_X86_64: Final = 1 +NV_CTRL_ARCHITECTURE_IA64: Final = 2 +NV_CTRL_ARCHITECTURE_ARM: Final = 3 +NV_CTRL_ARCHITECTURE_AARCH64: Final = 4 +NV_CTRL_ARCHITECTURE_PPC64LE: Final = 5 +NV_CTRL_TEXTURE_CLAMPING: Final = 42 +NV_CTRL_TEXTURE_CLAMPING_EDGE: Final = 0 +NV_CTRL_TEXTURE_CLAMPING_SPEC: Final = 1 +NV_CTRL_CURSOR_SHADOW: Final = 43 +NV_CTRL_CURSOR_SHADOW_DISABLE: Final = 0 +NV_CTRL_CURSOR_SHADOW_ENABLE: Final = 1 +NV_CTRL_CURSOR_SHADOW_ALPHA: Final = 44 +NV_CTRL_CURSOR_SHADOW_RED: Final = 45 +NV_CTRL_CURSOR_SHADOW_GREEN: Final = 46 +NV_CTRL_CURSOR_SHADOW_BLUE: Final = 47 +NV_CTRL_CURSOR_SHADOW_X_OFFSET: Final = 48 +NV_CTRL_CURSOR_SHADOW_Y_OFFSET: Final = 49 +NV_CTRL_FSAA_APPLICATION_CONTROLLED: Final = 50 +NV_CTRL_FSAA_APPLICATION_CONTROLLED_ENABLED: Final = 1 +NV_CTRL_FSAA_APPLICATION_CONTROLLED_DISABLED: Final = 0 +NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED: Final = 51 +NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_ENABLED: Final = 1 +NV_CTRL_LOG_ANISO_APPLICATION_CONTROLLED_DISABLED: Final = 0 +NV_CTRL_IMAGE_SHARPENING: Final = 52 +NV_CTRL_TV_OVERSCAN: Final = 53 +NV_CTRL_TV_FLICKER_FILTER: Final = 54 +NV_CTRL_TV_BRIGHTNESS: Final = 55 +NV_CTRL_TV_HUE: Final = 56 +NV_CTRL_TV_CONTRAST: Final = 57 +NV_CTRL_TV_SATURATION: Final = 58 +NV_CTRL_TV_RESET_SETTINGS: Final = 59 +NV_CTRL_GPU_CORE_TEMPERATURE: Final = 60 +NV_CTRL_GPU_CORE_THRESHOLD: Final = 61 +NV_CTRL_GPU_DEFAULT_CORE_THRESHOLD: Final = 62 +NV_CTRL_GPU_MAX_CORE_THRESHOLD: Final = 63 +NV_CTRL_AMBIENT_TEMPERATURE: Final = 64 +NV_CTRL_PBUFFER_SCANOUT_SUPPORTED: Final = 65 +NV_CTRL_PBUFFER_SCANOUT_FALSE: Final = 0 +NV_CTRL_PBUFFER_SCANOUT_TRUE: Final = 1 +NV_CTRL_PBUFFER_SCANOUT_XID: Final = 66 +NV_CTRL_GVO_SUPPORTED: Final = 67 +NV_CTRL_GVO_SUPPORTED_FALSE: Final = 0 +NV_CTRL_GVO_SUPPORTED_TRUE: Final = 1 +NV_CTRL_GVO_SYNC_MODE: Final = 68 +NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING: Final = 0 +NV_CTRL_GVO_SYNC_MODE_GENLOCK: Final = 1 +NV_CTRL_GVO_SYNC_MODE_FRAMELOCK: Final = 2 +NV_CTRL_GVO_SYNC_SOURCE: Final = 69 +NV_CTRL_GVO_SYNC_SOURCE_COMPOSITE: Final = 0 +NV_CTRL_GVO_SYNC_SOURCE_SDI: Final = 1 +NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT: Final = 70 +NV_CTRL_GVIO_VIDEO_FORMAT_NONE: Final = 0 +NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC: Final = 1 +NV_CTRL_GVIO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL: Final = 2 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_59_94_SMPTE296: Final = 3 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_60_00_SMPTE296: Final = 4 +NV_CTRL_GVIO_VIDEO_FORMAT_1035I_59_94_SMPTE260: Final = 5 +NV_CTRL_GVIO_VIDEO_FORMAT_1035I_60_00_SMPTE260: Final = 6 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE295: Final = 7 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_SMPTE274: Final = 8 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_SMPTE274: Final = 9 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_SMPTE274: Final = 10 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_976_SMPTE274: Final = 11 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_SMPTE274: Final = 12 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_SMPTE274: Final = 13 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_SMPTE274: Final = 14 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_SMPTE274: Final = 15 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_50_00_SMPTE296: Final = 16 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_SMPTE274: Final = 17 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_SMPTE274: Final = 18 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_30_00_SMPTE296: Final = 19 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_29_97_SMPTE296: Final = 20 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_25_00_SMPTE296: Final = 21 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_24_00_SMPTE296: Final = 22 +NV_CTRL_GVIO_VIDEO_FORMAT_720P_23_98_SMPTE296: Final = 23 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274: Final = 24 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274: Final = 25 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274: Final = 26 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274: Final = 27 +NV_CTRL_GVIO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274: Final = 28 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_SMPTE372: Final = 29 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_SMPTE372: Final = 30 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_SMPTE372: Final = 31 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_SMPTE372: Final = 32 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_SMPTE372: Final = 33 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_SMPTE372: Final = 34 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_SMPTE372: Final = 35 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_SMPTE372: Final = 36 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_SMPTE372: Final = 37 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_SMPTE372: Final = 38 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_A_SMPTE274: Final = 39 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_A_SMPTE274: Final = 40 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_A_SMPTE274: Final = 41 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_60_00_3G_LEVEL_B_SMPTE274: Final = 42 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_60_00_3G_LEVEL_B_SMPTE274: Final = 43 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_60_00_3G_LEVEL_B_SMPTE372: Final = 44 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_50_00_3G_LEVEL_B_SMPTE274: Final = 45 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_50_00_3G_LEVEL_B_SMPTE274: Final = 46 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_50_00_3G_LEVEL_B_SMPTE372: Final = 47 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_30_00_3G_LEVEL_B_SMPTE274: Final = 48 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_30_00_3G_LEVEL_B_SMPTE372: Final = 49 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_25_00_3G_LEVEL_B_SMPTE274: Final = 50 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_25_00_3G_LEVEL_B_SMPTE372: Final = 51 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_24_00_3G_LEVEL_B_SMPTE274: Final = 52 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_24_00_3G_LEVEL_B_SMPTE372: Final = 53 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_48_00_3G_LEVEL_B_SMPTE274: Final = 54 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_48_00_3G_LEVEL_B_SMPTE372: Final = 55 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_59_94_3G_LEVEL_B_SMPTE274: Final = 56 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_59_94_3G_LEVEL_B_SMPTE274: Final = 57 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_59_94_3G_LEVEL_B_SMPTE372: Final = 58 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_29_97_3G_LEVEL_B_SMPTE274: Final = 59 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_29_97_3G_LEVEL_B_SMPTE372: Final = 60 +NV_CTRL_GVIO_VIDEO_FORMAT_1080P_23_98_3G_LEVEL_B_SMPTE274: Final = 61 +NV_CTRL_GVIO_VIDEO_FORMAT_2048P_23_98_3G_LEVEL_B_SMPTE372: Final = 62 +NV_CTRL_GVIO_VIDEO_FORMAT_1080I_47_96_3G_LEVEL_B_SMPTE274: Final = 63 +NV_CTRL_GVIO_VIDEO_FORMAT_2048I_47_96_3G_LEVEL_B_SMPTE372: Final = 64 +NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT: Final = 70 +NV_CTRL_GVO_VIDEO_FORMAT_NONE: Final = 0 +NV_CTRL_GVO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC: Final = 1 +NV_CTRL_GVO_VIDEO_FORMAT_576I_50_00_SMPTE259_PAL: Final = 2 +NV_CTRL_GVO_VIDEO_FORMAT_720P_59_94_SMPTE296: Final = 3 +NV_CTRL_GVO_VIDEO_FORMAT_720P_60_00_SMPTE296: Final = 4 +NV_CTRL_GVO_VIDEO_FORMAT_1035I_59_94_SMPTE260: Final = 5 +NV_CTRL_GVO_VIDEO_FORMAT_1035I_60_00_SMPTE260: Final = 6 +NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE295: Final = 7 +NV_CTRL_GVO_VIDEO_FORMAT_1080I_50_00_SMPTE274: Final = 8 +NV_CTRL_GVO_VIDEO_FORMAT_1080I_59_94_SMPTE274: Final = 9 +NV_CTRL_GVO_VIDEO_FORMAT_1080I_60_00_SMPTE274: Final = 10 +NV_CTRL_GVO_VIDEO_FORMAT_1080P_23_976_SMPTE274: Final = 11 +NV_CTRL_GVO_VIDEO_FORMAT_1080P_24_00_SMPTE274: Final = 12 +NV_CTRL_GVO_VIDEO_FORMAT_1080P_25_00_SMPTE274: Final = 13 +NV_CTRL_GVO_VIDEO_FORMAT_1080P_29_97_SMPTE274: Final = 14 +NV_CTRL_GVO_VIDEO_FORMAT_1080P_30_00_SMPTE274: Final = 15 +NV_CTRL_GVO_VIDEO_FORMAT_720P_50_00_SMPTE296: Final = 16 +NV_CTRL_GVO_VIDEO_FORMAT_1080I_48_00_SMPTE274: Final = 17 +NV_CTRL_GVO_VIDEO_FORMAT_1080I_47_96_SMPTE274: Final = 18 +NV_CTRL_GVO_VIDEO_FORMAT_720P_30_00_SMPTE296: Final = 19 +NV_CTRL_GVO_VIDEO_FORMAT_720P_29_97_SMPTE296: Final = 20 +NV_CTRL_GVO_VIDEO_FORMAT_720P_25_00_SMPTE296: Final = 21 +NV_CTRL_GVO_VIDEO_FORMAT_720P_24_00_SMPTE296: Final = 22 +NV_CTRL_GVO_VIDEO_FORMAT_720P_23_98_SMPTE296: Final = 23 +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_25_00_SMPTE274: Final = 24 +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_29_97_SMPTE274: Final = 25 +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_30_00_SMPTE274: Final = 26 +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_24_00_SMPTE274: Final = 27 +NV_CTRL_GVO_VIDEO_FORMAT_1080PSF_23_98_SMPTE274: Final = 28 +NV_CTRL_GVO_VIDEO_FORMAT_2048P_30_00_SMPTE372: Final = 29 +NV_CTRL_GVO_VIDEO_FORMAT_2048P_29_97_SMPTE372: Final = 30 +NV_CTRL_GVO_VIDEO_FORMAT_2048I_60_00_SMPTE372: Final = 31 +NV_CTRL_GVO_VIDEO_FORMAT_2048I_59_94_SMPTE372: Final = 32 +NV_CTRL_GVO_VIDEO_FORMAT_2048P_25_00_SMPTE372: Final = 33 +NV_CTRL_GVO_VIDEO_FORMAT_2048I_50_00_SMPTE372: Final = 34 +NV_CTRL_GVO_VIDEO_FORMAT_2048P_24_00_SMPTE372: Final = 35 +NV_CTRL_GVO_VIDEO_FORMAT_2048P_23_98_SMPTE372: Final = 36 +NV_CTRL_GVO_VIDEO_FORMAT_2048I_48_00_SMPTE372: Final = 37 +NV_CTRL_GVO_VIDEO_FORMAT_2048I_47_96_SMPTE372: Final = 38 +NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT: Final = 71 +NV_CTRL_GVO_INPUT_VIDEO_FORMAT: Final = 71 +NV_CTRL_GVO_DATA_FORMAT: Final = 72 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444: Final = 0 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4444: Final = 1 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4444: Final = 2 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB422: Final = 3 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4224: Final = 4 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_YCRCBZ4224: Final = 5 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_RGB444: Final = 6 +NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU: Final = 6 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_RGBA4444: Final = 7 +NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4444_PASSTHRU: Final = 7 +NV_CTRL_GVO_DATA_FORMAT_R8G8B8Z10_TO_RGBZ4444: Final = 8 +NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4444_PASSTHRU: Final = 8 +NV_CTRL_GVO_DATA_FORMAT_Y10CR10CB10_TO_YCRCB444: Final = 9 +NV_CTRL_GVO_DATA_FORMAT_X10X10X10_444_PASSTHRU: Final = 9 +NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8_TO_YCRCB444: Final = 10 +NV_CTRL_GVO_DATA_FORMAT_X10X8X8_444_PASSTHRU: Final = 10 +NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8A10_TO_YCRCBA4444: Final = 11 +NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4444_PASSTHRU: Final = 11 +NV_CTRL_GVO_DATA_FORMAT_Y10CR8CB8Z10_TO_YCRCBZ4444: Final = 12 +NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4444_PASSTHRU: Final = 12 +NV_CTRL_GVO_DATA_FORMAT_DUAL_R8G8B8_TO_DUAL_YCRCB422: Final = 13 +NV_CTRL_GVO_DATA_FORMAT_DUAL_Y8CR8CB8_TO_DUAL_YCRCB422: Final = 14 +NV_CTRL_GVO_DATA_FORMAT_DUAL_X8X8X8_TO_DUAL_422_PASSTHRU: Final = 14 +NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB422: Final = 15 +NV_CTRL_GVO_DATA_FORMAT_R10G10B10_TO_YCRCB444: Final = 16 +NV_CTRL_GVO_DATA_FORMAT_Y12CR12CB12_TO_YCRCB444: Final = 17 +NV_CTRL_GVO_DATA_FORMAT_X12X12X12_444_PASSTHRU: Final = 17 +NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB444: Final = 18 +NV_CTRL_GVO_DATA_FORMAT_X8X8X8_422_PASSTHRU: Final = 19 +NV_CTRL_GVO_DATA_FORMAT_X8X8X8A8_4224_PASSTHRU: Final = 20 +NV_CTRL_GVO_DATA_FORMAT_X8X8X8Z8_4224_PASSTHRU: Final = 21 +NV_CTRL_GVO_DATA_FORMAT_X10X10X10_422_PASSTHRU: Final = 22 +NV_CTRL_GVO_DATA_FORMAT_X10X8X8_422_PASSTHRU: Final = 23 +NV_CTRL_GVO_DATA_FORMAT_X10X8X8A10_4224_PASSTHRU: Final = 24 +NV_CTRL_GVO_DATA_FORMAT_X10X8X8Z10_4224_PASSTHRU: Final = 25 +NV_CTRL_GVO_DATA_FORMAT_X12X12X12_422_PASSTHRU: Final = 26 +NV_CTRL_GVO_DATA_FORMAT_R12G12B12_TO_YCRCB422: Final = 27 +NV_CTRL_GVO_DISPLAY_X_SCREEN: Final = 73 +NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE: Final = 1 +NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE: Final = 0 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED: Final = 74 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_FALSE: Final = 0 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED_TRUE: Final = 1 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE: Final = 75 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_AUTO: Final = 0 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_BI_LEVEL: Final = 1 +NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECT_MODE_TRI_LEVEL: Final = 2 +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED: Final = 76 +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE: Final = 0 +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD: Final = 1 +NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD: Final = 2 +NV_CTRL_GVO_VIDEO_OUTPUTS: Final = 77 +NV_CTRL_GVO_VIDEO_OUTPUTS_NONE: Final = 0 +NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO1: Final = 1 +NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO2: Final = 2 +NV_CTRL_GVO_VIDEO_OUTPUTS_VIDEO_BOTH: Final = 3 +NV_CTRL_GVO_FIRMWARE_VERSION: Final = 78 +NV_CTRL_GVO_SYNC_DELAY_PIXELS: Final = 79 +NV_CTRL_GVO_SYNC_DELAY_LINES: Final = 80 +NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE: Final = 81 +NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_FALSE: Final = 0 +NV_CTRL_GVO_INPUT_VIDEO_FORMAT_REACQUIRE_TRUE: Final = 1 +NV_CTRL_GVO_GLX_LOCKED: Final = 82 +NV_CTRL_GVO_GLX_LOCKED_FALSE: Final = 0 +NV_CTRL_GVO_GLX_LOCKED_TRUE: Final = 1 +NV_CTRL_GVIO_VIDEO_FORMAT_WIDTH: Final = 83 +NV_CTRL_GVIO_VIDEO_FORMAT_HEIGHT: Final = 84 +NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE: Final = 85 +NV_CTRL_GVO_VIDEO_FORMAT_WIDTH: Final = 83 +NV_CTRL_GVO_VIDEO_FORMAT_HEIGHT: Final = 84 +NV_CTRL_GVO_VIDEO_FORMAT_REFRESH_RATE: Final = 85 +NV_CTRL_GVO_X_SCREEN_PAN_X: Final = 86 +NV_CTRL_GVO_X_SCREEN_PAN_Y: Final = 87 +NV_CTRL_GPU_OVERCLOCKING_STATE: Final = 88 +NV_CTRL_GPU_OVERCLOCKING_STATE_NONE: Final = 0 +NV_CTRL_GPU_OVERCLOCKING_STATE_MANUAL: Final = 1 +NV_CTRL_GPU_2D_CLOCK_FREQS: Final = 89 +NV_CTRL_GPU_3D_CLOCK_FREQS: Final = 90 +NV_CTRL_GPU_DEFAULT_2D_CLOCK_FREQS: Final = 91 +NV_CTRL_GPU_DEFAULT_3D_CLOCK_FREQS: Final = 92 +NV_CTRL_GPU_CURRENT_CLOCK_FREQS: Final = 93 +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS: Final = 94 +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_INVALID: Final = 0 +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION: Final = 95 +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_START: Final = 0 +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_CANCEL: Final = 1 +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE: Final = 96 +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_IDLE: Final = 0 +NV_CTRL_GPU_OPTIMAL_CLOCK_FREQS_DETECTION_STATE_BUSY: Final = 1 +NV_CTRL_FLATPANEL_CHIP_LOCATION: Final = 215 +NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL: Final = 0 +NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL: Final = 1 +NV_CTRL_FLATPANEL_LINK: Final = 216 +NV_CTRL_FLATPANEL_LINK_SINGLE: Final = 0 +NV_CTRL_FLATPANEL_LINK_DUAL: Final = 1 +NV_CTRL_FLATPANEL_LINK_QUAD: Final = 3 +NV_CTRL_FLATPANEL_SIGNAL: Final = 217 +NV_CTRL_FLATPANEL_SIGNAL_LVDS: Final = 0 +NV_CTRL_FLATPANEL_SIGNAL_TMDS: Final = 1 +NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT: Final = 2 +NV_CTRL_USE_HOUSE_SYNC: Final = 218 +NV_CTRL_USE_HOUSE_SYNC_DISABLED: Final = 0 +NV_CTRL_USE_HOUSE_SYNC_INPUT: Final = 1 +NV_CTRL_USE_HOUSE_SYNC_OUTPUT: Final = 2 +NV_CTRL_USE_HOUSE_SYNC_FALSE: Final = 0 +NV_CTRL_USE_HOUSE_SYNC_TRUE: Final = 1 +NV_CTRL_EDID_AVAILABLE: Final = 219 +NV_CTRL_EDID_AVAILABLE_FALSE: Final = 0 +NV_CTRL_EDID_AVAILABLE_TRUE: Final = 1 +NV_CTRL_FORCE_STEREO: Final = 220 +NV_CTRL_FORCE_STEREO_FALSE: Final = 0 +NV_CTRL_FORCE_STEREO_TRUE: Final = 1 +NV_CTRL_IMAGE_SETTINGS: Final = 221 +NV_CTRL_IMAGE_SETTINGS_HIGH_QUALITY: Final = 0 +NV_CTRL_IMAGE_SETTINGS_QUALITY: Final = 1 +NV_CTRL_IMAGE_SETTINGS_PERFORMANCE: Final = 2 +NV_CTRL_IMAGE_SETTINGS_HIGH_PERFORMANCE: Final = 3 +NV_CTRL_XINERAMA: Final = 222 +NV_CTRL_XINERAMA_OFF: Final = 0 +NV_CTRL_XINERAMA_ON: Final = 1 +NV_CTRL_XINERAMA_STEREO: Final = 223 +NV_CTRL_XINERAMA_STEREO_FALSE: Final = 0 +NV_CTRL_XINERAMA_STEREO_TRUE: Final = 1 +NV_CTRL_BUS_RATE: Final = 224 +NV_CTRL_GPU_PCIE_MAX_LINK_WIDTH: Final = NV_CTRL_BUS_RATE +NV_CTRL_SHOW_SLI_VISUAL_INDICATOR: Final = 225 +NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE: Final = 0 +NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE: Final = 1 +NV_CTRL_SHOW_SLI_HUD: Final = NV_CTRL_SHOW_SLI_VISUAL_INDICATOR +NV_CTRL_SHOW_SLI_HUD_FALSE: Final = NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_FALSE +NV_CTRL_SHOW_SLI_HUD_TRUE: Final = NV_CTRL_SHOW_SLI_VISUAL_INDICATOR_TRUE +NV_CTRL_XV_SYNC_TO_DISPLAY: Final = 226 +NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT2: Final = 227 +NV_CTRL_GVO_OUTPUT_VIDEO_FORMAT2: Final = 227 +NV_CTRL_GVO_OVERRIDE_HW_CSC: Final = 228 +NV_CTRL_GVO_OVERRIDE_HW_CSC_FALSE: Final = 0 +NV_CTRL_GVO_OVERRIDE_HW_CSC_TRUE: Final = 1 +NV_CTRL_GVO_CAPABILITIES: Final = 229 +NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_IMMEDIATELY: Final = 0x00000001 +NV_CTRL_GVO_CAPABILITIES_APPLY_CSC_TO_X_SCREEN: Final = 0x00000002 +NV_CTRL_GVO_CAPABILITIES_COMPOSITE_TERMINATION: Final = 0x00000004 +NV_CTRL_GVO_CAPABILITIES_SHARED_SYNC_BNC: Final = 0x00000008 +NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC: Final = 0x00000010 +NV_CTRL_GVO_CAPABILITIES_ADVANCE_SYNC_SKEW: Final = 0x00000020 +NV_CTRL_GVO_COMPOSITE_TERMINATION: Final = 230 +NV_CTRL_GVO_COMPOSITE_TERMINATION_ENABLE: Final = 1 +NV_CTRL_GVO_COMPOSITE_TERMINATION_DISABLE: Final = 0 +NV_CTRL_ASSOCIATED_DISPLAY_DEVICES: Final = 231 +NV_CTRL_FRAMELOCK_SLAVES: Final = 232 +NV_CTRL_FRAMELOCK_MASTERABLE: Final = 233 +NV_CTRL_PROBE_DISPLAYS: Final = 234 +NV_CTRL_REFRESH_RATE: Final = 235 +NV_CTRL_GVO_FLIP_QUEUE_SIZE: Final = 236 +NV_CTRL_CURRENT_SCANLINE: Final = 237 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT: Final = 238 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_FORCE_SYSMEM: Final = 0 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_SYSMEM: Final = 1 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_VIDMEM: Final = 2 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_RESERVED: Final = 3 +NV_CTRL_INITIAL_PIXMAP_PLACEMENT_GPU_SYSMEM: Final = 4 +NV_CTRL_PCI_BUS: Final = 239 +NV_CTRL_PCI_DEVICE: Final = 240 +NV_CTRL_PCI_FUNCTION: Final = 241 +NV_CTRL_FRAMELOCK_FPGA_REVISION: Final = 242 +NV_CTRL_MAX_SCREEN_WIDTH: Final = 243 +NV_CTRL_MAX_SCREEN_HEIGHT: Final = 244 +NV_CTRL_MAX_DISPLAYS: Final = 245 +NV_CTRL_DYNAMIC_TWINVIEW: Final = 246 +NV_CTRL_MULTIGPU_DISPLAY_OWNER: Final = 247 +NV_CTRL_GPU_SCALING: Final = 248 +NV_CTRL_GPU_SCALING_TARGET_INVALID: Final = 0 +NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT: Final = 1 +NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE: Final = 2 +NV_CTRL_GPU_SCALING_METHOD_INVALID: Final = 0 +NV_CTRL_GPU_SCALING_METHOD_STRETCHED: Final = 1 +NV_CTRL_GPU_SCALING_METHOD_CENTERED: Final = 2 +NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED: Final = 3 +NV_CTRL_FRONTEND_RESOLUTION: Final = 249 +NV_CTRL_BACKEND_RESOLUTION: Final = 250 +NV_CTRL_FLATPANEL_NATIVE_RESOLUTION: Final = 251 +NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION: Final = 252 +NV_CTRL_GPU_SCALING_ACTIVE: Final = 253 +NV_CTRL_DFP_SCALING_ACTIVE: Final = 254 +NV_CTRL_FSAA_APPLICATION_ENHANCED: Final = 255 +NV_CTRL_FSAA_APPLICATION_ENHANCED_ENABLED: Final = 1 +NV_CTRL_FSAA_APPLICATION_ENHANCED_DISABLED: Final = 0 +NV_CTRL_FRAMELOCK_SYNC_RATE_4: Final = 256 +NV_CTRL_GVO_LOCK_OWNER: Final = 257 +NV_CTRL_GVO_LOCK_OWNER_NONE: Final = 0 +NV_CTRL_GVO_LOCK_OWNER_GLX: Final = 1 +NV_CTRL_GVO_LOCK_OWNER_CLONE: Final = 2 +NV_CTRL_GVO_LOCK_OWNER_X_SCREEN: Final = 3 +NV_CTRL_HWOVERLAY: Final = 258 +NV_CTRL_HWOVERLAY_FALSE: Final = 0 +NV_CTRL_HWOVERLAY_TRUE: Final = 1 +NV_CTRL_NUM_GPU_ERRORS_RECOVERED: Final = 259 +NV_CTRL_REFRESH_RATE_3: Final = 260 +NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS: Final = 261 +NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_OFF: Final = 0 +NV_CTRL_ONDEMAND_VBLANK_INTERRUPTS_ON: Final = 1 +NV_CTRL_GPU_POWER_SOURCE: Final = 262 +NV_CTRL_GPU_POWER_SOURCE_AC: Final = 0 +NV_CTRL_GPU_POWER_SOURCE_BATTERY: Final = 1 +NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE: Final = 263 +NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_DESKTOP: Final = 0 +NV_CTRL_GPU_CURRENT_PERFORMANCE_MODE_MAXPERF: Final = 1 +NV_CTRL_GLYPH_CACHE: Final = 264 +NV_CTRL_GLYPH_CACHE_DISABLED: Final = 0 +NV_CTRL_GLYPH_CACHE_ENABLED: Final = 1 +NV_CTRL_GPU_CURRENT_PERFORMANCE_LEVEL: Final = 265 +NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE: Final = 266 +NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_DISABLED: Final = 0 +NV_CTRL_GPU_ADAPTIVE_CLOCK_STATE_ENABLED: Final = 1 +NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED: Final = 267 +NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_FALSE: Final = 0 +NV_CTRL_GVO_OUTPUT_VIDEO_LOCKED_TRUE: Final = 1 +NV_CTRL_GVO_SYNC_LOCK_STATUS: Final = 268 +NV_CTRL_GVO_SYNC_LOCK_STATUS_UNLOCKED: Final = 0 +NV_CTRL_GVO_SYNC_LOCK_STATUS_LOCKED: Final = 1 +NV_CTRL_GVO_ANC_TIME_CODE_GENERATION: Final = 269 +NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_DISABLE: Final = 0 +NV_CTRL_GVO_ANC_TIME_CODE_GENERATION_ENABLE: Final = 1 +NV_CTRL_GVO_COMPOSITE: Final = 270 +NV_CTRL_GVO_COMPOSITE_DISABLE: Final = 0 +NV_CTRL_GVO_COMPOSITE_ENABLE: Final = 1 +NV_CTRL_GVO_COMPOSITE_ALPHA_KEY: Final = 271 +NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_DISABLE: Final = 0 +NV_CTRL_GVO_COMPOSITE_ALPHA_KEY_ENABLE: Final = 1 +NV_CTRL_GVO_COMPOSITE_LUMA_KEY_RANGE: Final = 272 +NV_CTRL_GVO_COMPOSITE_CR_KEY_RANGE: Final = 273 +NV_CTRL_GVO_COMPOSITE_CB_KEY_RANGE: Final = 274 +NV_CTRL_GVO_COMPOSITE_NUM_KEY_RANGES: Final = 275 +NV_CTRL_SWITCH_TO_DISPLAYS: Final = 276 +NV_CTRL_NOTEBOOK_DISPLAY_CHANGE_LID_EVENT: Final = 277 +NV_CTRL_NOTEBOOK_INTERNAL_LCD: Final = 278 +NV_CTRL_DEPTH_30_ALLOWED: Final = 279 +NV_CTRL_MODE_SET_EVENT: Final = 280 +NV_CTRL_OPENGL_AA_LINE_GAMMA_VALUE: Final = 281 +NV_CTRL_VCSC_HIGH_PERF_MODE: Final = 282 +NV_CTRL_VCSC_HIGH_PERF_MODE_DISABLE: Final = 0 +NV_CTRL_VCSC_HIGH_PERF_MODE_ENABLE: Final = 1 +NV_CTRL_DISPLAYPORT_LINK_RATE: Final = 291 +NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED: Final = 0x0 +NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS: Final = 0x6 +NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS: Final = 0xA +NV_CTRL_STEREO_EYES_EXCHANGE: Final = 292 +NV_CTRL_STEREO_EYES_EXCHANGE_OFF: Final = 0 +NV_CTRL_STEREO_EYES_EXCHANGE_ON: Final = 1 +NV_CTRL_NO_SCANOUT: Final = 293 +NV_CTRL_NO_SCANOUT_DISABLED: Final = 0 +NV_CTRL_NO_SCANOUT_ENABLED: Final = 1 +NV_CTRL_GVO_CSC_CHANGED_EVENT: Final = 294 +NV_CTRL_FRAMELOCK_SLAVEABLE: Final = 295 +NV_CTRL_GVO_SYNC_TO_DISPLAY: Final = 296 +NV_CTRL_GVO_SYNC_TO_DISPLAY_DISABLE: Final = 0 +NV_CTRL_GVO_SYNC_TO_DISPLAY_ENABLE: Final = 1 +NV_CTRL_X_SERVER_UNIQUE_ID: Final = 297 +NV_CTRL_PIXMAP_CACHE: Final = 298 +NV_CTRL_PIXMAP_CACHE_DISABLE: Final = 0 +NV_CTRL_PIXMAP_CACHE_ENABLE: Final = 1 +NV_CTRL_PIXMAP_CACHE_ROUNDING_SIZE_KB: Final = 299 +NV_CTRL_IS_GVO_DISPLAY: Final = 300 +NV_CTRL_IS_GVO_DISPLAY_FALSE: Final = 0 +NV_CTRL_IS_GVO_DISPLAY_TRUE: Final = 1 +NV_CTRL_PCI_ID: Final = 301 +NV_CTRL_GVO_FULL_RANGE_COLOR: Final = 302 +NV_CTRL_GVO_FULL_RANGE_COLOR_DISABLED: Final = 0 +NV_CTRL_GVO_FULL_RANGE_COLOR_ENABLED: Final = 1 +NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE: Final = 303 +NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_FALSE: Final = 0 +NV_CTRL_SLI_MOSAIC_MODE_AVAILABLE_TRUE: Final = 1 +NV_CTRL_GVO_ENABLE_RGB_DATA: Final = 304 +NV_CTRL_GVO_ENABLE_RGB_DATA_DISABLE: Final = 0 +NV_CTRL_GVO_ENABLE_RGB_DATA_ENABLE: Final = 1 +NV_CTRL_IMAGE_SHARPENING_DEFAULT: Final = 305 +NV_CTRL_PCI_DOMAIN: Final = 306 +NV_CTRL_GVI_NUM_JACKS: Final = 307 +NV_CTRL_GVI_MAX_LINKS_PER_STREAM: Final = 308 +NV_CTRL_GVI_DETECTED_CHANNEL_BITS_PER_COMPONENT: Final = 309 +NV_CTRL_GVI_BITS_PER_COMPONENT_UNKNOWN: Final = 0 +NV_CTRL_GVI_BITS_PER_COMPONENT_8: Final = 1 +NV_CTRL_GVI_BITS_PER_COMPONENT_10: Final = 2 +NV_CTRL_GVI_BITS_PER_COMPONENT_12: Final = 3 +NV_CTRL_GVI_REQUESTED_STREAM_BITS_PER_COMPONENT: Final = 310 +NV_CTRL_GVI_DETECTED_CHANNEL_COMPONENT_SAMPLING: Final = 311 +NV_CTRL_GVI_COMPONENT_SAMPLING_UNKNOWN: Final = 0 +NV_CTRL_GVI_COMPONENT_SAMPLING_4444: Final = 1 +NV_CTRL_GVI_COMPONENT_SAMPLING_4224: Final = 2 +NV_CTRL_GVI_COMPONENT_SAMPLING_444: Final = 3 +NV_CTRL_GVI_COMPONENT_SAMPLING_422: Final = 4 +NV_CTRL_GVI_COMPONENT_SAMPLING_420: Final = 5 +NV_CTRL_GVI_REQUESTED_STREAM_COMPONENT_SAMPLING: Final = 312 +NV_CTRL_GVI_REQUESTED_STREAM_CHROMA_EXPAND: Final = 313 +NV_CTRL_GVI_CHROMA_EXPAND_FALSE: Final = 0 +NV_CTRL_GVI_CHROMA_EXPAND_TRUE: Final = 1 +NV_CTRL_GVI_DETECTED_CHANNEL_COLOR_SPACE: Final = 314 +NV_CTRL_GVI_COLOR_SPACE_UNKNOWN: Final = 0 +NV_CTRL_GVI_COLOR_SPACE_GBR: Final = 1 +NV_CTRL_GVI_COLOR_SPACE_GBRA: Final = 2 +NV_CTRL_GVI_COLOR_SPACE_GBRD: Final = 3 +NV_CTRL_GVI_COLOR_SPACE_YCBCR: Final = 4 +NV_CTRL_GVI_COLOR_SPACE_YCBCRA: Final = 5 +NV_CTRL_GVI_COLOR_SPACE_YCBCRD: Final = 6 +NV_CTRL_GVI_DETECTED_CHANNEL_LINK_ID: Final = 315 +NV_CTRL_GVI_LINK_ID_UNKNOWN: Final = 0xFFFF +NV_CTRL_GVI_DETECTED_CHANNEL_SMPTE352_IDENTIFIER: Final = 316 +NV_CTRL_GVI_GLOBAL_IDENTIFIER: Final = 317 +NV_CTRL_FRAMELOCK_SYNC_DELAY_RESOLUTION: Final = 318 +NV_CTRL_GPU_COOLER_MANUAL_CONTROL: Final = 319 +NV_CTRL_GPU_COOLER_MANUAL_CONTROL_FALSE: Final = 0 +NV_CTRL_GPU_COOLER_MANUAL_CONTROL_TRUE: Final = 1 +NV_CTRL_THERMAL_COOLER_LEVEL: Final = 320 +NV_CTRL_THERMAL_COOLER_LEVEL_SET_DEFAULT: Final = 321 +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE: Final = 322 +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_NONE: Final = 0 +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_TOGGLE: Final = 1 +NV_CTRL_THERMAL_COOLER_CONTROL_TYPE_VARIABLE: Final = 2 +NV_CTRL_THERMAL_COOLER_TARGET: Final = 323 +NV_CTRL_THERMAL_COOLER_TARGET_NONE: Final = 0 +NV_CTRL_THERMAL_COOLER_TARGET_GPU: Final = 1 +NV_CTRL_THERMAL_COOLER_TARGET_MEMORY: Final = 2 +NV_CTRL_THERMAL_COOLER_TARGET_POWER_SUPPLY: Final = 4 +NV_CTRL_THERMAL_COOLER_TARGET_GPU_RELATED: Final = 7 +NV_CTRL_GPU_ECC_SUPPORTED: Final = 324 +NV_CTRL_GPU_ECC_SUPPORTED_FALSE: Final = 0 +NV_CTRL_GPU_ECC_SUPPORTED_TRUE: Final = 1 +NV_CTRL_GPU_ECC_STATUS: Final = 325 +NV_CTRL_GPU_ECC_STATUS_DISABLED: Final = 0 +NV_CTRL_GPU_ECC_STATUS_ENABLED: Final = 1 +NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED: Final = 326 +NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_FALSE: Final = 0 +NV_CTRL_GPU_ECC_CONFIGURATION_SUPPORTED_TRUE: Final = 1 +NV_CTRL_GPU_ECC_CONFIGURATION: Final = 327 +NV_CTRL_GPU_ECC_CONFIGURATION_DISABLED: Final = 0 +NV_CTRL_GPU_ECC_CONFIGURATION_ENABLED: Final = 1 +NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION: Final = 328 +NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_DISABLED: Final = 0 +NV_CTRL_GPU_ECC_DEFAULT_CONFIGURATION_ENABLED: Final = 1 +NV_CTRL_GPU_ECC_SINGLE_BIT_ERRORS: Final = 329 +NV_CTRL_GPU_ECC_DOUBLE_BIT_ERRORS: Final = 330 +NV_CTRL_GPU_ECC_AGGREGATE_SINGLE_BIT_ERRORS: Final = 331 +NV_CTRL_GPU_ECC_AGGREGATE_DOUBLE_BIT_ERRORS: Final = 332 +NV_CTRL_GPU_ECC_RESET_ERROR_STATUS: Final = 333 +NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_VOLATILE: Final = 0x00000001 +NV_CTRL_GPU_ECC_RESET_ERROR_STATUS_AGGREGATE: Final = 0x00000002 +NV_CTRL_GPU_POWER_MIZER_MODE: Final = 334 +NV_CTRL_GPU_POWER_MIZER_MODE_ADAPTIVE: Final = 0 +NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCE: Final = 1 +NV_CTRL_GPU_POWER_MIZER_MODE_AUTO: Final = 2 +NV_CTRL_GPU_POWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCE: Final = 3 +NV_CTRL_GVI_SYNC_OUTPUT_FORMAT: Final = 335 +NV_CTRL_GVI_MAX_CHANNELS_PER_JACK: Final = 336 +NV_CTRL_GVI_MAX_STREAMS: Final = 337 +NV_CTRL_GVI_NUM_CAPTURE_SURFACES: Final = 338 +NV_CTRL_OVERSCAN_COMPENSATION: Final = 339 +NV_CTRL_GPU_PCIE_GENERATION: Final = 341 +NV_CTRL_GPU_PCIE_GENERATION1: Final = 0x00000001 +NV_CTRL_GPU_PCIE_GENERATION2: Final = 0x00000002 +NV_CTRL_GPU_PCIE_GENERATION3: Final = 0x00000003 +NV_CTRL_GVI_BOUND_GPU: Final = 342 +NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT3: Final = 343 +NV_CTRL_ACCELERATE_TRAPEZOIDS: Final = 344 +NV_CTRL_ACCELERATE_TRAPEZOIDS_DISABLE: Final = 0 +NV_CTRL_ACCELERATE_TRAPEZOIDS_ENABLE: Final = 1 +NV_CTRL_GPU_CORES: Final = 345 +NV_CTRL_GPU_MEMORY_BUS_WIDTH: Final = 346 +NV_CTRL_GVI_TEST_MODE: Final = 347 +NV_CTRL_GVI_TEST_MODE_DISABLE: Final = 0 +NV_CTRL_GVI_TEST_MODE_ENABLE: Final = 1 +NV_CTRL_COLOR_SPACE: Final = 348 +NV_CTRL_COLOR_SPACE_RGB: Final = 0 +NV_CTRL_COLOR_SPACE_YCbCr422: Final = 1 +NV_CTRL_COLOR_SPACE_YCbCr444: Final = 2 +NV_CTRL_COLOR_RANGE: Final = 349 +NV_CTRL_COLOR_RANGE_FULL: Final = 0 +NV_CTRL_COLOR_RANGE_LIMITED: Final = 1 +NV_CTRL_GPU_SCALING_DEFAULT_TARGET: Final = 350 +NV_CTRL_GPU_SCALING_DEFAULT_METHOD: Final = 351 +NV_CTRL_DITHERING_MODE: Final = 352 +NV_CTRL_DITHERING_MODE_AUTO: Final = 0 +NV_CTRL_DITHERING_MODE_DYNAMIC_2X2: Final = 1 +NV_CTRL_DITHERING_MODE_STATIC_2X2: Final = 2 +NV_CTRL_DITHERING_MODE_TEMPORAL: Final = 3 +NV_CTRL_CURRENT_DITHERING: Final = 353 +NV_CTRL_CURRENT_DITHERING_DISABLED: Final = 0 +NV_CTRL_CURRENT_DITHERING_ENABLED: Final = 1 +NV_CTRL_CURRENT_DITHERING_MODE: Final = 354 +NV_CTRL_CURRENT_DITHERING_MODE_NONE: Final = 0 +NV_CTRL_CURRENT_DITHERING_MODE_DYNAMIC_2X2: Final = 1 +NV_CTRL_CURRENT_DITHERING_MODE_STATIC_2X2: Final = 2 +NV_CTRL_CURRENT_DITHERING_MODE_TEMPORAL: Final = 3 +NV_CTRL_THERMAL_SENSOR_READING: Final = 355 +NV_CTRL_THERMAL_SENSOR_PROVIDER: Final = 356 +NV_CTRL_THERMAL_SENSOR_PROVIDER_NONE: Final = 0 +NV_CTRL_THERMAL_SENSOR_PROVIDER_GPU_INTERNAL: Final = 1 +NV_CTRL_THERMAL_SENSOR_PROVIDER_ADM1032: Final = 2 +NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7461: Final = 3 +NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX6649: Final = 4 +NV_CTRL_THERMAL_SENSOR_PROVIDER_MAX1617: Final = 5 +NV_CTRL_THERMAL_SENSOR_PROVIDER_LM99: Final = 6 +NV_CTRL_THERMAL_SENSOR_PROVIDER_LM89: Final = 7 +NV_CTRL_THERMAL_SENSOR_PROVIDER_LM64: Final = 8 +NV_CTRL_THERMAL_SENSOR_PROVIDER_G781: Final = 9 +NV_CTRL_THERMAL_SENSOR_PROVIDER_ADT7473: Final = 10 +NV_CTRL_THERMAL_SENSOR_PROVIDER_SBMAX6649: Final = 11 +NV_CTRL_THERMAL_SENSOR_PROVIDER_VBIOSEVT: Final = 12 +NV_CTRL_THERMAL_SENSOR_PROVIDER_OS: Final = 13 +NV_CTRL_THERMAL_SENSOR_PROVIDER_UNKNOWN: Final = 0xFFFFFFFF +NV_CTRL_THERMAL_SENSOR_TARGET: Final = 357 +NV_CTRL_THERMAL_SENSOR_TARGET_NONE: Final = 0 +NV_CTRL_THERMAL_SENSOR_TARGET_GPU: Final = 1 +NV_CTRL_THERMAL_SENSOR_TARGET_MEMORY: Final = 2 +NV_CTRL_THERMAL_SENSOR_TARGET_POWER_SUPPLY: Final = 4 +NV_CTRL_THERMAL_SENSOR_TARGET_BOARD: Final = 8 +NV_CTRL_THERMAL_SENSOR_TARGET_UNKNOWN: Final = 0xFFFFFFFF +NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR: Final = 358 +NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_FALSE: Final = 0 +NV_CTRL_SHOW_MULTIGPU_VISUAL_INDICATOR_TRUE: Final = 1 +NV_CTRL_GPU_CURRENT_PROCESSOR_CLOCK_FREQS: Final = 359 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS: Final = 360 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_NONE: Final = 0x00000000 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_INTERLACED: Final = 0x00000001 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PROGRESSIVE: Final = 0x00000002 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_PSF: Final = 0x00000004 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_A: Final = 0x00000008 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_LEVEL_B: Final = 0x00000010 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G: Final = 24 +NV_CTRL_GVIO_VIDEO_FORMAT_FLAGS_3G_1080P_NO_12BPC: Final = 0x00000020 +NV_CTRL_GPU_PCIE_MAX_LINK_SPEED: Final = 361 +NV_CTRL_3D_VISION_PRO_RESET_TRANSCEIVER_TO_FACTORY_SETTINGS: Final = 363 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL: Final = 364 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE: Final = 365 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_INVALID: Final = 0 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_LOW_RANGE: Final = 1 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_MEDIUM_RANGE: Final = 2 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_HIGH_RANGE: Final = 3 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_MODE_COUNT: Final = 4 +NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES: Final = 367 +NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_DISABLE: Final = 0 +NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES_ENABLE: Final = 1 +NV_CTRL_DITHERING_DEPTH: Final = 368 +NV_CTRL_DITHERING_DEPTH_AUTO: Final = 0 +NV_CTRL_DITHERING_DEPTH_6_BITS: Final = 1 +NV_CTRL_DITHERING_DEPTH_8_BITS: Final = 2 +NV_CTRL_CURRENT_DITHERING_DEPTH: Final = 369 +NV_CTRL_CURRENT_DITHERING_DEPTH_NONE: Final = 0 +NV_CTRL_CURRENT_DITHERING_DEPTH_6_BITS: Final = 1 +NV_CTRL_CURRENT_DITHERING_DEPTH_8_BITS: Final = 2 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_FREQUENCY: Final = 370 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_QUALITY: Final = 371 +NV_CTRL_3D_VISION_PRO_TRANSCEIVER_CHANNEL_COUNT: Final = 372 +NV_CTRL_3D_VISION_PRO_PAIR_GLASSES: Final = 373 +NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_STOP: Final = 0 +NV_CTRL_3D_VISION_PRO_PAIR_GLASSES_BEACON: Final = 0xFFFFFFFF +NV_CTRL_3D_VISION_PRO_UNPAIR_GLASSES: Final = 374 +NV_CTRL_3D_VISION_PRO_DISCOVER_GLASSES: Final = 375 +NV_CTRL_3D_VISION_PRO_IDENTIFY_GLASSES: Final = 376 +NV_CTRL_3D_VISION_PRO_GLASSES_SYNC_CYCLE: Final = 378 +NV_CTRL_3D_VISION_PRO_GLASSES_MISSED_SYNC_CYCLES: Final = 379 +NV_CTRL_3D_VISION_PRO_GLASSES_BATTERY_LEVEL: Final = 380 +NV_CTRL_GVO_ANC_PARITY_COMPUTATION: Final = 381 +NV_CTRL_GVO_ANC_PARITY_COMPUTATION_AUTO: Final = 0 +NV_CTRL_GVO_ANC_PARITY_COMPUTATION_ON: Final = 1 +NV_CTRL_GVO_ANC_PARITY_COMPUTATION_OFF: Final = 2 +NV_CTRL_3D_VISION_PRO_GLASSES_PAIR_EVENT: Final = 382 +NV_CTRL_3D_VISION_PRO_GLASSES_UNPAIR_EVENT: Final = 383 +NV_CTRL_GPU_PCIE_CURRENT_LINK_WIDTH: Final = 384 +NV_CTRL_GPU_PCIE_CURRENT_LINK_SPEED: Final = 385 +NV_CTRL_GVO_AUDIO_BLANKING: Final = 386 +NV_CTRL_GVO_AUDIO_BLANKING_DISABLE: Final = 0 +NV_CTRL_GVO_AUDIO_BLANKING_ENABLE: Final = 1 +NV_CTRL_CURRENT_METAMODE_ID: Final = 387 +NV_CTRL_DISPLAY_ENABLED: Final = 388 +NV_CTRL_DISPLAY_ENABLED_TRUE: Final = 1 +NV_CTRL_DISPLAY_ENABLED_FALSE: Final = 0 +NV_CTRL_FRAMELOCK_INCOMING_HOUSE_SYNC_RATE: Final = 389 +NV_CTRL_FXAA: Final = 390 +NV_CTRL_FXAA_DISABLE: Final = 0 +NV_CTRL_FXAA_ENABLE: Final = 1 +NV_CTRL_DISPLAY_RANDR_OUTPUT_ID: Final = 391 +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG: Final = 392 +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_DISABLED: Final = 0 +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_CLIENT: Final = 1 +NV_CTRL_FRAMELOCK_DISPLAY_CONFIG_SERVER: Final = 2 +NV_CTRL_TOTAL_DEDICATED_GPU_MEMORY: Final = 393 +NV_CTRL_USED_DEDICATED_GPU_MEMORY: Final = 394 +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE: Final = 395 +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE_DISABLED: Final = 0 +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_IMMEDIATE_ENABLED: Final = 1 +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT: Final = 396 +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT_DISABLED: Final = 0 +NV_CTRL_GPU_DOUBLE_PRECISION_BOOST_REBOOT_ENALED: Final = 1 +NV_CTRL_DPY_HDMI_3D: Final = 397 +NV_CTRL_DPY_HDMI_3D_DISABLED: Final = 0 +NV_CTRL_DPY_HDMI_3D_ENABLED: Final = 1 +NV_CTRL_BASE_MOSAIC: Final = 398 +NV_CTRL_BASE_MOSAIC_DISABLED: Final = 0 +NV_CTRL_BASE_MOSAIC_FULL: Final = 1 +NV_CTRL_BASE_MOSAIC_LIMITED: Final = 2 +NV_CTRL_MULTIGPU_MASTER_POSSIBLE: Final = 399 +NV_CTRL_MULTIGPU_MASTER_POSSIBLE_FALSE: Final = 0 +NV_CTRL_MULTIGPU_MASTER_POSSIBLE_TRUE: Final = 1 +NV_CTRL_GPU_POWER_MIZER_DEFAULT_MODE: Final = 400 +NV_CTRL_XV_SYNC_TO_DISPLAY_ID: Final = 401 +NV_CTRL_XV_SYNC_TO_DISPLAY_ID_AUTO: Final = 0xFFFFFFFF +NV_CTRL_BACKLIGHT_BRIGHTNESS: Final = 402 +NV_CTRL_GPU_LOGO_BRIGHTNESS: Final = 403 +NV_CTRL_GPU_SLI_LOGO_BRIGHTNESS: Final = 404 +NV_CTRL_THERMAL_COOLER_SPEED: Final = 405 +NV_CTRL_PALETTE_UPDATE_EVENT: Final = 406 +NV_CTRL_VIDEO_ENCODER_UTILIZATION: Final = 407 +NV_CTRL_GSYNC_ALLOWED: Final = 408 +NV_CTRL_GSYNC_ALLOWED_FALSE: Final = 0 +NV_CTRL_GSYNC_ALLOWED_TRUE: Final = 1 +NV_CTRL_GPU_NVCLOCK_OFFSET: Final = 409 +NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET: Final = 410 +NV_CTRL_VIDEO_DECODER_UTILIZATION: Final = 411 +NV_CTRL_GPU_OVER_VOLTAGE_OFFSET: Final = 412 +NV_CTRL_GPU_CURRENT_CORE_VOLTAGE: Final = 413 +NV_CTRL_CURRENT_COLOR_SPACE: Final = 414 +NV_CTRL_CURRENT_COLOR_SPACE_RGB: Final = 0 +NV_CTRL_CURRENT_COLOR_SPACE_YCbCr422: Final = 1 +NV_CTRL_CURRENT_COLOR_SPACE_YCbCr444: Final = 2 +NV_CTRL_CURRENT_COLOR_SPACE_YCbCr420: Final = 3 +NV_CTRL_CURRENT_COLOR_RANGE: Final = 415 +NV_CTRL_CURRENT_COLOR_RANGE_FULL: Final = 0 +NV_CTRL_CURRENT_COLOR_RANGE_LIMITED: Final = 1 +NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR: Final = 416 +NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR_FALSE: Final = 0 +NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR_TRUE: Final = 1 +NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL: Final = 417 +NV_CTRL_STEREO_SWAP_MODE: Final = 418 +NV_CTRL_STEREO_SWAP_MODE_APPLICATION_CONTROL: Final = 0 +NV_CTRL_STEREO_SWAP_MODE_PER_EYE: Final = 1 +NV_CTRL_STEREO_SWAP_MODE_PER_EYE_PAIR: Final = 2 +NV_CTRL_CURRENT_XV_SYNC_TO_DISPLAY_ID: Final = 419 +NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED: Final = 420 +NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_FALSE: Final = 0 +NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_TRUE: Final = 1 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE: Final = 421 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_UNKNOWN: Final = 0 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_DISPLAYPORT: Final = 1 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_HDMI: Final = 2 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_DVI: Final = 3 +NV_CTRL_DISPLAYPORT_CONNECTOR_TYPE_VGA: Final = 4 +NV_CTRL_DISPLAYPORT_IS_MULTISTREAM: Final = 422 +NV_CTRL_DISPLAYPORT_SINK_IS_AUDIO_CAPABLE: Final = 423 +NV_CTRL_GPU_NVCLOCK_OFFSET_ALL_PERFORMANCE_LEVELS: Final = 424 +NV_CTRL_GPU_MEM_TRANSFER_RATE_OFFSET_ALL_PERFORMANCE_LEVELS: Final = 425 +NV_CTRL_FRAMELOCK_FIRMWARE_VERSION: Final = 426 +NV_CTRL_FRAMELOCK_FIRMWARE_MINOR_VERSION: Final = 427 +NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR: Final = 428 +NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR_FALSE: Final = 0 +NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR_TRUE: Final = 1 +NV_CTRL_LAST_ATTRIBUTE: Final = NV_CTRL_SHOW_GRAPHICS_VISUAL_INDICATOR +NV_CTRL_STRING_PRODUCT_NAME: Final = 0 +NV_CTRL_STRING_VBIOS_VERSION: Final = 1 +NV_CTRL_STRING_NVIDIA_DRIVER_VERSION: Final = 3 +NV_CTRL_STRING_DISPLAY_DEVICE_NAME: Final = 4 +NV_CTRL_STRING_TV_ENCODER_NAME: Final = 5 +NV_CTRL_STRING_GVIO_FIRMWARE_VERSION: Final = 8 +NV_CTRL_STRING_GVO_FIRMWARE_VERSION: Final = 8 +NV_CTRL_STRING_CURRENT_MODELINE: Final = 9 +NV_CTRL_STRING_ADD_MODELINE: Final = 10 +NV_CTRL_STRING_DELETE_MODELINE: Final = 11 +NV_CTRL_STRING_CURRENT_METAMODE: Final = 12 +NV_CTRL_STRING_CURRENT_METAMODE_VERSION_1: Final = NV_CTRL_STRING_CURRENT_METAMODE +NV_CTRL_STRING_ADD_METAMODE: Final = 13 +NV_CTRL_STRING_DELETE_METAMODE: Final = 14 +NV_CTRL_STRING_VCSC_PRODUCT_NAME: Final = 15 +NV_CTRL_STRING_VCSC_PRODUCT_ID: Final = 16 +NV_CTRL_STRING_VCSC_SERIAL_NUMBER: Final = 17 +NV_CTRL_STRING_VCSC_BUILD_DATE: Final = 18 +NV_CTRL_STRING_VCSC_FIRMWARE_VERSION: Final = 19 +NV_CTRL_STRING_VCSC_FIRMWARE_REVISION: Final = 20 +NV_CTRL_STRING_VCSC_HARDWARE_VERSION: Final = 21 +NV_CTRL_STRING_VCSC_HARDWARE_REVISION: Final = 22 +NV_CTRL_STRING_MOVE_METAMODE: Final = 23 +NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES: Final = 24 +NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES: Final = 25 +NV_CTRL_STRING_SCREEN_RECTANGLE: Final = 26 +NV_CTRL_STRING_XINERAMA_SCREEN_INFO: Final = 26 +NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER: Final = 27 +NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER: Final = NV_CTRL_STRING_NVIDIA_XINERAMA_INFO_ORDER +NV_CTRL_STRING_SLI_MODE: Final = 28 +NV_CTRL_STRING_PERFORMANCE_MODES: Final = 29 +NV_CTRL_STRING_VCSC_FAN_STATUS: Final = 30 +NV_CTRL_STRING_VCSC_TEMPERATURES: Final = 31 +NV_CTRL_STRING_VCSC_PSU_INFO: Final = 32 +NV_CTRL_STRING_GVIO_VIDEO_FORMAT_NAME: Final = 33 +NV_CTRL_STRING_GVO_VIDEO_FORMAT_NAME: Final = 33 +NV_CTRL_STRING_GPU_CURRENT_CLOCK_FREQS: Final = 34 +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_HARDWARE_REVISION: Final = 35 +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_A: Final = 36 +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_A: Final = 37 +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_VERSION_B: Final = 38 +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_FIRMWARE_DATE_B: Final = 39 +NV_CTRL_STRING_3D_VISION_PRO_TRANSCEIVER_ADDRESS: Final = 40 +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_VERSION_A: Final = 41 +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_FIRMWARE_DATE_A: Final = 42 +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_ADDRESS: Final = 43 +NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME: Final = 44 +NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2: Final = 45 +NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME: Final = 46 +NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID: Final = 47 +NV_CTRL_STRING_DISPLAY_NAME_DP_GUID: Final = 48 +NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH: Final = 49 +NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX: Final = 50 +NV_CTRL_STRING_DISPLAY_NAME_RANDR: Final = 51 +NV_CTRL_STRING_GPU_UUID: Final = 52 +NV_CTRL_STRING_GPU_UTILIZATION: Final = 53 +NV_CTRL_STRING_MULTIGPU_MODE: Final = 54 +NV_CTRL_STRING_PRIME_OUTPUTS_DATA: Final = 55 +NV_CTRL_STRING_LAST_ATTRIBUTE: Final = NV_CTRL_STRING_PRIME_OUTPUTS_DATA +NV_CTRL_BINARY_DATA_EDID: Final = 0 +NV_CTRL_BINARY_DATA_MODELINES: Final = 1 +NV_CTRL_BINARY_DATA_METAMODES: Final = 2 +NV_CTRL_BINARY_DATA_METAMODES_VERSION_1: Final = NV_CTRL_BINARY_DATA_METAMODES +NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU: Final = 3 +NV_CTRL_BINARY_DATA_GPUS_USED_BY_XSCREEN: Final = 4 +NV_CTRL_BINARY_DATA_GPUS_USING_FRAMELOCK: Final = 5 +NV_CTRL_BINARY_DATA_DISPLAY_VIEWPORT: Final = 6 +NV_CTRL_BINARY_DATA_FRAMELOCKS_USED_BY_GPU: Final = 7 +NV_CTRL_BINARY_DATA_GPUS_USING_VCSC: Final = 8 +NV_CTRL_BINARY_DATA_VCSCS_USED_BY_GPU: Final = 9 +NV_CTRL_BINARY_DATA_COOLERS_USED_BY_GPU: Final = 10 +NV_CTRL_BINARY_DATA_GPUS_USED_BY_LOGICAL_XSCREEN: Final = 11 +NV_CTRL_BINARY_DATA_THERMAL_SENSORS_USED_BY_GPU: Final = 12 +NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER: Final = 13 +NV_CTRL_BINARY_DATA_DISPLAY_TARGETS: Final = 14 +NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU: Final = 15 +NV_CTRL_BINARY_DATA_METAMODES_VERSION_2: Final = 16 +NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN: Final = 17 +NV_CTRL_BINARY_DATA_DISPLAYS_ASSIGNED_TO_XSCREEN: Final = 18 +NV_CTRL_BINARY_DATA_GPU_FLAGS: Final = 19 +NV_CTRL_BINARY_DATA_GPU_FLAGS_STEREO_DISPLAY_TRANSFORM_EXCLUSIVE: Final = 0 +NV_CTRL_BINARY_DATA_GPU_FLAGS_OVERLAY_DISPLAY_TRANSFORM_EXCLUSIVE: Final = 1 +NV_CTRL_BINARY_DATA_GPU_FLAGS_DEPTH_8_DISPLAY_TRANSFORM_EXCLUSIVE: Final = 2 +NV_CTRL_BINARY_DATA_DISPLAYS_ON_GPU: Final = 20 +NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE: Final = NV_CTRL_BINARY_DATA_DISPLAYS_ON_GPU +NV_CTRL_STRING_OPERATION_ADD_METAMODE: Final = 0 +NV_CTRL_STRING_OPERATION_GTF_MODELINE: Final = 1 +NV_CTRL_STRING_OPERATION_CVT_MODELINE: Final = 2 +NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL: Final = 3 +NV_CTRL_STRING_OPERATION_GVI_CONFIGURE_STREAMS: Final = 4 +NV_CTRL_STRING_OPERATION_PARSE_METAMODE: Final = 5 +NV_CTRL_STRING_OPERATION_LAST_ATTRIBUTE: Final = NV_CTRL_STRING_OPERATION_PARSE_METAMODE +X_nvCtrlQueryExtension: Final = 0 +X_nvCtrlQueryAttribute: Final = 2 +X_nvCtrlQueryStringAttribute: Final = 4 +X_nvCtrlQueryValidAttributeValues: Final = 5 +X_nvCtrlSetStringAttribute: Final = 9 +X_nvCtrlSetAttributeAndGetStatus: Final = 19 +X_nvCtrlQueryBinaryData: Final = 20 +X_nvCtrlQueryTargetCount: Final = 24 +X_nvCtrlStringOperation: Final = 25 +ATTRIBUTE_TYPE_UNKNOWN: Final = 0 +ATTRIBUTE_TYPE_INTEGER: Final = 1 +ATTRIBUTE_TYPE_BITMASK: Final = 2 +ATTRIBUTE_TYPE_BOOL: Final = 3 +ATTRIBUTE_TYPE_RANGE: Final = 4 +ATTRIBUTE_TYPE_INT_BITS: Final = 5 +ATTRIBUTE_TYPE_READ: Final = 0x01 +ATTRIBUTE_TYPE_WRITE: Final = 0x02 +ATTRIBUTE_TYPE_DISPLAY: Final = 0x04 +ATTRIBUTE_TYPE_GPU: Final = 0x08 +ATTRIBUTE_TYPE_FRAMELOCK: Final = 0x10 +ATTRIBUTE_TYPE_X_SCREEN: Final = 0x20 +ATTRIBUTE_TYPE_XINERAMA: Final = 0x40 +ATTRIBUTE_TYPE_VCSC: Final = 0x80 +NV_CTRL_TARGET_TYPE_X_SCREEN: Final = 0 +NV_CTRL_TARGET_TYPE_GPU: Final = 1 +NV_CTRL_TARGET_TYPE_FRAMELOCK: Final = 2 +NV_CTRL_TARGET_TYPE_VCSC: Final = 3 +NV_CTRL_TARGET_TYPE_GVI: Final = 4 +NV_CTRL_TARGET_TYPE_COOLER: Final = 5 +NV_CTRL_TARGET_TYPE_THERMAL_SENSOR: Final = 6 +NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER: Final = 7 +NV_CTRL_TARGET_TYPE_DISPLAY: Final = 8 class Target: def id(self) -> int: ... def type(self) -> int: ... class Gpu(Target): - def __init__(self, ngpu: int = ...) -> None: ... + def __init__(self, ngpu: int = 0) -> None: ... class Screen(Target): - def __init__(self, nscr: int = ...) -> None: ... + def __init__(self, nscr: int = 0) -> None: ... class Cooler(Target): - def __init__(self, nfan: int = ...) -> None: ... + def __init__(self, nfan: int = 0) -> None: ... class NVCtrlQueryTargetCountReplyRequest(rq.ReplyRequest): ... class NVCtrlQueryAttributeReplyRequest(rq.ReplyRequest): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/randr.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/randr.pyi index f9188ddf5..eab8fc42c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/randr.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/randr.pyi @@ -1,5 +1,5 @@ from collections.abc import Sequence -from typing_extensions import TypeAlias +from typing_extensions import Final, TypeAlias from Xlib.display import Display from Xlib.protocol import request, rq @@ -7,59 +7,59 @@ from Xlib.xobject import drawable, resource _RandRModeInfo13IntSequence: TypeAlias = Sequence[int] -extname: str -RRScreenChangeNotify: int -RRNotify: int -RRNotify_CrtcChange: int -RRNotify_OutputChange: int -RRNotify_OutputProperty: int -RRScreenChangeNotifyMask: int -RRCrtcChangeNotifyMask: int -RROutputChangeNotifyMask: int -RROutputPropertyNotifyMask: int -SetConfigSuccess: int -SetConfigInvalidConfigTime: int -SetConfigInvalidTime: int -SetConfigFailed: int -Rotate_0: int -Rotate_90: int -Rotate_180: int -Rotate_270: int -Reflect_X: int -Reflect_Y: int -HSyncPositive: int -HSyncNegative: int -VSyncPositive: int -VSyncNegative: int -Interlace: int -DoubleScan: int -CSync: int -CSyncPositive: int -CSyncNegative: int -HSkewPresent: int -BCast: int -PixelMultiplex: int -DoubleClock: int -ClockDivideBy2: int -Connected: int -Disconnected: int -UnknownConnection: int -PROPERTY_RANDR_EDID: str -PROPERTY_SIGNAL_FORMAT: str -PROPERTY_SIGNAL_PROPERTIES: str -PROPERTY_CONNECTOR_TYPE: str -PROPERTY_CONNECTOR_NUMBER: str -PROPERTY_COMPATIBILITY_LIST: str -PROPERTY_CLONE_LIST: str -SubPixelUnknown: int -SubPixelHorizontalRGB: int -SubPixelHorizontalBGR: int -SubPixelVerticalRGB: int -SubPixelVerticalBGR: int -SubPixelNone: int -BadRROutput: int -BadRRCrtc: int -BadRRMode: int +extname: Final = "RANDR" +RRScreenChangeNotify: Final = 0 +RRNotify: Final = 1 +RRNotify_CrtcChange: Final = 0 +RRNotify_OutputChange: Final = 1 +RRNotify_OutputProperty: Final = 2 +RRScreenChangeNotifyMask: Final = 0x1 +RRCrtcChangeNotifyMask: Final = 0x2 +RROutputChangeNotifyMask: Final = 0x4 +RROutputPropertyNotifyMask: Final = 0x8 +SetConfigSuccess: Final = 0 +SetConfigInvalidConfigTime: Final = 1 +SetConfigInvalidTime: Final = 2 +SetConfigFailed: Final = 3 +Rotate_0: Final = 1 +Rotate_90: Final = 2 +Rotate_180: Final = 4 +Rotate_270: Final = 8 +Reflect_X: Final = 16 +Reflect_Y: Final = 32 +HSyncPositive: Final = 0x00000001 +HSyncNegative: Final = 0x00000002 +VSyncPositive: Final = 0x00000004 +VSyncNegative: Final = 0x00000008 +Interlace: Final = 0x00000010 +DoubleScan: Final = 0x00000020 +CSync: Final = 0x00000040 +CSyncPositive: Final = 0x00000080 +CSyncNegative: Final = 0x00000100 +HSkewPresent: Final = 0x00000200 +BCast: Final = 0x00000400 +PixelMultiplex: Final = 0x00000800 +DoubleClock: Final = 0x00001000 +ClockDivideBy2: Final = 0x00002000 +Connected: Final = 0 +Disconnected: Final = 1 +UnknownConnection: Final = 2 +PROPERTY_RANDR_EDID: Final = "EDID" +PROPERTY_SIGNAL_FORMAT: Final = "SignalFormat" +PROPERTY_SIGNAL_PROPERTIES: Final = "SignalProperties" +PROPERTY_CONNECTOR_TYPE: Final = "ConnectorType" +PROPERTY_CONNECTOR_NUMBER: Final = "ConnectorNumber" +PROPERTY_COMPATIBILITY_LIST: Final = "CompatibilityList" +PROPERTY_CLONE_LIST: Final = "CloneList" +SubPixelUnknown: Final = 0 +SubPixelHorizontalRGB: Final = 1 +SubPixelHorizontalBGR: Final = 2 +SubPixelVerticalRGB: Final = 3 +SubPixelVerticalBGR: Final = 4 +SubPixelNone: Final = 5 +BadRROutput: Final = 0 +BadRRCrtc: Final = 1 +BadRRMode: Final = 2 class BadRROutputError(Exception): ... class BadRRCrtcError(Exception): ... @@ -79,7 +79,7 @@ class _1_0SetScreenConfig(rq.ReplyRequest): ... class SetScreenConfig(rq.ReplyRequest): ... def set_screen_config( - self: drawable.Drawable, size_id: int, rotation: int, config_timestamp: int, rate: int = ..., timestamp: int = ... + self: drawable.Drawable, size_id: int, rotation: int, config_timestamp: int, rate: int = 0, timestamp: int = 0 ) -> SetScreenConfig: ... class SelectInput(rq.Request): ... @@ -100,8 +100,8 @@ def set_screen_size( self: drawable.Window, width: int, height: int, - width_in_millimeters: int | None = ..., - height_in_millimeters: int | None = ..., + width_in_millimeters: int | None = None, + height_in_millimeters: int | None = None, ) -> SetScreenSize: ... class GetScreenResources(rq.ReplyRequest): ... @@ -143,8 +143,8 @@ def get_output_property( type: int, long_offset: int, long_length: int, - delete: bool = ..., - pending: bool = ..., + delete: bool = False, + pending: bool = False, ) -> GetOutputProperty: ... class CreateMode(rq.ReplyRequest): ... @@ -178,7 +178,7 @@ def set_crtc_config( mode: int, rotation: int, outputs: Sequence[int], - timestamp: int = ..., + timestamp: int = 0, ) -> SetCrtcConfig: ... class GetCrtcGammaSize(rq.ReplyRequest): ... @@ -228,7 +228,7 @@ def set_panning( border_top: int, border_width: int, border_height: int, - timestamp: int = ..., + timestamp: int = 0, ) -> SetPanning: ... class SetOutputPrimary(rq.Request): ... @@ -241,7 +241,7 @@ def get_output_primary(self: drawable.Window) -> GetOutputPrimary: ... class GetMonitors(rq.ReplyRequest): ... -def get_monitors(self: drawable.Window, is_active: bool = ...) -> GetMonitors: ... +def get_monitors(self: drawable.Window, is_active: bool = True) -> GetMonitors: ... class SetMonitor(rq.Request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/record.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/record.pyi index bfbb971f4..b09bc0e43 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/record.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/record.pyi @@ -1,6 +1,6 @@ from collections.abc import Callable, Sequence, Sized from typing import Any, TypeVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from Xlib._typing import Unused from Xlib.display import Display @@ -10,19 +10,22 @@ from Xlib.xobject import resource _T = TypeVar("_T") _S = TypeVar("_S", bound=Sized) -extname: str -FromServerTime: int -FromClientTime: int -FromClientSequence: int -CurrentClients: int -FutureClients: int -AllClients: int -FromServer: int -FromClient: int -ClientStarted: int -ClientDied: int -StartOfData: int -EndOfData: int +extname: Final = "RECORD" + +FromServerTime: Final = 0x01 +FromClientTime: Final = 0x02 +FromClientSequence: Final = 0x04 + +CurrentClients: Final = 1 +FutureClients: Final = 2 +AllClients: Final = 3 + +FromServer: Final = 0 +FromClient: Final = 1 +ClientStarted: Final = 2 +ClientDied: Final = 3 +StartOfData: Final = 4 +EndOfData: Final = 5 Record_Range8: rq.Struct Record_Range16: rq.Struct Record_ExtRange: rq.Struct @@ -94,7 +97,7 @@ class EnableContext(rq.ReplyRequest): self, callback: Callable[[rq.DictWrapper | dict[str, Any]], Any], display: display.Display, - defer: bool = ..., + defer: bool = False, *args: object | bool, **keys: object | bool, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/res.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/res.pyi index 48ecc7c9f..3289fa10a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/res.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/res.pyi @@ -1,23 +1,24 @@ from collections.abc import Sequence +from typing_extensions import Final from Xlib._typing import Unused from Xlib.display import Display from Xlib.protocol import rq from Xlib.xobject import resource -RES_MAJOR_VERSION: int -RES_MINOR_VERSION: int -extname: str -ResQueryVersion: int -ResQueryClients: int -ResQueryClientResources: int -ResQueryClientPixmapBytes: int -ResQueryClientIds: int -ResQueryResourceBytes: int +RES_MAJOR_VERSION: Final = 1 +RES_MINOR_VERSION: Final = 2 +extname: Final = "X-Resource" +ResQueryVersion: Final = 0 +ResQueryClients: Final = 1 +ResQueryClientResources: Final = 2 +ResQueryClientPixmapBytes: Final = 3 +ResQueryClientIds: Final = 4 +ResQueryResourceBytes: Final = 5 class QueryVersion(rq.ReplyRequest): ... -def query_version(self: Display | resource.Resource, client_major: int = ..., client_minor: int = ...) -> QueryVersion: ... +def query_version(self: Display | resource.Resource, client_major: int = 1, client_minor: int = 2) -> QueryVersion: ... Client: rq.Struct @@ -40,8 +41,8 @@ class SizeOf(rq.LengthOf): def __init__(self, name: str | list[str] | tuple[str, ...], size: int, item_size: int) -> None: ... def parse_value(self, length: int, display: Unused) -> int: ... # type: ignore[override] -ClientXIDMask: int -LocalClientPIDMask: int +ClientXIDMask: Final = 0x1 +LocalClientPIDMask: Final = 0x2 ClientIdSpec: rq.Struct ClientIdValue: rq.Struct diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/screensaver.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/screensaver.pyi index 9ccf5cbc7..2b406d338 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/screensaver.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/screensaver.pyi @@ -1,17 +1,19 @@ +from typing_extensions import Final + from Xlib._typing import ErrorHandler from Xlib.display import Display from Xlib.protocol import request, rq from Xlib.xobject import drawable -extname: str -NotifyMask: int -CycleMask: int -StateOff: int -StateOn: int -StateCycle: int -KindBlanked: int -KindInternal: int -KindExternal: int +extname: Final = "MIT-SCREEN-SAVER" +NotifyMask: Final = 1 +CycleMask: Final = 2 +StateOff: Final = 0 +StateOn: Final = 1 +StateCycle: Final = 2 +KindBlanked: Final = 0 +KindInternal: Final = 1 +KindExternal: Final = 2 class QueryVersion(rq.ReplyRequest): ... @@ -34,16 +36,16 @@ def set_attributes( width: int, height: int, border_width: int, - window_class: int = ..., - depth: int = ..., - visual: int = ..., - onerror: ErrorHandler[object] | None = ..., + window_class: int = 0, + depth: int = 0, + visual: int = 0, + onerror: ErrorHandler[object] | None = None, **keys: object, ) -> SetAttributes: ... class UnsetAttributes(rq.Request): ... -def unset_attributes(self: drawable.Drawable, onerror: ErrorHandler[object] | None = ...) -> UnsetAttributes: ... +def unset_attributes(self: drawable.Drawable, onerror: ErrorHandler[object] | None = None) -> UnsetAttributes: ... class Notify(rq.Event): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/security.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/security.pyi index 93fd4b0bd..661f151a7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/security.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/security.pyi @@ -1,12 +1,14 @@ +from typing_extensions import Final + from Xlib._typing import Unused from Xlib.display import Display from Xlib.protocol import rq from Xlib.xobject import resource -extname: str -SecurityClientTrusted: int -SecurityClientUntrusted: int -SecurityAuthorizationRevokedMask: int +extname: Final = "SECURITY" +SecurityClientTrusted: Final = 0 +SecurityClientUntrusted: Final = 1 +SecurityAuthorizationRevokedMask: Final = 1 AUTHID = rq.Card32 class QueryVersion(rq.ReplyRequest): ... @@ -18,11 +20,11 @@ class SecurityGenerateAuthorization(rq.ReplyRequest): ... def generate_authorization( self: Display | resource.Resource, auth_proto: str, - auth_data: bytes | bytearray = ..., - timeout: int | None = ..., - trust_level: int | None = ..., - group: int | None = ..., - event_mask: int | None = ..., + auth_data: bytes | bytearray = b"", + timeout: int | None = None, + trust_level: int | None = None, + group: int | None = None, + event_mask: int | None = None, ) -> SecurityGenerateAuthorization: ... class SecurityRevokeAuthorization(rq.Request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/shape.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/shape.pyi index 67d0ed774..79236d0b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/shape.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/shape.pyi @@ -1,11 +1,12 @@ from collections.abc import Sequence +from typing_extensions import Final from Xlib.display import Display from Xlib.protocol import request, rq from Xlib.protocol.structs import _Rectangle4IntSequence from Xlib.xobject import drawable, resource -extname: str +extname: Final = "SHAPE" OP = rq.Card8 class SO: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xfixes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xfixes.pyi index 98509f7f2..a4ccb20cf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xfixes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xfixes.pyi @@ -1,19 +1,21 @@ +from typing_extensions import Final + from Xlib._typing import Unused from Xlib.display import Display from Xlib.protocol import request, rq from Xlib.xobject import drawable, resource -extname: str -XFixesSelectionNotify: int -XFixesCursorNotify: int -XFixesSetSelectionOwnerNotifyMask: int -XFixesSelectionWindowDestroyNotifyMask: int -XFixesSelectionClientCloseNotifyMask: int -XFixesDisplayCursorNotifyMask: int -XFixesSetSelectionOwnerNotify: int -XFixesSelectionWindowDestroyNotify: int -XFixesSelectionClientCloseNotify: int -XFixesDisplayCursorNotify: int +extname: Final = "XFIXES" +XFixesSelectionNotify: Final = 0 +XFixesCursorNotify: Final = 1 +XFixesSetSelectionOwnerNotifyMask: Final = 0x1 +XFixesSelectionWindowDestroyNotifyMask: Final = 0x2 +XFixesSelectionClientCloseNotifyMask: Final = 0x4 +XFixesDisplayCursorNotifyMask: Final = 0x1 +XFixesSetSelectionOwnerNotify: Final = 0 +XFixesSelectionWindowDestroyNotify: Final = 1 +XFixesSelectionClientCloseNotify: Final = 2 +XFixesDisplayCursorNotify: Final = 0 class QueryVersion(rq.ReplyRequest): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xinerama.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xinerama.pyi index 004f7cdf3..89c8e770a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xinerama.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xinerama.pyi @@ -1,9 +1,11 @@ +from typing_extensions import Final + from Xlib._typing import Unused from Xlib.display import Display from Xlib.protocol import rq from Xlib.xobject import drawable, resource -extname: str +extname: Final = "XINERAMA" class QueryVersion(rq.ReplyRequest): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xinput.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xinput.pyi index ef3a5486f..c72f9d4ac 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xinput.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xinput.pyi @@ -1,7 +1,7 @@ from _typeshed import ReadableBuffer, SliceableBuffer from collections.abc import Iterable, Sequence from typing import SupportsFloat, TypeVar -from typing_extensions import SupportsIndex, TypeAlias +from typing_extensions import Final, SupportsIndex, TypeAlias from Xlib._typing import Unused from Xlib.display import Display @@ -11,110 +11,110 @@ from Xlib.xobject import drawable, resource _T = TypeVar("_T") _Floatable: TypeAlias = SupportsFloat | SupportsIndex | str | ReadableBuffer -extname: str -PropertyDeleted: int -PropertyCreated: int -PropertyModified: int -NotifyNormal: int -NotifyGrab: int -NotifyUngrab: int -NotifyWhileGrabbed: int -NotifyPassiveGrab: int -NotifyPassiveUngrab: int -NotifyAncestor: int -NotifyVirtual: int -NotifyInferior: int -NotifyNonlinear: int -NotifyNonlinearVirtual: int -NotifyPointer: int -NotifyPointerRoot: int -NotifyDetailNone: int -GrabtypeButton: int -GrabtypeKeycode: int -GrabtypeEnter: int -GrabtypeFocusIn: int -GrabtypeTouchBegin: int -AnyModifier: int -AnyButton: int -AnyKeycode: int -AsyncDevice: int -SyncDevice: int -ReplayDevice: int -AsyncPairedDevice: int -AsyncPair: int -SyncPair: int -SlaveSwitch: int -DeviceChange: int -MasterAdded: int -MasterRemoved: int -SlaveAdded: int -SlaveRemoved: int -SlaveAttached: int -SlaveDetached: int -DeviceEnabled: int -DeviceDisabled: int -AddMaster: int -RemoveMaster: int -AttachSlave: int -DetachSlave: int -AttachToMaster: int -Floating: int -ModeRelative: int -ModeAbsolute: int -MasterPointer: int -MasterKeyboard: int -SlavePointer: int -SlaveKeyboard: int -FloatingSlave: int -KeyClass: int -ButtonClass: int -ValuatorClass: int -ScrollClass: int -TouchClass: int -KeyRepeat: int -AllDevices: int -AllMasterDevices: int -DeviceChanged: int -KeyPress: int -KeyRelease: int -ButtonPress: int -ButtonRelease: int -Motion: int -Enter: int -Leave: int -FocusIn: int -FocusOut: int -HierarchyChanged: int -PropertyEvent: int -RawKeyPress: int -RawKeyRelease: int -RawButtonPress: int -RawButtonRelease: int -RawMotion: int -DeviceChangedMask: int -KeyPressMask: int -KeyReleaseMask: int -ButtonPressMask: int -ButtonReleaseMask: int -MotionMask: int -EnterMask: int -LeaveMask: int -FocusInMask: int -FocusOutMask: int -HierarchyChangedMask: int -PropertyEventMask: int -RawKeyPressMask: int -RawKeyReleaseMask: int -RawButtonPressMask: int -RawButtonReleaseMask: int -RawMotionMask: int -GrabModeSync: int -GrabModeAsync: int -GrabModeTouch: int +extname: Final = "XInputExtension" +PropertyDeleted: Final = 0 +PropertyCreated: Final = 1 +PropertyModified: Final = 2 +NotifyNormal: Final = 0 +NotifyGrab: Final = 1 +NotifyUngrab: Final = 2 +NotifyWhileGrabbed: Final = 3 +NotifyPassiveGrab: Final = 4 +NotifyPassiveUngrab: Final = 5 +NotifyAncestor: Final = 0 +NotifyVirtual: Final = 1 +NotifyInferior: Final = 2 +NotifyNonlinear: Final = 3 +NotifyNonlinearVirtual: Final = 4 +NotifyPointer: Final = 5 +NotifyPointerRoot: Final = 6 +NotifyDetailNone: Final = 7 +GrabtypeButton: Final = 0 +GrabtypeKeycode: Final = 1 +GrabtypeEnter: Final = 2 +GrabtypeFocusIn: Final = 3 +GrabtypeTouchBegin: Final = 4 +AnyModifier: Final = 0x80000000 +AnyButton: Final = 0 +AnyKeycode: Final = 0 +AsyncDevice: Final = 0 +SyncDevice: Final = 1 +ReplayDevice: Final = 2 +AsyncPairedDevice: Final = 3 +AsyncPair: Final = 4 +SyncPair: Final = 5 +SlaveSwitch: Final = 1 +DeviceChange: Final = 2 +MasterAdded: Final = 0x01 +MasterRemoved: Final = 0x02 +SlaveAdded: Final = 0x04 +SlaveRemoved: Final = 0x08 +SlaveAttached: Final = 0x10 +SlaveDetached: Final = 0x20 +DeviceEnabled: Final = 0x40 +DeviceDisabled: Final = 0x80 +AddMaster: Final = 1 +RemoveMaster: Final = 2 +AttachSlave: Final = 3 +DetachSlave: Final = 4 +AttachToMaster: Final = 1 +Floating: Final = 2 +ModeRelative: Final = 0 +ModeAbsolute: Final = 1 +MasterPointer: Final = 1 +MasterKeyboard: Final = 2 +SlavePointer: Final = 3 +SlaveKeyboard: Final = 4 +FloatingSlave: Final = 5 +KeyClass: Final = 0 +ButtonClass: Final = 1 +ValuatorClass: Final = 2 +ScrollClass: Final = 3 +TouchClass: Final = 8 +KeyRepeat: Final = 0x10000 +AllDevices: Final = 0 +AllMasterDevices: Final = 1 +DeviceChanged: Final = 1 +KeyPress: Final = 2 +KeyRelease: Final = 3 +ButtonPress: Final = 4 +ButtonRelease: Final = 5 +Motion: Final = 6 +Enter: Final = 7 +Leave: Final = 8 +FocusIn: Final = 9 +FocusOut: Final = 10 +HierarchyChanged: Final = 11 +PropertyEvent: Final = 12 +RawKeyPress: Final = 13 +RawKeyRelease: Final = 14 +RawButtonPress: Final = 15 +RawButtonRelease: Final = 16 +RawMotion: Final = 17 +DeviceChangedMask: Final = 0x00002 +KeyPressMask: Final = 0x00004 +KeyReleaseMask: Final = 0x00008 +ButtonPressMask: Final = 0x00010 +ButtonReleaseMask: Final = 0x00020 +MotionMask: Final = 0x00040 +EnterMask: Final = 0x00080 +LeaveMask: Final = 0x00100 +FocusInMask: Final = 0x00200 +FocusOutMask: Final = 0x00400 +HierarchyChangedMask: Final = 0x00800 +PropertyEventMask: Final = 0x01000 +RawKeyPressMask: Final = 0x02000 +RawKeyReleaseMask: Final = 0x04000 +RawButtonPressMask: Final = 0x08000 +RawButtonReleaseMask: Final = 0x10000 +RawMotionMask: Final = 0x20000 +GrabModeSync: Final = 0 +GrabModeAsync: Final = 1 +GrabModeTouch: Final = 2 DEVICEID = rq.Card16 DEVICE = rq.Card16 DEVICEUSE = rq.Card8 -PROPERTY_TYPE_FLOAT: str +PROPERTY_TYPE_FLOAT: Final = "FLOAT" # ignore[override] because of Liskov substitution principle violations class FP1616(rq.Int32): @@ -159,7 +159,7 @@ KeyInfo: rq.Struct ValuatorInfo: rq.Struct ScrollInfo: rq.Struct TouchInfo: rq.Struct -INFO_CLASSES: dict[int, rq.Struct] +INFO_CLASSES: Final[dict[int, rq.Struct]] class ClassInfoClass: structcode: None @@ -179,7 +179,7 @@ def list_device_properties(self: Display | resource.Resource, deviceid: int) -> class XIGetProperty(rq.ReplyRequest): ... def get_device_property( - self: Display | resource.Resource, deviceid: int, property: int, type: int, offset: int, length: int, delete: int = ... + self: Display | resource.Resource, deviceid: int, property: int, type: int, offset: int, length: int, delete: bool = False ) -> XIGetProperty: ... class XIChangeProperty(rq.Request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xtest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xtest.pyi index d2505b771..67a9ae47d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xtest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/ext/xtest.pyi @@ -1,10 +1,12 @@ +from typing_extensions import Final + from Xlib._typing import Unused from Xlib.display import Display from Xlib.protocol import rq from Xlib.xobject import resource -extname: str -CurrentCursor: int +extname: Final = "XTEST" +CurrentCursor: Final = 1 class GetVersion(rq.ReplyRequest): ... @@ -17,13 +19,7 @@ def compare_cursor(self: Display | resource.Resource, cursor: int) -> int: ... class FakeInput(rq.Request): ... def fake_input( - self: Display | resource.Resource, - event_type: int, - detail: int = ..., - time: int = ..., - root: int = ..., - x: int = ..., - y: int = ..., + self: Display | resource.Resource, event_type: int, detail: int = 0, time: int = 0, root: int = 0, x: int = 0, y: int = 0 ) -> None: ... class GrabControl(rq.Request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/apl.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/apl.pyi index a4404d76d..99810a3c5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/apl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/apl.pyi @@ -1,19 +1,21 @@ -XK_leftcaret: int -XK_rightcaret: int -XK_downcaret: int -XK_upcaret: int -XK_overbar: int -XK_downtack: int -XK_upshoe: int -XK_downstile: int -XK_underbar: int -XK_jot: int -XK_quad: int -XK_uptack: int -XK_circle: int -XK_upstile: int -XK_downshoe: int -XK_rightshoe: int -XK_leftshoe: int -XK_lefttack: int -XK_righttack: int +from typing_extensions import Final + +XK_leftcaret: Final = 0xBA3 +XK_rightcaret: Final = 0xBA6 +XK_downcaret: Final = 0xBA8 +XK_upcaret: Final = 0xBA9 +XK_overbar: Final = 0xBC0 +XK_downtack: Final = 0xBC2 +XK_upshoe: Final = 0xBC3 +XK_downstile: Final = 0xBC4 +XK_underbar: Final = 0xBC6 +XK_jot: Final = 0xBCA +XK_quad: Final = 0xBCC +XK_uptack: Final = 0xBCE +XK_circle: Final = 0xBCF +XK_upstile: Final = 0xBD3 +XK_downshoe: Final = 0xBD6 +XK_rightshoe: Final = 0xBD8 +XK_leftshoe: Final = 0xBDA +XK_lefttack: Final = 0xBDC +XK_righttack: Final = 0xBFC diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/arabic.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/arabic.pyi index ab9a7b0fc..a710eeb8a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/arabic.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/arabic.pyi @@ -1,50 +1,52 @@ -XK_Arabic_comma: int -XK_Arabic_semicolon: int -XK_Arabic_question_mark: int -XK_Arabic_hamza: int -XK_Arabic_maddaonalef: int -XK_Arabic_hamzaonalef: int -XK_Arabic_hamzaonwaw: int -XK_Arabic_hamzaunderalef: int -XK_Arabic_hamzaonyeh: int -XK_Arabic_alef: int -XK_Arabic_beh: int -XK_Arabic_tehmarbuta: int -XK_Arabic_teh: int -XK_Arabic_theh: int -XK_Arabic_jeem: int -XK_Arabic_hah: int -XK_Arabic_khah: int -XK_Arabic_dal: int -XK_Arabic_thal: int -XK_Arabic_ra: int -XK_Arabic_zain: int -XK_Arabic_seen: int -XK_Arabic_sheen: int -XK_Arabic_sad: int -XK_Arabic_dad: int -XK_Arabic_tah: int -XK_Arabic_zah: int -XK_Arabic_ain: int -XK_Arabic_ghain: int -XK_Arabic_tatweel: int -XK_Arabic_feh: int -XK_Arabic_qaf: int -XK_Arabic_kaf: int -XK_Arabic_lam: int -XK_Arabic_meem: int -XK_Arabic_noon: int -XK_Arabic_ha: int -XK_Arabic_heh: int -XK_Arabic_waw: int -XK_Arabic_alefmaksura: int -XK_Arabic_yeh: int -XK_Arabic_fathatan: int -XK_Arabic_dammatan: int -XK_Arabic_kasratan: int -XK_Arabic_fatha: int -XK_Arabic_damma: int -XK_Arabic_kasra: int -XK_Arabic_shadda: int -XK_Arabic_sukun: int -XK_Arabic_switch: int +from typing_extensions import Final + +XK_Arabic_comma: Final = 0x5AC +XK_Arabic_semicolon: Final = 0x5BB +XK_Arabic_question_mark: Final = 0x5BF +XK_Arabic_hamza: Final = 0x5C1 +XK_Arabic_maddaonalef: Final = 0x5C2 +XK_Arabic_hamzaonalef: Final = 0x5C3 +XK_Arabic_hamzaonwaw: Final = 0x5C4 +XK_Arabic_hamzaunderalef: Final = 0x5C5 +XK_Arabic_hamzaonyeh: Final = 0x5C6 +XK_Arabic_alef: Final = 0x5C7 +XK_Arabic_beh: Final = 0x5C8 +XK_Arabic_tehmarbuta: Final = 0x5C9 +XK_Arabic_teh: Final = 0x5CA +XK_Arabic_theh: Final = 0x5CB +XK_Arabic_jeem: Final = 0x5CC +XK_Arabic_hah: Final = 0x5CD +XK_Arabic_khah: Final = 0x5CE +XK_Arabic_dal: Final = 0x5CF +XK_Arabic_thal: Final = 0x5D0 +XK_Arabic_ra: Final = 0x5D1 +XK_Arabic_zain: Final = 0x5D2 +XK_Arabic_seen: Final = 0x5D3 +XK_Arabic_sheen: Final = 0x5D4 +XK_Arabic_sad: Final = 0x5D5 +XK_Arabic_dad: Final = 0x5D6 +XK_Arabic_tah: Final = 0x5D7 +XK_Arabic_zah: Final = 0x5D8 +XK_Arabic_ain: Final = 0x5D9 +XK_Arabic_ghain: Final = 0x5DA +XK_Arabic_tatweel: Final = 0x5E0 +XK_Arabic_feh: Final = 0x5E1 +XK_Arabic_qaf: Final = 0x5E2 +XK_Arabic_kaf: Final = 0x5E3 +XK_Arabic_lam: Final = 0x5E4 +XK_Arabic_meem: Final = 0x5E5 +XK_Arabic_noon: Final = 0x5E6 +XK_Arabic_ha: Final = 0x5E7 +XK_Arabic_heh: Final = 0x5E7 +XK_Arabic_waw: Final = 0x5E8 +XK_Arabic_alefmaksura: Final = 0x5E9 +XK_Arabic_yeh: Final = 0x5EA +XK_Arabic_fathatan: Final = 0x5EB +XK_Arabic_dammatan: Final = 0x5EC +XK_Arabic_kasratan: Final = 0x5ED +XK_Arabic_fatha: Final = 0x5EE +XK_Arabic_damma: Final = 0x5EF +XK_Arabic_kasra: Final = 0x5F0 +XK_Arabic_shadda: Final = 0x5F1 +XK_Arabic_sukun: Final = 0x5F2 +XK_Arabic_switch: Final = 0xFF7E diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/cyrillic.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/cyrillic.pyi index a4accc99c..f30cad4c1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/cyrillic.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/cyrillic.pyi @@ -1,107 +1,109 @@ -XK_Serbian_dje: int -XK_Macedonia_gje: int -XK_Cyrillic_io: int -XK_Ukrainian_ie: int -XK_Ukranian_je: int -XK_Macedonia_dse: int -XK_Ukrainian_i: int -XK_Ukranian_i: int -XK_Ukrainian_yi: int -XK_Ukranian_yi: int -XK_Cyrillic_je: int -XK_Serbian_je: int -XK_Cyrillic_lje: int -XK_Serbian_lje: int -XK_Cyrillic_nje: int -XK_Serbian_nje: int -XK_Serbian_tshe: int -XK_Macedonia_kje: int -XK_Byelorussian_shortu: int -XK_Cyrillic_dzhe: int -XK_Serbian_dze: int -XK_numerosign: int -XK_Serbian_DJE: int -XK_Macedonia_GJE: int -XK_Cyrillic_IO: int -XK_Ukrainian_IE: int -XK_Ukranian_JE: int -XK_Macedonia_DSE: int -XK_Ukrainian_I: int -XK_Ukranian_I: int -XK_Ukrainian_YI: int -XK_Ukranian_YI: int -XK_Cyrillic_JE: int -XK_Serbian_JE: int -XK_Cyrillic_LJE: int -XK_Serbian_LJE: int -XK_Cyrillic_NJE: int -XK_Serbian_NJE: int -XK_Serbian_TSHE: int -XK_Macedonia_KJE: int -XK_Byelorussian_SHORTU: int -XK_Cyrillic_DZHE: int -XK_Serbian_DZE: int -XK_Cyrillic_yu: int -XK_Cyrillic_a: int -XK_Cyrillic_be: int -XK_Cyrillic_tse: int -XK_Cyrillic_de: int -XK_Cyrillic_ie: int -XK_Cyrillic_ef: int -XK_Cyrillic_ghe: int -XK_Cyrillic_ha: int -XK_Cyrillic_i: int -XK_Cyrillic_shorti: int -XK_Cyrillic_ka: int -XK_Cyrillic_el: int -XK_Cyrillic_em: int -XK_Cyrillic_en: int -XK_Cyrillic_o: int -XK_Cyrillic_pe: int -XK_Cyrillic_ya: int -XK_Cyrillic_er: int -XK_Cyrillic_es: int -XK_Cyrillic_te: int -XK_Cyrillic_u: int -XK_Cyrillic_zhe: int -XK_Cyrillic_ve: int -XK_Cyrillic_softsign: int -XK_Cyrillic_yeru: int -XK_Cyrillic_ze: int -XK_Cyrillic_sha: int -XK_Cyrillic_e: int -XK_Cyrillic_shcha: int -XK_Cyrillic_che: int -XK_Cyrillic_hardsign: int -XK_Cyrillic_YU: int -XK_Cyrillic_A: int -XK_Cyrillic_BE: int -XK_Cyrillic_TSE: int -XK_Cyrillic_DE: int -XK_Cyrillic_IE: int -XK_Cyrillic_EF: int -XK_Cyrillic_GHE: int -XK_Cyrillic_HA: int -XK_Cyrillic_I: int -XK_Cyrillic_SHORTI: int -XK_Cyrillic_KA: int -XK_Cyrillic_EL: int -XK_Cyrillic_EM: int -XK_Cyrillic_EN: int -XK_Cyrillic_O: int -XK_Cyrillic_PE: int -XK_Cyrillic_YA: int -XK_Cyrillic_ER: int -XK_Cyrillic_ES: int -XK_Cyrillic_TE: int -XK_Cyrillic_U: int -XK_Cyrillic_ZHE: int -XK_Cyrillic_VE: int -XK_Cyrillic_SOFTSIGN: int -XK_Cyrillic_YERU: int -XK_Cyrillic_ZE: int -XK_Cyrillic_SHA: int -XK_Cyrillic_E: int -XK_Cyrillic_SHCHA: int -XK_Cyrillic_CHE: int -XK_Cyrillic_HARDSIGN: int +from typing_extensions import Final + +XK_Serbian_dje: Final = 0x6A1 +XK_Macedonia_gje: Final = 0x6A2 +XK_Cyrillic_io: Final = 0x6A3 +XK_Ukrainian_ie: Final = 0x6A4 +XK_Ukranian_je: Final = 0x6A4 +XK_Macedonia_dse: Final = 0x6A5 +XK_Ukrainian_i: Final = 0x6A6 +XK_Ukranian_i: Final = 0x6A6 +XK_Ukrainian_yi: Final = 0x6A7 +XK_Ukranian_yi: Final = 0x6A7 +XK_Cyrillic_je: Final = 0x6A8 +XK_Serbian_je: Final = 0x6A8 +XK_Cyrillic_lje: Final = 0x6A9 +XK_Serbian_lje: Final = 0x6A9 +XK_Cyrillic_nje: Final = 0x6AA +XK_Serbian_nje: Final = 0x6AA +XK_Serbian_tshe: Final = 0x6AB +XK_Macedonia_kje: Final = 0x6AC +XK_Byelorussian_shortu: Final = 0x6AE +XK_Cyrillic_dzhe: Final = 0x6AF +XK_Serbian_dze: Final = 0x6AF +XK_numerosign: Final = 0x6B0 +XK_Serbian_DJE: Final = 0x6B1 +XK_Macedonia_GJE: Final = 0x6B2 +XK_Cyrillic_IO: Final = 0x6B3 +XK_Ukrainian_IE: Final = 0x6B4 +XK_Ukranian_JE: Final = 0x6B4 +XK_Macedonia_DSE: Final = 0x6B5 +XK_Ukrainian_I: Final = 0x6B6 +XK_Ukranian_I: Final = 0x6B6 +XK_Ukrainian_YI: Final = 0x6B7 +XK_Ukranian_YI: Final = 0x6B7 +XK_Cyrillic_JE: Final = 0x6B8 +XK_Serbian_JE: Final = 0x6B8 +XK_Cyrillic_LJE: Final = 0x6B9 +XK_Serbian_LJE: Final = 0x6B9 +XK_Cyrillic_NJE: Final = 0x6BA +XK_Serbian_NJE: Final = 0x6BA +XK_Serbian_TSHE: Final = 0x6BB +XK_Macedonia_KJE: Final = 0x6BC +XK_Byelorussian_SHORTU: Final = 0x6BE +XK_Cyrillic_DZHE: Final = 0x6BF +XK_Serbian_DZE: Final = 0x6BF +XK_Cyrillic_yu: Final = 0x6C0 +XK_Cyrillic_a: Final = 0x6C1 +XK_Cyrillic_be: Final = 0x6C2 +XK_Cyrillic_tse: Final = 0x6C3 +XK_Cyrillic_de: Final = 0x6C4 +XK_Cyrillic_ie: Final = 0x6C5 +XK_Cyrillic_ef: Final = 0x6C6 +XK_Cyrillic_ghe: Final = 0x6C7 +XK_Cyrillic_ha: Final = 0x6C8 +XK_Cyrillic_i: Final = 0x6C9 +XK_Cyrillic_shorti: Final = 0x6CA +XK_Cyrillic_ka: Final = 0x6CB +XK_Cyrillic_el: Final = 0x6CC +XK_Cyrillic_em: Final = 0x6CD +XK_Cyrillic_en: Final = 0x6CE +XK_Cyrillic_o: Final = 0x6CF +XK_Cyrillic_pe: Final = 0x6D0 +XK_Cyrillic_ya: Final = 0x6D1 +XK_Cyrillic_er: Final = 0x6D2 +XK_Cyrillic_es: Final = 0x6D3 +XK_Cyrillic_te: Final = 0x6D4 +XK_Cyrillic_u: Final = 0x6D5 +XK_Cyrillic_zhe: Final = 0x6D6 +XK_Cyrillic_ve: Final = 0x6D7 +XK_Cyrillic_softsign: Final = 0x6D8 +XK_Cyrillic_yeru: Final = 0x6D9 +XK_Cyrillic_ze: Final = 0x6DA +XK_Cyrillic_sha: Final = 0x6DB +XK_Cyrillic_e: Final = 0x6DC +XK_Cyrillic_shcha: Final = 0x6DD +XK_Cyrillic_che: Final = 0x6DE +XK_Cyrillic_hardsign: Final = 0x6DF +XK_Cyrillic_YU: Final = 0x6E0 +XK_Cyrillic_A: Final = 0x6E1 +XK_Cyrillic_BE: Final = 0x6E2 +XK_Cyrillic_TSE: Final = 0x6E3 +XK_Cyrillic_DE: Final = 0x6E4 +XK_Cyrillic_IE: Final = 0x6E5 +XK_Cyrillic_EF: Final = 0x6E6 +XK_Cyrillic_GHE: Final = 0x6E7 +XK_Cyrillic_HA: Final = 0x6E8 +XK_Cyrillic_I: Final = 0x6E9 +XK_Cyrillic_SHORTI: Final = 0x6EA +XK_Cyrillic_KA: Final = 0x6EB +XK_Cyrillic_EL: Final = 0x6EC +XK_Cyrillic_EM: Final = 0x6ED +XK_Cyrillic_EN: Final = 0x6EE +XK_Cyrillic_O: Final = 0x6EF +XK_Cyrillic_PE: Final = 0x6F0 +XK_Cyrillic_YA: Final = 0x6F1 +XK_Cyrillic_ER: Final = 0x6F2 +XK_Cyrillic_ES: Final = 0x6F3 +XK_Cyrillic_TE: Final = 0x6F4 +XK_Cyrillic_U: Final = 0x6F5 +XK_Cyrillic_ZHE: Final = 0x6F6 +XK_Cyrillic_VE: Final = 0x6F7 +XK_Cyrillic_SOFTSIGN: Final = 0x6F8 +XK_Cyrillic_YERU: Final = 0x6F9 +XK_Cyrillic_ZE: Final = 0x6FA +XK_Cyrillic_SHA: Final = 0x6FB +XK_Cyrillic_E: Final = 0x6FC +XK_Cyrillic_SHCHA: Final = 0x6FD +XK_Cyrillic_CHE: Final = 0x6FE +XK_Cyrillic_HARDSIGN: Final = 0x6FF diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/greek.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/greek.pyi index 7460ea2e6..888e3eda1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/greek.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/greek.pyi @@ -1,74 +1,76 @@ -XK_Greek_ALPHAaccent: int -XK_Greek_EPSILONaccent: int -XK_Greek_ETAaccent: int -XK_Greek_IOTAaccent: int -XK_Greek_IOTAdiaeresis: int -XK_Greek_OMICRONaccent: int -XK_Greek_UPSILONaccent: int -XK_Greek_UPSILONdieresis: int -XK_Greek_OMEGAaccent: int -XK_Greek_accentdieresis: int -XK_Greek_horizbar: int -XK_Greek_alphaaccent: int -XK_Greek_epsilonaccent: int -XK_Greek_etaaccent: int -XK_Greek_iotaaccent: int -XK_Greek_iotadieresis: int -XK_Greek_iotaaccentdieresis: int -XK_Greek_omicronaccent: int -XK_Greek_upsilonaccent: int -XK_Greek_upsilondieresis: int -XK_Greek_upsilonaccentdieresis: int -XK_Greek_omegaaccent: int -XK_Greek_ALPHA: int -XK_Greek_BETA: int -XK_Greek_GAMMA: int -XK_Greek_DELTA: int -XK_Greek_EPSILON: int -XK_Greek_ZETA: int -XK_Greek_ETA: int -XK_Greek_THETA: int -XK_Greek_IOTA: int -XK_Greek_KAPPA: int -XK_Greek_LAMDA: int -XK_Greek_LAMBDA: int -XK_Greek_MU: int -XK_Greek_NU: int -XK_Greek_XI: int -XK_Greek_OMICRON: int -XK_Greek_PI: int -XK_Greek_RHO: int -XK_Greek_SIGMA: int -XK_Greek_TAU: int -XK_Greek_UPSILON: int -XK_Greek_PHI: int -XK_Greek_CHI: int -XK_Greek_PSI: int -XK_Greek_OMEGA: int -XK_Greek_alpha: int -XK_Greek_beta: int -XK_Greek_gamma: int -XK_Greek_delta: int -XK_Greek_epsilon: int -XK_Greek_zeta: int -XK_Greek_eta: int -XK_Greek_theta: int -XK_Greek_iota: int -XK_Greek_kappa: int -XK_Greek_lamda: int -XK_Greek_lambda: int -XK_Greek_mu: int -XK_Greek_nu: int -XK_Greek_xi: int -XK_Greek_omicron: int -XK_Greek_pi: int -XK_Greek_rho: int -XK_Greek_sigma: int -XK_Greek_finalsmallsigma: int -XK_Greek_tau: int -XK_Greek_upsilon: int -XK_Greek_phi: int -XK_Greek_chi: int -XK_Greek_psi: int -XK_Greek_omega: int -XK_Greek_switch: int +from typing_extensions import Final + +XK_Greek_ALPHAaccent: Final = 0x7A1 +XK_Greek_EPSILONaccent: Final = 0x7A2 +XK_Greek_ETAaccent: Final = 0x7A3 +XK_Greek_IOTAaccent: Final = 0x7A4 +XK_Greek_IOTAdiaeresis: Final = 0x7A5 +XK_Greek_OMICRONaccent: Final = 0x7A7 +XK_Greek_UPSILONaccent: Final = 0x7A8 +XK_Greek_UPSILONdieresis: Final = 0x7A9 +XK_Greek_OMEGAaccent: Final = 0x7AB +XK_Greek_accentdieresis: Final = 0x7AE +XK_Greek_horizbar: Final = 0x7AF +XK_Greek_alphaaccent: Final = 0x7B1 +XK_Greek_epsilonaccent: Final = 0x7B2 +XK_Greek_etaaccent: Final = 0x7B3 +XK_Greek_iotaaccent: Final = 0x7B4 +XK_Greek_iotadieresis: Final = 0x7B5 +XK_Greek_iotaaccentdieresis: Final = 0x7B6 +XK_Greek_omicronaccent: Final = 0x7B7 +XK_Greek_upsilonaccent: Final = 0x7B8 +XK_Greek_upsilondieresis: Final = 0x7B9 +XK_Greek_upsilonaccentdieresis: Final = 0x7BA +XK_Greek_omegaaccent: Final = 0x7BB +XK_Greek_ALPHA: Final = 0x7C1 +XK_Greek_BETA: Final = 0x7C2 +XK_Greek_GAMMA: Final = 0x7C3 +XK_Greek_DELTA: Final = 0x7C4 +XK_Greek_EPSILON: Final = 0x7C5 +XK_Greek_ZETA: Final = 0x7C6 +XK_Greek_ETA: Final = 0x7C7 +XK_Greek_THETA: Final = 0x7C8 +XK_Greek_IOTA: Final = 0x7C9 +XK_Greek_KAPPA: Final = 0x7CA +XK_Greek_LAMDA: Final = 0x7CB +XK_Greek_LAMBDA: Final = 0x7CB +XK_Greek_MU: Final = 0x7CC +XK_Greek_NU: Final = 0x7CD +XK_Greek_XI: Final = 0x7CE +XK_Greek_OMICRON: Final = 0x7CF +XK_Greek_PI: Final = 0x7D0 +XK_Greek_RHO: Final = 0x7D1 +XK_Greek_SIGMA: Final = 0x7D2 +XK_Greek_TAU: Final = 0x7D4 +XK_Greek_UPSILON: Final = 0x7D5 +XK_Greek_PHI: Final = 0x7D6 +XK_Greek_CHI: Final = 0x7D7 +XK_Greek_PSI: Final = 0x7D8 +XK_Greek_OMEGA: Final = 0x7D9 +XK_Greek_alpha: Final = 0x7E1 +XK_Greek_beta: Final = 0x7E2 +XK_Greek_gamma: Final = 0x7E3 +XK_Greek_delta: Final = 0x7E4 +XK_Greek_epsilon: Final = 0x7E5 +XK_Greek_zeta: Final = 0x7E6 +XK_Greek_eta: Final = 0x7E7 +XK_Greek_theta: Final = 0x7E8 +XK_Greek_iota: Final = 0x7E9 +XK_Greek_kappa: Final = 0x7EA +XK_Greek_lamda: Final = 0x7EB +XK_Greek_lambda: Final = 0x7EB +XK_Greek_mu: Final = 0x7EC +XK_Greek_nu: Final = 0x7ED +XK_Greek_xi: Final = 0x7EE +XK_Greek_omicron: Final = 0x7EF +XK_Greek_pi: Final = 0x7F0 +XK_Greek_rho: Final = 0x7F1 +XK_Greek_sigma: Final = 0x7F2 +XK_Greek_finalsmallsigma: Final = 0x7F3 +XK_Greek_tau: Final = 0x7F4 +XK_Greek_upsilon: Final = 0x7F5 +XK_Greek_phi: Final = 0x7F6 +XK_Greek_chi: Final = 0x7F7 +XK_Greek_psi: Final = 0x7F8 +XK_Greek_omega: Final = 0x7F9 +XK_Greek_switch: Final = 0xFF7E diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/hebrew.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/hebrew.pyi index 5ad28bf8f..cfd97c72d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/hebrew.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/hebrew.pyi @@ -1,40 +1,42 @@ -XK_hebrew_doublelowline: int -XK_hebrew_aleph: int -XK_hebrew_bet: int -XK_hebrew_beth: int -XK_hebrew_gimel: int -XK_hebrew_gimmel: int -XK_hebrew_dalet: int -XK_hebrew_daleth: int -XK_hebrew_he: int -XK_hebrew_waw: int -XK_hebrew_zain: int -XK_hebrew_zayin: int -XK_hebrew_chet: int -XK_hebrew_het: int -XK_hebrew_tet: int -XK_hebrew_teth: int -XK_hebrew_yod: int -XK_hebrew_finalkaph: int -XK_hebrew_kaph: int -XK_hebrew_lamed: int -XK_hebrew_finalmem: int -XK_hebrew_mem: int -XK_hebrew_finalnun: int -XK_hebrew_nun: int -XK_hebrew_samech: int -XK_hebrew_samekh: int -XK_hebrew_ayin: int -XK_hebrew_finalpe: int -XK_hebrew_pe: int -XK_hebrew_finalzade: int -XK_hebrew_finalzadi: int -XK_hebrew_zade: int -XK_hebrew_zadi: int -XK_hebrew_qoph: int -XK_hebrew_kuf: int -XK_hebrew_resh: int -XK_hebrew_shin: int -XK_hebrew_taw: int -XK_hebrew_taf: int -XK_Hebrew_switch: int +from typing_extensions import Final + +XK_hebrew_doublelowline: Final = 0xCDF +XK_hebrew_aleph: Final = 0xCE0 +XK_hebrew_bet: Final = 0xCE1 +XK_hebrew_beth: Final = 0xCE1 +XK_hebrew_gimel: Final = 0xCE2 +XK_hebrew_gimmel: Final = 0xCE2 +XK_hebrew_dalet: Final = 0xCE3 +XK_hebrew_daleth: Final = 0xCE3 +XK_hebrew_he: Final = 0xCE4 +XK_hebrew_waw: Final = 0xCE5 +XK_hebrew_zain: Final = 0xCE6 +XK_hebrew_zayin: Final = 0xCE6 +XK_hebrew_chet: Final = 0xCE7 +XK_hebrew_het: Final = 0xCE7 +XK_hebrew_tet: Final = 0xCE8 +XK_hebrew_teth: Final = 0xCE8 +XK_hebrew_yod: Final = 0xCE9 +XK_hebrew_finalkaph: Final = 0xCEA +XK_hebrew_kaph: Final = 0xCEB +XK_hebrew_lamed: Final = 0xCEC +XK_hebrew_finalmem: Final = 0xCED +XK_hebrew_mem: Final = 0xCEE +XK_hebrew_finalnun: Final = 0xCEF +XK_hebrew_nun: Final = 0xCF0 +XK_hebrew_samech: Final = 0xCF1 +XK_hebrew_samekh: Final = 0xCF1 +XK_hebrew_ayin: Final = 0xCF2 +XK_hebrew_finalpe: Final = 0xCF3 +XK_hebrew_pe: Final = 0xCF4 +XK_hebrew_finalzade: Final = 0xCF5 +XK_hebrew_finalzadi: Final = 0xCF5 +XK_hebrew_zade: Final = 0xCF6 +XK_hebrew_zadi: Final = 0xCF6 +XK_hebrew_qoph: Final = 0xCF7 +XK_hebrew_kuf: Final = 0xCF7 +XK_hebrew_resh: Final = 0xCF8 +XK_hebrew_shin: Final = 0xCF9 +XK_hebrew_taw: Final = 0xCFA +XK_hebrew_taf: Final = 0xCFA +XK_Hebrew_switch: Final = 0xFF7E diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/katakana.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/katakana.pyi index 2480a14c3..449f3a274 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/katakana.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/katakana.pyi @@ -1,70 +1,72 @@ -XK_overline: int -XK_kana_fullstop: int -XK_kana_openingbracket: int -XK_kana_closingbracket: int -XK_kana_comma: int -XK_kana_conjunctive: int -XK_kana_middledot: int -XK_kana_WO: int -XK_kana_a: int -XK_kana_i: int -XK_kana_u: int -XK_kana_e: int -XK_kana_o: int -XK_kana_ya: int -XK_kana_yu: int -XK_kana_yo: int -XK_kana_tsu: int -XK_kana_tu: int -XK_prolongedsound: int -XK_kana_A: int -XK_kana_I: int -XK_kana_U: int -XK_kana_E: int -XK_kana_O: int -XK_kana_KA: int -XK_kana_KI: int -XK_kana_KU: int -XK_kana_KE: int -XK_kana_KO: int -XK_kana_SA: int -XK_kana_SHI: int -XK_kana_SU: int -XK_kana_SE: int -XK_kana_SO: int -XK_kana_TA: int -XK_kana_CHI: int -XK_kana_TI: int -XK_kana_TSU: int -XK_kana_TU: int -XK_kana_TE: int -XK_kana_TO: int -XK_kana_NA: int -XK_kana_NI: int -XK_kana_NU: int -XK_kana_NE: int -XK_kana_NO: int -XK_kana_HA: int -XK_kana_HI: int -XK_kana_FU: int -XK_kana_HU: int -XK_kana_HE: int -XK_kana_HO: int -XK_kana_MA: int -XK_kana_MI: int -XK_kana_MU: int -XK_kana_ME: int -XK_kana_MO: int -XK_kana_YA: int -XK_kana_YU: int -XK_kana_YO: int -XK_kana_RA: int -XK_kana_RI: int -XK_kana_RU: int -XK_kana_RE: int -XK_kana_RO: int -XK_kana_WA: int -XK_kana_N: int -XK_voicedsound: int -XK_semivoicedsound: int -XK_kana_switch: int +from typing_extensions import Final + +XK_overline: Final = 0x47E +XK_kana_fullstop: Final = 0x4A1 +XK_kana_openingbracket: Final = 0x4A2 +XK_kana_closingbracket: Final = 0x4A3 +XK_kana_comma: Final = 0x4A4 +XK_kana_conjunctive: Final = 0x4A5 +XK_kana_middledot: Final = 0x4A5 +XK_kana_WO: Final = 0x4A6 +XK_kana_a: Final = 0x4A7 +XK_kana_i: Final = 0x4A8 +XK_kana_u: Final = 0x4A9 +XK_kana_e: Final = 0x4AA +XK_kana_o: Final = 0x4AB +XK_kana_ya: Final = 0x4AC +XK_kana_yu: Final = 0x4AD +XK_kana_yo: Final = 0x4AE +XK_kana_tsu: Final = 0x4AF +XK_kana_tu: Final = 0x4AF +XK_prolongedsound: Final = 0x4B0 +XK_kana_A: Final = 0x4B1 +XK_kana_I: Final = 0x4B2 +XK_kana_U: Final = 0x4B3 +XK_kana_E: Final = 0x4B4 +XK_kana_O: Final = 0x4B5 +XK_kana_KA: Final = 0x4B6 +XK_kana_KI: Final = 0x4B7 +XK_kana_KU: Final = 0x4B8 +XK_kana_KE: Final = 0x4B9 +XK_kana_KO: Final = 0x4BA +XK_kana_SA: Final = 0x4BB +XK_kana_SHI: Final = 0x4BC +XK_kana_SU: Final = 0x4BD +XK_kana_SE: Final = 0x4BE +XK_kana_SO: Final = 0x4BF +XK_kana_TA: Final = 0x4C0 +XK_kana_CHI: Final = 0x4C1 +XK_kana_TI: Final = 0x4C1 +XK_kana_TSU: Final = 0x4C2 +XK_kana_TU: Final = 0x4C2 +XK_kana_TE: Final = 0x4C3 +XK_kana_TO: Final = 0x4C4 +XK_kana_NA: Final = 0x4C5 +XK_kana_NI: Final = 0x4C6 +XK_kana_NU: Final = 0x4C7 +XK_kana_NE: Final = 0x4C8 +XK_kana_NO: Final = 0x4C9 +XK_kana_HA: Final = 0x4CA +XK_kana_HI: Final = 0x4CB +XK_kana_FU: Final = 0x4CC +XK_kana_HU: Final = 0x4CC +XK_kana_HE: Final = 0x4CD +XK_kana_HO: Final = 0x4CE +XK_kana_MA: Final = 0x4CF +XK_kana_MI: Final = 0x4D0 +XK_kana_MU: Final = 0x4D1 +XK_kana_ME: Final = 0x4D2 +XK_kana_MO: Final = 0x4D3 +XK_kana_YA: Final = 0x4D4 +XK_kana_YU: Final = 0x4D5 +XK_kana_YO: Final = 0x4D6 +XK_kana_RA: Final = 0x4D7 +XK_kana_RI: Final = 0x4D8 +XK_kana_RU: Final = 0x4D9 +XK_kana_RE: Final = 0x4DA +XK_kana_RO: Final = 0x4DB +XK_kana_WA: Final = 0x4DC +XK_kana_N: Final = 0x4DD +XK_voicedsound: Final = 0x4DE +XK_semivoicedsound: Final = 0x4DF +XK_kana_switch: Final = 0xFF7E diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/korean.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/korean.pyi index c3bb31279..5dabcd328 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/korean.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/korean.pyi @@ -1,107 +1,109 @@ -XK_Hangul: int -XK_Hangul_Start: int -XK_Hangul_End: int -XK_Hangul_Hanja: int -XK_Hangul_Jamo: int -XK_Hangul_Romaja: int -XK_Hangul_Codeinput: int -XK_Hangul_Jeonja: int -XK_Hangul_Banja: int -XK_Hangul_PreHanja: int -XK_Hangul_PostHanja: int -XK_Hangul_SingleCandidate: int -XK_Hangul_MultipleCandidate: int -XK_Hangul_PreviousCandidate: int -XK_Hangul_Special: int -XK_Hangul_switch: int -XK_Hangul_Kiyeog: int -XK_Hangul_SsangKiyeog: int -XK_Hangul_KiyeogSios: int -XK_Hangul_Nieun: int -XK_Hangul_NieunJieuj: int -XK_Hangul_NieunHieuh: int -XK_Hangul_Dikeud: int -XK_Hangul_SsangDikeud: int -XK_Hangul_Rieul: int -XK_Hangul_RieulKiyeog: int -XK_Hangul_RieulMieum: int -XK_Hangul_RieulPieub: int -XK_Hangul_RieulSios: int -XK_Hangul_RieulTieut: int -XK_Hangul_RieulPhieuf: int -XK_Hangul_RieulHieuh: int -XK_Hangul_Mieum: int -XK_Hangul_Pieub: int -XK_Hangul_SsangPieub: int -XK_Hangul_PieubSios: int -XK_Hangul_Sios: int -XK_Hangul_SsangSios: int -XK_Hangul_Ieung: int -XK_Hangul_Jieuj: int -XK_Hangul_SsangJieuj: int -XK_Hangul_Cieuc: int -XK_Hangul_Khieuq: int -XK_Hangul_Tieut: int -XK_Hangul_Phieuf: int -XK_Hangul_Hieuh: int -XK_Hangul_A: int -XK_Hangul_AE: int -XK_Hangul_YA: int -XK_Hangul_YAE: int -XK_Hangul_EO: int -XK_Hangul_E: int -XK_Hangul_YEO: int -XK_Hangul_YE: int -XK_Hangul_O: int -XK_Hangul_WA: int -XK_Hangul_WAE: int -XK_Hangul_OE: int -XK_Hangul_YO: int -XK_Hangul_U: int -XK_Hangul_WEO: int -XK_Hangul_WE: int -XK_Hangul_WI: int -XK_Hangul_YU: int -XK_Hangul_EU: int -XK_Hangul_YI: int -XK_Hangul_I: int -XK_Hangul_J_Kiyeog: int -XK_Hangul_J_SsangKiyeog: int -XK_Hangul_J_KiyeogSios: int -XK_Hangul_J_Nieun: int -XK_Hangul_J_NieunJieuj: int -XK_Hangul_J_NieunHieuh: int -XK_Hangul_J_Dikeud: int -XK_Hangul_J_Rieul: int -XK_Hangul_J_RieulKiyeog: int -XK_Hangul_J_RieulMieum: int -XK_Hangul_J_RieulPieub: int -XK_Hangul_J_RieulSios: int -XK_Hangul_J_RieulTieut: int -XK_Hangul_J_RieulPhieuf: int -XK_Hangul_J_RieulHieuh: int -XK_Hangul_J_Mieum: int -XK_Hangul_J_Pieub: int -XK_Hangul_J_PieubSios: int -XK_Hangul_J_Sios: int -XK_Hangul_J_SsangSios: int -XK_Hangul_J_Ieung: int -XK_Hangul_J_Jieuj: int -XK_Hangul_J_Cieuc: int -XK_Hangul_J_Khieuq: int -XK_Hangul_J_Tieut: int -XK_Hangul_J_Phieuf: int -XK_Hangul_J_Hieuh: int -XK_Hangul_RieulYeorinHieuh: int -XK_Hangul_SunkyeongeumMieum: int -XK_Hangul_SunkyeongeumPieub: int -XK_Hangul_PanSios: int -XK_Hangul_KkogjiDalrinIeung: int -XK_Hangul_SunkyeongeumPhieuf: int -XK_Hangul_YeorinHieuh: int -XK_Hangul_AraeA: int -XK_Hangul_AraeAE: int -XK_Hangul_J_PanSios: int -XK_Hangul_J_KkogjiDalrinIeung: int -XK_Hangul_J_YeorinHieuh: int -XK_Korean_Won: int +from typing_extensions import Final + +XK_Hangul: Final = 0xFF31 +XK_Hangul_Start: Final = 0xFF32 +XK_Hangul_End: Final = 0xFF33 +XK_Hangul_Hanja: Final = 0xFF34 +XK_Hangul_Jamo: Final = 0xFF35 +XK_Hangul_Romaja: Final = 0xFF36 +XK_Hangul_Codeinput: Final = 0xFF37 +XK_Hangul_Jeonja: Final = 0xFF38 +XK_Hangul_Banja: Final = 0xFF39 +XK_Hangul_PreHanja: Final = 0xFF3A +XK_Hangul_PostHanja: Final = 0xFF3B +XK_Hangul_SingleCandidate: Final = 0xFF3C +XK_Hangul_MultipleCandidate: Final = 0xFF3D +XK_Hangul_PreviousCandidate: Final = 0xFF3E +XK_Hangul_Special: Final = 0xFF3F +XK_Hangul_switch: Final = 0xFF7E +XK_Hangul_Kiyeog: Final = 0xEA1 +XK_Hangul_SsangKiyeog: Final = 0xEA2 +XK_Hangul_KiyeogSios: Final = 0xEA3 +XK_Hangul_Nieun: Final = 0xEA4 +XK_Hangul_NieunJieuj: Final = 0xEA5 +XK_Hangul_NieunHieuh: Final = 0xEA6 +XK_Hangul_Dikeud: Final = 0xEA7 +XK_Hangul_SsangDikeud: Final = 0xEA8 +XK_Hangul_Rieul: Final = 0xEA9 +XK_Hangul_RieulKiyeog: Final = 0xEAA +XK_Hangul_RieulMieum: Final = 0xEAB +XK_Hangul_RieulPieub: Final = 0xEAC +XK_Hangul_RieulSios: Final = 0xEAD +XK_Hangul_RieulTieut: Final = 0xEAE +XK_Hangul_RieulPhieuf: Final = 0xEAF +XK_Hangul_RieulHieuh: Final = 0xEB0 +XK_Hangul_Mieum: Final = 0xEB1 +XK_Hangul_Pieub: Final = 0xEB2 +XK_Hangul_SsangPieub: Final = 0xEB3 +XK_Hangul_PieubSios: Final = 0xEB4 +XK_Hangul_Sios: Final = 0xEB5 +XK_Hangul_SsangSios: Final = 0xEB6 +XK_Hangul_Ieung: Final = 0xEB7 +XK_Hangul_Jieuj: Final = 0xEB8 +XK_Hangul_SsangJieuj: Final = 0xEB9 +XK_Hangul_Cieuc: Final = 0xEBA +XK_Hangul_Khieuq: Final = 0xEBB +XK_Hangul_Tieut: Final = 0xEBC +XK_Hangul_Phieuf: Final = 0xEBD +XK_Hangul_Hieuh: Final = 0xEBE +XK_Hangul_A: Final = 0xEBF +XK_Hangul_AE: Final = 0xEC0 +XK_Hangul_YA: Final = 0xEC1 +XK_Hangul_YAE: Final = 0xEC2 +XK_Hangul_EO: Final = 0xEC3 +XK_Hangul_E: Final = 0xEC4 +XK_Hangul_YEO: Final = 0xEC5 +XK_Hangul_YE: Final = 0xEC6 +XK_Hangul_O: Final = 0xEC7 +XK_Hangul_WA: Final = 0xEC8 +XK_Hangul_WAE: Final = 0xEC9 +XK_Hangul_OE: Final = 0xECA +XK_Hangul_YO: Final = 0xECB +XK_Hangul_U: Final = 0xECC +XK_Hangul_WEO: Final = 0xECD +XK_Hangul_WE: Final = 0xECE +XK_Hangul_WI: Final = 0xECF +XK_Hangul_YU: Final = 0xED0 +XK_Hangul_EU: Final = 0xED1 +XK_Hangul_YI: Final = 0xED2 +XK_Hangul_I: Final = 0xED3 +XK_Hangul_J_Kiyeog: Final = 0xED4 +XK_Hangul_J_SsangKiyeog: Final = 0xED5 +XK_Hangul_J_KiyeogSios: Final = 0xED6 +XK_Hangul_J_Nieun: Final = 0xED7 +XK_Hangul_J_NieunJieuj: Final = 0xED8 +XK_Hangul_J_NieunHieuh: Final = 0xED9 +XK_Hangul_J_Dikeud: Final = 0xEDA +XK_Hangul_J_Rieul: Final = 0xEDB +XK_Hangul_J_RieulKiyeog: Final = 0xEDC +XK_Hangul_J_RieulMieum: Final = 0xEDD +XK_Hangul_J_RieulPieub: Final = 0xEDE +XK_Hangul_J_RieulSios: Final = 0xEDF +XK_Hangul_J_RieulTieut: Final = 0xEE0 +XK_Hangul_J_RieulPhieuf: Final = 0xEE1 +XK_Hangul_J_RieulHieuh: Final = 0xEE2 +XK_Hangul_J_Mieum: Final = 0xEE3 +XK_Hangul_J_Pieub: Final = 0xEE4 +XK_Hangul_J_PieubSios: Final = 0xEE5 +XK_Hangul_J_Sios: Final = 0xEE6 +XK_Hangul_J_SsangSios: Final = 0xEE7 +XK_Hangul_J_Ieung: Final = 0xEE8 +XK_Hangul_J_Jieuj: Final = 0xEE9 +XK_Hangul_J_Cieuc: Final = 0xEEA +XK_Hangul_J_Khieuq: Final = 0xEEB +XK_Hangul_J_Tieut: Final = 0xEEC +XK_Hangul_J_Phieuf: Final = 0xEED +XK_Hangul_J_Hieuh: Final = 0xEEE +XK_Hangul_RieulYeorinHieuh: Final = 0xEEF +XK_Hangul_SunkyeongeumMieum: Final = 0xEF0 +XK_Hangul_SunkyeongeumPieub: Final = 0xEF1 +XK_Hangul_PanSios: Final = 0xEF2 +XK_Hangul_KkogjiDalrinIeung: Final = 0xEF3 +XK_Hangul_SunkyeongeumPhieuf: Final = 0xEF4 +XK_Hangul_YeorinHieuh: Final = 0xEF5 +XK_Hangul_AraeA: Final = 0xEF6 +XK_Hangul_AraeAE: Final = 0xEF7 +XK_Hangul_J_PanSios: Final = 0xEF8 +XK_Hangul_J_KkogjiDalrinIeung: Final = 0xEF9 +XK_Hangul_J_YeorinHieuh: Final = 0xEFA +XK_Korean_Won: Final = 0xEFF diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin1.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin1.pyi index 6a80d5913..bdc3a5d5c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin1.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin1.pyi @@ -1,195 +1,197 @@ -XK_space: int -XK_exclam: int -XK_quotedbl: int -XK_numbersign: int -XK_dollar: int -XK_percent: int -XK_ampersand: int -XK_apostrophe: int -XK_quoteright: int -XK_parenleft: int -XK_parenright: int -XK_asterisk: int -XK_plus: int -XK_comma: int -XK_minus: int -XK_period: int -XK_slash: int -XK_0: int -XK_1: int -XK_2: int -XK_3: int -XK_4: int -XK_5: int -XK_6: int -XK_7: int -XK_8: int -XK_9: int -XK_colon: int -XK_semicolon: int -XK_less: int -XK_equal: int -XK_greater: int -XK_question: int -XK_at: int -XK_A: int -XK_B: int -XK_C: int -XK_D: int -XK_E: int -XK_F: int -XK_G: int -XK_H: int -XK_I: int -XK_J: int -XK_K: int -XK_L: int -XK_M: int -XK_N: int -XK_O: int -XK_P: int -XK_Q: int -XK_R: int -XK_S: int -XK_T: int -XK_U: int -XK_V: int -XK_W: int -XK_X: int -XK_Y: int -XK_Z: int -XK_bracketleft: int -XK_backslash: int -XK_bracketright: int -XK_asciicircum: int -XK_underscore: int -XK_grave: int -XK_quoteleft: int -XK_a: int -XK_b: int -XK_c: int -XK_d: int -XK_e: int -XK_f: int -XK_g: int -XK_h: int -XK_i: int -XK_j: int -XK_k: int -XK_l: int -XK_m: int -XK_n: int -XK_o: int -XK_p: int -XK_q: int -XK_r: int -XK_s: int -XK_t: int -XK_u: int -XK_v: int -XK_w: int -XK_x: int -XK_y: int -XK_z: int -XK_braceleft: int -XK_bar: int -XK_braceright: int -XK_asciitilde: int -XK_nobreakspace: int -XK_exclamdown: int -XK_cent: int -XK_sterling: int -XK_currency: int -XK_yen: int -XK_brokenbar: int -XK_section: int -XK_diaeresis: int -XK_copyright: int -XK_ordfeminine: int -XK_guillemotleft: int -XK_notsign: int -XK_hyphen: int -XK_registered: int -XK_macron: int -XK_degree: int -XK_plusminus: int -XK_twosuperior: int -XK_threesuperior: int -XK_acute: int -XK_mu: int -XK_paragraph: int -XK_periodcentered: int -XK_cedilla: int -XK_onesuperior: int -XK_masculine: int -XK_guillemotright: int -XK_onequarter: int -XK_onehalf: int -XK_threequarters: int -XK_questiondown: int -XK_Agrave: int -XK_Aacute: int -XK_Acircumflex: int -XK_Atilde: int -XK_Adiaeresis: int -XK_Aring: int -XK_AE: int -XK_Ccedilla: int -XK_Egrave: int -XK_Eacute: int -XK_Ecircumflex: int -XK_Ediaeresis: int -XK_Igrave: int -XK_Iacute: int -XK_Icircumflex: int -XK_Idiaeresis: int -XK_ETH: int -XK_Eth: int -XK_Ntilde: int -XK_Ograve: int -XK_Oacute: int -XK_Ocircumflex: int -XK_Otilde: int -XK_Odiaeresis: int -XK_multiply: int -XK_Ooblique: int -XK_Ugrave: int -XK_Uacute: int -XK_Ucircumflex: int -XK_Udiaeresis: int -XK_Yacute: int -XK_THORN: int -XK_Thorn: int -XK_ssharp: int -XK_agrave: int -XK_aacute: int -XK_acircumflex: int -XK_atilde: int -XK_adiaeresis: int -XK_aring: int -XK_ae: int -XK_ccedilla: int -XK_egrave: int -XK_eacute: int -XK_ecircumflex: int -XK_ediaeresis: int -XK_igrave: int -XK_iacute: int -XK_icircumflex: int -XK_idiaeresis: int -XK_eth: int -XK_ntilde: int -XK_ograve: int -XK_oacute: int -XK_ocircumflex: int -XK_otilde: int -XK_odiaeresis: int -XK_division: int -XK_oslash: int -XK_ugrave: int -XK_uacute: int -XK_ucircumflex: int -XK_udiaeresis: int -XK_yacute: int -XK_thorn: int -XK_ydiaeresis: int +from typing_extensions import Final + +XK_space: Final = 0x020 +XK_exclam: Final = 0x021 +XK_quotedbl: Final = 0x022 +XK_numbersign: Final = 0x023 +XK_dollar: Final = 0x024 +XK_percent: Final = 0x025 +XK_ampersand: Final = 0x026 +XK_apostrophe: Final = 0x027 +XK_quoteright: Final = 0x027 +XK_parenleft: Final = 0x028 +XK_parenright: Final = 0x029 +XK_asterisk: Final = 0x02A +XK_plus: Final = 0x02B +XK_comma: Final = 0x02C +XK_minus: Final = 0x02D +XK_period: Final = 0x02E +XK_slash: Final = 0x02F +XK_0: Final = 0x030 +XK_1: Final = 0x031 +XK_2: Final = 0x032 +XK_3: Final = 0x033 +XK_4: Final = 0x034 +XK_5: Final = 0x035 +XK_6: Final = 0x036 +XK_7: Final = 0x037 +XK_8: Final = 0x038 +XK_9: Final = 0x039 +XK_colon: Final = 0x03A +XK_semicolon: Final = 0x03B +XK_less: Final = 0x03C +XK_equal: Final = 0x03D +XK_greater: Final = 0x03E +XK_question: Final = 0x03F +XK_at: Final = 0x040 +XK_A: Final = 0x041 +XK_B: Final = 0x042 +XK_C: Final = 0x043 +XK_D: Final = 0x044 +XK_E: Final = 0x045 +XK_F: Final = 0x046 +XK_G: Final = 0x047 +XK_H: Final = 0x048 +XK_I: Final = 0x049 +XK_J: Final = 0x04A +XK_K: Final = 0x04B +XK_L: Final = 0x04C +XK_M: Final = 0x04D +XK_N: Final = 0x04E +XK_O: Final = 0x04F +XK_P: Final = 0x050 +XK_Q: Final = 0x051 +XK_R: Final = 0x052 +XK_S: Final = 0x053 +XK_T: Final = 0x054 +XK_U: Final = 0x055 +XK_V: Final = 0x056 +XK_W: Final = 0x057 +XK_X: Final = 0x058 +XK_Y: Final = 0x059 +XK_Z: Final = 0x05A +XK_bracketleft: Final = 0x05B +XK_backslash: Final = 0x05C +XK_bracketright: Final = 0x05D +XK_asciicircum: Final = 0x05E +XK_underscore: Final = 0x05F +XK_grave: Final = 0x060 +XK_quoteleft: Final = 0x060 +XK_a: Final = 0x061 +XK_b: Final = 0x062 +XK_c: Final = 0x063 +XK_d: Final = 0x064 +XK_e: Final = 0x065 +XK_f: Final = 0x066 +XK_g: Final = 0x067 +XK_h: Final = 0x068 +XK_i: Final = 0x069 +XK_j: Final = 0x06A +XK_k: Final = 0x06B +XK_l: Final = 0x06C +XK_m: Final = 0x06D +XK_n: Final = 0x06E +XK_o: Final = 0x06F +XK_p: Final = 0x070 +XK_q: Final = 0x071 +XK_r: Final = 0x072 +XK_s: Final = 0x073 +XK_t: Final = 0x074 +XK_u: Final = 0x075 +XK_v: Final = 0x076 +XK_w: Final = 0x077 +XK_x: Final = 0x078 +XK_y: Final = 0x079 +XK_z: Final = 0x07A +XK_braceleft: Final = 0x07B +XK_bar: Final = 0x07C +XK_braceright: Final = 0x07D +XK_asciitilde: Final = 0x07E +XK_nobreakspace: Final = 0x0A0 +XK_exclamdown: Final = 0x0A1 +XK_cent: Final = 0x0A2 +XK_sterling: Final = 0x0A3 +XK_currency: Final = 0x0A4 +XK_yen: Final = 0x0A5 +XK_brokenbar: Final = 0x0A6 +XK_section: Final = 0x0A7 +XK_diaeresis: Final = 0x0A8 +XK_copyright: Final = 0x0A9 +XK_ordfeminine: Final = 0x0AA +XK_guillemotleft: Final = 0x0AB +XK_notsign: Final = 0x0AC +XK_hyphen: Final = 0x0AD +XK_registered: Final = 0x0AE +XK_macron: Final = 0x0AF +XK_degree: Final = 0x0B0 +XK_plusminus: Final = 0x0B1 +XK_twosuperior: Final = 0x0B2 +XK_threesuperior: Final = 0x0B3 +XK_acute: Final = 0x0B4 +XK_mu: Final = 0x0B5 +XK_paragraph: Final = 0x0B6 +XK_periodcentered: Final = 0x0B7 +XK_cedilla: Final = 0x0B8 +XK_onesuperior: Final = 0x0B9 +XK_masculine: Final = 0x0BA +XK_guillemotright: Final = 0x0BB +XK_onequarter: Final = 0x0BC +XK_onehalf: Final = 0x0BD +XK_threequarters: Final = 0x0BE +XK_questiondown: Final = 0x0BF +XK_Agrave: Final = 0x0C0 +XK_Aacute: Final = 0x0C1 +XK_Acircumflex: Final = 0x0C2 +XK_Atilde: Final = 0x0C3 +XK_Adiaeresis: Final = 0x0C4 +XK_Aring: Final = 0x0C5 +XK_AE: Final = 0x0C6 +XK_Ccedilla: Final = 0x0C7 +XK_Egrave: Final = 0x0C8 +XK_Eacute: Final = 0x0C9 +XK_Ecircumflex: Final = 0x0CA +XK_Ediaeresis: Final = 0x0CB +XK_Igrave: Final = 0x0CC +XK_Iacute: Final = 0x0CD +XK_Icircumflex: Final = 0x0CE +XK_Idiaeresis: Final = 0x0CF +XK_ETH: Final = 0x0D0 +XK_Eth: Final = 0x0D0 +XK_Ntilde: Final = 0x0D1 +XK_Ograve: Final = 0x0D2 +XK_Oacute: Final = 0x0D3 +XK_Ocircumflex: Final = 0x0D4 +XK_Otilde: Final = 0x0D5 +XK_Odiaeresis: Final = 0x0D6 +XK_multiply: Final = 0x0D7 +XK_Ooblique: Final = 0x0D8 +XK_Ugrave: Final = 0x0D9 +XK_Uacute: Final = 0x0DA +XK_Ucircumflex: Final = 0x0DB +XK_Udiaeresis: Final = 0x0DC +XK_Yacute: Final = 0x0DD +XK_THORN: Final = 0x0DE +XK_Thorn: Final = 0x0DE +XK_ssharp: Final = 0x0DF +XK_agrave: Final = 0x0E0 +XK_aacute: Final = 0x0E1 +XK_acircumflex: Final = 0x0E2 +XK_atilde: Final = 0x0E3 +XK_adiaeresis: Final = 0x0E4 +XK_aring: Final = 0x0E5 +XK_ae: Final = 0x0E6 +XK_ccedilla: Final = 0x0E7 +XK_egrave: Final = 0x0E8 +XK_eacute: Final = 0x0E9 +XK_ecircumflex: Final = 0x0EA +XK_ediaeresis: Final = 0x0EB +XK_igrave: Final = 0x0EC +XK_iacute: Final = 0x0ED +XK_icircumflex: Final = 0x0EE +XK_idiaeresis: Final = 0x0EF +XK_eth: Final = 0x0F0 +XK_ntilde: Final = 0x0F1 +XK_ograve: Final = 0x0F2 +XK_oacute: Final = 0x0F3 +XK_ocircumflex: Final = 0x0F4 +XK_otilde: Final = 0x0F5 +XK_odiaeresis: Final = 0x0F6 +XK_division: Final = 0x0F7 +XK_oslash: Final = 0x0F8 +XK_ugrave: Final = 0x0F9 +XK_uacute: Final = 0x0FA +XK_ucircumflex: Final = 0x0FB +XK_udiaeresis: Final = 0x0FC +XK_yacute: Final = 0x0FD +XK_thorn: Final = 0x0FE +XK_ydiaeresis: Final = 0x0FF diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin2.pyi index 308f7277d..406254b9e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin2.pyi @@ -1,57 +1,59 @@ -XK_Aogonek: int -XK_breve: int -XK_Lstroke: int -XK_Lcaron: int -XK_Sacute: int -XK_Scaron: int -XK_Scedilla: int -XK_Tcaron: int -XK_Zacute: int -XK_Zcaron: int -XK_Zabovedot: int -XK_aogonek: int -XK_ogonek: int -XK_lstroke: int -XK_lcaron: int -XK_sacute: int -XK_caron: int -XK_scaron: int -XK_scedilla: int -XK_tcaron: int -XK_zacute: int -XK_doubleacute: int -XK_zcaron: int -XK_zabovedot: int -XK_Racute: int -XK_Abreve: int -XK_Lacute: int -XK_Cacute: int -XK_Ccaron: int -XK_Eogonek: int -XK_Ecaron: int -XK_Dcaron: int -XK_Dstroke: int -XK_Nacute: int -XK_Ncaron: int -XK_Odoubleacute: int -XK_Rcaron: int -XK_Uring: int -XK_Udoubleacute: int -XK_Tcedilla: int -XK_racute: int -XK_abreve: int -XK_lacute: int -XK_cacute: int -XK_ccaron: int -XK_eogonek: int -XK_ecaron: int -XK_dcaron: int -XK_dstroke: int -XK_nacute: int -XK_ncaron: int -XK_odoubleacute: int -XK_udoubleacute: int -XK_rcaron: int -XK_uring: int -XK_tcedilla: int -XK_abovedot: int +from typing_extensions import Final + +XK_Aogonek: Final = 0x1A1 +XK_breve: Final = 0x1A2 +XK_Lstroke: Final = 0x1A3 +XK_Lcaron: Final = 0x1A5 +XK_Sacute: Final = 0x1A6 +XK_Scaron: Final = 0x1A9 +XK_Scedilla: Final = 0x1AA +XK_Tcaron: Final = 0x1AB +XK_Zacute: Final = 0x1AC +XK_Zcaron: Final = 0x1AE +XK_Zabovedot: Final = 0x1AF +XK_aogonek: Final = 0x1B1 +XK_ogonek: Final = 0x1B2 +XK_lstroke: Final = 0x1B3 +XK_lcaron: Final = 0x1B5 +XK_sacute: Final = 0x1B6 +XK_caron: Final = 0x1B7 +XK_scaron: Final = 0x1B9 +XK_scedilla: Final = 0x1BA +XK_tcaron: Final = 0x1BB +XK_zacute: Final = 0x1BC +XK_doubleacute: Final = 0x1BD +XK_zcaron: Final = 0x1BE +XK_zabovedot: Final = 0x1BF +XK_Racute: Final = 0x1C0 +XK_Abreve: Final = 0x1C3 +XK_Lacute: Final = 0x1C5 +XK_Cacute: Final = 0x1C6 +XK_Ccaron: Final = 0x1C8 +XK_Eogonek: Final = 0x1CA +XK_Ecaron: Final = 0x1CC +XK_Dcaron: Final = 0x1CF +XK_Dstroke: Final = 0x1D0 +XK_Nacute: Final = 0x1D1 +XK_Ncaron: Final = 0x1D2 +XK_Odoubleacute: Final = 0x1D5 +XK_Rcaron: Final = 0x1D8 +XK_Uring: Final = 0x1D9 +XK_Udoubleacute: Final = 0x1DB +XK_Tcedilla: Final = 0x1DE +XK_racute: Final = 0x1E0 +XK_abreve: Final = 0x1E3 +XK_lacute: Final = 0x1E5 +XK_cacute: Final = 0x1E6 +XK_ccaron: Final = 0x1E8 +XK_eogonek: Final = 0x1EA +XK_ecaron: Final = 0x1EC +XK_dcaron: Final = 0x1EF +XK_dstroke: Final = 0x1F0 +XK_nacute: Final = 0x1F1 +XK_ncaron: Final = 0x1F2 +XK_odoubleacute: Final = 0x1F5 +XK_udoubleacute: Final = 0x1FB +XK_rcaron: Final = 0x1F8 +XK_uring: Final = 0x1F9 +XK_tcedilla: Final = 0x1FE +XK_abovedot: Final = 0x1FF diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin3.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin3.pyi index dd8030813..df345c9a7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin3.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin3.pyi @@ -1,22 +1,24 @@ -XK_Hstroke: int -XK_Hcircumflex: int -XK_Iabovedot: int -XK_Gbreve: int -XK_Jcircumflex: int -XK_hstroke: int -XK_hcircumflex: int -XK_idotless: int -XK_gbreve: int -XK_jcircumflex: int -XK_Cabovedot: int -XK_Ccircumflex: int -XK_Gabovedot: int -XK_Gcircumflex: int -XK_Ubreve: int -XK_Scircumflex: int -XK_cabovedot: int -XK_ccircumflex: int -XK_gabovedot: int -XK_gcircumflex: int -XK_ubreve: int -XK_scircumflex: int +from typing_extensions import Final + +XK_Hstroke: Final = 0x2A1 +XK_Hcircumflex: Final = 0x2A6 +XK_Iabovedot: Final = 0x2A9 +XK_Gbreve: Final = 0x2AB +XK_Jcircumflex: Final = 0x2AC +XK_hstroke: Final = 0x2B1 +XK_hcircumflex: Final = 0x2B6 +XK_idotless: Final = 0x2B9 +XK_gbreve: Final = 0x2BB +XK_jcircumflex: Final = 0x2BC +XK_Cabovedot: Final = 0x2C5 +XK_Ccircumflex: Final = 0x2C6 +XK_Gabovedot: Final = 0x2D5 +XK_Gcircumflex: Final = 0x2D8 +XK_Ubreve: Final = 0x2DD +XK_Scircumflex: Final = 0x2DE +XK_cabovedot: Final = 0x2E5 +XK_ccircumflex: Final = 0x2E6 +XK_gabovedot: Final = 0x2F5 +XK_gcircumflex: Final = 0x2F8 +XK_ubreve: Final = 0x2FD +XK_scircumflex: Final = 0x2FE diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin4.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin4.pyi index 278d7cc91..8d2251b7c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin4.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/latin4.pyi @@ -1,36 +1,38 @@ -XK_kra: int -XK_kappa: int -XK_Rcedilla: int -XK_Itilde: int -XK_Lcedilla: int -XK_Emacron: int -XK_Gcedilla: int -XK_Tslash: int -XK_rcedilla: int -XK_itilde: int -XK_lcedilla: int -XK_emacron: int -XK_gcedilla: int -XK_tslash: int -XK_ENG: int -XK_eng: int -XK_Amacron: int -XK_Iogonek: int -XK_Eabovedot: int -XK_Imacron: int -XK_Ncedilla: int -XK_Omacron: int -XK_Kcedilla: int -XK_Uogonek: int -XK_Utilde: int -XK_Umacron: int -XK_amacron: int -XK_iogonek: int -XK_eabovedot: int -XK_imacron: int -XK_ncedilla: int -XK_omacron: int -XK_kcedilla: int -XK_uogonek: int -XK_utilde: int -XK_umacron: int +from typing_extensions import Final + +XK_kra: Final = 0x3A2 +XK_kappa: Final = 0x3A2 +XK_Rcedilla: Final = 0x3A3 +XK_Itilde: Final = 0x3A5 +XK_Lcedilla: Final = 0x3A6 +XK_Emacron: Final = 0x3AA +XK_Gcedilla: Final = 0x3AB +XK_Tslash: Final = 0x3AC +XK_rcedilla: Final = 0x3B3 +XK_itilde: Final = 0x3B5 +XK_lcedilla: Final = 0x3B6 +XK_emacron: Final = 0x3BA +XK_gcedilla: Final = 0x3BB +XK_tslash: Final = 0x3BC +XK_ENG: Final = 0x3BD +XK_eng: Final = 0x3BF +XK_Amacron: Final = 0x3C0 +XK_Iogonek: Final = 0x3C7 +XK_Eabovedot: Final = 0x3CC +XK_Imacron: Final = 0x3CF +XK_Ncedilla: Final = 0x3D1 +XK_Omacron: Final = 0x3D2 +XK_Kcedilla: Final = 0x3D3 +XK_Uogonek: Final = 0x3D9 +XK_Utilde: Final = 0x3DD +XK_Umacron: Final = 0x3DE +XK_amacron: Final = 0x3E0 +XK_iogonek: Final = 0x3E7 +XK_eabovedot: Final = 0x3EC +XK_imacron: Final = 0x3EF +XK_ncedilla: Final = 0x3F1 +XK_omacron: Final = 0x3F2 +XK_kcedilla: Final = 0x3F3 +XK_uogonek: Final = 0x3F9 +XK_utilde: Final = 0x3FD +XK_umacron: Final = 0x3FE diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/miscellany.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/miscellany.pyi index ecf77b848..f8e8b9db0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/miscellany.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/miscellany.pyi @@ -1,169 +1,171 @@ -XK_BackSpace: int -XK_Tab: int -XK_Linefeed: int -XK_Clear: int -XK_Return: int -XK_Pause: int -XK_Scroll_Lock: int -XK_Sys_Req: int -XK_Escape: int -XK_Delete: int -XK_Multi_key: int -XK_SingleCandidate: int -XK_MultipleCandidate: int -XK_PreviousCandidate: int -XK_Kanji: int -XK_Muhenkan: int -XK_Henkan_Mode: int -XK_Henkan: int -XK_Romaji: int -XK_Hiragana: int -XK_Katakana: int -XK_Hiragana_Katakana: int -XK_Zenkaku: int -XK_Hankaku: int -XK_Zenkaku_Hankaku: int -XK_Touroku: int -XK_Massyo: int -XK_Kana_Lock: int -XK_Kana_Shift: int -XK_Eisu_Shift: int -XK_Eisu_toggle: int -XK_Zen_Koho: int -XK_Mae_Koho: int -XK_Home: int -XK_Left: int -XK_Up: int -XK_Right: int -XK_Down: int -XK_Prior: int -XK_Page_Up: int -XK_Next: int -XK_Page_Down: int -XK_End: int -XK_Begin: int -XK_Select: int -XK_Print: int -XK_Execute: int -XK_Insert: int -XK_Undo: int -XK_Redo: int -XK_Menu: int -XK_Find: int -XK_Cancel: int -XK_Help: int -XK_Break: int -XK_Mode_switch: int -XK_script_switch: int -XK_Num_Lock: int -XK_KP_Space: int -XK_KP_Tab: int -XK_KP_Enter: int -XK_KP_F1: int -XK_KP_F2: int -XK_KP_F3: int -XK_KP_F4: int -XK_KP_Home: int -XK_KP_Left: int -XK_KP_Up: int -XK_KP_Right: int -XK_KP_Down: int -XK_KP_Prior: int -XK_KP_Page_Up: int -XK_KP_Next: int -XK_KP_Page_Down: int -XK_KP_End: int -XK_KP_Begin: int -XK_KP_Insert: int -XK_KP_Delete: int -XK_KP_Equal: int -XK_KP_Multiply: int -XK_KP_Add: int -XK_KP_Separator: int -XK_KP_Subtract: int -XK_KP_Decimal: int -XK_KP_Divide: int -XK_KP_0: int -XK_KP_1: int -XK_KP_2: int -XK_KP_3: int -XK_KP_4: int -XK_KP_5: int -XK_KP_6: int -XK_KP_7: int -XK_KP_8: int -XK_KP_9: int -XK_F1: int -XK_F2: int -XK_F3: int -XK_F4: int -XK_F5: int -XK_F6: int -XK_F7: int -XK_F8: int -XK_F9: int -XK_F10: int -XK_F11: int -XK_L1: int -XK_F12: int -XK_L2: int -XK_F13: int -XK_L3: int -XK_F14: int -XK_L4: int -XK_F15: int -XK_L5: int -XK_F16: int -XK_L6: int -XK_F17: int -XK_L7: int -XK_F18: int -XK_L8: int -XK_F19: int -XK_L9: int -XK_F20: int -XK_L10: int -XK_F21: int -XK_R1: int -XK_F22: int -XK_R2: int -XK_F23: int -XK_R3: int -XK_F24: int -XK_R4: int -XK_F25: int -XK_R5: int -XK_F26: int -XK_R6: int -XK_F27: int -XK_R7: int -XK_F28: int -XK_R8: int -XK_F29: int -XK_R9: int -XK_F30: int -XK_R10: int -XK_F31: int -XK_R11: int -XK_F32: int -XK_R12: int -XK_F33: int -XK_R13: int -XK_F34: int -XK_R14: int -XK_F35: int -XK_R15: int -XK_Shift_L: int -XK_Shift_R: int -XK_Control_L: int -XK_Control_R: int -XK_Caps_Lock: int -XK_Shift_Lock: int -XK_Meta_L: int -XK_Meta_R: int -XK_Alt_L: int -XK_Alt_R: int -XK_Super_L: int -XK_Super_R: int -XK_Hyper_L: int -XK_Hyper_R: int +from typing_extensions import Final + +XK_BackSpace: Final = 0xFF08 +XK_Tab: Final = 0xFF09 +XK_Linefeed: Final = 0xFF0A +XK_Clear: Final = 0xFF0B +XK_Return: Final = 0xFF0D +XK_Pause: Final = 0xFF13 +XK_Scroll_Lock: Final = 0xFF14 +XK_Sys_Req: Final = 0xFF15 +XK_Escape: Final = 0xFF1B +XK_Delete: Final = 0xFFFF +XK_Multi_key: Final = 0xFF20 +XK_SingleCandidate: Final = 0xFF3C +XK_MultipleCandidate: Final = 0xFF3D +XK_PreviousCandidate: Final = 0xFF3E +XK_Kanji: Final = 0xFF21 +XK_Muhenkan: Final = 0xFF22 +XK_Henkan_Mode: Final = 0xFF23 +XK_Henkan: Final = 0xFF23 +XK_Romaji: Final = 0xFF24 +XK_Hiragana: Final = 0xFF25 +XK_Katakana: Final = 0xFF26 +XK_Hiragana_Katakana: Final = 0xFF27 +XK_Zenkaku: Final = 0xFF28 +XK_Hankaku: Final = 0xFF29 +XK_Zenkaku_Hankaku: Final = 0xFF2A +XK_Touroku: Final = 0xFF2B +XK_Massyo: Final = 0xFF2C +XK_Kana_Lock: Final = 0xFF2D +XK_Kana_Shift: Final = 0xFF2E +XK_Eisu_Shift: Final = 0xFF2F +XK_Eisu_toggle: Final = 0xFF30 +XK_Zen_Koho: Final = 0xFF3D +XK_Mae_Koho: Final = 0xFF3E +XK_Home: Final = 0xFF50 +XK_Left: Final = 0xFF51 +XK_Up: Final = 0xFF52 +XK_Right: Final = 0xFF53 +XK_Down: Final = 0xFF54 +XK_Prior: Final = 0xFF55 +XK_Page_Up: Final = 0xFF55 +XK_Next: Final = 0xFF56 +XK_Page_Down: Final = 0xFF56 +XK_End: Final = 0xFF57 +XK_Begin: Final = 0xFF58 +XK_Select: Final = 0xFF60 +XK_Print: Final = 0xFF61 +XK_Execute: Final = 0xFF62 +XK_Insert: Final = 0xFF63 +XK_Undo: Final = 0xFF65 +XK_Redo: Final = 0xFF66 +XK_Menu: Final = 0xFF67 +XK_Find: Final = 0xFF68 +XK_Cancel: Final = 0xFF69 +XK_Help: Final = 0xFF6A +XK_Break: Final = 0xFF6B +XK_Mode_switch: Final = 0xFF7E +XK_script_switch: Final = 0xFF7E +XK_Num_Lock: Final = 0xFF7F +XK_KP_Space: Final = 0xFF80 +XK_KP_Tab: Final = 0xFF89 +XK_KP_Enter: Final = 0xFF8D +XK_KP_F1: Final = 0xFF91 +XK_KP_F2: Final = 0xFF92 +XK_KP_F3: Final = 0xFF93 +XK_KP_F4: Final = 0xFF94 +XK_KP_Home: Final = 0xFF95 +XK_KP_Left: Final = 0xFF96 +XK_KP_Up: Final = 0xFF97 +XK_KP_Right: Final = 0xFF98 +XK_KP_Down: Final = 0xFF99 +XK_KP_Prior: Final = 0xFF9A +XK_KP_Page_Up: Final = 0xFF9A +XK_KP_Next: Final = 0xFF9B +XK_KP_Page_Down: Final = 0xFF9B +XK_KP_End: Final = 0xFF9C +XK_KP_Begin: Final = 0xFF9D +XK_KP_Insert: Final = 0xFF9E +XK_KP_Delete: Final = 0xFF9F +XK_KP_Equal: Final = 0xFFBD +XK_KP_Multiply: Final = 0xFFAA +XK_KP_Add: Final = 0xFFAB +XK_KP_Separator: Final = 0xFFAC +XK_KP_Subtract: Final = 0xFFAD +XK_KP_Decimal: Final = 0xFFAE +XK_KP_Divide: Final = 0xFFAF +XK_KP_0: Final = 0xFFB0 +XK_KP_1: Final = 0xFFB1 +XK_KP_2: Final = 0xFFB2 +XK_KP_3: Final = 0xFFB3 +XK_KP_4: Final = 0xFFB4 +XK_KP_5: Final = 0xFFB5 +XK_KP_6: Final = 0xFFB6 +XK_KP_7: Final = 0xFFB7 +XK_KP_8: Final = 0xFFB8 +XK_KP_9: Final = 0xFFB9 +XK_F1: Final = 0xFFBE +XK_F2: Final = 0xFFBF +XK_F3: Final = 0xFFC0 +XK_F4: Final = 0xFFC1 +XK_F5: Final = 0xFFC2 +XK_F6: Final = 0xFFC3 +XK_F7: Final = 0xFFC4 +XK_F8: Final = 0xFFC5 +XK_F9: Final = 0xFFC6 +XK_F10: Final = 0xFFC7 +XK_F11: Final = 0xFFC8 +XK_L1: Final = 0xFFC8 +XK_F12: Final = 0xFFC9 +XK_L2: Final = 0xFFC9 +XK_F13: Final = 0xFFCA +XK_L3: Final = 0xFFCA +XK_F14: Final = 0xFFCB +XK_L4: Final = 0xFFCB +XK_F15: Final = 0xFFCC +XK_L5: Final = 0xFFCC +XK_F16: Final = 0xFFCD +XK_L6: Final = 0xFFCD +XK_F17: Final = 0xFFCE +XK_L7: Final = 0xFFCE +XK_F18: Final = 0xFFCF +XK_L8: Final = 0xFFCF +XK_F19: Final = 0xFFD0 +XK_L9: Final = 0xFFD0 +XK_F20: Final = 0xFFD1 +XK_L10: Final = 0xFFD1 +XK_F21: Final = 0xFFD2 +XK_R1: Final = 0xFFD2 +XK_F22: Final = 0xFFD3 +XK_R2: Final = 0xFFD3 +XK_F23: Final = 0xFFD4 +XK_R3: Final = 0xFFD4 +XK_F24: Final = 0xFFD5 +XK_R4: Final = 0xFFD5 +XK_F25: Final = 0xFFD6 +XK_R5: Final = 0xFFD6 +XK_F26: Final = 0xFFD7 +XK_R6: Final = 0xFFD7 +XK_F27: Final = 0xFFD8 +XK_R7: Final = 0xFFD8 +XK_F28: Final = 0xFFD9 +XK_R8: Final = 0xFFD9 +XK_F29: Final = 0xFFDA +XK_R9: Final = 0xFFDA +XK_F30: Final = 0xFFDB +XK_R10: Final = 0xFFDB +XK_F31: Final = 0xFFDC +XK_R11: Final = 0xFFDC +XK_F32: Final = 0xFFDD +XK_R12: Final = 0xFFDD +XK_F33: Final = 0xFFDE +XK_R13: Final = 0xFFDE +XK_F34: Final = 0xFFDF +XK_R14: Final = 0xFFDF +XK_F35: Final = 0xFFE0 +XK_R15: Final = 0xFFE0 +XK_Shift_L: Final = 0xFFE1 +XK_Shift_R: Final = 0xFFE2 +XK_Control_L: Final = 0xFFE3 +XK_Control_R: Final = 0xFFE4 +XK_Caps_Lock: Final = 0xFFE5 +XK_Shift_Lock: Final = 0xFFE6 +XK_Meta_L: Final = 0xFFE7 +XK_Meta_R: Final = 0xFFE8 +XK_Alt_L: Final = 0xFFE9 +XK_Alt_R: Final = 0xFFEA +XK_Super_L: Final = 0xFFEB +XK_Super_R: Final = 0xFFEC +XK_Hyper_L: Final = 0xFFED +XK_Hyper_R: Final = 0xFFEE diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/publishing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/publishing.pyi index 50c1f0207..9525136a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/publishing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/publishing.pyi @@ -1,83 +1,85 @@ -XK_emspace: int -XK_enspace: int -XK_em3space: int -XK_em4space: int -XK_digitspace: int -XK_punctspace: int -XK_thinspace: int -XK_hairspace: int -XK_emdash: int -XK_endash: int -XK_signifblank: int -XK_ellipsis: int -XK_doubbaselinedot: int -XK_onethird: int -XK_twothirds: int -XK_onefifth: int -XK_twofifths: int -XK_threefifths: int -XK_fourfifths: int -XK_onesixth: int -XK_fivesixths: int -XK_careof: int -XK_figdash: int -XK_leftanglebracket: int -XK_decimalpoint: int -XK_rightanglebracket: int -XK_marker: int -XK_oneeighth: int -XK_threeeighths: int -XK_fiveeighths: int -XK_seveneighths: int -XK_trademark: int -XK_signaturemark: int -XK_trademarkincircle: int -XK_leftopentriangle: int -XK_rightopentriangle: int -XK_emopencircle: int -XK_emopenrectangle: int -XK_leftsinglequotemark: int -XK_rightsinglequotemark: int -XK_leftdoublequotemark: int -XK_rightdoublequotemark: int -XK_prescription: int -XK_minutes: int -XK_seconds: int -XK_latincross: int -XK_hexagram: int -XK_filledrectbullet: int -XK_filledlefttribullet: int -XK_filledrighttribullet: int -XK_emfilledcircle: int -XK_emfilledrect: int -XK_enopencircbullet: int -XK_enopensquarebullet: int -XK_openrectbullet: int -XK_opentribulletup: int -XK_opentribulletdown: int -XK_openstar: int -XK_enfilledcircbullet: int -XK_enfilledsqbullet: int -XK_filledtribulletup: int -XK_filledtribulletdown: int -XK_leftpointer: int -XK_rightpointer: int -XK_club: int -XK_diamond: int -XK_heart: int -XK_maltesecross: int -XK_dagger: int -XK_doubledagger: int -XK_checkmark: int -XK_ballotcross: int -XK_musicalsharp: int -XK_musicalflat: int -XK_malesymbol: int -XK_femalesymbol: int -XK_telephone: int -XK_telephonerecorder: int -XK_phonographcopyright: int -XK_caret: int -XK_singlelowquotemark: int -XK_doublelowquotemark: int -XK_cursor: int +from typing_extensions import Final + +XK_emspace: Final = 0xAA1 +XK_enspace: Final = 0xAA2 +XK_em3space: Final = 0xAA3 +XK_em4space: Final = 0xAA4 +XK_digitspace: Final = 0xAA5 +XK_punctspace: Final = 0xAA6 +XK_thinspace: Final = 0xAA7 +XK_hairspace: Final = 0xAA8 +XK_emdash: Final = 0xAA9 +XK_endash: Final = 0xAAA +XK_signifblank: Final = 0xAAC +XK_ellipsis: Final = 0xAAE +XK_doubbaselinedot: Final = 0xAAF +XK_onethird: Final = 0xAB0 +XK_twothirds: Final = 0xAB1 +XK_onefifth: Final = 0xAB2 +XK_twofifths: Final = 0xAB3 +XK_threefifths: Final = 0xAB4 +XK_fourfifths: Final = 0xAB5 +XK_onesixth: Final = 0xAB6 +XK_fivesixths: Final = 0xAB7 +XK_careof: Final = 0xAB8 +XK_figdash: Final = 0xABB +XK_leftanglebracket: Final = 0xABC +XK_decimalpoint: Final = 0xABD +XK_rightanglebracket: Final = 0xABE +XK_marker: Final = 0xABF +XK_oneeighth: Final = 0xAC3 +XK_threeeighths: Final = 0xAC4 +XK_fiveeighths: Final = 0xAC5 +XK_seveneighths: Final = 0xAC6 +XK_trademark: Final = 0xAC9 +XK_signaturemark: Final = 0xACA +XK_trademarkincircle: Final = 0xACB +XK_leftopentriangle: Final = 0xACC +XK_rightopentriangle: Final = 0xACD +XK_emopencircle: Final = 0xACE +XK_emopenrectangle: Final = 0xACF +XK_leftsinglequotemark: Final = 0xAD0 +XK_rightsinglequotemark: Final = 0xAD1 +XK_leftdoublequotemark: Final = 0xAD2 +XK_rightdoublequotemark: Final = 0xAD3 +XK_prescription: Final = 0xAD4 +XK_minutes: Final = 0xAD6 +XK_seconds: Final = 0xAD7 +XK_latincross: Final = 0xAD9 +XK_hexagram: Final = 0xADA +XK_filledrectbullet: Final = 0xADB +XK_filledlefttribullet: Final = 0xADC +XK_filledrighttribullet: Final = 0xADD +XK_emfilledcircle: Final = 0xADE +XK_emfilledrect: Final = 0xADF +XK_enopencircbullet: Final = 0xAE0 +XK_enopensquarebullet: Final = 0xAE1 +XK_openrectbullet: Final = 0xAE2 +XK_opentribulletup: Final = 0xAE3 +XK_opentribulletdown: Final = 0xAE4 +XK_openstar: Final = 0xAE5 +XK_enfilledcircbullet: Final = 0xAE6 +XK_enfilledsqbullet: Final = 0xAE7 +XK_filledtribulletup: Final = 0xAE8 +XK_filledtribulletdown: Final = 0xAE9 +XK_leftpointer: Final = 0xAEA +XK_rightpointer: Final = 0xAEB +XK_club: Final = 0xAEC +XK_diamond: Final = 0xAED +XK_heart: Final = 0xAEE +XK_maltesecross: Final = 0xAF0 +XK_dagger: Final = 0xAF1 +XK_doubledagger: Final = 0xAF2 +XK_checkmark: Final = 0xAF3 +XK_ballotcross: Final = 0xAF4 +XK_musicalsharp: Final = 0xAF5 +XK_musicalflat: Final = 0xAF6 +XK_malesymbol: Final = 0xAF7 +XK_femalesymbol: Final = 0xAF8 +XK_telephone: Final = 0xAF9 +XK_telephonerecorder: Final = 0xAFA +XK_phonographcopyright: Final = 0xAFB +XK_caret: Final = 0xAFC +XK_singlelowquotemark: Final = 0xAFD +XK_doublelowquotemark: Final = 0xAFE +XK_cursor: Final = 0xAFF diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/special.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/special.pyi index 6376279ea..6e0796a70 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/special.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/special.pyi @@ -1,24 +1,26 @@ -XK_blank: int -XK_soliddiamond: int -XK_checkerboard: int -XK_ht: int -XK_ff: int -XK_cr: int -XK_lf: int -XK_nl: int -XK_vt: int -XK_lowrightcorner: int -XK_uprightcorner: int -XK_upleftcorner: int -XK_lowleftcorner: int -XK_crossinglines: int -XK_horizlinescan1: int -XK_horizlinescan3: int -XK_horizlinescan5: int -XK_horizlinescan7: int -XK_horizlinescan9: int -XK_leftt: int -XK_rightt: int -XK_bott: int -XK_topt: int -XK_vertbar: int +from typing_extensions import Final + +XK_blank: Final = 0x9DF +XK_soliddiamond: Final = 0x9E0 +XK_checkerboard: Final = 0x9E1 +XK_ht: Final = 0x9E2 +XK_ff: Final = 0x9E3 +XK_cr: Final = 0x9E4 +XK_lf: Final = 0x9E5 +XK_nl: Final = 0x9E8 +XK_vt: Final = 0x9E9 +XK_lowrightcorner: Final = 0x9EA +XK_uprightcorner: Final = 0x9EB +XK_upleftcorner: Final = 0x9EC +XK_lowleftcorner: Final = 0x9ED +XK_crossinglines: Final = 0x9EE +XK_horizlinescan1: Final = 0x9EF +XK_horizlinescan3: Final = 0x9F0 +XK_horizlinescan5: Final = 0x9F1 +XK_horizlinescan7: Final = 0x9F2 +XK_horizlinescan9: Final = 0x9F3 +XK_leftt: Final = 0x9F4 +XK_rightt: Final = 0x9F5 +XK_bott: Final = 0x9F6 +XK_topt: Final = 0x9F7 +XK_vertbar: Final = 0x9F8 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/technical.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/technical.pyi index 6b60c278c..79abf5c37 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/technical.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/technical.pyi @@ -1,49 +1,51 @@ -XK_leftradical: int -XK_topleftradical: int -XK_horizconnector: int -XK_topintegral: int -XK_botintegral: int -XK_vertconnector: int -XK_topleftsqbracket: int -XK_botleftsqbracket: int -XK_toprightsqbracket: int -XK_botrightsqbracket: int -XK_topleftparens: int -XK_botleftparens: int -XK_toprightparens: int -XK_botrightparens: int -XK_leftmiddlecurlybrace: int -XK_rightmiddlecurlybrace: int -XK_topleftsummation: int -XK_botleftsummation: int -XK_topvertsummationconnector: int -XK_botvertsummationconnector: int -XK_toprightsummation: int -XK_botrightsummation: int -XK_rightmiddlesummation: int -XK_lessthanequal: int -XK_notequal: int -XK_greaterthanequal: int -XK_integral: int -XK_therefore: int -XK_variation: int -XK_infinity: int -XK_nabla: int -XK_approximate: int -XK_similarequal: int -XK_ifonlyif: int -XK_implies: int -XK_identical: int -XK_radical: int -XK_includedin: int -XK_includes: int -XK_intersection: int -XK_union: int -XK_logicaland: int -XK_logicalor: int -XK_partialderivative: int -XK_function: int -XK_leftarrow: int -XK_uparrow: int -XK_rightarrow: int -XK_downarrow: int +from typing_extensions import Final + +XK_leftradical: Final = 0x8A1 +XK_topleftradical: Final = 0x8A2 +XK_horizconnector: Final = 0x8A3 +XK_topintegral: Final = 0x8A4 +XK_botintegral: Final = 0x8A5 +XK_vertconnector: Final = 0x8A6 +XK_topleftsqbracket: Final = 0x8A7 +XK_botleftsqbracket: Final = 0x8A8 +XK_toprightsqbracket: Final = 0x8A9 +XK_botrightsqbracket: Final = 0x8AA +XK_topleftparens: Final = 0x8AB +XK_botleftparens: Final = 0x8AC +XK_toprightparens: Final = 0x8AD +XK_botrightparens: Final = 0x8AE +XK_leftmiddlecurlybrace: Final = 0x8AF +XK_rightmiddlecurlybrace: Final = 0x8B0 +XK_topleftsummation: Final = 0x8B1 +XK_botleftsummation: Final = 0x8B2 +XK_topvertsummationconnector: Final = 0x8B3 +XK_botvertsummationconnector: Final = 0x8B4 +XK_toprightsummation: Final = 0x8B5 +XK_botrightsummation: Final = 0x8B6 +XK_rightmiddlesummation: Final = 0x8B7 +XK_lessthanequal: Final = 0x8BC +XK_notequal: Final = 0x8BD +XK_greaterthanequal: Final = 0x8BE +XK_integral: Final = 0x8BF +XK_therefore: Final = 0x8C0 +XK_variation: Final = 0x8C1 +XK_infinity: Final = 0x8C2 +XK_nabla: Final = 0x8C5 +XK_approximate: Final = 0x8C8 +XK_similarequal: Final = 0x8C9 +XK_ifonlyif: Final = 0x8CD +XK_implies: Final = 0x8CE +XK_identical: Final = 0x8CF +XK_radical: Final = 0x8D6 +XK_includedin: Final = 0x8DA +XK_includes: Final = 0x8DB +XK_intersection: Final = 0x8DC +XK_union: Final = 0x8DD +XK_logicaland: Final = 0x8DE +XK_logicalor: Final = 0x8DF +XK_partialderivative: Final = 0x8EF +XK_function: Final = 0x8F6 +XK_leftarrow: Final = 0x8FB +XK_uparrow: Final = 0x8FC +XK_rightarrow: Final = 0x8FD +XK_downarrow: Final = 0x8FE diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/thai.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/thai.pyi index 71f2c9106..d4c6b8cc1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/thai.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/thai.pyi @@ -1,84 +1,86 @@ -XK_Thai_kokai: int -XK_Thai_khokhai: int -XK_Thai_khokhuat: int -XK_Thai_khokhwai: int -XK_Thai_khokhon: int -XK_Thai_khorakhang: int -XK_Thai_ngongu: int -XK_Thai_chochan: int -XK_Thai_choching: int -XK_Thai_chochang: int -XK_Thai_soso: int -XK_Thai_chochoe: int -XK_Thai_yoying: int -XK_Thai_dochada: int -XK_Thai_topatak: int -XK_Thai_thothan: int -XK_Thai_thonangmontho: int -XK_Thai_thophuthao: int -XK_Thai_nonen: int -XK_Thai_dodek: int -XK_Thai_totao: int -XK_Thai_thothung: int -XK_Thai_thothahan: int -XK_Thai_thothong: int -XK_Thai_nonu: int -XK_Thai_bobaimai: int -XK_Thai_popla: int -XK_Thai_phophung: int -XK_Thai_fofa: int -XK_Thai_phophan: int -XK_Thai_fofan: int -XK_Thai_phosamphao: int -XK_Thai_moma: int -XK_Thai_yoyak: int -XK_Thai_rorua: int -XK_Thai_ru: int -XK_Thai_loling: int -XK_Thai_lu: int -XK_Thai_wowaen: int -XK_Thai_sosala: int -XK_Thai_sorusi: int -XK_Thai_sosua: int -XK_Thai_hohip: int -XK_Thai_lochula: int -XK_Thai_oang: int -XK_Thai_honokhuk: int -XK_Thai_paiyannoi: int -XK_Thai_saraa: int -XK_Thai_maihanakat: int -XK_Thai_saraaa: int -XK_Thai_saraam: int -XK_Thai_sarai: int -XK_Thai_saraii: int -XK_Thai_saraue: int -XK_Thai_sarauee: int -XK_Thai_sarau: int -XK_Thai_sarauu: int -XK_Thai_phinthu: int -XK_Thai_maihanakat_maitho: int -XK_Thai_baht: int -XK_Thai_sarae: int -XK_Thai_saraae: int -XK_Thai_sarao: int -XK_Thai_saraaimaimuan: int -XK_Thai_saraaimaimalai: int -XK_Thai_lakkhangyao: int -XK_Thai_maiyamok: int -XK_Thai_maitaikhu: int -XK_Thai_maiek: int -XK_Thai_maitho: int -XK_Thai_maitri: int -XK_Thai_maichattawa: int -XK_Thai_thanthakhat: int -XK_Thai_nikhahit: int -XK_Thai_leksun: int -XK_Thai_leknung: int -XK_Thai_leksong: int -XK_Thai_leksam: int -XK_Thai_leksi: int -XK_Thai_lekha: int -XK_Thai_lekhok: int -XK_Thai_lekchet: int -XK_Thai_lekpaet: int -XK_Thai_lekkao: int +from typing_extensions import Final + +XK_Thai_kokai: Final = 0xDA1 +XK_Thai_khokhai: Final = 0xDA2 +XK_Thai_khokhuat: Final = 0xDA3 +XK_Thai_khokhwai: Final = 0xDA4 +XK_Thai_khokhon: Final = 0xDA5 +XK_Thai_khorakhang: Final = 0xDA6 +XK_Thai_ngongu: Final = 0xDA7 +XK_Thai_chochan: Final = 0xDA8 +XK_Thai_choching: Final = 0xDA9 +XK_Thai_chochang: Final = 0xDAA +XK_Thai_soso: Final = 0xDAB +XK_Thai_chochoe: Final = 0xDAC +XK_Thai_yoying: Final = 0xDAD +XK_Thai_dochada: Final = 0xDAE +XK_Thai_topatak: Final = 0xDAF +XK_Thai_thothan: Final = 0xDB0 +XK_Thai_thonangmontho: Final = 0xDB1 +XK_Thai_thophuthao: Final = 0xDB2 +XK_Thai_nonen: Final = 0xDB3 +XK_Thai_dodek: Final = 0xDB4 +XK_Thai_totao: Final = 0xDB5 +XK_Thai_thothung: Final = 0xDB6 +XK_Thai_thothahan: Final = 0xDB7 +XK_Thai_thothong: Final = 0xDB8 +XK_Thai_nonu: Final = 0xDB9 +XK_Thai_bobaimai: Final = 0xDBA +XK_Thai_popla: Final = 0xDBB +XK_Thai_phophung: Final = 0xDBC +XK_Thai_fofa: Final = 0xDBD +XK_Thai_phophan: Final = 0xDBE +XK_Thai_fofan: Final = 0xDBF +XK_Thai_phosamphao: Final = 0xDC0 +XK_Thai_moma: Final = 0xDC1 +XK_Thai_yoyak: Final = 0xDC2 +XK_Thai_rorua: Final = 0xDC3 +XK_Thai_ru: Final = 0xDC4 +XK_Thai_loling: Final = 0xDC5 +XK_Thai_lu: Final = 0xDC6 +XK_Thai_wowaen: Final = 0xDC7 +XK_Thai_sosala: Final = 0xDC8 +XK_Thai_sorusi: Final = 0xDC9 +XK_Thai_sosua: Final = 0xDCA +XK_Thai_hohip: Final = 0xDCB +XK_Thai_lochula: Final = 0xDCC +XK_Thai_oang: Final = 0xDCD +XK_Thai_honokhuk: Final = 0xDCE +XK_Thai_paiyannoi: Final = 0xDCF +XK_Thai_saraa: Final = 0xDD0 +XK_Thai_maihanakat: Final = 0xDD1 +XK_Thai_saraaa: Final = 0xDD2 +XK_Thai_saraam: Final = 0xDD3 +XK_Thai_sarai: Final = 0xDD4 +XK_Thai_saraii: Final = 0xDD5 +XK_Thai_saraue: Final = 0xDD6 +XK_Thai_sarauee: Final = 0xDD7 +XK_Thai_sarau: Final = 0xDD8 +XK_Thai_sarauu: Final = 0xDD9 +XK_Thai_phinthu: Final = 0xDDA +XK_Thai_maihanakat_maitho: Final = 0xDDE +XK_Thai_baht: Final = 0xDDF +XK_Thai_sarae: Final = 0xDE0 +XK_Thai_saraae: Final = 0xDE1 +XK_Thai_sarao: Final = 0xDE2 +XK_Thai_saraaimaimuan: Final = 0xDE3 +XK_Thai_saraaimaimalai: Final = 0xDE4 +XK_Thai_lakkhangyao: Final = 0xDE5 +XK_Thai_maiyamok: Final = 0xDE6 +XK_Thai_maitaikhu: Final = 0xDE7 +XK_Thai_maiek: Final = 0xDE8 +XK_Thai_maitho: Final = 0xDE9 +XK_Thai_maitri: Final = 0xDEA +XK_Thai_maichattawa: Final = 0xDEB +XK_Thai_thanthakhat: Final = 0xDEC +XK_Thai_nikhahit: Final = 0xDED +XK_Thai_leksun: Final = 0xDF0 +XK_Thai_leknung: Final = 0xDF1 +XK_Thai_leksong: Final = 0xDF2 +XK_Thai_leksam: Final = 0xDF3 +XK_Thai_leksi: Final = 0xDF4 +XK_Thai_lekha: Final = 0xDF5 +XK_Thai_lekhok: Final = 0xDF6 +XK_Thai_lekchet: Final = 0xDF7 +XK_Thai_lekpaet: Final = 0xDF8 +XK_Thai_lekkao: Final = 0xDF9 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xf86.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xf86.pyi index 73b36fc72..0a46303d8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xf86.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xf86.pyi @@ -1,184 +1,186 @@ -XK_XF86_ModeLock: int -XK_XF86_MonBrightnessUp: int -XK_XF86_MonBrightnessDown: int -XK_XF86_KbdLightOnOff: int -XK_XF86_KbdBrightnessUp: int -XK_XF86_KbdBrightnessDown: int -XK_XF86_MonBrightnessCycle: int -XK_XF86_Standby: int -XK_XF86_AudioLowerVolume: int -XK_XF86_AudioMute: int -XK_XF86_AudioRaiseVolume: int -XK_XF86_AudioPlay: int -XK_XF86_AudioStop: int -XK_XF86_AudioPrev: int -XK_XF86_AudioNext: int -XK_XF86_HomePage: int -XK_XF86_Mail: int -XK_XF86_Start: int -XK_XF86_Search: int -XK_XF86_AudioRecord: int -XK_XF86_Calculator: int -XK_XF86_Memo: int -XK_XF86_ToDoList: int -XK_XF86_Calendar: int -XK_XF86_PowerDown: int -XK_XF86_ContrastAdjust: int -XK_XF86_RockerUp: int -XK_XF86_RockerDown: int -XK_XF86_RockerEnter: int -XK_XF86_Back: int -XK_XF86_Forward: int -XK_XF86_Stop: int -XK_XF86_Refresh: int -XK_XF86_PowerOff: int -XK_XF86_WakeUp: int -XK_XF86_Eject: int -XK_XF86_ScreenSaver: int -XK_XF86_WWW: int -XK_XF86_Sleep: int -XK_XF86_Favorites: int -XK_XF86_AudioPause: int -XK_XF86_AudioMedia: int -XK_XF86_MyComputer: int -XK_XF86_VendorHome: int -XK_XF86_LightBulb: int -XK_XF86_Shop: int -XK_XF86_History: int -XK_XF86_OpenURL: int -XK_XF86_AddFavorite: int -XK_XF86_HotLinks: int -XK_XF86_BrightnessAdjust: int -XK_XF86_Finance: int -XK_XF86_Community: int -XK_XF86_AudioRewind: int -XK_XF86_XF86BackForward: int -XK_XF86_Launch0: int -XK_XF86_Launch1: int -XK_XF86_Launch2: int -XK_XF86_Launch3: int -XK_XF86_Launch4: int -XK_XF86_Launch5: int -XK_XF86_Launch6: int -XK_XF86_Launch7: int -XK_XF86_Launch8: int -XK_XF86_Launch9: int -XK_XF86_LaunchA: int -XK_XF86_LaunchB: int -XK_XF86_LaunchC: int -XK_XF86_LaunchD: int -XK_XF86_LaunchE: int -XK_XF86_LaunchF: int -XK_XF86_ApplicationLeft: int -XK_XF86_ApplicationRight: int -XK_XF86_Book: int -XK_XF86_CD: int -XK_XF86_Calculater: int -XK_XF86_Clear: int -XK_XF86_Close: int -XK_XF86_Copy: int -XK_XF86_Cut: int -XK_XF86_Display: int -XK_XF86_DOS: int -XK_XF86_Documents: int -XK_XF86_Excel: int -XK_XF86_Explorer: int -XK_XF86_Game: int -XK_XF86_Go: int -XK_XF86_iTouch: int -XK_XF86_LogOff: int -XK_XF86_Market: int -XK_XF86_Meeting: int -XK_XF86_MenuKB: int -XK_XF86_MenuPB: int -XK_XF86_MySites: int -XK_XF86_New: int -XK_XF86_News: int -XK_XF86_OfficeHome: int -XK_XF86_Open: int -XK_XF86_Option: int -XK_XF86_Paste: int -XK_XF86_Phone: int -XK_XF86_Q: int -XK_XF86_Reply: int -XK_XF86_Reload: int -XK_XF86_RotateWindows: int -XK_XF86_RotationPB: int -XK_XF86_RotationKB: int -XK_XF86_Save: int -XK_XF86_ScrollUp: int -XK_XF86_ScrollDown: int -XK_XF86_ScrollClick: int -XK_XF86_Send: int -XK_XF86_Spell: int -XK_XF86_SplitScreen: int -XK_XF86_Support: int -XK_XF86_TaskPane: int -XK_XF86_Terminal: int -XK_XF86_Tools: int -XK_XF86_Travel: int -XK_XF86_UserPB: int -XK_XF86_User1KB: int -XK_XF86_User2KB: int -XK_XF86_Video: int -XK_XF86_WheelButton: int -XK_XF86_Word: int -XK_XF86_Xfer: int -XK_XF86_ZoomIn: int -XK_XF86_ZoomOut: int -XK_XF86_Away: int -XK_XF86_Messenger: int -XK_XF86_WebCam: int -XK_XF86_MailForward: int -XK_XF86_Pictures: int -XK_XF86_Music: int -XK_XF86_Battery: int -XK_XF86_Bluetooth: int -XK_XF86_WLAN: int -XK_XF86_UWB: int -XK_XF86_AudioForward: int -XK_XF86_AudioRepeat: int -XK_XF86_AudioRandomPlay: int -XK_XF86_Subtitle: int -XK_XF86_AudioCycleTrack: int -XK_XF86_CycleAngle: int -XK_XF86_FrameBack: int -XK_XF86_FrameForward: int -XK_XF86_Time: int -XK_XF86_Select: int -XK_XF86_View: int -XK_XF86_TopMenu: int -XK_XF86_Red: int -XK_XF86_Green: int -XK_XF86_Yellow: int -XK_XF86_Blue: int -XK_XF86_Suspend: int -XK_XF86_Hibernate: int -XK_XF86_TouchpadToggle: int -XK_XF86_TouchpadOn: int -XK_XF86_TouchpadOff: int -XK_XF86_AudioMicMute: int -XK_XF86_Keyboard: int -XK_XF86_WWAN: int -XK_XF86_RFKill: int -XK_XF86_AudioPreset: int -XK_XF86_RotationLockToggle: int -XK_XF86_FullScreen: int -XK_XF86_Switch_VT_1: int -XK_XF86_Switch_VT_2: int -XK_XF86_Switch_VT_3: int -XK_XF86_Switch_VT_4: int -XK_XF86_Switch_VT_5: int -XK_XF86_Switch_VT_6: int -XK_XF86_Switch_VT_7: int -XK_XF86_Switch_VT_8: int -XK_XF86_Switch_VT_9: int -XK_XF86_Switch_VT_10: int -XK_XF86_Switch_VT_11: int -XK_XF86_Switch_VT_12: int -XK_XF86_Ungrab: int -XK_XF86_ClearGrab: int -XK_XF86_Next_VMode: int -XK_XF86_Prev_VMode: int -XK_XF86_LogWindowTree: int -XK_XF86_LogGrabInfo: int +from typing_extensions import Final + +XK_XF86_ModeLock: Final = 0x1008FF01 +XK_XF86_MonBrightnessUp: Final = 0x1008FF02 +XK_XF86_MonBrightnessDown: Final = 0x1008FF03 +XK_XF86_KbdLightOnOff: Final = 0x1008FF04 +XK_XF86_KbdBrightnessUp: Final = 0x1008FF05 +XK_XF86_KbdBrightnessDown: Final = 0x1008FF06 +XK_XF86_MonBrightnessCycle: Final = 0x1008FF07 +XK_XF86_Standby: Final = 0x1008FF10 +XK_XF86_AudioLowerVolume: Final = 0x1008FF11 +XK_XF86_AudioMute: Final = 0x1008FF12 +XK_XF86_AudioRaiseVolume: Final = 0x1008FF13 +XK_XF86_AudioPlay: Final = 0x1008FF14 +XK_XF86_AudioStop: Final = 0x1008FF15 +XK_XF86_AudioPrev: Final = 0x1008FF16 +XK_XF86_AudioNext: Final = 0x1008FF17 +XK_XF86_HomePage: Final = 0x1008FF18 +XK_XF86_Mail: Final = 0x1008FF19 +XK_XF86_Start: Final = 0x1008FF1A +XK_XF86_Search: Final = 0x1008FF1B +XK_XF86_AudioRecord: Final = 0x1008FF1C +XK_XF86_Calculator: Final = 0x1008FF1D +XK_XF86_Memo: Final = 0x1008FF1E +XK_XF86_ToDoList: Final = 0x1008FF1F +XK_XF86_Calendar: Final = 0x1008FF20 +XK_XF86_PowerDown: Final = 0x1008FF21 +XK_XF86_ContrastAdjust: Final = 0x1008FF22 +XK_XF86_RockerUp: Final = 0x1008FF23 +XK_XF86_RockerDown: Final = 0x1008FF24 +XK_XF86_RockerEnter: Final = 0x1008FF25 +XK_XF86_Back: Final = 0x1008FF26 +XK_XF86_Forward: Final = 0x1008FF27 +XK_XF86_Stop: Final = 0x1008FF28 +XK_XF86_Refresh: Final = 0x1008FF29 +XK_XF86_PowerOff: Final = 0x1008FF2A +XK_XF86_WakeUp: Final = 0x1008FF2B +XK_XF86_Eject: Final = 0x1008FF2C +XK_XF86_ScreenSaver: Final = 0x1008FF2D +XK_XF86_WWW: Final = 0x1008FF2E +XK_XF86_Sleep: Final = 0x1008FF2F +XK_XF86_Favorites: Final = 0x1008FF30 +XK_XF86_AudioPause: Final = 0x1008FF31 +XK_XF86_AudioMedia: Final = 0x1008FF32 +XK_XF86_MyComputer: Final = 0x1008FF33 +XK_XF86_VendorHome: Final = 0x1008FF34 +XK_XF86_LightBulb: Final = 0x1008FF35 +XK_XF86_Shop: Final = 0x1008FF36 +XK_XF86_History: Final = 0x1008FF37 +XK_XF86_OpenURL: Final = 0x1008FF38 +XK_XF86_AddFavorite: Final = 0x1008FF39 +XK_XF86_HotLinks: Final = 0x1008FF3A +XK_XF86_BrightnessAdjust: Final = 0x1008FF3B +XK_XF86_Finance: Final = 0x1008FF3C +XK_XF86_Community: Final = 0x1008FF3D +XK_XF86_AudioRewind: Final = 0x1008FF3E +XK_XF86_XF86BackForward: Final = 0x1008FF3F +XK_XF86_Launch0: Final = 0x1008FF40 +XK_XF86_Launch1: Final = 0x1008FF41 +XK_XF86_Launch2: Final = 0x1008FF42 +XK_XF86_Launch3: Final = 0x1008FF43 +XK_XF86_Launch4: Final = 0x1008FF44 +XK_XF86_Launch5: Final = 0x1008FF45 +XK_XF86_Launch6: Final = 0x1008FF46 +XK_XF86_Launch7: Final = 0x1008FF47 +XK_XF86_Launch8: Final = 0x1008FF48 +XK_XF86_Launch9: Final = 0x1008FF49 +XK_XF86_LaunchA: Final = 0x1008FF4A +XK_XF86_LaunchB: Final = 0x1008FF4B +XK_XF86_LaunchC: Final = 0x1008FF4C +XK_XF86_LaunchD: Final = 0x1008FF4D +XK_XF86_LaunchE: Final = 0x1008FF4E +XK_XF86_LaunchF: Final = 0x1008FF4F +XK_XF86_ApplicationLeft: Final = 0x1008FF50 +XK_XF86_ApplicationRight: Final = 0x1008FF51 +XK_XF86_Book: Final = 0x1008FF52 +XK_XF86_CD: Final = 0x1008FF53 +XK_XF86_Calculater: Final = 0x1008FF54 +XK_XF86_Clear: Final = 0x1008FF55 +XK_XF86_Close: Final = 0x1008FF56 +XK_XF86_Copy: Final = 0x1008FF57 +XK_XF86_Cut: Final = 0x1008FF58 +XK_XF86_Display: Final = 0x1008FF59 +XK_XF86_DOS: Final = 0x1008FF5A +XK_XF86_Documents: Final = 0x1008FF5B +XK_XF86_Excel: Final = 0x1008FF5C +XK_XF86_Explorer: Final = 0x1008FF5D +XK_XF86_Game: Final = 0x1008FF5E +XK_XF86_Go: Final = 0x1008FF5F +XK_XF86_iTouch: Final = 0x1008FF60 +XK_XF86_LogOff: Final = 0x1008FF61 +XK_XF86_Market: Final = 0x1008FF62 +XK_XF86_Meeting: Final = 0x1008FF63 +XK_XF86_MenuKB: Final = 0x1008FF65 +XK_XF86_MenuPB: Final = 0x1008FF66 +XK_XF86_MySites: Final = 0x1008FF67 +XK_XF86_New: Final = 0x1008FF68 +XK_XF86_News: Final = 0x1008FF69 +XK_XF86_OfficeHome: Final = 0x1008FF6A +XK_XF86_Open: Final = 0x1008FF6B +XK_XF86_Option: Final = 0x1008FF6C +XK_XF86_Paste: Final = 0x1008FF6D +XK_XF86_Phone: Final = 0x1008FF6E +XK_XF86_Q: Final = 0x1008FF70 +XK_XF86_Reply: Final = 0x1008FF72 +XK_XF86_Reload: Final = 0x1008FF73 +XK_XF86_RotateWindows: Final = 0x1008FF74 +XK_XF86_RotationPB: Final = 0x1008FF75 +XK_XF86_RotationKB: Final = 0x1008FF76 +XK_XF86_Save: Final = 0x1008FF77 +XK_XF86_ScrollUp: Final = 0x1008FF78 +XK_XF86_ScrollDown: Final = 0x1008FF79 +XK_XF86_ScrollClick: Final = 0x1008FF7A +XK_XF86_Send: Final = 0x1008FF7B +XK_XF86_Spell: Final = 0x1008FF7C +XK_XF86_SplitScreen: Final = 0x1008FF7D +XK_XF86_Support: Final = 0x1008FF7E +XK_XF86_TaskPane: Final = 0x1008FF7F +XK_XF86_Terminal: Final = 0x1008FF80 +XK_XF86_Tools: Final = 0x1008FF81 +XK_XF86_Travel: Final = 0x1008FF82 +XK_XF86_UserPB: Final = 0x1008FF84 +XK_XF86_User1KB: Final = 0x1008FF85 +XK_XF86_User2KB: Final = 0x1008FF86 +XK_XF86_Video: Final = 0x1008FF87 +XK_XF86_WheelButton: Final = 0x1008FF88 +XK_XF86_Word: Final = 0x1008FF89 +XK_XF86_Xfer: Final = 0x1008FF8A +XK_XF86_ZoomIn: Final = 0x1008FF8B +XK_XF86_ZoomOut: Final = 0x1008FF8C +XK_XF86_Away: Final = 0x1008FF8D +XK_XF86_Messenger: Final = 0x1008FF8E +XK_XF86_WebCam: Final = 0x1008FF8F +XK_XF86_MailForward: Final = 0x1008FF90 +XK_XF86_Pictures: Final = 0x1008FF91 +XK_XF86_Music: Final = 0x1008FF92 +XK_XF86_Battery: Final = 0x1008FF93 +XK_XF86_Bluetooth: Final = 0x1008FF94 +XK_XF86_WLAN: Final = 0x1008FF95 +XK_XF86_UWB: Final = 0x1008FF96 +XK_XF86_AudioForward: Final = 0x1008FF97 +XK_XF86_AudioRepeat: Final = 0x1008FF98 +XK_XF86_AudioRandomPlay: Final = 0x1008FF99 +XK_XF86_Subtitle: Final = 0x1008FF9A +XK_XF86_AudioCycleTrack: Final = 0x1008FF9B +XK_XF86_CycleAngle: Final = 0x1008FF9C +XK_XF86_FrameBack: Final = 0x1008FF9D +XK_XF86_FrameForward: Final = 0x1008FF9E +XK_XF86_Time: Final = 0x1008FF9F +XK_XF86_Select: Final = 0x1008FFA0 +XK_XF86_View: Final = 0x1008FFA1 +XK_XF86_TopMenu: Final = 0x1008FFA2 +XK_XF86_Red: Final = 0x1008FFA3 +XK_XF86_Green: Final = 0x1008FFA4 +XK_XF86_Yellow: Final = 0x1008FFA5 +XK_XF86_Blue: Final = 0x1008FFA6 +XK_XF86_Suspend: Final = 0x1008FFA7 +XK_XF86_Hibernate: Final = 0x1008FFA8 +XK_XF86_TouchpadToggle: Final = 0x1008FFA9 +XK_XF86_TouchpadOn: Final = 0x1008FFB0 +XK_XF86_TouchpadOff: Final = 0x1008FFB1 +XK_XF86_AudioMicMute: Final = 0x1008FFB2 +XK_XF86_Keyboard: Final = 0x1008FFB3 +XK_XF86_WWAN: Final = 0x1008FFB4 +XK_XF86_RFKill: Final = 0x1008FFB5 +XK_XF86_AudioPreset: Final = 0x1008FFB6 +XK_XF86_RotationLockToggle: Final = 0x1008FFB7 +XK_XF86_FullScreen: Final = 0x1008FFB8 +XK_XF86_Switch_VT_1: Final = 0x1008FE01 +XK_XF86_Switch_VT_2: Final = 0x1008FE02 +XK_XF86_Switch_VT_3: Final = 0x1008FE03 +XK_XF86_Switch_VT_4: Final = 0x1008FE04 +XK_XF86_Switch_VT_5: Final = 0x1008FE05 +XK_XF86_Switch_VT_6: Final = 0x1008FE06 +XK_XF86_Switch_VT_7: Final = 0x1008FE07 +XK_XF86_Switch_VT_8: Final = 0x1008FE08 +XK_XF86_Switch_VT_9: Final = 0x1008FE09 +XK_XF86_Switch_VT_10: Final = 0x1008FE0A +XK_XF86_Switch_VT_11: Final = 0x1008FE0B +XK_XF86_Switch_VT_12: Final = 0x1008FE0C +XK_XF86_Ungrab: Final = 0x1008FE20 +XK_XF86_ClearGrab: Final = 0x1008FE21 +XK_XF86_Next_VMode: Final = 0x1008FE22 +XK_XF86_Prev_VMode: Final = 0x1008FE23 +XK_XF86_LogWindowTree: Final = 0x1008FE24 +XK_XF86_LogGrabInfo: Final = 0x1008FE25 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xk3270.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xk3270.pyi index 5fe41b94c..a47fd8d24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xk3270.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xk3270.pyi @@ -1,30 +1,32 @@ -XK_3270_Duplicate: int -XK_3270_FieldMark: int -XK_3270_Right2: int -XK_3270_Left2: int -XK_3270_BackTab: int -XK_3270_EraseEOF: int -XK_3270_EraseInput: int -XK_3270_Reset: int -XK_3270_Quit: int -XK_3270_PA1: int -XK_3270_PA2: int -XK_3270_PA3: int -XK_3270_Test: int -XK_3270_Attn: int -XK_3270_CursorBlink: int -XK_3270_AltCursor: int -XK_3270_KeyClick: int -XK_3270_Jump: int -XK_3270_Ident: int -XK_3270_Rule: int -XK_3270_Copy: int -XK_3270_Play: int -XK_3270_Setup: int -XK_3270_Record: int -XK_3270_ChangeScreen: int -XK_3270_DeleteWord: int -XK_3270_ExSelect: int -XK_3270_CursorSelect: int -XK_3270_PrintScreen: int -XK_3270_Enter: int +from typing_extensions import Final + +XK_3270_Duplicate: Final = 0xFD01 +XK_3270_FieldMark: Final = 0xFD02 +XK_3270_Right2: Final = 0xFD03 +XK_3270_Left2: Final = 0xFD04 +XK_3270_BackTab: Final = 0xFD05 +XK_3270_EraseEOF: Final = 0xFD06 +XK_3270_EraseInput: Final = 0xFD07 +XK_3270_Reset: Final = 0xFD08 +XK_3270_Quit: Final = 0xFD09 +XK_3270_PA1: Final = 0xFD0A +XK_3270_PA2: Final = 0xFD0B +XK_3270_PA3: Final = 0xFD0C +XK_3270_Test: Final = 0xFD0D +XK_3270_Attn: Final = 0xFD0E +XK_3270_CursorBlink: Final = 0xFD0F +XK_3270_AltCursor: Final = 0xFD10 +XK_3270_KeyClick: Final = 0xFD11 +XK_3270_Jump: Final = 0xFD12 +XK_3270_Ident: Final = 0xFD13 +XK_3270_Rule: Final = 0xFD14 +XK_3270_Copy: Final = 0xFD15 +XK_3270_Play: Final = 0xFD16 +XK_3270_Setup: Final = 0xFD17 +XK_3270_Record: Final = 0xFD18 +XK_3270_ChangeScreen: Final = 0xFD19 +XK_3270_DeleteWord: Final = 0xFD1A +XK_3270_ExSelect: Final = 0xFD1B +XK_3270_CursorSelect: Final = 0xFD1C +XK_3270_PrintScreen: Final = 0xFD1D +XK_3270_Enter: Final = 0xFD1E diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xkb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xkb.pyi index dbfa43c9d..741439eb2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xkb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/keysymdef/xkb.pyi @@ -1,100 +1,102 @@ -XK_ISO_Lock: int -XK_ISO_Level2_Latch: int -XK_ISO_Level3_Shift: int -XK_ISO_Level3_Latch: int -XK_ISO_Level3_Lock: int -XK_ISO_Group_Shift: int -XK_ISO_Group_Latch: int -XK_ISO_Group_Lock: int -XK_ISO_Next_Group: int -XK_ISO_Next_Group_Lock: int -XK_ISO_Prev_Group: int -XK_ISO_Prev_Group_Lock: int -XK_ISO_First_Group: int -XK_ISO_First_Group_Lock: int -XK_ISO_Last_Group: int -XK_ISO_Last_Group_Lock: int -XK_ISO_Left_Tab: int -XK_ISO_Move_Line_Up: int -XK_ISO_Move_Line_Down: int -XK_ISO_Partial_Line_Up: int -XK_ISO_Partial_Line_Down: int -XK_ISO_Partial_Space_Left: int -XK_ISO_Partial_Space_Right: int -XK_ISO_Set_Margin_Left: int -XK_ISO_Set_Margin_Right: int -XK_ISO_Release_Margin_Left: int -XK_ISO_Release_Margin_Right: int -XK_ISO_Release_Both_Margins: int -XK_ISO_Fast_Cursor_Left: int -XK_ISO_Fast_Cursor_Right: int -XK_ISO_Fast_Cursor_Up: int -XK_ISO_Fast_Cursor_Down: int -XK_ISO_Continuous_Underline: int -XK_ISO_Discontinuous_Underline: int -XK_ISO_Emphasize: int -XK_ISO_Center_Object: int -XK_ISO_Enter: int -XK_dead_grave: int -XK_dead_acute: int -XK_dead_circumflex: int -XK_dead_tilde: int -XK_dead_macron: int -XK_dead_breve: int -XK_dead_abovedot: int -XK_dead_diaeresis: int -XK_dead_abovering: int -XK_dead_doubleacute: int -XK_dead_caron: int -XK_dead_cedilla: int -XK_dead_ogonek: int -XK_dead_iota: int -XK_dead_voiced_sound: int -XK_dead_semivoiced_sound: int -XK_dead_belowdot: int -XK_First_Virtual_Screen: int -XK_Prev_Virtual_Screen: int -XK_Next_Virtual_Screen: int -XK_Last_Virtual_Screen: int -XK_Terminate_Server: int -XK_AccessX_Enable: int -XK_AccessX_Feedback_Enable: int -XK_RepeatKeys_Enable: int -XK_SlowKeys_Enable: int -XK_BounceKeys_Enable: int -XK_StickyKeys_Enable: int -XK_MouseKeys_Enable: int -XK_MouseKeys_Accel_Enable: int -XK_Overlay1_Enable: int -XK_Overlay2_Enable: int -XK_AudibleBell_Enable: int -XK_Pointer_Left: int -XK_Pointer_Right: int -XK_Pointer_Up: int -XK_Pointer_Down: int -XK_Pointer_UpLeft: int -XK_Pointer_UpRight: int -XK_Pointer_DownLeft: int -XK_Pointer_DownRight: int -XK_Pointer_Button_Dflt: int -XK_Pointer_Button1: int -XK_Pointer_Button2: int -XK_Pointer_Button3: int -XK_Pointer_Button4: int -XK_Pointer_Button5: int -XK_Pointer_DblClick_Dflt: int -XK_Pointer_DblClick1: int -XK_Pointer_DblClick2: int -XK_Pointer_DblClick3: int -XK_Pointer_DblClick4: int -XK_Pointer_DblClick5: int -XK_Pointer_Drag_Dflt: int -XK_Pointer_Drag1: int -XK_Pointer_Drag2: int -XK_Pointer_Drag3: int -XK_Pointer_Drag4: int -XK_Pointer_Drag5: int -XK_Pointer_EnableKeys: int -XK_Pointer_Accelerate: int -XK_Pointer_DfltBtnNext: int -XK_Pointer_DfltBtnPrev: int +from typing_extensions import Final + +XK_ISO_Lock: Final = 0xFE01 +XK_ISO_Level2_Latch: Final = 0xFE02 +XK_ISO_Level3_Shift: Final = 0xFE03 +XK_ISO_Level3_Latch: Final = 0xFE04 +XK_ISO_Level3_Lock: Final = 0xFE05 +XK_ISO_Group_Shift: Final = 0xFF7E +XK_ISO_Group_Latch: Final = 0xFE06 +XK_ISO_Group_Lock: Final = 0xFE07 +XK_ISO_Next_Group: Final = 0xFE08 +XK_ISO_Next_Group_Lock: Final = 0xFE09 +XK_ISO_Prev_Group: Final = 0xFE0A +XK_ISO_Prev_Group_Lock: Final = 0xFE0B +XK_ISO_First_Group: Final = 0xFE0C +XK_ISO_First_Group_Lock: Final = 0xFE0D +XK_ISO_Last_Group: Final = 0xFE0E +XK_ISO_Last_Group_Lock: Final = 0xFE0F +XK_ISO_Left_Tab: Final = 0xFE20 +XK_ISO_Move_Line_Up: Final = 0xFE21 +XK_ISO_Move_Line_Down: Final = 0xFE22 +XK_ISO_Partial_Line_Up: Final = 0xFE23 +XK_ISO_Partial_Line_Down: Final = 0xFE24 +XK_ISO_Partial_Space_Left: Final = 0xFE25 +XK_ISO_Partial_Space_Right: Final = 0xFE26 +XK_ISO_Set_Margin_Left: Final = 0xFE27 +XK_ISO_Set_Margin_Right: Final = 0xFE28 +XK_ISO_Release_Margin_Left: Final = 0xFE29 +XK_ISO_Release_Margin_Right: Final = 0xFE2A +XK_ISO_Release_Both_Margins: Final = 0xFE2B +XK_ISO_Fast_Cursor_Left: Final = 0xFE2C +XK_ISO_Fast_Cursor_Right: Final = 0xFE2D +XK_ISO_Fast_Cursor_Up: Final = 0xFE2E +XK_ISO_Fast_Cursor_Down: Final = 0xFE2F +XK_ISO_Continuous_Underline: Final = 0xFE30 +XK_ISO_Discontinuous_Underline: Final = 0xFE31 +XK_ISO_Emphasize: Final = 0xFE32 +XK_ISO_Center_Object: Final = 0xFE33 +XK_ISO_Enter: Final = 0xFE34 +XK_dead_grave: Final = 0xFE50 +XK_dead_acute: Final = 0xFE51 +XK_dead_circumflex: Final = 0xFE52 +XK_dead_tilde: Final = 0xFE53 +XK_dead_macron: Final = 0xFE54 +XK_dead_breve: Final = 0xFE55 +XK_dead_abovedot: Final = 0xFE56 +XK_dead_diaeresis: Final = 0xFE57 +XK_dead_abovering: Final = 0xFE58 +XK_dead_doubleacute: Final = 0xFE59 +XK_dead_caron: Final = 0xFE5A +XK_dead_cedilla: Final = 0xFE5B +XK_dead_ogonek: Final = 0xFE5C +XK_dead_iota: Final = 0xFE5D +XK_dead_voiced_sound: Final = 0xFE5E +XK_dead_semivoiced_sound: Final = 0xFE5F +XK_dead_belowdot: Final = 0xFE60 +XK_First_Virtual_Screen: Final = 0xFED0 +XK_Prev_Virtual_Screen: Final = 0xFED1 +XK_Next_Virtual_Screen: Final = 0xFED2 +XK_Last_Virtual_Screen: Final = 0xFED4 +XK_Terminate_Server: Final = 0xFED5 +XK_AccessX_Enable: Final = 0xFE70 +XK_AccessX_Feedback_Enable: Final = 0xFE71 +XK_RepeatKeys_Enable: Final = 0xFE72 +XK_SlowKeys_Enable: Final = 0xFE73 +XK_BounceKeys_Enable: Final = 0xFE74 +XK_StickyKeys_Enable: Final = 0xFE75 +XK_MouseKeys_Enable: Final = 0xFE76 +XK_MouseKeys_Accel_Enable: Final = 0xFE77 +XK_Overlay1_Enable: Final = 0xFE78 +XK_Overlay2_Enable: Final = 0xFE79 +XK_AudibleBell_Enable: Final = 0xFE7A +XK_Pointer_Left: Final = 0xFEE0 +XK_Pointer_Right: Final = 0xFEE1 +XK_Pointer_Up: Final = 0xFEE2 +XK_Pointer_Down: Final = 0xFEE3 +XK_Pointer_UpLeft: Final = 0xFEE4 +XK_Pointer_UpRight: Final = 0xFEE5 +XK_Pointer_DownLeft: Final = 0xFEE6 +XK_Pointer_DownRight: Final = 0xFEE7 +XK_Pointer_Button_Dflt: Final = 0xFEE8 +XK_Pointer_Button1: Final = 0xFEE9 +XK_Pointer_Button2: Final = 0xFEEA +XK_Pointer_Button3: Final = 0xFEEB +XK_Pointer_Button4: Final = 0xFEEC +XK_Pointer_Button5: Final = 0xFEED +XK_Pointer_DblClick_Dflt: Final = 0xFEEE +XK_Pointer_DblClick1: Final = 0xFEEF +XK_Pointer_DblClick2: Final = 0xFEF0 +XK_Pointer_DblClick3: Final = 0xFEF1 +XK_Pointer_DblClick4: Final = 0xFEF2 +XK_Pointer_DblClick5: Final = 0xFEF3 +XK_Pointer_Drag_Dflt: Final = 0xFEF4 +XK_Pointer_Drag1: Final = 0xFEF5 +XK_Pointer_Drag2: Final = 0xFEF6 +XK_Pointer_Drag3: Final = 0xFEF7 +XK_Pointer_Drag4: Final = 0xFEF8 +XK_Pointer_Drag5: Final = 0xFEFD +XK_Pointer_EnableKeys: Final = 0xFEF9 +XK_Pointer_Accelerate: Final = 0xFEFA +XK_Pointer_DfltBtnNext: Final = 0xFEFB +XK_Pointer_DfltBtnPrev: Final = 0xFEFC diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/display.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/display.pyi index e125e9662..a9480b1c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/display.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/display.pyi @@ -17,7 +17,7 @@ class bytesview: @overload def __init__(self, data: bytes | bytesview, offset: int, size: int) -> None: ... @overload - def __init__(self, data: _BufferWithLen, offset: int = ..., size: int | None = ...) -> None: ... + def __init__(self, data: _BufferWithLen, offset: int = 0, size: int | None = None) -> None: ... @overload def __getitem__(self, key: slice) -> bytes: ... @overload @@ -59,7 +59,7 @@ class Display: error_handler: ErrorHandler[object] | None big_endian: bool info: ConnectionSetupRequest - def __init__(self, display: str | None = ...) -> None: ... + def __init__(self, display: str | None = None) -> None: ... def get_display_name(self) -> str: ... def get_default_screen(self) -> int: ... def fileno(self) -> int: ... @@ -71,35 +71,35 @@ class Display: def allocate_resource_id(self) -> int: ... def free_resource_id(self, rid: int) -> None: ... @overload - def get_resource_class(self, class_name: Literal["resource"], default: object = ...) -> type[resource.Resource]: ... + def get_resource_class(self, class_name: Literal["resource"], default: object = None) -> type[resource.Resource]: ... @overload - def get_resource_class(self, class_name: Literal["drawable"], default: object = ...) -> type[drawable.Drawable]: ... + def get_resource_class(self, class_name: Literal["drawable"], default: object = None) -> type[drawable.Drawable]: ... @overload - def get_resource_class(self, class_name: Literal["window"], default: object = ...) -> type[drawable.Window]: ... + def get_resource_class(self, class_name: Literal["window"], default: object = None) -> type[drawable.Window]: ... @overload - def get_resource_class(self, class_name: Literal["pixmap"], default: object = ...) -> type[drawable.Pixmap]: ... + def get_resource_class(self, class_name: Literal["pixmap"], default: object = None) -> type[drawable.Pixmap]: ... @overload - def get_resource_class(self, class_name: Literal["fontable"], default: object = ...) -> type[fontable.Fontable]: ... + def get_resource_class(self, class_name: Literal["fontable"], default: object = None) -> type[fontable.Fontable]: ... @overload - def get_resource_class(self, class_name: Literal["font"], default: object = ...) -> type[fontable.Font]: ... + def get_resource_class(self, class_name: Literal["font"], default: object = None) -> type[fontable.Font]: ... @overload - def get_resource_class(self, class_name: Literal["gc"], default: object = ...) -> type[fontable.GC]: ... + def get_resource_class(self, class_name: Literal["gc"], default: object = None) -> type[fontable.GC]: ... @overload - def get_resource_class(self, class_name: Literal["colormap"], default: object = ...) -> type[colormap.Colormap]: ... + def get_resource_class(self, class_name: Literal["colormap"], default: object = None) -> type[colormap.Colormap]: ... @overload def get_resource_class(self, class_name: Literal["cursor"], default: object) -> type[cursor.Cursor]: ... @overload def get_resource_class(self, class_name: str, default: _T) -> type[_ResourceBaseClass] | _T: ... @overload - def get_resource_class(self, class_name: str, default: None = ...) -> type[_ResourceBaseClass] | None: ... + def get_resource_class(self, class_name: str, default: None = None) -> type[_ResourceBaseClass] | None: ... def set_extension_major(self, extname: str, major: int) -> None: ... def get_extension_major(self, extname: str) -> int: ... - def add_extension_event(self, code: int, evt: type[rq.Event], subcode: int | None = ...) -> None: ... + def add_extension_event(self, code: int, evt: type[rq.Event], subcode: int | None = None) -> None: ... def add_extension_error(self, code: int, err: type[error.XError]) -> None: ... def check_for_error(self) -> None: ... def send_request(self, request: rq.Request | rq.ReplyRequest | ConnectionSetupRequest, wait_for_response: bool) -> None: ... def close_internal(self, whom: object) -> None: ... - def send_and_recv(self, flush: bool = ..., event: bool = ..., request: int | None = ..., recv: bool = ...) -> None: ... + def send_and_recv(self, flush: bool = False, event: bool = False, request: int | None = None, recv: bool = False) -> None: ... def parse_response(self, request: int) -> bool: ... def parse_error_response(self, request: int) -> bool: ... def default_error_handler(self, err: object) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/event.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/event.pyi index cfb825449..6e6e31f7b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/event.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/event.pyi @@ -1,4 +1,4 @@ -from typing_extensions import TypeAlias +from typing_extensions import Final, TypeAlias from Xlib.protocol import rq @@ -77,4 +77,4 @@ _EventClass: TypeAlias = dict[ | type[ClientMessage] | type[MappingNotify], ] -event_class: _EventClass +event_class: Final[_EventClass] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/request.pyi index a336f5c90..1ce5a4669 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/request.pyi @@ -1,4 +1,5 @@ from typing import NoReturn +from typing_extensions import Final from Xlib import display from Xlib.protocol import rq @@ -54,7 +55,7 @@ class QueryTextExtents(rq.ReplyRequest): ... class ListFonts(rq.ReplyRequest): ... class ListFontsWithInfo(rq.ReplyRequest): - def __init__(self, display: display.Display, defer: bool = ..., *args: object, **keys: object) -> None: ... + def __init__(self, display: display.Display, defer: bool = False, *args: object, **keys: object) -> None: ... def __getattr__(self, attr: object) -> NoReturn: ... def __getitem__(self, item: str) -> object: ... def __len__(self) -> int: ... @@ -130,4 +131,4 @@ class SetModifierMapping(rq.ReplyRequest): ... class GetModifierMapping(rq.ReplyRequest): ... class NoOperation(rq.Request): ... -major_codes: dict[int, type[rq.Request]] +major_codes: Final[dict[int, type[rq.Request]]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/rq.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/rq.pyi index 8b5b8ac8c..a3ff00307 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/rq.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/rq.pyi @@ -5,10 +5,10 @@ from array import array from builtins import type as Type from collections.abc import Callable, Iterable, Sequence from typing import Any, SupportsInt, TypeVar, overload, type_check_only -from typing_extensions import Literal, LiteralString, SupportsIndex, TypeAlias +from typing_extensions import Final, Literal, LiteralString, SupportsIndex, TypeAlias from Xlib._typing import ErrorHandler, Unused -from Xlib.display import _ResourceBaseClass +from Xlib.display import _BaseDisplay, _ResourceBaseClass from Xlib.error import XError from Xlib.ext.xinput import ClassInfoClass from Xlib.protocol import display @@ -17,22 +17,15 @@ _T = TypeVar("_T") _IntNew: TypeAlias = str | ReadableBuffer | SupportsInt | SupportsIndex | SupportsTrunc _ModifierMappingList8Elements: TypeAlias = Sequence[Sequence[int]] -# Workaround for pytype crash. Should be Xlib.display._BaseDisplay -@type_check_only -class _BaseDisplay(display.Display): - def __init__(self, display: str | None = ...) -> None: ... - def get_atom(self, atomname: str, only_if_exists: bool = ...) -> int: ... - def decode_string(bs: bytes | bytearray) -> str: ... def encode_array(a: array[Any] | memoryview) -> str: ... class BadDataError(Exception): ... -signed_codes: dict[int, str] -unsigned_codes: dict[int, str] -array_unsigned_codes: dict[int, LiteralString] -struct_to_array_codes: dict[str, LiteralString] -size: int +signed_codes: Final[dict[int, str]] +unsigned_codes: Final[dict[int, str]] +array_unsigned_codes: Final[dict[int, LiteralString]] +struct_to_array_codes: Final[dict[str, LiteralString]] class Field: name: str @@ -90,7 +83,7 @@ class FormatField(Field): Format = FormatField class ValueField(Field): - def __init__(self, name: str, default: int | None = ...) -> None: ... + def __init__(self, name: str, default: int | None = None) -> None: ... class Int8(ValueField): structcode: str @@ -114,7 +107,7 @@ class Resource(Card32): cast_function: str class_name: str codes: tuple[int, ...] - def __init__(self, name: str, codes: tuple[int, ...] = ..., default: int | None = ...) -> None: ... + def __init__(self, name: str, codes: tuple[int, ...] = (), default: int | None = None) -> None: ... @overload # type: ignore[override] def check_value(self, value: Callable[[], _T]) -> _T: ... @overload @@ -160,7 +153,7 @@ class Bool(ValueField): class Set(ValueField): structcode: str values: Sequence[object] - def __init__(self, name: str, size: int, values: Sequence[object], default: int | None = ...) -> None: ... + def __init__(self, name: str, size: int, values: Sequence[object], default: int | None = None) -> None: ... def check_value(self, val: _T) -> _T: ... # type: ignore[override] class Gravity(Set): @@ -173,7 +166,7 @@ class FixedBinary(ValueField): class Binary(ValueField): structcode: None pad: int - def __init__(self, name: str, pad: int = ...) -> None: ... + def __init__(self, name: str, pad: int = 1) -> None: ... def pack_value( # type: ignore[override] # Override Callable self, val: bytes | bytearray ) -> tuple[bytes | bytearray, int, None]: ... @@ -187,7 +180,7 @@ class Binary(ValueField): class String8(ValueField): structcode: None pad: int - def __init__(self, name: str, pad: int = ...) -> None: ... + def __init__(self, name: str, pad: int = 1) -> None: ... def pack_value(self, val: bytes | str) -> tuple[bytes, int, None]: ... # type: ignore[override] # Override Callable @overload # type: ignore[override] # Overload for specific values def parse_binary_value( @@ -201,7 +194,7 @@ class String8(ValueField): class String16(ValueField): structcode: None pad: int - def __init__(self, name: str, pad: int = ...) -> None: ... + def __init__(self, name: str, pad: int = 1) -> None: ... def pack_value(self, val: Sequence[object]) -> tuple[bytes, int, None]: ... # type: ignore[override] # Override Callable def parse_binary_value( # type: ignore[override] # length: None will error. See: https://github.com/python-xlib/python-xlib/pull/248 self, data: SliceableBuffer, display: Unused, length: int | Literal["odd", "even"], format: Unused @@ -212,7 +205,7 @@ class List(ValueField): type: Struct | ScalarObj | ResourceObj | ClassInfoClass | type[ValueField] pad: int def __init__( - self, name: str, type: Struct | ScalarObj | ResourceObj | ClassInfoClass | Type[ValueField], pad: int = ... + self, name: str, type: Struct | ScalarObj | ResourceObj | ClassInfoClass | Type[ValueField], pad: int = 1 ) -> None: ... def parse_binary_value( self, data: SliceableBuffer, display: display.Display | None, length: SupportsIndex | None, format: Unused @@ -223,7 +216,7 @@ class List(ValueField): class FixedList(List): size: int - def __init__(self, name: str, size: int, type: Struct | ScalarObj, pad: int = ...) -> None: ... + def __init__(self, name: str, size: int, type: Struct | ScalarObj, pad: int = 1) -> None: ... def parse_binary_value( self, data: SliceableBuffer, display: display.Display | None, length: Unused, format: Unused ) -> tuple[list[DictWrapper | None], SliceableBuffer]: ... @@ -231,7 +224,7 @@ class FixedList(List): class Object(ValueField): type: Struct structcode: str | None - def __init__(self, name: str, type: Struct, default: int | None = ...) -> None: ... + def __init__(self, name: str, type: Struct, default: int | None = None) -> None: ... def parse_binary_value( self, data: SliceableBuffer, display: display.Display | None, length: Unused, format: Unused ) -> tuple[DictWrapper, SliceableBuffer]: ... @@ -342,7 +335,7 @@ class Struct: def parse_value(self, val: SliceableBuffer, display: display.Display | None, rawdict: Literal[True]) -> dict[str, Any]: ... @overload def parse_value( - self, val: SliceableBuffer, display: display.Display | None, rawdict: Literal[False] = ... + self, val: SliceableBuffer, display: display.Display | None, rawdict: Literal[False] = False ) -> DictWrapper: ... @overload def parse_binary( @@ -350,7 +343,7 @@ class Struct: ) -> tuple[dict[str, Any], SliceableBuffer]: ... @overload def parse_binary( - self, data: SliceableBuffer, display: display.Display | None, rawdict: Literal[False] = ... + self, data: SliceableBuffer, display: display.Display | None, rawdict: Literal[False] = False ) -> tuple[DictWrapper, SliceableBuffer]: ... # Structs generate their attributes # TODO: Create a specific type-only class for all instances of `Struct` @@ -385,16 +378,16 @@ class DictWrapper(GetAttrData): class Request: def __init__( - self, display: _BaseDisplay, onerror: ErrorHandler[object] | None = ..., *args: object, **keys: object + self, display: _BaseDisplay, onerror: ErrorHandler[object] | None = None, *args: object, **keys: object ) -> None: ... class ReplyRequest(GetAttrData): - def __init__(self, display: display.Display, defer: int = ..., *args: object, **keys: object) -> None: ... + def __init__(self, display: display.Display, defer: bool = False, *args: object, **keys: object) -> None: ... def reply(self) -> None: ... class Event(GetAttrData): def __init__( - self, binarydata: SliceableBuffer | None = ..., display: display.Display | None = ..., **keys: object + self, binarydata: SliceableBuffer | None = None, display: display.Display | None = None, **keys: object ) -> None: ... def call_error_handler( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/rdb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/rdb.pyi index 4fb7a6662..8b4af5b3d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/rdb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/rdb.pyi @@ -2,7 +2,7 @@ from _typeshed import SupportsDunderGT, SupportsDunderLT, SupportsRead from collections.abc import Iterable, Mapping, Sequence from re import Pattern from typing import Any, Protocol, TypeVar, overload -from typing_extensions import TypeAlias +from typing_extensions import Final, TypeAlias from Xlib.display import Display from Xlib.support.lock import _DummyLock @@ -17,14 +17,14 @@ _DB_Param: TypeAlias = dict[str, Any] class _SupportsComparisons(SupportsDunderLT[_T_contra], SupportsDunderGT[_T_contra], Protocol[_T_contra]): ... -comment_re: Pattern[str] -resource_spec_re: Pattern[str] -value_escape_re: Pattern[str] -resource_parts_re: Pattern[str] -NAME_MATCH: int -CLASS_MATCH: int -WILD_MATCH: int -MATCH_SKIP: int +comment_re: Final[Pattern[str]] +resource_spec_re: Final[Pattern[str]] +value_escape_re: Final[Pattern[str]] +resource_parts_re: Final[Pattern[str]] +NAME_MATCH: Final = 0 +CLASS_MATCH: Final = 2 +WILD_MATCH: Final = 4 +MATCH_SKIP: Final = 6 class OptionError(Exception): ... @@ -33,9 +33,9 @@ class ResourceDB: lock: _DummyLock def __init__( self, - file: bytes | SupportsRead[str] | None = ..., - string: str | None = ..., - resources: Iterable[tuple[str, object]] | None = ..., + file: bytes | SupportsRead[str] | None = None, + string: str | None = None, + resources: Iterable[tuple[str, object]] | None = None, ) -> None: ... def insert_file(self, file: bytes | SupportsRead[str]) -> None: ... def insert_string(self, data: str) -> None: ... @@ -43,7 +43,7 @@ class ResourceDB: def insert(self, resource: str, value: object) -> None: ... def __getitem__(self, keys_tuple: tuple[str, str]) -> Any: ... @overload - def get(self, res: str, cls: str, default: None = ...) -> Any: ... + def get(self, res: str, cls: str, default: None = None) -> Any: ... @overload def get(self, res: str, cls: str, default: _T) -> _T: ... def update(self, db: ResourceDB) -> None: ... @@ -94,4 +94,4 @@ def get_display_opts( options: Mapping[str, Option], argv: Sequence[str] = ... ) -> tuple[Display, str, ResourceDB, Sequence[str]]: ... -stdopts: dict[str, SepArg | NoArg | ResArgClass] +stdopts: Final[dict[str, SepArg | NoArg | ResArgClass]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/connect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/connect.pyi index 53552b31c..dbc38de9e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/connect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/connect.pyi @@ -1,4 +1,6 @@ # Ignore OpenVMS in typeshed +from typing_extensions import Final + from Xlib.support.unix_connect import get_auth as get_auth, get_display as get_display, get_socket as get_socket -platform: str +platform: Final[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/unix_connect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/unix_connect.pyi index 4c2af3b6d..c5ef0e6ad 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/unix_connect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/unix_connect.pyi @@ -3,19 +3,19 @@ from _socket import _Address from platform import uname_result from re import Pattern from socket import socket -from typing_extensions import Literal, TypeAlias +from typing_extensions import Final, Literal, TypeAlias from Xlib._typing import Unused if sys.platform == "darwin": - SUPPORTED_PROTOCOLS: tuple[None, Literal["tcp"], Literal["unix"], Literal["darwin"]] + SUPPORTED_PROTOCOLS: Final[tuple[None, Literal["tcp"], Literal["unix"], Literal["darwin"]]] _Protocol: TypeAlias = Literal[None, "tcp", "unix", "darwin"] - DARWIN_DISPLAY_RE: Pattern[str] + DARWIN_DISPLAY_RE: Final[Pattern[str]] else: - SUPPORTED_PROTOCOLS: tuple[None, Literal["tcp"], Literal["unix"]] + SUPPORTED_PROTOCOLS: Final[tuple[None, Literal["tcp"], Literal["unix"]]] _Protocol: TypeAlias = Literal[None, "tcp", "unix"] uname: uname_result -DISPLAY_RE: Pattern[str] +DISPLAY_RE: Final[Pattern[str]] def get_display(display: str | None) -> tuple[str, str | None, str | None, int, int]: ... def get_socket(dname: _Address, protocol: _Protocol, host: _Address | None, dno: int) -> socket: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/vms_connect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/vms_connect.pyi index 3bbbd7668..842628fe3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/vms_connect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/support/vms_connect.pyi @@ -1,10 +1,11 @@ from _socket import _Address from re import Pattern from socket import socket +from typing_extensions import Final from Xlib._typing import Unused -display_re: Pattern[str] +display_re: Final[Pattern[str]] def get_display(display: str | None) -> tuple[str, None, str, int, int]: ... def get_socket(dname: _Address, protocol: Unused, host: _Address, dno: int) -> socket: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xauth.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xauth.pyi index d0dd09704..2199dd412 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xauth.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xauth.pyi @@ -1,17 +1,21 @@ from _typeshed import FileDescriptorOrPath +from typing_extensions import Final -FamilyInternet: int -FamilyDECnet: int -FamilyChaos: int -FamilyServerInterpreted: int -FamilyInternetV6: int -FamilyLocal: int +from Xlib.X import ( + FamilyChaos as FamilyChaos, + FamilyDECnet as FamilyDECnet, + FamilyInternet as FamilyInternet, + FamilyInternetV6 as FamilyInternetV6, + FamilyServerInterpreted as FamilyServerInterpreted, +) + +FamilyLocal: Final = 256 class Xauthority: entries: list[tuple[bytes, bytes, bytes, bytes, bytes]] - def __init__(self, filename: FileDescriptorOrPath | None = ...) -> None: ... + def __init__(self, filename: FileDescriptorOrPath | None = None) -> None: ... def __len__(self) -> int: ... def __getitem__(self, i: int) -> tuple[bytes, bytes, bytes, bytes, bytes]: ... def get_best_auth( - self, family: bytes, address: bytes, dispno: bytes, types: tuple[bytes, ...] = ... + self, family: bytes, address: bytes, dispno: bytes, types: tuple[bytes, ...] = (b"MIT-MAGIC-COOKIE-1",) ) -> tuple[bytes, bytes]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/colormap.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/colormap.pyi index a3ebc9346..7a110bbb5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/colormap.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/colormap.pyi @@ -1,24 +1,25 @@ from collections.abc import Sequence from re import Pattern +from typing_extensions import Final from Xlib._typing import ErrorHandler from Xlib.protocol import request, rq from Xlib.xobject import resource -rgb_res: list[Pattern[str]] +rgb_res: Final[list[Pattern[str]]] class Colormap(resource.Resource): __colormap__ = resource.Resource.__resource__ - def free(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def free(self, onerror: ErrorHandler[object] | None = None) -> None: ... def copy_colormap_and_free(self, scr_cmap: int) -> Colormap: ... - def install_colormap(self, onerror: ErrorHandler[object] | None = ...) -> None: ... - def uninstall_colormap(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def install_colormap(self, onerror: ErrorHandler[object] | None = None) -> None: ... + def uninstall_colormap(self, onerror: ErrorHandler[object] | None = None) -> None: ... def alloc_color(self, red: int, green: int, blue: int) -> request.AllocColor: ... def alloc_named_color(self, name: str) -> request.AllocColor | request.AllocNamedColor | None: ... def alloc_color_cells(self, contiguous: bool, colors: int, planes: int) -> request.AllocColorCells: ... def alloc_color_planes(self, contiguous: bool, colors: int, red: int, green: int, blue: int) -> request.AllocColorPlanes: ... - def free_colors(self, pixels: Sequence[int], plane_mask: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def store_colors(self, items: dict[str, int], onerror: ErrorHandler[object] | None = ...) -> None: ... - def store_named_color(self, name: str, pixel: int, flags: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def free_colors(self, pixels: Sequence[int], plane_mask: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def store_colors(self, items: dict[str, int], onerror: ErrorHandler[object] | None = None) -> None: ... + def store_named_color(self, name: str, pixel: int, flags: int, onerror: ErrorHandler[object] | None = None) -> None: ... def query_colors(self, pixels: Sequence[int]) -> rq.Struct: ... def lookup_color(self, name: str) -> request.LookupColor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/cursor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/cursor.pyi index aeb773dc6..3d6952ceb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/cursor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/cursor.pyi @@ -4,7 +4,7 @@ from Xlib.xobject import resource class Cursor(resource.Resource): __cursor__ = resource.Resource.__resource__ - def free(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def free(self, onerror: ErrorHandler[object] | None = None) -> None: ... def recolor( - self, foreground: _RGB3IntIterable, background: _RGB3IntIterable, onerror: ErrorHandler[object] | None = ... + self, foreground: _RGB3IntIterable, background: _RGB3IntIterable, onerror: ErrorHandler[object] | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/drawable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/drawable.pyi index da6615aab..c6d6a1887 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/drawable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/drawable.pyi @@ -22,7 +22,7 @@ class Drawable(resource.Resource): height: int, dst_x: int, dst_y: int, - onerror: ErrorHandler[object] | None = ..., + onerror: ErrorHandler[object] | None = None, ) -> None: ... def copy_plane( self, @@ -35,24 +35,26 @@ class Drawable(resource.Resource): dst_x: int, dst_y: int, bit_plane: int, - onerror: ErrorHandler[object] | None = ..., + onerror: ErrorHandler[object] | None = None, ) -> None: ... def poly_point( - self, gc: int, coord_mode: int, points: Sequence[tuple[int, int]], onerror: ErrorHandler[object] | None = ... + self, gc: int, coord_mode: int, points: Sequence[tuple[int, int]], onerror: ErrorHandler[object] | None = None ) -> None: ... - def point(self, gc: int, x: int, y: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def point(self, gc: int, x: int, y: int, onerror: ErrorHandler[object] | None = None) -> None: ... def poly_line( - self, gc: int, coord_mode: int, points: Sequence[tuple[int, int]], onerror: ErrorHandler[object] | None = ... + self, gc: int, coord_mode: int, points: Sequence[tuple[int, int]], onerror: ErrorHandler[object] | None = None ) -> None: ... - def line(self, gc: int, x1: int, y1: int, x2: int, y2: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def line(self, gc: int, x1: int, y1: int, x2: int, y2: int, onerror: ErrorHandler[object] | None = None) -> None: ... def poly_segment( - self, gc: int, segments: Sequence[_Segment4IntSequence], onerror: ErrorHandler[object] | None = ... + self, gc: int, segments: Sequence[_Segment4IntSequence], onerror: ErrorHandler[object] | None = None ) -> None: ... def poly_rectangle( - self, gc: int, rectangles: Sequence[_Rectangle4IntSequence], onerror: ErrorHandler[object] | None = ... + self, gc: int, rectangles: Sequence[_Rectangle4IntSequence], onerror: ErrorHandler[object] | None = None ) -> None: ... - def rectangle(self, gc: int, x: int, y: int, width: int, height: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def poly_arc(self, gc: int, arcs: Sequence[_Arc6IntSequence], onerror: ErrorHandler[object] | None = ...) -> None: ... + def rectangle( + self, gc: int, x: int, y: int, width: int, height: int, onerror: ErrorHandler[object] | None = None + ) -> None: ... + def poly_arc(self, gc: int, arcs: Sequence[_Arc6IntSequence], onerror: ErrorHandler[object] | None = None) -> None: ... def arc( self, gc: int, @@ -62,18 +64,18 @@ class Drawable(resource.Resource): height: int, angle1: int, angle2: int, - onerror: ErrorHandler[object] | None = ..., + onerror: ErrorHandler[object] | None = None, ) -> None: ... def fill_poly( - self, gc: int, shape: int, coord_mode: int, points: Sequence[tuple[int, int]], onerror: ErrorHandler[object] | None = ... + self, gc: int, shape: int, coord_mode: int, points: Sequence[tuple[int, int]], onerror: ErrorHandler[object] | None = None ) -> None: ... def poly_fill_rectangle( - self, gc: int, rectangles: Sequence[_Rectangle4IntSequence], onerror: ErrorHandler[object] | None = ... + self, gc: int, rectangles: Sequence[_Rectangle4IntSequence], onerror: ErrorHandler[object] | None = None ) -> None: ... def fill_rectangle( - self, gc: int, x: int, y: int, width: int, height: int, onerror: ErrorHandler[object] | None = ... + self, gc: int, x: int, y: int, width: int, height: int, onerror: ErrorHandler[object] | None = None ) -> None: ... - def poly_fill_arc(self, gc: int, arcs: Sequence[_Arc6IntSequence], onerror: ErrorHandler[object] | None = ...) -> None: ... + def poly_fill_arc(self, gc: int, arcs: Sequence[_Arc6IntSequence], onerror: ErrorHandler[object] | None = None) -> None: ... def fill_arc( self, gc: int, @@ -83,7 +85,7 @@ class Drawable(resource.Resource): height: int, angle1: int, angle2: int, - onerror: ErrorHandler[object] | None = ..., + onerror: ErrorHandler[object] | None = None, ) -> None: ... def put_image( self, @@ -96,21 +98,21 @@ class Drawable(resource.Resource): depth: int, left_pad: int, data: bytes | bytearray, - onerror: ErrorHandler[object] | None = ..., + onerror: ErrorHandler[object] | None = None, ) -> None: ... - def put_pil_image(self, gc: int, x: int, y: int, image: Image.Image, onerror: ErrorHandler[object] | None = ...) -> None: ... + def put_pil_image(self, gc: int, x: int, y: int, image: Image.Image, onerror: ErrorHandler[object] | None = None) -> None: ... def get_image(self, x: int, y: int, width: int, height: int, format: int, plane_mask: int) -> request.GetImage: ... def draw_text( - self, gc: int, x: int, y: int, text: dict[str, str | int], onerror: ErrorHandler[object] | None = ... + self, gc: int, x: int, y: int, text: dict[str, str | int], onerror: ErrorHandler[object] | None = None ) -> None: ... def poly_text( - self, gc: int, x: int, y: int, items: Sequence[dict[str, str | int]], onerror: ErrorHandler[object] | None = ... + self, gc: int, x: int, y: int, items: Sequence[dict[str, str | int]], onerror: ErrorHandler[object] | None = None ) -> None: ... def poly_text_16( - self, gc: int, x: int, y: int, items: Sequence[dict[str, str | int]], onerror: ErrorHandler[object] | None = ... + self, gc: int, x: int, y: int, items: Sequence[dict[str, str | int]], onerror: ErrorHandler[object] | None = None ) -> None: ... - def image_text(self, gc: int, x: int, y: int, string: str, onerror: ErrorHandler[object] | None = ...) -> None: ... - def image_text_16(self, gc: int, x: int, y: int, string: str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def image_text(self, gc: int, x: int, y: int, string: str, onerror: ErrorHandler[object] | None = None) -> None: ... + def image_text_16(self, gc: int, x: int, y: int, string: str, onerror: ErrorHandler[object] | None = None) -> None: ... def query_best_size(self, item_class: int, width: int, height: int) -> request.QueryBestSize: ... class Window(Drawable): @@ -123,24 +125,24 @@ class Window(Drawable): height: int, border_width: int, depth: int, - window_class: int = ..., - visual: int = ..., - onerror: ErrorHandler[object] | None = ..., + window_class: int = 0, + visual: int = 0, + onerror: ErrorHandler[object] | None = None, **keys: object, ) -> Window: ... - def change_attributes(self, onerror: ErrorHandler[object] | None = ..., **keys: object) -> None: ... + def change_attributes(self, onerror: ErrorHandler[object] | None = None, **keys: object) -> None: ... def get_attributes(self) -> request.GetWindowAttributes: ... - def destroy(self, onerror: ErrorHandler[object] | None = ...) -> None: ... - def destroy_sub_windows(self, onerror: ErrorHandler[object] | None = ...) -> None: ... - def change_save_set(self, mode: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def reparent(self, parent: int, x: int, y: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def map(self, onerror: ErrorHandler[object] | None = ...) -> None: ... - def map_sub_windows(self, onerror: ErrorHandler[object] | None = ...) -> None: ... - def unmap(self, onerror: ErrorHandler[object] | None = ...) -> None: ... - def unmap_sub_windows(self, onerror: ErrorHandler[object] | None = ...) -> None: ... - def configure(self, onerror: ErrorHandler[object] | None = ..., **keys: object) -> None: ... - def circulate(self, direction: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def raise_window(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def destroy(self, onerror: ErrorHandler[object] | None = None) -> None: ... + def destroy_sub_windows(self, onerror: ErrorHandler[object] | None = None) -> None: ... + def change_save_set(self, mode: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def reparent(self, parent: int, x: int, y: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def map(self, onerror: ErrorHandler[object] | None = None) -> None: ... + def map_sub_windows(self, onerror: ErrorHandler[object] | None = None) -> None: ... + def unmap(self, onerror: ErrorHandler[object] | None = None) -> None: ... + def unmap_sub_windows(self, onerror: ErrorHandler[object] | None = None) -> None: ... + def configure(self, onerror: ErrorHandler[object] | None = None, **keys: object) -> None: ... + def circulate(self, direction: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def raise_window(self, onerror: ErrorHandler[object] | None = None) -> None: ... def query_tree(self) -> request.QueryTree: ... def change_property( self, @@ -148,25 +150,25 @@ class Window(Drawable): property_type: int, format: int, data: Sequence[float] | Sequence[str], - mode: int = ..., - onerror: ErrorHandler[object] | None = ..., + mode: int = 0, + onerror: ErrorHandler[object] | None = None, ) -> None: ... def change_text_property( - self, property: int, property_type: int, data: bytes | str, mode: int = ..., onerror: ErrorHandler[object] | None = ... + self, property: int, property_type: int, data: bytes | str, mode: int = 0, onerror: ErrorHandler[object] | None = None ) -> None: ... - def delete_property(self, property: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def delete_property(self, property: int, onerror: ErrorHandler[object] | None = None) -> None: ... def get_property( - self, property: int, property_type: int, offset: int, length: int, delete: bool = ... + self, property: int, property_type: int, offset: int, length: int, delete: bool = False ) -> request.GetProperty | None: ... - def get_full_property(self, property: int, property_type: int, sizehint: int = ...) -> request.GetProperty | None: ... - def get_full_text_property(self, property: int, property_type: int = ..., sizehint: int = ...) -> str | None: ... + def get_full_property(self, property: int, property_type: int, sizehint: int = 10) -> request.GetProperty | None: ... + def get_full_text_property(self, property: int, property_type: int = 0, sizehint: int = 10) -> str | None: ... def list_properties(self) -> list[int]: ... - def set_selection_owner(self, selection: int, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_selection_owner(self, selection: int, time: int, onerror: ErrorHandler[object] | None = None) -> None: ... def convert_selection( - self, selection: int, target: int, property: int, time: int, onerror: ErrorHandler[object] | None = ... + self, selection: int, target: int, property: int, time: int, onerror: ErrorHandler[object] | None = None ) -> None: ... def send_event( - self, event: rq.Event, event_mask: int = ..., propagate: bool = ..., onerror: ErrorHandler[object] | None = ... + self, event: rq.Event, event_mask: int = 0, propagate: bool = False, onerror: ErrorHandler[object] | None = None ) -> None: ... def grab_pointer( self, owner_events: bool, event_mask: int, pointer_mode: int, keyboard_mode: int, confine_to: int, cursor: int, time: int @@ -181,9 +183,9 @@ class Window(Drawable): keyboard_mode: int, confine_to: int, cursor: int, - onerror: ErrorHandler[object] | None = ..., + onerror: ErrorHandler[object] | None = None, ) -> None: ... - def ungrab_button(self, button: int, modifiers: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def ungrab_button(self, button: int, modifiers: int, onerror: ErrorHandler[object] | None = None) -> None: ... def grab_keyboard(self, owner_events: bool, pointer_mode: int, keyboard_mode: int, time: int) -> int: ... def grab_key( self, @@ -192,9 +194,9 @@ class Window(Drawable): owner_events: bool, pointer_mode: int, keyboard_mode: int, - onerror: ErrorHandler[object] | None = ..., + onerror: ErrorHandler[object] | None = None, ) -> None: ... - def ungrab_key(self, key: int, modifiers: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def ungrab_key(self, key: int, modifiers: int, onerror: ErrorHandler[object] | None = None) -> None: ... def query_pointer(self) -> request.QueryPointer: ... def get_motion_events(self, start: int, stop: int) -> rq.Struct: ... def translate_coords(self, src_window: int, src_x: int, src_y: int) -> request.TranslateCoords: ... @@ -202,60 +204,60 @@ class Window(Drawable): self, x: int, y: int, - src_window: int = ..., - src_x: int = ..., - src_y: int = ..., - src_width: int = ..., - src_height: int = ..., - onerror: ErrorHandler[object] | None = ..., + src_window: int = 0, + src_x: int = 0, + src_y: int = 0, + src_width: int = 0, + src_height: int = 0, + onerror: ErrorHandler[object] | None = None, ) -> None: ... - def set_input_focus(self, revert_to: int, time: int, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_input_focus(self, revert_to: int, time: int, onerror: ErrorHandler[object] | None = None) -> None: ... def clear_area( self, - x: int = ..., - y: int = ..., - width: int = ..., - height: int = ..., - exposures: bool = ..., - onerror: ErrorHandler[object] | None = ..., + x: int = 0, + y: int = 0, + width: int = 0, + height: int = 0, + exposures: bool = False, + onerror: ErrorHandler[object] | None = None, ) -> None: ... def create_colormap(self, visual: int, alloc: int) -> colormap.Colormap: ... def list_installed_colormaps(self) -> list[colormap.Colormap]: ... - def rotate_properties(self, properties: Sequence[int], delta: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def set_wm_name(self, name: bytes | str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def rotate_properties(self, properties: Sequence[int], delta: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def set_wm_name(self, name: bytes | str, onerror: ErrorHandler[object] | None = None) -> None: ... def get_wm_name(self) -> str | None: ... - def set_wm_icon_name(self, name: bytes | str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_wm_icon_name(self, name: bytes | str, onerror: ErrorHandler[object] | None = None) -> None: ... def get_wm_icon_name(self) -> str | None: ... - def set_wm_class(self, inst: str, cls: str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_wm_class(self, inst: str, cls: str, onerror: ErrorHandler[object] | None = None) -> None: ... def get_wm_class(self) -> tuple[str, str] | None: ... - def set_wm_transient_for(self, window: Window, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_wm_transient_for(self, window: Window, onerror: ErrorHandler[object] | None = None) -> None: ... def get_wm_transient_for(self) -> Window | None: ... - def set_wm_protocols(self, protocols: Iterable[int], onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_wm_protocols(self, protocols: Iterable[int], onerror: ErrorHandler[object] | None = None) -> None: ... def get_wm_protocols(self) -> list[int]: ... - def set_wm_colormap_windows(self, windows: Iterable[Window], onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_wm_colormap_windows(self, windows: Iterable[Window], onerror: ErrorHandler[object] | None = None) -> None: ... def get_wm_colormap_windows(self) -> Iterable[Window]: ... - def set_wm_client_machine(self, name: bytes | str, onerror: ErrorHandler[object] | None = ...) -> None: ... + def set_wm_client_machine(self, name: bytes | str, onerror: ErrorHandler[object] | None = None) -> None: ... def get_wm_client_machine(self) -> str | None: ... def set_wm_normal_hints( - self, hints: rq.DictWrapper | dict[str, Any] = ..., onerror: ErrorHandler[object] | None = ..., **keys: object + self, hints: rq.DictWrapper | dict[str, Any] = {}, onerror: ErrorHandler[object] | None = None, **keys: object ) -> None: ... def get_wm_normal_hints(self) -> rq.DictWrapper | None: ... def set_wm_hints( - self, hints: rq.DictWrapper | dict[str, Any] = ..., onerror: ErrorHandler[object] | None = ..., **keys: object + self, hints: rq.DictWrapper | dict[str, Any] = {}, onerror: ErrorHandler[object] | None = None, **keys: object ) -> None: ... def get_wm_hints(self) -> rq.DictWrapper | None: ... def set_wm_state( - self, hints: rq.DictWrapper | dict[str, Any] = ..., onerror: ErrorHandler[object] | None = ..., **keys: object + self, hints: rq.DictWrapper | dict[str, Any] = {}, onerror: ErrorHandler[object] | None = None, **keys: object ) -> None: ... def get_wm_state(self) -> rq.DictWrapper | None: ... def set_wm_icon_size( - self, hints: rq.DictWrapper | dict[str, Any] = ..., onerror: ErrorHandler[object] | None = ..., **keys: object + self, hints: rq.DictWrapper | dict[str, Any] = {}, onerror: ErrorHandler[object] | None = None, **keys: object ) -> None: ... def get_wm_icon_size(self) -> rq.DictWrapper | None: ... class Pixmap(Drawable): __pixmap__ = resource.Resource.__resource__ - def free(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def free(self, onerror: ErrorHandler[object] | None = None) -> None: ... def create_cursor( self, mask: int, foreground: _RGB3IntIterable, background: _RGB3IntIterable, x: int, y: int ) -> cursor.Cursor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/fontable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/fontable.pyi index 614c19deb..2f3c57844 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/fontable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/fontable.pyi @@ -12,22 +12,22 @@ class Fontable(resource.Resource): class GC(Fontable): __gc__ = resource.Resource.__resource__ - def change(self, onerror: ErrorHandler[object] | None = ..., **keys: object) -> None: ... - def copy(self, src_gc: int, mask: int, onerror: ErrorHandler[object] | None = ...) -> None: ... - def set_dashes(self, offset: int, dashes: Sequence[int], onerror: ErrorHandler[object] | None = ...) -> None: ... + def change(self, onerror: ErrorHandler[object] | None = None, **keys: object) -> None: ... + def copy(self, src_gc: int, mask: int, onerror: ErrorHandler[object] | None = None) -> None: ... + def set_dashes(self, offset: int, dashes: Sequence[int], onerror: ErrorHandler[object] | None = None) -> None: ... def set_clip_rectangles( self, x_origin: int, y_origin: int, rectangles: Sequence[dict[str, int]], ordering: int, - onerror: ErrorHandler[object] | None = ..., + onerror: ErrorHandler[object] | None = None, ) -> None: ... - def free(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def free(self, onerror: ErrorHandler[object] | None = None) -> None: ... class Font(Fontable): __font__ = resource.Resource.__resource__ - def close(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def close(self, onerror: ErrorHandler[object] | None = None) -> None: ... def create_glyph_cursor( self, mask: Font, source_char: int, mask_char: int, foreground: _RGB3IntIterable, background: _RGB3IntIterable ) -> cursor.Cursor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/resource.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/resource.pyi index 81577e09e..9ef991b6c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/resource.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/xobject/resource.pyi @@ -5,6 +5,6 @@ class Resource: display: _BaseDisplay id: int owner: int - def __init__(self, display: _BaseDisplay, rid: int, owner: int = ...) -> None: ... + def __init__(self, display: _BaseDisplay, rid: int, owner: int = 0) -> None: ... def __resource__(self) -> int: ... - def kill_client(self, onerror: ErrorHandler[object] | None = ...) -> None: ... + def kill_client(self, onerror: ErrorHandler[object] | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pytz/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pytz/METADATA.toml index 788504078..7c6bf92b0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pytz/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pytz/METADATA.toml @@ -1 +1 @@ -version = "2022.7.1" +version = "2023.3" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/__init__.pyi index e6b4d99a1..7ea6856ce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/__init__.pyi @@ -30,10 +30,10 @@ class _FixedOffset(datetime.tzinfo): def utcoffset(self, dt: Unused) -> datetime.timedelta | None: ... def dst(self, dt: Unused) -> datetime.timedelta: ... def tzname(self, dt: Unused) -> None: ... - def localize(self, dt: datetime.datetime, is_dst: bool = ...) -> datetime.datetime: ... - def normalize(self, dt: datetime.datetime, is_dst: bool = ...) -> datetime.datetime: ... + def localize(self, dt: datetime.datetime, is_dst: bool = False) -> datetime.datetime: ... + def normalize(self, dt: datetime.datetime, is_dst: bool = False) -> datetime.datetime: ... -def FixedOffset(offset: int, _tzinfos: dict[int, _FixedOffset] = ...) -> _UTCclass | _FixedOffset: ... +def FixedOffset(offset: int, _tzinfos: dict[int, _FixedOffset] = {}) -> _UTCclass | _FixedOffset: ... all_timezones: list[str] all_timezones_set: set[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/lazy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/lazy.pyi index 84a7d2e22..c0d0eebc2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/lazy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/lazy.pyi @@ -10,8 +10,8 @@ class LazyDict(DictMixin[str, Incomplete]): class LazyList(list[Incomplete]): # does not return `Self` type: - def __new__(cls, fill_iter: Incomplete | None = ...) -> LazyList: ... # noqa: Y034 + def __new__(cls, fill_iter: Incomplete | None = None) -> LazyList: ... # noqa: Y034 class LazySet(set[Incomplete]): # does not return `Self` type: - def __new__(cls, fill_iter: Incomplete | None = ...) -> LazySet: ... # noqa: Y034 + def __new__(cls, fill_iter: Incomplete | None = None) -> LazySet: ... # noqa: Y034 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/tzinfo.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/tzinfo.pyi index a744a7ad8..ddbe54a11 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/tzinfo.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pytz/pytz/tzinfo.pyi @@ -19,21 +19,21 @@ class BaseTzInfo(datetime.tzinfo): class StaticTzInfo(BaseTzInfo): def fromutc(self, dt: datetime.datetime) -> datetime.datetime: ... - def localize(self, dt: datetime.datetime, is_dst: bool | None = ...) -> datetime.datetime: ... - def normalize(self, dt: datetime.datetime, is_dst: bool | None = ...) -> datetime.datetime: ... - def tzname(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> str: ... - def utcoffset(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta: ... - def dst(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta: ... + def localize(self, dt: datetime.datetime, is_dst: bool | None = False) -> datetime.datetime: ... + def normalize(self, dt: datetime.datetime, is_dst: bool | None = False) -> datetime.datetime: ... + def tzname(self, dt: datetime.datetime | None, is_dst: bool | None = None) -> str: ... + def utcoffset(self, dt: datetime.datetime | None, is_dst: bool | None = None) -> datetime.timedelta: ... + def dst(self, dt: datetime.datetime | None, is_dst: bool | None = None) -> datetime.timedelta: ... class DstTzInfo(BaseTzInfo): - def __init__(self, _inf: Any = ..., _tzinfos: Any = ...) -> None: ... + def __init__(self, _inf: Any = None, _tzinfos: Any = None) -> None: ... def fromutc(self, dt: datetime.datetime) -> datetime.datetime: ... - def localize(self, dt: datetime.datetime, is_dst: bool | None = ...) -> datetime.datetime: ... + def localize(self, dt: datetime.datetime, is_dst: bool | None = False) -> datetime.datetime: ... def normalize(self, dt: datetime.datetime) -> datetime.datetime: ... - def tzname(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> str: ... + def tzname(self, dt: datetime.datetime | None, is_dst: bool | None = None) -> str: ... # https://github.com/python/mypy/issues/12379 @overload # type: ignore[override] - def utcoffset(self, dt: None, is_dst: bool | None = ...) -> None: ... + def utcoffset(self, dt: None, is_dst: bool | None = None) -> None: ... @overload - def utcoffset(self, dt: datetime.datetime, is_dst: bool | None = ...) -> datetime.timedelta: ... - def dst(self, dt: datetime.datetime | None, is_dst: bool | None = ...) -> datetime.timedelta | None: ... + def utcoffset(self, dt: datetime.datetime, is_dst: bool | None = None) -> datetime.timedelta: ... + def dst(self, dt: datetime.datetime | None, is_dst: bool | None = None) -> datetime.timedelta | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/METADATA.toml index 0e4489b4d..0f4aa7161 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/METADATA.toml @@ -1,4 +1,4 @@ -version = "305.*" +version = "306.*" [tool.stubtest] platforms = ["win32"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/isapi/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/isapi/__init__.pyi index 87815a678..bf54f8317 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/isapi/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/isapi/__init__.pyi @@ -4,7 +4,7 @@ class ISAPIError(Exception): errno: Incomplete strerror: Incomplete funcname: Incomplete - def __init__(self, errno, strerror: Incomplete | None = ..., funcname: Incomplete | None = ...) -> None: ... + def __init__(self, errno, strerror: Incomplete | None = None, funcname: Incomplete | None = None) -> None: ... class FilterError(ISAPIError): ... class ExtensionError(ISAPIError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/win32con.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/win32con.pyi index b5f256e4b..56ca7d1f6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/win32con.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/win32con.pyi @@ -1764,6 +1764,7 @@ MDIS_ALLCHILDSTYLES: int MDITILE_VERTICAL: int MDITILE_HORIZONTAL: int MDITILE_SKIPDISABLED: int +MDITILE_ZORDER: int IMC_GETCANDIDATEPOS: int IMC_SETCANDIDATEPOS: int IMC_GETCOMPOSITIONFONT: int @@ -2185,6 +2186,7 @@ TOKEN_QUERY_SOURCE: int TOKEN_ADJUST_PRIVILEGES: int TOKEN_ADJUST_GROUPS: int TOKEN_ADJUST_DEFAULT: int +TOKEN_ADJUST_SESSIONID: int TOKEN_ALL_ACCESS: int TOKEN_READ: int TOKEN_WRITE: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/win32evtlogutil.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/win32evtlogutil.pyi index 626cab5b1..10364546c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/win32evtlogutil.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/win32evtlogutil.pyi @@ -7,7 +7,12 @@ error: Incomplete langid: Incomplete def AddSourceToRegistry( - appName, msgDLL: Incomplete | None = ..., eventLogType: str = ..., eventLogFlags: Incomplete | None = ... + appName, + msgDLL: Incomplete | None = None, + eventLogType: str = "Application", + eventLogFlags: Incomplete | None = None, + categoryDLL: Incomplete | None = None, + categoryCount: int = 0, ) -> None: ... def RemoveSourceFromRegistry(appName, eventLogType: str = ...) -> None: ... def ReportEvent( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32api.pyi index 855559c79..33f944520 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32api.pyi @@ -11,6 +11,20 @@ class _MonitorInfo(TypedDict): Flags: int Device: str +class _FileVersionInfo(TypedDict): + Signature: int + StrucVersion: int + FileVersionMS: int + FileVersionLS: int + ProductVersionMS: int + ProductVersionLS: int + FileFlagsMask: int + FileFlags: int + FileOS: int + FileType: int + FileSubtype: int + FileDate: None | Incomplete + def AbortSystemShutdown(computerName: str) -> None: ... def InitiateSystemShutdown(computerName: str, message: str, timeOut, bForceClose, bRebootAfterShutdown) -> None: ... def Apply(exceptionHandler, func, args): ... @@ -38,8 +52,8 @@ def EnumDisplayDevices(Device: str | None = ..., DevNum: int = ..., Flags: int = def EnumDisplayMonitors( hdc: int | None = ..., rcClip: _win32typing.PyRECT | None = ... ) -> list[tuple[_win32typing.PyHANDLE, _win32typing.PyHANDLE, tuple[int, int, int, int]]]: ... -def EnumDisplaySettings(DeviceName: str | None = ..., ModeNum: int = ...) -> _win32typing.PyDEVMODE: ... -def EnumDisplaySettingsEx(ModeNum, DeviceName: str | None = ..., Flags=...) -> _win32typing.PyDEVMODE: ... +def EnumDisplaySettings(DeviceName: str | None = ..., ModeNum: int = ...) -> _win32typing.PyDEVMODEW: ... +def EnumDisplaySettingsEx(ModeNum, DeviceName: str | None = ..., Flags=...) -> _win32typing.PyDEVMODEW: ... def EnumResourceLanguages( hmodule: int, lpType: _win32typing.PyResourceId, lpName: _win32typing.PyResourceId ) -> list[Incomplete]: ... @@ -91,7 +105,7 @@ def GetDomainName() -> str: ... def GetEnvironmentVariable(variable): ... def GetEnvironmentVariableW(Name) -> str: ... def GetFileAttributes(pathName: str): ... -def GetFileVersionInfo(Filename: str, SubBlock: str) -> None: ... +def GetFileVersionInfo(__Filename: str, __SubBlock: str) -> _FileVersionInfo: ... def GetFocus(): ... def GetFullPathName(fileName: str) -> str: ... def GetHandleInformation(__Object: int): ... @@ -124,6 +138,7 @@ def SetSystemFileCacheSize(MinimumFileCacheSize, MaximumFileCacheSize, Flags=... def GetSystemInfo(): ... def GetNativeSystemInfo(): ... def GetSystemMetrics(index): ... +def GetSystemPowerStatus() -> dict[str, int]: ... def GetSystemTime(): ... def GetTempFileName(path: str, prefix: str, nUnique): ... def GetTempPath() -> str: ... @@ -249,10 +264,10 @@ def WinExec(cmdLine: str, arg) -> None: ... def WinHelp(hwnd: int, hlpFile: str, cmd, data: str | int = ...) -> None: ... def WriteProfileSection(section: str, data: str, iniName: str | None = ...): ... def WriteProfileVal(section: str, entry: str, value: str, iniName: str | None = ...) -> None: ... -def HIBYTE(val): ... -def LOBYTE(val): ... -def HIWORD(val): ... -def LOWORD(val): ... +def HIBYTE(__val: int) -> int: ... +def LOBYTE(__val: int) -> int: ... +def HIWORD(__val: int) -> int: ... +def LOWORD(__val: int) -> int: ... def RGB(red, green, blue): ... def MAKELANGID(PrimaryLanguage, SubLanguage): ... def MAKEWORD(low, high): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32gui.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32gui.pyi index 8d5055a0a..0afcae6e8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32gui.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32gui.pyi @@ -26,6 +26,12 @@ def GetWindowLong(hwnd: int, index): ... def GetClassLong(hwnd: int, index): ... def SetWindowLong(hwnd: int, index, value): ... def CallWindowProc(wndproc, hwnd: int, msg, wparam, lparam): ... +def CascadeWindows( + __hwndObject: _win32typing.PyHANDLE | int | None, + __how: int, + __rectObject: _win32typing.PyRECT | tuple[int, int, int, int] | int | None = None, + __childrenObject: tuple[_win32typing.PyHANDLE | int, ...] | None = None, +) -> int: ... def SendMessage( __hwnd: int | None, __message: int, __wparam: int | None = ..., __lparam: ReadableBuffer | float | None = ... ) -> int: ... @@ -42,6 +48,7 @@ def PostMessage( ) -> None: ... def PostThreadMessage(threadId, message, wparam, lparam) -> None: ... def ReplyMessage(result): ... +def ResetDC(__hdc: int, __devmode: _win32typing.PyDEVMODE | _win32typing.PyDEVMODEW) -> int: ... def RegisterWindowMessage(name: str): ... def DefWindowProc( hwnd: int | None, message: int, wparam: ReadableBuffer | float | None, lparam: ReadableBuffer | float | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32com/client/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32com/client/__init__.pyi index 930b06f00..f87b379fc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32com/client/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32com/client/__init__.pyi @@ -14,7 +14,7 @@ def Dispatch( userName: str | None = ..., resultCLSID: _Stringifiable | None = ..., typeinfo: _win32typing.PyITypeInfo | None = ..., - UnicodeToString: None = ..., + UnicodeToString: None = None, clsctx: int = ..., ) -> dynamic.CDispatch: ... def DispatchEx( @@ -23,7 +23,7 @@ def DispatchEx( userName: Incomplete | None = ..., resultCLSID: Incomplete | None = ..., typeinfo: Incomplete | None = ..., - UnicodeToString: None = ..., + UnicodeToString: None = None, clsctx: Incomplete | None = ..., ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32com/client/dynamic.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32com/client/dynamic.pyi index d9cdc85b6..f9e8200ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32com/client/dynamic.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32com/client/dynamic.pyi @@ -15,7 +15,7 @@ class _DispatchCreateClass(Protocol[_T_co]): IDispatch: str | PyIDispatchType | _GoodDispatchTypes | PyIUnknownType, olerepr: build.DispatchItem | build.LazyDispatchItem, userName: str | None = ..., - UnicodeToString: None = ..., + UnicodeToString: None = None, lazydata: Incomplete | None = ..., ) -> _T_co: ... @@ -40,16 +40,16 @@ def Dispatch( userName: str | None, createClass: _DispatchCreateClass[_T], typeinfo: _win32typing.PyITypeInfo | None = ..., - UnicodeToString: None = ..., + UnicodeToString: None = None, clsctx: int = ..., ) -> _T: ... @overload def Dispatch( IDispatch: str | PyIDispatchType | _GoodDispatchTypes | PyIUnknownType, userName: str | None = ..., - createClass: None = ..., + createClass: None = None, typeinfo: _win32typing.PyITypeInfo | None = ..., - UnicodeToString: None = ..., + UnicodeToString: None = None, clsctx: int = ..., ) -> CDispatch: ... def MakeOleRepr(IDispatch, typeinfo, typecomp): ... @@ -67,7 +67,7 @@ class CDispatch: IDispatch, olerepr, userName: Incomplete | None = ..., - UnicodeToString: None = ..., + UnicodeToString: None = None, lazydata: Incomplete | None = ..., ) -> None: ... def __call__(self, *args): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32comext/axdebug/adb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32comext/axdebug/adb.pyi index 70d39be22..3a1a293c9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32comext/axdebug/adb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32comext/axdebug/adb.pyi @@ -37,6 +37,7 @@ class Adb(bdb.Bdb, gateways.RemoteDebugApplicationEvents): logicalbotframe: Incomplete currentframe: Incomplete recursiveData: Incomplete + def __init__(self) -> None: ... def canonic(self, fname): ... def reset(self) -> None: ... def stop_here(self, frame): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32comext/axdebug/codecontainer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32comext/axdebug/codecontainer.pyi index e42c470b2..32647ae27 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32comext/axdebug/codecontainer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32comext/axdebug/codecontainer.pyi @@ -3,6 +3,8 @@ from _typeshed import Incomplete from win32comext.axdebug import contexts as contexts from win32comext.axdebug.util import RaiseNotImpl as RaiseNotImpl +name: str + class SourceCodeContainer: sourceContext: Incomplete text: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml index ab5b672a1..8864f4e1d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.5.1" +version = "4.5.4" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0", "types-pyOpenSSL"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/__init__.pyi index 89f0cf2a1..e96eb52fd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/__init__.pyi @@ -1,4 +1,4 @@ -from . import client, connection, exceptions, sentinel, utils +from . import client, connection, credentials, exceptions, sentinel, utils from .cluster import RedisCluster as RedisCluster __all__ = [ @@ -10,6 +10,7 @@ __all__ = [ "Connection", "ConnectionError", "ConnectionPool", + "CredentialProvider", "DataError", "from_url", "InvalidResponse", @@ -24,6 +25,7 @@ __all__ = [ "SentinelManagedConnection", "SentinelManagedSSLConnection", "SSLConnection", + "UsernamePasswordCredentialProvider", "StrictRedis", "TimeoutError", "UnixDomainSocketConnection", @@ -60,5 +62,8 @@ ResponseError = exceptions.ResponseError TimeoutError = exceptions.TimeoutError WatchError = exceptions.WatchError +CredentialProvider = credentials.CredentialProvider +UsernamePasswordCredentialProvider = credentials.UsernamePasswordCredentialProvider + __version__: str VERSION: tuple[int | str, ...] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi index 663d50079..fed150e24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi @@ -35,60 +35,60 @@ class Redis(AbstractRedis, RedisModuleCommands, AsyncCoreCommands[_StrType], Asy def __init__( self, *, - host: str = ..., - port: int = ..., - db: str | int = ..., - password: str | None = ..., - socket_timeout: float | None = ..., - socket_connect_timeout: float | None = ..., - socket_keepalive: bool | None = ..., - socket_keepalive_options: Mapping[int, int | bytes] | None = ..., - connection_pool: ConnectionPool | None = ..., - unix_socket_path: str | None = ..., - encoding: str = ..., - encoding_errors: str = ..., - decode_responses: bool = ..., - retry_on_timeout: bool = ..., - retry_on_error: list[type[RedisError]] | None = ..., - ssl: bool = ..., - ssl_keyfile: str | None = ..., - ssl_certfile: str | None = ..., - ssl_cert_reqs: str = ..., - ssl_ca_certs: str | None = ..., - ssl_ca_data: str | None = ..., - ssl_check_hostname: bool = ..., - max_connections: int | None = ..., - single_connection_client: bool = ..., - health_check_interval: int = ..., - client_name: str | None = ..., - username: str | None = ..., - retry: Retry | None = ..., - auto_close_connection_pool: bool = ..., - redis_connect_func: ConnectCallbackT | None = ..., - credential_provider: CredentialProvider | None = ..., + host: str = "localhost", + port: int = 6379, + db: str | int = 0, + password: str | None = None, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, + socket_keepalive: bool | None = None, + socket_keepalive_options: Mapping[int, int | bytes] | None = None, + connection_pool: ConnectionPool | None = None, + unix_socket_path: str | None = None, + encoding: str = "utf-8", + encoding_errors: str = "strict", + decode_responses: bool = False, + retry_on_timeout: bool = False, + retry_on_error: list[type[RedisError]] | None = None, + ssl: bool = False, + ssl_keyfile: str | None = None, + ssl_certfile: str | None = None, + ssl_cert_reqs: str = "required", + ssl_ca_certs: str | None = None, + ssl_ca_data: str | None = None, + ssl_check_hostname: bool = False, + max_connections: int | None = None, + single_connection_client: bool = False, + health_check_interval: int = 0, + client_name: str | None = None, + username: str | None = None, + retry: Retry | None = None, + auto_close_connection_pool: bool = True, + redis_connect_func: ConnectCallbackT | None = None, + credential_provider: CredentialProvider | None = None, ) -> None: ... def __await__(self): ... async def initialize(self) -> Self: ... def set_response_callback(self, command: str, callback: ResponseCallbackT): ... def load_external_module(self, funcname, func) -> None: ... - def pipeline(self, transaction: bool = ..., shard_hint: str | None = ...) -> Pipeline[_StrType]: ... + def pipeline(self, transaction: bool = True, shard_hint: str | None = None) -> Pipeline[_StrType]: ... async def transaction( self, func: Callable[[Pipeline[_StrType]], Any | Awaitable[Any]], *watches: KeyT, - shard_hint: str | None = ..., - value_from_callable: bool = ..., - watch_delay: float | None = ..., + shard_hint: str | None = None, + value_from_callable: bool = False, + watch_delay: float | None = None, ): ... def lock( self, name: KeyT, - timeout: float | None = ..., - sleep: float = ..., - blocking: bool = ..., - blocking_timeout: float | None = ..., - lock_class: type[Lock] | None = ..., - thread_local: bool = ..., + timeout: float | None = None, + sleep: float = 0.1, + blocking: bool = True, + blocking_timeout: float | None = None, + lock_class: type[Lock] | None = None, + thread_local: bool = True, ) -> Lock: ... def pubsub(self, **kwargs) -> PubSub: ... def monitor(self) -> Monitor: ... @@ -98,7 +98,7 @@ class Redis(AbstractRedis, RedisModuleCommands, AsyncCoreCommands[_StrType], Asy self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None ) -> None: ... def __del__(self, _warnings: Any = ...) -> None: ... - async def close(self, close_connection_pool: bool | None = ...) -> None: ... + async def close(self, close_connection_pool: bool | None = None) -> None: ... async def execute_command(self, *args, **options): ... async def parse_response(self, connection: Connection, command_name: str | bytes, **options): ... @@ -141,9 +141,9 @@ class PubSub: def __init__( self, connection_pool: ConnectionPool, - shard_hint: str | None = ..., - ignore_subscribe_messages: bool = ..., - encoder: Incomplete | None = ..., + shard_hint: str | None = None, + ignore_subscribe_messages: bool = False, + encoder: Incomplete | None = None, ) -> None: ... async def __aenter__(self) -> Self: ... async def __aexit__( @@ -156,17 +156,17 @@ class PubSub: @property def subscribed(self) -> bool: ... async def execute_command(self, *args: EncodableT): ... - async def parse_response(self, block: bool = ..., timeout: float = ...): ... + async def parse_response(self, block: bool = True, timeout: float = 0): ... async def check_health(self) -> None: ... async def psubscribe(self, *args: ChannelT, **kwargs: PubSubHandler): ... def punsubscribe(self, *args: ChannelT) -> Awaitable[Any]: ... async def subscribe(self, *args: ChannelT, **kwargs: Callable[..., Any]): ... def unsubscribe(self, *args) -> Awaitable[Any]: ... def listen(self) -> AsyncIterator[Any]: ... - async def get_message(self, ignore_subscribe_messages: bool = ..., timeout: float = ...): ... - def ping(self, message: Incomplete | None = ...) -> Awaitable[Any]: ... - async def handle_message(self, response, ignore_subscribe_messages: bool = ...): ... - async def run(self, *, exception_handler: PSWorkerThreadExcHandlerT | None = ..., poll_timeout: float = ...) -> None: ... + async def get_message(self, ignore_subscribe_messages: bool = False, timeout: float = 0.0): ... + def ping(self, message: Incomplete | None = None) -> Awaitable[Any]: ... + async def handle_message(self, response, ignore_subscribe_messages: bool = False): ... + async def run(self, *, exception_handler: PSWorkerThreadExcHandlerT | None = None, poll_timeout: float = 1.0) -> None: ... class PubsubWorkerExceptionHandler(Protocol): def __call__(self, e: BaseException, pubsub: PubSub): ... @@ -212,33 +212,33 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def annotate_exception(self, exception: Exception, number: int, command: Iterable[object]) -> None: ... async def parse_response(self, connection: Connection, command_name: str | bytes, **options): ... async def load_scripts(self) -> None: ... - async def execute(self, raise_on_error: bool = ...): ... + async def execute(self, raise_on_error: bool = True): ... async def discard(self) -> None: ... async def watch(self, *names: KeyT) -> bool: ... async def unwatch(self) -> bool: ... # region acl commands - def acl_cat(self, category: str | None = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def acl_cat(self, category: str | None = None, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def acl_deluser(self, *username: str, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def acl_genpass(self, bits: int | None = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def acl_genpass(self, bits: int | None = None, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def acl_getuser(self, username: str, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def acl_help(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def acl_list(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def acl_log(self, count: int | None = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def acl_log(self, count: int | None = None, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def acl_log_reset(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def acl_load(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def acl_save(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def acl_setuser( # type: ignore[override] self, username: str, - enabled: bool = ..., - nopass: bool = ..., - passwords: Sequence[str] | None = ..., - hashed_passwords: Sequence[str] | None = ..., - categories: Sequence[str] | None = ..., - commands: Sequence[str] | None = ..., - keys: Sequence[str] | None = ..., - channels: Iterable[ChannelT] | None = ..., - selectors: Iterable[tuple[str, KeyT]] | None = ..., + enabled: bool = False, + nopass: bool = False, + passwords: Sequence[str] | None = None, + hashed_passwords: Sequence[str] | None = None, + categories: Sequence[str] | None = None, + commands: Sequence[str] | None = None, + keys: Sequence[str] | None = None, + channels: Iterable[ChannelT] | None = None, + selectors: Iterable[tuple[str, KeyT]] | None = None, reset: bool = False, reset_keys: bool = False, reset_channels: bool = False, @@ -255,48 +255,52 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): # endregion # region BasicKey commands def append(self, key, value) -> Any: ... # type: ignore[override] - def bitcount(self, key: _Key, start: int | None = ..., end: int | None = ..., mode: str | None = ...) -> Any: ... # type: ignore[override] - def bitfield(self, key, default_overflow: Incomplete | None = ...) -> Any: ... # type: ignore[override] + def bitcount(self, key: _Key, start: int | None = None, end: int | None = None, mode: str | None = None) -> Any: ... # type: ignore[override] + def bitfield(self, key, default_overflow: Incomplete | None = None) -> Any: ... # type: ignore[override] def bitop(self, operation, dest, *keys) -> Any: ... # type: ignore[override] - def bitpos(self, key: _Key, bit: int, start: int | None = ..., end: int | None = ..., mode: str | None = ...) -> Any: ... # type: ignore[override] - def copy(self, source, destination, destination_db: Incomplete | None = ..., replace: bool = ...) -> Any: ... # type: ignore[override] - def decr(self, name, amount: int = ...) -> Any: ... # type: ignore[override] - def decrby(self, name, amount: int = ...) -> Any: ... # type: ignore[override] + def bitpos(self, key: _Key, bit: int, start: int | None = None, end: int | None = None, mode: str | None = None) -> Any: ... # type: ignore[override] + def copy(self, source, destination, destination_db: Incomplete | None = None, replace: bool = False) -> Any: ... # type: ignore[override] + def decr(self, name, amount: int = 1) -> Any: ... # type: ignore[override] + def decrby(self, name, amount: int = 1) -> Any: ... # type: ignore[override] def delete(self, *names: _Key) -> Any: ... # type: ignore[override] def dump(self, name: _Key) -> Any: ... # type: ignore[override] def exists(self, *names: _Key) -> Any: ... # type: ignore[override] def expire( # type: ignore[override] - self, name: _Key, time: int | timedelta, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ... + self, name: _Key, time: int | timedelta, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False ) -> Any: ... - def expireat(self, name, when, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ...) -> Any: ... # type: ignore[override] + def expireat(self, name, when, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False) -> Any: ... # type: ignore[override] def get(self, name: _Key) -> Any: ... # type: ignore[override] def getdel(self, name: _Key) -> Any: ... # type: ignore[override] def getex( # type: ignore[override] self, name, - ex: Incomplete | None = ..., - px: Incomplete | None = ..., - exat: Incomplete | None = ..., - pxat: Incomplete | None = ..., - persist: bool = ..., + ex: Incomplete | None = None, + px: Incomplete | None = None, + exat: Incomplete | None = None, + pxat: Incomplete | None = None, + persist: bool = False, ) -> Any: ... def getbit(self, name: _Key, offset: int) -> Any: ... # type: ignore[override] def getrange(self, key, start, end) -> Any: ... # type: ignore[override] def getset(self, name, value) -> Any: ... # type: ignore[override] - def incr(self, name: _Key, amount: int = ...) -> Any: ... # type: ignore[override] - def incrby(self, name: _Key, amount: int = ...) -> Any: ... # type: ignore[override] - def incrbyfloat(self, name: _Key, amount: float = ...) -> Any: ... # type: ignore[override] - def keys(self, pattern: _Key = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def incr(self, name: _Key, amount: int = 1) -> Any: ... # type: ignore[override] + def incrby(self, name: _Key, amount: int = 1) -> Any: ... # type: ignore[override] + def incrbyfloat(self, name: _Key, amount: float = 1.0) -> Any: ... # type: ignore[override] + def keys(self, pattern: _Key = "*", **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def lmove( # type: ignore[override] - self, first_list: _Key, second_list: _Key, src: Literal["LEFT", "RIGHT"] = ..., dest: Literal["LEFT", "RIGHT"] = ... + self, + first_list: _Key, + second_list: _Key, + src: Literal["LEFT", "RIGHT"] = "LEFT", + dest: Literal["LEFT", "RIGHT"] = "RIGHT", ) -> Any: ... def blmove( # type: ignore[override] self, first_list: _Key, second_list: _Key, timeout: float, - src: Literal["LEFT", "RIGHT"] = ..., - dest: Literal["LEFT", "RIGHT"] = ..., + src: Literal["LEFT", "RIGHT"] = "LEFT", + dest: Literal["LEFT", "RIGHT"] = "RIGHT", ) -> Any: ... def mget(self, keys: _Key | Iterable[_Key], *args: _Key) -> Any: ... # type: ignore[override] def mset(self, mapping: Mapping[_Key, _Value]) -> Any: ... # type: ignore[override] @@ -304,14 +308,14 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def move(self, name: _Key, db: int) -> Any: ... # type: ignore[override] def persist(self, name: _Key) -> Any: ... # type: ignore[override] def pexpire( # type: ignore[override] - self, name: _Key, time: int | timedelta, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ... + self, name: _Key, time: int | timedelta, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False ) -> Any: ... def pexpireat( # type: ignore[override] - self, name: _Key, when: int | datetime, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ... + self, name: _Key, when: int | datetime, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False ) -> Any: ... def psetex(self, name, time_ms, value) -> Any: ... # type: ignore[override] def pttl(self, name: _Key) -> Any: ... # type: ignore[override] - def hrandfield(self, key, count: Incomplete | None = ..., withvalues: bool = ...) -> Any: ... # type: ignore[override] + def hrandfield(self, key, count: Incomplete | None = None, withvalues: bool = False) -> Any: ... # type: ignore[override] def randomkey(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def rename(self, src, dst) -> Any: ... # type: ignore[override] def renamenx(self, src, dst) -> Any: ... # type: ignore[override] @@ -320,23 +324,23 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): name, ttl, value, - replace: bool = ..., - absttl: bool = ..., - idletime: Incomplete | None = ..., - frequency: Incomplete | None = ..., + replace: bool = False, + absttl: bool = False, + idletime: Incomplete | None = None, + frequency: Incomplete | None = None, ) -> Any: ... def set( # type: ignore[override] self, name: _Key, value: _Value, - ex: None | int | timedelta = ..., - px: None | int | timedelta = ..., - nx: bool = ..., - xx: bool = ..., - keepttl: bool = ..., - get: bool = ..., - exat: Incomplete | None = ..., - pxat: Incomplete | None = ..., + ex: None | int | timedelta = None, + px: None | int | timedelta = None, + nx: bool = False, + xx: bool = False, + keepttl: bool = False, + get: bool = False, + exat: Incomplete | None = None, + pxat: Incomplete | None = None, ) -> Any: ... def setbit(self, name: _Key, offset: int, value: int) -> Any: ... # type: ignore[override] def setex(self, name: _Key, time: int | timedelta, value: _Value) -> Any: ... # type: ignore[override] @@ -347,15 +351,15 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): algo, value1, value2, - specific_argument: str = ..., - len: bool = ..., - idx: bool = ..., - minmatchlen: Incomplete | None = ..., - withmatchlen: bool = ..., + specific_argument: str = "strings", + len: bool = False, + idx: bool = False, + minmatchlen: Incomplete | None = None, + withmatchlen: bool = False, **kwargs: _CommandOptions, ) -> Any: ... def strlen(self, name) -> Any: ... # type: ignore[override] - def substr(self, name, start, end: int = ...) -> Any: ... # type: ignore[override] + def substr(self, name, start, end: int = -1) -> Any: ... # type: ignore[override] def touch(self, *args) -> Any: ... # type: ignore[override] def ttl(self, name: _Key) -> Any: ... # type: ignore[override] def type(self, name) -> Any: ... # type: ignore[override] @@ -371,18 +375,18 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def hexists(self, name: _Key, key: _Key) -> Any: ... # type: ignore[override] def hget(self, name: _Key, key: _Key) -> Any: ... # type: ignore[override] def hgetall(self, name: _Key) -> Any: ... # type: ignore[override] - def hincrby(self, name: _Key, key: _Key, amount: int = ...) -> Any: ... # type: ignore[override] - def hincrbyfloat(self, name: _Key, key: _Key, amount: float = ...) -> Any: ... # type: ignore[override] + def hincrby(self, name: _Key, key: _Key, amount: int = 1) -> Any: ... # type: ignore[override] + def hincrbyfloat(self, name: _Key, key: _Key, amount: float = 1.0) -> Any: ... # type: ignore[override] def hkeys(self, name: _Key) -> Any: ... # type: ignore[override] def hlen(self, name: _Key) -> Any: ... # type: ignore[override] @overload def hset( # type: ignore[override] - self, name: _Key, key: _Key, value: _Value, mapping: Mapping[_Key, _Value] | None = ..., items: Incomplete | None = ... + self, name: _Key, key: _Key, value: _Value, mapping: Mapping[_Key, _Value] | None = None, items: Incomplete | None = None ) -> Any: ... @overload - def hset(self, name: _Key, key: None, value: None, mapping: Mapping[_Key, _Value], items: Incomplete | None = ...) -> Any: ... # type: ignore[override] + def hset(self, name: _Key, key: None, value: None, mapping: Mapping[_Key, _Value], items: Incomplete | None = None) -> Any: ... # type: ignore[override] @overload - def hset(self, name: _Key, *, mapping: Mapping[_Key, _Value], items: Incomplete | None = ...) -> Any: ... # type: ignore[override] + def hset(self, name: _Key, *, mapping: Mapping[_Key, _Value], items: Incomplete | None = None) -> Any: ... # type: ignore[override] def hsetnx(self, name: _Key, key: _Key, value: _Value) -> Any: ... # type: ignore[override] def hmset(self, name: _Key, mapping: Mapping[_Key, _Value]) -> Any: ... # type: ignore[override] def hmget(self, name: _Key, keys: _Key | Iterable[_Key], *args: _Key) -> Any: ... # type: ignore[override] @@ -390,8 +394,8 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def hstrlen(self, name, key) -> Any: ... # type: ignore[override] # endregion # region geo commands - def geoadd(self, name, values, nx: bool = ..., xx: bool = ..., ch: bool = ...) -> Any: ... # type: ignore[override] - def geodist(self, name, place1, place2, unit: Incomplete | None = ...) -> Any: ... # type: ignore[override] + def geoadd(self, name, values, nx: bool = False, xx: bool = False, ch: bool = False) -> Any: ... # type: ignore[override] + def geodist(self, name, place1, place2, unit: Incomplete | None = None) -> Any: ... # type: ignore[override] def geohash(self, name, *values) -> Any: ... # type: ignore[override] def geopos(self, name, *values) -> Any: ... # type: ignore[override] def georadius( # type: ignore[override] @@ -400,118 +404,118 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): longitude, latitude, radius, - unit: Incomplete | None = ..., - withdist: bool = ..., - withcoord: bool = ..., - withhash: bool = ..., - count: Incomplete | None = ..., - sort: Incomplete | None = ..., - store: Incomplete | None = ..., - store_dist: Incomplete | None = ..., - any: bool = ..., + unit: Incomplete | None = None, + withdist: bool = False, + withcoord: bool = False, + withhash: bool = False, + count: Incomplete | None = None, + sort: Incomplete | None = None, + store: Incomplete | None = None, + store_dist: Incomplete | None = None, + any: bool = False, ) -> Any: ... def georadiusbymember( # type: ignore[override] self, name, member, radius, - unit: Incomplete | None = ..., - withdist: bool = ..., - withcoord: bool = ..., - withhash: bool = ..., - count: Incomplete | None = ..., - sort: Incomplete | None = ..., - store: Incomplete | None = ..., - store_dist: Incomplete | None = ..., - any: bool = ..., + unit: Incomplete | None = None, + withdist: bool = False, + withcoord: bool = False, + withhash: bool = False, + count: Incomplete | None = None, + sort: Incomplete | None = None, + store: Incomplete | None = None, + store_dist: Incomplete | None = None, + any: bool = False, ) -> Any: ... def geosearch( # type: ignore[override] self, name, - member: Incomplete | None = ..., - longitude: Incomplete | None = ..., - latitude: Incomplete | None = ..., - unit: str = ..., - radius: Incomplete | None = ..., - width: Incomplete | None = ..., - height: Incomplete | None = ..., - sort: Incomplete | None = ..., - count: Incomplete | None = ..., - any: bool = ..., - withcoord: bool = ..., - withdist: bool = ..., - withhash: bool = ..., + member: Incomplete | None = None, + longitude: Incomplete | None = None, + latitude: Incomplete | None = None, + unit: str = "m", + radius: Incomplete | None = None, + width: Incomplete | None = None, + height: Incomplete | None = None, + sort: Incomplete | None = None, + count: Incomplete | None = None, + any: bool = False, + withcoord: bool = False, + withdist: bool = False, + withhash: bool = False, ) -> Any: ... def geosearchstore( # type: ignore[override] self, dest, name, - member: Incomplete | None = ..., - longitude: Incomplete | None = ..., - latitude: Incomplete | None = ..., - unit: str = ..., - radius: Incomplete | None = ..., - width: Incomplete | None = ..., - height: Incomplete | None = ..., - sort: Incomplete | None = ..., - count: Incomplete | None = ..., - any: bool = ..., - storedist: bool = ..., + member: Incomplete | None = None, + longitude: Incomplete | None = None, + latitude: Incomplete | None = None, + unit: str = "m", + radius: Incomplete | None = None, + width: Incomplete | None = None, + height: Incomplete | None = None, + sort: Incomplete | None = None, + count: Incomplete | None = None, + any: bool = False, + storedist: bool = False, ) -> Any: ... # endregion # region list commands @overload - def blpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = ...) -> Any: ... # type: ignore[override] + def blpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = 0) -> Any: ... # type: ignore[override] @overload def blpop(self, keys: _Value | Iterable[_Value], timeout: float) -> Any: ... # type: ignore[override] @overload - def brpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = ...) -> Any: ... # type: ignore[override] + def brpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = 0) -> Any: ... # type: ignore[override] @overload def brpop(self, keys: _Value | Iterable[_Value], timeout: float) -> Any: ... # type: ignore[override] - def brpoplpush(self, src, dst, timeout: int | None = ...) -> Any: ... # type: ignore[override] + def brpoplpush(self, src, dst, timeout: int | None = 0) -> Any: ... # type: ignore[override] def lindex(self, name: _Key, index: int) -> Any: ... # type: ignore[override] def linsert( # type: ignore[override] self, name: _Key, where: Literal["BEFORE", "AFTER", "before", "after"], refvalue: _Value, value: _Value ) -> Any: ... def llen(self, name: _Key) -> Any: ... # type: ignore[override] - def lpop(self, name, count: int | None = ...) -> Any: ... # type: ignore[override] + def lpop(self, name, count: int | None = None) -> Any: ... # type: ignore[override] def lpush(self, name: _Value, *values: _Value) -> Any: ... # type: ignore[override] def lpushx(self, name, value) -> Any: ... # type: ignore[override] def lrange(self, name: _Key, start: int, end: int) -> Any: ... # type: ignore[override] def lrem(self, name: _Key, count: int, value: _Value) -> Any: ... # type: ignore[override] def lset(self, name: _Key, index: int, value: _Value) -> Any: ... # type: ignore[override] def ltrim(self, name: _Key, start: int, end: int) -> Any: ... # type: ignore[override] - def rpop(self, name, count: int | None = ...) -> Any: ... # type: ignore[override] + def rpop(self, name, count: int | None = None) -> Any: ... # type: ignore[override] def rpoplpush(self, src, dst) -> Any: ... # type: ignore[override] def rpush(self, name: _Value, *values: _Value) -> Any: ... # type: ignore[override] def rpushx(self, name, value) -> Any: ... # type: ignore[override] - def lpos(self, name, value, rank: Incomplete | None = ..., count: Incomplete | None = ..., maxlen: Incomplete | None = ...) -> Any: ... # type: ignore[override] + def lpos(self, name, value, rank: Incomplete | None = None, count: Incomplete | None = None, maxlen: Incomplete | None = None) -> Any: ... # type: ignore[override] @overload # type: ignore[override] def sort( self, name: _Key, - start: int | None = ..., - num: int | None = ..., - by: _Key | None = ..., - get: _Key | Sequence[_Key] | None = ..., - desc: bool = ..., - alpha: bool = ..., - store: None = ..., - groups: bool = ..., + start: int | None = None, + num: int | None = None, + by: _Key | None = None, + get: _Key | Sequence[_Key] | None = None, + desc: bool = False, + alpha: bool = False, + store: None = None, + groups: bool = False, ) -> list[_StrType]: ... @overload # type: ignore[override] def sort( self, name: _Key, - start: int | None = ..., - num: int | None = ..., - by: _Key | None = ..., - get: _Key | Sequence[_Key] | None = ..., - desc: bool = ..., - alpha: bool = ..., + start: int | None = None, + num: int | None = None, + by: _Key | None = None, + get: _Key | Sequence[_Key] | None = None, + desc: bool = False, + alpha: bool = False, *, store: _Key, - groups: bool = ..., + groups: bool = False, ) -> Any: ... @overload # type: ignore[override] def sort( @@ -524,29 +528,29 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): desc: bool, alpha: bool, store: _Key, - groups: bool = ..., + groups: bool = False, ) -> Any: ... # endregion # region scan commands def scan( # type: ignore[override] self, - cursor: int = ..., - match: _Key | None = ..., - count: int | None = ..., - _type: str | None = ..., + cursor: int = 0, + match: _Key | None = None, + count: int | None = None, + _type: str | None = None, **kwargs: _CommandOptions, ) -> Any: ... - def sscan(self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ...) -> Any: ... # type: ignore[override] - def hscan(self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ...) -> Any: ... # type: ignore[override] + def sscan(self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None) -> Any: ... # type: ignore[override] + def hscan(self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None) -> Any: ... # type: ignore[override] @overload # type: ignore[override] - def zscan(self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ...) -> Any: ... + def zscan(self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None) -> Any: ... @overload # type: ignore[override] def zscan( self, name: _Key, - cursor: int = ..., - match: _Key | None = ..., - count: int | None = ..., + cursor: int = 0, + match: _Key | None = None, + count: int | None = None, *, score_cast_func: Callable[[_StrType], Any], ) -> Any: ... @@ -567,11 +571,11 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def smismember(self, name, values, *args) -> Any: ... # type: ignore[override] def smove(self, src: _Key, dst: _Key, value: _Value) -> Any: ... # type: ignore[override] @overload # type: ignore[override] - def spop(self, name: _Key, count: None = ...) -> Any: ... + def spop(self, name: _Key, count: None = None) -> Any: ... @overload # type: ignore[override] def spop(self, name: _Key, count: int) -> Any: ... @overload # type: ignore[override] - def srandmember(self, name: _Key, number: None = ...) -> Any: ... + def srandmember(self, name: _Key, number: None = None) -> Any: ... @overload # type: ignore[override] def srandmember(self, name: _Key, number: int) -> Any: ... def srem(self, name: _Key, *values: _Value) -> Any: ... # type: ignore[override] @@ -584,12 +588,12 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): self, name, fields, - id: str = ..., - maxlen=..., - approximate: bool = ..., - nomkstream: bool = ..., - minid: Incomplete | None = ..., - limit: Incomplete | None = ..., + id: str = "*", + maxlen=None, + approximate: bool = True, + nomkstream: bool = False, + minid: Incomplete | None = None, + limit: Incomplete | None = None, ) -> Any: ... def xautoclaim( # type: ignore[override] self, @@ -597,35 +601,51 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): groupname, consumername, min_idle_time, - start_id: StreamIdT = ..., - count: Incomplete | None = ..., - justid: bool = ..., + start_id: StreamIdT = "0-0", + count: Incomplete | None = None, + justid: bool = False, ) -> Any: ... def xclaim( # type: ignore[override] - self, name, groupname, consumername, min_idle_time, message_ids, idle=..., time=..., retrycount=..., force=..., justid=... + self, + name, + groupname, + consumername, + min_idle_time, + message_ids, + idle=None, + time=None, + retrycount=None, + force=False, + justid=False, ) -> Any: ... def xdel(self, name, *ids) -> Any: ... # type: ignore[override] - def xgroup_create(self, name, groupname, id: str = ..., mkstream: bool = ..., entries_read: int | None = ...) -> Any: ... # type: ignore[override] + def xgroup_create(self, name, groupname, id: str = "$", mkstream: bool = False, entries_read: int | None = None) -> Any: ... # type: ignore[override] def xgroup_delconsumer(self, name, groupname, consumername) -> Any: ... # type: ignore[override] def xgroup_destroy(self, name, groupname) -> Any: ... # type: ignore[override] def xgroup_createconsumer(self, name, groupname, consumername) -> Any: ... # type: ignore[override] - def xgroup_setid(self, name, groupname, id, entries_read: int | None = ...) -> Any: ... # type: ignore[override] + def xgroup_setid(self, name, groupname, id, entries_read: int | None = None) -> Any: ... # type: ignore[override] def xinfo_consumers(self, name, groupname) -> Any: ... # type: ignore[override] def xinfo_groups(self, name) -> Any: ... # type: ignore[override] - def xinfo_stream(self, name, full: bool = ...) -> Any: ... # type: ignore[override] + def xinfo_stream(self, name, full: bool = False) -> Any: ... # type: ignore[override] def xlen(self, name: _Key) -> Any: ... # type: ignore[override] def xpending(self, name, groupname) -> Any: ... # type: ignore[override] def xpending_range( # type: ignore[override] - self, name: _Key, groupname, min, max, count: int, consumername: Incomplete | None = ..., idle: int | None = ... + self, name: _Key, groupname, min, max, count: int, consumername: Incomplete | None = None, idle: int | None = None ) -> Any: ... - def xrange(self, name, min: str = ..., max: str = ..., count: Incomplete | None = ...) -> Any: ... # type: ignore[override] - def xread(self, streams, count: Incomplete | None = ..., block: Incomplete | None = ...) -> Any: ... # type: ignore[override] + def xrange(self, name, min: str = "-", max: str = "+", count: Incomplete | None = None) -> Any: ... # type: ignore[override] + def xread(self, streams, count: Incomplete | None = None, block: Incomplete | None = None) -> Any: ... # type: ignore[override] def xreadgroup( # type: ignore[override] - self, groupname, consumername, streams, count: Incomplete | None = ..., block: Incomplete | None = ..., noack: bool = ... + self, + groupname, + consumername, + streams, + count: Incomplete | None = None, + block: Incomplete | None = None, + noack: bool = False, ) -> Any: ... - def xrevrange(self, name, max: str = ..., min: str = ..., count: Incomplete | None = ...) -> Any: ... # type: ignore[override] + def xrevrange(self, name, max: str = "+", min: str = "-", count: Incomplete | None = None) -> Any: ... # type: ignore[override] def xtrim( # type: ignore[override] - self, name, maxlen: int | None = ..., approximate: bool = ..., minid: Incomplete | None = ..., limit: int | None = ... + self, name, maxlen: int | None = None, approximate: bool = True, minid: Incomplete | None = None, limit: int | None = None ) -> Any: ... # endregion # region sorted set commands @@ -633,30 +653,30 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): self, name: _Key, mapping: Mapping[_Key, _Value], - nx: bool = ..., - xx: bool = ..., - ch: bool = ..., - incr: bool = ..., - gt: Incomplete | None = ..., - lt: Incomplete | None = ..., + nx: bool = False, + xx: bool = False, + ch: bool = False, + incr: bool = False, + gt: Incomplete | None = False, + lt: Incomplete | None = False, ) -> Any: ... def zcard(self, name: _Key) -> Any: ... # type: ignore[override] def zcount(self, name: _Key, min: _Value, max: _Value) -> Any: ... # type: ignore[override] - def zdiff(self, keys, withscores: bool = ...) -> Any: ... # type: ignore[override] + def zdiff(self, keys, withscores: bool = False) -> Any: ... # type: ignore[override] def zdiffstore(self, dest, keys) -> Any: ... # type: ignore[override] def zincrby(self, name: _Key, amount: float, value: _Value) -> Any: ... # type: ignore[override] - def zinter(self, keys, aggregate: Incomplete | None = ..., withscores: bool = ...) -> Any: ... # type: ignore[override] - def zinterstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = ...) -> Any: ... # type: ignore[override] + def zinter(self, keys, aggregate: Incomplete | None = None, withscores: bool = False) -> Any: ... # type: ignore[override] + def zinterstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None) -> Any: ... # type: ignore[override] def zlexcount(self, name: _Key, min: _Value, max: _Value) -> Any: ... # type: ignore[override] - def zpopmax(self, name: _Key, count: int | None = ...) -> Any: ... # type: ignore[override] - def zpopmin(self, name: _Key, count: int | None = ...) -> Any: ... # type: ignore[override] - def zrandmember(self, key, count: Incomplete | None = ..., withscores: bool = ...) -> Any: ... # type: ignore[override] + def zpopmax(self, name: _Key, count: int | None = None) -> Any: ... # type: ignore[override] + def zpopmin(self, name: _Key, count: int | None = None) -> Any: ... # type: ignore[override] + def zrandmember(self, key, count: Incomplete | None = None, withscores: bool = False) -> Any: ... # type: ignore[override] @overload # type: ignore[override] - def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = ...) -> Any: ... + def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = 0) -> Any: ... @overload # type: ignore[override] def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: float) -> Any: ... @overload # type: ignore[override] - def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = ...) -> Any: ... + def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = 0) -> Any: ... @overload # type: ignore[override] def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: float) -> Any: ... @overload # type: ignore[override] @@ -668,10 +688,10 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): desc: bool, withscores: Literal[True], score_cast_func: Callable[[_StrType], Any], - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> Any: ... @overload # type: ignore[override] def zrange( @@ -682,10 +702,10 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): desc: bool, withscores: Literal[True], score_cast_func: Callable[[_StrType], float] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> Any: ... @overload # type: ignore[override] def zrange( @@ -696,10 +716,10 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): *, withscores: Literal[True], score_cast_func: Callable[[_StrType], None], - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> Any: ... @overload # type: ignore[override] def zrange( @@ -710,10 +730,10 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): *, withscores: Literal[True], score_cast_func: Callable[[_StrType], float] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> Any: ... @overload # type: ignore[override] def zrange( @@ -721,13 +741,13 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): name: _Key, start: int, end: int, - desc: bool = ..., - withscores: bool = ..., + desc: bool = False, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> Any: ... @overload # type: ignore[override] def zrevrange( @@ -737,7 +757,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def zrevrange(self, name: _Key, start: int, end: int, withscores: Literal[True]) -> Any: ... @overload # type: ignore[override] def zrevrange( - self, name: _Key, start: int, end: int, withscores: bool = ..., score_cast_func: Callable[[Any], Any] = ... + self, name: _Key, start: int, end: int, withscores: bool = False, score_cast_func: Callable[[Any], Any] = ... ) -> Any: ... def zrangestore( # type: ignore[override] self, @@ -745,29 +765,29 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): name, start, end, - byscore: bool = ..., - bylex: bool = ..., - desc: bool = ..., - offset: Incomplete | None = ..., - num: Incomplete | None = ..., - ) -> Any: ... - def zrangebylex(self, name: _Key, min: _Value, max: _Value, start: int | None = ..., num: int | None = ...) -> Any: ... # type: ignore[override] - def zrevrangebylex(self, name: _Key, max: _Value, min: _Value, start: int | None = ..., num: int | None = ...) -> Any: ... # type: ignore[override] + byscore: bool = False, + bylex: bool = False, + desc: bool = False, + offset: Incomplete | None = None, + num: Incomplete | None = None, + ) -> Any: ... + def zrangebylex(self, name: _Key, min: _Value, max: _Value, start: int | None = None, num: int | None = None) -> Any: ... # type: ignore[override] + def zrevrangebylex(self, name: _Key, max: _Value, min: _Value, start: int | None = None, num: int | None = None) -> Any: ... # type: ignore[override] @overload # type: ignore[override] def zrangebyscore( self, name: _Key, min: _Value, max: _Value, - start: int | None = ..., - num: int | None = ..., + start: int | None = None, + num: int | None = None, *, withscores: Literal[True], score_cast_func: Callable[[_StrType], None], ) -> Any: ... @overload # type: ignore[override] def zrangebyscore( - self, name: _Key, min: _Value, max: _Value, start: int | None = ..., num: int | None = ..., *, withscores: Literal[True] + self, name: _Key, min: _Value, max: _Value, start: int | None = None, num: int | None = None, *, withscores: Literal[True] ) -> Any: ... @overload # type: ignore[override] def zrangebyscore( @@ -775,9 +795,9 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): name: _Key, min: _Value, max: _Value, - start: int | None = ..., - num: int | None = ..., - withscores: bool = ..., + start: int | None = None, + num: int | None = None, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> Any: ... @overload # type: ignore[override] @@ -786,15 +806,15 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): name: _Key, max: _Value, min: _Value, - start: int | None = ..., - num: int | None = ..., + start: int | None = None, + num: int | None = None, *, withscores: Literal[True], score_cast_func: Callable[[_StrType], Any], ) -> Any: ... @overload # type: ignore[override] def zrevrangebyscore( - self, name: _Key, max: _Value, min: _Value, start: int | None = ..., num: int | None = ..., *, withscores: Literal[True] + self, name: _Key, max: _Value, min: _Value, start: int | None = None, num: int | None = None, *, withscores: Literal[True] ) -> Any: ... @overload # type: ignore[override] def zrevrangebyscore( @@ -802,9 +822,9 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): name: _Key, max: _Value, min: _Value, - start: int | None = ..., - num: int | None = ..., - withscores: bool = ..., + start: int | None = None, + num: int | None = None, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> Any: ... def zrank(self, name: _Key, value: _Value) -> Any: ... # type: ignore[override] @@ -814,69 +834,69 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def zremrangebyscore(self, name: _Key, min: _Value, max: _Value) -> Any: ... # type: ignore[override] def zrevrank(self, name: _Key, value: _Value) -> Any: ... # type: ignore[override] def zscore(self, name: _Key, value: _Value) -> Any: ... # type: ignore[override] - def zunion(self, keys, aggregate: Incomplete | None = ..., withscores: bool = ...) -> Any: ... # type: ignore[override] - def zunionstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = ...) -> Any: ... # type: ignore[override] + def zunion(self, keys, aggregate: Incomplete | None = None, withscores: bool = False) -> Any: ... # type: ignore[override] + def zunionstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None) -> Any: ... # type: ignore[override] def zmscore(self, key, members) -> Any: ... # type: ignore[override] # endregion # region management commands def bgrewriteaof(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def bgsave(self, schedule: bool = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def bgsave(self, schedule: bool = True, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def role(self) -> Any: ... # type: ignore[override] def client_kill(self, address: str, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def client_kill_filter( # type: ignore[override] self, - _id: Incomplete | None = ..., - _type: Incomplete | None = ..., - addr: Incomplete | None = ..., - skipme: Incomplete | None = ..., - laddr: Incomplete | None = ..., - user: Incomplete | None = ..., + _id: Incomplete | None = None, + _type: Incomplete | None = None, + addr: Incomplete | None = None, + skipme: Incomplete | None = None, + laddr: Incomplete | None = None, + user: Incomplete | None = None, **kwargs: _CommandOptions, ) -> Any: ... def client_info(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def client_list(self, _type: str | None = ..., client_id: list[str] = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def client_list(self, _type: str | None = None, client_id: list[str] = [], **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def client_getname(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def client_getredir(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def client_reply(self, reply, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def client_id(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def client_tracking_on( # type: ignore[override] self, - clientid: Incomplete | None = ..., - prefix=..., - bcast: bool = ..., - optin: bool = ..., - optout: bool = ..., - noloop: bool = ..., + clientid: Incomplete | None = None, + prefix=[], + bcast: bool = False, + optin: bool = False, + optout: bool = False, + noloop: bool = False, ) -> Any: ... def client_tracking_off( # type: ignore[override] self, - clientid: Incomplete | None = ..., - prefix=..., - bcast: bool = ..., - optin: bool = ..., - optout: bool = ..., - noloop: bool = ..., + clientid: Incomplete | None = None, + prefix=[], + bcast: bool = False, + optin: bool = False, + optout: bool = False, + noloop: bool = False, ) -> Any: ... def client_tracking( # type: ignore[override] self, - on: bool = ..., - clientid: Incomplete | None = ..., - prefix=..., - bcast: bool = ..., - optin: bool = ..., - optout: bool = ..., - noloop: bool = ..., + on: bool = True, + clientid: Incomplete | None = None, + prefix=[], + bcast: bool = False, + optin: bool = False, + optout: bool = False, + noloop: bool = False, **kwargs: _CommandOptions, ) -> Any: ... def client_trackinginfo(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def client_setname(self, name: str, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def client_unblock(self, client_id, error: bool = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def client_pause(self, timeout, all: bool = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def client_unblock(self, client_id, error: bool = False, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def client_pause(self, timeout, all: bool = True, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def client_unpause(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def command(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def command_info(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def command_count(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def config_get(self, pattern: PatternT = ..., *args: PatternT, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def config_get(self, pattern: PatternT = "*", *args: PatternT, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def config_set(self, name: KeyT, value: EncodableT, *args: KeyT | EncodableT, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def config_resetstat(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def config_rewrite(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] @@ -884,13 +904,13 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def debug_object(self, key, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def debug_segfault(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def echo(self, value: _Value, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def flushall(self, asynchronous: bool = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def flushdb(self, asynchronous: bool = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def flushall(self, asynchronous: bool = False, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def flushdb(self, asynchronous: bool = False, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def sync(self) -> Any: ... # type: ignore[override] def psync(self, replicationid, offset) -> Any: ... # type: ignore[override] def swapdb(self, first, second, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def select(self, index, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def info(self, section: _Key | None = ..., *args: _Key, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def info(self, section: _Key | None = None, *args: _Key, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def lastsave(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def lolwut(self, *version_numbers: _Value, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def migrate( # type: ignore[override] @@ -900,9 +920,9 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): keys, destination_db, timeout, - copy: bool = ..., - replace: bool = ..., - auth: Incomplete | None = ..., + copy: bool = False, + replace: bool = False, + auth: Incomplete | None = None, **kwargs: _CommandOptions, ) -> Any: ... def object(self, infotype, key, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] @@ -910,7 +930,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def memory_help(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def memory_stats(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def memory_malloc_stats(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def memory_usage(self, key, samples: Incomplete | None = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def memory_usage(self, key, samples: Incomplete | None = None, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def memory_purge(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def ping(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def quit(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] @@ -918,15 +938,15 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def save(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def shutdown( # type: ignore[override] self, - save: bool = ..., - nosave: bool = ..., - now: bool = ..., - force: bool = ..., - abort: bool = ..., + save: bool = False, + nosave: bool = False, + now: bool = False, + force: bool = False, + abort: bool = False, **kwargs: _CommandOptions, ) -> Any: ... - def slaveof(self, host: Incomplete | None = ..., port: Incomplete | None = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def slowlog_get(self, num: Incomplete | None = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def slaveof(self, host: Incomplete | None = None, port: Incomplete | None = None, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def slowlog_get(self, num: Incomplete | None = None, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def slowlog_len(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def slowlog_reset(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def time(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] @@ -940,7 +960,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): # endregion # region pubsub commands def publish(self, channel: _Key, message: _Key, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] - def pubsub_channels(self, pattern: _Key = ..., **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] + def pubsub_channels(self, pattern: _Key = "*", **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def pubsub_numpat(self, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] def pubsub_numsub(self, *args: _Key, **kwargs: _CommandOptions) -> Any: ... # type: ignore[override] # endregion @@ -949,7 +969,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def evalsha(self, sha, numkeys, *keys_and_args) -> Any: ... # type: ignore[override] def script_exists(self, *args) -> Any: ... # type: ignore[override] def script_debug(self, *args) -> Any: ... # type: ignore[override] - def script_flush(self, sync_type: Incomplete | None = ...) -> Any: ... # type: ignore[override] + def script_flush(self, sync_type: Incomplete | None = None) -> Any: ... # type: ignore[override] def script_kill(self) -> Any: ... # type: ignore[override] def script_load(self, script) -> Any: ... # type: ignore[override] def register_script(self, script: str | _StrType) -> Any: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/cluster.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/cluster.pyi index 10c8e93d6..e61313fdd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/cluster.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/cluster.pyi @@ -36,43 +36,43 @@ class RedisCluster(AbstractRedis, AbstractRedisCluster, Generic[_StrType]): # T result_callbacks: dict[str, Callable[[Incomplete, Incomplete], Incomplete]] def __init__( self, - host: str | None = ..., - port: str | int = ..., + host: str | None = None, + port: str | int = 6379, # Cluster related kwargs - startup_nodes: list[ClusterNode] | None = ..., - require_full_coverage: bool = ..., - read_from_replicas: bool = ..., - reinitialize_steps: int = ..., - cluster_error_retry_attempts: int = ..., - connection_error_retry_attempts: int = ..., - max_connections: int = ..., + startup_nodes: list[ClusterNode] | None = None, + require_full_coverage: bool = True, + read_from_replicas: bool = False, + reinitialize_steps: int = 5, + cluster_error_retry_attempts: int = 3, + connection_error_retry_attempts: int = 3, + max_connections: int = 2147483648, # Client related kwargs - db: str | int = ..., - path: str | None = ..., - credential_provider: CredentialProvider | None = ..., - username: str | None = ..., - password: str | None = ..., - client_name: str | None = ..., + db: str | int = 0, + path: str | None = None, + credential_provider: CredentialProvider | None = None, + username: str | None = None, + password: str | None = None, + client_name: str | None = None, # Encoding related kwargs - encoding: str = ..., - encoding_errors: str = ..., - decode_responses: bool = ..., + encoding: str = "utf-8", + encoding_errors: str = "strict", + decode_responses: bool = False, # Connection related kwargs - health_check_interval: float = ..., - socket_connect_timeout: float | None = ..., - socket_keepalive: bool = ..., - socket_keepalive_options: Mapping[int, int | bytes] | None = ..., - socket_timeout: float | None = ..., - retry: Retry | None = ..., - retry_on_error: list[Exception] | None = ..., + health_check_interval: float = 0, + socket_connect_timeout: float | None = None, + socket_keepalive: bool = False, + socket_keepalive_options: Mapping[int, int | bytes] | None = None, + socket_timeout: float | None = None, + retry: Retry | None = None, + retry_on_error: list[Exception] | None = None, # SSL related kwargs - ssl: bool = ..., - ssl_ca_certs: str | None = ..., - ssl_ca_data: str | None = ..., - ssl_cert_reqs: str = ..., - ssl_certfile: str | None = ..., - ssl_check_hostname: bool = ..., - ssl_keyfile: str | None = ..., + ssl: bool = False, + ssl_ca_certs: str | None = None, + ssl_ca_data: str | None = None, + ssl_cert_reqs: str = "required", + ssl_certfile: str | None = None, + ssl_check_hostname: bool = False, + ssl_keyfile: str | None = None, ) -> None: ... async def initialize(self) -> Self: ... async def close(self) -> None: ... @@ -89,14 +89,14 @@ class RedisCluster(AbstractRedis, AbstractRedisCluster, Generic[_StrType]): # T def get_random_node(self) -> ClusterNode: ... def get_default_node(self) -> ClusterNode: ... def set_default_node(self, node: ClusterNode) -> None: ... - def get_node(self, host: str | None = ..., port: int | None = ..., node_name: str | None = ...) -> ClusterNode | None: ... - def get_node_from_key(self, key: str, replica: bool = ...) -> ClusterNode | None: ... + def get_node(self, host: str | None = None, port: int | None = None, node_name: str | None = None) -> ClusterNode | None: ... + def get_node_from_key(self, key: str, replica: bool = False) -> ClusterNode | None: ... def keyslot(self, key: EncodableT) -> int: ... def get_encoder(self) -> Encoder: ... def get_connection_kwargs(self) -> dict[str, Any | None]: ... def set_response_callback(self, command: str, callback: ResponseCallbackT) -> None: ... async def execute_command(self, *args: EncodableT, **kwargs: Any) -> Any: ... - def pipeline(self, transaction: Any | None = ..., shard_hint: Any | None = ...) -> ClusterPipeline[_StrType]: ... + def pipeline(self, transaction: Any | None = None, shard_hint: Any | None = None) -> ClusterPipeline[_StrType]: ... @classmethod def from_url(cls, url: str, **kwargs) -> Self: ... @@ -113,9 +113,9 @@ class ClusterNode: self, host: str, port: str | int, - server_type: str | None = ..., + server_type: str | None = None, *, - max_connections: int = ..., + max_connections: int = 2147483648, connection_class: type[Connection] = ..., **connection_kwargs: Any, ) -> None: ... @@ -138,12 +138,12 @@ class NodesManager: def __init__( self, startup_nodes: list[ClusterNode], require_full_coverage: bool, connection_kwargs: dict[str, Any] ) -> None: ... - def get_node(self, host: str | None = ..., port: int | None = ..., node_name: str | None = ...) -> ClusterNode | None: ... - def set_nodes(self, old: dict[str, ClusterNode], new: dict[str, ClusterNode], remove_old: bool = ...) -> None: ... - def get_node_from_slot(self, slot: int, read_from_replicas: bool = ...) -> ClusterNode: ... + def get_node(self, host: str | None = None, port: int | None = None, node_name: str | None = None) -> ClusterNode | None: ... + def set_nodes(self, old: dict[str, ClusterNode], new: dict[str, ClusterNode], remove_old: bool = False) -> None: ... + def get_node_from_slot(self, slot: int, read_from_replicas: bool = False) -> ClusterNode: ... def get_nodes_by_server_type(self, server_type: str) -> list[ClusterNode]: ... async def initialize(self) -> None: ... - async def close(self, attr: str = ...) -> None: ... + async def close(self, attr: str = "nodes_cache") -> None: ... class ClusterPipeline(AbstractRedis, AbstractRedisCluster, Generic[_StrType]): # TODO: AsyncRedisClusterCommands def __init__(self, client: RedisCluster[_StrType]) -> None: ... @@ -160,7 +160,7 @@ class ClusterPipeline(AbstractRedis, AbstractRedisCluster, Generic[_StrType]): def __bool__(self) -> bool: ... def __len__(self) -> int: ... def execute_command(self, *args: KeyT | EncodableT, **kwargs: Any) -> Self: ... - async def execute(self, raise_on_error: bool = ..., allow_redirections: bool = ...) -> list[Any]: ... + async def execute(self, raise_on_error: bool = True, allow_redirections: bool = True) -> list[Any]: ... def mset_nonatomic(self, mapping: Mapping[AnyKeyT, EncodableT]) -> Self: ... class PipelineCommand: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi index 435c5854f..ae7e0fd6a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi @@ -35,7 +35,7 @@ class Encoder: decode_responses: Any def __init__(self, encoding: str, encoding_errors: str, decode_responses: bool) -> None: ... def encode(self, value: EncodableT) -> EncodedT: ... - def decode(self, value: EncodableT, force: bool = ...) -> EncodableT: ... + def decode(self, value: EncodableT, force: bool = False) -> EncodableT: ... ExceptionMappingT: TypeAlias = Mapping[str, type[Exception] | Mapping[str, type[Exception]]] @@ -46,21 +46,21 @@ class BaseParser: def parse_error(self, response: str) -> ResponseError: ... def on_disconnect(self) -> None: ... def on_connect(self, connection: Connection): ... - async def read_response(self, disable_decoding: bool = ...) -> EncodableT | ResponseError | list[EncodableT] | None: ... + async def read_response(self, disable_decoding: bool = False) -> EncodableT | ResponseError | list[EncodableT] | None: ... class PythonParser(BaseParser): encoder: Any def __init__(self, socket_read_size: int) -> None: ... def on_connect(self, connection: Connection): ... def on_disconnect(self) -> None: ... - async def read_response(self, disable_decoding: bool = ...) -> EncodableT | ResponseError | None: ... + async def read_response(self, disable_decoding: bool = False) -> EncodableT | ResponseError | None: ... class HiredisParser(BaseParser): def __init__(self, socket_read_size: int) -> None: ... def on_connect(self, connection: Connection): ... def on_disconnect(self) -> None: ... async def read_from_socket(self) -> Literal[True]: ... - async def read_response(self, disable_decoding: bool = ...) -> EncodableT | list[EncodableT]: ... + async def read_response(self, disable_decoding: bool = False) -> EncodableT | list[EncodableT]: ... DefaultParser: type[PythonParser | HiredisParser] @@ -96,29 +96,29 @@ class Connection: def __init__( self, *, - host: str = ..., - port: str | int = ..., - db: str | int = ..., - password: str | None = ..., - socket_timeout: float | None = ..., - socket_connect_timeout: float | None = ..., - socket_keepalive: bool = ..., - socket_keepalive_options: Mapping[int, int | bytes] | None = ..., - socket_type: int = ..., - retry_on_timeout: bool = ..., + host: str = "localhost", + port: str | int = 6379, + db: str | int = 0, + password: str | None = None, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, + socket_keepalive: bool = False, + socket_keepalive_options: Mapping[int, int | bytes] | None = None, + socket_type: int = 0, + retry_on_timeout: bool = False, retry_on_error: list[type[RedisError]] | _Sentinel = ..., - encoding: str = ..., - encoding_errors: str = ..., - decode_responses: bool = ..., + encoding: str = "utf-8", + encoding_errors: str = "strict", + decode_responses: bool = False, parser_class: type[BaseParser] = ..., - socket_read_size: int = ..., - health_check_interval: float = ..., - client_name: str | None = ..., - username: str | None = ..., - retry: Retry | None = ..., - redis_connect_func: ConnectCallbackT | None = ..., + socket_read_size: int = 65536, + health_check_interval: float = 0, + client_name: str | None = None, + username: str | None = None, + retry: Retry | None = None, + redis_connect_func: ConnectCallbackT | None = None, encoder_class: type[Encoder] = ..., - credential_provider: CredentialProvider | None = ..., + credential_provider: CredentialProvider | None = None, ) -> None: ... def repr_pieces(self): ... def __del__(self) -> None: ... @@ -129,9 +129,9 @@ class Connection: def set_parser(self, parser_class) -> None: ... async def connect(self) -> None: ... async def on_connect(self) -> None: ... - async def disconnect(self, nowait: bool = ...) -> None: ... + async def disconnect(self, nowait: bool = False) -> None: ... async def check_health(self) -> None: ... - async def send_packed_command(self, command: bytes | str | Iterable[bytes], check_health: bool = ...): ... + async def send_packed_command(self, command: bytes | str | Iterable[bytes], check_health: bool = True): ... async def send_command(self, *args, **kwargs) -> None: ... @overload async def read_response(self, *, timeout: float) -> Incomplete | None: ... @@ -146,12 +146,12 @@ class SSLConnection(Connection): ssl_context: Any def __init__( self, - ssl_keyfile: str | None = ..., - ssl_certfile: str | None = ..., - ssl_cert_reqs: str = ..., - ssl_ca_certs: str | None = ..., - ssl_ca_data: str | None = ..., - ssl_check_hostname: bool = ..., + ssl_keyfile: str | None = None, + ssl_certfile: str | None = None, + ssl_cert_reqs: str = "required", + ssl_ca_certs: str | None = None, + ssl_ca_data: str | None = None, + ssl_check_hostname: bool = False, **kwargs, ) -> None: ... @property @@ -177,12 +177,12 @@ class RedisSSLContext: context: Any def __init__( self, - keyfile: str | None = ..., - certfile: str | None = ..., - cert_reqs: str | None = ..., - ca_certs: str | None = ..., - ca_data: str | None = ..., - check_hostname: bool = ..., + keyfile: str | None = None, + certfile: str | None = None, + cert_reqs: str | None = None, + ca_certs: str | None = None, + ca_data: str | None = None, + check_hostname: bool = False, ) -> None: ... def get(self) -> ssl.SSLContext: ... @@ -205,24 +205,24 @@ class UnixDomainSocketConnection(Connection): def __init__( self, *, - path: str = ..., - db: str | int = ..., - username: str | None = ..., - password: str | None = ..., - socket_timeout: float | None = ..., - socket_connect_timeout: float | None = ..., - encoding: str = ..., - encoding_errors: str = ..., - decode_responses: bool = ..., - retry_on_timeout: bool = ..., + path: str = "", + db: str | int = 0, + username: str | None = None, + password: str | None = None, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, + encoding: str = "utf-8", + encoding_errors: str = "strict", + decode_responses: bool = False, + retry_on_timeout: bool = False, retry_on_error: list[type[RedisError]] | _Sentinel = ..., parser_class: type[BaseParser] = ..., - socket_read_size: int = ..., - health_check_interval: float = ..., - client_name: str | None = ..., - retry: Retry | None = ..., - redis_connect_func: ConnectCallbackT | None = ..., - credential_provider: CredentialProvider | None = ..., + socket_read_size: int = 65536, + health_check_interval: float = 0.0, + client_name: str | None = None, + retry: Retry | None = None, + redis_connect_func: ConnectCallbackT | None = None, + credential_provider: CredentialProvider | None = None, ) -> None: ... def repr_pieces(self) -> Iterable[tuple[str, str | int]]: ... @@ -251,7 +251,7 @@ class ConnectionPool: max_connections: Any encoder_class: Any def __init__( - self, connection_class: type[Connection] = ..., max_connections: int | None = ..., **connection_kwargs + self, connection_class: type[Connection] = ..., max_connections: int | None = None, **connection_kwargs ) -> None: ... pid: Any def reset(self) -> None: ... @@ -260,15 +260,15 @@ class ConnectionPool: def make_connection(self): ... async def release(self, connection: Connection): ... def owns_connection(self, connection: Connection): ... - async def disconnect(self, inuse_connections: bool = ...): ... + async def disconnect(self, inuse_connections: bool = True): ... class BlockingConnectionPool(ConnectionPool): queue_class: Any timeout: Any def __init__( self, - max_connections: int = ..., - timeout: int | None = ..., + max_connections: int = 50, + timeout: int | None = 20, connection_class: type[Connection] = ..., queue_class: type[asyncio.Queue[Any]] = ..., **connection_kwargs, @@ -279,4 +279,4 @@ class BlockingConnectionPool(ConnectionPool): def make_connection(self): ... async def get_connection(self, command_name, *keys, **options): ... async def release(self, connection: Connection): ... - async def disconnect(self, inuse_connections: bool = ...): ... + async def disconnect(self, inuse_connections: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/lock.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/lock.pyi index aa90042b4..1088d0f8f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/lock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/lock.pyi @@ -26,11 +26,11 @@ class Lock: self, redis: Redis[Any], name: str | bytes | memoryview, - timeout: float | None = ..., - sleep: float = ..., - blocking: bool = ..., - blocking_timeout: float | None = ..., - thread_local: bool = ..., + timeout: float | None = None, + sleep: float = 0.1, + blocking: bool = True, + blocking_timeout: float | None = None, + thread_local: bool = True, ) -> None: ... def register_scripts(self) -> None: ... async def __aenter__(self) -> Self: ... @@ -38,14 +38,14 @@ class Lock: self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> None: ... async def acquire( - self, blocking: bool | None = ..., blocking_timeout: float | None = ..., token: str | bytes | None = ... + self, blocking: bool | None = None, blocking_timeout: float | None = None, token: str | bytes | None = None ) -> bool: ... async def do_acquire(self, token: str | bytes) -> bool: ... async def locked(self) -> bool: ... async def owned(self) -> bool: ... def release(self) -> Awaitable[None]: ... async def do_release(self, expected_token: bytes) -> None: ... - def extend(self, additional_time: float, replace_ttl: bool = ...) -> Awaitable[bool]: ... + def extend(self, additional_time: float, replace_ttl: bool = False) -> Awaitable[bool]: ... async def do_extend(self, additional_time: float, replace_ttl: bool) -> bool: ... def reacquire(self) -> Awaitable[bool]: ... async def do_reacquire(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/parser.pyi index 6053518e6..3a6d1ce64 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/parser.pyi @@ -5,5 +5,5 @@ from typing import Any # from redis.asyncio.cluster import ClusterNode class CommandsParser: - async def initialize(self, node: Incomplete | None = ...) -> None: ... # TODO: ClusterNode + async def initialize(self, node: Incomplete | None = None) -> None: ... # TODO: ClusterNode async def get_keys(self, *args: Any) -> tuple[str, ...] | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi index e452986c8..edb68a4aa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi @@ -44,7 +44,7 @@ class Sentinel(AsyncSentinelCommands): min_other_sentinels: Any connection_kwargs: Any def __init__( - self, sentinels, min_other_sentinels: int = ..., sentinel_kwargs: Incomplete | None = ..., **connection_kwargs + self, sentinels, min_other_sentinels: int = 0, sentinel_kwargs: Incomplete | None = None, **connection_kwargs ) -> None: ... async def execute_command(self, *args, **kwargs): ... def check_master_state(self, state: dict[Any, Any], service_name: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/backoff.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/backoff.pyi index 03b559e5b..6e05455fe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/backoff.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/backoff.pyi @@ -13,17 +13,17 @@ class NoBackoff(ConstantBackoff): def __init__(self) -> None: ... class ExponentialBackoff(AbstractBackoff): - def __init__(self, cap: float = ..., base: float = ...) -> None: ... + def __init__(self, cap: float = 0.512, base: float = 0.008) -> None: ... def compute(self, failures: int) -> float: ... class FullJitterBackoff(AbstractBackoff): - def __init__(self, cap: float = ..., base: float = ...) -> None: ... + def __init__(self, cap: float = 0.512, base: float = 0.008) -> None: ... def compute(self, failures: int) -> float: ... class EqualJitterBackoff(AbstractBackoff): - def __init__(self, cap: float = ..., base: float = ...) -> None: ... + def __init__(self, cap: float = 0.512, base: float = 0.008) -> None: ... def compute(self, failures: int) -> float: ... class DecorrelatedJitterBackoff(AbstractBackoff): - def __init__(self, cap: float = ..., base: float = ...) -> None: ... + def __init__(self, cap: float = 0.512, base: float = 0.008) -> None: ... def compute(self, failures: int) -> float: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi index 1d82f231a..cf7bb78ee 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi @@ -38,7 +38,7 @@ class CaseInsensitiveDict(dict[_StrType, _VT]): def __init__(self, data: SupportsItems[_StrType, _VT]) -> None: ... def update(self, data: SupportsItems[_StrType, _VT]) -> None: ... # type: ignore[override] @overload - def get(self, k: _StrType, default: None = ...) -> _VT | None: ... + def get(self, k: _StrType, default: None = None) -> _VT | None: ... @overload def get(self, k: _StrType, default: _VT | _T) -> _VT | _T: ... # Overrides many other methods too, but without changing signature @@ -57,7 +57,7 @@ def parse_sentinel_master(response): ... def parse_sentinel_masters(response): ... def parse_sentinel_slaves_and_sentinels(response): ... def parse_sentinel_get_master(response): ... -def pairs_to_dict(response, decode_keys: bool = ..., decode_string_values: bool = ...): ... +def pairs_to_dict(response, decode_keys: bool = False, decode_string_values: bool = False): ... def pairs_to_dict_typed(response, type_info): ... def zset_score_pairs(response, **options): ... def sort_return_tuples(response, **options): ... @@ -99,6 +99,7 @@ class Redis(AbstractRedis, RedisModuleCommands, CoreCommands[_StrType], Sentinel errors: str | None = ..., decode_responses: Literal[True], retry_on_timeout: bool = ..., + retry_on_error: list[type[RedisError]] | None = ..., ssl: bool = ..., ssl_keyfile: str | None = ..., ssl_certfile: str | None = ..., @@ -110,6 +111,7 @@ class Redis(AbstractRedis, RedisModuleCommands, CoreCommands[_StrType], Sentinel health_check_interval: float = ..., client_name: str | None = ..., username: str | None = ..., + retry: Retry | None = ..., ) -> Redis[str]: ... @overload @classmethod @@ -131,8 +133,9 @@ class Redis(AbstractRedis, RedisModuleCommands, CoreCommands[_StrType], Sentinel encoding_errors: str = ..., charset: str | None = ..., errors: str | None = ..., - decode_responses: Literal[False] = ..., + decode_responses: Literal[False] = False, retry_on_timeout: bool = ..., + retry_on_error: list[type[RedisError]] | None = ..., ssl: bool = ..., ssl_keyfile: str | None = ..., ssl_certfile: str | None = ..., @@ -144,6 +147,7 @@ class Redis(AbstractRedis, RedisModuleCommands, CoreCommands[_StrType], Sentinel health_check_interval: float = ..., client_name: str | None = ..., username: str | None = ..., + retry: Retry | None = ..., ) -> Redis[bytes]: ... connection_pool: Any response_callbacks: Any @@ -165,126 +169,126 @@ class Redis(AbstractRedis, RedisModuleCommands, CoreCommands[_StrType], Sentinel charset: str | None, errors: str | None, decode_responses: Literal[True], - retry_on_timeout: bool = ..., - retry_on_error: list[type[RedisError]] | None = ..., - ssl: bool = ..., - ssl_keyfile: str | None = ..., - ssl_certfile: str | None = ..., - ssl_cert_reqs: str | int | None = ..., - ssl_ca_certs: str | None = ..., - ssl_ca_path: Incomplete | None = ..., - ssl_ca_data: Incomplete | None = ..., - ssl_check_hostname: bool = ..., - ssl_password: Incomplete | None = ..., - ssl_validate_ocsp: bool = ..., - ssl_validate_ocsp_stapled: bool = ..., # added in 4.1.1 - ssl_ocsp_context: Incomplete | None = ..., # added in 4.1.1 - ssl_ocsp_expected_cert: Incomplete | None = ..., # added in 4.1.1 - max_connections: int | None = ..., - single_connection_client: bool = ..., - health_check_interval: float = ..., - client_name: str | None = ..., - username: str | None = ..., - retry: Retry | None = ..., - redis_connect_func: _ConnectFunc | None = ..., - credential_provider: CredentialProvider | None = ..., + retry_on_timeout: bool = False, + retry_on_error: list[type[RedisError]] | None = None, + ssl: bool = False, + ssl_keyfile: str | None = None, + ssl_certfile: str | None = None, + ssl_cert_reqs: str | int | None = "required", + ssl_ca_certs: str | None = None, + ssl_ca_path: Incomplete | None = None, + ssl_ca_data: Incomplete | None = None, + ssl_check_hostname: bool = False, + ssl_password: Incomplete | None = None, + ssl_validate_ocsp: bool = False, + ssl_validate_ocsp_stapled: bool = False, # added in 4.1.1 + ssl_ocsp_context: Incomplete | None = None, # added in 4.1.1 + ssl_ocsp_expected_cert: Incomplete | None = None, # added in 4.1.1 + max_connections: int | None = None, + single_connection_client: bool = False, + health_check_interval: float = 0, + client_name: str | None = None, + username: str | None = None, + retry: Retry | None = None, + redis_connect_func: _ConnectFunc | None = None, + credential_provider: CredentialProvider | None = None, ) -> None: ... @overload def __init__( self: Redis[str], - host: str = ..., - port: int = ..., - db: int = ..., - password: str | None = ..., - socket_timeout: float | None = ..., - socket_connect_timeout: float | None = ..., - socket_keepalive: bool | None = ..., - socket_keepalive_options: Mapping[str, int | str] | None = ..., - connection_pool: ConnectionPool | None = ..., - unix_socket_path: str | None = ..., - encoding: str = ..., - encoding_errors: str = ..., - charset: str | None = ..., - errors: str | None = ..., + host: str = "localhost", + port: int = 6379, + db: int = 0, + password: str | None = None, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, + socket_keepalive: bool | None = None, + socket_keepalive_options: Mapping[str, int | str] | None = None, + connection_pool: ConnectionPool | None = None, + unix_socket_path: str | None = None, + encoding: str = "utf-8", + encoding_errors: str = "strict", + charset: str | None = None, + errors: str | None = None, *, decode_responses: Literal[True], - retry_on_timeout: bool = ..., - ssl: bool = ..., - ssl_keyfile: str | None = ..., - ssl_certfile: str | None = ..., - ssl_cert_reqs: str | int | None = ..., - ssl_ca_certs: str | None = ..., - ssl_ca_data: Incomplete | None = ..., - ssl_check_hostname: bool = ..., - ssl_password: Incomplete | None = ..., - ssl_validate_ocsp: bool = ..., - ssl_validate_ocsp_stapled: bool = ..., # added in 4.1.1 - ssl_ocsp_context: Incomplete | None = ..., # added in 4.1.1 - ssl_ocsp_expected_cert: Incomplete | None = ..., # added in 4.1.1 - max_connections: int | None = ..., - single_connection_client: bool = ..., - health_check_interval: float = ..., - client_name: str | None = ..., - username: str | None = ..., - retry: Retry | None = ..., - redis_connect_func: _ConnectFunc | None = ..., - credential_provider: CredentialProvider | None = ..., + retry_on_timeout: bool = False, + ssl: bool = False, + ssl_keyfile: str | None = None, + ssl_certfile: str | None = None, + ssl_cert_reqs: str | int | None = "required", + ssl_ca_certs: str | None = None, + ssl_ca_data: Incomplete | None = None, + ssl_check_hostname: bool = False, + ssl_password: Incomplete | None = None, + ssl_validate_ocsp: bool = False, + ssl_validate_ocsp_stapled: bool = False, # added in 4.1.1 + ssl_ocsp_context: Incomplete | None = None, # added in 4.1.1 + ssl_ocsp_expected_cert: Incomplete | None = None, # added in 4.1.1 + max_connections: int | None = None, + single_connection_client: bool = False, + health_check_interval: float = 0, + client_name: str | None = None, + username: str | None = None, + retry: Retry | None = None, + redis_connect_func: _ConnectFunc | None = None, + credential_provider: CredentialProvider | None = None, ) -> None: ... @overload def __init__( self: Redis[bytes], - host: str = ..., - port: int = ..., - db: int = ..., - password: str | None = ..., - socket_timeout: float | None = ..., - socket_connect_timeout: float | None = ..., - socket_keepalive: bool | None = ..., - socket_keepalive_options: Mapping[str, int | str] | None = ..., - connection_pool: ConnectionPool | None = ..., - unix_socket_path: str | None = ..., - encoding: str = ..., - encoding_errors: str = ..., - charset: str | None = ..., - errors: str | None = ..., - decode_responses: Literal[False] = ..., - retry_on_timeout: bool = ..., - ssl: bool = ..., - ssl_keyfile: str | None = ..., - ssl_certfile: str | None = ..., - ssl_cert_reqs: str | int | None = ..., - ssl_ca_certs: str | None = ..., - ssl_ca_data: Incomplete | None = ..., - ssl_check_hostname: bool = ..., - ssl_password: Incomplete | None = ..., - ssl_validate_ocsp: bool = ..., - ssl_validate_ocsp_stapled: bool = ..., # added in 4.1.1 - ssl_ocsp_context: Incomplete | None = ..., # added in 4.1.1 - ssl_ocsp_expected_cert: Incomplete | None = ..., # added in 4.1.1 - max_connections: int | None = ..., - single_connection_client: bool = ..., - health_check_interval: float = ..., - client_name: str | None = ..., - username: str | None = ..., - retry: Retry | None = ..., - redis_connect_func: _ConnectFunc | None = ..., - credential_provider: CredentialProvider | None = ..., + host: str = "localhost", + port: int = 6379, + db: int = 0, + password: str | None = None, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, + socket_keepalive: bool | None = None, + socket_keepalive_options: Mapping[str, int | str] | None = None, + connection_pool: ConnectionPool | None = None, + unix_socket_path: str | None = None, + encoding: str = "utf-8", + encoding_errors: str = "strict", + charset: str | None = None, + errors: str | None = None, + decode_responses: Literal[False] = False, + retry_on_timeout: bool = False, + ssl: bool = False, + ssl_keyfile: str | None = None, + ssl_certfile: str | None = None, + ssl_cert_reqs: str | int | None = "required", + ssl_ca_certs: str | None = None, + ssl_ca_data: Incomplete | None = None, + ssl_check_hostname: bool = False, + ssl_password: Incomplete | None = None, + ssl_validate_ocsp: bool = False, + ssl_validate_ocsp_stapled: bool = False, # added in 4.1.1 + ssl_ocsp_context: Incomplete | None = None, # added in 4.1.1 + ssl_ocsp_expected_cert: Incomplete | None = None, # added in 4.1.1 + max_connections: int | None = None, + single_connection_client: bool = False, + health_check_interval: float = 0, + client_name: str | None = None, + username: str | None = None, + retry: Retry | None = None, + redis_connect_func: _ConnectFunc | None = None, + credential_provider: CredentialProvider | None = None, ) -> None: ... def get_encoder(self): ... def get_connection_kwargs(self): ... def set_response_callback(self, command, callback): ... - def pipeline(self, transaction: bool = ..., shard_hint: Any = ...) -> Pipeline[_StrType]: ... + def pipeline(self, transaction: bool = True, shard_hint: Any = None) -> Pipeline[_StrType]: ... def transaction(self, func, *watches, **kwargs): ... @overload def lock( self, name: _Key, - timeout: float | None = ..., - sleep: float = ..., - blocking: bool = ..., - blocking_timeout: float | None = ..., - lock_class: None = ..., - thread_local: bool = ..., + timeout: float | None = None, + sleep: float = 0.1, + blocking: bool = True, + blocking_timeout: float | None = None, + lock_class: None = None, + thread_local: bool = True, ) -> Lock: ... @overload def lock( @@ -295,19 +299,19 @@ class Redis(AbstractRedis, RedisModuleCommands, CoreCommands[_StrType], Sentinel blocking: bool, blocking_timeout: float | None, lock_class: type[_LockType], - thread_local: bool = ..., + thread_local: bool = True, ) -> _LockType: ... @overload def lock( self, name: _Key, - timeout: float | None = ..., - sleep: float = ..., - blocking: bool = ..., - blocking_timeout: float | None = ..., + timeout: float | None = None, + sleep: float = 0.1, + blocking: bool = True, + blocking_timeout: float | None = None, *, lock_class: type[_LockType], - thread_local: bool = ..., + thread_local: bool = True, ) -> _LockType: ... def pubsub(self, *, shard_hint: Any = ..., ignore_subscribe_messages: bool = ...) -> PubSub: ... def execute_command(self, *args, **options: _CommandOptions): ... @@ -338,9 +342,9 @@ class PubSub: def __init__( self, connection_pool, - shard_hint: Incomplete | None = ..., - ignore_subscribe_messages: bool = ..., - encoder: Incomplete | None = ..., + shard_hint: Incomplete | None = None, + ignore_subscribe_messages: bool = False, + encoder: Incomplete | None = None, ) -> None: ... def __enter__(self) -> Self: ... def __exit__( @@ -356,7 +360,7 @@ class PubSub: def subscribed(self): ... def execute_command(self, *args): ... def clean_health_check_responses(self) -> None: ... - def parse_response(self, block: bool = ..., timeout: float = ...): ... + def parse_response(self, block: bool = True, timeout: float = 0): ... def is_health_check_response(self, response) -> bool: ... def check_health(self) -> None: ... def psubscribe(self, *args: _Key, **kwargs: Callable[[Any], None]): ... @@ -364,17 +368,17 @@ class PubSub: def subscribe(self, *args: _Key, **kwargs: Callable[[Any], None]) -> None: ... def unsubscribe(self, *args: _Key) -> None: ... def listen(self): ... - def get_message(self, ignore_subscribe_messages: bool = ..., timeout: float = ...) -> dict[str, Any] | None: ... - def handle_message(self, response, ignore_subscribe_messages: bool = ...) -> dict[str, Any] | None: ... - def run_in_thread(self, sleep_time: float = ..., daemon: bool = ..., exception_handler: Incomplete | None = ...): ... - def ping(self, message: _Value | None = ...) -> None: ... + def get_message(self, ignore_subscribe_messages: bool = False, timeout: float = 0.0) -> dict[str, Any] | None: ... + def handle_message(self, response, ignore_subscribe_messages: bool = False) -> dict[str, Any] | None: ... + def run_in_thread(self, sleep_time: float = 0, daemon: bool = False, exception_handler: Incomplete | None = None): ... + def ping(self, message: _Value | None = None) -> None: ... class PubSubWorkerThread(threading.Thread): daemon: Any pubsub: Any sleep_time: Any exception_handler: Any - def __init__(self, pubsub, sleep_time, daemon: bool = ..., exception_handler: Incomplete | None = ...) -> None: ... + def __init__(self, pubsub, sleep_time, daemon: bool = False, exception_handler: Incomplete | None = None) -> None: ... def run(self) -> None: ... def stop(self) -> None: ... @@ -408,30 +412,30 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def annotate_exception(self, exception, number, command): ... def parse_response(self, connection, command_name, **options): ... def load_scripts(self): ... - def execute(self, raise_on_error: bool = ...) -> list[Any]: ... + def execute(self, raise_on_error: bool = True) -> list[Any]: ... def watch(self, *names: _Key) -> bool: ... def unwatch(self) -> bool: ... # in the Redis implementation, the following methods are inherited from client. def set_response_callback(self, command, callback): ... - def pipeline(self, transaction: bool = ..., shard_hint: Any = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def acl_cat(self, category: str | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def pipeline(self, transaction: bool = True, shard_hint: Any = None) -> Pipeline[_StrType]: ... # type: ignore[override] + def acl_cat(self, category: str | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def acl_deluser(self, username: str) -> Pipeline[_StrType]: ... # type: ignore[override] - def acl_genpass(self, bits: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def acl_genpass(self, bits: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def acl_getuser(self, username: str) -> Pipeline[_StrType]: ... # type: ignore[override] def acl_list(self) -> Pipeline[_StrType]: ... # type: ignore[override] def acl_load(self) -> Pipeline[_StrType]: ... # type: ignore[override] def acl_setuser( # type: ignore[override] self, username: str, - enabled: bool = ..., - nopass: bool = ..., - passwords: Sequence[str] | None = ..., - hashed_passwords: Sequence[str] | None = ..., - categories: Sequence[str] | None = ..., - commands: Sequence[str] | None = ..., - keys: Sequence[str] | None = ..., - channels: Iterable[ChannelT] | None = ..., - selectors: Iterable[tuple[str, KeyT]] | None = ..., + enabled: bool = False, + nopass: bool = False, + passwords: Sequence[str] | None = None, + hashed_passwords: Sequence[str] | None = None, + categories: Sequence[str] | None = None, + commands: Sequence[str] | None = None, + keys: Sequence[str] | None = None, + channels: Iterable[ChannelT] | None = None, + selectors: Iterable[tuple[str, KeyT]] | None = None, reset: bool = False, reset_keys: bool = False, reset_channels: bool = False, @@ -441,24 +445,24 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def acl_users(self) -> Pipeline[_StrType]: ... # type: ignore[override] def acl_whoami(self) -> Pipeline[_StrType]: ... # type: ignore[override] def bgrewriteaof(self) -> Pipeline[_StrType]: ... # type: ignore[override] - def bgsave(self, schedule: bool = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def bgsave(self, schedule: bool = True) -> Pipeline[_StrType]: ... # type: ignore[override] def client_id(self) -> Pipeline[_StrType]: ... # type: ignore[override] def client_kill(self, address: str) -> Pipeline[_StrType]: ... # type: ignore[override] - def client_list(self, _type: str | None = ..., client_id: list[str] = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def client_list(self, _type: str | None = None, client_id: list[str] = []) -> Pipeline[_StrType]: ... # type: ignore[override] def client_getname(self) -> Pipeline[_StrType]: ... # type: ignore[override] def client_setname(self, name: str) -> Pipeline[_StrType]: ... # type: ignore[override] def readwrite(self) -> Pipeline[_StrType]: ... # type: ignore[override] def readonly(self) -> Pipeline[_StrType]: ... # type: ignore[override] - def config_get(self, pattern: PatternT = ..., *args: PatternT, **kwargs: _CommandOptions) -> Pipeline[_StrType]: ... # type: ignore[override] + def config_get(self, pattern: PatternT = "*", *args: PatternT, **kwargs: _CommandOptions) -> Pipeline[_StrType]: ... # type: ignore[override] def config_set(self, name: KeyT, value: EncodableT, *args: KeyT | EncodableT, **kwargs: _CommandOptions) -> Pipeline[_StrType]: ... # type: ignore[override] def config_resetstat(self) -> Pipeline[_StrType]: ... # type: ignore[override] def config_rewrite(self) -> Pipeline[_StrType]: ... # type: ignore[override] def dbsize(self) -> Pipeline[_StrType]: ... # type: ignore[override] def debug_object(self, key) -> Pipeline[_StrType]: ... # type: ignore[override] def echo(self, value) -> Pipeline[_StrType]: ... # type: ignore[override] - def flushall(self, asynchronous: bool = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def flushdb(self, asynchronous: bool = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def info(self, section: _Key | None = ..., *args: _Key, **kwargs: _CommandOptions) -> Pipeline[_StrType]: ... # type: ignore[override] + def flushall(self, asynchronous: bool = False) -> Pipeline[_StrType]: ... # type: ignore[override] + def flushdb(self, asynchronous: bool = False) -> Pipeline[_StrType]: ... # type: ignore[override] + def info(self, section: _Key | None = None, *args: _Key, **kwargs: _CommandOptions) -> Pipeline[_StrType]: ... # type: ignore[override] def lastsave(self) -> Pipeline[_StrType]: ... # type: ignore[override] def object(self, infotype, key) -> Pipeline[_StrType]: ... # type: ignore[override] def ping(self) -> Pipeline[_StrType]: ... # type: ignore[override] @@ -471,57 +475,57 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def sentinel_sentinels(self, service_name) -> Pipeline[_StrType]: ... # type: ignore[override] def sentinel_set(self, name, option, value) -> Pipeline[_StrType]: ... # type: ignore[override] def sentinel_slaves(self, service_name) -> Pipeline[_StrType]: ... # type: ignore[override] - def slaveof(self, host=..., port=...) -> Pipeline[_StrType]: ... # type: ignore[override] - def slowlog_get(self, num=...) -> Pipeline[_StrType]: ... # type: ignore[override] + def slaveof(self, host=None, port=None) -> Pipeline[_StrType]: ... # type: ignore[override] + def slowlog_get(self, num=None) -> Pipeline[_StrType]: ... # type: ignore[override] def slowlog_len(self) -> Pipeline[_StrType]: ... # type: ignore[override] def slowlog_reset(self) -> Pipeline[_StrType]: ... # type: ignore[override] def time(self) -> Pipeline[_StrType]: ... # type: ignore[override] def append(self, key, value) -> Pipeline[_StrType]: ... # type: ignore[override] - def bitcount(self, key: _Key, start: int | None = ..., end: int | None = ..., mode: str | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def bitcount(self, key: _Key, start: int | None = None, end: int | None = None, mode: str | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def bitop(self, operation, dest, *keys) -> Pipeline[_StrType]: ... # type: ignore[override] - def bitpos(self, key, bit, start=..., end=..., mode: str | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def decr(self, name, amount=...) -> Pipeline[_StrType]: ... # type: ignore[override] + def bitpos(self, key, bit, start=None, end=None, mode: str | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] + def decr(self, name, amount=1) -> Pipeline[_StrType]: ... # type: ignore[override] def delete(self, *names: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def __delitem__(self, _Key) -> None: ... def dump(self, name) -> Pipeline[_StrType]: ... # type: ignore[override] def exists(self, *names: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def __contains__(self, *names: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] - def expire(self, name: _Key, time: int | timedelta, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def expireat(self, name, when, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def expire(self, name: _Key, time: int | timedelta, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False) -> Pipeline[_StrType]: ... # type: ignore[override] + def expireat(self, name, when, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False) -> Pipeline[_StrType]: ... # type: ignore[override] def get(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def __getitem__(self, name) -> Pipeline[_StrType]: ... # type: ignore[override] def getbit(self, name: _Key, offset: int) -> Pipeline[_StrType]: ... # type: ignore[override] def getrange(self, key, start, end) -> Pipeline[_StrType]: ... # type: ignore[override] def getset(self, name, value) -> Pipeline[_StrType]: ... # type: ignore[override] - def incr(self, name, amount=...) -> Pipeline[_StrType]: ... # type: ignore[override] - def incrby(self, name, amount=...) -> Pipeline[_StrType]: ... # type: ignore[override] - def incrbyfloat(self, name, amount=...) -> Pipeline[_StrType]: ... # type: ignore[override] - def keys(self, pattern: _Key = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def incr(self, name, amount=1) -> Pipeline[_StrType]: ... # type: ignore[override] + def incrby(self, name, amount=1) -> Pipeline[_StrType]: ... # type: ignore[override] + def incrbyfloat(self, name, amount=1.0) -> Pipeline[_StrType]: ... # type: ignore[override] + def keys(self, pattern: _Key = "*") -> Pipeline[_StrType]: ... # type: ignore[override] def mget(self, keys: _Key | Iterable[_Key], *args: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def mset(self, mapping: Mapping[_Key, _Value]) -> Pipeline[_StrType]: ... # type: ignore[override] def msetnx(self, mapping: Mapping[_Key, _Value]) -> Pipeline[_StrType]: ... # type: ignore[override] def move(self, name: _Key, db: int) -> Pipeline[_StrType]: ... # type: ignore[override] def persist(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] - def pexpire(self, name: _Key, time: int | timedelta, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def pexpireat(self, name: _Key, when: int | datetime, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def pexpire(self, name: _Key, time: int | timedelta, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False) -> Pipeline[_StrType]: ... # type: ignore[override] + def pexpireat(self, name: _Key, when: int | datetime, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False) -> Pipeline[_StrType]: ... # type: ignore[override] def psetex(self, name, time_ms, value) -> Pipeline[_StrType]: ... # type: ignore[override] def pttl(self, name) -> Pipeline[_StrType]: ... # type: ignore[override] def randomkey(self) -> Pipeline[_StrType]: ... # type: ignore[override] def rename(self, src, dst) -> Pipeline[_StrType]: ... # type: ignore[override] def renamenx(self, src, dst) -> Pipeline[_StrType]: ... # type: ignore[override] - def restore(self, name, ttl, value, replace: bool = ..., absttl: bool = ..., idletime: Incomplete | None = ..., frequency: Incomplete | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def restore(self, name, ttl, value, replace: bool = False, absttl: bool = False, idletime: Incomplete | None = None, frequency: Incomplete | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def set( # type: ignore[override] self, name: _Key, value: _Value, - ex: None | int | timedelta = ..., - px: None | int | timedelta = ..., - nx: bool = ..., - xx: bool = ..., - keepttl: bool = ..., - get: bool = ..., - exat: Incomplete | None = ..., - pxat: Incomplete | None = ..., + ex: None | int | timedelta = None, + px: None | int | timedelta = None, + nx: bool = False, + xx: bool = False, + keepttl: bool = False, + get: bool = False, + exat: Incomplete | None = None, + pxat: Incomplete | None = None, ) -> Pipeline[_StrType]: ... def __setitem__(self, name, value) -> None: ... def setbit(self, name: _Key, offset: int, value: int) -> Pipeline[_StrType]: ... # type: ignore[override] @@ -529,7 +533,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def setnx(self, name, value) -> Pipeline[_StrType]: ... # type: ignore[override] def setrange(self, name, offset, value) -> Pipeline[_StrType]: ... # type: ignore[override] def strlen(self, name) -> Pipeline[_StrType]: ... # type: ignore[override] - def substr(self, name, start, end=...) -> Pipeline[_StrType]: ... # type: ignore[override] + def substr(self, name, start, end=-1) -> Pipeline[_StrType]: ... # type: ignore[override] def ttl(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def type(self, name) -> Pipeline[_StrType]: ... # type: ignore[override] def unlink(self, *names: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] @@ -538,51 +542,55 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): first_list: _Key, second_list: _Key, timeout: float, - src: Literal["LEFT", "RIGHT"] = ..., - dest: Literal["LEFT", "RIGHT"] = ..., + src: Literal["LEFT", "RIGHT"] = "LEFT", + dest: Literal["LEFT", "RIGHT"] = "RIGHT", ) -> Pipeline[_StrType]: ... - def blpop(self, keys: _Value | Iterable[_Value], timeout: float = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def brpop(self, keys: _Value | Iterable[_Value], timeout: float = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def brpoplpush(self, src, dst, timeout=...) -> Pipeline[_StrType]: ... # type: ignore[override] + def blpop(self, keys: _Value | Iterable[_Value], timeout: float = 0) -> Pipeline[_StrType]: ... # type: ignore[override] + def brpop(self, keys: _Value | Iterable[_Value], timeout: float = 0) -> Pipeline[_StrType]: ... # type: ignore[override] + def brpoplpush(self, src, dst, timeout=0) -> Pipeline[_StrType]: ... # type: ignore[override] def lindex(self, name: _Key, index: int) -> Pipeline[_StrType]: ... # type: ignore[override] def linsert( # type: ignore[override] self, name: _Key, where: Literal["BEFORE", "AFTER", "before", "after"], refvalue: _Value, value: _Value ) -> Pipeline[_StrType]: ... def llen(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def lmove( # type: ignore[override] - self, first_list: _Key, second_list: _Key, src: Literal["LEFT", "RIGHT"] = ..., dest: Literal["LEFT", "RIGHT"] = ... + self, + first_list: _Key, + second_list: _Key, + src: Literal["LEFT", "RIGHT"] = "LEFT", + dest: Literal["LEFT", "RIGHT"] = "RIGHT", ) -> Pipeline[_StrType]: ... - def lpop(self, name, count: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def lpop(self, name, count: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def lpush(self, name: _Value, *values: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def lpushx(self, name, value) -> Pipeline[_StrType]: ... # type: ignore[override] def lrange(self, name: _Key, start: int, end: int) -> Pipeline[_StrType]: ... # type: ignore[override] def lrem(self, name: _Key, count: int, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def lset(self, name: _Key, index: int, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def ltrim(self, name: _Key, start: int, end: int) -> Pipeline[_StrType]: ... # type: ignore[override] - def rpop(self, name, count: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def rpop(self, name, count: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def rpoplpush(self, src, dst) -> Pipeline[_StrType]: ... # type: ignore[override] def rpush(self, name: _Value, *values: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def rpushx(self, name, value) -> Pipeline[_StrType]: ... # type: ignore[override] def sort( # type: ignore[override] self, name: _Key, - start: int | None = ..., - num: int | None = ..., - by: _Key | None = ..., - get: _Key | Sequence[_Key] | None = ..., - desc: bool = ..., - alpha: bool = ..., - store: _Key | None = ..., - groups: bool = ..., + start: int | None = None, + num: int | None = None, + by: _Key | None = None, + get: _Key | Sequence[_Key] | None = None, + desc: bool = False, + alpha: bool = False, + store: _Key | None = None, + groups: bool = False, ) -> Pipeline[_StrType]: ... - def scan(self, cursor: int = ..., match: _Key | None = ..., count: int | None = ..., _type: str | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def scan_iter(self, match: _Key | None = ..., count: int | None = ..., _type: str | None = ...) -> Iterator[Any]: ... # type: ignore[override] - def sscan(self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def sscan_iter(self, name: _Key, match: _Key | None = ..., count: int | None = ...) -> Iterator[Any]: ... - def hscan(self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def hscan_iter(self, name, match: _Key | None = ..., count: int | None = ...) -> Iterator[Any]: ... + def scan(self, cursor: int = 0, match: _Key | None = None, count: int | None = None, _type: str | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] + def scan_iter(self, match: _Key | None = None, count: int | None = None, _type: str | None = None) -> Iterator[Any]: ... # type: ignore[override] + def sscan(self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] + def sscan_iter(self, name: _Key, match: _Key | None = None, count: int | None = None) -> Iterator[Any]: ... + def hscan(self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] + def hscan_iter(self, name, match: _Key | None = None, count: int | None = None) -> Iterator[Any]: ... def zscan_iter( - self, name: _Key, match: _Key | None = ..., count: int | None = ..., score_cast_func: Callable[[_StrType], Any] = ... + self, name: _Key, match: _Key | None = None, count: int | None = None, score_cast_func: Callable[[_StrType], Any] = ... ) -> Iterator[Any]: ... def sadd(self, name: _Key, *values: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def scard(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] @@ -593,74 +601,84 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def sismember(self, name: _Key, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def smembers(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def smove(self, src: _Key, dst: _Key, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] - def spop(self, name: _Key, count: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def srandmember(self, name: _Key, number: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def spop(self, name: _Key, count: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] + def srandmember(self, name: _Key, number: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def srem(self, name: _Key, *values: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def sunion(self, keys: _Key | Iterable[_Key], *args: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def sunionstore(self, dest: _Key, keys: _Key | Iterable[_Key], *args: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def xack(self, name, groupname, *ids) -> Pipeline[_StrType]: ... # type: ignore[override] - def xadd(self, name, fields, id=..., maxlen=..., approximate: bool = ..., nomkstream: bool = ..., minid: Incomplete | None = ..., limit: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def xadd(self, name, fields, id="*", maxlen=None, approximate: bool = True, nomkstream: bool = False, minid: Incomplete | None = None, limit: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def xclaim( - self, name, groupname, consumername, min_idle_time, message_ids, idle=..., time=..., retrycount=..., force=..., justid=... + self, + name, + groupname, + consumername, + min_idle_time, + message_ids, + idle=None, + time=None, + retrycount=None, + force=False, + justid=False, ) -> Pipeline[_StrType]: ... # type: ignore[override] def xdel(self, name, *ids) -> Pipeline[_StrType]: ... # type: ignore[override] - def xgroup_create(self, name, groupname, id=..., mkstream=..., entries_read: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def xgroup_create(self, name, groupname, id="$", mkstream=False, entries_read: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def xgroup_delconsumer(self, name, groupname, consumername) -> Pipeline[_StrType]: ... # type: ignore[override] def xgroup_destroy(self, name, groupname) -> Pipeline[_StrType]: ... # type: ignore[override] - def xgroup_setid(self, name, groupname, id, entries_read: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def xgroup_setid(self, name, groupname, id, entries_read: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def xinfo_consumers(self, name, groupname) -> Pipeline[_StrType]: ... # type: ignore[override] def xinfo_groups(self, name) -> Pipeline[_StrType]: ... # type: ignore[override] - def xinfo_stream(self, name, full: bool = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def xinfo_stream(self, name, full: bool = False) -> Pipeline[_StrType]: ... # type: ignore[override] def xlen(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def xpending(self, name, groupname) -> Pipeline[_StrType]: ... # type: ignore[override] - def xpending_range(self, name: _Key, groupname, min, max, count: int, consumername: Incomplete | None = ..., idle: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def xrange(self, name, min=..., max=..., count=...) -> Pipeline[_StrType]: ... # type: ignore[override] - def xread(self, streams, count=..., block=...) -> Pipeline[_StrType]: ... # type: ignore[override] - def xreadgroup(self, groupname, consumername, streams, count=..., block=..., noack=...) -> Pipeline[_StrType]: ... # type: ignore[override] - def xrevrange(self, name, max=..., min=..., count=...) -> Pipeline[_StrType]: ... # type: ignore[override] - def xtrim(self, name, maxlen: int | None = ..., approximate: bool = ..., minid: Incomplete | None = ..., limit: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def xpending_range(self, name: _Key, groupname, min, max, count: int, consumername: Incomplete | None = None, idle: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] + def xrange(self, name, min="-", max="+", count=None) -> Pipeline[_StrType]: ... # type: ignore[override] + def xread(self, streams, count=None, block=None) -> Pipeline[_StrType]: ... # type: ignore[override] + def xreadgroup(self, groupname, consumername, streams, count=None, block=None, noack=False) -> Pipeline[_StrType]: ... # type: ignore[override] + def xrevrange(self, name, max="+", min="-", count=None) -> Pipeline[_StrType]: ... # type: ignore[override] + def xtrim(self, name, maxlen: int | None = None, approximate: bool = True, minid: Incomplete | None = None, limit: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def zadd( # type: ignore[override] self, name: _Key, mapping: Mapping[_Key, _Value], - nx: bool = ..., - xx: bool = ..., - ch: bool = ..., - incr: bool = ..., - gt: Incomplete | None = ..., - lt: Incomplete | None = ..., + nx: bool = False, + xx: bool = False, + ch: bool = False, + incr: bool = False, + gt: Incomplete | None = False, + lt: Incomplete | None = False, ) -> Pipeline[_StrType]: ... def zcard(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def zcount(self, name: _Key, min: _Value, max: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def zincrby(self, name: _Key, amount: float, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] - def zinterstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def zinterstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def zlexcount(self, name: _Key, min: _Value, max: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] - def zpopmax(self, name: _Key, count: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def zpopmin(self, name: _Key, count: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: float = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: float = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def zpopmax(self, name: _Key, count: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] + def zpopmin(self, name: _Key, count: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] + def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: float = 0) -> Pipeline[_StrType]: ... # type: ignore[override] + def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: float = 0) -> Pipeline[_StrType]: ... # type: ignore[override] def zrange( # type: ignore[override] self, name: _Key, start: int, end: int, - desc: bool = ..., - withscores: bool = ..., + desc: bool = False, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> Pipeline[_StrType]: ... - def zrangebylex(self, name: _Key, min: _Value, max: _Value, start: int | None = ..., num: int | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def zrangebylex(self, name: _Key, min: _Value, max: _Value, start: int | None = None, num: int | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def zrangebyscore( # type: ignore[override] self, name: _Key, min: _Value, max: _Value, - start: int | None = ..., - num: int | None = ..., - withscores: bool = ..., + start: int | None = None, + num: int | None = None, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> Pipeline[_StrType]: ... def zrank(self, name: _Key, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] @@ -669,24 +687,24 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def zremrangebyrank(self, name: _Key, min: _Value, max: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def zremrangebyscore(self, name: _Key, min: _Value, max: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def zrevrange( # type: ignore[override] - self, name: _Key, start: int, end: int, withscores: bool = ..., score_cast_func: Callable[[_StrType], Any] = ... + self, name: _Key, start: int, end: int, withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ... ) -> Pipeline[_StrType]: ... def zrevrangebyscore( # type: ignore[override] self, name: _Key, max: _Value, min: _Value, - start: int | None = ..., - num: int | None = ..., - withscores: bool = ..., + start: int | None = None, + num: int | None = None, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> Pipeline[_StrType]: ... def zrevrangebylex( # type: ignore[override] - self, name: _Key, max: _Value, min: _Value, start: int | None = ..., num: int | None = ... + self, name: _Key, max: _Value, min: _Value, start: int | None = None, num: int | None = None ) -> Pipeline[_StrType]: ... def zrevrank(self, name: _Key, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def zscore(self, name: _Key, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] - def zunionstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def zunionstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def pfadd(self, name: _Key, *values: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def pfcount(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def pfmerge(self, dest: _Key, *sources: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] @@ -694,20 +712,20 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def hexists(self, name: _Key, key: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def hget(self, name: _Key, key: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def hgetall(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] - def hincrby(self, name: _Key, key: _Key, amount: int = ...) -> Pipeline[_StrType]: ... # type: ignore[override] - def hincrbyfloat(self, name: _Key, key: _Key, amount: float = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def hincrby(self, name: _Key, key: _Key, amount: int = 1) -> Pipeline[_StrType]: ... # type: ignore[override] + def hincrbyfloat(self, name: _Key, key: _Key, amount: float = 1.0) -> Pipeline[_StrType]: ... # type: ignore[override] def hkeys(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def hlen(self, name: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] @overload # type: ignore[override] def hset( - self, name: _Key, key: _Key, value: _Value, mapping: Mapping[_Key, _Value] | None = ..., items: Incomplete | None = ... + self, name: _Key, key: _Key, value: _Value, mapping: Mapping[_Key, _Value] | None = None, items: Incomplete | None = None ) -> Pipeline[_StrType]: ... @overload # type: ignore[override] def hset( - self, name: _Key, key: None, value: None, mapping: Mapping[_Key, _Value], items: Incomplete | None = ... + self, name: _Key, key: None, value: None, mapping: Mapping[_Key, _Value], items: Incomplete | None = None ) -> Pipeline[_StrType]: ... @overload # type: ignore[override] - def hset(self, name: _Key, *, mapping: Mapping[_Key, _Value], items: Incomplete | None = ...) -> Pipeline[_StrType]: ... + def hset(self, name: _Key, *, mapping: Mapping[_Key, _Value], items: Incomplete | None = None) -> Pipeline[_StrType]: ... def hsetnx(self, name: _Key, key: _Key, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def hmset(self, name: _Key, mapping: Mapping[_Key, _Value]) -> Pipeline[_StrType]: ... # type: ignore[override] def hmget(self, name: _Key, keys: _Key | Iterable[_Key], *args: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] @@ -716,10 +734,10 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def eval(self, script, numkeys, *keys_and_args) -> Pipeline[_StrType]: ... # type: ignore[override] def evalsha(self, sha, numkeys, *keys_and_args) -> Pipeline[_StrType]: ... # type: ignore[override] def script_exists(self, *args) -> Pipeline[_StrType]: ... # type: ignore[override] - def script_flush(self, sync_type: Incomplete | None = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def script_flush(self, sync_type: Incomplete | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def script_kill(self) -> Pipeline[_StrType]: ... # type: ignore[override] def script_load(self, script) -> Pipeline[_StrType]: ... # type: ignore[override] - def pubsub_channels(self, pattern: _Key = ...) -> Pipeline[_StrType]: ... # type: ignore[override] + def pubsub_channels(self, pattern: _Key = "*") -> Pipeline[_StrType]: ... # type: ignore[override] def pubsub_numsub(self, *args: _Key) -> Pipeline[_StrType]: ... # type: ignore[override] def pubsub_numpat(self) -> Pipeline[_StrType]: ... # type: ignore[override] def monitor(self) -> Monitor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/cluster.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/cluster.pyi index fd4e906e6..93f972790 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/cluster.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/cluster.pyi @@ -59,16 +59,16 @@ class RedisCluster(AbstractRedisCluster, RedisClusterCommands[_StrType], Generic commands_parser: CommandsParser def __init__( # TODO: make @overloads, either `url` or `host:port` can be passed self, - host: str | None = ..., - port: int | None = ..., - startup_nodes: list[ClusterNode] | None = ..., - cluster_error_retry_attempts: int = ..., - retry: Retry | None = ..., - require_full_coverage: bool = ..., - reinitialize_steps: int = ..., - read_from_replicas: bool = ..., - dynamic_startup_nodes: bool = ..., - url: str | None = ..., + host: str | None = None, + port: int | None = 6379, + startup_nodes: list[ClusterNode] | None = None, + cluster_error_retry_attempts: int = 3, + retry: Retry | None = None, + require_full_coverage: bool = False, + reinitialize_steps: int = 5, + read_from_replicas: bool = False, + dynamic_startup_nodes: bool = True, + url: str | None = None, **kwargs, ) -> None: ... def __enter__(self) -> Self: ... @@ -82,27 +82,29 @@ class RedisCluster(AbstractRedisCluster, RedisClusterCommands[_StrType], Generic def on_connect(self, connection: Connection) -> None: ... def get_redis_connection(self, node: ClusterNode) -> Redis[Any]: ... def get_node( - self, host: str | None = ..., port: str | int | None = ..., node_name: str | None = ... + self, host: str | None = None, port: str | int | None = None, node_name: str | None = None ) -> ClusterNode | None: ... def get_primaries(self) -> list[ClusterNode]: ... def get_replicas(self) -> list[ClusterNode]: ... def get_random_node(self) -> ClusterNode: ... def get_nodes(self) -> list[ClusterNode]: ... - def get_node_from_key(self, key: _Encodable, replica: bool = ...) -> ClusterNode | None: ... + def get_node_from_key(self, key: _Encodable, replica: bool = False) -> ClusterNode | None: ... def get_default_node(self) -> ClusterNode | None: ... def set_default_node(self, node: ClusterNode | None) -> bool: ... - def monitor(self, target_node: Incomplete | None = ...): ... - def pubsub(self, node: Incomplete | None = ..., host: Incomplete | None = ..., port: Incomplete | None = ..., **kwargs): ... - def pipeline(self, transaction: Incomplete | None = ..., shard_hint: Incomplete | None = ...): ... + def monitor(self, target_node: Incomplete | None = None): ... + def pubsub( + self, node: Incomplete | None = None, host: Incomplete | None = None, port: Incomplete | None = None, **kwargs + ): ... + def pipeline(self, transaction: Incomplete | None = None, shard_hint: Incomplete | None = None): ... def lock( self, name: str, - timeout: float | None = ..., - sleep: float = ..., - blocking: bool = ..., - blocking_timeout: float | None = ..., - lock_class: type[Incomplete] | None = ..., - thread_local: bool = ..., + timeout: float | None = None, + sleep: float = 0.1, + blocking: bool = True, + blocking_timeout: float | None = None, + lock_class: type[Incomplete] | None = None, + thread_local: bool = True, ): ... def keyslot(self, key: _Encodable) -> int: ... def determine_slot(self, *args): ... @@ -118,7 +120,7 @@ class ClusterNode: server_type: str | None redis_connection: Redis[Incomplete] | None def __init__( - self, host: str, port: int, server_type: str | None = ..., redis_connection: Redis[Incomplete] | None = ... + self, host: str, port: int, server_type: str | None = None, redis_connection: Redis[Incomplete] | None = None ) -> None: ... def __eq__(self, obj: object) -> bool: ... def __del__(self) -> None: ... @@ -126,7 +128,7 @@ class ClusterNode: class LoadBalancer: primary_to_idx: dict[str, int] start_index: int - def __init__(self, start_index: int = ...) -> None: ... + def __init__(self, start_index: int = 0) -> None: ... def get_server_index(self, primary: str, list_size: int) -> int: ... def reset(self) -> None: ... @@ -150,10 +152,10 @@ class NodesManager: **kwargs, # TODO: same type as connection_kwargs ) -> None: ... def get_node( - self, host: str | None = ..., port: int | str | None = ..., node_name: str | None = ... + self, host: str | None = None, port: int | str | None = None, node_name: str | None = None ) -> ClusterNode | None: ... def update_moved_exception(self, exception: MovedError) -> None: ... - def get_node_from_slot(self, slot: str, read_from_replicas: bool = ..., server_type: str | None = ...) -> ClusterNode: ... + def get_node_from_slot(self, slot: str, read_from_replicas: bool = False, server_type: str | None = None) -> ClusterNode: ... def get_nodes_by_server_type(self, server_type: str) -> list[ClusterNode]: ... def populate_startup_nodes(self, nodes: Iterable[ClusterNode]) -> None: ... def check_slots_coverage(self, slots_cache: dict[str, list[ClusterNode]]) -> bool: ... @@ -169,13 +171,13 @@ class ClusterPubSub(PubSub): def __init__( self, redis_cluster: RedisCluster[Any], - node: ClusterNode | None = ..., - host: str | None = ..., - port: int | None = ..., + node: ClusterNode | None = None, + host: str | None = None, + port: int | None = None, **kwargs, ) -> None: ... def set_pubsub_node( - self, cluster: RedisCluster[Any], node: ClusterNode | None = ..., host: str | None = ..., port: int | None = ... + self, cluster: RedisCluster[Any], node: ClusterNode | None = None, host: str | None = None, port: int | None = None ) -> None: ... def get_pubsub_node(self) -> ClusterNode | None: ... def execute_command(self, *args, **kwargs) -> None: ... @@ -199,13 +201,13 @@ class ClusterPipeline(RedisCluster[_StrType], Generic[_StrType]): self, nodes_manager, commands_parser, - result_callbacks: Incomplete | None = ..., - cluster_response_callbacks: Incomplete | None = ..., - startup_nodes: Incomplete | None = ..., - read_from_replicas: bool = ..., - cluster_error_retry_attempts: int = ..., - reinitialize_steps: int = ..., - lock: Lock | None = ..., + result_callbacks: Incomplete | None = None, + cluster_response_callbacks: Incomplete | None = None, + startup_nodes: Incomplete | None = None, + read_from_replicas: bool = False, + cluster_error_retry_attempts: int = 3, + reinitialize_steps: int = 5, + lock: Lock | None = None, **kwargs, ) -> None: ... def __len__(self) -> int: ... @@ -214,12 +216,12 @@ class ClusterPipeline(RedisCluster[_StrType], Generic[_StrType]): def pipeline_execute_command(self, *args, **options): ... def raise_first_error(self, stack) -> None: ... def annotate_exception(self, exception, number, command) -> None: ... - def execute(self, raise_on_error: bool = ...): ... + def execute(self, raise_on_error: bool = True): ... scripts: set[Any] # is only set in `reset()` watching: bool # is only set in `reset()` explicit_transaction: bool # is only set in `reset()` def reset(self) -> None: ... - def send_cluster_commands(self, stack, raise_on_error: bool = ..., allow_redirections: bool = ...): ... + def send_cluster_commands(self, stack, raise_on_error: bool = True, allow_redirections: bool = True): ... def eval(self) -> None: ... def multi(self) -> None: ... def immediate_execute_command(self, *args, **options) -> None: ... @@ -239,7 +241,7 @@ class PipelineCommand: node: Incomplete | None asking: bool def __init__( - self, args: Sequence[EncodableT], options: _ParseResponseOptions | None = ..., position: int | None = ... + self, args: Sequence[EncodableT], options: _ParseResponseOptions | None = None, position: int | None = None ) -> None: ... class _ParseResponseCallback(Protocol): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/bf/commands.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/bf/commands.pyi index 73b0beb1e..99a296fdc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/bf/commands.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/bf/commands.pyi @@ -44,18 +44,18 @@ TDIGEST_MAX: str TDIGEST_INFO: str class BFCommands: - def create(self, key, errorRate, capacity, expansion: Incomplete | None = ..., noScale: Incomplete | None = ...): ... + def create(self, key, errorRate, capacity, expansion: Incomplete | None = None, noScale: Incomplete | None = None): ... def add(self, key, item): ... def madd(self, key, *items): ... def insert( self, key, items, - capacity: Incomplete | None = ..., - error: Incomplete | None = ..., - noCreate: Incomplete | None = ..., - expansion: Incomplete | None = ..., - noScale: Incomplete | None = ..., + capacity: Incomplete | None = None, + error: Incomplete | None = None, + noCreate: Incomplete | None = None, + expansion: Incomplete | None = None, + noScale: Incomplete | None = None, ): ... def exists(self, key, item): ... def mexists(self, key, *items): ... @@ -68,14 +68,14 @@ class CFCommands: self, key, capacity, - expansion: Incomplete | None = ..., - bucket_size: Incomplete | None = ..., - max_iterations: Incomplete | None = ..., + expansion: Incomplete | None = None, + bucket_size: Incomplete | None = None, + max_iterations: Incomplete | None = None, ): ... def add(self, key, item): ... def addnx(self, key, item): ... - def insert(self, key, items, capacity: Incomplete | None = ..., nocreate: Incomplete | None = ...): ... - def insertnx(self, key, items, capacity: Incomplete | None = ..., nocreate: Incomplete | None = ...): ... + def insert(self, key, items, capacity: Incomplete | None = None, nocreate: Incomplete | None = None): ... + def insertnx(self, key, items, capacity: Incomplete | None = None, nocreate: Incomplete | None = None): ... def exists(self, key, item): ... def delete(self, key, item): ... def count(self, key, item): ... @@ -89,14 +89,14 @@ class TOPKCommands: def incrby(self, key, items, increments): ... def query(self, key, *items): ... def count(self, key, *items): ... - def list(self, key, withcount: bool = ...): ... + def list(self, key, withcount: bool = False): ... def info(self, key): ... class TDigestCommands: - def create(self, key, compression: int = ...): ... + def create(self, key, compression: int = 100): ... def reset(self, key): ... def add(self, key, values): ... - def merge(self, destination_key, num_keys, *keys, compression: int | None = ..., override: bool = ...): ... + def merge(self, destination_key, num_keys, *keys, compression: int | None = None, override: bool = False): ... def min(self, key): ... def max(self, key): ... def quantile(self, key, quantile, *quantiles): ... @@ -108,5 +108,5 @@ class CMSCommands: def initbyprob(self, key, error, probability): ... def incrby(self, key, items, increments): ... def query(self, key, *items): ... - def merge(self, destKey, numKeys, srcKeys, weights=...): ... + def merge(self, destKey, numKeys, srcKeys, weights=[]): ... def info(self, key): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/cluster.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/cluster.pyi index 0a5981b01..530438240 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/cluster.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/cluster.pyi @@ -22,11 +22,11 @@ class ClusterDataAccessCommands(DataAccessCommands[_StrType], Generic[_StrType]) algo, value1, value2, - specific_argument: str = ..., - len: bool = ..., - idx: bool = ..., - minmatchlen: Incomplete | None = ..., - withmatchlen: bool = ..., + specific_argument: str = "strings", + len: bool = False, + idx: bool = False, + minmatchlen: Incomplete | None = None, + withmatchlen: bool = False, **kwargs, ): ... @@ -42,20 +42,20 @@ class RedisClusterCommands( def cluster_countkeysinslot(self, slot_id): ... def cluster_count_failure_report(self, node_id): ... def cluster_delslots(self, *slots): ... - def cluster_failover(self, target_node, option: Incomplete | None = ...): ... - def cluster_info(self, target_nodes: Incomplete | None = ...): ... + def cluster_failover(self, target_node, option: Incomplete | None = None): ... + def cluster_info(self, target_nodes: Incomplete | None = None): ... def cluster_keyslot(self, key): ... - def cluster_meet(self, host, port, target_nodes: Incomplete | None = ...): ... + def cluster_meet(self, host, port, target_nodes: Incomplete | None = None): ... def cluster_nodes(self): ... def cluster_replicate(self, target_nodes, node_id): ... - def cluster_reset(self, soft: bool = ..., target_nodes: Incomplete | None = ...): ... - def cluster_save_config(self, target_nodes: Incomplete | None = ...): ... + def cluster_reset(self, soft: bool = True, target_nodes: Incomplete | None = None): ... + def cluster_save_config(self, target_nodes: Incomplete | None = None): ... def cluster_get_keys_in_slot(self, slot, num_keys): ... - def cluster_set_config_epoch(self, epoch, target_nodes: Incomplete | None = ...): ... + def cluster_set_config_epoch(self, epoch, target_nodes: Incomplete | None = None): ... def cluster_setslot(self, target_node, node_id, slot_id, state): ... def cluster_setslot_stable(self, slot_id): ... - def cluster_replicas(self, node_id, target_nodes: Incomplete | None = ...): ... - def cluster_slots(self, target_nodes: Incomplete | None = ...): ... + def cluster_replicas(self, node_id, target_nodes: Incomplete | None = None): ... + def cluster_slots(self, target_nodes: Incomplete | None = None): ... read_from_replicas: bool - def readonly(self, target_nodes: Incomplete | None = ...): ... - def readwrite(self, target_nodes: Incomplete | None = ...): ... + def readonly(self, target_nodes: Incomplete | None = None): ... + def readwrite(self, target_nodes: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi index 65aca2c57..1651634dc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi @@ -13,28 +13,28 @@ _ScoreCastFuncReturn = TypeVar("_ScoreCastFuncReturn") _StrType = TypeVar("_StrType", bound=str | bytes) class ACLCommands(Generic[_StrType]): - def acl_cat(self, category: str | None = ..., **kwargs: _CommandOptions) -> list[str]: ... + def acl_cat(self, category: str | None = None, **kwargs: _CommandOptions) -> list[str]: ... def acl_deluser(self, *username: str, **kwargs: _CommandOptions) -> int: ... - def acl_genpass(self, bits: int | None = ..., **kwargs: _CommandOptions) -> str: ... + def acl_genpass(self, bits: int | None = None, **kwargs: _CommandOptions) -> str: ... def acl_getuser(self, username: str, **kwargs: _CommandOptions) -> Any | None: ... def acl_help(self, **kwargs: _CommandOptions): ... def acl_list(self, **kwargs: _CommandOptions) -> list[str]: ... - def acl_log(self, count: int | None = ..., **kwargs: _CommandOptions): ... + def acl_log(self, count: int | None = None, **kwargs: _CommandOptions): ... def acl_log_reset(self, **kwargs: _CommandOptions): ... def acl_load(self, **kwargs: _CommandOptions) -> bool: ... def acl_save(self, **kwargs: _CommandOptions): ... def acl_setuser( self, username: str, - enabled: bool = ..., - nopass: bool = ..., - passwords: Sequence[str] | None = ..., - hashed_passwords: Sequence[str] | None = ..., - categories: Sequence[str] | None = ..., - commands: Sequence[str] | None = ..., - keys: Sequence[str] | None = ..., - channels: Iterable[ChannelT] | None = ..., - selectors: Iterable[tuple[str, KeyT]] | None = ..., + enabled: bool = False, + nopass: bool = False, + passwords: Sequence[str] | None = None, + hashed_passwords: Sequence[str] | None = None, + categories: Sequence[str] | None = None, + commands: Sequence[str] | None = None, + keys: Sequence[str] | None = None, + channels: Iterable[ChannelT] | None = None, + selectors: Iterable[tuple[str, KeyT]] | None = None, reset: bool = False, reset_keys: bool = False, reset_channels: bool = False, @@ -45,28 +45,28 @@ class ACLCommands(Generic[_StrType]): def acl_whoami(self, **kwargs: _CommandOptions) -> str: ... class AsyncACLCommands(Generic[_StrType]): - async def acl_cat(self, category: str | None = ..., **kwargs: _CommandOptions) -> list[str]: ... + async def acl_cat(self, category: str | None = None, **kwargs: _CommandOptions) -> list[str]: ... async def acl_deluser(self, *username: str, **kwargs: _CommandOptions) -> int: ... - async def acl_genpass(self, bits: int | None = ..., **kwargs: _CommandOptions) -> str: ... + async def acl_genpass(self, bits: int | None = None, **kwargs: _CommandOptions) -> str: ... async def acl_getuser(self, username: str, **kwargs: _CommandOptions) -> Any | None: ... async def acl_help(self, **kwargs: _CommandOptions): ... async def acl_list(self, **kwargs: _CommandOptions) -> list[str]: ... - async def acl_log(self, count: int | None = ..., **kwargs: _CommandOptions): ... + async def acl_log(self, count: int | None = None, **kwargs: _CommandOptions): ... async def acl_log_reset(self, **kwargs: _CommandOptions): ... async def acl_load(self, **kwargs: _CommandOptions) -> bool: ... async def acl_save(self, **kwargs: _CommandOptions): ... async def acl_setuser( self, username: str, - enabled: bool = ..., - nopass: bool = ..., - passwords: Sequence[str] | None = ..., - hashed_passwords: Sequence[str] | None = ..., - categories: Sequence[str] | None = ..., - commands: Sequence[str] | None = ..., - keys: Sequence[str] | None = ..., - channels: Iterable[ChannelT] | None = ..., - selectors: Iterable[tuple[str, KeyT]] | None = ..., + enabled: bool = False, + nopass: bool = False, + passwords: Sequence[str] | None = None, + hashed_passwords: Sequence[str] | None = None, + categories: Sequence[str] | None = None, + commands: Sequence[str] | None = None, + keys: Sequence[str] | None = None, + channels: Iterable[ChannelT] | None = None, + selectors: Iterable[tuple[str, KeyT]] | None = None, reset: bool = False, reset_keys: bool = False, reset_channels: bool = False, @@ -78,22 +78,22 @@ class AsyncACLCommands(Generic[_StrType]): class ManagementCommands: def bgrewriteaof(self, **kwargs: _CommandOptions): ... - def bgsave(self, schedule: bool = ..., **kwargs: _CommandOptions): ... + def bgsave(self, schedule: bool = True, **kwargs: _CommandOptions): ... def role(self): ... def client_kill(self, address: str, **kwargs: _CommandOptions) -> bool: ... def client_kill_filter( self, - _id: Incomplete | None = ..., - _type: Incomplete | None = ..., - addr: Incomplete | None = ..., - skipme: Incomplete | None = ..., - laddr: Incomplete | None = ..., - user: Incomplete | None = ..., + _id: Incomplete | None = None, + _type: Incomplete | None = None, + addr: Incomplete | None = None, + skipme: Incomplete | None = None, + laddr: Incomplete | None = None, + user: Incomplete | None = None, **kwargs: _CommandOptions, ): ... def client_info(self, **kwargs: _CommandOptions): ... def client_list( - self, _type: str | None = ..., client_id: list[str] = ..., **kwargs: _CommandOptions + self, _type: str | None = None, client_id: list[str] = [], **kwargs: _CommandOptions ) -> list[dict[str, str]]: ... def client_getname(self, **kwargs: _CommandOptions) -> str | None: ... def client_getredir(self, **kwargs: _CommandOptions): ... @@ -101,42 +101,42 @@ class ManagementCommands: def client_id(self, **kwargs: _CommandOptions) -> int: ... def client_tracking_on( self, - clientid: Incomplete | None = ..., - prefix=..., - bcast: bool = ..., - optin: bool = ..., - optout: bool = ..., - noloop: bool = ..., + clientid: Incomplete | None = None, + prefix=[], + bcast: bool = False, + optin: bool = False, + optout: bool = False, + noloop: bool = False, ): ... def client_tracking_off( self, - clientid: Incomplete | None = ..., - prefix=..., - bcast: bool = ..., - optin: bool = ..., - optout: bool = ..., - noloop: bool = ..., + clientid: Incomplete | None = None, + prefix=[], + bcast: bool = False, + optin: bool = False, + optout: bool = False, + noloop: bool = False, ): ... def client_tracking( self, - on: bool = ..., - clientid: Incomplete | None = ..., - prefix=..., - bcast: bool = ..., - optin: bool = ..., - optout: bool = ..., - noloop: bool = ..., + on: bool = True, + clientid: Incomplete | None = None, + prefix=[], + bcast: bool = False, + optin: bool = False, + optout: bool = False, + noloop: bool = False, **kwargs: _CommandOptions, ): ... def client_trackinginfo(self, **kwargs: _CommandOptions): ... def client_setname(self, name: str, **kwargs: _CommandOptions) -> bool: ... - def client_unblock(self, client_id, error: bool = ..., **kwargs: _CommandOptions): ... - def client_pause(self, timeout, all: bool = ..., **kwargs: _CommandOptions): ... + def client_unblock(self, client_id, error: bool = False, **kwargs: _CommandOptions): ... + def client_pause(self, timeout, all: bool = True, **kwargs: _CommandOptions): ... def client_unpause(self, **kwargs: _CommandOptions): ... def command(self, **kwargs: _CommandOptions): ... def command_info(self, **kwargs: _CommandOptions): ... def command_count(self, **kwargs: _CommandOptions): ... - def config_get(self, pattern: PatternT = ..., *args: PatternT, **kwargs: _CommandOptions): ... + def config_get(self, pattern: PatternT = "*", *args: PatternT, **kwargs: _CommandOptions): ... def config_set(self, name: KeyT, value: EncodableT, *args: KeyT | EncodableT, **kwargs: _CommandOptions): ... def config_resetstat(self, **kwargs: _CommandOptions): ... def config_rewrite(self, **kwargs: _CommandOptions): ... @@ -144,13 +144,13 @@ class ManagementCommands: def debug_object(self, key, **kwargs: _CommandOptions): ... def debug_segfault(self, **kwargs: _CommandOptions): ... def echo(self, value: _Value, **kwargs: _CommandOptions) -> bytes: ... - def flushall(self, asynchronous: bool = ..., **kwargs: _CommandOptions) -> bool: ... - def flushdb(self, asynchronous: bool = ..., **kwargs: _CommandOptions) -> bool: ... + def flushall(self, asynchronous: bool = False, **kwargs: _CommandOptions) -> bool: ... + def flushdb(self, asynchronous: bool = False, **kwargs: _CommandOptions) -> bool: ... def sync(self): ... def psync(self, replicationid, offset): ... def swapdb(self, first, second, **kwargs: _CommandOptions): ... def select(self, index, **kwargs: _CommandOptions): ... - def info(self, section: _Key | None = ..., *args: _Key, **kwargs: _CommandOptions) -> Mapping[str, Any]: ... + def info(self, section: _Key | None = None, *args: _Key, **kwargs: _CommandOptions) -> Mapping[str, Any]: ... def lastsave(self, **kwargs: _CommandOptions): ... def lolwut(self, *version_numbers: _Value, **kwargs: _CommandOptions) -> bytes: ... def reset(self) -> None: ... @@ -161,9 +161,9 @@ class ManagementCommands: keys, destination_db, timeout, - copy: bool = ..., - replace: bool = ..., - auth: Incomplete | None = ..., + copy: bool = False, + replace: bool = False, + auth: Incomplete | None = None, **kwargs: _CommandOptions, ): ... def object(self, infotype, key, **kwargs: _CommandOptions): ... @@ -171,7 +171,7 @@ class ManagementCommands: def memory_help(self, **kwargs: _CommandOptions): ... def memory_stats(self, **kwargs: _CommandOptions) -> dict[str, Any]: ... def memory_malloc_stats(self, **kwargs: _CommandOptions): ... - def memory_usage(self, key, samples: Incomplete | None = ..., **kwargs: _CommandOptions): ... + def memory_usage(self, key, samples: Incomplete | None = None, **kwargs: _CommandOptions): ... def memory_purge(self, **kwargs: _CommandOptions): ... def ping(self, **kwargs: _CommandOptions) -> bool: ... def quit(self, **kwargs: _CommandOptions): ... @@ -179,15 +179,15 @@ class ManagementCommands: def save(self, **kwargs: _CommandOptions) -> bool: ... def shutdown( self, - save: bool = ..., - nosave: bool = ..., - now: bool = ..., - force: bool = ..., - abort: bool = ..., + save: bool = False, + nosave: bool = False, + now: bool = False, + force: bool = False, + abort: bool = False, **kwargs: _CommandOptions, ) -> None: ... - def slaveof(self, host: Incomplete | None = ..., port: Incomplete | None = ..., **kwargs: _CommandOptions): ... - def slowlog_get(self, num: Incomplete | None = ..., **kwargs: _CommandOptions): ... + def slaveof(self, host: Incomplete | None = None, port: Incomplete | None = None, **kwargs: _CommandOptions): ... + def slowlog_get(self, num: Incomplete | None = None, **kwargs: _CommandOptions): ... def slowlog_len(self, **kwargs: _CommandOptions): ... def slowlog_reset(self, **kwargs: _CommandOptions): ... def time(self, **kwargs: _CommandOptions): ... @@ -195,22 +195,22 @@ class ManagementCommands: class AsyncManagementCommands: async def bgrewriteaof(self, **kwargs: _CommandOptions): ... - async def bgsave(self, schedule: bool = ..., **kwargs: _CommandOptions): ... + async def bgsave(self, schedule: bool = True, **kwargs: _CommandOptions): ... async def role(self): ... async def client_kill(self, address: str, **kwargs: _CommandOptions) -> bool: ... async def client_kill_filter( self, - _id: Incomplete | None = ..., - _type: Incomplete | None = ..., - addr: Incomplete | None = ..., - skipme: Incomplete | None = ..., - laddr: Incomplete | None = ..., - user: Incomplete | None = ..., + _id: Incomplete | None = None, + _type: Incomplete | None = None, + addr: Incomplete | None = None, + skipme: Incomplete | None = None, + laddr: Incomplete | None = None, + user: Incomplete | None = None, **kwargs: _CommandOptions, ): ... async def client_info(self, **kwargs: _CommandOptions): ... async def client_list( - self, _type: str | None = ..., client_id: list[str] = ..., **kwargs: _CommandOptions + self, _type: str | None = None, client_id: list[str] = [], **kwargs: _CommandOptions ) -> list[dict[str, str]]: ... async def client_getname(self, **kwargs: _CommandOptions) -> str | None: ... async def client_getredir(self, **kwargs: _CommandOptions): ... @@ -218,42 +218,42 @@ class AsyncManagementCommands: async def client_id(self, **kwargs: _CommandOptions) -> int: ... async def client_tracking_on( self, - clientid: Incomplete | None = ..., - prefix=..., - bcast: bool = ..., - optin: bool = ..., - optout: bool = ..., - noloop: bool = ..., + clientid: Incomplete | None = None, + prefix=[], + bcast: bool = False, + optin: bool = False, + optout: bool = False, + noloop: bool = False, ): ... async def client_tracking_off( self, - clientid: Incomplete | None = ..., - prefix=..., - bcast: bool = ..., - optin: bool = ..., - optout: bool = ..., - noloop: bool = ..., + clientid: Incomplete | None = None, + prefix=[], + bcast: bool = False, + optin: bool = False, + optout: bool = False, + noloop: bool = False, ): ... async def client_tracking( self, - on: bool = ..., - clientid: Incomplete | None = ..., - prefix=..., - bcast: bool = ..., - optin: bool = ..., - optout: bool = ..., - noloop: bool = ..., + on: bool = True, + clientid: Incomplete | None = None, + prefix=[], + bcast: bool = False, + optin: bool = False, + optout: bool = False, + noloop: bool = False, **kwargs: _CommandOptions, ): ... async def client_trackinginfo(self, **kwargs: _CommandOptions): ... async def client_setname(self, name: str, **kwargs: _CommandOptions) -> bool: ... - async def client_unblock(self, client_id, error: bool = ..., **kwargs: _CommandOptions): ... - async def client_pause(self, timeout, all: bool = ..., **kwargs: _CommandOptions): ... + async def client_unblock(self, client_id, error: bool = False, **kwargs: _CommandOptions): ... + async def client_pause(self, timeout, all: bool = True, **kwargs: _CommandOptions): ... async def client_unpause(self, **kwargs: _CommandOptions): ... async def command(self, **kwargs: _CommandOptions): ... async def command_info(self, **kwargs: _CommandOptions): ... async def command_count(self, **kwargs: _CommandOptions): ... - async def config_get(self, pattern: PatternT = ..., *args: PatternT, **kwargs: _CommandOptions): ... + async def config_get(self, pattern: PatternT = "*", *args: PatternT, **kwargs: _CommandOptions): ... async def config_set(self, name: KeyT, value: EncodableT, *args: KeyT | EncodableT, **kwargs: _CommandOptions): ... async def config_resetstat(self, **kwargs: _CommandOptions): ... async def config_rewrite(self, **kwargs: _CommandOptions): ... @@ -261,13 +261,13 @@ class AsyncManagementCommands: async def debug_object(self, key, **kwargs: _CommandOptions): ... async def debug_segfault(self, **kwargs: _CommandOptions): ... async def echo(self, value: _Value, **kwargs: _CommandOptions) -> bytes: ... - async def flushall(self, asynchronous: bool = ..., **kwargs: _CommandOptions) -> bool: ... - async def flushdb(self, asynchronous: bool = ..., **kwargs: _CommandOptions) -> bool: ... + async def flushall(self, asynchronous: bool = False, **kwargs: _CommandOptions) -> bool: ... + async def flushdb(self, asynchronous: bool = False, **kwargs: _CommandOptions) -> bool: ... async def sync(self): ... async def psync(self, replicationid, offset): ... async def swapdb(self, first, second, **kwargs: _CommandOptions): ... async def select(self, index, **kwargs: _CommandOptions): ... - async def info(self, section: _Key | None = ..., *args: _Key, **kwargs: _CommandOptions) -> Mapping[str, Any]: ... + async def info(self, section: _Key | None = None, *args: _Key, **kwargs: _CommandOptions) -> Mapping[str, Any]: ... async def lastsave(self, **kwargs: _CommandOptions): ... async def lolwut(self, *version_numbers: _Value, **kwargs: _CommandOptions) -> bytes: ... async def reset(self) -> None: ... @@ -278,9 +278,9 @@ class AsyncManagementCommands: keys, destination_db, timeout, - copy: bool = ..., - replace: bool = ..., - auth: Incomplete | None = ..., + copy: bool = False, + replace: bool = False, + auth: Incomplete | None = None, **kwargs: _CommandOptions, ): ... async def object(self, infotype, key, **kwargs: _CommandOptions): ... @@ -288,7 +288,7 @@ class AsyncManagementCommands: async def memory_help(self, **kwargs: _CommandOptions): ... async def memory_stats(self, **kwargs: _CommandOptions) -> dict[str, Any]: ... async def memory_malloc_stats(self, **kwargs: _CommandOptions): ... - async def memory_usage(self, key, samples: Incomplete | None = ..., **kwargs: _CommandOptions): ... + async def memory_usage(self, key, samples: Incomplete | None = None, **kwargs: _CommandOptions): ... async def memory_purge(self, **kwargs: _CommandOptions): ... async def ping(self, **kwargs: _CommandOptions) -> bool: ... async def quit(self, **kwargs: _CommandOptions): ... @@ -296,15 +296,15 @@ class AsyncManagementCommands: async def save(self, **kwargs: _CommandOptions) -> bool: ... async def shutdown( self, - save: bool = ..., - nosave: bool = ..., - now: bool = ..., - force: bool = ..., - abort: bool = ..., + save: bool = False, + nosave: bool = False, + now: bool = False, + force: bool = False, + abort: bool = False, **kwargs: _CommandOptions, ) -> None: ... - async def slaveof(self, host: Incomplete | None = ..., port: Incomplete | None = ..., **kwargs: _CommandOptions): ... - async def slowlog_get(self, num: Incomplete | None = ..., **kwargs: _CommandOptions): ... + async def slaveof(self, host: Incomplete | None = None, port: Incomplete | None = None, **kwargs: _CommandOptions): ... + async def slowlog_get(self, num: Incomplete | None = None, **kwargs: _CommandOptions): ... async def slowlog_len(self, **kwargs: _CommandOptions): ... async def slowlog_reset(self, **kwargs: _CommandOptions): ... async def time(self, **kwargs: _CommandOptions): ... @@ -312,51 +312,55 @@ class AsyncManagementCommands: class BasicKeyCommands(Generic[_StrType]): def append(self, key, value): ... - def bitcount(self, key: _Key, start: int | None = ..., end: int | None = ..., mode: str | None = ...) -> int: ... - def bitfield(self, key, default_overflow: Incomplete | None = ...): ... + def bitcount(self, key: _Key, start: int | None = None, end: int | None = None, mode: str | None = None) -> int: ... + def bitfield(self, key, default_overflow: Incomplete | None = None): ... def bitop(self, operation, dest, *keys): ... - def bitpos(self, key: _Key, bit: int, start: int | None = ..., end: int | None = ..., mode: str | None = ...): ... - def copy(self, source, destination, destination_db: Incomplete | None = ..., replace: bool = ...): ... - def decr(self, name, amount: int = ...) -> int: ... - def decrby(self, name, amount: int = ...) -> int: ... + def bitpos(self, key: _Key, bit: int, start: int | None = None, end: int | None = None, mode: str | None = None): ... + def copy(self, source, destination, destination_db: Incomplete | None = None, replace: bool = False): ... + def decr(self, name, amount: int = 1) -> int: ... + def decrby(self, name, amount: int = 1) -> int: ... def delete(self, *names: _Key) -> int: ... def __delitem__(self, name: _Key) -> None: ... def dump(self, name: _Key) -> _StrType | None: ... def exists(self, *names: _Key) -> int: ... __contains__ = exists def expire( - self, name: _Key, time: int | timedelta, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ... + self, name: _Key, time: int | timedelta, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False ) -> bool: ... - def expireat(self, name, when, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ...): ... + def expireat(self, name, when, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False): ... def get(self, name: _Key) -> _StrType | None: ... def getdel(self, name: _Key) -> _StrType | None: ... def getex( self, name, - ex: Incomplete | None = ..., - px: Incomplete | None = ..., - exat: Incomplete | None = ..., - pxat: Incomplete | None = ..., - persist: bool = ..., + ex: Incomplete | None = None, + px: Incomplete | None = None, + exat: Incomplete | None = None, + pxat: Incomplete | None = None, + persist: bool = False, ): ... def __getitem__(self, name: str): ... def getbit(self, name: _Key, offset: int) -> int: ... def getrange(self, key, start, end): ... def getset(self, name, value) -> _StrType | None: ... - def incr(self, name: _Key, amount: int = ...) -> int: ... - def incrby(self, name: _Key, amount: int = ...) -> int: ... - def incrbyfloat(self, name: _Key, amount: float = ...) -> float: ... - def keys(self, pattern: _Key = ..., **kwargs: _CommandOptions) -> list[_StrType]: ... + def incr(self, name: _Key, amount: int = 1) -> int: ... + def incrby(self, name: _Key, amount: int = 1) -> int: ... + def incrbyfloat(self, name: _Key, amount: float = 1.0) -> float: ... + def keys(self, pattern: _Key = "*", **kwargs: _CommandOptions) -> list[_StrType]: ... def lmove( - self, first_list: _Key, second_list: _Key, src: Literal["LEFT", "RIGHT"] = ..., dest: Literal["LEFT", "RIGHT"] = ... + self, + first_list: _Key, + second_list: _Key, + src: Literal["LEFT", "RIGHT"] = "LEFT", + dest: Literal["LEFT", "RIGHT"] = "RIGHT", ) -> _Value: ... def blmove( self, first_list: _Key, second_list: _Key, timeout: float, - src: Literal["LEFT", "RIGHT"] = ..., - dest: Literal["LEFT", "RIGHT"] = ..., + src: Literal["LEFT", "RIGHT"] = "LEFT", + dest: Literal["LEFT", "RIGHT"] = "RIGHT", ) -> _Value | None: ... def mget(self, keys: _Key | Iterable[_Key], *args: _Key) -> list[_StrType | None]: ... def mset(self, mapping: Mapping[_Key, _Value]) -> Literal[True]: ... @@ -364,14 +368,14 @@ class BasicKeyCommands(Generic[_StrType]): def move(self, name: _Key, db: int) -> bool: ... def persist(self, name: _Key) -> bool: ... def pexpire( - self, name: _Key, time: int | timedelta, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ... + self, name: _Key, time: int | timedelta, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False ) -> Literal[1, 0]: ... def pexpireat( - self, name: _Key, when: int | datetime, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ... + self, name: _Key, when: int | datetime, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False ) -> Literal[1, 0]: ... def psetex(self, name, time_ms, value): ... def pttl(self, name: _Key) -> int: ... - def hrandfield(self, key, count: Incomplete | None = ..., withvalues: bool = ...): ... + def hrandfield(self, key, count: Incomplete | None = None, withvalues: bool = False): ... def randomkey(self, **kwargs: _CommandOptions): ... def rename(self, src, dst): ... def renamenx(self, src, dst): ... @@ -380,23 +384,23 @@ class BasicKeyCommands(Generic[_StrType]): name, ttl, value, - replace: bool = ..., - absttl: bool = ..., - idletime: Incomplete | None = ..., - frequency: Incomplete | None = ..., + replace: bool = False, + absttl: bool = False, + idletime: Incomplete | None = None, + frequency: Incomplete | None = None, ): ... def set( self, name: _Key, value: _Value, - ex: None | float | timedelta = ..., - px: None | float | timedelta = ..., - nx: bool = ..., - xx: bool = ..., - keepttl: bool = ..., - get: bool = ..., - exat: Incomplete | None = ..., - pxat: Incomplete | None = ..., + ex: None | float | timedelta = None, + px: None | float | timedelta = None, + nx: bool = False, + xx: bool = False, + keepttl: bool = False, + get: bool = False, + exat: Incomplete | None = None, + pxat: Incomplete | None = None, ) -> bool | None: ... def __setitem__(self, name, value) -> None: ... def setbit(self, name: _Key, offset: int, value: int) -> int: ... @@ -408,15 +412,15 @@ class BasicKeyCommands(Generic[_StrType]): algo, value1, value2, - specific_argument: str = ..., - len: bool = ..., - idx: bool = ..., - minmatchlen: Incomplete | None = ..., - withmatchlen: bool = ..., + specific_argument: str = "strings", + len: bool = False, + idx: bool = False, + minmatchlen: Incomplete | None = None, + withmatchlen: bool = False, **kwargs: _CommandOptions, ): ... def strlen(self, name): ... - def substr(self, name, start, end: int = ...): ... + def substr(self, name, start, end: int = -1): ... def touch(self, *args): ... def ttl(self, name: _Key) -> int: ... def type(self, name): ... @@ -426,48 +430,52 @@ class BasicKeyCommands(Generic[_StrType]): class AsyncBasicKeyCommands(Generic[_StrType]): async def append(self, key, value): ... - async def bitcount(self, key: _Key, start: int | None = ..., end: int | None = ..., mode: str | None = ...) -> int: ... - async def bitfield(self, key, default_overflow: Incomplete | None = ...): ... + async def bitcount(self, key: _Key, start: int | None = None, end: int | None = None, mode: str | None = None) -> int: ... + async def bitfield(self, key, default_overflow: Incomplete | None = None): ... async def bitop(self, operation, dest, *keys): ... - async def bitpos(self, key: _Key, bit: int, start: int | None = ..., end: int | None = ..., mode: str | None = ...): ... - async def copy(self, source, destination, destination_db: Incomplete | None = ..., replace: bool = ...): ... - async def decr(self, name, amount: int = ...) -> int: ... - async def decrby(self, name, amount: int = ...) -> int: ... + async def bitpos(self, key: _Key, bit: int, start: int | None = None, end: int | None = None, mode: str | None = None): ... + async def copy(self, source, destination, destination_db: Incomplete | None = None, replace: bool = False): ... + async def decr(self, name, amount: int = 1) -> int: ... + async def decrby(self, name, amount: int = 1) -> int: ... async def delete(self, *names: _Key) -> int: ... async def dump(self, name: _Key) -> _StrType | None: ... async def exists(self, *names: _Key) -> int: ... async def expire( - self, name: _Key, time: int | timedelta, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ... + self, name: _Key, time: int | timedelta, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False ) -> bool: ... - async def expireat(self, name, when, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ...): ... + async def expireat(self, name, when, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False): ... async def get(self, name: _Key) -> _StrType | None: ... async def getdel(self, name: _Key) -> _StrType | None: ... async def getex( self, name, - ex: Incomplete | None = ..., - px: Incomplete | None = ..., - exat: Incomplete | None = ..., - pxat: Incomplete | None = ..., - persist: bool = ..., + ex: Incomplete | None = None, + px: Incomplete | None = None, + exat: Incomplete | None = None, + pxat: Incomplete | None = None, + persist: bool = False, ): ... async def getbit(self, name: _Key, offset: int) -> int: ... async def getrange(self, key, start, end): ... async def getset(self, name, value) -> _StrType | None: ... - async def incr(self, name: _Key, amount: int = ...) -> int: ... - async def incrby(self, name: _Key, amount: int = ...) -> int: ... - async def incrbyfloat(self, name: _Key, amount: float = ...) -> float: ... - async def keys(self, pattern: _Key = ..., **kwargs: _CommandOptions) -> list[_StrType]: ... + async def incr(self, name: _Key, amount: int = 1) -> int: ... + async def incrby(self, name: _Key, amount: int = 1) -> int: ... + async def incrbyfloat(self, name: _Key, amount: float = 1.0) -> float: ... + async def keys(self, pattern: _Key = "*", **kwargs: _CommandOptions) -> list[_StrType]: ... async def lmove( - self, first_list: _Key, second_list: _Key, src: Literal["LEFT", "RIGHT"] = ..., dest: Literal["LEFT", "RIGHT"] = ... + self, + first_list: _Key, + second_list: _Key, + src: Literal["LEFT", "RIGHT"] = "LEFT", + dest: Literal["LEFT", "RIGHT"] = "RIGHT", ) -> _Value: ... async def blmove( self, first_list: _Key, second_list: _Key, timeout: float, - src: Literal["LEFT", "RIGHT"] = ..., - dest: Literal["LEFT", "RIGHT"] = ..., + src: Literal["LEFT", "RIGHT"] = "LEFT", + dest: Literal["LEFT", "RIGHT"] = "RIGHT", ) -> _Value | None: ... async def mget(self, keys: _Key | Iterable[_Key], *args: _Key) -> list[_StrType | None]: ... async def mset(self, mapping: Mapping[_Key, _Value]) -> Literal[True]: ... @@ -475,14 +483,14 @@ class AsyncBasicKeyCommands(Generic[_StrType]): async def move(self, name: _Key, db: int) -> bool: ... async def persist(self, name: _Key) -> bool: ... async def pexpire( - self, name: _Key, time: int | timedelta, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ... + self, name: _Key, time: int | timedelta, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False ) -> Literal[1, 0]: ... async def pexpireat( - self, name: _Key, when: int | datetime, nx: bool = ..., xx: bool = ..., gt: bool = ..., lt: bool = ... + self, name: _Key, when: int | datetime, nx: bool = False, xx: bool = False, gt: bool = False, lt: bool = False ) -> Literal[1, 0]: ... async def psetex(self, name, time_ms, value): ... async def pttl(self, name: _Key) -> int: ... - async def hrandfield(self, key, count: Incomplete | None = ..., withvalues: bool = ...): ... + async def hrandfield(self, key, count: Incomplete | None = None, withvalues: bool = False): ... async def randomkey(self, **kwargs: _CommandOptions): ... async def rename(self, src, dst): ... async def renamenx(self, src, dst): ... @@ -491,23 +499,23 @@ class AsyncBasicKeyCommands(Generic[_StrType]): name, ttl, value, - replace: bool = ..., - absttl: bool = ..., - idletime: Incomplete | None = ..., - frequency: Incomplete | None = ..., + replace: bool = False, + absttl: bool = False, + idletime: Incomplete | None = None, + frequency: Incomplete | None = None, ): ... async def set( self, name: _Key, value: _Value, - ex: None | float | timedelta = ..., - px: None | float | timedelta = ..., - nx: bool = ..., - xx: bool = ..., - keepttl: bool = ..., - get: bool = ..., - exat: Incomplete | None = ..., - pxat: Incomplete | None = ..., + ex: None | float | timedelta = None, + px: None | float | timedelta = None, + nx: bool = False, + xx: bool = False, + keepttl: bool = False, + get: bool = False, + exat: Incomplete | None = None, + pxat: Incomplete | None = None, ) -> bool | None: ... async def setbit(self, name: _Key, offset: int, value: int) -> int: ... async def setex(self, name: _Key, time: int | timedelta, value: _Value) -> bool: ... @@ -518,15 +526,15 @@ class AsyncBasicKeyCommands(Generic[_StrType]): algo, value1, value2, - specific_argument: str = ..., - len: bool = ..., - idx: bool = ..., - minmatchlen: Incomplete | None = ..., - withmatchlen: bool = ..., + specific_argument: str = "strings", + len: bool = False, + idx: bool = False, + minmatchlen: Incomplete | None = None, + withmatchlen: bool = False, **kwargs: _CommandOptions, ): ... async def strlen(self, name): ... - async def substr(self, name, start, end: int = ...): ... + async def substr(self, name, start, end: int = -1): ... async def touch(self, *args): ... async def ttl(self, name: _Key) -> int: ... async def type(self, name): ... @@ -540,59 +548,59 @@ class AsyncBasicKeyCommands(Generic[_StrType]): class ListCommands(Generic[_StrType]): @overload - def blpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = ...) -> tuple[_StrType, _StrType]: ... + def blpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = 0) -> tuple[_StrType, _StrType]: ... @overload def blpop(self, keys: _Value | Iterable[_Value], timeout: float) -> tuple[_StrType, _StrType] | None: ... @overload - def brpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = ...) -> tuple[_StrType, _StrType]: ... + def brpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = 0) -> tuple[_StrType, _StrType]: ... @overload def brpop(self, keys: _Value | Iterable[_Value], timeout: float) -> tuple[_StrType, _StrType] | None: ... - def brpoplpush(self, src, dst, timeout: int | None = ...): ... + def brpoplpush(self, src, dst, timeout: int | None = 0): ... def lindex(self, name: _Key, index: int) -> _StrType | None: ... def linsert( self, name: _Key, where: Literal["BEFORE", "AFTER", "before", "after"], refvalue: _Value, value: _Value ) -> int: ... def llen(self, name: _Key) -> int: ... - def lpop(self, name, count: int | None = ...): ... + def lpop(self, name, count: int | None = None): ... def lpush(self, name: _Value, *values: _Value) -> int: ... def lpushx(self, name, value): ... def lrange(self, name: _Key, start: int, end: int) -> list[_StrType]: ... def lrem(self, name: _Key, count: int, value: _Value) -> int: ... def lset(self, name: _Key, index: int, value: _Value) -> bool: ... def ltrim(self, name: _Key, start: int, end: int) -> bool: ... - def rpop(self, name, count: int | None = ...): ... + def rpop(self, name, count: int | None = None): ... def rpoplpush(self, src, dst): ... def rpush(self, name: _Value, *values: _Value) -> int: ... def rpushx(self, name, value): ... def lpos( - self, name, value, rank: Incomplete | None = ..., count: Incomplete | None = ..., maxlen: Incomplete | None = ... + self, name, value, rank: Incomplete | None = None, count: Incomplete | None = None, maxlen: Incomplete | None = None ): ... @overload def sort( self, name: _Key, - start: int | None = ..., - num: int | None = ..., - by: _Key | None = ..., - get: _Key | Sequence[_Key] | None = ..., - desc: bool = ..., - alpha: bool = ..., - store: None = ..., - groups: bool = ..., + start: int | None = None, + num: int | None = None, + by: _Key | None = None, + get: _Key | Sequence[_Key] | None = None, + desc: bool = False, + alpha: bool = False, + store: None = None, + groups: bool = False, ) -> list[_StrType]: ... @overload def sort( self, name: _Key, - start: int | None = ..., - num: int | None = ..., - by: _Key | None = ..., - get: _Key | Sequence[_Key] | None = ..., - desc: bool = ..., - alpha: bool = ..., + start: int | None = None, + num: int | None = None, + by: _Key | None = None, + get: _Key | Sequence[_Key] | None = None, + desc: bool = False, + alpha: bool = False, *, store: _Key, - groups: bool = ..., + groups: bool = False, ) -> int: ... @overload def sort( @@ -605,64 +613,64 @@ class ListCommands(Generic[_StrType]): desc: bool, alpha: bool, store: _Key, - groups: bool = ..., + groups: bool = False, ) -> int: ... class AsyncListCommands(Generic[_StrType]): @overload - async def blpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = ...) -> tuple[_StrType, _StrType]: ... + async def blpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = 0) -> tuple[_StrType, _StrType]: ... @overload async def blpop(self, keys: _Value | Iterable[_Value], timeout: float) -> tuple[_StrType, _StrType] | None: ... @overload - async def brpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = ...) -> tuple[_StrType, _StrType]: ... + async def brpop(self, keys: _Value | Iterable[_Value], timeout: Literal[0] | None = 0) -> tuple[_StrType, _StrType]: ... @overload async def brpop(self, keys: _Value | Iterable[_Value], timeout: float) -> tuple[_StrType, _StrType] | None: ... - async def brpoplpush(self, src, dst, timeout: int | None = ...): ... + async def brpoplpush(self, src, dst, timeout: int | None = 0): ... async def lindex(self, name: _Key, index: int) -> _StrType | None: ... async def linsert( self, name: _Key, where: Literal["BEFORE", "AFTER", "before", "after"], refvalue: _Value, value: _Value ) -> int: ... async def llen(self, name: _Key) -> int: ... - async def lpop(self, name, count: int | None = ...): ... + async def lpop(self, name, count: int | None = None): ... async def lpush(self, name: _Value, *values: _Value) -> int: ... async def lpushx(self, name, value): ... async def lrange(self, name: _Key, start: int, end: int) -> list[_StrType]: ... async def lrem(self, name: _Key, count: int, value: _Value) -> int: ... async def lset(self, name: _Key, index: int, value: _Value) -> bool: ... async def ltrim(self, name: _Key, start: int, end: int) -> bool: ... - async def rpop(self, name, count: int | None = ...): ... + async def rpop(self, name, count: int | None = None): ... async def rpoplpush(self, src, dst): ... async def rpush(self, name: _Value, *values: _Value) -> int: ... async def rpushx(self, name, value): ... async def lpos( - self, name, value, rank: Incomplete | None = ..., count: Incomplete | None = ..., maxlen: Incomplete | None = ... + self, name, value, rank: Incomplete | None = None, count: Incomplete | None = None, maxlen: Incomplete | None = None ): ... @overload async def sort( self, name: _Key, - start: int | None = ..., - num: int | None = ..., - by: _Key | None = ..., - get: _Key | Sequence[_Key] | None = ..., - desc: bool = ..., - alpha: bool = ..., - store: None = ..., - groups: bool = ..., + start: int | None = None, + num: int | None = None, + by: _Key | None = None, + get: _Key | Sequence[_Key] | None = None, + desc: bool = False, + alpha: bool = False, + store: None = None, + groups: bool = False, ) -> list[_StrType]: ... @overload async def sort( self, name: _Key, - start: int | None = ..., - num: int | None = ..., - by: _Key | None = ..., - get: _Key | Sequence[_Key] | None = ..., - desc: bool = ..., - alpha: bool = ..., + start: int | None = None, + num: int | None = None, + by: _Key | None = None, + get: _Key | Sequence[_Key] | None = None, + desc: bool = False, + alpha: bool = False, *, store: _Key, - groups: bool = ..., + groups: bool = False, ) -> int: ... @overload async def sort( @@ -675,42 +683,42 @@ class AsyncListCommands(Generic[_StrType]): desc: bool, alpha: bool, store: _Key, - groups: bool = ..., + groups: bool = False, ) -> int: ... class ScanCommands(Generic[_StrType]): def scan( self, - cursor: int = ..., - match: _Key | None = ..., - count: int | None = ..., - _type: str | None = ..., + cursor: int = 0, + match: _Key | None = None, + count: int | None = None, + _type: str | None = None, **kwargs: _CommandOptions, ) -> tuple[int, list[_StrType]]: ... def scan_iter( - self, match: _Key | None = ..., count: int | None = ..., _type: str | None = ..., **kwargs: _CommandOptions + self, match: _Key | None = None, count: int | None = None, _type: str | None = None, **kwargs: _CommandOptions ) -> Iterator[_StrType]: ... def sscan( - self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ... + self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None ) -> tuple[int, list[_StrType]]: ... - def sscan_iter(self, name: _Key, match: _Key | None = ..., count: int | None = ...) -> Iterator[_StrType]: ... + def sscan_iter(self, name: _Key, match: _Key | None = None, count: int | None = None) -> Iterator[_StrType]: ... def hscan( - self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ... + self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None ) -> tuple[int, dict[_StrType, _StrType]]: ... def hscan_iter( - self, name: _Key, match: _Key | None = ..., count: int | None = ... + self, name: _Key, match: _Key | None = None, count: int | None = None ) -> Iterator[tuple[_StrType, _StrType]]: ... @overload def zscan( - self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ... + self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None ) -> tuple[int, list[tuple[_StrType, float]]]: ... @overload def zscan( self, name: _Key, - cursor: int = ..., - match: _Key | None = ..., - count: int | None = ..., + cursor: int = 0, + match: _Key | None = None, + count: int | None = None, *, score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], ) -> tuple[int, list[tuple[_StrType, _ScoreCastFuncReturn]]]: ... @@ -724,13 +732,13 @@ class ScanCommands(Generic[_StrType]): score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], ) -> tuple[int, list[tuple[_StrType, _ScoreCastFuncReturn]]]: ... @overload - def zscan_iter(self, name: _Key, match: _Key | None = ..., count: int | None = ...) -> Iterator[tuple[_StrType, float]]: ... + def zscan_iter(self, name: _Key, match: _Key | None = None, count: int | None = None) -> Iterator[tuple[_StrType, float]]: ... @overload def zscan_iter( self, name: _Key, - match: _Key | None = ..., - count: int | None = ..., + match: _Key | None = None, + count: int | None = None, *, score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], ) -> Iterator[tuple[_StrType, _ScoreCastFuncReturn]]: ... @@ -742,36 +750,36 @@ class ScanCommands(Generic[_StrType]): class AsyncScanCommands(Generic[_StrType]): async def scan( self, - cursor: int = ..., - match: _Key | None = ..., - count: int | None = ..., - _type: str | None = ..., + cursor: int = 0, + match: _Key | None = None, + count: int | None = None, + _type: str | None = None, **kwargs: _CommandOptions, ) -> tuple[int, list[_StrType]]: ... def scan_iter( - self, match: _Key | None = ..., count: int | None = ..., _type: str | None = ..., **kwargs: _CommandOptions + self, match: _Key | None = None, count: int | None = None, _type: str | None = None, **kwargs: _CommandOptions ) -> AsyncIterator[_StrType]: ... async def sscan( - self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ... + self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None ) -> tuple[int, list[_StrType]]: ... - def sscan_iter(self, name: _Key, match: _Key | None = ..., count: int | None = ...) -> AsyncIterator[_StrType]: ... + def sscan_iter(self, name: _Key, match: _Key | None = None, count: int | None = None) -> AsyncIterator[_StrType]: ... async def hscan( - self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ... + self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None ) -> tuple[int, dict[_StrType, _StrType]]: ... def hscan_iter( - self, name: _Key, match: _Key | None = ..., count: int | None = ... + self, name: _Key, match: _Key | None = None, count: int | None = None ) -> AsyncIterator[tuple[_StrType, _StrType]]: ... @overload async def zscan( - self, name: _Key, cursor: int = ..., match: _Key | None = ..., count: int | None = ... + self, name: _Key, cursor: int = 0, match: _Key | None = None, count: int | None = None ) -> tuple[int, list[tuple[_StrType, float]]]: ... @overload async def zscan( self, name: _Key, - cursor: int = ..., - match: _Key | None = ..., - count: int | None = ..., + cursor: int = 0, + match: _Key | None = None, + count: int | None = None, *, score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], ) -> tuple[int, list[tuple[_StrType, _ScoreCastFuncReturn]]]: ... @@ -786,14 +794,14 @@ class AsyncScanCommands(Generic[_StrType]): ) -> tuple[int, list[tuple[_StrType, _ScoreCastFuncReturn]]]: ... @overload def zscan_iter( - self, name: _Key, match: _Key | None = ..., count: int | None = ... + self, name: _Key, match: _Key | None = None, count: int | None = None ) -> AsyncIterator[tuple[_StrType, float]]: ... @overload def zscan_iter( self, name: _Key, - match: _Key | None = ..., - count: int | None = ..., + match: _Key | None = None, + count: int | None = None, *, score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], ) -> AsyncIterator[tuple[_StrType, _ScoreCastFuncReturn]]: ... @@ -814,11 +822,11 @@ class SetCommands(Generic[_StrType]): def smismember(self, name, values, *args): ... def smove(self, src: _Key, dst: _Key, value: _Value) -> bool: ... @overload - def spop(self, name: _Key, count: None = ...) -> _Value | None: ... + def spop(self, name: _Key, count: None = None) -> _Value | None: ... @overload def spop(self, name: _Key, count: int) -> list[_Value]: ... @overload - def srandmember(self, name: _Key, number: None = ...) -> _Value | None: ... + def srandmember(self, name: _Key, number: None = None) -> _Value | None: ... @overload def srandmember(self, name: _Key, number: int) -> list[_Value]: ... def srem(self, name: _Key, *values: _Value) -> int: ... @@ -837,11 +845,11 @@ class AsyncSetCommands(Generic[_StrType]): async def smismember(self, name, values, *args): ... async def smove(self, src: _Key, dst: _Key, value: _Value) -> bool: ... @overload - async def spop(self, name: _Key, count: None = ...) -> _Value | None: ... + async def spop(self, name: _Key, count: None = None) -> _Value | None: ... @overload async def spop(self, name: _Key, count: int) -> list[_Value]: ... @overload - async def srandmember(self, name: _Key, number: None = ...) -> _Value | None: ... + async def srandmember(self, name: _Key, number: None = None) -> _Value | None: ... @overload async def srandmember(self, name: _Key, number: int) -> list[_Value]: ... async def srem(self, name: _Key, *values: _Value) -> int: ... @@ -854,12 +862,12 @@ class StreamCommands: self, name, fields, - id: str = ..., - maxlen=..., - approximate: bool = ..., - nomkstream: bool = ..., - minid: Incomplete | None = ..., - limit: Incomplete | None = ..., + id: str = "*", + maxlen=None, + approximate: bool = True, + nomkstream: bool = False, + minid: Incomplete | None = None, + limit: Incomplete | None = None, ): ... def xautoclaim( self, @@ -867,35 +875,51 @@ class StreamCommands: groupname, consumername, min_idle_time, - start_id: StreamIdT = ..., - count: Incomplete | None = ..., - justid: bool = ..., + start_id: StreamIdT = "0-0", + count: Incomplete | None = None, + justid: bool = False, ): ... def xclaim( - self, name, groupname, consumername, min_idle_time, message_ids, idle=..., time=..., retrycount=..., force=..., justid=... + self, + name, + groupname, + consumername, + min_idle_time, + message_ids, + idle=None, + time=None, + retrycount=None, + force=False, + justid=False, ): ... def xdel(self, name, *ids): ... - def xgroup_create(self, name, groupname, id: str = ..., mkstream: bool = ..., entries_read: int | None = ...): ... + def xgroup_create(self, name, groupname, id: str = "$", mkstream: bool = False, entries_read: int | None = None): ... def xgroup_delconsumer(self, name, groupname, consumername): ... def xgroup_destroy(self, name, groupname): ... def xgroup_createconsumer(self, name, groupname, consumername): ... - def xgroup_setid(self, name, groupname, id, entries_read: int | None = ...): ... + def xgroup_setid(self, name, groupname, id, entries_read: int | None = None): ... def xinfo_consumers(self, name, groupname): ... def xinfo_groups(self, name): ... - def xinfo_stream(self, name, full: bool = ...): ... + def xinfo_stream(self, name, full: bool = False): ... def xlen(self, name: _Key) -> int: ... def xpending(self, name, groupname): ... def xpending_range( - self, name: _Key, groupname, min, max, count: int, consumername: Incomplete | None = ..., idle: int | None = ... + self, name: _Key, groupname, min, max, count: int, consumername: Incomplete | None = None, idle: int | None = None ): ... - def xrange(self, name, min: str = ..., max: str = ..., count: Incomplete | None = ...): ... - def xread(self, streams, count: Incomplete | None = ..., block: Incomplete | None = ...): ... + def xrange(self, name, min: str = "-", max: str = "+", count: Incomplete | None = None): ... + def xread(self, streams, count: Incomplete | None = None, block: Incomplete | None = None): ... def xreadgroup( - self, groupname, consumername, streams, count: Incomplete | None = ..., block: Incomplete | None = ..., noack: bool = ... + self, + groupname, + consumername, + streams, + count: Incomplete | None = None, + block: Incomplete | None = None, + noack: bool = False, ): ... - def xrevrange(self, name, max: str = ..., min: str = ..., count: Incomplete | None = ...): ... + def xrevrange(self, name, max: str = "+", min: str = "-", count: Incomplete | None = None): ... def xtrim( - self, name, maxlen: int | None = ..., approximate: bool = ..., minid: Incomplete | None = ..., limit: int | None = ... + self, name, maxlen: int | None = None, approximate: bool = True, minid: Incomplete | None = None, limit: int | None = None ): ... class AsyncStreamCommands: @@ -904,12 +928,12 @@ class AsyncStreamCommands: self, name, fields, - id: str = ..., - maxlen=..., - approximate: bool = ..., - nomkstream: bool = ..., - minid: Incomplete | None = ..., - limit: Incomplete | None = ..., + id: str = "*", + maxlen=None, + approximate: bool = True, + nomkstream: bool = False, + minid: Incomplete | None = None, + limit: Incomplete | None = None, ): ... async def xautoclaim( self, @@ -917,35 +941,51 @@ class AsyncStreamCommands: groupname, consumername, min_idle_time, - start_id: StreamIdT = ..., - count: Incomplete | None = ..., - justid: bool = ..., + start_id: StreamIdT = "0-0", + count: Incomplete | None = None, + justid: bool = False, ): ... async def xclaim( - self, name, groupname, consumername, min_idle_time, message_ids, idle=..., time=..., retrycount=..., force=..., justid=... + self, + name, + groupname, + consumername, + min_idle_time, + message_ids, + idle=None, + time=None, + retrycount=None, + force=False, + justid=False, ): ... async def xdel(self, name, *ids): ... - async def xgroup_create(self, name, groupname, id: str = ..., mkstream: bool = ..., entries_read: int | None = ...): ... + async def xgroup_create(self, name, groupname, id: str = "$", mkstream: bool = False, entries_read: int | None = None): ... async def xgroup_delconsumer(self, name, groupname, consumername): ... async def xgroup_destroy(self, name, groupname): ... async def xgroup_createconsumer(self, name, groupname, consumername): ... - async def xgroup_setid(self, name, groupname, id, entries_read: int | None = ...): ... + async def xgroup_setid(self, name, groupname, id, entries_read: int | None = None): ... async def xinfo_consumers(self, name, groupname): ... async def xinfo_groups(self, name): ... - async def xinfo_stream(self, name, full: bool = ...): ... + async def xinfo_stream(self, name, full: bool = False): ... async def xlen(self, name: _Key) -> int: ... async def xpending(self, name, groupname): ... async def xpending_range( - self, name: _Key, groupname, min, max, count: int, consumername: Incomplete | None = ..., idle: int | None = ... + self, name: _Key, groupname, min, max, count: int, consumername: Incomplete | None = None, idle: int | None = None ): ... - async def xrange(self, name, min: str = ..., max: str = ..., count: Incomplete | None = ...): ... - async def xread(self, streams, count: Incomplete | None = ..., block: Incomplete | None = ...): ... + async def xrange(self, name, min: str = "-", max: str = "+", count: Incomplete | None = None): ... + async def xread(self, streams, count: Incomplete | None = None, block: Incomplete | None = None): ... async def xreadgroup( - self, groupname, consumername, streams, count: Incomplete | None = ..., block: Incomplete | None = ..., noack: bool = ... + self, + groupname, + consumername, + streams, + count: Incomplete | None = None, + block: Incomplete | None = None, + noack: bool = False, ): ... - async def xrevrange(self, name, max: str = ..., min: str = ..., count: Incomplete | None = ...): ... + async def xrevrange(self, name, max: str = "+", min: str = "-", count: Incomplete | None = None): ... async def xtrim( - self, name, maxlen: int | None = ..., approximate: bool = ..., minid: Incomplete | None = ..., limit: int | None = ... + self, name, maxlen: int | None = None, approximate: bool = True, minid: Incomplete | None = None, limit: int | None = None ): ... class SortedSetCommands(Generic[_StrType]): @@ -953,30 +993,30 @@ class SortedSetCommands(Generic[_StrType]): self, name: _Key, mapping: Mapping[_Key, _Value], - nx: bool = ..., - xx: bool = ..., - ch: bool = ..., - incr: bool = ..., - gt: Incomplete | None = ..., - lt: Incomplete | None = ..., + nx: bool = False, + xx: bool = False, + ch: bool = False, + incr: bool = False, + gt: Incomplete | None = False, + lt: Incomplete | None = False, ) -> int: ... def zcard(self, name: _Key) -> int: ... def zcount(self, name: _Key, min: _Value, max: _Value) -> int: ... - def zdiff(self, keys, withscores: bool = ...): ... + def zdiff(self, keys, withscores: bool = False): ... def zdiffstore(self, dest, keys): ... def zincrby(self, name: _Key, amount: float, value: _Value) -> float: ... - def zinter(self, keys, aggregate: Incomplete | None = ..., withscores: bool = ...): ... - def zinterstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = ...) -> int: ... + def zinter(self, keys, aggregate: Incomplete | None = None, withscores: bool = False): ... + def zinterstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None) -> int: ... def zlexcount(self, name: _Key, min: _Value, max: _Value) -> int: ... - def zpopmax(self, name: _Key, count: int | None = ...) -> list[tuple[_StrType, float]]: ... - def zpopmin(self, name: _Key, count: int | None = ...) -> list[tuple[_StrType, float]]: ... - def zrandmember(self, key, count: Incomplete | None = ..., withscores: bool = ...): ... + def zpopmax(self, name: _Key, count: int | None = None) -> list[tuple[_StrType, float]]: ... + def zpopmin(self, name: _Key, count: int | None = None) -> list[tuple[_StrType, float]]: ... + def zrandmember(self, key, count: Incomplete | None = None, withscores: bool = False): ... @overload - def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = ...) -> tuple[_StrType, _StrType, float]: ... + def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = 0) -> tuple[_StrType, _StrType, float]: ... @overload def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: float) -> tuple[_StrType, _StrType, float] | None: ... @overload - def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = ...) -> tuple[_StrType, _StrType, float]: ... + def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = 0) -> tuple[_StrType, _StrType, float]: ... @overload def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: float) -> tuple[_StrType, _StrType, float] | None: ... @overload @@ -988,10 +1028,10 @@ class SortedSetCommands(Generic[_StrType]): desc: bool, withscores: Literal[True], score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[tuple[_StrType, _ScoreCastFuncReturn]]: ... @overload def zrange( @@ -1002,10 +1042,10 @@ class SortedSetCommands(Generic[_StrType]): desc: bool, withscores: Literal[True], score_cast_func: Callable[[_StrType], float] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[tuple[_StrType, float]]: ... @overload def zrange( @@ -1016,10 +1056,10 @@ class SortedSetCommands(Generic[_StrType]): *, withscores: Literal[True], score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[tuple[_StrType, _ScoreCastFuncReturn]]: ... @overload def zrange( @@ -1030,10 +1070,10 @@ class SortedSetCommands(Generic[_StrType]): *, withscores: Literal[True], score_cast_func: Callable[[_StrType], float] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[tuple[_StrType, float]]: ... @overload def zrange( @@ -1041,13 +1081,13 @@ class SortedSetCommands(Generic[_StrType]): name: _Key, start: int, end: int, - desc: bool = ..., - withscores: bool = ..., + desc: bool = False, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[_StrType]: ... @overload def zrevrange( @@ -1062,7 +1102,7 @@ class SortedSetCommands(Generic[_StrType]): def zrevrange(self, name: _Key, start: int, end: int, withscores: Literal[True]) -> list[tuple[_StrType, float]]: ... @overload def zrevrange( - self, name: _Key, start: int, end: int, withscores: bool = ..., score_cast_func: Callable[[Any], Any] = ... + self, name: _Key, start: int, end: int, withscores: bool = False, score_cast_func: Callable[[Any], Any] = ... ) -> list[_StrType]: ... def zrangestore( self, @@ -1070,17 +1110,17 @@ class SortedSetCommands(Generic[_StrType]): name, start, end, - byscore: bool = ..., - bylex: bool = ..., - desc: bool = ..., - offset: Incomplete | None = ..., - num: Incomplete | None = ..., + byscore: bool = False, + bylex: bool = False, + desc: bool = False, + offset: Incomplete | None = None, + num: Incomplete | None = None, ): ... def zrangebylex( - self, name: _Key, min: _Value, max: _Value, start: int | None = ..., num: int | None = ... + self, name: _Key, min: _Value, max: _Value, start: int | None = None, num: int | None = None ) -> list[_StrType]: ... def zrevrangebylex( - self, name: _Key, max: _Value, min: _Value, start: int | None = ..., num: int | None = ... + self, name: _Key, max: _Value, min: _Value, start: int | None = None, num: int | None = None ) -> list[_StrType]: ... @overload def zrangebyscore( @@ -1088,15 +1128,15 @@ class SortedSetCommands(Generic[_StrType]): name: _Key, min: _Value, max: _Value, - start: int | None = ..., - num: int | None = ..., + start: int | None = None, + num: int | None = None, *, withscores: Literal[True], score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], ) -> list[tuple[_StrType, _ScoreCastFuncReturn]]: ... @overload def zrangebyscore( - self, name: _Key, min: _Value, max: _Value, start: int | None = ..., num: int | None = ..., *, withscores: Literal[True] + self, name: _Key, min: _Value, max: _Value, start: int | None = None, num: int | None = None, *, withscores: Literal[True] ) -> list[tuple[_StrType, float]]: ... @overload def zrangebyscore( @@ -1104,9 +1144,9 @@ class SortedSetCommands(Generic[_StrType]): name: _Key, min: _Value, max: _Value, - start: int | None = ..., - num: int | None = ..., - withscores: bool = ..., + start: int | None = None, + num: int | None = None, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> list[_StrType]: ... @overload @@ -1115,15 +1155,15 @@ class SortedSetCommands(Generic[_StrType]): name: _Key, max: _Value, min: _Value, - start: int | None = ..., - num: int | None = ..., + start: int | None = None, + num: int | None = None, *, withscores: Literal[True], score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], ) -> list[tuple[_StrType, _ScoreCastFuncReturn]]: ... @overload def zrevrangebyscore( - self, name: _Key, max: _Value, min: _Value, start: int | None = ..., num: int | None = ..., *, withscores: Literal[True] + self, name: _Key, max: _Value, min: _Value, start: int | None = None, num: int | None = None, *, withscores: Literal[True] ) -> list[tuple[_StrType, float]]: ... @overload def zrevrangebyscore( @@ -1131,9 +1171,9 @@ class SortedSetCommands(Generic[_StrType]): name: _Key, max: _Value, min: _Value, - start: int | None = ..., - num: int | None = ..., - withscores: bool = ..., + start: int | None = None, + num: int | None = None, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> list[_StrType]: ... def zrank(self, name: _Key, value: _Value) -> int | None: ... @@ -1143,8 +1183,8 @@ class SortedSetCommands(Generic[_StrType]): def zremrangebyscore(self, name: _Key, min: _Value, max: _Value) -> int: ... def zrevrank(self, name: _Key, value: _Value) -> int | None: ... def zscore(self, name: _Key, value: _Value) -> float | None: ... - def zunion(self, keys, aggregate: Incomplete | None = ..., withscores: bool = ...): ... - def zunionstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = ...) -> int: ... + def zunion(self, keys, aggregate: Incomplete | None = None, withscores: bool = False): ... + def zunionstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None) -> int: ... def zmscore(self, key, members): ... class AsyncSortedSetCommands(Generic[_StrType]): @@ -1152,32 +1192,32 @@ class AsyncSortedSetCommands(Generic[_StrType]): self, name: _Key, mapping: Mapping[_Key, _Value], - nx: bool = ..., - xx: bool = ..., - ch: bool = ..., - incr: bool = ..., - gt: Incomplete | None = ..., - lt: Incomplete | None = ..., + nx: bool = False, + xx: bool = False, + ch: bool = False, + incr: bool = False, + gt: Incomplete | None = False, + lt: Incomplete | None = False, ) -> int: ... async def zcard(self, name: _Key) -> int: ... async def zcount(self, name: _Key, min: _Value, max: _Value) -> int: ... - async def zdiff(self, keys, withscores: bool = ...): ... + async def zdiff(self, keys, withscores: bool = False): ... async def zdiffstore(self, dest, keys): ... async def zincrby(self, name: _Key, amount: float, value: _Value) -> float: ... - async def zinter(self, keys, aggregate: Incomplete | None = ..., withscores: bool = ...): ... + async def zinter(self, keys, aggregate: Incomplete | None = None, withscores: bool = False): ... async def zinterstore( - self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = ... + self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None ) -> int: ... async def zlexcount(self, name: _Key, min: _Value, max: _Value) -> int: ... - async def zpopmax(self, name: _Key, count: int | None = ...) -> list[tuple[_StrType, float]]: ... - async def zpopmin(self, name: _Key, count: int | None = ...) -> list[tuple[_StrType, float]]: ... - async def zrandmember(self, key, count: Incomplete | None = ..., withscores: bool = ...): ... + async def zpopmax(self, name: _Key, count: int | None = None) -> list[tuple[_StrType, float]]: ... + async def zpopmin(self, name: _Key, count: int | None = None) -> list[tuple[_StrType, float]]: ... + async def zrandmember(self, key, count: Incomplete | None = None, withscores: bool = False): ... @overload - async def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = ...) -> tuple[_StrType, _StrType, float]: ... + async def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = 0) -> tuple[_StrType, _StrType, float]: ... @overload async def bzpopmax(self, keys: _Key | Iterable[_Key], timeout: float) -> tuple[_StrType, _StrType, float] | None: ... @overload - async def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = ...) -> tuple[_StrType, _StrType, float]: ... + async def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: Literal[0] = 0) -> tuple[_StrType, _StrType, float]: ... @overload async def bzpopmin(self, keys: _Key | Iterable[_Key], timeout: float) -> tuple[_StrType, _StrType, float] | None: ... @overload @@ -1189,10 +1229,10 @@ class AsyncSortedSetCommands(Generic[_StrType]): desc: bool, withscores: Literal[True], score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[tuple[_StrType, _ScoreCastFuncReturn]]: ... @overload async def zrange( @@ -1203,10 +1243,10 @@ class AsyncSortedSetCommands(Generic[_StrType]): desc: bool, withscores: Literal[True], score_cast_func: Callable[[_StrType], float] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[tuple[_StrType, float]]: ... @overload async def zrange( @@ -1214,14 +1254,14 @@ class AsyncSortedSetCommands(Generic[_StrType]): name: _Key, start: int, end: int, - desc: bool = ..., + desc: bool = False, *, withscores: Literal[True], score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[tuple[_StrType, _ScoreCastFuncReturn]]: ... @overload async def zrange( @@ -1229,14 +1269,14 @@ class AsyncSortedSetCommands(Generic[_StrType]): name: _Key, start: int, end: int, - desc: bool = ..., + desc: bool = False, *, withscores: Literal[True], score_cast_func: Callable[[_StrType], float] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[tuple[_StrType, float]]: ... @overload async def zrange( @@ -1244,13 +1284,13 @@ class AsyncSortedSetCommands(Generic[_StrType]): name: _Key, start: int, end: int, - desc: bool = ..., - withscores: bool = ..., + desc: bool = False, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., - byscore: bool = ..., - bylex: bool = ..., - offset: int | None = ..., - num: int | None = ..., + byscore: bool = False, + bylex: bool = False, + offset: int | None = None, + num: int | None = None, ) -> list[_StrType]: ... @overload async def zrevrange( @@ -1265,7 +1305,7 @@ class AsyncSortedSetCommands(Generic[_StrType]): async def zrevrange(self, name: _Key, start: int, end: int, withscores: Literal[True]) -> list[tuple[_StrType, float]]: ... @overload async def zrevrange( - self, name: _Key, start: int, end: int, withscores: bool = ..., score_cast_func: Callable[[Any], Any] = ... + self, name: _Key, start: int, end: int, withscores: bool = False, score_cast_func: Callable[[Any], Any] = ... ) -> list[_StrType]: ... async def zrangestore( self, @@ -1273,17 +1313,17 @@ class AsyncSortedSetCommands(Generic[_StrType]): name, start, end, - byscore: bool = ..., - bylex: bool = ..., - desc: bool = ..., - offset: Incomplete | None = ..., - num: Incomplete | None = ..., + byscore: bool = False, + bylex: bool = False, + desc: bool = False, + offset: Incomplete | None = None, + num: Incomplete | None = None, ): ... async def zrangebylex( - self, name: _Key, min: _Value, max: _Value, start: int | None = ..., num: int | None = ... + self, name: _Key, min: _Value, max: _Value, start: int | None = None, num: int | None = None ) -> list[_StrType]: ... async def zrevrangebylex( - self, name: _Key, max: _Value, min: _Value, start: int | None = ..., num: int | None = ... + self, name: _Key, max: _Value, min: _Value, start: int | None = None, num: int | None = None ) -> list[_StrType]: ... @overload async def zrangebyscore( @@ -1291,15 +1331,15 @@ class AsyncSortedSetCommands(Generic[_StrType]): name: _Key, min: _Value, max: _Value, - start: int | None = ..., - num: int | None = ..., + start: int | None = None, + num: int | None = None, *, withscores: Literal[True], score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], ) -> list[tuple[_StrType, _ScoreCastFuncReturn]]: ... @overload async def zrangebyscore( - self, name: _Key, min: _Value, max: _Value, start: int | None = ..., num: int | None = ..., *, withscores: Literal[True] + self, name: _Key, min: _Value, max: _Value, start: int | None = None, num: int | None = None, *, withscores: Literal[True] ) -> list[tuple[_StrType, float]]: ... @overload async def zrangebyscore( @@ -1307,9 +1347,9 @@ class AsyncSortedSetCommands(Generic[_StrType]): name: _Key, min: _Value, max: _Value, - start: int | None = ..., - num: int | None = ..., - withscores: bool = ..., + start: int | None = None, + num: int | None = None, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> list[_StrType]: ... @overload @@ -1318,15 +1358,15 @@ class AsyncSortedSetCommands(Generic[_StrType]): name: _Key, max: _Value, min: _Value, - start: int | None = ..., - num: int | None = ..., + start: int | None = None, + num: int | None = None, *, withscores: Literal[True], score_cast_func: Callable[[_StrType], _ScoreCastFuncReturn], ) -> list[tuple[_StrType, _ScoreCastFuncReturn]]: ... @overload async def zrevrangebyscore( - self, name: _Key, max: _Value, min: _Value, start: int | None = ..., num: int | None = ..., *, withscores: Literal[True] + self, name: _Key, max: _Value, min: _Value, start: int | None = None, num: int | None = None, *, withscores: Literal[True] ) -> list[tuple[_StrType, float]]: ... @overload async def zrevrangebyscore( @@ -1334,9 +1374,9 @@ class AsyncSortedSetCommands(Generic[_StrType]): name: _Key, max: _Value, min: _Value, - start: int | None = ..., - num: int | None = ..., - withscores: bool = ..., + start: int | None = None, + num: int | None = None, + withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> list[_StrType]: ... async def zrank(self, name: _Key, value: _Value) -> int | None: ... @@ -1346,9 +1386,9 @@ class AsyncSortedSetCommands(Generic[_StrType]): async def zremrangebyscore(self, name: _Key, min: _Value, max: _Value) -> int: ... async def zrevrank(self, name: _Key, value: _Value) -> int | None: ... async def zscore(self, name: _Key, value: _Value) -> float | None: ... - async def zunion(self, keys, aggregate: Incomplete | None = ..., withscores: bool = ...): ... + async def zunion(self, keys, aggregate: Incomplete | None = None, withscores: bool = False): ... async def zunionstore( - self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = ... + self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None ) -> int: ... async def zmscore(self, key, members): ... @@ -1367,18 +1407,20 @@ class HashCommands(Generic[_StrType]): def hexists(self, name: _Key, key: _Key) -> bool: ... def hget(self, name: _Key, key: _Key) -> _StrType | None: ... def hgetall(self, name: _Key) -> dict[_StrType, _StrType]: ... - def hincrby(self, name: _Key, key: _Key, amount: int = ...) -> int: ... - def hincrbyfloat(self, name: _Key, key: _Key, amount: float = ...) -> float: ... + def hincrby(self, name: _Key, key: _Key, amount: int = 1) -> int: ... + def hincrbyfloat(self, name: _Key, key: _Key, amount: float = 1.0) -> float: ... def hkeys(self, name: _Key) -> list[_StrType]: ... def hlen(self, name: _Key) -> int: ... @overload def hset( - self, name: _Key, key: _Key, value: _Value, mapping: Mapping[_Key, _Value] | None = ..., items: Incomplete | None = ... + self, name: _Key, key: _Key, value: _Value, mapping: Mapping[_Key, _Value] | None = None, items: Incomplete | None = None ) -> int: ... @overload - def hset(self, name: _Key, key: None, value: None, mapping: Mapping[_Key, _Value], items: Incomplete | None = ...) -> int: ... + def hset( + self, name: _Key, key: None, value: None, mapping: Mapping[_Key, _Value], items: Incomplete | None = None + ) -> int: ... @overload - def hset(self, name: _Key, *, mapping: Mapping[_Key, _Value], items: Incomplete | None = ...) -> int: ... + def hset(self, name: _Key, *, mapping: Mapping[_Key, _Value], items: Incomplete | None = None) -> int: ... def hsetnx(self, name: _Key, key: _Key, value: _Value) -> int: ... def hmset(self, name: _Key, mapping: Mapping[_Key, _Value]) -> bool: ... def hmget(self, name: _Key, keys: _Key | Iterable[_Key], *args: _Key) -> list[_StrType | None]: ... @@ -1390,20 +1432,20 @@ class AsyncHashCommands(Generic[_StrType]): async def hexists(self, name: _Key, key: _Key) -> bool: ... async def hget(self, name: _Key, key: _Key) -> _StrType | None: ... async def hgetall(self, name: _Key) -> dict[_StrType, _StrType]: ... - async def hincrby(self, name: _Key, key: _Key, amount: int = ...) -> int: ... - async def hincrbyfloat(self, name: _Key, key: _Key, amount: float = ...) -> float: ... + async def hincrby(self, name: _Key, key: _Key, amount: int = 1) -> int: ... + async def hincrbyfloat(self, name: _Key, key: _Key, amount: float = 1.0) -> float: ... async def hkeys(self, name: _Key) -> list[_StrType]: ... async def hlen(self, name: _Key) -> int: ... @overload async def hset( - self, name: _Key, key: _Key, value: _Value, mapping: Mapping[_Key, _Value] | None = ..., items: Incomplete | None = ... + self, name: _Key, key: _Key, value: _Value, mapping: Mapping[_Key, _Value] | None = None, items: Incomplete | None = None ) -> int: ... @overload async def hset( - self, name: _Key, key: None, value: None, mapping: Mapping[_Key, _Value], items: Incomplete | None = ... + self, name: _Key, key: None, value: None, mapping: Mapping[_Key, _Value], items: Incomplete | None = None ) -> int: ... @overload - async def hset(self, name: _Key, *, mapping: Mapping[_Key, _Value], items: Incomplete | None = ...) -> int: ... + async def hset(self, name: _Key, *, mapping: Mapping[_Key, _Value], items: Incomplete | None = None) -> int: ... async def hsetnx(self, name: _Key, key: _Key, value: _Value) -> int: ... async def hmset(self, name: _Key, mapping: Mapping[_Key, _Value]) -> bool: ... async def hmget(self, name: _Key, keys: _Key | Iterable[_Key], *args: _Key) -> list[_StrType | None]: ... @@ -1413,18 +1455,18 @@ class AsyncHashCommands(Generic[_StrType]): class AsyncScript: def __init__(self, registered_client: AsyncRedis[Any], script: ScriptTextT) -> None: ... async def __call__( - self, keys: Sequence[KeyT] | None = ..., args: Iterable[EncodableT] | None = ..., client: AsyncRedis[Any] | None = ... + self, keys: Sequence[KeyT] | None = None, args: Iterable[EncodableT] | None = None, client: AsyncRedis[Any] | None = None ): ... class PubSubCommands: def publish(self, channel: _Key, message: _Key, **kwargs: _CommandOptions) -> int: ... - def pubsub_channels(self, pattern: _Key = ..., **kwargs: _CommandOptions) -> list[str]: ... + def pubsub_channels(self, pattern: _Key = "*", **kwargs: _CommandOptions) -> list[str]: ... def pubsub_numpat(self, **kwargs: _CommandOptions) -> int: ... def pubsub_numsub(self, *args: _Key, **kwargs: _CommandOptions) -> list[tuple[str, int]]: ... class AsyncPubSubCommands: async def publish(self, channel: _Key, message: _Key, **kwargs: _CommandOptions) -> int: ... - async def pubsub_channels(self, pattern: _Key = ..., **kwargs: _CommandOptions) -> list[str]: ... + async def pubsub_channels(self, pattern: _Key = "*", **kwargs: _CommandOptions) -> list[str]: ... async def pubsub_numpat(self, **kwargs: _CommandOptions) -> int: ... async def pubsub_numsub(self, *args: _Key, **kwargs: _CommandOptions) -> list[tuple[str, int]]: ... @@ -1433,7 +1475,7 @@ class ScriptCommands(Generic[_StrType]): def evalsha(self, sha, numkeys, *keys_and_args): ... def script_exists(self, *args): ... def script_debug(self, *args): ... - def script_flush(self, sync_type: Incomplete | None = ...): ... + def script_flush(self, sync_type: Incomplete | None = None): ... def script_kill(self): ... def script_load(self, script): ... def register_script(self, script: str | _StrType) -> Script: ... @@ -1443,14 +1485,14 @@ class AsyncScriptCommands(Generic[_StrType]): async def evalsha(self, sha, numkeys, *keys_and_args): ... async def script_exists(self, *args): ... async def script_debug(self, *args): ... - async def script_flush(self, sync_type: Incomplete | None = ...): ... + async def script_flush(self, sync_type: Incomplete | None = None): ... async def script_kill(self): ... async def script_load(self, script): ... def register_script(self, script: ScriptTextT) -> AsyncScript: ... # type: ignore[override] class GeoCommands: - def geoadd(self, name, values, nx: bool = ..., xx: bool = ..., ch: bool = ...): ... - def geodist(self, name, place1, place2, unit: Incomplete | None = ...): ... + def geoadd(self, name, values, nx: bool = False, xx: bool = False, ch: bool = False): ... + def geodist(self, name, place1, place2, unit: Incomplete | None = None): ... def geohash(self, name, *values): ... def geopos(self, name, *values): ... def georadius( @@ -1459,68 +1501,68 @@ class GeoCommands: longitude, latitude, radius, - unit: Incomplete | None = ..., - withdist: bool = ..., - withcoord: bool = ..., - withhash: bool = ..., - count: Incomplete | None = ..., - sort: Incomplete | None = ..., - store: Incomplete | None = ..., - store_dist: Incomplete | None = ..., - any: bool = ..., + unit: Incomplete | None = None, + withdist: bool = False, + withcoord: bool = False, + withhash: bool = False, + count: Incomplete | None = None, + sort: Incomplete | None = None, + store: Incomplete | None = None, + store_dist: Incomplete | None = None, + any: bool = False, ): ... def georadiusbymember( self, name, member, radius, - unit: Incomplete | None = ..., - withdist: bool = ..., - withcoord: bool = ..., - withhash: bool = ..., - count: Incomplete | None = ..., - sort: Incomplete | None = ..., - store: Incomplete | None = ..., - store_dist: Incomplete | None = ..., - any: bool = ..., + unit: Incomplete | None = None, + withdist: bool = False, + withcoord: bool = False, + withhash: bool = False, + count: Incomplete | None = None, + sort: Incomplete | None = None, + store: Incomplete | None = None, + store_dist: Incomplete | None = None, + any: bool = False, ): ... def geosearch( self, name, - member: Incomplete | None = ..., - longitude: Incomplete | None = ..., - latitude: Incomplete | None = ..., - unit: str = ..., - radius: Incomplete | None = ..., - width: Incomplete | None = ..., - height: Incomplete | None = ..., - sort: Incomplete | None = ..., - count: Incomplete | None = ..., - any: bool = ..., - withcoord: bool = ..., - withdist: bool = ..., - withhash: bool = ..., + member: Incomplete | None = None, + longitude: Incomplete | None = None, + latitude: Incomplete | None = None, + unit: str = "m", + radius: Incomplete | None = None, + width: Incomplete | None = None, + height: Incomplete | None = None, + sort: Incomplete | None = None, + count: Incomplete | None = None, + any: bool = False, + withcoord: bool = False, + withdist: bool = False, + withhash: bool = False, ): ... def geosearchstore( self, dest, name, - member: Incomplete | None = ..., - longitude: Incomplete | None = ..., - latitude: Incomplete | None = ..., - unit: str = ..., - radius: Incomplete | None = ..., - width: Incomplete | None = ..., - height: Incomplete | None = ..., - sort: Incomplete | None = ..., - count: Incomplete | None = ..., - any: bool = ..., - storedist: bool = ..., + member: Incomplete | None = None, + longitude: Incomplete | None = None, + latitude: Incomplete | None = None, + unit: str = "m", + radius: Incomplete | None = None, + width: Incomplete | None = None, + height: Incomplete | None = None, + sort: Incomplete | None = None, + count: Incomplete | None = None, + any: bool = False, + storedist: bool = False, ): ... class AsyncGeoCommands: - async def geoadd(self, name, values, nx: bool = ..., xx: bool = ..., ch: bool = ...): ... - async def geodist(self, name, place1, place2, unit: Incomplete | None = ...): ... + async def geoadd(self, name, values, nx: bool = False, xx: bool = False, ch: bool = False): ... + async def geodist(self, name, place1, place2, unit: Incomplete | None = None): ... async def geohash(self, name, *values): ... async def geopos(self, name, *values): ... async def georadius( @@ -1529,63 +1571,63 @@ class AsyncGeoCommands: longitude, latitude, radius, - unit: Incomplete | None = ..., - withdist: bool = ..., - withcoord: bool = ..., - withhash: bool = ..., - count: Incomplete | None = ..., - sort: Incomplete | None = ..., - store: Incomplete | None = ..., - store_dist: Incomplete | None = ..., - any: bool = ..., + unit: Incomplete | None = None, + withdist: bool = False, + withcoord: bool = False, + withhash: bool = False, + count: Incomplete | None = None, + sort: Incomplete | None = None, + store: Incomplete | None = None, + store_dist: Incomplete | None = None, + any: bool = False, ): ... async def georadiusbymember( self, name, member, radius, - unit: Incomplete | None = ..., - withdist: bool = ..., - withcoord: bool = ..., - withhash: bool = ..., - count: Incomplete | None = ..., - sort: Incomplete | None = ..., - store: Incomplete | None = ..., - store_dist: Incomplete | None = ..., - any: bool = ..., + unit: Incomplete | None = None, + withdist: bool = False, + withcoord: bool = False, + withhash: bool = False, + count: Incomplete | None = None, + sort: Incomplete | None = None, + store: Incomplete | None = None, + store_dist: Incomplete | None = None, + any: bool = False, ): ... async def geosearch( self, name, - member: Incomplete | None = ..., - longitude: Incomplete | None = ..., - latitude: Incomplete | None = ..., - unit: str = ..., - radius: Incomplete | None = ..., - width: Incomplete | None = ..., - height: Incomplete | None = ..., - sort: Incomplete | None = ..., - count: Incomplete | None = ..., - any: bool = ..., - withcoord: bool = ..., - withdist: bool = ..., - withhash: bool = ..., + member: Incomplete | None = None, + longitude: Incomplete | None = None, + latitude: Incomplete | None = None, + unit: str = "m", + radius: Incomplete | None = None, + width: Incomplete | None = None, + height: Incomplete | None = None, + sort: Incomplete | None = None, + count: Incomplete | None = None, + any: bool = False, + withcoord: bool = False, + withdist: bool = False, + withhash: bool = False, ): ... async def geosearchstore( self, dest, name, - member: Incomplete | None = ..., - longitude: Incomplete | None = ..., - latitude: Incomplete | None = ..., - unit: str = ..., - radius: Incomplete | None = ..., - width: Incomplete | None = ..., - height: Incomplete | None = ..., - sort: Incomplete | None = ..., - count: Incomplete | None = ..., - any: bool = ..., - storedist: bool = ..., + member: Incomplete | None = None, + longitude: Incomplete | None = None, + latitude: Incomplete | None = None, + unit: str = "m", + radius: Incomplete | None = None, + width: Incomplete | None = None, + height: Incomplete | None = None, + sort: Incomplete | None = None, + count: Incomplete | None = None, + any: bool = False, + storedist: bool = False, ): ... class ModuleCommands: @@ -1599,13 +1641,13 @@ class ModuleCommands: class Script: def __init__(self, registered_client, script) -> None: ... - def __call__(self, keys=..., args=..., client: Incomplete | None = ...): ... + def __call__(self, keys=[], args=[], client: Incomplete | None = None): ... class BitFieldOperation: - def __init__(self, client, key, default_overflow: Incomplete | None = ...): ... + def __init__(self, client, key, default_overflow: Incomplete | None = None): ... def reset(self) -> None: ... def overflow(self, overflow): ... - def incrby(self, fmt, offset, increment, overflow: Incomplete | None = ...): ... + def incrby(self, fmt, offset, increment, overflow: Incomplete | None = None): ... def get(self, fmt, offset): ... def set(self, fmt, offset, value): ... @property @@ -1626,26 +1668,28 @@ class AsyncClusterCommands: async def readonly(self, **kwargs: _CommandOptions) -> bool: ... class FunctionCommands: - def function_load(self, code: str, replace: bool | None = ...) -> Awaitable[str] | str: ... + def function_load(self, code: str, replace: bool | None = False) -> Awaitable[str] | str: ... def function_delete(self, library: str) -> Awaitable[str] | str: ... - def function_flush(self, mode: str = ...) -> Awaitable[str] | str: ... - def function_list(self, library: str | None = ..., withcode: bool | None = ...) -> Awaitable[list[Any]] | list[Any]: ... + def function_flush(self, mode: str = "SYNC") -> Awaitable[str] | str: ... + def function_list(self, library: str | None = "*", withcode: bool | None = False) -> Awaitable[list[Any]] | list[Any]: ... def fcall(self, function, numkeys: int, *keys_and_args: list[Any] | None) -> Awaitable[str] | str: ... def fcall_ro(self, function, numkeys: int, *keys_and_args: list[Any] | None) -> Awaitable[str] | str: ... def function_dump(self) -> Awaitable[str] | str: ... - def function_restore(self, payload: str, policy: str | None = ...) -> Awaitable[str] | str: ... + def function_restore(self, payload: str, policy: str | None = "APPEND") -> Awaitable[str] | str: ... def function_kill(self) -> Awaitable[str] | str: ... def function_stats(self) -> Awaitable[list[Any]] | list[Any]: ... class AsyncFunctionCommands: - async def function_load(self, code: str, replace: bool | None = ...) -> Awaitable[str] | str: ... + async def function_load(self, code: str, replace: bool | None = False) -> Awaitable[str] | str: ... async def function_delete(self, library: str) -> Awaitable[str] | str: ... - async def function_flush(self, mode: str = ...) -> Awaitable[str] | str: ... - async def function_list(self, library: str | None = ..., withcode: bool | None = ...) -> Awaitable[list[Any]] | list[Any]: ... + async def function_flush(self, mode: str = "SYNC") -> Awaitable[str] | str: ... + async def function_list( + self, library: str | None = "*", withcode: bool | None = False + ) -> Awaitable[list[Any]] | list[Any]: ... async def fcall(self, function, numkeys: int, *keys_and_args: list[Any] | None) -> Awaitable[str] | str: ... async def fcall_ro(self, function, numkeys: int, *keys_and_args: list[Any] | None) -> Awaitable[str] | str: ... async def function_dump(self) -> Awaitable[str] | str: ... - async def function_restore(self, payload: str, policy: str | None = ...) -> Awaitable[str] | str: ... + async def function_restore(self, payload: str, policy: str | None = "APPEND") -> Awaitable[str] | str: ... async def function_kill(self) -> Awaitable[str] | str: ... async def function_stats(self) -> Awaitable[list[Any]] | list[Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/__init__.pyi index 2586aedbc..a8209b8dc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/__init__.pyi @@ -20,7 +20,7 @@ class Graph(GraphCommands): def get_property(self, idx): ... def add_node(self, node) -> None: ... def add_edge(self, edge) -> None: ... - def call_procedure(self, procedure, *args, read_only: bool = ..., **kwagrs): ... + def call_procedure(self, procedure, *args, read_only: bool = False, **kwagrs): ... def labels(self): ... def relationship_types(self): ... def property_keys(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/commands.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/commands.pyi index b5ccf8519..b57418ddd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/commands.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/commands.pyi @@ -5,16 +5,21 @@ class GraphCommands: def commit(self): ... version: Any def query( - self, q, params: Incomplete | None = ..., timeout: Incomplete | None = ..., read_only: bool = ..., profile: bool = ... + self, + q, + params: Incomplete | None = None, + timeout: Incomplete | None = None, + read_only: bool = False, + profile: bool = False, ): ... def merge(self, pattern): ... def delete(self): ... nodes: Any edges: Any def flush(self) -> None: ... - def explain(self, query, params: Incomplete | None = ...): ... + def explain(self, query, params: Incomplete | None = None): ... def bulk(self, **kwargs) -> None: ... def profile(self, query): ... def slowlog(self): ... - def config(self, name, value: Incomplete | None = ..., set: bool = ...): ... + def config(self, name, value: Incomplete | None = None, set: bool = False): ... def list_keys(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/edge.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/edge.pyi index 159755792..3bd36b65f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/edge.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/edge.pyi @@ -8,7 +8,7 @@ class Edge: src_node: Any dest_node: Any def __init__( - self, src_node, relation, dest_node, edge_id: Incomplete | None = ..., properties: Incomplete | None = ... + self, src_node, relation, dest_node, edge_id: Incomplete | None = None, properties: Incomplete | None = None ) -> None: ... def to_string(self): ... def __eq__(self, rhs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/node.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/node.pyi index 9160daee9..e7a65537b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/node.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/node.pyi @@ -9,10 +9,10 @@ class Node: properties: Any def __init__( self, - node_id: Incomplete | None = ..., - alias: Incomplete | None = ..., - label: str | list[str] | None = ..., - properties: Incomplete | None = ..., + node_id: Incomplete | None = None, + alias: Incomplete | None = None, + label: str | list[str] | None = None, + properties: Incomplete | None = None, ) -> None: ... def to_string(self): ... def __eq__(self, rhs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/query_result.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/query_result.pyi index 53cf3ebf4..446d67196 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/query_result.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/graph/query_result.pyi @@ -37,7 +37,7 @@ class QueryResult: graph: Any header: Any result_set: Any - def __init__(self, graph, response, profile: bool = ...) -> None: ... + def __init__(self, graph, response, profile: bool = False) -> None: ... def parse_results(self, raw_result_set) -> None: ... statistics: Any def parse_statistics(self, raw_statistics) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/helpers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/helpers.pyi index ec1bb28b2..b4e5ac7f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/helpers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/helpers.pyi @@ -4,7 +4,7 @@ def delist(x): ... def parse_to_list(response): ... def parse_list_to_dict(response): ... def parse_to_dict(response): ... -def random_string(length: int = ...) -> str: ... +def random_string(length: int = 10) -> str: ... def quote_string(v): ... def decode_dict_keys(obj): ... def stringify_param_value(value): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/json/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/json/__init__.pyi index ef69aceb6..f9e8825b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/json/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/json/__init__.pyi @@ -9,7 +9,7 @@ class JSON(JSONCommands): client: Any execute_command: Any MODULE_VERSION: Incomplete | None - def __init__(self, client, version: Incomplete | None = ..., decoder=..., encoder=...) -> None: ... - def pipeline(self, transaction: bool = ..., shard_hint: Incomplete | None = ...) -> Pipeline: ... + def __init__(self, client, version: Incomplete | None = None, decoder=..., encoder=...) -> None: ... + def pipeline(self, transaction: bool = True, shard_hint: Incomplete | None = None) -> Pipeline: ... class Pipeline(JSONCommands, ClientPipeline[Incomplete]): ... # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/json/commands.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/json/commands.pyi index a40138525..38d4d4c6c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/json/commands.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/json/commands.pyi @@ -1,30 +1,32 @@ from _typeshed import Incomplete class JSONCommands: - def arrappend(self, name, path=..., *args): ... - def arrindex(self, name, path, scalar, start: int = ..., stop: int = ...): ... - def arrinsert(self, name, path, index, *args): ... - def arrlen(self, name, path=...): ... - def arrpop(self, name, path=..., index: int = ...): ... - def arrtrim(self, name, path, start, stop): ... - def type(self, name, path=...): ... - def resp(self, name, path=...): ... - def objkeys(self, name, path=...): ... - def objlen(self, name, path=...): ... + def arrappend(self, name: str, path: str | None = ".", *args) -> list[int | None]: ... + def arrindex( + self, name: str, path: str, scalar: int, start: int | None = None, stop: int | None = None + ) -> list[int | None]: ... + def arrinsert(self, name: str, path: str, index: int, *args) -> list[int | None]: ... + def arrlen(self, name: str, path: str | None = ".") -> list[int | None]: ... + def arrpop(self, name: str, path: str | None = ".", index: int | None = -1) -> list[str | None]: ... + def arrtrim(self, name: str, path: str, start: int, stop: int) -> list[int | None]: ... + def type(self, name: str, path: str | None = ".") -> list[str]: ... + def resp(self, name: str, path: str | None = ".") -> list[Incomplete]: ... + def objkeys(self, name, path="."): ... + def objlen(self, name, path="."): ... def numincrby(self, name, path, number): ... def nummultby(self, name, path, number): ... - def clear(self, name, path=...): ... - def delete(self, key, path=...): ... + def clear(self, name, path="."): ... + def delete(self, key, path="."): ... forget = delete - def get(self, name, *args, no_escape: bool = ...): ... + def get(self, name, *args, no_escape: bool = False): ... def mget(self, keys, path): ... - def set(self, name, path, obj, nx: bool = ..., xx: bool = ..., decode_keys: bool = ...): ... - def set_file(self, name, path, file_name, nx: bool = ..., xx: bool = ..., decode_keys: bool = ...): ... - def set_path(self, json_path, root_folder, nx: bool = ..., xx: bool = ..., decode_keys: bool = ...): ... - def strlen(self, name, path: Incomplete | None = ...): ... - def toggle(self, name, path=...): ... - def strappend(self, name, value, path=...): ... - def debug(self, subcommand, key: Incomplete | None = ..., path=...): ... + def set(self, name, path, obj, nx: bool = False, xx: bool = False, decode_keys: bool = False): ... + def set_file(self, name, path, file_name, nx: bool = False, xx: bool = False, decode_keys: bool = False): ... + def set_path(self, json_path, root_folder, nx: bool = False, xx: bool = False, decode_keys: bool = False): ... + def strlen(self, name, path: Incomplete | None = None): ... + def toggle(self, name, path="."): ... + def strappend(self, name, value, path="."): ... + def debug(self, subcommand, key: Incomplete | None = None, path="."): ... def jsonget(self, *args, **kwargs): ... def jsonmget(self, *args, **kwargs): ... def jsonset(self, *args, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/redismodules.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/redismodules.pyi index 6f535b231..6de03ef3e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/redismodules.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/redismodules.pyi @@ -4,11 +4,11 @@ from .timeseries import TimeSeries class RedisModuleCommands: def json(self, encoder=..., decoder=...) -> JSON: ... - def ft(self, index_name: str = ...) -> Search: ... + def ft(self, index_name: str = "idx") -> Search: ... def ts(self) -> TimeSeries: ... def bf(self): ... def cf(self): ... def cms(self): ... def topk(self): ... def tdigest(self): ... - def graph(self, index_name: str = ...): ... + def graph(self, index_name: str = "idx"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/__init__.pyi index d62721a01..3366d4516 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/__init__.pyi @@ -4,19 +4,19 @@ from .commands import SearchCommands class Search(SearchCommands): class BatchIndexer: - def __init__(self, client, chunk_size: int = ...) -> None: ... + def __init__(self, client, chunk_size: int = 1000) -> None: ... def add_document( self, doc_id, - nosave: bool = ..., - score: float = ..., - payload: Incomplete | None = ..., - replace: bool = ..., - partial: bool = ..., - no_create: bool = ..., + nosave: bool = False, + score: float = 1.0, + payload: Incomplete | None = None, + replace: bool = False, + partial: bool = False, + no_create: bool = False, **fields, ): ... - def add_document_hash(self, doc_id, score: float = ..., replace: bool = ...): ... + def add_document_hash(self, doc_id, score: float = 1.0, replace: bool = False): ... def commit(self): ... - def __init__(self, client, index_name: str = ...) -> None: ... + def __init__(self, client, index_name: str = "idx") -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/aggregation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/aggregation.pyi index 0ccd50523..854be852d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/aggregation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/aggregation.pyi @@ -6,7 +6,7 @@ FIELDNAME: Any class Limit: offset: Any count: Any - def __init__(self, offset: int = ..., count: int = ...) -> None: ... + def __init__(self, offset: int = 0, count: int = 0) -> None: ... def build_args(self): ... class Reducer: @@ -28,7 +28,7 @@ class Desc(SortDirection): DIRSTRING: ClassVar[Literal["DESC"]] class AggregateRequest: - def __init__(self, query: str = ...) -> None: ... + def __init__(self, query: str = "*") -> None: ... def load(self, *fields): ... def group_by(self, fields, *reducers): ... def apply(self, **kwexpr): ... @@ -37,7 +37,7 @@ class AggregateRequest: def filter(self, expressions): ... def with_schema(self): ... def verbatim(self): ... - def cursor(self, count: int = ..., max_idle: float = ...): ... + def cursor(self, count: int = 0, max_idle: float = 0.0): ... def build_args(self): ... class Cursor: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/commands.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/commands.pyi index 29777c638..63995e758 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/commands.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/commands.pyi @@ -50,49 +50,49 @@ FUZZY: Literal["FUZZY"] WITHPAYLOADS: Literal["WITHPAYLOADS"] class SearchCommands: - def batch_indexer(self, chunk_size: int = ...): ... + def batch_indexer(self, chunk_size: int = 100): ... def create_index( self, fields, - no_term_offsets: bool = ..., - no_field_flags: bool = ..., - stopwords: Incomplete | None = ..., - definition: Incomplete | None = ..., - max_text_fields: bool = ..., # added in 4.1.1 - temporary: Incomplete | None = ..., # added in 4.1.1 - no_highlight: bool = ..., # added in 4.1.1 - no_term_frequencies: bool = ..., # added in 4.1.1 - skip_initial_scan: bool = ..., # added in 4.1.1 + no_term_offsets: bool = False, + no_field_flags: bool = False, + stopwords: Incomplete | None = None, + definition: Incomplete | None = None, + max_text_fields: bool = False, # added in 4.1.1 + temporary: Incomplete | None = None, # added in 4.1.1 + no_highlight: bool = False, # added in 4.1.1 + no_term_frequencies: bool = False, # added in 4.1.1 + skip_initial_scan: bool = False, # added in 4.1.1 ): ... def alter_schema_add(self, fields): ... - def dropindex(self, delete_documents: bool = ...): ... + def dropindex(self, delete_documents: bool = False): ... def add_document( self, doc_id, - nosave: bool = ..., - score: float = ..., - payload: Incomplete | None = ..., - replace: bool = ..., - partial: bool = ..., - language: Incomplete | None = ..., - no_create: bool = ..., + nosave: bool = False, + score: float = 1.0, + payload: Incomplete | None = None, + replace: bool = False, + partial: bool = False, + language: Incomplete | None = None, + no_create: bool = False, **fields, ): ... - def add_document_hash(self, doc_id, score: float = ..., language: Incomplete | None = ..., replace: bool = ...): ... - def delete_document(self, doc_id, conn: Incomplete | None = ..., delete_actual_document: bool = ...): ... + def add_document_hash(self, doc_id, score: float = 1.0, language: Incomplete | None = None, replace: bool = False): ... + def delete_document(self, doc_id, conn: Incomplete | None = None, delete_actual_document: bool = False): ... def load_document(self, id): ... def get(self, *ids): ... def info(self): ... def get_params_args(self, query_params: _QueryParams) -> list[Any]: ... - def search(self, query: str | Query, query_params: _QueryParams | None = ...) -> Result: ... - def explain(self, query: str | Query, query_params: _QueryParams | None = ...): ... + def search(self, query: str | Query, query_params: _QueryParams | None = None) -> Result: ... + def explain(self, query: str | Query, query_params: _QueryParams | None = None): ... def explain_cli(self, query): ... - def aggregate(self, query: AggregateRequest | Cursor, query_params: _QueryParams | None = ...) -> AggregateResult: ... + def aggregate(self, query: AggregateRequest | Cursor, query_params: _QueryParams | None = None) -> AggregateResult: ... def profile( - self, query: str | Query | AggregateRequest, limited: bool = ..., query_params: Mapping[str, str | float] | None = ... + self, query: str | Query | AggregateRequest, limited: bool = False, query_params: Mapping[str, str | float] | None = None ) -> tuple[Incomplete, Incomplete]: ... def spellcheck( - self, query, distance: Incomplete | None = ..., include: Incomplete | None = ..., exclude: Incomplete | None = ... + self, query, distance: Incomplete | None = None, include: Incomplete | None = None, exclude: Incomplete | None = None ): ... def dict_add(self, name, *terms): ... def dict_del(self, name, *terms): ... @@ -106,6 +106,6 @@ class SearchCommands: def sugadd(self, key, *suggestions, **kwargs): ... def suglen(self, key): ... def sugdel(self, key, string): ... - def sugget(self, key, prefix, fuzzy: bool = ..., num: int = ..., with_scores: bool = ..., with_payloads: bool = ...): ... - def synupdate(self, groupid, skipinitial: bool = ..., *terms): ... + def sugget(self, key, prefix, fuzzy: bool = False, num: int = 10, with_scores: bool = False, with_payloads: bool = False): ... + def synupdate(self, groupid, skipinitial: bool = False, *terms): ... def syndump(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/query.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/query.pyi index e88f2a565..eb1846bab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/query.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/query.pyi @@ -6,15 +6,15 @@ class Query: def query_string(self): ... def limit_ids(self, *ids): ... def return_fields(self, *fields): ... - def return_field(self, field, as_field: Incomplete | None = ...): ... + def return_field(self, field, as_field: Incomplete | None = None): ... def summarize( self, - fields: Incomplete | None = ..., - context_len: Incomplete | None = ..., - num_frags: Incomplete | None = ..., - sep: Incomplete | None = ..., + fields: Incomplete | None = None, + context_len: Incomplete | None = None, + num_frags: Incomplete | None = None, + sep: Incomplete | None = None, ): ... - def highlight(self, fields: Incomplete | None = ..., tags: Incomplete | None = ...): ... + def highlight(self, fields: Incomplete | None = None, tags: Incomplete | None = None): ... def language(self, language): ... def slop(self, slop): ... def in_order(self): ... @@ -28,7 +28,7 @@ class Query: def with_scores(self): ... def limit_fields(self, *fields): ... def add_filter(self, flt): ... - def sort_by(self, field, asc: bool = ...): ... + def sort_by(self, field, asc: bool = True): ... def expander(self, expander): ... class Filter: @@ -38,15 +38,15 @@ class Filter: class NumericFilter(Filter): INF: str NEG_INF: str - def __init__(self, field, minval, maxval, minExclusive: bool = ..., maxExclusive: bool = ...) -> None: ... + def __init__(self, field, minval, maxval, minExclusive: bool = False, maxExclusive: bool = False) -> None: ... class GeoFilter(Filter): METERS: str KILOMETERS: str FEET: str MILES: str - def __init__(self, field, lon, lat, radius, unit=...) -> None: ... + def __init__(self, field, lon, lat, radius, unit="km") -> None: ... class SortbyField: args: Any - def __init__(self, field, asc: bool = ...) -> None: ... + def __init__(self, field, asc: bool = True) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/result.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/result.pyi index 2908b9a61..046c31705 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/result.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/search/result.pyi @@ -4,4 +4,4 @@ class Result: total: Any duration: Any docs: Any - def __init__(self, res, hascontent, duration: int = ..., has_payload: bool = ..., with_scores: bool = ...) -> None: ... + def __init__(self, res, hascontent, duration: int = 0, has_payload: bool = False, with_scores: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/timeseries/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/timeseries/__init__.pyi index 425d3a4ca..95457d6fe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/timeseries/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/timeseries/__init__.pyi @@ -8,7 +8,7 @@ class TimeSeries(TimeSeriesCommands): MODULE_CALLBACKS: dict[str, Any] client: Any execute_command: Any - def __init__(self, client: Incomplete | None = ..., **kwargs) -> None: ... - def pipeline(self, transaction: bool = ..., shard_hint: Incomplete | None = ...) -> Pipeline: ... + def __init__(self, client: Incomplete | None = None, **kwargs) -> None: ... + def pipeline(self, transaction: bool = True, shard_hint: Incomplete | None = None) -> Pipeline: ... class Pipeline(TimeSeriesCommands, ClientPipeline[Incomplete]): ... # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/timeseries/commands.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/timeseries/commands.pyi index dc15c8506..989542c9c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/timeseries/commands.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/timeseries/commands.pyi @@ -24,55 +24,55 @@ class TimeSeriesCommands: def create( self, key: _Key, - retention_msecs: int | None = ..., - uncompressed: bool | None = ..., - labels: dict[str, str] | None = ..., - chunk_size: int | None = ..., - duplicate_policy: str | None = ..., + retention_msecs: int | None = None, + uncompressed: bool | None = False, + labels: dict[str, str] | None = None, + chunk_size: int | None = None, + duplicate_policy: str | None = None, ): ... def alter( self, key: _Key, - retention_msecs: int | None = ..., - labels: dict[str, str] | None = ..., - chunk_size: int | None = ..., - duplicate_policy: str | None = ..., + retention_msecs: int | None = None, + labels: dict[str, str] | None = None, + chunk_size: int | None = None, + duplicate_policy: str | None = None, ): ... def add( self, key: _Key, timestamp: int | str, value: float, - retention_msecs: int | None = ..., - uncompressed: bool | None = ..., - labels: dict[str, str] | None = ..., - chunk_size: int | None = ..., - duplicate_policy: str | None = ..., + retention_msecs: int | None = None, + uncompressed: bool | None = False, + labels: dict[str, str] | None = None, + chunk_size: int | None = None, + duplicate_policy: str | None = None, ): ... def madd(self, ktv_tuples): ... def incrby( self, key: _Key, value: float, - timestamp: int | str | None = ..., - retention_msecs: int | None = ..., - uncompressed: bool | None = ..., - labels: dict[str, str] | None = ..., - chunk_size: int | None = ..., + timestamp: int | str | None = None, + retention_msecs: int | None = None, + uncompressed: bool | None = False, + labels: dict[str, str] | None = None, + chunk_size: int | None = None, ): ... def decrby( self, key: _Key, value: float, - timestamp: int | str | None = ..., - retention_msecs: int | None = ..., - uncompressed: bool | None = ..., - labels: dict[str, str] | None = ..., - chunk_size: int | None = ..., + timestamp: int | str | None = None, + retention_msecs: int | None = None, + uncompressed: bool | None = False, + labels: dict[str, str] | None = None, + chunk_size: int | None = None, ): ... def delete(self, key, from_time, to_time): ... def createrule( - self, source_key: _Key, dest_key: _Key, aggregation_type: str, bucket_size_msec: int, align_timestamp: int | None = ... + self, source_key: _Key, dest_key: _Key, aggregation_type: str, bucket_size_msec: int, align_timestamp: int | None = None ): ... def deleterule(self, source_key, dest_key): ... def range( @@ -80,76 +80,80 @@ class TimeSeriesCommands: key: _Key, from_time: int | str, to_time: int | str, - count: int | None = ..., - aggregation_type: str | None = ..., - bucket_size_msec: int | None = ..., - filter_by_ts: list[int] | None = ..., - filter_by_min_value: int | None = ..., - filter_by_max_value: int | None = ..., - align: int | str | None = ..., - latest: bool | None = ..., - bucket_timestamp: str | None = ..., - empty: bool | None = ..., + count: int | None = None, + aggregation_type: str | None = None, + bucket_size_msec: int | None = 0, + filter_by_ts: list[int] | None = None, + filter_by_min_value: int | None = None, + filter_by_max_value: int | None = None, + align: int | str | None = None, + latest: bool | None = False, + bucket_timestamp: str | None = None, + empty: bool | None = False, ): ... def revrange( self, key: _Key, from_time: int | str, to_time: int | str, - count: int | None = ..., - aggregation_type: str | None = ..., - bucket_size_msec: int | None = ..., - filter_by_ts: list[int] | None = ..., - filter_by_min_value: int | None = ..., - filter_by_max_value: int | None = ..., - align: int | str | None = ..., - latest: bool | None = ..., - bucket_timestamp: str | None = ..., - empty: bool | None = ..., + count: int | None = None, + aggregation_type: str | None = None, + bucket_size_msec: int | None = 0, + filter_by_ts: list[int] | None = None, + filter_by_min_value: int | None = None, + filter_by_max_value: int | None = None, + align: int | str | None = None, + latest: bool | None = False, + bucket_timestamp: str | None = None, + empty: bool | None = False, ): ... def mrange( self, from_time: int | str, to_time: int | str, filters: list[str], - count: int | None = ..., - aggregation_type: str | None = ..., - bucket_size_msec: int | None = ..., - with_labels: bool | None = ..., - filter_by_ts: list[int] | None = ..., - filter_by_min_value: int | None = ..., - filter_by_max_value: int | None = ..., - groupby: str | None = ..., - reduce: str | None = ..., - select_labels: list[str] | None = ..., - align: int | str | None = ..., - latest: bool | None = ..., - bucket_timestamp: str | None = ..., - empty: bool | None = ..., + count: int | None = None, + aggregation_type: str | None = None, + bucket_size_msec: int | None = 0, + with_labels: bool | None = False, + filter_by_ts: list[int] | None = None, + filter_by_min_value: int | None = None, + filter_by_max_value: int | None = None, + groupby: str | None = None, + reduce: str | None = None, + select_labels: list[str] | None = None, + align: int | str | None = None, + latest: bool | None = False, + bucket_timestamp: str | None = None, + empty: bool | None = False, ): ... def mrevrange( self, from_time: int | str, to_time: int | str, filters: list[str], - count: int | None = ..., - aggregation_type: str | None = ..., - bucket_size_msec: int | None = ..., - with_labels: bool | None = ..., - filter_by_ts: list[int] | None = ..., - filter_by_min_value: int | None = ..., - filter_by_max_value: int | None = ..., - groupby: str | None = ..., - reduce: str | None = ..., - select_labels: list[str] | None = ..., - align: int | str | None = ..., - latest: bool | None = ..., - bucket_timestamp: str | None = ..., - empty: bool | None = ..., + count: int | None = None, + aggregation_type: str | None = None, + bucket_size_msec: int | None = 0, + with_labels: bool | None = False, + filter_by_ts: list[int] | None = None, + filter_by_min_value: int | None = None, + filter_by_max_value: int | None = None, + groupby: str | None = None, + reduce: str | None = None, + select_labels: list[str] | None = None, + align: int | str | None = None, + latest: bool | None = False, + bucket_timestamp: str | None = None, + empty: bool | None = False, ): ... - def get(self, key: _Key, latest: bool | None = ...): ... + def get(self, key: _Key, latest: bool | None = False): ... def mget( - self, filters: list[str], with_labels: bool | None = ..., select_labels: list[str] | None = ..., latest: bool | None = ... + self, + filters: list[str], + with_labels: bool | None = False, + select_labels: list[str] | None = None, + latest: bool | None = False, ): ... def info(self, key): ... def queryindex(self, filters): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi index a409a9d83..71af4cc77 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete, Unused +from abc import abstractmethod from collections.abc import Callable, Iterable, Mapping from queue import Queue from socket import socket @@ -56,7 +57,7 @@ class PythonParser(BaseParser): def on_connect(self, connection: Connection) -> None: ... def on_disconnect(self) -> None: ... def can_read(self, timeout: float | None) -> bool: ... - def read_response(self, disable_decoding: bool = ...) -> Any: ... # `str | bytes` or `list[str | bytes]` + def read_response(self, disable_decoding: bool = False) -> Any: ... # `str | bytes` or `list[str | bytes]` class HiredisParser(BaseParser): socket_read_size: int @@ -65,8 +66,8 @@ class HiredisParser(BaseParser): def on_connect(self, connection: Connection, **kwargs) -> None: ... def on_disconnect(self) -> None: ... def can_read(self, timeout: float | None) -> bool: ... - def read_from_socket(self, timeout: float | None = ..., raise_on_timeout: bool = ...) -> bool: ... - def read_response(self, disable_decoding: bool = ...) -> Any: ... # `str | bytes` or `list[str | bytes]` + def read_from_socket(self, timeout: float | None = ..., raise_on_timeout: bool = True) -> bool: ... + def read_response(self, disable_decoding: bool = False) -> Any: ... # `str | bytes` or `list[str | bytes]` DefaultParser: type[BaseParser] # Hiredis or PythonParser @@ -78,39 +79,27 @@ class Encoder: decode_responses: bool def __init__(self, encoding: str, encoding_errors: str, decode_responses: bool) -> None: ... def encode(self, value: _Encodable) -> bytes: ... - def decode(self, value: str | bytes | memoryview, force: bool = ...) -> str: ... + def decode(self, value: str | bytes | memoryview, force: bool = False) -> str: ... -class Connection: +class AbstractConnection: pid: int - host: str - port: int db: int - username: str | None - password: str | None client_name: str | None - socket_timeout: float | None - socket_connect_timeout: float | None - socket_keepalive: bool - socket_keepalive_options: Mapping[str, int | str] - socket_type: int + credential_provider: CredentialProvider | None + password: str | None + username: str | None retry_on_timeout: bool retry_on_error: list[type[Exception]] retry: Retry + health_check_interval: int + next_health_check: int redis_connect_func: _ConnectFunc | None encoder: Encoder - next_health_check: int - health_check_interval: int + def __init__( self, - host: str = "localhost", - port: int = 6379, db: int = 0, password: str | None = None, - socket_timeout: float | None = None, - socket_connect_timeout: float | None = None, - socket_keepalive: bool = False, - socket_keepalive_options: Mapping[str, int | str] | None = None, - socket_type: int = 0, retry_on_timeout: bool = False, retry_on_error: list[type[Exception]] = ..., encoding: str = "utf-8", @@ -126,7 +115,8 @@ class Connection: credential_provider: CredentialProvider | None = None, command_packer: Incomplete | None = None, ) -> None: ... - def __del__(self) -> None: ... + @abstractmethod + def repr_pieces(self) -> list[tuple[str, Any]]: ... def register_connect_callback(self, callback: _ConnectFunc) -> None: ... def clear_connect_callbacks(self) -> None: ... def set_parser(self, parser_class: type[BaseParser]) -> None: ... @@ -134,13 +124,49 @@ class Connection: def on_connect(self) -> None: ... def disconnect(self, *args: Unused) -> None: ... # 'args' added in redis 4.1.2 def check_health(self) -> None: ... - def send_packed_command(self, command: str | Iterable[str], check_health: bool = ...) -> None: ... + def send_packed_command(self, command: str | Iterable[str], check_health: bool = True) -> None: ... def send_command(self, *args, **kwargs) -> None: ... - def can_read(self, timeout: float | None = ...) -> bool: ... - def read_response(self, disable_decoding: bool = ...) -> Any: ... # `str | bytes` or `list[str | bytes]` + def can_read(self, timeout: float | None = 0) -> bool: ... + def read_response(self, disable_decoding: bool = False) -> Any: ... # `str | bytes` or `list[str | bytes]` def pack_command(self, *args) -> list[bytes]: ... def pack_commands(self, commands: Iterable[Iterable[Incomplete]]) -> list[bytes]: ... - def repr_pieces(self) -> list[tuple[str, str]]: ... + +class Connection(AbstractConnection): + host: str + port: int + socket_timeout: float | None + socket_connect_timeout: float | None + socket_keepalive: bool + socket_keepalive_options: Mapping[str, int | str] + socket_type: int + def __init__( + self, + host: str = "localhost", + port: int = 6379, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, + socket_keepalive: bool = False, + socket_keepalive_options: Mapping[str, int | str] | None = None, + socket_type: int = 0, + *, + db: int = 0, + password: str | None = None, + retry_on_timeout: bool = False, + retry_on_error: list[type[Exception]] = ..., + encoding: str = "utf-8", + encoding_errors: str = "strict", + decode_responses: bool = False, + parser_class: type[BaseParser] = ..., + socket_read_size: int = 65536, + health_check_interval: int = 0, + client_name: str | None = None, + username: str | None = None, + retry: Retry | None = None, + redis_connect_func: _ConnectFunc | None = None, + credential_provider: CredentialProvider | None = None, + command_packer: Incomplete | None = None, + ) -> None: ... + def repr_pieces(self) -> list[tuple[str, Any]]: ... class SSLConnection(Connection): keyfile: Any @@ -156,44 +182,70 @@ class SSLConnection(Connection): ssl_ocsp_expected_cert: Incomplete | None # added in 4.1.1 def __init__( self, - ssl_keyfile=..., - ssl_certfile=..., - ssl_cert_reqs=..., - ssl_ca_certs=..., - ssl_ca_data: Incomplete | None = ..., - ssl_check_hostname: bool = ..., - ssl_ca_path: Incomplete | None = ..., - ssl_password: Incomplete | None = ..., - ssl_validate_ocsp: bool = ..., - ssl_validate_ocsp_stapled: bool = ..., # added in 4.1.1 - ssl_ocsp_context: Incomplete | None = ..., # added in 4.1.1 - ssl_ocsp_expected_cert: Incomplete | None = ..., # added in 4.1.1 - **kwargs, + ssl_keyfile=None, + ssl_certfile=None, + ssl_cert_reqs="required", + ssl_ca_certs=None, + ssl_ca_data: Incomplete | None = None, + ssl_check_hostname: bool = False, + ssl_ca_path: Incomplete | None = None, + ssl_password: Incomplete | None = None, + ssl_validate_ocsp: bool = False, + ssl_validate_ocsp_stapled: bool = False, # added in 4.1.1 + ssl_ocsp_context: Incomplete | None = None, # added in 4.1.1 + ssl_ocsp_expected_cert: Incomplete | None = None, # added in 4.1.1 + *, + host: str = "localhost", + port: int = 6379, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, + socket_keepalive: bool = False, + socket_keepalive_options: Mapping[str, int | str] | None = None, + socket_type: int = 0, + db: int = 0, + password: str | None = None, + retry_on_timeout: bool = False, + retry_on_error: list[type[Exception]] = ..., + encoding: str = "utf-8", + encoding_errors: str = "strict", + decode_responses: bool = False, + parser_class: type[BaseParser] = ..., + socket_read_size: int = 65536, + health_check_interval: int = 0, + client_name: str | None = None, + username: str | None = None, + retry: Retry | None = None, + redis_connect_func: _ConnectFunc | None = None, + credential_provider: CredentialProvider | None = None, + command_packer: Incomplete | None = None, ) -> None: ... -class UnixDomainSocketConnection(Connection): +class UnixDomainSocketConnection(AbstractConnection): path: str + socket_timeout: float | None def __init__( self, path: str = "", + socket_timeout: float | None = None, + *, db: int = 0, - username: str | None = None, password: str | None = None, - socket_timeout: float | None = None, + retry_on_timeout: bool = False, + retry_on_error: list[type[Exception]] = ..., encoding: str = "utf-8", encoding_errors: str = "strict", decode_responses: bool = False, - retry_on_timeout: bool = False, - retry_on_error: list[type[Exception]] = ..., parser_class: type[BaseParser] = ..., socket_read_size: int = 65536, health_check_interval: int = 0, client_name: str | None = None, + username: str | None = None, retry: Retry | None = None, redis_connect_func: _ConnectFunc | None = None, credential_provider: CredentialProvider | None = None, command_packer: Incomplete | None = None, ) -> None: ... + def repr_pieces(self) -> list[tuple[str, Any]]: ... # TODO: make generic on `connection_class` class ConnectionPool: @@ -204,13 +256,13 @@ class ConnectionPool: @classmethod def from_url(cls, url: str, *, db: int = ..., decode_components: bool = ..., **kwargs) -> Self: ... def __init__( - self, connection_class: type[Connection] = ..., max_connections: int | None = ..., **connection_kwargs + self, connection_class: type[AbstractConnection] = ..., max_connections: int | None = None, **connection_kwargs ) -> None: ... def reset(self) -> None: ... def get_connection(self, command_name: Unused, *keys, **options: _ConnectionPoolOptions) -> Connection: ... def make_connection(self) -> Connection: ... def release(self, connection: Connection) -> None: ... - def disconnect(self, inuse_connections: bool = ...) -> None: ... + def disconnect(self, inuse_connections: bool = True) -> None: ... def get_encoder(self) -> Encoder: ... def owns_connection(self, connection: Connection) -> bool: ... @@ -220,8 +272,8 @@ class BlockingConnectionPool(ConnectionPool): pool: Queue[Connection | None] # might not be defined def __init__( self, - max_connections: int = ..., - timeout: float = ..., + max_connections: int = 50, + timeout: float = 20, connection_class: type[Connection] = ..., queue_class: type[Queue[Any]] = ..., **connection_kwargs, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/crc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/crc.pyi index 87585a3fd..cfd7e8fe8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/crc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/crc.pyi @@ -2,4 +2,4 @@ from redis.typing import EncodedT REDIS_CLUSTER_HASH_SLOTS: int -def key_slot(key: EncodedT, bucket: int = ...) -> int: ... +def key_slot(key: EncodedT, bucket: int = 16384) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/credentials.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/credentials.pyi index aecf728a9..7a2d78ecb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/credentials.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/credentials.pyi @@ -7,5 +7,5 @@ class CredentialProvider: class UsernamePasswordCredentialProvider(CredentialProvider): username: str password: str - def __init__(self, username: str | None = ..., password: str | None = ...) -> None: ... + def __init__(self, username: str | None = None, password: str | None = None) -> None: ... def get_credentials(self) -> tuple[str] | tuple[str, str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/lock.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/lock.pyi index 63c461d68..3bbb410ae 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/lock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/lock.pyi @@ -27,11 +27,11 @@ class Lock: self, redis: Redis[Any], name: str, - timeout: float | None = ..., - sleep: float = ..., - blocking: bool = ..., - blocking_timeout: float | None = ..., - thread_local: bool = ..., + timeout: float | None = None, + sleep: float = 0.1, + blocking: bool = True, + blocking_timeout: float | None = None, + thread_local: bool = True, ) -> None: ... def register_scripts(self) -> None: ... def __enter__(self) -> Self: ... @@ -40,17 +40,17 @@ class Lock: ) -> bool | None: ... def acquire( self, - sleep: float | None = ..., - blocking: bool | None = ..., - blocking_timeout: float | None = ..., - token: str | bytes | None = ..., + sleep: float | None = None, + blocking: bool | None = None, + blocking_timeout: float | None = None, + token: str | bytes | None = None, ) -> bool: ... def do_acquire(self, token: str | bytes) -> bool: ... def locked(self) -> bool: ... def owned(self) -> bool: ... def release(self) -> None: ... def do_release(self, expected_token: str | bytes) -> None: ... - def extend(self, additional_time: float, replace_ttl: bool = ...) -> bool: ... + def extend(self, additional_time: float, replace_ttl: bool = False) -> bool: ... def do_extend(self, additional_time: float, replace_ttl: bool) -> bool: ... def reacquire(self) -> bool: ... def do_reacquire(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/ocsp.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/ocsp.pyi index da9473a1c..0416a2319 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/ocsp.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/ocsp.pyi @@ -5,14 +5,14 @@ from typing_extensions import Literal from cryptography.x509.base import Certificate from OpenSSL.SSL import Connection -def ocsp_staple_verifier(con: Connection, ocsp_bytes: bytes, expected: bytes | None = ...) -> Literal[True]: ... +def ocsp_staple_verifier(con: Connection, ocsp_bytes: bytes, expected: bytes | None = None) -> Literal[True]: ... class OCSPVerifier: SOCK: SSLObject | SSLSocket HOST: str PORT: int CA_CERTS: str | None - def __init__(self, sock: SSLObject | SSLSocket, host: str, port: int, ca_certs: str | None = ...) -> None: ... + def __init__(self, sock: SSLObject | SSLSocket, host: str, port: int, ca_certs: str | None = None) -> None: ... # cryptography.x509.general_name.GeneralName.value is typed as Any def components_from_socket(self) -> tuple[Certificate, Incomplete | None, Incomplete]: ... def components_from_direct_connection(self) -> tuple[Certificate, Incomplete | None, Incomplete]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi index ea13ae681..d57c470ea 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi @@ -20,7 +20,7 @@ class SentinelManagedConnection(Connection): def connect_to(self, address: _AddressAndPort) -> None: ... def connect(self) -> None: ... # The result can be either `str | bytes` or `list[str | bytes]` - def read_response(self, disable_decoding: bool = ...) -> Any: ... + def read_response(self, disable_decoding: bool = False) -> Any: ... class SentinelManagedSSLConnection(SentinelManagedConnection, SSLConnection): ... @@ -43,8 +43,8 @@ class Sentinel(SentinelCommands): def __init__( self, sentinels: Iterable[_AddressAndPort], - min_other_sentinels: int = ..., - sentinel_kwargs: dict[str, Any] | None = ..., + min_other_sentinels: int = 0, + sentinel_kwargs: dict[str, Any] | None = None, **connection_kwargs, ) -> None: ... def check_master_state(self, state: _SentinelState, service_name: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/utils.pyi index 7a562c4b1..32de59413 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/utils.pyi @@ -14,7 +14,7 @@ CRYPTOGRAPHY_AVAILABLE: bool @overload def from_url(url: str, *, db: int = ..., decode_responses: Literal[True], **kwargs: Any) -> Redis[str]: ... @overload -def from_url(url: str, *, db: int = ..., decode_responses: Literal[False] = ..., **kwargs: Any) -> Redis[bytes]: ... +def from_url(url: str, *, db: int = ..., decode_responses: Literal[False] = False, **kwargs: Any) -> Redis[bytes]: ... def pipeline(redis_obj: Redis[_StrType]) -> AbstractContextManager[Pipeline[_StrType]]: ... def str_if_bytes(value: str | bytes) -> str: ... def safe_str(value: object) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml index f508c79b6..a101319b4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml @@ -1 +1 @@ -version = "2022.10.31" +version = "2023.3.23" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/regex/_regex_core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/regex/regex/_regex_core.pyi index cca9a476c..e5ab3f970 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/regex/regex/_regex_core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/regex/_regex_core.pyi @@ -6,7 +6,7 @@ from typing_extensions import TypeAlias from .regex import Pattern class error(Exception): - def __init__(self, message: str, pattern: AnyStr | None = ..., pos: int | None = ...) -> None: ... + def __init__(self, message: str, pattern: AnyStr | None = None, pos: int | None = None) -> None: ... class RegexFlag(enum.IntFlag): A: int @@ -87,5 +87,5 @@ class Scanner(Generic[AnyStr]): lexicon: _Lexicon[AnyStr] scanner: Pattern[AnyStr] - def __init__(self, lexicon: _Lexicon[AnyStr], flags: int = ...) -> None: ... + def __init__(self, lexicon: _Lexicon[AnyStr], flags: int = 0) -> None: ... def scan(self, string: AnyStr) -> tuple[list[Any], AnyStr]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/regex/regex.pyi b/packages/pyright-internal/typeshed-fallback/stubs/regex/regex/regex.pyi index 6a6d25f47..0d37d0c9f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/regex/regex/regex.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/regex/regex.pyi @@ -16,185 +16,185 @@ __version__: str def compile( pattern: AnyStr | Pattern[AnyStr], - flags: int = ..., - ignore_unused: bool = ..., - cache_pattern: bool | None = ..., + flags: int = 0, + ignore_unused: bool = False, + cache_pattern: bool | None = None, **kwargs: Any, ) -> Pattern[AnyStr]: ... @overload def search( pattern: str | Pattern[str], string: str, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - partial: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + partial: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> Match[str] | None: ... @overload def search( pattern: bytes | Pattern[bytes], string: ReadableBuffer, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - partial: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + partial: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> Match[bytes] | None: ... @overload def match( pattern: str | Pattern[str], string: str, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - partial: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + partial: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> Match[str] | None: ... @overload def match( pattern: bytes | Pattern[bytes], string: ReadableBuffer, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - partial: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + partial: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> Match[bytes] | None: ... @overload def fullmatch( pattern: str | Pattern[str], string: str, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - partial: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + partial: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> Match[str] | None: ... @overload def fullmatch( pattern: bytes | Pattern[bytes], string: ReadableBuffer, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - partial: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + partial: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> Match[bytes] | None: ... @overload def split( pattern: str | Pattern[str], string: str, - maxsplit: int = ..., - flags: int = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + maxsplit: int = 0, + flags: int = 0, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> list[str | Any]: ... @overload def split( pattern: ReadableBuffer | Pattern[bytes], string: ReadableBuffer, - maxsplit: int = ..., - flags: int = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + maxsplit: int = 0, + flags: int = 0, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> list[bytes | Any]: ... @overload def splititer( pattern: str | Pattern[str], string: str, - maxsplit: int = ..., - flags: int = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + maxsplit: int = 0, + flags: int = 0, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> _regex.Splitter[str]: ... @overload def splititer( pattern: ReadableBuffer | Pattern[bytes], string: ReadableBuffer, - maxsplit: int = ..., - flags: int = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + maxsplit: int = 0, + flags: int = 0, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> _regex.Splitter[bytes]: ... @overload def findall( pattern: str | Pattern[str], string: str, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - overlapped: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + overlapped: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> list[Any]: ... @overload def findall( pattern: ReadableBuffer | Pattern[bytes], string: ReadableBuffer, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - overlapped: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + overlapped: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> list[Any]: ... @overload def finditer( pattern: str | Pattern[str], string: str, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - overlapped: bool = ..., - partial: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + overlapped: bool = False, + partial: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> _regex.Scanner[str]: ... @overload def finditer( pattern: ReadableBuffer | Pattern[bytes], string: ReadableBuffer, - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - overlapped: bool = ..., - partial: bool = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + overlapped: bool = False, + partial: bool = False, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> _regex.Scanner[bytes]: ... @overload @@ -202,13 +202,13 @@ def sub( pattern: str | Pattern[str], repl: str | Callable[[Match[str]], str], string: str, - count: int = ..., - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + count: int = 0, + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> str: ... @overload @@ -216,13 +216,13 @@ def sub( pattern: ReadableBuffer | Pattern[bytes], repl: ReadableBuffer | Callable[[Match[bytes]], ReadableBuffer], string: ReadableBuffer, - count: int = ..., - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + count: int = 0, + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> bytes: ... @overload @@ -230,13 +230,13 @@ def subf( pattern: str | Pattern[str], format: str | Callable[[Match[str]], str], string: str, - count: int = ..., - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + count: int = 0, + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> str: ... @overload @@ -244,13 +244,13 @@ def subf( pattern: ReadableBuffer | Pattern[bytes], format: ReadableBuffer | Callable[[Match[bytes]], ReadableBuffer], string: ReadableBuffer, - count: int = ..., - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + count: int = 0, + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> bytes: ... @overload @@ -258,13 +258,13 @@ def subn( pattern: str | Pattern[str], repl: str | Callable[[Match[str]], str], string: str, - count: int = ..., - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + count: int = 0, + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> tuple[str, int]: ... @overload @@ -272,13 +272,13 @@ def subn( pattern: ReadableBuffer | Pattern[bytes], repl: ReadableBuffer | Callable[[Match[bytes]], ReadableBuffer], string: ReadableBuffer, - count: int = ..., - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + count: int = 0, + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> tuple[bytes, int]: ... @overload @@ -286,13 +286,13 @@ def subfn( pattern: str | Pattern[str], format: str | Callable[[Match[str]], str], string: str, - count: int = ..., - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + count: int = 0, + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> tuple[str, int]: ... @overload @@ -300,22 +300,22 @@ def subfn( pattern: ReadableBuffer | Pattern[bytes], format: ReadableBuffer | Callable[[Match[bytes]], ReadableBuffer], string: ReadableBuffer, - count: int = ..., - flags: int = ..., - pos: int | None = ..., - endpos: int | None = ..., - concurrent: bool | None = ..., - timeout: float | None = ..., - ignore_unused: bool = ..., + count: int = 0, + flags: int = 0, + pos: int | None = None, + endpos: int | None = None, + concurrent: bool | None = None, + timeout: float | None = None, + ignore_unused: bool = False, **kwargs: Any, ) -> tuple[bytes, int]: ... def purge() -> None: ... @overload -def cache_all(value: bool = ...) -> None: ... +def cache_all(value: bool = True) -> None: ... @overload def cache_all(value: None) -> bool: ... -def escape(pattern: AnyStr, special_only: bool = ..., literal_spaces: bool = ...) -> AnyStr: ... -def template(pattern: AnyStr | Pattern[AnyStr], flags: int = ...) -> Pattern[AnyStr]: ... +def escape(pattern: AnyStr, special_only: bool = True, literal_spaces: bool = False) -> AnyStr: ... +def template(pattern: AnyStr | Pattern[AnyStr], flags: int = 0) -> Pattern[AnyStr]: ... Regex = compile @@ -593,17 +593,17 @@ class Match(Generic[AnyStr]): @property def fuzzy_changes(self) -> tuple[list[int], list[int], list[int]]: ... @overload - def group(self, __group: Literal[0] = ...) -> AnyStr: ... + def group(self, __group: Literal[0] = 0) -> AnyStr: ... @overload def group(self, __group: int | str = ...) -> AnyStr | Any: ... @overload def group(self, __group1: int | str, __group2: int | str, *groups: int | str) -> tuple[AnyStr | Any, ...]: ... @overload - def groups(self, default: None = ...) -> tuple[AnyStr | Any, ...]: ... + def groups(self, default: None = None) -> tuple[AnyStr | Any, ...]: ... @overload def groups(self, default: _T) -> tuple[AnyStr | _T, ...]: ... @overload - def groupdict(self, default: None = ...) -> dict[str, AnyStr | Any]: ... + def groupdict(self, default: None = None) -> dict[str, AnyStr | Any]: ... @overload def groupdict(self, default: _T) -> dict[str, AnyStr | _T]: ... @overload diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/adapters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/adapters.pyi index dbdd59f70..f410cc7b2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/adapters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/adapters.pyi @@ -42,11 +42,11 @@ class BaseAdapter: def send( self, request: PreparedRequest, - stream: bool = ..., - timeout: None | float | tuple[float, float] | tuple[float, None] = ..., - verify: bool | str = ..., - cert: None | bytes | str | tuple[bytes | str, bytes | str] = ..., - proxies: Mapping[str, str] | None = ..., + stream: bool = False, + timeout: None | float | tuple[float, float] | tuple[float, None] = None, + verify: bool | str = True, + cert: None | bytes | str | tuple[bytes | str, bytes | str] = None, + proxies: Mapping[str, str] | None = None, ) -> Response: ... def close(self) -> None: ... @@ -56,14 +56,14 @@ class HTTPAdapter(BaseAdapter): config: Any proxy_manager: Any def __init__( - self, pool_connections: int = ..., pool_maxsize: int = ..., max_retries: Retry | int | None = ..., pool_block: bool = ... + self, pool_connections: int = 10, pool_maxsize: int = 10, max_retries: Retry | int | None = 0, pool_block: bool = False ) -> None: ... poolmanager: Any - def init_poolmanager(self, connections, maxsize, block=..., **pool_kwargs): ... + def init_poolmanager(self, connections, maxsize, block=False, **pool_kwargs): ... def proxy_manager_for(self, proxy, **proxy_kwargs): ... def cert_verify(self, conn, url, verify, cert): ... def build_response(self, req, resp): ... - def get_connection(self, url, proxies=...): ... + def get_connection(self, url, proxies=None): ... def close(self): ... def request_url(self, request, proxies): ... def add_headers(self, request, **kwargs): ... @@ -71,9 +71,9 @@ class HTTPAdapter(BaseAdapter): def send( self, request: PreparedRequest, - stream: bool = ..., - timeout: None | float | tuple[float, float] | tuple[float, None] = ..., - verify: bool | str = ..., - cert: None | bytes | str | tuple[bytes | str, bytes | str] = ..., - proxies: Mapping[str, str] | None = ..., + stream: bool = False, + timeout: None | float | tuple[float, float] | tuple[float, None] = None, + verify: bool | str = True, + cert: None | bytes | str | tuple[bytes | str, bytes | str] = None, + proxies: Mapping[str, str] | None = None, ) -> Response: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/api.pyi index c07a4900c..5578f13a5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/api.pyi @@ -28,7 +28,7 @@ def request( ) -> Response: ... def get( url: str | bytes, - params: _Params | None = ..., + params: _Params | None = None, *, data: _Data | None = ..., headers: _HeadersMapping | None = ..., @@ -82,8 +82,8 @@ def head( ) -> Response: ... def post( url: str | bytes, - data: _Data | None = ..., - json: Incomplete | None = ..., + data: _Data | None = None, + json: Incomplete | None = None, *, params: _Params | None = ..., headers: _HeadersMapping | None = ..., @@ -100,7 +100,7 @@ def post( ) -> Response: ... def put( url: str | bytes, - data: _Data | None = ..., + data: _Data | None = None, *, params: _Params | None = ..., headers: _HeadersMapping | None = ..., @@ -118,7 +118,7 @@ def put( ) -> Response: ... def patch( url: str | bytes, - data: _Data | None = ..., + data: _Data | None = None, *, params: _Params | None = ..., headers: _HeadersMapping | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/cookies.pyi b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/cookies.pyi index b7f0812a4..dad454000 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/cookies.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/cookies.pyi @@ -11,7 +11,7 @@ class MockRequest: def get_full_url(self): ... def is_unverifiable(self): ... def has_header(self, name): ... - def get_header(self, name, default=...): ... + def get_header(self, name, default=None): ... def add_header(self, key, val): ... def add_unredirected_header(self, name, value): ... def get_new_headers(self): ... @@ -29,12 +29,12 @@ class MockResponse: def extract_cookies_to_jar(jar, request, response): ... def get_cookie_header(jar, request): ... -def remove_cookie_by_name(cookiejar, name, domain=..., path=...): ... +def remove_cookie_by_name(cookiejar, name, domain=None, path=None): ... class CookieConflictError(RuntimeError): ... class RequestsCookieJar(CookieJar, MutableMapping[Any, Any]): - def get(self, name, default=..., domain=..., path=...): ... + def get(self, name, default=None, domain=None, path=None): ... def set(self, name, value, **kwargs): ... def iterkeys(self): ... def keys(self): ... @@ -45,7 +45,7 @@ class RequestsCookieJar(CookieJar, MutableMapping[Any, Any]): def list_domains(self): ... def list_paths(self): ... def multiple_domains(self): ... - def get_dict(self, domain=..., path=...): ... + def get_dict(self, domain=None, path=None): ... def __getitem__(self, name): ... def __setitem__(self, name, value) -> None: ... def __delitem__(self, name) -> None: ... @@ -56,5 +56,5 @@ class RequestsCookieJar(CookieJar, MutableMapping[Any, Any]): def create_cookie(name, value, **kwargs): ... def morsel_to_cookie(morsel): ... -def cookiejar_from_dict(cookie_dict, cookiejar=..., overwrite=...): ... +def cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True): ... def merge_cookies(cookiejar, cookies): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/models.pyi b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/models.pyi index 9cdb2443f..5fc38b72e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/models.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/models.pyi @@ -48,7 +48,7 @@ ITER_CHUNK_SIZE: Any class RequestEncodingMixin: @property - def path_url(self): ... + def path_url(self) -> str: ... class RequestHooksMixin: def register_hook(self, event, hook): ... @@ -66,7 +66,17 @@ class Request(RequestHooksMixin): auth: Any cookies: Any def __init__( - self, method=..., url=..., headers=..., files=..., data=..., params=..., auth=..., cookies=..., hooks=..., json=... + self, + method=None, + url=None, + headers=None, + files=None, + data=None, + params=None, + auth=None, + cookies=None, + hooks=None, + json=None, ) -> None: ... def prepare(self) -> PreparedRequest: ... @@ -78,15 +88,25 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): hooks: Any def __init__(self) -> None: ... def prepare( - self, method=..., url=..., headers=..., files=..., data=..., params=..., auth=..., cookies=..., hooks=..., json=... + self, + method=None, + url=None, + headers=None, + files=None, + data=None, + params=None, + auth=None, + cookies=None, + hooks=None, + json=None, ) -> None: ... def copy(self) -> PreparedRequest: ... def prepare_method(self, method) -> None: ... def prepare_url(self, url, params) -> None: ... def prepare_headers(self, headers) -> None: ... - def prepare_body(self, data, files, json=...) -> None: ... + def prepare_body(self, data, files, json=None) -> None: ... def prepare_content_length(self, body) -> None: ... - def prepare_auth(self, auth, url=...) -> None: ... + def prepare_auth(self, auth, url="") -> None: ... def prepare_cookies(self, cookies) -> None: ... def prepare_hooks(self, hooks) -> None: ... @@ -119,9 +139,9 @@ class Response: def is_permanent_redirect(self) -> bool: ... @property def apparent_encoding(self) -> str: ... - def iter_content(self, chunk_size: int | None = ..., decode_unicode: bool = ...) -> Iterator[Any]: ... + def iter_content(self, chunk_size: int | None = 1, decode_unicode: bool = False) -> Iterator[Any]: ... def iter_lines( - self, chunk_size: int | None = ..., decode_unicode: bool = ..., delimiter: str | bytes | None = ... + self, chunk_size: int | None = 512, decode_unicode: bool = False, delimiter: str | bytes | None = None ) -> Iterator[Any]: ... @property def content(self) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/sessions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/sessions.pyi index 19b86d320..2d5dec234 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/sessions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/sessions.pyi @@ -44,12 +44,12 @@ class SessionRedirectMixin: self, resp, req, - stream: bool = ..., - timeout: Incomplete | None = ..., - verify: bool = ..., - cert: Incomplete | None = ..., - proxies: Incomplete | None = ..., - yield_requests: bool = ..., + stream: bool = False, + timeout: Incomplete | None = None, + verify: bool = True, + cert: Incomplete | None = None, + proxies: Incomplete | None = None, + yield_requests: bool = False, **adapter_kwargs, ): ... def rebuild_auth(self, prepared_request, response): ... @@ -140,20 +140,20 @@ class Session(SessionRedirectMixin): self, method: str | bytes, url: str | bytes, - params: _Params | None = ..., - data: _Data | None = ..., - headers: _HeadersUpdateMapping | None = ..., - cookies: None | RequestsCookieJar | _TextMapping = ..., - files: _Files | None = ..., - auth: _Auth | None = ..., - timeout: _Timeout | None = ..., - allow_redirects: bool = ..., - proxies: _TextMapping | None = ..., - hooks: _HooksInput | None = ..., - stream: bool | None = ..., - verify: _Verify | None = ..., - cert: _Cert | None = ..., - json: Incomplete | None = ..., + params: _Params | None = None, + data: _Data | None = None, + headers: _HeadersUpdateMapping | None = None, + cookies: None | RequestsCookieJar | _TextMapping = None, + files: _Files | None = None, + auth: _Auth | None = None, + timeout: _Timeout | None = None, + allow_redirects: bool = True, + proxies: _TextMapping | None = None, + hooks: _HooksInput | None = None, + stream: bool | None = None, + verify: _Verify | None = None, + cert: _Cert | None = None, + json: Incomplete | None = None, ) -> Response: ... def get( self, @@ -215,8 +215,8 @@ class Session(SessionRedirectMixin): def post( self, url: str | bytes, - data: _Data | None = ..., - json: Incomplete | None = ..., + data: _Data | None = None, + json: Incomplete | None = None, *, params: _Params | None = ..., headers: _HeadersUpdateMapping | None = ..., @@ -234,7 +234,7 @@ class Session(SessionRedirectMixin): def put( self, url: str | bytes, - data: _Data | None = ..., + data: _Data | None = None, *, params: _Params | None = ..., headers: _HeadersUpdateMapping | None = ..., @@ -253,7 +253,7 @@ class Session(SessionRedirectMixin): def patch( self, url: str | bytes, - data: _Data | None = ..., + data: _Data | None = None, *, params: _Params | None = ..., headers: _HeadersUpdateMapping | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/structures.pyi b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/structures.pyi index 14ef93c4a..8739ee493 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/structures.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/structures.pyi @@ -5,7 +5,7 @@ _D = TypeVar("_D") _VT = TypeVar("_VT") class CaseInsensitiveDict(MutableMapping[str, _VT], Generic[_VT]): - def __init__(self, data: Mapping[str, _VT] | Iterable[tuple[str, _VT]] | None = ..., **kwargs: _VT) -> None: ... + def __init__(self, data: Mapping[str, _VT] | Iterable[tuple[str, _VT]] | None = None, **kwargs: _VT) -> None: ... def lower_items(self) -> Iterator[tuple[str, _VT]]: ... def __setitem__(self, key: str, value: _VT) -> None: ... def __getitem__(self, key: str) -> _VT: ... @@ -16,10 +16,10 @@ class CaseInsensitiveDict(MutableMapping[str, _VT], Generic[_VT]): class LookupDict(dict[str, _VT]): name: Any - def __init__(self, name: Any = ...) -> None: ... + def __init__(self, name: Any = None) -> None: ... def __getitem__(self, key: str) -> _VT | None: ... # type: ignore[override] def __setattr__(self, __attr: str, __value: _VT) -> None: ... @overload - def get(self, key: str, default: None = ...) -> _VT | None: ... + def get(self, key: str, default: None = None) -> _VT | None: ... @overload def get(self, key: str, default: _D | _VT) -> _D | _VT: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/utils.pyi index 34cd796cd..20dd0e0e8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/utils.pyi @@ -22,7 +22,7 @@ DEFAULT_ACCEPT_ENCODING: str def dict_to_sequence(d): ... def super_len(o): ... -def get_netrc_auth(url: _Uri, raise_errors: bool = ...) -> tuple[str, str] | None: ... +def get_netrc_auth(url: _Uri, raise_errors: bool = False) -> tuple[str, str] | None: ... def guess_filename(obj): ... def extract_zipped_paths(path): ... def atomic_open(filename: StrOrBytesPath) -> _GeneratorContextManager[BufferedWriter]: ... @@ -30,7 +30,7 @@ def from_key_val_list(value): ... def to_key_val_list(value): ... def parse_list_header(value): ... def parse_dict_header(value): ... -def unquote_header_value(value, is_filename: bool = ...): ... +def unquote_header_value(value, is_filename: bool = False): ... def dict_from_cookiejar(cj): ... def add_dict_to_cookiejar(cj, cookie_dict): ... def get_encodings_from_content(content): ... @@ -49,16 +49,16 @@ def is_ipv4_address(string_ip: str) -> bool: ... def is_valid_cidr(string_network: str) -> bool: ... def set_environ(env_name: str, value: None) -> _GeneratorContextManager[None]: ... def should_bypass_proxies(url: _Uri, no_proxy: Iterable[str] | None) -> bool: ... -def get_environ_proxies(url: _Uri, no_proxy: Iterable[str] | None = ...) -> dict[Any, Any]: ... +def get_environ_proxies(url: _Uri, no_proxy: Iterable[str] | None = None) -> dict[Any, Any]: ... def select_proxy(url: _Uri, proxies: Mapping[Any, Any] | None): ... -def resolve_proxies(request: Request | PreparedRequest, proxies: Mapping[str, str] | None, trust_env: bool = ...): ... -def default_user_agent(name: str = ...) -> str: ... +def resolve_proxies(request: Request | PreparedRequest, proxies: Mapping[str, str] | None, trust_env: bool = True): ... +def default_user_agent(name: str = "python-requests") -> str: ... def default_headers() -> CaseInsensitiveDict[str]: ... def parse_header_links(value: str) -> list[dict[str, str]]: ... def guess_json_utf(data): ... def prepend_scheme_if_needed(url, new_scheme): ... def get_auth_from_url(url: _Uri) -> tuple[str, str]: ... -def to_native_string(string, encoding=...): ... +def to_native_string(string, encoding="ascii"): ... def urldefragauth(url: _Uri): ... def rewind_body(prepared_request: PreparedRequest) -> None: ... def check_header_validity(header: tuple[AnyStr, AnyStr]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/retry/retry/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/retry/retry/api.pyi index 2221d4543..e550c1ca2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/retry/retry/api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/retry/retry/api.pyi @@ -9,22 +9,22 @@ logging_logger: Logger def retry_call( f: Callable[..., _R], - fargs: Sequence[Any] | None = ..., - fkwargs: dict[str, Any] | None = ..., + fargs: Sequence[Any] | None = None, + fkwargs: dict[str, Any] | None = None, exceptions: type[Exception] | tuple[type[Exception], ...] = ..., - tries: int = ..., - delay: float = ..., - max_delay: float | None = ..., - backoff: float = ..., - jitter: tuple[float, float] | float = ..., + tries: int = -1, + delay: float = 0, + max_delay: float | None = None, + backoff: float = 1, + jitter: tuple[float, float] | float = 0, logger: Logger | None = ..., ) -> _R: ... def retry( exceptions: type[Exception] | tuple[type[Exception], ...] = ..., - tries: int = ..., - delay: float = ..., - max_delay: float | None = ..., - backoff: float = ..., - jitter: tuple[float, float] | float = ..., + tries: int = -1, + delay: float = 0, + max_delay: float | None = None, + backoff: float = 1, + jitter: tuple[float, float] | float = 0, logger: Logger | None = ..., ) -> IdentityFunction: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi index 7888500e6..df0fa6aca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi @@ -26,24 +26,24 @@ def fixup_namespace_packages(path_item: str) -> None: ... class WorkingSet: entries: list[str] - def __init__(self, entries: Iterable[str] | None = ...) -> None: ... + def __init__(self, entries: Iterable[str] | None = None) -> None: ... def require(self, *requirements: _NestedStr) -> Sequence[Distribution]: ... def run_script(self, requires: str, script_name: str) -> None: ... - def iter_entry_points(self, group: str, name: str | None = ...) -> Generator[EntryPoint, None, None]: ... + def iter_entry_points(self, group: str, name: str | None = None) -> Generator[EntryPoint, None, None]: ... def add_entry(self, entry: str) -> None: ... def __contains__(self, dist: Distribution) -> bool: ... def __iter__(self) -> Generator[Distribution, None, None]: ... def find(self, req: Requirement) -> Distribution | None: ... def resolve( - self, requirements: Iterable[Requirement], env: Environment | None = ..., installer: _InstallerType | None = ... + self, requirements: Iterable[Requirement], env: Environment | None = None, installer: _InstallerType | None = None ) -> list[Distribution]: ... - def add(self, dist: Distribution, entry: str | None = ..., insert: bool = ..., replace: bool = ...) -> None: ... + def add(self, dist: Distribution, entry: str | None = None, insert: bool = True, replace: bool = False) -> None: ... def subscribe(self, callback: Callable[[Distribution], object]) -> None: ... def find_plugins( - self, plugin_env: Environment, full_env: Environment | None = ..., fallback: bool = ... + self, plugin_env: Environment, full_env: Environment | None = None, fallback: bool = True ) -> tuple[list[Distribution], dict[Distribution, Exception]]: ... -working_set: WorkingSet = ... +working_set: WorkingSet require = working_set.require run_script = working_set.run_script @@ -51,7 +51,9 @@ iter_entry_points = working_set.iter_entry_points add_activation_listener = working_set.subscribe class Environment: - def __init__(self, search_path: Sequence[str] | None = ..., platform: str | None = ..., python: str | None = ...) -> None: ... + def __init__( + self, search_path: Sequence[str] | None = None, platform: str | None = ..., python: str | None = ... + ) -> None: ... def __getitem__(self, project_name: str) -> list[Distribution]: ... def __iter__(self) -> Generator[str, None, None]: ... def add(self, dist: Distribution) -> None: ... @@ -60,16 +62,16 @@ class Environment: def __add__(self, other: Distribution | Environment) -> Environment: ... def __iadd__(self, other: Distribution | Environment) -> Self: ... @overload - def best_match(self, req: Requirement, working_set: WorkingSet, *, replace_conflicting: bool = ...) -> Distribution: ... + def best_match(self, req: Requirement, working_set: WorkingSet, *, replace_conflicting: bool = False) -> Distribution: ... @overload def best_match( - self, req: Requirement, working_set: WorkingSet, installer: Callable[[Requirement], _T], replace_conflicting: bool = ... + self, req: Requirement, working_set: WorkingSet, installer: Callable[[Requirement], _T], replace_conflicting: bool = False ) -> _T: ... @overload def obtain(self, requirement: Requirement) -> None: ... @overload def obtain(self, requirement: Requirement, installer: Callable[[Requirement], _T]) -> _T: ... - def scan(self, search_path: Sequence[str] | None = ...) -> None: ... + def scan(self, search_path: Sequence[str] | None = None) -> None: ... class DistInfoDistribution(Distribution): PKG_INFO: ClassVar[Literal["METADATA"]] @@ -109,23 +111,23 @@ class EntryPoint: self, name: str, module_name: str, - attrs: tuple[str, ...] = ..., - extras: tuple[str, ...] = ..., - dist: Distribution | None = ..., + attrs: tuple[str, ...] = (), + extras: tuple[str, ...] = (), + dist: Distribution | None = None, ) -> None: ... @classmethod - def parse(cls, src: str, dist: Distribution | None = ...) -> EntryPoint: ... + def parse(cls, src: str, dist: Distribution | None = None) -> EntryPoint: ... @classmethod - def parse_group(cls, group: str, lines: str | Sequence[str], dist: Distribution | None = ...) -> dict[str, EntryPoint]: ... + def parse_group(cls, group: str, lines: str | Sequence[str], dist: Distribution | None = None) -> dict[str, EntryPoint]: ... @classmethod def parse_map( - cls, data: dict[str, str | Sequence[str]] | str | Sequence[str], dist: Distribution | None = ... + cls, data: dict[str, str | Sequence[str]] | str | Sequence[str], dist: Distribution | None = None ) -> dict[str, EntryPoint]: ... - def load(self, require: bool = ..., env: Environment | None = ..., installer: _InstallerType | None = ...) -> Any: ... - def require(self, env: Environment | None = ..., installer: _InstallerType | None = ...) -> None: ... + def load(self, require: bool = True, env: Environment | None = ..., installer: _InstallerType | None = ...) -> Any: ... + def require(self, env: Environment | None = None, installer: _InstallerType | None = None) -> None: ... def resolve(self) -> Any: ... -def find_distributions(path_item: str, only: bool = ...) -> Generator[Distribution, None, None]: ... +def find_distributions(path_item: str, only: bool = False) -> Generator[Distribution, None, None]: ... @overload def get_distribution(dist: _D) -> _D: ... @overload @@ -148,23 +150,23 @@ class Distribution(NullProvider, IResourceProvider, IMetadataProvider): precedence: int def __init__( self, - location: str | None = ..., - metadata: _MetadataType = ..., - project_name: str | None = ..., - version: str | None = ..., + location: str | None = None, + metadata: _MetadataType = None, + project_name: str | None = None, + version: str | None = None, py_version: str = ..., - platform: str | None = ..., - precedence: int = ..., + platform: str | None = None, + precedence: int = 3, ) -> None: ... @classmethod def from_location( - cls, location: str, basename: str, metadata: _MetadataType = ..., **kw: str | None | int + cls, location: str, basename: str, metadata: _MetadataType = None, **kw: str | None | int ) -> Distribution: ... @classmethod - def from_filename(cls, filename: str, metadata: _MetadataType = ..., **kw: str | None | int) -> Distribution: ... - def activate(self, path: list[str] | None = ...) -> None: ... + def from_filename(cls, filename: str, metadata: _MetadataType = None, **kw: str | None | int) -> Distribution: ... + def activate(self, path: list[str] | None = None) -> None: ... def as_requirement(self) -> Requirement: ... - def requires(self, extras: tuple[str, ...] = ...) -> list[Requirement]: ... + def requires(self, extras: tuple[str, ...] = ()) -> list[Requirement]: ... def clone(self, **kw: str | int | None) -> Requirement: ... def egg_name(self) -> str: ... # type: ignore[override] # supertype's egg_name is a variable, not a method def __cmp__(self, other: Any) -> bool: ... @@ -188,7 +190,7 @@ def resource_isdir(package_or_requirement: _PkgReqType, resource_name: str) -> b def resource_listdir(package_or_requirement: _PkgReqType, resource_name: str) -> list[str]: ... def resource_filename(package_or_requirement: _PkgReqType, resource_name: str) -> str: ... def set_extraction_path(path: str) -> None: ... -def cleanup_resources(force: bool = ...) -> list[str]: ... +def cleanup_resources(force: bool = False) -> list[str]: ... class IResourceManager: def resource_exists(self, package_or_requirement: _PkgReqType, resource_name: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi index 3111dd680..0fef3642e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi @@ -13,7 +13,7 @@ __version__: str class PackageFinder: @classmethod - def find(cls, where: str = ..., exclude: Iterable[str] = ..., include: Iterable[str] = ...) -> list[str]: ... + def find(cls, where: str = ".", exclude: Iterable[str] = (), include: Iterable[str] = ("*",)) -> list[str]: ... class PEP420PackageFinder(PackageFinder): ... @@ -67,7 +67,7 @@ class Command(_Command): command_consumes_arguments: bool def __init__(self, dist: Distribution, **kw: Any) -> None: ... def ensure_string_list(self, option: str | list[str]) -> None: ... - def reinitialize_command(self, command: _Command | str, reinit_subcommands: int = ..., **kw: Any) -> _Command: ... + def reinitialize_command(self, command: _Command | str, reinit_subcommands: int = 0, **kw: Any) -> _Command: ... @abstractmethod def initialize_options(self) -> None: ... @abstractmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/archive_util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/archive_util.pyi index b550a6164..b11be8191 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/archive_util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/archive_util.pyi @@ -6,7 +6,7 @@ from ._distutils.errors import DistutilsError class UnrecognizedFormat(DistutilsError): ... def default_filter(src, dst): ... -def unpack_archive(filename, extract_dir, progress_filter=..., drivers: Incomplete | None = ...) -> None: ... +def unpack_archive(filename, extract_dir, progress_filter=..., drivers: Incomplete | None = None) -> None: ... def unpack_directory(filename, extract_dir, progress_filter=...) -> None: ... def unpack_zipfile(filename, extract_dir, progress_filter=...) -> None: ... def unpack_tarfile(filename, extract_dir, progress_filter=...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/build_meta.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/build_meta.pyi index 323e34827..f4f632db2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/build_meta.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/build_meta.pyi @@ -13,28 +13,28 @@ class Distribution(dist.Distribution): def patch(cls) -> None: ... class _BuildMetaBackend: - def run_setup(self, setup_script: str = ...) -> None: ... - def get_requires_for_build_wheel(self, config_settings: Mapping[str, Any] | None = ...) -> list[str]: ... - def get_requires_for_build_sdist(self, config_settings: Mapping[str, Any] | None = ...) -> list[str]: ... + def run_setup(self, setup_script: str = "setup.py") -> None: ... + def get_requires_for_build_wheel(self, config_settings: Mapping[str, Any] | None = None) -> list[str]: ... + def get_requires_for_build_sdist(self, config_settings: Mapping[str, Any] | None = None) -> list[str]: ... def prepare_metadata_for_build_wheel( - self, metadata_directory: str, config_settings: Mapping[str, Any] | None = ... + self, metadata_directory: str, config_settings: Mapping[str, Any] | None = None ) -> str: ... def build_wheel( - self, wheel_directory: str, config_settings: Mapping[str, Any] | None = ..., metadata_directory: str | None = ... + self, wheel_directory: str, config_settings: Mapping[str, Any] | None = None, metadata_directory: str | None = None ) -> str: ... - def build_sdist(self, sdist_directory: str, config_settings: Mapping[str, Any] | None = ...) -> str: ... + def build_sdist(self, sdist_directory: str, config_settings: Mapping[str, Any] | None = None) -> str: ... def build_editable( - self, wheel_directory: str, config_settings: Mapping[str, Any] | None = ..., metadata_directory: str | None = ... + self, wheel_directory: str, config_settings: Mapping[str, Any] | None = None, metadata_directory: str | None = None ) -> str: ... - def get_requires_for_build_editable(self, config_settings: Mapping[str, Any] | None = ...) -> list[str]: ... + def get_requires_for_build_editable(self, config_settings: Mapping[str, Any] | None = None) -> list[str]: ... def prepare_metadata_for_build_editable( - self, metadata_directory: str, config_settings: Mapping[str, Any] | None = ... + self, metadata_directory: str, config_settings: Mapping[str, Any] | None = None ) -> str: ... class _BuildMetaLegacyBackend(_BuildMetaBackend): - def run_setup(self, setup_script: str = ...) -> None: ... + def run_setup(self, setup_script: str = "setup.py") -> None: ... -_BACKEND: _BuildMetaBackend = ... +_BACKEND: _BuildMetaBackend get_requires_for_build_wheel = _BACKEND.get_requires_for_build_wheel get_requires_for_build_sdist = _BACKEND.get_requires_for_build_sdist prepare_metadata_for_build_wheel = _BACKEND.prepare_metadata_for_build_wheel diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_ext.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_ext.pyi index 507718c27..b2ceb17bc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_ext.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_ext.pyi @@ -27,20 +27,20 @@ class build_ext(_build_ext): def build_extension(self, ext) -> None: ... def links_to_dynamic(self, ext): ... def get_outputs(self): ... - def write_stub(self, output_dir, ext, compile: bool = ...) -> None: ... + def write_stub(self, output_dir, ext, compile: bool = False) -> None: ... def link_shared_object( self, objects, output_libname, - output_dir: Incomplete | None = ..., - libraries: Incomplete | None = ..., - library_dirs: Incomplete | None = ..., - runtime_library_dirs: Incomplete | None = ..., - export_symbols: Incomplete | None = ..., - debug: int = ..., - extra_preargs: Incomplete | None = ..., - extra_postargs: Incomplete | None = ..., - build_temp: Incomplete | None = ..., - target_lang: Incomplete | None = ..., + output_dir: Incomplete | None = None, + libraries: Incomplete | None = None, + library_dirs: Incomplete | None = None, + runtime_library_dirs: Incomplete | None = None, + export_symbols: Incomplete | None = None, + debug: int = 0, + extra_preargs: Incomplete | None = None, + extra_postargs: Incomplete | None = None, + build_temp: Incomplete | None = None, + target_lang: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi index d0289f629..b2b0d859c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi @@ -51,7 +51,7 @@ class easy_install(Command): def finalize_options(self) -> None: ... def expand_basedirs(self) -> None: ... def expand_dirs(self) -> None: ... - def run(self, show_deprecation: bool = ...) -> None: ... + def run(self, show_deprecation: bool = True) -> None: ... def pseudo_tempname(self): ... def warn_deprecated_options(self) -> None: ... def check_site_dir(self) -> None: ... @@ -61,22 +61,22 @@ class easy_install(Command): def add_output(self, path) -> None: ... def not_editable(self, spec) -> None: ... def check_editable(self, spec) -> None: ... - def easy_install(self, spec, deps: bool = ...): ... - def install_item(self, spec, download, tmpdir, deps, install_needed: bool = ...): ... + def easy_install(self, spec, deps: bool = False): ... + def install_item(self, spec, download, tmpdir, deps, install_needed: bool = False): ... def select_scheme(self, name) -> None: ... - def process_distribution(self, requirement, dist, deps: bool = ..., *info) -> None: ... + def process_distribution(self, requirement, dist, deps: bool = True, *info) -> None: ... def should_unzip(self, dist): ... def maybe_move(self, spec, dist_filename, setup_base): ... def install_wrapper_scripts(self, dist) -> None: ... - def install_script(self, dist, script_name, script_text, dev_path: Incomplete | None = ...) -> None: ... - def write_script(self, script_name, contents, mode: str = ..., blockers=...) -> None: ... + def install_script(self, dist, script_name, script_text, dev_path: Incomplete | None = None) -> None: ... + def write_script(self, script_name, contents, mode: str = "t", blockers=()) -> None: ... def install_eggs(self, spec, dist_filename, tmpdir): ... def egg_distribution(self, egg_path): ... def install_egg(self, egg_path, tmpdir): ... def install_exe(self, dist_filename, tmpdir): ... def exe_to_egg(self, dist_filename, egg_tmp): ... def install_wheel(self, wheel_path, tmpdir): ... - def installation_report(self, req, dist, what: str = ...): ... + def installation_report(self, req, dist, what: str = "Installed"): ... def report_editable(self, spec, setup_script): ... def run_setup(self, setup_script, setup_base, args) -> None: ... def build_and_install(self, setup_script, setup_base): ... @@ -96,7 +96,7 @@ class PthDistributions(Environment): filename: Any sitedirs: Any basedir: Any - def __init__(self, filename, sitedirs=...) -> None: ... + def __init__(self, filename, sitedirs=()) -> None: ... def save(self) -> None: ... def add(self, dist) -> None: ... def remove(self, dist) -> None: ... @@ -127,17 +127,17 @@ class ScriptWriter: template: Any command_spec_class: Any @classmethod - def get_script_args(cls, dist, executable: Incomplete | None = ..., wininst: bool = ...) -> Iterator[tuple[str, str]]: ... + def get_script_args(cls, dist, executable: Incomplete | None = None, wininst: bool = False) -> Iterator[tuple[str, str]]: ... @classmethod - def get_script_header(cls, script_text, executable: Incomplete | None = ..., wininst: bool = ...) -> str: ... + def get_script_header(cls, script_text, executable: Incomplete | None = None, wininst: bool = False) -> str: ... @classmethod - def get_args(cls, dist, header: Incomplete | None = ...) -> Iterator[tuple[str, str]]: ... + def get_args(cls, dist, header: Incomplete | None = None) -> Iterator[tuple[str, str]]: ... @classmethod def get_writer(cls, force_windows: bool) -> type[ScriptWriter]: ... @classmethod def best(cls) -> type[ScriptWriter]: ... @classmethod - def get_header(cls, script_text: str = ..., executable: Incomplete | None = ...) -> str: ... + def get_header(cls, script_text: str = "", executable: Incomplete | None = None) -> str: ... class WindowsScriptWriter(ScriptWriter): command_spec_class: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi index 931911f07..d63a3c7f1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi @@ -34,7 +34,7 @@ class egg_info(InfoCommon, Command): def tag_svn_revision(self, value) -> None: ... def save_version_info(self, filename) -> None: ... def finalize_options(self) -> None: ... - def write_or_delete_file(self, what, filename, data, force: bool = ...) -> None: ... + def write_or_delete_file(self, what, filename, data, force: bool = False) -> None: ... def write_file(self, what, filename, data) -> None: ... def delete_file(self, filename) -> None: ... def run(self) -> None: ... @@ -43,7 +43,7 @@ class egg_info(InfoCommon, Command): def check_broken_egg_info(self) -> None: ... class FileList(_FileList): - def __init__(self, warn=..., debug_print=..., ignore_egg_info_dir: bool = ...) -> None: ... + def __init__(self, warn=None, debug_print=None, ignore_egg_info_dir: bool = False) -> None: ... def process_template_line(self, line) -> None: ... def include(self, pattern): ... def exclude(self, pattern): ... @@ -79,7 +79,7 @@ def write_requirements(cmd, basename, filename) -> None: ... def write_setup_requirements(cmd, basename, filename) -> None: ... def write_toplevel_names(cmd, basename, filename) -> None: ... def overwrite_arg(cmd, basename, filename) -> None: ... -def write_arg(cmd, basename, filename, force: bool = ...) -> None: ... +def write_arg(cmd, basename, filename, force: bool = False) -> None: ... def write_entries(cmd, basename, filename) -> None: ... def get_pkg_info_revision(): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_lib.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_lib.pyi index 7cd28d8f1..f76028e0f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_lib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_lib.pyi @@ -4,6 +4,6 @@ class install_lib(orig.install_lib): def run(self) -> None: ... def get_exclusions(self): ... def copy_tree( - self, infile, outfile, preserve_mode: int = ..., preserve_times: int = ..., preserve_symlinks: int = ..., level: int = ... + self, infile, outfile, preserve_mode: int = 1, preserve_times: int = 1, preserve_symlinks: int = 0, level: int = 1 ): ... def get_outputs(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_scripts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_scripts.pyi index 3dc4c1a1f..7157dc5d3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_scripts.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_scripts.pyi @@ -7,4 +7,4 @@ class install_scripts(orig.install_scripts): def initialize_options(self) -> None: ... outfiles: Any def run(self) -> None: ... - def write_script(self, script_name, contents, mode: str = ..., *ignored) -> None: ... + def write_script(self, script_name, contents, mode: str = "t", *ignored) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/sdist.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/sdist.pyi index f544dbfc7..fe4b59d73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/sdist.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/sdist.pyi @@ -2,7 +2,7 @@ from typing import Any from .._distutils.command import sdist as orig -def walk_revctrl(dirname: str = ...) -> None: ... +def walk_revctrl(dirname: str = "") -> None: ... class sdist(orig.sdist): user_options: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/setopt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/setopt.pyi index 0461717a9..8ad8da2ce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/setopt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/setopt.pyi @@ -3,8 +3,8 @@ from typing import Any from setuptools import Command -def config_file(kind: str = ...): ... -def edit_config(filename, settings, dry_run: bool = ...) -> None: ... +def config_file(kind: str = "local"): ... +def edit_config(filename, settings, dry_run: bool = False) -> None: ... class option_base(Command): user_options: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/test.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/test.pyi index 1b7a32f4f..004b534e7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/test.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/test.pyi @@ -11,7 +11,7 @@ _T = TypeVar("_T") class ScanningLoader(TestLoader): def __init__(self) -> None: ... - def loadTestsFromModule(self, module: ModuleType, pattern: Incomplete | None = ...) -> list[TestSuite]: ... # type: ignore[override] + def loadTestsFromModule(self, module: ModuleType, pattern: Incomplete | None = None) -> list[TestSuite]: ... # type: ignore[override] class NonDataProperty(Generic[_T]): fget: Callable[..., _T] @@ -33,7 +33,7 @@ class test(Command): @NonDataProperty def test_args(self) -> list[str]: ... def with_project_on_sys_path(self, func) -> None: ... - def project_on_sys_path(self, include_dists=...): ... + def project_on_sys_path(self, include_dists=[]): ... @staticmethod def paths_on_pythonpath(paths) -> None: ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config.pyi index 251f2b803..0d865c53c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config.pyi @@ -1,2 +1,2 @@ -def read_configuration(filepath, find_others: bool = ..., ignore_option_errors: bool = ...): ... -def parse_configuration(distribution, command_options, ignore_option_errors: bool = ...): ... +def read_configuration(filepath, find_others: bool = False, ignore_option_errors: bool = False): ... +def parse_configuration(distribution, command_options, ignore_option_errors: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/depends.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/depends.pyi index a34fe5392..072ebc51e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/depends.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/depends.pyi @@ -6,15 +6,15 @@ class Require: name, requested_version, module, - homepage: str = ..., - attribute: Incomplete | None = ..., - format: Incomplete | None = ..., + homepage: str = "", + attribute: Incomplete | None = None, + format: Incomplete | None = None, ) -> None: ... def full_name(self): ... def version_ok(self, version): ... - def get_version(self, paths: Incomplete | None = ..., default: str = ...): ... - def is_present(self, paths: Incomplete | None = ...): ... - def is_current(self, paths: Incomplete | None = ...): ... + def get_version(self, paths: Incomplete | None = None, default: str = "unknown"): ... + def is_present(self, paths: Incomplete | None = None): ... + def is_current(self, paths: Incomplete | None = None): ... -def get_module_constant(module, symbol, default: int = ..., paths: Incomplete | None = ...): ... -def extract_constant(code, symbol, default: int = ...): ... +def get_module_constant(module, symbol, default: int = -1, paths: Incomplete | None = None): ... +def extract_constant(code, symbol, default: int = -1): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/dist.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/dist.pyi index 3e34d9b1b..8ace1407a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/dist.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/dist.pyi @@ -13,7 +13,7 @@ class Distribution(_Distribution): def __init__(self, attrs: MutableMapping[str, Any] | None = None) -> None: ... def warn_dash_deprecation(self, opt: str, section: str) -> str: ... def make_option_lowercase(self, opt: str, section: str) -> str: ... - def parse_config_files(self, filenames: Iterable[str] | None = ..., ignore_option_errors: bool = ...) -> None: ... + def parse_config_files(self, filenames: Iterable[str] | None = None, ignore_option_errors: bool = False) -> None: ... def fetch_build_eggs(self, requires: str | Iterable[str]): ... def get_egg_cache_dir(self) -> str: ... def fetch_build_egg(self, req): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/extern/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/extern/__init__.pyi index 864dc18dc..080cdf737 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/extern/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/extern/__init__.pyi @@ -5,13 +5,13 @@ class VendorImporter: root_name: Any vendored_names: Any vendor_pkg: Any - def __init__(self, root_name, vendored_names=..., vendor_pkg: Incomplete | None = ...) -> None: ... + def __init__(self, root_name, vendored_names=(), vendor_pkg: Incomplete | None = None) -> None: ... @property def search_path(self) -> None: ... def load_module(self, fullname): ... def create_module(self, spec): ... def exec_module(self, module) -> None: ... - def find_spec(self, fullname, path: Incomplete | None = ..., target: Incomplete | None = ...): ... + def find_spec(self, fullname, path: Incomplete | None = None, target: Incomplete | None = None): ... def install(self) -> None: ... names: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/glob.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/glob.pyi index 3da334deb..3ae65a804 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/glob.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/glob.pyi @@ -1,3 +1,3 @@ -def glob(pathname, recursive: bool = ...): ... -def iglob(pathname, recursive: bool = ...): ... +def glob(pathname, recursive: bool = False): ... +def iglob(pathname, recursive: bool = False): ... def escape(pathname): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/msvc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/msvc.pyi index 952f11893..6ad7b176a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/msvc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/msvc.pyi @@ -12,9 +12,9 @@ class PlatformInfo: def target_cpu(self): ... def target_is_x86(self): ... def current_is_x86(self): ... - def current_dir(self, hidex86: bool = ..., x64: bool = ...): ... - def target_dir(self, hidex86: bool = ..., x64: bool = ...): ... - def cross_dir(self, forcex86: bool = ...): ... + def current_dir(self, hidex86: bool = False, x64: bool = False): ... + def target_dir(self, hidex86: bool = False, x64: bool = False): ... + def cross_dir(self, forcex86: bool = False): ... class RegistryInfo: HKEYS: Incomplete @@ -38,7 +38,7 @@ class RegistryInfo: def netfx_sdk(self): ... @property def windows_kits_roots(self): ... - def microsoft(self, key, x86: bool = ...): ... + def microsoft(self, key, x86: bool = False): ... def lookup(self, key, name): ... class SystemInfo: @@ -49,7 +49,7 @@ class SystemInfo: pi: Incomplete known_vs_paths: Incomplete vs_ver: Incomplete - def __init__(self, registry_info, vc_ver: Incomplete | None = ...) -> None: ... + def __init__(self, registry_info, vc_ver: Incomplete | None = None) -> None: ... def find_reg_vs_vers(self): ... def find_programdata_vs_vers(self): ... @property @@ -87,7 +87,7 @@ class EnvironmentInfo: pi: Incomplete ri: Incomplete si: Incomplete - def __init__(self, arch, vc_ver: Incomplete | None = ..., vc_min_ver: int = ...) -> None: ... + def __init__(self, arch, vc_ver: Incomplete | None = None, vc_min_ver: int = 0) -> None: ... @property def vs_ver(self): ... @property @@ -132,4 +132,4 @@ class EnvironmentInfo: def FSharp(self): ... @property def VCRuntimeRedist(self): ... - def return_env(self, exists: bool = ...): ... + def return_env(self, exists: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/package_index.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/package_index.pyi index f672a1047..171745051 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/package_index.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/package_index.pyi @@ -5,9 +5,9 @@ from typing import Any from pkg_resources import Environment def parse_bdist_wininst(name): ... -def distros_for_url(url, metadata: Incomplete | None = ...) -> None: ... +def distros_for_url(url, metadata: Incomplete | None = None) -> None: ... def interpret_distro_name( - location, basename, metadata, py_version: Incomplete | None = ..., precedence=..., platform: Incomplete | None = ... + location, basename, metadata, py_version: Incomplete | None = None, precedence=1, platform: Incomplete | None = None ) -> None: ... class ContentChecker: @@ -36,18 +36,24 @@ class PackageIndex(Environment): to_scan: Any opener: Any def __init__( - self, index_url: str = ..., hosts=..., ca_bundle: Incomplete | None = ..., verify_ssl: bool = ..., *args, **kw + self, + index_url: str = "https://pypi.org/simple/", + hosts=("*",), + ca_bundle: Incomplete | None = None, + verify_ssl: bool = True, + *args, + **kw, ) -> None: ... - def process_url(self, url, retrieve: bool = ...) -> None: ... - def process_filename(self, fn, nested: bool = ...) -> None: ... - def url_ok(self, url, fatal: bool = ...): ... + def process_url(self, url, retrieve: bool = False) -> None: ... + def process_filename(self, fn, nested: bool = False) -> None: ... + def url_ok(self, url, fatal: bool = False): ... def scan_egg_links(self, search_path) -> None: ... def scan_egg_link(self, path, entry) -> None: ... def process_index(self, url, page): ... def need_version_info(self, url) -> None: ... - def scan_all(self, msg: Incomplete | None = ..., *args) -> None: ... + def scan_all(self, msg: Incomplete | None = None, *args) -> None: ... def find_packages(self, requirement) -> None: ... - def obtain(self, requirement, installer: Incomplete | None = ...): ... + def obtain(self, requirement, installer: Incomplete | None = None): ... def check_hash(self, checker, filename, tfp) -> None: ... def add_find_links(self, urls) -> None: ... def prescan(self) -> None: ... @@ -57,16 +63,16 @@ class PackageIndex(Environment): self, requirement, tmpdir, - force_scan: bool = ..., - source: bool = ..., - develop_ok: bool = ..., - local_index: Incomplete | None = ..., + force_scan: bool = False, + source: bool = False, + develop_ok: bool = False, + local_index: Incomplete | None = None, ): ... - def fetch(self, requirement, tmpdir, force_scan: bool = ..., source: bool = ...): ... + def fetch(self, requirement, tmpdir, force_scan: bool = False, source: bool = False): ... def gen_setup(self, filename, fragment, tmpdir): ... dl_blocksize: int def reporthook(self, url, filename, blocknum, blksize, size) -> None: ... - def open_url(self, url, warning: Incomplete | None = ...): ... + def open_url(self, url, warning: Incomplete | None = None): ... def scan_url(self, url) -> None: ... def debug(self, msg, *args) -> None: ... def info(self, msg, *args) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/sandbox.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/sandbox.pyi index 71fb7cf5c..89e141184 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/sandbox.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/sandbox.pyi @@ -28,7 +28,7 @@ class DirectorySandbox(AbstractSandbox): write_ops: Any def __init__(self, sandbox, exceptions=...) -> None: ... def tmpnam(self) -> None: ... - def open(self, file, flags, mode: int = ..., *args, **kw): ... + def open(self, file, flags, mode: int = 511, *args, **kw): ... class SandboxViolation(DistutilsError): tmpl: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/encoder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/encoder.pyi index a3603029a..88c3da92c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/encoder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/encoder.pyi @@ -5,6 +5,6 @@ class JSONEncoder: def __init__(self, *args: Any, **kwargs: Any) -> None: ... def encode(self, o: Any) -> str: ... def default(self, o: Any) -> NoReturn: ... - def iterencode(self, o: Any, _one_shot: bool = ...) -> Iterator[str]: ... + def iterencode(self, o: Any, _one_shot: bool = False) -> Iterator[str]: ... class JSONEncoderForHTML(JSONEncoder): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/errors.pyi index 10cff3f28..b4b6539c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/errors.pyi @@ -1,7 +1,7 @@ __all__ = ["JSONDecodeError"] def linecol(doc: str, pos: int) -> tuple[int, int]: ... -def errmsg(msg: str, doc: str, pos: int, end: int | None = ...) -> str: ... +def errmsg(msg: str, doc: str, pos: int, end: int | None = None) -> str: ... class JSONDecodeError(ValueError): msg: str @@ -12,5 +12,5 @@ class JSONDecodeError(ValueError): colno: int endlineno: int | None endcolno: int | None - def __init__(self, msg: str, doc: str, pos: int, end: int | None = ...) -> None: ... + def __init__(self, msg: str, doc: str, pos: int, end: int | None = None) -> None: ... def __reduce__(self) -> tuple[JSONDecodeError, tuple[str, str, int, int | None]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/scanner.pyi b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/scanner.pyi index 42b828a69..66b8d27f8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/scanner.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/scanner.pyi @@ -1,9 +1,9 @@ class JSONDecodeError(ValueError): - msg: str = ... - doc: str = ... - pos: int = ... - end: int | None = ... - lineno: int = ... - colno: int = ... - endlineno: int | None = ... - endcolno: int | None = ... + msg: str + doc: str + pos: int + end: int | None + lineno: int + colno: int + endlineno: int | None + endcolno: int | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/six/six/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/six/six/__init__.pyi index a5333e1ff..d3de453e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/six/six/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/six/six/__init__.pyi @@ -84,16 +84,16 @@ def assertNotRegex(self: unittest.TestCase, text: AnyStr, expected_regex: AnyStr exec_ = exec -def reraise(tp: type[BaseException] | None, value: BaseException | None, tb: types.TracebackType | None = ...) -> NoReturn: ... +def reraise(tp: type[BaseException] | None, value: BaseException | None, tb: types.TracebackType | None = None) -> NoReturn: ... def raise_from(value: BaseException | type[BaseException], from_value: BaseException | None) -> NoReturn: ... print_ = print def with_metaclass(meta: type, *bases: type) -> type: ... def add_metaclass(metaclass: type) -> IdentityFunction: ... -def ensure_binary(s: bytes | str, encoding: str = ..., errors: str = ...) -> bytes: ... -def ensure_str(s: bytes | str, encoding: str = ..., errors: str = ...) -> str: ... -def ensure_text(s: bytes | str, encoding: str = ..., errors: str = ...) -> str: ... +def ensure_binary(s: bytes | str, encoding: str = "utf-8", errors: str = "strict") -> bytes: ... +def ensure_str(s: bytes | str, encoding: str = "utf-8", errors: str = "strict") -> str: ... +def ensure_text(s: bytes | str, encoding: str = "utf-8", errors: str = "strict") -> str: ... def python_2_unicode_compatible(klass: _T) -> _T: ... class _LazyDescr: @@ -103,13 +103,15 @@ class _LazyDescr: class MovedModule(_LazyDescr): mod: str - def __init__(self, name: str, old: str, new: str | None = ...) -> None: ... + def __init__(self, name: str, old: str, new: str | None = None) -> None: ... def __getattr__(self, attr: str) -> Any: ... class MovedAttribute(_LazyDescr): mod: str attr: str - def __init__(self, name: str, old_mod: str, new_mod: str, old_attr: str | None = ..., new_attr: str | None = ...) -> None: ... + def __init__( + self, name: str, old_mod: str, new_mod: str, old_attr: str | None = None, new_attr: str | None = None + ) -> None: ... def add_move(move: MovedModule | MovedAttribute) -> None: ... def remove_move(name: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/slumber/slumber/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/slumber/slumber/__init__.pyi index f35d7855e..cd5817070 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/slumber/slumber/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/slumber/slumber/__init__.pyi @@ -14,14 +14,14 @@ class ResourceAttributesMixin: class Resource(ResourceAttributesMixin): def __init__(self, *args: Any, **kwargs: Any) -> None: ... - def __call__(self, id: str | None = ..., format: str | None = ..., url_override: str | None = ...) -> Self: ... + def __call__(self, id: str | None = None, format: str | None = None, url_override: str | None = None) -> Self: ... def as_raw(self) -> Self: ... def get(self, **kwargs: Any) -> Response: ... def options(self, **kwargs: Any) -> Response: ... def head(self, **kwargs: Any) -> Response: ... - def post(self, data: _Data | None = ..., files: _Files | None = ..., **kwargs: Any) -> Response: ... - def patch(self, data: _Data | None = ..., files: _Files | None = ..., **kwargs: Any) -> Response: ... - def put(self, data: _Data | None = ..., files: _Files | None = ..., **kwargs: Any) -> Response: ... + def post(self, data: _Data | None = None, files: _Files | None = None, **kwargs: Any) -> Response: ... + def patch(self, data: _Data | None = None, files: _Files | None = None, **kwargs: Any) -> Response: ... + def put(self, data: _Data | None = None, files: _Files | None = None, **kwargs: Any) -> Response: ... def delete(self, **kwargs: Any) -> Response: ... def url(self) -> str: ... @@ -29,11 +29,11 @@ class API(ResourceAttributesMixin): resource_class: type[Resource] def __init__( self, - base_url: str | None = ..., - auth: _Auth | None = ..., - format: str | None = ..., - append_slash: bool = ..., - session: Session | None = ..., - serializer: Serializer | None = ..., + base_url: str | None = None, + auth: _Auth | None = None, + format: str | None = None, + append_slash: bool = True, + session: Session | None = None, + serializer: Serializer | None = None, raw: bool = ..., ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/slumber/slumber/serialize.pyi b/packages/pyright-internal/typeshed-fallback/stubs/slumber/slumber/serialize.pyi index b9256756a..e806a448e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/slumber/slumber/serialize.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/slumber/slumber/serialize.pyi @@ -21,8 +21,8 @@ class YamlSerializer(BaseSerializer): class Serializer: serializers: list[BaseSerializer] default: str - def __init__(self, default: str | None = ..., serializers: list[BaseSerializer] | None = ...) -> None: ... - def get_serializer(self, name: str | None = ..., content_type: str | None = ...) -> BaseSerializer: ... - def loads(self, data: _Data, format: str | None = ...) -> Any: ... - def dumps(self, data: _Data, format: str | None = ...) -> Any: ... - def get_content_type(self, format: str | None = ...) -> str: ... + def __init__(self, default: str | None = None, serializers: list[BaseSerializer] | None = None) -> None: ... + def get_serializer(self, name: str | None = None, content_type: str | None = None) -> BaseSerializer: ... + def loads(self, data: _Data, format: str | None = None) -> Any: ... + def dumps(self, data: _Data, format: str | None = None) -> Any: ... + def get_content_type(self, format: str | None = None) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/stdlib_list/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/stdlib_list/base.pyi index 83321049e..a9d4db587 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/stdlib_list/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/stdlib_list/base.pyi @@ -2,5 +2,5 @@ long_versions: list[str] short_versions: list[str] def get_canonical_version(version: str) -> str: ... -def stdlib_list(version: str | None = ...) -> list[str]: ... -def in_stdlib(module_name: str, version: str | None = ...) -> bool: ... +def stdlib_list(version: str | None = None) -> list[str]: ... +def in_stdlib(module_name: str, version: str | None = None) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/__init__.pyi index d05cf52b6..c1823fb93 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/__init__.pyi @@ -21,5 +21,5 @@ ca_bundle_path: Any log: Any def set_app_info( - name, partner_id: Incomplete | None = ..., url: Incomplete | None = ..., version: Incomplete | None = ... + name, partner_id: Incomplete | None = None, url: Incomplete | None = None, version: Incomplete | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_requestor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_requestor.pyi index 858371a18..cf9a41a9c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_requestor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_requestor.pyi @@ -12,22 +12,27 @@ class APIRequestor: stripe_account: Any def __init__( self, - key: Incomplete | None = ..., - client: Incomplete | None = ..., - api_base: Incomplete | None = ..., - api_version: Incomplete | None = ..., - account: Incomplete | None = ..., + key: Incomplete | None = None, + client: Incomplete | None = None, + api_base: Incomplete | None = None, + api_version: Incomplete | None = None, + account: Incomplete | None = None, ) -> None: ... @classmethod def format_app_info(cls, info): ... - def request(self, method, url, params: Incomplete | None = ..., headers: Incomplete | None = ...): ... - def request_stream(self, method, url, params: Incomplete | None = ..., headers: Incomplete | None = ...): ... + def request(self, method, url, params: Incomplete | None = None, headers: Incomplete | None = None): ... + def request_stream(self, method, url, params: Incomplete | None = None, headers: Incomplete | None = None): ... def handle_error_response(self, rbody, rcode, resp, rheaders) -> None: ... def specific_api_error(self, rbody, rcode, resp, rheaders, error_data): ... def specific_oauth_error(self, rbody, rcode, resp, rheaders, error_code): ... def request_headers(self, api_key, method): ... def request_raw( - self, method, url, params: Incomplete | None = ..., supplied_headers: Incomplete | None = ..., is_streaming: bool = ... + self, + method, + url, + params: Incomplete | None = None, + supplied_headers: Incomplete | None = None, + is_streaming: bool = False, ): ... def interpret_response(self, rbody, rcode, rheaders): ... def interpret_streaming_response(self, stream, rcode, rheaders): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/api_resource.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/api_resource.pyi index 8891f1133..0e9406eb4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/api_resource.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/api_resource.pyi @@ -6,7 +6,7 @@ from stripe.stripe_object import StripeObject as StripeObject class APIResource(StripeObject): @classmethod - def retrieve(cls, id, api_key: Incomplete | None = ..., **params) -> Self: ... + def retrieve(cls, id, api_key: Incomplete | None = None, **params) -> Self: ... def refresh(self) -> Self: ... @classmethod def class_url(cls) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/createable_api_resource.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/createable_api_resource.pyi index 1191ea7ff..b7f0c0210 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/createable_api_resource.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/createable_api_resource.pyi @@ -8,9 +8,9 @@ class CreateableAPIResource(APIResource): @classmethod def create( cls, - api_key: Incomplete | None = ..., - idempotency_key: str | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + idempotency_key: str | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/custom_method.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/custom_method.pyi index 8ac66a251..4e0a71b54 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/custom_method.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/custom_method.pyi @@ -1,3 +1,3 @@ from _typeshed import Incomplete -def custom_method(name, http_verb, http_path: Incomplete | None = ..., is_streaming: bool = ...): ... +def custom_method(name, http_verb, http_path: Incomplete | None = None, is_streaming: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/listable_api_resource.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/listable_api_resource.pyi index 926e41fcf..13ad6ff82 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/listable_api_resource.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/listable_api_resource.pyi @@ -12,8 +12,8 @@ class ListableAPIResource(APIResource): @classmethod def list( cls, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ) -> ListObject: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/nested_resource_class_methods.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/nested_resource_class_methods.pyi index 080ce1753..a1687f391 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/nested_resource_class_methods.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/nested_resource_class_methods.pyi @@ -3,5 +3,5 @@ from _typeshed import Incomplete from stripe import api_requestor as api_requestor def nested_resource_class_methods( - resource, path: Incomplete | None = ..., operations: Incomplete | None = ..., resource_plural: Incomplete | None = ... + resource, path: Incomplete | None = None, operations: Incomplete | None = None, resource_plural: Incomplete | None = None ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/updateable_api_resource.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/updateable_api_resource.pyi index ffbcbb141..00ede54fa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/updateable_api_resource.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/updateable_api_resource.pyi @@ -5,4 +5,4 @@ from stripe.api_resources.abstract.api_resource import APIResource as APIResourc class UpdateableAPIResource(APIResource): @classmethod def modify(cls, sid: str, **params) -> Self: ... - def save(self, idempotency_key: str | None = ...) -> Self: ... + def save(self, idempotency_key: str | None = None) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/verify_mixin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/verify_mixin.pyi index 139533f26..01a1ce2c0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/verify_mixin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/abstract/verify_mixin.pyi @@ -1,2 +1,2 @@ class VerifyMixin: - def verify(self, idempotency_key: str | None = ..., **params): ... + def verify(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/account.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/account.pyi index 98c789604..901dd7723 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/account.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/account.pyi @@ -12,20 +12,20 @@ from stripe.api_resources.abstract import ( class Account(CreateableAPIResource, DeletableAPIResource, ListableAPIResource): OBJECT_NAME: str - def reject(self, idempotency_key: str | None = ..., **params): ... + def reject(self, idempotency_key: str | None = None, **params): ... @classmethod - def retrieve(cls, id: Incomplete | None = ..., api_key: Incomplete | None = ..., **params): ... + def retrieve(cls, id: Incomplete | None = None, api_key: Incomplete | None = None, **params): ... @classmethod - def modify(cls, id: Incomplete | None = ..., **params): ... + def modify(cls, id: Incomplete | None = None, **params): ... def instance_url(self): ... - def persons(self, idempotency_key: str | None = ..., **params): ... + def persons(self, idempotency_key: str | None = None, **params): ... def deauthorize(self, **params): ... def serialize(self, previous): ... @classmethod - def capabilitys_url(cls, id, nested_id=...): ... + def capabilitys_url(cls, id, nested_id=None): ... @classmethod def capabilitys_request( - cls, method, url, api_key=..., idempotency_key=..., stripe_version=..., stripe_account=..., **params + cls, method, url, api_key=None, idempotency_key=None, stripe_version=None, stripe_account=None, **params ): ... @classmethod def retrieve_capability(cls, id, nested_id, **params): ... @@ -34,10 +34,10 @@ class Account(CreateableAPIResource, DeletableAPIResource, ListableAPIResource): @classmethod def list_capabilities(cls, id, **params): ... @classmethod - def external_accounts_url(cls, id, nested_id=...): ... + def external_accounts_url(cls, id, nested_id=None): ... @classmethod def external_accounts_request( - cls, method, url, api_key=..., idempotency_key=..., stripe_version=..., stripe_account=..., **params + cls, method, url, api_key=None, idempotency_key=None, stripe_version=None, stripe_account=None, **params ): ... @classmethod def create_external_account(cls, id, **params): ... @@ -50,17 +50,19 @@ class Account(CreateableAPIResource, DeletableAPIResource, ListableAPIResource): @classmethod def list_external_accounts(cls, id, **params): ... @classmethod - def login_links_url(cls, id, nested_id=...): ... + def login_links_url(cls, id, nested_id=None): ... @classmethod def login_links_request( - cls, method, url, api_key=..., idempotency_key=..., stripe_version=..., stripe_account=..., **params + cls, method, url, api_key=None, idempotency_key=None, stripe_version=None, stripe_account=None, **params ): ... @classmethod def create_login_link(cls, id, **params): ... @classmethod - def persons_url(cls, id, nested_id=...): ... + def persons_url(cls, id, nested_id=None): ... @classmethod - def persons_request(cls, method, url, api_key=..., idempotency_key=..., stripe_version=..., stripe_account=..., **params): ... + def persons_request( + cls, method, url, api_key=None, idempotency_key=None, stripe_version=None, stripe_account=None, **params + ): ... @classmethod def create_person(cls, id, **params): ... @classmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/alipay_account.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/alipay_account.pyi index f18475a67..3e475c9a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/alipay_account.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/alipay_account.pyi @@ -16,8 +16,8 @@ class AlipayAccount(DeletableAPIResource, UpdateableAPIResource): def retrieve( cls, id, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/application_fee.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/application_fee.pyi index e9d275a84..722ba2f62 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/application_fee.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/application_fee.pyi @@ -5,4 +5,4 @@ from stripe.api_resources.abstract import ( class ApplicationFee(ListableAPIResource): OBJECT_NAME: str - def refund(self, idempotency_key: str | None = ..., **params): ... + def refund(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/application_fee_refund.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/application_fee_refund.pyi index 865bb0fc9..7014f67f6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/application_fee_refund.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/application_fee_refund.pyi @@ -11,4 +11,4 @@ class ApplicationFeeRefund(UpdateableAPIResource): def modify(cls, fee, sid: str, **params) -> Self: ... # type: ignore[override] def instance_url(self) -> str: ... @classmethod - def retrieve(cls, id, api_key: Incomplete | None = ..., **params) -> NoReturn: ... + def retrieve(cls, id, api_key: Incomplete | None = None, **params) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/bank_account.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/bank_account.pyi index 5698d9146..7bfc50c17 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/bank_account.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/bank_account.pyi @@ -19,8 +19,8 @@ class BankAccount(DeletableAPIResource, UpdateableAPIResource, VerifyMixin): def retrieve( cls, id, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/capability.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/capability.pyi index fc0a30b36..34cc62b6d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/capability.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/capability.pyi @@ -10,4 +10,4 @@ class Capability(UpdateableAPIResource): @classmethod def modify(cls, sid, **params) -> NoReturn: ... @classmethod - def retrieve(cls, id, api_key: Incomplete | None = ..., **params) -> NoReturn: ... + def retrieve(cls, id, api_key: Incomplete | None = None, **params) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/card.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/card.pyi index 663cb32b6..85da7d928 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/card.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/card.pyi @@ -19,8 +19,8 @@ class Card(DeletableAPIResource, UpdateableAPIResource): def retrieve( cls, id, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/charge.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/charge.pyi index a9c624668..57bc5e979 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/charge.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/charge.pyi @@ -9,9 +9,9 @@ from stripe.api_resources.abstract import ( class Charge(CreateableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def capture(self, idempotency_key: str | None = ..., **params): ... - def refund(self, idempotency_key: str | None = ..., **params): ... - def update_dispute(self, idempotency_key: str | None = ..., **params): ... - def close_dispute(self, idempotency_key: str | None = ..., **params): ... - def mark_as_fraudulent(self, idempotency_key: str | None = ...): ... - def mark_as_safe(self, idempotency_key: str | None = ...): ... + def capture(self, idempotency_key: str | None = None, **params): ... + def refund(self, idempotency_key: str | None = None, **params): ... + def update_dispute(self, idempotency_key: str | None = None, **params): ... + def close_dispute(self, idempotency_key: str | None = None, **params): ... + def mark_as_fraudulent(self, idempotency_key: str | None = None): ... + def mark_as_safe(self, idempotency_key: str | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/checkout/session.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/checkout/session.pyi index 47ca10462..b4cc12bf6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/checkout/session.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/checkout/session.pyi @@ -13,4 +13,4 @@ class Session(CreateableAPIResource, ListableAPIResource): def expire(cls, session, api_key=None, stripe_version=None, stripe_account=None, **params): ... @overload @classmethod - def expire(cls, idempotency_key: str | None = ..., **params): ... + def expire(cls, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/credit_note.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/credit_note.pyi index 906b80a1e..ae42f8304 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/credit_note.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/credit_note.pyi @@ -10,12 +10,12 @@ from stripe.api_resources.abstract import ( class CreditNote(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def void_credit_note(self, idempotency_key: str | None = ..., **params): ... + def void_credit_note(self, idempotency_key: str | None = None, **params): ... @classmethod def preview( cls, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/customer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/customer.pyi index 36e3327d9..c407974cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/customer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/customer.pyi @@ -13,10 +13,10 @@ class Customer(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, OBJECT_NAME: str def delete_discount(self, **params) -> None: ... @classmethod - def balance_transactions_url(cls, id, nested_id=...): ... + def balance_transactions_url(cls, id, nested_id=None): ... @classmethod def balance_transactions_request( - cls, method, url, api_key=..., idempotency_key=..., stripe_version=..., stripe_account=..., **params + cls, method, url, api_key=None, idempotency_key=None, stripe_version=None, stripe_account=None, **params ): ... @classmethod def create_balance_transaction(cls, id, **params): ... @@ -27,9 +27,11 @@ class Customer(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, @classmethod def list_balance_transactions(cls, id, **params): ... @classmethod - def sources_url(cls, id, nested_id=...): ... + def sources_url(cls, id, nested_id=None): ... @classmethod - def sources_request(cls, method, url, api_key=..., idempotency_key=..., stripe_version=..., stripe_account=..., **params): ... + def sources_request( + cls, method, url, api_key=None, idempotency_key=None, stripe_version=None, stripe_account=None, **params + ): ... @classmethod def create_source(cls, id, **params): ... @classmethod @@ -41,9 +43,11 @@ class Customer(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, @classmethod def list_sources(cls, id, **params): ... @classmethod - def tax_ids_url(cls, id, nested_id=...): ... + def tax_ids_url(cls, id, nested_id=None): ... @classmethod - def tax_ids_request(cls, method, url, api_key=..., idempotency_key=..., stripe_version=..., stripe_account=..., **params): ... + def tax_ids_request( + cls, method, url, api_key=None, idempotency_key=None, stripe_version=None, stripe_account=None, **params + ): ... @classmethod def create_tax_id(cls, id, **params): ... @classmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/customer_balance_transaction.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/customer_balance_transaction.pyi index 6a27ca9cf..eda8485d9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/customer_balance_transaction.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/customer_balance_transaction.pyi @@ -8,4 +8,4 @@ class CustomerBalanceTransaction(APIResource): OBJECT_NAME: str def instance_url(self) -> str: ... @classmethod - def retrieve(cls, id, api_key: Incomplete | None = ..., **params) -> NoReturn: ... + def retrieve(cls, id, api_key: Incomplete | None = None, **params) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/dispute.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/dispute.pyi index 6f79d2aee..3f3114b7d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/dispute.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/dispute.pyi @@ -6,4 +6,4 @@ from stripe.api_resources.abstract import ( class Dispute(ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def close(self, idempotency_key: str | None = ..., **params): ... + def close(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/ephemeral_key.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/ephemeral_key.pyi index 287efb6b1..6df40287b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/ephemeral_key.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/ephemeral_key.pyi @@ -8,9 +8,9 @@ class EphemeralKey(DeletableAPIResource): @classmethod def create( cls, - api_key: Incomplete | None = ..., - idempotency_key: str | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + idempotency_key: str | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/error_object.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/error_object.pyi index ba075a8a8..d43b883cb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/error_object.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/error_object.pyi @@ -6,20 +6,20 @@ class ErrorObject(StripeObject): def refresh_from( self, values, - api_key: Incomplete | None = ..., - partial: bool = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., - last_response: Incomplete | None = ..., + api_key: Incomplete | None = None, + partial: bool = False, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, + last_response: Incomplete | None = None, ): ... class OAuthErrorObject(StripeObject): def refresh_from( self, values, - api_key: Incomplete | None = ..., - partial: bool = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., - last_response: Incomplete | None = ..., + api_key: Incomplete | None = None, + partial: bool = False, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, + last_response: Incomplete | None = None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/file.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/file.pyi index 9c3198560..d524c8596 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/file.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/file.pyi @@ -11,10 +11,10 @@ class File(ListableAPIResource): @classmethod def create( cls, - api_key: Incomplete | None = ..., - api_version: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + api_version: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/identity/verification_session.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/identity/verification_session.pyi index 5a9e29c63..c9e5e42f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/identity/verification_session.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/identity/verification_session.pyi @@ -7,5 +7,5 @@ from stripe.api_resources.abstract import ( class VerificationSession(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def cancel(self, idempotency_key: str | None = ..., **params): ... - def redact(self, idempotency_key: str | None = ..., **params): ... + def cancel(self, idempotency_key: str | None = None, **params): ... + def redact(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/invoice.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/invoice.pyi index 50d8c9f31..855af6765 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/invoice.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/invoice.pyi @@ -13,16 +13,16 @@ from stripe.api_resources.abstract import ( class Invoice(CreateableAPIResource, DeletableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def finalize_invoice(self, idempotency_key: str | None = ..., **params) -> Self: ... - def mark_uncollectible(self, idempotency_key: str | None = ..., **params) -> Self: ... - def pay(self, idempotency_key: str | None = ..., **params) -> Self: ... - def send_invoice(self, idempotency_key: str | None = ..., **params) -> Self: ... - def void_invoice(self, idempotency_key: str | None = ..., **params) -> Self: ... + def finalize_invoice(self, idempotency_key: str | None = None, **params) -> Self: ... + def mark_uncollectible(self, idempotency_key: str | None = None, **params) -> Self: ... + def pay(self, idempotency_key: str | None = None, **params) -> Self: ... + def send_invoice(self, idempotency_key: str | None = None, **params) -> Self: ... + def void_invoice(self, idempotency_key: str | None = None, **params) -> Self: ... @classmethod def upcoming( cls, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ) -> Invoice: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/authorization.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/authorization.pyi index dd7580007..7383177cd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/authorization.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/authorization.pyi @@ -6,5 +6,5 @@ from stripe.api_resources.abstract import ( class Authorization(ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def approve(self, idempotency_key: str | None = ..., **params): ... - def decline(self, idempotency_key: str | None = ..., **params): ... + def approve(self, idempotency_key: str | None = None, **params): ... + def decline(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/card.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/card.pyi index 0fdab4bb1..1edc3d611 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/card.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/card.pyi @@ -7,4 +7,4 @@ from stripe.api_resources.abstract import ( class Card(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def details(self, idempotency_key: str | None = ..., **params): ... + def details(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/dispute.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/dispute.pyi index ed3b6741d..659dea54d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/dispute.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/issuing/dispute.pyi @@ -7,4 +7,4 @@ from stripe.api_resources.abstract import ( class Dispute(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def submit(self, idempotency_key: str | None = ..., **params): ... + def submit(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/list_object.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/list_object.pyi index be26574ec..5a33d5f8b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/list_object.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/list_object.pyi @@ -9,25 +9,25 @@ class ListObject(StripeObject): OBJECT_NAME: str def list( self, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ) -> ListObject: ... def create( self, - api_key: Incomplete | None = ..., - idempotency_key: str | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + idempotency_key: str | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ): ... def retrieve( self, id, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ): ... def __getitem__(self, k): ... @@ -37,21 +37,21 @@ class ListObject(StripeObject): def auto_paging_iter(self) -> Iterator[Any]: ... @classmethod def empty_list( - cls, api_key: Incomplete | None = ..., stripe_version: Incomplete | None = ..., stripe_account: Incomplete | None = ... + cls, api_key: Incomplete | None = None, stripe_version: Incomplete | None = None, stripe_account: Incomplete | None = None ) -> ListObject: ... @property def is_empty(self) -> bool: ... def next_page( self, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ) -> ListObject: ... def previous_page( self, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ) -> ListObject: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/order.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/order.pyi index 1a9dfac21..ba526698c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/order.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/order.pyi @@ -7,7 +7,7 @@ from stripe.api_resources.abstract import ( class Order(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def cancel(self, idempotency_key: str | None = ..., **params): ... - def list_line_items(self, idempotency_key: str | None = ..., **params): ... - def reopen(self, idempotency_key: str | None = ..., **params): ... - def submit(self, idempotency_key: str | None = ..., **params): ... + def cancel(self, idempotency_key: str | None = None, **params): ... + def list_line_items(self, idempotency_key: str | None = None, **params): ... + def reopen(self, idempotency_key: str | None = None, **params): ... + def submit(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_intent.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_intent.pyi index 203ce28f9..011d672dc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_intent.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_intent.pyi @@ -10,8 +10,8 @@ from stripe.api_resources.abstract import ( class PaymentIntent(CreateableAPIResource, ListableAPIResource, SearchableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def cancel(self, idempotency_key: str | None = ..., **params): ... - def capture(self, idempotency_key: str | None = ..., **params): ... + def cancel(self, idempotency_key: str | None = None, **params): ... + def capture(self, idempotency_key: str | None = None, **params): ... @overload @classmethod def confirm( @@ -19,4 +19,4 @@ class PaymentIntent(CreateableAPIResource, ListableAPIResource, SearchableAPIRes ): ... @overload @classmethod - def confirm(cls, idempotency_key: str | None = ..., **params): ... + def confirm(cls, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_method.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_method.pyi index 47310ad78..e44c472e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_method.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_method.pyi @@ -9,5 +9,5 @@ from stripe.api_resources.abstract import ( class PaymentMethod(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def attach(self, idempotency_key: str | None = ..., **params) -> Self: ... - def detach(self, idempotency_key: str | None = ..., **params) -> Self: ... + def attach(self, idempotency_key: str | None = None, **params) -> Self: ... + def detach(self, idempotency_key: str | None = None, **params) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payout.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payout.pyi index 95855d020..fc10cc8f0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payout.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payout.pyi @@ -7,5 +7,5 @@ from stripe.api_resources.abstract import ( class Payout(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def cancel(self, idempotency_key: str | None = ..., **params): ... - def reverse(self, idempotency_key: str | None = ..., **params): ... + def cancel(self, idempotency_key: str | None = None, **params): ... + def reverse(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/person.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/person.pyi index 487ae3472..bc2069bc7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/person.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/person.pyi @@ -10,4 +10,4 @@ class Person(UpdateableAPIResource): @classmethod def modify(cls, sid, **params) -> NoReturn: ... @classmethod - def retrieve(cls, id, api_key: Incomplete | None = ..., **params) -> NoReturn: ... + def retrieve(cls, id, api_key: Incomplete | None = None, **params) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/quote.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/quote.pyi index fb5a68c5a..9a70d6b02 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/quote.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/quote.pyi @@ -10,15 +10,15 @@ from stripe.api_resources.abstract import ( class Quote(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def accept(self, idempotency_key: str | None = ..., **params): ... - def cancel(self, idempotency_key: str | None = ..., **params): ... - def finalize_quote(self, idempotency_key: str | None = ..., **params): ... - def list_line_items(self, idempotency_key: str | None = ..., **params): ... + def accept(self, idempotency_key: str | None = None, **params): ... + def cancel(self, idempotency_key: str | None = None, **params): ... + def finalize_quote(self, idempotency_key: str | None = None, **params): ... + def list_line_items(self, idempotency_key: str | None = None, **params): ... def pdf( self, - api_key: Incomplete | None = ..., - api_version: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + api_version: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/reversal.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/reversal.pyi index 80d393fe8..3213473c0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/reversal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/reversal.pyi @@ -10,4 +10,4 @@ class Reversal(UpdateableAPIResource): @classmethod def modify(cls, sid, **params) -> NoReturn: ... @classmethod - def retrieve(cls, id, api_key: Incomplete | None = ..., **params) -> NoReturn: ... + def retrieve(cls, id, api_key: Incomplete | None = None, **params) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/review.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/review.pyi index cc04d6569..ba4985de9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/review.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/review.pyi @@ -2,4 +2,4 @@ from stripe.api_resources.abstract import ListableAPIResource as ListableAPIReso class Review(ListableAPIResource): OBJECT_NAME: str - def approve(self, idempotency_key: str | None = ..., **params): ... + def approve(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/search_result_object.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/search_result_object.pyi index e447b5824..896a4e73d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/search_result_object.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/search_result_object.pyi @@ -15,7 +15,7 @@ class SearchResultObject(StripeObject, Generic[_T]): total_count: int def search( - self, api_key: str | None = ..., stripe_version: str | None = ..., stripe_account: str | None = ..., **params + self, api_key: str | None = None, stripe_version: str | None = None, stripe_account: str | None = None, **params ) -> Self: ... def __getitem__(self, k: str) -> Any: ... def __iter__(self) -> Iterator[_T]: ... @@ -23,10 +23,10 @@ class SearchResultObject(StripeObject, Generic[_T]): def auto_paging_iter(self) -> Iterator[_T]: ... @classmethod def empty_search_result( - cls, api_key: str | None = ..., stripe_version: str | None = ..., stripe_account: str | None = ... + cls, api_key: str | None = None, stripe_version: str | None = None, stripe_account: str | None = None ) -> Self: ... @property def is_empty(self) -> bool: ... def next_search_result_page( - self, api_key: str | None = ..., stripe_version: str | None = ..., stripe_account: str | None = ..., **params + self, api_key: str | None = None, stripe_version: str | None = None, stripe_account: str | None = None, **params ) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/setup_intent.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/setup_intent.pyi index 8da11176f..00ec98b1c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/setup_intent.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/setup_intent.pyi @@ -7,5 +7,5 @@ from stripe.api_resources.abstract import ( class SetupIntent(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def cancel(self, idempotency_key: str | None = ..., **params): ... - def confirm(self, idempotency_key: str | None = ..., **params): ... + def cancel(self, idempotency_key: str | None = None, **params): ... + def confirm(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/source.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/source.pyi index 547e229a7..dfed9c7fe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/source.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/source.pyi @@ -9,5 +9,5 @@ from stripe.api_resources.abstract import ( class Source(CreateableAPIResource, UpdateableAPIResource, VerifyMixin): OBJECT_NAME: str - def detach(self, idempotency_key: str | None = ..., **params): ... + def detach(self, idempotency_key: str | None = None, **params): ... def source_transactions(self, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/subscription_item.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/subscription_item.pyi index df891e925..285249609 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/subscription_item.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/subscription_item.pyi @@ -10,18 +10,18 @@ class SubscriptionItem(CreateableAPIResource, DeletableAPIResource, ListableAPIR OBJECT_NAME: str def usage_record_summaries(self, **params): ... @classmethod - def usage_records_url(cls, id, nested_id=...): ... + def usage_records_url(cls, id, nested_id=None): ... @classmethod def usage_records_request( - cls, method, url, api_key=..., idempotency_key=..., stripe_version=..., stripe_account=..., **params + cls, method, url, api_key=None, idempotency_key=None, stripe_version=None, stripe_account=None, **params ): ... @classmethod def create_usage_record(cls, id, **params): ... @classmethod - def usage_record_summarys_url(cls, id, nested_id=...): ... + def usage_record_summarys_url(cls, id, nested_id=None): ... @classmethod def usage_record_summarys_request( - cls, method, url, api_key=..., idempotency_key=..., stripe_version=..., stripe_account=..., **params + cls, method, url, api_key=None, idempotency_key=None, stripe_version=None, stripe_account=None, **params ): ... @classmethod def list_usage_record_summaries(cls, id, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/subscription_schedule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/subscription_schedule.pyi index 315c15b60..53f0498a8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/subscription_schedule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/subscription_schedule.pyi @@ -7,5 +7,5 @@ from stripe.api_resources.abstract import ( class SubscriptionSchedule(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def cancel(self, idempotency_key: str | None = ..., **params): ... - def release(self, idempotency_key: str | None = ..., **params): ... + def cancel(self, idempotency_key: str | None = None, **params): ... + def release(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/tax_id.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/tax_id.pyi index 38432e329..8b29f0972 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/tax_id.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/tax_id.pyi @@ -8,4 +8,4 @@ class TaxId(APIResource): OBJECT_NAME: str def instance_url(self) -> str: ... @classmethod - def retrieve(cls, id, api_key: Incomplete | None = ..., **params) -> NoReturn: ... + def retrieve(cls, id, api_key: Incomplete | None = None, **params) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/test_helpers/test_clock.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/test_helpers/test_clock.pyi index 3caf15ecc..4490704e7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/test_helpers/test_clock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/test_helpers/test_clock.pyi @@ -7,4 +7,4 @@ class TestClock(CreateableAPIResource, DeletableAPIResource, ListableAPIResource OBJECT_NAME: Literal["test_helpers.test_clock"] @classmethod - def advance(cls, idempotency_key: str | None = ..., **params: Any) -> Self: ... + def advance(cls, idempotency_key: str | None = None, **params: Any) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/topup.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/topup.pyi index e6619c8c8..bd9a127dc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/topup.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/topup.pyi @@ -7,4 +7,4 @@ from stripe.api_resources.abstract import ( class Topup(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def cancel(self, idempotency_key: str | None = ..., **params): ... + def cancel(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/transfer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/transfer.pyi index aa4edd447..1f0bbfa49 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/transfer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/transfer.pyi @@ -8,4 +8,4 @@ from stripe.api_resources.abstract import ( class Transfer(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME: str - def cancel(self, idempotency_key: str | None = ..., **params): ... + def cancel(self, idempotency_key: str | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/usage_record.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/usage_record.pyi index 61bd11ab0..e0deccc30 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/usage_record.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/usage_record.pyi @@ -8,9 +8,9 @@ class UsageRecord(APIResource): @classmethod def create( cls, - api_key: Incomplete | None = ..., - idempotency_key: str | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + idempotency_key: str | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, **params, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/error.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/error.pyi index 98b8bc17e..ff8d85e0c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/error.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/error.pyi @@ -11,12 +11,12 @@ class StripeError(Exception): error: Any def __init__( self, - message: Incomplete | None = ..., - http_body: Incomplete | None = ..., - http_status: Incomplete | None = ..., - json_body: Incomplete | None = ..., - headers: Incomplete | None = ..., - code: Incomplete | None = ..., + message: Incomplete | None = None, + http_body: Incomplete | None = None, + http_status: Incomplete | None = None, + json_body: Incomplete | None = None, + headers: Incomplete | None = None, + code: Incomplete | None = None, ) -> None: ... @property def user_message(self): ... @@ -29,12 +29,12 @@ class APIConnectionError(StripeError): def __init__( self, message, - http_body: Incomplete | None = ..., - http_status: Incomplete | None = ..., - json_body: Incomplete | None = ..., - headers: Incomplete | None = ..., - code: Incomplete | None = ..., - should_retry: bool = ..., + http_body: Incomplete | None = None, + http_status: Incomplete | None = None, + json_body: Incomplete | None = None, + headers: Incomplete | None = None, + code: Incomplete | None = None, + should_retry: bool = False, ) -> None: ... class StripeErrorWithParamCode(StripeError): ... @@ -46,10 +46,10 @@ class CardError(StripeErrorWithParamCode): message, param, code, - http_body: Incomplete | None = ..., - http_status: Incomplete | None = ..., - json_body: Incomplete | None = ..., - headers: Incomplete | None = ..., + http_body: Incomplete | None = None, + http_status: Incomplete | None = None, + json_body: Incomplete | None = None, + headers: Incomplete | None = None, ) -> None: ... class IdempotencyError(StripeError): ... @@ -60,11 +60,11 @@ class InvalidRequestError(StripeErrorWithParamCode): self, message, param, - code: Incomplete | None = ..., - http_body: Incomplete | None = ..., - http_status: Incomplete | None = ..., - json_body: Incomplete | None = ..., - headers: Incomplete | None = ..., + code: Incomplete | None = None, + http_body: Incomplete | None = None, + http_status: Incomplete | None = None, + json_body: Incomplete | None = None, + headers: Incomplete | None = None, ) -> None: ... class AuthenticationError(StripeError): ... @@ -73,4 +73,4 @@ class RateLimitError(StripeError): ... class SignatureVerificationError(StripeError): sig_header: Any - def __init__(self, message, sig_header, http_body: Incomplete | None = ...) -> None: ... + def __init__(self, message, sig_header, http_body: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/http_client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/http_client.pyi index 968e29ba7..172c7ea8f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/http_client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/http_client.pyi @@ -15,38 +15,38 @@ class HTTPClient: MAX_DELAY: int INITIAL_DELAY: float MAX_RETRY_AFTER: int - def __init__(self, verify_ssl_certs: bool = ..., proxy: Incomplete | None = ...) -> None: ... - def request_with_retries(self, method, url, headers, post_data: Incomplete | None = ...): ... - def request_stream_with_retries(self, method, url, headers, post_data: Incomplete | None = ...): ... - def request(self, method, url, headers, post_data: Incomplete | None = ...) -> None: ... - def request_stream(self, method, url, headers, post_data: Incomplete | None = ...) -> None: ... + def __init__(self, verify_ssl_certs: bool = True, proxy: Incomplete | None = None) -> None: ... + def request_with_retries(self, method, url, headers, post_data: Incomplete | None = None): ... + def request_stream_with_retries(self, method, url, headers, post_data: Incomplete | None = None): ... + def request(self, method, url, headers, post_data: Incomplete | None = None) -> None: ... + def request_stream(self, method, url, headers, post_data: Incomplete | None = None) -> None: ... def close(self) -> None: ... class RequestsClient(HTTPClient): name: str - def __init__(self, timeout: int = ..., session: Incomplete | None = ..., **kwargs) -> None: ... - def request(self, method, url, headers, post_data: Incomplete | None = ...): ... - def request_stream(self, method, url, headers, post_data: Incomplete | None = ...): ... + def __init__(self, timeout: int = 80, session: Incomplete | None = None, **kwargs) -> None: ... + def request(self, method, url, headers, post_data: Incomplete | None = None): ... + def request_stream(self, method, url, headers, post_data: Incomplete | None = None): ... def close(self) -> None: ... class UrlFetchClient(HTTPClient): name: str - def __init__(self, verify_ssl_certs: bool = ..., proxy: Incomplete | None = ..., deadline: int = ...) -> None: ... - def request(self, method, url, headers, post_data: Incomplete | None = ...): ... - def request_stream(self, method, url, headers, post_data: Incomplete | None = ...): ... + def __init__(self, verify_ssl_certs: bool = True, proxy: Incomplete | None = None, deadline: int = 55) -> None: ... + def request(self, method, url, headers, post_data: Incomplete | None = None): ... + def request_stream(self, method, url, headers, post_data: Incomplete | None = None): ... def close(self) -> None: ... class PycurlClient(HTTPClient): name: str - def __init__(self, verify_ssl_certs: bool = ..., proxy: Incomplete | None = ...) -> None: ... + def __init__(self, verify_ssl_certs: bool = True, proxy: Incomplete | None = None) -> None: ... def parse_headers(self, data): ... - def request(self, method, url, headers, post_data: Incomplete | None = ...): ... - def request_stream(self, method, url, headers, post_data: Incomplete | None = ...): ... + def request(self, method, url, headers, post_data: Incomplete | None = None): ... + def request_stream(self, method, url, headers, post_data: Incomplete | None = None): ... def close(self) -> None: ... class Urllib2Client(HTTPClient): name: str - def __init__(self, verify_ssl_certs: bool = ..., proxy: Incomplete | None = ...) -> None: ... - def request(self, method, url, headers, post_data: Incomplete | None = ...): ... - def request_stream(self, method, url, headers, post_data: Incomplete | None = ...): ... + def __init__(self, verify_ssl_certs: bool = True, proxy: Incomplete | None = None) -> None: ... + def request(self, method, url, headers, post_data: Incomplete | None = None): ... + def request_stream(self, method, url, headers, post_data: Incomplete | None = None): ... def close(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/multipart_data_generator.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/multipart_data_generator.pyi index 7867aa9f2..0d4e88839 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/multipart_data_generator.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/multipart_data_generator.pyi @@ -5,7 +5,7 @@ class MultipartDataGenerator: line_break: str boundary: Any chunk_size: Any - def __init__(self, chunk_size: int = ...) -> None: ... + def __init__(self, chunk_size: int = 1028) -> None: ... def add_params(self, params) -> None: ... def param_header(self): ... def get_post_data(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/oauth.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/oauth.pyi index ecec5d532..cfe3458ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/oauth.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/oauth.pyi @@ -4,8 +4,8 @@ from stripe import api_requestor as api_requestor, connect_api_base as connect_a class OAuth: @staticmethod - def authorize_url(express: bool = ..., **params): ... + def authorize_url(express: bool = False, **params): ... @staticmethod - def token(api_key: Incomplete | None = ..., **params): ... + def token(api_key: Incomplete | None = None, **params): ... @staticmethod - def deauthorize(api_key: Incomplete | None = ..., **params): ... + def deauthorize(api_key: Incomplete | None = None, **params): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/oauth_error.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/oauth_error.pyi index a639ed027..d022f89c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/oauth_error.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/oauth_error.pyi @@ -7,10 +7,10 @@ class OAuthError(StripeError): self, code, description, - http_body: Incomplete | None = ..., - http_status: Incomplete | None = ..., - json_body: Incomplete | None = ..., - headers: Incomplete | None = ..., + http_body: Incomplete | None = None, + http_status: Incomplete | None = None, + json_body: Incomplete | None = None, + headers: Incomplete | None = None, ) -> None: ... def construct_error_object(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/stripe_object.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/stripe_object.pyi index cfb021b26..e0e6d2b5d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/stripe_object.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/stripe_object.pyi @@ -11,11 +11,11 @@ class StripeObject(dict[Any, Any]): def __init__( self, - id: Incomplete | None = ..., - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., - last_response: Incomplete | None = ..., + id: Incomplete | None = None, + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, + last_response: Incomplete | None = None, **params, ) -> None: ... @property @@ -33,9 +33,9 @@ class StripeObject(dict[Any, Any]): cls, values: Any, key: str | None, - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., - last_response: Incomplete | None = ..., + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, + last_response: Incomplete | None = None, ) -> Self: ... api_key: Any stripe_version: Any @@ -43,16 +43,16 @@ class StripeObject(dict[Any, Any]): def refresh_from( self, values: Any, - api_key: Incomplete | None = ..., - partial: bool = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., - last_response: Incomplete | None = ..., + api_key: Incomplete | None = None, + partial: bool = False, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, + last_response: Incomplete | None = None, ) -> None: ... @classmethod def api_base(cls) -> None: ... - def request(self, method, url, params: Incomplete | None = ..., headers: Incomplete | None = ...): ... - def request_stream(self, method, url, params: Incomplete | None = ..., headers: Incomplete | None = ...): ... + def request(self, method, url, params: Incomplete | None = None, headers: Incomplete | None = None): ... + def request_stream(self, method, url, params: Incomplete | None = None, headers: Incomplete | None = None): ... def to_dict(self): ... def to_dict_recursive(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/util.pyi index af50ed9bc..64edd0497 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/util.pyi @@ -16,7 +16,7 @@ class class_method_variant: def __init__(self, class_method_name) -> None: ... method: Any def __call__(self, method): ... - def __get__(self, obj, objtype: Incomplete | None = ...): ... + def __get__(self, obj, objtype: Incomplete | None = None): ... @overload def populate_headers(idempotency_key: None) -> None: ... @@ -29,14 +29,14 @@ _RespType: TypeAlias = dict[Any, Any] | StripeObject | StripeResponse @overload def convert_to_stripe_object( resp: list[Any], - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, ) -> list[Any]: ... @overload def convert_to_stripe_object( resp: _RespType, - api_key: Incomplete | None = ..., - stripe_version: Incomplete | None = ..., - stripe_account: Incomplete | None = ..., + api_key: Incomplete | None = None, + stripe_version: Incomplete | None = None, + stripe_account: Incomplete | None = None, ) -> StripeObject: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/webhook.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/webhook.pyi index 12cfe57e0..8374e9479 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/webhook.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/webhook.pyi @@ -6,12 +6,12 @@ class Webhook: DEFAULT_TOLERANCE: int @staticmethod def construct_event( - payload: bytes | str, sig_header: str, secret: str, tolerance: int = ..., api_key: str | None = ... + payload: bytes | str, sig_header: str, secret: str, tolerance: int = 300, api_key: str | None = None ) -> Event: ... class WebhookSignature: EXPECTED_SCHEME: str @classmethod - def verify_header(cls, payload: bytes | str, header: str, secret: str, tolerance: int | None = ...) -> Literal[True]: ... + def verify_header(cls, payload: bytes | str, header: str, secret: str, tolerance: int | None = None) -> Literal[True]: ... @staticmethod def _compute_signature(payload: str, secret: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tabulate/tabulate/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tabulate/tabulate/__init__.pyi index 31d625e76..04089b683 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tabulate/tabulate/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tabulate/tabulate/__init__.pyi @@ -45,19 +45,19 @@ multiline_formats: dict[str, str] def simple_separated_format(separator: str) -> TableFormat: ... def tabulate( tabular_data: Mapping[str, Iterable[Any]] | Iterable[Iterable[Any]], - headers: str | dict[str, str] | Sequence[str] = ..., - tablefmt: str | TableFormat = ..., - floatfmt: str | Iterable[str] = ..., - intfmt: str | Iterable[str] = ..., - numalign: str | None = ..., - stralign: str | None = ..., - missingval: str | Iterable[str] = ..., - showindex: str | bool | Iterable[Any] = ..., - disable_numparse: bool | Iterable[int] = ..., - colalign: Iterable[str | None] | None = ..., - maxcolwidths: int | Iterable[int | None] | None = ..., - rowalign: str | Iterable[str] | None = ..., - maxheadercolwidths: int | Iterable[int] | None = ..., + headers: str | dict[str, str] | Sequence[str] = (), + tablefmt: str | TableFormat = "simple", + floatfmt: str | Iterable[str] = "g", + intfmt: str | Iterable[str] = "", + numalign: str | None = "default", + stralign: str | None = "default", + missingval: str | Iterable[str] = "", + showindex: str | bool | Iterable[Any] = "default", + disable_numparse: bool | Iterable[int] = False, + colalign: Iterable[str | None] | None = None, + maxcolwidths: int | Iterable[int | None] | None = None, + rowalign: str | Iterable[str] | None = None, + maxheadercolwidths: int | Iterable[int] | None = None, ) -> str: ... class JupyterHTMLStr(str): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/termcolor/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/termcolor/METADATA.toml deleted file mode 100644 index cfdea080c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/termcolor/METADATA.toml +++ /dev/null @@ -1,2 +0,0 @@ -version = "1.1.*" -obsolete_since = "2.0.0" # Released on 2022-09-11 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/termcolor/termcolor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/termcolor/termcolor.pyi deleted file mode 100644 index 71350db55..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/termcolor/termcolor.pyi +++ /dev/null @@ -1,14 +0,0 @@ -from collections.abc import Iterable -from typing import Any - -__ALL__: list[str] -VERSION: tuple[int, ...] -ATTRIBUTES: dict[str, int] -COLORS: dict[str, int] -HIGHLIGHTS: dict[str, int] -RESET: str - -def colored(text: str, color: str | None = ..., on_color: str | None = ..., attrs: Iterable[str] | None = ...) -> str: ... -def cprint( - text: str, color: str | None = ..., on_color: str | None = ..., attrs: Iterable[str] | None = ..., **kwargs: Any -) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/toml/toml/decoder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/toml/toml/decoder.pyi index a492ac9e0..131e164a3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/toml/toml/decoder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/toml/toml/decoder.pyi @@ -31,18 +31,18 @@ class CommentValue: def load( f: _PathLike | list[Any] | SupportsRead[str], # list[_PathLike] is invariance _dict: type[_MutableMappingT], - decoder: TomlDecoder[_MutableMappingT] | None = ..., + decoder: TomlDecoder[_MutableMappingT] | None = None, ) -> _MutableMappingT: ... @overload def load( f: _PathLike | list[Any] | SupportsRead[str], # list[_PathLike] is invariance _dict: type[dict[str, Any]] = ..., - decoder: TomlDecoder[dict[str, Any]] | None = ..., + decoder: TomlDecoder[dict[str, Any]] | None = None, ) -> dict[str, Any]: ... @overload -def loads(s: str, _dict: type[_MutableMappingT], decoder: TomlDecoder[_MutableMappingT] | None = ...) -> _MutableMappingT: ... +def loads(s: str, _dict: type[_MutableMappingT], decoder: TomlDecoder[_MutableMappingT] | None = None) -> _MutableMappingT: ... @overload -def loads(s: str, _dict: type[dict[str, Any]] = ..., decoder: TomlDecoder[dict[str, Any]] | None = ...) -> dict[str, Any]: ... +def loads(s: str, _dict: type[dict[str, Any]] = ..., decoder: TomlDecoder[dict[str, Any]] | None = None) -> dict[str, Any]: ... class InlineTableDict: ... @@ -55,12 +55,12 @@ class TomlDecoder(Generic[_MutableMappingT]): def get_empty_table(self) -> _MutableMappingT: ... def get_empty_inline_table(self) -> InlineTableDict: ... # incomplete python/typing#213 def load_inline_object( - self, line: str, currentlevel: _MutableMappingT, multikey: bool = ..., multibackslash: bool = ... + self, line: str, currentlevel: _MutableMappingT, multikey: bool = False, multibackslash: bool = False ) -> None: ... def load_line( self, line: str, currentlevel: _MutableMappingT, multikey: bool | None, multibackslash: bool ) -> tuple[bool | None, str, bool] | None: ... - def load_value(self, v: str, strictly_valid: bool = ...) -> tuple[Any, str]: ... + def load_value(self, v: str, strictly_valid: bool = True) -> tuple[Any, str]: ... def bounded_string(self, s: str) -> bool: ... def load_array(self, a: str) -> list[Any]: ... def preserve_comment(self, line_no: int, key: str, comment: str, beginline: bool) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/toml/toml/encoder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/toml/toml/encoder.pyi index c8be27da7..1f1f90b9e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/toml/toml/encoder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/toml/toml/encoder.pyi @@ -4,17 +4,17 @@ from typing import Any, Generic, TypeVar, overload _MappingT = TypeVar("_MappingT", bound=Mapping[str, Any]) -def dump(o: _MappingT, f: SupportsWrite[str], encoder: TomlEncoder[_MappingT] | None = ...) -> str: ... -def dumps(o: _MappingT, encoder: TomlEncoder[_MappingT] | None = ...) -> str: ... +def dump(o: _MappingT, f: SupportsWrite[str], encoder: TomlEncoder[_MappingT] | None = None) -> str: ... +def dumps(o: _MappingT, encoder: TomlEncoder[_MappingT] | None = None) -> str: ... class TomlEncoder(Generic[_MappingT]): _dict: type[_MappingT] preserve: bool dump_funcs: MutableMapping[type[Any], Callable[[Any], str]] @overload - def __init__(self, _dict: type[_MappingT], preserve: bool = ...) -> None: ... + def __init__(self, _dict: type[_MappingT], preserve: bool = False) -> None: ... @overload - def __init__(self: TomlEncoder[dict[str, Any]], _dict: type[dict[str, Any]] = ..., preserve: bool = ...) -> None: ... + def __init__(self: TomlEncoder[dict[str, Any]], _dict: type[dict[str, Any]] = ..., preserve: bool = False) -> None: ... def get_empty_table(self) -> _MappingT: ... def dump_list(self, v: Iterable[Any]) -> str: ... def dump_inline_table(self, section: dict[str, Any] | Any) -> str: ... @@ -30,13 +30,13 @@ class TomlPreserveInlineDictEncoder(TomlEncoder[_MappingT]): class TomlArraySeparatorEncoder(TomlEncoder[_MappingT]): separator: str @overload - def __init__(self, _dict: type[_MappingT], preserve: bool = ..., separator: str = ...) -> None: ... + def __init__(self, _dict: type[_MappingT], preserve: bool = False, separator: str = ",") -> None: ... @overload def __init__( self: TomlArraySeparatorEncoder[dict[str, Any]], _dict: type[dict[str, Any]] = ..., - preserve: bool = ..., - separator: str = ..., + preserve: bool = False, + separator: str = ",", ) -> None: ... def dump_list(self, v: Iterable[Any]) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/asyncio.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/asyncio.pyi index 488fadbfe..12bef569c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/asyncio.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/asyncio.pyi @@ -22,9 +22,9 @@ class tqdm_asyncio(Generic[_T], std_tqdm[_T]): cls, fs: Iterable[Awaitable[_T]], *, - loop: bool | None = ..., - timeout: float | None = ..., - total: int | None = ..., + loop: bool | None = None, + timeout: float | None = None, + total: int | None = None, desc: str | None = ..., leave: bool | None = ..., file: SupportsWrite[str] | None = ..., @@ -53,9 +53,9 @@ class tqdm_asyncio(Generic[_T], std_tqdm[_T]): async def gather( cls, *fs: Awaitable[_T], - loop: bool | None = ..., - timeout: float | None = ..., - total: int | None = ..., + loop: bool | None = None, + timeout: float | None = None, + total: int | None = None, iterable: Iterable[_T] = ..., desc: str | None = ..., leave: bool | None = ..., @@ -115,7 +115,7 @@ class tqdm_asyncio(Generic[_T], std_tqdm[_T]): @overload def __init__( self: tqdm_asyncio[NoReturn], - iterable: None = ..., + iterable: None = None, desc: str | None = ..., total: float | None = ..., leave: bool | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/cli.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/cli.pyi index 742ea2947..202660508 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/cli.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/cli.pyi @@ -2,4 +2,4 @@ from collections.abc import Sequence __all__ = ["main"] -def main(fp=..., argv: Sequence[str] | None = ...) -> None: ... +def main(fp=..., argv: Sequence[str] | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/__init__.pyi index fd7f09637..6a63b3b40 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/__init__.pyi @@ -7,9 +7,9 @@ __all__ = ["tenumerate", "tzip", "tmap"] class DummyTqdmFile(ObjectWrapper): def __init__(self, wrapped) -> None: ... - def write(self, x, nolock: bool = ...) -> None: ... + def write(self, x, nolock: bool = False) -> None: ... def __del__(self) -> None: ... -def tenumerate(iterable, start: int = ..., total: Incomplete | None = ..., tqdm_class: type[Incomplete] = ..., **tqdm_kwargs): ... +def tenumerate(iterable, start: int = 0, total: Incomplete | None = None, tqdm_class: type[Incomplete] = ..., **tqdm_kwargs): ... def tzip(iter1, *iter2plus, **tqdm_kwargs) -> Generator[Incomplete, None, None]: ... def tmap(function: Callable[..., Incomplete], *sequences, **tqdm_kwargs) -> Generator[Incomplete, None, None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/discord.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/discord.pyi index 4f2702e35..4c7d8b15f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/discord.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/discord.pyi @@ -51,7 +51,7 @@ class tqdm_discord(Generic[_T], tqdm_auto[_T]): @overload def __init__( self: tqdm_discord[NoReturn], - iterable: None = ..., + iterable: None = None, desc: str | None = ..., total: float | None = ..., leave: bool | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/logging.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/logging.pyi index 0bb9e0e4e..fe8889002 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/logging.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/logging.pyi @@ -9,7 +9,7 @@ from ..std import tqdm as std_tqdm _TqdmT = TypeVar("_TqdmT", bound=std_tqdm[Any]) def logging_redirect_tqdm( - loggers: Sequence[logging.Logger] | None = ..., tqdm_class: type[std_tqdm[Any]] = ... + loggers: Sequence[logging.Logger] | None = None, tqdm_class: type[std_tqdm[Any]] = ... ) -> _GeneratorContextManager[None]: ... # TODO type *args, **kwargs here more precisely diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/slack.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/slack.pyi index cf69b09e6..0f9eba602 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/slack.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/slack.pyi @@ -54,7 +54,7 @@ class tqdm_slack(Generic[_T], tqdm_auto[_T]): @overload def __init__( self: tqdm_slack[NoReturn], - iterable: None = ..., + iterable: None = None, desc: str | None = ..., total: float | None = ..., leave: bool | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/telegram.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/telegram.pyi index fa77d2db1..cd2beb738 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/telegram.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/contrib/telegram.pyi @@ -59,7 +59,7 @@ class tqdm_telegram(Generic[_T], tqdm_auto[_T]): @overload def __init__( self: tqdm_telegram[NoReturn], - iterable: None = ..., + iterable: None = None, desc: str | None = ..., total: float | None = ..., leave: bool | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/gui.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/gui.pyi index a77cc9760..c0db2c03a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/gui.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/gui.pyi @@ -57,7 +57,7 @@ class tqdm_gui(Generic[_T], std_tqdm[_T]): @overload def __init__( self: tqdm_gui[NoReturn], - iterable: None = ..., + iterable: None = None, desc: str | None = ..., total: float | None = ..., leave: bool | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/keras.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/keras.pyi index 75e86e92a..f14d9be2a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/keras.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/keras.pyi @@ -29,7 +29,7 @@ class _Callback: class TqdmCallback(_Callback): @staticmethod - def bar2callback(bar, pop: Incomplete | None = ..., delta=...): ... + def bar2callback(bar, pop: Incomplete | None = None, delta=...): ... tqdm_class: Incomplete epoch_bar: Incomplete on_epoch_end: Incomplete @@ -39,10 +39,10 @@ class TqdmCallback(_Callback): on_batch_end: Incomplete def __init__( self, - epochs: Incomplete | None = ..., - data_size: Incomplete | None = ..., - batch_size: Incomplete | None = ..., - verbose: int = ..., + epochs: Incomplete | None = None, + data_size: Incomplete | None = None, + batch_size: Incomplete | None = None, + verbose: int = 1, tqdm_class=..., **tqdm_kwargs, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/notebook.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/notebook.pyi index dbd7855b8..d2a118fb7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/notebook.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/notebook.pyi @@ -11,16 +11,16 @@ _T = TypeVar("_T") class tqdm_notebook(Generic[_T], std_tqdm[_T]): @staticmethod def status_printer( - _: SupportsWrite[str] | None, total: float | None = ..., desc: str | None = ..., ncols: int | None = ... + _: SupportsWrite[str] | None, total: float | None = None, desc: str | None = None, ncols: int | None = None ): ... displayed: bool def display( self, - msg: str | None = ..., - pos: int | None = ..., - close: bool = ..., - bar_style: str | None = ..., - check_delay: bool = ..., + msg: str | None = None, + pos: int | None = None, + close: bool = False, + bar_style: str | None = None, + check_delay: bool = True, ) -> None: ... @property def colour(self): ... @@ -63,7 +63,7 @@ class tqdm_notebook(Generic[_T], std_tqdm[_T]): @overload def __init__( self: tqdm_notebook[NoReturn], - iterable: None = ..., + iterable: None = None, desc: str | None = ..., total: float | None = ..., leave: bool | None = ..., @@ -92,10 +92,10 @@ class tqdm_notebook(Generic[_T], std_tqdm[_T]): **kwargs, ) -> None: ... def __iter__(self) -> Iterator[_T]: ... - def update(self, n: int = ...): ... # type: ignore[override] + def update(self, n: int = 1): ... # type: ignore[override] def close(self) -> None: ... def clear(self, *_, **__) -> None: ... - def reset(self, total: float | None = ...): ... + def reset(self, total: float | None = None): ... tqdm = tqdm_notebook tnrange = trange diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/rich.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/rich.pyi index 2a81cc21f..fad4f54d5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/rich.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/rich.pyi @@ -72,7 +72,7 @@ class tqdm_rich(Generic[_T], std_tqdm[_T]): @overload def __init__( self: tqdm_rich[NoReturn], - iterable: None = ..., + iterable: None = None, desc: str | None = ..., total: float | None = ..., leave: bool | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/std.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/std.pyi index 65c550c9e..409f3747d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/std.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/std.pyi @@ -23,7 +23,7 @@ class TqdmTypeError(TypeError): ... class TqdmKeyError(KeyError): ... class TqdmWarning(Warning): - def __init__(self, msg, fp_write: Incomplete | None = ..., *a, **k) -> None: ... + def __init__(self, msg, fp_write: Incomplete | None = None, *a, **k) -> None: ... class TqdmExperimentalWarning(TqdmWarning, FutureWarning): ... class TqdmDeprecationWarning(TqdmWarning, DeprecationWarning): ... @@ -36,7 +36,7 @@ class tqdm(Generic[_T], Iterable[_T], Comparable): monitor: ClassVar[TMonitor | None] @staticmethod - def format_sizeof(num: float, suffix: str = ..., divisor: float = ...) -> str: ... + def format_sizeof(num: float, suffix: str = "", divisor: float = 1000) -> str: ... @staticmethod def format_interval(t: float) -> str: ... @staticmethod @@ -48,86 +48,86 @@ class tqdm(Generic[_T], Iterable[_T], Comparable): n: float, total: float, elapsed: float, - ncols: int | None = ..., - prefix: str | None = ..., - ascii: bool | str | None = ..., - unit: str | None = ..., - unit_scale: bool | float | None = ..., - rate: float | None = ..., - bar_format: str | None = ..., - postfix: str | Mapping[str, object] | None = ..., - unit_divisor: float | None = ..., - initial: float | None = ..., - colour: str | None = ..., + ncols: int | None = None, + prefix: str | None = "", + ascii: bool | str | None = False, + unit: str | None = "it", + unit_scale: bool | float | None = False, + rate: float | None = None, + bar_format: str | None = None, + postfix: str | Mapping[str, object] | None = None, + unit_divisor: float | None = 1000, + initial: float | None = 0, + colour: str | None = None, ) -> str: ... @overload def __init__( self, iterable: Iterable[_T], - desc: str | None = ..., - total: float | None = ..., - leave: bool | None = ..., - file: SupportsWrite[str] | None = ..., - ncols: int | None = ..., - mininterval: float = ..., - maxinterval: float = ..., - miniters: float | None = ..., - ascii: bool | str | None = ..., - disable: bool | None = ..., - unit: str = ..., - unit_scale: bool | float = ..., - dynamic_ncols: bool = ..., - smoothing: float = ..., - bar_format: str | None = ..., - initial: float = ..., - position: int | None = ..., - postfix: Mapping[str, object] | str | None = ..., - unit_divisor: float = ..., + desc: str | None = None, + total: float | None = None, + leave: bool | None = True, + file: SupportsWrite[str] | None = None, + ncols: int | None = None, + mininterval: float = 0.1, + maxinterval: float = 10.0, + miniters: float | None = None, + ascii: bool | str | None = None, + disable: bool | None = False, + unit: str = "it", + unit_scale: bool | float = False, + dynamic_ncols: bool = False, + smoothing: float = 0.3, + bar_format: str | None = None, + initial: float = 0, + position: int | None = None, + postfix: Mapping[str, object] | str | None = None, + unit_divisor: float = 1000, write_bytes: bool = False, - lock_args: tuple[bool | None, float | None] | tuple[bool | None] | None = ..., - nrows: int | None = ..., - colour: str | None = ..., - delay: float | None = ..., - gui: bool = ..., + lock_args: tuple[bool | None, float | None] | tuple[bool | None] | None = None, + nrows: int | None = None, + colour: str | None = None, + delay: float | None = 0, + gui: bool = False, **kwargs, ) -> None: ... @overload def __init__( self: tqdm[NoReturn], - iterable: None = ..., - desc: str | None = ..., - total: float | None = ..., - leave: bool | None = ..., - file: SupportsWrite[str] | None = ..., - ncols: int | None = ..., - mininterval: float = ..., - maxinterval: float = ..., - miniters: float | None = ..., - ascii: bool | str | None = ..., - disable: bool | None = ..., - unit: str = ..., - unit_scale: bool | float = ..., - dynamic_ncols: bool = ..., - smoothing: float = ..., - bar_format: str | None = ..., - initial: float = ..., - position: int | None = ..., - postfix: Mapping[str, object] | str | None = ..., - unit_divisor: float = ..., - write_bytes: bool | None = ..., - lock_args: tuple[bool | None, float | None] | tuple[bool | None] | None = ..., - nrows: int | None = ..., - colour: str | None = ..., - delay: float | None = ..., - gui: bool = ..., + iterable: None = None, + desc: str | None = None, + total: float | None = None, + leave: bool | None = True, + file: SupportsWrite[str] | None = None, + ncols: int | None = None, + mininterval: float = 0.1, + maxinterval: float = 10.0, + miniters: float | None = None, + ascii: bool | str | None = None, + disable: bool | None = False, + unit: str = "it", + unit_scale: bool | float = False, + dynamic_ncols: bool = False, + smoothing: float = 0.3, + bar_format: str | None = None, + initial: float = 0, + position: int | None = None, + postfix: Mapping[str, object] | str | None = None, + unit_divisor: float = 1000, + write_bytes: bool | None = False, + lock_args: tuple[bool | None, float | None] | tuple[bool | None] | None = None, + nrows: int | None = None, + colour: str | None = None, + delay: float | None = 0, + gui: bool = False, **kwargs, ) -> None: ... def __new__(cls, *_, **__) -> Self: ... @classmethod - def write(cls, s: str, file: SupportsWrite[str] | None = ..., end: str = ..., nolock: bool = ...) -> None: ... + def write(cls, s: str, file: SupportsWrite[str] | None = None, end: str = "\n", nolock: bool = False) -> None: ... @classmethod def external_write_mode( - cls, file: SupportsWrite[str] | None = ..., nolock: bool = ... + cls, file: SupportsWrite[str] | None = None, nolock: bool = False ) -> contextlib._GeneratorContextManager[None]: ... @classmethod def set_lock(cls, lock) -> None: ... @@ -206,25 +206,25 @@ class tqdm(Generic[_T], Iterable[_T], Comparable): def __del__(self) -> None: ... def __hash__(self) -> int: ... def __iter__(self) -> Iterator[_T]: ... - def update(self, n: float | None = ...) -> bool | None: ... + def update(self, n: float | None = 1) -> bool | None: ... def close(self) -> None: ... - def clear(self, nolock: bool = ...) -> None: ... + def clear(self, nolock: bool = False) -> None: ... def refresh( - self, nolock: bool = ..., lock_args: tuple[bool | None, float | None] | tuple[bool | None] | None = ... + self, nolock: bool = False, lock_args: tuple[bool | None, float | None] | tuple[bool | None] | None = None ) -> None: ... def unpause(self) -> None: ... - def reset(self, total: float | None = ...) -> None: ... - def set_description(self, desc: str | None = ..., refresh: bool | None = ...) -> None: ... - def set_description_str(self, desc: str | None = ..., refresh: bool | None = ...) -> None: ... - def set_postfix(self, ordered_dict: Mapping[str, object] | None = ..., refresh: bool | None = ..., **kwargs) -> None: ... - def set_postfix_str(self, s: str = ..., refresh: bool = ...) -> None: ... + def reset(self, total: float | None = None) -> None: ... + def set_description(self, desc: str | None = None, refresh: bool | None = True) -> None: ... + def set_description_str(self, desc: str | None = None, refresh: bool | None = True) -> None: ... + def set_postfix(self, ordered_dict: Mapping[str, object] | None = None, refresh: bool | None = True, **kwargs) -> None: ... + def set_postfix_str(self, s: str = "", refresh: bool = True) -> None: ... def moveto(self, n) -> None: ... @property def format_dict(self) -> MutableMapping[str, Any]: ... - def display(self, msg: str | None = ..., pos: int | None = ...) -> None: ... + def display(self, msg: str | None = None, pos: int | None = None) -> None: ... @classmethod def wrapattr( - cls, stream, method: Literal["read", "write"], total: float | None = ..., bytes: bool | None = ..., **tqdm_kwargs + cls, stream, method: Literal["read", "write"], total: float | None = None, bytes: bool | None = True, **tqdm_kwargs ) -> contextlib._GeneratorContextManager[Incomplete]: ... @overload diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/tk.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/tk.pyi index a89732e01..6d925e5d6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/tk.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/tk.pyi @@ -46,7 +46,7 @@ class tqdm_tk(Generic[_T], std_tqdm[_T]): @overload def __init__( self: tqdm_tk[NoReturn], - iterable: None = ..., + iterable: None = None, desc: str | None = ..., total: float | None = ..., leave: bool | None = ..., @@ -81,11 +81,11 @@ class tqdm_tk(Generic[_T], std_tqdm[_T]): def close(self) -> None: ... def clear(self, *_, **__) -> None: ... def display(self, *_, **__) -> None: ... - def set_description(self, desc: str | None = ..., refresh: bool | None = ...) -> None: ... + def set_description(self, desc: str | None = None, refresh: bool | None = True) -> None: ... desc: Incomplete - def set_description_str(self, desc: str | None = ..., refresh: bool | None = ...) -> None: ... + def set_description_str(self, desc: str | None = None, refresh: bool | None = True) -> None: ... def cancel(self) -> None: ... - def reset(self, total: Incomplete | None = ...) -> None: ... + def reset(self, total: Incomplete | None = None) -> None: ... def ttkrange(*args, **kwargs) -> tqdm_tk[int]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/utils.pyi index 3055987cd..4ddc65781 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/utils.pyi @@ -12,7 +12,7 @@ RE_ANSI: Pattern[str] class FormatReplace: replace: str format_called: int - def __init__(self, replace: str = ...) -> None: ... + def __init__(self, replace: str = "") -> None: ... def __format__(self, _) -> str: ... class _Has__Comparable(Protocol): @@ -49,7 +49,7 @@ class DisableOnWriteError(ObjectWrapper): def __eq__(self, other: object) -> bool: ... class CallbackIOWrapper(ObjectWrapper): - def __init__(self, callback: Callable[[int], object], stream, method: str = ...) -> None: ... + def __init__(self, callback: Callable[[int], object], stream, method: str = "read") -> None: ... def disp_len(data: str) -> int: ... def disp_trim(data: str, length: int) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/translationstring/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/translationstring/METADATA.toml new file mode 100644 index 000000000..6d3b92238 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/translationstring/METADATA.toml @@ -0,0 +1 @@ +version = "1.4.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/translationstring/translationstring/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/translationstring/translationstring/__init__.pyi new file mode 100644 index 000000000..8e2f38c01 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/translationstring/translationstring/__init__.pyi @@ -0,0 +1,81 @@ +from collections.abc import Callable +from gettext import NullTranslations +from typing import Any, Protocol +from typing_extensions import Self + +class _TranslationStringFactory(Protocol): + def __call__( + self, + msgid: str | TranslationString, + mapping: dict[str, Any] | None = ..., + default: str | None = ..., + context: str | None = ..., + ) -> TranslationString: ... + +class _ChameleonTranslate(Protocol): + def __call__( + self, + msgid: str | TranslationString, + mapping: dict[str, Any] | None = ..., + context: str | None = ..., + target_language: str | None = ..., + default: str | None = ..., + ) -> TranslationString: ... + +class _TranslatorPolicy(Protocol): + def __call__(self, translations: NullTranslations, tstring: str, domain: str | None, context: str | None) -> str: ... + +class _Translator(Protocol): + def __call__( + self, + tstring: str | TranslationString, + domain: str | None = None, + mapping: dict[str, Any] | None = None, + context: str | None = None, + ) -> str: ... + +class _PluralizerPolicy(Protocol): + def __call__( + self, translations: NullTranslations, singular: str, plural: str, n: int, domain: str | None, context: str | None + ) -> str: ... + +class _Pluralizer(Protocol): + def __call__( + self, + singular: str | TranslationString, + plural: str | TranslationString, + n: int, + domain: str | None = None, + mapping: dict[str, Any] | None = None, + context: str | None = None, + ) -> str: ... + +class TranslationString(str): + domain: str | None + context: str | None + default: str + mapping: dict[str, Any] | None + def __new__( + self, + msgid: str | Self, + domain: str | None = None, + default: str | None = None, + mapping: dict[str, Any] | None = None, + context: str | None = None, + ) -> Self: ... + def __mod__(self, options: dict[str, Any]) -> TranslationString: ... # type:ignore[override] + def interpolate(self, translated: str | None = None) -> str: ... + def __reduce__(self) -> tuple[type[Self], tuple[str, str | None, str, dict[str, Any], str | None]]: ... + +def TranslationStringFactory(factory_domain: str) -> _TranslationStringFactory: ... +def ChameleonTranslate(translator: Callable[[TranslationString], str] | None) -> _ChameleonTranslate: ... +def ugettext_policy(translations: NullTranslations, tstring: str, domain: str | None, context: str | None) -> str: ... +def dugettext_policy(translations: NullTranslations, tstring: str, domain: str | None, context: str | None) -> str: ... +def Translator(translations: NullTranslations | None = None, policy: _TranslatorPolicy | None = None) -> _Translator: ... +def ungettext_policy( + translations: NullTranslations, singular: str, plural: str, n: int, domain: str | None, context: str | None +) -> str: ... +def dungettext_policy( + translations: NullTranslations, singular: str, plural: str, n: int, domain: str | None, context: str | None +) -> str: ... +def Pluralizer(translations: NullTranslations | None = None, policy: _PluralizerPolicy | None = None) -> _Pluralizer: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/tree_sitter/binding.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/tree_sitter/binding.pyi index f8d4d32d5..f1c713e98 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/tree_sitter/binding.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/tree_sitter/binding.pyi @@ -66,7 +66,7 @@ class Node: class Parser: # At runtime, Parser(1, 2, 3) ignores the arguments, but that's most likely buggy code def __init__(self) -> None: ... - def parse(self, source: bytes, old_tree: Tree | None = ..., keep_text: bool = ...) -> Tree: ... + def parse(self, source: bytes, old_tree: Tree | None = None, keep_text: bool = True) -> Tree: ... def set_language(self, __language: Language) -> None: ... @final diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/_utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/_utils.pyi index b60a742f0..20fc39fae 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/_utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/_utils.pyi @@ -3,5 +3,5 @@ from _typeshed import Incomplete def temporary_chdir(new_dir) -> None: ... def get_file_directory(): ... def get_temp_directory(): ... -def get_themes_directory(theme_name: Incomplete | None = ..., png: bool = ...): ... +def get_themes_directory(theme_name: Incomplete | None = None, png: bool = False): ... def create_directory(directory): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/_widget.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/_widget.pyi index 96900d6cf..891e7b747 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/_widget.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/_widget.pyi @@ -7,7 +7,7 @@ class ThemedWidget: PACKAGES: ClassVar[dict[str, str]] tk: _tkinter.TkappType png_support: bool - def __init__(self, tk_interpreter, gif_override: bool = ...) -> None: ... + def __init__(self, tk_interpreter, gif_override: bool = False) -> None: ... def set_theme(self, theme_name: str) -> None: ... def get_themes(self) -> list[str]: ... @property @@ -17,10 +17,10 @@ class ThemedWidget: def set_theme_advanced( self, theme_name: str, - brightness: float = ..., - saturation: float = ..., - hue: float = ..., - preserve_transparency: bool = ..., - output_dir: StrPath | None = ..., - advanced_name: str = ..., + brightness: float = 1.0, + saturation: float = 1.0, + hue: float = 1.0, + preserve_transparency: bool = True, + output_dir: StrPath | None = None, + advanced_name: str = "advanced", ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/themed_style.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/themed_style.pyi index e70eb8a48..e880f0718 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/themed_style.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/themed_style.pyi @@ -8,5 +8,5 @@ class ThemedStyle(ttk.Style, ThemedWidget): self, master: tkinter.Misc | None = ..., *, theme: str | None = ..., gif_override: bool | None = ..., **kwargs ) -> None: ... # theme_use() can't return None (differs from ttk.Style) - def theme_use(self, theme_name: str | None = ...) -> str: ... # type: ignore[override] + def theme_use(self, theme_name: str | None = None) -> str: ... # type: ignore[override] def theme_names(self) -> list[str]: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/themed_tk.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/themed_tk.pyi index b39ea3c6e..8bf6ac4c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/themed_tk.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/ttkthemes/themed_tk.pyi @@ -21,10 +21,10 @@ class ThemedTk(tkinter.Tk, ThemedWidget): background: bool | None = ..., # old alias for themebg gif_override: bool = ..., ) -> None: ... - def set_theme(self, theme_name, toplevel: bool | None = ..., themebg: bool | None = ...) -> None: ... + def set_theme(self, theme_name, toplevel: bool | None = None, themebg: bool | None = None) -> None: ... # TODO: currently no good way to say "use the same big list of kwargs as parent class but also add these" - def config(self, kw: Incomplete | None = ..., **kwargs): ... # type: ignore[override] + def config(self, kw: Incomplete | None = None, **kwargs): ... # type: ignore[override] def cget(self, k): ... - def configure(self, kw: Incomplete | None = ..., **kwargs): ... # type: ignore[override] + def configure(self, kw: Incomplete | None = None, **kwargs): ... # type: ignore[override] def __getitem__(self, k): ... def __setitem__(self, k, v) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast27.pyi b/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast27.pyi index 3a4d19938..4d6fec1a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast27.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast27.pyi @@ -10,12 +10,12 @@ class NodeVisitor: class NodeTransformer(NodeVisitor): def generic_visit(self, node: AST) -> None: ... -def parse(source: str | ReadableBuffer, filename: str | ReadableBuffer = ..., mode: str = ...) -> AST: ... +def parse(source: str | ReadableBuffer, filename: str | ReadableBuffer = "", mode: str = "exec") -> AST: ... def copy_location(new_node: AST, old_node: AST) -> AST: ... -def dump(node: AST, annotate_fields: bool = ..., include_attributes: bool = ...) -> str: ... +def dump(node: AST, annotate_fields: bool = True, include_attributes: bool = False) -> str: ... def fix_missing_locations(node: AST) -> AST: ... -def get_docstring(node: AST, clean: bool = ...) -> str | bytes | None: ... -def increment_lineno(node: AST, n: int = ...) -> AST: ... +def get_docstring(node: AST, clean: bool = True) -> str | bytes | None: ... +def increment_lineno(node: AST, n: int = 1) -> AST: ... def iter_child_nodes(node: AST) -> Iterator[AST]: ... def iter_fields(node: AST) -> Iterator[tuple[str, Any]]: ... def literal_eval(node_or_string: str | AST) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast3.pyi b/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast3.pyi index 154eae07a..5898482ca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast3.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast3.pyi @@ -13,13 +13,13 @@ class NodeTransformer(NodeVisitor): def generic_visit(self, node: AST) -> None: ... def parse( - source: str | ReadableBuffer, filename: str | ReadableBuffer = ..., mode: str = ..., feature_version: int = ... + source: str | ReadableBuffer, filename: str | ReadableBuffer = "", mode: str = "exec", feature_version: int = 7 ) -> AST: ... def copy_location(new_node: AST, old_node: AST) -> AST: ... -def dump(node: AST, annotate_fields: bool = ..., include_attributes: bool = ...) -> str: ... +def dump(node: AST, annotate_fields: bool = True, include_attributes: bool = False) -> str: ... def fix_missing_locations(node: AST) -> AST: ... -def get_docstring(node: AST, clean: bool = ...) -> str | None: ... -def increment_lineno(node: AST, n: int = ...) -> AST: ... +def get_docstring(node: AST, clean: bool = True) -> str | None: ... +def increment_lineno(node: AST, n: int = 1) -> AST: ... def iter_child_nodes(node: AST) -> Iterator[AST]: ... def iter_fields(node: AST) -> Iterator[tuple[str, Any]]: ... def literal_eval(node_or_string: str | AST) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/__init__.pyi index 12ca61031..8794ea575 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/__init__.pyi @@ -24,5 +24,5 @@ Retry = retry.Retry class NullHandler(logging.Handler): def emit(self, record): ... -def add_stderr_logger(level: int = ...) -> logging.StreamHandler[TextIO]: ... +def add_stderr_logger(level: int = 10) -> logging.StreamHandler[TextIO]: ... def disable_warnings(category: type[Warning] = ...) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/_collections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/_collections.pyi index 630fe616a..e282a9fc0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/_collections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/_collections.pyi @@ -15,7 +15,7 @@ class RecentlyUsedContainer(MutableMapping[_KT, _VT]): ContainerCls: Any dispose_func: Any lock: Any - def __init__(self, maxsize=..., dispose_func=...) -> None: ... + def __init__(self, maxsize=10, dispose_func=None) -> None: ... def __getitem__(self, key): ... def __setitem__(self, key, value) -> None: ... def __delitem__(self, key) -> None: ... @@ -25,7 +25,7 @@ class RecentlyUsedContainer(MutableMapping[_KT, _VT]): def keys(self): ... class HTTPHeaderDict(MutableMapping[str, str]): - def __init__(self, headers=..., **kwargs) -> None: ... + def __init__(self, headers=None, **kwargs) -> None: ... def __setitem__(self, key, val) -> None: ... def __getitem__(self, key): ... def __delitem__(self, key) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connection.pyi index 8baca880b..51cac4f0a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connection.pyi @@ -36,7 +36,7 @@ class HTTPSConnection(HTTPConnection): default_port: Any key_file: Any cert_file: Any - def __init__(self, host, port=..., key_file=..., cert_file=..., strict=..., timeout=..., **kw) -> None: ... + def __init__(self, host, port=None, key_file=None, cert_file=None, strict=None, timeout=..., **kw) -> None: ... sock: Any def connect(self): ... @@ -48,7 +48,9 @@ class VerifiedHTTPSConnection(HTTPSConnection): key_file: Any cert_file: Any assert_hostname: Any - def set_cert(self, key_file=..., cert_file=..., cert_reqs=..., ca_certs=..., assert_hostname=..., assert_fingerprint=...): ... + def set_cert( + self, key_file=None, cert_file=None, cert_reqs=None, ca_certs=None, assert_hostname=None, assert_fingerprint=None + ): ... sock: Any auto_open: Any is_verified: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connectionpool.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connectionpool.pyi index 4d27996de..ccb43e307 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connectionpool.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connectionpool.pyi @@ -45,7 +45,7 @@ class ConnectionPool: QueueCls: ClassVar[type[queue.Queue[Any]]] host: str port: int | None - def __init__(self, host: str, port: int | None = ...) -> None: ... + def __init__(self, host: str, port: int | None = None) -> None: ... def __enter__(self) -> Self: ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None @@ -69,15 +69,15 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): def __init__( self, host: str, - port: int | None = ..., - strict: bool = ..., + port: int | None = None, + strict: bool = False, timeout: _Timeout = ..., - maxsize: int = ..., - block: bool = ..., - headers: Mapping[str, str] | None = ..., - retries: _Retries | None = ..., - _proxy: Url | None = ..., - _proxy_headers: Mapping[str, str] | None = ..., + maxsize: int = 1, + block: bool = False, + headers: Mapping[str, str] | None = None, + retries: _Retries | None = None, + _proxy: Url | None = None, + _proxy_headers: Mapping[str, str] | None = None, **conn_kw, ) -> None: ... def close(self) -> None: ... @@ -86,14 +86,14 @@ class HTTPConnectionPool(ConnectionPool, RequestMethods): self, method, url, - body=..., - headers=..., - retries=..., - redirect=..., - assert_same_host=..., + body=None, + headers=None, + retries=None, + redirect=True, + assert_same_host=True, timeout=..., - pool_timeout=..., - release_conn=..., + pool_timeout=None, + release_conn=None, **response_kw, ): ... @@ -108,22 +108,22 @@ class HTTPSConnectionPool(HTTPConnectionPool): def __init__( self, host: str, - port: int | None = ..., - strict: bool = ..., + port: int | None = None, + strict: bool = False, timeout: _Timeout = ..., - maxsize: int = ..., - block: bool = ..., - headers: Mapping[str, str] | None = ..., - retries: _Retries | None = ..., - _proxy: Url | None = ..., - _proxy_headers: Mapping[str, str] | None = ..., - key_file: str | None = ..., - cert_file: str | None = ..., - cert_reqs: int | str | None = ..., - ca_certs: str | None = ..., - ssl_version: int | str | None = ..., - assert_hostname: str | Literal[False] | None = ..., - assert_fingerprint: str | None = ..., + maxsize: int = 1, + block: bool = False, + headers: Mapping[str, str] | None = None, + retries: _Retries | None = None, + _proxy: Url | None = None, + _proxy_headers: Mapping[str, str] | None = None, + key_file: str | None = None, + cert_file: str | None = None, + cert_reqs: int | str | None = None, + ca_certs: str | None = None, + ssl_version: int | str | None = None, + assert_hostname: str | Literal[False] | None = None, + assert_fingerprint: str | None = None, **conn_kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/exceptions.pyi index 8c2090613..f55e8ad93 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/exceptions.pyi @@ -29,11 +29,11 @@ ConnectionError = ProtocolError class MaxRetryError(RequestError): reason: Exception | None - def __init__(self, pool: ConnectionPool, url: str, reason: Exception | None = ...) -> None: ... + def __init__(self, pool: ConnectionPool, url: str, reason: Exception | None = None) -> None: ... class HostChangedError(RequestError): retries: Retry | int - def __init__(self, pool: ConnectionPool, url: str, retries: Retry | int = ...) -> None: ... + def __init__(self, pool: ConnectionPool, url: str, retries: Retry | int = 3) -> None: ... class TimeoutStateError(HTTPError): ... class TimeoutError(HTTPError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/fields.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/fields.pyi index a7eb02554..f2ce965e7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/fields.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/fields.pyi @@ -5,7 +5,7 @@ from typing_extensions import TypeAlias _FieldValue: TypeAlias = str | bytes _FieldValueTuple: TypeAlias = _FieldValue | tuple[str, _FieldValue] | tuple[str, _FieldValue, str] -def guess_content_type(filename: str | None, default: str = ...) -> str: ... +def guess_content_type(filename: str | None, default: str = "application/octet-stream") -> str: ... def format_header_param_rfc2231(name: str, value: _FieldValue) -> str: ... def format_header_param_html5(name: str, value: _FieldValue) -> str: ... @@ -18,8 +18,8 @@ class RequestField: self, name: str, data: _FieldValue, - filename: str | None = ..., - headers: Mapping[str, str] | None = ..., + filename: str | None = None, + headers: Mapping[str, str] | None = None, header_formatter: Callable[[str, _FieldValue], str] = ..., ) -> None: ... @classmethod @@ -28,5 +28,5 @@ class RequestField: ) -> RequestField: ... def render_headers(self) -> str: ... def make_multipart( - self, content_disposition: str | None = ..., content_type: str | None = ..., content_location: str | None = ... + self, content_disposition: str | None = None, content_type: str | None = None, content_location: str | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/filepost.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/filepost.pyi index 49bd7e046..ee92d1122 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/filepost.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/filepost.pyi @@ -1,4 +1,6 @@ +from collections.abc import Iterable, Mapping, Sequence from typing import Any +from typing_extensions import TypeAlias from . import fields @@ -6,7 +8,10 @@ RequestField = fields.RequestField writer: Any -def choose_boundary(): ... -def iter_field_objects(fields): ... +_TYPE_FIELDS_SEQUENCE: TypeAlias = Sequence[tuple[str, fields._FieldValueTuple] | RequestField] +_TYPE_FIELDS: TypeAlias = _TYPE_FIELDS_SEQUENCE | Mapping[str, fields._FieldValueTuple] + +def choose_boundary() -> str: ... +def iter_field_objects(fields: _TYPE_FIELDS) -> Iterable[RequestField]: ... def iter_fields(fields): ... -def encode_multipart_formdata(fields, boundary=...): ... +def encode_multipart_formdata(fields: _TYPE_FIELDS, boundary: str | None = None) -> tuple[bytes, str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/poolmanager.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/poolmanager.pyi index ff8df6277..783197af8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/poolmanager.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/poolmanager.pyi @@ -8,13 +8,13 @@ class PoolManager(RequestMethods): proxy: Any connection_pool_kw: Any pools: Any - def __init__(self, num_pools=..., headers=..., **connection_pool_kw) -> None: ... + def __init__(self, num_pools=10, headers=None, **connection_pool_kw) -> None: ... def __enter__(self): ... def __exit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None ) -> Literal[False]: ... def clear(self): ... - def connection_from_host(self, host, port=..., scheme=...): ... + def connection_from_host(self, host, port=None, scheme="http"): ... def connection_from_url(self, url): ... # TODO: This was the original signature -- copied another one from base class to fix complaint. # def urlopen(self, method, url, redirect=True, **kw): ... @@ -23,8 +23,8 @@ class PoolManager(RequestMethods): class ProxyManager(PoolManager): proxy: Any proxy_headers: Any - def __init__(self, proxy_url, num_pools=..., headers=..., proxy_headers=..., **connection_pool_kw) -> None: ... - def connection_from_host(self, host, port=..., scheme=...): ... + def __init__(self, proxy_url, num_pools=10, headers=None, proxy_headers=None, **connection_pool_kw) -> None: ... + def connection_from_host(self, host, port=None, scheme="http"): ... # TODO: This was the original signature -- copied another one from base class to fix complaint. # def urlopen(self, method, url, redirect=True, **kw): ... def urlopen(self, method, url, body=..., headers=..., encode_multipart=..., multipart_boundary=..., **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/request.pyi index b95ab295b..e9b14e225 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/request.pyi @@ -2,10 +2,10 @@ from typing import Any class RequestMethods: headers: Any - def __init__(self, headers=...) -> None: ... - def urlopen(self, method, url, body=..., headers=..., encode_multipart=..., multipart_boundary=..., **kw): ... - def request(self, method, url, fields=..., headers=..., **urlopen_kw): ... - def request_encode_url(self, method, url, fields=..., **urlopen_kw): ... + def __init__(self, headers=None) -> None: ... + def urlopen(self, method, url, body=None, headers=None, encode_multipart=True, multipart_boundary=None, **kw): ... + def request(self, method, url, fields=None, headers=None, **urlopen_kw): ... + def request_encode_url(self, method, url, fields=None, **urlopen_kw): ... def request_encode_body( - self, method, url, fields=..., headers=..., encode_multipart=..., multipart_boundary=..., **urlopen_kw + self, method, url, fields=None, headers=None, encode_multipart=True, multipart_boundary=None, **urlopen_kw ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/response.pyi index a4f76d312..ee28d2c01 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/response.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/response.pyi @@ -52,23 +52,23 @@ class HTTPResponse(io.IOBase): length_remaining: int | None def __init__( self, - body: _TYPE_BODY = ..., - headers: Mapping[str, str] | Mapping[bytes, bytes] | None = ..., - status: int = ..., - version: int = ..., - reason: str | None = ..., - strict: int = ..., - preload_content: bool = ..., - decode_content: bool = ..., - original_response: _HttplibHTTPResponse | None = ..., - pool: HTTPConnectionPool | None = ..., - connection: HTTPConnection | None = ..., - msg: _HttplibHTTPMessage | None = ..., - retries: Retry | None = ..., - enforce_content_length: bool = ..., - request_method: str | None = ..., - request_url: str | None = ..., - auto_close: bool = ..., + body: _TYPE_BODY = "", + headers: Mapping[str, str] | Mapping[bytes, bytes] | None = None, + status: int = 0, + version: int = 0, + reason: str | None = None, + strict: int = 0, + preload_content: bool = True, + decode_content: bool = True, + original_response: _HttplibHTTPResponse | None = None, + pool: HTTPConnectionPool | None = None, + connection: HTTPConnection | None = None, + msg: _HttplibHTTPMessage | None = None, + retries: Retry | None = None, + enforce_content_length: bool = False, + request_method: str | None = None, + request_url: str | None = None, + auto_close: bool = True, ) -> None: ... def get_redirect_location(self) -> Literal[False] | str | None: ... def release_conn(self) -> None: ... @@ -79,12 +79,12 @@ class HTTPResponse(io.IOBase): def connection(self) -> HTTPConnection | Any: ... def isclosed(self) -> bool: ... def tell(self) -> int: ... - def read(self, amt: int | None = ..., decode_content: bool | None = ..., cache_content: bool = ...) -> bytes: ... - def stream(self, amt: int | None = ..., decode_content: bool | None = ...) -> Iterator[bytes]: ... + def read(self, amt: int | None = None, decode_content: bool | None = None, cache_content: bool = False) -> bytes: ... + def stream(self, amt: int | None = 65536, decode_content: bool | None = None) -> Iterator[bytes]: ... @classmethod def from_httplib(cls, r: _HttplibHTTPResponse, **response_kw: Any) -> Self: ... def getheaders(self) -> HTTPHeaderDict: ... - def getheader(self, name, default=...) -> str | None: ... + def getheader(self, name, default=None) -> str | None: ... def info(self) -> HTTPHeaderDict: ... def close(self) -> None: ... @property @@ -94,5 +94,5 @@ class HTTPResponse(io.IOBase): def readable(self) -> bool: ... def readinto(self, b: bytearray) -> int: ... def supports_chunked_reads(self) -> bool: ... - def read_chunked(self, amt: int | None = ..., decode_content: bool | None = ...) -> Iterator[bytes]: ... + def read_chunked(self, amt: int | None = None, decode_content: bool | None = None) -> Iterator[bytes]: ... def geturl(self) -> str | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/connection.pyi index db77bd009..8d2e6c296 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/connection.pyi @@ -5,4 +5,4 @@ select: Any HAS_IPV6: bool def is_connection_dropped(conn): ... -def create_connection(address, timeout=..., source_address=..., socket_options=...): ... +def create_connection(address, timeout=..., source_address=None, socket_options=None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/request.pyi index f770cd9fa..a2f227120 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/request.pyi @@ -7,5 +7,5 @@ from typing import Any ACCEPT_ENCODING: Any def make_headers( - keep_alive=..., accept_encoding=..., user_agent=..., basic_auth=..., proxy_basic_auth=..., disable_cache=... + keep_alive=None, accept_encoding=None, user_agent=None, basic_auth=None, proxy_basic_auth=None, disable_cache=None ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/retry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/retry.pyi index 8fdb97685..d0f9cfe83 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/retry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/retry.pyi @@ -45,40 +45,40 @@ class Retry: remove_headers_on_redirect: frozenset[str] def __init__( self, - total: bool | int | None = ..., - connect: int | None = ..., - read: int | None = ..., - redirect: bool | int | None = ..., - status: int | None = ..., - other: int | None = ..., + total: bool | int | None = 10, + connect: int | None = None, + read: int | None = None, + redirect: bool | int | None = None, + status: int | None = None, + other: int | None = None, allowed_methods: Collection[str] | Literal[False] | None = ..., - status_forcelist: Collection[int] | None = ..., - backoff_factor: float = ..., - raise_on_redirect: bool = ..., - raise_on_status: bool = ..., - history: tuple[RequestHistory, ...] | None = ..., - respect_retry_after_header: bool = ..., + status_forcelist: Collection[int] | None = None, + backoff_factor: float = 0, + raise_on_redirect: bool = True, + raise_on_status: bool = True, + history: tuple[RequestHistory, ...] | None = None, + respect_retry_after_header: bool = True, remove_headers_on_redirect: Collection[str] = ..., method_whitelist: Collection[str] | None = ..., ) -> None: ... def new(self, **kw: Any) -> Self: ... @classmethod def from_int( - cls, retries: Retry | bool | int | None, redirect: bool | int | None = ..., default: Retry | bool | int | None = ... + cls, retries: Retry | bool | int | None, redirect: bool | int | None = True, default: Retry | bool | int | None = None ) -> Retry: ... def get_backoff_time(self) -> float: ... def parse_retry_after(self, retry_after: str) -> float: ... def get_retry_after(self, response: HTTPResponse) -> float | None: ... - def sleep_for_retry(self, response: HTTPResponse | None = ...) -> bool: ... - def sleep(self, response: HTTPResponse | None = ...) -> None: ... - def is_retry(self, method: str, status_code: int, has_retry_after: bool = ...) -> bool: ... + def sleep_for_retry(self, response: HTTPResponse | None = None) -> bool: ... + def sleep(self, response: HTTPResponse | None = None) -> None: ... + def is_retry(self, method: str, status_code: int, has_retry_after: bool = False) -> bool: ... def is_exhausted(self) -> bool: ... def increment( self, - method: str | None = ..., - url: str | None = ..., - response: HTTPResponse | None = ..., - error: Exception | None = ..., - _pool: ConnectionPool | None = ..., - _stacktrace: TracebackType | None = ..., + method: str | None = None, + url: str | None = None, + response: HTTPResponse | None = None, + error: Exception | None = None, + _pool: ConnectionPool | None = None, + _stacktrace: TracebackType | None = None, ) -> Retry: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/ssl_.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/ssl_.pyi index 3a3c53928..999d3a336 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/ssl_.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/ssl_.pyi @@ -17,15 +17,15 @@ DEFAULT_CIPHERS: str def assert_fingerprint(cert, fingerprint): ... def resolve_cert_reqs(candidate): ... def resolve_ssl_version(candidate): ... -def create_urllib3_context(ssl_version=..., cert_reqs=..., options=..., ciphers=...): ... +def create_urllib3_context(ssl_version=None, cert_reqs=None, options=None, ciphers=None): ... def ssl_wrap_socket( sock, - keyfile=..., - certfile=..., - cert_reqs=..., - ca_certs=..., - server_hostname=..., - ssl_version=..., - ciphers=..., - ssl_context=..., + keyfile=None, + certfile=None, + cert_reqs=None, + ca_certs=None, + server_hostname=None, + ssl_version=None, + ciphers=None, + ssl_context=None, ): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/timeout.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/timeout.pyi index 25879d685..e9f2aad72 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/timeout.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/timeout.pyi @@ -9,7 +9,7 @@ def current_time(): ... class Timeout: DEFAULT_TIMEOUT: Any total: Any - def __init__(self, total=..., connect=..., read=...) -> None: ... + def __init__(self, total=None, connect=..., read=...) -> None: ... @classmethod def from_float(cls, timeout): ... def clone(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/url.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/url.pyi index fe98d2a1c..678f09869 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/url.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/url.pyi @@ -18,13 +18,13 @@ class _UrlBase(NamedTuple): class Url(_UrlBase): def __new__( cls, - scheme: str | None = ..., - auth: str | None = ..., - host: str | None = ..., - port: int | None = ..., - path: str | None = ..., - query: str | None = ..., - fragment: str | None = ..., + scheme: str | None = None, + auth: str | None = None, + host: str | None = None, + port: int | None = None, + path: str | None = None, + query: str | None = None, + fragment: str | None = None, ): ... @property def hostname(self) -> str | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/base.pyi index 138794c44..556f5e727 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/base.pyi @@ -21,25 +21,25 @@ class VBase: behavior: Incomplete | None parentBehavior: Incomplete | None isNative: bool - def __init__(self, group: Incomplete | None = ...) -> None: ... + def __init__(self, group: Incomplete | None = None) -> None: ... def copy(self, copyit: VBase) -> None: ... def validate(self, *args, **kwds) -> bool: ... def getChildren(self) -> list[Any]: ... - def clearBehavior(self, cascade: bool = ...) -> None: ... - def autoBehavior(self, cascade: bool = ...) -> None: ... - def setBehavior(self, behavior, cascade: bool = ...) -> None: ... + def clearBehavior(self, cascade: bool = True) -> None: ... + def autoBehavior(self, cascade: bool = False) -> None: ... + def setBehavior(self, behavior, cascade: bool = True) -> None: ... def transformToNative(self): ... def transformFromNative(self): ... def transformChildrenToNative(self) -> None: ... - def transformChildrenFromNative(self, clearBehavior: bool = ...) -> None: ... + def transformChildrenFromNative(self, clearBehavior: bool = True) -> None: ... @overload def serialize( - self, buf: None = ..., lineLength: int = ..., validate: bool = ..., behavior: Incomplete | None = ... + self, buf: None = None, lineLength: int = 75, validate: bool = True, behavior: Incomplete | None = None ) -> str: ... @overload - def serialize(self, buf: _W, lineLength: int = ..., validate: bool = ..., behavior: Incomplete | None = ...) -> _W: ... + def serialize(self, buf: _W, lineLength: int = 75, validate: bool = True, behavior: Incomplete | None = None) -> _W: ... -def toVName(name, stripNum: int = ..., upper: bool = ...): ... +def toVName(name, stripNum: int = 0, upper: bool = False): ... class ContentLine(VBase): name: Any @@ -54,10 +54,10 @@ class ContentLine(VBase): name, params, value, - group: Incomplete | None = ..., - encoded: bool = ..., - isNative: bool = ..., - lineNumber: Incomplete | None = ..., + group: Incomplete | None = None, + encoded: bool = False, + isNative: bool = False, + lineNumber: Incomplete | None = None, *args, **kwds, ) -> None: ... @@ -70,13 +70,13 @@ class ContentLine(VBase): def __delattr__(self, name: str) -> None: ... def valueRepr(self): ... def __unicode__(self) -> str: ... - def prettyPrint(self, level: int = ..., tabwidth: int = ...) -> None: ... + def prettyPrint(self, level: int = 0, tabwidth: int = 3) -> None: ... class Component(VBase): contents: dict[str, list[VBase]] name: Any useBegin: bool - def __init__(self, name: Incomplete | None = ..., *args, **kwds) -> None: ... + def __init__(self, name: Incomplete | None = None, *args, **kwds) -> None: ... @classmethod def duplicate(cls, copyit): ... def copy(self, copyit) -> None: ... @@ -85,17 +85,17 @@ class Component(VBase): normal_attributes: Any def __setattr__(self, name: str, value) -> None: ... def __delattr__(self, name: str) -> None: ... - def getChildValue(self, childName, default: Incomplete | None = ..., childNumber: int = ...): ... + def getChildValue(self, childName, default: Incomplete | None = None, childNumber: int = 0): ... @overload - def add(self, objOrName: _V, group: str | None = ...) -> _V: ... + def add(self, objOrName: _V, group: str | None = None) -> _V: ... @overload - def add(self, objOrName: Literal["vevent"], group: str | None = ...) -> Component: ... + def add(self, objOrName: Literal["vevent"], group: str | None = None) -> Component: ... @overload def add( - self, objOrName: Literal["uid", "summary", "description", "dtstart", "dtend"], group: str | None = ... + self, objOrName: Literal["uid", "summary", "description", "dtstart", "dtend"], group: str | None = None ) -> ContentLine: ... @overload - def add(self, objOrName: str, group: str | None = ...) -> Any: ... # returns VBase sub-class + def add(self, objOrName: str, group: str | None = None) -> Any: ... # returns VBase sub-class def remove(self, obj) -> None: ... def getChildren(self) -> list[Any]: ... def components(self) -> Iterable[Component]: ... @@ -104,13 +104,13 @@ class Component(VBase): def getSortedChildren(self): ... def setBehaviorFromVersionLine(self, versionLine) -> None: ... def transformChildrenToNative(self) -> None: ... - def transformChildrenFromNative(self, clearBehavior: bool = ...) -> None: ... - def prettyPrint(self, level: int = ..., tabwidth: int = ...) -> None: ... + def transformChildrenFromNative(self, clearBehavior: bool = True) -> None: ... + def prettyPrint(self, level: int = 0, tabwidth: int = 3) -> None: ... class VObjectError(Exception): msg: Any lineNumber: Any - def __init__(self, msg, lineNumber: Incomplete | None = ...) -> None: ... + def __init__(self, msg, lineNumber: Incomplete | None = None) -> None: ... class ParseError(VObjectError): ... class ValidateError(VObjectError): ... @@ -123,16 +123,16 @@ line_re: Any begin_re: Any def parseParams(string): ... -def parseLine(line, lineNumber: Incomplete | None = ...): ... +def parseLine(line, lineNumber: Incomplete | None = None): ... wrap_re: Any logical_lines_re: Any testLines: str -def getLogicalLines(fp, allowQP: bool = ...) -> None: ... -def textLineToContentLine(text, n: Incomplete | None = ...): ... +def getLogicalLines(fp, allowQP: bool = True) -> None: ... +def textLineToContentLine(text, n: Incomplete | None = None): ... def dquoteEscape(param): ... -def foldOneLine(outbuf, input, lineLength: int = ...) -> None: ... +def foldOneLine(outbuf, input, lineLength: int = 75) -> None: ... def defaultSerialize(obj, buf, lineLength): ... class Stack: @@ -145,10 +145,10 @@ class Stack: def pop(self): ... def readComponents( - streamOrString, validate: bool = ..., transform: bool = ..., ignoreUnreadable: bool = ..., allowQP: bool = ... + streamOrString, validate: bool = False, transform: bool = True, ignoreUnreadable: bool = False, allowQP: bool = False ) -> Iterator[Component]: ... -def readOne(stream, validate: bool = ..., transform: bool = ..., ignoreUnreadable: bool = ..., allowQP: bool = ...): ... -def registerBehavior(behavior, name: Incomplete | None = ..., default: bool = ..., id: Incomplete | None = ...) -> None: ... -def getBehavior(name, id: Incomplete | None = ...): ... -def newFromBehavior(name, id: Incomplete | None = ...): ... +def readOne(stream, validate: bool = False, transform: bool = True, ignoreUnreadable: bool = False, allowQP: bool = False): ... +def registerBehavior(behavior, name: Incomplete | None = None, default: bool = False, id: Incomplete | None = None) -> None: ... +def getBehavior(name, id: Incomplete | None = None): ... +def newFromBehavior(name, id: Incomplete | None = None): ... def backslashEscape(s): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/behavior.pyi b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/behavior.pyi index 9c6e5a6ec..72f371ad3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/behavior.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/behavior.pyi @@ -13,7 +13,7 @@ class Behavior: forceUTC: bool sortFirst: Any @classmethod - def validate(cls, obj, raiseException: bool = ..., complainUnrecognized: bool = ...): ... + def validate(cls, obj, raiseException: bool = False, complainUnrecognized: bool = False): ... @classmethod def lineValidate(cls, line, raiseException, complainUnrecognized): ... @classmethod @@ -27,6 +27,6 @@ class Behavior: @classmethod def generateImplicitParameters(cls, obj) -> None: ... @classmethod - def serialize(cls, obj, buf, lineLength, validate: bool = ...): ... + def serialize(cls, obj, buf, lineLength, validate: bool = True): ... @classmethod def valueRepr(cls, line): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/change_tz.pyi b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/change_tz.pyi index ed4de7b2b..18915bb3d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/change_tz.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/change_tz.pyi @@ -1,4 +1,4 @@ -def change_tz(cal, new_timezone, default, utc_only: bool = ..., utc_tz=...) -> None: ... +def change_tz(cal, new_timezone, default, utc_only: bool = False, utc_tz=...) -> None: ... def main() -> None: ... version: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/hcalendar.pyi b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/hcalendar.pyi index 0c29d239d..bbebf71bd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/hcalendar.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/hcalendar.pyi @@ -5,4 +5,4 @@ from .icalendar import VCalendar2_0 class HCalendar(VCalendar2_0): name: str @classmethod - def serialize(cls, obj, buf: Incomplete | None = ..., lineLength: Incomplete | None = ..., validate: bool = ...): ... + def serialize(cls, obj, buf: Incomplete | None = None, lineLength: Incomplete | None = None, validate: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/icalendar.pyi b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/icalendar.pyi index ecfe79a18..75dff2e52 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/icalendar.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/icalendar.pyi @@ -16,7 +16,7 @@ twoHours: timedelta def toUnicode(s: str | bytes) -> str: ... def registerTzid(tzid, tzinfo) -> None: ... -def getTzid(tzid, smart: bool = ...): ... +def getTzid(tzid, smart: bool = True): ... utc: Any # dateutil.tz.tz.tzutc @@ -26,23 +26,23 @@ class TimezoneComponent(Component): tzinfo: Any name: str useBegin: bool - def __init__(self, tzinfo: Incomplete | None = ..., *args, **kwds) -> None: ... + def __init__(self, tzinfo: Incomplete | None = None, *args, **kwds) -> None: ... @classmethod def registerTzinfo(cls, tzinfo): ... def gettzinfo(self): ... tzid: Any daylight: Any standard: Any - def settzinfo(self, tzinfo, start: int = ..., end: int = ...): ... + def settzinfo(self, tzinfo, start: int = 2000, end: int = 2030): ... normal_attributes: Any @staticmethod - def pickTzid(tzinfo, allowUTC: bool = ...): ... + def pickTzid(tzinfo, allowUTC: bool = False): ... def prettyPrint(self, level, tabwidth) -> None: ... # type: ignore[override] class RecurringComponent(Component): isNative: bool def __init__(self, *args, **kwds) -> None: ... - def getrruleset(self, addRDate: bool = ...): ... + def getrruleset(self, addRDate: bool = False): ... def setrruleset(self, rruleset): ... rruleset: Any def __setattr__(self, name, value) -> None: ... @@ -110,7 +110,7 @@ class VCalendar2_0(VCalendarComponentBehavior): @classmethod def generateImplicitParameters(cls, obj) -> None: ... @classmethod - def serialize(cls, obj, buf, lineLength, validate: bool = ...): ... + def serialize(cls, obj, buf, lineLength, validate: bool = True): ... class VTimezone(VCalendarComponentBehavior): name: str @@ -220,18 +220,18 @@ def numToDigits(num, places): ... def timedeltaToString(delta): ... def timeToString(dateOrDateTime): ... def dateToString(date): ... -def dateTimeToString(dateTime, convertToUTC: bool = ...): ... +def dateTimeToString(dateTime, convertToUTC: bool = False): ... def deltaToOffset(delta): ... -def periodToString(period, convertToUTC: bool = ...): ... +def periodToString(period, convertToUTC: bool = False): ... def isDuration(s): ... def stringToDate(s): ... -def stringToDateTime(s, tzinfo: Incomplete | None = ...): ... +def stringToDateTime(s, tzinfo: Incomplete | None = None): ... escapableCharList: str -def stringToTextValues(s, listSeparator: str = ..., charList: Incomplete | None = ..., strict: bool = ...): ... -def stringToDurations(s, strict: bool = ...): ... -def parseDtstart(contentline, allowSignatureMismatch: bool = ...): ... -def stringToPeriod(s, tzinfo: Incomplete | None = ...): ... +def stringToTextValues(s, listSeparator: str = ",", charList: Incomplete | None = None, strict: bool = False): ... +def stringToDurations(s, strict: bool = False): ... +def parseDtstart(contentline, allowSignatureMismatch: bool = False): ... +def stringToPeriod(s, tzinfo: Incomplete | None = None): ... def getTransition(transitionTo, year, tzinfo): ... -def tzinfo_eq(tzinfo1, tzinfo2, startYear: int = ..., endYear: int = ...): ... +def tzinfo_eq(tzinfo1, tzinfo2, startYear: int = 2000, endYear: int = 2020): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/ics_diff.pyi b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/ics_diff.pyi index b115a461a..7da018df9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/ics_diff.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/ics_diff.pyi @@ -1,6 +1,6 @@ def getSortKey(component): ... def sortByUID(components): ... -def deleteExtraneous(component, ignore_dtstamp: bool = ...) -> None: ... +def deleteExtraneous(component, ignore_dtstamp: bool = False) -> None: ... def diff(left, right): ... def prettyDiff(leftObj, rightObj) -> None: ... def main() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/vcard.pyi b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/vcard.pyi index 54bdc9bed..0af7e3c75 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/vcard.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/vobject/vobject/vcard.pyi @@ -9,9 +9,7 @@ class Name: additional: Any prefix: Any suffix: Any - def __init__( - self, family: str = ..., given: str = ..., additional: str = ..., prefix: str = ..., suffix: str = ... - ) -> None: ... + def __init__(self, family: str = "", given: str = "", additional: str = "", prefix: str = "", suffix: str = "") -> None: ... @staticmethod def toString(val): ... def __eq__(self, other): ... @@ -26,16 +24,16 @@ class Address: country: Any def __init__( self, - street: str = ..., - city: str = ..., - region: str = ..., - code: str = ..., - country: str = ..., - box: str = ..., - extended: str = ..., + street: str = "", + city: str = "", + region: str = "", + code: str = "", + country: str = "", + box: str = "", + extended: str = "", ) -> None: ... @staticmethod - def toString(val, join_char: str = ...): ... + def toString(val, join_char: str = "\n"): ... lines: Any one_line: Any def __eq__(self, other): ... @@ -84,7 +82,7 @@ class Photo(VCardTextBehavior): def toListOrString(string): ... def splitFields(string): ... def toList(stringOrList): ... -def serializeFields(obj, order: Incomplete | None = ...): ... +def serializeFields(obj, order: Incomplete | None = None): ... NAME_ORDER: Any ADDRESS_ORDER: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/adjustments.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/adjustments.pyi index 433f79564..79cbde1fb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/adjustments.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/adjustments.pyi @@ -22,39 +22,39 @@ class _int_marker(int): ... class _bool_marker: ... class Adjustments: - host: _str_marker = ... - port: _int_marker = ... - listen: list[str] = ... - threads: int = ... - trusted_proxy: str | None = ... - trusted_proxy_count: int | None = ... - trusted_proxy_headers: set[str] = ... - log_untrusted_proxy_headers: bool = ... - clear_untrusted_proxy_headers: _bool_marker | bool = ... - url_scheme: str = ... - url_prefix: str = ... - ident: str = ... - backlog: int = ... - recv_bytes: int = ... - send_bytes: int = ... - outbuf_overflow: int = ... - outbuf_high_watermark: int = ... - inbuf_overflow: int = ... - connection_limit: int = ... - cleanup_interval: int = ... - channel_timeout: int = ... - log_socket_errors: bool = ... - max_request_header_size: int = ... - max_request_body_size: int = ... - expose_tracebacks: bool = ... - unix_socket: str | None = ... - unix_socket_perms: int = ... - socket_options: list[tuple[int, int, int]] = ... - asyncore_loop_timeout: int = ... - asyncore_use_poll: bool = ... - ipv4: bool = ... - ipv6: bool = ... - sockets: list[socket] = ... + host: _str_marker + port: _int_marker + listen: list[str] + threads: int + trusted_proxy: str | None + trusted_proxy_count: int | None + trusted_proxy_headers: set[str] + log_untrusted_proxy_headers: bool + clear_untrusted_proxy_headers: _bool_marker | bool + url_scheme: str + url_prefix: str + ident: str + backlog: int + recv_bytes: int + send_bytes: int + outbuf_overflow: int + outbuf_high_watermark: int + inbuf_overflow: int + connection_limit: int + cleanup_interval: int + channel_timeout: int + log_socket_errors: bool + max_request_header_size: int + max_request_body_size: int + expose_tracebacks: bool + unix_socket: str | None + unix_socket_perms: int + socket_options: list[tuple[int, int, int]] + asyncore_loop_timeout: int + asyncore_use_poll: bool + ipv4: bool + ipv6: bool + sockets: list[socket] def __init__(self, **kw: Any) -> None: ... @classmethod def parse_args(cls, argv: str) -> tuple[dict[str, Any], Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/buffers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/buffers.pyi index 0babddaef..1c808d75a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/buffers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/buffers.pyi @@ -1,58 +1,58 @@ -from collections.abc import Callable from io import BufferedIOBase, BufferedRandom, BytesIO from typing import Any +from typing_extensions import Literal COPY_BYTES: int STRBUF_LIMIT: int class FileBasedBuffer: - remain: int = ... - file: BytesIO = ... - def __init__(self, file: BytesIO, from_buffer: BytesIO | None = ...) -> None: ... + remain: int + file: BytesIO + def __init__(self, file: BytesIO, from_buffer: BytesIO | None = None) -> None: ... def __len__(self) -> int: ... def __nonzero__(self) -> bool: ... - __bool__: Callable[[], bool] = ... + def __bool__(self) -> Literal[True]: ... def append(self, s: Any) -> None: ... - def get(self, numbytes: int = ..., skip: bool = ...) -> bytes: ... - def skip(self, numbytes: int, allow_prune: int = ...) -> None: ... + def get(self, numbytes: int = -1, skip: bool = False) -> bytes: ... + def skip(self, numbytes: int, allow_prune: int = 0) -> None: ... def newfile(self) -> Any: ... def prune(self) -> None: ... def getfile(self) -> Any: ... def close(self) -> None: ... class TempfileBasedBuffer(FileBasedBuffer): - def __init__(self, from_buffer: BytesIO | None = ...) -> None: ... + def __init__(self, from_buffer: BytesIO | None = None) -> None: ... def newfile(self) -> BufferedRandom: ... class BytesIOBasedBuffer(FileBasedBuffer): - file: BytesIO = ... - def __init__(self, from_buffer: BytesIO | None = ...) -> None: ... + file: BytesIO + def __init__(self, from_buffer: BytesIO | None = None) -> None: ... def newfile(self) -> BytesIO: ... class ReadOnlyFileBasedBuffer(FileBasedBuffer): - file: BytesIO = ... - block_size: int = ... - def __init__(self, file: BytesIO, block_size: int = ...) -> None: ... - remain: int = ... - def prepare(self, size: int | None = ...) -> int: ... - def get(self, numbytes: int = ..., skip: bool = ...) -> bytes: ... + file: BytesIO + block_size: int + def __init__(self, file: BytesIO, block_size: int = 32768) -> None: ... + remain: int + def prepare(self, size: int | None = None) -> int: ... + def get(self, numbytes: int = -1, skip: bool = False) -> bytes: ... def __iter__(self) -> ReadOnlyFileBasedBuffer: ... def next(self) -> bytes | None: ... - __next__: Callable[[], bytes | None] = ... + __next__ = next def append(self, s: Any) -> None: ... class OverflowableBuffer: - overflowed: bool = ... - buf: BufferedIOBase | None = ... - strbuf: bytes = ... - overflow: int = ... + overflowed: bool + buf: BufferedIOBase | None + strbuf: bytes + overflow: int def __init__(self, overflow: int) -> None: ... def __len__(self) -> int: ... def __nonzero__(self) -> bool: ... - __bool__: Callable[[], bool] = ... + def __bool__(self) -> bool: ... def append(self, s: bytes) -> None: ... - def get(self, numbytes: int = ..., skip: bool = ...) -> bytes: ... - def skip(self, numbytes: int, allow_prune: bool = ...) -> None: ... + def get(self, numbytes: int = -1, skip: bool = False) -> bytes: ... + def skip(self, numbytes: int, allow_prune: bool = False) -> None: ... def prune(self) -> None: ... def getfile(self) -> BytesIO: ... def close(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/channel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/channel.pyi index d14dff869..05bebc1cd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/channel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/channel.pyi @@ -13,37 +13,37 @@ from . import wasyncore as wasyncore class ClientDisconnected(Exception): ... class HTTPChannel(wasyncore.dispatcher): - task_class: WSGITask = ... - error_task_class: ErrorTask = ... - parser_class: HTTPRequestParser = ... - request: HTTPRequestParser = ... - last_activity: float = ... - will_close: bool = ... - close_when_flushed: bool = ... - requests: Sequence[HTTPRequestParser] = ... - sent_continue: bool = ... - total_outbufs_len: int = ... - current_outbuf_count: int = ... - server: BaseWSGIServer = ... - adj: Adjustments = ... - outbufs: Sequence[OverflowableBuffer] = ... - creation_time: float = ... - sendbuf_len: int = ... - task_lock: Lock = ... - outbuf_lock: Condition = ... - addr: tuple[str, int] = ... + task_class: WSGITask + error_task_class: ErrorTask + parser_class: HTTPRequestParser + request: HTTPRequestParser + last_activity: float + will_close: bool + close_when_flushed: bool + requests: Sequence[HTTPRequestParser] + sent_continue: bool + total_outbufs_len: int + current_outbuf_count: int + server: BaseWSGIServer + adj: Adjustments + outbufs: Sequence[OverflowableBuffer] + creation_time: float + sendbuf_len: int + task_lock: Lock + outbuf_lock: Condition + addr: tuple[str, int] def __init__( - self, server: BaseWSGIServer, sock: socket, addr: str, adj: Adjustments, map: Mapping[int, socket] | None = ... + self, server: BaseWSGIServer, sock: socket, addr: str, adj: Adjustments, map: Mapping[int, socket] | None = None ) -> None: ... def writable(self) -> bool: ... def handle_write(self) -> None: ... def readable(self) -> bool: ... def handle_read(self) -> None: ... def received(self, data: bytes) -> bool: ... - connected: bool = ... + connected: bool def handle_close(self) -> None: ... - def add_channel(self, map: Mapping[int, socket] | None = ...) -> None: ... - def del_channel(self, map: Mapping[int, socket] | None = ...) -> None: ... + def add_channel(self, map: Mapping[int, socket] | None = None) -> None: ... + def del_channel(self, map: Mapping[int, socket] | None = None) -> None: ... def write_soon(self, data: bytes) -> int: ... def service(self) -> None: ... def cancel(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/parser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/parser.pyi index a3867aa44..ec2f57e8b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/parser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/parser.pyi @@ -11,26 +11,26 @@ class ParsingError(Exception): ... class TransferEncodingNotImplemented(Exception): ... class HTTPRequestParser: - completed: bool = ... - empty: bool = ... - expect_continue: bool = ... - headers_finished: bool = ... - header_plus: bytes = ... - chunked: bool = ... - content_length: int = ... - header_bytes_received: int = ... - body_bytes_received: int = ... - body_rcv: ChunkedReceiver | FixedStreamReceiver | None = ... - version: str = ... - error: Error | None = ... - connection_close: bool = ... - headers: Mapping[str, str] = ... - adj: Adjustments = ... + completed: bool + empty: bool + expect_continue: bool + headers_finished: bool + header_plus: bytes + chunked: bool + content_length: int + header_bytes_received: int + body_bytes_received: int + body_rcv: ChunkedReceiver | FixedStreamReceiver | None + version: str + error: Error | None + connection_close: bool + headers: Mapping[str, str] + adj: Adjustments def __init__(self, adj: Adjustments) -> None: ... def received(self, data: bytes) -> int: ... - first_line: str = ... - command: bytes = ... - url_scheme: str = ... + first_line: str + command: bytes + url_scheme: str def parse_header(self, header_plus: bytes) -> None: ... def get_body_stream(self) -> BytesIO: ... def close(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/proxy_headers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/proxy_headers.pyi index d5b774539..0861feff5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/proxy_headers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/proxy_headers.pyi @@ -13,18 +13,18 @@ class Forwarded(NamedTuple): proto: Any class MalformedProxyHeader(Exception): - header: str = ... - reason: str = ... - value: str = ... + header: str + reason: str + value: str def __init__(self, header: str, reason: str, value: str) -> None: ... def proxy_headers_middleware( app: Any, - trusted_proxy: str | None = ..., - trusted_proxy_count: int = ..., - trusted_proxy_headers: set[str] | None = ..., - clear_untrusted: bool = ..., - log_untrusted: bool = ..., + trusted_proxy: str | None = None, + trusted_proxy_count: int = 1, + trusted_proxy_headers: set[str] | None = None, + clear_untrusted: bool = True, + log_untrusted: bool = False, logger: Logger = ..., ) -> Callable[..., Any]: ... def parse_proxy_headers( @@ -32,5 +32,5 @@ def parse_proxy_headers( ) -> set[str]: ... def strip_brackets(addr: str) -> str: ... def clear_untrusted_headers( - environ: Mapping[str, str], untrusted_headers: Sequence[str], log_warning: bool = ..., logger: Logger = ... + environ: Mapping[str, str], untrusted_headers: Sequence[str], log_warning: bool = False, logger: Logger = ... ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/receiver.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/receiver.pyi index d05ea56b7..bb433405b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/receiver.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/receiver.pyi @@ -4,10 +4,10 @@ from waitress.buffers import OverflowableBuffer from waitress.utilities import BadRequest class FixedStreamReceiver: - completed: bool = ... - error: None = ... - remain: int = ... - buf: OverflowableBuffer = ... + completed: bool + error: None + remain: int + buf: OverflowableBuffer def __init__(self, cl: int, buf: OverflowableBuffer) -> None: ... def __len__(self) -> int: ... def received(self, data: bytes) -> int: ... @@ -15,15 +15,15 @@ class FixedStreamReceiver: def getbuf(self) -> OverflowableBuffer: ... class ChunkedReceiver: - chunk_remainder: int = ... - validate_chunk_end: bool = ... - control_line: bytes = ... - chunk_end: bytes = ... - all_chunks_received: bool = ... - trailer: bytes = ... - completed: bool = ... - error: BadRequest | None = ... - buf: OverflowableBuffer = ... + chunk_remainder: int + validate_chunk_end: bool + control_line: bytes + chunk_end: bytes + all_chunks_received: bool + trailer: bytes + completed: bool + error: BadRequest | None + buf: OverflowableBuffer def __init__(self, buf: OverflowableBuffer) -> None: ... def __len__(self) -> int: ... def received(self, s: bytes) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/runner.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/runner.pyi index aeced93f4..c716ee7e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/runner.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/runner.pyi @@ -8,6 +8,6 @@ RUNNER_PATTERN: Pattern[Any] def match(obj_name: str) -> tuple[str, str]: ... def resolve(module_name: str, object_name: str) -> Any: ... -def show_help(stream: TextIOWrapper, name: str, error: str | None = ...) -> None: ... +def show_help(stream: TextIOWrapper, name: str, error: str | None = None) -> None: ... def show_exception(stream: TextIOWrapper) -> None: ... def run(argv: Sequence[str] = ..., _serve: Callable[..., object] = ...) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/server.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/server.pyi index ada4b1b22..2a6ec7a31 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/server.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/server.pyi @@ -11,60 +11,60 @@ from waitress.task import Task, ThreadedTaskDispatcher def create_server( application: Any, - map: Incomplete | None = ..., - _start: bool = ..., - _sock: socket | None = ..., - _dispatcher: ThreadedTaskDispatcher | None = ..., + map: Incomplete | None = None, + _start: bool = True, + _sock: socket | None = None, + _dispatcher: ThreadedTaskDispatcher | None = None, **kw: Any, ) -> MultiSocketServer | BaseWSGIServer: ... class MultiSocketServer: - asyncore: Any = ... - adj: Adjustments = ... - map: Any = ... - effective_listen: Sequence[tuple[str, int]] = ... - task_dispatcher: ThreadedTaskDispatcher = ... + asyncore: Any + adj: Adjustments + map: Any + effective_listen: Sequence[tuple[str, int]] + task_dispatcher: ThreadedTaskDispatcher def __init__( self, - map: Incomplete | None = ..., - adj: Adjustments | None = ..., - effective_listen: Sequence[tuple[str, int]] | None = ..., - dispatcher: ThreadedTaskDispatcher | None = ..., + map: Incomplete | None = None, + adj: Adjustments | None = None, + effective_listen: Sequence[tuple[str, int]] | None = None, + dispatcher: ThreadedTaskDispatcher | None = None, ) -> None: ... def print_listen(self, format_str: str) -> None: ... def run(self) -> None: ... def close(self) -> None: ... class BaseWSGIServer(wasyncore.dispatcher): - channel_class: HTTPChannel = ... - next_channel_cleanup: int = ... - socketmod: socket = ... - asyncore: Any = ... - sockinfo: tuple[int, int, int, tuple[str, int]] = ... - family: int = ... - socktype: int = ... - application: Any = ... - adj: Adjustments = ... - trigger: int = ... - task_dispatcher: ThreadedTaskDispatcher = ... - server_name: str = ... - active_channels: HTTPChannel = ... + channel_class: HTTPChannel + next_channel_cleanup: int + socketmod: socket + asyncore: Any + sockinfo: tuple[int, int, int, tuple[str, int]] + family: int + socktype: int + application: Any + adj: Adjustments + trigger: int + task_dispatcher: ThreadedTaskDispatcher + server_name: str + active_channels: HTTPChannel def __init__( self, application: Any, - map: Incomplete | None = ..., - _start: bool = ..., - _sock: Incomplete | None = ..., - dispatcher: ThreadedTaskDispatcher | None = ..., - adj: Adjustments | None = ..., - sockinfo: Incomplete | None = ..., - bind_socket: bool = ..., + map: Incomplete | None = None, + _start: bool = True, + _sock: Incomplete | None = None, + dispatcher: ThreadedTaskDispatcher | None = None, + adj: Adjustments | None = None, + sockinfo: Incomplete | None = None, + bind_socket: bool = True, **kw: Any, ) -> None: ... def bind_server_socket(self) -> None: ... def get_server_name(self, ip: str) -> str: ... def getsockname(self) -> Any: ... - accepting: bool = ... + accepting: bool def accept_connections(self) -> None: ... def add_task(self, task: Task) -> None: ... def readable(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/task.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/task.pyi index 1f33f1891..9cd2aeb3f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/task.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/task.pyi @@ -12,37 +12,37 @@ rename_headers: Mapping[str, str] hop_by_hop: frozenset[Any] class ThreadedTaskDispatcher: - stop_count: int = ... - active_count: int = ... - logger: Logger = ... - queue_logger: Logger = ... - threads: set[Any] = ... - queue: deque[Task] = ... - lock: Lock = ... - queue_cv: Condition = ... - thread_exit_cv: Condition = ... + stop_count: int + active_count: int + logger: Logger + queue_logger: Logger + threads: set[Any] + queue: deque[Task] + lock: Lock + queue_cv: Condition + thread_exit_cv: Condition def start_new_thread(self, target: Any, args: Any) -> None: ... def handler_thread(self, thread_no: int) -> None: ... def set_thread_count(self, count: int) -> None: ... def add_task(self, task: Task) -> None: ... - def shutdown(self, cancel_pending: bool = ..., timeout: int = ...) -> bool: ... + def shutdown(self, cancel_pending: bool = True, timeout: int = 5) -> bool: ... class Task: - close_on_finish: bool = ... - status: str = ... - wrote_header: bool = ... - start_time: int = ... - content_length: int | None = ... - content_bytes_written: int = ... - logged_write_excess: bool = ... - logged_write_no_body: bool = ... - complete: bool = ... - chunked_response: bool = ... - logger: Logger = ... - channel: HTTPChannel = ... - request: Error = ... - response_headers: Sequence[tuple[str, str]] = ... - version: str = ... + close_on_finish: bool + status: str + wrote_header: bool + start_time: int + content_length: int | None + content_bytes_written: int + logged_write_excess: bool + logged_write_no_body: bool + complete: bool + chunked_response: bool + logger: Logger + channel: HTTPChannel + request: Error + response_headers: Sequence[tuple[str, str]] + version: str def __init__(self, channel: HTTPChannel, request: Error) -> None: ... def service(self) -> None: ... @property @@ -54,18 +54,18 @@ class Task: def write(self, data: bytes) -> None: ... class ErrorTask(Task): - complete: bool = ... - status: str = ... - close_on_finish: bool = ... - content_length: int = ... + complete: bool + status: str + close_on_finish: bool + content_length: int def execute(self) -> None: ... class WSGITask(Task): - environ: Incomplete | None = ... - response_headers: Sequence[tuple[str, str]] = ... - complete: bool = ... - status: str = ... - content_length: int = ... - close_on_finish: bool = ... + environ: Incomplete | None + response_headers: Sequence[tuple[str, str]] + complete: bool + status: str + content_length: int + close_on_finish: bool def execute(self) -> None: ... def get_environment(self) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/trigger.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/trigger.pyi index 45d1a40dc..ae7f82229 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/trigger.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/trigger.pyi @@ -7,24 +7,24 @@ from typing_extensions import Literal from waitress import wasyncore as wasyncore class _triggerbase: - kind: str | None = ... - lock: Lock = ... - thunks: Callable[[None], None] = ... + kind: str | None + lock: Lock + thunks: Callable[[None], None] def readable(self) -> Literal[True]: ... def writable(self) -> Literal[False]: ... def handle_connect(self) -> None: ... def handle_close(self) -> None: ... def close(self) -> None: ... - def pull_trigger(self, thunk: Callable[[None], object] | None = ...) -> None: ... + def pull_trigger(self, thunk: Callable[[None], object] | None = None) -> None: ... def handle_read(self) -> None: ... if sys.platform != "win32": class trigger(_triggerbase, wasyncore.file_dispatcher): - kind: str = ... + kind: str def __init__(self, map: Mapping[str, _triggerbase]) -> None: ... else: class trigger(_triggerbase, wasyncore.dispatcher): - kind: str = ... - trigger: socket = ... + kind: str + trigger: socket def __init__(self, map: Mapping[str, _triggerbase]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/utilities.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/utilities.pyi index cf3d44caf..1af73e6db 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/utilities.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/utilities.pyi @@ -9,7 +9,7 @@ queue_logger: Logger def find_double_newline(s: bytes) -> int: ... def concat(*args: Any) -> str: ... -def join(seq: Any, field: str = ...) -> str: ... +def join(seq: Any, field: str = " ") -> str: ... def group(s: Any) -> str: ... short_days: Sequence[str] @@ -40,29 +40,29 @@ def undquote(value: str) -> str: ... def cleanup_unix_socket(path: str) -> None: ... class Error: - code: int = ... - reason: str = ... - body: str = ... + code: int + reason: str + body: str def __init__(self, body: str) -> None: ... def to_response(self) -> tuple[str, Sequence[tuple[str, str]], str]: ... def wsgi_response(self, environ: Any, start_response: StartResponse) -> Iterator[str]: ... class BadRequest(Error): - code: int = ... - reason: str = ... + code: int + reason: str class RequestHeaderFieldsTooLarge(BadRequest): - code: int = ... - reason: str = ... + code: int + reason: str class RequestEntityTooLarge(BadRequest): - code: int = ... - reason: str = ... + code: int + reason: str class InternalServerError(Error): - code: int = ... - reason: str = ... + code: int + reason: str class ServerNotImplemented(Error): - code: int = ... - reason: str = ... + code: int + reason: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/wasyncore.pyi b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/wasyncore.pyi index 0125447f3..2f2e8e3ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/wasyncore.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/waitress/wasyncore.pyi @@ -18,31 +18,33 @@ class ExitNow(Exception): ... def read(obj: dispatcher) -> None: ... def write(obj: dispatcher) -> None: ... def readwrite(obj: dispatcher, flags: int) -> None: ... -def poll(timeout: float = ..., map: Mapping[int, socket] | None = ...) -> None: ... -def poll2(timeout: float = ..., map: Mapping[int, socket] | None = ...) -> None: ... +def poll(timeout: float = 0.0, map: Mapping[int, socket] | None = None) -> None: ... +def poll2(timeout: float = 0.0, map: Mapping[int, socket] | None = None) -> None: ... poll3 = poll2 -def loop(timeout: float = ..., use_poll: bool = ..., map: Mapping[int, socket] | None = ..., count: int | None = ...) -> None: ... +def loop( + timeout: float = 30.0, use_poll: bool = False, map: Mapping[int, socket] | None = None, count: int | None = None +) -> None: ... def compact_traceback() -> tuple[tuple[str, str, str], BaseException, BaseException, str]: ... class dispatcher: - debug: bool = ... - connected: bool = ... - accepting: bool = ... - connecting: bool = ... - closing: bool = ... - addr: tuple[str, int] | None = ... + debug: bool + connected: bool + accepting: bool + connecting: bool + closing: bool + addr: tuple[str, int] | None ignore_log_types: frozenset[Any] - logger: Logger = ... - compact_traceback: Callable[[], tuple[tuple[str, str, str], BaseException, BaseException, str]] = ... - socket: _Socket | None = ... - def __init__(self, sock: _Socket | None = ..., map: Mapping[int, _Socket] | None = ...) -> None: ... - def add_channel(self, map: Mapping[int, _Socket] | None = ...) -> None: ... - def del_channel(self, map: Mapping[int, _Socket] | None = ...) -> None: ... - family_and_type: tuple[int, int] = ... + logger: Logger + compact_traceback: Callable[[], tuple[tuple[str, str, str], BaseException, BaseException, str]] + socket: _Socket | None + def __init__(self, sock: _Socket | None = None, map: Mapping[int, _Socket] | None = None) -> None: ... + def add_channel(self, map: Mapping[int, _Socket] | None = None) -> None: ... + def del_channel(self, map: Mapping[int, _Socket] | None = None) -> None: ... + family_and_type: tuple[int, int] def create_socket(self, family: int = ..., type: int = ...) -> None: ... - def set_socket(self, sock: _Socket, map: Mapping[int, _Socket] | None = ...) -> None: ... + def set_socket(self, sock: _Socket, map: Mapping[int, _Socket] | None = None) -> None: ... def set_reuse_addr(self) -> None: ... def readable(self) -> bool: ... def writable(self) -> bool: ... @@ -50,11 +52,11 @@ class dispatcher: def bind(self, addr: tuple[str, int]) -> None: ... def connect(self, address: tuple[str, int]) -> None: ... def accept(self) -> tuple[_Socket, tuple[str, int]] | None: ... - def send(self, data: bytes, do_close: bool = ...) -> int: ... + def send(self, data: bytes, do_close: bool = True) -> int: ... def recv(self, buffer_size: int) -> bytes: ... def close(self) -> None: ... def log(self, message: str) -> None: ... - def log_info(self, message: str, type: str = ...) -> None: ... + def log_info(self, message: str, type: str = "info") -> None: ... def handle_read_event(self) -> None: ... def handle_connect_event(self) -> None: ... def handle_write_event(self) -> None: ... @@ -69,30 +71,30 @@ class dispatcher: def handle_close(self) -> None: ... class dispatcher_with_send(dispatcher): - out_buffer: bytes = ... - def __init__(self, sock: socket | None = ..., map: Mapping[int, socket] | None = ...) -> None: ... + out_buffer: bytes + def __init__(self, sock: socket | None = None, map: Mapping[int, socket] | None = None) -> None: ... def initiate_send(self) -> None: ... - handle_write: Callable[[], None] = ... + handle_write: Callable[[], None] def writable(self) -> bool: ... def send(self, data: bytes) -> None: ... # type: ignore[override] -def close_all(map: Mapping[int, socket] | None = ..., ignore_all: bool = ...) -> None: ... +def close_all(map: Mapping[int, socket] | None = None, ignore_all: bool = False) -> None: ... if sys.platform != "win32": class file_wrapper: - fd: BytesIO = ... + fd: BytesIO def __init__(self, fd: BytesIO) -> None: ... def __del__(self) -> None: ... def recv(self, *args: Any) -> bytes: ... def send(self, *args: Any) -> bytes: ... def getsockopt(self, level: int, optname: int, buflen: bool | None = ...) -> int: ... - read: Callable[..., bytes] = ... - write: Callable[..., bytes] = ... + read: Callable[..., bytes] + write: Callable[..., bytes] def close(self) -> None: ... def fileno(self) -> BytesIO: ... class file_dispatcher(dispatcher): - connected: bool = ... + connected: bool def __init__(self, fd: BytesIO, map: Mapping[int, _Socket] | None = ...) -> None: ... - socket: _Socket = ... + socket: _Socket def set_file(self, fd: BytesIO) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/whatthepatch/apply.pyi b/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/whatthepatch/apply.pyi index c927a4cef..cff926bc2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/whatthepatch/apply.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/whatthepatch/apply.pyi @@ -5,4 +5,4 @@ from .exceptions import HunkApplyException as HunkApplyException, SubprocessExce from .snippets import remove as remove, which as which def apply_patch(diffs: patch.diffobj | Iterable[patch.diffobj]) -> None: ... -def apply_diff(diff: patch.diffobj, text: str | Iterable[str], reverse: bool = ..., use_patch: bool = ...) -> list[str]: ... +def apply_diff(diff: patch.diffobj, text: str | Iterable[str], reverse: bool = False, use_patch: bool = False) -> list[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/whatthepatch/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/whatthepatch/exceptions.pyi index 918275ea2..b37de75f8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/whatthepatch/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/whatthepatch/exceptions.pyi @@ -2,7 +2,7 @@ class WhatThePatchException(Exception): ... class HunkException(WhatThePatchException): hunk: int | None - def __init__(self, msg: str, hunk: int | None = ...) -> None: ... + def __init__(self, msg: str, hunk: int | None = None) -> None: ... class ApplyException(WhatThePatchException): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/xxhash/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/xxhash/METADATA.toml deleted file mode 100644 index 82b4d3336..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/xxhash/METADATA.toml +++ /dev/null @@ -1,2 +0,0 @@ -version = "3.0.*" -obsolete_since = "3.1.0" # Released on 2022-10-19 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/xxhash/xxhash/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/xxhash/xxhash/__init__.pyi deleted file mode 100644 index a98e66caf..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/xxhash/xxhash/__init__.pyi +++ /dev/null @@ -1,49 +0,0 @@ -from _typeshed import ReadableBuffer -from hashlib import _Hash -from typing_extensions import SupportsIndex, final - -VERSION: str -XXHASH_VERSION: str -VERSION_TUPLE: tuple[int, ...] - -algorithms_available: set[str] - -class _IntDigestHash(_Hash): - @property - def seed(self) -> int: ... - @property - def digestsize(self) -> int: ... - def __init__(self, input: ReadableBuffer | str = ..., seed: SupportsIndex = ...) -> None: ... - def intdigest(self) -> int: ... - def reset(self) -> None: ... - -# python-xxhash v2.0.0 does not support the string or usedforsecurity kwargs -@final -class xxh32(_IntDigestHash): ... - -@final -class xxh64(_IntDigestHash): ... - -@final -class xxh3_64(_IntDigestHash): ... - -@final -class xxh3_128(_IntDigestHash): ... - -def xxh32_digest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> bytes: ... -def xxh32_intdigest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> int: ... -def xxh32_hexdigest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> str: ... -def xxh64_digest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> bytes: ... -def xxh64_intdigest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> int: ... -def xxh64_hexdigest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> str: ... -def xxh3_64_digest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> bytes: ... -def xxh3_64_intdigest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> int: ... -def xxh3_64_hexdigest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> str: ... -def xxh3_128_digest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> bytes: ... -def xxh3_128_intdigest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> int: ... -def xxh3_128_hexdigest(input: ReadableBuffer | str, seed: SupportsIndex = ...) -> str: ... - -xxh128 = xxh3_128 -xxh128_digest = xxh3_128_digest -xxh128_intdigest = xxh3_128_intdigest -xxh128_hexdigest = xxh3_128_hexdigest diff --git a/packages/pyright-internal/typeshed-fallback/stubs/xxhash/xxhash/version.pyi b/packages/pyright-internal/typeshed-fallback/stubs/xxhash/xxhash/version.pyi deleted file mode 100644 index b18bf8c3c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/xxhash/xxhash/version.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from _typeshed import Incomplete - -VERSION: str -VERSION_TUPLE: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/zstd/zstd.pyi b/packages/pyright-internal/typeshed-fallback/stubs/zstd/zstd.pyi index 3384e905f..c5be08def 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/zstd/zstd.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/zstd/zstd.pyi @@ -7,6 +7,8 @@ def ZSTD_external() -> int: ... def ZSTD_uncompress(__data: ReadableBuffer) -> bytes: ... def ZSTD_version() -> str: ... def ZSTD_version_number() -> int: ... +def ZSTD_threads_count() -> int: ... +def ZSTD_max_threads_count() -> int: ... def compress(__data: ReadableBuffer, __level: int = ..., __threads: int = ...) -> bytes: ... def decompress(__data: ReadableBuffer) -> bytes: ... def dumps(__data: ReadableBuffer, __level: int = ..., __threads: int = ...) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/zxcvbn/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/zxcvbn/__init__.pyi index f363552bd..e2872e1f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/zxcvbn/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/zxcvbn/__init__.pyi @@ -15,4 +15,4 @@ class _Result(_TimeEstimate, TypedDict): calc_time: datetime.timedelta feedback: _Feedback -def zxcvbn(password: str, user_inputs: Iterable[object] | None = ...) -> _Result: ... +def zxcvbn(password: str, user_inputs: Iterable[object] | None = None) -> _Result: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/zxcvbn/scoring.pyi b/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/zxcvbn/scoring.pyi index 1d7d7be05..fff6a6a56 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/zxcvbn/scoring.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/zxcvbn/scoring.pyi @@ -22,7 +22,9 @@ class _GuessesResult(TypedDict): sequence: list[_Match] def nCk(n: int, k: int) -> float: ... -def most_guessable_match_sequence(password: str, matches: Iterable[_Match], _exclude_additive: bool = ...) -> _GuessesResult: ... +def most_guessable_match_sequence( + password: str, matches: Iterable[_Match], _exclude_additive: bool = False +) -> _GuessesResult: ... def estimate_guesses(match: _Match, password: str) -> Decimal: ... def bruteforce_guesses(match: _Match) -> int: ... def dictionary_guesses(match: _Match) -> int: ... From 1e8ee8f1ea8048108b5cdd337ab9394a25fc01ca Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 4 Apr 2023 21:17:07 -0700 Subject: [PATCH 007/525] Published 1.1.302 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 2692e2ddb..535c47d11 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.301", + "version": "1.1.302", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 40486c21b..8ef08506f 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.301", + "version": "1.1.302", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.301", + "version": "1.1.302", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 6ef8e546a..ef96cb1d6 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.301", + "version": "1.1.302", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 83e166a82..bc77117ce 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.301", + "version": "1.1.302", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.301", + "version": "1.1.302", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index e68a803fd..d7312cc56 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.301", + "version": "1.1.302", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index e5798cd78..00e689376 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.301", + "version": "1.1.302", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.301", + "version": "1.1.302", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 1e58ca8c9..a83145050 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.301", + "version": "1.1.302", "private": true, "license": "MIT", "author": { From 5d6eacd5e14e9087802c79bb41be299469732f26 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 5 Apr 2023 09:47:59 -0600 Subject: [PATCH 008/525] Changed the default of the `useLibraryCodeForTypes` from false to true to bring pylance and pyright into alignment. Also deprecated the "--lib" command-line option, which was previously used to enable `useLibraryCodeForTypes` from the command line. (#4903) Co-authored-by: Eric Traut --- docs/command-line.md | 1 - docs/configuration.md | 2 +- docs/getting-started.md | 1 - docs/import-resolution.md | 2 +- docs/settings.md | 2 +- packages/pyright-internal/src/analyzer/service.ts | 5 +++++ packages/pyright-internal/src/pyright.ts | 3 +-- packages/vscode-pyright/package.json | 2 +- packages/vscode-pyright/schemas/pyrightconfig.schema.json | 2 +- 9 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/command-line.md b/docs/command-line.md index 1b7235494..c544d65c1 100644 --- a/docs/command-line.md +++ b/docs/command-line.md @@ -10,7 +10,6 @@ Pyright can be run as either a VS Code extension or as a node-based command-line | --dependencies | Emit import dependency information | | -h, --help | Show help message | | --ignoreexternal | Ignore external imports for --verifytypes | -| --lib | Use library code for types when stubs are missing | | --level | Minimum diagnostic level (error or warning) | | --outputjson | Output results in JSON format | | -p, --project `` | Use the configuration file at this location | diff --git a/docs/configuration.md b/docs/configuration.md index a0e8f0c37..a58f89cc1 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -38,7 +38,7 @@ Relative paths specified within the config file are relative to the config file **typeCheckingMode** ["off", "basic", "strict"]: Specifies the default rule set to use. Some rules can be overridden using additional configuration flags documented below. The default value for this setting is "basic". If set to "off", all type-checking rules are disabled, but Python syntax and semantic errors are still reported. -**useLibraryCodeForTypes** [boolean]: Determines whether pyright reads, parses and analyzes library code to extract type information in the absence of type stub files. Type information will typically be incomplete. We recommend using type stubs where possible. The default value for this option is false. +**useLibraryCodeForTypes** [boolean]: Determines whether pyright reads, parses and analyzes library code to extract type information in the absence of type stub files. Type information will typically be incomplete. We recommend using type stubs where possible. The default value for this option is true. ## Type Check Diagnostics Settings diff --git a/docs/getting-started.md b/docs/getting-started.md index 19874ea3a..4c3c36f6a 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -7,7 +7,6 @@ Here is a typical progression: ### 1. Initial Type Checking * Install pyright (either the language server or command-line tool). * Write a minimal `pyrightconfig.json` that defines `include` entries. Place the config file in your project’s top-level directory and commit it to your repo. Alternatively, you can add a pyright section to a `pyproject.toml` file. For additional details and a sample config file, refer to [this documentation](configuration.md). -* Optionally enable the `python.analysis.useLibraryCodeForTypes` config option (or pass `--lib` to the command-line tool). This tells Pyright that it should attempt to infer type information from library code if a type stub is not available. * Run pyright over your source base with the default settings. Fix any errors and warnings that it emits. Optionally disable specific diagnostic rules if they are generating too many errors. They can be re-enabled at a later time. ### 2. Types For Imported Libraries diff --git a/docs/import-resolution.md b/docs/import-resolution.md index e71b7194e..84b55f08c 100644 --- a/docs/import-resolution.md +++ b/docs/import-resolution.md @@ -20,7 +20,7 @@ For absolute (non-relative) imports, Pyright employs the following resolution or * For a given package, try to resolve first using a **stub package**. Stub packages, as defined in [PEP 561](https://www.python.org/dev/peps/pep-0561/#type-checker-module-resolution-order), are named the same as the original package but with “-stubs” appended. * Try to resolve using an **inline stub**, a “.pyi” file that ships within the package. * If the package contains a “py.typed” file as described in [PEP 561](https://www.python.org/dev/peps/pep-0561/), use inlined type annotations provided in “.py” files within the package. - * If the `python.analysis.useLibraryCodeForTypes` setting is set to true (or the `--lib` command-line argument was specified), try to resolve using the **library implementation** (“.py” file). Some “.py” files may contain partial or complete type annotations. Pyright will use type annotations that are provided and do its best to infer any missing type information. If you are using Pyright, `python.analysis.useLibraryCodeForTypes` is false by default. If you are using Pylance, it is true. + * If the `python.analysis.useLibraryCodeForTypes` setting is set to true, try to resolve using the **library implementation** (“.py” file). Some “.py” files may contain partial or complete type annotations. Pyright will use type annotations that are provided and do its best to infer any missing type information. 4. Try to resolve using a **stdlib typeshed stub**. If the `typeshedPath` is configured, use this instead of the typeshed stubs that are packaged with Pyright. This allows for the use of a newer or a patched version of the typeshed stdlib stubs. diff --git a/docs/settings.md b/docs/settings.md index cc9b6c39a..3ea9bf877 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -28,7 +28,7 @@ The Pyright language server honors the following settings. **python.analysis.typeshedPaths** [array of paths]: Paths to look for typeshed modules. Pyright currently honors only the first path in the array. -**python.analysis.useLibraryCodeForTypes** [boolean]: Determines whether pyright reads, parses and analyzes library code to extract type information in the absence of type stub files. Type information will typically be incomplete. We recommend using type stubs where possible. The default value for this option is false. +**python.analysis.useLibraryCodeForTypes** [boolean]: Determines whether pyright reads, parses and analyzes library code to extract type information in the absence of type stub files. Type information will typically be incomplete. We recommend using type stubs where possible. The default value for this option is true. **python.pythonPath** [path]: Path to Python interpreter. This setting is being deprecated by the VS Code Python extension in favor of a setting that is stored in the Python extension’s internal configuration store. Pyright supports both mechanisms but prefers the new one if both settings are present. diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 5c2c4a83f..13625a78e 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -834,6 +834,11 @@ export class AnalyzerService { reportDuplicateSetting('useLibraryCodeForTypes', configOptions.useLibraryCodeForTypes); } + // If useLibraryCodeForTypes is still unspecified, default it to true. + if (configOptions.useLibraryCodeForTypes === undefined) { + configOptions.useLibraryCodeForTypes = true; + } + if (commandLineOptions.stubPath) { if (!configOptions.stubPath) { configOptions.stubPath = commandLineOptions.stubPath; diff --git a/packages/pyright-internal/src/pyright.ts b/packages/pyright-internal/src/pyright.ts index 30c23e96b..4d9ae2ce0 100644 --- a/packages/pyright-internal/src/pyright.ts +++ b/packages/pyright-internal/src/pyright.ts @@ -268,7 +268,7 @@ async function processArgs(): Promise { } if (args.lib) { - options.useLibraryCodeForTypes = true; + console.warn(`The --lib option is deprecated. Pyright now defaults to using library code to infer types.`); } let minSeverityLevel: SeverityLevel = 'information'; @@ -688,7 +688,6 @@ function printUsage() { ' --dependencies Emit import dependency information\n' + ' -h,--help Show this help message\n' + ' --ignoreexternal Ignore external imports for --verifytypes\n' + - ' --lib Use library code to infer types when stubs are missing\n' + ' --level Minimum diagnostic level (error or warning)\n' + ' --outputjson Output results in JSON format\n' + ' -p,--project Use the configuration file at this location\n' + diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index a83145050..3e866e4a7 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -903,7 +903,7 @@ }, "python.analysis.useLibraryCodeForTypes": { "type": "boolean", - "default": false, + "default": true, "description": "Use library implementations to extract type information when type stub is not present.", "scope": "resource" }, diff --git a/packages/vscode-pyright/schemas/pyrightconfig.schema.json b/packages/vscode-pyright/schemas/pyrightconfig.schema.json index b5d8287a5..91ec0fe8d 100644 --- a/packages/vscode-pyright/schemas/pyrightconfig.schema.json +++ b/packages/vscode-pyright/schemas/pyrightconfig.schema.json @@ -93,7 +93,7 @@ "$id": "#/properties/useLibraryCodeForTypes", "type": "boolean", "title": "Use library implementations to extract type information when type stub is not present", - "default": false + "default": true }, "typeshedPath": { "$id": "#/properties/typeshedPath", From 2375b90b5a0532ffac61b1fa4c03e8c98a0d64e7 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 5 Apr 2023 10:26:22 -0700 Subject: [PATCH 009/525] Added the ability for any callable to conform to a protocol that includes attributes and methods defined in the pseudo-class `builtins.function`. This addresses https://github.com/microsoft/pyright/issues/4908. --- .../src/analyzer/typeEvaluator.ts | 6 +++--- .../src/tests/samples/protocol39.py | 17 +++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++++ 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/protocol39.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index a732fa004..137858099 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -23258,11 +23258,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } - // All functions are objects, so try to assign as an object. - if (objectType && isClassInstance(objectType)) { + // All functions are considered instances of "builtins.function". + if (functionObj && isClassInstance(functionObj)) { return assignType( destType, - objectType, + functionObj, diag, destTypeVarContext, srcTypeVarContext, diff --git a/packages/pyright-internal/src/tests/samples/protocol39.py b/packages/pyright-internal/src/tests/samples/protocol39.py new file mode 100644 index 000000000..0c59b6be2 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/protocol39.py @@ -0,0 +1,17 @@ +# This sample tests that functions (or any callable) conforms to +# a protocol that includes attributes defined in builtins.function. + +from typing import Any, Protocol + + +class SupportsGet(Protocol): + @property + def __get__(self) -> Any: + ... + + +def foo(cls: Any) -> None: + pass + + +v1: SupportsGet = foo diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 160c1a055..6290f1c7b 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1281,6 +1281,12 @@ test('Protocol38', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Protocol39', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol39.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('TypedDict1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDict1.py']); From 64a3397558c2642e814f03f590ef9570b60efb87 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 5 Apr 2023 11:48:27 -0700 Subject: [PATCH 010/525] pull-pylance-with-pyright-1.1.302 (#4910) --- .../pyright-internal/src/analyzer/program.ts | 73 ++++++++- .../src/analyzer/sourceFile.ts | 2 +- .../src/common/positionUtils.ts | 30 ++-- .../src/languageServerBase.ts | 2 +- .../documentSymbolCollector.ts | 5 +- .../src/languageService/hoverProvider.ts | 141 +++++++++++------- .../src/languageService/indentationUtils.ts | 6 + .../languageService/insertionPointUtils.ts | 6 +- .../src/tests/chainedSourceFiles.test.ts | 36 +++++ .../tests/indentationUtils.reindent.test.ts | 25 ++++ .../src/tests/insertionPointUtils.test.ts | 17 +++ .../src/tests/moveSymbol.insertion.test.ts | 25 ++++ .../src/tests/positionUtils.test.ts | 58 +++++++ .../pyright-internal/src/workspaceFactory.ts | 4 +- 14 files changed, 353 insertions(+), 77 deletions(-) create mode 100644 packages/pyright-internal/src/tests/positionUtils.test.ts diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 881663775..080dd7c83 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -24,6 +24,7 @@ import { OperationCanceledException, throwIfCancellationRequested } from '../com import { appendArray, arrayEquals } from '../common/collectionUtils'; import { ConfigOptions, ExecutionEnvironment, matchFileSpecs } from '../common/configOptions'; import { ConsoleInterface, StandardConsole } from '../common/console'; +import * as debug from '../common/debug'; import { assert, assertNever } from '../common/debug'; import { Diagnostic, DiagnosticCategory } from '../common/diagnostic'; import { FileDiagnostics } from '../common/diagnosticSink'; @@ -988,6 +989,8 @@ export class Program { return; } + // sourceFile.parse should never be called directly. Otherwise, whole dependency graph maintained + // by program will be broken. Use _parseFile instead. if (fileToParse.sourceFile.parse(this._configOptions, this._importResolver, content)) { this._parsedFileCount++; this._updateSourceFileImports(fileToParse, this._configOptions); @@ -1006,21 +1009,79 @@ export class Program { } } + private _getImplicitImports(file: SourceFileInfo) { + // If file is not parsed, then chainedSourceFile, ipythonDisplayImport, + // builtinsImport might not exist or incorrect. + // They will be added when _parseFile is called and _updateSourceFileImports ran. + if (file.builtinsImport === file) { + return undefined; + } + + const tryReturn = (input: SourceFileInfo | undefined) => { + if (!input || input.sourceFile.isFileDeleted()) { + return undefined; + } + + return input; + }; + + return tryReturn(file.chainedSourceFile) ?? tryReturn(file.ipythonDisplayImport) ?? file.builtinsImport; + } + + private _bindImplicitImports(fileToAnalyze: SourceFileInfo) { + // Get all of the potential imports for this file. + const implicitImports: SourceFileInfo[] = []; + const implicitSet = new Set(); + + let nextImplicitImport = this._getImplicitImports(fileToAnalyze); + while (nextImplicitImport) { + const implicitPath = nextImplicitImport.sourceFile.getFilePath(); + if (implicitSet.has(implicitPath)) { + // We've found a cycle. Break out of the loop. + debug.fail(`Found a cycle in implicit imports files for ${implicitPath}`); + } + + implicitSet.add(implicitPath); + implicitImports.push(nextImplicitImport); + + this._parseFile(nextImplicitImport); + nextImplicitImport = this._getImplicitImports(nextImplicitImport); + } + + if (implicitImports.length === 0) { + return; + } + + // Go in reverse order (so top of chain is first). + let implicitImport = implicitImports.pop(); + while (implicitImport) { + // Bind this file, but don't recurse into its imports. + this._bindFile(implicitImport, undefined, undefined, /*isImplicitImport*/ true); + implicitImport = implicitImports.pop(); + } + } + // Binds the specified file and all of its dependencies, recursively. If // it runs out of time, it returns true. If it completes, it returns false. - private _bindFile(fileToAnalyze: SourceFileInfo, content?: string, force?: boolean): void { + private _bindFile( + fileToAnalyze: SourceFileInfo, + content?: string, + force?: boolean, + isImplicitImport?: boolean + ): void { if (!force && (!this._isFileNeeded(fileToAnalyze) || !fileToAnalyze.sourceFile.isBindingRequired())) { return; } this._parseFile(fileToAnalyze, content, force); + // Create a function to get the scope info. const getScopeIfAvailable = (fileInfo: SourceFileInfo | undefined) => { if (!fileInfo || fileInfo === fileToAnalyze) { return undefined; } - this._bindFile(fileInfo); + // If the file was deleted, there's no scope to return. if (fileInfo.sourceFile.isFileDeleted()) { return undefined; } @@ -1030,14 +1091,18 @@ export class Program { return undefined; } + // File should already be bound because of the chained file binding above. const scope = AnalyzerNodeInfo.getScope(parseResults.parseTree); - assert(scope !== undefined); - return scope; }; let builtinsScope: Scope | undefined; if (fileToAnalyze.builtinsImport && fileToAnalyze.builtinsImport !== fileToAnalyze) { + // Bind all of the implicit imports first. So we don't recurse into them. + if (!isImplicitImport) { + this._bindImplicitImports(fileToAnalyze); + } + // If it is not builtin module itself, we need to parse and bind // the ipython display import if required. Otherwise, get builtin module. builtinsScope = diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 441c73ee4..54b96e7a8 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -873,7 +873,7 @@ export class SourceFile { diagSink.addError(`Source file could not be read`, getEmptyRange()); fileContents = ''; - if (!this.fileSystem.existsSync(this._filePath)) { + if (!this.fileSystem.existsSync(this._realFilePath)) { this._isFileDeleted = true; } } diff --git a/packages/pyright-internal/src/common/positionUtils.ts b/packages/pyright-internal/src/common/positionUtils.ts index a512a917a..37ca376b5 100644 --- a/packages/pyright-internal/src/common/positionUtils.ts +++ b/packages/pyright-internal/src/common/positionUtils.ts @@ -72,16 +72,24 @@ export function convertTextRangeToRange(range: TextRange, lines: TextRangeCollec } // Returns the position of the last character in a line (before the newline). -export function getLineEndPosition(tokenizerOutput: TokenizerOutput, line: number): Position { - const lines = tokenizerOutput.lines; - const lineRange = lines.getItemAt(line); +export function getLineEndPosition(tokenizerOutput: TokenizerOutput, text: string, line: number): Position { + return convertOffsetToPosition(getLineEndOffset(tokenizerOutput, text, line), tokenizerOutput.lines); +} + +export function getLineEndOffset(tokenizerOutput: TokenizerOutput, text: string, line: number): number { + const lineRange = tokenizerOutput.lines.getItemAt(line); + + const lineEndOffset = TextRange.getEnd(lineRange); + let newLineLength = 0; + for (let i = lineEndOffset - 1; i >= lineRange.start; i--) { + const char = text[i]; + if (char !== '\r' && char !== '\n') { + break; + } + + newLineLength++; + } + // Character should be at the end of the line but before the newline. - const char = - line < lines.count - 1 - ? lineRange.length - tokenizerOutput.predominantEndOfLineSequence.length - : lineRange.length; - return { - line, - character: char, - }; + return lineEndOffset - newLineLength; } diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 313767b89..c3e048cfb 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -1142,7 +1142,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected async onCompletionResolve(params: CompletionItem, token: CancellationToken): Promise { const completionItemData = fromLSPAny(params.data); if (completionItemData && completionItemData.filePath) { - const workspace = await this.getWorkspaceForFile(completionItemData.workspacePath); + const workspace = await this.getWorkspaceForFile(completionItemData.filePath); this.resolveWorkspaceCompletionItem(workspace, completionItemData.filePath, params, token); } return params; diff --git a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts index a38ca9004..0b53b2784 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts @@ -565,10 +565,13 @@ export class DocumentSymbolCollector extends ParseTreeWalker { ?.filter((d) => isAliasDeclaration(d)) || []) ); - if (decls.length === 0) { + if (decls.length === 0 || moduleName.parent.nodeType !== ParseNodeType.ImportAs) { return decls; } + // If module name belong to "import xxx" not "from xxx", then see whether + // we can get regular decls (decls created from binder, not synthesized from type eval) + // from symbol as well. // ex, import X as x const isImportAsWithAlias = moduleName.nameParts.length === 1 && diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index 67cdc090d..873e48a1f 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -27,9 +27,9 @@ import { isModule, isOverloadedFunction, isTypeVar, + isUnknown, OverloadedFunctionType, Type, - TypeCategory, UnknownType, } from '../analyzer/types'; import { @@ -153,8 +153,7 @@ export class HoverProvider { // is a directory (a namespace package), and we don't want to provide any hover // information in that case. if (results.parts.length === 0) { - let type = evaluator.getType(node) || UnknownType.create(); - + const type = this._getType(evaluator, node); let typeText: string; if (isModule(type)) { // Handle modules specially because submodules aren't associated with @@ -162,7 +161,6 @@ export class HoverProvider { // the top-level module, which does have a declaration. typeText = '(module) ' + node.value; } else { - type = this._limitOverloadBasedOnCall(node, evaluator, type); let label = 'function'; let isProperty = false; @@ -259,24 +257,24 @@ export class HoverProvider { // Determine if this identifier is a type alias. If so, expand // the type alias when printing the type information. - let type = evaluator.getType(typeNode); + let type = this._getType(evaluator, typeNode); // We may have more type information in the alternativeTypeNode. Use that if it's better. if ( - (!type || type.category === TypeCategory.Unknown) && + isUnknown(type) && resolvedDecl.alternativeTypeNode && isExpressionNode(resolvedDecl.alternativeTypeNode) ) { - const inferredType = evaluator.getType(resolvedDecl.alternativeTypeNode); - if (inferredType && inferredType.category !== TypeCategory.Unknown) { + const inferredType = this._getType(evaluator, resolvedDecl.alternativeTypeNode); + if (!isUnknown(inferredType)) { type = inferredType; typeNode = resolvedDecl.alternativeTypeNode; } } + let expandTypeAlias = false; let typeVarName: string | undefined; - - if (type?.typeAliasInfo && typeNode.nodeType === ParseNodeType.Name) { + if (type.typeAliasInfo && typeNode.nodeType === ParseNodeType.Name) { const typeAliasInfo = getTypeAliasInfo(type); if (typeAliasInfo?.name === typeNode.value) { if (isTypeVar(type)) { @@ -359,28 +357,24 @@ export class HoverProvider { label = isProperty ? 'property' : 'method'; } - let type = evaluator.getType(node); + let type = this._getType(evaluator, node); const resolvedType = Extensions.getProgramExtensions(resolvedDecl.node) .map((e) => e.typeProviderExtension?.tryGetFunctionNodeType(resolvedDecl.node, evaluator, token) ) - .find((t) => !!t) || evaluator.getType(resolvedDecl.node.name); - type = type === undefined || isAnyOrUnknown(type) ? resolvedType : type; - - if (type) { - type = this._limitOverloadBasedOnCall(node, evaluator, type); + .find((t) => !!t) || this._getType(evaluator, resolvedDecl.node.name); + type = isAnyOrUnknown(type) ? resolvedType : type; + const signatureString = getToolTipForType( + type, + label, + node.value, + evaluator, + isProperty, + functionSignatureDisplay + ); - const signatureString = getToolTipForType( - type, - label, - node.value, - evaluator, - isProperty, - functionSignatureDisplay - ); - this._addResultsPart(parts, signatureString, /* python */ true); - } + this._addResultsPart(parts, signatureString, /* python */ true); this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); break; } @@ -483,14 +477,13 @@ export class HoverProvider { } // Get the init method for this class. - const classType = evaluator.getType(node); - - if (!classType || !isInstantiableClass(classType)) { + const classType = this._getType(evaluator, node); + if (!isInstantiableClass(classType)) { return false; } - const instanceType = evaluator.getType(callLeftNode.parent); - if (!instanceType || !isClassInstance(instanceType)) { + const instanceType = this._getType(evaluator, callLeftNode.parent); + if (!isClassInstance(instanceType)) { return false; } @@ -504,7 +497,7 @@ export class HoverProvider { const functionType = evaluator.getTypeOfMember(initMember); if (isFunction(functionType) || isOverloadedFunction(functionType)) { - methodType = evaluator.bindFunctionToClassOrObject(instanceType, functionType); + methodType = this._bindFunctionToClassOrObject(evaluator, node, instanceType, functionType); } } @@ -528,12 +521,11 @@ export class HoverProvider { // Prefer `__new__` if it doesn't have default params (*args: Any, **kwargs: Any) or no params (). if (isFunction(newMemberType) || isOverloadedFunction(newMemberType)) { // Set `treatConstructorAsClassMember` to true to exclude `cls` as a parameter. - methodType = evaluator.bindFunctionToClassOrObject( + methodType = this._bindFunctionToClassOrObject( + evaluator, + node, instanceType, newMemberType, - /* memberClass */ undefined, - /* errorNode */ undefined, - /* recursiveCount */ undefined, /* treatConstructorAsClassMember */ true ); } @@ -541,7 +533,6 @@ export class HoverProvider { } if (methodType && (isFunction(methodType) || isOverloadedFunction(methodType))) { - methodType = this._limitOverloadBasedOnCall(node, evaluator, methodType); this._addResultsPart( parts, getConstructorTooltip(node.value, methodType, evaluator, functionSignatureDisplay), @@ -566,8 +557,7 @@ export class HoverProvider { } private static _getTypeText(node: ExpressionNode, evaluator: TypeEvaluator, expandTypeAlias = false): string { - let type = evaluator.getType(node) || UnknownType.create(); - type = this._limitOverloadBasedOnCall(node, evaluator, type); + const type = this._getType(evaluator, node); return ': ' + evaluator.printType(type, { expandTypeAlias }); } @@ -576,26 +566,67 @@ export class HoverProvider { return ': ' + evaluator.printType(type, { expandTypeAlias }); } - private static _limitOverloadBasedOnCall(node: ExpressionNode, evaluator: TypeEvaluator, type: Type) { + private static _bindFunctionToClassOrObject( + evaluator: TypeEvaluator, + node: ExpressionNode, + baseType: ClassType | undefined, + memberType: FunctionType | OverloadedFunctionType, + treatConstructorAsClassMember?: boolean + ): FunctionType | OverloadedFunctionType | undefined { + const methodType = evaluator.bindFunctionToClassOrObject( + baseType, + memberType, + /* memberClass */ undefined, + /* errorNode */ undefined, + /* recursiveCount */ undefined, + treatConstructorAsClassMember + ); + + if (!methodType) { + return undefined; + } + + return this._limitOverloadBasedOnCall(evaluator, methodType, node); + } + + private static _getType(evaluator: TypeEvaluator, node: ExpressionNode) { + // It does common work necessary for hover for a type we got + // from raw type evaluator. + const type = evaluator.getType(node) ?? UnknownType.create(); + return this._limitOverloadBasedOnCall(evaluator, type, node); + } + + private static _limitOverloadBasedOnCall( + evaluator: TypeEvaluator, + type: T, + node: ExpressionNode + ): T | FunctionType | OverloadedFunctionType { // If it's an overloaded function, see if it's part of a call expression. // If so, we may be able to eliminate some of the overloads based on // the overload resolution. - if (isOverloadedFunction(type) && node.nodeType === ParseNodeType.Name) { - const callNode = ParseTreeUtils.getCallForName(node); - if (callNode) { - const callTypeResult = evaluator.getTypeResult(callNode); - - if (callTypeResult?.overloadsUsedForCall && callTypeResult.overloadsUsedForCall.length > 0) { - if (callTypeResult.overloadsUsedForCall.length === 1) { - type = callTypeResult.overloadsUsedForCall[0]; - } else { - type = OverloadedFunctionType.create(callTypeResult.overloadsUsedForCall); - } - } - } + if (!isOverloadedFunction(type) || node.nodeType !== ParseNodeType.Name) { + return type; + } + + const callNode = ParseTreeUtils.getCallForName(node); + if (!callNode) { + return type; + } + + const callTypeResult = evaluator.getTypeResult(callNode); + if ( + !callTypeResult || + !callTypeResult.overloadsUsedForCall || + callTypeResult.overloadsUsedForCall.length === 0 + ) { + return type; + } + + if (callTypeResult.overloadsUsedForCall.length === 1) { + return callTypeResult.overloadsUsedForCall[0]; } - return type; + return OverloadedFunctionType.create(callTypeResult.overloadsUsedForCall); } private static _addDocumentationPart( @@ -606,7 +637,7 @@ export class HoverProvider { evaluator: TypeEvaluator, resolvedDecl: Declaration | undefined ) { - const type = evaluator.getType(node); + const type = this._getType(evaluator, node); this._addDocumentationPartForType(format, sourceMapper, parts, type, resolvedDecl, evaluator, node.value); } diff --git a/packages/pyright-internal/src/languageService/indentationUtils.ts b/packages/pyright-internal/src/languageService/indentationUtils.ts index 51532ecc1..11e6e39fa 100644 --- a/packages/pyright-internal/src/languageService/indentationUtils.ts +++ b/packages/pyright-internal/src/languageService/indentationUtils.ts @@ -716,6 +716,12 @@ function _convertTokenStreams(parseResults: ParseResults, span: TextRange) { endIndex--; } + // If the next token is a newline, we want to include it in the range + // so that we can include comments if there is any. + if (endIndex < tokens.length - 1 && _isWhitespaceToken(tokens.getItemAt(endIndex + 1)!.type)) { + endIndex++; + } + const tokenInfoArray: TokenInfo[] = []; const lines = parseResults.tokenizerOutput.lines; diff --git a/packages/pyright-internal/src/languageService/insertionPointUtils.ts b/packages/pyright-internal/src/languageService/insertionPointUtils.ts index 16aece31f..94fe55648 100644 --- a/packages/pyright-internal/src/languageService/insertionPointUtils.ts +++ b/packages/pyright-internal/src/languageService/insertionPointUtils.ts @@ -13,7 +13,7 @@ import { getFirstAncestorOrSelf, isBlankLine } from '../analyzer/parseTreeUtils' import { isPrivateName } from '../analyzer/symbolNameUtils'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { containsOnlyWhitespace } from '../common/core'; -import { convertOffsetToPosition, convertPositionToOffset } from '../common/positionUtils'; +import { convertOffsetToPosition, convertPositionToOffset, getLineEndOffset } from '../common/positionUtils'; import { TextRange } from '../common/textRange'; import { MatchNode, ParseNode, ParseNodeType, StatementNode, SuiteNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; @@ -69,7 +69,9 @@ export function getInsertionPointForSymbolUnderModule( module.statements, options?.insertBefore ?? defaultInsertionPoint ); - return TextRange.getEnd(lastStatement); + + const position = convertOffsetToPosition(TextRange.getEnd(lastStatement), parseResults.tokenizerOutput.lines); + return getLineEndOffset(parseResults.tokenizerOutput, parseResults.text, position.line); } export function getContainer(node: ParseNode, includeSelf = true): SuiteNode | MatchNode | undefined { diff --git a/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts b/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts index fc80c4c7e..e07cef0bb 100644 --- a/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts +++ b/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts @@ -164,6 +164,42 @@ test('modify chained files', async () => { assert.strictEqual(finalDiags.length, 1); }); +function generateChainedFiles(count: number, lastFile: string) { + let code = ''; + for (let i = 0; i < count; i++) { + code += ` +// @filename: test${i + 1}.py +//// def foo${i + 1}(): pass +`; + } + code += lastFile; + return code; +} + +test('chained files with 1000s of files', async () => { + const lastFile = ` +// @filename: testFinal.py +//// [|/*marker*/foo1()|] + `; + const code = generateChainedFiles(1000, lastFile); + const basePath = normalizeSlashes('/'); + const { data, service } = createServiceWithChainedSourceFiles(basePath, code); + const marker = data.markerPositions.get('marker')!; + const range = data.ranges.find((r) => r.marker === marker)!; + + const parseResults = service.getParseResult(marker.fileName)!; + analyze(service.test_program); + + // There should be no error as it should find the foo1 in the first chained file. + const initialDiags = await service.getDiagnosticsForRange( + marker.fileName, + convertOffsetsToRange(range.pos, range.end, parseResults.tokenizerOutput.lines), + CancellationToken.None + ); + + assert.strictEqual(initialDiags.length, 0); +}); + function createServiceWithChainedSourceFiles(basePath: string, code: string) { const service = new AnalyzerService( 'test service', diff --git a/packages/pyright-internal/src/tests/indentationUtils.reindent.test.ts b/packages/pyright-internal/src/tests/indentationUtils.reindent.test.ts index 586b1a423..9cab1ef47 100644 --- a/packages/pyright-internal/src/tests/indentationUtils.reindent.test.ts +++ b/packages/pyright-internal/src/tests/indentationUtils.reindent.test.ts @@ -414,6 +414,31 @@ def myfunc(a, b): testIndentation(code, 0, expected); }); +test('handle comment after last token', () => { + const code = ` +//// [|/*marker*/def test(): +//// return # comment|] +//// + `; + + const expected = `def test(): + return # comment`; + + testIndentation(code, 0, expected); +}); + +test('handle comment after last token at EOF', () => { + const code = ` +//// [|/*marker*/def test(): +//// return # comment|] + `; + + const expected = `def test(): + return # comment`; + + testIndentation(code, 0, expected); +}); + function testIndentation(code: string, indentation: number, expected: string, indentFirstToken = true) { const state = parseAndGetTestState(code).state; const range = state.getRangeByMarkerName('marker')!; diff --git a/packages/pyright-internal/src/tests/insertionPointUtils.test.ts b/packages/pyright-internal/src/tests/insertionPointUtils.test.ts index f819d87e5..6e1aef62a 100644 --- a/packages/pyright-internal/src/tests/insertionPointUtils.test.ts +++ b/packages/pyright-internal/src/tests/insertionPointUtils.test.ts @@ -141,6 +141,23 @@ test('insert symbol before insert marker with other statements', () => { }); }); +test('insert symbol after comments', () => { + const code = ` +//// a = 1 # comment [|/*marker*/|] +//// + `; + + testInsertionPoint(code, 'b'); +}); + +test('insert symbol after comments at EOF', () => { + const code = ` +//// a = 1 # comment [|/*marker*/|] + `; + + testInsertionPoint(code, 'b'); +}); + function testInsertionPoint( code: string, symbolName: string, diff --git a/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts b/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts index 89f297bc8..4189c7ba8 100644 --- a/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts +++ b/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts @@ -563,6 +563,31 @@ test('multiple variables in multiple lines 2', () => { testFromCode(code); }); +test('insert after comment', () => { + const code = ` +// @filename: test.py +//// [|{|"r":""|}[|/*marker*/b|] = 3|] + +// @filename: moved.py +//// a = 1 # type: ignore[|{|"r":"!n!!n!!n!b = 3", "name": "dest"|}|] + `; + + testFromCode(code); +}); + +test('keep comments', () => { + const code = ` +// @filename: test.py +//// [|{|"r":""|}def [|/*marker*/test|](): +//// return # comment|] + +// @filename: moved.py +//// [|{|"r":"def test():!n! return # comment", "name": "dest"|}|] + `; + + testFromCode(code); +}); + function testFromCode(code: string) { const state = parseAndGetTestState(code).state; diff --git a/packages/pyright-internal/src/tests/positionUtils.test.ts b/packages/pyright-internal/src/tests/positionUtils.test.ts new file mode 100644 index 000000000..5de010e37 --- /dev/null +++ b/packages/pyright-internal/src/tests/positionUtils.test.ts @@ -0,0 +1,58 @@ +/* + * positionUtils.test.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Unit tests for positionUtils module. + */ + +import assert from 'assert'; + +import { DiagnosticSink } from '../common/diagnosticSink'; +import { getLineEndPosition } from '../common/positionUtils'; +import { ParseOptions, Parser } from '../parser/parser'; + +test('getLineEndOffset', () => { + const code = 'a = 1'; + + verifyLineEnding(code, 0, 5); +}); + +test('getLineEndOffset with windows style ending at EOF', () => { + const code = 'a = 1\r\n'; + + verifyLineEnding(code, 0, 5); +}); + +test('getLineEndOffset with windows style ending', () => { + const code = 'a = 1\r\nb = 1'; + + verifyLineEnding(code, 0, 5); +}); + +test('getLineEndOffset with unix style ending at EOF', () => { + const code = 'a = 1\n'; + + verifyLineEnding(code, 0, 5); +}); + +test('getLineEndOffset with unix style ending', () => { + const code = 'a = 1\nb = 1'; + + verifyLineEnding(code, 0, 5); +}); + +test('getLineEndOffset with mixed style ending', () => { + const code = 'a = 1\r\nb = 1\nc = 1\n'; + + verifyLineEnding(code, 0, 5); + verifyLineEnding(code, 1, 5); + verifyLineEnding(code, 2, 5); +}); + +function verifyLineEnding(code: string, line: number, expected: number) { + const parser = new Parser(); + const parseResults = parser.parseSourceFile(code, new ParseOptions(), new DiagnosticSink()); + + assert.strictEqual(getLineEndPosition(parseResults.tokenizerOutput, parseResults.text, line).character, expected); +} diff --git a/packages/pyright-internal/src/workspaceFactory.ts b/packages/pyright-internal/src/workspaceFactory.ts index 89961b86c..54c8c2657 100644 --- a/packages/pyright-internal/src/workspaceFactory.ts +++ b/packages/pyright-internal/src/workspaceFactory.ts @@ -235,7 +235,7 @@ export class WorkspaceFactory { const fileInfo = fromWorkspace.service.backgroundAnalysisProgram.program.getSourceFileInfo(f); if (fileInfo) { // Copy the source file data (closing can destroy the sourceFile) - const version = fileInfo.sourceFile.getClientVersion() || null; + const version = fileInfo.sourceFile.getClientVersion() ?? null; const content = fileInfo.sourceFile.getFileContent() || ''; const ipythonMode = fileInfo.sourceFile.getIPythonMode(); const chainedSourceFile = fileInfo.chainedSourceFile?.sourceFile.getFilePath(); @@ -375,7 +375,7 @@ export class WorkspaceFactory { kinds: string[] ) { // Update the kind based of the uri is local or not - if (!this._uriParser.isLocal(rootUri)) { + if (!kinds.includes(WellKnownWorkspaceKinds.Default) && !this._uriParser.isLocal(rootUri)) { // Web based workspace should be limited. kinds = [...kinds, WellKnownWorkspaceKinds.Limited]; } From 39cac72d996270a3d074b16d5171ef1d0e8d598e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 5 Apr 2023 15:49:34 -0700 Subject: [PATCH 011/525] Improved documentation for conditional types. --- docs/type-concepts-advanced.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/type-concepts-advanced.md b/docs/type-concepts-advanced.md index dd476177b..533c5e905 100644 --- a/docs/type-concepts-advanced.md +++ b/docs/type-concepts-advanced.md @@ -221,7 +221,7 @@ b = c reveal_type(b) # list[Any] ``` -### Constrained Type Variables and Conditional Types +### Constrained Type Variables When a TypeVar is defined, it can be constrained to two or more types. @@ -251,7 +251,9 @@ reveal_type(v2) # float v3 = add(1.3, "hi") # Error ``` -When checking the implementation of a function that uses constrained type variables in its signature, the type checker must verify that type consistency is guaranteed. Consider the following example, where the input parameter and return type are both annotated with a constrained type variable. The type checker must verify that if a caller passes an argument of type `str`, then all code paths must return a `str`. Likewise, if a caller passes an argument of type `float`, all code paths must return a `float`. +### Conditional Types and Type Variables + +When checking the implementation of a function that uses type variables in its signature, the type checker must verify that type consistency is guaranteed. Consider the following example, where the input parameter and return type are both annotated with a type variable. The type checker must verify that if a caller passes an argument of type `str`, then all code paths must return a `str`. Likewise, if a caller passes an argument of type `float`, all code paths must return a `float`. ```python def add_one(value: _StrOrFloat) -> _StrOrFloat: @@ -264,10 +266,10 @@ def add_one(value: _StrOrFloat) -> _StrOrFloat: return sum ``` -Notice that the type of variable `sum` is reported with asterisks (`*`). This indicates that internally the type checker is tracking the type as conditional. In this particular example, it indicates that `sum` is a `str` type if the parameter `value` is a `str` but is a `float` if `value` is a `float`. By tracking these conditional types, the type checker can verify that the return type is consistent with the return type `_StrOrFloat`. +The type of variable `sum` is reported with a star (`*`). This indicates that internally the type checker is tracking the type as a “conditional” type. In this particular example, it indicates that `sum` is a `str` type if the parameter `value` is a `str` but is a `float` if `value` is a `float`. By tracking these conditional types, the type checker can verify that the return type is consistent with the return type `_StrOrFloat`. Conditional types are a form of _intersection_ type, and they are considered subtypes of both the concrete type and the type variable. -### Inferred type of self and cls parameters +### Inferred Type of “self” and “cls” Parameters When a type annotation for a method’s `self` or `cls` parameter is omitted, pyright will infer its type based on the class that contains the method. The inferred type is internally represented as a type variable that is bound to the class. From 4edc987c3637e8da024f09eb28bb45c1603abf5d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 5 Apr 2023 20:37:41 -0700 Subject: [PATCH 012/525] Fixed a bug that resulted in incorrect type evaluation when a partially-specialized generic method (with method-scoped type variables) is passed multiple times to a function that accepts generic callables. This addresses https://github.com/microsoft/pyright/issues/4914. --- .../src/analyzer/typeUtils.ts | 5 ++-- .../src/tests/samples/genericTypes105.py | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index b182a2095..95ea3f69e 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3384,9 +3384,8 @@ class UniqueFunctionSignatureTransformer extends TypeVarTransformer { sourceType: FunctionType, recursionCount: number ): FunctionType | OverloadedFunctionType { - // If this function has already been specialized or is not generic, - // there's no need to check for uniqueness. - if (sourceType.specializedTypes || sourceType.details.typeParameters.length === 0) { + // If this function is not generic, there's no need to check for uniqueness. + if (sourceType.details.typeParameters.length === 0) { return super.transformTypeVarsInFunctionType(sourceType, recursionCount); } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes105.py b/packages/pyright-internal/src/tests/samples/genericTypes105.py index 4dcdb0eb6..ddf78bde9 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes105.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes105.py @@ -54,3 +54,28 @@ def test_2(f: Callable[[A], X]) -> Callable[[A, B, C], tuple[X, B, C]]: ) return val + + +class ClassA: + def identity(self, x: T) -> T: + return x + + def test_1(self, f: Callable[[A], X]) -> Callable[[A, B, C], tuple[X, B, C]]: + val = triple_1(f, self.identity, self.identity) + + reveal_type( + val, + expected_text="(A@test_1, T@identity, T(1)@identity) -> tuple[X@test_1, T@identity, T(1)@identity]", + ) + + return val + + def test_2(self, f: Callable[[A], X]) -> Callable[[A, B, C], tuple[X, B, C]]: + val = triple_2((f, self.identity, self.identity)) + + reveal_type( + val, + expected_text="(A@test_2, T@identity, T(1)@identity) -> tuple[X@test_2, T@identity, T(1)@identity]", + ) + + return val From 162f056e36237bc0634b201669f1cce97dc57c3a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 6 Apr 2023 08:18:52 -0700 Subject: [PATCH 013/525] Reverted recent change that validated that explicitly-annotated `self` and `cls` in overloaded methods was a subtype of the class that contains them. This change made pyright consistent with mypy, but feedback from pyright users indicated that it was not desired. There are legitimate use cases for this in the overload case. This addresses https://github.com/microsoft/pyright/discussions/4915. --- packages/pyright-internal/src/analyzer/checker.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index eb9ba1224..3029f6874 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -6008,6 +6008,14 @@ export class Checker extends ParseTreeWalker { return; } + // Don't enforce this for an overloaded method because the "self" param + // annotation can be used as a filter for the overload. This differs from + // mypy, which enforces this check for overloads, but there are legitimate + // uses for this in an overloaded method. + if (FunctionType.isOverloaded(functionType)) { + return; + } + // If the declared type is LiteralString and the class is str, exempt this case. // It's used in the typeshed stubs. if ( From fe0904f8b341d2bc7ab396d0615f4610373ce277 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 6 Apr 2023 08:26:44 -0700 Subject: [PATCH 014/525] Fixed bug that led to incorrect type narrowing for mapping patters in a `case` statement if the type included a recursive type alias. This addresses https://github.com/microsoft/pylance-release/issues/4207. --- packages/pyright-internal/src/analyzer/patternMatching.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index 278dc8337..b7fad583d 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -66,6 +66,7 @@ import { preserveUnknown, specializeClassType, specializeTupleClass, + transformPossibleRecursiveTypeAlias, } from './typeUtils'; import { TypeVarContext } from './typeVarContext'; @@ -328,6 +329,8 @@ function narrowTypeBasedOnMappingPattern( pattern: PatternMappingNode, isPositiveTest: boolean ): Type { + type = transformPossibleRecursiveTypeAlias(type); + if (!isPositiveTest) { // Our ability to narrow in the negative case for mapping patterns is // limited, but we can do it if the type is a union that includes a From cc386eaf8d719876e838338cb876980c420f28fa Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 7 Apr 2023 09:40:11 -0700 Subject: [PATCH 015/525] Fixed bug that potentially resulted in internally corrupted state when a `class` or `def` statement appears within a conditional block that is determined by the binder to be unreachable. This addresses https://github.com/microsoft/pyright/issues/4905. --- .../pyright-internal/src/analyzer/binder.ts | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index b6a5bdd34..120c896e8 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -2633,6 +2633,14 @@ export class Binder extends ParseTreeWalker { this._targetFunctionDeclaration.isGenerator = true; } } + + // In case there are any class or function statements within this + // subtree, we need to create dummy scopes for them. The type analyzer + // depends on scopes being present. + if (!this._moduleSymbolOnly) { + const dummyScopeGenerator = new DummyScopeGenerator(this._currentScope); + dummyScopeGenerator.walk(statement); + } } } @@ -4201,3 +4209,52 @@ export class ReturnFinder extends ParseTreeWalker { return false; } } + +// Creates dummy scopes for classes or functions within a parse tree. +// This is needed in cases where the parse tree has been determined +// to be unreachable. There are code paths where the type evaluator +// will still evaluate these types, and it depends on the presence +// of a scope. +export class DummyScopeGenerator extends ParseTreeWalker { + private _currentScope: Scope | undefined; + + constructor(currentScope: Scope | undefined) { + super(); + this._currentScope = currentScope; + } + + override visitClass(node: ClassNode): boolean { + const newScope = this._createNewScope(ScopeType.Class, () => { + this.walk(node.suite); + }); + + if (!AnalyzerNodeInfo.getScope(node)) { + AnalyzerNodeInfo.setScope(node, newScope); + } + + return false; + } + + override visitFunction(node: FunctionNode): boolean { + const newScope = this._createNewScope(ScopeType.Function, () => { + this.walk(node.suite); + }); + + if (!AnalyzerNodeInfo.getScope(node)) { + AnalyzerNodeInfo.setScope(node, newScope); + } + + return false; + } + + private _createNewScope(scopeType: ScopeType, callback: () => void) { + const prevScope = this._currentScope; + const newScope = new Scope(scopeType, this._currentScope); + this._currentScope = newScope; + + callback(); + + this._currentScope = prevScope; + return newScope; + } +} From 0618bad6ffdc6c9549df2ab3a792dce23af9069b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 7 Apr 2023 10:20:38 -0700 Subject: [PATCH 016/525] Fixed a bug that resulted in a false positive error when assigning a function that has one or more tuple parameters to a generic callable that also accepts tuple parameters. This addresses https://github.com/microsoft/pyright/issues/4920. --- .../src/analyzer/typeEvaluator.ts | 17 +++++++--- .../src/tests/samples/genericTypes107.py | 32 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++ 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes107.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 137858099..7a6b26b4e 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -22268,7 +22268,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions destType: ClassType, srcType: ClassType, diag: DiagnosticAddendum | undefined, - typeVarContext: TypeVarContext | undefined, + destTypeVarContext: TypeVarContext | undefined, + srcTypeVarContext: TypeVarContext | undefined, flags: AssignTypeFlags, recursionCount: number ) { @@ -22340,8 +22341,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions destTypeArgs[argIndex].type, srcTypeArgs[argIndex].type, entryDiag?.createAddendum(), - typeVarContext, - /* srcTypeVarContext */ undefined, + destTypeVarContext, + srcTypeVarContext, flags, recursionCount ) @@ -22427,7 +22428,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Handle built-in types that support arbitrary numbers // of type parameters like Tuple. if (ancestorIndex === 0 && destType.tupleTypeArguments && curSrcType.tupleTypeArguments) { - return assignTupleTypeArgs(destType, curSrcType, diag, curDestTypeVarContext, flags, recursionCount); + return assignTupleTypeArgs( + destType, + curSrcType, + diag, + destTypeVarContext, + srcTypeVarContext, + flags, + recursionCount + ); } // If there are no type parameters on this class, we're done. diff --git a/packages/pyright-internal/src/tests/samples/genericTypes107.py b/packages/pyright-internal/src/tests/samples/genericTypes107.py new file mode 100644 index 000000000..55f6afe1b --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes107.py @@ -0,0 +1,32 @@ +# This sample tests the case where a function that includes a tuple +# parameter type is assignable to a generic callable that also includes +# a tuple type. + +from typing import Callable, TypeVar + +X = TypeVar("X") +Y = TypeVar("Y") + + +def deco1(func: Callable[[tuple[X]], Y]) -> Callable[[X], Y]: + ... + + +def func1(x: tuple[str]) -> int: + ... + + +v1 = deco1(func1) +reveal_type(v1, expected_text="(str) -> int") + + +def deco2(func: Callable[[tuple[X, ...]], Y]) -> Callable[[X], Y]: + ... + + +def func2(x: tuple[str]) -> int: + ... + + +v2 = deco2(func2) +reveal_type(v2, expected_text="(str) -> int") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 6290f1c7b..a748ff00b 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1049,6 +1049,12 @@ test('GenericTypes106', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes107', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes107.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From dce5d524b0e64cd3348508dd6f593e972d37a166 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 8 Apr 2023 00:39:34 -0700 Subject: [PATCH 017/525] Performance: Limit the number of speculative cache entries. There were cases where the number of entries was growing to very large numbers, which resulted in slow performance and large memory consumption. This partially addresses https://github.com/microsoft/pyright/issues/4900. --- packages/pyright-internal/src/analyzer/typeCacheUtils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeCacheUtils.ts b/packages/pyright-internal/src/analyzer/typeCacheUtils.ts index 342e4b811..9e0f5220d 100644 --- a/packages/pyright-internal/src/analyzer/typeCacheUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeCacheUtils.ts @@ -119,7 +119,8 @@ export class SpeculativeTypeTracker { } let cacheEntries = this._speculativeTypeCache.get(node.id); - if (!cacheEntries) { + const maxCacheEntriesPerNode = 16; + if (!cacheEntries || cacheEntries.length > maxCacheEntriesPerNode) { cacheEntries = []; this._speculativeTypeCache.set(node.id, cacheEntries); } From fade08f55fe3f8d1396050d01e90140703fad275 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 8 Apr 2023 00:40:41 -0700 Subject: [PATCH 018/525] Performance: Improve the effective type cache in cases where the type of a symbol is unbound. This partially addresses https://github.com/microsoft/pyright/issues/4900. --- .../src/analyzer/typeEvaluator.ts | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 7a6b26b4e..e85f6c702 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21492,39 +21492,37 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } }); - if (typesToCombine.length > 0) { - // How many times have we already attempted to evaluate this declaration already? - const evaluationAttempts = (cacheEntries?.get(effectiveTypeCacheKey)?.evaluationAttempts ?? 0) + 1; + // How many times have we already attempted to evaluate this declaration already? + const evaluationAttempts = (cacheEntries?.get(effectiveTypeCacheKey)?.evaluationAttempts ?? 0) + 1; + + let resultType: Type; + if (typesToCombine.length > 0) { // Ignore the pending evaluation flag if we've already attempted the // type evaluation many times because this probably means there's a // cyclical dependency that cannot be broken. isIncomplete = sawPendingEvaluation && evaluationAttempts < maxEffectiveTypeEvaluationAttempts; - const result: EffectiveTypeResult = { - type: combineTypes(typesToCombine), - isIncomplete, - includesVariableDecl, - includesIllegalTypeAliasDecl: !decls.every((decl) => isPossibleTypeAliasDeclaration(decl)), - isRecursiveDefinition: false, - evaluationAttempts, - }; - - if (!includesSpeculativeResult) { - addToEffectiveTypeCache(result); - } - - return result; + resultType = combineTypes(typesToCombine); + } else { + resultType = UnboundType.create(); } - return { - type: UnboundType.create(), + const result: EffectiveTypeResult = { + type: resultType, isIncomplete, includesVariableDecl, includesIllegalTypeAliasDecl: !decls.every((decl) => isPossibleTypeAliasDeclaration(decl)), isRecursiveDefinition: false, + evaluationAttempts, }; + if (!includesSpeculativeResult) { + addToEffectiveTypeCache(result); + } + + return result; + function addToEffectiveTypeCache(result: EffectiveTypeResult) { // Add the entry to the cache so we don't need to compute it next time. if (!cacheEntries) { From 6b224083b1df7448078711e808f9628181ce46bb Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 8 Apr 2023 08:51:05 -0700 Subject: [PATCH 019/525] Added caching of the `SupportsKeysAndGetItem` type so it doesn't need to be refetched repeatedly. This is a small perf improvement. --- .../src/analyzer/typeEvaluator.ts | 90 +++++++++---------- 1 file changed, 40 insertions(+), 50 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index e85f6c702..d71d56c35 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -652,6 +652,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let dictClassType: Type | undefined; let typedDictClassType: Type | undefined; let typedDictPrivateClassType: Type | undefined; + let mappingType: Type | undefined; let printExpressionSpaceCount = 0; let incompleteGenerationCount = 0; @@ -959,6 +960,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions dictClassType = getBuiltInType(node, 'dict'); typedDictClassType = getTypingType(node, 'TypedDict'); typedDictPrivateClassType = getTypingType(node, '_TypedDict'); + + mappingType = getTypeshedType(node, 'SupportsKeysAndGetItem'); + if (!mappingType) { + // Fall back on 'Mapping' if 'SupportsKeysAndGetItem' is not available. + mappingType = getTypingType(node, 'Mapping'); + } } } @@ -10303,10 +10310,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); } } else { - let mappingType = getTypeshedType(errorNode, 'SupportsKeysAndGetItem'); - if (!mappingType) { - mappingType = getTypingType(errorNode, 'Mapping'); - } const strObjType = getBuiltInObject(errorNode, 'str'); if ( @@ -13589,14 +13592,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions addUnknown = false; } else if (entryNode.nodeType === ParseNodeType.DictionaryExpandEntry) { - // Verify that the type supports the `keys` and `__getitem__` methods. - // This protocol is defined in the _typeshed stub. If we can't find - // it there, fall back on typing.Mapping. - let mappingType = getTypeshedType(node, 'SupportsKeysAndGetItem'); - if (!mappingType) { - mappingType = getTypingType(node, 'Mapping'); - } - let expectedType: Type | undefined; if (expectedKeyType && expectedValueType) { if (mappingType && isInstantiableClass(mappingType)) { @@ -13642,48 +13637,43 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions addUnknown = false; } - } else { - if (mappingType && isInstantiableClass(mappingType)) { - const mappingTypeVarContext = new TypeVarContext(getTypeVarScopeId(mappingType)); + } else if (mappingType && isInstantiableClass(mappingType)) { + const mappingTypeVarContext = new TypeVarContext(getTypeVarScopeId(mappingType)); - // Self-specialize the class. - mappingType = ClassType.cloneForSpecialization( - mappingType, - mappingType.details.typeParameters, - /* isTypeArgumentExplicit */ true - ); + // Self-specialize the class. + mappingType = ClassType.cloneForSpecialization( + mappingType, + mappingType.details.typeParameters, + /* isTypeArgumentExplicit */ true + ); - if ( - assignType( - ClassType.cloneAsInstance(mappingType), - unexpandedType, - /* diag */ undefined, - mappingTypeVarContext, - /* srcTypeVarContext */ undefined, - AssignTypeFlags.RetainLiteralsForTypeVar - ) - ) { - const specializedMapping = applySolvedTypeVars( - mappingType, - mappingTypeVarContext - ) as ClassType; - const typeArgs = specializedMapping.typeArguments; - if (typeArgs && typeArgs.length >= 2) { - if (forceStrictInference || index < maxEntriesToUseForInference) { - keyTypes.push({ node: entryNode, type: typeArgs[0] }); - valueTypes.push({ node: entryNode, type: typeArgs[1] }); - } - addUnknown = false; + if ( + assignType( + ClassType.cloneAsInstance(mappingType), + unexpandedType, + /* diag */ undefined, + mappingTypeVarContext, + /* srcTypeVarContext */ undefined, + AssignTypeFlags.RetainLiteralsForTypeVar + ) + ) { + const specializedMapping = applySolvedTypeVars(mappingType, mappingTypeVarContext) as ClassType; + const typeArgs = specializedMapping.typeArguments; + if (typeArgs && typeArgs.length >= 2) { + if (forceStrictInference || index < maxEntriesToUseForInference) { + keyTypes.push({ node: entryNode, type: typeArgs[0] }); + valueTypes.push({ node: entryNode, type: typeArgs[1] }); } - } else { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.dictUnpackIsNotMapping(), - entryNode - ); + addUnknown = false; } + } else { + const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.dictUnpackIsNotMapping(), + entryNode + ); } } } else if (entryNode.nodeType === ParseNodeType.ListComprehension) { From bd916a69f7e813510720139fbb5c1a85940d766a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 8 Apr 2023 09:25:07 -0700 Subject: [PATCH 020/525] Further improved management of speculative cache entries. --- .../src/analyzer/typeCacheUtils.ts | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeCacheUtils.ts b/packages/pyright-internal/src/analyzer/typeCacheUtils.ts index 9e0f5220d..460a3f8fb 100644 --- a/packages/pyright-internal/src/analyzer/typeCacheUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeCacheUtils.ts @@ -118,13 +118,41 @@ export class SpeculativeTypeTracker { return; } + const maxCacheEntriesPerNode = 8; let cacheEntries = this._speculativeTypeCache.get(node.id); - const maxCacheEntriesPerNode = 16; - if (!cacheEntries || cacheEntries.length > maxCacheEntriesPerNode) { + + if (!cacheEntries) { cacheEntries = []; - this._speculativeTypeCache.set(node.id, cacheEntries); + } else { + cacheEntries = cacheEntries.filter((entry) => { + // Filter out any incomplete entries that no longer match the generation count. + // These are obsolete and cannot be used. + if (entry.typeResult.isIncomplete && entry.incompleteGenerationCount !== incompleteGenerationCount) { + return false; + } + + // Filter out any entries that match the expected type of the + // new entry. The new entry replaces the old in this case. + if (expectedType) { + if (!entry.expectedType) { + return true; + } + return !isTypeSame(entry.expectedType, expectedType); + } + + return !!entry.expectedType; + }); + + // Don't allow the cache to grow too large. + if (cacheEntries.length >= maxCacheEntriesPerNode) { + cacheEntries.slice(1); + } } + + // Add the new entry. cacheEntries.push({ typeResult, expectedType, incompleteGenerationCount }); + + this._speculativeTypeCache.set(node.id, cacheEntries); } getSpeculativeType(node: ParseNode, expectedType: Type | undefined): SpeculativeTypeEntry | undefined { From 9f81564a4685ff5c55edd3959f9b39030f590b2f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 8 Apr 2023 10:29:14 -0700 Subject: [PATCH 021/525] Changed `reportImportCycles` so it is not on by default in "strict" type checking mode. It is highly opinionated and should be used only in cases where the developer opts into it. --- docs/configuration.md | 2 +- packages/pyright-internal/src/common/configOptions.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index a58f89cc1..f0a7d68b9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -328,7 +328,6 @@ The following table lists the default severity levels for each diagnostic rule w | reportDeprecated | "none" | "none" | "error" | | reportDuplicateImport | "none" | "none" | "error" | | reportFunctionMemberAccess | "none" | "none" | "error" | -| reportImportCycles | "none" | "none" | "error" | | reportIncompatibleMethodOverride | "none" | "none" | "error" | | reportIncompatibleVariableOverride | "none" | "none" | "error" | | reportIncompleteStub | "none" | "none" | "error" | @@ -360,6 +359,7 @@ The following table lists the default severity levels for each diagnostic rule w | reportCallInDefaultInitializer | "none" | "none" | "none" | | reportImplicitOverride | "none" | "none" | "none" | | reportImplicitStringConcatenation | "none" | "none" | "none" | +| reportImportCycles | "none" | "none" | "none" | | reportMissingSuperCall | "none" | "none" | "none" | | reportPropertyTypeMismatch | "none" | "none" | "none" | | reportShadowedImports | "none" | "none" | "none" | diff --git a/packages/pyright-internal/src/common/configOptions.ts b/packages/pyright-internal/src/common/configOptions.ts index 72b8879bb..d66b4ee91 100644 --- a/packages/pyright-internal/src/common/configOptions.ts +++ b/packages/pyright-internal/src/common/configOptions.ts @@ -601,7 +601,7 @@ export function getStrictDiagnosticRuleSet(): DiagnosticRuleSet { reportMissingImports: 'error', reportMissingModuleSource: 'warning', // Not overridden by strict mode reportMissingTypeStubs: 'error', - reportImportCycles: 'error', + reportImportCycles: 'none', reportUnusedImport: 'error', reportUnusedClass: 'error', reportUnusedFunction: 'error', From 8de6fcb597b00e9b04314eddd6a284ecbfb1bfe3 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 8 Apr 2023 20:30:23 -0700 Subject: [PATCH 022/525] Improved the synthesized `__init__` method of a `TypedDict` class so it accepts another instance of the same TypedDict (or another TypedDict that is type compatible) as an argument. This makes pyright compatible with mypy in this regard. See https://github.com/python/mypy/issues/8890 for details. --- .../src/analyzer/typedDicts.ts | 51 ++++++++++++++++--- .../src/tests/samples/typedDict2.py | 3 ++ 2 files changed, 48 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index dbaede42b..60750a35e 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -243,18 +243,48 @@ export function synthesizeTypedDictClassMethods( FunctionType.addDefaultParameters(newType); newType.details.declaredReturnType = ClassType.cloneAsInstance(classType); - // Synthesize an __init__ method. - const initType = FunctionType.createSynthesizedInstance('__init__'); - FunctionType.addParameter(initType, { + // Synthesize an __init__ method with two overrides. + const initOverride1 = FunctionType.createSynthesizedInstance('__init__', FunctionTypeFlags.Overloaded); + FunctionType.addParameter(initOverride1, { category: ParameterCategory.Simple, name: 'self', type: ClassType.cloneAsInstance(classType), hasDeclaredType: true, }); - initType.details.declaredReturnType = NoneType.createInstance(); + initOverride1.details.declaredReturnType = NoneType.createInstance(); + + // The first parameter must be positional-only. + FunctionType.addParameter(initOverride1, { + category: ParameterCategory.Simple, + name: '__map', + type: ClassType.cloneAsInstance(classType), + hasDeclaredType: true, + }); + + FunctionType.addParameter(initOverride1, { + category: ParameterCategory.Simple, + name: '', + type: UnknownType.create(), + }); + + // All subsequent parameters must be named, so insert an empty "*". + FunctionType.addParameter(initOverride1, { + category: ParameterCategory.VarArgList, + type: AnyType.create(), + hasDeclaredType: true, + }); + + const initOverride2 = FunctionType.createSynthesizedInstance('__init__', FunctionTypeFlags.Overloaded); + FunctionType.addParameter(initOverride2, { + category: ParameterCategory.Simple, + name: 'self', + type: ClassType.cloneAsInstance(classType), + hasDeclaredType: true, + }); + initOverride2.details.declaredReturnType = NoneType.createInstance(); // All parameters must be named, so insert an empty "*". - FunctionType.addParameter(initType, { + FunctionType.addParameter(initOverride2, { category: ParameterCategory.VarArgList, type: AnyType.create(), hasDeclaredType: true, @@ -263,7 +293,15 @@ export function synthesizeTypedDictClassMethods( const entries = getTypedDictMembersForClass(evaluator, classType); let allEntriesAreNotRequired = true; entries.forEach((entry, name) => { - FunctionType.addParameter(initType, { + FunctionType.addParameter(initOverride1, { + category: ParameterCategory.Simple, + name, + hasDefault: true, + type: entry.valueType, + hasDeclaredType: true, + }); + + FunctionType.addParameter(initOverride2, { category: ParameterCategory.Simple, name, hasDefault: !entry.isRequired, @@ -277,6 +315,7 @@ export function synthesizeTypedDictClassMethods( }); const symbolTable = classType.details.fields; + const initType = OverloadedFunctionType.create([initOverride1, initOverride2]); symbolTable.set('__init__', Symbol.createWithType(SymbolFlags.ClassMember, initType)); symbolTable.set('__new__', Symbol.createWithType(SymbolFlags.ClassMember, newType)); diff --git a/packages/pyright-internal/src/tests/samples/typedDict2.py b/packages/pyright-internal/src/tests/samples/typedDict2.py index 9d591390e..d225816e9 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict2.py +++ b/packages/pyright-internal/src/tests/samples/typedDict2.py @@ -35,6 +35,9 @@ def get_movie_name(movie: Movie): "name2": "Blade Runner" } +movie5: Movie = Movie(movie3) +movie6: Movie = Movie(movie3, year=2030, name="New movie") + book1: BookBasedMovie = {"name": "Moonraker", "year": 1979, "based_on": "Moonraker"} book2: BookBasedMovie = {"year": 1979, "based_on": "Moonraker"} From b31f725fab96e92632eec50d5b5fa3264e7965c4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 10 Apr 2023 13:28:33 -0700 Subject: [PATCH 023/525] Fixed a bug that led to a false positive error when combining a generic callback argument with a second argument that is an empty dict expression. This addresses https://github.com/microsoft/pylance-release/issues/4219. --- packages/pyright-internal/src/analyzer/typeUtils.ts | 9 +++++---- .../pyright-internal/src/tests/samples/genericTypes53.py | 8 ++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 95ea3f69e..c8e41bfa9 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3434,12 +3434,12 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { let replacement = signatureContext.getTypeVarType(typeVar, !!this._options.useNarrowBoundOnly); // If there was no narrow bound but there is a wide bound that - // contains literals, we'll use the wide bound even if "useNarrowBoundOnly" - // is specified. - if (!replacement && !!this._options.useNarrowBoundOnly) { + // contains literals or a TypeVar, we'll use the wide bound even if + // "useNarrowBoundOnly" is specified. + if (!replacement && this._options.useNarrowBoundOnly) { const wideType = signatureContext.getTypeVarType(typeVar); if (wideType) { - if (containsLiteralType(wideType, /* includeTypeArgs */ true)) { + if (isTypeVar(wideType) || containsLiteralType(wideType, /* includeTypeArgs */ true)) { replacement = wideType; } } @@ -3461,6 +3461,7 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { replacement = convertToInstantiable(replacement); } } + return replacement; } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes53.py b/packages/pyright-internal/src/tests/samples/genericTypes53.py index f625e0d76..d95cbf310 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes53.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes53.py @@ -40,3 +40,11 @@ def reduce(function: Callable[[_T, _T], _T], sequence: Iterable[_T]) -> _T: v7 = reduce(lambda x, y: {**x, **y}, dicts) reveal_type(v7, expected_text="dict[str, str]") + + +def func3(func: Callable[[_T], bool], b: dict[_T, int]) -> _T: + return next(iter(b.keys())) + + +def func4(func: Callable[[_T], bool]) -> _T: + return func3(func, {}) From cc248995cf7cc2fafc36fd37522d622eb5530cd5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 10 Apr 2023 19:39:04 -0700 Subject: [PATCH 024/525] Fixed bug in typePrinter that caused syntactically-incorrect output when using the "PythonSyntax" flag and passing a callable type that has a `ParamSpec` but no additional concatenated parameters. This addresses https://github.com/microsoft/pyright/issues/4932. --- packages/pyright-internal/src/analyzer/typePrinter.ts | 10 +++++++--- .../pyright-internal/src/tests/typePrinter.test.ts | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index 0664b75c2..70399b576 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -621,9 +621,13 @@ function printFunctionType( }); if (type.details.paramSpec) { - return `Callable[Concatenate[${paramTypes.join(', ')}, ${ - type.details.paramSpec.details.name - }], ${returnTypeString}]`; + if (paramTypes.length > 0) { + return `Callable[Concatenate[${paramTypes.join(', ')}, ${ + type.details.paramSpec.details.name + }], ${returnTypeString}]`; + } + + return `Callable[${type.details.paramSpec.details.name}, ${returnTypeString}]`; } return `Callable[[${paramTypes.join(', ')}], ${returnTypeString}]`; diff --git a/packages/pyright-internal/src/tests/typePrinter.test.ts b/packages/pyright-internal/src/tests/typePrinter.test.ts index c74734070..d9d5fb6e6 100644 --- a/packages/pyright-internal/src/tests/typePrinter.test.ts +++ b/packages/pyright-internal/src/tests/typePrinter.test.ts @@ -200,4 +200,12 @@ test('FunctionTypes', () => { '(*args: Unpack[Ts]) -> Unknown' ); assert.strictEqual(printType(funcTypeC, PrintTypeFlags.PythonSyntax, returnTypeCallback), 'Callable[..., Any]'); + + const funcTypeD = FunctionType.createInstance('D', '', '', FunctionTypeFlags.None); + + funcTypeD.details.paramSpec = paramSpecP; + funcTypeD.details.declaredReturnType = NoneType.createInstance(); + + assert.strictEqual(printType(funcTypeD, PrintTypeFlags.None, returnTypeCallback), '(**P) -> None'); + assert.strictEqual(printType(funcTypeD, PrintTypeFlags.PythonSyntax, returnTypeCallback), 'Callable[P, None]'); }); From eb98cdda4ecfb4d2ce2fb1d4b9ce7848ab439c32 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 11 Apr 2023 00:10:06 -0700 Subject: [PATCH 025/525] Changed typePrinter option `OmitTypeArgumentsIfAny` to `OmitTypeArgumentsIfUnknown`. Exposed this flag and `printUnknownWithAny` from the type evaluator. This addresses https://github.com/microsoft/pyright/issues/4933. (#4937) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/program.ts | 4 +-- .../src/analyzer/typeEvaluator.ts | 6 ++++ .../src/analyzer/typeEvaluatorTypes.ts | 2 ++ .../src/analyzer/typePrinter.ts | 35 ++++++++++--------- .../src/common/configOptions.ts | 10 +++--- 5 files changed, 33 insertions(+), 24 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 080dd7c83..c7ece34ee 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -870,8 +870,8 @@ export class Program { flags |= PrintTypeFlags.OmitConditionalConstraint; } - if (configOptions.diagnosticRuleSet.omitTypeArgsIfAny) { - flags |= PrintTypeFlags.OmitTypeArgumentsIfAny; + if (configOptions.diagnosticRuleSet.omitTypeArgsIfUnknown) { + flags |= PrintTypeFlags.OmitTypeArgumentsIfUnknown; } if (configOptions.diagnosticRuleSet.omitUnannotatedParamType) { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d71d56c35..884aa8168 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -26206,6 +26206,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (options?.useTypingUnpack) { flags |= TypePrinter.PrintTypeFlags.UseTypingUnpack; } + if (options?.printUnknownWithAny) { + flags |= TypePrinter.PrintTypeFlags.PrintUnknownWithAny; + } + if (options?.omitTypeArgumentsIfUnknown) { + flags |= TypePrinter.PrintTypeFlags.OmitTypeArgumentsIfUnknown; + } return TypePrinter.printType(type, flags, getFunctionEffectiveReturnType); } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 5a80c7721..6e6a3a45c 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -343,6 +343,8 @@ export interface PrintTypeOptions { expandTypeAlias?: boolean; enforcePythonSyntax?: boolean; useTypingUnpack?: boolean; + printUnknownWithAny?: boolean; + omitTypeArgumentsIfUnknown?: boolean; } export interface DeclaredSymbolTypeInfo { diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index 70399b576..c0068b254 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -22,6 +22,7 @@ import { isParamSpec, isTypeSame, isTypeVar, + isUnknown, isUnpacked, isVariadicTypeVar, maxTypeRecursionCount, @@ -43,8 +44,8 @@ export const enum PrintTypeFlags { // Avoid printing "Unknown" and always use "Any" instead. PrintUnknownWithAny = 1 << 0, - // Omit type arguments for generic classes if they are "Any". - OmitTypeArgumentsIfAny = 1 << 1, + // Omit type arguments for generic classes if they are "Unknown". + OmitTypeArgumentsIfUnknown = 1 << 1, // Omit printing type for param if type is not specified. OmitUnannotatedParamType = 1 << 2, @@ -122,8 +123,8 @@ export function printType( // If there is a type arguments array, it's a specialized type alias. if (type.typeAliasInfo.typeArguments) { if ( - (printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfAny) === 0 || - type.typeAliasInfo.typeArguments.some((typeArg) => !isAnyOrUnknown(typeArg)) + (printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfUnknown) === 0 || + type.typeAliasInfo.typeArguments.some((typeArg) => !isUnknown(typeArg)) ) { argumentStrings = []; type.typeAliasInfo.typeArguments.forEach((typeArg, index) => { @@ -164,8 +165,8 @@ export function printType( } } else { if ( - (printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfAny) === 0 || - typeParams.some((typeParam) => !isAnyOrUnknown(typeParam)) + (printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfUnknown) === 0 || + typeParams.some((typeParam) => !isUnknown(typeParam)) ) { argumentStrings = []; typeParams.forEach((typeParam) => { @@ -745,7 +746,7 @@ export function printObjectTypeForClass( // Handle Tuple[()] as a special case. if (typeArgs.length > 0) { const typeArgStrings: string[] = []; - let isAllAny = true; + let isAllUnknown = true; typeArgs.forEach((typeArg, index) => { const typeParam = index < typeParams.length ? typeParams[index] : undefined; @@ -758,8 +759,8 @@ export function printObjectTypeForClass( ) { // Expand the tuple type that maps to the variadic type parameter. if (typeArg.type.tupleTypeArguments.length === 0) { - if (!isAnyOrUnknown(typeArg.type)) { - isAllAny = false; + if (!isUnknown(typeArg.type)) { + isAllUnknown = false; } if (index === 0) { @@ -768,8 +769,8 @@ export function printObjectTypeForClass( } else { typeArgStrings.push( ...typeArg.type.tupleTypeArguments.map((typeArg) => { - if (!isAnyOrUnknown(typeArg.type)) { - isAllAny = false; + if (!isUnknown(typeArg.type)) { + isAllUnknown = false; } const typeArgText = printType( @@ -789,8 +790,8 @@ export function printObjectTypeForClass( ); } } else { - if (!isAnyOrUnknown(typeArg.type)) { - isAllAny = false; + if (!isUnknown(typeArg.type)) { + isAllUnknown = false; } const typeArgTypeText = printType( @@ -817,7 +818,7 @@ export function printObjectTypeForClass( objName = _printUnpack(objName, printTypeFlags); } - if ((printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfAny) === 0 || !isAllAny) { + if ((printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfUnknown) === 0 || !isAllUnknown) { objName += '[' + typeArgStrings.join(', ') + ']'; } } else { @@ -836,8 +837,8 @@ export function printObjectTypeForClass( if (typeParams.length > 0) { if ( - (printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfAny) === 0 || - typeParams.some((typeParam) => !isAnyOrUnknown(typeParam)) + (printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfUnknown) === 0 || + typeParams.some((typeParam) => !isUnknown(typeParam)) ) { objName += '[' + @@ -979,7 +980,7 @@ export function printFunctionParts( // PEP8 indicates that the "=" for the default value should have surrounding // spaces when used with a type annotation. defaultValueAssignment = ' = '; - } else if ((printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfAny) === 0) { + } else if ((printTypeFlags & PrintTypeFlags.OmitTypeArgumentsIfUnknown) === 0) { if (!param.isNameSynthesized) { paramString += ': '; } diff --git a/packages/pyright-internal/src/common/configOptions.ts b/packages/pyright-internal/src/common/configOptions.ts index d66b4ee91..27546e827 100644 --- a/packages/pyright-internal/src/common/configOptions.ts +++ b/packages/pyright-internal/src/common/configOptions.ts @@ -76,8 +76,8 @@ export interface DiagnosticRuleSet { printUnknownAsAny: boolean; // Should type arguments to a generic class be omitted - // when printed if all arguments are Unknown or Any? - omitTypeArgsIfAny: boolean; + // when printed if all arguments are Unknown? + omitTypeArgsIfUnknown: boolean; // Should parameter type be omitted if it is not annotated? omitUnannotatedParamType: boolean; @@ -421,7 +421,7 @@ export function getStrictModeNotOverriddenRules() { export function getOffDiagnosticRuleSet(): DiagnosticRuleSet { const diagSettings: DiagnosticRuleSet = { printUnknownAsAny: true, - omitTypeArgsIfAny: true, + omitTypeArgsIfUnknown: true, omitUnannotatedParamType: true, omitConditionalConstraint: true, pep604Printing: true, @@ -503,7 +503,7 @@ export function getOffDiagnosticRuleSet(): DiagnosticRuleSet { export function getBasicDiagnosticRuleSet(): DiagnosticRuleSet { const diagSettings: DiagnosticRuleSet = { printUnknownAsAny: false, - omitTypeArgsIfAny: false, + omitTypeArgsIfUnknown: false, omitUnannotatedParamType: true, omitConditionalConstraint: false, pep604Printing: true, @@ -585,7 +585,7 @@ export function getBasicDiagnosticRuleSet(): DiagnosticRuleSet { export function getStrictDiagnosticRuleSet(): DiagnosticRuleSet { const diagSettings: DiagnosticRuleSet = { printUnknownAsAny: false, - omitTypeArgsIfAny: false, + omitTypeArgsIfUnknown: false, omitUnannotatedParamType: false, omitConditionalConstraint: false, pep604Printing: true, From 6b50a9b713b8d7b2024d3c0189e2f2ce97dfb39e Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Tue, 11 Apr 2023 12:23:03 -0700 Subject: [PATCH 026/525] Push pylance changes to pyright (#4939) --- .../pyright-internal/src/analyzer/program.ts | 106 +++++-- .../src/languageService/autoImporter.ts | 4 +- .../src/languageService/completionProvider.ts | 260 +++++++++++------- .../src/tests/completions.test.ts | 87 ++++++ .../completions.override2.fourslash.ts | 2 +- .../src/tests/moveSymbol.insertion.test.ts | 33 ++- 6 files changed, 360 insertions(+), 132 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index c7ece34ee..0e744a2f4 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -84,12 +84,13 @@ import { ReferenceCallback, ReferencesResult } from '../languageService/referenc import { RenameModuleProvider } from '../languageService/renameModuleProvider'; import { SignatureHelpResults } from '../languageService/signatureHelpProvider'; import { ParseNodeType } from '../parser/parseNodes'; +import { StatementNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { AbsoluteModuleDescriptor, ImportLookupResult } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { CacheManager } from './cacheManager'; import { CircularDependency } from './circularDependency'; -import { Declaration, DeclarationType } from './declaration'; +import { Declaration, DeclarationType, isVariableDeclaration } from './declaration'; import { ImportResolver } from './importResolver'; import { ImportResult, ImportType } from './importResult'; import { @@ -989,8 +990,10 @@ export class Program { return; } - // sourceFile.parse should never be called directly. Otherwise, whole dependency graph maintained - // by program will be broken. Use _parseFile instead. + // SourceFile.parse should only be called here in the program, as calling it + // elsewhere could break the entire dependency graph maintained by the program. + // Other parts of the program should use _parseFile to create ParseResults from + // the sourceFile. For standalone parseResults, use parseFile or the Parser directly. if (fileToParse.sourceFile.parse(this._configOptions, this._importResolver, content)) { this._parsedFileCount++; this._updateSourceFileImports(fileToParse, this._configOptions); @@ -1202,14 +1205,36 @@ export class Program { // level scope that contains the symbol table for the module. private _buildModuleSymbolsMap( sourceFileToExclude: SourceFileInfo, - userFileOnly: boolean, - includeIndexUserSymbols: boolean, + libraryMap: Map | undefined, + includeSymbolsFromIndices: boolean, token: CancellationToken ): ModuleSymbolMap { + // If we have library map, always use the map for library symbols. + const predicate = (s: SourceFileInfo) => { + if (!libraryMap) { + // We don't have any prebuilt indices, so we need to include + // all files. + return true; + } + + if (!this._configOptions.indexing) { + // We have some prebuilt indices such as stdlib, but indexing is disabled. + // Include files we don't have prebuilt indices. + return libraryMap.get(s.sourceFile.getFilePath()) === undefined; + } + + // We have prebuilt indices for third party libraries. Include only + // user files. + return isUserCode(s); + }; + + // Only include import alias from user files if indexing is off for now. + // Currently, when indexing is off, we don't do import alias deduplication, so + // adding import alias is cheap. But when indexing is on, we do deduplication, which // require resolveAliasDeclaration that can cause more files to be parsed and bound. return buildModuleSymbolsMap( - this._sourceFileList.filter((s) => s !== sourceFileToExclude && (userFileOnly ? isUserCode(s) : true)), - includeIndexUserSymbols, + this._sourceFileList.filter((s) => s !== sourceFileToExclude && predicate(s)), + includeSymbolsFromIndices, token ); } @@ -1546,8 +1571,8 @@ export class Program { const writtenWord = fileContents.substr(textRange.start, textRange.length); const map = this._buildModuleSymbolsMap( sourceFileInfo, - !!options.libraryMap, - /* includeIndexUserSymbols */ true, + options.libraryMap, + /* includeSymbolsFromIndices */ true, token ); @@ -1985,7 +2010,7 @@ export class Program { () => this._buildModuleSymbolsMap( sourceFileInfo, - !!libraryMap, + libraryMap, options.includeUserSymbolsInAutoImport, token ), @@ -2058,7 +2083,7 @@ export class Program { () => this._buildModuleSymbolsMap( sourceFileInfo, - !!libraryMap, + libraryMap, options.includeUserSymbolsInAutoImport, token ), @@ -2242,7 +2267,7 @@ export class Program { // If we are adding at the end of line (ex, end of a file), // add new lines. - const newLinesToAdd = _getNumberOfBlankLinesToInsert(newFileParseResults, range.end); + const newLinesToAdd = _getNumberOfBlankLinesToInsert(newFileParseResults, sourceDecl, range.end); codeSnippetToInsert = '\n'.repeat(newLinesToAdd) + codeSnippetToInsert; renameModuleProvider.textEditTracker.addEdit(newFilePath, range, codeSnippetToInsert); @@ -2466,21 +2491,58 @@ export class Program { }); } - function _getNumberOfBlankLinesToInsert(parseResults: ParseResults, position: Position) { - // This basically try to add 2 blanks lines before previous line with text. + function _getNumberOfBlankLinesToInsert(parseResults: ParseResults, decl: Declaration, position: Position) { if (position.line === 0 && position.character === 0) { return 0; } - const linesToAdd = - position.line > 0 && isBlankLine(parseResults, position.line - 1) - ? position.line > 1 && isBlankLine(parseResults, position.line - 2) - ? 0 - : 1 - : 2; + let previousStatement: StatementNode | undefined; + const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); + if (offset && parseResults.parseTree.statements.length > 0) { + previousStatement = parseResults.parseTree.statements.reduce((prev, curr) => + offset < curr.start ? prev : curr + ); + } + + // This basically try to add some blank lines after the last line with text. + let linesToAdd = 0; + if (previousStatement) { + if (isVariableDeclaration(decl)) { + switch (previousStatement.nodeType) { + case ParseNodeType.StatementList: + // Small statement such as call, assignment, etc. + linesToAdd = 0; + break; + case ParseNodeType.Class: + case ParseNodeType.Function: + linesToAdd = 2; + break; + default: + // any other statement such as if, while, etc. we will add 1 blank line. + linesToAdd = 1; + } + } else { + linesToAdd = 2; + } + } + + // If the position is not at the beginning of the line, we need to add 1 more '\n' + // to start from blank line. + linesToAdd += position.character !== 0 ? 1 : 0; + + // If there are already blank lines, we only add the difference. + const desiredBlankLines = linesToAdd; + const startingLine = position.character !== 0 ? position.line : position.line - 1; + for (let i = 0; i < desiredBlankLines; i++) { + const currentLine = startingLine - i; + if (currentLine < 0 || !isBlankLine(parseResults, currentLine)) { + break; + } + + linesToAdd--; + } - // Add one more line for the line that position is on if it is not blank. - return position.character !== 0 ? linesToAdd + 1 : linesToAdd; + return linesToAdd; } } diff --git a/packages/pyright-internal/src/languageService/autoImporter.ts b/packages/pyright-internal/src/languageService/autoImporter.ts index 7525bb721..40c68f648 100644 --- a/packages/pyright-internal/src/languageService/autoImporter.ts +++ b/packages/pyright-internal/src/languageService/autoImporter.ts @@ -106,7 +106,7 @@ type AutoImportResultMap = Map; // level scope that contains the symbol table for the module. export function buildModuleSymbolsMap( files: SourceFileInfo[], - includeIndexUserSymbols: boolean, + includeSymbolsFromIndices: boolean, token: CancellationToken ): ModuleSymbolMap { const moduleSymbolMap = new Map(); @@ -169,7 +169,7 @@ export function buildModuleSymbolsMap( // Iterate through closed user files using indices if asked. const indexResults = file.sourceFile.getCachedIndexResults(); - if (indexResults && includeIndexUserSymbols && !indexResults.privateOrProtected) { + if (indexResults && includeSymbolsFromIndices && !indexResults.privateOrProtected) { moduleSymbolMap.set(filePath, createModuleSymbolTableFromIndexResult(indexResults, /* library */ false)); return; } diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 97f8debd8..121744d2d 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -62,8 +62,10 @@ import { TypeCategory, } from '../analyzer/types'; import { + ClassMember, ClassMemberLookupFlags, doForEachSubtype, + getClassFieldsRecursive, getDeclaringModulesForType, getMembersForClass, getMembersForModule, @@ -1200,90 +1202,107 @@ export class CompletionProvider { return undefined; } - const symbolTable = new Map(); - for (let i = 1; i < classResults.classType.details.mro.length; i++) { - const mroClass = classResults.classType.details.mro[i]; - if (isInstantiableClass(mroClass)) { - getMembersForClass(mroClass, symbolTable, /* includeInstanceVars */ false); - } - } - const staticmethod = decorators?.some((d) => this._checkDecorator(d, 'staticmethod')) ?? false; const classmethod = decorators?.some((d) => this._checkDecorator(d, 'classmethod')) ?? false; - const completionMap = new CompletionMap(); + const appendMember = (map: CompletionMap, member: ClassMember, name: string) => { + if ( + !isInstantiableClass(member.classType) || + member.classType.details === classResults.classType.details || + !StringUtils.isPatternInSymbol(partialName.value, name) + ) { + // Quick bail out if member is something we don't want to override. + return; + } - symbolTable.forEach((symbol, name) => { - let decl = getLastTypedDeclaredForSymbol(symbol); - if (decl && decl.type === DeclarationType.Function) { - if (StringUtils.isPatternInSymbol(partialName.value, name)) { - const declaredType = this._evaluator.getTypeForDeclaration(decl)?.type; - if (!declaredType) { - return; - } + const symbol = member.symbol; + const decl = getLastTypedDeclaredForSymbol(symbol); + if (!decl || decl.type !== DeclarationType.Function) { + return; + } - let isProperty = isClassInstance(declaredType) && ClassType.isPropertyClass(declaredType); + const declaredType = this._evaluator.getTypeOfMember(member); + if (!declaredType) { + return; + } - if (SymbolNameUtils.isDunderName(name)) { - // Don't offer suggestions for built-in properties like "__class__", etc. - isProperty = false; - } + const isDeclaredStaticMethod = isFunction(declaredType) && FunctionType.isStaticMethod(declaredType); - if (!isFunction(declaredType) && !isProperty) { - return; - } + // Special-case the "__init__subclass__" method because it's an implicit + // classmethod that the type evaluator flags as a real classmethod. + const isDeclaredClassMethod = + isFunction(declaredType) && FunctionType.isClassMethod(declaredType) && name !== '__init_subclass__'; - if (isProperty) { - // For properties, we should override the "getter", which is typically - // the first declaration. - const typedDecls = symbol.getTypedDeclarations(); - if (typedDecls.length > 0 && typedDecls[0].type === DeclarationType.Function) { - decl = typedDecls[0]; - } - } + if (staticmethod !== isDeclaredStaticMethod || classmethod !== isDeclaredClassMethod) { + return; + } - const isDeclaredStaticMethod = - isFunction(declaredType) && FunctionType.isStaticMethod(declaredType); + let isProperty = isClassInstance(declaredType) && ClassType.isPropertyClass(declaredType); + if (SymbolNameUtils.isDunderName(name)) { + // Don't offer suggestions for built-in properties like "__class__", etc. + isProperty = false; + } - // Special-case the "__init__subclass__" method because it's an implicit - // classmethod that the type evaluator flags as a real classmethod. - const isDeclaredClassMethod = - isFunction(declaredType) && - FunctionType.isClassMethod(declaredType) && - name !== '__init_subclass__'; + let funcType: FunctionType | undefined = undefined; + if (isFunction(declaredType)) { + funcType = declaredType; + } else if (isProperty) { + const getter = lookUpClassMember(declaredType, 'fget'); + if (!getter) { + return; + } - if (staticmethod !== isDeclaredStaticMethod || classmethod !== isDeclaredClassMethod) { - return; - } + const member = this._evaluator.getTypeOfMember(getter); + if (!isFunction(member)) { + return; + } - const methodSignature = this._printMethodSignature(classResults.classType, decl); + funcType = member; + } - let text: string; - if (isStubFile(this._filePath)) { - text = `${methodSignature}: ...`; - } else { - const methodBody = this._printOverriddenMethodBody( - classResults.classType, - isDeclaredStaticMethod, - isProperty, - decl - ); - text = `${methodSignature}:\n${methodBody}`; - } + if (!funcType || !funcType.details.declaration) { + return; + } - const textEdit = this._createReplaceEdits(priorWord, partialName, text); + const methodSignature = this._printMethodSignature(classResults.classType, funcType); - this._addSymbol(name, symbol, partialName.value, completionMap, { - // method signature already contains () - funcParensDisabled: true, - edits: { - format: this._options.snippet ? InsertTextFormat.Snippet : undefined, - textEdit, - }, - }); - } + let text: string; + if (isStubFile(this._filePath)) { + text = `${methodSignature}: ...`; + } else { + const methodBody = this._printOverriddenMethodBody( + classResults.classType, + isDeclaredStaticMethod, + isProperty, + decl + ); + text = `${methodSignature}:\n${methodBody}`; } - }); + + const textEdit = this._createReplaceEdits(priorWord, partialName, text); + + this._addSymbol(name, symbol, partialName.value, map, { + // method signature already contains () + funcParensDisabled: true, + edits: { + format: this._options.snippet ? InsertTextFormat.Snippet : undefined, + textEdit, + }, + }); + }; + + const completionMap = new CompletionMap(); + + const classMemberMap = getClassFieldsRecursive(classResults.classType); + classMemberMap.forEach((member, name) => appendMember(completionMap, member, name)); + + if ( + classResults.classType.details.effectiveMetaclass && + !isUnknown(classResults.classType.details.effectiveMetaclass) + ) { + const metaClassMemberMap = getClassFieldsRecursive(classResults.classType.details.effectiveMetaclass); + metaClassMemberMap.forEach((member, name) => appendMember(completionMap, member, name)); + } return { completionMap }; } @@ -1302,8 +1321,8 @@ export class CompletionProvider { return TextEdit.replace(range, text); } - private _printMethodSignature(classType: ClassType, decl: FunctionDeclaration): string { - const node = decl.node; + private _printMethodSignature(classType: ClassType, funcType: FunctionType): string { + const decl = funcType.details.declaration!; let ellipsisForDefault: boolean | undefined; if (isStubFile(this._filePath)) { @@ -1319,49 +1338,84 @@ export class CompletionProvider { ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength : ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength; - const paramList = node.parameters - .map((param, index) => { - let paramString = ''; - if (param.category === ParameterCategory.VarArgList) { - paramString += '*'; - } else if (param.category === ParameterCategory.VarArgDictionary) { - paramString += '**'; - } + const getTypeToPrint = (mainType: Type | undefined, fallbackType: T) => { + return mainType && (!isUnknown(mainType) || fallbackType?.category === TypeCategory.TypeVar) + ? mainType + : fallbackType; + }; - if (param.name) { - paramString += param.name.value; - } + const paramList = funcType.details.parameters.map((param, index) => { + let paramString = ''; + if (param.category === ParameterCategory.VarArgList) { + paramString += '*'; + } else if (param.category === ParameterCategory.VarArgDictionary) { + paramString += '**'; + } - // Currently, we don't automatically add import if the type used in the annotation is not imported - // in current file. - const paramTypeAnnotation = ParseTreeUtils.getTypeAnnotationForParameter(node, index); - if (paramTypeAnnotation) { - paramString += ': ' + ParseTreeUtils.printExpression(paramTypeAnnotation, printFlags); - } + if (param.name) { + paramString += param.name; + } - if (param.defaultValue) { - paramString += paramTypeAnnotation ? ' = ' : '='; + // Currently, we don't automatically add import if the type used in the annotation is not imported + // in current file. + if (param.typeAnnotation) { + const typeToPrint = getTypeToPrint( + FunctionType.getEffectiveParameterType(funcType, index), + funcType.details.parameters[index].type + ); - const useEllipsis = ellipsisForDefault ?? !isSimpleDefault(param.defaultValue); - paramString += useEllipsis ? '...' : ParseTreeUtils.printExpression(param.defaultValue, printFlags); - } + paramString += + ': ' + + this._evaluator.printType(typeToPrint, { + enforcePythonSyntax: true, + expandTypeAlias: false, + }); + } - if (!paramString && !param.name && param.category === ParameterCategory.Simple) { - return '/'; - } + if (param.defaultValueExpression) { + paramString += param.typeAnnotation ? ' = ' : '='; + + const useEllipsis = ellipsisForDefault ?? !isSimpleDefault(param.defaultValueExpression); + paramString += useEllipsis + ? '...' + : ParseTreeUtils.printExpression(param.defaultValueExpression, printFlags); + } + + if ( + !paramString && + !param.name && + param.category === ParameterCategory.Simple && + index < funcType.details.parameters.length - 1 + ) { + return '/'; + } + + return paramString; + }); + + // Remove empty parameters at the end. + for (let i = paramList.length - 1; i >= 0; i--) { + if (paramList[i] !== '') { + break; + } - return paramString; - }) - .join(', '); + paramList.pop(); + } - let methodSignature = node.name.value + '(' + paramList + ')'; + let methodSignature = funcType.details.name + '(' + paramList.join(', ') + ')'; - if (node.returnTypeAnnotation) { - methodSignature += ' -> ' + ParseTreeUtils.printExpression(node.returnTypeAnnotation, printFlags); - } else if (node.functionAnnotationComment) { + const typeToPrint = getTypeToPrint( + FunctionType.getSpecializedReturnType(funcType), + funcType.details.declaredReturnType + ); + + if (typeToPrint && (decl.node.returnTypeAnnotation || decl.node.functionAnnotationComment)) { methodSignature += ' -> ' + - ParseTreeUtils.printExpression(node.functionAnnotationComment.returnTypeAnnotation, printFlags); + this._evaluator.printType(typeToPrint, { + enforcePythonSyntax: true, + expandTypeAlias: false, + }); } return methodSignature; diff --git a/packages/pyright-internal/src/tests/completions.test.ts b/packages/pyright-internal/src/tests/completions.test.ts index 1d6ae546b..62e547f83 100644 --- a/packages/pyright-internal/src/tests/completions.test.ts +++ b/packages/pyright-internal/src/tests/completions.test.ts @@ -920,3 +920,90 @@ test('auto import sort text', async () => { assert(!items[0].labelDetails); assert.strictEqual(items[1].labelDetails!.description, 'vendored'); }); + +test('override generic', async () => { + const code = ` +// @filename: test.py +//// from typing import Generic, TypeVar +//// from typing_extensions import override +//// +//// T = TypeVar('T') +//// class A(Generic[T]): +//// def foo(self, x: list[T]) -> T: +//// return x +//// +//// class B(A[int]): +//// @override +//// def [|foo/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', 'markdown', { + ['marker']: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker'), + newText: 'foo(self, x: list[int]) -> int:\n return super().foo(x)', + }, + }, + ], + }, + }); +}); + +test('override generic nested', async () => { + const code = ` +// @filename: test.py +//// from typing import Generic, TypeVar +//// from typing_extensions import override +//// +//// T = TypeVar('T') +//// T2 = TypeVar('T2') +//// class A(Generic[T, T2]): +//// def foo(self, x: tuple[T, T2]) -> T: +//// return x +//// +//// +//// T3 = TypeVar('T3') +//// class B(A[int, T3]): +//// @override +//// def [|foo/*marker1*/|] +//// +//// class C(B[int]): +//// @override +//// def [|foo/*marker2*/|] + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', 'markdown', { + ['marker1']: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker1'), + newText: 'foo(self, x: tuple[int, T3]) -> int:\n return super().foo(x)', + }, + }, + ], + }, + ['marker2']: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker2'), + newText: 'foo(self, x: tuple[int, int]) -> int:\n return super().foo(x)', + }, + }, + ], + }, + }); +}); diff --git a/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts index 93ad34a4b..2476c7267 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts @@ -32,7 +32,7 @@ kind: Consts.CompletionItemKind.Method, textEdit: { range: helper.getPositionRange('marker'), - newText: 'append(self, __object: _T) -> None:\n return super().append(__object)', + newText: 'append(self, __object: Any) -> None:\n return super().append(__object)', }, }, ], diff --git a/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts b/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts index 4189c7ba8..dc5177155 100644 --- a/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts +++ b/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts @@ -118,7 +118,7 @@ test('insert to empty file with comments', () => { // @filename: moved.py //// # comment -//// [|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] +//// [|{|"r":"!n!def foo():!n! pass", "name": "dest"|}|] `; testFromCode(code); @@ -132,7 +132,7 @@ test('insert to empty file with comments and blank lines', () => { // @filename: moved.py //// # comment -//// [|{|"r":"!n!!n!def foo():!n! pass", "name": "dest"|}|] +//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] //// `; @@ -317,7 +317,7 @@ test('insert to a file with same symbol imported with alias', () => { // @filename: moved.py //// [|{|"r":""|}from test import foo as aliasFoo //// |] -//// aliasFoo()[|{|"r":"!n!!n!def foo():!n! pass", "name": "dest"|}|] +//// aliasFoo()[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] `; testFromCode(code); @@ -569,7 +569,7 @@ test('insert after comment', () => { //// [|{|"r":""|}[|/*marker*/b|] = 3|] // @filename: moved.py -//// a = 1 # type: ignore[|{|"r":"!n!!n!!n!b = 3", "name": "dest"|}|] +//// a = 1 # type: ignore[|{|"r":"!n!b = 3", "name": "dest"|}|] `; testFromCode(code); @@ -588,6 +588,31 @@ test('keep comments', () => { testFromCode(code); }); +test('statement list', () => { + const code = ` +// @filename: test.py +//// [|{|"r":""|}[|/*marker*/a|] = 1|] + +// @filename: moved.py +//// print("hello")[|{|"r":"!n!a = 1", "name": "dest"|}|] + `; + + testFromCode(code); +}); + +test('regular statement', () => { + const code = ` +// @filename: test.py +//// [|{|"r":""|}[|/*marker*/a|] = 1|] + +// @filename: moved.py +//// if True: +//// pass[|{|"r":"!n!!n!a = 1", "name": "dest"|}|] + `; + + testFromCode(code); +}); + function testFromCode(code: string) { const state = parseAndGetTestState(code).state; From 02041847ee59a7cf54e77a1f8bd8d57392ec655f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 11 Apr 2023 20:25:28 -0700 Subject: [PATCH 027/525] Published 1.1.303 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 535c47d11..5d0c65cda 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.302", + "version": "1.1.303", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 8ef08506f..23d8e8008 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.302", + "version": "1.1.303", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.302", + "version": "1.1.303", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index ef96cb1d6..78fb57b79 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.302", + "version": "1.1.303", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index bc77117ce..ebd4a770d 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.302", + "version": "1.1.303", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.302", + "version": "1.1.303", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index d7312cc56..7691364fd 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.302", + "version": "1.1.303", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 00e689376..45b62f9ce 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.302", + "version": "1.1.303", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.302", + "version": "1.1.303", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 3e866e4a7..3810f56e8 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.302", + "version": "1.1.303", "private": true, "license": "MIT", "author": { From 50d44cf9d11f6c14cd0176099e6efcbb1b11da27 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 12 Apr 2023 07:53:40 -0700 Subject: [PATCH 028/525] [PylanceBot] Pull Pylance with Pyright 1.1.303 (#4946) --- .../src/common/fullAccessHost.ts | 15 +- packages/pyright-internal/src/common/host.ts | 13 +- .../src/languageService/completionProvider.ts | 80 +++++--- .../src/tests/completions.test.ts | 178 ++++++++++++++++++ 4 files changed, 261 insertions(+), 25 deletions(-) diff --git a/packages/pyright-internal/src/common/fullAccessHost.ts b/packages/pyright-internal/src/common/fullAccessHost.ts index bd4feee08..5b4b266d8 100644 --- a/packages/pyright-internal/src/common/fullAccessHost.ts +++ b/packages/pyright-internal/src/common/fullAccessHost.ts @@ -7,8 +7,10 @@ */ import * as child_process from 'child_process'; +import { CancellationToken } from 'vscode-languageserver'; import { PythonPathResult } from '../analyzer/pythonPathUtils'; +import { OperationCanceledException } from './cancellationUtils'; import { PythonPlatform } from './configOptions'; import { assertNever } from './debug'; import { FileSystem } from './fileSystem'; @@ -129,26 +131,37 @@ export class FullAccessHost extends LimitedAccessHost { pythonPath: string | undefined, script: string, args: string[], - cwd: string + cwd: string, + token: CancellationToken ): Promise { // What to do about conda here? return new Promise<{ stdout: string; stderr: string }>((resolve, reject) => { let stdout = ''; let stderr = ''; const commandLineArgs = [script, ...args]; + const child = this._executePythonInterpreter(pythonPath, (p) => child_process.spawn(p, commandLineArgs, { cwd }) ); + const tokenWatch = token.onCancellationRequested(() => { + if (child) { + child.kill(); + } + reject(new OperationCanceledException()); + }); if (child) { child.stdout.on('data', (d) => (stdout = stdout.concat(d))); child.stderr.on('data', (d) => (stderr = stderr.concat(d))); child.on('error', (e) => { + tokenWatch.dispose(); reject(e); }); child.on('exit', () => { + tokenWatch.dispose(); resolve({ stdout, stderr }); }); } else { + tokenWatch.dispose(); reject(new Error(`Cannot start python interpreter with script ${script}`)); } }); diff --git a/packages/pyright-internal/src/common/host.ts b/packages/pyright-internal/src/common/host.ts index f8d887460..133c67c33 100644 --- a/packages/pyright-internal/src/common/host.ts +++ b/packages/pyright-internal/src/common/host.ts @@ -6,6 +6,8 @@ * Provides access to the host environment the language service is running on. */ +import { CancellationToken } from 'vscode-languageserver'; + import { PythonPathResult } from '../analyzer/pythonPathUtils'; import { PythonPlatform } from './configOptions'; import { PythonVersion } from './pythonVersion'; @@ -26,7 +28,13 @@ export interface Host { getPythonSearchPaths(pythonPath?: string, logInfo?: string[]): PythonPathResult; getPythonVersion(pythonPath?: string, logInfo?: string[]): PythonVersion | undefined; getPythonPlatform(logInfo?: string[]): PythonPlatform | undefined; - runScript(pythonPath: string | undefined, script: string, args: string[], cwd: string): Promise; + runScript( + pythonPath: string | undefined, + script: string, + args: string[], + cwd: string, + token: CancellationToken + ): Promise; } export class NoAccessHost implements Host { @@ -55,7 +63,8 @@ export class NoAccessHost implements Host { pythonPath: string | undefined, scriptPath: string, args: string[], - cwd: string + cwd: string, + token: CancellationToken ): Promise { return { stdout: '', stderr: '' }; } diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 121744d2d..e2393f64b 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -43,7 +43,7 @@ import * as SymbolNameUtils from '../analyzer/symbolNameUtils'; import { getLastTypedDeclaredForSymbol, isVisibleExternally } from '../analyzer/symbolUtils'; import { getTypedDictMembersForClass } from '../analyzer/typedDicts'; import { getModuleDocStringFromPaths } from '../analyzer/typeDocStringUtils'; -import { CallSignatureInfo, TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; +import { CallSignatureInfo, PrintTypeOptions, TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { printLiteralValue } from '../analyzer/typePrinter'; import { ClassType, @@ -1333,11 +1333,18 @@ export class CompletionProvider { ellipsisForDefault = false; } - const printFlags = isStubFile(this._filePath) + const printOptionsUsingSyntax = isStubFile(this._filePath) ? ParseTreeUtils.PrintExpressionFlags.ForwardDeclarations | ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength : ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength; + const printOptionsUsingType: PrintTypeOptions = { + enforcePythonSyntax: true, + expandTypeAlias: false, + omitTypeArgumentsIfUnknown: true, + printUnknownWithAny: true, + }; + const getTypeToPrint = (mainType: Type | undefined, fallbackType: T) => { return mainType && (!isUnknown(mainType) || fallbackType?.category === TypeCategory.TypeVar) ? mainType @@ -1359,17 +1366,18 @@ export class CompletionProvider { // Currently, we don't automatically add import if the type used in the annotation is not imported // in current file. if (param.typeAnnotation) { + const originalType = funcType.details.parameters[index].type; const typeToPrint = getTypeToPrint( FunctionType.getEffectiveParameterType(funcType, index), - funcType.details.parameters[index].type + originalType ); - paramString += - ': ' + - this._evaluator.printType(typeToPrint, { - enforcePythonSyntax: true, - expandTypeAlias: false, - }); + // If we have actual type, then use type to generate string representation of the type, otherwise, use syntax (text). + const strType = isTypeUsableForPrint(typeToPrint, originalType) + ? this._evaluator.printType(typeToPrint, printOptionsUsingType) + : ParseTreeUtils.printExpression(param.typeAnnotation, printOptionsUsingSyntax); + + paramString += ': ' + strType; } if (param.defaultValueExpression) { @@ -1378,7 +1386,7 @@ export class CompletionProvider { const useEllipsis = ellipsisForDefault ?? !isSimpleDefault(param.defaultValueExpression); paramString += useEllipsis ? '...' - : ParseTreeUtils.printExpression(param.defaultValueExpression, printFlags); + : ParseTreeUtils.printExpression(param.defaultValueExpression, printOptionsUsingSyntax); } if ( @@ -1404,22 +1412,50 @@ export class CompletionProvider { let methodSignature = funcType.details.name + '(' + paramList.join(', ') + ')'; - const typeToPrint = getTypeToPrint( - FunctionType.getSpecializedReturnType(funcType), - funcType.details.declaredReturnType - ); - - if (typeToPrint && (decl.node.returnTypeAnnotation || decl.node.functionAnnotationComment)) { - methodSignature += - ' -> ' + - this._evaluator.printType(typeToPrint, { - enforcePythonSyntax: true, - expandTypeAlias: false, - }); + const strReturnType = getReturnTypeStr(this._evaluator, funcType, printOptionsUsingSyntax); + if (strReturnType) { + methodSignature += ' -> ' + strReturnType; } return methodSignature; + function getReturnTypeStr( + evaluator: TypeEvaluator, + funcType: FunctionType, + printFlags: ParseTreeUtils.PrintExpressionFlags + ) { + const originalType = funcType.details.declaredReturnType; + const typeToPrint = getTypeToPrint(FunctionType.getSpecializedReturnType(funcType), originalType); + + const node = funcType.details.declaration!.node; + if (!node.returnTypeAnnotation && !node.functionAnnotationComment) { + return undefined; + } + + if (typeToPrint && isTypeUsableForPrint(typeToPrint, originalType)) { + return evaluator.printType(typeToPrint, printOptionsUsingType); + } + + if (node.returnTypeAnnotation) { + return ParseTreeUtils.printExpression(node.returnTypeAnnotation, printFlags); + } + + if (node.functionAnnotationComment) { + return ParseTreeUtils.printExpression(node.functionAnnotationComment.returnTypeAnnotation, printFlags); + } + + return undefined; + } + + function isTypeUsableForPrint(effectiveType: Type | undefined, originalType: Type | undefined) { + if (!effectiveType) { + return false; + } + + // If original type was `TypeVar`, we want to use `Unknown` as `Any` + return !isUnknown(effectiveType) || originalType?.category === TypeCategory.TypeVar; + } + function isSimpleDefault(node: ExpressionNode): boolean { switch (node.nodeType) { case ParseNodeType.Number: diff --git a/packages/pyright-internal/src/tests/completions.test.ts b/packages/pyright-internal/src/tests/completions.test.ts index 62e547f83..c4ba2410a 100644 --- a/packages/pyright-internal/src/tests/completions.test.ts +++ b/packages/pyright-internal/src/tests/completions.test.ts @@ -1007,3 +1007,181 @@ test('override generic nested', async () => { }, }); }); + +test('override __call__', async () => { + const code = ` +// @filename: test.py +//// from argparse import Action +//// +//// class MyAction(Action): +//// def [|__call__/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', 'markdown', { + ['marker']: { + completions: [ + { + label: '__call__', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker'), + newText: + '__call__(self, parser: ArgumentParser, namespace: Namespace, values: str | Sequence[Any] | None, option_string: str | None = None) -> None:\n return super().__call__(parser, namespace, values, option_string)', + }, + }, + ], + }, + }); +}); + +test('override ParamSpec', async () => { + const code = ` +// @filename: test.py +//// from typing import Callable, ParamSpec +//// +//// P = ParamSpec("P") +//// +//// class A: +//// def foo(self, func: Callable[P, None], *args: P.args, **kwargs: P.kwargs): +//// pass +//// +//// class B(A): +//// def [|foo/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', 'markdown', { + ['marker']: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker'), + newText: + 'foo(self, func: Callable[P, None], *args: P.args, **kwargs: P.kwargs):\n return super().foo(func, *args, **kwargs)', + }, + }, + ], + }, + }); +}); + +test('fallback to syntax', async () => { + const code = ` +// @filename: test.py +//// class A: +//// def foo(self, a: MyType) -> NewMyType: +//// pass +//// +//// class B(A): +//// def [|foo/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', 'markdown', { + ['marker']: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker'), + newText: 'foo(self, a: MyType) -> NewMyType:\n return super().foo(a)', + }, + }, + ], + }, + }); +}); + +test('omit Unknown', async () => { + const code = ` +// @filename: test.py +//// class A: +//// def foo(self, a: list) -> None: +//// pass +//// +//// class B(A): +//// def [|foo/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', 'markdown', { + ['marker']: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker'), + newText: 'foo(self, a: list) -> None:\n return super().foo(a)', + }, + }, + ], + }, + }); +}); + +test('no annotation, no return type', async () => { + const code = ` +// @filename: test.py +//// class A: +//// def foo(self): +//// pass +//// +//// class B(A): +//// def [|foo/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', 'markdown', { + ['marker']: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker'), + newText: 'foo(self):\n return super().foo()', + }, + }, + ], + }, + }); +}); + +test('annotation using comment', async () => { + const code = ` +// @filename: test.py +//// class A: +//// def foo(self, a): # type: (int) -> None +//// pass +//// +//// class B(A): +//// def [|foo/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', 'markdown', { + ['marker']: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker'), + newText: 'foo(self, a: int) -> None:\n return super().foo(a)', + }, + }, + ], + }, + }); +}); From dafc827dea82a4798e65ad4c96c0cd9254c9388d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Apr 2023 09:17:45 -0700 Subject: [PATCH 029/525] Fixed recent regression that led to a false positive error when `useLibraryCodeForTypes` was false and an import of the form `from a.b import c` targeted a namespace package `a.b` that contains a traditional package `c`. This addresses https://github.com/microsoft/pyright/issues/4943. --- packages/pyright-internal/src/analyzer/declarationUtils.ts | 1 + packages/pyright-internal/src/tests/hoverProvider.test.ts | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/declarationUtils.ts b/packages/pyright-internal/src/analyzer/declarationUtils.ts index 4e6f7980c..b8f9308b6 100644 --- a/packages/pyright-internal/src/analyzer/declarationUtils.ts +++ b/packages/pyright-internal/src/analyzer/declarationUtils.ts @@ -274,6 +274,7 @@ export function resolveAliasDeclaration( // when useLibraryCodeForTypes is disabled), b should be evaluated as Unknown, // not as a module. if ( + curDeclaration.path && curDeclaration.submoduleFallback.type === DeclarationType.Alias && curDeclaration.submoduleFallback.path ) { diff --git a/packages/pyright-internal/src/tests/hoverProvider.test.ts b/packages/pyright-internal/src/tests/hoverProvider.test.ts index fb50cb05a..1a8153404 100644 --- a/packages/pyright-internal/src/tests/hoverProvider.test.ts +++ b/packages/pyright-internal/src/tests/hoverProvider.test.ts @@ -307,6 +307,7 @@ test('import symbol tooltip - useLibraryCodeForTypes false', async () => { // @filename: test.py //// from foo import [|/*marker1*/bar|] +//// from bar.baz1 import [|/*marker2*/baz2|] // @filename: foo/__init__.py // @library: true @@ -315,6 +316,10 @@ test('import symbol tooltip - useLibraryCodeForTypes false', async () => { // @filename: foo/bar.py // @library: true //// class bar: ... + +// @filename: bar/baz1/baz2/__init__.py +// @library: true +//// class baz: ... `; const state = parseAndGetTestState(code).state; @@ -323,6 +328,7 @@ test('import symbol tooltip - useLibraryCodeForTypes false', async () => { state.verifyHover('markdown', { marker1: '```python\n(import) bar: Unknown\n```', + marker2: '```python\n(module) baz2\n```', }); }); From 041b8f2856247383bd1eb9d4d8d1346f4ab77249 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 13 Apr 2023 13:35:39 -0700 Subject: [PATCH 030/525] Fixed bug that resulted in incorrect type narrowing for `case` statements that involved sequence patterns when the subject included a recursive type alias. This addresses https://github.com/microsoft/pylance-release/issues/4240. --- .../src/analyzer/patternMatching.ts | 1 + .../src/tests/samples/match11.py | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index b7fad583d..fb50f9b9f 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -182,6 +182,7 @@ function narrowTypeBasedOnSequencePattern( pattern: PatternSequenceNode, isPositiveTest: boolean ): Type { + type = transformPossibleRecursiveTypeAlias(type); let sequenceInfo = getSequencePatternInfo(evaluator, type, pattern.entries.length, pattern.starEntryIndex); // Further narrow based on pattern entry types. diff --git a/packages/pyright-internal/src/tests/samples/match11.py b/packages/pyright-internal/src/tests/samples/match11.py index fb8636b6b..56eccb9f6 100644 --- a/packages/pyright-internal/src/tests/samples/match11.py +++ b/packages/pyright-internal/src/tests/samples/match11.py @@ -1,7 +1,7 @@ # This sample tests the reportUnnecessaryComparison check when applied # to match statements. -from typing import Literal +from typing import Literal, Mapping, Sequence Letters = Literal["A", "B", "C"] @@ -43,3 +43,23 @@ def func2(subj: int | dict[str, str]): # This should generate an error if reportUnnecessaryComparison is enabled. case x: print(x) + + +JsonValue = ( + None | bool | int | float | str | Sequence["JsonValue"] | Mapping[str, "JsonValue"] +) +JsonObject = Mapping[str, JsonValue] + + +def func3(json_object: JsonObject) -> None: + match json_object: + case { + "a": { + "b": [ + { + "c": "d", + } + ], + } + }: + pass From 8c1854fae865c3df5853754fce237069ec77a385 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 14 Apr 2023 11:07:33 -0700 Subject: [PATCH 031/525] Added support for `functools.partial` when the provided function is overloaded. This addresses https://github.com/microsoft/pyright/issues/4954. --- .../src/analyzer/constructorTransform.ts | 294 ++++++++++++------ .../src/tests/samples/partial4.py | 38 +++ .../src/tests/typeEvaluator1.test.ts | 6 + 3 files changed, 248 insertions(+), 90 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/partial4.py diff --git a/packages/pyright-internal/src/analyzer/constructorTransform.ts b/packages/pyright-internal/src/analyzer/constructorTransform.ts index 29074368d..358d0dd39 100644 --- a/packages/pyright-internal/src/analyzer/constructorTransform.ts +++ b/packages/pyright-internal/src/analyzer/constructorTransform.ts @@ -18,7 +18,18 @@ import { getFileInfo } from './analyzerNodeInfo'; import { getParameterListDetails, ParameterSource } from './parameterUtils'; import { Symbol, SymbolFlags } from './symbol'; import { FunctionArgument, FunctionResult, TypeEvaluator } from './typeEvaluatorTypes'; -import { ClassType, FunctionParameter, FunctionType, isClassInstance, isFunction, isTypeSame } from './types'; +import { + ClassType, + FunctionParameter, + FunctionType, + FunctionTypeFlags, + isClassInstance, + isFunction, + isOverloadedFunction, + isTypeSame, + OverloadedFunctionType, + Type, +} from './types'; import { applySolvedTypeVars, convertToInstance, @@ -83,17 +94,114 @@ function applyPartialTransform( // Evaluate the inferred return type if necessary. evaluator.inferReturnTypeIfNecessary(origFunctionType); - // Make sure the first argument is a simple function. - // We don't currently handle overloaded functions. - if (!isFunction(origFunctionType)) { - return result; - } - // We don't currently handle unpacked arguments. if (argList.some((arg) => arg.argumentCategory !== ArgumentCategory.Simple)) { return result; } + // Make sure the first argument is a simple function. + if (isFunction(origFunctionType)) { + const transformResult = applyPartialTransformToFunction( + evaluator, + errorNode, + argList, + callMemberType, + origFunctionType + ); + if (!transformResult) { + return result; + } + + // Create a new copy of the functools.partial class that overrides the __call__ method. + const newPartialClass = ClassType.cloneForSymbolTableUpdate(result.returnType); + newPartialClass.details.fields.set( + '__call__', + Symbol.createWithType(SymbolFlags.ClassMember, transformResult.returnType) + ); + + return { + returnType: newPartialClass, + isTypeIncomplete: result.isTypeIncomplete, + argumentErrors: transformResult.argumentErrors, + }; + } + + if (isOverloadedFunction(origFunctionType)) { + const applicableOverloads: FunctionType[] = []; + let sawArgErrors = false; + + // Apply the partial transform to each of the functions in the overload. + OverloadedFunctionType.getOverloads(origFunctionType).forEach((overload) => { + // Apply the transform to this overload, but don't report errors. + const transformResult = applyPartialTransformToFunction( + evaluator, + /* errorNode */ undefined, + argList, + callMemberType, + overload + ); + + if (transformResult) { + if (transformResult.argumentErrors) { + sawArgErrors = true; + } else if (isFunction(transformResult.returnType)) { + applicableOverloads.push(transformResult.returnType); + } + } + }); + + if (applicableOverloads.length === 0) { + if (sawArgErrors) { + evaluator.addDiagnostic( + getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.noOverload().format({ + name: origFunctionType.overloads[0].details.name, + }), + errorNode + ); + } + + return result; + } + + // Create a new copy of the functools.partial class that overrides the __call__ method. + const newPartialClass = ClassType.cloneForSymbolTableUpdate(result.returnType); + + let synthesizedCallType: Type; + if (applicableOverloads.length === 1) { + synthesizedCallType = applicableOverloads[0]; + } else { + synthesizedCallType = OverloadedFunctionType.create( + // Set the "overloaded" flag for each of the __call__ overloads. + applicableOverloads.map((overload) => + FunctionType.cloneWithNewFlags(overload, overload.details.flags | FunctionTypeFlags.Overloaded) + ) + ); + } + + newPartialClass.details.fields.set( + '__call__', + Symbol.createWithType(SymbolFlags.ClassMember, synthesizedCallType) + ); + + return { + returnType: newPartialClass, + isTypeIncomplete: result.isTypeIncomplete, + argumentErrors: false, + }; + } + + return result; +} + +function applyPartialTransformToFunction( + evaluator: TypeEvaluator, + errorNode: ExpressionNode | undefined, + argList: FunctionArgument[], + partialCallMemberType: FunctionType, + origFunctionType: FunctionType +): FunctionResult | undefined { // Create a map to track which parameters have supplied arguments. const paramMap = new Map(); @@ -131,33 +239,37 @@ function applyPartialTransform( ); if (!evaluator.assignType(paramType, argTypeResult.type, diag, typeVarContext)) { - evaluator.addDiagnostic( - getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.argAssignmentParamFunction().format({ - argType: evaluator.printType(argTypeResult.type), - paramType: evaluator.printType(paramType), - functionName: origFunctionType.details.name, - paramName: paramListDetails.params[paramListDetails.argsIndex].param.name ?? '', - }), - arg.valueExpression ?? errorNode - ); + if (errorNode) { + evaluator.addDiagnostic( + getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.argAssignmentParamFunction().format({ + argType: evaluator.printType(argTypeResult.type), + paramType: evaluator.printType(paramType), + functionName: origFunctionType.details.name, + paramName: paramListDetails.params[paramListDetails.argsIndex].param.name ?? '', + }), + arg.valueExpression ?? errorNode + ); + } argumentErrors = true; } } else { // Don't report multiple positional errors. if (!reportedPositionalError) { - evaluator.addDiagnostic( - getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - paramListDetails.positionParamCount === 1 - ? Localizer.Diagnostic.argPositionalExpectedOne() - : Localizer.Diagnostic.argPositionalExpectedCount().format({ - expected: paramListDetails.positionParamCount, - }), - arg.valueExpression ?? errorNode - ); + if (errorNode) { + evaluator.addDiagnostic( + getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + paramListDetails.positionParamCount === 1 + ? Localizer.Diagnostic.argPositionalExpectedOne() + : Localizer.Diagnostic.argPositionalExpectedCount().format({ + expected: paramListDetails.positionParamCount, + }), + arg.valueExpression ?? errorNode + ); + } } reportedPositionalError = true; @@ -175,17 +287,19 @@ function applyPartialTransform( ); if (!evaluator.assignType(paramType, argTypeResult.type, diag, typeVarContext)) { - evaluator.addDiagnostic( - getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.argAssignmentParamFunction().format({ - argType: evaluator.printType(argTypeResult.type), - paramType: evaluator.printType(paramType), - functionName: origFunctionType.details.name, - paramName, - }), - arg.valueExpression ?? errorNode - ); + if (errorNode) { + evaluator.addDiagnostic( + getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.argAssignmentParamFunction().format({ + argType: evaluator.printType(argTypeResult.type), + paramType: evaluator.printType(paramType), + functionName: origFunctionType.details.name, + paramName, + }), + arg.valueExpression ?? errorNode + ); + } argumentErrors = true; } @@ -202,12 +316,14 @@ function applyPartialTransform( if (!matchingParam) { // Is there a kwargs parameter? if (paramListDetails.kwargsIndex === undefined) { - evaluator.addDiagnostic( - getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.paramNameMissing().format({ name: arg.name.value }), - arg.name - ); + if (errorNode) { + evaluator.addDiagnostic( + getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.paramNameMissing().format({ name: arg.name.value }), + arg.name + ); + } argumentErrors = true; } else { const paramType = FunctionType.getEffectiveParameterType( @@ -223,17 +339,19 @@ function applyPartialTransform( ); if (!evaluator.assignType(paramType, argTypeResult.type, diag, typeVarContext)) { - evaluator.addDiagnostic( - getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.argAssignmentParamFunction().format({ - argType: evaluator.printType(argTypeResult.type), - paramType: evaluator.printType(paramType), - functionName: origFunctionType.details.name, - paramName: paramListDetails.params[paramListDetails.kwargsIndex].param.name ?? '', - }), - arg.valueExpression ?? errorNode - ); + if (errorNode) { + evaluator.addDiagnostic( + getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.argAssignmentParamFunction().format({ + argType: evaluator.printType(argTypeResult.type), + paramType: evaluator.printType(paramType), + functionName: origFunctionType.details.name, + paramName: paramListDetails.params[paramListDetails.kwargsIndex].param.name ?? '', + }), + arg.valueExpression ?? errorNode + ); + } argumentErrors = true; } @@ -243,12 +361,14 @@ function applyPartialTransform( const paramType = FunctionType.getEffectiveParameterType(origFunctionType, matchingParam.index); if (paramMap.has(paramName)) { - evaluator.addDiagnostic( - getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.paramAlreadyAssigned().format({ name: arg.name.value }), - arg.name - ); + if (errorNode) { + evaluator.addDiagnostic( + getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.paramAlreadyAssigned().format({ name: arg.name.value }), + arg.name + ); + } argumentErrors = true; } else { @@ -261,17 +381,19 @@ function applyPartialTransform( ); if (!evaluator.assignType(paramType, argTypeResult.type, diag, typeVarContext)) { - evaluator.addDiagnostic( - getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.argAssignmentParamFunction().format({ - argType: evaluator.printType(argTypeResult.type), - paramType: evaluator.printType(paramType), - functionName: origFunctionType.details.name, - paramName, - }), - arg.valueExpression ?? errorNode - ); + if (errorNode) { + evaluator.addDiagnostic( + getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.argAssignmentParamFunction().format({ + argType: evaluator.printType(argTypeResult.type), + paramType: evaluator.printType(paramType), + functionName: origFunctionType.details.name, + paramName, + }), + arg.valueExpression ?? errorNode + ); + } argumentErrors = true; } @@ -283,7 +405,7 @@ function applyPartialTransform( const specializedFunctionType = applySolvedTypeVars(origFunctionType, typeVarContext); if (!isFunction(specializedFunctionType)) { - return result; + return undefined; } // Create a new parameter list that omits parameters that have been @@ -319,15 +441,15 @@ function applyPartialTransform( // Create a new __call__ method that uses the remaining parameters. const newCallMemberType = FunctionType.createInstance( - callMemberType.details.name, - callMemberType.details.fullName, - callMemberType.details.moduleName, - callMemberType.details.flags, + partialCallMemberType.details.name, + partialCallMemberType.details.fullName, + partialCallMemberType.details.moduleName, + partialCallMemberType.details.flags, specializedFunctionType.details.docString ); - if (callMemberType.details.parameters.length > 0) { - FunctionType.addParameter(newCallMemberType, callMemberType.details.parameters[0]); + if (partialCallMemberType.details.parameters.length > 0) { + FunctionType.addParameter(newCallMemberType, partialCallMemberType.details.parameters[0]); } newParamList.forEach((param) => { FunctionType.addParameter(newCallMemberType, param); @@ -336,16 +458,8 @@ function applyPartialTransform( newCallMemberType.details.declaredReturnType = specializedFunctionType.details.declaredReturnType ? FunctionType.getSpecializedReturnType(specializedFunctionType) : specializedFunctionType.inferredReturnType; - newCallMemberType.details.declaration = callMemberType.details.declaration; + newCallMemberType.details.declaration = partialCallMemberType.details.declaration; newCallMemberType.details.typeVarScopeId = specializedFunctionType.details.typeVarScopeId; - // Create a new copy of the functools.partial class that overrides the __call__ method. - const newPartialClass = ClassType.cloneForSymbolTableUpdate(result.returnType); - newPartialClass.details.fields.set('__call__', Symbol.createWithType(SymbolFlags.ClassMember, newCallMemberType)); - - return { - returnType: newPartialClass, - isTypeIncomplete: false, - argumentErrors, - }; + return { returnType: newCallMemberType, isTypeIncomplete: false, argumentErrors }; } diff --git a/packages/pyright-internal/src/tests/samples/partial4.py b/packages/pyright-internal/src/tests/samples/partial4.py new file mode 100644 index 000000000..22c093500 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/partial4.py @@ -0,0 +1,38 @@ +# This sample tests the case where an overloaded function is passed +# to functools.partial. + +from functools import partial +from typing import overload + + +@overload +def func1(val1: float, val2: float) -> float: + ... + + +@overload +def func1(val1: str, val2: str) -> str: + ... + + +def func1(val1: float | str, val2: float | str) -> float | str: + return max(val1, val2) + + +def func2(): + op_float = partial(func1, 1.0) + v1 = op_float(2.0) + reveal_type(v1, expected_text="float") + + # This should generate an error. + op_float("a") + + op_str = partial(func1, "a") + v2 = op_str("b") + reveal_type(v2, expected_text="str") + + # This should generate an error. + op_str(1.0) + + # This should generate an error. + op_complex = partial(func1, 3j) diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index aae3233bd..836b9867a 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1416,6 +1416,12 @@ test('Partial3', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Partial4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['partial4.py']); + + TestUtils.validateResults(analysisResults, 3); +}); + test('TotalOrdering1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['totalOrdering1.py']); From 08672f41172fd8ce403a12c0a5f26f10c6190dc8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 14 Apr 2023 11:56:43 -0700 Subject: [PATCH 032/525] Fixed bug that resulted in a false positive when evaluating the types of nested generic function calls when bidirectional type inference is required. This addresses https://github.com/microsoft/pyright/issues/4953. --- .../src/analyzer/typeEvaluator.ts | 17 ++++++++------ .../src/tests/samples/genericTypes108.py | 22 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 +++++ 3 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes108.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 884aa8168..053ebbd21 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10903,7 +10903,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions { type, isIncomplete: matchResults.isTypeIncomplete }, skipUnknownArgCheck, /* skipOverloadArg */ i === 0, - /* useNarrowBoundOnly */ passCount > 1 && i === 0, + /* isFirstPass */ passCount > 1 && i === 0, typeCondition ); @@ -10941,7 +10941,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions { type, isIncomplete: matchResults.isTypeIncomplete }, skipUnknownArgCheck, /* skipOverloadArg */ false, - /* useNarrowBoundOnly */ false, + /* isFirstPass */ false, typeCondition ); @@ -11346,7 +11346,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions /* functionType */ undefined, /* skipUnknownArgCheck */ false, /* skipOverloadArg */ false, - /* useNarrowBoundOnly */ false, + /* isFirstPass */ false, conditionFilter ); @@ -11398,7 +11398,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeResult: TypeResult | undefined, skipUnknownCheck: boolean, skipOverloadArg: boolean, - useNarrowBoundOnly: boolean, + isFirstPass: boolean, conditionFilter: TypeCondition[] | undefined ): ArgResult { let argType: Type | undefined; @@ -11409,18 +11409,21 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (argParam.argument.valueExpression) { // If the param type is a "bare" TypeVar, don't use it as an expected - // type. This causes problems for cases where the the call expression - // result can influence the type of the TypeVar, such as in + // type during the first pass. This causes problems for cases where the the + // call expression result can influence the type of the TypeVar, such as in // the expression "min(1, max(2, 0.5))". We set useNarrowBoundOnly // to true if this is the first pass through the parameter list because // a wide bound on a TypeVar (if a narrow bound has not yet been established) // will unnecessarily constrain the expected type. let expectedType: Type | undefined; if ( + !isFirstPass || !isTypeVar(argParam.paramType) || argParam.paramType.scopeId !== typeResult?.type.details.typeVarScopeId ) { - expectedType = applySolvedTypeVars(argParam.paramType, typeVarContext, { useNarrowBoundOnly }); + expectedType = applySolvedTypeVars(argParam.paramType, typeVarContext, { + useNarrowBoundOnly: isFirstPass, + }); } // If the expected type is unknown, don't use an expected type. Instead, diff --git a/packages/pyright-internal/src/tests/samples/genericTypes108.py b/packages/pyright-internal/src/tests/samples/genericTypes108.py new file mode 100644 index 000000000..418da5932 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes108.py @@ -0,0 +1,22 @@ +# This sample tests the handling of nested calls to generic functions +# when bidirectional type inference is involved. + +from typing import Literal, TypeVar + +T = TypeVar("T") + + +def identity(x: T) -> T: + return x + + +def identity2(x: T) -> T: + return x + + +def test(x: Literal[2]) -> Literal[2]: + return identity(identity2(x)) + + +v1 = min(1, max(2, 0.5)) +reveal_type(v1, expected_text="float") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index a748ff00b..a3d4417f9 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1055,6 +1055,12 @@ test('GenericTypes107', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes108', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes108.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 56ce7552ba5824d56d747bba909b82dea80a6c1d Mon Sep 17 00:00:00 2001 From: Bill Schnurr Date: Fri, 14 Apr 2023 13:16:12 -0700 Subject: [PATCH 033/525] =?UTF-8?q?Format=20completions=20and=20hovers=20f?= =?UTF-8?q?or=20functions=20and=20overloaded=20functions=20=E2=80=A6=20(#4?= =?UTF-8?q?955)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../completionProviderUtils.ts | 20 ++++++++++++---- .../src/languageService/hoverProvider.ts | 23 +++++++++++++++++-- ...nherited.function.docFromStub.fourslash.ts | 2 +- ...ompletions.variableDocStrings.fourslash.ts | 2 +- .../hover.docstring.overloads.fourslash.ts | 4 ++-- .../hover.variable.docString.fourslash.ts | 2 +- 6 files changed, 42 insertions(+), 11 deletions(-) diff --git a/packages/pyright-internal/src/languageService/completionProviderUtils.ts b/packages/pyright-internal/src/languageService/completionProviderUtils.ts index d9fb9560a..28c5a71d6 100644 --- a/packages/pyright-internal/src/languageService/completionProviderUtils.ts +++ b/packages/pyright-internal/src/languageService/completionProviderUtils.ts @@ -20,6 +20,7 @@ import { isOverloadedFunction, Type, TypeBase, + TypeCategory, UnknownType, } from '../analyzer/types'; import { isProperty } from '../analyzer/typeUtils'; @@ -93,8 +94,19 @@ export function getTypeDetail( } } } - - return name + ': ' + evaluator.printType(type, { expandTypeAlias }); + // Handle the case where type is a function and was assigned to a variable. + if (type.category === TypeCategory.OverloadedFunction || type.category === TypeCategory.Function) { + return getToolTipForType( + type, + /* label */ '', + name, + evaluator, + /* isProperty */ false, + functionSignatureDisplay + ); + } else { + return name + ': ' + evaluator.printType(type, { expandTypeAlias }); + } } case DeclarationType.Function: { @@ -115,10 +127,10 @@ export function getTypeDetail( return getToolTipForType( functionType, - /*label*/ '', + /* label */ '', name, evaluator, - /*isProperty*/ false, + /* isProperty */ false, functionSignatureDisplay ); } diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index 873e48a1f..a5d6940d2 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -30,6 +30,7 @@ import { isUnknown, OverloadedFunctionType, Type, + TypeCategory, UnknownType, } from '../analyzer/types'; import { @@ -287,8 +288,26 @@ export class HoverProvider { } } - const typeText = typeVarName || node.value + this._getTypeText(typeNode, evaluator, expandTypeAlias); - this._addResultsPart(parts, `(${label}) ${typeText}`, /* python */ true); + let typeText: string; + const varType = this._getType(evaluator, typeNode); + // Handle the case where type is a function and was assigned to a variable. + if ( + varType.category === TypeCategory.Function || + varType.category === TypeCategory.OverloadedFunction + ) { + typeText = getToolTipForType( + type, + label, + node.value, + evaluator, + /* isProperty */ false, + functionSignatureDisplay + ); + } else { + typeText = typeVarName || node.value + this._getTypeText(typeNode, evaluator, expandTypeAlias); + typeText = `(${label}) ` + typeText; + } + this._addResultsPart(parts, typeText, /* python */ true); this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); break; } diff --git a/packages/pyright-internal/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts index 7bc5b920b..32e20cc4e 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts @@ -21,7 +21,7 @@ await helper.verifyCompletion('included', 'markdown', { { label: 'displayhook', kind: Consts.CompletionItemKind.Variable, - documentation: '```python\ndisplayhook: () -> Unknown\n```', + documentation: '```python\ndef displayhook() -> Unknown\n```', }, ], }, diff --git a/packages/pyright-internal/src/tests/fourslash/completions.variableDocStrings.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.variableDocStrings.fourslash.ts index 7f7dcd0a0..efefe2542 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.variableDocStrings.fourslash.ts @@ -75,7 +75,7 @@ await helper.verifyCompletion('includes', 'markdown', { { label: 'func', kind: Consts.CompletionItemKind.Variable, - documentation: '```python\nfunc: (float) -> float\n```\n---\nA given function', + documentation: '```python\ndef func(float) -> float\n```\n---\nA given function', }, ], }, diff --git a/packages/pyright-internal/src/tests/fourslash/hover.docstring.overloads.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/hover.docstring.overloads.fourslash.ts index b8ff9b65e..f95571e85 100644 --- a/packages/pyright-internal/src/tests/fourslash/hover.docstring.overloads.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/hover.docstring.overloads.fourslash.ts @@ -36,6 +36,6 @@ helper.verifyHover('markdown', { marker1: - '```python\n(variable) dontwork: Overload[(self: _rand, x: int) -> None, (self: _rand, x: float) -> None]\n```\n---\ndontwork docstring', - marker2: '```python\n(variable) works: (self: _rand) -> None\n```\n---\nworks docstring', + '```python\n(variable)\ndef dontwork(self: _rand, x: int) -> None: ...\ndef dontwork(self: _rand, x: float) -> None: ...\n```\n---\ndontwork docstring', + marker2: '```python\n(variable) def works(self: _rand) -> None\n```\n---\nworks docstring', }); diff --git a/packages/pyright-internal/src/tests/fourslash/hover.variable.docString.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/hover.variable.docString.fourslash.ts index 3e18d8ce8..d3a1d2006 100644 --- a/packages/pyright-internal/src/tests/fourslash/hover.variable.docString.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/hover.variable.docString.fourslash.ts @@ -41,7 +41,7 @@ helper.verifyHover('markdown', { marker1: '```python\n(variable) x: int\n```\n---\ntest x', - marker2: '```python\n(variable) func: (float) -> float\n```\n---\nA given function', + marker2: '```python\n(variable) def func(float) -> float\n```\n---\nA given function', marker3: '```python\n(variable) y: Literal[2]\n```\n---\ntest y', marker4: '```python\n(variable) z: int\n```\n---\ntest z', marker5: From 3a003c3c25f9ab22ceb74164882f0cc0f7f7b66a Mon Sep 17 00:00:00 2001 From: Bill Schnurr Date: Fri, 14 Apr 2023 22:26:27 -0700 Subject: [PATCH 034/525] Fixed: Argument comment spacing (#4958) --- .../pyright-internal/src/analyzer/program.ts | 4 +- .../pyright-internal/src/analyzer/service.ts | 2 +- .../src/analyzer/sourceMapper.ts | 2 +- .../src/languageService/completionProvider.ts | 2 +- .../documentSymbolCollector.ts | 2 +- .../src/languageService/indentationUtils.ts | 6 +- .../languageService/insertionPointUtils.ts | 4 +- .../harness/fourslash/fourSlashParser.ts | 2 +- .../src/tests/harness/testHost.ts | 2 +- .../src/tests/harness/vfs/factory.ts | 4 +- .../src/tests/harness/vfs/filesystem.ts | 62 +++++++++++-------- .../pyright-internal/src/workspaceFactory.ts | 2 +- 12 files changed, 53 insertions(+), 41 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 0e744a2f4..bc41ca37e 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -1059,7 +1059,7 @@ export class Program { let implicitImport = implicitImports.pop(); while (implicitImport) { // Bind this file, but don't recurse into its imports. - this._bindFile(implicitImport, undefined, undefined, /*isImplicitImport*/ true); + this._bindFile(implicitImport, undefined, undefined, /* isImplicitImport */ true); implicitImport = implicitImports.pop(); } } @@ -2912,7 +2912,7 @@ export class Program { } test_createSourceMapper(execEnv: ExecutionEnvironment, from?: SourceFileInfo) { - return this._createSourceMapper(execEnv, CancellationToken.None, /*from*/ from, /* mapCompiled */ false); + return this._createSourceMapper(execEnv, CancellationToken.None, /* from */ from, /* mapCompiled */ false); } private _getRenameSymbolMode( diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 13625a78e..30c5de20e 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -327,7 +327,7 @@ export class AnalyzerService { updateChainedFilePath(path: string, chainedFilePath: string | undefined) { this._backgroundAnalysisProgram.updateChainedFilePath(path, chainedFilePath); - this._scheduleReanalysis(/*requireTrackedFileUpdate*/ false); + this._scheduleReanalysis(/* requireTrackedFileUpdate */ false); } updateOpenFileContents( diff --git a/packages/pyright-internal/src/analyzer/sourceMapper.ts b/packages/pyright-internal/src/analyzer/sourceMapper.ts index 6e397bcf1..5a6587609 100644 --- a/packages/pyright-internal/src/analyzer/sourceMapper.ts +++ b/packages/pyright-internal/src/analyzer/sourceMapper.ts @@ -589,7 +589,7 @@ export class SourceMapper { recursiveDeclCache: Set ) { const filePath = type.details.filePath; - const sourceFiles = this._getSourceFiles(filePath, /*stubToShadow*/ undefined, originated); + const sourceFiles = this._getSourceFiles(filePath, /* stubToShadow */ undefined, originated); const fullClassName = type.details.fullName.substring( type.details.moduleName.length + 1 /* +1 for trailing dot */ diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index e2393f64b..86b6853f2 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -2768,7 +2768,7 @@ export class CompletionProvider { ) { const insideTypeAnnotation = ParseTreeUtils.isWithinAnnotationComment(node) || - ParseTreeUtils.isWithinTypeAnnotation(node, /*requireQuotedAnnotation*/ false); + ParseTreeUtils.isWithinTypeAnnotation(node, /* requireQuotedAnnotation */ false); symbolTable.forEach((symbol, name) => { // If there are no declarations or the symbol is not // exported from this scope, don't include it in the diff --git a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts index 0b53b2784..d6db4927b 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts @@ -115,7 +115,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { useCase, evaluator, token, - /*skipUnreachableCode*/ false + /* skipUnreachableCode */ false ); // Add declarations from chained source files diff --git a/packages/pyright-internal/src/languageService/indentationUtils.ts b/packages/pyright-internal/src/languageService/indentationUtils.ts index 11e6e39fa..3b3000b58 100644 --- a/packages/pyright-internal/src/languageService/indentationUtils.ts +++ b/packages/pyright-internal/src/languageService/indentationUtils.ts @@ -178,7 +178,7 @@ function _getIndentation( // but match does not. if (node.nodeType === ParseNodeType.Match) { const tabSize = _getTabSize(parseResults); - const outerContainer = getContainer(node, /*includeSelf*/ false); + const outerContainer = getContainer(node, /* includeSelf */ false); const result = _getIndentationForNode(parseResults, offset, outerContainer ?? parseResults.parseTree, node); result.indentation += tabSize; return result; @@ -192,7 +192,7 @@ function _getIndentation( const suiteSpan = convertTextRangeToRange(suite, parseResults.tokenizerOutput.lines); if (preferDedent || (suiteSpan.start.line === suiteSpan.end.line && suite.statements.length > 0)) { // Go one more level up. - const outerContainer = getContainer(suite, /*includeSelf*/ false); + const outerContainer = getContainer(suite, /* includeSelf */ false); return _getIndentationForNode(parseResults, offset, outerContainer ?? parseResults.parseTree, suite); } @@ -218,7 +218,7 @@ function _getIndentationForNode( _containsNoIndentBeforeFirstStatement(parseResults, offset, container) ) { const tabSize = _getTabSize(parseResults); - const outerContainer = getContainer(container, /*includeSelf*/ false); + const outerContainer = getContainer(container, /* includeSelf */ false); const result = _getIndentationForNode( parseResults, offset, diff --git a/packages/pyright-internal/src/languageService/insertionPointUtils.ts b/packages/pyright-internal/src/languageService/insertionPointUtils.ts index 94fe55648..b90e520c8 100644 --- a/packages/pyright-internal/src/languageService/insertionPointUtils.ts +++ b/packages/pyright-internal/src/languageService/insertionPointUtils.ts @@ -110,8 +110,8 @@ function _getDeclarationsDefinedInCurrentModule( return declarations.filter((d) => { const resolved = evaluator.resolveAliasDeclaration( d, - /*resolveLocalNames*/ true, - /*allowExternallyHiddenAccess*/ true + /* resolveLocalNames */ true, + /* allowExternallyHiddenAccess */ true ); if (!resolved) { diff --git a/packages/pyright-internal/src/tests/harness/fourslash/fourSlashParser.ts b/packages/pyright-internal/src/tests/harness/fourslash/fourSlashParser.ts index ce0c6a040..62badb436 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/fourSlashParser.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/fourSlashParser.ts @@ -418,7 +418,7 @@ function parseFileContent( } // Add the remaining text - flush(/*lastSafeCharIndex*/ undefined); + flush(/* lastSafeCharIndex */ undefined); if (openRanges.length > 0) { const openRange = openRanges[0]; diff --git a/packages/pyright-internal/src/tests/harness/testHost.ts b/packages/pyright-internal/src/tests/harness/testHost.ts index 481352ae7..c6802e06d 100644 --- a/packages/pyright-internal/src/tests/harness/testHost.ts +++ b/packages/pyright-internal/src/tests/harness/testHost.ts @@ -111,7 +111,7 @@ function createHost(): TestHost { directories.push(entry); } } catch { - /*ignore*/ + /* ignore */ } } return { files, directories }; diff --git a/packages/pyright-internal/src/tests/harness/vfs/factory.ts b/packages/pyright-internal/src/tests/harness/vfs/factory.ts index 6e7abf9be..91e53c436 100644 --- a/packages/pyright-internal/src/tests/harness/vfs/factory.ts +++ b/packages/pyright-internal/src/tests/harness/vfs/factory.ts @@ -137,7 +137,7 @@ function getBuiltLocal( const files: FileSet = {}; mountPaths.forEach((v, k) => (files[k] = new Mount(v, resolver))); - localCIFSCache = new TestFileSystem(/*ignoreCase*/ true, { + localCIFSCache = new TestFileSystem(/* ignoreCase */ true, { files, cwd, meta: {}, @@ -150,7 +150,7 @@ function getBuiltLocal( } if (!localCSFSCache) { - localCSFSCache = localCIFSCache.shadow(/*ignoreCase*/ false); + localCSFSCache = localCIFSCache.shadow(/* ignoreCase */ false); localCSFSCache.makeReadonly(); } diff --git a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts index e7fc6188a..efc509665 100644 --- a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts +++ b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts @@ -69,7 +69,7 @@ export class TestFileSystem implements FileSystem { } if (files) { - this._applyFiles(files, /*dirname*/ ''); + this._applyFiles(files, /* dirname */ ''); } let cwd = options.cwd; @@ -298,7 +298,7 @@ export class TestFileSystem implements FileSystem { scanSync(path: string, axis: Axis, traversal: Traversal) { path = this._resolve(path); const results: string[] = []; - this._scan(path, this._stat(this._walk(path)), axis, traversal, /*noFollow*/ false, results); + this._scan(path, this._stat(this._walk(path)), axis, traversal, /* noFollow */ false, results); return results; } @@ -311,7 +311,14 @@ export class TestFileSystem implements FileSystem { lscanSync(path: string, axis: Axis, traversal: Traversal) { path = this._resolve(path); const results: string[] = []; - this._scan(path, this._stat(this._walk(path, /*noFollow*/ true)), axis, traversal, /*noFollow*/ true, results); + this._scan( + path, + this._stat(this._walk(path, /* noFollow */ true)), + axis, + traversal, + /* noFollow */ true, + results + ); return results; } @@ -379,7 +386,7 @@ export class TestFileSystem implements FileSystem { this._scan(dirname, stats, 'ancestors-or-self', traversal, noFollow, results); } } catch { - /*ignored*/ + /* ignored */ } } } @@ -391,7 +398,7 @@ export class TestFileSystem implements FileSystem { const stats = this._stat(this._walk(childpath, noFollow)); this._scan(childpath, stats, 'descendants-or-self', traversal, noFollow, results); } catch { - /*ignored*/ + /* ignored */ } } } @@ -412,13 +419,13 @@ export class TestFileSystem implements FileSystem { source = validate(source, ValidationFlags.Absolute); - const { parent, links, node: existingNode, basename } = this._walk(this._resolve(target), /*noFollow*/ true); + const { parent, links, node: existingNode, basename } = this._walk(this._resolve(target), /* noFollow */ true); if (existingNode) { throw createIOError('EEXIST'); } const time = this.time(); - const node = this._mknod(parent ? parent.dev : ++devCount, S_IFDIR, /*mode*/ 0o777, time); + const node = this._mknod(parent ? parent.dev : ++devCount, S_IFDIR, /* mode */ 0o777, time); node.source = source; node.resolver = resolver; this._addLink(parent, links, basename, node, time); @@ -451,7 +458,7 @@ export class TestFileSystem implements FileSystem { */ mkdirpSync(path: string) { path = this._resolve(path); - const result = this._walk(path, /*noFollow*/ true, (error, result) => { + const result = this._walk(path, /* noFollow */ true, (error, result) => { if (error.code === 'ENOENT') { this._mkdir(result); return 'retry'; @@ -490,7 +497,7 @@ export class TestFileSystem implements FileSystem { closeIterator(iterator); } }; - printLinks(/*dirname*/ undefined, this._getRootLinks()); + printLinks(/* dirname */ undefined, this._getRootLinks()); return result; } @@ -507,7 +514,7 @@ export class TestFileSystem implements FileSystem { * Determines whether a path exists. */ existsSync(path: string) { - const result = this._walk(this._resolve(path), /*noFollow*/ true, () => 'stop'); + const result = this._walk(this._resolve(path), /* noFollow */ true, () => 'stop'); return result !== undefined && result.node !== undefined; } @@ -552,7 +559,7 @@ export class TestFileSystem implements FileSystem { * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. */ lstatSync(path: string) { - return this._stat(this._walk(this._resolve(path), /*noFollow*/ true)); + return this._stat(this._walk(this._resolve(path), /* noFollow */ true)); } private _stat(entry: WalkResult) { @@ -565,10 +572,10 @@ export class TestFileSystem implements FileSystem { node.ino, node.mode, node.nlink, - /*rdev*/ 0, - /*size*/ isFile(node) ? this._getSize(node) : isSymlink(node) ? node.symlink.length : 0, - /*blksize*/ 4096, - /*blocks*/ 0, + /* rdev */ 0, + /* size */ isFile(node) ? this._getSize(node) : isSymlink(node) ? node.symlink.length : 0, + /* blksize */ 4096, + /* blocks */ 0, node.atimeMs, node.mtimeMs, node.ctimeMs, @@ -630,7 +637,7 @@ export class TestFileSystem implements FileSystem { return; } - this._mkdir(this._walk(this._resolve(path), /*noFollow*/ true)); + this._mkdir(this._walk(this._resolve(path), /* noFollow */ true)); } private _mkdir({ parent, links, node: existingNode, basename }: WalkResult) { @@ -638,7 +645,7 @@ export class TestFileSystem implements FileSystem { throw createIOError('EEXIST'); } const time = this.time(); - const node = this._mknod(parent ? parent.dev : ++devCount, S_IFDIR, /*mode*/ 0o777, time); + const node = this._mknod(parent ? parent.dev : ++devCount, S_IFDIR, /* mode */ 0o777, time); this._addLink(parent, links, basename, node, time); } @@ -655,7 +662,7 @@ export class TestFileSystem implements FileSystem { } path = this._resolve(path); - const { parent, links, node, basename } = this._walk(path, /*noFollow*/ true); + const { parent, links, node, basename } = this._walk(path, /* noFollow */ true); if (!parent) { throw createIOError('EPERM'); } @@ -689,7 +696,7 @@ export class TestFileSystem implements FileSystem { throw createIOError('EPERM'); } - const { parent, links, basename, node: existingNode } = this._walk(this._resolve(newpath), /*noFollow*/ true); + const { parent, links, basename, node: existingNode } = this._walk(this._resolve(newpath), /* noFollow */ true); if (!parent) { throw createIOError('EPERM'); } @@ -712,7 +719,7 @@ export class TestFileSystem implements FileSystem { throw createIOError('EROFS'); } - const { parent, links, node, basename } = this._walk(this._resolve(path), /*noFollow*/ true); + const { parent, links, node, basename } = this._walk(this._resolve(path), /* noFollow */ true); if (!parent) { throw createIOError('EPERM'); } @@ -743,7 +750,7 @@ export class TestFileSystem implements FileSystem { links: oldParentLinks, node, basename: oldBasename, - } = this._walk(this._resolve(oldpath), /*noFollow*/ true); + } = this._walk(this._resolve(oldpath), /* noFollow */ true); if (!oldParent) { throw createIOError('EPERM'); @@ -757,7 +764,7 @@ export class TestFileSystem implements FileSystem { links: newParentLinks, node: existingNode, basename: newBasename, - } = this._walk(this._resolve(newpath), /*noFollow*/ true); + } = this._walk(this._resolve(newpath), /* noFollow */ true); if (!newParent) { throw createIOError('EPERM'); @@ -795,7 +802,12 @@ export class TestFileSystem implements FileSystem { throw createIOError('EROFS'); } - const { parent, links, node: existingNode, basename } = this._walk(this._resolve(linkpath), /*noFollow*/ true); + const { + parent, + links, + node: existingNode, + basename, + } = this._walk(this._resolve(linkpath), /* noFollow */ true); if (!parent) { throw createIOError('EPERM'); } @@ -804,7 +816,7 @@ export class TestFileSystem implements FileSystem { } const time = this.time(); - const node = this._mknod(parent.dev, S_IFLNK, /*mode*/ 0o666, time); + const node = this._mknod(parent.dev, S_IFLNK, /* mode */ 0o666, time); node.symlink = validate(target, ValidationFlags.RelativeOrAbsolute); this._addLink(parent, links, basename, node, time); } @@ -865,7 +877,7 @@ export class TestFileSystem implements FileSystem { throw createIOError('EROFS'); } - const { parent, links, node: existingNode, basename } = this._walk(this._resolve(path), /*noFollow*/ false); + const { parent, links, node: existingNode, basename } = this._walk(this._resolve(path), /* noFollow */ false); if (!parent) { throw createIOError('EPERM'); } diff --git a/packages/pyright-internal/src/workspaceFactory.ts b/packages/pyright-internal/src/workspaceFactory.ts index 54c8c2657..1187fbe8f 100644 --- a/packages/pyright-internal/src/workspaceFactory.ts +++ b/packages/pyright-internal/src/workspaceFactory.ts @@ -242,7 +242,7 @@ export class WorkspaceFactory { const realFilePath = fileInfo.sourceFile.getRealFilePath(); // Remove the file from the old workspace first (closing will propagate to the toWorkspace automatically). - fromWorkspace.service.setFileClosed(f, /*isTracked*/ false); + fromWorkspace.service.setFileClosed(f, /* isTracked */ false); // Then open it in the toWorkspace so that it is marked tracked there. toWorkspace.service.setFileOpened( From 0ccd377cd03517d66686afef85752ca263b44dcc Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 14 Apr 2023 23:02:44 -0700 Subject: [PATCH 035/525] Minor internal code cleanup of the adjustCallableReturnType. No functional change. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 11 ++++------- packages/pyright-internal/src/analyzer/types.ts | 11 ++++++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 053ebbd21..49da83135 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11133,20 +11133,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }; } - function adjustCallableReturnType(type: Type): Type { + function adjustCallableReturnType(returnType: Type): Type { // If the return type includes a generic Callable type, set the type var // scope to a wildcard to allow these type vars to be solved. This won't // work with overloads or unions of callables. It's intended for a // specific use case. We may need to make this more sophisticated in // the future. - if (isFunction(type) && !type.details.name) { - type.details = { - ...type.details, - typeVarScopeId: WildcardTypeVarScopeId, - }; + if (isFunction(returnType) && !returnType.details.name) { + return FunctionType.cloneWithNewTypeVarScopeId(returnType, WildcardTypeVarScopeId); } - return type; + return returnType; } // Tries to assign the call arguments to the function parameter diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 9207e6248..d38d00743 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1542,12 +1542,21 @@ export namespace FunctionType { // Make a shallow clone of the details. newFunction.details = { ...type.details }; - newFunction.details.flags = flags; return newFunction; } + export function cloneWithNewTypeVarScopeId(type: FunctionType, newScopeId: TypeVarScopeId): FunctionType { + const newFunction = TypeBase.cloneType(type); + + // Make a shallow clone of the details. + newFunction.details = { ...type.details }; + newFunction.details.typeVarScopeId = newScopeId; + + return newFunction; + } + export function cloneWithDocString(type: FunctionType, docString?: string): FunctionType { const newFunction = TypeBase.cloneType(type); From 101b040c2eb5ea23f2550d8420ec2f5aae840e08 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Apr 2023 12:07:39 -0700 Subject: [PATCH 036/525] Fixed bug that resulted in an unresolved `Unknown` type in a doubly-nested loop when the value comes from a call to an overloaded function or magic method. This addresses https://github.com/microsoft/pyright/issues/4961. --- .../src/analyzer/typeEvaluator.ts | 20 +++++++++++++------ .../src/analyzer/typeEvaluatorTypes.ts | 3 ++- .../pyright-internal/src/analyzer/types.ts | 4 ++-- .../src/tests/samples/loops37.py | 13 ++++++++++++ .../src/tests/typeEvaluator3.test.ts | 6 ++++++ 5 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/loops37.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 49da83135..1ac279be7 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8105,6 +8105,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const argTypeOverride = expandedArgTypes[expandedTypesIndex]; const hasArgTypeOverride = argTypeOverride.some((a) => a !== undefined); let possibleMatchResults: MatchedOverloadInfo[] = []; + let possibleMatchInvolvesIncompleteUnknown = false; isDefinitiveMatchFound = false; for (let overloadIndex = 0; overloadIndex < argParamMatches.length; overloadIndex++) { @@ -8167,8 +8168,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }; matchedOverloads.push(matchedOverloadInfo); - if (callResult.isArgumentAnyOrUnknown) { + if (callResult.anyOrUnknownArgument) { possibleMatchResults.push(matchedOverloadInfo); + if (isIncompleteUnknown(callResult.anyOrUnknownArgument)) { + possibleMatchInvolvesIncompleteUnknown = true; + } } else { returnTypes.push(callResult.returnType); isDefinitiveMatchFound = true; @@ -8215,7 +8219,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const combinedTypes = combineTypes(dedupedMatchResults); returnTypes.push( - dedupedMatchResults.length > 1 ? UnknownType.createPossibleType(combinedTypes) : combinedTypes + dedupedMatchResults.length > 1 + ? UnknownType.createPossibleType(combinedTypes, possibleMatchInvolvesIncompleteUnknown) + : combinedTypes ); } } @@ -8252,7 +8258,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { argumentErrors: finalCallResult.argumentErrors, - isArgumentAnyOrUnknown: finalCallResult.isArgumentAnyOrUnknown, + anyOrUnknownArgument: finalCallResult.anyOrUnknownArgument, returnType: combineTypes(returnTypes), isTypeIncomplete, specializedInitSelfType: finalCallResult.specializedInitSelfType, @@ -10816,7 +10822,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let isTypeIncomplete = matchResults.isTypeIncomplete; let argumentErrors = false; let specializedInitSelfType: Type | undefined; - let isArgumentAnyOrUnknown = false; + let anyOrUnknownArgument: UnknownType | AnyType | undefined; const typeCondition = getTypeCondition(type); if (type.boundTypeVarScopeId) { @@ -10960,7 +10966,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (isAnyOrUnknown(argResult.argType)) { - isArgumentAnyOrUnknown = true; + anyOrUnknownArgument = anyOrUnknownArgument + ? preserveUnknown(argResult.argType, anyOrUnknownArgument) + : argResult.argType; } if (type.details.paramSpec) { @@ -11124,7 +11132,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { argumentErrors, argResults, - isArgumentAnyOrUnknown, + anyOrUnknownArgument, returnType: specializedReturnType, isTypeIncomplete, activeParam: matchResults.activeParam, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 6e6a3a45c..81cd13f7a 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -37,6 +37,7 @@ import { SymbolWithScope } from './scope'; import { Symbol } from './symbol'; import { PrintTypeFlags } from './typePrinter'; import { + AnyType, ClassType, FunctionParameter, FunctionType, @@ -318,7 +319,7 @@ export interface CallResult { argumentErrors: boolean; // Did one or more arguments evaluated to Any or Unknown? - isArgumentAnyOrUnknown?: boolean; + anyOrUnknownArgument?: UnknownType | AnyType; // The parameter associated with the "active" argument (used // for signature help provider) diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index d38d00743..7befcec16 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -315,11 +315,11 @@ export namespace UnknownType { return isIncomplete ? _incompleteInstance : _instance; } - export function createPossibleType(possibleType: Type) { + export function createPossibleType(possibleType: Type, isIncomplete: boolean) { const unknownWithPossibleType: UnknownType = { category: TypeCategory.Unknown, flags: TypeFlags.Instantiable | TypeFlags.Instance, - isIncomplete: false, + isIncomplete, possibleType, }; diff --git a/packages/pyright-internal/src/tests/samples/loops37.py b/packages/pyright-internal/src/tests/samples/loops37.py new file mode 100644 index 000000000..8906077dc --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/loops37.py @@ -0,0 +1,13 @@ +# This sample tests that a variable assigned in a doubly-nested loop +# eliminates any Unknowns. + +# pyright: strict + + +def func(): + a_value: int = 0 + a_list: list[int] = [] + + for _ in range(1): + for _ in range(1): + a_value = a_list[a_value] diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 6f3cdac9d..082fd71d5 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -382,6 +382,12 @@ test('Loops36', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Loops37', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops37.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('ForLoop1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['forLoop1.py']); From b49da70f1c5f509312aaf883a452c33c3bc95ff1 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Apr 2023 13:38:40 -0700 Subject: [PATCH 037/525] Improved type inference for enum values in an enum class created with the one-line form `x = Enum("x", "a b c")`. --- .../pyright-internal/src/analyzer/enums.ts | 52 +++++++------------ .../src/analyzer/typeEvaluator.ts | 2 +- .../src/tests/samples/enums1.py | 8 +++ 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index abf9e9a15..7c3bccc6d 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -7,19 +7,9 @@ * Provides special-case logic for the Enum class. */ -import { assert } from '../common/debug'; -import { convertOffsetsToRange } from '../common/positionUtils'; -import { TextRange } from '../common/textRange'; -import { - ArgumentCategory, - ExpressionNode, - NameNode, - ParseNode, - ParseNodeType, - StringListNode, -} from '../parser/parseNodes'; +import { ArgumentCategory, ExpressionNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; import { getFileInfo } from './analyzerNodeInfo'; -import { DeclarationType, VariableDeclaration } from './declaration'; +import { VariableDeclaration } from './declaration'; import { getClassFullName, getEnclosingClass, getTypeSourceId } from './parseTreeUtils'; import { Symbol, SymbolFlags } from './symbol'; import { isSingleDunderName } from './symbolNameUtils'; @@ -44,6 +34,7 @@ export function isKnownEnumType(className: string) { // Creates a new custom enum class with named values. export function createEnumType( + evaluator: TypeEvaluator, errorNode: ExpressionNode, enumClass: ClassType, argList: FunctionArgument[] @@ -101,33 +92,30 @@ export function createEnumType( // recommend using the more standard class declaration syntax. return undefined; } else { + const classInstanceType = ClassType.cloneAsInstance(classType); + const intType = evaluator.getBuiltInType(errorNode, 'int'); const entries = entriesArg.valueExpression.strings .map((s) => s.value) .join('') .split(' '); - entries.forEach((entryName) => { + entries.forEach((entryName, index) => { entryName = entryName.trim(); if (entryName) { - const entryType = UnknownType.create(); - const newSymbol = Symbol.createWithType(SymbolFlags.ClassMember, entryType); + const valueType = + intType && isInstantiableClass(intType) + ? ClassType.cloneWithLiteral(ClassType.cloneAsInstance(intType), index + 1) + : UnknownType.create(); - // We need to associate the declaration with a parse node. - // In this case it's just part of a string literal value. - // The definition provider won't necessarily take the - // user to the exact spot in the string, but it's close enough. - const stringNode = entriesArg.valueExpression!; - assert(stringNode.nodeType === ParseNodeType.StringList); - const fileInfo = getFileInfo(errorNode); - const declaration: VariableDeclaration = { - type: DeclarationType.Variable, - node: stringNode as StringListNode, - isRuntimeTypeExpression: true, - path: fileInfo.filePath, - range: convertOffsetsToRange(stringNode.start, TextRange.getEnd(stringNode), fileInfo.lines), - moduleName: fileInfo.moduleName, - isInExceptSuite: false, - }; - newSymbol.addDeclaration(declaration); + const enumLiteral = new EnumLiteral( + classType.details.fullName, + classType.details.name, + entryName, + valueType + ); + const newSymbol = Symbol.createWithType( + SymbolFlags.ClassMember, + ClassType.cloneWithLiteral(classInstanceType, enumLiteral) + ); classFields.set(entryName, newSymbol); } }); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1ac279be7..d08900287 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9405,7 +9405,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (isClass(unexpandedSubtype) && isKnownEnumType(className)) { - return createEnumType(errorNode, expandedSubtype, argList) ?? UnknownType.create(); + return createEnumType(evaluatorInterface, errorNode, expandedSubtype, argList) ?? UnknownType.create(); } if (className === 'TypedDict') { diff --git a/packages/pyright-internal/src/tests/samples/enums1.py b/packages/pyright-internal/src/tests/samples/enums1.py index 9c4a5ebb4..f8afb3d48 100644 --- a/packages/pyright-internal/src/tests/samples/enums1.py +++ b/packages/pyright-internal/src/tests/samples/enums1.py @@ -16,6 +16,14 @@ class TestEnum3(Enum): a = TestEnum1["A"] aa = TestEnum1.A +reveal_type(aa.name, expected_text="Literal['A']") +reveal_type(aa._name_, expected_text="Literal['A']") +reveal_type(aa.value, expected_text="Literal[1]") +reveal_type(aa._value_, expected_text="Literal[1]") +reveal_type(TestEnum1.D.name, expected_text="Literal['D']") +reveal_type(TestEnum1.D._name_, expected_text="Literal['D']") +reveal_type(TestEnum1.D.value, expected_text="Literal[4]") +reveal_type(TestEnum1.D._value_, expected_text="Literal[4]") # This should generate an error because "Z" isn't # a valid member. From fcdb119e32947f93f3fe730e516810e90cff34d8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Apr 2023 14:03:00 -0700 Subject: [PATCH 038/525] Improved error handling for enum classes created with the one-line form `x = Enum("x", "a b c")`. The code now handles other whitespaces and commas and properly checks for format strings. --- .../pyright-internal/src/analyzer/enums.ts | 120 ++++++++++-------- .../src/tests/samples/enums1.py | 2 +- 2 files changed, 68 insertions(+), 54 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index 7c3bccc6d..14d4a487f 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -40,22 +40,23 @@ export function createEnumType( argList: FunctionArgument[] ): ClassType | undefined { const fileInfo = getFileInfo(errorNode); - let className = 'enum'; + if (argList.length === 0) { return undefined; - } else { - const nameArg = argList[0]; - if ( - nameArg.argumentCategory === ArgumentCategory.Simple && - nameArg.valueExpression && - nameArg.valueExpression.nodeType === ParseNodeType.StringList - ) { - className = nameArg.valueExpression.strings.map((s) => s.value).join(''); - } else { - return undefined; - } } + const nameArg = argList[0]; + if ( + nameArg.argumentCategory !== ArgumentCategory.Simple || + !nameArg.valueExpression || + nameArg.valueExpression.nodeType !== ParseNodeType.StringList || + nameArg.valueExpression.strings.length !== 1 || + nameArg.valueExpression.strings[0].nodeType !== ParseNodeType.String + ) { + return undefined; + } + + const className = nameArg.valueExpression.strings.map((s) => s.value).join(''); const classType = ClassType.createInstantiable( className, getClassFullName(errorNode, fileInfo.moduleName, className), @@ -77,49 +78,62 @@ export function createEnumType( if (argList.length < 2) { return undefined; - } else { - const entriesArg = argList[1]; - if ( - entriesArg.argumentCategory !== ArgumentCategory.Simple || - !entriesArg.valueExpression || - entriesArg.valueExpression.nodeType !== ParseNodeType.StringList - ) { - // Technically, the Enum constructor supports a bunch of different - // ways to specify the items: space-delimited string, a string - // iterator, an iterator of name/value tuples, and a dictionary - // of name/value pairs. We support only the simple space-delimited - // string here. For users who are interested in type checking, we - // recommend using the more standard class declaration syntax. + } + + const initArg = argList[1]; + if (initArg.argumentCategory !== ArgumentCategory.Simple || !initArg.valueExpression) { + return undefined; + } + + // The Enum factory call supports various forms of arguments: + // Enum('name', 'a b c') + // Enum('name', 'a,b,c') + // Enum('name', ['a', 'b', 'c']) + // Enum('name', ('a', 'b', 'c')) + // Enum('name', (('a', 1), ('b', 2), ('c', 3))) + // Enum('name', [('a', 1), ('b', 2), ('c', 3))] + // Enum('name', {'a': 1, 'b': 2, 'c': 3} + if (initArg.valueExpression.nodeType === ParseNodeType.StringList) { + // Don't allow format strings in the init arg. + if (!initArg.valueExpression.strings.every((str) => str.nodeType === ParseNodeType.String)) { return undefined; - } else { - const classInstanceType = ClassType.cloneAsInstance(classType); - const intType = evaluator.getBuiltInType(errorNode, 'int'); - const entries = entriesArg.valueExpression.strings - .map((s) => s.value) - .join('') - .split(' '); - entries.forEach((entryName, index) => { - entryName = entryName.trim(); - if (entryName) { - const valueType = - intType && isInstantiableClass(intType) - ? ClassType.cloneWithLiteral(ClassType.cloneAsInstance(intType), index + 1) - : UnknownType.create(); - - const enumLiteral = new EnumLiteral( - classType.details.fullName, - classType.details.name, - entryName, - valueType - ); - const newSymbol = Symbol.createWithType( - SymbolFlags.ClassMember, - ClassType.cloneWithLiteral(classInstanceType, enumLiteral) - ); - classFields.set(entryName, newSymbol); - } - }); } + + const classInstanceType = ClassType.cloneAsInstance(classType); + const intClassType = evaluator.getBuiltInType(errorNode, 'int'); + + const initStr = initArg.valueExpression.strings + .map((s) => s.value) + .join('') + .trim(); + + // Split by comma or whitespace. + const entryNames = initStr.split(/[\s,]+/); + + for (const [index, entryName] of entryNames.entries()) { + if (!entryName) { + return undefined; + } + + const valueType = + intClassType && isInstantiableClass(intClassType) + ? ClassType.cloneWithLiteral(ClassType.cloneAsInstance(intClassType), index + 1) + : UnknownType.create(); + + const enumLiteral = new EnumLiteral( + classType.details.fullName, + classType.details.name, + entryName, + valueType + ); + const newSymbol = Symbol.createWithType( + SymbolFlags.ClassMember, + ClassType.cloneWithLiteral(classInstanceType, enumLiteral) + ); + classFields.set(entryName, newSymbol); + } + + return classType; } return classType; diff --git a/packages/pyright-internal/src/tests/samples/enums1.py b/packages/pyright-internal/src/tests/samples/enums1.py index f8afb3d48..cca626f4e 100644 --- a/packages/pyright-internal/src/tests/samples/enums1.py +++ b/packages/pyright-internal/src/tests/samples/enums1.py @@ -3,7 +3,7 @@ from enum import Enum, IntEnum -TestEnum1 = Enum("TestEnum1", "A B C D") +TestEnum1 = Enum("TestEnum1", " A B,C , \t D\t") TestEnum2 = IntEnum("TestEnum2", "AA BB CC DD") From 1ee244c673319c87f29a8dab8b574ff3c1880569 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Apr 2023 14:47:00 -0700 Subject: [PATCH 039/525] Added support for other functional Enum calls including a list of strings, a tuple of strings, a list of tuples, a tuple of tuples, and a map. This addresses https://github.com/microsoft/pyright/issues/1127. --- .../pyright-internal/src/analyzer/enums.ts | 130 ++++++++++++++++-- .../src/tests/samples/enums1.py | 54 +++++++- 2 files changed, 171 insertions(+), 13 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index 14d4a487f..b9412ddb4 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -23,7 +23,6 @@ import { isFunction, isInstantiableClass, Type, - UnknownType, } from './types'; import { computeMroLinearization } from './typeUtils'; @@ -85,7 +84,13 @@ export function createEnumType( return undefined; } - // The Enum factory call supports various forms of arguments: + const intClassType = evaluator.getBuiltInType(errorNode, 'int'); + if (!intClassType || !isInstantiableClass(intClassType)) { + return undefined; + } + const classInstanceType = ClassType.cloneAsInstance(classType); + + // The Enum functional form supports various forms of arguments: // Enum('name', 'a b c') // Enum('name', 'a,b,c') // Enum('name', ['a', 'b', 'c']) @@ -99,9 +104,6 @@ export function createEnumType( return undefined; } - const classInstanceType = ClassType.cloneAsInstance(classType); - const intClassType = evaluator.getBuiltInType(errorNode, 'int'); - const initStr = initArg.valueExpression.strings .map((s) => s.value) .join('') @@ -115,10 +117,7 @@ export function createEnumType( return undefined; } - const valueType = - intClassType && isInstantiableClass(intClassType) - ? ClassType.cloneWithLiteral(ClassType.cloneAsInstance(intClassType), index + 1) - : UnknownType.create(); + const valueType = ClassType.cloneWithLiteral(ClassType.cloneAsInstance(intClassType), index + 1); const enumLiteral = new EnumLiteral( classType.details.fullName, @@ -126,16 +125,129 @@ export function createEnumType( entryName, valueType ); + const newSymbol = Symbol.createWithType( SymbolFlags.ClassMember, ClassType.cloneWithLiteral(classInstanceType, enumLiteral) ); + classFields.set(entryName, newSymbol); } return classType; } + if ( + initArg.valueExpression.nodeType === ParseNodeType.List || + initArg.valueExpression.nodeType === ParseNodeType.Tuple + ) { + const entries = + initArg.valueExpression.nodeType === ParseNodeType.List + ? initArg.valueExpression.entries + : initArg.valueExpression.expressions; + + if (entries.length === 0) { + return undefined; + } + + // Entries can be either string literals or tuples of a string + // literal and a value. All entries must follow the same pattern. + let isSimpleString = false; + for (const [index, entry] of entries.entries()) { + if (index === 0) { + isSimpleString = entry.nodeType === ParseNodeType.StringList; + } + + let nameNode: ParseNode | undefined; + let valueType: Type | undefined; + + if (entry.nodeType === ParseNodeType.StringList) { + if (!isSimpleString) { + return undefined; + } + + nameNode = entry; + valueType = ClassType.cloneWithLiteral(ClassType.cloneAsInstance(intClassType), index + 1); + } else if (entry.nodeType === ParseNodeType.Tuple) { + if (isSimpleString) { + return undefined; + } + + if (entry.expressions.length !== 2) { + return undefined; + } + nameNode = entry.expressions[0]; + valueType = evaluator.getTypeOfExpression(entry.expressions[1]).type; + } else { + return undefined; + } + + if ( + nameNode.nodeType !== ParseNodeType.StringList || + nameNode.strings.length !== 1 || + nameNode.strings[0].nodeType !== ParseNodeType.String + ) { + return undefined; + } + + const entryName = nameNode.strings[0].value; + + const enumLiteral = new EnumLiteral( + classType.details.fullName, + classType.details.name, + entryName, + valueType + ); + + const newSymbol = Symbol.createWithType( + SymbolFlags.ClassMember, + ClassType.cloneWithLiteral(classInstanceType, enumLiteral) + ); + + classFields.set(entryName, newSymbol); + } + } + + if (initArg.valueExpression.nodeType === ParseNodeType.Dictionary) { + const entries = initArg.valueExpression.entries; + if (entries.length === 0) { + return undefined; + } + + for (const entry of entries) { + // Don't support dictionary expansion expressions. + if (entry.nodeType !== ParseNodeType.DictionaryKeyEntry) { + return undefined; + } + + const nameNode = entry.keyExpression; + const valueType = evaluator.getTypeOfExpression(entry.valueExpression).type; + + if ( + nameNode.nodeType !== ParseNodeType.StringList || + nameNode.strings.length !== 1 || + nameNode.strings[0].nodeType !== ParseNodeType.String + ) { + return undefined; + } + + const entryName = nameNode.strings[0].value; + const enumLiteral = new EnumLiteral( + classType.details.fullName, + classType.details.name, + entryName, + valueType + ); + + const newSymbol = Symbol.createWithType( + SymbolFlags.ClassMember, + ClassType.cloneWithLiteral(classInstanceType, enumLiteral) + ); + + classFields.set(entryName, newSymbol); + } + } + return classType; } diff --git a/packages/pyright-internal/src/tests/samples/enums1.py b/packages/pyright-internal/src/tests/samples/enums1.py index cca626f4e..c826ae579 100644 --- a/packages/pyright-internal/src/tests/samples/enums1.py +++ b/packages/pyright-internal/src/tests/samples/enums1.py @@ -3,7 +3,7 @@ from enum import Enum, IntEnum -TestEnum1 = Enum("TestEnum1", " A B,C , \t D\t") +TestEnum1 = Enum("TestEnum1", " A B, , ,C , \t D\t") TestEnum2 = IntEnum("TestEnum2", "AA BB CC DD") @@ -55,6 +55,52 @@ class TestEnum3(Enum): reveal_type(num_items_in_enum3, expected_text="int") reveal_type(TestEnum3.A.name, expected_text="Literal['A']") -reveal_type(TestEnum3.A._name_, expected_text="Literal['A']") -reveal_type(TestEnum3.A.value, expected_text="Literal[0]") -reveal_type(TestEnum3.A._value_, expected_text="Literal[0]") +reveal_type(TestEnum3.B._name_, expected_text="Literal['B']") +reveal_type(TestEnum3.C.value, expected_text="Literal[2]") +reveal_type(TestEnum3.D._value_, expected_text="Literal[3]") + + +TestEnum4 = Enum("TestEnum4", ["A", "B", "C", "D"]) +reveal_type(TestEnum4.A, expected_text="Literal[TestEnum4.A]") +reveal_type(TestEnum4.D, expected_text="Literal[TestEnum4.D]") +reveal_type(TestEnum4.A.name, expected_text="Literal['A']") +reveal_type(TestEnum4.B._name_, expected_text="Literal['B']") +reveal_type(TestEnum4.C.value, expected_text="Literal[3]") +reveal_type(TestEnum4.D._value_, expected_text="Literal[4]") + +TestEnum5 = Enum("TestEnum5", ("A", "B", "C", "D")) +reveal_type(TestEnum5.A, expected_text="Literal[TestEnum5.A]") +reveal_type(TestEnum5.D, expected_text="Literal[TestEnum5.D]") +reveal_type(TestEnum5.A.name, expected_text="Literal['A']") +reveal_type(TestEnum5.B._name_, expected_text="Literal['B']") +reveal_type(TestEnum5.C.value, expected_text="Literal[3]") +reveal_type(TestEnum5.D._value_, expected_text="Literal[4]") + +d_value = "d" + +TestEnum6 = Enum("TestEnum6", [("A", 1), ("B", [1, 2]), ("C", "c"), ("D", d_value)]) +reveal_type(TestEnum6.A, expected_text="Literal[TestEnum6.A]") +reveal_type(TestEnum6.D, expected_text="Literal[TestEnum6.D]") +reveal_type(TestEnum6.A.name, expected_text="Literal['A']") +reveal_type(TestEnum6.B._name_, expected_text="Literal['B']") +reveal_type(TestEnum6.A.value, expected_text="Literal[1]") +reveal_type(TestEnum6.B.value, expected_text="list[int]") +reveal_type(TestEnum6.C.value, expected_text="Literal['c']") +reveal_type(TestEnum6.D._value_, expected_text="Literal['d']") + +TestEnum7 = Enum("TestEnum7", (("A", 1), ("D", "d"))) +reveal_type(TestEnum7.A, expected_text="Literal[TestEnum7.A]") +reveal_type(TestEnum7.D, expected_text="Literal[TestEnum7.D]") +reveal_type(TestEnum7.A.name, expected_text="Literal['A']") +reveal_type(TestEnum7.A.value, expected_text="Literal[1]") +reveal_type(TestEnum7.D._value_, expected_text="Literal['d']") + +TestEnum8 = Enum("TestEnum8", {"A": 1, "B": [1, 2], "C": "c", "D": d_value}) +reveal_type(TestEnum8.A, expected_text="Literal[TestEnum8.A]") +reveal_type(TestEnum8.D, expected_text="Literal[TestEnum8.D]") +reveal_type(TestEnum8.A.name, expected_text="Literal['A']") +reveal_type(TestEnum8.B._name_, expected_text="Literal['B']") +reveal_type(TestEnum8.A.value, expected_text="Literal[1]") +reveal_type(TestEnum8.B.value, expected_text="list[int]") +reveal_type(TestEnum8.C.value, expected_text="Literal['c']") +reveal_type(TestEnum8.D._value_, expected_text="Literal['d']") From 0e75b39dfa57d303781805174f6e48d03266c2fe Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Apr 2023 15:01:14 -0700 Subject: [PATCH 040/525] Fixed style issue. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d08900287..bbb795342 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9405,7 +9405,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (isClass(unexpandedSubtype) && isKnownEnumType(className)) { - return createEnumType(evaluatorInterface, errorNode, expandedSubtype, argList) ?? UnknownType.create(); + return ( + createEnumType(evaluatorInterface, errorNode, expandedSubtype, argList) ?? + UnknownType.create() + ); } if (className === 'TypedDict') { From 88a52ca34aa69f13ecb6a724481739449d8d53ae Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Apr 2023 17:36:37 -0700 Subject: [PATCH 041/525] Fixed a bug in the expression printer where it didn't properly add parentheses to the LHS of a call expression when necessary. --- .../src/analyzer/parseTreeUtils.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts index 4e12f3cb2..dcdd6400c 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts @@ -189,12 +189,19 @@ export function printExpression(node: ExpressionNode, flags = PrintExpressionFla } case ParseNodeType.Call: { - return ( - printExpression(node.leftExpression, flags) + - '(' + - node.arguments.map((arg) => printArgument(arg, flags)).join(', ') + - ')' - ); + let lhs = printExpression(node.leftExpression, flags); + + // Some left-hand expressions must be parenthesized. + if ( + node.leftExpression.nodeType !== ParseNodeType.MemberAccess && + node.leftExpression.nodeType !== ParseNodeType.Name && + node.leftExpression.nodeType !== ParseNodeType.Index && + node.leftExpression.nodeType !== ParseNodeType.Call + ) { + lhs = `(${lhs})`; + } + + return lhs + '(' + node.arguments.map((arg) => printArgument(arg, flags)).join(', ') + ')'; } case ParseNodeType.Index: { From 660297b48d690b91a07c3cc8b817251570579676 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Apr 2023 17:37:45 -0700 Subject: [PATCH 042/525] Added support for type evaluation of lambdas that are immediately called. The inferred types of the lambda's parameters must be inferred from the argument types in this case. This addresses https://github.com/microsoft/pyright/issues/4947. --- .../src/analyzer/codeFlowEngine.ts | 6 ++ .../src/analyzer/typeEvaluator.ts | 87 ++++++++++++++++++- .../src/tests/samples/lambda10.py | 26 ++++++ .../src/tests/typeEvaluator1.test.ts | 6 ++ 4 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/lambda10.py diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index 8bea7ae3f..df939cd54 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -1374,6 +1374,12 @@ export function getCodeFlowEngine( return false; } + // Don't attempt to evaluate a lambda call. We need to evaluate these in the + // context of its arguments. + if (node.leftExpression.nodeType === ParseNodeType.Lambda) { + return false; + } + // Initially set to false to avoid recursion. callIsNoReturnCache.set(node.id, false); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bbb795342..0498cecfc 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -7628,7 +7628,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferenceContext: InferenceContext | undefined, flags: EvaluatorFlags ): TypeResult { - const baseTypeResult = getTypeOfExpression(node.leftExpression, EvaluatorFlags.DoNotSpecialize); + let baseTypeResult: TypeResult | undefined; + + // Handle immediate calls of lambdas specially. + if (node.leftExpression.nodeType === ParseNodeType.Lambda) { + baseTypeResult = getTypeOfLambdaForCall(node, inferenceContext); + } else { + baseTypeResult = getTypeOfExpression(node.leftExpression, EvaluatorFlags.DoNotSpecialize); + } const argList = node.arguments.map((arg) => { const functionArg: FunctionArgument = { @@ -7741,6 +7748,71 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return typeResult; } + // This function is used in cases where a lambda is defined and immediately + // called. In this case, we can't use normal bidirectional type inference + // to determine the lambda's type. It needs to be inferred from the argument + // types instead. + function getTypeOfLambdaForCall(node: CallNode, inferenceContext: InferenceContext | undefined): TypeResult { + assert(node.leftExpression.nodeType === ParseNodeType.Lambda); + + const expectedType = FunctionType.createSynthesizedInstance(''); + expectedType.details.declaredReturnType = inferenceContext + ? inferenceContext.expectedType + : UnknownType.create(); + + let isArgTypeIncomplete = false; + node.arguments.forEach((arg, index) => { + const argTypeResult = getTypeOfExpression(arg.valueExpression); + if (argTypeResult.isIncomplete) { + isArgTypeIncomplete = true; + } + + FunctionType.addParameter(expectedType, { + category: ParameterCategory.Simple, + name: `p${index.toString()}`, + type: argTypeResult.type, + hasDeclaredType: true, + }); + }); + + // If the lambda's param list ends with a "/" positional parameter separator, + // add a corresponding separator to the expected type. + const lambdaParams = node.leftExpression.parameters; + if (lambdaParams.length > 0) { + const lastParam = lambdaParams[lambdaParams.length - 1]; + if (lastParam.category === ParameterCategory.Simple && !lastParam.name) { + FunctionType.addParameter(expectedType, { + category: ParameterCategory.Simple, + name: '', + type: UnknownType.create(), + }); + } + } + + function getLambdaType() { + return getTypeOfExpression( + node.leftExpression, + EvaluatorFlags.DoNotSpecialize, + makeInferenceContext(expectedType) + ); + } + + // If one or more of the arguments are incomplete, use speculative mode + // for the lambda evaluation because it may need to be reevaluated once + // the arg types are complete. + let typeResult = + isArgTypeIncomplete || speculativeTypeTracker.isSpeculative(node) || inferenceContext?.isTypeIncomplete + ? useSpeculativeMode(node.leftExpression, getLambdaType) + : getLambdaType(); + + // If bidirectional type inference failed, use normal type inference instead. + if (typeResult.typeErrors) { + typeResult = getTypeOfExpression(node.leftExpression, EvaluatorFlags.DoNotSpecialize); + } + + return typeResult; + } + function getTypeOfAssertType(node: CallNode, inferenceContext: InferenceContext | undefined): TypeResult { if ( node.arguments.length !== 2 || @@ -14175,10 +14247,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Determine the minimum number of parameters that are required to // satisfy the lambda. const minLambdaParamCount = node.parameters.filter( - (param) => param.category === ParameterCategory.Simple && param.defaultValue === undefined + (param) => + param.category === ParameterCategory.Simple && !!param.name && param.defaultValue === undefined ).length; const maxLambdaParamCount = node.parameters.filter( - (param) => param.category === ParameterCategory.Simple + (param) => param.category === ParameterCategory.Simple && !!param.name ).length; // Remove any expected subtypes that don't satisfy the minimum @@ -19273,7 +19346,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions continue; } - // The left expression of a call or member access expression is not contextual. + // The left expression of a call or member access expression is not generally contextual. if (parent.nodeType === ParseNodeType.Call || parent.nodeType === ParseNodeType.MemberAccess) { if (nodeToEvaluate === parent.leftExpression) { // Handle the special case where the LHS is a call to super(). @@ -19286,6 +19359,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions continue; } + // Handle the special case where the LHS is a call to a lambda. + if (parent.nodeType === ParseNodeType.Call && nodeToEvaluate.nodeType === ParseNodeType.Lambda) { + nodeToEvaluate = parent; + continue; + } + flags = EvaluatorFlags.DoNotSpecialize; break; } diff --git a/packages/pyright-internal/src/tests/samples/lambda10.py b/packages/pyright-internal/src/tests/samples/lambda10.py new file mode 100644 index 000000000..50831696f --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/lambda10.py @@ -0,0 +1,26 @@ +# This sample tests the handling of immediately-called lambdas. + +# pyright: strict + +from typing import Callable + +func1: Callable[[int, int], int] = lambda x, y, /: ( + lambda x, y: max( + reveal_type(x, expected_text="int"), reveal_type(y, expected_text="int") + ) + // min(x, y) +)(abs(reveal_type(x, expected_text="int")), abs(reveal_type(y, expected_text="int"))) + +v1 = func1(-2, 4) +reveal_type(v1, expected_text="int") + + +v2 = (lambda a, b: a + b)(3, 4) +reveal_type(v2, expected_text="Literal[7]") + + +v3 = (lambda a, b: a + b)("foo", "bar") +reveal_type(v3, expected_text="Literal['foobar']") + +v4 = (lambda a, b: a + b)("foo", (lambda c, d: c + d)("b", "ar")) +reveal_type(v4, expected_text="Literal['foobar']") diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 836b9867a..d8ab4bffb 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -669,6 +669,12 @@ test('Lambda9', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Lambda10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['lambda10.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Call1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['call1.py']); From 4bdc1f6280d028f579802ba0edad3f4c00ca6da8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 16 Apr 2023 01:39:02 -0700 Subject: [PATCH 043/525] Fixed recent regression that causes a false positive when a variable is assigned an expression of `...` within a type stub file and strict type checking is enabled. This addresses https://github.com/microsoft/pyright/issues/4962. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 4 +--- packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts | 3 --- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 0498cecfc..d79678f32 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1303,8 +1303,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getTypeOfEllipsis(flags: EvaluatorFlags, typeResult: TypeResult | undefined, node: ExpressionNode) { if ((flags & EvaluatorFlags.ConvertEllipsisToAny) !== 0) { typeResult = { type: AnyType.create(/* isEllipsis */ true) }; - } else if ((flags & EvaluatorFlags.ConvertEllipsisToUnknown) !== 0) { - typeResult = { type: UnknownType.create() }; } else { const ellipsisType = getBuiltInObject(node, 'ellipsis') || AnyType.create(); typeResult = { type: ellipsisType }; @@ -15776,7 +15774,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let flags: EvaluatorFlags = EvaluatorFlags.None; if (fileInfo.isStubFile) { // An assignment of ellipsis means "Any" within a type stub file. - flags |= EvaluatorFlags.ConvertEllipsisToUnknown; + flags |= EvaluatorFlags.ConvertEllipsisToAny; } if ( diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 81cd13f7a..95c48cb07 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -89,9 +89,6 @@ export const enum EvaluatorFlags { // flagged as errors. ExpectingTypeAnnotation = 1 << 8, - // Interpret an ellipsis type annotation to mean "Unknown". - ConvertEllipsisToUnknown = 1 << 9, - // The Generic class type is allowed in this context. It is // normally not allowed if ExpectingType is set. AllowGenericClassType = 1 << 10, From dcd9e92804aefbf5321e41620f39a4503300c18f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 17 Apr 2023 23:09:47 -0700 Subject: [PATCH 044/525] Fixed a bug that leads to a false positive error when evaluating the type of a method that contains a function-scoped ParamSpec when the method is partially specialized through a binding operation. This addresses https://github.com/microsoft/pyright/issues/4967. --- .../pyright-internal/src/analyzer/types.ts | 7 +++++++ .../src/tests/samples/paramSpec41.py | 18 ++++++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 5 +++++ 3 files changed, 30 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/paramSpec41.py diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 7befcec16..9df2e39e7 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1580,6 +1580,13 @@ export namespace FunctionType { newFunction.details.parameters.length - 2 ); + if (newFunction.specializedTypes) { + newFunction.specializedTypes.parameterTypes = newFunction.specializedTypes.parameterTypes.slice( + 0, + newFunction.specializedTypes.parameterTypes.length - 2 + ); + } + // Update the flags of the function. newFunction.details.flags &= ~FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck; if (paramSpecValue.details.flags & FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck) { diff --git a/packages/pyright-internal/src/tests/samples/paramSpec41.py b/packages/pyright-internal/src/tests/samples/paramSpec41.py new file mode 100644 index 000000000..28dda3bf4 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/paramSpec41.py @@ -0,0 +1,18 @@ +# This sample tests the case where a function-scoped ParamSpec is +# partially specialized through a binding operation. + +from typing import Callable, ParamSpec, Self, reveal_type + +P = ParamSpec("P") + + +class A: + def __init__(self, x: int, y: int, z: str) -> None: + self.a = x + + @classmethod + def f(cls: Callable[P, Self], *args: P.args, **kwargs: P.kwargs) -> int: + return cls(*args, **kwargs).a + + +reveal_type(A.f, expected_text="(x: int, y: int, z: str) -> int") diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 301d4835c..347d8060e 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -988,6 +988,11 @@ test('ParamSpec40', () => { TestUtils.validateResults(results, 0); }); +test('ParamSpec41', () => { + const results = TestUtils.typeAnalyzeSampleFiles(['paramSpec41.py']); + TestUtils.validateResults(results, 0); +}); + test('ClassVar1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['classVar1.py']); From b3f6f4f683d1fbf106ce7659655bb534115dcb4a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Apr 2023 19:32:10 -0700 Subject: [PATCH 045/525] Improved overload filtering for constructor calls when the class defines no `__init__` but does define an overloaded `__new__`. This addresses https://github.com/microsoft/pyright/issues/4972. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d79678f32..7385de17f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8714,8 +8714,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (expectedCallResult.isTypeIncomplete) { isTypeIncomplete = true; } - - overloadsUsedForCall.push(...expectedCallResult.overloadsUsedForCall); } } @@ -8874,6 +8872,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } else if (!newReturnType) { newReturnType = callResult.returnType; + if (overloadsUsedForCall.length === 0) { + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + } + // If the constructor returned an object whose type matches the class of // the original type being constructed, use the return type in case it was // specialized. If it doesn't match, we'll fall back on the assumption that From c05971125698621db1ed37ddf5a4fece8b531578 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Apr 2023 20:35:27 -0700 Subject: [PATCH 046/525] Added "auto fix imports" to settings.json. --- .vscode/settings.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index d9091a02c..2c32994c8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,7 +8,8 @@ "editor.formatOnSave": true }, "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": true, + "source.organizeImports": true }, - "typescript.tsdk": "node_modules/typescript/lib" + "typescript.tsdk": "node_modules/typescript/lib", } From 0d2465da6fedb83de7ac101f5ee6497fbf86213b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Apr 2023 20:37:34 -0700 Subject: [PATCH 047/525] Added limited support for type narrowing of subexpressions of the subject expression for match statements. In particular, added support for discriminated TypedDicts and tuples that are discriminated on literals. This addresses https://github.com/microsoft/pylance-release/issues/4248. --- .../src/analyzer/codeFlowEngine.ts | 28 +++++++ .../src/analyzer/patternMatching.ts | 84 ++++++++++++++++++- .../src/analyzer/typeGuards.ts | 42 +++++----- .../src/tests/samples/match12.py | 35 ++++++++ .../src/tests/typeEvaluator3.test.ts | 8 ++ 5 files changed, 173 insertions(+), 24 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/match12.py diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index df939cd54..b600b4481 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -37,6 +37,7 @@ import { } from './codeFlowTypes'; import { formatControlFlowGraph } from './codeFlowUtils'; import { isMatchingExpression, isPartialMatchingExpression, printExpression } from './parseTreeUtils'; +import { getPatternSubtypeNarrowingCallback } from './patternMatching'; import { SpeculativeTypeTracker } from './typeCacheUtils'; import { narrowForKeyAssignment } from './typedDicts'; import { EvaluatorFlags, TypeEvaluator, TypeResult } from './typeEvaluatorTypes'; @@ -737,6 +738,33 @@ export function getCodeFlowEngine( return setCacheEntry(curFlowNode, typeResult.type, !!typeResult.isIncomplete); } } + } else if (patternFlowNode.statement.nodeType === ParseNodeType.Case) { + const caseStatement = patternFlowNode.statement; + + // See if the reference is a subexpression within the subject expression. + const typeNarrowingCallback = getPatternSubtypeNarrowingCallback( + evaluator, + reference, + patternFlowNode.subjectExpression + ); + + if (typeNarrowingCallback) { + const typeResult = evaluator.evaluateTypeForSubnode(caseStatement, () => { + evaluator.evaluateTypesForCaseStatement(caseStatement); + }); + + if (typeResult) { + const narrowedTypeResult = typeNarrowingCallback(typeResult.type); + + if (narrowedTypeResult) { + return setCacheEntry( + curFlowNode, + narrowedTypeResult.type, + !!typeResult.isIncomplete || !!narrowedTypeResult.isIncomplete + ); + } + } + } } curFlowNode = patternFlowNode.antecedent; continue; diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index fb50f9b9f..9351ef225 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -15,6 +15,7 @@ import { DiagnosticAddendum } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { Localizer } from '../localization/localize'; import { + ArgumentCategory, ExpressionNode, ParseNode, ParseNodeType, @@ -28,10 +29,16 @@ import { PatternValueNode, } from '../parser/parseNodes'; import { getFileInfo } from './analyzerNodeInfo'; +import { CodeFlowReferenceExpressionNode } from './codeFlowTypes'; import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; +import { isMatchingExpression } from './parseTreeUtils'; import { getTypedDictMembersForClass } from './typedDicts'; -import { EvaluatorFlags, TypeEvaluator } from './typeEvaluatorTypes'; -import { enumerateLiteralsForType } from './typeGuards'; +import { EvaluatorFlags, TypeEvaluator, TypeResult } from './typeEvaluatorTypes'; +import { + enumerateLiteralsForType, + narrowTypeForDiscriminatedDictEntryComparison, + narrowTypeForDiscriminatedTupleComparison, +} from './typeGuards'; import { AnyType, ClassType, @@ -104,6 +111,8 @@ interface MappingPatternInfo { }; } +type PatternSubtypeNarrowingCallback = (type: Type) => TypeResult | undefined; + export function narrowTypeBasedOnPattern( evaluator: TypeEvaluator, type: Type, @@ -1523,6 +1532,77 @@ export function validateClassPattern(evaluator: TypeEvaluator, pattern: PatternC } } +// Determines whether the reference expression has a relationship to the subject expression +// in such a way that the type of the reference expression can be narrowed based +// on the narrowed type of the subject expression. +export function getPatternSubtypeNarrowingCallback( + evaluator: TypeEvaluator, + reference: CodeFlowReferenceExpressionNode, + subjectExpression: ExpressionNode +): PatternSubtypeNarrowingCallback | undefined { + // Look for a subject expression of the form [] where + // is either a str (for TypedDict discrimination) or an int + // (for tuple discrimination). + if ( + subjectExpression.nodeType === ParseNodeType.Index && + subjectExpression.items.length === 1 && + !subjectExpression.trailingComma && + subjectExpression.items[0].argumentCategory === ArgumentCategory.Simple && + isMatchingExpression(reference, subjectExpression.baseExpression) + ) { + const indexTypeResult = evaluator.getTypeOfExpression(subjectExpression.items[0].valueExpression); + const indexType = indexTypeResult.type; + + if (isClassInstance(indexType) && isLiteralType(indexType)) { + if (ClassType.isBuiltIn(indexType, ['int', 'str'])) { + const unnarrowedReferenceTypeResult = evaluator.getTypeOfExpression( + subjectExpression.baseExpression, + EvaluatorFlags.DoNotSpecialize + ); + const unnarrowedReferenceType = unnarrowedReferenceTypeResult.type; + + return (narrowedSubjectType: Type) => { + let narrowedType: Type | undefined; + + if (isNever(narrowedSubjectType)) { + narrowedType = NeverType.createNever(); + } else if (isClassInstance(narrowedSubjectType) && narrowedSubjectType.literalValue !== undefined) { + if (ClassType.isBuiltIn(indexType, 'str')) { + narrowedType = narrowTypeForDiscriminatedDictEntryComparison( + evaluator, + unnarrowedReferenceType, + indexType, + narrowedSubjectType, + /* isPositiveTest */ true + ); + } else { + narrowedType = narrowTypeForDiscriminatedTupleComparison( + evaluator, + unnarrowedReferenceType, + indexType, + narrowedSubjectType, + /* isPositiveTest */ true + ); + } + } + + if (!narrowedType) { + return undefined; + } + + return { + type: narrowedType, + isIncomplete: indexTypeResult.isIncomplete || unnarrowedReferenceTypeResult.isIncomplete, + }; + }; + } + } + } + + // TODO - need to implement + return undefined; +} + function reportUnnecessaryPattern(evaluator: TypeEvaluator, pattern: PatternAtomNode, subjectType: Type): void { evaluator.addDiagnostic( getFileInfo(pattern).diagnosticRuleSet.reportUnnecessaryComparison, diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 46110d5a6..6780dfe82 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -29,11 +29,11 @@ import { getScopeForNode } from './scopeUtils'; import { Symbol, SymbolFlags } from './symbol'; import { getTypedDictMembersForClass } from './typedDicts'; import { EvaluatorFlags, TypeEvaluator } from './typeEvaluatorTypes'; -import { EnumLiteral } from './types'; import { ClassType, ClassTypeFlags, combineTypes, + EnumLiteral, FunctionParameter, FunctionType, isAnyOrUnknown, @@ -350,37 +350,35 @@ export function getTypeNarrowingCallback( const indexType = indexTypeResult.type; if (isClassInstance(indexType) && isLiteralType(indexType)) { - if (ClassType.isBuiltIn(indexType, 'str')) { - const rightType = evaluator.getTypeOfExpression(testExpression.rightExpression).type; + if (ClassType.isBuiltIn(indexType, ['str', 'int'])) { + const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression); + const rightType = rightTypeResult.type; + if (isClassInstance(rightType) && rightType.literalValue !== undefined) { return (type: Type) => { - return { - type: narrowTypeForDiscriminatedDictEntryComparison( + let narrowedType: Type; + + if (ClassType.isBuiltIn(indexType, 'str')) { + narrowedType = narrowTypeForDiscriminatedDictEntryComparison( evaluator, type, indexType, rightType, adjIsPositiveTest - ), - isIncomplete: !!indexTypeResult.isIncomplete, - }; - }; - } - } else if (ClassType.isBuiltIn(indexType, 'int')) { - const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression); - const rightType = rightTypeResult.type; - - if (isClassInstance(rightType) && rightType.literalValue !== undefined) { - return (type: Type) => { - return { - type: narrowTypeForDiscriminatedTupleComparison( + ); + } else { + narrowedType = narrowTypeForDiscriminatedTupleComparison( evaluator, type, indexType, rightType, adjIsPositiveTest - ), - isIncomplete: !!rightTypeResult.isIncomplete, + ); + } + + return { + type: narrowedType, + isIncomplete: !!indexTypeResult.isIncomplete || !!rightTypeResult.isIncomplete, }; }; } @@ -1845,7 +1843,7 @@ function narrowTypeForTypedDictKey( // Attempts to narrow a TypedDict type based on a comparison (equal or not // equal) between a discriminating entry type that has a declared literal // type to a literal value. -function narrowTypeForDiscriminatedDictEntryComparison( +export function narrowTypeForDiscriminatedDictEntryComparison( evaluator: TypeEvaluator, referenceType: Type, indexLiteralType: ClassType, @@ -1875,7 +1873,7 @@ function narrowTypeForDiscriminatedDictEntryComparison( return canNarrow ? narrowedType : referenceType; } -function narrowTypeForDiscriminatedTupleComparison( +export function narrowTypeForDiscriminatedTupleComparison( evaluator: TypeEvaluator, referenceType: Type, indexLiteralType: ClassType, diff --git a/packages/pyright-internal/src/tests/samples/match12.py b/packages/pyright-internal/src/tests/samples/match12.py new file mode 100644 index 000000000..1d346b4e6 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/match12.py @@ -0,0 +1,35 @@ +# This sample tests narrowing of subject subexpressions in match statements. + +from typing import Literal, TypedDict + + +class TD1(TypedDict): + name: Literal["a"] + extra_value: int + + +class TD2(TypedDict): + name: Literal["b"] + other_extra_value: int + + +def func1(item: TD1 | TD2): + match item["name"]: + case "c": + reveal_type(item, expected_text="Never") + case "a": + reveal_type(item, expected_text="TD1") + case "b": + reveal_type(item, expected_text="TD2") + + +T1 = tuple[Literal[0], int] +T2 = tuple[Literal[1], str] + + +def func2(item: T1 | T2): + match item[0]: + case 0: + reveal_type(item, expected_text="tuple[Literal[0], int]") + case 1: + reveal_type(item, expected_text="tuple[Literal[1], str]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 082fd71d5..898e386c7 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1214,6 +1214,14 @@ test('Match11', () => { TestUtils.validateResults(analysisResults2, 7); }); +test('Match12', () => { + const configOptions = new ConfigOptions('.'); + + configOptions.defaultPythonVersion = PythonVersion.V3_10; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match12.py'], configOptions); + TestUtils.validateResults(analysisResults, 0); +}); + test('List1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['list1.py']); TestUtils.validateResults(analysisResults, 3); From 3e6251930c97c434a67eedec6d1ebdad7f66d397 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Apr 2023 21:19:58 -0700 Subject: [PATCH 048/525] Enhanced type narrowing in the negative (not matched) case for sequence pattern matching when the subject is a tuple of known length. In cases where the pattern narrows one tuple entry in the positive case, we can eliminate that subtype in the negative case. This addresses part of https://github.com/microsoft/pyright/issues/4971. --- .../src/analyzer/patternMatching.ts | 42 ++++++++++++++++++- .../src/tests/samples/match2.py | 30 ++++++++++++- 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index 9351ef225..385f1f7f9 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -209,6 +209,12 @@ function narrowTypeBasedOnSequencePattern( const narrowedEntryTypes: Type[] = []; let canNarrowTuple = entry.isTuple; + // Don't attempt to narrow tuples in the negative case if the subject + // contains indeterminate-length entries. + if (!isPositiveTest && entry.isIndeterminateLength) { + canNarrowTuple = false; + } + // If the subject has an indeterminate length but the pattern does not accept // an arbitrary number of entries or accepts at least one non-star entry, // we can't prove that it's a definite match. @@ -218,6 +224,7 @@ function narrowTypeBasedOnSequencePattern( } } + let negativeEntriesNarrowed = 0; pattern.entries.forEach((sequenceEntry, index) => { const entryType = getTypeOfPatternSequenceEntry( evaluator, @@ -258,12 +265,45 @@ function narrowTypeBasedOnSequencePattern( } else { if (!isNever(narrowedEntryType)) { isDefiniteMatch = false; + + // Record the number of entries that were narrowed in the negative + // case. We can apply the tuple narrowing only if exactly one entry + // is narrowed. + negativeEntriesNarrowed++; + narrowedEntryTypes.push(narrowedEntryType); + } else { + narrowedEntryTypes.push(entryType); + } + + if (index === pattern.starEntryIndex) { + canNarrowTuple = false; } } }); if (!isPositiveTest) { - return !isDefiniteMatch; + // If the positive case is a definite match, the negative case can + // eliminate this subtype entirely. + if (isDefiniteMatch) { + return false; + } + + // Can we narrow a tuple? + if (canNarrowTuple && negativeEntriesNarrowed === 1) { + const tupleClassType = evaluator.getBuiltInType(pattern, 'tuple'); + if (tupleClassType && isInstantiableClass(tupleClassType)) { + entry.subtype = ClassType.cloneAsInstance( + specializeTupleClass( + tupleClassType, + narrowedEntryTypes.map((t) => { + return { type: t, isUnbounded: false }; + }) + ) + ); + } + } + + return true; } if (isPlausibleMatch) { diff --git a/packages/pyright-internal/src/tests/samples/match2.py b/packages/pyright-internal/src/tests/samples/match2.py index 59da81fbb..209c80b3b 100644 --- a/packages/pyright-internal/src/tests/samples/match2.py +++ b/packages/pyright-internal/src/tests/samples/match2.py @@ -179,7 +179,7 @@ def test_union(value_to_match: Union[Tuple[complex, complex], Tuple[int, str, fl case *g1, 3j: reveal_type(g1, expected_text="list[complex] | list[int | str | float] | list[Any]") - reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | Any") + reveal_type(value_to_match, expected_text="tuple[complex, complex] | Tuple[int, str, float, complex] | Any") case *h1, "hi": reveal_type(h1, expected_text="list[str] | list[Any]") @@ -348,3 +348,31 @@ def test_negative_narrowing3(subj: tuple[Any, Any]): case x: reveal_type(x, expected_text="Never") + + +def test_negative_narrowing4(a: str | None, b: str | None): + match (a, b): + case (None, _) as x: + reveal_type(x, expected_text="tuple[None, str | None]") + case (_, None) as x: + reveal_type(x, expected_text="tuple[str, None]") + case (a, b) as x: + reveal_type(x, expected_text="tuple[str, str]") + + +def test_negative_narrowing5(a: str | None, b: str | None): + match (a, b): + case (None, _) | (_, None) as x: + reveal_type(x, expected_text="tuple[None, str | None] | tuple[str, None]") + case (a, b) as x: + reveal_type(x, expected_text="tuple[str, str]") + + +def test_negative_narrowing6(a: str | None, b: str | None): + match (a, b): + case (None, None) as x: + reveal_type(x, expected_text="tuple[None, None]") + case (None, _) as x if 2 > 1: + reveal_type(x, expected_text="tuple[None, str | None]") + case (a, b) as x: + reveal_type(x, expected_text="tuple[str | None, str | None]") From 198df072ae9d24266b440a810792cbe52e819253 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Apr 2023 21:49:23 -0700 Subject: [PATCH 049/525] Enhanced type narrowing for pattern matching in cases where the subject is a tuple expression and one of the entries is a subexpression that is later used in a case statement block. This addresses part of https://github.com/microsoft/pyright/issues/4971. --- .../pyright-internal/src/analyzer/binder.ts | 11 +++--- .../src/analyzer/patternMatching.ts | 35 ++++++++++++++++++- .../src/tests/samples/match12.py | 29 +++++++++++++++ 3 files changed, 67 insertions(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index 120c896e8..c5c7b05d3 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -24,8 +24,7 @@ import { CreateTypeStubFileAction, Diagnostic } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { getFileName, stripFileExtension } from '../common/pathUtils'; import { convertTextRangeToRange } from '../common/positionUtils'; -import { getEmptyRange } from '../common/textRange'; -import { TextRange } from '../common/textRange'; +import { TextRange, getEmptyRange } from '../common/textRange'; import { Localizer } from '../localization/localize'; import { ArgumentCategory, @@ -85,7 +84,6 @@ import { AnalyzerFileInfo, ImportLookupResult } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { CodeFlowReferenceExpressionNode, - createKeyForReference, FlowAssignment, FlowBranchLabel, FlowCall, @@ -100,6 +98,7 @@ import { FlowPreFinallyGate, FlowVariableAnnotation, FlowWildcardImport, + createKeyForReference, getUniqueFlowNodeId, isCodeFlowSupportedForReference, wildcardImportReferenceKey, @@ -123,7 +122,7 @@ import * as ParseTreeUtils from './parseTreeUtils'; import { ParseTreeWalker } from './parseTreeWalker'; import { NameBindingType, Scope, ScopeType } from './scope'; import * as StaticExpressions from './staticExpressions'; -import { indeterminateSymbolId, Symbol, SymbolFlags } from './symbol'; +import { Symbol, SymbolFlags, indeterminateSymbolId } from './symbol'; import { isConstantName, isPrivateName, isPrivateOrProtectedName } from './symbolNameUtils'; interface MemberAccessInfo { @@ -2200,9 +2199,7 @@ export class Binder extends ParseTreeWalker { // Bind the pattern. this.walk(caseStatement.pattern); - if (isSubjectNarrowable) { - this._createFlowNarrowForPattern(node.subjectExpression, caseStatement); - } + this._createFlowNarrowForPattern(node.subjectExpression, caseStatement); // Apply the guard expression. if (caseStatement.guardExpression) { diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index 385f1f7f9..204b97926 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -1639,7 +1639,40 @@ export function getPatternSubtypeNarrowingCallback( } } - // TODO - need to implement + // Look for a subject expression that contains the reference + // expression as an entry in a tuple. + if (subjectExpression.nodeType === ParseNodeType.Tuple) { + const matchingEntryIndex = subjectExpression.expressions.findIndex((expr) => + isMatchingExpression(reference, expr) + ); + if (matchingEntryIndex >= 0) { + const typeResult = evaluator.getTypeOfExpression(subjectExpression.expressions[matchingEntryIndex]); + + return (narrowedSubjectType: Type) => { + let canNarrow = true; + const narrowedSubtypes: Type[] = []; + + doForEachSubtype(narrowedSubjectType, (subtype) => { + if ( + isClassInstance(subtype) && + ClassType.isBuiltIn(subtype, 'tuple') && + subtype.tupleTypeArguments && + matchingEntryIndex < subtype.tupleTypeArguments.length && + subtype.tupleTypeArguments.every((e) => !e.isUnbounded) + ) { + narrowedSubtypes.push(subtype.tupleTypeArguments[matchingEntryIndex].type); + } else { + canNarrow = false; + } + }); + + return canNarrow + ? { type: combineTypes(narrowedSubtypes), isIncomplete: typeResult.isIncomplete } + : undefined; + }; + } + } + return undefined; } diff --git a/packages/pyright-internal/src/tests/samples/match12.py b/packages/pyright-internal/src/tests/samples/match12.py index 1d346b4e6..954a0d10b 100644 --- a/packages/pyright-internal/src/tests/samples/match12.py +++ b/packages/pyright-internal/src/tests/samples/match12.py @@ -33,3 +33,32 @@ def func2(item: T1 | T2): reveal_type(item, expected_text="tuple[Literal[0], int]") case 1: reveal_type(item, expected_text="tuple[Literal[1], str]") + + +def func3(a: object, b: int) -> None: + match a, b: + case (complex(), 3): + reveal_type(a, expected_text="complex") + reveal_type(b, expected_text="Literal[3]") + + +Token = ( + str + | tuple[Literal["define"], str, str] + | tuple[Literal["include"], str] + | tuple[Literal["use"], str, int, int] +) + + +def func4(token: Token): + match token: + case str(x): + reveal_type(token, expected_text="str") + case "define", _, _: + reveal_type(token, expected_text="tuple[Literal['define'], str, str]") + case "include", _: + reveal_type(token, expected_text="tuple[Literal['include'], str]") + case "use", _, _, _: + reveal_type(token, expected_text="tuple[Literal['use'], str, int, int]") + case _: + reveal_type(token, expected_text="Never") From 9f3e150e6f85995a5a007a10fe4d46f7d15bf7df Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Apr 2023 21:55:44 -0700 Subject: [PATCH 050/525] Published 1.1.304 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 5d0c65cda..8aee7919c 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.303", + "version": "1.1.304", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 23d8e8008..c500d831e 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.303", + "version": "1.1.304", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.303", + "version": "1.1.304", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 78fb57b79..dc61de5de 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.303", + "version": "1.1.304", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index ebd4a770d..4ed8a303c 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.303", + "version": "1.1.304", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.303", + "version": "1.1.304", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 7691364fd..3c707d036 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.303", + "version": "1.1.304", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 45b62f9ce..6dff684dd 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.303", + "version": "1.1.304", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.303", + "version": "1.1.304", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 3810f56e8..94a1152eb 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.303", + "version": "1.1.304", "private": true, "license": "MIT", "author": { From 4be1806058337df1e08aa75b054563b137ab34e7 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Apr 2023 22:14:39 -0700 Subject: [PATCH 051/525] Removed "simple-import-sort/imports" eslint rule, which appears to conflict in style with the auto-fix rules. --- .eslintrc.json | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 622290c69..d9295198b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,29 +23,6 @@ "no-inner-declarations": 0, "no-unused-vars": "off", "no-undef": 0, - "simple-import-sort/imports": [ - "error", - { - "groups": [ - // Defaults from simple-import-sort, but with local packages between third-party and relative imports. - [ - "^\\u0000" - ], - [ - "^@?\\w" - ], - [ - "^[^.]" - ], - [ - "^pyright" - ], - [ - "^\\." - ] - ] - } - ], "simple-import-sort/exports": "error", "@typescript-eslint/explicit-function-return-type": 0, "@typescript-eslint/explicit-module-boundary-types": 0, From 5b6a1d3b73c34617414624baef50bd326b138e5b Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 19 Apr 2023 08:33:37 -0700 Subject: [PATCH 052/525] [PylanceBot] Pull Pylance with Pyright 1.1.304 (#4975) --- .../src/analyzer/docStringConversion.ts | 5 +- .../languageService/callHierarchyProvider.ts | 22 ++- .../src/languageService/completionProvider.ts | 182 ++++++++++++++++-- .../src/languageService/importAdder.ts | 134 ++++++++++--- .../src/languageService/indentationUtils.ts | 7 +- .../src/tests/completions.test.ts | 182 ++++++++++++++++++ .../src/tests/docStringConversion.test.ts | 14 +- .../completions.override2.fourslash.ts | 15 ++ .../src/tests/fourslash/fourslash.ts | 13 +- ...incomingCalls.aliasedFunction.fourslash.ts | 11 +- ...incomingCalls.aliasedVariable.fourslash.ts | 6 +- ...rarchy.incomingCalls.function.fourslash.ts | 19 +- ...utgoingCalls.aliasedFunction1.fourslash.ts | 57 ++++++ ...utgoingCalls.aliasedFunction2.fourslash.ts | 47 +++++ ...rarchy.outgoingCalls.function.fourslash.ts | 41 ++++ .../src/tests/harness/fourslash/testState.ts | 52 ++++- .../src/tests/importAdder.test.ts | 98 +++++++++- .../src/tests/indentationUtils.ptvs.test.ts | 4 +- .../src/tests/indentationUtils.test.ts | 22 +++ 19 files changed, 850 insertions(+), 81 deletions(-) create mode 100644 packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.aliasedFunction1.fourslash.ts create mode 100644 packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.aliasedFunction2.fourslash.ts create mode 100644 packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.function.fourslash.ts diff --git a/packages/pyright-internal/src/analyzer/docStringConversion.ts b/packages/pyright-internal/src/analyzer/docStringConversion.ts index fded1bfac..3648c25be 100644 --- a/packages/pyright-internal/src/analyzer/docStringConversion.ts +++ b/packages/pyright-internal/src/analyzer/docStringConversion.ts @@ -583,13 +583,12 @@ class DocStringConverter { } // catch-all for styles except reST - const hasOddNumColons = - !line?.endsWith(':') && !line?.endsWith('::') && (line.match(/:/g)?.length ?? 0) % 2 === 1; // odd number of colons + const hasArguments = !line?.endsWith(':') && !line?.endsWith('::') && !!line.match(/^\s*.*?\w+\s*:\s*\w+/g); // reSt params. Attempt to put directives lines into their own paragraphs. const restDirective = DirectivesExtraNewlineRegExp.test(line); //line.match(/^\s*:param/); - if (hasOddNumColons || restDirective) { + if (hasArguments || restDirective) { const prev = this._lineAt(this._lineNum - 1); // Force a line break, if previous line doesn't already have a break or is blank if (!this._builder.endsWith(MarkdownLineBreak) && !this._builder.endsWith(`\n\n`) && !_isHeader(prev)) { diff --git a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts index 5fd803258..d622abb5b 100644 --- a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts +++ b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts @@ -109,11 +109,15 @@ export class CallHierarchyProvider { // Find the parse node root corresponding to the function or class. let parseRoot: ParseNode | undefined; - if (declaration.type === DeclarationType.Function) { - parseRoot = declaration.node; - } else if (declaration.type === DeclarationType.Class) { + const resolvedDecl = evaluator.resolveAliasDeclaration(declaration, /* resolveLocalNames */ true); + if (!resolvedDecl) { + return undefined; + } + if (resolvedDecl.type === DeclarationType.Function) { + parseRoot = resolvedDecl.node; + } else if (resolvedDecl.type === DeclarationType.Class) { // Look up the __init__ method for this class. - const classType = evaluator.getTypeForDeclaration(declaration)?.type; + const classType = evaluator.getTypeForDeclaration(resolvedDecl)?.type; if (classType && isInstantiableClass(classType)) { // Don't perform a recursive search of parent classes in this // case because we don't want to find an inherited __init__ @@ -175,6 +179,10 @@ export class CallHierarchyProvider { } } let symbolName; + + // Although the LSP specification requires a URI, we are using a file path + // here because it is converted to the proper URI in LanguageServerBase. + // This simplifies our code and ensures compatibility with the LSP specification. let callItemUri; if (targetDecl.type === DeclarationType.Alias) { symbolName = (referencesResult.nodeAtOffset as NameNode).value; @@ -304,6 +312,12 @@ class FindOutgoingCallTreeWalker extends ParseTreeWalker { this._outgoingCalls.push(outgoingCall); } + if (outgoingCall && outgoingCall.to.name !== nameNode.value) { + // If both the function and its alias are called in the same function, + // the name of the call item will be the resolved declaration name, not the alias. + outgoingCall.to.name = DeclarationUtils.getNameFromDeclaration(resolvedDecl) ?? nameNode.value; + } + const fromRange: Range = convertOffsetsToRange( nameNode.start, nameNode.start + nameNode.length, diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 86b6853f2..6ed4293c2 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -36,6 +36,7 @@ import { ImportedModuleDescriptor, ImportResolver } from '../analyzer/importReso import { isTypedKwargs } from '../analyzer/parameterUtils'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { getCallNodeAndActiveParameterIndex } from '../analyzer/parseTreeUtils'; +import { getTypeShedFallbackPath } from '../analyzer/pythonPathUtils'; import { getScopeForNode } from '../analyzer/scopeUtils'; import { isStubFile, SourceMapper } from '../analyzer/sourceMapper'; import { Symbol, SymbolTable } from '../analyzer/symbol'; @@ -48,6 +49,7 @@ import { printLiteralValue } from '../analyzer/typePrinter'; import { ClassType, FunctionType, + isAny, isClass, isClassInstance, isFunction, @@ -55,6 +57,7 @@ import { isModule, isNoneInstance, isOverloadedFunction, + isTypeVar, isUnbound, isUnknown, Type, @@ -76,11 +79,12 @@ import { lookUpObjectMember, } from '../analyzer/typeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; -import { appendArray } from '../common/collectionUtils'; +import { addIfNotNull, appendArray } from '../common/collectionUtils'; import { ConfigOptions, ExecutionEnvironment } from '../common/configOptions'; import * as debug from '../common/debug'; import { fail } from '../common/debug'; import { fromLSPAny, toLSPAny } from '../common/lspUtils'; +import { combinePaths } from '../common/pathUtils'; import { convertOffsetToPosition, convertPositionToOffset } from '../common/positionUtils'; import { PythonVersion } from '../common/pythonVersion'; import * as StringUtils from '../common/stringUtils'; @@ -121,6 +125,7 @@ import { } from './completionProviderUtils'; import { DocumentSymbolCollector } from './documentSymbolCollector'; import { IndexResults } from './documentSymbolProvider'; +import { ImportAdder, ImportData } from './importAdder'; import { getAutoImportText, getDocumentationPartsForTypeAndDecl } from './tooltipUtils'; namespace Keywords { @@ -1205,6 +1210,9 @@ export class CompletionProvider { const staticmethod = decorators?.some((d) => this._checkDecorator(d, 'staticmethod')) ?? false; const classmethod = decorators?.some((d) => this._checkDecorator(d, 'classmethod')) ?? false; + const fallbackPath = getTypeShedFallbackPath(this._importResolver.fileSystem); + const typingFilePath = fallbackPath ? combinePaths(fallbackPath, 'stdlib/typing.pyi') : undefined; + const appendMember = (map: CompletionMap, member: ClassMember, name: string) => { if ( !isInstantiableClass(member.classType) || @@ -1264,11 +1272,12 @@ export class CompletionProvider { return; } - const methodSignature = this._printMethodSignature(classResults.classType, funcType); + const importAdder = new ImportAdder(this._configOptions, this._importResolver, this._evaluator); + const result = this._printMethodSignature(importAdder, classResults.classType, funcType, typingFilePath); let text: string; if (isStubFile(this._filePath)) { - text = `${methodSignature}: ...`; + text = `${result.methodSignature}: ...`; } else { const methodBody = this._printOverriddenMethodBody( classResults.classType, @@ -1276,17 +1285,30 @@ export class CompletionProvider { isProperty, decl ); - text = `${methodSignature}:\n${methodBody}`; + text = `${result.methodSignature}:\n${methodBody}`; } const textEdit = this._createReplaceEdits(priorWord, partialName, text); + // This will add new import statements, but for now, it won't add new + // `TypeVar` statement such as TypeVar, TypeVarTuple, ParamSpec even if + // the overridden method uses them. + const additionalTextEdits = importAdder.applyImports( + result.importData, + this._filePath, + this._parseResults, + this._parseResults.parseTree.length, + ImportFormat.Absolute, + this._cancellationToken + ); + this._addSymbol(name, symbol, partialName.value, map, { // method signature already contains () funcParensDisabled: true, edits: { format: this._options.snippet ? InsertTextFormat.Snippet : undefined, textEdit, + additionalTextEdits, }, }); }; @@ -1321,14 +1343,19 @@ export class CompletionProvider { return TextEdit.replace(range, text); } - private _printMethodSignature(classType: ClassType, funcType: FunctionType): string { - const decl = funcType.details.declaration!; + private _printMethodSignature( + importAdder: ImportAdder, + classType: ClassType, + funcType: FunctionType, + typingFilePath: string | undefined + ): { methodSignature: string; importData: ImportData } { + const declaration = funcType.details.declaration!; let ellipsisForDefault: boolean | undefined; if (isStubFile(this._filePath)) { // In stubs, always use "...". ellipsisForDefault = true; - } else if (classType.details.moduleName === decl.moduleName) { + } else if (classType.details.moduleName === declaration.moduleName) { // In the same file, always print the full default. ellipsisForDefault = false; } @@ -1351,6 +1378,15 @@ export class CompletionProvider { : fallbackType; }; + const importData = createImportData( + importAdder, + funcType, + declaration, + typingFilePath, + (t) => this._sourceMapper.findClassDeclarationsByType(this._filePath, t), + this._cancellationToken + ); + const paramList = funcType.details.parameters.map((param, index) => { let paramString = ''; if (param.category === ParameterCategory.VarArgList) { @@ -1363,8 +1399,6 @@ export class CompletionProvider { paramString += param.name; } - // Currently, we don't automatically add import if the type used in the annotation is not imported - // in current file. if (param.typeAnnotation) { const originalType = funcType.details.parameters[index].type; const typeToPrint = getTypeToPrint( @@ -1417,7 +1451,133 @@ export class CompletionProvider { methodSignature += ' -> ' + strReturnType; } - return methodSignature; + return { methodSignature, importData }; + + function createImportData( + importAdder: ImportAdder, + funcType: FunctionType, + declaration: FunctionDeclaration, + typingFilePath: string | undefined, + declarationGetter: (t: ClassType) => Declaration[], + token: CancellationToken + ) { + // Handle regular case. In this case, we can get import info from + // import used in the file where the function is declared. + const ranges: TextRange[] = []; + + addIfNotNull(ranges, TextRange.combine(declaration.node.parameters)); + addIfNotNull(ranges, declaration.node.returnTypeAnnotation); + addIfNotNull(ranges, declaration.node.functionAnnotationComment); + + const moduleNode = ParseTreeUtils.getModuleNode(declaration.node); + const importData = importAdder.collectImportsForSymbolsUsed(moduleNode!, ranges, token); + + // Handle special case where function has type arguments. In this case, + // we can't use the file the function is declared in because it doesn't + // have those type arguments. It just has the type vars. + // We could walk the mro to discover imports for the type arguments, but + // for now, instead, this creates import statement out of type arguments itself. + const effectiveTypes: [t: Type, n: ExpressionNode][] = []; + funcType.details.parameters.forEach((param, index) => { + if (!param.typeAnnotation) { + return; + } + + const originalType = funcType.details.parameters[index].type; + if (!isTypeVar(originalType)) { + return; + } + + const effectiveType = FunctionType.getEffectiveParameterType(funcType, index); + effectiveTypes.push([effectiveType, param.typeAnnotation]); + }); + + const node = declaration.node; + const originalType = funcType.details.declaredReturnType; + if ( + originalType && + isTypeVar(originalType) && + (node.returnTypeAnnotation || node.functionAnnotationComment?.returnTypeAnnotation) + ) { + effectiveTypes.push([ + FunctionType.getSpecializedReturnType(funcType)!, + node.returnTypeAnnotation ?? node.functionAnnotationComment!.returnTypeAnnotation, + ]); + } + + const visited = new Set(); + const addImport = (t: Type, n: ExpressionNode) => { + if (visited.has(t)) { + return; + } + + visited.add(t); + + // We need to special case `Any` since we can't get decl from `Any`. + if (isAny(t)) { + if (!typingFilePath) { + return; + } + + importAdder.addImportInfo({ filePath: typingFilePath, nameInfo: { name: 'Any' } }, importData); + } + + if (!isClass(t)) { + return; + } + + // We need to special case `List`, `Dict` and `Tuple` since user might have + // used typing.List or typing.Dict in the code, but we internally already + // converted them to built-in `list` and `dict`. + // We could avoid doing this if class type holds onto decl it was created from + // if it is not synthesized like func type. + if (typingFilePath && ClassType.isBuiltIn(t)) { + const name = t.aliasName ?? t.details.name; + if (t.details.moduleName === 'typing' && name) { + importAdder.addImportInfo( + { + filePath: typingFilePath, + nameInfo: { name }, + }, + importData + ); + } else if (t.details.moduleName === 'builtins' && t.aliasName) { + importAdder.addImportInfo( + { + filePath: typingFilePath, + nameInfo: { name }, + }, + importData + ); + } + } else { + const decls = declarationGetter(t); + if (decls.length === 0) { + return; + } + + importAdder.addDeclaration(decls[0], n, importData); + } + + if (t.isTypeArgumentExplicit) { + t.typeArguments?.forEach((ta) => { + addImport(ta, n); + doForEachSubtype(ta, (subtype) => { + addImport(subtype, n); + }); + }); + } + }; + + effectiveTypes.forEach(([t, n]) => { + addImport(t, n); + doForEachSubtype(t, (subtype) => { + addImport(subtype, n); + }); + }); + + return importData; + } function getReturnTypeStr( evaluator: TypeEvaluator, @@ -1428,7 +1588,7 @@ export class CompletionProvider { const typeToPrint = getTypeToPrint(FunctionType.getSpecializedReturnType(funcType), originalType); const node = funcType.details.declaration!.node; - if (!node.returnTypeAnnotation && !node.functionAnnotationComment) { + if (!node.returnTypeAnnotation && !node.functionAnnotationComment?.returnTypeAnnotation) { return undefined; } diff --git a/packages/pyright-internal/src/languageService/importAdder.ts b/packages/pyright-internal/src/languageService/importAdder.ts index fe3935397..c9a9f8051 100644 --- a/packages/pyright-internal/src/languageService/importAdder.ts +++ b/packages/pyright-internal/src/languageService/importAdder.ts @@ -46,22 +46,24 @@ import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; import { ScopeType } from '../analyzer/scope'; import { getScopeForNode } from '../analyzer/scopeUtils'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; +import { TypeCategory } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { addIfUnique, appendArray, createMapFromItems, getOrAdd, removeArrayElements } from '../common/collectionUtils'; -import { ConfigOptions } from '../common/configOptions'; +import { ConfigOptions, ExecutionEnvironment } from '../common/configOptions'; import { isArray } from '../common/core'; import { TextEditAction } from '../common/editAction'; import { getDirectoryPath } from '../common/pathUtils'; import { convertOffsetToPosition } from '../common/positionUtils'; import { TextEditTracker } from '../common/textEditTracker'; import { TextRange } from '../common/textRange'; -import { ModuleNameNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; +import { ExpressionNode, ModuleNameNode, ModuleNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { ImportFormat } from './autoImporter'; export interface ImportData { containsUnreferenceableSymbols: boolean; declarations: Map; + importInfos?: { filePath: string; nameInfo: ImportNameInfo }[]; } export class ImportAdder { @@ -71,9 +73,15 @@ export class ImportAdder { private _evaluator: TypeEvaluator ) {} - collectImportsForSymbolsUsed(parseResults: ParseResults, range: TextRange, token: CancellationToken): ImportData { - const collector = new NameCollector(this._evaluator, parseResults, range, token); - collector.walk(parseResults.parseTree); + collectImportsForSymbolsUsed( + root: ParseResults | ModuleNode, + ranges: TextRange | TextRange[], + token: CancellationToken + ): ImportData { + root = isParseResults(root) ? root.parseTree : root; + ranges = isArray(ranges) ? ranges : [ranges]; + const collector = new NameCollector(this._evaluator, root, ranges, token); + collector.walk(root); return { containsUnreferenceableSymbols: collector.containsUnreferenceableSymbols, @@ -81,6 +89,31 @@ export class ImportAdder { }; } + addImportInfo(importInfo: { filePath: string; nameInfo: ImportNameInfo }, importData: ImportData) { + importData.importInfos = importData.importInfos ?? []; + importData.importInfos.push(importInfo); + } + + addDeclaration(declaration: Declaration, node: ExpressionNode, importData: ImportData) { + // We don't need import statement if decl is from builtins or synthesized. + if (declaration.moduleName === 'builtins' || declaration.moduleName === '') { + return false; + } + + const name = + node.nodeType === ParseNodeType.Name + ? node + : node.nodeType === ParseNodeType.MemberAccess + ? node.memberName + : undefined; + if (!name) { + return false; + } + + getOrAdd(importData.declarations, declaration, () => []).push(name); + return true; + } + applyImports( result: ImportData, filePath: string, @@ -150,33 +183,50 @@ export class ImportAdder { continue; } - const relativePath = getRelativeModuleName(this._importResolver.fileSystem, filePath, importInfo.filePath); - const moduleAndType = this._importResolver.getModuleNameForImport(importInfo.filePath, execEnv); - if (!moduleAndType.moduleName) { - if (!importInfo.nameInfo.name) { - continue; - } + this._appendImportNameInfo(filePath, execEnv, importFormat, importInfo, importNameInfo); + } - // module can't be addressed by absolute path in "from import" statement. - // ex) namespace package at [workspace root] or [workspace root]\__init__.py(i) - // use relative path - importFormat = ImportFormat.Relative; + if (result.importInfos) { + for (const importInfo of result.importInfos) { + this._appendImportNameInfo(filePath, execEnv, importFormat, importInfo, importNameInfo); } - - addIfUnique( - importNameInfo, - { - name: importInfo.nameInfo.name, - alias: importInfo.nameInfo.alias, - module: moduleAndType, - nameForImportFrom: importFormat === ImportFormat.Relative ? relativePath : undefined, - }, - (a, b) => this._areSame(a, b) - ); } + return importNameInfo; } + private _appendImportNameInfo( + filePath: string, + execEnv: ExecutionEnvironment, + importFormat: ImportFormat, + importInfo: { filePath: string; nameInfo: ImportNameInfo }, + importNameInfo: ImportNameWithModuleInfo[] + ) { + const relativePath = getRelativeModuleName(this._importResolver.fileSystem, filePath, importInfo.filePath); + const moduleAndType = this._importResolver.getModuleNameForImport(importInfo.filePath, execEnv); + if (!moduleAndType.moduleName) { + if (!importInfo.nameInfo.name) { + return; + } + + // module can't be addressed by absolute path in "from import" statement. + // ex) namespace package at [workspace root] or [workspace root]\__init__.py(i) + // use relative path + importFormat = ImportFormat.Relative; + } + + addIfUnique( + importNameInfo, + { + name: importInfo.nameInfo.name, + alias: importInfo.nameInfo.alias, + module: moduleAndType, + nameForImportFrom: importFormat === ImportFormat.Relative ? relativePath : undefined, + }, + (a, b) => this._areSame(a, b) + ); + } + private _tryProcessExistingImports( moduleAndInfo: [string, ImportNameWithModuleInfo[]], importStatements: ImportStatements, @@ -353,20 +403,20 @@ class NameCollector extends ParseTreeWalker { constructor( private _evaluator: TypeEvaluator, - private _parseResults: ParseResults, - private _range: TextRange, + private _root: ModuleNode, + private _ranges: TextRange[], private _token: CancellationToken ) { super(); - this._filePath = getFileInfo(this._parseResults.parseTree).filePath; + this._filePath = getFileInfo(this._root).filePath; // For now, we assume the given range is at right boundary such as statement, statements, expression or expressions. // In future, we might consider validating the range and adjusting it to the right boundary if needed. } override walk(node: ParseNode) { - if (!TextRange.overlapsRange(this._range, node)) { + if (!this._ranges.some((r) => TextRange.overlapsRange(r, node))) { return; } @@ -379,7 +429,7 @@ class NameCollector extends ParseTreeWalker { } override visitName(name: NameNode) { - if (!TextRange.containsRange(this._range, name)) { + if (!this._ranges.some((r) => TextRange.containsRange(r, name))) { return false; } @@ -391,6 +441,13 @@ class NameCollector extends ParseTreeWalker { return false; } + const type = this._evaluator.getType(name); + if (type?.category === TypeCategory.TypeVar) { + // Currently, we don't add import statement for type variables + // such as TypeVar, TypeVarTuple, ParamSpec, etc. + return false; + } + const dottedName = getDottedName(getDottedNameWithGivenNodeAsLastName(name)); if (!dottedName) { // Not dotted name @@ -467,7 +524,7 @@ class NameCollector extends ParseTreeWalker { private _handleName(name: NameNode, decls: Declaration[]) { for (const decl of decls) { - if (decl.node && TextRange.containsRange(this._range, decl.node)) { + if (decl.node && this._ranges.some((r) => TextRange.containsRange(r, decl.node))) { // Make sure our range doesn't already contain them. continue; } @@ -504,3 +561,16 @@ class NameCollector extends ParseTreeWalker { getOrAdd(this.declsForSymbols, decl, () => []).push(name); } } + +function isParseResults(obj: any): obj is ParseResults { + return ( + obj && + obj.text !== undefined && + obj.parseTree && + obj.importedModules && + obj.futureImports && + obj.tokenizerOutput && + obj.containsWildcardImport !== undefined && + obj.typingSymbolAliases + ); +} diff --git a/packages/pyright-internal/src/languageService/indentationUtils.ts b/packages/pyright-internal/src/languageService/indentationUtils.ts index 3b3000b58..5af501172 100644 --- a/packages/pyright-internal/src/languageService/indentationUtils.ts +++ b/packages/pyright-internal/src/languageService/indentationUtils.ts @@ -453,13 +453,18 @@ function _getIndentationForNextLine(parseResults: ParseResults, prevToken: Token // var_three, var_four) return baseIndentation + tabSize; } else if (whitespaceOnly) { - return _getIndentation(parseResults, token.start, false).indentation + tabSize; + // This is the case where the user put a newline right after a (, [, or {. We want + // to be one tab over from the [. + const line = convertOffsetToPosition(token.start, lines).line; + return getIndentationFromText(parseResults, line).indentation + tabSize; } else { // In PEP 8, this should be this case here: // # Aligned with opening delimiter. // def long_function_name(var_one, var_two, // var_three, var_four) // + 1 is to accommodate for the parenthesis. + // + // This same indentation applies for function calls or just dictionary or list assignments. return token.start - line.start + 1; } } else if (_isOpenToken(token) && closeCount > 0) { diff --git a/packages/pyright-internal/src/tests/completions.test.ts b/packages/pyright-internal/src/tests/completions.test.ts index c4ba2410a..05f2cfcd3 100644 --- a/packages/pyright-internal/src/tests/completions.test.ts +++ b/packages/pyright-internal/src/tests/completions.test.ts @@ -1030,6 +1030,34 @@ test('override __call__', async () => { newText: '__call__(self, parser: ArgumentParser, namespace: Namespace, values: str | Sequence[Any] | None, option_string: str | None = None) -> None:\n return super().__call__(parser, namespace, values, option_string)', }, + additionalTextEdits: [ + { + range: { + start: { + line: 0, + character: 27, + }, + end: { + line: 0, + character: 27, + }, + }, + newText: ', ArgumentParser, Namespace', + }, + { + range: { + start: { + line: 0, + character: 27, + }, + end: { + line: 0, + character: 27, + }, + }, + newText: '\nfrom collections.abc import Sequence\nfrom typing import Any', + }, + ], }, ], }, @@ -1185,3 +1213,157 @@ test('annotation using comment', async () => { }, }); }); + +test('adding import for type arguments', async () => { + const code = ` +// @filename: __builtins__.pyi +//// class MyBuiltIns: ... + +// @filename: test.py +//// from typing import Generic, TypeVar +//// +//// T = TypeVar("T") +//// +//// class A(Generic[T]): +//// def foo(self, a: T) -> T: +//// return a +//// +//// class Action: +//// pass +//// +//// class B(A[Action]): +//// pass +//// +//// class C(A[MyBuiltIns]): +//// pass + +// @filename: test1.py +//// from test import B +//// +//// class U(B): +//// def [|foo/*marker1*/|] + +// @filename: test2.py +//// from test import C +//// +//// class U(C): +//// def [|foo/*marker2*/|] + `; + + const state = parseAndGetTestState(code).state; + + state.openFiles(state.testData.files.map((f) => f.fileName)); + + await state.verifyCompletion('included', 'markdown', { + marker1: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker1'), + newText: 'foo(self, a: Action) -> Action:\n return super().foo(a)', + }, + additionalTextEdits: [ + { + range: { + start: { + line: 0, + character: 18, + }, + end: { + line: 0, + character: 18, + }, + }, + newText: ', Action', + }, + ], + }, + ], + }, + marker2: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker2'), + newText: 'foo(self, a: MyBuiltIns) -> MyBuiltIns:\n return super().foo(a)', + }, + additionalTextEdits: [], + }, + ], + }, + }); +}); + +test('Complex type arguments', async () => { + const code = ` +// @filename: test.py +//// from typing import Generic, TypeVar, Any, List, Dict, Tuple, Mapping, Union +//// +//// T = TypeVar("T") +//// +//// class A(Generic[T]): +//// def foo(self, a: T) -> T: +//// return a +//// +//// class B(A[Union[Tuple[list, dict], tuple[Mapping[List[A[int]], Dict[str, Any]], float]]]): +//// pass + +// @filename: test1.py +//// from test import B +//// +//// class U(B): +//// def [|foo/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + + state.openFiles(state.testData.files.map((f) => f.fileName)); + + await state.verifyCompletion('included', 'markdown', { + marker: { + completions: [ + { + label: 'foo', + kind: CompletionItemKind.Method, + textEdit: { + range: state.getPositionRange('marker'), + newText: + 'foo(self, a: Tuple[list, dict] | tuple[Mapping[List[A[int]], Dict[str, Any]], float]) -> Tuple[list, dict] | tuple[Mapping[List[A[int]], Dict[str, Any]], float]:\n return super().foo(a)', + }, + additionalTextEdits: [ + { + range: { + start: { + line: 0, + character: 17, + }, + end: { + line: 0, + character: 17, + }, + }, + newText: 'A, ', + }, + { + range: { + start: { + line: 0, + character: 0, + }, + end: { + line: 0, + character: 0, + }, + }, + newText: 'from typing import Any, Dict, List, Mapping, Tuple\n', + }, + ], + }, + ], + }, + }); +}); diff --git a/packages/pyright-internal/src/tests/docStringConversion.test.ts b/packages/pyright-internal/src/tests/docStringConversion.test.ts index 8e8634e55..03b00513b 100644 --- a/packages/pyright-internal/src/tests/docStringConversion.test.ts +++ b/packages/pyright-internal/src/tests/docStringConversion.test.ts @@ -64,7 +64,7 @@ test('InlineLiterals', () => { 'This paragraph talks about ``foo``\n' + 'which is related to :something:`bar`, and probably `qux`:something_else:.\n'; - const markdown = 'This paragraph talks about `foo`\n' + 'which is related to `bar`, and probably `qux`.\n'; + const markdown = 'This paragraph talks about `foo` \n' + 'which is related to `bar`, and probably `qux`.\n'; _testConvertToMarkdown(docstring, markdown); }); @@ -859,6 +859,18 @@ dtype : str, np.dtype, or ExtensionDtype, optional _testConvertToMarkdown(docstring, markdown); }); +test(`OddnumberOfColons`, () => { + const docstring = ` + @param 'original:str' or 'original:list': original string to compare + @param 'new:str': the new string to compare + @return 'int': levenshtein difference + @return 'list': levenshtein difference if list + `; + const markdown = `@param 'original:str' or 'original:list': original string to compare\n\n@param 'new:str': the new string to compare\n\n@return 'int': levenshtein difference\n\n@return 'list': levenshtein difference if list`; + + _testConvertToMarkdown(docstring, markdown); +}); + function _testConvertToMarkdown(docstring: string, expectedMarkdown: string) { const actualMarkdown = convertDocStringToMarkdown(docstring); diff --git a/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts index 2476c7267..60e893c26 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts @@ -58,6 +58,21 @@ range: helper.getPositionRange('marker3'), newText: '__call__(self, *args: Any, **kwds: Any) -> Any:\n ${0:pass}', }, + additionalTextEdits: [ + { + range: { + start: { + line: 0, + character: 0, + }, + end: { + line: 0, + character: 0, + }, + }, + newText: 'from typing import Any\n\n\n', + }, + ], }, ], }, diff --git a/packages/pyright-internal/src/tests/fourslash/fourslash.ts b/packages/pyright-internal/src/tests/fourslash/fourslash.ts index 332ba1f62..612795ed7 100644 --- a/packages/pyright-internal/src/tests/fourslash/fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/fourslash.ts @@ -63,6 +63,12 @@ declare namespace _ { commitCharacters?: string[]; } + interface FourSlashCallHierarchyItem { + filePath: string; + name: string; + range: PositionRange; + } + interface TextRange { start: number; length: number; @@ -305,7 +311,12 @@ declare namespace _ { }): void; verifyShowCallHierarchyGetIncomingCalls(map: { [marker: string]: { - references: DocumentRange[]; + items: FourSlashCallHierarchyItem[]; + }; + }): void; + verifyShowCallHierarchyGetOutgoingCalls(map: { + [marker: string]: { + items: FourSlashCallHierarchyItem[]; }; }): void; verifyHighlightReferences(map: { diff --git a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.ts index bf6f67a7b..f0caa9bf8 100644 --- a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.ts @@ -21,17 +21,16 @@ { const ranges = helper.getRanges(); + const itemList = ranges.map((range) => { + return { filePath: range.fileName, range: helper.convertPositionRange(range), name: 'callByAlias' }; + }); helper.verifyShowCallHierarchyGetIncomingCalls({ marker1: { - references: ranges.map((r) => { - return { path: r.fileName, range: helper.convertPositionRange(r) }; - }), + items: itemList, }, marker2: { - references: ranges.map((r) => { - return { path: r.fileName, range: helper.convertPositionRange(r) }; - }), + items: itemList, }, }); } diff --git a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.ts index a9229f765..200f7cdbd 100644 --- a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.ts @@ -9,13 +9,9 @@ //// print(greeting) { - const ranges = helper.getRanges(); - helper.verifyShowCallHierarchyGetIncomingCalls({ marker: { - references: ranges.map((r) => { - return { path: r.fileName, range: helper.convertPositionRange(r) }; - }), + items: [], }, }); } diff --git a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.ts index b8dfbf599..b6c8e44b7 100644 --- a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.ts @@ -21,22 +21,23 @@ { const ranges = helper.getRanges(); + const references = ranges.map((range) => { + return { path: range.fileName, range: helper.convertPositionRange(range) }; + }); + const itemList = [ + { filePath: references[0].path, range: references[0].range, name: 'callByName' }, + { filePath: references[1].path, range: references[1].range, name: 'callByName2' }, + ]; helper.verifyShowCallHierarchyGetIncomingCalls({ marker1: { - references: ranges.map((r) => { - return { path: r.fileName, range: helper.convertPositionRange(r) }; - }), + items: itemList, }, marker2: { - references: ranges.map((r) => { - return { path: r.fileName, range: helper.convertPositionRange(r) }; - }), + items: itemList, }, marker3: { - references: ranges.map((r) => { - return { path: r.fileName, range: helper.convertPositionRange(r) }; - }), + items: itemList, }, }); } diff --git a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.aliasedFunction1.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.aliasedFunction1.fourslash.ts new file mode 100644 index 000000000..e4d1620ba --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.aliasedFunction1.fourslash.ts @@ -0,0 +1,57 @@ +/// + +// @filename: declare.py +//// def func(): +//// func2() +//// return func3() +//// +//// def [|func2|](): +//// print(1) +//// +//// def [|func3|](): +//// return 1 + +// @filename: consume.py +//// +//// from declare import func as /*marker1*/foobar +//// +//// def callByAlias(): +//// /*marker2*/foobar() + +// @filename: consume2.py +//// from declare import func as foobar +//// from declare import func +//// +//// def callByBoth1(): +//// func() +//// /*marker3*/foobar() +//// +//// def callByBoth2(): +//// /*marker4*/foobar() +//// func() + +{ + const ranges = helper.getRanges(); + const references = ranges.map((range) => { + return { path: range.fileName, range: helper.convertPositionRange(range) }; + }); + const itemList = [ + { filePath: references[0].path, range: references[0].range, name: 'func2' }, + { filePath: references[1].path, range: references[1].range, name: 'func3' }, + ]; + + helper.verifyShowCallHierarchyGetOutgoingCalls({ + marker1: { + items: itemList, + }, + marker2: { + items: itemList, + }, + marker3: { + items: itemList, + }, + marker4: { + items: itemList, + }, + }); +} diff --git a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.aliasedFunction2.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.aliasedFunction2.fourslash.ts new file mode 100644 index 000000000..66d0d5a28 --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.aliasedFunction2.fourslash.ts @@ -0,0 +1,47 @@ +/// + +// @filename: declare.py +//// def [|func|](): +//// func2() +//// +//// def func2(): +//// print(1) + +// @filename: consume.py +//// from declare import func as [|foobar|] +//// from declare import func +//// +//// def /*marker1*/callByAlias(): +//// foobar() +//// +//// def /*marker2*/callByName(): +//// func() +//// +//// def /*marker3*/callByBoth1(): +//// func() +//// foobar() +//// +//// def /*marker4*/callByBoth2(): +//// foobar() +//// func() +{ + const ranges = helper.getRanges(); + const references = ranges.map((range) => { + return { path: range.fileName, range: helper.convertPositionRange(range) }; + }); + + helper.verifyShowCallHierarchyGetOutgoingCalls({ + marker1: { + items: [{ filePath: references[0].path, range: references[0].range, name: 'foobar' }], + }, + marker2: { + items: [{ filePath: references[0].path, range: references[0].range, name: 'func' }], + }, + marker3: { + items: [{ filePath: references[0].path, range: references[0].range, name: 'func' }], + }, + marker4: { + items: [{ filePath: references[0].path, range: references[0].range, name: 'func' }], + }, + }); +} diff --git a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.function.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.function.fourslash.ts new file mode 100644 index 000000000..ae3d4bd9b --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.outgoingCalls.function.fourslash.ts @@ -0,0 +1,41 @@ +/// + +// @filename: declare.py +//// def /*marker1*/func(): +//// func2() +//// return func3() +//// +//// def [|func2|](): +//// print(1) +//// +//// def [|func3|](): +//// return 1 + +// @filename: consume.py +//// from declare import /*marker2*/func +//// +//// def callByName(): +//// /*marker3*/func() + +{ + const ranges = helper.getRanges(); + const references = ranges.map((range) => { + return { path: range.fileName, range: helper.convertPositionRange(range) }; + }); + const itemList = [ + { filePath: references[0].path, range: references[0].range, name: 'func2' }, + { filePath: references[1].path, range: references[1].range, name: 'func3' }, + ]; + + helper.verifyShowCallHierarchyGetOutgoingCalls({ + marker1: { + items: itemList, + }, + marker2: { + items: itemList, + }, + marker3: { + items: itemList, + }, + }); +} diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index f1d599719..1991694d2 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -1183,7 +1183,7 @@ export class TestState { verifyShowCallHierarchyGetIncomingCalls(map: { [marker: string]: { - references: DocumentRange[]; + items: _.FourSlashCallHierarchyItem[]; }; }) { this.analyze(); @@ -1196,17 +1196,59 @@ export class TestState { continue; } - const expected = map[name].references; + const expectedFilePath = map[name].items.map((x) => x.filePath); + const expectedRange = map[name].items.map((x) => x.range); + const expectedName = map[name].items.map((x) => x.name); const position = this.convertOffsetToPosition(fileName, marker.position); const actual = this.program.getIncomingCallsForPosition(fileName, position, CancellationToken.None); - assert.strictEqual(actual?.length ?? 0, expected.length, `${name} has failed`); + assert.strictEqual(actual?.length ?? 0, expectedFilePath.length, `${name} has failed`); + assert.strictEqual(actual?.length ?? 0, expectedRange.length, `${name} has failed`); + assert.strictEqual(actual?.length ?? 0, expectedName.length, `${name} has failed`); + + if (actual) { + for (const a of actual) { + assert.strictEqual(expectedRange?.filter((e) => this._deepEqual(a.from.range, e)).length, 1); + assert.strictEqual(expectedName?.filter((e) => this._deepEqual(a.from.name, e)).length, 1); + assert.ok(expectedFilePath?.filter((e) => this._deepEqual(a.from.uri, e)).length >= 1); + } + } + } + } + + verifyShowCallHierarchyGetOutgoingCalls(map: { + [marker: string]: { + items: _.FourSlashCallHierarchyItem[]; + }; + }) { + this.analyze(); + + for (const marker of this.getMarkers()) { + const fileName = marker.fileName; + const name = this.getMarkerName(marker); + + if (!(name in map)) { + continue; + } + + const expectedFilePath = map[name].items.map((x) => x.filePath); + const expectedRange = map[name].items.map((x) => x.range); + const expectedName = map[name].items.map((x) => x.name); + + const position = this.convertOffsetToPosition(fileName, marker.position); + + const actual = this.program.getOutgoingCallsForPosition(fileName, position, CancellationToken.None); + + assert.strictEqual(actual?.length ?? 0, expectedFilePath.length, `${name} has failed`); + assert.strictEqual(actual?.length ?? 0, expectedRange.length, `${name} has failed`); + assert.strictEqual(actual?.length ?? 0, expectedName.length, `${name} has failed`); if (actual) { for (const a of actual) { - assert.equal(expected?.filter((e) => this._deepEqual(a.from.range, e.range)).length, 1); - assert.equal(expected?.filter((e) => this._deepEqual(a.from.uri, e.path)).length, 1); + assert.strictEqual(expectedRange?.filter((e) => this._deepEqual(a.to.range, e)).length, 1); + assert.strictEqual(expectedName?.filter((e) => this._deepEqual(a.to.name, e)).length, 1); + assert.ok(expectedFilePath?.filter((e) => this._deepEqual(a.to.uri, e)).length >= 1); } } } diff --git a/packages/pyright-internal/src/tests/importAdder.test.ts b/packages/pyright-internal/src/tests/importAdder.test.ts index 44e902c70..d7b44bab7 100644 --- a/packages/pyright-internal/src/tests/importAdder.test.ts +++ b/packages/pyright-internal/src/tests/importAdder.test.ts @@ -9,11 +9,14 @@ import assert from 'assert'; import { CancellationToken } from 'vscode-languageserver'; +import { Declaration } from '../analyzer/declaration'; +import { findNodeByOffset } from '../analyzer/parseTreeUtils'; import { TextEditAction } from '../common/editAction'; import { TextEditTracker } from '../common/textEditTracker'; import { rangesAreEqual, TextRange } from '../common/textRange'; import { ImportFormat } from '../languageService/autoImporter'; import { ImportAdder } from '../languageService/importAdder'; +import { NameNode } from '../parser/parseNodes'; import { parseAndGetTestState, TestState } from './harness/fourslash/testState'; import { convertFileEditActionToString, convertRangeToFileEditAction } from './testStateUtils'; @@ -1369,6 +1372,94 @@ test('dont include token not contained in the span', () => { testImportMove(code, ImportFormat.Absolute); }); +test('multiple ranges', () => { + const code = ` +// @filename: test1.py +//// class A: +//// pass +//// +//// class B: +//// pass +//// +//// class N: +//// pass +//// +//// a = [|/*src*/A()|] +//// n = N() +//// b = [|B()|] + +// @filename: nested/__init__.py +//// [|{|"r":"from test1 import A, B!n!!n!!n!"|}|][|/*dest*/|] + `; + testImportMove(code, ImportFormat.Absolute); +}); + +test('adding decl manually', () => { + const code = ` +// @filename: test1.py +//// class A: +//// pass +//// +//// a = [|/*src*/A|]() + +// @filename: test2.py +//// [|{|"r":"from test1 import A!n!!n!!n!"|}|][|/*dest*/|] + `; + + const state = parseAndGetTestState(code).state; + const src = state.getMarkerByName('src'); + const dest = state.getMarkerByName('dest'); + + const parseResults = state.workspace.service.test_program.getBoundSourceFile(src.fileName)!.getParseResults()!; + const node = findNodeByOffset(parseResults.parseTree, src.position) as NameNode; + const decl = state.workspace.service.test_program.evaluator?.getDeclarationsForNameNode(node)![0]; + + const importAdder = new ImportAdder(state.configOptions, state.importResolver, state.program.evaluator!); + const importData = { containsUnreferenceableSymbols: false, declarations: new Map() }; + importAdder.addDeclaration(decl!, node, importData); + + const edits = importAdder.applyImports( + importData, + dest.fileName, + state.program.getBoundSourceFile(dest.fileName)!.getParseResults()!, + dest.position, + ImportFormat.Absolute, + CancellationToken.None + ); + + verifyEdits(edits, state); +}); + +test('adding import info manually', () => { + const code = ` +// @filename: test1.py +//// class [|/*src*/A|]: +//// pass + +// @filename: test2.py +//// [|{|"r":"from test1 import A!n!!n!!n!"|}|][|/*dest*/|] + `; + + const state = parseAndGetTestState(code).state; + const src = state.getMarkerByName('src'); + const dest = state.getMarkerByName('dest'); + + const importAdder = new ImportAdder(state.configOptions, state.importResolver, state.program.evaluator!); + const importData = { containsUnreferenceableSymbols: false, declarations: new Map() }; + importAdder.addImportInfo({ filePath: src.fileName, nameInfo: { name: 'A' } }, importData); + + const edits = importAdder.applyImports( + importData, + dest.fileName, + state.program.getBoundSourceFile(dest.fileName)!.getParseResults()!, + dest.position, + ImportFormat.Absolute, + CancellationToken.None + ); + + verifyEdits(edits, state); +}); + function testImportMoveWithTracker(code: string, importFormat = ImportFormat.Absolute) { const state = parseAndGetTestState(code).state; @@ -1400,10 +1491,15 @@ function testImportMove(code: string, importFormat = ImportFormat.Absolute) { const src = state.getRangeByMarkerName('src')!; const dest = state.getMarkerByName('dest'); + const ranges = state + .getRanges() + .filter((r) => r.fileName === src.fileName) + .map((r) => TextRange.fromBounds(r.pos, r.end)); + const importMover = new ImportAdder(state.configOptions, state.importResolver, state.program.evaluator!); const importData = importMover.collectImportsForSymbolsUsed( state.program.getBoundSourceFile(src.fileName)!.getParseResults()!, - TextRange.fromBounds(src.pos, src.end), + ranges.length === 1 ? ranges[0] : ranges, CancellationToken.None ); diff --git a/packages/pyright-internal/src/tests/indentationUtils.ptvs.test.ts b/packages/pyright-internal/src/tests/indentationUtils.ptvs.test.ts index 8f007ff5b..acdd59264 100644 --- a/packages/pyright-internal/src/tests/indentationUtils.ptvs.test.ts +++ b/packages/pyright-internal/src/tests/indentationUtils.ptvs.test.ts @@ -130,7 +130,7 @@ test('list with spaces', () => { //// `; - testIndentation(code, 8); + testIndentation(code, 17); }); test('list with nested', () => { @@ -259,7 +259,7 @@ test('dict first key with list', () => { //// `; - testIndentation(code, 4); + testIndentation(code, 10); }); test('dict key list element on its own line', () => { diff --git a/packages/pyright-internal/src/tests/indentationUtils.test.ts b/packages/pyright-internal/src/tests/indentationUtils.test.ts index afcc42c02..d4abe3360 100644 --- a/packages/pyright-internal/src/tests/indentationUtils.test.ts +++ b/packages/pyright-internal/src/tests/indentationUtils.test.ts @@ -442,6 +442,28 @@ test('empty multiline list', () => { testIndentation(code, 4); }); +test('empty multiline list 2', () => { + const code = ` +//// [ +//// [|/*marker*/|] +//// ] + `; + + testIndentation(code, 4); +}); + +test('nested empty multiline list', () => { + const code = ` +//// [ +//// [ +//// [|/*marker*/|] +//// ] +//// ] + `; + + testIndentation(code, 8); +}); + test('unfinished block', () => { const code = ` //// def foo(a: Union[int, str]): From 18930a495ba594e71139852987ad282cea5516f5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 19 Apr 2023 18:21:02 -0700 Subject: [PATCH 053/525] Fixed a bug that resulted in incorrect type comparison results (which led to incorrect type narrowing) when `Annotated` was used in some circumstances. This addresses https://github.com/microsoft/pyright/issues/4977. --- .../pyright-internal/src/analyzer/types.ts | 10 ++++++++-- .../src/tests/samples/match4.py | 20 +++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 9df2e39e7..1fa1232ba 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -2534,8 +2534,14 @@ export function isTypeSame(type1: Type, type2: Type, options: TypeSameOptions = return false; } - if (!options.ignoreTypeFlags && type1.flags !== type2.flags) { - return false; + if (!options.ignoreTypeFlags) { + // The Annotated flag should never be considered for type compatibility. + const type1Flags = type1.flags & ~TypeFlags.Annotated; + const type2Flags = type2.flags & ~TypeFlags.Annotated; + + if (type1Flags !== type2Flags) { + return false; + } } if (recursionCount > maxTypeRecursionCount) { diff --git a/packages/pyright-internal/src/tests/samples/match4.py b/packages/pyright-internal/src/tests/samples/match4.py index 48b723312..4e7d7fca8 100644 --- a/packages/pyright-internal/src/tests/samples/match4.py +++ b/packages/pyright-internal/src/tests/samples/match4.py @@ -1,8 +1,9 @@ # This sample tests type checking for match statements (as # described in PEP 634) that contain value patterns. +from dataclasses import dataclass from enum import Enum, auto -from typing import Tuple, TypeVar, Union +from typing import Annotated, Tuple, TypeVar, Union from http import HTTPStatus @@ -92,6 +93,21 @@ def test_enum_narrowing(m: Union[Medal, Color, int]): reveal_type(m, expected_text="int | Literal[Medal.bronze]") +@dataclass +class DC1: + a: Annotated[Color, str] + + +def test_enum_narrowing_with_annotated(subj: DC1) -> None: + match subj.a: + case Color.red: + pass + case Color.blue: + pass + case x: + reveal_type(x, expected_text="Literal[Color.green]") + + class Foo(Enum): bar = auto() @@ -110,7 +126,7 @@ class Numbers: INFINITY = float("inf") -def parse_float(subj: float): +def test_enum_narrowing_with_inf(subj: float): match subj: case Numbers.ONE: reveal_type(subj, expected_text="Literal[1]") From fa6dddf1fc40e60da616e6071a05211e5134bbce Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 20 Apr 2023 01:19:33 -0700 Subject: [PATCH 054/525] Fixed bug that led to a false positive error when a ParamSpec captures a signature that includes an `*args` or `**kwargs` and then is called using an unpacked iterable (for `*args`) or an unpacked Mapping (for `**kwargs`). This addresses https://github.com/microsoft/pyright/issues/4974. --- .../src/analyzer/typeEvaluator.ts | 28 ++++++++++++++++--- .../src/tests/samples/paramSpec9.py | 21 ++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 2 +- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 7385de17f..cad7e92bc 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -151,7 +151,7 @@ import { getLastTypedDeclaredForSymbol } from './symbolUtils'; import { SpeculativeTypeTracker } from './typeCacheUtils'; import { assignToTypedDict, - assignTypedDictToTypedDict as assignTypedDictToTypedDict, + assignTypedDictToTypedDict, createTypedDictType, createTypedDictTypeInlined, getTypedDictMembersForClass, @@ -11365,6 +11365,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); const signatureTracker = new UniqueSignatureTracker(); + let sawUnpackedListArgument = false; argList.forEach((arg) => { if (arg.argumentCategory === ArgumentCategory.Simple) { @@ -11434,9 +11435,28 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions reportedArgError = true; } } + } else if (arg.argumentCategory === ArgumentCategory.UnpackedList) { + sawUnpackedListArgument = true; + + // See if there is an *args parameter. + const argsParam = paramSpecParams.find( + (param) => param.category === ParameterCategory.VarArgList && param.name + ); + if (argsParam && paramMap.has(argsParam.name!)) { + // TODO - validate args type + paramMap.delete(argsParam.name!); + } } else { - // TODO - handle *args and **kwargs - paramMap.clear(); + assert(arg.argumentCategory === ArgumentCategory.UnpackedDictionary); + + // See if there is an *kwargs parameter. + const kwargsParam = paramSpecParams.find( + (param) => param.category === ParameterCategory.VarArgDictionary + ); + if (kwargsParam && paramMap.has(kwargsParam.name!)) { + // TODO - validate kwargs type + paramMap.delete(kwargsParam.name!); + } } }); @@ -11450,7 +11470,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return paramInfo.category === ParameterCategory.Simple && !paramInfo.hasDefault; }); - if (unassignedParams.length > 0 && !paramSpecType.details.paramSpec) { + if (unassignedParams.length > 0 && !paramSpecType.details.paramSpec && !sawUnpackedListArgument) { const missingParamNames = unassignedParams.map((p) => `"${p}"`).join(', '); addDiagnostic( AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, diff --git a/packages/pyright-internal/src/tests/samples/paramSpec9.py b/packages/pyright-internal/src/tests/samples/paramSpec9.py index b5a87830c..643e40ae9 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec9.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec9.py @@ -55,3 +55,24 @@ def func1(func: Callable[P, Any], *args: P.args, **kwargs: P.kwargs): def func2(func: Callable[P, Any], *args: P.args, **kwargs: P.kwargs): func1(func, *args, **kwargs) + + +def args_b(*args: int, b: str) -> int: + return 1 + + +some_args = (1, 2, 3) + +# This should generate an error because of too few arguments. +twice(args_b) + +# This should generate an error because of too few arguments. +twice(args_b, 3) + +# This should generate an error because it's missing a keyword argument. +twice(args_b, *some_args, 3) + +twice(args_b, *some_args, b="3") + +# This should generate an error because the keyword argument type is incorrect. +twice(args_b, *some_args, b=3) diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 347d8060e..b55745001 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -830,7 +830,7 @@ test('ParamSpec8', () => { test('ParamSpec9', () => { const results = TestUtils.typeAnalyzeSampleFiles(['paramSpec9.py']); - TestUtils.validateResults(results, 9); + TestUtils.validateResults(results, 13); }); test('ParamSpec10', () => { From 4a327d7fe7a46bb732552b0019f89b032b4dbb85 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 20 Apr 2023 02:31:46 -0700 Subject: [PATCH 055/525] Fixed false positive error in edge case for ParamSpec call. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index cad7e92bc..bd64257c1 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11366,6 +11366,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const signatureTracker = new UniqueSignatureTracker(); let sawUnpackedListArgument = false; + let sawUnpackedDictArgument = false; argList.forEach((arg) => { if (arg.argumentCategory === ArgumentCategory.Simple) { @@ -11447,6 +11448,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions paramMap.delete(argsParam.name!); } } else { + sawUnpackedDictArgument = true; assert(arg.argumentCategory === ArgumentCategory.UnpackedDictionary); // See if there is an *kwargs parameter. @@ -11470,7 +11472,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return paramInfo.category === ParameterCategory.Simple && !paramInfo.hasDefault; }); - if (unassignedParams.length > 0 && !paramSpecType.details.paramSpec && !sawUnpackedListArgument) { + if ( + unassignedParams.length > 0 && + !paramSpecType.details.paramSpec && + !sawUnpackedListArgument && + !sawUnpackedDictArgument + ) { const missingParamNames = unassignedParams.map((p) => `"${p}"`).join(', '); addDiagnostic( AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, From 39f501cb8572be63f63f69be652479aea4f9d20c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 20 Apr 2023 18:03:49 -0700 Subject: [PATCH 056/525] Added diagnostic for `# pyright` comment that controls file-level settings that is not on its own line (i.e. doesn't start in column 1). This addresses https://github.com/microsoft/pyright/issues/4982. --- .../src/analyzer/commentUtils.ts | 22 ++++++++++++++++++- .../src/analyzer/sourceFile.ts | 13 +++++++---- .../src/localization/localize.ts | 2 ++ .../src/localization/package.nls.en-us.json | 2 ++ .../src/tests/checker.test.ts | 2 +- .../src/tests/samples/pyrightComment1.py | 9 ++++++++ 6 files changed, 44 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/commentUtils.ts b/packages/pyright-internal/src/analyzer/commentUtils.ts index fc3f641fa..70493a944 100644 --- a/packages/pyright-internal/src/analyzer/commentUtils.ts +++ b/packages/pyright-internal/src/analyzer/commentUtils.ts @@ -19,7 +19,9 @@ import { getStrictModeNotOverriddenRules, } from '../common/configOptions'; import { assert } from '../common/debug'; +import { DiagnosticAddendum } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; +import { convertOffsetToPosition } from '../common/positionUtils'; import { TextRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { Localizer } from '../localization/localize'; @@ -35,6 +37,7 @@ export interface CommentDiagnostic { export function getFileLevelDirectives( tokens: TextRangeCollection, + lines: TextRangeCollection, defaultRuleSet: DiagnosticRuleSet, useStrict: boolean, diagnostics: CommentDiagnostic[] @@ -52,7 +55,12 @@ export function getFileLevelDirectives( const textRange: TextRange = { start: comment.start, length: comment.length }; const value = _trimTextWithRange(comment.value, textRange); - ruleSet = _parsePyrightComment(value, textRange, ruleSet, diagnostics); + const isCommentOnOwnLine = (): boolean => { + const curTokenLineOffset = convertOffsetToPosition(comment.start, lines).character; + return curTokenLineOffset <= 1; + }; + + ruleSet = _parsePyrightComment(value, textRange, isCommentOnOwnLine, ruleSet, diagnostics); } } } @@ -122,6 +130,7 @@ function _overwriteRules(ruleSet: DiagnosticRuleSet, overrideRuleSet: Diagnostic function _parsePyrightComment( commentValue: string, commentRange: TextRange, + isCommentOnOwnLine: () => boolean, ruleSet: DiagnosticRuleSet, diagnostics: CommentDiagnostic[] ) { @@ -135,6 +144,17 @@ function _parsePyrightComment( return ruleSet; } + if (!isCommentOnOwnLine()) { + const diagAddendum = new DiagnosticAddendum(); + diagAddendum.addMessage(Localizer.DiagnosticAddendum.pyrightCommentIgnoreTip()); + const diag: CommentDiagnostic = { + message: Localizer.Diagnostic.pyrightCommentNotOnOwnLine() + diagAddendum.getString(), + range: commentRange, + }; + + diagnostics.push(diag); + } + const operandList = operands.split(','); // If it contains a "strict" operand, replace the existing diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 54b96e7a8..81f24ebf8 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -27,8 +27,7 @@ import { } from '../common/configOptions'; import { ConsoleInterface, StandardConsole } from '../common/console'; import { assert } from '../common/debug'; -import { TaskListToken } from '../common/diagnostic'; -import { convertLevelToCategory, Diagnostic, DiagnosticCategory } from '../common/diagnostic'; +import { convertLevelToCategory, Diagnostic, DiagnosticCategory, TaskListToken } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { DiagnosticSink, TextRangeDiagnosticSink } from '../common/diagnosticSink'; import { TextEditAction } from '../common/editAction'; @@ -43,8 +42,13 @@ import { DocumentRange, getEmptyRange, Position, Range, TextRange } from '../com import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; import { ModuleSymbolMap } from '../languageService/autoImporter'; -import { AbbreviationMap, CompletionOptions, CompletionResults } from '../languageService/completionProvider'; -import { CompletionItemData, CompletionProvider } from '../languageService/completionProvider'; +import { + AbbreviationMap, + CompletionItemData, + CompletionOptions, + CompletionProvider, + CompletionResults, +} from '../languageService/completionProvider'; import { DefinitionFilter, DefinitionProvider } from '../languageService/definitionProvider'; import { DocumentHighlightProvider } from '../languageService/documentHighlightProvider'; import { DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; @@ -919,6 +923,7 @@ export class SourceFile { const commentDiags: CommentUtils.CommentDiagnostic[] = []; this._diagnosticRuleSet = CommentUtils.getFileLevelDirectives( this._parseResults.tokenizerOutput.tokens, + this._parseResults.tokenizerOutput.lines, configOptions.diagnosticRuleSet, useStrict, commentDiags diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index dfe64202e..d68a41868 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -729,6 +729,7 @@ export namespace Localizer { export const pyrightCommentInvalidDiagnosticSeverityValue = () => getRawString('Diagnostic.pyrightCommentInvalidDiagnosticSeverityValue'); export const pyrightCommentMissingDirective = () => getRawString('Diagnostic.pyrightCommentMissingDirective'); + export const pyrightCommentNotOnOwnLine = () => getRawString('Diagnostic.pyrightCommentNotOnOwnLine'); export const pyrightCommentUnknownDirective = () => new ParameterizedString<{ directive: string }>(getRawString('Diagnostic.pyrightCommentUnknownDirective')); export const pyrightCommentUnknownDiagnosticRule = () => @@ -1240,6 +1241,7 @@ export namespace Localizer { new ParameterizedString<{ sourceType: string; destType: string }>( getRawString('DiagnosticAddendum.protocolSourceIsNotConcrete') ); + export const pyrightCommentIgnoreTip = () => getRawString('DiagnosticAddendum.pyrightCommentIgnoreTip'); export const readOnlyAttribute = () => new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.readOnlyAttribute')); export const seeDeclaration = () => getRawString('DiagnosticAddendum.seeDeclaration'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 0ec04db15..358b22426 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -353,6 +353,7 @@ "pyrightCommentInvalidDiagnosticBoolValue": "Pyright comment directive must be followed by \"=\" and a value of true or false", "pyrightCommentInvalidDiagnosticSeverityValue": "Pyright comment directive must be followed by \"=\" and a value of true, false, error, warning, information, or none", "pyrightCommentMissingDirective": "Pyright comment must be followed by a directive (basic or strict) or a diagnostic rule", + "pyrightCommentNotOnOwnLine": "Pyright comments used to control file-level settings must appear on their own line", "pyrightCommentUnknownDirective": "\"{directive}\" is an unknown directive for pyright comment; expected \"strict\" or \"basic\"", "pyrightCommentUnknownDiagnosticRule": "\"{rule}\" is an unknown diagnostic rule for pyright comment", "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\" is invalid value for pyright comment; expected true, false, error, warning, information, or none", @@ -634,6 +635,7 @@ "protocolMemberClassVar": "\"{name}\" is not a class variable", "protocolMemberMissing": "\"{name}\" is not present", "protocolSourceIsNotConcrete": "\"{sourceType}\" is not a concrete class type and cannot be assigned to type \"{destType}\"", + "pyrightCommentIgnoreTip": "Use \"# pyright: ignore[] to suppress diagnostics for a single line", "readOnlyAttribute": "Attribute \"{name}\" is read-only", "seeDeclaration": "See declaration", "seeClassDeclaration": "See class declaration", diff --git a/packages/pyright-internal/src/tests/checker.test.ts b/packages/pyright-internal/src/tests/checker.test.ts index 172906a07..3dda23c1f 100644 --- a/packages/pyright-internal/src/tests/checker.test.ts +++ b/packages/pyright-internal/src/tests/checker.test.ts @@ -350,7 +350,7 @@ test('PyrightComment1', () => { const configOptions = new ConfigOptions('.'); const analysisResults = TestUtils.typeAnalyzeSampleFiles(['pyrightComment1.py'], configOptions); - TestUtils.validateResults(analysisResults, 7); + TestUtils.validateResults(analysisResults, 9); }); test('DuplicateImports1', () => { diff --git a/packages/pyright-internal/src/tests/samples/pyrightComment1.py b/packages/pyright-internal/src/tests/samples/pyrightComment1.py index d51206cee..fb7a9c6d1 100644 --- a/packages/pyright-internal/src/tests/samples/pyrightComment1.py +++ b/packages/pyright-internal/src/tests/samples/pyrightComment1.py @@ -17,3 +17,12 @@ # This should generate two errors because the rule is invalid. # pyright: reportBlahBlah = true + +# This should generate an error because it's not on its own line. +a = 1 # pyright: reportGeneralTypeIssues=false + + +def foo(): + # This should generate an error because it's not on its own line. + # pyright: reportGeneralTypeIssues=false + pass From b2470d7291d5f336c0fac2d8483a7136a08735a5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 20 Apr 2023 20:49:27 -0700 Subject: [PATCH 057/525] Fixed bug that resulted in a false positive error when importing a type alias via a wildcard import. This addresses https://github.com/microsoft/pyright/issues/4983. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bd64257c1..057fa24a9 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21512,8 +21512,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions /* allowExternallyHiddenAccess */ AnalyzerNodeInfo.getFileInfo(decl.node).isStubFile ) ?? decl; - const isExplicitTypeAlias = isExplicitTypeAliasDeclaration(decl); - const isTypeAlias = isExplicitTypeAlias || isPossibleTypeAliasOrTypedDict(decl); + const isExplicitTypeAlias = isExplicitTypeAliasDeclaration(resolvedDecl); + const isTypeAlias = isExplicitTypeAlias || isPossibleTypeAliasOrTypedDict(resolvedDecl); if (isExplicitTypeAlias) { sawExplicitTypeAlias = true; From 91b7fbf0a1ce413a6c956d40bb87a0d503b2980a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Apr 2023 15:18:23 -0700 Subject: [PATCH 058/525] Fixed bug in inference of generator function return type that led to false positive error. The "send" type (the second of three type arguments for a `Generator`) cannot be inferred precisely, so it should be `Unknown` rather than `None`. This addresses https://github.com/microsoft/pylance-release/issues/4275. --- .../src/analyzer/typeEvaluator.ts | 10 ++-- .../src/analyzer/typeUtils.ts | 4 +- .../src/tests/samples/coroutines3.py | 7 +-- .../src/tests/samples/recursiveTypeAlias4.py | 4 +- .../src/tests/samples/variadicTypeVar19.py | 54 ++++++++++++------- 5 files changed, 48 insertions(+), 31 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 057fa24a9..e8dd3b9a7 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -18623,16 +18623,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (generatorType && isInstantiableClass(generatorType)) { const typeArgs: Type[] = []; - if (useAwaitableGenerator) { - typeArgs.push(AnyType.create()); - } - typeArgs.push( inferredYieldType, - NoneType.createInstance(), + UnknownType.create(), isNever(inferredReturnType) ? NoneType.createInstance() : inferredReturnType ); + if (useAwaitableGenerator) { + typeArgs.push(AnyType.create()); + } + inferredReturnType = ClassType.cloneAsInstance( ClassType.cloneForSpecialization( generatorType, diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index c8e41bfa9..6e29d7b3e 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2281,9 +2281,9 @@ export function getGeneratorTypeArgs(returnType: Type): Type[] | undefined { if (ClassType.isBuiltIn(returnType, ['Generator', 'AsyncGenerator'])) { return returnType.typeArguments; } else if (ClassType.isBuiltIn(returnType, 'AwaitableGenerator')) { - // AwaitableGenerator has four type arguments, and the last 3 + // AwaitableGenerator has four type arguments, and the first 3 // correspond to the generator. - return returnType.typeArguments?.slice(1); + return returnType.typeArguments?.slice(0, 3); } } diff --git a/packages/pyright-internal/src/tests/samples/coroutines3.py b/packages/pyright-internal/src/tests/samples/coroutines3.py index fd2445fb0..3cc709893 100644 --- a/packages/pyright-internal/src/tests/samples/coroutines3.py +++ b/packages/pyright-internal/src/tests/samples/coroutines3.py @@ -17,21 +17,22 @@ async def func1() -> None: reveal_type( old_style_coroutine1, - expected_text="() -> AwaitableGenerator[Any, None, None, None]", + expected_text="() -> AwaitableGenerator[None, Unknown, None, Any]", ) @asyncio.coroutine -def old_style_coroutine2() -> AwaitableGenerator[Any, None, None, None]: +def old_style_coroutine2() -> AwaitableGenerator[None, None, None, Any]: yield from asyncio.sleep(1) async def func2() -> None: x = await old_style_coroutine2() + reveal_type(x, expected_text="None") return x reveal_type( old_style_coroutine2, - expected_text="() -> AwaitableGenerator[Any, None, None, None]", + expected_text="() -> AwaitableGenerator[None, None, None, Any]", ) diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias4.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias4.py index e51b501c5..0a0c3d4d8 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias4.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias4.py @@ -2,7 +2,7 @@ # pyright: strict, reportUnusedVariable=false -from typing import Dict, List, Optional, Union +from typing import Dict, Generator, List, Optional, Union JSONArray = List["JSONType"] @@ -48,7 +48,7 @@ def f3(args: JSONStructured): LinkedList = Optional[tuple[int, "LinkedList"]] -def g(xs: LinkedList): +def g(xs: LinkedList) -> Generator[int, None, None]: while xs is not None: x, rest = xs yield x diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar19.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar19.py index 8a768ae8f..44b5c6911 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar19.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar19.py @@ -6,49 +6,65 @@ T = TypeVar("T") Ts = TypeVarTuple("Ts") + def func1(a: Iterable[T], b: Iterable[T]): - i = iter(a) - j = iter(b) - while True: - try: - yield (next(i), next(j)) - except StopIteration: - break + i = iter(a) + j = iter(b) + while True: + try: + yield (next(i), next(j)) + except StopIteration: + break + + +reveal_type( + func1, + expected_text="(a: Iterable[T@func1], b: Iterable[T@func1]) -> Generator[tuple[T@func1, T@func1], Unknown, None]", +) -reveal_type(func1, expected_text="(a: Iterable[T@func1], b: Iterable[T@func1]) -> Generator[tuple[T@func1, T@func1], None, None]") def func2(a: tuple[*Ts], b: tuple[*Ts]): - for i in func1(a, b): - yield i + for i in func1(a, b): + yield i + + +reveal_type( + func2, + expected_text="(a: tuple[*Ts@func2], b: tuple[*Ts@func2]) -> Generator[tuple[Union[*Ts@func2], Union[*Ts@func2]], Unknown, None]", +) -reveal_type(func2, expected_text="(a: tuple[*Ts@func2], b: tuple[*Ts@func2]) -> Generator[tuple[Union[*Ts@func2], Union[*Ts@func2]], None, None]") def func3(): - v1 = func2((1, "foo"), (2, "bar")) - reveal_type(v1, expected_text="Generator[tuple[int | str, int | str], None, None]") + v1 = func2((1, "foo"), (2, "bar")) + reveal_type( + v1, expected_text="Generator[tuple[int | str, int | str], Unknown, None]" + ) - for i in v1: - reveal_type(i, expected_text="tuple[int | str, int | str]") + for i in v1: + reveal_type(i, expected_text="tuple[int | str, int | str]") def func5(x: "Iterable[Union[*Ts]]") -> Iterable[Union[*Ts]]: ... + def func6(): - v1: list[int] = [i for i in func5([1, 2, 3])] - v2: list[int | str] = [i for i in func5([1, "foo"])] + v1: list[int] = [i for i in func5([1, 2, 3])] + v2: list[int | str] = [i for i in func5([1, "foo"])] + +def func7(t: "tuple[*Ts]") -> "tuple[Union[*Ts], ...]": + ... -def func7(t: "tuple[*Ts]") -> "tuple[Union[*Ts], ...]": ... def func8(a: int, b: str): v1 = func7(((a, b),)) reveal_type(v1, expected_text="tuple[tuple[int, str], ...]") + def func9(x: "tuple[T, ...]", y: "tuple[*Ts]") -> Generator[T | Union[*Ts], None, None]: z = x + y reveal_type(z, expected_text="tuple[T@func9 | Union[*Ts@func9], ...]") for e in z: reveal_type(e, expected_text="T@func9 | Union[*Ts@func9]") yield e - From cb866b1b12437da999f42e1bd92250a31db4e585 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Apr 2023 16:54:44 -0700 Subject: [PATCH 059/525] Modified the "send type" type inference logic for generators. Instead of always inferring `Unknown`, pyright now infers `Any` if the send type is provably never used within the generator. This is a common case and allows the generator function return type to be inferred without an `Unknown` partial type in most cases. --- .../src/analyzer/typeEvaluator.ts | 17 ++++++++++++++++- .../src/tests/samples/generators3.py | 16 ++++++++++++++++ .../src/tests/samples/variadicTypeVar19.py | 8 +++----- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index e8dd3b9a7..4e7b5253d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -18575,11 +18575,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (functionDecl?.isGenerator) { const inferredYieldTypes: Type[] = []; let useAwaitableGenerator = false; + let isYieldResultUsed = false; if (functionDecl.yieldStatements) { functionDecl.yieldStatements.forEach((yieldNode) => { if (isNodeReachable(yieldNode)) { if (yieldNode.nodeType === ParseNodeType.YieldFrom) { + isYieldResultUsed = true; const iteratorTypeResult = getTypeOfExpression(yieldNode.expression); if ( isClassInstance(iteratorTypeResult.type) && @@ -18597,6 +18599,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferredYieldTypes.push(yieldType ?? UnknownType.create()); } } else { + // If the yield expression is not by itself in a statement list, + // assume that its result is consumed. + if (yieldNode?.parent?.nodeType !== ParseNodeType.StatementList) { + isYieldResultUsed = true; + } + if (yieldNode.expression) { const yieldType = getTypeOfExpression(yieldNode.expression).type; inferredYieldTypes.push(yieldType ?? UnknownType.create()); @@ -18623,9 +18631,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (generatorType && isInstantiableClass(generatorType)) { const typeArgs: Type[] = []; + // The "send type" for the generator (the second type argument) is + // not generally inferrable, but we can assume that it's Any + // if the function never uses the value and Unknown if it does. + // This eliminates any "partially unknown" errors in strict mode + // in the common case. + const sendType = isYieldResultUsed ? UnknownType.create() : AnyType.create(); + typeArgs.push( inferredYieldType, - UnknownType.create(), + sendType, isNever(inferredReturnType) ? NoneType.createInstance() : inferredReturnType ); diff --git a/packages/pyright-internal/src/tests/samples/generators3.py b/packages/pyright-internal/src/tests/samples/generators3.py index d9e13e85f..58b5ea8e1 100644 --- a/packages/pyright-internal/src/tests/samples/generators3.py +++ b/packages/pyright-internal/src/tests/samples/generators3.py @@ -16,12 +16,28 @@ def generator1(): yield ClassB() +reveal_type(generator1(), expected_text="Generator[ClassB, Any, None]") + + def generator2(): yield "Hello" yield ClassA() return 3 +reveal_type( + generator2(), expected_text="Generator[ClassA | Literal['Hello'], Any, Literal[3]]" +) + + +def generator3(): + x = yield 3 + return 0 + + +reveal_type(generator3(), expected_text="Generator[Literal[3], Unknown, Literal[0]]") + + def consumer1() -> ClassB: return next(generator1()) diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar19.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar19.py index 44b5c6911..cf5b21caa 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar19.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar19.py @@ -19,7 +19,7 @@ def func1(a: Iterable[T], b: Iterable[T]): reveal_type( func1, - expected_text="(a: Iterable[T@func1], b: Iterable[T@func1]) -> Generator[tuple[T@func1, T@func1], Unknown, None]", + expected_text="(a: Iterable[T@func1], b: Iterable[T@func1]) -> Generator[tuple[T@func1, T@func1], Any, None]", ) @@ -30,15 +30,13 @@ def func2(a: tuple[*Ts], b: tuple[*Ts]): reveal_type( func2, - expected_text="(a: tuple[*Ts@func2], b: tuple[*Ts@func2]) -> Generator[tuple[Union[*Ts@func2], Union[*Ts@func2]], Unknown, None]", + expected_text="(a: tuple[*Ts@func2], b: tuple[*Ts@func2]) -> Generator[tuple[Union[*Ts@func2], Union[*Ts@func2]], Any, None]", ) def func3(): v1 = func2((1, "foo"), (2, "bar")) - reveal_type( - v1, expected_text="Generator[tuple[int | str, int | str], Unknown, None]" - ) + reveal_type(v1, expected_text="Generator[tuple[int | str, int | str], Any, None]") for i in v1: reveal_type(i, expected_text="tuple[int | str, int | str]") From bcd114f390226695934d7ff2df0d00eb896c6518 Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Fri, 21 Apr 2023 17:18:21 -0700 Subject: [PATCH 060/525] Move HoverProvider out of Program (#4989) * move HoverProvider out of program * rename createSourceMapper to getSourceMapper * rename missed this one. --- .../pyright-internal/src/analyzer/program.ts | 86 +++++++++---------- .../pyright-internal/src/analyzer/service.ts | 26 +++--- .../src/analyzer/sourceFile.ts | 38 +------- .../src/common/extensibility.ts | 17 +++- .../src/languageServerBase.ts | 46 ++++++---- .../src/tests/harness/fourslash/testState.ts | 24 ++++-- 6 files changed, 115 insertions(+), 122 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index bc41ca37e..79561d3e4 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -29,7 +29,7 @@ import { assert, assertNever } from '../common/debug'; import { Diagnostic, DiagnosticCategory } from '../common/diagnostic'; import { FileDiagnostics } from '../common/diagnosticSink'; import { FileEditAction, FileEditActions, FileOperations, TextEditAction } from '../common/editAction'; -import { Extensions } from '../common/extensibility'; +import { Extensions, ProgramView } from '../common/extensibility'; import { LogTracker } from '../common/logTracker'; import { combinePaths, @@ -76,15 +76,13 @@ import { import { DefinitionFilter } from '../languageService/definitionProvider'; import { DocumentSymbolCollector, DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; import { IndexOptions, IndexResults, WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; -import { HoverResults } from '../languageService/hoverProvider'; import { ImportAdder, ImportData } from '../languageService/importAdder'; import { getModuleStatementIndentation, reindentSpan } from '../languageService/indentationUtils'; import { getInsertionPointForSymbolUnderModule } from '../languageService/insertionPointUtils'; import { ReferenceCallback, ReferencesResult } from '../languageService/referencesProvider'; import { RenameModuleProvider } from '../languageService/renameModuleProvider'; import { SignatureHelpResults } from '../languageService/signatureHelpProvider'; -import { ParseNodeType } from '../parser/parseNodes'; -import { StatementNode } from '../parser/parseNodes'; +import { ParseNodeType, StatementNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { AbsoluteModuleDescriptor, ImportLookupResult } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; @@ -233,16 +231,28 @@ export class Program { this._cacheManager.unregisterCacheOwner(this); } - get evaluator(): TypeEvaluator | undefined { - return this._evaluator; + get id() { + return this._id; } get console(): ConsoleInterface { return this._console; } - get id() { - return this._id; + get rootPath(): string { + return this._configOptions.projectRoot; + } + + get evaluator(): TypeEvaluator | undefined { + return this._evaluator; + } + + get configOptions(): ConfigOptions { + return this._configOptions; + } + + get importResolver(): ImportResolver { + return this._importResolver; } setConfigOptions(configOptions: ConfigOptions) { @@ -253,14 +263,6 @@ export class Program { this._createNewEvaluator(); } - get rootPath(): string { - return this._configOptions.projectRoot; - } - - getConfigOptions(): ConfigOptions { - return this._configOptions; - } - setImportResolver(importResolver: ImportResolver) { this._importResolver = importResolver; @@ -270,10 +272,6 @@ export class Program { this._createNewEvaluator(); } - getImportResolver() { - return this._importResolver; - } - // Sets the list of tracked files that make up the program. setTrackedFiles(filePaths: string[]): FileDiagnostics[] { if (this._sourceFileList.length > 0) { @@ -725,6 +723,28 @@ export class Program { } } + // This will allow the callback to execute a type evaluator with an associated + // cancellation token and provide a read-only program. + run(callback: (p: ProgramView) => T, token: CancellationToken): T { + const evaluator = this._evaluator ?? this._createNewEvaluator(); + return evaluator.runWithCancellationToken(token, () => callback(this)); + } + + getSourceMapper( + filePath: string, + token: CancellationToken, + mapCompiled?: boolean, + preferStubs?: boolean + ): SourceMapper { + const sourceFileInfo = this.getSourceFileInfo(filePath); + const execEnv = this._configOptions.findExecEnvironment(filePath); + return this._createSourceMapper(execEnv, token, sourceFileInfo, mapCompiled, preferStubs); + } + + getParseResults(filePath: string): ParseResults | undefined { + return this.getBoundSourceFile(filePath)?.getParseResults(); + } + // Prints a detailed list of files that have been checked and the times associated // with each of them, sorted greatest to least. printDetailedAnalysisTimes() { @@ -1900,32 +1920,6 @@ export class Program { }); } - getHoverForPosition( - filePath: string, - position: Position, - format: MarkupKind, - token: CancellationToken - ): HoverResults | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - return sourceFileInfo.sourceFile.getHoverForPosition( - this._createSourceMapper(execEnv, token, sourceFileInfo, /* mapCompiled */ true), - position, - format, - this._evaluator!, - this.functionSignatureDisplay(), - token - ); - }); - } - getDocumentHighlight( filePath: string, position: Position, diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 30c5de20e..b287f3d8e 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -29,16 +29,16 @@ import { BackgroundAnalysisBase, IndexOptions, RefreshOptions } from '../backgro import { CancellationProvider, DefaultCancellationProvider } from '../common/cancellationUtils'; import { CommandLineOptions } from '../common/commandLineOptions'; import { ConfigOptions, matchFileSpecs } from '../common/configOptions'; -import { ConsoleInterface, log, LogLevel, StandardConsole } from '../common/console'; +import { ConsoleInterface, LogLevel, StandardConsole, log } from '../common/console'; import { Diagnostic } from '../common/diagnostic'; import { FileEditActions, TextEditAction } from '../common/editAction'; -import { Extensions } from '../common/extensibility'; +import { Extensions, ProgramView } from '../common/extensibility'; import { FileSystem, FileWatcher, FileWatcherEventType, ignoredWatchEventFunction } from '../common/fileSystem'; import { Host, HostFactory, NoAccessHost } from '../common/host'; import { defaultStubsDirectory } from '../common/pathConsts'; import { - combinePaths, FileSpec, + combinePaths, forEachAncestorDirectory, getDirectoryPath, getFileExtension, @@ -61,16 +61,15 @@ import { AutoImportOptions, ImportFormat } from '../languageService/autoImporter import { AbbreviationMap, CompletionOptions, CompletionResultsList } from '../languageService/completionProvider'; import { DefinitionFilter } from '../languageService/definitionProvider'; import { WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; -import { HoverResults } from '../languageService/hoverProvider'; import { ReferenceCallback } from '../languageService/referencesProvider'; import { SignatureHelpResults } from '../languageService/signatureHelpProvider'; import { AnalysisCompleteCallback } from './analysis'; import { BackgroundAnalysisProgram, BackgroundAnalysisProgramFactory } from './backgroundAnalysisProgram'; import { CacheManager } from './cacheManager'; import { - createImportedModuleDescriptor, ImportResolver, ImportResolverFactory, + createImportedModuleDescriptor, supportedSourceFileExtensions, } from './importResolver'; import { MaxAnalysisTime, Program } from './program'; @@ -414,15 +413,6 @@ export class AnalyzerService { this._program.reportSymbolsForWorkspace(query, reporter, token); } - getHoverForPosition( - filePath: string, - position: Position, - format: MarkupKind, - token: CancellationToken - ): HoverResults | undefined { - return this._program.getHoverForPosition(filePath, position, format, token); - } - getDocumentHighlight( filePath: string, position: Position, @@ -463,6 +453,10 @@ export class AnalyzerService { return this._program.evaluator; } + run(callback: (p: ProgramView) => T, token: CancellationToken): T { + return this._program.run(callback, token); + } + resolveCompletionItem( filePath: string, completionItem: CompletionItem, @@ -1151,7 +1145,7 @@ export class AnalyzerService { this._backgroundAnalysisProgram.program .getOpened() .map((o) => o.sourceFile.getFilePath()) - .filter((f) => matchFileSpecs(this._program.getConfigOptions(), f)) + .filter((f) => matchFileSpecs(this._program.configOptions, f)) .forEach((f) => fileMap.set(f, f)); return [...fileMap.values()]; @@ -1507,7 +1501,7 @@ export class AnalyzerService { } // The fs change is on a folder. - if (!matchFileSpecs(this._program.getConfigOptions(), path, /* isFile */ false)) { + if (!matchFileSpecs(this._program.configOptions, path, /* isFile */ false)) { // First, make sure the folder is included. By default, we exclude any folder whose name starts with '.' return false; } diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 81f24ebf8..6a4fb5180 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -19,15 +19,10 @@ import { isMainThread } from 'worker_threads'; import * as SymbolNameUtils from '../analyzer/symbolNameUtils'; import { OperationCanceledException } from '../common/cancellationUtils'; -import { - ConfigOptions, - ExecutionEnvironment, - getBasicDiagnosticRuleSet, - SignatureDisplayType, -} from '../common/configOptions'; +import { ConfigOptions, ExecutionEnvironment, getBasicDiagnosticRuleSet } from '../common/configOptions'; import { ConsoleInterface, StandardConsole } from '../common/console'; import { assert } from '../common/debug'; -import { convertLevelToCategory, Diagnostic, DiagnosticCategory, TaskListToken } from '../common/diagnostic'; +import { Diagnostic, DiagnosticCategory, TaskListToken, convertLevelToCategory } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { DiagnosticSink, TextRangeDiagnosticSink } from '../common/diagnosticSink'; import { TextEditAction } from '../common/editAction'; @@ -38,7 +33,7 @@ import { fromLSPAny } from '../common/lspUtils'; import { getFileName, normalizeSlashes, stripFileExtension } from '../common/pathUtils'; import { convertOffsetsToRange, convertTextRangeToRange } from '../common/positionUtils'; import * as StringUtils from '../common/stringUtils'; -import { DocumentRange, getEmptyRange, Position, Range, TextRange } from '../common/textRange'; +import { DocumentRange, Position, Range, TextRange, getEmptyRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; import { ModuleSymbolMap } from '../languageService/autoImporter'; @@ -53,13 +48,12 @@ import { DefinitionFilter, DefinitionProvider } from '../languageService/definit import { DocumentHighlightProvider } from '../languageService/documentHighlightProvider'; import { DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; import { DocumentSymbolProvider, IndexOptions, IndexResults } from '../languageService/documentSymbolProvider'; -import { HoverProvider, HoverResults } from '../languageService/hoverProvider'; import { performQuickAction } from '../languageService/quickActions'; import { ReferenceCallback, ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; import { SignatureHelpProvider, SignatureHelpResults } from '../languageService/signatureHelpProvider'; import { Localizer } from '../localization/localize'; import { ModuleNode } from '../parser/parseNodes'; -import { ModuleImport, ParseOptions, Parser, ParseResults } from '../parser/parser'; +import { ModuleImport, ParseOptions, ParseResults, Parser } from '../parser/parser'; import { IgnoreComment } from '../parser/tokenizer'; import { Token } from '../parser/tokenizerTypes'; import { AnalyzerFileInfo, ImportLookup } from './analyzerFileInfo'; @@ -1142,30 +1136,6 @@ export class SourceFile { ); } - getHoverForPosition( - sourceMapper: SourceMapper, - position: Position, - format: MarkupKind, - evaluator: TypeEvaluator, - functionSignatureDisplay: SignatureDisplayType, - token: CancellationToken - ): HoverResults | undefined { - // If this file hasn't been bound, no hover info is available. - if (this._isBindingNeeded || !this._parseResults) { - return undefined; - } - - return HoverProvider.getHoverForPosition( - sourceMapper, - this._parseResults, - position, - format, - evaluator, - functionSignatureDisplay, - token - ); - } - getDocumentHighlight( sourceMapper: SourceMapper, position: Position, diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index 4b915bcf0..bd85acffa 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -39,12 +39,21 @@ export interface ProgramExtension { // Readonly wrapper around a Program. Makes sure it doesn't mutate the program. export interface ProgramView { readonly id: number; - rootPath: string; - getImportResolver(): ImportResolver; - console: ConsoleInterface; - getConfigOptions(): ConfigOptions; + readonly rootPath: string; + readonly console: ConsoleInterface; + readonly evaluator: TypeEvaluator | undefined; + readonly configOptions: ConfigOptions; + readonly importResolver: ImportResolver; + owns(file: string): boolean; + getParseResults(filePath: string): ParseResults | undefined; getBoundSourceFileInfo(file: string, content?: string, force?: boolean): SourceFileInfo | undefined; + getSourceMapper( + filePath: string, + token: CancellationToken, + mapCompiled?: boolean, + preferStubs?: boolean + ): SourceMapper; } // Mutable wrapper around a program. Allows the FG thread to forward this request to the BG thread diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index c3e048cfb..7e5597a14 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -73,7 +73,7 @@ import { WorkspaceSymbol, WorkspaceSymbolParams, } from 'vscode-languageserver'; -import { attachWorkDone, ResultProgressReporter } from 'vscode-languageserver/lib/common/progress'; +import { ResultProgressReporter, attachWorkDone } from 'vscode-languageserver/lib/common/progress'; import { AnalysisResults } from './analyzer/analysis'; import { BackgroundAnalysisProgram } from './analyzer/backgroundAnalysisProgram'; @@ -91,7 +91,7 @@ import { DiagnosticSeverityOverridesMap, getDiagnosticSeverityOverrides, } from './common/commandLineOptions'; -import { ConfigOptions, getDiagLevelDiagnosticRules, SignatureDisplayType } from './common/configOptions'; +import { ConfigOptions, SignatureDisplayType, getDiagLevelDiagnosticRules } from './common/configOptions'; import { ConsoleInterface, ConsoleWithLogLevel, LogLevel } from './common/console'; import { Diagnostic as AnalyzerDiagnostic, @@ -106,7 +106,7 @@ import { FileSystem, FileWatcherEventType, FileWatcherHandler } from './common/f import { Host } from './common/host'; import { fromLSPAny } from './common/lspUtils'; import { convertPathToUri, deduplicateFolders, getDirectoryPath, getFileName, isFile } from './common/pathUtils'; -import { ProgressReporter, ProgressReportTracker } from './common/progressReporter'; +import { ProgressReportTracker, ProgressReporter } from './common/progressReporter'; import { hashString } from './common/stringUtils'; import { DocumentRange, Position, Range } from './common/textRange'; import { UriParser } from './common/uriParser'; @@ -115,8 +115,8 @@ import { AnalyzerServiceExecutor } from './languageService/analyzerServiceExecut import { ImportFormat } from './languageService/autoImporter'; import { CompletionItemData, CompletionOptions, CompletionResultsList } from './languageService/completionProvider'; import { DefinitionFilter } from './languageService/definitionProvider'; -import { convertToFlatSymbols, WorkspaceSymbolCallback } from './languageService/documentSymbolProvider'; -import { convertHoverResults } from './languageService/hoverProvider'; +import { WorkspaceSymbolCallback, convertToFlatSymbols } from './languageService/documentSymbolProvider'; +import { HoverProvider, convertHoverResults } from './languageService/hoverProvider'; import { ReferenceCallback } from './languageService/referencesProvider'; import { Localizer, setLocaleOverride } from './localization/localize'; import { PyrightFileSystem } from './pyrightFileSystem'; @@ -950,19 +950,31 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected async onHover(params: HoverParams, token: CancellationToken) { const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); - const workspace = await this.getWorkspaceForFile(filePath); - const hoverResults = workspace.service.getHoverForPosition( - filePath, - position, - this.client.hoverContentFormat, - token - ); - return convertHoverResults( - this.client.hoverContentFormat, - hoverResults, - !!this._serverOptions.supportsTelemetry - ); + + return workspace.service.run((program) => { + const parseResult = program.getParseResults(filePath); + if (!parseResult) { + return undefined; + } + + const sourceMapper = program.getSourceMapper(filePath, token, /* mapCompiled */ true); + const hoverResults = HoverProvider.getHoverForPosition( + sourceMapper, + parseResult, + position, + this.client.hoverContentFormat, + program.evaluator!, + program.configOptions.functionSignatureDisplay, + token + ); + + return convertHoverResults( + this.client.hoverContentFormat, + hoverResults, + !!this._serverOptions.supportsTelemetry + ); + }, token); } protected async onDocumentHighlight( diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 1991694d2..01468533a 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -48,22 +48,22 @@ import { normalizeSlashes, } from '../../../common/pathUtils'; import { convertOffsetToPosition, convertPositionToOffset } from '../../../common/positionUtils'; -import { DocumentRange, Position, Range as PositionRange, rangesAreEqual, TextRange } from '../../../common/textRange'; +import { DocumentRange, Position, Range as PositionRange, TextRange, rangesAreEqual } from '../../../common/textRange'; import { TextRangeCollection } from '../../../common/textRangeCollection'; import { LanguageServerInterface } from '../../../languageServerBase'; import { AbbreviationInfo, ImportFormat } from '../../../languageService/autoImporter'; import { CompletionOptions } from '../../../languageService/completionProvider'; import { DefinitionFilter } from '../../../languageService/definitionProvider'; -import { convertHoverResults } from '../../../languageService/hoverProvider'; +import { HoverProvider, convertHoverResults } from '../../../languageService/hoverProvider'; import { ParseNode } from '../../../parser/parseNodes'; import { ParseResults } from '../../../parser/parser'; import { Tokenizer } from '../../../parser/tokenizer'; import { PyrightFileSystem } from '../../../pyrightFileSystem'; import { - createInitStatus, WellKnownWorkspaceKinds, Workspace, WorkspacePythonPathKind, + createInitStatus, } from '../../../workspaceFactory'; import { TestAccessHost } from '../testAccessHost'; import * as host from '../testHost'; @@ -826,11 +826,25 @@ export class TestState { const rangePos = this.convertOffsetsToRange(range.fileName, range.pos, range.end); - const actual = convertHoverResults( + const parseResult = this.program.getParseResults(range.fileName)!; + const sourceMapper = this.program.getSourceMapper( + range.fileName, + CancellationToken.None, + /* mapCompiled */ true + ); + + const hoverResults = HoverProvider.getHoverForPosition( + sourceMapper, + parseResult, + rangePos.start, kind, - this.program.getHoverForPosition(range.fileName, rangePos.start, kind, CancellationToken.None) + this.program.evaluator!, + this.program.configOptions.functionSignatureDisplay, + CancellationToken.None ); + const actual = convertHoverResults(kind, hoverResults); + // if expected is null then there should be nothing shown on hover if (expected === null) { assert.equal(actual, undefined); From 88293ffb33efb61ea9f50c91a38523d44dc92396 Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Fri, 21 Apr 2023 18:56:15 -0700 Subject: [PATCH 061/525] convert hover provider to regular class rather than static type. (#4990) --- .../src/languageServerBase.ts | 25 +- .../src/languageService/hoverProvider.ts | 410 ++++++++---------- .../src/tests/harness/fourslash/testState.ts | 20 +- 3 files changed, 186 insertions(+), 269 deletions(-) diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 7e5597a14..37c90f104 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -116,7 +116,7 @@ import { ImportFormat } from './languageService/autoImporter'; import { CompletionItemData, CompletionOptions, CompletionResultsList } from './languageService/completionProvider'; import { DefinitionFilter } from './languageService/definitionProvider'; import { WorkspaceSymbolCallback, convertToFlatSymbols } from './languageService/documentSymbolProvider'; -import { HoverProvider, convertHoverResults } from './languageService/hoverProvider'; +import { HoverProvider } from './languageService/hoverProvider'; import { ReferenceCallback } from './languageService/referencesProvider'; import { Localizer, setLocaleOverride } from './localization/localize'; import { PyrightFileSystem } from './pyrightFileSystem'; @@ -953,27 +953,14 @@ export abstract class LanguageServerBase implements LanguageServerInterface { const workspace = await this.getWorkspaceForFile(filePath); return workspace.service.run((program) => { - const parseResult = program.getParseResults(filePath); - if (!parseResult) { - return undefined; - } - - const sourceMapper = program.getSourceMapper(filePath, token, /* mapCompiled */ true); - const hoverResults = HoverProvider.getHoverForPosition( - sourceMapper, - parseResult, + return new HoverProvider( + program, + filePath, position, this.client.hoverContentFormat, - program.evaluator!, - program.configOptions.functionSignatureDisplay, + !!this._serverOptions.supportsTelemetry, token - ); - - return convertHoverResults( - this.client.hoverContentFormat, - hoverResults, - !!this._serverOptions.supportsTelemetry - ); + ).getHover(); }, token); } diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index a5d6940d2..468f8f5a0 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -16,9 +16,19 @@ import { convertDocStringToMarkdown, convertDocStringToPlainText } from '../anal import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { SourceMapper } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; +import { + ClassMemberLookupFlags, + doForEachSubtype, + isMaybeDescriptorInstance, + lookUpClassMember, +} from '../analyzer/typeUtils'; import { ClassType, FunctionType, + OverloadedFunctionType, + Type, + TypeCategory, + UnknownType, getTypeAliasInfo, isAnyOrUnknown, isClassInstance, @@ -28,26 +38,14 @@ import { isOverloadedFunction, isTypeVar, isUnknown, - OverloadedFunctionType, - Type, - TypeCategory, - UnknownType, } from '../analyzer/types'; -import { - ClassMemberLookupFlags, - doForEachSubtype, - isMaybeDescriptorInstance, - lookUpClassMember, -} from '../analyzer/typeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; -import { SignatureDisplayType } from '../common/configOptions'; import { assertNever, fail } from '../common/debug'; -import { DeclarationUseCase, Extensions } from '../common/extensibility'; +import { DeclarationUseCase, Extensions, ProgramView } from '../common/extensibility'; import { convertOffsetToPosition, convertPositionToOffset } from '../common/positionUtils'; import { hashString } from '../common/stringUtils'; -import { Position, Range } from '../common/textRange'; -import { TextRange } from '../common/textRange'; -import { ExpressionNode, isExpressionNode, NameNode, ParseNode, ParseNodeType, StringNode } from '../parser/parseNodes'; +import { Position, Range, TextRange } from '../common/textRange'; +import { ExpressionNode, NameNode, ParseNode, ParseNodeType, StringNode, isExpressionNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { combineExpressionTypes, @@ -56,35 +54,47 @@ import { getToolTipForType, } from './tooltipUtils'; -export interface HoverTextPart { - python?: boolean; - text: string; -} +export class HoverProvider { + private readonly _parseResults: ParseResults | undefined; + private readonly _sourceMapper: SourceMapper; + + constructor( + private _program: ProgramView, + private _filePath: string, + private _position: Position, + private _format: MarkupKind, + private _supportTelemetry: boolean, + private _token: CancellationToken + ) { + this._parseResults = this._program.getParseResults(this._filePath); + this._sourceMapper = this._program.getSourceMapper(this._filePath, this._token, /* mapCompiled */ true); + } -export interface HoverResults { - parts: HoverTextPart[]; - lastKnownModule?: string; - range: Range; -} + getHover(): Hover | undefined { + return this._convertHoverResults(this._getHoverResult()); + } -export class HoverProvider { - static getHoverForPosition( - sourceMapper: SourceMapper, - parseResults: ParseResults, - position: Position, - format: MarkupKind, - evaluator: TypeEvaluator, - functionSignatureDisplay: SignatureDisplayType, - token: CancellationToken - ): HoverResults | undefined { - throwIfCancellationRequested(token); - - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); + private get _evaluator(): TypeEvaluator { + return this._program.evaluator!; + } + + private get _functionSignatureDisplay() { + return this._program.configOptions.functionSignatureDisplay; + } + + private _getHoverResult(): HoverResults | undefined { + throwIfCancellationRequested(this._token); + + if (!this._parseResults) { + return undefined; + } + + const offset = convertPositionToOffset(this._position, this._parseResults.tokenizerOutput.lines); if (offset === undefined) { return undefined; } - const node = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset); + const node = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, offset); if (node === undefined) { return undefined; } @@ -92,8 +102,8 @@ export class HoverProvider { const results: HoverResults = { parts: [], range: { - start: convertOffsetToPosition(node.start, parseResults.tokenizerOutput.lines), - end: convertOffsetToPosition(TextRange.getEnd(node), parseResults.tokenizerOutput.lines), + start: convertOffsetToPosition(node.start, this._parseResults.tokenizerOutput.lines), + end: convertOffsetToPosition(TextRange.getEnd(node), this._parseResults.tokenizerOutput.lines), }, }; @@ -103,15 +113,15 @@ export class HoverProvider { .map( (e) => e.declarationProviderExtension?.tryGetDeclarations( - evaluator, + this._evaluator, node, DeclarationUseCase.Definition, - token + this._token ) || [] ) .flat(); if (declarations.length === 0) { - declarations = evaluator.getDeclarationsForNameNode(node); + declarations = this._evaluator.getDeclarationsForNameNode(node); } if (declarations && declarations.length > 0) { // In most cases, it's best to treat the first declaration as the @@ -134,16 +144,7 @@ export class HoverProvider { primaryDeclaration = declarations[1]; } - this._addResultsForDeclaration( - format, - sourceMapper, - results.parts, - primaryDeclaration, - node, - evaluator, - functionSignatureDisplay, - token - ); + this._addResultsForDeclaration(results.parts, primaryDeclaration, node); // Add the lastKnownModule for this declaration. We'll use this // in telemetry for hover. @@ -154,7 +155,7 @@ export class HoverProvider { // is a directory (a namespace package), and we don't want to provide any hover // information in that case. if (results.parts.length === 0) { - const type = this._getType(evaluator, node); + const type = this._getType(node); let typeText: string; if (isModule(type)) { // Handle modules specially because submodules aren't associated with @@ -174,63 +175,43 @@ export class HoverProvider { type, label, node.value, - evaluator, + this._evaluator, isProperty, - functionSignatureDisplay + this._functionSignatureDisplay ); } this._addResultsPart(results.parts, typeText, /* python */ true); - this._addDocumentationPart( - format, - sourceMapper, - results.parts, - node, - evaluator, - /* resolvedDecl */ undefined - ); + this._addDocumentationPart(results.parts, node, /* resolvedDecl */ undefined); } } } else if (node.nodeType === ParseNodeType.String) { - const type = evaluator.getExpectedType(node)?.type; + const type = this._evaluator.getExpectedType(node)?.type; if (type !== undefined) { - this._tryAddPartsForTypedDictKey(format, sourceMapper, evaluator, node, type, results.parts); + this._tryAddPartsForTypedDictKey(node, type, results.parts); } } return results.parts.length > 0 ? results : undefined; } - private static _addResultsForDeclaration( - format: MarkupKind, - sourceMapper: SourceMapper, - parts: HoverTextPart[], - declaration: Declaration, - node: NameNode, - evaluator: TypeEvaluator, - functionSignatureDisplay: SignatureDisplayType, - token: CancellationToken - ): void { - const resolvedDecl = evaluator.resolveAliasDeclaration(declaration, /* resolveLocalNames */ true); + private _addResultsForDeclaration(parts: HoverTextPart[], declaration: Declaration, node: NameNode): void { + const resolvedDecl = this._evaluator.resolveAliasDeclaration(declaration, /* resolveLocalNames */ true); if (!resolvedDecl) { - this._addResultsPart( - parts, - `(import) ` + node.value + this._getTypeText(node, evaluator), - /* python */ true - ); + this._addResultsPart(parts, `(import) ` + node.value + this._getTypeText(node), /* python */ true); return; } switch (resolvedDecl.type) { case DeclarationType.Intrinsic: { - this._addResultsPart(parts, node.value + this._getTypeText(node, evaluator), /* python */ true); - this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); + this._addResultsPart(parts, node.value + this._getTypeText(node), /* python */ true); + this._addDocumentationPart(parts, node, resolvedDecl); break; } case DeclarationType.Variable: { let label = - resolvedDecl.isConstant || evaluator.isFinalVariableDeclaration(resolvedDecl) + resolvedDecl.isConstant || this._evaluator.isFinalVariableDeclaration(resolvedDecl) ? 'constant' : 'variable'; @@ -258,7 +239,7 @@ export class HoverProvider { // Determine if this identifier is a type alias. If so, expand // the type alias when printing the type information. - let type = this._getType(evaluator, typeNode); + let type = this._getType(typeNode); // We may have more type information in the alternativeTypeNode. Use that if it's better. if ( @@ -266,7 +247,7 @@ export class HoverProvider { resolvedDecl.alternativeTypeNode && isExpressionNode(resolvedDecl.alternativeTypeNode) ) { - const inferredType = this._getType(evaluator, resolvedDecl.alternativeTypeNode); + const inferredType = this._getType(resolvedDecl.alternativeTypeNode); if (!isUnknown(inferredType)) { type = inferredType; typeNode = resolvedDecl.alternativeTypeNode; @@ -289,7 +270,7 @@ export class HoverProvider { } let typeText: string; - const varType = this._getType(evaluator, typeNode); + const varType = this._getType(typeNode); // Handle the case where type is a function and was assigned to a variable. if ( varType.category === TypeCategory.Function || @@ -299,16 +280,16 @@ export class HoverProvider { type, label, node.value, - evaluator, + this._evaluator, /* isProperty */ false, - functionSignatureDisplay + this._functionSignatureDisplay ); } else { - typeText = typeVarName || node.value + this._getTypeText(typeNode, evaluator, expandTypeAlias); + typeText = typeVarName || node.value + this._getTypeText(typeNode, expandTypeAlias); typeText = `(${label}) ` + typeText; } this._addResultsPart(parts, typeText, /* python */ true); - this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); + this._addDocumentationPart(parts, node, resolvedDecl); break; } @@ -316,54 +297,42 @@ export class HoverProvider { if (resolvedDecl.inferredName && resolvedDecl.inferredTypeNodes) { this._addResultsPart( parts, - '(parameter) ' + - resolvedDecl.inferredName + - this._getTypesText(resolvedDecl.inferredTypeNodes, evaluator), + '(parameter) ' + resolvedDecl.inferredName + this._getTypesText(resolvedDecl.inferredTypeNodes), /* python */ true ); } else { this._addResultsPart( parts, - '(parameter) ' + node.value + this._getTypeText(node, evaluator), + '(parameter) ' + node.value + this._getTypeText(node), /* python */ true ); } if (resolvedDecl.docString) { this._addResultsPart(parts, resolvedDecl.docString); } - this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); + this._addDocumentationPart(parts, node, resolvedDecl); break; } case DeclarationType.TypeParameter: { this._addResultsPart( parts, - '(type parameter) ' + node.value + this._getTypeText(node, evaluator), + '(type parameter) ' + node.value + this._getTypeText(node), /* python */ true ); - this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); + this._addDocumentationPart(parts, node, resolvedDecl); break; } case DeclarationType.Class: case DeclarationType.SpecialBuiltInClass: { const nameNode = resolvedDecl.type === DeclarationType.Class ? resolvedDecl.node.name : node; - if ( - this._addInitOrNewMethodInsteadIfCallNode( - format, - node, - evaluator, - parts, - sourceMapper, - resolvedDecl, - functionSignatureDisplay - ) - ) { + if (this._addInitOrNewMethodInsteadIfCallNode(node, parts, resolvedDecl)) { return; } this._addResultsPart(parts, '(class) ' + nameNode.value, /* python */ true); - this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); + this._addDocumentationPart(parts, node, resolvedDecl); break; } @@ -371,44 +340,48 @@ export class HoverProvider { let label = 'function'; let isProperty = false; if (resolvedDecl.isMethod) { - const declaredType = evaluator.getTypeForDeclaration(resolvedDecl)?.type; + const declaredType = this._evaluator.getTypeForDeclaration(resolvedDecl)?.type; isProperty = !!declaredType && isMaybeDescriptorInstance(declaredType, /* requireSetter */ false); label = isProperty ? 'property' : 'method'; } - let type = this._getType(evaluator, node); + let type = this._getType(node); const resolvedType = Extensions.getProgramExtensions(resolvedDecl.node) .map((e) => - e.typeProviderExtension?.tryGetFunctionNodeType(resolvedDecl.node, evaluator, token) + e.typeProviderExtension?.tryGetFunctionNodeType( + resolvedDecl.node, + this._evaluator, + this._token + ) ) - .find((t) => !!t) || this._getType(evaluator, resolvedDecl.node.name); + .find((t) => !!t) || this._getType(resolvedDecl.node.name); type = isAnyOrUnknown(type) ? resolvedType : type; const signatureString = getToolTipForType( type, label, node.value, - evaluator, + this._evaluator, isProperty, - functionSignatureDisplay + this._functionSignatureDisplay ); this._addResultsPart(parts, signatureString, /* python */ true); - this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); + this._addDocumentationPart(parts, node, resolvedDecl); break; } case DeclarationType.Alias: { // First the 'module' header. this._addResultsPart(parts, '(module) ' + node.value, /* python */ true); - this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); + this._addDocumentationPart(parts, node, resolvedDecl); break; } case DeclarationType.TypeAlias: { - const typeText = node.value + this._getTypeText(node, evaluator, /* expandTypeAlias */ true); + const typeText = node.value + this._getTypeText(node, /* expandTypeAlias */ true); this._addResultsPart(parts, `(type alias) ${typeText}`, /* python */ true); - this._addDocumentationPart(format, sourceMapper, parts, node, evaluator, resolvedDecl); + this._addDocumentationPart(parts, node, resolvedDecl); break; } @@ -417,14 +390,7 @@ export class HoverProvider { } } - private static _tryAddPartsForTypedDictKey( - format: MarkupKind, - sourceMapper: SourceMapper, - evaluator: TypeEvaluator, - node: StringNode, - type: Type, - parts: HoverTextPart[] - ) { + private _tryAddPartsForTypedDictKey(node: StringNode, type: Type, parts: HoverTextPart[]) { // If the expected type is a TypedDict and the current node is a key entry then we can provide a tooltip // with the type of the TypedDict key and its docstring, if available. doForEachSubtype(type, (subtype) => { @@ -438,7 +404,7 @@ export class HoverProvider { } // e.g. (key) name: str - const text = '(key) ' + node.value + ': ' + evaluator.printType(entry.valueType); + const text = '(key) ' + node.value + ': ' + this._evaluator.printType(entry.valueType); this._addResultsPart(parts, text, /* python */ true); const declarations = subtype.details.fields.get(node.value)?.getDeclarations(); @@ -448,14 +414,7 @@ export class HoverProvider { // than one declaration for a TypedDict key variable. const declaration = declarations[0]; if (declaration.type === DeclarationType.Variable && declaration.docString !== undefined) { - this._addDocumentationPartForType( - format, - sourceMapper, - parts, - subtype, - declaration, - evaluator - ); + this._addDocumentationPartForType(parts, subtype, declaration); } } } @@ -463,15 +422,7 @@ export class HoverProvider { }); } - private static _addInitOrNewMethodInsteadIfCallNode( - format: MarkupKind, - node: NameNode, - evaluator: TypeEvaluator, - parts: HoverTextPart[], - sourceMapper: SourceMapper, - declaration: Declaration, - functionSignatureDisplay: SignatureDisplayType - ) { + private _addInitOrNewMethodInsteadIfCallNode(node: NameNode, parts: HoverTextPart[], declaration: Declaration) { // If the class is used as part of a call (i.e. it is being // instantiated), include the constructor arguments within the // hover text. @@ -496,12 +447,12 @@ export class HoverProvider { } // Get the init method for this class. - const classType = this._getType(evaluator, node); + const classType = this._getType(node); if (!isInstantiableClass(classType)) { return false; } - const instanceType = this._getType(evaluator, callLeftNode.parent); + const instanceType = this._getType(callLeftNode.parent); if (!isClassInstance(instanceType)) { return false; } @@ -513,10 +464,10 @@ export class HoverProvider { const initMember = lookUpClassMember(classType, '__init__', ClassMemberLookupFlags.SkipInstanceVariables); if (initMember) { - const functionType = evaluator.getTypeOfMember(initMember); + const functionType = this._evaluator.getTypeOfMember(initMember); if (isFunction(functionType) || isOverloadedFunction(functionType)) { - methodType = this._bindFunctionToClassOrObject(evaluator, node, instanceType, functionType); + methodType = this._bindFunctionToClassOrObject(node, instanceType, functionType); } } @@ -535,13 +486,12 @@ export class HoverProvider { ); if (newMember) { - const newMemberType = evaluator.getTypeOfMember(newMember); + const newMemberType = this._evaluator.getTypeOfMember(newMember); // Prefer `__new__` if it doesn't have default params (*args: Any, **kwargs: Any) or no params (). if (isFunction(newMemberType) || isOverloadedFunction(newMemberType)) { // Set `treatConstructorAsClassMember` to true to exclude `cls` as a parameter. methodType = this._bindFunctionToClassOrObject( - evaluator, node, instanceType, newMemberType, @@ -554,45 +504,37 @@ export class HoverProvider { if (methodType && (isFunction(methodType) || isOverloadedFunction(methodType))) { this._addResultsPart( parts, - getConstructorTooltip(node.value, methodType, evaluator, functionSignatureDisplay), + getConstructorTooltip(node.value, methodType, this._evaluator, this._functionSignatureDisplay), /* python */ true ); - const addedDoc = this._addDocumentationPartForType( - format, - sourceMapper, - parts, - methodType, - declaration, - evaluator - ); + const addedDoc = this._addDocumentationPartForType(parts, methodType, declaration); if (!addedDoc) { - this._addDocumentationPartForType(format, sourceMapper, parts, classType, declaration, evaluator); + this._addDocumentationPartForType(parts, classType, declaration); } return true; } return false; } - private static _getTypeText(node: ExpressionNode, evaluator: TypeEvaluator, expandTypeAlias = false): string { - const type = this._getType(evaluator, node); - return ': ' + evaluator.printType(type, { expandTypeAlias }); + private _getTypeText(node: ExpressionNode, expandTypeAlias = false): string { + const type = this._getType(node); + return ': ' + this._evaluator.printType(type, { expandTypeAlias }); } - private static _getTypesText(nodes: ExpressionNode[], evaluator: TypeEvaluator, expandTypeAlias = false): string { - const type = combineExpressionTypes(nodes, evaluator); - return ': ' + evaluator.printType(type, { expandTypeAlias }); + private _getTypesText(nodes: ExpressionNode[], expandTypeAlias = false): string { + const type = combineExpressionTypes(nodes, this._evaluator); + return ': ' + this._evaluator.printType(type, { expandTypeAlias }); } - private static _bindFunctionToClassOrObject( - evaluator: TypeEvaluator, + private _bindFunctionToClassOrObject( node: ExpressionNode, baseType: ClassType | undefined, memberType: FunctionType | OverloadedFunctionType, treatConstructorAsClassMember?: boolean ): FunctionType | OverloadedFunctionType | undefined { - const methodType = evaluator.bindFunctionToClassOrObject( + const methodType = this._evaluator.bindFunctionToClassOrObject( baseType, memberType, /* memberClass */ undefined, @@ -605,18 +547,17 @@ export class HoverProvider { return undefined; } - return this._limitOverloadBasedOnCall(evaluator, methodType, node); + return this._limitOverloadBasedOnCall(methodType, node); } - private static _getType(evaluator: TypeEvaluator, node: ExpressionNode) { + private _getType(node: ExpressionNode) { // It does common work necessary for hover for a type we got // from raw type evaluator. - const type = evaluator.getType(node) ?? UnknownType.create(); - return this._limitOverloadBasedOnCall(evaluator, type, node); + const type = this._evaluator.getType(node) ?? UnknownType.create(); + return this._limitOverloadBasedOnCall(type, node); } - private static _limitOverloadBasedOnCall( - evaluator: TypeEvaluator, + private _limitOverloadBasedOnCall( type: T, node: ExpressionNode ): T | FunctionType | OverloadedFunctionType { @@ -632,7 +573,7 @@ export class HoverProvider { return type; } - const callTypeResult = evaluator.getTypeResult(callNode); + const callTypeResult = this._evaluator.getTypeResult(callNode); if ( !callTypeResult || !callTypeResult.overloadsUsedForCall || @@ -648,39 +589,31 @@ export class HoverProvider { return OverloadedFunctionType.create(callTypeResult.overloadsUsedForCall); } - private static _addDocumentationPart( - format: MarkupKind, - sourceMapper: SourceMapper, - parts: HoverTextPart[], - node: NameNode, - evaluator: TypeEvaluator, - resolvedDecl: Declaration | undefined - ) { - const type = this._getType(evaluator, node); - this._addDocumentationPartForType(format, sourceMapper, parts, type, resolvedDecl, evaluator, node.value); + private _addDocumentationPart(parts: HoverTextPart[], node: NameNode, resolvedDecl: Declaration | undefined) { + const type = this._getType(node); + this._addDocumentationPartForType(parts, type, resolvedDecl, node.value); } - private static _addDocumentationPartForType( - format: MarkupKind, - sourceMapper: SourceMapper, + private _addDocumentationPartForType( parts: HoverTextPart[], type: Type | undefined, resolvedDecl: Declaration | undefined, - evaluator: TypeEvaluator, name?: string ): boolean { - const docString = getDocumentationPartsForTypeAndDecl(sourceMapper, type, resolvedDecl, evaluator, { name }); + const docString = getDocumentationPartsForTypeAndDecl(this._sourceMapper, type, resolvedDecl, this._evaluator, { + name, + }); if (docString) { - this._addDocumentationResultsPart(format, parts, docString); + this._addDocumentationResultsPart(parts, docString); return true; } return false; } - private static _addDocumentationResultsPart(format: MarkupKind, parts: HoverTextPart[], docString?: string) { + private _addDocumentationResultsPart(parts: HoverTextPart[], docString?: string) { if (docString) { - if (format === MarkupKind.Markdown) { + if (this._format === MarkupKind.Markdown) { const markDown = convertDocStringToMarkdown(docString); if (parts.length > 0 && markDown.length > 0) { @@ -688,58 +621,65 @@ export class HoverProvider { } this._addResultsPart(parts, markDown); - } else if (format === MarkupKind.PlainText) { + } else if (this._format === MarkupKind.PlainText) { this._addResultsPart(parts, convertDocStringToPlainText(docString)); } else { - fail(`Unsupported markup type: ${format}`); + fail(`Unsupported markup type: ${this._format}`); } } } - private static _addResultsPart(parts: HoverTextPart[], text: string, python = false) { + private _addResultsPart(parts: HoverTextPart[], text: string, python = false) { parts.push({ python, text, }); } -} -export function convertHoverResults( - format: MarkupKind, - hoverResults: HoverResults | undefined, - includeHash?: boolean -): Hover | undefined { - if (!hoverResults) { - return undefined; - } + private _convertHoverResults(hoverResults: HoverResults | undefined): Hover | undefined { + if (!hoverResults) { + return undefined; + } - let markupString = hoverResults.parts - .map((part) => { - if (part.python) { - if (format === MarkupKind.Markdown) { - return '```python\n' + part.text + '\n```\n'; - } else if (format === MarkupKind.PlainText) { - return part.text + '\n\n'; - } else { - fail(`Unsupported markup type: ${format}`); + let markupString = hoverResults.parts + .map((part) => { + if (part.python) { + if (this._format === MarkupKind.Markdown) { + return '```python\n' + part.text + '\n```\n'; + } else if (this._format === MarkupKind.PlainText) { + return part.text + '\n\n'; + } else { + fail(`Unsupported markup type: ${this._format}`); + } } - } - return part.text; - }) - .join('') - .trimEnd(); - - // If we have a lastKnownModule in the hover results, stick in a comment with - // the hashed module name. This is used by the other side to send telemetry. - if (hoverResults.lastKnownModule && format === MarkupKind.Markdown && includeHash) { - markupString += `\n`; + return part.text; + }) + .join('') + .trimEnd(); + + // If we have a lastKnownModule in the hover results, stick in a comment with + // the hashed module name. This is used by the other side to send telemetry. + if (hoverResults.lastKnownModule && this._format === MarkupKind.Markdown && this._supportTelemetry) { + markupString += `\n`; + } + + return { + contents: { + kind: this._format, + value: markupString, + }, + range: hoverResults.range, + }; } +} + +interface HoverTextPart { + python?: boolean; + text: string; +} - return { - contents: { - kind: format, - value: markupString, - }, - range: hoverResults.range, - }; +interface HoverResults { + parts: HoverTextPart[]; + lastKnownModule?: string; + range: Range; } diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 01468533a..5ce359426 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -54,7 +54,7 @@ import { LanguageServerInterface } from '../../../languageServerBase'; import { AbbreviationInfo, ImportFormat } from '../../../languageService/autoImporter'; import { CompletionOptions } from '../../../languageService/completionProvider'; import { DefinitionFilter } from '../../../languageService/definitionProvider'; -import { HoverProvider, convertHoverResults } from '../../../languageService/hoverProvider'; +import { HoverProvider } from '../../../languageService/hoverProvider'; import { ParseNode } from '../../../parser/parseNodes'; import { ParseResults } from '../../../parser/parser'; import { Tokenizer } from '../../../parser/tokenizer'; @@ -825,25 +825,15 @@ export class TestState { } const rangePos = this.convertOffsetsToRange(range.fileName, range.pos, range.end); - - const parseResult = this.program.getParseResults(range.fileName)!; - const sourceMapper = this.program.getSourceMapper( + const provider = new HoverProvider( + this.program, range.fileName, - CancellationToken.None, - /* mapCompiled */ true - ); - - const hoverResults = HoverProvider.getHoverForPosition( - sourceMapper, - parseResult, rangePos.start, kind, - this.program.evaluator!, - this.program.configOptions.functionSignatureDisplay, + false, CancellationToken.None ); - - const actual = convertHoverResults(kind, hoverResults); + const actual = provider.getHover(); // if expected is null then there should be nothing shown on hover if (expected === null) { From 3b7272484296e7b13322dd277792ebe80a9c5bf2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Apr 2023 21:58:22 -0700 Subject: [PATCH 062/525] Fixed a bug that led to a false positive error when a partially-specialized generic function with a ParamSpec is further specialized such that the `ParamSpec` is bound to `...` (i.e. the ParamSpec equivalent of `Any`). This addresses https://github.com/microsoft/pyright/issues/4991. --- .../src/analyzer/typeUtils.ts | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 6e29d7b3e..05abd61b3 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1589,19 +1589,19 @@ export function setTypeArgumentsRecursive( recursionCount ); } + } - if (destType.details.paramSpec) { - // Fill in an empty signature for a ParamSpec. - if (!typeVarContext.getPrimarySignature().getTypeVar(destType.details.paramSpec)) { - const newFunction = FunctionType.createInstance( - '', - '', - '', - FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck | FunctionTypeFlags.ParamSpecValue - ); - FunctionType.addDefaultParameters(newFunction); - typeVarContext.setTypeVarType(destType.details.paramSpec, newFunction); - } + if (destType.details.paramSpec) { + // Fill in an empty signature for a ParamSpec. + if (!typeVarContext.getPrimarySignature().getTypeVar(destType.details.paramSpec)) { + const newFunction = FunctionType.createInstance( + '', + '', + '', + FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck | FunctionTypeFlags.ParamSpecValue + ); + FunctionType.addDefaultParameters(newFunction); + typeVarContext.setTypeVarType(destType.details.paramSpec, newFunction); } } break; From 2c6e5b293859440889b3e0b77ed46aec247b9c19 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 22 Apr 2023 19:31:52 -0700 Subject: [PATCH 063/525] Updated CLI documentation to clarify that files specified on the command line do not cause the config file to be ignored entirely. --- docs/command-line.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/command-line.md b/docs/command-line.md index c544d65c1..ab46789a0 100644 --- a/docs/command-line.md +++ b/docs/command-line.md @@ -25,7 +25,7 @@ Pyright can be run as either a VS Code extension or as a node-based command-line | --warnings | Use exit code of 1 if warnings are reported | | -w, --watch | Continue to run and watch for changes (4) | -(1) If specific files are specified on the command line, the pyrightconfig.json file is ignored. +(1) If specific files are specified on the command line, it overrides the files or directories specified in the pyrightconfig.json or pyproject.toml file. (2) Pyright has built-in typeshed type stubs for Python stdlib functionality. To use a different version of typeshed type stubs, specify the directory with this option. From c25d395641c002e591ee80b35aad72a5cbbf0776 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 23 Apr 2023 11:56:59 -0700 Subject: [PATCH 064/525] Simplified some code in `validateFunctionArgumentTypesWithExpectedType`. No functional change. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 4e7b5253d..d03de217c 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10818,8 +10818,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // We may or may not be able to make use of the expected type. We'll evaluate // speculatively to see if using the expected type works. if (isUnion(inferenceContext.expectedType)) { - let speculativeResults: CallResult | undefined; - useSpeculativeMode(errorNode, () => { const typeVarContextCopy = typeVarContext.clone(); assignType( @@ -10830,17 +10828,18 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions /* srcTypeVarContext */ undefined, effectiveFlags | AssignTypeFlags.PopulatingExpectedType ); - speculativeResults = validateFunctionArgumentTypes( + + const speculativeResults = validateFunctionArgumentTypes( errorNode, matchResults, typeVarContextCopy, skipUnknownArgCheck ); - }); - if (speculativeResults && speculativeResults.argumentErrors) { - effectiveExpectedType = undefined; - } + if (speculativeResults?.argumentErrors) { + effectiveExpectedType = undefined; + } + }); } if (effectiveExpectedType) { From 2052c39c0f00461e3d79acdba5cb98d015212a42 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 23 Apr 2023 11:58:22 -0700 Subject: [PATCH 065/525] Improved handling of bidirectional type inference for call expressions in the case where the target call returns a callable and the expected type is a union that includes some non-callables. The logic now filters out the non-callables to enable bidirectional type inference to succeed in cases where it previously didn't. This addresses https://github.com/microsoft/pyright/issues/4996. --- .../src/analyzer/typeEvaluator.ts | 9 +++++++ .../src/analyzer/typeUtils.ts | 25 +++++++++++++++++ .../src/tests/samples/genericTypes109.py | 27 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 +++++ 4 files changed, 67 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes109.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d03de217c..9dbc49755 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -271,6 +271,7 @@ import { getTypeVarScopeId, getUnionSubtypeCount, InferenceContext, + isCallableType, isDescriptorInstance, isEffectivelyInstantiable, isEllipsisType, @@ -10871,6 +10872,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); effectiveExpectedType = applySolvedTypeVars(genericReturnType, tempTypeVarContext); + } else if (isFunction(effectiveReturnType)) { + // If the return type is a callable and the expected type is a union that + // includes one or more non-callables, filter those out. + if (isUnion(effectiveExpectedType)) { + effectiveExpectedType = mapSubtypes(effectiveExpectedType, (subtype) => { + return isCallableType(subtype) ? subtype : undefined; + }); + } } assignType( diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 05abd61b3..336d4740e 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -888,6 +888,31 @@ export function isProperty(type: Type) { return isClassInstance(type) && ClassType.isPropertyClass(type); } +export function isCallableType(type: Type): boolean { + if (isFunction(type) || isOverloadedFunction(type) || isAnyOrUnknown(type)) { + return true; + } + + if (isEffectivelyInstantiable(type)) { + return true; + } + + if (isClass(type)) { + if (TypeBase.isInstantiable(type)) { + return true; + } + + const callMember = lookUpObjectMember(type, '__call__'); + return !!callMember; + } + + if (isUnion(type)) { + return type.subtypes.every((subtype) => isCallableType(subtype)); + } + + return false; +} + export function isDescriptorInstance(type: Type, requireSetter = false): boolean { if (isUnion(type)) { return type.subtypes.every((subtype) => isMaybeDescriptorInstance(subtype, requireSetter)); diff --git a/packages/pyright-internal/src/tests/samples/genericTypes109.py b/packages/pyright-internal/src/tests/samples/genericTypes109.py new file mode 100644 index 000000000..32f532d44 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes109.py @@ -0,0 +1,27 @@ +# This sample tests the case where bidirectional type inference is used +# for a call expression that returns a callable and requires bidirectional +# type inference to determine the desired results and the expected type +# is a union that includes some non-callable types. + +from typing import Callable, Literal, TypeVar + +ABC = Literal["a", "b", "c"] +T = TypeVar("T") + + +def func1(x: T | Callable[[], T]) -> Callable[[], T]: + ... + + +def func2(a: Callable[[], ABC] | ABC, b: ABC | Callable[[], ABC]): + v1 = func1(a) + reveal_type(v1, expected_text="() -> str") + + v2 = func1(b) + reveal_type(v2, expected_text="() -> str") + + v3: Callable[[], ABC] = func1(a) + reveal_type(v3, expected_text="() -> Literal['a', 'b', 'c']") + + v4: Callable[[], ABC] = func1(b) + reveal_type(v4, expected_text="() -> Literal['a', 'b', 'c']") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index a3d4417f9..90a22555b 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1061,6 +1061,12 @@ test('GenericTypes108', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes109', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes109.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 160e0f550a5dfcfc5f75a49e2de096f140ac5b57 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 24 Apr 2023 09:08:17 -0700 Subject: [PATCH 066/525] Fixed a type evaluation bug involving the `tuple` constructor call when used with bidirectional type inference, specifically when the expected type is a union of tuples. This addresses https://github.com/microsoft/pyright/issues/4998. --- packages/pyright-internal/src/analyzer/typeUtils.ts | 6 ++++++ packages/pyright-internal/src/tests/samples/tuples18.py | 8 ++++++++ .../pyright-internal/src/tests/typeEvaluator1.test.ts | 6 ++++++ 3 files changed, 20 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/tuples18.py diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 336d4740e..15c37a844 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3084,6 +3084,12 @@ class TypeVarTransformer { newTupleTypeArgs = this.transformTupleTypeVar(typeParams[0], recursionCount); if (newTupleTypeArgs) { specializationNeeded = true; + } else { + const newTypeArgType = this.apply(typeParams[0], recursionCount); + if (typeParams[0] !== newTypeArgType) { + newTupleTypeArgs = [{ type: newTypeArgType, isUnbounded: true }]; + specializationNeeded = true; + } } } diff --git a/packages/pyright-internal/src/tests/samples/tuples18.py b/packages/pyright-internal/src/tests/samples/tuples18.py new file mode 100644 index 000000000..8e0c56bd9 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/tuples18.py @@ -0,0 +1,8 @@ +# This sample tests the case where the tuple constructor is called +# explicitly with bidirectional type inference. + +v1: tuple[float] = tuple([1.0, 2.0]) +reveal_type(v1, expected_text="tuple[float, ...]") + +v2: tuple[float] | tuple[float, float] = tuple([1.0, 2.0]) +reveal_type(v2, expected_text="tuple[float, ...]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index d8ab4bffb..c148894ad 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1260,6 +1260,12 @@ test('Tuples17', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Tuples18', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples18.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('NamedTuples1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples1.py']); From 3778c3ff115e37017769557c9af23b2bba30bbd4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 24 Apr 2023 09:26:41 -0700 Subject: [PATCH 067/525] Updated typeshed stubs to the latest version. --- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/builtins.pyi | 4 +- .../stdlib/collections/__init__.pyi | 2 + .../typeshed-fallback/stdlib/functools.pyi | 10 +- .../stdlib/logging/config.pyi | 6 +- .../stdlib/multiprocessing/managers.pyi | 2 + .../typeshed-fallback/stdlib/pathlib.pyi | 4 +- .../typeshed-fallback/stdlib/sys.pyi | 14 + .../typeshed-fallback/stdlib/types.pyi | 6 + .../stdlib/unittest/mock.pyi | 3 +- .../stdlib/xml/dom/minidom.pyi | 66 +++- .../typeshed-fallback/stdlib/zipfile.pyi | 14 +- .../stubs/Pillow/METADATA.toml | 2 +- .../stubs/Pillow/PIL/ExifTags.pyi | 305 ++++++++++++++++++ .../stubs/Pillow/PIL/ImageDraw.pyi | 2 + .../stubs/Pygments/METADATA.toml | 2 +- .../sqlalchemy/dialects/mssql/base.pyi | 1 - .../sqlalchemy/dialects/postgresql/base.pyi | 1 + .../sqlalchemy/engine/interfaces.pyi | 1 - .../SQLAlchemy/sqlalchemy/engine/url.pyi | 1 + .../SQLAlchemy/sqlalchemy/event/base.pyi | 2 +- .../SQLAlchemy/sqlalchemy/orm/collections.pyi | 54 +++- .../SQLAlchemy/sqlalchemy/orm/decl_api.pyi | 2 +- .../sqlalchemy/orm/strategy_options.pyi | 97 +++--- .../stubs/SQLAlchemy/sqlalchemy/pool/base.pyi | 4 +- .../stubs/SQLAlchemy/sqlalchemy/sql/base.pyi | 2 +- .../SQLAlchemy/sqlalchemy/sql/compiler.pyi | 4 +- .../SQLAlchemy/sqlalchemy/sql/functions.pyi | 2 +- .../SQLAlchemy/sqlalchemy/sql/type_api.pyi | 2 +- .../SQLAlchemy/sqlalchemy/sql/visitors.pyi | 4 +- .../SQLAlchemy/sqlalchemy/testing/config.pyi | 38 ++- .../sqlalchemy/testing/provision.pyi | 80 +++-- .../SQLAlchemy/sqlalchemy/util/__init__.pyi | 4 + .../sqlalchemy/util/_collections.pyi | 2 +- .../SQLAlchemy/sqlalchemy/util/compat.pyi | 36 ++- .../sqlalchemy/util/langhelpers.pyi | 10 +- .../stubs/beautifulsoup4/bs4/__init__.pyi | 10 +- .../stubs/beautifulsoup4/bs4/element.pyi | 6 +- .../stubs/braintree/METADATA.toml | 2 +- .../stubs/cffi/_cffi_backend.pyi | 2 +- .../typeshed-fallback/stubs/cffi/cffi/api.pyi | 7 +- .../stubs/chardet/chardet/__init__.pyi | 7 +- .../stubs/croniter/croniter/croniter.pyi | 11 +- .../stubs/dj-database-url/dj_database_url.pyi | 4 +- .../stubs/hdbcli/hdbcli/dbapi.pyi | 6 +- .../stubs/keyboard/keyboard/mouse.pyi | 8 +- .../stubs/netaddr/netaddr/eui/__init__.pyi | 8 +- .../stubs/netaddr/netaddr/eui/ieee.pyi | 2 +- .../openpyxl/openpyxl/workbook/child.pyi | 4 +- .../stubs/psutil/psutil/_psutil_windows.pyi | 1 + .../stubs/pyOpenSSL/OpenSSL/SSL.pyi | 2 +- .../stubs/pyinstaller/METADATA.toml | 2 +- .../python-jose/jose/backends/__init__.pyi | 6 +- .../stubs/python-xlib/Xlib/protocol/event.pyi | 68 ++-- .../stubs/setuptools/METADATA.toml | 2 +- .../stubs/setuptools/setuptools/__init__.pyi | 2 +- .../setuptools/_deprecation_warning.pyi | 1 - .../setuptools/_distutils/errors.pyi | 18 ++ .../stubs/setuptools/setuptools/errors.pyi | 23 +- .../stubs/setuptools/setuptools/warnings.pyi | 15 + .../stubs/simplejson/METADATA.toml | 2 +- .../stubs/simplejson/simplejson/encoder.pyi | 2 +- .../typeshed-fallback/stubs/ujson/ujson.pyi | 15 + 63 files changed, 814 insertions(+), 213 deletions(-) delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_deprecation_warning.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/warnings.pyi diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index 72dade181..4a6c0fec2 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -60939b00afede13feeec3cee6f6dfe6eb2df1593 +1d9f35369d724954e7fc34970692f5509dd10ac7 diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index 2c21cd95d..d49610b25 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -1032,10 +1032,12 @@ class dict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): def __init__(self, __iterable: Iterable[tuple[_KT, _VT]]) -> None: ... @overload def __init__(self: dict[str, _VT], __iterable: Iterable[tuple[str, _VT]], **kwargs: _VT) -> None: ... - # Next overload is for dict(string.split(sep) for string in iterable) + # Next two overloads are for dict(string.split(sep) for string in iterable) # Cannot be Iterable[Sequence[_T]] or otherwise dict(["foo", "bar", "baz"]) is not an error @overload def __init__(self: dict[str, str], __iterable: Iterable[list[str]]) -> None: ... + @overload + def __init__(self: dict[bytes, bytes], __iterable: Iterable[list[bytes]]) -> None: ... def __new__(cls, *args: Any, **kwargs: Any) -> Self: ... def copy(self) -> dict[_KT, _VT]: ... def keys(self) -> dict_keys[_KT, _VT]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi index 1a4042114..d5ca17c74 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi @@ -62,6 +62,8 @@ class UserDict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): def __init__(self: UserDict[str, _VT], __iterable: Iterable[tuple[str, _VT]], **kwargs: _VT) -> None: ... @overload def __init__(self: UserDict[str, str], __iterable: Iterable[list[str]]) -> None: ... + @overload + def __init__(self: UserDict[bytes, bytes], __iterable: Iterable[list[bytes]]) -> None: ... def __len__(self) -> int: ... def __getitem__(self, key: _KT) -> _VT: ... def __setitem__(self, key: _KT, item: _VT) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi index f96147bae..5a9fd12ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi @@ -3,7 +3,7 @@ import types from _typeshed import SupportsAllComparisons, SupportsItems from collections.abc import Callable, Hashable, Iterable, Sequence, Sized from typing import Any, Generic, NamedTuple, TypeVar, overload -from typing_extensions import Literal, ParamSpec, Self, TypeAlias, final +from typing_extensions import Literal, ParamSpec, Self, TypeAlias, TypedDict, final if sys.version_info >= (3, 9): from types import GenericAlias @@ -46,12 +46,20 @@ class _CacheInfo(NamedTuple): maxsize: int | None currsize: int +if sys.version_info >= (3, 9): + class _CacheParameters(TypedDict): + maxsize: int + typed: bool + @final class _lru_cache_wrapper(Generic[_T]): __wrapped__: Callable[..., _T] def __call__(self, *args: Hashable, **kwargs: Hashable) -> _T: ... def cache_info(self) -> _CacheInfo: ... def cache_clear(self) -> None: ... + if sys.version_info >= (3, 9): + def cache_parameters(self) -> _CacheParameters: ... + def __copy__(self) -> _lru_cache_wrapper[_T]: ... def __deepcopy__(self, __memo: Any) -> _lru_cache_wrapper[_T]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/config.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/config.pyi index f76f655a6..bec0ab02d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/config.pyi @@ -5,14 +5,10 @@ from configparser import RawConfigParser from re import Pattern from threading import Thread from typing import IO, Any +from typing_extensions import Literal, TypedDict from . import _Level -if sys.version_info >= (3, 8): - from typing import Literal, TypedDict -else: - from typing_extensions import Literal, TypedDict - DEFAULT_LOGGING_CONFIG_PORT: int RESET_ERROR: int # undocumented IDENTIFIER: Pattern[str] # undocumented diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi index 4ac602374..27a903fb9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi @@ -197,6 +197,8 @@ class SyncManager(BaseManager): @overload def dict(self, __iterable: Iterable[list[str]]) -> DictProxy[str, str]: ... @overload + def dict(self, __iterable: Iterable[list[bytes]]) -> DictProxy[bytes, bytes]: ... + @overload def list(self, __sequence: Sequence[_T]) -> ListProxy[_T]: ... @overload def list(self) -> ListProxy[Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi index 114678ed5..7aec66b58 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi @@ -173,9 +173,9 @@ class Path(PurePath): def resolve(self, strict: bool = False) -> Self: ... def rglob(self, pattern: str) -> Generator[Self, None, None]: ... def rmdir(self) -> None: ... - def symlink_to(self, target: str | Path, target_is_directory: bool = False) -> None: ... + def symlink_to(self, target: StrOrBytesPath, target_is_directory: bool = False) -> None: ... if sys.version_info >= (3, 10): - def hardlink_to(self, target: str | Path) -> None: ... + def hardlink_to(self, target: StrOrBytesPath) -> None: ... def touch(self, mode: int = 0o666, exist_ok: bool = True) -> None: ... if sys.version_info >= (3, 8): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi index 7dba4603b..786db72c7 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi @@ -201,6 +201,20 @@ class _int_info(structseq[int], tuple[int, int, int, int]): @property def str_digits_check_threshold(self) -> int: ... +_ThreadInfoName: TypeAlias = Literal["nt", "pthread", "pthread-stubs", "solaris"] +_ThreadInfoLock: TypeAlias = Literal["semaphore", "mutex+cond"] | None + +@final +class _thread_info(_UninstantiableStructseq, tuple[_ThreadInfoName, _ThreadInfoLock, str | None]): + @property + def name(self) -> _ThreadInfoName: ... + @property + def lock(self) -> _ThreadInfoLock: ... + @property + def version(self) -> str | None: ... + +thread_info: _thread_info + @final class _version_info(_UninstantiableStructseq, tuple[int, int, int, str, int]): @property diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi index 22acb5a2f..43475d912 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi @@ -56,6 +56,9 @@ if sys.version_info >= (3, 9): if sys.version_info >= (3, 10): __all__ += ["EllipsisType", "NoneType", "NotImplementedType", "UnionType"] +if sys.version_info >= (3, 12): + __all__ += ["get_original_bases"] + # Note, all classes "defined" here require special handling. _T1 = TypeVar("_T1") @@ -563,6 +566,9 @@ def prepare_class( name: str, bases: tuple[type, ...] = (), kwds: dict[str, Any] | None = None ) -> tuple[type, dict[str, Any], dict[str, Any]]: ... +if sys.version_info >= (3, 12): + def get_original_bases(__cls: type) -> tuple[Any, ...]: ... + # Actually a different type, but `property` is special and we want that too. DynamicClassAttribute = property diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi index a054d3c4c..1f554da52 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi @@ -47,7 +47,8 @@ else: "seal", ) -__version__: Final[str] +if sys.version_info < (3, 9): + __version__: Final[str] FILTER_DIR: Any diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minidom.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minidom.pyi index e2880ae85..ec17f0a41 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minidom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xml/dom/minidom.pyi @@ -1,7 +1,7 @@ import sys import xml.dom from _typeshed import Incomplete, ReadableBuffer, SupportsRead, SupportsWrite -from typing import NoReturn, TypeVar +from typing import NoReturn, TypeVar, overload from typing_extensions import Literal, Self from xml.dom.minicompat import NodeList from xml.dom.xmlbuilder import DocumentLS, DOMImplementationLS @@ -30,13 +30,69 @@ class Node(xml.dom.Node): def localName(self) -> str | None: ... def __bool__(self) -> Literal[True]: ... if sys.version_info >= (3, 9): - def toxml(self, encoding: str | None = None, standalone: bool | None = None) -> str: ... + @overload + def toxml(self, encoding: str, standalone: bool | None = None) -> bytes: ... + @overload + def toxml(self, encoding: None = None, standalone: bool | None = None) -> str: ... + @overload def toprettyxml( - self, indent: str = "\t", newl: str = "\n", encoding: str | None = None, standalone: bool | None = None + self, + indent: str = "\t", + newl: str = "\n", + # Handle any case where encoding is not provided or where it is passed with None + encoding: None = None, + standalone: bool | None = None, ) -> str: ... + @overload + def toprettyxml( + self, + indent: str, + newl: str, + # Handle cases where encoding is passed as str *positionally* + encoding: str, + standalone: bool | None = None, + ) -> bytes: ... + @overload + def toprettyxml( + self, + indent: str = "\t", + newl: str = "\n", + # Handle all cases where encoding is passed as a keyword argument; because standalone + # comes after, it will also have to be a keyword arg if encoding is + *, + encoding: str, + standalone: bool | None = None, + ) -> bytes: ... else: - def toxml(self, encoding: str | None = None): ... - def toprettyxml(self, indent: str = "\t", newl: str = "\n", encoding: str | None = None): ... + @overload + def toxml(self, encoding: str) -> bytes: ... + @overload + def toxml(self, encoding: None = None) -> str: ... + @overload + def toprettyxml( + self, + indent: str = "\t", + newl: str = "\n", + # Handle any case where encoding is not provided or where it is passed with None + encoding: None = None, + ) -> str: ... + @overload + def toprettyxml( + self, + indent: str, + newl: str, + # Handle cases where encoding is passed as str *positionally* + encoding: str, + ) -> bytes: ... + @overload + def toprettyxml( + self, + indent: str = "\t", + newl: str = "\n", + # Handle all cases where encoding is passed as a keyword argument + *, + encoding: str, + ) -> bytes: ... def hasChildNodes(self) -> bool: ... def insertBefore(self, newChild, refChild): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi index 6e632fbe6..92f1dc49a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi @@ -222,10 +222,11 @@ class ZipInfo: def is_dir(self) -> bool: ... def FileHeader(self, zip64: bool | None = None) -> bytes: ... -class _PathOpenProtocol(Protocol): - def __call__(self, mode: _ReadWriteMode = ..., pwd: bytes | None = ..., *, force_zip64: bool = ...) -> IO[bytes]: ... - if sys.version_info >= (3, 8): + if sys.version_info < (3, 9): + class _PathOpenProtocol(Protocol): + def __call__(self, mode: _ReadWriteMode = "r", pwd: bytes | None = ..., *, force_zip64: bool = ...) -> IO[bytes]: ... + class Path: @property def name(self) -> str: ... @@ -245,7 +246,12 @@ if sys.version_info >= (3, 8): def __init__(self, root: ZipFile | StrPath | IO[bytes], at: str = "") -> None: ... if sys.version_info >= (3, 9): def open( - self, mode: _ReadWriteBinaryMode = "r", *args: Any, pwd: bytes | None = None, **kwargs: Any + self, + mode: _ReadWriteBinaryMode = "r", + encoding: str | None = None, + *args: Any, + pwd: bytes | None = None, + **kwargs: Any, ) -> IO[bytes]: ... else: @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml index b4d21d1eb..eb1a1a9cf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml @@ -1,4 +1,4 @@ -version = "9.4.*" +version = "9.5.*" [tool.stubtest] stubtest_requirements = ["olefile"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ExifTags.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ExifTags.pyi index 7ac53b0ac..4b75919f4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ExifTags.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ExifTags.pyi @@ -1,7 +1,312 @@ from collections.abc import Mapping from enum import IntEnum +class Base(IntEnum): + InteropIndex: int + ProcessingSoftware: int + NewSubfileType: int + SubfileType: int + ImageWidth: int + ImageLength: int + BitsPerSample: int + Compression: int + PhotometricInterpretation: int + Thresholding: int + CellWidth: int + CellLength: int + FillOrder: int + DocumentName: int + ImageDescription: int + Make: int + Model: int + StripOffsets: int + Orientation: int + SamplesPerPixel: int + RowsPerStrip: int + StripByteCounts: int + MinSampleValue: int + MaxSampleValue: int + XResolution: int + YResolution: int + PlanarConfiguration: int + PageName: int + FreeOffsets: int + FreeByteCounts: int + GrayResponseUnit: int + GrayResponseCurve: int + T4Options: int + T6Options: int + ResolutionUnit: int + PageNumber: int + TransferFunction: int + Software: int + DateTime: int + Artist: int + HostComputer: int + Predictor: int + WhitePoint: int + PrimaryChromaticities: int + ColorMap: int + HalftoneHints: int + TileWidth: int + TileLength: int + TileOffsets: int + TileByteCounts: int + SubIFDs: int + InkSet: int + InkNames: int + NumberOfInks: int + DotRange: int + TargetPrinter: int + ExtraSamples: int + SampleFormat: int + SMinSampleValue: int + SMaxSampleValue: int + TransferRange: int + ClipPath: int + XClipPathUnits: int + YClipPathUnits: int + Indexed: int + JPEGTables: int + OPIProxy: int + JPEGProc: int + JpegIFOffset: int + JpegIFByteCount: int + JpegRestartInterval: int + JpegLosslessPredictors: int + JpegPointTransforms: int + JpegQTables: int + JpegDCTables: int + JpegACTables: int + YCbCrCoefficients: int + YCbCrSubSampling: int + YCbCrPositioning: int + ReferenceBlackWhite: int + XMLPacket: int + RelatedImageFileFormat: int + RelatedImageWidth: int + RelatedImageLength: int + Rating: int + RatingPercent: int + ImageID: int + CFARepeatPatternDim: int + BatteryLevel: int + Copyright: int + ExposureTime: int + FNumber: int + IPTCNAA: int + ImageResources: int + ExifOffset: int + InterColorProfile: int + ExposureProgram: int + SpectralSensitivity: int + GPSInfo: int + ISOSpeedRatings: int + OECF: int + Interlace: int + TimeZoneOffset: int + SelfTimerMode: int + SensitivityType: int + StandardOutputSensitivity: int + RecommendedExposureIndex: int + ISOSpeed: int + ISOSpeedLatitudeyyy: int + ISOSpeedLatitudezzz: int + ExifVersion: int + DateTimeOriginal: int + DateTimeDigitized: int + OffsetTime: int + OffsetTimeOriginal: int + OffsetTimeDigitized: int + ComponentsConfiguration: int + CompressedBitsPerPixel: int + ShutterSpeedValue: int + ApertureValue: int + BrightnessValue: int + ExposureBiasValue: int + MaxApertureValue: int + SubjectDistance: int + MeteringMode: int + LightSource: int + Flash: int + FocalLength: int + Noise: int + ImageNumber: int + SecurityClassification: int + ImageHistory: int + TIFFEPStandardID: int + MakerNote: int + UserComment: int + SubsecTime: int + SubsecTimeOriginal: int + SubsecTimeDigitized: int + AmbientTemperature: int + Humidity: int + Pressure: int + WaterDepth: int + Acceleration: int + CameraElevationAngle: int + XPTitle: int + XPComment: int + XPAuthor: int + XPKeywords: int + XPSubject: int + FlashPixVersion: int + ColorSpace: int + ExifImageWidth: int + ExifImageHeight: int + RelatedSoundFile: int + ExifInteroperabilityOffset: int + FlashEnergy: int + SpatialFrequencyResponse: int + FocalPlaneXResolution: int + FocalPlaneYResolution: int + FocalPlaneResolutionUnit: int + SubjectLocation: int + ExposureIndex: int + SensingMethod: int + FileSource: int + SceneType: int + CFAPattern: int + CustomRendered: int + ExposureMode: int + WhiteBalance: int + DigitalZoomRatio: int + FocalLengthIn35mmFilm: int + SceneCaptureType: int + GainControl: int + Contrast: int + Saturation: int + Sharpness: int + DeviceSettingDescription: int + SubjectDistanceRange: int + ImageUniqueID: int + CameraOwnerName: int + BodySerialNumber: int + LensSpecification: int + LensMake: int + LensModel: int + LensSerialNumber: int + CompositeImage: int + CompositeImageCount: int + CompositeImageExposureTimes: int + Gamma: int + PrintImageMatching: int + DNGVersion: int + DNGBackwardVersion: int + UniqueCameraModel: int + LocalizedCameraModel: int + CFAPlaneColor: int + CFALayout: int + LinearizationTable: int + BlackLevelRepeatDim: int + BlackLevel: int + BlackLevelDeltaH: int + BlackLevelDeltaV: int + WhiteLevel: int + DefaultScale: int + DefaultCropOrigin: int + DefaultCropSize: int + ColorMatrix1: int + ColorMatrix2: int + CameraCalibration1: int + CameraCalibration2: int + ReductionMatrix1: int + ReductionMatrix2: int + AnalogBalance: int + AsShotNeutral: int + AsShotWhiteXY: int + BaselineExposure: int + BaselineNoise: int + BaselineSharpness: int + BayerGreenSplit: int + LinearResponseLimit: int + CameraSerialNumber: int + LensInfo: int + ChromaBlurRadius: int + AntiAliasStrength: int + ShadowScale: int + DNGPrivateData: int + MakerNoteSafety: int + CalibrationIlluminant1: int + CalibrationIlluminant2: int + BestQualityScale: int + RawDataUniqueID: int + OriginalRawFileName: int + OriginalRawFileData: int + ActiveArea: int + MaskedAreas: int + AsShotICCProfile: int + AsShotPreProfileMatrix: int + CurrentICCProfile: int + CurrentPreProfileMatrix: int + ColorimetricReference: int + CameraCalibrationSignature: int + ProfileCalibrationSignature: int + AsShotProfileName: int + NoiseReductionApplied: int + ProfileName: int + ProfileHueSatMapDims: int + ProfileHueSatMapData1: int + ProfileHueSatMapData2: int + ProfileToneCurve: int + ProfileEmbedPolicy: int + ProfileCopyright: int + ForwardMatrix1: int + ForwardMatrix2: int + PreviewApplicationName: int + PreviewApplicationVersion: int + PreviewSettingsName: int + PreviewSettingsDigest: int + PreviewColorSpace: int + PreviewDateTime: int + RawImageDigest: int + OriginalRawFileDigest: int + SubTileBlockSize: int + RowInterleaveFactor: int + ProfileLookTableDims: int + ProfileLookTableData: int + OpcodeList1: int + OpcodeList2: int + OpcodeList3: int + NoiseProfile: int + TAGS: Mapping[int, str] + +class GPS(IntEnum): + GPSVersionID: int + GPSLatitudeRef: int + GPSLatitude: int + GPSLongitudeRef: int + GPSLongitude: int + GPSAltitudeRef: int + GPSAltitude: int + GPSTimeStamp: int + GPSSatellites: int + GPSStatus: int + GPSMeasureMode: int + GPSDOP: int + GPSSpeedRef: int + GPSSpeed: int + GPSTrackRef: int + GPSTrack: int + GPSImgDirectionRef: int + GPSImgDirection: int + GPSMapDatum: int + GPSDestLatitudeRef: int + GPSDestLatitude: int + GPSDestLongitudeRef: int + GPSDestLongitude: int + GPSDestBearingRef: int + GPSDestBearing: int + GPSDestDistanceRef: int + GPSDestDistance: int + GPSProcessingMethod: int + GPSAreaInformation: int + GPSDateStamp: int + GPSDifferential: int + GPSHPositioningError: int + GPSTAGS: Mapping[int, str] class Interop(IntEnum): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi index 5ff7e3386..4d6d63821 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi @@ -54,6 +54,8 @@ class ImageDraw: fill: _Ink | None = None, outline: _Ink | None = None, width: float = 1, + *, + corners: tuple[bool, bool, bool, bool] | None = None, ) -> None: ... def text( self, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml index 3f4ba4a90..1a86c302a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.14.*" +version = "2.15.*" requires = ["types-docutils", "types-setuptools"] [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi index db60f2b7a..2e0acfccc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi @@ -197,7 +197,6 @@ class MSExecutionContext(default.DefaultExecutionContext): @property def rowcount(self): ... def handle_dbapi_exception(self, e) -> None: ... - def get_result_cursor_strategy(self, result): ... def fire_sequence(self, seq, type_): ... def get_insert_default(self, column): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi index 1d62398c2..1a04cd3d0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi @@ -163,6 +163,7 @@ class PGCompiler(compiler.SQLCompiler): class PGDDLCompiler(compiler.DDLCompiler): def get_column_specification(self, column, **kwargs): ... def visit_check_constraint(self, constraint): ... + def visit_foreign_key_constraint(self, constraint) -> str: ... # type: ignore[override] # Different params def visit_drop_table_comment(self, drop): ... def visit_create_enum_type(self, create): ... def visit_drop_enum_type(self, drop): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi index 3b4412abe..a62121626 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi @@ -116,7 +116,6 @@ class ExecutionContext: def pre_exec(self) -> None: ... def get_out_parameter_values(self, out_param_names) -> None: ... def post_exec(self) -> None: ... - def get_result_cursor_strategy(self, result) -> None: ... def handle_dbapi_exception(self, e) -> None: ... def should_autocommit_text(self, statement) -> None: ... def lastrow_has_defaults(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi index 0f2bfda2e..7a5b30789 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi @@ -22,6 +22,7 @@ class _URLTuple(NamedTuple): _Query: TypeAlias = Mapping[str, str | Sequence[str]] | Sequence[tuple[str, str | Sequence[str]]] class URL(_URLTuple): + def __new__(self, *arg, **kw) -> Self | URL: ... @classmethod def create( cls, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi index b3780d27b..d36703331 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi @@ -12,7 +12,7 @@ class _Dispatch: class _EventMeta(type): def __init__(cls, classname, bases, dict_) -> None: ... -class Events: +class Events(metaclass=_EventMeta): dispatch: Any class _JoinedDispatcher: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi index acfc63049..91d88b539 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi @@ -1,5 +1,14 @@ -from _typeshed import Incomplete -from typing import Any +from _typeshed import Incomplete, SupportsKeysAndGetItem +from collections.abc import Iterable +from typing import Any, TypeVar, overload +from typing_extensions import Literal, SupportsIndex + +from ..orm.attributes import Event +from ..util.langhelpers import _symbol, symbol + +_T = TypeVar("_T") +_KT = TypeVar("_KT") +_VT = TypeVar("_VT") class _PlainColumnGetter: cols: Any @@ -81,12 +90,41 @@ class CollectionAdapter: def fire_remove_event(self, item, initiator: Incomplete | None = None) -> None: ... def fire_pre_remove_event(self, initiator: Incomplete | None = None) -> None: ... -class InstrumentedList(list[Any]): ... -class InstrumentedSet(set[Any]): ... -class InstrumentedDict(dict[Any, Any]): ... +class InstrumentedList(list[_T]): + def append(self, item, _sa_initiator: Event | Literal[False] | None = None) -> None: ... + def clear(self, index: SupportsIndex = -1) -> None: ... + def extend(self, iterable: Iterable[_T]) -> None: ... + def insert(self, index: SupportsIndex, value: _T) -> None: ... + def pop(self, index: SupportsIndex = -1) -> _T: ... + def remove(self, value: _T, _sa_initiator: Event | Literal[False] | None = None) -> None: ... + +class InstrumentedSet(set[_T]): + def add(self, value: _T, _sa_initiator: Event | Literal[False] | None = None) -> None: ... + def difference_update(self, value: Iterable[_T]) -> None: ... # type: ignore[override] + def discard(self, value: _T, _sa_initiator: Event | Literal[False] | None = None) -> None: ... + def intersection_update(self, other: Iterable[_T]) -> None: ... # type: ignore[override] + def remove(self, value: _T, _sa_initiator: Event | Literal[False] | None = None) -> None: ... + def symmetric_difference_update(self, other: Iterable[_T]) -> None: ... + def update(self, value: Iterable[_T]) -> None: ... # type: ignore[override] + +class InstrumentedDict(dict[_KT, _VT]): ... -class MappedCollection(dict[Any, Any]): +class MappedCollection(dict[_KT, _VT]): keyfunc: Any def __init__(self, keyfunc) -> None: ... - def set(self, value, _sa_initiator: Incomplete | None = None) -> None: ... - def remove(self, value, _sa_initiator: Incomplete | None = None) -> None: ... + def set(self, value: _VT, _sa_initiator: Event | Literal[False] | None = None) -> None: ... + def remove(self, value: _VT, _sa_initiator: Event | Literal[False] | None = None) -> None: ... + def __delitem__(self, key: _KT, _sa_initiatorEvent: Event | Literal[False] | None = None) -> None: ... + def __setitem__(self, key: _KT, value: _VT, _sa_initiator: Event | Literal[False] | None = None) -> None: ... + @overload + def pop(self, key: _KT) -> _VT: ... + @overload + def pop(self, key: _KT, default: _VT | _T | _symbol | symbol = ...) -> _VT | _T: ... + @overload # type: ignore[override] + def setdefault(self, key: _KT, default: _T) -> _VT | _T: ... + @overload + def setdefault(self, key: _KT, default: None = None) -> _VT | None: ... + @overload + def update(self, __other: SupportsKeysAndGetItem[_KT, _VT] = ..., **kwargs: _VT) -> None: ... + @overload + def update(self, __other: Iterable[tuple[_KT, _VT]] = ..., **kwargs: _VT) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi index f36163478..f109fd39b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi @@ -13,7 +13,7 @@ _DeclT = TypeVar("_DeclT", bound=type[_DeclarativeBase]) # Dynamic class as created by registry.generate_base() via DeclarativeMeta # or another metaclass. This class does not exist at runtime. -class _DeclarativeBase(Any): # super classes are dynamic +class _DeclarativeBase(Any): # type: ignore[misc] # super classes are dynamic registry: ClassVar[registry] metadata: ClassVar[MetaData] __abstract__: ClassVar[bool] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi index 7147a204f..48321a09b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi @@ -1,5 +1,7 @@ from _typeshed import Incomplete +from collections.abc import Callable from typing import Any +from typing_extensions import Self from ..sql.base import Generative from .interfaces import LoaderOption @@ -17,27 +19,27 @@ class Load(Generative, LoaderOption): propagate_to_loaders: bool def process_compile_state_replaced_entities(self, compile_state, mapper_entities) -> None: ... def process_compile_state(self, compile_state) -> None: ... - def options(self, *opts) -> None: ... - def set_relationship_strategy(self, attr, strategy, propagate_to_loaders: bool = True) -> None: ... - def set_column_strategy(self, attrs, strategy, opts: Incomplete | None = None, opts_only: bool = False) -> None: ... - def set_generic_strategy(self, attrs, strategy) -> None: ... - def set_class_strategy(self, strategy, opts) -> None: ... - # added dynamically at runtime - def contains_eager(self, attr, alias: Incomplete | None = None): ... - def load_only(self, *attrs): ... - def joinedload(self, attr, innerjoin: Incomplete | None = None): ... - def subqueryload(self, attr): ... - def selectinload(self, attr): ... - def lazyload(self, attr): ... - def immediateload(self, attr): ... - def noload(self, attr): ... - def raiseload(self, attr, sql_only: bool = False): ... - def defaultload(self, attr): ... - def defer(self, key, raiseload: bool = False): ... - def undefer(self, key): ... - def undefer_group(self, name): ... - def with_expression(self, key, expression): ... - def selectin_polymorphic(self, classes): ... + def options(self, *opts) -> Self: ... + def set_relationship_strategy(self, attr, strategy, propagate_to_loaders: bool = True) -> Self: ... + def set_column_strategy(self, attrs, strategy, opts: Incomplete | None = None, opts_only: bool = False) -> Self: ... + def set_generic_strategy(self, attrs, strategy) -> Self: ... + def set_class_strategy(self, strategy, opts) -> Self: ... + # Added dynamically at runtime + def contains_eager(loadopt, attr, alias: Incomplete | None = None) -> Self: ... + def load_only(loadopt, *attrs) -> Self: ... + def joinedload(loadopt, attr, innerjoin: Incomplete | None = None) -> Self: ... + def subqueryload(loadopt, attr) -> Self: ... + def selectinload(loadopt, attr) -> Self: ... + def lazyload(loadopt, attr) -> Self: ... + def immediateload(loadopt, attr) -> Self: ... + def noload(loadopt, attr) -> Self: ... + def raiseload(loadopt, attr, sql_only: bool = False) -> Self: ... + def defaultload(loadopt, attr) -> Self: ... + def defer(loadopt, key, raiseload: bool = False) -> Self: ... + def undefer(loadopt, key) -> Self: ... + def undefer_group(loadopt, name) -> Self: ... + def with_expression(loadopt, key, expression) -> Self: ... + def selectin_polymorphic(loadopt, classes) -> Self: ... class _UnboundLoad(Load): path: Any @@ -45,22 +47,39 @@ class _UnboundLoad(Load): def __init__(self) -> None: ... class loader_option: - name: Any - fn: Any - def __call__(self, fn): ... + name: str + # The first parameter of this Callable should always be `loadopt: Load` + fn: Callable[..., loader_option] + def __call__(self, fn: Callable[..., loader_option]) -> Self: ... -def contains_eager(loadopt, attr, alias: Incomplete | None = ...): ... -def load_only(loadopt, *attrs): ... -def joinedload(loadopt, attr, innerjoin: Incomplete | None = ...): ... -def subqueryload(loadopt, attr): ... -def selectinload(loadopt, attr): ... -def lazyload(loadopt, attr): ... -def immediateload(loadopt, attr): ... -def noload(loadopt, attr): ... -def raiseload(loadopt, attr, sql_only: bool = ...): ... -def defaultload(loadopt, attr): ... -def defer(loadopt, key, raiseload: bool = ...): ... -def undefer(loadopt, key): ... -def undefer_group(loadopt, name): ... -def with_expression(loadopt, key, expression): ... -def selectin_polymorphic(loadopt, classes): ... +# loader_option instances that can be used to dynamically add methods to Load at runtime +@loader_option() +def contains_eager(loadopt: Load, attr, alias: Incomplete | None = ...) -> loader_option: ... +@loader_option() +def load_only(loadopt: Load, *attrs) -> loader_option: ... +@loader_option() +def joinedload(loadopt, attr, innerjoin=None): ... +@loader_option() +def subqueryload(loadopt: Load, attr) -> loader_option: ... +@loader_option() +def selectinload(loadopt: Load, attr) -> loader_option: ... +@loader_option() +def lazyload(loadopt: Load, attr) -> loader_option: ... +@loader_option() +def immediateload(loadopt: Load, attr) -> loader_option: ... +@loader_option() +def noload(loadopt: Load, attr) -> loader_option: ... +@loader_option() +def raiseload(loadopt: Load, attr, sql_only: bool = ...) -> loader_option: ... +@loader_option() +def defaultload(loadopt: Load, attr) -> loader_option: ... +@loader_option() +def defer(loadopt: Load, key, raiseload: bool = ...) -> loader_option: ... +@loader_option() +def undefer(loadopt: Load, key) -> loader_option: ... +@loader_option() +def undefer_group(loadopt: Load, name) -> loader_option: ... +@loader_option() +def with_expression(loadopt: Load, key) -> loader_option: ... +@loader_option() +def selectin_polymorphic(loadopt: Load, classes) -> loader_option: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi index 464a884c4..0a22c6e17 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi @@ -1,4 +1,6 @@ from _typeshed import Incomplete +from _typeshed.dbapi import DBAPIConnection +from collections.abc import Callable from typing import Any from .. import log @@ -24,7 +26,7 @@ class Pool(log.Identified): echo: Any def __init__( self, - creator, + creator: Callable[[], DBAPIConnection], recycle: int = -1, echo: Incomplete | None = None, logging_name: Incomplete | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi index e2bd4daa9..bf12c6fd3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi @@ -73,7 +73,7 @@ class _MetaOptions(type): def __init__(cls, classname, bases, dict_) -> None: ... def __add__(self, other): ... -class Options: +class Options(metaclass=_MetaOptions): def __init__(self, **kw) -> None: ... def __add__(self, other): ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi index f33bda45a..c10001f35 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi @@ -1,6 +1,8 @@ from _typeshed import Incomplete from typing import NamedTuple +from sqlalchemy.util.langhelpers import EnsureKWArgType + from ..util import memoized_property from . import elements @@ -67,7 +69,7 @@ class Compiled: @property def params(self): ... -class TypeCompiler: +class TypeCompiler(metaclass=EnsureKWArgType): ensure_kwarg: str dialect: Incomplete def __init__(self, dialect) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi index 1cf78c365..22404d761 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi @@ -87,7 +87,7 @@ class Function(FunctionElement): class _GenericMeta(TraversibleType): def __init__(cls, clsname, bases, clsdict) -> None: ... -class GenericFunction: +class GenericFunction(Function, metaclass=_GenericMeta): name: Incomplete identifier: Incomplete coerce_arguments: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi index 446590658..f5e384455 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi @@ -55,7 +55,7 @@ class VisitableCheckKWArg(util.EnsureKWArgType, TraversibleType): ... class ExternalType: cache_ok: Any -class UserDefinedType: +class UserDefinedType(ExternalType, TypeEngine, metaclass=VisitableCheckKWArg): __visit_name__: str ensure_kwarg: str def coerce_compared_value(self, op, value): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi index b3a9cc591..e8378c67d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi @@ -3,14 +3,14 @@ from typing import Any class TraversibleType(type): def __init__(cls, clsname, bases, clsdict) -> None: ... -class Traversible: +class Traversible(metaclass=TraversibleType): def __class_getitem__(cls, key): ... def get_children(self, omit_attrs=(), **kw): ... class _InternalTraversalType(type): def __init__(cls, clsname, bases, clsdict) -> None: ... -class InternalTraversal: +class InternalTraversal(metaclass=_InternalTraversalType): def dispatch(self, visit_symbol): ... def run_generated_dispatch(self, target, internal_dispatch, generate_dispatcher_name): ... def generate_dispatch(self, target_cls, internal_dispatch, generate_dispatcher_name): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi index db67aa9cb..c787b8c73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi @@ -1,12 +1,13 @@ -from typing import Any +from _typeshed import Incomplete +from typing import Any, Protocol -requirements: Any -db: Any -db_url: Any -db_opts: Any -file_config: Any -test_schema: Any -test_schema_2: Any +requirements: Incomplete | None +db: Incomplete | None +db_url: Incomplete | None +db_opts: Incomplete | None +file_config: Incomplete | None +test_schema: str | None +test_schema_2: str | None any_async: bool ident: str @@ -16,17 +17,26 @@ def fixture(*arg, **kw): ... def get_current_test_name(): ... def mark_base_test_class(): ... +# Matches the intersection of the config module and the Config class +class _ConfigProtocol(Protocol): # noqa: Y046 + db: Incomplete + db_opts: Incomplete + file_config: Incomplete + test_schema: Any # AnyOf[str, None] + test_schema_2: Any # AnyOf[str, None] + def skip_test(self, msg) -> None: ... + class Config: - db: Any - db_opts: Any - options: Any - file_config: Any + db: Incomplete + db_opts: Incomplete + options: Incomplete + file_config: Incomplete test_schema: str test_schema_2: str - is_async: Any + is_async: Incomplete def __init__(self, db, db_opts, options, file_config) -> None: ... @classmethod - def register(cls, db, db_opts, options, file_config): ... + def register(cls, db, db_opts, options, file_config) -> Config: ... @classmethod def set_as_current(cls, config, namespace) -> None: ... @classmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi index a6c48328b..8029cd4e9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi @@ -1,33 +1,63 @@ -from typing import Any +from _typeshed import Incomplete +from collections.abc import Callable +from logging import Logger +from typing import Any, Generic, NoReturn, TypeVar +from typing_extensions import Self, TypeAlias -log: Any -FOLLOWER_IDENT: Any +from ..engine.interfaces import Connectable +from ..engine.url import URL +from .config import Config, _ConfigProtocol -class register: - fns: Any - @classmethod - def init(cls, fn): ... - def for_db(self, *dbnames): ... - def __call__(self, cfg, *arg): ... +_Unused: TypeAlias = object +_S = TypeVar("_S", bound=str) +_U = TypeVar("_U", bound=URL) +_F = TypeVar("_F", bound=Callable[..., str | URL | None]) + +log: Logger +FOLLOWER_IDENT: Incomplete | None def create_follower_db(follower_ident) -> None: ... -def setup_config(db_url, options, file_config, follower_ident): ... +def setup_config(db_url, options, file_config, follower_ident) -> Config: ... def drop_follower_db(follower_ident) -> None: ... def generate_db_urls(db_urls, extra_drivers) -> None: ... -def generate_driver_url(url, driver, query_str): ... -def drop_all_schema_objects_pre_tables(cfg, eng) -> None: ... -def drop_all_schema_objects_post_tables(cfg, eng) -> None: ... def drop_all_schema_objects(cfg, eng) -> None: ... -def create_db(cfg, eng, ident) -> None: ... -def drop_db(cfg, eng, ident) -> None: ... -def update_db_opts(cfg, db_opts) -> None: ... -def post_configure_engine(url, engine, follower_ident) -> None: ... -def follower_url_from_main(url, ident): ... -def configure_follower(cfg, ident) -> None: ... -def run_reap_dbs(url, ident) -> None: ... def reap_dbs(idents_file) -> None: ... -def temp_table_keyword_args(cfg, eng) -> None: ... -def prepare_for_drop_tables(config, connection) -> None: ... -def stop_test_class_outside_fixtures(config, db, testcls) -> None: ... -def get_temp_table_name(cfg, eng, base_name): ... -def set_default_schema_on_connection(cfg, dbapi_connection, schema_name) -> None: ... + +class register(Generic[_F]): + fns: dict[str, _F] + @classmethod + def init(cls, fn: _F) -> Self: ... + def for_db(self, *dbnames: str) -> Callable[[_F], Self]: ... + # Impossible to specify the args from the generic Callable in the current type system + def __call__(self, cfg: str | URL | _ConfigProtocol, *arg: Any) -> str | URL | None: ... # AnyOf[str | URL | None] + +@register.init +def generate_driver_url(url: _U, driver: str, query_str: str) -> _U | None: ... +@register.init +def drop_all_schema_objects_pre_tables(cfg: _Unused, eng: _Unused) -> None: ... +@register.init +def drop_all_schema_objects_post_tables(cfg: _Unused, eng: _Unused) -> None: ... +@register.init +def create_db(cfg: _Unused, eng: Connectable, ident: _Unused) -> NoReturn: ... +@register.init +def drop_db(cfg: _Unused, eng: Connectable, ident: _Unused) -> NoReturn: ... +@register.init +def update_db_opts(db_url: _Unused, db_opts: _Unused) -> None: ... +@register.init +def post_configure_engine(url: _Unused, engine: _Unused, follower_ident: _Unused) -> None: ... +@register.init +def follower_url_from_main(url: _U, ident: str) -> _U: ... +@register.init +def configure_follower(cfg: _Unused, ident: _Unused) -> None: ... +@register.init +def run_reap_dbs(url: _Unused, ident: _Unused) -> None: ... +@register.init +def temp_table_keyword_args(cfg: _Unused, eng: Connectable) -> NoReturn: ... +@register.init +def prepare_for_drop_tables(config: _Unused, connection: _Unused) -> None: ... +@register.init +def stop_test_class_outside_fixtures(config: _Unused, db: _Unused, testcls: _Unused) -> None: ... +@register.init # type: ignore[type-var] # False-positive, _S is bound to str +def get_temp_table_name(cfg: _Unused, eng: _Unused, base_name: _S) -> _S: ... +@register.init +def set_default_schema_on_connection(cfg: _ConfigProtocol, dbapi_connection: _Unused, schema_name: _Unused) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi index d569a665d..ae064446a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi @@ -59,6 +59,7 @@ from .compat import ( has_refcount_gc as has_refcount_gc, inspect_getfullargspec as inspect_getfullargspec, int_types as int_types, + is64bit as is64bit, iterbytes as iterbytes, itertools_filter as itertools_filter, itertools_filterfalse as itertools_filterfalse, @@ -76,6 +77,9 @@ from .compat import ( py37 as py37, py38 as py38, py39 as py39, + py310 as py310, + py311 as py311, + py312 as py312, pypy as pypy, quote_plus as quote_plus, raise_ as raise_, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi index 0317b827b..7fde0fc12 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi @@ -140,7 +140,7 @@ class IdentitySet: def __hash__(self) -> int: ... class WeakSequence: - def __init__(self, __elements=...) -> None: ... + def __init__(self, _WeakSequence__elements: Iterable[Incomplete] = ()) -> None: ... def append(self, item) -> None: ... def __len__(self) -> int: ... def __iter__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi index 6bee9382e..02ce27adc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi @@ -1,19 +1,20 @@ -import builtins -import collections -import contextlib import itertools import operator import pickle as pickle +import sys import threading as threading from _typeshed import Incomplete, Unused from abc import ABC as ABC +from builtins import callable as callable, next as next +from collections import namedtuple as namedtuple # noqa: Y024 # Actual import +from contextlib import contextmanager as contextmanager from datetime import timezone as timezone from functools import reduce as reduce -from io import BytesIO as BytesIO, StringIO as StringIO +from io import BytesIO, StringIO as StringIO from itertools import zip_longest as zip_longest from time import perf_counter as perf_counter from typing import TYPE_CHECKING as TYPE_CHECKING, Any, NamedTuple -from typing_extensions import Literal +from typing_extensions import Final from urllib.parse import ( parse_qsl as parse_qsl, quote as quote, @@ -24,21 +25,28 @@ from urllib.parse import ( byte_buffer = BytesIO +py312: bool +py311: bool +py310: bool py39: bool py38: bool py37: bool -py3k: Literal[True] -py2k: Literal[False] +py3k: Final = True +py2k: Final = False pypy: bool cpython: bool -win32: bool -osx: bool +if sys.platform == "win32": + win32: Final = True +else: + win32: Final = False +if sys.platform == "darwin": + osx: Final = True +else: + osx: Final = False arm: bool +is64bit: bool has_refcount_gc: bool -contextmanager = contextlib.contextmanager dottedgetter = operator.attrgetter -namedtuple = collections.namedtuple # noqa: Y024 -next = builtins.next class FullArgSpec(NamedTuple): args: Any @@ -82,10 +90,6 @@ def raise_( ) -> None: ... def u(s): ... def ue(s): ... - -callable = builtins.callable - -def safe_bytestring(text): ... def inspect_formatargspec( args, varargs: Incomplete | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi index d57b9adde..a18aa1a09 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi @@ -34,7 +34,7 @@ class PluginLoader: def __init__(self, group, auto_fn: Incomplete | None = None) -> None: ... def clear(self) -> None: ... def load(self, name): ... - def register(self, name, modulepath, objname): ... + def register(self, name, modulepath, objname) -> None: ... def get_cls_kwargs(cls, _set: Incomplete | None = None): ... def get_func_kwargs(func): ... @@ -133,12 +133,16 @@ class hybridmethod: def classlevel(self, func): ... class _symbol(int): - def __new__(cls, name, doc: Incomplete | None = None, canonical: Incomplete | None = None): ... + def __new__( # noqa: Y034 # Explicitly instantiates _symbol + self, name, doc: Incomplete | None = None, canonical: Incomplete | None = None + ) -> _symbol: ... def __reduce__(self): ... class symbol: symbols: Any - def __new__(cls, name, doc: Incomplete | None = None, canonical: Incomplete | None = None): ... + def __new__( # type: ignore[misc] # Explicitly instantiates _symbol + cls, name, doc: Incomplete | None = None, canonical: Incomplete | None = None + ) -> _symbol: ... @classmethod def parse_user_argument(cls, arg, choices, name, resolve_symbol_names: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/__init__.pyi index 4c6b894c0..f3eadd12e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/__init__.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete, SupportsRead -from collections.abc import Sequence +from collections.abc import Iterator, Sequence from typing import Any from typing_extensions import Self @@ -32,7 +32,7 @@ class BeautifulSoup(Tag): element_classes: Any builder: TreeBuilder is_xml: bool - known_xml: bool + known_xml: bool | None parse_only: SoupStrainer | None markup: str def __init__( @@ -86,7 +86,11 @@ class BeautifulSoup(Tag): def handle_endtag(self, name, nsprefix: Incomplete | None = None) -> None: ... def handle_data(self, data) -> None: ... def decode( # type: ignore[override] - self, pretty_print: bool = False, eventual_encoding: str = "utf-8", formatter: str | Formatter = "minimal" + self, + pretty_print: bool = False, + eventual_encoding: str = "utf-8", + formatter: str | Formatter = "minimal", + iterator: Iterator[PageElement] | None = None, ): ... # missing some arguments class BeautifulStoneSoup(BeautifulSoup): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi index 18f91d38e..8fc9681b7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi @@ -299,7 +299,11 @@ class Tag(PageElement): errors: str = "xmlcharrefreplace", ) -> bytes: ... def decode( - self, indent_level: int | None = None, eventual_encoding: str = "utf-8", formatter: str | Formatter = "minimal" + self, + indent_level: int | None = None, + eventual_encoding: str = "utf-8", + formatter: str | Formatter = "minimal", + iterator: Iterator[PageElement] | None = None, ) -> str: ... @overload def prettify(self, encoding: str, formatter: str | Formatter = "minimal") -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml index f0992bef9..b866d119a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.18.*" +version = "4.19.*" [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/_cffi_backend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/_cffi_backend.pyi index 1b3d8f20e..5724b092d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/_cffi_backend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/_cffi_backend.pyi @@ -203,7 +203,7 @@ class FFI: def offsetof(self, __cdecl: str | CType, __field_or_index: str | int, *__fields_or_indexes: str | int) -> int: ... def release(self, __cdata: CData) -> None: ... def sizeof(self, __cdecl: str | CType | CData) -> int: ... - def string(self, cdata: CData, maxlen: int) -> bytes | str: ... + def string(self, cdata: CData, maxlen: int = -1) -> bytes | str: ... def typeof(self, cdecl: str | CData) -> CType: ... def unpack(self, cdata: CData, length: int) -> bytes | str | list[Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi index e3ae14188..770751128 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi @@ -25,7 +25,12 @@ class FFI: def __init__(self, backend: types.ModuleType | None = None) -> None: ... def cdef(self, csource: str, override: bool = False, packed: bool = False, pack: int | None = None) -> None: ... def embedding_api(self, csource: str, packed: bool = False, pack: bool | int | None = None) -> None: ... - def dlopen(self, name: str, flags: int = 0) -> _cffi_backend.Lib: ... + + if sys.platform == "win32": + def dlopen(self, name: str, flags: int = ...) -> _cffi_backend.Lib: ... + else: + def dlopen(self, name: str | None, flags: int = ...) -> _cffi_backend.Lib: ... + def dlclose(self, lib: _cffi_backend.Lib) -> None: ... def typeof(self, cdecl: str | CData | types.BuiltinFunctionType | types.FunctionType) -> CType: ... def sizeof(self, cdecl: str | CData) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi index f279c6392..6a87f3434 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi @@ -1,13 +1,8 @@ -import sys +from typing_extensions import TypedDict from .universaldetector import UniversalDetector as UniversalDetector, _FinalResultType, _IntermediateResultType from .version import VERSION as VERSION, __version__ as __version__ -if sys.version_info >= (3, 8): - from typing import TypedDict -else: - from typing_extensions import TypedDict - # unused in this module, but imported in multiple submodules class _LangModelType(TypedDict): # noqa: Y049 char_to_order_map: tuple[int, ...] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi index 817578fa4..5290be31f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi @@ -4,16 +4,21 @@ from collections import OrderedDict from collections.abc import Iterator from re import Match, Pattern from typing import Any, overload -from typing_extensions import Literal, Self, TypeAlias +from typing_extensions import Final, Literal, Self, TypeAlias _RetType: TypeAlias = type[float | datetime.datetime] step_search_re: Pattern[str] only_int_re: Pattern[str] star_or_int_re: Pattern[str] -special_weekday_re: Pattern[str] +special_dow_re: Pattern[str] hash_expression_re: Pattern[str] -VALID_LEN_EXPRESSION: list[int] +VALID_LEN_EXPRESSION: Final[list[int]] +ALPHAS: Final[dict[str, int]] +DOW_ALPHAS: Final[dict[str, int]] +MONTHS: Final[str] +M_ALPHAS: Final[dict[str, int]] +WEEKDAYS: Final[str] def timedelta_to_seconds(td: datetime.timedelta) -> float: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/dj_database_url.pyi b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/dj_database_url.pyi index 4537ae4bf..99e9ef076 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/dj_database_url.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/dj_database_url.pyi @@ -9,7 +9,7 @@ SCHEMES: dict[str, str] class DBConfig(TypedDict, total=False): ATOMIC_REQUESTS: bool AUTOCOMMIT: bool - CONN_MAX_AGE: int + CONN_MAX_AGE: int | None DISABLE_SERVER_SIDE_CURSORS: bool ENGINE: str HOST: str @@ -33,7 +33,7 @@ def config( env: str = ..., default: str | None = ..., engine: str | None = ..., - conn_max_age: int = ..., + conn_max_age: int | None = ..., conn_health_checks: bool = ..., ssl_require: bool = ..., test_options: dict[Incomplete, Incomplete] | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi index c44b9e9d0..1d8da4539 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi @@ -18,7 +18,7 @@ class Connection: self, address: str, port: int, - username: str, + user: str, password: str, autocommit: bool = ..., packetsize: int | None = ..., @@ -129,8 +129,8 @@ def Binary(data: ReadableBuffer) -> memoryview: ... Decimal = decimal.Decimal -NUMBER: type[int] | type[float] | type[complex] -DATETIME: type[date] | type[time] | type[datetime] +NUMBER: type[int | float | complex] +DATETIME: type[date | time | datetime] STRING = str BINARY = memoryview ROWID = int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/mouse.pyi b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/mouse.pyi index d805a9d23..71484222c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/mouse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/keyboard/mouse.pyi @@ -47,14 +47,20 @@ def drag(start_x: int, start_y: int, end_x: int, end_y: int, absolute: bool = Tr def on_button( callback: Callable[..., None], args: _Ts = (), + # Omitting default: Darwin has no x and x2 buttons: list[_MouseButton] | tuple[_MouseButton, ...] | _MouseButton = ..., + # Omitting default: Darwin and Linux don't have "double", yet the defaults includes it types: list[_MouseEventType] | tuple[_MouseEventType, ...] | _MouseEventType = ..., ) -> _Callback: ... def on_click(callback: Callable[..., None], args: _Ts = ()) -> _Callback: ... def on_double_click(callback: Callable[..., None], args: _Ts = ()) -> _Callback: ... def on_right_click(callback: Callable[..., None], args: _Ts = ()) -> _Callback: ... def on_middle_click(callback: Callable[..., None], args: _Ts = ()) -> _Callback: ... -def wait(button: _MouseButton = "left", target_types: tuple[_MouseEventType] = ...) -> None: ... +def wait( + button: _MouseButton = "left", + # Omitting default: Darwin and Linux don't have "double", yet the defaults includes it + target_types: tuple[_MouseEventType, ...] = ..., +) -> None: ... if sys.platform == "win32": def get_position() -> tuple[c_long, c_long]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/__init__.pyi index 5cd87789d..4dccd927a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/__init__.pyi @@ -35,16 +35,16 @@ class IAB(BaseIdentifier): class EUI(BaseIdentifier): def __init__( - self, addr: EUI | int | str, version: int | None = None, dialect: type[mac_eui48] | type[eui64_base] | None = None + self, addr: EUI | int | str, version: int | None = None, dialect: type[mac_eui48 | eui64_base] | None = None ) -> None: ... @property def value(self) -> int: ... @value.setter def value(self, value: str | SupportsInt | SupportsIndex) -> None: ... @property - def dialect(self) -> type[mac_eui48] | type[eui64_base]: ... + def dialect(self) -> type[mac_eui48 | eui64_base]: ... @dialect.setter - def dialect(self, value: type[mac_eui48] | type[eui64_base] | None) -> None: ... + def dialect(self, value: type[mac_eui48 | eui64_base] | None) -> None: ... @property def oui(self) -> OUI: ... @property @@ -81,4 +81,4 @@ class EUI(BaseIdentifier): def ipv6_link_local(self) -> IPAddress: ... @property def info(self) -> DictDotLookup: ... - def format(self, dialect: type[mac_eui48] | type[eui64_base] | None = None) -> str: ... + def format(self, dialect: type[mac_eui48 | eui64_base] | None = None) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/ieee.pyi b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/ieee.pyi index 9adf6459b..a5f2079af 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/ieee.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/netaddr/eui/ieee.pyi @@ -26,7 +26,7 @@ class IABIndexParser(Publisher): def parse(self) -> None: ... def create_index_from_registry( - registry_fh: BinaryIO | FileDescriptorOrPath, index_path: StrOrBytesPath, parser: type[OUIIndexParser] | type[IABIndexParser] + registry_fh: BinaryIO | FileDescriptorOrPath, index_path: StrOrBytesPath, parser: type[OUIIndexParser | IABIndexParser] ) -> None: ... def create_indices() -> None: ... def load_index(index: _INDEX, fp: Iterable[bytes]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi index b347be49e..b74da8ee3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi @@ -12,9 +12,9 @@ class _WorkbookChild: @property def encoding(self): ... @property - def title(self): ... + def title(self) -> str: ... @title.setter - def title(self, value) -> None: ... + def title(self, value: str | bytes) -> None: ... @property def oddHeader(self): ... @oddHeader.setter diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psutil_windows.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psutil_windows.pyi index def198673..0ce552766 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psutil_windows.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psutil_windows.pyi @@ -80,6 +80,7 @@ def proc_username(*args, **kwargs): ... # incomplete def proc_wait(*args, **kwargs): ... # incomplete def sensors_battery(*args, **kwargs): ... # incomplete def set_debug(*args, **kwargs): ... # incomplete +def swap_percent(*args, **kwargs): ... # incomplete def users(*args, **kwargs): ... # incomplete def virtual_mem(*args, **kwargs): ... # incomplete def winservice_enumerate(*args, **kwargs): ... # incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/SSL.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/SSL.pyi index a9c012867..bf3530a6a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/SSL.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/SSL.pyi @@ -110,7 +110,7 @@ class WantX509LookupError(Error): ... class ZeroReturnError(Error): ... class SysCallError(Error): ... -def SSLeay_version(type: int) -> str: ... +def SSLeay_version(type: int) -> bytes: ... class Session: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml index 8159c1eba..e94528184 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml @@ -1,2 +1,2 @@ -version = "5.9.*" +version = "5.10.*" requires = ["types-setuptools"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/__init__.pyi index 4ce1c4310..3a02b5f35 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/jose/backends/__init__.pyi @@ -15,7 +15,7 @@ from .rsa_backend import RSAKey as BackendRSAKey # then falling back on other imports # these are all the potential options AESKey: type[CryptographyAESKey] | None -HMACKey: type[CryptographyHMACKey] | type[NativeHMACKey] -RSAKey: type[CryptographyRSAKey] | type[BackendRSAKey] | None -ECKey: type[CryptographyECKey] | type[ECDSAECKey] +HMACKey: type[CryptographyHMACKey | NativeHMACKey] +RSAKey: type[CryptographyRSAKey | BackendRSAKey] | None +ECKey: type[CryptographyECKey | ECDSAECKey] get_random_bytes: Callable[[int], bytes] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/event.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/event.pyi index 6e6e31f7b..a1167dde9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/event.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/Xlib/protocol/event.pyi @@ -43,38 +43,40 @@ class KeymapNotify(rq.Event): ... _EventClass: TypeAlias = dict[ int, - type[KeyPress] - | type[KeyRelease] - | type[ButtonPress] - | type[ButtonRelease] - | type[MotionNotify] - | type[EnterNotify] - | type[LeaveNotify] - | type[FocusIn] - | type[FocusOut] - | type[KeymapNotify] - | type[Expose] - | type[GraphicsExpose] - | type[NoExpose] - | type[VisibilityNotify] - | type[CreateNotify] - | type[DestroyNotify] - | type[UnmapNotify] - | type[MapNotify] - | type[MapRequest] - | type[ReparentNotify] - | type[ConfigureNotify] - | type[ConfigureRequest] - | type[GravityNotify] - | type[ResizeRequest] - | type[CirculateNotify] - | type[CirculateRequest] - | type[PropertyNotify] - | type[SelectionClear] - | type[SelectionRequest] - | type[SelectionNotify] - | type[ColormapNotify] - | type[ClientMessage] - | type[MappingNotify], + type[ + KeyPress + | KeyRelease + | ButtonPress + | ButtonRelease + | MotionNotify + | EnterNotify + | LeaveNotify + | FocusIn + | FocusOut + | KeymapNotify + | Expose + | GraphicsExpose + | NoExpose + | VisibilityNotify + | CreateNotify + | DestroyNotify + | UnmapNotify + | MapNotify + | MapRequest + | ReparentNotify + | ConfigureNotify + | ConfigureRequest + | GravityNotify + | ResizeRequest + | CirculateNotify + | CirculateRequest + | PropertyNotify + | SelectionClear + | SelectionRequest + | SelectionNotify + | ColormapNotify + | ClientMessage + | MappingNotify + ], ] event_class: Final[_EventClass] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml index d67b34ab7..948bda814 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml @@ -1,4 +1,4 @@ -version = "67.6.*" +version = "67.7.*" [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi index 0fef3642e..109af35c4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi @@ -2,10 +2,10 @@ from abc import abstractmethod from collections.abc import Iterable, Mapping, Sequence from typing import Any -from setuptools._deprecation_warning import SetuptoolsDeprecationWarning as SetuptoolsDeprecationWarning from setuptools.depends import Require as Require from setuptools.dist import Distribution as Distribution from setuptools.extension import Extension as Extension +from setuptools.warnings import SetuptoolsDeprecationWarning as SetuptoolsDeprecationWarning from ._distutils.cmd import Command as _Command diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_deprecation_warning.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_deprecation_warning.pyi deleted file mode 100644 index 43a7220c6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_deprecation_warning.pyi +++ /dev/null @@ -1 +0,0 @@ -class SetuptoolsDeprecationWarning(Warning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/errors.pyi index d19ac8b04..e483362bf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/errors.pyi @@ -1 +1,19 @@ class DistutilsError(Exception): ... +class DistutilsModuleError(DistutilsError): ... +class DistutilsClassError(DistutilsError): ... +class DistutilsGetoptError(DistutilsError): ... +class DistutilsArgError(DistutilsError): ... +class DistutilsFileError(DistutilsError): ... +class DistutilsOptionError(DistutilsError): ... +class DistutilsSetupError(DistutilsError): ... +class DistutilsPlatformError(DistutilsError): ... +class DistutilsExecError(DistutilsError): ... +class DistutilsInternalError(DistutilsError): ... +class DistutilsTemplateError(DistutilsError): ... +class DistutilsByteCompileError(DistutilsError): ... +class CCompilerError(Exception): ... +class PreprocessError(CCompilerError): ... +class CompileError(CCompilerError): ... +class LibError(CCompilerError): ... +class LinkError(CCompilerError): ... +class UnknownFileError(CCompilerError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/errors.pyi index 2e31b89c8..003874563 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/errors.pyi @@ -1,3 +1,22 @@ -from ._distutils.errors import DistutilsError +from ._distutils import errors as _distutils_errors -class RemovedCommandError(DistutilsError, RuntimeError): ... +ByteCompileError = _distutils_errors.DistutilsByteCompileError +CCompilerError = _distutils_errors.CCompilerError +ClassError = _distutils_errors.DistutilsClassError +CompileError = _distutils_errors.CompileError +ExecError = _distutils_errors.DistutilsExecError +FileError = _distutils_errors.DistutilsFileError +InternalError = _distutils_errors.DistutilsInternalError +LibError = _distutils_errors.LibError +LinkError = _distutils_errors.LinkError +ModuleError = _distutils_errors.DistutilsModuleError +OptionError = _distutils_errors.DistutilsOptionError +PlatformError = _distutils_errors.DistutilsPlatformError +PreprocessError = _distutils_errors.PreprocessError +SetupError = _distutils_errors.DistutilsSetupError +TemplateError = _distutils_errors.DistutilsTemplateError +UnknownFileError = _distutils_errors.UnknownFileError +BaseError = _distutils_errors.DistutilsError + +class RemovedCommandError(BaseError, RuntimeError): ... +class PackageDiscoveryError(BaseError, RuntimeError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/warnings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/warnings.pyi new file mode 100644 index 000000000..b75a929b6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/warnings.pyi @@ -0,0 +1,15 @@ +class SetuptoolsWarning(UserWarning): + @classmethod + def emit( + cls, + summary: str | None = None, + details: str | None = None, + due_date: tuple[int, int, int] | None = None, + see_docs: str | None = None, + see_url: str | None = None, + stacklevel: int = 2, + **kwargs, + ) -> None: ... + +class InformationOnly(SetuptoolsWarning): ... +class SetuptoolsDeprecationWarning(SetuptoolsWarning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml index 5a55c100a..c6ff42e73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml @@ -1,4 +1,4 @@ -version = "3.18.*" +version = "3.19.*" [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/encoder.pyi b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/encoder.pyi index 88c3da92c..e69a066df 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/encoder.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/simplejson/encoder.pyi @@ -5,6 +5,6 @@ class JSONEncoder: def __init__(self, *args: Any, **kwargs: Any) -> None: ... def encode(self, o: Any) -> str: ... def default(self, o: Any) -> NoReturn: ... - def iterencode(self, o: Any, _one_shot: bool = False) -> Iterator[str]: ... + def iterencode(self, o: Any) -> Iterator[str]: ... class JSONEncoderForHTML(JSONEncoder): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ujson/ujson.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ujson/ujson.pyi index b2528a9d0..9f2155415 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ujson/ujson.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ujson/ujson.pyi @@ -1,3 +1,5 @@ +from _typeshed import Incomplete +from collections.abc import Callable from typing import IO, Any, AnyStr __version__: str @@ -10,6 +12,10 @@ def encode( escape_forward_slashes: bool = ..., sort_keys: bool = ..., indent: int = ..., + allow_nan: bool = ..., + reject_bytes: bool = ..., + default: Callable[[Incomplete], Incomplete] | None = None, + separators: tuple[str, str] | None = None, ) -> str: ... def dumps( obj: Any, @@ -19,16 +25,25 @@ def dumps( escape_forward_slashes: bool = ..., sort_keys: bool = ..., indent: int = ..., + allow_nan: bool = ..., + reject_bytes: bool = ..., + default: Callable[[Incomplete], Incomplete] | None = None, + separators: tuple[str, str] | None = None, ) -> str: ... def dump( obj: Any, fp: IO[str], + *, ensure_ascii: bool = ..., double_precision: int = ..., encode_html_chars: bool = ..., escape_forward_slashes: bool = ..., sort_keys: bool = ..., indent: int = ..., + allow_nan: bool = ..., + reject_bytes: bool = ..., + default: Callable[[Incomplete], Incomplete] | None = None, + separators: tuple[str, str] | None = None, ) -> None: ... def decode(s: AnyStr, precise_float: bool = ...) -> Any: ... def loads(s: AnyStr, precise_float: bool = ...) -> Any: ... From 5969d07d5878a85ddfa4031f9b9c53fbceeb6e04 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 24 Apr 2023 12:27:54 -0700 Subject: [PATCH 068/525] Improved error message for binary operators that don't use union expansion. This addresses https://github.com/microsoft/pylance-release/issues/4281. --- .../src/analyzer/typeEvaluator.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 9dbc49755..28527d3f5 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -12670,7 +12670,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // this as a reportOptionalOperand diagnostic rather than a // reportGeneralTypeIssues diagnostic. addDiagnostic( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportOptionalOperand, + fileInfo.diagnosticRuleSet.reportOptionalOperand, DiagnosticRule.reportOptionalOperand, Localizer.Diagnostic.noneOperator().format({ operator: ParseTreeUtils.printOperator(node.operator), @@ -12678,6 +12678,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions node.leftExpression ); } else { + // If neither the LHS or RHS are unions, don't include a diagnostic addendum + // because it will be redundant with the main diagnostic message. The addenda + // are useful only if union expansion was used for one or both operands. + let diagString = ''; + if ( + isUnion(makeTopLevelTypeVarsConcrete(leftType)) || + isUnion(makeTopLevelTypeVarsConcrete(rightType)) + ) { + diagString = diag.getString(); + } + addDiagnostic( fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, DiagnosticRule.reportGeneralTypeIssues, @@ -12685,7 +12696,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions operator: ParseTreeUtils.printOperator(node.operator), leftType: printType(leftType), rightType: printType(rightType), - }) + diag.getString(), + }) + diagString, node ); } From 1f5fa72ae85caef57a09dbdaf1ee7250ca6d5a98 Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Mon, 24 Apr 2023 15:28:51 -0700 Subject: [PATCH 069/525] refactored DefinitionProvider (#5001) --- .../pyright-internal/src/analyzer/checker.ts | 5 +- .../pyright-internal/src/analyzer/program.ts | 66 +---- .../pyright-internal/src/analyzer/service.ts | 20 +- .../src/analyzer/sourceFile.ts | 47 +-- .../src/languageServerBase.ts | 14 +- .../src/languageService/definitionProvider.ts | 276 ++++++++++-------- .../src/tests/harness/fourslash/testState.ts | 21 +- 7 files changed, 181 insertions(+), 268 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 3029f6874..78bda5d0f 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -22,7 +22,7 @@ import { DiagnosticRule } from '../common/diagnosticRules'; import { getFileExtension } from '../common/pathUtils'; import { PythonVersion, versionToString } from '../common/pythonVersion'; import { TextRange } from '../common/textRange'; -import { DefinitionFilter, DefinitionProvider } from '../languageService/definitionProvider'; +import { DefinitionProvider } from '../languageService/definitionProvider'; import { Localizer } from '../localization/localize'; import { ArgumentCategory, @@ -3883,9 +3883,8 @@ export class Checker extends ParseTreeWalker { // If the definition for this name is in 'user' module, it is overwriting the stdlib module. const definitions = DefinitionProvider.getDefinitionsForNode( this._sourceMapper, - namePartNodes[namePartNodes.length - 1], - DefinitionFilter.All, this._evaluator, + namePartNodes[namePartNodes.length - 1], CancellationToken.None ); const paths = definitions ? definitions.map((d) => d.path) : []; diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 79561d3e4..c430ce5a1 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -46,15 +46,7 @@ import { import { convertPositionToOffset, convertRangeToTextRange, convertTextRangeToRange } from '../common/positionUtils'; import { computeCompletionSimilarity } from '../common/stringUtils'; import { TextEditTracker } from '../common/textEditTracker'; -import { - DocumentRange, - doesRangeContain, - doRangesIntersect, - getEmptyRange, - Position, - Range, - TextRange, -} from '../common/textRange'; +import { doesRangeContain, doRangesIntersect, getEmptyRange, Position, Range, TextRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; import { applyTextEditsToString } from '../common/workspaceEditUtils'; @@ -73,7 +65,6 @@ import { CompletionOptions, CompletionResultsList, } from '../languageService/completionProvider'; -import { DefinitionFilter } from '../languageService/definitionProvider'; import { DocumentSymbolCollector, DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; import { IndexOptions, IndexResults, WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; import { ImportAdder, ImportData } from '../languageService/importAdder'; @@ -1686,61 +1677,6 @@ export class Program { }); } - getDefinitionsForPosition( - filePath: string, - position: Position, - filter: DefinitionFilter, - token: CancellationToken - ): DocumentRange[] | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - return sourceFileInfo.sourceFile.getDefinitionsForPosition( - this._createSourceMapper(execEnv, token, sourceFileInfo), - position, - filter, - this._evaluator!, - token - ); - }); - } - - getTypeDefinitionsForPosition( - filePath: string, - position: Position, - token: CancellationToken - ): DocumentRange[] | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - return sourceFileInfo.sourceFile.getTypeDefinitionsForPosition( - this._createSourceMapper( - execEnv, - token, - sourceFileInfo, - /* mapCompiled */ false, - /* preferStubs */ true - ), - position, - this._evaluator!, - filePath, - token - ); - }); - } - reportReferencesForPosition( filePath: string, position: Position, diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index b287f3d8e..38929f0b6 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -55,11 +55,10 @@ import { tryRealpath, tryStat, } from '../common/pathUtils'; -import { DocumentRange, Position, Range } from '../common/textRange'; +import { Position, Range } from '../common/textRange'; import { timingStats } from '../common/timing'; import { AutoImportOptions, ImportFormat } from '../languageService/autoImporter'; import { AbbreviationMap, CompletionOptions, CompletionResultsList } from '../languageService/completionProvider'; -import { DefinitionFilter } from '../languageService/definitionProvider'; import { WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; import { ReferenceCallback } from '../languageService/referencesProvider'; import { SignatureHelpResults } from '../languageService/signatureHelpProvider'; @@ -378,23 +377,6 @@ export class AnalyzerService { return this._program.getAutoImports(filePath, range, similarityLimit, nameMap, options, token); } - getDefinitionForPosition( - filePath: string, - position: Position, - filter: DefinitionFilter, - token: CancellationToken - ): DocumentRange[] | undefined { - return this._program.getDefinitionsForPosition(filePath, position, filter, token); - } - - getTypeDefinitionForPosition( - filePath: string, - position: Position, - token: CancellationToken - ): DocumentRange[] | undefined { - return this._program.getTypeDefinitionsForPosition(filePath, position, token); - } - reportReferencesForPosition( filePath: string, position: Position, diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 6a4fb5180..61d74c9d9 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -33,7 +33,7 @@ import { fromLSPAny } from '../common/lspUtils'; import { getFileName, normalizeSlashes, stripFileExtension } from '../common/pathUtils'; import { convertOffsetsToRange, convertTextRangeToRange } from '../common/positionUtils'; import * as StringUtils from '../common/stringUtils'; -import { DocumentRange, Position, Range, TextRange, getEmptyRange } from '../common/textRange'; +import { Position, Range, TextRange, getEmptyRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; import { ModuleSymbolMap } from '../languageService/autoImporter'; @@ -44,7 +44,6 @@ import { CompletionProvider, CompletionResults, } from '../languageService/completionProvider'; -import { DefinitionFilter, DefinitionProvider } from '../languageService/definitionProvider'; import { DocumentHighlightProvider } from '../languageService/documentHighlightProvider'; import { DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; import { DocumentSymbolProvider, IndexOptions, IndexResults } from '../languageService/documentSymbolProvider'; @@ -1013,50 +1012,6 @@ export class SourceFile { }); } - getDefinitionsForPosition( - sourceMapper: SourceMapper, - position: Position, - filter: DefinitionFilter, - evaluator: TypeEvaluator, - token: CancellationToken - ): DocumentRange[] | undefined { - // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults) { - return undefined; - } - - return DefinitionProvider.getDefinitionsForPosition( - sourceMapper, - this._parseResults, - position, - filter, - evaluator, - token - ); - } - - getTypeDefinitionsForPosition( - sourceMapper: SourceMapper, - position: Position, - evaluator: TypeEvaluator, - filePath: string, - token: CancellationToken - ): DocumentRange[] | undefined { - // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults) { - return undefined; - } - - return DefinitionProvider.getTypeDefinitionsForPosition( - sourceMapper, - this._parseResults, - position, - evaluator, - filePath, - token - ); - } - getDeclarationForPosition( sourceMapper: SourceMapper, position: Position, diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 37c90f104..134418986 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -114,7 +114,7 @@ import { convertToWorkspaceEdit } from './common/workspaceEditUtils'; import { AnalyzerServiceExecutor } from './languageService/analyzerServiceExecutor'; import { ImportFormat } from './languageService/autoImporter'; import { CompletionItemData, CompletionOptions, CompletionResultsList } from './languageService/completionProvider'; -import { DefinitionFilter } from './languageService/definitionProvider'; +import { DefinitionFilter, DefinitionProvider, TypeDefinitionProvider } from './languageService/definitionProvider'; import { WorkspaceSymbolCallback, convertToFlatSymbols } from './languageService/documentSymbolProvider'; import { HoverProvider } from './languageService/hoverProvider'; import { ReferenceCallback } from './languageService/referencesProvider'; @@ -789,7 +789,9 @@ export abstract class LanguageServerBase implements LanguageServerInterface { token, this.client.hasGoToDeclarationCapability ? DefinitionFilter.PreferSource : DefinitionFilter.All, (workspace, filePath, position, filter, token) => - workspace.service.getDefinitionForPosition(filePath, position, filter, token) + workspace.service.run((program) => { + return new DefinitionProvider(program, filePath, position, filter, token).getDefinitions(); + }, token) ); } @@ -802,7 +804,9 @@ export abstract class LanguageServerBase implements LanguageServerInterface { token, this.client.hasGoToDeclarationCapability ? DefinitionFilter.PreferStubs : DefinitionFilter.All, (workspace, filePath, position, filter, token) => - workspace.service.getDefinitionForPosition(filePath, position, filter, token) + workspace.service.run((program) => { + return new DefinitionProvider(program, filePath, position, filter, token).getDefinitions(); + }, token) ); } @@ -811,7 +815,9 @@ export abstract class LanguageServerBase implements LanguageServerInterface { token: CancellationToken ): Promise { return this.getDefinitions(params, token, DefinitionFilter.All, (workspace, filePath, position, _, token) => - workspace.service.getTypeDefinitionForPosition(filePath, position, token) + workspace.service.run((program) => { + return new TypeDefinitionProvider(program, filePath, position, token).getDefinitions(); + }, token) ); } diff --git a/packages/pyright-internal/src/languageService/definitionProvider.ts b/packages/pyright-internal/src/languageService/definitionProvider.ts index 83f969cb4..9d96c3e2e 100644 --- a/packages/pyright-internal/src/languageService/definitionProvider.ts +++ b/packages/pyright-internal/src/languageService/definitionProvider.ts @@ -15,17 +15,17 @@ import { CancellationToken } from 'vscode-languageserver'; import { getFileInfo } from '../analyzer/analyzerNodeInfo'; import { Declaration, DeclarationType, isFunctionDeclaration } from '../analyzer/declaration'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; -import { isStubFile, SourceMapper } from '../analyzer/sourceMapper'; +import { SourceMapper, isStubFile } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { isOverloadedFunction, TypeCategory } from '../analyzer/types'; import { doForEachSubtype } from '../analyzer/typeUtils'; +import { TypeCategory, isOverloadedFunction } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { isDefined } from '../common/core'; -import { DeclarationUseCase, Extensions } from '../common/extensibility'; +import { DeclarationUseCase, Extensions, ProgramView } from '../common/extensibility'; import { convertPositionToOffset } from '../common/positionUtils'; import { DocumentRange, Position, rangesAreEqual } from '../common/textRange'; -import { NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; +import { ParseNode, ParseNodeType } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; export enum DefinitionFilter { @@ -34,60 +34,41 @@ export enum DefinitionFilter { PreferStubs = 'preferStubs', } -export class DefinitionProvider { - static getDefinitionsForPosition( - sourceMapper: SourceMapper, - parseResults: ParseResults, - position: Position, - filter: DefinitionFilter, - evaluator: TypeEvaluator, - token: CancellationToken - ): DocumentRange[] | undefined { - throwIfCancellationRequested(token); - - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); - if (offset === undefined) { - return undefined; - } +class DefinitionProviderBase { + protected constructor( + protected readonly _sourceMapper: SourceMapper, + protected readonly _evaluator: TypeEvaluator, + protected readonly _node: ParseNode | undefined, + private readonly _filter: DefinitionFilter, + protected readonly _token: CancellationToken + ) {} - const node = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset); - if (node === undefined) { - return undefined; - } - - return DefinitionProvider.getDefinitionsForNode(sourceMapper, node, filter, evaluator, token); - } + getDefinitionsForNode(node: ParseNode) { + throwIfCancellationRequested(this._token); - static getDefinitionsForNode( - sourceMapper: SourceMapper, - node: ParseNode, - filter: DefinitionFilter, - evaluator: TypeEvaluator, - token: CancellationToken - ) { const definitions: DocumentRange[] = []; // Let extensions have a try first. Extensions.getProgramExtensions(node).forEach((e) => { if (e.declarationProviderExtension) { const declarations = e.declarationProviderExtension.tryGetDeclarations( - evaluator, + this._evaluator, node, DeclarationUseCase.Definition, - token + this._token ); - DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper); + this._resolveDeclarations(declarations, definitions); } }); // There should be only one 'definition', so only if extensions failed should we try again. if (definitions.length === 0) { if (node.nodeType === ParseNodeType.Name) { - const declarations = evaluator.getDeclarationsForNameNode(node); - DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper); + const declarations = this._evaluator.getDeclarationsForNameNode(node); + this._resolveDeclarations(declarations, definitions); } else if (node.nodeType === ParseNodeType.String) { - const declarations = evaluator.getDeclarationsForStringNode(node); - DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper); + const declarations = this._evaluator.getDeclarationsForStringNode(node); + this._resolveDeclarations(declarations, definitions); } } @@ -95,13 +76,13 @@ export class DefinitionProvider { return undefined; } - if (filter === DefinitionFilter.All) { + if (this._filter === DefinitionFilter.All) { return definitions; } // If go-to-declaration is supported, attempt to only show only pyi files in go-to-declaration // and none in go-to-definition, unless filtering would produce an empty list. - const preferStubs = filter === DefinitionFilter.PreferStubs; + const preferStubs = this._filter === DefinitionFilter.PreferStubs; const wantedFile = (v: DocumentRange) => preferStubs === isStubFile(v.path); if (definitions.find(wantedFile)) { return definitions.filter(wantedFile); @@ -110,74 +91,10 @@ export class DefinitionProvider { return definitions; } - static getTypeDefinitionsForPosition( - sourceMapper: SourceMapper, - parseResults: ParseResults, - position: Position, - evaluator: TypeEvaluator, - filePath: string, - token: CancellationToken - ): DocumentRange[] | undefined { - throwIfCancellationRequested(token); - - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); - if (offset === undefined) { - return undefined; - } - - const node = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset); - if (node === undefined) { - return undefined; - } - - const definitions: DocumentRange[] = []; - - if (node.nodeType === ParseNodeType.Name) { - const type = evaluator.getType(node); - - if (type) { - let declarations: Declaration[] = []; - - doForEachSubtype(type, (subtype) => { - if (subtype?.category === TypeCategory.Class) { - appendArray(declarations, sourceMapper.findClassDeclarationsByType(filePath, subtype)); - } - }); - - // Fall back to Go To Definition if the type can't be found (ex. Go To Type Definition - // was executed on a type name) - if (declarations.length === 0) { - declarations = evaluator.getDeclarationsForNameNode(node) ?? []; - } - - DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper); - } - } else if (node.nodeType === ParseNodeType.String) { - const declarations = evaluator.getDeclarationsForStringNode(node); - DefinitionProvider._resolveDeclarations(declarations, evaluator, definitions, sourceMapper); - } - - if (definitions.length === 0) { - return undefined; - } - - return definitions; - } - - private static _getDeclarationsForNameNode(node: NameNode, evaluator: TypeEvaluator) { - // Fall back to the evaluator if no extension handled it. - return evaluator.getDeclarationsForNameNode(node) ?? []; - } - - private static _resolveDeclarations( - declarations: Declaration[] | undefined, - evaluator: TypeEvaluator, - definitions: DocumentRange[], - sourceMapper: SourceMapper - ) { + protected _resolveDeclarations(declarations: Declaration[] | undefined, definitions: DocumentRange[]) { if (declarations) { declarations.forEach((decl) => { - let resolvedDecl = evaluator.resolveAliasDeclaration( + let resolvedDecl = this._evaluator.resolveAliasDeclaration( decl, /* resolveLocalNames */ true, /* allowExternallyHiddenAccess */ true @@ -200,19 +117,19 @@ export class DefinitionProvider { resolvedDecl = resolvedDecl.submoduleFallback; } - this._addIfUnique(definitions, { + _addIfUnique(definitions, { path: resolvedDecl.path, range: resolvedDecl.range, }); if (isFunctionDeclaration(resolvedDecl)) { // Handle overloaded function case - const functionType = evaluator.getTypeForDeclaration(resolvedDecl)?.type; + const functionType = this._evaluator.getTypeForDeclaration(resolvedDecl)?.type; if (functionType && isOverloadedFunction(functionType)) { for (const overloadDecl of functionType.overloads .map((o) => o.details.declaration) .filter(isDefined)) { - this._addIfUnique(definitions, { + _addIfUnique(definitions, { path: overloadDecl.path, range: overloadDecl.range, }); @@ -223,16 +140,16 @@ export class DefinitionProvider { if (isStubFile(resolvedDecl.path)) { if (resolvedDecl.type === DeclarationType.Alias) { // Add matching source module - sourceMapper + this._sourceMapper .findModules(resolvedDecl.path) .map((m) => getFileInfo(m)?.filePath) .filter(isDefined) - .forEach((f) => this._addIfUnique(definitions, this._createModuleEntry(f))); + .forEach((f) => _addIfUnique(definitions, _createModuleEntry(f))); } else { - const implDecls = sourceMapper.findDeclarations(resolvedDecl); + const implDecls = this._sourceMapper.findDeclarations(resolvedDecl); for (const implDecl of implDecls) { if (implDecl && implDecl.path) { - this._addIfUnique(definitions, { + _addIfUnique(definitions, { path: implDecl.path, range: implDecl.range, }); @@ -244,24 +161,127 @@ export class DefinitionProvider { }); } } +} - private static _createModuleEntry(filePath: string): DocumentRange { - return { - path: filePath, - range: { - start: { line: 0, character: 0 }, - end: { line: 0, character: 0 }, - }, - }; +export class DefinitionProvider extends DefinitionProviderBase { + constructor( + program: ProgramView, + filePath: string, + position: Position, + filter: DefinitionFilter, + token: CancellationToken + ) { + const sourceMapper = program.getSourceMapper(filePath, token); + const parseResults = program.getParseResults(filePath); + const node = _tryGetNode(parseResults, position); + + super(sourceMapper, program.evaluator!, node, filter, token); + } + + static getDefinitionsForNode( + sourceMapper: SourceMapper, + evaluator: TypeEvaluator, + node: ParseNode, + token: CancellationToken + ) { + const provider = new DefinitionProviderBase(sourceMapper, evaluator, node, DefinitionFilter.All, token); + return provider.getDefinitionsForNode(node); } - private static _addIfUnique(definitions: DocumentRange[], itemToAdd: DocumentRange) { - for (const def of definitions) { - if (def.path === itemToAdd.path && rangesAreEqual(def.range, itemToAdd.range)) { - return; + getDefinitions(): DocumentRange[] | undefined { + if (this._node === undefined) { + return undefined; + } + + return this.getDefinitionsForNode(this._node); + } +} + +export class TypeDefinitionProvider extends DefinitionProviderBase { + private readonly _filePath: string; + + constructor(program: ProgramView, filePath: string, position: Position, token: CancellationToken) { + const sourceMapper = program.getSourceMapper(filePath, token, /*mapCompiled*/ false, /*preferStubs*/ true); + const parseResults = program.getParseResults(filePath); + const node = _tryGetNode(parseResults, position); + + super(sourceMapper, program.evaluator!, node, DefinitionFilter.All, token); + this._filePath = filePath; + } + + getDefinitions(): DocumentRange[] | undefined { + throwIfCancellationRequested(this._token); + if (this._node === undefined) { + return undefined; + } + + const definitions: DocumentRange[] = []; + + if (this._node.nodeType === ParseNodeType.Name) { + const type = this._evaluator.getType(this._node); + + if (type) { + let declarations: Declaration[] = []; + + doForEachSubtype(type, (subtype) => { + if (subtype?.category === TypeCategory.Class) { + appendArray( + declarations, + this._sourceMapper.findClassDeclarationsByType(this._filePath, subtype) + ); + } + }); + + // Fall back to Go To Definition if the type can't be found (ex. Go To Type Definition + // was executed on a type name) + if (declarations.length === 0) { + declarations = this._evaluator.getDeclarationsForNameNode(this._node) ?? []; + } + + this._resolveDeclarations(declarations, definitions); } + } else if (this._node.nodeType === ParseNodeType.String) { + const declarations = this._evaluator.getDeclarationsForStringNode(this._node); + this._resolveDeclarations(declarations, definitions); + } + + if (definitions.length === 0) { + return undefined; } - definitions.push(itemToAdd); + return definitions; + } +} + +function _tryGetNode(parseResults: ParseResults | undefined, position: Position) { + if (!parseResults) { + return undefined; + } + + const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); + if (offset === undefined) { + return undefined; } + + return ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset); +} + +function _createModuleEntry(filePath: string): DocumentRange { + return { + path: filePath, + range: { + start: { line: 0, character: 0 }, + end: { line: 0, character: 0 }, + }, + }; +} + +function _addIfUnique(definitions: DocumentRange[], itemToAdd: DocumentRange) { + for (const def of definitions) { + if (def.path === itemToAdd.path && rangesAreEqual(def.range, itemToAdd.range)) { + return; + } + } + + definitions.push(itemToAdd); } diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 5ce359426..016e80dab 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -53,7 +53,11 @@ import { TextRangeCollection } from '../../../common/textRangeCollection'; import { LanguageServerInterface } from '../../../languageServerBase'; import { AbbreviationInfo, ImportFormat } from '../../../languageService/autoImporter'; import { CompletionOptions } from '../../../languageService/completionProvider'; -import { DefinitionFilter } from '../../../languageService/definitionProvider'; +import { + DefinitionFilter, + DefinitionProvider, + TypeDefinitionProvider, +} from '../../../languageService/definitionProvider'; import { HoverProvider } from '../../../languageService/hoverProvider'; import { ParseNode } from '../../../parser/parseNodes'; import { ParseResults } from '../../../parser/parser'; @@ -1330,7 +1334,13 @@ export class TestState { } const position = this.convertOffsetToPosition(fileName, marker.position); - const actual = this.program.getDefinitionsForPosition(fileName, position, filter, CancellationToken.None); + const actual = new DefinitionProvider( + this.program, + fileName, + position, + filter, + CancellationToken.None + ).getDefinitions(); assert.equal(actual?.length ?? 0, expected.length, `No definitions found for marker "${name}"`); @@ -1362,7 +1372,12 @@ export class TestState { const expected = map[name].definitions; const position = this.convertOffsetToPosition(fileName, marker.position); - const actual = this.program.getTypeDefinitionsForPosition(fileName, position, CancellationToken.None); + const actual = new TypeDefinitionProvider( + this.program, + fileName, + position, + CancellationToken.None + ).getDefinitions(); assert.strictEqual(actual?.length ?? 0, expected.length, name); From 1cdc566a89784ff25be9d8e5ce8d4075fda3339a Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Mon, 24 Apr 2023 16:20:04 -0700 Subject: [PATCH 070/525] Refactored DocumentHighlightProvider out of program (#5002) --- .../pyright-internal/src/analyzer/program.ts | 24 ----------- .../pyright-internal/src/analyzer/service.ts | 9 ----- .../src/analyzer/sourceFile.ts | 23 +---------- .../src/languageServerBase.ts | 6 ++- .../documentHighlightProvider.ts | 40 ++++++++++++------- .../src/tests/harness/fourslash/testState.ts | 8 +++- 6 files changed, 38 insertions(+), 72 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index c430ce5a1..2614ac623 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -15,7 +15,6 @@ import { CallHierarchyItem, CallHierarchyOutgoingCall, CompletionList, - DocumentHighlight, MarkupKind, } from 'vscode-languageserver-types'; @@ -1856,29 +1855,6 @@ export class Program { }); } - getDocumentHighlight( - filePath: string, - position: Position, - token: CancellationToken - ): DocumentHighlight[] | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - return sourceFileInfo.sourceFile.getDocumentHighlight( - this._createSourceMapper(execEnv, token, sourceFileInfo), - position, - this._evaluator!, - token - ); - }); - } - getSignatureHelpForPosition( filePath: string, position: Position, diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 38929f0b6..e073ffc84 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -21,7 +21,6 @@ import { CallHierarchyIncomingCall, CallHierarchyItem, CallHierarchyOutgoingCall, - DocumentHighlight, MarkupKind, } from 'vscode-languageserver-types'; @@ -395,14 +394,6 @@ export class AnalyzerService { this._program.reportSymbolsForWorkspace(query, reporter, token); } - getDocumentHighlight( - filePath: string, - position: Position, - token: CancellationToken - ): DocumentHighlight[] | undefined { - return this._program.getDocumentHighlight(filePath, position, token); - } - getSignatureHelpForPosition( filePath: string, position: Position, diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 61d74c9d9..fb81a7b46 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -7,13 +7,7 @@ * Class that represents a single Python source or stub file. */ -import { - CancellationToken, - CompletionItem, - DocumentHighlight, - DocumentSymbol, - MarkupKind, -} from 'vscode-languageserver'; +import { CancellationToken, CompletionItem, DocumentSymbol, MarkupKind } from 'vscode-languageserver'; import { TextDocument, TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; import { isMainThread } from 'worker_threads'; @@ -44,7 +38,6 @@ import { CompletionProvider, CompletionResults, } from '../languageService/completionProvider'; -import { DocumentHighlightProvider } from '../languageService/documentHighlightProvider'; import { DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; import { DocumentSymbolProvider, IndexOptions, IndexResults } from '../languageService/documentSymbolProvider'; import { performQuickAction } from '../languageService/quickActions'; @@ -1091,20 +1084,6 @@ export class SourceFile { ); } - getDocumentHighlight( - sourceMapper: SourceMapper, - position: Position, - evaluator: TypeEvaluator, - token: CancellationToken - ): DocumentHighlight[] | undefined { - // If this file hasn't been bound, no hover info is available. - if (this._isBindingNeeded || !this._parseResults) { - return undefined; - } - - return DocumentHighlightProvider.getDocumentHighlight(this._parseResults, position, evaluator, token); - } - getSignatureHelpForPosition( position: Position, sourceMapper: SourceMapper, diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 134418986..7c2f9701b 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -115,6 +115,7 @@ import { AnalyzerServiceExecutor } from './languageService/analyzerServiceExecut import { ImportFormat } from './languageService/autoImporter'; import { CompletionItemData, CompletionOptions, CompletionResultsList } from './languageService/completionProvider'; import { DefinitionFilter, DefinitionProvider, TypeDefinitionProvider } from './languageService/definitionProvider'; +import { DocumentHighlightProvider } from './languageService/documentHighlightProvider'; import { WorkspaceSymbolCallback, convertToFlatSymbols } from './languageService/documentSymbolProvider'; import { HoverProvider } from './languageService/hoverProvider'; import { ReferenceCallback } from './languageService/referencesProvider'; @@ -976,7 +977,10 @@ export abstract class LanguageServerBase implements LanguageServerInterface { ): Promise { const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); - return workspace.service.getDocumentHighlight(filePath, position, token); + + return workspace.service.run((program) => { + return new DocumentHighlightProvider(program, filePath, position, token).getDocumentHighlight(); + }, token); } protected async onSignatureHelp( diff --git a/packages/pyright-internal/src/languageService/documentHighlightProvider.ts b/packages/pyright-internal/src/languageService/documentHighlightProvider.ts index 94492e4ac..63716ed83 100644 --- a/packages/pyright-internal/src/languageService/documentHighlightProvider.ts +++ b/packages/pyright-internal/src/languageService/documentHighlightProvider.ts @@ -11,8 +11,8 @@ import { CancellationToken, DocumentHighlight, DocumentHighlightKind } from 'vscode-languageserver'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; -import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; +import { ProgramView } from '../common/extensibility'; import { convertOffsetsToRange, convertPositionToOffset } from '../common/positionUtils'; import { Position, TextRange } from '../common/textRange'; import { ParseNodeType } from '../parser/parseNodes'; @@ -20,20 +20,29 @@ import { ParseResults } from '../parser/parser'; import { DocumentSymbolCollector } from './documentSymbolCollector'; export class DocumentHighlightProvider { - static getDocumentHighlight( - parseResults: ParseResults, - position: Position, - evaluator: TypeEvaluator, - token: CancellationToken - ): DocumentHighlight[] | undefined { - throwIfCancellationRequested(token); - - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); + private readonly _parseResults: ParseResults | undefined; + + constructor( + private _program: ProgramView, + private _filePath: string, + private _position: Position, + private _token: CancellationToken + ) { + this._parseResults = this._program.getParseResults(this._filePath); + } + + getDocumentHighlight(): DocumentHighlight[] | undefined { + throwIfCancellationRequested(this._token); + if (!this._parseResults) { + return undefined; + } + + const offset = convertPositionToOffset(this._position, this._parseResults.tokenizerOutput.lines); if (offset === undefined) { return undefined; } - const node = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset); + const node = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, offset); if (node === undefined) { return undefined; } @@ -44,18 +53,19 @@ export class DocumentHighlightProvider { const results = DocumentSymbolCollector.collectFromNode( node, - evaluator, - token, - parseResults.parseTree, + this._program.evaluator!, + this._token, + this._parseResults.parseTree, /* treatModuleInImportAndFromImportSame */ true ); + const lines = this._parseResults.tokenizerOutput.lines; return results.map((r) => ({ kind: r.node.nodeType === ParseNodeType.Name && ParseTreeUtils.isWriteAccess(r.node) ? DocumentHighlightKind.Write : DocumentHighlightKind.Read, - range: convertOffsetsToRange(r.range.start, TextRange.getEnd(r.range), parseResults.tokenizerOutput.lines), + range: convertOffsetsToRange(r.range.start, TextRange.getEnd(r.range), lines), })); } } diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 016e80dab..611a40c8c 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -58,6 +58,7 @@ import { DefinitionProvider, TypeDefinitionProvider, } from '../../../languageService/definitionProvider'; +import { DocumentHighlightProvider } from '../../../languageService/documentHighlightProvider'; import { HoverProvider } from '../../../languageService/hoverProvider'; import { ParseNode } from '../../../parser/parseNodes'; import { ParseResults } from '../../../parser/parser'; @@ -1290,7 +1291,12 @@ export class TestState { const expected = map[name].references; const position = this.convertOffsetToPosition(fileName, marker.position); - const actual = this.program.getDocumentHighlight(fileName, position, CancellationToken.None); + const actual = new DocumentHighlightProvider( + this.program, + fileName, + position, + CancellationToken.None + ).getDocumentHighlight(); assert.equal(actual?.length ?? 0, expected.length); From cb7c41f4329f737fe20663be12505b8e5da47141 Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Mon, 24 Apr 2023 17:22:51 -0700 Subject: [PATCH 071/525] Refactored signature help out of program (#5004) * Refactored signature help out of program * remove unnecessary export --- .../pyright-internal/src/analyzer/program.ts | 27 --- .../pyright-internal/src/analyzer/service.ts | 17 +- .../src/analyzer/sourceFile.ts | 25 +- .../src/languageServerBase.ts | 106 ++------- .../languageService/signatureHelpProvider.ts | 220 +++++++++++++----- .../src/tests/harness/fourslash/testState.ts | 17 +- .../src/tests/signatureHelp.test.ts | 9 +- 7 files changed, 199 insertions(+), 222 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 2614ac623..4b5e810e1 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -15,7 +15,6 @@ import { CallHierarchyItem, CallHierarchyOutgoingCall, CompletionList, - MarkupKind, } from 'vscode-languageserver-types'; import { Commands } from '../commands/commands'; @@ -71,7 +70,6 @@ import { getModuleStatementIndentation, reindentSpan } from '../languageService/ import { getInsertionPointForSymbolUnderModule } from '../languageService/insertionPointUtils'; import { ReferenceCallback, ReferencesResult } from '../languageService/referencesProvider'; import { RenameModuleProvider } from '../languageService/renameModuleProvider'; -import { SignatureHelpResults } from '../languageService/signatureHelpProvider'; import { ParseNodeType, StatementNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { AbsoluteModuleDescriptor, ImportLookupResult } from './analyzerFileInfo'; @@ -1855,31 +1853,6 @@ export class Program { }); } - getSignatureHelpForPosition( - filePath: string, - position: Position, - format: MarkupKind, - token: CancellationToken - ): SignatureHelpResults | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - return sourceFileInfo.sourceFile.getSignatureHelpForPosition( - position, - this._createSourceMapper(execEnv, token, sourceFileInfo, /* mapCompiled */ true), - this._evaluator!, - format, - token - ); - }); - } - async getCompletionsForPosition( filePath: string, position: Position, diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index e073ffc84..12e8e7aa9 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -17,12 +17,7 @@ import { DocumentSymbol, } from 'vscode-languageserver'; import { TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; -import { - CallHierarchyIncomingCall, - CallHierarchyItem, - CallHierarchyOutgoingCall, - MarkupKind, -} from 'vscode-languageserver-types'; +import { CallHierarchyIncomingCall, CallHierarchyItem, CallHierarchyOutgoingCall } from 'vscode-languageserver-types'; import { BackgroundAnalysisBase, IndexOptions, RefreshOptions } from '../backgroundAnalysisBase'; import { CancellationProvider, DefaultCancellationProvider } from '../common/cancellationUtils'; @@ -60,7 +55,6 @@ import { AutoImportOptions, ImportFormat } from '../languageService/autoImporter import { AbbreviationMap, CompletionOptions, CompletionResultsList } from '../languageService/completionProvider'; import { WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; import { ReferenceCallback } from '../languageService/referencesProvider'; -import { SignatureHelpResults } from '../languageService/signatureHelpProvider'; import { AnalysisCompleteCallback } from './analysis'; import { BackgroundAnalysisProgram, BackgroundAnalysisProgramFactory } from './backgroundAnalysisProgram'; import { CacheManager } from './cacheManager'; @@ -394,15 +388,6 @@ export class AnalyzerService { this._program.reportSymbolsForWorkspace(query, reporter, token); } - getSignatureHelpForPosition( - filePath: string, - position: Position, - format: MarkupKind, - token: CancellationToken - ): SignatureHelpResults | undefined { - return this._program.getSignatureHelpForPosition(filePath, position, format, token); - } - getCompletionsForPosition( filePath: string, position: Position, diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index fb81a7b46..d3e7db5b4 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -7,7 +7,7 @@ * Class that represents a single Python source or stub file. */ -import { CancellationToken, CompletionItem, DocumentSymbol, MarkupKind } from 'vscode-languageserver'; +import { CancellationToken, CompletionItem, DocumentSymbol } from 'vscode-languageserver'; import { TextDocument, TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; import { isMainThread } from 'worker_threads'; @@ -42,7 +42,6 @@ import { DocumentSymbolCollectorUseCase } from '../languageService/documentSymbo import { DocumentSymbolProvider, IndexOptions, IndexResults } from '../languageService/documentSymbolProvider'; import { performQuickAction } from '../languageService/quickActions'; import { ReferenceCallback, ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; -import { SignatureHelpProvider, SignatureHelpResults } from '../languageService/signatureHelpProvider'; import { Localizer } from '../localization/localize'; import { ModuleNode } from '../parser/parseNodes'; import { ModuleImport, ParseOptions, ParseResults, Parser } from '../parser/parser'; @@ -1084,28 +1083,6 @@ export class SourceFile { ); } - getSignatureHelpForPosition( - position: Position, - sourceMapper: SourceMapper, - evaluator: TypeEvaluator, - format: MarkupKind, - token: CancellationToken - ): SignatureHelpResults | undefined { - // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults) { - return undefined; - } - - return SignatureHelpProvider.getSignatureHelpForPosition( - this._parseResults, - position, - sourceMapper, - evaluator, - format, - token - ); - } - getCompletionsForPosition( position: Position, workspacePath: string, diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 7c2f9701b..440f63d8b 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -54,7 +54,6 @@ import { InitializeResult, Location, MarkupKind, - ParameterInformation, PrepareRenameParams, PublishDiagnosticsParams, ReferenceParams, @@ -62,8 +61,6 @@ import { RenameParams, SignatureHelp, SignatureHelpParams, - SignatureHelpTriggerKind, - SignatureInformation, SymbolInformation, TextDocumentPositionParams, TextDocumentSyncKind, @@ -119,6 +116,7 @@ import { DocumentHighlightProvider } from './languageService/documentHighlightPr import { WorkspaceSymbolCallback, convertToFlatSymbols } from './languageService/documentSymbolProvider'; import { HoverProvider } from './languageService/hoverProvider'; import { ReferenceCallback } from './languageService/referencesProvider'; +import { SignatureHelpProvider } from './languageService/signatureHelpProvider'; import { Localizer, setLocaleOverride } from './localization/localize'; import { PyrightFileSystem } from './pyrightFileSystem'; import { InitStatus, WellKnownWorkspaceKinds, Workspace, WorkspaceFactory } from './workspaceFactory'; @@ -993,97 +991,19 @@ export abstract class LanguageServerBase implements LanguageServerInterface { if (workspace.disableLanguageServices) { return; } - const signatureHelpResults = workspace.service.getSignatureHelpForPosition( - filePath, - position, - this.client.signatureDocFormat, - token - ); - if (!signatureHelpResults) { - return undefined; - } - - const signatures = signatureHelpResults.signatures.map((sig) => { - let paramInfo: ParameterInformation[] = []; - if (sig.parameters) { - paramInfo = sig.parameters.map((param) => - ParameterInformation.create( - this.client.hasSignatureLabelOffsetCapability - ? [param.startOffset, param.endOffset] - : param.text, - param.documentation - ) - ); - } - const sigInfo = SignatureInformation.create(sig.label, /* documentation */ undefined, ...paramInfo); - if (sig.documentation !== undefined) { - sigInfo.documentation = sig.documentation; - } - if (sig.activeParameter !== undefined) { - sigInfo.activeParameter = sig.activeParameter; - } - return sigInfo; - }); - - // A signature is active if it contains an active parameter, - // or if both the signature and its invocation have no parameters. - const isActive = (sig: SignatureInformation) => - sig.activeParameter !== undefined || (!signatureHelpResults.callHasParameters && !sig.parameters?.length); - - let activeSignature: number | undefined = signatures.findIndex(isActive); - if (activeSignature === -1) { - activeSignature = undefined; - } - - let activeParameter = activeSignature !== undefined ? signatures[activeSignature].activeParameter! : undefined; - - // Check if we should reuse the user's signature selection. If the retrigger was not "invoked" - // (i.e., the signature help call was automatically generated by the client due to some navigation - // or text change), check to see if the previous signature is still "active". If so, we mark it as - // active in our response. - // - // This isn't a perfect method. For nested calls, we can't tell when we are moving between them. - // Ideally, we would include a token in the signature help responses to compare later, allowing us - // to know when the user's navigated to a nested call (and therefore the old signature's info does - // not apply), but for now manually retriggering the signature help will work around the issue. - if (params.context?.isRetrigger && params.context.triggerKind !== SignatureHelpTriggerKind.Invoked) { - const prevActiveSignature = params.context.activeSignatureHelp?.activeSignature; - if (prevActiveSignature !== undefined && prevActiveSignature < signatures.length) { - const sig = signatures[prevActiveSignature]; - if (isActive(sig)) { - activeSignature = prevActiveSignature; - activeParameter = sig.activeParameter; - } - } - } - - if (this.client.hasActiveParameterCapability || activeSignature === undefined) { - // If there is no active parameter, then we want the client to not highlight anything. - // Unfortunately, the LSP spec says that "undefined" or "out of bounds" values should be - // treated as 0, which is the first parameter. That's not what we want, but thankfully - // VS Code (and potentially other clients) choose to handle out of bounds values by - // not highlighting them, which is what we want. - // - // The spec defines activeParameter as uinteger, so use the maximum length of any - // signature's parameter list to ensure that the value is always out of range. - // - // We always set this even if some signature has an active parameter, as this - // value is used as the fallback for signatures that don't explicitly specify an - // active parameter (and we use "undefined" to mean "no active parameter"). - // - // We could apply this hack to each individual signature such that they all specify - // activeParameter, but that would make it more difficult to determine which actually - // are active when comparing, and we already have to set this for clients which don't - // support per-signature activeParameter. - // - // See: - // - https://github.com/microsoft/language-server-protocol/issues/1271 - // - https://github.com/microsoft/pyright/pull/1783 - activeParameter = Math.max(...signatures.map((s) => s.parameters?.length ?? 0)); - } - - return { signatures, activeSignature, activeParameter }; + return workspace.service.run((program) => { + return new SignatureHelpProvider( + program, + filePath, + position, + this.client.signatureDocFormat, + this.client.hasSignatureLabelOffsetCapability, + this.client.hasActiveParameterCapability, + params.context, + token + ).getSignatureHelp(); + }, token); } protected async onCompletion( diff --git a/packages/pyright-internal/src/languageService/signatureHelpProvider.ts b/packages/pyright-internal/src/languageService/signatureHelpProvider.ts index 374f52516..f3ad436d6 100644 --- a/packages/pyright-internal/src/languageService/signatureHelpProvider.ts +++ b/packages/pyright-internal/src/languageService/signatureHelpProvider.ts @@ -9,7 +9,16 @@ * arguments for the call. */ -import { CancellationToken, MarkupContent, MarkupKind } from 'vscode-languageserver'; +import { + CancellationToken, + MarkupContent, + MarkupKind, + ParameterInformation, + SignatureHelp, + SignatureHelpContext, + SignatureHelpTriggerKind, + SignatureInformation, +} from 'vscode-languageserver'; import { convertDocStringToMarkdown, convertDocStringToPlainText } from '../analyzer/docStringConversion'; import { extractParameterDocumentation } from '../analyzer/docStringUtils'; @@ -21,48 +30,47 @@ import { CallSignature, TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { PrintTypeFlags } from '../analyzer/typePrinter'; import { isClassInstance } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; +import { ProgramView } from '../common/extensibility'; import { convertPositionToOffset } from '../common/positionUtils'; import { Position } from '../common/textRange'; import { CallNode, NameNode, ParseNodeType } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { getDocumentationPartsForTypeAndDecl, getFunctionDocStringFromType } from './tooltipUtils'; -export interface ParamInfo { - startOffset: number; - endOffset: number; - text: string; - documentation?: string | undefined; -} +export class SignatureHelpProvider { + private readonly _parseResults: ParseResults | undefined; + private readonly _sourceMapper: SourceMapper; + + constructor( + private _program: ProgramView, + private _filePath: string, + private _position: Position, + private _format: MarkupKind, + private _hasSignatureLabelOffsetCapability: boolean, + private _hasActiveParameterCapability: boolean, + private _context: SignatureHelpContext | undefined, + private _token: CancellationToken + ) { + this._parseResults = this._program.getParseResults(this._filePath); + this._sourceMapper = this._program.getSourceMapper(this._filePath, this._token, /* mapCompiled */ true); + } -export interface SignatureInfo { - label: string; - documentation?: MarkupContent | undefined; - parameters?: ParamInfo[] | undefined; - activeParameter?: number | undefined; -} + getSignatureHelp(): SignatureHelp | undefined { + return this._convert(this._getSignatureHelp()); + } -export interface SignatureHelpResults { - signatures: SignatureInfo[]; - callHasParameters: boolean; -} + private _getSignatureHelp(): SignatureHelpResults | undefined { + throwIfCancellationRequested(this._token); + if (!this._parseResults) { + return undefined; + } -export class SignatureHelpProvider { - static getSignatureHelpForPosition( - parseResults: ParseResults, - position: Position, - sourceMapper: SourceMapper, - evaluator: TypeEvaluator, - format: MarkupKind, - token: CancellationToken - ): SignatureHelpResults | undefined { - throwIfCancellationRequested(token); - - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); + const offset = convertPositionToOffset(this._position, this._parseResults.tokenizerOutput.lines); if (offset === undefined) { return undefined; } - let node = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset); + let node = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, offset); // See if we can get to a "better" node by backing up a few columns. // A "better" node is defined as one that's deeper than the current @@ -75,11 +83,11 @@ export class SignatureHelpProvider { // arguments, and we don't want to mistakenly think that we're // pointing to a previous argument. Don't scan across open parenthesis so that // we don't go into the wrong function call - const ch = parseResults.text.substr(curOffset, 1); + const ch = this._parseResults.text.substr(curOffset, 1); if (ch === ',' || ch === '(') { break; } - const curNode = ParseTreeUtils.findNodeByOffset(parseResults.parseTree, curOffset); + const curNode = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, curOffset); if (curNode && curNode !== initialNode) { if (ParseTreeUtils.getNodeDepth(curNode) > initialDepth) { node = curNode; @@ -94,12 +102,12 @@ export class SignatureHelpProvider { return undefined; } - const callInfo = getCallNodeAndActiveParameterIndex(node, offset, parseResults.tokenizerOutput.tokens); + const callInfo = getCallNodeAndActiveParameterIndex(node, offset, this._parseResults.tokenizerOutput.tokens); if (!callInfo) { return; } - const callSignatureInfo = evaluator.getCallSignatureInfo( + const callSignatureInfo = this._evaluator.getCallSignatureInfo( callInfo.callNode, callInfo.activeIndex, callInfo.activeOrFake @@ -109,29 +117,114 @@ export class SignatureHelpProvider { } const signatures = callSignatureInfo.signatures.map((sig) => - this._makeSignature(callSignatureInfo.callNode, sig, sourceMapper, evaluator, format) + this._makeSignature(callSignatureInfo.callNode, sig) ); - const callHasParameters = !!callSignatureInfo.callNode.arguments?.length; + const callHasParameters = !!callSignatureInfo.callNode.arguments?.length; return { signatures, callHasParameters, }; } - private static _makeSignature( - callNode: CallNode, - signature: CallSignature, - sourceMapper: SourceMapper, - evaluator: TypeEvaluator, - format: MarkupKind - ): SignatureInfo { + private _convert(signatureHelpResults: SignatureHelpResults | undefined) { + if (!signatureHelpResults) { + return undefined; + } + + const signatures = signatureHelpResults.signatures.map((sig) => { + let paramInfo: ParameterInformation[] = []; + if (sig.parameters) { + paramInfo = sig.parameters.map((param) => + ParameterInformation.create( + this._hasSignatureLabelOffsetCapability ? [param.startOffset, param.endOffset] : param.text, + param.documentation + ) + ); + } + + const sigInfo = SignatureInformation.create(sig.label, /* documentation */ undefined, ...paramInfo); + if (sig.documentation !== undefined) { + sigInfo.documentation = sig.documentation; + } + + if (sig.activeParameter !== undefined) { + sigInfo.activeParameter = sig.activeParameter; + } + return sigInfo; + }); + + // A signature is active if it contains an active parameter, + // or if both the signature and its invocation have no parameters. + const isActive = (sig: SignatureInformation) => + sig.activeParameter !== undefined || (!signatureHelpResults.callHasParameters && !sig.parameters?.length); + + let activeSignature: number | undefined = signatures.findIndex(isActive); + if (activeSignature === -1) { + activeSignature = undefined; + } + + let activeParameter = activeSignature !== undefined ? signatures[activeSignature].activeParameter! : undefined; + + // Check if we should reuse the user's signature selection. If the retrigger was not "invoked" + // (i.e., the signature help call was automatically generated by the client due to some navigation + // or text change), check to see if the previous signature is still "active". If so, we mark it as + // active in our response. + // + // This isn't a perfect method. For nested calls, we can't tell when we are moving between them. + // Ideally, we would include a token in the signature help responses to compare later, allowing us + // to know when the user's navigated to a nested call (and therefore the old signature's info does + // not apply), but for now manually retriggering the signature help will work around the issue. + if (this._context?.isRetrigger && this._context.triggerKind !== SignatureHelpTriggerKind.Invoked) { + const prevActiveSignature = this._context.activeSignatureHelp?.activeSignature; + if (prevActiveSignature !== undefined && prevActiveSignature < signatures.length) { + const sig = signatures[prevActiveSignature]; + if (isActive(sig)) { + activeSignature = prevActiveSignature; + activeParameter = sig.activeParameter; + } + } + } + + if (this._hasActiveParameterCapability || activeSignature === undefined) { + // If there is no active parameter, then we want the client to not highlight anything. + // Unfortunately, the LSP spec says that "undefined" or "out of bounds" values should be + // treated as 0, which is the first parameter. That's not what we want, but thankfully + // VS Code (and potentially other clients) choose to handle out of bounds values by + // not highlighting them, which is what we want. + // + // The spec defines activeParameter as uinteger, so use the maximum length of any + // signature's parameter list to ensure that the value is always out of range. + // + // We always set this even if some signature has an active parameter, as this + // value is used as the fallback for signatures that don't explicitly specify an + // active parameter (and we use "undefined" to mean "no active parameter"). + // + // We could apply this hack to each individual signature such that they all specify + // activeParameter, but that would make it more difficult to determine which actually + // are active when comparing, and we already have to set this for clients which don't + // support per-signature activeParameter. + // + // See: + // - https://github.com/microsoft/language-server-protocol/issues/1271 + // - https://github.com/microsoft/pyright/pull/1783 + activeParameter = Math.max(...signatures.map((s) => s.parameters?.length ?? 0)); + } + + return { signatures, activeSignature, activeParameter }; + } + + private get _evaluator(): TypeEvaluator { + return this._program.evaluator!; + } + + private _makeSignature(callNode: CallNode, signature: CallSignature): SignatureInfo { const functionType = signature.type; - const stringParts = evaluator.printFunctionParts(functionType, PrintTypeFlags.ExpandTypedDictArgs); + const stringParts = this._evaluator.printFunctionParts(functionType, PrintTypeFlags.ExpandTypedDictArgs); const parameters: ParamInfo[] = []; const functionDocString = - getFunctionDocStringFromType(functionType, sourceMapper, evaluator) ?? - this._getDocStringFromCallNode(callNode, sourceMapper, evaluator); + getFunctionDocStringFromType(functionType, this._sourceMapper, this._evaluator) ?? + this._getDocStringFromCallNode(callNode); let label = '('; let activeParameter: number | undefined; @@ -195,7 +288,7 @@ export class SignatureHelpProvider { }; if (functionDocString) { - if (format === MarkupKind.Markdown) { + if (this._format === MarkupKind.Markdown) { sigInfo.documentation = { kind: MarkupKind.Markdown, value: convertDocStringToMarkdown(functionDocString), @@ -211,11 +304,7 @@ export class SignatureHelpProvider { return sigInfo; } - private static _getDocStringFromCallNode( - callNode: CallNode, - sourceMapper: SourceMapper, - evaluator: TypeEvaluator - ): string | undefined { + private _getDocStringFromCallNode(callNode: CallNode): string | undefined { // This is a heuristic to see whether we can get some docstring // from call node when all other methods failed. // It only works if call is off a name node. @@ -231,18 +320,18 @@ export class SignatureHelpProvider { return undefined; } - for (const decl of evaluator.getDeclarationsForNameNode(name) ?? []) { - const resolveDecl = evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true); + for (const decl of this._evaluator.getDeclarationsForNameNode(name) ?? []) { + const resolveDecl = this._evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true); if (!resolveDecl) { continue; } - const type = evaluator.getType(name); + const type = this._evaluator.getType(name); if (!type) { continue; } - const part = getDocumentationPartsForTypeAndDecl(sourceMapper, type, resolveDecl, evaluator); + const part = getDocumentationPartsForTypeAndDecl(this._sourceMapper, type, resolveDecl, this._evaluator); if (part) { return part; } @@ -251,3 +340,22 @@ export class SignatureHelpProvider { return undefined; } } + +interface ParamInfo { + startOffset: number; + endOffset: number; + text: string; + documentation?: string | undefined; +} + +interface SignatureInfo { + label: string; + documentation?: MarkupContent | undefined; + parameters?: ParamInfo[] | undefined; + activeParameter?: number | undefined; +} + +interface SignatureHelpResults { + signatures: SignatureInfo[]; + callHasParameters: boolean; +} diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 611a40c8c..cda7cafab 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -60,6 +60,7 @@ import { } from '../../../languageService/definitionProvider'; import { DocumentHighlightProvider } from '../../../languageService/documentHighlightProvider'; import { HoverProvider } from '../../../languageService/hoverProvider'; +import { SignatureHelpProvider } from '../../../languageService/signatureHelpProvider'; import { ParseNode } from '../../../parser/parseNodes'; import { ParseResults } from '../../../parser/parser'; import { Tokenizer } from '../../../parser/tokenizer'; @@ -1103,12 +1104,16 @@ export class TestState { const expected = map[name]; const position = this.convertOffsetToPosition(fileName, marker.position); - const actual = this.program.getSignatureHelpForPosition( + const actual = new SignatureHelpProvider( + this.program, fileName, position, docFormat, + /*hasSignatureLabelOffsetCapability*/ true, + /*hasActiveParameterCapability*/ true, + /*context*/ undefined, CancellationToken.None - ); + ).getSignatureHelp(); if (expected.noSig) { assert.equal(actual, undefined); @@ -1128,7 +1133,7 @@ export class TestState { const actualParameters: string[] = []; sig.parameters!.forEach((p) => { - actualParameters.push(sig.label.substring(p.startOffset, p.endOffset)); + actualParameters.push(isString(p.label) ? p.label : sig.label.substring(p.label[0], p.label[1])); }); assert.deepEqual(actualParameters, expectedSig.parameters); @@ -1149,7 +1154,11 @@ export class TestState { ); if (expected.callHasParameters !== undefined) { - assert.equal(actual.callHasParameters, expected.callHasParameters); + const isActive = (sig: { parameters: string[] }) => + !expected.callHasParameters && !sig.parameters?.length; + + const activeSignature = expected.signatures?.findIndex(isActive) ?? undefined; + assert.equal(actual.activeSignature, activeSignature); } } } diff --git a/packages/pyright-internal/src/tests/signatureHelp.test.ts b/packages/pyright-internal/src/tests/signatureHelp.test.ts index ec11c2474..1c7319fd2 100644 --- a/packages/pyright-internal/src/tests/signatureHelp.test.ts +++ b/packages/pyright-internal/src/tests/signatureHelp.test.ts @@ -10,6 +10,7 @@ import assert from 'assert'; import { CancellationToken, MarkupKind } from 'vscode-languageserver'; import { convertOffsetToPosition } from '../common/positionUtils'; +import { SignatureHelpProvider } from '../languageService/signatureHelpProvider'; import { parseAndGetTestState } from './harness/fourslash/testState'; test('invalid position in format string segment', () => { @@ -79,12 +80,16 @@ function checkSignatureHelp(code: string, expects: boolean) { const parseResults = state.workspace.service.getParseResult(marker.fileName)!; const position = convertOffsetToPosition(marker.position, parseResults.tokenizerOutput.lines); - const actual = state.workspace.service.getSignatureHelpForPosition( + const actual = new SignatureHelpProvider( + state.workspace.service.test_program, marker.fileName, position, MarkupKind.Markdown, + /*hasSignatureLabelOffsetCapability*/ true, + /*hasActiveParameterCapability*/ true, + /*context*/ undefined, CancellationToken.None - ); + ).getSignatureHelp(); assert.strictEqual(!!actual, expects); } From 49b6d004a96c5da926615fe3bbbcbb4a095837f1 Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Tue, 25 Apr 2023 10:57:08 -0700 Subject: [PATCH 072/525] Refactored out call hierarchy from program (#5005) --- .../pyright-internal/src/analyzer/program.ts | 208 ++++---------- .../pyright-internal/src/analyzer/service.ts | 21 -- .../src/analyzer/sourceFile.ts | 30 +- .../src/analyzer/sourceFileInfoUtils.ts | 8 +- .../src/common/extensibility.ts | 39 ++- .../pyright-internal/src/common/fileSystem.ts | 28 +- .../pyright-internal/src/common/pathUtils.ts | 4 +- .../src/languageServerBase.ts | 52 +--- .../languageService/callHierarchyProvider.ts | 261 +++++++++++++----- .../src/languageService/navigationUtils.ts | 12 + .../src/tests/harness/fourslash/testState.ts | 29 +- 11 files changed, 345 insertions(+), 347 deletions(-) create mode 100644 packages/pyright-internal/src/languageService/navigationUtils.ts diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 4b5e810e1..a303e19e7 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -10,12 +10,7 @@ import { CancellationToken, CompletionItem, DocumentSymbol } from 'vscode-languageserver'; import { TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; -import { - CallHierarchyIncomingCall, - CallHierarchyItem, - CallHierarchyOutgoingCall, - CompletionList, -} from 'vscode-languageserver-types'; +import { CompletionList } from 'vscode-languageserver-types'; import { Commands } from '../commands/commands'; import { OperationCanceledException, throwIfCancellationRequested } from '../common/cancellationUtils'; @@ -56,7 +51,6 @@ import { ImportFormat, ModuleSymbolMap, } from '../languageService/autoImporter'; -import { CallHierarchyProvider } from '../languageService/callHierarchyProvider'; import { AbbreviationMap, CompletionMap, @@ -68,7 +62,7 @@ import { IndexOptions, IndexResults, WorkspaceSymbolCallback } from '../language import { ImportAdder, ImportData } from '../languageService/importAdder'; import { getModuleStatementIndentation, reindentSpan } from '../languageService/indentationUtils'; import { getInsertionPointForSymbolUnderModule } from '../languageService/insertionPointUtils'; -import { ReferenceCallback, ReferencesResult } from '../languageService/referencesProvider'; +import { ReferenceCallback, ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; import { RenameModuleProvider } from '../languageService/renameModuleProvider'; import { ParseNodeType, StatementNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; @@ -76,7 +70,7 @@ import { AbsoluteModuleDescriptor, ImportLookupResult } from './analyzerFileInfo import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { CacheManager } from './cacheManager'; import { CircularDependency } from './circularDependency'; -import { Declaration, DeclarationType, isVariableDeclaration } from './declaration'; +import { Declaration, isVariableDeclaration } from './declaration'; import { ImportResolver } from './importResolver'; import { ImportResult, ImportType } from './importResult'; import { @@ -243,6 +237,10 @@ export class Program { return this._importResolver; } + get fileSystem() { + return this._importResolver.fileSystem; + } + setConfigOptions(configOptions: ConfigOptions) { this._configOptions = configOptions; this._importResolver.setConfigOptions(configOptions); @@ -266,13 +264,13 @@ export class Program { // We need to determine which files to remove from the existing file list. const newFileMap = new Map(); filePaths.forEach((path) => { - newFileMap.set(normalizePathCase(this._fs, path), path); + newFileMap.set(normalizePathCase(this.fileSystem, path), path); }); // Files that are not in the tracked file list are // marked as no longer tracked. this._sourceFileList.forEach((oldFile) => { - const filePath = normalizePathCase(this._fs, oldFile.sourceFile.getFilePath()); + const filePath = normalizePathCase(this.fileSystem, oldFile.sourceFile.getFilePath()); if (!newFileMap.has(filePath)) { oldFile.isTracked = false; } @@ -329,7 +327,7 @@ export class Program { } const sourceFile = new SourceFile( - this._fs, + this.fileSystem, filePath, importName, isThirdPartyImport, @@ -364,7 +362,7 @@ export class Program { if (!sourceFileInfo) { const importName = this._getImportNameForFile(filePath); const sourceFile = new SourceFile( - this._fs, + this.fileSystem, filePath, importName, /* isThirdPartyImport */ false, @@ -543,7 +541,7 @@ export class Program { } containsSourceFileIn(folder: string): boolean { - const normalized = normalizePathCase(this._fs, folder); + const normalized = normalizePathCase(this.fileSystem, folder); return this._sourceFileList.some((i) => i.sourceFile.getFilePath().startsWith(normalized)); } @@ -571,8 +569,12 @@ export class Program { return this.getBoundSourceFileInfo(filePath)?.sourceFile; } + getSourceFileInfoList(): SourceFileInfo[] { + return this._sourceFileList; + } + getSourceFileInfo(filePath: string): SourceFileInfo | undefined { - return this._sourceFileMap.get(normalizePathCase(this._fs, filePath)); + return this._sourceFileMap.get(normalizePathCase(this.fileSystem, filePath)); } getBoundSourceFileInfo(filePath: string, content?: string, force?: boolean): SourceFileInfo | undefined { @@ -733,6 +735,10 @@ export class Program { return this.getBoundSourceFile(filePath)?.getParseResults(); } + handleMemoryHighUsage() { + this._handleMemoryHighUsage(); + } + // Prints a detailed list of files that have been checked and the times associated // with each of them, sorted greatest to least. printDetailedAnalysisTimes() { @@ -834,7 +840,7 @@ export class Program { const typeStubDir = getDirectoryPath(typeStubPath); try { - makeDirectories(this._fs, typeStubDir, stubPath); + makeDirectories(this.fileSystem, typeStubDir, stubPath); } catch (e: any) { const errMsg = `Could not create directory for '${typeStubDir}'`; throw new Error(errMsg); @@ -894,10 +900,6 @@ export class Program { return flags; } - private get _fs() { - return this._importResolver.fileSystem; - } - private _getImportNameForFile(filePath: string) { // We allow illegal module names (e.g. names that include "-" in them) // because we want a unique name for each module even if it cannot be @@ -938,7 +940,7 @@ export class Program { private _createInterimFileInfo(filePath: string) { const importName = this._getImportNameForFile(filePath); const sourceFile = new SourceFile( - this._fs, + this.fileSystem, filePath, importName, /* isThirdPartyImport */ false, @@ -1165,7 +1167,7 @@ export class Program { sourceFileInfo = this.getSourceFileInfo(resolvedPath); if (!sourceFileInfo) { - resolvedPath = normalizePathCase(this._fs, resolvedPath); + resolvedPath = normalizePathCase(this.fileSystem, resolvedPath); // Start tracking the source file. this.addTrackedFile(resolvedPath); @@ -1376,7 +1378,7 @@ export class Program { ) { // If the file is already in the closure map, we found a cyclical // dependency. Don't recur further. - const filePath = normalizePathCase(this._fs, file.sourceFile.getFilePath()); + const filePath = normalizePathCase(this.fileSystem, file.sourceFile.getFilePath()); if (closureMap.has(filePath)) { return; } @@ -1422,7 +1424,7 @@ export class Program { return false; } - const filePath = normalizePathCase(this._fs, sourceFileInfo.sourceFile.getFilePath()); + const filePath = normalizePathCase(this.fileSystem, sourceFileInfo.sourceFile.getFilePath()); filesVisited.set(filePath, sourceFileInfo); @@ -1485,7 +1487,7 @@ export class Program { } private _markFileDirtyRecursive(sourceFileInfo: SourceFileInfo, markSet: Set, forceRebinding = false) { - const filePath = normalizePathCase(this._fs, sourceFileInfo.sourceFile.getFilePath()); + const filePath = normalizePathCase(this.fileSystem, sourceFileInfo.sourceFile.getFilePath()); // Don't mark it again if it's already been visited. if (markSet.has(filePath)) { @@ -1974,7 +1976,7 @@ export class Program { renameModule(path: string, newPath: string, token: CancellationToken): FileEditActions | undefined { return this._runEvaluatorWithCancellationToken(token, () => { - if (isFile(this._fs, path)) { + if (isFile(this.fileSystem, path)) { const fileInfo = this.getSourceFileInfo(path); if (!fileInfo) { return undefined; @@ -2630,130 +2632,6 @@ export class Program { }); } - getCallForPosition(filePath: string, position: Position, token: CancellationToken): CallHierarchyItem | undefined { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - const referencesResult = sourceFileInfo.sourceFile.getDeclarationForPosition( - this._createSourceMapper(execEnv, token, sourceFileInfo), - position, - this._evaluator!, - undefined, - DocumentSymbolCollectorUseCase.Reference, - token - ); - - if (!referencesResult || referencesResult.declarations.length === 0) { - return undefined; - } - - const { targetDecl, callItemUri, symbolName } = CallHierarchyProvider.getTargetDeclaration( - referencesResult, - filePath - ); - - return CallHierarchyProvider.getCallForDeclaration( - symbolName, - targetDecl, - this._evaluator!, - token, - callItemUri - ); - } - - getIncomingCallsForPosition( - filePath: string, - position: Position, - token: CancellationToken - ): CallHierarchyIncomingCall[] | undefined { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - const referencesResult = sourceFileInfo.sourceFile.getDeclarationForPosition( - this._createSourceMapper(execEnv, token, sourceFileInfo), - position, - this._evaluator!, - undefined, - DocumentSymbolCollectorUseCase.Reference, - token - ); - - if (!referencesResult || referencesResult.declarations.length === 0) { - return undefined; - } - - const { targetDecl, symbolName } = CallHierarchyProvider.getTargetDeclaration(referencesResult, filePath); - let items: CallHierarchyIncomingCall[] = []; - - const sourceFiles = targetDecl.type === DeclarationType.Alias ? [sourceFileInfo] : this._sourceFileList; - for (const curSourceFileInfo of sourceFiles) { - if (isUserCode(curSourceFileInfo) || curSourceFileInfo.isOpenByClient) { - this._bindFile(curSourceFileInfo); - - const itemsToAdd = CallHierarchyProvider.getIncomingCallsForDeclaration( - curSourceFileInfo.sourceFile.getFilePath(), - symbolName, - targetDecl, - curSourceFileInfo.sourceFile.getParseResults()!, - this._evaluator!, - token - ); - - if (itemsToAdd) { - items = items.concat(...itemsToAdd); - } - - // This operation can consume significant memory, so check - // for situations where we need to discard the type cache. - this._handleMemoryHighUsage(); - } - } - - return items; - } - - getOutgoingCallsForPosition( - filePath: string, - position: Position, - token: CancellationToken - ): CallHierarchyOutgoingCall[] | undefined { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - const referencesResult = sourceFileInfo.sourceFile.getDeclarationForPosition( - this._createSourceMapper(execEnv, token, sourceFileInfo), - position, - this._evaluator!, - undefined, - DocumentSymbolCollectorUseCase.Reference, - token - ); - - if (!referencesResult || referencesResult.declarations.length === 0) { - return undefined; - } - const { targetDecl } = CallHierarchyProvider.getTargetDeclaration(referencesResult, filePath); - - return CallHierarchyProvider.getOutgoingCallsForDeclaration( - targetDecl, - sourceFileInfo.sourceFile.getParseResults()!, - this._evaluator!, - token - ); - } - performQuickAction( filePath: string, command: string, @@ -2879,8 +2757,16 @@ export class Program { token: CancellationToken, reporter?: ReferenceCallback ) { - return sourceFileInfo.sourceFile.getDeclarationForPosition( + // If we have no completed analysis job, there's nothing to do. + const parseResults = sourceFileInfo.sourceFile.getParseResults(); + if (!parseResults) { + return undefined; + } + + return ReferencesProvider.getDeclarationForPosition( sourceMapper, + parseResults, + sourceFileInfo.sourceFile.getFilePath(), position, this._evaluator!, reporter, @@ -3081,7 +2967,7 @@ export class Program { return true; } - const filePath = normalizePathCase(this._fs, fileInfo.sourceFile.getFilePath()); + const filePath = normalizePathCase(this.fileSystem, fileInfo.sourceFile.getFilePath()); // Avoid infinite recursion. if (recursionSet.has(filePath)) { @@ -3253,7 +3139,7 @@ export class Program { sourceFileInfo.chainedSourceFile = undefined; } else { const filePath = sourceFileInfo.chainedSourceFile.sourceFile.getFilePath(); - newImportPathMap.set(normalizePathCase(this._fs, filePath), { + newImportPathMap.set(normalizePathCase(this.fileSystem, filePath), { path: filePath, isTypeshedFile: false, isThirdPartyImport: false, @@ -3269,7 +3155,7 @@ export class Program { const filePath = importResult.resolvedPaths[importResult.resolvedPaths.length - 1]; if (filePath) { const thirdPartyTypeInfo = getThirdPartyImportInfo(importResult); - newImportPathMap.set(normalizePathCase(this._fs, filePath), { + newImportPathMap.set(normalizePathCase(this.fileSystem, filePath), { path: filePath, isTypeshedFile: !!importResult.isStdlibTypeshedFile || !!importResult.isThirdPartyTypeshedFile, @@ -3284,7 +3170,7 @@ export class Program { if (this._isImportAllowed(sourceFileInfo, importResult, implicitImport.isStubFile)) { if (!implicitImport.isNativeLib) { const thirdPartyTypeInfo = getThirdPartyImportInfo(importResult); - newImportPathMap.set(normalizePathCase(this._fs, implicitImport.path), { + newImportPathMap.set(normalizePathCase(this.fileSystem, implicitImport.path), { path: implicitImport.path, isTypeshedFile: !!importResult.isStdlibTypeshedFile || !!importResult.isThirdPartyTypeshedFile, @@ -3331,14 +3217,14 @@ export class Program { const updatedImportMap = new Map(); sourceFileInfo.imports.forEach((importInfo) => { - const oldFilePath = normalizePathCase(this._fs, importInfo.sourceFile.getFilePath()); + const oldFilePath = normalizePathCase(this.fileSystem, importInfo.sourceFile.getFilePath()); // A previous import was removed. if (!newImportPathMap.has(oldFilePath)) { importInfo.importedBy = importInfo.importedBy.filter( (fi) => - normalizePathCase(this._fs, fi.sourceFile.getFilePath()) !== - normalizePathCase(this._fs, sourceFileInfo.sourceFile.getFilePath()) + normalizePathCase(this.fileSystem, fi.sourceFile.getFilePath()) !== + normalizePathCase(this.fileSystem, sourceFileInfo.sourceFile.getFilePath()) ); } else { updatedImportMap.set(oldFilePath, importInfo); @@ -3354,7 +3240,7 @@ export class Program { if (!importedFileInfo) { const importName = this._getImportNameForFile(importInfo.path); const sourceFile = new SourceFile( - this._fs, + this.fileSystem, importInfo.path, importName, importInfo.isThirdPartyImport, @@ -3417,12 +3303,12 @@ export class Program { } private _removeSourceFileFromListAndMap(filePath: string, indexToRemove: number) { - this._sourceFileMap.delete(normalizePathCase(this._fs, filePath)); + this._sourceFileMap.delete(normalizePathCase(this.fileSystem, filePath)); this._sourceFileList.splice(indexToRemove, 1); } private _addToSourceFileListAndMap(fileInfo: SourceFileInfo) { - const filePath = normalizePathCase(this._fs, fileInfo.sourceFile.getFilePath()); + const filePath = normalizePathCase(this.fileSystem, fileInfo.sourceFile.getFilePath()); // We should never add a file with the same path twice. assert(!this._sourceFileMap.has(filePath)); diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 12e8e7aa9..d5e5b5632 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -17,7 +17,6 @@ import { DocumentSymbol, } from 'vscode-languageserver'; import { TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; -import { CallHierarchyIncomingCall, CallHierarchyItem, CallHierarchyOutgoingCall } from 'vscode-languageserver-types'; import { BackgroundAnalysisBase, IndexOptions, RefreshOptions } from '../backgroundAnalysisBase'; import { CancellationProvider, DefaultCancellationProvider } from '../common/cancellationUtils'; @@ -489,26 +488,6 @@ export class AnalyzerService { ); } - getCallForPosition(filePath: string, position: Position, token: CancellationToken): CallHierarchyItem | undefined { - return this._program.getCallForPosition(filePath, position, token); - } - - getIncomingCallsForPosition( - filePath: string, - position: Position, - token: CancellationToken - ): CallHierarchyIncomingCall[] | undefined { - return this._program.getIncomingCallsForPosition(filePath, position, token); - } - - getOutgoingCallsForPosition( - filePath: string, - position: Position, - token: CancellationToken - ): CallHierarchyOutgoingCall[] | undefined { - return this._program.getOutgoingCallsForPosition(filePath, position, token); - } - printStats() { this._console.info(''); this._console.info('Analysis stats'); diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index d3e7db5b4..7879f3f5c 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -38,10 +38,9 @@ import { CompletionProvider, CompletionResults, } from '../languageService/completionProvider'; -import { DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; import { DocumentSymbolProvider, IndexOptions, IndexResults } from '../languageService/documentSymbolProvider'; import { performQuickAction } from '../languageService/quickActions'; -import { ReferenceCallback, ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; +import { ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; import { Localizer } from '../localization/localize'; import { ModuleNode } from '../parser/parseNodes'; import { ModuleImport, ParseOptions, ParseResults, Parser } from '../parser/parser'; @@ -1004,33 +1003,6 @@ export class SourceFile { }); } - getDeclarationForPosition( - sourceMapper: SourceMapper, - position: Position, - evaluator: TypeEvaluator, - reporter: ReferenceCallback | undefined, - useCase: DocumentSymbolCollectorUseCase, - token: CancellationToken, - implicitlyImportedBy?: SourceFile[] - ): ReferencesResult | undefined { - // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults) { - return undefined; - } - - return ReferencesProvider.getDeclarationForPosition( - sourceMapper, - this._parseResults, - this._filePath, - position, - evaluator, - reporter, - useCase, - token, - implicitlyImportedBy - ); - } - addReferences( referencesResult: ReferencesResult, includeDeclaration: boolean, diff --git a/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts b/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts index 019ddba70..cb23a6e64 100644 --- a/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts +++ b/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts @@ -8,7 +8,13 @@ import { SourceFileInfo } from './program'; -export function isUserCode(fileInfo: SourceFileInfo | undefined) { +interface FileInfo { + isTypeshedFile: boolean; + isThirdPartyImport: boolean; + isTracked: boolean; +} + +export function isUserCode(fileInfo: FileInfo | undefined) { return !!fileInfo && fileInfo.isTracked && !fileInfo.isThirdPartyImport && !fileInfo.isTypeshedFile; } diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index bd85acffa..feab11668 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -11,7 +11,7 @@ import { CancellationToken, CodeAction, ExecuteCommandParams } from 'vscode-lang import { getFileInfo } from '../analyzer/analyzerNodeInfo'; import { Declaration } from '../analyzer/declaration'; import { ImportResolver } from '../analyzer/importResolver'; -import { SourceFileInfo } from '../analyzer/program'; +import * as prog from '../analyzer/program'; import { SourceMapper } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { Type } from '../analyzer/types'; @@ -21,6 +21,7 @@ import { FunctionNode, ParameterNode, ParseNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { ConfigOptions, SignatureDisplayType } from './configOptions'; import { ConsoleInterface } from './console'; +import { ReadOnlyFileSystem } from './fileSystem'; import { Range } from './textRange'; export interface LanguageServiceExtension { @@ -36,6 +37,33 @@ export interface ProgramExtension { clearCache?: () => void; } +export interface SourceFile { + // See whether we can convert these to regular properties. + getFilePath(): string; + isStubFile(): boolean; +} + +export interface SourceFileInfo { + // We don't want to expose the real SourceFile since + // one can mess up program state by calling some methods on it directly. + // For example, calling sourceFile.parse() directly will mess up + // dependency graph maintained by the program. + readonly sourceFile: SourceFile; + + // Information about the source file + readonly isTypeshedFile: boolean; + readonly isThirdPartyImport: boolean; + readonly isThirdPartyPyTypedPresent: boolean; + + readonly chainedSourceFile?: SourceFileInfo | undefined; + + readonly isTracked: boolean; + readonly isOpenByClient: boolean; + + readonly imports: readonly SourceFileInfo[]; + readonly importedBy: readonly SourceFileInfo[]; +} + // Readonly wrapper around a Program. Makes sure it doesn't mutate the program. export interface ProgramView { readonly id: number; @@ -44,16 +72,22 @@ export interface ProgramView { readonly evaluator: TypeEvaluator | undefined; readonly configOptions: ConfigOptions; readonly importResolver: ImportResolver; + readonly fileSystem: ReadOnlyFileSystem; owns(file: string): boolean; + getSourceFileInfoList(): readonly SourceFileInfo[]; getParseResults(filePath: string): ParseResults | undefined; - getBoundSourceFileInfo(file: string, content?: string, force?: boolean): SourceFileInfo | undefined; + getSourceFileInfo(filePath: string): SourceFileInfo | undefined; getSourceMapper( filePath: string, token: CancellationToken, mapCompiled?: boolean, preferStubs?: boolean ): SourceMapper; + + // See whether we can get rid of these 2 methods + getBoundSourceFileInfo(file: string, content?: string, force?: boolean): prog.SourceFileInfo | undefined; + handleMemoryHighUsage(): void; } // Mutable wrapper around a program. Allows the FG thread to forward this request to the BG thread @@ -75,6 +109,7 @@ export interface CommandExtension { // Extension executes command executeCommand(params: ExecuteCommandParams, token: CancellationToken): Promise; } + export interface CompletionListExtension { // Extension updates completion list provided by the application. updateCompletionResults( diff --git a/packages/pyright-internal/src/common/fileSystem.ts b/packages/pyright-internal/src/common/fileSystem.ts index 07fe222f8..64e6acb17 100644 --- a/packages/pyright-internal/src/common/fileSystem.ts +++ b/packages/pyright-internal/src/common/fileSystem.ts @@ -51,31 +51,21 @@ export interface TmpfileOptions { prefix?: string; } -export interface FileSystem { +export interface ReadOnlyFileSystem { existsSync(path: string): boolean; - mkdirSync(path: string, options?: MkDirOptions): void; chdir(path: string): void; readdirEntriesSync(path: string): fs.Dirent[]; readdirSync(path: string): string[]; readFileSync(path: string, encoding?: null): Buffer; readFileSync(path: string, encoding: BufferEncoding): string; readFileSync(path: string, encoding?: BufferEncoding | null): string | Buffer; - writeFileSync(path: string, data: string | Buffer, encoding: BufferEncoding | null): void; + statSync(path: string): Stats; - unlinkSync(path: string): void; realpathSync(path: string): string; getModulePath(): string; - createFileSystemWatcher(paths: string[], listener: FileWatcherEventHandler): FileWatcher; - createReadStream(path: string): fs.ReadStream; - createWriteStream(path: string): fs.WriteStream; - copyFileSync(src: string, dst: string): void; // Async I/O readFile(path: string): Promise; readFileText(path: string, encoding?: BufferEncoding): Promise; - // The directory returned by tmpdir must exist and be the same each time tmpdir is called. - tmpdir(): string; - tmpfile(options?: TmpfileOptions): string; - // Return path in casing on OS. realCasePath(path: string): string; @@ -91,6 +81,20 @@ export interface FileSystem { getUri(path: string): string; isInZipOrEgg(path: string): boolean; +} + +export interface FileSystem extends ReadOnlyFileSystem { + mkdirSync(path: string, options?: MkDirOptions): void; + writeFileSync(path: string, data: string | Buffer, encoding: BufferEncoding | null): void; + unlinkSync(path: string): void; + createFileSystemWatcher(paths: string[], listener: FileWatcherEventHandler): FileWatcher; + createReadStream(path: string): fs.ReadStream; + createWriteStream(path: string): fs.WriteStream; + copyFileSync(src: string, dst: string): void; + + // The directory returned by tmpdir must exist and be the same each time tmpdir is called. + tmpdir(): string; + tmpfile(options?: TmpfileOptions): string; dispose(): void; } diff --git a/packages/pyright-internal/src/common/pathUtils.ts b/packages/pyright-internal/src/common/pathUtils.ts index e5b16e56d..81f54c6e6 100644 --- a/packages/pyright-internal/src/common/pathUtils.ts +++ b/packages/pyright-internal/src/common/pathUtils.ts @@ -16,7 +16,7 @@ import { some } from './collectionUtils'; import { compareValues, Comparison, GetCanonicalFileName, identity } from './core'; import { randomBytesHex } from './crypto'; import * as debug from './debug'; -import { FileSystem, Stats } from './fileSystem'; +import { FileSystem, ReadOnlyFileSystem, Stats } from './fileSystem'; import { compareStringsCaseInsensitive, compareStringsCaseSensitive, @@ -960,7 +960,7 @@ export function extractPathFromUri(uriString: string) { return convertedPath; } -export function convertPathToUri(fs: FileSystem, path: string): string { +export function convertPathToUri(fs: ReadOnlyFileSystem, path: string): string { return fs.getUri(fs.getOriginalFilePath(path)); } diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 440f63d8b..f1bc5661e 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -110,11 +110,13 @@ import { UriParser } from './common/uriParser'; import { convertToWorkspaceEdit } from './common/workspaceEditUtils'; import { AnalyzerServiceExecutor } from './languageService/analyzerServiceExecutor'; import { ImportFormat } from './languageService/autoImporter'; +import { CallHierarchyProvider } from './languageService/callHierarchyProvider'; import { CompletionItemData, CompletionOptions, CompletionResultsList } from './languageService/completionProvider'; import { DefinitionFilter, DefinitionProvider, TypeDefinitionProvider } from './languageService/definitionProvider'; import { DocumentHighlightProvider } from './languageService/documentHighlightProvider'; import { WorkspaceSymbolCallback, convertToFlatSymbols } from './languageService/documentSymbolProvider'; import { HoverProvider } from './languageService/hoverProvider'; +import { canNavigateToFile } from './languageService/navigationUtils'; import { ReferenceCallback } from './languageService/referencesProvider'; import { SignatureHelpProvider } from './languageService/signatureHelpProvider'; import { Localizer, setLocaleOverride } from './localization/localize'; @@ -1137,19 +1139,9 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return null; } - const callItem = workspace.service.getCallForPosition(filePath, position, token) || null; - if (!callItem) { - return null; - } - - if (!this.canNavigateToFile(callItem.uri, workspace.service.fs)) { - return null; - } - - // Convert the file path in the item to proper URI. - callItem.uri = convertPathToUri(workspace.service.fs, callItem.uri); - - return [callItem]; + return workspace.service.run((program) => { + return new CallHierarchyProvider(program, filePath, position, token).onPrepare(); + }, token); } protected async onIncomingCalls(params: CallHierarchyIncomingCallsParams, token: CancellationToken) { @@ -1160,19 +1152,9 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return null; } - let callItems = workspace.service.getIncomingCallsForPosition(filePath, position, token) || null; - if (!callItems || callItems.length === 0) { - return null; - } - - callItems = callItems.filter((item) => this.canNavigateToFile(item.from.uri, workspace.service.fs)); - - // Convert the file paths in the items to proper URIs. - callItems.forEach((item) => { - item.from.uri = convertPathToUri(workspace.service.fs, item.from.uri); - }); - - return callItems; + return workspace.service.run((program) => { + return new CallHierarchyProvider(program, filePath, position, token).getIncomingCalls(); + }, token); } protected async onOutgoingCalls( @@ -1186,19 +1168,9 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return null; } - let callItems = workspace.service.getOutgoingCallsForPosition(filePath, position, token) || null; - if (!callItems || callItems.length === 0) { - return null; - } - - callItems = callItems.filter((item) => this.canNavigateToFile(item.to.uri, workspace.service.fs)); - - // Convert the file paths in the items to proper URIs. - callItems.forEach((item) => { - item.to.uri = convertPathToUri(workspace.service.fs, item.to.uri); - }); - - return callItems; + return workspace.service.run((program) => { + return new CallHierarchyProvider(program, filePath, position, token).getOutgoingCalls(); + }, token); } protected async onDidOpenTextDocument(params: DidOpenTextDocumentParams, ipythonMode = IPythonMode.None) { @@ -1642,6 +1614,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected abstract createProgressReporter(): ProgressReporter; protected canNavigateToFile(path: string, fs: FileSystem): boolean { - return !fs.isInZipOrEgg(path); + return canNavigateToFile(fs, path); } } diff --git a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts index d622abb5b..dec3f33dc 100644 --- a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts +++ b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts @@ -20,8 +20,9 @@ import { Declaration, DeclarationType } from '../analyzer/declaration'; import * as DeclarationUtils from '../analyzer/declarationUtils'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; +import { isUserCode } from '../analyzer/sourceFileInfoUtils'; +import { SourceMapper } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { ClassType, isClassInstance, isFunction, isInstantiableClass } from '../analyzer/types'; import { ClassMemberLookupFlags, doForEachSubtype, @@ -29,95 +30,159 @@ import { lookUpClassMember, lookUpObjectMember, } from '../analyzer/typeUtils'; +import { ClassType, isClassInstance, isFunction, isInstantiableClass } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; -import { getFileName } from '../common/pathUtils'; +import { ProgramView } from '../common/extensibility'; +import { convertPathToUri, getFileName } from '../common/pathUtils'; import { convertOffsetsToRange } from '../common/positionUtils'; -import { rangesAreEqual } from '../common/textRange'; -import { ReferencesResult } from '../languageService/referencesProvider'; +import { Position, rangesAreEqual } from '../common/textRange'; +import { ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; import { CallNode, MemberAccessNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; +import { DocumentSymbolCollectorUseCase } from './documentSymbolCollector'; +import { canNavigateToFile } from './navigationUtils'; export class CallHierarchyProvider { - static getCallForDeclaration( - symbolName: string, - declaration: Declaration, - evaluator: TypeEvaluator, - token: CancellationToken, - callItemUri: string - ): CallHierarchyItem | undefined { - throwIfCancellationRequested(token); + private readonly _parseResults: ParseResults | undefined; + private readonly _sourceMapper: SourceMapper; + constructor( + private _program: ProgramView, + private _filePath: string, + private _position: Position, + private _token: CancellationToken + ) { + this._parseResults = this._program.getParseResults(this._filePath); + this._sourceMapper = this._program.getSourceMapper(this._filePath, this._token); + } + + onPrepare(): CallHierarchyItem[] | null { + throwIfCancellationRequested(this._token); + if (!this._parseResults) { + return null; + } + + const referencesResult = this._getDeclarationForPosition(); + if (!referencesResult || referencesResult.declarations.length === 0) { + return null; + } + + const { targetDecl, callItemUri, symbolName } = this._getTargetDeclaration(referencesResult); if ( - declaration.type === DeclarationType.Function || - declaration.type === DeclarationType.Class || - declaration.type === DeclarationType.Alias + targetDecl.type !== DeclarationType.Function && + targetDecl.type !== DeclarationType.Class && + targetDecl.type !== DeclarationType.Alias ) { - // make sure the alias is resolved to class or function - if (declaration.type === DeclarationType.Alias) { - const resolvedDecl = evaluator.resolveAliasDeclaration(declaration, true); - if (!resolvedDecl) { - return undefined; - } - if (resolvedDecl.type !== DeclarationType.Function && resolvedDecl.type !== DeclarationType.Class) { - return undefined; - } + return null; + } + + // make sure the alias is resolved to class or function + if (targetDecl.type === DeclarationType.Alias) { + const resolvedDecl = this._evaluator.resolveAliasDeclaration(targetDecl, true); + if (!resolvedDecl) { + return null; + } + + if (resolvedDecl.type !== DeclarationType.Function && resolvedDecl.type !== DeclarationType.Class) { + return null; } - const callItem: CallHierarchyItem = { - name: symbolName, - kind: getSymbolKind(declaration, evaluator), - uri: callItemUri, - range: declaration.range, - selectionRange: declaration.range, - }; - return callItem; } - return undefined; + const callItem: CallHierarchyItem = { + name: symbolName, + kind: getSymbolKind(targetDecl, this._evaluator), + uri: callItemUri, + range: targetDecl.range, + selectionRange: targetDecl.range, + }; + + if (!canNavigateToFile(this._program.fileSystem, callItem.uri)) { + return null; + } + + // Convert the file path in the item to proper URI. + callItem.uri = convertPathToUri(this._program.fileSystem, callItem.uri); + + return [callItem]; } - static getIncomingCallsForDeclaration( - filePath: string, - symbolName: string, - declaration: Declaration, - parseResults: ParseResults, - evaluator: TypeEvaluator, - token: CancellationToken - ): CallHierarchyIncomingCall[] | undefined { - throwIfCancellationRequested(token); + getIncomingCalls(): CallHierarchyIncomingCall[] | null { + throwIfCancellationRequested(this._token); + if (!this._parseResults) { + return null; + } - const callFinder = new FindIncomingCallTreeWalker( - filePath, - symbolName, - declaration, - parseResults, - evaluator, - token - ); + const referencesResult = this._getDeclarationForPosition(); + if (!referencesResult || referencesResult.declarations.length === 0) { + return null; + } - const incomingCalls = callFinder.findCalls(); + const { targetDecl, symbolName } = this._getTargetDeclaration(referencesResult); + + const items: CallHierarchyIncomingCall[] = []; + const sourceFiles = + targetDecl.type === DeclarationType.Alias + ? [this._program.getSourceFileInfo(this._filePath)!] + : this._program.getSourceFileInfoList(); + for (const curSourceFileInfo of sourceFiles) { + if (isUserCode(curSourceFileInfo) || curSourceFileInfo.isOpenByClient) { + const filePath = curSourceFileInfo.sourceFile.getFilePath(); + const itemsToAdd = this._getIncomingCallsForDeclaration( + this._program.getParseResults(filePath)!, + filePath, + symbolName, + targetDecl + ); - return incomingCalls.length > 0 ? incomingCalls : undefined; + if (itemsToAdd) { + items.push(...itemsToAdd); + } + + // This operation can consume significant memory, so check + // for situations where we need to discard the type cache. + this._program.handleMemoryHighUsage(); + } + } + + if (items.length === 0) { + return null; + } + + const callItems = items.filter((item) => canNavigateToFile(this._program.fileSystem, item.from.uri)); + + // Convert the file paths in the items to proper URIs. + callItems.forEach((item) => { + item.from.uri = convertPathToUri(this._program.fileSystem, item.from.uri); + }); + + return callItems; } - static getOutgoingCallsForDeclaration( - declaration: Declaration, - parseResults: ParseResults, - evaluator: TypeEvaluator, - token: CancellationToken - ): CallHierarchyOutgoingCall[] | undefined { - throwIfCancellationRequested(token); + getOutgoingCalls(): CallHierarchyOutgoingCall[] | null { + throwIfCancellationRequested(this._token); + if (!this._parseResults) { + return null; + } + + const referencesResult = this._getDeclarationForPosition(); + if (!referencesResult || referencesResult.declarations.length === 0) { + return null; + } + + const { targetDecl } = this._getTargetDeclaration(referencesResult); // Find the parse node root corresponding to the function or class. let parseRoot: ParseNode | undefined; - const resolvedDecl = evaluator.resolveAliasDeclaration(declaration, /* resolveLocalNames */ true); + const resolvedDecl = this._evaluator.resolveAliasDeclaration(targetDecl, /* resolveLocalNames */ true); if (!resolvedDecl) { - return undefined; + return null; } + if (resolvedDecl.type === DeclarationType.Function) { parseRoot = resolvedDecl.node; } else if (resolvedDecl.type === DeclarationType.Class) { // Look up the __init__ method for this class. - const classType = evaluator.getTypeForDeclaration(resolvedDecl)?.type; + const classType = this._evaluator.getTypeForDeclaration(resolvedDecl)?.type; if (classType && isInstantiableClass(classType)) { // Don't perform a recursive search of parent classes in this // case because we don't want to find an inherited __init__ @@ -130,7 +195,7 @@ export class CallHierarchyProvider { ClassMemberLookupFlags.SkipBaseClasses ); if (initMethodMember) { - const initMethodType = evaluator.getTypeOfMember(initMethodMember); + const initMethodType = this._evaluator.getTypeOfMember(initMethodMember); if (initMethodType && isFunction(initMethodType)) { const initDecls = initMethodMember.symbol.getDeclarations(); if (initDecls && initDecls.length > 0) { @@ -145,20 +210,30 @@ export class CallHierarchyProvider { } if (!parseRoot) { - return undefined; + return null; } - const callFinder = new FindOutgoingCallTreeWalker(parseRoot, parseResults, evaluator, token); - + const callFinder = new FindOutgoingCallTreeWalker(parseRoot, this._parseResults, this._evaluator, this._token); const outgoingCalls = callFinder.findCalls(); + if (outgoingCalls.length === 0) { + return null; + } - return outgoingCalls.length > 0 ? outgoingCalls : undefined; + const callItems = outgoingCalls.filter((item) => canNavigateToFile(this._program.fileSystem, item.to.uri)); + + // Convert the file paths in the items to proper URIs. + callItems.forEach((item) => { + item.to.uri = convertPathToUri(this._program.fileSystem, item.to.uri); + }); + + return callItems; } - static getTargetDeclaration( - referencesResult: ReferencesResult, - filePath: string - ): { targetDecl: Declaration; callItemUri: string; symbolName: string } { + private _getTargetDeclaration(referencesResult: ReferencesResult): { + targetDecl: Declaration; + callItemUri: string; + symbolName: string; + } { // If there's more than one declaration, pick the target one. // We'll always prefer one with a declared type, and we'll always // prefer later declarations. @@ -178,21 +253,61 @@ export class CallHierarchyProvider { } } } + let symbolName; // Although the LSP specification requires a URI, we are using a file path - // here because it is converted to the proper URI in LanguageServerBase. + // here because it is converted to the proper URI by the caller. // This simplifies our code and ensures compatibility with the LSP specification. let callItemUri; if (targetDecl.type === DeclarationType.Alias) { symbolName = (referencesResult.nodeAtOffset as NameNode).value; - callItemUri = filePath; + callItemUri = this._filePath; } else { symbolName = DeclarationUtils.getNameFromDeclaration(targetDecl) || referencesResult.symbolNames[0]; callItemUri = targetDecl.path; } + return { targetDecl, callItemUri, symbolName }; } + + private get _evaluator(): TypeEvaluator { + return this._program.evaluator!; + } + + private _getIncomingCallsForDeclaration( + parseResults: ParseResults, + filePath: string, + symbolName: string, + declaration: Declaration + ): CallHierarchyIncomingCall[] | undefined { + throwIfCancellationRequested(this._token); + + const callFinder = new FindIncomingCallTreeWalker( + filePath, + symbolName, + declaration, + parseResults, + this._evaluator, + this._token + ); + + const incomingCalls = callFinder.findCalls(); + return incomingCalls.length > 0 ? incomingCalls : undefined; + } + + private _getDeclarationForPosition(): ReferencesResult | undefined { + return ReferencesProvider.getDeclarationForPosition( + this._sourceMapper, + this._parseResults!, + this._filePath, + this._position, + this._evaluator, + /* reporter */ undefined, + DocumentSymbolCollectorUseCase.Reference, + this._token + ); + } } class FindOutgoingCallTreeWalker extends ParseTreeWalker { diff --git a/packages/pyright-internal/src/languageService/navigationUtils.ts b/packages/pyright-internal/src/languageService/navigationUtils.ts new file mode 100644 index 000000000..dae8e8fde --- /dev/null +++ b/packages/pyright-internal/src/languageService/navigationUtils.ts @@ -0,0 +1,12 @@ +/* + * navigationUtils.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Helper functions for navigating files. + */ +import { ReadOnlyFileSystem } from '../common/fileSystem'; + +export function canNavigateToFile(fs: ReadOnlyFileSystem, path: string): boolean { + return !fs.isInZipOrEgg(path); +} diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index cda7cafab..1cec9c25d 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -52,6 +52,7 @@ import { DocumentRange, Position, Range as PositionRange, TextRange, rangesAreEq import { TextRangeCollection } from '../../../common/textRangeCollection'; import { LanguageServerInterface } from '../../../languageServerBase'; import { AbbreviationInfo, ImportFormat } from '../../../languageService/autoImporter'; +import { CallHierarchyProvider } from '../../../languageService/callHierarchyProvider'; import { CompletionOptions } from '../../../languageService/completionProvider'; import { DefinitionFilter, @@ -1219,8 +1220,12 @@ export class TestState { const expectedName = map[name].items.map((x) => x.name); const position = this.convertOffsetToPosition(fileName, marker.position); - - const actual = this.program.getIncomingCallsForPosition(fileName, position, CancellationToken.None); + const actual = new CallHierarchyProvider( + this.program, + fileName, + position, + CancellationToken.None + ).getIncomingCalls(); assert.strictEqual(actual?.length ?? 0, expectedFilePath.length, `${name} has failed`); assert.strictEqual(actual?.length ?? 0, expectedRange.length, `${name} has failed`); @@ -1230,7 +1235,11 @@ export class TestState { for (const a of actual) { assert.strictEqual(expectedRange?.filter((e) => this._deepEqual(a.from.range, e)).length, 1); assert.strictEqual(expectedName?.filter((e) => this._deepEqual(a.from.name, e)).length, 1); - assert.ok(expectedFilePath?.filter((e) => this._deepEqual(a.from.uri, e)).length >= 1); + assert.ok( + expectedFilePath?.filter((e) => + this._deepEqual(a.from.uri, convertPathToUri(this.program.fileSystem, e)) + ).length >= 1 + ); } } } @@ -1256,8 +1265,12 @@ export class TestState { const expectedName = map[name].items.map((x) => x.name); const position = this.convertOffsetToPosition(fileName, marker.position); - - const actual = this.program.getOutgoingCallsForPosition(fileName, position, CancellationToken.None); + const actual = new CallHierarchyProvider( + this.program, + fileName, + position, + CancellationToken.None + ).getOutgoingCalls(); assert.strictEqual(actual?.length ?? 0, expectedFilePath.length, `${name} has failed`); assert.strictEqual(actual?.length ?? 0, expectedRange.length, `${name} has failed`); @@ -1266,7 +1279,11 @@ export class TestState { for (const a of actual) { assert.strictEqual(expectedRange?.filter((e) => this._deepEqual(a.to.range, e)).length, 1); assert.strictEqual(expectedName?.filter((e) => this._deepEqual(a.to.name, e)).length, 1); - assert.ok(expectedFilePath?.filter((e) => this._deepEqual(a.to.uri, e)).length >= 1); + assert.ok( + expectedFilePath?.filter((e) => + this._deepEqual(a.to.uri, convertPathToUri(this.program.fileSystem, e)) + ).length >= 1 + ); } } } From aa98a535d2c1ce57c456e786c616d80c7d193998 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Apr 2023 11:54:18 -0700 Subject: [PATCH 073/525] Fixed a bug that resulted in a false positive "is partially unknown" error when using an overloaded function whose implementation was partially unknown. Only the overloads should be considered in this case. This addresses https://github.com/microsoft/pyright/issues/5007. --- packages/pyright-internal/src/analyzer/typeUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 15c37a844..9a80995d5 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2103,8 +2103,8 @@ export function isPartlyUnknown(type: Type, allowUnknownTypeArgsForClasses = fal // See if a function has an unknown type. if (isOverloadedFunction(type)) { - return type.overloads.some((overload) => { - return isPartlyUnknown(overload, false, recursionCount); + return OverloadedFunctionType.getOverloads(type).some((overload) => { + return isPartlyUnknown(overload, /* allowUnknownTypeArgsForClasses */ false, recursionCount); }); } From cf0d89f29b7d3d7682c8823c18883b59e6d066c6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Apr 2023 12:09:23 -0700 Subject: [PATCH 074/525] Changed `reportUninitializedInstanceVariable` check to exempt subclasses of `ABC`. It already exempted Protocol classes. This addresses https://github.com/microsoft/pyright/issues/5009. --- packages/pyright-internal/src/analyzer/checker.ts | 4 ++-- .../src/tests/samples/uninitializedVariable1.py | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 78bda5d0f..07ad6bfa2 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -4627,8 +4627,8 @@ export class Checker extends ParseTreeWalker { return; } - // Protocol classes are exempted from this check. - if (ClassType.isProtocolClass(classType)) { + // Protocol classes and ABCs are exempted from this check. + if (ClassType.isProtocolClass(classType) || ClassType.supportsAbstractMethods(classType)) { return; } diff --git a/packages/pyright-internal/src/tests/samples/uninitializedVariable1.py b/packages/pyright-internal/src/tests/samples/uninitializedVariable1.py index 1382a3640..8198c2d4e 100644 --- a/packages/pyright-internal/src/tests/samples/uninitializedVariable1.py +++ b/packages/pyright-internal/src/tests/samples/uninitializedVariable1.py @@ -1,5 +1,6 @@ # This sample tests the reportUninitializedInstanceVariable functionality. +from abc import ABC from dataclasses import dataclass from typing import Protocol, TypedDict @@ -27,7 +28,13 @@ class C(TypedDict): member2: str -# Protocol classes are exempt +# Protocol classes are exempt. class D(Protocol): x: str y: str + + +# ABCs are exempt. +class E(ABC): + x: str + y: str From 006a22467de5fe95f85fe815a5746d8b0a37aa16 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Apr 2023 14:13:32 -0700 Subject: [PATCH 075/525] Further changed the `reportUninitializedInstanceVariable` check to _not_ exempt a subclass of `ABC` if it is marked `@final`. --- packages/pyright-internal/src/analyzer/checker.ts | 8 ++++++-- packages/pyright-internal/src/tests/checker.test.ts | 2 +- .../src/tests/samples/uninitializedVariable1.py | 8 +++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 07ad6bfa2..176e2af26 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -4627,8 +4627,12 @@ export class Checker extends ParseTreeWalker { return; } - // Protocol classes and ABCs are exempted from this check. - if (ClassType.isProtocolClass(classType) || ClassType.supportsAbstractMethods(classType)) { + // Protocol classes and ABCs are exempted from this check unless they are + // marked @final. + if ( + ClassType.isProtocolClass(classType) || + (ClassType.supportsAbstractMethods(classType) && !ClassType.isFinal(classType)) + ) { return; } diff --git a/packages/pyright-internal/src/tests/checker.test.ts b/packages/pyright-internal/src/tests/checker.test.ts index 3dda23c1f..ec6b7fc09 100644 --- a/packages/pyright-internal/src/tests/checker.test.ts +++ b/packages/pyright-internal/src/tests/checker.test.ts @@ -473,7 +473,7 @@ test('UninitializedVariable1', () => { // Enable it as an error. configOptions.diagnosticRuleSet.reportUninitializedInstanceVariable = 'error'; analysisResults = TestUtils.typeAnalyzeSampleFiles(['uninitializedVariable1.py'], configOptions); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 2); }); test('RegionComments1', () => { diff --git a/packages/pyright-internal/src/tests/samples/uninitializedVariable1.py b/packages/pyright-internal/src/tests/samples/uninitializedVariable1.py index 8198c2d4e..c17db89b9 100644 --- a/packages/pyright-internal/src/tests/samples/uninitializedVariable1.py +++ b/packages/pyright-internal/src/tests/samples/uninitializedVariable1.py @@ -2,7 +2,7 @@ from abc import ABC from dataclasses import dataclass -from typing import Protocol, TypedDict +from typing import Protocol, TypedDict, final class A: @@ -38,3 +38,9 @@ class D(Protocol): class E(ABC): x: str y: str + + +# Unless they are final. +@final +class ESub(E): + z: str From 280d088afdc0afee53ded7d45c8559cd19d3cbba Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Apr 2023 17:24:33 -0700 Subject: [PATCH 076/525] Added new eslint rule to enforce ordering of class methods by accessibility (public, protected, private). --- .eslintrc.json | 7 + .../src/analyzer/backgroundAnalysisProgram.ts | 8 +- .../src/analyzer/importResolver.ts | 1430 +++--- .../pyright-internal/src/analyzer/program.ts | 4032 ++++++++--------- .../pyright-internal/src/analyzer/service.ts | 213 +- .../src/analyzer/sourceFile.ts | 116 +- .../src/analyzer/typeStubWriter.ts | 4 +- .../src/analyzer/typeUtils.ts | 8 +- .../src/backgroundAnalysisBase.ts | 214 +- .../src/commands/dumpFileDebugInfoCommand.ts | 30 +- .../src/common/cancellationUtils.ts | 20 +- .../src/common/commandLineOptions.ts | 10 +- .../src/common/configOptions.ts | 40 +- .../pyright-internal/src/common/deferred.ts | 24 +- .../src/common/fileBasedCancellationUtils.ts | 12 +- .../src/common/fullAccessHost.ts | 16 +- .../src/common/realFileSystem.ts | 14 +- .../src/languageServerBase.ts | 382 +- .../languageService/callHierarchyProvider.ts | 8 +- .../documentSymbolCollector.ts | 83 +- .../languageService/renameModuleProvider.ts | 198 +- .../languageService/signatureHelpProvider.ts | 8 +- .../src/parser/characterStream.ts | 32 +- .../pyright-internal/src/parser/parser.ts | 24 +- .../pyright-internal/src/pyrightFileSystem.ts | 8 +- .../harness/fourslash/testLanguageService.ts | 10 +- .../src/tests/harness/fourslash/testState.ts | 196 +- .../src/tests/harness/vfs/filesystem.ts | 164 +- 28 files changed, 3659 insertions(+), 3652 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index d9295198b..54154ca38 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -28,6 +28,13 @@ "@typescript-eslint/explicit-module-boundary-types": 0, "@typescript-eslint/ban-types": 0, "@typescript-eslint/camelcase": 0, + "@typescript-eslint/member-ordering": [ + "error", + { + "classes": ["field", "constructor", ["public-get", "public-set"], "public-method", ["protected-get", "protected-set"], "protected-method", ["private-get", "private-set"], "private-method"], + "interfaces": [] + } + ], "@typescript-eslint/no-empty-interface": 0, "@typescript-eslint/no-explicit-any": 0, "@typescript-eslint/no-namespace": 0, diff --git a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts index 10d2675b6..c669895f1 100644 --- a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts +++ b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts @@ -244,6 +244,10 @@ export class BackgroundAnalysisProgram { this._backgroundAnalysis?.shutdown(); } + protected _getIndices(): Indices | undefined { + return undefined; + } + private _ensurePartialStubPackages(execEnv: ExecutionEnvironment) { this._backgroundAnalysis?.ensurePartialStubPackages(execEnv.root); return this._importResolver.ensurePartialStubPackages(execEnv); @@ -267,10 +271,6 @@ export class BackgroundAnalysisProgram { } } } - - protected _getIndices(): Indices | undefined { - return undefined; - } } export type BackgroundAnalysisProgramFactory = ( diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 269407dd5..554c3c3fd 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -39,8 +39,8 @@ import { tryStat, } from '../common/pathUtils'; import { PythonVersion, versionFromString } from '../common/pythonVersion'; -import { equateStringsCaseInsensitive } from '../common/stringUtils'; import * as StringUtils from '../common/stringUtils'; +import { equateStringsCaseInsensitive } from '../common/stringUtils'; import { isIdentifierChar, isIdentifierStartChar } from '../parser/characters'; import { SupportPartialStubs } from '../pyrightFileSystem'; import { ImplicitImport, ImportResult, ImportType } from './importResult'; @@ -154,193 +154,6 @@ export class ImportResolver { return this._resolveImport(sourceFilePath, execEnv, moduleDescriptor); } - // Resolves the import and returns the path if it exists, otherwise - // returns undefined. - protected _resolveImport( - sourceFilePath: string, - execEnv: ExecutionEnvironment, - moduleDescriptor: ImportedModuleDescriptor - ): ImportResult { - const importName = this.formatImportName(moduleDescriptor); - const importFailureInfo: string[] = []; - const importResult = this._resolveImportStrict( - importName, - sourceFilePath, - execEnv, - moduleDescriptor, - importFailureInfo - ); - - if (importResult.isImportFound || moduleDescriptor.leadingDots > 0) { - return importResult; - } - - // If the import is absolute and no other method works, try resolving the - // absolute in the importing file's directory, then the parent directory, - // and so on, until the import root is reached. - sourceFilePath = normalizePathCase(this.fileSystem, normalizePath(sourceFilePath)); - const origin = ensureTrailingDirectorySeparator(getDirectoryPath(sourceFilePath)); - - const result = this.cachedParentImportResults.getImportResult(origin, importName, importResult); - if (result) { - // Already ran the parent directory resolution for this import name on this location. - return this.filterImplicitImports(result, moduleDescriptor.importedSymbols); - } - - // Check whether the given file is in the parent directory import resolution cache. - const root = this.getParentImportResolutionRoot(sourceFilePath, execEnv.root); - if (!this.cachedParentImportResults.checkValidPath(this.fileSystem, sourceFilePath, root)) { - return importResult; - } - - const importPath: ImportPath = { importPath: undefined }; - - // Going up the given folder one by one until we can resolve the import. - let current = origin; - while (this._shouldWalkUp(current, root, execEnv)) { - const result = this.resolveAbsoluteImport( - sourceFilePath, - current, - execEnv, - moduleDescriptor, - importName, - [], - /* allowPartial */ undefined, - /* allowNativeLib */ undefined, - /* useStubPackage */ false, - /* allowPyi */ true - ); - - this.cachedParentImportResults.checked(current, importName, importPath); - - if (result.isImportFound) { - // This will make cache to point to actual path that contains the module we found - importPath.importPath = current; - - this.cachedParentImportResults.add({ - importResult: result, - path: current, - importName, - }); - - return this.filterImplicitImports(result, moduleDescriptor.importedSymbols); - } - - let success; - [success, current] = this._tryWalkUp(current); - if (!success) { - break; - } - } - - this.cachedParentImportResults.checked(current, importName, importPath); - return importResult; - } - - private _resolveImportStrict( - importName: string, - sourceFilePath: string, - execEnv: ExecutionEnvironment, - moduleDescriptor: ImportedModuleDescriptor, - importFailureInfo: string[] - ) { - const fromUserFile = matchFileSpecs(this._configOptions, sourceFilePath); - const notFoundResult: ImportResult = { - importName, - isRelative: false, - isImportFound: false, - isPartlyResolved: false, - isNamespacePackage: false, - isInitFilePresent: false, - isStubPackage: false, - importFailureInfo, - resolvedPaths: [], - importType: ImportType.Local, - isStubFile: false, - isNativeLib: false, - implicitImports: [], - filteredImplicitImports: [], - nonStubImportResult: undefined, - }; - - this.ensurePartialStubPackages(execEnv); - - // Is it a relative import? - if (moduleDescriptor.leadingDots > 0) { - const relativeImport = this._resolveRelativeImport( - sourceFilePath, - execEnv, - moduleDescriptor, - importName, - importFailureInfo - ); - - if (relativeImport) { - relativeImport.isRelative = true; - return relativeImport; - } - } else { - // Is it already cached? - const cachedResults = this._lookUpResultsInCache( - execEnv, - importName, - moduleDescriptor.importedSymbols, - fromUserFile - ); - - if (cachedResults) { - // In most cases, we can simply return a cached entry. However, there are cases - // where the cached entry refers to a previously-resolved namespace package - // that does not resolve the symbols specified in the module descriptor. - // In this case, we will ignore the cached value and run the full import - // resolution again to try to find a package that resolves the import. - const isUnresolvedNamespace = - cachedResults.isImportFound && - cachedResults.isNamespacePackage && - !this._isNamespacePackageResolved(moduleDescriptor, cachedResults.implicitImports); - - if (!isUnresolvedNamespace) { - return cachedResults; - } - } - - const bestImport = this._resolveBestAbsoluteImport( - sourceFilePath, - execEnv, - moduleDescriptor, - /* allowPyi */ true - ); - - if (bestImport) { - if (bestImport.isStubFile) { - bestImport.nonStubImportResult = - this._resolveBestAbsoluteImport( - sourceFilePath, - execEnv, - moduleDescriptor, - /* allowPyi */ false - ) || notFoundResult; - } - - return this.addResultsToCache( - execEnv, - importName, - bestImport, - moduleDescriptor.importedSymbols, - fromUserFile - ); - } - } - - return this.addResultsToCache( - execEnv, - importName, - notFoundResult, - /* importedSymbols */ undefined, - fromUserFile - ); - } - getCompletionSuggestions( sourceFilePath: string, execEnv: ExecutionEnvironment, @@ -388,117 +201,43 @@ export class ImportResolver { this.invalidateCache(); } - private _getCompletionSuggestionsStrict( - sourceFilePath: string, - execEnv: ExecutionEnvironment, - moduleDescriptor: ImportedModuleDescriptor - ): Map { - const importFailureInfo: string[] = []; - const suggestions = new Map(); + // Returns the implementation file(s) for the given stub file. + getSourceFilesFromStub(stubFilePath: string, execEnv: ExecutionEnvironment, _mapCompiled: boolean): string[] { + const sourceFilePaths: string[] = []; - // Is it a relative import? - if (moduleDescriptor.leadingDots > 0) { - this._getCompletionSuggestionsRelative(sourceFilePath, execEnv, moduleDescriptor, suggestions); - } else { - // First check for a typeshed file. - if (moduleDescriptor.nameParts.length > 0) { - this._getCompletionSuggestionsTypeshedPath( - sourceFilePath, - execEnv, - moduleDescriptor, - true, - suggestions - ); - } + // When ImportResolver resolves an import to a stub file, a second resolve is done + // ignoring stub files, which gives us an approximation of where the implementation + // for that stub is located. + this._cachedImportResults.forEach((map) => { + map.forEach((result) => { + if (result.isStubFile && result.isImportFound && result.nonStubImportResult) { + if (result.resolvedPaths[result.resolvedPaths.length - 1] === stubFilePath) { + if (result.nonStubImportResult.isImportFound) { + const nonEmptyPath = + result.nonStubImportResult.resolvedPaths[ + result.nonStubImportResult.resolvedPaths.length - 1 + ]; - // Look for it in the root directory of the execution environment. - if (execEnv.root) { - this._getCompletionSuggestionsAbsolute( - sourceFilePath, - execEnv, - execEnv.root, - moduleDescriptor, - suggestions - ); + if (nonEmptyPath.endsWith('.py') || nonEmptyPath.endsWith('.pyi')) { + // We allow pyi in case there are multiple pyi for a compiled module such as + // numpy.random.mtrand + sourceFilePaths.push(nonEmptyPath); + } + } + } + } + }); + }); + + // We haven't seen an import of that stub, attempt to find the source + // in some other ways. + if (sourceFilePaths.length === 0) { + // Simple case where the stub and source files are next to each other. + const sourceFilePath = changeAnyExtension(stubFilePath, '.py'); + if (this.dirExistsCached(sourceFilePath)) { + sourceFilePaths.push(sourceFilePath); } - - for (const extraPath of execEnv.extraPaths) { - this._getCompletionSuggestionsAbsolute( - sourceFilePath, - execEnv, - extraPath, - moduleDescriptor, - suggestions - ); - } - - // Check for a typings file. - if (this._configOptions.stubPath) { - this._getCompletionSuggestionsAbsolute( - sourceFilePath, - execEnv, - this._configOptions.stubPath, - moduleDescriptor, - suggestions - ); - } - - // Check for a typeshed file. - this._getCompletionSuggestionsTypeshedPath(sourceFilePath, execEnv, moduleDescriptor, false, suggestions); - - // Look for the import in the list of third-party packages. - const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo); - for (const searchPath of pythonSearchPaths) { - this._getCompletionSuggestionsAbsolute( - sourceFilePath, - execEnv, - searchPath, - moduleDescriptor, - suggestions - ); - } - } - - return suggestions; - } - - // Returns the implementation file(s) for the given stub file. - getSourceFilesFromStub(stubFilePath: string, execEnv: ExecutionEnvironment, _mapCompiled: boolean): string[] { - const sourceFilePaths: string[] = []; - - // When ImportResolver resolves an import to a stub file, a second resolve is done - // ignoring stub files, which gives us an approximation of where the implementation - // for that stub is located. - this._cachedImportResults.forEach((map) => { - map.forEach((result) => { - if (result.isStubFile && result.isImportFound && result.nonStubImportResult) { - if (result.resolvedPaths[result.resolvedPaths.length - 1] === stubFilePath) { - if (result.nonStubImportResult.isImportFound) { - const nonEmptyPath = - result.nonStubImportResult.resolvedPaths[ - result.nonStubImportResult.resolvedPaths.length - 1 - ]; - - if (nonEmptyPath.endsWith('.py') || nonEmptyPath.endsWith('.pyi')) { - // We allow pyi in case there are multiple pyi for a compiled module such as - // numpy.random.mtrand - sourceFilePaths.push(nonEmptyPath); - } - } - } - } - }); - }); - - // We haven't seen an import of that stub, attempt to find the source - // in some other ways. - if (sourceFilePaths.length === 0) { - // Simple case where the stub and source files are next to each other. - const sourceFilePath = changeAnyExtension(stubFilePath, '.py'); - if (this.dirExistsCached(sourceFilePath)) { - sourceFilePaths.push(sourceFilePath); - } - } + } if (sourceFilePaths.length === 0) { // The stub and the source file may have the same name, but be located @@ -575,157 +314,6 @@ export class ImportResolver { return getOrAdd(cache, filePath, () => this._getModuleNameForImport(filePath, execEnv, allowInvalidModuleName)); } - private _getModuleNameForImport( - filePath: string, - execEnv: ExecutionEnvironment, - allowInvalidModuleName: boolean - ): ModuleNameAndType { - let moduleName: string | undefined; - let importType = ImportType.BuiltIn; - let isLocalTypingsFile = false; - - const importFailureInfo: string[] = []; - - // If we cannot find a fully-qualified module name with legal characters, - // look for one with invalid characters (e.g. "-"). This is important to - // differentiate between different modules in a project in case they - // declare types with the same (local) name. - let moduleNameWithInvalidCharacters: string | undefined; - - // Is this a stdlib typeshed path? - const stdLibTypeshedPath = this._getStdlibTypeshedPath(execEnv, importFailureInfo); - if (stdLibTypeshedPath) { - moduleName = this.getModuleNameFromPath(stdLibTypeshedPath, filePath); - if (moduleName) { - const moduleDescriptor: ImportedModuleDescriptor = { - leadingDots: 0, - nameParts: moduleName.split('.'), - importedSymbols: undefined, - }; - - if (this._isStdlibTypeshedStubValidForVersion(moduleDescriptor, execEnv, [])) { - return { moduleName, importType, isLocalTypingsFile }; - } - } - } - - // Look for it in the root directory of the execution environment. - if (execEnv.root) { - const candidateModuleNameInfo = this.getModuleNameInfoFromPath(execEnv.root, filePath); - - if (candidateModuleNameInfo) { - if (candidateModuleNameInfo.containsInvalidCharacters) { - moduleNameWithInvalidCharacters = candidateModuleNameInfo.moduleName; - } else { - moduleName = candidateModuleNameInfo.moduleName; - } - } - - importType = ImportType.Local; - } - - for (const extraPath of execEnv.extraPaths) { - const candidateModuleNameInfo = this.getModuleNameInfoFromPath(extraPath, filePath); - - if (candidateModuleNameInfo) { - if (candidateModuleNameInfo.containsInvalidCharacters) { - moduleNameWithInvalidCharacters = candidateModuleNameInfo.moduleName; - } else { - // Does this candidate look better than the previous best module name? - // We'll always try to use the shortest version. - const candidateModuleName = candidateModuleNameInfo.moduleName; - if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { - moduleName = candidateModuleName; - importType = ImportType.Local; - } - } - } - } - - // Check for a typings file. - if (this._configOptions.stubPath) { - const candidateModuleNameInfo = this.getModuleNameInfoFromPath(this._configOptions.stubPath, filePath); - - if (candidateModuleNameInfo) { - if (candidateModuleNameInfo.containsInvalidCharacters) { - moduleNameWithInvalidCharacters = candidateModuleNameInfo.moduleName; - } else { - // Does this candidate look better than the previous best module name? - // We'll always try to use the shortest version. - const candidateModuleName = candidateModuleNameInfo.moduleName; - if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { - moduleName = candidateModuleName; - - // Treat the typings path as a local import so errors are reported for it. - importType = ImportType.Local; - isLocalTypingsFile = true; - } - } - } - } - - // Check for a typeshed file. - const thirdPartyTypeshedPath = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo); - if (thirdPartyTypeshedPath) { - const candidateModuleName = this.getModuleNameFromPath( - thirdPartyTypeshedPath, - filePath, - /* stripTopContainerDir */ true - ); - - // Does this candidate look better than the previous best module name? - // We'll always try to use the shortest version. - if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { - moduleName = candidateModuleName; - importType = ImportType.ThirdParty; - } - } - - const thirdPartyTypeshedPathEx = this.getTypeshedPathEx(execEnv, importFailureInfo); - if (thirdPartyTypeshedPathEx) { - const candidateModuleName = this.getModuleNameFromPath(thirdPartyTypeshedPathEx, filePath); - - // Does this candidate look better than the previous best module name? - // We'll always try to use the shortest version. - if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { - moduleName = candidateModuleName; - importType = ImportType.ThirdParty; - } - } - - // Look for the import in the list of third-party packages. - const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo); - - for (const searchPath of pythonSearchPaths) { - const candidateModuleNameInfo = this.getModuleNameInfoFromPath(searchPath, filePath); - - if (candidateModuleNameInfo) { - if (candidateModuleNameInfo.containsInvalidCharacters) { - moduleNameWithInvalidCharacters = candidateModuleNameInfo.moduleName; - } else { - // Does this candidate look better than the previous best module name? - // We'll always try to use the shortest version. - const candidateModuleName = candidateModuleNameInfo.moduleName; - if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { - moduleName = candidateModuleName; - importType = ImportType.ThirdParty; - } - } - } - } - - if (moduleName) { - return { moduleName, importType, isLocalTypingsFile }; - } - - if (allowInvalidModuleName && moduleNameWithInvalidCharacters) { - return { moduleName: moduleNameWithInvalidCharacters, importType, isLocalTypingsFile }; - } - - // We didn't find any module name. - return { moduleName: '', importType: ImportType.Local, isLocalTypingsFile }; - } - getTypeshedStdLibPath(execEnv: ExecutionEnvironment) { const unused: string[] = []; return this._getStdlibTypeshedPath(execEnv, unused); @@ -790,26 +378,160 @@ export class ImportResolver { return roots; } - protected readdirEntriesCached(path: string): Dirent[] { - const cachedValue = this._cachedEntriesForPath.get(path); - if (cachedValue) { - return cachedValue; + ensurePartialStubPackages(execEnv: ExecutionEnvironment) { + if (!SupportPartialStubs.is(this.fileSystem)) { + return false; } - let newCacheValue: Dirent[]; - try { - newCacheValue = this.fileSystem.readdirEntriesSync(path); - } catch { - newCacheValue = []; + if (this.fileSystem.isPartialStubPackagesScanned(execEnv)) { + return false; } - // Populate cache for next time. - this._cachedEntriesForPath.set(path, newCacheValue); - return newCacheValue; - } + const fs = this.fileSystem; + const ignored: string[] = []; + const paths: string[] = []; + const typeshedPathEx = this.getTypeshedPathEx(execEnv, ignored); - protected fileExistsCached(path: string): boolean { - const splitPath = this._splitPath(path); + // Add paths to search stub packages. + addPaths(this._configOptions.stubPath); + addPaths(execEnv.root); + execEnv.extraPaths.forEach((p) => addPaths(p)); + addPaths(typeshedPathEx); + this.getPythonSearchPaths(ignored).forEach((p) => addPaths(p)); + + this.fileSystem.processPartialStubPackages(paths, this.getImportRoots(execEnv), typeshedPathEx); + this._invalidateFileSystemCache(); + return true; + + function addPaths(path?: string) { + if (!path || fs.isPathScanned(path)) { + return; + } + + paths.push(path); + } + } + + getPythonSearchPaths(importFailureInfo: string[]) { + // Find the site packages for the configured virtual environment. + if (!this._cachedPythonSearchPaths) { + const info: string[] = []; + const paths = ( + PythonPathUtils.findPythonSearchPaths(this.fileSystem, this._configOptions, this.host, info) || [] + ).map((p) => this.fileSystem.realCasePath(p)); + + // Remove duplicates (yes, it happens). + this._cachedPythonSearchPaths = { paths: [...new Set(paths)], failureInfo: info }; + } + + // Make sure we cache the logs as well so we can find out why search path failed. + importFailureInfo.push(...this._cachedPythonSearchPaths.failureInfo); + return this._cachedPythonSearchPaths.paths; + } + + protected readdirEntriesCached(path: string): Dirent[] { + const cachedValue = this._cachedEntriesForPath.get(path); + if (cachedValue) { + return cachedValue; + } + + let newCacheValue: Dirent[]; + try { + newCacheValue = this.fileSystem.readdirEntriesSync(path); + } catch { + newCacheValue = []; + } + + // Populate cache for next time. + this._cachedEntriesForPath.set(path, newCacheValue); + return newCacheValue; + } + + // Resolves the import and returns the path if it exists, otherwise + // returns undefined. + protected _resolveImport( + sourceFilePath: string, + execEnv: ExecutionEnvironment, + moduleDescriptor: ImportedModuleDescriptor + ): ImportResult { + const importName = this.formatImportName(moduleDescriptor); + const importFailureInfo: string[] = []; + const importResult = this._resolveImportStrict( + importName, + sourceFilePath, + execEnv, + moduleDescriptor, + importFailureInfo + ); + + if (importResult.isImportFound || moduleDescriptor.leadingDots > 0) { + return importResult; + } + + // If the import is absolute and no other method works, try resolving the + // absolute in the importing file's directory, then the parent directory, + // and so on, until the import root is reached. + sourceFilePath = normalizePathCase(this.fileSystem, normalizePath(sourceFilePath)); + const origin = ensureTrailingDirectorySeparator(getDirectoryPath(sourceFilePath)); + + const result = this.cachedParentImportResults.getImportResult(origin, importName, importResult); + if (result) { + // Already ran the parent directory resolution for this import name on this location. + return this.filterImplicitImports(result, moduleDescriptor.importedSymbols); + } + + // Check whether the given file is in the parent directory import resolution cache. + const root = this.getParentImportResolutionRoot(sourceFilePath, execEnv.root); + if (!this.cachedParentImportResults.checkValidPath(this.fileSystem, sourceFilePath, root)) { + return importResult; + } + + const importPath: ImportPath = { importPath: undefined }; + + // Going up the given folder one by one until we can resolve the import. + let current = origin; + while (this._shouldWalkUp(current, root, execEnv)) { + const result = this.resolveAbsoluteImport( + sourceFilePath, + current, + execEnv, + moduleDescriptor, + importName, + [], + /* allowPartial */ undefined, + /* allowNativeLib */ undefined, + /* useStubPackage */ false, + /* allowPyi */ true + ); + + this.cachedParentImportResults.checked(current, importName, importPath); + + if (result.isImportFound) { + // This will make cache to point to actual path that contains the module we found + importPath.importPath = current; + + this.cachedParentImportResults.add({ + importResult: result, + path: current, + importName, + }); + + return this.filterImplicitImports(result, moduleDescriptor.importedSymbols); + } + + let success; + [success, current] = this._tryWalkUp(current); + if (!success) { + break; + } + } + + this.cachedParentImportResults.checked(current, importName, importPath); + return importResult; + } + + protected fileExistsCached(path: string): boolean { + const splitPath = this._splitPath(path); if (!splitPath[0] || !splitPath[1]) { if (!this.fileSystem.existsSync(path)) { @@ -860,111 +582,552 @@ export class ImportResolver { return false; } - ensurePartialStubPackages(execEnv: ExecutionEnvironment) { - if (!SupportPartialStubs.is(this.fileSystem)) { - return false; - } + protected addResultsToCache( + execEnv: ExecutionEnvironment, + importName: string, + importResult: ImportResult, + importedSymbols: string[] | undefined, + fromUserFile: boolean + ) { + getOrAdd(this._cachedImportResults, execEnv.root, () => new Map()).set( + this._getCacheKey(importName, fromUserFile), + importResult + ); - if (this.fileSystem.isPartialStubPackagesScanned(execEnv)) { - return false; + return this.filterImplicitImports(importResult, importedSymbols); + } + + // Follows import resolution algorithm defined in PEP-420: + // https://www.python.org/dev/peps/pep-0420/ + protected resolveAbsoluteImport( + sourceFilePath: string | undefined, + rootPath: string, + execEnv: ExecutionEnvironment, + moduleDescriptor: ImportedModuleDescriptor, + importName: string, + importFailureInfo: string[], + allowPartial = false, + allowNativeLib = false, + useStubPackage = false, + allowPyi = true, + lookForPyTyped = false + ): ImportResult { + if (allowPyi && useStubPackage) { + // Look for packaged stubs first. PEP 561 indicates that package authors can ship + // their stubs separately from their package implementation by appending the string + // '-stubs' to its top - level directory name. We'll look there first. + const importResult = this._resolveAbsoluteImport( + sourceFilePath, + rootPath, + execEnv, + moduleDescriptor, + importName, + importFailureInfo, + allowPartial, + /* allowNativeLib */ false, + /* useStubPackage */ true, + /* allowPyi */ true, + /* lookForPyTyped */ true + ); + + // We found fully typed stub packages. + if (importResult.packageDirectory) { + // If this is a namespace package that wasn't resolved, assume that + // it's a partial stub package and continue looking for a real package. + if (!importResult.isNamespacePackage || importResult.isImportFound) { + return importResult; + } + } } - const fs = this.fileSystem; - const ignored: string[] = []; - const paths: string[] = []; - const typeshedPathEx = this.getTypeshedPathEx(execEnv, ignored); + return this._resolveAbsoluteImport( + sourceFilePath, + rootPath, + execEnv, + moduleDescriptor, + importName, + importFailureInfo, + allowPartial, + allowNativeLib, + /* useStubPackage */ false, + allowPyi, + lookForPyTyped + ); + } - // Add paths to search stub packages. - addPaths(this._configOptions.stubPath); - addPaths(execEnv.root); - execEnv.extraPaths.forEach((p) => addPaths(p)); - addPaths(typeshedPathEx); - this.getPythonSearchPaths(ignored).forEach((p) => addPaths(p)); + // 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[]): string | undefined { + return undefined; + } - this.fileSystem.processPartialStubPackages(paths, this.getImportRoots(execEnv), typeshedPathEx); - this._invalidateFileSystemCache(); - return true; + // Intended to be overridden by subclasses to provide additional stub + // resolving capabilities. Return undefined if no stubs were found for + // this import. + protected resolveImportEx( + sourceFilePath: string, + execEnv: ExecutionEnvironment, + moduleDescriptor: ImportedModuleDescriptor, + importName: string, + importFailureInfo: string[] = [], + allowPyi = true + ): ImportResult | undefined { + return undefined; + } - function addPaths(path?: string) { - if (!path || fs.isPathScanned(path)) { - return; + // Intended to be overridden by subclasses to provide additional stub + // resolving capabilities for native (compiled) modules. Returns undefined + // if no stubs were found for this import. + protected resolveNativeImportEx( + libraryFilePath: string, + importName: string, + importFailureInfo: string[] = [] + ): string | undefined { + return undefined; + } + + protected getNativeModuleName(fileName: string): string | undefined { + const fileExtension = getFileExtension(fileName, /* multiDotExtension */ false).toLowerCase(); + if (this._isNativeModuleFileExtension(fileExtension)) { + return stripFileExtension(stripFileExtension(fileName)); + } + return undefined; + } + + protected getModuleNameFromPath( + containerPath: string, + filePath: string, + stripTopContainerDir = false + ): string | undefined { + const moduleNameInfo = this.getModuleNameInfoFromPath(containerPath, filePath, stripTopContainerDir); + if (!moduleNameInfo || moduleNameInfo.containsInvalidCharacters) { + return undefined; + } + + return moduleNameInfo.moduleName; + } + + protected getModuleNameInfoFromPath( + containerPath: string, + filePath: string, + stripTopContainerDir = false + ): ModuleNameInfoFromPath | undefined { + containerPath = ensureTrailingDirectorySeparator(containerPath); + let filePathWithoutExtension = stripFileExtension(filePath); + + // If module is native, strip platform part, such as 'cp36-win_amd64' in 'mtrand.cp36-win_amd64'. + if (this._isNativeModuleFileExtension(getFileExtension(filePath))) { + filePathWithoutExtension = stripFileExtension(filePathWithoutExtension); + } + + if (!filePathWithoutExtension.startsWith(containerPath)) { + return undefined; + } + + // Strip off the '/__init__' if it's present. + if (filePathWithoutExtension.endsWith('__init__')) { + filePathWithoutExtension = filePathWithoutExtension.substr(0, filePathWithoutExtension.length - 9); + } + + const relativeFilePath = filePathWithoutExtension.substr(containerPath.length); + const parts = getPathComponents(relativeFilePath); + parts.shift(); + if (stripTopContainerDir) { + if (parts.length === 0) { + return undefined; + } + parts.shift(); + } + + if (parts.length === 0) { + return undefined; + } + + // Handle the case where the symbol was resolved to a stubs package + // rather than the real package. We'll strip off the "-stubs" suffix + // in this case. + if (parts[0].endsWith(stubsSuffix)) { + parts[0] = parts[0].substr(0, parts[0].length - stubsSuffix.length); + } + + // Check whether parts contains invalid characters. + const containsInvalidCharacters = parts.some((p) => !this._isIdentifier(p)); + + return { + moduleName: parts.join('.'), + containsInvalidCharacters, + }; + } + + // Potentially modifies the ImportResult by removing some or all of the + // implicit import entries. Only the imported symbols should be included. + protected filterImplicitImports(importResult: ImportResult, importedSymbols: string[] | undefined): ImportResult { + if (importedSymbols === undefined) { + const newImportResult = Object.assign({}, importResult); + newImportResult.filteredImplicitImports = []; + return newImportResult; + } + + if (importedSymbols.length === 0) { + return importResult; + } + + if (importResult.implicitImports.length === 0) { + return importResult; + } + + const filteredImplicitImports = importResult.implicitImports.filter((implicitImport) => { + return importedSymbols.some((sym) => sym === implicitImport.name); + }); + + if (filteredImplicitImports.length === importResult.implicitImports.length) { + return importResult; + } + + const newImportResult = Object.assign({}, importResult); + newImportResult.filteredImplicitImports = filteredImplicitImports; + return newImportResult; + } + + protected formatImportName(moduleDescriptor: ImportedModuleDescriptor) { + return '.'.repeat(moduleDescriptor.leadingDots) + moduleDescriptor.nameParts.join('.'); + } + + protected getParentImportResolutionRoot(sourceFilePath: string, executionRoot: string | undefined) { + if (executionRoot) { + return ensureTrailingDirectorySeparator(normalizePathCase(this.fileSystem, normalizePath(executionRoot))); + } + + return ensureTrailingDirectorySeparator(getDirectoryPath(sourceFilePath)); + } + + private _resolveImportStrict( + importName: string, + sourceFilePath: string, + execEnv: ExecutionEnvironment, + moduleDescriptor: ImportedModuleDescriptor, + importFailureInfo: string[] + ) { + const fromUserFile = matchFileSpecs(this._configOptions, sourceFilePath); + const notFoundResult: ImportResult = { + importName, + isRelative: false, + isImportFound: false, + isPartlyResolved: false, + isNamespacePackage: false, + isInitFilePresent: false, + isStubPackage: false, + importFailureInfo, + resolvedPaths: [], + importType: ImportType.Local, + isStubFile: false, + isNativeLib: false, + implicitImports: [], + filteredImplicitImports: [], + nonStubImportResult: undefined, + }; + + this.ensurePartialStubPackages(execEnv); + + // Is it a relative import? + if (moduleDescriptor.leadingDots > 0) { + const relativeImport = this._resolveRelativeImport( + sourceFilePath, + execEnv, + moduleDescriptor, + importName, + importFailureInfo + ); + + if (relativeImport) { + relativeImport.isRelative = true; + return relativeImport; + } + } else { + // Is it already cached? + const cachedResults = this._lookUpResultsInCache( + execEnv, + importName, + moduleDescriptor.importedSymbols, + fromUserFile + ); + + if (cachedResults) { + // In most cases, we can simply return a cached entry. However, there are cases + // where the cached entry refers to a previously-resolved namespace package + // that does not resolve the symbols specified in the module descriptor. + // In this case, we will ignore the cached value and run the full import + // resolution again to try to find a package that resolves the import. + const isUnresolvedNamespace = + cachedResults.isImportFound && + cachedResults.isNamespacePackage && + !this._isNamespacePackageResolved(moduleDescriptor, cachedResults.implicitImports); + + if (!isUnresolvedNamespace) { + return cachedResults; + } + } + + const bestImport = this._resolveBestAbsoluteImport( + sourceFilePath, + execEnv, + moduleDescriptor, + /* allowPyi */ true + ); + + if (bestImport) { + if (bestImport.isStubFile) { + bestImport.nonStubImportResult = + this._resolveBestAbsoluteImport( + sourceFilePath, + execEnv, + moduleDescriptor, + /* allowPyi */ false + ) || notFoundResult; + } + + return this.addResultsToCache( + execEnv, + importName, + bestImport, + moduleDescriptor.importedSymbols, + fromUserFile + ); + } + } + + return this.addResultsToCache( + execEnv, + importName, + notFoundResult, + /* importedSymbols */ undefined, + fromUserFile + ); + } + + private _getCompletionSuggestionsStrict( + sourceFilePath: string, + execEnv: ExecutionEnvironment, + moduleDescriptor: ImportedModuleDescriptor + ): Map { + const importFailureInfo: string[] = []; + const suggestions = new Map(); + + // Is it a relative import? + if (moduleDescriptor.leadingDots > 0) { + this._getCompletionSuggestionsRelative(sourceFilePath, execEnv, moduleDescriptor, suggestions); + } else { + // First check for a typeshed file. + if (moduleDescriptor.nameParts.length > 0) { + this._getCompletionSuggestionsTypeshedPath( + sourceFilePath, + execEnv, + moduleDescriptor, + true, + suggestions + ); + } + + // Look for it in the root directory of the execution environment. + if (execEnv.root) { + this._getCompletionSuggestionsAbsolute( + sourceFilePath, + execEnv, + execEnv.root, + moduleDescriptor, + suggestions + ); + } + + for (const extraPath of execEnv.extraPaths) { + this._getCompletionSuggestionsAbsolute( + sourceFilePath, + execEnv, + extraPath, + moduleDescriptor, + suggestions + ); + } + + // Check for a typings file. + if (this._configOptions.stubPath) { + this._getCompletionSuggestionsAbsolute( + sourceFilePath, + execEnv, + this._configOptions.stubPath, + moduleDescriptor, + suggestions + ); + } + + // Check for a typeshed file. + this._getCompletionSuggestionsTypeshedPath(sourceFilePath, execEnv, moduleDescriptor, false, suggestions); + + // Look for the import in the list of third-party packages. + const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo); + for (const searchPath of pythonSearchPaths) { + this._getCompletionSuggestionsAbsolute( + sourceFilePath, + execEnv, + searchPath, + moduleDescriptor, + suggestions + ); + } + } + + return suggestions; + } + + private _getModuleNameForImport( + filePath: string, + execEnv: ExecutionEnvironment, + allowInvalidModuleName: boolean + ): ModuleNameAndType { + let moduleName: string | undefined; + let importType = ImportType.BuiltIn; + let isLocalTypingsFile = false; + + const importFailureInfo: string[] = []; + + // If we cannot find a fully-qualified module name with legal characters, + // look for one with invalid characters (e.g. "-"). This is important to + // differentiate between different modules in a project in case they + // declare types with the same (local) name. + let moduleNameWithInvalidCharacters: string | undefined; + + // Is this a stdlib typeshed path? + const stdLibTypeshedPath = this._getStdlibTypeshedPath(execEnv, importFailureInfo); + if (stdLibTypeshedPath) { + moduleName = this.getModuleNameFromPath(stdLibTypeshedPath, filePath); + if (moduleName) { + const moduleDescriptor: ImportedModuleDescriptor = { + leadingDots: 0, + nameParts: moduleName.split('.'), + importedSymbols: undefined, + }; + + if (this._isStdlibTypeshedStubValidForVersion(moduleDescriptor, execEnv, [])) { + return { moduleName, importType, isLocalTypingsFile }; + } + } + } + + // Look for it in the root directory of the execution environment. + if (execEnv.root) { + const candidateModuleNameInfo = this.getModuleNameInfoFromPath(execEnv.root, filePath); + + if (candidateModuleNameInfo) { + if (candidateModuleNameInfo.containsInvalidCharacters) { + moduleNameWithInvalidCharacters = candidateModuleNameInfo.moduleName; + } else { + moduleName = candidateModuleNameInfo.moduleName; + } + } + + importType = ImportType.Local; + } + + for (const extraPath of execEnv.extraPaths) { + const candidateModuleNameInfo = this.getModuleNameInfoFromPath(extraPath, filePath); + + if (candidateModuleNameInfo) { + if (candidateModuleNameInfo.containsInvalidCharacters) { + moduleNameWithInvalidCharacters = candidateModuleNameInfo.moduleName; + } else { + // Does this candidate look better than the previous best module name? + // We'll always try to use the shortest version. + const candidateModuleName = candidateModuleNameInfo.moduleName; + if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { + moduleName = candidateModuleName; + importType = ImportType.Local; + } + } + } + } + + // Check for a typings file. + if (this._configOptions.stubPath) { + const candidateModuleNameInfo = this.getModuleNameInfoFromPath(this._configOptions.stubPath, filePath); + + if (candidateModuleNameInfo) { + if (candidateModuleNameInfo.containsInvalidCharacters) { + moduleNameWithInvalidCharacters = candidateModuleNameInfo.moduleName; + } else { + // Does this candidate look better than the previous best module name? + // We'll always try to use the shortest version. + const candidateModuleName = candidateModuleNameInfo.moduleName; + if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { + moduleName = candidateModuleName; + + // Treat the typings path as a local import so errors are reported for it. + importType = ImportType.Local; + isLocalTypingsFile = true; + } + } + } + } + + // Check for a typeshed file. + const thirdPartyTypeshedPath = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo); + if (thirdPartyTypeshedPath) { + const candidateModuleName = this.getModuleNameFromPath( + thirdPartyTypeshedPath, + filePath, + /* stripTopContainerDir */ true + ); + + // Does this candidate look better than the previous best module name? + // We'll always try to use the shortest version. + if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { + moduleName = candidateModuleName; + importType = ImportType.ThirdParty; + } + } + + const thirdPartyTypeshedPathEx = this.getTypeshedPathEx(execEnv, importFailureInfo); + if (thirdPartyTypeshedPathEx) { + const candidateModuleName = this.getModuleNameFromPath(thirdPartyTypeshedPathEx, filePath); + + // Does this candidate look better than the previous best module name? + // We'll always try to use the shortest version. + if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { + moduleName = candidateModuleName; + importType = ImportType.ThirdParty; } - - paths.push(path); } - } - - protected addResultsToCache( - execEnv: ExecutionEnvironment, - importName: string, - importResult: ImportResult, - importedSymbols: string[] | undefined, - fromUserFile: boolean - ) { - getOrAdd(this._cachedImportResults, execEnv.root, () => new Map()).set( - this._getCacheKey(importName, fromUserFile), - importResult - ); - return this.filterImplicitImports(importResult, importedSymbols); - } + // Look for the import in the list of third-party packages. + const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo); - // Follows import resolution algorithm defined in PEP-420: - // https://www.python.org/dev/peps/pep-0420/ - protected resolveAbsoluteImport( - sourceFilePath: string | undefined, - rootPath: string, - execEnv: ExecutionEnvironment, - moduleDescriptor: ImportedModuleDescriptor, - importName: string, - importFailureInfo: string[], - allowPartial = false, - allowNativeLib = false, - useStubPackage = false, - allowPyi = true, - lookForPyTyped = false - ): ImportResult { - if (allowPyi && useStubPackage) { - // Look for packaged stubs first. PEP 561 indicates that package authors can ship - // their stubs separately from their package implementation by appending the string - // '-stubs' to its top - level directory name. We'll look there first. - const importResult = this._resolveAbsoluteImport( - sourceFilePath, - rootPath, - execEnv, - moduleDescriptor, - importName, - importFailureInfo, - allowPartial, - /* allowNativeLib */ false, - /* useStubPackage */ true, - /* allowPyi */ true, - /* lookForPyTyped */ true - ); + for (const searchPath of pythonSearchPaths) { + const candidateModuleNameInfo = this.getModuleNameInfoFromPath(searchPath, filePath); - // We found fully typed stub packages. - if (importResult.packageDirectory) { - // If this is a namespace package that wasn't resolved, assume that - // it's a partial stub package and continue looking for a real package. - if (!importResult.isNamespacePackage || importResult.isImportFound) { - return importResult; + if (candidateModuleNameInfo) { + if (candidateModuleNameInfo.containsInvalidCharacters) { + moduleNameWithInvalidCharacters = candidateModuleNameInfo.moduleName; + } else { + // Does this candidate look better than the previous best module name? + // We'll always try to use the shortest version. + const candidateModuleName = candidateModuleNameInfo.moduleName; + if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) { + moduleName = candidateModuleName; + importType = ImportType.ThirdParty; + } } } } - return this._resolveAbsoluteImport( - sourceFilePath, - rootPath, - execEnv, - moduleDescriptor, - importName, - importFailureInfo, - allowPartial, - allowNativeLib, - /* useStubPackage */ false, - allowPyi, - lookForPyTyped - ); + if (moduleName) { + return { moduleName, importType, isLocalTypingsFile }; + } + + if (allowInvalidModuleName && moduleNameWithInvalidCharacters) { + return { moduleName: moduleNameWithInvalidCharacters, importType, isLocalTypingsFile }; + } + + // We didn't find any module name. + return { moduleName: '', importType: ImportType.Local, isLocalTypingsFile }; } private _invalidateFileSystemCache() { @@ -1182,45 +1345,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[]): string | 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. - protected resolveImportEx( - sourceFilePath: string, - execEnv: ExecutionEnvironment, - moduleDescriptor: ImportedModuleDescriptor, - importName: string, - importFailureInfo: string[] = [], - allowPyi = true - ): ImportResult | undefined { - return undefined; - } - - // Intended to be overridden by subclasses to provide additional stub - // resolving capabilities for native (compiled) modules. Returns undefined - // if no stubs were found for this import. - protected resolveNativeImportEx( - libraryFilePath: string, - importName: string, - importFailureInfo: string[] = [] - ): string | undefined { - return undefined; - } - - protected getNativeModuleName(fileName: string): string | undefined { - const fileExtension = getFileExtension(fileName, /* multiDotExtension */ false).toLowerCase(); - if (this._isNativeModuleFileExtension(fileExtension)) { - return stripFileExtension(stripFileExtension(fileName)); - } - return undefined; - } - private _getCacheKey(importName: string, fromUserFile: boolean) { return `${importName}-${fromUserFile}`; } @@ -1266,71 +1390,6 @@ export class ImportResolver { return true; } - protected getModuleNameFromPath( - containerPath: string, - filePath: string, - stripTopContainerDir = false - ): string | undefined { - const moduleNameInfo = this.getModuleNameInfoFromPath(containerPath, filePath, stripTopContainerDir); - if (!moduleNameInfo || moduleNameInfo.containsInvalidCharacters) { - return undefined; - } - - return moduleNameInfo.moduleName; - } - - protected getModuleNameInfoFromPath( - containerPath: string, - filePath: string, - stripTopContainerDir = false - ): ModuleNameInfoFromPath | undefined { - containerPath = ensureTrailingDirectorySeparator(containerPath); - let filePathWithoutExtension = stripFileExtension(filePath); - - // If module is native, strip platform part, such as 'cp36-win_amd64' in 'mtrand.cp36-win_amd64'. - if (this._isNativeModuleFileExtension(getFileExtension(filePath))) { - filePathWithoutExtension = stripFileExtension(filePathWithoutExtension); - } - - if (!filePathWithoutExtension.startsWith(containerPath)) { - return undefined; - } - - // Strip off the '/__init__' if it's present. - if (filePathWithoutExtension.endsWith('__init__')) { - filePathWithoutExtension = filePathWithoutExtension.substr(0, filePathWithoutExtension.length - 9); - } - - const relativeFilePath = filePathWithoutExtension.substr(containerPath.length); - const parts = getPathComponents(relativeFilePath); - parts.shift(); - if (stripTopContainerDir) { - if (parts.length === 0) { - return undefined; - } - parts.shift(); - } - - if (parts.length === 0) { - return undefined; - } - - // Handle the case where the symbol was resolved to a stubs package - // rather than the real package. We'll strip off the "-stubs" suffix - // in this case. - if (parts[0].endsWith(stubsSuffix)) { - parts[0] = parts[0].substr(0, parts[0].length - stubsSuffix.length); - } - - // Check whether parts contains invalid characters. - const containsInvalidCharacters = parts.some((p) => !this._isIdentifier(p)); - - return { - moduleName: parts.join('.'), - containsInvalidCharacters, - }; - } - private _resolveBestAbsoluteImport( sourceFilePath: string, execEnv: ExecutionEnvironment, @@ -1599,23 +1658,6 @@ export class ImportResolver { return true; } - getPythonSearchPaths(importFailureInfo: string[]) { - // Find the site packages for the configured virtual environment. - if (!this._cachedPythonSearchPaths) { - const info: string[] = []; - const paths = ( - PythonPathUtils.findPythonSearchPaths(this.fileSystem, this._configOptions, this.host, info) || [] - ).map((p) => this.fileSystem.realCasePath(p)); - - // Remove duplicates (yes, it happens). - this._cachedPythonSearchPaths = { paths: [...new Set(paths)], failureInfo: info }; - } - - // Make sure we cache the logs as well so we can find out why search path failed. - importFailureInfo.push(...this._cachedPythonSearchPaths.failureInfo); - return this._cachedPythonSearchPaths.paths; - } - private _findTypeshedPath( execEnv: ExecutionEnvironment, moduleDescriptor: ImportedModuleDescriptor, @@ -2280,36 +2322,6 @@ export class ImportResolver { return true; } - // Potentially modifies the ImportResult by removing some or all of the - // implicit import entries. Only the imported symbols should be included. - protected filterImplicitImports(importResult: ImportResult, importedSymbols: string[] | undefined): ImportResult { - if (importedSymbols === undefined) { - const newImportResult = Object.assign({}, importResult); - newImportResult.filteredImplicitImports = []; - return newImportResult; - } - - if (importedSymbols.length === 0) { - return importResult; - } - - if (importResult.implicitImports.length === 0) { - return importResult; - } - - const filteredImplicitImports = importResult.implicitImports.filter((implicitImport) => { - return importedSymbols.some((sym) => sym === implicitImport.name); - }); - - if (filteredImplicitImports.length === importResult.implicitImports.length) { - return importResult; - } - - const newImportResult = Object.assign({}, importResult); - newImportResult.filteredImplicitImports = filteredImplicitImports; - return newImportResult; - } - private _findImplicitImports(importingModuleName: string, dirPath: string, exclusions: string[]): ImplicitImport[] { const implicitImportMap = new Map(); @@ -2402,10 +2414,6 @@ export class ImportResolver { return [...implicitImportMap.values()]; } - protected formatImportName(moduleDescriptor: ImportedModuleDescriptor) { - return '.'.repeat(moduleDescriptor.leadingDots) + moduleDescriptor.nameParts.join('.'); - } - private _resolveNativeModuleStub( nativeLibPath: string, execEnv: ExecutionEnvironment, @@ -2466,14 +2474,6 @@ export class ImportResolver { private _shouldWalkUp(current: string, root: string, execEnv: ExecutionEnvironment) { return current.length > root.length || (current === root && !execEnv.root); } - - protected getParentImportResolutionRoot(sourceFilePath: string, executionRoot: string | undefined) { - if (executionRoot) { - return ensureTrailingDirectorySeparator(normalizePathCase(this.fileSystem, normalizePath(executionRoot))); - } - - return ensureTrailingDirectorySeparator(getDirectoryPath(sourceFilePath)); - } } export type ImportResolverFactory = (fs: FileSystem, options: ConfigOptions, host: Host) => ImportResolver; diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index a303e19e7..a756aa0f7 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -209,10 +209,6 @@ export class Program { Program._nextId += 1; } - dispose() { - this._cacheManager.unregisterCacheOwner(this); - } - get id() { return this._id; } @@ -241,6 +237,10 @@ export class Program { return this._importResolver.fileSystem; } + dispose() { + this._cacheManager.unregisterCacheOwner(this); + } + setConfigOptions(configOptions: ConfigOptions) { this._configOptions = configOptions; this._importResolver.setConfigOptions(configOptions); @@ -874,2446 +874,2446 @@ export class Program { return evaluator.printType(type, options); } - private static _getPrintTypeFlags(configOptions: ConfigOptions): PrintTypeFlags { - let flags = PrintTypeFlags.None; - - if (configOptions.diagnosticRuleSet.printUnknownAsAny) { - flags |= PrintTypeFlags.PrintUnknownWithAny; + getTextOnRange(filePath: string, range: Range, token: CancellationToken): string | undefined { + const sourceFileInfo = this.getSourceFileInfo(filePath); + if (!sourceFileInfo) { + return undefined; } - if (configOptions.diagnosticRuleSet.omitConditionalConstraint) { - flags |= PrintTypeFlags.OmitConditionalConstraint; + const sourceFile = sourceFileInfo.sourceFile; + const fileContents = sourceFile.getOpenFileContents(); + if (fileContents === undefined) { + // this only works with opened file + return undefined; } - if (configOptions.diagnosticRuleSet.omitTypeArgsIfUnknown) { - flags |= PrintTypeFlags.OmitTypeArgumentsIfUnknown; - } + return this._runEvaluatorWithCancellationToken(token, () => { + this._parseFile(sourceFileInfo); - if (configOptions.diagnosticRuleSet.omitUnannotatedParamType) { - flags |= PrintTypeFlags.OmitUnannotatedParamType; + const parseTree = sourceFile.getParseResults()!; + const textRange = convertRangeToTextRange(range, parseTree.tokenizerOutput.lines); + if (!textRange) { + return undefined; + } + + return fileContents.substr(textRange.start, textRange.length); + }); + } + + getAutoImports( + filePath: string, + range: Range, + similarityLimit: number, + nameMap: AbbreviationMap | undefined, + options: AutoImportOptions, + token: CancellationToken + ): AutoImportResult[] { + const sourceFileInfo = this.getSourceFileInfo(filePath); + if (!sourceFileInfo) { + return []; } - if (configOptions.diagnosticRuleSet.pep604Printing) { - flags |= PrintTypeFlags.PEP604; + const sourceFile = sourceFileInfo.sourceFile; + const fileContents = sourceFile.getOpenFileContents(); + if (fileContents === undefined) { + // this only works with opened file + return []; } - return flags; - } + return this._runEvaluatorWithCancellationToken(token, () => { + this._bindFile(sourceFileInfo); - private _getImportNameForFile(filePath: string) { - // We allow illegal module names (e.g. names that include "-" in them) - // because we want a unique name for each module even if it cannot be - // imported through an "import" statement. It's important to have a - // unique name in case two modules declare types with the same local - // name. The type checker uses the fully-qualified (unique) module name - // to differentiate between such types. - const moduleNameAndType = this._importResolver.getModuleNameForImport( - filePath, - this._configOptions.getDefaultExecEnvironment(), - /* allowIllegalModuleName */ true - ); - return moduleNameAndType.moduleName; - } + const parseTree = sourceFile.getParseResults()!; + const textRange = convertRangeToTextRange(range, parseTree.tokenizerOutput.lines); + if (!textRange) { + return []; + } - // A "shadowed" file is a python source file that has been added to the program because - // it "shadows" a type stub file for purposes of finding doc strings and definitions. - // We need to track the relationship so if the original type stub is removed from the - // program, we can remove the corresponding shadowed file and any files it imports. - private _addShadowedFile(stubFile: SourceFileInfo, shadowImplPath: string): SourceFile { - let shadowFileInfo = this.getSourceFileInfo(shadowImplPath); + const currentNode = findNodeByOffset(parseTree.parseTree, textRange.start); + if (!currentNode) { + return []; + } - if (!shadowFileInfo) { - shadowFileInfo = this.addInterimFile(shadowImplPath); - } + const writtenWord = fileContents.substr(textRange.start, textRange.length); + const map = this._buildModuleSymbolsMap( + sourceFileInfo, + options.libraryMap, + /* includeSymbolsFromIndices */ true, + token + ); - if (!shadowFileInfo.shadows.includes(stubFile)) { - shadowFileInfo.shadows.push(stubFile); - } + options.patternMatcher = + options.patternMatcher ?? ((p, t) => computeCompletionSimilarity(p, t) > similarityLimit); - if (!stubFile.shadowedBy.includes(shadowFileInfo)) { - stubFile.shadowedBy.push(shadowFileInfo); - } + const autoImporter = new AutoImporter( + this._configOptions.findExecEnvironment(filePath), + this._importResolver, + parseTree, + range.start, + new CompletionMap(), + map, + options + ); - return shadowFileInfo.sourceFile; - } + // Filter out any name that is already defined in the current scope. + const results: AutoImportResult[] = []; - private _createInterimFileInfo(filePath: string) { - const importName = this._getImportNameForFile(filePath); - const sourceFile = new SourceFile( - this.fileSystem, - filePath, - importName, - /* isThirdPartyImport */ false, - /* isInPyTypedPackage */ false, - this._console, - this._logTracker - ); - const sourceFileInfo = { - sourceFile, - isTracked: false, - isOpenByClient: false, - isTypeshedFile: false, - isThirdPartyImport: false, - isThirdPartyPyTypedPresent: false, - diagnosticsVersion: undefined, - imports: [], - importedBy: [], - shadows: [], - shadowedBy: [], - }; + const currentScope = getScopeForNode(currentNode); + if (currentScope) { + const info = nameMap?.get(writtenWord); + if (info) { + // No scope filter is needed since we only do exact match. + appendArray(results, autoImporter.getAutoImportCandidatesForAbbr(writtenWord, info, token)); + } - return sourceFileInfo; + results.push( + ...autoImporter + .getAutoImportCandidates(writtenWord, similarityLimit, /* abbrFromUsers */ undefined, token) + .filter((r) => !currentScope.lookUpSymbolRecursive(r.name)) + ); + } + + return results; + }); } - private _createNewEvaluator() { - if (this._evaluator) { - // We shouldn't need to call this, but there appears to be a bug - // in the v8 garbage collector where it's unable to resolve orphaned - // objects without us giving it some assistance. - this._evaluator.disposeEvaluator(); - } + getDiagnostics(options: ConfigOptions): FileDiagnostics[] { + const fileDiagnostics: FileDiagnostics[] = this._removeUnneededFiles(); - this._evaluator = createTypeEvaluatorWithTracker( - this._lookUpImport, - { - printTypeFlags: Program._getPrintTypeFlags(this._configOptions), - logCalls: this._configOptions.logTypeEvaluationTime, - minimumLoggingThreshold: this._configOptions.typeEvaluationTimeThreshold, - evaluateUnknownImportsAsAny: !!this._configOptions.evaluateUnknownImportsAsAny, - verifyTypeCacheEvaluatorFlags: !!this._configOptions.internalTestMode, - }, - this._logTracker, - this._configOptions.logTypeEvaluationTime - ? createTracePrinter( - this._importResolver.getImportRoots( - this._configOptions.findExecEnvironment(this._configOptions.projectRoot) - ) - ) - : undefined - ); + this._sourceFileList.forEach((sourceFileInfo) => { + if (this._shouldCheckFile(sourceFileInfo)) { + const diagnostics = sourceFileInfo.sourceFile.getDiagnostics( + options, + sourceFileInfo.diagnosticsVersion + ); + if (diagnostics !== undefined) { + fileDiagnostics.push({ + filePath: sourceFileInfo.sourceFile.getFilePath(), + version: sourceFileInfo.sourceFile.getClientVersion(), + diagnostics, + }); - return this._evaluator; + // Update the cached diagnosticsVersion so we can determine + // whether there are any updates next time we call getDiagnostics. + sourceFileInfo.diagnosticsVersion = sourceFileInfo.sourceFile.getDiagnosticVersion(); + } + } else if ( + !sourceFileInfo.isOpenByClient && + options.checkOnlyOpenFiles && + sourceFileInfo.diagnosticsVersion !== undefined + ) { + // This condition occurs when the user switches from workspace to + // "open files only" mode. Clear all diagnostics for this file. + fileDiagnostics.push({ + filePath: sourceFileInfo.sourceFile.getFilePath(), + version: sourceFileInfo.sourceFile.getClientVersion(), + diagnostics: [], + }); + sourceFileInfo.diagnosticsVersion = undefined; + } + }); + + return fileDiagnostics; } - private _parseFile(fileToParse: SourceFileInfo, content?: string, force?: boolean) { - if (!force && (!this._isFileNeeded(fileToParse) || !fileToParse.sourceFile.isParseRequired())) { - return; + getDiagnosticsForRange(filePath: string, range: Range): Diagnostic[] { + const sourceFile = this.getSourceFile(filePath); + if (!sourceFile) { + return []; } - // SourceFile.parse should only be called here in the program, as calling it - // elsewhere could break the entire dependency graph maintained by the program. - // Other parts of the program should use _parseFile to create ParseResults from - // the sourceFile. For standalone parseResults, use parseFile or the Parser directly. - if (fileToParse.sourceFile.parse(this._configOptions, this._importResolver, content)) { - this._parsedFileCount++; - this._updateSourceFileImports(fileToParse, this._configOptions); + const unfilteredDiagnostics = sourceFile.getDiagnostics(this._configOptions); + if (!unfilteredDiagnostics) { + return []; } - if (fileToParse.sourceFile.isFileDeleted()) { - fileToParse.isTracked = false; - - // Mark any files that depend on this file as dirty - // also. This will retrigger analysis of these other files. - const markDirtySet = new Set(); - this._markFileDirtyRecursive(fileToParse, markDirtySet); - - // Invalidate the import resolver's cache as well. - this._importResolver.invalidateCache(); - } + return unfilteredDiagnostics.filter((diag) => { + return doRangesIntersect(diag.range, range); + }); } - private _getImplicitImports(file: SourceFileInfo) { - // If file is not parsed, then chainedSourceFile, ipythonDisplayImport, - // builtinsImport might not exist or incorrect. - // They will be added when _parseFile is called and _updateSourceFileImports ran. - if (file.builtinsImport === file) { - return undefined; - } - - const tryReturn = (input: SourceFileInfo | undefined) => { - if (!input || input.sourceFile.isFileDeleted()) { - return undefined; + reportReferencesForPosition( + filePath: string, + position: Position, + includeDeclaration: boolean, + reporter: ReferenceCallback, + token: CancellationToken + ) { + this._runEvaluatorWithCancellationToken(token, () => { + const sourceFileInfo = this.getSourceFileInfo(filePath); + if (!sourceFileInfo) { + return; } - return input; - }; + const invokedFromUserFile = isUserCode(sourceFileInfo); + this._bindFile(sourceFileInfo); - return tryReturn(file.chainedSourceFile) ?? tryReturn(file.ipythonDisplayImport) ?? file.builtinsImport; - } + const execEnv = this._configOptions.findExecEnvironment(filePath); + const referencesResult = this._getDeclarationForPosition( + sourceFileInfo, + position, + DocumentSymbolCollectorUseCase.Reference, + this._createSourceMapper(execEnv, token, sourceFileInfo), + token, + reporter + ); + if (!referencesResult) { + return; + } - private _bindImplicitImports(fileToAnalyze: SourceFileInfo) { - // Get all of the potential imports for this file. - const implicitImports: SourceFileInfo[] = []; - const implicitSet = new Set(); + // Do we need to do a global search as well? + if (referencesResult.requiresGlobalSearch) { + for (const curSourceFileInfo of this._sourceFileList) { + throwIfCancellationRequested(token); - let nextImplicitImport = this._getImplicitImports(fileToAnalyze); - while (nextImplicitImport) { - const implicitPath = nextImplicitImport.sourceFile.getFilePath(); - if (implicitSet.has(implicitPath)) { - // We've found a cycle. Break out of the loop. - debug.fail(`Found a cycle in implicit imports files for ${implicitPath}`); - } + // "Find all references" will only include references from user code + // unless the file is explicitly opened in the editor or it is invoked from non user files. + if (curSourceFileInfo.isOpenByClient || !invokedFromUserFile || isUserCode(curSourceFileInfo)) { + // See if the reference symbol's string is located somewhere within the file. + // If not, we can skip additional processing for the file. + const fileContents = curSourceFileInfo.sourceFile.getFileContent(); + if (!fileContents || referencesResult.symbolNames.some((s) => fileContents.search(s) >= 0)) { + this._bindFile(curSourceFileInfo); - implicitSet.add(implicitPath); - implicitImports.push(nextImplicitImport); + curSourceFileInfo.sourceFile.addReferences( + referencesResult, + includeDeclaration, + this._evaluator!, + token + ); + } - this._parseFile(nextImplicitImport); - nextImplicitImport = this._getImplicitImports(nextImplicitImport); - } + // This operation can consume significant memory, so check + // for situations where we need to discard the type cache. + this._handleMemoryHighUsage(); + } + } - if (implicitImports.length === 0) { - return; - } + // Make sure to include declarations regardless where they are defined + // if includeDeclaration is set. + if (includeDeclaration) { + for (const decl of referencesResult.declarations) { + throwIfCancellationRequested(token); - // Go in reverse order (so top of chain is first). - let implicitImport = implicitImports.pop(); - while (implicitImport) { - // Bind this file, but don't recurse into its imports. - this._bindFile(implicitImport, undefined, undefined, /* isImplicitImport */ true); - implicitImport = implicitImports.pop(); - } - } + if (referencesResult.locations.some((l) => l.path === decl.path)) { + // Already included. + continue; + } - // Binds the specified file and all of its dependencies, recursively. If - // it runs out of time, it returns true. If it completes, it returns false. - private _bindFile( - fileToAnalyze: SourceFileInfo, - content?: string, - force?: boolean, - isImplicitImport?: boolean - ): void { - if (!force && (!this._isFileNeeded(fileToAnalyze) || !fileToAnalyze.sourceFile.isBindingRequired())) { - return; - } + const declFileInfo = this.getSourceFileInfo(decl.path); + if (!declFileInfo) { + // The file the declaration belongs to doesn't belong to the program. + continue; + } - this._parseFile(fileToAnalyze, content, force); + const tempResult = new ReferencesResult( + referencesResult.requiresGlobalSearch, + referencesResult.nodeAtOffset, + referencesResult.symbolNames, + referencesResult.declarations, + referencesResult.useCase + ); - // Create a function to get the scope info. - const getScopeIfAvailable = (fileInfo: SourceFileInfo | undefined) => { - if (!fileInfo || fileInfo === fileToAnalyze) { - return undefined; + declFileInfo.sourceFile.addReferences(tempResult, includeDeclaration, this._evaluator!, token); + for (const loc of tempResult.locations) { + // Include declarations only. And throw away any references + if (loc.path === decl.path && doesRangeContain(decl.range, loc.range)) { + referencesResult.addLocations(loc); + } + } + } + } + } else { + sourceFileInfo.sourceFile.addReferences(referencesResult, includeDeclaration, this._evaluator!, token); } + }); + } - // If the file was deleted, there's no scope to return. - if (fileInfo.sourceFile.isFileDeleted()) { + getFileIndex(filePath: string, options: IndexOptions, token: CancellationToken): IndexResults | undefined { + if (options.indexingForAutoImportMode) { + // Memory optimization. We only want to hold onto symbols + // usable outside when importSymbolsOnly is on. + const name = stripFileExtension(getFileName(filePath)); + if (isPrivateOrProtectedName(name)) { return undefined; } + } - const parseResults = fileInfo.sourceFile.getParseResults(); - if (!parseResults) { + this._handleMemoryHighUsage(); + + return this._runEvaluatorWithCancellationToken(token, () => { + const sourceFileInfo = this.getSourceFileInfo(filePath); + if (!sourceFileInfo) { return undefined; } - // File should already be bound because of the chained file binding above. - const scope = AnalyzerNodeInfo.getScope(parseResults.parseTree); - return scope; - }; - - let builtinsScope: Scope | undefined; - if (fileToAnalyze.builtinsImport && fileToAnalyze.builtinsImport !== fileToAnalyze) { - // Bind all of the implicit imports first. So we don't recurse into them. - if (!isImplicitImport) { - this._bindImplicitImports(fileToAnalyze); + const content = sourceFileInfo.sourceFile.getFileContent() ?? ''; + if ( + options.indexingForAutoImportMode && + !options.includeAllSymbols && + !sourceFileInfo.sourceFile.isStubFile() && + !sourceFileInfo.sourceFile.isThirdPartyPyTypedPresent() + ) { + // Perf optimization. if py file doesn't contain __all__ + // No need to parse and bind. + if (content.indexOf('__all__') < 0) { + return undefined; + } } - // If it is not builtin module itself, we need to parse and bind - // the ipython display import if required. Otherwise, get builtin module. - builtinsScope = - getScopeIfAvailable(fileToAnalyze.chainedSourceFile) ?? - getScopeIfAvailable(fileToAnalyze.ipythonDisplayImport) ?? - getScopeIfAvailable(fileToAnalyze.builtinsImport); - } - - let futureImports = fileToAnalyze.sourceFile.getParseResults()!.futureImports; - if (fileToAnalyze.chainedSourceFile) { - futureImports = this._getEffectiveFutureImports(futureImports, fileToAnalyze.chainedSourceFile); - } - fileToAnalyze.effectiveFutureImports = futureImports.size > 0 ? futureImports : undefined; - - fileToAnalyze.sourceFile.bind(this._configOptions, this._lookUpImport, builtinsScope, futureImports); + this._bindFile(sourceFileInfo, content); + return sourceFileInfo.sourceFile.index(options, token); + }); } - private _getEffectiveFutureImports(futureImports: Set, chainedSourceFile: SourceFileInfo): Set { - const effectiveFutureImports = new Set(futureImports); + addSymbolsForDocument(filePath: string, symbolList: DocumentSymbol[], token: CancellationToken) { + return this._runEvaluatorWithCancellationToken(token, () => { + const sourceFileInfo = this.getSourceFileInfo(filePath); + if (sourceFileInfo) { + if (!sourceFileInfo.sourceFile.getCachedIndexResults()) { + // If we already have cached index for this file, no need to bind this file. + this._bindFile(sourceFileInfo); + } - chainedSourceFile.effectiveFutureImports?.forEach((value) => { - effectiveFutureImports.add(value); + sourceFileInfo.sourceFile.addHierarchicalSymbolsForDocument(symbolList, token); + } }); - - return effectiveFutureImports; } - private _lookUpImport = (filePathOrModule: string | AbsoluteModuleDescriptor): ImportLookupResult | undefined => { - let sourceFileInfo: SourceFileInfo | undefined; + reportSymbolsForWorkspace(query: string, reporter: WorkspaceSymbolCallback, token: CancellationToken) { + this._runEvaluatorWithCancellationToken(token, () => { + // Don't do a search if the query is empty. We'll return + // too many results in this case. + if (!query) { + return; + } - if (typeof filePathOrModule === 'string') { - sourceFileInfo = this.getSourceFileInfo(filePathOrModule); - } else { - // Resolve the import. - const importResult = this._importResolver.resolveImport( - filePathOrModule.importingFilePath, - this._configOptions.findExecEnvironment(filePathOrModule.importingFilePath), - { - leadingDots: 0, - nameParts: filePathOrModule.nameParts, - importedSymbols: undefined, + // "Workspace symbols" searches symbols only from user code. + for (const sourceFileInfo of this._sourceFileList) { + if (!isUserCode(sourceFileInfo)) { + continue; } - ); - - if (importResult.isImportFound && !importResult.isNativeLib && importResult.resolvedPaths.length > 0) { - let resolvedPath = importResult.resolvedPaths[importResult.resolvedPaths.length - 1]; - if (resolvedPath) { - // See if the source file already exists in the program. - sourceFileInfo = this.getSourceFileInfo(resolvedPath); - if (!sourceFileInfo) { - resolvedPath = normalizePathCase(this.fileSystem, resolvedPath); - - // Start tracking the source file. - this.addTrackedFile(resolvedPath); - sourceFileInfo = this.getSourceFileInfo(resolvedPath); - } + if (!sourceFileInfo.sourceFile.getCachedIndexResults()) { + // If we already have cached index for this file, no need to bind this file. + this._bindFile(sourceFileInfo); } - } - } - if (!sourceFileInfo) { - return undefined; - } + const symbolList = sourceFileInfo.sourceFile.getSymbolsForDocument(query, token); + if (symbolList.length > 0) { + reporter(symbolList); + } - if (sourceFileInfo.sourceFile.isBindingRequired()) { - // Bind the file if it's not already bound. Don't count this time - // against the type checker. - timingStats.typeCheckerTime.subtractFromTime(() => { - this._bindFile(sourceFileInfo!); - }); - } + // This operation can consume significant memory, so check + // for situations where we need to discard the type cache. + this._handleMemoryHighUsage(); + } + }); + } - const symbolTable = sourceFileInfo.sourceFile.getModuleSymbolTable(); - if (!symbolTable) { + async getCompletionsForPosition( + filePath: string, + position: Position, + workspacePath: string, + options: CompletionOptions, + nameMap: AbbreviationMap | undefined, + libraryMap: Map | undefined, + token: CancellationToken + ): Promise { + const sourceFileInfo = this.getSourceFileInfo(filePath); + if (!sourceFileInfo) { return undefined; } + let sourceMapper: SourceMapper | undefined; + const completionResult = this._logTracker.log( + `completion at ${filePath}:${position.line}:${position.character}`, + (ls) => { + const result = this._runEvaluatorWithCancellationToken(token, () => { + this._bindFile(sourceFileInfo); - const parseResults = sourceFileInfo.sourceFile.getParseResults(); - const moduleNode = parseResults!.parseTree; - const fileInfo = AnalyzerNodeInfo.getFileInfo(moduleNode); + const execEnv = this._configOptions.findExecEnvironment(filePath); + sourceMapper = this._createSourceMapper(execEnv, token, sourceFileInfo, /* mapCompiled */ true); + return sourceFileInfo.sourceFile.getCompletionsForPosition( + position, + workspacePath, + this._configOptions, + this._importResolver, + this._lookUpImport, + this._evaluator!, + options, + sourceMapper, + nameMap, + libraryMap, + () => + this._buildModuleSymbolsMap( + sourceFileInfo, + libraryMap, + options.includeUserSymbolsInAutoImport, + token + ), + token + ); + }); - const dunderAllInfo = AnalyzerNodeInfo.getDunderAllInfo(parseResults!.parseTree); + ls.add(`found ${result?.completionMap.size ?? 'null'} items`); + return result; + } + ); - return { - symbolTable, - dunderAllNames: dunderAllInfo?.names, - usesUnsupportedDunderAllForm: dunderAllInfo?.usesUnsupportedDunderAllForm ?? false, - get docString() { - return getDocString(moduleNode.statements); - }, - isInPyTypedPackage: fileInfo.isInPyTypedPackage, + const completionResultsList: CompletionResultsList = { + completionList: CompletionList.create(completionResult?.completionMap.toArray()), + memberAccessInfo: completionResult?.memberAccessInfo, + autoImportInfo: completionResult?.autoImportInfo, + extensionInfo: completionResult?.extensionInfo, }; - }; - // Build a map of all modules within this program and the module- - // level scope that contains the symbol table for the module. - private _buildModuleSymbolsMap( - sourceFileToExclude: SourceFileInfo, - libraryMap: Map | undefined, - includeSymbolsFromIndices: boolean, - token: CancellationToken - ): ModuleSymbolMap { - // If we have library map, always use the map for library symbols. - const predicate = (s: SourceFileInfo) => { - if (!libraryMap) { - // We don't have any prebuilt indices, so we need to include - // all files. - return true; + const parseResults = sourceFileInfo.sourceFile.getParseResults(); + if (parseResults?.parseTree && parseResults?.text) { + const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); + if (offset !== undefined && sourceMapper) { + await Promise.all( + Extensions.getProgramExtensions(parseResults.parseTree).map((e) => + e.completionListExtension?.updateCompletionResults( + this.evaluator!, + sourceMapper!, + options, + completionResultsList, + parseResults, + offset, + this._configOptions.functionSignatureDisplay, + token + ) + ) + ); } + } - if (!this._configOptions.indexing) { - // We have some prebuilt indices such as stdlib, but indexing is disabled. - // Include files we don't have prebuilt indices. - return libraryMap.get(s.sourceFile.getFilePath()) === undefined; + return completionResultsList; + } + + resolveCompletionItem( + filePath: string, + completionItem: CompletionItem, + options: CompletionOptions, + nameMap: AbbreviationMap | undefined, + libraryMap: Map | undefined, + token: CancellationToken + ) { + return this._runEvaluatorWithCancellationToken(token, () => { + const sourceFileInfo = this.getSourceFileInfo(filePath); + if (!sourceFileInfo) { + return; } - // We have prebuilt indices for third party libraries. Include only - // user files. - return isUserCode(s); - }; + this._bindFile(sourceFileInfo); - // Only include import alias from user files if indexing is off for now. - // Currently, when indexing is off, we don't do import alias deduplication, so - // adding import alias is cheap. But when indexing is on, we do deduplication, which - // require resolveAliasDeclaration that can cause more files to be parsed and bound. - return buildModuleSymbolsMap( - this._sourceFileList.filter((s) => s !== sourceFileToExclude && predicate(s)), - includeSymbolsFromIndices, - token - ); + const execEnv = this._configOptions.findExecEnvironment(filePath); + sourceFileInfo.sourceFile.resolveCompletionItem( + this._configOptions, + this._importResolver, + this._lookUpImport, + this._evaluator!, + options, + this._createSourceMapper(execEnv, token, sourceFileInfo, /* mapCompiled */ true), + nameMap, + libraryMap, + () => + this._buildModuleSymbolsMap( + sourceFileInfo, + libraryMap, + options.includeUserSymbolsInAutoImport, + token + ), + completionItem, + token + ); + }); } - private _shouldCheckFile(fileInfo: SourceFileInfo) { - // Always do a full checking for a file that's open in the editor. - if (fileInfo.isOpenByClient) { - return true; - } + renameModule(path: string, newPath: string, token: CancellationToken): FileEditActions | undefined { + return this._runEvaluatorWithCancellationToken(token, () => { + if (isFile(this.fileSystem, path)) { + const fileInfo = this.getSourceFileInfo(path); + if (!fileInfo) { + return undefined; + } + } - // If the file isn't currently open, only perform full checking for - // files that are tracked, and only if the checkOnlyOpenFiles is disabled. - if (!this._configOptions.checkOnlyOpenFiles && fileInfo.isTracked) { - return true; - } + const renameModuleProvider = RenameModuleProvider.createForModule( + this._importResolver, + this._configOptions, + this._evaluator!, + path, + newPath, + token + ); + if (!renameModuleProvider) { + return undefined; + } - return false; + this._processModuleReferences(renameModuleProvider, renameModuleProvider.lastModuleName, path); + return { edits: renameModuleProvider.getEdits(), fileOperations: [] }; + }); } - private _checkTypes(fileToCheck: SourceFileInfo, token: CancellationToken) { - return this._logTracker.log(`analyzing: ${fileToCheck.sourceFile.getFilePath()}`, (logState) => { - // If the file isn't needed because it was eliminated from the - // transitive closure or deleted, skip the file rather than wasting - // time on it. - if (!this._isFileNeeded(fileToCheck)) { - logState.suppress(); - return false; + moveSymbolAtPosition( + filePath: string, + newFilePath: string, + position: Position, + options: { importFormat: ImportFormat }, + token: CancellationToken + ): FileEditActions | undefined { + return this._runEvaluatorWithCancellationToken(token, () => { + const sourceFileExt = getFileExtension(filePath); + const destFileExt = getFileExtension(newFilePath); + if (sourceFileExt.toLowerCase() !== destFileExt.toLowerCase()) { + // Don't allow moving a symbol from py to pyi or vice versa. + return undefined; } - if (!fileToCheck.sourceFile.isCheckingRequired()) { - logState.suppress(); - return false; + const fileInfo = this.getSourceFileInfo(filePath); + if (!fileInfo) { + return undefined; } - if (!this._shouldCheckFile(fileToCheck)) { - logState.suppress(); - return false; + const newFileInfo = this.getBoundSourceFileInfo(newFilePath); + if (fileInfo === newFileInfo) { + // Can't move symbol to the same file. + return undefined; } - this._bindFile(fileToCheck); + this._bindFile(fileInfo); + const parseResults = fileInfo.sourceFile.getParseResults(); + if (!parseResults) { + return undefined; + } - if (this._preCheckCallback) { - const parseResults = fileToCheck.sourceFile.getParseResults(); - if (parseResults) { - this._preCheckCallback(parseResults, this._evaluator!); - } + const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); + if (offset === undefined) { + return undefined; } - if (!this._disableChecker) { - // For ipython, make sure we check all its dependent files first since - // their results can affect this file's result. - let dependentFiles: ParseResults[] | undefined = undefined; - if (fileToCheck.sourceFile.getIPythonMode() === IPythonMode.CellDocs) { - dependentFiles = []; - const importedByFiles = collectImportedByFiles(fileToCheck); - for (const file of importedByFiles) { - if (!isUserCode(file)) { - continue; - } + const node = findNodeByOffset(parseResults.parseTree, offset); + if (node === undefined) { + return undefined; + } - // If the file is already analyzed, it will be no op. - // And make sure we don't dump parse tree and etc while - // recursively calling checker. Otherwise, inner check - // can dump parse tree required by outer check. - const handle = this._cacheManager.pauseTracking(); - try { - this._checkTypes(file, token); - } finally { - handle.dispose(); - } + // If this isn't a name node, there are no references to be found. + if ( + node.nodeType !== ParseNodeType.Name || + !RenameModuleProvider.canMoveSymbol(this._configOptions, this._evaluator!, node) + ) { + return undefined; + } - const parseResults = file.sourceFile.getParseResults(); - if (parseResults) { - dependentFiles.push(parseResults); - } - } - } + // We will try to + // 1. Find symbol to move. + // 2. Update all references to the symbol to new location. + // 3. Remove the existing symbol. + // 4. Insert the symbol to the destination module. + // 5. Insert imports required for the symbol moved to the destination module. + // 6. Remove import no longer needed from the original module. + // + // Here all changes are done to edits, no features in LS will apply changes to + // program directly. All modification is done through LSP by a edit request so + // things like undo or edit stacks UI works. - const execEnv = this._configOptions.findExecEnvironment(fileToCheck.sourceFile.getFilePath()); - fileToCheck.sourceFile.check( - this._importResolver, - this._evaluator!, - this._createSourceMapper(execEnv, token, fileToCheck), - dependentFiles - ); + // 1. Find symbol to move. + const execEnv = this._configOptions.findExecEnvironment(filePath); + const declarations = DocumentSymbolCollector.getDeclarationsForNode( + node, + this._evaluator!, + /* resolveLocalNames */ false, + DocumentSymbolCollectorUseCase.Rename, + token, + this._createSourceMapper(execEnv, token, fileInfo) + ); + + const renameModuleProvider = RenameModuleProvider.createForSymbol( + this._importResolver, + this._configOptions, + this._evaluator!, + filePath, + newFilePath, + declarations, + token + ); + if (!renameModuleProvider) { + return undefined; } - // For very large programs, we may need to discard the evaluator and - // its cached types to avoid running out of heap space. - this._handleMemoryHighUsage(); + // 2. Update affected references. + this._processModuleReferences(renameModuleProvider, node.value, filePath); - // Detect import cycles that involve the file. - if (this._configOptions.diagnosticRuleSet.reportImportCycles !== 'none') { - // Don't detect import cycles when doing type stub generation. Some - // third-party modules are pretty convoluted. - if (!this._allowedThirdPartyImports) { - // We need to force all of the files to be parsed and build - // a closure map for the files. - const closureMap = new Map(); - this._getImportsRecursive(fileToCheck, closureMap, 0); + // 3. Remove existing symbols. + const sourceDecl = renameModuleProvider.declarations.find( + (d) => d.node && getFileExtension(d.path) === sourceFileExt + ); + if (!sourceDecl) { + // Can't find symbol we can move. + return undefined; + } - closureMap.forEach((file) => { - timingStats.cycleDetectionTime.timeOperation(() => { - const filesVisitedMap = new Map(); + const symbolRange = RenameModuleProvider.getSymbolTextRange(parseResults, sourceDecl); + const importAdder = new ImportAdder(this._configOptions, this._importResolver, this._evaluator!); + const collectedImports = importAdder.collectImportsForSymbolsUsed(parseResults, symbolRange, token); - if (!this._detectAndReportImportCycles(file, filesVisitedMap)) { - // If no cycles were found in any of the files we visited, - // set a flag to indicates that we don't need to visit them again - // on subsequent cycle checks. - filesVisitedMap.forEach((sourceFileInfo) => { - sourceFileInfo.sourceFile.setNoCircularDependencyConfirmed(); - }); - } - }); - }); + let insertionPoint: number | undefined = 0; + let insertionIndentation = 0; + + const newFileParseResults = newFileInfo?.sourceFile.getParseResults(); + if (newFileParseResults) { + const insertBefore = renameModuleProvider.tryGetFirstSymbolUsage(newFileParseResults); + insertionPoint = getInsertionPointForSymbolUnderModule( + this._evaluator!, + newFileParseResults, + node.value, + { + symbolDeclToIgnore: sourceDecl.path, + insertBefore, + } + ); + if (insertionPoint === undefined) { + // No place to insert the symbol. + return undefined; } + + insertionIndentation = getModuleStatementIndentation(newFileParseResults); } - return true; - }); - } + const reindentResult = reindentSpan(parseResults, symbolRange, insertionIndentation); + const fullRange = RenameModuleProvider.getSymbolFullStatementTextRange(parseResults, sourceDecl); - // Builds a map of files that includes the specified file and all of the files - // it imports (recursively) and ensures that all such files. If any of these files - // have already been checked (they and their recursive imports have completed the - // check phase), they are not included in the results. - private _getImportsRecursive( - file: SourceFileInfo, - closureMap: Map, - recursionCount: number - ) { - // If the file is already in the closure map, we found a cyclical - // dependency. Don't recur further. - const filePath = normalizePathCase(this.fileSystem, file.sourceFile.getFilePath()); - if (closureMap.has(filePath)) { - return; - } + renameModuleProvider.textEditTracker.addEdit( + filePath, + convertTextRangeToRange( + TextRange.combine([reindentResult.originalSpan, fullRange])!, + parseResults.tokenizerOutput.lines + ), + '' + ); - // If the import chain is too long, emit an error. Otherwise we - // risk blowing the stack. - if (recursionCount > _maxImportDepth) { - file.sourceFile.setHitMaxImportDepth(_maxImportDepth); - return; - } + // 4. Add the symbol to the destination file. + const fileOperations: FileOperations[] = []; + let codeSnippetToInsert = reindentResult.text; + if (newFileParseResults) { + const range = convertTextRangeToRange( + { start: insertionPoint, length: 0 }, + newFileParseResults.tokenizerOutput.lines + ); - // Add the file to the closure map. - closureMap.set(filePath, file); + // If we are adding at the end of line (ex, end of a file), + // add new lines. + const newLinesToAdd = _getNumberOfBlankLinesToInsert(newFileParseResults, sourceDecl, range.end); + codeSnippetToInsert = '\n'.repeat(newLinesToAdd) + codeSnippetToInsert; - // If this file hasn't already been parsed, parse it now. This will - // discover any files it imports. Skip this if the file is part - // of a library. We'll assume that no cycles will be generated from - // library code or typeshed stubs. - if (isUserCode(file)) { - this._parseFile(file); - } + renameModuleProvider.textEditTracker.addEdit(newFilePath, range, codeSnippetToInsert); + } else { + fileOperations.push({ kind: 'create', filePath: newFilePath }); + renameModuleProvider.textEditTracker.addEdit(newFilePath, getEmptyRange(), codeSnippetToInsert); + } - // Recursively add the file's imports. - for (const importedFileInfo of file.imports) { - this._getImportsRecursive(importedFileInfo, closureMap, recursionCount + 1); - } - } + // 5. Insert imports required for the symbol moved to the destination module. + // + // Since step 5 and 6 can create nested edits, we clone the program and apply all changes to re-calculate + // edits we need to apply to the destination file. The same workflow as `fix all` but done in program level + // not service level. + const cloned = this.clone(); - private _detectAndReportImportCycles( - sourceFileInfo: SourceFileInfo, - filesVisited: Map, - dependencyChain: SourceFileInfo[] = [], - dependencyMap = new Map() - ): boolean { - // Don't bother checking for typestub files or third-party files. - if (sourceFileInfo.sourceFile.isStubFile() || sourceFileInfo.isThirdPartyImport) { - return false; - } + let edits = renameModuleProvider.getEdits(); - // If we've already confirmed that this source file isn't part of a - // cycle, we can skip it entirely. - if (sourceFileInfo.sourceFile.isNoCircularDependencyConfirmed()) { - return false; - } + const textAfterSymbolAdded = applyTextEditsToString( + edits.filter((v) => v.filePath === newFilePath), + newFileParseResults?.tokenizerOutput.lines ?? new TextRangeCollection([]), + newFileInfo?.sourceFile.getFileContent() ?? '' + ); - const filePath = normalizePathCase(this.fileSystem, sourceFileInfo.sourceFile.getFilePath()); + _updateFileContent(cloned, newFilePath, textAfterSymbolAdded); - filesVisited.set(filePath, sourceFileInfo); + const textAfterImportsAdded = _tryGetTextAfterImportsAdded( + cloned, + newFilePath, + collectedImports, + insertionPoint, + token + ); - let detectedCycle = false; + edits = _updateFileEditActions( + edits, + newFilePath, + newFileParseResults, + textAfterSymbolAdded, + textAfterImportsAdded + ); - if (dependencyMap.has(filePath)) { - // We detect a cycle (partial or full). A full cycle is one that is - // rooted in the file at the start of our dependency chain. A partial - // cycle loops back on some other file in the dependency chain. We - // will report only full cycles here and leave the reporting of - // partial cycles to other passes. - detectedCycle = true; + // 6. Remove imports no longer required from original module. + const textAfterSymbolRemoved = applyTextEditsToString( + edits.filter((v) => v.filePath === filePath), + parseResults.tokenizerOutput.lines, + fileInfo.sourceFile.getFileContent()! + ); - // Look for chains at least two in length. A file that contains - // an "import . from X" will technically create a cycle with - // itself, but those are not interesting to report. - if (dependencyChain.length > 1 && sourceFileInfo === dependencyChain[0]) { - this._logImportCycle(dependencyChain); - } - } else { - // If we've already checked this dependency along - // some other path, we can skip it. - if (dependencyMap.has(filePath)) { - return false; - } - - // We use both a map (for fast lookups) and a list - // (for ordering information). Set the dependency map - // entry to true to indicate that we're actively exploring - // that dependency. - dependencyMap.set(filePath, true); - dependencyChain.push(sourceFileInfo); + _updateFileContent(cloned, filePath, textAfterSymbolRemoved); - for (const imp of sourceFileInfo.imports) { - if (this._detectAndReportImportCycles(imp, filesVisited, dependencyChain, dependencyMap)) { - detectedCycle = true; - } - } + const textAfterUnusedImportsRemoved = _tryGetTextAfterUnusedImportsRemoved( + cloned, + filePath, + collectedImports, + 0, + token + ); - // Set the dependencyMap entry to false to indicate that we have - // already explored this file and don't need to explore it again. - dependencyMap.set(filePath, false); - dependencyChain.pop(); - } + edits = _updateFileEditActions( + edits, + filePath, + parseResults, + textAfterSymbolRemoved, + textAfterUnusedImportsRemoved + ); - return detectedCycle; - } + cloned.dispose(); - private _logImportCycle(dependencyChain: SourceFileInfo[]) { - const circDep = new CircularDependency(); - dependencyChain.forEach((sourceFileInfo) => { - circDep.appendPath(sourceFileInfo.sourceFile.getFilePath()); - }); + return { + edits, + fileOperations, + }; - circDep.normalizeOrder(); - const firstFilePath = circDep.getPaths()[0]; - const firstSourceFile = this.getSourceFileInfo(firstFilePath)!; - assert(firstSourceFile !== undefined); - firstSourceFile.sourceFile.addCircularDependency(circDep); - } + function _updateFileEditActions( + edits: FileEditAction[], + filePath: string, + parseResults: ParseResults | undefined, + oldText: string, + newText: string | undefined + ) { + if (newText === undefined || oldText === newText) { + return edits; + } - private _markFileDirtyRecursive(sourceFileInfo: SourceFileInfo, markSet: Set, forceRebinding = false) { - const filePath = normalizePathCase(this.fileSystem, sourceFileInfo.sourceFile.getFilePath()); + // There were nested edits. Replace whole file. + edits = edits.filter((v) => v.filePath !== filePath); + edits.push({ + filePath, + range: parseResults + ? convertTextRangeToRange(parseResults.parseTree, parseResults.tokenizerOutput.lines) + : getEmptyRange(), + replacementText: newText, + }); - // Don't mark it again if it's already been visited. - if (markSet.has(filePath)) { - return; - } + return edits; + } - sourceFileInfo.sourceFile.markReanalysisRequired(forceRebinding); - markSet.add(filePath); + function _tryGetTextAfterImportsAdded( + cloned: Program, + filePath: string, + importData: ImportData, + insertionPoint: number, + token: CancellationToken + ) { + const sourceFile = cloned.getBoundSourceFile(filePath); + const parseResults = sourceFile?.getParseResults(); + if (!parseResults) { + return undefined; + } - sourceFileInfo.importedBy.forEach((dep) => { - // Changes on chained source file can change symbols in the symbol table and - // dependencies on the dependent file. Force rebinding. - const forceRebinding = dep.chainedSourceFile === sourceFileInfo; - this._markFileDirtyRecursive(dep, markSet, forceRebinding); - }); + const insertAddEdits = importAdder.applyImports( + importData, + filePath, + parseResults, + insertionPoint, + options.importFormat, + token + ); - // Change in the current file could impact checker result of chainedSourceFile such as unused symbols. - let chainedSourceFile = sourceFileInfo.chainedSourceFile; - while (chainedSourceFile) { - if (chainedSourceFile.sourceFile.isCheckingRequired()) { - // If the file is marked for checking, its chained one should be marked - // as well. Stop here. - return; + return applyTextEditsToString( + insertAddEdits, + parseResults.tokenizerOutput.lines, + sourceFile!.getFileContent()! + ); } - chainedSourceFile.sourceFile.markReanalysisRequired(/* forceRebinding */ false); - chainedSourceFile = chainedSourceFile.chainedSourceFile; - } - } + function _tryGetTextAfterUnusedImportsRemoved( + cloned: Program, + filePath: string, + importData: ImportData, + attempt: number, + token: CancellationToken + ): string | undefined { + throwIfCancellationRequested(token); - getTextOnRange(filePath: string, range: Range, token: CancellationToken): string | undefined { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } + cloned.analyzeFile(filePath, token); - const sourceFile = sourceFileInfo.sourceFile; - const fileContents = sourceFile.getOpenFileContents(); - if (fileContents === undefined) { - // this only works with opened file - return undefined; - } + const sourceFile = cloned.getBoundSourceFile(filePath); + const parseResults = sourceFile?.getParseResults(); + if (!parseResults) { + return undefined; + } - return this._runEvaluatorWithCancellationToken(token, () => { - this._parseFile(sourceFileInfo); + const tracker = new TextEditTracker(); + for (const diagnostic of cloned + .getDiagnosticsForRange( + filePath, + convertTextRangeToRange(parseResults.parseTree, parseResults.tokenizerOutput.lines) + ) + .filter( + (d) => + d.category === DiagnosticCategory.UnusedCode && + d.getActions()?.some((a) => a.action === Commands.unusedImport) + )) { + const nameNode = findNodeByPosition( + parseResults.parseTree, + diagnostic.range.start, + parseResults.tokenizerOutput.lines + ); - const parseTree = sourceFile.getParseResults()!; - const textRange = convertRangeToTextRange(range, parseTree.tokenizerOutput.lines); - if (!textRange) { - return undefined; - } + if (nameNode?.nodeType !== ParseNodeType.Name) { + continue; + } - return fileContents.substr(textRange.start, textRange.length); - }); - } + // decl is synthesized. there is no node associated with the decl. + // ex) import a or import a.b + const dottedName1 = + nameNode.parent?.nodeType === ParseNodeType.ModuleName ? nameNode.parent.nameParts : [nameNode]; - getAutoImports( - filePath: string, - range: Range, - similarityLimit: number, - nameMap: AbbreviationMap | undefined, - options: AutoImportOptions, - token: CancellationToken - ): AutoImportResult[] { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return []; - } + for (const [decl, names] of importData.declarations) { + if (decl.node) { + if (TextRange.containsRange(decl.node, nameNode)) { + tracker.removeNodes({ node: nameNode, parseResults: parseResults }); + break; + } + } - const sourceFile = sourceFileInfo.sourceFile; - const fileContents = sourceFile.getOpenFileContents(); - if (fileContents === undefined) { - // this only works with opened file - return []; - } + const dottedName2 = getDottedName(getDottedNameWithGivenNodeAsLastName(names[0])); + if (dottedName2 && arrayEquals(dottedName1, dottedName2, (e1, e2) => e1.value === e2.value)) { + tracker.removeNodes({ node: nameNode, parseResults: parseResults }); + break; + } + } + } - return this._runEvaluatorWithCancellationToken(token, () => { - this._bindFile(sourceFileInfo); + const oldText = sourceFile!.getFileContent()!; + const newText = applyTextEditsToString( + tracker.getEdits(token).filter((v) => v.filePath === filePath), + parseResults.tokenizerOutput.lines, + oldText + ); - const parseTree = sourceFile.getParseResults()!; - const textRange = convertRangeToTextRange(range, parseTree.tokenizerOutput.lines); - if (!textRange) { - return []; - } + // We will attempt to remove unused imports multiple times since removing 1 unused import + // could make another import unused. This is due to how we calculate which import is not used. + // ex) import os, os.path, os.path.xxx + // `os.path` and `os.path.xxx` will be marked as used due to `import os`. + // once `os` is removed `os.path` will be marked as unused and so on. + // We will attempt to remove those chained unused imports up to 10 chain. + if (attempt > 10 || oldText === newText) { + return newText; + } - const currentNode = findNodeByOffset(parseTree.parseTree, textRange.start); - if (!currentNode) { - return []; + _updateFileContent(cloned, filePath, newText); + return _tryGetTextAfterUnusedImportsRemoved(cloned, filePath, importData, attempt + 1, token); } + }); - const writtenWord = fileContents.substr(textRange.start, textRange.length); - const map = this._buildModuleSymbolsMap( - sourceFileInfo, - options.libraryMap, - /* includeSymbolsFromIndices */ true, - token - ); + function _updateFileContent(cloned: Program, filePath: string, text: string) { + const info = cloned.getSourceFileInfo(filePath); + const version = info ? (info.sourceFile.getClientVersion() ?? 0) + 1 : 0; + const chainedFilePath = info ? info.chainedSourceFile?.sourceFile.getFilePath() : undefined; + const ipythonMode = info ? info.sourceFile.getIPythonMode() : IPythonMode.None; + const isTracked = info ? info.isTracked : true; + const realFilePath = info ? info.sourceFile.getRealFilePath() : filePath; - options.patternMatcher = - options.patternMatcher ?? ((p, t) => computeCompletionSimilarity(p, t) > similarityLimit); + cloned.setFileOpened(filePath, version, [{ text }], { + chainedFilePath, + ipythonMode, + isTracked, + realFilePath, + }); + } - const autoImporter = new AutoImporter( - this._configOptions.findExecEnvironment(filePath), - this._importResolver, - parseTree, - range.start, - new CompletionMap(), - map, - options - ); + function _getNumberOfBlankLinesToInsert(parseResults: ParseResults, decl: Declaration, position: Position) { + if (position.line === 0 && position.character === 0) { + return 0; + } - // Filter out any name that is already defined in the current scope. - const results: AutoImportResult[] = []; + let previousStatement: StatementNode | undefined; + const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); + if (offset && parseResults.parseTree.statements.length > 0) { + previousStatement = parseResults.parseTree.statements.reduce((prev, curr) => + offset < curr.start ? prev : curr + ); + } - const currentScope = getScopeForNode(currentNode); - if (currentScope) { - const info = nameMap?.get(writtenWord); - if (info) { - // No scope filter is needed since we only do exact match. - appendArray(results, autoImporter.getAutoImportCandidatesForAbbr(writtenWord, info, token)); + // This basically try to add some blank lines after the last line with text. + let linesToAdd = 0; + if (previousStatement) { + if (isVariableDeclaration(decl)) { + switch (previousStatement.nodeType) { + case ParseNodeType.StatementList: + // Small statement such as call, assignment, etc. + linesToAdd = 0; + break; + case ParseNodeType.Class: + case ParseNodeType.Function: + linesToAdd = 2; + break; + default: + // any other statement such as if, while, etc. we will add 1 blank line. + linesToAdd = 1; + } + } else { + linesToAdd = 2; } + } - results.push( - ...autoImporter - .getAutoImportCandidates(writtenWord, similarityLimit, /* abbrFromUsers */ undefined, token) - .filter((r) => !currentScope.lookUpSymbolRecursive(r.name)) - ); + // If the position is not at the beginning of the line, we need to add 1 more '\n' + // to start from blank line. + linesToAdd += position.character !== 0 ? 1 : 0; + + // If there are already blank lines, we only add the difference. + const desiredBlankLines = linesToAdd; + const startingLine = position.character !== 0 ? position.line : position.line - 1; + for (let i = 0; i < desiredBlankLines; i++) { + const currentLine = startingLine - i; + if (currentLine < 0 || !isBlankLine(parseResults, currentLine)) { + break; + } + + linesToAdd--; } - return results; - }); + return linesToAdd; + } } - getDiagnostics(options: ConfigOptions): FileDiagnostics[] { - const fileDiagnostics: FileDiagnostics[] = this._removeUnneededFiles(); + clone() { + const program = new Program( + this._importResolver, + this._configOptions, + this._console, + new LogTracker(this._console, 'Cloned') + ); - this._sourceFileList.forEach((sourceFileInfo) => { - if (this._shouldCheckFile(sourceFileInfo)) { - const diagnostics = sourceFileInfo.sourceFile.getDiagnostics( - options, - sourceFileInfo.diagnosticsVersion - ); - if (diagnostics !== undefined) { - fileDiagnostics.push({ - filePath: sourceFileInfo.sourceFile.getFilePath(), - version: sourceFileInfo.sourceFile.getClientVersion(), - diagnostics, - }); + // Cloned program will use whatever user files the program currently has. + const userFiles = this.getUserFiles(); + program.setTrackedFiles(userFiles.map((i) => i.sourceFile.getFilePath())); + program.markAllFilesDirty(true); - // Update the cached diagnosticsVersion so we can determine - // whether there are any updates next time we call getDiagnostics. - sourceFileInfo.diagnosticsVersion = sourceFileInfo.sourceFile.getDiagnosticVersion(); - } - } else if ( - !sourceFileInfo.isOpenByClient && - options.checkOnlyOpenFiles && - sourceFileInfo.diagnosticsVersion !== undefined - ) { - // This condition occurs when the user switches from workspace to - // "open files only" mode. Clear all diagnostics for this file. - fileDiagnostics.push({ - filePath: sourceFileInfo.sourceFile.getFilePath(), - version: sourceFileInfo.sourceFile.getClientVersion(), - diagnostics: [], - }); - sourceFileInfo.diagnosticsVersion = undefined; + // Make sure we keep editor content (open file) which could be different than one in the file system. + for (const fileInfo of this.getOpened()) { + const version = fileInfo.sourceFile.getClientVersion(); + if (version === undefined) { + continue; } - }); - return fileDiagnostics; + program.setFileOpened( + fileInfo.sourceFile.getFilePath(), + version, + [{ text: fileInfo.sourceFile.getOpenFileContents()! }], + { + chainedFilePath: fileInfo.chainedSourceFile?.sourceFile.getFilePath(), + ipythonMode: fileInfo.sourceFile.getIPythonMode(), + isTracked: fileInfo.isTracked, + realFilePath: fileInfo.sourceFile.getRealFilePath(), + } + ); + } + + return program; } - getDiagnosticsForRange(filePath: string, range: Range): Diagnostic[] { - const sourceFile = this.getSourceFile(filePath); - if (!sourceFile) { - return []; - } + canRenameSymbolAtPosition( + filePath: string, + position: Position, + isDefaultWorkspace: boolean, + allowModuleRename: boolean, + token: CancellationToken + ): { range: Range; declarations: Declaration[] } | undefined { + return this._runEvaluatorWithCancellationToken(token, () => { + const sourceFileInfo = this.getSourceFileInfo(filePath); + if (!sourceFileInfo) { + return undefined; + } - const unfilteredDiagnostics = sourceFile.getDiagnostics(this._configOptions); - if (!unfilteredDiagnostics) { - return []; - } + this._bindFile(sourceFileInfo); + const referencesResult = this._getReferenceResult( + sourceFileInfo, + filePath, + position, + allowModuleRename, + token + ); + if (!referencesResult) { + return undefined; + } - return unfilteredDiagnostics.filter((diag) => { - return doRangesIntersect(diag.range, range); + if ( + referencesResult.containsOnlyImportDecls && + !this._supportRenameModule(referencesResult.declarations, isDefaultWorkspace) + ) { + return undefined; + } + + const renameMode = this._getRenameSymbolMode(sourceFileInfo, referencesResult, isDefaultWorkspace); + if (renameMode === 'none') { + return undefined; + } + + // Return the range of the symbol. + const parseResult = sourceFileInfo.sourceFile.getParseResults()!; + return { + range: convertTextRangeToRange(referencesResult.nodeAtOffset, parseResult.tokenizerOutput.lines), + declarations: referencesResult.declarations, + }; }); } - reportReferencesForPosition( + renameSymbolAtPosition( filePath: string, position: Position, - includeDeclaration: boolean, - reporter: ReferenceCallback, + newName: string, + isDefaultWorkspace: boolean, + allowModuleRename: boolean, token: CancellationToken - ) { - this._runEvaluatorWithCancellationToken(token, () => { + ): FileEditActions | undefined { + return this._runEvaluatorWithCancellationToken(token, () => { const sourceFileInfo = this.getSourceFileInfo(filePath); if (!sourceFileInfo) { - return; + return undefined; } - const invokedFromUserFile = isUserCode(sourceFileInfo); this._bindFile(sourceFileInfo); - const execEnv = this._configOptions.findExecEnvironment(filePath); - const referencesResult = this._getDeclarationForPosition( + const referencesResult = this._getReferenceResult( sourceFileInfo, + filePath, position, - DocumentSymbolCollectorUseCase.Reference, - this._createSourceMapper(execEnv, token, sourceFileInfo), - token, - reporter + allowModuleRename, + token ); if (!referencesResult) { - return; + return undefined; } - // Do we need to do a global search as well? - if (referencesResult.requiresGlobalSearch) { - for (const curSourceFileInfo of this._sourceFileList) { - throwIfCancellationRequested(token); + if (referencesResult.containsOnlyImportDecls) { + // All decls must be on a user file. + if (!this._supportRenameModule(referencesResult.declarations, isDefaultWorkspace)) { + return undefined; + } - // "Find all references" will only include references from user code - // unless the file is explicitly opened in the editor or it is invoked from non user files. - if (curSourceFileInfo.isOpenByClient || !invokedFromUserFile || isUserCode(curSourceFileInfo)) { - // See if the reference symbol's string is located somewhere within the file. - // If not, we can skip additional processing for the file. - const fileContents = curSourceFileInfo.sourceFile.getFileContent(); - if (!fileContents || referencesResult.symbolNames.some((s) => fileContents.search(s) >= 0)) { - this._bindFile(curSourceFileInfo); + const moduleInfo = RenameModuleProvider.getRenameModulePathInfo( + RenameModuleProvider.getRenameModulePath(referencesResult.declarations), + newName + ); + if (!moduleInfo) { + // Can't figure out module to rename. + return undefined; + } - curSourceFileInfo.sourceFile.addReferences( - referencesResult, - includeDeclaration, - this._evaluator!, - token - ); - } + const editActions = this.renameModule(moduleInfo.filePath, moduleInfo.newFilePath, token); - // This operation can consume significant memory, so check - // for situations where we need to discard the type cache. - this._handleMemoryHighUsage(); - } - } + // Add file system rename. + editActions?.fileOperations.push({ + kind: 'rename', + oldFilePath: moduleInfo.filePath, + newFilePath: moduleInfo.newFilePath, + }); - // Make sure to include declarations regardless where they are defined - // if includeDeclaration is set. - if (includeDeclaration) { - for (const decl of referencesResult.declarations) { - throwIfCancellationRequested(token); + if (isStubFile(moduleInfo.filePath)) { + const matchingFiles = this._importResolver.getSourceFilesFromStub( + moduleInfo.filePath, + this._configOptions.findExecEnvironment(filePath), + /* mapCompiled */ false + ); - if (referencesResult.locations.some((l) => l.path === decl.path)) { - // Already included. - continue; + for (const matchingFile of matchingFiles) { + const matchingFileInfo = RenameModuleProvider.getRenameModulePathInfo(matchingFile, newName); + if (matchingFileInfo) { + editActions?.fileOperations.push({ + kind: 'rename', + oldFilePath: matchingFileInfo.filePath, + newFilePath: matchingFileInfo.newFilePath, + }); } + } + } - const declFileInfo = this.getSourceFileInfo(decl.path); - if (!declFileInfo) { - // The file the declaration belongs to doesn't belong to the program. - continue; - } + return editActions; + } - const tempResult = new ReferencesResult( - referencesResult.requiresGlobalSearch, - referencesResult.nodeAtOffset, - referencesResult.symbolNames, - referencesResult.declarations, - referencesResult.useCase - ); + const renameMode = this._getRenameSymbolMode(sourceFileInfo, referencesResult, isDefaultWorkspace); + switch (renameMode) { + case 'singleFileMode': + sourceFileInfo.sourceFile.addReferences(referencesResult, true, this._evaluator!, token); + break; - declFileInfo.sourceFile.addReferences(tempResult, includeDeclaration, this._evaluator!, token); - for (const loc of tempResult.locations) { - // Include declarations only. And throw away any references - if (loc.path === decl.path && doesRangeContain(decl.range, loc.range)) { - referencesResult.addLocations(loc); + case 'multiFileMode': { + for (const curSourceFileInfo of this._sourceFileList) { + // Make sure we only add user code to the references to prevent us + // from accidentally changing third party library or type stub. + if (isUserCode(curSourceFileInfo)) { + // Make sure searching symbol name exists in the file. + const content = curSourceFileInfo.sourceFile.getFileContent() ?? ''; + if (!referencesResult.symbolNames.some((s) => content.search(s) >= 0)) { + continue; } + + this._bindFile(curSourceFileInfo, content); + curSourceFileInfo.sourceFile.addReferences(referencesResult, true, this._evaluator!, token); } + + // This operation can consume significant memory, so check + // for situations where we need to discard the type cache. + this._handleMemoryHighUsage(); } + break; } - } else { - sourceFileInfo.sourceFile.addReferences(referencesResult, includeDeclaration, this._evaluator!, token); + + case 'none': + // Rename is not allowed. + // ex) rename symbols from libraries. + return undefined; + + default: + assertNever(renameMode); } + + const edits: FileEditAction[] = []; + referencesResult.locations.forEach((loc) => { + edits.push({ + filePath: loc.path, + range: loc.range, + replacementText: newName, + }); + }); + + return { edits, fileOperations: [] }; }); } - getFileIndex(filePath: string, options: IndexOptions, token: CancellationToken): IndexResults | undefined { - if (options.indexingForAutoImportMode) { - // Memory optimization. We only want to hold onto symbols - // usable outside when importSymbolsOnly is on. - const name = stripFileExtension(getFileName(filePath)); - if (isPrivateOrProtectedName(name)) { - return undefined; - } + performQuickAction( + filePath: string, + command: string, + args: any[], + token: CancellationToken + ): TextEditAction[] | undefined { + const sourceFileInfo = this.getSourceFileInfo(filePath); + if (!sourceFileInfo) { + return undefined; } - this._handleMemoryHighUsage(); + this._bindFile(sourceFileInfo); - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } + return sourceFileInfo.sourceFile.performQuickAction(command, args, token); + } - const content = sourceFileInfo.sourceFile.getFileContent() ?? ''; - if ( - options.indexingForAutoImportMode && - !options.includeAllSymbols && - !sourceFileInfo.sourceFile.isStubFile() && - !sourceFileInfo.sourceFile.isThirdPartyPyTypedPresent() - ) { - // Perf optimization. if py file doesn't contain __all__ - // No need to parse and bind. - if (content.indexOf('__all__') < 0) { - return undefined; - } - } + // Returns a value from 0 to 1 (or more) indicating how "full" the cache is + // relative to some predetermined high-water mark. We'll compute this value + // based on two easy-to-compute metrics: the number of entries in the type + // cache and the number of parsed files. + getCacheUsage() { + const typeCacheEntryCount = this._evaluator!.getTypeCacheEntryCount(); + const entryCountRatio = typeCacheEntryCount / 750000; + const fileCountRatio = this._parsedFileCount / 1000; - this._bindFile(sourceFileInfo, content); - return sourceFileInfo.sourceFile.index(options, token); - }); + return Math.max(entryCountRatio, fileCountRatio); } - addSymbolsForDocument(filePath: string, symbolList: DocumentSymbol[], token: CancellationToken) { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (sourceFileInfo) { - if (!sourceFileInfo.sourceFile.getCachedIndexResults()) { - // If we already have cached index for this file, no need to bind this file. - this._bindFile(sourceFileInfo); - } - - sourceFileInfo.sourceFile.addHierarchicalSymbolsForDocument(symbolList, token); - } - }); + // Discards any cached information associated with this program. + emptyCache() { + this._createNewEvaluator(); + this._discardCachedParseResults(); + this._parsedFileCount = 0; + Extensions.getProgramExtensions(this.rootPath).forEach((e) => (e.clearCache ? e.clearCache() : null)); } - reportSymbolsForWorkspace(query: string, reporter: WorkspaceSymbolCallback, token: CancellationToken) { - this._runEvaluatorWithCancellationToken(token, () => { - // Don't do a search if the query is empty. We'll return - // too many results in this case. - if (!query) { - return; - } + test_createSourceMapper(execEnv: ExecutionEnvironment, from?: SourceFileInfo) { + return this._createSourceMapper(execEnv, CancellationToken.None, /* from */ from, /* mapCompiled */ false); + } - // "Workspace symbols" searches symbols only from user code. - for (const sourceFileInfo of this._sourceFileList) { - if (!isUserCode(sourceFileInfo)) { - continue; - } + private _getRenameSymbolMode( + sourceFileInfo: SourceFileInfo, + referencesResult: ReferencesResult, + isDefaultWorkspace: boolean + ) { + // We have 2 different cases + // Single file mode. + // 1. rename on default workspace (ex, standalone file mode). + // 2. rename local symbols. + // 3. rename symbols defined in the non user open file. + // + // and Multi file mode. + // 1. rename public symbols defined in user files on regular workspace (ex, open folder mode). + const userFile = isUserCode(sourceFileInfo); + if ( + isDefaultWorkspace || + (userFile && !referencesResult.requiresGlobalSearch) || + (!userFile && + sourceFileInfo.isOpenByClient && + referencesResult.declarations.every((d) => this.getSourceFileInfo(d.path) === sourceFileInfo)) + ) { + return 'singleFileMode'; + } - if (!sourceFileInfo.sourceFile.getCachedIndexResults()) { - // If we already have cached index for this file, no need to bind this file. - this._bindFile(sourceFileInfo); - } + if (referencesResult.declarations.every((d) => isUserCode(this.getSourceFileInfo(d.path)))) { + return 'multiFileMode'; + } - const symbolList = sourceFileInfo.sourceFile.getSymbolsForDocument(query, token); - if (symbolList.length > 0) { - reporter(symbolList); - } + // Rename is not allowed. + // ex) rename symbols from libraries. + return 'none'; + } - // This operation can consume significant memory, so check - // for situations where we need to discard the type cache. - this._handleMemoryHighUsage(); - } - }); + private _supportRenameModule(declarations: Declaration[], isDefaultWorkspace: boolean) { + // Rename module is not supported for standalone file and all decls must be on a user file. + return !isDefaultWorkspace && declarations.every((d) => isUserCode(this.getSourceFileInfo(d.path))); } - async getCompletionsForPosition( + private _getReferenceResult( + sourceFileInfo: SourceFileInfo, filePath: string, position: Position, - workspacePath: string, - options: CompletionOptions, - nameMap: AbbreviationMap | undefined, - libraryMap: Map | undefined, + allowModuleRename: boolean, token: CancellationToken - ): Promise { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { + ) { + const execEnv = this._configOptions.findExecEnvironment(filePath); + const referencesResult = this._getDeclarationForPosition( + sourceFileInfo, + position, + DocumentSymbolCollectorUseCase.Rename, + this._createSourceMapper(execEnv, token), + token + ); + + if (!referencesResult) { return undefined; } - let sourceMapper: SourceMapper | undefined; - const completionResult = this._logTracker.log( - `completion at ${filePath}:${position.line}:${position.character}`, - (ls) => { - const result = this._runEvaluatorWithCancellationToken(token, () => { - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - sourceMapper = this._createSourceMapper(execEnv, token, sourceFileInfo, /* mapCompiled */ true); - return sourceFileInfo.sourceFile.getCompletionsForPosition( - position, - workspacePath, - this._configOptions, - this._importResolver, - this._lookUpImport, - this._evaluator!, - options, - sourceMapper, - nameMap, - libraryMap, - () => - this._buildModuleSymbolsMap( - sourceFileInfo, - libraryMap, - options.includeUserSymbolsInAutoImport, - token - ), - token - ); - }); - ls.add(`found ${result?.completionMap.size ?? 'null'} items`); - return result; - } - ); - - const completionResultsList: CompletionResultsList = { - completionList: CompletionList.create(completionResult?.completionMap.toArray()), - memberAccessInfo: completionResult?.memberAccessInfo, - autoImportInfo: completionResult?.autoImportInfo, - extensionInfo: completionResult?.extensionInfo, - }; + if (allowModuleRename && referencesResult.containsOnlyImportDecls) { + return referencesResult; + } - const parseResults = sourceFileInfo.sourceFile.getParseResults(); - if (parseResults?.parseTree && parseResults?.text) { - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); - if (offset !== undefined && sourceMapper) { - await Promise.all( - Extensions.getProgramExtensions(parseResults.parseTree).map((e) => - e.completionListExtension?.updateCompletionResults( - this.evaluator!, - sourceMapper!, - options, - completionResultsList, - parseResults, - offset, - this._configOptions.functionSignatureDisplay, - token - ) - ) - ); - } + if (referencesResult.nonImportDeclarations.length === 0) { + // There is no symbol we can rename. + return undefined; } - return completionResultsList; + // Use declarations that doesn't contain import decls. + return new ReferencesResult( + referencesResult.requiresGlobalSearch, + referencesResult.nodeAtOffset, + referencesResult.symbolNames, + referencesResult.nonImportDeclarations, + referencesResult.useCase + ); } - resolveCompletionItem( - filePath: string, - completionItem: CompletionItem, - options: CompletionOptions, - nameMap: AbbreviationMap | undefined, - libraryMap: Map | undefined, - token: CancellationToken + private _getDeclarationForPosition( + sourceFileInfo: SourceFileInfo, + position: Position, + useCase: DocumentSymbolCollectorUseCase, + sourceMapper: SourceMapper, + token: CancellationToken, + reporter?: ReferenceCallback ) { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return; - } - - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - sourceFileInfo.sourceFile.resolveCompletionItem( - this._configOptions, - this._importResolver, - this._lookUpImport, - this._evaluator!, - options, - this._createSourceMapper(execEnv, token, sourceFileInfo, /* mapCompiled */ true), - nameMap, - libraryMap, - () => - this._buildModuleSymbolsMap( - sourceFileInfo, - libraryMap, - options.includeUserSymbolsInAutoImport, - token - ), - completionItem, - token - ); - }); - } - - renameModule(path: string, newPath: string, token: CancellationToken): FileEditActions | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - if (isFile(this.fileSystem, path)) { - const fileInfo = this.getSourceFileInfo(path); - if (!fileInfo) { - return undefined; - } - } - - const renameModuleProvider = RenameModuleProvider.createForModule( - this._importResolver, - this._configOptions, - this._evaluator!, - path, - newPath, - token - ); - if (!renameModuleProvider) { - return undefined; - } + // If we have no completed analysis job, there's nothing to do. + const parseResults = sourceFileInfo.sourceFile.getParseResults(); + if (!parseResults) { + return undefined; + } - this._processModuleReferences(renameModuleProvider, renameModuleProvider.lastModuleName, path); - return { edits: renameModuleProvider.getEdits(), fileOperations: [] }; - }); + return ReferencesProvider.getDeclarationForPosition( + sourceMapper, + parseResults, + sourceFileInfo.sourceFile.getFilePath(), + position, + this._evaluator!, + reporter, + useCase, + token, + Array.from(collectImportedByFiles(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile) + ); } - moveSymbolAtPosition( - filePath: string, - newFilePath: string, - position: Position, - options: { importFormat: ImportFormat }, - token: CancellationToken - ): FileEditActions | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileExt = getFileExtension(filePath); - const destFileExt = getFileExtension(newFilePath); - if (sourceFileExt.toLowerCase() !== destFileExt.toLowerCase()) { - // Don't allow moving a symbol from py to pyi or vice versa. - return undefined; - } - - const fileInfo = this.getSourceFileInfo(filePath); - if (!fileInfo) { - return undefined; - } - - const newFileInfo = this.getBoundSourceFileInfo(newFilePath); - if (fileInfo === newFileInfo) { - // Can't move symbol to the same file. - return undefined; - } - - this._bindFile(fileInfo); - const parseResults = fileInfo.sourceFile.getParseResults(); - if (!parseResults) { - return undefined; - } - - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); - if (offset === undefined) { - return undefined; - } - - const node = findNodeByOffset(parseResults.parseTree, offset); - if (node === undefined) { - return undefined; - } - - // If this isn't a name node, there are no references to be found. - if ( - node.nodeType !== ParseNodeType.Name || - !RenameModuleProvider.canMoveSymbol(this._configOptions, this._evaluator!, node) - ) { - return undefined; - } - - // We will try to - // 1. Find symbol to move. - // 2. Update all references to the symbol to new location. - // 3. Remove the existing symbol. - // 4. Insert the symbol to the destination module. - // 5. Insert imports required for the symbol moved to the destination module. - // 6. Remove import no longer needed from the original module. - // - // Here all changes are done to edits, no features in LS will apply changes to - // program directly. All modification is done through LSP by a edit request so - // things like undo or edit stacks UI works. - - // 1. Find symbol to move. - const execEnv = this._configOptions.findExecEnvironment(filePath); - const declarations = DocumentSymbolCollector.getDeclarationsForNode( - node, - this._evaluator!, - /* resolveLocalNames */ false, - DocumentSymbolCollectorUseCase.Rename, - token, - this._createSourceMapper(execEnv, token, fileInfo) - ); - - const renameModuleProvider = RenameModuleProvider.createForSymbol( - this._importResolver, - this._configOptions, - this._evaluator!, - filePath, - newFilePath, - declarations, - token - ); - if (!renameModuleProvider) { - return undefined; - } - - // 2. Update affected references. - this._processModuleReferences(renameModuleProvider, node.value, filePath); - - // 3. Remove existing symbols. - const sourceDecl = renameModuleProvider.declarations.find( - (d) => d.node && getFileExtension(d.path) === sourceFileExt - ); - if (!sourceDecl) { - // Can't find symbol we can move. - return undefined; + private _processModuleReferences( + renameModuleProvider: RenameModuleProvider, + filteringText: string, + currentFilePath: string + ) { + // _sourceFileList contains every user files that match "include" pattern including + // py file even if corresponding pyi exists. + for (const currentFileInfo of this._sourceFileList) { + // Make sure we only touch user code to prevent us + // from accidentally changing third party library or type stub. + if (!isUserCode(currentFileInfo)) { + continue; } - const symbolRange = RenameModuleProvider.getSymbolTextRange(parseResults, sourceDecl); - const importAdder = new ImportAdder(this._configOptions, this._importResolver, this._evaluator!); - const collectedImports = importAdder.collectImportsForSymbolsUsed(parseResults, symbolRange, token); - - let insertionPoint: number | undefined = 0; - let insertionIndentation = 0; - - const newFileParseResults = newFileInfo?.sourceFile.getParseResults(); - if (newFileParseResults) { - const insertBefore = renameModuleProvider.tryGetFirstSymbolUsage(newFileParseResults); - insertionPoint = getInsertionPointForSymbolUnderModule( - this._evaluator!, - newFileParseResults, - node.value, - { - symbolDeclToIgnore: sourceDecl.path, - insertBefore, - } - ); - if (insertionPoint === undefined) { - // No place to insert the symbol. - return undefined; - } - - insertionIndentation = getModuleStatementIndentation(newFileParseResults); + // If module name isn't mentioned in the current file, skip the file + // except the file that got actually renamed/moved. + // The file that got moved might have relative import paths we need to update. + const filePath = currentFileInfo.sourceFile.getFilePath(); + const content = currentFileInfo.sourceFile.getFileContent() ?? ''; + if (filePath !== currentFilePath && content.indexOf(filteringText) < 0) { + continue; } - const reindentResult = reindentSpan(parseResults, symbolRange, insertionIndentation); - const fullRange = RenameModuleProvider.getSymbolFullStatementTextRange(parseResults, sourceDecl); - - renameModuleProvider.textEditTracker.addEdit( - filePath, - convertTextRangeToRange( - TextRange.combine([reindentResult.originalSpan, fullRange])!, - parseResults.tokenizerOutput.lines - ), - '' - ); - - // 4. Add the symbol to the destination file. - const fileOperations: FileOperations[] = []; - let codeSnippetToInsert = reindentResult.text; - if (newFileParseResults) { - const range = convertTextRangeToRange( - { start: insertionPoint, length: 0 }, - newFileParseResults.tokenizerOutput.lines - ); - - // If we are adding at the end of line (ex, end of a file), - // add new lines. - const newLinesToAdd = _getNumberOfBlankLinesToInsert(newFileParseResults, sourceDecl, range.end); - codeSnippetToInsert = '\n'.repeat(newLinesToAdd) + codeSnippetToInsert; - - renameModuleProvider.textEditTracker.addEdit(newFilePath, range, codeSnippetToInsert); - } else { - fileOperations.push({ kind: 'create', filePath: newFilePath }); - renameModuleProvider.textEditTracker.addEdit(newFilePath, getEmptyRange(), codeSnippetToInsert); + this._bindFile(currentFileInfo, content); + const parseResult = currentFileInfo.sourceFile.getParseResults(); + if (!parseResult) { + continue; } - // 5. Insert imports required for the symbol moved to the destination module. - // - // Since step 5 and 6 can create nested edits, we clone the program and apply all changes to re-calculate - // edits we need to apply to the destination file. The same workflow as `fix all` but done in program level - // not service level. - const cloned = this.clone(); - - let edits = renameModuleProvider.getEdits(); - - const textAfterSymbolAdded = applyTextEditsToString( - edits.filter((v) => v.filePath === newFilePath), - newFileParseResults?.tokenizerOutput.lines ?? new TextRangeCollection([]), - newFileInfo?.sourceFile.getFileContent() ?? '' - ); - - _updateFileContent(cloned, newFilePath, textAfterSymbolAdded); - - const textAfterImportsAdded = _tryGetTextAfterImportsAdded( - cloned, - newFilePath, - collectedImports, - insertionPoint, - token - ); - - edits = _updateFileEditActions( - edits, - newFilePath, - newFileParseResults, - textAfterSymbolAdded, - textAfterImportsAdded - ); - - // 6. Remove imports no longer required from original module. - const textAfterSymbolRemoved = applyTextEditsToString( - edits.filter((v) => v.filePath === filePath), - parseResults.tokenizerOutput.lines, - fileInfo.sourceFile.getFileContent()! - ); - - _updateFileContent(cloned, filePath, textAfterSymbolRemoved); - - const textAfterUnusedImportsRemoved = _tryGetTextAfterUnusedImportsRemoved( - cloned, - filePath, - collectedImports, - 0, - token - ); - - edits = _updateFileEditActions( - edits, - filePath, - parseResults, - textAfterSymbolRemoved, - textAfterUnusedImportsRemoved - ); - - cloned.dispose(); - - return { - edits, - fileOperations, - }; - - function _updateFileEditActions( - edits: FileEditAction[], - filePath: string, - parseResults: ParseResults | undefined, - oldText: string, - newText: string | undefined - ) { - if (newText === undefined || oldText === newText) { - return edits; - } - - // There were nested edits. Replace whole file. - edits = edits.filter((v) => v.filePath !== filePath); - edits.push({ - filePath, - range: parseResults - ? convertTextRangeToRange(parseResults.parseTree, parseResults.tokenizerOutput.lines) - : getEmptyRange(), - replacementText: newText, - }); + renameModuleProvider.renameReferences(parseResult); - return edits; - } + // This operation can consume significant memory, so check + // for situations where we need to discard the type cache. + this._handleMemoryHighUsage(); + } + } - function _tryGetTextAfterImportsAdded( - cloned: Program, - filePath: string, - importData: ImportData, - insertionPoint: number, - token: CancellationToken - ) { - const sourceFile = cloned.getBoundSourceFile(filePath); - const parseResults = sourceFile?.getParseResults(); - if (!parseResults) { - return undefined; - } + private _handleMemoryHighUsage() { + const cacheUsage = this._cacheManager.getCacheUsage(); - const insertAddEdits = importAdder.applyImports( - importData, - filePath, - parseResults, - insertionPoint, - options.importFormat, - token - ); + // If the total cache has exceeded 75%, determine whether we should empty + // the cache. + if (cacheUsage > 0.75) { + const usedHeapRatio = this._cacheManager.getUsedHeapRatio( + this._configOptions.verboseOutput ? this._console : undefined + ); - return applyTextEditsToString( - insertAddEdits, - parseResults.tokenizerOutput.lines, - sourceFile!.getFileContent()! - ); + // The type cache uses a Map, which has an absolute limit of 2^24 entries + // before it will fail. If we cross the 95% mark, we'll empty the cache. + const absoluteMaxCacheEntryCount = (1 << 24) * 0.9; + const typeCacheEntryCount = this._evaluator!.getTypeCacheEntryCount(); + + // If we use more than 90% of the heap size limit, avoid a crash + // by emptying the type cache. + if (typeCacheEntryCount > absoluteMaxCacheEntryCount || usedHeapRatio > 0.9) { + this._cacheManager.emptyCache(this._console); } + } + } - function _tryGetTextAfterUnusedImportsRemoved( - cloned: Program, - filePath: string, - importData: ImportData, - attempt: number, - token: CancellationToken - ): string | undefined { - throwIfCancellationRequested(token); + // Discards all cached parse results and file contents to free up memory. + // It does not discard cached index results or diagnostics for files. + private _discardCachedParseResults() { + for (const sourceFileInfo of this._sourceFileList) { + sourceFileInfo.sourceFile.dropParseAndBindInfo(); + } + } - cloned.analyzeFile(filePath, token); + // Wrapper function that should be used when invoking this._evaluator + // with a cancellation token. It handles cancellation exceptions and + // any other unexpected exceptions. + private _runEvaluatorWithCancellationToken(token: CancellationToken | undefined, callback: () => T): T { + try { + if (token) { + return this._evaluator!.runWithCancellationToken(token, callback); + } else { + return callback(); + } + } catch (e: any) { + // An unexpected exception occurred, potentially leaving the current evaluator + // in an inconsistent state. Discard it and replace it with a fresh one. It is + // Cancellation exceptions are known to handle this correctly. + if (!OperationCanceledException.is(e)) { + this._createNewEvaluator(); + } + throw e; + } + } - const sourceFile = cloned.getBoundSourceFile(filePath); - const parseResults = sourceFile?.getParseResults(); - if (!parseResults) { - return undefined; - } + // Returns a list of empty file diagnostic entries for the files + // that have been removed. This is needed to clear out the + // errors for files that have been deleted or closed. + private _removeUnneededFiles(): FileDiagnostics[] { + const fileDiagnostics: FileDiagnostics[] = []; - const tracker = new TextEditTracker(); - for (const diagnostic of cloned - .getDiagnosticsForRange( - filePath, - convertTextRangeToRange(parseResults.parseTree, parseResults.tokenizerOutput.lines) - ) - .filter( - (d) => - d.category === DiagnosticCategory.UnusedCode && - d.getActions()?.some((a) => a.action === Commands.unusedImport) - )) { - const nameNode = findNodeByPosition( - parseResults.parseTree, - diagnostic.range.start, - parseResults.tokenizerOutput.lines - ); + // If a file is no longer tracked, opened or shadowed, it can + // be removed from the program. + for (let i = 0; i < this._sourceFileList.length; ) { + const fileInfo = this._sourceFileList[i]; + if (!this._isFileNeeded(fileInfo)) { + fileDiagnostics.push({ + filePath: fileInfo.sourceFile.getFilePath(), + version: fileInfo.sourceFile.getClientVersion(), + diagnostics: [], + }); - if (nameNode?.nodeType !== ParseNodeType.Name) { - continue; + fileInfo.sourceFile.prepareForClose(); + this._removeSourceFileFromListAndMap(fileInfo.sourceFile.getFilePath(), i); + + // Unlink any imports and remove them from the list if + // they are no longer referenced. + fileInfo.imports.forEach((importedFile) => { + const indexToRemove = importedFile.importedBy.findIndex((fi) => fi === fileInfo); + if (indexToRemove < 0) { + return; } - // decl is synthesized. there is no node associated with the decl. - // ex) import a or import a.b - const dottedName1 = - nameNode.parent?.nodeType === ParseNodeType.ModuleName ? nameNode.parent.nameParts : [nameNode]; + importedFile.importedBy.splice(indexToRemove, 1); - for (const [decl, names] of importData.declarations) { - if (decl.node) { - if (TextRange.containsRange(decl.node, nameNode)) { - tracker.removeNodes({ node: nameNode, parseResults: parseResults }); - break; - } - } + // See if we need to remove the imported file because it + // is no longer needed. If its index is >= i, it will be + // removed when we get to it. + if (!this._isFileNeeded(importedFile)) { + const indexToRemove = this._sourceFileList.findIndex((fi) => fi === importedFile); + if (indexToRemove >= 0 && indexToRemove < i) { + fileDiagnostics.push({ + filePath: importedFile.sourceFile.getFilePath(), + version: importedFile.sourceFile.getClientVersion(), + diagnostics: [], + }); - const dottedName2 = getDottedName(getDottedNameWithGivenNodeAsLastName(names[0])); - if (dottedName2 && arrayEquals(dottedName1, dottedName2, (e1, e2) => e1.value === e2.value)) { - tracker.removeNodes({ node: nameNode, parseResults: parseResults }); - break; + importedFile.sourceFile.prepareForClose(); + this._removeSourceFileFromListAndMap(importedFile.sourceFile.getFilePath(), indexToRemove); + i--; } } - } - - const oldText = sourceFile!.getFileContent()!; - const newText = applyTextEditsToString( - tracker.getEdits(token).filter((v) => v.filePath === filePath), - parseResults.tokenizerOutput.lines, - oldText - ); + }); - // We will attempt to remove unused imports multiple times since removing 1 unused import - // could make another import unused. This is due to how we calculate which import is not used. - // ex) import os, os.path, os.path.xxx - // `os.path` and `os.path.xxx` will be marked as used due to `import os`. - // once `os` is removed `os.path` will be marked as unused and so on. - // We will attempt to remove those chained unused imports up to 10 chain. - if (attempt > 10 || oldText === newText) { - return newText; + // Remove any shadowed files corresponding to this file. + fileInfo.shadowedBy.forEach((shadowedFile) => { + shadowedFile.shadows = shadowedFile.shadows.filter((f) => f !== fileInfo); + }); + fileInfo.shadowedBy = []; + } else { + // If we're showing the user errors only for open files, clear + // out the errors for the now-closed file. + if (!this._shouldCheckFile(fileInfo) && fileInfo.diagnosticsVersion !== undefined) { + fileDiagnostics.push({ + filePath: fileInfo.sourceFile.getFilePath(), + version: fileInfo.sourceFile.getClientVersion(), + diagnostics: [], + }); + fileInfo.diagnosticsVersion = undefined; } - _updateFileContent(cloned, filePath, newText); - return _tryGetTextAfterUnusedImportsRemoved(cloned, filePath, importData, attempt + 1, token); + i++; } - }); + } - function _updateFileContent(cloned: Program, filePath: string, text: string) { - const info = cloned.getSourceFileInfo(filePath); - const version = info ? (info.sourceFile.getClientVersion() ?? 0) + 1 : 0; - const chainedFilePath = info ? info.chainedSourceFile?.sourceFile.getFilePath() : undefined; - const ipythonMode = info ? info.sourceFile.getIPythonMode() : IPythonMode.None; - const isTracked = info ? info.isTracked : true; - const realFilePath = info ? info.sourceFile.getRealFilePath() : filePath; + return fileDiagnostics; + } - cloned.setFileOpened(filePath, version, [{ text }], { - chainedFilePath, - ipythonMode, - isTracked, - realFilePath, - }); + private _isFileNeeded(fileInfo: SourceFileInfo) { + if (fileInfo.sourceFile.isFileDeleted()) { + return false; } - function _getNumberOfBlankLinesToInsert(parseResults: ParseResults, decl: Declaration, position: Position) { - if (position.line === 0 && position.character === 0) { - return 0; - } + if (fileInfo.isTracked || fileInfo.isOpenByClient) { + return true; + } - let previousStatement: StatementNode | undefined; - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); - if (offset && parseResults.parseTree.statements.length > 0) { - previousStatement = parseResults.parseTree.statements.reduce((prev, curr) => - offset < curr.start ? prev : curr - ); - } + if (fileInfo.shadows.length > 0) { + return true; + } - // This basically try to add some blank lines after the last line with text. - let linesToAdd = 0; - if (previousStatement) { - if (isVariableDeclaration(decl)) { - switch (previousStatement.nodeType) { - case ParseNodeType.StatementList: - // Small statement such as call, assignment, etc. - linesToAdd = 0; - break; - case ParseNodeType.Class: - case ParseNodeType.Function: - linesToAdd = 2; - break; - default: - // any other statement such as if, while, etc. we will add 1 blank line. - linesToAdd = 1; - } - } else { - linesToAdd = 2; - } - } + if (fileInfo.importedBy.length === 0) { + return false; + } - // If the position is not at the beginning of the line, we need to add 1 more '\n' - // to start from blank line. - linesToAdd += position.character !== 0 ? 1 : 0; + // It's possible for a cycle of files to be imported + // by a tracked file but then abandoned. The import cycle + // will keep the entire group "alive" if we don't detect + // the condition and garbage collect them. + return this._isImportNeededRecursive(fileInfo, new Set()); + } - // If there are already blank lines, we only add the difference. - const desiredBlankLines = linesToAdd; - const startingLine = position.character !== 0 ? position.line : position.line - 1; - for (let i = 0; i < desiredBlankLines; i++) { - const currentLine = startingLine - i; - if (currentLine < 0 || !isBlankLine(parseResults, currentLine)) { - break; - } + private _isImportNeededRecursive(fileInfo: SourceFileInfo, recursionSet: Set) { + if (fileInfo.isTracked || fileInfo.isOpenByClient || fileInfo.shadows.length > 0) { + return true; + } + + const filePath = normalizePathCase(this.fileSystem, fileInfo.sourceFile.getFilePath()); + + // Avoid infinite recursion. + if (recursionSet.has(filePath)) { + return false; + } - linesToAdd--; - } + recursionSet.add(filePath); - return linesToAdd; + for (const importerInfo of fileInfo.importedBy) { + if (this._isImportNeededRecursive(importerInfo, recursionSet)) { + return true; + } } + + return false; } - clone() { - const program = new Program( + private _createSourceMapper( + execEnv: ExecutionEnvironment, + token: CancellationToken, + from?: SourceFileInfo, + mapCompiled?: boolean, + preferStubs?: boolean + ) { + const sourceMapper = new SourceMapper( this._importResolver, - this._configOptions, - this._console, - new LogTracker(this._console, 'Cloned') - ); - - // Cloned program will use whatever user files the program currently has. - const userFiles = this.getUserFiles(); - program.setTrackedFiles(userFiles.map((i) => i.sourceFile.getFilePath())); - program.markAllFilesDirty(true); + execEnv, + this._evaluator!, + (stubFilePath: string, implFilePath: string) => { + let stubFileInfo = this.getSourceFileInfo(stubFilePath); + if (!stubFileInfo) { + // Special case for import statement like "import X.Y". The SourceFile + // for X might not be in memory since import `X.Y` only brings in Y. + stubFileInfo = this.addInterimFile(stubFilePath); + } - // Make sure we keep editor content (open file) which could be different than one in the file system. - for (const fileInfo of this.getOpened()) { - const version = fileInfo.sourceFile.getClientVersion(); - if (version === undefined) { - continue; - } + this._addShadowedFile(stubFileInfo, implFilePath); + return this.getBoundSourceFile(implFilePath); + }, + (f) => { + let fileInfo = this.getBoundSourceFileInfo(f); + if (!fileInfo) { + // Special case for import statement like "import X.Y". The SourceFile + // for X might not be in memory since import `X.Y` only brings in Y. + fileInfo = this.addInterimFile(f); - program.setFileOpened( - fileInfo.sourceFile.getFilePath(), - version, - [{ text: fileInfo.sourceFile.getOpenFileContents()! }], - { - chainedFilePath: fileInfo.chainedSourceFile?.sourceFile.getFilePath(), - ipythonMode: fileInfo.sourceFile.getIPythonMode(), - isTracked: fileInfo.isTracked, - realFilePath: fileInfo.sourceFile.getRealFilePath(), + // Even though this file is not referenced by anything, make sure + // we have a parse tree for the doc string. + this._parseFile(fileInfo, /* content */ undefined, /* force */ true); } - ); - } - return program; + return fileInfo; + }, + mapCompiled ?? false, + preferStubs ?? false, + from, + token + ); + return sourceMapper; } - canRenameSymbolAtPosition( - filePath: string, - position: Position, - isDefaultWorkspace: boolean, - allowModuleRename: boolean, - token: CancellationToken - ): { range: Range; declarations: Declaration[] } | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } + private _isImportAllowed(importer: SourceFileInfo, importResult: ImportResult, isImportStubFile: boolean): boolean { + // Don't import native libs. We don't want to track these files, + // and we definitely don't want to attempt to parse them. + if (importResult.isNativeLib) { + return false; + } - this._bindFile(sourceFileInfo); - const referencesResult = this._getReferenceResult( - sourceFileInfo, - filePath, - position, - allowModuleRename, - token - ); - if (!referencesResult) { - return undefined; - } + let thirdPartyImportAllowed = + this._configOptions.useLibraryCodeForTypes || + (importResult.importType === ImportType.ThirdParty && !!importResult.pyTypedInfo) || + (importResult.importType === ImportType.Local && importer.isThirdPartyPyTypedPresent); - if ( - referencesResult.containsOnlyImportDecls && - !this._supportRenameModule(referencesResult.declarations, isDefaultWorkspace) + if ( + importResult.importType === ImportType.ThirdParty || + (importer.isThirdPartyImport && importResult.importType === ImportType.Local) + ) { + if (this._allowedThirdPartyImports) { + if (importResult.isRelative) { + // If it's a relative import, we'll allow it because the + // importer was already deemed to be allowed. + thirdPartyImportAllowed = true; + } else if ( + this._allowedThirdPartyImports.some((importName: string) => { + // If this import name is the one that was explicitly + // allowed or is a child of that import name, + // it's considered allowed. + if (importResult.importName === importName) { + return true; + } + + if (importResult.importName.startsWith(importName + '.')) { + return true; + } + + return false; + }) + ) { + thirdPartyImportAllowed = true; + } + } else if (importer.isThirdPartyImport && this._configOptions.useLibraryCodeForTypes) { + // If the importing file is a third-party import, allow importing of + // additional third-party imports. This supports the case where the importer + // is in a py.typed library but is importing from another non-py.typed + // library. It also supports the case where someone explicitly opens a + // library source file in their editor. + thirdPartyImportAllowed = true; + } else if ( + importResult.isNamespacePackage && + importResult.filteredImplicitImports.some((implicitImport) => !!implicitImport.pyTypedInfo) ) { - return undefined; + // Handle the case where the import targets a namespace package, and a + // submodule contained within it has a py.typed marker. + thirdPartyImportAllowed = true; } - const renameMode = this._getRenameSymbolMode(sourceFileInfo, referencesResult, isDefaultWorkspace); - if (renameMode === 'none') { - return undefined; + // Some libraries ship with stub files that import from non-stubs. Don't + // explore those. + // Don't explore any third-party files unless they're type stub files + // or we've been told explicitly that third-party imports are OK. + if (!isImportStubFile) { + return thirdPartyImportAllowed; } + } - // Return the range of the symbol. - const parseResult = sourceFileInfo.sourceFile.getParseResults()!; - return { - range: convertTextRangeToRange(referencesResult.nodeAtOffset, parseResult.tokenizerOutput.lines), - declarations: referencesResult.declarations, - }; - }); + return true; } - renameSymbolAtPosition( - filePath: string, - position: Position, - newName: string, - isDefaultWorkspace: boolean, - allowModuleRename: boolean, - token: CancellationToken - ): FileEditActions | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } + private _updateSourceFileImports(sourceFileInfo: SourceFileInfo, options: ConfigOptions): SourceFileInfo[] { + const filesAdded: SourceFileInfo[] = []; - this._bindFile(sourceFileInfo); + // Get the new list of imports and see if it changed from the last + // list of imports for this file. + const imports = sourceFileInfo.sourceFile.getImports(); - const referencesResult = this._getReferenceResult( - sourceFileInfo, - filePath, - position, - allowModuleRename, - token - ); - if (!referencesResult) { - return undefined; - } + // Create a local function that determines whether the import should + // be considered a "third-party import" and whether it is coming from + // a third-party package that claims to be typed. An import is + // considered third-party if it is external to the importer + // or is internal but the importer is itself a third-party package. + const getThirdPartyImportInfo = (importResult: ImportResult) => { + let isThirdPartyImport = false; + let isPyTypedPresent = false; - if (referencesResult.containsOnlyImportDecls) { - // All decls must be on a user file. - if (!this._supportRenameModule(referencesResult.declarations, isDefaultWorkspace)) { - return undefined; + if (importResult.importType === ImportType.ThirdParty) { + isThirdPartyImport = true; + if (importResult.pyTypedInfo) { + isPyTypedPresent = true; } - - const moduleInfo = RenameModuleProvider.getRenameModulePathInfo( - RenameModuleProvider.getRenameModulePath(referencesResult.declarations), - newName - ); - if (!moduleInfo) { - // Can't figure out module to rename. - return undefined; + } else if (sourceFileInfo.isThirdPartyImport && importResult.importType === ImportType.Local) { + isThirdPartyImport = true; + if (sourceFileInfo.isThirdPartyPyTypedPresent) { + isPyTypedPresent = true; } + } - const editActions = this.renameModule(moduleInfo.filePath, moduleInfo.newFilePath, token); + return { + isThirdPartyImport, + isPyTypedPresent, + }; + }; - // Add file system rename. - editActions?.fileOperations.push({ - kind: 'rename', - oldFilePath: moduleInfo.filePath, - newFilePath: moduleInfo.newFilePath, + // Create a map of unique imports, since imports can appear more than once. + const newImportPathMap = new Map(); + + // Add chained source file as import if it exists. + if (sourceFileInfo.chainedSourceFile) { + if (sourceFileInfo.chainedSourceFile.sourceFile.isFileDeleted()) { + sourceFileInfo.chainedSourceFile = undefined; + } else { + const filePath = sourceFileInfo.chainedSourceFile.sourceFile.getFilePath(); + newImportPathMap.set(normalizePathCase(this.fileSystem, filePath), { + path: filePath, + isTypeshedFile: false, + isThirdPartyImport: false, + isPyTypedPresent: false, }); + } + } - if (isStubFile(moduleInfo.filePath)) { - const matchingFiles = this._importResolver.getSourceFilesFromStub( - moduleInfo.filePath, - this._configOptions.findExecEnvironment(filePath), - /* mapCompiled */ false - ); - - for (const matchingFile of matchingFiles) { - const matchingFileInfo = RenameModuleProvider.getRenameModulePathInfo(matchingFile, newName); - if (matchingFileInfo) { - editActions?.fileOperations.push({ - kind: 'rename', - oldFilePath: matchingFileInfo.filePath, - newFilePath: matchingFileInfo.newFilePath, + imports.forEach((importResult) => { + if (importResult.isImportFound) { + if (this._isImportAllowed(sourceFileInfo, importResult, importResult.isStubFile)) { + if (importResult.resolvedPaths.length > 0) { + const filePath = importResult.resolvedPaths[importResult.resolvedPaths.length - 1]; + if (filePath) { + const thirdPartyTypeInfo = getThirdPartyImportInfo(importResult); + newImportPathMap.set(normalizePathCase(this.fileSystem, filePath), { + path: filePath, + isTypeshedFile: + !!importResult.isStdlibTypeshedFile || !!importResult.isThirdPartyTypeshedFile, + isThirdPartyImport: thirdPartyTypeInfo.isThirdPartyImport, + isPyTypedPresent: thirdPartyTypeInfo.isPyTypedPresent, }); } } } - return editActions; - } + importResult.filteredImplicitImports.forEach((implicitImport) => { + if (this._isImportAllowed(sourceFileInfo, importResult, implicitImport.isStubFile)) { + if (!implicitImport.isNativeLib) { + const thirdPartyTypeInfo = getThirdPartyImportInfo(importResult); + newImportPathMap.set(normalizePathCase(this.fileSystem, implicitImport.path), { + path: implicitImport.path, + isTypeshedFile: + !!importResult.isStdlibTypeshedFile || !!importResult.isThirdPartyTypeshedFile, + isThirdPartyImport: thirdPartyTypeInfo.isThirdPartyImport, + isPyTypedPresent: thirdPartyTypeInfo.isPyTypedPresent, + }); + } + } + }); - const renameMode = this._getRenameSymbolMode(sourceFileInfo, referencesResult, isDefaultWorkspace); - switch (renameMode) { - case 'singleFileMode': - sourceFileInfo.sourceFile.addReferences(referencesResult, true, this._evaluator!, token); - break; + // If the stub was found but the non-stub (source) file was not, dump + // the failure to the log for diagnostic purposes. + if (importResult.nonStubImportResult && !importResult.nonStubImportResult.isImportFound) { + // We'll skip this for imports from within stub files and imports that target + // stdlib typeshed stubs because many of these are known to not have + // associated source files, and we don't want to fill the logs with noise. + if (!sourceFileInfo.sourceFile.isStubFile() && !importResult.isStdlibTypeshedFile) { + if (options.verboseOutput) { + this._console.info( + `Could not resolve source for '${importResult.importName}' ` + + `in file '${sourceFileInfo.sourceFile.getFilePath()}'` + ); - case 'multiFileMode': { - for (const curSourceFileInfo of this._sourceFileList) { - // Make sure we only add user code to the references to prevent us - // from accidentally changing third party library or type stub. - if (isUserCode(curSourceFileInfo)) { - // Make sure searching symbol name exists in the file. - const content = curSourceFileInfo.sourceFile.getFileContent() ?? ''; - if (!referencesResult.symbolNames.some((s) => content.search(s) >= 0)) { - continue; + if (importResult.nonStubImportResult.importFailureInfo) { + importResult.nonStubImportResult.importFailureInfo.forEach((diag) => { + this._console.info(` ${diag}`); + }); } - - this._bindFile(curSourceFileInfo, content); - curSourceFileInfo.sourceFile.addReferences(referencesResult, true, this._evaluator!, token); } - - // This operation can consume significant memory, so check - // for situations where we need to discard the type cache. - this._handleMemoryHighUsage(); } - break; } + } else if (options.verboseOutput) { + this._console.info( + `Could not import '${importResult.importName}' ` + + `in file '${sourceFileInfo.sourceFile.getFilePath()}'` + ); + if (importResult.importFailureInfo) { + importResult.importFailureInfo.forEach((diag) => { + this._console.info(` ${diag}`); + }); + } + } + }); - case 'none': - // Rename is not allowed. - // ex) rename symbols from libraries. - return undefined; + const updatedImportMap = new Map(); + sourceFileInfo.imports.forEach((importInfo) => { + const oldFilePath = normalizePathCase(this.fileSystem, importInfo.sourceFile.getFilePath()); - default: - assertNever(renameMode); + // A previous import was removed. + if (!newImportPathMap.has(oldFilePath)) { + importInfo.importedBy = importInfo.importedBy.filter( + (fi) => + normalizePathCase(this.fileSystem, fi.sourceFile.getFilePath()) !== + normalizePathCase(this.fileSystem, sourceFileInfo.sourceFile.getFilePath()) + ); + } else { + updatedImportMap.set(oldFilePath, importInfo); } + }); - const edits: FileEditAction[] = []; - referencesResult.locations.forEach((loc) => { - edits.push({ - filePath: loc.path, - range: loc.range, - replacementText: newName, - }); - }); + // See if there are any new imports to be added. + newImportPathMap.forEach((importInfo, normalizedImportPath) => { + if (!updatedImportMap.has(normalizedImportPath)) { + // We found a new import to add. See if it's already part + // of the program. + let importedFileInfo = this.getSourceFileInfo(importInfo.path); + if (!importedFileInfo) { + const importName = this._getImportNameForFile(importInfo.path); + const sourceFile = new SourceFile( + this.fileSystem, + importInfo.path, + importName, + importInfo.isThirdPartyImport, + importInfo.isPyTypedPresent, + this._console, + this._logTracker + ); + importedFileInfo = { + sourceFile, + isTracked: false, + isOpenByClient: false, + isTypeshedFile: importInfo.isTypeshedFile, + isThirdPartyImport: importInfo.isThirdPartyImport, + isThirdPartyPyTypedPresent: importInfo.isPyTypedPresent, + diagnosticsVersion: undefined, + imports: [], + importedBy: [], + shadows: [], + shadowedBy: [], + }; - return { edits, fileOperations: [] }; + this._addToSourceFileListAndMap(importedFileInfo); + filesAdded.push(importedFileInfo); + } + + importedFileInfo.importedBy.push(sourceFileInfo); + updatedImportMap.set(normalizedImportPath, importedFileInfo); + } }); - } - performQuickAction( - filePath: string, - command: string, - args: any[], - token: CancellationToken - ): TextEditAction[] | undefined { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; + // Update the imports list. It should now map the set of imports + // specified by the source file. + sourceFileInfo.imports = []; + newImportPathMap.forEach((_, path) => { + if (this.getSourceFileInfo(path)) { + sourceFileInfo.imports.push(this.getSourceFileInfo(path)!); + } + }); + + // Resolve the builtins import for the file. This needs to be + // analyzed before the file can be analyzed. + sourceFileInfo.builtinsImport = undefined; + const builtinsImport = sourceFileInfo.sourceFile.getBuiltinsImport(); + if (builtinsImport && builtinsImport.isImportFound) { + const resolvedBuiltinsPath = builtinsImport.resolvedPaths[builtinsImport.resolvedPaths.length - 1]; + sourceFileInfo.builtinsImport = this.getSourceFileInfo(resolvedBuiltinsPath); } - this._bindFile(sourceFileInfo); + // Resolve the ipython display import for the file. This needs to be + // analyzed before the file can be analyzed. + sourceFileInfo.ipythonDisplayImport = undefined; + const ipythonDisplayImport = sourceFileInfo.sourceFile.getIPythonDisplayImport(); + if (ipythonDisplayImport && ipythonDisplayImport.isImportFound) { + const resolvedIPythonDisplayPath = + ipythonDisplayImport.resolvedPaths[ipythonDisplayImport.resolvedPaths.length - 1]; + sourceFileInfo.ipythonDisplayImport = this.getSourceFileInfo(resolvedIPythonDisplayPath); + } - return sourceFileInfo.sourceFile.performQuickAction(command, args, token); + return filesAdded; } - // Returns a value from 0 to 1 (or more) indicating how "full" the cache is - // relative to some predetermined high-water mark. We'll compute this value - // based on two easy-to-compute metrics: the number of entries in the type - // cache and the number of parsed files. - getCacheUsage() { - const typeCacheEntryCount = this._evaluator!.getTypeCacheEntryCount(); - const entryCountRatio = typeCacheEntryCount / 750000; - const fileCountRatio = this._parsedFileCount / 1000; - - return Math.max(entryCountRatio, fileCountRatio); + private _removeSourceFileFromListAndMap(filePath: string, indexToRemove: number) { + this._sourceFileMap.delete(normalizePathCase(this.fileSystem, filePath)); + this._sourceFileList.splice(indexToRemove, 1); } - // Discards any cached information associated with this program. - emptyCache() { - this._createNewEvaluator(); - this._discardCachedParseResults(); - this._parsedFileCount = 0; - Extensions.getProgramExtensions(this.rootPath).forEach((e) => (e.clearCache ? e.clearCache() : null)); - } + private _addToSourceFileListAndMap(fileInfo: SourceFileInfo) { + const filePath = normalizePathCase(this.fileSystem, fileInfo.sourceFile.getFilePath()); - test_createSourceMapper(execEnv: ExecutionEnvironment, from?: SourceFileInfo) { - return this._createSourceMapper(execEnv, CancellationToken.None, /* from */ from, /* mapCompiled */ false); + // We should never add a file with the same path twice. + assert(!this._sourceFileMap.has(filePath)); + + this._sourceFileList.push(fileInfo); + this._sourceFileMap.set(filePath, fileInfo); } - private _getRenameSymbolMode( - sourceFileInfo: SourceFileInfo, - referencesResult: ReferencesResult, - isDefaultWorkspace: boolean - ) { - // We have 2 different cases - // Single file mode. - // 1. rename on default workspace (ex, standalone file mode). - // 2. rename local symbols. - // 3. rename symbols defined in the non user open file. - // - // and Multi file mode. - // 1. rename public symbols defined in user files on regular workspace (ex, open folder mode). - const userFile = isUserCode(sourceFileInfo); - if ( - isDefaultWorkspace || - (userFile && !referencesResult.requiresGlobalSearch) || - (!userFile && - sourceFileInfo.isOpenByClient && - referencesResult.declarations.every((d) => this.getSourceFileInfo(d.path) === sourceFileInfo)) - ) { - return 'singleFileMode'; + private static _getPrintTypeFlags(configOptions: ConfigOptions): PrintTypeFlags { + let flags = PrintTypeFlags.None; + + if (configOptions.diagnosticRuleSet.printUnknownAsAny) { + flags |= PrintTypeFlags.PrintUnknownWithAny; + } + + if (configOptions.diagnosticRuleSet.omitConditionalConstraint) { + flags |= PrintTypeFlags.OmitConditionalConstraint; } - if (referencesResult.declarations.every((d) => isUserCode(this.getSourceFileInfo(d.path)))) { - return 'multiFileMode'; + if (configOptions.diagnosticRuleSet.omitTypeArgsIfUnknown) { + flags |= PrintTypeFlags.OmitTypeArgumentsIfUnknown; } - // Rename is not allowed. - // ex) rename symbols from libraries. - return 'none'; - } + if (configOptions.diagnosticRuleSet.omitUnannotatedParamType) { + flags |= PrintTypeFlags.OmitUnannotatedParamType; + } - private _supportRenameModule(declarations: Declaration[], isDefaultWorkspace: boolean) { - // Rename module is not supported for standalone file and all decls must be on a user file. - return !isDefaultWorkspace && declarations.every((d) => isUserCode(this.getSourceFileInfo(d.path))); + if (configOptions.diagnosticRuleSet.pep604Printing) { + flags |= PrintTypeFlags.PEP604; + } + + return flags; } - private _getReferenceResult( - sourceFileInfo: SourceFileInfo, - filePath: string, - position: Position, - allowModuleRename: boolean, - token: CancellationToken - ) { - const execEnv = this._configOptions.findExecEnvironment(filePath); - const referencesResult = this._getDeclarationForPosition( - sourceFileInfo, - position, - DocumentSymbolCollectorUseCase.Rename, - this._createSourceMapper(execEnv, token), - token + private _getImportNameForFile(filePath: string) { + // We allow illegal module names (e.g. names that include "-" in them) + // because we want a unique name for each module even if it cannot be + // imported through an "import" statement. It's important to have a + // unique name in case two modules declare types with the same local + // name. The type checker uses the fully-qualified (unique) module name + // to differentiate between such types. + const moduleNameAndType = this._importResolver.getModuleNameForImport( + filePath, + this._configOptions.getDefaultExecEnvironment(), + /* allowIllegalModuleName */ true ); + return moduleNameAndType.moduleName; + } - if (!referencesResult) { - return undefined; + // A "shadowed" file is a python source file that has been added to the program because + // it "shadows" a type stub file for purposes of finding doc strings and definitions. + // We need to track the relationship so if the original type stub is removed from the + // program, we can remove the corresponding shadowed file and any files it imports. + private _addShadowedFile(stubFile: SourceFileInfo, shadowImplPath: string): SourceFile { + let shadowFileInfo = this.getSourceFileInfo(shadowImplPath); + + if (!shadowFileInfo) { + shadowFileInfo = this.addInterimFile(shadowImplPath); } - if (allowModuleRename && referencesResult.containsOnlyImportDecls) { - return referencesResult; + if (!shadowFileInfo.shadows.includes(stubFile)) { + shadowFileInfo.shadows.push(stubFile); } - if (referencesResult.nonImportDeclarations.length === 0) { - // There is no symbol we can rename. - return undefined; + if (!stubFile.shadowedBy.includes(shadowFileInfo)) { + stubFile.shadowedBy.push(shadowFileInfo); } - // Use declarations that doesn't contain import decls. - return new ReferencesResult( - referencesResult.requiresGlobalSearch, - referencesResult.nodeAtOffset, - referencesResult.symbolNames, - referencesResult.nonImportDeclarations, - referencesResult.useCase + return shadowFileInfo.sourceFile; + } + + private _createInterimFileInfo(filePath: string) { + const importName = this._getImportNameForFile(filePath); + const sourceFile = new SourceFile( + this.fileSystem, + filePath, + importName, + /* isThirdPartyImport */ false, + /* isInPyTypedPackage */ false, + this._console, + this._logTracker ); + const sourceFileInfo = { + sourceFile, + isTracked: false, + isOpenByClient: false, + isTypeshedFile: false, + isThirdPartyImport: false, + isThirdPartyPyTypedPresent: false, + diagnosticsVersion: undefined, + imports: [], + importedBy: [], + shadows: [], + shadowedBy: [], + }; + + return sourceFileInfo; } - private _getDeclarationForPosition( - sourceFileInfo: SourceFileInfo, - position: Position, - useCase: DocumentSymbolCollectorUseCase, - sourceMapper: SourceMapper, - token: CancellationToken, - reporter?: ReferenceCallback - ) { - // If we have no completed analysis job, there's nothing to do. - const parseResults = sourceFileInfo.sourceFile.getParseResults(); - if (!parseResults) { - return undefined; + private _createNewEvaluator() { + if (this._evaluator) { + // We shouldn't need to call this, but there appears to be a bug + // in the v8 garbage collector where it's unable to resolve orphaned + // objects without us giving it some assistance. + this._evaluator.disposeEvaluator(); } - return ReferencesProvider.getDeclarationForPosition( - sourceMapper, - parseResults, - sourceFileInfo.sourceFile.getFilePath(), - position, - this._evaluator!, - reporter, - useCase, - token, - Array.from(collectImportedByFiles(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile) + this._evaluator = createTypeEvaluatorWithTracker( + this._lookUpImport, + { + printTypeFlags: Program._getPrintTypeFlags(this._configOptions), + logCalls: this._configOptions.logTypeEvaluationTime, + minimumLoggingThreshold: this._configOptions.typeEvaluationTimeThreshold, + evaluateUnknownImportsAsAny: !!this._configOptions.evaluateUnknownImportsAsAny, + verifyTypeCacheEvaluatorFlags: !!this._configOptions.internalTestMode, + }, + this._logTracker, + this._configOptions.logTypeEvaluationTime + ? createTracePrinter( + this._importResolver.getImportRoots( + this._configOptions.findExecEnvironment(this._configOptions.projectRoot) + ) + ) + : undefined ); + + return this._evaluator; } - private _processModuleReferences( - renameModuleProvider: RenameModuleProvider, - filteringText: string, - currentFilePath: string - ) { - // _sourceFileList contains every user files that match "include" pattern including - // py file even if corresponding pyi exists. - for (const currentFileInfo of this._sourceFileList) { - // Make sure we only touch user code to prevent us - // from accidentally changing third party library or type stub. - if (!isUserCode(currentFileInfo)) { - continue; - } + private _parseFile(fileToParse: SourceFileInfo, content?: string, force?: boolean) { + if (!force && (!this._isFileNeeded(fileToParse) || !fileToParse.sourceFile.isParseRequired())) { + return; + } - // If module name isn't mentioned in the current file, skip the file - // except the file that got actually renamed/moved. - // The file that got moved might have relative import paths we need to update. - const filePath = currentFileInfo.sourceFile.getFilePath(); - const content = currentFileInfo.sourceFile.getFileContent() ?? ''; - if (filePath !== currentFilePath && content.indexOf(filteringText) < 0) { - continue; - } + // SourceFile.parse should only be called here in the program, as calling it + // elsewhere could break the entire dependency graph maintained by the program. + // Other parts of the program should use _parseFile to create ParseResults from + // the sourceFile. For standalone parseResults, use parseFile or the Parser directly. + if (fileToParse.sourceFile.parse(this._configOptions, this._importResolver, content)) { + this._parsedFileCount++; + this._updateSourceFileImports(fileToParse, this._configOptions); + } - this._bindFile(currentFileInfo, content); - const parseResult = currentFileInfo.sourceFile.getParseResults(); - if (!parseResult) { - continue; - } + if (fileToParse.sourceFile.isFileDeleted()) { + fileToParse.isTracked = false; - renameModuleProvider.renameReferences(parseResult); + // Mark any files that depend on this file as dirty + // also. This will retrigger analysis of these other files. + const markDirtySet = new Set(); + this._markFileDirtyRecursive(fileToParse, markDirtySet); - // This operation can consume significant memory, so check - // for situations where we need to discard the type cache. - this._handleMemoryHighUsage(); + // Invalidate the import resolver's cache as well. + this._importResolver.invalidateCache(); } } - private _handleMemoryHighUsage() { - const cacheUsage = this._cacheManager.getCacheUsage(); + private _getImplicitImports(file: SourceFileInfo) { + // If file is not parsed, then chainedSourceFile, ipythonDisplayImport, + // builtinsImport might not exist or incorrect. + // They will be added when _parseFile is called and _updateSourceFileImports ran. + if (file.builtinsImport === file) { + return undefined; + } - // If the total cache has exceeded 75%, determine whether we should empty - // the cache. - if (cacheUsage > 0.75) { - const usedHeapRatio = this._cacheManager.getUsedHeapRatio( - this._configOptions.verboseOutput ? this._console : undefined - ); + const tryReturn = (input: SourceFileInfo | undefined) => { + if (!input || input.sourceFile.isFileDeleted()) { + return undefined; + } - // The type cache uses a Map, which has an absolute limit of 2^24 entries - // before it will fail. If we cross the 95% mark, we'll empty the cache. - const absoluteMaxCacheEntryCount = (1 << 24) * 0.9; - const typeCacheEntryCount = this._evaluator!.getTypeCacheEntryCount(); + return input; + }; - // If we use more than 90% of the heap size limit, avoid a crash - // by emptying the type cache. - if (typeCacheEntryCount > absoluteMaxCacheEntryCount || usedHeapRatio > 0.9) { - this._cacheManager.emptyCache(this._console); + return tryReturn(file.chainedSourceFile) ?? tryReturn(file.ipythonDisplayImport) ?? file.builtinsImport; + } + + private _bindImplicitImports(fileToAnalyze: SourceFileInfo) { + // Get all of the potential imports for this file. + const implicitImports: SourceFileInfo[] = []; + const implicitSet = new Set(); + + let nextImplicitImport = this._getImplicitImports(fileToAnalyze); + while (nextImplicitImport) { + const implicitPath = nextImplicitImport.sourceFile.getFilePath(); + if (implicitSet.has(implicitPath)) { + // We've found a cycle. Break out of the loop. + debug.fail(`Found a cycle in implicit imports files for ${implicitPath}`); } + + implicitSet.add(implicitPath); + implicitImports.push(nextImplicitImport); + + this._parseFile(nextImplicitImport); + nextImplicitImport = this._getImplicitImports(nextImplicitImport); + } + + if (implicitImports.length === 0) { + return; + } + + // Go in reverse order (so top of chain is first). + let implicitImport = implicitImports.pop(); + while (implicitImport) { + // Bind this file, but don't recurse into its imports. + this._bindFile(implicitImport, undefined, undefined, /* isImplicitImport */ true); + implicitImport = implicitImports.pop(); } } - // Discards all cached parse results and file contents to free up memory. - // It does not discard cached index results or diagnostics for files. - private _discardCachedParseResults() { - for (const sourceFileInfo of this._sourceFileList) { - sourceFileInfo.sourceFile.dropParseAndBindInfo(); + // Binds the specified file and all of its dependencies, recursively. If + // it runs out of time, it returns true. If it completes, it returns false. + private _bindFile( + fileToAnalyze: SourceFileInfo, + content?: string, + force?: boolean, + isImplicitImport?: boolean + ): void { + if (!force && (!this._isFileNeeded(fileToAnalyze) || !fileToAnalyze.sourceFile.isBindingRequired())) { + return; } - } - // Wrapper function that should be used when invoking this._evaluator - // with a cancellation token. It handles cancellation exceptions and - // any other unexpected exceptions. - private _runEvaluatorWithCancellationToken(token: CancellationToken | undefined, callback: () => T): T { - try { - if (token) { - return this._evaluator!.runWithCancellationToken(token, callback); - } else { - return callback(); - } - } catch (e: any) { - // An unexpected exception occurred, potentially leaving the current evaluator - // in an inconsistent state. Discard it and replace it with a fresh one. It is - // Cancellation exceptions are known to handle this correctly. - if (!OperationCanceledException.is(e)) { - this._createNewEvaluator(); + this._parseFile(fileToAnalyze, content, force); + + // Create a function to get the scope info. + const getScopeIfAvailable = (fileInfo: SourceFileInfo | undefined) => { + if (!fileInfo || fileInfo === fileToAnalyze) { + return undefined; } - throw e; - } - } - // Returns a list of empty file diagnostic entries for the files - // that have been removed. This is needed to clear out the - // errors for files that have been deleted or closed. - private _removeUnneededFiles(): FileDiagnostics[] { - const fileDiagnostics: FileDiagnostics[] = []; + // If the file was deleted, there's no scope to return. + if (fileInfo.sourceFile.isFileDeleted()) { + return undefined; + } - // If a file is no longer tracked, opened or shadowed, it can - // be removed from the program. - for (let i = 0; i < this._sourceFileList.length; ) { - const fileInfo = this._sourceFileList[i]; - if (!this._isFileNeeded(fileInfo)) { - fileDiagnostics.push({ - filePath: fileInfo.sourceFile.getFilePath(), - version: fileInfo.sourceFile.getClientVersion(), - diagnostics: [], - }); + const parseResults = fileInfo.sourceFile.getParseResults(); + if (!parseResults) { + return undefined; + } - fileInfo.sourceFile.prepareForClose(); - this._removeSourceFileFromListAndMap(fileInfo.sourceFile.getFilePath(), i); + // File should already be bound because of the chained file binding above. + const scope = AnalyzerNodeInfo.getScope(parseResults.parseTree); + return scope; + }; - // Unlink any imports and remove them from the list if - // they are no longer referenced. - fileInfo.imports.forEach((importedFile) => { - const indexToRemove = importedFile.importedBy.findIndex((fi) => fi === fileInfo); - if (indexToRemove < 0) { - return; - } + let builtinsScope: Scope | undefined; + if (fileToAnalyze.builtinsImport && fileToAnalyze.builtinsImport !== fileToAnalyze) { + // Bind all of the implicit imports first. So we don't recurse into them. + if (!isImplicitImport) { + this._bindImplicitImports(fileToAnalyze); + } - importedFile.importedBy.splice(indexToRemove, 1); + // If it is not builtin module itself, we need to parse and bind + // the ipython display import if required. Otherwise, get builtin module. + builtinsScope = + getScopeIfAvailable(fileToAnalyze.chainedSourceFile) ?? + getScopeIfAvailable(fileToAnalyze.ipythonDisplayImport) ?? + getScopeIfAvailable(fileToAnalyze.builtinsImport); + } - // See if we need to remove the imported file because it - // is no longer needed. If its index is >= i, it will be - // removed when we get to it. - if (!this._isFileNeeded(importedFile)) { - const indexToRemove = this._sourceFileList.findIndex((fi) => fi === importedFile); - if (indexToRemove >= 0 && indexToRemove < i) { - fileDiagnostics.push({ - filePath: importedFile.sourceFile.getFilePath(), - version: importedFile.sourceFile.getClientVersion(), - diagnostics: [], - }); + let futureImports = fileToAnalyze.sourceFile.getParseResults()!.futureImports; + if (fileToAnalyze.chainedSourceFile) { + futureImports = this._getEffectiveFutureImports(futureImports, fileToAnalyze.chainedSourceFile); + } + fileToAnalyze.effectiveFutureImports = futureImports.size > 0 ? futureImports : undefined; - importedFile.sourceFile.prepareForClose(); - this._removeSourceFileFromListAndMap(importedFile.sourceFile.getFilePath(), indexToRemove); - i--; - } - } - }); + fileToAnalyze.sourceFile.bind(this._configOptions, this._lookUpImport, builtinsScope, futureImports); + } - // Remove any shadowed files corresponding to this file. - fileInfo.shadowedBy.forEach((shadowedFile) => { - shadowedFile.shadows = shadowedFile.shadows.filter((f) => f !== fileInfo); - }); - fileInfo.shadowedBy = []; - } else { - // If we're showing the user errors only for open files, clear - // out the errors for the now-closed file. - if (!this._shouldCheckFile(fileInfo) && fileInfo.diagnosticsVersion !== undefined) { - fileDiagnostics.push({ - filePath: fileInfo.sourceFile.getFilePath(), - version: fileInfo.sourceFile.getClientVersion(), - diagnostics: [], - }); - fileInfo.diagnosticsVersion = undefined; - } + private _getEffectiveFutureImports(futureImports: Set, chainedSourceFile: SourceFileInfo): Set { + const effectiveFutureImports = new Set(futureImports); - i++; - } - } + chainedSourceFile.effectiveFutureImports?.forEach((value) => { + effectiveFutureImports.add(value); + }); - return fileDiagnostics; + return effectiveFutureImports; } - private _isFileNeeded(fileInfo: SourceFileInfo) { - if (fileInfo.sourceFile.isFileDeleted()) { - return false; - } + private _lookUpImport = (filePathOrModule: string | AbsoluteModuleDescriptor): ImportLookupResult | undefined => { + let sourceFileInfo: SourceFileInfo | undefined; - if (fileInfo.isTracked || fileInfo.isOpenByClient) { - return true; - } + if (typeof filePathOrModule === 'string') { + sourceFileInfo = this.getSourceFileInfo(filePathOrModule); + } else { + // Resolve the import. + const importResult = this._importResolver.resolveImport( + filePathOrModule.importingFilePath, + this._configOptions.findExecEnvironment(filePathOrModule.importingFilePath), + { + leadingDots: 0, + nameParts: filePathOrModule.nameParts, + importedSymbols: undefined, + } + ); - if (fileInfo.shadows.length > 0) { - return true; - } + if (importResult.isImportFound && !importResult.isNativeLib && importResult.resolvedPaths.length > 0) { + let resolvedPath = importResult.resolvedPaths[importResult.resolvedPaths.length - 1]; + if (resolvedPath) { + // See if the source file already exists in the program. + sourceFileInfo = this.getSourceFileInfo(resolvedPath); - if (fileInfo.importedBy.length === 0) { - return false; - } + if (!sourceFileInfo) { + resolvedPath = normalizePathCase(this.fileSystem, resolvedPath); - // It's possible for a cycle of files to be imported - // by a tracked file but then abandoned. The import cycle - // will keep the entire group "alive" if we don't detect - // the condition and garbage collect them. - return this._isImportNeededRecursive(fileInfo, new Set()); - } + // Start tracking the source file. + this.addTrackedFile(resolvedPath); + sourceFileInfo = this.getSourceFileInfo(resolvedPath); + } + } + } + } - private _isImportNeededRecursive(fileInfo: SourceFileInfo, recursionSet: Set) { - if (fileInfo.isTracked || fileInfo.isOpenByClient || fileInfo.shadows.length > 0) { - return true; + if (!sourceFileInfo) { + return undefined; } - const filePath = normalizePathCase(this.fileSystem, fileInfo.sourceFile.getFilePath()); + if (sourceFileInfo.sourceFile.isBindingRequired()) { + // Bind the file if it's not already bound. Don't count this time + // against the type checker. + timingStats.typeCheckerTime.subtractFromTime(() => { + this._bindFile(sourceFileInfo!); + }); + } - // Avoid infinite recursion. - if (recursionSet.has(filePath)) { - return false; + const symbolTable = sourceFileInfo.sourceFile.getModuleSymbolTable(); + if (!symbolTable) { + return undefined; } - recursionSet.add(filePath); + const parseResults = sourceFileInfo.sourceFile.getParseResults(); + const moduleNode = parseResults!.parseTree; + const fileInfo = AnalyzerNodeInfo.getFileInfo(moduleNode); - for (const importerInfo of fileInfo.importedBy) { - if (this._isImportNeededRecursive(importerInfo, recursionSet)) { - return true; - } - } + const dunderAllInfo = AnalyzerNodeInfo.getDunderAllInfo(parseResults!.parseTree); - return false; - } + return { + symbolTable, + dunderAllNames: dunderAllInfo?.names, + usesUnsupportedDunderAllForm: dunderAllInfo?.usesUnsupportedDunderAllForm ?? false, + get docString() { + return getDocString(moduleNode.statements); + }, + isInPyTypedPackage: fileInfo.isInPyTypedPackage, + }; + }; - private _createSourceMapper( - execEnv: ExecutionEnvironment, - token: CancellationToken, - from?: SourceFileInfo, - mapCompiled?: boolean, - preferStubs?: boolean - ) { - const sourceMapper = new SourceMapper( - this._importResolver, - execEnv, - this._evaluator!, - (stubFilePath: string, implFilePath: string) => { - let stubFileInfo = this.getSourceFileInfo(stubFilePath); - if (!stubFileInfo) { - // Special case for import statement like "import X.Y". The SourceFile - // for X might not be in memory since import `X.Y` only brings in Y. - stubFileInfo = this.addInterimFile(stubFilePath); - } + // Build a map of all modules within this program and the module- + // level scope that contains the symbol table for the module. + private _buildModuleSymbolsMap( + sourceFileToExclude: SourceFileInfo, + libraryMap: Map | undefined, + includeSymbolsFromIndices: boolean, + token: CancellationToken + ): ModuleSymbolMap { + // If we have library map, always use the map for library symbols. + const predicate = (s: SourceFileInfo) => { + if (!libraryMap) { + // We don't have any prebuilt indices, so we need to include + // all files. + return true; + } - this._addShadowedFile(stubFileInfo, implFilePath); - return this.getBoundSourceFile(implFilePath); - }, - (f) => { - let fileInfo = this.getBoundSourceFileInfo(f); - if (!fileInfo) { - // Special case for import statement like "import X.Y". The SourceFile - // for X might not be in memory since import `X.Y` only brings in Y. - fileInfo = this.addInterimFile(f); + if (!this._configOptions.indexing) { + // We have some prebuilt indices such as stdlib, but indexing is disabled. + // Include files we don't have prebuilt indices. + return libraryMap.get(s.sourceFile.getFilePath()) === undefined; + } - // Even though this file is not referenced by anything, make sure - // we have a parse tree for the doc string. - this._parseFile(fileInfo, /* content */ undefined, /* force */ true); - } + // We have prebuilt indices for third party libraries. Include only + // user files. + return isUserCode(s); + }; - return fileInfo; - }, - mapCompiled ?? false, - preferStubs ?? false, - from, + // Only include import alias from user files if indexing is off for now. + // Currently, when indexing is off, we don't do import alias deduplication, so + // adding import alias is cheap. But when indexing is on, we do deduplication, which + // require resolveAliasDeclaration that can cause more files to be parsed and bound. + return buildModuleSymbolsMap( + this._sourceFileList.filter((s) => s !== sourceFileToExclude && predicate(s)), + includeSymbolsFromIndices, token ); - return sourceMapper; } - private _isImportAllowed(importer: SourceFileInfo, importResult: ImportResult, isImportStubFile: boolean): boolean { - // Don't import native libs. We don't want to track these files, - // and we definitely don't want to attempt to parse them. - if (importResult.isNativeLib) { - return false; + private _shouldCheckFile(fileInfo: SourceFileInfo) { + // Always do a full checking for a file that's open in the editor. + if (fileInfo.isOpenByClient) { + return true; } - let thirdPartyImportAllowed = - this._configOptions.useLibraryCodeForTypes || - (importResult.importType === ImportType.ThirdParty && !!importResult.pyTypedInfo) || - (importResult.importType === ImportType.Local && importer.isThirdPartyPyTypedPresent); - - if ( - importResult.importType === ImportType.ThirdParty || - (importer.isThirdPartyImport && importResult.importType === ImportType.Local) - ) { - if (this._allowedThirdPartyImports) { - if (importResult.isRelative) { - // If it's a relative import, we'll allow it because the - // importer was already deemed to be allowed. - thirdPartyImportAllowed = true; - } else if ( - this._allowedThirdPartyImports.some((importName: string) => { - // If this import name is the one that was explicitly - // allowed or is a child of that import name, - // it's considered allowed. - if (importResult.importName === importName) { - return true; - } + // If the file isn't currently open, only perform full checking for + // files that are tracked, and only if the checkOnlyOpenFiles is disabled. + if (!this._configOptions.checkOnlyOpenFiles && fileInfo.isTracked) { + return true; + } - if (importResult.importName.startsWith(importName + '.')) { - return true; - } + return false; + } - return false; - }) - ) { - thirdPartyImportAllowed = true; - } - } else if (importer.isThirdPartyImport && this._configOptions.useLibraryCodeForTypes) { - // If the importing file is a third-party import, allow importing of - // additional third-party imports. This supports the case where the importer - // is in a py.typed library but is importing from another non-py.typed - // library. It also supports the case where someone explicitly opens a - // library source file in their editor. - thirdPartyImportAllowed = true; - } else if ( - importResult.isNamespacePackage && - importResult.filteredImplicitImports.some((implicitImport) => !!implicitImport.pyTypedInfo) - ) { - // Handle the case where the import targets a namespace package, and a - // submodule contained within it has a py.typed marker. - thirdPartyImportAllowed = true; + private _checkTypes(fileToCheck: SourceFileInfo, token: CancellationToken) { + return this._logTracker.log(`analyzing: ${fileToCheck.sourceFile.getFilePath()}`, (logState) => { + // If the file isn't needed because it was eliminated from the + // transitive closure or deleted, skip the file rather than wasting + // time on it. + if (!this._isFileNeeded(fileToCheck)) { + logState.suppress(); + return false; } - // Some libraries ship with stub files that import from non-stubs. Don't - // explore those. - // Don't explore any third-party files unless they're type stub files - // or we've been told explicitly that third-party imports are OK. - if (!isImportStubFile) { - return thirdPartyImportAllowed; + if (!fileToCheck.sourceFile.isCheckingRequired()) { + logState.suppress(); + return false; } - } - - return true; - } - private _updateSourceFileImports(sourceFileInfo: SourceFileInfo, options: ConfigOptions): SourceFileInfo[] { - const filesAdded: SourceFileInfo[] = []; - - // Get the new list of imports and see if it changed from the last - // list of imports for this file. - const imports = sourceFileInfo.sourceFile.getImports(); + if (!this._shouldCheckFile(fileToCheck)) { + logState.suppress(); + return false; + } - // Create a local function that determines whether the import should - // be considered a "third-party import" and whether it is coming from - // a third-party package that claims to be typed. An import is - // considered third-party if it is external to the importer - // or is internal but the importer is itself a third-party package. - const getThirdPartyImportInfo = (importResult: ImportResult) => { - let isThirdPartyImport = false; - let isPyTypedPresent = false; + this._bindFile(fileToCheck); - if (importResult.importType === ImportType.ThirdParty) { - isThirdPartyImport = true; - if (importResult.pyTypedInfo) { - isPyTypedPresent = true; - } - } else if (sourceFileInfo.isThirdPartyImport && importResult.importType === ImportType.Local) { - isThirdPartyImport = true; - if (sourceFileInfo.isThirdPartyPyTypedPresent) { - isPyTypedPresent = true; + if (this._preCheckCallback) { + const parseResults = fileToCheck.sourceFile.getParseResults(); + if (parseResults) { + this._preCheckCallback(parseResults, this._evaluator!); } } - return { - isThirdPartyImport, - isPyTypedPresent, - }; - }; - - // Create a map of unique imports, since imports can appear more than once. - const newImportPathMap = new Map(); + if (!this._disableChecker) { + // For ipython, make sure we check all its dependent files first since + // their results can affect this file's result. + let dependentFiles: ParseResults[] | undefined = undefined; + if (fileToCheck.sourceFile.getIPythonMode() === IPythonMode.CellDocs) { + dependentFiles = []; + const importedByFiles = collectImportedByFiles(fileToCheck); + for (const file of importedByFiles) { + if (!isUserCode(file)) { + continue; + } - // Add chained source file as import if it exists. - if (sourceFileInfo.chainedSourceFile) { - if (sourceFileInfo.chainedSourceFile.sourceFile.isFileDeleted()) { - sourceFileInfo.chainedSourceFile = undefined; - } else { - const filePath = sourceFileInfo.chainedSourceFile.sourceFile.getFilePath(); - newImportPathMap.set(normalizePathCase(this.fileSystem, filePath), { - path: filePath, - isTypeshedFile: false, - isThirdPartyImport: false, - isPyTypedPresent: false, - }); - } - } + // If the file is already analyzed, it will be no op. + // And make sure we don't dump parse tree and etc while + // recursively calling checker. Otherwise, inner check + // can dump parse tree required by outer check. + const handle = this._cacheManager.pauseTracking(); + try { + this._checkTypes(file, token); + } finally { + handle.dispose(); + } - imports.forEach((importResult) => { - if (importResult.isImportFound) { - if (this._isImportAllowed(sourceFileInfo, importResult, importResult.isStubFile)) { - if (importResult.resolvedPaths.length > 0) { - const filePath = importResult.resolvedPaths[importResult.resolvedPaths.length - 1]; - if (filePath) { - const thirdPartyTypeInfo = getThirdPartyImportInfo(importResult); - newImportPathMap.set(normalizePathCase(this.fileSystem, filePath), { - path: filePath, - isTypeshedFile: - !!importResult.isStdlibTypeshedFile || !!importResult.isThirdPartyTypeshedFile, - isThirdPartyImport: thirdPartyTypeInfo.isThirdPartyImport, - isPyTypedPresent: thirdPartyTypeInfo.isPyTypedPresent, - }); + const parseResults = file.sourceFile.getParseResults(); + if (parseResults) { + dependentFiles.push(parseResults); } } } - importResult.filteredImplicitImports.forEach((implicitImport) => { - if (this._isImportAllowed(sourceFileInfo, importResult, implicitImport.isStubFile)) { - if (!implicitImport.isNativeLib) { - const thirdPartyTypeInfo = getThirdPartyImportInfo(importResult); - newImportPathMap.set(normalizePathCase(this.fileSystem, implicitImport.path), { - path: implicitImport.path, - isTypeshedFile: - !!importResult.isStdlibTypeshedFile || !!importResult.isThirdPartyTypeshedFile, - isThirdPartyImport: thirdPartyTypeInfo.isThirdPartyImport, - isPyTypedPresent: thirdPartyTypeInfo.isPyTypedPresent, - }); - } - } - }); + const execEnv = this._configOptions.findExecEnvironment(fileToCheck.sourceFile.getFilePath()); + fileToCheck.sourceFile.check( + this._importResolver, + this._evaluator!, + this._createSourceMapper(execEnv, token, fileToCheck), + dependentFiles + ); + } + + // For very large programs, we may need to discard the evaluator and + // its cached types to avoid running out of heap space. + this._handleMemoryHighUsage(); + + // Detect import cycles that involve the file. + if (this._configOptions.diagnosticRuleSet.reportImportCycles !== 'none') { + // Don't detect import cycles when doing type stub generation. Some + // third-party modules are pretty convoluted. + if (!this._allowedThirdPartyImports) { + // We need to force all of the files to be parsed and build + // a closure map for the files. + const closureMap = new Map(); + this._getImportsRecursive(fileToCheck, closureMap, 0); - // If the stub was found but the non-stub (source) file was not, dump - // the failure to the log for diagnostic purposes. - if (importResult.nonStubImportResult && !importResult.nonStubImportResult.isImportFound) { - // We'll skip this for imports from within stub files and imports that target - // stdlib typeshed stubs because many of these are known to not have - // associated source files, and we don't want to fill the logs with noise. - if (!sourceFileInfo.sourceFile.isStubFile() && !importResult.isStdlibTypeshedFile) { - if (options.verboseOutput) { - this._console.info( - `Could not resolve source for '${importResult.importName}' ` + - `in file '${sourceFileInfo.sourceFile.getFilePath()}'` - ); + closureMap.forEach((file) => { + timingStats.cycleDetectionTime.timeOperation(() => { + const filesVisitedMap = new Map(); - if (importResult.nonStubImportResult.importFailureInfo) { - importResult.nonStubImportResult.importFailureInfo.forEach((diag) => { - this._console.info(` ${diag}`); + if (!this._detectAndReportImportCycles(file, filesVisitedMap)) { + // If no cycles were found in any of the files we visited, + // set a flag to indicates that we don't need to visit them again + // on subsequent cycle checks. + filesVisitedMap.forEach((sourceFileInfo) => { + sourceFileInfo.sourceFile.setNoCircularDependencyConfirmed(); }); } - } - } - } - } else if (options.verboseOutput) { - this._console.info( - `Could not import '${importResult.importName}' ` + - `in file '${sourceFileInfo.sourceFile.getFilePath()}'` - ); - if (importResult.importFailureInfo) { - importResult.importFailureInfo.forEach((diag) => { - this._console.info(` ${diag}`); + }); }); } } + + return true; }); + } - const updatedImportMap = new Map(); - sourceFileInfo.imports.forEach((importInfo) => { - const oldFilePath = normalizePathCase(this.fileSystem, importInfo.sourceFile.getFilePath()); + // Builds a map of files that includes the specified file and all of the files + // it imports (recursively) and ensures that all such files. If any of these files + // have already been checked (they and their recursive imports have completed the + // check phase), they are not included in the results. + private _getImportsRecursive( + file: SourceFileInfo, + closureMap: Map, + recursionCount: number + ) { + // If the file is already in the closure map, we found a cyclical + // dependency. Don't recur further. + const filePath = normalizePathCase(this.fileSystem, file.sourceFile.getFilePath()); + if (closureMap.has(filePath)) { + return; + } - // A previous import was removed. - if (!newImportPathMap.has(oldFilePath)) { - importInfo.importedBy = importInfo.importedBy.filter( - (fi) => - normalizePathCase(this.fileSystem, fi.sourceFile.getFilePath()) !== - normalizePathCase(this.fileSystem, sourceFileInfo.sourceFile.getFilePath()) - ); - } else { - updatedImportMap.set(oldFilePath, importInfo); - } - }); + // If the import chain is too long, emit an error. Otherwise we + // risk blowing the stack. + if (recursionCount > _maxImportDepth) { + file.sourceFile.setHitMaxImportDepth(_maxImportDepth); + return; + } - // See if there are any new imports to be added. - newImportPathMap.forEach((importInfo, normalizedImportPath) => { - if (!updatedImportMap.has(normalizedImportPath)) { - // We found a new import to add. See if it's already part - // of the program. - let importedFileInfo = this.getSourceFileInfo(importInfo.path); - if (!importedFileInfo) { - const importName = this._getImportNameForFile(importInfo.path); - const sourceFile = new SourceFile( - this.fileSystem, - importInfo.path, - importName, - importInfo.isThirdPartyImport, - importInfo.isPyTypedPresent, - this._console, - this._logTracker - ); - importedFileInfo = { - sourceFile, - isTracked: false, - isOpenByClient: false, - isTypeshedFile: importInfo.isTypeshedFile, - isThirdPartyImport: importInfo.isThirdPartyImport, - isThirdPartyPyTypedPresent: importInfo.isPyTypedPresent, - diagnosticsVersion: undefined, - imports: [], - importedBy: [], - shadows: [], - shadowedBy: [], - }; + // Add the file to the closure map. + closureMap.set(filePath, file); - this._addToSourceFileListAndMap(importedFileInfo); - filesAdded.push(importedFileInfo); - } + // If this file hasn't already been parsed, parse it now. This will + // discover any files it imports. Skip this if the file is part + // of a library. We'll assume that no cycles will be generated from + // library code or typeshed stubs. + if (isUserCode(file)) { + this._parseFile(file); + } - importedFileInfo.importedBy.push(sourceFileInfo); - updatedImportMap.set(normalizedImportPath, importedFileInfo); - } - }); + // Recursively add the file's imports. + for (const importedFileInfo of file.imports) { + this._getImportsRecursive(importedFileInfo, closureMap, recursionCount + 1); + } + } - // Update the imports list. It should now map the set of imports - // specified by the source file. - sourceFileInfo.imports = []; - newImportPathMap.forEach((_, path) => { - if (this.getSourceFileInfo(path)) { - sourceFileInfo.imports.push(this.getSourceFileInfo(path)!); - } - }); + private _detectAndReportImportCycles( + sourceFileInfo: SourceFileInfo, + filesVisited: Map, + dependencyChain: SourceFileInfo[] = [], + dependencyMap = new Map() + ): boolean { + // Don't bother checking for typestub files or third-party files. + if (sourceFileInfo.sourceFile.isStubFile() || sourceFileInfo.isThirdPartyImport) { + return false; + } - // Resolve the builtins import for the file. This needs to be - // analyzed before the file can be analyzed. - sourceFileInfo.builtinsImport = undefined; - const builtinsImport = sourceFileInfo.sourceFile.getBuiltinsImport(); - if (builtinsImport && builtinsImport.isImportFound) { - const resolvedBuiltinsPath = builtinsImport.resolvedPaths[builtinsImport.resolvedPaths.length - 1]; - sourceFileInfo.builtinsImport = this.getSourceFileInfo(resolvedBuiltinsPath); + // If we've already confirmed that this source file isn't part of a + // cycle, we can skip it entirely. + if (sourceFileInfo.sourceFile.isNoCircularDependencyConfirmed()) { + return false; } - // Resolve the ipython display import for the file. This needs to be - // analyzed before the file can be analyzed. - sourceFileInfo.ipythonDisplayImport = undefined; - const ipythonDisplayImport = sourceFileInfo.sourceFile.getIPythonDisplayImport(); - if (ipythonDisplayImport && ipythonDisplayImport.isImportFound) { - const resolvedIPythonDisplayPath = - ipythonDisplayImport.resolvedPaths[ipythonDisplayImport.resolvedPaths.length - 1]; - sourceFileInfo.ipythonDisplayImport = this.getSourceFileInfo(resolvedIPythonDisplayPath); + const filePath = normalizePathCase(this.fileSystem, sourceFileInfo.sourceFile.getFilePath()); + + filesVisited.set(filePath, sourceFileInfo); + + let detectedCycle = false; + + if (dependencyMap.has(filePath)) { + // We detect a cycle (partial or full). A full cycle is one that is + // rooted in the file at the start of our dependency chain. A partial + // cycle loops back on some other file in the dependency chain. We + // will report only full cycles here and leave the reporting of + // partial cycles to other passes. + detectedCycle = true; + + // Look for chains at least two in length. A file that contains + // an "import . from X" will technically create a cycle with + // itself, but those are not interesting to report. + if (dependencyChain.length > 1 && sourceFileInfo === dependencyChain[0]) { + this._logImportCycle(dependencyChain); + } + } else { + // If we've already checked this dependency along + // some other path, we can skip it. + if (dependencyMap.has(filePath)) { + return false; + } + + // We use both a map (for fast lookups) and a list + // (for ordering information). Set the dependency map + // entry to true to indicate that we're actively exploring + // that dependency. + dependencyMap.set(filePath, true); + dependencyChain.push(sourceFileInfo); + + for (const imp of sourceFileInfo.imports) { + if (this._detectAndReportImportCycles(imp, filesVisited, dependencyChain, dependencyMap)) { + detectedCycle = true; + } + } + + // Set the dependencyMap entry to false to indicate that we have + // already explored this file and don't need to explore it again. + dependencyMap.set(filePath, false); + dependencyChain.pop(); } - return filesAdded; + return detectedCycle; } - private _removeSourceFileFromListAndMap(filePath: string, indexToRemove: number) { - this._sourceFileMap.delete(normalizePathCase(this.fileSystem, filePath)); - this._sourceFileList.splice(indexToRemove, 1); + private _logImportCycle(dependencyChain: SourceFileInfo[]) { + const circDep = new CircularDependency(); + dependencyChain.forEach((sourceFileInfo) => { + circDep.appendPath(sourceFileInfo.sourceFile.getFilePath()); + }); + + circDep.normalizeOrder(); + const firstFilePath = circDep.getPaths()[0]; + const firstSourceFile = this.getSourceFileInfo(firstFilePath)!; + assert(firstSourceFile !== undefined); + firstSourceFile.sourceFile.addCircularDependency(circDep); } - private _addToSourceFileListAndMap(fileInfo: SourceFileInfo) { - const filePath = normalizePathCase(this.fileSystem, fileInfo.sourceFile.getFilePath()); + private _markFileDirtyRecursive(sourceFileInfo: SourceFileInfo, markSet: Set, forceRebinding = false) { + const filePath = normalizePathCase(this.fileSystem, sourceFileInfo.sourceFile.getFilePath()); - // We should never add a file with the same path twice. - assert(!this._sourceFileMap.has(filePath)); + // Don't mark it again if it's already been visited. + if (markSet.has(filePath)) { + return; + } - this._sourceFileList.push(fileInfo); - this._sourceFileMap.set(filePath, fileInfo); + sourceFileInfo.sourceFile.markReanalysisRequired(forceRebinding); + markSet.add(filePath); + + sourceFileInfo.importedBy.forEach((dep) => { + // Changes on chained source file can change symbols in the symbol table and + // dependencies on the dependent file. Force rebinding. + const forceRebinding = dep.chainedSourceFile === sourceFileInfo; + this._markFileDirtyRecursive(dep, markSet, forceRebinding); + }); + + // Change in the current file could impact checker result of chainedSourceFile such as unused symbols. + let chainedSourceFile = sourceFileInfo.chainedSourceFile; + while (chainedSourceFile) { + if (chainedSourceFile.sourceFile.isCheckingRequired()) { + // If the file is marked for checking, its chained one should be marked + // as well. Stop here. + return; + } + + chainedSourceFile.sourceFile.markReanalysisRequired(/* forceRebinding */ false); + chainedSourceFile = chainedSourceFile.chainedSourceFile; + } } } diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index d5e5b5632..1612b35e1 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -168,6 +168,26 @@ export class AnalyzerService { Extensions.createProgramExtensions(this._program, { addInterimFile: this.addInterimFile.bind(this) }); } + get fs() { + return this._backgroundAnalysisProgram.importResolver.fileSystem; + } + + get cancellationProvider() { + return this._options.cancellationProvider!; + } + + get librarySearchPathsToWatch() { + return this._librarySearchPathsToWatch; + } + + get backgroundAnalysisProgram(): BackgroundAnalysisProgram { + return this._backgroundAnalysisProgram; + } + + get test_program() { + return this._program; + } + clone( instanceName: string, serviceId: string, @@ -221,30 +241,6 @@ export class AnalyzerService { this._clearLibraryReanalysisTimer(); } - private get _console() { - return this._options.console!; - } - - private get _hostFactory() { - return this._options.hostFactory!; - } - - private get _importResolverFactory() { - return this._options.importResolverFactory!; - } - - get cancellationProvider() { - return this._options.cancellationProvider!; - } - - get librarySearchPathsToWatch() { - return this._librarySearchPathsToWatch; - } - - get backgroundAnalysisProgram(): BackgroundAnalysisProgram { - return this._backgroundAnalysisProgram; - } - static createImportResolver(fs: FileSystem, options: ConfigOptions, host: Host): ImportResolver { return new ImportResolver(fs, options, host); } @@ -529,11 +525,6 @@ export class AnalyzerService { } } - // test only APIs - get test_program() { - return this._program; - } - test_getConfigOptions(commandLineOptions: CommandLineOptions): ConfigOptions { return this._getConfigOptions(this._backgroundAnalysisProgram.host, commandLineOptions); } @@ -546,6 +537,92 @@ export class AnalyzerService { return this._shouldHandleSourceFileWatchChanges(path, isFile); } + writeTypeStub(token: CancellationToken): void { + const typingsSubdirPath = this._getTypeStubFolder(); + + this._program.writeTypeStub( + this._typeStubTargetPath ?? '', + this._typeStubTargetIsSingleFile, + typingsSubdirPath, + token + ); + } + + writeTypeStubInBackground(token: CancellationToken): Promise { + const typingsSubdirPath = this._getTypeStubFolder(); + + return this._backgroundAnalysisProgram.writeTypeStub( + this._typeStubTargetPath ?? '', + this._typeStubTargetIsSingleFile, + typingsSubdirPath, + token + ); + } + + invalidateAndForceReanalysis( + rebuildUserFileIndexing = true, + rebuildLibraryIndexing = true, + refreshOptions?: RefreshOptions + ) { + this._backgroundAnalysisProgram.invalidateAndForceReanalysis( + rebuildUserFileIndexing, + rebuildLibraryIndexing, + refreshOptions + ); + } + + // Forces the service to stop all analysis, discard all its caches, + // and research for files. + restart() { + this._applyConfigOptions(this._hostFactory()); + + this._backgroundAnalysisProgram.restart(); + } + + private get _console() { + return this._options.console!; + } + + private get _hostFactory() { + return this._options.hostFactory!; + } + + private get _importResolverFactory() { + return this._options.importResolverFactory!; + } + + private get _program() { + return this._backgroundAnalysisProgram.program; + } + + private get _configOptions() { + return this._backgroundAnalysisProgram.configOptions; + } + + private get _watchForSourceChanges() { + return !!this._commandLineOptions?.watchForSourceChanges; + } + + private get _watchForLibraryChanges() { + return !!this._commandLineOptions?.watchForLibraryChanges && !!this._options.libraryReanalysisTimeProvider; + } + + private get _watchForConfigChanges() { + return !!this._commandLineOptions?.watchForConfigChanges; + } + + private get _typeCheckingMode() { + return this._commandLineOptions?.typeCheckingMode; + } + + private get _verboseOutput(): boolean { + return !!this._configOptions.verboseOutput; + } + + private get _typeStubTargetImportName() { + return this._commandLineOptions?.typeStubTargetImportName; + } + // Calculates the effective options based on the command-line options, // an optional config file, and default values. private _getConfigOptions(host: Host, commandLineOptions: CommandLineOptions): ConfigOptions { @@ -840,84 +917,6 @@ export class AnalyzerService { return configOptions; } - writeTypeStub(token: CancellationToken): void { - const typingsSubdirPath = this._getTypeStubFolder(); - - this._program.writeTypeStub( - this._typeStubTargetPath ?? '', - this._typeStubTargetIsSingleFile, - typingsSubdirPath, - token - ); - } - - writeTypeStubInBackground(token: CancellationToken): Promise { - const typingsSubdirPath = this._getTypeStubFolder(); - - return this._backgroundAnalysisProgram.writeTypeStub( - this._typeStubTargetPath ?? '', - this._typeStubTargetIsSingleFile, - typingsSubdirPath, - token - ); - } - - invalidateAndForceReanalysis( - rebuildUserFileIndexing = true, - rebuildLibraryIndexing = true, - refreshOptions?: RefreshOptions - ) { - this._backgroundAnalysisProgram.invalidateAndForceReanalysis( - rebuildUserFileIndexing, - rebuildLibraryIndexing, - refreshOptions - ); - } - - // Forces the service to stop all analysis, discard all its caches, - // and research for files. - restart() { - this._applyConfigOptions(this._hostFactory()); - - this._backgroundAnalysisProgram.restart(); - } - - get fs() { - return this._backgroundAnalysisProgram.importResolver.fileSystem; - } - - private get _program() { - return this._backgroundAnalysisProgram.program; - } - - private get _configOptions() { - return this._backgroundAnalysisProgram.configOptions; - } - - private get _watchForSourceChanges() { - return !!this._commandLineOptions?.watchForSourceChanges; - } - - private get _watchForLibraryChanges() { - return !!this._commandLineOptions?.watchForLibraryChanges && !!this._options.libraryReanalysisTimeProvider; - } - - private get _watchForConfigChanges() { - return !!this._commandLineOptions?.watchForConfigChanges; - } - - private get _typeCheckingMode() { - return this._commandLineOptions?.typeCheckingMode; - } - - private get _verboseOutput(): boolean { - return !!this._configOptions.verboseOutput; - } - - private get _typeStubTargetImportName() { - return this._commandLineOptions?.typeStubTargetImportName; - } - private _getTypeStubFolder() { const stubPath = this._configOptions.stubPath ?? diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 7879f3f5c..5ac8eaa81 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -538,64 +538,6 @@ export class SourceFile { return diagList; } - // Get all task list diagnostics for the current file and add them - // to the specified diagnostic list - private _addTaskListDiagnostics(taskListTokens: TaskListToken[] | undefined, diagList: Diagnostic[]) { - // input validation - if (!taskListTokens || taskListTokens.length === 0 || !diagList) { - return; - } - - // if we have no tokens, we're done - if (!this._parseResults?.tokenizerOutput?.tokens) { - return; - } - - const tokenizerOutput = this._parseResults.tokenizerOutput; - for (let i = 0; i < tokenizerOutput.tokens.count; i++) { - const token = tokenizerOutput.tokens.getItemAt(i); - - // if there are no comments, skip this token - if (!token.comments || token.comments.length === 0) { - continue; - } - - for (const comment of token.comments) { - for (const token of taskListTokens) { - // Check if the comment matches the task list token. - // The comment must start with zero or more whitespace characters, - // followed by the taskListToken (case insensitive), - // followed by (0+ whitespace + EOL) OR (1+ NON-alphanumeric characters) - const regexStr = '^[\\s]*' + token.text + '([\\s]*$|[\\W]+)'; - const regex = RegExp(regexStr, 'i'); // case insensitive - - // if the comment doesn't match, skip it - if (!regex.test(comment.value)) { - continue; - } - - // Calculate the range for the diagnostic - // This allows navigation to the comment via double clicking the item in the task list pane - let rangeStart = comment.start; - - // The comment technically starts right after the comment identifier (#), but we want the caret right - // before the task list token (since there might be whitespace before it) - const indexOfToken = comment.value.toLowerCase().indexOf(token.text.toLowerCase()); - rangeStart += indexOfToken; - - const rangeEnd = TextRange.getEnd(comment); - const range = convertOffsetsToRange(rangeStart, rangeEnd, tokenizerOutput.lines!); - - // Add the diagnostic to the list to send to VS, - // and trim whitespace from the comment so it's easier to read in the task list - diagList.push( - new Diagnostic(DiagnosticCategory.TaskItem, comment.value.trim(), range, token.priority) - ); - } - } - } - } - getImports(): ImportResult[] { return this._imports || []; } @@ -1300,6 +1242,64 @@ export class SourceFile { this._ipythonMode = enable ? IPythonMode.CellDocs : IPythonMode.None; } + // Get all task list diagnostics for the current file and add them + // to the specified diagnostic list + private _addTaskListDiagnostics(taskListTokens: TaskListToken[] | undefined, diagList: Diagnostic[]) { + // input validation + if (!taskListTokens || taskListTokens.length === 0 || !diagList) { + return; + } + + // if we have no tokens, we're done + if (!this._parseResults?.tokenizerOutput?.tokens) { + return; + } + + const tokenizerOutput = this._parseResults.tokenizerOutput; + for (let i = 0; i < tokenizerOutput.tokens.count; i++) { + const token = tokenizerOutput.tokens.getItemAt(i); + + // if there are no comments, skip this token + if (!token.comments || token.comments.length === 0) { + continue; + } + + for (const comment of token.comments) { + for (const token of taskListTokens) { + // Check if the comment matches the task list token. + // The comment must start with zero or more whitespace characters, + // followed by the taskListToken (case insensitive), + // followed by (0+ whitespace + EOL) OR (1+ NON-alphanumeric characters) + const regexStr = '^[\\s]*' + token.text + '([\\s]*$|[\\W]+)'; + const regex = RegExp(regexStr, 'i'); // case insensitive + + // if the comment doesn't match, skip it + if (!regex.test(comment.value)) { + continue; + } + + // Calculate the range for the diagnostic + // This allows navigation to the comment via double clicking the item in the task list pane + let rangeStart = comment.start; + + // The comment technically starts right after the comment identifier (#), but we want the caret right + // before the task list token (since there might be whitespace before it) + const indexOfToken = comment.value.toLowerCase().indexOf(token.text.toLowerCase()); + rangeStart += indexOfToken; + + const rangeEnd = TextRange.getEnd(comment); + const range = convertOffsetsToRange(rangeStart, rangeEnd, tokenizerOutput.lines!); + + // Add the diagnostic to the list to send to VS, + // and trim whitespace from the comment so it's easier to read in the task list + diagList.push( + new Diagnostic(DiagnosticCategory.TaskItem, comment.value.trim(), range, token.priority) + ); + } + } + } + } + private _buildFileInfo( configOptions: ConfigOptions, fileContents: string, diff --git a/packages/pyright-internal/src/analyzer/typeStubWriter.ts b/packages/pyright-internal/src/analyzer/typeStubWriter.ts index a36a2b7a2..a3e8ed897 100644 --- a/packages/pyright-internal/src/analyzer/typeStubWriter.ts +++ b/packages/pyright-internal/src/analyzer/typeStubWriter.ts @@ -50,9 +50,9 @@ import { TypeEvaluator } from './typeEvaluatorTypes'; import { ClassType, isFunction, isInstantiableClass, isNever, isUnknown, removeUnknownFromUnion } from './types'; class TrackedImport { - constructor(public importName: string) {} - isAccessed = false; + + constructor(public importName: string) {} } class TrackedImportAs extends TrackedImport { diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 9a80995d5..e0a21fe31 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3693,10 +3693,6 @@ class ExpectedConstructorTypeTransformer extends TypeVarTransformer { super(); } - private _isTypeVarLive(typeVar: TypeVarType) { - return this._liveTypeVarScopes.some((scopeId) => typeVar.scopeId === scopeId); - } - override transformTypeVar(typeVar: TypeVarType) { // If the type variable is unrelated to the scopes we're solving, // don't transform that type variable. @@ -3706,4 +3702,8 @@ class ExpectedConstructorTypeTransformer extends TypeVarTransformer { return AnyType.create(); } + + private _isTypeVarLive(typeVar: TypeVarType) { + return this._liveTypeVarScopes.some((scopeId) => typeVar.scopeId === scopeId); + } } diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index f5b0de4a6..351783b51 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -47,39 +47,6 @@ export class BackgroundAnalysisBase { // Don't allow instantiation of this type directly. } - protected setup(worker: Worker) { - this._worker = worker; - - // global channel to communicate from BG channel to main thread. - worker.on('message', (msg: AnalysisResponse) => this.onMessage(msg)); - - // this will catch any exception thrown from background thread, - // print log and ignore exception - worker.on('error', (msg) => { - this.log(LogLevel.Error, `Error occurred on background thread: ${JSON.stringify(msg)}`); - }); - } - - protected onMessage(msg: AnalysisResponse) { - switch (msg.requestType) { - case 'log': { - const logData = msg.data as LogData; - this.log(logData.level, logData.message); - break; - } - - case 'analysisResult': { - // Change in diagnostics due to host such as file closed rather than - // analyzing files. - this._onAnalysisCompletion(convertAnalysisResults(msg.data)); - break; - } - - default: - debug.fail(`${msg.requestType} is not expected`); - } - } - setCompletionCallback(callback?: AnalysisCompleteCallback) { this._onAnalysisCompletion = callback ?? nullCallback; } @@ -146,53 +113,6 @@ export class BackgroundAnalysisBase { this._startOrResumeAnalysis('analyze', indices, token); } - private _startOrResumeAnalysis( - requestType: 'analyze' | 'resumeAnalysis', - indices: Indices | undefined, - token: CancellationToken - ) { - const { port1, port2 } = new MessageChannel(); - - // Handle response from background thread to main thread. - port1.on('message', (msg: AnalysisResponse) => { - switch (msg.requestType) { - case 'analysisResult': { - this._onAnalysisCompletion(convertAnalysisResults(msg.data)); - break; - } - - case 'analysisPaused': { - port2.close(); - port1.close(); - - // Analysis request has completed, but there is more to - // analyze, so queue another message to resume later. - this._startOrResumeAnalysis('resumeAnalysis', indices, token); - break; - } - - case 'indexResult': { - const { path, indexResults } = msg.data; - indices?.setWorkspaceIndex(path, indexResults); - break; - } - - case 'analysisDone': { - disposeCancellationToken(token); - port2.close(); - port1.close(); - break; - } - - default: - debug.fail(`${msg.requestType} is not expected`); - } - }); - - const cancellationId = getCancellationTokenId(token); - this.enqueueRequest({ requestType, data: cancellationId, port: port2 }); - } - startIndexing( indexOptions: IndexOptions, configOptions: ConfigOptions, @@ -272,6 +192,39 @@ export class BackgroundAnalysisBase { this.enqueueRequest({ requestType: 'shutdown', data: null }); } + protected setup(worker: Worker) { + this._worker = worker; + + // global channel to communicate from BG channel to main thread. + worker.on('message', (msg: AnalysisResponse) => this.onMessage(msg)); + + // this will catch any exception thrown from background thread, + // print log and ignore exception + worker.on('error', (msg) => { + this.log(LogLevel.Error, `Error occurred on background thread: ${JSON.stringify(msg)}`); + }); + } + + protected onMessage(msg: AnalysisResponse) { + switch (msg.requestType) { + case 'log': { + const logData = msg.data as LogData; + this.log(logData.level, logData.message); + break; + } + + case 'analysisResult': { + // Change in diagnostics due to host such as file closed rather than + // analyzing files. + this._onAnalysisCompletion(convertAnalysisResults(msg.data)); + break; + } + + default: + debug.fail(`${msg.requestType} is not expected`); + } + } + protected enqueueRequest(request: AnalysisRequest) { if (this._worker) { this._worker.postMessage(request, request.port ? [request.port] : undefined); @@ -281,19 +234,62 @@ export class BackgroundAnalysisBase { protected log(level: LogLevel, msg: string) { log(this.console, level, msg); } + + private _startOrResumeAnalysis( + requestType: 'analyze' | 'resumeAnalysis', + indices: Indices | undefined, + token: CancellationToken + ) { + const { port1, port2 } = new MessageChannel(); + + // Handle response from background thread to main thread. + port1.on('message', (msg: AnalysisResponse) => { + switch (msg.requestType) { + case 'analysisResult': { + this._onAnalysisCompletion(convertAnalysisResults(msg.data)); + break; + } + + case 'analysisPaused': { + port2.close(); + port1.close(); + + // Analysis request has completed, but there is more to + // analyze, so queue another message to resume later. + this._startOrResumeAnalysis('resumeAnalysis', indices, token); + break; + } + + case 'indexResult': { + const { path, indexResults } = msg.data; + indices?.setWorkspaceIndex(path, indexResults); + break; + } + + case 'analysisDone': { + disposeCancellationToken(token); + port2.close(); + port1.close(); + break; + } + + default: + debug.fail(`${msg.requestType} is not expected`); + } + }); + + const cancellationId = getCancellationTokenId(token); + this.enqueueRequest({ requestType, data: cancellationId, port: port2 }); + } } export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase { private _configOptions: ConfigOptions; - protected _importResolver: ImportResolver; private _program: Program; + protected _importResolver: ImportResolver; protected _logTracker: LogTracker; - get program(): Program { - return this._program; - } - protected constructor() { super(workerData as InitializationData); @@ -315,6 +311,10 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase }); } + get program(): Program { + return this._program; + } + start() { this.log(LogLevel.Info, `Background analysis(${threadId}) started`); @@ -499,6 +499,28 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase } } + protected abstract createHost(): Host; + + protected abstract createImportResolver(fs: FileSystem, options: ConfigOptions, host: Host): ImportResolver; + + protected processIndexing(port: MessagePort, token: CancellationToken): void { + /* noop */ + } + + protected reportIndex(port: MessagePort, result: { path: string; indexResults: IndexResults }) { + port.postMessage({ requestType: 'indexResult', data: result }); + } + + protected override shutdown() { + this._program.dispose(); + Extensions.destroyProgramExtensions(this._program.id); + super.shutdown(); + } + + protected analysisDone(port: MessagePort, cancellationId: string) { + port.postMessage({ requestType: 'analysisDone', data: cancellationId }); + } + private _onMessageWrapper(msg: AnalysisRequest) { try { return this.onMessage(msg); @@ -541,24 +563,6 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase } } - protected abstract createHost(): Host; - - protected abstract createImportResolver(fs: FileSystem, options: ConfigOptions, host: Host): ImportResolver; - - protected processIndexing(port: MessagePort, token: CancellationToken): void { - /* noop */ - } - - protected reportIndex(port: MessagePort, result: { path: string; indexResults: IndexResults }) { - port.postMessage({ requestType: 'indexResult', data: result }); - } - - protected override shutdown() { - this._program.dispose(); - Extensions.destroyProgramExtensions(this._program.id); - super.shutdown(); - } - private _reportDiagnostics(diagnostics: FileDiagnostics[], filesLeftToAnalyze: number, elapsedTime: number) { if (parentPort) { this._onAnalysisCompletion(parentPort, { @@ -580,10 +584,6 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase private _analysisPaused(port: MessagePort, cancellationId: string) { port.postMessage({ requestType: 'analysisPaused', data: cancellationId }); } - - protected analysisDone(port: MessagePort, cancellationId: string) { - port.postMessage({ requestType: 'analysisDone', data: cancellationId }); - } } function convertAnalysisResults(result: AnalysisResults): AnalysisResults { diff --git a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts index 02e2628b3..34894323e 100644 --- a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts +++ b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts @@ -26,7 +26,7 @@ import { } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { isNumber, isString } from '../common/core'; -import { convertOffsetsToRange, convertOffsetToPosition } from '../common/positionUtils'; +import { convertOffsetToPosition, convertOffsetsToRange } from '../common/positionUtils'; import { TextRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { LanguageServerInterface } from '../languageServerBase'; @@ -55,8 +55,8 @@ import { ErrorNode, ExceptNode, ExpressionNode, - FormatStringNode, ForNode, + FormatStringNode, FunctionAnnotationNode, FunctionNode, GlobalNode, @@ -66,7 +66,6 @@ import { ImportFromNode, ImportNode, IndexNode, - isExpressionNode, LambdaNode, ListComprehensionForNode, ListComprehensionIfNode, @@ -117,6 +116,7 @@ import { WithNode, YieldFromNode, YieldNode, + isExpressionNode, } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { KeywordType, NewLineType, OperatorType, StringTokenFlags, Token, TokenType } from '../parser/tokenizerTypes'; @@ -570,18 +570,6 @@ class TreeDumper extends ParseTreeWalker { } } - private _log(value: string) { - this._output += `${this._indentation}${value}\r\n`; - } - - private _getPrefix(node: ParseNode) { - const pos = convertOffsetToPosition(node.start, this._lines); - // VS code's output window expects 1 based values, print the line/char with 1 based. - return `[${node.id}] '${this._file}:${pos.line + 1}:${pos.character + 1}' => ${printParseNodeType( - node.nodeType - )} ${getTextSpanString(node, this._lines)} =>`; - } - reset() { this._indentation = ''; this._output = ''; @@ -1004,6 +992,18 @@ class TreeDumper extends ParseTreeWalker { this._log(`${this._getPrefix(node)}`); return true; } + + private _log(value: string) { + this._output += `${this._indentation}${value}\r\n`; + } + + private _getPrefix(node: ParseNode) { + const pos = convertOffsetToPosition(node.start, this._lines); + // VS code's output window expects 1 based values, print the line/char with 1 based. + return `[${node.id}] '${this._file}:${pos.line + 1}:${pos.character + 1}' => ${printParseNodeType( + node.nodeType + )} ${getTextSpanString(node, this._lines)} =>`; + } } function getTypeParameterCategoryString(type: TypeParameterCategory) { diff --git a/packages/pyright-internal/src/common/cancellationUtils.ts b/packages/pyright-internal/src/common/cancellationUtils.ts index dfe237a14..00a1874e5 100644 --- a/packages/pyright-internal/src/common/cancellationUtils.ts +++ b/packages/pyright-internal/src/common/cancellationUtils.ts @@ -82,16 +82,6 @@ export class FileBasedToken implements CancellationToken { // empty } - cancel() { - if (!this.isCancelled) { - this.isCancelled = true; - if (this._emitter) { - this._emitter.fire(undefined); - this._disposeEmitter(); - } - } - } - get isCancellationRequested(): boolean { if (this.isCancelled) { return true; @@ -115,6 +105,16 @@ export class FileBasedToken implements CancellationToken { return this._emitter.event; } + cancel() { + if (!this.isCancelled) { + this.isCancelled = true; + if (this._emitter) { + this._emitter.fire(undefined); + this._disposeEmitter(); + } + } + } + dispose(): void { this._disposeEmitter(); } diff --git a/packages/pyright-internal/src/common/commandLineOptions.ts b/packages/pyright-internal/src/common/commandLineOptions.ts index b1ff8e599..1904312d6 100644 --- a/packages/pyright-internal/src/common/commandLineOptions.ts +++ b/packages/pyright-internal/src/common/commandLineOptions.ts @@ -35,11 +35,6 @@ export type DiagnosticSeverityOverridesMap = { [ruleName: string]: DiagnosticSev // that provided through a language client like the VS Code editor. These options // are later combined with those from the config file to produce the final configuration. export class CommandLineOptions { - constructor(executionRoot: string, fromVsCodeExtension: boolean) { - this.executionRoot = executionRoot; - this.fromVsCodeExtension = fromVsCodeExtension; - } - // A list of file specs to include in the analysis. Can contain // directories, in which case all "*.py" files within those directories // are included. @@ -142,4 +137,9 @@ export class CommandLineOptions { // Analyze functions and methods that have no type annotations? analyzeUnannotatedFunctions?: boolean; + + constructor(executionRoot: string, fromVsCodeExtension: boolean) { + this.executionRoot = executionRoot; + this.fromVsCodeExtension = fromVsCodeExtension; + } } diff --git a/packages/pyright-internal/src/common/configOptions.ts b/packages/pyright-internal/src/common/configOptions.ts index 27546e827..e67d89f6d 100644 --- a/packages/pyright-internal/src/common/configOptions.ts +++ b/packages/pyright-internal/src/common/configOptions.ts @@ -36,19 +36,6 @@ export enum PythonPlatform { } export class ExecutionEnvironment { - // Default to "." which indicates every file in the project. - constructor( - root: string, - defaultPythonVersion: PythonVersion | undefined, - defaultPythonPlatform: string | undefined, - defaultExtraPaths: string[] | undefined - ) { - this.root = root || undefined; - this.pythonVersion = defaultPythonVersion || latestStablePythonVersion; - this.pythonPlatform = defaultPythonPlatform; - this.extraPaths = [...(defaultExtraPaths ?? [])]; - } - // Root directory for execution - absolute or relative to the // project root. // Undefined if this is a rootless environment (e.g., open file mode). @@ -62,6 +49,19 @@ export class ExecutionEnvironment { // Default to no extra paths. extraPaths: string[] = []; + + // Default to "." which indicates every file in the project. + constructor( + root: string, + defaultPythonVersion: PythonVersion | undefined, + defaultPythonPlatform: string | undefined, + defaultExtraPaths: string[] | undefined + ) { + this.root = root || undefined; + this.pythonVersion = defaultPythonVersion || latestStablePythonVersion; + this.pythonPlatform = defaultPythonPlatform; + this.extraPaths = [...(defaultExtraPaths ?? [])]; + } } export type DiagnosticLevel = 'none' | 'information' | 'warning' | 'error'; @@ -677,13 +677,6 @@ export function matchFileSpecs(configOptions: ConfigOptions, filePath: string, i // Internal configuration options. These are derived from a combination // of the command line and from a JSON-based config file. export class ConfigOptions { - constructor(projectRoot: string, typeCheckingMode?: string) { - this.projectRoot = projectRoot; - this.typeCheckingMode = typeCheckingMode; - this.diagnosticRuleSet = ConfigOptions.getDiagnosticRuleSet(typeCheckingMode); - this.functionSignatureDisplay = SignatureDisplayType.formatted; - } - // Absolute directory of project. All relative paths in the config // are based on this path. projectRoot: string; @@ -805,6 +798,13 @@ export class ConfigOptions { // Controls how hover and completion function signatures are displayed. functionSignatureDisplay: SignatureDisplayType; + constructor(projectRoot: string, typeCheckingMode?: string) { + this.projectRoot = projectRoot; + this.typeCheckingMode = typeCheckingMode; + this.diagnosticRuleSet = ConfigOptions.getDiagnosticRuleSet(typeCheckingMode); + this.functionSignatureDisplay = SignatureDisplayType.formatted; + } + static getDiagnosticRuleSet(typeCheckingMode?: string): DiagnosticRuleSet { if (typeCheckingMode === 'strict') { return getStrictDiagnosticRuleSet(); diff --git a/packages/pyright-internal/src/common/deferred.ts b/packages/pyright-internal/src/common/deferred.ts index a48db2cc1..3d652b06c 100644 --- a/packages/pyright-internal/src/common/deferred.ts +++ b/packages/pyright-internal/src/common/deferred.ts @@ -29,18 +29,6 @@ class DeferredImpl implements Deferred { }); } - public resolve(_value?: T | PromiseLike) { - // eslint-disable-next-line prefer-rest-params - this._resolve.apply(this._scope ? this._scope : this, arguments as any); - this._resolved = true; - } - - public reject(_reason?: any) { - // eslint-disable-next-line prefer-rest-params - this._reject.apply(this._scope ? this._scope : this, arguments as any); - this._rejected = true; - } - get promise(): Promise { return this._promise; } @@ -56,6 +44,18 @@ class DeferredImpl implements Deferred { get completed(): boolean { return this._rejected || this._resolved; } + + resolve(_value?: T | PromiseLike) { + // eslint-disable-next-line prefer-rest-params + this._resolve.apply(this._scope ? this._scope : this, arguments as any); + this._resolved = true; + } + + reject(_reason?: any) { + // eslint-disable-next-line prefer-rest-params + this._reject.apply(this._scope ? this._scope : this, arguments as any); + this._rejected = true; + } } export function createDeferred(scope: any = null): Deferred { diff --git a/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts b/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts index 7bd208f07..0b56a7676 100644 --- a/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts +++ b/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts @@ -32,6 +32,12 @@ class OwningFileToken extends FileBasedToken { super(cancellationFilePath, fs); } + override get isCancellationRequested(): boolean { + // Since this object owns the file and it gets created when the + // token is cancelled, there's no point in checking the pipe. + return this.isCancelled; + } + override cancel() { if (!this._disposed && !this.isCancelled) { this._createPipe(); @@ -39,12 +45,6 @@ class OwningFileToken extends FileBasedToken { } } - override get isCancellationRequested(): boolean { - // Since this object owns the file and it gets created when the - // token is cancelled, there's no point in checking the pipe. - return this.isCancelled; - } - override dispose(): void { this._disposed = true; diff --git a/packages/pyright-internal/src/common/fullAccessHost.ts b/packages/pyright-internal/src/common/fullAccessHost.ts index 5b4b266d8..6cfabc743 100644 --- a/packages/pyright-internal/src/common/fullAccessHost.ts +++ b/packages/pyright-internal/src/common/fullAccessHost.ts @@ -60,6 +60,14 @@ export class LimitedAccessHost extends NoAccessHost { } export class FullAccessHost extends LimitedAccessHost { + constructor(protected _fs: FileSystem) { + super(); + } + + override get kind(): HostKind { + return HostKind.FullAccess; + } + static createHost(kind: HostKind, fs: FileSystem) { switch (kind) { case HostKind.NoAccess: @@ -73,14 +81,6 @@ export class FullAccessHost extends LimitedAccessHost { } } - constructor(protected _fs: FileSystem) { - super(); - } - - override get kind(): HostKind { - return HostKind.FullAccess; - } - override getPythonSearchPaths(pythonPath?: string, logInfo?: string[]): PythonPathResult { const importFailureInfo = logInfo ?? []; let result = this._executePythonInterpreter(pythonPath, (p) => diff --git a/packages/pyright-internal/src/common/realFileSystem.ts b/packages/pyright-internal/src/common/realFileSystem.ts index 28d406461..75ed2faad 100644 --- a/packages/pyright-internal/src/common/realFileSystem.ts +++ b/packages/pyright-internal/src/common/realFileSystem.ts @@ -116,13 +116,6 @@ class EggZipOpenFS extends ZipOpenFS { private override isZip!: Set; private override notZip!: Set; - // Hack to provide typed access to this private method. - private override getZipSync(p: PortablePath, accept: (zipFs: ZipFS) => T): T { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - //@ts-expect-error - return super.getZipSync(p, accept); - } - override findZip(p: PortablePath) { if (this.filter && !this.filter.test(p)) return null; @@ -173,6 +166,13 @@ class EggZipOpenFS extends ZipOpenFS { }; } } + + // Hack to provide typed access to this private method. + private override getZipSync(p: PortablePath, accept: (zipFs: ZipFS) => T): T { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + //@ts-expect-error + return super.getZipSync(p, accept); + } } /* eslint-enable @typescript-eslint/naming-convention */ diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index f1bc5661e..8fc091fa9 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -168,17 +168,17 @@ export interface WindowInterface { } export interface LanguageServerInterface { + readonly rootPath: string; + readonly console: ConsoleInterface; + readonly window: WindowInterface; + readonly supportAdvancedEdits: boolean; + getWorkspaceForFile(filePath: string): Promise; getSettings(workspace: Workspace): Promise; createBackgroundAnalysis(serviceId: string): BackgroundAnalysisBase | undefined; reanalyze(): void; restart(): void; decodeTextDocumentUri(uriString: string): string; - - readonly rootPath: string; - readonly console: ConsoleInterface; - readonly window: WindowInterface; - readonly supportAdvancedEdits: boolean; } export interface ServerOptions { @@ -394,6 +394,15 @@ export abstract class LanguageServerBase implements LanguageServerInterface { Extensions.createLanguageServiceExtensions(this); } + // Provides access to the client's window. + get window(): RemoteWindow { + return this._connection.window; + } + + get supportAdvancedEdits(): boolean { + return this.client.hasDocumentChangeCapability && this.client.hasDocumentAnnotationCapability; + } + // Convert uri to path decodeTextDocumentUri(uriString: string): string { return this._uriParser.decodeTextDocumentUri(uriString); @@ -401,6 +410,120 @@ export abstract class LanguageServerBase implements LanguageServerInterface { abstract createBackgroundAnalysis(serviceId: string): BackgroundAnalysisBase | undefined; + abstract getSettings(workspace: Workspace): Promise; + + // Creates a service instance that's used for analyzing a + // program within a workspace. + createAnalyzerService( + name: string, + services?: WorkspaceServices, + libraryReanalysisTimeProvider?: () => number + ): AnalyzerService { + this.console.info(`Starting service instance "${name}"`); + + const serviceId = getNextServiceId(name); + const service = new AnalyzerService(name, services?.fs ?? this._serviceFS, { + console: this.console, + hostFactory: this.createHost.bind(this), + importResolverFactory: this.createImportResolver.bind(this), + backgroundAnalysis: services ? services.backgroundAnalysis : this.createBackgroundAnalysis(serviceId), + maxAnalysisTime: this._serverOptions.maxAnalysisTimeInForeground, + backgroundAnalysisProgramFactory: this.createBackgroundAnalysisProgram.bind(this), + cancellationProvider: this._serverOptions.cancellationProvider, + libraryReanalysisTimeProvider, + cacheManager: this._cacheManager, + serviceId, + }); + + service.setCompletionCallback((results) => this.onAnalysisCompletedHandler(service.fs, results)); + return service; + } + + async test_getWorkspaces() { + const workspaces = [...this._workspaceFactory.items()]; + for (const workspace of workspaces) { + await workspace.isInitialized.promise; + } + + return workspaces; + } + + async getWorkspaceForFile(filePath: string, pythonPath?: string): Promise { + return this._workspaceFactory.getWorkspaceForFile(filePath, pythonPath); + } + + async getContainingWorkspacesForFile(filePath: string): Promise { + return this._workspaceFactory.getContainingWorkspacesForFile(filePath); + } + + reanalyze() { + this._workspaceFactory.items().forEach((workspace) => { + workspace.service.invalidateAndForceReanalysis(); + }); + } + + restart() { + this._workspaceFactory.items().forEach((workspace) => { + workspace.service.restart(); + }); + } + + updateSettingsForAllWorkspaces(): void { + const tasks: Promise[] = []; + this._workspaceFactory.items().forEach((workspace) => { + // Updating settings can change workspace's file ownership. Make workspace uninitialized so that + // features can wait until workspace gets new settings. + // the file's ownership can also changed by `pyrightconfig.json` changes, but those are synchronous + // operation, so it won't affect this. + workspace.isInitialized = workspace.isInitialized.reset(); + tasks.push(this.updateSettingsForWorkspace(workspace, workspace.isInitialized)); + }); + + Promise.all(tasks).then(() => { + this._setupFileWatcher(); + }); + } + + async updateSettingsForWorkspace( + workspace: Workspace, + status: InitStatus | undefined, + serverSettings?: ServerSettings + ): Promise { + status?.markCalled(); + + serverSettings = serverSettings ?? (await this.getSettings(workspace)); + + // Set logging level first. + (this.console as ConsoleWithLogLevel).level = serverSettings.logLevel ?? LogLevel.Info; + + // Apply the new path to the workspace (before restarting the service). + serverSettings.pythonPath = this._workspaceFactory.applyPythonPath(workspace, serverSettings.pythonPath); + + // Then use the updated settings to restart the service. + this.updateOptionsAndRestartService(workspace, serverSettings); + + workspace.disableLanguageServices = !!serverSettings.disableLanguageServices; + workspace.disableOrganizeImports = !!serverSettings.disableOrganizeImports; + + // Don't use workspace.isInitialized directly since it might have been + // reset due to pending config change event. + // The workspace is now open for business. + status?.resolve(); + } + + updateOptionsAndRestartService( + workspace: Workspace, + serverSettings: ServerSettings, + typeStubTargetImportName?: string + ) { + AnalyzerServiceExecutor.runWithOptions(this.rootPath, workspace, serverSettings, typeStubTargetImportName); + workspace.searchPathsToWatch = workspace.service.librarySearchPathsToWatch ?? []; + } + + protected get allowModuleRename() { + return false; + } + protected abstract executeCommand(params: ExecuteCommandParams, token: CancellationToken): Promise; protected abstract isLongRunningCommand(command: string): boolean; @@ -410,8 +533,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { token: CancellationToken ): Promise<(Command | CodeAction)[] | undefined | null>; - abstract getSettings(workspace: Workspace): Promise; - protected isPythonPathImmutable(filePath: string): boolean { // This function is called to determine if the file is using // a special pythonPath separate from a workspace or not. @@ -442,10 +563,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return diagnosticMode !== 'workspace'; } - protected get allowModuleRename() { - return false; - } - protected getSeverityOverrides(value: string): DiagnosticSeverityOverrides | undefined { const enumValue = value as DiagnosticSeverityOverrides; if (getDiagnosticSeverityOverrides().includes(enumValue)) { @@ -487,71 +604,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { ); } - // Provides access to the client's window. - get window(): RemoteWindow { - return this._connection.window; - } - - get supportAdvancedEdits(): boolean { - return this.client.hasDocumentChangeCapability && this.client.hasDocumentAnnotationCapability; - } - - // Creates a service instance that's used for analyzing a - // program within a workspace. - createAnalyzerService( - name: string, - services?: WorkspaceServices, - libraryReanalysisTimeProvider?: () => number - ): AnalyzerService { - this.console.info(`Starting service instance "${name}"`); - - const serviceId = getNextServiceId(name); - const service = new AnalyzerService(name, services?.fs ?? this._serviceFS, { - console: this.console, - hostFactory: this.createHost.bind(this), - importResolverFactory: this.createImportResolver.bind(this), - backgroundAnalysis: services ? services.backgroundAnalysis : this.createBackgroundAnalysis(serviceId), - maxAnalysisTime: this._serverOptions.maxAnalysisTimeInForeground, - backgroundAnalysisProgramFactory: this.createBackgroundAnalysisProgram.bind(this), - cancellationProvider: this._serverOptions.cancellationProvider, - libraryReanalysisTimeProvider, - cacheManager: this._cacheManager, - serviceId, - }); - - service.setCompletionCallback((results) => this.onAnalysisCompletedHandler(service.fs, results)); - return service; - } - - async test_getWorkspaces() { - const workspaces = [...this._workspaceFactory.items()]; - for (const workspace of workspaces) { - await workspace.isInitialized.promise; - } - - return workspaces; - } - - async getWorkspaceForFile(filePath: string, pythonPath?: string): Promise { - return this._workspaceFactory.getWorkspaceForFile(filePath, pythonPath); - } - - async getContainingWorkspacesForFile(filePath: string): Promise { - return this._workspaceFactory.getContainingWorkspacesForFile(filePath); - } - - reanalyze() { - this._workspaceFactory.items().forEach((workspace) => { - workspace.service.invalidateAndForceReanalysis(); - }); - } - - restart() { - this._workspaceFactory.items().forEach((workspace) => { - workspace.service.restart(); - }); - } - protected setupConnection(supportedCommands: string[], supportedCodeActions: string[]): void { // After the server has started the client sends an initialize request. The server receives // in the passed params the rootPath of the workspace plus the client capabilities. @@ -730,49 +782,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { this._setupFileWatcher(); } - private _setupFileWatcher() { - if (!this.client.hasWatchFileCapability) { - return; - } - - const watchKind = WatchKind.Create | WatchKind.Change | WatchKind.Delete; - - // Set default (config files and all workspace files) first. - const watchers: FileSystemWatcher[] = [ - ...configFileNames.map((fileName) => ({ globPattern: `**/${fileName}`, kind: watchKind })), - { globPattern: '**', kind: watchKind }, - ]; - - // Add all python search paths to watch list - if (this.client.hasWatchFileRelativePathCapability) { - // Dedup search paths from all workspaces. - // Get rid of any search path under workspace root since it is already watched by - // "**" above. - const foldersToWatch = deduplicateFolders( - this._workspaceFactory - .getNonDefaultWorkspaces() - .map((w) => w.searchPathsToWatch.filter((p) => !p.startsWith(w.rootPath))) - ); - - foldersToWatch.forEach((p) => { - const globPattern = isFile(this._serviceFS, p, /* treatZipDirectoryAsFile */ true) - ? { baseUri: convertPathToUri(this._serviceFS, getDirectoryPath(p)), pattern: getFileName(p) } - : { baseUri: convertPathToUri(this._serviceFS, p), pattern: '**' }; - - watchers.push({ globPattern, kind: watchKind }); - }); - } - - // File watcher is pylance wide service. Dispose all existing file watchers and create new ones. - this._connection.client.register(DidChangeWatchedFilesNotification.type, { watchers }).then((d) => { - if (this._lastFileWatcherRegistration) { - this._lastFileWatcherRegistration.dispose(); - } - - this._lastFileWatcherRegistration = d; - }); - } - protected onDidChangeConfiguration(params: DidChangeConfigurationParams) { this.console.log(`Received updated settings`); if (params?.settings) { @@ -1312,22 +1321,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { ); } - updateSettingsForAllWorkspaces(): void { - const tasks: Promise[] = []; - this._workspaceFactory.items().forEach((workspace) => { - // Updating settings can change workspace's file ownership. Make workspace uninitialized so that - // features can wait until workspace gets new settings. - // the file's ownership can also changed by `pyrightconfig.json` changes, but those are synchronous - // operation, so it won't affect this. - workspace.isInitialized = workspace.isInitialized.reset(); - tasks.push(this.updateSettingsForWorkspace(workspace, workspace.isInitialized)); - }); - - Promise.all(tasks).then(() => { - this._setupFileWatcher(); - }); - } - protected getCompletionOptions(workspace: Workspace, params?: CompletionParams): CompletionOptions { return { format: this.client.completionDocFormat, @@ -1387,42 +1380,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { } } - async updateSettingsForWorkspace( - workspace: Workspace, - status: InitStatus | undefined, - serverSettings?: ServerSettings - ): Promise { - status?.markCalled(); - - serverSettings = serverSettings ?? (await this.getSettings(workspace)); - - // Set logging level first. - (this.console as ConsoleWithLogLevel).level = serverSettings.logLevel ?? LogLevel.Info; - - // Apply the new path to the workspace (before restarting the service). - serverSettings.pythonPath = this._workspaceFactory.applyPythonPath(workspace, serverSettings.pythonPath); - - // Then use the updated settings to restart the service. - this.updateOptionsAndRestartService(workspace, serverSettings); - - workspace.disableLanguageServices = !!serverSettings.disableLanguageServices; - workspace.disableOrganizeImports = !!serverSettings.disableOrganizeImports; - - // Don't use workspace.isInitialized directly since it might have been - // reset due to pending config change event. - // The workspace is now open for business. - status?.resolve(); - } - - updateOptionsAndRestartService( - workspace: Workspace, - serverSettings: ServerSettings, - typeStubTargetImportName?: string - ) { - AnalyzerServiceExecutor.runWithOptions(this.rootPath, workspace, serverSettings, typeStubTargetImportName); - workspace.searchPathsToWatch = workspace.service.librarySearchPathsToWatch ?? []; - } - protected onWorkspaceCreated(workspace: Workspace) { // Update settings on this workspace (but only if initialize has happened) if (this._initialized) { @@ -1456,6 +1413,69 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return this.createAnalyzerService(name, services, libraryReanalysisTimeProvider); } + protected recordUserInteractionTime() { + // Tell all of the services that the user is actively + // interacting with one or more editors, so they should + // back off from performing any work. + this._workspaceFactory.items().forEach((workspace: { service: { recordUserInteractionTime: () => void } }) => { + workspace.service.recordUserInteractionTime(); + }); + } + + protected getDocumentationUrlForDiagnosticRule(rule: string): string | undefined { + // Configuration.md is configured to have a link for every rule name. + return `https://github.com/microsoft/pyright/blob/main/docs/configuration.md#${rule}`; + } + + protected abstract createProgressReporter(): ProgressReporter; + + protected canNavigateToFile(path: string, fs: FileSystem): boolean { + return canNavigateToFile(fs, path); + } + + private _setupFileWatcher() { + if (!this.client.hasWatchFileCapability) { + return; + } + + const watchKind = WatchKind.Create | WatchKind.Change | WatchKind.Delete; + + // Set default (config files and all workspace files) first. + const watchers: FileSystemWatcher[] = [ + ...configFileNames.map((fileName) => ({ globPattern: `**/${fileName}`, kind: watchKind })), + { globPattern: '**', kind: watchKind }, + ]; + + // Add all python search paths to watch list + if (this.client.hasWatchFileRelativePathCapability) { + // Dedup search paths from all workspaces. + // Get rid of any search path under workspace root since it is already watched by + // "**" above. + const foldersToWatch = deduplicateFolders( + this._workspaceFactory + .getNonDefaultWorkspaces() + .map((w) => w.searchPathsToWatch.filter((p) => !p.startsWith(w.rootPath))) + ); + + foldersToWatch.forEach((p) => { + const globPattern = isFile(this._serviceFS, p, /* treatZipDirectoryAsFile */ true) + ? { baseUri: convertPathToUri(this._serviceFS, getDirectoryPath(p)), pattern: getFileName(p) } + : { baseUri: convertPathToUri(this._serviceFS, p), pattern: '**' }; + + watchers.push({ globPattern, kind: watchKind }); + }); + } + + // File watcher is pylance wide service. Dispose all existing file watchers and create new ones. + this._connection.client.register(DidChangeWatchedFilesNotification.type, { watchers }).then((d) => { + if (this._lastFileWatcherRegistration) { + this._lastFileWatcherRegistration.dispose(); + } + + this._lastFileWatcherRegistration = d; + }); + } + private _sendDiagnostics(params: PublishDiagnosticsParams[]) { for (const param of params) { this._connection.sendDiagnostics(param); @@ -1596,24 +1616,4 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return convertedDiags; } - - protected recordUserInteractionTime() { - // Tell all of the services that the user is actively - // interacting with one or more editors, so they should - // back off from performing any work. - this._workspaceFactory.items().forEach((workspace: { service: { recordUserInteractionTime: () => void } }) => { - workspace.service.recordUserInteractionTime(); - }); - } - - protected getDocumentationUrlForDiagnosticRule(rule: string): string | undefined { - // Configuration.md is configured to have a link for every rule name. - return `https://github.com/microsoft/pyright/blob/main/docs/configuration.md#${rule}`; - } - - protected abstract createProgressReporter(): ProgressReporter; - - protected canNavigateToFile(path: string, fs: FileSystem): boolean { - return canNavigateToFile(fs, path); - } } diff --git a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts index dec3f33dc..85331475c 100644 --- a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts +++ b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts @@ -229,6 +229,10 @@ export class CallHierarchyProvider { return callItems; } + private get _evaluator(): TypeEvaluator { + return this._program.evaluator!; + } + private _getTargetDeclaration(referencesResult: ReferencesResult): { targetDecl: Declaration; callItemUri: string; @@ -271,10 +275,6 @@ export class CallHierarchyProvider { return { targetDecl, callItemUri, symbolName }; } - private get _evaluator(): TypeEvaluator { - return this._program.evaluator!; - } - private _getIncomingCallsForDeclaration( parseResults: ParseResults, filePath: string, diff --git a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts index d6db4927b..aff872673 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts @@ -24,8 +24,8 @@ import { createSynthesizedAliasDeclaration, getDeclarationsWithUsesLocalNameRemoved, } from '../analyzer/declarationUtils'; -import { getModuleNode, getStringNodeValueRange } from '../analyzer/parseTreeUtils'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; +import { getModuleNode, getStringNodeValueRange } from '../analyzer/parseTreeUtils'; import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; import { ScopeType } from '../analyzer/scope'; import * as ScopeUtils from '../analyzer/scopeUtils'; @@ -63,6 +63,45 @@ export enum DocumentSymbolCollectorUseCase { // This walker looks for symbols that are semantically equivalent // to the requested symbol. export class DocumentSymbolCollector extends ParseTreeWalker { + private _results: CollectionResult[] = []; + private _dunderAllNameNodes = new Set(); + private _initFunction: FunctionNode | undefined; + private _symbolNames: Set = new Set(); + + constructor( + symbolNames: string[], + private _declarations: Declaration[], + private _evaluator: TypeEvaluator, + private _cancellationToken: CancellationToken, + private _startingNode: ParseNode, + private _treatModuleInImportAndFromImportSame = false, + private _skipUnreachableCode = true, + private _useCase = DocumentSymbolCollectorUseCase.Reference + ) { + super(); + + // Start with the symbols passed in + symbolNames.forEach((s) => this._symbolNames.add(s)); + + // Don't report strings in __all__ right away, that will + // break the assumption on the result ordering. + this._setDunderAllNodes(this._startingNode); + + // Check if one of our symbols is __init__ and we + // have a class declaration in the list and we are + // computing symbols for references and not rename. + const initDeclaration = _declarations.find( + (d) => d.type === DeclarationType.Function && d.node.name.value === '__init__' + ); + if (initDeclaration && _useCase === DocumentSymbolCollectorUseCase.Reference) { + const classDeclaration = _declarations.find((d) => d.type === DeclarationType.Class); + if (classDeclaration) { + this._initFunction = initDeclaration.node as FunctionNode; + this._symbolNames.add((classDeclaration.node as ClassNode).name.value); + } + } + } + static collectFromNode( node: NameNode, evaluator: TypeEvaluator, @@ -161,45 +200,6 @@ export class DocumentSymbolCollector extends ParseTreeWalker { return resolvedDeclarations; } - private _results: CollectionResult[] = []; - private _dunderAllNameNodes = new Set(); - private _initFunction: FunctionNode | undefined; - private _symbolNames: Set = new Set(); - - constructor( - symbolNames: string[], - private _declarations: Declaration[], - private _evaluator: TypeEvaluator, - private _cancellationToken: CancellationToken, - private _startingNode: ParseNode, - private _treatModuleInImportAndFromImportSame = false, - private _skipUnreachableCode = true, - private _useCase = DocumentSymbolCollectorUseCase.Reference - ) { - super(); - - // Start with the symbols passed in - symbolNames.forEach((s) => this._symbolNames.add(s)); - - // Don't report strings in __all__ right away, that will - // break the assumption on the result ordering. - this._setDunderAllNodes(this._startingNode); - - // Check if one of our symbols is __init__ and we - // have a class declaration in the list and we are - // computing symbols for references and not rename. - const initDeclaration = _declarations.find( - (d) => d.type === DeclarationType.Function && d.node.name.value === '__init__' - ); - if (initDeclaration && _useCase === DocumentSymbolCollectorUseCase.Reference) { - const classDeclaration = _declarations.find((d) => d.type === DeclarationType.Class); - if (classDeclaration) { - this._initFunction = initDeclaration.node as FunctionNode; - this._symbolNames.add((classDeclaration.node as ClassNode).name.value); - } - } - } - collect() { this.walk(this._startingNode); return this._results; @@ -283,7 +283,8 @@ export class DocumentSymbolCollector extends ParseTreeWalker { ) ); if (match) { - // Special case for __init__ being one of our symbol names and we have a classname as the other. + // Special case for __init__ being one of our symbol names and we + // have a class name as the other. if (this._initFunction) { // If this is a method, must be an __init__ reference. if (match.type === DeclarationType.Function) { diff --git a/packages/pyright-internal/src/languageService/renameModuleProvider.ts b/packages/pyright-internal/src/languageService/renameModuleProvider.ts index 4a98064bb..4e6489519 100644 --- a/packages/pyright-internal/src/languageService/renameModuleProvider.ts +++ b/packages/pyright-internal/src/languageService/renameModuleProvider.ts @@ -18,15 +18,15 @@ import { isVariableDeclaration, } from '../analyzer/declaration'; import { createSynthesizedAliasDeclaration, getNameFromDeclaration } from '../analyzer/declarationUtils'; -import { createImportedModuleDescriptor, ImportResolver, ModuleNameAndType } from '../analyzer/importResolver'; +import { ImportResolver, ModuleNameAndType, createImportedModuleDescriptor } from '../analyzer/importResolver'; import { + ImportStatement, + ImportStatements, getDirectoryLeadingDotsPointsTo, getImportGroupFromModuleNameAndType, getRelativeModuleName, getTopLevelImports, haveSameParentModule, - ImportStatement, - ImportStatements, } from '../analyzer/importStatementUtils'; import { getDottedNameWithGivenNodeAsLastName, @@ -69,13 +69,13 @@ import { ImportAsNode, ImportFromAsNode, ImportFromNode, - isExpressionNode, MemberAccessNode, ModuleNameNode, ModuleNode, NameNode, ParseNode, ParseNodeType, + isExpressionNode, } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { CollectionResult, DocumentSymbolCollector, DocumentSymbolCollectorUseCase } from './documentSymbolCollector'; @@ -87,6 +87,42 @@ enum UpdateType { } export class RenameModuleProvider { + private readonly _newModuleFilePath: string; + private readonly _moduleNames: string[]; + private readonly _newModuleNames: string[]; + private readonly _onlyNameChanged: boolean; + private readonly _aliasIntroduced = new Set(); + private readonly _textEditTracker = new TextEditTracker(); + + private constructor( + private _fs: FileSystem, + private _evaluator: TypeEvaluator, + private _moduleFilePath: string, + newModuleFilePath: string, + private _moduleNameAndType: ModuleNameAndType, + private _newModuleNameAndType: ModuleNameAndType, + private _type: UpdateType, + public declarations: Declaration[], + private _token: CancellationToken + ) { + // moduleName and newModuleName are always in the absolute path form. + this._newModuleFilePath = resolvePaths(newModuleFilePath); + + this._moduleNames = this._moduleName.split('.'); + this._newModuleNames = this._newModuleName.split('.'); + + this._onlyNameChanged = haveSameParentModule(this._moduleNames, this._newModuleNames); + assert(this._type !== UpdateType.Folder || this._onlyNameChanged, 'We only support simple rename for folder'); + } + + get lastModuleName() { + return this._moduleNames[this._moduleNames.length - 1]; + } + + get textEditTracker(): TextEditTracker { + return this._textEditTracker; + } + static createForModule( importResolver: ImportResolver, configOptions: ConfigOptions, @@ -302,6 +338,65 @@ export class RenameModuleProvider { } } + getEdits(): FileEditAction[] { + return this._textEditTracker.getEdits(this._token); + } + + renameReferences(parseResults: ParseResults) { + switch (this._type) { + case UpdateType.Folder: + return this._renameFolderReferences(parseResults); + case UpdateType.File: + return this._renameModuleReferences(parseResults); + case UpdateType.Symbol: + return this._updateSymbolReferences(parseResults); + default: + return assertNever(this._type, `${this._type} is unknown`); + } + } + + tryGetFirstSymbolUsage(parseResults: ParseResults, symbol?: { name: string; decls: Declaration[] }) { + const name = symbol?.name ?? getNameFromDeclaration(this.declarations[0]) ?? ''; + const collector = new DocumentSymbolCollector( + [name], + symbol?.decls ?? this.declarations, + this._evaluator!, + this._token, + parseResults.parseTree, + /* treatModuleImportAndFromImportSame */ true, + /* skipUnreachableCode */ false + ); + + for (const result of collector.collect().sort((r1, r2) => r1.range.start - r2.range.start)) { + // We only care about symbol usages, not alias decl of the symbol. + if ( + isImportModuleName(result.node) || + isImportAlias(result.node) || + isFromImportModuleName(result.node) || + isFromImportName(result.node) || + isFromImportAlias(result.node) + ) { + continue; + } + + return result.range.start; + } + + return undefined; + } + + private get _moduleName() { + return this._moduleNameAndType.moduleName; + } + + private get _newLastModuleName() { + return this._newModuleNames[this._newModuleNames.length - 1]; + } + + private get _newModuleName() { + return this._newModuleNameAndType.moduleName; + } + private static _create( importResolver: ImportResolver, configOptions: ConfigOptions, @@ -356,89 +451,6 @@ export class RenameModuleProvider { ); } - private readonly _newModuleFilePath: string; - private readonly _moduleNames: string[]; - private readonly _newModuleNames: string[]; - private readonly _onlyNameChanged: boolean; - private readonly _aliasIntroduced = new Set(); - private readonly _textEditTracker = new TextEditTracker(); - - private constructor( - private _fs: FileSystem, - private _evaluator: TypeEvaluator, - private _moduleFilePath: string, - newModuleFilePath: string, - private _moduleNameAndType: ModuleNameAndType, - private _newModuleNameAndType: ModuleNameAndType, - private _type: UpdateType, - public declarations: Declaration[], - private _token: CancellationToken - ) { - // moduleName and newModuleName are always in the absolute path form. - this._newModuleFilePath = resolvePaths(newModuleFilePath); - - this._moduleNames = this._moduleName.split('.'); - this._newModuleNames = this._newModuleName.split('.'); - - this._onlyNameChanged = haveSameParentModule(this._moduleNames, this._newModuleNames); - assert(this._type !== UpdateType.Folder || this._onlyNameChanged, 'We only support simple rename for folder'); - } - - get lastModuleName() { - return this._moduleNames[this._moduleNames.length - 1]; - } - - get textEditTracker(): TextEditTracker { - return this._textEditTracker; - } - - getEdits(): FileEditAction[] { - return this._textEditTracker.getEdits(this._token); - } - - renameReferences(parseResults: ParseResults) { - switch (this._type) { - case UpdateType.Folder: - return this._renameFolderReferences(parseResults); - case UpdateType.File: - return this._renameModuleReferences(parseResults); - case UpdateType.Symbol: - return this._updateSymbolReferences(parseResults); - default: - return assertNever(this._type, `${this._type} is unknown`); - } - } - - tryGetFirstSymbolUsage(parseResults: ParseResults, symbol?: { name: string; decls: Declaration[] }) { - const name = symbol?.name ?? getNameFromDeclaration(this.declarations[0]) ?? ''; - const collector = new DocumentSymbolCollector( - [name], - symbol?.decls ?? this.declarations, - this._evaluator!, - this._token, - parseResults.parseTree, - /* treatModuleImportAndFromImportSame */ true, - /* skipUnreachableCode */ false - ); - - for (const result of collector.collect().sort((r1, r2) => r1.range.start - r2.range.start)) { - // We only care about symbol usages, not alias decl of the symbol. - if ( - isImportModuleName(result.node) || - isImportAlias(result.node) || - isFromImportModuleName(result.node) || - isFromImportName(result.node) || - isFromImportAlias(result.node) - ) { - continue; - } - - return result.range.start; - } - - return undefined; - } - private _updateSymbolReferences(parseResults: ParseResults) { const filePath = getFileInfo(parseResults.parseTree).filePath; const isSource = filePath === this._moduleFilePath; @@ -1366,18 +1378,6 @@ export class RenameModuleProvider { // ex) x.y.z used in "from x.y.z import ..." return moduleName; } - - private get _moduleName() { - return this._moduleNameAndType.moduleName; - } - - private get _newLastModuleName() { - return this._newModuleNames[this._newModuleNames.length - 1]; - } - - private get _newModuleName() { - return this._newModuleNameAndType.moduleName; - } } class ModuleNameCollector extends ParseTreeWalker { diff --git a/packages/pyright-internal/src/languageService/signatureHelpProvider.ts b/packages/pyright-internal/src/languageService/signatureHelpProvider.ts index f3ad436d6..5d5730646 100644 --- a/packages/pyright-internal/src/languageService/signatureHelpProvider.ts +++ b/packages/pyright-internal/src/languageService/signatureHelpProvider.ts @@ -59,6 +59,10 @@ export class SignatureHelpProvider { return this._convert(this._getSignatureHelp()); } + private get _evaluator(): TypeEvaluator { + return this._program.evaluator!; + } + private _getSignatureHelp(): SignatureHelpResults | undefined { throwIfCancellationRequested(this._token); if (!this._parseResults) { @@ -214,10 +218,6 @@ export class SignatureHelpProvider { return { signatures, activeSignature, activeParameter }; } - private get _evaluator(): TypeEvaluator { - return this._program.evaluator!; - } - private _makeSignature(callNode: CallNode, signature: CallSignature): SignatureInfo { const functionType = signature.type; const stringParts = this._evaluator.printFunctionParts(functionType, PrintTypeFlags.ExpandTypedDictArgs); diff --git a/packages/pyright-internal/src/parser/characterStream.ts b/packages/pyright-internal/src/parser/characterStream.ts index e37b19d58..a232da49b 100644 --- a/packages/pyright-internal/src/parser/characterStream.ts +++ b/packages/pyright-internal/src/parser/characterStream.ts @@ -27,10 +27,6 @@ export class CharacterStream { this._isEndOfStream = text.length === 0; } - getText(): string { - return this._text; - } - get position(): number { return this._position; } @@ -44,6 +40,22 @@ export class CharacterStream { return this._currentChar; } + get nextChar(): number { + return this.position + 1 < this._text.length ? this._text.charCodeAt(this.position + 1) : 0; + } + + get prevChar(): number { + return this.position - 1 >= 0 ? this._text.charCodeAt(this.position - 1) : 0; + } + + get length(): number { + return this._text.length; + } + + getText(): string { + return this._text; + } + // We also expose a (non-property) method that is // the equivalent of currentChar above. This allows // us to work around assumptions in the TypeScript @@ -53,14 +65,6 @@ export class CharacterStream { return this._currentChar; } - get nextChar(): number { - return this.position + 1 < this._text.length ? this._text.charCodeAt(this.position + 1) : 0; - } - - get prevChar(): number { - return this.position - 1 >= 0 ? this._text.charCodeAt(this.position - 1) : 0; - } - isEndOfStream(): boolean { return this._isEndOfStream; } @@ -126,10 +130,6 @@ export class CharacterStream { return this._text.charCodeAt(index); } - get length(): number { - return this._text.length; - } - private _checkBounds(): void { if (this._position < 0) { this._position = 0; diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index 8145efb87..6c5634903 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -19,7 +19,7 @@ import { assert } from '../common/debug'; import { Diagnostic, DiagnosticAddendum } from '../common/diagnostic'; import { DiagnosticSink } from '../common/diagnosticSink'; import { convertOffsetsToRange, convertPositionToOffset } from '../common/positionUtils'; -import { latestStablePythonVersion, PythonVersion } from '../common/pythonVersion'; +import { PythonVersion, latestStablePythonVersion } from '../common/pythonVersion'; import { TextRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { timingStats } from '../common/timing'; @@ -50,12 +50,10 @@ import { ErrorNode, ExceptNode, ExpressionNode, - extendRange, - FormatStringNode, ForNode, + FormatStringNode, FunctionAnnotationNode, FunctionNode, - getNextNodeId, GlobalNode, IfNode, ImportAsNode, @@ -117,6 +115,8 @@ import { WithNode, YieldFromNode, YieldNode, + extendRange, + getNextNodeId, } from './parseNodes'; import * as StringTokenUtils from './stringTokenUtils'; import { Tokenizer, TokenizerOutput } from './tokenizer'; @@ -129,11 +129,11 @@ import { NumberToken, OperatorToken, OperatorType, - softKeywords, StringToken, StringTokenFlags, Token, TokenType, + softKeywords, } from './tokenizerTypes'; interface ListResult { @@ -148,6 +148,13 @@ interface SubscriptListResult { } export class ParseOptions { + isStubFile: boolean; + pythonVersion: PythonVersion; + reportInvalidStringEscapeSequence: boolean; + skipFunctionAndClassBody: boolean; + ipythonMode: IPythonMode; + reportErrorsForParsedStringContents: boolean; + constructor() { this.isStubFile = false; this.pythonVersion = latestStablePythonVersion; @@ -156,13 +163,6 @@ export class ParseOptions { this.ipythonMode = IPythonMode.None; this.reportErrorsForParsedStringContents = false; } - - isStubFile: boolean; - pythonVersion: PythonVersion; - reportInvalidStringEscapeSequence: boolean; - skipFunctionAndClassBody: boolean; - ipythonMode: IPythonMode; - reportErrorsForParsedStringContents: boolean; } export interface ParseResults { diff --git a/packages/pyright-internal/src/pyrightFileSystem.ts b/packages/pyright-internal/src/pyrightFileSystem.ts index b2fcfe388..936e94c83 100644 --- a/packages/pyright-internal/src/pyrightFileSystem.ts +++ b/packages/pyright-internal/src/pyrightFileSystem.ts @@ -245,6 +245,10 @@ export class PyrightFileSystem this._partialStubPackagePaths.clear(); } + protected override _isMovedEntry(path: string) { + return this._partialStubPackagePaths.has(path) || super._isMovedEntry(path); + } + private _getRelativePathPartialStubs(path: string) { const paths: string[] = []; @@ -279,8 +283,4 @@ export class PyrightFileSystem searchAllStubs(path); return paths; } - - protected override _isMovedEntry(path: string) { - return this._partialStubPackagePaths.has(path) || super._isMovedEntry(path); - } } diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts b/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts index 17df885a6..f8060fa91 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts @@ -28,10 +28,10 @@ import { UriParser } from '../../../common/uriParser'; import { LanguageServerInterface, MessageAction, ServerSettings, WindowInterface } from '../../../languageServerBase'; import { CodeActionProvider } from '../../../languageService/codeActionProvider'; import { - createInitStatus, WellKnownWorkspaceKinds, Workspace, WorkspacePythonPathKind, + createInitStatus, } from '../../../workspaceFactory'; import { TestAccessHost } from '../testAccessHost'; import { HostSpecificFeatures } from './testState'; @@ -76,6 +76,10 @@ export class TestFeatures implements HostSpecificFeatures { } export class TestLanguageService implements LanguageServerInterface { + readonly rootPath = path.sep; + readonly window = new TestWindow(); + readonly supportAdvancedEdits = true; + private readonly _workspace: Workspace; private readonly _defaultWorkspace: Workspace; private readonly _uriParser: UriParser; @@ -143,10 +147,6 @@ export class TestLanguageService implements LanguageServerInterface { restart(): void { // Don't do anything } - - readonly rootPath = path.sep; - readonly window = new TestWindow(); - readonly supportAdvancedEdits = true; } class TestWindow implements WindowInterface { diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 1cec9c25d..3510d9e44 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -1463,6 +1463,104 @@ export class TestState { this._cancellationToken.resetCancelled(); } + convertPositionToOffset(fileName: string, position: Position): number { + const lines = this._getTextRangeCollection(fileName); + return convertPositionToOffset(position, lines)!; + } + + convertOffsetToPosition(fileName: string, offset: number): Position { + const lines = this._getTextRangeCollection(fileName); + + return convertOffsetToPosition(offset, lines); + } + + analyze() { + while (this.program.analyze()) { + // Continue to call analyze until it completes. Since we're not + // specifying a timeout, it should complete the first time. + } + } + + protected getFileContent(fileName: string): string { + const files = this.testData.files.filter( + (f) => comparePaths(f.fileName, fileName, this.testFS.ignoreCase) === Comparison.EqualTo + ); + return files[0].content; + } + + protected convertOffsetsToRange(fileName: string, startOffset: number, endOffset: number): PositionRange { + const lines = this._getTextRangeCollection(fileName); + + return { + start: convertOffsetToPosition(startOffset, lines), + end: convertOffsetToPosition(endOffset, lines), + }; + } + + protected raiseError(message: string): never { + throw new Error(this._messageAtLastKnownMarker(message)); + } + + protected createMultiMap(values?: T[], getKey?: (t: T) => string): MultiMap { + const map = new Map() as MultiMap; + map.add = multiMapAdd; + map.remove = multiMapRemove; + + if (values && getKey) { + for (const value of values) { + map.add(getKey(value), value); + } + } + + return map; + + function multiMapAdd(this: MultiMap, key: string, value: T) { + let values = this.get(key); + if (values) { + values.push(value); + } else { + this.set(key, (values = [value])); + } + return values; + } + + function multiMapRemove(this: MultiMap, key: string, value: T) { + const values = this.get(key); + if (values) { + values.forEach((v, i, arr) => { + if (v === value) { + arr.splice(i, 1); + } + }); + if (!values.length) { + this.delete(key); + } + } + } + } + + protected _rangeText({ fileName, pos, end }: Range): string { + return this.getFileContent(fileName).slice(pos, end); + } + + protected verifyCompletionItem(expected: _.FourSlashCompletionItem, actual: CompletionItem) { + assert.strictEqual(actual.label, expected.label); + assert.strictEqual(actual.detail, expected.detail); + assert.strictEqual(actual.kind, expected.kind); + + assert.strictEqual(actual.insertText, expected.insertionText); + this._verifyEdit(actual.textEdit as TextEdit, expected.textEdit); + this._verifyEdits(actual.additionalTextEdits, expected.additionalTextEdits); + + if (expected.detailDescription !== undefined) { + assert.strictEqual(actual.labelDetails?.description, expected.detailDescription); + } + + if (expected.commitCharacters !== undefined) { + expect(expected.commitCharacters.sort()).toEqual(actual.commitCharacters?.sort() ?? []); + } + } + private _convertGlobalOptionsToConfigOptions(projectRoot: string, mountPaths?: Map): ConfigOptions { const configOptions = new ConfigOptions(projectRoot); @@ -1505,33 +1603,6 @@ export class TestState { return configOptions; } - protected getFileContent(fileName: string): string { - const files = this.testData.files.filter( - (f) => comparePaths(f.fileName, fileName, this.testFS.ignoreCase) === Comparison.EqualTo - ); - return files[0].content; - } - - convertPositionToOffset(fileName: string, position: Position): number { - const lines = this._getTextRangeCollection(fileName); - return convertPositionToOffset(position, lines)!; - } - - convertOffsetToPosition(fileName: string, offset: number): Position { - const lines = this._getTextRangeCollection(fileName); - - return convertOffsetToPosition(offset, lines); - } - - protected convertOffsetsToRange(fileName: string, startOffset: number, endOffset: number): PositionRange { - const lines = this._getTextRangeCollection(fileName); - - return { - start: convertOffsetToPosition(startOffset, lines), - end: convertOffsetToPosition(endOffset, lines), - }; - } - private _getParseResult(fileName: string) { const file = this.program.getBoundSourceFile(fileName)!; return file.getParseResults()!; @@ -1548,10 +1619,6 @@ export class TestState { return tokenizer.tokenize(fileContents).lines; } - protected raiseError(message: string): never { - throw new Error(this._messageAtLastKnownMarker(message)); - } - private _messageAtLastKnownMarker(message: string) { const locationDescription = this.lastKnownMarker ? this.lastKnownMarker @@ -1584,48 +1651,6 @@ export class TestState { return text.replace(/\s/g, ''); } - protected createMultiMap(values?: T[], getKey?: (t: T) => string): MultiMap { - const map = new Map() as MultiMap; - map.add = multiMapAdd; - map.remove = multiMapRemove; - - if (values && getKey) { - for (const value of values) { - map.add(getKey(value), value); - } - } - - return map; - - function multiMapAdd(this: MultiMap, key: string, value: T) { - let values = this.get(key); - if (values) { - values.push(value); - } else { - this.set(key, (values = [value])); - } - return values; - } - - function multiMapRemove(this: MultiMap, key: string, value: T) { - const values = this.get(key); - if (values) { - values.forEach((v, i, arr) => { - if (v === value) { - arr.splice(i, 1); - } - }); - if (!values.length) { - this.delete(key); - } - } - } - } - - protected _rangeText({ fileName, pos, end }: Range): string { - return this.getFileContent(fileName).slice(pos, end); - } - private _getOnlyRange() { const ranges = this.getRanges(); if (ranges.length !== 1) { @@ -1778,13 +1803,6 @@ export class TestState { return position <= editStart ? position : position < editEnd ? -1 : position + length - +(editEnd - editStart); } - public analyze() { - while (this.program.analyze()) { - // Continue to call analyze until it completes. Since we're not - // specifying a timeout, it should complete the first time. - } - } - private _getDiagnosticsPerFile() { const sourceFiles = this._files.map((f) => this.program.getSourceFile(f)); const results = sourceFiles.map((sourceFile, index) => { @@ -1927,24 +1945,6 @@ export class TestState { this.raiseError(`doesn't contain expected result: ${stringify(extra)}, actual: ${stringify(left)}`); } } - - protected verifyCompletionItem(expected: _.FourSlashCompletionItem, actual: CompletionItem) { - assert.strictEqual(actual.label, expected.label); - assert.strictEqual(actual.detail, expected.detail); - assert.strictEqual(actual.kind, expected.kind); - - assert.strictEqual(actual.insertText, expected.insertionText); - this._verifyEdit(actual.textEdit as TextEdit, expected.textEdit); - this._verifyEdits(actual.additionalTextEdits, expected.additionalTextEdits); - - if (expected.detailDescription !== undefined) { - assert.strictEqual(actual.labelDetails?.description, expected.detailDescription); - } - - if (expected.commitCharacters !== undefined) { - expect(expected.commitCharacters.sort()).toEqual(actual.commitCharacters?.sort() ?? []); - } - } } export function parseAndGetTestState( diff --git a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts index efc509665..86932cb7c 100644 --- a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts +++ b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts @@ -19,8 +19,8 @@ import { } from '../../../common/fileSystem'; import * as pathUtil from '../../../common/pathUtils'; import { bufferFrom, createIOError } from '../utils'; -import { closeIterator, getIterator, Metadata, nextResult, SortedMap } from './../utils'; -import { validate, ValidationFlags } from './pathValidation'; +import { Metadata, SortedMap, closeIterator, getIterator, nextResult } from './../utils'; +import { ValidationFlags, validate } from './pathValidation'; export const MODULE_PATH = pathUtil.normalizeSlashes('/'); @@ -112,18 +112,18 @@ export class TestFileSystem implements FileSystem { } /** - * Makes the file system read-only. + * Gets the file system shadowed by this file system. */ - makeReadonly() { - Object.freeze(this); - return this; + get shadowRoot() { + return this._shadowRoot; } /** - * Gets the file system shadowed by this file system. + * Makes the file system read-only. */ - get shadowRoot() { - return this._shadowRoot; + makeReadonly() { + Object.freeze(this); + return this; } /** @@ -201,14 +201,6 @@ export class TestFileSystem implements FileSystem { return this._filemeta(node); } - private _filemeta(node: Inode): Metadata { - if (!node.meta) { - const parentMeta = node.shadowRoot && this._shadowRoot && this._shadowRoot._filemeta(node.shadowRoot); - node.meta = new Metadata(parentMeta); - } - return node.meta; - } - /** * Get the pathname of the current working directory. * @@ -371,40 +363,6 @@ export class TestFileSystem implements FileSystem { return URI.file(path).toString(); } - private _scan(path: string, stats: Stats, axis: Axis, traversal: Traversal, noFollow: boolean, results: string[]) { - if (axis === 'ancestors-or-self' || axis === 'self' || axis === 'descendants-or-self') { - if (!traversal.accept || traversal.accept(path, stats)) { - results.push(path); - } - } - if (axis === 'ancestors-or-self' || axis === 'ancestors') { - const dirname = pathUtil.getDirectoryPath(path); - if (dirname !== path) { - try { - const stats = this._stat(this._walk(dirname, noFollow)); - if (!traversal.traverse || traversal.traverse(dirname, stats)) { - this._scan(dirname, stats, 'ancestors-or-self', traversal, noFollow, results); - } - } catch { - /* ignored */ - } - } - } - if (axis === 'descendants-or-self' || axis === 'descendants') { - if (stats.isDirectory() && (!traversal.traverse || traversal.traverse(path, stats))) { - for (const file of this.readdirSync(path)) { - try { - const childpath = pathUtil.combinePaths(path, file); - const stats = this._stat(this._walk(childpath, noFollow)); - this._scan(childpath, stats, 'descendants-or-self', traversal, noFollow, results); - } catch { - /* ignored */ - } - } - } - } - } - /** * Mounts a physical or virtual file system at a location in this virtual file system. * @@ -562,27 +520,6 @@ export class TestFileSystem implements FileSystem { return this._stat(this._walk(this._resolve(path), /* noFollow */ true)); } - private _stat(entry: WalkResult) { - const node = entry.node; - if (!node) { - throw createIOError(`ENOENT`, entry.realpath); - } - return new Stats( - node.dev, - node.ino, - node.mode, - node.nlink, - /* rdev */ 0, - /* size */ isFile(node) ? this._getSize(node) : isSymlink(node) ? node.symlink.length : 0, - /* blksize */ 4096, - /* blocks */ 0, - node.atimeMs, - node.mtimeMs, - node.ctimeMs, - node.birthtimeMs - ); - } - /** * Read a directory. If `path` is a symbolic link, it is dereferenced. * @@ -640,15 +577,6 @@ export class TestFileSystem implements FileSystem { this._mkdir(this._walk(this._resolve(path), /* noFollow */ true)); } - private _mkdir({ parent, links, node: existingNode, basename }: WalkResult) { - if (existingNode) { - throw createIOError('EEXIST'); - } - const time = this.time(); - const node = this._mknod(parent ? parent.dev : ++devCount, S_IFDIR, /* mode */ 0o777, time); - this._addLink(parent, links, basename, node, time); - } - /** * Remove a directory. * @@ -949,6 +877,78 @@ export class TestFileSystem implements FileSystem { // Do Nothing } + private _mkdir({ parent, links, node: existingNode, basename }: WalkResult) { + if (existingNode) { + throw createIOError('EEXIST'); + } + const time = this.time(); + const node = this._mknod(parent ? parent.dev : ++devCount, S_IFDIR, /* mode */ 0o777, time); + this._addLink(parent, links, basename, node, time); + } + + private _filemeta(node: Inode): Metadata { + if (!node.meta) { + const parentMeta = node.shadowRoot && this._shadowRoot && this._shadowRoot._filemeta(node.shadowRoot); + node.meta = new Metadata(parentMeta); + } + return node.meta; + } + + private _scan(path: string, stats: Stats, axis: Axis, traversal: Traversal, noFollow: boolean, results: string[]) { + if (axis === 'ancestors-or-self' || axis === 'self' || axis === 'descendants-or-self') { + if (!traversal.accept || traversal.accept(path, stats)) { + results.push(path); + } + } + if (axis === 'ancestors-or-self' || axis === 'ancestors') { + const dirname = pathUtil.getDirectoryPath(path); + if (dirname !== path) { + try { + const stats = this._stat(this._walk(dirname, noFollow)); + if (!traversal.traverse || traversal.traverse(dirname, stats)) { + this._scan(dirname, stats, 'ancestors-or-self', traversal, noFollow, results); + } + } catch { + /* ignored */ + } + } + } + if (axis === 'descendants-or-self' || axis === 'descendants') { + if (stats.isDirectory() && (!traversal.traverse || traversal.traverse(path, stats))) { + for (const file of this.readdirSync(path)) { + try { + const childpath = pathUtil.combinePaths(path, file); + const stats = this._stat(this._walk(childpath, noFollow)); + this._scan(childpath, stats, 'descendants-or-self', traversal, noFollow, results); + } catch { + /* ignored */ + } + } + } + } + } + + private _stat(entry: WalkResult) { + const node = entry.node; + if (!node) { + throw createIOError(`ENOENT`, entry.realpath); + } + return new Stats( + node.dev, + node.ino, + node.mode, + node.nlink, + /* rdev */ 0, + /* size */ isFile(node) ? this._getSize(node) : isSymlink(node) ? node.symlink.length : 0, + /* blksize */ 4096, + /* blocks */ 0, + node.atimeMs, + node.mtimeMs, + node.ctimeMs, + node.birthtimeMs + ); + } + private static _diffWorker( container: FileSet, changed: TestFileSystem, @@ -1026,7 +1026,7 @@ export class TestFileSystem implements FileSystem { return false; } - // no difference if the root links are empty and unshadowed + // no difference if the root links are empty and not shadowed if (!changed._lazy.links && !changed._shadowRoot && !base._lazy.links && !base._shadowRoot) { return false; } From 9861bae7e4af0e2ae09d5ef52ea10981016f1f68 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Apr 2023 17:39:31 -0700 Subject: [PATCH 077/525] Removed the unnecessary use of "public" keyword, which is the default. Added eslint rule to enforce this convention. --- .eslintrc.json | 1 + packages/pyright-internal/src/analyzer/importResolver.ts | 6 +----- packages/pyright-internal/src/analyzer/typeUtils.ts | 2 +- packages/pyright-internal/src/common/uriParser.ts | 6 +++--- .../src/languageService/renameModuleProvider.ts | 2 +- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 54154ca38..1995929f2 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -40,6 +40,7 @@ "@typescript-eslint/no-namespace": 0, "@typescript-eslint/no-non-null-assertion": 0, "@typescript-eslint/no-this-alias": 0, + "@typescript-eslint/explicit-member-accessibility": ["error", { "accessibility": "no-public" }], "@typescript-eslint/no-unused-vars": [ "error", { diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 554c3c3fd..e9ca72485 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -121,11 +121,7 @@ export class ImportResolver { private _stdlibModules: Set | undefined; protected cachedParentImportResults: ParentDirectoryCache; - constructor( - public readonly fileSystem: FileSystem, - protected _configOptions: ConfigOptions, - public readonly host: Host - ) { + constructor(readonly fileSystem: FileSystem, protected _configOptions: ConfigOptions, readonly host: Host) { this.cachedParentImportResults = new ParentDirectoryCache(() => this.getPythonSearchPaths([])); } diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index e0a21fe31..8f69cc4b5 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -209,7 +209,7 @@ export interface SignatureWithCount { } export class UniqueSignatureTracker { - public signaturesSeen: SignatureWithCount[]; + signaturesSeen: SignatureWithCount[]; constructor() { this.signaturesSeen = []; diff --git a/packages/pyright-internal/src/common/uriParser.ts b/packages/pyright-internal/src/common/uriParser.ts index 071b3cc6f..49ebf77d7 100644 --- a/packages/pyright-internal/src/common/uriParser.ts +++ b/packages/pyright-internal/src/common/uriParser.ts @@ -17,16 +17,16 @@ import { convertUriToPath } from './pathUtils'; export class UriParser { constructor(protected readonly _fs: FileSystem) {} - public decodeTextDocumentPosition(textDocument: TextDocumentIdentifier, position: Position) { + decodeTextDocumentPosition(textDocument: TextDocumentIdentifier, position: Position) { const filePath = this.decodeTextDocumentUri(textDocument.uri); return { filePath, position }; } - public decodeTextDocumentUri(uriString: string) { + decodeTextDocumentUri(uriString: string) { return convertUriToPath(this._fs, uriString); } - public isLocal(uri: URI | string | undefined) { + isLocal(uri: URI | string | undefined) { if (!uri) { return false; } diff --git a/packages/pyright-internal/src/languageService/renameModuleProvider.ts b/packages/pyright-internal/src/languageService/renameModuleProvider.ts index 4e6489519..11f739d81 100644 --- a/packages/pyright-internal/src/languageService/renameModuleProvider.ts +++ b/packages/pyright-internal/src/languageService/renameModuleProvider.ts @@ -1396,7 +1396,7 @@ class ModuleNameCollector extends ParseTreeWalker { return false; } - public static collect(root: ModuleNode) { + static collect(root: ModuleNode) { const collector = new ModuleNameCollector(); collector.walk(root); From 035b1c0a1916a9ad53de6b239364807ff27b6ed8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Apr 2023 21:56:39 -0700 Subject: [PATCH 078/525] Fixed type evaluation bug that led to a false positive in cases involving bidirectional type inference of a constructor whose type variable is invariant and the argument is a dictionary, set, or list expression. This addresses https://github.com/microsoft/pyright/issues/4986. --- .../src/analyzer/typeEvaluator.ts | 132 ++++++++---------- .../src/tests/samples/constructor2.py | 2 +- .../src/tests/samples/genericTypes110.py | 17 +++ .../src/tests/typeEvaluator2.test.ts | 6 + 4 files changed, 83 insertions(+), 74 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes110.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 28527d3f5..d31a66eed 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9025,7 +9025,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const returnType = mapSubtypes(inferenceContext.expectedType, (expectedSubType) => { expectedSubType = transformPossibleRecursiveTypeAlias(expectedSubType); + const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); + typeVarContext.addSolveForScope(getTypeVarScopeId(constructorMethodType)); + if ( populateTypeVarContextBasedOnExpectedType( evaluatorInterface, @@ -9035,12 +9038,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getTypeVarScopesForNode(errorNode) ) ) { + const specializedConstructor = applySolvedTypeVars(constructorMethodType, typeVarContext); + let callResult: CallResult | undefined; useSpeculativeMode(errorNode, () => { callResult = validateCallArguments( errorNode, argList, - { type: constructorMethodType }, + { type: specializedConstructor }, typeVarContext.clone(), skipUnknownArgCheck ); @@ -9052,7 +9057,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions callResult = validateCallArguments( errorNode, argList, - { type: constructorMethodType }, + { type: specializedConstructor }, typeVarContext, skipUnknownArgCheck ); @@ -9067,7 +9072,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - return applyExpectedSubtypeForConstructor(type, expectedSubType, typeVarContext); + return applyExpectedSubtypeForConstructor(type, expectedSubType, inferenceContext, typeVarContext); } } @@ -9084,11 +9089,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function applyExpectedSubtypeForConstructor( type: ClassType, expectedSubtype: Type, + inferenceContext: InferenceContext, typeVarContext: TypeVarContext ): Type | undefined { const specializedType = applySolvedTypeVars(ClassType.cloneAsInstance(type), typeVarContext); - if (!assignType(expectedSubtype, specializedType)) { + if ( + !assignType( + expectedSubtype, + specializedType, + /* diag */ undefined, + /* destTypeVarContext */ inferenceContext?.typeVarContext?.clone(), + /* srcTypeVarContext */ undefined + ) + ) { return undefined; } @@ -9111,7 +9125,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (inferenceContext) { const specializedExpectedType = mapSubtypes(inferenceContext.expectedType, (expectedSubtype) => { - return applyExpectedSubtypeForConstructor(type, expectedSubtype, typeVarContext); + return applyExpectedSubtypeForConstructor(type, expectedSubtype, inferenceContext, typeVarContext); }); if (!isNever(specializedExpectedType)) { @@ -13539,7 +13553,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions expectedKeyType, expectedValueType, undefined, - expectedDiagAddendum + expectedDiagAddendum, + inferenceContext ) ) { isIncomplete = true; @@ -13554,14 +13569,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ClassType.isBuiltIn(inferenceContext.expectedType, 'MutableMapping')); const specializedKeyType = inferTypeArgFromExpectedType( - expectedKeyType, + makeInferenceContext(expectedKeyType, inferenceContext?.typeVarContext), keyTypes.map((result) => result.type), /* isNarrowable */ false ); const specializedValueType = inferTypeArgFromExpectedType( - expectedValueType, + makeInferenceContext(expectedValueType, inferenceContext?.typeVarContext), valueTypes.map((result) => result.type), - /* isNarrowable */ !isValueTypeInvariant + !isValueTypeInvariant ); if (!specializedKeyType || !specializedValueType) { return undefined; @@ -13649,7 +13664,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions expectedKeyType?: Type, expectedValueType?: Type, expectedTypedDictEntries?: Map, - expectedDiagAddendum?: DiagnosticAddendum + expectedDiagAddendum?: DiagnosticAddendum, + inferenceContext?: InferenceContext ): boolean { let isIncomplete = false; @@ -13662,7 +13678,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions entryNode.keyExpression, /* flags */ undefined, makeInferenceContext( - expectedKeyType ?? (forceStrictInference ? NeverType.createNever() : undefined) + expectedKeyType ?? (forceStrictInference ? NeverType.createNever() : undefined), + inferenceContext?.typeVarContext ) ); @@ -13693,7 +13710,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions valueTypeResult = getTypeOfExpression( entryNode.valueExpression, /* flags */ undefined, - makeInferenceContext(effectiveValueType) + makeInferenceContext(effectiveValueType, inferenceContext?.typeVarContext) ); } else { const effectiveValueType = @@ -13701,7 +13718,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions valueTypeResult = getTypeOfExpression( entryNode.valueExpression, /* flags */ undefined, - makeInferenceContext(effectiveValueType) + makeInferenceContext(effectiveValueType, inferenceContext?.typeVarContext) ); } @@ -13737,7 +13754,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const unexpandedTypeResult = getTypeOfExpression( entryNode.expandExpression, /* flags */ undefined, - makeInferenceContext(expectedType) + makeInferenceContext(expectedType, inferenceContext?.typeVarContext) ); if (unexpandedTypeResult.isIncomplete) { @@ -13971,13 +13988,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } }); - const isExpectedTypeListOrSet = + const isTypeInvariant = isClassInstance(inferenceContext.expectedType) && ClassType.isBuiltIn(inferenceContext.expectedType, builtInClassName); const specializedEntryType = inferTypeArgFromExpectedType( - expectedEntryType, + makeInferenceContext(expectedEntryType, inferenceContext?.typeVarContext), entryTypes, - /* isNarrowable */ !isExpectedTypeListOrSet + !isTypeInvariant ); if (!specializedEntryType) { return { type: UnknownType.create(), isIncomplete, typeErrors: true, expectedTypeDiagAddendum }; @@ -14089,74 +14106,43 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } function inferTypeArgFromExpectedType( - expectedType: Type, + inferenceContext: InferenceContext, entryTypes: Type[], isNarrowable: boolean ): Type | undefined { - let targetTypeVar: TypeVarType; - let useSynthesizedTypeVar = false; + // If the expected type is Any, the resulting type becomes Any. + if (isAnyOrUnknown(inferenceContext.expectedType)) { + return inferenceContext.expectedType; + } - // If the expected type is a TypeVar, use it as a target to find - // a common (narrowest) type among the entry types. - if (isTypeVar(expectedType)) { - if (expectedType.details.isParamSpec || expectedType.details.isVariadic) { - return undefined; - } + const typeVarContext = inferenceContext.typeVarContext?.clone(); + let isCompatible = true; - targetTypeVar = expectedType; - } else { - // Synthesize a temporary bound type var. We will attempt to assign all list - // entries to this type var, possibly narrowing the type in the process. - targetTypeVar = TypeVarType.createInstance('__typeArg'); - targetTypeVar.details.isSynthesized = true; - targetTypeVar.details.boundType = makeTopLevelTypeVarsConcrete(expectedType); - - // Use a dummy scope ID. It needs to be a non-empty string. - targetTypeVar.scopeId = '__typeArgScopeId'; - useSynthesizedTypeVar = true; - } - - // First, try to assign entries with their literal values stripped. - // The only time we don't want to strip them is if the expected - // type explicitly includes literals. - let typeVarContext = new TypeVarContext(targetTypeVar.scopeId); - - if (useSynthesizedTypeVar) { - typeVarContext.setTypeVarType( - targetTypeVar, - isNarrowable ? undefined : expectedType, - /* narrowBoundNoLiterals */ undefined, - expectedType - ); - } + entryTypes.forEach((entryType) => { + if ( + isCompatible && + !assignType(inferenceContext.expectedType, entryType, /* diag */ undefined, typeVarContext) + ) { + isCompatible = false; + } + }); - if ( - entryTypes.every((entryType) => - assignType(targetTypeVar, stripLiteralValue(entryType), /* diag */ undefined, typeVarContext) - ) - ) { - return applySolvedTypeVars(targetTypeVar, typeVarContext); + if (!isCompatible) { + return undefined; } - // Allocate a fresh typeVarContext before we try again with literals not stripped. - typeVarContext = new TypeVarContext(targetTypeVar.scopeId); - - if (useSynthesizedTypeVar) { - typeVarContext.setTypeVarType( - targetTypeVar, - isNarrowable ? undefined : expectedType, - /* narrowBoundNoLiterals */ undefined, - expectedType - ); + if (isNarrowable && entryTypes.length > 0) { + const combinedTypes = combineTypes(entryTypes); + return containsLiteralType(inferenceContext.expectedType) + ? combinedTypes + : stripLiteralValue(combinedTypes); } - if ( - entryTypes.every((entryType) => assignType(targetTypeVar!, entryType, /* diag */ undefined, typeVarContext)) - ) { - return applySolvedTypeVars(targetTypeVar, typeVarContext); + if (typeVarContext) { + return applySolvedTypeVars(inferenceContext.expectedType, typeVarContext); } - return undefined; + return inferenceContext.expectedType; } function getTypeOfTernary( diff --git a/packages/pyright-internal/src/tests/samples/constructor2.py b/packages/pyright-internal/src/tests/samples/constructor2.py index 61fcb9684..7eed70519 100644 --- a/packages/pyright-internal/src/tests/samples/constructor2.py +++ b/packages/pyright-internal/src/tests/samples/constructor2.py @@ -162,7 +162,7 @@ def s17(): def s18(): a1: Mapping[object, object] = {"a": 3, "b": 5.6} - reveal_type(a1, expected_text="dict[object, float]") + reveal_type(a1, expected_text="dict[object, float | int]") a2: Dict[object, object] = {"a": 3, "b": 5.6} reveal_type(a2, expected_text="dict[object, object]") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes110.py b/packages/pyright-internal/src/tests/samples/genericTypes110.py new file mode 100644 index 000000000..d4b4e3553 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes110.py @@ -0,0 +1,17 @@ +# This sample tests bidirectional type inference for cases that involve +# constructors and dict inference. + +from typing import TypeVar + +T = TypeVar("T") + + +def func1(some_dict: dict[str, set[T] | frozenset[T]]) -> list[T]: + return [] + + +v1 = func1({"foo": set({1, 2, 3})}) +reveal_type(v1, expected_text="list[int]") + +v2 = func1({"foo": frozenset({1, 2, 3})}) +reveal_type(v2, expected_text="list[int]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 90a22555b..6b86c5e27 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1067,6 +1067,12 @@ test('GenericTypes109', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes110', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes110.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From a359c84ffb4422dc1e7f1ab752ea6c533cc674fd Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Apr 2023 21:58:37 -0700 Subject: [PATCH 079/525] Published 1.1.305 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 8aee7919c..b86ea1bdf 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.304", + "version": "1.1.305", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index c500d831e..2642e39cc 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.304", + "version": "1.1.305", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.304", + "version": "1.1.305", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index dc61de5de..cc73b14d5 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.304", + "version": "1.1.305", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 4ed8a303c..baa049fbf 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.304", + "version": "1.1.305", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.304", + "version": "1.1.305", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 3c707d036..4f93e6786 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.304", + "version": "1.1.305", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 6dff684dd..5c9483a3b 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.304", + "version": "1.1.305", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.304", + "version": "1.1.305", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 94a1152eb..6e55da427 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.304", + "version": "1.1.305", "private": true, "license": "MIT", "author": { From 029e7c45d2f379ca191ee99aac3e960a10096890 Mon Sep 17 00:00:00 2001 From: Rich Chiodo Date: Wed, 26 Apr 2023 02:08:15 -0700 Subject: [PATCH 080/525] Refactor performQuickActions out of program and service (#5010) Co-authored-by: Heejae Chang <1333179+heejaechang@users.noreply.github.com> --- .../pyright-internal/src/analyzer/program.ts | 18 +-------------- .../pyright-internal/src/analyzer/service.ts | 11 +-------- .../src/analyzer/sourceFile.ts | 17 -------------- .../src/commands/quickActionCommand.ts | 5 +++- .../src/languageService/quickActions.ts | 23 ++++++++++++++++++- 5 files changed, 28 insertions(+), 46 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index a756aa0f7..322399601 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -21,7 +21,7 @@ import * as debug from '../common/debug'; import { assert, assertNever } from '../common/debug'; import { Diagnostic, DiagnosticCategory } from '../common/diagnostic'; import { FileDiagnostics } from '../common/diagnosticSink'; -import { FileEditAction, FileEditActions, FileOperations, TextEditAction } from '../common/editAction'; +import { FileEditAction, FileEditActions, FileOperations } from '../common/editAction'; import { Extensions, ProgramView } from '../common/extensibility'; import { LogTracker } from '../common/logTracker'; import { @@ -1988,22 +1988,6 @@ export class Program { }); } - performQuickAction( - filePath: string, - command: string, - args: any[], - token: CancellationToken - ): TextEditAction[] | undefined { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - this._bindFile(sourceFileInfo); - - return sourceFileInfo.sourceFile.performQuickAction(command, args, token); - } - // Returns a value from 0 to 1 (or more) indicating how "full" the cache is // relative to some predetermined high-water mark. We'll compute this value // based on two easy-to-compute metrics: the number of entries in the type diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 1612b35e1..d780edd22 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -24,7 +24,7 @@ import { CommandLineOptions } from '../common/commandLineOptions'; import { ConfigOptions, matchFileSpecs } from '../common/configOptions'; import { ConsoleInterface, LogLevel, StandardConsole, log } from '../common/console'; import { Diagnostic } from '../common/diagnostic'; -import { FileEditActions, TextEditAction } from '../common/editAction'; +import { FileEditActions } from '../common/editAction'; import { Extensions, ProgramView } from '../common/extensibility'; import { FileSystem, FileWatcher, FileWatcherEventType, ignoredWatchEventFunction } from '../common/fileSystem'; import { Host, HostFactory, NoAccessHost } from '../common/host'; @@ -427,15 +427,6 @@ export class AnalyzerService { ); } - performQuickAction( - filePath: string, - command: string, - args: any[], - token: CancellationToken - ): TextEditAction[] | undefined { - return this._program.performQuickAction(filePath, command, args, token); - } - moveSymbolAtPosition( filePath: string, newFilePath: string, diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 5ac8eaa81..89ad9e406 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -19,7 +19,6 @@ import { assert } from '../common/debug'; import { Diagnostic, DiagnosticCategory, TaskListToken, convertLevelToCategory } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { DiagnosticSink, TextRangeDiagnosticSink } from '../common/diagnosticSink'; -import { TextEditAction } from '../common/editAction'; import { Extensions } from '../common/extensibility'; import { FileSystem } from '../common/fileSystem'; import { LogTracker } from '../common/logTracker'; @@ -39,7 +38,6 @@ import { CompletionResults, } from '../languageService/completionProvider'; import { DocumentSymbolProvider, IndexOptions, IndexResults } from '../languageService/documentSymbolProvider'; -import { performQuickAction } from '../languageService/quickActions'; import { ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; import { Localizer } from '../localization/localize'; import { ModuleNode } from '../parser/parseNodes'; @@ -1088,21 +1086,6 @@ export class SourceFile { completionProvider.resolveCompletionItem(completionItem); } - performQuickAction(command: string, args: any[], token: CancellationToken): TextEditAction[] | undefined { - // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults) { - return undefined; - } - - // This command should be called only for open files, in which - // case we should have the file contents already loaded. - if (this.getClientVersion() === undefined) { - return undefined; - } - - return performQuickAction(command, args, this._parseResults, token); - } - bind( configOptions: ConfigOptions, importLookup: ImportLookup, diff --git a/packages/pyright-internal/src/commands/quickActionCommand.ts b/packages/pyright-internal/src/commands/quickActionCommand.ts index 4fae6c2e0..6b0ef9a24 100644 --- a/packages/pyright-internal/src/commands/quickActionCommand.ts +++ b/packages/pyright-internal/src/commands/quickActionCommand.ts @@ -10,6 +10,7 @@ import { CancellationToken, ExecuteCommandParams } from 'vscode-languageserver'; import { convertToFileTextEdits, convertToWorkspaceEdit } from '../common/workspaceEditUtils'; import { LanguageServerInterface } from '../languageServerBase'; +import { performQuickAction } from '../languageService/quickActions'; import { ServerCommand } from './commandController'; import { Commands } from './commands'; @@ -27,7 +28,9 @@ export class QuickActionCommand implements ServerCommand { return []; } - const editActions = workspace.service.performQuickAction(filePath, params.command, otherArgs, token); + const editActions = workspace.service.run((p) => { + return performQuickAction(filePath, params.command, otherArgs, p, token); + }, token); return convertToWorkspaceEdit(workspace.service.fs, convertToFileTextEdits(filePath, editActions ?? [])); } diff --git a/packages/pyright-internal/src/languageService/quickActions.ts b/packages/pyright-internal/src/languageService/quickActions.ts index 162724ea0..e24d4a139 100644 --- a/packages/pyright-internal/src/languageService/quickActions.ts +++ b/packages/pyright-internal/src/languageService/quickActions.ts @@ -20,13 +20,34 @@ import { Commands } from '../commands/commands'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { TextEditAction } from '../common/editAction'; +import { ProgramView } from '../common/extensibility'; import { convertOffsetToPosition } from '../common/positionUtils'; import { TextRange } from '../common/textRange'; import { ParseNode, ParseNodeType } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { ImportSorter } from './importSorter'; -export function performQuickAction(command: string, args: any[], parseResults: ParseResults, token: CancellationToken) { +export function performQuickAction( + filePath: string, + command: string, + args: any[], + programView: ProgramView, + token: CancellationToken +) { + const sourceFileInfo = programView.getBoundSourceFileInfo(filePath); + + // This command should be called only for open files, in which + // case we should have the file contents already loaded. + if (!sourceFileInfo || sourceFileInfo.sourceFile.getClientVersion() === undefined) { + return []; + } + + const parseResults = sourceFileInfo.sourceFile.getParseResults(); + // If we have no completed analysis job, there's nothing to do. + if (!parseResults) { + return []; + } + if (command === Commands.orderImports) { const importSorter = new ImportSorter(parseResults, token); return importSorter.sort(); From 93e66094a72f6c0c97e24f152e71e1ce9a0a2b92 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 10:01:54 -0700 Subject: [PATCH 081/525] Improved type evaluation of `yield from` expression so it handles operands that are unions. --- .../src/analyzer/typeEvaluator.ts | 27 ++++++++++--------- .../src/tests/samples/generators2.py | 20 +++++++++++++- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d31a66eed..0c16e230a 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -14226,28 +14226,29 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getTypeOfYieldFrom(node: YieldFromNode): TypeResult { const yieldFromTypeResult = getTypeOfExpression(node.expression); const yieldFromType = yieldFromTypeResult.type; - let generatorTypeArgs = getGeneratorTypeArgs(yieldFromType); - let returnedType: Type | undefined; + const returnedType = mapSubtypes(yieldFromType, (yieldFromSubtype) => { + // Is the expression a Generator type? + let generatorTypeArgs = getGeneratorTypeArgs(yieldFromSubtype); + if (generatorTypeArgs) { + return generatorTypeArgs.length >= 2 ? generatorTypeArgs[2] : UnknownType.create(); + } - // Is the expression a Generator type? - if (generatorTypeArgs) { - returnedType = generatorTypeArgs.length >= 2 ? generatorTypeArgs[2] : UnknownType.create(); - } else if (isClassInstance(yieldFromType) && ClassType.isBuiltIn(yieldFromType, 'Coroutine')) { // Handle old-style (pre-await) Coroutines as a special case. - returnedType = UnknownType.create(); - } else { + if (isClassInstance(yieldFromSubtype) && ClassType.isBuiltIn(yieldFromSubtype, 'Coroutine')) { + return UnknownType.create(); + } + + // Handle simple iterables. const iterableType = getTypeOfIterable(yieldFromTypeResult, /* isAsync */ false, node)?.type ?? UnknownType.create(); // Does the iterable return a Generator? generatorTypeArgs = getGeneratorTypeArgs(iterableType); - if (generatorTypeArgs) { - returnedType = generatorTypeArgs.length >= 2 ? generatorTypeArgs[2] : UnknownType.create(); - } - } + return generatorTypeArgs && generatorTypeArgs.length >= 2 ? generatorTypeArgs[2] : UnknownType.create(); + }); - return { type: returnedType || UnknownType.create() }; + return { type: returnedType }; } function getTypeOfLambda(node: LambdaNode, inferenceContext: InferenceContext | undefined): TypeResult { diff --git a/packages/pyright-internal/src/tests/samples/generators2.py b/packages/pyright-internal/src/tests/samples/generators2.py index d704b366b..a56bd4c28 100644 --- a/packages/pyright-internal/src/tests/samples/generators2.py +++ b/packages/pyright-internal/src/tests/samples/generators2.py @@ -1,7 +1,9 @@ # This sample tests various type checking operations relating to # generator functions that use the "yield from" clause. -from typing import Iterator +from typing import Generator, Iterator, TypeVar + +T = TypeVar("T") class ClassA: @@ -29,3 +31,19 @@ def generator2() -> Iterator[ClassB]: # This should also generate an error because it # yields the wrong type. yield from [1] + + +def generator3( + arg: Generator[int, None, T] | Generator[str, None, T] +) -> Generator[int | str, None, T]: + x = yield from arg + reveal_type(x, expected_text="T@generator3") + return x + + +def generator4( + arg: Generator[int, None, int] | Generator[str, None, str] +) -> Generator[int | str, None, int | str]: + x = yield from arg + reveal_type(x, expected_text="int | str") + return x From 710d6adffb922cded0f5f0cb9486ad76e851647e Mon Sep 17 00:00:00 2001 From: Rich Chiodo Date: Wed, 26 Apr 2023 10:43:30 -0700 Subject: [PATCH 082/525] Push pylance changes to pyright (#5015) --- .../pyright-internal/src/analyzer/checker.ts | 1 + .../pyright-internal/src/analyzer/program.ts | 11 +++++++- .../pyright-internal/src/analyzer/service.ts | 4 +++ .../src/common/extensibility.ts | 7 +++--- .../src/common/realFileSystem.ts | 7 +++++- .../src/languageService/definitionProvider.ts | 25 +++++++++++-------- .../documentSymbolCollector.ts | 8 +++++- .../src/languageService/hoverProvider.ts | 1 + .../languageService/renameModuleProvider.ts | 2 +- .../tests/moveSymbol.updateReference.test.ts | 16 ++++++++++++ 10 files changed, 64 insertions(+), 18 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 176e2af26..8773521a2 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -3885,6 +3885,7 @@ export class Checker extends ParseTreeWalker { this._sourceMapper, this._evaluator, namePartNodes[namePartNodes.length - 1], + namePartNodes[namePartNodes.length - 1].start, CancellationToken.None ); const paths = definitions ? definitions.map((d) => d.path) : []; diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 322399601..2d0019593 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -665,14 +665,23 @@ export class Program { // _handleMemoryHighUsage will make sure we don't OOM and // at the end of this method, we will drop all trees and symbol tables // created due to indexing. + let count = 0; const initiallyParsedSet = new Set(); for (const sourceFileInfo of this._sourceFileList) { if (!sourceFileInfo.sourceFile.isParseRequired()) { initiallyParsedSet.add(sourceFileInfo); } + + if (isUserCode(sourceFileInfo) && !sourceFileInfo.sourceFile.isIndexingRequired()) { + count++; + } + } + + if (count >= MaxWorkspaceIndexFileCount) { + // Already processed max files. + return 0; } - let count = 0; for (const sourceFileInfo of this._sourceFileList) { if (!isUserCode(sourceFileInfo) || !sourceFileInfo.sourceFile.isIndexingRequired()) { continue; diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index d780edd22..313875f19 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -349,6 +349,10 @@ export class AnalyzerService { return this._program.getBoundSourceFile(path)?.getParseResults(); } + getSourceFile(path: string) { + return this._program.getBoundSourceFile(path); + } + getTextOnRange(filePath: string, range: Range, token: CancellationToken) { return this._program.getTextOnRange(filePath, range, token); } diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index feab11668..88a82b405 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -96,8 +96,8 @@ export interface ProgramMutator { } export interface ExtensionFactory { - createProgramExtension: (view: ProgramView, mutator: ProgramMutator) => ProgramExtension; - createLanguageServiceExtension: (languageserver: LanguageServerBase) => LanguageServiceExtension; + createProgramExtension?: (view: ProgramView, mutator: ProgramMutator) => ProgramExtension; + createLanguageServiceExtension?: (languageserver: LanguageServerBase) => LanguageServiceExtension; } export interface CommandExtension { @@ -134,6 +134,7 @@ export interface DeclarationProviderExtension { tryGetDeclarations( evaluator: TypeEvaluator, node: ParseNode, + offset: number, useCase: DeclarationUseCase, token: CancellationToken ): Declaration[]; @@ -202,7 +203,7 @@ export namespace Extensions { let result = s.createLanguageServiceExtension ? s.createLanguageServiceExtension(languageServer) : undefined; - if (result) { + if (result && !(result as any).owner) { // Add the extra parameter that we use for finding later. result = Object.defineProperty(result, 'owner', { value: languageServer }); } diff --git a/packages/pyright-internal/src/common/realFileSystem.ts b/packages/pyright-internal/src/common/realFileSystem.ts index 75ed2faad..7dd8c7d45 100644 --- a/packages/pyright-internal/src/common/realFileSystem.ts +++ b/packages/pyright-internal/src/common/realFileSystem.ts @@ -9,6 +9,7 @@ import { getLibzipSync } from '@yarnpkg/libzip'; import * as fs from 'fs'; import * as tmp from 'tmp'; import { URI } from 'vscode-uri'; +import { isMainThread } from 'worker_threads'; import { ConsoleInterface, NullConsole } from './console'; import { @@ -223,7 +224,11 @@ class RealFileSystem implements FileSystem { } chdir(path: string) { - process.chdir(path); + // If this file system happens to be running in a worker thread, + // then we can't call 'chdir'. + if (isMainThread) { + process.chdir(path); + } } readdirSync(path: string): string[] { diff --git a/packages/pyright-internal/src/languageService/definitionProvider.ts b/packages/pyright-internal/src/languageService/definitionProvider.ts index 9d96c3e2e..975d9063b 100644 --- a/packages/pyright-internal/src/languageService/definitionProvider.ts +++ b/packages/pyright-internal/src/languageService/definitionProvider.ts @@ -39,11 +39,12 @@ class DefinitionProviderBase { protected readonly _sourceMapper: SourceMapper, protected readonly _evaluator: TypeEvaluator, protected readonly _node: ParseNode | undefined, + protected readonly _offset: number, private readonly _filter: DefinitionFilter, protected readonly _token: CancellationToken ) {} - getDefinitionsForNode(node: ParseNode) { + getDefinitionsForNode(node: ParseNode, offset: number) { throwIfCancellationRequested(this._token); const definitions: DocumentRange[] = []; @@ -54,6 +55,7 @@ class DefinitionProviderBase { const declarations = e.declarationProviderExtension.tryGetDeclarations( this._evaluator, node, + offset, DeclarationUseCase.Definition, this._token ); @@ -173,19 +175,20 @@ export class DefinitionProvider extends DefinitionProviderBase { ) { const sourceMapper = program.getSourceMapper(filePath, token); const parseResults = program.getParseResults(filePath); - const node = _tryGetNode(parseResults, position); + const { node, offset } = _tryGetNode(parseResults, position); - super(sourceMapper, program.evaluator!, node, filter, token); + super(sourceMapper, program.evaluator!, node, offset, filter, token); } static getDefinitionsForNode( sourceMapper: SourceMapper, evaluator: TypeEvaluator, node: ParseNode, + offset: number, token: CancellationToken ) { - const provider = new DefinitionProviderBase(sourceMapper, evaluator, node, DefinitionFilter.All, token); - return provider.getDefinitionsForNode(node); + const provider = new DefinitionProviderBase(sourceMapper, evaluator, node, offset, DefinitionFilter.All, token); + return provider.getDefinitionsForNode(node, offset); } getDefinitions(): DocumentRange[] | undefined { @@ -193,7 +196,7 @@ export class DefinitionProvider extends DefinitionProviderBase { return undefined; } - return this.getDefinitionsForNode(this._node); + return this.getDefinitionsForNode(this._node, this._offset); } } @@ -203,9 +206,9 @@ export class TypeDefinitionProvider extends DefinitionProviderBase { constructor(program: ProgramView, filePath: string, position: Position, token: CancellationToken) { const sourceMapper = program.getSourceMapper(filePath, token, /*mapCompiled*/ false, /*preferStubs*/ true); const parseResults = program.getParseResults(filePath); - const node = _tryGetNode(parseResults, position); + const { node, offset } = _tryGetNode(parseResults, position); - super(sourceMapper, program.evaluator!, node, DefinitionFilter.All, token); + super(sourceMapper, program.evaluator!, node, offset, DefinitionFilter.All, token); this._filePath = filePath; } @@ -255,15 +258,15 @@ export class TypeDefinitionProvider extends DefinitionProviderBase { function _tryGetNode(parseResults: ParseResults | undefined, position: Position) { if (!parseResults) { - return undefined; + return { node: undefined, offset: 0 }; } const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); if (offset === undefined) { - return undefined; + return { node: undefined, offset: 0 }; } - return ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset); + return { node: ParseTreeUtils.findNodeByOffset(parseResults.parseTree, offset), offset }; } function _createModuleEntry(filePath: string): DocumentRange { diff --git a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts index aff872673..2860db431 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts @@ -455,7 +455,13 @@ export class DocumentSymbolCollector extends ParseTreeWalker { useCase === DocumentSymbolCollectorUseCase.Rename ? DeclarationUseCase.Rename : DeclarationUseCase.References; - const extras = e.declarationProviderExtension?.tryGetDeclarations(evaluator, node, declUseCase, token); + const extras = e.declarationProviderExtension?.tryGetDeclarations( + evaluator, + node, + node.start, + declUseCase, + token + ); if (extras && extras.length > 0) { result.push(...extras); } diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index 468f8f5a0..1e2f17fe1 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -115,6 +115,7 @@ export class HoverProvider { e.declarationProviderExtension?.tryGetDeclarations( this._evaluator, node, + offset, DeclarationUseCase.Definition, this._token ) || [] diff --git a/packages/pyright-internal/src/languageService/renameModuleProvider.ts b/packages/pyright-internal/src/languageService/renameModuleProvider.ts index 11f739d81..def6cd972 100644 --- a/packages/pyright-internal/src/languageService/renameModuleProvider.ts +++ b/packages/pyright-internal/src/languageService/renameModuleProvider.ts @@ -494,7 +494,7 @@ export class RenameModuleProvider { } // Exclude symbol decl itself. - hasSymbolUsage = isSource + hasSymbolUsage ||= isSource ? !this.declarations.some((d) => TextRange.containsRange(d.node, nodeFound)) : true; diff --git a/packages/pyright-internal/src/tests/moveSymbol.updateReference.test.ts b/packages/pyright-internal/src/tests/moveSymbol.updateReference.test.ts index 5e3348c7f..bee788f84 100644 --- a/packages/pyright-internal/src/tests/moveSymbol.updateReference.test.ts +++ b/packages/pyright-internal/src/tests/moveSymbol.updateReference.test.ts @@ -1182,6 +1182,22 @@ test('handle wildcard import in destination file', () => { testFromCode(code); }); +test('move symbol whose decl is after reference', () => { + const code = ` +// @filename: test.py +//// [|{|"r":"from moved import mysum!n!!n!!n!"|}|]def myfunc(): +//// z = mysum() +//// +//// [|{|"r":""|}def [|/*marker*/mysum|](): +//// return 1|] + +// @filename: moved.py +//// [|{|"r":"def mysum():!n! return 1", "name": "dest"|}|] + `; + + testFromCode(code); +}); + function testFromCode(code: string) { const state = parseAndGetTestState(code).state; From 53d458eed66e11a68acfc8cf5b9b2b54ecb202bf Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 11:04:00 -0700 Subject: [PATCH 083/525] Added code to handle the case where a module uses an `from A.B.C import X` statement within the `A/B/C/__init__.py` module. This addresses https://github.com/microsoft/pyright/issues/5003. --- .../pyright-internal/src/analyzer/binder.ts | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index c5c7b05d3..b5adadc6a 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -1898,15 +1898,17 @@ export class Binder extends ParseTreeWalker { isInExceptSuite: this._isInExceptSuite, }; - // Handle the case of "from . import X" within an __init__ file. - // In this case, we want to always resolve to the submodule rather - // than the resolved path. - if ( - fileName === '__init__' && - node.module.leadingDots === 1 && - node.module.nameParts.length === 0 - ) { - loadSymbolsFromPath = false; + // Handle the case where this is an __init__.py file and the imported + // module name refers to itself. The most common situation where this occurs + // is with a "from . import X" form, but it can also occur with + // an absolute import (e.g. "from A.B.C import X"). In this case, we want to + // always resolve to the submodule rather than the resolved path. + if (fileName === '__init__') { + if (node.module.leadingDots === 1 && node.module.nameParts.length === 0) { + loadSymbolsFromPath = false; + } else if (resolvedPath === this._fileInfo.filePath) { + loadSymbolsFromPath = false; + } } } From e38349866218f6263846788bacf67b2c9eb21bc6 Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Wed, 26 Apr 2023 11:31:38 -0700 Subject: [PATCH 084/525] some tweak on performQuickAction (#5013) --- .../pyright-internal/src/commands/quickActionCommand.ts | 2 +- .../pyright-internal/src/languageService/quickActions.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/commands/quickActionCommand.ts b/packages/pyright-internal/src/commands/quickActionCommand.ts index 6b0ef9a24..460ba03b5 100644 --- a/packages/pyright-internal/src/commands/quickActionCommand.ts +++ b/packages/pyright-internal/src/commands/quickActionCommand.ts @@ -29,7 +29,7 @@ export class QuickActionCommand implements ServerCommand { } const editActions = workspace.service.run((p) => { - return performQuickAction(filePath, params.command, otherArgs, p, token); + return performQuickAction(p, filePath, params.command, otherArgs, token); }, token); return convertToWorkspaceEdit(workspace.service.fs, convertToFileTextEdits(filePath, editActions ?? [])); diff --git a/packages/pyright-internal/src/languageService/quickActions.ts b/packages/pyright-internal/src/languageService/quickActions.ts index e24d4a139..c2460b56e 100644 --- a/packages/pyright-internal/src/languageService/quickActions.ts +++ b/packages/pyright-internal/src/languageService/quickActions.ts @@ -28,22 +28,22 @@ import { ParseResults } from '../parser/parser'; import { ImportSorter } from './importSorter'; export function performQuickAction( + programView: ProgramView, filePath: string, command: string, args: any[], - programView: ProgramView, token: CancellationToken ) { - const sourceFileInfo = programView.getBoundSourceFileInfo(filePath); + const sourceFileInfo = programView.getSourceFileInfo(filePath); // This command should be called only for open files, in which // case we should have the file contents already loaded. - if (!sourceFileInfo || sourceFileInfo.sourceFile.getClientVersion() === undefined) { + if (!sourceFileInfo || !sourceFileInfo.isOpenByClient) { return []; } - const parseResults = sourceFileInfo.sourceFile.getParseResults(); // If we have no completed analysis job, there's nothing to do. + const parseResults = programView.getParseResults(filePath); if (!parseResults) { return []; } From c400d889a46752c7b500df5fd7a0bcfd2e8e1101 Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Wed, 26 Apr 2023 11:56:57 -0700 Subject: [PATCH 085/525] Refactored find all references out of program (#5011) * refactored find all references out of program Removed micro-optimization that could potentially compromise immutability for now. We should consider adding it back if it actually causes issues. In practice, the operating system is likely to still have a cache of the file content that was just read from the disk. * addressed feedback --- .../pyright-internal/src/analyzer/program.ts | 113 ++----------- .../pyright-internal/src/analyzer/service.ts | 11 -- .../src/analyzer/sourceFile.ts | 22 --- .../src/common/extensibility.ts | 1 + .../src/languageServerBase.ts | 30 ++-- .../src/languageService/navigationUtils.ts | 15 ++ .../src/languageService/referencesProvider.ts | 152 +++++++++++++++--- .../src/tests/harness/fourslash/testState.ts | 13 +- 8 files changed, 174 insertions(+), 183 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 2d0019593..fa81d3353 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -39,7 +39,7 @@ import { import { convertPositionToOffset, convertRangeToTextRange, convertTextRangeToRange } from '../common/positionUtils'; import { computeCompletionSimilarity } from '../common/stringUtils'; import { TextEditTracker } from '../common/textEditTracker'; -import { doesRangeContain, doRangesIntersect, getEmptyRange, Position, Range, TextRange } from '../common/textRange'; +import { doRangesIntersect, getEmptyRange, Position, Range, TextRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; import { applyTextEditsToString } from '../common/workspaceEditUtils'; @@ -1041,103 +1041,6 @@ export class Program { }); } - reportReferencesForPosition( - filePath: string, - position: Position, - includeDeclaration: boolean, - reporter: ReferenceCallback, - token: CancellationToken - ) { - this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return; - } - - const invokedFromUserFile = isUserCode(sourceFileInfo); - this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); - const referencesResult = this._getDeclarationForPosition( - sourceFileInfo, - position, - DocumentSymbolCollectorUseCase.Reference, - this._createSourceMapper(execEnv, token, sourceFileInfo), - token, - reporter - ); - if (!referencesResult) { - return; - } - - // Do we need to do a global search as well? - if (referencesResult.requiresGlobalSearch) { - for (const curSourceFileInfo of this._sourceFileList) { - throwIfCancellationRequested(token); - - // "Find all references" will only include references from user code - // unless the file is explicitly opened in the editor or it is invoked from non user files. - if (curSourceFileInfo.isOpenByClient || !invokedFromUserFile || isUserCode(curSourceFileInfo)) { - // See if the reference symbol's string is located somewhere within the file. - // If not, we can skip additional processing for the file. - const fileContents = curSourceFileInfo.sourceFile.getFileContent(); - if (!fileContents || referencesResult.symbolNames.some((s) => fileContents.search(s) >= 0)) { - this._bindFile(curSourceFileInfo); - - curSourceFileInfo.sourceFile.addReferences( - referencesResult, - includeDeclaration, - this._evaluator!, - token - ); - } - - // This operation can consume significant memory, so check - // for situations where we need to discard the type cache. - this._handleMemoryHighUsage(); - } - } - - // Make sure to include declarations regardless where they are defined - // if includeDeclaration is set. - if (includeDeclaration) { - for (const decl of referencesResult.declarations) { - throwIfCancellationRequested(token); - - if (referencesResult.locations.some((l) => l.path === decl.path)) { - // Already included. - continue; - } - - const declFileInfo = this.getSourceFileInfo(decl.path); - if (!declFileInfo) { - // The file the declaration belongs to doesn't belong to the program. - continue; - } - - const tempResult = new ReferencesResult( - referencesResult.requiresGlobalSearch, - referencesResult.nodeAtOffset, - referencesResult.symbolNames, - referencesResult.declarations, - referencesResult.useCase - ); - - declFileInfo.sourceFile.addReferences(tempResult, includeDeclaration, this._evaluator!, token); - for (const loc of tempResult.locations) { - // Include declarations only. And throw away any references - if (loc.path === decl.path && doesRangeContain(decl.range, loc.range)) { - referencesResult.addLocations(loc); - } - } - } - } - } else { - sourceFileInfo.sourceFile.addReferences(referencesResult, includeDeclaration, this._evaluator!, token); - } - }); - } - getFileIndex(filePath: string, options: IndexOptions, token: CancellationToken): IndexResults | undefined { if (options.indexingForAutoImportMode) { // Memory optimization. We only want to hold onto symbols @@ -1947,10 +1850,15 @@ export class Program { return editActions; } + const referenceProvider = new ReferencesProvider(this, token); const renameMode = this._getRenameSymbolMode(sourceFileInfo, referencesResult, isDefaultWorkspace); switch (renameMode) { case 'singleFileMode': - sourceFileInfo.sourceFile.addReferences(referencesResult, true, this._evaluator!, token); + referenceProvider.addReferencesToResult( + sourceFileInfo.sourceFile.getFilePath(), + /* includeDeclaration */ true, + referencesResult + ); break; case 'multiFileMode': { @@ -1965,7 +1873,12 @@ export class Program { } this._bindFile(curSourceFileInfo, content); - curSourceFileInfo.sourceFile.addReferences(referencesResult, true, this._evaluator!, token); + + referenceProvider.addReferencesToResult( + curSourceFileInfo.sourceFile.getFilePath(), + /* includeDeclaration */ true, + referencesResult + ); } // This operation can consume significant memory, so check diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 313875f19..e65f4bf9a 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -53,7 +53,6 @@ import { timingStats } from '../common/timing'; import { AutoImportOptions, ImportFormat } from '../languageService/autoImporter'; import { AbbreviationMap, CompletionOptions, CompletionResultsList } from '../languageService/completionProvider'; import { WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; -import { ReferenceCallback } from '../languageService/referencesProvider'; import { AnalysisCompleteCallback } from './analysis'; import { BackgroundAnalysisProgram, BackgroundAnalysisProgramFactory } from './backgroundAnalysisProgram'; import { CacheManager } from './cacheManager'; @@ -369,16 +368,6 @@ export class AnalyzerService { return this._program.getAutoImports(filePath, range, similarityLimit, nameMap, options, token); } - reportReferencesForPosition( - filePath: string, - position: Position, - includeDeclaration: boolean, - reporter: ReferenceCallback, - token: CancellationToken - ) { - this._program.reportReferencesForPosition(filePath, position, includeDeclaration, reporter, token); - } - addSymbolsForDocument(filePath: string, symbolList: DocumentSymbol[], token: CancellationToken) { this._program.addSymbolsForDocument(filePath, symbolList, token); } diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 89ad9e406..19fbf8bca 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -38,7 +38,6 @@ import { CompletionResults, } from '../languageService/completionProvider'; import { DocumentSymbolProvider, IndexOptions, IndexResults } from '../languageService/documentSymbolProvider'; -import { ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; import { Localizer } from '../localization/localize'; import { ModuleNode } from '../parser/parseNodes'; import { ModuleImport, ParseOptions, ParseResults, Parser } from '../parser/parser'; @@ -943,27 +942,6 @@ export class SourceFile { }); } - addReferences( - referencesResult: ReferencesResult, - includeDeclaration: boolean, - evaluator: TypeEvaluator, - token: CancellationToken - ): void { - // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults) { - return; - } - - ReferencesProvider.addReferences( - this._parseResults, - this._filePath, - referencesResult, - includeDeclaration, - evaluator, - token - ); - } - addHierarchicalSymbolsForDocument(symbolList: DocumentSymbol[], token: CancellationToken) { // If we have no completed analysis job, there's nothing to do. if (!this._parseResults && !this._cachedIndexResults) { diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index 88a82b405..b3ae26712 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -41,6 +41,7 @@ export interface SourceFile { // See whether we can convert these to regular properties. getFilePath(): string; isStubFile(): boolean; + getFileContent(): string | undefined; } export interface SourceFileInfo { diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 8fc091fa9..4c28004eb 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -117,7 +117,7 @@ import { DocumentHighlightProvider } from './languageService/documentHighlightPr import { WorkspaceSymbolCallback, convertToFlatSymbols } from './languageService/documentSymbolProvider'; import { HoverProvider } from './languageService/hoverProvider'; import { canNavigateToFile } from './languageService/navigationUtils'; -import { ReferenceCallback } from './languageService/referencesProvider'; +import { ReferencesProvider } from './languageService/referencesProvider'; import { SignatureHelpProvider } from './languageService/signatureHelpProvider'; import { Localizer, setLocaleOverride } from './localization/localize'; import { PyrightFileSystem } from './pyrightFileSystem'; @@ -895,26 +895,14 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return; } - const convert = (locs: DocumentRange[]): Location[] => { - return locs - .filter((loc) => this.canNavigateToFile(loc.path, workspace.service.fs)) - .map((loc) => Location.create(convertPathToUri(workspace.service.fs, loc.path), loc.range)); - }; - - const locations: Location[] = []; - const reporter: ReferenceCallback = resultReporter - ? (locs) => resultReporter.report(convert(locs)) - : (locs) => appendArray(locations, convert(locs)); - - workspace.service.reportReferencesForPosition( - filePath, - position, - params.context.includeDeclaration, - reporter, - source.token - ); - - return locations; + return workspace.service.run((program) => { + return new ReferencesProvider(program, source.token).reportReferences( + filePath, + position, + params.context.includeDeclaration, + resultReporter + ); + }, token); } finally { progress.reporter.done(); source.dispose(); diff --git a/packages/pyright-internal/src/languageService/navigationUtils.ts b/packages/pyright-internal/src/languageService/navigationUtils.ts index dae8e8fde..a6960e4cd 100644 --- a/packages/pyright-internal/src/languageService/navigationUtils.ts +++ b/packages/pyright-internal/src/languageService/navigationUtils.ts @@ -5,8 +5,23 @@ * * Helper functions for navigating files. */ +import { Location } from 'vscode-languageserver-types'; import { ReadOnlyFileSystem } from '../common/fileSystem'; +import { convertPathToUri } from '../common/pathUtils'; +import { DocumentRange } from '../common/textRange'; export function canNavigateToFile(fs: ReadOnlyFileSystem, path: string): boolean { return !fs.isInZipOrEgg(path); } + +export function convertDocumentRangesToLocation(fs: ReadOnlyFileSystem, ranges: DocumentRange[]): Location[] { + return ranges.map((range) => convertDocumentRangeToLocation(fs, range)).filter((loc) => !!loc) as Location[]; +} + +export function convertDocumentRangeToLocation(fs: ReadOnlyFileSystem, range: DocumentRange): Location | undefined { + if (!canNavigateToFile(fs, range.path)) { + return undefined; + } + + return Location.create(convertPathToUri(fs, range.path), range.range); +} diff --git a/packages/pyright-internal/src/languageService/referencesProvider.ts b/packages/pyright-internal/src/languageService/referencesProvider.ts index cbad0b11d..a2b5c0526 100644 --- a/packages/pyright-internal/src/languageService/referencesProvider.ts +++ b/packages/pyright-internal/src/languageService/referencesProvider.ts @@ -8,12 +8,13 @@ * by a location within a file. */ -import { CancellationToken } from 'vscode-languageserver'; +import { CancellationToken, Location, ResultProgressReporter } from 'vscode-languageserver'; import { Declaration, DeclarationType, isAliasDeclaration } from '../analyzer/declaration'; import { getNameFromDeclaration } from '../analyzer/declarationUtils'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { SourceFile } from '../analyzer/sourceFile'; +import { isUserCode } from '../analyzer/sourceFileInfoUtils'; import { SourceMapper } from '../analyzer/sourceMapper'; import { Symbol } from '../analyzer/symbol'; import { isVisibleExternally } from '../analyzer/symbolUtils'; @@ -22,12 +23,13 @@ import { maxTypeRecursionCount } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { assertNever } from '../common/debug'; +import { ProgramView } from '../common/extensibility'; import { convertOffsetToPosition, convertPositionToOffset } from '../common/positionUtils'; -import { DocumentRange, Position } from '../common/textRange'; -import { TextRange } from '../common/textRange'; +import { DocumentRange, Position, TextRange, doesRangeContain } from '../common/textRange'; import { NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { DocumentSymbolCollector, DocumentSymbolCollectorUseCase } from './documentSymbolCollector'; +import { convertDocumentRangesToLocation } from './navigationUtils'; export type ReferenceCallback = (locations: DocumentRange[]) => void; @@ -138,6 +140,130 @@ export class FindReferencesTreeWalker { } export class ReferencesProvider { + constructor(private _program: ProgramView, private _token: CancellationToken) { + // empty + } + + reportReferences( + filePath: string, + position: Position, + includeDeclaration: boolean, + resultReporter?: ResultProgressReporter + ) { + const sourceFileInfo = this._program.getSourceFileInfo(filePath); + if (!sourceFileInfo) { + return; + } + + const parseResults = this._program.getParseResults(filePath); + if (!parseResults) { + return; + } + + const locations: Location[] = []; + const reporter: ReferenceCallback = resultReporter + ? (range) => resultReporter.report(convertDocumentRangesToLocation(this._program.fileSystem, range)) + : (range) => appendArray(locations, convertDocumentRangesToLocation(this._program.fileSystem, range)); + + const invokedFromUserFile = isUserCode(sourceFileInfo); + const referencesResult = ReferencesProvider.getDeclarationForPosition( + this._program.getSourceMapper(filePath, this._token), + parseResults, + filePath, + position, + this._evaluator, + reporter, + DocumentSymbolCollectorUseCase.Reference, + this._token + ); + if (!referencesResult) { + return; + } + + // Do we need to do a global search as well? + if (!referencesResult.requiresGlobalSearch) { + this.addReferencesToResult(sourceFileInfo.sourceFile.getFilePath(), includeDeclaration, referencesResult); + } + + for (const curSourceFileInfo of this._program.getSourceFileInfoList()) { + throwIfCancellationRequested(this._token); + + // "Find all references" will only include references from user code + // unless the file is explicitly opened in the editor or it is invoked from non user files. + if (curSourceFileInfo.isOpenByClient || !invokedFromUserFile || isUserCode(curSourceFileInfo)) { + // See if the reference symbol's string is located somewhere within the file. + // If not, we can skip additional processing for the file. + const fileContents = curSourceFileInfo.sourceFile.getFileContent(); + if (!fileContents || referencesResult.symbolNames.some((s) => fileContents.search(s) >= 0)) { + this.addReferencesToResult( + curSourceFileInfo.sourceFile.getFilePath(), + includeDeclaration, + referencesResult + ); + } + + // This operation can consume significant memory, so check + // for situations where we need to discard the type cache. + this._program.handleMemoryHighUsage(); + } + } + + // Make sure to include declarations regardless where they are defined + // if includeDeclaration is set. + if (includeDeclaration) { + for (const decl of referencesResult.declarations) { + throwIfCancellationRequested(this._token); + + if (referencesResult.locations.some((l) => l.path === decl.path)) { + // Already included. + continue; + } + + const declFileInfo = this._program.getSourceFileInfo(decl.path); + if (!declFileInfo) { + // The file the declaration belongs to doesn't belong to the program. + continue; + } + + const tempResult = new ReferencesResult( + referencesResult.requiresGlobalSearch, + referencesResult.nodeAtOffset, + referencesResult.symbolNames, + referencesResult.declarations, + referencesResult.useCase + ); + + this.addReferencesToResult(declFileInfo.sourceFile.getFilePath(), includeDeclaration, tempResult); + for (const loc of tempResult.locations) { + // Include declarations only. And throw away any references + if (loc.path === decl.path && doesRangeContain(decl.range, loc.range)) { + referencesResult.addLocations(loc); + } + } + } + } + + return locations; + } + + addReferencesToResult(filePath: string, includeDeclaration: boolean, referencesResult: ReferencesResult): void { + const parseResults = this._program.getParseResults(filePath); + if (!parseResults) { + return; + } + + const refTreeWalker = new FindReferencesTreeWalker( + parseResults, + filePath, + referencesResult, + includeDeclaration, + this._evaluator, + this._token + ); + + referencesResult.addLocations(...refTreeWalker.findReferences()); + } + static getDeclarationForNode( sourceMapper: SourceMapper, filePath: string, @@ -219,24 +345,8 @@ export class ReferencesProvider { ); } - static addReferences( - parseResults: ParseResults, - filePath: string, - referencesResult: ReferencesResult, - includeDeclaration: boolean, - evaluator: TypeEvaluator, - token: CancellationToken - ): void { - const refTreeWalker = new FindReferencesTreeWalker( - parseResults, - filePath, - referencesResult, - includeDeclaration, - evaluator, - token - ); - - referencesResult.addLocations(...refTreeWalker.findReferences()); + private get _evaluator(): TypeEvaluator { + return this._program.evaluator!; } } diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 3510d9e44..c4e1ca94d 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -30,7 +30,6 @@ import { findNodeByOffset } from '../../../analyzer/parseTreeUtils'; import { Program } from '../../../analyzer/program'; import { AnalyzerService } from '../../../analyzer/service'; import { CommandResult } from '../../../commands/commandResult'; -import { appendArray } from '../../../common/collectionUtils'; import { ConfigOptions, SignatureDisplayType } from '../../../common/configOptions'; import { ConsoleInterface, NullConsole } from '../../../common/console'; import { Comparison, isNumber, isString, toBoolean } from '../../../common/core'; @@ -61,6 +60,8 @@ import { } from '../../../languageService/definitionProvider'; import { DocumentHighlightProvider } from '../../../languageService/documentHighlightProvider'; import { HoverProvider } from '../../../languageService/hoverProvider'; +import { convertDocumentRangesToLocation } from '../../../languageService/navigationUtils'; +import { ReferencesProvider } from '../../../languageService/referencesProvider'; import { SignatureHelpProvider } from '../../../languageService/signatureHelpProvider'; import { ParseNode } from '../../../parser/parseNodes'; import { ParseResults } from '../../../parser/parser'; @@ -1183,18 +1184,14 @@ export class TestState { const position = this.convertOffsetToPosition(fileName, marker.position); - const actual: DocumentRange[] = []; - this.program.reportReferencesForPosition( + const actual = new ReferencesProvider(this.program, CancellationToken.None).reportReferences( fileName, position, - true, - (locs) => appendArray(actual, locs), - CancellationToken.None + /* includeDeclaration */ true ); - assert.strictEqual(actual?.length ?? 0, expected.length, `${name} has failed`); - for (const r of expected) { + for (const r of convertDocumentRangesToLocation(this.program.fileSystem, expected)) { assert.equal(actual?.filter((d) => this._deepEqual(d, r)).length, 1); } } From 1696023a67dc6422064e35f148b7194953ad1a52 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 12:54:37 -0700 Subject: [PATCH 086/525] Renamed a few internal methods for consistency. No functional change. --- .../src/analyzer/typeEvaluator.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 0c16e230a..2b709f78f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8213,7 +8213,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Use speculative mode so we don't output any diagnostics or // record any final types in the type cache. const callResult = useSpeculativeMode(errorNode, () => { - return validateFunctionArgumentTypesWithExpectedType( + return validateFunctionArgumentTypesWithContext( errorNode, matchResults, effectiveTypeVarContext, @@ -8315,7 +8315,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const finalTypeVarContext = typeVarContext ?? matchedOverloads[0].typeVarContext; finalTypeVarContext.unlock(); finalTypeVarContext.addSolveForScope(getTypeVarScopeId(matchedOverloads[0].overload)); - const finalCallResult = validateFunctionArgumentTypesWithExpectedType( + const finalCallResult = validateFunctionArgumentTypesWithContext( errorNode, matchedOverloads[0].matchResults, finalTypeVarContext, @@ -8516,7 +8516,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } effectiveTypeVarContext.unlock(); - return validateFunctionArgumentTypesWithExpectedType( + return validateFunctionArgumentTypesWithContext( errorNode, lastMatch, effectiveTypeVarContext, @@ -8700,7 +8700,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // for each of the subtypes that comprise the expected type. If // one or more analyzes with no errors, use those results. if (inferenceContext) { - const expectedCallResult = validateConstructorMethodWithExpectedType( + const expectedCallResult = validateConstructorMethodWithContext( errorNode, argList, type, @@ -8812,7 +8812,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If there is an expected type that was not applied above when // handling the __init__ method, try to apply it with the __new__ method. if (inferenceContext && !returnType) { - const expectedCallResult = validateConstructorMethodWithExpectedType( + const expectedCallResult = validateConstructorMethodWithContext( errorNode, argList, type, @@ -9011,7 +9011,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // For a constructor call that targets a generic class and an "expected type" // (i.e. bidirectional inference), this function attempts to infer the correct // specialized return type for the constructor. - function validateConstructorMethodWithExpectedType( + function validateConstructorMethodWithContext( errorNode: ExpressionNode, argList: FunctionArgument[], type: ClassType, @@ -10802,7 +10802,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // After having matched arguments with parameters, this function evaluates the // types of each argument expression and validates that the resulting type is // compatible with the declared type of the corresponding parameter. - function validateFunctionArgumentTypesWithExpectedType( + function validateFunctionArgumentTypesWithContext( errorNode: ExpressionNode, matchResults: MatchArgsToParamsResult, typeVarContext: TypeVarContext, @@ -11280,7 +11280,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }; } - return validateFunctionArgumentTypesWithExpectedType( + return validateFunctionArgumentTypesWithContext( errorNode, matchResults, typeVarContext, From 6ba0184329fcba781169d633bf8659721c1224a2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 15:44:05 -0700 Subject: [PATCH 087/525] Made internal change to interface of validateArgType method in preparation for additional changes. No functional change. --- .../src/analyzer/typeEvaluator.ts | 74 ++++++++++--------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 2b709f78f..1f837b008 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -437,6 +437,14 @@ interface MatchedOverloadInfo { returnType: Type; } +interface ValidateArgTypeOptions { + skipUnknownArgCheck?: boolean; + skipOverloadArg?: boolean; + skipBareTypeVarExpectedType?: boolean; + useNarrowBoundOnly?: boolean; + conditionFilter?: TypeCondition[]; +} + // Maps binary operators to the magic methods that implement them. const binaryOperatorMap: { [operator: number]: [string, string] } = { [OperatorType.Add]: ['__add__', '__radd__'], @@ -10996,18 +11004,28 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // is an overload function, skip it during the first pass // because the selection of the proper overload may depend // on type arguments supplied by other function arguments. - // Set useNarrowBoundOnly to true the first time through - // the loop if we're going to go through the loop multiple - // times. + + // We set useNarrowBoundOnly to true if this is the first + // (but not only) pass through the parameter list because a wide + // bound on a TypeVar (if a narrow bound has not yet been + // established) will unnecessarily constrain the expected type. + + // If the param type is a "bare" TypeVar, don't use it as an + // expected type during the first pass. This causes problems for + // cases where the the call expression result can influence the + // type of the TypeVar, such as in the expression "min(1, max(2, 0.5))". const argResult = validateArgType( argParam, typeVarContext, signatureTracker, { type, isIncomplete: matchResults.isTypeIncomplete }, - skipUnknownArgCheck, - /* skipOverloadArg */ i === 0, - /* isFirstPass */ passCount > 1 && i === 0, - typeCondition + { + skipUnknownArgCheck, + skipOverloadArg: i === 0, + skipBareTypeVarExpectedType: passCount > 1 && i === 0, + useNarrowBoundOnly: passCount > 1 && i === 0, + conditionFilter: typeCondition, + } ); if (argResult.isTypeIncomplete) { @@ -11042,10 +11060,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeVarContext, signatureTracker, { type, isIncomplete: matchResults.isTypeIncomplete }, - skipUnknownArgCheck, - /* skipOverloadArg */ false, - /* isFirstPass */ false, - typeCondition + { + skipUnknownArgCheck, + conditionFilter: typeCondition, + } ); argResults.push(argResult); @@ -11448,10 +11466,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions srcTypeVarContext, signatureTracker, /* functionType */ undefined, - /* skipUnknownArgCheck */ false, - /* skipOverloadArg */ false, - /* isFirstPass */ false, - conditionFilter + { conditionFilter } ); if (!argResult.isCompatible) { @@ -11525,10 +11540,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeVarContext: TypeVarContext, signatureTracker: UniqueSignatureTracker, typeResult: TypeResult | undefined, - skipUnknownCheck: boolean, - skipOverloadArg: boolean, - isFirstPass: boolean, - conditionFilter: TypeCondition[] | undefined + options: ValidateArgTypeOptions ): ArgResult { let argType: Type | undefined; let expectedTypeDiag: DiagnosticAddendum | undefined; @@ -11537,21 +11549,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const functionName = typeResult?.type.details.name; if (argParam.argument.valueExpression) { - // If the param type is a "bare" TypeVar, don't use it as an expected - // type during the first pass. This causes problems for cases where the the - // call expression result can influence the type of the TypeVar, such as in - // the expression "min(1, max(2, 0.5))". We set useNarrowBoundOnly - // to true if this is the first pass through the parameter list because - // a wide bound on a TypeVar (if a narrow bound has not yet been established) - // will unnecessarily constrain the expected type. let expectedType: Type | undefined; if ( - !isFirstPass || + !options.skipBareTypeVarExpectedType || !isTypeVar(argParam.paramType) || argParam.paramType.scopeId !== typeResult?.type.details.typeVarScopeId ) { expectedType = applySolvedTypeVars(argParam.paramType, typeVarContext, { - useNarrowBoundOnly: isFirstPass, + useNarrowBoundOnly: !!options.useNarrowBoundOnly, }); } @@ -11641,8 +11646,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If there's a constraint filter, apply it to top-level type variables // if appropriate. This doesn't properly handle non-top-level constrained // type variables. - if (conditionFilter) { - argType = mapSubtypesExpandTypeVars(argType, conditionFilter, (expandedSubtype) => { + if (options.conditionFilter) { + argType = mapSubtypesExpandTypeVars(argType, options.conditionFilter, (expandedSubtype) => { return expandedSubtype; }); } @@ -11666,7 +11671,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If we are asked to skip overload arguments, determine whether the argument // is an explicit overload type, an overloaded class constructor, or a // an overloaded callback protocol. - if (skipOverloadArg) { + if (options.skipOverloadArg) { if (isOverloadedFunction(argType)) { return { isCompatible, argType, isTypeIncomplete, skippedOverloadArg: true, condition }; } @@ -11755,7 +11760,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { isCompatible: false, argType, isTypeIncomplete, condition }; } - if (!skipUnknownCheck) { + if (!options.skipUnknownArgCheck) { const simplifiedType = removeUnbound(argType); const fileInfo = AnalyzerNodeInfo.getFileInfo(argParam.errorNode); @@ -17315,10 +17320,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions new TypeVarContext(), signatureTracker, { type: newMethodType }, - /* skipUnknownCheck */ true, - /* skipOverloadArg */ true, - /* useNarrowBoundOnly */ false, - /* conditionFilter */ undefined + { skipUnknownArgCheck: true, skipOverloadArg: true } ); paramMap.delete(arg.name.value); } else { From c06831d23c5b86965c9d3600b9663d23490172df Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 15:53:51 -0700 Subject: [PATCH 088/525] Fixed a type evaluation bug that produces a false positive when using bidirectional type inference for nested call expressions when the target callables are generic. This addresses https://github.com/microsoft/pyright/issues/4985. --- .../src/analyzer/typeEvaluator.ts | 11 ++++--- .../src/tests/samples/genericTypes79.py | 30 +++++++++++++++---- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1f837b008..1b16fff0c 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10823,7 +10823,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions !inferenceContext || isAnyOrUnknown(inferenceContext.expectedType) || isNever(inferenceContext.expectedType) || - requiresSpecialization(inferenceContext.expectedType) || !type.details.declaredReturnType || !requiresSpecialization(FunctionType.getSpecializedReturnType(type) ?? UnknownType.create()) ) { @@ -11022,7 +11021,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions { skipUnknownArgCheck, skipOverloadArg: i === 0, - skipBareTypeVarExpectedType: passCount > 1 && i === 0, + skipBareTypeVarExpectedType: i === 0, useNarrowBoundOnly: passCount > 1 && i === 0, conditionFilter: typeCondition, } @@ -14382,10 +14381,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); } - const expectedReturnType = expectedFunctionType + let expectedReturnType = expectedFunctionType ? getFunctionEffectiveReturnType(expectedFunctionType) : undefined; + if (expectedReturnType && inferenceContext?.typeVarContext) { + expectedReturnType = applySolvedTypeVars(expectedReturnType, inferenceContext.typeVarContext); + } + // If we're speculatively evaluating the lambda, create another speculative // evaluation scope for the return expression and do not allow retention // of the cached types. @@ -14393,7 +14396,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const returnTypeResult = getTypeOfExpression( node.expression, /* flags */ undefined, - makeInferenceContext(expectedReturnType) + makeInferenceContext(expectedReturnType, inferenceContext?.typeVarContext) ); functionType.inferredReturnType = returnTypeResult.type; diff --git a/packages/pyright-internal/src/tests/samples/genericTypes79.py b/packages/pyright-internal/src/tests/samples/genericTypes79.py index 4ce0041cc..919555e66 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes79.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes79.py @@ -9,24 +9,25 @@ changes: FileChanges = {} changes.update({filename: "removed" for filename in ["foo.py", "bar.py"]}) +_S = TypeVar("_S") _T = TypeVar("_T") -class IAsyncContext(Generic[_T]): +class ClassA(Generic[_T]): pass -Async = Callable[[IAsyncContext[_T]], None] +TA1 = Callable[[ClassA[_T]], None] -def func1(value: _T) -> Async[_T]: - def ret(ctx: IAsyncContext[_T]) -> None: +def func1(value: _T) -> TA1[_T]: + def ret(ctx: ClassA[_T]) -> None: pass return ret -def func2() -> Async[bool]: +def func2() -> TA1[bool]: return func1(True) @@ -36,6 +37,23 @@ def func3(value: _T) -> Callable[[_T], None]: x: Callable[[Tuple[bool]], None] = func3((True,)) -def func4(v: _T, f: Callable[[_T], None]): ... + +def func4(v: _T, f: Callable[[_T], None]): + ... + + def func5(v: Literal[1, 2], f: Callable[[Literal[1, 2]], None]): func4(v, f) + + +class ClassB(Generic[_S, _T]): + left: _S + right: _T + + +def func6(s: _S, t: _T) -> ClassB[_S, _T]: + ... + + +def func7(t: _T, f: Callable[[ClassB[_T, Literal[2]]], None]) -> None: + return f(func6(t, 2)) From 05a3cdd69a055f097e57676571ff02883465f080 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 16:09:58 -0700 Subject: [PATCH 089/525] Added new eslint rule to enforce that protected class variables and methods should never start with an underscore. We were somewhat inconsistent here. Fixed up the code to honor this rule. --- .eslintrc.json | 2 +- .../src/analyzer/backgroundAnalysisProgram.ts | 12 +- .../src/analyzer/importResolver.ts | 10 +- .../src/backgroundAnalysisBase.ts | 34 ++- .../src/common/fullAccessHost.ts | 4 +- .../pyright-internal/src/common/uriParser.ts | 4 +- .../src/languageServerBase.ts | 209 +++++++++--------- .../src/languageService/definitionProvider.ts | 60 ++--- .../pyright-internal/src/pyrightFileSystem.ts | 40 ++-- .../src/readonlyAugmentedFileSystem.ts | 54 ++--- packages/pyright-internal/src/server.ts | 16 +- .../src/tests/harness/fourslash/testState.ts | 8 +- 12 files changed, 223 insertions(+), 230 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 1995929f2..c5eb52414 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -77,7 +77,7 @@ "accessor" ], "modifiers": ["protected"], - "leadingUnderscore": "allow", + "leadingUnderscore": "forbid", "format": ["camelCase"], "filter": { "regex": "^(test_| )", diff --git a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts index c669895f1..88c2e1d54 100644 --- a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts +++ b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts @@ -30,7 +30,7 @@ export class BackgroundAnalysisProgram { private _console: ConsoleInterface, private _configOptions: ConfigOptions, private _importResolver: ImportResolver, - protected _backgroundAnalysis?: BackgroundAnalysisBase, + private _backgroundAnalysis?: BackgroundAnalysisBase, private _maxAnalysisTime?: MaxAnalysisTime, private _disableChecker?: boolean, cacheManager?: CacheManager @@ -65,6 +65,10 @@ export class BackgroundAnalysisProgram { return this._backgroundAnalysis; } + set backgroundAnalysis(value: BackgroundAnalysisBase | undefined) { + this._backgroundAnalysis = value; + } + hasSourceFile(filePath: string): boolean { return !!this._program.getSourceFile(filePath); } @@ -147,7 +151,7 @@ export class BackgroundAnalysisProgram { startAnalysis(token: CancellationToken): boolean { if (this._backgroundAnalysis) { - this._backgroundAnalysis.startAnalysis(this._getIndices(), token); + this._backgroundAnalysis.startAnalysis(this.getIndices(), token); return false; } @@ -183,7 +187,7 @@ export class BackgroundAnalysisProgram { } getIndexing(filePath: string) { - return this._getIndices()?.getIndex(this._configOptions.findExecEnvironment(filePath).root); + return this.getIndices()?.getIndex(this._configOptions.findExecEnvironment(filePath).root); } async getDiagnosticsForRange(filePath: string, range: Range, token: CancellationToken): Promise { @@ -244,7 +248,7 @@ export class BackgroundAnalysisProgram { this._backgroundAnalysis?.shutdown(); } - protected _getIndices(): Indices | undefined { + protected getIndices(): Indices | undefined { return undefined; } diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index e9ca72485..9d3734bde 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -121,7 +121,7 @@ export class ImportResolver { private _stdlibModules: Set | undefined; protected cachedParentImportResults: ParentDirectoryCache; - constructor(readonly fileSystem: FileSystem, protected _configOptions: ConfigOptions, readonly host: Host) { + constructor(readonly fileSystem: FileSystem, private _configOptions: ConfigOptions, readonly host: Host) { this.cachedParentImportResults = new ParentDirectoryCache(() => this.getPythonSearchPaths([])); } @@ -145,9 +145,9 @@ export class ImportResolver { execEnv: ExecutionEnvironment, moduleDescriptor: ImportedModuleDescriptor ): ImportResult { - // Wrap internal call to _resolveImport() to prevent calling any + // Wrap internal call to resolveImportInternal() to prevent calling any // child class version of resolveImport(). - return this._resolveImport(sourceFilePath, execEnv, moduleDescriptor); + return this.resolveImportInternal(sourceFilePath, execEnv, moduleDescriptor); } getCompletionSuggestions( @@ -445,7 +445,7 @@ export class ImportResolver { // Resolves the import and returns the path if it exists, otherwise // returns undefined. - protected _resolveImport( + protected resolveImportInternal( sourceFilePath: string, execEnv: ExecutionEnvironment, moduleDescriptor: ImportedModuleDescriptor @@ -2297,7 +2297,7 @@ export class ImportResolver { .isImportFound; } - return this._resolveImport(sourceFilePath, execEnv, moduleDescriptor).isImportFound; + return this.resolveImportInternal(sourceFilePath, execEnv, moduleDescriptor).isImportFound; } private _isUniqueValidSuggestion(suggestionToAdd: string, suggestions: Map) { diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index 351783b51..d23d04707 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -287,8 +287,8 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase private _configOptions: ConfigOptions; private _program: Program; - protected _importResolver: ImportResolver; - protected _logTracker: LogTracker; + protected importResolver: ImportResolver; + protected logTracker: LogTracker; protected constructor() { super(workerData as InitializationData); @@ -298,12 +298,12 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase this.log(LogLevel.Info, `Background analysis(${threadId}) root directory: ${data.rootDirectory}`); this._configOptions = new ConfigOptions(data.rootDirectory); - this._importResolver = this.createImportResolver(this.fs, this._configOptions, this.createHost()); + this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.createHost()); const console = this.getConsole(); - this._logTracker = new LogTracker(console, `BG(${threadId})`); + this.logTracker = new LogTracker(console, `BG(${threadId})`); - this._program = new Program(this._importResolver, this._configOptions, console, this._logTracker); + this._program = new Program(this.importResolver, this._configOptions, console, this.logTracker); // Create the extensions bound to the program for this background thread Extensions.createProgramExtensions(this._program, { @@ -391,22 +391,18 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase } case 'setImportResolver': { - this._importResolver = this.createImportResolver(this.fs, this._configOptions, this.createHost()); + this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.createHost()); - this.program.setImportResolver(this._importResolver); + this.program.setImportResolver(this.importResolver); break; } case 'setConfigOptions': { this._configOptions = createConfigOptionsFrom(msg.data); - this._importResolver = this.createImportResolver( - this.fs, - this._configOptions, - this._importResolver.host - ); + this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.importResolver.host); this.program.setConfigOptions(this._configOptions); - this.program.setImportResolver(this._importResolver); + this.program.setImportResolver(this.importResolver); break; } @@ -425,7 +421,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase const { executionRoot } = msg.data; const execEnv = this._configOptions.getExecutionEnvironments().find((e) => e.root === executionRoot); if (execEnv) { - this._importResolver.ensurePartialStubPackages(execEnv); + this.importResolver.ensurePartialStubPackages(execEnv); } break; } @@ -470,7 +466,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase case 'invalidateAndForceReanalysis': { // Make sure the import resolver doesn't have invalid // cached entries. - this._importResolver.invalidateCache(); + this.importResolver.invalidateCache(); // Mark all files with one or more errors dirty. this.program.markAllFilesDirty(/* evenIfContentsAreSame */ true, /* indexingNeeded */ msg.data); @@ -479,12 +475,8 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase case 'restart': { // recycle import resolver - this._importResolver = this.createImportResolver( - this.fs, - this._configOptions, - this._importResolver.host - ); - this.program.setImportResolver(this._importResolver); + this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.importResolver.host); + this.program.setImportResolver(this.importResolver); break; } diff --git a/packages/pyright-internal/src/common/fullAccessHost.ts b/packages/pyright-internal/src/common/fullAccessHost.ts index 6cfabc743..a92939592 100644 --- a/packages/pyright-internal/src/common/fullAccessHost.ts +++ b/packages/pyright-internal/src/common/fullAccessHost.ts @@ -60,7 +60,7 @@ export class LimitedAccessHost extends NoAccessHost { } export class FullAccessHost extends LimitedAccessHost { - constructor(protected _fs: FileSystem) { + constructor(protected fs: FileSystem) { super(); } @@ -84,7 +84,7 @@ export class FullAccessHost extends LimitedAccessHost { override getPythonSearchPaths(pythonPath?: string, logInfo?: string[]): PythonPathResult { const importFailureInfo = logInfo ?? []; let result = this._executePythonInterpreter(pythonPath, (p) => - this._getSearchPathResultFromInterpreter(this._fs, p, importFailureInfo) + this._getSearchPathResultFromInterpreter(this.fs, p, importFailureInfo) ); if (!result) { diff --git a/packages/pyright-internal/src/common/uriParser.ts b/packages/pyright-internal/src/common/uriParser.ts index 49ebf77d7..f98509aa5 100644 --- a/packages/pyright-internal/src/common/uriParser.ts +++ b/packages/pyright-internal/src/common/uriParser.ts @@ -15,7 +15,7 @@ import { FileSystem } from './fileSystem'; import { convertUriToPath } from './pathUtils'; export class UriParser { - constructor(protected readonly _fs: FileSystem) {} + constructor(protected readonly fs: FileSystem) {} decodeTextDocumentPosition(textDocument: TextDocumentIdentifier, position: Position) { const filePath = this.decodeTextDocumentUri(textDocument.uri); @@ -23,7 +23,7 @@ export class UriParser { } decodeTextDocumentUri(uriString: string) { - return convertUriToPath(this._fs, uriString); + return convertUriToPath(this.fs, uriString); } isLocal(uri: URI | string | undefined) { diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 4c28004eb..aa39708a5 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -293,10 +293,6 @@ namespace VSDiagnosticRank { } export abstract class LanguageServerBase implements LanguageServerInterface { - protected _defaultClientConfig: any; - protected _workspaceFactory: WorkspaceFactory; - protected _cacheManager: CacheManager; - // We support running only one "find all reference" at a time. private _pendingFindAllRefsCancellationSource: AbstractCancellationTokenSource | undefined; @@ -338,37 +334,38 @@ export abstract class LanguageServerBase implements LanguageServerInterface { completionItemResolveSupportsAdditionalTextEdits: false, }; - // File system abstraction. - protected _serviceFS: PyrightFileSystem; - - protected _uriParser: UriParser; + protected defaultClientConfig: any; + protected workspaceFactory: WorkspaceFactory; + protected cacheManager: CacheManager; + protected fs: PyrightFileSystem; + protected uriParser: UriParser; constructor( - protected _serverOptions: ServerOptions, - protected _connection: Connection, + protected serverOptions: ServerOptions, + protected connection: Connection, readonly console: ConsoleInterface, uriParserFactory = (fs: FileSystem) => new UriParser(fs) ) { // Stash the base directory into a global variable. // This must happen before fs.getModulePath(). - (global as any).__rootDirectory = _serverOptions.rootDirectory; + (global as any).__rootDirectory = serverOptions.rootDirectory; this.console.info( - `${_serverOptions.productName} language server ${ - _serverOptions.version && _serverOptions.version + ' ' + `${serverOptions.productName} language server ${ + serverOptions.version && serverOptions.version + ' ' }starting` ); - this.console.info(`Server root directory: ${_serverOptions.rootDirectory}`); + this.console.info(`Server root directory: ${serverOptions.rootDirectory}`); - this._cacheManager = new CacheManager(); + this.cacheManager = new CacheManager(); - this._serviceFS = new PyrightFileSystem(this._serverOptions.fileSystem); - this._uriParser = uriParserFactory(this._serviceFS); + this.fs = new PyrightFileSystem(this.serverOptions.fileSystem); + this.uriParser = uriParserFactory(this.fs); - this._workspaceFactory = new WorkspaceFactory( + this.workspaceFactory = new WorkspaceFactory( this.console, - this._uriParser, + this.uriParser, this.createAnalyzerServiceForWorkspace.bind(this), this.isPythonPathImmutable.bind(this), this.onWorkspaceCreated.bind(this) @@ -377,18 +374,18 @@ export abstract class LanguageServerBase implements LanguageServerInterface { // Set the working directory to a known location within // the extension directory. Otherwise the execution of // python can have unintended and surprising results. - const moduleDirectory = this._serviceFS.getModulePath(); + const moduleDirectory = this.fs.getModulePath(); if (moduleDirectory) { - this._serviceFS.chdir(moduleDirectory); + this.fs.chdir(moduleDirectory); } // Set up callbacks. - this.setupConnection(_serverOptions.supportedCommands ?? [], _serverOptions.supportedCodeActions ?? []); + this.setupConnection(serverOptions.supportedCommands ?? [], serverOptions.supportedCodeActions ?? []); this._progressReporter = new ProgressReportTracker(this.createProgressReporter()); // Listen on the connection. - this._connection.listen(); + this.connection.listen(); // Setup extensions Extensions.createLanguageServiceExtensions(this); @@ -396,7 +393,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { // Provides access to the client's window. get window(): RemoteWindow { - return this._connection.window; + return this.connection.window; } get supportAdvancedEdits(): boolean { @@ -405,7 +402,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { // Convert uri to path decodeTextDocumentUri(uriString: string): string { - return this._uriParser.decodeTextDocumentUri(uriString); + return this.uriParser.decodeTextDocumentUri(uriString); } abstract createBackgroundAnalysis(serviceId: string): BackgroundAnalysisBase | undefined; @@ -422,16 +419,16 @@ export abstract class LanguageServerBase implements LanguageServerInterface { this.console.info(`Starting service instance "${name}"`); const serviceId = getNextServiceId(name); - const service = new AnalyzerService(name, services?.fs ?? this._serviceFS, { + const service = new AnalyzerService(name, services?.fs ?? this.fs, { console: this.console, hostFactory: this.createHost.bind(this), importResolverFactory: this.createImportResolver.bind(this), backgroundAnalysis: services ? services.backgroundAnalysis : this.createBackgroundAnalysis(serviceId), - maxAnalysisTime: this._serverOptions.maxAnalysisTimeInForeground, + maxAnalysisTime: this.serverOptions.maxAnalysisTimeInForeground, backgroundAnalysisProgramFactory: this.createBackgroundAnalysisProgram.bind(this), - cancellationProvider: this._serverOptions.cancellationProvider, + cancellationProvider: this.serverOptions.cancellationProvider, libraryReanalysisTimeProvider, - cacheManager: this._cacheManager, + cacheManager: this.cacheManager, serviceId, }); @@ -440,7 +437,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { } async test_getWorkspaces() { - const workspaces = [...this._workspaceFactory.items()]; + const workspaces = [...this.workspaceFactory.items()]; for (const workspace of workspaces) { await workspace.isInitialized.promise; } @@ -449,28 +446,28 @@ export abstract class LanguageServerBase implements LanguageServerInterface { } async getWorkspaceForFile(filePath: string, pythonPath?: string): Promise { - return this._workspaceFactory.getWorkspaceForFile(filePath, pythonPath); + return this.workspaceFactory.getWorkspaceForFile(filePath, pythonPath); } async getContainingWorkspacesForFile(filePath: string): Promise { - return this._workspaceFactory.getContainingWorkspacesForFile(filePath); + return this.workspaceFactory.getContainingWorkspacesForFile(filePath); } reanalyze() { - this._workspaceFactory.items().forEach((workspace) => { + this.workspaceFactory.items().forEach((workspace) => { workspace.service.invalidateAndForceReanalysis(); }); } restart() { - this._workspaceFactory.items().forEach((workspace) => { + this.workspaceFactory.items().forEach((workspace) => { workspace.service.restart(); }); } updateSettingsForAllWorkspaces(): void { const tasks: Promise[] = []; - this._workspaceFactory.items().forEach((workspace) => { + this.workspaceFactory.items().forEach((workspace) => { // Updating settings can change workspace's file ownership. Make workspace uninitialized so that // features can wait until workspace gets new settings. // the file's ownership can also changed by `pyrightconfig.json` changes, but those are synchronous @@ -497,7 +494,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { (this.console as ConsoleWithLogLevel).level = serverSettings.logLevel ?? LogLevel.Info; // Apply the new path to the workspace (before restarting the service). - serverSettings.pythonPath = this._workspaceFactory.applyPythonPath(workspace, serverSettings.pythonPath); + serverSettings.pythonPath = this.workspaceFactory.applyPythonPath(workspace, serverSettings.pythonPath); // Then use the updated settings to restart the service. this.updateOptionsAndRestartService(workspace, serverSettings); @@ -549,11 +546,11 @@ export abstract class LanguageServerBase implements LanguageServerInterface { if (section !== undefined) { item.section = section; } - return this._connection.workspace.getConfiguration(item); + return this.connection.workspace.getConfiguration(item); } - if (this._defaultClientConfig) { - return getNestedProperty(this._defaultClientConfig, section); + if (this.defaultClientConfig) { + return getNestedProperty(this.defaultClientConfig, section); } return undefined; @@ -607,54 +604,54 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected setupConnection(supportedCommands: string[], supportedCodeActions: string[]): void { // After the server has started the client sends an initialize request. The server receives // in the passed params the rootPath of the workspace plus the client capabilities. - this._connection.onInitialize((params) => this.initialize(params, supportedCommands, supportedCodeActions)); + this.connection.onInitialize((params) => this.initialize(params, supportedCommands, supportedCodeActions)); - this._connection.onInitialized(() => this.onInitialized()); + this.connection.onInitialized(() => this.onInitialized()); - this._connection.onDidChangeConfiguration((params) => this.onDidChangeConfiguration(params)); + this.connection.onDidChangeConfiguration((params) => this.onDidChangeConfiguration(params)); - this._connection.onCodeAction((params, token) => this.executeCodeAction(params, token)); + this.connection.onCodeAction((params, token) => this.executeCodeAction(params, token)); - this._connection.onDefinition(async (params, token) => this.onDefinition(params, token)); - this._connection.onDeclaration(async (params, token) => this.onDeclaration(params, token)); - this._connection.onTypeDefinition(async (params, token) => this.onTypeDefinition(params, token)); + this.connection.onDefinition(async (params, token) => this.onDefinition(params, token)); + this.connection.onDeclaration(async (params, token) => this.onDeclaration(params, token)); + this.connection.onTypeDefinition(async (params, token) => this.onTypeDefinition(params, token)); - this._connection.onReferences(async (params, token, workDoneReporter, resultReporter) => + this.connection.onReferences(async (params, token, workDoneReporter, resultReporter) => this.onReferences(params, token, workDoneReporter, resultReporter) ); - this._connection.onDocumentSymbol(async (params, token) => this.onDocumentSymbol(params, token)); - this._connection.onWorkspaceSymbol(async (params, token, _, resultReporter) => + this.connection.onDocumentSymbol(async (params, token) => this.onDocumentSymbol(params, token)); + this.connection.onWorkspaceSymbol(async (params, token, _, resultReporter) => this.onWorkspaceSymbol(params, token, resultReporter) ); - this._connection.onHover(async (params, token) => this.onHover(params, token)); + this.connection.onHover(async (params, token) => this.onHover(params, token)); - this._connection.onDocumentHighlight(async (params, token) => this.onDocumentHighlight(params, token)); + this.connection.onDocumentHighlight(async (params, token) => this.onDocumentHighlight(params, token)); - this._connection.onSignatureHelp(async (params, token) => this.onSignatureHelp(params, token)); + this.connection.onSignatureHelp(async (params, token) => this.onSignatureHelp(params, token)); - this._connection.onCompletion((params, token) => this.onCompletion(params, token)); + this.connection.onCompletion((params, token) => this.onCompletion(params, token)); - this._connection.onCompletionResolve(async (params, token) => this.onCompletionResolve(params, token)); + this.connection.onCompletionResolve(async (params, token) => this.onCompletionResolve(params, token)); - this._connection.onPrepareRename(async (params, token) => this.onPrepareRenameRequest(params, token)); - this._connection.onRenameRequest(async (params, token) => this.onRenameRequest(params, token)); + this.connection.onPrepareRename(async (params, token) => this.onPrepareRenameRequest(params, token)); + this.connection.onRenameRequest(async (params, token) => this.onRenameRequest(params, token)); - const callHierarchy = this._connection.languages.callHierarchy; + const callHierarchy = this.connection.languages.callHierarchy; callHierarchy.onPrepare(async (params, token) => this.onPrepare(params, token)); callHierarchy.onIncomingCalls(async (params, token) => this.onIncomingCalls(params, token)); callHierarchy.onOutgoingCalls(async (params, token) => this.onOutgoingCalls(params, token)); - this._connection.onDidOpenTextDocument(async (params) => this.onDidOpenTextDocument(params)); - this._connection.onDidChangeTextDocument(async (params) => this.onDidChangeTextDocument(params)); - this._connection.onDidCloseTextDocument(async (params) => this.onDidCloseTextDocument(params)); - this._connection.onDidChangeWatchedFiles((params) => this.onDidChangeWatchedFiles(params)); + this.connection.onDidOpenTextDocument(async (params) => this.onDidOpenTextDocument(params)); + this.connection.onDidChangeTextDocument(async (params) => this.onDidChangeTextDocument(params)); + this.connection.onDidCloseTextDocument(async (params) => this.onDidCloseTextDocument(params)); + this.connection.onDidChangeWatchedFiles((params) => this.onDidChangeWatchedFiles(params)); - this._connection.onExecuteCommand(async (params, token, reporter) => + this.connection.onExecuteCommand(async (params, token, reporter) => this.onExecuteCommand(params, token, reporter) ); - this._connection.onShutdown(async (token) => this.onShutdown(token)); + this.connection.onShutdown(async (token) => this.onShutdown(token)); } protected initialize( @@ -714,7 +711,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { ); // Create a service instance for each of the workspace folders. - this._workspaceFactory.handleInitialize(params); + this.workspaceFactory.handleInitialize(params); const result: InitializeResult = { capabilities: { @@ -774,8 +771,8 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return; } - this._connection.workspace.onDidChangeWorkspaceFolders((event) => { - this._workspaceFactory.handleWorkspaceFoldersChanged(event); + this.connection.workspace.onDidChangeWorkspaceFolders((event) => { + this.workspaceFactory.handleWorkspaceFoldersChanged(event); this._setupFileWatcher(); }); @@ -785,7 +782,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected onDidChangeConfiguration(params: DidChangeConfigurationParams) { this.console.log(`Received updated settings`); if (params?.settings) { - this._defaultClientConfig = params?.settings; + this.defaultClientConfig = params?.settings; } this.updateSettingsForAllWorkspaces(); } @@ -845,7 +842,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { ) { this.recordUserInteractionTime(); - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -885,7 +882,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { this._pendingFindAllRefsCancellationSource = source; try { - const { filePath, position } = this._uriParser.decodeTextDocumentPosition( + const { filePath, position } = this.uriParser.decodeTextDocumentPosition( params.textDocument, params.position ); @@ -915,7 +912,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { ): Promise { this.recordUserInteractionTime(); - const filePath = this._uriParser.decodeTextDocumentUri(params.textDocument.uri); + const filePath = this.uriParser.decodeTextDocumentUri(params.textDocument.uri); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -942,7 +939,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { ? (symbols) => resultReporter.report(symbols) : (symbols) => appendArray(symbolList, symbols); - for (const workspace of this._workspaceFactory.items()) { + for (const workspace of this.workspaceFactory.items()) { await workspace.isInitialized.promise; if (!workspace.disableLanguageServices && !workspace.disableWorkspaceSymbol) { workspace.service.reportSymbolsForWorkspace(params.query, reporter, token); @@ -953,7 +950,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { } protected async onHover(params: HoverParams, token: CancellationToken) { - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); return workspace.service.run((program) => { @@ -962,7 +959,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { filePath, position, this.client.hoverContentFormat, - !!this._serverOptions.supportsTelemetry, + !!this.serverOptions.supportsTelemetry, token ).getHover(); }, token); @@ -972,7 +969,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { params: DocumentHighlightParams, token: CancellationToken ): Promise { - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); return workspace.service.run((program) => { @@ -984,7 +981,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { params: SignatureHelpParams, token: CancellationToken ): Promise { - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -1023,7 +1020,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { this._lastTriggerKind = params.context?.triggerKind; - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -1049,7 +1046,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { completions.completionList && completions.completionList.items.length > 0 && completions.memberAccessInfo.lastKnownModule && - this._serverOptions.supportsTelemetry + this.serverOptions.supportsTelemetry ) { // Just stick it on the first item. It only checks the first one completions.completionList.items[0].data = { @@ -1080,7 +1077,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { params: PrepareRenameParams, token: CancellationToken ): Promise { - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -1102,7 +1099,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { params: RenameParams, token: CancellationToken ): Promise { - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -1129,7 +1126,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { params: CallHierarchyPrepareParams, token: CancellationToken ): Promise { - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -1142,7 +1139,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { } protected async onIncomingCalls(params: CallHierarchyIncomingCallsParams, token: CancellationToken) { - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.item, params.item.range.start); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.item, params.item.range.start); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -1158,7 +1155,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { params: CallHierarchyOutgoingCallsParams, token: CancellationToken ): Promise { - const { filePath, position } = this._uriParser.decodeTextDocumentPosition(params.item, params.item.range.start); + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.item, params.item.range.start); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -1171,9 +1168,9 @@ export abstract class LanguageServerBase implements LanguageServerInterface { } protected async onDidOpenTextDocument(params: DidOpenTextDocumentParams, ipythonMode = IPythonMode.None) { - const filePath = this._uriParser.decodeTextDocumentUri(params.textDocument.uri); + const filePath = this.uriParser.decodeTextDocumentUri(params.textDocument.uri); - if (!this._serviceFS.addUriMap(params.textDocument.uri, filePath)) { + if (!this.fs.addUriMap(params.textDocument.uri, filePath)) { // We do not support opening 1 file with 2 different uri. return; } @@ -1188,8 +1185,8 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected async onDidChangeTextDocument(params: DidChangeTextDocumentParams, ipythonMode = IPythonMode.None) { this.recordUserInteractionTime(); - const filePath = this._uriParser.decodeTextDocumentUri(params.textDocument.uri); - if (!this._serviceFS.hasUriMapEntry(params.textDocument.uri, filePath)) { + const filePath = this.uriParser.decodeTextDocumentUri(params.textDocument.uri); + if (!this.fs.hasUriMapEntry(params.textDocument.uri, filePath)) { // We do not support opening 1 file with 2 different uri. return; } @@ -1202,8 +1199,8 @@ export abstract class LanguageServerBase implements LanguageServerInterface { } protected async onDidCloseTextDocument(params: DidCloseTextDocumentParams) { - const filePath = this._uriParser.decodeTextDocumentUri(params.textDocument.uri); - if (!this._serviceFS.removeUriMap(params.textDocument.uri, filePath)) { + const filePath = this.uriParser.decodeTextDocumentUri(params.textDocument.uri); + if (!this.fs.removeUriMap(params.textDocument.uri, filePath)) { // We do not support opening 1 file with 2 different uri. return; } @@ -1217,9 +1214,9 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected onDidChangeWatchedFiles(params: DidChangeWatchedFilesParams) { params.changes.forEach((change) => { - const filePath = this._serviceFS.realCasePath(this._uriParser.decodeTextDocumentUri(change.uri)); + const filePath = this.fs.realCasePath(this.uriParser.decodeTextDocumentUri(change.uri)); const eventType: FileWatcherEventType = change.type === 1 ? 'add' : 'change'; - this._serverOptions.fileWatcherHandler.onFileChange(eventType, filePath); + this.serverOptions.fileWatcherHandler.onFileChange(eventType, filePath); }); } @@ -1239,13 +1236,13 @@ export abstract class LanguageServerBase implements LanguageServerInterface { if (WorkspaceEdit.is(result)) { // Tell client to apply edits. // Do not await; the client isn't expecting a result. - this._connection.workspace.applyEdit({ label: `Command '${params.command}'`, edit: result }); + this.connection.workspace.applyEdit({ label: `Command '${params.command}'`, edit: result }); } if (CommandResult.is(result)) { // Tell client to apply edits. // Await so that we return after the edit is complete. - await this._connection.workspace.applyEdit({ label: result.label, edit: result.edits }); + await this.connection.workspace.applyEdit({ label: result.label, edit: result.edits }); } return result; @@ -1273,7 +1270,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected onShutdown(token: CancellationToken) { // Shutdown remaining workspaces. - this._workspaceFactory.clear(); + this.workspaceFactory.clear(); return Promise.resolve(); } @@ -1340,7 +1337,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { } this._sendDiagnostics(this.convertDiagnostics(fs, fileDiag)); - this._serviceFS.pendingRequest(fileDiag.filePath, fileDiag.diagnostics.length > 0); + this.fs.pendingRequest(fileDiag.filePath, fileDiag.diagnostics.length > 0); }); if (!this._progressReporter.isEnabled(results)) { @@ -1393,7 +1390,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { const libraryReanalysisTimeProvider = kinds.length === 1 && kinds[0] === WellKnownWorkspaceKinds.Regular ? () => - this._workspaceFactory.hasMultipleWorkspaces(kinds[0]) + this.workspaceFactory.hasMultipleWorkspaces(kinds[0]) ? multiWorkspaceBackOffTime : defaultBackOffTime : () => defaultBackOffTime; @@ -1405,7 +1402,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { // Tell all of the services that the user is actively // interacting with one or more editors, so they should // back off from performing any work. - this._workspaceFactory.items().forEach((workspace: { service: { recordUserInteractionTime: () => void } }) => { + this.workspaceFactory.items().forEach((workspace: { service: { recordUserInteractionTime: () => void } }) => { workspace.service.recordUserInteractionTime(); }); } @@ -1440,22 +1437,22 @@ export abstract class LanguageServerBase implements LanguageServerInterface { // Get rid of any search path under workspace root since it is already watched by // "**" above. const foldersToWatch = deduplicateFolders( - this._workspaceFactory + this.workspaceFactory .getNonDefaultWorkspaces() .map((w) => w.searchPathsToWatch.filter((p) => !p.startsWith(w.rootPath))) ); foldersToWatch.forEach((p) => { - const globPattern = isFile(this._serviceFS, p, /* treatZipDirectoryAsFile */ true) - ? { baseUri: convertPathToUri(this._serviceFS, getDirectoryPath(p)), pattern: getFileName(p) } - : { baseUri: convertPathToUri(this._serviceFS, p), pattern: '**' }; + const globPattern = isFile(this.fs, p, /* treatZipDirectoryAsFile */ true) + ? { baseUri: convertPathToUri(this.fs, getDirectoryPath(p)), pattern: getFileName(p) } + : { baseUri: convertPathToUri(this.fs, p), pattern: '**' }; watchers.push({ globPattern, kind: watchKind }); }); } // File watcher is pylance wide service. Dispose all existing file watchers and create new ones. - this._connection.client.register(DidChangeWatchedFilesNotification.type, { watchers }).then((d) => { + this.connection.client.register(DidChangeWatchedFilesNotification.type, { watchers }).then((d) => { if (this._lastFileWatcherRegistration) { this._lastFileWatcherRegistration.dispose(); } @@ -1466,7 +1463,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { private _sendDiagnostics(params: PublishDiagnosticsParams[]) { for (const param of params) { - this._connection.sendDiagnostics(param); + this.connection.sendDiagnostics(param); } } @@ -1488,10 +1485,10 @@ export abstract class LanguageServerBase implements LanguageServerInterface { // created by the LSP library. If it's the latter, we'll create a server-initiated // progress reporter. if (reporter.constructor !== nullProgressReporter.constructor) { - return { reporter: reporter, source: CancelAfter(this._serverOptions.cancellationProvider, token) }; + return { reporter: reporter, source: CancelAfter(this.serverOptions.cancellationProvider, token) }; } - const serverInitiatedReporter = await this._connection.window.createWorkDoneProgress(); + const serverInitiatedReporter = await this.connection.window.createWorkDoneProgress(); serverInitiatedReporter.begin( title, /* percentage */ undefined, @@ -1501,7 +1498,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return { reporter: serverInitiatedReporter, - source: CancelAfter(this._serverOptions.cancellationProvider, token, serverInitiatedReporter.token), + source: CancelAfter(this.serverOptions.cancellationProvider, token, serverInitiatedReporter.token), }; } @@ -1511,7 +1508,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { diags.forEach((diag) => { const severity = convertCategoryToSeverity(diag.category); const rule = diag.getRule(); - const vsDiag = Diagnostic.create(diag.range, diag.message, severity, rule, this._serverOptions.productName); + const vsDiag = Diagnostic.create(diag.range, diag.message, severity, rule, this.serverOptions.productName); if ( diag.category === DiagnosticCategory.UnusedCode || diff --git a/packages/pyright-internal/src/languageService/definitionProvider.ts b/packages/pyright-internal/src/languageService/definitionProvider.ts index 975d9063b..1ca8adafe 100644 --- a/packages/pyright-internal/src/languageService/definitionProvider.ts +++ b/packages/pyright-internal/src/languageService/definitionProvider.ts @@ -36,16 +36,16 @@ export enum DefinitionFilter { class DefinitionProviderBase { protected constructor( - protected readonly _sourceMapper: SourceMapper, - protected readonly _evaluator: TypeEvaluator, - protected readonly _node: ParseNode | undefined, - protected readonly _offset: number, + protected readonly sourceMapper: SourceMapper, + protected readonly evaluator: TypeEvaluator, + protected readonly node: ParseNode | undefined, + protected readonly offset: number, private readonly _filter: DefinitionFilter, - protected readonly _token: CancellationToken + protected readonly token: CancellationToken ) {} getDefinitionsForNode(node: ParseNode, offset: number) { - throwIfCancellationRequested(this._token); + throwIfCancellationRequested(this.token); const definitions: DocumentRange[] = []; @@ -53,24 +53,24 @@ class DefinitionProviderBase { Extensions.getProgramExtensions(node).forEach((e) => { if (e.declarationProviderExtension) { const declarations = e.declarationProviderExtension.tryGetDeclarations( - this._evaluator, + this.evaluator, node, offset, DeclarationUseCase.Definition, - this._token + this.token ); - this._resolveDeclarations(declarations, definitions); + this.resolveDeclarations(declarations, definitions); } }); // There should be only one 'definition', so only if extensions failed should we try again. if (definitions.length === 0) { if (node.nodeType === ParseNodeType.Name) { - const declarations = this._evaluator.getDeclarationsForNameNode(node); - this._resolveDeclarations(declarations, definitions); + const declarations = this.evaluator.getDeclarationsForNameNode(node); + this.resolveDeclarations(declarations, definitions); } else if (node.nodeType === ParseNodeType.String) { - const declarations = this._evaluator.getDeclarationsForStringNode(node); - this._resolveDeclarations(declarations, definitions); + const declarations = this.evaluator.getDeclarationsForStringNode(node); + this.resolveDeclarations(declarations, definitions); } } @@ -93,10 +93,10 @@ class DefinitionProviderBase { return definitions; } - protected _resolveDeclarations(declarations: Declaration[] | undefined, definitions: DocumentRange[]) { + protected resolveDeclarations(declarations: Declaration[] | undefined, definitions: DocumentRange[]) { if (declarations) { declarations.forEach((decl) => { - let resolvedDecl = this._evaluator.resolveAliasDeclaration( + let resolvedDecl = this.evaluator.resolveAliasDeclaration( decl, /* resolveLocalNames */ true, /* allowExternallyHiddenAccess */ true @@ -126,7 +126,7 @@ class DefinitionProviderBase { if (isFunctionDeclaration(resolvedDecl)) { // Handle overloaded function case - const functionType = this._evaluator.getTypeForDeclaration(resolvedDecl)?.type; + const functionType = this.evaluator.getTypeForDeclaration(resolvedDecl)?.type; if (functionType && isOverloadedFunction(functionType)) { for (const overloadDecl of functionType.overloads .map((o) => o.details.declaration) @@ -142,13 +142,13 @@ class DefinitionProviderBase { if (isStubFile(resolvedDecl.path)) { if (resolvedDecl.type === DeclarationType.Alias) { // Add matching source module - this._sourceMapper + this.sourceMapper .findModules(resolvedDecl.path) .map((m) => getFileInfo(m)?.filePath) .filter(isDefined) .forEach((f) => _addIfUnique(definitions, _createModuleEntry(f))); } else { - const implDecls = this._sourceMapper.findDeclarations(resolvedDecl); + const implDecls = this.sourceMapper.findDeclarations(resolvedDecl); for (const implDecl of implDecls) { if (implDecl && implDecl.path) { _addIfUnique(definitions, { @@ -192,11 +192,11 @@ export class DefinitionProvider extends DefinitionProviderBase { } getDefinitions(): DocumentRange[] | undefined { - if (this._node === undefined) { + if (this.node === undefined) { return undefined; } - return this.getDefinitionsForNode(this._node, this._offset); + return this.getDefinitionsForNode(this.node, this.offset); } } @@ -213,15 +213,15 @@ export class TypeDefinitionProvider extends DefinitionProviderBase { } getDefinitions(): DocumentRange[] | undefined { - throwIfCancellationRequested(this._token); - if (this._node === undefined) { + throwIfCancellationRequested(this.token); + if (this.node === undefined) { return undefined; } const definitions: DocumentRange[] = []; - if (this._node.nodeType === ParseNodeType.Name) { - const type = this._evaluator.getType(this._node); + if (this.node.nodeType === ParseNodeType.Name) { + const type = this.evaluator.getType(this.node); if (type) { let declarations: Declaration[] = []; @@ -230,7 +230,7 @@ export class TypeDefinitionProvider extends DefinitionProviderBase { if (subtype?.category === TypeCategory.Class) { appendArray( declarations, - this._sourceMapper.findClassDeclarationsByType(this._filePath, subtype) + this.sourceMapper.findClassDeclarationsByType(this._filePath, subtype) ); } }); @@ -238,14 +238,14 @@ export class TypeDefinitionProvider extends DefinitionProviderBase { // Fall back to Go To Definition if the type can't be found (ex. Go To Type Definition // was executed on a type name) if (declarations.length === 0) { - declarations = this._evaluator.getDeclarationsForNameNode(this._node) ?? []; + declarations = this.evaluator.getDeclarationsForNameNode(this.node) ?? []; } - this._resolveDeclarations(declarations, definitions); + this.resolveDeclarations(declarations, definitions); } - } else if (this._node.nodeType === ParseNodeType.String) { - const declarations = this._evaluator.getDeclarationsForStringNode(this._node); - this._resolveDeclarations(declarations, definitions); + } else if (this.node.nodeType === ParseNodeType.String) { + const declarations = this.evaluator.getDeclarationsForStringNode(this.node); + this.resolveDeclarations(declarations, definitions); } if (definitions.length === 0) { diff --git a/packages/pyright-internal/src/pyrightFileSystem.ts b/packages/pyright-internal/src/pyrightFileSystem.ts index 936e94c83..baab66a01 100644 --- a/packages/pyright-internal/src/pyrightFileSystem.ts +++ b/packages/pyright-internal/src/pyrightFileSystem.ts @@ -66,27 +66,27 @@ export class PyrightFileSystem } override mkdirSync(path: string, options?: MkDirOptions): void { - this._realFS.mkdirSync(path, options); + this.realFS.mkdirSync(path, options); } override chdir(path: string): void { - this._realFS.chdir(path); + this.realFS.chdir(path); } override writeFileSync(path: string, data: string | Buffer, encoding: BufferEncoding | null): void { - this._realFS.writeFileSync(this._getOriginalPath(path), data, encoding); + this.realFS.writeFileSync(this.getOriginalPath(path), data, encoding); } override unlinkSync(path: string): void { - this._realFS.unlinkSync(this._getOriginalPath(path)); + this.realFS.unlinkSync(this.getOriginalPath(path)); } override createWriteStream(path: string): fs.WriteStream { - return this._realFS.createWriteStream(this._getOriginalPath(path)); + return this.realFS.createWriteStream(this.getOriginalPath(path)); } override copyFileSync(src: string, dst: string): void { - this._realFS.copyFileSync(this._getOriginalPath(src), this._getOriginalPath(dst)); + this.realFS.copyFileSync(this.getOriginalPath(src), this.getOriginalPath(dst)); } override getUri(originalPath: string): string { @@ -95,7 +95,7 @@ export class PyrightFileSystem return entry.uri; } - return this._realFS.getUri(originalPath); + return this.realFS.getUri(originalPath); } hasUriMapEntry(uriString: string, mappedPath: string): boolean { @@ -165,14 +165,14 @@ export class PyrightFileSystem for (const path of paths) { this._rootSearched.add(path); - if (!this._realFS.existsSync(path) || !isDirectory(this._realFS, path)) { + if (!this.realFS.existsSync(path) || !isDirectory(this.realFS, path)) { continue; } let dirEntries: fs.Dirent[] = []; try { - dirEntries = this._realFS.readdirEntriesSync(path); + dirEntries = this.realFS.readdirEntriesSync(path); } catch { // Leave empty set of dir entries to process. } @@ -182,13 +182,13 @@ export class PyrightFileSystem const partialStubPackagePath = combinePaths(path, entry.name); const isDirectory = !entry.isSymbolicLink() ? entry.isDirectory() - : !!tryStat(this._realFS, partialStubPackagePath)?.isDirectory(); + : !!tryStat(this.realFS, partialStubPackagePath)?.isDirectory(); if (!isDirectory || !entry.name.endsWith(stubsSuffix)) { continue; } - const pyTypedInfo = getPyTypedInfo(this._realFS, partialStubPackagePath); + const pyTypedInfo = getPyTypedInfo(this.realFS, partialStubPackagePath); if (!pyTypedInfo || !pyTypedInfo.isPartiallyTyped) { // Stub-Package is fully typed. continue; @@ -203,7 +203,7 @@ export class PyrightFileSystem for (const root of roots) { const packagePath = combinePaths(root, packageName); try { - const stat = tryStat(this._realFS, packagePath); + const stat = tryStat(this.realFS, packagePath); if (!stat?.isDirectory()) { continue; } @@ -211,7 +211,7 @@ export class PyrightFileSystem if (isBundledStub) { // If partial stub we found is from bundled stub and library installed is marked as py.typed // ignore bundled partial stub. - const packagePyTyped = getPyTypedInfo(this._realFS, packagePath); + const packagePyTyped = getPyTypedInfo(this.realFS, packagePath); if (packagePyTyped && !packagePyTyped.isPartiallyTyped) { // We have fully typed package. continue; @@ -224,7 +224,7 @@ export class PyrightFileSystem const originalPyiFile = combinePaths(partialStubPackagePath, partialStub); const mappedPyiFile = combinePaths(packagePath, partialStub); - this._recordMovedEntry(mappedPyiFile, originalPyiFile); + this.recordMovedEntry(mappedPyiFile, originalPyiFile); } } catch { // ignore @@ -235,18 +235,18 @@ export class PyrightFileSystem } override dispose(): void { - this._realFS.dispose(); + this.realFS.dispose(); } clearPartialStubs(): void { - super._clear(); + super.clear(); this._rootSearched.clear(); this._partialStubPackagePaths.clear(); } - protected override _isMovedEntry(path: string) { - return this._partialStubPackagePaths.has(path) || super._isMovedEntry(path); + protected override isMovedEntry(path: string) { + return this._partialStubPackagePaths.has(path) || super.isMovedEntry(path); } private _getRelativePathPartialStubs(path: string) { @@ -254,13 +254,13 @@ export class PyrightFileSystem const partialStubPathLength = ensureTrailingDirectorySeparator(path).length; const searchAllStubs = (path: string) => { - for (const entry of this._realFS.readdirEntriesSync(path)) { + for (const entry of this.realFS.readdirEntriesSync(path)) { const filePath = combinePaths(path, entry.name); let isDirectory = entry.isDirectory(); let isFile = entry.isFile(); if (entry.isSymbolicLink()) { - const stat = tryStat(this._realFS, filePath); + const stat = tryStat(this.realFS, filePath); if (stat) { isDirectory = stat.isDirectory(); isFile = stat.isFile(); diff --git a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts index 90e934af1..af3d3ea6d 100644 --- a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts +++ b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts @@ -31,15 +31,15 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { // Mapped files per a containing folder map private readonly _folderMap = new Map(); - constructor(protected _realFS: FileSystem) {} + constructor(protected realFS: FileSystem) {} existsSync(path: string): boolean { - if (this._isMovedEntry(path)) { + if (this.isMovedEntry(path)) { // Pretend partial stub folder and its files not exist return false; } - return this._realFS.existsSync(this._getOriginalPath(path)); + return this.realFS.existsSync(this.getOriginalPath(path)); } mkdirSync(path: string, options?: MkDirOptions): void { @@ -55,14 +55,14 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { const entries: fs.Dirent[] = []; const movedEntries = this._folderMap.get(maybeDirectory); - if (!movedEntries || this._realFS.existsSync(path)) { + if (!movedEntries || this.realFS.existsSync(path)) { entries.push( - ...this._realFS.readdirEntriesSync(path).filter((item) => { + ...this.realFS.readdirEntriesSync(path).filter((item) => { // Filter out the stub package directory and any // entries that will be overwritten by stub package // virtual items. return ( - !this._isMovedEntry(combinePaths(path, item.name)) && + !this.isMovedEntry(combinePaths(path, item.name)) && !movedEntries?.some((movedEntry) => movedEntry.name === item.name) ); }) @@ -83,7 +83,7 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { readFileSync(path: string, encoding?: null): Buffer; readFileSync(path: string, encoding: BufferEncoding): string; readFileSync(path: string, encoding?: BufferEncoding | null): string | Buffer { - return this._realFS.readFileSync(this._getOriginalPath(path), encoding); + return this.realFS.readFileSync(this.getOriginalPath(path), encoding); } writeFileSync(path: string, data: string | Buffer, encoding: BufferEncoding | null): void { @@ -91,7 +91,7 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { } statSync(path: string): Stats { - return this._realFS.statSync(this._getOriginalPath(path)); + return this.realFS.statSync(this.getOriginalPath(path)); } unlinkSync(path: string): void { @@ -103,19 +103,19 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { return path; } - return this._realFS.realpathSync(path); + return this.realFS.realpathSync(path); } getModulePath(): string { - return this._realFS.getModulePath(); + return this.realFS.getModulePath(); } createFileSystemWatcher(paths: string[], listener: FileWatcherEventHandler): FileWatcher { - return this._realFS.createFileSystemWatcher(paths, listener); + return this.realFS.createFileSystemWatcher(paths, listener); } createReadStream(path: string): fs.ReadStream { - return this._realFS.createReadStream(this._getOriginalPath(path)); + return this.realFS.createReadStream(this.getOriginalPath(path)); } createWriteStream(path: string): fs.WriteStream { @@ -128,55 +128,55 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { // Async I/O readFile(path: string): Promise { - return this._realFS.readFile(this._getOriginalPath(path)); + return this.realFS.readFile(this.getOriginalPath(path)); } readFileText(path: string, encoding?: BufferEncoding): Promise { - return this._realFS.readFileText(this._getOriginalPath(path), encoding); + return this.realFS.readFileText(this.getOriginalPath(path), encoding); } // The directory returned by tmpdir must exist and be the same each time tmpdir is called. tmpdir(): string { - return this._realFS.tmpdir(); + return this.realFS.tmpdir(); } tmpfile(options?: TmpfileOptions): string { - return this._realFS.tmpfile(options); + return this.realFS.tmpfile(options); } realCasePath(path: string): string { - return this._realFS.realCasePath(path); + return this.realFS.realCasePath(path); } getUri(originalPath: string): string { - return this._realFS.getUri(originalPath); + return this.realFS.getUri(originalPath); } // See whether the file is mapped to another location. isMappedFilePath(filepath: string): boolean { - return this._entryMap.has(filepath) || this._realFS.isMappedFilePath(filepath); + return this._entryMap.has(filepath) || this.realFS.isMappedFilePath(filepath); } // Get original filepath if the given filepath is mapped. getOriginalFilePath(mappedFilePath: string) { - return this._realFS.getOriginalFilePath(this._getOriginalPath(mappedFilePath)); + return this.realFS.getOriginalFilePath(this.getOriginalPath(mappedFilePath)); } // Get mapped filepath if the given filepath is mapped. getMappedFilePath(originalFilepath: string) { - const mappedFilePath = this._realFS.getMappedFilePath(originalFilepath); + const mappedFilePath = this.realFS.getMappedFilePath(originalFilepath); return this._reverseEntryMap.get(mappedFilePath) ?? mappedFilePath; } isInZipOrEgg(path: string): boolean { - return this._realFS.isInZipOrEgg(path); + return this.realFS.isInZipOrEgg(path); } dispose(): void { - this._realFS.dispose(); + this.realFS.dispose(); } - protected _recordMovedEntry(mappedPath: string, originalPath: string, reversible = true, isFile = true) { + protected recordMovedEntry(mappedPath: string, originalPath: string, reversible = true, isFile = true) { this._entryMap.set(mappedPath, originalPath); if (reversible) { @@ -192,15 +192,15 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { } } - protected _getOriginalPath(mappedFilePath: string) { + protected getOriginalPath(mappedFilePath: string) { return this._entryMap.get(mappedFilePath) ?? mappedFilePath; } - protected _isMovedEntry(path: string) { + protected isMovedEntry(path: string) { return this._reverseEntryMap.has(path); } - protected _clear() { + protected clear() { this._entryMap.clear(); this._reverseEntryMap.clear(); this._folderMap.clear(); diff --git a/packages/pyright-internal/src/server.ts b/packages/pyright-internal/src/server.ts index 737456c8a..a3f6c9418 100644 --- a/packages/pyright-internal/src/server.ts +++ b/packages/pyright-internal/src/server.ts @@ -23,7 +23,7 @@ import { BackgroundAnalysisBase } from './backgroundAnalysisBase'; import { CommandController } from './commands/commandController'; import { getCancellationFolderName } from './common/cancellationUtils'; import { ConfigOptions, SignatureDisplayType } from './common/configOptions'; -import { ConsoleWithLogLevel, convertLogLevel, LogLevel } from './common/console'; +import { ConsoleWithLogLevel, LogLevel, convertLogLevel } from './common/console'; import { isDebugMode, isString } from './common/core'; import { expandPathVariables } from './common/envVarUtils'; import { FileBasedCancellationProvider } from './common/fileBasedCancellationUtils'; @@ -32,7 +32,7 @@ import { FullAccessHost } from './common/fullAccessHost'; import { Host } from './common/host'; import { resolvePaths } from './common/pathUtils'; import { ProgressReporter } from './common/progressReporter'; -import { createFromRealFileSystem, WorkspaceFileWatcherProvider } from './common/realFileSystem'; +import { WorkspaceFileWatcherProvider, createFromRealFileSystem } from './common/realFileSystem'; import { LanguageServerBase, ServerSettings } from './languageServerBase'; import { CodeActionProvider } from './languageService/codeActionProvider'; import { Workspace } from './workspaceFactory'; @@ -219,7 +219,7 @@ export class PyrightServer extends LanguageServerBase { } protected override createHost() { - return new FullAccessHost(this._serviceFS); + return new FullAccessHost(this.fs); } protected override createImportResolver(fs: FileSystem, options: ConfigOptions, host: Host): ImportResolver { @@ -246,7 +246,7 @@ export class PyrightServer extends LanguageServerBase { ): Promise<(Command | CodeAction)[] | undefined | null> { this.recordUserInteractionTime(); - const filePath = this._uriParser.decodeTextDocumentUri(params.textDocument.uri); + const filePath = this.uriParser.decodeTextDocumentUri(params.textDocument.uri); const workspace = await this.getWorkspaceForFile(filePath); return CodeActionProvider.getCodeActionsForPosition( workspace, @@ -266,14 +266,14 @@ export class PyrightServer extends LanguageServerBase { isEnabled: (data: AnalysisResults) => true, begin: () => { if (this.client.hasWindowProgressCapability) { - workDoneProgress = this._connection.window.createWorkDoneProgress(); + workDoneProgress = this.connection.window.createWorkDoneProgress(); workDoneProgress .then((progress) => { progress.begin(''); }) .ignoreErrors(); } else { - this._connection.sendNotification('pyright/beginProgress'); + this.connection.sendNotification('pyright/beginProgress'); } }, report: (message: string) => { @@ -284,7 +284,7 @@ export class PyrightServer extends LanguageServerBase { }) .ignoreErrors(); } else { - this._connection.sendNotification('pyright/reportProgress', message); + this.connection.sendNotification('pyright/reportProgress', message); } }, end: () => { @@ -296,7 +296,7 @@ export class PyrightServer extends LanguageServerBase { .ignoreErrors(); workDoneProgress = undefined; } else { - this._connection.sendNotification('pyright/endProgress'); + this.connection.sendNotification('pyright/endProgress'); } }, }; diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index c4e1ca94d..72a15b5cd 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -385,7 +385,7 @@ export class TestState { if (this.testData.rangesByText) { return this.testData.rangesByText; } - const result = this.createMultiMap(this.getRanges(), (r) => this._rangeText(r)); + const result = this.createMultiMap(this.getRanges(), (r) => this.rangeText(r)); this.testData.rangesByText = result; return result; @@ -394,7 +394,7 @@ export class TestState { getFilteredRanges( predicate: (m: Marker | undefined, d: T | undefined, text: string) => boolean ): Range[] { - return this.getRanges().filter((r) => predicate(r.marker, r.marker?.data as T | undefined, this._rangeText(r))); + return this.getRanges().filter((r) => predicate(r.marker, r.marker?.data as T | undefined, this.rangeText(r))); } getRangeByMarkerName(markerName: string): Range | undefined { @@ -904,7 +904,7 @@ export class TestState { } verifyRangeIs(expectedText: string, includeWhiteSpace?: boolean) { - this._verifyTextMatches(this._rangeText(this._getOnlyRange()), !!includeWhiteSpace, expectedText); + this._verifyTextMatches(this.rangeText(this._getOnlyRange()), !!includeWhiteSpace, expectedText); } async verifyCompletion( @@ -1536,7 +1536,7 @@ export class TestState { } } - protected _rangeText({ fileName, pos, end }: Range): string { + protected rangeText({ fileName, pos, end }: Range): string { return this.getFileContent(fileName).slice(pos, end); } From 58b0a134ac46fda92f6b26a1850cfbc760af7584 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 16:51:21 -0700 Subject: [PATCH 090/525] Reduced the default output of the CLI. This addresses https://github.com/microsoft/pyright/issues/4594. --- .../pyright-internal/src/common/console.ts | 80 +++++++----- packages/pyright-internal/src/pyright.ts | 120 +++++++++--------- 2 files changed, 107 insertions(+), 93 deletions(-) diff --git a/packages/pyright-internal/src/common/console.ts b/packages/pyright-internal/src/common/console.ts index 03fe1e22b..452c05f83 100644 --- a/packages/pyright-internal/src/common/console.ts +++ b/packages/pyright-internal/src/common/console.ts @@ -24,6 +24,17 @@ export interface ConsoleInterface { log: (message: string) => void; } +const levelMap = new Map([ + [LogLevel.Error, 0], + [LogLevel.Warn, 1], + [LogLevel.Info, 2], + [LogLevel.Log, 3], +]); + +export function getLevelNumber(level: LogLevel): number { + return levelMap.get(level) ?? 3; +} + // Avoids outputting errors to the console but counts // the number of logs and errors, which can be useful // for unit tests. @@ -51,69 +62,70 @@ export class NullConsole implements ConsoleInterface { } export class StandardConsole implements ConsoleInterface { + constructor(private _maxLevel: LogLevel = LogLevel.Log) {} + + get level(): LogLevel { + return this._maxLevel; + } + log(message: string) { - console.info(message); + if (getLevelNumber(this._maxLevel) >= getLevelNumber(LogLevel.Log)) { + console.log(message); + } } info(message: string) { - console.info(message); + if (getLevelNumber(this._maxLevel) >= getLevelNumber(LogLevel.Info)) { + console.info(message); + } } warn(message: string) { - console.warn(message); + if (getLevelNumber(this._maxLevel) >= getLevelNumber(LogLevel.Warn)) { + console.warn(message); + } } error(message: string) { - console.error(message); + if (getLevelNumber(this._maxLevel) >= getLevelNumber(LogLevel.Error)) { + console.error(message); + } } } -export class StandardConsoleWithLevel extends StandardConsole { - constructor(private _maxLevel: LogLevel = LogLevel.Log) { - super(); - } +export class StderrConsole implements ConsoleInterface { + constructor(private _maxLevel: LogLevel = LogLevel.Log) {} get level(): LogLevel { return this._maxLevel; } -} -export class StderrConsole implements ConsoleInterface { log(message: string) { - console.error(message); + if (getLevelNumber(this._maxLevel) >= getLevelNumber(LogLevel.Log)) { + console.error(message); + } } info(message: string) { - console.error(message); + if (getLevelNumber(this._maxLevel) >= getLevelNumber(LogLevel.Info)) { + console.error(message); + } } warn(message: string) { - console.error(message); + if (getLevelNumber(this._maxLevel) >= getLevelNumber(LogLevel.Warn)) { + console.error(message); + } } error(message: string) { - console.error(message); - } -} - -export class StderrConsoleWithLevel extends StderrConsole { - constructor(private _maxLevel: LogLevel = LogLevel.Log) { - super(); - } - - get level(): LogLevel { - return this._maxLevel; + if (getLevelNumber(this._maxLevel) >= getLevelNumber(LogLevel.Error)) { + console.error(message); + } } } export class ConsoleWithLogLevel implements ConsoleInterface { - private _levelMap: Map = new Map([ - [LogLevel.Error, 0], - [LogLevel.Warn, 1], - [LogLevel.Info, 2], - [LogLevel.Log, 3], - ]); - private _maxLevel = 2; constructor(private _console: ConsoleInterface, private _name = '') {} @@ -134,9 +146,9 @@ export class ConsoleWithLogLevel implements ConsoleInterface { } set level(value: LogLevel) { - let maxLevel = this._levelMap.get(value); + let maxLevel = getLevelNumber(value); if (maxLevel === undefined) { - maxLevel = this._levelMap.get(LogLevel.Info)!; + maxLevel = getLevelNumber(LogLevel.Info)!; } this._maxLevel = maxLevel; @@ -171,7 +183,7 @@ export class ConsoleWithLogLevel implements ConsoleInterface { } private _getNumericalLevel(level: LogLevel): number { - const numericLevel = this._levelMap.get(level); + const numericLevel = getLevelNumber(level); debug.assert(numericLevel !== undefined, 'Logger: unknown log level.'); return numericLevel !== undefined ? numericLevel : 2; } diff --git a/packages/pyright-internal/src/pyright.ts b/packages/pyright-internal/src/pyright.ts index 4d9ae2ce0..bfebe4d1f 100644 --- a/packages/pyright-internal/src/pyright.ts +++ b/packages/pyright-internal/src/pyright.ts @@ -14,25 +14,24 @@ import { timingStats } from './common/timing'; /* eslint-enable */ import chalk from 'chalk'; -import commandLineArgs from 'command-line-args'; -import { CommandLineOptions, OptionDefinition } from 'command-line-args'; +import commandLineArgs, { CommandLineOptions, OptionDefinition } from 'command-line-args'; +import { PackageTypeReport, TypeKnownStatus } from './analyzer/packageTypeReport'; import { PackageTypeVerifier } from './analyzer/packageTypeVerifier'; import { AnalyzerService } from './analyzer/service'; +import { ChokidarFileWatcherProvider } from './common/chokidarFileWatcherProvider'; import { CommandLineOptions as PyrightCommandLineOptions } from './common/commandLineOptions'; -import { LogLevel, StandardConsoleWithLevel, StderrConsoleWithLevel } from './common/console'; +import { ConsoleInterface, LogLevel, StandardConsole, StderrConsole } from './common/console'; +import { fail } from './common/debug'; +import { createDeferred } from './common/deferred'; import { Diagnostic, DiagnosticCategory } from './common/diagnostic'; import { FileDiagnostics } from './common/diagnosticSink'; +import { FullAccessHost } from './common/fullAccessHost'; import { combinePaths, normalizePath } from './common/pathUtils'; -import { createFromRealFileSystem } from './common/realFileSystem'; -import { isEmptyRange, Range } from './common/textRange'; import { versionFromString } from './common/pythonVersion'; +import { createFromRealFileSystem } from './common/realFileSystem'; +import { Range, isEmptyRange } from './common/textRange'; import { PyrightFileSystem } from './pyrightFileSystem'; -import { PackageTypeReport, TypeKnownStatus } from './analyzer/packageTypeReport'; -import { createDeferred } from './common/deferred'; -import { FullAccessHost } from './common/fullAccessHost'; -import { ChokidarFileWatcherProvider } from './common/chokidarFileWatcherProvider'; -import { fail } from './common/debug'; const toolName = 'pyright'; @@ -171,7 +170,7 @@ async function processArgs(): Promise { } if (args.version !== undefined) { - printVersion(); + printVersion(console); return ExitStatus.NoErrors; } @@ -289,11 +288,14 @@ async function processArgs(): Promise { } const treatWarningsAsErrors = !!args.warnings; - const logLevel = options.logTypeEvaluationTime ? LogLevel.Log : LogLevel.Error; + let logLevel = LogLevel.Error; + if (args.stats || args.verbose) { + logLevel = LogLevel.Info; + } // If using outputjson, redirect all console output to stderr so it doesn't mess // up the JSON output, which goes to stdout. - const output = args.outputjson ? new StderrConsoleWithLevel(logLevel) : new StandardConsoleWithLevel(logLevel); + const output = args.outputjson ? new StderrConsole(logLevel) : new StandardConsole(logLevel); const fileSystem = new PyrightFileSystem(createFromRealFileSystem(output, new ChokidarFileWatcherProvider(output))); // The package type verification uses a different path. @@ -348,7 +350,7 @@ async function processArgs(): Promise { errorCount += report.warningCount; } } else { - printVersion(); + printVersion(output); const report = reportDiagnosticsAsText(results.diagnostics, minSeverityLevel); errorCount += report.errorCount; if (treatWarningsAsErrors) { @@ -361,7 +363,7 @@ async function processArgs(): Promise { try { service.writeTypeStub(cancellationNone); service.dispose(); - console.log(`Type stub was created for '${args.createstub}'`); + console.info(`Type stub was created for '${args.createstub}'`); } catch (err) { let errMessage = ''; if (err instanceof Error) { @@ -379,7 +381,7 @@ async function processArgs(): Promise { if (!args.outputjson) { if (!watch) { // Print the total time. - timingStats.printSummary(console); + timingStats.printSummary(output); } if (args.stats) { @@ -401,7 +403,7 @@ async function processArgs(): Promise { exitStatus.resolve(errorCount > 0 ? ExitStatus.ErrorsReported : ExitStatus.NoErrors); return; } else if (!args.outputjson) { - console.log('Watching for file changes...'); + console.info('Watching for file changes...'); } }); @@ -425,7 +427,7 @@ function verifyPackageTypes( const jsonReport = buildTypeCompletenessReport(packageName, report, minSeverityLevel); if (outputJson) { - console.log(JSON.stringify(jsonReport, /* replacer */ undefined, 4)); + console.info(JSON.stringify(jsonReport, /* replacer */ undefined, 4)); } else { printTypeCompletenessReportText(jsonReport, !!options.verboseOutput); } @@ -579,44 +581,44 @@ function buildTypeCompletenessReport( function printTypeCompletenessReportText(results: PyrightJsonResults, verboseOutput: boolean) { const completenessReport = results.typeCompleteness!; - console.log(`Module name: "${completenessReport.moduleName}"`); + console.info(`Module name: "${completenessReport.moduleName}"`); if (completenessReport.packageRootDirectory !== undefined) { - console.log(`Package directory: "${completenessReport.packageRootDirectory}"`); + console.info(`Package directory: "${completenessReport.packageRootDirectory}"`); } if (completenessReport.moduleRootDirectory !== undefined) { - console.log(`Module directory: "${completenessReport.moduleRootDirectory}"`); + console.info(`Module directory: "${completenessReport.moduleRootDirectory}"`); } if (completenessReport.pyTypedPath !== undefined) { - console.log(`Path of py.typed file: "${completenessReport.pyTypedPath}"`); + console.info(`Path of py.typed file: "${completenessReport.pyTypedPath}"`); } // Print list of public modules. if (completenessReport.modules.length > 0) { - console.log(''); - console.log(`Public modules: ${completenessReport.modules.length}`); + console.info(''); + console.info(`Public modules: ${completenessReport.modules.length}`); completenessReport.modules.forEach((module) => { - console.log(` ${module.name}`); + console.info(` ${module.name}`); }); } // Print list of all symbols. if (completenessReport.symbols.length > 0 && verboseOutput) { - console.log(''); - console.log(`Exported symbols: ${completenessReport.symbols.filter((sym) => sym.isExported).length}`); + console.info(''); + console.info(`Exported symbols: ${completenessReport.symbols.filter((sym) => sym.isExported).length}`); completenessReport.symbols.forEach((symbol) => { if (symbol.isExported) { const refCount = symbol.referenceCount > 1 ? ` (${symbol.referenceCount} references)` : ''; - console.log(` ${symbol.name}${refCount}`); + console.info(` ${symbol.name}${refCount}`); } }); - console.log(''); - console.log(`Other referenced symbols: ${completenessReport.symbols.filter((sym) => !sym.isExported).length}`); + console.info(''); + console.info(`Other referenced symbols: ${completenessReport.symbols.filter((sym) => !sym.isExported).length}`); completenessReport.symbols.forEach((symbol) => { if (!symbol.isExported) { const refCount = symbol.referenceCount > 1 ? ` (${symbol.referenceCount} references)` : ''; - console.log(` ${symbol.name}${refCount}`); + console.info(` ${symbol.name}${refCount}`); } }); } @@ -627,15 +629,15 @@ function printTypeCompletenessReportText(results: PyrightJsonResults, verboseOut }); // Print all the symbol-specific diagnostics. - console.log(''); - console.log(`Symbols used in public interface:`); + console.info(''); + console.info(`Symbols used in public interface:`); results.typeCompleteness!.symbols.forEach((symbol) => { let diagnostics = symbol.diagnostics; if (!verboseOutput) { diagnostics = diagnostics.filter((diag) => diag.severity === 'error'); } if (diagnostics.length > 0) { - console.log(`${symbol.name}`); + console.info(`${symbol.name}`); diagnostics.forEach((diag) => { logDiagnosticToConsole(diag); }); @@ -643,43 +645,43 @@ function printTypeCompletenessReportText(results: PyrightJsonResults, verboseOut }); // Print other stats. - console.log(''); - console.log( + console.info(''); + console.info( `Symbols exported by "${completenessReport.packageName}": ${ completenessReport.exportedSymbolCounts.withKnownType + completenessReport.exportedSymbolCounts.withAmbiguousType + completenessReport.exportedSymbolCounts.withUnknownType }` ); - console.log(` With known type: ${completenessReport.exportedSymbolCounts.withKnownType}`); - console.log(` With ambiguous type: ${completenessReport.exportedSymbolCounts.withAmbiguousType}`); - console.log(` With unknown type: ${completenessReport.exportedSymbolCounts.withUnknownType}`); + console.info(` With known type: ${completenessReport.exportedSymbolCounts.withKnownType}`); + console.info(` With ambiguous type: ${completenessReport.exportedSymbolCounts.withAmbiguousType}`); + console.info(` With unknown type: ${completenessReport.exportedSymbolCounts.withUnknownType}`); if (completenessReport.ignoreUnknownTypesFromImports) { - console.log(` (Ignoring unknown types imported from other packages)`); + console.info(` (Ignoring unknown types imported from other packages)`); } - console.log(` Functions without docstring: ${completenessReport.missingFunctionDocStringCount}`); - console.log(` Functions without default param: ${completenessReport.missingDefaultParamCount}`); - console.log(` Classes without docstring: ${completenessReport.missingClassDocStringCount}`); - console.log(''); - console.log( + console.info(` Functions without docstring: ${completenessReport.missingFunctionDocStringCount}`); + console.info(` Functions without default param: ${completenessReport.missingDefaultParamCount}`); + console.info(` Classes without docstring: ${completenessReport.missingClassDocStringCount}`); + console.info(''); + console.info( `Other symbols referenced but not exported by "${completenessReport.packageName}": ${ completenessReport.otherSymbolCounts.withKnownType + completenessReport.otherSymbolCounts.withAmbiguousType + completenessReport.otherSymbolCounts.withUnknownType }` ); - console.log(` With known type: ${completenessReport.otherSymbolCounts.withKnownType}`); - console.log(` With ambiguous type: ${completenessReport.otherSymbolCounts.withAmbiguousType}`); - console.log(` With unknown type: ${completenessReport.otherSymbolCounts.withUnknownType}`); - console.log(''); - console.log(`Type completeness score: ${Math.round(completenessReport.completenessScore * 1000) / 10}%`); - console.log(''); + console.info(` With known type: ${completenessReport.otherSymbolCounts.withKnownType}`); + console.info(` With ambiguous type: ${completenessReport.otherSymbolCounts.withAmbiguousType}`); + console.info(` With unknown type: ${completenessReport.otherSymbolCounts.withUnknownType}`); + console.info(''); + console.info(`Type completeness score: ${Math.round(completenessReport.completenessScore * 1000) / 10}%`); + console.info(''); console.info(`Completed in ${results.summary.timeInSec}sec`); - console.log(''); + console.info(''); } function printUsage() { - console.log( + console.info( 'Usage: ' + toolName + ' [options] files...\n' + @@ -711,8 +713,8 @@ function getVersionString() { return version.toString(); } -function printVersion() { - console.log(`${toolName} ${getVersionString()}`); +function printVersion(console: ConsoleInterface) { + console.info(`${toolName} ${getVersionString()}`); } function reportDiagnosticsAsJson( @@ -751,7 +753,7 @@ function reportDiagnosticsAsJson( }); }); - console.log(JSON.stringify(report, /* replacer */ undefined, 4)); + console.info(JSON.stringify(report, /* replacer */ undefined, 4)); return { errorCount: report.summary.errorCount, @@ -821,7 +823,7 @@ function reportDiagnosticsAsText( ); if (fileErrorsAndWarnings.length > 0) { - console.log(`${fileDiagnostics.filePath}`); + console.info(`${fileDiagnostics.filePath}`); fileErrorsAndWarnings.forEach((diag) => { const jsonDiag = convertDiagnosticToJson(fileDiagnostics.filePath, diag); logDiagnosticToConsole(jsonDiag); @@ -837,7 +839,7 @@ function reportDiagnosticsAsText( } }); - console.log( + console.info( `${errorCount.toString()} ${errorCount === 1 ? 'error' : 'errors'}, ` + `${warningCount.toString()} ${warningCount === 1 ? 'warning' : 'warnings'}, ` + `${informationCount.toString()} ${informationCount === 1 ? 'information' : 'informations'} ` @@ -883,7 +885,7 @@ function logDiagnosticToConsole(diag: PyrightJsonDiagnostic, prefix = ' ') { message += chalk.gray(` (${diag.rule})`); } - console.log(message); + console.info(message); } // Increase the default stack trace limit from 16 to 64 to help diagnose From b231f03351855b7a126993b83103ace18cb1eb0f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 17:03:20 -0700 Subject: [PATCH 091/525] Fixed style issue. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1b16fff0c..74f2891d2 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11003,7 +11003,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // is an overload function, skip it during the first pass // because the selection of the proper overload may depend // on type arguments supplied by other function arguments. - + // We set useNarrowBoundOnly to true if this is the first // (but not only) pass through the parameter list because a wide // bound on a TypeVar (if a narrow bound has not yet been From 5c4d9b61170ce46655bcad8cf55e9788360febb5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 17:20:45 -0700 Subject: [PATCH 092/525] Fixed a bug in the isinstance and issubclass type narrowing when the types have no overlap and one or both is `@final`. In this case, the narrowing should result in a `Never` rather than an intersection type. This addresses https://github.com/microsoft/pyright/issues/5016. --- packages/pyright-internal/src/analyzer/typeGuards.ts | 6 +++++- .../src/tests/samples/typeNarrowingIsinstance3.py | 12 +++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 6780dfe82..869fdb391 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -1296,7 +1296,11 @@ function narrowTypeForIsInstance( } filteredTypes.push(addConditionToType(specializedFilterType, constraints)); - } else if (allowIntersections) { + } else if ( + allowIntersections && + !ClassType.isFinal(varType) && + !ClassType.isFinal(concreteFilterType) + ) { // The two types appear to have no relation. It's possible that the // two types are protocols or the program is expecting one type to // be a mix-in class used with the other. In this case, we'll diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py index 1da3a0c8c..f53db1e30 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py @@ -2,7 +2,7 @@ # narrowing in the case where there is no overlap between the # value type and the test type. -from typing import Type, TypeVar +from typing import Type, TypeVar, final class A: @@ -17,6 +17,11 @@ class C: c_val: int +@final +class D: + d_val: int + + def func1(val: A): if isinstance(val, B): val.a_val @@ -76,3 +81,8 @@ def func3(val: _T1) -> _T1: if isinstance(val, B): return val return val + + +def func4(val: D): + if isinstance(val, A): + reveal_type(val, expected_text="Never") From 2575969bf06935093ebe50e2977f085d48027ce5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 19:21:22 -0700 Subject: [PATCH 093/525] Fixed minor typo in comment. No functional change. --- packages/pyright-internal/src/analyzer/typeUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 8f69cc4b5..52d0f2261 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1027,7 +1027,7 @@ export function validateTypeVarDefault( } } -// During bidirectional type inference for constructors, an "executed type" +// During bidirectional type inference for constructors, an "expected type" // is used to prepopulate the type var map. This is problematic when the // expected type uses TypeVars that are not part of the context of the // class we are constructing. We'll replace these type variables with dummy From 924bf710b1104a6366b341fd356ca8bdc8ab7d4e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Apr 2023 19:38:43 -0700 Subject: [PATCH 094/525] Fixed a bug that resulted in a false positive error when constructing a tuple of classes in the second argument of an `isinstance` or `issubclass` call. This addresses https://github.com/microsoft/pyright/issues/5018. --- packages/pyright-internal/src/analyzer/checker.ts | 1 + packages/pyright-internal/src/tests/samples/isinstance3.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 8773521a2..fe7c1693c 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -3594,6 +3594,7 @@ export class Checker extends ParseTreeWalker { doForEachSubtype(type, (subtype) => { subtype = this._evaluator.makeTopLevelTypeVarsConcrete(subtype); + subtype = transformPossibleRecursiveTypeAlias(subtype); switch (subtype.category) { case TypeCategory.Any: diff --git a/packages/pyright-internal/src/tests/samples/isinstance3.py b/packages/pyright-internal/src/tests/samples/isinstance3.py index e0ad26c84..cd09c7061 100644 --- a/packages/pyright-internal/src/tests/samples/isinstance3.py +++ b/packages/pyright-internal/src/tests/samples/isinstance3.py @@ -4,7 +4,7 @@ from abc import abstractmethod -from typing import Any, Generic, Tuple, Type, TypeVar, Union +from typing import Any, Generic, Sequence, Tuple, Type, TypeVar, Union _T = TypeVar("_T", int, str) @@ -57,3 +57,7 @@ def execute(self, var: Union[_T, Tuple[_T]]) -> None: if isinstance(var, self.v2): pass + + +def func1(exceptions: Sequence[type[BaseException]], exception: Exception): + return isinstance(exception, tuple(exceptions)) From 06fc24c9a855a4d084ca5fc40ed4051ea85aec79 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 27 Apr 2023 09:53:13 -0700 Subject: [PATCH 095/525] Added a map of open documents to the languageServerBase class. It is responsible for applying any delta changes and updating the contents for each of the workspaces associated with that file. This allows source code contents to be shared between workspaces, which reduces memory usage. It also eliminates a correctness issue that can occur if new workspaces are added after files are open. It addresses https://github.com/microsoft/pyright/issues/4994. --- .../src/analyzer/backgroundAnalysisProgram.ts | 12 ++----- .../pyright-internal/src/analyzer/program.ts | 14 +++------ .../pyright-internal/src/analyzer/service.ts | 3 +- .../src/analyzer/sourceFile.ts | 28 ++++++++--------- .../src/backgroundAnalysisBase.ts | 8 +---- .../src/common/workspaceEditUtils.ts | 14 ++++++--- .../src/languageServerBase.ts | 31 ++++++++++++++++++- .../src/tests/chainedSourceFiles.test.ts | 2 +- .../src/tests/harness/fourslash/testState.ts | 4 +-- .../src/tests/sourceFile.test.ts | 2 +- .../src/tests/testStateUtils.ts | 2 +- 11 files changed, 66 insertions(+), 54 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts index 88c2e1d54..fc8f804cd 100644 --- a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts +++ b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts @@ -8,7 +8,6 @@ */ import { CancellationToken } from 'vscode-languageserver'; -import { TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; import { BackgroundAnalysisBase, IndexOptions, RefreshOptions } from '../backgroundAnalysisBase'; import { ConfigOptions, ExecutionEnvironment } from '../common/configOptions'; @@ -99,8 +98,8 @@ export class BackgroundAnalysisProgram { } setFileOpened(filePath: string, version: number | null, contents: string, options: OpenFileOptions) { - this._backgroundAnalysis?.setFileOpened(filePath, version, [{ text: contents }], options); - this._program.setFileOpened(filePath, version, [{ text: contents }], options); + this._backgroundAnalysis?.setFileOpened(filePath, version, contents, options); + this._program.setFileOpened(filePath, version, contents, options); } getChainedFilePath(filePath: string): string | undefined { @@ -112,12 +111,7 @@ export class BackgroundAnalysisProgram { this._program.updateChainedFilePath(filePath, chainedFilePath); } - updateOpenFileContents( - path: string, - version: number | null, - contents: TextDocumentContentChangeEvent[], - options: OpenFileOptions - ) { + updateOpenFileContents(path: string, version: number | null, contents: string, options: OpenFileOptions) { this._backgroundAnalysis?.setFileOpened(path, version, contents, options); this._program.setFileOpened(path, version, contents, options); this.markFilesDirty([path], /* evenIfContentsAreSame */ true); diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index fa81d3353..5d66d627b 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -9,7 +9,6 @@ */ import { CancellationToken, CompletionItem, DocumentSymbol } from 'vscode-languageserver'; -import { TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; import { CompletionList } from 'vscode-languageserver-types'; import { Commands } from '../commands/commands'; @@ -352,12 +351,7 @@ export class Program { return sourceFile; } - setFileOpened( - filePath: string, - version: number | null, - contents: TextDocumentContentChangeEvent[], - options?: OpenFileOptions - ) { + setFileOpened(filePath: string, version: number | null, contents: string, options?: OpenFileOptions) { let sourceFileInfo = this.getSourceFileInfo(filePath); if (!sourceFileInfo) { const importName = this._getImportNameForFile(filePath); @@ -422,7 +416,7 @@ export class Program { if (sourceFileInfo) { sourceFileInfo.isOpenByClient = false; sourceFileInfo.isTracked = isTracked ?? sourceFileInfo.isTracked; - sourceFileInfo.sourceFile.setClientVersion(null, []); + sourceFileInfo.sourceFile.setClientVersion(null, ''); // There is no guarantee that content is saved before the file is closed. // We need to mark the file dirty so we can re-analyze next time. @@ -1632,7 +1626,7 @@ export class Program { const isTracked = info ? info.isTracked : true; const realFilePath = info ? info.sourceFile.getRealFilePath() : filePath; - cloned.setFileOpened(filePath, version, [{ text }], { + cloned.setFileOpened(filePath, version, text, { chainedFilePath, ipythonMode, isTracked, @@ -1718,7 +1712,7 @@ export class Program { program.setFileOpened( fileInfo.sourceFile.getFilePath(), version, - [{ text: fileInfo.sourceFile.getOpenFileContents()! }], + fileInfo.sourceFile.getOpenFileContents() ?? '', { chainedFilePath: fileInfo.chainedSourceFile?.sourceFile.getFilePath(), ipythonMode: fileInfo.sourceFile.getIPythonMode(), diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index e65f4bf9a..c5a590358 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -16,7 +16,6 @@ import { CompletionItem, DocumentSymbol, } from 'vscode-languageserver'; -import { TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; import { BackgroundAnalysisBase, IndexOptions, RefreshOptions } from '../backgroundAnalysisBase'; import { CancellationProvider, DefaultCancellationProvider } from '../common/cancellationUtils'; @@ -318,7 +317,7 @@ export class AnalyzerService { updateOpenFileContents( path: string, version: number | null, - contents: TextDocumentContentChangeEvent[], + contents: string, ipythonMode = IPythonMode.None, realFilePath?: string ) { diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 19fbf8bca..7936a844d 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -8,7 +8,6 @@ */ import { CancellationToken, CompletionItem, DocumentSymbol } from 'vscode-languageserver'; -import { TextDocument, TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; import { isMainThread } from 'worker_threads'; import * as SymbolNameUtils from '../analyzer/symbolNameUtils'; @@ -136,7 +135,8 @@ export class SourceFile { // Client's version of the file. Undefined implies that contents // need to be read from disk. - private _clientDocument: TextDocument | undefined; + private _clientDocumentContents: string | undefined; + private _clientDocumentVersion: number | undefined; // Version of file contents that have been analyzed. private _analyzedFileContentsVersion = -1; @@ -561,7 +561,7 @@ export class SourceFile { // If this is an open file any content changes will be // provided through the editor. We can assume contents // didn't change without us knowing about them. - if (this._clientDocument) { + if (this._clientDocumentContents) { return false; } @@ -635,11 +635,11 @@ export class SourceFile { } getClientVersion() { - return this._clientDocument?.version; + return this._clientDocumentVersion; } getOpenFileContents() { - return this._clientDocument?.getText(); + return this._clientDocumentContents; } getFileContent(): string | undefined { @@ -667,24 +667,22 @@ export class SourceFile { } } - setClientVersion(version: number | null, contents: TextDocumentContentChangeEvent[]): void { + setClientVersion(version: number | null, contents: string): void { if (version === null) { - this._clientDocument = undefined; + this._clientDocumentVersion = undefined; + this._clientDocumentContents = undefined; } else { - if (!this._clientDocument) { - this._clientDocument = TextDocument.create(this._filePath, 'python', version, ''); - } - this._clientDocument = TextDocument.update(this._clientDocument, contents, version); + this._clientDocumentVersion = version; + this._clientDocumentContents = contents; - const fileContents = this._clientDocument.getText(); - const contentsHash = StringUtils.hashString(fileContents); + const contentsHash = StringUtils.hashString(contents); // Have the contents of the file changed? - if (fileContents.length !== this._lastFileContentLength || contentsHash !== this._lastFileContentHash) { + if (contents.length !== this._lastFileContentLength || contentsHash !== this._lastFileContentHash) { this.markDirty(); } - this._lastFileContentLength = fileContents.length; + this._lastFileContentLength = contents.length; this._lastFileContentHash = contentsHash; this._isFileDeleted = false; } diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index d23d04707..263f696e9 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -7,7 +7,6 @@ */ import { CancellationToken } from 'vscode-languageserver'; -import { TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument'; import { MessageChannel, MessagePort, parentPort, threadId, Worker, workerData } from 'worker_threads'; import { AnalysisCompleteCallback, AnalysisResults, analyzeProgram, nullCallback } from './analyzer/analysis'; @@ -71,12 +70,7 @@ export class BackgroundAnalysisBase { this.enqueueRequest({ requestType: 'ensurePartialStubPackages', data: { executionRoot } }); } - setFileOpened( - filePath: string, - version: number | null, - contents: TextDocumentContentChangeEvent[], - options: OpenFileOptions - ) { + setFileOpened(filePath: string, version: number | null, contents: string, options: OpenFileOptions) { this.enqueueRequest({ requestType: 'setFileOpened', data: { filePath, version, contents, options }, diff --git a/packages/pyright-internal/src/common/workspaceEditUtils.ts b/packages/pyright-internal/src/common/workspaceEditUtils.ts index fa3e0ac1a..46daa3a01 100644 --- a/packages/pyright-internal/src/common/workspaceEditUtils.ts +++ b/packages/pyright-internal/src/common/workspaceEditUtils.ts @@ -16,6 +16,7 @@ import { WorkspaceEdit, } from 'vscode-languageserver'; +import { TextDocument } from 'vscode-languageserver-textdocument'; import { SourceFileInfo } from '../analyzer/program'; import { AnalyzerService } from '../analyzer/service'; import { FileEditAction, FileEditActions, TextEditAction } from '../common/editAction'; @@ -148,11 +149,14 @@ export function applyDocumentChanges(clonedService: AnalyzerService, fileInfo: S ); } - const version = (fileInfo.sourceFile.getClientVersion() ?? 0) + 1; + const version = fileInfo.sourceFile.getClientVersion() ?? 0; + const filePath = fileInfo.sourceFile.getFilePath(); + const sourceDoc = TextDocument.create(filePath, 'python', version, fileInfo.sourceFile.getOpenFileContents() ?? ''); + clonedService.updateOpenFileContents( - fileInfo.sourceFile.getFilePath(), - version, - edits.map((t) => ({ range: t.range, text: t.newText })), + filePath, + version + 1, + TextDocument.applyEdits(sourceDoc, edits), fileInfo.sourceFile.getIPythonMode(), fileInfo.sourceFile.getRealFilePath() ); @@ -216,7 +220,7 @@ function _convertToWorkspaceEditWithDocumentChanges( }; // Ordering of documentChanges are important. - // Make sure create operaiton happens before edits + // Make sure create operation happens before edits. for (const operation of editActions.fileOperations) { switch (operation.kind) { case 'create': diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index aa39708a5..a2b043947 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -72,6 +72,7 @@ import { } from 'vscode-languageserver'; import { ResultProgressReporter, attachWorkDone } from 'vscode-languageserver/lib/common/progress'; +import { TextDocument } from 'vscode-languageserver-textdocument'; import { AnalysisResults } from './analyzer/analysis'; import { BackgroundAnalysisProgram } from './analyzer/backgroundAnalysisProgram'; import { CacheManager } from './analyzer/cacheManager'; @@ -336,6 +337,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected defaultClientConfig: any; protected workspaceFactory: WorkspaceFactory; + protected openFileMap = new Map(); protected cacheManager: CacheManager; protected fs: PyrightFileSystem; protected uriParser: UriParser; @@ -1175,6 +1177,16 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return; } + let doc = this.openFileMap.get(filePath); + if (doc) { + // We shouldn't get an open text document request for an already-opened doc. + this.console.error(`Received redundant open text document command for ${filePath}`); + doc = TextDocument.update(doc, [{ text: params.textDocument.text }], params.textDocument.version); + } else { + doc = TextDocument.create(filePath, 'python', params.textDocument.version, params.textDocument.text); + } + this.openFileMap.set(filePath, doc); + // Send this open to all the workspaces that might contain this file. const workspaces = await this.getContainingWorkspacesForFile(filePath); workspaces.forEach((w) => { @@ -1191,10 +1203,21 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return; } + let doc = this.openFileMap.get(filePath); + if (!doc) { + // We shouldn't get a change text request for a closed doc. + this.console.error(`Received change text document command for closed file ${filePath}`); + return; + } + + doc = TextDocument.update(doc, params.contentChanges, params.textDocument.version); + this.openFileMap.set(filePath, doc); + const newContents = doc.getText(); + // Send this change to all the workspaces that might contain this file. const workspaces = await this.getContainingWorkspacesForFile(filePath); workspaces.forEach((w) => { - w.service.updateOpenFileContents(filePath, params.textDocument.version, params.contentChanges, ipythonMode); + w.service.updateOpenFileContents(filePath, params.textDocument.version, newContents, ipythonMode); }); } @@ -1210,6 +1233,8 @@ export abstract class LanguageServerBase implements LanguageServerInterface { workspaces.forEach((w) => { w.service.setFileClosed(filePath); }); + + this.openFileMap.delete(filePath); } protected onDidChangeWatchedFiles(params: DidChangeWatchedFilesParams) { @@ -1271,6 +1296,10 @@ export abstract class LanguageServerBase implements LanguageServerInterface { protected onShutdown(token: CancellationToken) { // Shutdown remaining workspaces. this.workspaceFactory.clear(); + + // Stop tracking all open files. + this.openFileMap.clear(); + return Promise.resolve(); } diff --git a/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts b/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts index e07cef0bb..6ed458706 100644 --- a/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts +++ b/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts @@ -152,7 +152,7 @@ test('modify chained files', async () => { assert.strictEqual(initialDiags.length, 0); // Change test1 content - service.updateOpenFileContents(data.markerPositions.get('changed')!.fileName, 2, [{ text: 'def foo5(): pass' }]); + service.updateOpenFileContents(data.markerPositions.get('changed')!.fileName, 2, 'def foo5(): pass'); analyze(service.test_program); const finalDiags = await service.getDiagnosticsForRange( diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 72a15b5cd..d191350ac 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -426,7 +426,7 @@ export class TestState { fileToOpen.fileName = normalizeSlashes(fileToOpen.fileName); this.activeFile = fileToOpen; - this.program.setFileOpened(this.activeFile.fileName, 1, [{ text: fileToOpen.content }]); + this.program.setFileOpened(this.activeFile.fileName, 1, fileToOpen.content); } openFiles(indexOrNames: (number | string)[]): void { @@ -1358,7 +1358,7 @@ export class TestState { if (!this.program.getSourceFileInfo(fileName)) { const file = this.testData.files.find((v) => v.fileName === fileName); if (file) { - this.program.setFileOpened(fileName, file.version, [{ text: file.content }]); + this.program.setFileOpened(fileName, file.version, file.content); } } diff --git a/packages/pyright-internal/src/tests/sourceFile.test.ts b/packages/pyright-internal/src/tests/sourceFile.test.ts index b49e20484..9000cb2fd 100644 --- a/packages/pyright-internal/src/tests/sourceFile.test.ts +++ b/packages/pyright-internal/src/tests/sourceFile.test.ts @@ -40,6 +40,6 @@ test('Empty Open file', () => { '# Content' ); - state.workspace.service.updateOpenFileContents(marker.fileName, 1, [{ text: '' }]); + state.workspace.service.updateOpenFileContents(marker.fileName, 1, ''); assert.strictEqual(state.workspace.service.test_program.getSourceFile(marker.fileName)?.getFileContent(), ''); }); diff --git a/packages/pyright-internal/src/tests/testStateUtils.ts b/packages/pyright-internal/src/tests/testStateUtils.ts index 1d324da14..d6d092b2d 100644 --- a/packages/pyright-internal/src/tests/testStateUtils.ts +++ b/packages/pyright-internal/src/tests/testStateUtils.ts @@ -77,7 +77,7 @@ export function applyFileOperations(state: TestState, fileEditActions: FileEditA state.program.setFileClosed(renamed.oldFilePath); } - state.program.setFileOpened(openedFilePath, result.version + 1, [{ text: result.text }]); + state.program.setFileOpened(openedFilePath, result.version + 1, result.text); } } From 8b10b376d8ba2adb68e93df032ceea89e1452dc9 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 27 Apr 2023 09:53:58 -0700 Subject: [PATCH 096/525] Fixed a bug that resulted in a false positive error when doing protocol matching when there are multiple levels of protocol inheritance and a method that uses `Self` in its signature. This addresses https://github.com/microsoft/pyright/issues/4966. --- .../src/analyzer/protocols.ts | 2 +- .../src/tests/samples/protocol40.py | 24 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 +++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/protocol40.py diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index 96764f492..b79bdd492 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -237,7 +237,7 @@ function assignClassToProtocolInternal( // We can skip this if it's the dest class because it is already // specialized. if (!ClassType.isSameGenericClass(mroClass, destType)) { - destMemberType = partiallySpecializeType(destMemberType, mroClass); + destMemberType = partiallySpecializeType(destMemberType, mroClass, destType); } let srcMemberType: Type; diff --git a/packages/pyright-internal/src/tests/samples/protocol40.py b/packages/pyright-internal/src/tests/samples/protocol40.py new file mode 100644 index 000000000..053a08a90 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/protocol40.py @@ -0,0 +1,24 @@ +# This sample tests that the Self type in a Protocol subclass is partially +# specialized appropriately during protocol matching. + +from typing import Generic, Protocol, TypeVar, Self + +T = TypeVar("T", covariant=True) + + +class P0(Protocol[T]): + def f0(self, /) -> Self: + ... + + +class P1(P0[T], Protocol[T]): + ... + + +class C(Generic[T]): + def f0(self, /) -> Self: + ... + + +a: P0[str] = C[str]() +b: P1[str] = C[str]() diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 6b86c5e27..2cb3dcf3d 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1311,6 +1311,12 @@ test('Protocol39', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Protocol40', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol40.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('TypedDict1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDict1.py']); From daba4a3eb93bd86c63fe05ae0539fe8860232929 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 27 Apr 2023 12:00:09 -0700 Subject: [PATCH 097/525] Fixed inconsistent evaluation of a class type when calling a generic constructor that accepts a `type[T]` parameter and a union of classes is passed as an argument. This addresses https://github.com/microsoft/pyright/issues/5022. --- .../src/analyzer/typeEvaluator.ts | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 74f2891d2..bedaa70b4 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8740,26 +8740,26 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions skipUnknownArgCheck ); - if (!callResult.argumentErrors) { - let adjustedClassType = type; - if ( - callResult.specializedInitSelfType && - isClassInstance(callResult.specializedInitSelfType) && - ClassType.isSameGenericClass(callResult.specializedInitSelfType, type) - ) { - adjustedClassType = ClassType.cloneAsInstantiable(callResult.specializedInitSelfType); - } + let adjustedClassType = type; + if ( + callResult.specializedInitSelfType && + isClassInstance(callResult.specializedInitSelfType) && + ClassType.isSameGenericClass(callResult.specializedInitSelfType, type) + ) { + adjustedClassType = ClassType.cloneAsInstantiable(callResult.specializedInitSelfType); + } - returnType = applyExpectedTypeForConstructor( - adjustedClassType, - /* inferenceContext */ undefined, - typeVarContext - ); + returnType = applyExpectedTypeForConstructor( + adjustedClassType, + /* inferenceContext */ undefined, + typeVarContext + ); - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + if (!callResult.argumentErrors) { overloadsUsedForCall.push(...callResult.overloadsUsedForCall); } else { reportedErrors = true; From 2b74707fbf33bbf7d2fa3bb8e50ce8283ea30787 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 27 Apr 2023 20:24:05 -0700 Subject: [PATCH 098/525] Changed the behavior of the `reportIncompatibleMethodOverride` check to exempt the case where the base class or override has a type that is defined by `Callable[..., X]`. The `...` means that it's compatible with any signature. Also fixed a false negative in this check where the base method contains a `**kwargs` parameter but the override does not. This addresses https://github.com/microsoft/pyright/issues/1787. --- .../src/analyzer/typeEvaluator.ts | 478 +++++++++--------- .../src/tests/samples/methodOverride1.py | 13 + .../src/tests/typeEvaluator3.test.ts | 2 +- 3 files changed, 264 insertions(+), 229 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bedaa70b4..6563b077b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -25549,165 +25549,221 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let canOverride = true; - // Verify that we're not overriding a static, class or instance method with - // an incompatible type. - if (FunctionType.isStaticMethod(baseMethod)) { - if (!FunctionType.isStaticMethod(overrideMethod)) { - diag?.addMessage(Localizer.DiagnosticAddendum.overrideNotStaticMethod()); - canOverride = false; - } - } else if (FunctionType.isClassMethod(baseMethod)) { - if (!FunctionType.isClassMethod(overrideMethod)) { - diag?.addMessage(Localizer.DiagnosticAddendum.overrideNotClassMethod()); - canOverride = false; + if ( + !FunctionType.shouldSkipArgsKwargsCompatibilityCheck(baseMethod) && + !FunctionType.shouldSkipArgsKwargsCompatibilityCheck(overrideMethod) + ) { + // Verify that we're not overriding a static, class or instance method with + // an incompatible type. + if (FunctionType.isStaticMethod(baseMethod)) { + if (!FunctionType.isStaticMethod(overrideMethod)) { + diag?.addMessage(Localizer.DiagnosticAddendum.overrideNotStaticMethod()); + canOverride = false; + } + } else if (FunctionType.isClassMethod(baseMethod)) { + if (!FunctionType.isClassMethod(overrideMethod)) { + diag?.addMessage(Localizer.DiagnosticAddendum.overrideNotClassMethod()); + canOverride = false; + } } - } - if (FunctionType.isInstanceMethod(baseMethod)) { - if (!FunctionType.isInstanceMethod(overrideMethod)) { - diag?.addMessage(Localizer.DiagnosticAddendum.overrideNotInstanceMethod()); - canOverride = false; + if (FunctionType.isInstanceMethod(baseMethod)) { + if (!FunctionType.isInstanceMethod(overrideMethod)) { + diag?.addMessage(Localizer.DiagnosticAddendum.overrideNotInstanceMethod()); + canOverride = false; + } } - } - // Verify that the positional param count matches exactly or that the override - // adds only params that preserve the original signature. - let foundParamCountMismatch = false; - if (overrideParamDetails.positionParamCount < baseParamDetails.positionParamCount) { - if (overrideParamDetails.argsIndex === undefined) { - foundParamCountMismatch = true; - } else { - const overrideArgsType = overrideParamDetails.params[overrideParamDetails.argsIndex].type; - for (let i = overrideParamDetails.positionParamCount; i < baseParamDetails.positionParamCount; i++) { - if ( - !assignType( - overrideArgsType, - baseParamDetails.params[i].type, - diag?.createAddendum(), - new TypeVarContext(getTypeVarScopeId(overrideMethod)), - new TypeVarContext(getTypeVarScopeId(baseMethod)), - AssignTypeFlags.SkipSolveTypeVars - ) + // Verify that the positional param count matches exactly or that the override + // adds only params that preserve the original signature. + let foundParamCountMismatch = false; + if (overrideParamDetails.positionParamCount < baseParamDetails.positionParamCount) { + if (overrideParamDetails.argsIndex === undefined) { + foundParamCountMismatch = true; + } else { + const overrideArgsType = overrideParamDetails.params[overrideParamDetails.argsIndex].type; + for ( + let i = overrideParamDetails.positionParamCount; + i < baseParamDetails.positionParamCount; + i++ ) { - Localizer.DiagnosticAddendum.overrideParamType().format({ - index: i + 1, - baseType: printType(baseParamDetails.params[i].type), - overrideType: printType(overrideArgsType), - }); - canOverride = false; + if ( + !assignType( + overrideArgsType, + baseParamDetails.params[i].type, + diag?.createAddendum(), + new TypeVarContext(getTypeVarScopeId(overrideMethod)), + new TypeVarContext(getTypeVarScopeId(baseMethod)), + AssignTypeFlags.SkipSolveTypeVars + ) + ) { + Localizer.DiagnosticAddendum.overrideParamType().format({ + index: i + 1, + baseType: printType(baseParamDetails.params[i].type), + overrideType: printType(overrideArgsType), + }); + canOverride = false; + } } } - } - } else if (overrideParamDetails.positionParamCount > baseParamDetails.positionParamCount) { - // Verify that all of the override parameters that extend the - // signature are either *args, **kwargs or parameters with - // default values. + } else if (overrideParamDetails.positionParamCount > baseParamDetails.positionParamCount) { + // Verify that all of the override parameters that extend the + // signature are either *args, **kwargs or parameters with + // default values. - for (let i = baseParamDetails.positionParamCount; i < overrideParamDetails.positionParamCount; i++) { - const overrideParam = overrideParamDetails.params[i].param; + for (let i = baseParamDetails.positionParamCount; i < overrideParamDetails.positionParamCount; i++) { + const overrideParam = overrideParamDetails.params[i].param; - if ( - overrideParam.category === ParameterCategory.Simple && - overrideParam.name && - !overrideParam.hasDefault - ) { - foundParamCountMismatch = true; + if ( + overrideParam.category === ParameterCategory.Simple && + overrideParam.name && + !overrideParam.hasDefault + ) { + foundParamCountMismatch = true; + } } } - } - if (foundParamCountMismatch) { - diag?.addMessage( - Localizer.DiagnosticAddendum.overridePositionalParamCount().format({ - baseCount: baseParamDetails.params.length, - overrideCount: overrideParamDetails.params.length, - }) + if (foundParamCountMismatch) { + diag?.addMessage( + Localizer.DiagnosticAddendum.overridePositionalParamCount().format({ + baseCount: baseParamDetails.params.length, + overrideCount: overrideParamDetails.params.length, + }) + ); + canOverride = false; + } + + const positionalParamCount = Math.min( + baseParamDetails.positionParamCount, + overrideParamDetails.positionParamCount ); - canOverride = false; - } - const positionalParamCount = Math.min( - baseParamDetails.positionParamCount, - overrideParamDetails.positionParamCount - ); + for (let i = 0; i < positionalParamCount; i++) { + // If the first parameter is a "self" or "cls" parameter, skip the + // test because these are allowed to violate the Liskov substitution + // principle. + if (i === 0) { + if ( + FunctionType.isInstanceMethod(overrideMethod) || + FunctionType.isClassMethod(overrideMethod) || + FunctionType.isConstructorMethod(overrideMethod) + ) { + continue; + } + } + + const baseParam = baseParamDetails.params[i].param; + const overrideParam = overrideParamDetails.params[i].param; - for (let i = 0; i < positionalParamCount; i++) { - // If the first parameter is a "self" or "cls" parameter, skip the - // test because these are allowed to violate the Liskov substitution - // principle. - if (i === 0) { if ( - FunctionType.isInstanceMethod(overrideMethod) || - FunctionType.isClassMethod(overrideMethod) || - FunctionType.isConstructorMethod(overrideMethod) + i >= baseParamDetails.positionOnlyParamCount && + !isPrivateOrProtectedName(baseParam.name || '') && + baseParamDetails.params[i].source !== ParameterSource.PositionOnly && + baseParam.category === ParameterCategory.Simple && + baseParam.name !== overrideParam.name ) { - continue; - } - } - - const baseParam = baseParamDetails.params[i].param; - const overrideParam = overrideParamDetails.params[i].param; + if (overrideParam.category === ParameterCategory.Simple) { + if (enforceParamNames) { + if (overrideParamDetails.params[i].source === ParameterSource.PositionOnly) { + diag?.addMessage( + Localizer.DiagnosticAddendum.overrideParamNamePositionOnly().format({ + index: i + 1, + baseName: baseParam.name || '*', + }) + ); + } else { + diag?.addMessage( + Localizer.DiagnosticAddendum.overrideParamName().format({ + index: i + 1, + baseName: baseParam.name || '*', + overrideName: overrideParam.name || '*', + }) + ); + } + canOverride = false; + } + } + } else if ( + i < overrideParamDetails.positionOnlyParamCount && + i >= baseParamDetails.positionOnlyParamCount + ) { + diag?.addMessage( + Localizer.DiagnosticAddendum.overrideParamNamePositionOnly().format({ + index: i + 1, + baseName: baseParam.name || '*', + }) + ); + canOverride = false; + } else { + const baseParamType = baseParamDetails.params[i].type; + const overrideParamType = overrideParamDetails.params[i].type; - if ( - i >= baseParamDetails.positionOnlyParamCount && - !isPrivateOrProtectedName(baseParam.name || '') && - baseParamDetails.params[i].source !== ParameterSource.PositionOnly && - baseParam.category === ParameterCategory.Simple && - baseParam.name !== overrideParam.name - ) { - if (overrideParam.category === ParameterCategory.Simple) { - if (enforceParamNames) { - if (overrideParamDetails.params[i].source === ParameterSource.PositionOnly) { - diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamNamePositionOnly().format({ - index: i + 1, - baseName: baseParam.name || '*', - }) - ); - } else { + const baseIsSynthesizedTypeVar = isTypeVar(baseParamType) && baseParamType.details.isSynthesized; + const overrideIsSynthesizedTypeVar = + isTypeVar(overrideParamType) && overrideParamType.details.isSynthesized; + if (!baseIsSynthesizedTypeVar && !overrideIsSynthesizedTypeVar) { + if ( + baseParam.category !== overrideParam.category || + !assignType( + overrideParamType, + baseParamType, + diag?.createAddendum(), + new TypeVarContext(getTypeVarScopeId(overrideMethod)), + new TypeVarContext(getTypeVarScopeId(baseMethod)), + AssignTypeFlags.SkipSolveTypeVars + ) + ) { diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamName().format({ + Localizer.DiagnosticAddendum.overrideParamType().format({ index: i + 1, - baseName: baseParam.name || '*', - overrideName: overrideParam.name || '*', + baseType: printType(baseParamType), + overrideType: printType(overrideParamType), }) ); + canOverride = false; } + } + + if ( + baseParamDetails.params[i].param.hasDefault && + !overrideParamDetails.params[i].param.hasDefault + ) { + diag?.addMessage( + Localizer.DiagnosticAddendum.overrideParamNoDefault().format({ + index: i + 1, + }) + ); canOverride = false; } } - } else if ( - i < overrideParamDetails.positionOnlyParamCount && - i >= baseParamDetails.positionOnlyParamCount - ) { - diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamNamePositionOnly().format({ - index: i + 1, - baseName: baseParam.name || '*', - }) - ); - canOverride = false; - } else { - const baseParamType = baseParamDetails.params[i].type; - const overrideParamType = overrideParamDetails.params[i].type; + } + + // Check for a *args match. + if (baseParamDetails.argsIndex !== undefined) { + if (overrideParamDetails.argsIndex === undefined) { + diag?.addMessage( + Localizer.DiagnosticAddendum.overrideParamNameMissing().format({ + name: baseParamDetails.params[baseParamDetails.argsIndex].param.name ?? '?', + }) + ); + canOverride = false; + } else { + const overrideParamType = overrideParamDetails.params[overrideParamDetails.argsIndex].type; + const baseParamType = baseParamDetails.params[baseParamDetails.argsIndex].type; - const baseIsSynthesizedTypeVar = isTypeVar(baseParamType) && baseParamType.details.isSynthesized; - const overrideIsSynthesizedTypeVar = - isTypeVar(overrideParamType) && overrideParamType.details.isSynthesized; - if (!baseIsSynthesizedTypeVar && !overrideIsSynthesizedTypeVar) { if ( - baseParam.category !== overrideParam.category || !assignType( overrideParamType, baseParamType, diag?.createAddendum(), new TypeVarContext(getTypeVarScopeId(overrideMethod)), - new TypeVarContext(getTypeVarScopeId(baseMethod)), + /* srcTypeVarContext */ undefined, AssignTypeFlags.SkipSolveTypeVars ) ) { diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamType().format({ - index: i + 1, + Localizer.DiagnosticAddendum.overrideParamKeywordType().format({ + name: overrideParamDetails.params[overrideParamDetails.argsIndex].param.name ?? '?', baseType: printType(baseParamType), overrideType: printType(overrideParamType), }) @@ -25715,132 +25771,98 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions canOverride = false; } } - - if (baseParamDetails.params[i].param.hasDefault && !overrideParamDetails.params[i].param.hasDefault) { - diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamNoDefault().format({ - index: i + 1, - }) - ); - canOverride = false; - } - } - } - - // Check for a *args match. - if (baseParamDetails.argsIndex !== undefined) { - if (overrideParamDetails.argsIndex === undefined) { - diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamNameMissing().format({ - name: baseParamDetails.params[baseParamDetails.argsIndex].param.name ?? '?', - }) - ); - canOverride = false; - } else { - const overrideParamType = overrideParamDetails.params[overrideParamDetails.argsIndex].type; - const baseParamType = baseParamDetails.params[baseParamDetails.argsIndex].type; - - if ( - !assignType( - overrideParamType, - baseParamType, - diag?.createAddendum(), - new TypeVarContext(getTypeVarScopeId(overrideMethod)), - /* srcTypeVarContext */ undefined, - AssignTypeFlags.SkipSolveTypeVars - ) - ) { - diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamKeywordType().format({ - name: overrideParamDetails.params[overrideParamDetails.argsIndex].param.name ?? '?', - baseType: printType(baseParamType), - overrideType: printType(overrideParamType), - }) - ); - canOverride = false; - } } - } - // Now check any keyword-only parameters. - const baseKwOnlyParams = baseParamDetails.params.filter( - (paramInfo) => - paramInfo.source === ParameterSource.KeywordOnly && - paramInfo.param.category === ParameterCategory.Simple - ); - const overrideWkOnlyParams = overrideParamDetails.params.filter( - (paramInfo) => - paramInfo.source === ParameterSource.KeywordOnly && - paramInfo.param.category === ParameterCategory.Simple - ); + // Now check any keyword-only parameters. + const baseKwOnlyParams = baseParamDetails.params.filter( + (paramInfo) => + paramInfo.source === ParameterSource.KeywordOnly && + paramInfo.param.category === ParameterCategory.Simple + ); + const overrideWkOnlyParams = overrideParamDetails.params.filter( + (paramInfo) => + paramInfo.source === ParameterSource.KeywordOnly && + paramInfo.param.category === ParameterCategory.Simple + ); - baseKwOnlyParams.forEach((paramInfo) => { - const overrideParamInfo = overrideWkOnlyParams.find((pi) => paramInfo.param.name === pi.param.name); + baseKwOnlyParams.forEach((paramInfo) => { + const overrideParamInfo = overrideWkOnlyParams.find((pi) => paramInfo.param.name === pi.param.name); - if (!overrideParamInfo && overrideParamDetails.kwargsIndex === undefined) { - diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamNameMissing().format({ - name: paramInfo.param.name ?? '?', - }) - ); - canOverride = false; - } else { - let targetParamType = overrideParamInfo?.type; - if (!targetParamType) { - targetParamType = overrideParamDetails.params[overrideParamDetails.kwargsIndex!].type; - } - - if ( - !assignType( - targetParamType, - paramInfo.type, - diag?.createAddendum(), - new TypeVarContext(getTypeVarScopeId(overrideMethod)), - /* srcTypeVarContext */ undefined, - AssignTypeFlags.SkipSolveTypeVars - ) - ) { + if (!overrideParamInfo && overrideParamDetails.kwargsIndex === undefined) { diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamKeywordType().format({ + Localizer.DiagnosticAddendum.overrideParamNameMissing().format({ name: paramInfo.param.name ?? '?', - baseType: printType(paramInfo.type), - overrideType: printType(targetParamType), }) ); canOverride = false; - } + } else { + let targetParamType = overrideParamInfo?.type; + if (!targetParamType) { + targetParamType = overrideParamDetails.params[overrideParamDetails.kwargsIndex!].type; + } - if (overrideParamInfo) { - if (paramInfo.param.hasDefault && !overrideParamInfo.param.hasDefault) { + if ( + !assignType( + targetParamType, + paramInfo.type, + diag?.createAddendum(), + new TypeVarContext(getTypeVarScopeId(overrideMethod)), + /* srcTypeVarContext */ undefined, + AssignTypeFlags.SkipSolveTypeVars + ) + ) { diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamKeywordNoDefault().format({ - name: overrideParamInfo.param.name ?? '?', + Localizer.DiagnosticAddendum.overrideParamKeywordType().format({ + name: paramInfo.param.name ?? '?', + baseType: printType(paramInfo.type), + overrideType: printType(targetParamType), }) ); canOverride = false; } + + if (overrideParamInfo) { + if (paramInfo.param.hasDefault && !overrideParamInfo.param.hasDefault) { + diag?.addMessage( + Localizer.DiagnosticAddendum.overrideParamKeywordNoDefault().format({ + name: overrideParamInfo.param.name ?? '?', + }) + ); + canOverride = false; + } + } } - } - }); + }); - // Verify that any keyword-only parameters added by the overload are compatible - // with the **kwargs in the base. - overrideWkOnlyParams.forEach((paramInfo) => { - const baseParamInfo = baseKwOnlyParams.find((pi) => paramInfo.param.name === pi.param.name); + // Verify that any keyword-only parameters added by the overload are compatible + // with the **kwargs in the base. + overrideWkOnlyParams.forEach((paramInfo) => { + const baseParamInfo = baseKwOnlyParams.find((pi) => paramInfo.param.name === pi.param.name); - if (!baseParamInfo) { - if (baseParamDetails.kwargsIndex === undefined) { - if (!paramInfo.param.hasDefault) { - diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamNameExtra().format({ - name: paramInfo.param.name ?? '?', - }) - ); - canOverride = false; + if (!baseParamInfo) { + if (baseParamDetails.kwargsIndex === undefined) { + if (!paramInfo.param.hasDefault) { + diag?.addMessage( + Localizer.DiagnosticAddendum.overrideParamNameExtra().format({ + name: paramInfo.param.name ?? '?', + }) + ); + canOverride = false; + } } } + }); + + // Verify that if the base method has a **kwargs parameter, the override does too. + if (baseParamDetails.kwargsIndex !== undefined && overrideParamDetails.kwargsIndex === undefined) { + diag?.addMessage( + Localizer.DiagnosticAddendum.kwargsParamMissing().format({ + paramName: baseParamDetails.params[baseParamDetails.kwargsIndex].param.name!, + }) + ); + canOverride = false; } - }); + } // Now check the return type. const baseReturnType = getFunctionEffectiveReturnType(baseMethod); diff --git a/packages/pyright-internal/src/tests/samples/methodOverride1.py b/packages/pyright-internal/src/tests/samples/methodOverride1.py index 481fca19e..d648c467c 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride1.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride1.py @@ -165,6 +165,11 @@ def my_method41(self, a: int, b: str, c: str) -> None: def my_method42(self, a: int, b: int, c: str) -> None: ... + my_method43: Callable[..., None] + + def my_method44(self, *args: Any, **kwargs: Any) -> None: + ... + T_ChildClass = TypeVar("T_ChildClass", bound="ChildClass") @@ -342,6 +347,14 @@ def my_method41(self, a: int, *args: str) -> None: def my_method42(self, a: int, *args: int) -> None: ... + def my_method43(self, a: int, b: str, c: str) -> None: + ... + + # This should generate an error because kwargs is missing. + def my_method44(self, *args) -> None: + ... + + class A: def test(self, t: Sequence[int]) -> Sequence[str]: ... diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 898e386c7..ce5cad300 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -779,7 +779,7 @@ test('MethodOverride1', () => { // Turn on errors. configOptions.diagnosticRuleSet.reportIncompatibleMethodOverride = 'error'; analysisResults = TestUtils.typeAnalyzeSampleFiles(['methodOverride1.py'], configOptions); - TestUtils.validateResults(analysisResults, 35); + TestUtils.validateResults(analysisResults, 36); }); test('MethodOverride2', () => { From 332bfa8323ed573631bd2813b72443567b38d1d5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 27 Apr 2023 20:24:17 -0700 Subject: [PATCH 099/525] Fixed typo in comment. No functional change. --- packages/pyright-internal/src/analyzer/declarationUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/declarationUtils.ts b/packages/pyright-internal/src/analyzer/declarationUtils.ts index b8f9308b6..b695f42e3 100644 --- a/packages/pyright-internal/src/analyzer/declarationUtils.ts +++ b/packages/pyright-internal/src/analyzer/declarationUtils.ts @@ -10,7 +10,7 @@ import { getEmptyRange } from '../common/textRange'; import { NameNode, ParseNodeType } from '../parser/parseNodes'; import { ImportLookup, ImportLookupResult } from './analyzerFileInfo'; -import { AliasDeclaration, Declaration, DeclarationType, isAliasDeclaration, ModuleLoaderActions } from './declaration'; +import { AliasDeclaration, Declaration, DeclarationType, ModuleLoaderActions, isAliasDeclaration } from './declaration'; import { getFileInfoFromNode } from './parseTreeUtils'; import { Symbol } from './symbol'; @@ -211,7 +211,7 @@ export function createSynthesizedAliasDeclaration(path: string): AliasDeclaratio } // If the specified declaration is an alias declaration that points to a symbol, -// it resolves the alias and looks up the symbol, then returns the a declaration +// it resolves the alias and looks up the symbol, then returns a declaration // (typically the last) associated with that symbol. It does this recursively if // necessary. If a symbol lookup fails, undefined is returned. If resolveLocalNames // is true, the method resolves aliases through local renames ("as" clauses found From 88d0ed1170648cf529c33977cb6c8835be726f9f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 27 Apr 2023 22:15:46 -0700 Subject: [PATCH 100/525] Fixed bug that caused `useLibraryCodeForTypes` to default to false in the CLI if it was not overridden in the config file. Version 1.1.305 was intended to change the default to true, but it didn't. This addresses https://github.com/microsoft/pyright/issues/5029. --- packages/pyright-internal/src/analyzer/service.ts | 10 +--------- .../pyright-internal/src/common/commandLineOptions.ts | 4 ---- .../src/languageService/analyzerServiceExecutor.ts | 3 +-- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index c5a590358..00e790e1f 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -817,15 +817,7 @@ export class AnalyzerService { configOptions.logTypeEvaluationTime = !!commandLineOptions.logTypeEvaluationTime; configOptions.typeEvaluationTimeThreshold = commandLineOptions.typeEvaluationTimeThreshold; - // If useLibraryCodeForTypes was not specified in the config, allow the settings - // or command line to override it. - if (configOptions.useLibraryCodeForTypes === undefined) { - configOptions.useLibraryCodeForTypes = !!commandLineOptions.useLibraryCodeForTypes; - } else if (commandLineOptions.useLibraryCodeForTypes !== undefined) { - reportDuplicateSetting('useLibraryCodeForTypes', configOptions.useLibraryCodeForTypes); - } - - // If useLibraryCodeForTypes is still unspecified, default it to true. + // If useLibraryCodeForTypes is unspecified, default it to true. if (configOptions.useLibraryCodeForTypes === undefined) { configOptions.useLibraryCodeForTypes = true; } diff --git a/packages/pyright-internal/src/common/commandLineOptions.ts b/packages/pyright-internal/src/common/commandLineOptions.ts index 1904312d6..f67614438 100644 --- a/packages/pyright-internal/src/common/commandLineOptions.ts +++ b/packages/pyright-internal/src/common/commandLineOptions.ts @@ -92,10 +92,6 @@ export class CommandLineOptions { // Indicates that only open files should be checked. checkOnlyOpenFiles?: boolean | undefined; - // In the absence of type stubs, use library implementations - // to extract type information? - useLibraryCodeForTypes?: boolean | undefined; - // Look for a common root folders such as 'src' and automatically // add them as extra paths if the user has not explicitly defined // execution environments. diff --git a/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts b/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts index 50fdf4376..9dfdd823c 100644 --- a/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts +++ b/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts @@ -15,7 +15,7 @@ import { LogLevel } from '../common/console'; import { FileSystem } from '../common/fileSystem'; import { combinePaths } from '../common/pathUtils'; import { LanguageServerInterface, ServerSettings } from '../languageServerBase'; -import { createInitStatus, WellKnownWorkspaceKinds, Workspace } from '../workspaceFactory'; +import { WellKnownWorkspaceKinds, Workspace, createInitStatus } from '../workspaceFactory'; export interface CloneOptions { useBackgroundAnalysis?: boolean; @@ -97,7 +97,6 @@ function getEffectiveCommandLineOptions( ) { const commandLineOptions = new CommandLineOptions(workspaceRootPath, true); commandLineOptions.checkOnlyOpenFiles = serverSettings.openFilesOnly; - commandLineOptions.useLibraryCodeForTypes = serverSettings.useLibraryCodeForTypes; commandLineOptions.typeCheckingMode = serverSettings.typeCheckingMode; commandLineOptions.autoImportCompletions = serverSettings.autoImportCompletions; commandLineOptions.indexing = serverSettings.indexing; From 3be44c3242aac5644931c243c5f7a0dc4cbe55cf Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Fri, 28 Apr 2023 00:21:18 -0700 Subject: [PATCH 101/525] Added a flag in resolve alias declaration so that we can skip early bail out (perf optimization) when needed. (#5028) --- .../src/analyzer/analyzerFileInfo.ts | 10 ++++- .../src/analyzer/declarationUtils.ts | 35 +++++++-------- .../pyright-internal/src/analyzer/program.ts | 29 +++++++------ .../src/analyzer/typeEvaluator.ts | 42 +++++++++--------- .../src/analyzer/typeEvaluatorTypes.ts | 9 +++- .../src/languageService/definitionProvider.ts | 8 ++-- .../languageService/documentSymbolProvider.ts | 11 +++-- .../languageService/insertionPointUtils.ts | 8 ++-- .../src/tests/importStatementUtils.test.ts | 43 +++++++++++++++++++ 9 files changed, 124 insertions(+), 71 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts b/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts index 9b80fca82..cd646a5f5 100644 --- a/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts +++ b/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts @@ -22,7 +22,15 @@ export interface AbsoluteModuleDescriptor { importingFilePath: string; nameParts: string[]; } -export type ImportLookup = (filePathOrModule: string | AbsoluteModuleDescriptor) => ImportLookupResult | undefined; + +export interface LookupImportOptions { + skipFileNeededCheck: boolean; +} + +export type ImportLookup = ( + filePathOrModule: string | AbsoluteModuleDescriptor, + options?: LookupImportOptions +) => ImportLookupResult | undefined; export interface ImportLookupResult { symbolTable: SymbolTable; diff --git a/packages/pyright-internal/src/analyzer/declarationUtils.ts b/packages/pyright-internal/src/analyzer/declarationUtils.ts index b695f42e3..3b5232f0e 100644 --- a/packages/pyright-internal/src/analyzer/declarationUtils.ts +++ b/packages/pyright-internal/src/analyzer/declarationUtils.ts @@ -210,6 +210,12 @@ export function createSynthesizedAliasDeclaration(path: string): AliasDeclaratio }; } +export interface ResolveAliasOptions { + resolveLocalNames: boolean; + allowExternallyHiddenAccess: boolean; + skipFileNeededCheck: boolean; +} + // If the specified declaration is an alias declaration that points to a symbol, // it resolves the alias and looks up the symbol, then returns a declaration // (typically the last) associated with that symbol. It does this recursively if @@ -219,8 +225,7 @@ export function createSynthesizedAliasDeclaration(path: string): AliasDeclaratio export function resolveAliasDeclaration( importLookup: ImportLookup, declaration: Declaration, - resolveLocalNames: boolean, - allowExternallyHiddenAccess: boolean + options: ResolveAliasOptions ): ResolvedAliasInfo | undefined { let curDeclaration: Declaration | undefined = declaration; const alreadyVisited: Declaration[] = []; @@ -247,7 +252,7 @@ export function resolveAliasDeclaration( // If we are not supposed to follow local alias names and this // is a local name, don't continue to follow the alias. - if (!resolveLocalNames && curDeclaration.usesLocalName) { + if (!options.resolveLocalNames && curDeclaration.usesLocalName) { return { declaration: curDeclaration, isPrivate, @@ -258,7 +263,7 @@ export function resolveAliasDeclaration( let lookupResult: ImportLookupResult | undefined; if (curDeclaration.path && curDeclaration.loadSymbolsFromPath) { - lookupResult = importLookup(curDeclaration.path); + lookupResult = importLookup(curDeclaration.path, { skipFileNeededCheck: options.skipFileNeededCheck }); } const symbol: Symbol | undefined = lookupResult @@ -278,19 +283,16 @@ export function resolveAliasDeclaration( curDeclaration.submoduleFallback.type === DeclarationType.Alias && curDeclaration.submoduleFallback.path ) { - const lookupResult = importLookup(curDeclaration.submoduleFallback.path); + const lookupResult = importLookup(curDeclaration.submoduleFallback.path, { + skipFileNeededCheck: options.skipFileNeededCheck, + }); if (!lookupResult) { return undefined; } } } - return resolveAliasDeclaration( - importLookup, - curDeclaration.submoduleFallback, - resolveLocalNames, - allowExternallyHiddenAccess - ); + return resolveAliasDeclaration(importLookup, curDeclaration.submoduleFallback, options); } // If the symbol comes from a native library, we won't @@ -309,13 +311,13 @@ export function resolveAliasDeclaration( isPrivate = true; } - if (symbol.isExternallyHidden() && !allowExternallyHiddenAccess) { + if (symbol.isExternallyHidden() && !options.allowExternallyHiddenAccess) { return undefined; } // Prefer declarations with specified types. If we don't have any of those, // fall back on declarations with inferred types. - let declarations = symbol.getTypedDeclarations(); + let declarations: Declaration[] = symbol.getTypedDeclarations(); // Try not to use declarations within an except suite even if it's a typed // declaration. These are typically used for fallback exception handling. @@ -375,12 +377,7 @@ export function resolveAliasDeclaration( curDeclaration.type === DeclarationType.Alias && curDeclaration.submoduleFallback ) { - return resolveAliasDeclaration( - importLookup, - curDeclaration.submoduleFallback, - resolveLocalNames, - allowExternallyHiddenAccess - ); + return resolveAliasDeclaration(importLookup, curDeclaration.submoduleFallback, options); } return { declaration, diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 5d66d627b..bd41d094b 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -65,7 +65,7 @@ import { ReferenceCallback, ReferencesProvider, ReferencesResult } from '../lang import { RenameModuleProvider } from '../languageService/renameModuleProvider'; import { ParseNodeType, StatementNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; -import { AbsoluteModuleDescriptor, ImportLookupResult } from './analyzerFileInfo'; +import { AbsoluteModuleDescriptor, ImportLookupResult, LookupImportOptions } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { CacheManager } from './cacheManager'; import { CircularDependency } from './circularDependency'; @@ -2194,12 +2194,12 @@ export class Program { return fileDiagnostics; } - private _isFileNeeded(fileInfo: SourceFileInfo) { + private _isFileNeeded(fileInfo: SourceFileInfo, skipFileNeededCheck?: boolean) { if (fileInfo.sourceFile.isFileDeleted()) { return false; } - if (fileInfo.isTracked || fileInfo.isOpenByClient) { + if (!!skipFileNeededCheck || fileInfo.isTracked || fileInfo.isOpenByClient) { return true; } @@ -2694,8 +2694,8 @@ export class Program { return this._evaluator; } - private _parseFile(fileToParse: SourceFileInfo, content?: string, force?: boolean) { - if (!force && (!this._isFileNeeded(fileToParse) || !fileToParse.sourceFile.isParseRequired())) { + private _parseFile(fileToParse: SourceFileInfo, content?: string, skipFileNeededCheck?: boolean) { + if (!this._isFileNeeded(fileToParse, skipFileNeededCheck) || !fileToParse.sourceFile.isParseRequired()) { return; } @@ -2740,7 +2740,7 @@ export class Program { return tryReturn(file.chainedSourceFile) ?? tryReturn(file.ipythonDisplayImport) ?? file.builtinsImport; } - private _bindImplicitImports(fileToAnalyze: SourceFileInfo) { + private _bindImplicitImports(fileToAnalyze: SourceFileInfo, skipFileNeededCheck?: boolean) { // Get all of the potential imports for this file. const implicitImports: SourceFileInfo[] = []; const implicitSet = new Set(); @@ -2756,7 +2756,7 @@ export class Program { implicitSet.add(implicitPath); implicitImports.push(nextImplicitImport); - this._parseFile(nextImplicitImport); + this._parseFile(nextImplicitImport, /* content */ undefined, skipFileNeededCheck); nextImplicitImport = this._getImplicitImports(nextImplicitImport); } @@ -2768,7 +2768,7 @@ export class Program { let implicitImport = implicitImports.pop(); while (implicitImport) { // Bind this file, but don't recurse into its imports. - this._bindFile(implicitImport, undefined, undefined, /* isImplicitImport */ true); + this._bindFile(implicitImport, undefined, skipFileNeededCheck, /* isImplicitImport */ true); implicitImport = implicitImports.pop(); } } @@ -2778,14 +2778,14 @@ export class Program { private _bindFile( fileToAnalyze: SourceFileInfo, content?: string, - force?: boolean, + skipFileNeededCheck?: boolean, isImplicitImport?: boolean ): void { - if (!force && (!this._isFileNeeded(fileToAnalyze) || !fileToAnalyze.sourceFile.isBindingRequired())) { + if (!this._isFileNeeded(fileToAnalyze, skipFileNeededCheck) || !fileToAnalyze.sourceFile.isBindingRequired()) { return; } - this._parseFile(fileToAnalyze, content, force); + this._parseFile(fileToAnalyze, content, skipFileNeededCheck); // Create a function to get the scope info. const getScopeIfAvailable = (fileInfo: SourceFileInfo | undefined) => { @@ -2842,7 +2842,10 @@ export class Program { return effectiveFutureImports; } - private _lookUpImport = (filePathOrModule: string | AbsoluteModuleDescriptor): ImportLookupResult | undefined => { + private _lookUpImport = ( + filePathOrModule: string | AbsoluteModuleDescriptor, + options?: LookupImportOptions + ): ImportLookupResult | undefined => { let sourceFileInfo: SourceFileInfo | undefined; if (typeof filePathOrModule === 'string') { @@ -2884,7 +2887,7 @@ export class Program { // Bind the file if it's not already bound. Don't count this time // against the type checker. timingStats.typeCheckerTime.subtractFromTime(() => { - this._bindFile(sourceFileInfo!); + this._bindFile(sourceFileInfo!, /* content */ undefined, options?.skipFileNeededCheck); }); } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 6563b077b..d37e16422 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -176,6 +176,7 @@ import { FunctionTypeResult, maxSubtypesForInferredType, PrintTypeOptions, + ResolveAliasOptions, TypeEvaluator, TypeResult, TypeResultWithNode, @@ -19201,11 +19202,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const fileInfo = AnalyzerNodeInfo.getFileInfo(node); // Try to resolve the alias while honoring external visibility. - const resolvedAliasInfo = resolveAliasDeclarationWithInfo( - aliasDecl, - /* resolveLocalNames */ true, - /* allowExternallyHiddenAccess */ fileInfo.isStubFile - ); + const resolvedAliasInfo = resolveAliasDeclarationWithInfo(aliasDecl, /* resolveLocalNames */ true, { + allowExternallyHiddenAccess: fileInfo.isStubFile, + }); if (!resolvedAliasInfo) { return undefined; @@ -21080,11 +21079,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } function getInferredTypeOfDeclaration(symbol: Symbol, decl: Declaration): Type | undefined { - const resolvedDecl = resolveAliasDeclaration( - decl, - /* resolveLocalNames */ true, - /* allowExternallyHiddenAccess */ AnalyzerNodeInfo.getFileInfo(decl.node).isStubFile - ); + const resolvedDecl = resolveAliasDeclaration(decl, /* resolveLocalNames */ true, { + allowExternallyHiddenAccess: AnalyzerNodeInfo.getFileInfo(decl.node).isStubFile, + }); // We couldn't resolve the alias. Substitute an unknown // type in this case. @@ -21373,18 +21370,25 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function resolveAliasDeclaration( declaration: Declaration, resolveLocalNames: boolean, - allowExternallyHiddenAccess = false + options?: ResolveAliasOptions ): Declaration | undefined { - return resolveAliasDeclarationUtil(importLookup, declaration, resolveLocalNames, allowExternallyHiddenAccess) - ?.declaration; + return resolveAliasDeclarationUtil(importLookup, declaration, { + resolveLocalNames, + allowExternallyHiddenAccess: options?.allowExternallyHiddenAccess ?? false, + skipFileNeededCheck: options?.skipFileNeededCheck ?? false, + })?.declaration; } function resolveAliasDeclarationWithInfo( declaration: Declaration, resolveLocalNames: boolean, - allowExternallyHiddenAccess = false + options?: ResolveAliasOptions ): ResolvedAliasInfo | undefined { - return resolveAliasDeclarationUtil(importLookup, declaration, resolveLocalNames, allowExternallyHiddenAccess); + return resolveAliasDeclarationUtil(importLookup, declaration, { + resolveLocalNames, + allowExternallyHiddenAccess: options?.allowExternallyHiddenAccess ?? false, + skipFileNeededCheck: options?.skipFileNeededCheck ?? false, + }); } // Returns the type of the symbol. If the type is explicitly declared, that type @@ -21532,11 +21536,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (considerDecl) { const resolvedDecl = - resolveAliasDeclaration( - decl, - /* resolveLocalNames */ true, - /* allowExternallyHiddenAccess */ AnalyzerNodeInfo.getFileInfo(decl.node).isStubFile - ) ?? decl; + resolveAliasDeclaration(decl, /* resolveLocalNames */ true, { + allowExternallyHiddenAccess: AnalyzerNodeInfo.getFileInfo(decl.node).isStubFile, + }) ?? decl; const isExplicitTypeAlias = isExplicitTypeAliasDeclaration(resolvedDecl); const isTypeAlias = isExplicitTypeAlias || isPossibleTypeAliasOrTypedDict(resolvedDecl); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 95c48cb07..b1fd7e985 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -350,6 +350,11 @@ export interface DeclaredSymbolTypeInfo { isTypeAlias?: boolean; } +export interface ResolveAliasOptions { + allowExternallyHiddenAccess?: boolean; + skipFileNeededCheck?: boolean; +} + export interface TypeEvaluator { runWithCancellationToken(token: CancellationToken, callback: () => T): T; @@ -396,12 +401,12 @@ export interface TypeEvaluator { resolveAliasDeclaration: ( declaration: Declaration, resolveLocalNames: boolean, - allowExternallyHiddenAccess?: boolean + options?: ResolveAliasOptions ) => Declaration | undefined; resolveAliasDeclarationWithInfo: ( declaration: Declaration, resolveLocalNames: boolean, - allowExternallyHiddenAccess?: boolean + options?: ResolveAliasOptions ) => DeclarationUtils.ResolvedAliasInfo | undefined; getTypeOfIterable: ( typeResult: TypeResult, diff --git a/packages/pyright-internal/src/languageService/definitionProvider.ts b/packages/pyright-internal/src/languageService/definitionProvider.ts index 1ca8adafe..2540bd33e 100644 --- a/packages/pyright-internal/src/languageService/definitionProvider.ts +++ b/packages/pyright-internal/src/languageService/definitionProvider.ts @@ -96,11 +96,9 @@ class DefinitionProviderBase { protected resolveDeclarations(declarations: Declaration[] | undefined, definitions: DocumentRange[]) { if (declarations) { declarations.forEach((decl) => { - let resolvedDecl = this.evaluator.resolveAliasDeclaration( - decl, - /* resolveLocalNames */ true, - /* allowExternallyHiddenAccess */ true - ); + let resolvedDecl = this.evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true, { + allowExternallyHiddenAccess: true, + }); if (resolvedDecl && resolvedDecl.path) { // If the decl is an unresolved import, skip it. if (resolvedDecl.type === DeclarationType.Alias && resolvedDecl.isUnresolved) { diff --git a/packages/pyright-internal/src/languageService/documentSymbolProvider.ts b/packages/pyright-internal/src/languageService/documentSymbolProvider.ts index 85e445ef4..dc99fb27d 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolProvider.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolProvider.ts @@ -70,12 +70,11 @@ export function getIndexAliasData( return undefined; } - const resolvedInfo = resolveAliasDeclaration( - importLookup, - declaration, - /* resolveLocalNames */ true, - /* allowExternallyHiddenAccess */ false - ); + const resolvedInfo = resolveAliasDeclaration(importLookup, declaration, { + resolveLocalNames: true, + allowExternallyHiddenAccess: false, + skipFileNeededCheck: false, + }); if (!resolvedInfo || !resolvedInfo.declaration) { return undefined; } diff --git a/packages/pyright-internal/src/languageService/insertionPointUtils.ts b/packages/pyright-internal/src/languageService/insertionPointUtils.ts index b90e520c8..2de75ae3b 100644 --- a/packages/pyright-internal/src/languageService/insertionPointUtils.ts +++ b/packages/pyright-internal/src/languageService/insertionPointUtils.ts @@ -108,11 +108,9 @@ function _getDeclarationsDefinedInCurrentModule( options?: InsertionOptions ) { return declarations.filter((d) => { - const resolved = evaluator.resolveAliasDeclaration( - d, - /* resolveLocalNames */ true, - /* allowExternallyHiddenAccess */ true - ); + const resolved = evaluator.resolveAliasDeclaration(d, /* resolveLocalNames */ true, { + allowExternallyHiddenAccess: true, + }); if (!resolved) { return false; diff --git a/packages/pyright-internal/src/tests/importStatementUtils.test.ts b/packages/pyright-internal/src/tests/importStatementUtils.test.ts index c4f077979..5e2369724 100644 --- a/packages/pyright-internal/src/tests/importStatementUtils.test.ts +++ b/packages/pyright-internal/src/tests/importStatementUtils.test.ts @@ -8,6 +8,7 @@ import assert from 'assert'; +import { isFunctionDeclaration } from '../analyzer/declaration'; import { ImportType } from '../analyzer/importResult'; import { getRelativeModuleName, @@ -17,11 +18,13 @@ import { ImportNameInfo, ImportNameWithModuleInfo, } from '../analyzer/importStatementUtils'; +import { findNodeByOffset } from '../analyzer/parseTreeUtils'; import { isArray } from '../common/core'; import { TextEditAction } from '../common/editAction'; import { combinePaths, getDirectoryPath } from '../common/pathUtils'; import { convertOffsetToPosition } from '../common/positionUtils'; import { rangesAreEqual } from '../common/textRange'; +import { NameNode } from '../parser/parseNodes'; import { Range } from './harness/fourslash/fourSlashTypes'; import { parseAndGetTestState, TestState } from './harness/fourslash/testState'; @@ -428,6 +431,46 @@ test('getRelativeModuleName over fake file', () => { ); }); +test('resolve alias of not needed file', () => { + const code = ` +// @filename: pyrightconfig.json +//// { +//// "useLibraryCodeForTypes": true +//// } + +// @filename: myLib/__init__.py +// @library: true +//// from myLib.foo import [|/*marker*/foo|] + +// @filename: myLib/foo.py +// @library: true +//// def foo(): pass + `; + + const state = parseAndGetTestState(code).state; + const marker = state.getMarkerByName('marker')!; + + const evaluator = state.workspace.service.getEvaluator()!; + state.openFile(marker.fileName); + + const parseResults = state.workspace.service.getParseResult(marker.fileName)!; + const nameNode = findNodeByOffset(parseResults.parseTree, marker.position) as NameNode; + const aliasDecls = evaluator.getDeclarationsForNameNode(nameNode)!; + + // Unroot the file. we can't explicitly close the file since it will unload the file from test program. + state.workspace.service.test_program.getSourceFileInfo(marker.fileName)!.isOpenByClient = false; + + const unresolved = evaluator.resolveAliasDeclaration(aliasDecls[0], /*resolveLocalNames*/ false); + assert(!unresolved); + + const resolved = evaluator.resolveAliasDeclaration(aliasDecls[0], /*resolveLocalNames*/ false, { + skipFileNeededCheck: true, + }); + + assert(resolved); + assert(isFunctionDeclaration(resolved)); +}); + function testRelativeModuleName(code: string, expected: string, ignoreFolderStructure = false) { const state = parseAndGetTestState(code).state; const src = state.getMarkerByName('src')!.fileName; From 38e155fe8b0a2051ecc5c0cda8f9049105e869db Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 28 Apr 2023 13:54:28 -0700 Subject: [PATCH 102/525] Fixed a confusing and inappropriate diagnostic addendum when a function with positional-only parameters is assigned to another function with positional-only parameters but has a parameter count mismatch. The old logic output an inappropriate message about a keyword-only parameter. This addresses https://github.com/microsoft/pyright/issues/5032. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d37e16422..a574e9763 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24987,7 +24987,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (!destParamInfo) { if (destParamDetails.kwargsIndex === undefined && !srcParamInfo.param.hasDefault) { - if (paramDiag) { + if (paramDiag && srcParamDetails.firstKeywordOnlyIndex !== undefined) { paramDiag.addMessage( Localizer.DiagnosticAddendum.namedParamMissingInDest().format({ name: srcParamInfo.param.name, From 8cbefe628b7b21e8052fbd95911e1ca09538f7ad Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 28 Apr 2023 14:38:29 -0700 Subject: [PATCH 103/525] Fixed a bug in the `--verifytypes` command-line tool that affected the case where a submodule was specified (e.g. `--verifytypes a.b.c`) and the final nested module was a single file (e.g. `c.py`) rather than an `__init__.py` within a folder. This addresses https://github.com/microsoft/pyright/issues/4999. --- .../src/analyzer/packageTypeReport.ts | 3 + .../src/analyzer/packageTypeVerifier.ts | 64 +++++++++++++++---- 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/packageTypeReport.ts b/packages/pyright-internal/src/analyzer/packageTypeReport.ts index 134bb0196..0f08ae003 100644 --- a/packages/pyright-internal/src/analyzer/packageTypeReport.ts +++ b/packages/pyright-internal/src/analyzer/packageTypeReport.ts @@ -59,6 +59,7 @@ export interface PackageTypeReport { ignoreExternal: boolean; packageRootDirectory: string | undefined; moduleRootDirectory: string | undefined; + isModuleSingleFile: boolean; pyTypedPath: string | undefined; missingFunctionDocStringCount: number; missingClassDocStringCount: number; @@ -87,6 +88,7 @@ export function getEmptyReport( packageRootDirectory: string, moduleName: string, moduleRootDirectory: string, + isModuleSingleFile: boolean, ignoreExternal: boolean ) { const report: PackageTypeReport = { @@ -95,6 +97,7 @@ export function getEmptyReport( packageRootDirectory, moduleName, moduleRootDirectory, + isModuleSingleFile, pyTypedPath: undefined, missingFunctionDocStringCount: 0, missingClassDocStringCount: 0, diff --git a/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts b/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts index fa647fbd8..f1c650792 100644 --- a/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts +++ b/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts @@ -15,7 +15,14 @@ import { assert } from '../common/debug'; import { Diagnostic, DiagnosticAddendum, DiagnosticCategory } from '../common/diagnostic'; import { FileSystem } from '../common/fileSystem'; import { FullAccessHost } from '../common/fullAccessHost'; -import { combinePaths, getDirectoryPath, getFileExtension, stripFileExtension, tryStat } from '../common/pathUtils'; +import { + combinePaths, + getDirectoryPath, + getFileExtension, + getFileName, + stripFileExtension, + tryStat, +} from '../common/pathUtils'; import { getEmptyRange, Range } from '../common/textRange'; import { DeclarationType, FunctionDeclaration, VariableDeclaration } from './declaration'; import { createImportedModuleDescriptor, ImportResolver } from './importResolver'; @@ -59,6 +66,11 @@ import { type PublicSymbolSet = Set; +interface ModuleDirectoryInfo { + moduleDirectory: string; + isModuleSingleFile: boolean; +} + export class PackageTypeVerifier { private _configOptions: ConfigOptions; private _execEnv: ExecutionEnvironment; @@ -100,11 +112,15 @@ export class PackageTypeVerifier { const trimmedModuleName = this._packageName.trim(); const moduleNameParts = trimmedModuleName.split('.'); + const packageDirectoryInfo = this._getDirectoryInfoForModule(moduleNameParts[0]); + const moduleDirectoryInfo = this._getDirectoryInfoForModule(trimmedModuleName); + const report = getEmptyReport( moduleNameParts[0], - this._getDirectoryForModule(moduleNameParts[0]) ?? '', + packageDirectoryInfo?.moduleDirectory ?? '', trimmedModuleName, - this._getDirectoryForModule(trimmedModuleName) ?? '', + moduleDirectoryInfo?.moduleDirectory ?? '', + moduleDirectoryInfo?.isModuleSingleFile ?? false, this._ignoreExternal ); const commonDiagnostics = report.generalDiagnostics; @@ -145,7 +161,11 @@ export class PackageTypeVerifier { } else { report.pyTypedPath = pyTypedInfo.pyTypedPath; - const publicModules = this._getListOfPublicModules(report.moduleRootDirectory, trimmedModuleName); + const publicModules = this._getListOfPublicModules( + report.moduleRootDirectory, + report.isModuleSingleFile, + trimmedModuleName + ); // If the filter eliminated all modules, report an error. if (publicModules.length === 0) { @@ -393,9 +413,9 @@ export class PackageTypeVerifier { // Scans the directory structure for a list of public modules // within the package. - private _getListOfPublicModules(moduleRootPath: string, moduleName: string): string[] { + private _getListOfPublicModules(moduleRootPath: string, isModuleSingleFile: boolean, moduleName: string): string[] { const publicModules: string[] = []; - this._addPublicModulesRecursive(moduleRootPath, moduleName, publicModules); + this._addPublicModulesRecursive(moduleRootPath, isModuleSingleFile, moduleName, publicModules); // Make sure modules are unique. There may be duplicates if a ".py" and ".pyi" // exist for some modules. @@ -412,7 +432,12 @@ export class PackageTypeVerifier { return uniqueModules; } - private _addPublicModulesRecursive(dirPath: string, modulePath: string, publicModules: string[]) { + private _addPublicModulesRecursive( + dirPath: string, + isModuleSingleFile: boolean, + modulePath: string, + publicModules: string[] + ) { const dirEntries = this._fileSystem.readdirEntriesSync(dirPath); dirEntries.forEach((entry) => { @@ -439,7 +464,13 @@ export class PackageTypeVerifier { !isPrivateOrProtectedName(nameWithoutExtension) && this._isLegalModulePartName(nameWithoutExtension) ) { - publicModules.push(`${modulePath}.${nameWithoutExtension}`); + if (isModuleSingleFile) { + if (modulePath.endsWith(`.${nameWithoutExtension}`)) { + publicModules.push(modulePath); + } + } else { + publicModules.push(`${modulePath}.${nameWithoutExtension}`); + } } } } @@ -447,6 +478,7 @@ export class PackageTypeVerifier { if (!isPrivateOrProtectedName(entry.name) && this._isLegalModulePartName(entry.name)) { this._addPublicModulesRecursive( combinePaths(dirPath, entry.name), + isModuleSingleFile, `${modulePath}.${entry.name}`, publicModules ); @@ -1411,7 +1443,7 @@ export class PackageTypeVerifier { } } - private _getDirectoryForModule(moduleName: string): string | undefined { + private _getDirectoryInfoForModule(moduleName: string): ModuleDirectoryInfo | undefined { const importResult = this._importResolver.resolveImport( '', this._execEnv, @@ -1420,13 +1452,19 @@ export class PackageTypeVerifier { if (importResult.isImportFound) { const resolvedPath = importResult.resolvedPaths[importResult.resolvedPaths.length - 1]; - if (resolvedPath) { - return getDirectoryPath(resolvedPath); - } // If it's a namespace package with no __init__.py(i), use the package // directory instead. - return importResult.packageDirectory ?? ''; + const moduleDirectory = resolvedPath ? getDirectoryPath(resolvedPath) : importResult.packageDirectory ?? ''; + let isModuleSingleFile = false; + if (resolvedPath && stripFileExtension(getFileName(resolvedPath)) !== '__init__') { + isModuleSingleFile = true; + } + + return { + moduleDirectory, + isModuleSingleFile, + }; } return undefined; From 704bd7022ed5fd340730010ed9ea5823f4c86af1 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 29 Apr 2023 11:07:18 -0700 Subject: [PATCH 104/525] =?UTF-8?q?Added=20support=20for=20a=20generic=20`?= =?UTF-8?q?NamedTuple`=20class=20=E2=80=94=20i.e.=20a=20class=20that=20use?= =?UTF-8?q?s=20`NamedTuple`=20as=20a=20base=20class=20along=20with=20type?= =?UTF-8?q?=20parameters=20defined=20in=20a=20`Generic[...]`=20base=20clas?= =?UTF-8?q?s=20and=20then=20uses=20these=20type=20parameters=20in=20type?= =?UTF-8?q?=20definitions=20for=20the=20`NamedTuple`=20entries.=20This=20a?= =?UTF-8?q?ddresses=20https://github.com/microsoft/pyright/issues/5036.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/analyzer/dataClasses.ts | 16 ++-- .../src/analyzer/namedTuples.ts | 86 +++++++++---------- .../src/analyzer/typeEvaluator.ts | 16 +++- .../src/tests/samples/namedTuples8.py | 17 ++++ .../src/tests/typeEvaluator1.test.ts | 6 ++ 5 files changed, 88 insertions(+), 53 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/namedTuples8.py diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index d43460cdd..f00c90513 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -52,6 +52,7 @@ import { import { applySolvedTypeVars, buildTypeVarContextFromSpecializedClass, + computeMroLinearization, convertToInstance, getTypeVarScopeId, isLiteralType, @@ -647,11 +648,16 @@ export function synthesizeDataClassMethods( // If this dataclass derived from a NamedTuple, update the NamedTuple with // the specialized entry types. - updateNamedTupleBaseClass( - classType, - fullDataClassEntries.map((entry) => entry.type), - /* isTypeArgumentExplicit */ true - ); + if ( + updateNamedTupleBaseClass( + classType, + fullDataClassEntries.map((entry) => entry.type), + /* isTypeArgumentExplicit */ true + ) + ) { + // Recompute the MRO based on the updated NamedTuple base class. + computeMroLinearization(classType); + } } // If the specified type is a descriptor — in particular, if it implements a diff --git a/packages/pyright-internal/src/analyzer/namedTuples.ts b/packages/pyright-internal/src/analyzer/namedTuples.ts index d930b8fbe..972428351 100644 --- a/packages/pyright-internal/src/analyzer/namedTuples.ts +++ b/packages/pyright-internal/src/analyzer/namedTuples.ts @@ -361,65 +361,57 @@ export function createNamedTupleType( classFields.set('__match_args__', Symbol.createWithType(SymbolFlags.ClassMember, matchArgsType)); } - computeMroLinearization(classType); - updateNamedTupleBaseClass(classType, entryTypes, !addGenericGetAttribute); + computeMroLinearization(classType); + return classType; } -export function updateNamedTupleBaseClass(classType: ClassType, typeArgs: Type[], isTypeArgumentExplicit: boolean) { - // Search for the NamedTuple base class. - const namedTupleIndex = classType.details.mro.findIndex( - (c) => isInstantiableClass(c) && ClassType.isBuiltIn(c, 'NamedTuple') - ); - if (namedTupleIndex < 0 || classType.details.mro.length < namedTupleIndex + 2) { - return; - } +export function updateNamedTupleBaseClass( + classType: ClassType, + typeArgs: Type[], + isTypeArgumentExplicit: boolean +): boolean { + let isUpdateNeeded = false; - const namedTupleClass = classType.details.mro[namedTupleIndex] as ClassType; - const typedTupleClass = classType.details.mro[namedTupleIndex + 1]; - - if (!isInstantiableClass(typedTupleClass) || !isTupleClass(typedTupleClass)) { - return; - } + classType.details.baseClasses = classType.details.baseClasses.map((baseClass) => { + if (!isInstantiableClass(baseClass) || !ClassType.isBuiltIn(baseClass, 'NamedTuple')) { + return baseClass; + } - const tupleTypeArgs: TupleTypeArgument[] = []; + const tupleTypeArgs: TupleTypeArgument[] = []; - if (!isTypeArgumentExplicit) { - tupleTypeArgs.push({ - type: typeArgs.length > 0 ? combineTypes(typeArgs) : UnknownType.create(), - isUnbounded: true, - }); - } else { - typeArgs.forEach((t) => { - tupleTypeArgs.push({ type: t, isUnbounded: false }); - }); - } + if (!isTypeArgumentExplicit) { + tupleTypeArgs.push({ + type: typeArgs.length > 0 ? combineTypes(typeArgs) : UnknownType.create(), + isUnbounded: true, + }); + } else { + typeArgs.forEach((t) => { + tupleTypeArgs.push({ type: t, isUnbounded: false }); + }); + } - const updatedTupleClass = specializeTupleClass(typedTupleClass, tupleTypeArgs, isTypeArgumentExplicit); + // Create a copy of the NamedTuple class that replaces the tuple base class. + const clonedNamedTupleClass = ClassType.cloneForSpecialization(baseClass, [], isTypeArgumentExplicit); + clonedNamedTupleClass.details = { ...clonedNamedTupleClass.details }; - // Create a copy of the NamedTuple class that overrides the normal MRO - // entries with a version of Tuple that is specialized appropriately. - const clonedNamedTupleClass = ClassType.cloneForSpecialization(namedTupleClass, [], isTypeArgumentExplicit); - clonedNamedTupleClass.details = { ...clonedNamedTupleClass.details }; - clonedNamedTupleClass.details.mro = [...clonedNamedTupleClass.details.mro]; - clonedNamedTupleClass.details.mro[1] = updatedTupleClass.details.mro[0]; + clonedNamedTupleClass.details.baseClasses = clonedNamedTupleClass.details.baseClasses.map( + (namedTupleBaseClass) => { + if (!isInstantiableClass(namedTupleBaseClass) || !ClassType.isBuiltIn(namedTupleBaseClass, 'tuple')) { + return namedTupleBaseClass; + } - clonedNamedTupleClass.details.baseClasses = clonedNamedTupleClass.details.baseClasses.map((baseClass) => { - if (isInstantiableClass(baseClass) && isTupleClass(baseClass)) { - return updatedTupleClass; - } - return baseClass; - }); + return specializeTupleClass(namedTupleBaseClass, tupleTypeArgs, isTypeArgumentExplicit); + } + ); - classType.details.mro[namedTupleIndex] = clonedNamedTupleClass; - classType.details.mro[namedTupleIndex + 1] = updatedTupleClass; + computeMroLinearization(clonedNamedTupleClass); - classType.details.baseClasses = classType.details.baseClasses.map((baseClass) => { - if (isInstantiableClass(baseClass) && ClassType.isBuiltIn(baseClass, 'NamedTuple')) { - return clonedNamedTupleClass; - } - return baseClass; + isUpdateNeeded = true; + return clonedNamedTupleClass; }); + + return isUpdateNeeded; } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index a574e9763..83daab850 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -22519,6 +22519,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions recursionCount: number ): boolean { let curSrcType = srcType; + let prevSrcType: ClassType | undefined; let curDestTypeVarContext = destTypeVarContext; let effectiveFlags = flags; @@ -22555,7 +22556,19 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If this isn't the first time through the loop, specialize // for the next ancestor in the chain. if (ancestorIndex < inheritanceChain.length - 1) { - curSrcType = specializeForBaseClass(curSrcType, ancestorType); + // If the curSrcType is a NamedTuple and the ancestorType is a tuple, + // we need to handle this as a special case because the NamedTuple may + // include typeParams from its parent class. + let effectiveCurSrcType = curSrcType; + if ( + ClassType.isBuiltIn(curSrcType, 'NamedTuple') && + ClassType.isBuiltIn(ancestorType, 'tuple') && + prevSrcType + ) { + effectiveCurSrcType = prevSrcType; + } + + curSrcType = specializeForBaseClass(effectiveCurSrcType, ancestorType); } // Handle built-in types that support arbitrary numbers @@ -22601,6 +22614,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Allocate a new type var map for the next time through the loop. curDestTypeVarContext = new TypeVarContext(getTypeVarScopeId(ancestorType)); effectiveFlags &= ~AssignTypeFlags.SkipSolveTypeVars; + prevSrcType = curSrcType; } if (destType.typeArguments) { diff --git a/packages/pyright-internal/src/tests/samples/namedTuples8.py b/packages/pyright-internal/src/tests/samples/namedTuples8.py new file mode 100644 index 000000000..d5458f6bc --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/namedTuples8.py @@ -0,0 +1,17 @@ +# This sample tests the case where a NamedTuple class is generic. + +from typing import AnyStr, Generic, NamedTuple + + +class GenericNT(NamedTuple, Generic[AnyStr]): + scheme: AnyStr + + +class SpecializedNT(GenericNT[str]): + def geturl(self) -> str: + ... + + +def func(x: SpecializedNT): + reveal_type(x.__iter__, expected_text="() -> Iterator[str]") + reveal_type(list(x), expected_text="list[str]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index c148894ad..69f734645 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1308,6 +1308,12 @@ test('NamedTuples7', () => { TestUtils.validateResults(analysisResults, 1); }); +test('NamedTuples8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples8.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Slots1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['slots1.py']); From 294a97de4f54e5148f7e364e707f49f6d79f7ecc Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 30 Apr 2023 17:25:58 -0700 Subject: [PATCH 105/525] Implemented check for conditional statement operands. Such operands must support a `__bool__` method that returns a `bool` return type. Any other type is treated as an error by the runtime. This addresses https://github.com/microsoft/pyright/issues/5039. --- .../pyright-internal/src/analyzer/checker.ts | 79 ++++++++++++++++- .../src/localization/localize.ts | 6 ++ .../src/localization/package.nls.en-us.json | 2 + .../src/tests/samples/conditional1.py | 85 +++++++++++++++++++ .../src/tests/typeEvaluator5.test.ts | 5 ++ 5 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/conditional1.py diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index fe7c1693c..f7eb7d481 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -859,18 +859,19 @@ export class Checker extends ParseTreeWalker { } override visitListComprehensionIf(node: ListComprehensionIfNode): boolean { + this._validateConditionalIsBool(node.testExpression); this._reportUnnecessaryConditionExpression(node.testExpression); return true; } override visitIf(node: IfNode): boolean { - this._evaluator.getType(node.testExpression); + this._validateConditionalIsBool(node.testExpression); this._reportUnnecessaryConditionExpression(node.testExpression); return true; } override visitWhile(node: WhileNode): boolean { - this._evaluator.getType(node.testExpression); + this._validateConditionalIsBool(node.testExpression); this._reportUnnecessaryConditionExpression(node.testExpression); return true; } @@ -1124,6 +1125,8 @@ export class Checker extends ParseTreeWalker { this._evaluator.getType(node.exceptionExpression); } + this._validateConditionalIsBool(node.testExpression); + // Specifically look for a common programming error where the two arguments // to an assert are enclosed in parens and interpreted as a two-element tuple. // assert (x > 3, "bad value x") @@ -1249,6 +1252,11 @@ export class Checker extends ParseTreeWalker { } override visitBinaryOperation(node: BinaryOperationNode): boolean { + if (node.operator === OperatorType.And || node.operator === OperatorType.Or) { + this._validateConditionalIsBool(node.leftExpression); + this._validateConditionalIsBool(node.rightExpression); + } + if (node.operator === OperatorType.Equals || node.operator === OperatorType.NotEquals) { // Don't apply this rule if it's within an assert. if (!ParseTreeUtils.isWithinAssertExpression(node)) { @@ -1286,12 +1294,17 @@ export class Checker extends ParseTreeWalker { } override visitUnaryOperation(node: UnaryOperationNode): boolean { + if (node.operator === OperatorType.Not) { + this._validateConditionalIsBool(node.expression); + } + this._evaluator.getType(node); return true; } override visitTernary(node: TernaryNode): boolean { this._evaluator.getType(node); + this._validateConditionalIsBool(node.testExpression); this._reportUnnecessaryConditionExpression(node.testExpression); return true; } @@ -1547,7 +1560,7 @@ export class Checker extends ParseTreeWalker { override visitCase(node: CaseNode): boolean { if (node.guardExpression) { - this._evaluator.getType(node.guardExpression); + this._validateConditionalIsBool(node.guardExpression); } this._evaluator.evaluateTypesForStatement(node.pattern); @@ -1618,6 +1631,66 @@ export class Checker extends ParseTreeWalker { ); } + private _validateConditionalIsBool(node: ExpressionNode) { + const operandType = this._evaluator.getType(node); + if (!operandType) { + return; + } + + let isTypeBool = true; + const diag = new DiagnosticAddendum(); + this._evaluator.mapSubtypesExpandTypeVars(operandType, /* conditionFilter */ undefined, (expandedSubtype) => { + if (isAnyOrUnknown(expandedSubtype)) { + return undefined; + } + + // If it's a bool (the common case), we're good. + if (isClassInstance(expandedSubtype) && ClassType.isBuiltIn(expandedSubtype, 'bool')) { + return undefined; + } + + // Invoke the __bool__ method on the type. + const boolReturnType = this._evaluator.getTypeOfMagicMethodReturn( + expandedSubtype, + [], + '__bool__', + node, + /* inferenceContext */ undefined + ); + + if (!boolReturnType || isAnyOrUnknown(boolReturnType)) { + return undefined; + } + + if (isClassInstance(boolReturnType) && ClassType.isBuiltIn(boolReturnType, 'bool')) { + return undefined; + } + + // All other types are problematic. + isTypeBool = false; + + diag.addMessage( + Localizer.DiagnosticAddendum.conditionalRequiresBool().format({ + operandType: this._evaluator.printType(expandedSubtype), + boolReturnType: this._evaluator.printType(boolReturnType), + }) + ); + + return undefined; + }); + + if (!isTypeBool) { + this._evaluator.addDiagnostic( + this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.conditionalOperandInvalid().format({ + type: this._evaluator.printType(operandType), + }) + diag.getString(), + node + ); + } + } + private _reportUnnecessaryConditionExpression(expression: ExpressionNode) { if (expression.nodeType === ParseNodeType.BinaryOperation) { if (expression.operator === OperatorType.And || expression.operator === OperatorType.Or) { diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index d68a41868..1cef07abe 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -287,6 +287,8 @@ export namespace Localizer { export const comprehensionInSet = () => getRawString('Diagnostic.comprehensionInSet'); export const concatenateParamSpecMissing = () => getRawString('Diagnostic.concatenateParamSpecMissing'); export const concatenateTypeArgsMissing = () => getRawString('Diagnostic.concatenateTypeArgsMissing'); + export const conditionalOperandInvalid = () => + new ParameterizedString<{ type: string }>(getRawString('Diagnostic.conditionalOperandInvalid')); export const constantRedefinition = () => new ParameterizedString<{ name: string }>(getRawString('Diagnostic.constantRedefinition')); export const constructorNoArgs = () => @@ -1072,6 +1074,10 @@ export namespace Localizer { new ParameterizedString<{ baseClass: string; type: string }>( getRawString('DiagnosticAddendum.baseClassOverridesType') ); + export const conditionalRequiresBool = () => + new ParameterizedString<{ operandType: string; boolReturnType: string }>( + getRawString('DiagnosticAddendum.conditionalRequiresBool') + ); export const dataClassFrozen = () => new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.dataClassFrozen')); export const dataClassFieldLocation = () => getRawString('DiagnosticAddendum.dataClassFieldLocation'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 358b22426..2979c3b2e 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -68,6 +68,7 @@ "comprehensionInSet": "Comprehension cannot be used with other set entries", "concatenateParamSpecMissing": "Last type argument for \"Concatenate\" must be a ParamSpec", "concatenateTypeArgsMissing": "\"Concatenate\" requires at least two type arguments", + "conditionalOperandInvalid": "Invalid conditional operand of type \"{type}\"", "constantRedefinition": "\"{name}\" is constant (because it is uppercase) and cannot be redefined", "constructorParametersMismatch": "Mismatch between signature of __new__ and __init__ in class \"{classType}\"", "containmentAlwaysFalse": "Expression will always evaluate to False since the types \"{leftType}\" and \"{rightType}\" have no overlap", @@ -561,6 +562,7 @@ "asyncHelp": "Did you mean \"async with\"?", "baseClassOverriddenType": "Base class \"{baseClass}\" provides type \"{type}\", which is overridden", "baseClassOverridesType": "Base class \"{baseClass}\" overrides with type \"{type}\"", + "conditionalRequiresBool": "Method __bool__ for type \"{operandType}\" returns type \"{boolReturnType}\" rather than \"bool\"", "dataClassFieldLocation": "Field declaration", "dataClassFrozen": "\"{name}\" is frozen", "finalMethod": "Final method", diff --git a/packages/pyright-internal/src/tests/samples/conditional1.py b/packages/pyright-internal/src/tests/samples/conditional1.py new file mode 100644 index 000000000..a02393ac2 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/conditional1.py @@ -0,0 +1,85 @@ +# This sample tests that the check that validates the operand type for +# a conditional statement. The operand must be of type bool or a type +# that has a __bool__ method that returns a bool. + +from typing import NoReturn, TypeVar + + +class ReturnsBool: + def __bool__(self) -> bool: + return True + + +class ReturnsNonBool: + def __bool__(self) -> NoReturn: + raise TypeError("Not a bool") + + +def func1(val: ReturnsNonBool): + # This should generate an error. + if val: + pass + + # This should generate an error. + a = not val + + # This should generate an error. + b = val or 1 + + # This should generate an error. + c = 1 and val + + # This should generate an error. + y = 1 if val else 2 + + # This should generate an error. + while val: + break + + # This should generate an error. + z = [1 for i in range(10) if val] + + +TVal = TypeVar("TVal", bound=ReturnsNonBool) + + +def func2(val: TVal | ReturnsBool) -> TVal | ReturnsBool: + # This should generate an error. + if val: + pass + + # This should generate an error. + a = not val + + # This should generate an error. + b = val or 1 + + # This should generate an error. + c = 1 and val + + # This should generate an error. + y = 1 if val else 2 + + # This should generate an error. + while val: + break + + # This should generate an error. + z = [1 for i in range(10) if val] + + return val + + +class Meta(type): + def __bool__(self) -> int: + return 1 + + +class MetaDerived(metaclass=Meta): + pass + + +def func3(val: type[MetaDerived]): + # This should generate an error. + if val: + pass diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 78d2e67b7..d303be0d1 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -266,3 +266,8 @@ test('FutureImport3', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['futureImport3.py']); TestUtils.validateResults(analysisResults, 1); }); + +test('Conditional1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['conditional1.py']); + TestUtils.validateResults(analysisResults, 15); +}); From b80f2b8f02428476e9dc35b936fd6ce354524b3d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 30 Apr 2023 17:27:08 -0700 Subject: [PATCH 106/525] Improved type names in typeVarContext. No functional change. --- packages/pyright-internal/src/analyzer/typeVarContext.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeVarContext.ts b/packages/pyright-internal/src/analyzer/typeVarContext.ts index a9c6bddf9..2e8d97d6c 100644 --- a/packages/pyright-internal/src/analyzer/typeVarContext.ts +++ b/packages/pyright-internal/src/analyzer/typeVarContext.ts @@ -193,7 +193,7 @@ export class TypeVarSignatureContext { return undefined; } - addSourceTypeVarScopeId(scopeId: string) { + addSourceTypeVarScopeId(scopeId: TypeVarScopeId) { if (!this._sourceTypeVarScopeId) { this._sourceTypeVarScopeId = new Set(); } @@ -201,7 +201,7 @@ export class TypeVarSignatureContext { this._sourceTypeVarScopeId.add(scopeId); } - hasSourceTypeVarScopeId(scopeId: string) { + hasSourceTypeVarScopeId(scopeId: TypeVarScopeId) { if (!this._sourceTypeVarScopeId) { return false; } @@ -319,7 +319,7 @@ export class TypeVarContext { return newTypeVarMap; } - cloneWithSignatureSource(typeVarScopeId: string): TypeVarContext { + cloneWithSignatureSource(typeVarScopeId: TypeVarScopeId): TypeVarContext { const clonedContext = this.clone(); if (typeVarScopeId) { From f198a120d70b5b8e6d20f07049ac5bd2877f86a9 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 30 Apr 2023 18:38:57 -0700 Subject: [PATCH 107/525] Added special-case handling for methods within generic classes parameterized by a ParamSpec when those methods use `*args: P.args, **kwargs: P.kwargs` in their signature and the callable signature captured by the `ParamSpec` is from a generic function. In this case, the TypeVar scope of the captured function is retained so its type variables can be solved when the method is solved. This is useful for generic callback protocol classes that implement a `__call__` method. This addresses https://github.com/microsoft/pyright/issues/5033. --- .../src/analyzer/typeEvaluator.ts | 13 ++--- .../src/analyzer/typeUtils.ts | 25 ++++++++- .../src/analyzer/typeVarContext.ts | 13 ++++- .../pyright-internal/src/analyzer/types.ts | 18 ++++++- .../src/tests/samples/paramSpec42.py | 54 +++++++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 5 ++ 6 files changed, 115 insertions(+), 13 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/paramSpec42.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 83daab850..4b2694b01 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -270,6 +270,7 @@ import { getTypeCondition, getTypeVarArgumentsRecursive, getTypeVarScopeId, + getTypeVarScopeIds, getUnionSubtypeCount, InferenceContext, isCallableType, @@ -8213,10 +8214,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions : typeVarContext; const effectiveTypeVarContext = typeVarContextToClone?.clone() ?? new TypeVarContext(getTypeVarScopeId(overload)); - effectiveTypeVarContext.addSolveForScope(getTypeVarScopeId(overload)); - if (overload.details.constructorTypeVarScopeId) { - effectiveTypeVarContext.addSolveForScope(overload.details.constructorTypeVarScopeId); - } + effectiveTypeVarContext.addSolveForScope(getTypeVarScopeIds(overload)); effectiveTypeVarContext.unlock(); // Use speculative mode so we don't output any diagnostics or @@ -8519,10 +8517,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); const effectiveTypeVarContext = typeVarContext ?? new TypeVarContext(); - effectiveTypeVarContext.addSolveForScope(getTypeVarScopeId(lastMatch.overload)); - if (lastMatch.overload.details.constructorTypeVarScopeId) { - effectiveTypeVarContext.addSolveForScope(lastMatch.overload.details.constructorTypeVarScopeId); - } + effectiveTypeVarContext.addSolveForScope(getTypeVarScopeIds(lastMatch.overload)); effectiveTypeVarContext.unlock(); return validateFunctionArgumentTypesWithContext( @@ -9269,7 +9264,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let effectiveTypeVarContext = typeVarContext; if (!effectiveTypeVarContext) { // If a typeVarContext wasn't provided by the caller, allocate one here. - effectiveTypeVarContext = new TypeVarContext(getTypeVarScopeId(expandedSubtype)); + effectiveTypeVarContext = new TypeVarContext(getTypeVarScopeIds(expandedSubtype)); // There are certain cases, such as with super().__new__(cls) calls where // the call is a constructor but the proper TypeVar scope has been lost. diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 52d0f2261..b16a27bb8 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -731,6 +731,28 @@ export function getTypeVarScopeId(type: Type): TypeVarScopeId | undefined { return undefined; } +// This is similar to getTypeVarScopeId except that it includes +// the secondary scope IDs for functions. +export function getTypeVarScopeIds(type: Type): TypeVarScopeId[] | TypeVarScopeId | undefined { + const scopeId = getTypeVarScopeId(type); + + if (scopeId && isFunction(type)) { + const scopeIds: TypeVarScopeId[] = [scopeId]; + + if (type.details.constructorTypeVarScopeId) { + scopeIds.push(type.details.constructorTypeVarScopeId); + } + + if (type.details.paramSpecTypeVarScopeId) { + scopeIds.push(type.details.paramSpecTypeVarScopeId); + } + + return scopeIds; + } + + return scopeId; +} + // Determines whether the type derives from tuple. If so, it returns // the specialized tuple type. export function getSpecializedTupleType(type: Type): ClassType | undefined { @@ -2754,7 +2776,7 @@ export function convertTypeToParamSpecValue(type: Type): FunctionType { type: FunctionType.getEffectiveParameterType(type, index), }); }); - newFunction.details.typeVarScopeId = getTypeVarScopeId(type); + newFunction.details.typeVarScopeId = type.details.paramSpecTypeVarScopeId; newFunction.details.paramSpec = type.details.paramSpec; return newFunction; } @@ -2789,6 +2811,7 @@ export function convertParamSpecValueToType(paramSpecValue: FunctionType, omitPa '', FunctionTypeFlags.ParamSpecValue | paramSpecValue.details.flags ); + functionType.details.paramSpecTypeVarScopeId = paramSpecValue.details.typeVarScopeId; paramSpecValue.details.parameters.forEach((entry) => { FunctionType.addParameter(functionType, { diff --git a/packages/pyright-internal/src/analyzer/typeVarContext.ts b/packages/pyright-internal/src/analyzer/typeVarContext.ts index 2e8d97d6c..f3693b9e5 100644 --- a/packages/pyright-internal/src/analyzer/typeVarContext.ts +++ b/packages/pyright-internal/src/analyzer/typeVarContext.ts @@ -357,7 +357,11 @@ export class TypeVarContext { return this._solveForScopes; } - hasSolveForScope(scopeId: TypeVarScopeId | undefined) { + hasSolveForScope(scopeId: TypeVarScopeId | TypeVarScopeId[] | undefined): boolean { + if (Array.isArray(scopeId)) { + return scopeId.some((s) => this.hasSolveForScope(s)); + } + return ( scopeId !== undefined && this._solveForScopes !== undefined && @@ -369,7 +373,12 @@ export class TypeVarContext { this._solveForScopes = scopeIds; } - addSolveForScope(scopeId?: TypeVarScopeId) { + addSolveForScope(scopeId?: TypeVarScopeId | TypeVarScopeId[]) { + if (Array.isArray(scopeId)) { + scopeId.forEach((s) => this.addSolveForScope(s)); + return; + } + if (scopeId !== undefined && !this.hasSolveForScope(scopeId)) { if (!this._solveForScopes) { this._solveForScopes = []; diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 1fa1232ba..32d08911e 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1241,7 +1241,6 @@ interface FunctionDetails { declaredReturnType?: Type | undefined; declaration?: FunctionDeclaration | undefined; typeVarScopeId?: TypeVarScopeId | undefined; - constructorTypeVarScopeId?: TypeVarScopeId | undefined; builtInName?: string | undefined; docString?: string | undefined; deprecatedMessage?: string | undefined; @@ -1258,6 +1257,15 @@ interface FunctionDetails { // one or more of these appear only within the return type and within // a callable, they are rescoped to that callable. rescopedTypeParameters?: TypeVarType[]; + + // For __new__ and __init__ methods, the TypeVar scope ID of the + // associated class. + constructorTypeVarScopeId?: TypeVarScopeId | undefined; + + // For functions whose parameter lists derive from a solved + // ParamSpec, this is the TypeVar scope ID of the signature + // captured by that ParamSpec. + paramSpecTypeVarScopeId?: TypeVarScopeId | undefined; } export interface SpecializedFunctionTypes { @@ -1568,6 +1576,9 @@ export namespace FunctionType { return newFunction; } + // Creates a new function based on a solved ParamSpec. The input type is assumed to + // have a signature that ends in "*args: P.args, **kwargs: P.kwargs". These will be + // replaced by the parameters in the ParamSpec. export function cloneForParamSpecApplication(type: FunctionType, paramSpecValue: FunctionType): FunctionType { const newFunction = TypeBase.cloneType(type); @@ -1626,6 +1637,11 @@ export namespace FunctionType { newFunction.details.docString = paramSpecValue.details.docString; } + // Note the TypeVar scope ID of the original captured function. This + // allows any unsolved TypeVars within that scope to be solved when the + // resulting function is called. + newFunction.details.paramSpecTypeVarScopeId = paramSpecValue.details.typeVarScopeId; + return newFunction; } diff --git a/packages/pyright-internal/src/tests/samples/paramSpec42.py b/packages/pyright-internal/src/tests/samples/paramSpec42.py new file mode 100644 index 000000000..d17aa0fcc --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/paramSpec42.py @@ -0,0 +1,54 @@ +# This sample tests the case where a generic class is parameterized +# by a ParamSpec, and this ParamSpec is used in a method with +# *args and **kwargs parameters. In cases where the ParamSpec captures +# a generic function, the TypeVars for this generic function should +# still be solvable. + +from typing import Callable, Generic, ParamSpec, TypeVar + + +S = TypeVar("S") +T = TypeVar("T") + +P = ParamSpec("P") +R = TypeVar("R") + + +def func1(a: S, b: T) -> dict[S, T]: + ... + + +class DecoratorClass1(Generic[P, R]): + def __init__(self, func: Callable[P, R]): + self._func = func + + def __call__(self, *args: P.args, **kwargs: P.kwargs) -> R: + return self._func(*args, **kwargs) + + def other(self, val: int, *args: P.args, **kwargs: P.kwargs) -> R: + ... + + +decorated_func1 = DecoratorClass1(func1) + +reveal_type( + decorated_func1, + expected_text="DecoratorClass1[(a: S@func1, b: T@func1), dict[S@func1, T@func1]]", +) + +func1_ret = decorated_func1(1, "") +reveal_type(func1_ret, expected_text="dict[int, str]") + + +func1_other_ret = decorated_func1.other(0, 1, "") +reveal_type(func1_other_ret, expected_text="dict[int, str]") + + +def func2(func: Callable[P, R]) -> Callable[P, R]: + ... + + +d1 = func2(func1) +d2 = func2(d1) +d3 = d2(1, "") +reveal_type(d3, expected_text="dict[int, str]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index b55745001..8b129094d 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -993,6 +993,11 @@ test('ParamSpec41', () => { TestUtils.validateResults(results, 0); }); +test('ParamSpec42', () => { + const results = TestUtils.typeAnalyzeSampleFiles(['paramSpec42.py']); + TestUtils.validateResults(results, 0); +}); + test('ClassVar1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['classVar1.py']); From f460787a087d450303f57b8003e428300ffec1c0 Mon Sep 17 00:00:00 2001 From: Rich Chiodo Date: Mon, 1 May 2023 11:20:21 -0700 Subject: [PATCH 108/525] Idea for copy on write (#5031) * Idea for copy on write * Fix tests and hygiene * Add a test for edit mode * Handle opening of a new file in edit mode * Refactor to use SourceFiles to track data instead. * Use full edits instead * Review feedback eliminate unused file too * Move edits up one level --- .../src/analyzer/backgroundAnalysisProgram.ts | 16 + .../pyright-internal/src/analyzer/program.ts | 64 ++- .../pyright-internal/src/analyzer/service.ts | 18 +- .../src/analyzer/sourceFile.ts | 514 ++++++++++-------- .../src/backgroundAnalysisBase.ts | 10 +- .../src/tests/sourceFile.test.ts | 2 +- .../src/tests/workspaceEditUtils.test.ts | 124 ++++- 7 files changed, 507 insertions(+), 241 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts index fc8f804cd..e39bc1a95 100644 --- a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts +++ b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts @@ -24,6 +24,7 @@ export class BackgroundAnalysisProgram { private _program: Program; private _disposed = false; private _onAnalysisCompletion: AnalysisCompleteCallback | undefined; + private _preEditAnalysis: BackgroundAnalysisBase | undefined; constructor( private _console: ConsoleInterface, @@ -242,6 +243,21 @@ export class BackgroundAnalysisProgram { this._backgroundAnalysis?.shutdown(); } + enterEditMode() { + // Turn off analysis while in edit mode. + this._preEditAnalysis = this._backgroundAnalysis; + this._backgroundAnalysis = undefined; + + // Forward this request to the program. + this._program.enterEditMode(); + } + + exitEditMode() { + this._backgroundAnalysis = this._preEditAnalysis; + this._preEditAnalysis = undefined; + return this._program.exitEditMode(); + } + protected getIndices(): Indices | undefined { return undefined; } diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index bd41d094b..caf452c7b 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -11,6 +11,7 @@ import { CancellationToken, CompletionItem, DocumentSymbol } from 'vscode-languageserver'; import { CompletionList } from 'vscode-languageserver-types'; +import { TextDocument } from 'vscode-languageserver-textdocument'; import { Commands } from '../commands/commands'; import { OperationCanceledException, throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray, arrayEquals } from '../common/collectionUtils'; @@ -38,17 +39,17 @@ import { import { convertPositionToOffset, convertRangeToTextRange, convertTextRangeToRange } from '../common/positionUtils'; import { computeCompletionSimilarity } from '../common/stringUtils'; import { TextEditTracker } from '../common/textEditTracker'; -import { doRangesIntersect, getEmptyRange, Position, Range, TextRange } from '../common/textRange'; +import { Position, Range, TextRange, doRangesIntersect, getEmptyRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; import { applyTextEditsToString } from '../common/workspaceEditUtils'; import { - AutoImporter, AutoImportOptions, AutoImportResult, - buildModuleSymbolsMap, + AutoImporter, ImportFormat, ModuleSymbolMap, + buildModuleSymbolsMap, } from '../languageService/autoImporter'; import { AbbreviationMap, @@ -84,15 +85,15 @@ import { Scope } from './scope'; import { getScopeForNode } from './scopeUtils'; import { IPythonMode, SourceFile } from './sourceFile'; import { collectImportedByFiles, isUserCode } from './sourceFileInfoUtils'; -import { isStubFile, SourceMapper } from './sourceMapper'; +import { SourceMapper, isStubFile } from './sourceMapper'; import { Symbol } from './symbol'; import { isPrivateOrProtectedName } from './symbolNameUtils'; import { createTracePrinter } from './tracePrinter'; import { PrintTypeOptions, TypeEvaluator } from './typeEvaluatorTypes'; import { createTypeEvaluatorWithTracker } from './typeEvaluatorWithTracker'; import { PrintTypeFlags } from './typePrinter'; -import { Type } from './types'; import { TypeStubWriter } from './typeStubWriter'; +import { Type } from './types'; const _maxImportDepth = 256; @@ -187,6 +188,7 @@ export class Program { private _cacheManager: CacheManager; private _id: number; private static _nextId = 0; + private _isEditMode = false; constructor( initialImportResolver: ImportResolver, @@ -240,6 +242,53 @@ export class Program { this._cacheManager.unregisterCacheOwner(this); } + enterEditMode() { + // Keep track of edit mode so we can apply it to new source files. + this._isEditMode = true; + + // Tell all source files we're in edit mode. + this._sourceFileList.forEach((sourceFile) => { + sourceFile.sourceFile.enterEditMode(); + }); + } + + exitEditMode() { + // Tell all source files we're no longer in edit mode. Gather + // up all of their edits. + const edits: FileEditAction[] = []; + this._sourceFileList.forEach((sourceFile) => { + const newContents = sourceFile.sourceFile.exitEditMode(); + if (newContents) { + // This means this source file was modified. We need to recompute its imports after + // we put it back to how it was. + this._updateSourceFileImports(sourceFile, this.configOptions); + + // Create a text document so we can compute the edits. + const textDocument = TextDocument.create( + sourceFile.sourceFile.getFilePath(), + 'python', + 1, + sourceFile.sourceFile.getFileContent() || '' + ); + + // Add an edit action to the list. + edits.push({ + filePath: sourceFile.sourceFile.getFilePath(), + range: { + start: { line: 0, character: 0 }, + end: { line: textDocument.lineCount, character: 0 }, + }, + replacementText: newContents, + }); + } + }); + + // Stop applying edit mode to new source files. + this._isEditMode = false; + + return edits; + } + setConfigOptions(configOptions: ConfigOptions) { this._configOptions = configOptions; this._importResolver.setConfigOptions(configOptions); @@ -331,6 +380,7 @@ export class Program { importName, isThirdPartyImport, isInPyTypedPackage, + this._isEditMode, this._console, this._logTracker ); @@ -361,12 +411,12 @@ export class Program { importName, /* isThirdPartyImport */ false, /* isInPyTypedPackage */ false, + this._isEditMode, this._console, this._logTracker, options?.realFilePath, options?.ipythonMode ?? IPythonMode.None ); - const chainedFilePath = options?.chainedFilePath; sourceFileInfo = { sourceFile, @@ -2501,6 +2551,7 @@ export class Program { importName, importInfo.isThirdPartyImport, importInfo.isPyTypedPresent, + this._isEditMode, this._console, this._logTracker ); @@ -2644,6 +2695,7 @@ export class Program { importName, /* isThirdPartyImport */ false, /* isInPyTypedPackage */ false, + this._isEditMode, this._console, this._logTracker ); diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 00e790e1f..01d930526 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -23,7 +23,7 @@ import { CommandLineOptions } from '../common/commandLineOptions'; import { ConfigOptions, matchFileSpecs } from '../common/configOptions'; import { ConsoleInterface, LogLevel, StandardConsole, log } from '../common/console'; import { Diagnostic } from '../common/diagnostic'; -import { FileEditActions } from '../common/editAction'; +import { FileEditAction, FileEditActions } from '../common/editAction'; import { Extensions, ProgramView } from '../common/extensibility'; import { FileSystem, FileWatcher, FileWatcherEventType, ignoredWatchEventFunction } from '../common/fileSystem'; import { Host, HostFactory, NoAccessHost } from '../common/host'; @@ -222,6 +222,22 @@ export class AnalyzerService { return service; } + useEditMode(callback: () => void, token: CancellationToken) { + let edits: FileEditAction[] = []; + const disposable = token.onCancellationRequested(() => { + edits = []; + this._backgroundAnalysisProgram.exitEditMode(); + }); + this._backgroundAnalysisProgram.enterEditMode(); + try { + callback(); + } finally { + disposable.dispose(); + edits = this._backgroundAnalysisProgram.exitEditMode(); + } + return edits; + } + dispose() { if (!this._disposed) { // Make sure we dispose program, otherwise, entire program diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 7936a844d..90a0c02f0 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -80,7 +80,78 @@ export enum IPythonMode { CellDocs, } +class WriteableData { + // Number that is incremented every time the diagnostics + // are updated. + diagnosticVersion = 0; + + // Generation count of the file contents. When the contents + // change, this is incremented. + fileContentsVersion = 0; + + // Length and hash of the file the last time it was read from disk. + lastFileContentLength: number | undefined = undefined; + lastFileContentHash: number | undefined = undefined; + + // Client's version of the file. Undefined implies that contents + // need to be read from disk. + clientDocumentContents: string | undefined; + clientDocumentVersion: number | undefined; + + // Version of file contents that have been analyzed. + analyzedFileContentsVersion = -1; + + // Do we need to walk the parse tree and clean + // the binder information hanging from it? + parseTreeNeedsCleaning = false; + + parseResults: ParseResults | undefined; + moduleSymbolTable: SymbolTable | undefined; + cachedIndexResults: IndexResults | undefined; + + // Reentrancy check for binding. + isBindingInProgress = false; + + // Diagnostics generated during different phases of analysis. + parseDiagnostics: Diagnostic[] = []; + commentDiagnostics: Diagnostic[] = []; + bindDiagnostics: Diagnostic[] = []; + checkerDiagnostics: Diagnostic[] = []; + typeIgnoreLines = new Map(); + typeIgnoreAll: IgnoreComment | undefined; + pyrightIgnoreLines = new Map(); + + // Circular dependencies that have been reported in this file. + circularDependencies: CircularDependency[] = []; + noCircularDependencyConfirmed = false; + + // Did we hit the maximum import depth? + hitMaxImportDepth: number | undefined; + + // Do we need to perform a binding step? + isBindingNeeded = true; + + // Do we have valid diagnostic results from a checking pass? + isCheckingNeeded = true; + + // Time (in ms) that the last check() call required for this file. + checkTime: number | undefined; + + // Do we need to perform an indexing step? + indexingNeeded = true; + // Information about implicit and explicit imports from this file. + imports: ImportResult[] | undefined; + builtinsImport: ImportResult | undefined; + ipythonDisplayImport: ImportResult | undefined; + + // True if the file appears to have been deleted. + isFileDeleted = false; +} + export class SourceFile { + // Data that changes when the source file changes. + private _writableData = new WriteableData(); + // Console interface to use for debugging. private _console: ConsoleInterface; @@ -118,82 +189,16 @@ export class SourceFile { // "py.typed" file. private readonly _isThirdPartyPyTypedPresent: boolean; - // True if the file appears to have been deleted. - private _isFileDeleted = false; - - // Number that is incremented every time the diagnostics - // are updated. - private _diagnosticVersion = 0; - - // Generation count of the file contents. When the contents - // change, this is incremented. - private _fileContentsVersion = 0; - - // Length and hash of the file the last time it was read from disk. - private _lastFileContentLength: number | undefined = undefined; - private _lastFileContentHash: number | undefined = undefined; - - // Client's version of the file. Undefined implies that contents - // need to be read from disk. - private _clientDocumentContents: string | undefined; - private _clientDocumentVersion: number | undefined; - - // Version of file contents that have been analyzed. - private _analyzedFileContentsVersion = -1; - - // Do we need to walk the parse tree and clean - // the binder information hanging from it? - private _parseTreeNeedsCleaning = false; - - private _parseResults: ParseResults | undefined; - private _moduleSymbolTable: SymbolTable | undefined; - private _cachedIndexResults: IndexResults | undefined; - - // Reentrancy check for binding. - private _isBindingInProgress = false; - - // Diagnostics generated during different phases of analysis. - private _parseDiagnostics: Diagnostic[] = []; - private _commentDiagnostics: Diagnostic[] = []; - private _bindDiagnostics: Diagnostic[] = []; - private _checkerDiagnostics: Diagnostic[] = []; - private _typeIgnoreLines = new Map(); - private _typeIgnoreAll: IgnoreComment | undefined; - private _pyrightIgnoreLines = new Map(); - // Settings that control which diagnostics should be output. The rules // are initialized to the basic set. They should be updated after the // the file is parsed. private _diagnosticRuleSet = getBasicDiagnosticRuleSet(); - // Circular dependencies that have been reported in this file. - private _circularDependencies: CircularDependency[] = []; - private _noCircularDependencyConfirmed = false; - - // Did we hit the maximum import depth? - private _hitMaxImportDepth: number | undefined; - - // Do we need to perform a binding step? - private _isBindingNeeded = true; - - // Do we have valid diagnostic results from a checking pass? - private _isCheckingNeeded = true; - - // Time (in ms) that the last check() call required for this file. - private _checkTime: number | undefined; - - // Do we need to perform an indexing step? - private _indexingNeeded = true; - // Indicate whether this file is for ipython or not. private _ipythonMode = IPythonMode.None; - - // Information about implicit and explicit imports from this file. - private _imports: ImportResult[] | undefined; - private _builtinsImport: ImportResult | undefined; - private _ipythonDisplayImport: ImportResult | undefined; - private _logTracker: LogTracker; + private _isEditMode = false; + private _preEditData: WriteableData | undefined; readonly fileSystem: FileSystem; constructor( @@ -202,6 +207,7 @@ export class SourceFile { moduleName: string, isThirdPartyImport: boolean, isThirdPartyPyTypedPresent: boolean, + editMode: boolean, console?: ConsoleInterface, logTracker?: LogTracker, realFilePath?: string, @@ -209,6 +215,7 @@ export class SourceFile { ) { this.fileSystem = fs; this._console = console || new StandardConsole(); + this._isEditMode = editMode; this._filePath = filePath; this._realFilePath = realFilePath ?? filePath; this._moduleName = moduleName; @@ -265,7 +272,7 @@ export class SourceFile { } getDiagnosticVersion(): number { - return this._diagnosticVersion; + return this._writableData.diagnosticVersion; } isStubFile() { @@ -280,7 +287,7 @@ export class SourceFile { // If the prevVersion is specified, the method returns undefined if // the diagnostics haven't changed. getDiagnostics(options: ConfigOptions, prevDiagnosticVersion?: number): Diagnostic[] | undefined { - if (this._diagnosticVersion === prevDiagnosticVersion) { + if (this._writableData.diagnosticVersion === prevDiagnosticVersion) { return undefined; } @@ -293,18 +300,18 @@ export class SourceFile { } let diagList = [ - ...this._parseDiagnostics, - ...this._commentDiagnostics, - ...this._bindDiagnostics, - ...this._checkerDiagnostics, + ...this._writableData.parseDiagnostics, + ...this._writableData.commentDiagnostics, + ...this._writableData.bindDiagnostics, + ...this._writableData.checkerDiagnostics, ]; const prefilteredDiagList = diagList; - const typeIgnoreLinesClone = new Map(this._typeIgnoreLines); - const pyrightIgnoreLinesClone = new Map(this._pyrightIgnoreLines); + const typeIgnoreLinesClone = new Map(this._writableData.typeIgnoreLines); + const pyrightIgnoreLinesClone = new Map(this._writableData.pyrightIgnoreLines); // Filter the diagnostics based on "type: ignore" lines. if (this._diagnosticRuleSet.enableTypeIgnoreComments) { - if (this._typeIgnoreLines.size > 0) { + if (this._writableData.typeIgnoreLines.size > 0) { diagList = diagList.filter((d) => { if ( d.category !== DiagnosticCategory.UnusedCode && @@ -312,7 +319,7 @@ export class SourceFile { d.category !== DiagnosticCategory.Deprecated ) { for (let line = d.range.start.line; line <= d.range.end.line; line++) { - if (this._typeIgnoreLines.has(line)) { + if (this._writableData.typeIgnoreLines.has(line)) { typeIgnoreLinesClone.delete(line); return false; } @@ -325,11 +332,11 @@ export class SourceFile { } // Filter the diagnostics based on "pyright: ignore" lines. - if (this._pyrightIgnoreLines.size > 0) { + if (this._writableData.pyrightIgnoreLines.size > 0) { diagList = diagList.filter((d) => { if (d.category !== DiagnosticCategory.UnreachableCode && d.category !== DiagnosticCategory.Deprecated) { for (let line = d.range.start.line; line <= d.range.end.line; line++) { - const pyrightIgnoreComment = this._pyrightIgnoreLines.get(line); + const pyrightIgnoreComment = this._writableData.pyrightIgnoreLines.get(line); if (pyrightIgnoreComment) { if (!pyrightIgnoreComment.rulesList) { pyrightIgnoreLinesClone.delete(line); @@ -394,10 +401,14 @@ export class SourceFile { ); }; - if (prefilteredErrorList.length === 0 && this._typeIgnoreAll !== undefined) { - const rangeStart = this._typeIgnoreAll.range.start; - const rangeEnd = rangeStart + this._typeIgnoreAll.range.length; - const range = convertOffsetsToRange(rangeStart, rangeEnd, this._parseResults!.tokenizerOutput.lines!); + if (prefilteredErrorList.length === 0 && this._writableData.typeIgnoreAll !== undefined) { + const rangeStart = this._writableData.typeIgnoreAll.range.start; + const rangeEnd = rangeStart + this._writableData.typeIgnoreAll.range.length; + const range = convertOffsetsToRange( + rangeStart, + rangeEnd, + this._writableData.parseResults!.tokenizerOutput.lines! + ); if (!isUnreachableCodeRange(range) && this._diagnosticRuleSet.enableTypeIgnoreComments) { unnecessaryTypeIgnoreDiags.push( @@ -407,13 +418,13 @@ export class SourceFile { } typeIgnoreLinesClone.forEach((ignoreComment) => { - if (this._parseResults?.tokenizerOutput.lines) { + if (this._writableData.parseResults?.tokenizerOutput.lines) { const rangeStart = ignoreComment.range.start; const rangeEnd = rangeStart + ignoreComment.range.length; const range = convertOffsetsToRange( rangeStart, rangeEnd, - this._parseResults!.tokenizerOutput.lines! + this._writableData.parseResults!.tokenizerOutput.lines! ); if (!isUnreachableCodeRange(range) && this._diagnosticRuleSet.enableTypeIgnoreComments) { @@ -425,14 +436,14 @@ export class SourceFile { }); pyrightIgnoreLinesClone.forEach((ignoreComment) => { - if (this._parseResults?.tokenizerOutput.lines) { + if (this._writableData.parseResults?.tokenizerOutput.lines) { if (!ignoreComment.rulesList) { const rangeStart = ignoreComment.range.start; const rangeEnd = rangeStart + ignoreComment.range.length; const range = convertOffsetsToRange( rangeStart, rangeEnd, - this._parseResults!.tokenizerOutput.lines! + this._writableData.parseResults!.tokenizerOutput.lines! ); if (!isUnreachableCodeRange(range)) { @@ -447,7 +458,7 @@ export class SourceFile { const range = convertOffsetsToRange( rangeStart, rangeEnd, - this._parseResults!.tokenizerOutput.lines! + this._writableData.parseResults!.tokenizerOutput.lines! ); if (!isUnreachableCodeRange(range)) { @@ -467,10 +478,13 @@ export class SourceFile { }); } - if (this._diagnosticRuleSet.reportImportCycles !== 'none' && this._circularDependencies.length > 0) { + if ( + this._diagnosticRuleSet.reportImportCycles !== 'none' && + this._writableData.circularDependencies.length > 0 + ) { const category = convertLevelToCategory(this._diagnosticRuleSet.reportImportCycles); - this._circularDependencies.forEach((cirDep) => { + this._writableData.circularDependencies.forEach((cirDep) => { const diag = new Diagnostic( category, Localizer.Diagnostic.importCycleDetected() + @@ -486,11 +500,11 @@ export class SourceFile { }); } - if (this._hitMaxImportDepth !== undefined) { + if (this._writableData.hitMaxImportDepth !== undefined) { diagList.push( new Diagnostic( DiagnosticCategory.Error, - Localizer.Diagnostic.importDepthExceeded().format({ depth: this._hitMaxImportDepth }), + Localizer.Diagnostic.importDepthExceeded().format({ depth: this._writableData.hitMaxImportDepth }), getEmptyRange() ) ); @@ -507,7 +521,7 @@ export class SourceFile { // If there is a "type: ignore" comment at the top of the file, clear // the diagnostic list of all error, warning, and information diagnostics. if (this._diagnosticRuleSet.enableTypeIgnoreComments) { - if (this._typeIgnoreAll !== undefined) { + if (this._writableData.typeIgnoreAll !== undefined) { diagList = diagList.filter( (diag) => diag.category !== DiagnosticCategory.Error && @@ -536,23 +550,40 @@ export class SourceFile { } getImports(): ImportResult[] { - return this._imports || []; + return this._writableData.imports || []; } getBuiltinsImport(): ImportResult | undefined { - return this._builtinsImport; + return this._writableData.builtinsImport; } getIPythonDisplayImport(): ImportResult | undefined { - return this._ipythonDisplayImport; + return this._writableData.ipythonDisplayImport; } getModuleSymbolTable(): SymbolTable | undefined { - return this._moduleSymbolTable; + return this._writableData.moduleSymbolTable; } getCheckTime() { - return this._checkTime; + return this._writableData.checkTime; + } + + enterEditMode() { + this._isEditMode = true; + } + + exitEditMode(): string | undefined { + this._isEditMode = false; + + // If we had an edit, return our text. + if (this._preEditData) { + const text = this._writableData.clientDocumentContents!; + this._writableData = this._preEditData; + this._preEditData = undefined; + return text; + } + return undefined; } // Indicates whether the contents of the file have changed since @@ -561,12 +592,12 @@ export class SourceFile { // If this is an open file any content changes will be // provided through the editor. We can assume contents // didn't change without us knowing about them. - if (this._clientDocumentContents) { + if (this._writableData.clientDocumentContents) { return false; } // If the file was never read previously, no need to check for a change. - if (this._lastFileContentLength === undefined) { + if (this._writableData.lastFileContentLength === undefined) { return false; } @@ -576,11 +607,11 @@ export class SourceFile { // Read the file's contents. const fileContents = this.fileSystem.readFileSync(this._filePath, 'utf8'); - if (fileContents.length !== this._lastFileContentLength) { + if (fileContents.length !== this._writableData.lastFileContentLength) { return true; } - if (StringUtils.hashString(fileContents) !== this._lastFileContentHash) { + if (StringUtils.hashString(fileContents) !== this._writableData.lastFileContentHash) { return true; } } catch (error) { @@ -594,52 +625,52 @@ export class SourceFile { // in cases where memory is low. When info is needed, the file // will be re-parsed and rebound. dropParseAndBindInfo(): void { - this._parseResults = undefined; - this._moduleSymbolTable = undefined; - this._isBindingNeeded = true; + this._writableData.parseResults = undefined; + this._writableData.moduleSymbolTable = undefined; + this._writableData.isBindingNeeded = true; } markDirty(indexingNeeded = true): void { - this._fileContentsVersion++; - this._noCircularDependencyConfirmed = false; - this._isCheckingNeeded = true; - this._isBindingNeeded = true; - this._indexingNeeded = indexingNeeded; - this._moduleSymbolTable = undefined; - this._cachedIndexResults = undefined; + this._writableData.fileContentsVersion++; + this._writableData.noCircularDependencyConfirmed = false; + this._writableData.isCheckingNeeded = true; + this._writableData.isBindingNeeded = true; + this._writableData.indexingNeeded = indexingNeeded; + this._writableData.moduleSymbolTable = undefined; + this._writableData.cachedIndexResults = undefined; const filePath = this.getFilePath(); Extensions.getProgramExtensions(filePath).forEach((e) => (e.fileDirty ? e.fileDirty(filePath) : null)); } markReanalysisRequired(forceRebinding: boolean): void { // Keep the parse info, but reset the analysis to the beginning. - this._isCheckingNeeded = true; - this._noCircularDependencyConfirmed = false; + this._writableData.isCheckingNeeded = true; + this._writableData.noCircularDependencyConfirmed = false; // If the file contains a wildcard import or __all__ symbols, // we need to rebind because a dependent import may have changed. - if (this._parseResults) { + if (this._writableData.parseResults) { if ( - this._parseResults.containsWildcardImport || - AnalyzerNodeInfo.getDunderAllInfo(this._parseResults.parseTree) !== undefined || + this._writableData.parseResults.containsWildcardImport || + AnalyzerNodeInfo.getDunderAllInfo(this._writableData.parseResults.parseTree) !== undefined || forceRebinding ) { // We don't need to rebuild index data since wildcard // won't affect user file indices. User file indices // don't contain import alias info. - this._parseTreeNeedsCleaning = true; - this._isBindingNeeded = true; - this._moduleSymbolTable = undefined; + this._writableData.parseTreeNeedsCleaning = true; + this._writableData.isBindingNeeded = true; + this._writableData.moduleSymbolTable = undefined; } } } getClientVersion() { - return this._clientDocumentVersion; + return this._writableData.clientDocumentVersion; } getOpenFileContents() { - return this._clientDocumentContents; + return this._writableData.clientDocumentContents; } getFileContent(): string | undefined { @@ -668,23 +699,29 @@ export class SourceFile { } setClientVersion(version: number | null, contents: string): void { + // Save pre edit state if in edit mode. + this._cachePreEditState(); + if (version === null) { - this._clientDocumentVersion = undefined; - this._clientDocumentContents = undefined; + this._writableData.clientDocumentVersion = undefined; + this._writableData.clientDocumentContents = undefined; } else { - this._clientDocumentVersion = version; - this._clientDocumentContents = contents; + this._writableData.clientDocumentVersion = version; + this._writableData.clientDocumentContents = contents; const contentsHash = StringUtils.hashString(contents); // Have the contents of the file changed? - if (contents.length !== this._lastFileContentLength || contentsHash !== this._lastFileContentHash) { + if ( + contents.length !== this._writableData.lastFileContentLength || + contentsHash !== this._writableData.lastFileContentHash + ) { this.markDirty(); } - this._lastFileContentLength = contents.length; - this._lastFileContentHash = contentsHash; - this._isFileDeleted = false; + this._writableData.lastFileContentLength = contents.length; + this._writableData.lastFileContentHash = contentsHash; + this._writableData.isFileDeleted = false; } } @@ -693,15 +730,18 @@ export class SourceFile { } isFileDeleted() { - return this._isFileDeleted; + return this._writableData.isFileDeleted; } isParseRequired() { - return !this._parseResults || this._analyzedFileContentsVersion !== this._fileContentsVersion; + return ( + !this._writableData.parseResults || + this._writableData.analyzedFileContentsVersion !== this._writableData.fileContentsVersion + ); } isBindingRequired() { - if (this._isBindingInProgress) { + if (this._writableData.isBindingInProgress) { return false; } @@ -709,31 +749,31 @@ export class SourceFile { return true; } - return this._isBindingNeeded; + return this._writableData.isBindingNeeded; } isIndexingRequired() { - return this._indexingNeeded; + return this._writableData.indexingNeeded; } isCheckingRequired() { - return this._isCheckingNeeded; + return this._writableData.isCheckingNeeded; } getParseResults(): ParseResults | undefined { if (!this.isParseRequired()) { - return this._parseResults; + return this._writableData.parseResults; } return undefined; } getCachedIndexResults(): IndexResults | undefined { - return this._cachedIndexResults; + return this._writableData.cachedIndexResults; } cacheIndexResults(indexResults: IndexResults) { - this._cachedIndexResults = indexResults; + this._writableData.cachedIndexResults = indexResults; } // Adds a new circular dependency for this file but only if @@ -742,28 +782,28 @@ export class SourceFile { let updatedDependencyList = false; // Some topologies can result in a massive number of cycles. We'll cut it off. - if (this._circularDependencies.length < _maxImportCyclesPerFile) { - if (!this._circularDependencies.some((dep) => dep.isEqual(circDependency))) { - this._circularDependencies.push(circDependency); + if (this._writableData.circularDependencies.length < _maxImportCyclesPerFile) { + if (!this._writableData.circularDependencies.some((dep) => dep.isEqual(circDependency))) { + this._writableData.circularDependencies.push(circDependency); updatedDependencyList = true; } } if (updatedDependencyList) { - this._diagnosticVersion++; + this._writableData.diagnosticVersion++; } } setNoCircularDependencyConfirmed() { - this._noCircularDependencyConfirmed = true; + this._writableData.noCircularDependencyConfirmed = true; } isNoCircularDependencyConfirmed() { - return !this.isParseRequired() && this._noCircularDependencyConfirmed; + return !this.isParseRequired() && this._writableData.noCircularDependencyConfirmed; } setHitMaxImportDepth(maxImportDepth: number) { - this._hitMaxImportDepth = maxImportDepth; + this._writableData.hitMaxImportDepth = maxImportDepth; } // Parse the file and update the state. Callers should wait for completion @@ -790,8 +830,8 @@ export class SourceFile { } // Remember the length and hash for comparison purposes. - this._lastFileContentLength = fileContents.length; - this._lastFileContentHash = StringUtils.hashString(fileContents); + this._writableData.lastFileContentLength = fileContents.length; + this._writableData.lastFileContentHash = StringUtils.hashString(fileContents); }); logState.add(`fs read ${timingStats.readFileTime.totalTime - startTime}ms`); } catch (error) { @@ -799,7 +839,7 @@ export class SourceFile { fileContents = ''; if (!this.fileSystem.existsSync(this._realFilePath)) { - this._isFileDeleted = true; + this._writableData.isFileDeleted = true; } } } @@ -815,10 +855,11 @@ export class SourceFile { ); assert(parseResults !== undefined && parseResults.tokenizerOutput !== undefined); - this._parseResults = parseResults; - this._typeIgnoreLines = this._parseResults.tokenizerOutput.typeIgnoreLines; - this._typeIgnoreAll = this._parseResults.tokenizerOutput.typeIgnoreAll; - this._pyrightIgnoreLines = this._parseResults.tokenizerOutput.pyrightIgnoreLines; + this._writableData.parseResults = parseResults; + this._writableData.typeIgnoreLines = this._writableData.parseResults.tokenizerOutput.typeIgnoreLines; + this._writableData.typeIgnoreAll = this._writableData.parseResults.tokenizerOutput.typeIgnoreAll; + this._writableData.pyrightIgnoreLines = + this._writableData.parseResults.tokenizerOutput.pyrightIgnoreLines; // Resolve imports. const execEnvironment = configOptions.findExecEnvironment(this._filePath); @@ -829,11 +870,11 @@ export class SourceFile { execEnvironment ); - this._imports = importResult.imports; - this._builtinsImport = importResult.builtinsImportResult; - this._ipythonDisplayImport = importResult.ipythonDisplayImportResult; + this._writableData.imports = importResult.imports; + this._writableData.builtinsImport = importResult.builtinsImportResult; + this._writableData.ipythonDisplayImport = importResult.ipythonDisplayImportResult; - this._parseDiagnostics = diagSink.fetchAndClear(); + this._writableData.parseDiagnostics = diagSink.fetchAndClear(); }); // Is this file in a "strict" path? @@ -843,21 +884,24 @@ export class SourceFile { const commentDiags: CommentUtils.CommentDiagnostic[] = []; this._diagnosticRuleSet = CommentUtils.getFileLevelDirectives( - this._parseResults.tokenizerOutput.tokens, - this._parseResults.tokenizerOutput.lines, + this._writableData.parseResults.tokenizerOutput.tokens, + this._writableData.parseResults.tokenizerOutput.lines, configOptions.diagnosticRuleSet, useStrict, commentDiags ); - this._commentDiagnostics = []; + this._writableData.commentDiagnostics = []; commentDiags.forEach((commentDiag) => { - this._commentDiagnostics.push( + this._writableData.commentDiagnostics.push( new Diagnostic( DiagnosticCategory.Error, commentDiag.message, - convertTextRangeToRange(commentDiag.range, this._parseResults!.tokenizerOutput.lines) + convertTextRangeToRange( + commentDiag.range, + this._writableData.parseResults!.tokenizerOutput.lines + ) ) ); }); @@ -871,7 +915,7 @@ export class SourceFile { ); // Create dummy parse results. - this._parseResults = { + this._writableData.parseResults = { text: '', parseTree: ModuleNode.create({ start: 0, length: 0 }), importedModules: [], @@ -889,28 +933,28 @@ export class SourceFile { containsWildcardImport: false, typingSymbolAliases: new Map(), }; - this._imports = undefined; - this._builtinsImport = undefined; - this._ipythonDisplayImport = undefined; + this._writableData.imports = undefined; + this._writableData.builtinsImport = undefined; + this._writableData.ipythonDisplayImport = undefined; const diagSink = new DiagnosticSink(); diagSink.addError( Localizer.Diagnostic.internalParseError().format({ file: this.getFilePath(), message }), getEmptyRange() ); - this._parseDiagnostics = diagSink.fetchAndClear(); + this._writableData.parseDiagnostics = diagSink.fetchAndClear(); // Do not rethrow the exception, swallow it here. Callers are not // prepared to handle an exception. } - this._analyzedFileContentsVersion = this._fileContentsVersion; - this._indexingNeeded = true; - this._isBindingNeeded = true; - this._isCheckingNeeded = true; - this._parseTreeNeedsCleaning = false; - this._hitMaxImportDepth = undefined; - this._diagnosticVersion++; + this._writableData.analyzedFileContentsVersion = this._writableData.fileContentsVersion; + this._writableData.indexingNeeded = true; + this._writableData.isBindingNeeded = true; + this._writableData.isCheckingNeeded = true; + this._writableData.parseTreeNeedsCleaning = false; + this._writableData.hitMaxImportDepth = undefined; + this._writableData.diagnosticVersion++; return true; }); @@ -919,15 +963,15 @@ export class SourceFile { index(options: IndexOptions, token: CancellationToken): IndexResults | undefined { return this._logTracker.log(`indexing: ${this._getPathForLogging(this._filePath)}`, (ls) => { // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults || !this.isIndexingRequired()) { + if (!this._writableData.parseResults || !this.isIndexingRequired()) { ls.suppress(); return undefined; } - this._indexingNeeded = false; + this._writableData.indexingNeeded = false; const symbols = DocumentSymbolProvider.indexSymbols( - AnalyzerNodeInfo.getFileInfo(this._parseResults.parseTree)!, - this._parseResults, + AnalyzerNodeInfo.getFileInfo(this._writableData.parseResults.parseTree)!, + this._writableData.parseResults, options, token ); @@ -942,14 +986,16 @@ export class SourceFile { addHierarchicalSymbolsForDocument(symbolList: DocumentSymbol[], token: CancellationToken) { // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults && !this._cachedIndexResults) { + if (!this._writableData.parseResults && !this._writableData.cachedIndexResults) { return; } DocumentSymbolProvider.addHierarchicalSymbolsForDocument( - this._parseResults ? AnalyzerNodeInfo.getFileInfo(this._parseResults.parseTree) : undefined, + this._writableData.parseResults + ? AnalyzerNodeInfo.getFileInfo(this._writableData.parseResults.parseTree) + : undefined, this.getCachedIndexResults(), - this._parseResults, + this._writableData.parseResults, symbolList, token ); @@ -957,14 +1003,16 @@ export class SourceFile { getSymbolsForDocument(query: string, token: CancellationToken) { // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults && !this._cachedIndexResults) { + if (!this._writableData.parseResults && !this._writableData.cachedIndexResults) { return []; } return DocumentSymbolProvider.getSymbolsForDocument( - this._parseResults ? AnalyzerNodeInfo.getFileInfo(this._parseResults.parseTree) : undefined, + this._writableData.parseResults + ? AnalyzerNodeInfo.getFileInfo(this._writableData.parseResults.parseTree) + : undefined, this.getCachedIndexResults(), - this._parseResults, + this._writableData.parseResults, this._filePath, query, token @@ -986,7 +1034,7 @@ export class SourceFile { token: CancellationToken ): CompletionResults | undefined { // If we have no completed analysis job, there's nothing to do. - if (!this._parseResults) { + if (!this._writableData.parseResults) { return undefined; } @@ -999,7 +1047,7 @@ export class SourceFile { const completionProvider = new CompletionProvider( workspacePath, - this._parseResults, + this._writableData.parseResults, fileContents, importResolver, position, @@ -1034,14 +1082,14 @@ export class SourceFile { token: CancellationToken ) { const fileContents = this.getOpenFileContents(); - if (!this._parseResults || fileContents === undefined) { + if (!this._writableData.parseResults || fileContents === undefined) { return; } const completionData = fromLSPAny(completionItem.data); const completionProvider = new CompletionProvider( completionData.workspacePath, - this._parseResults, + this._writableData.parseResults, fileContents, importResolver, completionData.position, @@ -1070,8 +1118,8 @@ export class SourceFile { ) { assert(!this.isParseRequired(), 'Bind called before parsing'); assert(this.isBindingRequired(), 'Bind called unnecessarily'); - assert(!this._isBindingInProgress, 'Bind called while binding in progress'); - assert(this._parseResults !== undefined, 'Parse results not available'); + assert(!this._writableData.isBindingInProgress, 'Bind called while binding in progress'); + assert(this._writableData.parseResults !== undefined, 'Parse results not available'); return this._logTracker.log(`binding: ${this._getPathForLogging(this._filePath)}`, () => { try { @@ -1081,28 +1129,28 @@ export class SourceFile { const fileInfo = this._buildFileInfo( configOptions, - this._parseResults!.text, + this._writableData.parseResults!.text, importLookup, builtinsScope, futureImports ); - AnalyzerNodeInfo.setFileInfo(this._parseResults!.parseTree, fileInfo); + AnalyzerNodeInfo.setFileInfo(this._writableData.parseResults!.parseTree, fileInfo); const binder = new Binder(fileInfo, configOptions.indexGenerationMode); - this._isBindingInProgress = true; - binder.bindModule(this._parseResults!.parseTree); + this._writableData.isBindingInProgress = true; + binder.bindModule(this._writableData.parseResults!.parseTree); // If we're in "test mode" (used for unit testing), run an additional // "test walker" over the parse tree to validate its internal consistency. if (configOptions.internalTestMode) { const testWalker = new TestWalker(); - testWalker.walk(this._parseResults!.parseTree); + testWalker.walk(this._writableData.parseResults!.parseTree); } - this._bindDiagnostics = fileInfo.diagnosticSink.fetchAndClear(); - const moduleScope = AnalyzerNodeInfo.getScope(this._parseResults!.parseTree); + this._writableData.bindDiagnostics = fileInfo.diagnosticSink.fetchAndClear(); + const moduleScope = AnalyzerNodeInfo.getScope(this._writableData.parseResults!.parseTree); assert(moduleScope !== undefined, 'Module scope not returned by binder'); - this._moduleSymbolTable = moduleScope!.symbolTable; + this._writableData.moduleSymbolTable = moduleScope!.symbolTable; }); } catch (e: any) { const message: string = @@ -1118,19 +1166,19 @@ export class SourceFile { Localizer.Diagnostic.internalBindError().format({ file: this.getFilePath(), message }), getEmptyRange() ); - this._bindDiagnostics = diagSink.fetchAndClear(); + this._writableData.bindDiagnostics = diagSink.fetchAndClear(); // Do not rethrow the exception, swallow it here. Callers are not // prepared to handle an exception. } finally { - this._isBindingInProgress = false; + this._writableData.isBindingInProgress = false; } // Prepare for the next stage of the analysis. - this._diagnosticVersion++; - this._isCheckingNeeded = true; - this._indexingNeeded = true; - this._isBindingNeeded = false; + this._writableData.diagnosticVersion++; + this._writableData.isCheckingNeeded = true; + this._writableData.indexingNeeded = true; + this._writableData.isBindingNeeded = false; }); } @@ -1142,9 +1190,9 @@ export class SourceFile { ) { assert(!this.isParseRequired(), 'Check called before parsing'); assert(!this.isBindingRequired(), 'Check called before binding'); - assert(!this._isBindingInProgress, 'Check called while binding in progress'); + assert(!this._writableData.isBindingInProgress, 'Check called while binding in progress'); assert(this.isCheckingRequired(), 'Check called unnecessarily'); - assert(this._parseResults !== undefined, 'Parse results not available'); + assert(this._writableData.parseResults !== undefined, 'Parse results not available'); return this._logTracker.log(`checking: ${this._getPathForLogging(this._filePath)}`, () => { try { @@ -1153,16 +1201,16 @@ export class SourceFile { const checker = new Checker( importResolver, evaluator, - this._parseResults!, + this._writableData.parseResults!, sourceMapper, dependentFiles ); checker.check(); - this._isCheckingNeeded = false; + this._writableData.isCheckingNeeded = false; - const fileInfo = AnalyzerNodeInfo.getFileInfo(this._parseResults!.parseTree)!; - this._checkerDiagnostics = fileInfo.diagnosticSink.fetchAndClear(); - this._checkTime = checkDuration.getDurationInMilliseconds(); + const fileInfo = AnalyzerNodeInfo.getFileInfo(this._writableData.parseResults!.parseTree)!; + this._writableData.checkerDiagnostics = fileInfo.diagnosticSink.fetchAndClear(); + this._writableData.checkTime = checkDuration.getDurationInMilliseconds(); }); } catch (e: any) { const isCancellation = OperationCanceledException.is(e); @@ -1180,10 +1228,10 @@ export class SourceFile { getEmptyRange() ); - this._checkerDiagnostics = diagSink.fetchAndClear(); + this._writableData.checkerDiagnostics = diagSink.fetchAndClear(); // Mark the file as complete so we don't get into an infinite loop. - this._isCheckingNeeded = false; + this._writableData.isCheckingNeeded = false; } throw e; @@ -1191,8 +1239,8 @@ export class SourceFile { // Clear any circular dependencies associated with this file. // These will be detected by the program module and associated // with the source file right before it is finalized. - this._circularDependencies = []; - this._diagnosticVersion++; + this._writableData.circularDependencies = []; + this._writableData.diagnosticVersion++; } }); } @@ -1201,6 +1249,20 @@ export class SourceFile { this._ipythonMode = enable ? IPythonMode.CellDocs : IPythonMode.None; } + private _cachePreEditState() { + // If there's no document yet, this change doesn't count as a write yet. + if (this._writableData.clientDocumentContents !== undefined) { + // If this is our first write, then make a copy of the writable data. + if (this._isEditMode && !this._preEditData) { + // Copy over the writable data. + this._preEditData = this._writableData; + + // Recreate all the writable data from scratch. + this._writableData = new WriteableData(); + } + } + } + // Get all task list diagnostics for the current file and add them // to the specified diagnostic list private _addTaskListDiagnostics(taskListTokens: TaskListToken[] | undefined, diagList: Diagnostic[]) { @@ -1210,11 +1272,11 @@ export class SourceFile { } // if we have no tokens, we're done - if (!this._parseResults?.tokenizerOutput?.tokens) { + if (!this._writableData.parseResults?.tokenizerOutput?.tokens) { return; } - const tokenizerOutput = this._parseResults.tokenizerOutput; + const tokenizerOutput = this._writableData.parseResults.tokenizerOutput; for (let i = 0; i < tokenizerOutput.tokens.count; i++) { const token = tokenizerOutput.tokens.getItemAt(i); @@ -1266,8 +1328,8 @@ export class SourceFile { builtinsScope: Scope | undefined, futureImports: Set ) { - assert(this._parseResults !== undefined, 'Parse results not available'); - const analysisDiagnostics = new TextRangeDiagnosticSink(this._parseResults!.tokenizerOutput.lines); + assert(this._writableData.parseResults !== undefined, 'Parse results not available'); + const analysisDiagnostics = new TextRangeDiagnosticSink(this._writableData.parseResults!.tokenizerOutput.lines); const fileInfo: AnalyzerFileInfo = { importLookup, @@ -1277,8 +1339,8 @@ export class SourceFile { executionEnvironment: configOptions.findExecEnvironment(this._filePath), diagnosticRuleSet: this._diagnosticRuleSet, fileContents, - lines: this._parseResults!.tokenizerOutput.lines, - typingSymbolAliases: this._parseResults!.typingSymbolAliases, + lines: this._writableData.parseResults!.tokenizerOutput.lines, + typingSymbolAliases: this._writableData.parseResults!.typingSymbolAliases, definedConstants: configOptions.defineConstant, filePath: this._filePath, moduleName: this._moduleName, @@ -1294,11 +1356,11 @@ export class SourceFile { } private _cleanParseTreeIfRequired() { - if (this._parseResults) { - if (this._parseTreeNeedsCleaning) { - const cleanerWalker = new ParseTreeCleanerWalker(this._parseResults.parseTree); + if (this._writableData.parseResults) { + if (this._writableData.parseTreeNeedsCleaning) { + const cleanerWalker = new ParseTreeCleanerWalker(this._writableData.parseResults.parseTree); cleanerWalker.clean(); - this._parseTreeNeedsCleaning = false; + this._writableData.parseTreeNeedsCleaning = false; } } } diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index 263f696e9..9cb035a87 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -7,26 +7,26 @@ */ import { CancellationToken } from 'vscode-languageserver'; -import { MessageChannel, MessagePort, parentPort, threadId, Worker, workerData } from 'worker_threads'; +import { MessageChannel, MessagePort, Worker, parentPort, threadId, workerData } from 'worker_threads'; import { AnalysisCompleteCallback, AnalysisResults, analyzeProgram, nullCallback } from './analyzer/analysis'; import { ImportResolver } from './analyzer/importResolver'; import { Indices, OpenFileOptions, Program } from './analyzer/program'; import { BackgroundThreadBase, - createConfigOptionsFrom, - getBackgroundWaiter, InitializationData, LogData, + createConfigOptionsFrom, + getBackgroundWaiter, run, } from './backgroundThreadBase'; import { - getCancellationTokenId, OperationCanceledException, + getCancellationTokenId, throwIfCancellationRequested, } from './common/cancellationUtils'; import { ConfigOptions } from './common/configOptions'; -import { ConsoleInterface, log, LogLevel } from './common/console'; +import { ConsoleInterface, LogLevel, log } from './common/console'; import * as debug from './common/debug'; import { Diagnostic } from './common/diagnostic'; import { FileDiagnostics } from './common/diagnosticSink'; diff --git a/packages/pyright-internal/src/tests/sourceFile.test.ts b/packages/pyright-internal/src/tests/sourceFile.test.ts index 9000cb2fd..0470e490f 100644 --- a/packages/pyright-internal/src/tests/sourceFile.test.ts +++ b/packages/pyright-internal/src/tests/sourceFile.test.ts @@ -19,7 +19,7 @@ import { parseAndGetTestState } from './harness/fourslash/testState'; test('Empty', () => { const filePath = combinePaths(process.cwd(), 'tests/samples/test_file1.py'); const fs = createFromRealFileSystem(); - const sourceFile = new SourceFile(fs, filePath, '', false, false); + const sourceFile = new SourceFile(fs, filePath, '', false, false, false); const configOptions = new ConfigOptions(process.cwd()); const importResolver = new ImportResolver(fs, configOptions, new FullAccessHost(fs)); diff --git a/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts b/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts index 8385e1836..f95c621a8 100644 --- a/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts +++ b/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts @@ -9,11 +9,13 @@ import * as assert from 'assert'; import { TextDocumentEdit } from 'vscode-languageserver-types'; -import { convertPathToUri } from '../common/pathUtils'; +import { CancellationToken } from 'vscode-languageserver'; +import { IPythonMode } from '../analyzer/sourceFile'; +import { combinePaths, convertPathToUri, getDirectoryPath } from '../common/pathUtils'; import { applyWorkspaceEdit, generateWorkspaceEdit } from '../common/workspaceEditUtils'; import { AnalyzerServiceExecutor } from '../languageService/analyzerServiceExecutor'; import { TestLanguageService } from './harness/fourslash/testLanguageService'; -import { parseAndGetTestState, TestState } from './harness/fourslash/testState'; +import { TestState, parseAndGetTestState } from './harness/fourslash/testState'; import { verifyWorkspaceEdit } from './harness/fourslash/workspaceEditTestUtils'; test('test applyWorkspaceEdits changes', async () => { @@ -46,6 +48,124 @@ test('test applyWorkspaceEdits changes', async () => { assert.strictEqual(cloned.test_program.getSourceFile(range.fileName)?.getFileContent(), 'Text Changed'); }); +test('test edit mode for workspace', async () => { + const code = ` +// @filename: test.py +//// [|/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + const range = state.getRangeByMarkerName('marker')!; + const addedFilePath = combinePaths(getDirectoryPath(range.fileName), 'test2.py'); + const edits = await state.workspace.service.useEditMode(async () => { + const fileChanged = new Set(); + applyWorkspaceEdit( + state.workspace.service, + { + documentChanges: [ + TextDocumentEdit.create( + { + uri: convertPathToUri(state.workspace.service.fs, range.fileName), + version: null, + }, + [ + { + range: state.convertPositionRange(range), + newText: 'import sys', + }, + ] + ), + ], + }, + fileChanged + ); + + assert.strictEqual(fileChanged.size, 1); + const newSourceFile = state.workspace.service.test_program.getSourceFile(range.fileName); + state.workspace.service.backgroundAnalysisProgram.analyzeFile( + newSourceFile!.getFilePath(), + CancellationToken.None + ); + assert.strictEqual(newSourceFile?.getFileContent(), 'import sys'); + assert.strictEqual(newSourceFile.getImports().length, 2); + + // Add a new file. + state.workspace.service.backgroundAnalysisProgram.program.setFileOpened(addedFilePath, 0, '', { + isTracked: true, + ipythonMode: IPythonMode.None, + chainedFilePath: undefined, + realFilePath: addedFilePath, + }); + + applyWorkspaceEdit( + state.workspace.service, + { + documentChanges: [ + TextDocumentEdit.create( + { + uri: convertPathToUri(state.workspace.service.fs, addedFilePath), + version: null, + }, + [ + { + range: state.convertPositionRange(range), + newText: 'import sys', + }, + ] + ), + ], + }, + fileChanged + ); + + applyWorkspaceEdit( + state.workspace.service, + { + documentChanges: [ + TextDocumentEdit.create( + { + uri: convertPathToUri(state.workspace.service.fs, addedFilePath), + version: null, + }, + [ + { + range: { + start: { line: 0, character: 7 }, + end: { line: 0, character: 10 }, + }, + newText: 'os', + }, + ] + ), + ], + }, + fileChanged + ); + + const addedSourceFile = state.workspace.service.test_program.getSourceFile(addedFilePath); + state.workspace.service.backgroundAnalysisProgram.analyzeFile( + addedSourceFile!.getFilePath(), + CancellationToken.None + ); + assert.strictEqual(addedSourceFile?.getFileContent(), 'import os'); + assert.strictEqual(addedSourceFile.getImports().length, 2); + }, CancellationToken.None); + + // After leaving edit mode, we should be back to where we were. + const oldSourceFile = state.workspace.service.test_program.getSourceFile(range.fileName); + state.workspace.service.backgroundAnalysisProgram.analyzeFile(oldSourceFile!.getFilePath(), CancellationToken.None); + assert.strictEqual(oldSourceFile?.getFileContent(), ''); + assert.strictEqual(oldSourceFile.getImports().length, 1); + assert.strictEqual(edits.length, 2); + assert.deepStrictEqual(edits[0].replacementText, 'import sys'); + assert.deepStrictEqual(edits[1].replacementText, 'import os'); + const addedSourceFile = state.workspace.service.test_program.getSourceFile(addedFilePath); + + // The added file should be there, but be empty. + assert.ok(addedSourceFile); + assert.strictEqual(addedSourceFile?.getFileContent(), ''); +}); + test('test applyWorkspaceEdits documentChanges', async () => { const code = ` // @filename: test.py From 1edb384271b1ab3cb34179370a57cc58118b6c29 Mon Sep 17 00:00:00 2001 From: Rich Chiodo Date: Mon, 1 May 2023 11:58:40 -0700 Subject: [PATCH 109/525] Update dependabot problem (#5045) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ce3be376..d17e262c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6492,9 +6492,9 @@ } }, "node_modules/npm-check-updates/node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", "dev": true, "engines": { "node": ">= 14" @@ -14833,9 +14833,9 @@ } }, "yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", "dev": true } } From d37f4c99eed48970be37a643079495b12fefa234 Mon Sep 17 00:00:00 2001 From: Erik De Bonte Date: Mon, 1 May 2023 14:27:12 -0700 Subject: [PATCH 110/525] Add support for PEP 712 (#5034) --- .../src/analyzer/dataClasses.ts | 122 ++++++++++++++++++ .../pyright-internal/src/analyzer/types.ts | 3 +- .../src/localization/localize.ts | 8 ++ .../src/localization/package.nls.en-us.json | 2 + .../src/tests/samples/dataclass25.py | 122 ++++++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 6 + 6 files changed, 262 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/dataclass25.py diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index f00c90513..817cb93bb 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -9,10 +9,12 @@ */ import { assert } from '../common/debug'; +import { DiagnosticAddendum } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { Localizer } from '../localization/localize'; import { ArgumentCategory, + ArgumentNode, CallNode, ClassNode, ExpressionNode, @@ -34,6 +36,7 @@ import { AnyType, ClassType, ClassTypeFlags, + combineTypes, DataClassBehaviors, DataClassEntry, FunctionParameter, @@ -45,8 +48,10 @@ import { isInstantiableClass, isOverloadedFunction, NoneType, + OverloadedFunctionType, TupleTypeArgument, Type, + TypeVarType, UnknownType, } from './types'; import { @@ -163,6 +168,7 @@ export function synthesizeDataClassMethods( let isKeywordOnly = ClassType.isDataClassKeywordOnlyParams(classType) || sawKeywordOnlySeparator; let defaultValueExpression: ExpressionNode | undefined; let includeInInit = true; + let converter: ArgumentNode | undefined; if (statement.nodeType === ParseNodeType.Assignment) { if ( @@ -298,6 +304,13 @@ export function synthesizeDataClassMethods( aliasName = valueType.literalValue as string; } } + + const converterArg = statement.rightExpression.arguments.find( + (arg) => arg.name?.value === 'converter' + ); + if (converterArg && converterArg.valueExpression) { + converter = converterArg; + } } } } else if (statement.nodeType === ParseNodeType.TypeAnnotation) { @@ -354,6 +367,7 @@ export function synthesizeDataClassMethods( nameNode: variableNameNode, type: UnknownType.create(), isClassVar: true, + converter, }; localDataClassEntries.push(dataClassEntry); } else { @@ -371,6 +385,7 @@ export function synthesizeDataClassMethods( nameNode: variableNameNode, type: UnknownType.create(), isClassVar: false, + converter, }; localEntryTypeEvaluator.push({ entry: dataClassEntry, evaluator: variableTypeEvaluator }); @@ -493,6 +508,10 @@ export function synthesizeDataClassMethods( // type of the __init__ method parameter from the __set__ method. effectiveType = transformDescriptorType(evaluator, effectiveType); + if (entry.converter) { + effectiveType = getConverterInputType(evaluator, entry.converter, effectiveType, entry.name); + } + const effectiveName = entry.alias || entry.name; if (!entry.alias && entry.nameNode && isPrivateName(entry.nameNode.value)) { @@ -660,6 +679,109 @@ export function synthesizeDataClassMethods( } } +// Validates converter and, if valid, returns its input type. If invalid, +// fieldType is returned. +function getConverterInputType( + evaluator: TypeEvaluator, + converterNode: ArgumentNode, + fieldType: Type, + fieldName: string +): Type { + const converterType = getConverterAsFunction( + evaluator, + evaluator.getTypeOfExpression(converterNode.valueExpression).type + ); + + if (!converterType) { + return fieldType; + } + + // Create synthesized function of the form Callable[[T], fieldType] which + // will be used to check compatibility of the provided converter. + const typeVar = TypeVarType.createInstance('__converterInput'); + typeVar.scopeId = evaluator.getScopeIdForNode(converterNode); + const targetFunction = FunctionType.createSynthesizedInstance(''); + targetFunction.details.typeVarScopeId = typeVar.scopeId; + targetFunction.details.declaredReturnType = fieldType; + FunctionType.addParameter(targetFunction, { + category: ParameterCategory.Simple, + name: '__input', + type: typeVar, + hasDeclaredType: true, + }); + FunctionType.addParameter(targetFunction, { + category: ParameterCategory.Simple, + name: '', + type: UnknownType.create(), + }); + + if (isFunction(converterType)) { + const typeVarContext = new TypeVarContext(typeVar.scopeId); + const diagAddendum = new DiagnosticAddendum(); + + if (evaluator.assignType(targetFunction, converterType, diagAddendum, typeVarContext)) { + const solution = applySolvedTypeVars(typeVar, typeVarContext, { unknownIfNotFound: true }); + return solution; + } + + evaluator.addDiagnostic( + AnalyzerNodeInfo.getFileInfo(converterNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.dataClassConverterFunction().format({ + argType: evaluator.printType(converterType), + fieldType: evaluator.printType(fieldType), + fieldName: fieldName, + }) + diagAddendum.getString(), + converterNode, + diagAddendum.getEffectiveTextRange() ?? converterNode + ); + } else { + const acceptedTypes: Type[] = []; + const diagAddendum = new DiagnosticAddendum(); + + OverloadedFunctionType.getOverloads(converterType).forEach((overload) => { + const typeVarContext = new TypeVarContext(typeVar.scopeId); + + if (evaluator.assignType(targetFunction, overload, diagAddendum, typeVarContext)) { + const overloadSolution = applySolvedTypeVars(typeVar, typeVarContext, { unknownIfNotFound: true }); + acceptedTypes.push(overloadSolution); + } + }); + + if (acceptedTypes.length > 0) { + return combineTypes(acceptedTypes); + } + + evaluator.addDiagnostic( + AnalyzerNodeInfo.getFileInfo(converterNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.dataClassConverterOverloads().format({ + funcName: converterType.overloads[0].details.name || '', + fieldType: evaluator.printType(fieldType), + fieldName: fieldName, + }) + diagAddendum.getString(), + converterNode + ); + } + + return fieldType; +} + +function getConverterAsFunction( + evaluator: TypeEvaluator, + converterType: Type +): FunctionType | OverloadedFunctionType | undefined { + if (isFunction(converterType) || isOverloadedFunction(converterType)) { + return converterType; + } + + if (isClassInstance(converterType)) { + return evaluator.getBoundMethod(converterType, '__call__'); + } + + return undefined; +} + // If the specified type is a descriptor — in particular, if it implements a // __set__ method, this method transforms the type into the input parameter // for the set method. diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 32d08911e..1951bce7e 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -8,7 +8,7 @@ */ import { assert } from '../common/debug'; -import { ExpressionNode, NameNode, ParameterCategory } from '../parser/parseNodes'; +import { ArgumentNode, ExpressionNode, NameNode, ParameterCategory } from '../parser/parseNodes'; import { FunctionDeclaration } from './declaration'; import { Symbol, SymbolTable } from './symbol'; @@ -394,6 +394,7 @@ export interface DataClassEntry { defaultValueExpression?: ExpressionNode | undefined; includeInInit: boolean; type: Type; + converter?: ArgumentNode | undefined; } export interface TypedDictEntry { diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 1cef07abe..9c53c3230 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -307,6 +307,14 @@ export namespace Localizer { export const continueOutsideLoop = () => getRawString('Diagnostic.continueOutsideLoop'); export const dataClassBaseClassFrozen = () => getRawString('Diagnostic.dataClassBaseClassFrozen'); export const dataClassBaseClassNotFrozen = () => getRawString('Diagnostic.dataClassBaseClassNotFrozen'); + export const dataClassConverterFunction = () => + new ParameterizedString<{ argType: string; fieldType: string; fieldName: string }>( + getRawString('Diagnostic.dataClassConverterFunction') + ); + export const dataClassConverterOverloads = () => + new ParameterizedString<{ funcName: string; fieldType: string; fieldName: string }>( + getRawString('Diagnostic.dataClassConverterOverloads') + ); export const dataClassFieldWithDefault = () => getRawString('Diagnostic.dataClassFieldWithDefault'); export const dataClassFieldWithoutAnnotation = () => getRawString('Diagnostic.dataClassFieldWithoutAnnotation'); export const dataClassFieldWithPrivateName = () => getRawString('Diagnostic.dataClassFieldWithPrivateName'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 2979c3b2e..4cccd4e63 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -78,6 +78,8 @@ "constructorNoArgs": "Expected no arguments to \"{type}\" constructor", "dataClassBaseClassFrozen": "A non-frozen class cannot inherit from a class that is frozen", "dataClassBaseClassNotFrozen": "A frozen class cannot inherit from a class that is not frozen", + "dataClassConverterFunction": "Argument of type \"{argType}\" is not a valid converter for field \"{fieldName}\" of type \"{fieldType}\"", + "dataClassConverterOverloads": "No overloads of \"{funcName}\" are valid converters for field \"{fieldName}\" of type \"{fieldType}\"", "dataClassFieldWithDefault": "Fields without default values cannot appear after fields with default values", "dataClassFieldWithoutAnnotation": "Dataclass field without type annotation will cause runtime exception", "dataClassFieldWithPrivateName": "Dataclass field cannot use private name", diff --git a/packages/pyright-internal/src/tests/samples/dataclass25.py b/packages/pyright-internal/src/tests/samples/dataclass25.py new file mode 100644 index 000000000..cced796ab --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/dataclass25.py @@ -0,0 +1,122 @@ +# This sample tests the use of field's coverter parameter +# described in PEP 712. + +from dataclasses import dataclass, field +from typing import Callable, overload + + +def converter_simple(s: str) -> int: + return int(s) + +def converter_with_param_before_args(s: str, *args: int, **kwargs: int) -> int: + return int(s) + +def converter_with_args(*args: str) -> int: + return int(args[0]) + +def converter_with_extra_defaulted_params(s: str, extra: int = 1, *, extraKwarg: int = 1) -> int: + return int(s) + +def converter_with_default_for_first_param(s: str = "1") -> int: + return int(s) + +def converter_with_more_specialized_return_type(s: str) -> int: + return int(s) + +@dataclass +class Foo: + # This should generate an error because "converter" is not an official property yet. + field0: int = field(converter=converter_simple) + # This should generate an error because "converter" is not an official property yet. + field1: int = field(converter=converter_with_param_before_args) + # This should generate an error because "converter" is not an official property yet. + field2: int = field(converter=converter_with_args) + # This should generate an error because "converter" is not an official property yet. + field3: int = field(converter=converter_with_extra_defaulted_params) + # This should generate an error because "converter" is not an official property yet. + field4: int = field(converter=converter_with_default_for_first_param) + # This should generate an error because "converter" is not an official property yet. + field5: int | str = field(converter=converter_with_more_specialized_return_type) + + +reveal_type(Foo.__init__, expected_text="(self: Foo, field0: str, field1: str, field2: str, field3: str, field4: str, field5: str) -> None") + + +# This overload will be ignored because it has too many arguments. +@overload +def overloaded_converter(s: float, secondParam: str, /) -> int: ... + +# This overload will be ignored because its return type doesn't match the field type. +@overload +def overloaded_converter(s: float) -> str: ... + +@overload +def overloaded_converter(s: str) -> int: ... + +@overload +def overloaded_converter(s: list[str]) -> int: ... + +def overloaded_converter(s: float | str | list[str], *args: str) -> int | float | str: + return 0 + + +@dataclass +class Overloads: + # This should generate an error because "converter" is not an official property yet. + field0: int = field(converter=overloaded_converter) + + +reveal_type(Overloads.__init__, expected_text="(self: Overloads, field0: str | list[str]) -> None") + + +class CallableObject(): + @overload + def __call__(self, arg1: int) -> str: ... + @overload + def __call__(self, arg1: str) -> int: ... + + def __call__(self, arg1: str | int | list[str]) -> int | str: + return 1 + +callable: Callable[[str], int] = converter_simple +callable_union: Callable[[str], int] | Callable[[int], str] = converter_simple + +@dataclass +class Callables: + # This should generate an error because "converter" is not an official property yet. + field0: int = field(converter=CallableObject()) + # This should generate an error because "converter" is not an official property yet. + field1: int = field(converter=callable) + # This should generate an error because "converter" is not an official property yet. + field2: int = field(converter=callable_union) + + +reveal_type(Callables.__init__, expected_text="(self: Callables, field0: str, field1: str, field2: str) -> None") + + +def wrong_return_type(s: str) -> str: + return s + +def wrong_number_of_params(x: str, x2: str, /) -> int: + return 1 + +@overload +def wrong_converter_overload(s: float) -> str: ... + +@overload +def wrong_converter_overload(s: str) -> str: ... + +def wrong_converter_overload(s: float | str) -> int | str: + return 1 + +@dataclass +class Errors: + # This should generate an error because "converter" is not an official property yet + # and a second error because the return type doesn't match the field type. + field0: int = field(converter=wrong_return_type) + # This should generate an error because "converter" is not an official property yet + # and a second error because the converter has the wrong number of parameters. + field1: int = field(converter=wrong_number_of_params) + # This should generate an error because "converter" is not an official property yet + # and a second error because none of the overloads match the field type. + field2: int = field(converter=wrong_converter_overload) diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 8b129094d..6898f92a4 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -666,6 +666,12 @@ test('DataClass24', () => { TestUtils.validateResults(analysisResults, 1); }); +test('DataClass25', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass25.py']); + + TestUtils.validateResults(analysisResults, 16); +}); + test('DataClassPostInit1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassPostInit1.py']); From 6e95b76291aaa3d1feba9fdf930026da8acf536b Mon Sep 17 00:00:00 2001 From: Erik De Bonte Date: Mon, 1 May 2023 14:42:54 -0700 Subject: [PATCH 111/525] Fix broken link in `mypy-comparison.md` (#5046) --- docs/mypy-comparison.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/mypy-comparison.md b/docs/mypy-comparison.md index 3ee5cda4d..cc4c3d839 100644 --- a/docs/mypy-comparison.md +++ b/docs/mypy-comparison.md @@ -352,7 +352,7 @@ def func(a: AnyStr, b: T): return a + b # Mypy reports 4 errors ``` -Pyright cannot use the same multi-pass technique as mypy in this case. It needs to produce a single type for any given identifier to support language server features. Pyright instead uses a mechanism called [conditional types](type-concepts-advanced.md#constrained-type-variables-and-conditional-types). This approach allows pyright to handle some constrained TypeVar use cases that mypy cannot, but there are conversely other use cases that mypy can handle and pyright cannot. +Pyright cannot use the same multi-pass technique as mypy in this case. It needs to produce a single type for any given identifier to support language server features. Pyright instead uses a mechanism called [conditional types](type-concepts-advanced.md#conditional-types-and-type-variables). This approach allows pyright to handle some constrained TypeVar use cases that mypy cannot, but there are conversely other use cases that mypy can handle and pyright cannot. ### “Unknown” Type and Strict Mode From fae2e2f7edfa4f9e2795ec0cd0f2beff8d7dfa09 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 1 May 2023 22:58:56 -0700 Subject: [PATCH 112/525] Fixed typo in error message. --- .../pyright-internal/src/localization/package.nls.en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 4cccd4e63..7abe91baa 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -514,7 +514,7 @@ "unnecessaryTypeIgnore": "Unnecessary \"# type: ignore\" comment", "unpackArgCount": "Expected a single type argument after \"Unpack\"", "unpackedArgInTypeArgument": "Unpacked arguments cannot be used in type argument lists", - "unpackedArgWithVariadicParam": "Unpacked argument cannot be used for TupleTypeVar parameter", + "unpackedArgWithVariadicParam": "Unpacked argument cannot be used for TypeVarTuple parameter", "unpackedDictArgumentNotMapping": "Argument expression after ** must be a mapping with a \"str\" key type", "unpackedSubscriptIllegal": "Unpack operator in subscript requires Python 3.11 or newer", "unpackedTypedDictArgument": "Unable to match unpacked TypedDict argument to parameters", From eba727a519fc7111802e2c044b92f2d0904b2c39 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 2 May 2023 00:31:46 -0700 Subject: [PATCH 113/525] Eliminated the code that treats unions within value expressions as a `UnionType` object. This behavior caused various problems including a false positive in this case: https://github.com/microsoft/pyright/issues/5050. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 13 ------------- .../src/tests/samples/isinstance3.py | 10 ++-------- .../pyright-internal/src/tests/samples/unions5.py | 8 ++++++-- .../src/tests/typeEvaluator2.test.ts | 2 +- .../src/tests/typeEvaluator4.test.ts | 2 +- 5 files changed, 10 insertions(+), 25 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 4b2694b01..ba6776906 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -652,7 +652,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let cancellationToken: CancellationToken | undefined; let isBasicTypesInitialized = false; let noneType: Type | undefined; - let unionType: Type | undefined; let objectType: Type | undefined; let typeClassType: Type | undefined; let functionObj: Type | undefined; @@ -16809,12 +16808,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Update the decorated class type. writeTypeCache(node, { type: decoratedType }, EvaluatorFlags.None); - // Stash away a reference to the UnionType class if we encounter it. - // There's no easy way to otherwise reference it. - if (ClassType.isBuiltIn(classType, 'UnionType')) { - unionType = ClassType.cloneAsInstance(classType); - } - // Validate that arguments passed to `__init_subclass__` are of the correct type. // Defer this if the metaclass calculation is deferred. if (!isMetaclassDeferred) { @@ -23127,12 +23120,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } - // Handle the special case where the expression is an actual - // UnionType special form. - if (isUnion(srcType) && TypeBase.isSpecialForm(srcType)) { - srcType = unionType || objectType || AnyType.create(); - } - if (isUnion(destType)) { if (isUnion(srcType)) { if ( diff --git a/packages/pyright-internal/src/tests/samples/isinstance3.py b/packages/pyright-internal/src/tests/samples/isinstance3.py index cd09c7061..8e40b5657 100644 --- a/packages/pyright-internal/src/tests/samples/isinstance3.py +++ b/packages/pyright-internal/src/tests/samples/isinstance3.py @@ -24,17 +24,11 @@ class A(Generic[_T]): if isinstance(a, A[str]): pass -# This should generate an error in Python 3.9 and older -# because unions are not allowed. +# This should generate an error in Python 3.9 and older because +# unions are not allowed, but this error isn't currently caught. if issubclass(A, Union[A, int]): pass -# This should generate an error in Python 3.9 and older -# because unions are not allowed. A second error will be -# generated because the | operator isn't allowed. -if issubclass(A, A | int): - pass - class ClassA(Generic[_T]): v1: _T diff --git a/packages/pyright-internal/src/tests/samples/unions5.py b/packages/pyright-internal/src/tests/samples/unions5.py index 4ff46579f..c791b2273 100644 --- a/packages/pyright-internal/src/tests/samples/unions5.py +++ b/packages/pyright-internal/src/tests/samples/unions5.py @@ -12,16 +12,20 @@ class Bar: a: int -# This should generate an error a1: type[Foo] | type[Bar] = Foo | Bar +# This should generate an error print(a1.a) -a1() # This should generate an error +a1() + a2: type[Foo] | type[Bar] = Union[Foo, Bar] +# This should generate an error print(a2.a) + +# This should generate an error a2() diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 2cb3dcf3d..d18dfbc6b 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -276,7 +276,7 @@ test('isInstance3', () => { configOptions.defaultPythonVersion = PythonVersion.V3_9; const analysisResults1 = TestUtils.typeAnalyzeSampleFiles(['isinstance3.py'], configOptions); - TestUtils.validateResults(analysisResults1, 4); + TestUtils.validateResults(analysisResults1, 1); configOptions.defaultPythonVersion = PythonVersion.V3_10; const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['isinstance3.py'], configOptions); diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 6898f92a4..7f414f022 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -778,7 +778,7 @@ test('Unions4', () => { test('Unions5', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['unions5.py']); - TestUtils.validateResults(analysisResults, 6); + TestUtils.validateResults(analysisResults, 8); }); test('Unions6', () => { From 66b6672bef521b09f8cb48d306f15d1ec556a010 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 2 May 2023 19:19:49 -0700 Subject: [PATCH 114/525] Published 1.1.306 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index b86ea1bdf..11c0c659f 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.305", + "version": "1.1.306", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 2642e39cc..7f0d08dae 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.305", + "version": "1.1.306", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.305", + "version": "1.1.306", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index cc73b14d5..9c0d53079 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.305", + "version": "1.1.306", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index baa049fbf..c470f633b 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.305", + "version": "1.1.306", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.305", + "version": "1.1.306", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 4f93e6786..d4c04d2d3 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.305", + "version": "1.1.306", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 5c9483a3b..297c8cc39 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.305", + "version": "1.1.306", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.305", + "version": "1.1.306", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 6e55da427..593af6473 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.305", + "version": "1.1.306", "private": true, "license": "MIT", "author": { From cdc8cfe143d7c664ff261676afd688e11ab599d9 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 2 May 2023 23:07:26 -0700 Subject: [PATCH 115/525] Added support for type narrowing of TypedDicts with `NotRequired` entries with map patterns that use a literal str key pattern. This addresses https://github.com/microsoft/pyright/issues/5056. --- .../src/analyzer/patternMatching.ts | 28 +++++++++++++++++++ .../src/analyzer/typeGuards.ts | 9 +----- .../src/tests/samples/match5.py | 22 +++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 2 +- 4 files changed, 52 insertions(+), 9 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index 204b97926..00869f9f9 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -50,10 +50,12 @@ import { isNever, isNoneInstance, isSameWithoutLiteralValue, + isTypeSame, isUnknown, NeverType, Type, TypeBase, + TypedDictEntry, UnknownType, } from './types'; import { @@ -477,6 +479,32 @@ function narrowTypeBasedOnMappingPattern( /* isPositiveTest */ true ); if (!isNever(narrowedValueType)) { + // If this is a "NotRequired" entry that has not yet been demonstrated + // to be present, we can mark it as "provided" at this point. + if ( + !valueEntry.isRequired && + !valueEntry.isProvided && + isTypeSame(mappingSubtypeInfo.subtype, mappingSubtypeInfo.typedDict!) + ) { + const newNarrowedEntriesMap = new Map( + mappingSubtypeInfo.typedDict!.typedDictNarrowedEntries ?? [] + ); + newNarrowedEntriesMap.set(keySubtype.literalValue as string, { + valueType: valueEntry.valueType, + isRequired: false, + isProvided: true, + }); + + // Clone the TypedDict object with the new entries. + mappingSubtypeInfo.subtype = ClassType.cloneAsInstance( + ClassType.cloneForNarrowedTypedDictEntries( + ClassType.cloneAsInstantiable(mappingSubtypeInfo.typedDict!), + newNarrowedEntriesMap + ) + ); + mappingSubtypeInfo.typedDict = mappingSubtypeInfo.subtype; + } + return narrowedValueType; } } diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 869fdb391..8325edb8c 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -1810,14 +1810,7 @@ function narrowTypeForTypedDictKey( return subtype; } - const oldNarrowedEntriesMap = subtype.typedDictNarrowedEntries; - const newNarrowedEntriesMap = new Map(); - if (oldNarrowedEntriesMap) { - // Copy the old entries. - oldNarrowedEntriesMap.forEach((value, key) => { - newNarrowedEntriesMap.set(key, value); - }); - } + const newNarrowedEntriesMap = new Map(subtype.typedDictNarrowedEntries ?? []); // Add the new entry. newNarrowedEntriesMap.set(literalKey.literalValue as string, { diff --git a/packages/pyright-internal/src/tests/samples/match5.py b/packages/pyright-internal/src/tests/samples/match5.py index 37ce041b4..d889f31b0 100644 --- a/packages/pyright-internal/src/tests/samples/match5.py +++ b/packages/pyright-internal/src/tests/samples/match5.py @@ -111,3 +111,25 @@ def test_negative_narrowing2(value: StrValue | ComplexValue) -> None: reveal_type(value, expected_text="ComplexValue") case _: reveal_type(value, expected_text="Never") + + +class TD1(TypedDict): + v1: NotRequired[int] + v2: NotRequired[int] + v3: NotRequired[int] + + +def test_not_required_narrowing(subj: TD1) -> None: + match subj: + case {"v1": _}: + print(subj["v1"]) + + # This should generate an error. + print(subj["v2"]) + + case {"v2": 1, "v3": 2}: + # This should generate an error. + print(subj["v1"]) + + print(subj["v2"]) + print(subj["v3"]) diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index ce5cad300..2083b5787 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1154,7 +1154,7 @@ test('Match5', () => { configOptions.defaultPythonVersion = PythonVersion.V3_10; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match5.py'], configOptions); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 2); }); test('Match6', () => { From 009aef317beff2b91768e85eee175e32113d7c4a Mon Sep 17 00:00:00 2001 From: Rich Chiodo Date: Wed, 3 May 2023 10:54:00 -0700 Subject: [PATCH 116/525] Push pylance changes to pyright (#5066) --- package-lock.json | 18622 ++++++++++------ package.json | 16 +- packages/pyright-internal/package-lock.json | 50 +- packages/pyright-internal/package.json | 6 +- .../src/analyzer/importStatementUtils.ts | 4 +- .../pyright-internal/src/analyzer/program.ts | 835 +- .../pyright-internal/src/analyzer/service.ts | 52 +- .../src/analyzer/sourceFile.ts | 30 +- .../src/analyzer/sourceFileInfoUtils.ts | 14 +- .../src/common/extensibility.ts | 3 +- .../pyright-internal/src/common/pathUtils.ts | 24 +- .../src/common/workspaceEditUtils.ts | 16 +- .../src/languageServerBase.ts | 49 +- .../languageService/callHierarchyProvider.ts | 12 +- .../src/languageService/completionProvider.ts | 44 +- .../documentHighlightProvider.ts | 2 +- .../documentSymbolCollector.ts | 31 +- .../src/languageService/hoverProvider.ts | 77 +- .../src/languageService/indentationUtils.ts | 958 - .../languageService/insertionPointUtils.ts | 181 - .../src/languageService/referencesProvider.ts | 70 +- .../languageService/renameModuleProvider.ts | 1405 -- .../src/languageService/renameProvider.ts | 208 + .../src/localization/localize.ts | 15 - .../src/localization/package.nls.en-us.json | 5 - .../src/tests/documentSymbolCollector.test.ts | 7 +- .../src/tests/fourslash/fourslash.ts | 8 +- .../missingTypeStub.codeAction.fourslash.ts | 2 +- .../src/tests/harness/fourslash/testState.ts | 36 +- .../src/tests/indentationUtils.ptvs.test.ts | 388 - .../tests/indentationUtils.reindent.test.ts | 455 - .../src/tests/indentationUtils.test.ts | 606 - .../src/tests/insertionPointUtils.test.ts | 189 - .../src/tests/moveSymbol.importAdder.test.ts | 340 - .../src/tests/moveSymbol.insertion.test.ts | 625 - .../src/tests/moveSymbol.misc.test.ts | 206 - .../tests/moveSymbol.updateReference.test.ts | 1210 - .../src/tests/renameModule.folder.test.ts | 261 - .../tests/renameModule.fromImports.test.ts | 952 - .../src/tests/renameModule.imports.test.ts | 450 - .../src/tests/renameModule.misc.test.ts | 765 - .../tests/renameModule.relativePath.test.ts | 277 - .../src/tests/renameModuleTestUtils.ts | 137 - .../src/tests/testStateUtils.ts | 43 +- packages/pyright/package-lock.json | 518 +- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 518 +- packages/vscode-pyright/package.json | 2 +- 48 files changed, 12416 insertions(+), 18310 deletions(-) delete mode 100644 packages/pyright-internal/src/languageService/indentationUtils.ts delete mode 100644 packages/pyright-internal/src/languageService/insertionPointUtils.ts delete mode 100644 packages/pyright-internal/src/languageService/renameModuleProvider.ts create mode 100644 packages/pyright-internal/src/languageService/renameProvider.ts delete mode 100644 packages/pyright-internal/src/tests/indentationUtils.ptvs.test.ts delete mode 100644 packages/pyright-internal/src/tests/indentationUtils.reindent.test.ts delete mode 100644 packages/pyright-internal/src/tests/indentationUtils.test.ts delete mode 100644 packages/pyright-internal/src/tests/insertionPointUtils.test.ts delete mode 100644 packages/pyright-internal/src/tests/moveSymbol.importAdder.test.ts delete mode 100644 packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts delete mode 100644 packages/pyright-internal/src/tests/moveSymbol.misc.test.ts delete mode 100644 packages/pyright-internal/src/tests/moveSymbol.updateReference.test.ts delete mode 100644 packages/pyright-internal/src/tests/renameModule.folder.test.ts delete mode 100644 packages/pyright-internal/src/tests/renameModule.fromImports.test.ts delete mode 100644 packages/pyright-internal/src/tests/renameModule.imports.test.ts delete mode 100644 packages/pyright-internal/src/tests/renameModule.misc.test.ts delete mode 100644 packages/pyright-internal/src/tests/renameModule.relativePath.test.ts delete mode 100644 packages/pyright-internal/src/tests/renameModuleTestUtils.ts diff --git a/package-lock.json b/package-lock.json index d17e262c4..b71b63c40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,19 +10,19 @@ "@types/glob": "^7.2.0", "@types/node": "^17.0.45", "@types/yargs": "^16.0.5", - "@typescript-eslint/eslint-plugin": "^5.54.0", - "@typescript-eslint/parser": "^5.54.0", + "@typescript-eslint/eslint-plugin": "^5.59.2", + "@typescript-eslint/parser": "^5.59.2", "detect-indent": "^6.1.0", - "eslint": "^8.35.0", - "eslint-config-prettier": "^8.6.0", + "eslint": "^8.39.0", + "eslint-config-prettier": "^8.8.0", "eslint-plugin-simple-import-sort": "^7.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", - "lerna": "^6.5.1", - "npm-check-updates": "^16.7.10", + "lerna": "^6.6.1", + "npm-check-updates": "^16.10.9", "p-queue": "^6.6.2", - "prettier": "2.8.4", - "syncpack": "^9.8.4", + "prettier": "2.8.8", + "syncpack": "^9.8.6", "typescript": "~4.4.4", "yargs": "^16.2.0" } @@ -133,15 +133,49 @@ "node": ">=4" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -157,9 +191,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", + "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -219,10 +253,22 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, + "node_modules/@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.25.16" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@lerna/child-process": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.5.1.tgz", - "integrity": "sha512-QfyleXSD9slh4qM54wDaqKVPvtUH1NJMgsFc9BabqSHO1Ttpandv1EAvTCN9Lu73RbCX3LJpn+BfJmnjHbjCyw==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.1.tgz", + "integrity": "sha512-yUCDCcRNNbI9UUsUB6FYEmDHpo5Tn/f0q5D7vhDP4i6Or8kBj82y7+e31hwfLvK2ykOYlDVs2MxAluH/+QUBOQ==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -234,12 +280,12 @@ } }, "node_modules/@lerna/create": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.5.1.tgz", - "integrity": "sha512-ejERJnfA36jEuKrfM+94feLiyf2/hF2NoG923N0rE4rsmvRFPr1XLVPvAKleXW+Gdi/t1p410lJ7NKaLRMYCYw==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.1.tgz", + "integrity": "sha512-GDmHFhQ0mr0RcXWXrsLyfMV6ch/dZV/Ped1e6sFVQhsLL9P+FFXX1ZWxa/dQQ90VWF2qWcmK0+S/L3kUz2xvTA==", "dev": true, "dependencies": { - "@lerna/child-process": "6.5.1", + "@lerna/child-process": "6.6.1", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "init-package-json": "^3.0.2", @@ -257,190 +303,229 @@ "node": "^14.15.0 || >=16.0.0" } }, - "node_modules/@mobily/ts-belt": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/@mobily/ts-belt/-/ts-belt-3.13.1.tgz", - "integrity": "sha512-K5KqIhPI/EoCTbA6CGbrenM9s41OouyK8A03fGJJcla/zKucsgLbz8HNbeseoLarRPgyWJsUyCYqFhI7t3Ra9Q==", + "node_modules/@lerna/legacy-package-management": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.1.tgz", + "integrity": "sha512-0EYxSFr34VgeudA5rvjGJSY7s4seITMVB7AJ9LRFv9QDUk6jpvapV13ZAaKnhDTxX5vNCfnJuWHXXWq0KyPF/Q==", "dev": true, + "dependencies": { + "@npmcli/arborist": "6.2.3", + "@npmcli/run-script": "4.1.7", + "@nrwl/devkit": ">=15.5.2 < 16", + "@octokit/rest": "19.0.3", + "byte-size": "7.0.0", + "chalk": "4.1.0", + "clone-deep": "4.0.1", + "cmd-shim": "5.0.0", + "columnify": "1.6.0", + "config-chain": "1.1.12", + "conventional-changelog-core": "4.2.4", + "conventional-recommended-bump": "6.1.0", + "cosmiconfig": "7.0.0", + "dedent": "0.7.0", + "dot-prop": "6.0.1", + "execa": "5.0.0", + "file-url": "3.0.0", + "find-up": "5.0.0", + "fs-extra": "9.1.0", + "get-port": "5.1.1", + "get-stream": "6.0.0", + "git-url-parse": "13.1.0", + "glob-parent": "5.1.2", + "globby": "11.1.0", + "graceful-fs": "4.2.10", + "has-unicode": "2.0.1", + "inquirer": "8.2.4", + "is-ci": "2.0.0", + "is-stream": "2.0.0", + "libnpmpublish": "6.0.4", + "load-json-file": "6.2.0", + "make-dir": "3.1.0", + "minimatch": "3.0.5", + "multimatch": "5.0.0", + "node-fetch": "2.6.7", + "npm-package-arg": "8.1.1", + "npm-packlist": "5.1.1", + "npm-registry-fetch": "14.0.3", + "npmlog": "6.0.2", + "p-map": "4.0.0", + "p-map-series": "2.1.0", + "p-queue": "6.6.2", + "p-waterfall": "2.1.1", + "pacote": "13.6.2", + "pify": "5.0.0", + "pretty-format": "29.4.3", + "read-cmd-shim": "3.0.0", + "read-package-json": "5.0.1", + "resolve-from": "5.0.0", + "semver": "7.3.8", + "signal-exit": "3.0.7", + "slash": "3.0.0", + "ssri": "9.0.1", + "strong-log-transformer": "2.1.0", + "tar": "6.1.11", + "temp-dir": "1.0.0", + "tempy": "1.0.0", + "upath": "2.0.1", + "uuid": "8.3.2", + "write-file-atomic": "4.0.1", + "write-pkg": "4.0.0", + "yargs": "16.2.0" + }, "engines": { - "node": ">= 10.*" + "node": "^14.15.0 || >=16.0.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@lerna/legacy-package-management/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "semver": "^7.3.5" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@lerna/legacy-package-management/node_modules/cacache": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@lerna/legacy-package-management/node_modules/cacache/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@npmcli/arborist": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz", - "integrity": "sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==", + "node_modules/@lerna/legacy-package-management/node_modules/cacache/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.0", - "cacache": "^16.0.6", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" + "minipass": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/@lerna/legacy-package-management/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/@lerna/legacy-package-management/node_modules/config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "node_modules/@lerna/legacy-package-management/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" + "minipass": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", - "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "node_modules/@lerna/legacy-package-management/node_modules/fs-minipass/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "node_modules/@lerna/legacy-package-management/node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@lerna/legacy-package-management/node_modules/glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", "dev": true, "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" }, "bin": { - "installed-package-contents": "index.js" + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">= 10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/map-workspaces": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz", - "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==", + "node_modules/@lerna/legacy-package-management/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" + "is-glob": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 6" } }, - "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { + "node_modules/@lerna/legacy-package-management/node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", @@ -449,2536 +534,2613 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/@lerna/legacy-package-management/node_modules/glob/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/@lerna/legacy-package-management/node_modules/glob/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz", - "integrity": "sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==", + "node_modules/@lerna/legacy-package-management/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "dependencies": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" + "lru-cache": "^7.5.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "node_modules/@lerna/legacy-package-management/node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12.0.0" } }, - "node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", - "dev": true - }, - "node_modules/@npmcli/node-gyp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "node_modules/@lerna/legacy-package-management/node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@npmcli/package-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", - "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", + "node_modules/@lerna/legacy-package-management/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, "dependencies": { - "json-parse-even-better-errors": "^2.3.1" + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "node_modules/@lerna/legacy-package-management/node_modules/make-fetch-happen/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/legacy-package-management/node_modules/make-fetch-happen/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "dependencies": { - "infer-owner": "^1.0.4" + "minipass": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/run-script": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", - "integrity": "sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==", + "node_modules/@lerna/legacy-package-management/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/@nrwl/cli": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.7.1.tgz", - "integrity": "sha512-33RcH5Af2BidQvnTGlDTrUWJ6Eul5aA0LeqYmEavYb+I0kzYMqdBzBCLgQT/13gAdoQauTWUO4g3eFhoHnCNrg==", + "node_modules/@lerna/legacy-package-management/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, - "dependencies": { - "nx": "15.7.1" + "engines": { + "node": ">=8" } }, - "node_modules/@nrwl/devkit": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.7.1.tgz", - "integrity": "sha512-u+4iBukrvrSQbKktnAcEuFzthq5ZGLpjE+SYUgg5+H6R76U0uelupdJ14qTWzIbSjlWLG53YmRZsJaIJ9EUG/w==", + "node_modules/@lerna/legacy-package-management/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, "dependencies": { - "@phenomnomnominal/tsquery": "4.1.1", - "ejs": "^3.1.7", - "ignore": "^5.0.4", - "semver": "7.3.4", - "tslib": "^2.3.0" + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, - "peerDependencies": { - "nx": ">= 14.1 <= 16" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/@nrwl/devkit/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@lerna/legacy-package-management/node_modules/minipass-fetch/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@lerna/legacy-package-management/node_modules/npm-registry-fetch": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", + "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@nrwl/devkit/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "node_modules/@lerna/legacy-package-management/node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@nrwl/nx-darwin-arm64": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.7.1.tgz", - "integrity": "sha512-YaNq1kP0xoaG2SDTjAzc0ZXAzRHE4obnEtVbisMzGRJkMld7SiOzYZAoaLJI6mZJuc7cIzUlA+wFkE2e21q5tQ==", - "cpu": [ - "arm64" - ], + "node_modules/@lerna/legacy-package-management/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">= 10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@nrwl/nx-darwin-x64": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.7.1.tgz", - "integrity": "sha512-G/0joeAQfZm4FuqaDyOAam912EfVS6mlG1gFrzp3P/kzzE+gxt/I+iQHNmEOl8Dnp4ercTgW6epUEQ03teRLOA==", - "cpu": [ - "x64" - ], + "node_modules/@lerna/legacy-package-management/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@nrwl/nx-linux-arm-gnueabihf": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.7.1.tgz", - "integrity": "sha512-WeZndiNyAPolRc08C4LLY7y+b3g9wAsJVVTWugW9PyaTMD19KY6oFkNG5gg1W0InoGISazW5fUissE+911kgog==", - "cpu": [ - "arm" - ], + "node_modules/@lerna/legacy-package-management/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "unique-slug": "^4.0.0" + }, "engines": { - "node": ">= 10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@nrwl/nx-linux-arm64-gnu": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.7.1.tgz", - "integrity": "sha512-efDPQl2Z1YLnUlEKyu7lsvRnFIRXmvnbkH2nRv3HNHVufnHjjQ41UBw2Gqz4WUrEpmBz2Xq31cYUZluUP7/o6Q==", - "cpu": [ - "arm64" - ], + "node_modules/@lerna/legacy-package-management/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "imurmurhash": "^0.1.4" + }, "engines": { - "node": ">= 10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@nrwl/nx-linux-arm64-musl": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.7.1.tgz", - "integrity": "sha512-Esv+ko6vMrI0HLnIXs76up7zUCaDfjArgn2TfMxvPjDEp4qmExiI8gmSh5JM1kC0MkHb4HghCnsSQ86Gg1BRiQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/nx-linux-x64-gnu": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.7.1.tgz", - "integrity": "sha512-9ZkeCHhk+a3ok8CBEcbIheWrlp+gY1KdhmHOksJuDsHTcRMirbZ9HWm+/UIYB2FVaEENCBgcA4akwXRDaxrmYw==", - "cpu": [ - "x64" - ], + "node_modules/@lerna/legacy-package-management/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "builtins": "^5.0.0" + }, "engines": { - "node": ">= 10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@nrwl/nx-linux-x64-musl": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.7.1.tgz", - "integrity": "sha512-FOs8FhcACKfYjL5l/mIHUESs25KPsZsp3TWrpCYgQNkrvNV9lWbrQ+h9acWf23hR2FYVk7xKVo4wFYsUqF+DbA==", - "cpu": [ - "x64" - ], + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": ">= 10" + "node": ">= 8" } }, - "node_modules/@nrwl/nx-win32-arm64-msvc": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.7.1.tgz", - "integrity": "sha512-JEhy0ac+ivhIdAPWqEfAN9EqFznKA5vt4oVjIqjDysqgzN9GBKOeo7gphdii9WyqrIKEbOs1L++ADWXw1gev6Q==", - "cpu": [ - "arm64" - ], + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 10" + "node": ">= 8" } }, - "node_modules/@nrwl/nx-win32-x64-msvc": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.7.1.tgz", - "integrity": "sha512-GLh5TXKViRb55jBviZSZweavilUr2frmb/8iv3Fz7MPS6VvA+axIqNhuVcTJP1H3C/1yt3Nx5wwsXdWgg3mZpw==", - "cpu": [ - "x64" - ], + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, "engines": { - "node": ">= 10" + "node": ">= 8" } }, - "node_modules/@nrwl/tao": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.7.1.tgz", - "integrity": "sha512-pCKIijUGUAht+Lfy9P4WaHxTHnqqr+vaC00vX6XSlkRoFAUFYh7lhbOHDSKOwBG016ZoG73P1IIMg0um4ybd5w==", + "node_modules/@npmcli/arborist": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-6.2.3.tgz", + "integrity": "sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA==", "dev": true, "dependencies": { - "nx": "15.7.1" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^3.0.0", + "@npmcli/query": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^6.1.6", + "nopt": "^7.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", + "walk-up-path": "^1.0.0" }, "bin": { - "tao": "index.js" + "arborist": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/auth-token": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", - "integrity": "sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==", + "node_modules/@npmcli/arborist/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, "dependencies": { - "@octokit/types": "^9.0.0" + "semver": "^7.3.5" }, "engines": { - "node": ">= 14" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz", - "integrity": "sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==", + "node_modules/@npmcli/arborist/node_modules/@npmcli/git": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", + "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", "dev": true, "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" }, "engines": { - "node": ">= 14" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/endpoint": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", - "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "node_modules/@npmcli/arborist/node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "which": "^3.0.0" }, "engines": { - "node": ">= 14" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/graphql": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.5.tgz", - "integrity": "sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==", + "node_modules/@npmcli/arborist/node_modules/@npmcli/run-script": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.1.tgz", + "integrity": "sha512-Yi04ZSold8jcbBJD/ahKMJSQCQifH8DAbMwkBvoLaTpGFxzHC3B/5ZyoVR69q/4xedz84tvi9DJOJjNe17h+LA==", "dev": true, "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "universal-user-agent": "^6.0.0" + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" }, "engines": { - "node": ">= 14" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==", - "dev": true - }, - "node_modules/@octokit/plugin-enterprise-rest": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", - "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", - "dev": true - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz", - "integrity": "sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==", + "node_modules/@npmcli/arborist/node_modules/are-we-there-yet": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz", + "integrity": "sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw==", "dev": true, "dependencies": { - "@octokit/types": "^6.41.0" + "delegates": "^1.0.0", + "readable-stream": "^4.1.0" }, "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "dev": true - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "node_modules/@npmcli/arborist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^12.11.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "node_modules/@npmcli/arborist/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, - "peerDependencies": { - "@octokit/core": ">=3" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz", - "integrity": "sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==", + "node_modules/@npmcli/arborist/node_modules/cacache": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", "dev": true, "dependencies": { - "@octokit/types": "^8.1.1", - "deprecation": "^2.3.1" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=3" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", - "dev": true + "node_modules/@npmcli/arborist/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", - "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "node_modules/@npmcli/arborist/node_modules/gauge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", + "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^14.0.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/request": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", - "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "node_modules/@npmcli/arborist/node_modules/glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", "dev": true, "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">= 14" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "node_modules/@npmcli/arborist/node_modules/glob/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 14" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@octokit/rest": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.3.tgz", - "integrity": "sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==", + "node_modules/@npmcli/arborist/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "dependencies": { - "@octokit/core": "^4.0.0", - "@octokit/plugin-paginate-rest": "^3.0.0", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^6.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">= 14" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "node_modules/@npmcli/arborist/node_modules/ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@parcel/watcher": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", - "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "node_modules/@npmcli/arborist/node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, - "hasInstallScript": true, "dependencies": { - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 10.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@phenomnomnominal/tsquery": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", - "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", + "node_modules/@npmcli/arborist/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true, - "dependencies": { - "esquery": "^1.0.1" - }, - "peerDependencies": { - "typescript": "^3 || ^4" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@pnpm/network.ca-file": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", - "integrity": "sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==", + "node_modules/@npmcli/arborist/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, "dependencies": { - "graceful-fs": "4.2.10" + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" }, "engines": { - "node": ">=12.22.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@pnpm/npm-conf": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", - "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", + "node_modules/@npmcli/arborist/node_modules/minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", "dev": true, "dependencies": { - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@sindresorhus/is": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", - "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", + "node_modules/@npmcli/arborist/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "node": ">=8" } }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "node_modules/@npmcli/arborist/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, "dependencies": { - "defer-to-connect": "^2.0.1" + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=14.16" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/@npmcli/arborist/node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, "engines": { - "node": ">= 10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@tufjs/models": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.0.tgz", - "integrity": "sha512-RRMu4uMxWnZlxaIBxahSb2IssFZiu188sndesZflWOe1cA/qUqtemSIoBWbuVKPvvdktapImWNnKpBcc+VrCQw==", + "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "dependencies": { - "minimatch": "^6.1.0" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@npmcli/arborist/node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "node_modules/@npmcli/arborist/node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/npmlog": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "node_modules/@npmcli/arborist/node_modules/pacote": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.3.tgz", + "integrity": "sha512-aRts8cZqxiJVDitmAh+3z+FxuO3tLNWEmwDRPEpDDiZJaRz06clP4XX112ynMT5uF0QNoMPajBBHnaStUEPJXA==", "dev": true, "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "node_modules/@npmcli/arborist/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz", - "integrity": "sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==", + "node_modules/@npmcli/arborist/node_modules/read-package-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.2.tgz", + "integrity": "sha512-Ismd3km1d/FGzcjm8fBf/4ktkyd0t6pbkjYqu1gvRzOzN+aTxi1eigdZp7441TlszQ+GsdYezgS+g9cgy8QK9w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/type-utils": "5.54.0", - "@typescript-eslint/utils": "5.54.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.54.0.tgz", - "integrity": "sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==", + "node_modules/@npmcli/arborist/node_modules/readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/typescript-estree": "5.54.0", - "debug": "^4.3.4" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz", - "integrity": "sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==", + "node_modules/@npmcli/arborist/node_modules/signal-exit": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", + "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/visitor-keys": "5.54.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.54.0.tgz", - "integrity": "sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==", + "node_modules/@npmcli/arborist/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.54.0", - "@typescript-eslint/utils": "5.54.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "minipass": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.54.0.tgz", - "integrity": "sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==", + "node_modules/@npmcli/arborist/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "unique-slug": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz", - "integrity": "sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==", + "node_modules/@npmcli/arborist/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/visitor-keys": "5.54.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "imurmurhash": "^0.1.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.54.0.tgz", - "integrity": "sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==", + "node_modules/@npmcli/arborist/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/typescript-estree": "5.54.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" + "builtins": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz", - "integrity": "sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==", + "node_modules/@npmcli/arborist/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.54.0", - "eslint-visitor-keys": "^3.3.0" + "isexe": "^2.0.0" }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "bin": { + "node-which": "bin/which.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.39", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.39.tgz", - "integrity": "sha512-BsD4zq3EVmaHqlynXTceNuEFAtrfToV4fI9GA54moKlWZL4Eb2eXrhgf1jV2nMYx18SZxYO4Jc5Kf1sCDNRjOg==", + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" }, "engines": { - "node": ">=14.15.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@yarnpkg/parsers/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/@npmcli/git/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "lru-cache": "^7.5.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", - "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "node_modules/@npmcli/git/node_modules/npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "semver": "^7.1.1" }, "engines": { - "node": ">=0.4.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/@npmcli/git/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", - "dev": true - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/@npmcli/git/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, "dependencies": { - "debug": "4" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "node_modules/@npmcli/git/node_modules/npm-pick-manifest": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", + "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", "dev": true, "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^2.0.0", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" }, "engines": { - "node": ">= 8.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@npmcli/map-workspaces": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", + "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" + "balanced-match": "^1.0.0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@npmcli/map-workspaces/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@npmcli/metavuln-calculator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz", + "integrity": "sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", + "semver": "^7.3.5" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/git": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", + "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, + "dependencies": { + "which": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/run-script": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.1.tgz", + "integrity": "sha512-Yi04ZSold8jcbBJD/ahKMJSQCQifH8DAbMwkBvoLaTpGFxzHC3B/5ZyoVR69q/4xedz84tvi9DJOJjNe17h+LA==", "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "node_modules/@npmcli/metavuln-calculator/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/axios": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", - "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "node_modules/@npmcli/metavuln-calculator/node_modules/cacache": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", "dev": true, "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true - }, - "node_modules/bin-links": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz", - "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==", + "node_modules/@npmcli/metavuln-calculator/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, "dependencies": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" + "minipass": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/bin-links/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "node_modules/@npmcli/metavuln-calculator/node_modules/glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/@npmcli/metavuln-calculator/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/boxen": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", - "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", + "node_modules/@npmcli/metavuln-calculator/node_modules/ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", "dev": true, "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.0", - "chalk": "^5.0.1", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.0.1" + "minimatch": "^9.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@npmcli/metavuln-calculator/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@npmcli/metavuln-calculator/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/boxen/node_modules/camelcase": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", - "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", + "node_modules/@npmcli/metavuln-calculator/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=14.16" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", - "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", + "node_modules/@npmcli/metavuln-calculator/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@npmcli/metavuln-calculator/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/@npmcli/metavuln-calculator/node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/boxen/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/@npmcli/metavuln-calculator/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, - "engines": { - "node": ">=12.20" + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", - "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", + "node_modules/@npmcli/metavuln-calculator/node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ignore-walk": "^6.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@npmcli/metavuln-calculator/node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.3.tgz", + "integrity": "sha512-aRts8cZqxiJVDitmAh+3z+FxuO3tLNWEmwDRPEpDDiZJaRz06clP4XX112ynMT5uF0QNoMPajBBHnaStUEPJXA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, - "dependencies": { - "semver": "^7.0.0" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/byte-size": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz", - "integrity": "sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==", + "node_modules/@npmcli/metavuln-calculator/node_modules/read-package-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.2.tgz", + "integrity": "sha512-Ismd3km1d/FGzcjm8fBf/4ktkyd0t6pbkjYqu1gvRzOzN+aTxi1eigdZp7441TlszQ+GsdYezgS+g9cgy8QK9w==", "dev": true, + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "node_modules/@npmcli/metavuln-calculator/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" + "minipass": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@npmcli/metavuln-calculator/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacache/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "node_modules/@npmcli/metavuln-calculator/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "imurmurhash": "^0.1.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "node_modules/@npmcli/metavuln-calculator/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "builtins": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "node_modules/@npmcli/metavuln-calculator/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, "engines": { - "node": ">=14.16" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacheable-request": { - "version": "10.2.7", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.7.tgz", - "integrity": "sha512-I4SA6mKgDxcxVbSt/UmIkb9Ny8qSkg6ReBHtAAXnZHk7KOSx5g3DTiAOaYzcHCs6oOdHn+bip9T48E6tMvK9hw==", + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "dependencies": { - "@types/http-cache-semantics": "^4.0.1", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.2", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=14.16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", "dev": true, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/@npmcli/package-json": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-3.0.0.tgz", + "integrity": "sha512-NnuPuM97xfiCpbTEJYtEuKz6CFbpUHtaT0+5via5pQeI25omvQDFbp1GcGJ/c4zvL/WX0qbde6YiLgfZbWFgvg==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "json-parse-even-better-errors": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "infer-owner": "^1.0.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/@npmcli/query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.0.tgz", + "integrity": "sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA==", "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/@npmcli/run-script": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", + "integrity": "sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "dev": true, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "node_modules/@npmcli/run-script/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/@npmcli/run-script/node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "dependencies": { - "colors": "1.0.3" + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" }, "engines": { - "node": ">= 0.2.0" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/@nrwl/cli": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.7.1.tgz", + "integrity": "sha512-33RcH5Af2BidQvnTGlDTrUWJ6Eul5aA0LeqYmEavYb+I0kzYMqdBzBCLgQT/13gAdoQauTWUO4g3eFhoHnCNrg==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" + "nx": "15.7.1" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/@nrwl/devkit": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.7.1.tgz", + "integrity": "sha512-u+4iBukrvrSQbKktnAcEuFzthq5ZGLpjE+SYUgg5+H6R76U0uelupdJ14qTWzIbSjlWLG53YmRZsJaIJ9EUG/w==", "dev": true, "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "@phenomnomnominal/tsquery": "4.1.1", + "ejs": "^3.1.7", + "ignore": "^5.0.4", + "semver": "7.3.4", + "tslib": "^2.3.0" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "nx": ">= 14.1 <= 16" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/@nrwl/devkit/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/cmd-shim": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", - "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", + "node_modules/@nrwl/devkit/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "dependencies": { - "mkdirp-infer-owner": "^2.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@nrwl/nx-darwin-arm64": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.7.1.tgz", + "integrity": "sha512-YaNq1kP0xoaG2SDTjAzc0ZXAzRHE4obnEtVbisMzGRJkMld7SiOzYZAoaLJI6mZJuc7cIzUlA+wFkE2e21q5tQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=7.0.0" + "node": ">= 10" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "node_modules/@nrwl/nx-darwin-x64": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.7.1.tgz", + "integrity": "sha512-G/0joeAQfZm4FuqaDyOAam912EfVS6mlG1gFrzp3P/kzzE+gxt/I+iQHNmEOl8Dnp4ercTgW6epUEQ03teRLOA==", + "cpu": [ + "x64" + ], "dev": true, - "bin": { - "color-support": "bin.js" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "node_modules/@nrwl/nx-linux-arm-gnueabihf": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.7.1.tgz", + "integrity": "sha512-WeZndiNyAPolRc08C4LLY7y+b3g9wAsJVVTWugW9PyaTMD19KY6oFkNG5gg1W0InoGISazW5fUissE+911kgog==", + "cpu": [ + "arm" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.1.90" + "node": ">= 10" } }, - "node_modules/columnify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "node_modules/@nrwl/nx-linux-arm64-gnu": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.7.1.tgz", + "integrity": "sha512-efDPQl2Z1YLnUlEKyu7lsvRnFIRXmvnbkH2nRv3HNHVufnHjjQ41UBw2Gqz4WUrEpmBz2Xq31cYUZluUP7/o6Q==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8.0.0" + "node": ">= 10" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/@nrwl/nx-linux-arm64-musl": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.7.1.tgz", + "integrity": "sha512-Esv+ko6vMrI0HLnIXs76up7zUCaDfjArgn2TfMxvPjDEp4qmExiI8gmSh5JM1kC0MkHb4HghCnsSQ86Gg1BRiQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.8" + "node": ">= 10" } }, - "node_modules/commander": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", - "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + "node_modules/@nrwl/nx-linux-x64-gnu": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.7.1.tgz", + "integrity": "sha512-9ZkeCHhk+a3ok8CBEcbIheWrlp+gY1KdhmHOksJuDsHTcRMirbZ9HWm+/UIYB2FVaEENCBgcA4akwXRDaxrmYw==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14" + "node": ">= 10" } }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "dev": true - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "node_modules/@nrwl/nx-linux-x64-musl": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.7.1.tgz", + "integrity": "sha512-FOs8FhcACKfYjL5l/mIHUESs25KPsZsp3TWrpCYgQNkrvNV9lWbrQ+h9acWf23hR2FYVk7xKVo4wFYsUqF+DbA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/compare-func/node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/@nrwl/nx-win32-arm64-msvc": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.7.1.tgz", + "integrity": "sha512-JEhy0ac+ivhIdAPWqEfAN9EqFznKA5vt4oVjIqjDysqgzN9GBKOeo7gphdii9WyqrIKEbOs1L++ADWXw1gev6Q==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "node_modules/@nrwl/nx-win32-x64-msvc": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.7.1.tgz", + "integrity": "sha512-GLh5TXKViRb55jBviZSZweavilUr2frmb/8iv3Fz7MPS6VvA+axIqNhuVcTJP1H3C/1yt3Nx5wwsXdWgg3mZpw==", + "cpu": [ + "x64" + ], "dev": true, - "engines": [ - "node >= 6.0" + "optional": true, + "os": [ + "win32" ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "engines": { + "node": ">= 10" } }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "node_modules/@nrwl/tao": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.7.1.tgz", + "integrity": "sha512-pCKIijUGUAht+Lfy9P4WaHxTHnqqr+vaC00vX6XSlkRoFAUFYh7lhbOHDSKOwBG016ZoG73P1IIMg0um4ybd5w==", "dev": true, "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "nx": "15.7.1" + }, + "bin": { + "tao": "index.js" } }, - "node_modules/configstore": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "node_modules/@octokit/auth-token": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", + "integrity": "sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==", "dev": true, "dependencies": { - "dot-prop": "^6.0.1", - "graceful-fs": "^4.2.6", - "unique-string": "^3.0.0", - "write-file-atomic": "^3.0.3", - "xdg-basedir": "^5.0.1" + "@octokit/types": "^9.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/yeoman/configstore?sponsor=1" + "node": ">= 14" } }, - "node_modules/configstore/node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "node_modules/@octokit/core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz", + "integrity": "sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", - "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", + "node_modules/@octokit/endpoint": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", + "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "node_modules/conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "node_modules/@octokit/graphql": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.5.tgz", + "integrity": "sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==", "dev": true, "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "dev": true, - "engines": { - "node": ">=10" - } + "node_modules/@octokit/openapi-types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", + "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==", + "dev": true }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz", + "integrity": "sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==", "dev": true, "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" + "@octokit/types": "^6.41.0" }, "engines": { - "node": ">=10" + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" } }, - "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "dev": true }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "dev": true, "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, - "engines": { - "node": ">=10" + "@octokit/openapi-types": "^12.11.0" } }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@octokit/core": ">=3" } }, - "node_modules/conventional-recommended-bump": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", - "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz", + "integrity": "sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==", "dev": true, "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.3.4", - "conventional-commits-filter": "^2.0.7", - "conventional-commits-parser": "^3.2.0", - "git-raw-commits": "^2.0.8", - "git-semver-tags": "^4.1.1", - "meow": "^8.0.0", - "q": "^1.5.1" - }, - "bin": { - "conventional-recommended-bump": "cli.js" + "@octokit/types": "^8.1.1", + "deprecation": "^2.3.1" }, "engines": { - "node": ">=10" + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", "dev": true }, - "node_modules/cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", + "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@octokit/openapi-types": "^14.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", + "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/@octokit/request-error": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@octokit/types": "^9.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" }, "engines": { - "node": ">= 8" + "node": ">= 14" } }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "node_modules/@octokit/rest": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.3.tgz", + "integrity": "sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==", "dev": true, "dependencies": { - "type-fest": "^1.0.1" + "@octokit/core": "^4.0.0", + "@octokit/plugin-paginate-rest": "^3.0.0", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^6.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14" } }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/@octokit/types": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", + "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^16.0.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + }, "engines": { - "node": ">=10" + "node": ">= 10.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "node_modules/@phenomnomnominal/tsquery": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "esquery": "^1.0.1" + }, + "peerDependencies": { + "typescript": "^3 || ^4" } }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "optional": true, "engines": { - "node": "*" + "node": ">=14" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", + "integrity": "sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "graceful-fs": "4.2.10" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12.22.0" } }, - "node_modules/debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "node_modules/@pnpm/npm-conf": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", + "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", "dev": true, + "dependencies": { + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/@sigstore/protobuf-specs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz", + "integrity": "sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "node_modules/@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, + "node_modules/@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14.16" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10" } }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/@tufjs/models": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.3.tgz", + "integrity": "sha512-mkFEqqRisi13DmR5pX4x+Zk97EiU8djTtpNW1GeuX410y/raAsq/T3ZCjwoRIZ8/cIBfW0olK/sywlAiWevDVw==", "dev": true, + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^7.4.6" + }, "engines": { - "node": ">=4.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "balanced-match": "^1.0.0" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz", + "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==", "dev": true, "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/type-utils": "5.59.2", + "@typescript-eslint/utils": "5.59.2", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/@typescript-eslint/parser": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", + "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", "dev": true, "dependencies": { - "path-type": "^4.0.0" + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.2", + "debug": "^4.3.4" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", + "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2" }, "engines": { - "node": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz", + "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==", "dev": true, "dependencies": { - "is-obj": "^2.0.0" + "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/utils": "5.59.2", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "node_modules/@typescript-eslint/types": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", + "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", + "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", "dev": true, "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "node_modules/@typescript-eslint/utils": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz", + "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.2", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", + "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", "dev": true, - "optional": true, "dependencies": { - "iconv-lite": "^0.6.2" + "@typescript-eslint/types": "5.59.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.39", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.39.tgz", + "integrity": "sha512-BsD4zq3EVmaHqlynXTceNuEFAtrfToV4fI9GA54moKlWZL4Eb2eXrhgf1jV2nMYx18SZxYO4Jc5Kf1sCDNRjOg==", "dev": true, - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.15.0" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { - "once": "^1.4.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=8.6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/@zkochan/js-yaml": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, "engines": { - "node": ">=6" + "node": ">=6.5" } }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { - "envinfo": "dist/cli.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=4" + "node": ">=0.4.0" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", "dev": true }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/escape-goat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", - "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { "node": ">=10" @@ -2987,676 +3149,609 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/eslint-config-prettier": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", - "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" + "dependencies": { + "color-convert": "^2.0.1" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint-plugin-simple-import-sort": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", - "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", - "dev": true, - "peerDependencies": { - "eslint": ">=5.0.0" - } + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/eslint-utils": { + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-differ": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": ">=8" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 4.0.0" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/axios": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", + "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", "dev": true, - "engines": { - "node": ">=4.0" + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "node_modules/bin-links": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz", + "integrity": "sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==", "dev": true, "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/bin-links/node_modules/cmd-shim": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", + "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/bin-links/node_modules/read-cmd-shim": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, "engines": { - "node": ">=0.10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/bin-links/node_modules/signal-exit": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", + "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "dependencies": { - "estraverse": "^5.2.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=4.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "engines": { - "node": ">=4.0" + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/boxen": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", + "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", "dev": true, + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.0", + "chalk": "^5.0.1", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/expect-more": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-more/-/expect-more-1.3.0.tgz", - "integrity": "sha512-HnXT5nJb9V3DMnr5RgA1TiKbu5kRaJ0GD1JkuhZvnr1Qe3HJq+ESnrcl/jmVUZ8Ycnl3Sp0OTYUhmO36d2+zow==", - "dev": true - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/boxen/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "node_modules/boxen/node_modules/camelcase": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", + "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, "engines": { - "node": ">=8.6.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-glob/node_modules/glob-parent": { + "node_modules/boxen/node_modules/chalk": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", + "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, "engines": { - "node": ">= 6" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", + "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "bin": { - "flat": "cli.js" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "semver": "^7.0.0" } }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "node_modules/byte-size": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz", + "integrity": "sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node": ">=10" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" }, "engines": { - "node": ">= 6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/form-data-encoder": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.3.tgz", - "integrity": "sha512-KqU0nnPMgIJcCOFTNJFEA8epcseEaoox4XZffTgy8jlI6pL/5EFyR54NRG7CnCJN0biY7q52DO3MH6/sJ/TKlQ==", + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "engines": { - "node": ">= 14.17" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/fp-and-or": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", - "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", + "node_modules/cacache/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, "engines": { - "node": ">= 8" + "node": ">=14.16" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "node_modules/cacheable-request": { + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.7.tgz", + "integrity": "sha512-I4SA6mKgDxcxVbSt/UmIkb9Ny8qSkg6ReBHtAAXnZHk7KOSx5g3DTiAOaYzcHCs6oOdHn+bip9T48E6tMvK9hw==", "dev": true, "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14.16" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=6" } }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" - }, "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-pkg-repo/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/get-pkg-repo/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/get-pkg-repo/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "engines": { + "node": ">=10" } }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, "engines": { "node": ">=10" @@ -3665,733 +3760,717 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "dev": true, "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" + "string-width": "^4.2.0" }, - "bin": { - "git-raw-commits": "cli.js" + "engines": { + "node": "10.* || >= 12.*" }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, "engines": { - "node": ">=10" + "node": ">= 10" } }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "engines": { - "node": ">=4" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/git-remote-origin-url/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/git-semver-tags/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/git-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", - "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "node_modules/cmd-shim": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", + "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", "dev": true, "dependencies": { - "is-ssh": "^1.4.0", - "parse-url": "^8.1.0" + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/git-url-parse": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", - "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "git-up": "^7.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "dependencies": { - "ini": "^1.3.2" + "bin": { + "color-support": "bin.js" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8.0.0" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.8" } }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14" } }, - "node_modules/global-dirs/node_modules/ini": { + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true + }, + "node_modules/compare-func": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/compare-func/node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "is-obj": "^2.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, + "engines": [ + "node >= 6.0" + ], "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "node_modules/got": { - "version": "12.5.2", - "resolved": "https://registry.npmjs.org/got/-/got-12.5.2.tgz", - "integrity": "sha512-guHGMSEcsA5m1oPRweXUJnug0vuvlkX9wx5hzOka+ZBrBUOJHU0Z1JcNu3QE5IPGnA5aXUsQHdWOD4eJg9/v3A==", + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.1", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" }, "engines": { - "node": ">=14.16" + "node": ">=12" }, "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "url": "https://github.com/yeoman/configstore?sponsor=1" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "node_modules/configstore/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "node_modules/conventional-changelog-angular": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", + "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", "dev": true, "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "compare-func": "^2.0.0", + "q": "^1.5.1" }, "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "node": ">=10" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, "engines": { - "node": ">= 0.4.0" + "node": ">=10" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", "dev": true, + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "node_modules/has-yarn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", - "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" }, "engines": { "node": ">=10" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/http2-wrapper": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", - "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/http2-wrapper/node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 8" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, "engines": { - "node": ">=10.17.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, - "dependencies": { - "ms": "^2.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true, "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, "engines": { - "node": ">=0.8.19" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/init-package-json": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", - "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, - "dependencies": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/init-package-json/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/init-package-json/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inquirer": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, "engines": { - "node": ">=12.0.0" + "node": ">=0.4.0" } }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">= 0.6" } }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, - "bin": { - "is-docker": "cli.js" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dev": true, "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "is-obj": "^2.0.0" }, "engines": { "node": ">=10" @@ -4400,118 +4479,153 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, - "node_modules/is-npm": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", - "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, - "engines": { - "node": ">=0.12.0" + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/is-ssh": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", - "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "protocols": "^2.0.1" + "is-arrayish": "^0.2.1" } }, - "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "dev": true, - "dependencies": { - "text-extensions": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { "node": ">=10" @@ -4520,394 +4634,308 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/eslint": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", + "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.39.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-yarn-global": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.0.tgz", - "integrity": "sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA==", + "node_modules/eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, - "engines": { - "node": ">=12" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/eslint-plugin-simple-import-sort": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", + "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "eslint": ">=5.0.0" } }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=10" + "node": ">=8.0.0" } }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true, - "dependencies": { - "argparse": "^2.0.1" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-parse-helpfulerror": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", - "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", "dev": true, "dependencies": { - "jju": "^1.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "node_modules/json-stringify-nice": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", - "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "node_modules/espree": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://opencollective.com/eslint" } }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "bin": { - "json5": "lib/cli.js" + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "estraverse": "^5.1.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=0.10" } }, - "node_modules/jsonlines": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", - "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==", - "dev": true - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "engines": [ - "node >= 0.2.0" - ] + "engines": { + "node": ">=4.0" + } }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" + "estraverse": "^5.2.0" }, "engines": { - "node": "*" + "node": ">=4.0" } }, - "node_modules/just-diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.2.0.tgz", - "integrity": "sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==", - "dev": true - }, - "node_modules/just-diff-apply": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", - "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", - "dev": true + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "json-buffer": "3.0.1" + "engines": { + "node": ">=4.0" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/latest-version": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", - "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "dependencies": { - "package-json": "^8.1.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/lerna": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.5.1.tgz", - "integrity": "sha512-Va1bysubwWdoWZ1ncKcoTGBXNAu/10/TwELb550TTivXmEWjCCdek4eX0BNLTEYKxu3tpV2UEeqVisUiWGn4WA==", + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "dependencies": { - "@lerna/child-process": "6.5.1", - "@lerna/create": "6.5.1", - "@npmcli/arborist": "5.3.0", - "@npmcli/run-script": "4.1.7", - "@nrwl/devkit": ">=15.5.2 < 16", - "@octokit/plugin-enterprise-rest": "6.0.1", - "@octokit/rest": "19.0.3", - "byte-size": "7.0.0", - "chalk": "4.1.0", - "clone-deep": "4.0.1", - "cmd-shim": "5.0.0", - "columnify": "1.6.0", - "config-chain": "1.1.12", - "conventional-changelog-angular": "5.0.12", - "conventional-changelog-core": "4.2.4", - "conventional-recommended-bump": "6.1.0", - "cosmiconfig": "7.0.0", - "dedent": "0.7.0", - "dot-prop": "6.0.1", - "envinfo": "^7.7.4", - "execa": "5.0.0", - "fs-extra": "9.1.0", - "get-port": "5.1.1", - "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", - "globby": "11.1.0", - "graceful-fs": "4.2.10", - "has-unicode": "2.0.1", - "import-local": "^3.0.2", - "init-package-json": "3.0.2", - "inquirer": "^8.2.4", - "is-ci": "2.0.0", - "is-stream": "2.0.0", - "js-yaml": "^4.1.0", - "libnpmaccess": "6.0.3", - "libnpmpublish": "6.0.4", - "load-json-file": "6.2.0", - "make-dir": "3.1.0", - "minimatch": "3.0.5", - "multimatch": "5.0.0", - "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "13.3.0", - "npmlog": "^6.0.2", - "nx": ">=15.5.2 < 16", - "p-map": "4.0.0", - "p-map-series": "2.1.0", - "p-pipe": "3.1.0", - "p-queue": "6.6.2", - "p-reduce": "2.1.0", - "p-waterfall": "2.1.1", - "pacote": "13.6.1", - "path-exists": "4.0.0", - "pify": "5.0.0", - "read-cmd-shim": "3.0.0", - "read-package-json": "5.0.1", - "resolve-from": "5.0.0", - "rimraf": "^3.0.2", - "semver": "7.3.4", - "signal-exit": "3.0.7", - "slash": "3.0.0", - "ssri": "9.0.1", - "strong-log-transformer": "2.1.0", - "tar": "6.1.11", - "temp-dir": "1.0.0", - "typescript": "^3 || ^4", - "upath": "^2.0.1", - "uuid": "8.3.2", - "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "4.0.0", - "write-file-atomic": "4.0.1", - "write-pkg": "4.0.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4" - }, - "bin": { - "lerna": "dist/cli.js" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": "^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/lerna/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, - "node_modules/lerna/node_modules/config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/lerna/node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true, - "engines": { - "node": ">=10" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8.6.0" } }, - "node_modules/lerna/node_modules/glob-parent": { + "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", @@ -4919,438 +4947,380 @@ "node": ">= 6" } }, - "node_modules/lerna/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "reusify": "^1.0.4" } }, - "node_modules/lerna/node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": "*" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lerna/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/lerna/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/file-url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", + "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/libnpmaccess": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.3.tgz", - "integrity": "sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "minimatch": "^5.0.1" } }, - "node_modules/libnpmaccess/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/libnpmaccess/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/libnpmpublish": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.4.tgz", - "integrity": "sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg==", - "dev": true, - "dependencies": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.3.7", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/libnpmpublish/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "to-regex-range": "^5.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/libnpmpublish/node_modules/normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/libnpmpublish/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "bin": { + "flat": "cli.js" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", - "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^5.0.0", - "strip-bom": "^4.0.0", - "type-fest": "^0.6.0" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/load-json-file/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=10" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", + "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, "engines": { - "node": ">=12" + "node": ">= 6" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/form-data-encoder": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.3.tgz", + "integrity": "sha512-KqU0nnPMgIJcCOFTNJFEA8epcseEaoox4XZffTgy8jlI6pL/5EFyR54NRG7CnCJN0biY7q52DO3MH6/sJ/TKlQ==", "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14.17" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/fp-and-or": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", + "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=10" } }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "minipass": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 8" } }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/meow/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/get-pkg-repo/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "safe-buffer": "~5.1.0" } }, - "node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, "engines": { "node": ">=8" }, @@ -5358,49 +5328,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { "node": ">=10" @@ -5409,273 +5352,359 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", "dev": true, + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" }, "engines": { - "node": ">=8.6" + "node": ">=4" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "engines": { - "node": ">=6" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/git-url-parse": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", + "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "git-up": "^7.0.0" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "ini": "^1.3.2" } }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "ini": "2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "type-fest": "^0.20.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" }, - "optionalDependencies": { - "encoding": "^0.1.13" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "node_modules/got": { + "version": "12.5.2", + "resolved": "https://registry.npmjs.org/got/-/got-12.5.2.tgz", + "integrity": "sha512-guHGMSEcsA5m1oPRweXUJnug0vuvlkX9wx5hzOka+ZBrBUOJHU0Z1JcNu3QE5IPGnA5aXUsQHdWOD4eJg9/v3A==", "dev": true, "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.1", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=8" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "function-bind": "^1.1.1" }, "engines": { - "node": ">= 8" + "node": ">= 0.4.0" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "lru-cache": "^6.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, - "node_modules/multimatch": { + "node_modules/http-proxy-agent": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", - "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "dependencies": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", + "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/http2-wrapper/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, "engines": { "node": ">=10" }, @@ -5683,1226 +5712,1167 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/multimatch/node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/multimatch/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=10.17.0" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "ms": "^2.0.0" } }, - "node_modules/node-gyp": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", - "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": ">=0.10.0" } }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" } }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "node_modules/ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" + "minimatch": "^5.0.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" + "balanced-match": "^1.0.0" } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=14.16" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/npm-check-updates": { - "version": "16.7.10", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.7.10.tgz", - "integrity": "sha512-sLDgYD8ebkH9Jd6mPIq7UDGLr3DAxkHl6ZuJrEF4rauLv6DqHBxtnF16MHUPN+/eBt5QbH4GL/+nxfSAFm3TfQ==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "chalk": "^5.2.0", - "cli-table": "^0.3.11", - "commander": "^10.0.0", - "fast-memoize": "^2.5.2", - "find-up": "5.0.0", - "fp-and-or": "^0.1.3", - "get-stdin": "^8.0.0", - "globby": "^11.0.4", - "hosted-git-info": "^5.1.0", - "ini": "^3.0.1", - "json-parse-helpfulerror": "^1.0.3", - "jsonlines": "^0.1.1", - "lodash": "^4.17.21", - "minimatch": "^7.0.1", - "p-map": "^4.0.0", - "pacote": "15.1.1", - "parse-github-url": "^1.0.2", - "progress": "^2.0.3", - "prompts-ncu": "^2.5.1", - "rc-config-loader": "^4.1.2", - "remote-git-tags": "^3.0.0", - "rimraf": "^4.1.2", - "semver": "^7.3.8", - "semver-utils": "^1.1.4", - "source-map-support": "^0.5.21", - "spawn-please": "^2.0.1", - "strip-json-comments": "^5.0.0", - "untildify": "^4.0.0", - "update-notifier": "^6.0.2", - "yaml": "^2.2.1" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { - "ncu": "build/src/bin/cli.js", - "npm-check-updates": "build/src/bin/cli.js" + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=14.14" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.8.19" } }, - "node_modules/npm-check-updates/node_modules/@npmcli/git": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.3.tgz", - "integrity": "sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "lib/index.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/npm-check-updates/node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "node_modules/npm-check-updates/node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/init-package-json": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", + "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", "dev": true, "dependencies": { - "which": "^3.0.0" + "npm-package-arg": "^9.0.1", + "promzard": "^0.3.0", + "read": "^1.0.7", + "read-package-json": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-check-updates/node_modules/@npmcli/run-script": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.0.tgz", - "integrity": "sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==", + "node_modules/init-package-json/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-check-updates/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/init-package-json/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-check-updates/node_modules/cacache": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", - "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", + "node_modules/inquirer": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", "dev": true, "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^8.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12.0.0" } }, - "node_modules/npm-check-updates/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true }, - "node_modules/npm-check-updates/node_modules/fs-minipass": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", - "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "dependencies": { - "minipass": "^4.0.0" + "ci-info": "^2.0.0" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/npm-check-updates/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm-check-updates/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/ignore-walk": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.1.tgz", - "integrity": "sha512-/c8MxUAqpRccq+LyDOecwF+9KqajueJHh8fz7g3YqjMZt+NSfJzx05zrKiXwa2sKwFCzaiZ5qUVfRj0pmxixEA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "minimatch": "^6.1.6" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm-check-updates/node_modules/ignore-walk/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/ini": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", - "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/make-fetch-happen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", - "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.12.0" } }, - "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz", - "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/minipass-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", - "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, - "dependencies": { - "minipass": "^4.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": ">=0.10.0" } }, - "node_modules/npm-check-updates/node_modules/normalize-package-data": { + "node_modules/is-plain-object": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm-check-updates/node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "protocols": "^2.0.1" } }, - "node_modules/npm-check-updates/node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^3.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/npm-install-checks": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.0.0.tgz", - "integrity": "sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==", + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, "dependencies": { - "semver": "^7.1.1" + "text-extensions": "^1.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm-check-updates/node_modules/npm-normalize-package-bin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, - "node_modules/npm-check-updates/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" + "node": ">=10" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "ignore-walk": "^6.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "node_modules/is-yarn-global": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.0.tgz", + "integrity": "sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA==", "dev": true, - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", - "semver": "^7.3.5" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/npm-check-updates/node_modules/npm-registry-fetch": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", - "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, - "node_modules/npm-check-updates/node_modules/pacote": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", - "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", - "dev": true, - "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^4.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "node_modules/npm-check-updates/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm-check-updates/node_modules/read-package-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.0.tgz", - "integrity": "sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==", + "node_modules/jackspeak": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.1.4.tgz", + "integrity": "sha512-7CGd4ZQu5M/FgQLlcgcsY858wf+ukg1ma5M95FACSfC54+88vm594Nv6C3NqWfk8wyK1u+E3SzvVsxr7bwONmg==", "dev": true, "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" + "cliui": "github:isaacs/cliui#isaacs/esm-cjs-consistency" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/npm-check-updates/node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "node_modules/jackspeak/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/npm-check-updates/node_modules/rimraf": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.1.2.tgz", - "integrity": "sha512-BlIbgFryTbw3Dz6hyoWFhKk+unCcHMSkZGrTFVAx2WmttdBSonsdtRlwiuTbDqTKr+UlXIUqJVS4QT5tUzGENQ==", + "node_modules/jackspeak/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm-check-updates/node_modules/ssri": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", - "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", + "node_modules/jackspeak/node_modules/cliui": { + "version": "8.0.1", + "resolved": "git+ssh://git@github.com/isaacs/cliui.git#9f97090165675fdda63a79c29bc36bb1033506b0", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^4.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/npm-check-updates/node_modules/strip-json-comments": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", - "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", + "node_modules/jackspeak/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/jackspeak/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=14.16" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "node_modules/jackspeak/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "dependencies": { - "unique-slug": "^4.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/npm-check-updates/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/jackspeak/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/npm-check-updates/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, "dependencies": { - "builtins": "^5.0.0" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/npm-check-updates/node_modules/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "dev": true, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "dependencies": { - "isexe": "^2.0.0" + "argparse": "^2.0.1" }, "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/npm-check-updates/node_modules/yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", - "dev": true, - "engines": { - "node": ">= 14" - } + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, - "node_modules/npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", "dev": true, "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "jju": "^1.1.0" } }, - "node_modules/npm-normalize-package-bin": { + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/npm-package-arg": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", - "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", + "node_modules/json-stringify-nice": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", "dev": true, - "dependencies": { - "hosted-git-info": "^3.0.6", - "semver": "^7.0.0", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm-package-arg/node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, - "node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/npm-package-arg/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=10" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "node_modules/jsonlines": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", + "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==", + "dev": true + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, - "dependencies": { - "builtins": "^1.0.3" - } + "engines": [ + "node >= 0.2.0" + ] }, - "node_modules/npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" }, "bin": { - "npm-packlist": "bin/index.js" + "JSONStream": "bin.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/npm-packlist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/just-diff": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", + "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==", + "dev": true + }, + "node_modules/just-diff-apply": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "json-buffer": "3.0.1" } }, - "node_modules/npm-packlist/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/npm-packlist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/npm-pick-manifest": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", - "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dev": true, "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "package-json": "^8.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-pick-manifest/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/lerna": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.1.tgz", + "integrity": "sha512-WJtrvmbmR+6hMB9b5pvsxJzew0lRL6hARgW/My9BM4vYaxwPIA2I0riv3qQu5Zd7lYse7FEqJkTnl9Kn1bXhLA==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true, + "@lerna/child-process": "6.6.1", + "@lerna/create": "6.6.1", + "@lerna/legacy-package-management": "6.6.1", + "@npmcli/arborist": "6.2.3", + "@npmcli/run-script": "4.1.7", + "@nrwl/devkit": ">=15.5.2 < 16", + "@octokit/plugin-enterprise-rest": "6.0.1", + "@octokit/rest": "19.0.3", + "byte-size": "7.0.0", + "chalk": "4.1.0", + "clone-deep": "4.0.1", + "cmd-shim": "5.0.0", + "columnify": "1.6.0", + "config-chain": "1.1.12", + "conventional-changelog-angular": "5.0.12", + "conventional-changelog-core": "4.2.4", + "conventional-recommended-bump": "6.1.0", + "cosmiconfig": "7.0.0", + "dedent": "0.7.0", + "dot-prop": "6.0.1", + "envinfo": "^7.7.4", + "execa": "5.0.0", + "fs-extra": "9.1.0", + "get-port": "5.1.1", + "get-stream": "6.0.0", + "git-url-parse": "13.1.0", + "glob-parent": "5.1.2", + "globby": "11.1.0", + "graceful-fs": "4.2.10", + "has-unicode": "2.0.1", + "import-local": "^3.0.2", + "init-package-json": "3.0.2", + "inquirer": "^8.2.4", + "is-ci": "2.0.0", + "is-stream": "2.0.0", + "js-yaml": "^4.1.0", + "libnpmaccess": "6.0.3", + "libnpmpublish": "6.0.4", + "load-json-file": "6.2.0", + "make-dir": "3.1.0", + "minimatch": "3.0.5", + "multimatch": "5.0.0", + "node-fetch": "2.6.7", + "npm-package-arg": "8.1.1", + "npm-packlist": "5.1.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^6.0.2", + "nx": ">=15.5.2 < 16", + "p-map": "4.0.0", + "p-map-series": "2.1.0", + "p-pipe": "3.1.0", + "p-queue": "6.6.2", + "p-reduce": "2.1.0", + "p-waterfall": "2.1.1", + "pacote": "13.6.2", + "pify": "5.0.0", + "read-cmd-shim": "3.0.0", + "read-package-json": "5.0.1", + "resolve-from": "5.0.0", + "rimraf": "^4.4.1", + "semver": "^7.3.8", + "signal-exit": "3.0.7", + "slash": "3.0.0", + "ssri": "9.0.1", + "strong-log-transformer": "2.1.0", + "tar": "6.1.11", + "temp-dir": "1.0.0", + "typescript": "^3 || ^4", + "upath": "^2.0.1", + "uuid": "8.3.2", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "4.0.0", + "write-file-atomic": "4.0.1", + "write-pkg": "4.0.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4" + }, + "bin": { + "lerna": "dist/cli.js" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, - "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/lerna/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz", - "integrity": "sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg==", + "node_modules/lerna/node_modules/cacache": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", "dev": true, "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/lerna/node_modules/cacache/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "minipass": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/lerna/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/lerna/node_modules/config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", "dev": true, "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "node_modules/lerna/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "minipass": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nx": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/nx/-/nx-15.7.1.tgz", - "integrity": "sha512-8Gtqazww3rCWxJ+pgB3JDU6hQeA+qRMYh77mXvf5CFQPszqEqvvuiJtKzcieWjxn/IZpeyVRjmPypkEOM6BbHw==", + "node_modules/lerna/node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true, - "hasInstallScript": true, - "dependencies": { - "@nrwl/cli": "15.7.1", - "@nrwl/tao": "15.7.1", - "@parcel/watcher": "2.0.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "^3.0.0-rc.18", - "@zkochan/js-yaml": "0.0.6", - "axios": "^1.0.0", - "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^7.0.2", - "dotenv": "~10.0.0", - "enquirer": "~2.3.6", - "fast-glob": "3.2.7", - "figures": "3.2.0", - "flat": "^5.0.2", - "fs-extra": "^11.1.0", - "glob": "7.1.4", - "ignore": "^5.0.4", - "js-yaml": "4.1.0", - "jsonc-parser": "3.2.0", - "lines-and-columns": "~2.0.3", - "minimatch": "3.0.5", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "semver": "7.3.4", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", - "v8-compile-cache": "2.3.0", - "yargs": "^17.6.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "bin/nx.js" - }, - "optionalDependencies": { - "@nrwl/nx-darwin-arm64": "15.7.1", - "@nrwl/nx-darwin-x64": "15.7.1", - "@nrwl/nx-linux-arm-gnueabihf": "15.7.1", - "@nrwl/nx-linux-arm64-gnu": "15.7.1", - "@nrwl/nx-linux-arm64-musl": "15.7.1", - "@nrwl/nx-linux-x64-gnu": "15.7.1", - "@nrwl/nx-linux-x64-musl": "15.7.1", - "@nrwl/nx-win32-arm64-msvc": "15.7.1", - "@nrwl/nx-win32-x64-msvc": "15.7.1" - }, - "peerDependencies": { - "@swc-node/register": "^1.4.2", - "@swc/core": "^1.2.173" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "node_modules/lerna/node_modules/glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/nx/node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "node_modules/lerna/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=14.14" + "node": ">= 6" } }, - "node_modules/nx/node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "node_modules/lerna/node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/lerna/node_modules/glob/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/nx/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/lerna/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">= 6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nx/node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "node_modules/lerna/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nx/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/lerna/node_modules/make-fetch-happen/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "minipass": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nx/node_modules/minimatch": { + "node_modules/lerna/node_modules/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", @@ -6914,375 +6884,287 @@ "node": "*" } }, - "node_modules/nx/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "node_modules/lerna/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/nx/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/lerna/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, "dependencies": { - "rimraf": "^3.0.0" + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=8.17.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/nx/node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "node_modules/lerna/node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": ">=12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nx/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "node_modules/lerna/node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, "engines": { - "node": ">=12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nx/node_modules/yargs/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/lerna/node_modules/npm-registry-fetch/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "builtins": "^5.0.0" }, "engines": { - "node": ">=12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/lerna/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, - "dependencies": { - "wrappy": "1" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/lerna/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/open": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz", - "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==", + "node_modules/lerna/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/lerna/node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "balanced-match": "^1.0.0" + } + }, + "node_modules/lerna/node_modules/rimraf/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "node_modules/lerna/node_modules/rimraf/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/lerna/node_modules/rimraf/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/p-cancelable": { + "node_modules/lerna/node_modules/unique-filename": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, "engines": { - "node": ">=12.20" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/lerna/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "imurmurhash": "^0.1.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map-series": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", - "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-pipe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", - "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "node_modules/libnpmaccess": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.3.tgz", + "integrity": "sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==", "dev": true, "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "node_modules/libnpmaccess/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "dependencies": { - "p-finally": "^1.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/p-waterfall": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", - "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "node_modules/libnpmaccess/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, "dependencies": { - "p-reduce": "^2.0.0" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/package-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", - "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", + "node_modules/libnpmpublish": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.4.tgz", + "integrity": "sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg==", "dev": true, "dependencies": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" + "normalize-package-data": "^4.0.0", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0", + "semver": "^7.3.7", + "ssri": "^9.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", + "node_modules/libnpmpublish/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" + "lru-cache": "^7.5.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pacote/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/libnpmpublish/node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pacote/node_modules/npm-package-arg": { + "node_modules/libnpmpublish/node_modules/npm-package-arg": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", @@ -7297,159 +7179,195 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", "dev": true, "dependencies": { - "callsites": "^3.0.0" + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/parse-conflict-json": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz", - "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==", + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^5.2.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "bin": { - "parse-github-url": "cli.js" + "dependencies": { + "p-locate": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-path": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", - "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", - "dev": true, - "dependencies": { - "protocols": "^2.0.0" - } - }, - "node_modules/parse-url": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", - "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", - "dev": true, - "dependencies": { - "parse-path": "^7.0.0" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "engines": { - "node": ">=8" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/find-up": { + "node_modules/meow/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", @@ -7462,7 +7380,13 @@ "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/locate-path": { + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/meow/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", @@ -7474,7 +7398,7 @@ "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/p-limit": { + "node_modules/meow/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", @@ -7489,7 +7413,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/p-locate": { + "node_modules/meow/node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", @@ -7501,1076 +7425,1044 @@ "node": ">=8" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/promise-all-reject-late": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", - "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/meow/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" } }, - "node_modules/promise-call-limit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", - "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, + "engines": { + "node": ">=10" + }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/prompts-ncu": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.1.tgz", - "integrity": "sha512-Hdd7GgV7b76Yh9FP9HL1D9xqtJCJdVPpiM2vDtuoc8W1KfweJe15gutFYmxkq83ViFaagFM8K0UcPCQ/tZq8bA==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "kleur": "^4.0.1", - "sisteransi": "^1.0.5" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/promzard": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", - "dev": true, - "dependencies": { - "read": "1" + "node": ">=8.6" } }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "node_modules/protocols": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", - "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", - "dev": true - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/pupa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "escape-goat": "^4.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "node": ">=6" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "brace-expansion": "^1.1.7" }, - "bin": { - "rc": "cli.js" + "engines": { + "node": "*" } }, - "node_modules/rc-config-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz", - "integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==", + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true, - "dependencies": { - "debug": "^4.3.4", - "js-yaml": "^4.1.0", - "json5": "^2.2.2", - "require-from-string": "^2.0.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "node_modules/minipass": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", + "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "dev": true, "dependencies": { - "mute-stream": "~0.0.4" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/read-cmd-shim": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz", - "integrity": "sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==", + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "minipass": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" } }, - "node_modules/read-package-json/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/read-package-json/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "minipass": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/read-package-json/node_modules/normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", "dev": true, "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" + "node": ">=10" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } + "node_modules/multimatch/node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/multimatch/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/read-pkg/node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=4" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/node-gyp": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", + "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" + "node": "^12.22 || ^14.13 || >=16" } }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", "dev": true, "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node_modules/read-yaml-file": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", - "integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==", + "node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "dependencies": { - "js-yaml": "^4.0.0", - "strip-bom": "^4.0.0" + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=10.13" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/nopt": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.1.0.tgz", + "integrity": "sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">= 6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "deprecated": "This functionality has been moved to @npmcli/fs", + "node_modules/nopt/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/registry-auth-token": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", - "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", + "node_modules/npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "dev": true, "dependencies": { - "@pnpm/npm-conf": "^1.0.4" + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=14" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/registry-url": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", - "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "node_modules/npm-check-updates": { + "version": "16.10.9", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.9.tgz", + "integrity": "sha512-J3ggasYJIFB+XqAT9qQcAAOKehpCXGRoZWlK4/u5YAOZB6hmM4CxdrxCA7A34hBK5zaPIEBnMqWBSV7mU6nixg==", "dev": true, "dependencies": { - "rc": "1.2.8" + "chalk": "^5.2.0", + "cli-table3": "^0.6.3", + "commander": "^10.0.0", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.3", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^5.1.0", + "ini": "^4.0.0", + "js-yaml": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "lodash": "^4.17.21", + "minimatch": "^8.0.3", + "p-map": "^4.0.0", + "pacote": "15.1.1", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts-ncu": "^3.0.0", + "rc-config-loader": "^4.1.2", + "remote-git-tags": "^3.0.0", + "rimraf": "^4.4.1", + "semver": "^7.3.8", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^2.0.1", + "strip-json-comments": "^5.0.0", + "untildify": "^4.0.0", + "update-notifier": "^6.0.2" }, - "engines": { - "node": ">=12" + "bin": { + "ncu": "build/src/bin/cli.js", + "npm-check-updates": "build/src/bin/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/remote-git-tags": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", - "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", - "dev": true, "engines": { - "node": ">=8" + "node": ">=14.14" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/npm-check-updates/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/npm-check-updates/node_modules/@npmcli/git": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.3.tgz", + "integrity": "sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==", "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/npm-check-updates/node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "which": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/npm-check-updates/node_modules/@npmcli/run-script": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.0.tgz", + "integrity": "sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==", "dev": true, "dependencies": { - "resolve-from": "^5.0.0" + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/npm-check-updates/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/npm-check-updates/node_modules/cacache": { + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", + "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^8.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "node_modules/npm-check-updates/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", "dev": true, - "dependencies": { - "lowercase-keys": "^3.0.0" - }, "engines": { - "node": ">=14.16" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/npm-check-updates/node_modules/fs-minipass": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", + "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "minipass": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "node_modules/npm-check-updates/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, "engines": { - "node": ">= 4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/npm-check-updates/node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/npm-check-updates/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "lru-cache": "^7.5.1" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/npm-check-updates/node_modules/ignore-walk": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.1.tgz", + "integrity": "sha512-/c8MxUAqpRccq+LyDOecwF+9KqajueJHh8fz7g3YqjMZt+NSfJzx05zrKiXwa2sKwFCzaiZ5qUVfRj0pmxixEA==", "dev": true, + "dependencies": { + "minimatch": "^6.1.6" + }, "engines": { - "node": ">=0.12.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/npm-check-updates/node_modules/ignore-walk/node_modules/minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "queue-microtask": "^1.2.2" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "node_modules/npm-check-updates/node_modules/ini": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.0.tgz", + "integrity": "sha512-HLR38RSF2iulAzc3I/sma4CoYxQP844rPYCNfzGDOHqa/YqVlwuuZgBx6M50/X8dKgzk0cm1qRg3+47mK2N+cQ==", "dev": true, - "dependencies": { - "tslib": "^2.1.0" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/npm-check-updates/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/npm-check-updates/node_modules/make-fetch-happen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", + "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "node_modules/npm-check-updates/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, "dependencies": { - "semver": "^7.3.5" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semver-utils": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", - "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", - "dev": true - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/npm-check-updates/node_modules/minipass": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/shallow-clone": { + "node_modules/npm-check-updates/node_modules/minipass-fetch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", + "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", "dev": true, "dependencies": { - "kind-of": "^6.0.2" + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/npm-check-updates/node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sigstore": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.0.0.tgz", - "integrity": "sha512-e+qfbn/zf1+rCza/BhIA//Awmf0v1pa5HQS8Xk8iXrn9bgytytVLqYD0P7NSqZ6IELTgq+tcDvLPkQjNHyWLNg==", + "node_modules/npm-check-updates/node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "dependencies": { - "make-fetch-happen": "^11.0.1", - "tuf-js": "^1.0.0" - }, - "bin": { - "sigstore": "bin/sigstore.js" + "lru-cache": "^7.5.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "node_modules/npm-check-updates/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "dependencies": { - "semver": "^7.3.5" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sigstore/node_modules/cacache": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", - "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", + "node_modules/npm-check-updates/node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^8.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "lru-cache": "^7.5.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/fs-minipass": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", - "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", + "node_modules/npm-check-updates/node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, "dependencies": { - "minipass": "^4.0.0" + "ignore-walk": "^6.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/npm-check-updates/node_modules/npm-registry-fetch": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", + "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/make-fetch-happen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", - "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", + "node_modules/npm-check-updates/node_modules/pacote": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", + "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", "dev": true, "dependencies": { - "agentkeepalive": "^4.2.1", + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", + "fs-minipass": "^3.0.0", "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/npm-check-updates/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/read-package-json": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.0.tgz", + "integrity": "sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "glob": "^8.0.1", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "node_modules/npm-check-updates/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sigstore/node_modules/minipass-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", - "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "node_modules/npm-check-updates/node_modules/rimraf/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "dev": true, "dependencies": { - "minipass": "^4.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=16 || 14 >=14.17" }, - "optionalDependencies": { - "encoding": "^0.1.13" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sigstore/node_modules/ssri": { + "node_modules/npm-check-updates/node_modules/ssri": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", @@ -8582,7 +8474,19 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/unique-filename": { + "node_modules/npm-check-updates/node_modules/strip-json-comments": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", + "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", @@ -8594,7 +8498,7 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sigstore/node_modules/unique-slug": { + "node_modules/npm-check-updates/node_modules/unique-slug": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", @@ -8606,347 +8510,402 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/npm-check-updates/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "node_modules/npm-check-updates/node_modules/which": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", + "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "node_modules/npm-install-checks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", + "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", "dev": true, "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" + "semver": "^7.1.1" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "node_modules/npm-normalize-package-bin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", + "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", + "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", "dev": true, "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "hosted-git-info": "^3.0.6", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "node_modules/npm-package-arg/node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dev": true, "dependencies": { - "is-plain-obj": "^1.0.0" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "builtins": "^1.0.3" } }, - "node_modules/spawn-please": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.1.tgz", - "integrity": "sha512-W+cFbZR2q2mMTfjz5ZGvhBAiX+e/zczFCNlbS9mxiSdYswBXwUuBUT+a0urH+xZZa8f/bs0mXHyZsZHR9hKogA==", + "node_modules/npm-packlist": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", + "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3" + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^1.1.2", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" }, "engines": { - "node": ">=14" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "node_modules/npm-packlist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/npm-packlist/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "node_modules/npm-packlist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "through": "2" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "node_modules/npm-packlist/node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, "dependencies": { - "readable-stream": "^3.0.0" + "npm-normalize-package-bin": "^1.0.1" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true }, - "node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "node_modules/npm-pick-manifest": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", "dev": true, "dependencies": { - "minipass": "^3.1.1" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/npm-pick-manifest/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/npm-pick-manifest/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/npm-pick-manifest/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/npm-registry-fetch": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz", + "integrity": "sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg==", "dev": true, "dependencies": { - "min-indent": "^1.0.0" + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "lru-cache": "^7.5.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/strong-log-transformer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", - "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, "dependencies": { - "duplexer": "^0.1.1", - "minimist": "^1.2.0", - "through": "^2.3.4" - }, - "bin": { - "sl-log-transformer": "bin/sl-log-transformer.js" + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" }, "engines": { - "node": ">=4" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "path-key": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, - "engines": { - "node": ">= 0.4" + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/syncpack": { - "version": "9.8.4", - "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-9.8.4.tgz", - "integrity": "sha512-i81rO+dHuJ2dO8YQq6SCExcyN0x9ZVTY7cVPn8pWjS5Dml0A8uM0cOaneOludFesdrLXMZUA/uEWa74ddBgkPQ==", + "node_modules/nx": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-15.7.1.tgz", + "integrity": "sha512-8Gtqazww3rCWxJ+pgB3JDU6hQeA+qRMYh77mXvf5CFQPszqEqvvuiJtKzcieWjxn/IZpeyVRjmPypkEOM6BbHw==", "dev": true, + "hasInstallScript": true, "dependencies": { - "@mobily/ts-belt": "3.13.1", - "chalk": "4.1.2", - "commander": "10.0.0", - "cosmiconfig": "8.0.0", - "expect-more": "1.3.0", - "fs-extra": "11.1.0", - "glob": "8.1.0", - "minimatch": "6.2.0", - "read-yaml-file": "2.1.0", - "semver": "7.3.8", - "zod": "3.20.6" + "@nrwl/cli": "15.7.1", + "@nrwl/tao": "15.7.1", + "@parcel/watcher": "2.0.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "^3.0.0-rc.18", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.0.0", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^7.0.2", + "dotenv": "~10.0.0", + "enquirer": "~2.3.6", + "fast-glob": "3.2.7", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^11.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "js-yaml": "4.1.0", + "jsonc-parser": "3.2.0", + "lines-and-columns": "~2.0.3", + "minimatch": "3.0.5", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "semver": "7.3.4", + "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "v8-compile-cache": "2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" }, "bin": { - "syncpack": "dist/bin.js", - "syncpack-fix-mismatches": "dist/bin-fix-mismatches/index.js", - "syncpack-format": "dist/bin-format/index.js", - "syncpack-lint-semver-ranges": "dist/bin-lint-semver-ranges/index.js", - "syncpack-list": "dist/bin-list/index.js", - "syncpack-list-mismatches": "dist/bin-list-mismatches/index.js", - "syncpack-set-semver-ranges": "dist/bin-set-semver-ranges/index.js" + "nx": "bin/nx.js" }, - "engines": { - "node": ">=14" - } - }, - "node_modules/syncpack/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "optionalDependencies": { + "@nrwl/nx-darwin-arm64": "15.7.1", + "@nrwl/nx-darwin-x64": "15.7.1", + "@nrwl/nx-linux-arm-gnueabihf": "15.7.1", + "@nrwl/nx-linux-arm64-gnu": "15.7.1", + "@nrwl/nx-linux-arm64-musl": "15.7.1", + "@nrwl/nx-linux-x64-gnu": "15.7.1", + "@nrwl/nx-linux-x64-musl": "15.7.1", + "@nrwl/nx-win32-arm64-msvc": "15.7.1", + "@nrwl/nx-win32-x64-msvc": "15.7.1" + }, + "peerDependencies": { + "@swc-node/register": "^1.4.2", + "@swc/core": "^1.2.173" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } } }, - "node_modules/syncpack/node_modules/cosmiconfig": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", - "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", + "node_modules/nx/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/syncpack/node_modules/fs-extra": { + "node_modules/nx/node_modules/fs-extra": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", @@ -8960,1387 +8919,4976 @@ "node": ">=14.14" } }, - "node_modules/syncpack/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/nx/node_modules/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, - "node_modules/syncpack/node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/nx/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/syncpack/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "node_modules/nx/node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "node_modules/nx/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "node_modules/nx/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6" - } - }, - "node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true, - "engines": { - "node": ">=0.10" + "node": "*" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/nx/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "dependencies": { - "readable-stream": "3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/nx/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "dependencies": { - "os-tmpdir": "~1.0.2" + "rimraf": "^3.0.0" }, "engines": { - "node": ">=0.6.0" + "node": ">=8.17.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/nx/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=8.0" + "node": ">=12" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/treeverse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz", - "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==", + "node_modules/nx/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "node_modules/nx/node_modules/yargs/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/tsconfig-paths": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", - "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" + "wrappy": "1" } }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/open": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz", + "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==", "dev": true, "dependencies": { - "tslib": "^1.8.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">= 6" + "node": ">=12" }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tuf-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.0.tgz", - "integrity": "sha512-Tsqlm419OAlrkCE6rsf1WuPvww44vfK1ZHz+Uq9Mpq5JiV5qnJ9LLItvsbM9OipIIeSG3rydVBS4BmD40ts2uA==", + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "dependencies": { - "@tufjs/models": "1.0.0", - "make-fetch-happen": "^11.0.1" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.8.0" } }, - "node_modules/tuf-js/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "dependencies": { - "semver": "^7.3.5" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tuf-js/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/tuf-js/node_modules/cacache": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", - "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^8.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12.20" } }, - "node_modules/tuf-js/node_modules/fs-minipass": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", - "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, - "dependencies": { - "minipass": "^4.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/tuf-js/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tuf-js/node_modules/make-fetch-happen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", - "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tuf-js/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "aggregate-error": "^3.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tuf-js/node_modules/minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "node_modules/p-map-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/tuf-js/node_modules/minipass-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", - "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", "dev": true, - "dependencies": { - "minipass": "^4.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" }, - "optionalDependencies": { - "encoding": "^0.1.13" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tuf-js/node_modules/ssri": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", - "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "dev": true, "dependencies": { - "minipass": "^4.0.0" + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tuf-js/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/tuf-js/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4" + "p-finally": "^1.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=6" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", "dev": true, + "dependencies": { + "p-reduce": "^2.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/package-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", "dev": true, "dependencies": { - "is-typedarray": "^1.0.0" + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "node_modules/pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + }, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "pacote": "lib/bin.js" }, "engines": { - "node": ">=4.2.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "node_modules/pacote/node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, - "optional": true, + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, "bin": { - "uglifyjs": "bin/uglifyjs" + "installed-package-contents": "index.js" }, "engines": { - "node": ">=0.8.0" + "node": ">= 10" } }, - "node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "node_modules/pacote/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "dependencies": { - "unique-slug": "^3.0.0" + "lru-cache": "^7.5.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "node_modules/pacote/node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "npm-normalize-package-bin": "^1.0.1" } }, - "node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "node_modules/pacote/node_modules/npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, "dependencies": { - "crypto-random-string": "^4.0.0" + "semver": "^7.1.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "node_modules/pacote/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/pacote/node_modules/npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "node_modules/pacote/node_modules/npm-pick-manifest": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", + "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", "dev": true, + "dependencies": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^2.0.0", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/upath": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", - "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "node_modules/pacote/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, "engines": { - "node": ">=4", - "yarn": "*" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/update-notifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", - "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "node_modules/pacote/node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "dependencies": { - "boxen": "^7.0.0", - "chalk": "^5.0.1", - "configstore": "^6.0.0", - "has-yarn": "^3.0.0", - "import-lazy": "^4.0.0", - "is-ci": "^3.0.1", - "is-installed-globally": "^0.4.0", - "is-npm": "^6.0.0", - "is-yarn-global": "^0.4.0", - "latest-version": "^7.0.0", - "pupa": "^3.1.0", - "semver": "^7.3.7", - "semver-diff": "^4.0.0", - "xdg-basedir": "^5.1.0" + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" + "node": ">=10" } }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", - "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "callsites": "^3.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=6" } }, - "node_modules/update-notifier/node_modules/ci-info": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", - "dev": true - }, - "node_modules/update-notifier/node_modules/is-ci": { + "node_modules/parse-conflict-json": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", + "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", "dev": true, "dependencies": { - "ci-info": "^3.2.0" + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true, - "dependencies": { - "punycode": "^2.1.0" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/util-deprecate": { + "node_modules/parse-github-url": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", "dev": true, "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "parse-github-url": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "dependencies": { - "builtins": "^5.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/walk-up-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", - "dev": true - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "node_modules/parse-path": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", "dev": true, "dependencies": { - "defaults": "^1.0.3" + "protocols": "^2.0.0" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/parse-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", "dev": true, "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "parse-path": "^7.0.0" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, "engines": { - "node": ">= 8" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "node": ">=8" } }, - "node_modules/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "dependencies": { - "string-width": "^5.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/path-scurry": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", + "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "lru-cache": "^9.0.0", + "minipass": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", + "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "14 || >=16.14" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "node_modules/path-scurry/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "engines": { + "node": ">=8.6" }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "find-up": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/write-json-file": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", - "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.15", - "make-dir": "^2.1.0", - "pify": "^4.0.1", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.4.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/write-json-file/node_modules/detect-indent": { + "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/write-json-file/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/write-json-file/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/write-json-file/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/write-json-file/node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/write-pkg": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", - "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "node_modules/postcss-selector-parser": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz", + "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==", "dev": true, "dependencies": { - "sort-keys": "^2.0.0", - "type-fest": "^0.4.1", - "write-json-file": "^3.2.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/write-pkg/node_modules/type-fest": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", - "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "engines": { - "node": ">=6" + "node": ">= 0.8.0" } }, - "node_modules/xdg-basedir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, "engines": { - "node": ">=12" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "node_modules/pretty-format": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", + "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, "engines": { - "node": ">=0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true, "engines": { - "node": ">= 6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, "engines": { - "node": ">=10" + "node": ">= 0.6.0" } }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "node_modules/promise-all-reject-late": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", "dev": true, - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/zod": { - "version": "3.20.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.20.6.tgz", - "integrity": "sha512-oyu0m54SGCtzh6EClBVqDDlAYRz4jrVtKwQ7ZnsEmMI9HnzuZFj8QFwAY1M5uniIYACdGvv0PBWPF2kO0aNofA==", + "node_modules/promise-call-limit": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", + "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==", "dev": true, "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" + "url": "https://github.com/sponsors/isaacs" } }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" } }, - "@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "node_modules/prompts-ncu": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", + "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "dependencies": { + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 14" } }, - "@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", - "dev": true - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "node_modules/promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "dependencies": { + "read": "1" } }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, - "@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", "dev": true }, - "@isaacs/string-locale-compare": { + "node_modules/proxy-from-env": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "@lerna/child-process": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.5.1.tgz", - "integrity": "sha512-QfyleXSD9slh4qM54wDaqKVPvtUH1NJMgsFc9BabqSHO1Ttpandv1EAvTCN9Lu73RbCX3LJpn+BfJmnjHbjCyw==", + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, - "requires": { - "chalk": "^4.1.0", - "execa": "^5.0.0", - "strong-log-transformer": "^2.1.0" + "engines": { + "node": ">=6" } }, - "@lerna/create": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.5.1.tgz", - "integrity": "sha512-ejERJnfA36jEuKrfM+94feLiyf2/hF2NoG923N0rE4rsmvRFPr1XLVPvAKleXW+Gdi/t1p410lJ7NKaLRMYCYw==", + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dev": true, - "requires": { - "@lerna/child-process": "6.5.1", - "dedent": "^0.7.0", - "fs-extra": "^9.1.0", - "init-package-json": "^3.0.2", - "npm-package-arg": "8.1.1", - "p-reduce": "^2.1.0", - "pacote": "^13.6.1", - "pify": "^5.0.0", - "semver": "^7.3.4", - "slash": "^3.0.0", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0", - "yargs-parser": "20.2.4" - } - }, - "@mobily/ts-belt": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/@mobily/ts-belt/-/ts-belt-3.13.1.tgz", - "integrity": "sha512-K5KqIhPI/EoCTbA6CGbrenM9s41OouyK8A03fGJJcla/zKucsgLbz8HNbeseoLarRPgyWJsUyCYqFhI7t3Ra9Q==", - "dev": true + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" } }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "engines": { + "node": ">=8" } }, - "@npmcli/arborist": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz", - "integrity": "sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==", + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.0", - "cacache": "^16.0.6", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - }, "dependencies": { - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - } + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" } }, - "@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "node_modules/rc-config-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz", + "integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==", "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" + "dependencies": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" } }, - "@npmcli/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", - "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, - "requires": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" + "engines": { + "node": ">=0.10.0" } }, - "@npmcli/installed-package-contents": { + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" } }, - "@npmcli/map-workspaces": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz", - "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==", + "node_modules/read-cmd-shim": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz", + "integrity": "sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==", "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", + "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "dev": true, + "dependencies": { "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-yaml-file": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", + "integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==", + "dev": true, + "dependencies": { + "js-yaml": "^4.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", + "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", + "dev": true, + "dependencies": { + "@pnpm/npm-conf": "^1.0.4" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dev": true, + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/remote-git-tags": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", + "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-utils": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", + "dev": true + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sigstore": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.4.0.tgz", + "integrity": "sha512-N7TRpSbFjY/TrFDg6yGAQSYBrQ5s6qmPiq4pD6fkv1LoyfMsLG0NwZWG2s5q+uttLHgyVyTa0Rogx2P78rN8kQ==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.1.0", + "make-fetch-happen": "^11.0.1", + "tuf-js": "^1.1.3" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sigstore/node_modules/cacache": { + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", + "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^8.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/fs-minipass": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", + "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", + "dev": true, + "dependencies": { + "minipass": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sigstore/node_modules/make-fetch-happen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", + "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sigstore/node_modules/minipass": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", + "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "dev": true, + "dependencies": { + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/sigstore/node_modules/ssri": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", + "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", + "dev": true, + "dependencies": { + "minipass": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spawn-please": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.1.tgz", + "integrity": "sha512-W+cFbZR2q2mMTfjz5ZGvhBAiX+e/zczFCNlbS9mxiSdYswBXwUuBUT+a0urH+xZZa8f/bs0mXHyZsZHR9hKogA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/syncpack": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-9.8.6.tgz", + "integrity": "sha512-4S4cUoKK9WenA/Wdk9GvlekzPR9PxC7sqcsUIsK4ypsa/pIYv8Ju1vxGNvp6Y1yI2S9EdCk0QJsB3/wRB8XYVw==", + "dev": true, + "dependencies": { + "chalk": "4.1.2", + "commander": "10.0.1", + "cosmiconfig": "8.1.3", + "fs-extra": "11.1.1", + "glob": "8.1.0", + "minimatch": "6.2.0", + "read-yaml-file": "2.1.0", + "semver": "7.5.0", + "tightrope": "0.1.0", + "zod": "3.21.4" + }, + "bin": { + "syncpack": "dist/bin.js", + "syncpack-fix-mismatches": "dist/bin-fix-mismatches/index.js", + "syncpack-format": "dist/bin-format/index.js", + "syncpack-lint-semver-ranges": "dist/bin-lint-semver-ranges/index.js", + "syncpack-list": "dist/bin-list/index.js", + "syncpack-list-mismatches": "dist/bin-list-mismatches/index.js", + "syncpack-set-semver-ranges": "dist/bin-set-semver-ranges/index.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/syncpack/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/syncpack/node_modules/cosmiconfig": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "dev": true, + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/syncpack/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/syncpack/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/syncpack/node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/syncpack/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/syncpack/node_modules/minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/syncpack/node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tempy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.0.tgz", + "integrity": "sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w==", + "dev": true, + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy/node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tightrope": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tightrope/-/tightrope-0.1.0.tgz", + "integrity": "sha512-HHHNYdCAIYwl1jOslQBT455zQpdeSo8/A346xpIb/uuqhSg+tCvYNsP5f11QW+z9VZ3vSX8YIfzTApjjuGH63w==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/treeverse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", + "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", + "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tuf-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.4.tgz", + "integrity": "sha512-Lw2JRM3HTYhEtQJM2Th3aNCPbnXirtWMl065BawwmM2pX6XStH/ZO9e8T2hh0zk/HUa+1i6j+Lv6eDitKTau6A==", + "dev": true, + "dependencies": { + "@tufjs/models": "1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/tuf-js/node_modules/cacache": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tuf-js/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tuf-js/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/tuf-js/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dev": true, + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", + "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ci-info": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", + "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", + "dev": true + }, + "node_modules/update-notifier/node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/walk-up-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "dependencies": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-json-file/node_modules/detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-json-file/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-json-file/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-json-file/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/write-json-file/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/write-pkg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "dev": true, + "dependencies": { + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-pkg/node_modules/type-fest": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.1", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", + "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "dev": true + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true + }, + "@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.25.16" + } + }, + "@lerna/child-process": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.1.tgz", + "integrity": "sha512-yUCDCcRNNbI9UUsUB6FYEmDHpo5Tn/f0q5D7vhDP4i6Or8kBj82y7+e31hwfLvK2ykOYlDVs2MxAluH/+QUBOQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "execa": "^5.0.0", + "strong-log-transformer": "^2.1.0" + } + }, + "@lerna/create": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.1.tgz", + "integrity": "sha512-GDmHFhQ0mr0RcXWXrsLyfMV6ch/dZV/Ped1e6sFVQhsLL9P+FFXX1ZWxa/dQQ90VWF2qWcmK0+S/L3kUz2xvTA==", + "dev": true, + "requires": { + "@lerna/child-process": "6.6.1", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "init-package-json": "^3.0.2", + "npm-package-arg": "8.1.1", + "p-reduce": "^2.1.0", + "pacote": "^13.6.1", + "pify": "^5.0.0", + "semver": "^7.3.4", + "slash": "^3.0.0", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^4.0.0", + "yargs-parser": "20.2.4" + } + }, + "@lerna/legacy-package-management": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.1.tgz", + "integrity": "sha512-0EYxSFr34VgeudA5rvjGJSY7s4seITMVB7AJ9LRFv9QDUk6jpvapV13ZAaKnhDTxX5vNCfnJuWHXXWq0KyPF/Q==", + "dev": true, + "requires": { + "@npmcli/arborist": "6.2.3", + "@npmcli/run-script": "4.1.7", + "@nrwl/devkit": ">=15.5.2 < 16", + "@octokit/rest": "19.0.3", + "byte-size": "7.0.0", + "chalk": "4.1.0", + "clone-deep": "4.0.1", + "cmd-shim": "5.0.0", + "columnify": "1.6.0", + "config-chain": "1.1.12", + "conventional-changelog-core": "4.2.4", + "conventional-recommended-bump": "6.1.0", + "cosmiconfig": "7.0.0", + "dedent": "0.7.0", + "dot-prop": "6.0.1", + "execa": "5.0.0", + "file-url": "3.0.0", + "find-up": "5.0.0", + "fs-extra": "9.1.0", + "get-port": "5.1.1", + "get-stream": "6.0.0", + "git-url-parse": "13.1.0", + "glob-parent": "5.1.2", + "globby": "11.1.0", + "graceful-fs": "4.2.10", + "has-unicode": "2.0.1", + "inquirer": "8.2.4", + "is-ci": "2.0.0", + "is-stream": "2.0.0", + "libnpmpublish": "6.0.4", + "load-json-file": "6.2.0", + "make-dir": "3.1.0", + "minimatch": "3.0.5", + "multimatch": "5.0.0", + "node-fetch": "2.6.7", + "npm-package-arg": "8.1.1", + "npm-packlist": "5.1.1", + "npm-registry-fetch": "14.0.3", + "npmlog": "6.0.2", + "p-map": "4.0.0", + "p-map-series": "2.1.0", + "p-queue": "6.6.2", + "p-waterfall": "2.1.1", + "pacote": "13.6.2", + "pify": "5.0.0", + "pretty-format": "29.4.3", + "read-cmd-shim": "3.0.0", + "read-package-json": "5.0.1", + "resolve-from": "5.0.0", + "semver": "7.3.8", + "signal-exit": "3.0.7", + "slash": "3.0.0", + "ssri": "9.0.1", + "strong-log-transformer": "2.1.0", + "tar": "6.1.11", + "temp-dir": "1.0.0", + "tempy": "1.0.0", + "upath": "2.0.1", + "uuid": "8.3.2", + "write-file-atomic": "4.0.1", + "write-pkg": "4.0.0", + "yargs": "16.2.0" + }, + "dependencies": { + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "cacache": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + } + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } + } + }, + "get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true + }, + "glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + } + } + }, + "minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true + }, + "minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } + } + }, + "npm-registry-fetch": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", + "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", + "dev": true, + "requires": { + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "dependencies": { + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + } + } + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/arborist": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-6.2.3.tgz", + "integrity": "sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA==", + "dev": true, + "requires": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^3.0.0", + "@npmcli/query": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^6.1.6", + "nopt": "^7.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", + "walk-up-path": "^1.0.0" + }, + "dependencies": { + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", + "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + } + }, + "@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "requires": { + "which": "^3.0.0" + } + }, + "@npmcli/run-script": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.1.tgz", + "integrity": "sha512-Yi04ZSold8jcbBJD/ahKMJSQCQifH8DAbMwkBvoLaTpGFxzHC3B/5ZyoVR69q/4xedz84tvi9DJOJjNe17h+LA==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + } + }, + "are-we-there-yet": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz", + "integrity": "sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^4.1.0" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "cacache": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + } + }, + "fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, + "gauge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", + "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "dependencies": { + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "dev": true, + "requires": { + "minimatch": "^9.0.0" + }, + "dependencies": { + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + }, + "make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + } + }, + "minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "requires": { + "ignore-walk": "^6.0.0" + } + }, + "npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "requires": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + } + }, + "npmlog": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + } + }, + "pacote": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.3.tgz", + "integrity": "sha512-aRts8cZqxiJVDitmAh+3z+FxuO3tLNWEmwDRPEpDDiZJaRz06clP4XX112ynMT5uF0QNoMPajBBHnaStUEPJXA==", + "dev": true, + "requires": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + } + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "read-package-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.2.tgz", + "integrity": "sha512-Ismd3km1d/FGzcjm8fBf/4ktkyd0t6pbkjYqu1gvRzOzN+aTxi1eigdZp7441TlszQ+GsdYezgS+g9cgy8QK9w==", + "dev": true, + "requires": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + } + }, + "signal-exit": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", + "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", + "dev": true + }, + "ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + }, + "npm-package-arg": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + }, + "npm-pick-manifest": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", + "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", + "dev": true, + "requires": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^2.0.0", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "dev": true, + "requires": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "@npmcli/map-workspaces": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", + "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", + "dev": true, + "requires": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + } + }, + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } + } + }, + "@npmcli/metavuln-calculator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz", + "integrity": "sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==", + "dev": true, + "requires": { + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", + "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + } + }, + "@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "requires": { + "which": "^3.0.0" + } + }, + "@npmcli/run-script": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.1.tgz", + "integrity": "sha512-Yi04ZSold8jcbBJD/ahKMJSQCQifH8DAbMwkBvoLaTpGFxzHC3B/5ZyoVR69q/4xedz84tvi9DJOJjNe17h+LA==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + } + }, + "fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + } + }, + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "dev": true, + "requires": { + "minimatch": "^9.0.0" + } + }, + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + }, + "make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + } + }, + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "requires": { + "ignore-walk": "^6.0.0" + } + }, + "npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "requires": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + } + }, + "pacote": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.3.tgz", + "integrity": "sha512-aRts8cZqxiJVDitmAh+3z+FxuO3tLNWEmwDRPEpDDiZJaRz06clP4XX112ynMT5uF0QNoMPajBBHnaStUEPJXA==", + "dev": true, + "requires": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + } + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "read-package-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.2.tgz", + "integrity": "sha512-Ismd3km1d/FGzcjm8fBf/4ktkyd0t6pbkjYqu1gvRzOzN+aTxi1eigdZp7441TlszQ+GsdYezgS+g9cgy8QK9w==", + "dev": true, + "requires": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "builtins": "^5.0.0" } }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "isexe": "^2.0.0" } } } }, - "@npmcli/metavuln-calculator": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz", - "integrity": "sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==", - "dev": true, - "requires": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" - } - }, "@npmcli/move-file": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", @@ -10352,24 +13900,32 @@ } }, "@npmcli/name-from-folder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", "dev": true }, "@npmcli/node-gyp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true }, "@npmcli/package-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", - "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-3.0.0.tgz", + "integrity": "sha512-NnuPuM97xfiCpbTEJYtEuKz6CFbpUHtaT0+5via5pQeI25omvQDFbp1GcGJ/c4zvL/WX0qbde6YiLgfZbWFgvg==", "dev": true, "requires": { - "json-parse-even-better-errors": "^2.3.1" + "json-parse-even-better-errors": "^3.0.0" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + } } }, "@npmcli/promise-spawn": { @@ -10381,6 +13937,15 @@ "infer-owner": "^1.0.4" } }, + "@npmcli/query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.0.tgz", + "integrity": "sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, "@npmcli/run-script": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", @@ -10392,6 +13957,30 @@ "node-gyp": "^9.0.0", "read-package-json-fast": "^2.0.3", "which": "^2.0.2" + }, + "dependencies": { + "@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + } } }, "@nrwl/cli": { @@ -10691,6 +14280,13 @@ "esquery": "^1.0.1" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@pnpm/network.ca-file": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", @@ -10710,6 +14306,18 @@ "config-chain": "^1.1.11" } }, + "@sigstore/protobuf-specs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz", + "integrity": "sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, "@sindresorhus/is": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", @@ -10731,13 +14339,20 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, - "@tufjs/models": { + "@tufjs/canonical-json": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.0.tgz", - "integrity": "sha512-RRMu4uMxWnZlxaIBxahSb2IssFZiu188sndesZflWOe1cA/qUqtemSIoBWbuVKPvvdktapImWNnKpBcc+VrCQw==", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "dev": true + }, + "@tufjs/models": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.3.tgz", + "integrity": "sha512-mkFEqqRisi13DmR5pX4x+Zk97EiU8djTtpNW1GeuX410y/raAsq/T3ZCjwoRIZ8/cIBfW0olK/sywlAiWevDVw==", "dev": true, "requires": { - "minimatch": "^6.1.0" + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^7.4.6" }, "dependencies": { "brace-expansion": { @@ -10750,9 +14365,9 @@ } }, "minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -10834,71 +14449,71 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz", - "integrity": "sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz", + "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/type-utils": "5.54.0", - "@typescript-eslint/utils": "5.54.0", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/type-utils": "5.59.2", + "@typescript-eslint/utils": "5.59.2", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/parser": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.54.0.tgz", - "integrity": "sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", + "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/typescript-estree": "5.54.0", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.2", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz", - "integrity": "sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", + "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/visitor-keys": "5.54.0" + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2" } }, "@typescript-eslint/type-utils": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.54.0.tgz", - "integrity": "sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz", + "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.54.0", - "@typescript-eslint/utils": "5.54.0", + "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/utils": "5.59.2", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.54.0.tgz", - "integrity": "sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", + "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz", - "integrity": "sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", + "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/visitor-keys": "5.54.0", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/visitor-keys": "5.59.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -10907,28 +14522,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.54.0.tgz", - "integrity": "sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz", + "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==", "dev": true, "requires": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/typescript-estree": "5.54.0", + "@typescript-eslint/scope-manager": "5.59.2", + "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.2", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz", - "integrity": "sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==", + "version": "5.59.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", + "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", "dev": true, "requires": { - "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/types": "5.59.2", "eslint-visitor-keys": "^3.3.0" } }, @@ -10984,6 +14599,15 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, "acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -11138,12 +14762,6 @@ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, "async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -11192,24 +14810,44 @@ "dev": true }, "bin-links": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz", - "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz", + "integrity": "sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==", "dev": true, "requires": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" }, "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "cmd-shim": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", + "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", + "dev": true + }, + "read-cmd-shim": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", "dev": true + }, + "signal-exit": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", + "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", + "dev": true + }, + "write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + } } } }, @@ -11517,13 +15155,14 @@ "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true }, - "cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "dev": true, "requires": { - "colors": "1.0.3" + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" } }, "cli-width": { @@ -11601,12 +15240,6 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", - "dev": true - }, "columnify": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", @@ -11627,9 +15260,9 @@ } }, "commander": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", - "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true }, "common-ancestor-path": { @@ -11870,6 +15503,12 @@ } } }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, "dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -11891,12 +15530,6 @@ "ms": "2.1.2" } }, - "debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", - "dev": true - }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -11977,6 +15610,22 @@ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, + "del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -12007,16 +15656,6 @@ "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true }, - "dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -12163,13 +15802,15 @@ "dev": true }, "eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", + "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", "dev": true, "requires": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.39.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -12179,10 +15820,9 @@ "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -12204,16 +15844,15 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -12229,9 +15868,9 @@ } }, "eslint-config-prettier": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", - "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, "requires": {} }, @@ -12252,38 +15891,21 @@ "estraverse": "^4.1.1" } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true }, "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" } }, "esprima": { @@ -12338,12 +15960,24 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, "execa": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", @@ -12361,12 +15995,6 @@ "strip-final-newline": "^2.0.0" } }, - "expect-more": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-more/-/expect-more-1.3.0.tgz", - "integrity": "sha512-HnXT5nJb9V3DMnr5RgA1TiKbu5kRaJ0GD1JkuhZvnr1Qe3HJq+ESnrcl/jmVUZ8Ycnl3Sp0OTYUhmO36d2+zow==", - "dev": true - }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -12461,6 +16089,12 @@ "flat-cache": "^3.0.4" } }, + "file-url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", + "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", + "dev": true + }, "filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -12537,6 +16171,24 @@ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", + "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", + "dev": true + } + } + }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -13264,6 +16916,12 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -13351,6 +17009,80 @@ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, + "jackspeak": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.1.4.tgz", + "integrity": "sha512-7CGd4ZQu5M/FgQLlcgcsY858wf+ukg1ma5M95FACSfC54+88vm594Nv6C3NqWfk8wyK1u+E3SzvVsxr7bwONmg==", + "dev": true, + "requires": { + "@pkgjs/parseargs": "^0.11.0", + "cliui": "github:isaacs/cliui#isaacs/esm-cjs-consistency" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "cliui": { + "version": "git+ssh://git@github.com/isaacs/cliui.git#9f97090165675fdda63a79c29bc36bb1033506b0", + "dev": true, + "from": "cliui@github:isaacs/cliui#isaacs/esm-cjs-consistency", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + } + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -13486,9 +17218,9 @@ } }, "just-diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.2.0.tgz", - "integrity": "sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", + "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==", "dev": true }, "just-diff-apply": { @@ -13528,14 +17260,15 @@ } }, "lerna": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.5.1.tgz", - "integrity": "sha512-Va1bysubwWdoWZ1ncKcoTGBXNAu/10/TwELb550TTivXmEWjCCdek4eX0BNLTEYKxu3tpV2UEeqVisUiWGn4WA==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.1.tgz", + "integrity": "sha512-WJtrvmbmR+6hMB9b5pvsxJzew0lRL6hARgW/My9BM4vYaxwPIA2I0riv3qQu5Zd7lYse7FEqJkTnl9Kn1bXhLA==", "dev": true, "requires": { - "@lerna/child-process": "6.5.1", - "@lerna/create": "6.5.1", - "@npmcli/arborist": "5.3.0", + "@lerna/child-process": "6.6.1", + "@lerna/create": "6.6.1", + "@lerna/legacy-package-management": "6.6.1", + "@npmcli/arborist": "6.2.3", "@npmcli/run-script": "4.1.7", "@nrwl/devkit": ">=15.5.2 < 16", "@octokit/plugin-enterprise-rest": "6.0.1", @@ -13577,7 +17310,7 @@ "node-fetch": "2.6.7", "npm-package-arg": "8.1.1", "npm-packlist": "5.1.1", - "npm-registry-fetch": "13.3.0", + "npm-registry-fetch": "^14.0.3", "npmlog": "^6.0.2", "nx": ">=15.5.2 < 16", "p-map": "4.0.0", @@ -13586,14 +17319,13 @@ "p-queue": "6.6.2", "p-reduce": "2.1.0", "p-waterfall": "2.1.1", - "pacote": "13.6.1", - "path-exists": "4.0.0", + "pacote": "13.6.2", "pify": "5.0.0", "read-cmd-shim": "3.0.0", "read-package-json": "5.0.1", "resolve-from": "5.0.0", - "rimraf": "^3.0.2", - "semver": "7.3.4", + "rimraf": "^4.4.1", + "semver": "^7.3.8", "signal-exit": "3.0.7", "slash": "3.0.0", "ssri": "9.0.1", @@ -13611,6 +17343,46 @@ "yargs-parser": "20.2.4" }, "dependencies": { + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "cacache": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + } + } + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -13631,12 +17403,54 @@ "proto-list": "~1.2.1" } }, + "fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, "get-stream": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true }, + "glob": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -13646,13 +17460,47 @@ "is-glob": "^4.0.1" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "requires": { - "yallist": "^4.0.0" + "lru-cache": "^7.5.1" + } + }, + "make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "dependencies": { + "ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + } } }, "minimatch": { @@ -13664,19 +17512,137 @@ "brace-expansion": "^1.1.7" } }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "requires": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "dependencies": { + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + } + } + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "glob": "^9.2.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + } + }, + "minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true + } + } + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" } } } @@ -14318,12 +18284,20 @@ "dev": true }, "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.1.0.tgz", + "integrity": "sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q==", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "^2.0.0" + }, + "dependencies": { + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true + } } }, "normalize-package-data": { @@ -14345,22 +18319,22 @@ "dev": true }, "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "dev": true, "requires": { - "npm-normalize-package-bin": "^1.0.1" + "npm-normalize-package-bin": "^3.0.0" } }, "npm-check-updates": { - "version": "16.7.10", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.7.10.tgz", - "integrity": "sha512-sLDgYD8ebkH9Jd6mPIq7UDGLr3DAxkHl6ZuJrEF4rauLv6DqHBxtnF16MHUPN+/eBt5QbH4GL/+nxfSAFm3TfQ==", + "version": "16.10.9", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.9.tgz", + "integrity": "sha512-J3ggasYJIFB+XqAT9qQcAAOKehpCXGRoZWlK4/u5YAOZB6hmM4CxdrxCA7A34hBK5zaPIEBnMqWBSV7mU6nixg==", "dev": true, "requires": { "chalk": "^5.2.0", - "cli-table": "^0.3.11", + "cli-table3": "^0.6.3", "commander": "^10.0.0", "fast-memoize": "^2.5.2", "find-up": "5.0.0", @@ -14368,27 +18342,27 @@ "get-stdin": "^8.0.0", "globby": "^11.0.4", "hosted-git-info": "^5.1.0", - "ini": "^3.0.1", + "ini": "^4.0.0", + "js-yaml": "^4.1.0", "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^7.0.1", + "minimatch": "^8.0.3", "p-map": "^4.0.0", "pacote": "15.1.1", "parse-github-url": "^1.0.2", "progress": "^2.0.3", - "prompts-ncu": "^2.5.1", + "prompts-ncu": "^3.0.0", "rc-config-loader": "^4.1.2", "remote-git-tags": "^3.0.0", - "rimraf": "^4.1.2", + "rimraf": "^4.4.1", "semver": "^7.3.8", "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^2.0.1", "strip-json-comments": "^5.0.0", "untildify": "^4.0.0", - "update-notifier": "^6.0.2", - "yaml": "^2.2.1" + "update-notifier": "^6.0.2" }, "dependencies": { "@npmcli/fs": { @@ -14417,22 +18391,6 @@ "which": "^3.0.0" } }, - "@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", - "dev": true, - "requires": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - } - }, - "@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "dev": true - }, "@npmcli/promise-spawn": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", @@ -14554,9 +18512,9 @@ } }, "ini": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", - "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.0.tgz", + "integrity": "sha512-HLR38RSF2iulAzc3I/sma4CoYxQP844rPYCNfzGDOHqa/YqVlwuuZgBx6M50/X8dKgzk0cm1qRg3+47mK2N+cQ==", "dev": true }, "json-parse-even-better-errors": { @@ -14589,9 +18547,9 @@ } }, "minimatch": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz", - "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -14638,30 +18596,6 @@ } } }, - "npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^3.0.0" - } - }, - "npm-install-checks": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.0.0.tgz", - "integrity": "sha512-SBU9oFglRVZnfElwAtF14NivyulDqF1VKqqwNsFW9HDcbHMAPHpRSsVFgKuwFGq/hVvWZExz62Th0kvxn/XE7Q==", - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", - "dev": true - }, "npm-package-arg": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", @@ -14694,18 +18628,6 @@ "ignore-walk": "^6.0.0" } }, - "npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", - "dev": true, - "requires": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", - "semver": "^7.3.5" - } - }, "npm-registry-fetch": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", @@ -14765,22 +18687,29 @@ "npm-normalize-package-bin": "^3.0.0" } }, - "read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, "requires": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "glob": "^9.2.0" + }, + "dependencies": { + "glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + } + } } }, - "rimraf": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.1.2.tgz", - "integrity": "sha512-BlIbgFryTbw3Dz6hyoWFhKk+unCcHMSkZGrTFVAx2WmttdBSonsdtRlwiuTbDqTKr+UlXIUqJVS4QT5tUzGENQ==", - "dev": true - }, "ssri": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", @@ -14831,28 +18760,22 @@ "requires": { "isexe": "^2.0.0" } - }, - "yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", - "dev": true } } }, "npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", + "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", "dev": true, "requires": { "semver": "^7.1.1" } }, "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", + "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", "dev": true }, "npm-package-arg": { @@ -14943,46 +18866,70 @@ "requires": { "brace-expansion": "^2.0.1" } + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true } } }, "npm-pick-manifest": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", - "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", "dev": true, "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", "semver": "^7.3.5" }, "dependencies": { "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "requires": { - "lru-cache": "^7.5.1" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" } }, - "npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true }, - "npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "builtins": "^5.0.0" } } } @@ -15393,9 +19340,9 @@ } }, "pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, "requires": { "@npmcli/git": "^3.0.0", @@ -15421,6 +19368,16 @@ "tar": "^6.1.11" }, "dependencies": { + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, "hosted-git-info": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", @@ -15430,6 +19387,30 @@ "lru-cache": "^7.5.1" } }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, "npm-package-arg": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", @@ -15441,6 +19422,36 @@ "semver": "^7.3.5", "validate-npm-package-name": "^4.0.0" } + }, + "npm-pick-manifest": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", + "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", + "dev": true, + "requires": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^2.0.0", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } } } }, @@ -15454,14 +19465,22 @@ } }, "parse-conflict-json": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz", - "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", + "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", "dev": true, "requires": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + } } }, "parse-github-url": { @@ -15524,6 +19543,30 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-scurry": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", + "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "dev": true, + "requires": { + "lru-cache": "^9.0.0", + "minipass": "^5.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", + "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "dev": true + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } + } + }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -15590,6 +19633,16 @@ } } }, + "postcss-selector-parser": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz", + "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -15597,17 +19650,42 @@ "dev": true }, "prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true }, + "pretty-format": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", + "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, "proc-log": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -15627,9 +19705,9 @@ "dev": true }, "promise-call-limit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", - "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", + "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==", "dev": true }, "promise-inflight": { @@ -15649,9 +19727,9 @@ } }, "prompts-ncu": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.1.tgz", - "integrity": "sha512-Hdd7GgV7b76Yh9FP9HL1D9xqtJCJdVPpiM2vDtuoc8W1KfweJe15gutFYmxkq83ViFaagFM8K0UcPCQ/tZq8bA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", + "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", "dev": true, "requires": { "kleur": "^4.0.1", @@ -15750,6 +19828,12 @@ "require-from-string": "^2.0.2" } }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -15828,17 +19912,31 @@ "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true } } }, "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dev": true, "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + } } }, "read-pkg": { @@ -16003,18 +20101,6 @@ "util-deprecate": "^1.0.1" } }, - "readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, "redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -16025,12 +20111,6 @@ "strip-indent": "^3.0.0" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "registry-auth-token": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", @@ -16255,13 +20335,14 @@ "dev": true }, "sigstore": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.0.0.tgz", - "integrity": "sha512-e+qfbn/zf1+rCza/BhIA//Awmf0v1pa5HQS8Xk8iXrn9bgytytVLqYD0P7NSqZ6IELTgq+tcDvLPkQjNHyWLNg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.4.0.tgz", + "integrity": "sha512-N7TRpSbFjY/TrFDg6yGAQSYBrQ5s6qmPiq4pD6fkv1LoyfMsLG0NwZWG2s5q+uttLHgyVyTa0Rogx2P78rN8kQ==", "dev": true, "requires": { + "@sigstore/protobuf-specs": "^0.1.0", "make-fetch-happen": "^11.0.1", - "tuf-js": "^1.0.0" + "tuf-js": "^1.1.3" }, "dependencies": { "@npmcli/fs": { @@ -16562,6 +20643,17 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -16571,6 +20663,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -16625,22 +20726,21 @@ "dev": true }, "syncpack": { - "version": "9.8.4", - "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-9.8.4.tgz", - "integrity": "sha512-i81rO+dHuJ2dO8YQq6SCExcyN0x9ZVTY7cVPn8pWjS5Dml0A8uM0cOaneOludFesdrLXMZUA/uEWa74ddBgkPQ==", + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-9.8.6.tgz", + "integrity": "sha512-4S4cUoKK9WenA/Wdk9GvlekzPR9PxC7sqcsUIsK4ypsa/pIYv8Ju1vxGNvp6Y1yI2S9EdCk0QJsB3/wRB8XYVw==", "dev": true, "requires": { - "@mobily/ts-belt": "3.13.1", "chalk": "4.1.2", - "commander": "10.0.0", - "cosmiconfig": "8.0.0", - "expect-more": "1.3.0", - "fs-extra": "11.1.0", + "commander": "10.0.1", + "cosmiconfig": "8.1.3", + "fs-extra": "11.1.1", "glob": "8.1.0", "minimatch": "6.2.0", "read-yaml-file": "2.1.0", - "semver": "7.3.8", - "zod": "3.20.6" + "semver": "7.5.0", + "tightrope": "0.1.0", + "zod": "3.21.4" }, "dependencies": { "brace-expansion": { @@ -16653,9 +20753,9 @@ } }, "cosmiconfig": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", - "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", "dev": true, "requires": { "import-fresh": "^3.2.1", @@ -16665,9 +20765,9 @@ } }, "fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -16699,6 +20799,15 @@ } } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "minimatch": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", @@ -16707,6 +20816,15 @@ "requires": { "brace-expansion": "^2.0.1" } + }, + "semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -16743,6 +20861,48 @@ "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true }, + "tempy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.0.tgz", + "integrity": "sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w==", + "dev": true, + "requires": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true + }, + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + } + } + }, "text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -16770,6 +20930,12 @@ "readable-stream": "3" } }, + "tightrope": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tightrope/-/tightrope-0.1.0.tgz", + "integrity": "sha512-HHHNYdCAIYwl1jOslQBT455zQpdeSo8/A346xpIb/uuqhSg+tCvYNsP5f11QW+z9VZ3vSX8YIfzTApjjuGH63w==", + "dev": true + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -16795,9 +20961,9 @@ "dev": true }, "treeverse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz", - "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", + "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==", "dev": true }, "trim-newlines": { @@ -16849,12 +21015,12 @@ } }, "tuf-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.0.tgz", - "integrity": "sha512-Tsqlm419OAlrkCE6rsf1WuPvww44vfK1ZHz+Uq9Mpq5JiV5qnJ9LLItvsbM9OipIIeSG3rydVBS4BmD40ts2uA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.4.tgz", + "integrity": "sha512-Lw2JRM3HTYhEtQJM2Th3aNCPbnXirtWMl065BawwmM2pX6XStH/ZO9e8T2hh0zk/HUa+1i6j+Lv6eDitKTau6A==", "dev": true, "requires": { - "@tufjs/models": "1.0.0", + "@tufjs/models": "1.0.3", "make-fetch-happen": "^11.0.1" }, "dependencies": { @@ -16877,52 +21043,51 @@ } }, "cacache": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", - "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", + "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", - "glob": "^8.0.1", + "glob": "^10.2.2", "lru-cache": "^7.7.1", - "minipass": "^4.0.0", + "minipass": "^5.0.0", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", "ssri": "^10.0.0", "tar": "^6.1.11", "unique-filename": "^3.0.0" } }, "fs-minipass": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", - "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, "requires": { - "minipass": "^4.0.0" + "minipass": "^5.0.0" } }, "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", + "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" } }, "make-fetch-happen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", - "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -16932,7 +21097,7 @@ "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", "lru-cache": "^7.7.1", - "minipass": "^4.0.0", + "minipass": "^5.0.0", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", @@ -16943,39 +21108,39 @@ } }, "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true }, "minipass-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", - "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, "requires": { "encoding": "^0.1.13", - "minipass": "^4.0.0", + "minipass": "^5.0.0", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" } }, "ssri": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", - "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "requires": { - "minipass": "^4.0.0" + "minipass": "^5.0.0" } }, "unique-filename": { @@ -17298,6 +21463,17 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -17446,9 +21622,9 @@ "dev": true }, "zod": { - "version": "3.20.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.20.6.tgz", - "integrity": "sha512-oyu0m54SGCtzh6EClBVqDDlAYRz4jrVtKwQ7ZnsEmMI9HnzuZFj8QFwAY1M5uniIYACdGvv0PBWPF2kO0aNofA==", + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", "dev": true } } diff --git a/package.json b/package.json index e4b4890ce..a943240b5 100644 --- a/package.json +++ b/package.json @@ -23,19 +23,19 @@ "@types/glob": "^7.2.0", "@types/node": "^17.0.45", "@types/yargs": "^16.0.5", - "@typescript-eslint/eslint-plugin": "^5.54.0", - "@typescript-eslint/parser": "^5.54.0", + "@typescript-eslint/eslint-plugin": "^5.59.2", + "@typescript-eslint/parser": "^5.59.2", "detect-indent": "^6.1.0", - "eslint": "^8.35.0", - "eslint-config-prettier": "^8.6.0", + "eslint": "^8.39.0", + "eslint-config-prettier": "^8.8.0", "eslint-plugin-simple-import-sort": "^7.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", - "lerna": "^6.5.1", - "npm-check-updates": "^16.7.10", + "lerna": "^6.6.1", + "npm-check-updates": "^16.10.9", "p-queue": "^6.6.2", - "prettier": "2.8.4", - "syncpack": "^9.8.4", + "prettier": "2.8.8", + "syncpack": "^9.8.6", "typescript": "~4.4.4", "yargs": "^16.2.0" } diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 7f0d08dae..8b10ee65c 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -10,8 +10,8 @@ "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", - "@yarnpkg/fslib": "2.10.1", - "@yarnpkg/libzip": "2.2.4", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.2", "chokidar": "^3.5.3", "command-line-args": "^5.2.1", @@ -22,7 +22,7 @@ "typescript-char": "^0.0.0", "vscode-jsonrpc": "8.1.0", "vscode-languageserver": "8.1.0", - "vscode-languageserver-textdocument": "^1.0.9", + "vscode-languageserver-textdocument": "^1.0.10", "vscode-languageserver-types": "3.17.3", "vscode-uri": "^3.0.7" }, @@ -1044,11 +1044,11 @@ "dev": true }, "node_modules/@yarnpkg/fslib": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.1.tgz", - "integrity": "sha512-pVMLtOYu87N5y5G2lyPNYTY2JbTco99v7nGFI34Blx01Ct9LmoKVOc91vnLOYIMMljKr1c8xs1O2UamRdMG5Pg==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", + "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", "dependencies": { - "@yarnpkg/libzip": "^2.2.4", + "@yarnpkg/libzip": "^2.3.0", "tslib": "^1.13.0" }, "engines": { @@ -1056,11 +1056,11 @@ } }, "node_modules/@yarnpkg/libzip": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.2.4.tgz", - "integrity": "sha512-QP0vUP+w0d7Jlo7jqTnlRChSnIB/dOF7nJFLD/gsPvFIHsVWLQQuAiolOcXQUD2hezLD1mQd2qb0yOKqPYRcfQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", + "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", "dependencies": { - "@types/emscripten": "^1.38.0", + "@types/emscripten": "^1.39.6", "tslib": "^1.13.0" }, "engines": { @@ -4213,9 +4213,9 @@ } }, "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.9.tgz", - "integrity": "sha512-NPfHVGFW2/fQEWHspr8x3PXhRgtFbuDZdl7p6ifuN3M7nk2Yjf5POr/NfDBuAiQG88DehDyJ7nGOT+p+edEtbw==" + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.10.tgz", + "integrity": "sha512-dPA6WqtAQJ/Iopm0Hrj11VvaKxsEcm62jpqyaYbY0xuvUffeWAn77f3VKr2SCsJphSyEw4Fjkjqm2gQ24KQfrA==" }, "node_modules/vscode-languageserver-types": { "version": "3.17.3", @@ -5246,20 +5246,20 @@ "dev": true }, "@yarnpkg/fslib": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.1.tgz", - "integrity": "sha512-pVMLtOYu87N5y5G2lyPNYTY2JbTco99v7nGFI34Blx01Ct9LmoKVOc91vnLOYIMMljKr1c8xs1O2UamRdMG5Pg==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", + "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", "requires": { - "@yarnpkg/libzip": "^2.2.4", + "@yarnpkg/libzip": "^2.3.0", "tslib": "^1.13.0" } }, "@yarnpkg/libzip": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.2.4.tgz", - "integrity": "sha512-QP0vUP+w0d7Jlo7jqTnlRChSnIB/dOF7nJFLD/gsPvFIHsVWLQQuAiolOcXQUD2hezLD1mQd2qb0yOKqPYRcfQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", + "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", "requires": { - "@types/emscripten": "^1.38.0", + "@types/emscripten": "^1.39.6", "tslib": "^1.13.0" } }, @@ -7619,9 +7619,9 @@ } }, "vscode-languageserver-textdocument": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.9.tgz", - "integrity": "sha512-NPfHVGFW2/fQEWHspr8x3PXhRgtFbuDZdl7p6ifuN3M7nk2Yjf5POr/NfDBuAiQG88DehDyJ7nGOT+p+edEtbw==" + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.10.tgz", + "integrity": "sha512-dPA6WqtAQJ/Iopm0Hrj11VvaKxsEcm62jpqyaYbY0xuvUffeWAn77f3VKr2SCsJphSyEw4Fjkjqm2gQ24KQfrA==" }, "vscode-languageserver-types": { "version": "3.17.3", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 9c0d53079..215d4e8a1 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -16,8 +16,8 @@ }, "dependencies": { "@iarna/toml": "2.2.5", - "@yarnpkg/fslib": "2.10.1", - "@yarnpkg/libzip": "2.2.4", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.2", "chokidar": "^3.5.3", "command-line-args": "^5.2.1", @@ -28,7 +28,7 @@ "typescript-char": "^0.0.0", "vscode-jsonrpc": "8.1.0", "vscode-languageserver": "8.1.0", - "vscode-languageserver-textdocument": "^1.0.9", + "vscode-languageserver-textdocument": "^1.0.10", "vscode-languageserver-types": "3.17.3", "vscode-uri": "^3.0.7" }, diff --git a/packages/pyright-internal/src/analyzer/importStatementUtils.ts b/packages/pyright-internal/src/analyzer/importStatementUtils.ts index 0e76dc83b..d9ea485ec 100644 --- a/packages/pyright-internal/src/analyzer/importStatementUtils.ts +++ b/packages/pyright-internal/src/analyzer/importStatementUtils.ts @@ -13,7 +13,7 @@ import { CancellationToken } from 'vscode-languageserver'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { addIfUnique, createMapFromItems } from '../common/collectionUtils'; import { TextEditAction } from '../common/editAction'; -import { FileSystem } from '../common/fileSystem'; +import { ReadOnlyFileSystem } from '../common/fileSystem'; import { getDirectoryPath, getFileName, @@ -808,7 +808,7 @@ function getConsecutiveNumberPairs(indices: number[]) { } export function getRelativeModuleName( - fs: FileSystem, + fs: ReadOnlyFileSystem, sourcePath: string, targetPath: string, ignoreFolderStructure = false, diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index caf452c7b..e242ab2a1 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -12,42 +12,35 @@ import { CancellationToken, CompletionItem, DocumentSymbol } from 'vscode-langua import { CompletionList } from 'vscode-languageserver-types'; import { TextDocument } from 'vscode-languageserver-textdocument'; -import { Commands } from '../commands/commands'; import { OperationCanceledException, throwIfCancellationRequested } from '../common/cancellationUtils'; -import { appendArray, arrayEquals } from '../common/collectionUtils'; +import { appendArray } from '../common/collectionUtils'; import { ConfigOptions, ExecutionEnvironment, matchFileSpecs } from '../common/configOptions'; import { ConsoleInterface, StandardConsole } from '../common/console'; import * as debug from '../common/debug'; -import { assert, assertNever } from '../common/debug'; -import { Diagnostic, DiagnosticCategory } from '../common/diagnostic'; +import { assert } from '../common/debug'; +import { Diagnostic } from '../common/diagnostic'; import { FileDiagnostics } from '../common/diagnosticSink'; -import { FileEditAction, FileEditActions, FileOperations } from '../common/editAction'; +import { FileEditAction } from '../common/editAction'; import { Extensions, ProgramView } from '../common/extensibility'; import { LogTracker } from '../common/logTracker'; import { combinePaths, getDirectoryPath, - getFileExtension, getFileName, getRelativePath, - isFile, makeDirectories, normalizePath, normalizePathCase, stripFileExtension, } from '../common/pathUtils'; -import { convertPositionToOffset, convertRangeToTextRange, convertTextRangeToRange } from '../common/positionUtils'; +import { convertPositionToOffset, convertRangeToTextRange } from '../common/positionUtils'; import { computeCompletionSimilarity } from '../common/stringUtils'; -import { TextEditTracker } from '../common/textEditTracker'; -import { Position, Range, TextRange, doRangesIntersect, getEmptyRange } from '../common/textRange'; -import { TextRangeCollection } from '../common/textRangeCollection'; +import { Position, Range, doRangesIntersect } from '../common/textRange'; import { Duration, timingStats } from '../common/timing'; -import { applyTextEditsToString } from '../common/workspaceEditUtils'; import { AutoImportOptions, AutoImportResult, AutoImporter, - ImportFormat, ModuleSymbolMap, buildModuleSymbolsMap, } from '../languageService/autoImporter'; @@ -57,35 +50,20 @@ import { CompletionOptions, CompletionResultsList, } from '../languageService/completionProvider'; -import { DocumentSymbolCollector, DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; import { IndexOptions, IndexResults, WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; -import { ImportAdder, ImportData } from '../languageService/importAdder'; -import { getModuleStatementIndentation, reindentSpan } from '../languageService/indentationUtils'; -import { getInsertionPointForSymbolUnderModule } from '../languageService/insertionPointUtils'; -import { ReferenceCallback, ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; -import { RenameModuleProvider } from '../languageService/renameModuleProvider'; -import { ParseNodeType, StatementNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { AbsoluteModuleDescriptor, ImportLookupResult, LookupImportOptions } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { CacheManager } from './cacheManager'; import { CircularDependency } from './circularDependency'; -import { Declaration, isVariableDeclaration } from './declaration'; import { ImportResolver } from './importResolver'; import { ImportResult, ImportType } from './importResult'; -import { - findNodeByOffset, - findNodeByPosition, - getDocString, - getDottedName, - getDottedNameWithGivenNodeAsLastName, - isBlankLine, -} from './parseTreeUtils'; +import { findNodeByOffset, getDocString } from './parseTreeUtils'; import { Scope } from './scope'; import { getScopeForNode } from './scopeUtils'; import { IPythonMode, SourceFile } from './sourceFile'; import { collectImportedByFiles, isUserCode } from './sourceFileInfoUtils'; -import { SourceMapper, isStubFile } from './sourceMapper'; +import { SourceMapper } from './sourceMapper'; import { Symbol } from './symbol'; import { isPrivateOrProtectedName } from './symbolNameUtils'; import { createTracePrinter } from './tracePrinter'; @@ -1180,24 +1158,19 @@ export class Program { if (!sourceFileInfo) { return undefined; } - let sourceMapper: SourceMapper | undefined; + const completionResult = this._logTracker.log( `completion at ${filePath}:${position.line}:${position.character}`, (ls) => { const result = this._runEvaluatorWithCancellationToken(token, () => { this._bindFile(sourceFileInfo); - const execEnv = this._configOptions.findExecEnvironment(filePath); - sourceMapper = this._createSourceMapper(execEnv, token, sourceFileInfo, /* mapCompiled */ true); return sourceFileInfo.sourceFile.getCompletionsForPosition( + this, position, workspacePath, - this._configOptions, - this._importResolver, this._lookUpImport, - this._evaluator!, options, - sourceMapper, nameMap, libraryMap, () => @@ -1225,6 +1198,14 @@ export class Program { const parseResults = sourceFileInfo.sourceFile.getParseResults(); if (parseResults?.parseTree && parseResults?.text) { + const execEnv = this._configOptions.findExecEnvironment(filePath); + const sourceMapper: SourceMapper = this._createSourceMapper( + execEnv, + token, + sourceFileInfo, + /* mapCompiled */ true + ); + const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); if (offset !== undefined && sourceMapper) { await Promise.all( @@ -1262,15 +1243,10 @@ export class Program { } this._bindFile(sourceFileInfo); - - const execEnv = this._configOptions.findExecEnvironment(filePath); sourceFileInfo.sourceFile.resolveCompletionItem( - this._configOptions, - this._importResolver, + this, this._lookUpImport, - this._evaluator!, options, - this._createSourceMapper(execEnv, token, sourceFileInfo, /* mapCompiled */ true), nameMap, libraryMap, () => @@ -1286,459 +1262,6 @@ export class Program { }); } - renameModule(path: string, newPath: string, token: CancellationToken): FileEditActions | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - if (isFile(this.fileSystem, path)) { - const fileInfo = this.getSourceFileInfo(path); - if (!fileInfo) { - return undefined; - } - } - - const renameModuleProvider = RenameModuleProvider.createForModule( - this._importResolver, - this._configOptions, - this._evaluator!, - path, - newPath, - token - ); - if (!renameModuleProvider) { - return undefined; - } - - this._processModuleReferences(renameModuleProvider, renameModuleProvider.lastModuleName, path); - return { edits: renameModuleProvider.getEdits(), fileOperations: [] }; - }); - } - - moveSymbolAtPosition( - filePath: string, - newFilePath: string, - position: Position, - options: { importFormat: ImportFormat }, - token: CancellationToken - ): FileEditActions | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileExt = getFileExtension(filePath); - const destFileExt = getFileExtension(newFilePath); - if (sourceFileExt.toLowerCase() !== destFileExt.toLowerCase()) { - // Don't allow moving a symbol from py to pyi or vice versa. - return undefined; - } - - const fileInfo = this.getSourceFileInfo(filePath); - if (!fileInfo) { - return undefined; - } - - const newFileInfo = this.getBoundSourceFileInfo(newFilePath); - if (fileInfo === newFileInfo) { - // Can't move symbol to the same file. - return undefined; - } - - this._bindFile(fileInfo); - const parseResults = fileInfo.sourceFile.getParseResults(); - if (!parseResults) { - return undefined; - } - - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); - if (offset === undefined) { - return undefined; - } - - const node = findNodeByOffset(parseResults.parseTree, offset); - if (node === undefined) { - return undefined; - } - - // If this isn't a name node, there are no references to be found. - if ( - node.nodeType !== ParseNodeType.Name || - !RenameModuleProvider.canMoveSymbol(this._configOptions, this._evaluator!, node) - ) { - return undefined; - } - - // We will try to - // 1. Find symbol to move. - // 2. Update all references to the symbol to new location. - // 3. Remove the existing symbol. - // 4. Insert the symbol to the destination module. - // 5. Insert imports required for the symbol moved to the destination module. - // 6. Remove import no longer needed from the original module. - // - // Here all changes are done to edits, no features in LS will apply changes to - // program directly. All modification is done through LSP by a edit request so - // things like undo or edit stacks UI works. - - // 1. Find symbol to move. - const execEnv = this._configOptions.findExecEnvironment(filePath); - const declarations = DocumentSymbolCollector.getDeclarationsForNode( - node, - this._evaluator!, - /* resolveLocalNames */ false, - DocumentSymbolCollectorUseCase.Rename, - token, - this._createSourceMapper(execEnv, token, fileInfo) - ); - - const renameModuleProvider = RenameModuleProvider.createForSymbol( - this._importResolver, - this._configOptions, - this._evaluator!, - filePath, - newFilePath, - declarations, - token - ); - if (!renameModuleProvider) { - return undefined; - } - - // 2. Update affected references. - this._processModuleReferences(renameModuleProvider, node.value, filePath); - - // 3. Remove existing symbols. - const sourceDecl = renameModuleProvider.declarations.find( - (d) => d.node && getFileExtension(d.path) === sourceFileExt - ); - if (!sourceDecl) { - // Can't find symbol we can move. - return undefined; - } - - const symbolRange = RenameModuleProvider.getSymbolTextRange(parseResults, sourceDecl); - const importAdder = new ImportAdder(this._configOptions, this._importResolver, this._evaluator!); - const collectedImports = importAdder.collectImportsForSymbolsUsed(parseResults, symbolRange, token); - - let insertionPoint: number | undefined = 0; - let insertionIndentation = 0; - - const newFileParseResults = newFileInfo?.sourceFile.getParseResults(); - if (newFileParseResults) { - const insertBefore = renameModuleProvider.tryGetFirstSymbolUsage(newFileParseResults); - insertionPoint = getInsertionPointForSymbolUnderModule( - this._evaluator!, - newFileParseResults, - node.value, - { - symbolDeclToIgnore: sourceDecl.path, - insertBefore, - } - ); - if (insertionPoint === undefined) { - // No place to insert the symbol. - return undefined; - } - - insertionIndentation = getModuleStatementIndentation(newFileParseResults); - } - - const reindentResult = reindentSpan(parseResults, symbolRange, insertionIndentation); - const fullRange = RenameModuleProvider.getSymbolFullStatementTextRange(parseResults, sourceDecl); - - renameModuleProvider.textEditTracker.addEdit( - filePath, - convertTextRangeToRange( - TextRange.combine([reindentResult.originalSpan, fullRange])!, - parseResults.tokenizerOutput.lines - ), - '' - ); - - // 4. Add the symbol to the destination file. - const fileOperations: FileOperations[] = []; - let codeSnippetToInsert = reindentResult.text; - if (newFileParseResults) { - const range = convertTextRangeToRange( - { start: insertionPoint, length: 0 }, - newFileParseResults.tokenizerOutput.lines - ); - - // If we are adding at the end of line (ex, end of a file), - // add new lines. - const newLinesToAdd = _getNumberOfBlankLinesToInsert(newFileParseResults, sourceDecl, range.end); - codeSnippetToInsert = '\n'.repeat(newLinesToAdd) + codeSnippetToInsert; - - renameModuleProvider.textEditTracker.addEdit(newFilePath, range, codeSnippetToInsert); - } else { - fileOperations.push({ kind: 'create', filePath: newFilePath }); - renameModuleProvider.textEditTracker.addEdit(newFilePath, getEmptyRange(), codeSnippetToInsert); - } - - // 5. Insert imports required for the symbol moved to the destination module. - // - // Since step 5 and 6 can create nested edits, we clone the program and apply all changes to re-calculate - // edits we need to apply to the destination file. The same workflow as `fix all` but done in program level - // not service level. - const cloned = this.clone(); - - let edits = renameModuleProvider.getEdits(); - - const textAfterSymbolAdded = applyTextEditsToString( - edits.filter((v) => v.filePath === newFilePath), - newFileParseResults?.tokenizerOutput.lines ?? new TextRangeCollection([]), - newFileInfo?.sourceFile.getFileContent() ?? '' - ); - - _updateFileContent(cloned, newFilePath, textAfterSymbolAdded); - - const textAfterImportsAdded = _tryGetTextAfterImportsAdded( - cloned, - newFilePath, - collectedImports, - insertionPoint, - token - ); - - edits = _updateFileEditActions( - edits, - newFilePath, - newFileParseResults, - textAfterSymbolAdded, - textAfterImportsAdded - ); - - // 6. Remove imports no longer required from original module. - const textAfterSymbolRemoved = applyTextEditsToString( - edits.filter((v) => v.filePath === filePath), - parseResults.tokenizerOutput.lines, - fileInfo.sourceFile.getFileContent()! - ); - - _updateFileContent(cloned, filePath, textAfterSymbolRemoved); - - const textAfterUnusedImportsRemoved = _tryGetTextAfterUnusedImportsRemoved( - cloned, - filePath, - collectedImports, - 0, - token - ); - - edits = _updateFileEditActions( - edits, - filePath, - parseResults, - textAfterSymbolRemoved, - textAfterUnusedImportsRemoved - ); - - cloned.dispose(); - - return { - edits, - fileOperations, - }; - - function _updateFileEditActions( - edits: FileEditAction[], - filePath: string, - parseResults: ParseResults | undefined, - oldText: string, - newText: string | undefined - ) { - if (newText === undefined || oldText === newText) { - return edits; - } - - // There were nested edits. Replace whole file. - edits = edits.filter((v) => v.filePath !== filePath); - edits.push({ - filePath, - range: parseResults - ? convertTextRangeToRange(parseResults.parseTree, parseResults.tokenizerOutput.lines) - : getEmptyRange(), - replacementText: newText, - }); - - return edits; - } - - function _tryGetTextAfterImportsAdded( - cloned: Program, - filePath: string, - importData: ImportData, - insertionPoint: number, - token: CancellationToken - ) { - const sourceFile = cloned.getBoundSourceFile(filePath); - const parseResults = sourceFile?.getParseResults(); - if (!parseResults) { - return undefined; - } - - const insertAddEdits = importAdder.applyImports( - importData, - filePath, - parseResults, - insertionPoint, - options.importFormat, - token - ); - - return applyTextEditsToString( - insertAddEdits, - parseResults.tokenizerOutput.lines, - sourceFile!.getFileContent()! - ); - } - - function _tryGetTextAfterUnusedImportsRemoved( - cloned: Program, - filePath: string, - importData: ImportData, - attempt: number, - token: CancellationToken - ): string | undefined { - throwIfCancellationRequested(token); - - cloned.analyzeFile(filePath, token); - - const sourceFile = cloned.getBoundSourceFile(filePath); - const parseResults = sourceFile?.getParseResults(); - if (!parseResults) { - return undefined; - } - - const tracker = new TextEditTracker(); - for (const diagnostic of cloned - .getDiagnosticsForRange( - filePath, - convertTextRangeToRange(parseResults.parseTree, parseResults.tokenizerOutput.lines) - ) - .filter( - (d) => - d.category === DiagnosticCategory.UnusedCode && - d.getActions()?.some((a) => a.action === Commands.unusedImport) - )) { - const nameNode = findNodeByPosition( - parseResults.parseTree, - diagnostic.range.start, - parseResults.tokenizerOutput.lines - ); - - if (nameNode?.nodeType !== ParseNodeType.Name) { - continue; - } - - // decl is synthesized. there is no node associated with the decl. - // ex) import a or import a.b - const dottedName1 = - nameNode.parent?.nodeType === ParseNodeType.ModuleName ? nameNode.parent.nameParts : [nameNode]; - - for (const [decl, names] of importData.declarations) { - if (decl.node) { - if (TextRange.containsRange(decl.node, nameNode)) { - tracker.removeNodes({ node: nameNode, parseResults: parseResults }); - break; - } - } - - const dottedName2 = getDottedName(getDottedNameWithGivenNodeAsLastName(names[0])); - if (dottedName2 && arrayEquals(dottedName1, dottedName2, (e1, e2) => e1.value === e2.value)) { - tracker.removeNodes({ node: nameNode, parseResults: parseResults }); - break; - } - } - } - - const oldText = sourceFile!.getFileContent()!; - const newText = applyTextEditsToString( - tracker.getEdits(token).filter((v) => v.filePath === filePath), - parseResults.tokenizerOutput.lines, - oldText - ); - - // We will attempt to remove unused imports multiple times since removing 1 unused import - // could make another import unused. This is due to how we calculate which import is not used. - // ex) import os, os.path, os.path.xxx - // `os.path` and `os.path.xxx` will be marked as used due to `import os`. - // once `os` is removed `os.path` will be marked as unused and so on. - // We will attempt to remove those chained unused imports up to 10 chain. - if (attempt > 10 || oldText === newText) { - return newText; - } - - _updateFileContent(cloned, filePath, newText); - return _tryGetTextAfterUnusedImportsRemoved(cloned, filePath, importData, attempt + 1, token); - } - }); - - function _updateFileContent(cloned: Program, filePath: string, text: string) { - const info = cloned.getSourceFileInfo(filePath); - const version = info ? (info.sourceFile.getClientVersion() ?? 0) + 1 : 0; - const chainedFilePath = info ? info.chainedSourceFile?.sourceFile.getFilePath() : undefined; - const ipythonMode = info ? info.sourceFile.getIPythonMode() : IPythonMode.None; - const isTracked = info ? info.isTracked : true; - const realFilePath = info ? info.sourceFile.getRealFilePath() : filePath; - - cloned.setFileOpened(filePath, version, text, { - chainedFilePath, - ipythonMode, - isTracked, - realFilePath, - }); - } - - function _getNumberOfBlankLinesToInsert(parseResults: ParseResults, decl: Declaration, position: Position) { - if (position.line === 0 && position.character === 0) { - return 0; - } - - let previousStatement: StatementNode | undefined; - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); - if (offset && parseResults.parseTree.statements.length > 0) { - previousStatement = parseResults.parseTree.statements.reduce((prev, curr) => - offset < curr.start ? prev : curr - ); - } - - // This basically try to add some blank lines after the last line with text. - let linesToAdd = 0; - if (previousStatement) { - if (isVariableDeclaration(decl)) { - switch (previousStatement.nodeType) { - case ParseNodeType.StatementList: - // Small statement such as call, assignment, etc. - linesToAdd = 0; - break; - case ParseNodeType.Class: - case ParseNodeType.Function: - linesToAdd = 2; - break; - default: - // any other statement such as if, while, etc. we will add 1 blank line. - linesToAdd = 1; - } - } else { - linesToAdd = 2; - } - } - - // If the position is not at the beginning of the line, we need to add 1 more '\n' - // to start from blank line. - linesToAdd += position.character !== 0 ? 1 : 0; - - // If there are already blank lines, we only add the difference. - const desiredBlankLines = linesToAdd; - const startingLine = position.character !== 0 ? position.line : position.line - 1; - for (let i = 0; i < desiredBlankLines; i++) { - const currentLine = startingLine - i; - if (currentLine < 0 || !isBlankLine(parseResults, currentLine)) { - break; - } - - linesToAdd--; - } - - return linesToAdd; - } - } - clone() { const program = new Program( this._importResolver, @@ -1775,185 +1298,6 @@ export class Program { return program; } - canRenameSymbolAtPosition( - filePath: string, - position: Position, - isDefaultWorkspace: boolean, - allowModuleRename: boolean, - token: CancellationToken - ): { range: Range; declarations: Declaration[] } | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - this._bindFile(sourceFileInfo); - const referencesResult = this._getReferenceResult( - sourceFileInfo, - filePath, - position, - allowModuleRename, - token - ); - if (!referencesResult) { - return undefined; - } - - if ( - referencesResult.containsOnlyImportDecls && - !this._supportRenameModule(referencesResult.declarations, isDefaultWorkspace) - ) { - return undefined; - } - - const renameMode = this._getRenameSymbolMode(sourceFileInfo, referencesResult, isDefaultWorkspace); - if (renameMode === 'none') { - return undefined; - } - - // Return the range of the symbol. - const parseResult = sourceFileInfo.sourceFile.getParseResults()!; - return { - range: convertTextRangeToRange(referencesResult.nodeAtOffset, parseResult.tokenizerOutput.lines), - declarations: referencesResult.declarations, - }; - }); - } - - renameSymbolAtPosition( - filePath: string, - position: Position, - newName: string, - isDefaultWorkspace: boolean, - allowModuleRename: boolean, - token: CancellationToken - ): FileEditActions | undefined { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - this._bindFile(sourceFileInfo); - - const referencesResult = this._getReferenceResult( - sourceFileInfo, - filePath, - position, - allowModuleRename, - token - ); - if (!referencesResult) { - return undefined; - } - - if (referencesResult.containsOnlyImportDecls) { - // All decls must be on a user file. - if (!this._supportRenameModule(referencesResult.declarations, isDefaultWorkspace)) { - return undefined; - } - - const moduleInfo = RenameModuleProvider.getRenameModulePathInfo( - RenameModuleProvider.getRenameModulePath(referencesResult.declarations), - newName - ); - if (!moduleInfo) { - // Can't figure out module to rename. - return undefined; - } - - const editActions = this.renameModule(moduleInfo.filePath, moduleInfo.newFilePath, token); - - // Add file system rename. - editActions?.fileOperations.push({ - kind: 'rename', - oldFilePath: moduleInfo.filePath, - newFilePath: moduleInfo.newFilePath, - }); - - if (isStubFile(moduleInfo.filePath)) { - const matchingFiles = this._importResolver.getSourceFilesFromStub( - moduleInfo.filePath, - this._configOptions.findExecEnvironment(filePath), - /* mapCompiled */ false - ); - - for (const matchingFile of matchingFiles) { - const matchingFileInfo = RenameModuleProvider.getRenameModulePathInfo(matchingFile, newName); - if (matchingFileInfo) { - editActions?.fileOperations.push({ - kind: 'rename', - oldFilePath: matchingFileInfo.filePath, - newFilePath: matchingFileInfo.newFilePath, - }); - } - } - } - - return editActions; - } - - const referenceProvider = new ReferencesProvider(this, token); - const renameMode = this._getRenameSymbolMode(sourceFileInfo, referencesResult, isDefaultWorkspace); - switch (renameMode) { - case 'singleFileMode': - referenceProvider.addReferencesToResult( - sourceFileInfo.sourceFile.getFilePath(), - /* includeDeclaration */ true, - referencesResult - ); - break; - - case 'multiFileMode': { - for (const curSourceFileInfo of this._sourceFileList) { - // Make sure we only add user code to the references to prevent us - // from accidentally changing third party library or type stub. - if (isUserCode(curSourceFileInfo)) { - // Make sure searching symbol name exists in the file. - const content = curSourceFileInfo.sourceFile.getFileContent() ?? ''; - if (!referencesResult.symbolNames.some((s) => content.search(s) >= 0)) { - continue; - } - - this._bindFile(curSourceFileInfo, content); - - referenceProvider.addReferencesToResult( - curSourceFileInfo.sourceFile.getFilePath(), - /* includeDeclaration */ true, - referencesResult - ); - } - - // This operation can consume significant memory, so check - // for situations where we need to discard the type cache. - this._handleMemoryHighUsage(); - } - break; - } - - case 'none': - // Rename is not allowed. - // ex) rename symbols from libraries. - return undefined; - - default: - assertNever(renameMode); - } - - const edits: FileEditAction[] = []; - referencesResult.locations.forEach((loc) => { - edits.push({ - filePath: loc.path, - range: loc.range, - replacementText: newName, - }); - }); - - return { edits, fileOperations: [] }; - }); - } - // Returns a value from 0 to 1 (or more) indicating how "full" the cache is // relative to some predetermined high-water mark. We'll compute this value // based on two easy-to-compute metrics: the number of entries in the type @@ -1978,147 +1322,6 @@ export class Program { return this._createSourceMapper(execEnv, CancellationToken.None, /* from */ from, /* mapCompiled */ false); } - private _getRenameSymbolMode( - sourceFileInfo: SourceFileInfo, - referencesResult: ReferencesResult, - isDefaultWorkspace: boolean - ) { - // We have 2 different cases - // Single file mode. - // 1. rename on default workspace (ex, standalone file mode). - // 2. rename local symbols. - // 3. rename symbols defined in the non user open file. - // - // and Multi file mode. - // 1. rename public symbols defined in user files on regular workspace (ex, open folder mode). - const userFile = isUserCode(sourceFileInfo); - if ( - isDefaultWorkspace || - (userFile && !referencesResult.requiresGlobalSearch) || - (!userFile && - sourceFileInfo.isOpenByClient && - referencesResult.declarations.every((d) => this.getSourceFileInfo(d.path) === sourceFileInfo)) - ) { - return 'singleFileMode'; - } - - if (referencesResult.declarations.every((d) => isUserCode(this.getSourceFileInfo(d.path)))) { - return 'multiFileMode'; - } - - // Rename is not allowed. - // ex) rename symbols from libraries. - return 'none'; - } - - private _supportRenameModule(declarations: Declaration[], isDefaultWorkspace: boolean) { - // Rename module is not supported for standalone file and all decls must be on a user file. - return !isDefaultWorkspace && declarations.every((d) => isUserCode(this.getSourceFileInfo(d.path))); - } - - private _getReferenceResult( - sourceFileInfo: SourceFileInfo, - filePath: string, - position: Position, - allowModuleRename: boolean, - token: CancellationToken - ) { - const execEnv = this._configOptions.findExecEnvironment(filePath); - const referencesResult = this._getDeclarationForPosition( - sourceFileInfo, - position, - DocumentSymbolCollectorUseCase.Rename, - this._createSourceMapper(execEnv, token), - token - ); - - if (!referencesResult) { - return undefined; - } - - if (allowModuleRename && referencesResult.containsOnlyImportDecls) { - return referencesResult; - } - - if (referencesResult.nonImportDeclarations.length === 0) { - // There is no symbol we can rename. - return undefined; - } - - // Use declarations that doesn't contain import decls. - return new ReferencesResult( - referencesResult.requiresGlobalSearch, - referencesResult.nodeAtOffset, - referencesResult.symbolNames, - referencesResult.nonImportDeclarations, - referencesResult.useCase - ); - } - - private _getDeclarationForPosition( - sourceFileInfo: SourceFileInfo, - position: Position, - useCase: DocumentSymbolCollectorUseCase, - sourceMapper: SourceMapper, - token: CancellationToken, - reporter?: ReferenceCallback - ) { - // If we have no completed analysis job, there's nothing to do. - const parseResults = sourceFileInfo.sourceFile.getParseResults(); - if (!parseResults) { - return undefined; - } - - return ReferencesProvider.getDeclarationForPosition( - sourceMapper, - parseResults, - sourceFileInfo.sourceFile.getFilePath(), - position, - this._evaluator!, - reporter, - useCase, - token, - Array.from(collectImportedByFiles(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile) - ); - } - - private _processModuleReferences( - renameModuleProvider: RenameModuleProvider, - filteringText: string, - currentFilePath: string - ) { - // _sourceFileList contains every user files that match "include" pattern including - // py file even if corresponding pyi exists. - for (const currentFileInfo of this._sourceFileList) { - // Make sure we only touch user code to prevent us - // from accidentally changing third party library or type stub. - if (!isUserCode(currentFileInfo)) { - continue; - } - - // If module name isn't mentioned in the current file, skip the file - // except the file that got actually renamed/moved. - // The file that got moved might have relative import paths we need to update. - const filePath = currentFileInfo.sourceFile.getFilePath(); - const content = currentFileInfo.sourceFile.getFileContent() ?? ''; - if (filePath !== currentFilePath && content.indexOf(filteringText) < 0) { - continue; - } - - this._bindFile(currentFileInfo, content); - const parseResult = currentFileInfo.sourceFile.getParseResults(); - if (!parseResult) { - continue; - } - - renameModuleProvider.renameReferences(parseResult); - - // This operation can consume significant memory, so check - // for situations where we need to discard the type cache. - this._handleMemoryHighUsage(); - } - } - private _handleMemoryHighUsage() { const cacheUsage = this._cacheManager.getCacheUsage(); diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 01d930526..71d68f794 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -23,7 +23,7 @@ import { CommandLineOptions } from '../common/commandLineOptions'; import { ConfigOptions, matchFileSpecs } from '../common/configOptions'; import { ConsoleInterface, LogLevel, StandardConsole, log } from '../common/console'; import { Diagnostic } from '../common/diagnostic'; -import { FileEditAction, FileEditActions } from '../common/editAction'; +import { FileEditAction } from '../common/editAction'; import { Extensions, ProgramView } from '../common/extensibility'; import { FileSystem, FileWatcher, FileWatcherEventType, ignoredWatchEventFunction } from '../common/fileSystem'; import { Host, HostFactory, NoAccessHost } from '../common/host'; @@ -49,7 +49,7 @@ import { } from '../common/pathUtils'; import { Position, Range } from '../common/textRange'; import { timingStats } from '../common/timing'; -import { AutoImportOptions, ImportFormat } from '../languageService/autoImporter'; +import { AutoImportOptions } from '../languageService/autoImporter'; import { AbbreviationMap, CompletionOptions, CompletionResultsList } from '../languageService/completionProvider'; import { WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; import { AnalysisCompleteCallback } from './analysis'; @@ -435,54 +435,6 @@ export class AnalyzerService { ); } - moveSymbolAtPosition( - filePath: string, - newFilePath: string, - position: Position, - options: { importFormat: ImportFormat }, - token: CancellationToken - ): FileEditActions | undefined { - return this._program.moveSymbolAtPosition(filePath, newFilePath, position, options, token); - } - - renameModule(filePath: string, newFilePath: string, token: CancellationToken): FileEditActions | undefined { - return this._program.renameModule(filePath, newFilePath, token); - } - - canRenameSymbolAtPosition( - filePath: string, - position: Position, - isDefaultWorkspace: boolean, - allowModuleRename: boolean, - token: CancellationToken - ) { - return this._program.canRenameSymbolAtPosition( - filePath, - position, - isDefaultWorkspace, - allowModuleRename, - token - ); - } - - renameSymbolAtPosition( - filePath: string, - position: Position, - newName: string, - isDefaultWorkspace: boolean, - allowModuleRename: boolean, - token: CancellationToken - ): FileEditActions | undefined { - return this._program.renameSymbolAtPosition( - filePath, - position, - newName, - isDefaultWorkspace, - allowModuleRename, - token - ); - } - printStats() { this._console.info(''); this._console.info('Analysis stats'); diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 90a0c02f0..c975309d7 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -18,7 +18,7 @@ import { assert } from '../common/debug'; import { Diagnostic, DiagnosticCategory, TaskListToken, convertLevelToCategory } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { DiagnosticSink, TextRangeDiagnosticSink } from '../common/diagnosticSink'; -import { Extensions } from '../common/extensibility'; +import { Extensions, ProgramView } from '../common/extensibility'; import { FileSystem } from '../common/fileSystem'; import { LogTracker } from '../common/logTracker'; import { fromLSPAny } from '../common/lspUtils'; @@ -1020,14 +1020,11 @@ export class SourceFile { } getCompletionsForPosition( + program: ProgramView, position: Position, workspacePath: string, - configOptions: ConfigOptions, - importResolver: ImportResolver, importLookup: ImportLookup, - evaluator: TypeEvaluator, options: CompletionOptions, - sourceMapper: SourceMapper, nameMap: AbbreviationMap | undefined, libraryMap: Map | undefined, moduleSymbolsCallback: () => ModuleSymbolMap, @@ -1046,17 +1043,12 @@ export class SourceFile { } const completionProvider = new CompletionProvider( + program, workspacePath, - this._writableData.parseResults, - fileContents, - importResolver, - position, this._filePath, - configOptions, + position, importLookup, - evaluator, options, - sourceMapper, { nameMap, libraryMap, @@ -1069,12 +1061,9 @@ export class SourceFile { } resolveCompletionItem( - configOptions: ConfigOptions, - importResolver: ImportResolver, + program: ProgramView, importLookup: ImportLookup, - evaluator: TypeEvaluator, options: CompletionOptions, - sourceMapper: SourceMapper, nameMap: AbbreviationMap | undefined, libraryMap: Map | undefined, moduleSymbolsCallback: () => ModuleSymbolMap, @@ -1088,17 +1077,12 @@ export class SourceFile { const completionData = fromLSPAny(completionItem.data); const completionProvider = new CompletionProvider( + program, completionData.workspacePath, - this._writableData.parseResults, - fileContents, - importResolver, - completionData.position, this._filePath, - configOptions, + completionData.position, importLookup, - evaluator, options, - sourceMapper, { nameMap, libraryMap, diff --git a/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts b/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts index cb23a6e64..bac134e27 100644 --- a/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts +++ b/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts @@ -6,20 +6,14 @@ * Functions that operate on SourceFileInfo objects. */ -import { SourceFileInfo } from './program'; +import { SourceFileInfo } from '../common/extensibility'; -interface FileInfo { - isTypeshedFile: boolean; - isThirdPartyImport: boolean; - isTracked: boolean; -} - -export function isUserCode(fileInfo: FileInfo | undefined) { +export function isUserCode(fileInfo: SourceFileInfo | undefined) { return !!fileInfo && fileInfo.isTracked && !fileInfo.isThirdPartyImport && !fileInfo.isTypeshedFile; } -export function collectImportedByFiles(fileInfo: SourceFileInfo): Set { - const importedByFiles = new Set(); +export function collectImportedByFiles(fileInfo: T): Set { + const importedByFiles = new Set(); _collectImportedByFiles(fileInfo, importedByFiles); return importedByFiles; } diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index b3ae26712..bb7bf3a5b 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -39,8 +39,8 @@ export interface ProgramExtension { export interface SourceFile { // See whether we can convert these to regular properties. - getFilePath(): string; isStubFile(): boolean; + getFilePath(): string; getFileContent(): string | undefined; } @@ -89,6 +89,7 @@ export interface ProgramView { // See whether we can get rid of these 2 methods getBoundSourceFileInfo(file: string, content?: string, force?: boolean): prog.SourceFileInfo | undefined; handleMemoryHighUsage(): void; + clone(): prog.Program; } // Mutable wrapper around a program. Allows the FG thread to forward this request to the BG thread diff --git a/packages/pyright-internal/src/common/pathUtils.ts b/packages/pyright-internal/src/common/pathUtils.ts index 81f54c6e6..ceca078f0 100644 --- a/packages/pyright-internal/src/common/pathUtils.ts +++ b/packages/pyright-internal/src/common/pathUtils.ts @@ -205,7 +205,7 @@ export function makeDirectories(fs: FileSystem, dirPath: string, startingFromDir } } -export function getFileSize(fs: FileSystem, path: string) { +export function getFileSize(fs: ReadOnlyFileSystem, path: string) { const stat = tryStat(fs, path); if (stat?.isFile()) { return stat.size; @@ -213,11 +213,11 @@ export function getFileSize(fs: FileSystem, path: string) { return 0; } -export function fileExists(fs: FileSystem, path: string): boolean { +export function fileExists(fs: ReadOnlyFileSystem, path: string): boolean { return fileSystemEntryExists(fs, path, FileSystemEntryKind.File); } -export function directoryExists(fs: FileSystem, path: string): boolean { +export function directoryExists(fs: ReadOnlyFileSystem, path: string): boolean { return fileSystemEntryExists(fs, path, FileSystemEntryKind.Directory); } @@ -576,11 +576,11 @@ export function normalizePath(pathString: string): string { return normalizeSlashes(path.normalize(pathString)); } -export function isDirectory(fs: FileSystem, path: string): boolean { +export function isDirectory(fs: ReadOnlyFileSystem, path: string): boolean { return tryStat(fs, path)?.isDirectory() ?? false; } -export function isFile(fs: FileSystem, path: string, treatZipDirectoryAsFile = false): boolean { +export function isFile(fs: ReadOnlyFileSystem, path: string, treatZipDirectoryAsFile = false): boolean { const stats = tryStat(fs, path); if (stats?.isFile()) { return true; @@ -593,7 +593,7 @@ export function isFile(fs: FileSystem, path: string, treatZipDirectoryAsFile = f return stats?.isZipDirectory?.() ?? false; } -export function tryStat(fs: FileSystem, path: string): Stats | undefined { +export function tryStat(fs: ReadOnlyFileSystem, path: string): Stats | undefined { try { if (fs.existsSync(path)) { return fs.statSync(path); @@ -604,7 +604,7 @@ export function tryStat(fs: FileSystem, path: string): Stats | undefined { return undefined; } -export function tryRealpath(fs: FileSystem, path: string): string | undefined { +export function tryRealpath(fs: ReadOnlyFileSystem, path: string): string | undefined { try { return fs.realpathSync(path); } catch (e: any) { @@ -612,7 +612,7 @@ export function tryRealpath(fs: FileSystem, path: string): string | undefined { } } -export function getFileSystemEntries(fs: FileSystem, path: string): FileSystemEntries { +export function getFileSystemEntries(fs: ReadOnlyFileSystem, path: string): FileSystemEntries { try { return getFileSystemEntriesFromDirEntries(fs.readdirEntriesSync(path || '.'), fs, path); } catch (e: any) { @@ -623,7 +623,7 @@ export function getFileSystemEntries(fs: FileSystem, path: string): FileSystemEn // Sorts the entires into files and directories, including any symbolic links. export function getFileSystemEntriesFromDirEntries( dirEntries: Dirent[], - fs: FileSystem, + fs: ReadOnlyFileSystem, path: string ): FileSystemEntries { const entries = dirEntries.sort((a, b) => { @@ -925,7 +925,7 @@ const enum FileSystemEntryKind { Directory, } -function fileSystemEntryExists(fs: FileSystem, path: string, entryKind: FileSystemEntryKind): boolean { +function fileSystemEntryExists(fs: ReadOnlyFileSystem, path: string, entryKind: FileSystemEntryKind): boolean { try { const stat = fs.statSync(path); switch (entryKind) { @@ -941,7 +941,7 @@ function fileSystemEntryExists(fs: FileSystem, path: string, entryKind: FileSyst } } -export function convertUriToPath(fs: FileSystem, uriString: string): string { +export function convertUriToPath(fs: ReadOnlyFileSystem, uriString: string): string { return fs.getMappedFilePath(extractPathFromUri(uriString)); } @@ -1022,7 +1022,7 @@ export function getLibraryPathWithoutExtension(libraryFilePath: string) { } export function getDirectoryChangeKind( - fs: FileSystem, + fs: ReadOnlyFileSystem, oldDirectory: string, newDirectory: string ): 'Same' | 'Renamed' | 'Moved' { diff --git a/packages/pyright-internal/src/common/workspaceEditUtils.ts b/packages/pyright-internal/src/common/workspaceEditUtils.ts index 46daa3a01..da8a9e706 100644 --- a/packages/pyright-internal/src/common/workspaceEditUtils.ts +++ b/packages/pyright-internal/src/common/workspaceEditUtils.ts @@ -24,7 +24,7 @@ import { convertPathToUri, convertUriToPath } from '../common/pathUtils'; import { createMapFromItems } from './collectionUtils'; import { isArray } from './core'; import { assertNever } from './debug'; -import { FileSystem } from './fileSystem'; +import { ReadOnlyFileSystem } from './fileSystem'; import { convertRangeToTextRange, convertTextRangeToRange } from './positionUtils'; import { TextRange } from './textRange'; import { TextRangeCollection } from './textRangeCollection'; @@ -40,10 +40,10 @@ export function convertToFileTextEdits(filePath: string, editActions: TextEditAc return editActions.map((a) => ({ filePath, ...a })); } -export function convertToWorkspaceEdit(fs: FileSystem, edits: FileEditAction[]): WorkspaceEdit; -export function convertToWorkspaceEdit(fs: FileSystem, edits: FileEditActions): WorkspaceEdit; +export function convertToWorkspaceEdit(fs: ReadOnlyFileSystem, edits: FileEditAction[]): WorkspaceEdit; +export function convertToWorkspaceEdit(fs: ReadOnlyFileSystem, edits: FileEditActions): WorkspaceEdit; export function convertToWorkspaceEdit( - fs: FileSystem, + fs: ReadOnlyFileSystem, edits: FileEditActions, changeAnnotations: { [id: string]: ChangeAnnotation; @@ -51,7 +51,7 @@ export function convertToWorkspaceEdit( defaultAnnotationId: string ): WorkspaceEdit; export function convertToWorkspaceEdit( - fs: FileSystem, + fs: ReadOnlyFileSystem, edits: FileEditActions | FileEditAction[], changeAnnotations?: { [id: string]: ChangeAnnotation; @@ -65,7 +65,7 @@ export function convertToWorkspaceEdit( return _convertToWorkspaceEditWithDocumentChanges(fs, edits, changeAnnotations, defaultAnnotationId); } -export function appendToWorkspaceEdit(fs: FileSystem, edits: FileEditAction[], workspaceEdit: WorkspaceEdit) { +export function appendToWorkspaceEdit(fs: ReadOnlyFileSystem, edits: FileEditAction[], workspaceEdit: WorkspaceEdit) { edits.forEach((edit) => { const uri = convertPathToUri(fs, edit.filePath); workspaceEdit.changes![uri] = workspaceEdit.changes![uri] || []; @@ -197,7 +197,7 @@ export function generateWorkspaceEdit( return edits; } -function _convertToWorkspaceEditWithChanges(fs: FileSystem, edits: FileEditAction[]) { +function _convertToWorkspaceEditWithChanges(fs: ReadOnlyFileSystem, edits: FileEditAction[]) { const workspaceEdit: WorkspaceEdit = { changes: {}, }; @@ -207,7 +207,7 @@ function _convertToWorkspaceEditWithChanges(fs: FileSystem, edits: FileEditActio } function _convertToWorkspaceEditWithDocumentChanges( - fs: FileSystem, + fs: ReadOnlyFileSystem, editActions: FileEditActions, changeAnnotations?: { [id: string]: ChangeAnnotation; diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index a2b043947..7b3377ba0 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -108,7 +108,6 @@ import { ProgressReportTracker, ProgressReporter } from './common/progressReport import { hashString } from './common/stringUtils'; import { DocumentRange, Position, Range } from './common/textRange'; import { UriParser } from './common/uriParser'; -import { convertToWorkspaceEdit } from './common/workspaceEditUtils'; import { AnalyzerServiceExecutor } from './languageService/analyzerServiceExecutor'; import { ImportFormat } from './languageService/autoImporter'; import { CallHierarchyProvider } from './languageService/callHierarchyProvider'; @@ -123,6 +122,7 @@ import { SignatureHelpProvider } from './languageService/signatureHelpProvider'; import { Localizer, setLocaleOverride } from './localization/localize'; import { PyrightFileSystem } from './pyrightFileSystem'; import { InitStatus, WellKnownWorkspaceKinds, Workspace, WorkspaceFactory } from './workspaceFactory'; +import { RenameProvider } from './languageService/renameProvider'; export interface ServerSettings { venvPath?: string | undefined; @@ -519,10 +519,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { workspace.searchPathsToWatch = workspace.service.librarySearchPathsToWatch ?? []; } - protected get allowModuleRename() { - return false; - } - protected abstract executeCommand(params: ExecuteCommandParams, token: CancellationToken): Promise; protected abstract isLongRunningCommand(command: string): boolean; @@ -956,14 +952,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { const workspace = await this.getWorkspaceForFile(filePath); return workspace.service.run((program) => { - return new HoverProvider( - program, - filePath, - position, - this.client.hoverContentFormat, - !!this.serverOptions.supportsTelemetry, - token - ).getHover(); + return new HoverProvider(program, filePath, position, this.client.hoverContentFormat, token).getHover(); }, token); } @@ -1086,15 +1075,11 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return null; } - const result = workspace.service.canRenameSymbolAtPosition( - filePath, - position, - workspace.kinds.includes(WellKnownWorkspaceKinds.Default), - this.allowModuleRename, - token - ); - - return result?.range ?? null; + return workspace.service.run((program) => { + return new RenameProvider(program, filePath, position, token).canRenameSymbol( + workspace.kinds.includes(WellKnownWorkspaceKinds.Default) + ); + }, token); } protected async onRenameRequest( @@ -1108,20 +1093,12 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return; } - const editActions = workspace.service.renameSymbolAtPosition( - filePath, - position, - params.newName, - workspace.kinds.includes(WellKnownWorkspaceKinds.Default), - this.allowModuleRename, - token - ); - - if (!editActions) { - return undefined; - } - - return convertToWorkspaceEdit(workspace.service.fs, editActions); + return workspace.service.run((program) => { + return new RenameProvider(program, filePath, position, token).renameSymbol( + params.newName, + workspace.kinds.includes(WellKnownWorkspaceKinds.Default) + ); + }, token); } protected async onPrepare( diff --git a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts index 85331475c..3166538ed 100644 --- a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts +++ b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts @@ -62,7 +62,7 @@ export class CallHierarchyProvider { return null; } - const referencesResult = this._getDeclarationForPosition(); + const referencesResult = this._getDeclaration(); if (!referencesResult || referencesResult.declarations.length === 0) { return null; } @@ -112,7 +112,7 @@ export class CallHierarchyProvider { return null; } - const referencesResult = this._getDeclarationForPosition(); + const referencesResult = this._getDeclaration(); if (!referencesResult || referencesResult.declarations.length === 0) { return null; } @@ -164,7 +164,7 @@ export class CallHierarchyProvider { return null; } - const referencesResult = this._getDeclarationForPosition(); + const referencesResult = this._getDeclaration(); if (!referencesResult || referencesResult.declarations.length === 0) { return null; } @@ -296,13 +296,11 @@ export class CallHierarchyProvider { return incomingCalls.length > 0 ? incomingCalls : undefined; } - private _getDeclarationForPosition(): ReferencesResult | undefined { + private _getDeclaration(): ReferencesResult | undefined { return ReferencesProvider.getDeclarationForPosition( - this._sourceMapper, - this._parseResults!, + this._program, this._filePath, this._position, - this._evaluator, /* reporter */ undefined, DocumentSymbolCollectorUseCase.Reference, this._token diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 6ed4293c2..2be57ff6d 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -32,7 +32,7 @@ import { } from '../analyzer/declaration'; import { isDefinedInFile } from '../analyzer/declarationUtils'; import { convertDocStringToMarkdown, convertDocStringToPlainText } from '../analyzer/docStringConversion'; -import { ImportedModuleDescriptor, ImportResolver } from '../analyzer/importResolver'; +import { ImportedModuleDescriptor } from '../analyzer/importResolver'; import { isTypedKwargs } from '../analyzer/parameterUtils'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { getCallNodeAndActiveParameterIndex } from '../analyzer/parseTreeUtils'; @@ -80,7 +80,7 @@ import { } from '../analyzer/typeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { addIfNotNull, appendArray } from '../common/collectionUtils'; -import { ConfigOptions, ExecutionEnvironment } from '../common/configOptions'; +import { ExecutionEnvironment } from '../common/configOptions'; import * as debug from '../common/debug'; import { fail } from '../common/debug'; import { fromLSPAny, toLSPAny } from '../common/lspUtils'; @@ -127,6 +127,7 @@ import { DocumentSymbolCollector } from './documentSymbolCollector'; import { IndexResults } from './documentSymbolProvider'; import { ImportAdder, ImportData } from './importAdder'; import { getAutoImportText, getDocumentationPartsForTypeAndDecl } from './tooltipUtils'; +import { ProgramView } from '../common/extensibility'; namespace Keywords { const base: string[] = [ @@ -337,22 +338,27 @@ export class CompletionProvider { // Indicate whether invocation is inside of string literal. private _insideStringLiteral: StringToken | undefined = undefined; + private readonly _parseResults: ParseResults; + private readonly _sourceMapper: SourceMapper; + constructor( + private _program: ProgramView, private _workspacePath: string, - private _parseResults: ParseResults, - private _fileContents: string, - private _importResolver: ImportResolver, - private _position: Position, private _filePath: string, - private _configOptions: ConfigOptions, + private _position: Position, private _importLookup: ImportLookup, - private _evaluator: TypeEvaluator, private _options: CompletionOptions, - private _sourceMapper: SourceMapper, private _autoImportMaps: AutoImportMaps, private _cancellationToken: CancellationToken ) { this._execEnv = this._configOptions.findExecEnvironment(this._filePath); + + this._parseResults = this._program.getParseResults(this._filePath)!; + this._sourceMapper = this._program.getSourceMapper( + this._filePath, + this._cancellationToken, + /* mapCompiled */ true + ); } getCompletionsForPosition(): CompletionResults | undefined { @@ -660,7 +666,23 @@ export class CompletionProvider { } } - // This method will return false if it wants + private get _importResolver() { + return this._program.importResolver; + } + + private get _configOptions() { + return this._program.configOptions; + } + + private get _evaluator() { + return this._program.evaluator!; + } + + private get _fileContents() { + return this._parseResults?.text ?? ''; + } + + // This method will return false if it wants1 // caller to walk up the tree. it will return // CompletionResults or undefined if it wants caller // to return. @@ -2147,8 +2169,8 @@ export class CompletionProvider { } const results = DocumentSymbolCollector.collectFromNode( + this._program, indexNode.baseExpression, - this._evaluator, this._cancellationToken, startingNode ); diff --git a/packages/pyright-internal/src/languageService/documentHighlightProvider.ts b/packages/pyright-internal/src/languageService/documentHighlightProvider.ts index 63716ed83..1e8860f6d 100644 --- a/packages/pyright-internal/src/languageService/documentHighlightProvider.ts +++ b/packages/pyright-internal/src/languageService/documentHighlightProvider.ts @@ -52,8 +52,8 @@ export class DocumentHighlightProvider { } const results = DocumentSymbolCollector.collectFromNode( + this._program, node, - this._program.evaluator!, this._token, this._parseResults.parseTree, /* treatModuleInImportAndFromImportSame */ true diff --git a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts index 2860db431..11b83779c 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts @@ -29,15 +29,14 @@ import { getModuleNode, getStringNodeValueRange } from '../analyzer/parseTreeUti import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; import { ScopeType } from '../analyzer/scope'; import * as ScopeUtils from '../analyzer/scopeUtils'; -import { SourceFile } from '../analyzer/sourceFile'; -import { isStubFile, SourceMapper } from '../analyzer/sourceMapper'; +import { isStubFile } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { isInstantiableClass, TypeCategory } from '../analyzer/types'; import { ClassMemberLookupFlags, lookUpClassMember } from '../analyzer/typeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { assert } from '../common/debug'; -import { DeclarationUseCase, Extensions } from '../common/extensibility'; +import { DeclarationUseCase, Extensions, ProgramView, SourceFile } from '../common/extensibility'; import { TextRange } from '../common/textRange'; import { ClassNode, @@ -69,9 +68,9 @@ export class DocumentSymbolCollector extends ParseTreeWalker { private _symbolNames: Set = new Set(); constructor( + private _program: ProgramView, symbolNames: string[], private _declarations: Declaration[], - private _evaluator: TypeEvaluator, private _cancellationToken: CancellationToken, private _startingNode: ParseNode, private _treatModuleInImportAndFromImportSame = false, @@ -103,8 +102,8 @@ export class DocumentSymbolCollector extends ParseTreeWalker { } static collectFromNode( + program: ProgramView, node: NameNode, - evaluator: TypeEvaluator, cancellationToken: CancellationToken, startingNode?: ParseNode, treatModuleInImportAndFromImportSame = false, @@ -112,8 +111,8 @@ export class DocumentSymbolCollector extends ParseTreeWalker { useCase = DocumentSymbolCollectorUseCase.Reference ): CollectionResult[] { const declarations = this.getDeclarationsForNode( + program, node, - evaluator, /* resolveLocalName */ true, useCase, cancellationToken @@ -125,9 +124,9 @@ export class DocumentSymbolCollector extends ParseTreeWalker { } const collector = new DocumentSymbolCollector( + program, [node.value], declarations, - evaluator, cancellationToken, startingNode, treatModuleInImportAndFromImportSame, @@ -139,16 +138,20 @@ export class DocumentSymbolCollector extends ParseTreeWalker { } static getDeclarationsForNode( + program: ProgramView, node: NameNode, - evaluator: TypeEvaluator, resolveLocalName: boolean, useCase: DocumentSymbolCollectorUseCase, token: CancellationToken, - sourceMapper?: SourceMapper, implicitlyImportedBy?: SourceFile[] ): Declaration[] { throwIfCancellationRequested(token); + const evaluator = program.evaluator; + if (!evaluator) { + return []; + } + const declarations = this._getDeclarationsForNode( node, useCase, @@ -158,7 +161,8 @@ export class DocumentSymbolCollector extends ParseTreeWalker { ); // Add declarations from chained source files - let builtinsScope = AnalyzerNodeInfo.getFileInfo(node).builtinsScope; + const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + let builtinsScope = fileInfo.builtinsScope; while (builtinsScope && builtinsScope.type === ScopeType.Module) { const symbol = builtinsScope?.lookUpSymbol(node.value); if (symbol) { @@ -170,7 +174,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { // Add declarations from files that implicitly import the target file. implicitlyImportedBy?.forEach((implicitImport) => { - const parseTree = implicitImport.getParseResults()?.parseTree; + const parseTree = program.getParseResults(implicitImport.getFilePath())?.parseTree; if (parseTree) { const scope = AnalyzerNodeInfo.getScope(parseTree); const symbol = scope?.lookUpSymbol(node.value); @@ -181,6 +185,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { }); const resolvedDeclarations: Declaration[] = []; + const sourceMapper = program.getSourceMapper(fileInfo.filePath, token); declarations.forEach((decl) => { const resolvedDecl = evaluator.resolveAliasDeclaration(decl, resolveLocalName); if (resolvedDecl) { @@ -264,6 +269,10 @@ export class DocumentSymbolCollector extends ParseTreeWalker { return false; } + private get _evaluator(): TypeEvaluator { + return this._program.evaluator!; + } + private _addResult(node: NameNode | StringNode) { const range: TextRange = node.nodeType === ParseNodeType.Name ? node : getStringNodeValueRange(node); this._results.push({ node, range }); diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index 1e2f17fe1..51d44bdec 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -43,7 +43,6 @@ import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { assertNever, fail } from '../common/debug'; import { DeclarationUseCase, Extensions, ProgramView } from '../common/extensibility'; import { convertOffsetToPosition, convertPositionToOffset } from '../common/positionUtils'; -import { hashString } from '../common/stringUtils'; import { Position, Range, TextRange } from '../common/textRange'; import { ExpressionNode, NameNode, ParseNode, ParseNodeType, StringNode, isExpressionNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; @@ -63,17 +62,40 @@ export class HoverProvider { private _filePath: string, private _position: Position, private _format: MarkupKind, - private _supportTelemetry: boolean, private _token: CancellationToken ) { this._parseResults = this._program.getParseResults(this._filePath); this._sourceMapper = this._program.getSourceMapper(this._filePath, this._token, /* mapCompiled */ true); } - getHover(): Hover | undefined { + getHover(): Hover | null { return this._convertHoverResults(this._getHoverResult()); } + static getPrimaryDeclaration(declarations: Declaration[]) { + // In most cases, it's best to treat the first declaration as the + // "primary". This works well for properties that have setters + // which often have doc strings on the getter but not the setter. + // The one case where using the first declaration doesn't work as + // well is the case where an import statement within an __init__.py + // file uses the form "from .A import A". In this case, if we use + // the first declaration, it will show up as a module rather than + // the imported symbol type. + const primaryDeclaration = declarations[0]; + if (primaryDeclaration.type === DeclarationType.Alias && declarations.length > 1) { + return declarations[1]; + } else if ( + primaryDeclaration.type === DeclarationType.Variable && + declarations.length > 1 && + primaryDeclaration.isDefinedBySlots + ) { + // Slots cannot have docstrings, so pick the secondary. + return declarations[1]; + } + + return primaryDeclaration; + } + private get _evaluator(): TypeEvaluator { return this._program.evaluator!; } @@ -82,21 +104,21 @@ export class HoverProvider { return this._program.configOptions.functionSignatureDisplay; } - private _getHoverResult(): HoverResults | undefined { + private _getHoverResult(): HoverResults | null { throwIfCancellationRequested(this._token); if (!this._parseResults) { - return undefined; + return null; } const offset = convertPositionToOffset(this._position, this._parseResults.tokenizerOutput.lines); if (offset === undefined) { - return undefined; + return null; } const node = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, offset); if (node === undefined) { - return undefined; + return null; } const results: HoverResults = { @@ -124,32 +146,10 @@ export class HoverProvider { if (declarations.length === 0) { declarations = this._evaluator.getDeclarationsForNameNode(node); } - if (declarations && declarations.length > 0) { - // In most cases, it's best to treat the first declaration as the - // "primary". This works well for properties that have setters - // which often have doc strings on the getter but not the setter. - // The one case where using the first declaration doesn't work as - // well is the case where an import statement within an __init__.py - // file uses the form "from .A import A". In this case, if we use - // the first declaration, it will show up as a module rather than - // the imported symbol type. - let primaryDeclaration = declarations[0]; - if (primaryDeclaration.type === DeclarationType.Alias && declarations.length > 1) { - primaryDeclaration = declarations[1]; - } else if ( - primaryDeclaration.type === DeclarationType.Variable && - declarations.length > 1 && - primaryDeclaration.isDefinedBySlots - ) { - // Slots cannot have docstrings, so pick the secondary. - primaryDeclaration = declarations[1]; - } + if (declarations && declarations.length > 0) { + const primaryDeclaration = HoverProvider.getPrimaryDeclaration(declarations); this._addResultsForDeclaration(results.parts, primaryDeclaration, node); - - // Add the lastKnownModule for this declaration. We'll use this - // in telemetry for hover. - results.lastKnownModule = primaryDeclaration.moduleName; } else if (!node.parent || node.parent.nodeType !== ParseNodeType.ModuleName) { // If we had no declaration, see if we can provide a minimal tooltip. We'll skip // this if it's part of a module name, since a module name part with no declaration @@ -193,7 +193,7 @@ export class HoverProvider { } } - return results.parts.length > 0 ? results : undefined; + return results.parts.length > 0 ? results : null; } private _addResultsForDeclaration(parts: HoverTextPart[], declaration: Declaration, node: NameNode): void { @@ -637,12 +637,12 @@ export class HoverProvider { }); } - private _convertHoverResults(hoverResults: HoverResults | undefined): Hover | undefined { + private _convertHoverResults(hoverResults: HoverResults | null): Hover | null { if (!hoverResults) { - return undefined; + return null; } - let markupString = hoverResults.parts + const markupString = hoverResults.parts .map((part) => { if (part.python) { if (this._format === MarkupKind.Markdown) { @@ -658,12 +658,6 @@ export class HoverProvider { .join('') .trimEnd(); - // If we have a lastKnownModule in the hover results, stick in a comment with - // the hashed module name. This is used by the other side to send telemetry. - if (hoverResults.lastKnownModule && this._format === MarkupKind.Markdown && this._supportTelemetry) { - markupString += `\n`; - } - return { contents: { kind: this._format, @@ -681,6 +675,5 @@ interface HoverTextPart { interface HoverResults { parts: HoverTextPart[]; - lastKnownModule?: string; range: Range; } diff --git a/packages/pyright-internal/src/languageService/indentationUtils.ts b/packages/pyright-internal/src/languageService/indentationUtils.ts deleted file mode 100644 index 5af501172..000000000 --- a/packages/pyright-internal/src/languageService/indentationUtils.ts +++ /dev/null @@ -1,958 +0,0 @@ -/* - * indentationUtils.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Provides code to get indentation and re-indent code for the - * given indentation. - */ - -import Char from 'typescript-char'; - -import { - findNodeByOffset, - getFirstAncestorOrSelf, - getFirstAncestorOrSelfOfKind, - getStringValueRange, - getTokenAt, - isDocString, -} from '../analyzer/parseTreeUtils'; -import { appendArray } from '../common/collectionUtils'; -import { convertOffsetToPosition, convertTextRangeToRange } from '../common/positionUtils'; -import { Range, TextRange } from '../common/textRange'; -import { TextRangeCollection } from '../common/textRangeCollection'; -import { MatchNode, ModuleNode, ParseNode, ParseNodeType, SuiteNode } from '../parser/parseNodes'; -import { ParseResults } from '../parser/parser'; -import { defaultTabSize } from '../parser/tokenizer'; -import { - IndentToken, - KeywordToken, - KeywordType, - StringToken, - StringTokenFlags, - Token, - TokenType, -} from '../parser/tokenizerTypes'; -import { getContainer } from './insertionPointUtils'; - -interface TokenInfo extends TextRange { - range: Range; - text: string; - - kind: 'comment' | 'string' | 'token'; - firstTokenOnLine: boolean; - multilineDocComment: boolean; -} - -export function getNewlineIndentation( - parseResults: ParseResults, - newlineOffset: number, - preferDedent?: boolean -): number { - // ex) - // a = """ - // | <= here - const strIndent = _tryHandleStringLiterals(parseResults, newlineOffset); - if (strIndent !== undefined) { - return strIndent; - } - - // ex) - // a = 1 + \ - // | <= here - // or - // a = (1 + - // | <= here - const exprIndent = _tryHandleMultilineConstructs(parseResults, newlineOffset); - if (exprIndent !== undefined) { - return exprIndent; - } - - preferDedent = preferDedent ?? _shouldDedentAfterKeyword(parseResults, newlineOffset); - return Math.max(_getIndentation(parseResults, newlineOffset, preferDedent).indentation, 0); -} - -export function reindentSpan( - parseResults: ParseResults, - span: TextRange, - indentation: number, - indentFirstToken = true -) { - let indentDelta = 0; - const texts: string[] = []; - - // Currently _convertTokenStreams converts text in the span as whitespace and non whitespace - // and then this function puts those back to string with reindentation if needed. - // - // Another approach we can take is converting the text in 2 chunks that require reindentation and not - // and process chunks that require reindentation line by line (like how it currently does for - // multiline doc comments) and put chunks that don't require reindentation as it is. - const tokenInfo = _convertTokenStreams(parseResults, span); - let previousInfo = tokenInfo[0]; - - indentDelta = - indentation - - getIndentationFromText(parseResults, previousInfo.range.start.line, previousInfo.range.start.character) - .indentation; - - if (previousInfo.multilineDocComment) { - appendArray(texts, _reindentLinesFromText(parseResults, previousInfo, indentDelta)); - } else { - if (indentFirstToken) { - texts.push(createIndentationString(parseResults, indentation)); - } - - texts.push(previousInfo.text); - } - - for (let i = 1; i < tokenInfo.length; i++) { - const info = tokenInfo[i]; - if (info.firstTokenOnLine) { - texts.push( - parseResults.tokenizerOutput.predominantEndOfLineSequence.repeat( - info.range.start.line - previousInfo.range.end.line - ) - ); - - if (info.multilineDocComment) { - appendArray(texts, _reindentLinesFromText(parseResults, info, indentDelta)); - } else { - // Put indentation for the first token on the line. - texts.push( - createIndentationString( - parseResults, - Math.max( - 0, - getIndentationFromText(parseResults, info.range.start.line, info.range.start.character) - .indentation + indentDelta - ) - ) - ); - texts.push(info.text); - } - } else { - // Put whitespace between 2 tokens on same line - // token1[space]token2 - texts.push(' '.repeat(info.range.start.character - previousInfo.range.end.character)); - texts.push(info.text); - } - - previousInfo = info; - } - - return { - originalSpan: TextRange.combine(tokenInfo)!, - text: texts.join(''), - }; -} - -export function getModuleStatementIndentation(parseResults: ParseResults) { - if (parseResults.parseTree.statements.length === 0) { - return getNewlineIndentation(parseResults, parseResults.parseTree.length, /* preferDedent */ true); - } - - return getNewlineIndentation(parseResults, parseResults.parseTree.statements[0].start, /* preferDedent */ true); -} - -function _getIndentation( - parseResults: ParseResults, - offset: number, - preferDedent: boolean -): { token?: Token; indentation: number } { - const tokens = parseResults.tokenizerOutput.tokens; - const startingToken = findNonWhitespaceTokenAtOrBeforeOffset(tokens, offset); - if (!startingToken) { - return { - indentation: 0, - }; - } - - const node = findNodeByOffset(parseResults.parseTree, TextRange.getEnd(startingToken)); - if (!node) { - return { - indentation: 0, - }; - } - - // Special-case the match statement since it does not contain a suite. Case statements do, - // but match does not. - if (node.nodeType === ParseNodeType.Match) { - const tabSize = _getTabSize(parseResults); - const outerContainer = getContainer(node, /* includeSelf */ false); - const result = _getIndentationForNode(parseResults, offset, outerContainer ?? parseResults.parseTree, node); - result.indentation += tabSize; - return result; - } - - const suite = getFirstAncestorOrSelfOfKind(node, ParseNodeType.Suite); - if (!suite) { - return _getIndentationForNode(parseResults, offset, parseResults.parseTree, node); - } - - const suiteSpan = convertTextRangeToRange(suite, parseResults.tokenizerOutput.lines); - if (preferDedent || (suiteSpan.start.line === suiteSpan.end.line && suite.statements.length > 0)) { - // Go one more level up. - const outerContainer = getContainer(suite, /* includeSelf */ false); - return _getIndentationForNode(parseResults, offset, outerContainer ?? parseResults.parseTree, suite); - } - - return _getIndentationForNode(parseResults, offset, suite, node); -} - -function _getIndentationForNode( - parseResults: ParseResults, - offset: number, - container: ModuleNode | SuiteNode | MatchNode, - current: ParseNode -): { token?: Token; indentation: number } { - if (container.nodeType === ParseNodeType.Module) { - // It is at the module level - return { - token: _getFirstTokenOfStatement(parseResults, container, current), - indentation: 0, - }; - } - - if ( - container.nodeType === ParseNodeType.Match || - _containsNoIndentBeforeFirstStatement(parseResults, offset, container) - ) { - const tabSize = _getTabSize(parseResults); - const outerContainer = getContainer(container, /* includeSelf */ false); - const result = _getIndentationForNode( - parseResults, - offset, - outerContainer ?? parseResults.parseTree, - container - ); - return { - token: result.token, - indentation: result.indentation + tabSize, - }; - } else { - const tokens = parseResults.tokenizerOutput.tokens; - return { - token: _getFirstTokenOfStatement(parseResults, container, current), - indentation: _getIndentationFromIndentToken(tokens, tokens.getItemAtPosition(container.start)), - }; - } -} - -function _containsNoIndentBeforeFirstStatement(parseResults: ParseResults, offset: number, suite: SuiteNode): boolean { - const statements = suite.statements.filter((s) => s.length > 0); - if (statements.length === 0) { - // There is no statement in the suite. - // ex) - // def foo(): - // | <= here - return true; - } - - if (statements.length === 1) { - if (statements[0].nodeType !== ParseNodeType.StatementList || statements[0].statements.length === 1) { - if (statements[0].start >= offset) { - const statementLine = parseResults.tokenizerOutput.lines.getItemAtPosition(statements[0].start); - const offsetLine = parseResults.tokenizerOutput.lines.getItemAtPosition(offset); - if (statementLine === offsetLine) { - // We are calculating indent for only statement in suite. - // ex) - // def foo(): - // |pass <= offset before first statement - return true; - } - } - } - } - - // If suite contains no indent before first statement, then consider user is in the middle of writing block - // and parser is in broken state. - // ex) - // def foo(): - // while True: - // | <= here - // def bar(): - // pass - // - // parser will think "def bar" belongs to "while True" with invalid indentation. - const tokens = parseResults.tokenizerOutput.tokens; - const start = tokens.getItemAtPosition(suite.start); - const end = tokens.getItemAtPosition(suite.statements[0].start); - - for (let i = start; i <= end; i++) { - const token = _getTokenAtIndex(tokens, i); - if (token?.type === TokenType.Indent) { - return false; - } - } - - return true; -} - -function _getFirstTokenOfStatement( - parseResults: ParseResults, - container: ModuleNode | SuiteNode, - span: TextRange -): Token { - const tokens = parseResults.tokenizerOutput.tokens; - for (const statement of container.statements) { - if (!TextRange.containsRange(statement, span)) { - continue; - } - - return getTokenAt(tokens, statement.start)!; - } - - return getTokenAt(tokens, container.start)!; -} - -function _getIndentationFromIndentToken(tokens: TextRangeCollection, index: number) { - for (let i = index; i < tokens.count; i++) { - const token = _getTokenAtIndex(tokens, i); - if (token?.type === TokenType.Indent) { - return (token as IndentToken).indentAmount; - } - } - - // At the module level. - return 0; -} - -function _tryHandleMultilineConstructs(parseResults: ParseResults, offset: number): number | undefined { - const tokens = parseResults.tokenizerOutput.tokens; - const lines = parseResults.tokenizerOutput.lines; - - // Make sure we use next token to get line delta. - // This is just to handle how tokenizer associates new lines to which token. - // ex) a = 1 + \ - // | <= here - // [b] = 2 - const index = _findNextTokenIndex(tokens, offset); - if (index < 0) { - return undefined; - } - - for (let i = index; i > 0; i--) { - const token = _getTokenAtIndex(tokens, i)!; - if (TextRange.getEnd(token) < offset) { - return undefined; - } - - const previousToken = _getTokenAtIndex(tokens, i - 1)!; - const tokenSpan = token ? convertTextRangeToRange(token, lines) : undefined; - const previousTokenSpan = previousToken ? convertTextRangeToRange(previousToken, lines) : undefined; - - if ( - tokenSpan && - previousTokenSpan && - previousTokenSpan.start.line < tokenSpan.start.line && - previousToken!.type !== TokenType.NewLine - ) { - return _getIndentationForNextLine(parseResults, previousToken, token, offset); - } - } - - return undefined; -} - -function _tryHandleStringLiterals(parseResults: ParseResults, offset: number): number | undefined { - const tokens = parseResults.tokenizerOutput.tokens; - const index = tokens.getItemAtPosition(offset); - if (index < 0) { - return undefined; - } - - const token = _findStringToken(tokens, index); - if (!token || token.type !== TokenType.String) { - return undefined; - } - - const stringToken = token as StringToken; - if (!(stringToken.flags & StringTokenFlags.Triplicate)) { - // We only care """ string literal - return undefined; - } - - if ( - !(stringToken.flags & StringTokenFlags.Unterminated) && - !TextRange.contains(getStringValueRange(stringToken), offset) - ) { - // ex) We only support these 2 cases. - // """ - // | <= here - // or - // """ - // | <= here - // """ - return undefined; - } - - const lines = parseResults.tokenizerOutput.lines; - const begin = convertOffsetToPosition(token.start, lines); - const current = convertOffsetToPosition(offset, lines); - - return _getFirstNonBlankLineIndentationFromText(parseResults, current.line, begin.line); -} - -function _isOpenToken(token: Token) { - return ( - token.type === TokenType.OpenParenthesis || - token.type === TokenType.OpenBracket || - token.type === TokenType.OpenCurlyBrace - ); -} - -function _isCloseToken(token: Token) { - return ( - token.type === TokenType.CloseParenthesis || - token.type === TokenType.CloseBracket || - token.type === TokenType.CloseCurlyBrace - ); -} - -function _getIndentationForNextLine(parseResults: ParseResults, prevToken: Token, nextToken: Token, offset: number) { - // Get the last token on the same line as the previous token - const lines = parseResults.tokenizerOutput.lines; - const lineIndex = convertOffsetToPosition(prevToken.start, lines).line; - const line = lines.getItemAt(lineIndex); - const tabSize = _getTabSize(parseResults); - let token: Token | undefined = prevToken; - - // Go backwards through tokens up until the front of the line - let whitespaceOnly = true; - let closeCount = 0; - while (token && token.start >= line.start) { - if (_isCloseToken(token)) { - whitespaceOnly = false; - closeCount += 1; - } else if (_isOpenToken(token) && closeCount === 0) { - // Special case for parenthesis - if (token.type === TokenType.OpenParenthesis && whitespaceOnly) { - const baseIndentation = _getIndentation(parseResults, token.start, false).indentation; - - // In PEP 8, this should be this case here: - // # Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest. - // def long_function_name( - // var_one, var_two, var_three, - // var_four): - // print(var_one) - // - const node = findNodeByOffset(parseResults.parseTree, token.start - 1); - const funcNode = getFirstAncestorOrSelfOfKind(node, ParseNodeType.Function); - if ( - funcNode && - funcNode.nodeType === ParseNodeType.Function && - convertOffsetToPosition(funcNode.start, lines).line === lineIndex - ) { - return baseIndentation + tabSize * 2; - } - - // Not inside a function, just need one tab. See this in PEP 8 - // # Hanging indents should add a level. - // foo = long_function_name( - // var_one, var_two, - // var_three, var_four) - return baseIndentation + tabSize; - } else if (whitespaceOnly) { - // This is the case where the user put a newline right after a (, [, or {. We want - // to be one tab over from the [. - const line = convertOffsetToPosition(token.start, lines).line; - return getIndentationFromText(parseResults, line).indentation + tabSize; - } else { - // In PEP 8, this should be this case here: - // # Aligned with opening delimiter. - // def long_function_name(var_one, var_two, - // var_three, var_four) - // + 1 is to accommodate for the parenthesis. - // - // This same indentation applies for function calls or just dictionary or list assignments. - return token.start - line.start + 1; - } - } else if (_isOpenToken(token) && closeCount > 0) { - closeCount--; - whitespaceOnly = false; - } else if (!_isWhitespaceToken(token.type)) { - // Found a non whitespace token before we returned. - whitespaceOnly = false; - } - token = findNonWhitespaceTokenAtOrBeforeOffset(parseResults.tokenizerOutput.tokens, token.start - 1); - } - - // No parenthesis found - return _getFirstNonBlankLineIndentationFromText( - parseResults, - convertOffsetToPosition(offset, parseResults.tokenizerOutput.lines).line, - lineIndex - ); -} - -function _getFirstNonBlankLineIndentationFromText(parseResults: ParseResults, currentLine: number, endingLine: number) { - endingLine = Math.max(endingLine, 0); - for (let i = currentLine; i >= endingLine; i--) { - const result = getIndentationFromText(parseResults, i); - - if (!_isBlankLine(parseResults, i, result.charOffset)) { - // Not blank line. - // ex) [indentation]i = 1 - return result.indentation; - } - } - - return getIndentationFromText(parseResults, endingLine).indentation; -} - -function _findStringToken(tokens: TextRangeCollection, index: number): Token | undefined { - const token = _findNonWhitespaceTokenAtOrBeforeIndex(tokens, index); - if (!token) { - return undefined; - } - - return token.type === TokenType.String ? token : undefined; -} - -export function findNonWhitespaceTokenAtOrBeforeOffset( - tokens: TextRangeCollection, - offset: number -): Token | undefined { - const index = tokens.getItemAtPosition(offset); - if (index < 0) { - return undefined; - } - - return _findNonWhitespaceTokenAtOrBeforeIndex(tokens, index); -} - -function _findNonWhitespaceTokenAtOrBeforeIndex(tokens: TextRangeCollection, index: number): Token | undefined { - for (let i = index; i >= 0; i--) { - const token = _getTokenAtIndex(tokens, i); - if (!token) { - break; - } - - if (_isWhitespaceToken(token.type)) { - continue; - } - - return token; - } - - return undefined; -} - -function _findNextTokenIndex(tokens: TextRangeCollection, offset: number): number { - const index = tokens.getItemAtPosition(offset); - if (index < 0) { - return index; - } - - for (let i = index + 1; i < tokens.count; i++) { - const token = _getTokenAtIndex(tokens, i); - if (token?.type === TokenType.Dedent || token?.type === TokenType.NewLine) { - continue; - } - - return i; - } - - return tokens.count - 1; -} - -function _getTokenAtIndex(tokens: TextRangeCollection, index: number) { - if (index < 0) { - return undefined; - } - - return tokens.getItemAt(index); -} - -function _shouldDedentAfterKeyword(parseResults: ParseResults, offset: number) { - // For now, we won't include all small statements that can put at single line. - // See parser.ts to see all small statements or see python grammar. - // ex) def foo(): pass - const tokens = parseResults.tokenizerOutput.tokens; - const index = tokens.getItemAtPosition(offset); - if (index < 0) { - return false; - } - - for (let i = index; i >= 0; i--) { - const token = _getTokenAtIndex(tokens, i); - if (!token) { - return false; - } - - switch (token.type) { - case TokenType.Dedent: - case TokenType.NewLine: - case TokenType.EndOfStream: - continue; - - case TokenType.Keyword: { - const previousToken = _getTokenAtIndex(tokens, i - 1); - if (previousToken?.type === TokenType.Colon) { - // Not for single line construct. - // ex) def foo(): pass - return false; - } - - const keyword = token as KeywordToken; - // Dedent if we found one of these keywords - if ( - keyword.keywordType === KeywordType.Pass || - keyword.keywordType === KeywordType.Return || - keyword.keywordType === KeywordType.Break || - keyword.keywordType === KeywordType.Continue || - keyword.keywordType === KeywordType.Raise - ) { - return true; - } - - // Otherwise, unless the keyword can be used as a return/raise value, don't dedent. - if ( - keyword.keywordType !== KeywordType.True && - keyword.keywordType !== KeywordType.False && - keyword.keywordType !== KeywordType.None && - keyword.keywordType !== KeywordType.Debug - ) { - return false; - } - } - } - - // Dedent if we've found a return or raise statement - const node = findNodeByOffset(parseResults.parseTree, token.start); - const returnOrRaise = getFirstAncestorOrSelf( - node, - (x) => x.nodeType === ParseNodeType.Return || x.nodeType === ParseNodeType.Raise - ); - return !!returnOrRaise; - } - - return false; -} - -function _isBlankLine(parseResults: ParseResults, line: number, charOffset: number) { - const endingLength = _getLineEndingLength(parseResults, line); - const lineSpan = parseResults.tokenizerOutput.lines.getItemAt(line); - - return charOffset === lineSpan.length - endingLength; -} - -function _getLineEndingLength(parseResults: ParseResults, line: number) { - let length = 0; - const range = parseResults.tokenizerOutput.lines.getItemAt(line); - - for (let i = range.length - 1; i >= 0; i--) { - const charCode = parseResults.text.charCodeAt(range.start + i); - switch (charCode) { - case Char.FormFeed: - case Char.Hash: - case Char.LineFeed: - case Char.CarriageReturn: - length++; - break; - - default: - return length; - } - } - - return length; -} - -export function getIndentationFromText( - parseResults: ParseResults, - line: number, - uptoLineOffset?: number -): { indentation: number; charOffset: number } { - let indentation = 0; - let charOffset = 0; - - const tabSize = _getTabSize(parseResults); - const range = parseResults.tokenizerOutput.lines.getItemAt(line); - for (let i = 0; i < range.length; i++) { - const charCode = parseResults.text.charCodeAt(range.start + i); - switch (charCode) { - case Char.Space: - charOffset++; - indentation++; - break; - - case Char.Tab: - charOffset++; - indentation += tabSize; - break; - - default: - if (!uptoLineOffset || uptoLineOffset === i) { - return { - charOffset, - indentation, - }; - } - - // calculate indentation upto line offset given. - charOffset++; - indentation++; - } - } - - return { - charOffset, - indentation, - }; -} - -function _convertTokenStreams(parseResults: ParseResults, span: TextRange) { - // Existing token stream contains text and whitespace mixed, making it difficult - // to process for re-indentation. This will convert those to strictly text and whitespace. - const tokens = parseResults.tokenizerOutput.tokens; - - let startIndex = Math.max(tokens.getItemAtPosition(span.start), 0); - const startToken = _getTokenAtIndex(tokens, startIndex)!; - if (TextRange.getEnd(startToken) < span.start) { - // ex) firstToken | <= span start. - startIndex++; - } - - let endIndex = Math.min(tokens.getItemAtPosition(TextRange.getEnd(span)), tokens.length - 1); - const endToken = _getTokenAtIndex(tokens, endIndex)!; - if (TextRange.getEnd(span) <= endToken.start) { - // ex) |< = span end [endToken] - endIndex--; - } - - // If the next token is a newline, we want to include it in the range - // so that we can include comments if there is any. - if (endIndex < tokens.length - 1 && _isWhitespaceToken(tokens.getItemAt(endIndex + 1)!.type)) { - endIndex++; - } - - const tokenInfoArray: TokenInfo[] = []; - const lines = parseResults.tokenizerOutput.lines; - - for (let i = startIndex; i <= endIndex; i++) { - const token = _getTokenAtIndex(tokens, i)!; - - if (token.comments) { - for (const comment of token.comments) { - tokenInfoArray.push({ - start: comment.start, - length: comment.length, - range: convertTextRangeToRange(comment, lines), - text: comment.value, - - kind: 'comment', - firstTokenOnLine: false, - multilineDocComment: false, - }); - } - } - - if (_isWhitespaceToken(token.type) || token.length === 0) { - continue; - } - - tokenInfoArray.push({ - start: token.start, - length: token.length, - range: convertTextRangeToRange(token, lines), - text: parseResults.text.substr(token.start, token.length), - - kind: token.type === TokenType.String ? 'string' : 'token', - firstTokenOnLine: false, - multilineDocComment: false, - }); - } - - if (tokenInfoArray.length === 0) { - return tokenInfoArray; - } - - tokenInfoArray.sort((a, b) => a.start - b.start); - - // Handle text in whitespace that is not part of token stream. - let previousInfo = tokenInfoArray[0]; - const additionalTokens: TokenInfo[] = []; - if (previousInfo.kind === 'comment') { - // ex) token [#] comment - const start = startIndex === 0 ? 0 : TextRange.getEnd(_getTokenAtIndex(tokens, startIndex - 1)!); - _addTokenInfoIfMatch(parseResults, start, previousInfo.start, Char.Hash, additionalTokens); - } - - for (let i = 1; i < tokenInfoArray.length; i++) { - const info = tokenInfoArray[i]; - - // Another approach is just blindly go through the range looking for - // non whitespace char rather than looking for specific cases like below. - if (previousInfo.kind !== 'comment') { - for ( - let whitespaceLine = previousInfo.range.end.line; - whitespaceLine < info.range.start.line; - whitespaceLine++ - ) { - const lineTextRange = lines.getItemAt(whitespaceLine); - const lastCharOffset = lineTextRange.length - _getLineEndingLength(parseResults, whitespaceLine) - 1; - if (lastCharOffset >= 0) { - // ex) i = 1 \ <= explicit multiline construct - // + - // 2 - const start = lineTextRange.start + lastCharOffset; - _addTokenInfoIfMatch(parseResults, start, start + 1, Char.Backslash, additionalTokens); - } - } - } - - if (info.kind === 'comment') { - const start = - previousInfo.range.end.line === info.range.start.line - ? TextRange.getEnd(previousInfo) - : lines.getItemAt(info.range.start.line).start; - - // ex) token [#] comment - _addTokenInfoIfMatch(parseResults, start, info.start, Char.Hash, additionalTokens); - } - - previousInfo = info; - } - - appendArray(tokenInfoArray, additionalTokens); - tokenInfoArray.sort((a, b) => a.start - b.start); - - // Update firstTokenOnLine and multilineDocComment - previousInfo = tokenInfoArray[0]; - - if (startIndex === 0) { - // It is the first token in the file. - previousInfo.firstTokenOnLine = true; - } else { - const previousNonWhitespaceToken = _findNonWhitespaceTokenAtOrBeforeIndex(tokens, startIndex - 1); - if (previousNonWhitespaceToken) { - const previousEnd = convertOffsetToPosition(TextRange.getEnd(previousNonWhitespaceToken), lines); - previousInfo.firstTokenOnLine = previousEnd.line !== previousInfo.range.start.line; - } else { - previousInfo.firstTokenOnLine = true; - } - } - - previousInfo.multilineDocComment = _isMultilineDocComment(parseResults, previousInfo); - - for (let i = 1; i < tokenInfoArray.length; i++) { - const info = tokenInfoArray[i]; - - info.firstTokenOnLine = previousInfo.range.end.line !== info.range.start.line; - info.multilineDocComment = _isMultilineDocComment(parseResults, info); - - previousInfo = info; - } - - return tokenInfoArray; -} - -function _addTokenInfoIfMatch( - parseResults: ParseResults, - start: number, - end: number, - charCode: number, - tokens: TokenInfo[] -) { - for (let i = start; i < end; i++) { - if (parseResults.text.charCodeAt(i) === charCode) { - tokens.push({ - start: i, - length: 1, - range: convertTextRangeToRange(TextRange.create(i, 1), parseResults.tokenizerOutput.lines), - text: String.fromCharCode(charCode), - - kind: 'token', - firstTokenOnLine: false, - multilineDocComment: false, - }); - } - } -} - -function _isWhitespaceToken(type: TokenType): boolean { - switch (type) { - case TokenType.Dedent: - case TokenType.NewLine: - case TokenType.Indent: - case TokenType.EndOfStream: - return true; - - default: - return false; - } -} - -function _isMultilineDocComment(parseResults: ParseResults, info: TokenInfo) { - if (info.kind !== 'string' || !info.firstTokenOnLine || info.range.start.line === info.range.end.line) { - return false; - } - - const node = findNodeByOffset(parseResults.parseTree, info.start); - if ( - node?.nodeType !== ParseNodeType.String || - node.parent?.nodeType !== ParseNodeType.StringList || - node.parent.parent?.nodeType !== ParseNodeType.StatementList - ) { - return false; - } - - return isDocString(node.parent.parent); -} - -function _reindentLinesFromText(parseResults: ParseResults, info: TokenInfo, indentDelta: number) { - const texts: string[] = []; - for (let i = info.range.start.line; i <= info.range.end.line; i++) { - texts.push(_reindentLineFromText(parseResults, i, indentDelta, i === info.range.end.line ? info : undefined)); - } - - return texts; -} - -function _reindentLineFromText( - parseResults: ParseResults, - line: number, - indentDelta: number, - range?: TextRange -): string { - const result = getIndentationFromText(parseResults, line); - if (_isBlankLine(parseResults, line, result.charOffset)) { - return ''; - } - - let lineRange = parseResults.tokenizerOutput.lines.getItemAt(line); - if (range) { - lineRange = TextRange.fromBounds( - lineRange.start, - Math.min(TextRange.getEnd(range), TextRange.getEnd(lineRange)) - ); - } - - const text = parseResults.text.substr(lineRange.start + result.charOffset, lineRange.length - result.charOffset); - return createIndentationString(parseResults, Math.max(result.indentation + indentDelta, 0)) + text; -} - -function _getTabSize(parseResults: ParseResults) { - const tab = parseResults.tokenizerOutput.predominantTabSequence; - const tabLength = tab.length; - if (tabLength === 1 && tab.charCodeAt(0) === Char.Tab) { - // Tokenizer will use 8 for Char.Tab and put that info in indentToken's indent size. - return defaultTabSize; - } - - return tabLength; -} - -export function createIndentationString(parseResults: ParseResults, indentation: number) { - const tab = parseResults.tokenizerOutput.predominantTabSequence; - const tabLength = tab.length; - if (tabLength === 1 && tab.charCodeAt(0) === Char.Tab) { - const spaceCount = indentation % defaultTabSize; - const tabCount = (indentation - spaceCount) / defaultTabSize; - - return '\t'.repeat(tabCount) + ' '.repeat(spaceCount); - } - - return ' '.repeat(indentation); -} diff --git a/packages/pyright-internal/src/languageService/insertionPointUtils.ts b/packages/pyright-internal/src/languageService/insertionPointUtils.ts deleted file mode 100644 index 2de75ae3b..000000000 --- a/packages/pyright-internal/src/languageService/insertionPointUtils.ts +++ /dev/null @@ -1,181 +0,0 @@ -/* - * insertionPointUtils.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Provides code to get position to inject generated code. - */ - -import { getFileInfo, getScope } from '../analyzer/analyzerNodeInfo'; -import { Declaration, DeclarationType } from '../analyzer/declaration'; -import { getNameNodeForDeclaration } from '../analyzer/declarationUtils'; -import { getFirstAncestorOrSelf, isBlankLine } from '../analyzer/parseTreeUtils'; -import { isPrivateName } from '../analyzer/symbolNameUtils'; -import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { containsOnlyWhitespace } from '../common/core'; -import { convertOffsetToPosition, convertPositionToOffset, getLineEndOffset } from '../common/positionUtils'; -import { TextRange } from '../common/textRange'; -import { MatchNode, ParseNode, ParseNodeType, StatementNode, SuiteNode } from '../parser/parseNodes'; -import { ParseResults } from '../parser/parser'; - -export interface InsertionOptions { - insertBefore?: number; - symbolDeclToIgnore?: string; -} - -export function getInsertionPointForSymbolUnderModule( - evaluator: TypeEvaluator, - parseResults: ParseResults, - symbolName: string, - options?: InsertionOptions -): number | undefined { - const module = parseResults.parseTree; - - // If it is an empty file with all whitespaces, return 0 - const defaultInsertionPoint = _getDefaultInsertionPoint(parseResults); - if (module.statements.length === 0) { - return containsOnlyWhitespace(parseResults.text) ? 0 : defaultInsertionPoint; - } - - // See whether same name is already taken. - const scope = getScope(module); - if (!scope) { - // No symbol is defined. - return defaultInsertionPoint; - } - - const fileInfo = getFileInfo(module); - const symbol = scope.lookUpSymbol(symbolName); - if ( - symbol && - _getDeclarationsDefinedInCurrentModule(evaluator, symbol.getDeclarations(), fileInfo.filePath, options).length > - 0 - ) { - // Same name symbol is already defined in the module level. - // We can't add another one. - return undefined; - } - - const insertBefore = options?.insertBefore ?? defaultInsertionPoint; - if (isPrivateName(symbolName)) { - return Math.max(0, insertBefore); - } - - if (insertBefore < TextRange.getEnd(module.statements[0])) { - return Math.max(0, Math.min(insertBefore, module.statements[0].start)); - } - - const lastStatement = _getLastStatementWithPublicName( - module.statements, - options?.insertBefore ?? defaultInsertionPoint - ); - - const position = convertOffsetToPosition(TextRange.getEnd(lastStatement), parseResults.tokenizerOutput.lines); - return getLineEndOffset(parseResults.tokenizerOutput, parseResults.text, position.line); -} - -export function getContainer(node: ParseNode, includeSelf = true): SuiteNode | MatchNode | undefined { - return getFirstAncestorOrSelf(node, (n) => { - if (!includeSelf && node === n) { - return false; - } - - return n.nodeType === ParseNodeType.Suite || n.nodeType === ParseNodeType.Match; - }) as SuiteNode | undefined; -} - -function _getDefaultInsertionPoint(parseResults: ParseResults) { - const endOffset = TextRange.getEnd(parseResults.parseTree); - const position = convertOffsetToPosition(endOffset, parseResults.tokenizerOutput.lines); - if (position.character === 0) { - return endOffset; - } - - if (isBlankLine(parseResults, position.line)) { - return ( - convertPositionToOffset({ line: position.line, character: 0 }, parseResults.tokenizerOutput.lines) ?? - endOffset - ); - } - - return endOffset; -} - -function _getDeclarationsDefinedInCurrentModule( - evaluator: TypeEvaluator, - declarations: Declaration[], - moduleFilePath: string, - options?: InsertionOptions -) { - return declarations.filter((d) => { - const resolved = evaluator.resolveAliasDeclaration(d, /* resolveLocalNames */ true, { - allowExternallyHiddenAccess: true, - }); - - if (!resolved) { - return false; - } - - if (options?.symbolDeclToIgnore && resolved.path === options.symbolDeclToIgnore) { - // Even if the symbol is defined in current file, if it is something we are going to remove - // we should ignore the symbol being exist in current file. - // ex) inserting "myFunc" to a file that has "from lib import myFunc" - return false; - } - - if (d.type === DeclarationType.Alias) { - const name = getNameNodeForDeclaration(d); - if (!name) { - return false; - } - - // Check alias is defined in this module. - const fileInfo = getFileInfo(name); - return fileInfo.filePath === moduleFilePath; - } - - return resolved.path === moduleFilePath; - }); -} - -function _getLastStatementWithPublicName(statements: StatementNode[], insertBefore: number) { - let lastStatement = statements[0]; - for (let i = 1; i < statements.length; i++) { - const statement = statements[i]; - if (insertBefore < TextRange.getEnd(statement)) { - return lastStatement; - } - - switch (statement.nodeType) { - case ParseNodeType.Class: - case ParseNodeType.Function: { - if (isPrivateName(statement.name.value)) { - return lastStatement; - } - - lastStatement = statement; - continue; - } - case ParseNodeType.StatementList: { - if ( - statement.statements.some( - (s) => - s.nodeType === ParseNodeType.Assignment && - s.leftExpression.nodeType === ParseNodeType.Name && - isPrivateName(s.leftExpression.value) - ) - ) { - return lastStatement; - } - - lastStatement = statement; - continue; - } - default: - lastStatement = statement; - continue; - } - } - - return lastStatement; -} diff --git a/packages/pyright-internal/src/languageService/referencesProvider.ts b/packages/pyright-internal/src/languageService/referencesProvider.ts index a2b5c0526..0520485dc 100644 --- a/packages/pyright-internal/src/languageService/referencesProvider.ts +++ b/packages/pyright-internal/src/languageService/referencesProvider.ts @@ -13,9 +13,7 @@ import { CancellationToken, Location, ResultProgressReporter } from 'vscode-lang import { Declaration, DeclarationType, isAliasDeclaration } from '../analyzer/declaration'; import { getNameFromDeclaration } from '../analyzer/declarationUtils'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; -import { SourceFile } from '../analyzer/sourceFile'; -import { isUserCode } from '../analyzer/sourceFileInfoUtils'; -import { SourceMapper } from '../analyzer/sourceMapper'; +import { collectImportedByFiles, isUserCode } from '../analyzer/sourceFileInfoUtils'; import { Symbol } from '../analyzer/symbol'; import { isVisibleExternally } from '../analyzer/symbolUtils'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; @@ -23,7 +21,7 @@ import { maxTypeRecursionCount } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { assertNever } from '../common/debug'; -import { ProgramView } from '../common/extensibility'; +import { ProgramView, SourceFile } from '../common/extensibility'; import { convertOffsetToPosition, convertPositionToOffset } from '../common/positionUtils'; import { DocumentRange, Position, TextRange, doesRangeContain } from '../common/textRange'; import { NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; @@ -97,28 +95,35 @@ export class ReferencesResult { } export class FindReferencesTreeWalker { + private _parseResults: ParseResults | undefined; + constructor( - private _parseResults: ParseResults, + private _program: ProgramView, private _filePath: string, private _referencesResult: ReferencesResult, private _includeDeclaration: boolean, - private _evaluator: TypeEvaluator, private _cancellationToken: CancellationToken - ) {} + ) { + this._parseResults = this._program.getParseResults(this._filePath); + } + + findReferences(rootNode = this._parseResults?.parseTree) { + const results: DocumentRange[] = []; + if (!this._parseResults) { + return results; + } - findReferences(rootNode = this._parseResults.parseTree) { const collector = new DocumentSymbolCollector( + this._program, this._referencesResult.symbolNames, this._referencesResult.declarations, - this._evaluator, this._cancellationToken, - rootNode, + rootNode!, /* treatModuleInImportAndFromImportSame */ true, /* skipUnreachableCode */ false, this._referencesResult.useCase ); - const results: DocumentRange[] = []; for (const result of collector.collect()) { // Is it the same symbol? if (this._includeDeclaration || result.node !== this._referencesResult.nodeAtOffset) { @@ -167,14 +172,14 @@ export class ReferencesProvider { const invokedFromUserFile = isUserCode(sourceFileInfo); const referencesResult = ReferencesProvider.getDeclarationForPosition( - this._program.getSourceMapper(filePath, this._token), - parseResults, + this._program, filePath, position, - this._evaluator, reporter, DocumentSymbolCollectorUseCase.Reference, - this._token + this._token, + // It is temporary fix for release. + Array.from(collectImportedByFiles(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile) ); if (!referencesResult) { return; @@ -253,11 +258,10 @@ export class ReferencesProvider { } const refTreeWalker = new FindReferencesTreeWalker( - parseResults, + this._program, filePath, referencesResult, includeDeclaration, - this._evaluator, this._token ); @@ -265,10 +269,9 @@ export class ReferencesProvider { } static getDeclarationForNode( - sourceMapper: SourceMapper, + program: ProgramView, filePath: string, node: NameNode, - evaluator: TypeEvaluator, reporter: ReferenceCallback | undefined, useCase: DocumentSymbolCollectorUseCase, token: CancellationToken, @@ -277,12 +280,11 @@ export class ReferencesProvider { throwIfCancellationRequested(token); const declarations = DocumentSymbolCollector.getDeclarationsForNode( + program, node, - evaluator, /* resolveLocalNames */ false, useCase, token, - sourceMapper, implicitlyImportedBy ); @@ -290,8 +292,7 @@ export class ReferencesProvider { return undefined; } - const requiresGlobalSearch = isVisibleOutside(evaluator, filePath, node, declarations); - + const requiresGlobalSearch = isVisibleOutside(program.evaluator!, filePath, node, declarations); const symbolNames = new Set(declarations.map((d) => getNameFromDeclaration(d)!).filter((n) => !!n)); symbolNames.add(node.value); @@ -306,17 +307,19 @@ export class ReferencesProvider { } static getDeclarationForPosition( - sourceMapper: SourceMapper, - parseResults: ParseResults, + program: ProgramView, filePath: string, position: Position, - evaluator: TypeEvaluator, reporter: ReferenceCallback | undefined, useCase: DocumentSymbolCollectorUseCase, token: CancellationToken, implicitlyImportedBy?: SourceFile[] ): ReferencesResult | undefined { throwIfCancellationRequested(token); + const parseResults = program.getParseResults(filePath); + if (!parseResults) { + return undefined; + } const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); if (offset === undefined) { @@ -333,20 +336,7 @@ export class ReferencesProvider { return undefined; } - return this.getDeclarationForNode( - sourceMapper, - filePath, - node, - evaluator, - reporter, - useCase, - token, - implicitlyImportedBy - ); - } - - private get _evaluator(): TypeEvaluator { - return this._program.evaluator!; + return this.getDeclarationForNode(program, filePath, node, reporter, useCase, token, implicitlyImportedBy); } } diff --git a/packages/pyright-internal/src/languageService/renameModuleProvider.ts b/packages/pyright-internal/src/languageService/renameModuleProvider.ts deleted file mode 100644 index def6cd972..000000000 --- a/packages/pyright-internal/src/languageService/renameModuleProvider.ts +++ /dev/null @@ -1,1405 +0,0 @@ -/* - * renameModuleProvider.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Logic that updates affected references of a module rename/move. - */ - -import { CancellationToken } from 'vscode-languageserver'; - -import { getFileInfo, getImportInfo } from '../analyzer/analyzerNodeInfo'; -import { - AliasDeclaration, - Declaration, - isAliasDeclaration, - isClassDeclaration, - isFunctionDeclaration, - isVariableDeclaration, -} from '../analyzer/declaration'; -import { createSynthesizedAliasDeclaration, getNameFromDeclaration } from '../analyzer/declarationUtils'; -import { ImportResolver, ModuleNameAndType, createImportedModuleDescriptor } from '../analyzer/importResolver'; -import { - ImportStatement, - ImportStatements, - getDirectoryLeadingDotsPointsTo, - getImportGroupFromModuleNameAndType, - getRelativeModuleName, - getTopLevelImports, - haveSameParentModule, -} from '../analyzer/importStatementUtils'; -import { - getDottedNameWithGivenNodeAsLastName, - getFirstAncestorOrSelfOfKind, - getFullStatementRange, - getVariableDocStringNode, - isFromImportAlias, - isFromImportModuleName, - isFromImportName, - isImportAlias, - isImportModuleName, - isLastNameOfModuleName, -} from '../analyzer/parseTreeUtils'; -import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; -import { ScopeType } from '../analyzer/scope'; -import { isStubFile } from '../analyzer/sourceMapper'; -import { isPrivateName } from '../analyzer/symbolNameUtils'; -import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { TypeCategory } from '../analyzer/types'; -import { getOrAdd } from '../common/collectionUtils'; -import { ConfigOptions, matchFileSpecs } from '../common/configOptions'; -import { assert, assertNever } from '../common/debug'; -import { FileEditAction } from '../common/editAction'; -import { FileSystem } from '../common/fileSystem'; -import { - combinePaths, - getDirectoryChangeKind, - getDirectoryPath, - getFileExtension, - getFileName, - isDirectory, - isFile, - resolvePaths, - stripFileExtension, -} from '../common/pathUtils'; -import { convertRangeToTextRange } from '../common/positionUtils'; -import { TextEditTracker } from '../common/textEditTracker'; -import { TextRange } from '../common/textRange'; -import { - ImportAsNode, - ImportFromAsNode, - ImportFromNode, - MemberAccessNode, - ModuleNameNode, - ModuleNode, - NameNode, - ParseNode, - ParseNodeType, - isExpressionNode, -} from '../parser/parseNodes'; -import { ParseResults } from '../parser/parser'; -import { CollectionResult, DocumentSymbolCollector, DocumentSymbolCollectorUseCase } from './documentSymbolCollector'; - -enum UpdateType { - File, - Folder, - Symbol, -} - -export class RenameModuleProvider { - private readonly _newModuleFilePath: string; - private readonly _moduleNames: string[]; - private readonly _newModuleNames: string[]; - private readonly _onlyNameChanged: boolean; - private readonly _aliasIntroduced = new Set(); - private readonly _textEditTracker = new TextEditTracker(); - - private constructor( - private _fs: FileSystem, - private _evaluator: TypeEvaluator, - private _moduleFilePath: string, - newModuleFilePath: string, - private _moduleNameAndType: ModuleNameAndType, - private _newModuleNameAndType: ModuleNameAndType, - private _type: UpdateType, - public declarations: Declaration[], - private _token: CancellationToken - ) { - // moduleName and newModuleName are always in the absolute path form. - this._newModuleFilePath = resolvePaths(newModuleFilePath); - - this._moduleNames = this._moduleName.split('.'); - this._newModuleNames = this._newModuleName.split('.'); - - this._onlyNameChanged = haveSameParentModule(this._moduleNames, this._newModuleNames); - assert(this._type !== UpdateType.Folder || this._onlyNameChanged, 'We only support simple rename for folder'); - } - - get lastModuleName() { - return this._moduleNames[this._moduleNames.length - 1]; - } - - get textEditTracker(): TextEditTracker { - return this._textEditTracker; - } - - static createForModule( - importResolver: ImportResolver, - configOptions: ConfigOptions, - evaluator: TypeEvaluator, - path: string, - newPath: string, - token: CancellationToken - ): RenameModuleProvider | undefined { - if (!importResolver.fileSystem.existsSync(path)) { - return undefined; - } - - if (isFile(importResolver.fileSystem, path)) { - return this._create(importResolver, configOptions, evaluator, path, newPath, UpdateType.File, token); - } else if (isDirectory(importResolver.fileSystem, path)) { - // Make sure folder path is simple rename. - if (getDirectoryChangeKind(importResolver.fileSystem, path, newPath) !== 'Renamed') { - return undefined; - } - - // We don't support namespace folder name. Currently, we don't have - // a way to find namespace folder references. - let fileNameForPackage = combinePaths(path, '__init__.pyi'); - if (!importResolver.fileSystem.existsSync(fileNameForPackage)) { - fileNameForPackage = combinePaths(path, '__init__.py'); - if (!importResolver.fileSystem.existsSync(fileNameForPackage)) { - return undefined; - } - } - - return this._create( - importResolver, - configOptions, - evaluator, - fileNameForPackage, - combinePaths(newPath, getFileName(fileNameForPackage)), - UpdateType.Folder, - token - ); - } - - return undefined; - } - - static createForSymbol( - importResolver: ImportResolver, - configOptions: ConfigOptions, - evaluator: TypeEvaluator, - path: string, - newPath: string, - declarations: Declaration[], - token: CancellationToken - ): RenameModuleProvider | undefined { - if (!importResolver.fileSystem.existsSync(path)) { - return undefined; - } - - const filteredDecls = declarations.filter( - (d) => isClassDeclaration(d) || isFunctionDeclaration(d) || isVariableDeclaration(d) - ); - - if (filteredDecls.length === 0) { - return undefined; - } - - return this._create( - importResolver, - configOptions, - evaluator, - path, - newPath, - UpdateType.Symbol, - filteredDecls, - token! - ); - } - - static canMoveSymbol(configOptions: ConfigOptions, evaluator: TypeEvaluator, node: NameNode): boolean { - const filePath = getFileInfo(node)?.filePath; - if (!filePath || !matchFileSpecs(configOptions, filePath, /* isFile */ true)) { - // We only support moving symbols from a user file. - return false; - } - - if (isPrivateName(node.value)) { - return false; - } - - const lookUpResult = evaluator.lookUpSymbolRecursive(node, node.value, /* honorCodeFlow */ false); - if (lookUpResult === undefined || lookUpResult.scope.type !== ScopeType.Module) { - // We only allow moving a symbol at the module level. - return false; - } - - // For now, we only supports module level variable, function and class. - const declarations = lookUpResult.symbol.getDeclarations(); - if (declarations.length === 0) { - return false; - } - - return declarations.every((d) => { - if (!TextRange.containsRange(d.node, node)) { - return false; - } - - if (isFunctionDeclaration(d) || isClassDeclaration(d)) { - return true; - } - - if (isVariableDeclaration(d)) { - // We only support simple variable assignment. - // ex) a = 1 - if (evaluator.isExplicitTypeAliasDeclaration(d)) { - return false; - } - - if (d.inferredTypeSource && isExpressionNode(d.inferredTypeSource)) { - const type = evaluator.getType(d.inferredTypeSource); - if (type?.category === TypeCategory.TypeVar) { - return false; - } - } - - // This make sure we are not one of these - // ex) a = b = 1 - // a, b = 1, 2 - if ( - d.node.parent?.nodeType !== ParseNodeType.Assignment || - d.node.parent?.parent?.nodeType !== ParseNodeType.StatementList - ) { - return false; - } - - if (d.node.start !== d.node.parent.start) { - return false; - } - - return true; - } - - return false; - }); - } - - static getSymbolTextRange(parseResults: ParseResults, decl: Declaration): TextRange { - if (isVariableDeclaration(decl)) { - const assignment = getFirstAncestorOrSelfOfKind(decl.node, ParseNodeType.Assignment) ?? decl.node; - const range = getFullStatementRange(assignment, parseResults); - const textRange = convertRangeToTextRange(range, parseResults.tokenizerOutput.lines) ?? assignment; - - if (decl.docString !== undefined) { - const docNode = getVariableDocStringNode(decl.node); - if (docNode) { - TextRange.extend(textRange, docNode); - } - } - - return textRange; - } - - return decl.node; - } - - static getSymbolFullStatementTextRange(parseResults: ParseResults, decl: Declaration): TextRange { - const statementNode = isVariableDeclaration(decl) - ? getFirstAncestorOrSelfOfKind(decl.node, ParseNodeType.Assignment) ?? decl.node - : decl.node; - const range = getFullStatementRange(statementNode, parseResults, { - includeTrailingBlankLines: true, - }); - return convertRangeToTextRange(range, parseResults.tokenizerOutput.lines) ?? statementNode; - } - - static getRenameModulePath(declarations: Declaration[]) { - // If we have a decl with no node, we will prefer that decl over others. - // The decl with no node is a synthesized alias decl created only for IDE case - // that should point to the right module file. - const bestDecl = declarations.find((d) => !d.node); - if (bestDecl) { - return bestDecl.path; - } - - // Otherwise, prefer stub if we have one. or just return first decl. - const declarationPaths = [...declarations.reduce((s, d) => s.add(d.path), new Set())]; - const stubIndex = declarationPaths.findIndex((d) => isStubFile(d)); - if (stubIndex >= 0) { - return declarationPaths[stubIndex]; - } - - return declarationPaths[0]; - } - - static getRenameModulePathInfo(declarationPath: string, newName: string) { - const filePath = getFilePathToRename(declarationPath); - const newFilePath = replaceFileName(filePath, newName); - - return { filePath, newFilePath }; - - function getFilePathToRename(filePath: string) { - const fileName = stripFileExtension(getFileName(filePath)); - if (fileName === '__init__') { - return getDirectoryPath(filePath); - } - - return filePath; - } - - function replaceFileName(filePath: string, newName: string) { - const ext = getFileExtension(filePath); - const directory = getDirectoryPath(filePath); - - return combinePaths(directory, `${newName}${ext}`); - } - } - - getEdits(): FileEditAction[] { - return this._textEditTracker.getEdits(this._token); - } - - renameReferences(parseResults: ParseResults) { - switch (this._type) { - case UpdateType.Folder: - return this._renameFolderReferences(parseResults); - case UpdateType.File: - return this._renameModuleReferences(parseResults); - case UpdateType.Symbol: - return this._updateSymbolReferences(parseResults); - default: - return assertNever(this._type, `${this._type} is unknown`); - } - } - - tryGetFirstSymbolUsage(parseResults: ParseResults, symbol?: { name: string; decls: Declaration[] }) { - const name = symbol?.name ?? getNameFromDeclaration(this.declarations[0]) ?? ''; - const collector = new DocumentSymbolCollector( - [name], - symbol?.decls ?? this.declarations, - this._evaluator!, - this._token, - parseResults.parseTree, - /* treatModuleImportAndFromImportSame */ true, - /* skipUnreachableCode */ false - ); - - for (const result of collector.collect().sort((r1, r2) => r1.range.start - r2.range.start)) { - // We only care about symbol usages, not alias decl of the symbol. - if ( - isImportModuleName(result.node) || - isImportAlias(result.node) || - isFromImportModuleName(result.node) || - isFromImportName(result.node) || - isFromImportAlias(result.node) - ) { - continue; - } - - return result.range.start; - } - - return undefined; - } - - private get _moduleName() { - return this._moduleNameAndType.moduleName; - } - - private get _newLastModuleName() { - return this._newModuleNames[this._newModuleNames.length - 1]; - } - - private get _newModuleName() { - return this._newModuleNameAndType.moduleName; - } - - private static _create( - importResolver: ImportResolver, - configOptions: ConfigOptions, - evaluator: TypeEvaluator, - moduleFilePath: string, - newModuleFilePath: string, - type: UpdateType, - tokenOrDeclarations: Declaration[] | CancellationToken, - token?: CancellationToken - ): RenameModuleProvider | undefined { - const execEnv = configOptions.findExecEnvironment(moduleFilePath); - const moduleName = importResolver.getModuleNameForImport(moduleFilePath, execEnv); - if (!moduleName.moduleName) { - return undefined; - } - - const newModuleName = importResolver.getModuleNameForImport(newModuleFilePath, execEnv); - if (!newModuleName.moduleName) { - return undefined; - } - - token = CancellationToken.is(tokenOrDeclarations) ? tokenOrDeclarations : token; - const declarations = CancellationToken.is(tokenOrDeclarations) ? [] : tokenOrDeclarations; - if (declarations.length === 0) { - // Create synthesized alias decls from the given file path. If the given file is for stub, - // create one for the corresponding py file as well. - declarations.push(createSynthesizedAliasDeclaration(moduleFilePath)); - if (isStubFile(moduleFilePath)) { - // The resolveImport should make sure non stub file search to happen. - importResolver.resolveImport( - moduleFilePath, - execEnv, - createImportedModuleDescriptor(moduleName.moduleName) - ); - - importResolver - .getSourceFilesFromStub(moduleFilePath, execEnv, /* mapCompiled */ false) - .forEach((p) => declarations!.push(createSynthesizedAliasDeclaration(p))); - } - } - - return new RenameModuleProvider( - importResolver.fileSystem, - evaluator, - moduleFilePath, - newModuleFilePath, - moduleName, - newModuleName, - type, - declarations, - token! - ); - } - - private _updateSymbolReferences(parseResults: ParseResults) { - const filePath = getFileInfo(parseResults.parseTree).filePath; - const isSource = filePath === this._moduleFilePath; - - const collector = new DocumentSymbolCollector( - [getNameFromDeclaration(this.declarations[0]) || ''], - this.declarations, - this._evaluator!, - this._token, - parseResults.parseTree, - /* treatModuleImportAndFromImportSame */ true, - /* skipUnreachableCode */ false - ); - - // See if we need to insert new import statement - const importStatements = getTopLevelImports(parseResults.parseTree, /* includeImplicitImports */ true); - - // See whether we have existing import statement for the same module - // ex) import [moduleName] or from ... import [moduleName] - const imported = importStatements.orderedImports.find((i) => i.moduleName === this._newModuleName); - - // Indicate whether current file has any usage of the symbol - let hasSymbolUsage = false; - - const wildcardImports = new Map>(); - const importUsed = new Map(); - for (const result of collector.collect()) { - const nodeFound = result.node; - - if (nodeFound.nodeType === ParseNodeType.String) { - if (isSource) { - // Delete the symbol reference in __all__ if the file is the source file. - this._textEditTracker.addEditWithTextRange(parseResults, nodeFound, ''); - } - continue; - } - - if (isFromImportName(nodeFound)) { - this._updateNameInFromImportForSymbolReferences(parseResults, importStatements, nodeFound); - continue; - } - - // Exclude symbol decl itself. - hasSymbolUsage ||= isSource - ? !this.declarations.some((d) => TextRange.containsRange(d.node, nodeFound)) - : true; - - const dottedName = getDottedNameWithGivenNodeAsLastName(nodeFound); - if (dottedName === nodeFound || dottedName.nodeType !== ParseNodeType.MemberAccess) { - this._collectWildcardImports(nodeFound, wildcardImports); - - // ex) from module import foo - // foo - // foo.method() - continue; - } - - this._collectSymbolReferencesPerImports(dottedName, importUsed); - } - - if (isSource && hasSymbolUsage) { - // If the original file has references to the symbol moved, we need to either - // insert import statement or update existing one. - const newModuleName = - imported?.node.nodeType === ParseNodeType.ImportFrom - ? this._getNewModuleName( - filePath, - imported.node.module.leadingDots > 0, - /* isLastPartImportName */ false - ) - : undefined; - - const options = - imported?.node.nodeType === ParseNodeType.ImportFrom - ? { - currentFromImport: imported.node, - originalModuleName: this._moduleName, - } - : undefined; - - this._textEditTracker.addOrUpdateImport( - parseResults, - importStatements, - { name: this._newModuleName, nameForImportFrom: newModuleName }, - getImportGroupFromModuleNameAndType(this._newModuleNameAndType), - [{ name: getNameFromDeclaration(this.declarations[0])! }], - options - ); - } - - // Handle symbol references that are used off wildcard imports. - this._processSymbolReferenceOffWildcardImports(parseResults, importStatements, wildcardImports); - - // Handle symbol references that are used off imported modules. - this._processSymbolReferenceOffImports(parseResults, importStatements, imported, importUsed); - } - - private _processSymbolReferenceOffImports( - parseResults: ParseResults, - importStatements: ImportStatements, - imported: ImportStatement | undefined, - importUsed: Map - ) { - const filePath = getFileInfo(parseResults.parseTree).filePath; - const isDestination = filePath === this._newModuleFilePath; - if (isDestination) { - for (const [key, value] of importUsed) { - if (this._canReplaceImportName(parseResults, key, value)) { - // We can remove existing import statement. - this._textEditTracker.deleteImportName(parseResults, key); - } - - for (const node of value) { - this._textEditTracker.addEditWithTextRange( - parseResults, - TextRange.fromBounds(node.start, node.memberName.start), - '' - ); - } - } - return; - } - - // Other files. - for (const [key, value] of importUsed) { - let referenceModuleName: string; - if (this._canReplaceImportName(parseResults, key, value)) { - const moduleName = this._getReferenceModuleName(importStatements, imported); - if (key.nodeType === ParseNodeType.ImportAs) { - if (moduleName) { - referenceModuleName = moduleName; - this._textEditTracker.deleteImportName(parseResults, key); - } else { - referenceModuleName = key.alias ? key.alias.value : this._newModuleName; - this._textEditTracker.addEditWithTextRange(parseResults, key.module, this._newModuleName); - } - } else { - if (moduleName) { - referenceModuleName = moduleName; - this._textEditTracker.deleteImportName(parseResults, key); - } else { - const fromNode = key.parent as ImportFromNode; - const newModuleName = this._getNewModuleName( - filePath, - fromNode.module.leadingDots > 0, - /* isLastPartImportName */ true - ); - - referenceModuleName = key.alias ? key.alias.value : this._newLastModuleName; - this._textEditTracker.addEditWithTextRange(parseResults, fromNode.module, newModuleName); - this._textEditTracker.addEditWithTextRange(parseResults, key.name, this._newLastModuleName); - } - } - } else { - const moduleName = this._getReferenceModuleName(importStatements, imported); - if (moduleName) { - referenceModuleName = moduleName; - } else { - referenceModuleName = this._newModuleName; - this._textEditTracker.addOrUpdateImport( - parseResults, - importStatements, - { name: this._newModuleName }, - getImportGroupFromModuleNameAndType(this._newModuleNameAndType) - ); - } - } - - for (const node of value) { - this._textEditTracker.addEditWithTextRange(parseResults, node.leftExpression, referenceModuleName); - } - } - } - - private _processSymbolReferenceOffWildcardImports( - parseResults: ParseResults, - importStatements: ImportStatements, - wildcardImports: Map> - ) { - const filePath = getFileInfo(parseResults.parseTree).filePath; - const isDestination = filePath === this._newModuleFilePath; - if (isDestination) { - // Destination file contains the moved symbol decl. no need to insert - // import statement for the symbol moved. - return; - } - - for (const [key, value] of wildcardImports) { - const fromNode = key; - const newModuleName = this._getNewModuleName( - filePath, - fromNode.module.leadingDots > 0, - /* isLastPartImportName */ false - ); - - this._textEditTracker.addOrUpdateImport( - parseResults, - importStatements, - { name: this._newModuleName, nameForImportFrom: newModuleName }, - getImportGroupFromModuleNameAndType(this._newModuleNameAndType), - [...value].map((v) => ({ name: v })), - { - currentFromImport: fromNode, - originalModuleName: this._moduleName, - } - ); - } - } - - private _collectSymbolReferencesPerImports( - dottedName: MemberAccessNode, - importUsed: Map - ) { - const moduleName = - dottedName.leftExpression.nodeType === ParseNodeType.MemberAccess - ? dottedName.leftExpression.memberName - : dottedName.leftExpression.nodeType === ParseNodeType.Name - ? dottedName.leftExpression - : undefined; - if (!moduleName) { - // ex) from module import foo - // getModule().foo - return; - } - - const moduleDecl = this._evaluator - .getDeclarationsForNameNode(moduleName) - ?.filter( - (d) => - isAliasDeclaration(d) && - (d.node.nodeType === ParseNodeType.ImportAs || d.node.nodeType === ParseNodeType.ImportFromAs) - ); - if (!moduleDecl || moduleDecl.length === 0) { - // ex) from xxx import yyy - // yyy.property.foo - return; - } - - const importAs = moduleDecl[0].node as ImportAsNode | ImportFromAsNode; - getOrAdd(importUsed, importAs, () => []).push(dottedName); - } - - private _collectWildcardImports(nodeFound: NameNode, wildcardImports: Map>) { - const nameDecls = this._evaluator.getDeclarationsForNameNode(nodeFound); - const aliasDeclFromWildCardImport = nameDecls?.find( - (d) => d.node.nodeType === ParseNodeType.ImportFrom && d.node.isWildcardImport - ); - - if (!aliasDeclFromWildCardImport || !isAliasDeclaration(aliasDeclFromWildCardImport)) { - return; - } - - // ex) from module import * - // foo() - // bar() - getOrAdd(wildcardImports, aliasDeclFromWildCardImport.node, () => new Set()).add(nodeFound.value); - } - - private _updateNameInFromImportForSymbolReferences( - parseResults: ParseResults, - importStatements: ImportStatements, - nodeFound: NameNode - ) { - const filePath = getFileInfo(parseResults.parseTree).filePath; - const isDestination = filePath === this._newModuleFilePath; - - // ex) from ... import [symbol] ... - const importFromAs = nodeFound.parent as ImportFromAsNode; - const fromNode = importFromAs?.parent as ImportFromNode; - - const newModuleName = this._getNewModuleName( - filePath, - fromNode.module.leadingDots > 0, - /* isLastPartImportName */ false - ); - - if (isDestination) { - // If we have import statement for the symbol in the destination file, - // we need to remove it. - // ex) "from module import symbol, another_symbol" to - // "from module import another_symbol" - this._textEditTracker.deleteImportName(parseResults, importFromAs); - return; - } - - if (fromNode.imports.length === 1) { - // ex) "from [module] import symbol" to "from [module.changed] import symbol" - this._textEditTracker.addEditWithTextRange(parseResults, fromNode.module, newModuleName); - return; - } - - // ex) "from module import symbol, another_symbol" to - // "from module import another_symbol" and "from module.changed import symbol" - - // Delete the existing import name including alias. - this._textEditTracker.deleteImportName(parseResults, importFromAs); - - // For now, this won't merge absolute and relative path "from import" statement. - const importNameInfo = { - name: importFromAs.name.value, - alias: importFromAs.alias?.value, - }; - - this._textEditTracker.addOrUpdateImport( - parseResults, - importStatements, - { name: this._newModuleName, nameForImportFrom: newModuleName }, - getImportGroupFromModuleNameAndType(this._newModuleNameAndType), - [importNameInfo], - { - currentFromImport: fromNode, - originalModuleName: this._moduleName, - } - ); - } - - private _getReferenceModuleName( - importStatements: ImportStatements, - imported: ImportStatement | undefined - ): string | undefined { - if (imported && imported.node.nodeType === ParseNodeType.Import) { - return imported.subnode?.alias ? imported.subnode.alias.value : this._newModuleName; - } else if (importStatements.implicitImports?.has(this._newModuleFilePath)) { - const fromImportAs = importStatements.implicitImports.get(this._newModuleFilePath)!; - return fromImportAs.alias ? fromImportAs.alias.value : fromImportAs.name.value; - } - - return undefined; - } - - private _canReplaceImportName( - parseResults: ParseResults, - importAs: ImportAsNode | ImportFromAsNode, - symbolReferences: MemberAccessNode[] - ): boolean { - const nameToBind = - importAs.alias ?? - (importAs.nodeType === ParseNodeType.ImportAs - ? importAs.module.nameParts[importAs.module.nameParts.length - 1] - : importAs.name); - - const declarations = DocumentSymbolCollector.getDeclarationsForNode( - nameToBind, - this._evaluator, - /* resolveLocalName */ false, - DocumentSymbolCollectorUseCase.Rename, - this._token - ); - if (declarations.length === 0) { - return false; - } - - const collector = new DocumentSymbolCollector( - [nameToBind.value], - declarations, - this._evaluator!, - this._token, - parseResults.parseTree, - /* treatModuleImportAndFromImportSame */ true, - /* skipUnreachableCode */ false - ); - - for (const result of collector.collect()) { - if ( - isImportModuleName(result.node) || - isImportAlias(result.node) || - isFromImportModuleName(result.node) || - isFromImportName(result.node) || - isFromImportAlias(result.node) - ) { - // collector will report decls as well. ignore decls. - continue; - } - - // other symbols from the module are used in the file. - if (!symbolReferences.some((s) => TextRange.containsRange(s, result.node))) { - return false; - } - } - - return true; - } - - private _renameFolderReferences(parseResults: ParseResults) { - const collector = new DocumentSymbolCollector( - [this.lastModuleName], - this.declarations, - this._evaluator!, - this._token, - parseResults.parseTree, - /* treatModuleImportAndFromImportSame */ true, - /* skipUnreachableCode */ false - ); - - // We only support simple rename of folder. Change all occurrence of the old folder name - // to new name. - for (const result of collector.collect()) { - this._textEditTracker.addEditWithTextRange(parseResults, result.range, this._newLastModuleName); - } - } - - private _renameModuleReferences(parseResults: ParseResults) { - const collector = new DocumentSymbolCollector( - [this.lastModuleName], - this.declarations, - this._evaluator!, - this._token, - parseResults.parseTree, - /* treatModuleImportAndFromImportSame */ true, - /* skipUnreachableCode */ false - ); - - const results = collector.collect(); - - // Update module references first. - this._updateModuleReferences(parseResults, results); - - // If the module file has moved, we need to update all relative paths used in the file to reflect the move. - this._updateRelativeModuleNamePath(parseResults, results); - } - - private _updateRelativeModuleNamePath(parseResults: ParseResults, results: CollectionResult[]) { - const filePath = getFileInfo(parseResults.parseTree).filePath; - if (filePath !== this._moduleFilePath) { - // We only update relative import paths for the file that has moved. - return; - } - - let importStatements: ImportStatements | undefined; - - // Filter out module name that is already re-written. - for (const edit of this._getNewRelativeModuleNamesForFileMoved( - filePath, - ModuleNameCollector.collect(parseResults.parseTree).filter( - (m) => !results.some((r) => TextRange.containsRange(m.parent!, r.node)) - ) - )) { - this._textEditTracker.addEditWithTextRange(parseResults, edit.moduleName, edit.newModuleName); - - if (!edit.itemsToMove) { - continue; - } - - // This could introduce multiple import statements for same modules with - // different symbols per module name. Unfortunately, there is no easy way to - // prevent it since we can't see changes made by other code until all changes - // are committed. In future, if we support snapshot and diff between snapshots, - // then we can support those complex code generations. - const fromNode = edit.moduleName.parent as ImportFromNode; - - // First, delete existing exported symbols from "from import" statement. - for (const importFromAs of edit.itemsToMove) { - this._textEditTracker.deleteImportName(parseResults, importFromAs); - } - - importStatements = - importStatements ?? getTopLevelImports(parseResults.parseTree, /* includeImplicitImports */ false); - - // For now, this won't merge absolute and relative path "from import" - // statement. - this._textEditTracker.addOrUpdateImport( - parseResults, - importStatements, - { - name: this._newModuleName, - nameForImportFrom: getRelativeModuleName( - this._fs, - this._newModuleFilePath, - this._newModuleFilePath, - /* ignoreFolderStructure */ false, - /* sourceIsFile */ true - ), - }, - getImportGroupFromModuleNameAndType(this._newModuleNameAndType), - edit.itemsToMove.map((i) => { - return { name: i.name.value, alias: i.alias?.value }; - }), - { - currentFromImport: fromNode, - originalModuleName: this._moduleName, - } - ); - } - } - - private _updateModuleReferences(parseResults: ParseResults, results: CollectionResult[]) { - const filePath = getFileInfo(parseResults.parseTree).filePath; - - let importStatements: ImportStatements | undefined; - for (const result of results) { - const nodeFound = result.node; - - if (nodeFound.nodeType === ParseNodeType.String) { - // ex) __all__ = ["[a]"] - this._textEditTracker.addEditWithTextRange(parseResults, result.range, this._newLastModuleName); - continue; - } - - if (isImportModuleName(nodeFound)) { - if (!isLastNameOfModuleName(nodeFound)) { - // It must be directory and we don't support folder rename. - continue; - } - - const moduleNameNode = getFirstAncestorOrSelfOfKind(nodeFound, ParseNodeType.ModuleName)!; - - // * Enhancement * one case we don't handle is introducing new symbol in __all__ - // or converting "import" statement to "from import" statement. - // - // when the existing statement was "import x as x" and it is changed to - // "import y.z as z". we either need to introduce "z" in __all__ or convert - // "import y.z as z" to "from y import z as z" to make sure we keep the symbol - // visibility same. - // - // when we convert "import x as x" to "from y import z as z", we need to handle - // deletion of existing import statement or (x as x) and inserting/merging - // new "from import" statement. - - // If original module name was single word and it becomes dotted name without alias, - // then we introduce alias to keep references as a single word. - // ex) import [xxx] to import [aaa.bbb as bbb] - if ( - moduleNameNode.nameParts.length === 1 && - moduleNameNode.parent?.nodeType === ParseNodeType.ImportAs && - !moduleNameNode.parent.alias && - this._newModuleNames.length > 1 - ) { - this._aliasIntroduced.add(moduleNameNode.parent); - this._textEditTracker.addEditWithTextRange( - parseResults, - moduleNameNode, - `${this._newModuleName} as ${this._newLastModuleName}` - ); - continue; - } - - // Otherwise, update whole module name to new name - // ex) import [xxx.yyy] to import [aaa.bbb] - this._textEditTracker.addEditWithTextRange(parseResults, moduleNameNode, this._newModuleName); - continue; - } - - if (isImportAlias(nodeFound)) { - // ex) import xxx as [yyy] to import xxx as [zzz] - this._textEditTracker.addEditWithTextRange(parseResults, result.range, this._newLastModuleName); - continue; - } - - if (isFromImportModuleName(nodeFound)) { - if (!isLastNameOfModuleName(nodeFound)) { - // It must be directory and we don't support folder rename. - continue; - } - - const moduleNameNode = getFirstAncestorOrSelfOfKind(nodeFound, ParseNodeType.ModuleName)!; - const fromNode = moduleNameNode.parent as ImportFromNode; - - // We need to check whether imports of this import statement has - // any implicit submodule imports or not. If there is one, we need to - // either split or leave it as it is. - const exportedSymbols = []; - const subModules = []; - for (const importFromAs of fromNode.imports) { - if (this._isExportedSymbol(importFromAs.name)) { - exportedSymbols.push(importFromAs); - } else { - subModules.push(importFromAs); - } - } - - if (subModules.length === 0) { - // We don't have any sub modules, we can change module name to new one. - // Update whole module name to new name. - // ex) from [xxx.yyy] import zzz to from [aaa.bbb] import zzz - this._textEditTracker.addEditWithTextRange( - parseResults, - moduleNameNode, - this._getNewModuleName( - filePath, - moduleNameNode.leadingDots > 0, - /* isLastPartImportName */ false - ) - ); - continue; - } - - if (exportedSymbols.length === 0) { - // We only have sub modules. That means module name actually refers to - // folder name, not module (ex, __init__.py). Folder rename is done by - // different code path. - continue; - } - - // Now, we need to split "from import" statement to 2. - - // Update module name if needed. - if (fromNode.module.leadingDots > 0) { - for (const edit of this._getNewRelativeModuleNamesForFileMoved(filePath, [fromNode.module])) { - this._textEditTracker.addEditWithTextRange(parseResults, edit.moduleName, edit.newModuleName); - } - } - - // First, delete existing exported symbols from "from import" statement. - for (const importFromAs of exportedSymbols) { - this._textEditTracker.deleteImportName(parseResults, importFromAs); - } - - importStatements = - importStatements ?? getTopLevelImports(parseResults.parseTree, /* includeImplicitImports */ false); - - // For now, this won't merge absolute and relative path "from import" - // statement. - this._textEditTracker.addOrUpdateImport( - parseResults, - importStatements, - { name: this._newModuleName }, - getImportGroupFromModuleNameAndType(this._newModuleNameAndType), - exportedSymbols.map((i) => { - const name = - results.findIndex((r) => r.node === i.name) >= 0 ? this._newLastModuleName : i.name.value; - const alias = - results.findIndex((r) => r.node === i.alias) >= 0 - ? this._newLastModuleName - : i.alias?.value; - - return { name, alias }; - }), - { - currentFromImport: fromNode, - originalModuleName: this._moduleName, - } - ); - continue; - } - - if (isFromImportName(nodeFound)) { - if (this._textEditTracker.isNodeRemoved(nodeFound)) { - // Import name is already removed. - continue; - } - - const fromNode = nodeFound.parent?.parent as ImportFromNode; - const newModuleName = this._getNewModuleName( - filePath, - fromNode.module.leadingDots > 0, - /* isLastPartImportName */ true - ); - - // If the name bound to symbol re-exported, we don't need to update module name. - // Existing logic should make sure re-exported symbol name work as before after - // symbol rename. - if (this._isExportedSymbol(nodeFound)) { - this._textEditTracker.addEditWithTextRange(parseResults, result.range, this._newLastModuleName); - continue; - } - - if (fromNode.imports.length === 1) { - // ex) from xxx import [yyy] to from [aaa.bbb] import [zzz] - this._textEditTracker.addEditWithTextRange(parseResults, fromNode.module, newModuleName); - this._textEditTracker.addEditWithTextRange(parseResults, result.range, this._newLastModuleName); - } else { - // Delete the existing import name including alias. - const importFromAs = nodeFound.parent as ImportFromAsNode; - - // Update module name if needed. - if (fromNode.module.leadingDots > 0) { - for (const edit of this._getNewRelativeModuleNamesForFileMoved(filePath, [fromNode.module])) { - this._textEditTracker.addEditWithTextRange( - parseResults, - edit.moduleName, - edit.newModuleName - ); - } - } - - this._textEditTracker.deleteImportName(parseResults, importFromAs); - - importStatements = - importStatements ?? - getTopLevelImports(parseResults.parseTree, /* includeImplicitImports */ false); - - // ex) from xxx import yyy, [zzz] to - // from xxx import yyy - // from [aaa.bbb] import [ccc] - // or - // from aaa.bbb import ddd - // from xxx import yyy, [zzz] to - // from aaa.bbb import [ccc], ddd - // - // For now, this won't merge absolute and relative path "from import" - // statement. - const importNameInfo = { - name: this._newLastModuleName, - alias: - importFromAs.alias?.value === this.lastModuleName - ? this._newLastModuleName - : importFromAs.alias?.value, - }; - - this._textEditTracker.addOrUpdateImport( - parseResults, - importStatements, - { name: this._newModuleName, nameForImportFrom: newModuleName }, - getImportGroupFromModuleNameAndType(this._newModuleNameAndType), - [importNameInfo], - { - currentFromImport: fromNode, - originalModuleName: this._moduleName, - } - ); - } - continue; - } - - if (isFromImportAlias(nodeFound)) { - if (this._textEditTracker.isNodeRemoved(nodeFound)) { - // alias is already removed. - continue; - } - - // ex) from ccc import xxx as [yyy] to from ccc import xxx as [zzz] - this._textEditTracker.addEditWithTextRange(parseResults, result.range, this._newLastModuleName); - continue; - } - - /** TODO: if we get more than 1 decls, flag it as attention needed */ - const decls = DocumentSymbolCollector.getDeclarationsForNode( - nodeFound, - this._evaluator, - /* resolveLocalName */ false, - DocumentSymbolCollectorUseCase.Rename, - this._token - ).filter((d) => isAliasDeclaration(d)) as AliasDeclaration[]; - - if (this._onlyNameChanged) { - // Simple case. only name has changed. but not path. - // Just replace name to new symbol name. - // ex) a.[b].foo() to a.[z].foo() - this._textEditTracker.addEditWithTextRange(parseResults, result.range, this._newLastModuleName); - continue; - } - - if ( - decls?.some( - (d) => - !d.usesLocalName && - (!d.node || d.node.nodeType === ParseNodeType.ImportAs) && - !this._aliasIntroduced.has(d.node) - ) - ) { - const dottedName = getDottedNameWithGivenNodeAsLastName(nodeFound); - if (dottedName.parent?.nodeType !== ParseNodeType.MemberAccess) { - // Replace whole dotted name with new module name. - this._textEditTracker.addEditWithTextRange(parseResults, dottedName, this._newModuleName); - continue; - } - - // Check whether name after me is sub module or not. - // ex) a.b.[c] - const nextNameDecl = this._evaluator.getDeclarationsForNameNode(dottedName.parent.memberName); - if (!nextNameDecl || nextNameDecl.length === 0) { - // Next dotted name is sub module. That means dottedName actually refers to folder names, not modules. - // and We don't support renaming folder. So, leave things as they are. - // ex) import a.b.c - // [a.b].[c] - continue; - } - - // Next name is actual symbol. Replace whole name to new module name. - // ex) import a.b.c - // [a.b.c].[foo]() - this._textEditTracker.addEditWithTextRange(parseResults, dottedName, this._newModuleName); - continue; - } - - if (result.node.value !== this._newLastModuleName) { - this._textEditTracker.addEditWithTextRange(parseResults, result.range, this._newLastModuleName); - continue; - } - } - } - - private _getNewRelativeModuleNamesForFileMoved(filePath: string, moduleNames: ModuleNameNode[]) { - if (filePath !== this._moduleFilePath) { - // We only update relative import paths for the file that has moved. - return []; - } - - const originalFileName = stripFileExtension(getFileName(filePath)); - const originalInit = originalFileName === '__init__'; - const originalDirectory = getDirectoryPath(filePath); - - const newNames: { moduleName: ModuleNameNode; newModuleName: string; itemsToMove?: ImportFromAsNode[] }[] = []; - for (const moduleName of moduleNames) { - // Filter out all absolute path. - if (moduleName.leadingDots === 0) { - continue; - } - - const result = this._getNewModuleNameInfoForFileMoved(moduleName, originalInit, originalDirectory); - if (!result) { - continue; - } - - const newModuleName = getRelativeModuleName( - this._fs, - result.src, - result.dest, - /* ignoreFolderStructure */ false, - /* sourceIsFile */ true - ); - - newNames.push({ moduleName, newModuleName, itemsToMove: result.itemsToMove }); - } - - return newNames; - } - - private _getNewModuleNameInfoForFileMoved( - moduleName: ModuleNameNode, - originalInit: boolean, - originalDirectory: string - ) { - const importInfo = getImportInfo(moduleName); - if (!importInfo) { - return undefined; - } - - let importPath = importInfo.resolvedPaths[importInfo.resolvedPaths.length - 1]; - if (!importPath) { - // It is possible for the module name to point to namespace folder (no __init__). - // See whether we can use some heuristic to get importPath - if (moduleName.nameParts.length === 0) { - const directory = getDirectoryLeadingDotsPointsTo(originalDirectory, moduleName.leadingDots); - if (!directory) { - return undefined; - } - - // Add fake __init__.py since we know this is namespace folder. - importPath = combinePaths(directory, '__init__.py'); - } else { - return undefined; - } - } - - // Check whether module is pointing to moved file itself and whether it is __init__ - if (this._moduleFilePath !== importPath || !originalInit) { - return { src: this._newModuleFilePath, dest: importPath }; - } - - // Now, moduleName is pointing to __init__ which point to moved file itself. - - // We need to check whether imports of this import statement has - // any implicit submodule imports or not. If there is one, we need to - // either split or leave it as it is. - const exportedSymbols = []; - const subModules = []; - for (const importFromAs of (moduleName.parent as ImportFromNode).imports) { - if (this._isExportedSymbol(importFromAs.name)) { - exportedSymbols.push(importFromAs); - } else { - subModules.push(importFromAs); - } - } - - // Point to itself. - if (subModules.length === 0) { - return { src: this._newModuleFilePath, dest: this._newModuleFilePath }; - } - - // "." is used to point folder location. - if (exportedSymbols.length === 0) { - return { src: this._newModuleFilePath, dest: this._moduleFilePath }; - } - - // now we need to split, provide split info as well. - return { - src: this._newModuleFilePath, - dest: this._moduleFilePath, - itemsToMove: [...exportedSymbols], - }; - } - - private _isExportedSymbol(nameNode: NameNode): boolean { - const decls = this._evaluator.getDeclarationsForNameNode(nameNode); - if (!decls) { - return false; - } - - // If submoduleFallback exists, then, it points to submodule not symbol. - return !decls.some((d) => isAliasDeclaration(d) && d.submoduleFallback); - } - - private _getNewModuleName(currentFilePath: string, isRelativePath: boolean, isLastPartImportName: boolean) { - const filePath = currentFilePath === this._moduleFilePath ? this._newModuleFilePath : currentFilePath; - - // If the existing code was using relative path, try to keep the relative path. - const moduleName = isRelativePath - ? getRelativeModuleName( - this._fs, - filePath, - this._newModuleFilePath, - isLastPartImportName, - /* sourceIsFile*/ true - ) - : this._newModuleName; - - if (isLastPartImportName && moduleName.endsWith(this._newLastModuleName)) { - const dotPrefix = - moduleName === this._newLastModuleName - ? 0 - : moduleName.length > this._newLastModuleName.length + 1 - ? moduleName[moduleName.length - this._newLastModuleName.length - 2] !== '.' - ? 1 - : 0 - : 0; - - const length = moduleName.length - this._newLastModuleName.length - dotPrefix; - - //ex) x.y.z used in "from x.y import z" - const newModuleName = moduleName.substr(0, length); - return newModuleName.length > 0 ? newModuleName : '.'; - } - - // ex) x.y.z used in "from x.y.z import ..." - return moduleName; - } -} - -class ModuleNameCollector extends ParseTreeWalker { - private readonly _result: ModuleNameNode[] = []; - - override walk(node: ParseNode): void { - if (isExpressionNode(node)) { - return; - } - - super.walk(node); - } - - override visitModuleName(node: ModuleNameNode) { - this._result.push(node); - return false; - } - - static collect(root: ModuleNode) { - const collector = new ModuleNameCollector(); - collector.walk(root); - - return collector._result; - } -} diff --git a/packages/pyright-internal/src/languageService/renameProvider.ts b/packages/pyright-internal/src/languageService/renameProvider.ts new file mode 100644 index 000000000..b957216a2 --- /dev/null +++ b/packages/pyright-internal/src/languageService/renameProvider.ts @@ -0,0 +1,208 @@ +/* + * renameProvider.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * Author: Eric Traut + * + * Logic that rename identifier on the given position and its references. + */ + +import { CancellationToken, WorkspaceEdit } from 'vscode-languageserver'; + +import { assertNever } from '../common/debug'; +import { FileEditAction } from '../common/editAction'; +import { ProgramView } from '../common/extensibility'; +import { convertTextRangeToRange } from '../common/positionUtils'; +import { Position, Range } from '../common/textRange'; +import { DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; +import { ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; +import { collectImportedByFiles, isUserCode } from '../analyzer/sourceFileInfoUtils'; +import { throwIfCancellationRequested } from '../common/cancellationUtils'; +import { ParseResults } from '../parser/parser'; +import { convertToWorkspaceEdit } from '../common/workspaceEditUtils'; + +export class RenameProvider { + private readonly _parseResults: ParseResults | undefined; + + constructor( + private _program: ProgramView, + private _filePath: string, + private _position: Position, + private _token: CancellationToken + ) { + this._parseResults = this._program.getParseResults(this._filePath); + } + + canRenameSymbol(isDefaultWorkspace: boolean): Range | null { + throwIfCancellationRequested(this._token); + if (!this._parseResults) { + return null; + } + + const referencesResult = this._getReferenceResult(); + if (!referencesResult) { + return null; + } + + const renameMode = RenameProvider.getRenameSymbolMode( + this._program, + this._filePath, + referencesResult, + isDefaultWorkspace + ); + if (renameMode === 'none') { + return null; + } + + // Return the range of the symbol. + return convertTextRangeToRange(referencesResult.nodeAtOffset, this._parseResults.tokenizerOutput.lines); + } + + renameSymbol(newName: string, isDefaultWorkspace: boolean): WorkspaceEdit | null { + throwIfCancellationRequested(this._token); + if (!this._parseResults) { + return null; + } + + const referencesResult = this._getReferenceResult(); + if (!referencesResult) { + return null; + } + + const referenceProvider = new ReferencesProvider(this._program, this._token); + const renameMode = RenameProvider.getRenameSymbolMode( + this._program, + this._filePath, + referencesResult, + isDefaultWorkspace + ); + + switch (renameMode) { + case 'singleFileMode': + referenceProvider.addReferencesToResult( + this._filePath, + /* includeDeclaration */ true, + referencesResult + ); + break; + + case 'multiFileMode': { + for (const curSourceFileInfo of this._program.getSourceFileInfoList()) { + // Make sure we only add user code to the references to prevent us + // from accidentally changing third party library or type stub. + if (isUserCode(curSourceFileInfo)) { + // Make sure searching symbol name exists in the file. + const content = curSourceFileInfo.sourceFile.getFileContent() ?? ''; + if (!referencesResult.symbolNames.some((s) => content.search(s) >= 0)) { + continue; + } + + referenceProvider.addReferencesToResult( + curSourceFileInfo.sourceFile.getFilePath(), + /* includeDeclaration */ true, + referencesResult + ); + } + + // This operation can consume significant memory, so check + // for situations where we need to discard the type cache. + this._program.handleMemoryHighUsage(); + } + break; + } + + case 'none': + // Rename is not allowed. + // ex) rename symbols from libraries. + return null; + + default: + assertNever(renameMode); + } + + const edits: FileEditAction[] = []; + referencesResult.locations.forEach((loc) => { + edits.push({ + filePath: loc.path, + range: loc.range, + replacementText: newName, + }); + }); + + return convertToWorkspaceEdit(this._program.fileSystem, { edits, fileOperations: [] }); + } + + static getRenameSymbolMode( + program: ProgramView, + filePath: string, + referencesResult: ReferencesResult, + isDefaultWorkspace: boolean + ) { + const sourceFileInfo = program.getSourceFileInfo(filePath)!; + + // We have 2 different cases + // Single file mode. + // 1. rename on default workspace (ex, standalone file mode). + // 2. rename local symbols. + // 3. rename symbols defined in the non user open file. + // + // and Multi file mode. + // 1. rename public symbols defined in user files on regular workspace (ex, open folder mode). + const userFile = isUserCode(sourceFileInfo); + if ( + isDefaultWorkspace || + (userFile && !referencesResult.requiresGlobalSearch) || + (!userFile && + sourceFileInfo.isOpenByClient && + referencesResult.declarations.every((d) => program.getSourceFileInfo(d.path) === sourceFileInfo)) + ) { + return 'singleFileMode'; + } + + if (referencesResult.declarations.every((d) => isUserCode(program.getSourceFileInfo(d.path)))) { + return 'multiFileMode'; + } + + // Rename is not allowed. + // ex) rename symbols from libraries. + return 'none'; + } + + private _getReferenceResult() { + const referencesResult = this._getDeclaration(); + if (!referencesResult) { + return undefined; + } + + if (referencesResult.containsOnlyImportDecls) { + return undefined; + } + + if (referencesResult.nonImportDeclarations.length === 0) { + // There is no symbol we can rename. + return undefined; + } + + // Use declarations that doesn't contain import decls. + return new ReferencesResult( + referencesResult.requiresGlobalSearch, + referencesResult.nodeAtOffset, + referencesResult.symbolNames, + referencesResult.nonImportDeclarations, + referencesResult.useCase + ); + } + + private _getDeclaration() { + const sourceFileInfo = this._program.getSourceFileInfo(this._filePath)!; + return ReferencesProvider.getDeclarationForPosition( + this._program, + this._filePath, + this._position, + /* reporter */ undefined, + DocumentSymbolCollectorUseCase.Rename, + this._token, + Array.from(collectImportedByFiles(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile) + ); + } +} diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 9c53c3230..745b4d1cf 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -1379,19 +1379,4 @@ export namespace Localizer { getRawString('CodeAction.renameShadowedFile') ); } - - export namespace Refactoring { - export const moveFile = () => - new ParameterizedString<{ oldModuleName: string; newModuleName: string }>( - getRawString('Refactoring.moveFile') - ); - export const moveFileLabel = () => - new ParameterizedString<{ oldModuleName: string; newModuleName: string }>( - getRawString('Refactoring.moveFileLabel') - ); - export const moveFileDescription = () => - new ParameterizedString<{ oldModuleName: string; newModuleName: string }>( - getRawString('Refactoring.moveFileDescription') - ); - } } diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 7abe91baa..8490c5056 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -695,10 +695,5 @@ "findingReferences": "Finding references", "organizeImports": "Organize Imports", "renameShadowedFile": "Rename \"{oldFile}\" to \"{newFile}\"" - }, - "Refactoring": { - "moveFile": "Do you want to update all import references for \"{oldModuleName}\" to \"{newModuleName}\"?", - "moveFileLabel": "Update all import references for \"{oldModuleName}\" to \"{newModuleName}\"?", - "moveFileDescription": "Update all import references for \"{oldModuleName}\" to \"{newModuleName}\"?" } } diff --git a/packages/pyright-internal/src/tests/documentSymbolCollector.test.ts b/packages/pyright-internal/src/tests/documentSymbolCollector.test.ts index c7e669341..e5db1ff3c 100644 --- a/packages/pyright-internal/src/tests/documentSymbolCollector.test.ts +++ b/packages/pyright-internal/src/tests/documentSymbolCollector.test.ts @@ -819,20 +819,19 @@ function verifyReferencesAtPosition( const node = findNodeByOffset(sourceFile.getParseResults()!.parseTree, position); const decls = DocumentSymbolCollector.getDeclarationsForNode( + program, node as NameNode, - program.evaluator!, /* resolveLocalName */ true, DocumentSymbolCollectorUseCase.Reference, - CancellationToken.None, - program.test_createSourceMapper(configOption.findExecEnvironment(fileName)) + CancellationToken.None ); const rangesByFile = createMapFromItems(ranges, (r) => r.fileName); for (const rangeFileName of rangesByFile.keys()) { const collector = new DocumentSymbolCollector( + program, isArray(symbolNames) ? symbolNames : [symbolNames], decls, - program.evaluator!, CancellationToken.None, program.getBoundSourceFile(rangeFileName)!.getParseResults()!.parseTree, /* treatModuleInImportAndFromImportSame */ true, diff --git a/packages/pyright-internal/src/tests/fourslash/fourslash.ts b/packages/pyright-internal/src/tests/fourslash/fourslash.ts index 612795ed7..6a91d21a5 100644 --- a/packages/pyright-internal/src/tests/fourslash/fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/fourslash.ts @@ -50,7 +50,7 @@ declare namespace _ { | 24 | 25; - type FourSlashCompletionVerificationMode = 'exact' | 'included' | 'excluded'; + type FourSlashVerificationMode = 'exact' | 'included' | 'excluded'; interface FourSlashCompletionItem { label: string; kind: CompletionItemKind | undefined; @@ -259,12 +259,12 @@ declare namespace _ { verifyDiagnostics(map?: { [marker: string]: { category: string; message: string | undefined } }): void; verifyCodeActions( + verifyMode: FourSlashVerificationMode, map: { [marker: string]: { codeActions: { title: string; kind: string; command?: Command; edit?: WorkspaceEdit }[]; }; - }, - verifyCodeActionCount?: boolean + } ): Promise; verifyCommand(command: Command, files: { [filePath: string]: string }): Promise; verifyInvokeCodeAction( @@ -275,7 +275,7 @@ declare namespace _ { ): Promise; verifyHover(kind: string, map: { [marker: string]: string | null }): void; verifyCompletion( - verifyMode: FourSlashCompletionVerificationMode, + verifyMode: FourSlashVerificationMode, docFormat: MarkupKind, map: { [marker: string]: { diff --git a/packages/pyright-internal/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts index 049be02a5..feb5f6a4f 100644 --- a/packages/pyright-internal/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts @@ -16,7 +16,7 @@ //// import [|/*marker*/testLi|]b // @ts-ignore -await helper.verifyCodeActions({ +await helper.verifyCodeActions('included', { marker: { codeActions: [ { diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index d191350ac..8bd2aa907 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -92,6 +92,8 @@ import { import { TestFeatures, TestLanguageService } from './testLanguageService'; import { createVfsInfoFromFourSlashData, getMarkerByName, getMarkerName, getMarkerNames } from './testStateUtils'; import { verifyWorkspaceEdit } from './workspaceEditTestUtils'; +import { RenameProvider } from '../../../languageService/renameProvider'; +import { convertToWorkspaceEdit } from '../../../common/workspaceEditUtils'; export interface TextChange { span: TextRange; @@ -652,12 +654,12 @@ export class TestState { } async verifyCodeActions( + verifyMode: _.FourSlashVerificationMode, map: { [marker: string]: { codeActions: { title: string; kind: string; command?: Command; edit?: WorkspaceEdit[] }[]; }; - }, - verifyCodeActionCount?: boolean + } ): Promise { // make sure we don't use cache built from other tests this.workspace.service.invalidateAndForceReanalysis(); @@ -670,7 +672,7 @@ export class TestState { } const codeActions = await this._getCodeActions(range); - if (verifyCodeActionCount) { + if (verifyMode === 'exact') { if (codeActions.length !== map[name].codeActions.length) { this.raiseError( `doesn't contain expected result: ${stringify(map[name])}, actual: ${stringify(codeActions)}` @@ -702,12 +704,14 @@ export class TestState { return ( a.title === expected.title && a.kind! === expected.kind && - this._deepEqual(actualCommand, expectedCommand) && - this._deepEqual(actualEdit, expected.edit) + (expectedCommand ? this._deepEqual(actualCommand, expectedCommand) : true) && + (expected.edit ? this._deepEqual(actualEdit, expected.edit) : true) ); }); - if (matches.length !== 1) { + if (verifyMode === 'excluded' && matches.length > 0) { + this.raiseError(`unexpected result: ${stringify(map[name])}`); + } else if (verifyMode !== 'excluded' && matches.length !== 1) { this.raiseError( `doesn't contain expected result: ${stringify(expected)}, actual: ${stringify(codeActions)}` ); @@ -838,7 +842,6 @@ export class TestState { range.fileName, rangePos.start, kind, - false, CancellationToken.None ); const actual = provider.getHover(); @@ -908,7 +911,7 @@ export class TestState { } async verifyCompletion( - verifyMode: _.FourSlashCompletionVerificationMode, + verifyMode: _.FourSlashVerificationMode, docFormat: MarkupKind, map: { [marker: string]: { @@ -1435,20 +1438,15 @@ export class TestState { const expected = map[name]; const position = this.convertOffsetToPosition(fileName, marker.position); - const actual = this.program.renameSymbolAtPosition( - fileName, - position, + const actual = new RenameProvider(this.program, fileName, position, CancellationToken.None).renameSymbol( expected.newName, - /* isDefaultWorkspace */ false, - /* allowModuleRename */ false, - CancellationToken.None + /* isDefaultWorkspace */ false ); - assert.equal(actual?.edits.length ?? 0, expected.changes.length); - - for (const c of expected.changes) { - assert.equal(actual?.edits.filter((e) => this._deepEqual(e, c)).length, 1); - } + verifyWorkspaceEdit( + convertToWorkspaceEdit(this.program.fileSystem, { edits: expected.changes, fileOperations: [] }), + actual ?? { documentChanges: [] } + ); } } diff --git a/packages/pyright-internal/src/tests/indentationUtils.ptvs.test.ts b/packages/pyright-internal/src/tests/indentationUtils.ptvs.test.ts deleted file mode 100644 index acdd59264..000000000 --- a/packages/pyright-internal/src/tests/indentationUtils.ptvs.test.ts +++ /dev/null @@ -1,388 +0,0 @@ -/* - * indentationUtils.ptvs.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Unit tests for indentationUtils module. some tests ported from ptvs indentation tests. - */ - -import assert from 'assert'; - -import { getNewlineIndentation } from '../languageService/indentationUtils'; -import { parseAndGetTestState } from './harness/fourslash/testState'; - -test('top level statement - pass', () => { - const code = ` -//// pass -//// [|/*marker*/|] - `; - - testIndentation(code, 0); -}); - -test('top level statement - function', () => { - const code = ` -//// def f(): -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('function with open paren at end of file', () => { - const code = ` -//// def f( -//// [|/*marker*/|] - `; - - // This is due to how our tokenizer associate new line at - // end of stream. - testIndentation(code, 0); -}); - -test('function with open paren between top level statement', () => { - const code = ` -//// def f( -//// [|/*marker*/|] -//// -//// def bar(): pass - `; - - testIndentation(code, 8); // Based on PEP8 -}); - -test('function with open paren', () => { - const code = ` -//// def f( -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 8); -}); - -test('function with parameter', () => { - const code = ` -//// def f(x, -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 6); -}); - -test('call with open paren at end of file', () => { - const code = ` -//// f( -//// [|/*marker*/|] - `; - - // This is due to how our tokenizer associate new line at - // end of stream. - testIndentation(code, 0); -}); - -test('call with open paren between top level statement', () => { - const code = ` -//// f( -//// [|/*marker*/|] -//// -//// bar() - `; - - testIndentation(code, 4); -}); - -test('class with open paren', () => { - const code = ` -//// f( -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('call with parameter', () => { - const code = ` -//// f(x, -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 2); -}); - -test('list', () => { - const code = ` -//// [ -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('list with spaces', () => { - const code = ` -//// [ -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 17); -}); - -test('list with nested', () => { - const code = ` -//// [[[[[[[ -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('list with spaces and element', () => { - const code = ` -//// [x, -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 10); -}); - -test('list with nested with element', () => { - const code = ` -//// [[[[[[[x, -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 7); -}); - -test('set', () => { - const code = ` -//// { -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('function body', () => { - const code = ` -//// def f(): -//// print('hi') -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('function body - pass', () => { - const code = ` -//// def f(): -//// pass -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 0); -}); - -test('list in dict', () => { - const code = ` -//// abc = {'x': [ -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('nested list in dict', () => { - const code = ` -//// abc = {'x': [ -//// ['''str''', -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 5); -}); - -test('nested list in dict 2', () => { - const code = ` -//// abc = {'x': [ -//// ['''str''', -//// '''str2''']], -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 5); -}); - -test('inner function', () => { - const code = ` -//// def f(): -//// print 'hi' -//// -//// def inner(): pass -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('dict keys with comment', () => { - const code = ` -//// x = { #comment -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('dict first key with list', () => { - const code = ` -//// x = { #comment -//// 'a': [ -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 10); -}); - -test('dict key list element on its own line', () => { - const code = ` -//// x = { #comment -//// 'a': [ -//// 1, -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 10); -}); - -test('dict second key', () => { - const code = ` -//// x = { #comment -//// 'a': [ -//// 1, -//// ], -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 6); -}); - -test('after dict', () => { - const code = ` -//// x = { #comment -//// 'a': [ -//// 1, -//// ], -//// 'b': 42 -//// } -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 0); -}); - -test('explicit multiline expression', () => { - const code = ` -//// def f(): -//// assert False, \\ -//// [|/*marker*/|] -//// 'A message" -//// - `; - - testIndentation(code, 4); -}); - -test('explicit multiline expression next statement', () => { - const code = ` -//// def f(): -//// assert False, \\ -//// 'A message" -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('nested block first', () => { - const code = ` -//// def a(): -//// [|/*marker*/|] -//// if b(): -//// if c(): -//// d() -//// p - `; - - testIndentation(code, 4); -}); - -test('nested block second', () => { - const code = ` -//// def a(): -//// if b(): -//// [|/*marker*/|] -//// if c(): -//// d() -//// p - `; - - testIndentation(code, 8); -}); - -test('nested block third', () => { - const code = ` -//// def a(): -//// if b(): -//// if c(): -//// [|/*marker*/|] -//// d() -//// p - `; - - testIndentation(code, 12); -}); - -test('nested block last', () => { - const code = ` -//// def a(): -//// if b(): -//// if c(): -//// d() -//// [|/*marker*/|] -//// p - `; - - testIndentation(code, 12); -}); - -function testIndentation(code: string, indentation: number, preferDedent?: boolean) { - const state = parseAndGetTestState(code).state; - const marker = state.getMarkerByName('marker'); - - const parseResults = state.program.getBoundSourceFile(marker.fileName)!.getParseResults()!; - const actual = getNewlineIndentation(parseResults, marker.position, preferDedent); - assert.strictEqual(actual, indentation); -} diff --git a/packages/pyright-internal/src/tests/indentationUtils.reindent.test.ts b/packages/pyright-internal/src/tests/indentationUtils.reindent.test.ts deleted file mode 100644 index 9cab1ef47..000000000 --- a/packages/pyright-internal/src/tests/indentationUtils.reindent.test.ts +++ /dev/null @@ -1,455 +0,0 @@ -/* - * indentationUtils.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Unit tests for indentationUtils module. - */ - -import assert from 'assert'; - -import { TextRange } from '../common/textRange'; -import { reindentSpan } from '../languageService/indentationUtils'; -import { parseAndGetTestState } from './harness/fourslash/testState'; - -test('re-indentation simple', () => { - const code = ` -//// [|/*marker*/def foo(): pass|] - `; - - const expected = `def foo(): pass`; - testIndentation(code, 0, expected); -}); - -test('re-indentation indent first token', () => { - const code = ` -//// [|/*marker*/ def foo(): pass|] - `; - - const expected = ` def foo(): pass`; - testIndentation(code, 2, expected); -}); - -test('re-indentation explicit multiline expression', () => { - const code = ` -//// [|/*marker*/def foo(): -//// i = \\ -//// 1 \\ -//// + \\ -//// 2|] - `; - - const expected = ` def foo(): - i = \\ - 1 \\ - + \\ - 2`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation explicit multiline expression with multiple backslash', () => { - const code = ` -//// [|/*marker*/def foo(): -//// i = \\ -//// \\ -//// \\ -//// 1|] - `; - - const expected = ` def foo(): - i = \\ - \\ - \\ - 1`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation multiline construct', () => { - const code = ` -//// [|/*marker*/def \\ -//// foo(): -//// i = 1 + 2|] - `; - - const expected = ` def \\ - foo(): - i = 1 + 2`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation implicit multiline expression', () => { - const code = ` -//// [|/*marker*/def foo(): -//// i = ( -//// 1 -//// + -//// 2 -//// )|] - `; - - const expected = ` def foo(): - i = ( - 1 - + - 2 - )`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation implicit multiline expression with multiple blank lines', () => { - const code = ` -//// [|/*marker*/def foo(): -//// i = [ -//// 1, -//// -//// 2 -//// ]|] - `; - - const expected = ` def foo(): - i = [ - 1, - - 2 - ]`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation single line string', () => { - const code = ` -//// [|/*marker*/def foo(): -//// str = "string data"|] - `; - - const expected = ` def foo(): - str = "string data"`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation multiline line string', () => { - const code = ` -//// [|/*marker*/def foo(): -//// str = """first line -//// second line -//// last line -//// """|] - `; - - const expected = ` def foo(): - str = """first line - second line - last line -"""`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation with comments', () => { - const code = ` -//// [|/*marker*/def foo(): # comment at the end -//// # commend above the line -//// a = ( # commend at multiline expression -//// 1 + 2 # comment after expression -//// ) -//// # commend before end of file|] - `; - - const expected = ` def foo(): # comment at the end - # commend above the line - a = ( # commend at multiline expression - 1 + 2 # comment after expression - ) - # commend before end of file`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation with comments with backslash', () => { - const code = ` -//// [|/*marker*/def foo(): # comment at the end -//// # commend above the line -//// a = \\ -//// 1 + 2 # comment after expression -//// -//// # commend before end of file|] - `; - - const expected = ` def foo(): # comment at the end - # commend above the line - a = \\ - 1 + 2 # comment after expression - - # commend before end of file`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation doc comment', () => { - const code = ` -//// [|/*marker*/def foo(): -//// """ doc comment """ -//// a = 1|] - `; - - const expected = ` def foo(): - """ doc comment """ - a = 1`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation multiline doc comment', () => { - const code = ` -//// [|/*marker*/def foo(): -//// """ doc comment -//// line 1 -//// line 2 -//// """ -//// a = 1|] - `; - - const expected = ` def foo(): - """ doc comment - line 1 - line 2 - """ - a = 1`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation top level multiline doc comment', () => { - const code = ` -//// [|/*marker*/ """ doc comment -//// line 1 -//// line 2 -//// """ -//// a = 1|] - `; - - const expected = ` """ doc comment - line 1 - line 2 - """ -a = 1`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation invalid code', () => { - const code = ` -//// [|/*marker*/ASDF -//// ASDFASDFASD -//// -//// asdf asdf asd fasdf sdf asdf asdf asdf -//// 23234235 -//// $%^#&*()_++ -//// asdfas asdf|] - `; - - const expected = ` ASDF - ASDFASDFASD - - asdf asdf asd fasdf sdf asdf asdf asdf - 23234235 - $%^#&*()_++ - asdfas asdf`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation without first token', () => { - const code = ` -//// """ doc string """ -//// i = [|/*marker*/( -//// 1 + 2 -//// )|] - `; - - const expected = `( - 1 + 2 -)`; - - testIndentation(code, 0, expected, /*indentFirstToken*/ false); -}); - -test('re-indentation single line variable doc string', () => { - const code = ` -//// [|/*marker*/i = 1 -//// """ doc string """|] - `; - - const expected = ` i = 1 - """ doc string """`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation multiple line variable doc string', () => { - const code = ` -//// [|/*marker*/i = 1 -//// """ doc string -//// line 1 -//// """|] - `; - - const expected = ` i = 1 - """ doc string - line 1 - """`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation single token', () => { - const code = ` -//// [|/*marker*/a|] - `; - - const expected = ` a`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation between statements', () => { - const code = ` -//// def foo(): -//// pass -//// [|/*marker*/i = 1|] -//// """ doc string -//// line 1 -//// """ - `; - - const expected = ` i = 1`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation inside of body', () => { - const code = ` -//// def foo(): -//// [|/*marker*/ """ doc string -//// line 1 -//// """ -//// i = 10|] - `; - - const expected = ` """ doc string - line 1 - """ - i = 10`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation tab', () => { - const code = ` -//// def foo(): -//// [|/*marker*/\t""" doc string -//// \t\tline 1 -//// \t""" -//// \ti = 10|] - `; - - const expected = ` """ doc string -\t line 1 - """ - i = 10`; - - testIndentation(code, 2, expected); -}); - -test('re-indentation tab on multiline text', () => { - const code = ` -//// def foo(): -//// [|/*marker*/\ta = """ line 1 -//// \t\tline 2 -//// \t""" -//// \ti = 10 -//// \tif True: -//// \t\tpass|] - `; - - const expected = ` a = """ line 1 -\t\tline 2 -\t""" - i = 10 - if True: -\t pass`; - - testIndentation(code, 2, expected); -}); - -test('dont include token not contained in the span', () => { - const code = ` -//// import random -//// -//// [|/*marker*/answer_word = random.choice(["a","b","c","d"]) -//// |]guess_word = "c" - `; - - const expected = `answer_word = random.choice(["a","b","c","d"])`; - - testIndentation(code, 0, expected); -}); - -test('handle comment before first token', () => { - const code = ` -//// [|/*marker*/# this function doesn't do much -//// def myfunc(a, b): -//// return a + b|] - `; - - const expected = `# this function doesn't do much -def myfunc(a, b): - return a + b`; - - testIndentation(code, 0, expected); -}); - -test('handle comment after last token', () => { - const code = ` -//// [|/*marker*/def test(): -//// return # comment|] -//// - `; - - const expected = `def test(): - return # comment`; - - testIndentation(code, 0, expected); -}); - -test('handle comment after last token at EOF', () => { - const code = ` -//// [|/*marker*/def test(): -//// return # comment|] - `; - - const expected = `def test(): - return # comment`; - - testIndentation(code, 0, expected); -}); - -function testIndentation(code: string, indentation: number, expected: string, indentFirstToken = true) { - const state = parseAndGetTestState(code).state; - const range = state.getRangeByMarkerName('marker')!; - - const parseResults = state.program.getBoundSourceFile(range.fileName)!.getParseResults()!; - const actual = reindentSpan( - parseResults, - TextRange.fromBounds(range.pos, range.end), - indentation, - indentFirstToken - ).text; - - assert.strictEqual(actual, expected); -} diff --git a/packages/pyright-internal/src/tests/indentationUtils.test.ts b/packages/pyright-internal/src/tests/indentationUtils.test.ts deleted file mode 100644 index d4abe3360..000000000 --- a/packages/pyright-internal/src/tests/indentationUtils.test.ts +++ /dev/null @@ -1,606 +0,0 @@ -/* - * indentationUtils.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Unit tests for indentationUtils module. - */ - -import assert from 'assert'; - -import { getNewlineIndentation } from '../languageService/indentationUtils'; -import { parseAndGetTestState } from './harness/fourslash/testState'; - -test('top level indentation', () => { - const code = ` -//// [|/*marker*/|]def foo(): pass - `; - - testIndentation(code, 0); -}); - -test('multiple top level indentation', () => { - const code = ` -//// def foo(): pass -//// def foo(): pass -//// [|/*marker*/|] - `; - - testIndentation(code, 0); -}); - -test('sibling indentation', () => { - const code = ` -//// def foo(): -//// i = 1 -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('first child indentation', () => { - const code = ` -//// def foo(): -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('nested first child indentation', () => { - const code = ` -//// class A: -//// def foo(self): -//// [|/*marker*/|] - `; - - testIndentation(code, 8); -}); - -test('nested sibling indentation', () => { - const code = ` -//// class A: -//// def foo(self): -//// i = 1 -//// [|/*marker*/|] - `; - - testIndentation(code, 8); -}); - -test('sibling indentation next line', () => { - const code = ` -//// def foo(): -//// i = 1 -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('sibling indentation next line after indentation point', () => { - const code = ` -//// def foo(): -//// i = 1 -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('sibling indentation next line at 0 char position', () => { - const code = ` -//// def foo(): -//// i = 1 -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('sibling indentation after blank line', () => { - const code = ` -//// def foo(): -//// i = 1 -//// -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('parent indentation after pass', () => { - const code = ` -//// def foo(): -//// pass -//// [|/*marker*/|] - `; - - testIndentation(code, 0); -}); - -test('parent indentation after return', () => { - const code = ` -//// def foo(): -//// return -//// [|/*marker*/|] - `; - - testIndentation(code, 0); -}); - -test('parent indentation after raise', () => { - const code = ` -//// def foo(): -//// raise -//// [|/*marker*/|] - `; - - testIndentation(code, 0); -}); - -test('parent indentation after continue', () => { - const code = ` -//// def foo(): -//// while True: -//// continue -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('parent indentation after break', () => { - const code = ` -//// def foo(): -//// while True: -//// break -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('between statements', () => { - const code = ` -//// def foo(): -//// while True: -//// i = 10 -//// [|/*marker*/|] -//// i = 10 - `; - - testIndentation(code, 8); -}); - -test('between statements with prefer dedent', () => { - const code = ` -//// def foo(): -//// while True: -//// i = 10 -//// [|/*marker*/|] -//// i = 10 - `; - - testIndentation(code, 4, /*preferDedent*/ true); -}); - -test('single line multiple statements', () => { - const code = ` -//// def foo(): -//// import os; import sys -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('single line pass', () => { - const code = ` -//// def foo(): pass -//// [|/*marker*/|] - `; - - testIndentation(code, 0); -}); - -test('single line return', () => { - const code = ` -//// def foo(): return -//// [|/*marker*/|] - `; - - testIndentation(code, 0); -}); - -test('single line raise', () => { - const code = ` -//// def foo(): raise -//// [|/*marker*/|] - `; - - testIndentation(code, 0); -}); - -test('single line continue', () => { - const code = ` -//// def foo(): -//// while True: continue -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('single line break', () => { - const code = ` -//// def foo(): -//// while True: break -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('first member', () => { - const code = ` -//// def foo(): -//// [|/*marker*/|] -//// i = 1 - `; - - testIndentation(code, 8); -}); - -test('inner first member', () => { - const code = ` -//// def foo(): -//// def bar(): -//// [|/*marker*/|] -//// i = 1 - `; - - testIndentation(code, 6); -}); - -test('single line comment', () => { - const code = ` -//// def foo(): -//// # single line comment -//// [|/*marker*/|] - - `; - - testIndentation(code, 4); -}); - -test('multiline string literals top', () => { - const code = ` -//// def foo(): -//// """ -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('multiline string literals - multiple statements', () => { - const code = ` -//// def foo(): -//// import os; a = """ -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('multiline string literals - blank lines', () => { - const code = ` -//// def foo(): -//// """ -//// -//// [|/*marker*/|] - `; - - testIndentation(code, 4); -}); - -test('multiline string literals - first non blank line', () => { - const code = ` -//// def foo(): -//// i = \\ -//// 1; a = """ -//// [|/*marker*/|] -//// """ - `; - - testIndentation(code, 7); -}); - -test('multiline string literals - align to content', () => { - const code = ` -//// def foo(): -//// """ -//// Hello -//// [|/*marker*/|] -//// """ - `; - - testIndentation(code, 8); -}); - -test('multiline string literals - align to content with multiple blank lines', () => { - const code = ` -//// def foo(): -//// """ -//// Title -//// 1. Second -//// -//// -//// -//// -//// [|/*marker*/|] -//// """ - `; - - testIndentation(code, 12); -}); - -test('explicit multiline construct', () => { - const code = ` -//// def \\ -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 0); -}); - -test('multiple explicit multiline construct', () => { - const code = ` -//// def foo \\ -//// \\[|/*marker*/|] -//// -//// - `; - - testIndentation(code, 8); -}); - -test('explicit multiline expression', () => { - const code = ` -//// def foo(): -//// a = 1 + \\ -//// [|/*marker*/|] -//// - `; - - testIndentation(code, 4); -}); - -test('explicit multiline expression between lines', () => { - const code = ` -//// def foo(): -//// a = 1 + \\ -//// [|/*marker*/|] -//// b = 1 - `; - - testIndentation(code, 4); -}); - -test('implicit multiline constructs', () => { - const code = ` -//// def foo( -//// [|/*marker*/|] - `; - - testIndentation(code, 8); -}); - -test('multiple implicit multiline constructs', () => { - const code = ` -//// def foo( -//// a, -//// [|/*marker*/|] - `; - - testIndentation(code, 9); -}); - -test('multiple implicit multiline constructs with multiple statements', () => { - const code = ` -//// b = 1 -//// -//// def foo( -//// a, -//// [|/*marker*/|] - `; - - testIndentation(code, 9); -}); - -test('multiline list', () => { - const code = ` -//// a = [ -//// 1, -//// [|/*marker*/|] -//// ] - `; - - testIndentation(code, 7); -}); - -test('empty multiline list', () => { - const code = ` -//// a = [ -//// [|/*marker*/|] -//// ] - `; - - testIndentation(code, 4); -}); - -test('empty multiline list 2', () => { - const code = ` -//// [ -//// [|/*marker*/|] -//// ] - `; - - testIndentation(code, 4); -}); - -test('nested empty multiline list', () => { - const code = ` -//// [ -//// [ -//// [|/*marker*/|] -//// ] -//// ] - `; - - testIndentation(code, 8); -}); - -test('unfinished block', () => { - const code = ` -//// def foo(a: Union[int, str]): -//// while True: -//// [|/*marker*/|] -//// -//// def bar() -> int: -//// return 1 - `; - - testIndentation(code, 8); -}); - -test('func params', () => { - const code = ` -//// def foo_bar( -//// [|/*marker*/|]var1, var2): -//// pass - `; - - testIndentation(code, 8); -}); - -test('func params 2', () => { - const code = ` -//// def foo_bar(var1, -//// [|/*marker*/|]var2): -//// pass - `; - - testIndentation(code, 12); -}); - -test('func params call', () => { - const code = ` -//// def foo_bar(var1, var2): -//// pass -//// a = foo_bar( -//// [|/*marker*/|]var1, var2) - `; - - testIndentation(code, 4); -}); - -test('nested func params call', () => { - const code = ` -//// def foo_bar(var1, var2): -//// print( -//// [|/*marker*/|]var1) - `; - - testIndentation(code, 8); -}); - -test('nested func params call 2', () => { - const code = ` -//// def foo_bar(var1, var2): -//// print(var1, -//// [|/*marker*/|]var1) - `; - - testIndentation(code, 10); -}); - -test('class func params', () => { - const code = ` -//// class Test(): -//// def foo_bar(self, var1, var2): -//// print(var1, -//// [|/*marker*/|]var1) - `; - - testIndentation(code, 14); -}); - -test('nested closures', () => { - const code = ` -//// import pytest -//// -//// class TestStuff: -//// @pytest.mark.parametrize( -//// ["given", "expected"], -//// [ -//// ("A", ["A"]), -//// ("A ", ["A"]), -//// (" A", ["A"]), -//// [|/*marker*/|] -//// ("A, B", ["A", "B"]), -//// ("A,B", ["A", "B"]), -//// (" A, B", ["A", "B"]), -//// ("A B", ["A B"]), -//// ], -//// ) -//// def test(given, expected): -//// pass - `; - - testIndentation(code, 16); -}); - -test('nested closures 2', () => { - const code = ` -//// import pytest -//// -//// class TestStuff: -//// @pytest.mark.parametrize( -//// ["given", "expected"] -//// [|/*marker*/|] -//// ) -//// def test(given, expected): -//// pass - `; - - testIndentation(code, 8); -}); - -test('nested closures 3', () => { - const code = ` -//// import pytest -//// -//// class TestStuff: -//// @pytest.mark.parametrize( -//// ["given", "expected" -//// [|/*marker*/|] -//// ) -//// def test(given, expected): -//// pass - `; - - testIndentation(code, 9); -}); - -function testIndentation(code: string, indentation: number, preferDedent?: boolean) { - const state = parseAndGetTestState(code).state; - const marker = state.getMarkerByName('marker'); - - const parseResults = state.program.getBoundSourceFile(marker.fileName)!.getParseResults()!; - const actual = getNewlineIndentation(parseResults, marker.position, preferDedent); - assert.strictEqual(actual, indentation); -} diff --git a/packages/pyright-internal/src/tests/insertionPointUtils.test.ts b/packages/pyright-internal/src/tests/insertionPointUtils.test.ts deleted file mode 100644 index 6e1aef62a..000000000 --- a/packages/pyright-internal/src/tests/insertionPointUtils.test.ts +++ /dev/null @@ -1,189 +0,0 @@ -/* - * insertionPointUtils.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Unit tests for insertionPointUtils module. - */ - -import assert from 'assert'; - -import { normalizeSlashes } from '../common/pathUtils'; -import { getInsertionPointForSymbolUnderModule, InsertionOptions } from '../languageService/insertionPointUtils'; -import { parseAndGetTestState } from './harness/fourslash/testState'; - -test('empty file', () => { - const code = ` -//// [|/*marker*/|] - `; - - testInsertionPoint(code, 'bar'); -}); - -test('empty file with blank lines', () => { - const code = ` -//// [|/*marker*/|] -//// -//// - `; - - testInsertionPoint(code, 'bar'); -}); - -test('empty file with comments', () => { - const code = ` -//// # comment -//// [|/*marker*/|] -//// - `; - - testInsertionPoint(code, 'bar'); -}); - -test('insert symbol to module', () => { - const code = ` -//// def foo(): pass[|/*marker*/|] - `; - - testInsertionPoint(code, 'bar'); -}); - -test('insert symbol to module before private symbol', () => { - const code = ` -//// def foo(): pass[|/*marker*/|] -//// def __private(): pass - `; - - testInsertionPoint(code, 'bar'); -}); - -test('insert private symbol to module', () => { - const code = ` -//// def foo(): pass -//// def __private(): pass[|/*marker*/|] - `; - - testInsertionPoint(code, '__another'); -}); - -test('no insertion on existing symbol', () => { - const code = ` -//// [|/*marker*/|]def foo(): pass -//// def __private(): pass - `; - - testNoInsertionPoint(code, 'foo'); -}); - -test('no insertion symbol with imported symbol with same name', () => { - const code = ` -//// from os import path[|/*marker*/|] -//// def __private(): pass - `; - - testNoInsertionPoint(code, 'path'); -}); - -test('insert symbol with imported symbol with same name', () => { - const code = ` -//// from os import path[|/*marker*/|] -//// def __private(): pass - `; - - testInsertionPoint(code, 'path', { - symbolDeclToIgnore: normalizeSlashes('\\typeshed-fallback\\stdlib\\os\\__init__.pyi'), - }); -}); - -test('insert symbol with before marker at the top', () => { - const code = ` -//// [|/*marker*/|] -//// [|/*before*/|] - `; - - testInsertionPoint(code, 'path', { - insertBeforeMarker: 'before', - }); -}); - -test('insert symbol with before marker at the top before symbols', () => { - const code = ` -//// [|/*marker*/|]def [|/*before*/|]foo(): -//// pass - `; - - testInsertionPoint(code, 'path', { - insertBeforeMarker: 'before', - }); -}); - -test('insert symbol with before marker at the top before symbols 2', () => { - const code = ` -//// [|/*marker*/|]def foo(a: [|/*before*/|]MyType): -//// pass - `; - - testInsertionPoint(code, 'path', { - insertBeforeMarker: 'before', - }); -}); - -test('insert symbol before insert marker with other statements', () => { - const code = ` -//// import os[|/*marker*/|] -//// -//// def [|/*before*/|]foo(): -//// pass - `; - - testInsertionPoint(code, 'path', { - insertBeforeMarker: 'before', - }); -}); - -test('insert symbol after comments', () => { - const code = ` -//// a = 1 # comment [|/*marker*/|] -//// - `; - - testInsertionPoint(code, 'b'); -}); - -test('insert symbol after comments at EOF', () => { - const code = ` -//// a = 1 # comment [|/*marker*/|] - `; - - testInsertionPoint(code, 'b'); -}); - -function testInsertionPoint( - code: string, - symbolName: string, - testOptions?: { symbolDeclToIgnore?: string; insertBeforeMarker?: string } -) { - const state = parseAndGetTestState(code).state; - const marker = state.getMarkerByName('marker'); - - const insertBefore = testOptions?.insertBeforeMarker - ? state.getMarkerByName(testOptions.insertBeforeMarker).position - : undefined; - - const options: InsertionOptions = { - symbolDeclToIgnore: testOptions?.symbolDeclToIgnore, - insertBefore, - }; - const parseResults = state.program.getBoundSourceFile(marker.fileName)!.getParseResults()!; - const actual = getInsertionPointForSymbolUnderModule(state.program.evaluator!, parseResults, symbolName, options); - assert.strictEqual(actual, marker.position); -} - -function testNoInsertionPoint(code: string, symbolName: string) { - const state = parseAndGetTestState(code).state; - const marker = state.getMarkerByName('marker'); - - const parseResults = state.program.getBoundSourceFile(marker.fileName)!.getParseResults()!; - const actual = getInsertionPointForSymbolUnderModule(state.program.evaluator!, parseResults, symbolName); - assert(!actual); -} diff --git a/packages/pyright-internal/src/tests/moveSymbol.importAdder.test.ts b/packages/pyright-internal/src/tests/moveSymbol.importAdder.test.ts deleted file mode 100644 index d5cd3979d..000000000 --- a/packages/pyright-internal/src/tests/moveSymbol.importAdder.test.ts +++ /dev/null @@ -1,340 +0,0 @@ -/* - * moveSymbol.importAdder.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * importAdder tests around move symbol. - */ - -import { parseAndGetTestState } from './harness/fourslash/testState'; -import { testMoveSymbolAtPosition } from './renameModuleTestUtils'; - -test('move imports used in the symbol', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!class MyType:!n! pass!n!!n!"|}from typing import List, Mapping -//// -//// class MyType: -//// pass -//// -//// def [|/*marker*/foo|](a: str, b: List[int]) -> None: -//// c: Mapping[str, MyType] = { 'hello', MyType() }|] - -// @filename: moved.py -//// [|{|"r":"from test import MyType!n!!n!!n!from typing import List, Mapping!n!!n!!n!def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType() }", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!class MyType:!n! pass!n!!n!"|}from typing import List as l, Mapping as m -//// -//// class MyType: -//// pass -//// -//// def [|/*marker*/foo|](a: str, b: l[int]) -> None: -//// c: m[str, MyType] = { 'hello', MyType() }|] - -// @filename: moved.py -//// [|{|"r":"from test import MyType!n!!n!!n!from typing import List as l, Mapping as m!n!!n!!n!def foo(a: str, b: l[int]) -> None:!n! c: m[str, MyType] = { 'hello', MyType() }", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('with existing imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!class MyType:!n! pass!n!!n!"|}from typing import List, Mapping -//// -//// class MyType: -//// pass -//// -//// def [|/*marker*/foo|](a: str, b: List[int]) -> None: -//// c: Mapping[str, MyType] = { 'hello', MyType() }|] - -// @filename: moved.py -//// from typing import List, Mapping -//// from test import MyType[|{|"r":"!n!!n!!n!def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType() }", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('merge with existing imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!class MyType:!n! pass!n!!n!class MyType2(MyType):!n! pass!n!!n!"|}from typing import List, Mapping -//// -//// class MyType: -//// pass -//// -//// class MyType2(MyType): -//// pass -//// -//// def [|/*marker*/foo|](a: str, b: List[int]) -> None: -//// c: Mapping[str, MyType] = { 'hello', MyType2() }|] - -// @filename: moved.py -//// [|{|"r":"from typing import List, Mapping!n!from test import MyType, MyType2!n!m = MyType()!n!!n!!n!def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType2() }", "name": "dest"|}from typing import Mapping -//// from test import MyType -//// m = MyType()|] - `; - - testFromCode(code); -}); - -test('merge with existing moving symbol imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!class MyType:!n! pass!n!!n!"|}from typing import List, Mapping -//// -//// class MyType: -//// pass -//// -//// def [|/*marker*/foo|](a: str, b: List[int]) -> None: -//// c: Mapping[str, MyType] = { 'hello', MyType() }|] - -// @filename: moved.py -//// from typing import List, Mapping -//// from test import [|{|"r":""|}foo, |]MyType[|{|"r":"!n!!n!!n!def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType() }", "name": "dest"|}|] -//// -//// foo() - `; - - testFromCode(code); -}); - -test('merge with existing moving symbol imports and add new one', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!class MyType:!n! pass!n!!n!"|}from typing import List, Mapping -//// -//// class MyType: -//// pass -//// -//// def [|/*marker*/foo|](a: str, b: List[int]) -> None: -//// c: Mapping[str, MyType] = { 'hello', MyType() }|] - -// @filename: moved.py -//// [|{|"r":"from typing import List, Mapping!n!!n!from test import MyType!n!!n!!n!def foo(a: str, b: List[int]) -> None:!n! c: Mapping[str, MyType] = { 'hello', MyType() }!n!!n!foo()", "name": "dest"|}from typing import List, Mapping -//// from test import foo -//// -//// foo()|] - `; - - testFromCode(code); -}); - -test('symbol from destination file used', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!"|}from moved import MyType -//// -//// def [|/*marker*/foo|](a: MyType) -> None: -//// c: Mapping[str, MyType] = { 'hello', a }|] - -// @filename: moved.py -//// class MyType: -//// pass[|{|"r":"!n!!n!!n!def foo(a: MyType) -> None:!n! c: Mapping[str, MyType] = { 'hello', a }", "name": "dest"|}|] -//// - `; - - testFromCode(code); -}); - -test('insert after all symbols references', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!"|}from moved import MyType -//// -//// def [|/*marker*/foo|](a: MyType) -> None: -//// c: Mapping[str, MyType] = { 'hello', a }|] - -// @filename: moved.py -//// [|{|"r":""|}from test import foo -//// |] -//// class MyType: -//// pass[|{|"r":"!n!!n!!n!def foo(a: MyType) -> None:!n! c: Mapping[str, MyType] = { 'hello', a }", "name": "dest"|}|] -//// -//// foo() - `; - - testFromCode(code); -}); - -test('insert after all symbols references 2', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!"|}from moved import MyType -//// -//// def [|/*marker*/foo|](a: MyType) -> None: -//// c: Mapping[str, MyType] = { 'hello', a }|] - -// @filename: moved.py -//// def __privateFoo(): -//// pass -//// -//// class MyType: -//// pass[|{|"r":"!n!!n!!n!def foo(a: MyType) -> None:!n! c: Mapping[str, MyType] = { 'hello', a }", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('symbol used before all symbol references', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!"|}from moved import MyType -//// -//// def [|/*marker*/foo|](a: MyType) -> None: -//// c: Mapping[str, MyType] = { 'hello', a }|] - -// @filename: moved.py -//// [|{|"r":""|}from test import foo[|{|"r":"!n!!n!!n!def foo(a: MyType) -> None:!n! c: Mapping[str, MyType] = { 'hello', a }", "name": "dest"|}|] -//// |] -//// foo() -//// -//// class MyType: -//// pass - `; - - testFromCode(code); -}); - -test('symbol with import statements', () => { - const code = ` -// @filename: test.py -//// [|{|"r": "import sys!n!!n!"|}import os, os.path, sys -//// -//// def [|/*marker*/foo|](): -//// p = os.path.curdir -//// os.abort()|] - -// @filename: moved.py -//// [|{|"r": "import os!n!import os.path!n!!n!!n!def foo():!n! p = os.path.curdir!n! os.abort()", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('symbol with import statements with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r": "import sys!n!!n!"|}import os, os.path as path, sys -//// -//// def [|/*marker*/foo|](): -//// p = path.curdir -//// os.abort()|] - -// @filename: moved.py -//// [|{|"r": "import os!n!import os.path as path!n!!n!!n!def foo():!n! p = path.curdir!n! os.abort()", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('symbol with import statements with alias 2', () => { - const code = ` -// @filename: test.py -//// [|{|"r": "import sys!n!!n!"|}import os, os.path as p1, sys -//// -//// def [|/*marker*/foo|](): -//// p = p1.curdir -//// os.abort()|] - -// @filename: moved.py -//// [|{|"r": "import os!n!import os.path as p1!n!!n!!n!def foo():!n! p = p1.curdir!n! os.abort()", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('symbol with import statements with multiple unused imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r": "import os.path, sys!n!!n!"|}import os, os.path, sys -//// -//// def [|/*marker*/foo|](): -//// os.abort()|] - -// @filename: moved.py -//// [|{|"r": "import os!n!!n!!n!def foo():!n! os.abort()", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('symbol with import statements with used imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r": "import os.path as path, sys!n!!n!p = path.curdir!n!!n!"|}import os, os.path as path, sys -//// -//// p = path.curdir -//// -//// def [|/*marker*/foo|](): -//// p = path.curdir -//// os.abort()|] - -// @filename: moved.py -//// [|{|"r": "import os!n!import os.path as path!n!!n!!n!def foo():!n! p = path.curdir!n! os.abort()", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('symbol with invalid import', () => { - const code = ` -// @filename: test.py -//// import notExist -//// -//// p = notExist.fooStr -//// -//// [|{|"r": ""|}def [|/*marker*/foo|](): -//// p = notExist.fooStr|] - -// @filename: moved.py -//// [|{|"r": "def foo():!n! p = notExist.fooStr", "name": "dest"|}|] - `; - - testFromCode(code, true); -}); - -test('symbol with import with error', () => { - const code = ` -// @filename: test.py -//// #pyright: strict -//// import lib # should have no stub diagnostic -//// -//// lib.bar() -//// -//// [|{|"r": ""|}def [|/*marker*/foo|](): -//// p = lib.bar()|] - -// @filename: lib/__init__.py -// @library: true -//// def bar(): pass - -// @filename: moved.py -//// [|{|"r": "import lib!n!!n!!n!def foo():!n! p = lib.bar()", "name": "dest"|}|] - `; - - testFromCode(code, true); -}); - -function testFromCode(code: string, expectsMissingImport = false) { - const state = parseAndGetTestState(code).state; - - testMoveSymbolAtPosition( - state, - state.getMarkerByName('marker').fileName, - state.getMarkerByName('dest').fileName, - state.getPositionRange('marker').start, - undefined, - undefined, - expectsMissingImport - ); -} diff --git a/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts b/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts deleted file mode 100644 index dc5177155..000000000 --- a/packages/pyright-internal/src/tests/moveSymbol.insertion.test.ts +++ /dev/null @@ -1,625 +0,0 @@ -/* - * moveSymbol.trivia.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Tests around how moveSymbol handles whitespace/blank lines/comments around - * symbol that is moved. - */ - -import assert from 'assert'; -import { CancellationToken } from 'vscode-languageserver'; - -import { ImportFormat } from '../languageService/autoImporter'; -import { parseAndGetTestState } from './harness/fourslash/testState'; -import { testMoveSymbolAtPosition } from './renameModuleTestUtils'; - -test('single symbol with trailing whitespace', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// |] -//// - -// @filename: moved.py -//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('begining of a file with other symbols below', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// -//// |]def nextFoo(): -//// pass - -// @filename: moved.py -//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('at the end of a file with other symbols above', () => { - const code = ` -// @filename: test.py -//// def beforeFoo(): -//// pass -//// -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('between symbols', () => { - const code = ` -// @filename: test.py -//// def beforeFoo(): -//// pass -//// -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// -//// -//// |]def afterFoo(): -//// pass -//// - -// @filename: moved.py -//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('insert to empty file', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('insert to empty file with blank lines', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] -//// -//// - `; - - testFromCode(code); -}); - -test('insert to empty file with comments', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// # comment -//// [|{|"r":"!n!def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('insert to empty file with comments and blank lines', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// # comment -//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] -//// - `; - - testFromCode(code); -}); - -test('insert after other symbol', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// def beforeFoo(): -//// pass[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('insert between symbols', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// def beforeFoo(): -//// pass[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] -//// -//// def __privateFunc(): -//// pass - `; - - testFromCode(code); -}); - -test('no insert with conflicting name', () => { - const code = ` -// @filename: test.py -//// def [|/*marker*/foo|](): -//// pass - -// @filename: moved.py -//// # same name already exist -//// [|/*dest*/|] -//// def foo(): -//// pass - `; - - const state = parseAndGetTestState(code).state; - - const actions = state.program.moveSymbolAtPosition( - state.getMarkerByName('marker').fileName, - state.getMarkerByName('dest').fileName, - state.getPositionRange('marker').start, - { importFormat: ImportFormat.Absolute }, - CancellationToken.None - ); - assert(!actions); -}); - -test('insert to a file with same symbol imported without alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":""|}from test import foo -//// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('insert to a file with same symbol imported with multiple symbol imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// -//// |]def bar(): -//// pass - -// @filename: moved.py -//// from test import bar[|{|"r":""|}, foo|][|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('insert to a file with same symbol used off import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":""|}import test -//// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] -//// -//// [|{|"r":""|}test.|]foo() - `; - - testFromCode(code); -}); - -test('insert to a file with same symbol used off import with edit merge', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":""|}import test[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] -//// |] -//// -//// [|{|"r":""|}test.|]foo() - `; - - testFromCode(code); -}); - -test('insert to a file with same symbol used off import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":""|}import test as t -//// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] -//// -//// [|{|"r":""|}t.|]foo() - - `; - testFromCode(code); -}); - -test('insert to a file with same symbol used off import with other symbols', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// -//// |]def bar(): -//// pass - -// @filename: moved.py -//// import test[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] -//// -//// [|{|"r":""|}test.|]foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('insert to a file with same symbol used off from import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":""|}from . import test -//// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] -//// -//// [|{|"r":""|}test.|]foo() - `; - - testFromCode(code); -}); - -test('insert to a file with same symbol imported with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":""|}from test import foo as aliasFoo -//// |] -//// aliasFoo()[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('insert to a file with same symbol imported and used', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass|] - -// @filename: moved.py -//// [|{|"r":""|}from test import foo -//// |]import os[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] -//// -//// foo() - `; - - testFromCode(code); -}); - -test('insert to a file with same symbol used off import with alias and used', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// |]def bar(): -//// pass - -// @filename: moved.py -//// import test as t[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] -//// -//// [|{|"r":""|}t.|]foo() -//// t.bar() - `; - - testFromCode(code); -}); - -test('insert import to original file for usage', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"from moved import foo!n!!n!!n!"|}|][|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// |]foo() - -// @filename: moved.py -//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('insert import name to the existing import in the original file for usage', () => { - const code = ` -// @filename: test.py -//// from moved import bar[|{|"r":", foo"|}|] -//// -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// |]foo() - -// @filename: moved.py -//// def bar(): -//// pass[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('original file has import for the symbol with alias', () => { - const code = ` -// @filename: test.py -//// from [|{|"r": "moved"|}test|] import foo as aliasFoo -//// -//// aliasFoo() -//// -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// |] - -// @filename: moved.py -//// [|{|"r":"def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('move after class', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// pass -//// |] - -// @filename: moved.py -//// class A: -//// def foo(self): -//// pass[|{|"r":"!n!!n!!n!def foo():!n! pass", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('move variable', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}[|/*marker*/A|] = 1|] - -// @filename: moved.py -//// [|{|"r":"A = 1", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('move variable with doc string', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}[|/*marker*/A|] = 1 -//// ''' -//// doc string -//// '''|] - -// @filename: moved.py -//// [|{|"r":"A = 1!n!'''!n! doc string!n!'''", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('move a variable with another variable next line', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!guess_word = 'c'"|}import random -//// -//// [|/*marker*/answer_word|] = random.choice(['a','b','c','d']) -//// guess_word = 'c'|] - -// @filename: moved.py -//// [|{|"r":"import random!n!!n!!n!answer_word = random.choice(['a','b','c','d'])", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('Handle comments at the begining better 1', () => { - const code = ` -// @filename: test.py -//// # this function doesn't do much -//// [|{|"r":""|}def [|/*marker*/myfunc|](a, b): -//// return a + b|] - -// @filename: moved.py -//// [|{|"r":"def myfunc(a, b):!n! return a + b", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('Handle comments at the begining better 2', () => { - const code = ` -// @filename: test.py -//// import os -//// -//// [|{|"r":""|}# this function doesn't do much -//// def [|/*marker*/myfunc|](a, b): -//// return a + b|] - -// @filename: moved.py -//// [|{|"r":"# this function doesn't do much!n!def myfunc(a, b):!n! return a + b", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('variable with multiline expression', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"!n!"|}from functools import partial -//// -//// [|/*marker*/sum1_2|] = partial(sum, -//// [1, -//// 2] -//// )|] - -// @filename: moved.py -//// [|{|"r":"from functools import partial!n!!n!!n!sum1_2 = partial(sum,!n![1,!n!2]!n!)", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('multiple variables in a single line 1', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}[|/*marker*/a|] = 1; |]b = 1 - -// @filename: moved.py -//// [|{|"r":"a = 1;", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('multiple variables in a single line 2', () => { - const code = ` -// @filename: test.py -//// a = 1;[|{|"r":""|}[|/*marker*/b|] = 2|] - -// @filename: moved.py -//// [|{|"r":"b = 2", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('multiple variables in multiple lines 1', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}[|/*marker*/a|] = \\ -//// 1 + 2; |]b = 3 + \\ -//// 4 - -// @filename: moved.py -//// [|{|"r":"a = \\\\!n! 1 + 2;", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('multiple variables in multiple lines 2', () => { - const code = ` -// @filename: test.py -//// a = \\ -//// 1 + 2; [|{|"r":""|}[|/*marker*/b|] = 3 + \\ -//// 4|] - -// @filename: moved.py -//// [|{|"r":"b = 3 + \\\\!n! 4", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('insert after comment', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}[|/*marker*/b|] = 3|] - -// @filename: moved.py -//// a = 1 # type: ignore[|{|"r":"!n!b = 3", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('keep comments', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/test|](): -//// return # comment|] - -// @filename: moved.py -//// [|{|"r":"def test():!n! return # comment", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('statement list', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}[|/*marker*/a|] = 1|] - -// @filename: moved.py -//// print("hello")[|{|"r":"!n!a = 1", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('regular statement', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}[|/*marker*/a|] = 1|] - -// @filename: moved.py -//// if True: -//// pass[|{|"r":"!n!!n!a = 1", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -function testFromCode(code: string) { - const state = parseAndGetTestState(code).state; - - testMoveSymbolAtPosition( - state, - state.getMarkerByName('marker').fileName, - state.getMarkerByName('dest').fileName, - state.getPositionRange('marker').start - ); -} diff --git a/packages/pyright-internal/src/tests/moveSymbol.misc.test.ts b/packages/pyright-internal/src/tests/moveSymbol.misc.test.ts deleted file mode 100644 index 356ff7e16..000000000 --- a/packages/pyright-internal/src/tests/moveSymbol.misc.test.ts +++ /dev/null @@ -1,206 +0,0 @@ -/* - * moveSymbol.misc.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Misc tests around move symbol. - */ - -import assert from 'assert'; -import { CancellationToken } from 'vscode-languageserver'; - -import { ImportFormat } from '../languageService/autoImporter'; -import { parseAndGetTestState } from './harness/fourslash/testState'; - -test('source and destnation file must have same ext', () => { - const code = ` -// @filename: test.py -//// def [|/*marker*/foo|](): pass - -// @filename: moved.pyi -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('source and destnation file can not be same', () => { - const code = ` -// @filename: test.py -//// [|/*dest*/|]def [|/*marker*/foo|](): pass - `; - - testNoMoveFromCode(code); -}); - -test('Symbol must be module level symbol', () => { - const code = ` -// @filename: test.py -//// class A: -//// def [|/*marker*/foo|](self): pass - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('Import alias can not be moved', () => { - const code = ` -// @filename: test.py -//// import [|/*marker*/sys|] - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('Type alias can not be moved', () => { - const code = ` -// @filename: test.py -//// from typing import TypeAlias -//// [|/*marker*/TA|]: TypeAlias = int - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('TypeVar can not be moved', () => { - const code = ` -// @filename: test.py -//// from typing import TypeVar -//// [|/*marker*/T1|] = TypeVar("T1") - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('tuple unpacking not supported', () => { - const code = ` -// @filename: test.py -//// [|/*marker*/a|], b = 1, 2 - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('tuple unpacking not supported 2', () => { - const code = ` -// @filename: test.py -//// a, [|/*marker*/b|] = 1, 2 - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('chained assignment not supported', () => { - const code = ` -// @filename: test.py -//// [|/*marker*/a|] = b = 1 - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('chained assignment not supported 2', () => { - const code = ` -// @filename: test.py -//// a = [|/*marker*/b|] = 1 - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('augmented assignment', () => { - const code = ` -// @filename: test.py -//// [|/*marker*/a|] += 1 - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('augmented assignment 2', () => { - const code = ` -// @filename: test.py -//// a = 1 -//// [|/*marker*/a|] += 1 - -// @filename: moved.py -//// [|/*dest*/|] - `; - - testNoMoveFromCode(code); -}); - -test('symbol must be from user files', () => { - const code = ` -// @filename: pyrightconfig.json -//// { -//// "useLibraryCodeForTypes": true -//// } - -// @filename: used.py -//// /*used*/ -//// import lib -//// lib.a - -// @filename: lib.py -// @library: true -//// a = 1 -//// [|/*marker*/a|] += 1 - -// @filename: moved.py -// @library: true -//// [|/*dest*/|] - `; - - const state = parseAndGetTestState(code).state; - while (state.workspace.service.test_program.analyze()); - - const actions = state.program.moveSymbolAtPosition( - state.getMarkerByName('marker').fileName, - state.getMarkerByName('dest').fileName, - state.getPositionRange('marker').start, - { importFormat: ImportFormat.Absolute }, - CancellationToken.None - ); - assert(!actions); -}); - -function testNoMoveFromCode(code: string) { - const state = parseAndGetTestState(code).state; - - const actions = state.program.moveSymbolAtPosition( - state.getMarkerByName('marker').fileName, - state.getMarkerByName('dest').fileName, - state.getPositionRange('marker').start, - { importFormat: ImportFormat.Absolute }, - CancellationToken.None - ); - assert(!actions); -} diff --git a/packages/pyright-internal/src/tests/moveSymbol.updateReference.test.ts b/packages/pyright-internal/src/tests/moveSymbol.updateReference.test.ts deleted file mode 100644 index bee788f84..000000000 --- a/packages/pyright-internal/src/tests/moveSymbol.updateReference.test.ts +++ /dev/null @@ -1,1210 +0,0 @@ -/* - * moveSymbol.updateReference.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Tests Program.moveSymbol - */ - -import { parseAndGetTestState } from './harness/fourslash/testState'; -import { testMoveSymbolAtPosition } from './renameModuleTestUtils'; - -test('move symbol to another file - simple from import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":"moved"|}test|] import foo - `; - - testFromCode(code); -}); - -test('move symbol to another file - nested file', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":"nested.moved"|}test|] import foo - `; - - testFromCode(code); -}); - -test('move symbol to another file - parent file', () => { - const code = ` -// @filename: nested/test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":"moved"|}nested.test|] import foo - `; - - testFromCode(code); -}); - -test('move symbol to another file - multiple import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// -//// |]def stay(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"from moved import foo!n!"|}|]from test import [|{|"r":""|}foo, |]stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - multiple import with submodules', () => { - const code = ` -// @filename: nested/__init__.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/test.py -//// # empty - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"from moved import foo!n!"|}|]from nested import [|{|"r":""|}foo, |]test - `; - - testFromCode(code); -}); - -test('move symbol to another file - no merge with existing imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":"moved"|}test|] import foo -//// from moved import stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - merge with existing imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from test import bar[|{|"r":""|}, foo|] -//// from moved import [|{|"r":"foo, "|}|]stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - multiple import - nested folder', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// -//// |]def stay(): pass - -// @filename: nested/moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"from nested.moved import foo!n!"|}|]from test import [|{|"r":""|}foo, |]stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - multiple import with submodules - parent folder', () => { - const code = ` -// @filename: nested/__init__.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/test.py -//// # empty - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"from moved import foo!n!"|}|]from nested import [|{|"r":""|}foo, |]test - `; - - testFromCode(code); -}); - -test('move symbol to another file - no merge with existing imports - nested folder', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/moved.py -//// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":"nested.moved"|}test|] import foo -//// from nested.moved import stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - merge with existing imports - nested folder', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: nested/moved.py -//// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from test import bar[|{|"r":""|}, foo|] -//// from nested.moved import [|{|"r":"foo, "|}|]stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - multiple import - parent folder', () => { - const code = ` -// @filename: nested/test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// -//// |]def stay(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"from moved import foo!n!"|}|]from nested.test import [|{|"r":""|}foo, |]stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - multiple import with submodules - sibling folder', () => { - const code = ` -// @filename: nested/__init__.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/test.py -//// # empty - -// @filename: nested/moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from nested import [|{|"r":""|}foo, |]test[|{|"r":"!n!from nested.moved import foo"|}|] - `; - - testFromCode(code); -}); - -test('move symbol to another file - no merge with existing imports - parent folder', () => { - const code = ` -// @filename: nested/test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":"moved"|}nested.test|] import foo -//// from moved import stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - merge with existing imports - parent folder', () => { - const code = ` -// @filename: nested/test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from nested.test import bar[|{|"r":""|}, foo|] -//// from moved import [|{|"r":"foo, "|}|]stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - simple from import - relative path', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":".moved"|}.test|] import foo - `; - - testFromCode(code); -}); - -test('move symbol to another file - nested file - relative path', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: nested/used.py -//// from [|{|"r":".moved"|}..test|] import foo - `; - - testFromCode(code); -}); - -test('move symbol to another file - parent file - relative path', () => { - const code = ` -// @filename: nested/test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":".moved"|}.nested.test|] import foo - `; - - testFromCode(code); -}); - -test('move symbol to another file - multiple import - relative path', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// -//// |]def stay(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: nested/used.py -//// [|{|"r":"from ..moved import foo!n!"|}|]from ..test import [|{|"r":""|}foo, |]stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - multiple import with submodules - relative path', () => { - const code = ` -// @filename: nested/__init__.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/test.py -//// # empty - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"from .moved import foo!n!"|}|]from .nested import [|{|"r":""|}foo, |]test - `; - - testFromCode(code); -}); - -test('move symbol to another file - no merge with existing imports - relative path', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":".moved"|}.test|] import foo -//// from moved import stay - `; - - testFromCode(code); -}); - -test('move symbol to another file - merge with existing imports - relative path', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// def stay(): pass[|{|"r":"!n!!n!!n!def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from .test import bar[|{|"r":""|}, foo|] -//// from .moved import [|{|"r":"foo, "|}|]stay - `; - - testFromCode(code); -}); - -test('member off import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import [|{|"r":"moved"|}test|] -//// [|{|"r":"moved"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off import with existing import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":""|}import test -//// |]import moved -//// [|{|"r":"moved"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off import with existing import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":""|}import test -//// |]import moved as m -//// [|{|"r":"m"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off import with existing import - multiple imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved[|{|"r":""|}, test|] -//// [|{|"r":"moved"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off import with existing import - multiple imports with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved as m[|{|"r":""|}, test|] -//// [|{|"r":"m"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off from import with existing import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":""|}from . import test -//// |]import moved -//// [|{|"r":"moved"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off from import with existing import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":""|}from . import test -//// |]import moved as m -//// [|{|"r":"m"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off from import with existing from import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":""|}from . import test -//// |]from . import moved -//// [|{|"r":"moved"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off from import with existing from import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":""|}from . import test -//// |]from . import moved as m -//// [|{|"r":"m"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off from import with existing import - multiple imports', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import moved[|{|"r":""|}, test|] -//// [|{|"r":"moved"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off from import with existing import - multiple imports with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import moved as m[|{|"r":""|}, test|] -//// [|{|"r":"m"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off submodule', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import [|{|"r":"moved"|}test|] -//// [|{|"r":"moved"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off import - dotted name', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import [|{|"r":"nested.moved"|}test|] -//// [|{|"r":"nested.moved"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off submodule - dotted name', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":".nested"|}.|] import [|{|"r":"moved"|}test|] -//// [|{|"r":"moved"|}test|].foo() - `; - - testFromCode(code); -}); - -test('member off import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import [|{|"r":"moved"|}test|] as t -//// t.foo() - `; - - testFromCode(code); -}); - -test('member off submodule with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import [|{|"r":"moved"|}test|] as test -//// test.foo() - `; - - testFromCode(code); -}); - -test('member off import with alias - dotted name', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: nested/moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import [|{|"r":"nested.moved"|}test|] as t -//// t.foo() - `; - - testFromCode(code); -}); - -test('member off submodule with alias - dotted name', () => { - const code = ` -// @filename: nested/test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: sub/moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":"sub"|}nested|] import [|{|"r":"moved"|}test|] as test -//// test.foo() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"import moved!n!"|}|]import test -//// [|{|"r":"moved"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols - existing import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved -//// import test -//// -//// [|{|"r":"moved"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols - existing import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved as m -//// import test -//// -//// [|{|"r":"m"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols with alias - existing import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved -//// import test as t -//// -//// [|{|"r":"moved"|}t|].foo() -//// t.bar() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols with alias - new import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"import moved!n!"|}|]import test as t -//// -//// [|{|"r":"moved"|}t|].foo() -//// t.bar() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols with alias - existing import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved as m -//// import test as t -//// -//// [|{|"r":"m"|}t|].foo() -//// t.bar() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols - existing from import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import moved -//// import test -//// -//// [|{|"r":"moved"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols - existing from import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import moved as m -//// import test -//// -//// [|{|"r":"m"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols - existing from import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import moved -//// import test -//// -//// [|{|"r":"moved"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off import - multiple symbols - existing from import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import moved as m -//// import test -//// -//// [|{|"r":"m"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off from import - multiple symbols', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"import moved!n!"|}|]from . import test -//// [|{|"r":"moved"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off from import - multiple symbols - existing import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved -//// from . import test -//// -//// [|{|"r":"moved"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off from import - multiple symbols - existing import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved as m -//// from . import test -//// -//// [|{|"r":"m"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off from import - multiple symbols with alias - existing import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved -//// from . import test as t -//// -//// [|{|"r":"moved"|}t|].foo() -//// t.bar() - `; - - testFromCode(code); -}); - -test('member off from import - multiple symbols with alias - new import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"import moved!n!"|}|]from . import test as t -//// -//// [|{|"r":"moved"|}t|].foo() -//// t.bar() - `; - - testFromCode(code); -}); - -test('member off from import - multiple symbols with alias - existing import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// import moved as m -//// from . import test as t -//// -//// [|{|"r":"m"|}t|].foo() -//// t.bar() - `; - - testFromCode(code); -}); - -test('member off from import - multiple symbols - existing from import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import moved -//// from . import test -//// -//// [|{|"r":"moved"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off from import - multiple symbols - existing from import with alias', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass -//// |]def bar(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from . import moved as m -//// from . import test -//// -//// [|{|"r":"m"|}test|].foo() -//// test.bar() - `; - - testFromCode(code); -}); - -test('member off import - error case that we dont touch - function return module', () => { - // We could put import in test so test module still has symbol "foo" but - // for now, we won't handle such corner case. - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: test2.py -//// def foo(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from test -//// from test2 -//// def getTestModule(a): -//// return test if a > 0 else test2 -//// -//// getTestModule(1).foo() - `; - - testFromCode(code); -}); - -test('member off import - error case that we dont touch - field return module', () => { - // We could put import in test so test module still has symbol "foo" but - // for now, we won't handle such corner case. - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): pass|] - -// @filename: test2.py -//// def foo(): pass - -// @filename: moved.py -//// [|{|"r":"def foo(): pass", "name": "dest"|}|] - -// @filename: used.py -//// from test -//// from test2 -//// module = test if a > 0 else test2 -//// -//// module.foo() - `; - - testFromCode(code); -}); - -test('simple symbol reference', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// return 1|] - -// @filename: moved.py -//// [|{|"r":"def foo():!n! return 1", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":"moved"|}test|] import foo -//// -//// foo() -//// b = foo().real - `; - - testFromCode(code); -}); - -test('handle __all__ - at the original file', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// return 1 -//// |]__all__ = [[|{|"r":""|}"foo"|]] - -// @filename: moved.py -//// [|{|"r":"def foo():!n! return 1", "name": "dest"|}|] - -// @filename: used.py -//// from [|{|"r":"moved"|}test|] import foo -//// foo() -//// b = foo().real -//// -//// __all__ = ["foo"] - `; - - testFromCode(code); -}); - -test('handle wildcard import - new import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// return 1|] - -// @filename: moved.py -//// [|{|"r":"def foo():!n! return 1", "name": "dest"|}|] - -// @filename: used.py -//// [|{|"r":"from moved import foo!n!"|}|]from test import * -//// foo() -//// b = foo().real - `; - - testFromCode(code); -}); - -test('handle wildcard import with existing import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// return 1|] - -// @filename: moved.py -//// def bar(): -//// pass[|{|"r":"!n!!n!!n!def foo():!n! return 1", "name": "dest"|}|] - -// @filename: used.py -//// from moved import bar[|{|"r":", foo"|}|] -//// from test import * -//// foo() -//// b = foo().real - `; - - testFromCode(code); -}); - -test('handle wildcard import with existing wildcard import', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// return 1|] - -// @filename: moved.py -//// def bar(): -//// pass[|{|"r":"!n!!n!!n!def foo():!n! return 1", "name": "dest"|}|] - -// @filename: used.py -//// from moved import *[|{|"r":"!n!from moved import foo"|}|] -//// from test import * -//// foo() -//// b = foo().real - `; - - testFromCode(code); -}); - -test('handle wildcard import in destination file', () => { - const code = ` -// @filename: test.py -//// [|{|"r":""|}def [|/*marker*/foo|](): -//// return 1|] - -// @filename: moved.py -//// from test import * -//// -//// def bar(): -//// pass[|{|"r":"!n!!n!!n!def foo():!n! return 1", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -test('move symbol whose decl is after reference', () => { - const code = ` -// @filename: test.py -//// [|{|"r":"from moved import mysum!n!!n!!n!"|}|]def myfunc(): -//// z = mysum() -//// -//// [|{|"r":""|}def [|/*marker*/mysum|](): -//// return 1|] - -// @filename: moved.py -//// [|{|"r":"def mysum():!n! return 1", "name": "dest"|}|] - `; - - testFromCode(code); -}); - -function testFromCode(code: string) { - const state = parseAndGetTestState(code).state; - - testMoveSymbolAtPosition( - state, - state.getMarkerByName('marker').fileName, - state.getMarkerByName('dest').fileName, - state.getPositionRange('marker').start - ); -} diff --git a/packages/pyright-internal/src/tests/renameModule.folder.test.ts b/packages/pyright-internal/src/tests/renameModule.folder.test.ts deleted file mode 100644 index 05d65c163..000000000 --- a/packages/pyright-internal/src/tests/renameModule.folder.test.ts +++ /dev/null @@ -1,261 +0,0 @@ -/* - * renameModule.folder.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Tests Program.RenameModule - */ - -import assert from 'assert'; -import { CancellationToken } from 'vscode-languageserver'; - -import { combinePaths, getDirectoryPath } from '../common/pathUtils'; -import { parseAndGetTestState } from './harness/fourslash/testState'; -import { testRenameModule } from './renameModuleTestUtils'; - -test('folder move up', () => { - const code = ` -// @filename: nested/__init__.py -//// [|/*marker*/|] - -// @filename: test1.py -//// from . import ([|nested|]) - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - const edits = state.program.renameModule(path, combinePaths(path, 'sub'), CancellationToken.None); - assert(!edits); -}); - -test('folder move down', () => { - const code = ` -// @filename: nested/__init__.py -//// [|/*marker*/|] - -// @filename: test1.py -//// from . import ([|nested|]) - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - const edits = state.program.renameModule(path, combinePaths(path, '..'), CancellationToken.None); - assert(!edits); -}); - -test('folder rename - from import', () => { - const code = ` -// @filename: nested/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test1.py -//// from . import ([|nested|]) -//// [|nested|].foo() - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested', 'sub'); -}); - -test('folder rename - from ', () => { - const code = ` -// @filename: nested/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test1.py -//// from [|nested|] import foo - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested', 'sub'); -}); - -test('folder rename - import ', () => { - const code = ` -// @filename: nested/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test1.py -//// import [|nested|] -//// [|nested|].foo() - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested', 'sub'); -}); - -test('folder rename - import dotted name', () => { - const code = ` -// @filename: nested1/__init__.py -//// # empty - -// @filename: nested1/nested2/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test1.py -//// import nested1.[|nested2|] -//// nested1.[|nested2|].foo() - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested2', 'sub'); -}); - -test('folder rename - multiple files', () => { - const code = ` -// @filename: nested/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: nested/module1.py -//// def foo1(): -//// pass - -// @filename: nested/module2.py -//// def foo2(): -//// pass - -// @filename: test1.py -//// from [|nested|] import foo, module1 -//// from [|nested|].module2 import foo2 -//// module1.foo() - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested', 'sub'); -}); - -test('folder rename - from alias', () => { - const code = ` -// @filename: nested/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test1.py -//// from . import [|nested|] as [|nested|] -//// [|nested|].foo() - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested', 'sub'); -}); - -test('folder rename - import alias', () => { - const code = ` -// @filename: nested/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test1.py -//// import [|nested|] as [|nested|] -//// [|nested|].foo() - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested', 'sub'); -}); - -test('folder rename - import dotted name alias', () => { - const code = ` -// @filename: nested/__init__.py -//// # empty - -// @filename: nested/nested/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test1.py -//// import nested.[|nested|] as [|nested|] -//// [|nested|].foo() - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested', 'sub'); -}); - -test('folder rename - reexport', () => { - const code = ` -// @filename: nested/__init__.py -//// from . import [|nested|] -//// [|nested|].foo() - -// @filename: nested/nested/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: nested/nested/module.py -//// from ..[|nested|] import foo - -// @filename: nested/nested/reexport.py -//// from .. import [|nested|] as [|nested|] - -// @filename: test1.py -//// import nested.[|nested|] as [|nested|] -//// [|nested|].foo() - -// @filename: test2.py -//// import nested.[|nested|].reexport -//// nested.[|nested|].reexport.[|nested|].foo() - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested', 'sub'); -}); - -test('folder rename - middle folder', () => { - const code = ` -// @filename: nested/__init__.py -//// # empty - -// @filename: nested/nested/__init__.py -//// [|/*marker*/|] - -// @filename: nested/nested/nested/__init__.py -//// # empty - -// @filename: test1.py -//// import nested.[|nested|].nested as nested -//// nested.foo() - -// @filename: test2.py -//// from nested.[|nested|] import nested - `; - - const state = parseAndGetTestState(code).state; - const path = getDirectoryPath(state.getMarkerByName('marker').fileName); - - testRenameModule(state, path, `${combinePaths(path, '..', 'sub')}`, 'nested', 'sub'); -}); diff --git a/packages/pyright-internal/src/tests/renameModule.fromImports.test.ts b/packages/pyright-internal/src/tests/renameModule.fromImports.test.ts deleted file mode 100644 index 378a0dee0..000000000 --- a/packages/pyright-internal/src/tests/renameModule.fromImports.test.ts +++ /dev/null @@ -1,952 +0,0 @@ -/* - * renameModule.fromImports.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Tests Program.RenameModule - */ - -import { combinePaths, getDirectoryPath } from '../common/pathUtils'; -import { parseAndGetTestState } from './harness/fourslash/testState'; -import { testRenameModule } from './renameModuleTestUtils'; - -test('rename just file name', () => { - const code = ` -// @filename: common/__init__.py -//// from io2 import tools -//// from io2.tools import [|{|"r":"renamedModule"|}pathUtils|] as [|{|"r":"renamedModule"|}pathUtils|] - -// @filename: io2/__init__.py -//// # empty - -// @filename: io2/tools/__init__.py -//// # empty - -// @filename: io2/tools/empty.py -//// # empty - -// @filename: io2/tools/pathUtils.py -//// def getFilename(path): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import * -//// -//// [|{|"r":"renamedModule"|}pathUtils|].getFilename("c") - -// @filename: test3.py -//// from .io2.tools import [|{|"r":"renamedModule"|}pathUtils|] as p -//// -//// p.getFilename("c") - -// @filename: test4.py -//// from common import tools, [|{|"r":"renamedModule"|}pathUtils|] -//// -//// [|{|"r":"renamedModule"|}pathUtils|].getFilename("c") - -// @filename: test5.py -//// from io2.tools import [|{|"r":""|}pathUtils as pathUtils, |]empty[|{|"r":", renamedModule as renamedModule"|}|] -//// -//// [|{|"r":"renamedModule"|}pathUtils|].getFilename("c") - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`); -}); - -test('from module - move file to nested folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: module.py -//// def getFilename(path): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from [|module|] import getFilename - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'common', 'moduleRenamed.py')}`, - 'module', - 'common.moduleRenamed' - ); -}); - -test('from module - move file to parent folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/module.py -//// def getFilename(path): -//// [|/*marker*/pass|] - -// @filename: test.py -//// from [|common.module|] import getFilename - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'moduleRenamed.py')}`, - 'common.module', - 'moduleRenamed' - ); -}); - -test('from module - move file to sibling folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/module.py -//// def getFilename(path): -//// [|/*marker*/pass|] - -// @filename: common1/__init__.py -//// # empty - -// @filename: test.py -//// from [|common.module|] import getFilename - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'common1', 'moduleRenamed.py')}`, - 'common.module', - 'common1.moduleRenamed' - ); -}); - -test('import name - move file to nested folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from [|{|"r":"common.sub"|}common|] import [|{|"r":"moduleRenamed"|}module|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('import name - move file to parent folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/sub/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from [|{|"r":"common"|}common.sub|] import [|{|"r":"moduleRenamed"|}module|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'moduleRenamed.py')}`); -}); - -test('import name - move file to sibling folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common1/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from [|{|"r":"common1"|}common|] import [|{|"r":"moduleRenamed"|}module|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'common1', 'moduleRenamed.py')}` - ); -}); - -test('import alias - different name', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from [|{|"r":"common.sub"|}common|] import [|{|"r":"moduleRenamed"|}module|] as m -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('import alias - same name', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/sub/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from [|{|"r":"common"|}common.sub|] import [|{|"r":"moduleRenamed"|}module|] as [|{|"r":"moduleRenamed"|}module|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'moduleRenamed.py')}`); -}); - -test('import multiple names', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import [|{|"r":""|}module, |]sub[|{|"r":"!n!from common.sub import moduleRenamed"|}|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('import multiple names with multiple deletions - edge case', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import sub[|{|"r":""|}, module, module|][|{|"r":"!n!from common.sub import moduleRenamed"|}|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - -// @filename: test2.py -//// from common import [|{|"r":""|}module, |]sub[|{|"r":""|}, module|][|{|"r":"!n!from common.sub import moduleRenamed"|}|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - -// @filename: test3.py -//// [|{|"r":""|}from common import module, module[|{|"r":"!n!from common.sub import moduleRenamed"|}|] -//// |][|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('import multiple names with alias 1', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import [|{|"r":""|}module as m, |]sub[|{|"r":"!n!from common.sub import moduleRenamed as m"|}|] -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('import multiple names with alias 2', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import [|{|"r":""|}module as module, |]sub[|{|"r":"!n!from common.sub import moduleRenamed as moduleRenamed"|}|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('import multiple names with existing from import statement', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/sub/existing.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import [|{|"r":""|}module, |]sub -//// from common.sub import existing[|{|"r":", moduleRenamed"|}|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('import multiple names with existing from import statement with multiple deletion - edge case', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/sub/existing.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import [|{|"r":""|}module, module, |]sub -//// from common.sub import existing[|{|"r":", moduleRenamed"|}|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - -// @filename: test2.py -//// [|{|"r":""|}from common import module, module -//// |]from common.sub import existing[|{|"r":", moduleRenamed"|}|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('import multiple names with existing from import statement with alias 1', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/sub/existing.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import [|{|"r":""|}module as m, |]sub -//// from common.sub import existing[|{|"r":", moduleRenamed as m"|}|] -//// -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('import multiple names with existing from import statement with alias 2', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/sub/existing.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import [|{|"r":""|}module as module, |]sub -//// from common.sub import existing[|{|"r":", moduleRenamed as moduleRenamed"|}|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('from module multiple import names', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/module.py -//// def getFilename(path): -//// [|/*marker*/pass|] -//// -//// def foo(): -//// pass - -// @filename: test.py -//// from [|common.module|] import getFilename, foo - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'moduleRenamed.py')}`, - 'common.module', - 'moduleRenamed' - ); -}); - -test('from module relative path - same folder', () => { - const code = ` -// @filename: module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test.py -//// from . import [|{|"r":"moduleRenamed"|}module|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moduleRenamed.py')}`); -}); - -test('from module relative path - nested folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test.py -//// from [|{|"r":".common"|}.|] import [|{|"r":"moduleRenamed"|}module|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'common', 'moduleRenamed.py')}`); -}); - -test('from module relative path - parent folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test.py -//// from [|{|"r":"."|}.common|] import [|{|"r":"moduleRenamed"|}module|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'moduleRenamed.py')}`); -}); - -test('from module relative path - sibling folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common1/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test.py -//// from [|{|"r":".common1"|}.common|] import [|{|"r":"moduleRenamed"|}module|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'common1', 'moduleRenamed.py')}` - ); -}); - -test('from module relative path - more complex', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: base/nested/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: base/nested/test.py -//// from [|{|"r":"...common.sub"|}...common|] import [|{|"r":"moduleRenamed"|}module|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('from module relative path with multiple import names', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: base/nested/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: base/nested/test.py -//// [|{|"r":"from ...common.sub import moduleRenamed!n!"|}|]from ...common import [|{|"r":""|}module, |]sub -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('from module relative path with multiple import names and alias 1', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: base/nested/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: base/nested/test.py -//// [|{|"r":"from ...common.sub import moduleRenamed as m!n!"|}|]from ...common import [|{|"r":""|}module as m, |]sub -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('from module relative path with multiple import names and alias 2', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: base/nested/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: base/nested/test.py -//// [|{|"r":"from ...common.sub import moduleRenamed as moduleRenamed!n!"|}|]from ...common import [|{|"r":""|}module as module, |]sub -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('from module relative path with merging with existing import', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/sub/existing.py -//// # empty - -// @filename: base/nested/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: base/nested/test.py -//// from ...common import [|{|"r":""|}module, |]sub -//// from ...common.sub import existing[|{|"r":", moduleRenamed"|}|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('from module relative path with merging with existing import with alias 1', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/sub/existing.py -//// # empty - -// @filename: base/nested/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: base/nested/test.py -//// from ...common import [|{|"r":""|}module as m, |]sub -//// from ...common.sub import existing[|{|"r":", moduleRenamed as m"|}|] -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('from module relative path with merging with existing import with alias 2', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// # empty - -// @filename: common/sub/existing.py -//// # empty - -// @filename: base/nested/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: base/nested/test.py -//// from ...common import [|{|"r":""|}module as module, |]sub -//// from ...common.sub import existing[|{|"r":", moduleRenamed as moduleRenamed"|}|] -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('from import move to current folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/module.py -//// def getFilename(path): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from [|{|"r":"."|}common|] import ([|{|"r":"renamedModule"|}module|]) -//// -//// [|{|"r":"renamedModule"|}module|].getFilename("c") - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'renamedModule.py')}`); -}); - -test('re-exported symbols', () => { - const code = ` -// @filename: common/__init__.py -//// from [|{|"r":"common"|}common.io.nest|] import [|{|"r":"renamedModule"|}module|] as [|{|"r":"renamedModule"|}module|] - -// @filename: common/io/__init__.py -//// from [|{|"r":".."|}.nest|] import [|{|"r":"renamedModule"|}module|] as [|{|"r":"renamedModule"|}module|] - -// @filename: common/io/nest/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: reexport.py -//// from common import [|{|"r":"renamedModule"|}module|] -//// __all__ = ["[|{|"r":"renamedModule"|}module|]"] - -// @filename: test1.py -//// from common import [|{|"r":"renamedModule"|}module|] -//// [|{|"r":"renamedModule"|}module|].foo() - -// @filename: test2.py -//// from common.io import [|{|"r":"renamedModule"|}module|] -//// [|{|"r":"renamedModule"|}module|].foo() - -// @filename: test3.py -//// from reexport import [|{|"r":"renamedModule"|}module|] -//// [|{|"r":"renamedModule"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', '..', 'renamedModule.py')}`); -}); - -test('new import with existing import with wildcard', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/sub/__init__.py -//// class A: ... -//// __all__ = ["A"] - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from common import [|{|"r":""|}module, |]sub -//// from common.sub import *[|{|"r":"!n!from common.sub import moduleRenamed"|}|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`); -}); - -test('simple rename of relative module', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: common/test1.py -//// from [|.module|] import foo - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'moduleRenamed.py')}`, - '.module', - '.moduleRenamed' - ); -}); - -test('relative module move', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/module.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: common/test1.py -//// from [|.module|] import foo - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'sub', 'moduleRenamed.py')}`, - '.module', - '.sub.moduleRenamed' - ); -}); - -test('__init__ relative module move', () => { - const code = ` -// @filename: common/__init__.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from [|.common|] import foo - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'moved', '__init__.py')}`, - '.common', - '.common.moved' - ); -}); - -test('__init__ relative module rename', () => { - const code = ` -// @filename: common/__init__.py -//// def foo(): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from [|.common|] import foo - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'moved', '__init__.py')}`, - '.common', - '.moved' - ); -}); diff --git a/packages/pyright-internal/src/tests/renameModule.imports.test.ts b/packages/pyright-internal/src/tests/renameModule.imports.test.ts deleted file mode 100644 index ec112227f..000000000 --- a/packages/pyright-internal/src/tests/renameModule.imports.test.ts +++ /dev/null @@ -1,450 +0,0 @@ -/* - * renameModule.imports.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Tests Program.RenameModule - */ - -import { combinePaths, getDirectoryPath } from '../common/pathUtils'; -import { parseAndGetTestState } from './harness/fourslash/testState'; -import { testRenameModule } from './renameModuleTestUtils'; - -test('rename just file name', () => { - const code = ` -// @filename: empty.py -//// # empty - -// @filename: pathUtils.py -//// def getFilename(path): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// import [|pathUtils|] as p -//// -//// p.getFilename("c") - -// @filename: test2.py -//// import [|pathUtils|] -//// -//// [|pathUtils|].getFilename("c") - -// @filename: test3.py -//// import [|pathUtils|] as [|pathUtils|], empty -//// -//// [|pathUtils|].getFilename("c") - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`, - 'pathUtils', - 'renamedModule' - ); -}); - -test('import - move file to nested folder', () => { - const code = ` -// @filename: common/__init__.py -//// def foo(): -//// pass - -// @filename: module.py -//// [|/*marker*/|] -//// # empty - -// @filename: test.py -//// import [|{|"r":"common.moduleRenamed as moduleRenamed"|}module|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'common', 'moduleRenamed.py')}`); -}); - -test('import - move file to parent folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/module.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test.py -//// import [|common.module|] -//// -//// [|common.module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'moduleRenamed.py')}`, - 'common.module', - 'moduleRenamed' - ); -}); - -test('import - move file to sibling folder', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: common/module.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: common1/__init__.py -//// # empty - -// @filename: test.py -//// import [|common.module|] -//// -//// [|common.module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'common1', 'moduleRenamed.py')}`, - 'common.module', - 'common1.moduleRenamed' - ); -}); - -test('import alias move up file', () => { - const code = ` -// @filename: common/__init__.py -//// def foo(): -//// pass - -// @filename: module.py -//// [|/*marker*/|] -//// # empty - -// @filename: test.py -//// import [|{|"r":"common.moduleRenamed"|}module|] as [|{|"r":"moduleRenamed"|}module|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - -// @filename: test1.py -//// import [|{|"r":"common.moduleRenamed"|}module|] as m -//// -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'common', 'moduleRenamed.py')}`, - 'module' - ); -}); - -test('import alias move down file', () => { - const code = ` -// @filename: common/__init__.py -//// def foo(): -//// pass - -// @filename: common/module.py -//// [|/*marker*/|] -//// # empty - -// @filename: test.py -//// import [|{|"r":"moduleRenamed"|}common.module|] as [|{|"r":"moduleRenamed"|}module|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - -// @filename: test1.py -//// import [|{|"r":"moduleRenamed"|}common.module|] as m -//// -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'moduleRenamed.py')}`); -}); - -test('import alias rename file', () => { - const code = ` -// @filename: module.py -//// [|/*marker*/|] -//// # empty - -// @filename: test.py -//// import [|{|"r":"moduleRenamed"|}module|] as [|{|"r":"moduleRenamed"|}module|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - -// @filename: test1.py -//// import [|{|"r":"moduleRenamed"|}module|] as m -//// -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moduleRenamed.py')}`, 'module'); -}); - -test('import alias move sibling file', () => { - const code = ` -// @filename: common1/__init__.py -//// def foo(): -//// pass - -// @filename: common2/__init__.py -//// def foo(): -//// pass - -// @filename: common1/module.py -//// [|/*marker*/|] -//// # empty - -// @filename: test.py -//// import [|{|"r":"common2.moduleRenamed"|}common1.module|] as [|{|"r":"moduleRenamed"|}module|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - -// @filename: test1.py -//// import [|{|"r":"common2.moduleRenamed"|}common1.module|] as m -//// -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'common2', 'moduleRenamed.py')}` - ); -}); - -test('re-export import alias through __all__', () => { - const code = ` -// @filename: common1/__init__.py -//// import [|{|"r":"common2.moduleRenamed as moduleRenamed"|}module|] -//// __all__ = ["[|{|"r":"moduleRenamed"|}module|]"] - -// @filename: common2/__init__.py -//// def foo(): -//// pass - -// @filename: module.py -//// [|/*marker*/|] -//// # empty - -// @filename: test.py -//// from common1 import [|{|"r":"moduleRenamed"|}module|] as [|{|"r":"moduleRenamed"|}module|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - -// @filename: test1.py -//// import [|{|"r":"common2.moduleRenamed"|}module|] as m -//// -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'common2', 'moduleRenamed.py')}`); -}); - -test('re-export import alias', () => { - const code = ` -// @filename: common1/__init__.py -//// import [|{|"r":"common2.moduleRenamed"|}module|] as [|{|"r":"moduleRenamed"|}module|] - -// @filename: common2/__init__.py -//// def foo(): -//// pass - -// @filename: module.py -//// [|/*marker*/|] -//// # empty - -// @filename: test.py -//// from common1 import [|{|"r":"moduleRenamed"|}module|] as [|{|"r":"moduleRenamed"|}module|] -//// -//// [|{|"r":"moduleRenamed"|}module|].foo() - -// @filename: test1.py -//// import [|{|"r":"common2.moduleRenamed"|}module|] as m -//// -//// m.foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'common2', 'moduleRenamed.py')}`); -}); - -test('update module symbol exposed through call 1', () => { - const code = ` -// @filename: lib.py -//// import reexport -//// -//// def foo(): -//// return reexport - -// @filename: reexport.py -//// import [|{|"r":"moduleRenamed"|}module|] as [|{|"r":"moduleRenamed"|}module|] - -// @filename: module.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test.py -//// from lib import foo -//// -//// foo().[|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moduleRenamed.py')}`); -}); - -test('update module symbol exposed through call 2', () => { - const code = ` -// @filename: lib.py -//// import reexport -//// -//// def foo(): -//// return reexport - -// @filename: reexport.py -//// import [|{|"r":"common.moduleRenamed"|}module|] as [|{|"r":"moduleRenamed"|}module|] - -// @filename: module.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test.py -//// from lib import foo -//// -//// foo().[|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'common', 'moduleRenamed.py')}`); -}); - -test('update module symbol exposed through __all__ 1', () => { - const code = ` -// @filename: lib.py -//// import reexport -//// -//// def foo(): -//// return reexport - -// @filename: reexport.py -//// import [|{|"r":"moduleRenamed"|}module|] -//// __all__ = ["[|{|"r":"moduleRenamed"|}module|]"] - -// @filename: module.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test.py -//// from lib import foo -//// -//// foo().[|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moduleRenamed.py')}`); -}); - -test('update module symbol exposed through __all__ 2', () => { - const code = ` -// @filename: lib.py -//// import reexport -//// -//// def foo(): -//// return reexport - -// @filename: reexport.py -//// import [|{|"r":"common.moduleRenamed as moduleRenamed"|}module|] -//// __all__ = ["[|{|"r":"moduleRenamed"|}module|]"] - -// @filename: module.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test.py -//// from lib import foo -//// -//// foo().[|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'common', 'moduleRenamed.py')}`); -}); - -test('update module symbol exposed through __all__ 3', () => { - const code = ` -// @filename: lib.py -//// import reexport -//// -//// def foo(): -//// return reexport - -// @filename: reexport.py -//// import [|{|"r":"moduleRenamed"|}common.module|] as [|{|"r":"moduleRenamed"|}module|] -//// __all__ = ["[|{|"r":"moduleRenamed"|}module|]"] - -// @filename: common/module.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test.py -//// from lib import foo -//// -//// foo().[|{|"r":"moduleRenamed"|}module|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'moduleRenamed.py')}`); -}); diff --git a/packages/pyright-internal/src/tests/renameModule.misc.test.ts b/packages/pyright-internal/src/tests/renameModule.misc.test.ts deleted file mode 100644 index 8010a2312..000000000 --- a/packages/pyright-internal/src/tests/renameModule.misc.test.ts +++ /dev/null @@ -1,765 +0,0 @@ -/* - * renameModule.misc.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Tests Program.RenameModule - */ - -import { CancellationToken } from 'vscode-languageserver'; - -import { assert } from '../common/debug'; -import { combinePaths, getDirectoryPath } from '../common/pathUtils'; -import { parseAndGetTestState } from './harness/fourslash/testState'; -import { testRenameModule } from './renameModuleTestUtils'; - -test('from import with paren', () => { - const code = ` -// @filename: module.py -//// def getFilename(path): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from . import ([|module|]) -//// -//// [|module|].getFilename("c") - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`, - 'module', - 'renamedModule' - ); -}); - -test('from import with paren with alias', () => { - const code = ` -// @filename: module.py -//// def getFilename(path): -//// [|/*marker*/pass|] - -// @filename: test1.py -//// from . import ([|module|] as [|module|]) -//// -//// [|module|].getFilename("c") - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`, - 'module', - 'renamedModule' - ); -}); - -test('from import with paren multiple import names', () => { - const code = ` -// @filename: common/__init__.py -//// # empty - -// @filename: module.py -//// def getFilename(path): -//// [|/*marker*/pass|] - -// @filename: module2.py -//// # empty - -// @filename: test1.py -//// [|{|"r":"from .common import renamedModule as renamedModule!n!"|}|]from . import ([|{|"r":""|}module as module, |]module2) -//// -//// [|{|"r":"renamedModule"|}module|].getFilename("c") - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'common', 'renamedModule.py')}`); -}); - -test('rename - circular references', () => { - const code = ` -// @filename: module1.py -//// from . import [|mySelf|] as [|mySelf|] - -// @filename: mySelf.py -//// from module1 import * -//// [|/*marker*/mySelf|].foo() -//// -//// def foo(): -//// pass - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`, - 'mySelf', - 'renamedModule' - ); -}); - -test('move - circular references', () => { - const code = ` -// @filename: module1.py -//// from [|{|"r":".common"|}.|] import [|{|"r":"renamedModule"|}mySelf|] as [|{|"r":"renamedModule"|}mySelf|] - -// @filename: common/__init__.py -//// # empty - -// @filename: mySelf.py -//// [|/*marker*/|] -//// from module1 import * -//// [|{|"r":"renamedModule"|}mySelf|].foo() -//// def foo(): -//// pass - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'common', 'renamedModule.py')}`); -}); - -test('py and pyi file update', () => { - const code = ` -// @filename: module.py -//// def getFilename(path): -//// pass - -// @filename: module.pyi -//// [|/*marker*/|] -//// def getFilename(path): ... - -// @filename: test1.py -//// from . import [|module|] as [|module|] -//// -//// [|module|].getFilename("c") - -// @filename: test1.pyi -//// from . import [|module|] as [|module|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'renamedModule.pyi')}`, - 'module', - 'renamedModule' - ); -}); - -test('py and pyi file update from py', () => { - // No reference. if both py and pyi exist, then given file must point to pyi not py. - const code = ` -// @filename: module.py -//// [|/*marker*/|] -//// def getFilename(path): -//// pass - -// @filename: module.pyi -//// def getFilename(path): ... - -// @filename: test1.py -//// from . import module -//// -//// module.getFilename("c") - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`); -}); - -test('handle __all__ reference', () => { - const code = ` -// @filename: module.py -//// [|/*marker*/|] -//// def getFilename(path): -//// pass - -// @filename: test1.py -//// from . import [|module|] -//// -//// __all__ = [ "[|module|]" ] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`, - 'module', - 'renamedModule' - ); -}); - -test('handle __all__ re-export', () => { - const code = ` -// @filename: module.py -//// [|/*marker*/|] -//// def foo(path): -//// pass - -// @filename: common/__init__.py -//// # empty - -// @filename: test1.py -//// from [|{|"r":".common"|}.|] import [|{|"r":"renamedModule"|}module|] -//// -//// __all__ = [ "[|{|"r":"renamedModule"|}module|]" ] - -// @filename: test2.py -//// from test1 import [|{|"r":"renamedModule"|}module|] -//// -//// [|renamedModule|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'common', 'renamedModule.py')}`); -}); - -test('__init__.py rename', () => { - const code = ` -// @filename: common/__init__.py -//// [|/*marker*/|] -//// def getFilename(path): -//// pass - -// @filename: test1.py -//// from [|common|] import getFilename - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`, - 'common', - 'common.renamedModule' - ); -}); - -test('__init__.py rename import', () => { - const code = ` -// @filename: common/__init__.py -//// [|/*marker*/|] - -// @filename: test1.py -//// import [|common|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`, - 'common', - 'common.renamedModule as renamedModule' - ); -}); - -test('__init__.py move to nested folder', () => { - const code = ` -// @filename: common/__init__.py -//// [|/*marker*/|] -//// def getFilename(path): -//// pass - -// @filename: test1.py -//// from [|common|] import getFilename - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'nested', 'renamedModule.py')}`, - 'common', - 'common.nested.renamedModule' - ); -}); - -test('__init__.py move to nested folder with same name', () => { - const code = ` -// @filename: common/__init__.py -//// [|/*marker*/|] -//// def getFilename(path): -//// pass - -// @filename: test1.py -//// from [|common|] import getFilename - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), 'nested', '__init__.py')}`, - 'common', - 'common.nested' - ); -}); - -test('__init__.py move to parent folder', () => { - const code = ` -// @filename: common/__init__.py -//// [|/*marker*/|] -//// def getFilename(path): -//// pass - -// @filename: test1.py -//// from [|common|] import getFilename - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule( - state, - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', 'renamedModule.py')}`, - 'common', - 'renamedModule' - ); -}); - -test('__init__.py move to parent folder with same name 1', () => { - const code = ` -// @filename: common/__init__.py -//// [|/*marker*/|] -//// def getFilename(path): -//// pass - -// @filename: test1.py -//// from [|common|] import getFilename - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - const edits = state.program.renameModule( - fileName, - `${combinePaths(getDirectoryPath(fileName), '..', '__init__.py')}`, - CancellationToken.None - ); - assert(!edits); -}); - -test('__init__.py with alias', () => { - const code = ` -// @filename: common/__init__.py -//// [|/*marker*/|] -//// def getFilename(path): -//// pass - -// @filename: test1.py -//// from [|{|"r":".common"|}.|] import [|{|"r":"renamedModule"|}common|] as [|{|"r":"renamedModule"|}common|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`); -}); - -test('__init__.py import with alias', () => { - const code = ` -// @filename: common/__init__.py -//// [|/*marker*/|] -//// def getFilename(path): -//// pass - -// @filename: test1.py -//// import [|{|"r":"common.renamedModule"|}common|] as [|{|"r":"renamedModule"|}common|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`); -}); - -test('__init__.py rename complex', () => { - const code = ` -// @filename: common/__init__.py -//// import [|{|"r":"common.nested.renamedModule"|}common.nested.lib|] as [|{|"r":"renamedModule"|}lib|] -//// __all__ = ["[|{|"r":"renamedModule"|}lib|]"] - -// @filename: reexport.py -//// from common import [|{|"r":"renamedModule"|}lib|] as [|{|"r":"renamedModule"|}lib|] - -// @filename: common/nested/__init__.py -//// # empty - -// @filename: common/nested/lib/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test1.py -//// import common -//// common.[|{|"r":"renamedModule"|}lib|].foo() - -// @filename: test2.py -//// from reexport import [|{|"r":"renamedModule"|}lib|] -//// [|{|"r":"renamedModule"|}lib|].foo() - -// @filename: test3.py -//// from common import * -//// [|{|"r":"renamedModule"|}lib|].foo() - -// @filename: test4.py -//// from reexport import * -//// [|{|"r":"renamedModule"|}lib|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'renamedModule.py')}`); -}); - -test('__init__.py moved to parent folder with same name 2', () => { - const code = ` -// @filename: common/__init__.py -//// import [|{|"r":"common.nested"|}common.nested.lib|] as [|{|"r":"nested"|}lib|] -//// __all__ = ["[|{|"r":"nested"|}lib|]"] - -// @filename: reexport.py -//// from common import [|{|"r":"nested"|}lib|] as [|{|"r":"nested"|}lib|] - -// @filename: common/nested/lib/__init__.py -//// [|/*marker*/|] -//// def foo(): -//// pass - -// @filename: test1.py -//// import common -//// common.[|{|"r":"nested"|}lib|].foo() - -// @filename: test2.py -//// from reexport import [|{|"r":"nested"|}lib|] -//// [|{|"r":"nested"|}lib|].foo() - -// @filename: test3.py -//// from common import * -//// [|{|"r":"nested"|}lib|].foo() - -// @filename: test4.py -//// from reexport import * -//// [|{|"r":"nested"|}lib|].foo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', '__init__.py')}`); -}); - -test('__init__.py changes middle of dotted name', () => { - const code = ` -// @filename: common/__init__.py -//// # empty [|/*marker*/|] -//// from common.nested import lib as lib - -// @filename: common/nested/lib.py -//// def libFoo(): -//// pass - -// @filename: common/nested/__init__.py -//// def nestedFoo(): -//// pass - -// @filename: test1.py -//// import common.nested.lib -//// common.nested.lib.libFoo() - -// @filename: test2.py -//// from common import nested -//// nested.nestedFoo() - -// @filename: test3.py -//// from [|{|"r":"common.renamedModule"|}common|] import * -//// lib.libFoo() - -// @filename: test4.py -//// from [|{|"r":"common.renamedModule"|}common|] import lib -//// lib.libFoo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`); -}); - -test('__init__.py - split from import statement', () => { - const code = ` -// @filename: common/__init__.py -//// # empty [|/*marker*/|] -//// from common.nested import lib as lib - -// @filename: common/nested/lib.py -//// def libFoo(): -//// pass - -// @filename: common/nested/__init__.py -//// def nestedFoo(): -//// pass - -// @filename: test1.py -//// from common import nested[|{|"r":""|}, lib|][|{|"r":"!n!from common.renamedModule import lib"|}|] -//// nested.nestedFoo() -//// lib.libFoo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`); -}); - -test('__init__.py - split from import statement with multiple names', () => { - const code = ` -// @filename: common/__init__.py -//// # empty [|/*marker*/|] -//// from common.nested import lib as lib -//// def commonFoo(): -//// pass - -// @filename: common/nested/lib.py -//// def libFoo(): -//// pass - -// @filename: common/nested/__init__.py -//// def nestedFoo(): -//// pass - -// @filename: test1.py -//// from common import nested[|{|"r":""|}, lib, commonFoo|][|{|"r":"!n!from common.renamedModule import commonFoo, lib"|}|] -//// nested.nestedFoo() -//// lib.libFoo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`); -}); - -test('__init__.py - merge from import statement with multiple names', () => { - const code = ` -// @filename: common/nested/__init__.py -//// # empty [|/*marker*/|] -//// from common.nested2 import lib as lib -//// def commonFoo(): -//// pass - -// @filename: common/nested/sub.py -//// # empty - -// @filename: common/empty.py -//// # empty - -// @filename: common/nested2/lib.py -//// def libFoo(): -//// pass - -// @filename: test1.py -//// from common.nested import [|{|"r":""|}commonFoo, lib, |]sub -//// from common import [|{|"r":"commonFoo, "|}|]empty[|{|"r":", lib"|}|] -//// -//// nested.commonFoo() -//// lib.libFoo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', '__init__.py')}`); -}); - -test('__init__.py - split from import statement with multiple names with circular reference', () => { - const code = ` -// @filename: common/__init__.py -//// # empty -//// from common.nested import lib as lib -//// from common.nested import [|/*marker*/{|"r":"renamedModule"|}common|] as [|{|"r":"renamedModule"|}common|] -//// -//// def commonFoo(): -//// pass - -// @filename: common/nested/lib.py -//// def libFoo(): -//// pass - -// @filename: common/nested/__init__.py -//// from [|{|"r":".."|}...|] import [|{|"r":"renamedModule"|}common|] as [|{|"r":"renamedModule"|}common|] - -// @filename: test1.py -//// from common import nested[|{|"r":""|}, lib, common|][|{|"r":"!n!from common.renamedModule import lib, renamedModule"|}|] -//// nested.[|{|"r":"renamedModule"|}common|].commonFoo() -//// [|{|"r":"renamedModule"|}common|].commonFoo() -//// lib.libFoo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'renamedModule.py')}`); -}); - -test('__init__.py - merge from import statement with multiple names with circular reference', () => { - const code = ` -// @filename: common/nested/__init__.py -//// # empty -//// from common.nested2 import lib as lib -//// from common.nested2 import [|/*marker*/{|"r":"common"|}nested|] as [|{|"r":"common"|}nested|] -//// -//// def commonFoo(): -//// pass - -// @filename: common/nested/sub.py -//// # empty - -// @filename: common/empty.py -//// # empty - -// @filename: common/nested2/__init__.py -//// from [|{|"r":"..."|}..|] import [|{|"r":"common"|}nested|] as [|{|"r":"common"|}nested|] - -// @filename: common/nested2/lib.py -//// def libFoo(): -//// pass - -// @filename: test1.py -//// from common.nested import [|{|"r":""|}nested, lib, |]sub -//// from common import [|{|"r":"common, "|}|]empty[|{|"r":", lib"|}|] -//// -//// [|{|"r":"common"|}nested|].commonFoo() -//// lib.libFoo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', '__init__.py')}`); -}); - -test('__init__.py - merge from import statement with multiple names with circular reference with only name change', () => { - const code = ` -// @filename: common/nested/__init__.py -//// # empty -//// from common.nested2 import lib as lib -//// from common.nested2 import [|/*marker*/{|"r":"renamedModule"|}nested|] as [|{|"r":"renamedModule"|}nested|] -//// -//// def commonFoo(): -//// pass - -// @filename: common/nested/sub.py -//// # empty - -// @filename: common/empty.py -//// # empty - -// @filename: common/nested2/__init__.py -//// from .. import [|{|"r":"renamedModule"|}nested|] as [|{|"r":"renamedModule"|}nested|] - -// @filename: common/nested2/lib.py -//// def libFoo(): -//// pass - -// @filename: test1.py -//// from common.nested import [|{|"r":""|}nested, lib, |]sub[|{|"r":"!n!from common.renamedModule import lib, renamedModule"|}|] -//// -//// [|{|"r":"renamedModule"|}nested|].commonFoo() -//// lib.libFoo() - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'renamedModule.py')}`); -}); - -test('add and remove consecutive edits', () => { - const code = ` -// @filename: a1.py -//// # empty [|/*marker*/|] - -// @filename: a3.py -//// # empty - -// @filename: test1.py -//// from . import [|{|"r":"a2"|}a1|], a3 - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'a2.py')}`); -}); - -test('add and remove consecutive edits with alias 1', () => { - const code = ` -// @filename: a1.py -//// # empty [|/*marker*/|] - -// @filename: a3.py -//// # empty - -// @filename: test1.py -//// from . import [|{|"r":"a2"|}a1|] as [|{|"r":"a2"|}a1|], a3 - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'a2.py')}`); -}); - -test('add and remove consecutive edits with alias 2', () => { - const code = ` -// @filename: a1.py -//// # empty [|/*marker*/|] - -// @filename: a3.py -//// # empty - -// @filename: test1.py -//// from . import [|{|"r":"a2"|}a1|] as a, a3 - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'a2.py')}`); -}); diff --git a/packages/pyright-internal/src/tests/renameModule.relativePath.test.ts b/packages/pyright-internal/src/tests/renameModule.relativePath.test.ts deleted file mode 100644 index be4a05667..000000000 --- a/packages/pyright-internal/src/tests/renameModule.relativePath.test.ts +++ /dev/null @@ -1,277 +0,0 @@ -/* - * renameModule.misc.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Tests Program.RenameModule - */ - -import { combinePaths, getDirectoryPath } from '../common/pathUtils'; -import { parseAndGetTestState } from './harness/fourslash/testState'; -import { testRenameModule } from './renameModuleTestUtils'; - -test('relative path for self', () => { - const code = ` -// @filename: self.py -//// from .self import foo -//// def foo(): -//// [|/*marker*/pass|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'self.py')}`); -}); - -test('relative path for self - different name', () => { - const code = ` -// @filename: self.py -//// from [|{|"r":".renamedModule"|}.self|] import foo -//// def foo(): -//// [|/*marker*/pass|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'renamedModule.py')}`); -}); - -test('relative path for self - __init__', () => { - const code = ` -// @filename: common/__init__.py -//// from . import foo -//// def foo(): -//// [|/*marker*/pass|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', '__init__.py')}`); -}); - -test('relative path for self - __init__ different name', () => { - const code = ` -// @filename: common/__init__.py -//// from [|{|"r":".renamedModule"|}.|] import foo -//// def foo(): -//// [|/*marker*/pass|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'renamedModule.py')}`); -}); - -test('relative path for self - __init__ folder name', () => { - const code = ` -// @filename: common/__init__.py -//// from [|{|"r":"."|}..common|] import foo -//// def foo(): -//// [|/*marker*/pass|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', '__init__.py')}`); -}); - -test('relative path for self - __init__ different folder name', () => { - const code = ` -// @filename: common/__init__.py -//// from [|{|"r":".renamedModule"|}..common|] import foo -//// def foo(): -//// [|/*marker*/pass|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'renamedModule.py')}`); -}); - -test('relative path for self - import name', () => { - const code = ` -// @filename: self.py -//// from . import self -//// [|/*marker*/|] - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'self.py')}`); -}); - -test('relative path for modules', () => { - const code = ` -// @filename: self.py -//// from [|{|"r":".."|}.|] import module -//// [|/*marker*/|] - -// @filename: module.py -//// # empty - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'self.py')}`); -}); - -test('relative path to self with multiple import names', () => { - const code = ` -// @filename: common/self.py -//// [|{|"r":"from . import self!n!"|}|]from [|{|"r":".."|}.|] import [|{|"r":""|}self, |]module, foo -//// [|/*marker*/|] - -// @filename: common/module.py -//// # empty - -// @filename: common/__init__.py -//// def foo(): -//// pass - - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'self.py')}`); -}); - -test('relative path to module - move up', () => { - const code = ` -// @filename: common/test.py -//// from [|{|"r":"...sub.foo"|}..sub.foo|] import bar -//// [|/*marker*/|] - -// @filename: sub/foo.py -//// def bar(): -//// pass - -// @filename: sub/__init__.py -//// # empty - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'self.py')}`); -}); - -test('relative path to module - move down', () => { - const code = ` -// @filename: common/test.py -//// from [|{|"r":".sub.foo"|}..sub.foo|] import bar -//// [|/*marker*/|] - -// @filename: sub/foo.py -//// def bar(): -//// pass - -// @filename: sub/__init__.py -//// # empty - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'self.py')}`); -}); - -test('relative path to module - sibling', () => { - const code = ` -// @filename: common/test.py -//// from ..sub.foo import bar -//// [|/*marker*/|] - -// @filename: sub/foo.py -//// def bar(): -//// pass - -// @filename: sub/__init__.py -//// # empty - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), '..', 'moved', 'self.py')}`); -}); - -test('relative path to self __init__ with sub modules and symbol with dots', () => { - const code = ` -// @filename: common/__init__.py -//// [|{|"r":"from .self import bar!n!"|}|]from [|{|"r":".."|}.|] import module[|{|"r":""|}, bar|] -//// [|/*marker*/|] -//// def bar(): -//// pass - -// @filename: common/module.py -//// # empty - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'self.py')}`); -}); - -test('relative path to self __init__ with sub modules and symbol with dotted name', () => { - const code = ` -// @filename: common/__init__.py -//// [|{|"r":"from common.moved.self import bar!n!"|}|]from [|{|"r":".."|}..common|] import module[|{|"r":""|}, bar|] -//// [|/*marker*/|] -//// def bar(): -//// pass - -// @filename: common/module.py -//// # empty - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', 'self.py')}`); -}); - -test('relative path to self __init__ with sub modules and symbol with dots to __init__', () => { - const code = ` -// @filename: common/__init__.py -//// [|{|"r":"from . import bar!n!"|}|]from [|{|"r":".."|}.|] import module[|{|"r":""|}, bar|] -//// [|/*marker*/|] -//// def bar(): -//// pass - -// @filename: common/module.py -//// # empty - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', '__init__.py')}`); -}); - -test('relative path to self __init__ with sub modules and symbol with dotted name to __init__', () => { - const code = ` -// @filename: common/__init__.py -//// [|{|"r":"from common.moved import bar!n!"|}|]from [|{|"r":".."|}..common|] import module[|{|"r":""|}, bar|] -//// [|/*marker*/|] -//// def bar(): -//// pass - -// @filename: common/module.py -//// # empty - `; - - const state = parseAndGetTestState(code).state; - const fileName = state.getMarkerByName('marker').fileName; - - testRenameModule(state, fileName, `${combinePaths(getDirectoryPath(fileName), 'moved', '__init__.py')}`); -}); diff --git a/packages/pyright-internal/src/tests/renameModuleTestUtils.ts b/packages/pyright-internal/src/tests/renameModuleTestUtils.ts deleted file mode 100644 index 2faf93ab8..000000000 --- a/packages/pyright-internal/src/tests/renameModuleTestUtils.ts +++ /dev/null @@ -1,137 +0,0 @@ -/* - * renameModuleTestUtils.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Test helpers for rename module tests - */ - -import assert from 'assert'; -import { CancellationToken } from 'vscode-languageserver'; - -import { appendArray, createMapFromItems } from '../common/collectionUtils'; -import { Diagnostic } from '../common/diagnostic'; -import { DiagnosticRule } from '../common/diagnosticRules'; -import { FileEditActions } from '../common/editAction'; -import { Position } from '../common/textRange'; -import { ImportFormat } from '../languageService/autoImporter'; -import { Range } from './harness/fourslash/fourSlashTypes'; -import { TestState } from './harness/fourslash/testState'; -import { - applyFileOperations, - convertFileEditActionToString, - convertRangeToFileEditAction, - verifyEdits, -} from './testStateUtils'; - -export function testMoveSymbolAtPosition( - state: TestState, - filePath: string, - newFilePath: string, - position: Position, - text?: string, - replacementText?: string, - expectsMissingImport = false -) { - const actions = state.program.moveSymbolAtPosition( - filePath, - newFilePath, - position, - { importFormat: ImportFormat.Absolute }, - CancellationToken.None - ); - assert(actions); - - const ranges: Range[] = []; - if (text !== undefined) { - appendArray(ranges, state.getRangesByText().get(text)!); - } else { - appendArray( - ranges, - state.getRanges().filter((r) => !!r.marker?.data) - ); - } - - assert.strictEqual( - actions.edits.length, - ranges.length, - `${actions.edits.map((e) => convertFileEditActionToString(e)).join('|')} vs ${ranges - .map((r) => convertRangeToFileEditAction(state, r, replacementText)) - .map((e) => convertFileEditActionToString(e)) - .join('|')}` - ); - - _verifyFileOperations(state, actions, ranges, replacementText, expectsMissingImport); -} - -export function testRenameModule( - state: TestState, - filePath: string, - newFilePath: string, - text?: string, - replacementText?: string -) { - const editActions = state.program.renameModule(filePath, newFilePath, CancellationToken.None); - assert(editActions); - - const ranges: Range[] = []; - if (text !== undefined) { - appendArray(ranges, state.getRangesByText().get(text)!); - } else { - appendArray( - ranges, - state.getRanges().filter((r) => !!r.marker?.data) - ); - } - - assert.strictEqual( - editActions.edits.length, - ranges.length, - `${editActions.edits.map((e) => convertFileEditActionToString(e)).join('\n')} vs ${ranges - .map((r) => convertRangeToFileEditAction(state, r, replacementText)) - .map((e) => convertFileEditActionToString(e)) - .join('\n')}` - ); - - editActions.fileOperations.push({ kind: 'rename', oldFilePath: filePath, newFilePath }); - - // Make sure we don't have missing imports on the original state. - _verifyFileOperations(state, editActions, ranges, replacementText); -} - -function _verifyFileOperations( - state: TestState, - fileEditActions: FileEditActions, - ranges: Range[], - replacementText: string | undefined, - expectsMissingImport = false -) { - const editsPerFileMap = createMapFromItems(fileEditActions.edits, (e) => e.filePath); - - if (!expectsMissingImport) { - _verifyMissingImports(); - } - - verifyEdits(state, fileEditActions, ranges, replacementText); - - applyFileOperations(state, fileEditActions); - - // Make sure we don't have missing imports after the change. - if (!expectsMissingImport) { - _verifyMissingImports(); - } - - function _verifyMissingImports() { - for (const editFileName of editsPerFileMap.keys()) { - const sourceFile = state.program.getBoundSourceFile(editFileName)!; - _verifyMissingImportsDiagnostics(sourceFile.getDiagnostics(state.configOptions)); - } - } -} - -function _verifyMissingImportsDiagnostics(diagnostics: Diagnostic[] | undefined) { - assert( - !diagnostics || diagnostics.filter((d) => d.getRule() === DiagnosticRule.reportMissingImports).length === 0, - JSON.stringify(diagnostics!.map((d) => d.message)) - ); -} diff --git a/packages/pyright-internal/src/tests/testStateUtils.ts b/packages/pyright-internal/src/tests/testStateUtils.ts index d6d092b2d..80adce605 100644 --- a/packages/pyright-internal/src/tests/testStateUtils.ts +++ b/packages/pyright-internal/src/tests/testStateUtils.ts @@ -11,13 +11,14 @@ import { WorkspaceEdit } from 'vscode-languageserver-protocol'; import { createMapFromItems } from '../common/collectionUtils'; import { assertNever } from '../common/debug'; -import { FileEditAction, FileEditActions } from '../common/editAction'; +import { FileEditAction, FileEditActions, FileOperations } from '../common/editAction'; import { FileSystem } from '../common/fileSystem'; import { convertUriToPath, getDirectoryPath, isFile } from '../common/pathUtils'; import { rangesAreEqual } from '../common/textRange'; import { applyTextEditsToString } from '../common/workspaceEditUtils'; import { Range } from './harness/fourslash/fourSlashTypes'; import { TestState } from './harness/fourslash/testState'; +import { CreateFile, DeleteFile, RenameFile, TextDocumentEdit } from 'vscode-languageserver'; export function convertFileEditActionToString(edit: FileEditAction): string { return `'${edit.replacementText.replace(/\n/g, '!n!')}'@'${edit.filePath}:(${edit.range.start.line},${ @@ -57,7 +58,7 @@ export function verifyEdits( } } -export function applyFileOperations(state: TestState, fileEditActions: FileEditActions) { +export function applyFileEditActions(state: TestState, fileEditActions: FileEditActions) { // Apply changes // First, apply text changes const editsPerFileMap = createMapFromItems(fileEditActions.edits, (e) => e.filePath); @@ -128,13 +129,39 @@ function _applyEdits(state: TestState, filePath: string, edits: FileEditAction[] return { version: sourceFile.getClientVersion(), text: current }; } -export function convertWorkspaceEditToFileEditActions(fs: FileSystem, edit: WorkspaceEdit): FileEditAction[] { - const actions: FileEditAction[] = []; +export function convertWorkspaceEditToFileEditActions(fs: FileSystem, edit: WorkspaceEdit): FileEditActions { + const edits: FileEditAction[] = []; + const fileOperations: FileOperations[] = []; - for (const kv of Object.entries(edit.changes!)) { - const filePath = convertUriToPath(fs, kv[0]); - kv[1].forEach((e) => actions.push({ filePath, range: e.range, replacementText: e.newText })); + if (edit.changes) { + for (const kv of Object.entries(edit.changes)) { + const filePath = convertUriToPath(fs, kv[0]); + kv[1].forEach((e) => edits.push({ filePath, range: e.range, replacementText: e.newText })); + } } - return actions; + if (edit.documentChanges) { + for (const change of edit.documentChanges) { + if (TextDocumentEdit.is(change)) { + for (const e of change.edits) { + edits.push({ + filePath: convertUriToPath(fs, change.textDocument.uri), + range: e.range, + replacementText: e.newText, + }); + } + } else if (CreateFile.is(change)) { + fileOperations.push({ kind: 'create', filePath: convertUriToPath(fs, change.uri) }); + } else if (RenameFile.is(change)) { + fileOperations.push({ + kind: 'rename', + oldFilePath: convertUriToPath(fs, change.oldUri), + newFilePath: convertUriToPath(fs, change.newUri), + }); + } else if (DeleteFile.is(change)) { + fileOperations.push({ kind: 'delete', filePath: convertUriToPath(fs, change.uri) }); + } + } + } + return { edits, fileOperations: fileOperations }; } diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index c470f633b..8961ab90e 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -20,7 +20,7 @@ "shx": "^0.3.4", "ts-loader": "^9.4.2", "typescript": "~4.4.4", - "webpack": "^5.76.0", + "webpack": "^5.81.0", "webpack-cli": "^4.10.0" }, "engines": { @@ -389,9 +389,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -421,9 +421,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -437,13 +437,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -512,9 +512,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "node_modules/@types/json-schema": { @@ -530,148 +530,148 @@ "dev": true }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", + "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", + "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", + "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", + "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", + "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", + "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", + "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", + "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", + "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", + "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", + "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/helper-wasm-section": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-opt": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5", + "@webassemblyjs/wast-printer": "1.11.5" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", + "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", + "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", + "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", + "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.5", "@xtuc/long": "4.2.2" } }, @@ -1033,9 +1033,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", + "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -1058,9 +1058,9 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, "node_modules/esbuild": { @@ -1498,9 +1498,9 @@ } }, "node_modules/jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { "@types/node": "*", @@ -1996,9 +1996,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -2141,9 +2141,9 @@ } }, "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -2159,16 +2159,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "engines": { "node": ">= 10.13.0" @@ -2224,9 +2224,9 @@ "dev": true }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -2308,22 +2308,22 @@ } }, "node_modules/webpack": { - "version": "5.76.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", - "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", + "version": "5.81.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", + "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.13.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -2332,9 +2332,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.1.2", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -2485,9 +2485,9 @@ "dev": true }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -2698,9 +2698,9 @@ "optional": true }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -2721,9 +2721,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -2737,13 +2737,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@nodelib/fs.scandir": { @@ -2802,9 +2802,9 @@ } }, "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "@types/json-schema": { @@ -2820,148 +2820,148 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", + "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", + "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", + "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", + "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", + "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", + "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", + "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", + "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", + "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", + "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", + "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/helper-wasm-section": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-opt": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5", + "@webassemblyjs/wast-printer": "1.11.5" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", + "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", + "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", + "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", + "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.5", "@xtuc/long": "4.2.2" } }, @@ -3221,9 +3221,9 @@ "dev": true }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", + "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -3237,9 +3237,9 @@ "dev": true }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, "esbuild": { @@ -3583,9 +3583,9 @@ "dev": true }, "jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -3922,9 +3922,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -4025,9 +4025,9 @@ "dev": true }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -4037,16 +4037,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "dependencies": { "ajv": { @@ -4075,9 +4075,9 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -4134,22 +4134,22 @@ } }, "webpack": { - "version": "5.76.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", - "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", + "version": "5.81.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", + "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.13.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -4158,9 +4158,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.1.2", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -4191,9 +4191,9 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index d4c04d2d3..049e92aec 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -30,7 +30,7 @@ "shx": "^0.3.4", "ts-loader": "^9.4.2", "typescript": "~4.4.4", - "webpack": "^5.76.0", + "webpack": "^5.81.0", "webpack-cli": "^4.10.0" }, "files": [ diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 297c8cc39..3fbe5d45f 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -24,7 +24,7 @@ "ts-loader": "^9.4.2", "typescript": "~4.4.4", "vsce": "^2.7.0", - "webpack": "^5.76.0", + "webpack": "^5.81.0", "webpack-cli": "^4.10.0" }, "engines": { @@ -41,9 +41,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -73,9 +73,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -89,13 +89,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -164,9 +164,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "node_modules/@types/json-schema": { @@ -188,148 +188,148 @@ "dev": true }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", + "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", + "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", + "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", + "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", + "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", + "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", + "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", + "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", + "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", + "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", + "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/helper-wasm-section": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-opt": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5", + "@webassemblyjs/wast-printer": "1.11.5" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", + "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", + "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", + "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", + "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.5", "@xtuc/long": "4.2.2" } }, @@ -1017,9 +1017,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", + "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -1051,9 +1051,9 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, "node_modules/escalade": { @@ -1579,9 +1579,9 @@ } }, "node_modules/jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { "@types/node": "*", @@ -2386,9 +2386,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -2688,9 +2688,9 @@ } }, "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -2706,16 +2706,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "engines": { "node": ">= 10.13.0" @@ -2771,9 +2771,9 @@ "dev": true }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -3105,22 +3105,22 @@ } }, "node_modules/webpack": { - "version": "5.76.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", - "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", + "version": "5.81.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", + "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.13.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -3129,9 +3129,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.1.2", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -3282,9 +3282,9 @@ "dev": true }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -3390,9 +3390,9 @@ "dev": true }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -3413,9 +3413,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -3429,13 +3429,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@nodelib/fs.scandir": { @@ -3494,9 +3494,9 @@ } }, "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "@types/json-schema": { @@ -3518,148 +3518,148 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", + "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", + "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", + "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", + "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", + "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", + "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", + "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", + "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", + "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", + "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", + "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/helper-wasm-section": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-opt": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5", + "@webassemblyjs/wast-printer": "1.11.5" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", + "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", + "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", + "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", + "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.5", "@xtuc/long": "4.2.2" } }, @@ -4156,9 +4156,9 @@ } }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", + "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -4178,9 +4178,9 @@ "dev": true }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, "escalade": { @@ -4584,9 +4584,9 @@ "dev": true }, "jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -5183,9 +5183,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -5401,9 +5401,9 @@ } }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -5421,16 +5421,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "dependencies": { "ajv": { @@ -5459,9 +5459,9 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -5724,22 +5724,22 @@ } }, "webpack": { - "version": "5.76.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", - "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", + "version": "5.81.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", + "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.13.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -5748,9 +5748,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.1.2", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -5781,9 +5781,9 @@ "dev": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 593af6473..8ad9157f2 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -965,7 +965,7 @@ "ts-loader": "^9.4.2", "typescript": "~4.4.4", "vsce": "^2.7.0", - "webpack": "^5.76.0", + "webpack": "^5.81.0", "webpack-cli": "^4.10.0" } } From 5894ce1ce900a6c446afcccfb4e930421ecd872f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 3 May 2023 13:40:15 -0700 Subject: [PATCH 117/525] Adjusted heuristic for dealing with ambiguous overloads due to unknown argument types. If one or both overloads include an `Any` in its return type, it now produces an `Unknown` result. This addresses https://github.com/microsoft/pyright/issues/5068. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 9 +++++++-- .../pyright-internal/src/analyzer/typeUtils.ts | 14 ++++++++++++++ .../src/tests/samples/overload12.py | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index ba6776906..5b5ced0a6 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -251,6 +251,7 @@ import { combineSameSizedTuples, combineVariances, computeMroLinearization, + containsAnyOrUnknown, containsLiteralType, containsUnknown, convertParamSpecValueToType, @@ -8279,10 +8280,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions for (let dedupedIndex = 0; dedupedIndex < dedupedMatchResults.length; dedupedIndex++) { if (assignType(dedupedMatchResults[dedupedIndex], result.returnType)) { - isSubtypeSubsumed = true; + if (!containsAnyOrUnknown(dedupedMatchResults[dedupedIndex])) { + isSubtypeSubsumed = true; + } break; } else if (assignType(result.returnType, dedupedMatchResults[dedupedIndex])) { - dedupedMatchResults[dedupedIndex] = NeverType.createNever(); + if (!containsAnyOrUnknown(result.returnType)) { + dedupedMatchResults[dedupedIndex] = NeverType.createNever(); + } break; } } diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index b16a27bb8..784b5ca8d 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2058,6 +2058,20 @@ export function getMembersForModule(moduleType: ModuleType, symbolTable: SymbolT }); } +// Determines if the type is an Any or Unknown or a union that +// contains one of these. It does not look at type arguments. +export function containsAnyOrUnknown(type: Type) { + let foundAnyOrUnknown = false; + + doForEachSubtype(type, (subtype) => { + if (isAnyOrUnknown(subtype)) { + foundAnyOrUnknown = true; + } + }); + + return foundAnyOrUnknown; +} + // Determines if the type is an Unknown or a union that contains an Unknown. // It does not look at type arguments. export function containsUnknown(type: Type) { diff --git a/packages/pyright-internal/src/tests/samples/overload12.py b/packages/pyright-internal/src/tests/samples/overload12.py index ce0c1b15f..9c54ecf33 100644 --- a/packages/pyright-internal/src/tests/samples/overload12.py +++ b/packages/pyright-internal/src/tests/samples/overload12.py @@ -55,7 +55,7 @@ def func2(a: Any): reveal_type(v2, expected_text="Any") v3 = overload2(a) - reveal_type(v3, expected_text="Any") + reveal_type(v3, expected_text="Unknown") @overload From be8f2c856d169ed1060e75395497b8a574def5b7 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 4 May 2023 11:16:32 -0700 Subject: [PATCH 118/525] Added support for constructors to PEP 712 mechanism. This addresses https://github.com/microsoft/pyright/issues/5071. --- packages/pyright-internal/src/analyzer/dataClasses.ts | 4 ++++ packages/pyright-internal/src/analyzer/typeEvaluator.ts | 1 + packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts | 1 + 3 files changed, 6 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index 817cb93bb..d714e98ca 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -779,6 +779,10 @@ function getConverterAsFunction( return evaluator.getBoundMethod(converterType, '__call__'); } + if (isInstantiableClass(converterType)) { + return evaluator.createFunctionFromConstructor(converterType); + } + return undefined; } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 5b5ced0a6..25ea62028 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -26514,6 +26514,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getTypeOfMember, getTypeOfObjectMember, getBoundMethod, + createFunctionFromConstructor, getTypeOfMagicMethodReturn, bindFunctionToClassOrObject, getCallSignatureInfo, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index b1fd7e985..6932ff295 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -454,6 +454,7 @@ export interface TypeEvaluator { recursionCount?: number, treatConstructorAsClassMember?: boolean ) => FunctionType | OverloadedFunctionType | undefined; + createFunctionFromConstructor: (classType: ClassType) => FunctionType | OverloadedFunctionType | undefined; getTypeOfMagicMethodReturn: ( objType: Type, args: TypeResult[], From 8d70000ad900c578edcdcea17365a760a9655f0d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 4 May 2023 11:23:56 -0700 Subject: [PATCH 119/525] Added test case for PEP 712 converters that are constructors. --- .../src/tests/samples/dataclass25.py | 78 +++++++++++++++---- .../src/tests/typeEvaluator4.test.ts | 2 +- 2 files changed, 66 insertions(+), 14 deletions(-) diff --git a/packages/pyright-internal/src/tests/samples/dataclass25.py b/packages/pyright-internal/src/tests/samples/dataclass25.py index cced796ab..d0e78f4f7 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass25.py +++ b/packages/pyright-internal/src/tests/samples/dataclass25.py @@ -8,21 +8,42 @@ def converter_simple(s: str) -> int: return int(s) + def converter_with_param_before_args(s: str, *args: int, **kwargs: int) -> int: return int(s) + def converter_with_args(*args: str) -> int: return int(args[0]) -def converter_with_extra_defaulted_params(s: str, extra: int = 1, *, extraKwarg: int = 1) -> int: + +def converter_with_extra_defaulted_params( + s: str, extra: int = 1, *, extraKwarg: int = 1 +) -> int: return int(s) + def converter_with_default_for_first_param(s: str = "1") -> int: return int(s) + def converter_with_more_specialized_return_type(s: str) -> int: return int(s) + +class ConverterClass: + @overload + def __init__(self, val: str) -> None: + ... + + @overload + def __init__(self, val: bytes) -> None: + ... + + def __init__(self, val: str | bytes) -> None: + pass + + @dataclass class Foo: # This should generate an error because "converter" is not an official property yet. @@ -37,24 +58,37 @@ class Foo: field4: int = field(converter=converter_with_default_for_first_param) # This should generate an error because "converter" is not an official property yet. field5: int | str = field(converter=converter_with_more_specialized_return_type) + # This should generate an error because "converter" is not an official property yet. + field6: ConverterClass = field(converter=ConverterClass) -reveal_type(Foo.__init__, expected_text="(self: Foo, field0: str, field1: str, field2: str, field3: str, field4: str, field5: str) -> None") +reveal_type( + Foo.__init__, + expected_text="(self: Foo, field0: str, field1: str, field2: str, field3: str, field4: str, field5: str, field6: str | bytes) -> None", +) # This overload will be ignored because it has too many arguments. @overload -def overloaded_converter(s: float, secondParam: str, /) -> int: ... +def overloaded_converter(s: float, secondParam: str, /) -> int: + ... + # This overload will be ignored because its return type doesn't match the field type. @overload -def overloaded_converter(s: float) -> str: ... +def overloaded_converter(s: float) -> str: + ... + @overload -def overloaded_converter(s: str) -> int: ... +def overloaded_converter(s: str) -> int: + ... + @overload -def overloaded_converter(s: list[str]) -> int: ... +def overloaded_converter(s: list[str]) -> int: + ... + def overloaded_converter(s: float | str | list[str], *args: str) -> int | float | str: return 0 @@ -66,21 +100,29 @@ class Overloads: field0: int = field(converter=overloaded_converter) -reveal_type(Overloads.__init__, expected_text="(self: Overloads, field0: str | list[str]) -> None") +reveal_type( + Overloads.__init__, + expected_text="(self: Overloads, field0: str | list[str]) -> None", +) -class CallableObject(): +class CallableObject: @overload - def __call__(self, arg1: int) -> str: ... + def __call__(self, arg1: int) -> str: + ... + @overload - def __call__(self, arg1: str) -> int: ... + def __call__(self, arg1: str) -> int: + ... def __call__(self, arg1: str | int | list[str]) -> int | str: return 1 + callable: Callable[[str], int] = converter_simple callable_union: Callable[[str], int] | Callable[[int], str] = converter_simple + @dataclass class Callables: # This should generate an error because "converter" is not an official property yet. @@ -91,24 +133,34 @@ class Callables: field2: int = field(converter=callable_union) -reveal_type(Callables.__init__, expected_text="(self: Callables, field0: str, field1: str, field2: str) -> None") +reveal_type( + Callables.__init__, + expected_text="(self: Callables, field0: str, field1: str, field2: str) -> None", +) def wrong_return_type(s: str) -> str: return s + def wrong_number_of_params(x: str, x2: str, /) -> int: return 1 + @overload -def wrong_converter_overload(s: float) -> str: ... +def wrong_converter_overload(s: float) -> str: + ... + @overload -def wrong_converter_overload(s: str) -> str: ... +def wrong_converter_overload(s: str) -> str: + ... + def wrong_converter_overload(s: float | str) -> int | str: return 1 + @dataclass class Errors: # This should generate an error because "converter" is not an official property yet diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 7f414f022..f601d2182 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -669,7 +669,7 @@ test('DataClass24', () => { test('DataClass25', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass25.py']); - TestUtils.validateResults(analysisResults, 16); + TestUtils.validateResults(analysisResults, 17); }); test('DataClassPostInit1', () => { From f20fe8221eae34c65292abd0fc77a2ff95e60c16 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 4 May 2023 18:20:15 -0700 Subject: [PATCH 120/525] Expanded special-case handling of `.value` and `.name` properties of `Enum` instance. It now handles non-literal cases by evaluating a union of all possible names or values defined in the enum. --- .../pyright-internal/src/analyzer/enums.ts | 56 ++++++++++++++++--- .../src/tests/samples/enums1.py | 14 +++++ 2 files changed, 62 insertions(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index b9412ddb4..2b2d3f399 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -7,6 +7,7 @@ * Provides special-case logic for the Enum class. */ +import { assert } from '../common/debug'; import { ArgumentCategory, ExpressionNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; import { getFileInfo } from './analyzerNodeInfo'; import { VariableDeclaration } from './declaration'; @@ -14,17 +15,19 @@ import { getClassFullName, getEnclosingClass, getTypeSourceId } from './parseTre import { Symbol, SymbolFlags } from './symbol'; import { isSingleDunderName } from './symbolNameUtils'; import { FunctionArgument, TypeEvaluator } from './typeEvaluatorTypes'; +import { enumerateLiteralsForType } from './typeGuards'; +import { computeMroLinearization } from './typeUtils'; import { ClassType, ClassTypeFlags, EnumLiteral, + Type, + combineTypes, isClass, isClassInstance, isFunction, isInstantiableClass, - Type, } from './types'; -import { computeMroLinearization } from './typeUtils'; export function isKnownEnumType(className: string) { const knownEnumTypes = ['Enum', 'IntEnum', 'StrEnum', 'Flag', 'IntFlag']; @@ -342,23 +345,60 @@ export function getTypeOfEnumMember( } const literalValue = classType.literalValue; - if (!(literalValue instanceof EnumLiteral)) { - return undefined; - } if (memberName === 'name' || memberName === '_name_') { const strClass = evaluator.getBuiltInType(errorNode, 'str'); + if (!isInstantiableClass(strClass)) { + return undefined; + } + + const makeNameType = (value: EnumLiteral) => { + return ClassType.cloneAsInstance(ClassType.cloneWithLiteral(strClass, value.itemName)); + }; - if (isInstantiableClass(strClass)) { + if (literalValue) { + assert(literalValue instanceof EnumLiteral); + return { type: makeNameType(literalValue), isIncomplete }; + } + + // The type wasn't associated with a particular enum literal, so return + // a union of all possible enum literals. + const literalValues = enumerateLiteralsForType(evaluator, classType); + if (literalValues) { return { - type: ClassType.cloneAsInstance(ClassType.cloneWithLiteral(strClass, literalValue.itemName)), + type: combineTypes( + literalValues.map((literalClass) => { + const literalValue = literalClass.literalValue; + assert(literalValue instanceof EnumLiteral); + return makeNameType(literalValue); + }) + ), isIncomplete, }; } } if (memberName === 'value' || memberName === '_value_') { - return { type: literalValue.itemType, isIncomplete }; + if (literalValue) { + assert(literalValue instanceof EnumLiteral); + return { type: literalValue.itemType, isIncomplete }; + } + + // The type wasn't associated with a particular enum literal, so return + // a union of all possible enum literals. + const literalValues = enumerateLiteralsForType(evaluator, classType); + if (literalValues) { + return { + type: combineTypes( + literalValues.map((literalClass) => { + const literalValue = literalClass.literalValue; + assert(literalValue instanceof EnumLiteral); + return literalValue.itemType; + }) + ), + isIncomplete, + }; + } } return undefined; diff --git a/packages/pyright-internal/src/tests/samples/enums1.py b/packages/pyright-internal/src/tests/samples/enums1.py index c826ae579..45915a493 100644 --- a/packages/pyright-internal/src/tests/samples/enums1.py +++ b/packages/pyright-internal/src/tests/samples/enums1.py @@ -25,6 +25,20 @@ class TestEnum3(Enum): reveal_type(TestEnum1.D.value, expected_text="Literal[4]") reveal_type(TestEnum1.D._value_, expected_text="Literal[4]") + +def func1(te3: TestEnum3): + reveal_type(te3.name, expected_text="Literal['A', 'B', 'C', 'D']") + reveal_type(te3._name_, expected_text="Literal['A', 'B', 'C', 'D']") + reveal_type(te3.value, expected_text="Literal[0, 1, 2, 3]") + reveal_type(te3._value_, expected_text="Literal[0, 1, 2, 3]") + + +reveal_type(TestEnum3.name, expected_text="property") +reveal_type(TestEnum3._name_, expected_text="str") +reveal_type(TestEnum3.value, expected_text="property") +reveal_type(TestEnum3._value_, expected_text="Any") + + # This should generate an error because "Z" isn't # a valid member. z = TestEnum1.Z From 49420be3673d8d499d1f79a6545bf1471f76e92f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 5 May 2023 23:48:56 -0700 Subject: [PATCH 121/525] Moved constructor-related functionality out of typeEvaluator into its own dedicated module. This is a refactor with no functional changes. It's in preparation for some changes to the constructor validation logic. --- .../pyright-internal/src/analyzer/checker.ts | 2 +- .../src/analyzer/constructors.ts | 718 +++++++++++++ .../src/analyzer/dataClasses.ts | 7 +- .../src/analyzer/namedTuples.ts | 2 +- .../src/analyzer/parseTreeUtils.ts | 44 +- .../src/analyzer/typeEvaluator.ts | 986 +++--------------- .../src/analyzer/typeEvaluatorTypes.ts | 94 +- .../src/analyzer/typedDicts.ts | 4 +- 8 files changed, 985 insertions(+), 872 deletions(-) create mode 100644 packages/pyright-internal/src/analyzer/constructors.ts diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index f7eb7d481..2f93f0cea 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -2189,7 +2189,7 @@ export class Checker extends ParseTreeWalker { ``; if (nameType && isTypeVar(nameType) && !nameType.details.isSynthesizedSelf) { // Does this name refer to a TypeVar that is scoped to this function? - if (nameType.scopeId === this._evaluator.getScopeIdForNode(node)) { + if (nameType.scopeId === ParseTreeUtils.getScopeIdForNode(node)) { // We exempt constrained TypeVars, bound TypeVars that are type arguments of // other types, and ParamSpecs. There are legitimate uses for singleton // instances in these particular cases. diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts new file mode 100644 index 000000000..cda6a8f5d --- /dev/null +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -0,0 +1,718 @@ +/* + * constructors.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * Author: Eric Traut + * + * Provides type evaluation logic for constructors. A constructor + * in Python is implemented by a `__call__` method on the metaclass, + * which is typically the `type` class. The default implementation + * calls the `__new__` method on the class to allocate the object. + * If the resulting object is an instance of the class, it then calls + * the `__init__` method on the resulting object with the same arguments. + */ + +import { DiagnosticRule } from '../common/diagnosticRules'; +import { Localizer } from '../localization/localize'; +import { ArgumentCategory, ExpressionNode } from '../parser/parseNodes'; +import { getFileInfo } from './analyzerNodeInfo'; +import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; +import { applyConstructorTransform, hasConstructorTransform } from './constructorTransform'; +import { getTypeVarScopesForNode } from './parseTreeUtils'; +import { + CallResult, + ClassMemberLookup, + FunctionArgument, + MemberAccessFlags, + TypeEvaluator, +} from './typeEvaluatorTypes'; +import { + ClassMemberLookupFlags, + InferenceContext, + applySolvedTypeVars, + buildTypeVarContextFromSpecializedClass, + convertToInstance, + getTypeVarScopeId, + isPartlyUnknown, + isTupleClass, + lookUpClassMember, + mapSubtypes, + requiresSpecialization, + specializeTupleClass, + transformPossibleRecursiveTypeAlias, +} from './typeUtils'; +import { TypeVarContext } from './typeVarContext'; +import { + ClassType, + FunctionType, + FunctionTypeFlags, + OverloadedFunctionType, + Type, + isAny, + isClassInstance, + isFunction, + isInstantiableClass, + isNever, + isOverloadedFunction, + isUnknown, +} from './types'; + +// Tries to match the arguments of a call to the constructor for a class. +// If successful, it returns the resulting (specialized) object type that +// is allocated by the constructor. If unsuccessful, it records diagnostic +// information and returns undefined. +export function validateConstructorArguments( + evaluator: TypeEvaluator, + errorNode: ExpressionNode, + argList: FunctionArgument[], + type: ClassType, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined +): CallResult { + let validatedTypes = false; + let returnType: Type | undefined; + let reportedErrors = false; + let isTypeIncomplete = false; + let usedMetaclassCallMethod = false; + const overloadsUsedForCall: FunctionType[] = []; + + // Create a helper function that determines whether we should skip argument + // validation for either __init__ or __new__. This is required for certain + // synthesized constructor types, namely NamedTuples. + const skipConstructorCheck = (type: Type) => { + return isFunction(type) && FunctionType.isSkipConstructorCheck(type); + }; + + // Validate __init__ + // We validate __init__ before __new__ because the former typically has + // more specific type annotations, and we want to evaluate the arguments + // in the context of these types. The __new__ method often uses generic + // vargs and kwargs. + const initMethodType = evaluator.getTypeOfObjectMember( + errorNode, + ClassType.cloneAsInstance(type), + '__init__', + { method: 'get' }, + /* diag */ undefined, + MemberAccessFlags.SkipObjectBaseClass | MemberAccessFlags.SkipAttributeAccessOverride + )?.type; + + if (initMethodType && !skipConstructorCheck(initMethodType)) { + // If there is an expected type, analyze the constructor call + // for each of the subtypes that comprise the expected type. If + // one or more analyzes with no errors, use those results. + if (inferenceContext) { + const expectedCallResult = validateConstructorMethodWithContext( + evaluator, + errorNode, + argList, + type, + skipUnknownArgCheck, + inferenceContext, + initMethodType + ); + + if (expectedCallResult && !expectedCallResult.argumentErrors) { + returnType = expectedCallResult.returnType; + + if (expectedCallResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + } + } + + if (!returnType) { + const typeVarContext = type.typeArguments + ? buildTypeVarContextFromSpecializedClass(type, /* makeConcrete */ false) + : new TypeVarContext(getTypeVarScopeId(type)); + + typeVarContext.addSolveForScope(getTypeVarScopeId(initMethodType)); + const callResult = evaluator.validateCallArguments( + errorNode, + argList, + { type: initMethodType }, + typeVarContext, + skipUnknownArgCheck + ); + + let adjustedClassType = type; + if ( + callResult.specializedInitSelfType && + isClassInstance(callResult.specializedInitSelfType) && + ClassType.isSameGenericClass(callResult.specializedInitSelfType, type) + ) { + adjustedClassType = ClassType.cloneAsInstantiable(callResult.specializedInitSelfType); + } + + returnType = applyExpectedTypeForConstructor( + evaluator, + adjustedClassType, + /* inferenceContext */ undefined, + typeVarContext + ); + + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + + if (!callResult.argumentErrors) { + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + } else { + reportedErrors = true; + } + } + + validatedTypes = true; + skipUnknownArgCheck = true; + } + + // Validate __new__ + // Don't report errors for __new__ if __init__ already generated errors. They're + // probably going to be entirely redundant anyway. + if (!reportedErrors) { + const metaclass = type.details.effectiveMetaclass; + let constructorMethodInfo: ClassMemberLookup | undefined; + + // See if there's a custom `__call__` method on the metaclass. If so, we'll + // use that rather than the `__new__` method on the class. + if (metaclass && isInstantiableClass(metaclass) && !ClassType.isSameGenericClass(metaclass, type)) { + constructorMethodInfo = evaluator.getTypeOfClassMemberName( + errorNode, + metaclass, + /* isAccessedThroughObject */ true, + '__call__', + { method: 'get' }, + /* diag */ undefined, + MemberAccessFlags.ConsiderMetaclassOnly | + MemberAccessFlags.SkipTypeBaseClass | + MemberAccessFlags.SkipAttributeAccessOverride, + type + ); + + if (constructorMethodInfo) { + usedMetaclassCallMethod = true; + } + } + + if (!constructorMethodInfo) { + constructorMethodInfo = evaluator.getTypeOfClassMemberName( + errorNode, + type, + /* isAccessedThroughObject */ false, + '__new__', + { method: 'get' }, + /* diag */ undefined, + MemberAccessFlags.AccessClassMembersOnly | + MemberAccessFlags.SkipObjectBaseClass | + MemberAccessFlags.TreatConstructorAsClassMethod, + type + ); + } + + if (constructorMethodInfo && !skipConstructorCheck(constructorMethodInfo.type)) { + const constructorMethodType = constructorMethodInfo.type; + let newReturnType: Type | undefined; + + // If there is an expected type that was not applied above when + // handling the __init__ method, try to apply it with the __new__ method. + if (inferenceContext && !returnType) { + const expectedCallResult = validateConstructorMethodWithContext( + evaluator, + errorNode, + argList, + type, + skipUnknownArgCheck, + inferenceContext, + constructorMethodType + ); + + if (expectedCallResult && !expectedCallResult.argumentErrors) { + newReturnType = expectedCallResult.returnType; + returnType = newReturnType; + + if (expectedCallResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + } + } + + const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); + + if (type.typeAliasInfo) { + typeVarContext.addSolveForScope(type.typeAliasInfo.typeVarScopeId); + } + + typeVarContext.addSolveForScope(getTypeVarScopeId(constructorMethodType)); + + // Skip the unknown argument check if we've already checked for __init__. + let callResult: CallResult; + if (hasConstructorTransform(type)) { + // Use speculative mode if we're going to later apply + // a constructor transform. This allows us to use bidirectional + // type inference for arguments in the transform. + callResult = evaluator.useSpeculativeMode(errorNode, () => { + return evaluator.validateCallArguments( + errorNode, + argList, + constructorMethodInfo!, + typeVarContext, + skipUnknownArgCheck + ); + }); + } else { + callResult = evaluator.validateCallArguments( + errorNode, + argList, + constructorMethodInfo, + typeVarContext, + skipUnknownArgCheck + ); + } + + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + + if (callResult.argumentErrors) { + reportedErrors = true; + } else if (!newReturnType) { + newReturnType = callResult.returnType; + + if (overloadsUsedForCall.length === 0) { + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + } + + // If the constructor returned an object whose type matches the class of + // the original type being constructed, use the return type in case it was + // specialized. If it doesn't match, we'll fall back on the assumption that + // the constructed type is an instance of the class type. We need to do this + // in cases where we're inferring the return type based on a call to + // super().__new__(). + if (newReturnType) { + if (isClassInstance(newReturnType) && ClassType.isSameGenericClass(newReturnType, type)) { + // If the specialized return type derived from the __init__ + // method is "better" than the return type provided by the + // __new__ method (where "better" means that the type arguments + // are all known), stick with the __init__ result. + if ( + (!isPartlyUnknown(newReturnType) && !requiresSpecialization(newReturnType)) || + returnType === undefined + ) { + // Special-case the 'tuple' type specialization to use + // the homogenous arbitrary-length form. + if ( + isClassInstance(newReturnType) && + ClassType.isTupleClass(newReturnType) && + !newReturnType.tupleTypeArguments && + newReturnType.typeArguments && + newReturnType.typeArguments.length === 1 + ) { + newReturnType = specializeTupleClass(newReturnType, [ + { type: newReturnType.typeArguments[0], isUnbounded: true }, + ]); + } + + returnType = newReturnType; + } + } else if (!returnType && !isUnknown(newReturnType)) { + returnType = newReturnType; + } + } + } + + if (!returnType) { + returnType = applyExpectedTypeForConstructor(evaluator, type, inferenceContext, typeVarContext); + } else if (isClassInstance(returnType) && isTupleClass(returnType) && !returnType.tupleTypeArguments) { + returnType = applyExpectedTypeForTupleConstructor(returnType, inferenceContext); + } + validatedTypes = true; + } + } + + // If we weren't able to validate the args, analyze the expressions + // here to mark symbols as referenced and report expression-level errors. + if (!validatedTypes) { + argList.forEach((arg) => { + if (arg.valueExpression && !evaluator.isSpeculativeModeInUse(arg.valueExpression)) { + evaluator.getTypeOfExpression(arg.valueExpression); + } + }); + } + + if (!validatedTypes && argList.some((arg) => arg.argumentCategory === ArgumentCategory.Simple)) { + // Suppress this error if the class was instantiated from a custom + // metaclass because it's likely that it's a false positive. Also + // suppress the error if the class's metaclass has a __call__ method. + const isCustomMetaclass = + !!type.details.effectiveMetaclass && + isInstantiableClass(type.details.effectiveMetaclass) && + !ClassType.isBuiltIn(type.details.effectiveMetaclass); + + if (!isCustomMetaclass && !usedMetaclassCallMethod) { + const fileInfo = getFileInfo(errorNode); + evaluator.addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.constructorNoArgs().format({ type: type.aliasName || type.details.name }), + errorNode + ); + } + } + + if (!returnType) { + // There was no __init__ or __new__ method or we couldn't match the provided + // arguments to them. + if (!inferenceContext && type.typeArguments) { + // If there was no expected type but the type was already specialized, + // assume that we're constructing an instance of the specialized type. + returnType = convertToInstance(type); + } else { + // Do our best to specialize the instantiated class based on the expected + // type if provided. + const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); + + if (inferenceContext) { + populateTypeVarContextBasedOnExpectedType( + evaluator, + ClassType.cloneAsInstance(type), + inferenceContext.expectedType, + typeVarContext, + getTypeVarScopesForNode(errorNode) + ); + } + + returnType = applyExpectedTypeForConstructor(evaluator, type, inferenceContext, typeVarContext); + } + } + + if (!reportedErrors) { + const transformed = applyConstructorTransform(evaluator, errorNode, argList, type, { + argumentErrors: reportedErrors, + returnType, + isTypeIncomplete, + }); + + returnType = transformed.returnType; + + if (transformed.isTypeIncomplete) { + isTypeIncomplete = true; + } + + if (transformed.argumentErrors) { + reportedErrors = true; + } + } + + const result: CallResult = { + argumentErrors: reportedErrors, + returnType, + isTypeIncomplete, + overloadsUsedForCall, + }; + + return result; +} + +// For a constructor call that targets a generic class and an "expected type" +// (i.e. bidirectional inference), this function attempts to infer the correct +// specialized return type for the constructor. +function validateConstructorMethodWithContext( + evaluator: TypeEvaluator, + errorNode: ExpressionNode, + argList: FunctionArgument[], + type: ClassType, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext, + constructorMethodType: Type +): CallResult | undefined { + let isTypeIncomplete = false; + let argumentErrors = false; + const overloadsUsedForCall: FunctionType[] = []; + + const returnType = mapSubtypes(inferenceContext.expectedType, (expectedSubType) => { + expectedSubType = transformPossibleRecursiveTypeAlias(expectedSubType); + + const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); + typeVarContext.addSolveForScope(getTypeVarScopeId(constructorMethodType)); + + if ( + populateTypeVarContextBasedOnExpectedType( + evaluator, + ClassType.cloneAsInstance(type), + expectedSubType, + typeVarContext, + getTypeVarScopesForNode(errorNode) + ) + ) { + const specializedConstructor = applySolvedTypeVars(constructorMethodType, typeVarContext); + + let callResult: CallResult | undefined; + evaluator.useSpeculativeMode(errorNode, () => { + callResult = evaluator.validateCallArguments( + errorNode, + argList, + { type: specializedConstructor }, + typeVarContext.clone(), + skipUnknownArgCheck + ); + }); + + if (!callResult!.argumentErrors) { + // Call validateCallArguments again, this time without speculative + // mode, so any errors are reported. + callResult = evaluator.validateCallArguments( + errorNode, + argList, + { type: specializedConstructor }, + typeVarContext, + skipUnknownArgCheck + ); + + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + + if (callResult.argumentErrors) { + argumentErrors = true; + } + + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + + return applyExpectedSubtypeForConstructor( + evaluator, + type, + expectedSubType, + inferenceContext, + typeVarContext + ); + } + } + + return undefined; + }); + + if (isNever(returnType)) { + return undefined; + } + + return { returnType, isTypeIncomplete, argumentErrors, overloadsUsedForCall }; +} + +function applyExpectedSubtypeForConstructor( + evaluator: TypeEvaluator, + type: ClassType, + expectedSubtype: Type, + inferenceContext: InferenceContext, + typeVarContext: TypeVarContext +): Type | undefined { + const specializedType = applySolvedTypeVars(ClassType.cloneAsInstance(type), typeVarContext); + + if ( + !evaluator.assignType( + expectedSubtype, + specializedType, + /* diag */ undefined, + /* destTypeVarContext */ inferenceContext?.typeVarContext?.clone(), + /* srcTypeVarContext */ undefined + ) + ) { + return undefined; + } + + // If the expected type is "Any", transform it to an Any. + if (isAny(expectedSubtype)) { + return expectedSubtype; + } + + return specializedType; +} + +// Handles the case where a constructor is a generic type and the type +// arguments are not specified but can be provided by the expected type. +function applyExpectedTypeForConstructor( + evaluator: TypeEvaluator, + type: ClassType, + inferenceContext: InferenceContext | undefined, + typeVarContext: TypeVarContext +): Type { + let unsolvedTypeVarsAreUnknown = true; + + if (inferenceContext) { + const specializedExpectedType = mapSubtypes(inferenceContext.expectedType, (expectedSubtype) => { + return applyExpectedSubtypeForConstructor( + evaluator, + type, + expectedSubtype, + inferenceContext, + typeVarContext + ); + }); + + if (!isNever(specializedExpectedType)) { + return specializedExpectedType; + } + + // If the expected type didn't provide TypeVar values, remaining + // unsolved TypeVars should be considered Unknown unless they were + // provided explicitly in the constructor call. + if (type.typeArguments) { + unsolvedTypeVarsAreUnknown = false; + } + } + + const specializedType = applySolvedTypeVars(type, typeVarContext, { + unknownIfNotFound: unsolvedTypeVarsAreUnknown, + }) as ClassType; + return ClassType.cloneAsInstance(specializedType); +} + +// Similar to applyExpectedTypeForConstructor, this function handles the +// special case of the tuple class. +function applyExpectedTypeForTupleConstructor(type: ClassType, inferenceContext: InferenceContext | undefined) { + let specializedType = type; + + if ( + inferenceContext && + isClassInstance(inferenceContext.expectedType) && + isTupleClass(inferenceContext.expectedType) && + inferenceContext.expectedType.tupleTypeArguments + ) { + specializedType = specializeTupleClass(type, inferenceContext.expectedType.tupleTypeArguments); + } + + return specializedType; +} + +// Synthesize a function that represents the constructor for this class +// taking into consideration the __init__ and __new__ methods. +export function createFunctionFromConstructor( + evaluator: TypeEvaluator, + classType: ClassType, + recursionCount = 0 +): FunctionType | OverloadedFunctionType | undefined { + // Use the __init__ method if available. It's usually more detailed. + const initInfo = lookUpClassMember( + classType, + '__init__', + ClassMemberLookupFlags.SkipInstanceVariables | ClassMemberLookupFlags.SkipObjectBaseClass + ); + + if (initInfo) { + const initType = evaluator.getTypeOfMember(initInfo); + const objectType = ClassType.cloneAsInstance(classType); + + const convertInitToConstructor = (initSubtype: FunctionType) => { + let constructorFunction = evaluator.bindFunctionToClassOrObject( + objectType, + initSubtype, + /* memberClass */ undefined, + /* errorNode */ undefined, + recursionCount + ) as FunctionType | undefined; + + if (constructorFunction) { + constructorFunction = FunctionType.clone(constructorFunction); + constructorFunction.details.declaredReturnType = objectType; + + if (constructorFunction.specializedTypes) { + constructorFunction.specializedTypes.returnType = objectType; + } + + if (!constructorFunction.details.docString && classType.details.docString) { + constructorFunction.details.docString = classType.details.docString; + } + + constructorFunction.details.flags &= ~FunctionTypeFlags.StaticMethod; + } + + return constructorFunction; + }; + + if (isFunction(initType)) { + return convertInitToConstructor(initType); + } else if (isOverloadedFunction(initType)) { + const initOverloads: FunctionType[] = []; + initType.overloads.forEach((overload) => { + const converted = convertInitToConstructor(overload); + if (converted) { + initOverloads.push(converted); + } + }); + + if (initOverloads.length === 0) { + return undefined; + } else if (initOverloads.length === 1) { + return initOverloads[0]; + } + + return OverloadedFunctionType.create(initOverloads); + } + } + + // Fall back on the __new__ method if __init__ isn't available. + const newInfo = lookUpClassMember( + classType, + '__new__', + ClassMemberLookupFlags.SkipInstanceVariables | ClassMemberLookupFlags.SkipObjectBaseClass + ); + + if (newInfo) { + const newType = evaluator.getTypeOfMember(newInfo); + + const convertNewToConstructor = (newSubtype: FunctionType) => { + let constructorFunction = evaluator.bindFunctionToClassOrObject( + classType, + newSubtype, + /* memberClass */ undefined, + /* errorNode */ undefined, + recursionCount, + /* treatConstructorAsClassMember */ true + ) as FunctionType | undefined; + + if (constructorFunction) { + constructorFunction = FunctionType.clone(constructorFunction); + + if (!constructorFunction.details.docString && classType.details.docString) { + constructorFunction.details.docString = classType.details.docString; + } + + constructorFunction.details.flags &= ~( + FunctionTypeFlags.StaticMethod | FunctionTypeFlags.ConstructorMethod + ); + } + + return constructorFunction; + }; + + if (isFunction(newType)) { + return convertNewToConstructor(newType); + } else if (isOverloadedFunction(newType)) { + const newOverloads: FunctionType[] = []; + newType.overloads.forEach((overload) => { + const converted = convertNewToConstructor(overload); + if (converted) { + newOverloads.push(converted); + } + }); + + if (newOverloads.length === 0) { + return undefined; + } else if (newOverloads.length === 1) { + return newOverloads[0]; + } + + return OverloadedFunctionType.create(newOverloads); + } + } + + // Return a generic constructor. + const constructorFunction = FunctionType.createSynthesizedInstance('__new__', FunctionTypeFlags.None); + constructorFunction.details.declaredReturnType = ClassType.cloneAsInstance(classType); + FunctionType.addDefaultParameters(constructorFunction); + + if (!constructorFunction.details.docString && classType.details.docString) { + constructorFunction.details.docString = classType.details.docString; + } + + return constructorFunction; +} diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index d714e98ca..e0c1f4f72 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -25,9 +25,10 @@ import { TypeAnnotationNode, } from '../parser/parseNodes'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; +import { createFunctionFromConstructor } from './constructors'; import { DeclarationType } from './declaration'; import { updateNamedTupleBaseClass } from './namedTuples'; -import { getEnclosingClassOrFunction } from './parseTreeUtils'; +import { getEnclosingClassOrFunction, getScopeIdForNode } from './parseTreeUtils'; import { evaluateStaticBoolExpression } from './staticExpressions'; import { Symbol, SymbolFlags } from './symbol'; import { isPrivateName } from './symbolNameUtils'; @@ -699,7 +700,7 @@ function getConverterInputType( // Create synthesized function of the form Callable[[T], fieldType] which // will be used to check compatibility of the provided converter. const typeVar = TypeVarType.createInstance('__converterInput'); - typeVar.scopeId = evaluator.getScopeIdForNode(converterNode); + typeVar.scopeId = getScopeIdForNode(converterNode); const targetFunction = FunctionType.createSynthesizedInstance(''); targetFunction.details.typeVarScopeId = typeVar.scopeId; targetFunction.details.declaredReturnType = fieldType; @@ -780,7 +781,7 @@ function getConverterAsFunction( } if (isInstantiableClass(converterType)) { - return evaluator.createFunctionFromConstructor(converterType); + return createFunctionFromConstructor(evaluator, converterType); } return undefined; diff --git a/packages/pyright-internal/src/analyzer/namedTuples.ts b/packages/pyright-internal/src/analyzer/namedTuples.ts index 972428351..fa641ce71 100644 --- a/packages/pyright-internal/src/analyzer/namedTuples.ts +++ b/packages/pyright-internal/src/analyzer/namedTuples.ts @@ -101,7 +101,7 @@ export function createNamedTupleType( isInstantiableClass(namedTupleType) ? namedTupleType.details.effectiveMetaclass : UnknownType.create() ); classType.details.baseClasses.push(namedTupleType); - classType.details.typeVarScopeId = evaluator.getScopeIdForNode(errorNode); + classType.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(errorNode); const classFields = classType.details.fields; classFields.set( diff --git a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts index dcdd6400c..39d3e2d0a 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts @@ -11,9 +11,8 @@ import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; import { containsOnlyWhitespace } from '../common/core'; import { assert, assertNever, fail } from '../common/debug'; import { convertPositionToOffset, convertTextRangeToRange } from '../common/positionUtils'; -import { Position, Range } from '../common/textRange'; -import { TextRange } from '../common/textRange'; -import { getIndexContaining, TextRangeCollection } from '../common/textRangeCollection'; +import { Position, Range, TextRange } from '../common/textRange'; +import { TextRangeCollection, getIndexContaining } from '../common/textRangeCollection'; import { ArgumentCategory, ArgumentNode, @@ -27,7 +26,6 @@ import { FunctionNode, ImportFromNode, IndexNode, - isExpressionNode, LambdaNode, MemberAccessNode, ModuleNode, @@ -43,13 +41,15 @@ import { SuiteNode, TypeAnnotationNode, TypeParameterScopeNode, + isExpressionNode, } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import * as StringTokenUtils from '../parser/stringTokenUtils'; import { TokenizerOutput } from '../parser/tokenizer'; import { KeywordType, OperatorType, StringToken, StringTokenFlags, Token, TokenType } from '../parser/tokenizerTypes'; import { getScope } from './analyzerNodeInfo'; -import { getChildNodes, ParseTreeWalker } from './parseTreeWalker'; +import { ParseTreeWalker, getChildNodes } from './parseTreeWalker'; +import { TypeVarScopeId } from './types'; export const enum PrintExpressionFlags { None = 0, @@ -2650,3 +2650,37 @@ export function getVariableDocStringNode(node: ExpressionNode): StringListNode | // A docstring can consist of multiple joined strings in a single expression. return nextStatement.statements[0] as StringListNode; } + +// Creates an ID that identifies this parse node in a way that will +// not change each time the file is parsed (unless, of course, the +// file contents change). +export function getScopeIdForNode(node: ParseNode): string { + let name = ''; + if (node.nodeType === ParseNodeType.Class) { + name = node.name.value; + } else if (node.nodeType === ParseNodeType.Function) { + name = node.name.value; + } + + const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + return `${fileInfo.filePath}.${node.start.toString()}-${name}`; +} + +// Walks up the parse tree and finds all scopes that can provide +// a context for a TypeVar and returns the scope ID for each. +export function getTypeVarScopesForNode(node: ParseNode): TypeVarScopeId[] { + const scopeIds: TypeVarScopeId[] = []; + + let curNode: ParseNode | undefined = node; + while (curNode) { + curNode = getTypeVarScopeNode(curNode); + if (!curNode) { + break; + } + + scopeIds.push(getScopeIdForNode(curNode)); + curNode = curNode.parent; + } + + return scopeIds; +} diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 25ea62028..1992adac0 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24,7 +24,7 @@ import { ConsoleInterface } from '../common/console'; import { assert, assertNever, fail } from '../common/debug'; import { AddMissingOptionalToParamAction, DiagnosticAddendum } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; -import { convertOffsetsToRange, convertOffsetToPosition } from '../common/positionUtils'; +import { convertOffsetToPosition, convertOffsetsToRange } from '../common/positionUtils'; import { PythonVersion } from '../common/pythonVersion'; import { TextRange } from '../common/textRange'; import { Localizer, ParameterizedString } from '../localization/localize'; @@ -42,14 +42,13 @@ import { DictionaryNode, ExceptNode, ExpressionNode, - FormatStringNode, ForNode, + FormatStringNode, FunctionNode, ImportAsNode, ImportFromAsNode, ImportFromNode, IndexNode, - isExpressionNode, LambdaNode, ListComprehensionForIfNode, ListComprehensionNode, @@ -79,6 +78,7 @@ import { WithItemNode, YieldFromNode, YieldNode, + isExpressionNode, } from '../parser/parseNodes'; import { ParseOptions, Parser } from '../parser/parser'; import { KeywordType, OperatorType, StringTokenFlags } from '../parser/tokenizerTypes'; @@ -87,13 +87,13 @@ import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { CodeFlowAnalyzer, FlowNodeTypeOptions, FlowNodeTypeResult, getCodeFlowEngine } from './codeFlowEngine'; import { CodeFlowReferenceExpressionNode, - createKeyForReference, FlowNode, + createKeyForReference, isCodeFlowSupportedForReference, wildcardImportReferenceKey, } from './codeFlowTypes'; import { assignTypeToTypeVar, populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; -import { applyConstructorTransform, hasConstructorTransform } from './constructorTransform'; +import { createFunctionFromConstructor, validateConstructorArguments } from './constructors'; import { applyDataClassClassBehaviorOverrides, applyDataClassDecorator, @@ -110,11 +110,11 @@ import { ModuleLoaderActions, } from './declaration'; import { + ResolvedAliasInfo, createSynthesizedAliasDeclaration, getDeclarationsWithUsesLocalNameRemoved, getNameNodeForDeclaration, resolveAliasDeclaration as resolveAliasDeclarationUtil, - ResolvedAliasInfo, } from './declarationUtils'; import { createEnumType, @@ -127,10 +127,10 @@ import { import { applyFunctionTransform } from './functionTransform'; import { createNamedTupleType } from './namedTuples'; import { - getParameterListDetails, ParameterListDetails, ParameterSource, VirtualParameterDetails, + getParameterListDetails, } from './parameterUtils'; import * as ParseTreeUtils from './parseTreeUtils'; import { assignTypeToPatternTargets, checkForUnusedPattern, narrowTypeBasedOnPattern } from './patternMatching'; @@ -145,19 +145,10 @@ import { assignClassToProtocol, assignModuleToProtocol } from './protocols'; import { Scope, ScopeType, SymbolWithScope } from './scope'; import * as ScopeUtils from './scopeUtils'; import { evaluateStaticBoolExpression } from './staticExpressions'; -import { indeterminateSymbolId, Symbol, SymbolFlags } from './symbol'; +import { Symbol, SymbolFlags, indeterminateSymbolId } from './symbol'; import { isConstantName, isPrivateName, isPrivateOrProtectedName } from './symbolNameUtils'; import { getLastTypedDeclaredForSymbol } from './symbolUtils'; import { SpeculativeTypeTracker } from './typeCacheUtils'; -import { - assignToTypedDict, - assignTypedDictToTypedDict, - createTypedDictType, - createTypedDictTypeInlined, - getTypedDictMembersForClass, - getTypeOfIndexedTypedDict, - synthesizeTypedDictClassMethods, -} from './typedDicts'; import { AbstractMethod, AnnotationTypeOptions, @@ -165,6 +156,7 @@ import { CallResult, CallSignature, CallSignatureInfo, + ClassMemberLookup, ClassTypeResult, DeclaredSymbolTypeInfo, EffectiveTypeResult, @@ -174,80 +166,26 @@ import { ExpectedTypeResult, FunctionArgument, FunctionTypeResult, - maxSubtypesForInferredType, + MemberAccessFlags, PrintTypeOptions, ResolveAliasOptions, TypeEvaluator, TypeResult, TypeResultWithNode, ValidateArgTypeParams, + maxSubtypesForInferredType, } from './typeEvaluatorTypes'; import * as TypePrinter from './typePrinter'; import { - AnyType, - ClassType, - ClassTypeFlags, - combineTypes, - DataClassBehaviors, - findSubtype, - FunctionParameter, - FunctionType, - FunctionTypeFlags, - InheritanceChain, - isAny, - isAnyOrUnknown, - isClass, - isClassInstance, - isFunction, - isInstantiableClass, - isModule, - isNever, - isNoneInstance, - isNoneTypeClass, - isOverloadedFunction, - isParamSpec, - isTypeSame, - isTypeVar, - isUnbound, - isUnion, - isUnknown, - isUnpacked, - isUnpackedClass, - isUnpackedVariadicTypeVar, - isVariadicTypeVar, - LiteralValue, - maxTypeRecursionCount, - ModuleType, - NeverType, - NoneType, - OverloadedFunctionType, - removeFromUnion, - removeNoneFromUnion, - removeUnbound, - TupleTypeArgument, - Type, - TypeBase, - TypeCategory, - TypeCondition, - TypedDictEntry, - TypeVarScopeId, - TypeVarScopeType, - TypeVarType, - UnboundType, - UnionType, - UnknownType, - Variance, - WildcardTypeVarScopeId, -} from './types'; -import { + AssignTypeFlags, + ClassMember, + ClassMemberLookupFlags, + InferenceContext, + UniqueSignatureTracker, addConditionToType, addTypeVarsToListIfUnique, applySolvedTypeVars, areTypesSame, - AssignTypeFlags, - buildTypeVarContextFromSpecializedClass, - ClassMember, - ClassMemberLookupFlags, combineSameSizedTuples, combineVariances, computeMroLinearization, @@ -273,7 +211,6 @@ import { getTypeVarScopeId, getTypeVarScopeIds, getUnionSubtypeCount, - InferenceContext, isCallableType, isDescriptorInstance, isEffectivelyInstantiable, @@ -310,51 +247,73 @@ import { specializeTupleClass, synthesizeTypeVarForSelfCls, transformPossibleRecursiveTypeAlias, - UniqueSignatureTracker, validateTypeVarDefault, } from './typeUtils'; import { TypeVarContext, TypeVarSignatureContext } from './typeVarContext'; - -const enum MemberAccessFlags { - None = 0, - - // By default, member accesses are assumed to access the attributes - // of a class instance. By setting this flag, only attributes of - // the class are considered. - AccessClassMembersOnly = 1 << 0, - - // By default, members of base classes are also searched. - // Set this flag to consider only the specified class' members. - SkipBaseClasses = 1 << 1, - - // Do not include the "object" base class in the search. - SkipObjectBaseClass = 1 << 2, - - // Consider writes to symbols flagged as ClassVars as an error. - DisallowClassVarWrites = 1 << 3, - - // Normally __new__ is treated as a static method, but when - // it is invoked implicitly through a constructor call, it - // acts like a class method instead. - TreatConstructorAsClassMethod = 1 << 4, - - // By default, class member lookups start with the class itself - // and fall back on the metaclass if it's not found. This option - // skips the first check. - ConsiderMetaclassOnly = 1 << 5, - - // If an attribute cannot be found when looking for instance - // members, normally an attribute access override method - // (__getattr__, etc.) may provide the missing attribute type. - // This disables this check. - SkipAttributeAccessOverride = 1 << 6, - - // Do not include the class itself, only base classes. - SkipOriginalClass = 1 << 7, - - // Do not include the "type" base class in the search. - SkipTypeBaseClass = 1 << 8, -} +import { + assignToTypedDict, + assignTypedDictToTypedDict, + createTypedDictType, + createTypedDictTypeInlined, + getTypeOfIndexedTypedDict, + getTypedDictMembersForClass, + synthesizeTypedDictClassMethods, +} from './typedDicts'; +import { + AnyType, + ClassType, + ClassTypeFlags, + DataClassBehaviors, + FunctionParameter, + FunctionType, + FunctionTypeFlags, + InheritanceChain, + LiteralValue, + ModuleType, + NeverType, + NoneType, + OverloadedFunctionType, + TupleTypeArgument, + Type, + TypeBase, + TypeCategory, + TypeCondition, + TypeVarScopeType, + TypeVarType, + TypedDictEntry, + UnboundType, + UnionType, + UnknownType, + Variance, + WildcardTypeVarScopeId, + combineTypes, + findSubtype, + isAny, + isAnyOrUnknown, + isClass, + isClassInstance, + isFunction, + isInstantiableClass, + isModule, + isNever, + isNoneInstance, + isNoneTypeClass, + isOverloadedFunction, + isParamSpec, + isTypeSame, + isTypeVar, + isUnbound, + isUnion, + isUnknown, + isUnpacked, + isUnpackedClass, + isUnpackedVariadicTypeVar, + isVariadicTypeVar, + maxTypeRecursionCount, + removeFromUnion, + removeNoneFromUnion, + removeUnbound, +} from './types'; interface ValidateTypeArgsOptions { allowEmptyTuple?: boolean; @@ -388,28 +347,6 @@ interface MatchArgsToParamsResult { relevance: number; } -interface ClassMemberLookup { - symbol: Symbol | undefined; - - // Type of symbol. - type: Type; - isTypeIncomplete: boolean; - - // True if class member, false otherwise. - isClassMember: boolean; - - // The class that declares the accessed member. - classType?: ClassType | UnknownType; - - // True if the member is explicitly declared as ClassVar - // within a Protocol. - isClassVar: boolean; - - // Is member a descriptor object that is asymmetric with respect - // to __get__ and __set__ types? - isAsymmetricDescriptor: boolean; -} - export interface DescriptorTypeResult { type: Type; isAsymmetricDescriptor: boolean; @@ -783,7 +720,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If the entry is located within a part of the parse tree that is currently being // "speculatively" evaluated, track it so we delete the cached entry when we leave // this speculative context. - if (speculativeTypeTracker.isSpeculative(node)) { + if (isSpeculativeModeInUse(node)) { speculativeTypeTracker.trackEntry(typeCacheToUse, node.id); if (allowSpeculativeCaching) { speculativeTypeTracker.addSpeculativeType( @@ -801,7 +738,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } function setAsymmetricDescriptorAssignment(node: ParseNode) { - if (speculativeTypeTracker.isSpeculative(/* node */ undefined)) { + if (isSpeculativeModeInUse(/* node */ undefined)) { return; } @@ -3013,7 +2950,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function isDiagnosticSuppressedForNode(node: ParseNode) { return ( suppressedNodeStack.some((suppressedNode) => ParseTreeUtils.isNodeContainedWithin(node, suppressedNode)) || - speculativeTypeTracker.isSpeculative(node) + isSpeculativeModeInUse(node) ); } @@ -4000,6 +3937,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let callResult: CallResult | undefined; suppressDiagnostics(node.typeExpression!, () => { callResult = validateConstructorArguments( + evaluatorInterface, node.typeExpression!, [], concreteSubtype, @@ -4114,7 +4052,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } function setSymbolAccessed(fileInfo: AnalyzerFileInfo, symbol: Symbol, node: ParseNode) { - if (!speculativeTypeTracker.isSpeculative(node)) { + if (!isSpeculativeModeInUse(node)) { fileInfo.accessedSymbolSet.add(symbol.id); } } @@ -4626,7 +4564,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions type = TypeVarType.cloneForScopeId( type, - getScopeIdForNode(enclosingScope), + ParseTreeUtils.getScopeIdForNode(enclosingScope), enclosingScope.name.value, enclosingScope.nodeType === ParseNodeType.Function ? TypeVarScopeType.Function @@ -4757,40 +4695,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return type; } - // Creates an ID that identifies this parse node in a way that will - // not change each time the file is parsed (unless, of course, the - // file contents change). - function getScopeIdForNode(node: ParseNode): string { - let name = ''; - if (node.nodeType === ParseNodeType.Class) { - name = node.name.value; - } else if (node.nodeType === ParseNodeType.Function) { - name = node.name.value; - } - - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - return `${fileInfo.filePath}.${node.start.toString()}-${name}`; - } - - // Walks up the parse tree and finds all scopes that can provide - // a context for a TypeVar and returns the scope ID for each. - function getTypeVarScopesForNode(node: ParseNode): TypeVarScopeId[] { - const scopeIds: TypeVarScopeId[] = []; - - let curNode: ParseNode | undefined = node; - while (curNode) { - curNode = ParseTreeUtils.getTypeVarScopeNode(curNode); - if (!curNode) { - break; - } - - scopeIds.push(getScopeIdForNode(curNode)); - curNode = curNode.parent; - } - - return scopeIds; - } - // Walks up the parse tree to find a function, class, or type alias // declaration that provides the context for a type variable. function findScopedTypeVar(node: ExpressionNode, type: TypeVarType): ScopedTypeVarResult { @@ -7519,7 +7423,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ClassType.cloneAsInstance(tupleClassType), inferenceContext.expectedType, tupleTypeVarContext, - getTypeVarScopesForNode(node) + ParseTreeUtils.getTypeVarScopesForNode(node) ) ) { return undefined; @@ -7718,7 +7622,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Don't bother evaluating the arguments if we're speculatively evaluating the call // or the base type is incomplete. - if (!speculativeTypeTracker.isSpeculative(node) && !baseTypeResult.isIncomplete) { + if (!isSpeculativeModeInUse(node) && !baseTypeResult.isIncomplete) { // Touch all of the args so they're marked accessed even if there were errors. // We skip this if it's a TypeVar() call in the typing.pyi module because // this results in a cyclical type resolution problem whereby we try to @@ -7810,7 +7714,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // for the lambda evaluation because it may need to be reevaluated once // the arg types are complete. let typeResult = - isArgTypeIncomplete || speculativeTypeTracker.isSpeculative(node) || inferenceContext?.isTypeIncomplete + isArgTypeIncomplete || isSpeculativeModeInUse(node) || inferenceContext?.isTypeIncomplete ? useSpeculativeMode(node.leftExpression, getLambdaType) : getLambdaType(); @@ -8664,513 +8568,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return newExpandedArgTypes; } - // Tries to match the arguments of a call to the constructor for a class. - // If successful, it returns the resulting (specialized) object type that - // is allocated by the constructor. If unsuccessful, it records diagnostic - // information and returns undefined. - function validateConstructorArguments( - errorNode: ExpressionNode, - argList: FunctionArgument[], - type: ClassType, - skipUnknownArgCheck: boolean, - inferenceContext: InferenceContext | undefined - ): CallResult { - let validatedTypes = false; - let returnType: Type | undefined; - let reportedErrors = false; - let isTypeIncomplete = false; - let usedMetaclassCallMethod = false; - const overloadsUsedForCall: FunctionType[] = []; - - // Create a helper function that determines whether we should skip argument - // validation for either __init__ or __new__. This is required for certain - // synthesized constructor types, namely NamedTuples. - const skipConstructorCheck = (type: Type) => { - return isFunction(type) && FunctionType.isSkipConstructorCheck(type); - }; - - // Validate __init__ - // We validate __init__ before __new__ because the former typically has - // more specific type annotations, and we want to evaluate the arguments - // in the context of these types. The __new__ method often uses generic - // vargs and kwargs. - const initMethodType = getTypeOfObjectMember( - errorNode, - ClassType.cloneAsInstance(type), - '__init__', - { method: 'get' }, - /* diag */ undefined, - MemberAccessFlags.SkipObjectBaseClass | MemberAccessFlags.SkipAttributeAccessOverride - )?.type; - - if (initMethodType && !skipConstructorCheck(initMethodType)) { - // If there is an expected type, analyze the constructor call - // for each of the subtypes that comprise the expected type. If - // one or more analyzes with no errors, use those results. - if (inferenceContext) { - const expectedCallResult = validateConstructorMethodWithContext( - errorNode, - argList, - type, - skipUnknownArgCheck, - inferenceContext, - initMethodType - ); - - if (expectedCallResult && !expectedCallResult.argumentErrors) { - returnType = expectedCallResult.returnType; - - if (expectedCallResult.isTypeIncomplete) { - isTypeIncomplete = true; - } - } - } - - if (!returnType) { - const typeVarContext = type.typeArguments - ? buildTypeVarContextFromSpecializedClass(type, /* makeConcrete */ false) - : new TypeVarContext(getTypeVarScopeId(type)); - - typeVarContext.addSolveForScope(getTypeVarScopeId(initMethodType)); - const callResult = validateCallArguments( - errorNode, - argList, - { type: initMethodType }, - typeVarContext, - skipUnknownArgCheck - ); - - let adjustedClassType = type; - if ( - callResult.specializedInitSelfType && - isClassInstance(callResult.specializedInitSelfType) && - ClassType.isSameGenericClass(callResult.specializedInitSelfType, type) - ) { - adjustedClassType = ClassType.cloneAsInstantiable(callResult.specializedInitSelfType); - } - - returnType = applyExpectedTypeForConstructor( - adjustedClassType, - /* inferenceContext */ undefined, - typeVarContext - ); - - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } - - if (!callResult.argumentErrors) { - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - } else { - reportedErrors = true; - } - } - - validatedTypes = true; - skipUnknownArgCheck = true; - } - - // Validate __new__ - // Don't report errors for __new__ if __init__ already generated errors. They're - // probably going to be entirely redundant anyway. - if (!reportedErrors) { - const metaclass = type.details.effectiveMetaclass; - let constructorMethodInfo: ClassMemberLookup | undefined; - - // See if there's a custom `__call__` method on the metaclass. If so, we'll - // use that rather than the `__new__` method on the class. - if (metaclass && isInstantiableClass(metaclass) && !ClassType.isSameGenericClass(metaclass, type)) { - constructorMethodInfo = getTypeOfClassMemberName( - errorNode, - metaclass, - /* isAccessedThroughObject */ true, - '__call__', - { method: 'get' }, - /* diag */ undefined, - MemberAccessFlags.ConsiderMetaclassOnly | - MemberAccessFlags.SkipTypeBaseClass | - MemberAccessFlags.SkipAttributeAccessOverride, - type - ); - - if (constructorMethodInfo) { - usedMetaclassCallMethod = true; - } - } - - if (!constructorMethodInfo) { - constructorMethodInfo = getTypeOfClassMemberName( - errorNode, - type, - /* isAccessedThroughObject */ false, - '__new__', - { method: 'get' }, - /* diag */ undefined, - MemberAccessFlags.AccessClassMembersOnly | - MemberAccessFlags.SkipObjectBaseClass | - MemberAccessFlags.TreatConstructorAsClassMethod, - type - ); - } - - if (constructorMethodInfo && !skipConstructorCheck(constructorMethodInfo.type)) { - const constructorMethodType = constructorMethodInfo.type; - let newReturnType: Type | undefined; - - // If there is an expected type that was not applied above when - // handling the __init__ method, try to apply it with the __new__ method. - if (inferenceContext && !returnType) { - const expectedCallResult = validateConstructorMethodWithContext( - errorNode, - argList, - type, - skipUnknownArgCheck, - inferenceContext, - constructorMethodType - ); - - if (expectedCallResult && !expectedCallResult.argumentErrors) { - newReturnType = expectedCallResult.returnType; - returnType = newReturnType; - - if (expectedCallResult.isTypeIncomplete) { - isTypeIncomplete = true; - } - } - } - - const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); - - if (type.typeAliasInfo) { - typeVarContext.addSolveForScope(type.typeAliasInfo.typeVarScopeId); - } - - typeVarContext.addSolveForScope(getTypeVarScopeId(constructorMethodType)); - - // Skip the unknown argument check if we've already checked for __init__. - let callResult: CallResult; - if (hasConstructorTransform(type)) { - // Use speculative mode if we're going to later apply - // a constructor transform. This allows us to use bidirectional - // type inference for arguments in the transform. - callResult = useSpeculativeMode(errorNode, () => { - return validateCallArguments( - errorNode, - argList, - constructorMethodInfo!, - typeVarContext, - skipUnknownArgCheck - ); - }); - } else { - callResult = validateCallArguments( - errorNode, - argList, - constructorMethodInfo, - typeVarContext, - skipUnknownArgCheck - ); - } - - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } - - if (callResult.argumentErrors) { - reportedErrors = true; - } else if (!newReturnType) { - newReturnType = callResult.returnType; - - if (overloadsUsedForCall.length === 0) { - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - } - - // If the constructor returned an object whose type matches the class of - // the original type being constructed, use the return type in case it was - // specialized. If it doesn't match, we'll fall back on the assumption that - // the constructed type is an instance of the class type. We need to do this - // in cases where we're inferring the return type based on a call to - // super().__new__(). - if (newReturnType) { - if (isClassInstance(newReturnType) && ClassType.isSameGenericClass(newReturnType, type)) { - // If the specialized return type derived from the __init__ - // method is "better" than the return type provided by the - // __new__ method (where "better" means that the type arguments - // are all known), stick with the __init__ result. - if ( - (!isPartlyUnknown(newReturnType) && !requiresSpecialization(newReturnType)) || - returnType === undefined - ) { - // Special-case the 'tuple' type specialization to use - // the homogenous arbitrary-length form. - if ( - isClassInstance(newReturnType) && - ClassType.isTupleClass(newReturnType) && - !newReturnType.tupleTypeArguments && - newReturnType.typeArguments && - newReturnType.typeArguments.length === 1 - ) { - newReturnType = specializeTupleClass(newReturnType, [ - { type: newReturnType.typeArguments[0], isUnbounded: true }, - ]); - } - - returnType = newReturnType; - } - } else if (!returnType && !isUnknown(newReturnType)) { - returnType = newReturnType; - } - } - } - - if (!returnType) { - returnType = applyExpectedTypeForConstructor(type, inferenceContext, typeVarContext); - } else if (isClassInstance(returnType) && isTupleClass(returnType) && !returnType.tupleTypeArguments) { - returnType = applyExpectedTypeForTupleConstructor(returnType, inferenceContext); - } - validatedTypes = true; - } - } - - // If we weren't able to validate the args, analyze the expressions - // here to mark symbols as referenced and report expression-level errors. - if (!validatedTypes) { - argList.forEach((arg) => { - if (arg.valueExpression && !speculativeTypeTracker.isSpeculative(arg.valueExpression)) { - getTypeOfExpression(arg.valueExpression); - } - }); - } - - if (!validatedTypes && argList.some((arg) => arg.argumentCategory === ArgumentCategory.Simple)) { - // Suppress this error if the class was instantiated from a custom - // metaclass because it's likely that it's a false positive. Also - // suppress the error if the class's metaclass has a __call__ method. - const isCustomMetaclass = - !!type.details.effectiveMetaclass && - isInstantiableClass(type.details.effectiveMetaclass) && - !ClassType.isBuiltIn(type.details.effectiveMetaclass); - - if (!isCustomMetaclass && !usedMetaclassCallMethod) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); - addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.constructorNoArgs().format({ type: type.aliasName || type.details.name }), - errorNode - ); - } - } - - if (!returnType) { - // There was no __init__ or __new__ method or we couldn't match the provided - // arguments to them. - if (!inferenceContext && type.typeArguments) { - // If there was no expected type but the type was already specialized, - // assume that we're constructing an instance of the specialized type. - returnType = convertToInstance(type); - } else { - // Do our best to specialize the instantiated class based on the expected - // type if provided. - const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); - - if (inferenceContext) { - populateTypeVarContextBasedOnExpectedType( - evaluatorInterface, - ClassType.cloneAsInstance(type), - inferenceContext.expectedType, - typeVarContext, - getTypeVarScopesForNode(errorNode) - ); - } - - returnType = applyExpectedTypeForConstructor(type, inferenceContext, typeVarContext); - } - } - - if (!reportedErrors) { - const transformed = applyConstructorTransform(evaluatorInterface, errorNode, argList, type, { - argumentErrors: reportedErrors, - returnType, - isTypeIncomplete, - }); - - returnType = transformed.returnType; - - if (transformed.isTypeIncomplete) { - isTypeIncomplete = true; - } - - if (transformed.argumentErrors) { - reportedErrors = true; - } - } - - const result: CallResult = { - argumentErrors: reportedErrors, - returnType, - isTypeIncomplete, - overloadsUsedForCall, - }; - - return result; - } - - // For a constructor call that targets a generic class and an "expected type" - // (i.e. bidirectional inference), this function attempts to infer the correct - // specialized return type for the constructor. - function validateConstructorMethodWithContext( - errorNode: ExpressionNode, - argList: FunctionArgument[], - type: ClassType, - skipUnknownArgCheck: boolean, - inferenceContext: InferenceContext, - constructorMethodType: Type - ): CallResult | undefined { - let isTypeIncomplete = false; - let argumentErrors = false; - const overloadsUsedForCall: FunctionType[] = []; - - const returnType = mapSubtypes(inferenceContext.expectedType, (expectedSubType) => { - expectedSubType = transformPossibleRecursiveTypeAlias(expectedSubType); - - const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); - typeVarContext.addSolveForScope(getTypeVarScopeId(constructorMethodType)); - - if ( - populateTypeVarContextBasedOnExpectedType( - evaluatorInterface, - ClassType.cloneAsInstance(type), - expectedSubType, - typeVarContext, - getTypeVarScopesForNode(errorNode) - ) - ) { - const specializedConstructor = applySolvedTypeVars(constructorMethodType, typeVarContext); - - let callResult: CallResult | undefined; - useSpeculativeMode(errorNode, () => { - callResult = validateCallArguments( - errorNode, - argList, - { type: specializedConstructor }, - typeVarContext.clone(), - skipUnknownArgCheck - ); - }); - - if (!callResult!.argumentErrors) { - // Call validateCallArguments again, this time without speculative - // mode, so any errors are reported. - callResult = validateCallArguments( - errorNode, - argList, - { type: specializedConstructor }, - typeVarContext, - skipUnknownArgCheck - ); - - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } - - if (callResult.argumentErrors) { - argumentErrors = true; - } - - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - - return applyExpectedSubtypeForConstructor(type, expectedSubType, inferenceContext, typeVarContext); - } - } - - return undefined; - }); - - if (isNever(returnType)) { - return undefined; - } - - return { returnType, isTypeIncomplete, argumentErrors, overloadsUsedForCall }; - } - - function applyExpectedSubtypeForConstructor( - type: ClassType, - expectedSubtype: Type, - inferenceContext: InferenceContext, - typeVarContext: TypeVarContext - ): Type | undefined { - const specializedType = applySolvedTypeVars(ClassType.cloneAsInstance(type), typeVarContext); - - if ( - !assignType( - expectedSubtype, - specializedType, - /* diag */ undefined, - /* destTypeVarContext */ inferenceContext?.typeVarContext?.clone(), - /* srcTypeVarContext */ undefined - ) - ) { - return undefined; - } - - // If the expected type is "Any", transform it to an Any. - if (isAny(expectedSubtype)) { - return expectedSubtype; - } - - return specializedType; - } - - // Handles the case where a constructor is a generic type and the type - // arguments are not specified but can be provided by the expected type. - function applyExpectedTypeForConstructor( - type: ClassType, - inferenceContext: InferenceContext | undefined, - typeVarContext: TypeVarContext - ): Type { - let unsolvedTypeVarsAreUnknown = true; - - if (inferenceContext) { - const specializedExpectedType = mapSubtypes(inferenceContext.expectedType, (expectedSubtype) => { - return applyExpectedSubtypeForConstructor(type, expectedSubtype, inferenceContext, typeVarContext); - }); - - if (!isNever(specializedExpectedType)) { - return specializedExpectedType; - } - - // If the expected type didn't provide TypeVar values, remaining - // unsolved TypeVars should be considered Unknown unless they were - // provided explicitly in the constructor call. - if (type.typeArguments) { - unsolvedTypeVarsAreUnknown = false; - } - } - - const specializedType = applySolvedTypeVars(type, typeVarContext, { - unknownIfNotFound: unsolvedTypeVarsAreUnknown, - }) as ClassType; - return ClassType.cloneAsInstance(specializedType); - } - - // Similar to applyExpectedTypeForConstructor, this function handles the - // special case of the tuple class. - function applyExpectedTypeForTupleConstructor(type: ClassType, inferenceContext: InferenceContext | undefined) { - let specializedType = type; - - if ( - inferenceContext && - isClassInstance(inferenceContext.expectedType) && - isTupleClass(inferenceContext.expectedType) && - inferenceContext.expectedType.tupleTypeArguments - ) { - specializedType = specializeTupleClass(type, inferenceContext.expectedType.tupleTypeArguments); - } - - return specializedType; - } - // Validates that the arguments can be assigned to the call's parameter // list, specializes the call based on arg types, and returns the // specialized type of the return value. If it detects an error along @@ -9220,7 +8617,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // to be done again once it is complete. if (!callTypeResult.isIncomplete) { argList.forEach((arg) => { - if (arg.valueExpression && !speculativeTypeTracker.isSpeculative(arg.valueExpression)) { + if (arg.valueExpression && !isSpeculativeModeInUse(arg.valueExpression)) { getTypeOfArgument(arg); } }); @@ -9421,6 +8818,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (className === 'type') { // Validate the constructor arguments. validateConstructorArguments( + evaluatorInterface, errorNode, argList, expandedSubtype, @@ -9572,6 +8970,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Assume this is a call to the constructor. const constructorResult = validateConstructorArguments( + evaluatorInterface, errorNode, argList, expandedSubtype, @@ -10685,7 +10084,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If we're in speculative mode and an arg/param mismatch has already been reported, don't // bother doing the extra work here. This occurs frequently when attempting to find the // correct overload. - if (!reportedArgError || !speculativeTypeTracker.isSpeculative(undefined)) { + if (!reportedArgError || !isSpeculativeModeInUse(undefined)) { // If there are arguments that map to a variadic *args parameter that hasn't // already been matched, see if the type of that *args parameter is a variadic // type variable. If so, we'll preprocess those arguments and combine them @@ -10883,7 +10282,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions effectiveReturnType, effectiveExpectedType, tempTypeVarContext, - getTypeVarScopesForNode(errorNode) + ParseTreeUtils.getTypeVarScopesForNode(errorNode) ); const genericReturnType = ClassType.cloneForSpecialization( @@ -11148,7 +10547,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions break; } - const typeVarScopeId = getScopeIdForNode(typeVarScopeNode); + const typeVarScopeId = ParseTreeUtils.getScopeIdForNode(typeVarScopeNode); if (typeVarContext.hasSolveForScope(typeVarScopeId)) { eliminateUnsolvedInUnions = false; } @@ -11177,7 +10576,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // We'll also leave TypeVars unsolved if the call is a recursive // call to a generic function. - const typeVarScopes = getTypeVarScopesForNode(errorNode); + const typeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); if (typeVarScopes.some((typeVarScope) => typeVarContext.hasSolveForScope(typeVarScope))) { unknownIfNotFound = false; } @@ -11285,7 +10684,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Evaluate types of all args. This will ensure that referenced symbols are // not reported as unaccessed. argList.forEach((arg) => { - if (arg.valueExpression && !speculativeTypeTracker.isSpeculative(arg.valueExpression)) { + if (arg.valueExpression && !isSpeculativeModeInUse(arg.valueExpression)) { getTypeOfExpression(arg.valueExpression); } }); @@ -11593,11 +10992,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions expectedTypeDiag = exprTypeResult.expectedTypeDiagAddendum; } - if ( - argParam.argument && - argParam.argument.name && - !speculativeTypeTracker.isSpeculative(argParam.errorNode) - ) { + if (argParam.argument && argParam.argument.name && !isSpeculativeModeInUse(argParam.errorNode)) { writeTypeCache( argParam.argument.name, { type: expectedType ?? argType, isIncomplete: isTypeIncomplete }, @@ -11678,7 +11073,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const concreteParamType = makeTopLevelTypeVarsConcrete(argParam.paramType); if (isFunction(concreteParamType) || isOverloadedFunction(concreteParamType)) { if (isInstantiableClass(argType)) { - const constructor = createFunctionFromConstructor(argType); + const constructor = createFunctionFromConstructor(evaluatorInterface, argType); if (constructor && isOverloadedFunction(constructor)) { return { isCompatible, argType, isTypeIncomplete, skippedOverloadArg: true, condition }; } @@ -13530,7 +12925,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions builtInDict, inferenceContext.expectedType, dictTypeVarContext, - getTypeVarScopesForNode(node) + ParseTreeUtils.getTypeVarScopesForNode(node) ) ) { return undefined; @@ -13942,7 +13337,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions builtInListOrSet, inferenceContext.expectedType, typeVarContext, - getTypeVarScopesForNode(node) + ParseTreeUtils.getTypeVarScopesForNode(node) ) ) { return undefined; @@ -14258,7 +13653,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getTypeOfLambda(node: LambdaNode, inferenceContext: InferenceContext | undefined): TypeResult { let isIncomplete = !!inferenceContext?.isTypeIncomplete; const functionType = FunctionType.createInstance('', '', '', FunctionTypeFlags.PartiallyEvaluated); - functionType.details.typeVarScopeId = getScopeIdForNode(node); + functionType.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); // Pre-cache the incomplete function type in case the evaluation of the // lambda depends on itself. @@ -14405,7 +13800,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } }; - if (speculativeTypeTracker.isSpeculative(node) || inferenceContext?.isTypeIncomplete) { + if (isSpeculativeModeInUse(node) || inferenceContext?.isTypeIncomplete) { // We need to set allowCacheRetention to false because we don't want to // cache the type of the lambda return expression because it depends on // the parameter types that we set above, and the speculative type cache @@ -14561,7 +13956,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Evaluate the test expression to validate it and mark symbols // as referenced. Don't bother doing this if we're in speculative // mode because it doesn't affect the element type. - if (!speculativeTypeTracker.isSpeculative(node.testExpression)) { + if (!isSpeculativeModeInUse(node.testExpression)) { getTypeOfExpression(node.testExpression); } } @@ -14650,7 +14045,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getTypeOfSlice(node: SliceNode): TypeResult { // Evaluate the expressions to report errors and record symbol // references. We can skip this if we're executing speculatively. - if (!speculativeTypeTracker.isSpeculative(node)) { + if (!isSpeculativeModeInUse(node)) { if (node.startValue) { getTypeOfExpression(node.startValue); } @@ -14733,7 +14128,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const functionType = FunctionType.createInstantiable(FunctionTypeFlags.None); TypeBase.setSpecialForm(functionType); functionType.details.declaredReturnType = UnknownType.create(); - functionType.details.typeVarScopeId = getScopeIdForNode(errorNode); + functionType.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(errorNode); if (typeArgs && typeArgs.length > 0) { if (typeArgs[0].typeList) { @@ -15621,7 +15016,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } const fileInfo = AnalyzerNodeInfo.getFileInfo(name); - const typeAliasScopeId = getScopeIdForNode(name); + const typeAliasScopeId = ParseTreeUtils.getScopeIdForNode(name); const boundTypeVars = typeParameters.filter( (typeVar) => typeVar.scopeId !== typeAliasScopeId && typeVar.scopeType === TypeVarScopeType.Class @@ -15898,7 +15293,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeAliasTypeVar = TypeVarType.createInstantiable(`__type_alias_${typeAliasNameNode.value}`); typeAliasTypeVar.details.isSynthesized = true; typeAliasTypeVar.details.recursiveTypeAliasName = typeAliasNameNode.value; - const scopeId = getScopeIdForNode(typeAliasNameNode); + const scopeId = ParseTreeUtils.getScopeIdForNode(typeAliasNameNode); typeAliasTypeVar.details.recursiveTypeAliasScopeId = scopeId; typeAliasTypeVar.scopeId = scopeId; @@ -16061,7 +15456,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const typeAliasTypeVar = TypeVarType.createInstantiable(`__type_alias_${node.name.value}`); typeAliasTypeVar.details.isSynthesized = true; typeAliasTypeVar.details.recursiveTypeAliasName = node.name.value; - const scopeId = getScopeIdForNode(node.name); + const scopeId = ParseTreeUtils.getScopeIdForNode(node.name); typeAliasTypeVar.details.recursiveTypeAliasScopeId = scopeId; typeAliasTypeVar.scopeId = scopeId; @@ -16200,7 +15595,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ParseTreeUtils.getDocString(node.suite.statements) ); - classType.details.typeVarScopeId = getScopeIdForNode(node); + classType.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); // Some classes refer to themselves within type arguments used within // base classes. We'll register the partially-constructed class type @@ -16621,11 +16016,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getPseudoGenericTypeVarName(param.name!.value) ); typeVar.details.isSynthesized = true; - typeVar.scopeId = getScopeIdForNode(initDeclNode); + typeVar.scopeId = ParseTreeUtils.getScopeIdForNode(initDeclNode); typeVar.details.boundType = UnknownType.create(); return TypeVarType.cloneForScopeId( typeVar, - getScopeIdForNode(node), + ParseTreeUtils.getScopeIdForNode(node), node.name.value, TypeVarScopeType.Class ); @@ -17424,11 +16819,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ParseTreeUtils.getDocString(node.suite.statements) ); - functionType.details.typeVarScopeId = getScopeIdForNode(node); + functionType.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); if (node.name.value === '__init__' || node.name.value === '__new__') { if (containingClassNode) { - functionType.details.constructorTypeVarScopeId = getScopeIdForNode(containingClassNode); + functionType.details.constructorTypeVarScopeId = ParseTreeUtils.getScopeIdForNode(containingClassNode); } } @@ -20530,6 +19925,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + // Indicates whether the specified node is within a context that + // is currently being evaluated speculative. If node is undefined, + // returns true if any node is being evaluated speculatively. + function isSpeculativeModeInUse(node: ParseNode | undefined) { + return speculativeTypeTracker.isSpeculative(node); + } + function getDeclarationFromFunctionNamedParameter(type: FunctionType, paramName: string): Declaration | undefined { if (isFunction(type)) { if (type.details.declaration) { @@ -21062,7 +20464,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeVar = TypeVarType.cloneForScopeId( typeVar, - getScopeIdForNode(scopeNode.nodeType === ParseNodeType.TypeAlias ? scopeNode.name : scopeNode), + ParseTreeUtils.getScopeIdForNode( + scopeNode.nodeType === ParseNodeType.TypeAlias ? scopeNode.name : scopeNode + ), scopeNode.name.value, scopeType ); @@ -21592,7 +20996,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } typesToCombine.push(type); - if (speculativeTypeTracker.isSpeculative(decl.node)) { + if (isSpeculativeModeInUse(decl.node)) { includesSpeculativeResult = true; } } else { @@ -23507,7 +22911,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If it's a class, use the constructor for type compatibility checking. if (isInstantiableClass(concreteSrcType) && concreteSrcType.literalValue === undefined) { - const constructor = createFunctionFromConstructor(concreteSrcType, recursionCount); + const constructor = createFunctionFromConstructor(evaluatorInterface, concreteSrcType, recursionCount); if (constructor) { concreteSrcType = constructor; } @@ -24245,139 +23649,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); } - // Synthesize a function that represents the constructor for this class - // taking into consideration the __init__ and __new__ methods. - function createFunctionFromConstructor( - classType: ClassType, - recursionCount = 0 - ): FunctionType | OverloadedFunctionType | undefined { - // Use the __init__ method if available. It's usually more detailed. - const initInfo = lookUpClassMember( - classType, - '__init__', - ClassMemberLookupFlags.SkipInstanceVariables | ClassMemberLookupFlags.SkipObjectBaseClass - ); - - if (initInfo) { - const initType = getTypeOfMember(initInfo); - const objectType = ClassType.cloneAsInstance(classType); - - const convertInitToConstructor = (initSubtype: FunctionType) => { - let constructorFunction = bindFunctionToClassOrObject( - objectType, - initSubtype, - /* memberClass */ undefined, - /* errorNode */ undefined, - recursionCount - ) as FunctionType | undefined; - - if (constructorFunction) { - constructorFunction = FunctionType.clone(constructorFunction); - constructorFunction.details.declaredReturnType = objectType; - - if (constructorFunction.specializedTypes) { - constructorFunction.specializedTypes.returnType = objectType; - } - - if (!constructorFunction.details.docString && classType.details.docString) { - constructorFunction.details.docString = classType.details.docString; - } - - constructorFunction.details.flags &= ~FunctionTypeFlags.StaticMethod; - } - - return constructorFunction; - }; - - if (isFunction(initType)) { - return convertInitToConstructor(initType); - } else if (isOverloadedFunction(initType)) { - const initOverloads: FunctionType[] = []; - initType.overloads.forEach((overload) => { - const converted = convertInitToConstructor(overload); - if (converted) { - initOverloads.push(converted); - } - }); - - if (initOverloads.length === 0) { - return undefined; - } else if (initOverloads.length === 1) { - return initOverloads[0]; - } - - return OverloadedFunctionType.create(initOverloads); - } - } - - // Fall back on the __new__ method if __init__ isn't available. - const newInfo = lookUpClassMember( - classType, - '__new__', - ClassMemberLookupFlags.SkipInstanceVariables | ClassMemberLookupFlags.SkipObjectBaseClass - ); - - if (newInfo) { - const newType = getTypeOfMember(newInfo); - - const convertNewToConstructor = (newSubtype: FunctionType) => { - let constructorFunction = bindFunctionToClassOrObject( - classType, - newSubtype, - /* memberClass */ undefined, - /* errorNode */ undefined, - recursionCount, - /* treatConstructorAsClassMember */ true - ) as FunctionType | undefined; - - if (constructorFunction) { - constructorFunction = FunctionType.clone(constructorFunction); - - if (!constructorFunction.details.docString && classType.details.docString) { - constructorFunction.details.docString = classType.details.docString; - } - - constructorFunction.details.flags &= ~( - FunctionTypeFlags.StaticMethod | FunctionTypeFlags.ConstructorMethod - ); - } - - return constructorFunction; - }; - - if (isFunction(newType)) { - return convertNewToConstructor(newType); - } else if (isOverloadedFunction(newType)) { - const newOverloads: FunctionType[] = []; - newType.overloads.forEach((overload) => { - const converted = convertNewToConstructor(overload); - if (converted) { - newOverloads.push(converted); - } - }); - - if (newOverloads.length === 0) { - return undefined; - } else if (newOverloads.length === 1) { - return newOverloads[0]; - } - - return OverloadedFunctionType.create(newOverloads); - } - } - - // Return a generic constructor. - const constructorFunction = FunctionType.createSynthesizedInstance('__new__', FunctionTypeFlags.None); - constructorFunction.details.declaredReturnType = ClassType.cloneAsInstance(classType); - FunctionType.addDefaultParameters(constructorFunction); - - if (!constructorFunction.details.docString && classType.details.docString) { - constructorFunction.details.docString = classType.details.docString; - } - - return constructorFunction; - } - // If the class is a protocol and it has a `__call__` method but no other methods // or attributes that would be incompatible with a function, this method returns // the signature of the call implied by the `__call__` method. Otherwise it returns @@ -26498,7 +25769,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getGetterTypeFromProperty, getTypeOfArgument, markNamesAccessed, - getScopeIdForNode, makeTopLevelTypeVarsConcrete, mapSubtypesExpandTypeVars, lookUpSymbolRecursive, @@ -26513,8 +25783,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getBuiltInType, getTypeOfMember, getTypeOfObjectMember, + getTypeOfClassMemberName, getBoundMethod, - createFunctionFromConstructor, getTypeOfMagicMethodReturn, bindFunctionToClassOrObject, getCallSignatureInfo, @@ -26522,6 +25792,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions narrowConstrainedTypeVar, assignType, validateOverrideMethod, + validateCallArguments, assignTypeToExpression, assignClassToSelf, getTypedDictClassType, @@ -26548,6 +25819,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getTypeCacheEntryCount, disposeEvaluator, useSpeculativeMode, + isSpeculativeModeInUse, setTypeForNode, checkForCancellation, printControlFlowGraph, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 6932ff295..8f3a8d219 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -337,6 +337,28 @@ export interface CallResult { argResults?: ArgResult[]; } +export interface ClassMemberLookup { + symbol: Symbol | undefined; + + // Type of symbol. + type: Type; + isTypeIncomplete: boolean; + + // True if class member, false otherwise. + isClassMember: boolean; + + // The class that declares the accessed member. + classType?: ClassType | UnknownType; + + // True if the member is explicitly declared as ClassVar + // within a Protocol. + isClassVar: boolean; + + // Is member a descriptor object that is asymmetric with respect + // to __get__ and __set__ types? + isAsymmetricDescriptor: boolean; +} + export interface PrintTypeOptions { expandTypeAlias?: boolean; enforcePythonSyntax?: boolean; @@ -355,6 +377,47 @@ export interface ResolveAliasOptions { skipFileNeededCheck?: boolean; } +export const enum MemberAccessFlags { + None = 0, + + // By default, member accesses are assumed to access the attributes + // of a class instance. By setting this flag, only attributes of + // the class are considered. + AccessClassMembersOnly = 1 << 0, + + // By default, members of base classes are also searched. + // Set this flag to consider only the specified class' members. + SkipBaseClasses = 1 << 1, + + // Do not include the "object" base class in the search. + SkipObjectBaseClass = 1 << 2, + + // Consider writes to symbols flagged as ClassVars as an error. + DisallowClassVarWrites = 1 << 3, + + // Normally __new__ is treated as a static method, but when + // it is invoked implicitly through a constructor call, it + // acts like a class method instead. + TreatConstructorAsClassMethod = 1 << 4, + + // By default, class member lookups start with the class itself + // and fall back on the metaclass if it's not found. This option + // skips the first check. + ConsiderMetaclassOnly = 1 << 5, + + // If an attribute cannot be found when looking for instance + // members, normally an attribute access override method + // (__getattr__, etc.) may provide the missing attribute type. + // This disables this check. + SkipAttributeAccessOverride = 1 << 6, + + // Do not include the class itself, only base classes. + SkipOriginalClass = 1 << 7, + + // Do not include the "type" base class in the search. + SkipTypeBaseClass = 1 << 8, +} + export interface TypeEvaluator { runWithCancellationToken(token: CancellationToken, callback: () => T): T; @@ -421,7 +484,6 @@ export interface TypeEvaluator { getGetterTypeFromProperty: (propertyClass: ClassType, inferTypeIfNeeded: boolean) => Type | undefined; getTypeOfArgument: (arg: FunctionArgument) => TypeResult; markNamesAccessed: (node: ParseNode, names: string[]) => void; - getScopeIdForNode: (node: ParseNode) => string; makeTopLevelTypeVarsConcrete: (type: Type, makeParamSpecsConcrete?: boolean) => Type; mapSubtypesExpandTypeVars: ( type: Type, @@ -447,14 +509,31 @@ export interface TypeEvaluator { ) => FunctionType | undefined; getBuiltInType: (node: ParseNode, name: string) => Type; getTypeOfMember: (member: ClassMember) => Type; - getTypeOfObjectMember(errorNode: ExpressionNode, objectType: ClassType, memberName: string): TypeResult | undefined; + getTypeOfObjectMember( + errorNode: ExpressionNode, + objectType: ClassType, + memberName: string, + usage?: EvaluatorUsage, + diag?: DiagnosticAddendum | undefined, + memberAccessFlags?: MemberAccessFlags, + bindToType?: ClassType | TypeVarType + ): TypeResult | undefined; + getTypeOfClassMemberName: ( + errorNode: ExpressionNode, + classType: ClassType, + isAccessedThroughObject: boolean, + memberName: string, + usage: EvaluatorUsage, + diag: DiagnosticAddendum | undefined, + flags: MemberAccessFlags, + bindToType?: ClassType | TypeVarType + ) => ClassMemberLookup | undefined; getBoundMethod: ( classType: ClassType, memberName: string, recursionCount?: number, treatConstructorAsClassMember?: boolean ) => FunctionType | OverloadedFunctionType | undefined; - createFunctionFromConstructor: (classType: ClassType) => FunctionType | OverloadedFunctionType | undefined; getTypeOfMagicMethodReturn: ( objType: Type, args: TypeResult[], @@ -490,6 +569,14 @@ export interface TypeEvaluator { diag: DiagnosticAddendum, enforceParamNames?: boolean ) => boolean; + validateCallArguments: ( + errorNode: ExpressionNode, + argList: FunctionArgument[], + callTypeResult: TypeResult, + typeVarContext?: TypeVarContext, + skipUnknownArgCheck?: boolean, + inferenceContext?: InferenceContext + ) => CallResult; assignTypeToExpression: ( target: ExpressionNode, type: Type, @@ -546,6 +633,7 @@ export interface TypeEvaluator { getTypeCacheEntryCount: () => number; disposeEvaluator: () => void; useSpeculativeMode: (speculativeNode: ParseNode, callback: () => T) => T; + isSpeculativeModeInUse: (node: ParseNode | undefined) => boolean; setTypeForNode: (node: ParseNode, type?: Type, flags?: EvaluatorFlags) => void; checkForCancellation: () => void; diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index 60750a35e..680e09122 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -349,7 +349,7 @@ export function synthesizeTypedDictClassMethods( ) => { const getOverload = FunctionType.createSynthesizedInstance('get', FunctionTypeFlags.Overloaded); FunctionType.addParameter(getOverload, selfParam); - getOverload.details.typeVarScopeId = evaluator.getScopeIdForNode(node); + getOverload.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); FunctionType.addParameter(getOverload, { category: ParameterCategory.Simple, name: 'k', @@ -407,7 +407,7 @@ export function synthesizeTypedDictClassMethods( const popOverload2 = FunctionType.createSynthesizedInstance('pop', FunctionTypeFlags.Overloaded); FunctionType.addParameter(popOverload2, selfParam); FunctionType.addParameter(popOverload2, keyParam); - popOverload2.details.typeVarScopeId = evaluator.getScopeIdForNode(node); + popOverload2.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); const defaultTypeVar = createDefaultTypeVar(popOverload2); FunctionType.addParameter(popOverload2, { category: ParameterCategory.Simple, From 346efee56db86eba7a0affe499586979b5b1daa9 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 6 May 2023 00:22:06 -0700 Subject: [PATCH 122/525] Moved type evaluation logic for unary, binary and ternary operations out of the typeEvaluator module and into its own module. This is a refactoring with no functional change. --- .../src/analyzer/operations.ts | 1105 +++++++++++++++++ .../src/analyzer/typeEvaluator.ts | 1056 +--------------- .../src/analyzer/typeEvaluatorTypes.ts | 17 +- 3 files changed, 1131 insertions(+), 1047 deletions(-) create mode 100644 packages/pyright-internal/src/analyzer/operations.ts diff --git a/packages/pyright-internal/src/analyzer/operations.ts b/packages/pyright-internal/src/analyzer/operations.ts new file mode 100644 index 000000000..cbc7ba0e4 --- /dev/null +++ b/packages/pyright-internal/src/analyzer/operations.ts @@ -0,0 +1,1105 @@ +/* + * operations.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * Author: Eric Traut + * + * Provides type evaluation logic for unary, binary, augmented assignment, + * and ternary operators. + */ + +import { DiagnosticAddendum } from '../common/diagnostic'; +import { DiagnosticRule } from '../common/diagnosticRules'; +import { PythonVersion } from '../common/pythonVersion'; +import { Localizer } from '../localization/localize'; +import { + AugmentedAssignmentNode, + BinaryOperationNode, + ExpressionNode, + ParseNodeType, + TernaryNode, + UnaryOperationNode, +} from '../parser/parseNodes'; +import { OperatorType } from '../parser/tokenizerTypes'; +import { getFileInfo } from './analyzerNodeInfo'; +import { isWithinLoop, operatorSupportsChaining, printOperator } from './parseTreeUtils'; +import { evaluateStaticBoolExpression } from './staticExpressions'; +import { EvaluatorFlags, TypeEvaluator, TypeResult } from './typeEvaluatorTypes'; +import { + InferenceContext, + getLiteralTypeClassName, + getTypeCondition, + getUnionSubtypeCount, + isOptionalType, + isTupleClass, + isUnboundedTupleClass, + isUnionableType, + lookUpClassMember, + makeInferenceContext, + mapSubtypes, + preserveUnknown, + specializeTupleClass, +} from './typeUtils'; +import { + ClassType, + NeverType, + NoneType, + Type, + TypeBase, + UnknownType, + combineTypes, + isAnyOrUnknown, + isClass, + isClassInstance, + isFunction, + isInstantiableClass, + isNever, + isNoneInstance, + isOverloadedFunction, + isUnion, + removeNoneFromUnion, +} from './types'; + +// Maps binary operators to the magic methods that implement them. +const binaryOperatorMap: { [operator: number]: [string, string] } = { + [OperatorType.Add]: ['__add__', '__radd__'], + [OperatorType.Subtract]: ['__sub__', '__rsub__'], + [OperatorType.Multiply]: ['__mul__', '__rmul__'], + [OperatorType.FloorDivide]: ['__floordiv__', '__rfloordiv__'], + [OperatorType.Divide]: ['__truediv__', '__rtruediv__'], + [OperatorType.Mod]: ['__mod__', '__rmod__'], + [OperatorType.Power]: ['__pow__', '__rpow__'], + [OperatorType.MatrixMultiply]: ['__matmul__', '__rmatmul__'], + [OperatorType.BitwiseAnd]: ['__and__', '__rand__'], + [OperatorType.BitwiseOr]: ['__or__', '__ror__'], + [OperatorType.BitwiseXor]: ['__xor__', '__rxor__'], + [OperatorType.LeftShift]: ['__lshift__', '__rlshift__'], + [OperatorType.RightShift]: ['__rshift__', '__rrshift__'], + [OperatorType.Equals]: ['__eq__', '__eq__'], + [OperatorType.NotEquals]: ['__ne__', '__ne__'], + [OperatorType.LessThan]: ['__lt__', '__gt__'], + [OperatorType.LessThanOrEqual]: ['__le__', '__ge__'], + [OperatorType.GreaterThan]: ['__gt__', '__lt__'], + [OperatorType.GreaterThanOrEqual]: ['__ge__', '__le__'], +}; + +// Map of operators that always return a bool result. +const booleanOperatorMap: { [operator: number]: true } = { + [OperatorType.And]: true, + [OperatorType.Or]: true, + [OperatorType.Is]: true, + [OperatorType.IsNot]: true, + [OperatorType.In]: true, + [OperatorType.NotIn]: true, +}; + +interface BinaryOperationOptions { + isLiteralMathAllowed?: boolean; + isTupleAddAllowed?: boolean; +} + +// If the number of subtypes starts to explode when applying "literal math", +// cut off the literal union and fall back to the non-literal supertype. +const maxLiteralMathSubtypeCount = 64; + +export function validateBinaryOperation( + evaluator: TypeEvaluator, + operator: OperatorType, + leftTypeResult: TypeResult, + rightTypeResult: TypeResult, + errorNode: ExpressionNode, + inferenceContext: InferenceContext | undefined, + diag: DiagnosticAddendum, + options: BinaryOperationOptions +): Type | undefined { + const leftType = leftTypeResult.type; + const rightType = rightTypeResult.type; + let type: Type | undefined; + let concreteLeftType = evaluator.makeTopLevelTypeVarsConcrete(leftType); + + if (booleanOperatorMap[operator] !== undefined) { + // If it's an AND or OR, we need to handle short-circuiting by + // eliminating any known-truthy or known-falsy types. + if (operator === OperatorType.And) { + // If the LHS evaluates to falsy, the And expression will + // always return the type of the left-hand side. + if (!evaluator.canBeTruthy(concreteLeftType)) { + return leftType; + } + + // If the LHS evaluates to truthy, the And expression will + // always return the type of the right-hand side. + if (!evaluator.canBeFalsy(concreteLeftType)) { + return rightType; + } + + concreteLeftType = evaluator.removeTruthinessFromType(concreteLeftType); + + if (isNever(rightType)) { + return concreteLeftType; + } + } else if (operator === OperatorType.Or) { + // If the LHS evaluates to truthy, the Or expression will + // always return the type of the left-hand side. + if (!evaluator.canBeFalsy(concreteLeftType)) { + return leftType; + } + + // If the LHS evaluates to falsy, the Or expression will + // always return the type of the right-hand side. + if (!evaluator.canBeTruthy(concreteLeftType)) { + return rightType; + } + + concreteLeftType = evaluator.removeFalsinessFromType(concreteLeftType); + + if (isNever(rightType)) { + return concreteLeftType; + } + } + + if (isNever(leftType) || isNever(rightType)) { + return NeverType.createNever(); + } + + // The "in" and "not in" operators make use of the __contains__ + // magic method. + if (operator === OperatorType.In || operator === OperatorType.NotIn) { + type = evaluator.mapSubtypesExpandTypeVars( + rightType, + /* conditionFilter */ undefined, + (rightSubtypeExpanded, rightSubtypeUnexpanded) => { + return evaluator.mapSubtypesExpandTypeVars( + concreteLeftType, + getTypeCondition(rightSubtypeExpanded), + (leftSubtype) => { + if (isAnyOrUnknown(leftSubtype) || isAnyOrUnknown(rightSubtypeUnexpanded)) { + return preserveUnknown(leftSubtype, rightSubtypeExpanded); + } + + let returnType = evaluator.getTypeOfMagicMethodReturn( + rightSubtypeExpanded, + [{ type: leftSubtype, isIncomplete: leftTypeResult.isIncomplete }], + '__contains__', + errorNode, + /* inferenceContext */ undefined + ); + + if (!returnType) { + // If __contains__ was not supported, fall back + // on an iterable. + const iteratorType = evaluator.getTypeOfIterator( + { type: rightSubtypeExpanded, isIncomplete: rightTypeResult.isIncomplete }, + /* isAsync */ false, + /* errorNode */ undefined + )?.type; + + if (iteratorType && evaluator.assignType(iteratorType, leftSubtype)) { + returnType = evaluator.getBuiltInObject(errorNode, 'bool'); + } + } + + if (!returnType) { + diag.addMessage( + Localizer.Diagnostic.typeNotSupportBinaryOperator().format({ + operator: printOperator(operator), + leftType: evaluator.printType(leftSubtype), + rightType: evaluator.printType(rightSubtypeExpanded), + }) + ); + } + + return returnType; + } + ); + } + ); + + // Assume that a bool is returned even if the type is unknown + if (type && !isNever(type)) { + type = evaluator.getBuiltInObject(errorNode, 'bool'); + } + } else { + type = evaluator.mapSubtypesExpandTypeVars( + concreteLeftType, + /* conditionFilter */ undefined, + (leftSubtypeExpanded, leftSubtypeUnexpanded) => { + return evaluator.mapSubtypesExpandTypeVars( + rightType, + getTypeCondition(leftSubtypeExpanded), + (rightSubtypeExpanded, rightSubtypeUnexpanded) => { + // If the operator is an AND or OR, we need to combine the two types. + if (operator === OperatorType.And || operator === OperatorType.Or) { + return combineTypes([leftSubtypeUnexpanded, rightSubtypeUnexpanded]); + } + // The other boolean operators always return a bool value. + return evaluator.getBuiltInObject(errorNode, 'bool'); + } + ); + } + ); + } + } else if (binaryOperatorMap[operator]) { + if (isNever(leftType) || isNever(rightType)) { + return NeverType.createNever(); + } + + // Handle certain operations on certain homogenous literal types + // using special-case math. For example, Literal[1, 2] + Literal[3, 4] + // should result in Literal[4, 5, 6]. + if (options.isLiteralMathAllowed) { + const leftLiteralClassName = getLiteralTypeClassName(leftType); + if (leftLiteralClassName && !getTypeCondition(leftType)) { + const rightLiteralClassName = getLiteralTypeClassName(rightType); + + if ( + leftLiteralClassName === rightLiteralClassName && + !getTypeCondition(rightType) && + getUnionSubtypeCount(leftType) * getUnionSubtypeCount(rightType) < maxLiteralMathSubtypeCount + ) { + if (leftLiteralClassName === 'str' || leftLiteralClassName === 'bytes') { + if (operator === OperatorType.Add) { + type = mapSubtypes(leftType, (leftSubtype) => { + return mapSubtypes(rightType, (rightSubtype) => { + const leftClassSubtype = leftSubtype as ClassType; + const rightClassSubtype = rightSubtype as ClassType; + + return ClassType.cloneWithLiteral( + leftClassSubtype, + ((leftClassSubtype.literalValue as string) + + rightClassSubtype.literalValue) as string + ); + }); + }); + } + } else if (leftLiteralClassName === 'int') { + if ( + operator === OperatorType.Add || + operator === OperatorType.Subtract || + operator === OperatorType.Multiply || + operator === OperatorType.FloorDivide || + operator === OperatorType.Mod + ) { + let isValidResult = true; + + type = mapSubtypes(leftType, (leftSubtype) => { + return mapSubtypes(rightType, (rightSubtype) => { + try { + const leftClassSubtype = leftSubtype as ClassType; + const rightClassSubtype = rightSubtype as ClassType; + const leftLiteralValue = BigInt( + leftClassSubtype.literalValue as number | bigint + ); + const rightLiteralValue = BigInt( + rightClassSubtype.literalValue as number | bigint + ); + + let newValue: number | bigint | undefined; + if (operator === OperatorType.Add) { + newValue = leftLiteralValue + rightLiteralValue; + } else if (operator === OperatorType.Subtract) { + newValue = leftLiteralValue - rightLiteralValue; + } else if (operator === OperatorType.Multiply) { + newValue = leftLiteralValue * rightLiteralValue; + } else if (operator === OperatorType.FloorDivide) { + if (rightLiteralValue !== BigInt(0)) { + newValue = leftLiteralValue / rightLiteralValue; + } + } else if (operator === OperatorType.Mod) { + if (rightLiteralValue !== BigInt(0)) { + newValue = leftLiteralValue % rightLiteralValue; + } + } + + if (newValue === undefined) { + isValidResult = false; + return undefined; + } else if (typeof newValue === 'number' && isNaN(newValue)) { + isValidResult = false; + return undefined; + } else { + // Convert back to a simple number if it fits. Leave as a bigint + // if it doesn't. + if ( + newValue >= Number.MIN_SAFE_INTEGER && + newValue <= Number.MAX_SAFE_INTEGER + ) { + newValue = Number(newValue); + } + + return ClassType.cloneWithLiteral(leftClassSubtype, newValue); + } + } catch { + isValidResult = false; + return undefined; + } + }); + }); + + if (!isValidResult) { + type = undefined; + } + } + } + } + } + } + + if (!type) { + type = evaluator.mapSubtypesExpandTypeVars( + leftType, + /* conditionFilter */ undefined, + (leftSubtypeExpanded, leftSubtypeUnexpanded) => { + return evaluator.mapSubtypesExpandTypeVars( + rightType, + getTypeCondition(leftSubtypeExpanded), + (rightSubtypeExpanded, rightSubtypeUnexpanded) => { + if (isAnyOrUnknown(leftSubtypeUnexpanded) || isAnyOrUnknown(rightSubtypeUnexpanded)) { + return preserveUnknown(leftSubtypeUnexpanded, rightSubtypeUnexpanded); + } + + const tupleClassType = evaluator.getTupleClassType(); + + // Special-case __add__ for tuples when the types for both tuples are known. + if ( + options.isTupleAddAllowed && + operator === OperatorType.Add && + isClassInstance(leftSubtypeExpanded) && + isTupleClass(leftSubtypeExpanded) && + leftSubtypeExpanded.tupleTypeArguments && + !isUnboundedTupleClass(leftSubtypeExpanded) && + isClassInstance(rightSubtypeExpanded) && + isTupleClass(rightSubtypeExpanded) && + rightSubtypeExpanded.tupleTypeArguments && + !isUnboundedTupleClass(rightSubtypeExpanded) && + tupleClassType && + isInstantiableClass(tupleClassType) + ) { + return ClassType.cloneAsInstance( + specializeTupleClass(tupleClassType, [ + ...leftSubtypeExpanded.tupleTypeArguments, + ...rightSubtypeExpanded.tupleTypeArguments, + ]) + ); + } + + const magicMethodName = binaryOperatorMap[operator][0]; + let resultType = evaluator.getTypeOfMagicMethodReturn( + convertFunctionToObject(evaluator, leftSubtypeUnexpanded), + [{ type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }], + magicMethodName, + errorNode, + inferenceContext + ); + + if (!resultType && leftSubtypeUnexpanded !== leftSubtypeExpanded) { + // Try the expanded left type. + resultType = evaluator.getTypeOfMagicMethodReturn( + convertFunctionToObject(evaluator, leftSubtypeExpanded), + [{ type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }], + magicMethodName, + errorNode, + inferenceContext + ); + } + + if (!resultType && rightSubtypeUnexpanded !== rightSubtypeExpanded) { + // Try the expanded left and right type. + resultType = evaluator.getTypeOfMagicMethodReturn( + convertFunctionToObject(evaluator, leftSubtypeExpanded), + [{ type: rightSubtypeExpanded, isIncomplete: rightTypeResult.isIncomplete }], + magicMethodName, + errorNode, + inferenceContext + ); + } + + if (!resultType) { + // Try the alternate form (swapping right and left). + const altMagicMethodName = binaryOperatorMap[operator][1]; + resultType = evaluator.getTypeOfMagicMethodReturn( + convertFunctionToObject(evaluator, rightSubtypeUnexpanded), + [{ type: leftSubtypeUnexpanded, isIncomplete: leftTypeResult.isIncomplete }], + altMagicMethodName, + errorNode, + inferenceContext + ); + + if (!resultType && rightSubtypeUnexpanded !== rightSubtypeExpanded) { + // Try the expanded right type. + resultType = evaluator.getTypeOfMagicMethodReturn( + convertFunctionToObject(evaluator, rightSubtypeExpanded), + [ + { + type: leftSubtypeUnexpanded, + isIncomplete: leftTypeResult.isIncomplete, + }, + ], + altMagicMethodName, + errorNode, + inferenceContext + ); + } + + if (!resultType && leftSubtypeUnexpanded !== leftSubtypeExpanded) { + // Try the expanded right and left type. + resultType = evaluator.getTypeOfMagicMethodReturn( + convertFunctionToObject(evaluator, rightSubtypeExpanded), + [{ type: leftSubtypeExpanded, isIncomplete: leftTypeResult.isIncomplete }], + altMagicMethodName, + errorNode, + inferenceContext + ); + } + } + + if (!resultType) { + if (inferenceContext) { + diag.addMessage( + Localizer.Diagnostic.typeNotSupportBinaryOperatorBidirectional().format({ + operator: printOperator(operator), + leftType: evaluator.printType(leftSubtypeExpanded), + rightType: evaluator.printType(rightSubtypeExpanded), + expectedType: evaluator.printType(inferenceContext.expectedType), + }) + ); + } else { + diag.addMessage( + Localizer.Diagnostic.typeNotSupportBinaryOperator().format({ + operator: printOperator(operator), + leftType: evaluator.printType(leftSubtypeExpanded), + rightType: evaluator.printType(rightSubtypeExpanded), + }) + ); + } + } + return resultType; + } + ); + } + ); + } + } + + return type && isNever(type) ? undefined : type; +} + +export function getTypeOfBinaryOperation( + evaluator: TypeEvaluator, + node: BinaryOperationNode, + inferenceContext: InferenceContext | undefined, + flags: EvaluatorFlags +): TypeResult { + const leftExpression = node.leftExpression; + let rightExpression = node.rightExpression; + let isIncomplete = false; + let typeErrors = false; + + // If this is a comparison and the left expression is also a comparison, + // we need to change the behavior to accommodate python's "chained + // comparisons" feature. + if (operatorSupportsChaining(node.operator)) { + if ( + rightExpression.nodeType === ParseNodeType.BinaryOperation && + !rightExpression.parenthesized && + operatorSupportsChaining(rightExpression.operator) + ) { + // Evaluate the right expression so it is type checked. + getTypeOfBinaryOperation(evaluator, rightExpression, inferenceContext, flags); + + // Use the left side of the right expression for comparison purposes. + rightExpression = rightExpression.leftExpression; + } + } + + // For most binary operations, the "expected type" is applied to the output + // of the magic method for that operation. However, the "or" and "and" operators + // have no magic method, so we apply the expected type directly to both operands. + let expectedOperandType = + node.operator === OperatorType.Or || node.operator === OperatorType.And + ? inferenceContext?.expectedType + : undefined; + + // Handle the very special case where the expected type is a list + // and the operator is a multiply. This comes up in the common case + // of "x: List[Optional[X]] = [None] * y" where y is an integer literal. + let expectedLeftOperandType: Type | undefined; + if ( + node.operator === OperatorType.Multiply && + inferenceContext && + isClassInstance(inferenceContext.expectedType) && + ClassType.isBuiltIn(inferenceContext.expectedType, 'list') && + inferenceContext.expectedType.typeArguments && + inferenceContext.expectedType.typeArguments.length >= 1 && + node.leftExpression.nodeType === ParseNodeType.List + ) { + expectedLeftOperandType = inferenceContext.expectedType; + } + + const effectiveExpectedType = expectedOperandType ?? expectedLeftOperandType; + const leftTypeResult = evaluator.getTypeOfExpression( + leftExpression, + flags, + makeInferenceContext(effectiveExpectedType) + ); + let leftType = leftTypeResult.type; + + if (!expectedOperandType) { + if (node.operator === OperatorType.Or || node.operator === OperatorType.And) { + // For "or" and "and", use the type of the left operand. This allows us to + // infer a better type for expressions like `x or []`. + expectedOperandType = leftType; + } else if (node.operator === OperatorType.Add && node.rightExpression.nodeType === ParseNodeType.List) { + // For the "+" operator , use this technique only if the right operand is + // a list expression. This heuristic handles the common case of `my_list + [0]`. + expectedOperandType = leftType; + } else if (node.operator === OperatorType.BitwiseOr) { + // If this is a bitwise or ("|"), use the type of the left operand. This allows + // us to support the case where a TypedDict is being updated with a dict expression. + if (isClassInstance(leftType) && ClassType.isTypedDictClass(leftType)) { + expectedOperandType = leftType; + } + } + } + + const rightTypeResult = evaluator.getTypeOfExpression( + rightExpression, + flags, + makeInferenceContext(expectedOperandType) + ); + let rightType = rightTypeResult.type; + + if (leftTypeResult.isIncomplete || rightTypeResult.isIncomplete) { + isIncomplete = true; + } + + // Is this a "|" operator used in a context where it is supposed to be + // interpreted as a union operator? + if ( + node.operator === OperatorType.BitwiseOr && + !customMetaclassSupportsMethod(leftType, '__or__') && + !customMetaclassSupportsMethod(rightType, '__ror__') + ) { + let adjustedRightType = rightType; + let adjustedLeftType = leftType; + if (!isNoneInstance(leftType) && isNoneInstance(rightType)) { + // Handle the special case where "None" is being added to the union + // with something else. Even though "None" will normally be interpreted + // as the None singleton object in contexts where a type annotation isn't + // assumed, we'll allow it here. + adjustedRightType = NoneType.createType(); + } else if (!isNoneInstance(rightType) && isNoneInstance(leftType)) { + adjustedLeftType = NoneType.createType(); + } + + if (isUnionableType([adjustedLeftType, adjustedRightType])) { + const fileInfo = getFileInfo(node); + const unionNotationSupported = + fileInfo.isStubFile || + (flags & EvaluatorFlags.AllowForwardReferences) !== 0 || + fileInfo.executionEnvironment.pythonVersion >= PythonVersion.V3_10; + if (!unionNotationSupported) { + // If the left type is Any, we can't say for sure whether this + // is an illegal syntax or a valid application of the "|" operator. + if (!isAnyOrUnknown(adjustedLeftType)) { + evaluator.addError(Localizer.Diagnostic.unionSyntaxIllegal(), node, node.operatorToken); + } + } + + if ( + !evaluator.validateTypeArg( + { ...leftTypeResult, node: leftExpression }, + { allowVariadicTypeVar: true, allowUnpackedTuples: true } + ) || + !evaluator.validateTypeArg( + { ...rightTypeResult, node: rightExpression }, + { allowVariadicTypeVar: true, allowUnpackedTuples: true } + ) + ) { + return { type: UnknownType.create() }; + } + + const newUnion = combineTypes([adjustedLeftType, adjustedRightType]); + if (isUnion(newUnion)) { + TypeBase.setSpecialForm(newUnion); + } + + // Check for "stringified" forward reference type expressions. The "|" operator + // doesn't support these except in certain circumstances. Notably, it can't be used + // with other strings or with types that are not specialized using an index form. + if (!fileInfo.isStubFile) { + let stringNode: ExpressionNode | undefined; + let otherNode: ExpressionNode | undefined; + let otherType: Type | undefined; + + if (leftExpression.nodeType === ParseNodeType.StringList) { + stringNode = leftExpression; + otherNode = rightExpression; + otherType = rightType; + } else if (rightExpression.nodeType === ParseNodeType.StringList) { + stringNode = rightExpression; + otherNode = leftExpression; + otherType = leftType; + } + + if (stringNode && otherNode && otherType) { + let isAllowed = true; + if (isClass(otherType)) { + if (!otherType.isTypeArgumentExplicit || isClassInstance(otherType)) { + isAllowed = false; + } + } + + if (!isAllowed) { + evaluator.addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.unionForwardReferenceNotAllowed(), + stringNode + ); + } + } + } + + return { type: newUnion }; + } + } + + // Optional checks apply to all operations except for boolean operations. + let isLeftOptionalType = false; + if (booleanOperatorMap[node.operator] === undefined) { + // None is a valid operand for == and != even if the type stub says otherwise. + if (node.operator === OperatorType.Equals || node.operator === OperatorType.NotEquals) { + leftType = removeNoneFromUnion(leftType); + } else { + isLeftOptionalType = isOptionalType(leftType); + } + + // None is a valid operand for == and != even if the type stub says otherwise. + if (node.operator === OperatorType.Equals || node.operator === OperatorType.NotEquals) { + rightType = removeNoneFromUnion(rightType); + } + } + + const diag = new DiagnosticAddendum(); + + // Don't use literal math if either of the operation is within a loop + // because the literal values may change each time. + const isLiteralMathAllowed = !isWithinLoop(node); + + // Don't special-case tuple __add__ if the left type is a union. This + // can result in an infinite loop if we keep creating new tuple types + // within a loop construct using __add__. + const isTupleAddAllowed = !isUnion(leftType); + + let type = validateBinaryOperation( + evaluator, + node.operator, + { type: leftType, isIncomplete: leftTypeResult.isIncomplete }, + { type: rightType, isIncomplete: rightTypeResult.isIncomplete }, + node, + inferenceContext, + diag, + { isLiteralMathAllowed, isTupleAddAllowed } + ); + + if (!diag.isEmpty() || !type) { + typeErrors = true; + + if (!isIncomplete) { + const fileInfo = getFileInfo(node); + + if (isLeftOptionalType && diag.getMessages().length === 1) { + // If the left was an optional type and there is just one diagnostic, + // assume that it was due to a "None" not being supported. Report + // this as a reportOptionalOperand diagnostic rather than a + // reportGeneralTypeIssues diagnostic. + evaluator.addDiagnostic( + fileInfo.diagnosticRuleSet.reportOptionalOperand, + DiagnosticRule.reportOptionalOperand, + Localizer.Diagnostic.noneOperator().format({ + operator: printOperator(node.operator), + }), + node.leftExpression + ); + } else { + // If neither the LHS or RHS are unions, don't include a diagnostic addendum + // because it will be redundant with the main diagnostic message. The addenda + // are useful only if union expansion was used for one or both operands. + let diagString = ''; + if ( + isUnion(evaluator.makeTopLevelTypeVarsConcrete(leftType)) || + isUnion(evaluator.makeTopLevelTypeVarsConcrete(rightType)) + ) { + diagString = diag.getString(); + } + + evaluator.addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typeNotSupportBinaryOperator().format({ + operator: printOperator(node.operator), + leftType: evaluator.printType(leftType), + rightType: evaluator.printType(rightType), + }) + diagString, + node + ); + } + } + + type = UnknownType.create(); + } + + return { type, isIncomplete, typeErrors }; +} + +export function getTypeOfAugmentedAssignment( + evaluator: TypeEvaluator, + node: AugmentedAssignmentNode, + inferenceContext: InferenceContext | undefined +): TypeResult { + const operatorMap: { [operator: number]: [string, OperatorType] } = { + [OperatorType.AddEqual]: ['__iadd__', OperatorType.Add], + [OperatorType.SubtractEqual]: ['__isub__', OperatorType.Subtract], + [OperatorType.MultiplyEqual]: ['__imul__', OperatorType.Multiply], + [OperatorType.FloorDivideEqual]: ['__ifloordiv__', OperatorType.FloorDivide], + [OperatorType.DivideEqual]: ['__itruediv__', OperatorType.Divide], + [OperatorType.ModEqual]: ['__imod__', OperatorType.Mod], + [OperatorType.PowerEqual]: ['__ipow__', OperatorType.Power], + [OperatorType.MatrixMultiplyEqual]: ['__imatmul__', OperatorType.MatrixMultiply], + [OperatorType.BitwiseAndEqual]: ['__iand__', OperatorType.BitwiseAnd], + [OperatorType.BitwiseOrEqual]: ['__ior__', OperatorType.BitwiseOr], + [OperatorType.BitwiseXorEqual]: ['__ixor__', OperatorType.BitwiseXor], + [OperatorType.LeftShiftEqual]: ['__ilshift__', OperatorType.LeftShift], + [OperatorType.RightShiftEqual]: ['__irshift__', OperatorType.RightShift], + }; + + let type: Type | undefined; + let typeResult: TypeResult | undefined; + const diag = new DiagnosticAddendum(); + + const leftTypeResult = evaluator.getTypeOfExpression(node.leftExpression); + const leftType = leftTypeResult.type; + + let expectedOperandType: Type | undefined; + if (node.operator === OperatorType.BitwiseOrEqual) { + // If this is a bitwise or ("|="), use the type of the left operand. This allows + // us to support the case where a TypedDict is being updated with a dict expression. + expectedOperandType = leftType; + } + + const rightTypeResult = evaluator.getTypeOfExpression( + node.rightExpression, + /* flags */ undefined, + makeInferenceContext(expectedOperandType) + ); + const rightType = rightTypeResult.type; + const isIncomplete = !!rightTypeResult.isIncomplete || !!leftTypeResult.isIncomplete; + + if (isNever(leftType) || isNever(rightType)) { + typeResult = { type: NeverType.createNever(), isIncomplete }; + } else { + type = evaluator.mapSubtypesExpandTypeVars( + leftType, + /* conditionFilter */ undefined, + (leftSubtypeExpanded, leftSubtypeUnexpanded) => { + return evaluator.mapSubtypesExpandTypeVars( + rightType, + getTypeCondition(leftSubtypeExpanded), + (rightSubtypeExpanded, rightSubtypeUnexpanded) => { + if (isAnyOrUnknown(leftSubtypeUnexpanded) || isAnyOrUnknown(rightSubtypeUnexpanded)) { + return preserveUnknown(leftSubtypeUnexpanded, rightSubtypeUnexpanded); + } + + const magicMethodName = operatorMap[node.operator][0]; + let returnType = evaluator.getTypeOfMagicMethodReturn( + leftSubtypeUnexpanded, + [{ type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }], + magicMethodName, + node, + inferenceContext + ); + + if (!returnType && leftSubtypeUnexpanded !== leftSubtypeExpanded) { + // Try with the expanded left type. + returnType = evaluator.getTypeOfMagicMethodReturn( + leftSubtypeExpanded, + [{ type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }], + magicMethodName, + node, + inferenceContext + ); + } + + if (!returnType && rightSubtypeUnexpanded !== rightSubtypeExpanded) { + // Try with the expanded left and right type. + returnType = evaluator.getTypeOfMagicMethodReturn( + leftSubtypeExpanded, + [{ type: rightSubtypeExpanded, isIncomplete: rightTypeResult.isIncomplete }], + magicMethodName, + node, + inferenceContext + ); + } + + if (!returnType) { + // If the LHS class didn't support the magic method for augmented + // assignment, fall back on the normal binary expression evaluator. + const binaryOperator = operatorMap[node.operator][1]; + + // Don't use literal math if either of the operation is within a loop + // because the literal values may change each time. + const isLiteralMathAllowed = + !isWithinLoop(node) && + getUnionSubtypeCount(leftType) * getUnionSubtypeCount(rightType) < + maxLiteralMathSubtypeCount; + + // Don't special-case tuple __add__ if the left type is a union. This + // can result in an infinite loop if we keep creating new tuple types + // within a loop construct using __add__. + const isTupleAddAllowed = !isUnion(leftType); + + returnType = validateBinaryOperation( + evaluator, + binaryOperator, + { type: leftSubtypeUnexpanded, isIncomplete: leftTypeResult.isIncomplete }, + { type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }, + node, + inferenceContext, + diag, + { isLiteralMathAllowed, isTupleAddAllowed } + ); + } + + return returnType; + } + ); + } + ); + + // If the LHS class didn't support the magic method for augmented + // assignment, fall back on the normal binary expression evaluator. + if (!diag.isEmpty() || !type || isNever(type)) { + if (!isIncomplete) { + const fileInfo = getFileInfo(node); + evaluator.addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typeNotSupportBinaryOperator().format({ + operator: printOperator(node.operator), + leftType: evaluator.printType(leftType), + rightType: evaluator.printType(rightType), + }) + diag.getString(), + node + ); + } + + type = UnknownType.create(); + } + + typeResult = { type, isIncomplete }; + } + + evaluator.assignTypeToExpression( + node.destExpression, + typeResult.type, + !!typeResult.isIncomplete, + node.rightExpression + ); + + return typeResult; +} + +export function getTypeOfUnaryOperation( + evaluator: TypeEvaluator, + node: UnaryOperationNode, + inferenceContext: InferenceContext | undefined +): TypeResult { + const exprTypeResult = evaluator.getTypeOfExpression(node.expression); + let exprType = evaluator.makeTopLevelTypeVarsConcrete(exprTypeResult.type); + const isIncomplete = exprTypeResult.isIncomplete; + + if (isNever(exprType)) { + return { type: NeverType.createNever(), isIncomplete }; + } + + // Map unary operators to magic functions. Note that the bitwise + // invert has two magic functions that are aliases of each other. + const unaryOperatorMap: { [operator: number]: string } = { + [OperatorType.Add]: '__pos__', + [OperatorType.Subtract]: '__neg__', + [OperatorType.BitwiseInvert]: '__invert__', + }; + + let type: Type | undefined; + + if (node.operator !== OperatorType.Not) { + if (isOptionalType(exprType)) { + evaluator.addDiagnostic( + getFileInfo(node).diagnosticRuleSet.reportOptionalOperand, + DiagnosticRule.reportOptionalOperand, + Localizer.Diagnostic.noneOperator().format({ + operator: printOperator(node.operator), + }), + node.expression + ); + exprType = removeNoneFromUnion(exprType); + } + } + + // Handle certain operations on certain literal types + // using special-case math. Do not apply this if the input type + // is incomplete because we may be evaluating an expression within + // a loop, so the literal value may change each time. + if (!exprTypeResult.isIncomplete) { + const literalClassName = getLiteralTypeClassName(exprType); + if (literalClassName === 'int') { + if (node.operator === OperatorType.Add) { + type = exprType; + } else if (node.operator === OperatorType.Subtract) { + type = mapSubtypes(exprType, (subtype) => { + const classSubtype = subtype as ClassType; + return ClassType.cloneWithLiteral(classSubtype, -(classSubtype.literalValue as number | bigint)); + }); + } + } else if (literalClassName === 'bool') { + if (node.operator === OperatorType.Not) { + type = mapSubtypes(exprType, (subtype) => { + const classSubtype = subtype as ClassType; + return ClassType.cloneWithLiteral(classSubtype, !(classSubtype.literalValue as boolean)); + }); + } + } + } + + if (!type) { + // __not__ always returns a boolean. + if (node.operator === OperatorType.Not) { + type = evaluator.getBuiltInObject(node, 'bool'); + if (!type) { + type = UnknownType.create(); + } + } else { + if (isAnyOrUnknown(exprType)) { + type = exprType; + } else { + const magicMethodName = unaryOperatorMap[node.operator]; + type = evaluator.getTypeOfMagicMethodReturn(exprType, [], magicMethodName, node, inferenceContext); + } + + if (!type) { + const fileInfo = getFileInfo(node); + + if (inferenceContext) { + evaluator.addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typeNotSupportUnaryOperatorBidirectional().format({ + operator: printOperator(node.operator), + type: evaluator.printType(exprType), + expectedType: evaluator.printType(inferenceContext.expectedType), + }), + node + ); + } else { + evaluator.addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typeNotSupportUnaryOperator().format({ + operator: printOperator(node.operator), + type: evaluator.printType(exprType), + }), + node + ); + } + type = UnknownType.create(); + } + } + } + + return { type, isIncomplete }; +} + +export function getTypeOfTernaryOperation( + evaluator: TypeEvaluator, + node: TernaryNode, + flags: EvaluatorFlags, + inferenceContext: InferenceContext | undefined +): TypeResult { + evaluator.getTypeOfExpression(node.testExpression); + + const typesToCombine: Type[] = []; + let isIncomplete = false; + let typeErrors = false; + + const fileInfo = getFileInfo(node); + const constExprValue = evaluateStaticBoolExpression( + node.testExpression, + fileInfo.executionEnvironment, + fileInfo.definedConstants + ); + + if (constExprValue !== false && evaluator.isNodeReachable(node.ifExpression)) { + const ifType = evaluator.getTypeOfExpression(node.ifExpression, flags, inferenceContext); + typesToCombine.push(ifType.type); + if (ifType.isIncomplete) { + isIncomplete = true; + } + if (ifType.typeErrors) { + typeErrors = true; + } + } + + if (constExprValue !== true && evaluator.isNodeReachable(node.elseExpression)) { + const elseType = evaluator.getTypeOfExpression(node.elseExpression, flags, inferenceContext); + typesToCombine.push(elseType.type); + if (elseType.isIncomplete) { + isIncomplete = true; + } + if (elseType.typeErrors) { + typeErrors = true; + } + } + + return { type: combineTypes(typesToCombine), isIncomplete, typeErrors }; +} + +function customMetaclassSupportsMethod(type: Type, methodName: string): boolean { + if (!isInstantiableClass(type)) { + return false; + } + + const metaclass = type.details.effectiveMetaclass; + if (!metaclass || !isInstantiableClass(metaclass)) { + return false; + } + + if (ClassType.isBuiltIn(metaclass, 'type')) { + return false; + } + + const memberInfo = lookUpClassMember(metaclass, methodName); + if (!memberInfo) { + return false; + } + + if (isInstantiableClass(memberInfo.classType) && ClassType.isBuiltIn(memberInfo.classType, 'type')) { + return false; + } + + return true; +} + +// All functions in Python derive from object, so they inherit all +// of the capabilities of an object. This function converts a function +// to an object instance. +function convertFunctionToObject(evaluator: TypeEvaluator, type: Type) { + if (isFunction(type) || isOverloadedFunction(type)) { + const objectType = evaluator.getObjectType(); + if (objectType) { + return objectType; + } + } + + return type; +} diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1992adac0..7dba0fbe8 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -33,7 +33,6 @@ import { AssignmentNode, AugmentedAssignmentNode, AwaitNode, - BinaryOperationNode, CallNode, CaseNode, ClassNode, @@ -66,14 +65,12 @@ import { SliceNode, StringListNode, StringNode, - TernaryNode, TupleNode, TypeAliasNode, TypeAnnotationNode, TypeParameterCategory, TypeParameterListNode, TypeParameterNode, - UnaryOperationNode, UnpackNode, WithItemNode, YieldFromNode, @@ -126,6 +123,12 @@ import { } from './enums'; import { applyFunctionTransform } from './functionTransform'; import { createNamedTupleType } from './namedTuples'; +import { + getTypeOfAugmentedAssignment, + getTypeOfBinaryOperation, + getTypeOfTernaryOperation, + getTypeOfUnaryOperation, +} from './operations'; import { ParameterListDetails, ParameterSource, @@ -173,6 +176,7 @@ import { TypeResult, TypeResultWithNode, ValidateArgTypeParams, + ValidateTypeArgsOptions, maxSubtypesForInferredType, } from './typeEvaluatorTypes'; import * as TypePrinter from './typePrinter'; @@ -204,13 +208,11 @@ import { getDeclaredGeneratorReturnType, getGeneratorTypeArgs, getGeneratorYieldType, - getLiteralTypeClassName, getSpecializedTupleType, getTypeCondition, getTypeVarArgumentsRecursive, getTypeVarScopeId, getTypeVarScopeIds, - getUnionSubtypeCount, isCallableType, isDescriptorInstance, isEffectivelyInstantiable, @@ -228,7 +230,6 @@ import { isTypeVarLimitedToCallable, isTypeVarSame, isUnboundedTupleClass, - isUnionableType, isVarianceOfTypeArgumentCompatible, lookUpClassMember, lookUpObjectMember, @@ -315,14 +316,6 @@ import { removeUnbound, } from './types'; -interface ValidateTypeArgsOptions { - allowEmptyTuple?: boolean; - allowVariadicTypeVar?: boolean; - allowParamSpec?: boolean; - allowTypeArgList?: boolean; - allowUnpackedTuples?: boolean; -} - interface GetTypeArgsOptions { isAnnotatedClass?: boolean; hasCustomClassGetItem?: boolean; @@ -385,39 +378,6 @@ interface ValidateArgTypeOptions { conditionFilter?: TypeCondition[]; } -// Maps binary operators to the magic methods that implement them. -const binaryOperatorMap: { [operator: number]: [string, string] } = { - [OperatorType.Add]: ['__add__', '__radd__'], - [OperatorType.Subtract]: ['__sub__', '__rsub__'], - [OperatorType.Multiply]: ['__mul__', '__rmul__'], - [OperatorType.FloorDivide]: ['__floordiv__', '__rfloordiv__'], - [OperatorType.Divide]: ['__truediv__', '__rtruediv__'], - [OperatorType.Mod]: ['__mod__', '__rmod__'], - [OperatorType.Power]: ['__pow__', '__rpow__'], - [OperatorType.MatrixMultiply]: ['__matmul__', '__rmatmul__'], - [OperatorType.BitwiseAnd]: ['__and__', '__rand__'], - [OperatorType.BitwiseOr]: ['__or__', '__ror__'], - [OperatorType.BitwiseXor]: ['__xor__', '__rxor__'], - [OperatorType.LeftShift]: ['__lshift__', '__rlshift__'], - [OperatorType.RightShift]: ['__rshift__', '__rrshift__'], - [OperatorType.Equals]: ['__eq__', '__eq__'], - [OperatorType.NotEquals]: ['__ne__', '__ne__'], - [OperatorType.LessThan]: ['__lt__', '__gt__'], - [OperatorType.LessThanOrEqual]: ['__le__', '__ge__'], - [OperatorType.GreaterThan]: ['__gt__', '__lt__'], - [OperatorType.GreaterThanOrEqual]: ['__ge__', '__le__'], -}; - -// Map of operators that always return a bool result. -const booleanOperatorMap: { [operator: number]: true } = { - [OperatorType.And]: true, - [OperatorType.Or]: true, - [OperatorType.Is]: true, - [OperatorType.IsNot]: true, - [OperatorType.In]: true, - [OperatorType.NotIn]: true, -}; - // This table contains the names of several built-in types that // are not subscriptable at runtime on older versions of Python. // It lists the first version of Python where subscripting is @@ -537,10 +497,6 @@ const verifyTypeCacheEvaluatorFlags = false; // This debugging option prints each expression and its evaluated type. const printExpressionTypes = false; -// If the number of subtypes starts to explode when applying "literal math", -// cut off the literal union and fall back to the non-literal supertype. -const maxLiteralMathSubtypeCount = 64; - // The following number is chosen somewhat arbitrarily. We need to cut // off code flow analysis at some point for code flow graphs that are too // complex. Otherwise we risk overflowing the stack or incurring extremely @@ -570,11 +526,6 @@ interface TypeCacheEntry { flags: EvaluatorFlags | undefined; } -interface BinaryOperationOptions { - isLiteralMathAllowed?: boolean; - isTupleAddAllowed?: boolean; -} - export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions: EvaluatorOptions): TypeEvaluator { const symbolResolutionStack: SymbolResolutionStackEntry[] = []; const asymmetricDescriptorAssignmentCache = new Set(); @@ -1038,17 +989,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case ParseNodeType.UnaryOperation: { - typeResult = getTypeOfUnaryOperation(node, inferenceContext); + typeResult = getTypeOfUnaryOperation(evaluatorInterface, node, inferenceContext); break; } case ParseNodeType.BinaryOperation: { - typeResult = getTypeOfBinaryOperation(node, inferenceContext, flags); + typeResult = getTypeOfBinaryOperation(evaluatorInterface, node, inferenceContext, flags); break; } case ParseNodeType.AugmentedAssignment: { - typeResult = getTypeOfAugmentedAssignment(node, inferenceContext); + typeResult = getTypeOfAugmentedAssignment(evaluatorInterface, node, inferenceContext); break; } @@ -1069,7 +1020,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case ParseNodeType.Ternary: { - typeResult = getTypeOfTernary(node, flags, inferenceContext); + typeResult = getTypeOfTernaryOperation(evaluatorInterface, node, flags, inferenceContext); break; } @@ -11750,932 +11701,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type }; } - function getTypeOfUnaryOperation( - node: UnaryOperationNode, - inferenceContext: InferenceContext | undefined - ): TypeResult { - const exprTypeResult = getTypeOfExpression(node.expression); - let exprType = makeTopLevelTypeVarsConcrete(exprTypeResult.type); - const isIncomplete = exprTypeResult.isIncomplete; - - if (isNever(exprType)) { - return { type: NeverType.createNever(), isIncomplete }; - } - - // Map unary operators to magic functions. Note that the bitwise - // invert has two magic functions that are aliases of each other. - const unaryOperatorMap: { [operator: number]: string } = { - [OperatorType.Add]: '__pos__', - [OperatorType.Subtract]: '__neg__', - [OperatorType.BitwiseInvert]: '__invert__', - }; - - let type: Type | undefined; - - if (node.operator !== OperatorType.Not) { - if (isOptionalType(exprType)) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportOptionalOperand, - DiagnosticRule.reportOptionalOperand, - Localizer.Diagnostic.noneOperator().format({ - operator: ParseTreeUtils.printOperator(node.operator), - }), - node.expression - ); - exprType = removeNoneFromUnion(exprType); - } - } - - // Handle certain operations on certain literal types - // using special-case math. Do not apply this if the input type - // is incomplete because we may be evaluating an expression within - // a loop, so the literal value may change each time. - if (!exprTypeResult.isIncomplete) { - const literalClassName = getLiteralTypeClassName(exprType); - if (literalClassName === 'int') { - if (node.operator === OperatorType.Add) { - type = exprType; - } else if (node.operator === OperatorType.Subtract) { - type = mapSubtypes(exprType, (subtype) => { - const classSubtype = subtype as ClassType; - return ClassType.cloneWithLiteral( - classSubtype, - -(classSubtype.literalValue as number | bigint) - ); - }); - } - } else if (literalClassName === 'bool') { - if (node.operator === OperatorType.Not) { - type = mapSubtypes(exprType, (subtype) => { - const classSubtype = subtype as ClassType; - return ClassType.cloneWithLiteral(classSubtype, !(classSubtype.literalValue as boolean)); - }); - } - } - } - - if (!type) { - // __not__ always returns a boolean. - if (node.operator === OperatorType.Not) { - type = getBuiltInObject(node, 'bool'); - if (!type) { - type = UnknownType.create(); - } - } else { - if (isAnyOrUnknown(exprType)) { - type = exprType; - } else { - const magicMethodName = unaryOperatorMap[node.operator]; - type = getTypeOfMagicMethodReturn(exprType, [], magicMethodName, node, inferenceContext); - } - - if (!type) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - - if (inferenceContext) { - addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.typeNotSupportUnaryOperatorBidirectional().format({ - operator: ParseTreeUtils.printOperator(node.operator), - type: printType(exprType), - expectedType: printType(inferenceContext.expectedType), - }), - node - ); - } else { - addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.typeNotSupportUnaryOperator().format({ - operator: ParseTreeUtils.printOperator(node.operator), - type: printType(exprType), - }), - node - ); - } - type = UnknownType.create(); - } - } - } - - return { type, isIncomplete }; - } - - function getTypeOfBinaryOperation( - node: BinaryOperationNode, - inferenceContext: InferenceContext | undefined, - flags: EvaluatorFlags - ): TypeResult { - const leftExpression = node.leftExpression; - let rightExpression = node.rightExpression; - let isIncomplete = false; - let typeErrors = false; - - // If this is a comparison and the left expression is also a comparison, - // we need to change the behavior to accommodate python's "chained - // comparisons" feature. - if (ParseTreeUtils.operatorSupportsChaining(node.operator)) { - if ( - rightExpression.nodeType === ParseNodeType.BinaryOperation && - !rightExpression.parenthesized && - ParseTreeUtils.operatorSupportsChaining(rightExpression.operator) - ) { - // Evaluate the right expression so it is type checked. - getTypeOfBinaryOperation(rightExpression, inferenceContext, flags); - - // Use the left side of the right expression for comparison purposes. - rightExpression = rightExpression.leftExpression; - } - } - - // For most binary operations, the "expected type" is applied to the output - // of the magic method for that operation. However, the "or" and "and" operators - // have no magic method, so we apply the expected type directly to both operands. - let expectedOperandType = - node.operator === OperatorType.Or || node.operator === OperatorType.And - ? inferenceContext?.expectedType - : undefined; - - // Handle the very special case where the expected type is a list - // and the operator is a multiply. This comes up in the common case - // of "x: List[Optional[X]] = [None] * y" where y is an integer literal. - let expectedLeftOperandType: Type | undefined; - if ( - node.operator === OperatorType.Multiply && - inferenceContext && - isClassInstance(inferenceContext.expectedType) && - ClassType.isBuiltIn(inferenceContext.expectedType, 'list') && - inferenceContext.expectedType.typeArguments && - inferenceContext.expectedType.typeArguments.length >= 1 && - node.leftExpression.nodeType === ParseNodeType.List - ) { - expectedLeftOperandType = inferenceContext.expectedType; - } - - const effectiveExpectedType = expectedOperandType ?? expectedLeftOperandType; - const leftTypeResult = getTypeOfExpression(leftExpression, flags, makeInferenceContext(effectiveExpectedType)); - let leftType = leftTypeResult.type; - - if (!expectedOperandType) { - if (node.operator === OperatorType.Or || node.operator === OperatorType.And) { - // For "or" and "and", use the type of the left operand. This allows us to - // infer a better type for expressions like `x or []`. - expectedOperandType = leftType; - } else if (node.operator === OperatorType.Add && node.rightExpression.nodeType === ParseNodeType.List) { - // For the "+" operator , use this technique only if the right operand is - // a list expression. This heuristic handles the common case of `my_list + [0]`. - expectedOperandType = leftType; - } else if (node.operator === OperatorType.BitwiseOr) { - // If this is a bitwise or ("|"), use the type of the left operand. This allows - // us to support the case where a TypedDict is being updated with a dict expression. - if (isClassInstance(leftType) && ClassType.isTypedDictClass(leftType)) { - expectedOperandType = leftType; - } - } - } - - const rightTypeResult = getTypeOfExpression(rightExpression, flags, makeInferenceContext(expectedOperandType)); - let rightType = rightTypeResult.type; - - if (leftTypeResult.isIncomplete || rightTypeResult.isIncomplete) { - isIncomplete = true; - } - - // Is this a "|" operator used in a context where it is supposed to be - // interpreted as a union operator? - if ( - node.operator === OperatorType.BitwiseOr && - !customMetaclassSupportsMethod(leftType, '__or__') && - !customMetaclassSupportsMethod(rightType, '__ror__') - ) { - let adjustedRightType = rightType; - let adjustedLeftType = leftType; - if (!isNoneInstance(leftType) && isNoneInstance(rightType)) { - // Handle the special case where "None" is being added to the union - // with something else. Even though "None" will normally be interpreted - // as the None singleton object in contexts where a type annotation isn't - // assumed, we'll allow it here. - adjustedRightType = NoneType.createType(); - } else if (!isNoneInstance(rightType) && isNoneInstance(leftType)) { - adjustedLeftType = NoneType.createType(); - } - - if (isUnionableType([adjustedLeftType, adjustedRightType])) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - const unionNotationSupported = - fileInfo.isStubFile || - (flags & EvaluatorFlags.AllowForwardReferences) !== 0 || - fileInfo.executionEnvironment.pythonVersion >= PythonVersion.V3_10; - if (!unionNotationSupported) { - // If the left type is Any, we can't say for sure whether this - // is an illegal syntax or a valid application of the "|" operator. - if (!isAnyOrUnknown(adjustedLeftType)) { - addError(Localizer.Diagnostic.unionSyntaxIllegal(), node, node.operatorToken); - } - } - - if ( - !validateTypeArg( - { ...leftTypeResult, node: leftExpression }, - { allowVariadicTypeVar: true, allowUnpackedTuples: true } - ) || - !validateTypeArg( - { ...rightTypeResult, node: rightExpression }, - { allowVariadicTypeVar: true, allowUnpackedTuples: true } - ) - ) { - return { type: UnknownType.create() }; - } - - const newUnion = combineTypes([adjustedLeftType, adjustedRightType]); - if (isUnion(newUnion)) { - TypeBase.setSpecialForm(newUnion); - } - - // Check for "stringified" forward reference type expressions. The "|" operator - // doesn't support these except in certain circumstances. Notably, it can't be used - // with other strings or with types that are not specialized using an index form. - if (!fileInfo.isStubFile) { - let stringNode: ExpressionNode | undefined; - let otherNode: ExpressionNode | undefined; - let otherType: Type | undefined; - - if (leftExpression.nodeType === ParseNodeType.StringList) { - stringNode = leftExpression; - otherNode = rightExpression; - otherType = rightType; - } else if (rightExpression.nodeType === ParseNodeType.StringList) { - stringNode = rightExpression; - otherNode = leftExpression; - otherType = leftType; - } - - if (stringNode && otherNode && otherType) { - let isAllowed = true; - if (isClass(otherType)) { - if (!otherType.isTypeArgumentExplicit || isClassInstance(otherType)) { - isAllowed = false; - } - } - - if (!isAllowed) { - addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.unionForwardReferenceNotAllowed(), - stringNode - ); - } - } - } - - return { type: newUnion }; - } - } - - // Optional checks apply to all operations except for boolean operations. - let isLeftOptionalType = false; - if (booleanOperatorMap[node.operator] === undefined) { - // None is a valid operand for == and != even if the type stub says otherwise. - if (node.operator === OperatorType.Equals || node.operator === OperatorType.NotEquals) { - leftType = removeNoneFromUnion(leftType); - } else { - isLeftOptionalType = isOptionalType(leftType); - } - - // None is a valid operand for == and != even if the type stub says otherwise. - if (node.operator === OperatorType.Equals || node.operator === OperatorType.NotEquals) { - rightType = removeNoneFromUnion(rightType); - } - } - - const diag = new DiagnosticAddendum(); - - // Don't use literal math if either of the operation is within a loop - // because the literal values may change each time. - const isLiteralMathAllowed = !ParseTreeUtils.isWithinLoop(node); - - // Don't special-case tuple __add__ if the left type is a union. This - // can result in an infinite loop if we keep creating new tuple types - // within a loop construct using __add__. - const isTupleAddAllowed = !isUnion(leftType); - - let type = validateBinaryOperation( - node.operator, - { type: leftType, isIncomplete: leftTypeResult.isIncomplete }, - { type: rightType, isIncomplete: rightTypeResult.isIncomplete }, - node, - inferenceContext, - diag, - { isLiteralMathAllowed, isTupleAddAllowed } - ); - - if (!diag.isEmpty() || !type) { - typeErrors = true; - - if (!isIncomplete) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - - if (isLeftOptionalType && diag.getMessages().length === 1) { - // If the left was an optional type and there is just one diagnostic, - // assume that it was due to a "None" not being supported. Report - // this as a reportOptionalOperand diagnostic rather than a - // reportGeneralTypeIssues diagnostic. - addDiagnostic( - fileInfo.diagnosticRuleSet.reportOptionalOperand, - DiagnosticRule.reportOptionalOperand, - Localizer.Diagnostic.noneOperator().format({ - operator: ParseTreeUtils.printOperator(node.operator), - }), - node.leftExpression - ); - } else { - // If neither the LHS or RHS are unions, don't include a diagnostic addendum - // because it will be redundant with the main diagnostic message. The addenda - // are useful only if union expansion was used for one or both operands. - let diagString = ''; - if ( - isUnion(makeTopLevelTypeVarsConcrete(leftType)) || - isUnion(makeTopLevelTypeVarsConcrete(rightType)) - ) { - diagString = diag.getString(); - } - - addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.typeNotSupportBinaryOperator().format({ - operator: ParseTreeUtils.printOperator(node.operator), - leftType: printType(leftType), - rightType: printType(rightType), - }) + diagString, - node - ); - } - } - - type = UnknownType.create(); - } - - return { type, isIncomplete, typeErrors }; - } - - function customMetaclassSupportsMethod(type: Type, methodName: string): boolean { - if (!isInstantiableClass(type)) { - return false; - } - - const metaclass = type.details.effectiveMetaclass; - if (!metaclass || !isInstantiableClass(metaclass)) { - return false; - } - - if (ClassType.isBuiltIn(metaclass, 'type')) { - return false; - } - - const memberInfo = lookUpClassMember(metaclass, methodName); - if (!memberInfo) { - return false; - } - - if (isInstantiableClass(memberInfo.classType) && ClassType.isBuiltIn(memberInfo.classType, 'type')) { - return false; - } - - return true; - } - - function getTypeOfAugmentedAssignment( - node: AugmentedAssignmentNode, - inferenceContext: InferenceContext | undefined - ): TypeResult { - const operatorMap: { [operator: number]: [string, OperatorType] } = { - [OperatorType.AddEqual]: ['__iadd__', OperatorType.Add], - [OperatorType.SubtractEqual]: ['__isub__', OperatorType.Subtract], - [OperatorType.MultiplyEqual]: ['__imul__', OperatorType.Multiply], - [OperatorType.FloorDivideEqual]: ['__ifloordiv__', OperatorType.FloorDivide], - [OperatorType.DivideEqual]: ['__itruediv__', OperatorType.Divide], - [OperatorType.ModEqual]: ['__imod__', OperatorType.Mod], - [OperatorType.PowerEqual]: ['__ipow__', OperatorType.Power], - [OperatorType.MatrixMultiplyEqual]: ['__imatmul__', OperatorType.MatrixMultiply], - [OperatorType.BitwiseAndEqual]: ['__iand__', OperatorType.BitwiseAnd], - [OperatorType.BitwiseOrEqual]: ['__ior__', OperatorType.BitwiseOr], - [OperatorType.BitwiseXorEqual]: ['__ixor__', OperatorType.BitwiseXor], - [OperatorType.LeftShiftEqual]: ['__ilshift__', OperatorType.LeftShift], - [OperatorType.RightShiftEqual]: ['__irshift__', OperatorType.RightShift], - }; - - let type: Type | undefined; - let typeResult: TypeResult | undefined; - const diag = new DiagnosticAddendum(); - - const leftTypeResult = getTypeOfExpression(node.leftExpression); - const leftType = leftTypeResult.type; - - let expectedOperandType: Type | undefined; - if (node.operator === OperatorType.BitwiseOrEqual) { - // If this is a bitwise or ("|="), use the type of the left operand. This allows - // us to support the case where a TypedDict is being updated with a dict expression. - expectedOperandType = leftType; - } - - const rightTypeResult = getTypeOfExpression( - node.rightExpression, - /* flags */ undefined, - makeInferenceContext(expectedOperandType) - ); - const rightType = rightTypeResult.type; - const isIncomplete = !!rightTypeResult.isIncomplete || !!leftTypeResult.isIncomplete; - - if (isNever(leftType) || isNever(rightType)) { - typeResult = { type: NeverType.createNever(), isIncomplete }; - } else { - type = mapSubtypesExpandTypeVars( - leftType, - /* conditionFilter */ undefined, - (leftSubtypeExpanded, leftSubtypeUnexpanded) => { - return mapSubtypesExpandTypeVars( - rightType, - getTypeCondition(leftSubtypeExpanded), - (rightSubtypeExpanded, rightSubtypeUnexpanded) => { - if (isAnyOrUnknown(leftSubtypeUnexpanded) || isAnyOrUnknown(rightSubtypeUnexpanded)) { - return preserveUnknown(leftSubtypeUnexpanded, rightSubtypeUnexpanded); - } - - const magicMethodName = operatorMap[node.operator][0]; - let returnType = getTypeOfMagicMethodReturn( - leftSubtypeUnexpanded, - [{ type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }], - magicMethodName, - node, - inferenceContext - ); - - if (!returnType && leftSubtypeUnexpanded !== leftSubtypeExpanded) { - // Try with the expanded left type. - returnType = getTypeOfMagicMethodReturn( - leftSubtypeExpanded, - [{ type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }], - magicMethodName, - node, - inferenceContext - ); - } - - if (!returnType && rightSubtypeUnexpanded !== rightSubtypeExpanded) { - // Try with the expanded left and right type. - returnType = getTypeOfMagicMethodReturn( - leftSubtypeExpanded, - [{ type: rightSubtypeExpanded, isIncomplete: rightTypeResult.isIncomplete }], - magicMethodName, - node, - inferenceContext - ); - } - - if (!returnType) { - // If the LHS class didn't support the magic method for augmented - // assignment, fall back on the normal binary expression evaluator. - const binaryOperator = operatorMap[node.operator][1]; - - // Don't use literal math if either of the operation is within a loop - // because the literal values may change each time. - const isLiteralMathAllowed = - !ParseTreeUtils.isWithinLoop(node) && - getUnionSubtypeCount(leftType) * getUnionSubtypeCount(rightType) < - maxLiteralMathSubtypeCount; - - // Don't special-case tuple __add__ if the left type is a union. This - // can result in an infinite loop if we keep creating new tuple types - // within a loop construct using __add__. - const isTupleAddAllowed = !isUnion(leftType); - - returnType = validateBinaryOperation( - binaryOperator, - { type: leftSubtypeUnexpanded, isIncomplete: leftTypeResult.isIncomplete }, - { type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }, - node, - inferenceContext, - diag, - { isLiteralMathAllowed, isTupleAddAllowed } - ); - } - - return returnType; - } - ); - } - ); - - // If the LHS class didn't support the magic method for augmented - // assignment, fall back on the normal binary expression evaluator. - if (!diag.isEmpty() || !type || isNever(type)) { - if (!isIncomplete) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.typeNotSupportBinaryOperator().format({ - operator: ParseTreeUtils.printOperator(node.operator), - leftType: printType(leftType), - rightType: printType(rightType), - }) + diag.getString(), - node - ); - } - - type = UnknownType.create(); - } - - typeResult = { type, isIncomplete }; - } - - assignTypeToExpression(node.destExpression, typeResult.type, !!typeResult.isIncomplete, node.rightExpression); - - return typeResult; - } - - function validateBinaryOperation( - operator: OperatorType, - leftTypeResult: TypeResult, - rightTypeResult: TypeResult, - errorNode: ExpressionNode, - inferenceContext: InferenceContext | undefined, - diag: DiagnosticAddendum, - options: BinaryOperationOptions - ): Type | undefined { - const leftType = leftTypeResult.type; - const rightType = rightTypeResult.type; - let type: Type | undefined; - let concreteLeftType = makeTopLevelTypeVarsConcrete(leftType); - - if (booleanOperatorMap[operator] !== undefined) { - // If it's an AND or OR, we need to handle short-circuiting by - // eliminating any known-truthy or known-falsy types. - if (operator === OperatorType.And) { - // If the LHS evaluates to falsy, the And expression will - // always return the type of the left-hand side. - if (!canBeTruthy(concreteLeftType)) { - return leftType; - } - - // If the LHS evaluates to truthy, the And expression will - // always return the type of the right-hand side. - if (!canBeFalsy(concreteLeftType)) { - return rightType; - } - - concreteLeftType = removeTruthinessFromType(concreteLeftType); - - if (isNever(rightType)) { - return concreteLeftType; - } - } else if (operator === OperatorType.Or) { - // If the LHS evaluates to truthy, the Or expression will - // always return the type of the left-hand side. - if (!canBeFalsy(concreteLeftType)) { - return leftType; - } - - // If the LHS evaluates to falsy, the Or expression will - // always return the type of the right-hand side. - if (!canBeTruthy(concreteLeftType)) { - return rightType; - } - - concreteLeftType = removeFalsinessFromType(concreteLeftType); - - if (isNever(rightType)) { - return concreteLeftType; - } - } - - if (isNever(leftType) || isNever(rightType)) { - return NeverType.createNever(); - } - - // The "in" and "not in" operators make use of the __contains__ - // magic method. - if (operator === OperatorType.In || operator === OperatorType.NotIn) { - type = mapSubtypesExpandTypeVars( - rightType, - /* conditionFilter */ undefined, - (rightSubtypeExpanded, rightSubtypeUnexpanded) => { - return mapSubtypesExpandTypeVars( - concreteLeftType, - getTypeCondition(rightSubtypeExpanded), - (leftSubtype) => { - if (isAnyOrUnknown(leftSubtype) || isAnyOrUnknown(rightSubtypeUnexpanded)) { - return preserveUnknown(leftSubtype, rightSubtypeExpanded); - } - - let returnType = getTypeOfMagicMethodReturn( - rightSubtypeExpanded, - [{ type: leftSubtype, isIncomplete: leftTypeResult.isIncomplete }], - '__contains__', - errorNode, - /* inferenceContext */ undefined - ); - - if (!returnType) { - // If __contains__ was not supported, fall back - // on an iterable. - const iteratorType = getTypeOfIterator( - { type: rightSubtypeExpanded, isIncomplete: rightTypeResult.isIncomplete }, - /* isAsync */ false, - /* errorNode */ undefined - )?.type; - - if (iteratorType && assignType(iteratorType, leftSubtype)) { - returnType = getBuiltInObject(errorNode, 'bool'); - } - } - - if (!returnType) { - diag.addMessage( - Localizer.Diagnostic.typeNotSupportBinaryOperator().format({ - operator: ParseTreeUtils.printOperator(operator), - leftType: printType(leftSubtype), - rightType: printType(rightSubtypeExpanded), - }) - ); - } - - return returnType; - } - ); - } - ); - - // Assume that a bool is returned even if the type is unknown - if (type && !isNever(type)) { - type = getBuiltInObject(errorNode, 'bool'); - } - } else { - type = mapSubtypesExpandTypeVars( - concreteLeftType, - /* conditionFilter */ undefined, - (leftSubtypeExpanded, leftSubtypeUnexpanded) => { - return mapSubtypesExpandTypeVars( - rightType, - getTypeCondition(leftSubtypeExpanded), - (rightSubtypeExpanded, rightSubtypeUnexpanded) => { - // If the operator is an AND or OR, we need to combine the two types. - if (operator === OperatorType.And || operator === OperatorType.Or) { - return combineTypes([leftSubtypeUnexpanded, rightSubtypeUnexpanded]); - } - // The other boolean operators always return a bool value. - return getBuiltInObject(errorNode, 'bool'); - } - ); - } - ); - } - } else if (binaryOperatorMap[operator]) { - if (isNever(leftType) || isNever(rightType)) { - return NeverType.createNever(); - } - - // Handle certain operations on certain homogenous literal types - // using special-case math. For example, Literal[1, 2] + Literal[3, 4] - // should result in Literal[4, 5, 6]. - if (options.isLiteralMathAllowed) { - const leftLiteralClassName = getLiteralTypeClassName(leftType); - if (leftLiteralClassName && !getTypeCondition(leftType)) { - const rightLiteralClassName = getLiteralTypeClassName(rightType); - - if ( - leftLiteralClassName === rightLiteralClassName && - !getTypeCondition(rightType) && - getUnionSubtypeCount(leftType) * getUnionSubtypeCount(rightType) < maxLiteralMathSubtypeCount - ) { - if (leftLiteralClassName === 'str' || leftLiteralClassName === 'bytes') { - if (operator === OperatorType.Add) { - type = mapSubtypes(leftType, (leftSubtype) => { - return mapSubtypes(rightType, (rightSubtype) => { - const leftClassSubtype = leftSubtype as ClassType; - const rightClassSubtype = rightSubtype as ClassType; - - return ClassType.cloneWithLiteral( - leftClassSubtype, - ((leftClassSubtype.literalValue as string) + - rightClassSubtype.literalValue) as string - ); - }); - }); - } - } else if (leftLiteralClassName === 'int') { - if ( - operator === OperatorType.Add || - operator === OperatorType.Subtract || - operator === OperatorType.Multiply || - operator === OperatorType.FloorDivide || - operator === OperatorType.Mod - ) { - let isValidResult = true; - - type = mapSubtypes(leftType, (leftSubtype) => { - return mapSubtypes(rightType, (rightSubtype) => { - try { - const leftClassSubtype = leftSubtype as ClassType; - const rightClassSubtype = rightSubtype as ClassType; - const leftLiteralValue = BigInt( - leftClassSubtype.literalValue as number | bigint - ); - const rightLiteralValue = BigInt( - rightClassSubtype.literalValue as number | bigint - ); - - let newValue: number | bigint | undefined; - if (operator === OperatorType.Add) { - newValue = leftLiteralValue + rightLiteralValue; - } else if (operator === OperatorType.Subtract) { - newValue = leftLiteralValue - rightLiteralValue; - } else if (operator === OperatorType.Multiply) { - newValue = leftLiteralValue * rightLiteralValue; - } else if (operator === OperatorType.FloorDivide) { - if (rightLiteralValue !== BigInt(0)) { - newValue = leftLiteralValue / rightLiteralValue; - } - } else if (operator === OperatorType.Mod) { - if (rightLiteralValue !== BigInt(0)) { - newValue = leftLiteralValue % rightLiteralValue; - } - } - - if (newValue === undefined) { - isValidResult = false; - return undefined; - } else if (typeof newValue === 'number' && isNaN(newValue)) { - isValidResult = false; - return undefined; - } else { - // Convert back to a simple number if it fits. Leave as a bigint - // if it doesn't. - if ( - newValue >= Number.MIN_SAFE_INTEGER && - newValue <= Number.MAX_SAFE_INTEGER - ) { - newValue = Number(newValue); - } - - return ClassType.cloneWithLiteral(leftClassSubtype, newValue); - } - } catch { - isValidResult = false; - return undefined; - } - }); - }); - - if (!isValidResult) { - type = undefined; - } - } - } - } - } - } - - if (!type) { - type = mapSubtypesExpandTypeVars( - leftType, - /* conditionFilter */ undefined, - (leftSubtypeExpanded, leftSubtypeUnexpanded) => { - return mapSubtypesExpandTypeVars( - rightType, - getTypeCondition(leftSubtypeExpanded), - (rightSubtypeExpanded, rightSubtypeUnexpanded) => { - if (isAnyOrUnknown(leftSubtypeUnexpanded) || isAnyOrUnknown(rightSubtypeUnexpanded)) { - return preserveUnknown(leftSubtypeUnexpanded, rightSubtypeUnexpanded); - } - - // Special-case __add__ for tuples when the types for both tuples are known. - if ( - options.isTupleAddAllowed && - operator === OperatorType.Add && - isClassInstance(leftSubtypeExpanded) && - isTupleClass(leftSubtypeExpanded) && - leftSubtypeExpanded.tupleTypeArguments && - !isUnboundedTupleClass(leftSubtypeExpanded) && - isClassInstance(rightSubtypeExpanded) && - isTupleClass(rightSubtypeExpanded) && - rightSubtypeExpanded.tupleTypeArguments && - !isUnboundedTupleClass(rightSubtypeExpanded) && - tupleClassType && - isInstantiableClass(tupleClassType) - ) { - return ClassType.cloneAsInstance( - specializeTupleClass(tupleClassType, [ - ...leftSubtypeExpanded.tupleTypeArguments, - ...rightSubtypeExpanded.tupleTypeArguments, - ]) - ); - } - - const magicMethodName = binaryOperatorMap[operator][0]; - let resultType = getTypeOfMagicMethodReturn( - convertFunctionToObject(leftSubtypeUnexpanded), - [{ type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }], - magicMethodName, - errorNode, - inferenceContext - ); - - if (!resultType && leftSubtypeUnexpanded !== leftSubtypeExpanded) { - // Try the expanded left type. - resultType = getTypeOfMagicMethodReturn( - convertFunctionToObject(leftSubtypeExpanded), - [{ type: rightSubtypeUnexpanded, isIncomplete: rightTypeResult.isIncomplete }], - magicMethodName, - errorNode, - inferenceContext - ); - } - - if (!resultType && rightSubtypeUnexpanded !== rightSubtypeExpanded) { - // Try the expanded left and right type. - resultType = getTypeOfMagicMethodReturn( - convertFunctionToObject(leftSubtypeExpanded), - [{ type: rightSubtypeExpanded, isIncomplete: rightTypeResult.isIncomplete }], - magicMethodName, - errorNode, - inferenceContext - ); - } - - if (!resultType) { - // Try the alternate form (swapping right and left). - const altMagicMethodName = binaryOperatorMap[operator][1]; - resultType = getTypeOfMagicMethodReturn( - convertFunctionToObject(rightSubtypeUnexpanded), - [{ type: leftSubtypeUnexpanded, isIncomplete: leftTypeResult.isIncomplete }], - altMagicMethodName, - errorNode, - inferenceContext - ); - - if (!resultType && rightSubtypeUnexpanded !== rightSubtypeExpanded) { - // Try the expanded right type. - resultType = getTypeOfMagicMethodReturn( - convertFunctionToObject(rightSubtypeExpanded), - [ - { - type: leftSubtypeUnexpanded, - isIncomplete: leftTypeResult.isIncomplete, - }, - ], - altMagicMethodName, - errorNode, - inferenceContext - ); - } - - if (!resultType && leftSubtypeUnexpanded !== leftSubtypeExpanded) { - // Try the expanded right and left type. - resultType = getTypeOfMagicMethodReturn( - convertFunctionToObject(rightSubtypeExpanded), - [{ type: leftSubtypeExpanded, isIncomplete: leftTypeResult.isIncomplete }], - altMagicMethodName, - errorNode, - inferenceContext - ); - } - } - - if (!resultType) { - if (inferenceContext) { - diag.addMessage( - Localizer.Diagnostic.typeNotSupportBinaryOperatorBidirectional().format({ - operator: ParseTreeUtils.printOperator(operator), - leftType: printType(leftSubtypeExpanded), - rightType: printType(rightSubtypeExpanded), - expectedType: printType(inferenceContext.expectedType), - }) - ); - } else { - diag.addMessage( - Localizer.Diagnostic.typeNotSupportBinaryOperator().format({ - operator: ParseTreeUtils.printOperator(operator), - leftType: printType(leftSubtypeExpanded), - rightType: printType(rightSubtypeExpanded), - }) - ); - } - } - return resultType; - } - ); - } - ); - } - } - - return type && isNever(type) ? undefined : type; - } - function getTypeOfMagicMethodReturn( objType: Type, args: TypeResult[], @@ -12791,19 +11816,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return returnType; } - // All functions in Python derive from object, so they inherit all - // of the capabilities of an object. This function converts a function - // to an object instance. - function convertFunctionToObject(type: Type) { - if (isFunction(type) || isOverloadedFunction(type)) { - if (objectType) { - return objectType; - } - } - - return type; - } - function getTypeOfDictionary(node: DictionaryNode, inferenceContext: InferenceContext | undefined): TypeResult { // If the expected type is a union, analyze for each of the subtypes // to find one that matches. @@ -13544,49 +12556,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return inferenceContext.expectedType; } - function getTypeOfTernary( - node: TernaryNode, - flags: EvaluatorFlags, - inferenceContext: InferenceContext | undefined - ): TypeResult { - getTypeOfExpression(node.testExpression); - - const typesToCombine: Type[] = []; - let isIncomplete = false; - let typeErrors = false; - - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - const constExprValue = evaluateStaticBoolExpression( - node.testExpression, - fileInfo.executionEnvironment, - fileInfo.definedConstants - ); - - if (constExprValue !== false && isNodeReachable(node.ifExpression)) { - const ifType = getTypeOfExpression(node.ifExpression, flags, inferenceContext); - typesToCombine.push(ifType.type); - if (ifType.isIncomplete) { - isIncomplete = true; - } - if (ifType.typeErrors) { - typeErrors = true; - } - } - - if (constExprValue !== true && isNodeReachable(node.elseExpression)) { - const elseType = getTypeOfExpression(node.elseExpression, flags, inferenceContext); - typesToCombine.push(elseType.type); - if (elseType.isIncomplete) { - isIncomplete = true; - } - if (elseType.typeErrors) { - typeErrors = true; - } - } - - return { type: combineTypes(typesToCombine), isIncomplete, typeErrors }; - } - function getTypeOfYield(node: YieldNode): TypeResult { let expectedYieldType: Type | undefined; let sentType: Type | undefined; @@ -15528,7 +14497,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return; } - const destTypeResult = getTypeOfAugmentedAssignment(node, /* inferenceContext */ undefined); + const destTypeResult = getTypeOfAugmentedAssignment(evaluatorInterface, node, /* inferenceContext */ undefined); writeTypeCache(node, destTypeResult, EvaluatorFlags.None); } @@ -25793,6 +24762,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions assignType, validateOverrideMethod, validateCallArguments, + validateTypeArg, assignTypeToExpression, assignClassToSelf, getTypedDictClassType, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 8f3a8d219..91c218c77 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -418,6 +418,14 @@ export const enum MemberAccessFlags { SkipTypeBaseClass = 1 << 8, } +export interface ValidateTypeArgsOptions { + allowEmptyTuple?: boolean; + allowVariadicTypeVar?: boolean; + allowParamSpec?: boolean; + allowTypeArgList?: boolean; + allowUnpackedTuples?: boolean; +} + export interface TypeEvaluator { runWithCancellationToken(token: CancellationToken, callback: () => T): T; @@ -454,7 +462,7 @@ export interface TypeEvaluator { ) => CallResult; isAfterNodeReachable: (node: ParseNode) => boolean; - isNodeReachable: (node: ParseNode, sourceNode: ParseNode | undefined) => boolean; + isNodeReachable: (node: ParseNode, sourceNode?: ParseNode | undefined) => boolean; isAsymmetricDescriptorAssignment: (node: ParseNode) => boolean; suppressDiagnostics: (node: ParseNode, callback: () => void) => void; @@ -577,6 +585,7 @@ export interface TypeEvaluator { skipUnknownArgCheck?: boolean, inferenceContext?: InferenceContext ) => CallResult; + validateTypeArg: (argResult: TypeResultWithNode, options?: ValidateTypeArgsOptions) => boolean; assignTypeToExpression: ( target: ExpressionNode, type: Type, @@ -605,9 +614,9 @@ export interface TypeEvaluator { isFinalVariableDeclaration: (decl: Declaration) => boolean; isExplicitTypeAliasDeclaration: (decl: Declaration) => boolean; - addError: (message: string, node: ParseNode) => Diagnostic | undefined; - addWarning: (message: string, node: ParseNode) => Diagnostic | undefined; - addInformation: (message: string, node: ParseNode) => Diagnostic | undefined; + addError: (message: string, node: ParseNode, range?: TextRange) => Diagnostic | undefined; + addWarning: (message: string, node: ParseNode, range?: TextRange) => Diagnostic | undefined; + addInformation: (message: string, node: ParseNode, range?: TextRange) => Diagnostic | undefined; addUnusedCode: (node: ParseNode, textRange: TextRange) => void; addUnreachableCode: (node: ParseNode, textRange: TextRange) => void; addDeprecated: (message: string, node: ParseNode) => void; From f00d3e19cce29b997434d0054911cac1b0089ba3 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 6 May 2023 08:16:25 -0700 Subject: [PATCH 123/525] Added static SVG badge for pyright. --- static/pyright_badge.svg | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 static/pyright_badge.svg diff --git a/static/pyright_badge.svg b/static/pyright_badge.svg new file mode 100644 index 000000000..b4e0b49c1 --- /dev/null +++ b/static/pyright_badge.svg @@ -0,0 +1,2 @@ + +pyright: checkedpyrightchecked \ No newline at end of file From a9a0a60a3995f561842fb8ab136ba2d7e8395abe Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 6 May 2023 08:25:03 -0700 Subject: [PATCH 124/525] Moved badge to docs/img folder. --- {static => docs/img}/pyright_badge.svg | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {static => docs/img}/pyright_badge.svg (100%) diff --git a/static/pyright_badge.svg b/docs/img/pyright_badge.svg similarity index 100% rename from static/pyright_badge.svg rename to docs/img/pyright_badge.svg From 85a8b34aeeccdc2a8af432626b07352bfae257f2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 6 May 2023 08:26:44 -0700 Subject: [PATCH 125/525] =?UTF-8?q?Added=20instructions=20for=20adding=20a?= =?UTF-8?q?=20=E2=80=9Cpyright:=20checked=E2=80=9D=20badge.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ci-integration.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/ci-integration.md b/docs/ci-integration.md index cf31c87c3..adee361c9 100644 --- a/docs/ci-integration.md +++ b/docs/ci-integration.md @@ -1,5 +1,15 @@ ## Integrating Pyright into Continuous Integration +### Adding Pyright badge to README.md + +[![Checked with pyright](https://microsoft.github.io/pyright/img/pyright_badge.svg)](https://microsoft.github.io/pyright/) + +To add a “pyright: checked” SVG badge to your project’s README.md file, use the following: + +```text +[![Checked with pyright](https://microsoft.github.io/pyright/img/pyright_badge.svg)](https://microsoft.github.io/pyright/) +``` + ### Running Pyright as a github action You can configure pyright to run as a github action. From 2f5241e331bc8c43887fb9b33a0e1a156b14dc67 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 6 May 2023 10:06:15 -0700 Subject: [PATCH 126/525] Changed overload behavior to evaluate an `Any` return type rather than `Unknown` if the presence of an `Any` argument results in an ambiguous overload selection and one or more of those overload signatures contains an explicit `Any` in its return type. This is a tweak to the solution introduced for https://github.com/microsoft/pyright/issues/5068. --- .../src/analyzer/typeEvaluator.ts | 28 +++++++++++++++---- .../src/tests/samples/overload12.py | 2 +- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 7dba0fbe8..98969fe9d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8129,6 +8129,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } else { // Eliminate any return types that are subsumed by other return types. let dedupedMatchResults: Type[] = []; + let dedupedResultsIncludeAny = false; possibleMatchResults.forEach((result) => { let isSubtypeSubsumed = false; @@ -8137,11 +8138,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (assignType(dedupedMatchResults[dedupedIndex], result.returnType)) { if (!containsAnyOrUnknown(dedupedMatchResults[dedupedIndex])) { isSubtypeSubsumed = true; + } else if (!containsUnknown(dedupedMatchResults[dedupedIndex])) { + dedupedResultsIncludeAny = true; } break; } else if (assignType(result.returnType, dedupedMatchResults[dedupedIndex])) { if (!containsAnyOrUnknown(result.returnType)) { dedupedMatchResults[dedupedIndex] = NeverType.createNever(); + } else if (!containsUnknown(dedupedMatchResults[dedupedIndex])) { + dedupedResultsIncludeAny = true; } break; } @@ -8155,11 +8160,24 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions dedupedMatchResults = dedupedMatchResults.filter((t) => !isNever(t)); const combinedTypes = combineTypes(dedupedMatchResults); - returnTypes.push( - dedupedMatchResults.length > 1 - ? UnknownType.createPossibleType(combinedTypes, possibleMatchInvolvesIncompleteUnknown) - : combinedTypes - ); + let effectiveReturnType = combinedTypes; + if (dedupedMatchResults.length > 1) { + // If one or more of the deduped types is Any or contains Any, + // we will assume that the person who defined the overload really + // wanted Any rather than Unknown. In cases where the deduped types + // simply contains conflicting results without an Any, we'll use + // an UnknownType. + if (dedupedResultsIncludeAny) { + effectiveReturnType = AnyType.create(); + } else { + effectiveReturnType = UnknownType.createPossibleType( + combinedTypes, + possibleMatchInvolvesIncompleteUnknown + ); + } + } + + returnTypes.push(effectiveReturnType); } } diff --git a/packages/pyright-internal/src/tests/samples/overload12.py b/packages/pyright-internal/src/tests/samples/overload12.py index 9c54ecf33..ce0c1b15f 100644 --- a/packages/pyright-internal/src/tests/samples/overload12.py +++ b/packages/pyright-internal/src/tests/samples/overload12.py @@ -55,7 +55,7 @@ def func2(a: Any): reveal_type(v2, expected_text="Any") v3 = overload2(a) - reveal_type(v3, expected_text="Unknown") + reveal_type(v3, expected_text="Any") @overload From 42a60aaf0e92d681369c9b69713e817a4d6d746e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 6 May 2023 10:08:05 -0700 Subject: [PATCH 127/525] Changed behavior of logic that infers the type of the `value` and `_value_` members of an enum instance. If the `Enum` class defines a `__new__` method, these are evaluated as `Any` rather than a type based on their assigned value because the `__new__` method can transform the `value` in ways that cannot be determined statically. --- .../pyright-internal/src/analyzer/enums.ts | 19 +++++++++++++-- .../src/tests/samples/enums1.py | 23 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index 2b2d3f399..2fc94d1d0 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -16,8 +16,9 @@ import { Symbol, SymbolFlags } from './symbol'; import { isSingleDunderName } from './symbolNameUtils'; import { FunctionArgument, TypeEvaluator } from './typeEvaluatorTypes'; import { enumerateLiteralsForType } from './typeGuards'; -import { computeMroLinearization } from './typeUtils'; +import { ClassMemberLookupFlags, computeMroLinearization, lookUpClassMember } from './typeUtils'; import { + AnyType, ClassType, ClassTypeFlags, EnumLiteral, @@ -298,7 +299,21 @@ export function transformTypeForPossibleEnumClass( isMemberOfEnumeration = false; } - const valueType = getValueType(); + let valueType: Type; + + // If the class includes a __new__ method, we cannot assume that + // the value of each enum element is simply the value assigned to it. + // The __new__ method can transform the value in ways that we cannot + // determine statically. + const newMember = lookUpClassMember(enumClassInfo.classType, '__new__', ClassMemberLookupFlags.SkipBaseClasses); + if (newMember) { + // We may want to change this to UnknownType in the future, but + // for now, we'll leave it as Any which is consistent with the + // type specified in the Enum class definition in enum.pyi. + valueType = AnyType.create(); + } else { + valueType = getValueType(); + } // The spec excludes descriptors. if (isClassInstance(valueType) && valueType.details.fields.get('__get__')) { diff --git a/packages/pyright-internal/src/tests/samples/enums1.py b/packages/pyright-internal/src/tests/samples/enums1.py index 45915a493..1919f437c 100644 --- a/packages/pyright-internal/src/tests/samples/enums1.py +++ b/packages/pyright-internal/src/tests/samples/enums1.py @@ -118,3 +118,26 @@ def func1(te3: TestEnum3): reveal_type(TestEnum8.B.value, expected_text="list[int]") reveal_type(TestEnum8.C.value, expected_text="Literal['c']") reveal_type(TestEnum8.D._value_, expected_text="Literal['d']") + + +class TestEnum9(Enum): + _other1: int + _other2: int + + def __new__(cls, value: str, other1: int, other2: int): + obj = object.__new__(cls) + obj._value_ = value + obj._other1 = other1 + obj._other2 = other2 + return obj + + A = ("a", 1, 2) + B = ("b", 2, 3) + + +te9_A = TestEnum9.A +reveal_type(te9_A, expected_text="Literal[TestEnum9.A]") +reveal_type(te9_A.value, expected_text="Any") +reveal_type(te9_A._value_, expected_text="Any") +reveal_type(te9_A.name, expected_text="Literal['A']") +reveal_type(te9_A._name_, expected_text="Literal['A']") From 5283c736905b9a681e4f2bd4c07faa5d97e1d431 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 6 May 2023 10:11:21 -0700 Subject: [PATCH 128/525] Modified the logic (and associated behavior) for constructor validation in cases where a metaclass has a custom `__call__` method. This is part of a larger effort to clean up constructor validation and make it more consistent with runtime behaviors. --- .../src/analyzer/constructors.ts | 162 ++++++++++-------- 1 file changed, 94 insertions(+), 68 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index cda6a8f5d..1f98ac8fa 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -19,13 +19,7 @@ import { getFileInfo } from './analyzerNodeInfo'; import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; import { applyConstructorTransform, hasConstructorTransform } from './constructorTransform'; import { getTypeVarScopesForNode } from './parseTreeUtils'; -import { - CallResult, - ClassMemberLookup, - FunctionArgument, - MemberAccessFlags, - TypeEvaluator, -} from './typeEvaluatorTypes'; +import { CallResult, FunctionArgument, MemberAccessFlags, TypeEvaluator } from './typeEvaluatorTypes'; import { ClassMemberLookupFlags, InferenceContext, @@ -69,11 +63,25 @@ export function validateConstructorArguments( skipUnknownArgCheck: boolean, inferenceContext: InferenceContext | undefined ): CallResult { + // See if there's a custom `__call__` method on the metaclass. If so, we'll + // assume that it overrides the normal `type.__call__` logic and we won't + // do the normal __new__ and __init__ validation. + const metaclassResult = validateMetaclassCall( + evaluator, + errorNode, + argList, + type, + skipUnknownArgCheck, + inferenceContext + ); + if (metaclassResult) { + return metaclassResult; + } + let validatedTypes = false; let returnType: Type | undefined; let reportedErrors = false; let isTypeIncomplete = false; - let usedMetaclassCallMethod = false; const overloadsUsedForCall: FunctionType[] = []; // Create a helper function that determines whether we should skip argument @@ -170,47 +178,21 @@ export function validateConstructorArguments( // Don't report errors for __new__ if __init__ already generated errors. They're // probably going to be entirely redundant anyway. if (!reportedErrors) { - const metaclass = type.details.effectiveMetaclass; - let constructorMethodInfo: ClassMemberLookup | undefined; - - // See if there's a custom `__call__` method on the metaclass. If so, we'll - // use that rather than the `__new__` method on the class. - if (metaclass && isInstantiableClass(metaclass) && !ClassType.isSameGenericClass(metaclass, type)) { - constructorMethodInfo = evaluator.getTypeOfClassMemberName( - errorNode, - metaclass, - /* isAccessedThroughObject */ true, - '__call__', - { method: 'get' }, - /* diag */ undefined, - MemberAccessFlags.ConsiderMetaclassOnly | - MemberAccessFlags.SkipTypeBaseClass | - MemberAccessFlags.SkipAttributeAccessOverride, - type - ); - - if (constructorMethodInfo) { - usedMetaclassCallMethod = true; - } - } - - if (!constructorMethodInfo) { - constructorMethodInfo = evaluator.getTypeOfClassMemberName( - errorNode, - type, - /* isAccessedThroughObject */ false, - '__new__', - { method: 'get' }, - /* diag */ undefined, - MemberAccessFlags.AccessClassMembersOnly | - MemberAccessFlags.SkipObjectBaseClass | - MemberAccessFlags.TreatConstructorAsClassMethod, - type - ); - } - - if (constructorMethodInfo && !skipConstructorCheck(constructorMethodInfo.type)) { - const constructorMethodType = constructorMethodInfo.type; + const newMethodInfo = evaluator.getTypeOfClassMemberName( + errorNode, + type, + /* isAccessedThroughObject */ false, + '__new__', + { method: 'get' }, + /* diag */ undefined, + MemberAccessFlags.AccessClassMembersOnly | + MemberAccessFlags.SkipObjectBaseClass | + MemberAccessFlags.TreatConstructorAsClassMethod, + type + ); + + if (newMethodInfo && !skipConstructorCheck(newMethodInfo.type)) { + const constructorMethodType = newMethodInfo.type; let newReturnType: Type | undefined; // If there is an expected type that was not applied above when @@ -254,7 +236,7 @@ export function validateConstructorArguments( return evaluator.validateCallArguments( errorNode, argList, - constructorMethodInfo!, + newMethodInfo!, typeVarContext, skipUnknownArgCheck ); @@ -263,7 +245,7 @@ export function validateConstructorArguments( callResult = evaluator.validateCallArguments( errorNode, argList, - constructorMethodInfo, + newMethodInfo, typeVarContext, skipUnknownArgCheck ); @@ -340,23 +322,13 @@ export function validateConstructorArguments( } if (!validatedTypes && argList.some((arg) => arg.argumentCategory === ArgumentCategory.Simple)) { - // Suppress this error if the class was instantiated from a custom - // metaclass because it's likely that it's a false positive. Also - // suppress the error if the class's metaclass has a __call__ method. - const isCustomMetaclass = - !!type.details.effectiveMetaclass && - isInstantiableClass(type.details.effectiveMetaclass) && - !ClassType.isBuiltIn(type.details.effectiveMetaclass); - - if (!isCustomMetaclass && !usedMetaclassCallMethod) { - const fileInfo = getFileInfo(errorNode); - evaluator.addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.constructorNoArgs().format({ type: type.aliasName || type.details.name }), - errorNode - ); - } + const fileInfo = getFileInfo(errorNode); + evaluator.addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.constructorNoArgs().format({ type: type.aliasName || type.details.name }), + errorNode + ); } if (!returnType) { @@ -413,6 +385,60 @@ export function validateConstructorArguments( return result; } +function validateMetaclassCall( + evaluator: TypeEvaluator, + errorNode: ExpressionNode, + argList: FunctionArgument[], + type: ClassType, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined +): CallResult | undefined { + const metaclass = type.details.effectiveMetaclass; + + if (metaclass && isInstantiableClass(metaclass) && !ClassType.isSameGenericClass(metaclass, type)) { + const metaclassCallMethodInfo = evaluator.getTypeOfClassMemberName( + errorNode, + metaclass, + /* isAccessedThroughObject */ true, + '__call__', + { method: 'get' }, + /* diag */ undefined, + MemberAccessFlags.ConsiderMetaclassOnly | + MemberAccessFlags.SkipTypeBaseClass | + MemberAccessFlags.SkipAttributeAccessOverride, + type + ); + + if (metaclassCallMethodInfo) { + const callResult = evaluator.validateCallArguments( + errorNode, + argList, + metaclassCallMethodInfo, + /* typeVarContext */ undefined, + skipUnknownArgCheck, + inferenceContext + ); + + if (!callResult.returnType || isUnknown(callResult.returnType)) { + // The return result isn't known. We'll assume in this case that + // the metaclass __call__ method allocated a new instance of the + // requested class. + const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); + callResult.returnType = applyExpectedTypeForConstructor( + evaluator, + type, + inferenceContext, + typeVarContext + ); + } + + return callResult; + } + } + + return undefined; +} + // For a constructor call that targets a generic class and an "expected type" // (i.e. bidirectional inference), this function attempts to infer the correct // specialized return type for the constructor. From f55ef6253f5fd0e1071000fec0b7642fbcc340ad Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 6 May 2023 10:56:21 -0700 Subject: [PATCH 129/525] Simplified constructor validation logic through refactoring. --- .../src/analyzer/constructors.ts | 345 +++++++++--------- .../src/analyzer/typeEvaluator.ts | 43 ++- .../src/analyzer/typeEvaluatorTypes.ts | 2 +- 3 files changed, 204 insertions(+), 186 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 1f98ac8fa..deaa00052 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -14,7 +14,7 @@ import { DiagnosticRule } from '../common/diagnosticRules'; import { Localizer } from '../localization/localize'; -import { ArgumentCategory, ExpressionNode } from '../parser/parseNodes'; +import { ExpressionNode } from '../parser/parseNodes'; import { getFileInfo } from './analyzerNodeInfo'; import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; import { applyConstructorTransform, hasConstructorTransform } from './constructorTransform'; @@ -42,6 +42,7 @@ import { FunctionTypeFlags, OverloadedFunctionType, Type, + UnknownType, isAny, isClassInstance, isFunction, @@ -51,10 +52,9 @@ import { isUnknown, } from './types'; -// Tries to match the arguments of a call to the constructor for a class. +// Matches the arguments of a call to the constructor for a class. // If successful, it returns the resulting (specialized) object type that -// is allocated by the constructor. If unsuccessful, it records diagnostic -// information and returns undefined. +// is allocated by the constructor. If unsuccessful, it reports diagnostics. export function validateConstructorArguments( evaluator: TypeEvaluator, errorNode: ExpressionNode, @@ -63,9 +63,9 @@ export function validateConstructorArguments( skipUnknownArgCheck: boolean, inferenceContext: InferenceContext | undefined ): CallResult { - // See if there's a custom `__call__` method on the metaclass. If so, we'll - // assume that it overrides the normal `type.__call__` logic and we won't - // do the normal __new__ and __init__ validation. + // If there a custom `__call__` method on the metaclass, assume that it + // overrides the normal `type.__call__` logic and don't perform the usual + // __new__ and __init__ validation. const metaclassResult = validateMetaclassCall( evaluator, errorNode, @@ -78,120 +78,128 @@ export function validateConstructorArguments( return metaclassResult; } - let validatedTypes = false; - let returnType: Type | undefined; - let reportedErrors = false; - let isTypeIncomplete = false; - const overloadsUsedForCall: FunctionType[] = []; - - // Create a helper function that determines whether we should skip argument - // validation for either __init__ or __new__. This is required for certain - // synthesized constructor types, namely NamedTuples. - const skipConstructorCheck = (type: Type) => { - return isFunction(type) && FunctionType.isSkipConstructorCheck(type); - }; + // Determine whether the class overrides the object.__new__ method. + const newMethodInfo = evaluator.getTypeOfClassMemberName( + errorNode, + type, + /* isAccessedThroughObject */ false, + '__new__', + { method: 'get' }, + /* diag */ undefined, + MemberAccessFlags.AccessClassMembersOnly | + MemberAccessFlags.SkipObjectBaseClass | + MemberAccessFlags.TreatConstructorAsClassMethod, + type + ); - // Validate __init__ - // We validate __init__ before __new__ because the former typically has - // more specific type annotations, and we want to evaluate the arguments - // in the context of these types. The __new__ method often uses generic - // vargs and kwargs. - const initMethodType = evaluator.getTypeOfObjectMember( + // Determine whether the class overrides the object.__init__ method. + const initMethodInfo = evaluator.getTypeOfObjectMember( errorNode, ClassType.cloneAsInstance(type), '__init__', { method: 'get' }, /* diag */ undefined, MemberAccessFlags.SkipObjectBaseClass | MemberAccessFlags.SkipAttributeAccessOverride - )?.type; - - if (initMethodType && !skipConstructorCheck(initMethodType)) { - // If there is an expected type, analyze the constructor call - // for each of the subtypes that comprise the expected type. If - // one or more analyzes with no errors, use those results. - if (inferenceContext) { - const expectedCallResult = validateConstructorMethodWithContext( - evaluator, - errorNode, - argList, - type, - skipUnknownArgCheck, - inferenceContext, - initMethodType - ); + ); - if (expectedCallResult && !expectedCallResult.argumentErrors) { - returnType = expectedCallResult.returnType; + let returnType: Type | undefined; + let validatedTypes = false; + let argumentErrors = false; + let isTypeIncomplete = false; + const overloadsUsedForCall: FunctionType[] = []; - if (expectedCallResult.isTypeIncomplete) { - isTypeIncomplete = true; - } - } + // If the class doesn't override object.__new__ or object.__init__, use the + // fallback constructor type evaluation for the `object` class. + if (!newMethodInfo && !initMethodInfo) { + const callResult = validateFallbackConstructorCall(evaluator, errorNode, argList, type, inferenceContext); + + if (callResult.argumentErrors) { + argumentErrors = true; + } else { + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); } - if (!returnType) { - const typeVarContext = type.typeArguments - ? buildTypeVarContextFromSpecializedClass(type, /* makeConcrete */ false) - : new TypeVarContext(getTypeVarScopeId(type)); + returnType = callResult.returnType ?? UnknownType.create(); + } else { + // Validate __init__ + // We validate __init__ before __new__ because the former typically has + // more specific type annotations, and we want to evaluate the arguments + // in the context of these types. The __new__ method often uses generic + // vargs and kwargs. + const initMethodType = initMethodInfo?.type; + if (initMethodType && !shouldSkipConstructorCheck(initMethodType)) { + // If there is an expected type, analyze the constructor call + // for each of the subtypes that comprise the expected type. If + // one or more analyzes with no errors, use those results. + if (inferenceContext) { + const expectedCallResult = validateConstructorMethodWithContext( + evaluator, + errorNode, + argList, + type, + skipUnknownArgCheck, + inferenceContext, + initMethodType + ); - typeVarContext.addSolveForScope(getTypeVarScopeId(initMethodType)); - const callResult = evaluator.validateCallArguments( - errorNode, - argList, - { type: initMethodType }, - typeVarContext, - skipUnknownArgCheck - ); + if (expectedCallResult && !expectedCallResult.argumentErrors) { + returnType = expectedCallResult.returnType; - let adjustedClassType = type; - if ( - callResult.specializedInitSelfType && - isClassInstance(callResult.specializedInitSelfType) && - ClassType.isSameGenericClass(callResult.specializedInitSelfType, type) - ) { - adjustedClassType = ClassType.cloneAsInstantiable(callResult.specializedInitSelfType); + if (expectedCallResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + } } - returnType = applyExpectedTypeForConstructor( - evaluator, - adjustedClassType, - /* inferenceContext */ undefined, - typeVarContext - ); + if (!returnType) { + const typeVarContext = type.typeArguments + ? buildTypeVarContextFromSpecializedClass(type, /* makeConcrete */ false) + : new TypeVarContext(getTypeVarScopeId(type)); - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } + typeVarContext.addSolveForScope(getTypeVarScopeId(initMethodType)); + const callResult = evaluator.validateCallArguments( + errorNode, + argList, + { type: initMethodType }, + typeVarContext, + skipUnknownArgCheck + ); - if (!callResult.argumentErrors) { - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - } else { - reportedErrors = true; - } - } + let adjustedClassType = type; + if ( + callResult.specializedInitSelfType && + isClassInstance(callResult.specializedInitSelfType) && + ClassType.isSameGenericClass(callResult.specializedInitSelfType, type) + ) { + adjustedClassType = ClassType.cloneAsInstantiable(callResult.specializedInitSelfType); + } - validatedTypes = true; - skipUnknownArgCheck = true; - } + returnType = applyExpectedTypeForConstructor( + evaluator, + adjustedClassType, + /* inferenceContext */ undefined, + typeVarContext + ); - // Validate __new__ - // Don't report errors for __new__ if __init__ already generated errors. They're - // probably going to be entirely redundant anyway. - if (!reportedErrors) { - const newMethodInfo = evaluator.getTypeOfClassMemberName( - errorNode, - type, - /* isAccessedThroughObject */ false, - '__new__', - { method: 'get' }, - /* diag */ undefined, - MemberAccessFlags.AccessClassMembersOnly | - MemberAccessFlags.SkipObjectBaseClass | - MemberAccessFlags.TreatConstructorAsClassMethod, - type - ); + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + + if (callResult.argumentErrors) { + argumentErrors = true; + } else { + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + } + } - if (newMethodInfo && !skipConstructorCheck(newMethodInfo.type)) { + validatedTypes = true; + skipUnknownArgCheck = true; + } + + // Validate __new__ + // Don't report errors for __new__ if __init__ already generated errors. They're + // probably going to be entirely redundant anyway. + if (!argumentErrors && newMethodInfo && !shouldSkipConstructorCheck(newMethodInfo.type)) { const constructorMethodType = newMethodInfo.type; let newReturnType: Type | undefined; @@ -226,13 +234,11 @@ export function validateConstructorArguments( typeVarContext.addSolveForScope(getTypeVarScopeId(constructorMethodType)); - // Skip the unknown argument check if we've already checked for __init__. - let callResult: CallResult; - if (hasConstructorTransform(type)) { - // Use speculative mode if we're going to later apply - // a constructor transform. This allows us to use bidirectional - // type inference for arguments in the transform. - callResult = evaluator.useSpeculativeMode(errorNode, () => { + // Use speculative mode if we're going to later apply a constructor transform. + // This allows us to use bidirectional type inference for arguments in the transform. + const callResult = evaluator.useSpeculativeMode( + hasConstructorTransform(type) ? errorNode : undefined, + () => { return evaluator.validateCallArguments( errorNode, argList, @@ -240,23 +246,15 @@ export function validateConstructorArguments( typeVarContext, skipUnknownArgCheck ); - }); - } else { - callResult = evaluator.validateCallArguments( - errorNode, - argList, - newMethodInfo, - typeVarContext, - skipUnknownArgCheck - ); - } + } + ); if (callResult.isTypeIncomplete) { isTypeIncomplete = true; } if (callResult.argumentErrors) { - reportedErrors = true; + argumentErrors = true; } else if (!newReturnType) { newReturnType = callResult.returnType; @@ -311,8 +309,8 @@ export function validateConstructorArguments( } } - // If we weren't able to validate the args, analyze the expressions - // here to mark symbols as referenced and report expression-level errors. + // If we weren't able to validate the args, analyze the expressions here + // to mark symbols referenced and report expression evaluation errors. if (!validatedTypes) { argList.forEach((arg) => { if (arg.valueExpression && !evaluator.isSpeculativeModeInUse(arg.valueExpression)) { @@ -321,45 +319,10 @@ export function validateConstructorArguments( }); } - if (!validatedTypes && argList.some((arg) => arg.argumentCategory === ArgumentCategory.Simple)) { - const fileInfo = getFileInfo(errorNode); - evaluator.addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.constructorNoArgs().format({ type: type.aliasName || type.details.name }), - errorNode - ); - } - - if (!returnType) { - // There was no __init__ or __new__ method or we couldn't match the provided - // arguments to them. - if (!inferenceContext && type.typeArguments) { - // If there was no expected type but the type was already specialized, - // assume that we're constructing an instance of the specialized type. - returnType = convertToInstance(type); - } else { - // Do our best to specialize the instantiated class based on the expected - // type if provided. - const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); - - if (inferenceContext) { - populateTypeVarContextBasedOnExpectedType( - evaluator, - ClassType.cloneAsInstance(type), - inferenceContext.expectedType, - typeVarContext, - getTypeVarScopesForNode(errorNode) - ); - } - - returnType = applyExpectedTypeForConstructor(evaluator, type, inferenceContext, typeVarContext); - } - } - - if (!reportedErrors) { + // Apply a constructor transform if applicable. + if (!argumentErrors && returnType) { const transformed = applyConstructorTransform(evaluator, errorNode, argList, type, { - argumentErrors: reportedErrors, + argumentErrors, returnType, isTypeIncomplete, }); @@ -371,18 +334,62 @@ export function validateConstructorArguments( } if (transformed.argumentErrors) { - reportedErrors = true; + argumentErrors = true; } } - const result: CallResult = { + return { argumentErrors, returnType, isTypeIncomplete, overloadsUsedForCall }; +} + +function validateFallbackConstructorCall( + evaluator: TypeEvaluator, + errorNode: ExpressionNode, + argList: FunctionArgument[], + type: ClassType, + inferenceContext: InferenceContext | undefined +): CallResult { + let reportedErrors = false; + + if (argList.length > 0) { + const fileInfo = getFileInfo(errorNode); + evaluator.addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.constructorNoArgs().format({ type: type.aliasName || type.details.name }), + errorNode + ); + reportedErrors = true; + } + + if (!inferenceContext && type.typeArguments) { + // If there was no expected type but the type was already specialized, + // assume that we're constructing an instance of the specialized type. + return { + argumentErrors: reportedErrors, + overloadsUsedForCall: [], + returnType: convertToInstance(type), + }; + } + + // Do our best to specialize the instantiated class based on the expected + // type if provided. + const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); + + if (inferenceContext) { + populateTypeVarContextBasedOnExpectedType( + evaluator, + ClassType.cloneAsInstance(type), + inferenceContext.expectedType, + typeVarContext, + getTypeVarScopesForNode(errorNode) + ); + } + + return { argumentErrors: reportedErrors, - returnType, - isTypeIncomplete, - overloadsUsedForCall, + overloadsUsedForCall: [], + returnType: applyExpectedTypeForConstructor(evaluator, type, inferenceContext, typeVarContext), }; - - return result; } function validateMetaclassCall( @@ -742,3 +749,9 @@ export function createFunctionFromConstructor( return constructorFunction; } + +// Determines whether we should skip argument validation. This is required +// for certain synthesized constructor types, namely NamedTuples. +function shouldSkipConstructorCheck(type: Type) { + return isFunction(type) && FunctionType.isSkipConstructorCheck(type); +} diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 98969fe9d..245b96ba6 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -12787,21 +12787,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } }; - if (isSpeculativeModeInUse(node) || inferenceContext?.isTypeIncomplete) { - // We need to set allowCacheRetention to false because we don't want to - // cache the type of the lambda return expression because it depends on - // the parameter types that we set above, and the speculative type cache - // doesn't know about that context. - useSpeculativeMode( - node.expression, - () => { - inferLambdaReturnType(); - }, - /* allowCacheRetention */ false - ); - } else { - inferLambdaReturnType(); - } + // We need to set allowCacheRetention to false because we don't want to + // cache the type of the lambda return expression because it depends on + // the parameter types that we set above, and the speculative type cache + // doesn't know about that context. + useSpeculativeMode( + isSpeculativeModeInUse(node) || inferenceContext?.isTypeIncomplete ? node.expression : undefined, + () => { + inferLambdaReturnType(); + }, + /* allowCacheRetention */ false + ); // Mark the function type as no longer being evaluated. functionType.details.flags &= ~FunctionTypeFlags.PartiallyEvaluated; @@ -18880,10 +18876,19 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - // Disables recording of errors and warnings and disables - // any caching of types, under the assumption that we're - // performing speculative evaluations. - function useSpeculativeMode(speculativeNode: ParseNode, callback: () => T, allowCacheRetention = true) { + // Disables recording of errors and warnings and disables any caching of + // types, under the assumption that we're performing speculative evaluations. + // If speculativeNode is undefined, speculative mode is not used. This is + // useful in cases where we conditionally want to use speculative mode. + function useSpeculativeMode( + speculativeNode: ParseNode | undefined, + callback: () => T, + allowCacheRetention = true + ) { + if (!speculativeNode) { + return callback(); + } + speculativeTypeTracker.enterSpeculativeContext(speculativeNode, allowCacheRetention); try { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 91c218c77..ee636e3af 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -641,7 +641,7 @@ export interface TypeEvaluator { getTypeCacheEntryCount: () => number; disposeEvaluator: () => void; - useSpeculativeMode: (speculativeNode: ParseNode, callback: () => T) => T; + useSpeculativeMode: (speculativeNode: ParseNode | undefined, callback: () => T) => T; isSpeculativeModeInUse: (node: ParseNode | undefined) => boolean; setTypeForNode: (node: ParseNode, type?: Type, flags?: EvaluatorFlags) => void; From 50d967a17df8caa3db42e8f22fde54ce46f3b274 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 6 May 2023 11:06:13 -0700 Subject: [PATCH 130/525] Updated typeshed stubs to the latest version. --- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/_ctypes.pyi | 159 +++++++++++++- .../typeshed-fallback/stdlib/builtins.pyi | 2 + .../typeshed-fallback/stdlib/configparser.pyi | 4 +- .../stdlib/ctypes/__init__.pyi | 188 +++-------------- .../typeshed-fallback/stdlib/enum.pyi | 56 ++--- .../typeshed-fallback/stdlib/itertools.pyi | 2 +- .../stdlib/lib2to3/btm_matcher.pyi | 28 +++ .../stdlib/lib2to3/fixer_base.pyi | 43 ++++ .../stdlib/lib2to3/fixes/__init__.pyi | 0 .../stdlib/lib2to3/fixes/fix_apply.pyi | 9 + .../stdlib/lib2to3/fixes/fix_asserts.pyi | 11 + .../stdlib/lib2to3/fixes/fix_basestring.pyi | 9 + .../stdlib/lib2to3/fixes/fix_buffer.pyi | 9 + .../stdlib/lib2to3/fixes/fix_dict.pyi | 17 ++ .../stdlib/lib2to3/fixes/fix_except.pyi | 15 ++ .../stdlib/lib2to3/fixes/fix_exec.pyi | 9 + .../stdlib/lib2to3/fixes/fix_execfile.pyi | 9 + .../stdlib/lib2to3/fixes/fix_exitfunc.pyi | 14 ++ .../stdlib/lib2to3/fixes/fix_filter.pyi | 10 + .../stdlib/lib2to3/fixes/fix_funcattrs.pyi | 9 + .../stdlib/lib2to3/fixes/fix_future.pyi | 9 + .../stdlib/lib2to3/fixes/fix_getcwdu.pyi | 9 + .../stdlib/lib2to3/fixes/fix_has_key.pyi | 9 + .../stdlib/lib2to3/fixes/fix_idioms.pyi | 16 ++ .../stdlib/lib2to3/fixes/fix_import.pyi | 17 ++ .../stdlib/lib2to3/fixes/fix_imports.pyi | 22 ++ .../stdlib/lib2to3/fixes/fix_imports2.pyi | 6 + .../stdlib/lib2to3/fixes/fix_input.pyi | 12 ++ .../stdlib/lib2to3/fixes/fix_intern.pyi | 10 + .../stdlib/lib2to3/fixes/fix_isinstance.pyi | 9 + .../stdlib/lib2to3/fixes/fix_itertools.pyi | 10 + .../lib2to3/fixes/fix_itertools_imports.pyi | 8 + .../stdlib/lib2to3/fixes/fix_long.pyi | 8 + .../stdlib/lib2to3/fixes/fix_map.pyi | 10 + .../stdlib/lib2to3/fixes/fix_metaclass.pyi | 18 ++ .../stdlib/lib2to3/fixes/fix_methodattrs.pyi | 11 + .../stdlib/lib2to3/fixes/fix_ne.pyi | 9 + .../stdlib/lib2to3/fixes/fix_next.pyi | 20 ++ .../stdlib/lib2to3/fixes/fix_nonzero.pyi | 9 + .../stdlib/lib2to3/fixes/fix_numliterals.pyi | 9 + .../stdlib/lib2to3/fixes/fix_operator.pyi | 13 ++ .../stdlib/lib2to3/fixes/fix_paren.pyi | 9 + .../stdlib/lib2to3/fixes/fix_print.pyi | 13 ++ .../stdlib/lib2to3/fixes/fix_raise.pyi | 9 + .../stdlib/lib2to3/fixes/fix_raw_input.pyi | 9 + .../stdlib/lib2to3/fixes/fix_reduce.pyi | 9 + .../stdlib/lib2to3/fixes/fix_reload.pyi | 10 + .../stdlib/lib2to3/fixes/fix_renames.pyi | 18 ++ .../stdlib/lib2to3/fixes/fix_repr.pyi | 9 + .../stdlib/lib2to3/fixes/fix_set_literal.pyi | 8 + .../lib2to3/fixes/fix_standarderror.pyi | 9 + .../stdlib/lib2to3/fixes/fix_sys_exc.pyi | 10 + .../stdlib/lib2to3/fixes/fix_throw.pyi | 9 + .../stdlib/lib2to3/fixes/fix_tuple_params.pyi | 18 ++ .../stdlib/lib2to3/fixes/fix_types.pyi | 9 + .../stdlib/lib2to3/fixes/fix_unicode.pyi | 13 ++ .../stdlib/lib2to3/fixes/fix_urllib.pyi | 15 ++ .../stdlib/lib2to3/fixes/fix_ws_comma.pyi | 13 ++ .../stdlib/lib2to3/fixes/fix_xrange.pyi | 21 ++ .../stdlib/lib2to3/fixes/fix_xreadlines.pyi | 9 + .../stdlib/lib2to3/fixes/fix_zip.pyi | 10 + .../typeshed-fallback/stdlib/lib2to3/main.pyi | 43 ++++ .../stdlib/lib2to3/pgen2/__init__.pyi | 5 +- .../stdlib/lib2to3/pgen2/driver.pyi | 13 +- .../stdlib/lib2to3/pgen2/parse.pyi | 11 +- .../stdlib/lib2to3/pgen2/pgen.pyi | 20 +- .../stdlib/lib2to3/pgen2/tokenize.pyi | 3 +- .../stdlib/lib2to3/pygram.pyi | 3 +- .../stdlib/lib2to3/pytree.pyi | 62 ++++-- .../stdlib/lib2to3/refactor.pyi | 82 ++++---- .../stdlib/logging/__init__.pyi | 2 +- .../stdlib/logging/config.pyi | 107 ++++++++-- .../stdlib/multiprocessing/queues.pyi | 14 +- .../stdlib/multiprocessing/synchronize.pyi | 20 +- .../stdlib/sqlite3/dbapi2.pyi | 5 +- .../typeshed-fallback/stdlib/sys.pyi | 11 + .../stubs/Markdown/markdown/core.pyi | 1 + .../stubs/Pillow/PIL/EpsImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/FpxImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/GbrImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/IcnsImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/IcoImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/Image.pyi | 3 +- .../stubs/Pillow/PIL/ImageFile.pyi | 5 +- .../stubs/Pillow/PIL/IptcImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/PngImagePlugin.pyi | 1 - .../stubs/Pillow/PIL/PyAccess.pyi | 14 +- .../stubs/Pillow/PIL/TiffImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/WalImageFile.pyi | 3 +- .../stubs/Pillow/PIL/WebPImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/WmfImagePlugin.pyi | 3 +- .../stubs/Pillow/PIL/_imaging.pyi | 15 ++ .../stubs/SQLAlchemy/METADATA.toml | 1 - .../stubs/SQLAlchemy/sqlalchemy/__init__.pyi | 2 +- .../SQLAlchemy/sqlalchemy/cprocessors.pyi | 15 ++ .../sqlalchemy/dialects/firebird/__init__.pyi | 2 +- .../sqlalchemy/dialects/firebird/base.pyi | 13 +- .../dialects/firebird/kinterbasdb.pyi | 2 +- .../sqlalchemy/dialects/mssql/base.pyi | 6 +- .../dialects/mssql/information_schema.pyi | 2 +- .../sqlalchemy/dialects/mssql/json.pyi | 2 +- .../sqlalchemy/dialects/mssql/pymssql.pyi | 2 +- .../sqlalchemy/dialects/mssql/pyodbc.pyi | 2 +- .../sqlalchemy/dialects/mysql/asyncmy.pyi | 14 +- .../sqlalchemy/dialects/mysql/base.pyi | 3 +- .../sqlalchemy/dialects/mysql/dml.pyi | 2 +- .../sqlalchemy/dialects/mysql/json.pyi | 2 +- .../dialects/mysql/mysqlconnector.pyi | 2 +- .../sqlalchemy/dialects/mysql/mysqldb.pyi | 2 +- .../sqlalchemy/dialects/mysql/pymysql.pyi | 2 +- .../sqlalchemy/dialects/mysql/types.pyi | 2 +- .../sqlalchemy/dialects/oracle/base.pyi | 6 +- .../sqlalchemy/dialects/oracle/cx_oracle.pyi | 3 +- .../sqlalchemy/dialects/postgresql/array.pyi | 4 +- .../dialects/postgresql/asyncpg.pyi | 3 + .../sqlalchemy/dialects/postgresql/base.pyi | 3 +- .../sqlalchemy/dialects/postgresql/dml.pyi | 2 +- .../sqlalchemy/dialects/postgresql/hstore.pyi | 4 +- .../sqlalchemy/dialects/postgresql/json.pyi | 2 +- .../sqlalchemy/dialects/postgresql/pg8000.pyi | 3 +- .../dialects/postgresql/psycopg2.pyi | 3 +- .../dialects/postgresql/pygresql.pyi | 2 +- .../dialects/postgresql/pypostgresql.pyi | 5 +- .../sqlalchemy/dialects/postgresql/ranges.pyi | 2 +- .../sqlalchemy/dialects/sqlite/base.pyi | 6 +- .../sqlalchemy/dialects/sqlite/dml.pyi | 2 +- .../sqlalchemy/dialects/sqlite/json.pyi | 2 +- .../sqlalchemy/dialects/sybase/base.pyi | 7 +- .../sqlalchemy/dialects/sybase/mxodbc.pyi | 4 +- .../sqlalchemy/dialects/sybase/pyodbc.pyi | 6 +- .../sqlalchemy/dialects/sybase/pysybase.pyi | 4 +- .../sqlalchemy/engine/characteristics.pyi | 12 +- .../SQLAlchemy/sqlalchemy/engine/cursor.pyi | 7 +- .../SQLAlchemy/sqlalchemy/engine/default.pyi | 5 +- .../sqlalchemy/engine/interfaces.pyi | 5 +- .../SQLAlchemy/sqlalchemy/engine/result.pyi | 10 +- .../SQLAlchemy/sqlalchemy/engine/row.pyi | 6 +- .../sqlalchemy/ext/associationproxy.pyi | 2 +- .../sqlalchemy/ext/asyncio/base.pyi | 8 +- .../sqlalchemy/ext/asyncio/engine.pyi | 4 +- .../sqlalchemy/ext/asyncio/result.pyi | 2 +- .../sqlalchemy/ext/asyncio/scoping.pyi | 3 +- .../sqlalchemy/ext/asyncio/session.pyi | 3 +- .../stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi | 9 +- .../stubs/SQLAlchemy/sqlalchemy/log.pyi | 14 +- .../SQLAlchemy/sqlalchemy/orm/attributes.pyi | 29 ++- .../stubs/SQLAlchemy/sqlalchemy/orm/base.pyi | 3 +- .../SQLAlchemy/sqlalchemy/orm/context.pyi | 2 + .../SQLAlchemy/sqlalchemy/orm/decl_api.pyi | 2 +- .../sqlalchemy/orm/descriptor_props.pyi | 2 +- .../sqlalchemy/orm/instrumentation.pyi | 6 +- .../SQLAlchemy/sqlalchemy/orm/interfaces.pyi | 2 + .../SQLAlchemy/sqlalchemy/orm/mapper.pyi | 3 +- .../sqlalchemy/orm/path_registry.pyi | 2 +- .../SQLAlchemy/sqlalchemy/orm/persistence.pyi | 14 +- .../stubs/SQLAlchemy/sqlalchemy/orm/query.pyi | 1 + .../sqlalchemy/orm/relationships.pyi | 2 +- .../SQLAlchemy/sqlalchemy/orm/scoping.pyi | 2 +- .../SQLAlchemy/sqlalchemy/orm/session.pyi | 3 +- .../stubs/SQLAlchemy/sqlalchemy/orm/state.pyi | 2 +- .../sqlalchemy/orm/strategy_options.pyi | 1 + .../stubs/SQLAlchemy/sqlalchemy/pool/base.pyi | 5 +- .../stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi | 2 +- .../SQLAlchemy/sqlalchemy/sql/annotation.pyi | 196 +++++++++++++++++- .../stubs/SQLAlchemy/sqlalchemy/sql/base.pyi | 5 +- .../SQLAlchemy/sqlalchemy/sql/compiler.pyi | 11 +- .../stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi | 8 + .../SQLAlchemy/sqlalchemy/sql/elements.pyi | 10 +- .../SQLAlchemy/sqlalchemy/sql/functions.pyi | 2 +- .../SQLAlchemy/sqlalchemy/sql/schema.pyi | 4 +- .../SQLAlchemy/sqlalchemy/sql/selectable.pyi | 10 +- .../SQLAlchemy/sqlalchemy/sql/sqltypes.pyi | 15 +- .../SQLAlchemy/sqlalchemy/sql/traversals.pyi | 5 +- .../SQLAlchemy/sqlalchemy/sql/type_api.pyi | 3 + .../sqlalchemy/testing/__init__.pyi | 3 + .../sqlalchemy/testing/assertions.pyi | 3 + .../SQLAlchemy/sqlalchemy/testing/config.pyi | 1 + .../SQLAlchemy/sqlalchemy/testing/mock.pyi | 1 + .../sqlalchemy/testing/plugin/plugin_base.pyi | 15 +- .../testing/plugin/pytestplugin.pyi | 5 + .../sqlalchemy/testing/provision.pyi | 31 ++- .../sqlalchemy/testing/requirements.pyi | 18 ++ .../SQLAlchemy/sqlalchemy/testing/util.pyi | 2 + .../SQLAlchemy/sqlalchemy/util/__init__.pyi | 31 ++- .../sqlalchemy/util/_collections.pyi | 4 +- .../sqlalchemy/util/concurrency.pyi | 4 +- .../sqlalchemy/util/deprecations.pyi | 1 + .../stubs/aiofiles/aiofiles/os.pyi | 6 +- .../stubs/beautifulsoup4/bs4/element.pyi | 4 +- .../stubs/cffi/_cffi_backend.pyi | 6 +- .../chardet/chardet/universaldetector.pyi | 2 +- .../stubs/dj-database-url/METADATA.toml | 1 + .../stubs/docutils/docutils/io.pyi | 4 +- .../stubs/docutils/docutils/nodes.pyi | 19 +- .../stubs/fpdf2/METADATA.toml | 2 +- .../stubs/fpdf2/fpdf/__init__.pyi | 5 +- .../stubs/fpdf2/fpdf/deprecation.pyi | 6 +- .../stubs/fpdf2/fpdf/encryption.pyi | 3 + .../stubs/fpdf2/fpdf/enums.pyi | 38 +++- .../stubs/fpdf2/fpdf/fonts.pyi | 30 ++- .../stubs/fpdf2/fpdf/fpdf.pyi | 127 ++++++++---- .../stubs/fpdf2/fpdf/graphics_state.pyi | 3 + .../stubs/fpdf2/fpdf/html.pyi | 27 ++- .../stubs/fpdf2/fpdf/image_parsing.pyi | 28 ++- .../stubs/fpdf2/fpdf/line_break.pyi | 16 +- .../stubs/fpdf2/fpdf/output.pyi | 14 +- .../stubs/fpdf2/fpdf/prefs.pyi | 2 +- .../stubs/fpdf2/fpdf/sign.pyi | 2 +- .../stubs/fpdf2/fpdf/syntax.pyi | 17 +- .../stubs/fpdf2/fpdf/table.pyi | 70 +++++++ .../stubs/fpdf2/fpdf/util.pyi | 22 +- .../stubs/hdbcli/METADATA.toml | 2 +- .../stubs/hdbcli/hdbcli/dbapi.pyi | 1 + .../openpyxl/openpyxl/utils/datetime.pyi | 4 +- .../stubs/passlib/passlib/apps.pyi | 6 +- .../pyinstaller/PyInstaller/__main__.pyi | 5 +- .../PyInstaller/building/__init__.pyi | 7 + .../pyinstaller/PyInstaller/building/api.pyi | 168 +++++++++++++++ .../PyInstaller/building/build_main.pyi | 23 +- .../PyInstaller/building/datastruct.pyi | 11 +- .../PyInstaller/building/splash.pyi | 31 +++ .../PyInstaller/utils/hooks/__init__.pyi | 2 - .../PyInstaller/utils/hooks/conda.pyi | 2 +- .../PyInstaller/utils/win32/versioninfo.pyi | 51 +++++ .../PyInstaller/utils/win32/winmanifest.pyi | 127 ++++++++++++ .../stubs/pyvmomi/METADATA.toml | 3 +- .../stubs/regex/METADATA.toml | 2 +- .../stubs/requests/METADATA.toml | 4 +- .../stubs/requests/requests/adapters.pyi | 1 - .../setuptools/pkg_resources/__init__.pyi | 96 ++++----- .../typeshed-fallback/stubs/ujson/ujson.pyi | 12 +- .../stubs/urllib3/METADATA.toml | 1 + .../stubs/urllib3/urllib3/connection.pyi | 3 +- .../stubs/urllib3/urllib3/connectionpool.pyi | 3 +- .../packages/ssl_match_hostname/__init__.pyi | 4 - .../ssl_match_hostname/_implementation.pyi | 3 - .../urllib3/util/ssl_match_hostname.pyi | 8 + 239 files changed, 2601 insertions(+), 697 deletions(-) create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/btm_matcher.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixer_base.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_apply.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_asserts.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_basestring.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_buffer.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_dict.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_except.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_exec.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_execfile.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_exitfunc.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_filter.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_funcattrs.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_future.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_getcwdu.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_has_key.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_idioms.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_import.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_imports.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_imports2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_input.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_intern.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_isinstance.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_itertools.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_itertools_imports.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_long.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_map.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_metaclass.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_methodattrs.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_ne.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_next.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_nonzero.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_numliterals.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_operator.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_paren.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_print.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_raise.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_raw_input.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_reduce.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_reload.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_renames.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_repr.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_set_literal.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_standarderror.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_sys_exc.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_throw.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_tuple_params.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_types.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_unicode.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_urllib.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_ws_comma.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_xrange.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_xreadlines.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_zip.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/main.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cprocessors.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/table.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/api.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/splash.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/win32/versioninfo.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/win32/winmanifest.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/packages/ssl_match_hostname/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/packages/ssl_match_hostname/_implementation.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/ssl_match_hostname.pyi diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index 4a6c0fec2..8879094a9 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -1d9f35369d724954e7fc34970692f5509dd10ac7 +a6ecf564b552b2d0cae7a747b7eab8cb4f90f21c diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi index 0ad2fcb57..3e3c8d29a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi @@ -1,6 +1,16 @@ import sys -from ctypes import _CArgObject, _PointerLike -from typing_extensions import TypeAlias +from _typeshed import ReadableBuffer, WriteableBuffer +from abc import abstractmethod +from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence +from ctypes import CDLL, c_int +from typing import Any, ClassVar, Generic, TypeVar, overload +from typing_extensions import Self, TypeAlias + +if sys.version_info >= (3, 9): + from types import GenericAlias + +_T = TypeVar("_T") +_CT = TypeVar("_CT", bound=_CData) FUNCFLAG_CDECL: int FUNCFLAG_PYTHONAPI: int @@ -27,3 +37,148 @@ if sys.platform == "win32": FUNCFLAG_HRESULT: int FUNCFLAG_STDCALL: int + + def FormatError(code: int = ...) -> str: ... + def get_last_error() -> int: ... + def set_last_error(value: int) -> int: ... + +class _CDataMeta(type): + # By default mypy complains about the following two methods, because strictly speaking cls + # might not be a Type[_CT]. However this can never actually happen, because the only class that + # uses _CDataMeta as its metaclass is _CData. So it's safe to ignore the errors here. + def __mul__(cls: type[_CT], other: int) -> type[Array[_CT]]: ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues] + def __rmul__(cls: type[_CT], other: int) -> type[Array[_CT]]: ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues] + +class _CData(metaclass=_CDataMeta): + _b_base_: int + _b_needsfree_: bool + _objects: Mapping[Any, int] | None + @classmethod + def from_buffer(cls, source: WriteableBuffer, offset: int = ...) -> Self: ... + @classmethod + def from_buffer_copy(cls, source: ReadableBuffer, offset: int = ...) -> Self: ... + @classmethod + def from_address(cls, address: int) -> Self: ... + @classmethod + def from_param(cls, obj: Any) -> Self | _CArgObject: ... + @classmethod + def in_dll(cls, library: CDLL, name: str) -> Self: ... + +class _SimpleCData(Generic[_T], _CData): + value: _T + # The TypeVar can be unsolved here, + # but we can't use overloads without creating many, many mypy false-positive errors + def __init__(self, value: _T = ...) -> None: ... # pyright: ignore[reportInvalidTypeVarUse] + +class _CanCastTo(_CData): ... +class _PointerLike(_CanCastTo): ... + +class _Pointer(Generic[_CT], _PointerLike, _CData): + _type_: type[_CT] + contents: _CT + @overload + def __init__(self) -> None: ... + @overload + def __init__(self, arg: _CT) -> None: ... + @overload + def __getitem__(self, __key: int) -> Any: ... + @overload + def __getitem__(self, __key: slice) -> list[Any]: ... + def __setitem__(self, __key: int, __value: Any) -> None: ... + +def POINTER(type: type[_CT]) -> type[_Pointer[_CT]]: ... +def pointer(__arg: _CT) -> _Pointer[_CT]: ... + +class _CArgObject: ... + +def byref(obj: _CData, offset: int = ...) -> _CArgObject: ... + +_ECT: TypeAlias = Callable[[type[_CData] | None, CFuncPtr, tuple[_CData, ...]], _CData] +_PF: TypeAlias = tuple[int] | tuple[int, str] | tuple[int, str, Any] + +class CFuncPtr(_PointerLike, _CData): + restype: type[_CData] | Callable[[int], Any] | None + argtypes: Sequence[type[_CData]] + errcheck: _ECT + _flags_: ClassVar[int] # Abstract attribute that must be defined on subclasses + @overload + def __init__(self, address: int) -> None: ... + @overload + def __init__(self, callable: Callable[..., Any]) -> None: ... + @overload + def __init__(self, func_spec: tuple[str | int, CDLL], paramflags: tuple[_PF, ...] = ...) -> None: ... + @overload + def __init__(self, vtlb_index: int, name: str, paramflags: tuple[_PF, ...] = ..., iid: _Pointer[c_int] = ...) -> None: ... + def __call__(self, *args: Any, **kwargs: Any) -> Any: ... + +class _CField: + offset: int + size: int + +class _StructUnionMeta(_CDataMeta): + _fields_: Sequence[tuple[str, type[_CData]] | tuple[str, type[_CData], int]] + _pack_: int + _anonymous_: Sequence[str] + def __getattr__(self, name: str) -> _CField: ... + +class _StructUnionBase(_CData, metaclass=_StructUnionMeta): + def __init__(self, *args: Any, **kw: Any) -> None: ... + def __getattr__(self, name: str) -> Any: ... + def __setattr__(self, name: str, value: Any) -> None: ... + +class Union(_StructUnionBase): ... +class Structure(_StructUnionBase): ... + +class Array(Generic[_CT], _CData): + @property + @abstractmethod + def _length_(self) -> int: ... + @_length_.setter + def _length_(self, value: int) -> None: ... + @property + @abstractmethod + def _type_(self) -> type[_CT]: ... + @_type_.setter + def _type_(self, value: type[_CT]) -> None: ... + # Note: only available if _CT == c_char + @property + def raw(self) -> bytes: ... + @raw.setter + def raw(self, value: ReadableBuffer) -> None: ... + value: Any # Note: bytes if _CT == c_char, str if _CT == c_wchar, unavailable otherwise + # TODO These methods cannot be annotated correctly at the moment. + # All of these "Any"s stand for the array's element type, but it's not possible to use _CT + # here, because of a special feature of ctypes. + # By default, when accessing an element of an Array[_CT], the returned object has type _CT. + # However, when _CT is a "simple type" like c_int, ctypes automatically "unboxes" the object + # and converts it to the corresponding Python primitive. For example, when accessing an element + # of an Array[c_int], a Python int object is returned, not a c_int. + # This behavior does *not* apply to subclasses of "simple types". + # If MyInt is a subclass of c_int, then accessing an element of an Array[MyInt] returns + # a MyInt, not an int. + # This special behavior is not easy to model in a stub, so for now all places where + # the array element type would belong are annotated with Any instead. + def __init__(self, *args: Any) -> None: ... + @overload + def __getitem__(self, __key: int) -> Any: ... + @overload + def __getitem__(self, __key: slice) -> list[Any]: ... + @overload + def __setitem__(self, __key: int, __value: Any) -> None: ... + @overload + def __setitem__(self, __key: slice, __value: Iterable[Any]) -> None: ... + def __iter__(self) -> Iterator[Any]: ... + # Can't inherit from Sized because the metaclass conflict between + # Sized and _CData prevents using _CDataMeta. + def __len__(self) -> int: ... + if sys.version_info >= (3, 9): + def __class_getitem__(cls, item: Any) -> GenericAlias: ... + +class ArgumentError(Exception): ... + +def addressof(obj: _CData) -> int: ... +def alignment(obj_or_type: _CData | type[_CData]) -> int: ... +def get_errno() -> int: ... +def resize(obj: _CData, size: int) -> None: ... +def set_errno(value: int) -> int: ... +def sizeof(obj_or_type: _CData | type[_CData]) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index d49610b25..6bc9c7ec8 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -108,6 +108,8 @@ class object: def __reduce_ex__(self, __protocol: SupportsIndex) -> str | tuple[Any, ...]: ... else: def __reduce_ex__(self, __protocol: int) -> str | tuple[Any, ...]: ... + if sys.version_info >= (3, 11): + def __getstate__(self) -> object: ... def __dir__(self) -> Iterable[str]: ... def __init_subclass__(cls) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/configparser.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/configparser.pyi index 92931a89b..6f9f78831 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/configparser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/configparser.pyi @@ -17,7 +17,6 @@ __all__ = [ "ParsingError", "MissingSectionHeaderError", "ConfigParser", - "SafeConfigParser", "RawConfigParser", "Interpolation", "BasicInterpolation", @@ -29,6 +28,9 @@ __all__ = [ "MAX_INTERPOLATION_DEPTH", ] +if sys.version_info < (3, 12): + __all__ += ["SafeConfigParser"] + _Section: TypeAlias = Mapping[str, str] _Parser: TypeAlias = MutableMapping[str, _Section] _ConverterCallback: TypeAlias = Callable[[str], Any] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ctypes/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ctypes/__init__.pyi index f4f1dae14..7a185a5b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ctypes/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ctypes/__init__.pyi @@ -1,17 +1,43 @@ import sys -from _ctypes import RTLD_GLOBAL as RTLD_GLOBAL, RTLD_LOCAL as RTLD_LOCAL -from _typeshed import ReadableBuffer, WriteableBuffer -from abc import abstractmethod -from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence -from typing import Any, ClassVar, Generic, TypeVar, overload -from typing_extensions import Self, TypeAlias +from _ctypes import ( + POINTER as POINTER, + RTLD_GLOBAL as RTLD_GLOBAL, + RTLD_LOCAL as RTLD_LOCAL, + ArgumentError as ArgumentError, + Array as Array, + CFuncPtr as _CFuncPtr, + Structure as Structure, + Union as Union, + _CanCastTo as _CanCastTo, + _CArgObject as _CArgObject, + _CData as _CData, + _CDataMeta as _CDataMeta, + _CField as _CField, + _Pointer as _Pointer, + _PointerLike as _PointerLike, + _SimpleCData as _SimpleCData, + _StructUnionBase as _StructUnionBase, + _StructUnionMeta as _StructUnionMeta, + addressof as addressof, + alignment as alignment, + byref as byref, + get_errno as get_errno, + pointer as pointer, + resize as resize, + set_errno as set_errno, + sizeof as sizeof, +) +from typing import Any, ClassVar, Generic, TypeVar +from typing_extensions import TypeAlias + +if sys.platform == "win32": + from _ctypes import FormatError as FormatError, get_last_error as get_last_error, set_last_error as set_last_error if sys.version_info >= (3, 9): from types import GenericAlias _T = TypeVar("_T") _DLLT = TypeVar("_DLLT", bound=CDLL) -_CT = TypeVar("_CT", bound=_CData) DEFAULT_MODE: int @@ -65,53 +91,11 @@ if sys.platform == "win32": pydll: LibraryLoader[PyDLL] pythonapi: PyDLL -class _CDataMeta(type): - # By default mypy complains about the following two methods, because strictly speaking cls - # might not be a Type[_CT]. However this can never actually happen, because the only class that - # uses _CDataMeta as its metaclass is _CData. So it's safe to ignore the errors here. - def __mul__(cls: type[_CT], other: int) -> type[Array[_CT]]: ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues] - def __rmul__(cls: type[_CT], other: int) -> type[Array[_CT]]: ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues] - -class _CData(metaclass=_CDataMeta): - _b_base_: int - _b_needsfree_: bool - _objects: Mapping[Any, int] | None - @classmethod - def from_buffer(cls, source: WriteableBuffer, offset: int = ...) -> Self: ... - @classmethod - def from_buffer_copy(cls, source: ReadableBuffer, offset: int = ...) -> Self: ... - @classmethod - def from_address(cls, address: int) -> Self: ... - @classmethod - def from_param(cls, obj: Any) -> Self | _CArgObject: ... - @classmethod - def in_dll(cls, library: CDLL, name: str) -> Self: ... - -class _CanCastTo(_CData): ... -class _PointerLike(_CanCastTo): ... - -_ECT: TypeAlias = Callable[[type[_CData] | None, _FuncPointer, tuple[_CData, ...]], _CData] -_PF: TypeAlias = tuple[int] | tuple[int, str] | tuple[int, str, Any] - -class _FuncPointer(_PointerLike, _CData): - restype: type[_CData] | Callable[[int], Any] | None - argtypes: Sequence[type[_CData]] - errcheck: _ECT - @overload - def __init__(self, address: int) -> None: ... - @overload - def __init__(self, callable: Callable[..., Any]) -> None: ... - @overload - def __init__(self, func_spec: tuple[str | int, CDLL], paramflags: tuple[_PF, ...] = ...) -> None: ... - @overload - def __init__(self, vtlb_index: int, name: str, paramflags: tuple[_PF, ...] = ..., iid: _Pointer[c_int] = ...) -> None: ... - def __call__(self, *args: Any, **kwargs: Any) -> Any: ... +class _FuncPointer(_CFuncPtr): ... class _NamedFuncPointer(_FuncPointer): __name__: str -class ArgumentError(Exception): ... - def CFUNCTYPE( restype: type[_CData] | None, *argtypes: type[_CData], use_errno: bool = ..., use_last_error: bool = ... ) -> type[_FuncPointer]: ... @@ -123,8 +107,6 @@ if sys.platform == "win32": def PYFUNCTYPE(restype: type[_CData] | None, *argtypes: type[_CData]) -> type[_FuncPointer]: ... -class _CArgObject: ... - # Any type that can be implicitly converted to c_void_p when passed as a C function argument. # (bytes is not included here, see below.) _CVoidPLike: TypeAlias = _PointerLike | Array[Any] | _CArgObject | int @@ -134,10 +116,6 @@ _CVoidPLike: TypeAlias = _PointerLike | Array[Any] | _CArgObject | int # when memmove(buf, b'foo', 4) was intended. _CVoidConstPLike: TypeAlias = _CVoidPLike | bytes -def addressof(obj: _CData) -> int: ... -def alignment(obj_or_type: _CData | type[_CData]) -> int: ... -def byref(obj: _CData, offset: int = ...) -> _CArgObject: ... - _CastT = TypeVar("_CastT", bound=_CanCastTo) def cast(obj: _CData | _CArgObject | int, typ: type[_CastT]) -> _CastT: ... @@ -150,39 +128,10 @@ def create_unicode_buffer(init: int | str, size: int | None = None) -> Array[c_w if sys.platform == "win32": def DllCanUnloadNow() -> int: ... def DllGetClassObject(rclsid: Any, riid: Any, ppv: Any) -> int: ... # TODO not documented - def FormatError(code: int = ...) -> str: ... def GetLastError() -> int: ... -def get_errno() -> int: ... - -if sys.platform == "win32": - def get_last_error() -> int: ... - def memmove(dst: _CVoidPLike, src: _CVoidConstPLike, count: int) -> int: ... def memset(dst: _CVoidPLike, c: int, count: int) -> int: ... -def POINTER(type: type[_CT]) -> type[_Pointer[_CT]]: ... - -class _Pointer(Generic[_CT], _PointerLike, _CData): - _type_: type[_CT] - contents: _CT - @overload - def __init__(self) -> None: ... - @overload - def __init__(self, arg: _CT) -> None: ... - @overload - def __getitem__(self, __key: int) -> Any: ... - @overload - def __getitem__(self, __key: slice) -> list[Any]: ... - def __setitem__(self, __key: int, __value: Any) -> None: ... - -def pointer(__arg: _CT) -> _Pointer[_CT]: ... -def resize(obj: _CData, size: int) -> None: ... -def set_errno(value: int) -> int: ... - -if sys.platform == "win32": - def set_last_error(value: int) -> int: ... - -def sizeof(obj_or_type: _CData | type[_CData]) -> int: ... def string_at(address: _CVoidConstPLike, size: int = -1) -> bytes: ... if sys.platform == "win32": @@ -190,12 +139,6 @@ if sys.platform == "win32": def wstring_at(address: _CVoidConstPLike, size: int = -1) -> str: ... -class _SimpleCData(Generic[_T], _CData): - value: _T - # The TypeVar can be unsolved here, - # but we can't use overloads without creating many, many mypy false-positive errors - def __init__(self, value: _T = ...) -> None: ... # pyright: ignore[reportInvalidTypeVarUse] - class c_byte(_SimpleCData[int]): ... class c_char(_SimpleCData[bytes]): @@ -239,68 +182,5 @@ if sys.platform == "win32": class HRESULT(_SimpleCData[int]): ... # TODO undocumented class py_object(_CanCastTo, _SimpleCData[_T]): ... - -class _CField: - offset: int - size: int - -class _StructUnionMeta(_CDataMeta): - _fields_: Sequence[tuple[str, type[_CData]] | tuple[str, type[_CData], int]] - _pack_: int - _anonymous_: Sequence[str] - def __getattr__(self, name: str) -> _CField: ... - -class _StructUnionBase(_CData, metaclass=_StructUnionMeta): - def __init__(self, *args: Any, **kw: Any) -> None: ... - def __getattr__(self, name: str) -> Any: ... - def __setattr__(self, name: str, value: Any) -> None: ... - -class Union(_StructUnionBase): ... -class Structure(_StructUnionBase): ... class BigEndianStructure(Structure): ... class LittleEndianStructure(Structure): ... - -class Array(Generic[_CT], _CData): - @property - @abstractmethod - def _length_(self) -> int: ... - @_length_.setter - def _length_(self, value: int) -> None: ... - @property - @abstractmethod - def _type_(self) -> type[_CT]: ... - @_type_.setter - def _type_(self, value: type[_CT]) -> None: ... - # Note: only available if _CT == c_char - @property - def raw(self) -> bytes: ... - @raw.setter - def raw(self, value: ReadableBuffer) -> None: ... - value: Any # Note: bytes if _CT == c_char, str if _CT == c_wchar, unavailable otherwise - # TODO These methods cannot be annotated correctly at the moment. - # All of these "Any"s stand for the array's element type, but it's not possible to use _CT - # here, because of a special feature of ctypes. - # By default, when accessing an element of an Array[_CT], the returned object has type _CT. - # However, when _CT is a "simple type" like c_int, ctypes automatically "unboxes" the object - # and converts it to the corresponding Python primitive. For example, when accessing an element - # of an Array[c_int], a Python int object is returned, not a c_int. - # This behavior does *not* apply to subclasses of "simple types". - # If MyInt is a subclass of c_int, then accessing an element of an Array[MyInt] returns - # a MyInt, not an int. - # This special behavior is not easy to model in a stub, so for now all places where - # the array element type would belong are annotated with Any instead. - def __init__(self, *args: Any) -> None: ... - @overload - def __getitem__(self, __key: int) -> Any: ... - @overload - def __getitem__(self, __key: slice) -> list[Any]: ... - @overload - def __setitem__(self, __key: int, __value: Any) -> None: ... - @overload - def __setitem__(self, __key: slice, __value: Iterable[Any]) -> None: ... - def __iter__(self) -> Iterator[Any]: ... - # Can't inherit from Sized because the metaclass conflict between - # Sized and _CData prevents using _CDataMeta. - def __len__(self) -> int: ... - if sys.version_info >= (3, 9): - def __class_getitem__(cls, item: Any) -> GenericAlias: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi index 5a39c456b..383c336ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi @@ -208,13 +208,6 @@ def unique(enumeration: _EnumerationT) -> _EnumerationT: ... _auto_null: Any -# subclassing IntFlag so it picks up all implemented base functions, best modeling behavior of enum.auto() -class auto(IntFlag): - _value_: Any - @_magic_enum_attr - def value(self) -> Any: ... - def __new__(cls) -> Self: ... - class Flag(Enum): _name_: str | None # type: ignore[assignment] _value_: int @@ -235,27 +228,6 @@ class Flag(Enum): __rand__ = __and__ __rxor__ = __xor__ -if sys.version_info >= (3, 11): - # The body of the class is the same, but the base classes are different. - class IntFlag(int, ReprEnum, Flag, boundary=KEEP): # type: ignore[misc] # complaints about incompatible bases - def __new__(cls, value: int) -> Self: ... - def __or__(self, other: int) -> Self: ... - def __and__(self, other: int) -> Self: ... - def __xor__(self, other: int) -> Self: ... - __ror__ = __or__ - __rand__ = __and__ - __rxor__ = __xor__ - -else: - class IntFlag(int, Flag): # type: ignore[misc] # complaints about incompatible bases - def __new__(cls, value: int) -> Self: ... - def __or__(self, other: int) -> Self: ... - def __and__(self, other: int) -> Self: ... - def __xor__(self, other: int) -> Self: ... - __ror__ = __or__ - __rand__ = __and__ - __rxor__ = __xor__ - if sys.version_info >= (3, 11): class StrEnum(str, ReprEnum): def __new__(cls, value: str) -> Self: ... @@ -289,3 +261,31 @@ if sys.version_info >= (3, 11): def global_enum(cls: _EnumerationT, update_str: bool = False) -> _EnumerationT: ... def global_enum_repr(self: Enum) -> str: ... def global_flag_repr(self: Flag) -> str: ... + +if sys.version_info >= (3, 11): + # The body of the class is the same, but the base classes are different. + class IntFlag(int, ReprEnum, Flag, boundary=KEEP): # type: ignore[misc] # complaints about incompatible bases + def __new__(cls, value: int) -> Self: ... + def __or__(self, other: int) -> Self: ... + def __and__(self, other: int) -> Self: ... + def __xor__(self, other: int) -> Self: ... + __ror__ = __or__ + __rand__ = __and__ + __rxor__ = __xor__ + +else: + class IntFlag(int, Flag): # type: ignore[misc] # complaints about incompatible bases + def __new__(cls, value: int) -> Self: ... + def __or__(self, other: int) -> Self: ... + def __and__(self, other: int) -> Self: ... + def __xor__(self, other: int) -> Self: ... + __ror__ = __or__ + __rand__ = __and__ + __rxor__ = __xor__ + +# subclassing IntFlag so it picks up all implemented base functions, best modeling behavior of enum.auto() +class auto(IntFlag): + _value_: Any + @_magic_enum_attr + def value(self) -> Any: ... + def __new__(cls) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/itertools.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/itertools.pyi index c7b92c3ae..4b5d624c7 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/itertools.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/itertools.pyi @@ -272,7 +272,7 @@ if sys.version_info >= (3, 10): def __next__(self) -> _T_co: ... if sys.version_info >= (3, 12): - class batched(Iterator[_T_co], Generic[_T_co]): + class batched(Iterator[tuple[_T_co, ...]], Generic[_T_co]): def __new__(cls, iterable: Iterable[_T_co], n: int) -> Self: ... def __iter__(self) -> Self: ... def __next__(self) -> tuple[_T_co, ...]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/btm_matcher.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/btm_matcher.pyi new file mode 100644 index 000000000..4c87b664e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/btm_matcher.pyi @@ -0,0 +1,28 @@ +from _typeshed import Incomplete, SupportsGetItem +from collections import defaultdict +from collections.abc import Iterable + +from .fixer_base import BaseFix +from .pytree import Leaf, Node + +class BMNode: + count: Incomplete + transition_table: Incomplete + fixers: Incomplete + id: Incomplete + content: str + def __init__(self) -> None: ... + +class BottomMatcher: + match: Incomplete + root: Incomplete + nodes: Incomplete + fixers: Incomplete + logger: Incomplete + def __init__(self) -> None: ... + def add_fixer(self, fixer: BaseFix) -> None: ... + def add(self, pattern: SupportsGetItem[int | slice, Incomplete] | None, start: BMNode) -> list[BMNode]: ... + def run(self, leaves: Iterable[Leaf]) -> defaultdict[BaseFix, list[Node | Leaf]]: ... + def print_ac(self) -> None: ... + +def type_repr(type_num: int) -> str | int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixer_base.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixer_base.pyi new file mode 100644 index 000000000..eef386f70 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixer_base.pyi @@ -0,0 +1,43 @@ +from _typeshed import Incomplete, StrPath +from abc import ABCMeta, abstractmethod +from collections.abc import MutableMapping +from typing import ClassVar, TypeVar +from typing_extensions import Literal + +from .pytree import Base, Leaf, Node + +_N = TypeVar("_N", bound=Base) + +class BaseFix: + PATTERN: ClassVar[str | None] + pattern: Incomplete | None + pattern_tree: Incomplete | None + options: Incomplete | None + filename: Incomplete | None + numbers: Incomplete + used_names: Incomplete + order: ClassVar[Literal["post", "pre"]] + explicit: ClassVar[bool] + run_order: ClassVar[int] + keep_line_order: ClassVar[bool] + BM_compatible: ClassVar[bool] + syms: Incomplete + log: Incomplete + def __init__(self, options: MutableMapping[str, Incomplete], log: list[str]) -> None: ... + def compile_pattern(self) -> None: ... + def set_filename(self, filename: StrPath) -> None: ... + def match(self, node: _N) -> Literal[False] | dict[str, _N]: ... + @abstractmethod + def transform(self, node: Base, results: dict[str, Base]) -> Node | Leaf | None: ... + def new_name(self, template: str = "xxx_todo_changeme") -> str: ... + first_log: bool + def log_message(self, message: str) -> None: ... + def cannot_convert(self, node: Base, reason: str | None = None) -> None: ... + def warning(self, node: Base, reason: str) -> None: ... + def start_tree(self, tree: Node, filename: StrPath) -> None: ... + def finish_tree(self, tree: Node, filename: StrPath) -> None: ... + +class ConditionalFix(BaseFix, metaclass=ABCMeta): + skip_on: ClassVar[str | None] + def start_tree(self, __tree: Node, __filename: StrPath) -> None: ... + def should_skip(self, node: Base) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_apply.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_apply.pyi new file mode 100644 index 000000000..7c5451c15 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_apply.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixApply(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_asserts.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_asserts.pyi new file mode 100644 index 000000000..bf73009e9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_asserts.pyi @@ -0,0 +1,11 @@ +from typing import ClassVar +from typing_extensions import Literal + +from ..fixer_base import BaseFix + +NAMES: dict[str, str] + +class FixAsserts(BaseFix): + BM_compatible: ClassVar[Literal[False]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_basestring.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_basestring.pyi new file mode 100644 index 000000000..84a354d32 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_basestring.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixBasestring(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[Literal["'basestring'"]] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_buffer.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_buffer.pyi new file mode 100644 index 000000000..857c1e224 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_buffer.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixBuffer(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_dict.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_dict.pyi new file mode 100644 index 000000000..2e6691119 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_dict.pyi @@ -0,0 +1,17 @@ +from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +iter_exempt: set[str] + +class FixDict(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... + P1: ClassVar[str] + p1: ClassVar[Incomplete] + P2: ClassVar[str] + p2: ClassVar[Incomplete] + def in_special_context(self, node, isiter): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_except.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_except.pyi new file mode 100644 index 000000000..b87aacd34 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_except.pyi @@ -0,0 +1,15 @@ +from collections.abc import Generator, Iterable +from typing import ClassVar, TypeVar +from typing_extensions import Literal + +from .. import fixer_base +from ..pytree import Base + +_N = TypeVar("_N", bound=Base) + +def find_excepts(nodes: Iterable[_N]) -> Generator[tuple[_N, _N], None, None]: ... + +class FixExcept(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_exec.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_exec.pyi new file mode 100644 index 000000000..306937eb9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_exec.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixExec(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_execfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_execfile.pyi new file mode 100644 index 000000000..fb245e5a1 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_execfile.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixExecfile(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_exitfunc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_exitfunc.pyi new file mode 100644 index 000000000..10341d798 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_exitfunc.pyi @@ -0,0 +1,14 @@ +from _typeshed import Incomplete, StrPath +from lib2to3 import fixer_base +from typing import ClassVar +from typing_extensions import Literal + +from ..pytree import Node + +class FixExitfunc(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def __init__(self, *args) -> None: ... + sys_import: Incomplete | None + def start_tree(self, tree: Node, filename: StrPath) -> None: ... + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_filter.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_filter.pyi new file mode 100644 index 000000000..3998a1dd0 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_filter.pyi @@ -0,0 +1,10 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixFilter(fixer_base.ConditionalFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + skip_on: ClassVar[Literal["future_builtins.filter"]] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_funcattrs.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_funcattrs.pyi new file mode 100644 index 000000000..59919446f --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_funcattrs.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixFuncattrs(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_future.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_future.pyi new file mode 100644 index 000000000..8eb5ca35d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_future.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixFuture(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_getcwdu.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_getcwdu.pyi new file mode 100644 index 000000000..d18a38f69 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_getcwdu.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixGetcwdu(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_has_key.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_has_key.pyi new file mode 100644 index 000000000..1e6b58dd3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_has_key.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixHasKey(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_idioms.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_idioms.pyi new file mode 100644 index 000000000..8f02252f7 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_idioms.pyi @@ -0,0 +1,16 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +CMP: str +TYPE: str + +class FixIdioms(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[False]] + PATTERN: ClassVar[str] + def match(self, node): ... + def transform(self, node, results): ... + def transform_isinstance(self, node, results): ... + def transform_while(self, node, results) -> None: ... + def transform_sort(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_import.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_import.pyi new file mode 100644 index 000000000..436e7f191 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_import.pyi @@ -0,0 +1,17 @@ +from _typeshed import StrPath +from collections.abc import Generator +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base +from ..pytree import Node + +def traverse_imports(names) -> Generator[str, None, None]: ... + +class FixImport(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + skip: bool + def start_tree(self, tree: Node, name: StrPath) -> None: ... + def transform(self, node, results): ... + def probably_a_local_import(self, imp_name): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_imports.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_imports.pyi new file mode 100644 index 000000000..277a172d3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_imports.pyi @@ -0,0 +1,22 @@ +from _typeshed import StrPath +from collections.abc import Generator +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base +from ..pytree import Node + +MAPPING: dict[str, str] + +def alternates(members): ... +def build_pattern(mapping=...) -> Generator[str, None, None]: ... + +class FixImports(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + mapping = MAPPING + def build_pattern(self): ... + def compile_pattern(self) -> None: ... + def match(self, node): ... + replace: dict[str, str] + def start_tree(self, tree: Node, filename: StrPath) -> None: ... + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_imports2.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_imports2.pyi new file mode 100644 index 000000000..8d5543308 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_imports2.pyi @@ -0,0 +1,6 @@ +from . import fix_imports + +MAPPING: dict[str, str] + +class FixImports2(fix_imports.FixImports): + mapping = MAPPING diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_input.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_input.pyi new file mode 100644 index 000000000..df52f8d77 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_input.pyi @@ -0,0 +1,12 @@ +from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +context: Incomplete + +class FixInput(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_intern.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_intern.pyi new file mode 100644 index 000000000..f4e71b6da --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_intern.pyi @@ -0,0 +1,10 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixIntern(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + order: ClassVar[Literal["pre"]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_isinstance.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_isinstance.pyi new file mode 100644 index 000000000..e776ea043 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_isinstance.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixIsinstance(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_itertools.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_itertools.pyi new file mode 100644 index 000000000..a19f7b5e8 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_itertools.pyi @@ -0,0 +1,10 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixItertools(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + it_funcs: str + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_itertools_imports.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_itertools_imports.pyi new file mode 100644 index 000000000..1ea0b506a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_itertools_imports.pyi @@ -0,0 +1,8 @@ +from lib2to3 import fixer_base +from typing import ClassVar +from typing_extensions import Literal + +class FixItertoolsImports(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_long.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_long.pyi new file mode 100644 index 000000000..c47f4528d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_long.pyi @@ -0,0 +1,8 @@ +from lib2to3 import fixer_base +from typing import ClassVar +from typing_extensions import Literal + +class FixLong(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[Literal["'long'"]] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_map.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_map.pyi new file mode 100644 index 000000000..66e311cba --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_map.pyi @@ -0,0 +1,10 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixMap(fixer_base.ConditionalFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + skip_on: ClassVar[Literal["future_builtins.map"]] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_metaclass.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_metaclass.pyi new file mode 100644 index 000000000..44626b470 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_metaclass.pyi @@ -0,0 +1,18 @@ +from collections.abc import Generator +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base +from ..pytree import Base + +def has_metaclass(parent): ... +def fixup_parse_tree(cls_node) -> None: ... +def fixup_simple_stmt(parent, i, stmt_node) -> None: ... +def remove_trailing_newline(node) -> None: ... +def find_metas(cls_node) -> Generator[tuple[Base, int, Base], None, None]: ... +def fixup_indent(suite) -> None: ... + +class FixMetaclass(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_methodattrs.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_methodattrs.pyi new file mode 100644 index 000000000..9bda7992d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_methodattrs.pyi @@ -0,0 +1,11 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +MAP: dict[str, str] + +class FixMethodattrs(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_ne.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_ne.pyi new file mode 100644 index 000000000..95dfacccf --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_ne.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixNe(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[False]] + def match(self, node): ... + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_next.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_next.pyi new file mode 100644 index 000000000..a5757d650 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_next.pyi @@ -0,0 +1,20 @@ +from _typeshed import StrPath +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base +from ..pytree import Node + +bind_warning: str + +class FixNext(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + order: ClassVar[Literal["pre"]] + shadowed_next: bool + def start_tree(self, tree: Node, filename: StrPath) -> None: ... + def transform(self, node, results) -> None: ... + +def is_assign_target(node): ... +def find_assign(node): ... +def is_subtree(root, node): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_nonzero.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_nonzero.pyi new file mode 100644 index 000000000..adf268fdb --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_nonzero.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixNonzero(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_numliterals.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_numliterals.pyi new file mode 100644 index 000000000..6842e42e4 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_numliterals.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixNumliterals(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[False]] + def match(self, node): ... + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_operator.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_operator.pyi new file mode 100644 index 000000000..6da150a51 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_operator.pyi @@ -0,0 +1,13 @@ +from lib2to3 import fixer_base +from typing import ClassVar +from typing_extensions import Literal + +def invocation(s): ... + +class FixOperator(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + order: ClassVar[Literal["pre"]] + methods: str + obj: str + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_paren.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_paren.pyi new file mode 100644 index 000000000..c730cdc5d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_paren.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixParen(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_print.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_print.pyi new file mode 100644 index 000000000..2261c9489 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_print.pyi @@ -0,0 +1,13 @@ +from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +parend_expr: Incomplete + +class FixPrint(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... + def add_kwarg(self, l_nodes, s_kwd, n_expr) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_raise.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_raise.pyi new file mode 100644 index 000000000..756a05ea3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_raise.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixRaise(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_raw_input.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_raw_input.pyi new file mode 100644 index 000000000..61d6ad767 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_raw_input.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixRawInput(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_reduce.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_reduce.pyi new file mode 100644 index 000000000..4ea07fdde --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_reduce.pyi @@ -0,0 +1,9 @@ +from lib2to3 import fixer_base +from typing import ClassVar +from typing_extensions import Literal + +class FixReduce(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + order: ClassVar[Literal["pre"]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_reload.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_reload.pyi new file mode 100644 index 000000000..8045ac507 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_reload.pyi @@ -0,0 +1,10 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixReload(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + order: ClassVar[Literal["pre"]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_renames.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_renames.pyi new file mode 100644 index 000000000..2ceca053e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_renames.pyi @@ -0,0 +1,18 @@ +from collections.abc import Generator +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +MAPPING: dict[str, dict[str, str]] +LOOKUP: dict[tuple[str, str], str] + +def alternates(members): ... +def build_pattern() -> Generator[str, None, None]: ... + +class FixRenames(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + order: ClassVar[Literal["pre"]] + PATTERN: ClassVar[str] + def match(self, node): ... + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_repr.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_repr.pyi new file mode 100644 index 000000000..6f3305846 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_repr.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixRepr(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_set_literal.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_set_literal.pyi new file mode 100644 index 000000000..dd18413d6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_set_literal.pyi @@ -0,0 +1,8 @@ +from lib2to3 import fixer_base +from typing import ClassVar +from typing_extensions import Literal + +class FixSetLiteral(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_standarderror.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_standarderror.pyi new file mode 100644 index 000000000..fd23af5a7 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_standarderror.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixStandarderror(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_sys_exc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_sys_exc.pyi new file mode 100644 index 000000000..3dbcd38c4 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_sys_exc.pyi @@ -0,0 +1,10 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixSysExc(fixer_base.BaseFix): + exc_info: ClassVar[list[str]] + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_throw.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_throw.pyi new file mode 100644 index 000000000..50e37d44a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_throw.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixThrow(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_tuple_params.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_tuple_params.pyi new file mode 100644 index 000000000..48eadf753 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_tuple_params.pyi @@ -0,0 +1,18 @@ +from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +def is_docstring(stmt): ... + +class FixTupleParams(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... + def transform_lambda(self, node, results) -> None: ... + +def simplify_args(node): ... +def find_params(node): ... +def map_to_index(param_list, prefix=..., d: Incomplete | None = ...): ... +def tuple_name(param_list): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_types.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_types.pyi new file mode 100644 index 000000000..6ac1344b1 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_types.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixTypes(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_unicode.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_unicode.pyi new file mode 100644 index 000000000..af63d1865 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_unicode.pyi @@ -0,0 +1,13 @@ +from _typeshed import StrPath +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base +from ..pytree import Node + +class FixUnicode(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[Literal["STRING | 'unicode' | 'unichr'"]] # type: ignore[name-defined] # Name "STRING" is not defined + unicode_literals: bool + def start_tree(self, tree: Node, filename: StrPath) -> None: ... + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_urllib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_urllib.pyi new file mode 100644 index 000000000..a37e63b31 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_urllib.pyi @@ -0,0 +1,15 @@ +from collections.abc import Generator +from typing_extensions import Literal + +from .fix_imports import FixImports + +MAPPING: dict[str, list[tuple[Literal["urllib.request", "urllib.parse", "urllib.error"], list[str]]]] + +def build_pattern() -> Generator[str, None, None]: ... + +class FixUrllib(FixImports): + def build_pattern(self): ... + def transform_import(self, node, results) -> None: ... + def transform_member(self, node, results): ... + def transform_dot(self, node, results) -> None: ... + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_ws_comma.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_ws_comma.pyi new file mode 100644 index 000000000..6231d90c6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_ws_comma.pyi @@ -0,0 +1,13 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base +from ..pytree import Leaf + +class FixWsComma(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[False]] + PATTERN: ClassVar[str] + COMMA: Leaf + COLON: Leaf + SEPS: tuple[Leaf, Leaf] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_xrange.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_xrange.pyi new file mode 100644 index 000000000..89d300ef0 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_xrange.pyi @@ -0,0 +1,21 @@ +from _typeshed import Incomplete, StrPath +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base +from ..pytree import Node + +class FixXrange(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + transformed_xranges: set[Incomplete] | None + def start_tree(self, tree: Node, filename: StrPath) -> None: ... + def finish_tree(self, tree: Node, filename: StrPath) -> None: ... + def transform(self, node, results): ... + def transform_xrange(self, node, results) -> None: ... + def transform_range(self, node, results): ... + P1: ClassVar[str] + p1: ClassVar[Incomplete] + P2: ClassVar[str] + p2: ClassVar[Incomplete] + def in_special_context(self, node): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_xreadlines.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_xreadlines.pyi new file mode 100644 index 000000000..39757155e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_xreadlines.pyi @@ -0,0 +1,9 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixXreadlines(fixer_base.BaseFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + def transform(self, node, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_zip.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_zip.pyi new file mode 100644 index 000000000..0c70717aa --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/fixes/fix_zip.pyi @@ -0,0 +1,10 @@ +from typing import ClassVar +from typing_extensions import Literal + +from .. import fixer_base + +class FixZip(fixer_base.ConditionalFix): + BM_compatible: ClassVar[Literal[True]] + PATTERN: ClassVar[str] + skip_on: ClassVar[Literal["future_builtins.zip"]] + def transform(self, node, results): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/main.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/main.pyi new file mode 100644 index 000000000..cfcaeeaf6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/main.pyi @@ -0,0 +1,43 @@ +from _typeshed import FileDescriptorOrPath +from collections.abc import Container, Iterable, Iterator, Mapping, Sequence +from logging import _ExcInfoType +from typing import AnyStr +from typing_extensions import Literal + +from . import refactor as refactor + +def diff_texts(a: str, b: str, filename: str) -> Iterator[str]: ... + +class StdoutRefactoringTool(refactor.MultiprocessRefactoringTool): + nobackups: bool + show_diffs: bool + def __init__( + self, + fixers: Iterable[str], + options: Mapping[str, object] | None, + explicit: Container[str] | None, + nobackups: bool, + show_diffs: bool, + input_base_dir: str = "", + output_dir: str = "", + append_suffix: str = "", + ) -> None: ... + # Same as super.log_error and Logger.error + def log_error( # type: ignore[override] + self, + msg: str, + *args: Iterable[str], + exc_info: _ExcInfoType = None, + stack_info: bool = False, + stacklevel: int = 1, + extra: Mapping[str, object] | None = None, + ) -> None: ... + # Same as super.write_file but without default values + def write_file( # type: ignore[override] + self, new_text: str, filename: FileDescriptorOrPath, old_text: str, encoding: str | None + ) -> None: ... + # filename has to be str + def print_output(self, old: str, new: str, filename: str, equal: bool) -> None: ... # type: ignore[override] + +def warn(msg: object) -> None: ... +def main(fixer_pkg: str, args: Sequence[AnyStr] | None = None) -> Literal[0, 1, 2]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/__init__.pyi index acc1cc429..de8a874f4 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/__init__.pyi @@ -1,8 +1,9 @@ from collections.abc import Callable -from lib2to3.pgen2.grammar import Grammar -from lib2to3.pytree import _RawNode from typing import Any from typing_extensions import TypeAlias +from ..pytree import _RawNode +from .grammar import Grammar + # This is imported in several lib2to3/pgen2 submodules _Convert: TypeAlias = Callable[[Grammar, _RawNode], Any] # noqa: Y047 diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/driver.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/driver.pyi index 9f6e4d677..dea13fb9d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/driver.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/driver.pyi @@ -1,10 +1,11 @@ from _typeshed import StrPath from collections.abc import Iterable -from lib2to3.pgen2 import _Convert -from lib2to3.pgen2.grammar import Grammar -from lib2to3.pytree import _NL from logging import Logger -from typing import IO, Any +from typing import IO + +from ..pytree import _NL +from . import _Convert +from .grammar import Grammar __all__ = ["Driver", "load_grammar"] @@ -13,7 +14,9 @@ class Driver: logger: Logger convert: _Convert def __init__(self, grammar: Grammar, convert: _Convert | None = None, logger: Logger | None = None) -> None: ... - def parse_tokens(self, tokens: Iterable[Any], debug: bool = False) -> _NL: ... + def parse_tokens( + self, tokens: Iterable[tuple[int, str, tuple[int, int], tuple[int, int], str]], debug: bool = False + ) -> _NL: ... def parse_stream_raw(self, stream: IO[str], debug: bool = False) -> _NL: ... def parse_stream(self, stream: IO[str], debug: bool = False) -> _NL: ... def parse_file(self, filename: StrPath, encoding: str | None = None, debug: bool = False) -> _NL: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/parse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/parse.pyi index 51eb671f4..320c5f018 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/parse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/parse.pyi @@ -1,11 +1,12 @@ +from _typeshed import Incomplete from collections.abc import Sequence -from lib2to3.pgen2 import _Convert -from lib2to3.pgen2.grammar import _DFAS, Grammar -from lib2to3.pytree import _NL, _RawNode -from typing import Any from typing_extensions import TypeAlias -_Context: TypeAlias = Sequence[Any] +from ..pytree import _NL, _RawNode +from . import _Convert +from .grammar import _DFAS, Grammar + +_Context: TypeAlias = Sequence[Incomplete] class ParseError(Exception): msg: str diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/pgen.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/pgen.pyi index d346739d4..6d9f776c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/pgen.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/pgen.pyi @@ -1,8 +1,9 @@ -from _typeshed import StrPath +from _typeshed import Incomplete, StrPath from collections.abc import Iterable, Iterator -from lib2to3.pgen2 import grammar -from lib2to3.pgen2.tokenize import _TokenInfo -from typing import IO, Any, NoReturn +from typing import IO, NoReturn, overload + +from . import grammar +from .tokenize import _TokenInfo class PgenGrammar(grammar.Grammar): ... @@ -26,19 +27,22 @@ class ParserGenerator: def parse_alt(self) -> tuple[NFAState, NFAState]: ... def parse_item(self) -> tuple[NFAState, NFAState]: ... def parse_atom(self) -> tuple[NFAState, NFAState]: ... - def expect(self, type: int, value: Any | None = None) -> str: ... + def expect(self, type: int, value: str | None = None) -> str: ... def gettoken(self) -> None: ... - def raise_error(self, msg: str, *args: Any) -> NoReturn: ... + @overload + def raise_error(self, msg: object) -> NoReturn: ... + @overload + def raise_error(self, msg: str, *args: object) -> NoReturn: ... class NFAState: arcs: list[tuple[str | None, NFAState]] def addarc(self, next: NFAState, label: str | None = None) -> None: ... class DFAState: - nfaset: dict[NFAState, Any] + nfaset: dict[NFAState, Incomplete] isfinal: bool arcs: dict[str, DFAState] - def __init__(self, nfaset: dict[NFAState, Any], final: NFAState) -> None: ... + def __init__(self, nfaset: dict[NFAState, Incomplete], final: NFAState) -> None: ... def addarc(self, next: DFAState, label: str) -> None: ... def unifystate(self, old: DFAState, new: DFAState) -> None: ... def __eq__(self, other: DFAState) -> bool: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/tokenize.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/tokenize.pyi index 2a9c3fbba..af54de1b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/tokenize.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pgen2/tokenize.pyi @@ -1,7 +1,8 @@ from collections.abc import Callable, Iterable, Iterator -from lib2to3.pgen2.token import * from typing_extensions import TypeAlias +from .token import * + __all__ = [ "AMPER", "AMPEREQUAL", diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pygram.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pygram.pyi index 00fdbd1a1..2d1e90e79 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pygram.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pygram.pyi @@ -1,5 +1,6 @@ import sys -from lib2to3.pgen2.grammar import Grammar + +from .pgen2.grammar import Grammar class Symbols: def __init__(self, grammar: Grammar) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pytree.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pytree.pyi index 8b44d4352..d14446f38 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pytree.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/pytree.pyi @@ -1,16 +1,19 @@ -from collections.abc import Iterator -from lib2to3.pgen2.grammar import Grammar -from typing import Any -from typing_extensions import Self, TypeAlias +from _typeshed import Incomplete, SupportsGetItem, SupportsLenAndGetItem, Unused +from abc import abstractmethod +from collections.abc import Iterable, Iterator, MutableSequence +from typing_extensions import Final, Self, TypeAlias + +from .fixer_base import BaseFix +from .pgen2.grammar import Grammar _NL: TypeAlias = Node | Leaf _Context: TypeAlias = tuple[str, int, int] _Results: TypeAlias = dict[str, _NL] _RawNode: TypeAlias = tuple[int, str, _Context, list[_NL] | None] -HUGE: int +HUGE: Final = 0x7FFFFFFF -def type_repr(type_num: int) -> str: ... +def type_repr(type_num: int) -> str | int: ... class Base: type: int @@ -20,10 +23,14 @@ class Base: was_changed: bool was_checked: bool def __eq__(self, other: object) -> bool: ... - def _eq(self, other: Self) -> bool: ... + @abstractmethod + def _eq(self, other: Base) -> bool: ... + @abstractmethod def clone(self) -> Self: ... - def post_order(self) -> Iterator[_NL]: ... - def pre_order(self) -> Iterator[_NL]: ... + @abstractmethod + def post_order(self) -> Iterator[Self]: ... + @abstractmethod + def pre_order(self) -> Iterator[Self]: ... def replace(self, new: _NL | list[_NL]) -> None: ... def get_lineno(self) -> int: ... def changed(self) -> None: ... @@ -37,15 +44,23 @@ class Base: def get_suffix(self) -> str: ... class Node(Base): - fixers_applied: list[Any] + fixers_applied: MutableSequence[BaseFix] | None + # Is Unbound until set in refactor.RefactoringTool + future_features: frozenset[Incomplete] + # Is Unbound until set in pgen2.parse.Parser.pop + used_names: set[str] def __init__( self, type: int, - children: list[_NL], - context: Any | None = None, + children: Iterable[_NL], + context: Unused = None, prefix: str | None = None, - fixers_applied: list[Any] | None = None, + fixers_applied: MutableSequence[BaseFix] | None = None, ) -> None: ... + def _eq(self, other: Base) -> bool: ... + def clone(self) -> Node: ... + def post_order(self) -> Iterator[Self]: ... + def pre_order(self) -> Iterator[Self]: ... def set_child(self, i: int, child: _NL) -> None: ... def insert_child(self, i: int, child: _NL) -> None: ... def append_child(self, child: _NL) -> None: ... @@ -55,10 +70,19 @@ class Leaf(Base): lineno: int column: int value: str - fixers_applied: list[Any] + fixers_applied: MutableSequence[BaseFix] def __init__( - self, type: int, value: str, context: _Context | None = None, prefix: str | None = None, fixers_applied: list[Any] = [] + self, + type: int, + value: str, + context: _Context | None = None, + prefix: str | None = None, + fixers_applied: MutableSequence[BaseFix] = [], ) -> None: ... + def _eq(self, other: Base) -> bool: ... + def clone(self) -> Leaf: ... + def post_order(self) -> Iterator[Self]: ... + def pre_order(self) -> Iterator[Self]: ... def __unicode__(self) -> str: ... def convert(gr: Grammar, raw_node: _RawNode) -> _NL: ... @@ -69,8 +93,8 @@ class BasePattern: name: str | None def optimize(self) -> BasePattern: ... # sic, subclasses are free to optimize themselves into different patterns def match(self, node: _NL, results: _Results | None = None) -> bool: ... - def match_seq(self, nodes: list[_NL], results: _Results | None = None) -> bool: ... - def generate_matches(self, nodes: list[_NL]) -> Iterator[tuple[int, _Results]]: ... + def match_seq(self, nodes: SupportsLenAndGetItem[_NL], results: _Results | None = None) -> bool: ... + def generate_matches(self, nodes: SupportsGetItem[int, _NL]) -> Iterator[tuple[int, _Results]]: ... class LeafPattern(BasePattern): def __init__(self, type: int | None = None, content: str | None = None, name: str | None = None) -> None: ... @@ -87,4 +111,6 @@ class WildcardPattern(BasePattern): class NegatedPattern(BasePattern): def __init__(self, content: str | None = None) -> None: ... -def generate_matches(patterns: list[BasePattern], nodes: list[_NL]) -> Iterator[tuple[int, _Results]]: ... +def generate_matches( + patterns: SupportsGetItem[int | slice, BasePattern] | None, nodes: SupportsGetItem[int | slice, _NL] +) -> Iterator[tuple[int, _Results]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/refactor.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/refactor.pyi index f1d89679a..d750d9c4a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/refactor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/lib2to3/refactor.pyi @@ -1,12 +1,16 @@ +from _typeshed import FileDescriptorOrPath, StrPath, SupportsGetItem from collections.abc import Container, Generator, Iterable, Mapping -from logging import Logger -from typing import Any, ClassVar, NoReturn -from typing_extensions import TypeAlias +from logging import Logger, _ExcInfoType +from multiprocessing import JoinableQueue +from multiprocessing.synchronize import Lock +from typing import Any, ClassVar, NoReturn, overload +from typing_extensions import Final +from .btm_matcher import BottomMatcher +from .fixer_base import BaseFix +from .pgen2.driver import Driver from .pgen2.grammar import Grammar - -_Driver: TypeAlias = Any # really lib2to3.driver.Driver -_BottomMatcher: TypeAlias = Any # really lib2to3.btm_matcher.BottomMatcher +from .pytree import Node def get_all_fix_names(fixer_pkg: str, remove_prefix: bool = True) -> list[str]: ... def get_fixers_from_package(pkg_name: str) -> list[str]: ... @@ -21,53 +25,59 @@ class RefactoringTool: options: dict[str, Any] grammar: Grammar write_unchanged_files: bool - errors: list[Any] + errors: list[tuple[str, Iterable[str], dict[str, _ExcInfoType]]] logger: Logger - fixer_log: list[Any] + fixer_log: list[str] wrote: bool - driver: _Driver - pre_order: Any - post_order: Any - files: list[Any] - BM: _BottomMatcher - bmi_pre_order: list[Any] - bmi_post_order: list[Any] + driver: Driver + pre_order: list[BaseFix] + post_order: list[BaseFix] + files: list[StrPath] + BM: BottomMatcher + bmi_pre_order: list[BaseFix] + bmi_post_order: list[BaseFix] def __init__( - self, fixer_names: Iterable[str], options: Mapping[str, Any] | None = None, explicit: Container[str] | None = None + self, fixer_names: Iterable[str], options: Mapping[str, object] | None = None, explicit: Container[str] | None = None ) -> None: ... - def get_fixers(self) -> tuple[list[Any], list[Any]]: ... - def log_error(self, msg: str, *args: Any, **kwds: Any) -> NoReturn: ... - def log_message(self, msg: str, *args: Any) -> None: ... - def log_debug(self, msg: str, *args: Any) -> None: ... - def print_output(self, old_text: str, new_text: str, filename: str, equal): ... + def get_fixers(self) -> tuple[list[BaseFix], list[BaseFix]]: ... + def log_error(self, msg: str, *args: Iterable[str], **kwargs: _ExcInfoType) -> NoReturn: ... + @overload + def log_message(self, msg: object) -> None: ... + @overload + def log_message(self, msg: str, *args: object) -> None: ... + @overload + def log_debug(self, msg: object) -> None: ... + @overload + def log_debug(self, msg: str, *args: object) -> None: ... + def print_output(self, old_text: str, new_text: str, filename: StrPath, equal: bool) -> None: ... def refactor(self, items: Iterable[str], write: bool = False, doctests_only: bool = False) -> None: ... def refactor_dir(self, dir_name: str, write: bool = False, doctests_only: bool = False) -> None: ... - def _read_python_source(self, filename: str) -> tuple[str, str]: ... - def refactor_file(self, filename: str, write: bool = False, doctests_only: bool = False) -> None: ... - def refactor_string(self, data: str, name: str): ... + def _read_python_source(self, filename: FileDescriptorOrPath) -> tuple[str, str]: ... + def refactor_file(self, filename: StrPath, write: bool = False, doctests_only: bool = False) -> None: ... + def refactor_string(self, data: str, name: str) -> Node | None: ... def refactor_stdin(self, doctests_only: bool = False) -> None: ... - def refactor_tree(self, tree, name: str) -> bool: ... - def traverse_by(self, fixers, traversal) -> None: ... + def refactor_tree(self, tree: Node, name: str) -> bool: ... + def traverse_by(self, fixers: SupportsGetItem[int, Iterable[BaseFix]] | None, traversal: Iterable[Node]) -> None: ... def processed_file( - self, new_text: str, filename: str, old_text: str | None = None, write: bool = False, encoding: str | None = None + self, new_text: str, filename: StrPath, old_text: str | None = None, write: bool = False, encoding: str | None = None ) -> None: ... - def write_file(self, new_text: str, filename: str, old_text: str, encoding: str | None = None) -> None: ... - PS1: ClassVar[str] - PS2: ClassVar[str] - def refactor_docstring(self, input: str, filename: str) -> str: ... - def refactor_doctest(self, block: list[str], lineno: int, indent: int, filename: str) -> list[str]: ... + def write_file(self, new_text: str, filename: FileDescriptorOrPath, old_text: str, encoding: str | None = None) -> None: ... + PS1: Final = ">>> " + PS2: Final = "... " + def refactor_docstring(self, input: str, filename: StrPath) -> str: ... + def refactor_doctest(self, block: list[str], lineno: int, indent: int, filename: StrPath) -> list[str]: ... def summarize(self) -> None: ... - def parse_block(self, block: Iterable[str], lineno: int, indent: int): ... + def parse_block(self, block: Iterable[str], lineno: int, indent: int) -> Node: ... def wrap_toks( self, block: Iterable[str], lineno: int, indent: int - ) -> Generator[tuple[Any, Any, tuple[int, int], tuple[int, int], str], None, None]: ... + ) -> Generator[tuple[int, str, tuple[int, int], tuple[int, int], str], None, None]: ... def gen_lines(self, block: Iterable[str], indent: int) -> Generator[str, None, None]: ... class MultiprocessingUnsupported(Exception): ... class MultiprocessRefactoringTool(RefactoringTool): - queue: Any | None - output_lock: Any | None + queue: JoinableQueue[None | tuple[Iterable[str], bool | int]] | None + output_lock: Lock | None def refactor( self, items: Iterable[str], write: bool = False, doctests_only: bool = False, num_processes: int = 1 ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi index 938410ae6..6ebd305aa 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi @@ -80,7 +80,7 @@ _levelToName: dict[int, str] _nameToLevel: dict[str, int] class Filterer: - filters: list[Filter] + filters: list[_FilterType] def addFilter(self, filter: _FilterType) -> None: ... def removeFilter(self, filter: _FilterType) -> None: ... def filter(self, record: LogRecord) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/config.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/config.pyi index bec0ab02d..e92658f7f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/config.pyi @@ -1,32 +1,59 @@ import sys from _typeshed import StrOrBytesPath -from collections.abc import Callable, Sequence +from collections.abc import Callable, Hashable, Iterable, Sequence from configparser import RawConfigParser from re import Pattern from threading import Thread -from typing import IO, Any -from typing_extensions import Literal, TypedDict +from typing import IO, Any, overload +from typing_extensions import Literal, SupportsIndex, TypeAlias, TypedDict -from . import _Level +from . import Filter, Filterer, Formatter, Handler, Logger, _FilterType, _FormatStyle, _Level DEFAULT_LOGGING_CONFIG_PORT: int RESET_ERROR: int # undocumented IDENTIFIER: Pattern[str] # undocumented -class _RootLoggerConfiguration(TypedDict, total=False): - level: _Level - filters: Sequence[str] - handlers: Sequence[str] +if sys.version_info >= (3, 11): + class _RootLoggerConfiguration(TypedDict, total=False): + level: _Level + filters: Sequence[str | _FilterType] + handlers: Sequence[str] + +else: + class _RootLoggerConfiguration(TypedDict, total=False): + level: _Level + filters: Sequence[str] + handlers: Sequence[str] class _LoggerConfiguration(_RootLoggerConfiguration, TypedDict, total=False): propagate: bool +if sys.version_info >= (3, 8): + _FormatterConfigurationTypedDict = TypedDict( + "_FormatterConfigurationTypedDict", {"class": str, "format": str, "datefmt": str, "style": _FormatStyle}, total=False + ) +else: + _FormatterConfigurationTypedDict = TypedDict( + "_FormatterConfigurationTypedDict", + {"class": str, "format": str, "datefmt": str, "style": _FormatStyle, "validate": bool}, + total=False, + ) + +class _FilterConfigurationTypedDict(TypedDict): + name: str + +# Formatter and filter configs can specify custom factories via the special `()` key. +# If that is the case, the dictionary can contain any additional keys +# https://docs.python.org/3/library/logging.config.html#user-defined-objects +_FormatterConfiguration: TypeAlias = _FormatterConfigurationTypedDict | dict[str, Any] +_FilterConfiguration: TypeAlias = _FilterConfigurationTypedDict | dict[str, Any] +# Handler config can have additional keys even when not providing a custom factory so we just use `dict`. +_HandlerConfiguration: TypeAlias = dict[str, Any] + class _OptionalDictConfigArgs(TypedDict, total=False): - # these two can have custom factories (key: `()`) which can have extra keys - formatters: dict[str, dict[str, Any]] - filters: dict[str, dict[str, Any]] - # type checkers would warn about extra keys if this was a TypedDict - handlers: dict[str, dict[str, Any]] + formatters: dict[str, _FormatterConfiguration] + filters: dict[str, _FilterConfiguration] + handlers: dict[str, _HandlerConfiguration] loggers: dict[str, _LoggerConfiguration] root: _RootLoggerConfiguration | None incremental: bool @@ -60,3 +87,57 @@ else: def valid_ident(s: str) -> Literal[True]: ... # undocumented def listen(port: int = 9030, verify: Callable[[bytes], bytes | None] | None = None) -> Thread: ... def stopListening() -> None: ... + +class ConvertingMixin: # undocumented + def convert_with_key(self, key: Any, value: Any, replace: bool = True) -> Any: ... + def convert(self, value: Any) -> Any: ... + +class ConvertingDict(dict[Hashable, Any], ConvertingMixin): # undocumented + def __getitem__(self, key: Hashable) -> Any: ... + def get(self, key: Hashable, default: Any = None) -> Any: ... + def pop(self, key: Hashable, default: Any = None) -> Any: ... + +class ConvertingList(list[Any], ConvertingMixin): # undocumented + @overload + def __getitem__(self, key: SupportsIndex) -> Any: ... + @overload + def __getitem__(self, key: slice) -> Any: ... + def pop(self, idx: SupportsIndex = -1) -> Any: ... + +class ConvertingTuple(tuple[Any, ...], ConvertingMixin): # undocumented + @overload + def __getitem__(self, key: SupportsIndex) -> Any: ... + @overload + def __getitem__(self, key: slice) -> Any: ... + +class BaseConfigurator: # undocumented + CONVERT_PATTERN: Pattern[str] + WORD_PATTERN: Pattern[str] + DOT_PATTERN: Pattern[str] + INDEX_PATTERN: Pattern[str] + DIGIT_PATTERN: Pattern[str] + value_converters: dict[str, str] + importer: Callable[..., Any] + + def __init__(self, config: _DictConfigArgs | dict[str, Any]) -> None: ... + def resolve(self, s: str) -> Any: ... + def ext_convert(self, value: str) -> Any: ... + def cfg_convert(self, value: str) -> Any: ... + def convert(self, value: Any) -> Any: ... + def configure_custom(self, config: dict[str, Any]) -> Any: ... + def as_tuple(self, value: list[Any] | tuple[Any]) -> tuple[Any]: ... + +class DictConfigurator(BaseConfigurator): + def configure(self) -> None: ... # undocumented + def configure_formatter(self, config: _FormatterConfiguration) -> Formatter | Any: ... # undocumented + def configure_filter(self, config: _FilterConfiguration) -> Filter | Any: ... # undocumented + def add_filters(self, filterer: Filterer, filters: Iterable[_FilterType]) -> None: ... # undocumented + def configure_handler(self, config: _HandlerConfiguration) -> Handler | Any: ... # undocumented + def add_handlers(self, logger: Logger, handlers: Iterable[str]) -> None: ... # undocumented + def common_logger_config( + self, logger: Logger, config: _LoggerConfiguration, incremental: bool = False + ) -> None: ... # undocumented + def configure_logger(self, name: str, config: _LoggerConfiguration, incremental: bool = False) -> None: ... # undocumented + def configure_root(self, config: _LoggerConfiguration, incremental: bool = False) -> None: ... # undocumented + +dictConfigClass = DictConfigurator diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/queues.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/queues.pyi index f821b6df4..a26ab7173 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/queues.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/queues.pyi @@ -1,4 +1,3 @@ -import queue import sys from typing import Any, Generic, TypeVar @@ -9,19 +8,24 @@ __all__ = ["Queue", "SimpleQueue", "JoinableQueue"] _T = TypeVar("_T") -class Queue(queue.Queue[_T]): +class Queue(Generic[_T]): # FIXME: `ctx` is a circular dependency and it's not actually optional. # It's marked as such to be able to use the generic Queue in __init__.pyi. def __init__(self, maxsize: int = 0, *, ctx: Any = ...) -> None: ... - def get(self, block: bool = True, timeout: float | None = None) -> _T: ... def put(self, obj: _T, block: bool = True, timeout: float | None = None) -> None: ... - def put_nowait(self, obj: _T) -> None: ... + def get(self, block: bool = True, timeout: float | None = None) -> _T: ... + def qsize(self) -> int: ... + def empty(self) -> bool: ... + def full(self) -> bool: ... def get_nowait(self) -> _T: ... + def put_nowait(self, obj: _T) -> None: ... def close(self) -> None: ... def join_thread(self) -> None: ... def cancel_join_thread(self) -> None: ... -class JoinableQueue(Queue[_T]): ... +class JoinableQueue(Queue[_T]): + def task_done(self) -> None: ... + def join(self) -> None: ... class SimpleQueue(Generic[_T]): def __init__(self, *, ctx: Any = ...) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/synchronize.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/synchronize.pyi index 6c2e18954..a4e36cfa0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/synchronize.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/synchronize.pyi @@ -14,9 +14,6 @@ class Barrier(threading.Barrier): self, parties: int, action: Callable[[], object] | None = None, timeout: float | None = None, *ctx: BaseContext ) -> None: ... -class BoundedSemaphore(Semaphore): - def __init__(self, value: int = 1, *, ctx: BaseContext) -> None: ... - class Condition(AbstractContextManager[bool]): def __init__(self, lock: _LockLike | None = None, *, ctx: BaseContext) -> None: ... def notify(self, n: int = 1) -> None: ... @@ -36,6 +33,14 @@ class Event: def clear(self) -> None: ... def wait(self, timeout: float | None = None) -> bool: ... +# Not part of public API +class SemLock(AbstractContextManager[bool]): + def acquire(self, block: bool = ..., timeout: float | None = ...) -> bool: ... + def release(self) -> None: ... + def __exit__( + self, __exc_type: type[BaseException] | None, __exc_val: BaseException | None, __exc_tb: TracebackType | None + ) -> None: ... + class Lock(SemLock): def __init__(self, *, ctx: BaseContext) -> None: ... @@ -45,10 +50,5 @@ class RLock(SemLock): class Semaphore(SemLock): def __init__(self, value: int = 1, *, ctx: BaseContext) -> None: ... -# Not part of public API -class SemLock(AbstractContextManager[bool]): - def acquire(self, block: bool = ..., timeout: float | None = ...) -> bool: ... - def release(self) -> None: ... - def __exit__( - self, __exc_type: type[BaseException] | None, __exc_val: BaseException | None, __exc_tb: TracebackType | None - ) -> None: ... +class BoundedSemaphore(Semaphore): + def __init__(self, value: int = 1, *, ctx: BaseContext) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi index 372c7e3f4..24974f787 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi @@ -390,14 +390,13 @@ class Cursor(Iterator[Any]): def __iter__(self) -> Self: ... def __next__(self) -> Any: ... -class DataError(DatabaseError): ... -class DatabaseError(Error): ... - class Error(Exception): if sys.version_info >= (3, 11): sqlite_errorcode: int sqlite_errorname: str +class DatabaseError(Error): ... +class DataError(DatabaseError): ... class IntegrityError(DatabaseError): ... class InterfaceError(Error): ... class InternalError(DatabaseError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi index 786db72c7..c2fdbeccc 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi @@ -57,9 +57,20 @@ if sys.version_info >= (3, 8): pycache_prefix: str | None ps1: object ps2: object + +# TextIO is used instead of more specific types for the standard streams, +# since they are often monkeypatched at runtime. At startup, the objects +# are initialized to instances of TextIOWrapper. +# +# To use methods from TextIOWrapper, use an isinstance check to ensure that +# the streams have not been overridden: +# +# if isinstance(sys.stdout, io.TextIOWrapper): +# sys.stdout.reconfigure(...) stdin: TextIO stdout: TextIO stderr: TextIO + if sys.version_info >= (3, 10): stdlib_module_names: frozenset[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/core.pyi index 4f4df50db..4b195b339 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/markdown/core.pyi @@ -32,6 +32,7 @@ class Markdown: tab_length: int block_level_elements: list[str] registeredExtensions: list[Extension] + ESCAPED_CHARS: list[str] def __init__( self, *, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi index d4ad860b2..c8cc6d504 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi @@ -1,6 +1,7 @@ from typing import Any, ClassVar from typing_extensions import Literal +from ._imaging import _PixelAccessor from .ImageFile import ImageFile split: Any @@ -24,5 +25,5 @@ class EpsImageFile(ImageFile): im: Any mode: Any tile: Any - def load(self, scale: int = 1, transparency: bool = False) -> None: ... + def load(self, scale: int = 1, transparency: bool = False) -> _PixelAccessor: ... def load_seek(self, *args, **kwargs) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FpxImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FpxImagePlugin.pyi index 226a10f27..a8871589d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FpxImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FpxImagePlugin.pyi @@ -2,6 +2,7 @@ from _typeshed import Incomplete from typing import Any, ClassVar from typing_extensions import Literal, TypeAlias +from ._imaging import _PixelAccessor from .ImageFile import ImageFile _OleFileIO: TypeAlias = Any # olefile.OleFileIO @@ -19,4 +20,4 @@ class FpxImageFile(ImageFile): jpeg: dict[int, Incomplete] tile_prefix: Incomplete stream: list[str] - def load(self): ... + def load(self) -> _PixelAccessor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GbrImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GbrImagePlugin.pyi index b5ede10c8..f03101f26 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GbrImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GbrImagePlugin.pyi @@ -1,10 +1,11 @@ from typing import Any, ClassVar from typing_extensions import Literal +from ._imaging import _PixelAccessor from .ImageFile import ImageFile class GbrImageFile(ImageFile): format: ClassVar[Literal["GBR"]] format_description: ClassVar[str] im: Any - def load(self) -> None: ... + def load(self) -> _PixelAccessor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi index 8460d46ca..bbd3827e7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi @@ -2,6 +2,7 @@ from _typeshed import Incomplete from typing import Any, ClassVar from typing_extensions import Literal +from ._imaging import _PixelAccessor from .ImageFile import ImageFile enable_jpeg2k: Any @@ -33,4 +34,4 @@ class IcnsImageFile(ImageFile): best_size: Any im: Any mode: Any - def load(self) -> None: ... + def load(self) -> _PixelAccessor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi index 0037cd06b..da5fea503 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi @@ -1,6 +1,7 @@ from typing import Any, ClassVar from typing_extensions import Literal +from ._imaging import _PixelAccessor from .ImageFile import ImageFile class IcoFile: @@ -22,5 +23,5 @@ class IcoImageFile(ImageFile): def size(self, value) -> None: ... im: Any mode: Any - def load(self) -> None: ... + def load(self) -> _PixelAccessor: ... def load_seek(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi index e85e42df8..c965d1489 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi @@ -13,6 +13,7 @@ from ._imaging import ( FIXED as FIXED, HUFFMAN_ONLY as HUFFMAN_ONLY, RLE as RLE, + _PixelAccessor, ) from .ImageFilter import Filter from .ImagePalette import ImagePalette @@ -180,7 +181,7 @@ class Image: def tobytes(self, encoder_name: str = "raw", *args) -> bytes: ... def tobitmap(self, name: str = "image") -> bytes: ... def frombytes(self, data: bytes, decoder_name: str = "raw", *args) -> None: ... - def load(self) -> None: ... + def load(self) -> _PixelAccessor: ... def verify(self) -> None: ... def convert( self, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi index 361909ee3..6ae0c50f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi @@ -2,6 +2,7 @@ from _typeshed import Incomplete, Unused from typing import Any, NoReturn from typing_extensions import Self +from ._imaging import _PixelAccessor from .Image import Image MAXBLOCK: int @@ -24,12 +25,12 @@ class ImageFile(Image): def verify(self) -> None: ... map: Any im: Any - def load(self): ... + def load(self) -> _PixelAccessor: ... def load_prepare(self) -> None: ... def load_end(self) -> None: ... class StubImageFile(ImageFile): - def load(self) -> None: ... + def load(self) -> _PixelAccessor: ... class Parser: incremental: Incomplete | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IptcImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IptcImagePlugin.pyi index 738caa991..3430a3566 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IptcImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IptcImagePlugin.pyi @@ -1,6 +1,7 @@ from typing import Any, ClassVar from typing_extensions import Literal +from ._imaging import _PixelAccessor from .ImageFile import ImageFile COMPRESSION: Any @@ -15,6 +16,6 @@ class IptcImageFile(ImageFile): def getint(self, key): ... def field(self): ... im: Any - def load(self): ... + def load(self) -> _PixelAccessor: ... def getiptcinfo(im): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi index a37d618f9..1c82de820 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi @@ -1,6 +1,7 @@ from typing import Any, ClassVar from typing_extensions import Literal +from ._imaging import _PixelAccessor from .ImageFile import ImageFile class Jpeg2KImageFile(ImageFile): @@ -8,4 +9,4 @@ class Jpeg2KImageFile(ImageFile): format_description: ClassVar[str] reduce: Any tile: Any - def load(self): ... + def load(self) -> _PixelAccessor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi index 178ffa9ac..4cae9d92d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi @@ -102,7 +102,6 @@ class PngImageFile(ImageFile): def load_read(self, read_bytes): ... png: Any im: Any - pyaccess: Any def load_end(self) -> None: ... def getexif(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi index ed22f7d49..bed128c38 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi @@ -1,20 +1,22 @@ from logging import Logger from typing import Any +from PIL._imaging import _PixelAccessor + ffi: Any logger: Logger -class PyAccess: +class PyAccess(_PixelAccessor): readonly: Any image8: Any image32: Any image: Any def __init__(self, img, readonly: bool = False) -> None: ... - def __setitem__(self, xy, color) -> None: ... - def __getitem__(self, xy): ... - putpixel: Any - getpixel: Any - def check_xy(self, xy): ... + def __setitem__(self, xy: tuple[int, int], color) -> None: ... + def __getitem__(self, xy: tuple[int, int]) -> Any: ... + def putpixel(self, xy: tuple[int, int], color) -> None: ... + def getpixel(self, xy: tuple[int, int]) -> Any: ... + def check_xy(self, xy: tuple[int, int]): ... class _PyAccess32_2(PyAccess): def get_pixel(self, x, y): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi index bb1ad85d6..ba34fc314 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi @@ -5,6 +5,7 @@ from types import TracebackType from typing import Any, ClassVar from typing_extensions import Literal +from ._imaging import _PixelAccessor from .ImageFile import ImageFile logger: Any @@ -153,7 +154,7 @@ class TiffImageFile(ImageFile): im: Any def seek(self, frame) -> None: ... def tell(self): ... - def load(self): ... + def load(self) -> _PixelAccessor: ... def load_end(self) -> None: ... SAVE_INFO: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WalImageFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WalImageFile.pyi index 24d1cb5cc..176f47eca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WalImageFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WalImageFile.pyi @@ -2,11 +2,12 @@ from typing import ClassVar from typing_extensions import Literal from . import ImageFile +from ._imaging import _PixelAccessor class WalImageFile(ImageFile.ImageFile): format: ClassVar[Literal["WAL"]] format_description: ClassVar[str] - def load(self) -> None: ... + def load(self) -> _PixelAccessor: ... def open(filename): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WebPImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WebPImagePlugin.pyi index 1b3d97718..43e06c675 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WebPImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WebPImagePlugin.pyi @@ -1,6 +1,7 @@ from typing import Any, ClassVar from typing_extensions import Literal, TypeAlias +from ._imaging import _PixelAccessor from .ImageFile import ImageFile SUPPORTED: bool @@ -13,5 +14,5 @@ class WebPImageFile(ImageFile): def seek(self, frame) -> None: ... fp: Any tile: Any - def load(self): ... + def load(self) -> _PixelAccessor: ... def tell(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi index 76554cda2..2cb78d884 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi @@ -3,6 +3,7 @@ from _typeshed import Incomplete from typing import Any, ClassVar from typing_extensions import Literal +from ._imaging import _PixelAccessor from .ImageFile import StubImageFile def register_handler(handler) -> None: ... @@ -16,4 +17,4 @@ if sys.platform == "win32": class WmfStubImageFile(StubImageFile): format: ClassVar[Literal["WMF"]] format_description: ClassVar[str] - def load(self, dpi: Incomplete | None = None) -> None: ... + def load(self, dpi: Incomplete | None = None) -> _PixelAccessor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_imaging.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_imaging.pyi index b9435b8fe..2e523f7d2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_imaging.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_imaging.pyi @@ -1,5 +1,6 @@ from _typeshed import Incomplete from collections.abc import Sequence +from typing import Protocol from typing_extensions import Literal DEFAULT_STRATEGY: Literal[0] @@ -8,6 +9,20 @@ HUFFMAN_ONLY: Literal[2] RLE: Literal[3] FIXED: Literal[4] +class _PixelAccessor(Protocol): # noqa: Y046 + # PIL has two concrete types for accessing an image's pixels by coordinate lookup: + # PixelAccess (written in C; not runtime-importable) and PyAccess (written in + # Python + cffi; is runtime-importable). PixelAccess came first. PyAccess was added + # in later to support PyPy, but otherwise is intended to expose the same interface + # PixelAccess. + # + # This protocol describes that interface. + # TODO: should the color args and getter return types be _Color? + def __setitem__(self, xy: tuple[int, int], color: Incomplete) -> None: ... + def __getitem__(self, xy: tuple[int, int]) -> Incomplete: ... + def putpixel(self, xy: tuple[int, int], color: Incomplete) -> None: ... + def getpixel(self, xy: tuple[int, int]) -> Incomplete: ... + class _Path: def __getattr__(self, item: str) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/METADATA.toml index ac906398b..f3db0ed39 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/METADATA.toml @@ -7,4 +7,3 @@ obsolete_since = "2.0.0" # Released on 2023-01-26 [tool.stubtest] stubtest_requirements = ["pytest"] -ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/__init__.pyi index dde3cbce2..85d101e51 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/__init__.pyi @@ -84,7 +84,7 @@ from .sql import ( values as values, within_group as within_group, ) -from .types import ( +from .sql.sqltypes import ( ARRAY as ARRAY, BIGINT as BIGINT, BINARY as BINARY, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cprocessors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cprocessors.pyi new file mode 100644 index 000000000..93df3b165 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cprocessors.pyi @@ -0,0 +1,15 @@ +class DecimalResultProcessor: + def __init__(self, *args, **kwargs) -> None: ... + def process(self, *args, **kwargs): ... + +class UnicodeResultProcessor: + def __init__(self, *args, **kwargs) -> None: ... + def conditional_process(self, *args, **kwargs): ... + def process(self, *args, **kwargs): ... + +def int_to_boolean(*args, **kwargs): ... +def str_to_date(*args, **kwargs): ... +def str_to_datetime(*args, **kwargs): ... +def str_to_time(*args, **kwargs): ... +def to_float(*args, **kwargs): ... +def to_str(*args, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/__init__.pyi index c421f787e..a849e4ca6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/__init__.pyi @@ -1,6 +1,6 @@ from typing import Any -from sqlalchemy.dialects.firebird.base import ( +from .base import ( BIGINT as BIGINT, BLOB as BLOB, CHAR as CHAR, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi index a0d8dd01b..83dea8caa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi @@ -1,10 +1,9 @@ from _typeshed import Incomplete from typing import Any -from sqlalchemy import sql, types as sqltypes -from sqlalchemy.engine import default -from sqlalchemy.sql import compiler -from sqlalchemy.types import ( +from ...engine import default +from ...sql import compiler, sqltypes +from ...sql.sqltypes import ( BIGINT as BIGINT, BLOB as BLOB, DATE as DATE, @@ -46,7 +45,7 @@ class FBTypeCompiler(compiler.GenericTypeCompiler): def visit_CHAR(self, type_, **kw): ... def visit_VARCHAR(self, type_, **kw): ... -class FBCompiler(sql.compiler.SQLCompiler): +class FBCompiler(compiler.SQLCompiler): ansi_bind_rules: bool def visit_now_func(self, fn, **kw): ... def visit_startswith_op_binary(self, binary, operator, **kw): ... @@ -63,12 +62,12 @@ class FBCompiler(sql.compiler.SQLCompiler): def limit_clause(self, select, **kw): ... def returning_clause(self, stmt, returning_cols): ... -class FBDDLCompiler(sql.compiler.DDLCompiler): +class FBDDLCompiler(compiler.DDLCompiler): def visit_create_sequence(self, create): ... def visit_drop_sequence(self, drop): ... def visit_computed_column(self, generated): ... -class FBIdentifierPreparer(sql.compiler.IdentifierPreparer): +class FBIdentifierPreparer(compiler.IdentifierPreparer): reserved_words: Any illegal_initial_characters: Any def __init__(self, dialect) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi index 7f957f3ce..8416a63aa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from typing import Any -from ...types import Float, Numeric +from ...sql.sqltypes import Float, Numeric from .base import FBDialect, FBExecutionContext class _kinterbasdb_numeric: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi index 2e0acfccc..2e5674285 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi @@ -2,12 +2,10 @@ from _typeshed import Incomplete from typing import Any, overload from typing_extensions import Literal -import sqlalchemy.types as sqltypes - from ...engine import default -from ...sql import compiler +from ...sql import compiler, sqltypes from ...sql.elements import Cast -from ...types import ( +from ...sql.sqltypes import ( BIGINT as BIGINT, BINARY as BINARY, CHAR as CHAR, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/information_schema.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/information_schema.pyi index 0a97a197f..f91531a75 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/information_schema.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/information_schema.pyi @@ -1,7 +1,7 @@ from typing import Any from ...sql import expression -from ...types import TypeDecorator +from ...sql.type_api import TypeDecorator ischema: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/json.pyi index 2ced3beec..5d5bb5efe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/json.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/json.pyi @@ -1,4 +1,4 @@ -from ...types import JSON as _JSON +from ...sql.sqltypes import JSON as _JSON class JSON(_JSON): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pymssql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pymssql.pyi index b16a0b4f7..01e796368 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pymssql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pymssql.pyi @@ -1,6 +1,6 @@ from typing import Any -from ...types import Numeric +from ...sql.sqltypes import Numeric from .base import MSDialect, MSIdentifierPreparer class _MSNumeric_pymssql(Numeric): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi index 50d53b123..70e6e362b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from typing import Any from ...connectors.pyodbc import PyODBCConnector -from ...types import DateTime, Float, Numeric +from ...sql.sqltypes import DateTime, Float, Numeric from .base import BINARY, DATETIMEOFFSET, VARBINARY, MSDialect, MSExecutionContext class _ms_numeric_pyodbc: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi index 16180d582..1661a2922 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi @@ -1,5 +1,7 @@ -from _typeshed import Incomplete -from typing import Any +from _typeshed import Incomplete, ReadableBuffer +from collections.abc import Iterable +from typing import Any, SupportsBytes +from typing_extensions import SupportsIndex from ...engine import AdaptedConnection from .pymysql import MySQLDialect_pymysql @@ -51,10 +53,18 @@ class AsyncAdapt_asyncmy_connection(AdaptedConnection): class AsyncAdaptFallback_asyncmy_connection(AsyncAdapt_asyncmy_connection): await_: Any +def _Binary(x: Iterable[SupportsIndex] | SupportsIndex | SupportsBytes | ReadableBuffer) -> bytes: ... + class AsyncAdapt_asyncmy_dbapi: asyncmy: Any pymysql: Any paramstyle: str + STRING: Incomplete + NUMBER: Incomplete + BINARY: Incomplete + DATETIME: Incomplete + TIMESTAMP: Incomplete + Binary = staticmethod(_Binary) def __init__(self, asyncmy: Any) -> None: ... def connect(self, *arg, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi index 8a36027eb..cae866674 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi @@ -3,9 +3,10 @@ from typing import Any from ...engine import default from ...sql import compiler -from ...types import BINARY as BINARY, BLOB as BLOB, BOOLEAN as BOOLEAN, DATE as DATE, VARBINARY as VARBINARY +from ...sql.sqltypes import BINARY as BINARY, BLOB as BLOB, BOOLEAN as BOOLEAN, DATE as DATE, VARBINARY as VARBINARY from .enumerated import ENUM as ENUM, SET as SET from .json import JSON as JSON +from .reserved_words import RESERVED_WORDS_MARIADB as RESERVED_WORDS_MARIADB, RESERVED_WORDS_MYSQL as RESERVED_WORDS_MYSQL from .types import ( BIGINT as BIGINT, BIT as BIT, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/dml.pyi index 77b095c16..47463bbc4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/dml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/dml.pyi @@ -2,7 +2,7 @@ from typing import Any from ...sql.dml import Insert as StandardInsert from ...sql.elements import ClauseElement -from ...util import memoized_property +from ...util.langhelpers import memoized_property class Insert(StandardInsert): stringify_dialect: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/json.pyi index c35f9c440..8baa9ff03 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/json.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/json.pyi @@ -1,4 +1,4 @@ -import sqlalchemy.types as sqltypes +from ...sql import sqltypes class JSON(sqltypes.JSON): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqlconnector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqlconnector.pyi index df0a63589..5ee626ed9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqlconnector.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqlconnector.pyi @@ -1,6 +1,6 @@ from typing import Any -from ...util import memoized_property +from ...util.langhelpers import memoized_property from .base import BIT, MySQLCompiler, MySQLDialect, MySQLIdentifierPreparer class MySQLCompiler_mysqlconnector(MySQLCompiler): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi index 8daaf59a6..8c0bff8fa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from typing import Any -from ...util import memoized_property +from ...util.langhelpers import memoized_property from .base import MySQLCompiler, MySQLDialect, MySQLExecutionContext class MySQLExecutionContext_mysqldb(MySQLExecutionContext): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi index f91c2119f..cf2e137c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from typing import Any -from ...util import memoized_property +from ...util.langhelpers import memoized_property from .mysqldb import MySQLDialect_mysqldb class MySQLDialect_pymysql(MySQLDialect_mysqldb): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi index 80e81e150..49252518b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from typing import Any -import sqlalchemy.types as sqltypes +from ...sql import sqltypes class _NumericType: unsigned: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi index cd2bdf53f..2a90fcf55 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi @@ -1,11 +1,9 @@ from _typeshed import Incomplete from typing import Any -from sqlalchemy.sql import ClauseElement - from ...engine import default -from ...sql import compiler, sqltypes -from ...types import ( +from ...sql import ClauseElement, compiler, sqltypes +from ...sql.sqltypes import ( BLOB as BLOB, CHAR as CHAR, CLOB as CLOB, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi index 1b755370b..c7fed1770 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi @@ -1,8 +1,7 @@ from _typeshed import Incomplete from typing import Any -import sqlalchemy.types as sqltypes - +from ...sql import sqltypes from . import base as oracle from .base import OracleCompiler, OracleDialect, OracleExecutionContext diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi index 834619c95..bfa94d1b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi @@ -1,9 +1,7 @@ from _typeshed import Incomplete from typing import Any as _Any -import sqlalchemy.types as sqltypes - -from ...sql import expression +from ...sql import expression, sqltypes def Any(other, arrexpr, operator=...): ... def All(other, arrexpr, operator=...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi index a2894f2dc..cb20a7df1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi @@ -122,6 +122,7 @@ class AsyncAdapt_asyncpg_connection(AdaptedConnection): def rollback(self) -> None: ... def commit(self) -> None: ... def close(self) -> None: ... + def terminate(self) -> None: ... class AsyncAdaptFallback_asyncpg_connection(AsyncAdapt_asyncpg_connection): await_: Any @@ -152,6 +153,7 @@ class AsyncAdapt_asyncpg_dbapi: TIMESTAMP: Any TIMESTAMP_W_TZ: Any TIME: Any + TIME_W_TZ: Incomplete DATE: Any INTERVAL: Any NUMBER: Any @@ -175,6 +177,7 @@ class PGDialect_asyncpg(PGDialect): supports_unicode_statements: bool supports_server_side_cursors: bool supports_unicode_binds: bool + has_terminate: bool default_paramstyle: str supports_sane_multi_rowcount: bool statement_compiler: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi index 1a04cd3d0..e90a53632 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi @@ -5,7 +5,7 @@ from ...engine import characteristics, default, reflection from ...schema import _CreateDropBase from ...sql import compiler, elements, sqltypes from ...sql.ddl import DDLBase -from ...types import ( +from ...sql.sqltypes import ( BIGINT as BIGINT, BOOLEAN as BOOLEAN, CHAR as CHAR, @@ -179,6 +179,7 @@ class PGTypeCompiler(compiler.GenericTypeCompiler): def visit_INET(self, type_, **kw): ... def visit_CIDR(self, type_, **kw): ... def visit_MACADDR(self, type_, **kw): ... + def visit_MACADDR8(self, type_, **kw): ... def visit_MONEY(self, type_, **kw): ... def visit_OID(self, type_, **kw): ... def visit_REGCLASS(self, type_, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi index 3a59fcef6..9d73ebd04 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi @@ -3,7 +3,7 @@ from typing import Any from ...sql.dml import Insert as StandardInsert from ...sql.elements import ClauseElement -from ...util import memoized_property +from ...util.langhelpers import memoized_property class Insert(StandardInsert): stringify_dialect: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi index afb341117..936c78c68 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi @@ -1,9 +1,7 @@ from _typeshed import Incomplete from typing import Any -import sqlalchemy.types as sqltypes - -from ...sql import functions as sqlfunc +from ...sql import functions as sqlfunc, sqltypes class HSTORE(sqltypes.Indexable, sqltypes.Concatenable, sqltypes.TypeEngine): __visit_name__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi index 7898fd46f..0621b3e95 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from typing import Any -import sqlalchemy.types as sqltypes +from ...sql import sqltypes class JSONPathType(sqltypes.JSON.JSONPathType): def bind_processor(self, dialect): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi index dd8b31441..5d923063a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi @@ -1,8 +1,7 @@ from _typeshed import Incomplete from typing import Any -import sqlalchemy.types as sqltypes - +from ...sql import sqltypes from .array import ARRAY as PGARRAY from .base import ENUM, INTERVAL, UUID, PGCompiler, PGDialect, PGExecutionContext, PGIdentifierPreparer from .json import JSON, JSONB, JSONPathType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi index a64d86f6d..d80b3f471 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi @@ -1,8 +1,7 @@ from _typeshed import Incomplete from typing import Any -import sqlalchemy.types as sqltypes - +from ...sql import sqltypes from .array import ARRAY as PGARRAY from .base import ENUM, UUID, PGCompiler, PGDialect, PGExecutionContext, PGIdentifierPreparer from .hstore import HSTORE diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pygresql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pygresql.pyi index a6f0d861b..997db14e8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pygresql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pygresql.pyi @@ -1,6 +1,6 @@ from typing import Any -from ...types import Numeric +from ...sql.sqltypes import Numeric from .base import UUID, PGCompiler, PGDialect, PGIdentifierPreparer from .hstore import HSTORE from .json import JSON, JSONB diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pypostgresql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pypostgresql.pyi index 1b5bed220..9623ce216 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pypostgresql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pypostgresql.pyi @@ -1,8 +1,7 @@ from typing import Any -import sqlalchemy.types as sqltypes - -from ...util import memoized_property +from ...sql import sqltypes +from ...util.langhelpers import memoized_property from .base import PGDialect, PGExecutionContext class PGNumeric(sqltypes.Numeric): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ranges.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ranges.pyi index c31ee1b82..d12715f46 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ranges.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ranges.pyi @@ -1,6 +1,6 @@ from typing import Any -import sqlalchemy.types as sqltypes +from ...sql import sqltypes class RangeOperators: class comparator_factory(sqltypes.Concatenable.Comparator[Any]): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi index 3ade0d400..135442bab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi @@ -1,11 +1,9 @@ from _typeshed import Incomplete from typing import Any -import sqlalchemy.types as sqltypes - from ...engine import default -from ...sql import compiler -from ...types import ( +from ...sql import compiler, sqltypes +from ...sql.sqltypes import ( BLOB as BLOB, BOOLEAN as BOOLEAN, CHAR as CHAR, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi index cfd505042..139c0f170 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi @@ -3,7 +3,7 @@ from typing import Any from ...sql.dml import Insert as StandardInsert from ...sql.elements import ClauseElement -from ...util import memoized_property +from ...util.langhelpers import memoized_property class Insert(StandardInsert): stringify_dialect: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/json.pyi index 2ced3beec..5d5bb5efe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/json.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/json.pyi @@ -1,4 +1,4 @@ -from ...types import JSON as _JSON +from ...sql.sqltypes import JSON as _JSON class JSON(_JSON): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi index cb1e7c17c..52533ce99 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi @@ -1,10 +1,9 @@ from _typeshed import Incomplete from typing import Any -from sqlalchemy import types as sqltypes -from sqlalchemy.engine import default, reflection -from sqlalchemy.sql import compiler -from sqlalchemy.types import ( +from ...engine import default, reflection +from ...sql import compiler, sqltypes +from ...sql.sqltypes import ( BIGINT as BIGINT, BINARY as BINARY, CHAR as CHAR, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/mxodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/mxodbc.pyi index 596496ea1..30ba517d2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/mxodbc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/mxodbc.pyi @@ -1,5 +1,5 @@ -from sqlalchemy.connectors.mxodbc import MxODBCConnector -from sqlalchemy.dialects.sybase.base import SybaseDialect, SybaseExecutionContext +from ...connectors.mxodbc import MxODBCConnector +from .base import SybaseDialect, SybaseExecutionContext class SybaseExecutionContext_mxodbc(SybaseExecutionContext): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pyodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pyodbc.pyi index 3940f1f66..6678e90ea 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pyodbc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pyodbc.pyi @@ -1,8 +1,8 @@ from typing import Any -from sqlalchemy import types as sqltypes -from sqlalchemy.connectors.pyodbc import PyODBCConnector -from sqlalchemy.dialects.sybase.base import SybaseDialect, SybaseExecutionContext +from ...connectors.pyodbc import PyODBCConnector +from ...sql import sqltypes +from .base import SybaseDialect, SybaseExecutionContext class _SybNumeric_pyodbc(sqltypes.Numeric): def bind_processor(self, dialect): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi index e88d8e6ce..c57e68804 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi @@ -1,8 +1,8 @@ from _typeshed import Incomplete from typing import Any -from sqlalchemy import types as sqltypes -from sqlalchemy.dialects.sybase.base import SybaseDialect, SybaseExecutionContext, SybaseSQLCompiler +from ...sql import sqltypes +from .base import SybaseDialect, SybaseExecutionContext, SybaseSQLCompiler class _SybNumeric(sqltypes.Numeric): def result_processor(self, dialect, type_): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/characteristics.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/characteristics.pyi index ab5b5f63c..2833b4fd6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/characteristics.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/characteristics.pyi @@ -1,14 +1,12 @@ -import abc +from abc import ABC, ABCMeta, abstractmethod -from ..util import ABC - -class ConnectionCharacteristic(ABC, metaclass=abc.ABCMeta): +class ConnectionCharacteristic(ABC, metaclass=ABCMeta): transactional: bool - @abc.abstractmethod + @abstractmethod def reset_characteristic(self, dialect, dbapi_conn): ... - @abc.abstractmethod + @abstractmethod def set_characteristic(self, dialect, dbapi_conn, value): ... - @abc.abstractmethod + @abstractmethod def get_characteristic(self, dialect, dbapi_conn): ... class IsolationLevelCharacteristic(ConnectionCharacteristic): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi index 7b67eba1f..c5e8f76fa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi @@ -1,8 +1,9 @@ -import abc from _typeshed import Incomplete +from abc import ABCMeta from typing import Any -from ..util import memoized_property +from ..sql.compiler import RM_NAME as RM_NAME, RM_OBJECTS as RM_OBJECTS, RM_RENDERED_NAME as RM_RENDERED_NAME, RM_TYPE as RM_TYPE +from ..util.langhelpers import memoized_property from .result import Result, ResultMetaData from .row import LegacyRow @@ -128,5 +129,5 @@ ResultProxy = LegacyCursorResult class BufferedRowResultProxy(ResultProxy): ... class FullyBufferedResultProxy(ResultProxy): ... -class BufferedColumnRow(LegacyRow, metaclass=abc.ABCMeta): ... +class BufferedColumnRow(LegacyRow, metaclass=ABCMeta): ... class BufferedColumnResultProxy(ResultProxy): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi index e7784485a..2bfb752ef 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi @@ -1,8 +1,8 @@ from _typeshed import Incomplete from typing import Any, ClassVar -from .. import types as sqltypes -from ..util import memoized_property +from ..sql import sqltypes +from ..util.langhelpers import memoized_property from . import interfaces AUTOCOMMIT_REGEXP: Any @@ -78,6 +78,7 @@ class DefaultDialect(interfaces.Dialect): # type: ignore[misc] CACHING_DISABLED: Any NO_CACHE_KEY: Any NO_DIALECT_SUPPORT: Any + has_terminate: bool convert_unicode: Any encoding: Any positional: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi index a62121626..714002b31 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi @@ -42,8 +42,8 @@ class Dialect: supports_native_enum: bool supports_native_boolean: bool dbapi_exception_translation_map: dict[Any, Any] - supports_statement_cache: bool + dispatch: Incomplete @abstractmethod def create_connect_args(self, url: URL) -> None: ... def initialize(self, connection) -> None: ... @@ -75,6 +75,7 @@ class Dialect: def do_begin(self, dbapi_connection) -> None: ... def do_rollback(self, dbapi_connection) -> None: ... def do_commit(self, dbapi_connection) -> None: ... + def do_terminate(self, dbapi_connection) -> None: ... def do_close(self, dbapi_connection) -> None: ... def do_set_input_sizes(self, cursor, list_of_tuples, context) -> None: ... def create_xid(self) -> None: ... @@ -122,6 +123,7 @@ class ExecutionContext: def get_rowcount(self) -> None: ... class Connectable: + dispatch: Incomplete @abstractmethod def connect(self, **kwargs) -> Connection: ... @property @@ -165,3 +167,4 @@ class ExceptionContext: class AdaptedConnection: @property def driver_connection(self): ... + def run_async(self, fn): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi index 9500d7a11..e684e8ba6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi @@ -39,6 +39,8 @@ class _WithKeys: class Result(_WithKeys, ResultInternal): def __init__(self, cursor_metadata) -> None: ... def close(self) -> None: ... + @property + def closed(self): ... def yield_per(self, num: int) -> Self: ... def unique(self, strategy: Incomplete | None = None) -> Self: ... def columns(self, *col_expressions): ... @@ -60,7 +62,11 @@ class Result(_WithKeys, ResultInternal): def freeze(self) -> FrozenResult: ... def merge(self, *others) -> MergedResult: ... -class FilterResult(ResultInternal): ... +class FilterResult(ResultInternal): + def yield_per(self: Self, num) -> Self: ... + @property + def closed(self): ... + def close(self) -> None: ... class ScalarResult(FilterResult): def __init__(self, real_result, index) -> None: ... @@ -104,6 +110,8 @@ class IteratorResult(Result): def __init__( self, cursor_metadata, iterator, raw: Incomplete | None = None, _source_supports_scalars: bool = False ) -> None: ... + @property + def closed(self): ... def null_result() -> IteratorResult: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/row.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/row.pyi index 330af3e9e..ccc6f336e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/row.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/row.pyi @@ -1,3 +1,4 @@ +from abc import ABCMeta from collections.abc import ItemsView, Iterator, KeysView, Mapping, Sequence, ValuesView from typing import Any, Generic, TypeVar @@ -14,7 +15,7 @@ KEY_OBJECTS_ONLY: int KEY_OBJECTS_BUT_WARN: int KEY_OBJECTS_NO_WARN: int -class Row(BaseRow, Sequence[Any]): +class Row(BaseRow, Sequence[Any], metaclass=ABCMeta): # The count and index methods are inherited from Sequence. # If the result set contains columns with the same names, these # fields contains their respective values, instead. We don't reflect @@ -27,6 +28,7 @@ class Row(BaseRow, Sequence[Any]): def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... def keys(self) -> list[str]: ... + def __contains__(self, key): ... # The following methods are public, but have a leading underscore # to prevent conflicts with column names. @property @@ -35,7 +37,7 @@ class Row(BaseRow, Sequence[Any]): def _fields(self) -> tuple[str, ...]: ... def _asdict(self) -> dict[str, Any]: ... -class LegacyRow(Row): +class LegacyRow(Row, metaclass=ABCMeta): def has_key(self, key: str) -> bool: ... def items(self) -> list[tuple[str, Any]]: ... def iterkeys(self) -> Iterator[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi index f75244e2a..a0b57ebcb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi @@ -3,7 +3,7 @@ from typing import Any from ..orm import interfaces from ..sql.operators import ColumnOperators -from ..util import memoized_property +from ..util.langhelpers import memoized_property def association_proxy(target_collection, attr, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi index 5e1b2c263..cfeb58e92 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi @@ -1,14 +1,14 @@ -import abc +from abc import ABC, ABCMeta, abstractmethod from types import TracebackType class ReversibleProxy: ... -class StartableContext(abc.ABC, metaclass=abc.ABCMeta): - @abc.abstractmethod +class StartableContext(ABC, metaclass=ABCMeta): + @abstractmethod async def start(self, is_ctxmanager: bool = False): ... def __await__(self): ... async def __aenter__(self): ... - @abc.abstractmethod + @abstractmethod async def __aexit__( self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi index 15aa84848..9a389d559 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi @@ -5,8 +5,10 @@ from typing import Any from .base import ProxyComparable, StartableContext def create_async_engine(*arg, **kw) -> AsyncEngine: ... +def async_engine_from_config(configuration, prefix: str = "sqlalchemy.", **kwargs) -> AsyncEngine: ... -class AsyncConnectable: ... +class AsyncConnectable: + dispatch: Incomplete class AsyncConnection(ProxyComparable, StartableContext, AsyncConnectable): engine: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi index ee9864e0b..6afa6ed69 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi @@ -3,7 +3,7 @@ from _typeshed import Incomplete from ...engine.result import FilterResult class AsyncCommon(FilterResult): - async def close(self) -> None: ... + async def close(self) -> None: ... # type: ignore[override] # supertype is not async class AsyncResult(AsyncCommon): def __init__(self, real_result) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi index 2d6557caf..3c203866c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi @@ -2,11 +2,12 @@ from _typeshed import Incomplete from typing import Any from ...orm.scoping import ScopedSessionMixin -from ...util import memoized_property +from ...util.langhelpers import memoized_property class async_scoped_session(ScopedSessionMixin): session_factory: Any registry: Any + def invalidate(self): ... def __init__(self, session_factory, scopefunc) -> None: ... async def remove(self) -> None: ... # proxied from Session diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi index aefe03ad9..6c9e95b43 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi @@ -3,7 +3,7 @@ from types import TracebackType from typing import Any from typing_extensions import Self -from ...util import memoized_property +from ...util.langhelpers import memoized_property from .base import ReversibleProxy, StartableContext class AsyncSession(ReversibleProxy): @@ -55,6 +55,7 @@ class AsyncSession(ReversibleProxy): async def rollback(self): ... async def commit(self): ... async def close(self): ... + async def invalidate(self): ... @classmethod async def close_all(cls): ... async def __aenter__(self) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi index 250844a1d..95ac4b0d6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi @@ -1,6 +1,8 @@ from _typeshed import Incomplete from typing import Any +from ..orm.strategy_options import Load, loader_option + log: Any class Bakery: @@ -40,7 +42,8 @@ class Result: def bake_lazy_loaders() -> None: ... def unbake_lazy_loaders() -> None: ... +@loader_option() +def baked_lazyload(loadopt: Load, attr) -> loader_option: ... +def baked_lazyload_all(loadopt: Load, attr) -> loader_option: ... -baked_lazyload: Any -baked_lazyload_all: Any -bakery: Any +bakery = BakedQuery.bakery diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi index 2bb42e332..dbfccc809 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi @@ -1,11 +1,23 @@ +import sys from _typeshed import Unused from logging import Logger from typing import Any, TypeVar, overload -from typing_extensions import Literal, Self, TypeAlias +from typing_extensions import Final, Literal, Self, TypeAlias _ClsT = TypeVar("_ClsT", bound=type) _EchoFlag: TypeAlias = bool | Literal["debug"] | None +if sys.version_info >= (3, 8): + STACKLEVEL: Final = True + + if sys.version_info >= (3, 11): + STACKLEVEL_OFFSET: Final = 2 + else: + STACKLEVEL_OFFSET: Final = 1 +else: + STACKLEVEL: Final = False + STACKLEVEL_OFFSET: Final = 0 + rootlogger: Any def class_logger(cls: _ClsT) -> _ClsT: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi index d181cf386..c5097d7c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi @@ -2,8 +2,34 @@ from _typeshed import Incomplete from typing import Any, Generic, NamedTuple, TypeVar from ..sql import base as sql_base, roles, traversals -from ..util import memoized_property +from ..util.langhelpers import memoized_property from . import interfaces +from .base import ( + ATTR_EMPTY as ATTR_EMPTY, + ATTR_WAS_SET as ATTR_WAS_SET, + CALLABLES_OK as CALLABLES_OK, + DEFERRED_HISTORY_LOAD as DEFERRED_HISTORY_LOAD, + INIT_OK as INIT_OK, + LOAD_AGAINST_COMMITTED as LOAD_AGAINST_COMMITTED, + NEVER_SET as NEVER_SET, + NO_AUTOFLUSH as NO_AUTOFLUSH, + NO_CHANGE as NO_CHANGE, + NO_RAISE as NO_RAISE, + NO_VALUE as NO_VALUE, + NON_PERSISTENT_OK as NON_PERSISTENT_OK, + PASSIVE_CLASS_MISMATCH as PASSIVE_CLASS_MISMATCH, + PASSIVE_NO_FETCH as PASSIVE_NO_FETCH, + PASSIVE_NO_FETCH_RELATED as PASSIVE_NO_FETCH_RELATED, + PASSIVE_NO_INITIALIZE as PASSIVE_NO_INITIALIZE, + PASSIVE_NO_RESULT as PASSIVE_NO_RESULT, + PASSIVE_OFF as PASSIVE_OFF, + PASSIVE_ONLY_PERSISTENT as PASSIVE_ONLY_PERSISTENT, + PASSIVE_RETURN_NO_VALUE as PASSIVE_RETURN_NO_VALUE, + RELATED_OBJECT_OK as RELATED_OBJECT_OK, + SQL_OK as SQL_OK, + instance_dict as instance_dict, + instance_state as instance_state, +) _T = TypeVar("_T") @@ -27,6 +53,7 @@ class QueryableAttribute( key: Any impl: Any comparator: Any + dispatch: Incomplete def __init__( self, class_, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi index d231d89d4..f6e4a73b4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi @@ -1,6 +1,6 @@ from typing import Any -from ..util import memoized_property +from ..util.langhelpers import memoized_property PASSIVE_NO_RESULT: Any PASSIVE_CLASS_MISMATCH: Any @@ -24,6 +24,7 @@ PASSIVE_NO_INITIALIZE: Any PASSIVE_NO_FETCH: Any PASSIVE_NO_FETCH_RELATED: Any PASSIVE_ONLY_PERSISTENT: Any +PASSIVE_MERGE: Any DEFAULT_MANAGER_ATTR: str DEFAULT_STATE_ATTR: str EXT_CONTINUE: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi index 7986198b2..1e3a3e618 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi @@ -56,6 +56,7 @@ class ORMCompileState(CompileState): class ORMFromStatementCompileState(ORMCompileState): multi_row_eager_loaders: bool + eager_adding_joins: bool compound_eager_adapter: Any extra_criteria_entities: Any eager_joins: Any @@ -78,6 +79,7 @@ class ORMFromStatementCompileState(ORMCompileState): class ORMSelectCompileState(ORMCompileState, SelectState): multi_row_eager_loaders: bool + eager_adding_joins: bool compound_eager_adapter: Any correlate: Any correlate_except: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi index f109fd39b..55ebd2b52 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi @@ -5,7 +5,7 @@ from typing_extensions import TypeAlias from ..engine.interfaces import Connectable from ..sql.schema import MetaData -from ..util import hybridproperty +from ..util.langhelpers import hybridproperty from . import interfaces _ClsT = TypeVar("_ClsT", bound=type[Any]) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi index 119d974fa..bf249bc25 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from typing import Any, ClassVar, Generic, TypeVar from ..sql.operators import ColumnOperators -from ..util import memoized_property +from ..util.langhelpers import memoized_property from . import util as orm_util from .interfaces import MapperProperty, PropComparator diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi index cfdfa096d..b808e3dd3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi @@ -1,11 +1,13 @@ from _typeshed import Incomplete from typing import Any -from ..util import HasMemoized, hybridmethod +from ..util.langhelpers import HasMemoized, hybridmethod from . import base DEL_ATTR: Any +instrumentation_finders: Any + class ClassManager(HasMemoized, dict[Any, Any]): MANAGER_ATTR: Any STATE_ATTR: Any @@ -24,6 +26,7 @@ class ClassManager(HasMemoized, dict[Any, Any]): new_init: Any local_attrs: Any originals: Any + dispatch: Incomplete def __init__(self, class_) -> None: ... def __hash__(self) -> int: ... # type: ignore[override] def __eq__(self, other): ... @@ -67,6 +70,7 @@ class _SerializeManager: def __call__(self, state, inst, state_dict) -> None: ... class InstrumentationFactory: + dispatch: Incomplete def create_manager_for_cls(self, class_): ... def unregister(self, class_) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi index 07a897578..8a3c2e298 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi @@ -44,6 +44,8 @@ class ORMFromClauseRole(roles.StrictFromClauseRole): ... class MapperProperty(HasCacheKey, _MappedAttribute, InspectionAttr, util.MemoizedSlots): cascade: Any is_property: bool + key: Incomplete + info: Incomplete def setup(self, context, query_entity, path, adapter, **kwargs) -> None: ... def create_row_processor(self, context, query_entity, path, mapper, result, adapter, populators) -> None: ... def cascade_iterator(self, type_, state, dict_, visited_states, halt_on: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi index 816e98eb1..7cc169c1c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from typing import Any from ..sql import base as sql_base -from ..util import HasMemoized, memoized_property +from ..util.langhelpers import HasMemoized, memoized_property from .base import ( _class_to_mapper as _class_to_mapper, _state_mapper as _state_mapper, @@ -43,6 +43,7 @@ class Mapper(ORMFromClauseRole, ORMEntityColumnsClauseRole, sql_base.MemoizedHas polymorphic_map: Any include_properties: Any exclude_properties: Any + dispatch: Incomplete def __init__( self, class_, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi index 8b7e23033..370731d64 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from typing import Any, ClassVar from ..sql.traversals import HasCacheKey -from ..util import memoized_property +from ..util.langhelpers import memoized_property from . import base as orm_base log: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi index f6bef4909..bf80b919d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi @@ -1,7 +1,7 @@ from typing import Any from ..sql.base import CompileState, Options -from ..sql.dml import DeleteDMLState, UpdateDMLState +from ..sql.dml import DeleteDMLState, InsertDMLState, UpdateDMLState def save_obj(base_mapper, states, uowtransaction, single: bool = False) -> None: ... def post_update(base_mapper, states, uowtransaction, post_update_cols) -> None: ... @@ -15,6 +15,18 @@ class BulkUDCompileState(CompileState): @classmethod def orm_setup_cursor_result(cls, session, statement, params, execution_options, bind_arguments, result): ... +class ORMDMLState: + @classmethod + def get_entity_description(cls, statement): ... + @classmethod + def get_returning_column_descriptions(cls, statement): ... + +class ORMInsert(ORMDMLState, InsertDMLState): + @classmethod + def orm_pre_session_exec(cls, session, statement, params, execution_options, bind_arguments, is_reentrant_invoke): ... + @classmethod + def orm_setup_cursor_result(cls, session, statement, params, execution_options, bind_arguments, result): ... + class BulkORMUpdate(UpdateDMLState, BulkUDCompileState): mapper: Any extra_criteria_entities: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi index 30fd70110..c98765f8c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi @@ -19,6 +19,7 @@ class Query(_SelectFromElements, SupportsCloneAnnotations, HasPrefixes, HasSuffi logger: Any load_options: Any session: Any + dispatch: Incomplete def __init__(self, entities, session: Incomplete | None = None) -> None: ... @property def statement(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi index cac546132..b4608d3b3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from typing import Any, ClassVar, Generic, TypeVar from ..sql.operators import ColumnOperators -from ..util import memoized_property +from ..util.langhelpers import memoized_property from .interfaces import PropComparator, StrategizedProperty _T = TypeVar("_T") diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi index 4f007eae9..4cb8f62cf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from typing import Any -from ..util import memoized_property +from ..util.langhelpers import memoized_property class ScopedSessionMixin: def __call__(self, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi index 91ef8ebe2..4b2148e7c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi @@ -9,7 +9,7 @@ from ..engine.result import Result from ..engine.util import TransactionalContext from ..sql.elements import ColumnElement from ..sql.schema import Table -from ..util import MemoizedSlots, memoized_property +from ..util.langhelpers import MemoizedSlots, memoized_property from .query import Query _T = TypeVar("_T") @@ -93,6 +93,7 @@ class Session(_SessionClassMethods): enable_baked_queries: Any autocommit: bool twophase: Any + dispatch: Incomplete def __init__( self, bind: Incomplete | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/state.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/state.pyi index 60621f0bf..14d83915b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/state.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/state.pyi @@ -1,6 +1,6 @@ from typing import Any -from ..util import memoized_property +from ..util.langhelpers import memoized_property from . import interfaces class InstanceState(interfaces.InspectionAttrInfo): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi index 48321a09b..e4ee26f1d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi @@ -40,6 +40,7 @@ class Load(Generative, LoaderOption): def undefer_group(loadopt, name) -> Self: ... def with_expression(loadopt, key, expression) -> Self: ... def selectin_polymorphic(loadopt, classes) -> Self: ... + def baked_lazyload(loadopt, attr) -> Self: ... class _UnboundLoad(Load): path: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi index 0a22c6e17..0941b0c6b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi @@ -4,7 +4,7 @@ from collections.abc import Callable from typing import Any from .. import log -from ..util import memoized_property +from ..util.langhelpers import memoized_property reset_rollback: Any reset_commit: Any @@ -12,8 +12,10 @@ reset_none: Any class _ConnDialect: is_async: bool + has_terminate: bool def do_rollback(self, dbapi_connection) -> None: ... def do_commit(self, dbapi_connection) -> None: ... + def do_terminate(self, dbapi_connection) -> None: ... def do_close(self, dbapi_connection) -> None: ... def do_ping(self, dbapi_connection) -> None: ... def get_driver_connection(self, connection): ... @@ -24,6 +26,7 @@ class _AsyncConnDialect(_ConnDialect): class Pool(log.Identified): logging_name: Any echo: Any + dispatch: Incomplete def __init__( self, creator: Callable[[], DBAPIConnection], diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi index 88eb1fb2e..aee3c588a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi @@ -1,6 +1,6 @@ from typing import Any -from ..util import memoized_property +from ..util.langhelpers import memoized_property from .base import Pool class QueuePool(Pool): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/annotation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/annotation.pyi index e631cb48b..38c963023 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/annotation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/annotation.pyi @@ -1,13 +1,112 @@ -from typing import Any +from _typeshed import Incomplete +from typing import TypeVar -EMPTY_ANNOTATIONS: Any +from ..schema import Table +from ..util import immutabledict +from .compiler import _CompileLabel +from .crud import _multiparam_column +from .elements import ( + AnnotatedColumnElement as _ElementsAnnotatedColumnElement, + AsBoolean, + BinaryExpression, + BindParameter, + BooleanClauseList, + Case, + Cast, + ClauseList, + CollationClause, + CollectionAggregate, + ColumnClause, + ColumnElement, + Extract, + False_, + FunctionFilter, + Grouping, + IndexExpression, + Label, + NamedColumn, + Null, + Over, + Slice, + TableValuedColumn, + True_, + Tuple, + TypeCoerce, + UnaryExpression, + WithinGroup, + _label_reference, + _textual_label_reference, +) +from .functions import ( + AnsiFunction, + Function, + FunctionAsBinary, + FunctionElement, + GenericFunction, + OrderedSetAgg, + ReturnTypeFromArgs, + ScalarFunctionColumn, + array_agg, + char_length, + coalesce, + concat, + count, + cube, + cume_dist, + current_date, + current_time, + current_timestamp, + current_user, + dense_rank, + grouping_sets, + localtime, + localtimestamp, + max, + min, + mode, + next_value, + now, + percent_rank, + percentile_cont, + percentile_disc, + random, + rank, + rollup, + session_user, + sum, + sysdate, + user, +) +from .schema import Column +from .selectable import ( + CTE, + Alias, + AliasedReturnsRows, + AnnotatedFromClause as _SelectableAnnotatedFromClause, + Exists, + FromClause, + FromGrouping, + Join, + Lateral, + ScalarSelect, + Subquery, + TableClause, + TableSample, + TableValuedAlias, + Values, + _OffsetLimitParam, +) + +_T = TypeVar("_T") + +EMPTY_ANNOTATIONS: immutabledict[Incomplete, Incomplete] class SupportsAnnotations: ... class SupportsCloneAnnotations(SupportsAnnotations): ... class SupportsWrappingAnnotations(SupportsAnnotations): ... class Annotated: - __dict__: Any + __dict__: dict[str, Incomplete] def __init__(self, element, values) -> None: ... def __reduce__(self): ... def __hash__(self) -> int: ... @@ -15,4 +114,93 @@ class Annotated: @property def entity_namespace(self): ... -annotated_classes: Any +annotated_classes: dict[Incomplete, Incomplete] + +# Everything below is dynamically generated at runtime + +class AnnotatedFromClause(_SelectableAnnotatedFromClause, FromClause): ... +class AnnotatedAliasedReturnsRows(AnnotatedFromClause, AliasedReturnsRows): ... +class AnnotatedAlias(AnnotatedAliasedReturnsRows, Alias): ... +class AnnotatedColumnElement(_ElementsAnnotatedColumnElement, ColumnElement[_T]): ... +class AnnotatedFunctionElement(AnnotatedColumnElement[_T], FunctionElement): ... # type: ignore[misc] +class AnnotatedFunction(AnnotatedFunctionElement[_T], Function): ... # type: ignore[misc] +class AnnotatedGenericFunction(AnnotatedFunction[_T], GenericFunction): ... # type: ignore[misc] +class AnnotatedAnsiFunction(AnnotatedGenericFunction[_T], AnsiFunction): ... # type: ignore[misc] +class AnnotatedUnaryExpression(AnnotatedColumnElement[_T], UnaryExpression): ... +class AnnotatedAsBoolean(AnnotatedUnaryExpression[_T], AsBoolean): ... +class AnnotatedBinaryExpression(AnnotatedColumnElement[_T], BinaryExpression): ... +class AnnotatedBindParameter(AnnotatedColumnElement[_T], BindParameter[_T]): ... +class AnnotatedBooleanClauseList(AnnotatedColumnElement[_T], BooleanClauseList): ... +class AnnotatedCTE(AnnotatedAliasedReturnsRows, CTE): ... +class AnnotatedCase(AnnotatedColumnElement[_T], Case): ... +class AnnotatedCast(AnnotatedColumnElement[_T], Cast): ... +class AnnotatedClauseList(Annotated, ClauseList): ... +class AnnotatedCollationClause(AnnotatedColumnElement[_T], CollationClause): ... +class AnnotatedCollectionAggregate(AnnotatedUnaryExpression[_T], CollectionAggregate): ... +class AnnotatedNamedColumn(AnnotatedColumnElement[_T], NamedColumn): ... +class AnnotatedColumnClause(AnnotatedNamedColumn[_T], ColumnClause): ... +class AnnotatedColumn(AnnotatedColumnClause[_T], Column): ... +class AnnotatedExists(AnnotatedUnaryExpression[_T], Exists): ... +class AnnotatedExtract(AnnotatedColumnElement[_T], Extract): ... +class AnnotatedFalse_(AnnotatedColumnElement[_T], False_): ... +class AnnotatedFromGrouping(AnnotatedFromClause, FromGrouping): ... +class AnnotatedFunctionAsBinary(AnnotatedBinaryExpression[_T], FunctionAsBinary): ... +class AnnotatedFunctionFilter(AnnotatedColumnElement[_T], FunctionFilter): ... +class AnnotatedGrouping(AnnotatedColumnElement[_T], Grouping): ... +class AnnotatedIndexExpression(AnnotatedBinaryExpression[_T], IndexExpression): ... +class AnnotatedJoin(AnnotatedFromClause, Join): ... +class AnnotatedLabel(AnnotatedColumnElement[_T], Label): ... +class AnnotatedLateral(AnnotatedAliasedReturnsRows, Lateral): ... +class AnnotatedNull(AnnotatedColumnElement[_T], Null): ... +class AnnotatedOrderedSetAgg(AnnotatedGenericFunction[_T], OrderedSetAgg): ... # type: ignore[misc] +class AnnotatedOver(AnnotatedColumnElement[_T], Over): ... +class AnnotatedReturnTypeFromArgs(AnnotatedGenericFunction[_T], ReturnTypeFromArgs): ... # type: ignore[misc] +class AnnotatedScalarFunctionColumn(AnnotatedNamedColumn[_T], ScalarFunctionColumn): ... +class AnnotatedScalarSelect(AnnotatedGrouping[_T], ScalarSelect): ... +class AnnotatedSlice(AnnotatedColumnElement[_T], Slice): ... +class AnnotatedSubquery(AnnotatedAliasedReturnsRows, Subquery): ... +class AnnotatedTableClause(AnnotatedFromClause, TableClause): ... +class AnnotatedTable(AnnotatedTableClause, Table): ... +class AnnotatedTableSample(AnnotatedAliasedReturnsRows, TableSample): ... +class AnnotatedTableValuedAlias(AnnotatedAlias, TableValuedAlias): ... +class AnnotatedTableValuedColumn(AnnotatedNamedColumn[_T], TableValuedColumn): ... +class AnnotatedTrue_(AnnotatedColumnElement[_T], True_): ... +class AnnotatedTuple(AnnotatedColumnElement[_T], Tuple): ... +class AnnotatedTypeCoerce(AnnotatedColumnElement[_T], TypeCoerce): ... +class AnnotatedValues(AnnotatedFromClause, Values): ... +class AnnotatedWithinGroup(AnnotatedColumnElement[_T], WithinGroup): ... +class Annotated_CompileLabel(AnnotatedColumnElement[_T], _CompileLabel): ... +class Annotated_OffsetLimitParam(AnnotatedBindParameter[_T], _OffsetLimitParam): ... +class Annotated_label_reference(AnnotatedColumnElement[_T], _label_reference): ... +class Annotated_multiparam_column(AnnotatedColumnElement[_T], _multiparam_column[_T]): ... +class Annotated_textual_label_reference(AnnotatedColumnElement[_T], _textual_label_reference): ... +class Annotatedarray_agg(AnnotatedGenericFunction[_T], array_agg): ... # type: ignore[misc] +class Annotatedchar_length(AnnotatedGenericFunction[_T], char_length): ... # type: ignore[misc] +class Annotatedcoalesce(AnnotatedReturnTypeFromArgs[_T], coalesce): ... # type: ignore[misc] +class Annotatedconcat(AnnotatedGenericFunction[_T], concat): ... # type: ignore[misc] +class Annotatedcount(AnnotatedGenericFunction[_T], count): ... # type: ignore[misc] +class Annotatedcube(AnnotatedGenericFunction[_T], cube): ... # type: ignore[misc] +class Annotatedcume_dist(AnnotatedGenericFunction[_T], cume_dist): ... # type: ignore[misc] +class Annotatedcurrent_date(AnnotatedAnsiFunction[_T], current_date): ... # type: ignore[misc] +class Annotatedcurrent_time(AnnotatedAnsiFunction[_T], current_time): ... # type: ignore[misc] +class Annotatedcurrent_timestamp(AnnotatedAnsiFunction[_T], current_timestamp): ... # type: ignore[misc] +class Annotatedcurrent_user(AnnotatedAnsiFunction[_T], current_user): ... # type: ignore[misc] +class Annotateddense_rank(AnnotatedGenericFunction[_T], dense_rank): ... # type: ignore[misc] +class Annotatedgrouping_sets(AnnotatedGenericFunction[_T], grouping_sets): ... # type: ignore[misc] +class Annotatedlocaltime(AnnotatedAnsiFunction[_T], localtime): ... # type: ignore[misc] +class Annotatedlocaltimestamp(AnnotatedAnsiFunction[_T], localtimestamp): ... # type: ignore[misc] +class Annotatedmax(AnnotatedReturnTypeFromArgs[_T], max): ... # type: ignore[misc] +class Annotatedmin(AnnotatedReturnTypeFromArgs[_T], min): ... # type: ignore[misc] +class Annotatedmode(AnnotatedOrderedSetAgg[_T], mode): ... # type: ignore[misc] +class Annotatednext_value(AnnotatedGenericFunction[_T], next_value): ... # type: ignore[misc] +class Annotatednow(AnnotatedGenericFunction[_T], now): ... # type: ignore[misc] +class Annotatedpercent_rank(AnnotatedGenericFunction[_T], percent_rank): ... # type: ignore[misc] +class Annotatedpercentile_cont(AnnotatedOrderedSetAgg[_T], percentile_cont): ... # type: ignore[misc] +class Annotatedpercentile_disc(AnnotatedOrderedSetAgg[_T], percentile_disc): ... # type: ignore[misc] +class Annotatedrandom(AnnotatedGenericFunction[_T], random): ... # type: ignore[misc] +class Annotatedrank(AnnotatedGenericFunction[_T], rank): ... # type: ignore[misc] +class Annotatedrollup(AnnotatedGenericFunction[_T], rollup): ... # type: ignore[misc] +class Annotatedsession_user(AnnotatedAnsiFunction[_T], session_user): ... # type: ignore[misc] +class Annotatedsum(AnnotatedReturnTypeFromArgs[_T], sum): ... # type: ignore[misc] +class Annotatedsysdate(AnnotatedAnsiFunction[_T], sysdate): ... # type: ignore[misc] +class Annotateduser(AnnotatedAnsiFunction[_T], user): ... # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi index bf12c6fd3..9083c4f7f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi @@ -4,7 +4,7 @@ from typing import Any, ClassVar from typing_extensions import Self from .. import util -from ..util import HasMemoized, hybridmethod, memoized_property +from ..util.langhelpers import HasMemoized, hybridmethod, memoized_property from . import roles from .elements import ColumnElement from .traversals import ( @@ -110,7 +110,8 @@ class Executable(roles.StatementRole, Generative): class prefix_anon_map(dict[Any, Any]): def __missing__(self, key): ... -class SchemaEventTarget: ... +class SchemaEventTarget: + dispatch: Incomplete class SchemaVisitor(ClauseVisitor): __traverse_options__: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi index c10001f35..53762e3ac 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi @@ -1,10 +1,9 @@ from _typeshed import Incomplete from typing import NamedTuple -from sqlalchemy.util.langhelpers import EnsureKWArgType - -from ..util import memoized_property -from . import elements +from ..util import EnsureKWArgType, memoized_property +from .base import CompileState +from .elements import ColumnElement RESERVED_WORDS: Incomplete LEGAL_CHARACTERS: Incomplete @@ -45,6 +44,7 @@ class Compiled: schema_translate_map: Incomplete execution_options: Incomplete compile_state: Incomplete + dml_compile_state: CompileState | None cache_key: Incomplete dialect: Incomplete preparer: Incomplete @@ -76,7 +76,7 @@ class TypeCompiler(metaclass=EnsureKWArgType): def process(self, type_, **kw): ... def visit_unsupported_compilation(self, element, err, **kw) -> None: ... -class _CompileLabel(elements.ColumnElement[Incomplete]): +class _CompileLabel(ColumnElement[Incomplete]): __visit_name__: str element: Incomplete name: Incomplete @@ -107,6 +107,7 @@ class SQLCompiler(Compiled): update_prefetch: Incomplete postfetch_lastrowid: bool positiontup: Incomplete + positiontup_level: dict[str, int] | None inline: bool column_keys: Incomplete cache_key: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi index 891beefdf..518c88b84 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi @@ -13,6 +13,10 @@ class DMLState(CompileState): def __init__(self, statement, compiler, **kw) -> None: ... @property def dml_table(self): ... + @classmethod + def get_entity_description(cls, statement) -> dict[str, Incomplete]: ... + @classmethod + def get_returning_column_descriptions(cls, statement) -> list[dict[str, Incomplete]]: ... class InsertDMLState(DMLState): isinsert: bool @@ -43,6 +47,10 @@ class UpdateBase(roles.DMLRole, HasCTE, HasCompileState, DialectKWArgs, HasPrefi @property def exported_columns(self): ... def with_hint(self, text, selectable: Incomplete | None = None, dialect_name: str = "*") -> None: ... + @property + def entity_description(self): ... + @property + def returning_column_descriptions(self): ... class ValuesBase(UpdateBase): __visit_name__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi index 48be8c466..454f33396 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi @@ -3,7 +3,7 @@ from typing import Any, Generic, TypeVar from typing_extensions import Literal, Self from .. import util -from ..util import HasMemoized, memoized_property +from ..util.langhelpers import HasMemoized, memoized_property from . import operators, roles from .annotation import Annotated, SupportsWrappingAnnotations from .base import Executable, Immutable, SingletonConstant @@ -449,13 +449,13 @@ class quoted_name(util.MemoizedSlots, util.text_type): class AnnotatedColumnElement(Annotated): def __init__(self, element, values) -> None: ... - @memoized_property + @property # Should be @memoized_property, but that causes issues with regr_test def name(self): ... - @memoized_property + @property # Should be @memoized_property, but that causes issues with regr_test def table(self): ... - @memoized_property + @property # Should be @memoized_property, but that causes issues with regr_test def key(self): ... - @memoized_property + @property # Should be @memoized_property, but that causes issues with regr_test def info(self): ... class _truncated_label(quoted_name): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi index 22404d761..0f5bf12ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from typing import Any -from ..util import HasMemoized +from ..util.langhelpers import HasMemoized from .base import Executable, Generative from .elements import BinaryExpression, ColumnElement, NamedColumn from .selectable import FromClause, TableValuedAlias diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi index 3199c6d3d..2b5dac32c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from typing import Any -from ..util import memoized_property +from ..util.langhelpers import memoized_property from . import visitors from .base import DialectKWArgs, Executable, SchemaEventTarget from .elements import ColumnClause @@ -14,7 +14,7 @@ NULL_UNSPECIFIED: Any class SchemaItem(SchemaEventTarget, visitors.Visitable): __visit_name__: str create_drop_stringify_dialect: str - @memoized_property + @property # Should be @memoized_property, but that causes issues with regr_test def info(self): ... class Table(DialectKWArgs, SchemaItem, TableClause): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi index c9ddc58d3..fff056a84 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi @@ -3,7 +3,7 @@ from typing import Any from typing_extensions import Self from .. import util -from ..util import HasMemoized, memoized_property +from ..util.langhelpers import HasMemoized, memoized_property from . import roles, traversals, visitors from .annotation import Annotated, SupportsCloneAnnotations from .base import CacheableOptions, CompileState, Executable, Generative, HasCompileState, Immutable @@ -116,6 +116,14 @@ class Alias(roles.DMLTableRole, AliasedReturnsRows): class TableValuedAlias(Alias): __visit_name__: str + joins_implicitly: bool + def _init( + self, + selectable, + name: Incomplete | None = None, + table_value_type: Incomplete | None = None, + joins_implicitly: bool = False, + ) -> None: ... @HasMemoized.memoized_attribute def column(self): ... def alias(self, name: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi index 1bdec2ced..2538111c3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi @@ -370,9 +370,12 @@ class TableValueType(HasCacheKey, TypeEngine): class MatchType(Boolean): ... -NULLTYPE: Any -BOOLEANTYPE: Any -STRINGTYPE: Any -INTEGERTYPE: Any -MATCHTYPE: Any -TABLEVALUE: Any +NULLTYPE: NullType +BOOLEANTYPE: Boolean +STRINGTYPE: String +INTEGERTYPE: Integer +NUMERICTYPE: Numeric +MATCHTYPE: MatchType +TABLEVALUE: TableValueType +DATETIME_TIMEZONE: DateTime +TIME_TIMEZONE: Time diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi index 1f496655b..391287e82 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi @@ -1,7 +1,6 @@ from typing import Any -from .. import util -from ..util import HasMemoized +from ..util.langhelpers import HasMemoized, MemoizedSlots from .visitors import ExtendedInternalTraversal, InternalTraversal SKIP_TRAVERSE: Any @@ -106,7 +105,7 @@ class anon_map(dict[Any, Any]): def __init__(self) -> None: ... def __missing__(self, key): ... -class TraversalComparatorStrategy(InternalTraversal, util.MemoizedSlots): +class TraversalComparatorStrategy(InternalTraversal, MemoizedSlots): stack: Any cache: Any anon_map: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi index f5e384455..951f35774 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi @@ -4,6 +4,7 @@ from typing import Any, Generic, TypeVar from .. import util from . import operators from .base import SchemaEventTarget +from .sqltypes import Boolean from .visitors import Traversible, TraversibleType _T = TypeVar("_T") @@ -11,6 +12,7 @@ _T = TypeVar("_T") BOOLEANTYPE: Any INTEGERTYPE: Any NULLTYPE: Any +NUMERICTYPE: Any STRINGTYPE: Any MATCHTYPE: Any INDEXABLE: Any @@ -26,6 +28,7 @@ class TypeEngine(Traversible): def operate(self, op, *other, **kwargs): ... def reverse_operate(self, op, other, **kwargs): ... def __reduce__(self): ... + BOOLEANTYPE: Boolean hashable: bool comparator_factory: Any sort_key_function: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/__init__.pyi index a27e338db..c03a2b53b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/__init__.pyi @@ -39,6 +39,7 @@ from .config import ( combinations_list as combinations_list, db as db, fixture as fixture, + requirements, ) from .exclusions import ( db_spec as db_spec, @@ -69,6 +70,8 @@ from .util import ( ) from .warnings import assert_warnings as assert_warnings, warn_test_suite as warn_test_suite +requires = requirements + def against(*queries): ... crashes = skip diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi index 0d2920e93..e0e5f2bfa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi @@ -8,6 +8,7 @@ def expect_deprecated_20(*messages, **kw): ... def emits_warning_on(db, *messages): ... def uses_deprecated(*messages): ... def global_cleanup_assertions() -> None: ... +def int_within_variance(expected, received, variance) -> None: ... def eq_regex(a, b, msg: Incomplete | None = None) -> None: ... def eq_(a, b, msg: Incomplete | None = None) -> None: ... def ne_(a, b, msg: Incomplete | None = None) -> None: ... @@ -32,6 +33,8 @@ def eq_ignore_whitespace(a, b, msg: Incomplete | None = None) -> None: ... def assert_raises(except_cls, callable_, *args, **kw): ... def assert_raises_context_ok(except_cls, callable_, *args, **kw): ... def assert_raises_message(except_cls, msg, callable_, *args, **kwargs): ... +def assert_warns(except_cls, callable_, *args, **kwargs): ... +def assert_warns_message(except_cls, msg, callable_, *args, **kwargs): ... def assert_raises_message_context_ok(except_cls, msg, callable_, *args, **kwargs): ... class _ErrorContainer: diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi index c787b8c73..757a7ec36 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi @@ -13,6 +13,7 @@ ident: str def combinations(*comb, **kw): ... def combinations_list(arg_iterable, **kw): ... +def variation(argname, cases): ... def fixture(*arg, **kw): ... def get_current_test_name(): ... def mark_base_test_class(): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/mock.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/mock.pyi index e69de29bb..b20ebabfd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/mock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/mock.pyi @@ -0,0 +1 @@ +from unittest.mock import ANY as ANY, MagicMock as MagicMock, Mock as Mock, call as call, patch as patch diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/plugin_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/plugin_base.pyi index e0cdfbe59..8bb1c05c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/plugin_base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/plugin_base.pyi @@ -1,10 +1,9 @@ -import abc +from abc import ABC as ABC, ABCMeta, abstractmethod from typing import Any bootstrapped_as_sqlalchemy: bool log: Any py3k: Any -ABC = abc.ABC fixtures: Any engines: Any @@ -47,17 +46,17 @@ def before_test(test, test_module_name, test_class, test_name) -> None: ... def after_test(test) -> None: ... def after_test_fixtures(test) -> None: ... -class FixtureFunctions(ABC, metaclass=abc.ABCMeta): - @abc.abstractmethod +class FixtureFunctions(ABC, metaclass=ABCMeta): + @abstractmethod def skip_test_exception(self, *arg, **kw): ... - @abc.abstractmethod + @abstractmethod def combinations(self, *args, **kw): ... - @abc.abstractmethod + @abstractmethod def param_ident(self, *args, **kw): ... - @abc.abstractmethod + @abstractmethod def fixture(self, *arg, **kw): ... def get_current_test_name(self) -> None: ... - @abc.abstractmethod + @abstractmethod def mark_base_test_class(self): ... def set_fixture_functions(fixture_fn_class) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/pytestplugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/pytestplugin.pyi index bfdd0245e..757a2a0e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/pytestplugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/pytestplugin.pyi @@ -13,6 +13,11 @@ def collect_types_fixture() -> None: ... def pytest_sessionstart(session) -> None: ... def pytest_sessionfinish(session) -> None: ... def pytest_collection_finish(session): ... + +class XDistHooks: + def pytest_configure_node(self, node) -> None: ... + def pytest_testnodedown(self, node, error) -> None: ... + def pytest_collection_modifyitems(session, config, items): ... def pytest_pycollect_makeitem(collector, name, obj): ... def pytest_runtest_setup(item) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi index 8029cd4e9..ca85efb20 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi @@ -1,14 +1,13 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from collections.abc import Callable from logging import Logger from typing import Any, Generic, NoReturn, TypeVar -from typing_extensions import Self, TypeAlias +from typing_extensions import Self from ..engine.interfaces import Connectable from ..engine.url import URL from .config import Config, _ConfigProtocol -_Unused: TypeAlias = object _S = TypeVar("_S", bound=str) _U = TypeVar("_U", bound=URL) _F = TypeVar("_F", bound=Callable[..., str | URL | None]) @@ -34,30 +33,30 @@ class register(Generic[_F]): @register.init def generate_driver_url(url: _U, driver: str, query_str: str) -> _U | None: ... @register.init -def drop_all_schema_objects_pre_tables(cfg: _Unused, eng: _Unused) -> None: ... +def drop_all_schema_objects_pre_tables(cfg: Unused, eng: Unused) -> None: ... @register.init -def drop_all_schema_objects_post_tables(cfg: _Unused, eng: _Unused) -> None: ... +def drop_all_schema_objects_post_tables(cfg: Unused, eng: Unused) -> None: ... @register.init -def create_db(cfg: _Unused, eng: Connectable, ident: _Unused) -> NoReturn: ... +def create_db(cfg: Unused, eng: Connectable, ident: Unused) -> NoReturn: ... @register.init -def drop_db(cfg: _Unused, eng: Connectable, ident: _Unused) -> NoReturn: ... +def drop_db(cfg: Unused, eng: Connectable, ident: Unused) -> NoReturn: ... @register.init -def update_db_opts(db_url: _Unused, db_opts: _Unused) -> None: ... +def update_db_opts(db_url: Unused, db_opts: Unused) -> None: ... @register.init -def post_configure_engine(url: _Unused, engine: _Unused, follower_ident: _Unused) -> None: ... +def post_configure_engine(url: Unused, engine: Unused, follower_ident: Unused) -> None: ... @register.init def follower_url_from_main(url: _U, ident: str) -> _U: ... @register.init -def configure_follower(cfg: _Unused, ident: _Unused) -> None: ... +def configure_follower(cfg: Unused, ident: Unused) -> None: ... @register.init -def run_reap_dbs(url: _Unused, ident: _Unused) -> None: ... +def run_reap_dbs(url: Unused, ident: Unused) -> None: ... @register.init -def temp_table_keyword_args(cfg: _Unused, eng: Connectable) -> NoReturn: ... +def temp_table_keyword_args(cfg: Unused, eng: Connectable) -> NoReturn: ... @register.init -def prepare_for_drop_tables(config: _Unused, connection: _Unused) -> None: ... +def prepare_for_drop_tables(config: Unused, connection: Unused) -> None: ... @register.init -def stop_test_class_outside_fixtures(config: _Unused, db: _Unused, testcls: _Unused) -> None: ... +def stop_test_class_outside_fixtures(config: Unused, db: Unused, testcls: Unused) -> None: ... @register.init # type: ignore[type-var] # False-positive, _S is bound to str -def get_temp_table_name(cfg: _Unused, eng: _Unused, base_name: _S) -> _S: ... +def get_temp_table_name(cfg: Unused, eng: Unused, base_name: _S) -> _S: ... @register.init -def set_default_schema_on_connection(cfg: _ConfigProtocol, dbapi_connection: _Unused, schema_name: _Unused) -> NoReturn: ... +def set_default_schema_on_connection(cfg: _ConfigProtocol, dbapi_connection: Unused, schema_name: Unused) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/requirements.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/requirements.pyi index 5f0a97c1a..a3e4c1d11 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/requirements.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/requirements.pyi @@ -1,3 +1,5 @@ +from ..testing.exclusions import compound + class Requirements: ... class SuiteRequirements(Requirements): @@ -34,6 +36,8 @@ class SuiteRequirements(Requirements): @property def implicitly_named_constraints(self): ... @property + def unusual_column_name_characters(self) -> compound: ... + @property def subqueries(self): ... @property def offset(self): ... @@ -168,6 +172,8 @@ class SuiteRequirements(Requirements): @property def temp_table_names(self): ... @property + def has_temp_table(self) -> compound: ... + @property def temporary_tables(self): ... @property def temporary_views(self): ... @@ -198,10 +204,18 @@ class SuiteRequirements(Requirements): @property def datetime(self): ... @property + def datetime_timezone(self) -> compound: ... + @property + def time_timezone(self) -> compound: ... + @property + def datetime_implicit_bound(self) -> compound: ... + @property def datetime_microseconds(self): ... @property def timestamp_microseconds(self): ... @property + def timestamp_microseconds_implicit_bound(self) -> compound: ... + @property def datetime_historic(self): ... @property def date(self): ... @@ -326,6 +340,8 @@ class SuiteRequirements(Requirements): @property def cpython(self): ... @property + def is64bit(self) -> compound: ... + @property def patch_library(self): ... @property def non_broken_pickle(self): ... @@ -340,6 +356,8 @@ class SuiteRequirements(Requirements): @property def async_dialect(self): ... @property + def asyncio(self) -> compound: ... + @property def greenlet(self): ... @property def computed_columns(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi index 907653ac5..6e5ba05c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi @@ -36,4 +36,6 @@ class adict(dict[Any, Any]): def drop_all_tables_from_metadata(metadata, engine_or_connection) -> None: ... def drop_all_tables(engine, inspector, schema: Incomplete | None = None, include_names: Incomplete | None = None) -> None: ... +def total_size(o) -> int: ... def teardown_events(event_cls): ... +def count_cache_key_tuples(tup) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi index ae064446a..bcca02525 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi @@ -1,6 +1,16 @@ -from collections import defaultdict as defaultdict +import asyncio as asyncio +import pickle as pickle +import threading as threading +from abc import ABC as ABC +from builtins import callable as callable, next as next +from collections import defaultdict as defaultdict, namedtuple as namedtuple # noqa: Y024 # Actual import from contextlib import contextmanager as contextmanager -from functools import partial as partial, update_wrapper as update_wrapper +from datetime import timezone as timezone +from functools import partial as partial, reduce as reduce, update_wrapper as update_wrapper +from io import StringIO as StringIO +from itertools import zip_longest as zip_longest +from typing import TYPE_CHECKING as TYPE_CHECKING +from urllib.parse import parse_qsl as parse_qsl, quote_plus as quote_plus, unquote as unquote, unquote_plus as unquote_plus from ._collections import ( EMPTY_DICT as EMPTY_DICT, @@ -40,9 +50,6 @@ from ._collections import ( ) from ._preloaded import preload_module as preload_module, preloaded as preloaded from .compat import ( - ABC as ABC, - TYPE_CHECKING as TYPE_CHECKING, - StringIO as StringIO, arm as arm, b as b, b64decode as b64decode, @@ -50,7 +57,6 @@ from .compat import ( binary_type as binary_type, binary_types as binary_types, byte_buffer as byte_buffer, - callable as callable, cmp as cmp, cpython as cpython, dataclass_fields as dataclass_fields, @@ -64,13 +70,9 @@ from .compat import ( itertools_filter as itertools_filter, itertools_filterfalse as itertools_filterfalse, local_dataclass_fields as local_dataclass_fields, - namedtuple as namedtuple, - next as next, nullcontext as nullcontext, osx as osx, - parse_qsl as parse_qsl, perf_counter as perf_counter, - pickle as pickle, print_ as print_, py2k as py2k, py3k as py3k, @@ -81,25 +83,18 @@ from .compat import ( py311 as py311, py312 as py312, pypy as pypy, - quote_plus as quote_plus, + quote as quote, raise_ as raise_, raise_from_cause as raise_from_cause, - reduce as reduce, reraise as reraise, string_types as string_types, text_type as text_type, - threading as threading, - timezone as timezone, u as u, ue as ue, - unquote as unquote, - unquote_plus as unquote_plus, win32 as win32, with_metaclass as with_metaclass, - zip_longest as zip_longest, ) from .concurrency import ( - asyncio as asyncio, await_fallback as await_fallback, await_only as await_only, greenlet_spawn as greenlet_spawn, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi index 7fde0fc12..e487b34a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi @@ -88,11 +88,11 @@ class OrderedSet(set[_T], Generic[_T]): def union(self, other: Iterable[_S]) -> OrderedSet[_S | _T]: ... # type: ignore[override] __or__ = union # type: ignore[assignment] # pyright: ignore[reportGeneralTypeIssues] def intersection(self, other: Iterable[Any]) -> Self: ... # type: ignore[override] - __and__ = intersection + __and__ = intersection # type: ignore[assignment] def symmetric_difference(self, other: Iterable[_S]) -> OrderedSet[_S | _T]: ... __xor__ = symmetric_difference # type: ignore[assignment] # pyright: ignore[reportGeneralTypeIssues] def difference(self, other: Iterable[Any]) -> Self: ... # type: ignore[override] - __sub__ = difference + __sub__ = difference # type: ignore[assignment] def intersection_update(self, other: Iterable[Any]) -> Self: ... # type: ignore[override] __iand__ = intersection_update # type: ignore[assignment] def symmetric_difference_update(self, other: Iterable[_T]) -> Self: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/concurrency.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/concurrency.pyi index 7fe1879c1..dce9ae586 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/concurrency.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/concurrency.pyi @@ -1,4 +1,4 @@ -from _typeshed import Incomplete +import asyncio as asyncio from ._compat_py3k import asynccontextmanager as asynccontextmanager from ._concurrency_py3k import ( @@ -10,4 +10,4 @@ from ._concurrency_py3k import ( ) have_greenlet: bool -asyncio: Incomplete | None +greenlet_error: str | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi index 139b2b3ad..e816883e2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi @@ -7,6 +7,7 @@ from .langhelpers import ( ) SQLALCHEMY_WARN_20: bool +SILENCE_UBER_WARNING: bool def warn_deprecated(msg, version, stacklevel: int = 3, code: Incomplete | None = None) -> None: ... def warn_deprecated_limited(msg, args, version, stacklevel: int = 3, code: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi index c87bb2a0d..ad15feec9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import FileDescriptorOrPath, GenericPath, StrOrBytesPath +from _typeshed import FileDescriptorOrPath, GenericPath, ReadableBuffer, StrOrBytesPath from asyncio.events import AbstractEventLoop from collections.abc import Sequence from os import _ScandirIterator, stat_result @@ -68,8 +68,8 @@ if sys.platform != "win32": in_fd: int, offset: int, count: int, - headers: Sequence[bytes] = ..., - trailers: Sequence[bytes] = ..., + headers: Sequence[ReadableBuffer] = ..., + trailers: Sequence[ReadableBuffer] = ..., flags: int = ..., *, loop: AbstractEventLoop | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi index 8fc9681b7..aa1e01015 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/bs4/element.pyi @@ -1,4 +1,4 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, ReadableBuffer from collections.abc import Callable, Iterable, Iterator from re import Pattern from typing import Any, Generic, TypeVar, overload @@ -182,7 +182,7 @@ class NavigableString(str, PageElement): PREFIX: str SUFFIX: str known_xml: bool | None - def __new__(cls, value: str | bytes) -> Self: ... + def __new__(cls, value: str | ReadableBuffer) -> Self: ... def __copy__(self) -> Self: ... def __getnewargs__(self) -> tuple[str]: ... def output_ready(self, formatter: Formatter | str | None = "minimal") -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/_cffi_backend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/_cffi_backend.pyi index 5724b092d..89130d0b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/_cffi_backend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/_cffi_backend.pyi @@ -3,7 +3,7 @@ import types from _typeshed import Incomplete, ReadableBuffer, WriteableBuffer from collections.abc import Callable, Hashable from typing import Any, ClassVar, Protocol, TypeVar, overload -from typing_extensions import Literal, TypeAlias, final +from typing_extensions import Literal, SupportsIndex, TypeAlias, final _T = TypeVar("_T") @@ -72,7 +72,7 @@ class _CDataBase: def __exit__(self, type: type[BaseException] | None, value: BaseException | None, traceback: types.TracebackType | None): ... def __float__(self) -> float: ... def __ge__(self, other): ... - def __getitem__(self, index): ... + def __getitem__(self, index: SupportsIndex | slice): ... def __gt__(self, other): ... def __hash__(self) -> int: ... def __int__(self) -> int: ... @@ -83,7 +83,7 @@ class _CDataBase: def __ne__(self, other): ... def __radd__(self, other): ... def __rsub__(self, other): ... - def __setitem__(self, index, object) -> None: ... + def __setitem__(self, index: SupportsIndex | slice, object: Incomplete) -> None: ... def __sub__(self, other): ... @final diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi index e1c748dab..79dc7130d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi @@ -25,5 +25,5 @@ class UniversalDetector: logger: Logger def __init__(self, lang_filter: int = 31) -> None: ... def reset(self) -> None: ... - def feed(self, byte_str: bytes) -> None: ... + def feed(self, byte_str: bytes | bytearray) -> None: ... def close(self) -> _FinalResultType: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml index 3ea18392d..6c6e91faf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml @@ -1 +1,2 @@ version = "1.3.*" +obsolete_since = "2.0.0" # Released on 2023-04-27 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/io.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/io.pyi index f99949d96..39efb9682 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/io.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/io.pyi @@ -25,10 +25,10 @@ class Input(TransformSpec): component_type: ClassVar[str] default_source_path: ClassVar[str | None] def read(self) -> Any: ... - def decode(self, data: str | bytes) -> str: ... + def decode(self, data: str | bytes | bytearray) -> str: ... coding_slug: ClassVar[Pattern[bytes]] byte_order_marks: ClassVar[tuple[tuple[bytes, str], ...]] - def determine_encoding_from_data(self, data: str | bytes) -> str | None: ... + def determine_encoding_from_data(self, data: str | bytes | bytearray) -> str | None: ... def isatty(self) -> bool: ... class Output(TransformSpec): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi index 30c32ed0c..33f36fe20 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi @@ -1,9 +1,10 @@ +import sys import xml.dom.minidom from _typeshed import Incomplete from abc import abstractmethod -from collections.abc import Callable, Generator, Iterable, Sequence +from collections.abc import Callable, Generator, Iterable, Iterator, Sequence from typing import Any, ClassVar, Protocol, TypeVar, overload -from typing_extensions import Literal, Self +from typing_extensions import Literal, Self, SupportsIndex from docutils.transforms import Transformer @@ -79,9 +80,13 @@ class Node: class Element(Node): children: list[Node] + rawsource: str def __init__(self, rawsource: str = "", *children: Node, **attributes): ... def __len__(self) -> int: ... def __contains__(self, key: str | Node) -> bool: ... + # '__iter__' is added as workaround, since mypy doesn't support classes that are iterable via '__getitem__' + # see https://github.com/python/typeshed/pull/10099#issuecomment-1528789395 + def __iter__(self) -> Iterator[Node]: ... @overload def __getitem__(self, key: str) -> Any: ... @overload @@ -102,8 +107,14 @@ class Element(Node): def deepcopy(self) -> Self: ... def pformat(self, indent: str = " ", level: int = 0) -> str: ... def astext(self) -> str: ... + def index(self, item: Node, start: int = 0, stop: int = sys.maxsize) -> int: ... + def remove(self, item: Node) -> None: ... + def insert(self, index: SupportsIndex, item: Node | Iterable[Node] | None) -> None: ... def __getattr__(self, __name: str) -> Incomplete: ... +class TextElement(Element): + def __init__(self, rawsource: str = "", text: str = "", *children: Node, **attributes) -> None: ... + class Text(Node, str): tagname: ClassVar[str] children: tuple[()] @@ -120,6 +131,8 @@ class Text(Node, str): def lstrip(self, chars: str | None = None) -> str: ... class Structural: ... +class Body: ... +class General(Body): ... class Root: ... class document(Root, Structural, Element): @@ -130,6 +143,8 @@ class document(Root, Structural, Element): def astext(self) -> str: ... def __getattr__(self, __name: str) -> Incomplete: ... +class paragraph(General, TextElement): ... + class NodeVisitor: def __init__(self, document: document): ... def __getattr__(self, __name: str) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/METADATA.toml index c83645ebf..78c0762f0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.6.1" +version = "2.7.4" requires = ["types-Pillow>=9.2.0"] [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/__init__.pyi index 250fb72a4..9d17a7f7e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/__init__.pyi @@ -1,7 +1,7 @@ from pathlib import Path -from .enums import Align as Align, XPos as XPos, YPos as YPos -from .fpdf import FPDF as FPDF, TitleStyle as TitleStyle +from .enums import Align as Align, TextMode as TextMode, XPos as XPos, YPos as YPos +from .fpdf import FPDF as FPDF, FPDFException as FPDFException, TitleStyle as TitleStyle from .html import HTML2FPDF as HTML2FPDF, HTMLMixin as HTMLMixin from .prefs import ViewerPreferences as ViewerPreferences from .template import FlexTemplate as FlexTemplate, Template as Template @@ -15,6 +15,7 @@ __all__ = [ "__version__", "__license__", "FPDF", + "FPDFException", "Align", "XPos", "YPos", diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/deprecation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/deprecation.pyi index 91885bd3d..89ab11760 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/deprecation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/deprecation.pyi @@ -1,5 +1,7 @@ from types import ModuleType +from typing import Any, NoReturn class WarnOnDeprecatedModuleAttributes(ModuleType): - def __getattr__(self, name: str): ... - def __setattr__(self, name: str, value) -> None: ... + def __call__(self) -> NoReturn: ... + def __getattr__(self, name: str) -> Any: ... + def __setattr__(self, name: str, value: Any) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/encryption.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/encryption.pyi index 1888d6f3b..45349dae5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/encryption.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/encryption.pyi @@ -1,5 +1,6 @@ from _typeshed import Incomplete, SupportsLenAndGetItem from collections.abc import Generator, Iterable +from logging import Logger from typing import ClassVar, Protocol, TypeVar from typing_extensions import TypeAlias @@ -10,6 +11,8 @@ from .syntax import Name, PDFObject _Key: TypeAlias = SupportsLenAndGetItem[int] _T_co = TypeVar("_T_co", covariant=True) +LOGGER: Logger + import_error: ImportError | None class _SupportsGetItem(Protocol[_T_co]): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/enums.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/enums.pyi index 9f82c6008..112de3d17 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/enums.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/enums.pyi @@ -15,6 +15,14 @@ class CoerciveIntEnum(IntEnum): @classmethod def coerce(cls, value: Self | str | int) -> Self: ... +class CoerciveIntFlag(IntFlag): + @classmethod + def coerce(cls, value: Self | str | int) -> Self: ... + +class WrapMode(CoerciveEnum): + WORD: str + CHAR: str + class CharVPos(CoerciveEnum): SUP: str SUB: str @@ -29,6 +37,34 @@ class Align(CoerciveEnum): R: str J: str +class TextEmphasis(CoerciveIntFlag): + B: int + I: int + U: int + + @property + def style(self) -> str: ... + +class MethodReturnValue(CoerciveIntFlag): + PAGE_BREAK: int + LINES: int + HEIGHT: int + +class TableBordersLayout(CoerciveEnum): + ALL: str + NONE: str + INTERNAL: str + MINIMAL: str + HORIZONTAL_LINES: str + NO_HORIZONTAL_LINES: str + SINGLE_TOP_LINE: str + +class TableCellFillMode(CoerciveEnum): + NONE: str + ALL: str + ROWS: str + COLUMNS: str + class RenderStyle(CoerciveEnum): D: str F: str @@ -200,5 +236,3 @@ class EncryptionMethod(Enum): NO_ENCRYPTION: int RC4: int AES_128: int - -__pdoc__: dict[str, bool] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fonts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fonts.pyi index 5a894fff6..b559d9f76 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fonts.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fonts.pyi @@ -1,4 +1,28 @@ -from typing import Any +import dataclasses +from _typeshed import Incomplete +from dataclasses import dataclass -courier: Any -fpdf_charwidths: Any +from .drawing import DeviceGray, DeviceRGB, Number +from .enums import TextEmphasis + +@dataclass +class FontFace: + family: str | None + emphasis: TextEmphasis | None + size_pt: int | None + color: int | tuple[Number, Number, Number] | DeviceGray | DeviceRGB | None + fill_color: int | tuple[Number, Number, Number] | DeviceGray | DeviceRGB | None + + def __init__( + self, + family: str | None = None, + emphasis: Incomplete | None = None, + size_pt: int | None = None, + color: int | tuple[Number, Number, Number] | DeviceGray | DeviceRGB | None = None, + fill_color: int | tuple[Number, Number, Number] | DeviceGray | DeviceRGB | None = None, + ) -> None: ... + + replace = dataclasses.replace + +COURIER_FONT: dict[str, int] +CORE_FONTS_CHARWIDTHS: dict[str, dict[str, int]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi index 1c65fb915..da49d9599 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi @@ -1,5 +1,5 @@ import datetime -from _typeshed import Incomplete, StrPath +from _typeshed import Incomplete, StrPath, Unused from collections.abc import Callable, Iterable, Sequence from contextlib import _GeneratorContextManager from io import BytesIO @@ -12,29 +12,37 @@ from fpdf import ViewerPreferences from PIL import Image from .annotations import AnnotationDict, PDFEmbeddedFile -from .drawing import DrawingContext, PaintedPath +from .drawing import DeviceGray, DeviceRGB, DrawingContext, PaintedPath from .enums import ( Align, AnnotationFlag, AnnotationName, Corner, FileAttachmentAnnotationName, + MethodReturnValue, PageLayout, PathPaintRule, RenderStyle, + TableBordersLayout, + TableCellFillMode, TextMarkupType, TextMode as TextMode, + WrapMode as WrapMode, XPos as XPos, YPos as YPos, ) +from .errors import FPDFException as FPDFException +from .fonts import FontFace +from .graphics_state import GraphicsStateMixin from .html import HTML2FPDF -from .output import PDFPage +from .output import OutputProducer, PDFPage from .recorder import FPDFRecorder from .structure_tree import StructureTreeBuilder from .syntax import DestinationXYZ +from .table import Table from .util import _Unit -__all__ = ["FPDF", "XPos", "YPos", "get_page_format", "TextMode", "TitleStyle", "PAGE_FORMATS"] +__all__ = ["FPDF", "XPos", "YPos", "get_page_format", "ImageInfo", "TextMode", "TitleStyle", "PAGE_FORMATS"] _Orientation: TypeAlias = Literal["", "portrait", "p", "P", "landscape", "l", "L"] _Format: TypeAlias = Literal["", "a3", "A3", "a4", "A4", "a5", "A5", "letter", "Letter", "legal", "Legal"] @@ -42,15 +50,32 @@ _FontStyle: TypeAlias = Literal["", "B", "I"] _FontStyles: TypeAlias = Literal["", "B", "I", "U", "BU", "UB", "BI", "IB", "IU", "UI", "BIU", "BUI", "IBU", "IUB", "UBI", "UIB"] PAGE_FORMATS: dict[_Format, tuple[float, float]] -class TitleStyle(NamedTuple): - font_family: str | None = ... - font_style: str | None = ... - font_size_pt: int | None = ... - color: int | tuple[int, int, int] | None = ... - underline: bool = ... - t_margin: int | None = ... - l_margin: int | None = ... - b_margin: int | None = ... +class ImageInfo(dict[str, Any]): + @property + def width(self) -> int: ... + @property + def height(self) -> int: ... + @property + def rendered_width(self) -> int: ... + @property + def rendered_height(self) -> int: ... + +class TitleStyle(FontFace): + t_margin: int | None + l_margin: int | None + b_margin: int | None + + def __init__( + self, + font_family: str | None = None, + font_style: str | None = None, + font_size_pt: int | None = None, + color: int | tuple[int, int, int] | None = None, + underline: bool = False, + t_margin: int | None = None, + l_margin: int | None = None, + b_margin: int | None = None, + ) -> None: ... class ToCPlaceholder(NamedTuple): render_function: Callable[[FPDF, Any], object] @@ -70,7 +95,7 @@ def get_page_format(format: _Format | tuple[float, float], k: float | None = Non _Font: TypeAlias = dict[str, Any] _Image: TypeAlias = dict[str, Any] -class FPDF: +class FPDF(GraphicsStateMixin): MARKDOWN_BOLD_MARKER: ClassVar[str] MARKDOWN_ITALICS_MARKER: ClassVar[str] MARKDOWN_UNDERLINE_MARKER: ClassVar[str] @@ -104,20 +129,7 @@ class FPDF: font_aliases: dict[str, str] k: float - font_family: str - font_style: str - font_size_pt: float - font_stretching: float - char_spacing: float - underline: bool - current_font: _Font - draw_color: str - fill_color: str - text_color: str page_background: Incomplete | None - dash_pattern: dict[str, int] # TODO: TypedDict - line_width: float - text_mode: TextMode dw_pt: float dh_pt: float @@ -148,15 +160,14 @@ class FPDF: format: _Format | tuple[float, float] = "A4", font_cache_dir: Literal["DEPRECATED"] = "DEPRECATED", ) -> None: ... - # The following definition crashes stubtest 0.991, but seems to be fixed - # in later versions. + # The following definition crashes stubtest 1.1.1. # def set_encryption( - # self, - # owner_password: str, - # user_password: str | None = None, - # encryption_method: EncryptionMethod | str = ..., - # permissions: AccessPermission = ..., - # encrypt_metadata: bool = False, + # self, + # owner_password: str, + # user_password: str | None = None, + # encryption_method: EncryptionMethod | str = ..., + # permissions: AccessPermission = ..., + # encrypt_metadata: bool = False, # ) -> None: ... # args and kwargs are passed to HTML2FPDF_CLASS constructor. def write_html(self, text: str, *args: Any, **kwargs: Any) -> None: ... @@ -312,6 +323,7 @@ class FPDF: def set_font_size(self, size: float) -> None: ... def set_char_spacing(self, spacing: float) -> None: ... def set_stretching(self, stretching: float) -> None: ... + def set_fallback_fonts(self, fallback_fonts: Iterable[str], exact_match: bool = True) -> None: ... def add_link(self, y: float = 0, x: float = 0, page: int = -1, zoom: float | Literal["null"] = "null") -> int: ... def set_link(self, link, y: float = 0, x: float = 0, page: int = -1, zoom: float | Literal["null"] = "null") -> None: ... def link( @@ -420,6 +432,7 @@ class FPDF: new_x: XPos | str = ..., new_y: YPos | str = ..., ) -> bool: ... + def get_fallback_font(self, char: str, style: str = "") -> str | None: ... def will_page_break(self, height: float) -> bool: ... def multi_cell( self, @@ -437,8 +450,13 @@ class FPDF: print_sh: bool = False, new_x: XPos | str = ..., new_y: YPos | str = ..., + wrapmode: WrapMode = ..., + dry_run: bool = False, + output: MethodReturnValue | str | int = ..., ): ... - def write(self, h: float | None = None, txt: str = "", link: str = "", print_sh: bool = False) -> None: ... + def write( + self, h: float | None = None, txt: str = "", link: str = "", print_sh: bool = False, wrapmode: WrapMode = ... + ) -> bool: ... def image( self, name: str | Image.Image | BytesIO | StrPath, @@ -451,17 +469,17 @@ class FPDF: title: str | None = None, alt_text: str | None = None, dims: tuple[float, float] | None = None, + keep_aspect_ratio: bool = False, ) -> _Image: ... + def preload_image( + self, name: str | Image.Image | BytesIO, dims: tuple[float, float] | None = None + ) -> tuple[str, Any, ImageInfo]: ... def ln(self, h: float | None = None) -> None: ... def get_x(self) -> float: ... def set_x(self, x: float) -> None: ... def get_y(self) -> float: ... def set_y(self, y: float) -> None: ... def set_xy(self, x: float, y: float) -> None: ... - @overload - def output(self, name: Literal[""] = "") -> bytearray: ... # type: ignore[misc] - @overload - def output(self, name: str) -> None: ... def normalize_text(self, txt: str) -> str: ... def sign_pkcs12( self, @@ -506,3 +524,32 @@ class FPDF: level6: TitleStyle | None = None, ) -> None: ... def start_section(self, name: str, level: int = 0, strict: bool = True) -> None: ... + def use_font_face(self, font_face: FontFace) -> _GeneratorContextManager[None]: ... + def table( + self, + rows: Iterable[Incomplete] = (), + *, + align: str | Align = "CENTER", + borders_layout: str | TableBordersLayout = ..., + cell_fill_color: int | tuple[Incomplete, ...] | DeviceGray | DeviceRGB | None = None, + cell_fill_mode: str | TableCellFillMode = ..., + col_widths: int | tuple[int, ...] | None = None, + first_row_as_headings: bool = True, + headings_style: FontFace = ..., + line_height: int | None = None, + markdown: bool = False, + text_align: str | Align = "JUSTIFY", + width: int | None = None, + ) -> _GeneratorContextManager[Table]: ... + @overload + def output( # type: ignore[misc] + self, + name: Literal[""] | None = "", + dest: Unused = "", + linearize: bool = False, + output_producer_class: Callable[[FPDF], OutputProducer] = ..., + ) -> None: ... + @overload + def output( + self, name: str, dest: Unused = "", linearize: bool = False, output_producer_class: Callable[[FPDF], OutputProducer] = ... + ) -> bytearray: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/graphics_state.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/graphics_state.pyi index a364a5275..029b4f6bf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/graphics_state.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/graphics_state.pyi @@ -1,5 +1,7 @@ from typing import Any, ClassVar +from fpdf.fonts import FontFace + from .drawing import DeviceGray, DeviceRGB from .enums import TextMode @@ -100,3 +102,4 @@ class GraphicsStateMixin: def denom_lift(self): ... @denom_lift.setter def denom_lift(self, v) -> None: ... + def font_face(self) -> FontFace: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/html.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/html.pyi index 1cd38573f..08516948d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/html.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/html.pyi @@ -1,5 +1,5 @@ -from _typeshed import Incomplete, Unused -from collections.abc import Callable +from _typeshed import Incomplete, SupportsKeysAndGetItem, Unused +from collections.abc import Callable, Iterable from html.parser import HTMLParser from logging import Logger from re import Match, Pattern @@ -10,7 +10,6 @@ from fpdf import FPDF __author__: Final[str] __copyright__: Final[str] -__license__: Final[str] LOGGER: Logger BULLET_WIN1252: Final[str] @@ -26,6 +25,7 @@ def color_as_decimal(color: str | None = "#000000") -> tuple[int, int, int] | No class HTML2FPDF(HTMLParser): HTML_UNCLOSED_TAGS: ClassVar[tuple[str, ...]] + pdf: Incomplete image_map: Incomplete li_tag_indent: Incomplete @@ -54,10 +54,16 @@ class HTML2FPDF(HTMLParser): theader_out: bool table_row_height: int heading_level: Incomplete - heading_sizes: Incomplete + heading_sizes: dict[str, int] heading_above: float heading_below: float + pre_code_font: str warn_on_tags_not_matching: bool + + # Not initialized in __init__: + font_face: Incomplete + h: float + def __init__( self, pdf: FPDF, @@ -66,23 +72,14 @@ class HTML2FPDF(HTMLParser): dd_tag_indent: int = 10, table_line_separators: bool = False, ul_bullet_char: str = "\x95", - heading_sizes: Incomplete | None = None, + heading_sizes: SupportsKeysAndGetItem[str, int] | Iterable[tuple[str, int]] | None = None, + pre_code_font: str = "courier", warn_on_tags_not_matching: bool = True, **_: Unused, ): ... - def width2unit(self, length): ... def handle_data(self, data) -> None: ... - def box_shadow(self, w, h, bgcolor) -> None: ... - def output_table_header(self) -> None: ... - tfooter_out: bool - def output_table_footer(self) -> None: ... - def output_table_sep(self) -> None: ... - font_face: Incomplete - table_offset: Incomplete def handle_starttag(self, tag, attrs) -> None: ... - tbody: Incomplete def handle_endtag(self, tag) -> None: ... - h: Incomplete def set_font(self, face: Incomplete | None = None, size: Incomplete | None = None) -> None: ... def set_style(self, tag: Incomplete | None = None, enable: bool = False) -> None: ... def set_text_color(self, r: Incomplete | None = None, g: int = 0, b: int = 0) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/image_parsing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/image_parsing.pyi index 352086bf7..acf3b6758 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/image_parsing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/image_parsing.pyi @@ -1,15 +1,37 @@ from _typeshed import Incomplete +from io import BytesIO +from logging import Logger +from types import TracebackType from typing import Any from typing_extensions import Literal, TypeAlias -from PIL.Image import Resampling +from PIL import Image _ImageFilter: TypeAlias = Literal["AUTO", "FlateDecode", "DCTDecode", "JPXDecode"] -RESAMPLE: Resampling +RESAMPLE: Image.Resampling +LOGGER: Logger SUPPORTED_IMAGE_FILTERS: tuple[_ImageFilter, ...] +TIFFBitRevTable: list[int] def load_image(filename): ... +def is_iccp_valid(iccp, filename) -> bool: ... # Returned dict could be typed as a TypedDict. -def get_img_info(img, image_filter: _ImageFilter = "AUTO", dims: Incomplete | None = None) -> dict[str, Any]: ... +def get_img_info( + filename, img: BytesIO | Image.Image | None = None, image_filter: _ImageFilter = "AUTO", dims: Incomplete | None = None +) -> dict[str, Any]: ... + +class temp_attr: + obj: Any + field: str + value: Any + exists: bool # defined after __enter__ is called + def __init__(self, obj: Any, field: str, value: Any) -> None: ... + def __enter__(self) -> None: ... + def __exit__( + self, exctype: type[BaseException] | None, excinst: BaseException | None, exctb: TracebackType | None + ) -> None: ... + +def ccitt_payload_location_from_pil(img: Image.Image) -> tuple[int, int]: ... +def transcode_monochrome(img: Image.Image): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/line_break.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/line_break.pyi index 27888c13d..55a601e09 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/line_break.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/line_break.pyi @@ -2,6 +2,8 @@ from _typeshed import Incomplete from collections.abc import Sequence from typing import NamedTuple +from .enums import WrapMode + SOFT_HYPHEN: str HYPHEN: str SPACE: str @@ -101,16 +103,20 @@ class CurrentLine: original_character_index: int, url: str | None = None, ): ... + def trim_trailing_spaces(self) -> None: ... def manual_break(self, justify: bool = False, trailing_nl: bool = False): ... def automatic_break_possible(self): ... def automatic_break(self, justify: bool): ... class MultiLineBreak: - styled_text_fragments: Incomplete - justify: Incomplete - print_sh: Incomplete + styled_text_fragments: Sequence[Fragment] + justify: bool + print_sh: bool + wrap_mode: WrapMode fragment_index: int character_index: int - idx_last_forced_break: Incomplete - def __init__(self, styled_text_fragments: Sequence[Fragment], justify: bool = False, print_sh: bool = False) -> None: ... + idx_last_forced_break: int | None + def __init__( + self, styled_text_fragments: Sequence[Fragment], justify: bool = False, print_sh: bool = False, wrapmode: WrapMode = ... + ) -> None: ... def get_line_of_given_width(self, maximum_width: float, wordsplit: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/output.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/output.pyi index 7dc1776ec..1b01fb9fc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/output.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/output.pyi @@ -5,7 +5,7 @@ from typing_extensions import Final from .annotations import AnnotationDict from .encryption import StandardSecurityHandler -from .syntax import Name, PDFArray, PDFContentStream, PDFObject +from .syntax import Name, PDFArray, PDFContentStream, PDFObject, PDFString LOGGER: Logger ZOOM_CONFIGS: Final[dict[str, tuple[str, ...]]] @@ -53,10 +53,9 @@ class PDFFontDescriptor(PDFObject): def __init__(self, ascent, descent, cap_height, flags, font_b_box, italic_angle, stem_v, missing_width) -> None: ... class CIDSystemInfo(PDFObject): - registry: str - ordering: str - supplement: Incomplete - def __init__(self, registry: str | None, ordering: str | None, supplement) -> None: ... + registry: PDFString + ordering: PDFString + supplement: int class PDFInfo(PDFObject): title: str | None @@ -145,6 +144,11 @@ class PDFXObject(PDFContentStream): decode_parms: Incomplete | None = None, ) -> None: ... +class PDFICCPObject(PDFContentStream): + n: Incomplete + alternate: Name + def __init__(self, contents: bytes, n, alternate: str) -> None: ... + class PDFPage(PDFObject): type: Name contents: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/prefs.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/prefs.pyi index 8317b3434..bd9f243e8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/prefs.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/prefs.pyi @@ -21,4 +21,4 @@ class ViewerPreferences: def non_full_screen_page_mode(self): ... @non_full_screen_page_mode.setter def non_full_screen_page_mode(self, page_mode) -> None: ... - def serialize(self): ... + def serialize(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/sign.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/sign.pyi index 8130207e0..a34fbe831 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/sign.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/sign.pyi @@ -17,6 +17,6 @@ class Signature: m: Incomplete | None = None, reason: Incomplete | None = None, ) -> None: ... - def serialize(self): ... + def serialize(self) -> str: ... def sign_content(signer, buffer, key, cert, extra_certs, hashalgo, sign_time): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/syntax.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/syntax.pyi index 7e65e3b7c..3671c05ae 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/syntax.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/syntax.pyi @@ -1,8 +1,9 @@ +import datetime from _typeshed import Incomplete, SupportsItems from abc import ABC, abstractmethod from re import Pattern from typing import ClassVar, Generic, TypeVar -from typing_extensions import Literal +from typing_extensions import Literal, Self from .encryption import StandardSecurityHandler @@ -16,7 +17,7 @@ def create_dictionary_string( field_join: str = "\n", key_value_join: str = " ", has_empty_fields: bool = False, -): ... +) -> str: ... def create_list_string(list_): ... def iobj_ref(n): ... def create_stream( @@ -30,7 +31,6 @@ class Name(str): def serialize(self) -> str: ... class PDFObject: - def __init__(self) -> None: ... @property def id(self) -> int: ... @id.setter @@ -44,13 +44,22 @@ class PDFContentStream(PDFObject): filter: Name | None length: int def __init__(self, contents: bytes, compress: bool = False) -> None: ... - def encrypt(self, security_handler: StandardSecurityHandler) -> None: ... def build_obj_dict(key_values: SupportsItems[str, Incomplete]) -> dict[str, str]: ... def camel_case(snake_case: str) -> str: ... class PDFString(str): USE_HEX_ENCODING: ClassVar[bool] + encrypt: bool + def __new__(cls, content: str, encrypt: bool = False) -> Self: ... + def serialize(self) -> str: ... + +class PDFDate: + date: datetime.datetime + with_tz: bool + encrypt: bool + + def __init__(self, date: datetime.datetime, with_tz: bool = False, encrypt: bool = False) -> None: ... def serialize(self) -> str: ... class PDFArray(list[_T], Generic[_T]): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/table.pyi new file mode 100644 index 000000000..4586a178d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/table.pyi @@ -0,0 +1,70 @@ +from _typeshed import Incomplete +from collections.abc import Iterable +from dataclasses import dataclass +from io import BytesIO +from typing_extensions import Literal + +from PIL import Image + +from .drawing import DeviceGray, DeviceRGB +from .enums import Align, TableBordersLayout, TableCellFillMode +from .fonts import FontFace +from .fpdf import FPDF + +DEFAULT_HEADINGS_STYLE: FontFace + +@dataclass(frozen=True) +class RowLayoutInfo: + height: int + triggers_page_jump: bool + +class Table: + rows: list[Row] + + def __init__( + self, + fpdf: FPDF, + rows: Iterable[str] = (), + *, + align: str | Align = "CENTER", + borders_layout: str | TableBordersLayout = ..., + cell_fill_color: int | tuple[Incomplete, ...] | DeviceGray | DeviceRGB | None = None, + cell_fill_mode: str | TableCellFillMode = ..., + col_widths: int | tuple[int, ...] | None = None, + first_row_as_headings: bool = True, + headings_style: FontFace = ..., + line_height: int | None = None, + markdown=False, + text_align: str | Align = "JUSTIFY", + width: int | None = None, + ) -> None: ... + def row(self, cells: Iterable[str] = ()) -> Row: ... + def render(self) -> None: ... + def get_cell_border(self, i, j) -> str | Literal[0, 1]: ... + +class Row: + cells: list[Cell] + style: FontFace + def __init__(self, fpdf: FPDF) -> None: ... + @property + def cols_count(self) -> int: ... + def cell( + self, + text: str = "", + align: str | Align | None = None, + style: FontFace | None = None, + img: str | Image.Image | BytesIO | None = None, + img_fill_width: bool = False, + colspan: int = 1, + ) -> Cell: ... + +@dataclass +class Cell: + text: str + align: str | Align | None + style: FontFace | None + img: str | None + img_fill_width: bool + colspan: int + + def write(self, text, align: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/util.pyi index 7b33a2bce..d078ec0ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/util.pyi @@ -1,15 +1,13 @@ -import datetime from collections.abc import Iterable -from typing import Any -from typing_extensions import Literal, TypeAlias +from typing import Any, AnyStr +from typing_extensions import Final, Literal, TypeAlias _Unit: TypeAlias = Literal["pt", "mm", "cm", "in"] +PIL_MEM_BLOCK_SIZE_IN_MIB: Final = 16 + def buffer_subst(buffer: bytearray, placeholder: str, value: str) -> bytearray: ... -def format_date(date: datetime.datetime, with_tz: bool = False) -> str: ... -def enclose_in_parens(s: str) -> str: ... -def escape_parens(s): ... -def b(s): ... +def escape_parens(s: AnyStr) -> AnyStr: ... def get_scale_factor(unit: _Unit | float) -> float: ... def convert_unit( # to_convert has a recursive type @@ -17,4 +15,12 @@ def convert_unit( old_unit: str | float, new_unit: str | float, ) -> float | tuple[float, ...]: ... -def dochecks() -> None: ... +def print_mem_usage(prefix: str) -> None: ... +def get_mem_usage(prefix: str) -> str: ... +def get_process_rss() -> str: ... +def get_process_rss_as_mib() -> float | None: ... +def get_process_heap_and_stack_sizes() -> tuple[str, str]: ... +def get_pymalloc_allocated_over_total_size() -> str: ... +def get_gc_managed_objs_total_size() -> str: ... +def get_tracemalloc_traced_memory() -> str: ... +def get_pillow_allocated_memory() -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml index d3860c9ba..7d86e76a7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml @@ -1 +1 @@ -version = "2.15.*" +version = "2.16.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi index 1d8da4539..758b7d4d2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/hdbcli/dbapi.pyi @@ -95,6 +95,7 @@ class Cursor: def setpacketsize(self, value: int) -> None: ... def set_resultset_holdability(self, holdability: int) -> None: ... def setoutputsize(self, *args: Any, **kwargs: Any) -> None: ... + def setcommandinfo(self, command_info: str, line_number: int) -> None: ... class Warning(Exception): errorcode: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi index 941bd2489..70b029bde 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi @@ -3,8 +3,8 @@ from _typeshed import Incomplete MAC_EPOCH: Incomplete WINDOWS_EPOCH: Incomplete # The following two constants are defined twice in the implementation. -CALENDAR_WINDOWS_1900 = WINDOWS_EPOCH # noqa: F821 -CALENDAR_MAC_1904 = MAC_EPOCH # noqa: F821 +CALENDAR_WINDOWS_1900 = WINDOWS_EPOCH +CALENDAR_MAC_1904 = MAC_EPOCH SECS_PER_DAY: int ISO_FORMAT: str ISO_REGEX: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/apps.pyi b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/apps.pyi index 2b87ba44b..fb567f574 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/apps.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/passlib/apps.pyi @@ -20,16 +20,16 @@ django14_context: CryptContext django16_context: CryptContext django110_context: CryptContext django21_context: CryptContext -django_context = django21_context # noqa: F821 +django_context = django21_context std_ldap_schemes: list[str] ldap_nocrypt_context: CryptContext ldap_context: CryptContext mysql3_context: CryptContext mysql4_context: CryptContext -mysql_context = mysql4_context # noqa: F821 +mysql_context = mysql4_context postgres_context: CryptContext phpass_context: CryptContext phpbb3_context: CryptContext roundup10_context: CryptContext roundup15_context: CryptContext -roundup_context = roundup15_context # noqa: F821 +roundup_context = roundup15_context diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/__main__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/__main__.pyi index 971aa66a7..87e980344 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/__main__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/__main__.pyi @@ -1,5 +1,3 @@ -# https://pyinstaller.org/en/stable/usage.html#running-pyinstaller-from-python-code -import logging from _typeshed import SupportsKeysAndGetItem from collections.abc import Iterable from typing_extensions import TypeAlias @@ -9,6 +7,5 @@ _PyIConfig: TypeAlias = ( SupportsKeysAndGetItem[str, bool | str | list[str] | None] | Iterable[tuple[str, bool | str | list[str] | None]] ) -logger: logging.Logger - +# https://pyinstaller.org/en/stable/usage.html#running-pyinstaller-from-python-code def run(pyi_args: Iterable[str] | None = None, pyi_config: _PyIConfig | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/__init__.pyi index e69de29bb..036849a0e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/__init__.pyi @@ -0,0 +1,7 @@ +from typing_extensions import TypeAlias + +# PyiBlockCipher is deprecated and misleads users into thinking it adds any security. Runtime deprecation warning: +# DEPRECATION: Bytecode encryption will be removed in PyInstaller v6. +# Please remove cipher and block_cipher parameters from your spec file to avoid breakages on upgrade. +# For the rationale/alternatives see https://github.com/pyinstaller/pyinstaller/pull/6999 +_PyiBlockCipher: TypeAlias = None # noqa: Y047 # Used by other modules diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/api.pyi new file mode 100644 index 000000000..e6fe6cf8a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/api.pyi @@ -0,0 +1,168 @@ +# PYZ, EXE and COLLECT referenced in https://pyinstaller.org/en/stable/spec-files.html#spec-file-operation +# MERGE is referenced in https://pyinstaller.org/en/stable/spec-files.html#example-merge-spec-file +# Not to be imported during runtime, but is the type reference for spec files which are executed as python code +import sys +from _typeshed import FileDescriptorOrPath, StrOrBytesPath, StrPath, Unused +from collections.abc import Iterable, Mapping, Sequence +from types import CodeType +from typing import ClassVar +from typing_extensions import Final, Literal, TypeAlias + +from PyInstaller.building import _PyiBlockCipher +from PyInstaller.building.build_main import Analysis +from PyInstaller.building.datastruct import TOC, Target, _TOCTuple +from PyInstaller.building.splash import Splash +from PyInstaller.utils.win32.versioninfo import VSVersionInfo +from PyInstaller.utils.win32.winmanifest import Manifest + +if sys.platform == "darwin": + _TargetArch: TypeAlias = Literal["x86_64", "arm64", "universal2"] + _SuportedTargetArchParam: TypeAlias = _TargetArch | None + _CodesignIdentity: TypeAlias = str | None + _CodesignIdentityParam: TypeAlias = str | None +else: + _TargetArch: TypeAlias = None + _SuportedTargetArchParam: TypeAlias = object + _CodesignIdentity: TypeAlias = None + _CodesignIdentityParam: TypeAlias = object + +if sys.platform == "win32": + _Icon: TypeAlias = list[StrPath] | str + _IconParam: TypeAlias = StrPath | list[StrPath] | None +elif sys.platform == "darwin": + _Icon: TypeAlias = list[StrPath] | None + _IconParam: TypeAlias = StrPath | list[StrPath] | None +else: + _Icon: TypeAlias = None + _IconParam: TypeAlias = object + +if sys.platform == "win32": + _VersionSrc: TypeAlias = VSVersionInfo | None + _VersionParam: TypeAlias = VSVersionInfo | StrOrBytesPath | None + _Manifest: TypeAlias = Manifest + _ManifestParam: TypeAlias = Manifest | None +else: + _VersionSrc: TypeAlias = None + _VersionParam: TypeAlias = object + _Manifest: TypeAlias = None + _ManifestParam: TypeAlias = object + +class PYZ(Target): + name: str + cipher: _PyiBlockCipher + dependencies: list[_TOCTuple] # type: ignore[assignment] + toc: TOC + code_dict: dict[str, CodeType] + def __init__(self, *tocs: TOC, name: str | None = None, cipher: _PyiBlockCipher = None) -> None: ... + def assemble(self) -> None: ... + +class PKG(Target): + xformdict: ClassVar[dict[str, str]] + toc: TOC + cdict: Mapping[str, bool] + name: str + exclude_binaries: bool + strip_binaries: bool + upx_binaries: bool + upx_exclude: Iterable[str] + target_arch: _TargetArch | None + codesign_identity: _CodesignIdentity + entitlements_file: FileDescriptorOrPath | None + def __init__( + self, + toc: TOC, + name: str | None = None, + cdict: Mapping[str, bool] | None = None, + exclude_binaries: bool = False, + strip_binaries: bool = False, + upx_binaries: bool = False, + upx_exclude: Iterable[str] | None = None, + target_arch: _SuportedTargetArchParam = None, + codesign_identity: _CodesignIdentityParam = None, + entitlements_file: FileDescriptorOrPath | None = None, + ) -> None: ... + def assemble(self) -> None: ... + +class EXE(Target): + exclude_binaries: bool + bootloader_ignore_signals: bool + console: bool + disable_windowed_traceback: bool + debug: bool + name: str + icon: _Icon + versrsrc: _VersionSrc + manifest: _Manifest + embed_manifest: bool + resources: Sequence[str] + strip: bool + upx_exclude: Iterable[str] + runtime_tmpdir: str | None + append_pkg: bool + uac_admin: bool + uac_uiaccess: bool + argv_emulation: bool + target_arch: _TargetArch + codesign_identity: _CodesignIdentity + entitlements_file: FileDescriptorOrPath | None + upx: bool + pkgname: str + toc: TOC + pkg: PKG + dependencies: TOC + exefiles: TOC + def __init__( + self, + *args: Iterable[_TOCTuple] | PYZ | Splash, + exclude_binaries: bool = False, + bootloader_ignore_signals: bool = False, + console: bool = True, + disable_windowed_traceback: bool = False, + debug: bool = False, + name: str | None = None, + icon: _IconParam = None, + version: _VersionParam = None, + manifest: _ManifestParam = None, + embed_manifest: bool = True, + resources: Sequence[str] = ..., + strip: bool = False, + upx_exclude: Iterable[str] = ..., + runtime_tmpdir: str | None = None, + append_pkg: bool = True, + uac_admin: bool = False, + uac_uiaccess: bool = False, + argv_emulation: bool = False, + target_arch: _SuportedTargetArchParam = None, + codesign_identity: _CodesignIdentityParam = None, + entitlements_file: FileDescriptorOrPath | None = None, + upx: bool = False, + cdict: Mapping[str, bool] | None = None, + ) -> None: ... + mtm: float + def assemble(self) -> None: ... + +class COLLECT(Target): + strip_binaries: bool + upx_exclude: Iterable[str] + console: bool + target_arch: _TargetArch | None + codesign_identity: _CodesignIdentity + entitlements_file: FileDescriptorOrPath | None + upx_binaries: bool + name: str + toc: TOC + def __init__( + self, + *args: Iterable[_TOCTuple] | EXE, + strip: bool = False, + upx_exclude: Iterable[str] = ..., + upx: bool = False, + name: str, + ) -> None: ... + def assemble(self) -> None: ... + +class MERGE: + def __init__(self, *args: tuple[Analysis, Unused, str]) -> None: ... + +UNCOMPRESSED: Final = False +COMPRESSED: Final = True diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/build_main.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/build_main.pyi index ccde42bc0..b4a484a0a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/build_main.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/build_main.pyi @@ -1,15 +1,28 @@ -# Referenced in: https://pyinstaller.org/en/stable/hooks.html?highlight=get_hook_config#PyInstaller.utils.hooks.get_hook_config -# Not to be imported during runtime, but is the type reference for hooks and analysis configuration - from _typeshed import Incomplete, StrPath from collections.abc import Iterable from typing import Any -from PyInstaller.building.datastruct import Target +from PyInstaller.building import _PyiBlockCipher +from PyInstaller.building.datastruct import TOC, Target +# Referenced in: https://pyinstaller.org/en/stable/hooks.html#PyInstaller.utils.hooks.get_hook_config +# Not to be imported during runtime, but is the type reference for hooks and analysis configuration +# Also referenced in https://pyinstaller.org/en/stable/spec-files.html +# Not to be imported during runtime, but is the type reference for spec files which are executed as python code class Analysis(Target): # https://pyinstaller.org/en/stable/hooks-config.html#hook-configuration-options hooksconfig: dict[str, dict[str, object]] + # https://pyinstaller.org/en/stable/spec-files.html#spec-file-operation + # https://pyinstaller.org/en/stable/feature-notes.html + pure: TOC + zipped_data: TOC + # https://pyinstaller.org/en/stable/spec-files.html#giving-run-time-python-options + # https://pyinstaller.org/en/stable/spec-files.html#the-splash-target + scripts: TOC + # https://pyinstaller.org/en/stable/feature-notes.html#practical-examples + binaries: TOC + zipfiles: TOC + datas: TOC def __init__( self, scripts: Iterable[StrPath], @@ -21,7 +34,7 @@ class Analysis(Target): hooksconfig: dict[str, dict[str, Any]] | None = None, excludes: Incomplete | None = None, runtime_hooks: Incomplete | None = None, - cipher: Incomplete | None = None, + cipher: _PyiBlockCipher = None, win_no_prefer_redirects: bool = False, win_private_assemblies: bool = False, noarchive: bool = False, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi index e225e60ba..472aa855c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi @@ -1,7 +1,7 @@ # https://pyinstaller.org/en/stable/advanced-topics.html#the-toc-and-tree-classes from collections.abc import Iterable, Sequence from typing import ClassVar -from typing_extensions import Literal, LiteralString, SupportsIndex, TypeAlias +from typing_extensions import Literal, LiteralString, Self, SupportsIndex, TypeAlias _TypeCode: TypeAlias = Literal["DATA", "BINARY", "EXTENSION", "OPTION"] _TOCTuple: TypeAlias = tuple[str, str | None, _TypeCode | None] @@ -11,13 +11,22 @@ class TOC(list[_TOCTuple]): def __init__(self, initlist: Iterable[_TOCTuple] | None = None) -> None: ... def append(self, entry: _TOCTuple) -> None: ... def insert(self, pos: SupportsIndex, entry: _TOCTuple) -> None: ... + def __add__(self, other: Iterable[_TOCTuple]) -> TOC: ... # type: ignore[override] + def __radd__(self, other: Iterable[_TOCTuple]) -> TOC: ... + def __iadd__(self, other: Iterable[_TOCTuple]) -> Self: ... # type: ignore[override] def extend(self, other: Iterable[_TOCTuple]) -> None: ... + def __sub__(self, other: Iterable[_TOCTuple]) -> TOC: ... + def __rsub__(self, other: Iterable[_TOCTuple]) -> TOC: ... + # slicing a TOC is not supported, but has a special case for slice(None, None, None) + def __setitem__(self, key: int | slice, value: Iterable[_TOCTuple]) -> None: ... # type: ignore[override] class Target: invcnum: ClassVar[int] tocfilename: LiteralString tocbasename: LiteralString dependencies: TOC + def __init__(self) -> None: ... + def __postinit__(self) -> None: ... class Tree(Target, TOC): root: str | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/splash.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/splash.pyi new file mode 100644 index 000000000..e5cc63681 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/splash.pyi @@ -0,0 +1,31 @@ +from _typeshed import Incomplete, StrPath +from collections.abc import Iterable + +from PyInstaller.building.datastruct import TOC, Target, _TOCTuple + +splash_requirements: list[str] + +# Referenced in https://pyinstaller.org/en/stable/spec-files.html#example-merge-spec-file +# Not to be imported during runtime, but is the type reference for spec files which are executed as python code +class Splash(Target): + image_file: str + full_tk: Incomplete + name: Incomplete + script_name: Incomplete + minify_script: Incomplete + rundir: Incomplete + max_img_size: Incomplete + text_pos: Incomplete + text_size: Incomplete + text_font: Incomplete + text_color: Incomplete + text_default: Incomplete + always_on_top: Incomplete + uses_tkinter: Incomplete + script: Incomplete + splash_requirements: Incomplete + binaries: TOC + def __init__(self, image_file: StrPath, binaries: TOC, datas: Iterable[_TOCTuple], **kwargs: Incomplete) -> None: ... + def assemble(self) -> None: ... + def test_tk_version(self) -> None: ... + def generate_script(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/__init__.pyi index 4943049d3..8929d4165 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/__init__.pyi @@ -1,6 +1,5 @@ # https://pyinstaller.org/en/stable/hooks.html -import logging from _typeshed import StrOrBytesPath, StrPath from collections.abc import Callable, Iterable from typing import Any @@ -14,7 +13,6 @@ from PyInstaller.utils.hooks.win32 import get_pywin32_module_file_attribute as g conda_support = conda -logger: logging.Logger PY_IGNORE_EXTENSIONS: Final[set[str]] hook_variables: dict[str, str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/conda.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/conda.pyi index fe80e7a37..d95a2ab02 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/conda.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/hooks/conda.pyi @@ -1,4 +1,4 @@ -# https://pyinstaller.org/en/stable/hooks.html?highlight=conda_support#module-PyInstaller.utils.hooks.conda +# https://pyinstaller.org/en/stable/hooks.html#module-PyInstaller.utils.hooks.conda import sys from _typeshed import StrOrBytesPath diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/win32/versioninfo.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/win32/versioninfo.pyi new file mode 100644 index 000000000..933588765 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/win32/versioninfo.pyi @@ -0,0 +1,51 @@ +from _typeshed import SliceableBuffer +from collections.abc import Sequence +from typing import Protocol +from typing_extensions import Literal, TypeAlias + +_FourIntSequence: TypeAlias = Sequence[int] +_TwoIntSequence: TypeAlias = Sequence[int] + +class _Kid(Protocol): + def toRaw(self) -> bytes: ... + def __str__(self, __indent: str = "") -> str: ... + +# Used by other types referenced in https://pyinstaller.org/en/stable/spec-files.html#spec-file-operation +class VSVersionInfo: + ffi: FixedFileInfo | None + kids: list[_Kid] + def __init__(self, ffi: FixedFileInfo | None = None, kids: list[_Kid] | None = None) -> None: ... + def fromRaw(self, data: SliceableBuffer) -> int: ... + def toRaw(self) -> bytes: ... + def __eq__(self, other: object) -> bool: ... + def __str__(self, indent: str = "") -> str: ... + +class FixedFileInfo: + sig: Literal[0xFEEF04BD] + strucVersion: Literal[0x10000] + fileVersionMS: int + fileVersionLS: int + productVersionMS: int + productVersionLS: int + fileFlagsMask: int + fileFlags: int + fileOS: int + fileType: int + fileSubtype: int + fileDateMS: int + fileDateLS: int + def __init__( + self, + filevers: _FourIntSequence = ..., + prodvers: _FourIntSequence = ..., + mask: int = 0x3F, + flags: int = 0x0, + OS: int = 0x40004, + fileType: int = 0x1, + subtype: int = 0x0, + date: _TwoIntSequence = ..., + ) -> None: ... + def fromRaw(self, data: SliceableBuffer, i: int) -> int: ... + def toRaw(self) -> bytes: ... + def __eq__(self, other: object) -> bool: ... + def __str__(self, indent: str = "") -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/win32/winmanifest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/win32/winmanifest.pyi new file mode 100644 index 000000000..9ec38f6b2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/utils/win32/winmanifest.pyi @@ -0,0 +1,127 @@ +from _typeshed import Incomplete, ReadableBuffer, Unused +from typing import IO, AnyStr, overload +from typing_extensions import Literal +from xml.dom.minidom import Document as _Document, Element as _Element, Node + +def getChildElementsByTagName(self: Node, tagName: str) -> list[Element]: ... +def getFirstChildElementByTagName(self: Node, tagName: str) -> Element | None: ... + +class Document(_Document): + cE = _Document.createElement + cT = _Document.createTextNode + aChild = _Document.appendChild + getEByTN = _Document.getElementsByTagName + getCEByTN = getChildElementsByTagName + getFCEByTN = getFirstChildElementByTagName + +class Element(_Element): + getA = _Element.getAttribute + remA = _Element.removeAttribute + setA = _Element.setAttribute + aChild = _Element.appendChild + getEByTN = _Element.getElementsByTagName + getCEByTN = getChildElementsByTagName + getFCEByTN = getFirstChildElementByTagName + +# Used by other types referenced in https://pyinstaller.org/en/stable/spec-files.html#spec-file-operation +class Manifest: + filename: Incomplete + optional: Incomplete + manifestType: Incomplete + manifestVersion: Incomplete + noInheritable: Incomplete + noInherit: Incomplete + type: Incomplete + name: Incomplete + language: str | None + processorArchitecture: Incomplete + version: Incomplete + publicKeyToken: Incomplete + applyPublisherPolicy: Incomplete + description: Incomplete + requestedExecutionLevel: Incomplete + uiAccess: Incomplete + dependentAssemblies: Incomplete + bindingRedirects: Incomplete + files: Incomplete + comInterfaceExternalProxyStubs: Incomplete + def __init__( + self, + manifestType: str = "assembly", + manifestVersion: Incomplete | None = None, + noInheritable: bool = False, + noInherit: bool = False, + type_: Incomplete | None = None, + name: Incomplete | None = None, + language: str | None = None, + processorArchitecture: Incomplete | None = None, + version: Incomplete | None = None, + publicKeyToken: Incomplete | None = None, + description: Unused = None, + requestedExecutionLevel: Incomplete | None = None, + uiAccess: Incomplete | None = None, + dependentAssemblies: Incomplete | None = None, + files: Incomplete | None = None, + comInterfaceExternalProxyStubs: Incomplete | None = None, + ) -> None: ... + @overload + def __eq__(self, other: Manifest | str) -> bool: ... # type: ignore[misc] + @overload + def __eq__(self, other: object) -> Literal[False]: ... + @overload + def __ne__(self, other: Manifest | str) -> bool: ... # type: ignore[misc] + @overload + def __ne__(self, other: object) -> Literal[True]: ... + def add_dependent_assembly( + self, + manifestVersion: Incomplete | None = None, + noInheritable: bool = False, + noInherit: bool = False, + type_: Incomplete | None = None, + name: Incomplete | None = None, + language: str | None = None, + processorArchitecture: Incomplete | None = None, + version: Incomplete | None = None, + publicKeyToken: Incomplete | None = None, + description: Incomplete | None = None, + requestedExecutionLevel: Incomplete | None = None, + uiAccess: Incomplete | None = None, + dependentAssemblies: Incomplete | None = None, + files: Incomplete | None = None, + comInterfaceExternalProxyStubs: Incomplete | None = None, + ) -> None: ... + def add_file( + self, + name: str = "", + hashalg: str = "", + hash: str = "", + comClasses: Incomplete | None = None, + typelibs: Incomplete | None = None, + comInterfaceProxyStubs: Incomplete | None = None, + windowClasses: Incomplete | None = None, + ) -> None: ... + @classmethod + def get_winsxs_dir(cls) -> str: ... + @classmethod + def get_manifest_dir(cls) -> str: ... + @classmethod + def get_policy_dir(cls) -> str: ... + def get_policy_redirect(self, language: str | None = None, version: Incomplete | None = None) -> Incomplete: ... + def find_files(self, ignore_policies: bool = True) -> list[Incomplete]: ... + def getid(self, language: str | None = None, version: Incomplete | None = None) -> str: ... + def getlanguage(self, language: str | None = None, windowsversion: Incomplete | None = None) -> str: ... + def getpolicyid(self, fuzzy: bool = True, language: str | None = None, windowsversion: Incomplete | None = None) -> str: ... + def load_dom(self, domtree: Document | Element, initialize: bool = True) -> None: ... + def parse(self, filename_or_file: str | IO[AnyStr], initialize: bool = True) -> None: ... + def parse_string(self, xmlstr: ReadableBuffer | str, initialize: bool = True) -> None: ... + def same_id(self, manifest: Manifest, skip_version_check: bool = False) -> bool: ... + def todom(self) -> Document: ... + def toprettyxml(self, indent: str = " ", newl: str = ..., encoding: str = "UTF-8") -> str: ... + def toxml(self, encoding: str = "UTF-8") -> str: ... + def update_resources(self, dstpath: str, names: Incomplete | None = None, languages: Incomplete | None = None) -> None: ... + def writeprettyxml( + self, filename_or_file: str | IO[AnyStr] | None = None, indent: str = " ", newl: str = ..., encoding: str = "UTF-8" + ) -> None: ... + def writexml( + self, filename_or_file: str | IO[AnyStr] | None = None, indent: Unused = " ", newl: Unused = ..., encoding: str = "UTF-8" + ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml index 035acd27d..6885f10e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml @@ -1,4 +1,5 @@ -version = "8.0.*" +version = "8.0.0.*" +obsolete_since = "8.0.1.0" # Released on 2023-05-05 [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml index a101319b4..fef9036ad 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml @@ -1 +1 @@ -version = "2023.3.23" +version = "2023.5.5" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml index 0bd4bd92e..8006e0087 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml @@ -1,5 +1,5 @@ -version = "2.28.*" -requires = ["types-urllib3<1.27"] # keep in sync with requests's setup.py +version = "2.30.*" +requires = ["types-urllib3"] [tool.stubtest] extras = ["socks"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/adapters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/adapters.pyi index f410cc7b2..664104cb2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/adapters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/requests/adapters.pyi @@ -10,7 +10,6 @@ from urllib3.exceptions import ( ResponseError as ResponseError, ) from urllib3.poolmanager import PoolManager as PoolManager, proxy_from_url as proxy_from_url -from urllib3.response import HTTPResponse as HTTPResponse from urllib3.util.retry import Retry as Retry from .cookies import extract_cookies_to_jar as extract_cookies_to_jar diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi index df0fa6aca..2188c0078 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi @@ -73,10 +73,6 @@ class Environment: def obtain(self, requirement: Requirement, installer: Callable[[Requirement], _T]) -> _T: ... def scan(self, search_path: Sequence[str] | None = None) -> None: ... -class DistInfoDistribution(Distribution): - PKG_INFO: ClassVar[Literal["METADATA"]] - EQEQ: ClassVar[Pattern[str]] - def parse_requirements(strs: str | Iterable[str]) -> Generator[Requirement, None, None]: ... class Requirement: @@ -133,50 +129,6 @@ def get_distribution(dist: _D) -> _D: ... @overload def get_distribution(dist: _PkgReqType) -> Distribution: ... -class Distribution(NullProvider, IResourceProvider, IMetadataProvider): - PKG_INFO: ClassVar[str] - location: str - project_name: str - @property - def key(self) -> str: ... - @property - def extras(self) -> list[str]: ... - @property - def version(self) -> str: ... - @property - def parsed_version(self) -> tuple[str, ...]: ... - py_version: str - platform: str | None - precedence: int - def __init__( - self, - location: str | None = None, - metadata: _MetadataType = None, - project_name: str | None = None, - version: str | None = None, - py_version: str = ..., - platform: str | None = None, - precedence: int = 3, - ) -> None: ... - @classmethod - def from_location( - cls, location: str, basename: str, metadata: _MetadataType = None, **kw: str | None | int - ) -> Distribution: ... - @classmethod - def from_filename(cls, filename: str, metadata: _MetadataType = None, **kw: str | None | int) -> Distribution: ... - def activate(self, path: list[str] | None = None) -> None: ... - def as_requirement(self) -> Requirement: ... - def requires(self, extras: tuple[str, ...] = ()) -> list[Requirement]: ... - def clone(self, **kw: str | int | None) -> Requirement: ... - def egg_name(self) -> str: ... # type: ignore[override] # supertype's egg_name is a variable, not a method - def __cmp__(self, other: Any) -> bool: ... - def get_entry_info(self, group: str, name: str) -> EntryPoint | None: ... - @overload - def get_entry_map(self) -> dict[str, dict[str, EntryPoint]]: ... - @overload - def get_entry_map(self, group: str) -> dict[str, EntryPoint]: ... - def load_entry_point(self, group: str, name: str) -> Any: ... - EGG_DIST: int BINARY_DIST: int SOURCE_DIST: int @@ -276,6 +228,54 @@ class NullProvider: def metadata_listdir(self, name: str) -> list[str]: ... def run_script(self, script_name: str, namespace: dict[str, Any]) -> None: ... +class Distribution(NullProvider, IResourceProvider, IMetadataProvider): + PKG_INFO: ClassVar[str] + location: str + project_name: str + @property + def key(self) -> str: ... + @property + def extras(self) -> list[str]: ... + @property + def version(self) -> str: ... + @property + def parsed_version(self) -> tuple[str, ...]: ... + py_version: str + platform: str | None + precedence: int + def __init__( + self, + location: str | None = None, + metadata: _MetadataType = None, + project_name: str | None = None, + version: str | None = None, + py_version: str = ..., + platform: str | None = None, + precedence: int = 3, + ) -> None: ... + @classmethod + def from_location( + cls, location: str, basename: str, metadata: _MetadataType = None, **kw: str | None | int + ) -> Distribution: ... + @classmethod + def from_filename(cls, filename: str, metadata: _MetadataType = None, **kw: str | None | int) -> Distribution: ... + def activate(self, path: list[str] | None = None) -> None: ... + def as_requirement(self) -> Requirement: ... + def requires(self, extras: tuple[str, ...] = ()) -> list[Requirement]: ... + def clone(self, **kw: str | int | None) -> Requirement: ... + def egg_name(self) -> str: ... # type: ignore[override] # supertype's egg_name is a variable, not a method + def __cmp__(self, other: Any) -> bool: ... + def get_entry_info(self, group: str, name: str) -> EntryPoint | None: ... + @overload + def get_entry_map(self) -> dict[str, dict[str, EntryPoint]]: ... + @overload + def get_entry_map(self, group: str) -> dict[str, EntryPoint]: ... + def load_entry_point(self, group: str, name: str) -> Any: ... + +class DistInfoDistribution(Distribution): + PKG_INFO: ClassVar[Literal["METADATA"]] + EQEQ: ClassVar[Pattern[str]] + class EggProvider(NullProvider): egg_root: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ujson/ujson.pyi b/packages/pyright-internal/typeshed-fallback/stubs/ujson/ujson.pyi index 9f2155415..42a454dcb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ujson/ujson.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/ujson/ujson.pyi @@ -1,6 +1,6 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, SupportsRead, SupportsWrite from collections.abc import Callable -from typing import IO, Any, AnyStr +from typing import Any __version__: str @@ -32,7 +32,7 @@ def dumps( ) -> str: ... def dump( obj: Any, - fp: IO[str], + fp: SupportsWrite[str], *, ensure_ascii: bool = ..., double_precision: int = ..., @@ -45,8 +45,8 @@ def dump( default: Callable[[Incomplete], Incomplete] | None = None, separators: tuple[str, str] | None = None, ) -> None: ... -def decode(s: AnyStr, precise_float: bool = ...) -> Any: ... -def loads(s: AnyStr, precise_float: bool = ...) -> Any: ... -def load(fp: IO[AnyStr], precise_float: bool = ...) -> Any: ... +def decode(s: str | bytes | bytearray, precise_float: bool = ...) -> Any: ... +def loads(s: str | bytes | bytearray, precise_float: bool = ...) -> Any: ... +def load(fp: SupportsRead[str | bytes | bytearray], precise_float: bool = ...) -> Any: ... class JSONDecodeError(ValueError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml index 791b8435e..84c49f9bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml @@ -1,4 +1,5 @@ version = "1.26.*" +obsolete_since = "2.0.0" # Released on 2023-04-26 [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connection.pyi index 51cac4f0a..0ab662e21 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connection.pyi @@ -4,8 +4,7 @@ from http.client import HTTPConnection as _HTTPConnection, HTTPException as HTTP from typing import Any from . import exceptions, util -from .packages import ssl_match_hostname -from .util import ssl_ +from .util import ssl_, ssl_match_hostname class DummyConnection: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connectionpool.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connectionpool.pyi index ccb43e307..20ca0e61b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connectionpool.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/connectionpool.pyi @@ -7,8 +7,7 @@ from typing_extensions import Literal, Self, TypeAlias from . import connection, exceptions, request, response from .connection import BaseSSLError as BaseSSLError, ConnectionError as ConnectionError, HTTPException as HTTPException -from .packages import ssl_match_hostname -from .util import Url, connection as _connection, queue as urllib3queue, retry, timeout, url +from .util import Url, connection as _connection, queue as urllib3queue, retry, ssl_match_hostname, timeout, url ClosedPoolError = exceptions.ClosedPoolError ProtocolError = exceptions.ProtocolError diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/packages/ssl_match_hostname/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/packages/ssl_match_hostname/__init__.pyi deleted file mode 100644 index 1915c0e5d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/packages/ssl_match_hostname/__init__.pyi +++ /dev/null @@ -1,4 +0,0 @@ -import ssl - -CertificateError = ssl.CertificateError -match_hostname = ssl.match_hostname diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/packages/ssl_match_hostname/_implementation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/packages/ssl_match_hostname/_implementation.pyi deleted file mode 100644 index c21998013..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/packages/ssl_match_hostname/_implementation.pyi +++ /dev/null @@ -1,3 +0,0 @@ -class CertificateError(ValueError): ... - -def match_hostname(cert, hostname): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/ssl_match_hostname.pyi b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/ssl_match_hostname.pyi new file mode 100644 index 000000000..d0e606fe2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/urllib3/util/ssl_match_hostname.pyi @@ -0,0 +1,8 @@ +from ssl import _PeerCertRetDictType +from typing_extensions import Final + +__version__: Final[str] + +class CertificateError(ValueError): ... + +def match_hostname(cert: _PeerCertRetDictType, hostname: str) -> None: ... From abb4f5368696107675bb4d0f5a167ec72f6ab970 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 7 May 2023 07:39:51 -0700 Subject: [PATCH 131/525] Fixed misspelling in test comment. No functional change. --- packages/pyright-internal/src/tests/samples/specialization2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/tests/samples/specialization2.py b/packages/pyright-internal/src/tests/samples/specialization2.py index e406d7d32..eb08bebb1 100644 --- a/packages/pyright-internal/src/tests/samples/specialization2.py +++ b/packages/pyright-internal/src/tests/samples/specialization2.py @@ -1,4 +1,4 @@ -# This sample tests the special case of specialzing a Union +# This sample tests the special case of specializing a Union # type that has generic parameters. from typing import Any, TypeVar, Generic, Union, Callable From e1740cff9ad9a6988b896dfd760ba993db54b014 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 8 May 2023 09:46:21 -0700 Subject: [PATCH 132/525] Fixed a bug that resulted in a false positive error when binding a classmethod within a metaclass (i.e. a subclass of type). This addresses https://github.com/microsoft/pyright/issues/5079. --- .../src/analyzer/typeEvaluator.ts | 21 ++++++------------- .../src/analyzer/typeUtils.ts | 7 +++++++ .../src/tests/samples/metaclass10.py | 9 ++++++++ 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 245b96ba6..8628e334a 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -218,6 +218,7 @@ import { isEffectivelyInstantiable, isEllipsisType, isIncompleteUnknown, + isInstantiableMetaclass, isLiteralType, isMaybeDescriptorInstance, isMetaclassInstance, @@ -5802,21 +5803,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If this function is an instance member (e.g. a lambda that was // assigned to an instance variable), don't perform any binding. if (!isAccessedThroughObject || (memberInfo && !memberInfo.isInstanceMember)) { - // Skip binding if the class appears to be a metaclass (i.e. a subclass of - // `type`) because the first parameter of instance methods in a metaclass - // are not `self` instances. - const isMetaclass = - !isAccessedThroughObject && - isClass(baseTypeClass) && - (flags & MemberAccessFlags.TreatConstructorAsClassMethod) === 0 && - baseTypeClass.details.mro.some( - (mroType) => isClass(mroType) && ClassType.isBuiltIn(mroType, 'type') - ); - - if (isMetaclass) { - return concreteSubtype; - } - return bindFunctionToClassOrObject( isAccessedThroughObject ? ClassType.cloneAsInstance(baseTypeClass) : baseTypeClass, concreteSubtype, @@ -24358,6 +24344,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (FunctionType.isInstanceMethod(memberType)) { + // If the baseType is a metaclass, don't specialize the function. + if (isInstantiableMetaclass(baseType)) { + return memberType; + } + const baseObj = isClassInstance(baseType) ? baseType : ClassType.cloneAsInstance(specializeClassType(baseType)); diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 784b5ca8d..dc028ee99 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1848,6 +1848,13 @@ export function getGeneratorYieldType(declaredReturnType: Type, isAsync: boolean return isLegalGeneratorType ? yieldType : undefined; } +export function isInstantiableMetaclass(type: Type): boolean { + return ( + isInstantiableClass(type) && + type.details.mro.some((mroClass) => isClass(mroClass) && ClassType.isBuiltIn(mroClass, 'type')) + ); +} + export function isMetaclassInstance(type: Type): boolean { return ( isClassInstance(type) && diff --git a/packages/pyright-internal/src/tests/samples/metaclass10.py b/packages/pyright-internal/src/tests/samples/metaclass10.py index 69b0db865..562e52011 100644 --- a/packages/pyright-internal/src/tests/samples/metaclass10.py +++ b/packages/pyright-internal/src/tests/samples/metaclass10.py @@ -11,3 +11,12 @@ class EnumMeta2(EnumMeta): def __getitem__(cls: type[_EnumMemberT], name: str) -> _EnumMemberT: return EnumMeta.__getitem__(cls, name) + + +class MyMeta(type): + @classmethod + def meta_method(cls) -> None: + ... + + +MyMeta.meta_method() From 06392e258700efd7275d2520fe92b58768f200a2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 9 May 2023 08:27:05 -0700 Subject: [PATCH 133/525] Fixed bug that caused any function or method named `deprecated` to be treated as though it behaved like `typing.deprecated` (introduced in PEP 702). This addresses https://github.com/microsoft/pyright/issues/5082. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 8628e334a..de2abd365 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -15458,7 +15458,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions evaluatorInterface, decoratorNode.expression ); - } else if (decoratorCallType.details.name === 'deprecated') { + } else if (decoratorCallType.details.builtInName === 'deprecated') { originalClassType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); return inputClassType; } @@ -16542,7 +16542,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return inputFunctionType; } - if (decoratorCallType.details.name === 'deprecated') { + if (decoratorCallType.details.builtInName === 'deprecated') { undecoratedType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); return inputFunctionType; } From 6a51ea311f48b181fc5a40d7deaa89762e1df6a4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 9 May 2023 18:03:22 -0700 Subject: [PATCH 134/525] Added debugging routine for printing TypeVarContext. --- .../src/analyzer/typeEvaluator.ts | 15 +++++++++++++++ .../src/analyzer/typeEvaluatorTypes.ts | 1 + 2 files changed, 16 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index de2abd365..b7a4d39d7 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24714,6 +24714,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return codeFlowEngine.printControlFlowGraph(flowNode, reference, callName, logger); } + function printTypeVarContext(typeVarContext: TypeVarContext): void { + const contexts = typeVarContext.getSignatureContexts(); + contexts.forEach((context, index) => { + if (contexts.length > 1) { + console.log(`Signature context ${index + 1}:`); + } + + context.getTypeVars().forEach((typeVarEntry) => { + const type = context.getTypeVarType(typeVarEntry.typeVar); + console.log(` ${typeVarEntry.typeVar.details.name}: ${type ? printType(type) : ''}`); + }); + }); + } + const evaluatorInterface: TypeEvaluator = { runWithCancellationToken, getType, @@ -24807,6 +24821,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions setTypeForNode, checkForCancellation, printControlFlowGraph, + printTypeVarContext, }; const codeFlowEngine = getCodeFlowEngine(evaluatorInterface, speculativeTypeTracker); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index ee636e3af..4e133ffa0 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -652,4 +652,5 @@ export interface TypeEvaluator { callName: string, logger: ConsoleInterface ) => void; + printTypeVarContext: (typeVarContext: TypeVarContext) => void; } From 0108e5d97198499a28bcfd7bf7b071661b851fd6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 9 May 2023 18:50:18 -0700 Subject: [PATCH 135/525] Eliminated circular dependency between typeUtils and typeVarContext modules. No functional change. --- .../src/analyzer/typeEvaluator.ts | 6 +- .../src/analyzer/typeUtils.ts | 37 +++++++++++- .../src/analyzer/typeVarContext.ts | 56 +++++-------------- 3 files changed, 54 insertions(+), 45 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index b7a4d39d7..94462883c 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -189,6 +189,8 @@ import { addConditionToType, addTypeVarsToListIfUnique, applySolvedTypeVars, + applySourceContextTypeVars, + applySourceContextTypeVarsToSignature, areTypesSame, combineSameSizedTuples, combineVariances, @@ -10882,7 +10884,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (!reportedArgError) { - typeVarContext.applySourceContextTypeVars(srcTypeVarContext); + applySourceContextTypeVarsToSignature(typeVarContext, srcTypeVarContext); } return !reportedArgError; @@ -23592,7 +23594,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Apply any solved source TypeVars to the dest TypeVar solutions. This // allows for higher-order functions to accept generic callbacks. - destTypeVarContext.applySourceContextTypeVars(srcTypeVarContext); + applySourceContextTypeVars(destTypeVarContext, srcTypeVarContext); return canAssign; } diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index dc028ee99..81966fdd7 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -58,7 +58,7 @@ import { Variance, WildcardTypeVarScopeId, } from './types'; -import { TypeVarContext } from './typeVarContext'; +import { TypeVarContext, TypeVarSignatureContext } from './typeVarContext'; export interface ClassMember { // Symbol @@ -1034,6 +1034,41 @@ export function applySolvedTypeVars( return transformer.apply(type, 0); } +// Applies solved TypeVars from one context to this context. +export function applySourceContextTypeVars(destContext: TypeVarContext, srcContext: TypeVarContext) { + if (srcContext.isEmpty()) { + return; + } + + destContext.doForEachSignatureContext((destSignature) => { + applySourceContextTypeVarsToSignature(destSignature, srcContext); + }); +} + +export function applySourceContextTypeVarsToSignature( + destSignature: TypeVarSignatureContext, + srcContext: TypeVarContext +) { + destSignature.getTypeVars().forEach((entry) => { + const newNarrowTypeBound = entry.narrowBound ? applySolvedTypeVars(entry.narrowBound, srcContext) : undefined; + const newNarrowTypeBoundNoLiterals = entry.narrowBoundNoLiterals + ? applySolvedTypeVars(entry.narrowBoundNoLiterals, srcContext) + : undefined; + const newWideTypeBound = entry.wideBound ? applySolvedTypeVars(entry.wideBound, srcContext) : undefined; + + destSignature.setTypeVarType(entry.typeVar, newNarrowTypeBound, newNarrowTypeBoundNoLiterals, newWideTypeBound); + + if (entry.tupleTypes) { + destSignature.setTupleTypeVar( + entry.typeVar, + entry.tupleTypes.map((arg) => { + return { isUnbounded: arg.isUnbounded, type: applySolvedTypeVars(arg.type, srcContext) }; + }) + ); + } + }); +} + // Validates that a default type associated with a TypeVar does not refer to // other TypeVars or ParamSpecs that are out of scope. export function validateTypeVarDefault( diff --git a/packages/pyright-internal/src/analyzer/typeVarContext.ts b/packages/pyright-internal/src/analyzer/typeVarContext.ts index f3693b9e5..3aa473583 100644 --- a/packages/pyright-internal/src/analyzer/typeVarContext.ts +++ b/packages/pyright-internal/src/analyzer/typeVarContext.ts @@ -23,7 +23,6 @@ import { TypeVarType, WildcardTypeVarScopeId, } from './types'; -import { applySolvedTypeVars, doForEachSubtype } from './typeUtils'; export interface TypeVarMapEntry { typeVar: TypeVarType; @@ -156,30 +155,6 @@ export class TypeVarSignatureContext { return entries; } - // Applies solved TypeVars from one context to this context. - applySourceContextTypeVars(srcContext: TypeVarContext) { - this._typeVarMap.forEach((entry) => { - const newNarrowTypeBound = entry.narrowBound - ? applySolvedTypeVars(entry.narrowBound, srcContext) - : undefined; - const newNarrowTypeBoundNoLiterals = entry.narrowBoundNoLiterals - ? applySolvedTypeVars(entry.narrowBoundNoLiterals, srcContext) - : undefined; - const newWideTypeBound = entry.wideBound ? applySolvedTypeVars(entry.wideBound, srcContext) : undefined; - - this.setTypeVarType(entry.typeVar, newNarrowTypeBound, newNarrowTypeBoundNoLiterals, newWideTypeBound); - - if (entry.tupleTypes) { - this.setTupleTypeVar( - entry.typeVar, - entry.tupleTypes.map((arg) => { - return { isUnbounded: arg.isUnbounded, type: applySolvedTypeVars(arg.type, srcContext) }; - }) - ); - } - }); - } - getTypeVarCount() { return this._typeVarMap.size; } @@ -244,7 +219,7 @@ export class TypeVarSignatureContext { // If this union has a very large number of subtypes, don't bother // accurately computing the score. Assume a fixed value. if (type.subtypes.length < 16) { - doForEachSubtype(type, (subtype) => { + type.subtypes.forEach((subtype) => { const subtypeScore = this._getComplexityScoreForType(subtype, recursionCount); maxScore = Math.max(maxScore, subtypeScore); }); @@ -406,22 +381,6 @@ export class TypeVarContext { return this._signatureContexts.every((context) => context.isEmpty()); } - // Applies solved TypeVars from one context to this context. - applySourceContextTypeVars(srcContext: TypeVarContext) { - if (srcContext.isEmpty()) { - return; - } - - const wasLocked = this.isLocked(); - this.unlock(); - - this._signatureContexts.forEach((context) => context.applySourceContextTypeVars(srcContext)); - - if (wasLocked) { - this.lock(); - } - } - setTypeVarType( reference: TypeVarType, narrowBound: Type | undefined, @@ -462,6 +421,19 @@ export class TypeVarContext { return this._signatureContexts; } + doForEachSignatureContext(callback: (signature: TypeVarSignatureContext) => void) { + const wasLocked = this.isLocked(); + this.unlock(); + + this.getSignatureContexts().forEach((signature) => { + callback(signature); + }); + + if (wasLocked) { + this.lock(); + } + } + getSignatureContext(index: number) { assert(index >= 0 && index < this._signatureContexts.length); return this._signatureContexts[index]; From a2ca488fd29f6fd31a82c16eee916501e74c051d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 9 May 2023 18:57:36 -0700 Subject: [PATCH 136/525] Renamed and restructured some code in preparation for a larger change. No functional change. --- .../src/analyzer/constraintSolver.ts | 33 +++++++++---------- .../src/analyzer/typeUtils.ts | 9 ++--- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 63b28cf1a..ee02a9933 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -55,7 +55,7 @@ import { isPartlyUnknown, mapSubtypes, specializeTupleClass, - transformExpectedTypeForConstructor, + transformExpectedType, transformPossibleRecursiveTypeAlias, } from './typeUtils'; import { TypeVarContext } from './typeVarContext'; @@ -855,17 +855,19 @@ export function populateTypeVarContextBasedOnExpectedType( .getPrimarySignature() .getTypeVars() .forEach((entry) => { - const typeVarType = sameClassTypeVarContext.getPrimarySignature().getTypeVarType(entry.typeVar); + const typeArgValue = sameClassTypeVarContext.getPrimarySignature().getTypeVarType(entry.typeVar); - if (typeVarType) { + if (typeArgValue) { // Skip this if the type argument is a TypeVar defined by the class scope because // we're potentially solving for these TypeVars. - if (!isTypeVar(typeVarType) || typeVarType.scopeId !== type.details.typeVarScopeId) { + if (!isTypeVar(typeArgValue) || typeArgValue.scopeId !== type.details.typeVarScopeId) { + const variance = TypeVarType.getVariance(entry.typeVar); + typeVarContext.setTypeVarType( entry.typeVar, - TypeVarType.getVariance(entry.typeVar) === Variance.Covariant ? undefined : typeVarType, + variance === Variance.Covariant ? undefined : typeArgValue, /* narrowBoundNoLiterals */ undefined, - TypeVarType.getVariance(entry.typeVar) === Variance.Contravariant ? undefined : typeVarType + variance === Variance.Contravariant ? undefined : typeArgValue ); } } @@ -927,25 +929,20 @@ export function populateTypeVarContextBasedOnExpectedType( const targetTypeVar = ClassType.getTypeParameters(specializedType)[synthTypeVar.details.synthesizedIndex]; if (index < expectedTypeArgs.length) { - let expectedTypeArgValue: Type | undefined = transformPossibleRecursiveTypeAlias( - expectedTypeArgs[index] - ); + let typeArgValue: Type | undefined = transformPossibleRecursiveTypeAlias(expectedTypeArgs[index]); if (liveTypeVarScopes) { - expectedTypeArgValue = transformExpectedTypeForConstructor( - expectedTypeArgValue, - liveTypeVarScopes - ); + typeArgValue = transformExpectedType(typeArgValue, liveTypeVarScopes); } - if (expectedTypeArgValue) { + if (typeArgValue) { + const variance = TypeVarType.getVariance(typeVar); + typeVarContext.setTypeVarType( targetTypeVar, - TypeVarType.getVariance(typeVar) === Variance.Covariant ? undefined : expectedTypeArgValue, + variance === Variance.Covariant ? undefined : typeArgValue, /* narrowBoundNoLiterals */ undefined, - TypeVarType.getVariance(typeVar) === Variance.Contravariant - ? undefined - : expectedTypeArgValue + variance === Variance.Contravariant ? undefined : typeArgValue ); } else { isResultValid = false; diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 81966fdd7..f4ec7e64b 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1089,10 +1089,7 @@ export function validateTypeVarDefault( // expected type uses TypeVars that are not part of the context of the // class we are constructing. We'll replace these type variables with dummy // type variables that are scoped to the appropriate context. -export function transformExpectedTypeForConstructor( - expectedType: Type, - liveTypeVarScopes: TypeVarScopeId[] -): Type | undefined { +export function transformExpectedType(expectedType: Type, liveTypeVarScopes: TypeVarScopeId[]): Type | undefined { const isTypeVarLive = (typeVar: TypeVarType) => liveTypeVarScopes.some((scopeId) => typeVar.scopeId === scopeId); // Handle "naked TypeVars" (i.e. the expectedType is a TypeVar itself) @@ -1106,7 +1103,7 @@ export function transformExpectedTypeForConstructor( return undefined; } - const transformer = new ExpectedConstructorTypeTransformer(liveTypeVarScopes); + const transformer = new ExpectedTypeTransformer(liveTypeVarScopes); return transformer.apply(expectedType, 0); } @@ -3767,7 +3764,7 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { } } -class ExpectedConstructorTypeTransformer extends TypeVarTransformer { +class ExpectedTypeTransformer extends TypeVarTransformer { constructor(private _liveTypeVarScopes: TypeVarScopeId[]) { super(); } From cdbee5bd6e1176a220fafc2ba581c36d99857743 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 9 May 2023 19:35:40 -0700 Subject: [PATCH 137/525] Improved handling of `NewType` when `Any` is passed as a second argument. This addresses https://github.com/microsoft/pyright/issues/5084. --- .../src/analyzer/typeEvaluator.ts | 65 +++++++++++-------- .../src/tests/samples/newType5.py | 15 +++++ .../src/tests/typeEvaluator2.test.ts | 6 ++ 3 files changed, 58 insertions(+), 28 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/newType5.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 94462883c..76219541b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11575,29 +11575,43 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return undefined; } - const baseClass = getTypeOfArgumentExpectingType(argList[1]).type; - - if (isInstantiableClass(baseClass)) { - if (ClassType.isProtocolClass(baseClass)) { - addError(Localizer.Diagnostic.newTypeProtocolClass(), argList[1].node || errorNode); - } else if (baseClass.literalValue !== undefined) { - addError(Localizer.Diagnostic.newTypeLiteral(), argList[1].node || errorNode); - } - - const classFlags = baseClass.details.flags & ~(ClassTypeFlags.BuiltInClass | ClassTypeFlags.SpecialBuiltIn); - const classType = ClassType.createInstantiable( - className, - ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), - fileInfo.moduleName, - fileInfo.filePath, - classFlags, - ParseTreeUtils.getTypeSourceId(errorNode), - /* declaredMetaclass */ undefined, - baseClass.details.effectiveMetaclass - ); - classType.details.baseClasses.push(baseClass); - computeMroLinearization(classType); + let baseClass = getTypeOfArgumentExpectingType(argList[1]).type; + let isBaseClassAny = false; + + if (isAnyOrUnknown(baseClass)) { + if (objectType && isClassInstance(objectType)) { + baseClass = ClassType.cloneAsInstantiable(objectType); + } + + isBaseClassAny = true; + } + + if (!isInstantiableClass(baseClass)) { + addError(Localizer.Diagnostic.newTypeNotAClass(), argList[1].node || errorNode); + return undefined; + } + + if (ClassType.isProtocolClass(baseClass)) { + addError(Localizer.Diagnostic.newTypeProtocolClass(), argList[1].node || errorNode); + } else if (baseClass.literalValue !== undefined) { + addError(Localizer.Diagnostic.newTypeLiteral(), argList[1].node || errorNode); + } + const classFlags = baseClass.details.flags & ~(ClassTypeFlags.BuiltInClass | ClassTypeFlags.SpecialBuiltIn); + const classType = ClassType.createInstantiable( + className, + ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), + fileInfo.moduleName, + fileInfo.filePath, + classFlags, + ParseTreeUtils.getTypeSourceId(errorNode), + /* declaredMetaclass */ undefined, + baseClass.details.effectiveMetaclass + ); + classType.details.baseClasses.push(isBaseClassAny ? AnyType.create() : baseClass); + computeMroLinearization(classType); + + if (!isBaseClassAny) { // Synthesize an __init__ method that accepts only the specified type. const initType = FunctionType.createSynthesizedInstance('__init__'); FunctionType.addParameter(initType, { @@ -11626,14 +11640,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions FunctionType.addDefaultParameters(newType); newType.details.declaredReturnType = ClassType.cloneAsInstance(classType); classType.details.fields.set('__new__', Symbol.createWithType(SymbolFlags.ClassMember, newType)); - return classType; - } - - if (!isAnyOrUnknown(baseClass)) { - addError(Localizer.Diagnostic.newTypeNotAClass(), argList[1].node || errorNode); } - return undefined; + return classType; } // Implements the semantics of the multi-parameter variant of the "type" call. diff --git a/packages/pyright-internal/src/tests/samples/newType5.py b/packages/pyright-internal/src/tests/samples/newType5.py new file mode 100644 index 000000000..98146ecca --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/newType5.py @@ -0,0 +1,15 @@ +# This sample tests the case where an Any type is passed as the second +# argument to NewType. + +from typing import Any, NewType + +A = NewType("A", Any) + + +def func(x: A) -> A: + x() + x(1, 2, 3) + + y: list[int] = [x, x()] + + return x diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index d18dfbc6b..b0c627af9 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -256,6 +256,12 @@ test('NewType4', () => { TestUtils.validateResults(analysisResults, 3); }); +test('NewType5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['newType5.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('isInstance1', () => { // This test requires Python 3.10 because it uses PEP 604 notation for unions. const configOptions = new ConfigOptions('.'); From c89ffb739267165d96939ae03539dee5706bee1a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 9 May 2023 22:30:45 -0700 Subject: [PATCH 138/525] Made "Pyproject file has no pyright section" log message an "Info" message rather than an error to reduce noise. --- packages/pyright-internal/src/analyzer/service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 71d68f794..b1aceecab 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -959,7 +959,7 @@ export class AnalyzerService { throw e; } - this._console.error(`Pyproject file "${pyprojectPath}" is missing "[tool.pyright]" section.`); + this._console.info(`Pyproject file "${pyprojectPath}" has no "[tool.pyright]" section.`); return undefined; }); } From 0c308e057f553831837ba1f0db1ee88331baadab Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 9 May 2023 22:30:57 -0700 Subject: [PATCH 139/525] Published 1.1.307 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 11c0c659f..2f1cb72bc 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.306", + "version": "1.1.307", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 8b10ee65c..298a0898b 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.306", + "version": "1.1.307", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.306", + "version": "1.1.307", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 215d4e8a1..306f4a5f1 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.306", + "version": "1.1.307", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 8961ab90e..e7aca81af 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.306", + "version": "1.1.307", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.306", + "version": "1.1.307", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 049e92aec..aa874b93c 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.306", + "version": "1.1.307", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 3fbe5d45f..6eacd83cd 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.306", + "version": "1.1.307", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.306", + "version": "1.1.307", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 8ad9157f2..084fe37c4 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.306", + "version": "1.1.307", "private": true, "license": "MIT", "author": { From e1b6074b4db3f2dca50c067577d47285dae7f770 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 10 May 2023 10:56:49 -0700 Subject: [PATCH 140/525] pull-pylance-with-pyright-1.1.307 (#5093) --- package-lock.json | 4509 ++++++++--------- package.json | 10 +- .../src/analyzer/docStringConversion.ts | 3 +- .../pyright-internal/src/analyzer/program.ts | 450 +- .../pyright-internal/src/analyzer/service.ts | 87 +- .../src/analyzer/sourceFile.ts | 166 +- .../src/backgroundAnalysisBase.ts | 18 +- .../src/common/extensibility.ts | 46 +- .../pyright-internal/src/common/logTracker.ts | 9 + .../pyright-internal/src/common/lspUtils.ts | 49 +- .../src/common/workspaceEditUtils.ts | 27 +- .../src/languageServerBase.ts | 167 +- .../src/languageService/autoImporter.ts | 492 +- .../languageService/callHierarchyProvider.ts | 43 +- .../src/languageService/completionProvider.ts | 2706 +++++----- .../documentSymbolCollector.ts | 67 +- .../languageService/documentSymbolProvider.ts | 458 +- .../src/languageService/hoverProvider.ts | 165 +- .../src/languageService/importAdder.ts | 576 --- .../src/languageService/referencesProvider.ts | 19 +- .../src/languageService/renameProvider.ts | 24 +- .../src/languageService/symbolIndexer.ts | 164 + .../src/languageService/tooltipUtils.ts | 146 +- .../workspaceSymbolProvider.ts | 155 + .../src/tests/chainedSourceFiles.test.ts | 45 +- .../src/tests/completions.test.ts | 281 +- .../src/tests/docStringConversion.test.ts | 41 +- .../completions.commitChars.fourslash.ts | 86 - .../completions.override2.fourslash.ts | 17 +- .../src/tests/harness/fourslash/testState.ts | 131 +- .../src/tests/importAdder.test.ts | 1549 ------ .../src/tests/workspaceEditUtils.test.ts | 29 +- packages/pyright/package-lock.json | 14 +- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 14 +- packages/vscode-pyright/package.json | 2 +- 36 files changed, 4353 insertions(+), 8414 deletions(-) delete mode 100644 packages/pyright-internal/src/languageService/importAdder.ts create mode 100644 packages/pyright-internal/src/languageService/symbolIndexer.ts create mode 100644 packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts delete mode 100644 packages/pyright-internal/src/tests/fourslash/completions.commitChars.fourslash.ts delete mode 100644 packages/pyright-internal/src/tests/importAdder.test.ts diff --git a/package-lock.json b/package-lock.json index b71b63c40..a9a8f108c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,16 +10,16 @@ "@types/glob": "^7.2.0", "@types/node": "^17.0.45", "@types/yargs": "^16.0.5", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.2", + "@typescript-eslint/eslint-plugin": "^5.59.5", + "@typescript-eslint/parser": "^5.59.5", "detect-indent": "^6.1.0", - "eslint": "^8.39.0", + "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-simple-import-sort": "^7.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", - "lerna": "^6.6.1", - "npm-check-updates": "^16.10.9", + "lerna": "^6.6.2", + "npm-check-updates": "^16.10.12", "p-queue": "^6.6.2", "prettier": "2.8.8", "syncpack": "^9.8.6", @@ -168,14 +168,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.1", + "espree": "^9.5.2", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -191,9 +191,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", + "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -266,9 +266,9 @@ } }, "node_modules/@lerna/child-process": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.1.tgz", - "integrity": "sha512-yUCDCcRNNbI9UUsUB6FYEmDHpo5Tn/f0q5D7vhDP4i6Or8kBj82y7+e31hwfLvK2ykOYlDVs2MxAluH/+QUBOQ==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.2.tgz", + "integrity": "sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -276,22 +276,22 @@ "strong-log-transformer": "^2.1.0" }, "engines": { - "node": "^14.15.0 || >=16.0.0" + "node": "^14.17.0 || >=16.0.0" } }, "node_modules/@lerna/create": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.1.tgz", - "integrity": "sha512-GDmHFhQ0mr0RcXWXrsLyfMV6ch/dZV/Ped1e6sFVQhsLL9P+FFXX1ZWxa/dQQ90VWF2qWcmK0+S/L3kUz2xvTA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.2.tgz", + "integrity": "sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ==", "dev": true, "dependencies": { - "@lerna/child-process": "6.6.1", + "@lerna/child-process": "6.6.2", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "init-package-json": "^3.0.2", "npm-package-arg": "8.1.1", "p-reduce": "^2.1.0", - "pacote": "^13.6.1", + "pacote": "15.1.1", "pify": "^5.0.0", "semver": "^7.3.4", "slash": "^3.0.0", @@ -300,13 +300,13 @@ "yargs-parser": "20.2.4" }, "engines": { - "node": "^14.15.0 || >=16.0.0" + "node": "^14.17.0 || >=16.0.0" } }, "node_modules/@lerna/legacy-package-management": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.1.tgz", - "integrity": "sha512-0EYxSFr34VgeudA5rvjGJSY7s4seITMVB7AJ9LRFv9QDUk6jpvapV13ZAaKnhDTxX5vNCfnJuWHXXWq0KyPF/Q==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.2.tgz", + "integrity": "sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg==", "dev": true, "dependencies": { "@npmcli/arborist": "6.2.3", @@ -338,7 +338,7 @@ "inquirer": "8.2.4", "is-ci": "2.0.0", "is-stream": "2.0.0", - "libnpmpublish": "6.0.4", + "libnpmpublish": "7.1.4", "load-json-file": "6.2.0", "make-dir": "3.1.0", "minimatch": "3.0.5", @@ -352,7 +352,7 @@ "p-map-series": "2.1.0", "p-queue": "6.6.2", "p-waterfall": "2.1.1", - "pacote": "13.6.2", + "pacote": "15.1.1", "pify": "5.0.0", "pretty-format": "29.4.3", "read-cmd-shim": "3.0.0", @@ -373,7 +373,7 @@ "yargs": "16.2.0" }, "engines": { - "node": "^14.15.0 || >=16.0.0" + "node": "^14.17.0 || >=16.0.0" } }, "node_modules/@lerna/legacy-package-management/node_modules/@npmcli/fs": { @@ -389,9 +389,9 @@ } }, "node_modules/@lerna/legacy-package-management/node_modules/cacache": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", @@ -492,9 +492,9 @@ } }, "node_modules/@lerna/legacy-package-management/node_modules/glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", @@ -558,18 +558,6 @@ "node": ">=8" } }, - "node_modules/@lerna/legacy-package-management/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@lerna/legacy-package-management/node_modules/inquirer": { "version": "8.2.4", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", @@ -887,25 +875,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/@npmcli/git": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", - "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", - "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/@npmcli/promise-spawn": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", @@ -919,9 +888,9 @@ } }, "node_modules/@npmcli/arborist/node_modules/@npmcli/run-script": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.1.tgz", - "integrity": "sha512-Yi04ZSold8jcbBJD/ahKMJSQCQifH8DAbMwkBvoLaTpGFxzHC3B/5ZyoVR69q/4xedz84tvi9DJOJjNe17h+LA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", "dev": true, "dependencies": { "@npmcli/node-gyp": "^3.0.0", @@ -981,9 +950,9 @@ } }, "node_modules/@npmcli/arborist/node_modules/cacache": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", @@ -1035,9 +1004,9 @@ } }, "node_modules/@npmcli/arborist/node_modules/glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", @@ -1071,45 +1040,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/arborist/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", - "dev": true, - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@npmcli/arborist/node_modules/json-parse-even-better-errors": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", @@ -1186,21 +1116,6 @@ "encoding": "^0.1.13" } }, - "node_modules/@npmcli/arborist/node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", @@ -1216,18 +1131,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", - "dev": true, - "dependencies": { - "ignore-walk": "^6.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/npm-registry-fetch": { "version": "14.0.5", "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", @@ -1261,38 +1164,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/pacote": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.3.tgz", - "integrity": "sha512-aRts8cZqxiJVDitmAh+3z+FxuO3tLNWEmwDRPEpDDiZJaRz06clP4XX112ynMT5uF0QNoMPajBBHnaStUEPJXA==", - "dev": true, - "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -1302,25 +1173,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/read-package-json": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.2.tgz", - "integrity": "sha512-Ismd3km1d/FGzcjm8fBf/4ktkyd0t6pbkjYqu1gvRzOzN+aTxi1eigdZp7441TlszQ+GsdYezgS+g9cgy8QK9w==", - "dev": true, - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/readable-stream": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", - "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.0.tgz", + "integrity": "sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==", "dev": true, "dependencies": { "abort-controller": "^3.0.0", @@ -1421,86 +1277,58 @@ } }, "node_modules/@npmcli/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", - "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", + "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", "dev": true, "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" + "which": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/git/node_modules/npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "node_modules/@npmcli/git/node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, "dependencies": { - "semver": "^7.1.1" + "which": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/git/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "node_modules/@npmcli/git/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/git/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "isexe": "^2.0.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/npm-pick-manifest": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", - "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", - "dev": true, - "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/installed-package-contents": { @@ -1544,9 +1372,9 @@ } }, "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", @@ -1616,89 +1444,42 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/git": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", - "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", + "node_modules/@npmcli/metavuln-calculator/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "node_modules/@npmcli/metavuln-calculator/node_modules/cacache": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", "dev": true, "dependencies": { - "which": "^3.0.0" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/run-script": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.1.tgz", - "integrity": "sha512-Yi04ZSold8jcbBJD/ahKMJSQCQifH8DAbMwkBvoLaTpGFxzHC3B/5ZyoVR69q/4xedz84tvi9DJOJjNe17h+LA==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/cacache": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "node_modules/@npmcli/metavuln-calculator/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, "dependencies": { "minipass": "^5.0.0" @@ -1708,9 +1489,9 @@ } }, "node_modules/@npmcli/metavuln-calculator/node_modules/glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", @@ -1729,30 +1510,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", - "dev": true, - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/metavuln-calculator/node_modules/json-parse-even-better-errors": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", @@ -1762,32 +1519,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/metavuln-calculator/node_modules/minimatch": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", @@ -1812,139 +1543,6 @@ "node": ">=8" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "dependencies": { - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", - "dev": true, - "dependencies": { - "ignore-walk": "^6.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.3.tgz", - "integrity": "sha512-aRts8cZqxiJVDitmAh+3z+FxuO3tLNWEmwDRPEpDDiZJaRz06clP4XX112ynMT5uF0QNoMPajBBHnaStUEPJXA==", - "dev": true, - "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/read-package-json": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.2.tgz", - "integrity": "sha512-Ismd3km1d/FGzcjm8fBf/4ktkyd0t6pbkjYqu1gvRzOzN+aTxi1eigdZp7441TlszQ+GsdYezgS+g9cgy8QK9w==", - "dev": true, - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/metavuln-calculator/node_modules/ssri": { "version": "10.0.4", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", @@ -1981,33 +1579,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/move-file": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", @@ -2129,24 +1700,24 @@ } }, "node_modules/@nrwl/cli": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.7.1.tgz", - "integrity": "sha512-33RcH5Af2BidQvnTGlDTrUWJ6Eul5aA0LeqYmEavYb+I0kzYMqdBzBCLgQT/13gAdoQauTWUO4g3eFhoHnCNrg==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.4.tgz", + "integrity": "sha512-FoiGFCLpb/r4HXCM3KYqT0xteP+MRV6bIHjz3bdPHIDLmBNQQnRRaV2K47jtJ6zjh1eOU5UHKyDtDDYf80Idpw==", "dev": true, "dependencies": { - "nx": "15.7.1" + "nx": "15.9.4" } }, "node_modules/@nrwl/devkit": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.7.1.tgz", - "integrity": "sha512-u+4iBukrvrSQbKktnAcEuFzthq5ZGLpjE+SYUgg5+H6R76U0uelupdJ14qTWzIbSjlWLG53YmRZsJaIJ9EUG/w==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.4.tgz", + "integrity": "sha512-mUX1kXTuPMdTzFxIzH+MsSNvdppOmstPDOEtiGFZJTuJ625ki0HhNJILO3N2mJ7MeMrLqIlAiNdvelQaObxYsQ==", "dev": true, "dependencies": { - "@phenomnomnominal/tsquery": "4.1.1", "ejs": "^3.1.7", "ignore": "^5.0.4", "semver": "7.3.4", + "tmp": "~0.2.1", "tslib": "^2.3.0" }, "peerDependencies": { @@ -2180,10 +1751,22 @@ "node": ">=10" } }, + "node_modules/@nrwl/devkit/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, "node_modules/@nrwl/nx-darwin-arm64": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.7.1.tgz", - "integrity": "sha512-YaNq1kP0xoaG2SDTjAzc0ZXAzRHE4obnEtVbisMzGRJkMld7SiOzYZAoaLJI6mZJuc7cIzUlA+wFkE2e21q5tQ==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.4.tgz", + "integrity": "sha512-XnvrnT9BJsgThY/4xUcYtE077ERq/img8CkRj7MOOBNOh0/nVcR4LGbBKDHtwE3HPk0ikyS/SxRyNa9msvi3QQ==", "cpu": [ "arm64" ], @@ -2197,9 +1780,9 @@ } }, "node_modules/@nrwl/nx-darwin-x64": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.7.1.tgz", - "integrity": "sha512-G/0joeAQfZm4FuqaDyOAam912EfVS6mlG1gFrzp3P/kzzE+gxt/I+iQHNmEOl8Dnp4ercTgW6epUEQ03teRLOA==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.4.tgz", + "integrity": "sha512-WKSfSlpVMLchpXkax0geeUNyhvNxwO7qUz/s0/HJWBekt8fizwKDwDj1gP7fOu+YWb/tHiSscbR1km8PtdjhQw==", "cpu": [ "x64" ], @@ -2213,9 +1796,9 @@ } }, "node_modules/@nrwl/nx-linux-arm-gnueabihf": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.7.1.tgz", - "integrity": "sha512-WeZndiNyAPolRc08C4LLY7y+b3g9wAsJVVTWugW9PyaTMD19KY6oFkNG5gg1W0InoGISazW5fUissE+911kgog==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.4.tgz", + "integrity": "sha512-a/b4PP7lP/Cgrh0LjC4O2YTt5pyf4DQTGtuE8qlo8o486UiofCtk4QGJX72q80s23L0ejCaKY2ULKx/3zMLjuA==", "cpu": [ "arm" ], @@ -2229,9 +1812,9 @@ } }, "node_modules/@nrwl/nx-linux-arm64-gnu": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.7.1.tgz", - "integrity": "sha512-efDPQl2Z1YLnUlEKyu7lsvRnFIRXmvnbkH2nRv3HNHVufnHjjQ41UBw2Gqz4WUrEpmBz2Xq31cYUZluUP7/o6Q==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.4.tgz", + "integrity": "sha512-ibBV8fMhSfLVd/2WzcDuUm32BoZsattuKkvMmOoyU6Pzoznc3AqyDjJR4xCIoAn5Rf+Nu1oeQONr5FAtb1Ugow==", "cpu": [ "arm64" ], @@ -2245,9 +1828,9 @@ } }, "node_modules/@nrwl/nx-linux-arm64-musl": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.7.1.tgz", - "integrity": "sha512-Esv+ko6vMrI0HLnIXs76up7zUCaDfjArgn2TfMxvPjDEp4qmExiI8gmSh5JM1kC0MkHb4HghCnsSQ86Gg1BRiQ==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.4.tgz", + "integrity": "sha512-iIjvVYd7+uM4jVD461+PvU5XTALgSvJOODUaMRGOoDl0KlMuTe6pQZlw0eXjl5rcTd6paKaVFWT5j6awr8kj7w==", "cpu": [ "arm64" ], @@ -2261,9 +1844,9 @@ } }, "node_modules/@nrwl/nx-linux-x64-gnu": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.7.1.tgz", - "integrity": "sha512-9ZkeCHhk+a3ok8CBEcbIheWrlp+gY1KdhmHOksJuDsHTcRMirbZ9HWm+/UIYB2FVaEENCBgcA4akwXRDaxrmYw==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.4.tgz", + "integrity": "sha512-q4OyH72mdrE4KellBWtwpr5EwfxHKNoFP9//7FAILO68ROh0rpMd7YQMlTB7T04UEUHjKEEsFGTlVXIee3Viwg==", "cpu": [ "x64" ], @@ -2277,9 +1860,9 @@ } }, "node_modules/@nrwl/nx-linux-x64-musl": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.7.1.tgz", - "integrity": "sha512-FOs8FhcACKfYjL5l/mIHUESs25KPsZsp3TWrpCYgQNkrvNV9lWbrQ+h9acWf23hR2FYVk7xKVo4wFYsUqF+DbA==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.4.tgz", + "integrity": "sha512-67+/XNMR1CgLPyeGX8jqSG6l8yYD0iiwUgcu1Vaxq6N05WwnqVisIW8XzLSRUtKt4WyVQgOWk3aspImpMVOG3Q==", "cpu": [ "x64" ], @@ -2293,9 +1876,9 @@ } }, "node_modules/@nrwl/nx-win32-arm64-msvc": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.7.1.tgz", - "integrity": "sha512-JEhy0ac+ivhIdAPWqEfAN9EqFznKA5vt4oVjIqjDysqgzN9GBKOeo7gphdii9WyqrIKEbOs1L++ADWXw1gev6Q==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.4.tgz", + "integrity": "sha512-2rEsq3eOGVCYpYJn2tTJkOGNJm/U8rP/FmqtZXYa6VJv/00XP3Gl00IXFEDaYV6rZo7SWqLxtEPUbjK5LwPzZA==", "cpu": [ "arm64" ], @@ -2309,9 +1892,9 @@ } }, "node_modules/@nrwl/nx-win32-x64-msvc": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.7.1.tgz", - "integrity": "sha512-GLh5TXKViRb55jBviZSZweavilUr2frmb/8iv3Fz7MPS6VvA+axIqNhuVcTJP1H3C/1yt3Nx5wwsXdWgg3mZpw==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.4.tgz", + "integrity": "sha512-bogVju4Z/hy1jbppqaTNbmV1R4Kg0R5fKxXAXC2LaL7FL0dup31wPumdV+mXttXBNOBDjV8V/Oz1ZqdmxpOJUw==", "cpu": [ "x64" ], @@ -2325,12 +1908,12 @@ } }, "node_modules/@nrwl/tao": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.7.1.tgz", - "integrity": "sha512-pCKIijUGUAht+Lfy9P4WaHxTHnqqr+vaC00vX6XSlkRoFAUFYh7lhbOHDSKOwBG016ZoG73P1IIMg0um4ybd5w==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.4.tgz", + "integrity": "sha512-m90iz8UsXx1rgPm1dxsBQjSrCViWYZIrp8bpwjSCW24j3kifyilYSXGuKaRwZwUn7eNmH/kZcI9/8qeGIPF4Sg==", "dev": true, "dependencies": { - "nx": "15.7.1" + "nx": "15.9.4" }, "bin": { "tao": "index.js" @@ -2395,9 +1978,9 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==", + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.1.1.tgz", + "integrity": "sha512-/X7Gh/qWiWaooJmUnYD48SYy72fyrk2ceisOSe89JojK7r0j8YrTwYpDi76kI+c6QiqX1KSgdoBTMJvktsDkYw==", "dev": true }, "node_modules/@octokit/plugin-enterprise-rest": { @@ -2523,12 +2106,12 @@ } }, "node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.2.1.tgz", + "integrity": "sha512-Vx4keMiD/CAiwVFasLcH0xBSVbKIHebIZke9i7ZbUWGNN4vJFWSYH6Nvga7UY9NIJCGa6x3QG849XTbi5wYmkA==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "@octokit/openapi-types": "^17.1.1" } }, "node_modules/@parcel/watcher": { @@ -2549,18 +2132,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@phenomnomnominal/tsquery": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", - "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", - "dev": true, - "dependencies": { - "esquery": "^1.0.1" - }, - "peerDependencies": { - "typescript": "^3 || ^4" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -2743,9 +2314,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, "node_modules/@types/yargs": { @@ -2764,15 +2335,15 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz", - "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz", + "integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/type-utils": "5.59.2", - "@typescript-eslint/utils": "5.59.2", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/type-utils": "5.59.5", + "@typescript-eslint/utils": "5.59.5", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -2798,14 +2369,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", - "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz", + "integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/typescript-estree": "5.59.5", "debug": "^4.3.4" }, "engines": { @@ -2825,13 +2396,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", - "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", + "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2" + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2842,13 +2413,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz", - "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz", + "integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.2", - "@typescript-eslint/utils": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.5", + "@typescript-eslint/utils": "5.59.5", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -2869,9 +2440,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", - "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2882,13 +2453,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", - "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", + "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2909,17 +2480,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz", - "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz", + "integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/typescript-estree": "5.59.5", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -2935,12 +2506,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", - "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/types": "5.59.5", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -2958,9 +2529,9 @@ "dev": true }, "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.39", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.39.tgz", - "integrity": "sha512-BsD4zq3EVmaHqlynXTceNuEFAtrfToV4fI9GA54moKlWZL4Eb2eXrhgf1jV2nMYx18SZxYO4Jc5Kf1sCDNRjOg==", + "version": "3.0.0-rc.43", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.43.tgz", + "integrity": "sha512-AhFF3mIDfA+jEwQv2WMHmiYhOvmdbh2qhUkDVQfiqzQtUwS4BgoWwom5NpSPg4Ix5vOul+w1690Bt21CkVLpgg==", "dev": true, "dependencies": { "js-yaml": "^3.10.0", @@ -3253,9 +2824,9 @@ } }, "node_modules/axios": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", - "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -4501,9 +4072,9 @@ "dev": true }, "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "dependencies": { "jake": "^10.8.5" @@ -4635,15 +4206,15 @@ } }, "node_modules/eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.40.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -4654,8 +4225,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -4726,9 +4297,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4763,14 +4334,14 @@ } }, "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", "dev": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5276,10 +4847,34 @@ "node": ">=6.9.0" } }, + "node_modules/get-pkg-repo/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-pkg-repo/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -5644,27 +5239,15 @@ } }, "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/http-cache-semantics": { @@ -6003,9 +5586,9 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -6578,14 +6161,14 @@ } }, "node_modules/lerna": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.1.tgz", - "integrity": "sha512-WJtrvmbmR+6hMB9b5pvsxJzew0lRL6hARgW/My9BM4vYaxwPIA2I0riv3qQu5Zd7lYse7FEqJkTnl9Kn1bXhLA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz", + "integrity": "sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg==", "dev": true, "dependencies": { - "@lerna/child-process": "6.6.1", - "@lerna/create": "6.6.1", - "@lerna/legacy-package-management": "6.6.1", + "@lerna/child-process": "6.6.2", + "@lerna/create": "6.6.2", + "@lerna/legacy-package-management": "6.6.2", "@npmcli/arborist": "6.2.3", "@npmcli/run-script": "4.1.7", "@nrwl/devkit": ">=15.5.2 < 16", @@ -6619,8 +6202,8 @@ "is-ci": "2.0.0", "is-stream": "2.0.0", "js-yaml": "^4.1.0", - "libnpmaccess": "6.0.3", - "libnpmpublish": "6.0.4", + "libnpmaccess": "^6.0.3", + "libnpmpublish": "7.1.4", "load-json-file": "6.2.0", "make-dir": "3.1.0", "minimatch": "3.0.5", @@ -6637,7 +6220,7 @@ "p-queue": "6.6.2", "p-reduce": "2.1.0", "p-waterfall": "2.1.1", - "pacote": "13.6.2", + "pacote": "15.1.1", "pify": "5.0.0", "read-cmd-shim": "3.0.0", "read-package-json": "5.0.1", @@ -6664,7 +6247,7 @@ "lerna": "dist/cli.js" }, "engines": { - "node": "^14.15.0 || >=16.0.0" + "node": "^14.17.0 || >=16.0.0" } }, "node_modules/lerna/node_modules/@npmcli/fs": { @@ -6822,18 +6405,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lerna/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/lerna/node_modules/make-fetch-happen": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", @@ -7122,175 +6693,401 @@ } }, "node_modules/libnpmpublish": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.4.tgz", - "integrity": "sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.1.4.tgz", + "integrity": "sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg==", "dev": true, "dependencies": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", "semver": "^7.3.7", - "ssri": "^9.0.0" + "sigstore": "^1.4.0", + "ssri": "^10.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/libnpmpublish/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "node_modules/libnpmpublish/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/libnpmpublish/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/libnpmpublish/node_modules/cacache": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", - "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "node_modules/libnpmpublish/node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^5.0.0", - "strip-bom": "^4.0.0", - "type-fest": "^0.6.0" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { "node": ">=8" } }, - "node_modules/load-json-file/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/libnpmpublish/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/libnpmpublish/node_modules/glob": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/libnpmpublish/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "node_modules/libnpmpublish/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "node_modules/libnpmpublish/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/libnpmpublish/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, - "funding": { + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/libnpmpublish/node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/libnpmpublish/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, @@ -7945,6 +7742,30 @@ "node": ">=10" } }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-url": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", @@ -7970,9 +7791,9 @@ } }, "node_modules/npm-check-updates": { - "version": "16.10.9", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.9.tgz", - "integrity": "sha512-J3ggasYJIFB+XqAT9qQcAAOKehpCXGRoZWlK4/u5YAOZB6hmM4CxdrxCA7A34hBK5zaPIEBnMqWBSV7mU6nixg==", + "version": "16.10.12", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.12.tgz", + "integrity": "sha512-js/Gg9+5RTyOQZnmFcPswLxf4sK/H5AE/8bl4tkleLJTC1gXhQqqELUFwXqppNvx488aXxN52ZY9k9MSSvEW2A==", "dev": true, "dependencies": { "chalk": "^5.2.0", @@ -7989,7 +7810,7 @@ "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^8.0.3", + "minimatch": "^9.0.0", "p-map": "^4.0.0", "pacote": "15.1.1", "parse-github-url": "^1.0.2", @@ -7997,8 +7818,8 @@ "prompts-ncu": "^3.0.0", "rc-config-loader": "^4.1.2", "remote-git-tags": "^3.0.0", - "rimraf": "^4.4.1", - "semver": "^7.3.8", + "rimraf": "^5.0.0", + "semver": "^7.4.0", "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^2.0.1", @@ -8014,97 +7835,13 @@ "node": ">=14.14" } }, - "node_modules/npm-check-updates/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "node_modules/npm-check-updates/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/@npmcli/git": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.3.tgz", - "integrity": "sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==", - "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "dependencies": { - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/@npmcli/run-script": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.0.tgz", - "integrity": "sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/cacache": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", - "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^8.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "balanced-match": "^1.0.0" } }, "node_modules/npm-check-updates/node_modules/chalk": { @@ -8119,49 +7856,28 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm-check-updates/node_modules/fs-minipass": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", - "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", - "dev": true, - "dependencies": { - "minipass": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm-check-updates/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm-check-updates/node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/npm-check-updates/node_modules/hosted-git-info": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", @@ -8174,33 +7890,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-check-updates/node_modules/ignore-walk": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.1.tgz", - "integrity": "sha512-/c8MxUAqpRccq+LyDOecwF+9KqajueJHh8fz7g3YqjMZt+NSfJzx05zrKiXwa2sKwFCzaiZ5qUVfRj0pmxixEA==", - "dev": true, - "dependencies": { - "minimatch": "^6.1.6" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/ignore-walk/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/npm-check-updates/node_modules/ini": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.0.tgz", @@ -8210,45 +7899,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/make-fetch-happen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", - "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -8261,298 +7915,87 @@ } }, "node_modules/npm-check-updates/node_modules/minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/minipass-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", - "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "node_modules/npm-check-updates/node_modules/rimraf": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.0.tgz", + "integrity": "sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==", "dev": true, "dependencies": { - "minipass": "^4.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "glob": "^10.0.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14" }, - "optionalDependencies": { - "encoding": "^0.1.13" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm-check-updates/node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "node_modules/npm-check-updates/node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/npm-check-updates/node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "node_modules/npm-check-updates/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "yallist": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/npm-check-updates/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "node_modules/npm-check-updates/node_modules/strip-json-comments": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", + "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/npm-package-arg/node_modules/hosted-git-info": { + "node_modules/npm-install-checks": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", + "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", "dev": true, "dependencies": { - "lru-cache": "^7.5.1" + "semver": "^7.1.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", - "dev": true, - "dependencies": { - "ignore-walk": "^6.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/npm-registry-fetch": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", - "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/pacote": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", - "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", - "dev": true, - "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^4.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/read-package-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.0.tgz", - "integrity": "sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==", - "dev": true, - "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", - "dev": true, - "dependencies": { - "glob": "^9.2.0" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-check-updates/node_modules/rimraf/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-check-updates/node_modules/ssri": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", - "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", - "dev": true, - "dependencies": { - "minipass": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/strip-json-comments": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", - "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-check-updates/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-install-checks": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", - "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", - "dev": true, - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", + "node_modules/npm-normalize-package-bin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", + "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -8699,18 +8142,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-pick-manifest/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", @@ -8820,14 +8251,14 @@ } }, "node_modules/nx": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/nx/-/nx-15.7.1.tgz", - "integrity": "sha512-8Gtqazww3rCWxJ+pgB3JDU6hQeA+qRMYh77mXvf5CFQPszqEqvvuiJtKzcieWjxn/IZpeyVRjmPypkEOM6BbHw==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/nx/-/nx-15.9.4.tgz", + "integrity": "sha512-P1G4t59UvE/lkHyruLeSOB5ZuNyh01IwU0tTUOi8f9s/NbP7+OQ8MYVwDV74JHTr6mQgjlS+n+4Eox8tVm9itA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@nrwl/cli": "15.7.1", - "@nrwl/tao": "15.7.1", + "@nrwl/cli": "15.9.4", + "@nrwl/tao": "15.9.4", "@parcel/watcher": "2.0.4", "@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/parsers": "^3.0.0-rc.18", @@ -8866,15 +8297,15 @@ "nx": "bin/nx.js" }, "optionalDependencies": { - "@nrwl/nx-darwin-arm64": "15.7.1", - "@nrwl/nx-darwin-x64": "15.7.1", - "@nrwl/nx-linux-arm-gnueabihf": "15.7.1", - "@nrwl/nx-linux-arm64-gnu": "15.7.1", - "@nrwl/nx-linux-arm64-musl": "15.7.1", - "@nrwl/nx-linux-x64-gnu": "15.7.1", - "@nrwl/nx-linux-x64-musl": "15.7.1", - "@nrwl/nx-win32-arm64-msvc": "15.7.1", - "@nrwl/nx-win32-x64-msvc": "15.7.1" + "@nrwl/nx-darwin-arm64": "15.9.4", + "@nrwl/nx-darwin-x64": "15.9.4", + "@nrwl/nx-linux-arm-gnueabihf": "15.9.4", + "@nrwl/nx-linux-arm64-gnu": "15.9.4", + "@nrwl/nx-linux-arm64-musl": "15.9.4", + "@nrwl/nx-linux-x64-gnu": "15.9.4", + "@nrwl/nx-linux-x64-musl": "15.9.4", + "@nrwl/nx-win32-arm64-msvc": "15.9.4", + "@nrwl/nx-win32-x64-msvc": "15.9.4" }, "peerDependencies": { "@swc-node/register": "^1.4.2", @@ -8906,9 +8337,9 @@ } }, "node_modules/nx/node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -9009,9 +8440,9 @@ } }, "node_modules/nx/node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { "cliui": "^8.0.1", @@ -9074,9 +8505,9 @@ } }, "node_modules/open": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz", - "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "dependencies": { "define-lazy-prop": "^2.0.0", @@ -9260,188 +8691,482 @@ "node": ">=8" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "dev": true, + "dependencies": { + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", + "dev": true, + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pacote": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", + "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", + "dev": true, + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^4.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/pacote/node_modules/cacache": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/cacache/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/fs-minipass/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/glob": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pacote/node_modules/glob/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "dev": true, + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/make-fetch-happen/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pacote/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/pacote/node_modules/minipass-fetch/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/p-waterfall": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", - "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "node_modules/pacote/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "dependencies": { - "p-reduce": "^2.0.0" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/package-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", - "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", + "node_modules/pacote/node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, "dependencies": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" + "ignore-walk": "^6.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", - "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "node_modules/pacote/node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "node_modules/pacote/node_modules/npm-registry-fetch/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/pacote/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/pacote/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "node_modules/pacote/node_modules/read-package-json": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.3.tgz", + "integrity": "sha512-4QbpReW4kxFgeBQ0vPAqh2y8sXEB3D4t3jsXbJKIhBiF80KT6XRo45reqwtftju5J6ru1ax06A2Gb/wM1qCOEQ==", "dev": true, "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "node_modules/pacote/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "dependencies": { - "semver": "^7.1.1" + "minipass": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true + "node_modules/pacote/node_modules/ssri/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/pacote/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/pacote/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "unique-slug": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/npm-pick-manifest": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", - "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", + "node_modules/pacote/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "imurmurhash": "^0.1.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "node_modules/pacote/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "node_modules/pacote/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/parent-module": { @@ -10374,12 +10099,12 @@ } }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -11489,9 +11214,9 @@ } }, "node_modules/tsconfig-paths": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", - "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "dependencies": { "json5": "^2.2.2", @@ -12462,14 +12187,14 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.1", + "espree": "^9.5.2", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -12479,9 +12204,9 @@ } }, "@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", + "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", "dev": true }, "@gar/promisify": { @@ -12535,9 +12260,9 @@ } }, "@lerna/child-process": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.1.tgz", - "integrity": "sha512-yUCDCcRNNbI9UUsUB6FYEmDHpo5Tn/f0q5D7vhDP4i6Or8kBj82y7+e31hwfLvK2ykOYlDVs2MxAluH/+QUBOQ==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.2.tgz", + "integrity": "sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -12546,18 +12271,18 @@ } }, "@lerna/create": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.1.tgz", - "integrity": "sha512-GDmHFhQ0mr0RcXWXrsLyfMV6ch/dZV/Ped1e6sFVQhsLL9P+FFXX1ZWxa/dQQ90VWF2qWcmK0+S/L3kUz2xvTA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.2.tgz", + "integrity": "sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ==", "dev": true, "requires": { - "@lerna/child-process": "6.6.1", + "@lerna/child-process": "6.6.2", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "init-package-json": "^3.0.2", "npm-package-arg": "8.1.1", "p-reduce": "^2.1.0", - "pacote": "^13.6.1", + "pacote": "15.1.1", "pify": "^5.0.0", "semver": "^7.3.4", "slash": "^3.0.0", @@ -12567,9 +12292,9 @@ } }, "@lerna/legacy-package-management": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.1.tgz", - "integrity": "sha512-0EYxSFr34VgeudA5rvjGJSY7s4seITMVB7AJ9LRFv9QDUk6jpvapV13ZAaKnhDTxX5vNCfnJuWHXXWq0KyPF/Q==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.2.tgz", + "integrity": "sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg==", "dev": true, "requires": { "@npmcli/arborist": "6.2.3", @@ -12601,7 +12326,7 @@ "inquirer": "8.2.4", "is-ci": "2.0.0", "is-stream": "2.0.0", - "libnpmpublish": "6.0.4", + "libnpmpublish": "7.1.4", "load-json-file": "6.2.0", "make-dir": "3.1.0", "minimatch": "3.0.5", @@ -12615,7 +12340,7 @@ "p-map-series": "2.1.0", "p-queue": "6.6.2", "p-waterfall": "2.1.1", - "pacote": "13.6.2", + "pacote": "15.1.1", "pify": "5.0.0", "pretty-format": "29.4.3", "read-cmd-shim": "3.0.0", @@ -12646,9 +12371,9 @@ } }, "cacache": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", @@ -12726,9 +12451,9 @@ "dev": true }, "glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "requires": { "foreground-child": "^3.1.0", @@ -12773,15 +12498,6 @@ "is-glob": "^4.0.1" } }, - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, "inquirer": { "version": "8.2.4", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", @@ -13038,22 +12754,6 @@ "semver": "^7.3.5" } }, - "@npmcli/git": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", - "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - } - }, "@npmcli/promise-spawn": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", @@ -13064,9 +12764,9 @@ } }, "@npmcli/run-script": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.1.tgz", - "integrity": "sha512-Yi04ZSold8jcbBJD/ahKMJSQCQifH8DAbMwkBvoLaTpGFxzHC3B/5ZyoVR69q/4xedz84tvi9DJOJjNe17h+LA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", "dev": true, "requires": { "@npmcli/node-gyp": "^3.0.0", @@ -13106,9 +12806,9 @@ } }, "cacache": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", @@ -13151,9 +12851,9 @@ } }, "glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "requires": { "foreground-child": "^3.1.0", @@ -13174,35 +12874,6 @@ } } }, - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", - "dev": true, - "requires": { - "minimatch": "^9.0.0" - }, - "dependencies": { - "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, "json-parse-even-better-errors": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", @@ -13255,20 +12926,8 @@ "requires": { "encoding": "^0.1.13", "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, - "requires": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" } }, "npm-package-arg": { @@ -13283,15 +12942,6 @@ "validate-npm-package-name": "^5.0.0" } }, - "npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", - "dev": true, - "requires": { - "ignore-walk": "^6.0.0" - } - }, "npm-registry-fetch": { "version": "14.0.5", "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", @@ -13319,54 +12969,16 @@ "set-blocking": "^2.0.0" } }, - "pacote": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.3.tgz", - "integrity": "sha512-aRts8cZqxiJVDitmAh+3z+FxuO3tLNWEmwDRPEpDDiZJaRz06clP4XX112ynMT5uF0QNoMPajBBHnaStUEPJXA==", - "dev": true, - "requires": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - } - }, "proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true }, - "read-package-json": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.2.tgz", - "integrity": "sha512-Ismd3km1d/FGzcjm8fBf/4ktkyd0t6pbkjYqu1gvRzOzN+aTxi1eigdZp7441TlszQ+GsdYezgS+g9cgy8QK9w==", - "dev": true, - "requires": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - } - }, "readable-stream": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", - "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.0.tgz", + "integrity": "sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==", "dev": true, "requires": { "abort-controller": "^3.0.0", @@ -13439,68 +13051,43 @@ } }, "@npmcli/git": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", - "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", + "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", "dev": true, "requires": { - "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^2.0.2" + "which": "^3.0.0" }, "dependencies": { - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, "requires": { - "semver": "^7.1.1" + "which": "^3.0.0" } }, - "npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true }, - "npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "npm-pick-manifest": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", - "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", + "which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "isexe": "^2.0.0" } } } @@ -13537,9 +13124,9 @@ } }, "glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "requires": { "foreground-child": "^3.1.0", @@ -13587,44 +13174,6 @@ "semver": "^7.3.5" } }, - "@npmcli/git": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", - "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - } - }, - "@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "requires": { - "which": "^3.0.0" - } - }, - "@npmcli/run-script": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.1.tgz", - "integrity": "sha512-Yi04ZSold8jcbBJD/ahKMJSQCQifH8DAbMwkBvoLaTpGFxzHC3B/5ZyoVR69q/4xedz84tvi9DJOJjNe17h+LA==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - } - }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -13635,9 +13184,9 @@ } }, "cacache": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", @@ -13664,9 +13213,9 @@ } }, "glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "requires": { "foreground-child": "^3.1.0", @@ -13676,172 +13225,27 @@ "path-scurry": "^1.7.0" } }, - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", - "dev": true, - "requires": { - "minimatch": "^9.0.0" - } - }, "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true - }, - "make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - } - }, - "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, - "requires": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - } - }, - "npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dev": true, - "requires": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - } - }, - "npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", - "dev": true, - "requires": { - "ignore-walk": "^6.0.0" - } - }, - "npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dev": true, - "requires": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - } - }, - "pacote": { - "version": "15.1.3", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.3.tgz", - "integrity": "sha512-aRts8cZqxiJVDitmAh+3z+FxuO3tLNWEmwDRPEpDDiZJaRz06clP4XX112ynMT5uF0QNoMPajBBHnaStUEPJXA==", - "dev": true, - "requires": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - } - }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true }, - "read-package-json": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.2.tgz", - "integrity": "sha512-Ismd3km1d/FGzcjm8fBf/4ktkyd0t6pbkjYqu1gvRzOzN+aTxi1eigdZp7441TlszQ+GsdYezgS+g9cgy8QK9w==", + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, "requires": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" + "brace-expansion": "^2.0.1" } }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, "ssri": { "version": "10.0.4", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", @@ -13868,24 +13272,6 @@ "requires": { "imurmurhash": "^0.1.4" } - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -13984,24 +13370,24 @@ } }, "@nrwl/cli": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.7.1.tgz", - "integrity": "sha512-33RcH5Af2BidQvnTGlDTrUWJ6Eul5aA0LeqYmEavYb+I0kzYMqdBzBCLgQT/13gAdoQauTWUO4g3eFhoHnCNrg==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.4.tgz", + "integrity": "sha512-FoiGFCLpb/r4HXCM3KYqT0xteP+MRV6bIHjz3bdPHIDLmBNQQnRRaV2K47jtJ6zjh1eOU5UHKyDtDDYf80Idpw==", "dev": true, "requires": { - "nx": "15.7.1" + "nx": "15.9.4" } }, "@nrwl/devkit": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.7.1.tgz", - "integrity": "sha512-u+4iBukrvrSQbKktnAcEuFzthq5ZGLpjE+SYUgg5+H6R76U0uelupdJ14qTWzIbSjlWLG53YmRZsJaIJ9EUG/w==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.4.tgz", + "integrity": "sha512-mUX1kXTuPMdTzFxIzH+MsSNvdppOmstPDOEtiGFZJTuJ625ki0HhNJILO3N2mJ7MeMrLqIlAiNdvelQaObxYsQ==", "dev": true, "requires": { - "@phenomnomnominal/tsquery": "4.1.1", "ejs": "^3.1.7", "ignore": "^5.0.4", "semver": "7.3.4", + "tmp": "~0.2.1", "tslib": "^2.3.0" }, "dependencies": { @@ -14022,79 +13408,88 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } } } }, "@nrwl/nx-darwin-arm64": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.7.1.tgz", - "integrity": "sha512-YaNq1kP0xoaG2SDTjAzc0ZXAzRHE4obnEtVbisMzGRJkMld7SiOzYZAoaLJI6mZJuc7cIzUlA+wFkE2e21q5tQ==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.4.tgz", + "integrity": "sha512-XnvrnT9BJsgThY/4xUcYtE077ERq/img8CkRj7MOOBNOh0/nVcR4LGbBKDHtwE3HPk0ikyS/SxRyNa9msvi3QQ==", "dev": true, "optional": true }, "@nrwl/nx-darwin-x64": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.7.1.tgz", - "integrity": "sha512-G/0joeAQfZm4FuqaDyOAam912EfVS6mlG1gFrzp3P/kzzE+gxt/I+iQHNmEOl8Dnp4ercTgW6epUEQ03teRLOA==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.4.tgz", + "integrity": "sha512-WKSfSlpVMLchpXkax0geeUNyhvNxwO7qUz/s0/HJWBekt8fizwKDwDj1gP7fOu+YWb/tHiSscbR1km8PtdjhQw==", "dev": true, "optional": true }, "@nrwl/nx-linux-arm-gnueabihf": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.7.1.tgz", - "integrity": "sha512-WeZndiNyAPolRc08C4LLY7y+b3g9wAsJVVTWugW9PyaTMD19KY6oFkNG5gg1W0InoGISazW5fUissE+911kgog==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.4.tgz", + "integrity": "sha512-a/b4PP7lP/Cgrh0LjC4O2YTt5pyf4DQTGtuE8qlo8o486UiofCtk4QGJX72q80s23L0ejCaKY2ULKx/3zMLjuA==", "dev": true, "optional": true }, "@nrwl/nx-linux-arm64-gnu": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.7.1.tgz", - "integrity": "sha512-efDPQl2Z1YLnUlEKyu7lsvRnFIRXmvnbkH2nRv3HNHVufnHjjQ41UBw2Gqz4WUrEpmBz2Xq31cYUZluUP7/o6Q==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.4.tgz", + "integrity": "sha512-ibBV8fMhSfLVd/2WzcDuUm32BoZsattuKkvMmOoyU6Pzoznc3AqyDjJR4xCIoAn5Rf+Nu1oeQONr5FAtb1Ugow==", "dev": true, "optional": true }, "@nrwl/nx-linux-arm64-musl": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.7.1.tgz", - "integrity": "sha512-Esv+ko6vMrI0HLnIXs76up7zUCaDfjArgn2TfMxvPjDEp4qmExiI8gmSh5JM1kC0MkHb4HghCnsSQ86Gg1BRiQ==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.4.tgz", + "integrity": "sha512-iIjvVYd7+uM4jVD461+PvU5XTALgSvJOODUaMRGOoDl0KlMuTe6pQZlw0eXjl5rcTd6paKaVFWT5j6awr8kj7w==", "dev": true, "optional": true }, "@nrwl/nx-linux-x64-gnu": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.7.1.tgz", - "integrity": "sha512-9ZkeCHhk+a3ok8CBEcbIheWrlp+gY1KdhmHOksJuDsHTcRMirbZ9HWm+/UIYB2FVaEENCBgcA4akwXRDaxrmYw==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.4.tgz", + "integrity": "sha512-q4OyH72mdrE4KellBWtwpr5EwfxHKNoFP9//7FAILO68ROh0rpMd7YQMlTB7T04UEUHjKEEsFGTlVXIee3Viwg==", "dev": true, "optional": true }, "@nrwl/nx-linux-x64-musl": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.7.1.tgz", - "integrity": "sha512-FOs8FhcACKfYjL5l/mIHUESs25KPsZsp3TWrpCYgQNkrvNV9lWbrQ+h9acWf23hR2FYVk7xKVo4wFYsUqF+DbA==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.4.tgz", + "integrity": "sha512-67+/XNMR1CgLPyeGX8jqSG6l8yYD0iiwUgcu1Vaxq6N05WwnqVisIW8XzLSRUtKt4WyVQgOWk3aspImpMVOG3Q==", "dev": true, "optional": true }, "@nrwl/nx-win32-arm64-msvc": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.7.1.tgz", - "integrity": "sha512-JEhy0ac+ivhIdAPWqEfAN9EqFznKA5vt4oVjIqjDysqgzN9GBKOeo7gphdii9WyqrIKEbOs1L++ADWXw1gev6Q==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.4.tgz", + "integrity": "sha512-2rEsq3eOGVCYpYJn2tTJkOGNJm/U8rP/FmqtZXYa6VJv/00XP3Gl00IXFEDaYV6rZo7SWqLxtEPUbjK5LwPzZA==", "dev": true, "optional": true }, "@nrwl/nx-win32-x64-msvc": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.7.1.tgz", - "integrity": "sha512-GLh5TXKViRb55jBviZSZweavilUr2frmb/8iv3Fz7MPS6VvA+axIqNhuVcTJP1H3C/1yt3Nx5wwsXdWgg3mZpw==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.4.tgz", + "integrity": "sha512-bogVju4Z/hy1jbppqaTNbmV1R4Kg0R5fKxXAXC2LaL7FL0dup31wPumdV+mXttXBNOBDjV8V/Oz1ZqdmxpOJUw==", "dev": true, "optional": true }, "@nrwl/tao": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.7.1.tgz", - "integrity": "sha512-pCKIijUGUAht+Lfy9P4WaHxTHnqqr+vaC00vX6XSlkRoFAUFYh7lhbOHDSKOwBG016ZoG73P1IIMg0um4ybd5w==", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.4.tgz", + "integrity": "sha512-m90iz8UsXx1rgPm1dxsBQjSrCViWYZIrp8bpwjSCW24j3kifyilYSXGuKaRwZwUn7eNmH/kZcI9/8qeGIPF4Sg==", "dev": true, "requires": { - "nx": "15.7.1" + "nx": "15.9.4" } }, "@octokit/auth-token": { @@ -14144,9 +13539,9 @@ } }, "@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==", + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.1.1.tgz", + "integrity": "sha512-/X7Gh/qWiWaooJmUnYD48SYy72fyrk2ceisOSe89JojK7r0j8YrTwYpDi76kI+c6QiqX1KSgdoBTMJvktsDkYw==", "dev": true }, "@octokit/plugin-enterprise-rest": { @@ -14253,12 +13648,12 @@ } }, "@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.2.1.tgz", + "integrity": "sha512-Vx4keMiD/CAiwVFasLcH0xBSVbKIHebIZke9i7ZbUWGNN4vJFWSYH6Nvga7UY9NIJCGa6x3QG849XTbi5wYmkA==", "dev": true, "requires": { - "@octokit/openapi-types": "^16.0.0" + "@octokit/openapi-types": "^17.1.1" } }, "@parcel/watcher": { @@ -14271,15 +13666,6 @@ "node-gyp-build": "^4.3.0" } }, - "@phenomnomnominal/tsquery": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", - "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", - "dev": true, - "requires": { - "esquery": "^1.0.1" - } - }, "@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -14428,9 +13814,9 @@ "dev": true }, "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, "@types/yargs": { @@ -14449,15 +13835,15 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz", - "integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz", + "integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/type-utils": "5.59.2", - "@typescript-eslint/utils": "5.59.2", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/type-utils": "5.59.5", + "@typescript-eslint/utils": "5.59.5", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -14467,53 +13853,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", - "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz", + "integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/typescript-estree": "5.59.5", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", - "integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", + "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2" + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5" } }, "@typescript-eslint/type-utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz", - "integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz", + "integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.59.2", - "@typescript-eslint/utils": "5.59.2", + "@typescript-eslint/typescript-estree": "5.59.5", + "@typescript-eslint/utils": "5.59.5", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz", - "integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz", - "integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", + "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/visitor-keys": "5.59.2", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -14522,28 +13908,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz", - "integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz", + "integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/typescript-estree": "5.59.5", "eslint-scope": "^5.1.1", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz", - "integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.2", + "@typescript-eslint/types": "5.59.5", "eslint-visitor-keys": "^3.3.0" } }, @@ -14554,9 +13940,9 @@ "dev": true }, "@yarnpkg/parsers": { - "version": "3.0.0-rc.39", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.39.tgz", - "integrity": "sha512-BsD4zq3EVmaHqlynXTceNuEFAtrfToV4fI9GA54moKlWZL4Eb2eXrhgf1jV2nMYx18SZxYO4Jc5Kf1sCDNRjOg==", + "version": "3.0.0-rc.43", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.43.tgz", + "integrity": "sha512-AhFF3mIDfA+jEwQv2WMHmiYhOvmdbh2qhUkDVQfiqzQtUwS4BgoWwom5NpSPg4Ix5vOul+w1690Bt21CkVLpgg==", "dev": true, "requires": { "js-yaml": "^3.10.0", @@ -14781,9 +14167,9 @@ "dev": true }, "axios": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", - "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -15702,9 +15088,9 @@ "dev": true }, "ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "requires": { "jake": "^10.8.5" @@ -15802,15 +15188,15 @@ "dev": true }, "eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.40.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -15821,8 +15207,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -15892,20 +15278,20 @@ } }, "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true }, "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" + "eslint-visitor-keys": "^3.4.1" } }, "esprima": { @@ -16285,10 +15671,28 @@ "yargs": "^16.2.0" }, "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -16563,23 +15967,12 @@ "dev": true }, "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } + "lru-cache": "^7.5.1" } }, "http-cache-semantics": { @@ -16841,9 +16234,9 @@ } }, "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -17260,14 +16653,14 @@ } }, "lerna": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.1.tgz", - "integrity": "sha512-WJtrvmbmR+6hMB9b5pvsxJzew0lRL6hARgW/My9BM4vYaxwPIA2I0riv3qQu5Zd7lYse7FEqJkTnl9Kn1bXhLA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz", + "integrity": "sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg==", "dev": true, "requires": { - "@lerna/child-process": "6.6.1", - "@lerna/create": "6.6.1", - "@lerna/legacy-package-management": "6.6.1", + "@lerna/child-process": "6.6.2", + "@lerna/create": "6.6.2", + "@lerna/legacy-package-management": "6.6.2", "@npmcli/arborist": "6.2.3", "@npmcli/run-script": "4.1.7", "@nrwl/devkit": ">=15.5.2 < 16", @@ -17301,8 +16694,8 @@ "is-ci": "2.0.0", "is-stream": "2.0.0", "js-yaml": "^4.1.0", - "libnpmaccess": "6.0.3", - "libnpmpublish": "6.0.4", + "libnpmaccess": "^6.0.3", + "libnpmpublish": "7.1.4", "load-json-file": "6.2.0", "make-dir": "3.1.0", "minimatch": "3.0.5", @@ -17319,7 +16712,7 @@ "p-queue": "6.6.2", "p-reduce": "2.1.0", "p-waterfall": "2.1.1", - "pacote": "13.6.2", + "pacote": "15.1.1", "pify": "5.0.0", "read-cmd-shim": "3.0.0", "read-package-json": "5.0.1", @@ -17460,15 +16853,6 @@ "is-glob": "^4.0.1" } }, - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, "make-fetch-happen": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", @@ -17693,49 +17077,216 @@ } }, "libnpmpublish": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.4.tgz", - "integrity": "sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.1.4.tgz", + "integrity": "sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg==", "dev": true, "requires": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", "semver": "^7.3.7", - "ssri": "^9.0.0" + "sigstore": "^1.4.0", + "ssri": "^10.0.1" }, "dependencies": { - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + } + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, + "glob": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + } + }, + "make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + } + }, + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "requires": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + } + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "requires": { - "lru-cache": "^7.5.1" + "minipass": "^5.0.0" } }, - "normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, "requires": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "unique-slug": "^4.0.0" } }, - "npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "imurmurhash": "^0.1.4" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" } } } @@ -18310,6 +17861,26 @@ "is-core-module": "^2.5.0", "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "normalize-url": { @@ -18328,9 +17899,9 @@ } }, "npm-check-updates": { - "version": "16.10.9", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.9.tgz", - "integrity": "sha512-J3ggasYJIFB+XqAT9qQcAAOKehpCXGRoZWlK4/u5YAOZB6hmM4CxdrxCA7A34hBK5zaPIEBnMqWBSV7mU6nixg==", + "version": "16.10.12", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.12.tgz", + "integrity": "sha512-js/Gg9+5RTyOQZnmFcPswLxf4sK/H5AE/8bl4tkleLJTC1gXhQqqELUFwXqppNvx488aXxN52ZY9k9MSSvEW2A==", "dev": true, "requires": { "chalk": "^5.2.0", @@ -18347,7 +17918,7 @@ "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^8.0.3", + "minimatch": "^9.0.0", "p-map": "^4.0.0", "pacote": "15.1.1", "parse-github-url": "^1.0.2", @@ -18355,411 +17926,108 @@ "prompts-ncu": "^3.0.0", "rc-config-loader": "^4.1.2", "remote-git-tags": "^3.0.0", - "rimraf": "^4.4.1", - "semver": "^7.3.8", + "rimraf": "^5.0.0", + "semver": "^7.4.0", "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^2.0.1", - "strip-json-comments": "^5.0.0", - "untildify": "^4.0.0", - "update-notifier": "^6.0.2" - }, - "dependencies": { - "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.3.tgz", - "integrity": "sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - } - }, - "@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "requires": { - "which": "^3.0.0" - } - }, - "@npmcli/run-script": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.0.tgz", - "integrity": "sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cacache": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", - "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^8.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - } - }, - "chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true - }, - "fs-minipass": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", - "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", - "dev": true, - "requires": { - "minipass": "^4.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "dependencies": { - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "ignore-walk": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.1.tgz", - "integrity": "sha512-/c8MxUAqpRccq+LyDOecwF+9KqajueJHh8fz7g3YqjMZt+NSfJzx05zrKiXwa2sKwFCzaiZ5qUVfRj0pmxixEA==", - "dev": true, - "requires": { - "minimatch": "^6.1.6" - }, - "dependencies": { - "minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "ini": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.0.tgz", - "integrity": "sha512-HLR38RSF2iulAzc3I/sma4CoYxQP844rPYCNfzGDOHqa/YqVlwuuZgBx6M50/X8dKgzk0cm1qRg3+47mK2N+cQ==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true - }, - "make-fetch-happen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", - "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - } - }, - "minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", - "dev": true - }, - "minipass-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", - "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", + "strip-json-comments": "^5.0.0", + "untildify": "^4.0.0", + "update-notifier": "^6.0.2" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { - "encoding": "^0.1.13", - "minipass": "^4.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "balanced-match": "^1.0.0" } }, - "normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, - "requires": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "dependencies": { - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - } - } + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true }, - "npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "glob": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "requires": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - } + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" } }, - "npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "requires": { - "ignore-walk": "^6.0.0" + "lru-cache": "^7.5.1" } }, - "npm-registry-fetch": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", - "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", - "dev": true, - "requires": { - "make-fetch-happen": "^11.0.0", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - } + "ini": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.0.tgz", + "integrity": "sha512-HLR38RSF2iulAzc3I/sma4CoYxQP844rPYCNfzGDOHqa/YqVlwuuZgBx6M50/X8dKgzk0cm1qRg3+47mK2N+cQ==", + "dev": true }, - "pacote": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", - "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, "requires": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^4.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" + "brace-expansion": "^2.0.1" } }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true }, - "read-package-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.0.tgz", - "integrity": "sha512-b/9jxWJ8EwogJPpv99ma+QwtqB7FSl3+V6UXS7Aaay8/5VwMY50oIFooY1UKXMWpfNCM6T/PoGqa5GD1g9xf9w==", + "rimraf": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.0.tgz", + "integrity": "sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==", "dev": true, "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" + "glob": "^10.0.0" } }, - "rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "requires": { - "glob": "^9.2.0" + "lru-cache": "^6.0.0" }, "dependencies": { - "glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "yallist": "^4.0.0" } } } }, - "ssri": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", - "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", - "dev": true, - "requires": { - "minipass": "^4.0.0" - } - }, "strip-json-comments": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", "dev": true - }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -18896,15 +18164,6 @@ "semver": "^7.3.5" }, "dependencies": { - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, "npm-package-arg": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", @@ -18994,22 +18253,22 @@ } }, "nx": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/nx/-/nx-15.7.1.tgz", - "integrity": "sha512-8Gtqazww3rCWxJ+pgB3JDU6hQeA+qRMYh77mXvf5CFQPszqEqvvuiJtKzcieWjxn/IZpeyVRjmPypkEOM6BbHw==", - "dev": true, - "requires": { - "@nrwl/cli": "15.7.1", - "@nrwl/nx-darwin-arm64": "15.7.1", - "@nrwl/nx-darwin-x64": "15.7.1", - "@nrwl/nx-linux-arm-gnueabihf": "15.7.1", - "@nrwl/nx-linux-arm64-gnu": "15.7.1", - "@nrwl/nx-linux-arm64-musl": "15.7.1", - "@nrwl/nx-linux-x64-gnu": "15.7.1", - "@nrwl/nx-linux-x64-musl": "15.7.1", - "@nrwl/nx-win32-arm64-msvc": "15.7.1", - "@nrwl/nx-win32-x64-msvc": "15.7.1", - "@nrwl/tao": "15.7.1", + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/nx/-/nx-15.9.4.tgz", + "integrity": "sha512-P1G4t59UvE/lkHyruLeSOB5ZuNyh01IwU0tTUOi8f9s/NbP7+OQ8MYVwDV74JHTr6mQgjlS+n+4Eox8tVm9itA==", + "dev": true, + "requires": { + "@nrwl/cli": "15.9.4", + "@nrwl/nx-darwin-arm64": "15.9.4", + "@nrwl/nx-darwin-x64": "15.9.4", + "@nrwl/nx-linux-arm-gnueabihf": "15.9.4", + "@nrwl/nx-linux-arm64-gnu": "15.9.4", + "@nrwl/nx-linux-arm64-musl": "15.9.4", + "@nrwl/nx-linux-x64-gnu": "15.9.4", + "@nrwl/nx-linux-x64-musl": "15.9.4", + "@nrwl/nx-win32-arm64-msvc": "15.9.4", + "@nrwl/nx-win32-x64-msvc": "15.9.4", + "@nrwl/tao": "15.9.4", "@parcel/watcher": "2.0.4", "@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/parsers": "^3.0.0-rc.18", @@ -19059,9 +18318,9 @@ } }, "fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -19135,9 +18394,9 @@ } }, "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { "cliui": "^8.0.1", @@ -19189,9 +18448,9 @@ } }, "open": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz", - "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -19340,117 +18599,343 @@ } }, "pacote": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", - "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", + "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", "dev": true, "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^4.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.0.0", + "ssri": "^10.0.0", "tar": "^6.1.11" }, "dependencies": { - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "requires": { + "which": "^3.0.0" + } + }, + "@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } + } + }, + "fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "minipass": "^5.0.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } } }, - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "glob": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", "dev": true, "requires": { - "lru-cache": "^7.5.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } } }, - "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", "dev": true, "requires": { - "npm-normalize-package-bin": "^1.0.1" + "minimatch": "^9.0.0" } }, - "npm-install-checks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + }, + "make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } + } + }, + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dev": true, "requires": { - "semver": "^7.1.1" + "brace-expansion": "^2.0.1" } }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true }, + "minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, "npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-name": "^5.0.0" + } + }, + "npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "requires": { + "ignore-walk": "^6.0.0" } }, - "npm-pick-manifest": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", - "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", + "npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true } } }, - "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "read-package-json": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.3.tgz", + "integrity": "sha512-4QbpReW4kxFgeBQ0vPAqh2y8sXEB3D4t3jsXbJKIhBiF80KT6XRo45reqwtftju5J6ru1ax06A2Gb/wM1qCOEQ==", "dev": true, "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + } + } + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" } } } @@ -20148,12 +19633,12 @@ "dev": true }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -20973,9 +20458,9 @@ "dev": true }, "tsconfig-paths": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", - "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "requires": { "json5": "^2.2.2", diff --git a/package.json b/package.json index a943240b5..1554af7a1 100644 --- a/package.json +++ b/package.json @@ -23,16 +23,16 @@ "@types/glob": "^7.2.0", "@types/node": "^17.0.45", "@types/yargs": "^16.0.5", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.2", + "@typescript-eslint/eslint-plugin": "^5.59.5", + "@typescript-eslint/parser": "^5.59.5", "detect-indent": "^6.1.0", - "eslint": "^8.39.0", + "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-simple-import-sort": "^7.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", - "lerna": "^6.6.1", - "npm-check-updates": "^16.10.9", + "lerna": "^6.6.2", + "npm-check-updates": "^16.10.12", "p-queue": "^6.6.2", "prettier": "2.8.8", "syncpack": "^9.8.6", diff --git a/packages/pyright-internal/src/analyzer/docStringConversion.ts b/packages/pyright-internal/src/analyzer/docStringConversion.ts index 3648c25be..4e545a340 100644 --- a/packages/pyright-internal/src/analyzer/docStringConversion.ts +++ b/packages/pyright-internal/src/analyzer/docStringConversion.ts @@ -583,7 +583,8 @@ class DocStringConverter { } // catch-all for styles except reST - const hasArguments = !line?.endsWith(':') && !line?.endsWith('::') && !!line.match(/^\s*.*?\w+\s*:\s*\w+/g); + const hasArguments = + !line?.endsWith(':') && !line?.endsWith('::') && !!line.match(/^\s*.*?\w+(\s*\(\w+\))*\s*:\s*\w+/g); // reSt params. Attempt to put directives lines into their own paragraphs. const restDirective = DirectivesExtraNewlineRegExp.test(line); //line.match(/^\s*:param/); diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index e242ab2a1..db0dd4f59 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -8,12 +8,10 @@ * and all of their recursive imports. */ -import { CancellationToken, CompletionItem, DocumentSymbol } from 'vscode-languageserver'; -import { CompletionList } from 'vscode-languageserver-types'; +import { CancellationToken } from 'vscode-languageserver'; import { TextDocument } from 'vscode-languageserver-textdocument'; import { OperationCanceledException, throwIfCancellationRequested } from '../common/cancellationUtils'; -import { appendArray } from '../common/collectionUtils'; import { ConfigOptions, ExecutionEnvironment, matchFileSpecs } from '../common/configOptions'; import { ConsoleInterface, StandardConsole } from '../common/console'; import * as debug from '../common/debug'; @@ -21,7 +19,7 @@ import { assert } from '../common/debug'; import { Diagnostic } from '../common/diagnostic'; import { FileDiagnostics } from '../common/diagnosticSink'; import { FileEditAction } from '../common/editAction'; -import { Extensions, ProgramView } from '../common/extensibility'; +import { Extensions, ProgramMutator, ProgramView } from '../common/extensibility'; import { LogTracker } from '../common/logTracker'; import { combinePaths, @@ -33,24 +31,9 @@ import { normalizePathCase, stripFileExtension, } from '../common/pathUtils'; -import { convertPositionToOffset, convertRangeToTextRange } from '../common/positionUtils'; -import { computeCompletionSimilarity } from '../common/stringUtils'; -import { Position, Range, doRangesIntersect } from '../common/textRange'; +import { convertRangeToTextRange } from '../common/positionUtils'; +import { doRangesIntersect, Range } from '../common/textRange'; import { Duration, timingStats } from '../common/timing'; -import { - AutoImportOptions, - AutoImportResult, - AutoImporter, - ModuleSymbolMap, - buildModuleSymbolsMap, -} from '../languageService/autoImporter'; -import { - AbbreviationMap, - CompletionMap, - CompletionOptions, - CompletionResultsList, -} from '../languageService/completionProvider'; -import { IndexOptions, IndexResults, WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; import { ParseResults } from '../parser/parser'; import { AbsoluteModuleDescriptor, ImportLookupResult, LookupImportOptions } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; @@ -58,20 +41,19 @@ import { CacheManager } from './cacheManager'; import { CircularDependency } from './circularDependency'; import { ImportResolver } from './importResolver'; import { ImportResult, ImportType } from './importResult'; -import { findNodeByOffset, getDocString } from './parseTreeUtils'; +import { getDocString } from './parseTreeUtils'; import { Scope } from './scope'; -import { getScopeForNode } from './scopeUtils'; import { IPythonMode, SourceFile } from './sourceFile'; import { collectImportedByFiles, isUserCode } from './sourceFileInfoUtils'; import { SourceMapper } from './sourceMapper'; import { Symbol } from './symbol'; -import { isPrivateOrProtectedName } from './symbolNameUtils'; import { createTracePrinter } from './tracePrinter'; import { PrintTypeOptions, TypeEvaluator } from './typeEvaluatorTypes'; import { createTypeEvaluatorWithTracker } from './typeEvaluatorWithTracker'; import { PrintTypeFlags } from './typePrinter'; import { TypeStubWriter } from './typeStubWriter'; import { Type } from './types'; +import { IndexResults } from '../languageService/symbolIndexer'; const _maxImportDepth = 256; @@ -591,7 +573,7 @@ export class Program { return this.getBoundSourceFileInfo(filePath)?.sourceFile; } - getSourceFileInfoList(): SourceFileInfo[] { + getSourceFileInfoList(): readonly SourceFileInfo[] { return this._sourceFileList; } @@ -676,74 +658,6 @@ export class Program { }); } - indexWorkspace(callback: (path: string, results: IndexResults) => void, token: CancellationToken): number { - if (!this._configOptions.indexing) { - return 0; - } - - return this._runEvaluatorWithCancellationToken(token, () => { - // Go through all workspace files to create indexing data. - // This will cause all files in the workspace to be parsed and bound. But - // _handleMemoryHighUsage will make sure we don't OOM and - // at the end of this method, we will drop all trees and symbol tables - // created due to indexing. - let count = 0; - const initiallyParsedSet = new Set(); - for (const sourceFileInfo of this._sourceFileList) { - if (!sourceFileInfo.sourceFile.isParseRequired()) { - initiallyParsedSet.add(sourceFileInfo); - } - - if (isUserCode(sourceFileInfo) && !sourceFileInfo.sourceFile.isIndexingRequired()) { - count++; - } - } - - if (count >= MaxWorkspaceIndexFileCount) { - // Already processed max files. - return 0; - } - - for (const sourceFileInfo of this._sourceFileList) { - if (!isUserCode(sourceFileInfo) || !sourceFileInfo.sourceFile.isIndexingRequired()) { - continue; - } - - this._bindFile(sourceFileInfo); - const results = sourceFileInfo.sourceFile.index({ indexingForAutoImportMode: false }, token); - if (results) { - if (++count > MaxWorkspaceIndexFileCount) { - this._console.warn(`Workspace indexing has hit its upper limit: 2000 files`); - - dropParseAndBindInfoCreatedForIndexing(this._sourceFileList, initiallyParsedSet); - return count; - } - - callback(sourceFileInfo.sourceFile.getFilePath(), results); - } - - this._handleMemoryHighUsage(); - } - - dropParseAndBindInfoCreatedForIndexing(this._sourceFileList, initiallyParsedSet); - return count; - }); - - function dropParseAndBindInfoCreatedForIndexing( - sourceFiles: SourceFileInfo[], - initiallyParsedSet: Set - ) { - for (const sourceFileInfo of sourceFiles) { - if (sourceFileInfo.sourceFile.isParseRequired() || initiallyParsedSet.has(sourceFileInfo)) { - continue; - } - - // Drop parse and bind info created during indexing. - sourceFileInfo.sourceFile.dropParseAndBindInfo(); - } - } - } - // This will allow the callback to execute a type evaluator with an associated // cancellation token and provide a read-only program. run(callback: (p: ProgramView) => T, token: CancellationToken): T { @@ -751,6 +665,38 @@ export class Program { return evaluator.runWithCancellationToken(token, () => callback(this)); } + // This will allow the callback to execute a type evaluator with an associated + // cancellation token and provide a mutable program. Should already be in edit mode when called. + runWithMutation(callback: (v: ProgramView, m: ProgramMutator) => void, token: CancellationToken): void { + if (this._isEditMode) { + // Create a temporary mutator that doesn't talk to the + // background thread. In edit mode there is no background thread. + const mutator: ProgramMutator = { + addInterimFile: (f) => { + return this.addInterimFile(f); + }, + setFileOpened: (p, v, c, i, ch, r) => { + this.setFileOpened(p, v, c, { + isTracked: this.owns(p), + ipythonMode: i, + chainedFilePath: ch, + realFilePath: r, + }); + }, + updateOpenFileContents: (p, v, c, i, r) => { + this.setFileOpened(p, v, c, { + isTracked: this.owns(p), + ipythonMode: i, + chainedFilePath: undefined, + realFilePath: r, + }); + }, + }; + const evaluator = this._evaluator ?? this._createNewEvaluator(); + evaluator.runWithCancellationToken(token, () => callback(this, mutator)); + } + } + getSourceMapper( filePath: string, token: CancellationToken, @@ -931,83 +877,6 @@ export class Program { }); } - getAutoImports( - filePath: string, - range: Range, - similarityLimit: number, - nameMap: AbbreviationMap | undefined, - options: AutoImportOptions, - token: CancellationToken - ): AutoImportResult[] { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return []; - } - - const sourceFile = sourceFileInfo.sourceFile; - const fileContents = sourceFile.getOpenFileContents(); - if (fileContents === undefined) { - // this only works with opened file - return []; - } - - return this._runEvaluatorWithCancellationToken(token, () => { - this._bindFile(sourceFileInfo); - - const parseTree = sourceFile.getParseResults()!; - const textRange = convertRangeToTextRange(range, parseTree.tokenizerOutput.lines); - if (!textRange) { - return []; - } - - const currentNode = findNodeByOffset(parseTree.parseTree, textRange.start); - if (!currentNode) { - return []; - } - - const writtenWord = fileContents.substr(textRange.start, textRange.length); - const map = this._buildModuleSymbolsMap( - sourceFileInfo, - options.libraryMap, - /* includeSymbolsFromIndices */ true, - token - ); - - options.patternMatcher = - options.patternMatcher ?? ((p, t) => computeCompletionSimilarity(p, t) > similarityLimit); - - const autoImporter = new AutoImporter( - this._configOptions.findExecEnvironment(filePath), - this._importResolver, - parseTree, - range.start, - new CompletionMap(), - map, - options - ); - - // Filter out any name that is already defined in the current scope. - const results: AutoImportResult[] = []; - - const currentScope = getScopeForNode(currentNode); - if (currentScope) { - const info = nameMap?.get(writtenWord); - if (info) { - // No scope filter is needed since we only do exact match. - appendArray(results, autoImporter.getAutoImportCandidatesForAbbr(writtenWord, info, token)); - } - - results.push( - ...autoImporter - .getAutoImportCandidates(writtenWord, similarityLimit, /* abbrFromUsers */ undefined, token) - .filter((r) => !currentScope.lookUpSymbolRecursive(r.name)) - ); - } - - return results; - }); - } - getDiagnostics(options: ConfigOptions): FileDiagnostics[] { const fileDiagnostics: FileDiagnostics[] = this._removeUnneededFiles(); @@ -1063,205 +932,6 @@ export class Program { }); } - getFileIndex(filePath: string, options: IndexOptions, token: CancellationToken): IndexResults | undefined { - if (options.indexingForAutoImportMode) { - // Memory optimization. We only want to hold onto symbols - // usable outside when importSymbolsOnly is on. - const name = stripFileExtension(getFileName(filePath)); - if (isPrivateOrProtectedName(name)) { - return undefined; - } - } - - this._handleMemoryHighUsage(); - - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - const content = sourceFileInfo.sourceFile.getFileContent() ?? ''; - if ( - options.indexingForAutoImportMode && - !options.includeAllSymbols && - !sourceFileInfo.sourceFile.isStubFile() && - !sourceFileInfo.sourceFile.isThirdPartyPyTypedPresent() - ) { - // Perf optimization. if py file doesn't contain __all__ - // No need to parse and bind. - if (content.indexOf('__all__') < 0) { - return undefined; - } - } - - this._bindFile(sourceFileInfo, content); - return sourceFileInfo.sourceFile.index(options, token); - }); - } - - addSymbolsForDocument(filePath: string, symbolList: DocumentSymbol[], token: CancellationToken) { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (sourceFileInfo) { - if (!sourceFileInfo.sourceFile.getCachedIndexResults()) { - // If we already have cached index for this file, no need to bind this file. - this._bindFile(sourceFileInfo); - } - - sourceFileInfo.sourceFile.addHierarchicalSymbolsForDocument(symbolList, token); - } - }); - } - - reportSymbolsForWorkspace(query: string, reporter: WorkspaceSymbolCallback, token: CancellationToken) { - this._runEvaluatorWithCancellationToken(token, () => { - // Don't do a search if the query is empty. We'll return - // too many results in this case. - if (!query) { - return; - } - - // "Workspace symbols" searches symbols only from user code. - for (const sourceFileInfo of this._sourceFileList) { - if (!isUserCode(sourceFileInfo)) { - continue; - } - - if (!sourceFileInfo.sourceFile.getCachedIndexResults()) { - // If we already have cached index for this file, no need to bind this file. - this._bindFile(sourceFileInfo); - } - - const symbolList = sourceFileInfo.sourceFile.getSymbolsForDocument(query, token); - if (symbolList.length > 0) { - reporter(symbolList); - } - - // This operation can consume significant memory, so check - // for situations where we need to discard the type cache. - this._handleMemoryHighUsage(); - } - }); - } - - async getCompletionsForPosition( - filePath: string, - position: Position, - workspacePath: string, - options: CompletionOptions, - nameMap: AbbreviationMap | undefined, - libraryMap: Map | undefined, - token: CancellationToken - ): Promise { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return undefined; - } - - const completionResult = this._logTracker.log( - `completion at ${filePath}:${position.line}:${position.character}`, - (ls) => { - const result = this._runEvaluatorWithCancellationToken(token, () => { - this._bindFile(sourceFileInfo); - - return sourceFileInfo.sourceFile.getCompletionsForPosition( - this, - position, - workspacePath, - this._lookUpImport, - options, - nameMap, - libraryMap, - () => - this._buildModuleSymbolsMap( - sourceFileInfo, - libraryMap, - options.includeUserSymbolsInAutoImport, - token - ), - token - ); - }); - - ls.add(`found ${result?.completionMap.size ?? 'null'} items`); - return result; - } - ); - - const completionResultsList: CompletionResultsList = { - completionList: CompletionList.create(completionResult?.completionMap.toArray()), - memberAccessInfo: completionResult?.memberAccessInfo, - autoImportInfo: completionResult?.autoImportInfo, - extensionInfo: completionResult?.extensionInfo, - }; - - const parseResults = sourceFileInfo.sourceFile.getParseResults(); - if (parseResults?.parseTree && parseResults?.text) { - const execEnv = this._configOptions.findExecEnvironment(filePath); - const sourceMapper: SourceMapper = this._createSourceMapper( - execEnv, - token, - sourceFileInfo, - /* mapCompiled */ true - ); - - const offset = convertPositionToOffset(position, parseResults.tokenizerOutput.lines); - if (offset !== undefined && sourceMapper) { - await Promise.all( - Extensions.getProgramExtensions(parseResults.parseTree).map((e) => - e.completionListExtension?.updateCompletionResults( - this.evaluator!, - sourceMapper!, - options, - completionResultsList, - parseResults, - offset, - this._configOptions.functionSignatureDisplay, - token - ) - ) - ); - } - } - - return completionResultsList; - } - - resolveCompletionItem( - filePath: string, - completionItem: CompletionItem, - options: CompletionOptions, - nameMap: AbbreviationMap | undefined, - libraryMap: Map | undefined, - token: CancellationToken - ) { - return this._runEvaluatorWithCancellationToken(token, () => { - const sourceFileInfo = this.getSourceFileInfo(filePath); - if (!sourceFileInfo) { - return; - } - - this._bindFile(sourceFileInfo); - sourceFileInfo.sourceFile.resolveCompletionItem( - this, - this._lookUpImport, - options, - nameMap, - libraryMap, - () => - this._buildModuleSymbolsMap( - sourceFileInfo, - libraryMap, - options.includeUserSymbolsInAutoImport, - token - ), - completionItem, - token - ); - }); - } - clone() { const program = new Program( this._importResolver, @@ -1318,10 +988,6 @@ export class Program { Extensions.getProgramExtensions(this.rootPath).forEach((e) => (e.clearCache ? e.clearCache() : null)); } - test_createSourceMapper(execEnv: ExecutionEnvironment, from?: SourceFileInfo) { - return this._createSourceMapper(execEnv, CancellationToken.None, /* from */ from, /* mapCompiled */ false); - } - private _handleMemoryHighUsage() { const cacheUsage = this._cacheManager.getCacheUsage(); @@ -2168,44 +1834,6 @@ export class Program { }; }; - // Build a map of all modules within this program and the module- - // level scope that contains the symbol table for the module. - private _buildModuleSymbolsMap( - sourceFileToExclude: SourceFileInfo, - libraryMap: Map | undefined, - includeSymbolsFromIndices: boolean, - token: CancellationToken - ): ModuleSymbolMap { - // If we have library map, always use the map for library symbols. - const predicate = (s: SourceFileInfo) => { - if (!libraryMap) { - // We don't have any prebuilt indices, so we need to include - // all files. - return true; - } - - if (!this._configOptions.indexing) { - // We have some prebuilt indices such as stdlib, but indexing is disabled. - // Include files we don't have prebuilt indices. - return libraryMap.get(s.sourceFile.getFilePath()) === undefined; - } - - // We have prebuilt indices for third party libraries. Include only - // user files. - return isUserCode(s); - }; - - // Only include import alias from user files if indexing is off for now. - // Currently, when indexing is off, we don't do import alias deduplication, so - // adding import alias is cheap. But when indexing is on, we do deduplication, which - // require resolveAliasDeclaration that can cause more files to be parsed and bound. - return buildModuleSymbolsMap( - this._sourceFileList.filter((s) => s !== sourceFileToExclude && predicate(s)), - includeSymbolsFromIndices, - token - ); - } - private _shouldCheckFile(fileInfo: SourceFileInfo) { // Always do a full checking for a file that's open in the editor. if (fileInfo.isOpenByClient) { diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index b1aceecab..a93af536d 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -10,12 +10,7 @@ import * as TOML from '@iarna/toml'; import * as JSONC from 'jsonc-parser'; -import { - AbstractCancellationTokenSource, - CancellationToken, - CompletionItem, - DocumentSymbol, -} from 'vscode-languageserver'; +import { AbstractCancellationTokenSource, CancellationToken } from 'vscode-languageserver'; import { BackgroundAnalysisBase, IndexOptions, RefreshOptions } from '../backgroundAnalysisBase'; import { CancellationProvider, DefaultCancellationProvider } from '../common/cancellationUtils'; @@ -24,7 +19,7 @@ import { ConfigOptions, matchFileSpecs } from '../common/configOptions'; import { ConsoleInterface, LogLevel, StandardConsole, log } from '../common/console'; import { Diagnostic } from '../common/diagnostic'; import { FileEditAction } from '../common/editAction'; -import { Extensions, ProgramView } from '../common/extensibility'; +import { Extensions, ProgramMutator, ProgramView } from '../common/extensibility'; import { FileSystem, FileWatcher, FileWatcherEventType, ignoredWatchEventFunction } from '../common/fileSystem'; import { Host, HostFactory, NoAccessHost } from '../common/host'; import { defaultStubsDirectory } from '../common/pathConsts'; @@ -47,11 +42,8 @@ import { tryRealpath, tryStat, } from '../common/pathUtils'; -import { Position, Range } from '../common/textRange'; +import { Range } from '../common/textRange'; import { timingStats } from '../common/timing'; -import { AutoImportOptions } from '../languageService/autoImporter'; -import { AbbreviationMap, CompletionOptions, CompletionResultsList } from '../languageService/completionProvider'; -import { WorkspaceSymbolCallback } from '../languageService/documentSymbolProvider'; import { AnalysisCompleteCallback } from './analysis'; import { BackgroundAnalysisProgram, BackgroundAnalysisProgramFactory } from './backgroundAnalysisProgram'; import { CacheManager } from './cacheManager'; @@ -161,9 +153,16 @@ export class AnalyzerService { this._options.cacheManager ); - // Create the extensions tied to this program. This is where the mutating 'addTrackedFile' will actually - // mutate the local program and the BG thread one. - Extensions.createProgramExtensions(this._program, { addInterimFile: this.addInterimFile.bind(this) }); + // Create the extensions tied to this program. + + // Make a wrapper around the program for mutation situations. It + // will forward the requests to the background thread too. + const mutator: ProgramMutator = { + addInterimFile: this.addInterimFile.bind(this), + updateOpenFileContents: this.updateOpenFileContents.bind(this), + setFileOpened: this.setFileOpened.bind(this), + }; + Extensions.createProgramExtensions(this._program, mutator); } get fs() { @@ -222,7 +221,7 @@ export class AnalyzerService { return service; } - useEditMode(callback: () => void, token: CancellationToken) { + runEditMode(callback: (v: ProgramView, m: ProgramMutator) => void, token: CancellationToken) { let edits: FileEditAction[] = []; const disposable = token.onCancellationRequested(() => { edits = []; @@ -230,7 +229,7 @@ export class AnalyzerService { }); this._backgroundAnalysisProgram.enterEditMode(); try { - callback(); + this._program.runWithMutation(callback, token); } finally { disposable.dispose(); edits = this._backgroundAnalysisProgram.exitEditMode(); @@ -371,45 +370,6 @@ export class AnalyzerService { return this._program.getTextOnRange(filePath, range, token); } - getAutoImports( - filePath: string, - range: Range, - similarityLimit: number, - nameMap: AbbreviationMap | undefined, - options: AutoImportOptions, - token: CancellationToken - ) { - options.libraryMap = options.libraryMap ?? this._backgroundAnalysisProgram.getIndexing(filePath); - return this._program.getAutoImports(filePath, range, similarityLimit, nameMap, options, token); - } - - addSymbolsForDocument(filePath: string, symbolList: DocumentSymbol[], token: CancellationToken) { - this._program.addSymbolsForDocument(filePath, symbolList, token); - } - - reportSymbolsForWorkspace(query: string, reporter: WorkspaceSymbolCallback, token: CancellationToken) { - this._program.reportSymbolsForWorkspace(query, reporter, token); - } - - getCompletionsForPosition( - filePath: string, - position: Position, - workspacePath: string, - options: CompletionOptions, - nameMap: AbbreviationMap | undefined, - token: CancellationToken - ): Promise { - return this._program.getCompletionsForPosition( - filePath, - position, - workspacePath, - options, - nameMap, - this._backgroundAnalysisProgram.getIndexing(filePath), - token - ); - } - getEvaluator(): TypeEvaluator | undefined { return this._program.evaluator; } @@ -418,23 +378,6 @@ export class AnalyzerService { return this._program.run(callback, token); } - resolveCompletionItem( - filePath: string, - completionItem: CompletionItem, - options: CompletionOptions, - nameMap: AbbreviationMap | undefined, - token: CancellationToken - ) { - this._program.resolveCompletionItem( - filePath, - completionItem, - options, - nameMap, - this._backgroundAnalysisProgram.getIndexing(filePath), - token - ); - } - printStats() { this._console.info(''); this._console.info('Analysis stats'); diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index c975309d7..932cadee2 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -7,10 +7,8 @@ * Class that represents a single Python source or stub file. */ -import { CancellationToken, CompletionItem, DocumentSymbol } from 'vscode-languageserver'; import { isMainThread } from 'worker_threads'; -import * as SymbolNameUtils from '../analyzer/symbolNameUtils'; import { OperationCanceledException } from '../common/cancellationUtils'; import { ConfigOptions, ExecutionEnvironment, getBasicDiagnosticRuleSet } from '../common/configOptions'; import { ConsoleInterface, StandardConsole } from '../common/console'; @@ -18,25 +16,15 @@ import { assert } from '../common/debug'; import { Diagnostic, DiagnosticCategory, TaskListToken, convertLevelToCategory } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { DiagnosticSink, TextRangeDiagnosticSink } from '../common/diagnosticSink'; -import { Extensions, ProgramView } from '../common/extensibility'; +import { Extensions } from '../common/extensibility'; import { FileSystem } from '../common/fileSystem'; -import { LogTracker } from '../common/logTracker'; -import { fromLSPAny } from '../common/lspUtils'; -import { getFileName, normalizeSlashes, stripFileExtension } from '../common/pathUtils'; +import { LogTracker, getPathForLogging } from '../common/logTracker'; +import { getFileName, normalizeSlashes } from '../common/pathUtils'; import { convertOffsetsToRange, convertTextRangeToRange } from '../common/positionUtils'; import * as StringUtils from '../common/stringUtils'; -import { Position, Range, TextRange, getEmptyRange } from '../common/textRange'; +import { Range, TextRange, getEmptyRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; -import { ModuleSymbolMap } from '../languageService/autoImporter'; -import { - AbbreviationMap, - CompletionItemData, - CompletionOptions, - CompletionProvider, - CompletionResults, -} from '../languageService/completionProvider'; -import { DocumentSymbolProvider, IndexOptions, IndexResults } from '../languageService/documentSymbolProvider'; import { Localizer } from '../localization/localize'; import { ModuleNode } from '../parser/parseNodes'; import { ModuleImport, ParseOptions, ParseResults, Parser } from '../parser/parser'; @@ -56,6 +44,7 @@ import { SourceMapper } from './sourceMapper'; import { SymbolTable } from './symbol'; import { TestWalker } from './testWalker'; import { TypeEvaluator } from './typeEvaluatorTypes'; +import { IndexResults } from '../languageService/symbolIndexer'; // Limit the number of import cycles tracked per source file. const _maxImportCyclesPerFile = 4; @@ -756,6 +745,11 @@ export class SourceFile { return this._writableData.indexingNeeded; } + markIndexDone() { + // This will be removed once indexResult is removed from sourceFile. + this._writableData.indexingNeeded = false; + } + isCheckingRequired() { return this._writableData.isCheckingNeeded; } @@ -960,140 +954,6 @@ export class SourceFile { }); } - index(options: IndexOptions, token: CancellationToken): IndexResults | undefined { - return this._logTracker.log(`indexing: ${this._getPathForLogging(this._filePath)}`, (ls) => { - // If we have no completed analysis job, there's nothing to do. - if (!this._writableData.parseResults || !this.isIndexingRequired()) { - ls.suppress(); - return undefined; - } - - this._writableData.indexingNeeded = false; - const symbols = DocumentSymbolProvider.indexSymbols( - AnalyzerNodeInfo.getFileInfo(this._writableData.parseResults.parseTree)!, - this._writableData.parseResults, - options, - token - ); - - ls.add(`found ${symbols.length}`); - - const name = stripFileExtension(getFileName(this._filePath)); - const privateOrProtected = SymbolNameUtils.isPrivateOrProtectedName(name); - return { privateOrProtected, symbols }; - }); - } - - addHierarchicalSymbolsForDocument(symbolList: DocumentSymbol[], token: CancellationToken) { - // If we have no completed analysis job, there's nothing to do. - if (!this._writableData.parseResults && !this._writableData.cachedIndexResults) { - return; - } - - DocumentSymbolProvider.addHierarchicalSymbolsForDocument( - this._writableData.parseResults - ? AnalyzerNodeInfo.getFileInfo(this._writableData.parseResults.parseTree) - : undefined, - this.getCachedIndexResults(), - this._writableData.parseResults, - symbolList, - token - ); - } - - getSymbolsForDocument(query: string, token: CancellationToken) { - // If we have no completed analysis job, there's nothing to do. - if (!this._writableData.parseResults && !this._writableData.cachedIndexResults) { - return []; - } - - return DocumentSymbolProvider.getSymbolsForDocument( - this._writableData.parseResults - ? AnalyzerNodeInfo.getFileInfo(this._writableData.parseResults.parseTree) - : undefined, - this.getCachedIndexResults(), - this._writableData.parseResults, - this._filePath, - query, - token - ); - } - - getCompletionsForPosition( - program: ProgramView, - position: Position, - workspacePath: string, - importLookup: ImportLookup, - options: CompletionOptions, - nameMap: AbbreviationMap | undefined, - libraryMap: Map | undefined, - moduleSymbolsCallback: () => ModuleSymbolMap, - token: CancellationToken - ): CompletionResults | undefined { - // If we have no completed analysis job, there's nothing to do. - if (!this._writableData.parseResults) { - return undefined; - } - - // This command should be called only for open files, in which - // case we should have the file contents already loaded. - const fileContents = this.getOpenFileContents(); - if (fileContents === undefined) { - return undefined; - } - - const completionProvider = new CompletionProvider( - program, - workspacePath, - this._filePath, - position, - importLookup, - options, - { - nameMap, - libraryMap, - getModuleSymbolsMap: moduleSymbolsCallback, - }, - token - ); - - return completionProvider.getCompletionsForPosition(); - } - - resolveCompletionItem( - program: ProgramView, - importLookup: ImportLookup, - options: CompletionOptions, - nameMap: AbbreviationMap | undefined, - libraryMap: Map | undefined, - moduleSymbolsCallback: () => ModuleSymbolMap, - completionItem: CompletionItem, - token: CancellationToken - ) { - const fileContents = this.getOpenFileContents(); - if (!this._writableData.parseResults || fileContents === undefined) { - return; - } - - const completionData = fromLSPAny(completionItem.data); - const completionProvider = new CompletionProvider( - program, - completionData.workspacePath, - this._filePath, - completionData.position, - importLookup, - options, - { - nameMap, - libraryMap, - getModuleSymbolsMap: moduleSymbolsCallback, - }, - token - ); - - completionProvider.resolveCompletionItem(completionItem); - } - bind( configOptions: ConfigOptions, importLookup: ImportLookup, @@ -1429,11 +1289,7 @@ export class SourceFile { } private _getPathForLogging(filepath: string) { - if (this.fileSystem.isMappedFilePath(filepath)) { - return this.fileSystem.getOriginalFilePath(filepath); - } - - return filepath; + return getPathForLogging(this.fileSystem, filepath); } } diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index 9cb035a87..ad66c1fd4 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -36,7 +36,7 @@ import { FileSystem } from './common/fileSystem'; import { Host, HostKind } from './common/host'; import { LogTracker } from './common/logTracker'; import { Range } from './common/textRange'; -import { IndexResults } from './languageService/documentSymbolProvider'; +import { IndexResults } from './languageService/symbolIndexer'; export class BackgroundAnalysisBase { private _worker: Worker | undefined; @@ -302,6 +302,22 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase // Create the extensions bound to the program for this background thread Extensions.createProgramExtensions(this._program, { addInterimFile: (filePath: string) => this._program.addInterimFile(filePath), + setFileOpened: (filePath, version, contents, ipythonMode, chainedFilePath, realFilePath) => { + this._program.setFileOpened(filePath, version, contents, { + isTracked: this._program.owns(filePath), + ipythonMode, + chainedFilePath, + realFilePath, + }); + }, + updateOpenFileContents: (filePath, version, contents, ipythonMode, realFilePath) => { + this._program.setFileOpened(filePath, version, contents, { + isTracked: this._program.owns(filePath), + ipythonMode, + chainedFilePath: undefined, + realFilePath, + }); + }, }); } diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index bb7bf3a5b..6bdd28231 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -6,7 +6,7 @@ * Language service extensibility. */ -import { CancellationToken, CodeAction, ExecuteCommandParams } from 'vscode-languageserver'; +import { CancellationToken, CodeAction, CompletionList, ExecuteCommandParams } from 'vscode-languageserver'; import { getFileInfo } from '../analyzer/analyzerNodeInfo'; import { Declaration } from '../analyzer/declaration'; @@ -16,13 +16,17 @@ import { SourceMapper } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { Type } from '../analyzer/types'; import { LanguageServerBase } from '../languageServerBase'; -import { CompletionOptions, CompletionResultsList } from '../languageService/completionProvider'; +import { CompletionOptions } from '../languageService/completionProvider'; import { FunctionNode, ParameterNode, ParseNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { ConfigOptions, SignatureDisplayType } from './configOptions'; import { ConsoleInterface } from './console'; import { ReadOnlyFileSystem } from './fileSystem'; import { Range } from './textRange'; +import { SymbolTable } from '../analyzer/symbol'; +import { Diagnostic } from '../common/diagnostic'; +import { IPythonMode } from '../analyzer/sourceFile'; +import { IndexResults } from '../languageService/symbolIndexer'; export interface LanguageServiceExtension { readonly commandExtension?: CommandExtension; @@ -40,8 +44,16 @@ export interface ProgramExtension { export interface SourceFile { // See whether we can convert these to regular properties. isStubFile(): boolean; + isThirdPartyPyTypedPresent(): boolean; + + getIPythonMode(): IPythonMode; getFilePath(): string; getFileContent(): string | undefined; + getRealFilePath(): string | undefined; + getClientVersion(): number | undefined; + getOpenFileContents(): string | undefined; + getModuleSymbolTable(): SymbolTable | undefined; + getCachedIndexResults(): IndexResults | undefined; } export interface SourceFileInfo { @@ -63,6 +75,8 @@ export interface SourceFileInfo { readonly imports: readonly SourceFileInfo[]; readonly importedBy: readonly SourceFileInfo[]; + readonly shadows: readonly SourceFileInfo[]; + readonly shadowedBy: readonly SourceFileInfo[]; } // Readonly wrapper around a Program. Makes sure it doesn't mutate the program. @@ -90,11 +104,28 @@ export interface ProgramView { getBoundSourceFileInfo(file: string, content?: string, force?: boolean): prog.SourceFileInfo | undefined; handleMemoryHighUsage(): void; clone(): prog.Program; + analyzeFile(filePath: string, token: CancellationToken): boolean; + getDiagnosticsForRange(filePath: string, range: Range): Diagnostic[]; } // Mutable wrapper around a program. Allows the FG thread to forward this request to the BG thread export interface ProgramMutator { addInterimFile(file: string): void; + setFileOpened( + filePath: string, + version: number | null, + contents: string, + ipythonMode: IPythonMode, + chainedFilePath?: string, + realFilePath?: string + ): void; + updateOpenFileContents( + path: string, + version: number | null, + contents: string, + ipythonMode: IPythonMode, + realFilePath?: string + ): void; } export interface ExtensionFactory { @@ -112,18 +143,25 @@ export interface CommandExtension { executeCommand(params: ExecuteCommandParams, token: CancellationToken): Promise; } +export interface ExtensionInfo { + readonly correlationId: string; + readonly selectedItemTelemetryTimeInMS: number; + readonly itemTelemetryTimeInMS: number; + readonly totalTimeInMS: number; +} + export interface CompletionListExtension { // Extension updates completion list provided by the application. updateCompletionResults( evaluator: TypeEvaluator, sourceMapper: SourceMapper, options: CompletionOptions, - completionResults: CompletionResultsList, + completionResults: CompletionList | null, parseResults: ParseResults, position: number, functionSignatureDisplay: SignatureDisplayType, token: CancellationToken - ): Promise; + ): Promise; } export enum DeclarationUseCase { diff --git a/packages/pyright-internal/src/common/logTracker.ts b/packages/pyright-internal/src/common/logTracker.ts index 7eb8b1a4f..dfcf181ce 100644 --- a/packages/pyright-internal/src/common/logTracker.ts +++ b/packages/pyright-internal/src/common/logTracker.ts @@ -7,11 +7,20 @@ */ import { ConsoleInterface, LogLevel } from './console'; +import { ReadOnlyFileSystem } from './fileSystem'; import { Duration, timingStats } from './timing'; // Consider an operation "long running" if it goes longer than this. const durationThresholdForInfoInMs = 2000; +export function getPathForLogging(fs: ReadOnlyFileSystem, filepath: string) { + if (fs.isMappedFilePath(filepath)) { + return fs.getOriginalFilePath(filepath); + } + + return filepath; +} + export class LogTracker { private _dummyState = new State(); private _indentation = ''; diff --git a/packages/pyright-internal/src/common/lspUtils.ts b/packages/pyright-internal/src/common/lspUtils.ts index fb0188f5d..3bcec46a9 100644 --- a/packages/pyright-internal/src/common/lspUtils.ts +++ b/packages/pyright-internal/src/common/lspUtils.ts @@ -5,7 +5,10 @@ * Helper functions related to the Language Server Protocol (LSP). */ -import { LSPAny } from 'vscode-languageserver'; +import { LSPAny, SymbolKind } from 'vscode-languageserver'; +import { Declaration, DeclarationType } from '../analyzer/declaration'; +import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; +import { isMaybeDescriptorInstance } from '../analyzer/typeUtils'; // Converts an internal object to LSPAny to be sent out via LSP export function toLSPAny(obj: any) { @@ -16,3 +19,47 @@ export function toLSPAny(obj: any) { export function fromLSPAny(lspAny: LSPAny | undefined) { return lspAny as any as T; } + +export function getSymbolKind(declaration: Declaration, evaluator?: TypeEvaluator, name = ''): SymbolKind | undefined { + switch (declaration.type) { + case DeclarationType.Class: + case DeclarationType.SpecialBuiltInClass: + return SymbolKind.Class; + + case DeclarationType.Function: { + if (!declaration.isMethod) { + return SymbolKind.Function; + } + + const declType = evaluator?.getTypeForDeclaration(declaration)?.type; + if (declType && isMaybeDescriptorInstance(declType, /* requireSetter */ false)) { + return SymbolKind.Property; + } + + return SymbolKind.Method; + } + + case DeclarationType.Alias: + return SymbolKind.Module; + + case DeclarationType.Parameter: + if (name === 'self' || name === 'cls' || name === '_') { + return undefined; + } + + return SymbolKind.Variable; + + case DeclarationType.TypeParameter: + return SymbolKind.TypeParameter; + + case DeclarationType.Variable: + if (name === '_') { + return undefined; + } + + return declaration.isConstant || declaration.isFinal ? SymbolKind.Constant : SymbolKind.Variable; + + default: + return SymbolKind.Variable; + } +} diff --git a/packages/pyright-internal/src/common/workspaceEditUtils.ts b/packages/pyright-internal/src/common/workspaceEditUtils.ts index da8a9e706..5e820d878 100644 --- a/packages/pyright-internal/src/common/workspaceEditUtils.ts +++ b/packages/pyright-internal/src/common/workspaceEditUtils.ts @@ -17,7 +17,6 @@ import { } from 'vscode-languageserver'; import { TextDocument } from 'vscode-languageserver-textdocument'; -import { SourceFileInfo } from '../analyzer/program'; import { AnalyzerService } from '../analyzer/service'; import { FileEditAction, FileEditActions, TextEditAction } from '../common/editAction'; import { convertPathToUri, convertUriToPath } from '../common/pathUtils'; @@ -28,6 +27,7 @@ import { ReadOnlyFileSystem } from './fileSystem'; import { convertRangeToTextRange, convertTextRangeToRange } from './positionUtils'; import { TextRange } from './textRange'; import { TextRangeCollection } from './textRangeCollection'; +import { ProgramMutator, ProgramView, SourceFileInfo } from './extensibility'; export function convertToTextEdits(editActions: TextEditAction[]): TextEdit[] { return editActions.map((editAction) => ({ @@ -101,17 +101,22 @@ export function applyTextEditsToString( return current; } -export function applyWorkspaceEdit(clonedService: AnalyzerService, edits: WorkspaceEdit, filesChanged: Set) { +export function applyWorkspaceEdit( + view: ProgramView, + mutator: ProgramMutator, + edits: WorkspaceEdit, + filesChanged: Set +) { if (edits.changes) { for (const kv of Object.entries(edits.changes)) { - const filePath = convertUriToPath(clonedService.fs, kv[0]); - const fileInfo = clonedService.backgroundAnalysisProgram.program.getSourceFileInfo(filePath); + const filePath = convertUriToPath(view.fileSystem, kv[0]); + const fileInfo = view.getSourceFileInfo(filePath); if (!fileInfo || !fileInfo.isTracked) { // We don't allow non user file being modified. continue; } - applyDocumentChanges(clonedService, fileInfo, kv[1]); + applyDocumentChanges(mutator, fileInfo, kv[1]); filesChanged.add(filePath); } } @@ -120,14 +125,14 @@ export function applyWorkspaceEdit(clonedService: AnalyzerService, edits: Worksp if (edits.documentChanges) { for (const change of edits.documentChanges) { if (TextDocumentEdit.is(change)) { - const filePath = convertUriToPath(clonedService.fs, change.textDocument.uri); - const fileInfo = clonedService.backgroundAnalysisProgram.program.getSourceFileInfo(filePath); + const filePath = convertUriToPath(view.fileSystem, change.textDocument.uri); + const fileInfo = view.getSourceFileInfo(filePath); if (!fileInfo || !fileInfo.isTracked) { // We don't allow non user file being modified. continue; } - applyDocumentChanges(clonedService, fileInfo, change.edits); + applyDocumentChanges(mutator, fileInfo, change.edits); filesChanged.add(filePath); } @@ -137,10 +142,10 @@ export function applyWorkspaceEdit(clonedService: AnalyzerService, edits: Worksp } } -export function applyDocumentChanges(clonedService: AnalyzerService, fileInfo: SourceFileInfo, edits: TextEdit[]) { +export function applyDocumentChanges(mutator: ProgramMutator, fileInfo: SourceFileInfo, edits: TextEdit[]) { if (!fileInfo.isOpenByClient) { const fileContent = fileInfo.sourceFile.getFileContent(); - clonedService.setFileOpened( + mutator.setFileOpened( fileInfo.sourceFile.getFilePath(), 0, fileContent ?? '', @@ -153,7 +158,7 @@ export function applyDocumentChanges(clonedService: AnalyzerService, fileInfo: S const filePath = fileInfo.sourceFile.getFilePath(); const sourceDoc = TextDocument.create(filePath, 'python', version, fileInfo.sourceFile.getOpenFileContents() ?? ''); - clonedService.updateOpenFileContents( + mutator.updateOpenFileContents( filePath, version + 1, TextDocument.applyEdits(sourceDoc, edits), diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 7b3377ba0..4c29cd1d8 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -83,7 +83,7 @@ import { IPythonMode } from './analyzer/sourceFile'; import type { BackgroundAnalysisBase } from './backgroundAnalysisBase'; import { CommandResult } from './commands/commandResult'; import { CancelAfter, CancellationProvider } from './common/cancellationUtils'; -import { appendArray, getNestedProperty } from './common/collectionUtils'; +import { getNestedProperty } from './common/collectionUtils'; import { DiagnosticSeverityOverrides, DiagnosticSeverityOverridesMap, @@ -105,16 +105,14 @@ import { Host } from './common/host'; import { fromLSPAny } from './common/lspUtils'; import { convertPathToUri, deduplicateFolders, getDirectoryPath, getFileName, isFile } from './common/pathUtils'; import { ProgressReportTracker, ProgressReporter } from './common/progressReporter'; -import { hashString } from './common/stringUtils'; import { DocumentRange, Position, Range } from './common/textRange'; import { UriParser } from './common/uriParser'; import { AnalyzerServiceExecutor } from './languageService/analyzerServiceExecutor'; -import { ImportFormat } from './languageService/autoImporter'; import { CallHierarchyProvider } from './languageService/callHierarchyProvider'; -import { CompletionItemData, CompletionOptions, CompletionResultsList } from './languageService/completionProvider'; +import { CompletionItemData, CompletionProvider } from './languageService/completionProvider'; import { DefinitionFilter, DefinitionProvider, TypeDefinitionProvider } from './languageService/definitionProvider'; import { DocumentHighlightProvider } from './languageService/documentHighlightProvider'; -import { WorkspaceSymbolCallback, convertToFlatSymbols } from './languageService/documentSymbolProvider'; +import { DocumentSymbolProvider } from './languageService/documentSymbolProvider'; import { HoverProvider } from './languageService/hoverProvider'; import { canNavigateToFile } from './languageService/navigationUtils'; import { ReferencesProvider } from './languageService/referencesProvider'; @@ -123,6 +121,7 @@ import { Localizer, setLocaleOverride } from './localization/localize'; import { PyrightFileSystem } from './pyrightFileSystem'; import { InitStatus, WellKnownWorkspaceKinds, Workspace, WorkspaceFactory } from './workspaceFactory'; import { RenameProvider } from './languageService/renameProvider'; +import { WorkspaceSymbolProvider } from './languageService/workspaceSymbolProvider'; export interface ServerSettings { venvPath?: string | undefined; @@ -630,7 +629,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { this.connection.onSignatureHelp(async (params, token) => this.onSignatureHelp(params, token)); this.connection.onCompletion((params, token) => this.onCompletion(params, token)); - this.connection.onCompletionResolve(async (params, token) => this.onCompletionResolve(params, token)); this.connection.onPrepareRename(async (params, token) => this.onPrepareRenameRequest(params, token)); @@ -911,40 +909,34 @@ export abstract class LanguageServerBase implements LanguageServerInterface { this.recordUserInteractionTime(); const filePath = this.uriParser.decodeTextDocumentUri(params.textDocument.uri); - const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { return undefined; } - const symbolList: DocumentSymbol[] = []; - workspace.service.addSymbolsForDocument(filePath, symbolList, token); - if (this.client.hasHierarchicalDocumentSymbolCapability) { - return symbolList; - } - - return convertToFlatSymbols(params.textDocument.uri, symbolList); + return workspace.service.run((program) => { + return new DocumentSymbolProvider( + program, + filePath, + this.client.hasHierarchicalDocumentSymbolCapability, + token + ).getSymbols(); + }, token); } - protected async onWorkspaceSymbol( + protected onWorkspaceSymbol( params: WorkspaceSymbolParams, token: CancellationToken, resultReporter: ResultProgressReporter | undefined ): Promise { - const symbolList: SymbolInformation[] = []; - - const reporter: WorkspaceSymbolCallback = resultReporter - ? (symbols) => resultReporter.report(symbols) - : (symbols) => appendArray(symbolList, symbols); - - for (const workspace of this.workspaceFactory.items()) { - await workspace.isInitialized.promise; - if (!workspace.disableLanguageServices && !workspace.disableWorkspaceSymbol) { - workspace.service.reportSymbolsForWorkspace(params.query, reporter, token); - } - } + const result = new WorkspaceSymbolProvider( + this.workspaceFactory.items(), + resultReporter, + params.query, + token + ).reportSymbols(); - return symbolList; + return Promise.resolve(result); } protected async onHover(params: HoverParams, token: CancellationToken) { @@ -993,10 +985,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { }, token); } - protected async onCompletion( - params: CompletionParams, - token: CancellationToken - ): Promise { + protected setCompletionIncomplete(params: CompletionParams, completions: CompletionList | null) { // We set completion incomplete for the first invocation and next consecutive call, // but after that we mark it as completed so the client doesn't repeatedly call back. // We mark the first one as incomplete because completion could be invoked without @@ -1011,42 +1000,36 @@ export abstract class LanguageServerBase implements LanguageServerInterface { this._lastTriggerKind = params.context?.triggerKind; - const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + if (completions) { + completions.isIncomplete = completionIncomplete; + } + } + protected async onCompletion(params: CompletionParams, token: CancellationToken): Promise { + const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { - return; - } - - const completions = await this.getWorkspaceCompletionsForPosition( - workspace, - filePath, - position, - this.getCompletionOptions(workspace, params), - token - ); - - if (completions) { - completions.completionList.isIncomplete = completionIncomplete; + return null; } - // Add memberAccessInfo.lastKnownModule if we have it. The client side - // will use this to send extra telemetry - if ( - completions?.memberAccessInfo && - completions.completionList && - completions.completionList.items.length > 0 && - completions.memberAccessInfo.lastKnownModule && - this.serverOptions.supportsTelemetry - ) { - // Just stick it on the first item. It only checks the first one - completions.completionList.items[0].data = { - ...completions.completionList.items[0].data, - moduleHash: hashString(completions.memberAccessInfo.lastKnownModule), - }; - } + return workspace.service.run((program) => { + const completions = new CompletionProvider( + program, + workspace.rootPath, + filePath, + position, + { + format: this.client.completionDocFormat, + snippet: this.client.completionSupportsSnippet, + lazyEdit: false, + triggerCharacter: params?.context?.triggerCharacter, + }, + token + ).getCompletions(); - return completions?.completionList; + this.setCompletionIncomplete(params, completions); + return completions; + }, token); } // Cancellation bugs in vscode and LSP: @@ -1059,7 +1042,20 @@ export abstract class LanguageServerBase implements LanguageServerInterface { const completionItemData = fromLSPAny(params.data); if (completionItemData && completionItemData.filePath) { const workspace = await this.getWorkspaceForFile(completionItemData.filePath); - this.resolveWorkspaceCompletionItem(workspace, completionItemData.filePath, params, token); + workspace.service.run((program) => { + return new CompletionProvider( + program, + workspace.rootPath, + completionItemData.filePath, + completionItemData.position, + { + format: this.client.completionDocFormat, + snippet: this.client.completionSupportsSnippet, + lazyEdit: false, + }, + token + ).resolveCompletionItem(params); + }, token); } return params; } @@ -1280,51 +1276,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return Promise.resolve(); } - protected resolveWorkspaceCompletionItem( - workspace: Workspace, - filePath: string, - item: CompletionItem, - token: CancellationToken - ): void { - workspace.service.resolveCompletionItem( - filePath, - item, - this.getCompletionOptions(workspace), - /* nameMap */ undefined, - token - ); - } - - protected getWorkspaceCompletionsForPosition( - workspace: Workspace, - filePath: string, - position: Position, - options: CompletionOptions, - token: CancellationToken - ): Promise { - return workspace.service.getCompletionsForPosition( - filePath, - position, - workspace.rootPath, - options, - undefined, - token - ); - } - - protected getCompletionOptions(workspace: Workspace, params?: CompletionParams): CompletionOptions { - return { - format: this.client.completionDocFormat, - snippet: this.client.completionSupportsSnippet, - lazyEdit: this.client.completionItemResolveSupportsAdditionalTextEdits, - autoImport: true, - includeUserSymbolsInAutoImport: false, - extraCommitChars: false, - importFormat: ImportFormat.Absolute, - triggerCharacter: params?.context?.triggerCharacter, - }; - } - protected convertDiagnostics(fs: FileSystem, fileDiagnostics: FileDiagnostics): PublishDiagnosticsParams[] { return [ { diff --git a/packages/pyright-internal/src/languageService/autoImporter.ts b/packages/pyright-internal/src/languageService/autoImporter.ts index 40c68f648..12f90c63b 100644 --- a/packages/pyright-internal/src/languageService/autoImporter.ts +++ b/packages/pyright-internal/src/languageService/autoImporter.ts @@ -8,14 +8,12 @@ import { CancellationToken, CompletionItemKind, SymbolKind } from 'vscode-languageserver'; -import { getFileInfo } from '../analyzer/analyzerNodeInfo'; import { DeclarationType } from '../analyzer/declaration'; import { ImportResolver, ModuleNameAndType } from '../analyzer/importResolver'; import { ImportType } from '../analyzer/importResult'; import { getImportGroup, getImportGroupFromModuleNameAndType, - getRelativeModuleName, getTextEditsForAutoImportInsertion, getTextEditsForAutoImportSymbolAddition, getTopLevelImports, @@ -24,7 +22,6 @@ import { ImportStatements, ModuleNameInfo, } from '../analyzer/importStatementUtils'; -import { SourceFileInfo } from '../analyzer/program'; import { isUserCode } from '../analyzer/sourceFileInfoUtils'; import { Symbol } from '../analyzer/symbol'; import * as SymbolNameUtils from '../analyzer/symbolNameUtils'; @@ -36,16 +33,11 @@ import { TextEditAction } from '../common/editAction'; import { combinePaths, getDirectoryPath, getFileName, stripFileExtension } from '../common/pathUtils'; import * as StringUtils from '../common/stringUtils'; import { Position } from '../common/textRange'; -import { Duration } from '../common/timing'; import { ParseNodeType } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { CompletionMap } from './completionProvider'; -import { IndexAliasData, IndexResults } from './documentSymbolProvider'; - -export const enum ImportFormat { - Absolute = 'absolute', - Relative = 'relative', -} +import { SourceFileInfo } from '../common/extensibility'; +import { IndexAliasData } from './symbolIndexer'; export interface AutoImportSymbol { readonly importAlias?: IndexAliasData; @@ -60,59 +52,50 @@ export interface ModuleSymbolTable { export type ModuleSymbolMap = Map; -export interface AbbreviationInfo { - importFrom?: string; - importName: string; -} - export interface AutoImportResult { - name: string; - symbol?: Symbol; - source?: string; - insertionText: string; - edits?: TextEditAction[]; - alias?: string; - kind?: CompletionItemKind; + readonly name: string; + readonly symbol?: Symbol; + readonly source?: string; + readonly insertionText: string; + readonly edits?: TextEditAction[]; + readonly alias?: string; + readonly kind?: CompletionItemKind; } export interface AutoImportOptions { - libraryMap?: Map; - patternMatcher?: (pattern: string, name: string) => boolean; - allowVariableInAll?: boolean; - lazyEdit?: boolean; - importFormat?: ImportFormat; + readonly patternMatcher?: (pattern: string, name: string) => boolean; + readonly allowVariableInAll?: boolean; + readonly lazyEdit?: boolean; } -interface ImportParts { - importName: string; - symbolName?: string; - importFrom?: string; - filePath: string; - dotCount: number; - moduleNameAndType: ModuleNameAndType; +export interface ImportParts { + readonly importName: string; + readonly symbolName?: string; + readonly importFrom?: string; + readonly filePath: string; + readonly dotCount: number; + readonly moduleNameAndType: ModuleNameAndType; } -interface ImportAliasData { - importParts: ImportParts; - importGroup: ImportGroup; - symbol?: Symbol; - kind?: SymbolKind; - itemKind?: CompletionItemKind; +export interface ImportAliasData { + readonly importParts: ImportParts; + readonly importGroup: ImportGroup; + readonly symbol?: Symbol; + readonly kind?: SymbolKind; + readonly itemKind?: CompletionItemKind; } -type AutoImportResultMap = Map; +export type AutoImportResultMap = Map; // Build a map of all modules within this program and the module- // level scope that contains the symbol table for the module. -export function buildModuleSymbolsMap( - files: SourceFileInfo[], - includeSymbolsFromIndices: boolean, - token: CancellationToken -): ModuleSymbolMap { - const moduleSymbolMap = new Map(); - - throwIfCancellationRequested(token); +export function buildModuleSymbolsMap(files: readonly SourceFileInfo[]): ModuleSymbolMap { + const map = new Map(); + addModuleSymbolsMap(files, map); + return map; +} +export function addModuleSymbolsMap(files: readonly SourceFileInfo[], moduleSymbolMap: ModuleSymbolMap): void { files.forEach((file) => { if (file.shadows.length > 0) { // There is corresponding stub file. Don't add @@ -122,104 +105,66 @@ export function buildModuleSymbolsMap( const filePath = file.sourceFile.getFilePath(); const symbolTable = file.sourceFile.getModuleSymbolTable(); - if (symbolTable) { - const fileName = stripFileExtension(getFileName(filePath)); + if (!symbolTable) { + return; + } - // Don't offer imports from files that are named with private - // naming semantics like "_ast.py". - if (SymbolNameUtils.isPrivateOrProtectedName(fileName)) { - return; - } + const fileName = stripFileExtension(getFileName(filePath)); - moduleSymbolMap.set(filePath, { - forEach(callbackfn: (value: AutoImportSymbol, key: string, library: boolean) => void): void { - symbolTable.forEach((symbol, name) => { - if (!isVisibleExternally(symbol)) { - return; - } + // Don't offer imports from files that are named with private + // naming semantics like "_ast.py". + if (SymbolNameUtils.isPrivateOrProtectedName(fileName)) { + return; + } - const declarations = symbol.getDeclarations(); - if (!declarations || declarations.length === 0) { - return; - } + moduleSymbolMap.set(filePath, { + forEach(callbackfn: (value: AutoImportSymbol, key: string, library: boolean) => void): void { + symbolTable.forEach((symbol, name) => { + if (!isVisibleExternally(symbol)) { + return; + } - const declaration = declarations[0]; - if (!declaration) { - return; - } + const declarations = symbol.getDeclarations(); + if (!declarations || declarations.length === 0) { + return; + } - if (declaration.type === DeclarationType.Alias && isUserCode(file)) { - // We don't include import alias in auto import - // for workspace files. - return; - } + const declaration = declarations[0]; + if (!declaration) { + return; + } - const variableKind = - declaration.type === DeclarationType.Variable && - !declaration.isConstant && - !declaration.isFinal - ? SymbolKind.Variable - : undefined; - callbackfn({ symbol, kind: variableKind }, name, /* library */ !isUserCode(file)); - }); - }, - }); - return; - } + if (declaration.type === DeclarationType.Alias && isUserCode(file)) { + // We don't include import alias in auto import + // for workspace files. + return; + } - // Iterate through closed user files using indices if asked. - const indexResults = file.sourceFile.getCachedIndexResults(); - if (indexResults && includeSymbolsFromIndices && !indexResults.privateOrProtected) { - moduleSymbolMap.set(filePath, createModuleSymbolTableFromIndexResult(indexResults, /* library */ false)); - return; - } + const variableKind = + declaration.type === DeclarationType.Variable && !declaration.isConstant && !declaration.isFinal + ? SymbolKind.Variable + : undefined; + callbackfn({ symbol, kind: variableKind }, name, /* library */ !isUserCode(file)); + }); + }, + }); + return; }); - - return moduleSymbolMap; } export class AutoImporter { - private readonly _filePath: string; private readonly _importStatements: ImportStatements; - // Track some auto import internal perf numbers. - private readonly _stopWatch = new Duration(); - private readonly _perfInfo = { - indexUsed: false, - totalInMs: 0, - - moduleTimeInMS: 0, - indexTimeInMS: 0, - importAliasTimeInMS: 0, - - symbolCount: 0, - indexCount: 0, - importAliasCount: 0, - }; - constructor( - private _execEnvironment: ExecutionEnvironment, - private _importResolver: ImportResolver, - private _parseResults: ParseResults, - private _invocationPosition: Position, + private readonly _execEnvironment: ExecutionEnvironment, + protected readonly importResolver: ImportResolver, + protected readonly parseResults: ParseResults, + private readonly _invocationPosition: Position, private readonly _excludes: CompletionMap, - private _moduleSymbolMap: ModuleSymbolMap, - private _options: AutoImportOptions + protected readonly moduleSymbolMap: ModuleSymbolMap, + protected readonly options: AutoImportOptions ) { - this._filePath = getFileInfo(_parseResults.parseTree).filePath; - this._importStatements = getTopLevelImports(this._parseResults.parseTree, /* includeImplicitImports */ true); - - this._perfInfo.indexUsed = !!this._options.libraryMap; - } - - getAutoImportCandidatesForAbbr(abbr: string | undefined, abbrInfo: AbbreviationInfo, token: CancellationToken) { - const map = this._getCandidates(abbrInfo.importName, /* similarityLimit */ 1, abbr, token); - const result = map.get(abbrInfo.importName); - if (!result) { - return []; - } - - return result.filter((r) => r.source === abbrInfo.importFrom); + this._importStatements = getTopLevelImports(this.parseResults.parseTree, /* includeImplicitImports */ true); } getAutoImportCandidates( @@ -229,18 +174,13 @@ export class AutoImporter { token: CancellationToken ) { const results: AutoImportResult[] = []; - const map = this._getCandidates(word, similarityLimit, abbrFromUsers, token); + const map = this.getCandidates(word, similarityLimit, abbrFromUsers, token); map.forEach((v) => appendArray(results, v)); return results; } - getPerfInfo() { - this._perfInfo.totalInMs = this._stopWatch.getDurationInMilliseconds(); - return this._perfInfo; - } - - private _getCandidates( + protected getCandidates( word: string, similarityLimit: number, abbrFromUsers: string | undefined, @@ -249,14 +189,13 @@ export class AutoImporter { const resultMap = new Map(); const importAliasMap = new Map>(); - this._addImportsFromModuleMap(word, similarityLimit, abbrFromUsers, importAliasMap, resultMap, token); - this._addImportsFromLibraryMap(word, similarityLimit, abbrFromUsers, importAliasMap, resultMap, token); - this._addImportsFromImportAliasMap(importAliasMap, abbrFromUsers, resultMap, token); + this.addImportsFromModuleMap(word, similarityLimit, abbrFromUsers, importAliasMap, resultMap, token); + this.addImportsFromImportAliasMap(importAliasMap, abbrFromUsers, resultMap, token); return resultMap; } - private _addImportsFromLibraryMap( + protected addImportsFromModuleMap( word: string, similarityLimit: number, abbrFromUsers: string | undefined, @@ -264,23 +203,11 @@ export class AutoImporter { results: AutoImportResultMap, token: CancellationToken ) { - const startTime = this._stopWatch.getDurationInMilliseconds(); - - this._options.libraryMap?.forEach((indexResults, filePath) => { - if (indexResults.privateOrProtected) { - return; - } - - if (this._moduleSymbolMap.has(filePath)) { - // Module map is already taking care of this file. this can happen if the module is used by - // user code. - return; - } - + this.moduleSymbolMap.forEach((topLevelSymbols, filePath) => { // See if this file should be offered as an implicit import. - const isStubFileOrHasInit = this._isStubFileOrHasInit(this._options.libraryMap!, filePath); - this._processModuleSymbolTable( - createModuleSymbolTableFromIndexResult(indexResults, /* library */ true), + const isStubFileOrHasInit = this.isStubFileOrHasInit(this.moduleSymbolMap!, filePath); + this.processModuleSymbolTable( + topLevelSymbols, filePath, word, similarityLimit, @@ -291,49 +218,83 @@ export class AutoImporter { token ); }); - - this._perfInfo.indexTimeInMS = this._stopWatch.getDurationInMilliseconds() - startTime; } - private _addImportsFromModuleMap( - word: string, - similarityLimit: number, + protected addImportsFromImportAliasMap( + importAliasMap: Map>, abbrFromUsers: string | undefined, - aliasMap: Map>, results: AutoImportResultMap, token: CancellationToken ) { - const startTime = this._stopWatch.getDurationInMilliseconds(); + throwIfCancellationRequested(token); - this._moduleSymbolMap.forEach((topLevelSymbols, filePath) => { - // See if this file should be offered as an implicit import. - const isStubFileOrHasInit = this._isStubFileOrHasInit(this._moduleSymbolMap!, filePath); - this._processModuleSymbolTable( - topLevelSymbols, - filePath, - word, - similarityLimit, - isStubFileOrHasInit, - abbrFromUsers, - aliasMap, - results, - token - ); - }); + importAliasMap.forEach((mapPerSymbolName) => { + mapPerSymbolName.forEach((importAliasData) => { + if (abbrFromUsers) { + // When alias name is used, our regular exclude mechanism would not work. we need to check + // whether import, the alias is referring to, already exists. + // ex) import numpy + // np| <= auto-import here. + // or + // from scipy import io as spio + // io| <= auto-import here - this._perfInfo.moduleTimeInMS = this._stopWatch.getDurationInMilliseconds() - startTime; - } + // If import statement for the module already exist, then bail out. + // ex) import module[.submodule] or from module[.submodule] import symbol + if (this._importStatements.mapByFilePath.has(importAliasData.importParts.filePath)) { + return; + } - private _isStubFileOrHasInit(map: Map, filePath: string) { - const fileDir = getDirectoryPath(filePath); - const initPathPy = combinePaths(fileDir, '__init__.py'); - const initPathPyi = initPathPy + 'i'; - const isStub = filePath.endsWith('.pyi'); - const hasInit = map.has(initPathPy) || map.has(initPathPyi); - return { isStub, hasInit }; + // If it is the module itself that got imported, make sure we don't import it again. + // ex) from module import submodule as ss + // submodule <= auto-import here + if (importAliasData.importParts.importFrom) { + const imported = this._importStatements.orderedImports.find( + (i) => i.moduleName === importAliasData.importParts.importFrom + ); + if ( + imported && + imported.node.nodeType === ParseNodeType.ImportFrom && + imported.node.imports.some((i) => i.name.value === importAliasData.importParts.symbolName) + ) { + return; + } + } + } + + const alreadyIncluded = this._containsName( + importAliasData.importParts.importName, + importAliasData.importParts.importFrom, + results + ); + if (alreadyIncluded) { + return; + } + + const autoImportTextEdits = this._getTextEditsForAutoImportByFilePath( + { name: importAliasData.importParts.symbolName, alias: abbrFromUsers }, + { + name: importAliasData.importParts.importFrom ?? importAliasData.importParts.importName, + }, + importAliasData.importParts.importName, + importAliasData.importGroup, + importAliasData.importParts.filePath + ); + + this._addResult(results, { + name: importAliasData.importParts.importName, + alias: abbrFromUsers, + symbol: importAliasData.symbol, + kind: importAliasData.itemKind ?? convertSymbolKindToCompletionItemKind(importAliasData.kind), + source: importAliasData.importParts.importFrom, + insertionText: autoImportTextEdits.insertionText, + edits: autoImportTextEdits.edits, + }); + }); + }); } - private _processModuleSymbolTable( + protected processModuleSymbolTable( topLevelSymbols: ModuleSymbolTable, moduleFilePath: string, word: string, @@ -353,8 +314,6 @@ export class AutoImporter { const dotCount = StringUtils.getCharacterCount(importSource, '.'); topLevelSymbols.forEach((autoImportSymbol, name, library) => { - this._perfIndexCount(autoImportSymbol, library); - if (!this._shouldIncludeVariable(autoImportSymbol, name, isStubOrHasInit.isStub, library)) { return; } @@ -395,11 +354,7 @@ export class AutoImporter { return; } - const nameForImportFrom = - this._options.importFormat === ImportFormat.Relative && !library - ? getRelativeModuleName(this._importResolver.fileSystem, this._filePath, moduleFilePath) - : undefined; - + const nameForImportFrom = this.getNameForImportFrom(library, moduleFilePath); const autoImportTextEdits = this._getTextEditsForAutoImportByFilePath( { name, alias: abbrFromUsers }, { name: importSource, nameForImportFrom }, @@ -453,6 +408,19 @@ export class AutoImporter { ); } + protected getNameForImportFrom(library: boolean, moduleFilePath: string): string | undefined { + return undefined; + } + + protected isStubFileOrHasInit(map: Map, filePath: string) { + const fileDir = getDirectoryPath(filePath); + const initPathPy = combinePaths(fileDir, '__init__.py'); + const initPathPyi = initPathPy + 'i'; + const isStub = filePath.endsWith('.pyi'); + const hasInit = map.has(initPathPy) || map.has(initPathPyi); + return { isStub, hasInit }; + } + private _shouldIncludeVariable( autoImportSymbol: AutoImportSymbol, name: string, @@ -465,93 +433,13 @@ export class AutoImporter { return true; } - if (this._options.allowVariableInAll && !library && autoImportSymbol.symbol?.isInDunderAll()) { + if (this.options.allowVariableInAll && !library && autoImportSymbol.symbol?.isInDunderAll()) { return true; } return SymbolNameUtils.isPublicConstantOrTypeAlias(name); } - private _addImportsFromImportAliasMap( - importAliasMap: Map>, - abbrFromUsers: string | undefined, - results: AutoImportResultMap, - token: CancellationToken - ) { - throwIfCancellationRequested(token); - - const startTime = this._stopWatch.getDurationInMilliseconds(); - - importAliasMap.forEach((mapPerSymbolName) => { - this._perfInfo.importAliasCount += mapPerSymbolName.size; - - mapPerSymbolName.forEach((importAliasData) => { - if (abbrFromUsers) { - // When alias name is used, our regular exclude mechanism would not work. we need to check - // whether import, the alias is referring to, already exists. - // ex) import numpy - // np| <= auto-import here. - // or - // from scipy import io as spio - // io| <= auto-import here - - // If import statement for the module already exist, then bail out. - // ex) import module[.submodule] or from module[.submodule] import symbol - if (this._importStatements.mapByFilePath.has(importAliasData.importParts.filePath)) { - return; - } - - // If it is the module itself that got imported, make sure we don't import it again. - // ex) from module import submodule as ss - // submodule <= auto-import here - if (importAliasData.importParts.importFrom) { - const imported = this._importStatements.orderedImports.find( - (i) => i.moduleName === importAliasData.importParts.importFrom - ); - if ( - imported && - imported.node.nodeType === ParseNodeType.ImportFrom && - imported.node.imports.some((i) => i.name.value === importAliasData.importParts.symbolName) - ) { - return; - } - } - } - - const alreadyIncluded = this._containsName( - importAliasData.importParts.importName, - importAliasData.importParts.importFrom, - results - ); - if (alreadyIncluded) { - return; - } - - const autoImportTextEdits = this._getTextEditsForAutoImportByFilePath( - { name: importAliasData.importParts.symbolName, alias: abbrFromUsers }, - { - name: importAliasData.importParts.importFrom ?? importAliasData.importParts.importName, - }, - importAliasData.importParts.importName, - importAliasData.importGroup, - importAliasData.importParts.filePath - ); - - this._addResult(results, { - name: importAliasData.importParts.importName, - alias: abbrFromUsers, - symbol: importAliasData.symbol, - kind: importAliasData.itemKind ?? convertSymbolKindToCompletionItemKind(importAliasData.kind), - source: importAliasData.importParts.importFrom, - insertionText: autoImportTextEdits.insertionText, - edits: autoImportTextEdits.edits, - }); - }); - }); - - this._perfInfo.importAliasTimeInMS = this._stopWatch.getDurationInMilliseconds() - startTime; - } - private _addToImportAliasMap( alias: IndexAliasData, data: ImportAliasData, @@ -667,7 +555,7 @@ export class AutoImporter { return false; } - if (!this._options.patternMatcher) { + if (!this.options.patternMatcher) { const index = word[0] !== '_' && name[0] === '_' && name.length > 1 ? 1 : 0; if (word[0].toLocaleLowerCase() !== name[index].toLocaleLowerCase()) { return false; @@ -676,7 +564,7 @@ export class AutoImporter { return StringUtils.isPatternInSymbol(word, name); } - return this._options.patternMatcher(word, name); + return this.options.patternMatcher(word, name); } private _shouldExclude(name: string) { @@ -700,7 +588,7 @@ export class AutoImporter { // convert to a module name that can be used in an // 'import from' statement. private _getModuleNameAndTypeFromFilePath(filePath: string): ModuleNameAndType { - return this._importResolver.getModuleNameForImport(filePath, this._execEnvironment); + return this.importResolver.getModuleNameForImport(filePath, this._execEnvironment); } private _getTextEditsForAutoImportByFilePath( @@ -759,12 +647,12 @@ export class AutoImporter { if (moduleNameInfo.name === importStatement.moduleName) { return { insertionText: importNameInfo.alias ?? insertionText, - edits: this._options.lazyEdit + edits: this.options.lazyEdit ? undefined : getTextEditsForAutoImportSymbolAddition( importNameInfo, importStatement, - this._parseResults + this.parseResults ), }; } @@ -789,9 +677,9 @@ export class AutoImporter { // If not, add what we want at the existing import from statement. return { insertionText: importNameInfo.alias ?? insertionText, - edits: this._options.lazyEdit + edits: this.options.lazyEdit ? undefined - : getTextEditsForAutoImportSymbolAddition(importNameInfo, imported, this._parseResults), + : getTextEditsForAutoImportSymbolAddition(importNameInfo, imported, this.parseResults), }; } } @@ -811,27 +699,19 @@ export class AutoImporter { return { insertionText: importNameInfo.alias ?? insertionText, - edits: this._options.lazyEdit + edits: this.options.lazyEdit ? undefined : getTextEditsForAutoImportInsertion( importNameInfo, moduleNameInfo, this._importStatements, importGroup, - this._parseResults, + this.parseResults, this._invocationPosition ), }; } - private _perfIndexCount(autoImportSymbol: AutoImportSymbol, library: boolean) { - if (autoImportSymbol.symbol) { - this._perfInfo.symbolCount++; - } else if (library) { - this._perfInfo.indexCount++; - } - } - private _addResult(results: AutoImportResultMap, result: AutoImportResult) { let entries = results.get(result.name); if (!entries) { @@ -843,28 +723,6 @@ export class AutoImporter { } } -function createModuleSymbolTableFromIndexResult(indexResults: IndexResults, library: boolean): ModuleSymbolTable { - return { - forEach(callbackfn: (value: AutoImportSymbol, key: string, library: boolean) => void): void { - indexResults.symbols.forEach((data) => { - if (!data.externallyVisible) { - return; - } - - callbackfn( - { - importAlias: data.alias, - kind: data.kind, - itemKind: data.itemKind, - }, - data.name, - library - ); - }); - }, - }; -} - export function convertSymbolKindToCompletionItemKind(kind: SymbolKind | undefined) { switch (kind) { case SymbolKind.File: diff --git a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts index 3166538ed..424c075a8 100644 --- a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts +++ b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts @@ -23,13 +23,7 @@ import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; import { isUserCode } from '../analyzer/sourceFileInfoUtils'; import { SourceMapper } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { - ClassMemberLookupFlags, - doForEachSubtype, - isMaybeDescriptorInstance, - lookUpClassMember, - lookUpObjectMember, -} from '../analyzer/typeUtils'; +import { ClassMemberLookupFlags, doForEachSubtype, lookUpClassMember, lookUpObjectMember } from '../analyzer/typeUtils'; import { ClassType, isClassInstance, isFunction, isInstantiableClass } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { ProgramView } from '../common/extensibility'; @@ -41,6 +35,7 @@ import { CallNode, MemberAccessNode, NameNode, ParseNode, ParseNodeType } from ' import { ParseResults } from '../parser/parser'; import { DocumentSymbolCollectorUseCase } from './documentSymbolCollector'; import { canNavigateToFile } from './navigationUtils'; +import { getSymbolKind } from '../common/lspUtils'; export class CallHierarchyProvider { private readonly _parseResults: ParseResults | undefined; @@ -90,7 +85,7 @@ export class CallHierarchyProvider { const callItem: CallHierarchyItem = { name: symbolName, - kind: getSymbolKind(targetDecl, this._evaluator), + kind: getSymbolKind(targetDecl, this._evaluator, symbolName) ?? SymbolKind.Module, uri: callItemUri, range: targetDecl.range, selectionRange: targetDecl.range, @@ -405,7 +400,7 @@ class FindOutgoingCallTreeWalker extends ParseTreeWalker { const callDest: CallHierarchyItem = { name: nameNode.value, - kind: getSymbolKind(resolvedDecl, this._evaluator), + kind: getSymbolKind(resolvedDecl, this._evaluator, nameNode.value) ?? SymbolKind.Module, uri: resolvedDecl.path, range: resolvedDecl.range, selectionRange: resolvedDecl.range, @@ -613,33 +608,3 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { incomingCall.fromRanges.push(fromRange); } } - -function getSymbolKind(declaration: Declaration, evaluator: TypeEvaluator): SymbolKind { - let symbolKind: SymbolKind; - - switch (declaration.type) { - case DeclarationType.Class: - case DeclarationType.SpecialBuiltInClass: - symbolKind = SymbolKind.Class; - break; - - case DeclarationType.Function: - if (declaration.isMethod) { - const declType = evaluator.getTypeForDeclaration(declaration)?.type; - if (declType && isMaybeDescriptorInstance(declType, /* requireSetter */ false)) { - symbolKind = SymbolKind.Property; - } else { - symbolKind = SymbolKind.Method; - } - } else { - symbolKind = SymbolKind.Function; - } - break; - - default: - symbolKind = SymbolKind.Function; - break; - } - - return symbolKind; -} diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 2be57ff6d..827e1673d 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -19,7 +19,6 @@ import { TextEdit, } from 'vscode-languageserver'; -import { ImportLookup } from '../analyzer/analyzerFileInfo'; import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; import { Declaration, @@ -36,7 +35,6 @@ import { ImportedModuleDescriptor } from '../analyzer/importResolver'; import { isTypedKwargs } from '../analyzer/parameterUtils'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { getCallNodeAndActiveParameterIndex } from '../analyzer/parseTreeUtils'; -import { getTypeShedFallbackPath } from '../analyzer/pythonPathUtils'; import { getScopeForNode } from '../analyzer/scopeUtils'; import { isStubFile, SourceMapper } from '../analyzer/sourceMapper'; import { Symbol, SymbolTable } from '../analyzer/symbol'; @@ -44,12 +42,11 @@ import * as SymbolNameUtils from '../analyzer/symbolNameUtils'; import { getLastTypedDeclaredForSymbol, isVisibleExternally } from '../analyzer/symbolUtils'; import { getTypedDictMembersForClass } from '../analyzer/typedDicts'; import { getModuleDocStringFromPaths } from '../analyzer/typeDocStringUtils'; -import { CallSignatureInfo, PrintTypeOptions, TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; +import { CallSignatureInfo, TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { printLiteralValue } from '../analyzer/typePrinter'; import { ClassType, FunctionType, - isAny, isClass, isClassInstance, isFunction, @@ -57,19 +54,14 @@ import { isModule, isNoneInstance, isOverloadedFunction, - isTypeVar, - isUnbound, isUnknown, Type, TypeBase, TypeCategory, } from '../analyzer/types'; import { - ClassMember, ClassMemberLookupFlags, doForEachSubtype, - getClassFieldsRecursive, - getDeclaringModulesForType, getMembersForClass, getMembersForModule, isLiteralType, @@ -79,19 +71,16 @@ import { lookUpObjectMember, } from '../analyzer/typeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; -import { addIfNotNull, appendArray } from '../common/collectionUtils'; import { ExecutionEnvironment } from '../common/configOptions'; import * as debug from '../common/debug'; import { fail } from '../common/debug'; import { fromLSPAny, toLSPAny } from '../common/lspUtils'; -import { combinePaths } from '../common/pathUtils'; import { convertOffsetToPosition, convertPositionToOffset } from '../common/positionUtils'; import { PythonVersion } from '../common/pythonVersion'; import * as StringUtils from '../common/stringUtils'; import { comparePositions, Position } from '../common/textRange'; import { TextRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; -import { Duration } from '../common/timing'; import { convertToTextEdits } from '../common/workspaceEditUtils'; import { ArgumentCategory, @@ -116,7 +105,7 @@ import { } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { OperatorToken, OperatorType, StringToken, StringTokenFlags, Token, TokenType } from '../parser/tokenizerTypes'; -import { AbbreviationInfo, AutoImporter, AutoImportResult, ImportFormat, ModuleSymbolMap } from './autoImporter'; +import { AutoImporter, AutoImportResult, buildModuleSymbolsMap } from './autoImporter'; import { CompletionDetail, getCompletionItemDocumentation, @@ -124,8 +113,6 @@ import { SymbolDetail, } from './completionProviderUtils'; import { DocumentSymbolCollector } from './documentSymbolCollector'; -import { IndexResults } from './documentSymbolProvider'; -import { ImportAdder, ImportData } from './importAdder'; import { getAutoImportText, getDocumentationPartsForTypeAndDecl } from './tooltipUtils'; import { ProgramView } from '../common/extensibility'; @@ -242,65 +229,11 @@ export interface CompletionItemData { modulePath?: string; } -// MemberAccessInfo attempts to gather info for unknown types -export interface MemberAccessInfo { - lastKnownModule?: string; - lastKnownMemberName?: string; - unknownMemberName?: string; -} - -export interface AutoImportInfo { - indexUsed: boolean; - totalTimeInMS: number; - - moduleTimeInMS: number; - indexTimeInMS: number; - importAliasTimeInMS: number; - - itemCount: number; - symbolCount: number; - indexCount: number; - importAliasCount: number; - - additionTimeInMS: number; -} - -export interface ExtensionInfo { - correlationId: string; - selectedItemTelemetryTimeInMS: number; - itemTelemetryTimeInMS: number; - totalTimeInMS: number; -} - -interface CompletionResultsBase { - memberAccessInfo?: MemberAccessInfo; - autoImportInfo?: AutoImportInfo; - extensionInfo?: ExtensionInfo; -} -export interface CompletionResultsList extends CompletionResultsBase { - completionList: CompletionList; -} -export interface CompletionResults extends CompletionResultsBase { - completionMap: CompletionMap; -} - export interface CompletionOptions { - format: MarkupKind; - snippet: boolean; - lazyEdit: boolean; - autoImport: boolean; - includeUserSymbolsInAutoImport: boolean; - extraCommitChars: boolean; - importFormat: ImportFormat; - triggerCharacter?: string; -} - -export type AbbreviationMap = Map; - -export interface AutoImportMaps { - nameMap?: AbbreviationMap; - libraryMap?: Map; - getModuleSymbolsMap: () => ModuleSymbolMap; + readonly format: MarkupKind; + readonly snippet: boolean; + readonly lazyEdit: boolean; + readonly triggerCharacter?: string; } interface RecentCompletionInfo { @@ -333,264 +266,41 @@ export class CompletionProvider { // original completion algorithm and look for this symbol. private _itemToResolve: CompletionItem | undefined; - private _execEnv: ExecutionEnvironment; - // Indicate whether invocation is inside of string literal. private _insideStringLiteral: StringToken | undefined = undefined; - private readonly _parseResults: ParseResults; - private readonly _sourceMapper: SourceMapper; + protected readonly execEnv: ExecutionEnvironment; + protected readonly parseResults: ParseResults; + protected readonly sourceMapper: SourceMapper; constructor( - private _program: ProgramView, - private _workspacePath: string, - private _filePath: string, - private _position: Position, - private _importLookup: ImportLookup, - private _options: CompletionOptions, - private _autoImportMaps: AutoImportMaps, - private _cancellationToken: CancellationToken + protected readonly program: ProgramView, + private readonly _workspacePath: string, + protected readonly filePath: string, + protected readonly position: Position, + protected readonly options: CompletionOptions, + protected readonly cancellationToken: CancellationToken ) { - this._execEnv = this._configOptions.findExecEnvironment(this._filePath); + this.execEnv = this.configOptions.findExecEnvironment(this.filePath); - this._parseResults = this._program.getParseResults(this._filePath)!; - this._sourceMapper = this._program.getSourceMapper( - this._filePath, - this._cancellationToken, - /* mapCompiled */ true - ); + this.parseResults = this.program.getParseResults(this.filePath)!; + this.sourceMapper = this.program.getSourceMapper(this.filePath, this.cancellationToken, /* mapCompiled */ true); } - getCompletionsForPosition(): CompletionResults | undefined { - const offset = convertPositionToOffset(this._position, this._parseResults.tokenizerOutput.lines); - if (offset === undefined) { - return undefined; - } - - const token = ParseTreeUtils.getTokenOverlapping(this._parseResults.tokenizerOutput.tokens, offset); - if (token?.type === TokenType.String) { - const stringToken = token as StringToken; - this._insideStringLiteral = TextRange.contains(stringToken, offset) - ? stringToken - : stringToken.flags & StringTokenFlags.Unterminated - ? stringToken - : undefined; - } - - let node = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, offset); - - // See if we can get to a "better" node by backing up a few columns. - // A "better" node is defined as one that's deeper than the current - // node. - const initialNode = node; - const initialDepth = node ? ParseTreeUtils.getNodeDepth(node) : 0; - - if (!initialNode || initialNode.nodeType !== ParseNodeType.Name) { - let curOffset = offset; - let sawComma = false; - - while (curOffset >= 0) { - curOffset--; - - // Stop scanning backward if we hit certain stop characters. - const curChar = this._fileContents.substr(curOffset, 1); - if (curChar === '(' || curChar === '\n' || curChar === '}') { - break; - } - if (curChar === ',') { - sawComma = true; - } - - const curNode = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, curOffset); - if (curNode && curNode !== initialNode) { - if (ParseTreeUtils.getNodeDepth(curNode) > initialDepth) { - node = curNode; - - // If we're at the end of a list with a hanging comma, handle the - // special case of "from x import y, ". - if (sawComma && node.parent?.nodeType === ParseNodeType.ImportFromAs) { - node = node.parent; - } - } - break; - } - } - } - - if (node === undefined) { - return undefined; - } - - // Get the text on that line prior to the insertion point. - const lineTextRange = this._parseResults.tokenizerOutput.lines.getItemAt(this._position.line); - const textOnLine = this._fileContents.substr(lineTextRange.start, lineTextRange.length); - const priorText = textOnLine.substr(0, this._position.character); - const postText = textOnLine.substr(this._position.character); - const priorWordIndex = priorText.search(/\w+$/); - const priorWord = priorWordIndex >= 0 ? priorText.substr(priorWordIndex) : ''; - - // Don't offer completions if we're within a comment. - if (this._isWithinComment(offset)) { - return undefined; - } - - // See if the node is part of an error node. If so, that takes - // precedence. - let errorNode: ParseNode | undefined = node; - while (errorNode) { - if (errorNode.nodeType === ParseNodeType.Error) { - break; - } - - errorNode = errorNode.parent; - } - - // Determine the context based on the parse node's type and - // that of its ancestors. - let curNode = errorNode || node; - while (true) { - throwIfCancellationRequested(this._cancellationToken); - - if (curNode.nodeType === ParseNodeType.String) { - return this._getLiteralCompletions(curNode, offset, priorWord, priorText, postText); - } - - if (curNode.nodeType === ParseNodeType.StringList || curNode.nodeType === ParseNodeType.FormatString) { - return undefined; - } - - if (curNode.nodeType === ParseNodeType.ModuleName) { - return this._getImportModuleCompletions(curNode); - } - - if (curNode.nodeType === ParseNodeType.Error) { - return this._getExpressionErrorCompletions(curNode, offset, priorWord, priorText, postText); - } - - if (curNode.nodeType === ParseNodeType.MemberAccess) { - return this._getMemberAccessCompletions(curNode.leftExpression, priorWord); - } - - if (curNode.nodeType === ParseNodeType.Dictionary) { - const completionMap = new CompletionMap(); - if ( - this._tryAddTypedDictKeysFromDictionary( - curNode, - /* stringNode */ undefined, - priorWord, - priorText, - postText, - completionMap - ) - ) { - return { completionMap }; - } - } - - const dictionaryEntry = ParseTreeUtils.getFirstAncestorOrSelfOfKind( - curNode, - ParseNodeType.DictionaryKeyEntry - ); - if (dictionaryEntry) { - if (dictionaryEntry.parent?.nodeType === ParseNodeType.Dictionary) { - const dictionaryNode = dictionaryEntry.parent; - if (dictionaryNode.trailingCommaToken && dictionaryNode.trailingCommaToken.start < offset) { - const completionMap = new CompletionMap(); - if ( - this._tryAddTypedDictKeysFromDictionary( - dictionaryNode, - /* stringNode */ undefined, - priorWord, - priorText, - postText, - completionMap - ) - ) { - return { completionMap }; - } - } - } - } - - if (curNode.nodeType === ParseNodeType.Name) { - // This condition is little different than others since it does its own - // tree walk up to find context and let outer tree walk up to proceed if it can't find - // one to show completion. - const result = this._tryGetNameCompletions(curNode, offset, priorWord, priorText, postText); - if (result || result === undefined) { - return result; - } - } - - if (curNode.nodeType === ParseNodeType.List && this._options.triggerCharacter === '[') { - // If this is an empty list, don't start putting completions up yet. - return undefined; - } - - if (curNode.nodeType === ParseNodeType.ImportFrom) { - return this._getImportFromCompletions(curNode, priorWord); - } - - if (isExpressionNode(curNode)) { - return this._getExpressionCompletions(curNode, priorWord, priorText, postText); - } - - if (curNode.nodeType === ParseNodeType.Suite) { - if ( - curNode.parent && - curNode.parent.nodeType === ParseNodeType.Except && - !curNode.parent.name && - curNode.parent.typeExpression && - TextRange.getEnd(curNode.parent.typeExpression) < offset && - offset <= curNode.parent.exceptSuite.start - ) { - // except Exception as [] - return undefined; - } - - if ( - curNode.parent && - curNode.parent.nodeType === ParseNodeType.Class && - (!curNode.parent.name || !curNode.parent.name.value) && - curNode.parent.arguments.length === 0 && - offset <= curNode.parent.suite.start - ) { - // class [] - return undefined; - } - - return this._getStatementCompletions(curNode, priorWord, priorText, postText); - } - - if (curNode.nodeType === ParseNodeType.Module) { - return this._getStatementCompletions(curNode, priorWord, priorText, postText); - } - - if ( - curNode.nodeType === ParseNodeType.Parameter && - curNode.length === 0 && - curNode.parent && - curNode.parent.nodeType === ParseNodeType.Lambda - ) { - // lambda [] or lambda x, [] - return undefined; - } - - if (!curNode.parent) { - break; - } - - curNode = curNode.parent; + getCompletions(): CompletionList | null { + if (!this.program.getSourceFileInfo(this.filePath)) { + return null; } - return undefined; + const completionMap = this._getCompletions(); + return CompletionList.create(completionMap?.toArray()); } // When the user selects a completion, this callback is invoked, // allowing us to record what was selected. This allows us to // build our MRU cache so we can better predict entries. resolveCompletionItem(completionItem: CompletionItem) { - throwIfCancellationRequested(this._cancellationToken); + throwIfCancellationRequested(this.cancellationToken); const completionItemData = fromLSPAny(completionItem.data); @@ -625,18 +335,18 @@ export class CompletionProvider { } if (completionItemData.modulePath) { - const documentation = getModuleDocStringFromPaths([completionItemData.modulePath], this._sourceMapper); + const documentation = getModuleDocStringFromPaths([completionItemData.modulePath], this.sourceMapper); if (!documentation) { return; } - if (this._options.format === MarkupKind.Markdown) { + if (this.options.format === MarkupKind.Markdown) { const markdownString = convertDocStringToMarkdown(documentation); completionItem.documentation = { kind: MarkupKind.Markdown, value: markdownString, }; - } else if (this._options.format === MarkupKind.PlainText) { + } else if (this.options.format === MarkupKind.PlainText) { const plainTextString = convertDocStringToPlainText(documentation); completionItem.documentation = { kind: MarkupKind.PlainText, @@ -652,1196 +362,1316 @@ export class CompletionProvider { // about the item to be resolved. We'll ignore the rest of the returned // list. This is a bit wasteful, but all of that information should be // cached, so it's not as bad as it might seem. - this.getCompletionsForPosition(); + this.getCompletions(); } else if (!completionItem.additionalTextEdits) { const completionMap = new CompletionMap(); - const completionResults = { completionMap }; - - this._addAutoImportCompletions( + this.addAutoImportCompletions( completionItemData.symbolLabel, /* similarityLimit */ 1, /* lazyEdit */ false, - completionResults + completionMap ); } } - private get _importResolver() { - return this._program.importResolver; + protected get evaluator() { + return this.program.evaluator!; } - private get _configOptions() { - return this._program.configOptions; + protected get importResolver() { + return this.program.importResolver; } - private get _evaluator() { - return this._program.evaluator!; + protected get configOptions() { + return this.program.configOptions; } - private get _fileContents() { - return this._parseResults?.text ?? ''; + protected isSimpleDefault(node: ExpressionNode): boolean { + switch (node.nodeType) { + case ParseNodeType.Number: + case ParseNodeType.Constant: + case ParseNodeType.MemberAccess: + return true; + + case ParseNodeType.String: + return (node.token.flags & StringTokenFlags.Format) === 0; + + case ParseNodeType.StringList: + return node.strings.every(this.isSimpleDefault); + + case ParseNodeType.UnaryOperation: + return this.isSimpleDefault(node.expression); + + case ParseNodeType.BinaryOperation: + return this.isSimpleDefault(node.leftExpression) && this.isSimpleDefault(node.rightExpression); + + default: + return false; + } } - // This method will return false if it wants1 - // caller to walk up the tree. it will return - // CompletionResults or undefined if it wants caller - // to return. - private _tryGetNameCompletions( - curNode: NameNode, - offset: number, + protected getMethodOverrideCompletions( priorWord: string, - priorText: string, - postText: string - ): false | CompletionResults | undefined { - if (!curNode.parent) { - return false; + partialName: NameNode, + decorators?: DecoratorNode[] + ): CompletionMap | undefined { + const enclosingClass = ParseTreeUtils.getEnclosingClass(partialName, /* stopAtFunction */ true); + if (!enclosingClass) { + return undefined; } - if (curNode.parent.nodeType === ParseNodeType.ImportAs && curNode.parent.alias === curNode) { - // Are we within a "import Y as [Z]"? + const classResults = this.evaluator.getTypeOfClass(enclosingClass); + if (!classResults) { return undefined; } - if (curNode.parent.nodeType === ParseNodeType.ModuleName) { - // Are we within a "import Y as []"? - if ( - curNode.parent.parent && - curNode.parent.parent.nodeType === ParseNodeType.ImportAs && - !curNode.parent.parent.alias && - TextRange.getEnd(curNode.parent.parent) < offset - ) { - return undefined; + const symbolTable = new Map(); + for (let i = 1; i < classResults.classType.details.mro.length; i++) { + const mroClass = classResults.classType.details.mro[i]; + if (isInstantiableClass(mroClass)) { + getMembersForClass(mroClass, symbolTable, /* includeInstanceVars */ false); } - - // Are we within a "from X import Y as Z" statement and - // more specifically within the "Y"? - return this._getImportModuleCompletions(curNode.parent); } - if (curNode.parent.nodeType === ParseNodeType.ImportFromAs) { - if (curNode.parent.alias === curNode) { - // Are we within a "from X import Y as [Z]"? - return undefined; - } + const staticmethod = decorators?.some((d) => this.checkDecorator(d, 'staticmethod')) ?? false; + const classmethod = decorators?.some((d) => this.checkDecorator(d, 'classmethod')) ?? false; - const parentNode = curNode.parent.parent; - if (parentNode && parentNode.nodeType === ParseNodeType.ImportFrom) { - // Are we within a "from X import Y as []"? - if (!curNode.parent.alias && TextRange.getEnd(curNode.parent) < offset) { - return undefined; - } + const completionMap = new CompletionMap(); - if (curNode.parent.name === curNode) { - return this._getImportFromCompletions(parentNode, priorWord); - } + symbolTable.forEach((symbol, name) => { + let decl = getLastTypedDeclaredForSymbol(symbol); + if (decl && decl.type === DeclarationType.Function) { + if (StringUtils.isPatternInSymbol(partialName.value, name)) { + const declaredType = this.evaluator.getTypeForDeclaration(decl)?.type; + if (!declaredType) { + return; + } - return this._getImportFromCompletions(parentNode, ''); - } + let isProperty = isClassInstance(declaredType) && ClassType.isPropertyClass(declaredType); - return false; - } + if (SymbolNameUtils.isDunderName(name)) { + // Don't offer suggestions for built-in properties like "__class__", etc. + isProperty = false; + } - if (curNode.parent.nodeType === ParseNodeType.MemberAccess && curNode === curNode.parent.memberName) { - return this._getMemberAccessCompletions(curNode.parent.leftExpression, priorWord); - } + if (!isFunction(declaredType) && !isProperty) { + return; + } - if (curNode.parent.nodeType === ParseNodeType.Except && curNode === curNode.parent.name) { - return undefined; - } + if (isProperty) { + // For properties, we should override the "getter", which is typically + // the first declaration. + const typedDecls = symbol.getTypedDeclarations(); + if (typedDecls.length > 0 && typedDecls[0].type === DeclarationType.Function) { + decl = typedDecls[0]; + } + } - if (curNode.parent.nodeType === ParseNodeType.Function && curNode === curNode.parent.name) { - if (curNode.parent.decorators?.some((d) => this._isOverload(d))) { - return this._getMethodOverloadsCompletions(priorWord, curNode); + const isDeclaredStaticMethod = + isFunction(declaredType) && FunctionType.isStaticMethod(declaredType); + + // Special-case the "__init__subclass__" method because it's an implicit + // classmethod that the type evaluator flags as a real classmethod. + const isDeclaredClassMethod = + isFunction(declaredType) && + FunctionType.isClassMethod(declaredType) && + name !== '__init_subclass__'; + + if (staticmethod !== isDeclaredStaticMethod || classmethod !== isDeclaredClassMethod) { + return; + } + + const methodSignature = this._printMethodSignature(classResults.classType, decl); + + let text: string; + if (isStubFile(this.filePath)) { + text = `${methodSignature}: ...`; + } else { + const methodBody = this.printOverriddenMethodBody( + classResults.classType, + isDeclaredStaticMethod, + isProperty, + decl + ); + text = `${methodSignature}:\n${methodBody}`; + } + + const textEdit = this.createReplaceEdits(priorWord, partialName, text); + + this.addSymbol(name, symbol, partialName.value, completionMap, { + // method signature already contains () + funcParensDisabled: true, + edits: { + format: this.options.snippet ? InsertTextFormat.Snippet : undefined, + textEdit, + }, + }); + } } + }); - return undefined; + return completionMap; + } + + protected printOverriddenMethodBody( + classType: ClassType, + isStaticMethod: boolean, + isProperty: boolean, + decl: FunctionDeclaration + ) { + let sb = this.parseResults.tokenizerOutput.predominantTabSequence; + + if ( + classType.details.baseClasses.length === 1 && + isClass(classType.details.baseClasses[0]) && + classType.details.baseClasses[0].details.fullName === 'builtins.object' + ) { + sb += this.options.snippet ? '${0:pass}' : 'pass'; + return sb; } - if (curNode.parent.nodeType === ParseNodeType.Parameter && curNode === curNode.parent.name) { - return undefined; + if (decl.node.parameters.length === 0) { + sb += this.options.snippet ? '${0:pass}' : 'pass'; + return sb; } - if (curNode.parent.nodeType === ParseNodeType.Class && curNode === curNode.parent.name) { - return undefined; + const parameters = getParameters(isStaticMethod ? decl.node.parameters : decl.node.parameters.slice(1)); + if (decl.node.name.value !== '__init__') { + sb += 'return '; } - if ( - curNode.parent.nodeType === ParseNodeType.For && - TextRange.contains(curNode.parent.targetExpression, curNode.start) - ) { - return undefined; + if (decl.node.isAsync) { + sb += 'await '; } - if ( - curNode.parent.nodeType === ParseNodeType.ListComprehensionFor && - TextRange.contains(curNode.parent.targetExpression, curNode.start) - ) { - return undefined; + if (isProperty) { + return sb + `super().${decl.node.name.value}`; } - // For assignments that implicitly declare variables, remove itself (var decl) from completion. - if ( - curNode.parent.nodeType === ParseNodeType.Assignment || - curNode.parent.nodeType === ParseNodeType.AssignmentExpression - ) { - const leftNode = - curNode.parent.nodeType === ParseNodeType.AssignmentExpression - ? curNode.parent.name - : curNode.parent.leftExpression; + return sb + `super().${decl.node.name.value}(${parameters.map(convertToString).join(', ')})`; - if (leftNode !== curNode || priorWord.length === 0) { - return false; - } + function getParameters(parameters: ParameterNode[]) { + const results: [node: ParameterNode, keywordOnly: boolean][] = []; - const decls = this._evaluator.getDeclarationsForNameNode(curNode); - if (decls?.length !== 1 || !isVariableDeclaration(decls[0]) || decls[0].node !== curNode) { - return false; - } + let sawKeywordOnlySeparator = false; + for (const parameter of parameters) { + if (parameter.name) { + results.push([ + parameter, + parameter.category === ParameterCategory.Simple && !!parameter.name && sawKeywordOnlySeparator, + ]); + } - const completionList = this._getExpressionCompletions(curNode, priorWord, priorText, postText); - if (completionList) { - completionList.completionMap.delete(curNode.value); + // All simple parameters after a `*` or `*args` parameter + // are considered keyword only. + if (parameter.category === ParameterCategory.VarArgList) { + sawKeywordOnlySeparator = true; + } } - return completionList; + return results; } - // Defining class variables. - // ex) class A: - // variable = 1 - if ( - curNode.parent.nodeType === ParseNodeType.StatementList && - curNode.parent.parent?.nodeType === ParseNodeType.Suite && - curNode.parent.parent.parent?.nodeType === ParseNodeType.Class - ) { - const completionList = this._getClassVariableCompletions(curNode); - if (completionList) { - return completionList; + function convertToString(parameter: [node: ParameterNode, keywordOnly: boolean]) { + const name = parameter[0].name?.value; + if (parameter[0].category === ParameterCategory.VarArgList) { + return `*${name}`; } - } - return false; - } + if (parameter[0].category === ParameterCategory.VarArgDictionary) { + return `**${name}`; + } - private _isWithinComment(offset: number): boolean { - const token = getTokenAfter(offset, this._parseResults.tokenizerOutput.tokens); - if (!token) { - // If we're in the middle of a token, we're not in a comment. - return false; + return parameter[1] ? `${name}=${name}` : name; } + } - return token.comments?.some((c) => TextRange.overlaps(c, offset)) ?? false; + protected createReplaceEdits(priorWord: string, node: ParseNode | undefined, text: string) { + const replaceOrInsertEndChar = + node?.nodeType === ParseNodeType.Name + ? this.position.character - priorWord.length + node.value.length + : this.position.character; - function getTokenAfter(offset: number, tokens: TextRangeCollection) { - const tokenIndex = tokens.getItemAtPosition(offset); - if (tokenIndex < 0) { - return undefined; - } + const range: Range = { + start: { line: this.position.line, character: this.position.character - priorWord.length }, + end: { line: this.position.line, character: replaceOrInsertEndChar }, + }; - let token = tokens.getItemAt(tokenIndex); - // If we're in the middle of a token, we can't be within a comment. - if (offset > token.start && offset < token.start + token.length) { - return undefined; + return TextEdit.replace(range, text); + } + + protected addSymbol( + name: string, + symbol: Symbol, + priorWord: string, + completionMap: CompletionMap, + detail: SymbolDetail + ) { + let primaryDecl = getLastTypedDeclaredForSymbol(symbol); + if (!primaryDecl) { + const declarations = symbol.getDeclarations(); + if (declarations.length > 0) { + primaryDecl = declarations[declarations.length - 1]; } + } - // Multiple zero length tokens can occupy same position. - // But comment is associated with the first one. loop - // backward to find the first token if position is same. - for (let i = tokenIndex - 1; i >= 0; i--) { - const prevToken = tokens.getItemAt(i); - if (token.start !== prevToken.start) { - break; - } + primaryDecl = primaryDecl + ? this.evaluator.resolveAliasDeclaration(primaryDecl, /* resolveLocalNames */ true) ?? primaryDecl + : undefined; - token = prevToken; - } + const autoImportText = detail.autoImportSource + ? this._getAutoImportText(name, detail.autoImportSource, detail.autoImportAlias) + : undefined; - if (offset <= token.start) { - return token; - } + // Are we resolving a completion item? If so, see if this symbol + // is the one that we're trying to match. + if (this._itemToResolve) { + const completionItemData = fromLSPAny(this._itemToResolve.data); - // If offset > token.start, tokenIndex + 1 < tokens.length - // should be always true. - debug.assert(tokenIndex + 1 < tokens.length); - return tokens.getItemAt(tokenIndex + 1); - } - } + if (completionItemData.symbolLabel !== name) { + // It's not what we are looking for. + return; + } - private _getExpressionErrorCompletions( - node: ErrorNode, - offset: number, - priorWord: string, - priorText: string, - postText: string - ): CompletionResults | undefined { - // Is the error due to a missing member access name? If so, - // we can evaluate the left side of the member access expression - // to determine its type and offer suggestions based on it. - switch (node.category) { - case ErrorExpressionCategory.MissingIn: { - return this._createSingleKeywordCompletion('in'); + if (completionItemData.autoImportText) { + if ( + completionItemData.autoImportText === autoImportText?.importText && + detail.edits?.additionalTextEdits + ) { + this._itemToResolve.additionalTextEdits = convertToTextEdits(detail.edits.additionalTextEdits); + } + return; } - case ErrorExpressionCategory.MissingElse: { - return this._createSingleKeywordCompletion('else'); + // This call can be expensive to perform on every completion item + // that we return, so we do it lazily in the "resolve" callback. + const type = this.evaluator.getEffectiveTypeOfSymbol(symbol); + if (!type) { + // Can't resolve. so bail out. + return; } - case ErrorExpressionCategory.MissingMemberAccessName: - case ErrorExpressionCategory.MissingExpression: { - // Don't show completion after random dots. - const tokenizerOutput = this._parseResults.tokenizerOutput; - const offset = convertPositionToOffset(this._position, tokenizerOutput.lines); - const index = ParseTreeUtils.getTokenIndexAtLeft(tokenizerOutput.tokens, offset!); - const token = ParseTreeUtils.getTokenAtIndex(tokenizerOutput.tokens, index); - const prevToken = ParseTreeUtils.getTokenAtIndex(tokenizerOutput.tokens, index - 1); - - if (node.category === ErrorExpressionCategory.MissingExpression) { - // Skip dots on expressions. - if (token?.type === TokenType.Dot || token?.type === TokenType.Ellipsis) { - break; - } + const typeDetail = getTypeDetail( + this.evaluator, + primaryDecl, + type, + name, + detail, + this.configOptions.functionSignatureDisplay + ); + const documentation = getDocumentationPartsForTypeAndDecl( + this.sourceMapper, + type, + primaryDecl, + this.evaluator, + { + name, + symbol, + boundObjectOrClass: detail.boundObjectOrClass, + } + ); - // ex) class MyType: - // def is_str(self): ... - // myType = MyType() - // - // In incomplete code such as "myType.is" <= "is" will be tokenized as keyword not identifier, - // so even if user's intention is writing "is_str", completion after "is" won't include "is_str" - // since parser won't see "is" as partially written member name instead it will see it as - // expression statement with missing expression after "is" keyword. - // In such case, use "MyType." to get completion. - if (token?.type !== TokenType.Keyword || TextRange.getEnd(token) !== offset) { - return this._getExpressionCompletions(node, priorWord, priorText, postText); - } + if (this.options.format === MarkupKind.Markdown || this.options.format === MarkupKind.PlainText) { + this._itemToResolve.documentation = getCompletionItemDocumentation( + typeDetail, + documentation, + this.options.format + ); + } else { + fail(`Unsupported markup type: ${this.options.format}`); + } - if (prevToken?.type !== TokenType.Dot) { - return this._getExpressionCompletions(node, priorWord, priorText, postText); - } + // Bail out. We don't need to add items to completion. + return; + } - const previousOffset = TextRange.getEnd(prevToken); - const previousNode = ParseTreeUtils.findNodeByOffset(this._parseResults.parseTree, previousOffset); - if ( - previousNode?.nodeType !== ParseNodeType.Error || - previousNode.category !== ErrorExpressionCategory.MissingMemberAccessName - ) { - return this._getExpressionCompletions(node, priorWord, priorText, postText); - } else { - // Update node to previous node so we get the member access completions. - node = previousNode; - } - } else if (node.category === ErrorExpressionCategory.MissingMemberAccessName) { - // Skip double dots on member access. - if ( - (token?.type === TokenType.Dot || token?.type === TokenType.Ellipsis) && - (prevToken?.type === TokenType.Dot || prevToken?.type === TokenType.Ellipsis) - ) { - return undefined; - } - } + if (primaryDecl) { + let itemKind = this._convertDeclarationTypeToItemKind(primaryDecl); - return this._getMissingMemberAccessNameCompletions(node, priorWord); + // Handle enum members specially. Enum members normally look like + // variables, but the are declared using assignment expressions + // within an enum class. + if ( + primaryDecl.type === DeclarationType.Variable && + detail.boundObjectOrClass && + isInstantiableClass(detail.boundObjectOrClass) && + ClassType.isEnumClass(detail.boundObjectOrClass) && + primaryDecl.node.parent?.nodeType === ParseNodeType.Assignment + ) { + itemKind = CompletionItemKind.EnumMember; } - case ErrorExpressionCategory.MissingDecoratorCallName: { - return this._getExpressionCompletions(node, priorWord, priorText, postText); + this._addNameToCompletions(detail.autoImportAlias ?? name, itemKind, priorWord, completionMap, { + autoImportText, + extraCommitChars: detail.extraCommitChars, + funcParensDisabled: detail.funcParensDisabled, + edits: detail.edits, + }); + } else { + // Does the symbol have no declaration but instead has a synthesized type? + const synthesizedType = symbol.getSynthesizedType(); + if (synthesizedType) { + const itemKind: CompletionItemKind = this._convertTypeToItemKind(synthesizedType); + this._addNameToCompletions(name, itemKind, priorWord, completionMap, { + extraCommitChars: detail.extraCommitChars, + funcParensDisabled: detail.funcParensDisabled, + edits: detail.edits, + }); } + } + } - case ErrorExpressionCategory.MissingPattern: - case ErrorExpressionCategory.MissingIndexOrSlice: { - let completionResults = this._getLiteralCompletions(node, offset, priorWord, priorText, postText); + protected getMemberAccessCompletions(leftExprNode: ExpressionNode, priorWord: string): CompletionMap | undefined { + const symbolTable = new Map(); + const completionMap = new CompletionMap(); - if (!completionResults) { - completionResults = this._getExpressionCompletions(node, priorWord, priorText, postText); - } + let leftType = this.evaluator.getType(leftExprNode); + if (!leftType) { + return completionMap; + } - return completionResults; - } + leftType = this.evaluator.makeTopLevelTypeVarsConcrete(leftType); - case ErrorExpressionCategory.MissingFunctionParameterList: { - if (node.child && node.child.nodeType === ParseNodeType.Name) { - if (node.decorators?.some((d) => this._isOverload(d))) { - return this._getMethodOverloadsCompletions(priorWord, node.child); - } + // If this is an unknown type with a "possible type" associated with + // it, use the possible type. + if (isUnknown(leftType) && leftType.possibleType) { + leftType = this.evaluator.makeTopLevelTypeVarsConcrete(leftType.possibleType); + } - // Determine if the partial name is a method that's overriding - // a method in a base class. - return this._getMethodOverrideCompletions(priorWord, node.child, node.decorators); + doForEachSubtype(leftType, (subtype) => { + subtype = this.evaluator.makeTopLevelTypeVarsConcrete(subtype); + + if (isClass(subtype)) { + getMembersForClass(subtype, symbolTable, /* includeInstanceVars */ TypeBase.isInstance(subtype)); + } else if (isModule(subtype)) { + getMembersForModule(subtype, symbolTable); + } else if (isFunction(subtype) || isOverloadedFunction(subtype)) { + const functionClass = this.evaluator.getBuiltInType(leftExprNode, 'function'); + if (functionClass && isInstantiableClass(functionClass)) { + getMembersForClass(functionClass, symbolTable, /* includeInstanceVars */ true); + } + } else if (isNoneInstance(subtype)) { + const objectClass = this.evaluator.getBuiltInType(leftExprNode, 'object'); + if (objectClass && isInstantiableClass(objectClass)) { + getMembersForClass(objectClass, symbolTable, TypeBase.isInstance(subtype)); } - break; } - } - return undefined; + this._addSymbolsForSymbolTable( + symbolTable, + () => true, + priorWord, + leftExprNode, + /* isInImport */ false, + isClass(subtype) ? subtype : undefined, + completionMap + ); + }); + + return completionMap; } - private _getMissingMemberAccessNameCompletions(node: ErrorNode, priorWord: string) { - if (!node.child || !isExpressionNode(node.child)) { - return undefined; + protected addAutoImportCompletions( + priorWord: string, + similarityLimit: number, + lazyEdit: boolean, + completionMap: CompletionMap + ) { + if (!this.configOptions.autoImportCompletions) { + // If auto import on the server is turned off or this particular invocation + // is turned off (ex, notebook), don't do any thing. + return; } - return this._getMemberAccessCompletions(node.child, priorWord); + const currentFile = this.program.getSourceFileInfo(this.filePath); + const moduleSymbolMap = buildModuleSymbolsMap( + this.program.getSourceFileInfoList().filter((s) => s !== currentFile) + ); + + const autoImporter = new AutoImporter( + this.execEnv, + this.importResolver, + this.parseResults, + this.position, + completionMap, + moduleSymbolMap, + { + lazyEdit, + } + ); + + const results: AutoImportResult[] = []; + results.push( + ...autoImporter.getAutoImportCandidates( + priorWord, + similarityLimit, + /* abbrFromUsers */ undefined, + this.cancellationToken + ) + ); + + this.addImportResults(results, priorWord, completionMap); } - private _isOverload(node: DecoratorNode): boolean { - return this._checkDecorator(node, 'overload'); + protected addImportResults(results: AutoImportResult[], priorWord: string, completionMap: CompletionMap) { + for (const result of results) { + if (result.symbol) { + this.addSymbol(result.name, result.symbol, priorWord, completionMap, { + extraCommitChars: true, + autoImportSource: result.source, + autoImportAlias: result.alias, + edits: { + textEdit: this.createReplaceEdits(priorWord, /* node */ undefined, result.insertionText), + additionalTextEdits: result.edits, + }, + }); + } else { + this._addNameToCompletions( + result.alias ?? result.name, + result.kind ?? CompletionItemKind.Module, + priorWord, + completionMap, + { + extraCommitChars: true, + autoImportText: this._getAutoImportText(result.name, result.source, result.alias), + edits: { + textEdit: this.createReplaceEdits(priorWord, /* node */ undefined, result.insertionText), + additionalTextEdits: result.edits, + }, + } + ); + } + } } - private _checkDecorator(node: DecoratorNode, value: string): boolean { + protected checkDecorator(node: DecoratorNode, value: string): boolean { return node.expression.nodeType === ParseNodeType.Name && node.expression.value === value; } - private _createSingleKeywordCompletion(keyword: string): CompletionResults { - const completionItem = CompletionItem.create(keyword); - completionItem.kind = CompletionItemKind.Keyword; - completionItem.sortText = this._makeSortText(SortCategory.LikelyKeyword, keyword); - const completionMap = new CompletionMap(); - completionMap.set(completionItem); - return { completionMap }; + protected addExtraCommitChar(item: CompletionItem) { + // extra commit char is not supported. } - private _addClassVariableTypeAnnotationCompletions( - priorWord: string, - parseNode: ParseNode, - completionMap: CompletionMap - ): void { - // class T: - // f: |<= here - const isTypeAnnotationOfClassVariable = - parseNode.parent?.nodeType === ParseNodeType.TypeAnnotation && - parseNode.parent.valueExpression.nodeType === ParseNodeType.Name && - parseNode.parent.typeAnnotation === parseNode && - parseNode.parent.parent?.nodeType === ParseNodeType.StatementList && - parseNode.parent.parent.parent?.nodeType === ParseNodeType.Suite && - parseNode.parent.parent.parent.parent?.nodeType === ParseNodeType.Class; + private get _fileContents() { + return this.parseResults?.text ?? ''; + } - if (!isTypeAnnotationOfClassVariable) { - return; + private _getCompletions(): CompletionMap | undefined { + const offset = convertPositionToOffset(this.position, this.parseResults.tokenizerOutput.lines); + if (offset === undefined) { + return undefined; } - const enclosingClass = ParseTreeUtils.getEnclosingClass(parseNode, false); - if (!enclosingClass) { - return; + const token = ParseTreeUtils.getTokenOverlapping(this.parseResults.tokenizerOutput.tokens, offset); + if (token?.type === TokenType.String) { + const stringToken = token as StringToken; + this._insideStringLiteral = TextRange.contains(stringToken, offset) + ? stringToken + : stringToken.flags & StringTokenFlags.Unterminated + ? stringToken + : undefined; } - const classResults = this._evaluator.getTypeOfClass(enclosingClass); - if (!classResults) { - return undefined; - } + let node = ParseTreeUtils.findNodeByOffset(this.parseResults.parseTree, offset); - const classVariableName = ((parseNode.parent as TypeAnnotationNode).valueExpression as NameNode).value; - const classMember = lookUpClassMember( - classResults.classType, - classVariableName, - ClassMemberLookupFlags.SkipInstanceVariables | ClassMemberLookupFlags.SkipOriginalClass - ); + // See if we can get to a "better" node by backing up a few columns. + // A "better" node is defined as one that's deeper than the current + // node. + const initialNode = node; + const initialDepth = node ? ParseTreeUtils.getNodeDepth(node) : 0; - // First, see whether we can use semantic info to get variable type. - if (classMember) { - const memberType = this._evaluator.getTypeOfMember(classMember); + if (!initialNode || initialNode.nodeType !== ParseNodeType.Name) { + let curOffset = offset; + let sawComma = false; - const text = this._evaluator.printType(memberType, { - enforcePythonSyntax: true, - expandTypeAlias: false, - }); + while (curOffset >= 0) { + curOffset--; - this._addNameToCompletions(text, CompletionItemKind.Reference, priorWord, completionMap, { - sortText: this._makeSortText(SortCategory.LikelyKeyword, text), - }); - return; - } + // Stop scanning backward if we hit certain stop characters. + const curChar = this._fileContents.substr(curOffset, 1); + if (curChar === '(' || curChar === '\n' || curChar === '}') { + break; + } + if (curChar === ',') { + sawComma = true; + } - // If we can't do that using semantic info, then try syntactic info. - const symbolTable = new Map(); - for (const mroClass of classResults.classType.details.mro) { - if (mroClass === classResults.classType) { - // Ignore current type. - continue; - } + const curNode = ParseTreeUtils.findNodeByOffset(this.parseResults.parseTree, curOffset); + if (curNode && curNode !== initialNode) { + if (ParseTreeUtils.getNodeDepth(curNode) > initialDepth) { + node = curNode; - if (isInstantiableClass(mroClass)) { - getMembersForClass(mroClass, symbolTable, /* includeInstanceVars */ false); + // If we're at the end of a list with a hanging comma, handle the + // special case of "from x import y, ". + if (sawComma && node.parent?.nodeType === ParseNodeType.ImportFromAs) { + node = node.parent; + } + } + break; + } } } - const symbol = symbolTable.get(classVariableName); - if (!symbol) { - return; + if (node === undefined) { + return undefined; } - const decls = symbol - .getDeclarations() - .filter((d) => isVariableDeclaration(d) && d.moduleName !== 'builtins') as VariableDeclaration[]; + // Get the text on that line prior to the insertion point. + const lineTextRange = this.parseResults.tokenizerOutput.lines.getItemAt(this.position.line); + const textOnLine = this._fileContents.substr(lineTextRange.start, lineTextRange.length); + const priorText = textOnLine.substr(0, this.position.character); + const postText = textOnLine.substr(this.position.character); + const priorWordIndex = priorText.search(/\w+$/); + const priorWord = priorWordIndex >= 0 ? priorText.substr(priorWordIndex) : ''; - // Skip any symbols invalid such as defined in the same class. - if ( - decls.length === 0 || - decls.some((d) => d.node && ParseTreeUtils.getEnclosingClass(d.node, false) === enclosingClass) - ) { - return; + // Don't offer completions if we're within a comment. + if (this._isWithinComment(offset)) { + return undefined; } - const declWithTypeAnnotations = decls.filter((d) => d.typeAnnotationNode); - if (declWithTypeAnnotations.length === 0) { - return; + // See if the node is part of an error node. If so, that takes + // precedence. + let errorNode: ParseNode | undefined = node; + while (errorNode) { + if (errorNode.nodeType === ParseNodeType.Error) { + break; + } + + errorNode = errorNode.parent; } - const printFlags = isStubFile(this._filePath) - ? ParseTreeUtils.PrintExpressionFlags.ForwardDeclarations | - ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength - : ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength; + // Determine the context based on the parse node's type and + // that of its ancestors. + let curNode = errorNode || node; + while (true) { + throwIfCancellationRequested(this.cancellationToken); - const text = `${ParseTreeUtils.printExpression( - declWithTypeAnnotations[declWithTypeAnnotations.length - 1].typeAnnotationNode!, - printFlags - )}`; + if (curNode.nodeType === ParseNodeType.String) { + return this._getLiteralCompletions(curNode, offset, priorWord, priorText, postText); + } - this._addNameToCompletions(text, CompletionItemKind.Reference, priorWord, completionMap, { - sortText: this._makeSortText(SortCategory.LikelyKeyword, text), - }); - } + if (curNode.nodeType === ParseNodeType.StringList || curNode.nodeType === ParseNodeType.FormatString) { + return undefined; + } - private _getClassVariableCompletions(partialName: NameNode): CompletionResults | undefined { - const enclosingClass = ParseTreeUtils.getEnclosingClass(partialName, false); - if (!enclosingClass) { - return undefined; - } + if (curNode.nodeType === ParseNodeType.ModuleName) { + return this._getImportModuleCompletions(curNode); + } - const classResults = this._evaluator.getTypeOfClass(enclosingClass); - if (!classResults) { - return undefined; - } + if (curNode.nodeType === ParseNodeType.Error) { + return this._getExpressionErrorCompletions(curNode, offset, priorWord, priorText, postText); + } - const symbolTable = new Map(); - for (const mroClass of classResults.classType.details.mro) { - if (isInstantiableClass(mroClass)) { - getMembersForClass(mroClass, symbolTable, /* includeInstanceVars */ false); + if (curNode.nodeType === ParseNodeType.MemberAccess) { + return this.getMemberAccessCompletions(curNode.leftExpression, priorWord); } - } - const completionMap = new CompletionMap(); - symbolTable.forEach((symbol, name) => { - if ( - SymbolNameUtils.isPrivateName(name) || - symbol.isPrivateMember() || - symbol.isExternallyHidden() || - !StringUtils.isPatternInSymbol(partialName.value, name) - ) { - return; + if (curNode.nodeType === ParseNodeType.Dictionary) { + const completionMap = new CompletionMap(); + if ( + this._tryAddTypedDictKeysFromDictionary( + curNode, + /* stringNode */ undefined, + priorWord, + priorText, + postText, + completionMap + ) + ) { + return completionMap; + } } - const decls = symbol - .getDeclarations() - .filter((d) => isVariableDeclaration(d) && d.moduleName !== 'builtins') as VariableDeclaration[]; + const dictionaryEntry = ParseTreeUtils.getFirstAncestorOrSelfOfKind( + curNode, + ParseNodeType.DictionaryKeyEntry + ); + if (dictionaryEntry) { + if (dictionaryEntry.parent?.nodeType === ParseNodeType.Dictionary) { + const dictionaryNode = dictionaryEntry.parent; + if (dictionaryNode.trailingCommaToken && dictionaryNode.trailingCommaToken.start < offset) { + const completionMap = new CompletionMap(); + if ( + this._tryAddTypedDictKeysFromDictionary( + dictionaryNode, + /* stringNode */ undefined, + priorWord, + priorText, + postText, + completionMap + ) + ) { + return completionMap; + } + } + } + } + + if (curNode.nodeType === ParseNodeType.Name) { + // This condition is little different than others since it does its own + // tree walk up to find context and let outer tree walk up to proceed if it can't find + // one to show completion. + const result = this._tryGetNameCompletions(curNode, offset, priorWord, priorText, postText); + if (result || result === undefined) { + return result; + } + } + + if (curNode.nodeType === ParseNodeType.List && this.options.triggerCharacter === '[') { + // If this is an empty list, don't start putting completions up yet. + return undefined; + } + + if (curNode.nodeType === ParseNodeType.ImportFrom) { + return this._getImportFromCompletions(curNode, priorWord); + } + + if (isExpressionNode(curNode)) { + return this._getExpressionCompletions(curNode, priorWord, priorText, postText); + } + + if (curNode.nodeType === ParseNodeType.Suite) { + if ( + curNode.parent && + curNode.parent.nodeType === ParseNodeType.Except && + !curNode.parent.name && + curNode.parent.typeExpression && + TextRange.getEnd(curNode.parent.typeExpression) < offset && + offset <= curNode.parent.exceptSuite.start + ) { + // except Exception as [] + return undefined; + } + + if ( + curNode.parent && + curNode.parent.nodeType === ParseNodeType.Class && + (!curNode.parent.name || !curNode.parent.name.value) && + curNode.parent.arguments.length === 0 && + offset <= curNode.parent.suite.start + ) { + // class [] + return undefined; + } + + return this._getStatementCompletions(curNode, priorWord, priorText, postText); + } + + if (curNode.nodeType === ParseNodeType.Module) { + return this._getStatementCompletions(curNode, priorWord, priorText, postText); + } - // Skip any symbols invalid such as defined in the same class. if ( - decls.length === 0 || - decls.some((d) => d.node && ParseTreeUtils.getEnclosingClass(d.node, false) === enclosingClass) + curNode.nodeType === ParseNodeType.Parameter && + curNode.length === 0 && + curNode.parent && + curNode.parent.nodeType === ParseNodeType.Lambda ) { - return; + // lambda [] or lambda x, [] + return undefined; } - this._addSymbol(name, symbol, partialName.value, completionMap, {}); - }); + if (!curNode.parent) { + break; + } + + curNode = curNode.parent; + } - return completionMap.size > 0 ? { completionMap } : undefined; + return undefined; } - private _getMethodOverloadsCompletions(priorWord: string, partialName: NameNode): CompletionResults | undefined { - const symbolTable = getSymbolTable(this._evaluator, partialName); - if (!symbolTable) { - return undefined; + // This method will return false if it wants1 + // caller to walk up the tree. it will return + // CompletionResults or undefined if it wants caller + // to return. + private _tryGetNameCompletions( + curNode: NameNode, + offset: number, + priorWord: string, + priorText: string, + postText: string + ): false | CompletionMap | undefined { + if (!curNode.parent) { + return false; } - const funcParensDisabled = partialName.parent?.nodeType === ParseNodeType.Function ? true : undefined; - const completionMap = new CompletionMap(); - - const enclosingFunc = ParseTreeUtils.getEnclosingFunction(partialName); - symbolTable.forEach((symbol, name) => { - const decl = getLastTypedDeclaredForSymbol(symbol); - if (!decl || decl.type !== DeclarationType.Function) { - return; - } + if (curNode.parent.nodeType === ParseNodeType.ImportAs && curNode.parent.alias === curNode) { + // Are we within a "import Y as [Z]"? + return undefined; + } - if (!decl.node.decorators.some((d) => this._isOverload(d))) { - // Only consider ones that have overload decorator. - return; + if (curNode.parent.nodeType === ParseNodeType.ModuleName) { + // Are we within a "import Y as []"? + if ( + curNode.parent.parent && + curNode.parent.parent.nodeType === ParseNodeType.ImportAs && + !curNode.parent.parent.alias && + TextRange.getEnd(curNode.parent.parent) < offset + ) { + return undefined; } - const decls = symbol.getDeclarations(); - if (decls.length === 1 && decls.some((d) => d.node === enclosingFunc)) { - // Don't show itself. - return; - } + // Are we within a "from X import Y as Z" statement and + // more specifically within the "Y"? + return this._getImportModuleCompletions(curNode.parent); + } - if (StringUtils.isPatternInSymbol(partialName.value, name)) { - const textEdit = this._createReplaceEdits(priorWord, partialName, decl.node.name.value); - this._addSymbol(name, symbol, partialName.value, completionMap, { - funcParensDisabled, - edits: { textEdit }, - }); + if (curNode.parent.nodeType === ParseNodeType.ImportFromAs) { + if (curNode.parent.alias === curNode) { + // Are we within a "from X import Y as [Z]"? + return undefined; } - }); - return { completionMap }; - - function getSymbolTable(evaluator: TypeEvaluator, partialName: NameNode) { - const enclosingClass = ParseTreeUtils.getEnclosingClass(partialName, false); - if (enclosingClass) { - const classResults = evaluator.getTypeOfClass(enclosingClass); - if (!classResults) { + const parentNode = curNode.parent.parent; + if (parentNode && parentNode.nodeType === ParseNodeType.ImportFrom) { + // Are we within a "from X import Y as []"? + if (!curNode.parent.alias && TextRange.getEnd(curNode.parent) < offset) { return undefined; } - const symbolTable = new Map(); - for (const mroClass of classResults.classType.details.mro) { - if (isInstantiableClass(mroClass)) { - getMembersForClass(mroClass, symbolTable, /* includeInstanceVars */ false); - } + if (curNode.parent.name === curNode) { + return this._getImportFromCompletions(parentNode, priorWord); } - return symbolTable; + return this._getImportFromCompletions(parentNode, ''); } - // For function overload, we only care about top level functions - const moduleNode = ParseTreeUtils.getEnclosingModule(partialName); - if (moduleNode) { - const moduleScope = AnalyzerNodeInfo.getScope(moduleNode); - return moduleScope?.symbolTable; + return false; + } + + if (curNode.parent.nodeType === ParseNodeType.MemberAccess && curNode === curNode.parent.memberName) { + return this.getMemberAccessCompletions(curNode.parent.leftExpression, priorWord); + } + + if (curNode.parent.nodeType === ParseNodeType.Except && curNode === curNode.parent.name) { + return undefined; + } + + if (curNode.parent.nodeType === ParseNodeType.Function && curNode === curNode.parent.name) { + if (curNode.parent.decorators?.some((d) => this._isOverload(d))) { + return this._getMethodOverloadsCompletions(priorWord, curNode); } return undefined; } - } - private _getMethodOverrideCompletions( - priorWord: string, - partialName: NameNode, - decorators?: DecoratorNode[] - ): CompletionResults | undefined { - const enclosingClass = ParseTreeUtils.getEnclosingClass(partialName, /* stopAtFunction */ true); - if (!enclosingClass) { + if (curNode.parent.nodeType === ParseNodeType.Parameter && curNode === curNode.parent.name) { return undefined; } - const classResults = this._evaluator.getTypeOfClass(enclosingClass); - if (!classResults) { + if (curNode.parent.nodeType === ParseNodeType.Class && curNode === curNode.parent.name) { return undefined; } - const staticmethod = decorators?.some((d) => this._checkDecorator(d, 'staticmethod')) ?? false; - const classmethod = decorators?.some((d) => this._checkDecorator(d, 'classmethod')) ?? false; + if ( + curNode.parent.nodeType === ParseNodeType.For && + TextRange.contains(curNode.parent.targetExpression, curNode.start) + ) { + return undefined; + } - const fallbackPath = getTypeShedFallbackPath(this._importResolver.fileSystem); - const typingFilePath = fallbackPath ? combinePaths(fallbackPath, 'stdlib/typing.pyi') : undefined; + if ( + curNode.parent.nodeType === ParseNodeType.ListComprehensionFor && + TextRange.contains(curNode.parent.targetExpression, curNode.start) + ) { + return undefined; + } - const appendMember = (map: CompletionMap, member: ClassMember, name: string) => { - if ( - !isInstantiableClass(member.classType) || - member.classType.details === classResults.classType.details || - !StringUtils.isPatternInSymbol(partialName.value, name) - ) { - // Quick bail out if member is something we don't want to override. - return; - } + // For assignments that implicitly declare variables, remove itself (var decl) from completion. + if ( + curNode.parent.nodeType === ParseNodeType.Assignment || + curNode.parent.nodeType === ParseNodeType.AssignmentExpression + ) { + const leftNode = + curNode.parent.nodeType === ParseNodeType.AssignmentExpression + ? curNode.parent.name + : curNode.parent.leftExpression; - const symbol = member.symbol; - const decl = getLastTypedDeclaredForSymbol(symbol); - if (!decl || decl.type !== DeclarationType.Function) { - return; + if (leftNode !== curNode || priorWord.length === 0) { + return false; } - const declaredType = this._evaluator.getTypeOfMember(member); - if (!declaredType) { - return; + const decls = this.evaluator.getDeclarationsForNameNode(curNode); + if (decls?.length !== 1 || !isVariableDeclaration(decls[0]) || decls[0].node !== curNode) { + return false; } - const isDeclaredStaticMethod = isFunction(declaredType) && FunctionType.isStaticMethod(declaredType); + const completionMap = this._getExpressionCompletions(curNode, priorWord, priorText, postText); + if (completionMap) { + completionMap.delete(curNode.value); + } - // Special-case the "__init__subclass__" method because it's an implicit - // classmethod that the type evaluator flags as a real classmethod. - const isDeclaredClassMethod = - isFunction(declaredType) && FunctionType.isClassMethod(declaredType) && name !== '__init_subclass__'; + return completionMap; + } - if (staticmethod !== isDeclaredStaticMethod || classmethod !== isDeclaredClassMethod) { - return; + // Defining class variables. + // ex) class A: + // variable = 1 + if ( + curNode.parent.nodeType === ParseNodeType.StatementList && + curNode.parent.parent?.nodeType === ParseNodeType.Suite && + curNode.parent.parent.parent?.nodeType === ParseNodeType.Class + ) { + const completionList = this._getClassVariableCompletions(curNode); + if (completionList) { + return completionList; } + } - let isProperty = isClassInstance(declaredType) && ClassType.isPropertyClass(declaredType); - if (SymbolNameUtils.isDunderName(name)) { - // Don't offer suggestions for built-in properties like "__class__", etc. - isProperty = false; - } + return false; + } - let funcType: FunctionType | undefined = undefined; - if (isFunction(declaredType)) { - funcType = declaredType; - } else if (isProperty) { - const getter = lookUpClassMember(declaredType, 'fget'); - if (!getter) { - return; - } + private _isWithinComment(offset: number): boolean { + const token = getTokenAfter(offset, this.parseResults.tokenizerOutput.tokens); + if (!token) { + // If we're in the middle of a token, we're not in a comment. + return false; + } - const member = this._evaluator.getTypeOfMember(getter); - if (!isFunction(member)) { - return; - } + return token.comments?.some((c) => TextRange.overlaps(c, offset)) ?? false; - funcType = member; + function getTokenAfter(offset: number, tokens: TextRangeCollection) { + const tokenIndex = tokens.getItemAtPosition(offset); + if (tokenIndex < 0) { + return undefined; } - if (!funcType || !funcType.details.declaration) { - return; + let token = tokens.getItemAt(tokenIndex); + // If we're in the middle of a token, we can't be within a comment. + if (offset > token.start && offset < token.start + token.length) { + return undefined; } - const importAdder = new ImportAdder(this._configOptions, this._importResolver, this._evaluator); - const result = this._printMethodSignature(importAdder, classResults.classType, funcType, typingFilePath); + // Multiple zero length tokens can occupy same position. + // But comment is associated with the first one. loop + // backward to find the first token if position is same. + for (let i = tokenIndex - 1; i >= 0; i--) { + const prevToken = tokens.getItemAt(i); + if (token.start !== prevToken.start) { + break; + } - let text: string; - if (isStubFile(this._filePath)) { - text = `${result.methodSignature}: ...`; - } else { - const methodBody = this._printOverriddenMethodBody( - classResults.classType, - isDeclaredStaticMethod, - isProperty, - decl - ); - text = `${result.methodSignature}:\n${methodBody}`; + token = prevToken; } - const textEdit = this._createReplaceEdits(priorWord, partialName, text); - - // This will add new import statements, but for now, it won't add new - // `TypeVar` statement such as TypeVar, TypeVarTuple, ParamSpec even if - // the overridden method uses them. - const additionalTextEdits = importAdder.applyImports( - result.importData, - this._filePath, - this._parseResults, - this._parseResults.parseTree.length, - ImportFormat.Absolute, - this._cancellationToken - ); - - this._addSymbol(name, symbol, partialName.value, map, { - // method signature already contains () - funcParensDisabled: true, - edits: { - format: this._options.snippet ? InsertTextFormat.Snippet : undefined, - textEdit, - additionalTextEdits, - }, - }); - }; - - const completionMap = new CompletionMap(); - - const classMemberMap = getClassFieldsRecursive(classResults.classType); - classMemberMap.forEach((member, name) => appendMember(completionMap, member, name)); + if (offset <= token.start) { + return token; + } - if ( - classResults.classType.details.effectiveMetaclass && - !isUnknown(classResults.classType.details.effectiveMetaclass) - ) { - const metaClassMemberMap = getClassFieldsRecursive(classResults.classType.details.effectiveMetaclass); - metaClassMemberMap.forEach((member, name) => appendMember(completionMap, member, name)); + // If offset > token.start, tokenIndex + 1 < tokens.length + // should be always true. + debug.assert(tokenIndex + 1 < tokens.length); + return tokens.getItemAt(tokenIndex + 1); } - - return { completionMap }; - } - - private _createReplaceEdits(priorWord: string, node: ParseNode | undefined, text: string) { - const replaceOrInsertEndChar = - node?.nodeType === ParseNodeType.Name - ? this._position.character - priorWord.length + node.value.length - : this._position.character; - - const range: Range = { - start: { line: this._position.line, character: this._position.character - priorWord.length }, - end: { line: this._position.line, character: replaceOrInsertEndChar }, - }; - - return TextEdit.replace(range, text); } - private _printMethodSignature( - importAdder: ImportAdder, - classType: ClassType, - funcType: FunctionType, - typingFilePath: string | undefined - ): { methodSignature: string; importData: ImportData } { - const declaration = funcType.details.declaration!; + private _getExpressionErrorCompletions( + node: ErrorNode, + offset: number, + priorWord: string, + priorText: string, + postText: string + ): CompletionMap | undefined { + // Is the error due to a missing member access name? If so, + // we can evaluate the left side of the member access expression + // to determine its type and offer suggestions based on it. + switch (node.category) { + case ErrorExpressionCategory.MissingIn: { + return this._createSingleKeywordCompletion('in'); + } - let ellipsisForDefault: boolean | undefined; - if (isStubFile(this._filePath)) { - // In stubs, always use "...". - ellipsisForDefault = true; - } else if (classType.details.moduleName === declaration.moduleName) { - // In the same file, always print the full default. - ellipsisForDefault = false; - } + case ErrorExpressionCategory.MissingElse: { + return this._createSingleKeywordCompletion('else'); + } - const printOptionsUsingSyntax = isStubFile(this._filePath) - ? ParseTreeUtils.PrintExpressionFlags.ForwardDeclarations | - ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength - : ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength; + case ErrorExpressionCategory.MissingMemberAccessName: + case ErrorExpressionCategory.MissingExpression: { + // Don't show completion after random dots. + const tokenizerOutput = this.parseResults.tokenizerOutput; + const offset = convertPositionToOffset(this.position, tokenizerOutput.lines); + const index = ParseTreeUtils.getTokenIndexAtLeft(tokenizerOutput.tokens, offset!); + const token = ParseTreeUtils.getTokenAtIndex(tokenizerOutput.tokens, index); + const prevToken = ParseTreeUtils.getTokenAtIndex(tokenizerOutput.tokens, index - 1); - const printOptionsUsingType: PrintTypeOptions = { - enforcePythonSyntax: true, - expandTypeAlias: false, - omitTypeArgumentsIfUnknown: true, - printUnknownWithAny: true, - }; + if (node.category === ErrorExpressionCategory.MissingExpression) { + // Skip dots on expressions. + if (token?.type === TokenType.Dot || token?.type === TokenType.Ellipsis) { + break; + } - const getTypeToPrint = (mainType: Type | undefined, fallbackType: T) => { - return mainType && (!isUnknown(mainType) || fallbackType?.category === TypeCategory.TypeVar) - ? mainType - : fallbackType; - }; + // ex) class MyType: + // def is_str(self): ... + // myType = MyType() + // + // In incomplete code such as "myType.is" <= "is" will be tokenized as keyword not identifier, + // so even if user's intention is writing "is_str", completion after "is" won't include "is_str" + // since parser won't see "is" as partially written member name instead it will see it as + // expression statement with missing expression after "is" keyword. + // In such case, use "MyType." to get completion. + if (token?.type !== TokenType.Keyword || TextRange.getEnd(token) !== offset) { + return this._getExpressionCompletions(node, priorWord, priorText, postText); + } - const importData = createImportData( - importAdder, - funcType, - declaration, - typingFilePath, - (t) => this._sourceMapper.findClassDeclarationsByType(this._filePath, t), - this._cancellationToken - ); + if (prevToken?.type !== TokenType.Dot) { + return this._getExpressionCompletions(node, priorWord, priorText, postText); + } - const paramList = funcType.details.parameters.map((param, index) => { - let paramString = ''; - if (param.category === ParameterCategory.VarArgList) { - paramString += '*'; - } else if (param.category === ParameterCategory.VarArgDictionary) { - paramString += '**'; - } + const previousOffset = TextRange.getEnd(prevToken); + const previousNode = ParseTreeUtils.findNodeByOffset(this.parseResults.parseTree, previousOffset); + if ( + previousNode?.nodeType !== ParseNodeType.Error || + previousNode.category !== ErrorExpressionCategory.MissingMemberAccessName + ) { + return this._getExpressionCompletions(node, priorWord, priorText, postText); + } else { + // Update node to previous node so we get the member access completions. + node = previousNode; + } + } else if (node.category === ErrorExpressionCategory.MissingMemberAccessName) { + // Skip double dots on member access. + if ( + (token?.type === TokenType.Dot || token?.type === TokenType.Ellipsis) && + (prevToken?.type === TokenType.Dot || prevToken?.type === TokenType.Ellipsis) + ) { + return undefined; + } + } - if (param.name) { - paramString += param.name; + return this._getMissingMemberAccessNameCompletions(node, priorWord); } - if (param.typeAnnotation) { - const originalType = funcType.details.parameters[index].type; - const typeToPrint = getTypeToPrint( - FunctionType.getEffectiveParameterType(funcType, index), - originalType - ); - - // If we have actual type, then use type to generate string representation of the type, otherwise, use syntax (text). - const strType = isTypeUsableForPrint(typeToPrint, originalType) - ? this._evaluator.printType(typeToPrint, printOptionsUsingType) - : ParseTreeUtils.printExpression(param.typeAnnotation, printOptionsUsingSyntax); - - paramString += ': ' + strType; + case ErrorExpressionCategory.MissingDecoratorCallName: { + return this._getExpressionCompletions(node, priorWord, priorText, postText); } - if (param.defaultValueExpression) { - paramString += param.typeAnnotation ? ' = ' : '='; + case ErrorExpressionCategory.MissingPattern: + case ErrorExpressionCategory.MissingIndexOrSlice: { + let completionResults = this._getLiteralCompletions(node, offset, priorWord, priorText, postText); - const useEllipsis = ellipsisForDefault ?? !isSimpleDefault(param.defaultValueExpression); - paramString += useEllipsis - ? '...' - : ParseTreeUtils.printExpression(param.defaultValueExpression, printOptionsUsingSyntax); - } + if (!completionResults) { + completionResults = this._getExpressionCompletions(node, priorWord, priorText, postText); + } - if ( - !paramString && - !param.name && - param.category === ParameterCategory.Simple && - index < funcType.details.parameters.length - 1 - ) { - return '/'; + return completionResults; } - return paramString; - }); + case ErrorExpressionCategory.MissingFunctionParameterList: { + if (node.child && node.child.nodeType === ParseNodeType.Name) { + if (node.decorators?.some((d) => this._isOverload(d))) { + return this._getMethodOverloadsCompletions(priorWord, node.child); + } - // Remove empty parameters at the end. - for (let i = paramList.length - 1; i >= 0; i--) { - if (paramList[i] !== '') { + // Determine if the partial name is a method that's overriding + // a method in a base class. + return this.getMethodOverrideCompletions(priorWord, node.child, node.decorators); + } break; } - - paramList.pop(); } - let methodSignature = funcType.details.name + '(' + paramList.join(', ') + ')'; + return undefined; + } - const strReturnType = getReturnTypeStr(this._evaluator, funcType, printOptionsUsingSyntax); - if (strReturnType) { - methodSignature += ' -> ' + strReturnType; + private _getMissingMemberAccessNameCompletions(node: ErrorNode, priorWord: string) { + if (!node.child || !isExpressionNode(node.child)) { + return undefined; } - return { methodSignature, importData }; - - function createImportData( - importAdder: ImportAdder, - funcType: FunctionType, - declaration: FunctionDeclaration, - typingFilePath: string | undefined, - declarationGetter: (t: ClassType) => Declaration[], - token: CancellationToken - ) { - // Handle regular case. In this case, we can get import info from - // import used in the file where the function is declared. - const ranges: TextRange[] = []; - - addIfNotNull(ranges, TextRange.combine(declaration.node.parameters)); - addIfNotNull(ranges, declaration.node.returnTypeAnnotation); - addIfNotNull(ranges, declaration.node.functionAnnotationComment); - - const moduleNode = ParseTreeUtils.getModuleNode(declaration.node); - const importData = importAdder.collectImportsForSymbolsUsed(moduleNode!, ranges, token); - - // Handle special case where function has type arguments. In this case, - // we can't use the file the function is declared in because it doesn't - // have those type arguments. It just has the type vars. - // We could walk the mro to discover imports for the type arguments, but - // for now, instead, this creates import statement out of type arguments itself. - const effectiveTypes: [t: Type, n: ExpressionNode][] = []; - funcType.details.parameters.forEach((param, index) => { - if (!param.typeAnnotation) { - return; - } - - const originalType = funcType.details.parameters[index].type; - if (!isTypeVar(originalType)) { - return; - } - - const effectiveType = FunctionType.getEffectiveParameterType(funcType, index); - effectiveTypes.push([effectiveType, param.typeAnnotation]); - }); - - const node = declaration.node; - const originalType = funcType.details.declaredReturnType; - if ( - originalType && - isTypeVar(originalType) && - (node.returnTypeAnnotation || node.functionAnnotationComment?.returnTypeAnnotation) - ) { - effectiveTypes.push([ - FunctionType.getSpecializedReturnType(funcType)!, - node.returnTypeAnnotation ?? node.functionAnnotationComment!.returnTypeAnnotation, - ]); - } + return this.getMemberAccessCompletions(node.child, priorWord); + } - const visited = new Set(); - const addImport = (t: Type, n: ExpressionNode) => { - if (visited.has(t)) { - return; - } + private _isOverload(node: DecoratorNode): boolean { + return this.checkDecorator(node, 'overload'); + } - visited.add(t); + private _createSingleKeywordCompletion(keyword: string): CompletionMap { + const completionItem = CompletionItem.create(keyword); + completionItem.kind = CompletionItemKind.Keyword; + completionItem.sortText = this._makeSortText(SortCategory.LikelyKeyword, keyword); + const completionMap = new CompletionMap(); + completionMap.set(completionItem); + return completionMap; + } - // We need to special case `Any` since we can't get decl from `Any`. - if (isAny(t)) { - if (!typingFilePath) { - return; - } + private _addClassVariableTypeAnnotationCompletions( + priorWord: string, + parseNode: ParseNode, + completionMap: CompletionMap + ): void { + // class T: + // f: |<= here + const isTypeAnnotationOfClassVariable = + parseNode.parent?.nodeType === ParseNodeType.TypeAnnotation && + parseNode.parent.valueExpression.nodeType === ParseNodeType.Name && + parseNode.parent.typeAnnotation === parseNode && + parseNode.parent.parent?.nodeType === ParseNodeType.StatementList && + parseNode.parent.parent.parent?.nodeType === ParseNodeType.Suite && + parseNode.parent.parent.parent.parent?.nodeType === ParseNodeType.Class; - importAdder.addImportInfo({ filePath: typingFilePath, nameInfo: { name: 'Any' } }, importData); - } + if (!isTypeAnnotationOfClassVariable) { + return; + } - if (!isClass(t)) { - return; - } + const enclosingClass = ParseTreeUtils.getEnclosingClass(parseNode, false); + if (!enclosingClass) { + return; + } - // We need to special case `List`, `Dict` and `Tuple` since user might have - // used typing.List or typing.Dict in the code, but we internally already - // converted them to built-in `list` and `dict`. - // We could avoid doing this if class type holds onto decl it was created from - // if it is not synthesized like func type. - if (typingFilePath && ClassType.isBuiltIn(t)) { - const name = t.aliasName ?? t.details.name; - if (t.details.moduleName === 'typing' && name) { - importAdder.addImportInfo( - { - filePath: typingFilePath, - nameInfo: { name }, - }, - importData - ); - } else if (t.details.moduleName === 'builtins' && t.aliasName) { - importAdder.addImportInfo( - { - filePath: typingFilePath, - nameInfo: { name }, - }, - importData - ); - } - } else { - const decls = declarationGetter(t); - if (decls.length === 0) { - return; - } + const classResults = this.evaluator.getTypeOfClass(enclosingClass); + if (!classResults) { + return undefined; + } - importAdder.addDeclaration(decls[0], n, importData); - } + const classVariableName = ((parseNode.parent as TypeAnnotationNode).valueExpression as NameNode).value; + const classMember = lookUpClassMember( + classResults.classType, + classVariableName, + ClassMemberLookupFlags.SkipInstanceVariables | ClassMemberLookupFlags.SkipOriginalClass + ); - if (t.isTypeArgumentExplicit) { - t.typeArguments?.forEach((ta) => { - addImport(ta, n); - doForEachSubtype(ta, (subtype) => { - addImport(subtype, n); - }); - }); - } - }; + // First, see whether we can use semantic info to get variable type. + if (classMember) { + const memberType = this.evaluator.getTypeOfMember(classMember); - effectiveTypes.forEach(([t, n]) => { - addImport(t, n); - doForEachSubtype(t, (subtype) => { - addImport(subtype, n); - }); + const text = this.evaluator.printType(memberType, { + enforcePythonSyntax: true, + expandTypeAlias: false, }); - return importData; + this._addNameToCompletions(text, CompletionItemKind.Reference, priorWord, completionMap, { + sortText: this._makeSortText(SortCategory.LikelyKeyword, text), + }); + return; } - function getReturnTypeStr( - evaluator: TypeEvaluator, - funcType: FunctionType, - printFlags: ParseTreeUtils.PrintExpressionFlags - ) { - const originalType = funcType.details.declaredReturnType; - const typeToPrint = getTypeToPrint(FunctionType.getSpecializedReturnType(funcType), originalType); - - const node = funcType.details.declaration!.node; - if (!node.returnTypeAnnotation && !node.functionAnnotationComment?.returnTypeAnnotation) { - return undefined; + // If we can't do that using semantic info, then try syntactic info. + const symbolTable = new Map(); + for (const mroClass of classResults.classType.details.mro) { + if (mroClass === classResults.classType) { + // Ignore current type. + continue; } - if (typeToPrint && isTypeUsableForPrint(typeToPrint, originalType)) { - return evaluator.printType(typeToPrint, printOptionsUsingType); + if (isInstantiableClass(mroClass)) { + getMembersForClass(mroClass, symbolTable, /* includeInstanceVars */ false); } + } - if (node.returnTypeAnnotation) { - return ParseTreeUtils.printExpression(node.returnTypeAnnotation, printFlags); - } + const symbol = symbolTable.get(classVariableName); + if (!symbol) { + return; + } - if (node.functionAnnotationComment) { - return ParseTreeUtils.printExpression(node.functionAnnotationComment.returnTypeAnnotation, printFlags); - } + const decls = symbol + .getDeclarations() + .filter((d) => isVariableDeclaration(d) && d.moduleName !== 'builtins') as VariableDeclaration[]; - return undefined; + // Skip any symbols invalid such as defined in the same class. + if ( + decls.length === 0 || + decls.some((d) => d.node && ParseTreeUtils.getEnclosingClass(d.node, false) === enclosingClass) + ) { + return; } - function isTypeUsableForPrint(effectiveType: Type | undefined, originalType: Type | undefined) { - if (!effectiveType) { - return false; - } - - // If original type was `TypeVar`, we want to use `Unknown` as `Any` - return !isUnknown(effectiveType) || originalType?.category === TypeCategory.TypeVar; + const declWithTypeAnnotations = decls.filter((d) => d.typeAnnotationNode); + if (declWithTypeAnnotations.length === 0) { + return; } - function isSimpleDefault(node: ExpressionNode): boolean { - switch (node.nodeType) { - case ParseNodeType.Number: - case ParseNodeType.Constant: - case ParseNodeType.MemberAccess: - return true; + const printFlags = isStubFile(this.filePath) + ? ParseTreeUtils.PrintExpressionFlags.ForwardDeclarations | + ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength + : ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength; - case ParseNodeType.String: - return (node.token.flags & StringTokenFlags.Format) === 0; + const text = `${ParseTreeUtils.printExpression( + declWithTypeAnnotations[declWithTypeAnnotations.length - 1].typeAnnotationNode!, + printFlags + )}`; - case ParseNodeType.StringList: - return node.strings.every(isSimpleDefault); + this._addNameToCompletions(text, CompletionItemKind.Reference, priorWord, completionMap, { + sortText: this._makeSortText(SortCategory.LikelyKeyword, text), + }); + } - case ParseNodeType.UnaryOperation: - return isSimpleDefault(node.expression); + private _getClassVariableCompletions(partialName: NameNode): CompletionMap | undefined { + const enclosingClass = ParseTreeUtils.getEnclosingClass(partialName, false); + if (!enclosingClass) { + return undefined; + } - case ParseNodeType.BinaryOperation: - return isSimpleDefault(node.leftExpression) && isSimpleDefault(node.rightExpression); + const classResults = this.evaluator.getTypeOfClass(enclosingClass); + if (!classResults) { + return undefined; + } - default: - return false; + const symbolTable = new Map(); + for (const mroClass of classResults.classType.details.mro) { + if (isInstantiableClass(mroClass)) { + getMembersForClass(mroClass, symbolTable, /* includeInstanceVars */ false); } } - } - private _printOverriddenMethodBody( - classType: ClassType, - isStaticMethod: boolean, - isProperty: boolean, - decl: FunctionDeclaration - ) { - let sb = this._parseResults.tokenizerOutput.predominantTabSequence; + const completionMap = new CompletionMap(); + symbolTable.forEach((symbol, name) => { + if ( + SymbolNameUtils.isPrivateName(name) || + symbol.isPrivateMember() || + symbol.isExternallyHidden() || + !StringUtils.isPatternInSymbol(partialName.value, name) + ) { + return; + } - if ( - classType.details.baseClasses.length === 1 && - isClass(classType.details.baseClasses[0]) && - classType.details.baseClasses[0].details.fullName === 'builtins.object' - ) { - sb += this._options.snippet ? '${0:pass}' : 'pass'; - return sb; - } + const decls = symbol + .getDeclarations() + .filter((d) => isVariableDeclaration(d) && d.moduleName !== 'builtins') as VariableDeclaration[]; - if (decl.node.parameters.length === 0) { - sb += this._options.snippet ? '${0:pass}' : 'pass'; - return sb; - } + // Skip any symbols invalid such as defined in the same class. + if ( + decls.length === 0 || + decls.some((d) => d.node && ParseTreeUtils.getEnclosingClass(d.node, false) === enclosingClass) + ) { + return; + } - const parameters = getParameters(isStaticMethod ? decl.node.parameters : decl.node.parameters.slice(1)); - if (decl.node.name.value !== '__init__') { - sb += 'return '; - } + this.addSymbol(name, symbol, partialName.value, completionMap, {}); + }); - if (decl.node.isAsync) { - sb += 'await '; - } + return completionMap.size > 0 ? completionMap : undefined; + } - if (isProperty) { - return sb + `super().${decl.node.name.value}`; + private _getMethodOverloadsCompletions(priorWord: string, partialName: NameNode): CompletionMap | undefined { + const symbolTable = getSymbolTable(this.evaluator, partialName); + if (!symbolTable) { + return undefined; } - return sb + `super().${decl.node.name.value}(${parameters.map(convertToString).join(', ')})`; + const funcParensDisabled = partialName.parent?.nodeType === ParseNodeType.Function ? true : undefined; + const completionMap = new CompletionMap(); - function getParameters(parameters: ParameterNode[]) { - const results: [node: ParameterNode, keywordOnly: boolean][] = []; + const enclosingFunc = ParseTreeUtils.getEnclosingFunction(partialName); + symbolTable.forEach((symbol, name) => { + const decl = getLastTypedDeclaredForSymbol(symbol); + if (!decl || decl.type !== DeclarationType.Function) { + return; + } - let sawKeywordOnlySeparator = false; - for (const parameter of parameters) { - if (parameter.name) { - results.push([ - parameter, - parameter.category === ParameterCategory.Simple && !!parameter.name && sawKeywordOnlySeparator, - ]); - } + if (!decl.node.decorators.some((d) => this._isOverload(d))) { + // Only consider ones that have overload decorator. + return; + } - // All simple parameters after a `*` or `*args` parameter - // are considered keyword only. - if (parameter.category === ParameterCategory.VarArgList) { - sawKeywordOnlySeparator = true; + const decls = symbol.getDeclarations(); + if (decls.length === 1 && decls.some((d) => d.node === enclosingFunc)) { + // Don't show itself. + return; + } + + if (StringUtils.isPatternInSymbol(partialName.value, name)) { + const textEdit = this.createReplaceEdits(priorWord, partialName, decl.node.name.value); + this.addSymbol(name, symbol, partialName.value, completionMap, { + funcParensDisabled, + edits: { textEdit }, + }); + } + }); + + return completionMap; + + function getSymbolTable(evaluator: TypeEvaluator, partialName: NameNode) { + const enclosingClass = ParseTreeUtils.getEnclosingClass(partialName, false); + if (enclosingClass) { + const classResults = evaluator.getTypeOfClass(enclosingClass); + if (!classResults) { + return undefined; } - } - return results; - } + const symbolTable = new Map(); + for (const mroClass of classResults.classType.details.mro) { + if (isInstantiableClass(mroClass)) { + getMembersForClass(mroClass, symbolTable, /* includeInstanceVars */ false); + } + } - function convertToString(parameter: [node: ParameterNode, keywordOnly: boolean]) { - const name = parameter[0].name?.value; - if (parameter[0].category === ParameterCategory.VarArgList) { - return `*${name}`; + return symbolTable; } - if (parameter[0].category === ParameterCategory.VarArgDictionary) { - return `**${name}`; + // For function overload, we only care about top level functions + const moduleNode = ParseTreeUtils.getEnclosingModule(partialName); + if (moduleNode) { + const moduleScope = AnalyzerNodeInfo.getScope(moduleNode); + return moduleScope?.symbolTable; } - return parameter[1] ? `${name}=${name}` : name; + return undefined; } } - private _getMemberAccessCompletions( - leftExprNode: ExpressionNode, - priorWord: string - ): CompletionResults | undefined { - const symbolTable = new Map(); - const completionMap = new CompletionMap(); - let memberAccessInfo: MemberAccessInfo = {}; - - let leftType = this._evaluator.getType(leftExprNode); - - if (leftType) { - leftType = this._evaluator.makeTopLevelTypeVarsConcrete(leftType); - - // If this is an unknown type with a "possible type" associated with - // it, use the possible type. - if (isUnknown(leftType) && leftType.possibleType) { - leftType = this._evaluator.makeTopLevelTypeVarsConcrete(leftType.possibleType); - } - - doForEachSubtype(leftType, (subtype) => { - subtype = this._evaluator.makeTopLevelTypeVarsConcrete(subtype); - - if (isClass(subtype)) { - getMembersForClass(subtype, symbolTable, /* includeInstanceVars */ TypeBase.isInstance(subtype)); - } else if (isModule(subtype)) { - getMembersForModule(subtype, symbolTable); - } else if (isFunction(subtype) || isOverloadedFunction(subtype)) { - const functionClass = this._evaluator.getBuiltInType(leftExprNode, 'function'); - if (functionClass && isInstantiableClass(functionClass)) { - getMembersForClass(functionClass, symbolTable, /* includeInstanceVars */ true); - } - } else if (isNoneInstance(subtype)) { - const objectClass = this._evaluator.getBuiltInType(leftExprNode, 'object'); - if (objectClass && isInstantiableClass(objectClass)) { - getMembersForClass(objectClass, symbolTable, TypeBase.isInstance(subtype)); - } - } + private _printMethodSignature(classType: ClassType, decl: FunctionDeclaration): string { + const node = decl.node; - this._addSymbolsForSymbolTable( - symbolTable, - () => true, - priorWord, - leftExprNode, - /* isInImport */ false, - isClass(subtype) ? subtype : undefined, - completionMap - ); - }); + let ellipsisForDefault: boolean | undefined; + if (isStubFile(this.filePath)) { + // In stubs, always use "...". + ellipsisForDefault = true; + } else if (classType.details.moduleName === decl.moduleName) { + // In the same file, always print the full default. + ellipsisForDefault = false; } - // Save member access info for every request - memberAccessInfo = this._getLastKnownModule(leftExprNode, leftType); + const printFlags = isStubFile(this.filePath) + ? ParseTreeUtils.PrintExpressionFlags.ForwardDeclarations | + ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength + : ParseTreeUtils.PrintExpressionFlags.DoNotLimitStringLength; - return { completionMap, memberAccessInfo }; - } + const paramList = node.parameters + .map((param, index) => { + let paramString = ''; + if (param.category === ParameterCategory.VarArgList) { + paramString += '*'; + } else if (param.category === ParameterCategory.VarArgDictionary) { + paramString += '**'; + } - private _getLastKnownModule(leftExprNode: ExpressionNode, leftType: Type | undefined): MemberAccessInfo { - let curNode: ExpressionNode | undefined = leftExprNode; - let curType: Type | undefined = leftType; - let unknownMemberName: string | undefined = - leftExprNode.nodeType === ParseNodeType.MemberAccess ? leftExprNode?.memberName.value : undefined; + if (param.name) { + paramString += param.name.value; + } - // Walk left of the expression scope till we find a known type. A.B.Unknown.<-- return B. - while (curNode) { - if (curNode.nodeType === ParseNodeType.Call || curNode.nodeType === ParseNodeType.MemberAccess) { - // Move left - curNode = curNode.leftExpression; - - // First time in the loop remember the name of the unknown type. - if (unknownMemberName === undefined) { - unknownMemberName = - curNode.nodeType === ParseNodeType.MemberAccess ? curNode?.memberName.value ?? '' : ''; + // Currently, we don't automatically add import if the type used in the annotation is not imported + // in current file. + const paramTypeAnnotation = ParseTreeUtils.getTypeAnnotationForParameter(node, index); + if (paramTypeAnnotation) { + paramString += ': ' + ParseTreeUtils.printExpression(paramTypeAnnotation, printFlags); } - } else { - break; - } - if (curNode) { - curType = this._evaluator.getType(curNode); + if (param.defaultValue) { + paramString += paramTypeAnnotation ? ' = ' : '='; - // Breakout if we found a known type. - if (curType !== undefined && !isUnknown(curType) && !isUnbound(curType)) { - break; + const useEllipsis = ellipsisForDefault ?? !this.isSimpleDefault(param.defaultValue); + paramString += useEllipsis ? '...' : ParseTreeUtils.printExpression(param.defaultValue, printFlags); } - } - } - const memberAccessInfo: MemberAccessInfo = {}; - if (curType && !isUnknown(curType) && !isUnbound(curType) && curNode) { - const moduleNamesForType = getDeclaringModulesForType(curType); + if (!paramString && !param.name && param.category === ParameterCategory.Simple) { + return '/'; + } - // For union types we only care about non 'typing' modules. - memberAccessInfo.lastKnownModule = moduleNamesForType.find((n) => n !== 'typing'); + return paramString; + }) + .join(', '); - if (curNode.nodeType === ParseNodeType.MemberAccess) { - memberAccessInfo.lastKnownMemberName = curNode.memberName.value; - } else if (curNode.nodeType === ParseNodeType.Name && isInstantiableClass(curType)) { - memberAccessInfo.lastKnownMemberName = curType.details.name; - } else if (curNode.nodeType === ParseNodeType.Name && isClassInstance(curType)) { - memberAccessInfo.lastKnownMemberName = curType.details.name; - } + let methodSignature = node.name.value + '(' + paramList + ')'; - memberAccessInfo.unknownMemberName = unknownMemberName; + if (node.returnTypeAnnotation) { + methodSignature += ' -> ' + ParseTreeUtils.printExpression(node.returnTypeAnnotation, printFlags); + } else if (node.functionAnnotationComment) { + methodSignature += + ' -> ' + + ParseTreeUtils.printExpression(node.functionAnnotationComment.returnTypeAnnotation, printFlags); } - return memberAccessInfo; + return methodSignature; } private _getStatementCompletions( @@ -1849,7 +1679,7 @@ export class CompletionProvider { priorWord: string, priorText: string, postText: string - ): CompletionResults | undefined { + ): CompletionMap | undefined { // For now, use the same logic for expressions and statements. return this._getExpressionCompletions(parseNode, priorWord, priorText, postText); } @@ -1859,7 +1689,7 @@ export class CompletionProvider { priorWord: string, priorText: string, postText: string - ): CompletionResults | undefined { + ): CompletionMap | undefined { const isIndexArgument = this._isIndexArgument(parseNode); // If the user typed a "." as part of a number, don't present @@ -1878,11 +1708,10 @@ export class CompletionProvider { } const completionMap = new CompletionMap(); - const completionResults = { completionMap }; // Return empty completionList for Ellipsis if (priorText.slice(-2) === '..') { - return completionResults; + return completionMap; } // Defining type annotation for class variables. @@ -1904,7 +1733,7 @@ export class CompletionProvider { this._addSymbols(parseNode, priorWord, completionMap); // Add keywords. - this._findMatchingKeywords(Keywords.forVersion(this._execEnv.pythonVersion), priorWord).map((keyword) => { + this._findMatchingKeywords(Keywords.forVersion(this.execEnv.pythonVersion), priorWord).map((keyword) => { if (completionMap.has(keyword)) { return; } @@ -1917,13 +1746,13 @@ export class CompletionProvider { // Add auto-import suggestions from other modules. // Ignore this check for privates, since they are not imported. if (!priorWord.startsWith('_') && !this._itemToResolve) { - this._addAutoImportCompletions(priorWord, similarityLimit, this._options.lazyEdit, completionResults); + this.addAutoImportCompletions(priorWord, similarityLimit, this.options.lazyEdit, completionMap); } // Add literal values if appropriate. this._tryAddLiterals(parseNode, priorWord, priorText, postText, completionMap); - return completionResults; + return completionMap; } private _isIndexArgument(node: ParseNode) { @@ -1948,18 +1777,18 @@ export class CompletionProvider { completionMap: CompletionMap ) { // If we're within the argument list of a call, add parameter names. - const offset = convertPositionToOffset(this._position, this._parseResults.tokenizerOutput.lines)!; + const offset = convertPositionToOffset(this.position, this.parseResults.tokenizerOutput.lines)!; const callInfo = getCallNodeAndActiveParameterIndex( parseNode, offset, - this._parseResults.tokenizerOutput.tokens + this.parseResults.tokenizerOutput.tokens ); if (!callInfo) { return; } - const signatureInfo = this._evaluator.getCallSignatureInfo( + const signatureInfo = this.evaluator.getCallSignatureInfo( callInfo.callNode, callInfo.activeIndex, callInfo.activeOrFake @@ -1969,10 +1798,10 @@ export class CompletionProvider { // Are we past the call expression and within the argument list? const callNameEnd = convertOffsetToPosition( signatureInfo.callNode.leftExpression.start + signatureInfo.callNode.leftExpression.length, - this._parseResults.tokenizerOutput.lines + this.parseResults.tokenizerOutput.lines ); - if (comparePositions(this._position, callNameEnd) > 0) { + if (comparePositions(this.position, callNameEnd) > 0) { if (!atArgument) { this._addNamedParameters(signatureInfo, priorWord, completionMap); } @@ -2096,7 +1925,7 @@ export class CompletionProvider { if (member?.symbol.hasDeclarations()) { const declaration = member.symbol.getDeclarations()[0]; if (isFunctionDeclaration(declaration) && declaration.isMethod) { - const getItemType = this._evaluator.getTypeForDeclaration(declaration)?.type; + const getItemType = this.evaluator.getTypeForDeclaration(declaration)?.type; if (getItemType && isFunction(getItemType) && getItemType.details.parameters.length === 2) { return getItemType.details.parameters[1].type; } @@ -2107,7 +1936,7 @@ export class CompletionProvider { } private _getIndexerKeys(indexNode: IndexNode, invocationNode: ParseNode) { - const baseType = this._evaluator.getType(indexNode.baseExpression); + const baseType = this.evaluator.getType(indexNode.baseExpression); if (!baseType || !isClassInstance(baseType)) { return []; } @@ -2128,7 +1957,7 @@ export class CompletionProvider { return; } - keys.push(printLiteralValue(v, this._parseResults.tokenizerOutput.predominantSingleQuoteCharacter)); + keys.push(printLiteralValue(v, this.parseResults.tokenizerOutput.predominantSingleQuoteCharacter)); }); if (keys.length > 0) { @@ -2142,7 +1971,7 @@ export class CompletionProvider { } // Must be local variable/parameter - const declarations = this._evaluator.getDeclarationsForNameNode(indexNode.baseExpression) ?? []; + const declarations = this.evaluator.getDeclarationsForNameNode(indexNode.baseExpression) ?? []; const declaration = declarations.length > 0 ? declarations[0] : undefined; if ( !declaration || @@ -2151,7 +1980,7 @@ export class CompletionProvider { return []; } - if (declaration.path !== this._filePath) { + if (declaration.path !== this.filePath) { return []; } @@ -2169,9 +1998,9 @@ export class CompletionProvider { } const results = DocumentSymbolCollector.collectFromNode( - this._program, + this.program, indexNode.baseExpression, - this._cancellationToken, + this.cancellationToken, startingNode ); @@ -2189,7 +2018,7 @@ export class CompletionProvider { for (const entry of dictionary.entries.filter( (e) => e.nodeType === ParseNodeType.DictionaryKeyEntry ) as DictionaryKeyEntryNode[]) { - const key = this._parseResults.text + const key = this.parseResults.text .substr(entry.keyExpression.start, entry.keyExpression.length) .trim(); if (key.length > 0) keys.add(key); @@ -2198,14 +2027,14 @@ export class CompletionProvider { if (node.parent.rightExpression.nodeType === ParseNodeType.Call) { const call = node.parent.rightExpression; - const type = this._evaluator.getType(call.leftExpression); + const type = this.evaluator.getType(call.leftExpression); if (!type || !isInstantiableClass(type) || !ClassType.isBuiltIn(type, 'dict')) { continue; } for (const arg of call.arguments) { const key = arg.name?.value.trim() ?? ''; - const quote = this._parseResults.tokenizerOutput.predominantSingleQuoteCharacter; + const quote = this.parseResults.tokenizerOutput.predominantSingleQuoteCharacter; if (key.length > 0) { keys.add(`${quote}${key}${quote}`); } @@ -2220,7 +2049,7 @@ export class CompletionProvider { !TextRange.containsRange(node.parent, invocationNode) ) { const indexArgument = node.parent.items[0]; - const key = this._parseResults.text + const key = this.parseResults.text .substr(indexArgument.valueExpression.start, indexArgument.valueExpression.length) .trim(); if (key.length > 0) keys.add(key); @@ -2236,8 +2065,8 @@ export class CompletionProvider { priorWord: string, priorText: string, postText: string - ): CompletionResults | undefined { - if (this._options.triggerCharacter === '"' || this._options.triggerCharacter === "'") { + ): CompletionMap | undefined { + if (this.options.triggerCharacter === '"' || this.options.triggerCharacter === "'") { if (parseNode.start !== offset - 1) { // If completion is triggered by typing " or ', it must be the one that starts a string // literal. In another word, it can't be something inside of another string or comment @@ -2250,7 +2079,7 @@ export class CompletionProvider { return undefined; } - return { completionMap }; + return completionMap; } private _tryAddLiterals( @@ -2277,7 +2106,7 @@ export class CompletionProvider { : undefined; if (nodeForExpectedType) { - const expectedTypeResult = this._evaluator.getExpectedType(nodeForExpectedType); + const expectedTypeResult = this.evaluator.getExpectedType(nodeForExpectedType); if (expectedTypeResult && isLiteralTypeOrUnion(expectedTypeResult.type)) { this._addLiteralValuesForTargetType( expectedTypeResult.type, @@ -2386,7 +2215,7 @@ export class CompletionProvider { const comparison = parentAndChild.parent; const supportedOperators = [OperatorType.Assign, OperatorType.Equals, OperatorType.NotEquals]; if (comparison.nodeType === ParseNodeType.BinaryOperation && supportedOperators.includes(comparison.operator)) { - const type = this._evaluator.getType(comparison.leftExpression); + const type = this.evaluator.getType(comparison.leftExpression); if (type && isLiteralTypeOrUnion(type)) { this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); return true; @@ -2399,7 +2228,7 @@ export class CompletionProvider { assignmentExpression.nodeType === ParseNodeType.AssignmentExpression && assignmentExpression.rightExpression === parentAndChild.child ) { - const type = this._evaluator.getType(assignmentExpression.name); + const type = this.evaluator.getType(assignmentExpression.name); if (type && isLiteralTypeOrUnion(type)) { this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); return true; @@ -2417,7 +2246,7 @@ export class CompletionProvider { caseNode.suite === parentAndChild.child && caseNode.parent?.nodeType === ParseNodeType.Match ) { - const type = this._evaluator.getType(caseNode.parent.subjectExpression); + const type = this.evaluator.getType(caseNode.parent.subjectExpression); if (type && isLiteralTypeOrUnion(type)) { this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); return true; @@ -2435,7 +2264,7 @@ export class CompletionProvider { patternLiteral.parent.parent?.nodeType === ParseNodeType.Case && patternLiteral.parent.parent.parent?.nodeType === ParseNodeType.Match ) { - const type = this._evaluator.getType(patternLiteral.parent.parent.parent.subjectExpression); + const type = this.evaluator.getType(patternLiteral.parent.parent.parent.subjectExpression); if (type && isLiteralTypeOrUnion(type)) { this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); return true; @@ -2443,7 +2272,7 @@ export class CompletionProvider { } if (parseNode.nodeType === ParseNodeType.String) { - const offset = convertPositionToOffset(this._position, this._parseResults.tokenizerOutput.lines)!; + const offset = convertPositionToOffset(this.position, this.parseResults.tokenizerOutput.lines)!; const atArgument = parseNode.parent!.start < offset && offset < TextRange.getEnd(parseNode); this._addCallArgumentCompletions(parseNode, priorWord, priorText, postText, atArgument, completionMap); return true; @@ -2498,7 +2327,7 @@ export class CompletionProvider { const excludes = new Set(existingKeys); typedDicts.forEach((typedDict) => { - getTypedDictMembersForClass(this._evaluator, typedDict, /* allowNarrowed */ true).forEach((_, key) => { + getTypedDictMembersForClass(this.evaluator, typedDict, /* allowNarrowed */ true).forEach((_, key) => { // Unions of TypedDicts may define the same key. if (excludes.has(key) || completionMap.has(key)) { return; @@ -2521,7 +2350,7 @@ export class CompletionProvider { postText: string, completionMap: CompletionMap ) { - const expectedTypeResult = this._evaluator.getExpectedType(dictionaryNode); + const expectedTypeResult = this.evaluator.getExpectedType(dictionaryNode); if (!expectedTypeResult) { return false; } @@ -2542,7 +2371,7 @@ export class CompletionProvider { private _tryNarrowTypedDicts(types: ClassType[], keys: string[]): ClassType[] { const newTypes = types.flatMap((type) => { - const entries = getTypedDictMembersForClass(this._evaluator, type, /* allowNarrowed */ true); + const entries = getTypedDictMembersForClass(this.evaluator, type, /* allowNarrowed */ true); for (let index = 0; index < keys.length; index++) { if (!entries.has(keys[index])) { @@ -2566,7 +2395,7 @@ export class CompletionProvider { private _getQuoteInfo(priorWord: string, priorText: string): QuoteInfo { let filterText = priorWord; let stringValue = undefined; - let quoteCharacter = this._parseResults.tokenizerOutput.predominantSingleQuoteCharacter; + let quoteCharacter = this.parseResults.tokenizerOutput.predominantSingleQuoteCharacter; // If completion is not inside of the existing string literal // ex) typedDict[ |<= here @@ -2624,7 +2453,7 @@ export class CompletionProvider { return false; } - const baseType = this._evaluator.getType(indexNode.baseExpression); + const baseType = this.evaluator.getType(indexNode.baseExpression); if (!baseType) { return false; } @@ -2649,7 +2478,7 @@ export class CompletionProvider { completionItem.kind = CompletionItemKind.Constant; completionItem.sortText = this._makeSortText(SortCategory.LiteralValue, valueWithQuotes); - let rangeStartCol = this._position.character; + let rangeStartCol = this.position.character; if (quoteInfo.stringValue !== undefined) { rangeStartCol -= quoteInfo.stringValue.length + 1; } else if (quoteInfo.priorWord) { @@ -2658,7 +2487,7 @@ export class CompletionProvider { // If the text after the insertion point is the closing quote, // replace it. - let rangeEndCol = this._position.character; + let rangeEndCol = this.position.character; if (postText !== undefined) { if (postText.startsWith(quoteInfo.quoteCharacter)) { rangeEndCol++; @@ -2666,8 +2495,8 @@ export class CompletionProvider { } const range: Range = { - start: { line: this._position.line, character: rangeStartCol }, - end: { line: this._position.line, character: rangeEndCol }, + start: { line: this.position.line, character: rangeStartCol }, + end: { line: this.position.line, character: rangeEndCol }, }; completionItem.textEdit = TextEdit.replace(range, valueWithQuotes); completionItem.detail = detail; @@ -2676,102 +2505,7 @@ export class CompletionProvider { } } - private _addAutoImportCompletions( - priorWord: string, - similarityLimit: number, - lazyEdit: boolean, - completionResults: CompletionResults - ) { - if (!this._configOptions.autoImportCompletions || !this._options.autoImport) { - // If auto import on the server is turned off or this particular invocation - // is turned off (ex, notebook), don't do any thing. - return; - } - - const moduleSymbolMap = this._autoImportMaps.getModuleSymbolsMap(); - - const autoImporter = new AutoImporter( - this._execEnv, - this._importResolver, - this._parseResults, - this._position, - completionResults.completionMap, - moduleSymbolMap, - { - libraryMap: this._autoImportMaps.libraryMap, - lazyEdit, - importFormat: this._options.importFormat, - } - ); - - const results: AutoImportResult[] = []; - const info = this._autoImportMaps.nameMap?.get(priorWord); - if (info && priorWord.length > 1 && !completionResults.completionMap.has(priorWord)) { - appendArray(results, autoImporter.getAutoImportCandidatesForAbbr(priorWord, info, this._cancellationToken)); - } - - results.push( - ...autoImporter.getAutoImportCandidates( - priorWord, - similarityLimit, - /* abbrFromUsers */ undefined, - this._cancellationToken - ) - ); - - const perfInfo = autoImporter.getPerfInfo(); - - const additionDuration = new Duration(); - for (const result of results) { - if (result.symbol) { - this._addSymbol(result.name, result.symbol, priorWord, completionResults.completionMap, { - extraCommitChars: true, - autoImportSource: result.source, - autoImportAlias: result.alias, - edits: { - textEdit: this._createReplaceEdits(priorWord, /* node */ undefined, result.insertionText), - additionalTextEdits: result.edits, - }, - }); - } else { - this._addNameToCompletions( - result.alias ?? result.name, - result.kind ?? CompletionItemKind.Module, - priorWord, - completionResults.completionMap, - { - extraCommitChars: true, - autoImportText: this._getAutoImportText(result.name, result.source, result.alias), - edits: { - textEdit: this._createReplaceEdits(priorWord, /* node */ undefined, result.insertionText), - additionalTextEdits: result.edits, - }, - } - ); - } - } - - completionResults.autoImportInfo = { - indexUsed: perfInfo.indexUsed, - totalTimeInMS: perfInfo.totalInMs, - - moduleTimeInMS: perfInfo.moduleTimeInMS, - indexTimeInMS: perfInfo.indexTimeInMS, - importAliasTimeInMS: perfInfo.importAliasTimeInMS, - - itemCount: results.length, - symbolCount: perfInfo.symbolCount, - indexCount: perfInfo.indexCount, - importAliasCount: perfInfo.importAliasCount, - - additionTimeInMS: additionDuration.getDurationInMilliseconds(), - }; - } - - private _getImportFromCompletions( - importFromNode: ImportFromNode, - priorWord: string - ): CompletionResults | undefined { + private _getImportFromCompletions(importFromNode: ImportFromNode, priorWord: string): CompletionMap | undefined { // Don't attempt to provide completions for "from X import *". if (importFromNode.isWildcardImport) { return undefined; @@ -2785,29 +2519,35 @@ export class CompletionProvider { } const completionMap = new CompletionMap(); - const resolvedPath = importInfo.resolvedPaths.length > 0 ? importInfo.resolvedPaths[importInfo.resolvedPaths.length - 1] : ''; - const lookupResults = this._importLookup(resolvedPath); - if (lookupResults) { - this._addSymbolsForSymbolTable( - lookupResults.symbolTable, - (symbol, name) => { - // Don't suggest built in symbols or ones that have already been imported. - return ( - symbol.getDeclarations().some((d) => !isIntrinsicDeclaration(d)) && - !importFromNode.imports.find((imp) => imp.name.value === name) - ); - }, - priorWord, - importFromNode, - /* isInImport */ true, - /* boundObject */ undefined, - completionMap - ); + const parseResults = this.program.getParseResults(resolvedPath); + if (!parseResults) { + return completionMap; + } + + const symbolTable = AnalyzerNodeInfo.getScope(parseResults.parseTree)?.symbolTable; + if (!symbolTable) { + return completionMap; } + this._addSymbolsForSymbolTable( + symbolTable, + (symbol, name) => { + // Don't suggest built in symbols or ones that have already been imported. + return ( + symbol.getDeclarations().some((d) => !isIntrinsicDeclaration(d)) && + !importFromNode.imports.find((imp) => imp.name.value === name) + ); + }, + priorWord, + importFromNode, + /* isInImport */ true, + /* boundObject */ undefined, + completionMap + ); + // Add the implicit imports. importInfo.implicitImports.forEach((implImport) => { if (!importFromNode.imports.find((imp) => imp.name.value === implImport.name)) { @@ -2817,7 +2557,7 @@ export class CompletionProvider { } }); - return { completionMap }; + return completionMap; } private _findMatchingKeywords(keywordList: string[], partialMatch: string): string[] { @@ -2857,8 +2597,8 @@ export class CompletionProvider { const completionItemData: CompletionItemData = { workspacePath: this._workspacePath, - filePath: this._filePath, - position: this._position, + filePath: this.filePath, + position: this.position, }; completionItem.data = toLSPAny(completionItemData); completionItem.sortText = this._makeSortText(SortCategory.NamedParameter, argName); @@ -2906,7 +2646,7 @@ export class CompletionProvider { // If this is a class scope, add symbols from parent classes. if (curNode.nodeType === ParseNodeType.Class) { - const classType = this._evaluator.getTypeOfClass(curNode); + const classType = this.evaluator.getTypeOfClass(curNode); if (classType && isInstantiableClass(classType.classType)) { classType.classType.details.mro.forEach((baseClass, index) => { if (isInstantiableClass(baseClass)) { @@ -2957,14 +2697,14 @@ export class CompletionProvider { // suggestion list unless we are in the same file. const hidden = !isVisibleExternally(symbol) && - !symbol.getDeclarations().some((d) => isDefinedInFile(d, this._filePath)); + !symbol.getDeclarations().some((d) => isDefinedInFile(d, this.filePath)); if (!hidden && includeSymbolCallback(symbol, name)) { // Don't add a symbol more than once. It may have already been // added from an inner scope's symbol table. if (!completionMap.has(name)) { // Skip func parens for classes when not a direct assignment or an argument (passed as a value) const skipForClass = !this._shouldShowAutoParensForClass(symbol, node); - this._addSymbol(name, symbol, priorWord, completionMap, { + this.addSymbol(name, symbol, priorWord, completionMap, { boundObjectOrClass, funcParensDisabled: isInImport || insideTypeAnnotation || skipForClass, extraCommitChars: !isInImport && !!priorWord, @@ -2986,8 +2726,8 @@ export class CompletionProvider { } // Otherwise only show when the class is being assigned to a variable. - const nodeIndex = ParseTreeUtils.getTokenIndexAtLeft(this._parseResults.tokenizerOutput.tokens, node.start); - const prevToken = ParseTreeUtils.getTokenAtIndex(this._parseResults.tokenizerOutput.tokens, nodeIndex); + const nodeIndex = ParseTreeUtils.getTokenIndexAtLeft(this.parseResults.tokenizerOutput.tokens, node.start); + const prevToken = ParseTreeUtils.getTokenAtIndex(this.parseResults.tokenizerOutput.tokens, nodeIndex); return ( prevToken && prevToken.type === TokenType.Operator && @@ -2995,137 +2735,16 @@ export class CompletionProvider { ); } - private _addSymbol( - name: string, - symbol: Symbol, - priorWord: string, - completionMap: CompletionMap, - detail: SymbolDetail - ) { - let primaryDecl = getLastTypedDeclaredForSymbol(symbol); - if (!primaryDecl) { - const declarations = symbol.getDeclarations(); - if (declarations.length > 0) { - primaryDecl = declarations[declarations.length - 1]; - } - } - - primaryDecl = primaryDecl - ? this._evaluator.resolveAliasDeclaration(primaryDecl, /* resolveLocalNames */ true) ?? primaryDecl - : undefined; - - const autoImportText = detail.autoImportSource - ? this._getAutoImportText(name, detail.autoImportSource, detail.autoImportAlias) - : undefined; - - // Are we resolving a completion item? If so, see if this symbol - // is the one that we're trying to match. - if (this._itemToResolve) { - const completionItemData = fromLSPAny(this._itemToResolve.data); - - if (completionItemData.symbolLabel !== name) { - // It's not what we are looking for. - return; - } - - if (completionItemData.autoImportText) { - if ( - completionItemData.autoImportText === autoImportText?.importText && - detail.edits?.additionalTextEdits - ) { - this._itemToResolve.additionalTextEdits = convertToTextEdits(detail.edits.additionalTextEdits); - } - return; - } - - // This call can be expensive to perform on every completion item - // that we return, so we do it lazily in the "resolve" callback. - const type = this._evaluator.getEffectiveTypeOfSymbol(symbol); - if (!type) { - // Can't resolve. so bail out. - return; - } - - const typeDetail = getTypeDetail( - this._evaluator, - primaryDecl, - type, - name, - detail, - this._configOptions.functionSignatureDisplay - ); - const documentation = getDocumentationPartsForTypeAndDecl( - this._sourceMapper, - type, - primaryDecl, - this._evaluator, - { - name, - symbol, - boundObjectOrClass: detail.boundObjectOrClass, - } - ); - - if (this._options.format === MarkupKind.Markdown || this._options.format === MarkupKind.PlainText) { - this._itemToResolve.documentation = getCompletionItemDocumentation( - typeDetail, - documentation, - this._options.format - ); - } else { - fail(`Unsupported markup type: ${this._options.format}`); - } - - // Bail out. We don't need to add items to completion. - return; - } - - if (primaryDecl) { - let itemKind = this._convertDeclarationTypeToItemKind(primaryDecl); - - // Handle enum members specially. Enum members normally look like - // variables, but the are declared using assignment expressions - // within an enum class. - if ( - primaryDecl.type === DeclarationType.Variable && - detail.boundObjectOrClass && - isInstantiableClass(detail.boundObjectOrClass) && - ClassType.isEnumClass(detail.boundObjectOrClass) && - primaryDecl.node.parent?.nodeType === ParseNodeType.Assignment - ) { - itemKind = CompletionItemKind.EnumMember; - } - - this._addNameToCompletions(detail.autoImportAlias ?? name, itemKind, priorWord, completionMap, { - autoImportText, - extraCommitChars: detail.extraCommitChars, - funcParensDisabled: detail.funcParensDisabled, - edits: detail.edits, - }); - } else { - // Does the symbol have no declaration but instead has a synthesized type? - const synthesizedType = symbol.getSynthesizedType(); - if (synthesizedType) { - const itemKind: CompletionItemKind = this._convertTypeToItemKind(synthesizedType); - this._addNameToCompletions(name, itemKind, priorWord, completionMap, { - extraCommitChars: detail.extraCommitChars, - funcParensDisabled: detail.funcParensDisabled, - edits: detail.edits, - }); - } - } - } - private _getAutoImportText(importName: string, importFrom?: string, importAlias?: string) { const autoImportText = getAutoImportText(importName, importFrom, importAlias); let importText = ''; - if (this._options.format === MarkupKind.Markdown) { + if (this.options.format === MarkupKind.Markdown) { importText = `\`\`\`\n${autoImportText}\n\`\`\``; - } else if (this._options.format === MarkupKind.PlainText) { + } else if (this.options.format === MarkupKind.PlainText) { importText = autoImportText; } else { - fail(`Unsupported markup type: ${this._options.format}`); + fail(`Unsupported markup type: ${this.options.format}`); } return { @@ -3157,16 +2776,16 @@ export class CompletionProvider { completionItem.kind = itemKind; if (detail?.extraCommitChars) { - this._addExtraCommitChar(completionItem, ...this._getExtraCommitCharsForKind(itemKind)); + this.addExtraCommitChar(completionItem); } const completionItemData: CompletionItemData = { workspacePath: this._workspacePath, - filePath: this._filePath, - position: this._position, + filePath: this.filePath, + position: this.position, }; - if (detail?.funcParensDisabled || !this._options.snippet) { + if (detail?.funcParensDisabled || !this.options.snippet) { completionItemData.funcParensDisabled = true; } @@ -3211,7 +2830,7 @@ export class CompletionProvider { completionItemData.symbolLabel = name; - if (this._options.format === MarkupKind.Markdown) { + if (this.options.format === MarkupKind.Markdown) { let markdownString = ''; if (detail?.autoImportText) { @@ -3239,7 +2858,7 @@ export class CompletionProvider { value: markdownString, }; } - } else if (this._options.format === MarkupKind.PlainText) { + } else if (this.options.format === MarkupKind.PlainText) { let plainTextString = ''; if (detail?.autoImportText) { @@ -3267,7 +2886,7 @@ export class CompletionProvider { }; } } else { - fail(`Unsupported markup type: ${this._options.format}`); + fail(`Unsupported markup type: ${this.options.format}`); } if (detail?.edits?.format) { @@ -3344,7 +2963,7 @@ export class CompletionProvider { } private _convertDeclarationTypeToItemKind(declaration: Declaration): CompletionItemKind { - const resolvedDeclaration = this._evaluator.resolveAliasDeclaration(declaration, /* resolveLocalNames */ true); + const resolvedDeclaration = this.evaluator.resolveAliasDeclaration(declaration, /* resolveLocalNames */ true); if (!resolvedDeclaration) { return CompletionItemKind.Variable; } @@ -3371,7 +2990,7 @@ export class CompletionProvider { case DeclarationType.Function: { if (this._isPossiblePropertyDeclaration(resolvedDeclaration)) { - const functionType = this._evaluator.getTypeOfFunction(resolvedDeclaration.node); + const functionType = this.evaluator.getTypeOfFunction(resolvedDeclaration.node); if ( functionType && isMaybeDescriptorInstance(functionType.decoratedType, /* requireSetter */ false) @@ -3412,7 +3031,7 @@ export class CompletionProvider { } } - private _getImportModuleCompletions(node: ModuleNameNode): CompletionResults { + private _getImportModuleCompletions(node: ModuleNameNode): CompletionMap { const moduleDescriptor: ImportedModuleDescriptor = { leadingDots: node.leadingDots, hasTrailingDot: node.hasTrailingDot || false, @@ -3420,11 +3039,7 @@ export class CompletionProvider { importedSymbols: [], }; - const completions = this._importResolver.getCompletionSuggestions( - this._filePath, - this._execEnv, - moduleDescriptor - ); + const completions = this.importResolver.getCompletionSuggestions(this.filePath, this.execEnv, moduleDescriptor); const completionMap = new CompletionMap(); @@ -3450,30 +3065,7 @@ export class CompletionProvider { }); }); - return { completionMap }; - } - - private _getExtraCommitCharsForKind(kind: CompletionItemKind) { - switch (kind) { - case CompletionItemKind.Class: - return ['.', '(']; - case CompletionItemKind.Function: - case CompletionItemKind.Method: - return ['(']; - case CompletionItemKind.Module: - case CompletionItemKind.Enum: - return ['.']; - default: - return []; - } - } - - private _addExtraCommitChar(item: CompletionItem, ...commitChars: string[]) { - if (!this._options.extraCommitChars || commitChars.length === 0) { - return; - } - - item.commitCharacters = commitChars; + return completionMap; } private _isPossiblePropertyDeclaration(decl: FunctionDeclaration) { diff --git a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts index 11b83779c..70c84028f 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts @@ -36,7 +36,7 @@ import { ClassMemberLookupFlags, lookUpClassMember } from '../analyzer/typeUtils import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { assert } from '../common/debug'; -import { DeclarationUseCase, Extensions, ProgramView, SourceFile } from '../common/extensibility'; +import { DeclarationUseCase, Extensions, ProgramView } from '../common/extensibility'; import { TextRange } from '../common/textRange'; import { ClassNode, @@ -48,6 +48,9 @@ import { StringListNode, StringNode, } from '../parser/parseNodes'; +import { IPythonMode } from '../analyzer/sourceFile'; +import { collectImportedByFiles } from '../analyzer/sourceFileInfoUtils'; +import { Symbol } from '../analyzer/symbol'; export type CollectionResult = { node: NameNode | StringNode; @@ -142,8 +145,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { node: NameNode, resolveLocalName: boolean, useCase: DocumentSymbolCollectorUseCase, - token: CancellationToken, - implicitlyImportedBy?: SourceFile[] + token: CancellationToken ): Declaration[] { throwIfCancellationRequested(token); @@ -160,37 +162,14 @@ export class DocumentSymbolCollector extends ParseTreeWalker { /* skipUnreachableCode */ false ); - // Add declarations from chained source files const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - let builtinsScope = fileInfo.builtinsScope; - while (builtinsScope && builtinsScope.type === ScopeType.Module) { - const symbol = builtinsScope?.lookUpSymbol(node.value); - if (symbol) { - declarations.push(...symbol.getDeclarations()); - } - - builtinsScope = builtinsScope?.parent; - } - - // Add declarations from files that implicitly import the target file. - implicitlyImportedBy?.forEach((implicitImport) => { - const parseTree = program.getParseResults(implicitImport.getFilePath())?.parseTree; - if (parseTree) { - const scope = AnalyzerNodeInfo.getScope(parseTree); - const symbol = scope?.lookUpSymbol(node.value); - if (symbol) { - declarations.push(...symbol.getDeclarations()); - } - } - }); const resolvedDeclarations: Declaration[] = []; const sourceMapper = program.getSourceMapper(fileInfo.filePath, token); declarations.forEach((decl) => { const resolvedDecl = evaluator.resolveAliasDeclaration(decl, resolveLocalName); if (resolvedDecl) { - resolvedDeclarations.push(resolvedDecl); - + this._addIfUnique(resolvedDeclarations, resolvedDecl); if (sourceMapper && isStubFile(resolvedDecl.path)) { const implDecls = sourceMapper.findDeclarations(resolvedDecl); for (const implDecl of implDecls) { @@ -202,7 +181,41 @@ export class DocumentSymbolCollector extends ParseTreeWalker { } }); + const sourceFileInfo = program.getSourceFileInfo(fileInfo.filePath); + if (sourceFileInfo && sourceFileInfo.sourceFile.getIPythonMode() !== IPythonMode.None) { + // Add declarations from chained source files + let builtinsScope = fileInfo.builtinsScope; + while (builtinsScope && builtinsScope.type === ScopeType.Module) { + const symbol = builtinsScope?.lookUpSymbol(node.value); + appendSymbolDeclarations(symbol, resolvedDeclarations); + builtinsScope = builtinsScope?.parent; + } + + // Add declarations from files that implicitly import the target file. + const implicitlyImportedBy = collectImportedByFiles(sourceFileInfo); + implicitlyImportedBy.forEach((implicitImport) => { + const parseTree = program.getParseResults(implicitImport.sourceFile.getFilePath())?.parseTree; + if (parseTree) { + const scope = AnalyzerNodeInfo.getScope(parseTree); + const symbol = scope?.lookUpSymbol(node.value); + appendSymbolDeclarations(symbol, resolvedDeclarations); + } + }); + } + return resolvedDeclarations; + + function appendSymbolDeclarations(symbol: Symbol | undefined, declarations: Declaration[]) { + symbol + ?.getDeclarations() + .filter((d) => !isAliasDeclaration(d)) + .forEach((decl) => { + const resolvedDecl = evaluator!.resolveAliasDeclaration(decl, resolveLocalName); + if (resolvedDecl) { + DocumentSymbolCollector._addIfUnique(declarations, resolvedDecl); + } + }); + } } collect() { diff --git a/packages/pyright-internal/src/languageService/documentSymbolProvider.ts b/packages/pyright-internal/src/languageService/documentSymbolProvider.ts index dc99fb27d..e72fb6e50 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolProvider.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolProvider.ts @@ -8,444 +8,112 @@ * source file document. */ -import { - CancellationToken, - CompletionItemKind, - DocumentSymbol, - Location, - SymbolInformation, - SymbolKind, -} from 'vscode-languageserver'; -import { URI } from 'vscode-uri'; +import { CancellationToken, DocumentSymbol, Location, SymbolInformation } from 'vscode-languageserver'; -import { AnalyzerFileInfo, ImportLookup } from '../analyzer/analyzerFileInfo'; -import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; -import { AliasDeclaration, Declaration, DeclarationType } from '../analyzer/declaration'; -import { getNameFromDeclaration, resolveAliasDeclaration } from '../analyzer/declarationUtils'; -import { getLastTypedDeclaredForSymbol, isVisibleExternally } from '../analyzer/symbolUtils'; -import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { isMaybeDescriptorInstance } from '../analyzer/typeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; -import { convertOffsetsToRange } from '../common/positionUtils'; -import * as StringUtils from '../common/stringUtils'; -import { Range } from '../common/textRange'; import { ParseResults } from '../parser/parser'; -import { convertSymbolKindToCompletionItemKind } from './autoImporter'; +import { IndexSymbolData, SymbolIndexer } from './symbolIndexer'; +import { ProgramView } from '../common/extensibility'; +import { getFileInfo } from '../analyzer/analyzerNodeInfo'; +import { convertPathToUri } from '../common/pathUtils'; -export interface IndexAliasData { - readonly originalName: string; - readonly modulePath: string; - readonly kind: SymbolKind; - readonly itemKind?: CompletionItemKind | undefined; -} - -export interface IndexSymbolData { - readonly name: string; - readonly externallyVisible: boolean; - readonly kind: SymbolKind; - readonly itemKind?: CompletionItemKind | undefined; - readonly alias?: IndexAliasData | undefined; - readonly range?: Range | undefined; - readonly selectionRange?: Range | undefined; - readonly children?: IndexSymbolData[] | undefined; -} - -export interface IndexResults { - readonly privateOrProtected: boolean; - readonly symbols: IndexSymbolData[]; -} - -export interface IndexOptions { - indexingForAutoImportMode: boolean; - includeAllSymbols?: boolean; -} - -export type WorkspaceSymbolCallback = (symbols: SymbolInformation[]) => void; - -export function getIndexAliasData( - importLookup: ImportLookup, - declaration: AliasDeclaration -): IndexAliasData | undefined { - if (!declaration.symbolName) { - return undefined; - } - - const resolvedInfo = resolveAliasDeclaration(importLookup, declaration, { - resolveLocalNames: true, - allowExternallyHiddenAccess: false, - skipFileNeededCheck: false, - }); - if (!resolvedInfo || !resolvedInfo.declaration) { - return undefined; - } - - if (resolvedInfo.isPrivate) { - return undefined; - } - - const nameValue = getNameFromDeclaration(resolvedInfo.declaration); - if (!nameValue || resolvedInfo.declaration.path.length <= 0) { - return undefined; - } - - const symbolKind = getSymbolKind(nameValue, resolvedInfo.declaration) ?? SymbolKind.Module; - return { - originalName: nameValue, - modulePath: resolvedInfo.declaration.path, - kind: symbolKind, - itemKind: convertSymbolKindToCompletionItemKind(symbolKind), - }; -} - -export function convertToFlatSymbols(documentUri: string, symbolList: DocumentSymbol[]): SymbolInformation[] { +export function convertToFlatSymbols( + program: ProgramView, + filePath: string, + symbolList: DocumentSymbol[] +): SymbolInformation[] { const flatSymbols: SymbolInformation[] = []; + const documentUri = convertPathToUri(program.fileSystem, filePath); for (const symbol of symbolList) { - appendToFlatSymbolsRecursive(flatSymbols, documentUri, symbol); + _appendToFlatSymbolsRecursive(flatSymbols, documentUri, symbol); } return flatSymbols; } export class DocumentSymbolProvider { - static getSymbolsForDocument( - fileInfo: AnalyzerFileInfo | undefined, - indexResults: IndexResults | undefined, - parseResults: ParseResults | undefined, - filePath: string, - query: string, - token: CancellationToken - ): SymbolInformation[] { - const symbolList: SymbolInformation[] = []; - - if (!indexResults && !parseResults) { - return symbolList; - } - - const indexSymbolData = - (indexResults?.symbols as IndexSymbolData[]) ?? - DocumentSymbolProvider.indexSymbols(fileInfo!, parseResults!, { indexingForAutoImportMode: false }, token); - - appendWorkspaceSymbolsRecursive(indexSymbolData, filePath, query, '', symbolList, token); - return symbolList; - } + private _parseResults: ParseResults | undefined; - static addHierarchicalSymbolsForDocument( - fileInfo: AnalyzerFileInfo | undefined, - indexResults: IndexResults | undefined, - parseResults: ParseResults | undefined, - symbolList: DocumentSymbol[], - token: CancellationToken + constructor( + protected readonly program: ProgramView, + protected readonly filePath: string, + private readonly _supportHierarchicalDocumentSymbol: boolean, + private readonly _token: CancellationToken ) { - if (!indexResults && !parseResults) { - return; - } - - const indexSymbolData = - (indexResults?.symbols as IndexSymbolData[]) ?? - DocumentSymbolProvider.indexSymbols(fileInfo!, parseResults!, { indexingForAutoImportMode: false }, token); - appendDocumentSymbolsRecursive(indexSymbolData, symbolList, token); - } - - static indexSymbols( - fileInfo: AnalyzerFileInfo, - parseResults: ParseResults, - options: IndexOptions, - token: CancellationToken - ): IndexSymbolData[] { - // Here are the rule of what symbols are indexed for a file. - // 1. If it is a stub file, we index every public symbols defined by "https://www.python.org/dev/peps/pep-0484/#stub-files" - // 2. If it is a py file and it is py.typed package, we index public symbols - // defined by "https://github.com/microsoft/pyright/blob/main/docs/typed-libraries.md#library-interface" - // 3. If it is a py file and it is not py.typed package, we index only symbols that appear in - // __all__ to make sure we don't include too many symbols in the index. - - const indexSymbolData: IndexSymbolData[] = []; - collectSymbolIndexData(fileInfo, parseResults, parseResults.parseTree, options, indexSymbolData, token); - - return indexSymbolData; + this._parseResults = this.program.getParseResults(this.filePath); } -} - -function getSymbolKind(name: string, declaration: Declaration, evaluator?: TypeEvaluator): SymbolKind | undefined { - let symbolKind: SymbolKind; - switch (declaration.type) { - case DeclarationType.Class: - case DeclarationType.SpecialBuiltInClass: - symbolKind = SymbolKind.Class; - break; - - case DeclarationType.Function: - if (declaration.isMethod) { - const declType = evaluator?.getTypeForDeclaration(declaration)?.type; - if (declType && isMaybeDescriptorInstance(declType, /* requireSetter */ false)) { - symbolKind = SymbolKind.Property; - } else { - symbolKind = SymbolKind.Method; - } - } else { - symbolKind = SymbolKind.Function; - } - break; - - case DeclarationType.Alias: - symbolKind = SymbolKind.Module; - break; - - case DeclarationType.Parameter: - if (name === 'self' || name === 'cls' || name === '_') { - return; - } - symbolKind = SymbolKind.Variable; - break; - - case DeclarationType.TypeParameter: - symbolKind = SymbolKind.TypeParameter; - break; - - case DeclarationType.Variable: - if (name === '_') { - return; - } - symbolKind = declaration.isConstant || declaration.isFinal ? SymbolKind.Constant : SymbolKind.Variable; - break; - - default: - symbolKind = SymbolKind.Variable; - break; - } - - return symbolKind; -} - -function appendWorkspaceSymbolsRecursive( - indexSymbolData: IndexSymbolData[] | undefined, - filePath: string, - query: string, - container: string, - symbolList: SymbolInformation[], - token: CancellationToken -) { - throwIfCancellationRequested(token); - - if (!indexSymbolData) { - return; - } - - for (const symbolData of indexSymbolData) { - if (symbolData.alias) { - continue; - } - - if (StringUtils.isPatternInSymbol(query, symbolData.name)) { - const location: Location = { - uri: URI.file(filePath).toString(), - range: symbolData.selectionRange!, - }; - - const symbolInfo: SymbolInformation = { - name: symbolData.name, - kind: symbolData.kind, - location, - }; - if (container.length) { - symbolInfo.containerName = container; - } - - symbolList.push(symbolInfo); + getSymbols(): DocumentSymbol[] | SymbolInformation[] { + if (!this._parseResults) { + return []; } - appendWorkspaceSymbolsRecursive( - symbolData.children, - filePath, - query, - getContainerName(container, symbolData.name), - symbolList, - token - ); - } - - function getContainerName(container: string, name: string) { - if (container.length > 0) { - return `${container}.${name}`; + const symbolList = this.getHierarchicalSymbols(); + if (this._supportHierarchicalDocumentSymbol) { + return symbolList; } - return name; - } -} - -function appendDocumentSymbolsRecursive( - indexSymbolData: IndexSymbolData[] | undefined, - symbolList: DocumentSymbol[], - token: CancellationToken -) { - throwIfCancellationRequested(token); - - if (!indexSymbolData) { - return; + return convertToFlatSymbols(this.program, this.filePath, symbolList); } - for (const symbolData of indexSymbolData) { - if (symbolData.alias) { - continue; + protected getHierarchicalSymbols() { + const symbolList: DocumentSymbol[] = []; + const parseResults = this.program.getParseResults(this.filePath); + if (!parseResults) { + return symbolList; } - // It's possible for a name to be '' under certain error - // conditions (such as a decorator with no associated function - // or class). - if (!symbolData.name) { - continue; + const fileInfo = getFileInfo(parseResults.parseTree); + if (!fileInfo) { + return symbolList; } - const children: DocumentSymbol[] = []; - appendDocumentSymbolsRecursive(symbolData.children, children, token); - - const symbolInfo: DocumentSymbol = { - name: symbolData.name, - kind: symbolData.kind, - range: symbolData.range!, - selectionRange: symbolData.selectionRange!, - children: children!, - }; + const indexSymbolData = SymbolIndexer.indexSymbols(fileInfo, parseResults, this._token); + this.appendDocumentSymbolsRecursive(indexSymbolData, symbolList); - symbolList.push(symbolInfo); - } -} - -function collectSymbolIndexData( - fileInfo: AnalyzerFileInfo, - parseResults: ParseResults, - node: AnalyzerNodeInfo.ScopedNode, - options: IndexOptions, - indexSymbolData: IndexSymbolData[], - token: CancellationToken -) { - throwIfCancellationRequested(token); - - const scope = AnalyzerNodeInfo.getScope(node); - if (!scope) { - return; + return symbolList; } - const symbolTable = scope.symbolTable; - symbolTable.forEach((symbol, name) => { - if (symbol.isIgnoredForProtocolMatch()) { - return; - } - - // If we are not py.typed package, symbol must exist in __all__ for auto import mode. - if ( - options.indexingForAutoImportMode && - !options.includeAllSymbols && - !fileInfo.isStubFile && - !fileInfo.isInPyTypedPackage && - !symbol.isInDunderAll() - ) { - return; - } - - // Prefer declarations with a defined type. - let declaration = getLastTypedDeclaredForSymbol(symbol); - - // Fall back to declarations without a type. - if (!declaration && symbol.hasDeclarations()) { - declaration = symbol.getDeclarations()[0]; - } + protected appendDocumentSymbolsRecursive( + indexSymbolData: IndexSymbolData[] | undefined, + symbolList: DocumentSymbol[] + ) { + throwIfCancellationRequested(this._token); - if (!declaration) { + if (!indexSymbolData) { return; } - if (DeclarationType.Alias === declaration.type) { - if (!options.indexingForAutoImportMode) { - // We don't include import alias for workspace files. - return; + for (const symbolData of indexSymbolData) { + if (symbolData.alias) { + continue; } - if (!declaration.loadSymbolsFromPath || declaration.path.length <= 0) { - // If alias doesn't have a path to the original file, we can't do dedup - // so ignore those aliases. - // ex) asyncio.futures, asyncio.base_futures.futures and many will dedup - // to asyncio.futures - return; + // It's possible for a name to be '' under certain error + // conditions (such as a decorator with no associated function + // or class). + if (!symbolData.name) { + continue; } - } - // We rely on ExternallyHidden flag to determine what - // symbols should be public (included in the index) - collectSymbolIndexDataForName( - fileInfo, - parseResults, - declaration, - options, - isVisibleExternally(symbol), - name, - indexSymbolData, - token - ); - }); -} + const children: DocumentSymbol[] = []; + this.appendDocumentSymbolsRecursive(symbolData.children, children); -function collectSymbolIndexDataForName( - fileInfo: AnalyzerFileInfo, - parseResults: ParseResults, - declaration: Declaration, - options: IndexOptions, - externallyVisible: boolean, - name: string, - indexSymbolData: IndexSymbolData[], - token: CancellationToken -) { - if (options.indexingForAutoImportMode && !externallyVisible) { - return; - } - - const symbolKind = getSymbolKind(name, declaration); - if (symbolKind === undefined) { - return; - } - - const selectionRange = declaration.range; - let range = selectionRange; - const children: IndexSymbolData[] = []; - - if (declaration.type === DeclarationType.Class || declaration.type === DeclarationType.Function) { - if (!options.indexingForAutoImportMode) { - collectSymbolIndexData(fileInfo, parseResults, declaration.node, options, children, token); - } - - range = convertOffsetsToRange( - declaration.node.start, - declaration.node.start + declaration.node.length, - parseResults.tokenizerOutput.lines - ); - } + const symbolInfo: DocumentSymbol = { + name: symbolData.name, + kind: symbolData.kind, + range: symbolData.range!, + selectionRange: symbolData.selectionRange!, + children: children!, + }; - let aliasData: IndexAliasData | undefined = undefined; - if (DeclarationType.Alias === declaration.type) { - aliasData = getIndexAliasData(AnalyzerNodeInfo.getFileInfo(parseResults.parseTree)!.importLookup, declaration); - // If we can't create alias data for import alias, then don't include it in index. - if (!aliasData) { - return; + symbolList.push(symbolInfo); } } - - const data: IndexSymbolData = { - name, - externallyVisible, - kind: symbolKind, - itemKind: convertSymbolKindToCompletionItemKind(symbolKind), - alias: aliasData, - range: options.indexingForAutoImportMode ? undefined : range, - selectionRange: options.indexingForAutoImportMode ? undefined : selectionRange, - children: options.indexingForAutoImportMode ? undefined : children, - }; - - indexSymbolData.push(data); } -function appendToFlatSymbolsRecursive( +function _appendToFlatSymbolsRecursive( flatSymbols: SymbolInformation[], documentUri: string, symbol: DocumentSymbol, @@ -469,7 +137,7 @@ function appendToFlatSymbolsRecursive( if (symbol.children) { for (const child of symbol.children) { - appendToFlatSymbolsRecursive(flatSymbols, documentUri, child, symbol); + _appendToFlatSymbolsRecursive(flatSymbols, documentUri, child, symbol); } } } diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index 51d44bdec..0ee2b32a0 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -16,24 +16,15 @@ import { convertDocStringToMarkdown, convertDocStringToPlainText } from '../anal import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { SourceMapper } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { - ClassMemberLookupFlags, - doForEachSubtype, - isMaybeDescriptorInstance, - lookUpClassMember, -} from '../analyzer/typeUtils'; +import { doForEachSubtype, isMaybeDescriptorInstance } from '../analyzer/typeUtils'; import { ClassType, - FunctionType, - OverloadedFunctionType, Type, TypeCategory, - UnknownType, getTypeAliasInfo, isAnyOrUnknown, isClassInstance, isFunction, - isInstantiableClass, isModule, isOverloadedFunction, isTypeVar, @@ -48,9 +39,11 @@ import { ExpressionNode, NameNode, ParseNode, ParseNodeType, StringNode, isExpre import { ParseResults } from '../parser/parser'; import { combineExpressionTypes, + getClassAndConstructorTypes, getConstructorTooltip, getDocumentationPartsForTypeAndDecl, getToolTipForType, + getTypeForToolTip, } from './tooltipUtils'; export class HoverProvider { @@ -424,101 +417,34 @@ export class HoverProvider { } private _addInitOrNewMethodInsteadIfCallNode(node: NameNode, parts: HoverTextPart[], declaration: Declaration) { - // If the class is used as part of a call (i.e. it is being - // instantiated), include the constructor arguments within the - // hover text. - let callLeftNode: ParseNode | undefined = node; - - // Allow the left to be a member access chain (e.g. a.b.c) if the - // node in question is the last item in the chain. - if (callLeftNode?.parent?.nodeType === ParseNodeType.MemberAccess && node === callLeftNode.parent.memberName) { - callLeftNode = node.parent; - // Allow the left to be a generic class constructor (e.g. foo[int]()) - } else if (callLeftNode?.parent?.nodeType === ParseNodeType.Index) { - callLeftNode = node.parent; - } - - if ( - !callLeftNode || - !callLeftNode.parent || - callLeftNode.parent.nodeType !== ParseNodeType.Call || - callLeftNode.parent.leftExpression !== callLeftNode - ) { - return false; - } - - // Get the init method for this class. - const classType = this._getType(node); - if (!isInstantiableClass(classType)) { + const result = getClassAndConstructorTypes(node, this._evaluator); + if (!result) { return false; } - const instanceType = this._getType(callLeftNode.parent); - if (!isClassInstance(instanceType)) { - return false; - } - - let methodType: Type | undefined; - - // Try to get the `__init__` method first because it typically has more type information than `__new__`. - // Don't exclude `object.__init__` since in the plain case we want to show Foo(). - const initMember = lookUpClassMember(classType, '__init__', ClassMemberLookupFlags.SkipInstanceVariables); - - if (initMember) { - const functionType = this._evaluator.getTypeOfMember(initMember); - - if (isFunction(functionType) || isOverloadedFunction(functionType)) { - methodType = this._bindFunctionToClassOrObject(node, instanceType, functionType); - } - } - - // If there was no `__init__`, excluding `object` class `__init__`, or if `__init__` only had default params (*args: Any, **kwargs: Any) or no params (), - // see if we can find a better `__new__` method. - if ( - !methodType || - (methodType && - isFunction(methodType) && - (FunctionType.hasDefaultParameters(methodType) || methodType.details.parameters.length === 0)) - ) { - const newMember = lookUpClassMember( - classType, - '__new__', - ClassMemberLookupFlags.SkipObjectBaseClass | ClassMemberLookupFlags.SkipInstanceVariables - ); - - if (newMember) { - const newMemberType = this._evaluator.getTypeOfMember(newMember); - - // Prefer `__new__` if it doesn't have default params (*args: Any, **kwargs: Any) or no params (). - if (isFunction(newMemberType) || isOverloadedFunction(newMemberType)) { - // Set `treatConstructorAsClassMember` to true to exclude `cls` as a parameter. - methodType = this._bindFunctionToClassOrObject( - node, - instanceType, - newMemberType, - /* treatConstructorAsClassMember */ true - ); - } - } - } - - if (methodType && (isFunction(methodType) || isOverloadedFunction(methodType))) { + if (result.methodType && (isFunction(result.methodType) || isOverloadedFunction(result.methodType))) { this._addResultsPart( parts, - getConstructorTooltip(node.value, methodType, this._evaluator, this._functionSignatureDisplay), + getConstructorTooltip(node.value, result.methodType, this._evaluator, this._functionSignatureDisplay), /* python */ true ); - const addedDoc = this._addDocumentationPartForType(parts, methodType, declaration); + const addedDoc = this._addDocumentationPartForType(parts, result.methodType, declaration); if (!addedDoc) { - this._addDocumentationPartForType(parts, classType, declaration); + this._addDocumentationPartForType(parts, result.classType, declaration); } return true; } return false; } + private _getType(node: ExpressionNode) { + // It does common work necessary for hover for a type we got + // from raw type evaluator. + return getTypeForToolTip(this._evaluator, node); + } + private _getTypeText(node: ExpressionNode, expandTypeAlias = false): string { const type = this._getType(node); return ': ' + this._evaluator.printType(type, { expandTypeAlias }); @@ -529,67 +455,6 @@ export class HoverProvider { return ': ' + this._evaluator.printType(type, { expandTypeAlias }); } - private _bindFunctionToClassOrObject( - node: ExpressionNode, - baseType: ClassType | undefined, - memberType: FunctionType | OverloadedFunctionType, - treatConstructorAsClassMember?: boolean - ): FunctionType | OverloadedFunctionType | undefined { - const methodType = this._evaluator.bindFunctionToClassOrObject( - baseType, - memberType, - /* memberClass */ undefined, - /* errorNode */ undefined, - /* recursiveCount */ undefined, - treatConstructorAsClassMember - ); - - if (!methodType) { - return undefined; - } - - return this._limitOverloadBasedOnCall(methodType, node); - } - - private _getType(node: ExpressionNode) { - // It does common work necessary for hover for a type we got - // from raw type evaluator. - const type = this._evaluator.getType(node) ?? UnknownType.create(); - return this._limitOverloadBasedOnCall(type, node); - } - - private _limitOverloadBasedOnCall( - type: T, - node: ExpressionNode - ): T | FunctionType | OverloadedFunctionType { - // If it's an overloaded function, see if it's part of a call expression. - // If so, we may be able to eliminate some of the overloads based on - // the overload resolution. - if (!isOverloadedFunction(type) || node.nodeType !== ParseNodeType.Name) { - return type; - } - - const callNode = ParseTreeUtils.getCallForName(node); - if (!callNode) { - return type; - } - - const callTypeResult = this._evaluator.getTypeResult(callNode); - if ( - !callTypeResult || - !callTypeResult.overloadsUsedForCall || - callTypeResult.overloadsUsedForCall.length === 0 - ) { - return type; - } - - if (callTypeResult.overloadsUsedForCall.length === 1) { - return callTypeResult.overloadsUsedForCall[0]; - } - - return OverloadedFunctionType.create(callTypeResult.overloadsUsedForCall); - } - private _addDocumentationPart(parts: HoverTextPart[], node: NameNode, resolvedDecl: Declaration | undefined) { const type = this._getType(node); this._addDocumentationPartForType(parts, type, resolvedDecl, node.value); diff --git a/packages/pyright-internal/src/languageService/importAdder.ts b/packages/pyright-internal/src/languageService/importAdder.ts deleted file mode 100644 index c9a9f8051..000000000 --- a/packages/pyright-internal/src/languageService/importAdder.ts +++ /dev/null @@ -1,576 +0,0 @@ -/* - * importAdder.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * Provides code that figures out imports needed for symbols - * used in the given range and apply them later. - */ - -import { CancellationToken } from 'vscode-languageserver'; - -import { getFileInfo } from '../analyzer/analyzerNodeInfo'; -import { - Declaration, - isAliasDeclaration, - isClassDeclaration, - isFunctionDeclaration, - isParameterDeclaration, - isUnresolvedAliasDeclaration, - isVariableDeclaration, - ModuleLoaderActions, -} from '../analyzer/declaration'; -import { - createSynthesizedAliasDeclaration, - getNameFromDeclaration, - isDefinedInFile, -} from '../analyzer/declarationUtils'; -import { ImportResolver } from '../analyzer/importResolver'; -import { - getImportGroupFromModuleNameAndType, - getRelativeModuleName, - getTextEditsForAutoImportInsertions, - getTextEditsForAutoImportSymbolAddition, - getTopLevelImports, - ImportGroup, - ImportNameInfo, - ImportNameWithModuleInfo, - ImportStatements, -} from '../analyzer/importStatementUtils'; -import { - getDottedName, - getDottedNameWithGivenNodeAsLastName, - isLastNameOfDottedName, -} from '../analyzer/parseTreeUtils'; -import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; -import { ScopeType } from '../analyzer/scope'; -import { getScopeForNode } from '../analyzer/scopeUtils'; -import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { TypeCategory } from '../analyzer/types'; -import { throwIfCancellationRequested } from '../common/cancellationUtils'; -import { addIfUnique, appendArray, createMapFromItems, getOrAdd, removeArrayElements } from '../common/collectionUtils'; -import { ConfigOptions, ExecutionEnvironment } from '../common/configOptions'; -import { isArray } from '../common/core'; -import { TextEditAction } from '../common/editAction'; -import { getDirectoryPath } from '../common/pathUtils'; -import { convertOffsetToPosition } from '../common/positionUtils'; -import { TextEditTracker } from '../common/textEditTracker'; -import { TextRange } from '../common/textRange'; -import { ExpressionNode, ModuleNameNode, ModuleNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; -import { ParseResults } from '../parser/parser'; -import { ImportFormat } from './autoImporter'; - -export interface ImportData { - containsUnreferenceableSymbols: boolean; - declarations: Map; - importInfos?: { filePath: string; nameInfo: ImportNameInfo }[]; -} - -export class ImportAdder { - constructor( - private _configOptions: ConfigOptions, - private _importResolver: ImportResolver, - private _evaluator: TypeEvaluator - ) {} - - collectImportsForSymbolsUsed( - root: ParseResults | ModuleNode, - ranges: TextRange | TextRange[], - token: CancellationToken - ): ImportData { - root = isParseResults(root) ? root.parseTree : root; - ranges = isArray(ranges) ? ranges : [ranges]; - const collector = new NameCollector(this._evaluator, root, ranges, token); - collector.walk(root); - - return { - containsUnreferenceableSymbols: collector.containsUnreferenceableSymbols, - declarations: collector.declsForSymbols, - }; - } - - addImportInfo(importInfo: { filePath: string; nameInfo: ImportNameInfo }, importData: ImportData) { - importData.importInfos = importData.importInfos ?? []; - importData.importInfos.push(importInfo); - } - - addDeclaration(declaration: Declaration, node: ExpressionNode, importData: ImportData) { - // We don't need import statement if decl is from builtins or synthesized. - if (declaration.moduleName === 'builtins' || declaration.moduleName === '') { - return false; - } - - const name = - node.nodeType === ParseNodeType.Name - ? node - : node.nodeType === ParseNodeType.MemberAccess - ? node.memberName - : undefined; - if (!name) { - return false; - } - - getOrAdd(importData.declarations, declaration, () => []).push(name); - return true; - } - - applyImports( - result: ImportData, - filePath: string, - parseResults: ParseResults, - insertionPosition: number, - importFormat: ImportFormat, - token: CancellationToken - ): TextEditAction[] { - throwIfCancellationRequested(token); - - const importStatements = getTopLevelImports(parseResults.parseTree); - const importNameInfo = this._getImportNameWithModuleInfo(filePath, result, importFormat); - - const edits: TextEditAction[] = []; - const newNameInfo: ImportNameWithModuleInfo[] = []; - for (const moduleAndInfo of createMapFromItems(importNameInfo, (i) => i.module.moduleName)) { - if (!this._tryProcessExistingImports(moduleAndInfo, importStatements, parseResults, edits)) { - appendArray(newNameInfo, moduleAndInfo[1]); - continue; - } - } - - edits.push( - ...getTextEditsForAutoImportInsertions( - newNameInfo, - importStatements, - parseResults, - convertOffsetToPosition(insertionPosition, parseResults.tokenizerOutput.lines) - ) - ); - - return edits; - } - - applyImportsTo( - result: ImportData, - parseResults: ParseResults, - importFormat: ImportFormat, - textEditTracker: TextEditTracker, - token: CancellationToken - ): void { - throwIfCancellationRequested(token); - - const filePath = getFileInfo(parseResults.parseTree).filePath; - const importStatements = getTopLevelImports(parseResults.parseTree); - const importNameInfo = this._getImportNameWithModuleInfo(filePath, result, importFormat); - - const newNameInfo: ImportNameWithModuleInfo[] = []; - for (const moduleAndInfo of createMapFromItems(importNameInfo, (i) => i.module.moduleName)) { - if (!this._tryProcessExistingImports(moduleAndInfo, importStatements, parseResults, textEditTracker)) { - appendArray(newNameInfo, moduleAndInfo[1]); - continue; - } - } - - for (const moduleAndInfo of createMapFromItems(newNameInfo, (i) => i.module.moduleName)) { - this._addOrUpdateImport(moduleAndInfo, importStatements, parseResults, moduleAndInfo[1], textEditTracker); - } - } - - private _getImportNameWithModuleInfo(filePath: string, result: ImportData, importFormat: ImportFormat) { - const importNameInfo: ImportNameWithModuleInfo[] = []; - const execEnv = this._configOptions.findExecEnvironment(filePath); - for (const decl of result.declarations.keys() ?? []) { - const importInfo = this._getImportInfo(decl, filePath); - if (!importInfo || isUnresolvedAliasDeclaration(decl)) { - continue; - } - - this._appendImportNameInfo(filePath, execEnv, importFormat, importInfo, importNameInfo); - } - - if (result.importInfos) { - for (const importInfo of result.importInfos) { - this._appendImportNameInfo(filePath, execEnv, importFormat, importInfo, importNameInfo); - } - } - - return importNameInfo; - } - - private _appendImportNameInfo( - filePath: string, - execEnv: ExecutionEnvironment, - importFormat: ImportFormat, - importInfo: { filePath: string; nameInfo: ImportNameInfo }, - importNameInfo: ImportNameWithModuleInfo[] - ) { - const relativePath = getRelativeModuleName(this._importResolver.fileSystem, filePath, importInfo.filePath); - const moduleAndType = this._importResolver.getModuleNameForImport(importInfo.filePath, execEnv); - if (!moduleAndType.moduleName) { - if (!importInfo.nameInfo.name) { - return; - } - - // module can't be addressed by absolute path in "from import" statement. - // ex) namespace package at [workspace root] or [workspace root]\__init__.py(i) - // use relative path - importFormat = ImportFormat.Relative; - } - - addIfUnique( - importNameInfo, - { - name: importInfo.nameInfo.name, - alias: importInfo.nameInfo.alias, - module: moduleAndType, - nameForImportFrom: importFormat === ImportFormat.Relative ? relativePath : undefined, - }, - (a, b) => this._areSame(a, b) - ); - } - - private _tryProcessExistingImports( - moduleAndInfo: [string, ImportNameWithModuleInfo[]], - importStatements: ImportStatements, - parseResults: ParseResults, - edits: TextEditAction[] | TextEditTracker - ) { - for (const kindAndImports of createMapFromItems( - importStatements.orderedImports.filter((i) => i.moduleName === moduleAndInfo[0]), - (i) => (i.node.nodeType === ParseNodeType.Import ? 'import' : 'importFrom') - )) { - if (kindAndImports[0] === 'importFrom') { - // We can't merge to "from module import *" statement. - const imported = kindAndImports[1].filter( - (i) => i.node.nodeType === ParseNodeType.ImportFrom && !i.node.isWildcardImport - ); - if (imported.length === 0) { - // No regular from import statement. - continue; - } - - // get name info that don't exist in any of existing import statements. - const info = moduleAndInfo[1].filter( - (m) => - !imported.some( - (n) => - n.node.nodeType === ParseNodeType.ImportFrom && - n.node.imports.some((i) => i.name.value === m.name && i.alias?.value === m.alias) - ) - ); - - if (isArray(edits)) { - appendArray(edits, getTextEditsForAutoImportSymbolAddition(info, imported[0], parseResults)); - } else { - this._addOrUpdateImport(moduleAndInfo, importStatements, parseResults, info, edits); - } - return true; - } - - if (kindAndImports[0] === 'import') { - // import statement already exists. skip those module info. - removeArrayElements( - moduleAndInfo[1], - (i) => !i.name && kindAndImports[1].some((n) => i.alias === n.subnode?.alias?.value) - ); - continue; - } - } - - return false; - } - - private _addOrUpdateImport( - moduleAndInfo: [string, ImportNameWithModuleInfo[]], - importStatements: ImportStatements, - parseResults: ParseResults, - info: ImportNameWithModuleInfo[], - editTracker: TextEditTracker - ) { - if (info.length === 0) { - return; - } - - const name = moduleAndInfo[0]; - const nameForImportFrom = moduleAndInfo[1].length === 0 ? undefined : moduleAndInfo[1][0].nameForImportFrom; - const importGroup = - moduleAndInfo[1].length === 0 - ? ImportGroup.Local - : getImportGroupFromModuleNameAndType(moduleAndInfo[1][0].module); - - editTracker.addOrUpdateImport(parseResults, importStatements, { name, nameForImportFrom }, importGroup, info); - } - - private _getImportInfo( - decl: Declaration, - destFilePath: string - ): { filePath: string; nameInfo: ImportNameInfo } | undefined { - if (isAliasDeclaration(decl)) { - if (!decl.node) { - // This is synthesized decl for implicit module case such as "import a.b" - return { filePath: decl.path, nameInfo: {} }; - } - - if (decl.node.nodeType === ParseNodeType.ImportAs) { - const importDecl = this._evaluator.getDeclarationsForNameNode( - decl.node.module.nameParts[decl.node.module.nameParts.length - 1] - ); - - if (!importDecl || importDecl.length === 0) { - // We have no idea where it came from. - // ex) from unknown import unknown - return undefined; - } - - return { - filePath: importDecl[0].path, - nameInfo: { alias: decl.usesLocalName ? decl.node.alias?.value : undefined }, - }; - } - - if (decl.node.nodeType === ParseNodeType.ImportFromAs) { - let path: string | undefined = decl.path; - if (!path) { - // Check submodule case with no __init__ - if (decl.submoduleFallback) { - path = getDirectoryPath(decl.submoduleFallback.path); - } - } - - if (!path) { - // We have no idea where it came from. - // ex) from unknown import unknown - return undefined; - } - - if (path === destFilePath && !decl.usesLocalName && !decl.submoduleFallback) { - // Don't create import for the symbol (not module) defined in the current file - // unless alias is used. - // - // We don't check insertion point since we don't create type alias for decl defined later - // anyway. but in future, we could consider either rewrite or creating type alias for symbols - // defined after insertion point. - return undefined; - } - - return { - filePath: path, - nameInfo: { - name: decl.symbolName, - alias: decl.usesLocalName ? decl.node.alias?.value : undefined, - }, - }; - } - - if (decl.node.nodeType === ParseNodeType.ImportFrom) { - return { - filePath: decl.path, - nameInfo: { name: decl.symbolName }, - }; - } - } - - if (isVariableDeclaration(decl) || isFunctionDeclaration(decl) || isClassDeclaration(decl)) { - const name = getNameFromDeclaration(decl); - if (!name) { - return undefined; - } - - return { - filePath: decl.path, - nameInfo: { name }, - }; - } - - return undefined; - } - - private _areSame(a: ImportNameWithModuleInfo, b: ImportNameWithModuleInfo) { - return ( - a.alias === b.alias && - a.name === b.name && - a.module.importType === b.module.importType && - a.module.isLocalTypingsFile === b.module.isLocalTypingsFile && - a.module.moduleName === b.module.moduleName - ); - } -} - -class NameCollector extends ParseTreeWalker { - private readonly _filePath: string; - - // Hold onto names that we need to move imports. - readonly declsForSymbols = new Map(); - containsUnreferenceableSymbols = false; - - constructor( - private _evaluator: TypeEvaluator, - private _root: ModuleNode, - private _ranges: TextRange[], - private _token: CancellationToken - ) { - super(); - - this._filePath = getFileInfo(this._root).filePath; - - // For now, we assume the given range is at right boundary such as statement, statements, expression or expressions. - // In future, we might consider validating the range and adjusting it to the right boundary if needed. - } - - override walk(node: ParseNode) { - if (!this._ranges.some((r) => TextRange.overlapsRange(r, node))) { - return; - } - - super.walk(node); - } - - override visitModuleName(node: ModuleNameNode) { - // We only care about references to module symbols. not decls. - return false; - } - - override visitName(name: NameNode) { - if (!this._ranges.some((r) => TextRange.containsRange(r, name))) { - return false; - } - - throwIfCancellationRequested(this._token); - - // We process dotted name as a whole rather than - // process each part of dotted name. - if (!isLastNameOfDottedName(name)) { - return false; - } - - const type = this._evaluator.getType(name); - if (type?.category === TypeCategory.TypeVar) { - // Currently, we don't add import statement for type variables - // such as TypeVar, TypeVarTuple, ParamSpec, etc. - return false; - } - - const dottedName = getDottedName(getDottedNameWithGivenNodeAsLastName(name)); - if (!dottedName) { - // Not dotted name - // ex) foo().[var] - return false; - } - - // See whether the first dotted name bound to symbols defined in current file. - const firstName = dottedName[0]; - const firstNameDecls = this._getDeclarationsInModule(firstName); - if (!firstNameDecls || firstNameDecls.length === 0) { - return false; - } - - // Simple case. - // ex) import os - // [os] - if (dottedName.length === 1) { - this._handleName(firstName, firstNameDecls); - return false; - } - - for (const firstNameDecl of firstNameDecls) { - if (!isAliasDeclaration(firstNameDecl) || firstNameDecl.node.nodeType !== ParseNodeType.ImportAs) { - // decls we have is for symbols defined in current module. - // ex) [foo]() - this._handleName(firstName, [firstNameDecl]); - continue; - } - - // Import with alias - // ex) import json.encoder as j - if (firstNameDecl.usesLocalName) { - this._handleName(firstName, [firstNameDecl]); - continue; - } - - // Special casing import statement with sub module ex) import a.[b] - // It is complex for import a.[b] case since decl for [b] doesn't exist. so - // when binding a.[b].foo(), we don't get decl for "import a.[b]", we need to - // do some tree walk to find import a.[b] and synthesize decl for it. - this._handleImplicitImports(firstNameDecl, dottedName, 1); - } - - return false; - } - - private _getDeclarationsInModule(name: NameNode) { - return this._evaluator.getDeclarationsForNameNode(name)?.filter((d) => isDefinedInFile(d, this._filePath)); - } - - private _handleImplicitImports( - aliasDecl: { path: string; implicitImports?: Map }, - dottedName: NameNode[], - nameIndex: number - ) { - if (dottedName.length === nameIndex) { - return; - } - - if (!aliasDecl.implicitImports) { - this._handleName(dottedName[nameIndex - 1], [createSynthesizedAliasDeclaration(aliasDecl.path)]); - return; - } - - const implicitImportDecl = aliasDecl.implicitImports.get(dottedName[nameIndex].value); - if (!implicitImportDecl) { - this._handleName(dottedName[nameIndex - 1], [createSynthesizedAliasDeclaration(aliasDecl.path)]); - return; - } - - this._handleImplicitImports(implicitImportDecl, dottedName, nameIndex + 1); - } - - private _handleName(name: NameNode, decls: Declaration[]) { - for (const decl of decls) { - if (decl.node && this._ranges.some((r) => TextRange.containsRange(r, decl.node))) { - // Make sure our range doesn't already contain them. - continue; - } - - if (isParameterDeclaration(decl)) { - // Parameter is not referenceable from import statement. - this.containsUnreferenceableSymbols = true; - continue; - } - - if (isVariableDeclaration(decl) || isFunctionDeclaration(decl) || isClassDeclaration(decl)) { - // For now, we will allow private variable to be referenced by import - // so that user can fix it up once import is added. - - // We only support top level variables. - const scope = getScopeForNode(name); - if (!scope) { - this.containsUnreferenceableSymbols = true; - continue; - } - - const result = scope.lookUpSymbolRecursive(name.value); - if (!result || result.scope.type !== ScopeType.Module) { - this.containsUnreferenceableSymbols = true; - continue; - } - } - - this._addName(decl, name); - } - } - - private _addName(decl: Declaration, name: NameNode) { - getOrAdd(this.declsForSymbols, decl, () => []).push(name); - } -} - -function isParseResults(obj: any): obj is ParseResults { - return ( - obj && - obj.text !== undefined && - obj.parseTree && - obj.importedModules && - obj.futureImports && - obj.tokenizerOutput && - obj.containsWildcardImport !== undefined && - obj.typingSymbolAliases - ); -} diff --git a/packages/pyright-internal/src/languageService/referencesProvider.ts b/packages/pyright-internal/src/languageService/referencesProvider.ts index 0520485dc..dc6fe48cc 100644 --- a/packages/pyright-internal/src/languageService/referencesProvider.ts +++ b/packages/pyright-internal/src/languageService/referencesProvider.ts @@ -13,7 +13,7 @@ import { CancellationToken, Location, ResultProgressReporter } from 'vscode-lang import { Declaration, DeclarationType, isAliasDeclaration } from '../analyzer/declaration'; import { getNameFromDeclaration } from '../analyzer/declarationUtils'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; -import { collectImportedByFiles, isUserCode } from '../analyzer/sourceFileInfoUtils'; +import { isUserCode } from '../analyzer/sourceFileInfoUtils'; import { Symbol } from '../analyzer/symbol'; import { isVisibleExternally } from '../analyzer/symbolUtils'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; @@ -21,7 +21,7 @@ import { maxTypeRecursionCount } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { assertNever } from '../common/debug'; -import { ProgramView, SourceFile } from '../common/extensibility'; +import { ProgramView } from '../common/extensibility'; import { convertOffsetToPosition, convertPositionToOffset } from '../common/positionUtils'; import { DocumentRange, Position, TextRange, doesRangeContain } from '../common/textRange'; import { NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; @@ -177,9 +177,7 @@ export class ReferencesProvider { position, reporter, DocumentSymbolCollectorUseCase.Reference, - this._token, - // It is temporary fix for release. - Array.from(collectImportedByFiles(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile) + this._token ); if (!referencesResult) { return; @@ -274,8 +272,7 @@ export class ReferencesProvider { node: NameNode, reporter: ReferenceCallback | undefined, useCase: DocumentSymbolCollectorUseCase, - token: CancellationToken, - implicitlyImportedBy?: SourceFile[] + token: CancellationToken ) { throwIfCancellationRequested(token); @@ -284,8 +281,7 @@ export class ReferencesProvider { node, /* resolveLocalNames */ false, useCase, - token, - implicitlyImportedBy + token ); if (declarations.length === 0) { @@ -312,8 +308,7 @@ export class ReferencesProvider { position: Position, reporter: ReferenceCallback | undefined, useCase: DocumentSymbolCollectorUseCase, - token: CancellationToken, - implicitlyImportedBy?: SourceFile[] + token: CancellationToken ): ReferencesResult | undefined { throwIfCancellationRequested(token); const parseResults = program.getParseResults(filePath); @@ -336,7 +331,7 @@ export class ReferencesProvider { return undefined; } - return this.getDeclarationForNode(program, filePath, node, reporter, useCase, token, implicitlyImportedBy); + return this.getDeclarationForNode(program, filePath, node, reporter, useCase, token); } } diff --git a/packages/pyright-internal/src/languageService/renameProvider.ts b/packages/pyright-internal/src/languageService/renameProvider.ts index b957216a2..fb8b54820 100644 --- a/packages/pyright-internal/src/languageService/renameProvider.ts +++ b/packages/pyright-internal/src/languageService/renameProvider.ts @@ -16,7 +16,7 @@ import { convertTextRangeToRange } from '../common/positionUtils'; import { Position, Range } from '../common/textRange'; import { DocumentSymbolCollectorUseCase } from '../languageService/documentSymbolCollector'; import { ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; -import { collectImportedByFiles, isUserCode } from '../analyzer/sourceFileInfoUtils'; +import { isUserCode } from '../analyzer/sourceFileInfoUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { ParseResults } from '../parser/parser'; import { convertToWorkspaceEdit } from '../common/workspaceEditUtils'; @@ -169,7 +169,14 @@ export class RenameProvider { } private _getReferenceResult() { - const referencesResult = this._getDeclaration(); + const referencesResult = ReferencesProvider.getDeclarationForPosition( + this._program, + this._filePath, + this._position, + /* reporter */ undefined, + DocumentSymbolCollectorUseCase.Rename, + this._token + ); if (!referencesResult) { return undefined; } @@ -192,17 +199,4 @@ export class RenameProvider { referencesResult.useCase ); } - - private _getDeclaration() { - const sourceFileInfo = this._program.getSourceFileInfo(this._filePath)!; - return ReferencesProvider.getDeclarationForPosition( - this._program, - this._filePath, - this._position, - /* reporter */ undefined, - DocumentSymbolCollectorUseCase.Rename, - this._token, - Array.from(collectImportedByFiles(sourceFileInfo)).map((fileInfo) => fileInfo.sourceFile) - ); - } } diff --git a/packages/pyright-internal/src/languageService/symbolIndexer.ts b/packages/pyright-internal/src/languageService/symbolIndexer.ts new file mode 100644 index 000000000..856a161ad --- /dev/null +++ b/packages/pyright-internal/src/languageService/symbolIndexer.ts @@ -0,0 +1,164 @@ +/* + * symbolIndexer.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Logic that collect all symbol decl information for a specified source file. + */ + +import { CancellationToken, CompletionItemKind, SymbolKind } from 'vscode-languageserver'; + +import { AnalyzerFileInfo } from '../analyzer/analyzerFileInfo'; +import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; +import { Declaration, DeclarationType } from '../analyzer/declaration'; +import { getLastTypedDeclaredForSymbol, isVisibleExternally } from '../analyzer/symbolUtils'; +import { throwIfCancellationRequested } from '../common/cancellationUtils'; +import { convertOffsetsToRange } from '../common/positionUtils'; +import { Range } from '../common/textRange'; +import { ParseResults } from '../parser/parser'; +import { convertSymbolKindToCompletionItemKind } from './autoImporter'; +import { getSymbolKind } from '../common/lspUtils'; + +export interface IndexAliasData { + readonly originalName: string; + readonly modulePath: string; + readonly kind: SymbolKind; + readonly itemKind?: CompletionItemKind | undefined; +} + +export interface IndexSymbolData { + readonly name: string; + readonly externallyVisible: boolean; + readonly kind: SymbolKind; + readonly itemKind?: CompletionItemKind | undefined; + readonly alias?: IndexAliasData | undefined; + readonly range?: Range | undefined; + readonly selectionRange?: Range | undefined; + readonly children?: IndexSymbolData[] | undefined; +} + +export interface IndexResults { + readonly privateOrProtected: boolean; + readonly symbols: IndexSymbolData[]; +} + +export interface IndexOptions { + indexingForAutoImportMode: boolean; + includeAllSymbols?: boolean; +} + +export class SymbolIndexer { + static indexSymbols( + fileInfo: AnalyzerFileInfo, + parseResults: ParseResults, + token: CancellationToken + ): IndexSymbolData[] { + // Here are the rule of what symbols are indexed for a file. + // 1. If it is a stub file, we index every public symbols defined by "https://www.python.org/dev/peps/pep-0484/#stub-files" + // 2. If it is a py file and it is py.typed package, we index public symbols + // defined by "https://github.com/microsoft/pyright/blob/main/docs/typed-libraries.md#library-interface" + // 3. If it is a py file and it is not py.typed package, we index only symbols that appear in + // __all__ to make sure we don't include too many symbols in the index. + + const indexSymbolData: IndexSymbolData[] = []; + collectSymbolIndexData(fileInfo, parseResults, parseResults.parseTree, indexSymbolData, token); + + return indexSymbolData; + } +} + +function collectSymbolIndexData( + fileInfo: AnalyzerFileInfo, + parseResults: ParseResults, + node: AnalyzerNodeInfo.ScopedNode, + indexSymbolData: IndexSymbolData[], + token: CancellationToken +) { + throwIfCancellationRequested(token); + + const scope = AnalyzerNodeInfo.getScope(node); + if (!scope) { + return; + } + + const symbolTable = scope.symbolTable; + symbolTable.forEach((symbol, name) => { + if (symbol.isIgnoredForProtocolMatch()) { + return; + } + + // Prefer declarations with a defined type. + let declaration = getLastTypedDeclaredForSymbol(symbol); + + // Fall back to declarations without a type. + if (!declaration && symbol.hasDeclarations()) { + declaration = symbol.getDeclarations()[0]; + } + + if (!declaration) { + return; + } + + if (DeclarationType.Alias === declaration.type) { + return; + } + + // We rely on ExternallyHidden flag to determine what + // symbols should be public (included in the index) + collectSymbolIndexDataForName( + fileInfo, + parseResults, + declaration, + isVisibleExternally(symbol), + name, + indexSymbolData, + token + ); + }); +} + +function collectSymbolIndexDataForName( + fileInfo: AnalyzerFileInfo, + parseResults: ParseResults, + declaration: Declaration, + externallyVisible: boolean, + name: string, + indexSymbolData: IndexSymbolData[], + token: CancellationToken +) { + const symbolKind = getSymbolKind(declaration, undefined, name); + if (symbolKind === undefined) { + return; + } + + const selectionRange = declaration.range; + let range = selectionRange; + const children: IndexSymbolData[] = []; + + if (declaration.type === DeclarationType.Class || declaration.type === DeclarationType.Function) { + collectSymbolIndexData(fileInfo, parseResults, declaration.node, children, token); + + range = convertOffsetsToRange( + declaration.node.start, + declaration.node.start + declaration.node.length, + parseResults.tokenizerOutput.lines + ); + } + + if (DeclarationType.Alias === declaration.type) { + return; + } + + const data: IndexSymbolData = { + name, + externallyVisible, + kind: symbolKind, + itemKind: convertSymbolKindToCompletionItemKind(symbolKind), + alias: undefined, + range: range, + selectionRange: selectionRange, + children: children, + }; + + indexSymbolData.push(data); +} diff --git a/packages/pyright-internal/src/languageService/tooltipUtils.ts b/packages/pyright-internal/src/languageService/tooltipUtils.ts index 9d701b863..7af857a22 100644 --- a/packages/pyright-internal/src/languageService/tooltipUtils.ts +++ b/packages/pyright-internal/src/languageService/tooltipUtils.ts @@ -22,10 +22,12 @@ import { getVariableDocString, } from '../analyzer/typeDocStringUtils'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; +import { ClassMemberLookupFlags, lookUpClassMember } from '../analyzer/typeUtils'; import { ClassType, combineTypes, FunctionType, + isClassInstance, isFunction, isInstantiableClass, isModule, @@ -37,7 +39,7 @@ import { } from '../analyzer/types'; import { SignatureDisplayType } from '../common/configOptions'; import { isDefined } from '../common/core'; -import { ExpressionNode, ParseNodeType } from '../parser/parseNodes'; +import { ExpressionNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; // The number of spaces to indent each parameter, after moving to a newline in tooltips. const functionParamIndentOffset = 4; @@ -344,3 +346,145 @@ export function combineExpressionTypes(typeNodes: ExpressionNode[], evaluator: T } return result; } + +export function getClassAndConstructorTypes(node: NameNode, evaluator: TypeEvaluator) { + // If the class is used as part of a call (i.e. it is being + // instantiated), include the constructor arguments within the + // hover text. + let callLeftNode: ParseNode | undefined = node; + + // Allow the left to be a member access chain (e.g. a.b.c) if the + // node in question is the last item in the chain. + if (callLeftNode?.parent?.nodeType === ParseNodeType.MemberAccess && node === callLeftNode.parent.memberName) { + callLeftNode = node.parent; + // Allow the left to be a generic class constructor (e.g. foo[int]()) + } else if (callLeftNode?.parent?.nodeType === ParseNodeType.Index) { + callLeftNode = node.parent; + } + + if ( + !callLeftNode || + !callLeftNode.parent || + callLeftNode.parent.nodeType !== ParseNodeType.Call || + callLeftNode.parent.leftExpression !== callLeftNode + ) { + return; + } + + // Get the init method for this class. + const classType = getTypeForToolTip(evaluator, node); + if (!isInstantiableClass(classType)) { + return; + } + + const instanceType = getTypeForToolTip(evaluator, callLeftNode.parent); + if (!isClassInstance(instanceType)) { + return; + } + + let methodType: Type | undefined; + + // Try to get the `__init__` method first because it typically has more type information than `__new__`. + // Don't exclude `object.__init__` since in the plain case we want to show Foo(). + const initMember = lookUpClassMember(classType, '__init__', ClassMemberLookupFlags.SkipInstanceVariables); + + if (initMember) { + const functionType = evaluator.getTypeOfMember(initMember); + + if (isFunction(functionType) || isOverloadedFunction(functionType)) { + methodType = bindFunctionToClassOrObjectToolTip(evaluator, node, instanceType, functionType); + } + } + + // If there was no `__init__`, excluding `object` class `__init__`, or if `__init__` only had default params (*args: Any, **kwargs: Any) or no params (), + // see if we can find a better `__new__` method. + if ( + !methodType || + (methodType && + isFunction(methodType) && + (FunctionType.hasDefaultParameters(methodType) || methodType.details.parameters.length === 0)) + ) { + const newMember = lookUpClassMember( + classType, + '__new__', + ClassMemberLookupFlags.SkipObjectBaseClass | ClassMemberLookupFlags.SkipInstanceVariables + ); + + if (newMember) { + const newMemberType = evaluator.getTypeOfMember(newMember); + + // Prefer `__new__` if it doesn't have default params (*args: Any, **kwargs: Any) or no params (). + if (isFunction(newMemberType) || isOverloadedFunction(newMemberType)) { + // Set `treatConstructorAsClassMember` to true to exclude `cls` as a parameter. + methodType = bindFunctionToClassOrObjectToolTip( + evaluator, + node, + instanceType, + newMemberType, + /* treatConstructorAsClassMember */ true + ); + } + } + } + + return { methodType, classType }; +} + +export function bindFunctionToClassOrObjectToolTip( + evaluator: TypeEvaluator, + node: ExpressionNode, + baseType: ClassType | undefined, + memberType: FunctionType | OverloadedFunctionType, + treatConstructorAsClassMember?: boolean +): FunctionType | OverloadedFunctionType | undefined { + const methodType = evaluator.bindFunctionToClassOrObject( + baseType, + memberType, + /* memberClass */ undefined, + /* errorNode */ undefined, + /* recursiveCount */ undefined, + treatConstructorAsClassMember + ); + + if (!methodType) { + return undefined; + } + + return limitOverloadBasedOnCall(evaluator, methodType, node); +} + +export function limitOverloadBasedOnCall( + evaluator: TypeEvaluator, + type: T, + node: ExpressionNode +): T | FunctionType | OverloadedFunctionType { + // If it's an overloaded function, see if it's part of a call expression. + // If so, we may be able to eliminate some of the overloads based on + // the overload resolution. + if (!isOverloadedFunction(type) || node.nodeType !== ParseNodeType.Name) { + return type; + } + + const callNode = ParseTreeUtils.getCallForName(node); + if (!callNode) { + return type; + } + + const callTypeResult = evaluator.getTypeResult(callNode); + if (!callTypeResult || !callTypeResult.overloadsUsedForCall || callTypeResult.overloadsUsedForCall.length === 0) { + return type; + } + + if (callTypeResult.overloadsUsedForCall.length === 1) { + return callTypeResult.overloadsUsedForCall[0]; + } + + return OverloadedFunctionType.create(callTypeResult.overloadsUsedForCall); +} + +export function getTypeForToolTip(evaluator: TypeEvaluator, node: ExpressionNode) { + // It does common work necessary for hover for a type we got + // from raw type evaluator. + const type = evaluator.getType(node) ?? UnknownType.create(); + return limitOverloadBasedOnCall(evaluator, type, node); +} diff --git a/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts b/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts new file mode 100644 index 000000000..7aff4cf10 --- /dev/null +++ b/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts @@ -0,0 +1,155 @@ +/* + * workspaceSymbolProvider.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Provide LSP's workspace symbol functionality. + */ + +import { CancellationToken, Location, ResultProgressReporter, SymbolInformation } from 'vscode-languageserver'; +import { throwIfCancellationRequested } from '../common/cancellationUtils'; +import * as StringUtils from '../common/stringUtils'; +import { IndexSymbolData, SymbolIndexer } from './symbolIndexer'; +import { ProgramView } from '../common/extensibility'; +import { isUserCode } from '../analyzer/sourceFileInfoUtils'; +import { getFileInfo } from '../analyzer/analyzerNodeInfo'; +import { convertPathToUri } from '../common/pathUtils'; +import { Workspace } from '../workspaceFactory'; +import { appendArray } from '../common/collectionUtils'; + +type WorkspaceSymbolCallback = (symbols: SymbolInformation[]) => void; + +export class WorkspaceSymbolProvider { + private _reporter: WorkspaceSymbolCallback; + private _allSymbols: SymbolInformation[] = []; + + constructor( + private readonly _workspaces: Workspace[], + resultReporter: ResultProgressReporter | undefined, + private readonly _query: string, + private readonly _token: CancellationToken + ) { + this._reporter = resultReporter + ? (symbols) => resultReporter.report(symbols) + : (symbols) => appendArray(this._allSymbols, symbols); + } + + reportSymbols(): SymbolInformation[] { + for (const workspace of this._workspaces) { + if (workspace.disableLanguageServices || workspace.disableWorkspaceSymbol) { + continue; + } + + if (!workspace.isInitialized.resolved()) { + // If workspace is not resolved, ignore this workspace and move on. + // We could wait for the initialization but that cause this to be async + // so for now, we will just ignore any workspace that is not initialized yet. + continue; + } + + workspace.service.run((program) => { + this._reportSymbolsForProgram(program); + }, this._token); + } + + return this._allSymbols; + } + + protected getSymbolsForDocument(program: ProgramView, filePath: string): SymbolInformation[] { + const symbolList: SymbolInformation[] = []; + + const parseResults = program.getParseResults(filePath); + if (!parseResults) { + return symbolList; + } + + const fileInfo = getFileInfo(parseResults.parseTree); + if (!fileInfo) { + return symbolList; + } + + const indexSymbolData = SymbolIndexer.indexSymbols(fileInfo, parseResults, this._token); + this.appendWorkspaceSymbolsRecursive(indexSymbolData, program, filePath, '', symbolList); + + return symbolList; + } + + protected appendWorkspaceSymbolsRecursive( + indexSymbolData: IndexSymbolData[] | undefined, + program: ProgramView, + filePath: string, + container: string, + symbolList: SymbolInformation[] + ) { + throwIfCancellationRequested(this._token); + + if (!indexSymbolData) { + return; + } + + for (const symbolData of indexSymbolData) { + if (symbolData.alias) { + continue; + } + + if (StringUtils.isPatternInSymbol(this._query, symbolData.name)) { + const location: Location = { + uri: convertPathToUri(program.fileSystem, filePath), + range: symbolData.selectionRange!, + }; + + const symbolInfo: SymbolInformation = { + name: symbolData.name, + kind: symbolData.kind, + location, + }; + + if (container.length) { + symbolInfo.containerName = container; + } + + symbolList.push(symbolInfo); + } + + this.appendWorkspaceSymbolsRecursive( + symbolData.children, + program, + filePath, + this._getContainerName(container, symbolData.name), + symbolList + ); + } + } + + private _reportSymbolsForProgram(program: ProgramView) { + // Don't do a search if the query is empty. We'll return + // too many results in this case. + if (!this._query) { + return; + } + + // "Workspace symbols" searches symbols only from user code. + for (const sourceFileInfo of program.getSourceFileInfoList()) { + if (!isUserCode(sourceFileInfo)) { + continue; + } + + const symbolList = this.getSymbolsForDocument(program, sourceFileInfo.sourceFile.getFilePath()); + if (symbolList.length > 0) { + this._reporter(symbolList); + } + + // This operation can consume significant memory, so check + // for situations where we need to discard the type cache. + program.handleMemoryHighUsage(); + } + } + + private _getContainerName(container: string, name: string) { + if (container.length > 0) { + return `${container}.${name}`; + } + + return name; + } +} diff --git a/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts b/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts index 6ed458706..0910fd2ce 100644 --- a/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts +++ b/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts @@ -17,14 +17,14 @@ import { ConfigOptions } from '../common/configOptions'; import { NullConsole } from '../common/console'; import { normalizeSlashes } from '../common/pathUtils'; import { convertOffsetsToRange, convertOffsetToPosition } from '../common/positionUtils'; -import { ImportFormat } from '../languageService/autoImporter'; import { parseTestData } from './harness/fourslash/fourSlashParser'; import { TestAccessHost } from './harness/testAccessHost'; import * as host from './harness/testHost'; import { createFromFileSystem, distlibFolder, libFolder } from './harness/vfs/factory'; import * as vfs from './harness/vfs/filesystem'; +import { CompletionProvider } from '../languageService/completionProvider'; -test('check chained files', async () => { +test('check chained files', () => { const code = ` // @filename: test1.py //// def foo1(): pass @@ -45,29 +45,25 @@ test('check chained files', async () => { const marker = data.markerPositions.get('marker')!; const parseResult = service.getParseResult(marker.fileName)!; - const result = await service.getCompletionsForPosition( + const result = new CompletionProvider( + service.test_program, + basePath, marker.fileName, convertOffsetToPosition(marker.position, parseResult.tokenizerOutput.lines), - basePath, { format: MarkupKind.Markdown, lazyEdit: false, snippet: false, - autoImport: false, - extraCommitChars: false, - importFormat: ImportFormat.Absolute, - includeUserSymbolsInAutoImport: false, }, - undefined, CancellationToken.None - ); + ).getCompletions(); - assert(result?.completionList.items.some((i) => i.label === 'foo1')); - assert(result?.completionList.items.some((i) => i.label === 'foo2')); - assert(result?.completionList.items.some((i) => i.label === 'foo3')); + assert(result?.items.some((i) => i.label === 'foo1')); + assert(result?.items.some((i) => i.label === 'foo2')); + assert(result?.items.some((i) => i.label === 'foo3')); }); -test('modify chained files', async () => { +test('modify chained files', () => { const code = ` // @filename: test1.py //// def foo1(): pass @@ -93,28 +89,27 @@ test('modify chained files', async () => { // Close file in the middle of the chain service.setFileClosed(data.markerPositions.get('delete')!.fileName); - const result = await service.getCompletionsForPosition( + // Make sure we don't get suggestion from auto import but from chained files. + service.test_program.configOptions.autoImportCompletions = false; + + const result = new CompletionProvider( + service.test_program, + basePath, marker.fileName, convertOffsetToPosition(marker.position, parseResult.tokenizerOutput.lines), - basePath, { format: MarkupKind.Markdown, lazyEdit: false, snippet: false, - autoImport: false, - extraCommitChars: false, - importFormat: ImportFormat.Absolute, - includeUserSymbolsInAutoImport: false, }, - undefined, CancellationToken.None - ); + ).getCompletions(); assert(result); - assert(!result.completionList.items.some((i) => i.label === 'foo1')); - assert(!result.completionList.items.some((i) => i.label === 'foo2')); - assert(result.completionList.items.some((i) => i.label === 'foo3')); + assert(!result.items.some((i) => i.label === 'foo1')); + assert(!result.items.some((i) => i.label === 'foo2')); + assert(result.items.some((i) => i.label === 'foo3')); }); test('modify chained files', async () => { diff --git a/packages/pyright-internal/src/tests/completions.test.ts b/packages/pyright-internal/src/tests/completions.test.ts index 05f2cfcd3..5f787d8cf 100644 --- a/packages/pyright-internal/src/tests/completions.test.ts +++ b/packages/pyright-internal/src/tests/completions.test.ts @@ -8,8 +8,7 @@ import assert from 'assert'; import { CancellationToken } from 'vscode-languageserver'; import { CompletionItemKind, MarkupKind } from 'vscode-languageserver-types'; -import { ImportFormat } from '../languageService/autoImporter'; -import { CompletionOptions } from '../languageService/completionProvider'; +import { CompletionOptions, CompletionProvider } from '../languageService/completionProvider'; import { parseAndGetTestState } from './harness/fourslash/testState'; test('completion import statement tooltip', async () => { @@ -805,24 +804,20 @@ test('completion quote trigger', async () => { format: 'markdown', snippet: false, lazyEdit: false, - autoImport: false, - extraCommitChars: false, - importFormat: ImportFormat.Absolute, - includeUserSymbolsInAutoImport: false, triggerCharacter: '"', }; - const result = await state.workspace.service.getCompletionsForPosition( + const result = new CompletionProvider( + state.program, + state.workspace.rootPath, filePath, position, - state.workspace.rootPath, options, - undefined, CancellationToken.None - ); + ).getCompletions(); assert(result); - const item = result.completionList.items.find((a) => a.label === '"USD"'); + const item = result.items.find((a) => a.label === '"USD"'); assert(item); }); @@ -847,23 +842,19 @@ test('completion quote trigger - middle', async () => { format: 'markdown', snippet: false, lazyEdit: false, - autoImport: false, - extraCommitChars: false, - importFormat: ImportFormat.Absolute, - includeUserSymbolsInAutoImport: false, triggerCharacter: "'", }; - const result = await state.workspace.service.getCompletionsForPosition( + const result = new CompletionProvider( + state.program, + state.workspace.rootPath, filePath, position, - state.workspace.rootPath, options, - undefined, CancellationToken.None - ); + ).getCompletions(); - assert.strictEqual(result?.completionList.items.length, 0); + assert.strictEqual(result?.items.length, 0); }); test('auto import sort text', async () => { @@ -897,22 +888,18 @@ test('auto import sort text', async () => { format: 'markdown', snippet: false, lazyEdit: false, - autoImport: true, - extraCommitChars: false, - importFormat: ImportFormat.Absolute, - includeUserSymbolsInAutoImport: true, }; - const result = await state.workspace.service.getCompletionsForPosition( + const result = new CompletionProvider( + state.program, + state.workspace.rootPath, filePath, position, - state.workspace.rootPath, options, - undefined, CancellationToken.None - ); + ).getCompletions(); - const items = result?.completionList.items.filter((i) => i.label === 'os'); + const items = result?.items.filter((i) => i.label === 'os'); assert.strictEqual(items?.length, 2); items.sort((a, b) => a.sortText!.localeCompare(b.sortText!)); @@ -947,7 +934,7 @@ test('override generic', async () => { kind: CompletionItemKind.Method, textEdit: { range: state.getPositionRange('marker'), - newText: 'foo(self, x: list[int]) -> int:\n return super().foo(x)', + newText: 'foo(self, x: list[T]) -> T:\n return super().foo(x)', }, }, ], @@ -988,7 +975,7 @@ test('override generic nested', async () => { kind: CompletionItemKind.Method, textEdit: { range: state.getPositionRange('marker1'), - newText: 'foo(self, x: tuple[int, T3]) -> int:\n return super().foo(x)', + newText: 'foo(self, x: tuple[T, T2]) -> T:\n return super().foo(x)', }, }, ], @@ -1000,7 +987,7 @@ test('override generic nested', async () => { kind: CompletionItemKind.Method, textEdit: { range: state.getPositionRange('marker2'), - newText: 'foo(self, x: tuple[int, int]) -> int:\n return super().foo(x)', + newText: 'foo(self, x: tuple[T, T2]) -> T:\n return super().foo(x)', }, }, ], @@ -1030,34 +1017,6 @@ test('override __call__', async () => { newText: '__call__(self, parser: ArgumentParser, namespace: Namespace, values: str | Sequence[Any] | None, option_string: str | None = None) -> None:\n return super().__call__(parser, namespace, values, option_string)', }, - additionalTextEdits: [ - { - range: { - start: { - line: 0, - character: 27, - }, - end: { - line: 0, - character: 27, - }, - }, - newText: ', ArgumentParser, Namespace', - }, - { - range: { - start: { - line: 0, - character: 27, - }, - end: { - line: 0, - character: 27, - }, - }, - newText: '\nfrom collections.abc import Sequence\nfrom typing import Any', - }, - ], }, ], }, @@ -1098,93 +1057,6 @@ test('override ParamSpec', async () => { }); }); -test('fallback to syntax', async () => { - const code = ` -// @filename: test.py -//// class A: -//// def foo(self, a: MyType) -> NewMyType: -//// pass -//// -//// class B(A): -//// def [|foo/*marker*/|] - `; - - const state = parseAndGetTestState(code).state; - - await state.verifyCompletion('included', 'markdown', { - ['marker']: { - completions: [ - { - label: 'foo', - kind: CompletionItemKind.Method, - textEdit: { - range: state.getPositionRange('marker'), - newText: 'foo(self, a: MyType) -> NewMyType:\n return super().foo(a)', - }, - }, - ], - }, - }); -}); - -test('omit Unknown', async () => { - const code = ` -// @filename: test.py -//// class A: -//// def foo(self, a: list) -> None: -//// pass -//// -//// class B(A): -//// def [|foo/*marker*/|] - `; - - const state = parseAndGetTestState(code).state; - - await state.verifyCompletion('included', 'markdown', { - ['marker']: { - completions: [ - { - label: 'foo', - kind: CompletionItemKind.Method, - textEdit: { - range: state.getPositionRange('marker'), - newText: 'foo(self, a: list) -> None:\n return super().foo(a)', - }, - }, - ], - }, - }); -}); - -test('no annotation, no return type', async () => { - const code = ` -// @filename: test.py -//// class A: -//// def foo(self): -//// pass -//// -//// class B(A): -//// def [|foo/*marker*/|] - `; - - const state = parseAndGetTestState(code).state; - - await state.verifyCompletion('included', 'markdown', { - ['marker']: { - completions: [ - { - label: 'foo', - kind: CompletionItemKind.Method, - textEdit: { - range: state.getPositionRange('marker'), - newText: 'foo(self):\n return super().foo()', - }, - }, - ], - }, - }); -}); - test('annotation using comment', async () => { const code = ` // @filename: test.py @@ -1214,90 +1086,6 @@ test('annotation using comment', async () => { }); }); -test('adding import for type arguments', async () => { - const code = ` -// @filename: __builtins__.pyi -//// class MyBuiltIns: ... - -// @filename: test.py -//// from typing import Generic, TypeVar -//// -//// T = TypeVar("T") -//// -//// class A(Generic[T]): -//// def foo(self, a: T) -> T: -//// return a -//// -//// class Action: -//// pass -//// -//// class B(A[Action]): -//// pass -//// -//// class C(A[MyBuiltIns]): -//// pass - -// @filename: test1.py -//// from test import B -//// -//// class U(B): -//// def [|foo/*marker1*/|] - -// @filename: test2.py -//// from test import C -//// -//// class U(C): -//// def [|foo/*marker2*/|] - `; - - const state = parseAndGetTestState(code).state; - - state.openFiles(state.testData.files.map((f) => f.fileName)); - - await state.verifyCompletion('included', 'markdown', { - marker1: { - completions: [ - { - label: 'foo', - kind: CompletionItemKind.Method, - textEdit: { - range: state.getPositionRange('marker1'), - newText: 'foo(self, a: Action) -> Action:\n return super().foo(a)', - }, - additionalTextEdits: [ - { - range: { - start: { - line: 0, - character: 18, - }, - end: { - line: 0, - character: 18, - }, - }, - newText: ', Action', - }, - ], - }, - ], - }, - marker2: { - completions: [ - { - label: 'foo', - kind: CompletionItemKind.Method, - textEdit: { - range: state.getPositionRange('marker2'), - newText: 'foo(self, a: MyBuiltIns) -> MyBuiltIns:\n return super().foo(a)', - }, - additionalTextEdits: [], - }, - ], - }, - }); -}); - test('Complex type arguments', async () => { const code = ` // @filename: test.py @@ -1331,37 +1119,8 @@ test('Complex type arguments', async () => { kind: CompletionItemKind.Method, textEdit: { range: state.getPositionRange('marker'), - newText: - 'foo(self, a: Tuple[list, dict] | tuple[Mapping[List[A[int]], Dict[str, Any]], float]) -> Tuple[list, dict] | tuple[Mapping[List[A[int]], Dict[str, Any]], float]:\n return super().foo(a)', + newText: 'foo(self, a: T) -> T:\n return super().foo(a)', }, - additionalTextEdits: [ - { - range: { - start: { - line: 0, - character: 17, - }, - end: { - line: 0, - character: 17, - }, - }, - newText: 'A, ', - }, - { - range: { - start: { - line: 0, - character: 0, - }, - end: { - line: 0, - character: 0, - }, - }, - newText: 'from typing import Any, Dict, List, Mapping, Tuple\n', - }, - ], }, ], }, diff --git a/packages/pyright-internal/src/tests/docStringConversion.test.ts b/packages/pyright-internal/src/tests/docStringConversion.test.ts index 03b00513b..403b53b94 100644 --- a/packages/pyright-internal/src/tests/docStringConversion.test.ts +++ b/packages/pyright-internal/src/tests/docStringConversion.test.ts @@ -611,12 +611,49 @@ test('FieldListGoogleV2', () => { const docstring = ` 4. Google (variant 2): Args: - param1 (type): description`; + param1 (type): description + param2 (type): description`; const markdown = ` 4. Google (variant 2):      Args: -         param1 (type): description`; +         param1 (type): description +         param2 (type): description`; + + _testConvertToMarkdown(docstring, markdown); +}); + +test('Googlewithreturntypes', () => { + const docstring = ` + Example function with types documented in the docstring. + + \`PEP 484\`_ type annotations are supported. If attribute, parameter, and + return types are annotated according to \`PEP 484\`_, they do not need to be + included in the docstring: + + Args: + param1 (int): The first parameter. + param2 (str): The second parameter. + + Returns: + bool: The return value. True for success, False otherwise. + + .. _PEP 484: + https://www.python.org/dev/peps/pep-0484/`; + + const markdown = ` +Example function with types documented in the docstring. + +\`PEP 484\`\\_ type annotations are supported. If attribute, parameter, and +return types are annotated according to \`PEP 484\`\\_, they do not need to be +included in the docstring: + +Args: +    param1 (int): The first parameter. +    param2 (str): The second parameter. + +Returns: +    bool: The return value. True for success, False otherwise.`; _testConvertToMarkdown(docstring, markdown); }); diff --git a/packages/pyright-internal/src/tests/fourslash/completions.commitChars.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.commitChars.fourslash.ts deleted file mode 100644 index 800bee92a..000000000 --- a/packages/pyright-internal/src/tests/fourslash/completions.commitChars.fourslash.ts +++ /dev/null @@ -1,86 +0,0 @@ -/// - -// @filename: test.py -//// from samples import * -//// foo[|/*marker1*/|] -//// fooClass().foo[|/*marker2*/|] - -// @filename: test1.py -//// from .samp[|/*marker3*/|] - -// @filename: test2.py -//// from samples import * -//// [|/*marker4*/|] - -// @filename: samples.py -//// import fooLib as fooLib -//// def fooFunc(): ... -//// class fooClass(): -//// def fooMethod(self): ... - -// @filename: fooLib.py -//// # empty - -{ - helper.openFiles(helper.getMarkers().map((m) => m.fileName)); - - // @ts-ignore - await helper.verifyCompletion('included', 'markdown', { - marker1: { - completions: [ - { - label: 'fooLib', - kind: Consts.CompletionItemKind.Module, - commitCharacters: ['.'], - }, - { - label: 'fooFunc', - kind: Consts.CompletionItemKind.Function, - commitCharacters: ['('], - }, - { - label: 'fooClass', - kind: Consts.CompletionItemKind.Class, - commitCharacters: ['.', '('], - }, - ], - }, - marker2: { - completions: [ - { - label: 'fooMethod', - kind: Consts.CompletionItemKind.Method, - commitCharacters: ['('], - }, - ], - }, - marker3: { - completions: [ - { - label: 'samples', - kind: Consts.CompletionItemKind.Module, - commitCharacters: [], - }, - ], - }, - marker4: { - completions: [ - { - label: 'fooLib', - kind: Consts.CompletionItemKind.Module, - commitCharacters: [], - }, - { - label: 'fooFunc', - kind: Consts.CompletionItemKind.Function, - commitCharacters: [], - }, - { - label: 'fooClass', - kind: Consts.CompletionItemKind.Class, - commitCharacters: [], - }, - ], - }, - }); -} diff --git a/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts index 60e893c26..93ad34a4b 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.override2.fourslash.ts @@ -32,7 +32,7 @@ kind: Consts.CompletionItemKind.Method, textEdit: { range: helper.getPositionRange('marker'), - newText: 'append(self, __object: Any) -> None:\n return super().append(__object)', + newText: 'append(self, __object: _T) -> None:\n return super().append(__object)', }, }, ], @@ -58,21 +58,6 @@ range: helper.getPositionRange('marker3'), newText: '__call__(self, *args: Any, **kwds: Any) -> Any:\n ${0:pass}', }, - additionalTextEdits: [ - { - range: { - start: { - line: 0, - character: 0, - }, - end: { - line: 0, - character: 0, - }, - }, - newText: 'from typing import Any\n\n\n', - }, - ], }, ], }, diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 8bd2aa907..b7d7c049e 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -14,6 +14,7 @@ import { CodeAction, Command, CompletionItem, + CompletionList, Diagnostic, DocumentHighlight, DocumentHighlightKind, @@ -50,9 +51,8 @@ import { convertOffsetToPosition, convertPositionToOffset } from '../../../commo import { DocumentRange, Position, Range as PositionRange, TextRange, rangesAreEqual } from '../../../common/textRange'; import { TextRangeCollection } from '../../../common/textRangeCollection'; import { LanguageServerInterface } from '../../../languageServerBase'; -import { AbbreviationInfo, ImportFormat } from '../../../languageService/autoImporter'; import { CallHierarchyProvider } from '../../../languageService/callHierarchyProvider'; -import { CompletionOptions } from '../../../languageService/completionProvider'; +import { CompletionOptions, CompletionProvider } from '../../../languageService/completionProvider'; import { DefinitionFilter, DefinitionProvider, @@ -916,14 +916,14 @@ export class TestState { map: { [marker: string]: { completions: _.FourSlashCompletionItem[]; - memberAccessInfo?: { - lastKnownModule?: string; - lastKnownMemberName?: string; - unknownMemberName?: string; - }; }; }, - abbrMap?: { [abbr: string]: AbbreviationInfo } + abbrMap?: { + [abbr: string]: { + readonly importFrom?: string; + readonly importName: string; + }; + } ): Promise { this.analyze(); @@ -935,43 +935,23 @@ export class TestState { this.lastKnownMarker = markerName; - const filePath = marker.fileName; const expectedCompletions = map[markerName].completions; - const completionPosition = this.convertOffsetToPosition(filePath, marker.position); - - const options: CompletionOptions = { - format: docFormat, - snippet: true, - lazyEdit: true, - autoImport: true, - extraCommitChars: true, - importFormat: ImportFormat.Absolute, - includeUserSymbolsInAutoImport: false, - }; - const nameMap = abbrMap ? new Map(Object.entries(abbrMap)) : undefined; - const result = await this.workspace.service.getCompletionsForPosition( - filePath, - completionPosition, - this.workspace.rootPath, - options, - nameMap, - CancellationToken.None - ); - - if (result) { + const provider = this.getCompletionResults(this, marker, docFormat, abbrMap); + const results = provider.getCompletions(); + if (results) { if (verifyMode === 'exact') { - if (result.completionList.items.length !== expectedCompletions.length) { + if (results.items.length !== expectedCompletions.length) { assert.fail( `${markerName} - Expected ${expectedCompletions.length} items but received ${ - result.completionList.items.length - }. Actual completions:\n${stringify(result.completionList.items.map((r) => r.label))}` + results.items.length + }. Actual completions:\n${stringify(results.items.map((r) => r.label))}` ); } } for (let i = 0; i < expectedCompletions.length; i++) { const expected = expectedCompletions[i]; - const actualIndex = result.completionList.items.findIndex( + const actualIndex = results.items.findIndex( (a) => a.label === expected.label && (expected.kind ? a.kind === expected.kind : true) && @@ -986,23 +966,15 @@ export class TestState { assert.fail( `${markerName} - Completion item with label "${ expected.label - }" unexpected. Actual completions:\n${stringify( - result.completionList.items.map((r) => r.label) - )}` + }" unexpected. Actual completions:\n${stringify(results.items.map((r) => r.label))}` ); } - const actual: CompletionItem = result.completionList.items[actualIndex]; + const actual: CompletionItem = results.items[actualIndex]; if (expected.additionalTextEdits !== undefined) { if (actual.additionalTextEdits === undefined) { - this.workspace.service.resolveCompletionItem( - filePath, - actual, - options, - nameMap, - CancellationToken.None - ); + provider.resolveCompletionItem(actual); } } @@ -1010,13 +982,7 @@ export class TestState { if (expected.documentation !== undefined) { if (actual.documentation === undefined && actual.data) { - this.workspace.service.resolveCompletionItem( - filePath, - actual, - options, - nameMap, - CancellationToken.None - ); + provider.resolveCompletionItem(actual); } if (MarkupContent.is(actual.documentation)) { @@ -1029,27 +995,25 @@ export class TestState { } } - result.completionList.items.splice(actualIndex, 1); + results.items.splice(actualIndex, 1); } else { if (verifyMode === 'included' || verifyMode === 'exact') { // we're supposed to find all items passed to the test assert.fail( `${markerName} - Completion item with label "${ expected.label - }" expected. Actual completions:\n${stringify( - result.completionList.items.map((r) => r.label) - )}` + }" expected. Actual completions:\n${stringify(results.items.map((r) => r.label))}` ); } } } if (verifyMode === 'exact') { - if (result.completionList.items.length !== 0) { + if (results.items.length !== 0) { // we removed every item we found, there should not be any remaining assert.fail( `${markerName} - Completion items unexpected: ${stringify( - result.completionList.items.map((r) => r.label) + results.items.map((r) => r.label) )}` ); } @@ -1059,25 +1023,6 @@ export class TestState { assert.fail(`${markerName} - Failed to get completions`); } } - - if (map[markerName].memberAccessInfo !== undefined && result?.memberAccessInfo !== undefined) { - const expectedModule = map[markerName].memberAccessInfo?.lastKnownModule; - const expectedType = map[markerName].memberAccessInfo?.lastKnownMemberName; - const expectedName = map[markerName].memberAccessInfo?.unknownMemberName; - if ( - result?.memberAccessInfo?.lastKnownModule !== expectedModule || - result?.memberAccessInfo?.lastKnownMemberName !== expectedType || - result?.memberAccessInfo?.unknownMemberName !== expectedName - ) { - assert.fail( - `${markerName} - Expected completion results memberAccessInfo with \n lastKnownModule: "${expectedModule}"\n lastKnownMemberName: "${expectedType}"\n unknownMemberName: "${expectedName}"\n Actual memberAccessInfo:\n lastKnownModule: "${ - result.memberAccessInfo?.lastKnownModule ?? '' - }"\n lastKnownMemberName: "${ - result.memberAccessInfo?.lastKnownMemberName ?? '' - }\n unknownMemberName: "${result.memberAccessInfo?.unknownMemberName ?? ''}" ` - ); - } - } } } @@ -1476,6 +1421,36 @@ export class TestState { } } + protected getCompletionResults( + state: TestState, + marker: Marker, + docFormat: MarkupKind, + abbrMap?: { + [abbr: string]: { + readonly importFrom?: string; + readonly importName: string; + }; + } + ): { getCompletions(): CompletionList | null; resolveCompletionItem(item: CompletionItem): void } { + const filePath = marker.fileName; + const completionPosition = this.convertOffsetToPosition(filePath, marker.position); + + const options: CompletionOptions = { + format: docFormat, + snippet: true, + lazyEdit: false, + }; + + return new CompletionProvider( + this.program, + this.workspace.rootPath, + filePath, + completionPosition, + options, + CancellationToken.None + ); + } + protected getFileContent(fileName: string): string { const files = this.testData.files.filter( (f) => comparePaths(f.fileName, fileName, this.testFS.ignoreCase) === Comparison.EqualTo diff --git a/packages/pyright-internal/src/tests/importAdder.test.ts b/packages/pyright-internal/src/tests/importAdder.test.ts deleted file mode 100644 index d7b44bab7..000000000 --- a/packages/pyright-internal/src/tests/importAdder.test.ts +++ /dev/null @@ -1,1549 +0,0 @@ -/* - * importAdder.test.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * - * tests for importMover. - */ - -import assert from 'assert'; -import { CancellationToken } from 'vscode-languageserver'; - -import { Declaration } from '../analyzer/declaration'; -import { findNodeByOffset } from '../analyzer/parseTreeUtils'; -import { TextEditAction } from '../common/editAction'; -import { TextEditTracker } from '../common/textEditTracker'; -import { rangesAreEqual, TextRange } from '../common/textRange'; -import { ImportFormat } from '../languageService/autoImporter'; -import { ImportAdder } from '../languageService/importAdder'; -import { NameNode } from '../parser/parseNodes'; -import { parseAndGetTestState, TestState } from './harness/fourslash/testState'; -import { convertFileEditActionToString, convertRangeToFileEditAction } from './testStateUtils'; - -test('builtin types', () => { - const code = ` -// @filename: test1.py -//// [|/*src*/a: str = "hello" -//// b: int = 1 -//// c: True = True -//// d: None = None|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('intrinsic types', () => { - const code = ` -// @filename: test1.py -//// if __name__ == __path__: -//// pass -//// -//// [|/*src*/if __name__ === "__main__": -//// pass -//// b = __path__|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('handle variable in range', () => { - const code = ` -// @filename: test1.py -//// [|/*src*/variableToMove = 1|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('move variable', () => { - const code = ` -// @filename: test1.py -//// variableToMove = 1 -//// [|/*src*/a = variableToMove|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import variableToMove!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('move multiple variables', () => { - const code = ` -// @filename: test1.py -//// variableToMove1 = 1 -//// variableToMove2 = 2 -//// [|/*src*/a = variableToMove1 -//// a = variableToMove2|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import variableToMove1, variableToMove2!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle local variables', () => { - const code = ` -// @filename: test1.py -//// def foo(): -//// variableToMove1 = 1 -//// variableToMove2 = 2 -//// [|/*src*/a = variableToMove1 -//// a = variableToMove2|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('handle parameter variable', () => { - const code = ` -// @filename: test1.py -//// def foo(p: int): -//// [|/*src*/a = p|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('move private variable', () => { - const code = ` -// @filename: test1.py -//// __private = 1 -//// [|/*src*/a = __private|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import __private!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle function in range', () => { - const code = ` -// @filename: test1.py -//// [|/*src*/def foo(): -//// pass|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('move function', () => { - const code = ` -// @filename: test1.py -//// def foo(): pass -//// [|/*src*/foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import foo!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('move multiple functions', () => { - const code = ` -// @filename: test1.py -//// def foo(): pass -//// def bar(): pass -//// [|/*src*/foo() -//// bar()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import bar, foo!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle inner function', () => { - const code = ` -// @filename: test1.py -//// def foo(): -//// def bar(): pass -//// [|/*src*/bar()|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('move private function', () => { - const code = ` -// @filename: test1.py -//// def __private(): pass -//// [|/*src*/__private()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import __private!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle class in range', () => { - const code = ` -// @filename: test1.py -//// [|/*src*/class A: pass|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('move class', () => { - const code = ` -// @filename: test1.py -//// class A: pass -//// [|/*src*/a = A()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import A!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('move multiple classes', () => { - const code = ` -// @filename: test1.py -//// class A: pass -//// class B: pass -//// [|/*src*/a = A() -//// a = B()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import A, B!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle inner class through self', () => { - const code = ` -// @filename: test1.py -//// class A: -//// class B: pass -//// def foo(self): -//// [|/*src*/b = self.B()|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('handle inner class through type', () => { - const code = ` -// @filename: test1.py -//// class A: -//// class B: pass -//// def foo(self): -//// [|/*src*/b = A.B()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import A!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle class variable', () => { - const code = ` -// @filename: test1.py -//// class A: -//// def __init__(self): -//// self.a = 1 -//// c = A(); -//// [|/*src*/a = c.a|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import c!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle class static variable', () => { - const code = ` -// @filename: test1.py -//// class A: -//// V = 1 -//// [|/*src*/a = A.V|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import A!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle class function', () => { - const code = ` -// @filename: test1.py -//// class A: -//// def __init__(self): pass -//// def foo(self): pass -//// c = A(); -//// [|/*src*/a = c.foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import c!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle class static function', () => { - const code = ` -// @filename: test1.py -//// class A: -//// def Foo(): pass -//// [|/*src*/a = A.Foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import A!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('handle class function parameter', () => { - const code = ` -// @filename: test1.py -//// class A: -//// def __init__(self): -//// [|/*src*/self.a = 1|] - -// @filename: test2.py -//// [|/*dest*/|] - `; - - testImportMove(code); -}); - -test('move private class', () => { - const code = ` -// @filename: test1.py -//// class __A: -//// class B: pass -//// [|/*src*/a = __A()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from test1 import __A!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('move simple import statement', () => { - const code = ` -// @filename: test1.py -//// import typing -//// -//// [|/*src*/a: typing.Any = 1|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import typing!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move import statement with alias', () => { - const code = ` -// @filename: test1.py -//// import typing as t -//// -//// [|/*src*/a: t.Any = 1|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import typing as t!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move dotted import statement', () => { - const code = ` -// @filename: test1.py -//// import json.encoder -//// -//// [|/*src*/a = json.encoder.JSONEncoder()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import json.encoder!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move dotted statement with alias', () => { - const code = ` -// @filename: test1.py -//// import json.encoder as j -//// -//// [|/*src*/a = j.JSONEncoder()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import json.encoder as j!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move both dotted import and regular statement', () => { - const code = ` -// @filename: test1.py -//// import json -//// import json.encoder -//// -//// a = json.encoder.JSONEncoder() -//// [|/*src*/b = json.loads("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import json!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move both dotted import and regular statement with alias', () => { - const code = ` -// @filename: test1.py -//// import json as j -//// import json.encoder -//// -//// a = json.encoder.JSONEncoder() -//// [|/*src*/b = j.loads("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import json as j!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple import statements', () => { - const code = ` -// @filename: test1.py -//// import json -//// import json.encoder -//// -//// [|/*src*/a = json.encoder.JSONEncoder() -//// b = json.loads("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import json!n!import json.encoder!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple import statements with alias', () => { - const code = ` -// @filename: test1.py -//// import json as j -//// import json.encoder as j2 -//// -//// [|/*src*/a = j2.JSONEncoder() -//// b = j.loads("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import json as j!n!import json.encoder as j2!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple import statements - nested', () => { - const code = ` -// @filename: test1.py -//// def foo(): -//// import json -//// import json.encoder -//// -//// [|/*src*/a = json.encoder.JSONEncoder() -//// b = json.loads("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import json!n!import json.encoder!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple import statements - part of nested body', () => { - const code = ` -// @filename: test1.py -//// def foo(): -//// import json -//// import json.encoder -//// -//// [|/*src*/a = json.encoder.JSONEncoder()|] -//// b = json.loads("") - -// @filename: test2.py -//// [|/*dest*/{|"r":"import json.encoder!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple import statements - multi dotted name', () => { - const code = ` -// @filename: nested/__init__.py -//// def foo(): pass - -// @filename: nested/nested2/__init__.py -//// def foo(): pass - -// @filename: nested/nested2/module.py -//// def foo(): pass - -// @filename: test1.py -//// import nested -//// import nested.nested2 -//// import nested.nested2.module -//// -//// nested.foo() -//// -//// [|/*src*/nested.nested2.foo() -//// nested.nested2.module.foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import nested.nested2!n!import nested.nested2.module!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('move simple from import statement', () => { - const code = ` -// @filename: test1.py -//// from typing import Any -//// -//// [|/*src*/a: Any = 1|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from typing import Any!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move from import statement with alias', () => { - const code = ` -// @filename: test1.py -//// from typing import Any as t -//// -//// [|/*src*/a: t = 1|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from typing import Any as t!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move submodule from import statement', () => { - const code = ` -// @filename: test1.py -//// from json import encoder -//// -//// [|/*src*/a = encoder.JSONEncoder()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json import encoder!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move submodule from import statement with alias', () => { - const code = ` -// @filename: test1.py -//// from json import encoder as e -//// -//// [|/*src*/a = e.JSONEncoder()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json import encoder as e!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move dotted from import statement', () => { - const code = ` -// @filename: test1.py -//// from json.encoder import JSONEncoder -//// -//// [|/*src*/a = JSONEncoder()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json.encoder import JSONEncoder!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move dotted from import statement with alias', () => { - const code = ` -// @filename: test1.py -//// from json.encoder import JSONEncoder as j -//// -//// [|/*src*/a = j()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json.encoder import JSONEncoder as j!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move both dotted from import and regular statement', () => { - const code = ` -// @filename: test1.py -//// from json import loads -//// from json.encoder import JSONEncoder -//// -//// a = JSONEncoder() -//// [|/*src*/b = loads("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json import loads!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move both dotted from import and regular statement with alias', () => { - const code = ` -// @filename: test1.py -//// from json import loads as j -//// from json.encoder import JSONEncoder -//// -//// a = JSONEncoder() -//// [|/*src*/b = j("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json import loads as j!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple from import statements', () => { - const code = ` -// @filename: test1.py -//// from json import loads -//// from json.encoder import JSONEncoder -//// -//// [|/*src*/a = JSONEncoder() -//// b = loads("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json import loads!n!from json.encoder import JSONEncoder!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple from import statements with alias', () => { - const code = ` -// @filename: test1.py -//// from json import loads as j -//// from json.encoder import JSONEncoder as j2 -//// -//// [|/*src*/a = j2() -//// b = j("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json import loads as j!n!from json.encoder import JSONEncoder as j2!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple from import statements - nested', () => { - const code = ` -// @filename: test1.py -//// def foo(): -//// from json import loads -//// from json.encoder import JSONEncoder -//// -//// [|/*src*/a = JSONEncoder() -//// b = loads("")|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json import loads!n!from json.encoder import JSONEncoder!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple from import statements - part of nested body', () => { - const code = ` -// @filename: test1.py -//// def foo(): -//// from json import loads -//// from json.encoder import JSONEncoder -//// -//// [|/*src*/a = JSONEncoder()|] -//// b = loads("") - -// @filename: test2.py -//// [|/*dest*/{|"r":"from json.encoder import JSONEncoder!n!!n!!n!"|}|] -//// - `; - - testImportMove(code); -}); - -test('move multiple from import statements - multi dotted name', () => { - const code = ` -// @filename: nested/__init__.py -//// def foo(): pass - -// @filename: nested/nested2/__init__.py -//// def foo2(): pass - -// @filename: nested/nested2/module.py -//// def foo3(): pass - -// @filename: test1.py -//// from nested import foo -//// from nested.nested2 import foo2 -//// from nested.nested2.module import foo3 -//// -//// foo() -//// -//// [|/*src*/foo2() -//// foo3()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from nested.nested2 import foo2!n!from nested.nested2.module import foo3!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('relative path from import', () => { - const code = ` -// @filename: nested/__init__.py -//// def foo(): pass - -// @filename: nested/nested2/__init__.py -//// def foo2(): pass - -// @filename: nested/nested2/module.py -//// def foo3(): pass - -// @filename: nested/nested2/test1.py -//// from ...nested import foo -//// from ..nested2 import foo2 -//// from .module import foo3 -//// [|/*src*/foo() -//// foo2() -//// foo3()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from nested import foo!n!from nested.nested2 import foo2!n!from nested.nested2.module import foo3!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('namespace package from import', () => { - const code = ` -// @filename: nested/module.py -//// def foo(): pass - -// @filename: test1.py -//// from nested.module import foo -//// -//// [|/*src*/foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from nested.module import foo!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('namespace package with submodule from import', () => { - const code = ` -// @filename: nested/module.py -//// def foo(): pass - -// @filename: test1.py -//// from nested import module -//// -//// [|/*src*/module.foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from nested import module!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('multi nested namespace package with submodule from import', () => { - const code = ` -// @filename: nested/nested2/nested3/module.py -//// def foo(): pass - -// @filename: test1.py -//// from nested.nested2.nested3 import module -//// -//// [|/*src*/module.foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from nested.nested2.nested3 import module!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('multi nested namespace package with __init__ from import', () => { - const code = ` -// @filename: nested/nested2/nested3/__init__.py -//// def foo(): pass - -// @filename: test1.py -//// from nested.nested2.nested3 import foo -//// -//// [|/*src*/foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from nested.nested2.nested3 import foo!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('namespace package with relative path to root - from import', () => { - const code = ` -// @filename: module.py -//// def foo(): pass - -// @filename: test1.py -//// from . import module -//// -//// [|/*src*/module.foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from . import module!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('namespace package with relative path from import', () => { - const code = ` -// @filename: nested/module.py -//// def foo(): pass - -// @filename: test1.py -//// from .nested import module -//// -//// [|/*src*/module.foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from nested import module!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('namespace package import', () => { - const code = ` -// @filename: nested/module.py -//// def foo(): pass - -// @filename: test1.py -//// import nested.module -//// -//// [|/*src*/nested.module.foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"import nested.module!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('__init__ at root', () => { - const code = ` -// @filename: __init__.py -//// def foo(): pass - -// @filename: test1.py -//// from . import foo -//// -//// [|/*src*/foo()|] - -// @filename: test2.py -//// [|/*dest*/{|"r":"from . import foo!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('__init__ at root to nested file', () => { - const code = ` -// @filename: __init__.py -//// def foo(): pass - -// @filename: test1.py -//// from . import foo -//// -//// [|/*src*/foo()|] - -// @filename: nested/test2.py -//// [|/*dest*/{|"r":"from .. import foo!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('move wild card imports', () => { - const code = ` -// @filename: module.py -//// def foo(): pass -//// __all__ = [ 'foo' ] - -// @filename: test1.py -//// from module import * -//// -//// [|/*src*/foo()|] - -// @filename: nested/test2.py -//// [|/*dest*/{|"r":"from module import foo!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('move wild card imports from __init__', () => { - const code = ` -// @filename: nested/__init__.py -//// def foo(): pass -//// __all__ = [ 'foo' ] - -// @filename: test1.py -//// from nested import * -//// -//// [|/*src*/foo()|] - -// @filename: nested/test2.py -//// [|/*dest*/{|"r":"from nested import foo!n!!n!!n!"|}|] - `; - - testImportMove(code); -}); - -test('merge with existing import', () => { - const code = ` -// @filename: test1.py -//// val1 = 1 -//// val2 = 2 -//// [|/*src*/a = val2|] - -// @filename: test2.py -//// from test1 import val1[|/*dest*/{|"r":", val2"|}|] - `; - - testImportMove(code); -}); - -test('merge multiple symbols with existing import', () => { - const code = ` -// @filename: test1.py -//// val1 = 1 -//// val2 = 2 -//// val3 = 3 -//// [|/*src*/a = val2 -//// b = val3|] - -// @filename: test2.py -//// from test1 import val1[|/*dest*/{|"r":", val2, val3"|}|] - `; - - testImportMove(code); -}); - -test('move with existing import with wild card', () => { - const code = ` -// @filename: test1.py -//// val1 = 1 -//// val2 = 2 -//// [|/*src*/a = val2|] - -// @filename: test2.py -//// from test1 import *[|/*dest*/{|"r":"!n!from test1 import val2"|}|] - `; - - testImportMove(code); -}); - -test('merge multiple symbols with multiple existing import and wildcard', () => { - const code = ` -// @filename: test1.py -//// val1 = 1 -//// val2 = 2 -//// val3 = 3 -//// [|/*src*/a = val2 -//// b = val3|] - -// @filename: test2.py -//// from test1 import * -//// from test1 import val1[|/*dest*/{|"r":", val2, val3"|}|] - `; - - testImportMove(code); -}); - -test('merge multiple symbols with multiple existing import', () => { - const code = ` -// @filename: test1.py -//// val1 = 1 -//// val2 = 2 -//// val3 = 3 -//// [|/*src*/a = val2 -//// b = val3|] - -// @filename: test2.py -//// from test1 import val1[|{|"r":", val3"|}|] -//// from test1 import val2[|/*dest*/|] - `; - - testImportMove(code); -}); - -test('merge multiple symbols with multiple existing import with alias', () => { - const code = ` -// @filename: test1.py -//// val1 = 1 -//// val2 = 2 -//// val3 = 3 -//// [|/*src*/a = val2 -//// b = val3|] - -// @filename: test2.py -//// from test1 import val1[|{|"r":", val2, val3"|}|] -//// from test1 import val2 as v[|/*dest*/|] - `; - - testImportMove(code); -}); - -test('skip with existing import statement', () => { - const code = ` -// @filename: module.py -//// val1 = 1 -//// val2 = 3 - -// @filename: test1.py -//// import module -//// -//// [|/*src*/a = module.val1|] - -// @filename: test2.py -//// import module -//// module.val2[|/*dest*/|] - `; - - testImportMove(code); -}); - -test('skip with existing import statement with alias', () => { - const code = ` -// @filename: module.py -//// val1 = 1 -//// val2 = 3 - -// @filename: test1.py -//// import module as m -//// -//// [|/*src*/a = m.val1|] - -// @filename: test2.py -//// import module as m -//// m.val2[|/*dest*/|] - `; - - testImportMove(code); -}); - -test('merge with existing import statement with alias', () => { - const code = ` -// @filename: module.py -//// val1 = 1 -//// val2 = 3 - -// @filename: test1.py -//// import module -//// -//// [|/*src*/a = module.val1|] - -// @filename: test2.py -//// import module as m[|{|"r":"!n!import module"|}|] -//// m.val2[|/*dest*/|] - `; - - testImportMove(code); -}); - -test('merge with existing import statement with alias 2', () => { - const code = ` -// @filename: module.py -//// val1 = 1 -//// val2 = 3 - -// @filename: test1.py -//// import module as m -//// -//// [|/*src*/a = m.val1|] - -// @filename: test2.py -//// import module[|{|"r":"!n!import module as m"|}|] -//// module.val2[|/*dest*/|] - `; - - testImportMove(code); -}); - -test('mixed with submodule and import - duplicated import', () => { - const code = ` -// @filename: module.py -//// val1 = 1 -//// val2 = 3 - -// @filename: test1.py -//// import module -//// -//// [|/*src*/a = module.val1|] - -// @filename: test2.py -//// [|{|"r":"import module!n!"|}|]from . import module -//// module.val2[|/*dest*/|] - `; - - testImportMove(code); -}); - -test('mixed with submodule and import - duplicated import 2', () => { - const code = ` -// @filename: module.py -//// val1 = 1 -//// val2 = 3 - -// @filename: test1.py -//// from . import module -//// -//// [|/*src*/a = module.val1|] - -// @filename: test2.py -//// [|{|"r":"from . import module!n!"|}|]import module -//// module.val2[|/*dest*/|] - `; - - testImportMove(code); -}); - -test('multiple mixed import statements', () => { - const code = ` -// @filename: test1.py -//// import typing -//// from os import path -//// import json.encoder as j -//// import json.decoder -//// -//// [|/*src*/def foo(p1: str, p2: typing.Any, p3: typing.Union[int, str]): -//// b = path.join(p1) -//// e = j.JSONEncoder(skipkeys=True) -//// d = json.decoder.JSONDecoder()|] -// @filename: test2.py -//// [|{|"r":"import json.decoder!n!import json.encoder as j!n!"|}|]import os[|{|"r":"!n!from os import path"|}|] -//// import sys -//// import typing -//// from json import decoder[|/*dest*/|] - `; - testImportMove(code); -}); - -test('multiple mixed import statements with merge', () => { - const code = ` -// @filename: test1.py -//// import typing -//// from os import path -//// from json import encoder as j -//// from json import decoder -//// -//// [|/*src*/def foo(p1: str, p2: typing.Any, p3: typing.Union[int, str]): -//// b = path.join(p1) -//// e = j.JSONEncoder(skipkeys=True) -//// d = decoder.JSONDecoder()|] -// @filename: test2.py -//// import sys -//// import typing -//// from os import abort[|{|"r":", path"|}|] -//// from json import decoder[|{|"r":", encoder as j"|}|][|/*dest*/|] - `; - testImportMove(code); -}); - -test('move into the same file import statement', () => { - const code = ` -// @filename: test1.py -//// import test2 -//// -//// [|/*src*/test2.foo()|] - -// @filename: test2.py -//// [|{|"r":"import test2!n!!n!!n!"|}|]def foo(): pass -//// [|/*dest*/|] - `; - testImportMove(code); -}); - -test('move into the same file from import statement', () => { - const code = ` -// @filename: test1.py -//// from test2 import foo -//// -//// [|/*src*/foo()|] - -// @filename: test2.py -//// def foo(): pass -//// [|/*dest*/|] - `; - testImportMove(code); -}); - -test('move into the same file from import statement with alias', () => { - const code = ` -// @filename: test1.py -//// from test2 import foo as f -//// -//// [|/*src*/f()|] - -// @filename: test2.py -//// [|{|"r":"from test2 import foo as f!n!!n!!n!"|}|]def foo(): pass -//// [|/*dest*/|] - `; - testImportMove(code); -}); - -test('move into the same file from import statement for __init__', () => { - const code = ` -// @filename: test1.py -//// from nested import foo -//// -//// [|/*src*/foo()|] - -// @filename: nested/__init__.py -//// def foo(): pass -//// [|/*dest*/|] - `; - testImportMove(code); -}); - -test('move into the same file from import statement for __init__ with alias', () => { - const code = ` -// @filename: test1.py -//// from nested import foo as f -//// -//// [|/*src*/f()|] - -// @filename: nested/__init__.py -//// [|{|"r":"from nested import foo as f!n!!n!!n!"|}|]def foo(): pass -//// [|/*dest*/|] - `; - testImportMove(code); -}); - -test('move into the same file from import statement for submodule', () => { - const code = ` -// @filename: test1.py -//// from nested import module -//// -//// [|/*src*/module.foo()|] - -// @filename: nested/__init__.py -//// [|{|"r":"from nested import module!n!!n!!n!"|}|][|/*dest*/|] - -// @filename: nested/module.py -//// def foo(): pass - `; - testImportMove(code); -}); - -test('use relative import format', () => { - const code = ` -// @filename: test1.py -//// from nested import module -//// -//// [|/*src*/module.foo()|] - -// @filename: nested/__init__.py -//// [|{|"r":"from . import module!n!!n!!n!"|}|][|/*dest*/|] - -// @filename: nested/module.py -//// def foo(): pass - `; - testImportMove(code, ImportFormat.Relative); -}); - -test('use relative import format - textEditTracker', () => { - const code = ` -// @filename: test1.py -//// from nested import module -//// -//// [|/*src*/module.foo()|] - -// @filename: nested/__init__.py -//// [|{|"r":"from . import module!n!!n!!n!"|}|][|/*dest*/|] - -// @filename: nested/module.py -//// def foo(): pass - `; - testImportMoveWithTracker(code, ImportFormat.Relative); -}); - -test('dont include token not contained in the span', () => { - const code = ` -// @filename: test1.py -//// import random -//// -//// [|/*src*/answer_word = random.choice(["a","b","c","d"]) -//// |]guess_word = "c" - -// @filename: nested/__init__.py -//// [|{|"r":"import random!n!!n!!n!"|}|][|/*dest*/|] - `; - testImportMove(code, ImportFormat.Absolute); -}); - -test('multiple ranges', () => { - const code = ` -// @filename: test1.py -//// class A: -//// pass -//// -//// class B: -//// pass -//// -//// class N: -//// pass -//// -//// a = [|/*src*/A()|] -//// n = N() -//// b = [|B()|] - -// @filename: nested/__init__.py -//// [|{|"r":"from test1 import A, B!n!!n!!n!"|}|][|/*dest*/|] - `; - testImportMove(code, ImportFormat.Absolute); -}); - -test('adding decl manually', () => { - const code = ` -// @filename: test1.py -//// class A: -//// pass -//// -//// a = [|/*src*/A|]() - -// @filename: test2.py -//// [|{|"r":"from test1 import A!n!!n!!n!"|}|][|/*dest*/|] - `; - - const state = parseAndGetTestState(code).state; - const src = state.getMarkerByName('src'); - const dest = state.getMarkerByName('dest'); - - const parseResults = state.workspace.service.test_program.getBoundSourceFile(src.fileName)!.getParseResults()!; - const node = findNodeByOffset(parseResults.parseTree, src.position) as NameNode; - const decl = state.workspace.service.test_program.evaluator?.getDeclarationsForNameNode(node)![0]; - - const importAdder = new ImportAdder(state.configOptions, state.importResolver, state.program.evaluator!); - const importData = { containsUnreferenceableSymbols: false, declarations: new Map() }; - importAdder.addDeclaration(decl!, node, importData); - - const edits = importAdder.applyImports( - importData, - dest.fileName, - state.program.getBoundSourceFile(dest.fileName)!.getParseResults()!, - dest.position, - ImportFormat.Absolute, - CancellationToken.None - ); - - verifyEdits(edits, state); -}); - -test('adding import info manually', () => { - const code = ` -// @filename: test1.py -//// class [|/*src*/A|]: -//// pass - -// @filename: test2.py -//// [|{|"r":"from test1 import A!n!!n!!n!"|}|][|/*dest*/|] - `; - - const state = parseAndGetTestState(code).state; - const src = state.getMarkerByName('src'); - const dest = state.getMarkerByName('dest'); - - const importAdder = new ImportAdder(state.configOptions, state.importResolver, state.program.evaluator!); - const importData = { containsUnreferenceableSymbols: false, declarations: new Map() }; - importAdder.addImportInfo({ filePath: src.fileName, nameInfo: { name: 'A' } }, importData); - - const edits = importAdder.applyImports( - importData, - dest.fileName, - state.program.getBoundSourceFile(dest.fileName)!.getParseResults()!, - dest.position, - ImportFormat.Absolute, - CancellationToken.None - ); - - verifyEdits(edits, state); -}); - -function testImportMoveWithTracker(code: string, importFormat = ImportFormat.Absolute) { - const state = parseAndGetTestState(code).state; - - const src = state.getRangeByMarkerName('src')!; - const dest = state.getMarkerByName('dest'); - - const importMover = new ImportAdder(state.configOptions, state.importResolver, state.program.evaluator!); - const importData = importMover.collectImportsForSymbolsUsed( - state.program.getBoundSourceFile(src.fileName)!.getParseResults()!, - TextRange.fromBounds(src.pos, src.end), - CancellationToken.None - ); - - const tracker = new TextEditTracker(); - importMover.applyImportsTo( - importData, - state.program.getBoundSourceFile(dest.fileName)!.getParseResults()!, - importFormat, - tracker, - CancellationToken.None - ); - - verifyEdits(tracker.getEdits(CancellationToken.None), state); -} - -function testImportMove(code: string, importFormat = ImportFormat.Absolute) { - const state = parseAndGetTestState(code).state; - - const src = state.getRangeByMarkerName('src')!; - const dest = state.getMarkerByName('dest'); - - const ranges = state - .getRanges() - .filter((r) => r.fileName === src.fileName) - .map((r) => TextRange.fromBounds(r.pos, r.end)); - - const importMover = new ImportAdder(state.configOptions, state.importResolver, state.program.evaluator!); - const importData = importMover.collectImportsForSymbolsUsed( - state.program.getBoundSourceFile(src.fileName)!.getParseResults()!, - ranges.length === 1 ? ranges[0] : ranges, - CancellationToken.None - ); - - const edits = importMover.applyImports( - importData, - dest.fileName, - state.program.getBoundSourceFile(dest.fileName)!.getParseResults()!, - dest.position, - importFormat, - CancellationToken.None - ); - - verifyEdits(edits, state); -} - -function verifyEdits(edits: TextEditAction[], state: TestState) { - assert(edits); - - const filePath = state.getMarkerByName('dest').fileName; - const ranges = state.getRanges().filter((r) => !!r.marker?.data); - assert.strictEqual( - edits.length, - ranges.length, - `${edits.map((e) => convertFileEditActionToString({ filePath, ...e })).join('|')} vs ${ranges - .map((r) => convertRangeToFileEditAction(state, r)) - .map((e) => convertFileEditActionToString(e)) - .join('|')}` - ); - - for (const edit of edits) { - assert( - ranges.some((r) => { - const data = r.marker!.data as { r: string }; - const expectedText = data.r; - const expectedRange = state.convertPositionRange(r); - return ( - rangesAreEqual(expectedRange, edit.range) && - expectedText.replace(/!n!/g, '\n') === edit.replacementText - ); - }), - `can't find ${convertFileEditActionToString({ filePath, ...edit })} in ${ranges - .map((r) => convertRangeToFileEditAction(state, r)) - .map((e) => convertFileEditActionToString(e)) - .join('|')}` - ); - } -} diff --git a/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts b/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts index f95c621a8..cdfa38e9b 100644 --- a/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts +++ b/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts @@ -7,7 +7,7 @@ */ import * as assert from 'assert'; -import { TextDocumentEdit } from 'vscode-languageserver-types'; +import { TextDocumentEdit, WorkspaceEdit } from 'vscode-languageserver-types'; import { CancellationToken } from 'vscode-languageserver'; import { IPythonMode } from '../analyzer/sourceFile'; @@ -17,6 +17,7 @@ import { AnalyzerServiceExecutor } from '../languageService/analyzerServiceExecu import { TestLanguageService } from './harness/fourslash/testLanguageService'; import { TestState, parseAndGetTestState } from './harness/fourslash/testState'; import { verifyWorkspaceEdit } from './harness/fourslash/workspaceEditTestUtils'; +import { AnalyzerService } from '../analyzer/service'; test('test applyWorkspaceEdits changes', async () => { const code = ` @@ -29,7 +30,7 @@ test('test applyWorkspaceEdits changes', async () => { const range = state.getRangeByMarkerName('marker')!; const fileChanged = new Set(); - applyWorkspaceEdit( + applyWorkspaceEditToService( cloned, { changes: { @@ -57,9 +58,9 @@ test('test edit mode for workspace', async () => { const state = parseAndGetTestState(code).state; const range = state.getRangeByMarkerName('marker')!; const addedFilePath = combinePaths(getDirectoryPath(range.fileName), 'test2.py'); - const edits = await state.workspace.service.useEditMode(async () => { + const edits = await state.workspace.service.runEditMode(async () => { const fileChanged = new Set(); - applyWorkspaceEdit( + applyWorkspaceEditToService( state.workspace.service, { documentChanges: [ @@ -97,7 +98,7 @@ test('test edit mode for workspace', async () => { realFilePath: addedFilePath, }); - applyWorkspaceEdit( + applyWorkspaceEditToService( state.workspace.service, { documentChanges: [ @@ -118,7 +119,7 @@ test('test edit mode for workspace', async () => { fileChanged ); - applyWorkspaceEdit( + applyWorkspaceEditToService( state.workspace.service, { documentChanges: [ @@ -177,7 +178,7 @@ test('test applyWorkspaceEdits documentChanges', async () => { const range = state.getRangeByMarkerName('marker')!; const fileChanged = new Set(); - applyWorkspaceEdit( + applyWorkspaceEditToService( cloned, { documentChanges: [ @@ -216,7 +217,7 @@ test('test generateWorkspaceEdits', async () => { const range1 = state.getRangeByMarkerName('marker1')!; const fileChanged = new Set(); - applyWorkspaceEdit( + applyWorkspaceEditToService( cloned, { changes: { @@ -231,7 +232,7 @@ test('test generateWorkspaceEdits', async () => { fileChanged ); - applyWorkspaceEdit( + applyWorkspaceEditToService( cloned, { documentChanges: [ @@ -253,7 +254,7 @@ test('test generateWorkspaceEdits', async () => { ); const range2 = state.getRangeByMarkerName('marker2')!; - applyWorkspaceEdit( + applyWorkspaceEditToService( cloned, { documentChanges: [ @@ -274,7 +275,7 @@ test('test generateWorkspaceEdits', async () => { fileChanged ); - applyWorkspaceEdit( + applyWorkspaceEditToService( cloned, { changes: { @@ -313,6 +314,12 @@ test('test generateWorkspaceEdits', async () => { ); }); +function applyWorkspaceEditToService(service: AnalyzerService, edits: WorkspaceEdit, filesChanged: Set) { + const view = service.backgroundAnalysisProgram.program; + const mutator = service; + applyWorkspaceEdit(view, mutator, edits, filesChanged); +} + async function getClonedService(state: TestState) { return await AnalyzerServiceExecutor.cloneService( new TestLanguageService(state.workspace, state.console, state.workspace.service.fs), diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index e7aca81af..0e3c8663a 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -20,7 +20,7 @@ "shx": "^0.3.4", "ts-loader": "^9.4.2", "typescript": "~4.4.4", - "webpack": "^5.81.0", + "webpack": "^5.82.0", "webpack-cli": "^4.10.0" }, "engines": { @@ -2308,9 +2308,9 @@ } }, "node_modules/webpack": { - "version": "5.81.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", - "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", + "version": "5.82.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz", + "integrity": "sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -4134,9 +4134,9 @@ } }, "webpack": { - "version": "5.81.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", - "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", + "version": "5.82.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz", + "integrity": "sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index aa874b93c..2e4892ada 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -30,7 +30,7 @@ "shx": "^0.3.4", "ts-loader": "^9.4.2", "typescript": "~4.4.4", - "webpack": "^5.81.0", + "webpack": "^5.82.0", "webpack-cli": "^4.10.0" }, "files": [ diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 6eacd83cd..2292c7b63 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -24,7 +24,7 @@ "ts-loader": "^9.4.2", "typescript": "~4.4.4", "vsce": "^2.7.0", - "webpack": "^5.81.0", + "webpack": "^5.82.0", "webpack-cli": "^4.10.0" }, "engines": { @@ -3105,9 +3105,9 @@ } }, "node_modules/webpack": { - "version": "5.81.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", - "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", + "version": "5.82.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz", + "integrity": "sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -5724,9 +5724,9 @@ } }, "webpack": { - "version": "5.81.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", - "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", + "version": "5.82.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz", + "integrity": "sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 084fe37c4..533f3a80d 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -965,7 +965,7 @@ "ts-loader": "^9.4.2", "typescript": "~4.4.4", "vsce": "^2.7.0", - "webpack": "^5.81.0", + "webpack": "^5.82.0", "webpack-cli": "^4.10.0" } } From ef69bb31337ad57e110f11e22eef08b18a864102 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 10 May 2023 07:55:35 -0700 Subject: [PATCH 141/525] Fixed bug that theoretically results in incorrect bidirectional type inference in certain cases involving assignment statements. --- .../src/analyzer/typeEvaluator.ts | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 76219541b..8a8aec3fb 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1146,6 +1146,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions writeTypeCache(node, typeResult, flags, inferenceContext, /* allowSpeculativeCaching */ true); + // If there was an expected type, make sure that the result type is compatible. if ( inferenceContext && !isAnyOrUnknown(inferenceContext.expectedType) && @@ -3051,7 +3052,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions destType = declaredType; } else { // Constrain the resulting type to match the declared type. - destType = narrowTypeBasedOnAssignment(declaredType, type); + destType = narrowTypeBasedOnAssignment(nameNode, declaredType, type); } } else { // If this is a member name (within a class scope) and the member name @@ -3809,7 +3810,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // is a enum because the annotated type in an enum doesn't reflect // the type of the symbol. if (!isClassInstance(type) || !ClassType.isEnumClass(type)) { - type = narrowTypeBasedOnAssignment(annotationType, type); + type = narrowTypeBasedOnAssignment(target, annotationType, type); } } } @@ -10538,14 +10539,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions unknownIfNotFound = false; } - let specializedReturnType = addConditionToType( - applySolvedTypeVars(returnType, typeVarContext, { - unknownIfNotFound, - useUnknownOverDefault: skipUnknownArgCheck, - eliminateUnsolvedInUnions, - }), - typeCondition - ); + let specializedReturnType = applySolvedTypeVars(returnType, typeVarContext, { + unknownIfNotFound, + useUnknownOverDefault: skipUnknownArgCheck, + eliminateUnsolvedInUnions, + }); + specializedReturnType = addConditionToType(specializedReturnType, typeCondition); // If the final return type is an unpacked tuple, turn it into a normal (unpacked) tuple. if (isUnpackedClass(specializedReturnType)) { @@ -11994,12 +11993,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions (ClassType.isBuiltIn(inferenceContext.expectedType, 'dict') || ClassType.isBuiltIn(inferenceContext.expectedType, 'MutableMapping')); - const specializedKeyType = inferTypeArgFromExpectedType( + const specializedKeyType = inferTypeArgFromExpectedEntryType( makeInferenceContext(expectedKeyType, inferenceContext?.typeVarContext), keyTypes.map((result) => result.type), /* isNarrowable */ false ); - const specializedValueType = inferTypeArgFromExpectedType( + const specializedValueType = inferTypeArgFromExpectedEntryType( makeInferenceContext(expectedValueType, inferenceContext?.typeVarContext), valueTypes.map((result) => result.type), !isValueTypeInvariant @@ -12417,7 +12416,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const isTypeInvariant = isClassInstance(inferenceContext.expectedType) && ClassType.isBuiltIn(inferenceContext.expectedType, builtInClassName); - const specializedEntryType = inferTypeArgFromExpectedType( + const specializedEntryType = inferTypeArgFromExpectedEntryType( makeInferenceContext(expectedEntryType, inferenceContext?.typeVarContext), entryTypes, !isTypeInvariant @@ -12531,7 +12530,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - function inferTypeArgFromExpectedType( + function inferTypeArgFromExpectedEntryType( inferenceContext: InferenceContext, entryTypes: Type[], isNarrowable: boolean @@ -14319,7 +14318,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (assignType(declaredType, srcType)) { // Narrow the resulting type if possible. if (!isAnyOrUnknown(srcType)) { - srcType = narrowTypeBasedOnAssignment(declaredType, srcType); + srcType = narrowTypeBasedOnAssignment(node, declaredType, srcType); } } } @@ -23614,6 +23613,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // that the caller has already verified that the assignedType is assignable // to the declaredType. function replaceTypeArgsWithAny( + node: ExpressionNode, declaredType: ClassType, assignedType: ClassType, recursionCount = 0 @@ -23643,7 +23643,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ), declaredType, typeVarContext, - [] + ParseTreeUtils.getTypeVarScopesForNode(node) ); let replacedTypeArg = false; @@ -23658,6 +23658,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } else if (isClassInstance(expectedTypeArgType) && isClassInstance(typeArg)) { // Recursively replace Any in the type argument. const recursiveReplacement = replaceTypeArgsWithAny( + node, expectedTypeArgType, typeArg, recursionCount @@ -23682,7 +23683,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // When a value is assigned to a variable with a declared type, // we may be able to narrow the type based on the assignment. - function narrowTypeBasedOnAssignment(declaredType: Type, assignedType: Type): Type { + function narrowTypeBasedOnAssignment(node: ExpressionNode, declaredType: Type, assignedType: Type): Type { const narrowedType = mapSubtypes(assignedType, (assignedSubtype) => { const narrowedSubtype = mapSubtypes(declaredType, (declaredSubtype) => { // We can't narrow "Any". @@ -23694,12 +23695,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If the source is generic and has unspecified type arguments, // see if we can determine then based on the declared type. if (isInstantiableClass(declaredSubtype) && isInstantiableClass(assignedSubtype)) { - const result = replaceTypeArgsWithAny(declaredSubtype, assignedSubtype); + const result = replaceTypeArgsWithAny(node, declaredSubtype, assignedSubtype); if (result) { assignedSubtype = result; } } else if (isClassInstance(declaredSubtype) && isClassInstance(assignedSubtype)) { const result = replaceTypeArgsWithAny( + node, ClassType.cloneAsInstantiable(declaredSubtype), ClassType.cloneAsInstantiable(assignedSubtype) ); From afce8cc9c683de21fd9c8df3918062736860eaa0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 10 May 2023 07:59:08 -0700 Subject: [PATCH 142/525] Fixed bug that could theoretically result in incorrect type evaluation in certain cases where the arguments in a call expression require multiple evaluation passes to solve dependent type variables. --- .../src/analyzer/typeEvaluator.ts | 64 +++++++++++++++---- .../src/analyzer/typeEvaluatorTypes.ts | 1 + 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 8a8aec3fb..b7059e3b1 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10391,7 +10391,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If we skipped a overload arg during the first pass, // add another pass to ensure that we handle all of the // type variables. - if (i === 0 && argResult.skippedOverloadArg) { + if (i === 0 && (argResult.skippedOverloadArg || argResult.skippedBareTypeVarExpectedType)) { passCount++; } }); @@ -10901,17 +10901,32 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let isTypeIncomplete = !!typeResult?.isIncomplete; let isCompatible = true; const functionName = typeResult?.type.details.name; + let skippedBareTypeVarExpectedType = false; if (argParam.argument.valueExpression) { let expectedType: Type | undefined; - if ( - !options.skipBareTypeVarExpectedType || - !isTypeVar(argParam.paramType) || - argParam.paramType.scopeId !== typeResult?.type.details.typeVarScopeId - ) { - expectedType = applySolvedTypeVars(argParam.paramType, typeVarContext, { - useNarrowBoundOnly: !!options.useNarrowBoundOnly, - }); + + const isBareTypeVarExpectedType = + isTypeVar(argParam.paramType) && argParam.paramType.scopeId === typeResult?.type.details.typeVarScopeId; + + if (!options.skipBareTypeVarExpectedType || !isBareTypeVarExpectedType) { + expectedType = argParam.paramType; + + // If the parameter type is a function with a ParamSpec, don't apply + // the solved TypeVars if the typeVarContext has more than one signature. + // This will expand the ParamSpec into an overload, which will cause problems. + const skipApplySolvedTypeVars = + isFunction(argParam.paramType) && + !!argParam.paramType.details.paramSpec && + typeVarContext.getSignatureContexts().length > 1; + + if (!skipApplySolvedTypeVars) { + expectedType = applySolvedTypeVars(expectedType, typeVarContext, { + useNarrowBoundOnly: !!options.useNarrowBoundOnly, + }); + } + } else { + skippedBareTypeVarExpectedType = true; } // If the expected type is unknown, don't use an expected type. Instead, @@ -11023,7 +11038,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // an overloaded callback protocol. if (options.skipOverloadArg) { if (isOverloadedFunction(argType)) { - return { isCompatible, argType, isTypeIncomplete, skippedOverloadArg: true, condition }; + return { + isCompatible, + argType, + isTypeIncomplete, + skippedOverloadArg: true, + skippedBareTypeVarExpectedType, + condition, + }; } const concreteParamType = makeTopLevelTypeVarsConcrete(argParam.paramType); @@ -11031,7 +11053,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isInstantiableClass(argType)) { const constructor = createFunctionFromConstructor(evaluatorInterface, argType); if (constructor && isOverloadedFunction(constructor)) { - return { isCompatible, argType, isTypeIncomplete, skippedOverloadArg: true, condition }; + return { + isCompatible, + argType, + isTypeIncomplete, + skippedOverloadArg: true, + skippedBareTypeVarExpectedType, + condition, + }; } } @@ -11040,7 +11069,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (callMember) { const memberType = getTypeOfMember(callMember); if (isOverloadedFunction(memberType)) { - return { isCompatible, argType, isTypeIncomplete, skippedOverloadArg: true, condition }; + return { + isCompatible, + argType, + isTypeIncomplete, + skippedOverloadArg: true, + skippedBareTypeVarExpectedType, + condition, + }; } } } @@ -11107,7 +11143,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } - return { isCompatible: false, argType, isTypeIncomplete, condition }; + return { isCompatible: false, argType, isTypeIncomplete, skippedBareTypeVarExpectedType, condition }; } if (!options.skipUnknownArgCheck) { @@ -11186,7 +11222,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - return { isCompatible, argType, isTypeIncomplete, condition }; + return { isCompatible, argType, isTypeIncomplete, skippedBareTypeVarExpectedType, condition }; } function createTypeVarType(errorNode: ExpressionNode, argList: FunctionArgument[]): Type | undefined { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 4e133ffa0..16de14a46 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -303,6 +303,7 @@ export interface ArgResult { isTypeIncomplete?: boolean | undefined; condition?: TypeCondition[]; skippedOverloadArg?: boolean; + skippedBareTypeVarExpectedType?: boolean; } export interface CallResult { From 7888d1c4ef35a14803389671043c904fc9cb51a9 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 10 May 2023 15:48:02 -0700 Subject: [PATCH 143/525] Changed type inference logic that infers the type of the `value` attribute in an enum. If the enum class has a custom metaclass (one that is not part of the stdlib), pyright now assumes that the custom metaclass may perform some runtime magic that modifies the `value`. This occurs, for example, in django's `TextChoices` class. This addresses https://github.com/microsoft/pyright/issues/5092. --- .../pyright-internal/src/analyzer/enums.ts | 9 +++++++++ .../src/tests/samples/enums1.py | 19 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index 2fc94d1d0..7ff48fb94 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -394,6 +394,15 @@ export function getTypeOfEnumMember( } if (memberName === 'value' || memberName === '_value_') { + // If the enum class has a custom metaclass, it may implement some + // "magic" that computes different values for the "value" attribute. + // This occurs, for example, in the django TextChoices class. If we + // detect a custom metaclass, we'll assume the value is Any. + const metaclass = classType.details.effectiveMetaclass; + if (metaclass && isClass(metaclass) && !ClassType.isBuiltIn(metaclass)) { + return { type: AnyType.create(), isIncomplete }; + } + if (literalValue) { assert(literalValue instanceof EnumLiteral); return { type: literalValue.itemType, isIncomplete }; diff --git a/packages/pyright-internal/src/tests/samples/enums1.py b/packages/pyright-internal/src/tests/samples/enums1.py index 1919f437c..e56e27b8c 100644 --- a/packages/pyright-internal/src/tests/samples/enums1.py +++ b/packages/pyright-internal/src/tests/samples/enums1.py @@ -1,6 +1,6 @@ # This sample tests the type checker's handling of Enum. -from enum import Enum, IntEnum +from enum import Enum, EnumMeta, IntEnum TestEnum1 = Enum("TestEnum1", " A B, , ,C , \t D\t") @@ -141,3 +141,20 @@ def __new__(cls, value: str, other1: int, other2: int): reveal_type(te9_A._value_, expected_text="Any") reveal_type(te9_A.name, expected_text="Literal['A']") reveal_type(te9_A._name_, expected_text="Literal['A']") + + +class CustomEnumMeta1(EnumMeta): + pass + + +class TestEnum10(Enum, metaclass=CustomEnumMeta1): + A = 1 + B = 2 + + +te10_A = TestEnum10.A +reveal_type(te10_A, expected_text="Literal[TestEnum10.A]") +reveal_type(te10_A.value, expected_text="Any") +reveal_type(te9_A._value_, expected_text="Any") +reveal_type(te9_A.name, expected_text="Literal['A']") +reveal_type(te9_A._name_, expected_text="Literal['A']") From 43a6a8fae55c5b40ee040608271f9420a353d1a5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 10 May 2023 19:37:17 -0700 Subject: [PATCH 144/525] Fixed a bug that led to incorrect import resolution in cases where multiple import resolution paths have partial overlapping paths and some include namespace packages and others do not. This addresses https://github.com/microsoft/pyright/issues/5089. --- .../src/analyzer/importResolver.ts | 78 +++++++++------- .../src/analyzer/importResult.ts | 5 +- .../src/tests/importResolver.test.ts | 90 ++++++++++++++++++- 3 files changed, 139 insertions(+), 34 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 9d3734bde..140cab78c 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -1578,41 +1578,38 @@ export class ImportResolver { } if (newImport.isImportFound) { - // Prefer found over not found. - if (!bestImportSoFar.isImportFound) { - return newImport; - } - - // Prefer traditional over namespace imports. - if (bestImportSoFar.isNamespacePackage && !newImport.isNamespacePackage) { - return newImport; + // Prefer traditional packages over namespace packages. + const soFarIndex = bestImportSoFar.resolvedPaths.findIndex((path) => !!path); + const newIndex = newImport.resolvedPaths.findIndex((path) => !!path); + if (soFarIndex !== newIndex) { + if (soFarIndex < 0) { + return newImport; + } else if (newIndex < 0) { + return bestImportSoFar; + } + return soFarIndex < newIndex ? bestImportSoFar : newImport; } - // Prefer local packages. - if (bestImportSoFar.importType === ImportType.Local && !bestImportSoFar.isNamespacePackage) { - return bestImportSoFar; - } - if (newImport.importType === ImportType.Local && !newImport.isNamespacePackage) { + // Prefer found over not found. + if (!bestImportSoFar.isImportFound) { return newImport; } // If both are namespace imports, select the one that resolves the symbols. - if ( - bestImportSoFar.isNamespacePackage && - newImport.isNamespacePackage && - moduleDescriptor.importedSymbols - ) { - if (!this._isNamespacePackageResolved(moduleDescriptor, bestImportSoFar.implicitImports)) { - if (this._isNamespacePackageResolved(moduleDescriptor, newImport.implicitImports)) { - return newImport; - } + if (bestImportSoFar.isNamespacePackage && newImport.isNamespacePackage) { + if (moduleDescriptor.importedSymbols) { + if (!this._isNamespacePackageResolved(moduleDescriptor, bestImportSoFar.implicitImports)) { + if (this._isNamespacePackageResolved(moduleDescriptor, newImport.implicitImports)) { + return newImport; + } - // Prefer the namespace package that has an __init__.py(i) file present - // in the final directory over one that does not. - if (bestImportSoFar.isInitFilePresent && !newImport.isInitFilePresent) { - return bestImportSoFar; - } else if (!bestImportSoFar.isInitFilePresent && newImport.isInitFilePresent) { - return newImport; + // Prefer the namespace package that has an __init__.py(i) file present + // in the final directory over one that does not. + if (bestImportSoFar.isInitFilePresent && !newImport.isInitFilePresent) { + return bestImportSoFar; + } else if (!bestImportSoFar.isInitFilePresent && newImport.isInitFilePresent) { + return newImport; + } } } } @@ -1635,10 +1632,27 @@ export class ImportResolver { if (bestImportSoFar.resolvedPaths.length > newImport.resolvedPaths.length) { return newImport; } - } else if (newImport.isPartlyResolved && bestImportSoFar.isNamespacePackage && !newImport.isNamespacePackage) { - // Always prefer a traditional over namespace import even - // if the traditional import is only partly resolved. - return newImport; + } else if (newImport.isPartlyResolved) { + // If the new import is a traditional package but only partly resolves + // the import but the best import so far is a namespace package, we need + // to consider whether the best import so far also resolves the first part + // of the import with a traditional package. Using the example "import a.b.c.d" + // and the symbol ~ to represent a namespace package, consider the following + // cases: + // bestSoFar: a/~b/~c/~d new: a Result: bestSoFar wins + // bestSoFar: ~a/~b/~c/~d new: a Result: new wins + // bestSoFar: a/~b/~c/~d new: a/b Result: new wins + const soFarIndex = bestImportSoFar.resolvedPaths.findIndex((path) => !!path); + const newIndex = newImport.resolvedPaths.findIndex((path) => !!path); + + if (soFarIndex !== newIndex) { + if (soFarIndex < 0) { + return newImport; + } else if (newIndex < 0) { + return bestImportSoFar; + } + return soFarIndex < newIndex ? bestImportSoFar : newImport; + } } return bestImportSoFar; diff --git a/packages/pyright-internal/src/analyzer/importResult.ts b/packages/pyright-internal/src/analyzer/importResult.ts index 93586ca7a..ba0b40ea9 100644 --- a/packages/pyright-internal/src/analyzer/importResult.ts +++ b/packages/pyright-internal/src/analyzer/importResult.ts @@ -39,7 +39,10 @@ export interface ImportResult { isPartlyResolved: boolean; // True if the import refers to a namespace package (a - // folder without an __init__.py(i) file at every level). + // folder without an __init__.py(i) file at the last level). + // To determine if any intermediate level is a namespace + // package, look at the resolvedPaths array. Namespace package + // entries will have an empty string for the resolvedPath. isNamespacePackage: boolean; // True if there is an __init__.py(i) file in the final diff --git a/packages/pyright-internal/src/tests/importResolver.test.ts b/packages/pyright-internal/src/tests/importResolver.test.ts index b31b87b53..941ed934d 100644 --- a/packages/pyright-internal/src/tests/importResolver.test.ts +++ b/packages/pyright-internal/src/tests/importResolver.test.ts @@ -474,7 +474,7 @@ test('import side by side file sub under lib folder', () => { assert(!importResult.isImportFound); }); -test('dont walk up the root', () => { +test("don't walk up the root", () => { const files = [ { path: combinePaths('/', 'file1.py'), @@ -486,6 +486,94 @@ test('dont walk up the root', () => { assert(!importResult.isImportFound); }); +test('nested namespace package 1', () => { + const files = [ + { + path: combinePaths('/', 'packages1', 'a', 'b', 'c', 'd.py'), + content: 'def f(): pass', + }, + { + path: combinePaths('/', 'packages1', 'a', '__init__.py'), + content: '', + }, + { + path: combinePaths('/', 'packages2', 'a', '__init__.py'), + content: '', + }, + ]; + + const importResult = getImportResult(files, ['a', 'b', 'c', 'd'], (config) => { + config.defaultExtraPaths = [combinePaths('/', 'packages1'), combinePaths('/', 'packages2')]; + }); + assert(importResult.isImportFound); +}); + +test('nested namespace package 2', () => { + const files = [ + { + path: combinePaths('/', 'packages1', 'a', 'b', 'c', 'd.py'), + content: 'def f(): pass', + }, + { + path: combinePaths('/', 'packages1', 'a', 'b', 'c', '__init__.py'), + content: '', + }, + { + path: combinePaths('/', 'packages2', 'a', 'b', 'c', '__init__.py'), + content: '', + }, + ]; + + const importResult = getImportResult(files, ['a', 'b', 'c', 'd'], (config) => { + config.defaultExtraPaths = [combinePaths('/', 'packages1'), combinePaths('/', 'packages2')]; + }); + assert(importResult.isImportFound); +}); + +test('nested namespace package 3', () => { + const files = [ + { + path: combinePaths('/', 'packages1', 'a', 'b', 'c', 'd.py'), + content: 'def f(): pass', + }, + { + path: combinePaths('/', 'packages2', 'a', '__init__.py'), + content: '', + }, + ]; + + const importResult = getImportResult(files, ['a', 'b', 'c', 'd'], (config) => { + config.defaultExtraPaths = [combinePaths('/', 'packages1'), combinePaths('/', 'packages2')]; + }); + assert(!importResult.isImportFound); +}); + +test('nested namespace package 4', () => { + const files = [ + { + path: combinePaths('/', 'packages1', 'a', 'b', '__init__.py'), + content: '', + }, + { + path: combinePaths('/', 'packages1', 'a', 'b', 'c.py'), + content: 'def f(): pass', + }, + { + path: combinePaths('/', 'packages2', 'a', '__init__.py'), + content: '', + }, + { + path: combinePaths('/', 'packages2', 'a', 'b', '__init__.py'), + content: '', + }, + ]; + + const importResult = getImportResult(files, ['a', 'b', 'c'], (config) => { + config.defaultExtraPaths = [combinePaths('/', 'packages1'), combinePaths('/', 'packages2')]; + }); + assert(!importResult.isImportFound); +}); + function getImportResult( files: { path: string; content: string }[], nameParts: string[], From 6753a5d30535ba9a5708ff62494f841519fc54ce Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 9 May 2023 19:04:20 -0700 Subject: [PATCH 145/525] Reworked the logic for bidirectional type inference to address several systemic issues with the previous mechanism when nested calls were used. This addresses https://github.com/microsoft/pyright/issues/4973 and https://github.com/microsoft/pyright/issues/5021. --- .../src/analyzer/constraintSolver.ts | 24 ++-- .../src/analyzer/constructors.ts | 10 +- .../src/analyzer/typeEvaluator.ts | 116 ++++++---------- .../src/analyzer/typeUtils.ts | 129 +++++++++++++----- .../src/analyzer/typeVarContext.ts | 5 + .../pyright-internal/src/analyzer/types.ts | 18 +++ .../src/tests/samples/genericTypes111.py | 52 +++++++ .../src/tests/samples/genericTypes87.py | 2 +- .../src/tests/typeEvaluator2.test.ts | 6 + 9 files changed, 235 insertions(+), 127 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes111.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index ee02a9933..b6a67ae6f 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -855,21 +855,21 @@ export function populateTypeVarContextBasedOnExpectedType( .getPrimarySignature() .getTypeVars() .forEach((entry) => { - const typeArgValue = sameClassTypeVarContext.getPrimarySignature().getTypeVarType(entry.typeVar); + let typeArgValue = sameClassTypeVarContext.getPrimarySignature().getTypeVarType(entry.typeVar); + + if (typeArgValue && liveTypeVarScopes) { + typeArgValue = transformExpectedType(typeArgValue, liveTypeVarScopes); + } if (typeArgValue) { - // Skip this if the type argument is a TypeVar defined by the class scope because - // we're potentially solving for these TypeVars. - if (!isTypeVar(typeArgValue) || typeArgValue.scopeId !== type.details.typeVarScopeId) { - const variance = TypeVarType.getVariance(entry.typeVar); + const variance = TypeVarType.getVariance(entry.typeVar); - typeVarContext.setTypeVarType( - entry.typeVar, - variance === Variance.Covariant ? undefined : typeArgValue, - /* narrowBoundNoLiterals */ undefined, - variance === Variance.Contravariant ? undefined : typeArgValue - ); - } + typeVarContext.setTypeVarType( + entry.typeVar, + variance === Variance.Covariant ? undefined : typeArgValue, + /* narrowBoundNoLiterals */ undefined, + variance === Variance.Contravariant ? undefined : typeArgValue + ); } }); return true; diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index deaa00052..ac5300b25 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -540,15 +540,7 @@ function applyExpectedSubtypeForConstructor( ): Type | undefined { const specializedType = applySolvedTypeVars(ClassType.cloneAsInstance(type), typeVarContext); - if ( - !evaluator.assignType( - expectedSubtype, - specializedType, - /* diag */ undefined, - /* destTypeVarContext */ inferenceContext?.typeVarContext?.clone(), - /* srcTypeVarContext */ undefined - ) - ) { + if (!evaluator.assignType(expectedSubtype, specializedType)) { return undefined; } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index b7059e3b1..0dc4beab4 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -250,6 +250,7 @@ import { specializeForBaseClass, specializeTupleClass, synthesizeTypeVarForSelfCls, + transformExpectedType, transformPossibleRecursiveTypeAlias, validateTypeVarDefault, } from './typeUtils'; @@ -1158,16 +1159,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const diag = new DiagnosticAddendum(); // Make sure the resulting type is assignable to the expected type. - // Use the "solve for scopes" of the associated typeVarContext if - // it is provided. - if ( - !assignType( - inferenceContext.expectedType, - typeResult.type, - diag, - new TypeVarContext(inferenceContext.typeVarContext?.getSolveForScopes()) - ) - ) { + if (!assignType(inferenceContext.expectedType, typeResult.type, diag)) { typeResult.typeErrors = true; typeResult.expectedTypeDiagAddendum = diag; diag.addTextRange(node); @@ -7289,10 +7281,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (!matchingSubtype) { const subtypeResult = useSpeculativeMode(node, () => { - return getTypeOfTupleWithContext( - node, - makeInferenceContext(subtype, inferenceContext?.typeVarContext) - ); + return getTypeOfTupleWithContext(node, makeInferenceContext(subtype)); }); if (subtypeResult && assignType(subtype, subtypeResult.type)) { @@ -7306,10 +7295,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let expectedTypeDiagAddendum: DiagnosticAddendum | undefined; if (effectiveExpectedType) { - const result = getTypeOfTupleWithContext( - node, - makeInferenceContext(effectiveExpectedType, inferenceContext?.typeVarContext) - ); + const result = getTypeOfTupleWithContext(node, makeInferenceContext(effectiveExpectedType)); if (result && !result.typeErrors) { return result; } @@ -10226,13 +10212,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // callee has a declared return type. This will allow us to more closely match // the expected type if possible. - // If the return type is not the same as the expected type but is - // assignable to the expected type, determine which type arguments - // are needed to match the expected type. + // Determine which type arguments are needed to match the expected type. if ( isClassInstance(effectiveReturnType) && isClassInstance(effectiveExpectedType) && - !ClassType.isSameGenericClass(effectiveReturnType, effectiveExpectedType) + !isTypeSame(effectiveReturnType, effectiveExpectedType) ) { const tempTypeVarContext = new TypeVarContext(getTypeVarScopeId(effectiveReturnType)); populateTypeVarContextBasedOnExpectedType( @@ -10543,6 +10527,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions unknownIfNotFound, useUnknownOverDefault: skipUnknownArgCheck, eliminateUnsolvedInUnions, + applyInScopePlaceholders: true, }); specializedReturnType = addConditionToType(specializedReturnType, typeCondition); @@ -10734,6 +10719,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return false; } + const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); + const srcTypeVarContext = new TypeVarContext(paramSpecType.details.typeVarScopeId); let reportedArgError = false; @@ -10812,7 +10799,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const argResult = validateArgType( { paramCategory: ParameterCategory.Simple, - paramType, + paramType: transformExpectedType(paramType, liveTypeVarScopes), requiresTypeVarMatching: false, argument: arg, errorNode: arg.valueExpression || errorNode, @@ -10947,17 +10934,31 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const exprTypeResult = getTypeOfExpression( argParam.argument.valueExpression, flags, - makeInferenceContext(expectedType, typeVarContext, !!typeResult?.isIncomplete) + makeInferenceContext(expectedType, !!typeResult?.isIncomplete) ); argType = exprTypeResult.type; + // If the type includes multiple instances of a generic function + // signature, force the type arguments for the duplicates to have + // unique names. + argType = ensureFunctionSignaturesAreUnique(argType, signatureTracker); + if (exprTypeResult.isIncomplete) { isTypeIncomplete = true; } if (exprTypeResult.typeErrors) { isCompatible = false; + } else if (expectedType && requiresSpecialization(expectedType)) { + // Assign the argument type back to the expected type to assign + // values to any in-scope placeholder type variables. + const typeVarContextClone = typeVarContext.clone(); + if (assignType(expectedType, argType, /* diag */ undefined, typeVarContextClone)) { + typeVarContext.copyFromClone(typeVarContextClone); + } else { + isCompatible = false; + } } expectedTypeDiag = exprTypeResult.expectedTypeDiagAddendum; @@ -10996,11 +10997,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - // If the type includes multiple instances of a generic function - // signature, force the type arguments for the duplicates to have - // unique names. - argType = ensureFunctionSignaturesAreUnique(argType, signatureTracker); - // If we're assigning to a var arg dictionary with a TypeVar type, // strip literals before performing the assignment. This is used in // places like a dict constructor. @@ -11882,10 +11878,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } const subtypeResult = useSpeculativeMode(node, () => { - return getTypeOfDictionaryWithContext( - node, - makeInferenceContext(subtype, inferenceContext?.typeVarContext) - ); + return getTypeOfDictionaryWithContext(node, makeInferenceContext(subtype)); }); if (subtypeResult && assignType(subtype, subtypeResult.type)) { @@ -11906,7 +11899,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions expectedTypeDiagAddendum = new DiagnosticAddendum(); const result = getTypeOfDictionaryWithContext( node, - makeInferenceContext(effectiveExpectedType, inferenceContext?.typeVarContext), + makeInferenceContext(effectiveExpectedType), expectedTypeDiagAddendum ); if (result) { @@ -12014,8 +12007,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions expectedKeyType, expectedValueType, undefined, - expectedDiagAddendum, - inferenceContext + expectedDiagAddendum ) ) { isIncomplete = true; @@ -12030,12 +12022,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ClassType.isBuiltIn(inferenceContext.expectedType, 'MutableMapping')); const specializedKeyType = inferTypeArgFromExpectedEntryType( - makeInferenceContext(expectedKeyType, inferenceContext?.typeVarContext), + makeInferenceContext(expectedKeyType), keyTypes.map((result) => result.type), /* isNarrowable */ false ); const specializedValueType = inferTypeArgFromExpectedEntryType( - makeInferenceContext(expectedValueType, inferenceContext?.typeVarContext), + makeInferenceContext(expectedValueType), valueTypes.map((result) => result.type), !isValueTypeInvariant ); @@ -12125,8 +12117,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions expectedKeyType?: Type, expectedValueType?: Type, expectedTypedDictEntries?: Map, - expectedDiagAddendum?: DiagnosticAddendum, - inferenceContext?: InferenceContext + expectedDiagAddendum?: DiagnosticAddendum ): boolean { let isIncomplete = false; @@ -12139,8 +12130,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions entryNode.keyExpression, /* flags */ undefined, makeInferenceContext( - expectedKeyType ?? (forceStrictInference ? NeverType.createNever() : undefined), - inferenceContext?.typeVarContext + expectedKeyType ?? (forceStrictInference ? NeverType.createNever() : undefined) ) ); @@ -12171,7 +12161,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions valueTypeResult = getTypeOfExpression( entryNode.valueExpression, /* flags */ undefined, - makeInferenceContext(effectiveValueType, inferenceContext?.typeVarContext) + makeInferenceContext(effectiveValueType) ); } else { const effectiveValueType = @@ -12179,7 +12169,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions valueTypeResult = getTypeOfExpression( entryNode.valueExpression, /* flags */ undefined, - makeInferenceContext(effectiveValueType, inferenceContext?.typeVarContext) + makeInferenceContext(effectiveValueType) ); } @@ -12215,7 +12205,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const unexpandedTypeResult = getTypeOfExpression( entryNode.expandExpression, /* flags */ undefined, - makeInferenceContext(expectedType, inferenceContext?.typeVarContext) + makeInferenceContext(expectedType) ); if (unexpandedTypeResult.isIncomplete) { @@ -12334,10 +12324,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } const subtypeResult = useSpeculativeMode(node, () => { - return getTypeOfListOrSetWithContext( - node, - makeInferenceContext(subtype, inferenceContext?.typeVarContext) - ); + return getTypeOfListOrSetWithContext(node, makeInferenceContext(subtype)); }); if (subtypeResult && assignType(subtype, subtypeResult.type)) { @@ -12355,10 +12342,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let expectedTypeDiagAddendum: DiagnosticAddendum | undefined; if (effectiveExpectedType) { - const result = getTypeOfListOrSetWithContext( - node, - makeInferenceContext(effectiveExpectedType, inferenceContext?.typeVarContext) - ); + const result = getTypeOfListOrSetWithContext(node, makeInferenceContext(effectiveExpectedType)); if (result && !result.typeErrors) { return result; } @@ -12426,7 +12410,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions entryTypeResult = getTypeOfExpression( entry, /* flags */ undefined, - makeInferenceContext(expectedEntryType, inferenceContext?.typeVarContext) + makeInferenceContext(expectedEntryType) ); } @@ -12453,7 +12437,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isClassInstance(inferenceContext.expectedType) && ClassType.isBuiltIn(inferenceContext.expectedType, builtInClassName); const specializedEntryType = inferTypeArgFromExpectedEntryType( - makeInferenceContext(expectedEntryType, inferenceContext?.typeVarContext), + makeInferenceContext(expectedEntryType), entryTypes, !isTypeInvariant ); @@ -12576,14 +12560,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return inferenceContext.expectedType; } - const typeVarContext = inferenceContext.typeVarContext?.clone(); + const typeVarContext = new TypeVarContext(); + const expectedType = inferenceContext.expectedType; let isCompatible = true; entryTypes.forEach((entryType) => { - if ( - isCompatible && - !assignType(inferenceContext.expectedType, entryType, /* diag */ undefined, typeVarContext) - ) { + if (isCompatible && !assignType(expectedType, entryType, /* diag */ undefined, typeVarContext)) { isCompatible = false; } }); @@ -12599,11 +12581,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions : stripLiteralValue(combinedTypes); } - if (typeVarContext) { - return applySolvedTypeVars(inferenceContext.expectedType, typeVarContext); - } - - return inferenceContext.expectedType; + return applySolvedTypeVars(inferenceContext.expectedType, typeVarContext, { applyInScopePlaceholders: true }); } function getTypeOfYield(node: YieldNode): TypeResult { @@ -12795,14 +12773,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); } - let expectedReturnType = expectedFunctionType + const expectedReturnType = expectedFunctionType ? getFunctionEffectiveReturnType(expectedFunctionType) : undefined; - if (expectedReturnType && inferenceContext?.typeVarContext) { - expectedReturnType = applySolvedTypeVars(expectedReturnType, inferenceContext.typeVarContext); - } - // If we're speculatively evaluating the lambda, create another speculative // evaluation scope for the return expression and do not allow retention // of the cached types. @@ -12810,7 +12784,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const returnTypeResult = getTypeOfExpression( node.expression, /* flags */ undefined, - makeInferenceContext(expectedReturnType, inferenceContext?.typeVarContext) + makeInferenceContext(expectedReturnType) ); functionType.inferredReturnType = returnTypeResult.type; diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index f4ec7e64b..bf066b0a4 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -195,12 +195,12 @@ export interface ApplyTypeVarOptions { useNarrowBoundOnly?: boolean; eliminateUnsolvedInUnions?: boolean; typeClassType?: Type; + applyInScopePlaceholders?: boolean; } export interface InferenceContext { expectedType: Type; isTypeIncomplete?: boolean; - typeVarContext?: TypeVarContext; } export interface SignatureWithCount { @@ -279,32 +279,22 @@ export function isTypeVarSame(type1: TypeVarType, type2: Type) { return isCompatible; } -export function makeInferenceContext( - expectedType: undefined, - typeVarContext?: TypeVarContext, - isTypeIncomplete?: boolean -): undefined; -export function makeInferenceContext( - expectedType: Type, - typeVarContext?: TypeVarContext, - isTypeIncomplete?: boolean -): InferenceContext; +export function makeInferenceContext(expectedType: undefined, isTypeIncomplete?: boolean): undefined; +export function makeInferenceContext(expectedType: Type, isTypeIncomplete?: boolean): InferenceContext; export function makeInferenceContext( expectedType: Type | undefined, - typeVarContext?: TypeVarContext, isTypeIncomplete?: boolean ): InferenceContext | undefined; export function makeInferenceContext( expectedType: Type | undefined, - typeVarContext?: TypeVarContext, isTypeIncomplete?: boolean ): InferenceContext | undefined { if (!expectedType) { return undefined; } - return { expectedType, isTypeIncomplete, typeVarContext }; + return { expectedType, isTypeIncomplete }; } // Calls a callback for each subtype and combines the results @@ -1030,6 +1020,10 @@ export function applySolvedTypeVars( return type; } + if (options.applyInScopePlaceholders) { + applyInScopePlaceholders(typeVarContext); + } + const transformer = new ApplySolvedTypeVarsTransformer(typeVarContext, options); return transformer.apply(type, 0); } @@ -1069,6 +1063,47 @@ export function applySourceContextTypeVarsToSignature( }); } +// If the TypeVarContext contains any type variables whose types depend on +// in-scope placeholders used for bidirectional type inference, replace those +// with the solved type associated with those in-scope placeholders. +export function applyInScopePlaceholders(typeVarContext: TypeVarContext) { + typeVarContext.doForEachSignatureContext((signature) => { + signature.getTypeVars().forEach((entry) => { + const typeVar = entry.typeVar; + if (!typeVar.isInScopePlaceholder) { + const newNarrowTypeBound = entry.narrowBound + ? applyInScopePlaceholdersToType(entry.narrowBound, signature) + : undefined; + const newNarrowTypeBoundNoLiterals = entry.narrowBoundNoLiterals + ? applyInScopePlaceholdersToType(entry.narrowBoundNoLiterals, signature) + : undefined; + const newWideTypeBound = entry.wideBound + ? applyInScopePlaceholdersToType(entry.wideBound, signature) + : undefined; + + signature.setTypeVarType( + entry.typeVar, + newNarrowTypeBound, + newNarrowTypeBoundNoLiterals, + newWideTypeBound + ); + + if (entry.tupleTypes) { + signature.setTupleTypeVar( + entry.typeVar, + entry.tupleTypes.map((arg) => { + return { + isUnbounded: arg.isUnbounded, + type: applyInScopePlaceholdersToType(arg.type, signature), + }; + }) + ); + } + } + }); + }); +} + // Validates that a default type associated with a TypeVar does not refer to // other TypeVars or ParamSpecs that are out of scope. export function validateTypeVarDefault( @@ -1088,21 +1123,8 @@ export function validateTypeVarDefault( // is used to prepopulate the type var map. This is problematic when the // expected type uses TypeVars that are not part of the context of the // class we are constructing. We'll replace these type variables with dummy -// type variables that are scoped to the appropriate context. -export function transformExpectedType(expectedType: Type, liveTypeVarScopes: TypeVarScopeId[]): Type | undefined { - const isTypeVarLive = (typeVar: TypeVarType) => liveTypeVarScopes.some((scopeId) => typeVar.scopeId === scopeId); - - // Handle "naked TypeVars" (i.e. the expectedType is a TypeVar itself) - // specially. Return undefined to indicate that it's an out-of-scope - // TypeVar. - if (isTypeVar(expectedType)) { - if (isTypeVarLive(expectedType)) { - return expectedType; - } - - return undefined; - } - +// type variables. +export function transformExpectedType(expectedType: Type, liveTypeVarScopes: TypeVarScopeId[]): Type { const transformer = new ExpectedTypeTransformer(liveTypeVarScopes); return transformer.apply(expectedType, 0); } @@ -3770,16 +3792,55 @@ class ExpectedTypeTransformer extends TypeVarTransformer { } override transformTypeVar(typeVar: TypeVarType) { - // If the type variable is unrelated to the scopes we're solving, - // don't transform that type variable. - if (this._isTypeVarLive(typeVar)) { - return typeVar; + if (!this._isTypeVarLive(typeVar)) { + return TypeVarType.cloneAsInScopePlaceholder(typeVar); } - return AnyType.create(); + return typeVar; + } + + override transformParamSpec(paramSpec: TypeVarType): FunctionType | undefined { + if (!this._isTypeVarLive(paramSpec)) { + return convertTypeToParamSpecValue(TypeVarType.cloneAsInScopePlaceholder(paramSpec)); + } + + return undefined; } private _isTypeVarLive(typeVar: TypeVarType) { return this._liveTypeVarScopes.some((scopeId) => typeVar.scopeId === scopeId); } } + +class InScopePlaceholderTransformer extends TypeVarTransformer { + constructor(private _signatureContext: TypeVarSignatureContext) { + super(); + } + + override transformTypeVar(typeVar: TypeVarType) { + if (typeVar.isInScopePlaceholder) { + return this._signatureContext.getTypeVarType(typeVar) ?? UnknownType.create(); + } + + return typeVar; + } + + override transformParamSpec(paramSpec: TypeVarType): FunctionType | undefined { + if (paramSpec.isInScopePlaceholder) { + return this._signatureContext.getParamSpecType(paramSpec); + } + + return undefined; + } +} + +function applyInScopePlaceholdersToType(type: Type, signatureContext: TypeVarSignatureContext): Type { + // Handle the common case where there are no in-scope placeholders. + // No more work is required in this case. + if (!signatureContext.getTypeVars().some((entry) => entry.typeVar.isInScopePlaceholder)) { + return type; + } + + const transformer = new InScopePlaceholderTransformer(signatureContext); + return transformer.apply(type, 0); +} diff --git a/packages/pyright-internal/src/analyzer/typeVarContext.ts b/packages/pyright-internal/src/analyzer/typeVarContext.ts index 3aa473583..2e2d422df 100644 --- a/packages/pyright-internal/src/analyzer/typeVarContext.ts +++ b/packages/pyright-internal/src/analyzer/typeVarContext.ts @@ -14,6 +14,7 @@ import { AnyType, ClassType, FunctionType, + InScopePlaceholderScopeId, isFunction, maxTypeRecursionCount, TupleTypeArgument, @@ -337,6 +338,10 @@ export class TypeVarContext { return scopeId.some((s) => this.hasSolveForScope(s)); } + if (scopeId === InScopePlaceholderScopeId) { + return true; + } + return ( scopeId !== undefined && this._solveForScopes !== undefined && diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 1951bce7e..23f4aeea3 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -85,6 +85,7 @@ export type Type = UnionableType | NeverType | UnionType; export type TypeVarScopeId = string; export const WildcardTypeVarScopeId = '*'; +export const InScopePlaceholderScopeId = '-'; export class EnumLiteral { constructor( @@ -2245,6 +2246,12 @@ export interface TypeVarType extends TypeBase { // May be different from declaredVariance if declared as Auto computedVariance?: Variance; + + // When an out-of-scope TypeVar appears within an expected type during + // bidirectional type inference, it needs to be solved along with the + // in-scope TypeVars. This is done by cloning the out-of-scope TypeVar + // and effectively making it in-scope. + isInScopePlaceholder?: boolean; } export namespace TypeVarType { @@ -2351,6 +2358,17 @@ export namespace TypeVarType { return newInstance; } + export function cloneAsInScopePlaceholder(type: TypeVarType): TypeVarType { + if (type.isInScopePlaceholder) { + return type; + } + + const newInstance = TypeBase.cloneType(type); + newInstance.isInScopePlaceholder = true; + newInstance.scopeId = InScopePlaceholderScopeId; + return newInstance; + } + export function makeNameWithScope(name: string, scopeId: string) { return `${name}.${scopeId}`; } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes111.py b/packages/pyright-internal/src/tests/samples/genericTypes111.py new file mode 100644 index 000000000..46103acc1 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes111.py @@ -0,0 +1,52 @@ +# This sample tests bidirectional type inference with nested constructors. + +from typing import Generic, Iterable, Iterator, TypeVar, overload, Any +from itertools import chain + +_T = TypeVar("_T") + + +class ClassA(Generic[_T]): + @overload + def __init__(self, _: _T): + ... + + @overload + def __init__(self, _: Any): + ... + + def __init__(self, _: Any): + ... + + +class ClassB(Generic[_T]): + def __init__(self, _: ClassA[_T]): + ... + + +v1 = ClassA(0) +v2 = ClassB(v1) +v3 = ClassB(ClassA(0)) + +reveal_type(v1, expected_text="ClassA[int]") +reveal_type(v2, expected_text="ClassB[int]") +reveal_type(v3, expected_text="ClassB[int]") + + +def func1(x: list[_T], /) -> list[_T]: + return x + + +def func2(any: Any): + v1 = list([any]) + v2 = func1(v1) + v3 = func1(list([any])) + + reveal_type(v1, expected_text="list[Any]") + reveal_type(v2, expected_text="list[Any]") + reveal_type(v3, expected_text="list[Any]") + + +def func3(val1: Iterator[Iterable[int]]): + val2 = list(chain.from_iterable(val1)) + reveal_type(val2, expected_text="list[int]") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes87.py b/packages/pyright-internal/src/tests/samples/genericTypes87.py index b9d1b09f6..2810d091a 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes87.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes87.py @@ -17,4 +17,4 @@ def g(x: T, y: T) -> T: return x if random() > 0.5 else y -reveal_type(g(f, g), expected_text="(x: T@f, y: U@f) -> (T@f | U@f)") +reveal_type(g(f, g), expected_text="((x: T@f, y: U@f) -> (T@f | U@f)) | T@f | U@f") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index b0c627af9..30e21d7d0 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1079,6 +1079,12 @@ test('GenericTypes110', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes111', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes111.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 1e8a96f2bd0e6efe2d0e5a4ba73792d10632324d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 11 May 2023 12:21:47 -0700 Subject: [PATCH 146/525] Fixed a bug that led to the incorrect type evaluation of a generic function call if the return result included a type variable that evaluated to `Unknown`. This addresses https://github.com/microsoft/pyright/issues/5097. --- .../src/analyzer/typeUtils.ts | 27 ++++++++++++------- .../src/tests/samples/genericTypes58.py | 10 ++++++- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index bf066b0a4..2be68f026 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3656,16 +3656,25 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { preTransform.scopeId !== undefined && this._typeVarContext.hasSolveForScope(preTransform.scopeId) ) { - // If the TypeVar was not transformed, then it was unsolved, - // and we'll eliminate it. - if (preTransform === postTransform) { - return undefined; - } + const signatureContext = this._typeVarContext.getSignatureContext( + this._activeTypeVarSignatureContextIndex ?? 0 + ); + + const typeVarType = signatureContext.getTypeVarType(preTransform); - // If _unknownIfNotFound is true, the postTransform type will - // be Unknown, which we want to eliminate. - if (isUnknown(postTransform) && this._options.unknownIfNotFound) { - return undefined; + // Did the TypeVar remain unsolved? + if (!typeVarType) { + // If the TypeVar was not transformed, then it was unsolved, + // and we'll eliminate it. + if (preTransform === postTransform) { + return undefined; + } + + // If _unknownIfNotFound is true, the postTransform type will + // be Unknown, which we want to eliminate. + if (isUnknown(postTransform) && this._options.unknownIfNotFound) { + return undefined; + } } } } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes58.py b/packages/pyright-internal/src/tests/samples/genericTypes58.py index c480931ca..98f327a21 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes58.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes58.py @@ -1,5 +1,5 @@ # This sample tests the handling of functions that include TypeVars -# within unions, where the TypeVar may not be matched during constraint +# within unions, where the TypeVar may not be solved during constraint # solving. from typing import ( @@ -50,3 +50,11 @@ def dec1() -> Callable[ @dec1() async def bars() -> None: ... + + +def get_first(l: list): + return next(iter(l), None) + + +val = get_first([]) +reveal_type(val, expected_text="Unknown | None") From 392d45a6a66156acccf07f4b93d54ecb580073fc Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 11 May 2023 14:21:59 -0700 Subject: [PATCH 147/525] Fixed bug that resulted in a bogus "fully-qualified name" of a symbol if used within a file that is located outside of the project and is not imported by a file in the project. --- .../pyright-internal/src/analyzer/sourceFile.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 932cadee2..6fb66443a 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -19,12 +19,13 @@ import { DiagnosticSink, TextRangeDiagnosticSink } from '../common/diagnosticSin import { Extensions } from '../common/extensibility'; import { FileSystem } from '../common/fileSystem'; import { LogTracker, getPathForLogging } from '../common/logTracker'; -import { getFileName, normalizeSlashes } from '../common/pathUtils'; +import { getFileName, normalizeSlashes, stripFileExtension } from '../common/pathUtils'; import { convertOffsetsToRange, convertTextRangeToRange } from '../common/positionUtils'; import * as StringUtils from '../common/stringUtils'; import { Range, TextRange, getEmptyRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; +import { IndexResults } from '../languageService/symbolIndexer'; import { Localizer } from '../localization/localize'; import { ModuleNode } from '../parser/parseNodes'; import { ModuleImport, ParseOptions, ParseResults, Parser } from '../parser/parser'; @@ -44,7 +45,6 @@ import { SourceMapper } from './sourceMapper'; import { SymbolTable } from './symbol'; import { TestWalker } from './testWalker'; import { TypeEvaluator } from './typeEvaluatorTypes'; -import { IndexResults } from '../languageService/symbolIndexer'; // Limit the number of import cycles tracked per source file. const _maxImportCyclesPerFile = 4; @@ -253,7 +253,12 @@ export class SourceFile { } getModuleName(): string { - return this._moduleName; + if (this._moduleName) { + return this._moduleName; + } + + // Synthesize a module name using the file path. + return stripFileExtension(getFileName(this._filePath)); } setModuleName(name: string) { @@ -1187,7 +1192,7 @@ export class SourceFile { typingSymbolAliases: this._writableData.parseResults!.typingSymbolAliases, definedConstants: configOptions.defineConstant, filePath: this._filePath, - moduleName: this._moduleName, + moduleName: this.getModuleName(), isStubFile: this._isStubFile, isTypingStubFile: this._isTypingStubFile, isTypingExtensionsStubFile: this._isTypingExtensionsStubFile, From f95ca9f224811d2fd7a272507084f39b0e60ca35 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 11 May 2023 14:22:25 -0700 Subject: [PATCH 148/525] Fixed a bug that resulted in incorrect fully-qualified names of type aliases that are nested within classes. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 0dc4beab4..57204049c 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -14022,7 +14022,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return TypeBase.cloneForTypeAlias( type, name.value, - `${fileInfo.moduleName}.${name.value}`, + ParseTreeUtils.getClassFullName(name, fileInfo.moduleName, name.value), typeAliasScopeId, typeParameters.length > 0 ? typeParameters : undefined ); From 9fbff88880e47ef7e099230328c06bcd7ada8fa2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 11 May 2023 14:24:17 -0700 Subject: [PATCH 149/525] Added code to the "type printer" module that detects overlapping class and type alias names used within the same type. When these are detected, they are printed in their fully-qualified forms to help the user disambiguate. This addresses https://github.com/microsoft/pyright/issues/5099. --- .../src/analyzer/typePrinter.ts | 438 ++++++++++++++---- .../src/tests/samples/typePrinter1.py | 30 ++ .../src/tests/samples/typePrinter2.py | 3 + .../src/tests/typeEvaluator5.test.ts | 5 + 4 files changed, 375 insertions(+), 101 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/typePrinter1.py create mode 100644 packages/pyright-internal/src/tests/samples/typePrinter2.py diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index c0068b254..9a8366d7b 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -15,6 +15,7 @@ import { EnumLiteral, FunctionType, isAnyOrUnknown, + isClass, isClassInstance, isInstantiableClass, isNever, @@ -81,11 +82,110 @@ export const enum PrintTypeFlags { export type FunctionReturnTypeCallback = (type: FunctionType) => Type; export function printType( + type: Type, + printTypeFlags: PrintTypeFlags, + returnTypeCallback: FunctionReturnTypeCallback +): string { + const uniqueNameMap = new UniqueNameMap(printTypeFlags, returnTypeCallback); + uniqueNameMap.build(type); + + return printTypeInternal(type, printTypeFlags, returnTypeCallback, uniqueNameMap, [], 0); +} + +export function printFunctionParts( + type: FunctionType, + printTypeFlags: PrintTypeFlags, + returnTypeCallback: FunctionReturnTypeCallback +): [string[], string] { + const uniqueNameMap = new UniqueNameMap(printTypeFlags, returnTypeCallback); + uniqueNameMap.build(type); + + return printFunctionPartsInternal(type, printTypeFlags, returnTypeCallback, uniqueNameMap, [], 0); +} + +export function printObjectTypeForClass( + type: ClassType, + printTypeFlags: PrintTypeFlags, + returnTypeCallback: FunctionReturnTypeCallback +): string { + const uniqueNameMap = new UniqueNameMap(printTypeFlags, returnTypeCallback); + uniqueNameMap.build(type); + + return printObjectTypeForClassInternal(type, printTypeFlags, returnTypeCallback, uniqueNameMap, [], 0); +} + +export function printLiteralValue(type: ClassType, quotation = "'"): string { + const literalValue = type.literalValue; + if (literalValue === undefined) { + return ''; + } + + let literalStr: string; + if (typeof literalValue === 'string') { + let effectiveLiteralValue = literalValue; + + // Limit the length of the string literal. + const maxLiteralStringLength = 50; + if (literalValue.length > maxLiteralStringLength) { + effectiveLiteralValue = literalValue.substring(0, maxLiteralStringLength) + '…'; + } + + if (type.details.name === 'bytes') { + let bytesString = ''; + + // There's no good built-in conversion routine in javascript to convert + // bytes strings. Determine on a character-by-character basis whether + // it can be rendered into an ASCII character. If not, use an escape. + for (let i = 0; i < effectiveLiteralValue.length; i++) { + const char = effectiveLiteralValue.substring(i, i + 1); + const charCode = char.charCodeAt(0); + + if (charCode >= 20 && charCode <= 126) { + if (charCode === 34) { + bytesString += '\\' + char; + } else { + bytesString += char; + } + } else { + bytesString += `\\x${((charCode >> 4) & 0xf).toString(16)}${(charCode & 0xf).toString(16)}`; + } + } + + literalStr = `b"${bytesString}"`; + } else { + // JSON.stringify will perform proper escaping for " case. + // So, we only need to do our own escaping for ' case. + literalStr = JSON.stringify(effectiveLiteralValue).toString(); + if (quotation !== '"') { + literalStr = `'${literalStr + .substring(1, literalStr.length - 1) + .replace(escapedDoubleQuoteRegEx, '"') + .replace(singleTickRegEx, "\\'")}'`; + } + } + } else if (typeof literalValue === 'boolean') { + literalStr = literalValue ? 'True' : 'False'; + } else if (literalValue instanceof EnumLiteral) { + literalStr = `${literalValue.className}.${literalValue.itemName}`; + } else if (typeof literalValue === 'bigint') { + literalStr = literalValue.toString(); + if (literalStr.endsWith('n')) { + literalStr = literalStr.substring(0, literalStr.length - 1); + } + } else { + literalStr = literalValue.toString(); + } + + return literalStr; +} + +function printTypeInternal( type: Type, printTypeFlags: PrintTypeFlags, returnTypeCallback: FunctionReturnTypeCallback, - recursionTypes: Type[] = [], - recursionCount = 0 + uniqueNameMap: UniqueNameMap, + recursionTypes: Type[], + recursionCount: number ): string { const originalPrintTypeFlags = printTypeFlags; const parenthesizeUnion = (printTypeFlags & PrintTypeFlags.ParenthesizeUnion) !== 0; @@ -115,6 +215,12 @@ export function printType( try { recursionTypes.push(type); let aliasName = type.typeAliasInfo.name; + + // Use the fully-qualified name if the name isn't unique. + if (!uniqueNameMap.isUnique(aliasName)) { + aliasName = type.typeAliasInfo.fullName; + } + const typeParams = type.typeAliasInfo.typeParameters; if (typeParams) { @@ -141,10 +247,11 @@ export function printType( ) { typeArg.tupleTypeArguments.forEach((tupleTypeArg) => { argumentStrings!.push( - printType( + printTypeInternal( tupleTypeArg.type, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ) @@ -152,10 +259,11 @@ export function printType( }); } else { argumentStrings!.push( - printType( + printTypeInternal( typeArg, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ) @@ -171,10 +279,11 @@ export function printType( argumentStrings = []; typeParams.forEach((typeParam) => { argumentStrings!.push( - printType( + printTypeInternal( typeParam, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ) @@ -219,16 +328,21 @@ export function printType( if (type.typeAliasInfo) { if (!type.typeAliasInfo.typeParameters) { - return type.typeAliasInfo.name; + let name = type.typeAliasInfo.name; + if (!uniqueNameMap.isUnique(name)) { + name = type.typeAliasInfo.fullName; + } + return name; } try { recursionTypes.push(type); - return printType( + return printTypeInternal( type, printTypeFlags & ~PrintTypeFlags.ExpandTypeAlias, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -277,11 +391,13 @@ export function printType( return `Literal[${printLiteralValue(type)}]`; } - return `${printObjectTypeForClass( + return `${printObjectTypeForClassInternal( type, printTypeFlags, returnTypeCallback, - recursionTypes + uniqueNameMap, + recursionTypes, + recursionCount )}${getConditionalIndicator(type)}`; } else { let typeToWrap: string; @@ -289,11 +405,13 @@ export function printType( if (type.literalValue !== undefined) { typeToWrap = `Literal[${printLiteralValue(type)}]`; } else { - typeToWrap = `${printObjectTypeForClass( + typeToWrap = `${printObjectTypeForClassInternal( type, printTypeFlags, returnTypeCallback, - recursionTypes + uniqueNameMap, + recursionTypes, + recursionCount )}`; } @@ -307,6 +425,7 @@ export function printType( TypeBase.cloneTypeAsInstance(type), printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -317,6 +436,7 @@ export function printType( type, originalPrintTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -325,7 +445,14 @@ export function printType( case TypeCategory.OverloadedFunction: { const overloadedType = type; const overloads = overloadedType.overloads.map((overload) => - printType(overload, printTypeFlags, returnTypeCallback, recursionTypes, recursionCount) + printTypeInternal( + overload, + printTypeFlags, + returnTypeCallback, + uniqueNameMap, + recursionTypes, + recursionCount + ) ); if (printTypeFlags & PrintTypeFlags.PythonSyntax) { return 'Callable[..., Any]'; @@ -381,10 +508,11 @@ export function printType( if (matchedAllSubtypes && !allSubtypesPreviouslyHandled) { subtypeStrings.add( - printType( + printTypeInternal( typeAliasSource, updatedPrintTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ) @@ -401,10 +529,11 @@ export function printType( return 'None'; } - const optionalType = printType( + const optionalType = printTypeInternal( typeWithoutNone, updatedPrintTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -430,10 +559,11 @@ export function printType( literalClassStrings.add(printLiteralValue(subtype)); } else { subtypeStrings.add( - printType( + printTypeInternal( subtype, updatedPrintTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ) @@ -482,12 +612,13 @@ export function printType( // aliases, return the type alias name. if (type.details.recursiveTypeAliasName) { if ((printTypeFlags & PrintTypeFlags.ExpandTypeAlias) !== 0 && type.details.boundType) { - return printType( + return printTypeInternal( TypeBase.isInstance(type) ? convertToInstance(type.details.boundType) : type.details.boundType, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -499,10 +630,11 @@ export function printType( // print the type with a special character that indicates that the type // is internally represented as a TypeVar. if (type.details.isSynthesizedSelf && type.details.boundType) { - let boundTypeString = printType( + let boundTypeString = printTypeInternal( type.details.boundType, printTypeFlags & ~PrintTypeFlags.ExpandTypeAlias, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -576,8 +708,9 @@ function printFunctionType( type: FunctionType, printTypeFlags: PrintTypeFlags, returnTypeCallback: FunctionReturnTypeCallback, - recursionTypes: Type[] = [], - recursionCount = 0 + uniqueNameMap: UniqueNameMap, + recursionTypes: Type[], + recursionCount: number ) { if (printTypeFlags & PrintTypeFlags.PythonSyntax) { // Callable works only in cases where all parameters are positional-only. @@ -596,10 +729,11 @@ function printFunctionType( const returnType = returnTypeCallback(type); let returnTypeString = 'Any'; if (returnType) { - returnTypeString = printType( + returnTypeString = printTypeInternal( returnType, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -613,7 +747,14 @@ function printFunctionType( const paramType = FunctionType.getEffectiveParameterType(type, index); if (recursionTypes.length < maxTypeRecursionCount) { paramTypes.push( - printType(paramType, printTypeFlags, returnTypeCallback, recursionTypes, recursionCount) + printTypeInternal( + paramType, + printTypeFlags, + returnTypeCallback, + uniqueNameMap, + recursionTypes, + recursionCount + ) ); } else { paramTypes.push('Any'); @@ -638,7 +779,14 @@ function printFunctionType( return `Callable[..., ${returnTypeString}]`; } } else { - const parts = printFunctionParts(type, printTypeFlags, returnTypeCallback, recursionTypes); + const parts = printFunctionPartsInternal( + type, + printTypeFlags, + returnTypeCallback, + uniqueNameMap, + recursionTypes, + recursionCount + ); const paramSignature = `(${parts[0].join(', ')})`; if (FunctionType.isParamSpecValue(type)) { @@ -655,80 +803,21 @@ function printFunctionType( } } -export function printLiteralValue(type: ClassType, quotation = "'"): string { - const literalValue = type.literalValue; - if (literalValue === undefined) { - return ''; - } - - let literalStr: string; - if (typeof literalValue === 'string') { - let effectiveLiteralValue = literalValue; - - // Limit the length of the string literal. - const maxLiteralStringLength = 50; - if (literalValue.length > maxLiteralStringLength) { - effectiveLiteralValue = literalValue.substring(0, maxLiteralStringLength) + '…'; - } - - if (type.details.name === 'bytes') { - let bytesString = ''; - - // There's no good built-in conversion routine in javascript to convert - // bytes strings. Determine on a character-by-character basis whether - // it can be rendered into an ASCII character. If not, use an escape. - for (let i = 0; i < effectiveLiteralValue.length; i++) { - const char = effectiveLiteralValue.substring(i, i + 1); - const charCode = char.charCodeAt(0); - - if (charCode >= 20 && charCode <= 126) { - if (charCode === 34) { - bytesString += '\\' + char; - } else { - bytesString += char; - } - } else { - bytesString += `\\x${((charCode >> 4) & 0xf).toString(16)}${(charCode & 0xf).toString(16)}`; - } - } - - literalStr = `b"${bytesString}"`; - } else { - // JSON.stringify will perform proper escaping for " case. - // So, we only need to do our own escaping for ' case. - literalStr = JSON.stringify(effectiveLiteralValue).toString(); - if (quotation !== '"') { - literalStr = `'${literalStr - .substring(1, literalStr.length - 1) - .replace(escapedDoubleQuoteRegEx, '"') - .replace(singleTickRegEx, "\\'")}'`; - } - } - } else if (typeof literalValue === 'boolean') { - literalStr = literalValue ? 'True' : 'False'; - } else if (literalValue instanceof EnumLiteral) { - literalStr = `${literalValue.className}.${literalValue.itemName}`; - } else if (typeof literalValue === 'bigint') { - literalStr = literalValue.toString(); - if (literalStr.endsWith('n')) { - literalStr = literalStr.substring(0, literalStr.length - 1); - } - } else { - literalStr = literalValue.toString(); - } - - return literalStr; -} - -export function printObjectTypeForClass( +function printObjectTypeForClassInternal( type: ClassType, printTypeFlags: PrintTypeFlags, returnTypeCallback: FunctionReturnTypeCallback, - recursionTypes: Type[] = [], - recursionCount = 0 + uniqueNameMap: UniqueNameMap, + recursionTypes: Type[], + recursionCount: number ): string { let objName = type.aliasName || type.details.name; + // Use the fully-qualified name if the name isn't unique. + if (!uniqueNameMap.isUnique(objName)) { + objName = type.details.fullName; + } + // If this is a pseudo-generic class, don't display the type arguments // or type parameters because it will confuse users. if (!ClassType.isPseudoGenericClass(type)) { @@ -773,10 +862,11 @@ export function printObjectTypeForClass( isAllUnknown = false; } - const typeArgText = printType( + const typeArgText = printTypeInternal( typeArg.type, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -794,10 +884,11 @@ export function printObjectTypeForClass( isAllUnknown = false; } - const typeArgTypeText = printType( + const typeArgTypeText = printTypeInternal( typeArg.type, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -844,10 +935,11 @@ export function printObjectTypeForClass( '[' + typeParams .map((typeParam) => { - return printType( + return printTypeInternal( typeParam, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -862,12 +954,13 @@ export function printObjectTypeForClass( return objName; } -export function printFunctionParts( +function printFunctionPartsInternal( type: FunctionType, printTypeFlags: PrintTypeFlags, returnTypeCallback: FunctionReturnTypeCallback, - recursionTypes: Type[] = [], - recursionCount = 0 + uniqueNameMap: UniqueNameMap, + recursionTypes: Type[], + recursionCount: number ): [string[], string] { const paramTypeStrings: string[] = []; let sawDefinedName = false; @@ -886,10 +979,11 @@ export function printFunctionParts( specializedParamType.tupleTypeArguments ) { specializedParamType.tupleTypeArguments.forEach((paramType) => { - const paramString = printType( + const paramString = printTypeInternal( paramType.type, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -906,10 +1000,11 @@ export function printFunctionParts( param.type.category === TypeCategory.Class ) { param.type.details.typedDictEntries!.forEach((v, k) => { - const valueTypeString = printType( + const valueTypeString = printTypeInternal( v.valueType, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ); @@ -947,7 +1042,14 @@ export function printFunctionParts( const paramType = FunctionType.getEffectiveParameterType(type, index); let paramTypeString = recursionTypes.length < maxTypeRecursionCount - ? printType(paramType, printTypeFlags, returnTypeCallback, recursionTypes, recursionCount) + ? printTypeInternal( + paramType, + printTypeFlags, + returnTypeCallback, + uniqueNameMap, + recursionTypes, + recursionCount + ) : ''; if (emittedParamName) { @@ -1028,10 +1130,11 @@ export function printFunctionParts( paramTypeStrings.push(`**kwargs: ${type.details.paramSpec}.kwargs`); } else { paramTypeStrings.push( - `**${printType( + `**${printTypeInternal( type.details.paramSpec, printTypeFlags, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount )}` @@ -1042,10 +1145,11 @@ export function printFunctionParts( const returnType = returnTypeCallback(type); const returnTypeString = recursionTypes.length < maxTypeRecursionCount - ? printType( + ? printTypeInternal( returnType, printTypeFlags | PrintTypeFlags.ParenthesizeUnion | PrintTypeFlags.ParenthesizeCallable, returnTypeCallback, + uniqueNameMap, recursionTypes, recursionCount ) @@ -1077,3 +1181,135 @@ function _getReadableTypeVarName(type: TypeVarType, usePythonSyntax: boolean) { return TypeVarType.getReadableName(type); } + +// Represents a map of named types (classes and type aliases) that appear within +// a specified type to determine whether any of the names require disambiguation +// (i.e. their fully-qualified name is required). +class UniqueNameMap { + private _map = new Map(); + + constructor(private _printTypeFlags: PrintTypeFlags, private _returnTypeCallback: FunctionReturnTypeCallback) {} + + build(type: Type, recursionTypes: Type[] = [], recursionCount = 0) { + if (recursionCount > maxTypeRecursionCount) { + return; + } + recursionCount++; + + if (type.typeAliasInfo) { + let expandTypeAlias = true; + if ((this._printTypeFlags & PrintTypeFlags.ExpandTypeAlias) === 0) { + expandTypeAlias = false; + } else { + if (recursionTypes.find((t) => t === type)) { + expandTypeAlias = false; + } + } + + if (!expandTypeAlias) { + this._addIfUnique(type.typeAliasInfo.name, type, /* useTypeAliasName */ true); + + // Recursively add the type arguments if present. + if (type.typeAliasInfo.typeArguments) { + recursionTypes.push(type); + + try { + type.typeAliasInfo.typeArguments.forEach((typeArg) => { + this.build(typeArg, recursionTypes, recursionCount); + }); + } finally { + recursionTypes.pop(); + } + } + + return; + } + } + + try { + recursionTypes.push(type); + + switch (type.category) { + case TypeCategory.Function: { + type.details.parameters.forEach((_, index) => { + const paramType = FunctionType.getEffectiveParameterType(type, index); + this.build(paramType, recursionTypes, recursionCount); + }); + + const returnType = this._returnTypeCallback(type); + this.build(returnType, recursionTypes, recursionCount); + break; + } + + case TypeCategory.OverloadedFunction: { + type.overloads.forEach((overload) => { + this.build(overload, recursionTypes, recursionCount); + }); + break; + } + + case TypeCategory.Class: { + if (type.literalValue !== undefined) { + break; + } + + this._addIfUnique(type.aliasName || type.details.name, type); + + if (!ClassType.isPseudoGenericClass(type)) { + if (type.tupleTypeArguments) { + type.tupleTypeArguments.forEach((typeArg) => { + this.build(typeArg.type, recursionTypes, recursionCount); + }); + } else if (type.typeArguments) { + type.typeArguments.forEach((typeArg) => { + this.build(typeArg, recursionTypes, recursionCount); + }); + } + } + break; + } + + case TypeCategory.Union: { + doForEachSubtype(type, (subtype) => { + this.build(subtype, recursionTypes, recursionCount); + }); + + type.typeAliasSources?.forEach((typeAliasSource) => { + this.build(typeAliasSource, recursionTypes, recursionCount); + }); + break; + } + } + } finally { + recursionTypes.pop(); + } + } + + isUnique(name: string) { + const entry = this._map.get(name); + return !entry || entry.length === 1; + } + + private _addIfUnique(name: string, type: Type, useTypeAliasName = false) { + const existingEntry = this._map.get(name); + if (!existingEntry) { + this._map.set(name, [type]); + } else { + if (!existingEntry.some((t) => this._isSameTypeName(t, type, useTypeAliasName))) { + existingEntry.push(type); + } + } + } + + private _isSameTypeName(type1: Type, type2: Type, useTypeAliasName: boolean): boolean { + if (useTypeAliasName) { + return type1.typeAliasInfo?.fullName === type2.typeAliasInfo?.fullName; + } + + if (isClass(type1) && isClass(type2)) { + return ClassType.isSameGenericClass(type1, type2); + } + + return false; + } +} diff --git a/packages/pyright-internal/src/tests/samples/typePrinter1.py b/packages/pyright-internal/src/tests/samples/typePrinter1.py new file mode 100644 index 000000000..33a729ed7 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typePrinter1.py @@ -0,0 +1,30 @@ +# This sample tests that the type printer prints fully-qualified names +# for types that are ambiguous because they have the same local name. + +from . import typePrinter2 + + +class A: + class Inner: + ... + + +class B: + class Inner: + ... + + +def func1(v: A.Inner | None): + reveal_type(v, expected_text="Inner | None") + + +def func2(v: A.Inner | B.Inner | None): + reveal_type(v, expected_text="typePrinter1.A.Inner | typePrinter1.B.Inner | None") + + +class IntOrStr: + ... + + +def func3(v: typePrinter2.IntOrStr | IntOrStr | None): + reveal_type(v, expected_text="int | str | IntOrStr | None") diff --git a/packages/pyright-internal/src/tests/samples/typePrinter2.py b/packages/pyright-internal/src/tests/samples/typePrinter2.py new file mode 100644 index 000000000..d6b3d49d2 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typePrinter2.py @@ -0,0 +1,3 @@ +# This sample is used in conjunction with the typePrinter1.py sample. + +IntOrStr = int | str diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index d303be0d1..b58e7f7ee 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -271,3 +271,8 @@ test('Conditional1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['conditional1.py']); TestUtils.validateResults(analysisResults, 15); }); + +test('TypePrinter1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typePrinter1.py']); + TestUtils.validateResults(analysisResults, 0); +}); From 9e31011885a9bf9e2d19c30bd9aac72b30dd8509 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 11 May 2023 15:15:37 -0700 Subject: [PATCH 150/525] Added code to exempt the synthesized `__hash__` symbol in dataclass classes from override checks (such as `reportIncompatibleVariableOverride`). This addresses https://github.com/microsoft/pyright/issues/5100. --- packages/pyright-internal/src/analyzer/checker.ts | 4 ++++ .../pyright-internal/src/analyzer/dataClasses.ts | 13 +++++++++++-- packages/pyright-internal/src/analyzer/symbol.ts | 7 +++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 2f93f0cea..5005508bf 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -5487,6 +5487,10 @@ export class Checker extends ParseTreeWalker { return; } + if (baseClassAndSymbol.symbol.isIgnoredForOverrideChecks()) { + return; + } + // If the base class doesn't provide a type declaration, we won't bother // proceeding with additional checks. Type inference is too inaccurate // in this case, plus it would be very slow. diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index e0c1f4f72..017b4b596 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -622,9 +622,18 @@ export function synthesizeDataClassMethods( const hashMethod = FunctionType.createSynthesizedInstance('__hash__'); FunctionType.addParameter(hashMethod, selfParam); hashMethod.details.declaredReturnType = evaluator.getBuiltInObject(node, 'int'); - symbolTable.set('__hash__', Symbol.createWithType(SymbolFlags.ClassMember, hashMethod)); + symbolTable.set( + '__hash__', + Symbol.createWithType(SymbolFlags.ClassMember | SymbolFlags.IgnoredForOverrideChecks, hashMethod) + ); } else if (synthesizeHashNone && !skipSynthesizeHash) { - symbolTable.set('__hash__', Symbol.createWithType(SymbolFlags.ClassMember, NoneType.createInstance())); + symbolTable.set( + '__hash__', + Symbol.createWithType( + SymbolFlags.ClassMember | SymbolFlags.IgnoredForOverrideChecks, + NoneType.createInstance() + ) + ); } let dictType = evaluator.getBuiltInType(node, 'dict'); diff --git a/packages/pyright-internal/src/analyzer/symbol.ts b/packages/pyright-internal/src/analyzer/symbol.ts index f48c8a11c..c9dc24543 100644 --- a/packages/pyright-internal/src/analyzer/symbol.ts +++ b/packages/pyright-internal/src/analyzer/symbol.ts @@ -57,6 +57,9 @@ export const enum SymbolFlags { // is modeled as an instance member but in some respects acts as a // class member. NamedTupleMember = 1 << 11, + + // Indicates that the symbol should be exempt from override type checks. + IgnoredForOverrideChecks = 1 << 12, } let nextSymbolId = 1; @@ -176,6 +179,10 @@ export class Symbol { return !!(this._flags & SymbolFlags.NamedTupleMember); } + isIgnoredForOverrideChecks() { + return !!(this._flags & SymbolFlags.IgnoredForOverrideChecks); + } + addDeclaration(declaration: Declaration) { if (this._declarations) { // See if this node was already identified as a declaration. If so, From 15d36eaecccc274647cec48d75648f216e67bd70 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 11 May 2023 20:01:53 -0700 Subject: [PATCH 151/525] Fixed a bug in protocol matching that resulted in a false positive if `Self` was used in a method within a protocol base class used for another protocol. This addresses https://github.com/microsoft/pyright/issues/5087. --- .../src/analyzer/protocols.ts | 2 +- .../src/tests/samples/protocol40.py | 31 +++++++++++++++---- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index b79bdd492..60106c6a6 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -237,7 +237,7 @@ function assignClassToProtocolInternal( // We can skip this if it's the dest class because it is already // specialized. if (!ClassType.isSameGenericClass(mroClass, destType)) { - destMemberType = partiallySpecializeType(destMemberType, mroClass, destType); + destMemberType = partiallySpecializeType(destMemberType, mroClass, srcType); } let srcMemberType: Type; diff --git a/packages/pyright-internal/src/tests/samples/protocol40.py b/packages/pyright-internal/src/tests/samples/protocol40.py index 053a08a90..54524b06e 100644 --- a/packages/pyright-internal/src/tests/samples/protocol40.py +++ b/packages/pyright-internal/src/tests/samples/protocol40.py @@ -3,22 +3,41 @@ from typing import Generic, Protocol, TypeVar, Self -T = TypeVar("T", covariant=True) +T = TypeVar("T") +S = TypeVar("S", covariant=True) -class P0(Protocol[T]): +class P1Parent(Protocol[S]): def f0(self, /) -> Self: ... -class P1(P0[T], Protocol[T]): +class P1Child(P1Parent[S], Protocol[S]): ... -class C(Generic[T]): +class C1(Generic[T]): def f0(self, /) -> Self: ... -a: P0[str] = C[str]() -b: P1[str] = C[str]() +a1: P1Parent[str] = C1[str]() +b1: P1Child[str] = C1[str]() + + +class P2Parent(Protocol[T]): + def f0(self, right: Self, /) -> "P2Parent[T]": + return right + + +class P2Child(P2Parent[T], Protocol[T]): + ... + + +class C2(Generic[S]): + def f0(self, other: "C2[S]") -> "C2[S]": + return other + + +a2: P2Parent[str] = C2[str]() +b2: P2Child[str] = C2[str]() From b7f2751b3a7ebdb358c0330f87d23b46f0827513 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 11 May 2023 20:34:33 -0700 Subject: [PATCH 152/525] Published 1.1.308 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 2f1cb72bc..3556487d2 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.307", + "version": "1.1.308", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 298a0898b..b287df5da 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.307", + "version": "1.1.308", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.307", + "version": "1.1.308", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 306f4a5f1..bd30b6667 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.307", + "version": "1.1.308", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 0e3c8663a..244a3b95f 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.307", + "version": "1.1.308", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.307", + "version": "1.1.308", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 2e4892ada..503806934 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.307", + "version": "1.1.308", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 2292c7b63..84421d0c3 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.307", + "version": "1.1.308", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.307", + "version": "1.1.308", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 533f3a80d..c11df4504 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.307", + "version": "1.1.308", "private": true, "license": "MIT", "author": { From 51a58573d5da7302b207c1c6ef0f1679fd0c453d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 12 May 2023 16:30:24 -0700 Subject: [PATCH 153/525] Fixed bug that led to a false positive under certain circumstances when assigning a value to a variable with a type annotation that evaluates to a descriptor type. This addresses https://github.com/microsoft/pyright/issues/5107. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 57204049c..7ec14e34c 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -192,6 +192,7 @@ import { applySourceContextTypeVars, applySourceContextTypeVarsToSignature, areTypesSame, + buildTypeVarContextFromSpecializedClass, combineSameSizedTuples, combineVariances, computeMroLinearization, @@ -2328,9 +2329,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isClassInstance(declaredType)) { const setterInfo = lookUpClassMember(declaredType, '__set__'); const setter = setterInfo ? getTypeOfMember(setterInfo) : undefined; - if (setter && isFunction(setter) && setter.details.parameters.length >= 3) { + if (setterInfo && setter && isFunction(setter) && setter.details.parameters.length >= 3) { declaredType = setter.details.parameters[2].type; + if (isClass(setterInfo.classType)) { + const typeVarMap = buildTypeVarContextFromSpecializedClass(setterInfo.classType); + declaredType = applySolvedTypeVars(declaredType, typeVarMap); + } + if (isAnyOrUnknown(declaredType)) { return undefined; } From a045244175caccace92575a08d17b3384ee9f162 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 12 May 2023 17:30:28 -0700 Subject: [PATCH 154/525] Fixed a regression that resulted in incorrect type evaluation when passing an argument to a generic class constructor when the argument expression includes an "or" or "and" operator. This addresses https://github.com/microsoft/pyright/issues/5106. --- .../src/analyzer/typeUtils.ts | 23 +++++++++++++++++-- .../src/tests/samples/genericTypes112.py | 7 ++++++ .../src/tests/typeEvaluator2.test.ts | 6 +++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes112.py diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 2be68f026..e698555ae 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1016,7 +1016,12 @@ export function applySolvedTypeVars( options: ApplyTypeVarOptions = {} ): Type { // Use a shortcut if the typeVarContext is empty and no transform is necessary. - if (typeVarContext.isEmpty() && !options.unknownIfNotFound && !options.eliminateUnsolvedInUnions) { + if ( + typeVarContext.isEmpty() && + !options.unknownIfNotFound && + !options.eliminateUnsolvedInUnions && + !options.applyInScopePlaceholders + ) { return type; } @@ -3597,7 +3602,14 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { // If this typeVar is in scope for what we're solving but the type // var map doesn't contain any entry for it, replace with the // default or Unknown. + let useDefaultOrUnknown = false; if (this._options.unknownIfNotFound && !this._typeVarContext.hasSolveForScope(WildcardTypeVarScopeId)) { + useDefaultOrUnknown = true; + } else if (this._options.applyInScopePlaceholders && typeVar.isInScopePlaceholder) { + useDefaultOrUnknown = true; + } + + if (useDefaultOrUnknown) { // Use the default value if there is one. if (typeVar.details.defaultType && !this._options.useUnknownOverDefault) { return this._solveDefaultType(typeVar.details.defaultType, recursionCount); @@ -3670,7 +3682,7 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { return undefined; } - // If _unknownIfNotFound is true, the postTransform type will + // If unknownIfNotFound is true, the postTransform type will // be Unknown, which we want to eliminate. if (isUnknown(postTransform) && this._options.unknownIfNotFound) { return undefined; @@ -3730,7 +3742,14 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { return transformedParamSpec; } + let useDefaultOrUnknown = false; if (this._options.unknownIfNotFound && !this._typeVarContext.hasSolveForScope(WildcardTypeVarScopeId)) { + useDefaultOrUnknown = true; + } else if (this._options.applyInScopePlaceholders && paramSpec.isInScopePlaceholder) { + useDefaultOrUnknown = true; + } + + if (useDefaultOrUnknown) { // Use the default value if there is one. if (paramSpec.details.defaultType) { return convertTypeToParamSpecValue( diff --git a/packages/pyright-internal/src/tests/samples/genericTypes112.py b/packages/pyright-internal/src/tests/samples/genericTypes112.py new file mode 100644 index 000000000..e897a5f6a --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes112.py @@ -0,0 +1,7 @@ +# This sample tests bidirectional type inference for a generic class +# constructor that is passed an argument expression that contains a +# binary operator. + +def func1(x: list[str] | None): + for _, v in enumerate(x or []): + reveal_type(v, expected_text="str") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 30e21d7d0..cc61f7807 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1085,6 +1085,12 @@ test('GenericTypes111', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes112', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes112.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 0ff3874accf1866ab0baa347a0f5486504c65bce Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 12 May 2023 18:09:51 -0700 Subject: [PATCH 155/525] Extended the `reportUninitializedInstanceVariable` check to detect the case where a `@final` class derives from an abstract base class (or hierarchy thereof) and does not implement one or more variables defined (but not assigned) in an ABC. This addresses https://github.com/microsoft/pyright/issues/5103. --- .../pyright-internal/src/analyzer/checker.ts | 51 ++++++++++++++++++- .../src/analyzer/typeUtils.ts | 24 +++++---- .../src/localization/localize.ts | 6 +++ .../src/localization/package.nls.en-us.json | 2 + .../src/tests/checker.test.ts | 13 +++++ .../tests/samples/uninitializedVariable2.py | 50 ++++++++++++++++++ 6 files changed, 135 insertions(+), 11 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/uninitializedVariable2.py diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 5005508bf..602c607dc 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -119,6 +119,7 @@ import { } from './typeGuards'; import { ClassType, + ClassTypeFlags, combineTypes, FunctionType, FunctionTypeFlags, @@ -161,6 +162,7 @@ import { getGeneratorTypeArgs, getGeneratorYieldType, getProtocolSymbols, + getProtocolSymbolsRecursive, getTypeVarArgumentsRecursive, getTypeVarScopeId, isLiteralType, @@ -385,7 +387,7 @@ export class Checker extends ParseTreeWalker { this._validateFinalMemberOverrides(classTypeResult.classType); - this._validateInstanceVariableInitialization(classTypeResult.classType); + this._validateInstanceVariableInitialization(node, classTypeResult.classType); this._validateFinalClassNotAbstract(classTypeResult.classType, node); @@ -4690,7 +4692,7 @@ export class Checker extends ParseTreeWalker { // Reports the case where an instance variable is not declared or initialized // within the class body or constructor method. - private _validateInstanceVariableInitialization(classType: ClassType) { + private _validateInstanceVariableInitialization(node: ClassNode, classType: ClassType) { // This check doesn't apply to stub files. if (this._fileInfo.isStubFile) { return; @@ -4711,7 +4713,16 @@ export class Checker extends ParseTreeWalker { return; } + // If the class is final, see if it has any abstract base classes that define + // variables. We need to make sure these are initialized. + const abstractSymbols = new Map(); + if (ClassType.isFinal(classType)) { + getProtocolSymbolsRecursive(classType, abstractSymbols, ClassTypeFlags.SupportsAbstractMethods); + } + classType.details.fields.forEach((localSymbol, name) => { + abstractSymbols.delete(name); + // This applies only to instance members. if (!localSymbol.isInstanceMember()) { return; @@ -4781,6 +4792,42 @@ export class Checker extends ParseTreeWalker { decls[0].node ); }); + + // See if there are any variables from abstract base classes + // that are not initialized. + const diagAddendum = new DiagnosticAddendum(); + abstractSymbols.forEach((member, name) => { + const decls = member.symbol.getDeclarations(); + + if (decls.length === 0 || !isClass(member.classType)) { + return; + } + + if (decls[0].type === DeclarationType.Variable) { + // If none of the declarations involve assignments, assume it's + // not implemented in the protocol. + if (!decls.some((decl) => decl.type === DeclarationType.Variable && !!decl.inferredTypeSource)) { + // This is a variable declaration that is not implemented in the + // protocol base class. Make sure it's implemented in the derived class. + diagAddendum.addMessage( + Localizer.DiagnosticAddendum.uninitializedAbstractVariable().format({ + name, + classType: member.classType.details.name, + }) + ); + } + } + }); + + if (!diagAddendum.isEmpty()) { + this._evaluator.addDiagnostic( + this._fileInfo.diagnosticRuleSet.reportUninitializedInstanceVariable, + DiagnosticRule.reportUninitializedInstanceVariable, + Localizer.Diagnostic.uninitializedAbstractVariables().format({ classType: classType.details.name }) + + diagAddendum.getString(), + node.name + ); + } } // Validates that the type variables used in a generic protocol class have diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index e698555ae..8cabc8cd3 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -16,6 +16,7 @@ import { isTypedDictMemberAccessedThroughIndex } from './symbolUtils'; import { AnyType, ClassType, + ClassTypeFlags, combineTypes, findSubtype, FunctionParameter, @@ -1134,28 +1135,33 @@ export function transformExpectedType(expectedType: Type, liveTypeVarScopes: Typ return transformer.apply(expectedType, 0); } -// Given a protocol class, this function returns a set of all the -// symbols (indexed by symbol name) that are part of that protocol -// and its protocol parent classes. If a same-named symbol appears -// in a parent and a child, the child overrides the parent. +// Given a protocol class (or abstract class), this function returns +// a set of all the symbols (indexed by symbol name) that are part of +// that protocol and its protocol parent classes. If a same-named symbol +// appears in a parent and a child, the child overrides the parent. export function getProtocolSymbols(classType: ClassType) { const symbolMap = new Map(); - if (ClassType.isProtocolClass(classType)) { - getProtocolSymbolsRecursive(classType, symbolMap); + if ((classType.details.flags & ClassTypeFlags.ProtocolClass) !== 0) { + getProtocolSymbolsRecursive(classType, symbolMap, ClassTypeFlags.ProtocolClass); } return symbolMap; } -function getProtocolSymbolsRecursive(classType: ClassType, symbolMap: Map, recursionCount = 0) { +export function getProtocolSymbolsRecursive( + classType: ClassType, + symbolMap: Map, + classFlags = ClassTypeFlags.ProtocolClass, + recursionCount = 0 +) { if (recursionCount > maxTypeRecursionCount) { return; } classType.details.baseClasses.forEach((baseClass) => { - if (isClass(baseClass) && ClassType.isProtocolClass(baseClass)) { - getProtocolSymbolsRecursive(baseClass, symbolMap, recursionCount + 1); + if (isClass(baseClass) && (baseClass.details.flags & classFlags) !== 0) { + getProtocolSymbolsRecursive(baseClass, symbolMap, classFlags, recursionCount + 1); } }); diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 745b4d1cf..b306b0344 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -982,6 +982,8 @@ export namespace Localizer { export const unionForwardReferenceNotAllowed = () => getRawString('Diagnostic.unionForwardReferenceNotAllowed'); export const unionSyntaxIllegal = () => getRawString('Diagnostic.unionSyntaxIllegal'); export const unionTypeArgCount = () => getRawString('Diagnostic.unionTypeArgCount'); + export const uninitializedAbstractVariables = () => + new ParameterizedString<{ classType: string }>(getRawString('Diagnostic.uninitializedAbstractVariables')); export const uninitializedInstanceVariable = () => new ParameterizedString<{ name: string }>(getRawString('Diagnostic.uninitializedInstanceVariable')); export const unmatchedEndregionComment = () => getRawString('Diagnostic.unmatchedEndregionComment'); @@ -1345,6 +1347,10 @@ export namespace Localizer { export const typeVarUnsolvableRemedy = () => getRawString('DiagnosticAddendum.typeVarUnsolvableRemedy'); export const unhashableType = () => new ParameterizedString<{ type: string }>(getRawString('DiagnosticAddendum.unhashableType')); + export const uninitializedAbstractVariable = () => + new ParameterizedString<{ name: string; classType: string }>( + getRawString('DiagnosticAddendum.uninitializedAbstractVariable') + ); export const unreachableExcept = () => new ParameterizedString<{ exceptionType: string; parentType: string }>( getRawString('DiagnosticAddendum.unreachableExcept') diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 8490c5056..ff5cc8103 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -503,6 +503,7 @@ "unionForwardReferenceNotAllowed": "Union syntax cannot be used with string operand; use quotes around entire expression", "unionSyntaxIllegal": "Alternative syntax for unions requires Python 3.10 or newer", "unionTypeArgCount": "Union requires two or more type arguments", + "uninitializedAbstractVariables": "Variables defined in abstract base class are not initialized in final class \"{classType}\"", "uninitializedInstanceVariable": "Instance variable \"{name}\" is not initialized in the class body or __init__ method", "unmatchedEndregionComment": "#endregion is missing corresponding #region", "unmatchedRegionComment": "#region is missing corresponding #endregion", @@ -677,6 +678,7 @@ "typeVarsMissing": "Missing type variables: {names}", "typeVarTupleRequiresKnownLength": "TypeVarTuple cannot be bound to a tuple of unknown length", "unhashableType": "Type \"{type}\" is not hashable", + "uninitializedAbstractVariable": "Instance variable \"{name}\" is defined in abstract base class \"{classType}\" but not initialized", "unreachableExcept": "\"{exceptionType}\" is a subclass of \"{parentType}\"", "useDictInstead": "Use Dict[T1, T2] to indicate a dictionary type", "useListInstead": "Use List[T] to indicate a list type or Union[T1, T2] to indicate a union type", diff --git a/packages/pyright-internal/src/tests/checker.test.ts b/packages/pyright-internal/src/tests/checker.test.ts index ec6b7fc09..819e6d927 100644 --- a/packages/pyright-internal/src/tests/checker.test.ts +++ b/packages/pyright-internal/src/tests/checker.test.ts @@ -473,6 +473,19 @@ test('UninitializedVariable1', () => { // Enable it as an error. configOptions.diagnosticRuleSet.reportUninitializedInstanceVariable = 'error'; analysisResults = TestUtils.typeAnalyzeSampleFiles(['uninitializedVariable1.py'], configOptions); + TestUtils.validateResults(analysisResults, 3); +}); + +test('UninitializedVariable2', () => { + const configOptions = new ConfigOptions('.'); + + // By default, this is off. + let analysisResults = TestUtils.typeAnalyzeSampleFiles(['uninitializedVariable2.py'], configOptions); + TestUtils.validateResults(analysisResults, 0); + + // Enable it as an error. + configOptions.diagnosticRuleSet.reportUninitializedInstanceVariable = 'error'; + analysisResults = TestUtils.typeAnalyzeSampleFiles(['uninitializedVariable2.py'], configOptions); TestUtils.validateResults(analysisResults, 2); }); diff --git a/packages/pyright-internal/src/tests/samples/uninitializedVariable2.py b/packages/pyright-internal/src/tests/samples/uninitializedVariable2.py new file mode 100644 index 000000000..31010a7f5 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/uninitializedVariable2.py @@ -0,0 +1,50 @@ +# This sample tests the reportUninitializedInstanceVariable when applied +# to a concrete implementation of an abstract base class that defines +# (but does not assign) variables. + +from abc import ABC +from typing import final + + +class Abstract1(ABC): + x: str + + +@final +# This should generate an error because x is unimplemented. +class A(Abstract1): + pass + + +class B(Abstract1): + pass + + +@final +class C(Abstract1): + x = "" + + +@final +class D(Abstract1): + def __init__(self): + self.x = "" + + +class Abstract2(Abstract1): + y: str + + +@final +# This should generate an error because x and y are unimplemented. +class E(Abstract2): + pass + + +class Abstract3(Abstract1): + x = "" + + +@final +class G(Abstract3): + pass From 773b61942353b2444acdbb42ca098138f7f63d9f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 11 May 2023 21:28:08 -0700 Subject: [PATCH 156/525] Reworked the logic for constructor type analysis to better mirror runtime behaviors of the `type.__call__` method. --- .../src/analyzer/constructors.ts | 639 ++++++++++-------- .../src/analyzer/namedTuples.ts | 7 +- .../src/analyzer/typeEvaluator.ts | 54 +- .../pyright-internal/src/analyzer/types.ts | 9 - .../src/commands/dumpFileDebugInfoCommand.ts | 1 - .../src/tests/samples/constructor15.py | 4 +- .../src/tests/samples/constructor16.py | 31 + .../src/tests/samples/specialization2.py | 2 - .../src/tests/typeEvaluator3.test.ts | 6 + 9 files changed, 432 insertions(+), 321 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/constructor16.py diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index ac5300b25..06e520268 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -19,13 +19,14 @@ import { getFileInfo } from './analyzerNodeInfo'; import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; import { applyConstructorTransform, hasConstructorTransform } from './constructorTransform'; import { getTypeVarScopesForNode } from './parseTreeUtils'; -import { CallResult, FunctionArgument, MemberAccessFlags, TypeEvaluator } from './typeEvaluatorTypes'; +import { CallResult, FunctionArgument, MemberAccessFlags, TypeEvaluator, TypeResult } from './typeEvaluatorTypes'; import { ClassMemberLookupFlags, InferenceContext, applySolvedTypeVars, buildTypeVarContextFromSpecializedClass, convertToInstance, + doForEachSubtype, getTypeVarScopeId, isPartlyUnknown, isTupleClass, @@ -40,10 +41,12 @@ import { ClassType, FunctionType, FunctionTypeFlags, + InheritanceChain, OverloadedFunctionType, Type, UnknownType, isAny, + isAnyOrUnknown, isClassInstance, isFunction, isInstantiableClass, @@ -79,7 +82,7 @@ export function validateConstructorArguments( } // Determine whether the class overrides the object.__new__ method. - const newMethodInfo = evaluator.getTypeOfClassMemberName( + const newMethodTypeResult = evaluator.getTypeOfClassMemberName( errorNode, type, /* isAccessedThroughObject */ false, @@ -92,249 +95,392 @@ export function validateConstructorArguments( type ); - // Determine whether the class overrides the object.__init__ method. - const initMethodInfo = evaluator.getTypeOfObjectMember( - errorNode, - ClassType.cloneAsInstance(type), - '__init__', - { method: 'get' }, - /* diag */ undefined, - MemberAccessFlags.SkipObjectBaseClass | MemberAccessFlags.SkipAttributeAccessOverride - ); - let returnType: Type | undefined; - let validatedTypes = false; + let validatedArgExpressions = false; let argumentErrors = false; let isTypeIncomplete = false; const overloadsUsedForCall: FunctionType[] = []; + let newMethodReturnType: Type | undefined; + const useConstructorTransform = hasConstructorTransform(type); + + // If there is a constructor transform, evaluate all arguments speculatively + // so we can later re-evaluate them in the context of the transform. + evaluator.useSpeculativeMode(useConstructorTransform ? errorNode : undefined, () => { + // Validate __new__ if it is present. + if (newMethodTypeResult) { + // Use speculative mode for arg expressions because we don't know whether + // we'll need to re-evaluate these expressions later for __init__. + const newCallResult = validateNewMethod( + evaluator, + errorNode, + argList, + type, + skipUnknownArgCheck, + inferenceContext, + newMethodTypeResult, + /* useSpeculativeModeForArgs */ true + ); - // If the class doesn't override object.__new__ or object.__init__, use the - // fallback constructor type evaluation for the `object` class. - if (!newMethodInfo && !initMethodInfo) { - const callResult = validateFallbackConstructorCall(evaluator, errorNode, argList, type, inferenceContext); - - if (callResult.argumentErrors) { - argumentErrors = true; - } else { - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - } + if (newCallResult.argumentErrors) { + argumentErrors = true; + } else { + overloadsUsedForCall.push(...newCallResult.overloadsUsedForCall); + } - returnType = callResult.returnType ?? UnknownType.create(); - } else { - // Validate __init__ - // We validate __init__ before __new__ because the former typically has - // more specific type annotations, and we want to evaluate the arguments - // in the context of these types. The __new__ method often uses generic - // vargs and kwargs. - const initMethodType = initMethodInfo?.type; - if (initMethodType && !shouldSkipConstructorCheck(initMethodType)) { - // If there is an expected type, analyze the constructor call - // for each of the subtypes that comprise the expected type. If - // one or more analyzes with no errors, use those results. - if (inferenceContext) { - const expectedCallResult = validateConstructorMethodWithContext( - evaluator, - errorNode, - argList, - type, - skipUnknownArgCheck, - inferenceContext, - initMethodType - ); + if (newCallResult.isTypeIncomplete) { + isTypeIncomplete = true; + } - if (expectedCallResult && !expectedCallResult.argumentErrors) { - returnType = expectedCallResult.returnType; + newMethodReturnType = newCallResult.returnType; + } - if (expectedCallResult.isTypeIncomplete) { - isTypeIncomplete = true; - } - } + if (!newMethodReturnType) { + newMethodReturnType = ClassType.cloneAsInstance(type); + } else if (!isNever(newMethodReturnType)) { + if (!isClassInstance(newMethodReturnType)) { + // If the __new__ method returns something other than an object or + // NoReturn, we'll ignore its return type. + newMethodReturnType = ClassType.cloneAsInstance(type); + } else if ( + ClassType.isSameGenericClass(newMethodReturnType, type) && + isPartlyUnknown(newMethodReturnType) + ) { + // If the __new__ method returns the same type as the class it's constructing + // but doesn't supply solved type arguments, we'll ignore its return type + // and rely on the __init__ method to supply them instead. + newMethodReturnType = ClassType.cloneAsInstance(type); } + } - if (!returnType) { - const typeVarContext = type.typeArguments - ? buildTypeVarContextFromSpecializedClass(type, /* makeConcrete */ false) - : new TypeVarContext(getTypeVarScopeId(type)); + let initMethodTypeResult: TypeResult | undefined; - typeVarContext.addSolveForScope(getTypeVarScopeId(initMethodType)); - const callResult = evaluator.validateCallArguments( + // Validate __init__ if it's present. Skip if the __new__ method produced errors. + if ( + !argumentErrors && + !isNever(newMethodReturnType) && + !shouldSkipInitEvaluation(evaluator, type, newMethodReturnType) + ) { + // Determine whether the class overrides the object.__init__ method. + initMethodTypeResult = evaluator.getTypeOfObjectMember( + errorNode, + ClassType.cloneAsInstance(newMethodReturnType), + '__init__', + { method: 'get' }, + /* diag */ undefined, + MemberAccessFlags.SkipObjectBaseClass | MemberAccessFlags.SkipAttributeAccessOverride + ); + + // Validate __init__ if it's present. + if (initMethodTypeResult) { + const initCallResult = validateInitMethod( + evaluator, errorNode, argList, - { type: initMethodType }, - typeVarContext, - skipUnknownArgCheck + newMethodReturnType, + skipUnknownArgCheck, + inferenceContext, + initMethodTypeResult.type ); - let adjustedClassType = type; - if ( - callResult.specializedInitSelfType && - isClassInstance(callResult.specializedInitSelfType) && - ClassType.isSameGenericClass(callResult.specializedInitSelfType, type) - ) { - adjustedClassType = ClassType.cloneAsInstantiable(callResult.specializedInitSelfType); + if (initCallResult.argumentErrors) { + argumentErrors = true; + } else { + overloadsUsedForCall.push(...initCallResult.overloadsUsedForCall); } - returnType = applyExpectedTypeForConstructor( - evaluator, - adjustedClassType, - /* inferenceContext */ undefined, - typeVarContext - ); - - if (callResult.isTypeIncomplete) { + if (initCallResult.isTypeIncomplete) { isTypeIncomplete = true; } - if (callResult.argumentErrors) { - argumentErrors = true; - } else { - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - } + returnType = initCallResult.returnType; + validatedArgExpressions = true; + skipUnknownArgCheck = true; } - - validatedTypes = true; - skipUnknownArgCheck = true; } - // Validate __new__ - // Don't report errors for __new__ if __init__ already generated errors. They're - // probably going to be entirely redundant anyway. - if (!argumentErrors && newMethodInfo && !shouldSkipConstructorCheck(newMethodInfo.type)) { - const constructorMethodType = newMethodInfo.type; - let newReturnType: Type | undefined; - - // If there is an expected type that was not applied above when - // handling the __init__ method, try to apply it with the __new__ method. - if (inferenceContext && !returnType) { - const expectedCallResult = validateConstructorMethodWithContext( + if (!validatedArgExpressions && newMethodTypeResult) { + // If we skipped the __init__ method and the __new__ method was evaluated only + // speculatively, evaluate it non-speculatively now so we can report errors. + if (!evaluator.isSpeculativeModeInUse(errorNode)) { + validateNewMethod( evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, - constructorMethodType + newMethodTypeResult, + /* useSpeculativeModeForArgs */ false ); + } + + validatedArgExpressions = true; + returnType = newMethodReturnType; + } - if (expectedCallResult && !expectedCallResult.argumentErrors) { - newReturnType = expectedCallResult.returnType; - returnType = newReturnType; + // If the class doesn't override object.__new__ or object.__init__, use the + // fallback constructor type evaluation for the `object` class. + if (!newMethodTypeResult && !initMethodTypeResult) { + const callResult = validateFallbackConstructorCall(evaluator, errorNode, argList, type, inferenceContext); - if (expectedCallResult.isTypeIncomplete) { - isTypeIncomplete = true; + if (callResult.argumentErrors) { + argumentErrors = true; + } else { + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + } + + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + + returnType = callResult.returnType ?? UnknownType.create(); + } + }); + + // Apply a constructor transform if applicable. + if (!argumentErrors && returnType && useConstructorTransform) { + const transformed = applyConstructorTransform(evaluator, errorNode, argList, type, { + argumentErrors, + returnType, + isTypeIncomplete, + }); + + returnType = transformed.returnType; + + if (transformed.isTypeIncomplete) { + isTypeIncomplete = true; + } + + if (transformed.argumentErrors) { + argumentErrors = true; + } + + validatedArgExpressions = true; + } + + // If we weren't able to validate the args, analyze the expressions here + // to mark symbols referenced and report expression evaluation errors. + if (!validatedArgExpressions) { + argList.forEach((arg) => { + if (arg.valueExpression && !evaluator.isSpeculativeModeInUse(arg.valueExpression)) { + evaluator.getTypeOfExpression(arg.valueExpression); + } + }); + } + + return { argumentErrors, returnType, isTypeIncomplete, overloadsUsedForCall }; +} + +// Evaluates the __new__ method for type correctness. If useSpeculativeModeForArgs +// is true, use speculative mode to evaluate the arguments (unless an argument +// error is produced, in which case it's OK to use speculative mode). +function validateNewMethod( + evaluator: TypeEvaluator, + errorNode: ExpressionNode, + argList: FunctionArgument[], + type: ClassType, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined, + newMethodTypeResult: TypeResult, + useSpeculativeModeForArgs: boolean +): CallResult { + let newReturnType: Type | undefined; + let isTypeIncomplete = false; + let argumentErrors = false; + const overloadsUsedForCall: FunctionType[] = []; + + const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); + typeVarContext.addSolveForScope(getTypeVarScopeId(newMethodTypeResult.type)); + if (type.typeAliasInfo) { + typeVarContext.addSolveForScope(type.typeAliasInfo.typeVarScopeId); + } + + const callResult = evaluator.useSpeculativeMode(useSpeculativeModeForArgs ? errorNode : undefined, () => { + return evaluator.validateCallArguments( + errorNode, + argList, + newMethodTypeResult, + typeVarContext, + skipUnknownArgCheck, + inferenceContext + ); + }); + + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } + + if (callResult.argumentErrors) { + argumentErrors = true; + + // Evaluate the arguments in a non-speculative manner to generate any diagnostics. + evaluator.validateCallArguments(errorNode, argList, newMethodTypeResult, typeVarContext, skipUnknownArgCheck); + } else { + newReturnType = callResult.returnType; + + if (overloadsUsedForCall.length === 0) { + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + } + + // If the constructor returned an object whose type matches the class of + // the original type being constructed, use the return type in case it was + // specialized. If it doesn't match, we'll fall back on the assumption that + // the constructed type is an instance of the class type. We need to do this + // in cases where we're inferring the return type based on a call to + // super().__new__(). + if (newReturnType) { + if (isClassInstance(newReturnType) && ClassType.isSameGenericClass(newReturnType, type)) { + // If the specialized return type derived from the __init__ + // method is "better" than the return type provided by the + // __new__ method (where "better" means that the type arguments + // are all known), stick with the __init__ result. + if (!isPartlyUnknown(newReturnType) && !requiresSpecialization(newReturnType)) { + // Special-case the 'tuple' type specialization to use + // the homogenous arbitrary-length form. + if ( + isClassInstance(newReturnType) && + ClassType.isTupleClass(newReturnType) && + !newReturnType.tupleTypeArguments && + newReturnType.typeArguments && + newReturnType.typeArguments.length === 1 + ) { + newReturnType = specializeTupleClass(newReturnType, [ + { type: newReturnType.typeArguments[0], isUnbounded: true }, + ]); } } } + } + } - const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); + if (!newReturnType) { + newReturnType = applyExpectedTypeForConstructor(evaluator, type, inferenceContext, typeVarContext); + } else if (isClassInstance(newReturnType) && isTupleClass(newReturnType) && !newReturnType.tupleTypeArguments) { + newReturnType = applyExpectedTypeForTupleConstructor(newReturnType, inferenceContext); + } - if (type.typeAliasInfo) { - typeVarContext.addSolveForScope(type.typeAliasInfo.typeVarScopeId); - } + return { argumentErrors, returnType: newReturnType, isTypeIncomplete, overloadsUsedForCall }; +} + +function validateInitMethod( + evaluator: TypeEvaluator, + errorNode: ExpressionNode, + argList: FunctionArgument[], + type: ClassType, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined, + initMethodType: Type +): CallResult { + let returnType: Type | undefined; + let isTypeIncomplete = false; + let argumentErrors = false; + const overloadsUsedForCall: FunctionType[] = []; + + // If there is an expected type, analyze the __init__ call for each of the + // subtypes that comprise the expected type. If one or more analyzes with no + // errors, use those results. This requires special-case processing because + // the __init__ method doesn't return the expected type. It always + // returns None. + if (inferenceContext) { + returnType = mapSubtypes(inferenceContext.expectedType, (expectedSubType) => { + expectedSubType = transformPossibleRecursiveTypeAlias(expectedSubType); + + const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); + typeVarContext.addSolveForScope(getTypeVarScopeId(initMethodType)); - typeVarContext.addSolveForScope(getTypeVarScopeId(constructorMethodType)); + if ( + populateTypeVarContextBasedOnExpectedType( + evaluator, + ClassType.cloneAsInstance(type), + expectedSubType, + typeVarContext, + getTypeVarScopesForNode(errorNode) + ) + ) { + const specializedConstructor = applySolvedTypeVars(initMethodType, typeVarContext); - // Use speculative mode if we're going to later apply a constructor transform. - // This allows us to use bidirectional type inference for arguments in the transform. - const callResult = evaluator.useSpeculativeMode( - hasConstructorTransform(type) ? errorNode : undefined, - () => { + let callResult: CallResult | undefined; + callResult = evaluator.useSpeculativeMode(errorNode, () => { return evaluator.validateCallArguments( errorNode, argList, - newMethodInfo!, + { type: specializedConstructor }, + typeVarContext.clone(), + skipUnknownArgCheck + ); + }); + + if (!callResult.argumentErrors) { + // Call validateCallArguments again, this time without speculative + // mode, so any errors are reported. + callResult = evaluator.validateCallArguments( + errorNode, + argList, + { type: specializedConstructor }, typeVarContext, skipUnknownArgCheck ); - } - ); - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } - if (callResult.argumentErrors) { - argumentErrors = true; - } else if (!newReturnType) { - newReturnType = callResult.returnType; + if (callResult.argumentErrors) { + argumentErrors = true; + } - if (overloadsUsedForCall.length === 0) { overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - } - // If the constructor returned an object whose type matches the class of - // the original type being constructed, use the return type in case it was - // specialized. If it doesn't match, we'll fall back on the assumption that - // the constructed type is an instance of the class type. We need to do this - // in cases where we're inferring the return type based on a call to - // super().__new__(). - if (newReturnType) { - if (isClassInstance(newReturnType) && ClassType.isSameGenericClass(newReturnType, type)) { - // If the specialized return type derived from the __init__ - // method is "better" than the return type provided by the - // __new__ method (where "better" means that the type arguments - // are all known), stick with the __init__ result. - if ( - (!isPartlyUnknown(newReturnType) && !requiresSpecialization(newReturnType)) || - returnType === undefined - ) { - // Special-case the 'tuple' type specialization to use - // the homogenous arbitrary-length form. - if ( - isClassInstance(newReturnType) && - ClassType.isTupleClass(newReturnType) && - !newReturnType.tupleTypeArguments && - newReturnType.typeArguments && - newReturnType.typeArguments.length === 1 - ) { - newReturnType = specializeTupleClass(newReturnType, [ - { type: newReturnType.typeArguments[0], isUnbounded: true }, - ]); - } - - returnType = newReturnType; - } - } else if (!returnType && !isUnknown(newReturnType)) { - returnType = newReturnType; - } + return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubType, typeVarContext); } } - if (!returnType) { - returnType = applyExpectedTypeForConstructor(evaluator, type, inferenceContext, typeVarContext); - } else if (isClassInstance(returnType) && isTupleClass(returnType) && !returnType.tupleTypeArguments) { - returnType = applyExpectedTypeForTupleConstructor(returnType, inferenceContext); - } - validatedTypes = true; + return undefined; + }); + + if (isNever(returnType) || argumentErrors) { + returnType = undefined; } } - // If we weren't able to validate the args, analyze the expressions here - // to mark symbols referenced and report expression evaluation errors. - if (!validatedTypes) { - argList.forEach((arg) => { - if (arg.valueExpression && !evaluator.isSpeculativeModeInUse(arg.valueExpression)) { - evaluator.getTypeOfExpression(arg.valueExpression); - } - }); - } + if (!returnType) { + const typeVarContext = type.typeArguments + ? buildTypeVarContextFromSpecializedClass(type, /* makeConcrete */ false) + : new TypeVarContext(getTypeVarScopeId(type)); - // Apply a constructor transform if applicable. - if (!argumentErrors && returnType) { - const transformed = applyConstructorTransform(evaluator, errorNode, argList, type, { - argumentErrors, - returnType, - isTypeIncomplete, - }); + typeVarContext.addSolveForScope(getTypeVarScopeId(initMethodType)); + const callResult = evaluator.validateCallArguments( + errorNode, + argList, + { type: initMethodType }, + typeVarContext, + skipUnknownArgCheck + ); - returnType = transformed.returnType; + let adjustedClassType = type; + if ( + callResult.specializedInitSelfType && + isClassInstance(callResult.specializedInitSelfType) && + ClassType.isSameGenericClass(callResult.specializedInitSelfType, adjustedClassType) + ) { + adjustedClassType = ClassType.cloneAsInstantiable(callResult.specializedInitSelfType); + } - if (transformed.isTypeIncomplete) { + returnType = applyExpectedTypeForConstructor( + evaluator, + adjustedClassType, + /* inferenceContext */ undefined, + typeVarContext + ); + + if (callResult.isTypeIncomplete) { isTypeIncomplete = true; } - if (transformed.argumentErrors) { + if (callResult.argumentErrors) { argumentErrors = true; + } else { + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); } } @@ -446,99 +592,15 @@ function validateMetaclassCall( return undefined; } -// For a constructor call that targets a generic class and an "expected type" -// (i.e. bidirectional inference), this function attempts to infer the correct -// specialized return type for the constructor. -function validateConstructorMethodWithContext( - evaluator: TypeEvaluator, - errorNode: ExpressionNode, - argList: FunctionArgument[], - type: ClassType, - skipUnknownArgCheck: boolean, - inferenceContext: InferenceContext, - constructorMethodType: Type -): CallResult | undefined { - let isTypeIncomplete = false; - let argumentErrors = false; - const overloadsUsedForCall: FunctionType[] = []; - - const returnType = mapSubtypes(inferenceContext.expectedType, (expectedSubType) => { - expectedSubType = transformPossibleRecursiveTypeAlias(expectedSubType); - - const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); - typeVarContext.addSolveForScope(getTypeVarScopeId(constructorMethodType)); - - if ( - populateTypeVarContextBasedOnExpectedType( - evaluator, - ClassType.cloneAsInstance(type), - expectedSubType, - typeVarContext, - getTypeVarScopesForNode(errorNode) - ) - ) { - const specializedConstructor = applySolvedTypeVars(constructorMethodType, typeVarContext); - - let callResult: CallResult | undefined; - evaluator.useSpeculativeMode(errorNode, () => { - callResult = evaluator.validateCallArguments( - errorNode, - argList, - { type: specializedConstructor }, - typeVarContext.clone(), - skipUnknownArgCheck - ); - }); - - if (!callResult!.argumentErrors) { - // Call validateCallArguments again, this time without speculative - // mode, so any errors are reported. - callResult = evaluator.validateCallArguments( - errorNode, - argList, - { type: specializedConstructor }, - typeVarContext, - skipUnknownArgCheck - ); - - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } - - if (callResult.argumentErrors) { - argumentErrors = true; - } - - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - - return applyExpectedSubtypeForConstructor( - evaluator, - type, - expectedSubType, - inferenceContext, - typeVarContext - ); - } - } - - return undefined; - }); - - if (isNever(returnType)) { - return undefined; - } - - return { returnType, isTypeIncomplete, argumentErrors, overloadsUsedForCall }; -} - function applyExpectedSubtypeForConstructor( evaluator: TypeEvaluator, type: ClassType, expectedSubtype: Type, - inferenceContext: InferenceContext, typeVarContext: TypeVarContext ): Type | undefined { - const specializedType = applySolvedTypeVars(ClassType.cloneAsInstance(type), typeVarContext); + const specializedType = applySolvedTypeVars(ClassType.cloneAsInstance(type), typeVarContext, { + applyInScopePlaceholders: true, + }); if (!evaluator.assignType(expectedSubtype, specializedType)) { return undefined; @@ -564,13 +626,7 @@ function applyExpectedTypeForConstructor( if (inferenceContext) { const specializedExpectedType = mapSubtypes(inferenceContext.expectedType, (expectedSubtype) => { - return applyExpectedSubtypeForConstructor( - evaluator, - type, - expectedSubtype, - inferenceContext, - typeVarContext - ); + return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubtype, typeVarContext); }); if (!isNever(specializedExpectedType)) { @@ -742,8 +798,31 @@ export function createFunctionFromConstructor( return constructorFunction; } -// Determines whether we should skip argument validation. This is required -// for certain synthesized constructor types, namely NamedTuples. -function shouldSkipConstructorCheck(type: Type) { - return isFunction(type) && FunctionType.isSkipConstructorCheck(type); +// If __new__ returns a type that is not an instance of the class, skip the +// __init__ method evaluation. This is consistent with the behavior of the +// type.__call__ runtime behavior. +function shouldSkipInitEvaluation(evaluator: TypeEvaluator, classType: ClassType, newMethodReturnType: Type): boolean { + const returnType = evaluator.makeTopLevelTypeVarsConcrete(newMethodReturnType); + + let skipInitCheck = false; + doForEachSubtype(returnType, (subtype) => { + if (isAnyOrUnknown(subtype)) { + return; + } + + if (isClassInstance(subtype)) { + const inheritanceChain: InheritanceChain = []; + const isDerivedFrom = ClassType.isDerivedFrom(subtype, classType, inheritanceChain); + + if (!isDerivedFrom) { + skipInitCheck = true; + } + + return; + } + + skipInitCheck = true; + }); + + return skipInitCheck; } diff --git a/packages/pyright-internal/src/analyzer/namedTuples.ts b/packages/pyright-internal/src/analyzer/namedTuples.ts index fa641ce71..ed4e1c2e3 100644 --- a/packages/pyright-internal/src/analyzer/namedTuples.ts +++ b/packages/pyright-internal/src/analyzer/namedTuples.ts @@ -305,11 +305,8 @@ export function createNamedTupleType( entryTypes.push(AnyType.create(/* isEllipsis */ true)); } - // Always use generic parameters for __init__. The __new__ method - // will handle property type checking. We may need to disable default - // parameter processing for __new__ (see isAssignmentToDefaultsFollowingNamedTuple), - // and we don't want to do it for __init__ as well. - const initType = FunctionType.createSynthesizedInstance('__init__', FunctionTypeFlags.SkipConstructorCheck); + // Always use generic parameters for __init__. + const initType = FunctionType.createSynthesizedInstance('__init__'); FunctionType.addParameter(initType, selfParameter); FunctionType.addDefaultParameters(initType); initType.details.declaredReturnType = NoneType.createInstance(); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 7ec14e34c..5e3854018 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -2128,15 +2128,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions !!methodType && isFunction(methodType) && methodType.details.fullName === 'builtins.object.__init__'; - const isSkipConstructor = - !!methodType && isFunction(methodType) && FunctionType.isSkipConstructorCheck(methodType); const isDefaultParams = methodType && isFunction(methodType) && FunctionType.hasDefaultParameters(methodType); // If there was no `__init__` or the only `__init__` that was found was from // the `object` class or accepts only default parameters(* args, ** kwargs), // see if we can find a better signature from the `__new__` method. - if (!methodType || isObjectInit || isSkipConstructor || isDefaultParams) { + if (!methodType || isObjectInit || isDefaultParams) { const constructorType = getBoundMethod( subtype, '__new__', @@ -10219,27 +10217,39 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // the expected type if possible. // Determine which type arguments are needed to match the expected type. - if ( - isClassInstance(effectiveReturnType) && - isClassInstance(effectiveExpectedType) && - !isTypeSame(effectiveReturnType, effectiveExpectedType) - ) { - const tempTypeVarContext = new TypeVarContext(getTypeVarScopeId(effectiveReturnType)); - populateTypeVarContextBasedOnExpectedType( - evaluatorInterface, - effectiveReturnType, - effectiveExpectedType, - tempTypeVarContext, - ParseTreeUtils.getTypeVarScopesForNode(errorNode) - ); + if (isClassInstance(effectiveReturnType)) { + // If the return type is a class and the expected type is a union that contains + // that class, see if we can eliminate the other subtypes in the union. + if (isUnion(effectiveExpectedType)) { + const filteredType = mapSubtypes(effectiveExpectedType, (subtype) => { + return isClassInstance(subtype) && ClassType.isSameGenericClass(effectiveReturnType, subtype) + ? subtype + : undefined; + }); - const genericReturnType = ClassType.cloneForSpecialization( - effectiveReturnType, - /* typeArguments */ undefined, - /* isTypeArgumentExplicit */ false - ); + if (isClassInstance(filteredType)) { + effectiveExpectedType = filteredType; + } + } - effectiveExpectedType = applySolvedTypeVars(genericReturnType, tempTypeVarContext); + if (isClassInstance(effectiveExpectedType) && !isTypeSame(effectiveReturnType, effectiveExpectedType)) { + const tempTypeVarContext = new TypeVarContext(getTypeVarScopeId(effectiveReturnType)); + populateTypeVarContextBasedOnExpectedType( + evaluatorInterface, + effectiveReturnType, + effectiveExpectedType, + tempTypeVarContext, + ParseTreeUtils.getTypeVarScopesForNode(errorNode) + ); + + const genericReturnType = ClassType.cloneForSpecialization( + effectiveReturnType, + /* typeArguments */ undefined, + /* isTypeArgumentExplicit */ false + ); + + effectiveExpectedType = applySolvedTypeVars(genericReturnType, tempTypeVarContext); + } } else if (isFunction(effectiveReturnType)) { // If the return type is a callable and the expected type is a union that // includes one or more non-callables, filter those out. diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 23f4aeea3..76a81377e 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1186,11 +1186,6 @@ export const enum FunctionTypeFlags { // for implied methods such as those used in namedtuple, dataclass, etc. SynthesizedMethod = 1 << 6, - // For some synthesized classes (in particular, NamedTuple), the - // __init__ method is created with default parameters, so we will - // skip the constructor check for these methods. - SkipConstructorCheck = 1 << 7, - // Function is decorated with @overload Overloaded = 1 << 8, @@ -1774,10 +1769,6 @@ export namespace FunctionType { return (type.details.flags & FunctionTypeFlags.SynthesizedMethod) !== 0; } - export function isSkipConstructorCheck(type: FunctionType): boolean { - return (type.details.flags & FunctionTypeFlags.SkipConstructorCheck) !== 0; - } - export function isOverloaded(type: FunctionType): boolean { return (type.details.flags & FunctionTypeFlags.Overloaded) !== 0; } diff --git a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts index 34894323e..79ced6c6e 100644 --- a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts +++ b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts @@ -455,7 +455,6 @@ const FunctionTypeFlagsToString: [FunctionTypeFlags, string][] = [ [FunctionTypeFlags.PartiallyEvaluated, 'PartiallyEvaluated'], [FunctionTypeFlags.PyTypedDefinition, 'PyTypedDefinition'], [FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck, 'SkipArgsKwargsCompatibilityCheck'], - [FunctionTypeFlags.SkipConstructorCheck, 'SkipConstructorCheck'], [FunctionTypeFlags.StaticMethod, 'StaticMethod'], [FunctionTypeFlags.StubDefinition, 'StubDefinition'], [FunctionTypeFlags.SynthesizedMethod, 'SynthesizedMethod'], diff --git a/packages/pyright-internal/src/tests/samples/constructor15.py b/packages/pyright-internal/src/tests/samples/constructor15.py index c9b76b48d..caad8a4c9 100644 --- a/packages/pyright-internal/src/tests/samples/constructor15.py +++ b/packages/pyright-internal/src/tests/samples/constructor15.py @@ -17,7 +17,7 @@ def __new__(cls, m: _M, n: _N) -> "A[_M, _N]": class B(Generic[_M, _N]): - def __new__(cls, m: _M, n: _N) -> A[_M, _N]: + def __new__(cls, m: _M, n: _N) -> "B[_M, _N]": ... def __init__(self, *args: Any, **kwargs: Any) -> None: @@ -28,7 +28,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: class C(Generic[_M, _N]): - def __new__(cls, m: _M, n: _N) -> A[_M, _N]: + def __new__(cls, m: _M, n: _N) -> "C[_M, _N]": ... def __init__(self, m: _M, n: _N) -> None: diff --git a/packages/pyright-internal/src/tests/samples/constructor16.py b/packages/pyright-internal/src/tests/samples/constructor16.py new file mode 100644 index 000000000..32e24df35 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/constructor16.py @@ -0,0 +1,31 @@ +# This sample tests the case where a class defines a __new__ method +# that returns a class other than the owning class. + + +class A: + def __init__(self) -> None: + pass + + +class B(A): + def __new__(cls) -> A: + return A() + + def __init__(self, a: int) -> None: + pass + + +class C(B): + def __init__(self, a: int) -> None: + pass + + +B() + +# This should generate an error because B.__init__ is never called. +B(1) + +C() + +# This should generate an error because C.__init__ is never called. +C(1) diff --git a/packages/pyright-internal/src/tests/samples/specialization2.py b/packages/pyright-internal/src/tests/samples/specialization2.py index eb08bebb1..5720652b6 100644 --- a/packages/pyright-internal/src/tests/samples/specialization2.py +++ b/packages/pyright-internal/src/tests/samples/specialization2.py @@ -19,7 +19,6 @@ class Right(Generic[A]): right: A -# Note that this Union type has generic parameters. Either = Union[Left[E], Right[A]] @@ -44,7 +43,6 @@ def accepts_only_right_int(p: Right[Any]): aa = fmap(square, Left("s")) -# This should not generate any errors. if isinstance(aa, Left): accepts_only_left_str(aa) else: diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 2083b5787..5c3f583d8 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1378,6 +1378,12 @@ test('Constructor15', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Constructor16', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor16.py']); + + TestUtils.validateResults(analysisResults, 2); +}); + test('InconsistentConstructor1', () => { const configOptions = new ConfigOptions('.'); From c51bb4b7466ec009f7b2b2dccad246d6defadeaa Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 12 May 2023 23:04:40 -0700 Subject: [PATCH 157/525] Implemented a check for an attempt to invoke a static or class method that is marked abstract. This addresses https://github.com/python/mypy/issues/14939. --- .../src/analyzer/typeEvaluator.ts | 24 ++++++++ .../src/localization/localize.ts | 2 + .../src/localization/package.nls.en-us.json | 1 + .../src/tests/checker.test.ts | 6 ++ .../src/tests/samples/abstractClass10.py | 55 +++++++++++++++++++ 5 files changed, 88 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/abstractClass10.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 5e3854018..e1fe7eb6d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -7521,6 +7521,30 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions addError(Localizer.Diagnostic.revealLocalsArgs(), node); } } else { + // Check for an attempt to invoke an abstract static or class method. + if ( + isFunction(baseTypeResult.type) && + baseTypeResult.type.boundToType && + isInstantiableClass(baseTypeResult.type.boundToType) && + !baseTypeResult.type.boundToType.includeSubclasses + ) { + if (FunctionType.isAbstractMethod(baseTypeResult.type)) { + if ( + FunctionType.isStaticMethod(baseTypeResult.type) || + FunctionType.isClassMethod(baseTypeResult.type) + ) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.abstractMethodInvocation().format({ + method: baseTypeResult.type.details.name, + }), + node.leftExpression + ); + } + } + } + const callResult = validateCallArguments( node, argList, diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index b306b0344..dd1df935f 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -167,6 +167,8 @@ export function loadStringsForLocale(locale: string, localeMap: Map export namespace Localizer { export namespace Diagnostic { + export const abstractMethodInvocation = () => + new ParameterizedString<{ method: string }>(getRawString('Diagnostic.abstractMethodInvocation')); export const annotatedParamCountMismatch = () => new ParameterizedString<{ expected: number; received: number }>( getRawString('Diagnostic.annotatedParamCountMismatch') diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index ff5cc8103..273e392f2 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -1,5 +1,6 @@ { "Diagnostic": { + "abstractMethodInvocation": "Method \"{method}\" cannot be called because it is abstract", "annotatedParamCountMismatch": "Parameter annotation count mismatch: expected {expected} but received {received}", "annotatedTypeArgMissing": "Expected one type argument and one or more annotations for \"Annotated\"", "annotationFormatString": "Type annotations cannot use format string literals (f-strings)", diff --git a/packages/pyright-internal/src/tests/checker.test.ts b/packages/pyright-internal/src/tests/checker.test.ts index 819e6d927..e6dd75e1d 100644 --- a/packages/pyright-internal/src/tests/checker.test.ts +++ b/packages/pyright-internal/src/tests/checker.test.ts @@ -113,6 +113,12 @@ test('AbstractClass9', () => { TestUtils.validateResults(analysisResults, 0); }); +test('AbstractClass10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['abstractClass10.py']); + + TestUtils.validateResults(analysisResults, 6); +}); + test('Constants1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constants1.py']); diff --git a/packages/pyright-internal/src/tests/samples/abstractClass10.py b/packages/pyright-internal/src/tests/samples/abstractClass10.py new file mode 100644 index 000000000..ce4ffd436 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/abstractClass10.py @@ -0,0 +1,55 @@ +# This sample tests the detection of static or class method invocations +# where the method is marked abstract. + +from abc import ABC, abstractmethod + + +class A(ABC): + @staticmethod + @abstractmethod + def method1() -> None: + ... + + @classmethod + @abstractmethod + def method2(cls) -> None: + ... + + +# This should generate an error. +A.method1() + +# This should generate an error. +A.method2() + + +class B(A): + @staticmethod + def method1() -> None: + # This should generate an error. + return super().method1() + + @classmethod + def method2(cls) -> None: + # This should generate an error. + return super().method2() + + +B.method1() +B.method2() + + +def func1(a: type[A]): + a.method1() + a.method2() + + +class C(A): + ... + + +# This should generate an error. +C.method1() + +# This should generate an error. +C.method2() From ba18f421d1b57c433156cbc6934e0893abc130db Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 13 May 2023 15:56:26 -0700 Subject: [PATCH 158/525] Deprecated command-line options 'typeshed-path' and 'venv-path' in favor of 'typeshedpath' and 'venvpath'. The hyphenated options were inconsistent with the conventions used for other options. --- docs/command-line.md | 4 ++-- docs/import-resolution.md | 4 ++-- packages/pyright-internal/src/pyright.ts | 20 ++++++++++++++++---- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/docs/command-line.md b/docs/command-line.md index ab46789a0..9855355e4 100644 --- a/docs/command-line.md +++ b/docs/command-line.md @@ -17,8 +17,8 @@ Pyright can be run as either a VS Code extension or as a node-based command-line | --pythonversion `` | Analyze for version (3.3, 3.4, etc.) | | --skipunannotated | Skip type analysis of unannotated functions | | --stats | Print detailed performance stats | -| -t, --typeshed-path `` | Use typeshed type stubs at this location (2) | -| -v, --venv-path `` | Directory that contains virtual environments (3) | +| -t, --typeshedpath `` | Use typeshed type stubs at this location (2) | +| -v, --venvpath `` | Directory that contains virtual environments (3) | | --verbose | Emit verbose diagnostics | | --verifytypes `` | Verify completeness of types in py.typed package | | --version | Print pyright version | diff --git a/docs/import-resolution.md b/docs/import-resolution.md index 84b55f08c..5e0ccfa91 100644 --- a/docs/import-resolution.md +++ b/docs/import-resolution.md @@ -33,9 +33,9 @@ Pyright does not require a Python environment to be configured if all imports ca Pyright uses the following mechanisms (in priority order) to determine which Python environment to use: -1. If a `venv` name is specified along with a `python.venvPath` setting (or a `--venv-path` command-line argument), it appends the venv name to the specified venv path. +1. If a `venv` name is specified along with a `python.venvPath` setting (or a `--venvpath` command-line argument), it appends the venv name to the specified venv path. This mechanism is not recommended for most users because it is less robust than the next two options because it relies on pyright’s internal logic to determine the import resolution paths based on the virtual environment directories and files. The other two mechanisms (2 and 3 below) use the configured python interpreter to determine the import resolution paths (the value of `sys.path`). -2. If no `venv` is specified in the config file, use the `python.pythonPath` setting. This setting is defined by the VS Code Python extension and can be configured using the Python extension’s environment picker interface. More recent versions of the Python extension no longer store the selected Python environment in the `python.pythonPath` setting and instead use a storage mechanism that is private to the extension. Pyright is able to access this through an API exposed by the Python extension. +2. Use the `python.pythonPath` setting. This setting is defined by the VS Code Python extension and can be configured using the Python extension’s environment picker interface. More recent versions of the Python extension no longer store the selected Python environment in the `python.pythonPath` setting and instead use a storage mechanism that is private to the extension. Pyright is able to access this through an API exposed by the Python extension. 3. As a fallback, use the default Python environment (i.e. the one that is invoked when typing `python` in the shell). diff --git a/packages/pyright-internal/src/pyright.ts b/packages/pyright-internal/src/pyright.ts index bfebe4d1f..8b020a791 100644 --- a/packages/pyright-internal/src/pyright.ts +++ b/packages/pyright-internal/src/pyright.ts @@ -140,8 +140,10 @@ async function processArgs(): Promise { { name: 'pythonversion', type: String }, { name: 'skipunannotated', type: Boolean }, { name: 'stats', type: Boolean }, - { name: 'typeshed-path', alias: 't', type: String }, - { name: 'venv-path', alias: 'v', type: String }, + { name: 'typeshed-path', type: String }, + { name: 'typeshedpath', alias: 't', type: String }, + { name: 'venv-path', type: String }, + { name: 'venvpath', alias: 'v', type: String }, { name: 'verifytypes', type: String }, { name: 'verbose', type: Boolean }, { name: 'version', type: Boolean }, @@ -247,13 +249,23 @@ async function processArgs(): Promise { } if (args['venv-path']) { + console.warn(`'venv-path' option is deprecated; use 'venvpath' instead`); options.venvPath = combinePaths(process.cwd(), normalizePath(args['venv-path'])); } + if (args['venvpath']) { + options.venvPath = combinePaths(process.cwd(), normalizePath(args['venvpath'])); + } + if (args['typeshed-path']) { + console.warn(`'typeshed-path' option is deprecated; use 'typeshedpath' instead`); options.typeshedPath = combinePaths(process.cwd(), normalizePath(args['typeshed-path'])); } + if (args['typeshedpath']) { + options.typeshedPath = combinePaths(process.cwd(), normalizePath(args['typeshedpath'])); + } + if (args.createstub) { options.typeStubTargetImportName = args.createstub; } @@ -697,8 +709,8 @@ function printUsage() { ' --pythonversion Analyze for a specific version (3.3, 3.4, etc.)\n' + ' --skipunannotated Skip analysis of functions with no type annotations\n' + ' --stats Print detailed performance stats\n' + - ' -t,--typeshed-path Use typeshed type stubs at this location\n' + - ' -v,--venv-path Directory that contains virtual environments\n' + + ' -t,--typeshedpath Use typeshed type stubs at this location\n' + + ' -v,--venvpath Directory that contains virtual environments\n' + ' --verbose Emit verbose diagnostics\n' + ' --verifytypes Verify type completeness of a py.typed package\n' + ' --version Print Pyright version\n' + From 98b0604eb90c2c1056161e660d3b082de5c66959 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 13 May 2023 16:19:14 -0700 Subject: [PATCH 159/525] Added command-line option `pythonpath` that allows the path to the python interpreter to be specified. This addresses https://github.com/microsoft/pyright/issues/5111. --- docs/command-line.md | 15 +++++++++------ docs/settings.md | 2 +- packages/pyright-internal/src/pyright.ts | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/docs/command-line.md b/docs/command-line.md index 9855355e4..96f82d85f 100644 --- a/docs/command-line.md +++ b/docs/command-line.md @@ -13,25 +13,28 @@ Pyright can be run as either a VS Code extension or as a node-based command-line | --level | Minimum diagnostic level (error or warning) | | --outputjson | Output results in JSON format | | -p, --project `` | Use the configuration file at this location | +| --pythonpath `` | Path to the Python interpreter (2) | | --pythonplatform `` | Analyze for platform (Darwin, Linux, Windows) | | --pythonversion `` | Analyze for version (3.3, 3.4, etc.) | | --skipunannotated | Skip type analysis of unannotated functions | | --stats | Print detailed performance stats | -| -t, --typeshedpath `` | Use typeshed type stubs at this location (2) | -| -v, --venvpath `` | Directory that contains virtual environments (3) | +| -t, --typeshedpath `` | Use typeshed type stubs at this location (3) | +| -v, --venvpath `` | Directory that contains virtual environments (4) | | --verbose | Emit verbose diagnostics | | --verifytypes `` | Verify completeness of types in py.typed package | | --version | Print pyright version | | --warnings | Use exit code of 1 if warnings are reported | -| -w, --watch | Continue to run and watch for changes (4) | +| -w, --watch | Continue to run and watch for changes (5) | (1) If specific files are specified on the command line, it overrides the files or directories specified in the pyrightconfig.json or pyproject.toml file. -(2) Pyright has built-in typeshed type stubs for Python stdlib functionality. To use a different version of typeshed type stubs, specify the directory with this option. +(2) This option is the same as the language server setting `python.pythonPath`. It cannot be used with --venvpath. The --pythonpath options is recommended over --venvpath in most cases. For more details, refer to the [import resolution](import-resolution.md#configuring-your-python-environment) documentation. -(3) This option is used in conjunction with configuration file, which can refer to different virtual environments by name. For more details, refer to the [configuration](configuration.md) documentation. This allows a common config file to be checked in to the project and shared by everyone on the development team without making assumptions about the local paths to the venv directory on each developer’s computer. +(3) Pyright has built-in typeshed type stubs for Python stdlib functionality. To use a different version of typeshed type stubs, specify the directory with this option. -(4) When running in watch mode, pyright will reanalyze only those files that have been modified. These “deltas” are typically much faster than the initial analysis, which needs to analyze all files in the source tree. +(4) This option is the same as the language server setting `python.venvPath`. It used in conjunction with configuration file, which can refer to different virtual environments by name. For more details, refer to the [configuration](configuration.md) and [import resolution](import-resolution.md#configuring-your-python-environment) documentation. This allows a common config file to be checked in to the project and shared by everyone on the development team without making assumptions about the local paths to the venv directory on each developer’s computer. + +(5) When running in watch mode, pyright will reanalyze only those files that have been modified. These “deltas” are typically much faster than the initial analysis, which needs to analyze all files in the source tree. # Pyright Exit Codes diff --git a/docs/settings.md b/docs/settings.md index 3ea9bf877..8f0d0e804 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -32,5 +32,5 @@ The Pyright language server honors the following settings. **python.pythonPath** [path]: Path to Python interpreter. This setting is being deprecated by the VS Code Python extension in favor of a setting that is stored in the Python extension’s internal configuration store. Pyright supports both mechanisms but prefers the new one if both settings are present. -**python.venvPath** [path]: Path to folder with subdirectories that contain virtual environments. +**python.venvPath** [path]: Path to folder with subdirectories that contain virtual environments. The `python.pythonPath` setting is recommended over this mechanism for most users. For more details, refer to the [import resolution](import-resolution.md#configuring-your-python-environment) documentation. diff --git a/packages/pyright-internal/src/pyright.ts b/packages/pyright-internal/src/pyright.ts index 8b020a791..c8ebb35d5 100644 --- a/packages/pyright-internal/src/pyright.ts +++ b/packages/pyright-internal/src/pyright.ts @@ -136,6 +136,7 @@ async function processArgs(): Promise { { name: 'level', type: String }, { name: 'outputjson', type: Boolean }, { name: 'project', alias: 'p', type: String }, + { name: 'pythonpath', type: String }, { name: 'pythonplatform', type: String }, { name: 'pythonversion', type: String }, { name: 'skipunannotated', type: Boolean }, @@ -248,6 +249,18 @@ async function processArgs(): Promise { } } + if (args.pythonpath !== undefined) { + const incompatibleArgs = ['venv-path', 'venvpath']; + for (const arg of incompatibleArgs) { + if (args[arg] !== undefined) { + console.error(`'pythonpath' option cannot be used with '${arg}' option`); + return ExitStatus.ParameterError; + } + } + + options.pythonPath = combinePaths(process.cwd(), normalizePath(args['pythonpath'])); + } + if (args['venv-path']) { console.warn(`'venv-path' option is deprecated; use 'venvpath' instead`); options.venvPath = combinePaths(process.cwd(), normalizePath(args['venv-path'])); @@ -706,6 +719,7 @@ function printUsage() { ' --outputjson Output results in JSON format\n' + ' -p,--project Use the configuration file at this location\n' + ' --pythonplatform Analyze for a specific platform (Darwin, Linux, Windows)\n' + + ' --pythonpath Path to the Python interpreter\n' + ' --pythonversion Analyze for a specific version (3.3, 3.4, etc.)\n' + ' --skipunannotated Skip analysis of functions with no type annotations\n' + ' --stats Print detailed performance stats\n' + From 1e330a7bd699613e3fa720ccfdc0ff7fbd0662a6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 13 May 2023 16:34:26 -0700 Subject: [PATCH 160/525] Added some extra debugging code to give us some clues about a sporadic crash that is appearing in the pylance telemetry, as reported in https://github.com/microsoft/pyright/issues/5091. --- .../src/analyzer/typeUtils.ts | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 8cabc8cd3..47bd25a4c 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -8,7 +8,7 @@ */ import { appendArray } from '../common/collectionUtils'; -import { assert } from '../common/debug'; +import { assert, fail } from '../common/debug'; import { ParameterCategory } from '../parser/parseNodes'; import { DeclarationType } from './declaration'; import { Symbol, SymbolFlags, SymbolTable } from './symbol'; @@ -2712,7 +2712,7 @@ export function computeMroLinearization(classType: ClassType): boolean { // Helper function that returns true if the specified searchClass // is found in the "tail" (i.e. in elements 1 through n) of any // of the class lists. - const isInTail = (searchClass: ClassType, classLists: Type[][]) => { + function isInTail(searchClass: ClassType, classLists: Type[][]) { return classLists.some((classList) => { return ( classList.findIndex( @@ -2720,15 +2720,35 @@ export function computeMroLinearization(classType: ClassType): boolean { ) > 0 ); }); - }; + } - const filterClass = (classToFilter: ClassType, classLists: Type[][]) => { - for (let i = 0; i < classLists.length; i++) { - classLists[i] = classLists[i].filter( - (value) => !isInstantiableClass(value) || !ClassType.isSameGenericClass(value, classToFilter) + // Helper function that filters the class lists to remove any duplicate + // entries of the specified class. This is used once the class has been + // added to the MRO. + function filterClass(classToFilter: ClassType, classLists: Type[][]) { + if (classToFilter?.category !== TypeCategory.Class) { + // These "fail" calls are in place to diagnose a sporadic crash that + // we are seeing in the pylance telemetry. Delete these once we + // fix the underlying problem. + fail( + `Corrupted class type when computing MRO for ${classType.details.name}: ${JSON.stringify( + classToFilter + )}` ); } - }; + for (let i = 0; i < classLists.length; i++) { + classLists[i] = classLists[i].filter((value) => { + if (value?.category === undefined) { + fail( + `Unexpected undefined type when computing MRO for ${classType.details.name}: ${JSON.stringify( + classLists + )}` + ); + } + return !isInstantiableClass(value) || !ClassType.isSameGenericClass(value, classToFilter); + }); + } + } while (true) { let foundValidHead = false; From fc0d586488fc3e0ba3585f63daccaf666405be27 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 13 May 2023 19:35:43 -0700 Subject: [PATCH 161/525] Updated support for `type` statement to conform with the latest updates to PEP 695. It now supports forward declarations, not just self references. --- .../src/analyzer/typeEvaluator.ts | 87 ++++++++++++------- .../src/analyzer/typeEvaluatorTypes.ts | 2 + .../src/tests/samples/specialization1.py | 14 +-- .../src/tests/typeEvaluator5.test.ts | 4 +- 4 files changed, 66 insertions(+), 41 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index e1fe7eb6d..05d5ff477 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11349,7 +11349,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions defaultValueNode = argList[i].valueExpression; const argType = argList[i].typeResult?.type ?? - getTypeOfExpressionExpectingType(argList[i].valueExpression!).type; + getTypeOfExpressionExpectingType(argList[i].valueExpression!, { + allowTypeVarsWithoutScopeId: true, + }).type; typeVar.details.defaultType = convertToInstance(argType); } else { addError( @@ -11469,7 +11471,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } function getTypeVarTupleDefaultType(node: ExpressionNode): Type | undefined { - const argType = getTypeOfExpressionExpectingType(node, { allowUnpackedTuple: true }).type; + const argType = getTypeOfExpressionExpectingType(node, { + allowUnpackedTuple: true, + allowTypeVarsWithoutScopeId: true, + }).type; const isUnpackedTuple = isClass(argType) && isTupleClass(argType) && argType.isUnpacked; const isUnpackedTypeVarTuple = isUnpackedVariadicTypeVar(argType); @@ -11542,7 +11547,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (node.nodeType === ParseNodeType.List) { node.entries.forEach((paramExpr, index) => { - const typeResult = getTypeOfExpressionExpectingType(paramExpr); + const typeResult = getTypeOfExpressionExpectingType(paramExpr, { allowTypeVarsWithoutScopeId: true }); FunctionType.addParameter(functionType, { category: ParameterCategory.Simple, @@ -11558,7 +11563,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions writeTypeCache(node, { type: AnyType.create() }, /* flags */ undefined); return functionType; } else { - const typeResult = getTypeOfExpressionExpectingType(node, { allowParamSpec: true }); + const typeResult = getTypeOfExpressionExpectingType(node, { + allowParamSpec: true, + allowTypeVarsWithoutScopeId: true, + }); if (typeResult.typeErrors) { return undefined; } @@ -14475,69 +14483,78 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // path does not handle traditional type aliases, which are treated as // variables since they use normal variable assignment syntax. function getTypeOfTypeAlias(node: TypeAliasNode): Type { - const cachedType = readTypeCache(node.name, EvaluatorFlags.None); + return getTypeOfTypeAliasCommon(node, node.name, node.expression, node.typeParameters?.parameters, () => { + let typeParameters: TypeVarType[] = []; + if (node.typeParameters) { + typeParameters = evaluateTypeParameterList(node.typeParameters); + } + return typeParameters; + }); + } + + // This function is common to the handling of "type" statements and explicit + // calls to the TypeAliasType constructor. + function getTypeOfTypeAliasCommon( + declNode: ParseNode, + nameNode: NameNode, + valueNode: ExpressionNode, + typeParamNodes: TypeParameterNode[] | undefined, + getTypeParamCallback: () => TypeVarType[] | undefined + ) { + const cachedType = readTypeCache(nameNode, EvaluatorFlags.None); if (cachedType) { return cachedType; } // Synthesize a type variable that represents the type alias while we're // evaluating it. This allows us to handle recursive definitions. - const typeAliasTypeVar = TypeVarType.createInstantiable(`__type_alias_${node.name.value}`); + const typeAliasTypeVar = TypeVarType.createInstantiable(`__type_alias_${nameNode.value}`); typeAliasTypeVar.details.isSynthesized = true; - typeAliasTypeVar.details.recursiveTypeAliasName = node.name.value; - const scopeId = ParseTreeUtils.getScopeIdForNode(node.name); + typeAliasTypeVar.details.recursiveTypeAliasName = nameNode.value; + const scopeId = ParseTreeUtils.getScopeIdForNode(nameNode); typeAliasTypeVar.details.recursiveTypeAliasScopeId = scopeId; typeAliasTypeVar.scopeId = scopeId; // Write the type to the type cache. It will be replaced below. - writeTypeCache(node.name, { type: typeAliasTypeVar }, /* flags */ undefined); + writeTypeCache(nameNode, { type: typeAliasTypeVar }, /* flags */ undefined); // Set a partial type to handle recursive (self-referential) type aliases. - const scope = ScopeUtils.getScopeForNode(node); - const typeAliasSymbol = scope?.lookUpSymbolRecursive(node.name.value); - const typeAliasDecl = AnalyzerNodeInfo.getDeclaration(node); + const scope = ScopeUtils.getScopeForNode(declNode); + const typeAliasSymbol = scope?.lookUpSymbolRecursive(nameNode.value); + const typeAliasDecl = AnalyzerNodeInfo.getDeclaration(declNode); if (typeAliasDecl && typeAliasSymbol) { setSymbolResolutionPartialType(typeAliasSymbol.symbol, typeAliasDecl, typeAliasTypeVar); } - let typeParameters: TypeVarType[] = []; - if (node.typeParameters) { - typeParameters = evaluateTypeParameterList(node.typeParameters); - typeAliasTypeVar.details.recursiveTypeParameters = typeParameters; - } + const typeParameters = getTypeParamCallback(); + typeAliasTypeVar.details.recursiveTypeParameters = typeParameters; - if (!isLegalTypeAliasExpressionForm(node.expression)) { + if (!isLegalTypeAliasExpressionForm(valueNode)) { addDiagnostic( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + AnalyzerNodeInfo.getFileInfo(valueNode).diagnosticRuleSet.reportGeneralTypeIssues, DiagnosticRule.reportGeneralTypeIssues, Localizer.Diagnostic.typeAliasIllegalExpressionForm(), - node.expression + valueNode ); } - const aliasTypeResult = getTypeOfExpressionExpectingType(node.expression); + const aliasTypeResult = getTypeOfExpressionExpectingType(valueNode, { allowForwardReference: true }); let isIncomplete = false; let aliasType = aliasTypeResult.type; if (aliasTypeResult.isIncomplete) { isIncomplete = true; } - aliasType = transformTypeForTypeAlias( - aliasType, - node.name, - node.expression, - typeParameters, - node.typeParameters?.parameters - ); + aliasType = transformTypeForTypeAlias(aliasType, nameNode, valueNode, typeParameters, typeParamNodes); if (isTypeAliasRecursive(typeAliasTypeVar, aliasType)) { addDiagnostic( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + AnalyzerNodeInfo.getFileInfo(valueNode).diagnosticRuleSet.reportGeneralTypeIssues, DiagnosticRule.reportGeneralTypeIssues, Localizer.Diagnostic.typeAliasIsRecursiveDirect().format({ - name: node.name.value, + name: nameNode.value, }), - node.expression + valueNode ); aliasType = UnknownType.create(); @@ -14547,7 +14564,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // to support recursive type aliases. typeAliasTypeVar.details.boundType = aliasType; - writeTypeCache(node.name, { type: aliasType, isIncomplete }, EvaluatorFlags.None); + writeTypeCache(nameNode, { type: aliasType, isIncomplete }, EvaluatorFlags.None); return aliasType; } @@ -18732,8 +18749,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let flags = EvaluatorFlags.ExpectingType | EvaluatorFlags.EvaluateStringLiteralAsType | EvaluatorFlags.DisallowClassVar; + if (!options?.allowTypeVarsWithoutScopeId) { + flags |= EvaluatorFlags.DisallowTypeVarsWithoutScopeId; + } + const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - if (fileInfo.isStubFile) { + if (fileInfo.isStubFile || options?.allowForwardReference) { flags |= EvaluatorFlags.AllowForwardReferences; } else { flags |= EvaluatorFlags.InterpreterParsesStringLiteral; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 16de14a46..398c74b6b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -284,6 +284,8 @@ export interface ExpectedTypeOptions { allowRequired?: boolean; allowUnpackedTuple?: boolean; allowParamSpec?: boolean; + allowForwardReference?: boolean; + allowTypeVarsWithoutScopeId?: boolean; } export interface ExpectedTypeResult { diff --git a/packages/pyright-internal/src/tests/samples/specialization1.py b/packages/pyright-internal/src/tests/samples/specialization1.py index 06e782223..643ee5c06 100644 --- a/packages/pyright-internal/src/tests/samples/specialization1.py +++ b/packages/pyright-internal/src/tests/samples/specialization1.py @@ -61,13 +61,15 @@ def m4(c: Moo[List[C]]): pass -# This should generate an error: -# TypeVar constraint types can't be generic. -_T2 = TypeVar("_T2", Iterable[_T1], int) +class D(Generic[_T1]): + # This should generate an error: + # TypeVar constraint types can't be generic. + _T2 = TypeVar("_T2", Iterable[_T1], int) + + # This should generate an error: + # TypeVar bound types can't be generic. + _T3 = TypeVar("_T3", bound=Iterable[_T1]) -# This should generate an error: -# TypeVar bound types can't be generic. -_T3 = TypeVar("_T3", bound=Iterable[_T1]) # This should generate an error: # TypeVars can't be bound and constrained. diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index b58e7f7ee..6f44999c5 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -171,7 +171,7 @@ test('TypeVarDefault2', () => { configOptions.defaultPythonVersion = PythonVersion.V3_12; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVarDefault2.py'], configOptions); - TestUtils.validateResults(analysisResults, 22); + TestUtils.validateResults(analysisResults, 24); }); test('TypeVarDefault3', () => { @@ -213,7 +213,7 @@ test('TypeVarDefaultClass3', () => { configOptions.defaultPythonVersion = PythonVersion.V3_12; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVarDefaultClass3.py'], configOptions); - TestUtils.validateResults(analysisResults, 8); + TestUtils.validateResults(analysisResults, 9); }); test('TypeVarDefaultTypeAlias1', () => { From f9665a30e6d153490e660277cebd62d4268df4c6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 13 May 2023 19:45:53 -0700 Subject: [PATCH 162/525] Added support for explicit calls to `TypeAliasType` constructor, as defined in PEP 695. This addresses https://github.com/microsoft/pyright/issues/5108. --- .../src/analyzer/typeEvaluator.ts | 121 ++++++++++++++++++ .../src/localization/localize.ts | 4 + .../src/localization/package.nls.en-us.json | 4 + .../src/tests/samples/typeAliasType1.py | 45 +++++++ .../src/tests/samples/typeAliasType2.py | 47 +++++++ .../src/tests/typeEvaluator5.test.ts | 10 ++ .../stdlib/typing_extensions.pyi | 15 +++ 7 files changed, 246 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/typeAliasType1.py create mode 100644 packages/pyright-internal/src/tests/samples/typeAliasType2.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 05d5ff477..276d636e2 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -4740,6 +4740,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }), node ); + } else { + // If this is a TypeAliasType call, the recursiveTypeParameters will already + // be populated, and we need to verify that the type parameter is in the + // list of allowed type parameters. + const allowedTypeParams = leftType.details.recursiveTypeParameters; + if (allowedTypeParams) { + if (!allowedTypeParams.some((param) => param.details.name === type.details.name)) { + // Return the original type. + return { type, isRescoped: false, foundInterveningClass: false }; + } + } } return { @@ -8839,6 +8850,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return createParamSpecType(errorNode, argList); } + if (className === 'TypeAliasType') { + const newTypeAlias = createTypeAliasType(errorNode, argList); + if (newTypeAlias) { + return newTypeAlias; + } + } + if (className === 'NamedTuple') { return createNamedTupleType( evaluatorInterface, @@ -11587,6 +11605,109 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return undefined; } + // Handles a call to TypeAliasType(). This special form allows a caller to programmatically + // create a type alias as defined in PEP 695. If one or more of the arguments is incorrect, + // it returns undefined so the normal constructor evaluation can be performed (and type errors + // emitted). + function createTypeAliasType(errorNode: ExpressionNode, argList: FunctionArgument[]): Type | undefined { + if (errorNode.nodeType !== ParseNodeType.Call || !errorNode.parent || argList.length < 2) { + return undefined; + } + + if ( + errorNode.parent.nodeType !== ParseNodeType.Assignment || + errorNode.parent.rightExpression !== errorNode || + errorNode.parent.leftExpression.nodeType !== ParseNodeType.Name + ) { + addError(Localizer.Diagnostic.typeAliasTypeMustBeAssigned(), errorNode); + return undefined; + } + + const nameNode = errorNode.parent.leftExpression; + + const firstArg = argList[0]; + if (firstArg.valueExpression && firstArg.valueExpression.nodeType === ParseNodeType.StringList) { + const typeAliasName = firstArg.valueExpression.strings.map((s) => s.value).join(''); + if (typeAliasName !== nameNode.value) { + addError(Localizer.Diagnostic.typeAliasTypeNameMismatch(), firstArg.valueExpression); + } + } else { + addError(Localizer.Diagnostic.typeAliasTypeNameArg(), firstArg.valueExpression || errorNode); + return undefined; + } + + let valueExpr: ExpressionNode | undefined; + let typeParamsExpr: ExpressionNode | undefined; + + // Parse the remaining parameters. + for (let i = 1; i < argList.length; i++) { + const paramNameNode = argList[i].name; + const paramName = paramNameNode ? paramNameNode.value : undefined; + + if (paramName) { + if (paramName === 'type_params' && !typeParamsExpr) { + typeParamsExpr = argList[i].valueExpression; + } else if (paramName === 'value' && !valueExpr) { + valueExpr = argList[i].valueExpression; + } else { + return undefined; + } + } else if (i === 1) { + valueExpr = argList[i].valueExpression; + } else { + return undefined; + } + } + + // The value expression is not optional, so bail if it's not present. + if (!valueExpr) { + return undefined; + } + + let typeParameters: TypeVarType[] | undefined; + if (typeParamsExpr) { + if (typeParamsExpr.nodeType !== ParseNodeType.Tuple) { + addError(Localizer.Diagnostic.typeAliasTypeParamInvalid(), typeParamsExpr); + return undefined; + } + + typeParameters = []; + let isTypeParamListValid = true; + typeParamsExpr.expressions.map((expr) => { + let entryType = getTypeOfExpression(expr, EvaluatorFlags.ExpectingType).type; + if (isTypeVar(entryType)) { + if (entryType.scopeId) { + isTypeParamListValid = false; + } else { + entryType = TypeVarType.cloneForScopeId( + entryType, + ParseTreeUtils.getScopeIdForNode(nameNode), + nameNode.value, + TypeVarScopeType.TypeAlias + ); + } + + typeParameters!.push(entryType); + } else { + isTypeParamListValid = false; + } + }); + + if (!isTypeParamListValid) { + addError(Localizer.Diagnostic.typeAliasTypeParamInvalid(), typeParamsExpr); + return undefined; + } + } + + return getTypeOfTypeAliasCommon( + nameNode, + nameNode, + valueExpr, + /* typeParamNodes */ undefined, + () => typeParameters + ); + } + function getBooleanValue(node: ExpressionNode): boolean { if (node.nodeType === ParseNodeType.Constant) { if (node.constType === KeywordType.False) { diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index dd1df935f..0d9d76c6e 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -832,6 +832,10 @@ export namespace Localizer { export const typeAliasRedeclared = () => new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typeAliasRedeclared')); export const typeAliasStatementIllegal = () => getRawString('Diagnostic.typeAliasStatementIllegal'); + export const typeAliasTypeMustBeAssigned = () => getRawString('Diagnostic.typeAliasTypeMustBeAssigned'); + export const typeAliasTypeNameArg = () => getRawString('Diagnostic.typeAliasTypeNameArg'); + export const typeAliasTypeNameMismatch = () => getRawString('Diagnostic.typeAliasTypeNameMismatch'); + export const typeAliasTypeParamInvalid = () => getRawString('Diagnostic.typeAliasTypeParamInvalid'); export const typeAnnotationCall = () => getRawString('Diagnostic.typeAnnotationCall'); export const typeAnnotationVariable = () => getRawString('Diagnostic.typeAnnotationVariable'); export const typeArgListExpected = () => getRawString('Diagnostic.typeArgListExpected'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 273e392f2..f59970b1b 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -416,6 +416,10 @@ "typeAliasNotInModuleOrClass": "A TypeAlias can be defined only within a module or class scope", "typeAliasRedeclared": "\"{name}\" is declared as a TypeAlias and can be assigned only once", "typeAliasStatementIllegal": "Type alias statement requires Python 3.12 or newer", + "typeAliasTypeMustBeAssigned": "TypeAliasType must be assigned to a variable with the same name as the type alias", + "typeAliasTypeNameArg": "First argument to TypeAliasType must be a string literal representing the name of the type alias", + "typeAliasTypeNameMismatch": "Name of type alias must match the name of the variable to which it is assigned", + "typeAliasTypeParamInvalid": "Type parameter list must be a tuple containing only TypeVar, TypeVarTuple, or ParamSpec", "typeArgListExpected": "Expected ParamSpec, ellipsis, or list of types", "typeAnnotationCall": "Illegal type annotation: call expression not allowed", "typeAnnotationVariable": "Illegal type annotation: variable not allowed unless it is a type alias", diff --git a/packages/pyright-internal/src/tests/samples/typeAliasType1.py b/packages/pyright-internal/src/tests/samples/typeAliasType1.py new file mode 100644 index 000000000..0ba0ef312 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typeAliasType1.py @@ -0,0 +1,45 @@ +# This sample tests error cases for calls to the TypeAliasType constructor. + +from typing import TypeVar +from typing_extensions import TypeAliasType + +# This should generate an error because arguments are missing. +TA1 = TypeAliasType() + +# This should generate two errors because 1 isn't a legal name or str. +TA2 = TypeAliasType(1, int) + +my_str = "" + +# This should generate an error because my_str isn't a string literal. +TA3 = TypeAliasType(my_str, int) + +# This should generate an error because name doesn't match. +TA4 = TypeAliasType("TA3", int) + +# This should generate an error because it's not part of an assignment statement. +TypeAliasType("TA3", int) + +# This should generate an error because it has an extra argument. +TA5 = TypeAliasType("TA5", int, x=3) + +# This should generate an error because it has an extra argument. +TA6 = TypeAliasType("TA6", int, 3) + +# This should generate two errors because type_params is not a tuple. +TA7 = TypeAliasType("TA7", int, type_params=[1]) + +# This should generate an error because type_params is not a tuple of TypeVars. +TA8 = TypeAliasType("TA8", int, type_params=(int,)) + + +S = TypeVar("S") +T = TypeVar("T") + +# This should generate an error because S is not in scope. +TA9 = TypeAliasType("TA9", list[S], type_params=(T,)) + +my_tuple = (S, T) + +# This should generate an error because type_params is not a tuple. +TA10 = TypeAliasType("TA10", int, type_params=my_tuple) diff --git a/packages/pyright-internal/src/tests/samples/typeAliasType2.py b/packages/pyright-internal/src/tests/samples/typeAliasType2.py new file mode 100644 index 000000000..afa08d620 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typeAliasType2.py @@ -0,0 +1,47 @@ +# This sample tests the TypeAliasType constructor. + +from typing import Callable, ParamSpec, TypeVar, TypeVarTuple +from typing_extensions import TypeAliasType + +T1 = TypeVar("T1") + +S = TypeVar("S", bound=int) +T = TypeVar("T", bound=str) +P = ParamSpec("P") +Ts = TypeVarTuple("Ts") + +TA1 = TypeAliasType("TA1", T1 | list[TA1[T1]], type_params=(T1,)) + +x1: TA1[int] = 1 +x2: TA1[int] = [1] + +TA2 = TypeAliasType( + "TA2", + Callable[P, T] | list[S] | list[TA2[S, T, P]] | tuple[*Ts], + type_params=(S, T, P, Ts), +) + + +# This should generate an error because str isn't compatible with S bound. +x3: TA2[str, str, ..., int, str] + +x4: TA2[int, str, ..., int, str] + +# This should generate an error because int isn't compatible with T bound. +x5: TA2[int, int, ...] + +x6: TA2[int, str, [int, str], *tuple[int, str, int]] + +# This should generate an error because it is unresolvable. +TA3 = TypeAliasType("TA3", TA3) + +# This should generate an error because it is unresolvable. +TA4 = TypeAliasType("TA4", T | TA4[str], type_params=(T,)) + +TA5 = TypeAliasType("TA5", T | list[TA5[T]], type_params=(T,)) + +# This should generate an error because it is unresolvable. +TA6 = TypeAliasType("TA6", TA7) +TA7 = TypeAliasType("TA7", TA6) + +JSONNode = TypeAliasType("JSONNode", list[JSONNode] | dict[str, JSONNode] | str | float) diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 6f44999c5..2a774a289 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -276,3 +276,13 @@ test('TypePrinter1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typePrinter1.py']); TestUtils.validateResults(analysisResults, 0); }); + +test('TypeAliasType1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAliasType1.py']); + TestUtils.validateResults(analysisResults, 13); +}); + +test('TypeAliasType2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAliasType2.py']); + TestUtils.validateResults(analysisResults, 5); +}); diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi index 5437979c6..57e252697 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi @@ -329,6 +329,21 @@ class TypeVarTuple: def override(__arg: _F) -> _F: ... def deprecated(__msg: str, *, category: type[Warning] | None = ..., stacklevel: int = 1) -> Callable[[_T], _T]: ... +# PEP 695 + +@final +class TypeAliasType: + def __new__( + cls, + name: str, + value: Any, + *, + type_params: tuple[Any, ...] | None = None, + ) -> TypeAliasType: ... + def __or__(self, other: Any) -> Any: ... + __name__: str + __parameters__: tuple[Any, ...] | None + __value__: Any # Proposed extension to PEP 647 StrictTypeGuard: _SpecialForm = ... From 8ddb3e425d0051e1573a5464857626df9faa3814 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 13 May 2023 20:06:54 -0700 Subject: [PATCH 163/525] Since PEP 696 won't make it for Python 3.12, pyright now enforces the Python 3.13 requirement for this capability (unless it's in a stub file or TypeVar, TypeVarTuple, and ParamSpec are imported from typing_extensions). This addresses https://github.com/microsoft/pyright/issues/5112. --- .../src/analyzer/typeEvaluator.ts | 53 ++++++++++++++++--- .../src/common/pythonVersion.ts | 1 + .../src/localization/localize.ts | 3 +- .../src/localization/package.nls.en-us.json | 3 +- .../pyright-internal/src/parser/parser.ts | 4 ++ .../src/tests/samples/typeVar9.py | 3 +- .../src/tests/samples/typeVarDefault1.py | 4 +- .../src/tests/samples/typeVarDefault3.py | 3 +- .../tests/samples/typeVarDefaultFunction1.py | 3 +- .../tests/samples/typeVarDefaultFunction2.py | 3 +- .../tests/samples/typeVarDefaultTypeAlias2.py | 3 +- .../src/tests/typeEvaluator5.test.ts | 14 ++--- 12 files changed, 74 insertions(+), 23 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 276d636e2..10852a926 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8839,15 +8839,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (className === 'TypeVar') { - return createTypeVarType(errorNode, argList); + return createTypeVarType(errorNode, expandedSubtype, argList); } if (className === 'TypeVarTuple') { - return createTypeVarTupleType(errorNode, argList); + return createTypeVarTupleType(errorNode, expandedSubtype, argList); } if (className === 'ParamSpec') { - return createParamSpecType(errorNode, argList); + return createParamSpecType(errorNode, expandedSubtype, argList); } if (className === 'TypeAliasType') { @@ -11279,7 +11279,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { isCompatible, argType, isTypeIncomplete, skippedBareTypeVarExpectedType, condition }; } - function createTypeVarType(errorNode: ExpressionNode, argList: FunctionArgument[]): Type | undefined { + function createTypeVarType( + errorNode: ExpressionNode, + classType: ClassType, + argList: FunctionArgument[] + ): Type | undefined { let typeVarName = ''; let firstConstraintArg: FunctionArgument | undefined; let defaultValueNode: ExpressionNode | undefined; @@ -11367,10 +11371,19 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions defaultValueNode = argList[i].valueExpression; const argType = argList[i].typeResult?.type ?? - getTypeOfExpressionExpectingType(argList[i].valueExpression!, { + getTypeOfExpressionExpectingType(defaultValueNode!, { allowTypeVarsWithoutScopeId: true, }).type; typeVar.details.defaultType = convertToInstance(argType); + + const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + if ( + !fileInfo.isStubFile && + fileInfo.executionEnvironment.pythonVersion < PythonVersion.V3_13 && + classType.details.moduleName !== 'typing_extensions' + ) { + addError(Localizer.Diagnostic.typeVarDefaultIllegal(), defaultValueNode!); + } } else { addError( Localizer.Diagnostic.typeVarUnknownParam().format({ name: paramName }), @@ -11447,7 +11460,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return typeVar; } - function createTypeVarTupleType(errorNode: ExpressionNode, argList: FunctionArgument[]): Type | undefined { + function createTypeVarTupleType( + errorNode: ExpressionNode, + classType: ClassType, + argList: FunctionArgument[] + ): Type | undefined { let typeVarName = ''; if (argList.length === 0) { @@ -11476,6 +11493,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (expr) { typeVar.details.defaultType = getTypeVarTupleDefaultType(expr); } + + const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + if ( + !fileInfo.isStubFile && + fileInfo.executionEnvironment.pythonVersion < PythonVersion.V3_13 && + classType.details.moduleName !== 'typing_extensions' + ) { + addError(Localizer.Diagnostic.typeVarDefaultIllegal(), expr!); + } } else { addError( Localizer.Diagnostic.typeVarTupleUnknownParam().format({ name: argList[i].name?.value || '?' }), @@ -11509,7 +11535,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return convertToInstance(argType); } - function createParamSpecType(errorNode: ExpressionNode, argList: FunctionArgument[]): Type | undefined { + function createParamSpecType( + errorNode: ExpressionNode, + classType: ClassType, + argList: FunctionArgument[] + ): Type | undefined { if (argList.length === 0) { addError(Localizer.Diagnostic.paramSpecFirstArg(), errorNode); return undefined; @@ -11536,6 +11566,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (expr) { paramSpec.details.defaultType = getParamSpecDefaultType(expr); } + + const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + if ( + !fileInfo.isStubFile && + fileInfo.executionEnvironment.pythonVersion < PythonVersion.V3_13 && + classType.details.moduleName !== 'typing_extensions' + ) { + addError(Localizer.Diagnostic.typeVarDefaultIllegal(), expr!); + } } else { addError( Localizer.Diagnostic.paramSpecUnknownParam().format({ name: paramName }), diff --git a/packages/pyright-internal/src/common/pythonVersion.ts b/packages/pyright-internal/src/common/pythonVersion.ts index 00e050689..be1c94066 100644 --- a/packages/pyright-internal/src/common/pythonVersion.ts +++ b/packages/pyright-internal/src/common/pythonVersion.ts @@ -24,6 +24,7 @@ export enum PythonVersion { V3_10 = 0x030a, V3_11 = 0x030b, V3_12 = 0x030c, + V3_13 = 0x030d, } export const latestStablePythonVersion = PythonVersion.V3_11; diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 0d9d76c6e..cc5cae15b 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -936,9 +936,10 @@ export namespace Localizer { export const typeVarDefaultBoundMismatch = () => getRawString('Diagnostic.typeVarDefaultBoundMismatch'); export const typeVarDefaultConstraintMismatch = () => getRawString('Diagnostic.typeVarDefaultConstraintMismatch'); - export const typeVarFirstArg = () => getRawString('Diagnostic.typeVarFirstArg'); + export const typeVarDefaultIllegal = () => getRawString('Diagnostic.typeVarDefaultIllegal'); export const typeVarDefaultInvalidTypeVar = () => new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typeVarDefaultInvalidTypeVar')); + export const typeVarFirstArg = () => getRawString('Diagnostic.typeVarFirstArg'); export const typeVarNoMember = () => new ParameterizedString<{ type: string; name: string }>(getRawString('Diagnostic.typeVarNoMember')); export const typeVarNotSubscriptable = () => diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index f59970b1b..f99e8e086 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -475,8 +475,9 @@ "typeVarConstraintGeneric": "TypeVar constraint type cannot be generic", "typeVarDefaultBoundMismatch": "TypeVar default type must be a subtype of the bound type", "typeVarDefaultConstraintMismatch": "TypeVar default type must be one of the constrained types", - "typeVarFirstArg": "Expected name of TypeVar as first argument", + "typeVarDefaultIllegal": "Type variable default types require Python 3.13 or newer", "typeVarDefaultInvalidTypeVar": "Type parameter \"{name}\" has a default type that refers to one or more type variables that are out of scope", + "typeVarFirstArg": "Expected name of TypeVar as first argument", "typeVarNoMember": "TypeVar \"{type}\" has no member \"{name}\"", "typeVarNotSubscriptable": "TypeVar \"{type}\" is not subscriptable", "typeVarNotUsedByOuterScope": "Type variable \"{name}\" has no meaning in this context", diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index 6c5634903..461300345 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -551,6 +551,10 @@ export class Parser { defaultExpression = this._parseExpression( /* allowUnpack */ typeParamCategory === TypeParameterCategory.TypeVarTuple ); + + if (!this._parseOptions.isStubFile && this._getLanguageVersion() < PythonVersion.V3_13) { + this._addError(Localizer.Diagnostic.typeVarDefaultIllegal(), defaultExpression); + } } return TypeParameterNode.create(name, typeParamCategory, boundExpression, defaultExpression); diff --git a/packages/pyright-internal/src/tests/samples/typeVar9.py b/packages/pyright-internal/src/tests/samples/typeVar9.py index 4cc2f8db8..e6b1db64f 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar9.py +++ b/packages/pyright-internal/src/tests/samples/typeVar9.py @@ -4,7 +4,8 @@ # pyright: reportInvalidTypeVarUse=true -from typing import AnyStr, Callable, Dict, Generic, List, TypeVar, overload +from typing import AnyStr, Callable, Dict, Generic, List, overload +from typing_extensions import TypeVar _T = TypeVar("_T") diff --git a/packages/pyright-internal/src/tests/samples/typeVarDefault1.py b/packages/pyright-internal/src/tests/samples/typeVarDefault1.py index 71d6c169a..bf6fe1f5b 100644 --- a/packages/pyright-internal/src/tests/samples/typeVarDefault1.py +++ b/packages/pyright-internal/src/tests/samples/typeVarDefault1.py @@ -1,7 +1,7 @@ # This sample tests basic support for PEP 696 -- default types for TypeVars. -from typing import Any, ParamSpec -from typing_extensions import TypeVar, TypeVarTuple, Unpack +from typing import Any +from typing_extensions import TypeVar, TypeVarTuple, ParamSpec, Unpack S1 = TypeVar("S1") S2 = TypeVar("S2", bound=int) diff --git a/packages/pyright-internal/src/tests/samples/typeVarDefault3.py b/packages/pyright-internal/src/tests/samples/typeVarDefault3.py index 831cf6260..d573d33f2 100644 --- a/packages/pyright-internal/src/tests/samples/typeVarDefault3.py +++ b/packages/pyright-internal/src/tests/samples/typeVarDefault3.py @@ -1,7 +1,8 @@ # This sample tests error handling for PEP 696. TypeVars without default # types cannot be after TypeVars with default types. -from typing import Generic, TypeVar +from typing import Generic +from typing_extensions import TypeVar T1 = TypeVar("T1") diff --git a/packages/pyright-internal/src/tests/samples/typeVarDefaultFunction1.py b/packages/pyright-internal/src/tests/samples/typeVarDefaultFunction1.py index 0df3cb667..5b766b832 100644 --- a/packages/pyright-internal/src/tests/samples/typeVarDefaultFunction1.py +++ b/packages/pyright-internal/src/tests/samples/typeVarDefaultFunction1.py @@ -2,7 +2,8 @@ # In particular, it tests the case where a TypeVarLike goes unsolved # in a call, and a default value is used rather than Unknown. -from typing import Callable, Generic, ParamSpec, TypeVar, TypeVarTuple, Unpack +from typing import Callable, Generic, Unpack +from typing_extensions import ParamSpec, TypeVar, TypeVarTuple T = TypeVar("T", default=str) diff --git a/packages/pyright-internal/src/tests/samples/typeVarDefaultFunction2.py b/packages/pyright-internal/src/tests/samples/typeVarDefaultFunction2.py index 007b5eba1..6679003a3 100644 --- a/packages/pyright-internal/src/tests/samples/typeVarDefaultFunction2.py +++ b/packages/pyright-internal/src/tests/samples/typeVarDefaultFunction2.py @@ -2,7 +2,8 @@ # when used to define generic functions and with defaults type # expressions that refer to other type variables. -from typing import Generic, Self, TypeVar +from typing import Generic, Self +from typing_extensions import TypeVar T1 = TypeVar("T1", default=str) T2 = TypeVar("T2", default=list[T1]) diff --git a/packages/pyright-internal/src/tests/samples/typeVarDefaultTypeAlias2.py b/packages/pyright-internal/src/tests/samples/typeVarDefaultTypeAlias2.py index 74b281034..760a8ef94 100644 --- a/packages/pyright-internal/src/tests/samples/typeVarDefaultTypeAlias2.py +++ b/packages/pyright-internal/src/tests/samples/typeVarDefaultTypeAlias2.py @@ -3,7 +3,8 @@ # generic type aliases when one TypeVar default expression refers # to another. -from typing import Callable, Generic, ParamSpec, TypeVar, TypeVarTuple, Unpack +from typing import Callable, Generic, Unpack +from typing_extensions import ParamSpec, TypeVar, TypeVarTuple T1 = TypeVar("T1", default=str) T2 = TypeVar("T2", default=T1) diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 2a774a289..7c56d5798 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -168,7 +168,7 @@ test('TypeVarDefault1', () => { test('TypeVarDefault2', () => { const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_12; + configOptions.defaultPythonVersion = PythonVersion.V3_13; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVarDefault2.py'], configOptions); TestUtils.validateResults(analysisResults, 24); @@ -181,7 +181,7 @@ test('TypeVarDefault3', () => { test('TypeVarDefault4', () => { const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_12; + configOptions.defaultPythonVersion = PythonVersion.V3_13; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVarDefault4.py'], configOptions); TestUtils.validateResults(analysisResults, 3); @@ -189,7 +189,7 @@ test('TypeVarDefault4', () => { test('TypeVarDefault5', () => { const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_12; + configOptions.defaultPythonVersion = PythonVersion.V3_13; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVarDefault5.py'], configOptions); TestUtils.validateResults(analysisResults, 0); @@ -202,7 +202,7 @@ test('TypeVarDefaultClass1', () => { test('TypeVarDefaultClass2', () => { const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_12; + configOptions.defaultPythonVersion = PythonVersion.V3_13; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVarDefaultClass2.py'], configOptions); TestUtils.validateResults(analysisResults, 8); @@ -210,7 +210,7 @@ test('TypeVarDefaultClass2', () => { test('TypeVarDefaultClass3', () => { const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_12; + configOptions.defaultPythonVersion = PythonVersion.V3_13; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVarDefaultClass3.py'], configOptions); TestUtils.validateResults(analysisResults, 9); @@ -228,7 +228,7 @@ test('TypeVarDefaultTypeAlias2', () => { test('TypeVarDefaultTypeAlias3', () => { const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_12; + configOptions.defaultPythonVersion = PythonVersion.V3_13; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVarDefaultTypeAlias3.py'], configOptions); TestUtils.validateResults(analysisResults, 9); @@ -246,7 +246,7 @@ test('TypeVarDefaultFunction2', () => { test('TypeVarDefaultFunction3', () => { const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_12; + configOptions.defaultPythonVersion = PythonVersion.V3_13; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVarDefaultFunction3.py'], configOptions); TestUtils.validateResults(analysisResults, 1); From e71a1a7b4be9450af8b659490db433785fc58982 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 14 May 2023 17:04:54 -0700 Subject: [PATCH 164/525] Changed import resolver to use sets and maps rather than arrays for tracking implicit imports. Arrays are fine if there are a few dozen implicit imports, but if there are thousands, they become a performance issue. This helps to address https://github.com/microsoft/pylance-release/issues/4362. --- .../pyright-internal/src/analyzer/binder.ts | 6 +- .../pyright-internal/src/analyzer/checker.ts | 4 +- .../src/analyzer/importResolver.ts | 63 ++++++++++--------- .../src/analyzer/importResult.ts | 4 +- .../src/analyzer/importStatementUtils.ts | 2 +- .../pyright-internal/src/analyzer/program.ts | 8 ++- .../src/languageService/completionProvider.ts | 7 +-- .../pyright-internal/src/parser/parser.ts | 4 +- .../src/tests/importResolver.test.ts | 6 +- 9 files changed, 55 insertions(+), 49 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index b5adadc6a..e49dde574 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -1792,9 +1792,7 @@ export class Binder extends ParseTreeWalker { // The symbol wasn't in the target module's symbol table. It's probably // an implicitly-imported submodule referenced by __all__. if (importInfo && importInfo.filteredImplicitImports) { - const implicitImport = importInfo.filteredImplicitImports.find( - (imp) => imp.name === name - ); + const implicitImport = importInfo.filteredImplicitImports.get(name); if (implicitImport) { const submoduleFallback: AliasDeclaration = { @@ -1881,7 +1879,7 @@ export class Binder extends ParseTreeWalker { // Is the import referring to an implicitly-imported module? let implicitImport: ImplicitImport | undefined; if (importInfo && importInfo.filteredImplicitImports) { - implicitImport = importInfo.filteredImplicitImports.find((imp) => imp.name === importedName); + implicitImport = importInfo.filteredImplicitImports.get(importedName); } let submoduleFallback: AliasDeclaration | undefined; diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 602c607dc..834d2d689 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -3890,7 +3890,7 @@ export class Checker extends ParseTreeWalker { const desc: ImportedModuleDescriptor = { nameParts: moduleName.split('.'), leadingDots: 0, - importedSymbols: [], + importedSymbols: new Set(), }; const stdlibPath = this._importResolver.getTypeshedStdLibPath(this._fileInfo.executionEnvironment); if ( @@ -3949,7 +3949,7 @@ export class Checker extends ParseTreeWalker { const module: ImportedModuleDescriptor = { nameParts, leadingDots: 0, - importedSymbols: [], + importedSymbols: new Set(), }; // Make sure the module is a potential stdlib one so we don't spend the time diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 140cab78c..b7b7634c9 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -54,7 +54,7 @@ export interface ImportedModuleDescriptor { leadingDots: number; nameParts: string[]; hasTrailingDot?: boolean | undefined; - importedSymbols: string[] | undefined; + importedSymbols: Set | undefined; } export interface ModuleNameAndType { @@ -70,7 +70,7 @@ export interface ModuleNameInfoFromPath { export function createImportedModuleDescriptor(moduleName: string): ImportedModuleDescriptor { if (moduleName.length === 0) { - return { leadingDots: 0, nameParts: [], importedSymbols: [] }; + return { leadingDots: 0, nameParts: [], importedSymbols: new Set() }; } let startIndex = 0; @@ -86,7 +86,7 @@ export function createImportedModuleDescriptor(moduleName: string): ImportedModu return { leadingDots, nameParts: moduleName.slice(startIndex).split('.'), - importedSymbols: [], + importedSymbols: new Set(), }; } @@ -582,7 +582,7 @@ export class ImportResolver { execEnv: ExecutionEnvironment, importName: string, importResult: ImportResult, - importedSymbols: string[] | undefined, + importedSymbols: Set | undefined, fromUserFile: boolean ) { getOrAdd(this._cachedImportResults, execEnv.root, () => new Map()).set( @@ -757,26 +757,32 @@ export class ImportResolver { // Potentially modifies the ImportResult by removing some or all of the // implicit import entries. Only the imported symbols should be included. - protected filterImplicitImports(importResult: ImportResult, importedSymbols: string[] | undefined): ImportResult { + protected filterImplicitImports( + importResult: ImportResult, + importedSymbols: Set | undefined + ): ImportResult { if (importedSymbols === undefined) { const newImportResult = Object.assign({}, importResult); - newImportResult.filteredImplicitImports = []; + newImportResult.filteredImplicitImports = new Map(); return newImportResult; } - if (importedSymbols.length === 0) { + if (importedSymbols.size === 0) { return importResult; } - if (importResult.implicitImports.length === 0) { + if (importResult.implicitImports.size === 0) { return importResult; } - const filteredImplicitImports = importResult.implicitImports.filter((implicitImport) => { - return importedSymbols.some((sym) => sym === implicitImport.name); + const filteredImplicitImports = new Map(); + importResult.implicitImports.forEach((implicitImport) => { + if (importedSymbols.has(implicitImport.name)) { + filteredImplicitImports.set(implicitImport.name, implicitImport); + } }); - if (filteredImplicitImports.length === importResult.implicitImports.length) { + if (filteredImplicitImports.size === importResult.implicitImports.size) { return importResult; } @@ -818,8 +824,8 @@ export class ImportResolver { importType: ImportType.Local, isStubFile: false, isNativeLib: false, - implicitImports: [], - filteredImplicitImports: [], + implicitImports: new Map(), + filteredImplicitImports: new Map(), nonStubImportResult: undefined, }; @@ -1172,7 +1178,7 @@ export class ImportResolver { let isStubPackage = false; let isStubFile = false; let isNativeLib = false; - let implicitImports: ImplicitImport[] = []; + let implicitImports = new Map(); let packageDirectory: string | undefined; let pyTypedInfo: PyTypedInfo | undefined; @@ -1348,7 +1354,7 @@ export class ImportResolver { private _lookUpResultsInCache( execEnv: ExecutionEnvironment, importName: string, - importedSymbols: string[] | undefined, + importedSymbols: Set | undefined, fromUserFile: boolean ) { const cacheForExecEnv = this._cachedImportResults.get(execEnv.root); @@ -1369,18 +1375,15 @@ export class ImportResolver { // file, so the only way that symbols can be resolved is if submodules // are present. If specific symbols were requested, make sure they // are all satisfied by submodules (as listed in the implicit imports). - private _isNamespacePackageResolved(moduleDescriptor: ImportedModuleDescriptor, implicitImports: ImplicitImport[]) { + private _isNamespacePackageResolved( + moduleDescriptor: ImportedModuleDescriptor, + implicitImports: Map + ) { if (moduleDescriptor.importedSymbols) { - if ( - !moduleDescriptor.importedSymbols.some((symbol) => { - return implicitImports.some((implicitImport) => { - return implicitImport.name === symbol; - }); - }) - ) { + if (!Array.from(moduleDescriptor.importedSymbols.keys()).some((symbol) => implicitImports.has(symbol))) { return false; } - } else if (implicitImports.length === 0) { + } else if (implicitImports.size === 0) { return false; } return true; @@ -2296,10 +2299,10 @@ export class ImportResolver { strictOnly: boolean ) { // We always resolve names based on sourceFilePath. - const moduleDescriptor = { + const moduleDescriptor: ImportedModuleDescriptor = { leadingDots: leadingDots, nameParts: [...parentNameParts, name], - importedSymbols: [], + importedSymbols: new Set(), }; // Make sure we don't use parent folder resolution when checking whether the given name is resolvable. @@ -2332,7 +2335,11 @@ export class ImportResolver { return true; } - private _findImplicitImports(importingModuleName: string, dirPath: string, exclusions: string[]): ImplicitImport[] { + private _findImplicitImports( + importingModuleName: string, + dirPath: string, + exclusions: string[] + ): Map { const implicitImportMap = new Map(); // Enumerate all of the files and directories in the path, expanding links. @@ -2421,7 +2428,7 @@ export class ImportResolver { } } - return [...implicitImportMap.values()]; + return implicitImportMap; } private _resolveNativeModuleStub( diff --git a/packages/pyright-internal/src/analyzer/importResult.ts b/packages/pyright-internal/src/analyzer/importResult.ts index ba0b40ea9..2a01c5242 100644 --- a/packages/pyright-internal/src/analyzer/importResult.ts +++ b/packages/pyright-internal/src/analyzer/importResult.ts @@ -87,12 +87,12 @@ export interface ImportResult { // List of files within the final resolved path that are implicitly // imported as part of the package - used for both traditional and // namespace packages. - implicitImports: ImplicitImport[]; + implicitImports: Map; // Implicit imports that have been filtered to include only // those symbols that are explicitly imported in a "from x import y" // statement. - filteredImplicitImports: ImplicitImport[]; + filteredImplicitImports: Map; // If resolved from a type hint (.pyi), then store the import result // from .py here. diff --git a/packages/pyright-internal/src/analyzer/importStatementUtils.ts b/packages/pyright-internal/src/analyzer/importStatementUtils.ts index d9ea485ec..4f1b70835 100644 --- a/packages/pyright-internal/src/analyzer/importStatementUtils.ts +++ b/packages/pyright-internal/src/analyzer/importStatementUtils.ts @@ -667,7 +667,7 @@ function _processImportFromNode( if (includeImplicitImports && importResult) { localImports.implicitImports = localImports.implicitImports ?? new Map(); - for (const implicitImport of importResult.implicitImports) { + for (const implicitImport of importResult.implicitImports.values()) { const importFromAs = node.imports.find((i) => i.name.value === implicitImport.name); if (importFromAs) { localImports.implicitImports.set(implicitImport.path, importFromAs); diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index db0dd4f59..1c45f0f60 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -32,8 +32,9 @@ import { stripFileExtension, } from '../common/pathUtils'; import { convertRangeToTextRange } from '../common/positionUtils'; -import { doRangesIntersect, Range } from '../common/textRange'; +import { Range, doRangesIntersect } from '../common/textRange'; import { Duration, timingStats } from '../common/timing'; +import { IndexResults } from '../languageService/symbolIndexer'; import { ParseResults } from '../parser/parser'; import { AbsoluteModuleDescriptor, ImportLookupResult, LookupImportOptions } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; @@ -53,7 +54,6 @@ import { createTypeEvaluatorWithTracker } from './typeEvaluatorWithTracker'; import { PrintTypeFlags } from './typePrinter'; import { TypeStubWriter } from './typeStubWriter'; import { Type } from './types'; -import { IndexResults } from '../languageService/symbolIndexer'; const _maxImportDepth = 256; @@ -1252,7 +1252,9 @@ export class Program { thirdPartyImportAllowed = true; } else if ( importResult.isNamespacePackage && - importResult.filteredImplicitImports.some((implicitImport) => !!implicitImport.pyTypedInfo) + Array.from(importResult.filteredImplicitImports.values()).some( + (implicitImport) => !!implicitImport.pyTypedInfo + ) ) { // Handle the case where the import targets a namespace package, and a // submodule contained within it has a py.typed marker. diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 827e1673d..e3a49917f 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -74,12 +74,12 @@ import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { ExecutionEnvironment } from '../common/configOptions'; import * as debug from '../common/debug'; import { fail } from '../common/debug'; +import { ProgramView } from '../common/extensibility'; import { fromLSPAny, toLSPAny } from '../common/lspUtils'; import { convertOffsetToPosition, convertPositionToOffset } from '../common/positionUtils'; import { PythonVersion } from '../common/pythonVersion'; import * as StringUtils from '../common/stringUtils'; -import { comparePositions, Position } from '../common/textRange'; -import { TextRange } from '../common/textRange'; +import { comparePositions, Position, TextRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { convertToTextEdits } from '../common/workspaceEditUtils'; import { @@ -114,7 +114,6 @@ import { } from './completionProviderUtils'; import { DocumentSymbolCollector } from './documentSymbolCollector'; import { getAutoImportText, getDocumentationPartsForTypeAndDecl } from './tooltipUtils'; -import { ProgramView } from '../common/extensibility'; namespace Keywords { const base: string[] = [ @@ -3036,7 +3035,7 @@ export class CompletionProvider { leadingDots: node.leadingDots, hasTrailingDot: node.hasTrailingDot || false, nameParts: node.nameParts.map((part) => part.value), - importedSymbols: [], + importedSymbols: new Set(), }; const completions = this.importResolver.getCompletionSuggestions(this.filePath, this.execEnv, moduleDescriptor); diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index 461300345..6579ec49d 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -188,7 +188,7 @@ export interface ModuleImport { // Used for "from X import Y" pattern. An empty // array implies "from X import *". - importedSymbols: string[] | undefined; + importedSymbols: Set | undefined; } export interface ArgListResult { @@ -2472,7 +2472,7 @@ export class Parser { nameNode: importFromNode.module, leadingDots: importFromNode.module.leadingDots, nameParts: importFromNode.module.nameParts.map((p) => p.value), - importedSymbols: importFromNode.imports.map((imp) => imp.name.value), + importedSymbols: new Set(importFromNode.imports.map((imp) => imp.name.value)), }); let isTypingImport = false; diff --git a/packages/pyright-internal/src/tests/importResolver.test.ts b/packages/pyright-internal/src/tests/importResolver.test.ts index 941ed934d..529e229ce 100644 --- a/packages/pyright-internal/src/tests/importResolver.test.ts +++ b/packages/pyright-internal/src/tests/importResolver.test.ts @@ -107,7 +107,7 @@ test('side by side files', () => { const sideBySideResult = importResolver.resolveImport(myFile, configOptions.findExecEnvironment(myFile), { leadingDots: 0, nameParts: ['myLib', 'partialStub'], - importedSymbols: [], + importedSymbols: new Set(), }); assert(sideBySideResult.isImportFound); @@ -121,7 +121,7 @@ test('side by side files', () => { const partialStubResult = importResolver.resolveImport(myFile, configOptions.findExecEnvironment(myFile), { leadingDots: 0, nameParts: ['myLib', 'partialStub2'], - importedSymbols: [], + importedSymbols: new Set(), }); assert(partialStubResult.isImportFound); @@ -601,7 +601,7 @@ function getImportResult( const importResult = importResolver.resolveImport(file, configOptions.findExecEnvironment(file), { leadingDots: 0, nameParts: nameParts, - importedSymbols: [], + importedSymbols: new Set(), }); return importResult; From 24a22b3d2dc25eefd3c802ee2a85459d36fb88f4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 14 May 2023 17:07:35 -0700 Subject: [PATCH 165/525] Added caching in import resolver for relative imports. Previously, we cached only absolute imports. This helps to address https://github.com/microsoft/pylance-release/issues/4362. --- .../src/analyzer/importResolver.ts | 64 ++++++++++++++----- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index b7b7634c9..ba18e531b 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -579,18 +579,22 @@ export class ImportResolver { } protected addResultsToCache( + sourceFilePath: string, execEnv: ExecutionEnvironment, importName: string, importResult: ImportResult, - importedSymbols: Set | undefined, + moduleDescriptor: ImportedModuleDescriptor | undefined, fromUserFile: boolean ) { + // If the import is relative, include the source file path in the key. + const relativeSourceFilePath = moduleDescriptor && moduleDescriptor.leadingDots > 0 ? sourceFilePath : ''; + getOrAdd(this._cachedImportResults, execEnv.root, () => new Map()).set( - this._getCacheKey(importName, fromUserFile), + this._getImportCacheKey(relativeSourceFilePath, importName, fromUserFile), importResult ); - return this.filterImplicitImports(importResult, importedSymbols); + return this.filterImplicitImports(importResult, moduleDescriptor?.importedSymbols); } // Follows import resolution algorithm defined in PEP-420: @@ -613,7 +617,6 @@ export class ImportResolver { // their stubs separately from their package implementation by appending the string // '-stubs' to its top - level directory name. We'll look there first. const importResult = this._resolveAbsoluteImport( - sourceFilePath, rootPath, execEnv, moduleDescriptor, @@ -637,7 +640,6 @@ export class ImportResolver { } return this._resolveAbsoluteImport( - sourceFilePath, rootPath, execEnv, moduleDescriptor, @@ -833,6 +835,18 @@ export class ImportResolver { // Is it a relative import? if (moduleDescriptor.leadingDots > 0) { + const cachedResults = this._lookUpResultsInCache( + sourceFilePath, + execEnv, + importName, + moduleDescriptor, + fromUserFile + ); + + if (cachedResults) { + return cachedResults; + } + const relativeImport = this._resolveRelativeImport( sourceFilePath, execEnv, @@ -843,14 +857,22 @@ export class ImportResolver { if (relativeImport) { relativeImport.isRelative = true; - return relativeImport; + + return this.addResultsToCache( + sourceFilePath, + execEnv, + importName, + relativeImport, + moduleDescriptor, + fromUserFile + ); } } else { - // Is it already cached? const cachedResults = this._lookUpResultsInCache( + sourceFilePath, execEnv, importName, - moduleDescriptor.importedSymbols, + moduleDescriptor, fromUserFile ); @@ -889,20 +911,22 @@ export class ImportResolver { } return this.addResultsToCache( + sourceFilePath, execEnv, importName, bestImport, - moduleDescriptor.importedSymbols, + moduleDescriptor, fromUserFile ); } } return this.addResultsToCache( + sourceFilePath, execEnv, importName, notFoundResult, - /* importedSymbols */ undefined, + /* moduleDescriptor */ undefined, fromUserFile ); } @@ -1151,7 +1175,6 @@ export class ImportResolver { } private _resolveAbsoluteImport( - sourceFilePath: string | undefined, rootPath: string, execEnv: ExecutionEnvironment, moduleDescriptor: ImportedModuleDescriptor, @@ -1347,14 +1370,15 @@ export class ImportResolver { }; } - private _getCacheKey(importName: string, fromUserFile: boolean) { - return `${importName}-${fromUserFile}`; + private _getImportCacheKey(sourceFilePath: string, importName: string, fromUserFile: boolean) { + return `${sourceFilePath}-${importName}-${fromUserFile}`; } private _lookUpResultsInCache( + sourceFilePath: string, execEnv: ExecutionEnvironment, importName: string, - importedSymbols: Set | undefined, + moduleDescriptor: ImportedModuleDescriptor, fromUserFile: boolean ) { const cacheForExecEnv = this._cachedImportResults.get(execEnv.root); @@ -1362,12 +1386,18 @@ export class ImportResolver { return undefined; } - const cachedEntry = cacheForExecEnv.get(this._getCacheKey(importName, fromUserFile)); + // If the import is relative, include the source file path in the key. + const relativeSourceFilePath = moduleDescriptor.leadingDots > 0 ? sourceFilePath : ''; + + const cachedEntry = cacheForExecEnv.get( + this._getImportCacheKey(relativeSourceFilePath, importName, fromUserFile) + ); + if (!cachedEntry) { return undefined; } - return this.filterImplicitImports(cachedEntry, importedSymbols); + return this.filterImplicitImports(cachedEntry, moduleDescriptor.importedSymbols); } // Determines whether a namespace package resolves all of the symbols @@ -2110,7 +2140,7 @@ export class ImportResolver { }; } - return this.filterImplicitImports(absImport, moduleDescriptor.importedSymbols); + return absImport; } private _getCompletionSuggestionsRelative( From dfd88882694b8f3aed2f036ea370381c2a30c44d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 14 May 2023 17:27:27 -0700 Subject: [PATCH 166/525] Added optimization to alias resolution that avoids the need to parse and bind a file in some cases. This addresses https://github.com/microsoft/pylance-release/issues/4362. --- .../src/analyzer/analyzerFileInfo.ts | 1 + .../src/analyzer/declarationUtils.ts | 1 + packages/pyright-internal/src/analyzer/program.ts | 15 +++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts b/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts index cd646a5f5..e6160db40 100644 --- a/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts +++ b/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts @@ -25,6 +25,7 @@ export interface AbsoluteModuleDescriptor { export interface LookupImportOptions { skipFileNeededCheck: boolean; + skipParsing?: boolean; } export type ImportLookup = ( diff --git a/packages/pyright-internal/src/analyzer/declarationUtils.ts b/packages/pyright-internal/src/analyzer/declarationUtils.ts index 3b5232f0e..8f4e66a16 100644 --- a/packages/pyright-internal/src/analyzer/declarationUtils.ts +++ b/packages/pyright-internal/src/analyzer/declarationUtils.ts @@ -285,6 +285,7 @@ export function resolveAliasDeclaration( ) { const lookupResult = importLookup(curDeclaration.submoduleFallback.path, { skipFileNeededCheck: options.skipFileNeededCheck, + skipParsing: true, }); if (!lookupResult) { return undefined; diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 1c45f0f60..01b75693c 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -1806,6 +1806,21 @@ export class Program { return undefined; } + if (options?.skipParsing) { + // Return dummy information if the caller has indicated that parsing is + // unnecessary. This is used in cases where the caller simply wants to + // know if the source file exists but is not interested in the contents. + return { + symbolTable: new Map(), + dunderAllNames: undefined, + usesUnsupportedDunderAllForm: false, + get docString() { + return undefined; + }, + isInPyTypedPackage: false, + }; + } + if (sourceFileInfo.sourceFile.isBindingRequired()) { // Bind the file if it's not already bound. Don't count this time // against the type checker. From 4360c36c2f730eef1f81ec51178cb6f5af8b22d4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 14 May 2023 18:33:12 -0700 Subject: [PATCH 167/525] Fixed a bug that led to a false positive error in an edge case condition that involves an unpacked TypeVarTuple. This addresses https://github.com/microsoft/pyright/issues/5113. --- .../src/analyzer/typeEvaluator.ts | 4 +++ .../src/tests/samples/variadicTypeVar23.py | 33 +++++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 8 +++++ 3 files changed, 45 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/variadicTypeVar23.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 10852a926..c1ee33962 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -3511,6 +3511,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If this is a TypeVarTuple *Ts, convert it to an unpacked tuple // *tuple[*Ts]. if (isVariadicTypeVar(subtype)) { + if (subtype.isVariadicInUnion) { + return subtype; + } + if (tupleClassType && isInstantiableClass(tupleClassType)) { return convertToInstance( specializeTupleClass( diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py new file mode 100644 index 000000000..bd37d51c1 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py @@ -0,0 +1,33 @@ +# This sample tests a complex combination of TypeVarTuple, +# unpacking, bidirectional type inference, and recursive calls. + +from typing import TypeVar, TypeVarTuple, Callable + +X = TypeVar("X") +Y = TypeVar("Y") +Xs = TypeVarTuple("Xs") +Ys = TypeVarTuple("Ys") + + +def nil() -> tuple[()]: + return () + + +def cons( + f: Callable[[X], Y], + g: Callable[[*Xs], tuple[*Ys]], +) -> Callable[[X, *Xs], tuple[Y, *Ys]]: + def wrapped(x: X, *xs: *Xs) -> tuple[Y, *Ys]: + y, ys = f(x), g(*xs) + return y, *ys + + return wrapped + + +def star(f: Callable[[X], Y]) -> Callable[[*tuple[X, ...]], tuple[Y, ...]]: + def wrapped(*xs: X): + if not xs: + return nil() + return cons(f, star(f))(*xs) + + return wrapped diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 5c3f583d8..60fdc4c5c 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1117,6 +1117,14 @@ test('VariadicTypeVar22', () => { TestUtils.validateResults(analysisResults, 2); }); +test('VariadicTypeVar23', () => { + const configOptions = new ConfigOptions('.'); + + configOptions.defaultPythonVersion = PythonVersion.V3_11; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['variadicTypeVar23.py'], configOptions); + TestUtils.validateResults(analysisResults, 0); +}); + test('Match1', () => { const configOptions = new ConfigOptions('.'); From 2738190a8c70458d34341683955e75d95a0d888e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 15 May 2023 11:04:25 -0700 Subject: [PATCH 168/525] Added a check for f-strings that use nested braces in the "format specifier" portion (the section after a colon). This condition generates a syntax error at runtime, so it's useful for pyright to detect and report the error. This addresses https://github.com/microsoft/pyright/issues/5115. --- .../pyright-internal/src/analyzer/checker.ts | 8 ++++++++ .../src/localization/localize.ts | 2 ++ .../src/localization/package.nls.en-us.json | 1 + .../src/parser/stringTokenUtils.ts | 20 +++++++++++++++++++ .../src/tests/samples/fstring1.py | 3 +++ .../src/tests/samples/fstring2.py | 2 +- .../src/tests/typeEvaluator4.test.ts | 2 +- 7 files changed, 36 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 834d2d689..dcee1b69f 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -1356,6 +1356,14 @@ export class Checker extends ParseTreeWalker { Localizer.Diagnostic.formatStringUnterminated(), textRange ); + } else if (error.errorType === UnescapeErrorType.NestedFormatSpecifierExpression) { + this._evaluator.addDiagnosticForTextRange( + this._fileInfo, + 'error', + '', + Localizer.Diagnostic.formatStringNestedFormatSpecifier(), + textRange + ); } }); } diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index cc5cae15b..31426c96b 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -457,6 +457,8 @@ export namespace Localizer { export const formatStringEscape = () => getRawString('Diagnostic.formatStringEscape'); export const formatStringInPattern = () => getRawString('Diagnostic.formatStringInPattern'); export const formatStringIllegal = () => getRawString('Diagnostic.formatStringIllegal'); + export const formatStringNestedFormatSpecifier = () => + getRawString('Diagnostic.formatStringNestedFormatSpecifier'); export const formatStringUnicode = () => getRawString('Diagnostic.formatStringUnicode'); export const formatStringUnterminated = () => getRawString('Diagnostic.formatStringUnterminated'); export const functionDecoratorTypeUnknown = () => getRawString('Diagnostic.functionDecoratorTypeUnknown'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index f99e8e086..f87e5cd73 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -185,6 +185,7 @@ "formatStringBytes": "Format string literals (f-strings) cannot be binary", "formatStringEscape": "Escape sequence (backslash) not allowed in expression portion of f-string", "formatStringInPattern": "Format string not allowed in pattern", + "formatStringNestedFormatSpecifier": "Expressions nested too deeply within format string specifier", "formatStringUnicode": "Format string literals (f-strings) cannot be unicode", "formatStringIllegal": "Format string literals (f-strings) require Python 3.6 or newer", "formatStringUnterminated": "Unterminated expression in f-string; missing close brace", diff --git a/packages/pyright-internal/src/parser/stringTokenUtils.ts b/packages/pyright-internal/src/parser/stringTokenUtils.ts index f3eadae54..fd0b46816 100644 --- a/packages/pyright-internal/src/parser/stringTokenUtils.ts +++ b/packages/pyright-internal/src/parser/stringTokenUtils.ts @@ -34,6 +34,7 @@ export const enum UnescapeErrorType { EscapeWithinFormatExpression, SingleCloseBraceWithinFormatLiteral, UnterminatedFormatExpression, + NestedFormatSpecifierExpression, } export interface UnescapeError { @@ -68,6 +69,7 @@ interface IncompleteFormatStringSegment { valueParts: string[]; isExpression: boolean; hasFormatSpecifier: boolean; + formatSpecifierNestCount: number; } function completeUnescapedString(incomplete: IncompleteUnescapedString): UnescapedString { @@ -125,6 +127,7 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { valueParts: [], isExpression: false, hasFormatSpecifier: false, + formatSpecifierNestCount: 0, }; let strOffset = 0; const output: IncompleteUnescapedString = { @@ -381,6 +384,7 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { appendOutputChar(curChar); strOffset += 2; } else { + // Are we parsing a format specifier? if (formatExpressionNestCount === 0) { // A single open brace within a format literal indicates that // an expression is starting. @@ -397,8 +401,19 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { valueParts: [], isExpression: true, hasFormatSpecifier: false, + formatSpecifierNestCount: 0, }; } else { + if (formatSegment.hasFormatSpecifier) { + if (formatSegment.formatSpecifierNestCount === 1) { + output.unescapeErrors.push({ + offset: strOffset, + length: 1, + errorType: UnescapeErrorType.NestedFormatSpecifierExpression, + }); + } + formatSegment.formatSpecifierNestCount++; + } appendOutputChar(curChar); strOffset++; } @@ -416,6 +431,10 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { }); strOffset++; } else { + if (formatSegment.hasFormatSpecifier) { + formatSegment.formatSpecifierNestCount--; + } + formatExpressionNestCount--; if (formatExpressionNestCount === 0) { @@ -432,6 +451,7 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { valueParts: [], isExpression: false, hasFormatSpecifier: false, + formatSpecifierNestCount: 0, }; } else { appendOutputChar(curChar); diff --git a/packages/pyright-internal/src/tests/samples/fstring1.py b/packages/pyright-internal/src/tests/samples/fstring1.py index 748a6bf87..63d62849e 100644 --- a/packages/pyright-internal/src/tests/samples/fstring1.py +++ b/packages/pyright-internal/src/tests/samples/fstring1.py @@ -78,3 +78,6 @@ l = f"{my_str:\>{width}s}" m = f"{my_str:\x00>{width}s}" n = f"{my_str:\u2007>{width}s}" + +# f-strings with nested expressions in the format string section. +o = f"{1+2:{1+2:{1+1:{1}}}}" diff --git a/packages/pyright-internal/src/tests/samples/fstring2.py b/packages/pyright-internal/src/tests/samples/fstring2.py index b5c0f13b4..eb53bc30e 100644 --- a/packages/pyright-internal/src/tests/samples/fstring2.py +++ b/packages/pyright-internal/src/tests/samples/fstring2.py @@ -8,5 +8,5 @@ def return_right_aligned_string(): some_length2 = 2 some_string = "some string to print" - string_right_aligned = f"{some_string:>{some_length - 2} {{some_length2: 3}}}" + string_right_aligned = f"{some_string:>{some_length - 2} {some_length2: 3}}" return string_right_aligned diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index f601d2182..fac7ee305 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -381,7 +381,7 @@ test('CallSite2', () => { test('FString1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['fstring1.py']); - TestUtils.validateResults(analysisResults, 7, 1); + TestUtils.validateResults(analysisResults, 8, 1); }); test('FString2', () => { From 17dea0327aec3e16541e7ff3bb371459ca4ebb23 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 15 May 2023 11:16:46 -0700 Subject: [PATCH 169/525] Fixed a bug that results in a false positive error when using a dynamic base class in a `class` statement where the dynamic base class is based on a bound type variable. This addresses a bug that was reported in the mypy issue tracker: https://github.com/python/mypy/issues/14458. --- .../src/analyzer/typeEvaluator.ts | 4 ++-- .../src/tests/samples/classes10.py | 18 ++++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 6 ++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/classes10.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index c1ee33962..cdb2fc33d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -4961,7 +4961,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type: UnknownType.create(isIncomplete), isIncomplete }; } - if (flags & EvaluatorFlags.ExpectingType) { + if (flags & EvaluatorFlags.ExpectingTypeAnnotation) { if (!isIncomplete) { addDiagnostic( AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, @@ -14866,7 +14866,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getTypeOfExpression(arg.valueExpression); argType = UnknownType.create(); } else { - argType = getTypeOfExpression(arg.valueExpression, exprFlags).type; + argType = makeTopLevelTypeVarsConcrete(getTypeOfExpression(arg.valueExpression, exprFlags).type); } // In some stub files, classes are conditionally defined (e.g. based diff --git a/packages/pyright-internal/src/tests/samples/classes10.py b/packages/pyright-internal/src/tests/samples/classes10.py new file mode 100644 index 000000000..6c1fd9fd9 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/classes10.py @@ -0,0 +1,18 @@ +# This sample tests the handling of dynamic base classes. + +from typing import TypeVar + +T_A = TypeVar("T_A", bound="A") + + +class A: + class InnerA: + pass + + +def dynamic_subclass(cls: type[T_A]): + class SubClass(cls): + class SubInnerClass(cls.InnerA): + pass + + return SubClass diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 60fdc4c5c..af19e9705 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -763,6 +763,12 @@ test('Classes9', () => { TestUtils.validateResults(analysisResults, 1); }); +test('Classes10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['classes10.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Methods1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['methods1.py']); From 674465ef533a33ceb48382d7fa8900ce438cb0dc Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 15 May 2023 18:36:51 -0700 Subject: [PATCH 170/525] Fixed a bug that led to a false positive error in certain circumstances with nested call expressions where the expected type of the parameter was a union. This addresses https://github.com/microsoft/pyright/issues/5065. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 9 +++++---- .../pyright-internal/src/tests/samples/genericTypes29.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index cdb2fc33d..83f405cc1 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10258,6 +10258,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (effectiveExpectedType) { + const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); + // Prepopulate the typeVarContext based on the specialized expected type if the // callee has a declared return type. This will allow us to more closely match // the expected type if possible. @@ -10272,7 +10274,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ? subtype : undefined; }); - if (isClassInstance(filteredType)) { effectiveExpectedType = filteredType; } @@ -10285,15 +10286,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions effectiveReturnType, effectiveExpectedType, tempTypeVarContext, - ParseTreeUtils.getTypeVarScopesForNode(errorNode) + liveTypeVarScopes ); - const genericReturnType = ClassType.cloneForSpecialization( effectiveReturnType, /* typeArguments */ undefined, /* isTypeArgumentExplicit */ false ); - effectiveExpectedType = applySolvedTypeVars(genericReturnType, tempTypeVarContext); } } else if (isFunction(effectiveReturnType)) { @@ -10306,6 +10305,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + effectiveExpectedType = transformExpectedType(effectiveExpectedType, liveTypeVarScopes); + assignType( effectiveReturnType, effectiveExpectedType, diff --git a/packages/pyright-internal/src/tests/samples/genericTypes29.py b/packages/pyright-internal/src/tests/samples/genericTypes29.py index 01c5795d3..13c56af24 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes29.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes29.py @@ -2,7 +2,7 @@ # type derives from the expected type and both are # generic. -from typing import Iterable, Mapping, Optional, TypeVar, Union +from typing import Mapping, Optional, Union v0: Optional[Mapping[str, Union[int, str]]] = dict([("test1", 1), ("test2", 2)]) From d08edd19115a5bee5acdc6bfad25fdfca3c8b03b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 15 May 2023 18:41:39 -0700 Subject: [PATCH 171/525] Changed pyright to reflect a recent decision about PEP 649 (deferred type annotations). The steering council tentatively approved PEP 649 for Python 3.12, but they recently decided to defer it until 3.13. --- packages/pyright-internal/src/analyzer/analyzerFileInfo.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts b/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts index e6160db40..b1a5cac64 100644 --- a/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts +++ b/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts @@ -72,10 +72,11 @@ export function isAnnotationEvaluationPostponed(fileInfo: AnalyzerFileInfo) { return true; } - // As of November 22, the Python steering council has tentatively - // approved PEP 649 for Python 3.12. + // As of May 2023, the Python steering council has approved PEP 649 for Python 3.13. + // It was tentatively approved for 3.12, but they decided to defer until the next + // release to reduce the risk. // https://discuss.python.org/t/pep-649-deferred-evaluation-of-annotations-tentatively-accepted/21331 - if (fileInfo.executionEnvironment.pythonVersion >= PythonVersion.V3_12) { + if (fileInfo.executionEnvironment.pythonVersion >= PythonVersion.V3_13) { return true; } From 35a2ed939cc4533a60dbe004db1751bdc206f342 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 15 May 2023 23:16:36 -0700 Subject: [PATCH 172/525] Updated features documentation to mark PEP 695 as no longer in draft form. --- docs/features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features.md b/docs/features.md index 891b524aa..8c9277e7b 100644 --- a/docs/features.md +++ b/docs/features.md @@ -30,7 +30,7 @@ Pyright supports [configuration files](configuration.md) that provide granular c * [PEP 675](https://www.python.org/dev/peps/pep-0675/) arbitrary literal strings * [PEP 681](https://www.python.org/dev/peps/pep-0681/) dataclass transform * [PEP 692](https://www.python.org/dev/peps/pep-0692/) TypedDict for kwargs typing -* [PEP 695](https://www.python.org/dev/peps/pep-0695/) (draft) Type parameter syntax +* [PEP 695](https://www.python.org/dev/peps/pep-0695/) Type parameter syntax * [PEP 696](https://www.python.org/dev/peps/pep-0696/) (draft) Type defaults for TypeVarLikes * [PEP 698](https://www.python.org/dev/peps/pep-0698/) Override decorator for static typing * [PEP 702](https://www.python.org/dev/peps/pep-0702/) (draft) Marking deprecations From 571078a77471ca94f16b5dd149a509dd5e29bba6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 16 May 2023 09:03:36 -0700 Subject: [PATCH 173/525] Updated bug template to direct people to the discussion forum for questions. --- .github/ISSUE_TEMPLATE/bug_report.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8f632827e..933c58a77 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -9,6 +9,8 @@ assignees: '' Note: if you are reporting a wrong signature of a function or a class in the standard library, then the typeshed tracker is better suited for this report: https://github.com/python/typeshed/issues. +If you have a question about typing or a behavior that you’re seeing in Pyright (as opposed to a bug report or enhancement request), consider posting to the [Pyright discussion forum](https://github.com/microsoft/pyright/discussions). + **Describe the bug** A clear and concise description of what the bug is. From c04ee3fe7d59b1d74a10eec0b9e5d5a3162ce3e7 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 16 May 2023 20:51:11 -0700 Subject: [PATCH 174/525] Revert "Fixed a bug that led to a false positive error in certain circumstances with nested call expressions where the expected type of the parameter was a union. This addresses https://github.com/microsoft/pyright/issues/5065." This reverts commit 674465ef533a33ceb48382d7fa8900ce438cb0dc. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 9 ++++----- .../pyright-internal/src/tests/samples/genericTypes29.py | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 83f405cc1..cdb2fc33d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10258,8 +10258,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (effectiveExpectedType) { - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); - // Prepopulate the typeVarContext based on the specialized expected type if the // callee has a declared return type. This will allow us to more closely match // the expected type if possible. @@ -10274,6 +10272,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ? subtype : undefined; }); + if (isClassInstance(filteredType)) { effectiveExpectedType = filteredType; } @@ -10286,13 +10285,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions effectiveReturnType, effectiveExpectedType, tempTypeVarContext, - liveTypeVarScopes + ParseTreeUtils.getTypeVarScopesForNode(errorNode) ); + const genericReturnType = ClassType.cloneForSpecialization( effectiveReturnType, /* typeArguments */ undefined, /* isTypeArgumentExplicit */ false ); + effectiveExpectedType = applySolvedTypeVars(genericReturnType, tempTypeVarContext); } } else if (isFunction(effectiveReturnType)) { @@ -10305,8 +10306,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - effectiveExpectedType = transformExpectedType(effectiveExpectedType, liveTypeVarScopes); - assignType( effectiveReturnType, effectiveExpectedType, diff --git a/packages/pyright-internal/src/tests/samples/genericTypes29.py b/packages/pyright-internal/src/tests/samples/genericTypes29.py index 13c56af24..01c5795d3 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes29.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes29.py @@ -2,7 +2,7 @@ # type derives from the expected type and both are # generic. -from typing import Mapping, Optional, Union +from typing import Iterable, Mapping, Optional, TypeVar, Union v0: Optional[Mapping[str, Union[int, str]]] = dict([("test1", 1), ("test2", 2)]) From 27d495afc673b492670b4ae7281608896afcc347 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 16 May 2023 20:53:04 -0700 Subject: [PATCH 175/525] Published 1.1.309 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 3556487d2..7c0436d06 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.308", + "version": "1.1.309", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index b287df5da..f0cf5148b 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.308", + "version": "1.1.309", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.308", + "version": "1.1.309", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index bd30b6667..bb6f3de5f 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.308", + "version": "1.1.309", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 244a3b95f..7d81e6ed6 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.308", + "version": "1.1.309", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.308", + "version": "1.1.309", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 503806934..e83646494 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.308", + "version": "1.1.309", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 84421d0c3..7408721ee 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.308", + "version": "1.1.309", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.308", + "version": "1.1.309", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index c11df4504..1efb5935a 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.308", + "version": "1.1.309", "private": true, "license": "MIT", "author": { From 6f87c5ddbfb9e06094bc45eef9d443cebe88f606 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 17 May 2023 09:48:04 -0700 Subject: [PATCH 176/525] Fixed regression that caused an internal assertion (and therefore a crash) when type checking a constructor whose arguments are not type compatible. This addresses https://github.com/microsoft/pyright/issues/5129. --- packages/pyright-internal/src/analyzer/constructors.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 06e520268..9d5c41406 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -314,6 +314,7 @@ function validateNewMethod( argumentErrors = true; // Evaluate the arguments in a non-speculative manner to generate any diagnostics. + typeVarContext.unlock(); evaluator.validateCallArguments(errorNode, argList, newMethodTypeResult, typeVarContext, skipUnknownArgCheck); } else { newReturnType = callResult.returnType; From e6d7b84c80c2039c9c5f627ca328cee4a8048798 Mon Sep 17 00:00:00 2001 From: Rich Chiodo Date: Wed, 17 May 2023 10:43:31 -0700 Subject: [PATCH 177/525] Push pylance changes to pyright (#5131) * Push pylance changes to pyright * Fixup merge problems * Update packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts Co-authored-by: Erik De Bonte --------- Co-authored-by: Erik De Bonte --- .../src/analyzer/backgroundAnalysisProgram.ts | 120 +++--- .../pyright-internal/src/analyzer/program.ts | 49 ++- .../pyright-internal/src/analyzer/service.ts | 63 ++- .../src/analyzer/sourceFile.ts | 28 +- .../src/backgroundAnalysisBase.ts | 361 ++++++++++-------- .../src/backgroundThreadBase.ts | 2 +- .../src/common/extensibility.ts | 6 +- .../src/languageServerBase.ts | 5 +- .../src/languageService/autoImporter.ts | 4 +- .../src/languageService/symbolIndexer.ts | 10 - .../harness/fourslash/testLanguageService.ts | 1 + .../src/tests/harness/fourslash/testState.ts | 4 +- packages/vscode-pyright/package-lock.json | 16 +- packages/vscode-pyright/package.json | 4 +- 14 files changed, 328 insertions(+), 345 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts index e39bc1a95..9a5dc6634 100644 --- a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts +++ b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts @@ -9,7 +9,7 @@ import { CancellationToken } from 'vscode-languageserver'; -import { BackgroundAnalysisBase, IndexOptions, RefreshOptions } from '../backgroundAnalysisBase'; +import { BackgroundAnalysisBase } from '../backgroundAnalysisBase'; import { ConfigOptions, ExecutionEnvironment } from '../common/configOptions'; import { ConsoleInterface } from '../common/console'; import { Diagnostic } from '../common/diagnostic'; @@ -18,7 +18,14 @@ import { Range } from '../common/textRange'; import { AnalysisCompleteCallback, analyzeProgram } from './analysis'; import { CacheManager } from './cacheManager'; import { ImportResolver } from './importResolver'; -import { Indices, MaxAnalysisTime, OpenFileOptions, Program } from './program'; +import { MaxAnalysisTime, OpenFileOptions, Program } from './program'; + +export enum InvalidatedReason { + Reanalyzed, + SourceWatcherChanged, + LibraryWatcherChanged, + LibraryWatcherContentOnlyChanged, +} export class BackgroundAnalysisProgram { private _program: Program; @@ -27,21 +34,23 @@ export class BackgroundAnalysisProgram { private _preEditAnalysis: BackgroundAnalysisBase | undefined; constructor( - private _console: ConsoleInterface, + protected readonly serviceId: string, + private readonly _console: ConsoleInterface, private _configOptions: ConfigOptions, private _importResolver: ImportResolver, private _backgroundAnalysis?: BackgroundAnalysisBase, - private _maxAnalysisTime?: MaxAnalysisTime, - private _disableChecker?: boolean, + private readonly _maxAnalysisTime?: MaxAnalysisTime, + private readonly _disableChecker?: boolean, cacheManager?: CacheManager ) { this._program = new Program( - this._importResolver, - this._configOptions, + this.importResolver, + this.configOptions, this._console, undefined, this._disableChecker, - cacheManager + cacheManager, + serviceId ); } @@ -65,10 +74,6 @@ export class BackgroundAnalysisProgram { return this._backgroundAnalysis; } - set backgroundAnalysis(value: BackgroundAnalysisBase | undefined) { - this._backgroundAnalysis = value; - } - hasSourceFile(filePath: string): boolean { return !!this._program.getSourceFile(filePath); } @@ -84,7 +89,7 @@ export class BackgroundAnalysisProgram { this._backgroundAnalysis?.setImportResolver(importResolver); this._program.setImportResolver(importResolver); - this._configOptions.getExecutionEnvironments().forEach((e) => this._ensurePartialStubPackages(e)); + this.configOptions.getExecutionEnvironments().forEach((e) => this._ensurePartialStubPackages(e)); } setTrackedFiles(filePaths: string[]) { @@ -129,14 +134,14 @@ export class BackgroundAnalysisProgram { this._program.addInterimFile(filePath); } - markAllFilesDirty(evenIfContentsAreSame: boolean, indexingNeeded = true) { - this._backgroundAnalysis?.markAllFilesDirty(evenIfContentsAreSame, indexingNeeded); - this._program.markAllFilesDirty(evenIfContentsAreSame, indexingNeeded); + markAllFilesDirty(evenIfContentsAreSame: boolean) { + this._backgroundAnalysis?.markAllFilesDirty(evenIfContentsAreSame); + this._program.markAllFilesDirty(evenIfContentsAreSame); } - markFilesDirty(filePaths: string[], evenIfContentsAreSame: boolean, indexingNeeded = true) { - this._backgroundAnalysis?.markFilesDirty(filePaths, evenIfContentsAreSame, indexingNeeded); - this._program.markFilesDirty(filePaths, evenIfContentsAreSame, indexingNeeded); + markFilesDirty(filePaths: string[], evenIfContentsAreSame: boolean) { + this._backgroundAnalysis?.markFilesDirty(filePaths, evenIfContentsAreSame); + this._program.markFilesDirty(filePaths, evenIfContentsAreSame); } setCompletionCallback(callback?: AnalysisCompleteCallback) { @@ -146,7 +151,7 @@ export class BackgroundAnalysisProgram { startAnalysis(token: CancellationToken): boolean { if (this._backgroundAnalysis) { - this._backgroundAnalysis.startAnalysis(this.getIndices(), token); + this._backgroundAnalysis.startAnalysis(this.program, token); return false; } @@ -164,25 +169,8 @@ export class BackgroundAnalysisProgram { return this._program.analyzeFile(filePath, token); } - startIndexing(indexOptions: IndexOptions) { - this._backgroundAnalysis?.startIndexing(indexOptions, this._configOptions, this.importResolver, this.host.kind); - } - - refreshIndexing(refreshOptions?: RefreshOptions) { - this._backgroundAnalysis?.refreshIndexing( - this._configOptions, - this.importResolver, - this.host.kind, - refreshOptions - ); - } - - cancelIndexing() { - this._backgroundAnalysis?.cancelIndexing(); - } - - getIndexing(filePath: string) { - return this.getIndices()?.getIndex(this._configOptions.findExecEnvironment(filePath).root); + libraryUpdated() { + // empty } async getDiagnosticsForRange(filePath: string, range: Range, token: CancellationToken): Promise { @@ -214,23 +202,15 @@ export class BackgroundAnalysisProgram { return this._program.writeTypeStub(targetImportPath, targetIsSingleFile, stubPath, token); } - invalidateAndForceReanalysis( - rebuildUserFileIndexing: boolean, - rebuildLibraryIndexing: boolean, - refreshOptions?: RefreshOptions - ) { - if (rebuildLibraryIndexing) { - this.refreshIndexing(refreshOptions); - } - - this._backgroundAnalysis?.invalidateAndForceReanalysis(rebuildUserFileIndexing); + invalidateAndForceReanalysis(reason: InvalidatedReason) { + this._backgroundAnalysis?.invalidateAndForceReanalysis(reason); // Make sure the import resolver doesn't have invalid // cached entries. this._importResolver.invalidateCache(); // Mark all files with one or more errors dirty. - this._program.markAllFilesDirty(true, rebuildUserFileIndexing); + this._program.markAllFilesDirty(/* evenIfContentsAreSame */ true); } restart() { @@ -238,6 +218,10 @@ export class BackgroundAnalysisProgram { } dispose() { + if (this._disposed) { + return; + } + this._disposed = true; this._program.dispose(); this._backgroundAnalysis?.shutdown(); @@ -258,31 +242,29 @@ export class BackgroundAnalysisProgram { return this._program.exitEditMode(); } - protected getIndices(): Indices | undefined { - return undefined; - } - private _ensurePartialStubPackages(execEnv: ExecutionEnvironment) { this._backgroundAnalysis?.ensurePartialStubPackages(execEnv.root); return this._importResolver.ensurePartialStubPackages(execEnv); } private _reportDiagnosticsForRemovedFiles(fileDiags: FileDiagnostics[]) { - if (fileDiags.length > 0) { - // If analysis is running in the foreground process, report any - // diagnostics that resulted from the close operation (used to - // clear diagnostics that are no longer of interest). - if (!this._backgroundAnalysis && this._onAnalysisCompletion) { - this._onAnalysisCompletion({ - diagnostics: fileDiags, - filesInProgram: this._program.getFileCount(), - filesRequiringAnalysis: this._program.getFilesToAnalyzeCount(), - checkingOnlyOpenFiles: this._program.isCheckingOnlyOpenFiles(), - fatalErrorOccurred: false, - configParseErrorOccurred: false, - elapsedTime: 0, - }); - } + if (fileDiags.length === 0) { + return; + } + + // If analysis is running in the foreground process, report any + // diagnostics that resulted from the close operation (used to + // clear diagnostics that are no longer of interest). + if (!this._backgroundAnalysis && this._onAnalysisCompletion) { + this._onAnalysisCompletion({ + diagnostics: fileDiags, + filesInProgram: this._program.getFileCount(), + filesRequiringAnalysis: this._program.getFilesToAnalyzeCount(), + checkingOnlyOpenFiles: this._program.isCheckingOnlyOpenFiles(), + fatalErrorOccurred: false, + configParseErrorOccurred: false, + elapsedTime: 0, + }); } } } diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 01b75693c..b602557c1 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -34,7 +34,6 @@ import { import { convertRangeToTextRange } from '../common/positionUtils'; import { Range, doRangesIntersect } from '../common/textRange'; import { Duration, timingStats } from '../common/timing'; -import { IndexResults } from '../languageService/symbolIndexer'; import { ParseResults } from '../parser/parser'; import { AbsoluteModuleDescriptor, ImportLookupResult, LookupImportOptions } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; @@ -57,8 +56,6 @@ import { Type } from './types'; const _maxImportDepth = 256; -export const MaxWorkspaceIndexFileCount = 2000; - // Tracks information about each source file in a program, // including the reason it was added to the program and any // dependencies that it has on other files in the program. @@ -107,11 +104,6 @@ export interface MaxAnalysisTime { noOpenFilesTimeInMs: number; } -export interface Indices { - setWorkspaceIndex(path: string, indexResults: IndexResults): void; - getIndex(execEnv: string | undefined): Map | undefined; -} - interface UpdateImportInfo { path: string; isTypeshedFile: boolean; @@ -135,19 +127,24 @@ export interface OpenFileOptions { // Opened - temporarily opened in the editor // Shadowed - implementation file that shadows a type stub file export class Program { - private _console: ConsoleInterface; - private _sourceFileList: SourceFileInfo[] = []; - private _sourceFileMap = new Map(); + private static _nextId = 0; + + private readonly _console: ConsoleInterface; + private readonly _sourceFileList: SourceFileInfo[] = []; + private readonly _sourceFileMap = new Map(); + + private readonly _logTracker: LogTracker; + private readonly _cacheManager: CacheManager; + private readonly _id: string; + private _allowedThirdPartyImports: string[] | undefined; - private _evaluator: TypeEvaluator | undefined; private _configOptions: ConfigOptions; private _importResolver: ImportResolver; - private _logTracker: LogTracker; + private _evaluator: TypeEvaluator | undefined; + private _parsedFileCount = 0; private _preCheckCallback: PreCheckCallback | undefined; - private _cacheManager: CacheManager; - private _id: number; - private static _nextId = 0; + private _isEditMode = false; constructor( @@ -156,7 +153,8 @@ export class Program { console?: ConsoleInterface, logTracker?: LogTracker, private _disableChecker?: boolean, - cacheManager?: CacheManager + cacheManager?: CacheManager, + id?: string ) { this._console = console || new StandardConsole(); this._logTracker = logTracker ?? new LogTracker(console, 'FG'); @@ -166,7 +164,8 @@ export class Program { this._cacheManager = cacheManager ?? new CacheManager(); this._cacheManager.registerCacheOwner(this); this._createNewEvaluator(); - this._id = Program._nextId; + + this._id = id ?? `Prog_${Program._nextId}`; Program._nextId += 1; } @@ -441,14 +440,14 @@ export class Program { return this._removeUnneededFiles(); } - markAllFilesDirty(evenIfContentsAreSame: boolean, indexingNeeded = true) { + markAllFilesDirty(evenIfContentsAreSame: boolean) { const markDirtySet = new Set(); this._sourceFileList.forEach((sourceFileInfo) => { if (evenIfContentsAreSame) { - sourceFileInfo.sourceFile.markDirty(indexingNeeded); + sourceFileInfo.sourceFile.markDirty(); } else if (sourceFileInfo.sourceFile.didContentsChangeOnDisk()) { - sourceFileInfo.sourceFile.markDirty(indexingNeeded); + sourceFileInfo.sourceFile.markDirty(); // Mark any files that depend on this file as dirty // also. This will retrigger analysis of these other files. @@ -461,7 +460,7 @@ export class Program { } } - markFilesDirty(filePaths: string[], evenIfContentsAreSame: boolean, indexingNeeded = true) { + markFilesDirty(filePaths: string[], evenIfContentsAreSame: boolean) { const markDirtySet = new Set(); filePaths.forEach((filePath) => { const sourceFileInfo = this.getSourceFileInfo(filePath); @@ -471,7 +470,7 @@ export class Program { // Handle builtins and __builtins__ specially. They are implicitly // included by all source files. if (fileName === 'builtins.pyi' || fileName === '__builtins__.pyi') { - this.markAllFilesDirty(evenIfContentsAreSame, indexingNeeded); + this.markAllFilesDirty(evenIfContentsAreSame); return; } @@ -482,7 +481,7 @@ export class Program { evenIfContentsAreSame || (!sourceFileInfo.isOpenByClient && sourceFileInfo.sourceFile.didContentsChangeOnDisk()) ) { - sourceFileInfo.sourceFile.markDirty(indexingNeeded); + sourceFileInfo.sourceFile.markDirty(); // Mark any files that depend on this file as dirty // also. This will retrigger analysis of these other files. @@ -943,7 +942,7 @@ export class Program { // Cloned program will use whatever user files the program currently has. const userFiles = this.getUserFiles(); program.setTrackedFiles(userFiles.map((i) => i.sourceFile.getFilePath())); - program.markAllFilesDirty(true); + program.markAllFilesDirty(/* evenIfContentsAreSame */ true); // Make sure we keep editor content (open file) which could be different than one in the file system. for (const fileInfo of this.getOpened()) { diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index a93af536d..615665cf5 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -12,7 +12,7 @@ import * as TOML from '@iarna/toml'; import * as JSONC from 'jsonc-parser'; import { AbstractCancellationTokenSource, CancellationToken } from 'vscode-languageserver'; -import { BackgroundAnalysisBase, IndexOptions, RefreshOptions } from '../backgroundAnalysisBase'; +import { BackgroundAnalysisBase, RefreshOptions } from '../backgroundAnalysisBase'; import { CancellationProvider, DefaultCancellationProvider } from '../common/cancellationUtils'; import { CommandLineOptions } from '../common/commandLineOptions'; import { ConfigOptions, matchFileSpecs } from '../common/configOptions'; @@ -45,7 +45,11 @@ import { import { Range } from '../common/textRange'; import { timingStats } from '../common/timing'; import { AnalysisCompleteCallback } from './analysis'; -import { BackgroundAnalysisProgram, BackgroundAnalysisProgramFactory } from './backgroundAnalysisProgram'; +import { + BackgroundAnalysisProgram, + BackgroundAnalysisProgramFactory, + InvalidatedReason, +} from './backgroundAnalysisProgram'; import { CacheManager } from './cacheManager'; import { ImportResolver, @@ -144,6 +148,7 @@ export class AnalyzerService { this._options.cacheManager ) : new BackgroundAnalysisProgram( + this._options.serviceId, this._options.console, this._options.configOptions, importResolver, @@ -185,6 +190,10 @@ export class AnalyzerService { return this._program; } + get id() { + return this._options.serviceId!; + } + clone( instanceName: string, serviceId: string, @@ -345,10 +354,6 @@ export class AnalyzerService { this._scheduleReanalysis(/* requireTrackedFileUpdate */ false); } - startIndexing(indexOptions: IndexOptions) { - this._backgroundAnalysisProgram.startIndexing(indexOptions); - } - setFileClosed(path: string, isTracked?: boolean) { this._backgroundAnalysisProgram.setFileClosed(path, isTracked); this._scheduleReanalysis(/* requireTrackedFileUpdate */ false); @@ -453,16 +458,8 @@ export class AnalyzerService { ); } - invalidateAndForceReanalysis( - rebuildUserFileIndexing = true, - rebuildLibraryIndexing = true, - refreshOptions?: RefreshOptions - ) { - this._backgroundAnalysisProgram.invalidateAndForceReanalysis( - rebuildUserFileIndexing, - rebuildLibraryIndexing, - refreshOptions - ); + invalidateAndForceReanalysis(reason: InvalidatedReason) { + this._backgroundAnalysisProgram.invalidateAndForceReanalysis(reason); } // Forces the service to stop all analysis, discard all its caches, @@ -1234,27 +1231,23 @@ export class AnalyzerService { return; } - // If the change is the content of 1 file, then it can't affect `import resolution` result. All we need to do is - // reanalyzing related files (files that transitively depends on this file). + // This is for performance optimization. If the change only pertains to the content of one file, + // then it can't affect the 'import resolution' result. All we need to do is reanalyze the related files + // (those that have a transitive dependency on this file). if (eventInfo.isFile && eventInfo.event === 'change') { this._backgroundAnalysisProgram.markFilesDirty([path], /* evenIfContentsAreSame */ false); this._scheduleReanalysis(/* requireTrackedFileUpdate */ false); return; } - // fs events happened can impact import resolution result. - // clear the import resolver cache and reanalyze everything. + // When the file system structure changes, like when files are added or removed, + // this can affect how we resolve imports. This requires us to reset caches and reanalyze everything. // - // Here we don't need to rebuild any indexing since this kind of change can't affect - // indices. For library, since the changes are on workspace files, it won't affect library - // indices. For user file, since user file indices don't contains import alias symbols, - // it won't affect those indices. we only need to rebuild user file indices when symbols - // defined in the file are changed. ex) user modified the file. - // Newly added file will be scanned since it doesn't have existing indices. - this.invalidateAndForceReanalysis( - /* rebuildUserFileIndexing */ false, - /* rebuildLibraryIndexing */ false - ); + // However, we don't need to rebuild any indexes in this situation. Changes to workspace files don't affect library indices. + // As for user files, their indices don't contain import alias symbols, so adding or removing user files won't affect the existing indices. + // We only rebuild the indices for a user file when the symbols within the file are changed, like when a user edits the file. + // The index scanner will index any new files during its next background run. + this.invalidateAndForceReanalysis(InvalidatedReason.SourceWatcherChanged); this._scheduleReanalysis(/* requireTrackedFileUpdate */ true); }); } catch { @@ -1420,7 +1413,7 @@ export class AnalyzerService { if (this._libraryReanalysisTimer) { clearTimeout(this._libraryReanalysisTimer); this._libraryReanalysisTimer = undefined; - this._backgroundAnalysisProgram?.cancelIndexing(); + this._backgroundAnalysisProgram?.libraryUpdated(); } } @@ -1449,9 +1442,11 @@ export class AnalyzerService { // Invalidate import resolver, mark all files dirty unconditionally, // and reanalyze. - this.invalidateAndForceReanalysis(/* rebuildUserFileIndexing */ false, /* rebuildLibraryIndexing */ true, { - changesOnly: this._pendingLibraryChanges.changesOnly, - }); + this.invalidateAndForceReanalysis( + this._pendingLibraryChanges.changesOnly + ? InvalidatedReason.LibraryWatcherContentOnlyChanged + : InvalidatedReason.LibraryWatcherChanged + ); this._scheduleReanalysis(/* requireTrackedFileUpdate */ false); // No more pending changes. diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 6fb66443a..d3b138a2f 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -25,7 +25,6 @@ import * as StringUtils from '../common/stringUtils'; import { Range, TextRange, getEmptyRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; -import { IndexResults } from '../languageService/symbolIndexer'; import { Localizer } from '../localization/localize'; import { ModuleNode } from '../parser/parseNodes'; import { ModuleImport, ParseOptions, ParseResults, Parser } from '../parser/parser'; @@ -96,7 +95,6 @@ class WriteableData { parseResults: ParseResults | undefined; moduleSymbolTable: SymbolTable | undefined; - cachedIndexResults: IndexResults | undefined; // Reentrancy check for binding. isBindingInProgress = false; @@ -126,8 +124,6 @@ class WriteableData { // Time (in ms) that the last check() call required for this file. checkTime: number | undefined; - // Do we need to perform an indexing step? - indexingNeeded = true; // Information about implicit and explicit imports from this file. imports: ImportResult[] | undefined; builtinsImport: ImportResult | undefined; @@ -624,14 +620,13 @@ export class SourceFile { this._writableData.isBindingNeeded = true; } - markDirty(indexingNeeded = true): void { + markDirty(): void { this._writableData.fileContentsVersion++; this._writableData.noCircularDependencyConfirmed = false; this._writableData.isCheckingNeeded = true; this._writableData.isBindingNeeded = true; - this._writableData.indexingNeeded = indexingNeeded; this._writableData.moduleSymbolTable = undefined; - this._writableData.cachedIndexResults = undefined; + const filePath = this.getFilePath(); Extensions.getProgramExtensions(filePath).forEach((e) => (e.fileDirty ? e.fileDirty(filePath) : null)); } @@ -746,15 +741,6 @@ export class SourceFile { return this._writableData.isBindingNeeded; } - isIndexingRequired() { - return this._writableData.indexingNeeded; - } - - markIndexDone() { - // This will be removed once indexResult is removed from sourceFile. - this._writableData.indexingNeeded = false; - } - isCheckingRequired() { return this._writableData.isCheckingNeeded; } @@ -767,14 +753,6 @@ export class SourceFile { return undefined; } - getCachedIndexResults(): IndexResults | undefined { - return this._writableData.cachedIndexResults; - } - - cacheIndexResults(indexResults: IndexResults) { - this._writableData.cachedIndexResults = indexResults; - } - // Adds a new circular dependency for this file but only if // it hasn't already been added. addCircularDependency(circDependency: CircularDependency) { @@ -948,7 +926,6 @@ export class SourceFile { } this._writableData.analyzedFileContentsVersion = this._writableData.fileContentsVersion; - this._writableData.indexingNeeded = true; this._writableData.isBindingNeeded = true; this._writableData.isCheckingNeeded = true; this._writableData.parseTreeNeedsCleaning = false; @@ -1026,7 +1003,6 @@ export class SourceFile { // Prepare for the next stage of the analysis. this._writableData.diagnosticVersion++; this._writableData.isCheckingNeeded = true; - this._writableData.indexingNeeded = true; this._writableData.isBindingNeeded = false; }); } diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index ad66c1fd4..43552a91d 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -11,7 +11,7 @@ import { MessageChannel, MessagePort, Worker, parentPort, threadId, workerData } import { AnalysisCompleteCallback, AnalysisResults, analyzeProgram, nullCallback } from './analyzer/analysis'; import { ImportResolver } from './analyzer/importResolver'; -import { Indices, OpenFileOptions, Program } from './analyzer/program'; +import { OpenFileOptions, Program } from './analyzer/program'; import { BackgroundThreadBase, InitializationData, @@ -36,7 +36,7 @@ import { FileSystem } from './common/fileSystem'; import { Host, HostKind } from './common/host'; import { LogTracker } from './common/logTracker'; import { Range } from './common/textRange'; -import { IndexResults } from './languageService/symbolIndexer'; +import { InvalidatedReason } from './analyzer/backgroundAnalysisProgram'; export class BackgroundAnalysisBase { private _worker: Worker | undefined; @@ -92,41 +92,19 @@ export class BackgroundAnalysisBase { this.enqueueRequest({ requestType: 'addInterimFile', data: { filePath } }); } - markAllFilesDirty(evenIfContentsAreSame: boolean, indexingNeeded: boolean) { - this.enqueueRequest({ requestType: 'markAllFilesDirty', data: { evenIfContentsAreSame, indexingNeeded } }); + markAllFilesDirty(evenIfContentsAreSame: boolean) { + this.enqueueRequest({ requestType: 'markAllFilesDirty', data: { evenIfContentsAreSame } }); } - markFilesDirty(filePaths: string[], evenIfContentsAreSame: boolean, indexingNeeded: boolean) { + markFilesDirty(filePaths: string[], evenIfContentsAreSame: boolean) { this.enqueueRequest({ requestType: 'markFilesDirty', - data: { filePaths, evenIfContentsAreSame, indexingNeeded }, + data: { filePaths, evenIfContentsAreSame }, }); } - startAnalysis(indices: Indices | undefined, token: CancellationToken) { - this._startOrResumeAnalysis('analyze', indices, token); - } - - startIndexing( - indexOptions: IndexOptions, - configOptions: ConfigOptions, - importResolver: ImportResolver, - kind: HostKind - ) { - /* noop */ - } - - refreshIndexing( - configOptions: ConfigOptions, - importResolver: ImportResolver, - kind: HostKind, - refreshOptions?: RefreshOptions - ) { - /* noop */ - } - - cancelIndexing() { - /* noop */ + startAnalysis(program: Program, token: CancellationToken) { + this._startOrResumeAnalysis('analyze', program, token); } async getDiagnosticsForRange(filePath: string, range: Range, token: CancellationToken): Promise { @@ -174,8 +152,8 @@ export class BackgroundAnalysisBase { port1.close(); } - invalidateAndForceReanalysis(rebuildUserFileIndexing: boolean) { - this.enqueueRequest({ requestType: 'invalidateAndForceReanalysis', data: rebuildUserFileIndexing }); + invalidateAndForceReanalysis(reason: InvalidatedReason) { + this.enqueueRequest({ requestType: 'invalidateAndForceReanalysis', data: { reason } }); } restart() { @@ -229,48 +207,50 @@ export class BackgroundAnalysisBase { log(this.console, level, msg); } + protected handleAnalysisResponse( + msg: AnalysisResponse, + program: Program, + port1: MessagePort, + port2: MessagePort, + token: CancellationToken + ) { + switch (msg.requestType) { + case 'analysisResult': { + this._onAnalysisCompletion(convertAnalysisResults(msg.data)); + break; + } + + case 'analysisPaused': { + port2.close(); + port1.close(); + + // Analysis request has completed, but there is more to + // analyze, so queue another message to resume later. + this._startOrResumeAnalysis('resumeAnalysis', program, token); + break; + } + + case 'analysisDone': { + disposeCancellationToken(token); + port2.close(); + port1.close(); + break; + } + + default: + debug.fail(`${msg.requestType} is not expected`); + } + } + private _startOrResumeAnalysis( requestType: 'analyze' | 'resumeAnalysis', - indices: Indices | undefined, + program: Program, token: CancellationToken ) { const { port1, port2 } = new MessageChannel(); // Handle response from background thread to main thread. - port1.on('message', (msg: AnalysisResponse) => { - switch (msg.requestType) { - case 'analysisResult': { - this._onAnalysisCompletion(convertAnalysisResults(msg.data)); - break; - } - - case 'analysisPaused': { - port2.close(); - port1.close(); - - // Analysis request has completed, but there is more to - // analyze, so queue another message to resume later. - this._startOrResumeAnalysis('resumeAnalysis', indices, token); - break; - } - - case 'indexResult': { - const { path, indexResults } = msg.data; - indices?.setWorkspaceIndex(path, indexResults); - break; - } - - case 'analysisDone': { - disposeCancellationToken(token); - port2.close(); - port1.close(); - break; - } - - default: - debug.fail(`${msg.requestType} is not expected`); - } - }); + port1.on('message', (msg: AnalysisResponse) => this.handleAnalysisResponse(msg, program, port1, port2, token)); const cancellationId = getCancellationTokenId(token); this.enqueueRequest({ requestType, data: cancellationId, port: port2 }); @@ -346,20 +326,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase const port = msg.port!; const token = getCancellationTokenFromId(msg.data); - // Report files to analyze first. - const filesLeftToAnalyze = this.program.getFilesToAnalyzeCount(); - - this._onAnalysisCompletion(port, { - diagnostics: [], - filesInProgram: this.program.getFileCount(), - filesRequiringAnalysis: filesLeftToAnalyze, - checkingOnlyOpenFiles: this.program.isCheckingOnlyOpenFiles(), - fatalErrorOccurred: false, - configParseErrorOccurred: false, - elapsedTime: 0, - }); - - this._analyzeOneChunk(port, token, msg); + this.handleAnalyze(port, msg.data, token); break; } @@ -367,7 +334,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase const port = msg.port!; const token = getCancellationTokenFromId(msg.data); - this._analyzeOneChunk(port, token, msg); + this.handleResumeAnalysis(port, msg.data, token); break; } @@ -375,9 +342,8 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase run(() => { const { filePath, range, cancellationId } = msg.data; const token = getCancellationTokenFromId(cancellationId); - throwIfCancellationRequested(token); - return this.program.getDiagnosticsForRange(filePath, range); + return this.handleGetDiagnosticsForRange(filePath, range, token); }, msg.port!); break; } @@ -387,111 +353,87 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase const { targetImportPath, targetIsSingleFile, stubPath, cancellationId } = msg.data; const token = getCancellationTokenFromId(cancellationId); - analyzeProgram( - this.program, - undefined, - this._configOptions, - nullCallback, - this.getConsole(), - token - ); - this.program.writeTypeStub(targetImportPath, targetIsSingleFile, stubPath, token); + this.handleWriteTypeStub(targetImportPath, targetIsSingleFile, stubPath, token); }, msg.port!); break; } case 'setImportResolver': { - this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.createHost()); - - this.program.setImportResolver(this.importResolver); + this.handleSetImportResolver(msg.data); break; } case 'setConfigOptions': { - this._configOptions = createConfigOptionsFrom(msg.data); - - this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.importResolver.host); - this.program.setConfigOptions(this._configOptions); - this.program.setImportResolver(this.importResolver); + this.handleSetConfigOptions(createConfigOptionsFrom(msg.data)); break; } case 'setTrackedFiles': { - const diagnostics = this.program.setTrackedFiles(msg.data); - this._reportDiagnostics(diagnostics, this.program.getFilesToAnalyzeCount(), 0); + this.handleSetTrackedFiles(msg.data); break; } case 'setAllowedThirdPartyImports': { - this.program.setAllowedThirdPartyImports(msg.data); + this.handleSetAllowedThirdPartyImports(msg.data); break; } case 'ensurePartialStubPackages': { const { executionRoot } = msg.data; - const execEnv = this._configOptions.getExecutionEnvironments().find((e) => e.root === executionRoot); - if (execEnv) { - this.importResolver.ensurePartialStubPackages(execEnv); - } + this.handleEnsurePartialStubPackages(executionRoot); break; } case 'setFileOpened': { const { filePath, version, contents, options } = msg.data; - this.program.setFileOpened(filePath, version, contents, options); + this.handleSetFileOpened(filePath, version, contents, options); break; } case 'updateChainedFilePath': { const { filePath, chainedFilePath } = msg.data; - this.program.updateChainedFilePath(filePath, chainedFilePath); + this.handleUpdateChainedFilePath(filePath, chainedFilePath); break; } case 'setFileClosed': { const { filePath, isTracked } = msg.data; - const diagnostics = this.program.setFileClosed(filePath, isTracked); - this._reportDiagnostics(diagnostics, this.program.getFilesToAnalyzeCount(), 0); + this.handleSetFileClosed(filePath, isTracked); break; } case 'addInterimFile': { const { filePath } = msg.data; - this.program.addInterimFile(filePath); + this.handleAddInterimFile(filePath); break; } case 'markAllFilesDirty': { - const { evenIfContentsAreSame, indexingNeeded } = msg.data; - this.program.markAllFilesDirty(evenIfContentsAreSame, indexingNeeded); + const { evenIfContentsAreSame } = msg.data; + this.handleMarkAllFilesDirty(evenIfContentsAreSame); break; } case 'markFilesDirty': { - const { filePaths, evenIfContentsAreSame, indexingNeeded } = msg.data; - this.program.markFilesDirty(filePaths, evenIfContentsAreSame, indexingNeeded); + const { filePaths, evenIfContentsAreSame } = msg.data; + this.handleMarkFilesDirty(filePaths, evenIfContentsAreSame); break; } case 'invalidateAndForceReanalysis': { - // Make sure the import resolver doesn't have invalid - // cached entries. - this.importResolver.invalidateCache(); - - // Mark all files with one or more errors dirty. - this.program.markAllFilesDirty(/* evenIfContentsAreSame */ true, /* indexingNeeded */ msg.data); + const { reason } = msg.data; + this.handleInvalidateAndForceReanalysis(reason); break; } case 'restart': { // recycle import resolver - this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.importResolver.host); - this.program.setImportResolver(this.importResolver); + this.handleRestart(); break; } case 'shutdown': { - this.shutdown(); + this.handleShutdown(); break; } @@ -505,18 +447,145 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase protected abstract createImportResolver(fs: FileSystem, options: ConfigOptions, host: Host): ImportResolver; - protected processIndexing(port: MessagePort, token: CancellationToken): void { - /* noop */ + protected handleAnalyze(port: MessagePort, cancellationId: string, token: CancellationToken) { + // Report files to analyze first. + const filesLeftToAnalyze = this.program.getFilesToAnalyzeCount(); + + this._onAnalysisCompletion(port, { + diagnostics: [], + filesInProgram: this.program.getFileCount(), + filesRequiringAnalysis: filesLeftToAnalyze, + checkingOnlyOpenFiles: this.program.isCheckingOnlyOpenFiles(), + fatalErrorOccurred: false, + configParseErrorOccurred: false, + elapsedTime: 0, + }); + + this.handleResumeAnalysis(port, cancellationId, token); + } + + protected handleResumeAnalysis(port: MessagePort, cancellationId: string, token: CancellationToken) { + // Report results at the interval of the max analysis time. + const maxTime = { openFilesTimeInMs: 50, noOpenFilesTimeInMs: 200 }; + const moreToAnalyze = analyzeProgram( + this.program, + maxTime, + this._configOptions, + (result) => this._onAnalysisCompletion(port, result), + this.getConsole(), + token + ); + + if (moreToAnalyze) { + // There's more to analyze after we exceeded max time, + // so report that we are paused. The foreground thread will + // then queue up a message to resume the analysis. + this._analysisPaused(port, cancellationId); + } else { + this.analysisDone(port, cancellationId); + } + } + + protected handleGetDiagnosticsForRange(filePath: string, range: Range, token: CancellationToken) { + throwIfCancellationRequested(token); + return this.program.getDiagnosticsForRange(filePath, range); + } + + protected handleWriteTypeStub( + targetImportPath: string, + targetIsSingleFile: boolean, + stubPath: string, + token: CancellationToken + ) { + analyzeProgram( + this.program, + /* maxTime */ undefined, + this._configOptions, + nullCallback, + this.getConsole(), + token + ); + + this.program.writeTypeStub(targetImportPath, targetIsSingleFile, stubPath, token); + } + + protected handleSetImportResolver(hostKind: HostKind) { + this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.createHost()); + this.program.setImportResolver(this.importResolver); + } + + protected handleSetConfigOptions(configOptions: ConfigOptions) { + this._configOptions = configOptions; + + this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.importResolver.host); + this.program.setConfigOptions(this._configOptions); + this.program.setImportResolver(this.importResolver); + } + + protected handleSetTrackedFiles(filePaths: string[]) { + const diagnostics = this.program.setTrackedFiles(filePaths); + this._reportDiagnostics(diagnostics, this.program.getFilesToAnalyzeCount(), 0); + } + + protected handleSetAllowedThirdPartyImports(importNames: string[]) { + this.program.setAllowedThirdPartyImports(importNames); + } + + protected handleEnsurePartialStubPackages(executionRoot: string | undefined) { + const execEnv = this._configOptions.getExecutionEnvironments().find((e) => e.root === executionRoot); + if (execEnv) { + this.importResolver.ensurePartialStubPackages(execEnv); + } + } + + protected handleSetFileOpened( + filePath: string, + version: number | null, + contents: string, + options: OpenFileOptions | undefined + ) { + this.program.setFileOpened(filePath, version, contents, options); + } + + protected handleUpdateChainedFilePath(filePath: string, chainedFilePath: string | undefined) { + this.program.updateChainedFilePath(filePath, chainedFilePath); + } + + protected handleSetFileClosed(filePath: string, isTracked: boolean | undefined) { + const diagnostics = this.program.setFileClosed(filePath, isTracked); + this._reportDiagnostics(diagnostics, this.program.getFilesToAnalyzeCount(), 0); } - protected reportIndex(port: MessagePort, result: { path: string; indexResults: IndexResults }) { - port.postMessage({ requestType: 'indexResult', data: result }); + protected handleAddInterimFile(filePath: string) { + this.program.addInterimFile(filePath); } - protected override shutdown() { + protected handleMarkFilesDirty(filePaths: string[], evenIfContentsAreSame: boolean) { + this.program.markFilesDirty(filePaths, evenIfContentsAreSame); + } + + protected handleMarkAllFilesDirty(evenIfContentsAreSame: boolean) { + this.program.markAllFilesDirty(evenIfContentsAreSame); + } + + protected handleInvalidateAndForceReanalysis(reason: InvalidatedReason) { + // Make sure the import resolver doesn't have invalid + // cached entries. + this.importResolver.invalidateCache(); + + // Mark all files with one or more errors dirty. + this.program.markAllFilesDirty(/* evenIfContentsAreSame */ true); + } + + protected handleRestart() { + this.importResolver = this.createImportResolver(this.fs, this._configOptions, this.importResolver.host); + this.program.setImportResolver(this.importResolver); + } + + protected override handleShutdown() { this._program.dispose(); Extensions.destroyProgramExtensions(this._program.id); - super.shutdown(); + super.handleShutdown(); } protected analysisDone(port: MessagePort, cancellationId: string) { @@ -542,29 +611,6 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase } } - private _analyzeOneChunk(port: MessagePort, token: CancellationToken, msg: AnalysisRequest) { - // Report results at the interval of the max analysis time. - const maxTime = { openFilesTimeInMs: 50, noOpenFilesTimeInMs: 200 }; - const moreToAnalyze = analyzeProgram( - this.program, - maxTime, - this._configOptions, - (result) => this._onAnalysisCompletion(port, result), - this.getConsole(), - token - ); - - if (moreToAnalyze) { - // There's more to analyze after we exceeded max time, - // so report that we are paused. The foreground thread will - // then queue up a message to resume the analysis. - this._analysisPaused(port, msg.data); - } else { - this.processIndexing(port, token); - this.analysisDone(port, msg.data); - } - } - private _reportDiagnostics(diagnostics: FileDiagnostics[], filesLeftToAnalyze: number, elapsedTime: number) { if (parentPort) { this._onAnalysisCompletion(parentPort, { @@ -658,11 +704,6 @@ export interface AnalysisResponse { data: any; } -export interface IndexOptions { - // includeAllSymbols means it will include symbols not shown in __all__ for py file. - packageDepths: [moduleName: string, maxDepth: number, includeAllSymbols: boolean][]; -} - export interface RefreshOptions { // No files/folders are added or removed. only changes. changesOnly: boolean; diff --git a/packages/pyright-internal/src/backgroundThreadBase.ts b/packages/pyright-internal/src/backgroundThreadBase.ts index 7a275ba95..bbc0f4b1c 100644 --- a/packages/pyright-internal/src/backgroundThreadBase.ts +++ b/packages/pyright-internal/src/backgroundThreadBase.ts @@ -53,7 +53,7 @@ export class BackgroundThreadBase { }; } - protected shutdown() { + protected handleShutdown() { this.fs.dispose(); parentPort?.close(); } diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index 6bdd28231..65035f105 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -26,7 +26,6 @@ import { Range } from './textRange'; import { SymbolTable } from '../analyzer/symbol'; import { Diagnostic } from '../common/diagnostic'; import { IPythonMode } from '../analyzer/sourceFile'; -import { IndexResults } from '../languageService/symbolIndexer'; export interface LanguageServiceExtension { readonly commandExtension?: CommandExtension; @@ -53,7 +52,6 @@ export interface SourceFile { getClientVersion(): number | undefined; getOpenFileContents(): string | undefined; getModuleSymbolTable(): SymbolTable | undefined; - getCachedIndexResults(): IndexResults | undefined; } export interface SourceFileInfo { @@ -81,7 +79,7 @@ export interface SourceFileInfo { // Readonly wrapper around a Program. Makes sure it doesn't mutate the program. export interface ProgramView { - readonly id: number; + readonly id: string; readonly rootPath: string; readonly console: ConsoleInterface; readonly evaluator: TypeEvaluator | undefined; @@ -232,7 +230,7 @@ export namespace Extensions { ); } - export function destroyProgramExtensions(viewId: number) { + export function destroyProgramExtensions(viewId: string) { programExtensions = programExtensions.filter((s) => s.view.id !== viewId); } diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 4c29cd1d8..3ef33aae5 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -74,7 +74,7 @@ import { ResultProgressReporter, attachWorkDone } from 'vscode-languageserver/li import { TextDocument } from 'vscode-languageserver-textdocument'; import { AnalysisResults } from './analyzer/analysis'; -import { BackgroundAnalysisProgram } from './analyzer/backgroundAnalysisProgram'; +import { BackgroundAnalysisProgram, InvalidatedReason } from './analyzer/backgroundAnalysisProgram'; import { CacheManager } from './analyzer/cacheManager'; import { ImportResolver } from './analyzer/importResolver'; import { MaxAnalysisTime } from './analyzer/program'; @@ -456,7 +456,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { reanalyze() { this.workspaceFactory.items().forEach((workspace) => { - workspace.service.invalidateAndForceReanalysis(); + workspace.service.invalidateAndForceReanalysis(InvalidatedReason.Reanalyzed); }); } @@ -588,6 +588,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { cacheManager?: CacheManager ): BackgroundAnalysisProgram { return new BackgroundAnalysisProgram( + serviceId, console, configOptions, importResolver, diff --git a/packages/pyright-internal/src/languageService/autoImporter.ts b/packages/pyright-internal/src/languageService/autoImporter.ts index 12f90c63b..4d98883f8 100644 --- a/packages/pyright-internal/src/languageService/autoImporter.ts +++ b/packages/pyright-internal/src/languageService/autoImporter.ts @@ -156,7 +156,7 @@ export class AutoImporter { private readonly _importStatements: ImportStatements; constructor( - private readonly _execEnvironment: ExecutionEnvironment, + protected readonly execEnvironment: ExecutionEnvironment, protected readonly importResolver: ImportResolver, protected readonly parseResults: ParseResults, private readonly _invocationPosition: Position, @@ -588,7 +588,7 @@ export class AutoImporter { // convert to a module name that can be used in an // 'import from' statement. private _getModuleNameAndTypeFromFilePath(filePath: string): ModuleNameAndType { - return this.importResolver.getModuleNameForImport(filePath, this._execEnvironment); + return this.importResolver.getModuleNameForImport(filePath, this.execEnvironment); } private _getTextEditsForAutoImportByFilePath( diff --git a/packages/pyright-internal/src/languageService/symbolIndexer.ts b/packages/pyright-internal/src/languageService/symbolIndexer.ts index 856a161ad..b66027a68 100644 --- a/packages/pyright-internal/src/languageService/symbolIndexer.ts +++ b/packages/pyright-internal/src/languageService/symbolIndexer.ts @@ -37,16 +37,6 @@ export interface IndexSymbolData { readonly children?: IndexSymbolData[] | undefined; } -export interface IndexResults { - readonly privateOrProtected: boolean; - readonly symbols: IndexSymbolData[]; -} - -export interface IndexOptions { - indexingForAutoImportMode: boolean; - includeAllSymbols?: boolean; -} - export class SymbolIndexer { static indexSymbols( fileInfo: AnalyzerFileInfo, diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts b/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts index f8060fa91..8b9fd2ad4 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts @@ -48,6 +48,7 @@ export class TestFeatures implements HostSpecificFeatures { cacheManager?: CacheManager ) => new BackgroundAnalysisProgram( + serviceId, console, configOptions, importResolver, diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index b7d7c049e..dc2954b84 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -25,7 +25,7 @@ import { WorkspaceEdit, } from 'vscode-languageserver'; -import { BackgroundAnalysisProgramFactory } from '../../../analyzer/backgroundAnalysisProgram'; +import { BackgroundAnalysisProgramFactory, InvalidatedReason } from '../../../analyzer/backgroundAnalysisProgram'; import { ImportResolver, ImportResolverFactory } from '../../../analyzer/importResolver'; import { findNodeByOffset } from '../../../analyzer/parseTreeUtils'; import { Program } from '../../../analyzer/program'; @@ -662,7 +662,7 @@ export class TestState { } ): Promise { // make sure we don't use cache built from other tests - this.workspace.service.invalidateAndForceReanalysis(); + this.workspace.service.invalidateAndForceReanalysis(InvalidatedReason.Reanalyzed); this.analyze(); for (const range of this.getRanges()) { diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 7408721ee..1fbfb51b5 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -17,7 +17,7 @@ "devDependencies": { "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", - "@types/vscode": "~1.67.0", + "@types/vscode": "~1.78.0", "copy-webpack-plugin": "^10.2.4", "detect-indent": "^6.1.0", "shx": "^0.3.4", @@ -28,7 +28,7 @@ "webpack-cli": "^4.10.0" }, "engines": { - "vscode": "^1.67.0" + "vscode": "^1.78.0" } }, "node_modules/@discoveryjs/json-ext": { @@ -182,9 +182,9 @@ "dev": true }, "node_modules/@types/vscode": { - "version": "1.67.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.67.0.tgz", - "integrity": "sha512-GH8BDf8cw9AC9080uneJfulhSa7KHSMI2s/CyKePXoGNos9J486w2V4YKoeNUqIEkW4hKoEAWp6/cXTwyGj47g==", + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.78.0.tgz", + "integrity": "sha512-LJZIJpPvKJ0HVQDqfOy6W4sNKUBBwyDu1Bs8chHBZOe9MNuKTJtidgZ2bqjhmmWpUb0TIIqv47BFUcVmAsgaVA==", "dev": true }, "node_modules/@webassemblyjs/ast": { @@ -3512,9 +3512,9 @@ "dev": true }, "@types/vscode": { - "version": "1.67.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.67.0.tgz", - "integrity": "sha512-GH8BDf8cw9AC9080uneJfulhSa7KHSMI2s/CyKePXoGNos9J486w2V4YKoeNUqIEkW4hKoEAWp6/cXTwyGj47g==", + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.78.0.tgz", + "integrity": "sha512-LJZIJpPvKJ0HVQDqfOy6W4sNKUBBwyDu1Bs8chHBZOe9MNuKTJtidgZ2bqjhmmWpUb0TIIqv47BFUcVmAsgaVA==", "dev": true }, "@webassemblyjs/ast": { diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 1efb5935a..4ef3edff6 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -14,7 +14,7 @@ "url": "https://github.com/Microsoft/pyright" }, "engines": { - "vscode": "^1.67.0" + "vscode": "^1.78.0" }, "keywords": [ "python" @@ -958,7 +958,7 @@ "devDependencies": { "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", - "@types/vscode": "~1.67.0", + "@types/vscode": "~1.78.0", "copy-webpack-plugin": "^10.2.4", "detect-indent": "^6.1.0", "shx": "^0.3.4", From bc8cca28ba5b2d9b3fd60a6520bb83b43af8d8f5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 17 May 2023 14:22:17 -0700 Subject: [PATCH 178/525] Fixed bug that led to a "leaked" unsolved type variable if a `__new__` method used a function-scoped type variable and there was no `__init__` method for the class. This addresses https://github.com/microsoft/pyright/issues/5126. --- .../src/analyzer/constructors.ts | 20 +++++++++---------- .../src/tests/samples/constructor10.py | 20 ++++++++++++++----- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 9d5c41406..9f3348174 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -141,14 +141,6 @@ export function validateConstructorArguments( // If the __new__ method returns something other than an object or // NoReturn, we'll ignore its return type. newMethodReturnType = ClassType.cloneAsInstance(type); - } else if ( - ClassType.isSameGenericClass(newMethodReturnType, type) && - isPartlyUnknown(newMethodReturnType) - ) { - // If the __new__ method returns the same type as the class it's constructing - // but doesn't supply solved type arguments, we'll ignore its return type - // and rely on the __init__ method to supply them instead. - newMethodReturnType = ClassType.cloneAsInstance(type); } } @@ -160,10 +152,18 @@ export function validateConstructorArguments( !isNever(newMethodReturnType) && !shouldSkipInitEvaluation(evaluator, type, newMethodReturnType) ) { + // If the __new__ method returned the same type as the class it's constructing + // but didn't supply solved type arguments, we'll ignore its specialized return + // type and rely on the __init__ method to supply the type arguments instead. + let initMethodBindToType = newMethodReturnType; + if (isPartlyUnknown(initMethodBindToType)) { + initMethodBindToType = ClassType.cloneAsInstance(type); + } + // Determine whether the class overrides the object.__init__ method. initMethodTypeResult = evaluator.getTypeOfObjectMember( errorNode, - ClassType.cloneAsInstance(newMethodReturnType), + ClassType.cloneAsInstance(initMethodBindToType), '__init__', { method: 'get' }, /* diag */ undefined, @@ -176,7 +176,7 @@ export function validateConstructorArguments( evaluator, errorNode, argList, - newMethodReturnType, + initMethodBindToType, skipUnknownArgCheck, inferenceContext, initMethodTypeResult.type diff --git a/packages/pyright-internal/src/tests/samples/constructor10.py b/packages/pyright-internal/src/tests/samples/constructor10.py index 6b8d8d52f..07141f61f 100644 --- a/packages/pyright-internal/src/tests/samples/constructor10.py +++ b/packages/pyright-internal/src/tests/samples/constructor10.py @@ -2,18 +2,28 @@ # is part of a generic class but uses its own type parameters. -from typing import Iterable, Iterator, TypeVar +from typing import Generic, Iterable, Iterator, TypeVar _T_co = TypeVar("_T_co", covariant=True) _T = TypeVar("_T") -class pairwise(Iterator[_T_co]): - def __new__(cls, __iterable: Iterable[_T]) -> "pairwise[tuple[_T, _T]]": +class A(Iterator[_T_co]): + def __new__(cls, __iterable: Iterable[_T]) -> "A[tuple[_T, _T]]": ... -def triplewise(iterable: Iterable[_T]) -> Iterator[tuple[_T, _T, _T]]: - for (a, _), (b, c) in pairwise(pairwise(iterable)): +def func1(iterable: Iterable[_T]) -> Iterator[tuple[_T, _T, _T]]: + for (a, _), (b, c) in A(A(iterable)): yield a, b, c + + +class B(Generic[_T_co]): + def __new__(cls, __iter1: Iterable[_T]) -> "B[_T]": + ... + + +def func2(p1: list[dict]): + v1 = B(p1) + reveal_type(v1, expected_text="B[dict[Unknown, Unknown]]") From aa471a259134f44e2bb462a307ff63c1fb1679b3 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 17 May 2023 14:35:30 -0700 Subject: [PATCH 179/525] A class created with "NewType" should be treated as though it is implicitly `@final`. The runtime enforces this. Pyright now correctly generates an error if such a class is used as a base class. This addresses https://github.com/microsoft/pyright/issues/5127. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 3 ++- .../pyright-internal/src/tests/samples/newType6.py | 13 +++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/newType6.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index cdb2fc33d..bb268eaf3 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11840,7 +11840,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions addError(Localizer.Diagnostic.newTypeLiteral(), argList[1].node || errorNode); } - const classFlags = baseClass.details.flags & ~(ClassTypeFlags.BuiltInClass | ClassTypeFlags.SpecialBuiltIn); + let classFlags = baseClass.details.flags & ~(ClassTypeFlags.BuiltInClass | ClassTypeFlags.SpecialBuiltIn); + classFlags |= ClassTypeFlags.Final; const classType = ClassType.createInstantiable( className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), diff --git a/packages/pyright-internal/src/tests/samples/newType6.py b/packages/pyright-internal/src/tests/samples/newType6.py new file mode 100644 index 000000000..7c75d0256 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/newType6.py @@ -0,0 +1,13 @@ +# This sample ensures that types created with NewType are treated +# as though they're final and cannot be subclassed. The runtime +# enforces this. + +from typing import NewType + + +MyStr = NewType("MyStr", str) + + +# This should generate an error. +class A(MyStr): + ... diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index cc61f7807..6c6e134eb 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -262,6 +262,12 @@ test('NewType5', () => { TestUtils.validateResults(analysisResults, 0); }); +test('NewType6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['newType6.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + test('isInstance1', () => { // This test requires Python 3.10 because it uses PEP 604 notation for unions. const configOptions = new ConfigOptions('.'); From 723df6f7baf66ce5c3abea5065ecd1ddccb9e1ec Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 17 May 2023 14:51:30 -0700 Subject: [PATCH 180/525] Deleted unused private functions in binder. --- .../pyright-internal/src/analyzer/binder.ts | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index e49dde574..cccad2e4c 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -3880,28 +3880,6 @@ export class Binder extends ParseTreeWalker { return { isClassVar, classVarTypeNode }; } - // Determines if the specified type annotation is wrapped in a "Required". - private _isRequiredAnnotation(typeAnnotation: ExpressionNode | undefined): boolean { - if (typeAnnotation && typeAnnotation.nodeType === ParseNodeType.Index && typeAnnotation.items.length === 1) { - if (this._isTypingAnnotation(typeAnnotation.baseExpression, 'Required')) { - return true; - } - } - - return false; - } - - // Determines if the specified type annotation is wrapped in a "NotRequired". - private _isNotRequiredAnnotation(typeAnnotation: ExpressionNode | undefined): boolean { - if (typeAnnotation && typeAnnotation.nodeType === ParseNodeType.Index && typeAnnotation.items.length === 1) { - if (this._isTypingAnnotation(typeAnnotation.baseExpression, 'NotRequired')) { - return true; - } - } - - return false; - } - // Determines whether a member access expression is referring to a // member of a class (either a class or instance member). This will // typically take the form "self.x" or "cls.x". From 14655ce6c2cc2f50061e14dea2e84089d6aacdea Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 17 May 2023 17:23:35 -0700 Subject: [PATCH 181/525] Code prep for PEP 705 implementation. --- .../src/analyzer/typeEvaluator.ts | 24 +++-- .../src/analyzer/typedDicts.ts | 92 ++++++++++--------- .../pyright-internal/src/analyzer/types.ts | 2 +- .../src/localization/localize.ts | 11 ++- .../src/localization/package.nls.en-us.json | 6 +- 5 files changed, 76 insertions(+), 59 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bb268eaf3..5fbea9d38 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13739,7 +13739,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function createRequiredType( classType: ClassType, errorNode: ParseNode, - isRequired: boolean, typeArgs: TypeResultWithNode[] | undefined, flags: EvaluatorFlags ): TypeResult { @@ -13752,7 +13751,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (!typeArgs || typeArgs.length !== 1) { addError( - isRequired ? Localizer.Diagnostic.requiredArgCount() : Localizer.Diagnostic.notRequiredArgCount(), + classType.details.name === 'Required' + ? Localizer.Diagnostic.requiredArgCount() + : Localizer.Diagnostic.notRequiredArgCount(), errorNode ); return { type: classType }; @@ -13781,14 +13782,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isUsageLegal = true; } + let isRequired = typeArgs[0].isRequired; + let isNotRequired = typeArgs[0].isNotRequired; + // Nested Required/NotRequired are not allowed. if (typeArgs[0].isRequired || typeArgs[0].isNotRequired) { isUsageLegal = false; } + isRequired = classType.details.name === 'Required'; + isNotRequired = classType.details.name === 'NotRequired'; + if (!isUsageLegal) { addError( - isRequired + classType.details.name === 'Required' ? Localizer.Diagnostic.requiredNotInTypedDict() : Localizer.Diagnostic.notRequiredNotInTypedDict(), errorNode @@ -13796,7 +13803,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type: ClassType.cloneForSpecialization(classType, [convertToInstance(typeArgType)], !!typeArgs) }; } - return { type: typeArgType, isRequired, isNotRequired: !isRequired }; + return { type: typeArgType, isRequired, isNotRequired }; } function createUnpackType( @@ -15082,8 +15089,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions fileInfo.definedConstants ); if (constArgValue === undefined) { - addError(Localizer.Diagnostic.typedDictTotalParam(), arg.valueExpression); - } else if (!constArgValue) { + addError( + Localizer.Diagnostic.typedDictBoolParam().format({ name: arg.name.value }), + arg.valueExpression + ); + } else if (arg.name.value === 'total' && !constArgValue) { classType.details.flags |= ClassTypeFlags.CanOmitDictValues; } } else { @@ -18549,7 +18559,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions case 'Required': case 'NotRequired': { - return createRequiredType(classType, errorNode, aliasedName === 'Required', typeArgs, flags); + return createRequiredType(classType, errorNode, typeArgs, flags); } case 'Self': { diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index 680e09122..a5229a249 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -169,26 +169,27 @@ export function createTypedDictType( } if (usingDictSyntax) { - if (argList.length >= 3) { - if ( - !argList[2].name || - argList[2].name.value !== 'total' || - !argList[2].valueExpression || - argList[2].valueExpression.nodeType !== ParseNodeType.Constant || - !( - argList[2].valueExpression.constType === KeywordType.False || - argList[2].valueExpression.constType === KeywordType.True - ) - ) { - evaluator.addError(Localizer.Diagnostic.typedDictTotalParam(), argList[2].valueExpression || errorNode); - } else if (argList[2].valueExpression.constType === KeywordType.False) { - classType.details.flags |= ClassTypeFlags.CanOmitDictValues; + for (const arg of argList.slice(2)) { + if (arg.name?.value === 'total' || arg.name?.value === 'readonly') { + if ( + !arg.valueExpression || + arg.valueExpression.nodeType !== ParseNodeType.Constant || + !( + arg.valueExpression.constType === KeywordType.False || + arg.valueExpression.constType === KeywordType.True + ) + ) { + evaluator.addError( + Localizer.Diagnostic.typedDictBoolParam().format({ name: arg.name.value }), + arg.valueExpression || errorNode + ); + } else if (arg.name.value === 'total' && arg.valueExpression.constType === KeywordType.False) { + classType.details.flags |= ClassTypeFlags.CanOmitDictValues; + } + } else { + evaluator.addError(Localizer.Diagnostic.typedDictExtraArgs(), arg.valueExpression || errorNode); } } - - if (argList.length > 3) { - evaluator.addError(Localizer.Diagnostic.typedDictExtraArgs(), argList[3].valueExpression || errorNode); - } } synthesizeTypedDictClassMethods(evaluator, errorNode, classType, /* isClassFinal */ false); @@ -329,7 +330,8 @@ export function synthesizeTypedDictClassMethods( type: ClassType.cloneAsInstance(classType), hasDeclaredType: true, }; - const createDefaultTypeVar = (func: FunctionType) => { + + function createDefaultTypeVar(func: FunctionType) { let defaultTypeVar = TypeVarType.createInstance(`__TDefault`); defaultTypeVar = TypeVarType.cloneForScopeId( defaultTypeVar, @@ -338,15 +340,15 @@ export function synthesizeTypedDictClassMethods( TypeVarScopeType.Function ); return defaultTypeVar; - }; + } - const createGetMethod = ( + function createGetMethod( keyType: Type, valueType: Type | undefined, includeDefault: boolean, isEntryRequired = false, defaultTypeMatchesField = false - ) => { + ) { const getOverload = FunctionType.createSynthesizedInstance('get', FunctionTypeFlags.Overloaded); FunctionType.addParameter(getOverload, selfParam); getOverload.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); @@ -389,9 +391,9 @@ export function synthesizeTypedDictClassMethods( : combineTypes([valueType ?? AnyType.create(), NoneType.createInstance()]); } return getOverload; - }; + } - const createPopMethods = (keyType: Type, valueType: Type) => { + function createPopMethods(keyType: Type, valueType: Type) { const keyParam: FunctionParameter = { category: ParameterCategory.Simple, name: 'k', @@ -418,9 +420,9 @@ export function synthesizeTypedDictClassMethods( }); popOverload2.details.declaredReturnType = combineTypes([valueType, defaultTypeVar]); return [popOverload1, popOverload2]; - }; + } - const createSetDefaultMethod = (keyType: Type, valueType: Type) => { + function createSetDefaultMethod(keyType: Type, valueType: Type) { const setDefaultOverload = FunctionType.createSynthesizedInstance( 'setdefault', FunctionTypeFlags.Overloaded @@ -440,9 +442,9 @@ export function synthesizeTypedDictClassMethods( }); setDefaultOverload.details.declaredReturnType = valueType; return setDefaultOverload; - }; + } - const createDelItemMethod = (keyType: Type) => { + function createDelItemMethod(keyType: Type) { const delItemOverload = FunctionType.createSynthesizedInstance('delitem', FunctionTypeFlags.Overloaded); FunctionType.addParameter(delItemOverload, selfParam); FunctionType.addParameter(delItemOverload, { @@ -453,7 +455,7 @@ export function synthesizeTypedDictClassMethods( }); delItemOverload.details.declaredReturnType = NoneType.createInstance(); return delItemOverload; - }; + } const getOverloads: FunctionType[] = []; const popOverloads: FunctionType[] = []; @@ -535,18 +537,21 @@ export function synthesizeTypedDictClassMethods( 'get', Symbol.createWithType(SymbolFlags.ClassMember, OverloadedFunctionType.create(getOverloads)) ); + if (popOverloads.length > 0) { symbolTable.set( 'pop', Symbol.createWithType(SymbolFlags.ClassMember, OverloadedFunctionType.create(popOverloads)) ); } + if (setDefaultOverloads.length > 0) { symbolTable.set( 'setdefault', Symbol.createWithType(SymbolFlags.ClassMember, OverloadedFunctionType.create(setDefaultOverloads)) ); } + symbolTable.set('__delitem__', Symbol.createWithType(SymbolFlags.ClassMember, createDelItemMethod(strType))); // If the TypedDict is final and all of its entries are NotRequired, @@ -712,10 +717,12 @@ function getTypedDictMembersForClassRecursive( // forbidden in PEP 589. const existingEntry = keyMap.get(name); if (existingEntry) { - if (!isTypeSame(existingEntry.valueType, valueType)) { + const isTypeCompatible = isTypeSame(existingEntry.valueType, valueType); + + if (!isTypeCompatible) { const diag = new DiagnosticAddendum(); diag.addMessage( - Localizer.DiagnosticAddendum.typedDictFieldRedefinition().format({ + Localizer.DiagnosticAddendum.typedDictFieldTypeRedefinition().format({ parentType: evaluator.printType(existingEntry.valueType), childType: evaluator.printType(valueType), }) @@ -723,7 +730,7 @@ function getTypedDictMembersForClassRecursive( evaluator.addDiagnostic( AnalyzerNodeInfo.getFileInfo(lastDecl.node).diagnosticRuleSet.reportGeneralTypeIssues, DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.typedDictFieldRedefinition().format({ + Localizer.Diagnostic.typedDictFieldTypeRedefinition().format({ name, }) + diag.getString(), lastDecl.node @@ -765,17 +772,12 @@ export function assignTypedDictToTypedDict( ); typesAreConsistent = false; } else { - if (destEntry.isRequired && !srcEntry.isRequired) { + if (destEntry.isRequired !== srcEntry.isRequired) { + const message = destEntry.isRequired + ? Localizer.DiagnosticAddendum.typedDictFieldRequired() + : Localizer.DiagnosticAddendum.typedDictFieldNotRequired(); diag?.createAddendum().addMessage( - Localizer.DiagnosticAddendum.typedDictFieldRequired().format({ - name, - type: evaluator.printType(destType), - }) - ); - typesAreConsistent = false; - } else if (!destEntry.isRequired && srcEntry.isRequired) { - diag?.createAddendum().addMessage( - Localizer.DiagnosticAddendum.typedDictFieldNotRequired().format({ + message.format({ name, type: evaluator.printType(destType), }) @@ -1072,7 +1074,11 @@ export function narrowForKeyAssignment(classType: ClassType, key: string) { const narrowedEntries = classType.typedDictNarrowedEntries ? new Map(classType.typedDictNarrowedEntries) : new Map(); - narrowedEntries.set(key, { isProvided: true, isRequired: false, valueType: tdEntry.valueType }); + narrowedEntries.set(key, { + isProvided: true, + isRequired: false, + valueType: tdEntry.valueType, + }); return ClassType.cloneForNarrowedTypedDictEntries(classType, narrowedEntries); } diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 76a81377e..d814c659b 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -441,7 +441,7 @@ export const enum ClassTypeFlags { // The class derives from a class that has the ABCMeta // metaclass. Such classes are allowed to contain // @abstractmethod decorators. - SupportsAbstractMethods = 1 << 9, + SupportsAbstractMethods = 1 << 10, // Derives from property class and has the semantics of // a property (with optional setter, deleter). diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 31426c96b..5d8d60a7a 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -867,18 +867,19 @@ export namespace Localizer { export const typedDictAccess = () => getRawString('Diagnostic.typedDictAccess'); export const typedDictBadVar = () => getRawString('Diagnostic.typedDictBadVar'); export const typedDictBaseClass = () => getRawString('Diagnostic.typedDictBaseClass'); + export const typedDictBoolParam = () => + new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typedDictBoolParam')); export const typedDictDelete = () => getRawString('Diagnostic.typedDictDelete'); export const typedDictEmptyName = () => getRawString('Diagnostic.typedDictEmptyName'); export const typedDictEntryName = () => getRawString('Diagnostic.typedDictEntryName'); export const typedDictEntryUnique = () => getRawString('Diagnostic.typedDictEntryUnique'); export const typedDictExtraArgs = () => getRawString('Diagnostic.typedDictExtraArgs'); - export const typedDictFieldRedefinition = () => - new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typedDictFieldRedefinition')); + export const typedDictFieldTypeRedefinition = () => + new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typedDictFieldTypeRedefinition')); export const typedDictFirstArg = () => getRawString('Diagnostic.typedDictFirstArg'); export const typedDictSecondArgDict = () => getRawString('Diagnostic.typedDictSecondArgDict'); export const typedDictSecondArgDictEntry = () => getRawString('Diagnostic.typedDictSecondArgDictEntry'); export const typedDictSet = () => getRawString('Diagnostic.typedDictSet'); - export const typedDictTotalParam = () => getRawString('Diagnostic.typedDictTotalParam'); export const typeExpectedClass = () => new ParameterizedString<{ type: string }>(getRawString('Diagnostic.typeExpectedClass')); export const typeGuardArgCount = () => getRawString('Diagnostic.typeGuardArgCount'); @@ -1304,9 +1305,9 @@ export namespace Localizer { new ParameterizedString<{ name: string; type: string }>( getRawString('DiagnosticAddendum.typedDictFieldNotRequired') ); - export const typedDictFieldRedefinition = () => + export const typedDictFieldTypeRedefinition = () => new ParameterizedString<{ parentType: string; childType: string }>( - getRawString('DiagnosticAddendum.typedDictFieldRedefinition') + getRawString('DiagnosticAddendum.typedDictFieldTypeRedefinition') ); export const typedDictFieldRequired = () => new ParameterizedString<{ name: string; type: string }>( diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index f87e5cd73..1ec65dc35 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -437,17 +437,17 @@ "typedDictAccess": "Could not access item in TypedDict", "typedDictBadVar": "TypedDict classes can contain only type annotations", "typedDictBaseClass": "All base classes for TypedDict classes must also be TypedDict classes", + "typedDictBoolParam": "Expected \"{name}\" parameter to have a value of True or False", "typedDictDelete": "Could not delete item in TypedDict", "typedDictEmptyName": "Names within a TypedDict cannot be empty", "typedDictEntryName": "Expected string literal for dictionary entry name", "typedDictEntryUnique": "Names within a dictionary must be unique", "typedDictExtraArgs": "Extra TypedDict arguments not supported", - "typedDictFieldRedefinition": "Type of TypedDict field \"{name}\" cannot be redefined", + "typedDictFieldTypeRedefinition": "Type of TypedDict field \"{name}\" cannot be redefined", "typedDictFirstArg": "Expected TypedDict class name as first argument", "typedDictSecondArgDict": "Expected dict or keyword parameter as second parameter", "typedDictSecondArgDictEntry": "Expected simple dictionary entry", "typedDictSet": "Could not assign item in TypedDict", - "typedDictTotalParam": "Expected \"total\" parameter to have a value of True or False", "typeExpectedClass": "Expected type expression but received \"{type}\"", "typeGuardArgCount": "Expected a single type argument after \"TypeGuard\"", "typeGuardParamCount": "User-defined type guard functions and methods must have at least one input parameter", @@ -666,7 +666,7 @@ "typedDictFieldNotRequired": "\"{name}\" is not required in \"{type}\"", "typedDictFieldRequired": "\"{name}\" is required in \"{type}\"", "typedDictFieldTypeMismatch": "Type \"{type}\" is not assignable to field \"{name}\"", - "typedDictFieldRedefinition": "Type in parent class is \"{parentType}\" and type in child class is \"{childType}\"", + "typedDictFieldTypeRedefinition": "Type in parent class is \"{parentType}\" and type in child class is \"{childType}\"", "typedDictFieldUndefined": "\"{name}\" is an undefined field in type \"{type}\"", "typedDictFinalMismatch": "\"{sourceType}\" is incompatible with \"{destType}\" because of a @final mismatch", "typeIncompatible": "\"{sourceType}\" is incompatible with \"{destType}\"", From 73ce0d435f6ad6852f1288ac4bfe41f8799d5708 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 17 May 2023 21:18:11 -0700 Subject: [PATCH 182/525] Fixed a false positive error with the `reportImplicitOverride` check that occurs when the `@override` decorator is applied to a method that is decorated with a wrapper function that completely replaces the original function with another. This addresses https://github.com/microsoft/pyright/issues/5133. --- .../pyright-internal/src/analyzer/checker.ts | 20 +++++-- .../src/tests/samples/override1.py | 58 ++++++++++++++----- .../src/tests/samples/override2.py | 15 +++++ 3 files changed, 76 insertions(+), 17 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index dcee1b69f..6e7e3eb45 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -5446,14 +5446,14 @@ export class Checker extends ParseTreeWalker { if (!firstOverride) { // If this is a method decorated with @override, validate that there // is a base class method of the same name. - this._validateOverrideDecoratorNotPresent(typeOfSymbol); + this._validateOverrideDecoratorNotPresent(symbol, typeOfSymbol); } else { - this._validateOverrideDecoratorPresent(typeOfSymbol, firstOverride); + this._validateOverrideDecoratorPresent(symbol, typeOfSymbol, firstOverride); } }); } - private _validateOverrideDecoratorPresent(overrideType: Type, baseMember: ClassMember) { + private _validateOverrideDecoratorPresent(symbol: Symbol, overrideType: Type, baseMember: ClassMember) { // Skip this check if disabled. if (this._fileInfo.diagnosticRuleSet.reportImplicitOverride === 'none') { return; @@ -5485,6 +5485,12 @@ export class Checker extends ParseTreeWalker { return; } + // If the declaration for the override function is not the same as the + // declaration for the symbol, the function was probably replaced by a decorator. + if (!symbol.getDeclarations().some((decl) => decl === overrideFunction!.details.declaration)) { + return; + } + const funcNode = overrideFunction.details.declaration.node; this._evaluator.addDiagnostic( this._fileInfo.diagnosticRuleSet.reportImplicitOverride, @@ -5500,7 +5506,7 @@ export class Checker extends ParseTreeWalker { // Determines whether the type is a function or overloaded function with an @override // decorator. In this case, an error is reported because no base class has declared // a method of the same name. - private _validateOverrideDecoratorNotPresent(overrideType: Type) { + private _validateOverrideDecoratorNotPresent(symbol: Symbol, overrideType: Type) { let overrideFunction: FunctionType | undefined; if (isFunction(overrideType)) { @@ -5522,6 +5528,12 @@ export class Checker extends ParseTreeWalker { return; } + // If the declaration for the override function is not the same as the + // declaration for the symbol, the function was probably replaced by a decorator. + if (!symbol.getDeclarations().some((decl) => decl === overrideFunction!.details.declaration)) { + return; + } + const funcNode = overrideFunction.details.declaration.node; this._evaluator.addDiagnostic( this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diff --git a/packages/pyright-internal/src/tests/samples/override1.py b/packages/pyright-internal/src/tests/samples/override1.py index b7dce33a9..11a1b1e3e 100644 --- a/packages/pyright-internal/src/tests/samples/override1.py +++ b/packages/pyright-internal/src/tests/samples/override1.py @@ -1,20 +1,27 @@ # This sample tests the handling of the @override decorator as described # in PEP 698. +from typing import Callable from typing_extensions import Any, overload, override + class ClassA: def method1(self) -> None: pass + class ClassB: def method3(self) -> None: pass - + @overload - def method5(self, x: int) -> int: ... + def method5(self, x: int) -> int: + ... + @overload - def method5(self, x: str) -> str: ... + def method5(self, x: str) -> str: + ... + def method5(self, x: int | str) -> int | str: ... @@ -30,14 +37,14 @@ def prop_a(self) -> int: @override def method1(self) -> None: pass - + def method2(self) -> None: pass - + @override def method3(self) -> None: pass - + @override # This should generate an error because method3 does not # override anything in a base class. @@ -45,20 +52,25 @@ def method4(self) -> None: pass @overload - def method5(self, x: int) -> int: ... + def method5(self, x: int) -> int: + ... + @overload - def method5(self, x: str) -> str: ... - + def method5(self, x: str) -> str: + ... + @override def method5(self, x: int | str) -> int | str: ... - @overload - def method6(self, x: int) -> int: ... + def method6(self, x: int) -> int: + ... + @overload - def method6(self, x: str) -> str: ... - + def method6(self, x: str) -> str: + ... + @override # This should generate an error because method6 does not # override anything in a base class. @@ -69,7 +81,27 @@ def method6(self, x: int | str) -> int | str: class ClassD(Any): ... + class ClassE(ClassD): @override def method1(self) -> None: pass + + +def evil_wrapper(func: Callable[..., Any], /): + def wrapped(*args: Any, **kwargs: Any) -> Any: + raise NotImplementedError + + return wrapped + + +class F: + def method1(self): + pass + + +class G(F): + @override + @evil_wrapper + def method1(self): + pass diff --git a/packages/pyright-internal/src/tests/samples/override2.py b/packages/pyright-internal/src/tests/samples/override2.py index 6c874e14e..e274b1d6e 100644 --- a/packages/pyright-internal/src/tests/samples/override2.py +++ b/packages/pyright-internal/src/tests/samples/override2.py @@ -1,9 +1,17 @@ # This sample tests the reportImplicitOverride diagnostic check # (strict enforcement of PEP 698). +from typing import Any, Callable from typing_extensions import override +def evil_wrapper(func: Callable[..., Any], /): + def wrapped(*args: Any, **kwargs: Any) -> Any: + raise NotImplementedError + + return wrapped + + class Base: @override def __init__(self): @@ -16,6 +24,9 @@ def method1(self): def prop_c(self) -> int: return 0 + def method2(self): + pass + class Child(Base): def __init__(self): @@ -29,3 +40,7 @@ def method1(self): # This should generate an error if reportImplicitOverride is enabled. def prop_c(self) -> int: return 0 + + @evil_wrapper + def method2(self): + pass From fedcafb706c335b17ca2617d3d2d1ab07030f51f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 18 May 2023 17:18:20 -0700 Subject: [PATCH 183/525] Fixed a bunch of places in the pyright code where lists were being expanded on the stack, potentially resulting in a stack overflow. This addresses https://github.com/microsoft/pyright/issues/5139. --- .../pyright-internal/src/analyzer/checker.ts | 79 ++++++++++--------- .../src/analyzer/constructorTransform.ts | 6 +- .../src/analyzer/constructors.ts | 7 +- .../src/analyzer/importResolver.ts | 6 +- .../src/analyzer/importStatementUtils.ts | 7 +- .../src/analyzer/packageTypeVerifier.ts | 2 +- .../pyright-internal/src/analyzer/service.ts | 2 +- .../src/analyzer/sourceFile.ts | 13 +-- .../src/analyzer/sourceMapper.ts | 5 +- .../src/analyzer/typeDocStringUtils.ts | 4 +- .../src/analyzer/typeEvaluator.ts | 20 ++--- .../src/analyzer/typePrinter.ts | 6 +- .../src/analyzer/typeUtils.ts | 2 +- .../src/analyzer/typeVarContext.ts | 4 +- .../pyright-internal/src/analyzer/types.ts | 10 ++- .../src/common/configOptions.ts | 2 +- .../src/common/workspaceEditUtils.ts | 19 +++-- .../languageService/callHierarchyProvider.ts | 5 +- .../src/languageService/completionProvider.ts | 8 +- .../documentSymbolCollector.ts | 26 +++--- .../src/languageService/referencesProvider.ts | 2 +- .../languageService/signatureHelpProvider.ts | 2 +- .../src/readonlyAugmentedFileSystem.ts | 7 +- .../pyright-internal/src/workspaceFactory.ts | 10 +-- 24 files changed, 139 insertions(+), 115 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 6e7e3eb45..9b800aa12 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -15,6 +15,7 @@ import { CancellationToken } from 'vscode-languageserver'; import { Commands } from '../commands/commands'; +import { appendArray } from '../common/collectionUtils'; import { DiagnosticLevel } from '../common/configOptions'; import { assert, assertNever } from '../common/debug'; import { ActionKind, Diagnostic, DiagnosticAddendum, RenameShadowedFileAction } from '../common/diagnostic'; @@ -40,8 +41,8 @@ import { ErrorNode, ExceptNode, ExpressionNode, - FormatStringNode, ForNode, + FormatStringNode, FunctionNode, GlobalNode, IfNode, @@ -49,7 +50,6 @@ import { ImportFromAsNode, ImportFromNode, IndexNode, - isExpressionNode, LambdaNode, ListComprehensionIfNode, ListComprehensionNode, @@ -86,25 +86,26 @@ import { WithNode, YieldFromNode, YieldNode, + isExpressionNode, } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; -import { getUnescapedString, UnescapeError, UnescapeErrorType } from '../parser/stringTokenUtils'; +import { UnescapeError, UnescapeErrorType, getUnescapedString } from '../parser/stringTokenUtils'; import { OperatorType } from '../parser/tokenizerTypes'; import { AnalyzerFileInfo } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { Declaration, DeclarationType, isAliasDeclaration } from './declaration'; -import { createImportedModuleDescriptor, ImportedModuleDescriptor, ImportResolver } from './importResolver'; +import { ImportResolver, ImportedModuleDescriptor, createImportedModuleDescriptor } from './importResolver'; import { ImportResult, ImportType } from './importResult'; import { getRelativeModuleName, getTopLevelImports } from './importStatementUtils'; import { getParameterListDetails } from './parameterUtils'; import * as ParseTreeUtils from './parseTreeUtils'; import { ParseTreeWalker } from './parseTreeWalker'; import { validateClassPattern } from './patternMatching'; -import { getRegionComments, RegionComment, RegionCommentType } from './regions'; +import { RegionComment, RegionCommentType, getRegionComments } from './regions'; import { ScopeType } from './scope'; import { getScopeForNode } from './scopeUtils'; import { IPythonMode } from './sourceFile'; -import { isStubFile, SourceMapper } from './sourceMapper'; +import { SourceMapper, isStubFile } from './sourceMapper'; import { evaluateStaticBoolExpression } from './staticExpressions'; import { Symbol } from './symbol'; import * as SymbolNameUtils from './symbolNameUtils'; @@ -118,41 +119,10 @@ import { narrowTypeForContainerElementType, } from './typeGuards'; import { - ClassType, - ClassTypeFlags, - combineTypes, - FunctionType, - FunctionTypeFlags, - isAnyOrUnknown, - isClass, - isClassInstance, - isFunction, - isInstantiableClass, - isModule, - isNever, - isNoneInstance, - isOverloadedFunction, - isParamSpec, - isPossiblyUnbound, - isTypeSame, - isTypeVar, - isUnbound, - isUnion, - isUnknown, - NoneType, - OverloadedFunctionType, - Type, - TypeBase, - TypeCategory, - TypeVarType, - UnknownType, - Variance, -} from './types'; -import { - applySolvedTypeVars, AssignTypeFlags, ClassMember, ClassMemberLookupFlags, + applySolvedTypeVars, convertToInstance, derivesFromAnyOrUnknown, derivesFromClassRecursive, @@ -177,6 +147,37 @@ import { transformPossibleRecursiveTypeAlias, } from './typeUtils'; import { TypeVarContext } from './typeVarContext'; +import { + ClassType, + ClassTypeFlags, + FunctionType, + FunctionTypeFlags, + NoneType, + OverloadedFunctionType, + Type, + TypeBase, + TypeCategory, + TypeVarType, + UnknownType, + Variance, + combineTypes, + isAnyOrUnknown, + isClass, + isClassInstance, + isFunction, + isInstantiableClass, + isModule, + isNever, + isNoneInstance, + isOverloadedFunction, + isParamSpec, + isPossiblyUnbound, + isTypeSame, + isTypeVar, + isUnbound, + isUnion, + isUnknown, +} from './types'; interface TypeVarUsageInfo { isExempt: boolean; @@ -6329,7 +6330,7 @@ export class Checker extends ParseTreeWalker { } } - exceptionTypesSoFar.push(...typesOfThisExcept); + appendArray(exceptionTypesSoFar, typesOfThisExcept); }); } diff --git a/packages/pyright-internal/src/analyzer/constructorTransform.ts b/packages/pyright-internal/src/analyzer/constructorTransform.ts index 358d0dd39..c68bc5357 100644 --- a/packages/pyright-internal/src/analyzer/constructorTransform.ts +++ b/packages/pyright-internal/src/analyzer/constructorTransform.ts @@ -10,6 +10,7 @@ * */ +import { appendArray } from '../common/collectionUtils'; import { DiagnosticAddendum } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { Localizer } from '../localization/localize'; @@ -437,7 +438,10 @@ function applyPartialTransformToFunction( return param.category === ParameterCategory.VarArgDictionary; }); - const newParamList = [...unassignedParamList, ...assignedKeywordParamList, ...kwargsParam]; + const newParamList: FunctionParameter[] = []; + appendArray(newParamList, unassignedParamList); + appendArray(newParamList, assignedKeywordParamList); + appendArray(newParamList, kwargsParam); // Create a new __call__ method that uses the remaining parameters. const newCallMemberType = FunctionType.createInstance( diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 9f3348174..c192a8616 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -12,6 +12,7 @@ * the `__init__` method on the resulting object with the same arguments. */ +import { appendArray } from '../common/collectionUtils'; import { DiagnosticRule } from '../common/diagnosticRules'; import { Localizer } from '../localization/localize'; import { ExpressionNode } from '../parser/parseNodes'; @@ -124,7 +125,7 @@ export function validateConstructorArguments( if (newCallResult.argumentErrors) { argumentErrors = true; } else { - overloadsUsedForCall.push(...newCallResult.overloadsUsedForCall); + appendArray(overloadsUsedForCall, newCallResult.overloadsUsedForCall); } if (newCallResult.isTypeIncomplete) { @@ -226,7 +227,7 @@ export function validateConstructorArguments( if (callResult.argumentErrors) { argumentErrors = true; } else { - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); } if (callResult.isTypeIncomplete) { @@ -430,7 +431,7 @@ function validateInitMethod( argumentErrors = true; } - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubType, typeVarContext); } diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index ba18e531b..60715df21 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -417,7 +417,7 @@ export class ImportResolver { ).map((p) => this.fileSystem.realCasePath(p)); // Remove duplicates (yes, it happens). - this._cachedPythonSearchPaths = { paths: [...new Set(paths)], failureInfo: info }; + this._cachedPythonSearchPaths = { paths: Array.from(new Set(paths)), failureInfo: info }; } // Make sure we cache the logs as well so we can find out why search path failed. @@ -1814,8 +1814,8 @@ export class ImportResolver { }); } - const flattenPaths = [...this._cachedTypeshedThirdPartyPackagePaths.values()].flatMap((v) => v); - this._cachedTypeshedThirdPartyPackageRoots = [...new Set(flattenPaths)].sort(); + const flattenPaths = Array.from(this._cachedTypeshedThirdPartyPackagePaths.values()).flatMap((v) => v); + this._cachedTypeshedThirdPartyPackageRoots = Array.from(new Set(flattenPaths)).sort(); } private _getCompletionSuggestionsTypeshedPath( diff --git a/packages/pyright-internal/src/analyzer/importStatementUtils.ts b/packages/pyright-internal/src/analyzer/importStatementUtils.ts index 4f1b70835..98648a2bf 100644 --- a/packages/pyright-internal/src/analyzer/importStatementUtils.ts +++ b/packages/pyright-internal/src/analyzer/importStatementUtils.ts @@ -11,7 +11,7 @@ import { CancellationToken } from 'vscode-languageserver'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; -import { addIfUnique, createMapFromItems } from '../common/collectionUtils'; +import { addIfUnique, appendArray, createMapFromItems } from '../common/collectionUtils'; import { TextEditAction } from '../common/editAction'; import { ReadOnlyFileSystem } from '../common/fileSystem'; import { @@ -341,8 +341,9 @@ export function getTextEditsForAutoImportInsertions( const map = createMapFromItems(importNameInfo, (i) => `${i.module.moduleName}-${i.nameForImportFrom ?? ''}`); for (const importInfo of map.values()) { - insertionEdits.push( - ..._getInsertionEditsForAutoImportInsertion( + appendArray( + insertionEdits, + _getInsertionEditsForAutoImportInsertion( importInfo, { name: importInfo[0].module.moduleName, nameForImportFrom: importInfo[0].nameForImportFrom }, importStatements, diff --git a/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts b/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts index f1c650792..92935d33b 100644 --- a/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts +++ b/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts @@ -240,7 +240,7 @@ export class PackageTypeVerifier { } private _getDeepestPyTypedInfo(rootDirectory: string, packageNameParts: string[]) { - let subNameParts = [...packageNameParts]; + let subNameParts = Array.from(packageNameParts); // Find the deepest py.typed file that corresponds to the requested submodule. while (subNameParts.length >= 1) { diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 615665cf5..3efbd119d 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -967,7 +967,7 @@ export class AnalyzerService { .filter((f) => matchFileSpecs(this._program.configOptions, f)) .forEach((f) => fileMap.set(f, f)); - return [...fileMap.values()]; + return Array.from(fileMap.values()); } // If markFilesDirtyUnconditionally is true, we need to reparse diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index d3b138a2f..5327eca43 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -10,6 +10,7 @@ import { isMainThread } from 'worker_threads'; import { OperationCanceledException } from '../common/cancellationUtils'; +import { appendArray } from '../common/collectionUtils'; import { ConfigOptions, ExecutionEnvironment, getBasicDiagnosticRuleSet } from '../common/configOptions'; import { ConsoleInterface, StandardConsole } from '../common/console'; import { assert } from '../common/debug'; @@ -289,12 +290,12 @@ export class SourceFile { includeWarningsAndErrors = false; } - let diagList = [ - ...this._writableData.parseDiagnostics, - ...this._writableData.commentDiagnostics, - ...this._writableData.bindDiagnostics, - ...this._writableData.checkerDiagnostics, - ]; + let diagList: Diagnostic[] = []; + appendArray(diagList, this._writableData.parseDiagnostics); + appendArray(diagList, this._writableData.commentDiagnostics); + appendArray(diagList, this._writableData.bindDiagnostics); + appendArray(diagList, this._writableData.checkerDiagnostics); + const prefilteredDiagList = diagList; const typeIgnoreLinesClone = new Map(this._writableData.typeIgnoreLines); const pyrightIgnoreLinesClone = new Map(this._writableData.pyrightIgnoreLines); diff --git a/packages/pyright-internal/src/analyzer/sourceMapper.ts b/packages/pyright-internal/src/analyzer/sourceMapper.ts index 5a6587609..9773bc671 100644 --- a/packages/pyright-internal/src/analyzer/sourceMapper.ts +++ b/packages/pyright-internal/src/analyzer/sourceMapper.ts @@ -214,8 +214,9 @@ export class SourceMapper { functionStubDecl as FunctionDeclaration, recursiveDeclCache )) { - result.push( - ...this._lookUpSymbolDeclarations(functionDecl.node, stubDecl.node.name.value) + appendArray( + result, + this._lookUpSymbolDeclarations(functionDecl.node, stubDecl.node.name.value) .filter((d) => isParameterDeclaration(d)) .map((d) => d as ParameterDeclaration) ); diff --git a/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts b/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts index 0f7ddad60..19c344f5f 100644 --- a/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts @@ -32,7 +32,7 @@ import { Type, TypeCategory, } from '../analyzer/types'; -import { addIfNotNull } from '../common/collectionUtils'; +import { addIfNotNull, appendArray } from '../common/collectionUtils'; import { ModuleNode, ParseNodeType } from '../parser/parseNodes'; import { TypeEvaluator } from './typeEvaluatorTypes'; import { @@ -200,7 +200,7 @@ export function getModuleDocStringFromPaths(filePaths: string[], sourceMapper: S addIfNotNull(modules, sourceMapper.getModuleNode(filePath)); } - modules.push(...sourceMapper.findModules(filePath)); + appendArray(modules, sourceMapper.findModules(filePath)); } return getModuleDocStringFromModuleNodes(modules); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 5fbea9d38..0e37ac71b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8676,7 +8676,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isTypeIncomplete = true; } - overloadsUsedForCall.push(...functionResult.overloadsUsedForCall); + appendArray(overloadsUsedForCall, functionResult.overloadsUsedForCall); if (functionResult.argumentErrors) { argumentErrors = true; @@ -8750,7 +8750,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferenceContext ); - overloadsUsedForCall.push(...functionResult.overloadsUsedForCall); + appendArray(overloadsUsedForCall, functionResult.overloadsUsedForCall); if (functionResult.isTypeIncomplete) { isTypeIncomplete = true; @@ -8972,7 +8972,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferenceContext ); - overloadsUsedForCall.push(...constructorResult.overloadsUsedForCall); + appendArray(overloadsUsedForCall, constructorResult.overloadsUsedForCall); if (constructorResult.argumentErrors) { argumentErrors = true; @@ -9052,7 +9052,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions recursionCount ); - overloadsUsedForCall.push(...functionResult.overloadsUsedForCall); + appendArray(overloadsUsedForCall, functionResult.overloadsUsedForCall); if (functionResult.argumentErrors) { argumentErrors = true; @@ -9137,7 +9137,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions recursionCount ); - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); if (callResult.argumentErrors) { argumentErrors = true; @@ -10019,7 +10019,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // (i.e. an arg starting with a "**"), we will assume that all parameters // are matched. if (!unpackedDictionaryArgType && !FunctionType.isDefaultParameterCheckDisabled(typeResult.type)) { - const unassignedParams = [...paramMap.keys()].filter((name) => { + const unassignedParams = Array.from(paramMap.keys()).filter((name) => { const entry = paramMap.get(name)!; return !entry || entry.argsReceived < entry.argsNeeded; }); @@ -10904,7 +10904,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Report any missing parameters. if (!reportedArgError) { - let unassignedParams = [...paramMap.keys()]; + let unassignedParams = Array.from(paramMap.keys()); // Parameters that have defaults can be left unspecified. unassignedParams = unassignedParams.filter((name) => { @@ -15398,7 +15398,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // This needs to be done after dataclass processing. if (classType.details.localSlotsNames) { let isLimitedToSlots = true; - const extendedSlotsNames = [...classType.details.localSlotsNames]; + const extendedSlotsNames = Array.from(classType.details.localSlotsNames); classType.details.baseClasses.forEach((baseClass) => { if (isInstantiableClass(baseClass)) { @@ -22181,11 +22181,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions filteredOverloads.push(overload); if (destTypeVarContextClone) { - destTypeVarSignatures.push(...destTypeVarContextClone.getSignatureContexts()); + appendArray(destTypeVarSignatures, destTypeVarContextClone.getSignatureContexts()); } if (srcTypeVarContextClone) { - srcTypeVarSignatures.push(...srcTypeVarContextClone.getSignatureContexts()); + appendArray(srcTypeVarSignatures, srcTypeVarContextClone.getSignatureContexts()); } } }); diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index 9a8366d7b..43aa10445 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -7,6 +7,7 @@ * Converts a type into a string representation. */ +import { appendArray } from '../common/collectionUtils'; import { ParameterCategory } from '../parser/parseNodes'; import { isTypedKwargs } from './parameterUtils'; import * as ParseTreeUtils from './parseTreeUtils'; @@ -856,8 +857,9 @@ function printObjectTypeForClassInternal( typeArgStrings.push(_printUnpack('tuple[()]', printTypeFlags)); } } else { - typeArgStrings.push( - ...typeArg.type.tupleTypeArguments.map((typeArg) => { + appendArray( + typeArgStrings, + typeArg.type.tupleTypeArguments.map((typeArg) => { if (!isUnknown(typeArg.type)) { isAllUnknown = false; } diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 47bd25a4c..1f830615d 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3096,7 +3096,7 @@ class TypeVarTransformer { if (isFunction(replacementType)) { newOverloads.push(replacementType); } else { - newOverloads.push(...replacementType.overloads); + appendArray(newOverloads, replacementType.overloads); } if (replacementType !== entry) { diff --git a/packages/pyright-internal/src/analyzer/typeVarContext.ts b/packages/pyright-internal/src/analyzer/typeVarContext.ts index 2e2d422df..6b3220704 100644 --- a/packages/pyright-internal/src/analyzer/typeVarContext.ts +++ b/packages/pyright-internal/src/analyzer/typeVarContext.ts @@ -286,7 +286,7 @@ export class TypeVarContext { clone() { const newTypeVarMap = new TypeVarContext(); if (this._solveForScopes) { - newTypeVarMap._solveForScopes = [...this._solveForScopes]; + newTypeVarMap._solveForScopes = Array.from(this._solveForScopes); } newTypeVarMap._signatureContexts = this._signatureContexts.map((context) => context.clone()); @@ -325,7 +325,7 @@ export class TypeVarContext { copySignatureContexts(contexts: TypeVarSignatureContext[]) { assert(contexts.length > 0); - this._signatureContexts = [...contexts]; + this._signatureContexts = Array.from(contexts); } // Returns the list of scopes this type var map is "solving". diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index d814c659b..51057d6c7 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -753,7 +753,7 @@ export namespace ClassType { const newClassType = TypeBase.cloneType(classType); newClassType.details = { ...newClassType.details }; newClassType.details.fields = new Map(newClassType.details.fields); - newClassType.details.mro = [...newClassType.details.mro]; + newClassType.details.mro = Array.from(newClassType.details.mro); newClassType.details.mro[0] = cloneAsInstantiable(newClassType); return newClassType; } @@ -1520,11 +1520,13 @@ export namespace FunctionType { // Update the specialized parameter types as well. if (type.specializedTypes) { newFunction.specializedTypes = { - parameterTypes: [...type.specializedTypes.parameterTypes], + parameterTypes: Array.from(type.specializedTypes.parameterTypes), returnType: type.specializedTypes.returnType, }; if (type.specializedTypes.parameterDefaultArgs) { - newFunction.specializedTypes.parameterDefaultArgs = [...type.specializedTypes.parameterDefaultArgs]; + newFunction.specializedTypes.parameterDefaultArgs = Array.from( + type.specializedTypes.parameterDefaultArgs + ); } paramSpecValue.details.parameters.forEach((paramInfo) => { newFunction.specializedTypes!.parameterTypes.push(paramInfo.type); @@ -1975,7 +1977,7 @@ export namespace TypeCondition { } // Deduplicate the lists. - const combined = [...conditions1]; + const combined = Array.from(conditions1); conditions2.forEach((c1) => { if (!combined.some((c2) => _compare(c1, c2) === 0)) { combined.push(c1); diff --git a/packages/pyright-internal/src/common/configOptions.ts b/packages/pyright-internal/src/common/configOptions.ts index e67d89f6d..23414a769 100644 --- a/packages/pyright-internal/src/common/configOptions.ts +++ b/packages/pyright-internal/src/common/configOptions.ts @@ -60,7 +60,7 @@ export class ExecutionEnvironment { this.root = root || undefined; this.pythonVersion = defaultPythonVersion || latestStablePythonVersion; this.pythonPlatform = defaultPythonPlatform; - this.extraPaths = [...(defaultExtraPaths ?? [])]; + this.extraPaths = Array.from(defaultExtraPaths ?? []); } } diff --git a/packages/pyright-internal/src/common/workspaceEditUtils.ts b/packages/pyright-internal/src/common/workspaceEditUtils.ts index 5e820d878..e2a3ab214 100644 --- a/packages/pyright-internal/src/common/workspaceEditUtils.ts +++ b/packages/pyright-internal/src/common/workspaceEditUtils.ts @@ -23,11 +23,11 @@ import { convertPathToUri, convertUriToPath } from '../common/pathUtils'; import { createMapFromItems } from './collectionUtils'; import { isArray } from './core'; import { assertNever } from './debug'; +import { ProgramMutator, ProgramView, SourceFileInfo } from './extensibility'; import { ReadOnlyFileSystem } from './fileSystem'; import { convertRangeToTextRange, convertTextRangeToRange } from './positionUtils'; import { TextRange } from './textRange'; import { TextRangeCollection } from './textRangeCollection'; -import { ProgramMutator, ProgramView, SourceFileInfo } from './extensibility'; export function convertToTextEdits(editActions: TextEditAction[]): TextEdit[] { return editActions.map((editAction) => ({ @@ -249,13 +249,16 @@ function _convertToWorkspaceEditWithDocumentChanges( const mapPerFile = createMapFromItems(editActions.edits, (e) => e.filePath); for (const [key, value] of mapPerFile) { workspaceEdit.documentChanges!.push( - TextDocumentEdit.create({ uri: convertPathToUri(fs, key), version: null }, [ - ...value.map((v) => ({ - range: v.range, - newText: v.replacementText, - annotationId: defaultAnnotationId, - })), - ]) + TextDocumentEdit.create( + { uri: convertPathToUri(fs, key), version: null }, + Array.from( + value.map((v) => ({ + range: v.range, + newText: v.replacementText, + annotationId: defaultAnnotationId, + })) + ) + ) ); } diff --git a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts index 424c075a8..3cee35945 100644 --- a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts +++ b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts @@ -26,7 +26,9 @@ import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { ClassMemberLookupFlags, doForEachSubtype, lookUpClassMember, lookUpObjectMember } from '../analyzer/typeUtils'; import { ClassType, isClassInstance, isFunction, isInstantiableClass } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; +import { appendArray } from '../common/collectionUtils'; import { ProgramView } from '../common/extensibility'; +import { getSymbolKind } from '../common/lspUtils'; import { convertPathToUri, getFileName } from '../common/pathUtils'; import { convertOffsetsToRange } from '../common/positionUtils'; import { Position, rangesAreEqual } from '../common/textRange'; @@ -35,7 +37,6 @@ import { CallNode, MemberAccessNode, NameNode, ParseNode, ParseNodeType } from ' import { ParseResults } from '../parser/parser'; import { DocumentSymbolCollectorUseCase } from './documentSymbolCollector'; import { canNavigateToFile } from './navigationUtils'; -import { getSymbolKind } from '../common/lspUtils'; export class CallHierarchyProvider { private readonly _parseResults: ParseResults | undefined; @@ -130,7 +131,7 @@ export class CallHierarchyProvider { ); if (itemsToAdd) { - items.push(...itemsToAdd); + appendArray(items, itemsToAdd); } // This operation can consume significant memory, so check diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index e3a49917f..f31ba3fe7 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -71,6 +71,7 @@ import { lookUpObjectMember, } from '../analyzer/typeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; +import { appendArray } from '../common/collectionUtils'; import { ExecutionEnvironment } from '../common/configOptions'; import * as debug from '../common/debug'; import { fail } from '../common/debug'; @@ -800,8 +801,9 @@ export class CompletionProvider { ); const results: AutoImportResult[] = []; - results.push( - ...autoImporter.getAutoImportCandidates( + appendArray( + results, + autoImporter.getAutoImportCandidates( priorWord, similarityLimit, /* abbrFromUsers */ undefined, @@ -2055,7 +2057,7 @@ export class CompletionProvider { } } - return [...keys]; + return Array.from(keys); } private _getLiteralCompletions( diff --git a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts index 70c84028f..aefb7ea2b 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts @@ -29,10 +29,13 @@ import { getModuleNode, getStringNodeValueRange } from '../analyzer/parseTreeUti import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; import { ScopeType } from '../analyzer/scope'; import * as ScopeUtils from '../analyzer/scopeUtils'; +import { IPythonMode } from '../analyzer/sourceFile'; +import { collectImportedByFiles } from '../analyzer/sourceFileInfoUtils'; import { isStubFile } from '../analyzer/sourceMapper'; +import { Symbol } from '../analyzer/symbol'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { isInstantiableClass, TypeCategory } from '../analyzer/types'; import { ClassMemberLookupFlags, lookUpClassMember } from '../analyzer/typeUtils'; +import { TypeCategory, isInstantiableClass } from '../analyzer/types'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { assert } from '../common/debug'; @@ -48,9 +51,6 @@ import { StringListNode, StringNode, } from '../parser/parseNodes'; -import { IPythonMode } from '../analyzer/sourceFile'; -import { collectImportedByFiles } from '../analyzer/sourceFileInfoUtils'; -import { Symbol } from '../analyzer/symbol'; export type CollectionResult = { node: NameNode | StringNode; @@ -465,7 +465,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { // Special case for __init__. Might be __init__ on a class. if (node.value === '__init__' && useCase === DocumentSymbolCollectorUseCase.Reference && node.parent) { - result.push(...this._getDeclarationsForInitNode(node, evaluator)); + appendArray(result, this._getDeclarationsForInitNode(node, evaluator)); } } else { result = this._getDeclarationsForModuleNameNode(node, evaluator); @@ -485,7 +485,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { token ); if (extras && extras.length > 0) { - result.push(...extras); + appendArray(result, extras); } }); @@ -526,7 +526,10 @@ export class DocumentSymbolCollector extends ParseTreeWalker { continue; } - decls.push(...(evaluator.getDeclarationsForNameNode(node.module.nameParts[0], skipUnreachableCode) || [])); + appendArray( + decls, + evaluator.getDeclarationsForNameNode(node.module.nameParts[0], skipUnreachableCode) || [] + ); } // For now, we only support function overriding. @@ -588,10 +591,11 @@ export class DocumentSymbolCollector extends ParseTreeWalker { // First, we need to put decls for module names type evaluator synthesized so that // we can match both "import X" and "from X import ..." - decls.push( - ...(evaluator + appendArray( + decls, + evaluator .getDeclarationsForNameNode(moduleName.nameParts[0]) - ?.filter((d) => isAliasDeclaration(d)) || []) + ?.filter((d) => isAliasDeclaration(d)) || [] ); if (decls.length === 0 || moduleName.parent.nodeType !== ParseNodeType.ImportAs) { @@ -647,7 +651,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { declsFromSymbol = getDeclarationsWithUsesLocalNameRemoved(declsFromSymbol); } - decls.push(...declsFromSymbol); + appendArray(decls, declsFromSymbol); } return decls; diff --git a/packages/pyright-internal/src/languageService/referencesProvider.ts b/packages/pyright-internal/src/languageService/referencesProvider.ts index dc6fe48cc..f1b4f4e1a 100644 --- a/packages/pyright-internal/src/languageService/referencesProvider.ts +++ b/packages/pyright-internal/src/languageService/referencesProvider.ts @@ -295,7 +295,7 @@ export class ReferencesProvider { return new ReferencesResult( requiresGlobalSearch, node, - [...symbolNames.values()], + Array.from(symbolNames.values()), declarations, useCase, reporter diff --git a/packages/pyright-internal/src/languageService/signatureHelpProvider.ts b/packages/pyright-internal/src/languageService/signatureHelpProvider.ts index 5d5730646..765a98002 100644 --- a/packages/pyright-internal/src/languageService/signatureHelpProvider.ts +++ b/packages/pyright-internal/src/languageService/signatureHelpProvider.ts @@ -249,7 +249,7 @@ export class SignatureHelpProvider { ) { // Use the relative position in typed dict entries. const dictIndex = paramIndex - kwargsIndex; - paramName = [...kwargsParam.type.details.typedDictEntries.keys()][dictIndex]; + paramName = Array.from(kwargsParam.type.details.typedDictEntries.keys())[dictIndex]; } } diff --git a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts index af3d3ea6d..528194f16 100644 --- a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts +++ b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts @@ -9,7 +9,7 @@ import type * as fs from 'fs'; -import { getOrAdd } from './common/collectionUtils'; +import { appendArray, getOrAdd } from './common/collectionUtils'; import { FileSystem, FileWatcher, @@ -56,8 +56,9 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { const entries: fs.Dirent[] = []; const movedEntries = this._folderMap.get(maybeDirectory); if (!movedEntries || this.realFS.existsSync(path)) { - entries.push( - ...this.realFS.readdirEntriesSync(path).filter((item) => { + appendArray( + entries, + this.realFS.readdirEntriesSync(path).filter((item) => { // Filter out the stub package directory and any // entries that will be overwritten by stub package // virtual items. diff --git a/packages/pyright-internal/src/workspaceFactory.ts b/packages/pyright-internal/src/workspaceFactory.ts index 1187fbe8f..6185025c7 100644 --- a/packages/pyright-internal/src/workspaceFactory.ts +++ b/packages/pyright-internal/src/workspaceFactory.ts @@ -159,7 +159,7 @@ export class WorkspaceFactory { } items() { - return [...this._map.values()]; + return Array.from(this._map.values()); } applyPythonPath(workspace: Workspace, newPythonPath: string | undefined): string | undefined { @@ -337,9 +337,9 @@ export class WorkspaceFactory { // for the notebook. // If a notebook has the new python path but is currently in a workspace with the path hardcoded, we need to move it to // this workspace. - const oldPathFiles = [ - ...new Set(mutableWorkspace.service.getOpenFiles().filter((f) => this._isPythonPathImmutable(f))), - ]; + const oldPathFiles = Array.from( + new Set(mutableWorkspace.service.getOpenFiles().filter((f) => this._isPythonPathImmutable(f))) + ); const exitingWorkspaceWithSamePath = this.items().find( (w) => w.pythonPath === mutableWorkspace.pythonPath && w !== mutableWorkspace ); @@ -361,7 +361,7 @@ export class WorkspaceFactory { // Immutable files from a different workspace (with the same path as the new path) // have to be moved to the mutable workspace (which now has the new path) if (exitingWorkspaceWithSamePath) { - this.moveFiles([...newPathFiles], exitingWorkspaceWithSamePath!, mutableWorkspace); + this.moveFiles(Array.from(newPathFiles), exitingWorkspaceWithSamePath!, mutableWorkspace); this.removeUnused(exitingWorkspaceWithSamePath); } } From 676eba9ec487ed7c78f095e2311c31e84dfab202 Mon Sep 17 00:00:00 2001 From: Erik De Bonte Date: Fri, 19 May 2023 12:55:37 -0700 Subject: [PATCH 184/525] `TextRange.combine` should not modify input ranges (#5142) --- .../pyright-internal/src/common/textRange.ts | 2 +- .../src/tests/textRange.test.ts | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/textRange.test.ts diff --git a/packages/pyright-internal/src/common/textRange.ts b/packages/pyright-internal/src/common/textRange.ts index c54bce876..cd973fae9 100644 --- a/packages/pyright-internal/src/common/textRange.ts +++ b/packages/pyright-internal/src/common/textRange.ts @@ -77,7 +77,7 @@ export namespace TextRange { return undefined; } - const combinedRange = ranges[0]; + const combinedRange = { start: ranges[0].start, length: ranges[0].length }; for (let i = 1; i < ranges.length; i++) { extend(combinedRange, ranges[i]); } diff --git a/packages/pyright-internal/src/tests/textRange.test.ts b/packages/pyright-internal/src/tests/textRange.test.ts new file mode 100644 index 000000000..97d31f523 --- /dev/null +++ b/packages/pyright-internal/src/tests/textRange.test.ts @@ -0,0 +1,29 @@ +/* + * textRange.test.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + */ + +import * as assert from 'assert'; + +import { TextRange } from '../common/textRange'; + +test('textRange combine', () => { + const range1 = TextRange.create(10, 2); + const range2 = TextRange.create(12, 2); + const range3 = TextRange.create(8, 2); + + const combined = TextRange.combine([range1, range2, range3]); + + assert.ok(combined); + assert.equal(combined.start, 8); + assert.equal(combined.length, 6); + + // Ensure input ranges are unchanged + assert.equal(range1.start, 10); + assert.equal(range1.length, 2); + assert.equal(range2.start, 12); + assert.equal(range2.length, 2); + assert.equal(range3.start, 8); + assert.equal(range3.length, 2); +}); From 4ee51512eecd47b3171b5059f285ee4101410fc0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 17 May 2023 23:32:49 -0700 Subject: [PATCH 185/525] Reimplemented handling of f-strings in accordance with PEP 701, which is slated for inclusion in Python 3.12. This is a significant change with potential for regressions. This addresses https://github.com/microsoft/pyright/issues/5124. --- .../pyright-internal/src/analyzer/checker.ts | 95 +++-- .../src/analyzer/parseTreeUtils.ts | 47 +-- .../src/analyzer/parseTreeWalker.ts | 2 +- .../src/analyzer/typeEvaluator.ts | 12 +- .../src/commands/dumpFileDebugInfoCommand.ts | 12 +- .../src/languageService/completionProvider.ts | 51 ++- .../src/localization/localize.ts | 3 + .../src/localization/package.nls.en-us.json | 7 +- .../pyright-internal/src/parser/parseNodes.ts | 54 ++- .../pyright-internal/src/parser/parser.ts | 341 ++++++++------- .../src/parser/stringTokenUtils.ts | 253 +---------- .../pyright-internal/src/parser/tokenizer.ts | 331 +++++++++++++-- .../src/parser/tokenizerTypes.ts | 83 ++++ .../src/tests/samples/fstring1.py | 75 +++- .../src/tests/tokenizer.test.ts | 394 +++++++++++++++--- .../src/tests/typeEvaluator4.test.ts | 11 +- 16 files changed, 1106 insertions(+), 665 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 9b800aa12..bfeac0b5e 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -90,7 +90,7 @@ import { } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; import { UnescapeError, UnescapeErrorType, getUnescapedString } from '../parser/stringTokenUtils'; -import { OperatorType } from '../parser/tokenizerTypes'; +import { OperatorType, StringTokenFlags, TokenType } from '../parser/tokenizerTypes'; import { AnalyzerFileInfo } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { Declaration, DeclarationType, isAliasDeclaration } from './declaration'; @@ -1313,60 +1313,71 @@ export class Checker extends ParseTreeWalker { } override visitStringList(node: StringListNode): boolean { + // If this is Python 3.11 or older, there are several restrictions + // associated with f-strings that we need to validate. Determine whether + // we're within an f-string (or multiple f-strings if nesting is used). + const fStringContainers: FormatStringNode[] = []; + if (this._fileInfo.executionEnvironment.pythonVersion < PythonVersion.V3_12) { + let curNode: ParseNode | undefined = node; + while (curNode) { + if (curNode.nodeType === ParseNodeType.FormatString) { + fStringContainers.push(curNode); + } + curNode = curNode.parent; + } + } + for (const stringNode of node.strings) { - if (stringNode.hasUnescapeErrors) { - const unescapedResult = getUnescapedString(stringNode.token); + const stringTokens = + stringNode.nodeType === ParseNodeType.String ? [stringNode.token] : stringNode.middleTokens; + + stringTokens.forEach((token) => { + const unescapedResult = getUnescapedString(token); + let start = token.start; + if (token.type === TokenType.String) { + start += token.prefixLength + token.quoteMarkLength; + } unescapedResult.unescapeErrors.forEach((error: UnescapeError) => { - const start = - stringNode.token.start + - stringNode.token.prefixLength + - stringNode.token.quoteMarkLength + - error.offset; - const textRange = { start, length: error.length }; - if (error.errorType === UnescapeErrorType.InvalidEscapeSequence) { this._evaluator.addDiagnosticForTextRange( this._fileInfo, this._fileInfo.diagnosticRuleSet.reportInvalidStringEscapeSequence, DiagnosticRule.reportInvalidStringEscapeSequence, Localizer.Diagnostic.stringUnsupportedEscape(), - textRange + { start: start + error.offset, length: error.length } ); - } else if (error.errorType === UnescapeErrorType.EscapeWithinFormatExpression) { + } + }); + + // Prior to Python 3.12, it was not allowed to include a slash in an f-string. + if (fStringContainers.length > 0) { + const escapeOffset = token.escapedValue.indexOf('\\'); + if (escapeOffset >= 0) { this._evaluator.addDiagnosticForTextRange( this._fileInfo, 'error', '', Localizer.Diagnostic.formatStringEscape(), - textRange - ); - } else if (error.errorType === UnescapeErrorType.SingleCloseBraceWithinFormatLiteral) { - this._evaluator.addDiagnosticForTextRange( - this._fileInfo, - 'error', - '', - Localizer.Diagnostic.formatStringBrace(), - textRange - ); - } else if (error.errorType === UnescapeErrorType.UnterminatedFormatExpression) { - this._evaluator.addDiagnosticForTextRange( - this._fileInfo, - 'error', - '', - Localizer.Diagnostic.formatStringUnterminated(), - textRange - ); - } else if (error.errorType === UnescapeErrorType.NestedFormatSpecifierExpression) { - this._evaluator.addDiagnosticForTextRange( - this._fileInfo, - 'error', - '', - Localizer.Diagnostic.formatStringNestedFormatSpecifier(), - textRange + { start, length: 1 } ); } - }); + } + }); + + // Prior to Python 3.12, it was not allowed to nest strings that + // used the same quote scheme within an f-string. + if (fStringContainers.length > 0) { + const quoteTypeMask = + StringTokenFlags.SingleQuote | StringTokenFlags.DoubleQuote | StringTokenFlags.Triplicate; + if ( + fStringContainers.some( + (fStringContainer) => + (fStringContainer.token.flags & quoteTypeMask) === (stringNode.token.flags & quoteTypeMask) + ) + ) { + this._evaluator.addError(Localizer.Diagnostic.formatStringNestedQuote(), stringNode); + } } } @@ -1388,8 +1399,12 @@ export class Checker extends ParseTreeWalker { } override visitFormatString(node: FormatStringNode): boolean { - node.expressions.forEach((formatExpr) => { - this._evaluator.getType(formatExpr); + node.fieldExpressions.forEach((expr) => { + this._evaluator.getType(expr); + }); + + node.formatExpressions.forEach((expr) => { + this._evaluator.getType(expr); }); return true; diff --git a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts index 39d3e2d0a..06fa4905f 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts @@ -44,7 +44,6 @@ import { isExpressionNode, } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; -import * as StringTokenUtils from '../parser/stringTokenUtils'; import { TokenizerOutput } from '../parser/tokenizer'; import { KeywordType, OperatorType, StringToken, StringTokenFlags, Token, TokenType } from '../parser/tokenizerTypes'; import { getScope } from './analyzerNodeInfo'; @@ -1378,7 +1377,6 @@ export function getDocString(statements: StatementNode[]): string | undefined { // It's up to the user to convert normalize/convert this as needed. const strings = (statements[0].statements[0] as StringListNode).strings; if (strings.length === 1) { - // Common case. return strings[0].value; } @@ -1399,7 +1397,7 @@ export function isDocString(statementList: StatementListNode): boolean { } // Any f-strings invalidate the entire docstring. - if (strings.some((n) => (n.token.flags & StringTokenFlags.Format) !== 0)) { + if (strings.some((n) => n.nodeType === ParseNodeType.FormatString)) { return false; } @@ -1652,53 +1650,12 @@ export function getCallNodeAndActiveParameterIndex( const index = tokens.getItemAtPosition(argumentStart); if (index < 0 || tokens.count <= index) { - // Somehow, we can't get token. To be safe, we will allow - // signature help to show up. - return true; - } - - const token = tokens.getItemAt(index); - if ( - token.type === TokenType.String && - (token as StringToken).flags & StringTokenFlags.Format && - TextRange.contains(token, offset) - ) { - // tokenizer won't tokenize format string segments. We get one token - // for the whole format string. We need to dig in. - const stringToken = token as StringToken; - const result = StringTokenUtils.getUnescapedString(stringToken); - const offsetInSegment = offset - stringToken.start - stringToken.prefixLength - stringToken.quoteMarkLength; - const segment = result.formatStringSegments.find( - (s) => s.offset <= offsetInSegment && offsetInSegment < s.offset + s.length - ); - if (!segment || !segment.isExpression) { - // Just to be safe, allow signature help. - return true; - } - - const length = Math.min( - segment.length, - callEndOffset - - stringToken.start - - stringToken.prefixLength - - stringToken.quoteMarkLength - - segment.offset - ); - - for (let i = offsetInSegment - segment.offset; i < length; i++) { - const ch = segment.value[i]; - if (ch === '(') { - // position must be after '(' - return false; - } - } - return true; } const nextToken = tokens.getItemAt(index + 1); if (nextToken.type === TokenType.OpenParenthesis && offset < TextRange.getEnd(nextToken)) { - // position must be after '(' + // Position must be after '('. return false; } diff --git a/packages/pyright-internal/src/analyzer/parseTreeWalker.ts b/packages/pyright-internal/src/analyzer/parseTreeWalker.ts index 783fca2ae..828e95ac2 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeWalker.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeWalker.ts @@ -180,7 +180,7 @@ export function getChildNodes(node: ParseNode): (ParseNode | undefined)[] { return [node.targetExpression, node.iterableExpression, node.forSuite, node.elseSuite]; case ParseNodeType.FormatString: - return node.expressions; + return [...node.fieldExpressions, ...(node.formatExpressions ?? [])]; case ParseNodeType.Function: return [ diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 0e37ac71b..c5de9b9b2 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1366,7 +1366,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If all of the format expressions are of type LiteralString, then // the resulting formatted string is also LiteralString. - node.expressions.forEach((expr) => { + node.fieldExpressions.forEach((expr) => { const exprType = getTypeOfExpression(expr).type; doForEachSubtype(exprType, (exprSubtype) => { @@ -11670,7 +11670,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const firstArg = argList[0]; if (firstArg.valueExpression && firstArg.valueExpression.nodeType === ParseNodeType.StringList) { - const typeAliasName = firstArg.valueExpression.strings.map((s) => s.value).join(''); + const typeAliasName = firstArg.valueExpression.strings + .map((s) => s.value) + .join(''); if (typeAliasName !== nameNode.value) { addError(Localizer.Diagnostic.typeAliasTypeNameMismatch(), firstArg.valueExpression); } @@ -24911,8 +24913,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Determine the offset within the file where the string // literal's contents begin. - const valueOffset = - node.strings[0].start + node.strings[0].token.prefixLength + node.strings[0].token.quoteMarkLength; + let valueOffset = node.strings[0].start; + if (node.strings[0].nodeType === ParseNodeType.String) { + valueOffset += node.strings[0].token.prefixLength + node.strings[0].token.quoteMarkLength; + } const parseOptions = new ParseOptions(); parseOptions.isStubFile = fileInfo.isStubFile; diff --git a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts index 79ced6c6e..c0c4cf855 100644 --- a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts +++ b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts @@ -727,11 +727,7 @@ class TreeDumper extends ParseTreeWalker { } override visitFormatString(node: FormatStringNode) { - this._log( - `${this._getPrefix(node)} ${getTokenString(this._file, node.token, this._lines)} ${ - node.value - } unescape errors:(${node.hasUnescapeErrors})` - ); + this._log(`${this._getPrefix(node)} f-string`); return true; } @@ -841,11 +837,7 @@ class TreeDumper extends ParseTreeWalker { } override visitString(node: StringNode) { - this._log( - `${this._getPrefix(node)} ${getTokenString(this._file, node.token, this._lines)} ${ - node.value - } unescape errors:(${node.hasUnescapeErrors})` - ); + this._log(`${this._getPrefix(node)} ${getTokenString(this._file, node.token, this._lines)} ${node.value}`); return true; } diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index f31ba3fe7..0f3715b7a 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -91,6 +91,7 @@ import { ErrorExpressionCategory, ErrorNode, ExpressionNode, + FormatStringNode, ImportFromNode, IndexNode, isExpressionNode, @@ -105,7 +106,15 @@ import { TypeAnnotationNode, } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; -import { OperatorToken, OperatorType, StringToken, StringTokenFlags, Token, TokenType } from '../parser/tokenizerTypes'; +import { + FStringStartToken, + OperatorToken, + OperatorType, + StringToken, + StringTokenFlags, + Token, + TokenType, +} from '../parser/tokenizerTypes'; import { AutoImporter, AutoImportResult, buildModuleSymbolsMap } from './autoImporter'; import { CompletionDetail, @@ -266,8 +275,9 @@ export class CompletionProvider { // original completion algorithm and look for this symbol. private _itemToResolve: CompletionItem | undefined; - // Indicate whether invocation is inside of string literal. - private _insideStringLiteral: StringToken | undefined = undefined; + // Indicates whether invocation position is inside of string literal + // token or an f-string expression. + private _stringLiteralContainer: StringToken | FStringStartToken | undefined = undefined; protected readonly execEnv: ExecutionEnvironment; protected readonly parseResults: ParseResults; @@ -863,18 +873,24 @@ export class CompletionProvider { return undefined; } + let node = ParseTreeUtils.findNodeByOffset(this.parseResults.parseTree, offset); + + // See if we're inside a string literal or an f-string statement. const token = ParseTreeUtils.getTokenOverlapping(this.parseResults.tokenizerOutput.tokens, offset); if (token?.type === TokenType.String) { const stringToken = token as StringToken; - this._insideStringLiteral = TextRange.contains(stringToken, offset) + this._stringLiteralContainer = TextRange.contains(stringToken, offset) ? stringToken : stringToken.flags & StringTokenFlags.Unterminated ? stringToken : undefined; + } else if (node) { + const fStringContainer = ParseTreeUtils.getParentNodeOfType(node, ParseNodeType.FormatString); + if (fStringContainer) { + this._stringLiteralContainer = (fStringContainer as FormatStringNode).token; + } } - let node = ParseTreeUtils.findNodeByOffset(this.parseResults.parseTree, offset); - // See if we can get to a "better" node by backing up a few columns. // A "better" node is defined as one that's deeper than the current // node. @@ -2391,7 +2407,7 @@ export class CompletionProvider { return newTypes; } - // Find out quotation and string prefix to use for string literals + // Find quotation and string prefix to use for string literals // completion under current context. private _getQuoteInfo(priorWord: string, priorText: string): QuoteInfo { let filterText = priorWord; @@ -2401,7 +2417,7 @@ export class CompletionProvider { // If completion is not inside of the existing string literal // ex) typedDict[ |<= here // use default quotation char without any string prefix. - if (!this._insideStringLiteral) { + if (!this._stringLiteralContainer) { return { priorWord, priorText, filterText, stringValue, quoteCharacter }; } @@ -2424,16 +2440,15 @@ export class CompletionProvider { } } - // If the string literal that completion is invoked in is f-string, - // quotation must be the other one than one that is used for f-string. - // ex) f"....{typedDict[|<= here ]}" - // then quotation must be "'" - // - // for f-string, this code path will be only taken when completion is inside - // of f-string segment. - // ex) f"..{|<= here }" - if (this._insideStringLiteral.flags & StringTokenFlags.Format) { - quoteCharacter = this._insideStringLiteral.flags & StringTokenFlags.SingleQuote ? doubleQuote : singleQuote; + // If the invocation position is within an f-string, use a double or + // single quote that doesn't match the f-string. Prior to Python 3.12, + // using the same quotation mark nested within an f-string was not + // permitted. For example, f"..{typedDict[|<= here ]}", we need to use + // single quotes. Note that this doesn't account for deeper nested + // f-strings. + if (this._stringLiteralContainer.flags & StringTokenFlags.Format) { + quoteCharacter = + this._stringLiteralContainer.flags & StringTokenFlags.SingleQuote ? doubleQuote : singleQuote; } if (stringValue) { diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 5d8d60a7a..8ed2ca47a 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -454,11 +454,14 @@ export namespace Localizer { new ParameterizedString<{ name: string }>(getRawString('Diagnostic.finalUnassigned')); export const formatStringBrace = () => getRawString('Diagnostic.formatStringBrace'); export const formatStringBytes = () => getRawString('Diagnostic.formatStringBytes'); + export const formatStringDebuggingIllegal = () => getRawString('Diagnostic.formatStringDebuggingIllegal'); export const formatStringEscape = () => getRawString('Diagnostic.formatStringEscape'); + export const formatStringExpectedConversion = () => getRawString('Diagnostic.formatStringExpectedConversion'); export const formatStringInPattern = () => getRawString('Diagnostic.formatStringInPattern'); export const formatStringIllegal = () => getRawString('Diagnostic.formatStringIllegal'); export const formatStringNestedFormatSpecifier = () => getRawString('Diagnostic.formatStringNestedFormatSpecifier'); + export const formatStringNestedQuote = () => getRawString('Diagnostic.formatStringNestedQuote'); export const formatStringUnicode = () => getRawString('Diagnostic.formatStringUnicode'); export const formatStringUnterminated = () => getRawString('Diagnostic.formatStringUnterminated'); export const functionDecoratorTypeUnknown = () => getRawString('Diagnostic.functionDecoratorTypeUnknown'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 1ec65dc35..8325dc5b5 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -183,12 +183,15 @@ "finalUnassigned": "\"{name}\" is declared Final, but value is not assigned", "formatStringBrace": "Single close brace not allowed within f-string literal; use double close brace", "formatStringBytes": "Format string literals (f-strings) cannot be binary", - "formatStringEscape": "Escape sequence (backslash) not allowed in expression portion of f-string", + "formatStringDebuggingIllegal": "F-string debugging specifier \"=\" requires Python 3.8 or newer", + "formatStringEscape": "Escape sequence (backslash) not allowed in expression portion of f-string prior to Python 3.12", + "formatStringExpectedConversion": "Expected a conversion specifier after \"!\" in f-string", "formatStringInPattern": "Format string not allowed in pattern", "formatStringNestedFormatSpecifier": "Expressions nested too deeply within format string specifier", + "formatStringNestedQuote": "Strings nested within an f-string cannot use the same quote character as the f-string prior to Python 3.12", "formatStringUnicode": "Format string literals (f-strings) cannot be unicode", "formatStringIllegal": "Format string literals (f-strings) require Python 3.6 or newer", - "formatStringUnterminated": "Unterminated expression in f-string; missing close brace", + "formatStringUnterminated": "Unterminated expression in f-string; expecting \"}\"", "functionDecoratorTypeUnknown": "Untyped function decorator obscures type of function; ignoring decorator", "functionInConditionalExpression": "Conditional expression references function which always evaluates to True", "functionTypeParametersIllegal": "Function type parameter syntax requires Python 3.12 or newer", diff --git a/packages/pyright-internal/src/parser/parseNodes.ts b/packages/pyright-internal/src/parser/parseNodes.ts index 27e44e698..d7b4a13ee 100644 --- a/packages/pyright-internal/src/parser/parseNodes.ts +++ b/packages/pyright-internal/src/parser/parseNodes.ts @@ -10,6 +10,9 @@ import { TextRange } from '../common/textRange'; import { + FStringEndToken, + FStringMiddleToken, + FStringStartToken, IdentifierToken, KeywordToken, KeywordType, @@ -1519,11 +1522,10 @@ export interface StringNode extends ParseNodeBase { readonly nodeType: ParseNodeType.String; token: StringToken; value: string; - hasUnescapeErrors: boolean; } export namespace StringNode { - export function create(token: StringToken, unescapedValue: string, hasUnescapeErrors: boolean) { + export function create(token: StringToken, unescapedValue: string) { const node: StringNode = { start: token.start, length: token.length, @@ -1531,7 +1533,6 @@ export namespace StringNode { id: _nextNodeId++, token, value: unescapedValue, - hasUnescapeErrors, }; return node; @@ -1540,34 +1541,51 @@ export namespace StringNode { export interface FormatStringNode extends ParseNodeBase { readonly nodeType: ParseNodeType.FormatString; - token: StringToken; - value: string; - hasUnescapeErrors: boolean; - expressions: ExpressionNode[]; + token: FStringStartToken; + middleTokens: FStringMiddleToken[]; + fieldExpressions: ExpressionNode[]; + formatExpressions: ExpressionNode[]; + + // Include a dummy "value" to simplify other code. + value: ''; } export namespace FormatStringNode { export function create( - token: StringToken, - unescapedValue: string, - hasUnescapeErrors: boolean, - expressions: ExpressionNode[] + startToken: FStringStartToken, + endToken: FStringEndToken | undefined, + middleTokens: FStringMiddleToken[], + fieldExpressions: ExpressionNode[], + formatExpressions: ExpressionNode[] ) { const node: FormatStringNode = { - start: token.start, - length: token.length, + start: startToken.start, + length: startToken.length, nodeType: ParseNodeType.FormatString, id: _nextNodeId++, - token, - value: unescapedValue, - hasUnescapeErrors, - expressions, + token: startToken, + middleTokens, + fieldExpressions, + formatExpressions, + value: '', }; - expressions.forEach((expr) => { + fieldExpressions.forEach((expr) => { expr.parent = node; + extendRange(node, expr); }); + if (formatExpressions) { + formatExpressions.forEach((expr) => { + expr.parent = node; + extendRange(node, expr); + }); + } + + if (endToken) { + extendRange(node, endToken); + } + return node; } } diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index 6579ec49d..9e59ee0e4 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -11,14 +11,12 @@ * into an abstract syntax tree (AST). */ -import Char from 'typescript-char'; - import { IPythonMode } from '../analyzer/sourceFile'; import { appendArray } from '../common/collectionUtils'; import { assert } from '../common/debug'; import { Diagnostic, DiagnosticAddendum } from '../common/diagnostic'; import { DiagnosticSink } from '../common/diagnosticSink'; -import { convertOffsetsToRange, convertPositionToOffset } from '../common/positionUtils'; +import { convertOffsetsToRange } from '../common/positionUtils'; import { PythonVersion, latestStablePythonVersion } from '../common/pythonVersion'; import { TextRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; @@ -122,6 +120,9 @@ import * as StringTokenUtils from './stringTokenUtils'; import { Tokenizer, TokenizerOutput } from './tokenizer'; import { DedentToken, + FStringEndToken, + FStringMiddleToken, + FStringStartToken, IdentifierToken, IndentToken, KeywordToken, @@ -1128,7 +1129,7 @@ export class Parser { // Check for f-strings, which are not allowed. stringList.strings.forEach((stringAtom) => { - if (stringAtom.token.flags & StringTokenFlags.Format) { + if (stringAtom.nodeType === ParseNodeType.FormatString) { this._addError(Localizer.Diagnostic.formatStringInPattern(), stringAtom); } }); @@ -3791,7 +3792,7 @@ export class Parser { return NameNode.create(this._getNextToken() as IdentifierToken); } - if (nextToken.type === TokenType.String) { + if (nextToken.type === TokenType.String || nextToken.type === TokenType.FStringStart) { return this._parseStringList(); } @@ -3902,7 +3903,7 @@ export class Parser { appendArray(stopTokens, additionalStopTokens); } - // Using token that is not consumed by error node will mess up spans in parse node. + // Using a token that is not included in the error node creates problems. // Sibling nodes in parse tree shouldn't overlap each other. const nextToken = this._peekToken(); const initialRange: TextRange = stopTokens.some((k) => nextToken.type === k) @@ -4293,7 +4294,7 @@ export class Parser { } const rightExpr = - this._tryParseYieldExpression() || + this._tryParseYieldExpression() ?? this._parseTestOrStarListAsExpression( /* allowAssignmentExpression */ false, /* allowMultipleUnpack */ true, @@ -4315,7 +4316,7 @@ export class Parser { const operatorToken = this._getNextToken() as OperatorToken; const rightExpr = - this._tryParseYieldExpression() || + this._tryParseYieldExpression() ?? this._parseTestListAsExpression(ErrorExpressionCategory.MissingExpression, () => Localizer.Diagnostic.expectedBinaryRightHandExpr() ); @@ -4337,7 +4338,7 @@ export class Parser { while (true) { rightExpr = - this._tryParseYieldExpression() || + this._tryParseYieldExpression() ?? this._parseTestOrStarListAsExpression( /* allowAssignmentExpression */ false, /* allowMultipleUnpack */ true, @@ -4470,12 +4471,15 @@ export class Parser { return result; } - private _reportStringTokenErrors(stringToken: StringToken, unescapedResult: StringTokenUtils.UnescapedString) { + private _reportStringTokenErrors( + stringToken: StringToken | FStringStartToken, + unescapedResult?: StringTokenUtils.UnescapedString + ) { if (stringToken.flags & StringTokenFlags.Unterminated) { this._addError(Localizer.Diagnostic.stringUnterminated(), stringToken); } - if (unescapedResult.nonAsciiInBytes) { + if (unescapedResult?.nonAsciiInBytes) { this._addError(Localizer.Diagnostic.stringNonAsciiBytes(), stringToken); } @@ -4497,7 +4501,7 @@ export class Parser { private _makeStringNode(stringToken: StringToken): StringNode { const unescapedResult = StringTokenUtils.getUnescapedString(stringToken); this._reportStringTokenErrors(stringToken, unescapedResult); - return StringNode.create(stringToken, unescapedResult.value, unescapedResult.unescapeErrors.length > 0); + return StringNode.create(stringToken, unescapedResult.value); } private _getTypeAnnotationCommentText(): StringToken | undefined { @@ -4601,189 +4605,167 @@ export class Parser { extendRange(functionNode, functionAnnotation); } - private _parseFormatStringSegment( - stringToken: StringToken, - segment: StringTokenUtils.FormatStringSegment, - segmentOffset: number, - segmentLength: number - ) { - assert(segment.isExpression); - const parser = new Parser(); - const parseResults = parser.parseTextExpression( - this._fileContents!, - stringToken.start + stringToken.prefixLength + stringToken.quoteMarkLength + segment.offset + segmentOffset, - segmentLength, - this._parseOptions, - ParseTextMode.Expression, - /* initialParenDepth */ 1, - this._typingSymbolAliases - ); + private _parseFStringReplacementField( + fieldExpressions: ExpressionNode[], + middleTokens: FStringMiddleToken[], + formatExpressions: ExpressionNode[], + nestingDepth = 0 + ): boolean { + let nextToken = this._getNextToken(); - parseResults.diagnostics.forEach((diag) => { - const textRangeStart = - (diag.range ? convertPositionToOffset(diag.range.start, parseResults.lines) : stringToken.start) || - stringToken.start; - const textRangeEnd = - (diag.range - ? (convertPositionToOffset(diag.range.end, parseResults.lines) || 0) + 1 - : stringToken.start + stringToken.length) || stringToken.start + stringToken.length; - const textRange = { start: textRangeStart, length: textRangeEnd - textRangeStart }; - this._addError(diag.message, textRange); - }); + // The caller should have already confirmed that the next token is an open brace. + assert(nextToken.type === TokenType.OpenCurlyBrace); - return parseResults.parseTree; + // Consume the expression. + const expr = + this._tryParseYieldExpression() ?? + this._parseTestOrStarListAsExpression( + /* allowAssignmentExpression */ true, + /* allowMultipleUnpack */ true, + ErrorExpressionCategory.MissingExpression, + () => Localizer.Diagnostic.expectedExpr() + ); + + fieldExpressions.push(expr); + + if (expr.nodeType === ParseNodeType.Error) { + return false; + } + + // Consume an optional "=" token after the expression. + nextToken = this._peekToken(); + if ( + nextToken.type === TokenType.Operator && + (nextToken as OperatorToken).operatorType === OperatorType.Assign + ) { + // This feature requires Python 3.8 or newer. + if (this._parseOptions.pythonVersion < PythonVersion.V3_8) { + this._addError(Localizer.Diagnostic.formatStringDebuggingIllegal(), nextToken); + } + + this._getNextToken(); + nextToken = this._peekToken(); + } + + // Consume an optional !r, !s, or !a token. + if (nextToken.type === TokenType.ExclamationMark) { + this._getNextToken(); + nextToken = this._peekToken(); + + if (nextToken.type !== TokenType.Identifier) { + this._addError(Localizer.Diagnostic.formatStringExpectedConversion(), nextToken); + } else { + this._getNextToken(); + nextToken = this._peekToken(); + } + } + + if (nextToken.type === TokenType.Colon) { + this._getNextToken(); + this._parseFStringFormatString(fieldExpressions, middleTokens, formatExpressions, nestingDepth); + nextToken = this._peekToken(); + } + + if (nextToken.type !== TokenType.CloseCurlyBrace) { + this._addError(Localizer.Diagnostic.formatStringUnterminated(), nextToken); + return false; + } else { + this._getNextToken(); + } + + // Indicate success. + return true; } - private _parseFormatString(stringToken: StringToken): FormatStringNode { - const unescapedResult = StringTokenUtils.getUnescapedString(stringToken); - this._reportStringTokenErrors(stringToken, unescapedResult); + private _parseFStringFormatString( + fieldExpressions: ExpressionNode[], + middleTokens: FStringMiddleToken[], + formatExpressions: ExpressionNode[], + nestingDepth: number + ) { + while (true) { + const nextToken = this._peekToken(); - const formatExpressions: ExpressionNode[] = []; + if (nextToken.type === TokenType.CloseCurlyBrace || nextToken.type === TokenType.FStringEnd) { + break; + } - for (const segment of unescapedResult.formatStringSegments) { - if (segment.isExpression) { - // Determine if we need to truncate the expression because it - // contains formatting directives that start with a ! or :. - const segmentExprLength = this._getFormatStringExpressionLength(segment.value.trimEnd()); - const parseTree = this._parseFormatStringSegment(stringToken, segment, 0, segmentExprLength); - if (parseTree) { - assert(parseTree.nodeType !== ParseNodeType.FunctionAnnotation); - formatExpressions.push(parseTree); - } + if (nextToken.type === TokenType.FStringMiddle) { + this._getNextToken(); + continue; + } - // Look for additional expressions within the format directive. - const formatDirective = segment.value.substr(segmentExprLength); - let braceDepth = 0; - let startOfExprOffset = 0; - for (let i = 0; i < formatDirective.length; i++) { - if (formatDirective.charCodeAt(i) === Char.OpenBrace) { - if (braceDepth === 0) { - startOfExprOffset = i + 1; - } - braceDepth++; - } else if (formatDirective.charCodeAt(i) === Char.CloseBrace) { - if (braceDepth > 0) { - braceDepth--; - if (braceDepth === 0) { - const formatSegmentLength = this._getFormatStringExpressionLength( - segment.value.substr(segmentExprLength + startOfExprOffset, i - startOfExprOffset) - ); - const parseTree = this._parseFormatStringSegment( - stringToken, - segment, - segmentExprLength + startOfExprOffset, - formatSegmentLength - ); - if (parseTree) { - assert(parseTree.nodeType !== ParseNodeType.FunctionAnnotation); - formatExpressions.push(parseTree); - } - } - } - } + if (nextToken.type === TokenType.OpenCurlyBrace) { + // The Python interpreter reports an error at the point where the + // nesting level exceeds 1. Don't report the error again for deeper nestings. + if (nestingDepth === 2) { + this._addError(Localizer.Diagnostic.formatStringNestedFormatSpecifier(), nextToken); } + + this._parseFStringReplacementField(fieldExpressions, middleTokens, formatExpressions, nestingDepth + 1); + continue; } - } - return FormatStringNode.create( - stringToken, - unescapedResult.value, - unescapedResult.unescapeErrors.length > 0, - formatExpressions - ); + break; + } } - private _getFormatStringExpressionLength(segmentValue: string): number { - let segmentExprLength = 0; + private _parseFormatString(startToken: FStringStartToken): FormatStringNode { + const middleTokens: FStringMiddleToken[] = []; + const fieldExpressions: ExpressionNode[] = []; + const formatExpressions: ExpressionNode[] = []; + let endToken: FStringEndToken | undefined = undefined; - // PEP 498 says: Expressions cannot contain ':' or '!' outside of - // strings or parentheses, brackets, or braces. The exception is - // that the '!=' operator is allowed as a special case. - const quoteStack: string[] = []; - let braceCount = 0; - let parenCount = 0; - let bracketCount = 0; - let indexOfDebugEqual: number | undefined; + // Consume middle tokens and expressions until we hit a "{" or "}" token. + while (true) { + const nextToken = this._peekToken(); - while (segmentExprLength < segmentValue.length) { - const curChar = segmentValue[segmentExprLength]; - const ignoreSeparator = quoteStack.length > 0 || braceCount > 0 || parenCount > 0 || bracketCount > 0; - const inString = quoteStack.length > 0; + if (nextToken.type === TokenType.FStringEnd) { + endToken = nextToken as FStringEndToken; - if (curChar === '=') { - indexOfDebugEqual = segmentExprLength; - } else { - if (curChar === ':') { - if (!ignoreSeparator) { - break; - } - } else if (curChar === '!') { - if (!ignoreSeparator) { - // Allow !=, as per PEP 498 - if ( - segmentExprLength === segmentValue.length - 1 || - segmentValue[segmentExprLength + 1] !== '=' - ) { - break; - } - } - } else if (curChar === "'" || curChar === '"') { - let quoteSequence = curChar; - if ( - segmentExprLength + 2 < segmentValue.length && - segmentValue[segmentExprLength + 1] === curChar && - segmentValue[segmentExprLength + 2] === curChar - ) { - quoteSequence = curChar + curChar + curChar; - segmentExprLength += 2; - } + if ((endToken.flags & StringTokenFlags.Unterminated) !== 0) { + this._addError(Localizer.Diagnostic.stringUnterminated(), startToken); + } + this._getNextToken(); + break; + } - if (quoteStack.length > 0 && quoteStack[quoteStack.length - 1] === quoteSequence) { - quoteStack.pop(); - } else if (quoteStack.length === 0) { - quoteStack.push(quoteSequence); - } - } else if (curChar === '(') { - if (!inString) { - parenCount++; - } - } else if (curChar === ')') { - if (!inString && parenCount > 0) { - parenCount--; - } - } else if (curChar === '{') { - if (!inString) { - braceCount++; - } - } else if (curChar === '}') { - if (!inString && braceCount > 0) { - braceCount--; - } - } else if (curChar === '[') { - if (!inString) { - bracketCount++; - } - } else if (curChar === ']') { - if (!inString && bracketCount > 0) { - bracketCount--; + if (nextToken.type === TokenType.FStringMiddle) { + middleTokens.push(nextToken as FStringMiddleToken); + this._getNextToken(); + continue; + } + + if (nextToken.type === TokenType.OpenCurlyBrace) { + if (!this._parseFStringReplacementField(fieldExpressions, middleTokens, formatExpressions)) { + // An error was reported. Try to recover the parse. + if (this._consumeTokensUntilType([TokenType.FStringEnd, TokenType.NewLine])) { + if (this._peekToken().type === TokenType.FStringEnd) { + this._getNextToken(); + } } + break; } + continue; + } - if (curChar !== ' ') { - indexOfDebugEqual = undefined; - } + // We've hit an error. Consume tokens until we find the end. + if (this._consumeTokensUntilType([TokenType.FStringEnd])) { + this._getNextToken(); } - segmentExprLength++; + this._addError( + nextToken.type === TokenType.CloseCurlyBrace + ? Localizer.Diagnostic.formatStringBrace() + : Localizer.Diagnostic.stringUnterminated(), + nextToken + ); + break; } - // Handle Python 3.8 f-string formatting expressions that - // end in an "=". - if (this._parseOptions.pythonVersion >= PythonVersion.V3_8 && indexOfDebugEqual !== undefined) { - segmentExprLength = indexOfDebugEqual; - } + this._reportStringTokenErrors(startToken); - return segmentExprLength; + return FormatStringNode.create(startToken, endToken, middleTokens, fieldExpressions, formatExpressions); } private _createBinaryOperationNode( @@ -4823,12 +4805,14 @@ export class Parser { private _parseStringList(): StringListNode { const stringList: (StringNode | FormatStringNode)[] = []; - while (this._peekTokenType() === TokenType.String) { - const stringToken = this._getNextToken() as StringToken; - if (stringToken.flags & StringTokenFlags.Format) { - stringList.push(this._parseFormatString(stringToken)); + while (true) { + const nextToken = this._peekToken(); + if (nextToken.type === TokenType.String) { + stringList.push(this._makeStringNode(this._getNextToken() as StringToken)); + } else if (nextToken.type === TokenType.FStringStart) { + stringList.push(this._parseFormatString(this._getNextToken() as FStringStartToken)); } else { - stringList.push(this._makeStringNode(stringToken)); + break; } } @@ -4840,7 +4824,7 @@ export class Parser { // parse errors that span strings. if (stringNode.strings.length > 1) { this._addError(Localizer.Diagnostic.annotationSpansStrings(), stringNode); - } else if (stringNode.strings[0].token.flags & StringTokenFlags.Format) { + } else if (stringNode.strings[0].nodeType === ParseNodeType.FormatString) { this._addError(Localizer.Diagnostic.annotationFormatString(), stringNode); } else { const stringToken = stringNode.strings[0].token; @@ -4955,6 +4939,9 @@ export class Parser { case TokenType.CloseCurlyBrace: case TokenType.Comma: case TokenType.Colon: + case TokenType.ExclamationMark: + case TokenType.FStringMiddle: + case TokenType.FStringEnd: return true; } diff --git a/packages/pyright-internal/src/parser/stringTokenUtils.ts b/packages/pyright-internal/src/parser/stringTokenUtils.ts index fd0b46816..8d345e295 100644 --- a/packages/pyright-internal/src/parser/stringTokenUtils.ts +++ b/packages/pyright-internal/src/parser/stringTokenUtils.ts @@ -10,31 +10,10 @@ import Char from 'typescript-char'; -import { StringToken, StringTokenFlags } from './tokenizerTypes'; - -export interface FormatStringSegment { - // Offset within the unescaped string where - // this format string segment begins. - offset: number; - - // Length of unescaped string corresponding - // to this segment. - length: number; - - // Unescaped value of segment (without brackets). - value: string; - - // Indicates whether this segment should be parsed - // as an expression. - isExpression: boolean; -} +import { FStringMiddleToken, StringToken, StringTokenFlags } from './tokenizerTypes'; export const enum UnescapeErrorType { InvalidEscapeSequence, - EscapeWithinFormatExpression, - SingleCloseBraceWithinFormatLiteral, - UnterminatedFormatExpression, - NestedFormatSpecifierExpression, } export interface UnescapeError { @@ -53,47 +32,30 @@ export interface UnescapedString { value: string; unescapeErrors: UnescapeError[]; nonAsciiInBytes: boolean; - formatStringSegments: FormatStringSegment[]; } interface IncompleteUnescapedString { valueParts: string[]; unescapeErrors: UnescapeError[]; nonAsciiInBytes: boolean; - formatStringSegments: IncompleteFormatStringSegment[]; -} - -interface IncompleteFormatStringSegment { - offset: number; - length: number; - valueParts: string[]; - isExpression: boolean; - hasFormatSpecifier: boolean; - formatSpecifierNestCount: number; } function completeUnescapedString(incomplete: IncompleteUnescapedString): UnescapedString { return { ...incomplete, value: incomplete.valueParts.join(''), - formatStringSegments: incomplete.formatStringSegments.map((segment) => ({ - ...segment, - value: segment.valueParts.join(''), - })), }; } -export function getUnescapedString(stringToken: StringToken): UnescapedString { +export function getUnescapedString(stringToken: StringToken | FStringMiddleToken): UnescapedString { const escapedString = stringToken.escapedValue; const isRaw = (stringToken.flags & StringTokenFlags.Raw) !== 0; - const isFormat = (stringToken.flags & StringTokenFlags.Format) !== 0; - if (isRaw && !isFormat) { + if (isRaw) { return { value: escapedString, unescapeErrors: [], nonAsciiInBytes: false, - formatStringSegments: [], }; } @@ -105,36 +67,23 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { const isBytes = (stringToken.flags & StringTokenFlags.Bytes) !== 0; // Handle the common case in an expedited manner. - if (!isFormat) { - if ( - !charCodes.some( - (curChar) => curChar === Char.CarriageReturn || curChar === Char.LineFeed || curChar === Char.Backslash - ) - ) { - return { - value: escapedString, - unescapeErrors: [], - nonAsciiInBytes: isBytes && charCodes.some((curChar) => curChar >= 128), - formatStringSegments: [], - }; - } + if ( + !charCodes.some( + (curChar) => curChar === Char.CarriageReturn || curChar === Char.LineFeed || curChar === Char.Backslash + ) + ) { + return { + value: escapedString, + unescapeErrors: [], + nonAsciiInBytes: isBytes && charCodes.some((curChar) => curChar >= 128), + }; } - let formatExpressionNestCount = 0; - let formatSegment: IncompleteFormatStringSegment = { - offset: 0, - length: 0, - valueParts: [], - isExpression: false, - hasFormatSpecifier: false, - formatSpecifierNestCount: 0, - }; let strOffset = 0; const output: IncompleteUnescapedString = { valueParts: [], unescapeErrors: [], nonAsciiInBytes: false, - formatStringSegments: [], }; const addInvalidEscapeOffset = () => { @@ -185,41 +134,15 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { const appendOutputChar = (charCode: number) => { const char = String.fromCharCode(charCode); output.valueParts.push(char); - formatSegment.valueParts.push(char); }; while (true) { let curChar = getEscapedCharacter(); if (curChar === Char.EndOfText) { - if (isFormat) { - if (formatSegment.isExpression) { - // The last format segment was an unterminated expression. - output.unescapeErrors.push({ - offset: formatSegment.offset, - length: strOffset - formatSegment.offset, - errorType: UnescapeErrorType.UnterminatedFormatExpression, - }); - } - - // Push the last segment. - if (strOffset !== formatSegment.offset) { - formatSegment.length = strOffset - formatSegment.offset; - output.formatStringSegments.push(formatSegment); - } - } return completeUnescapedString(output); } if (curChar === Char.Backslash) { - if (isFormat && formatSegment.isExpression && !formatSegment.hasFormatSpecifier) { - // Backslashes aren't allowed within format string expressions. - output.unescapeErrors.push({ - offset: strOffset, - length: 1, - errorType: UnescapeErrorType.EscapeWithinFormatExpression, - }); - } - // Move past the escape (backslash) character. strOffset++; @@ -244,7 +167,7 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { } strOffset++; } else { - if (isRaw || (isFormat && formatSegment.isExpression)) { + if (isRaw) { localValue = '\\' + String.fromCharCode(curChar); strOffset++; } else { @@ -368,7 +291,6 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { } output.valueParts.push(localValue); - formatSegment.valueParts.push(localValue); } else if (curChar === Char.LineFeed || curChar === Char.CarriageReturn) { // Skip over the escaped new line (either one or two characters). if (curChar === Char.CarriageReturn && getEscapedCharacter(1) === Char.LineFeed) { @@ -379,154 +301,7 @@ export function getUnescapedString(stringToken: StringToken): UnescapedString { appendOutputChar(curChar); strOffset++; - } else if (isFormat && curChar === Char.OpenBrace) { - if (!formatSegment.isExpression && getEscapedCharacter(1) === Char.OpenBrace) { - appendOutputChar(curChar); - strOffset += 2; - } else { - // Are we parsing a format specifier? - if (formatExpressionNestCount === 0) { - // A single open brace within a format literal indicates that - // an expression is starting. - formatSegment.length = strOffset - formatSegment.offset; - if (formatSegment.length > 0) { - output.formatStringSegments.push(formatSegment); - } - strOffset++; - - // Start a new segment. - formatSegment = { - offset: strOffset, - length: 0, - valueParts: [], - isExpression: true, - hasFormatSpecifier: false, - formatSpecifierNestCount: 0, - }; - } else { - if (formatSegment.hasFormatSpecifier) { - if (formatSegment.formatSpecifierNestCount === 1) { - output.unescapeErrors.push({ - offset: strOffset, - length: 1, - errorType: UnescapeErrorType.NestedFormatSpecifierExpression, - }); - } - formatSegment.formatSpecifierNestCount++; - } - appendOutputChar(curChar); - strOffset++; - } - formatExpressionNestCount++; - } - } else if (isFormat && curChar === Char.CloseBrace) { - if (!formatSegment.isExpression && getEscapedCharacter(1) === Char.CloseBrace) { - appendOutputChar(curChar); - strOffset += 2; - } else if (formatExpressionNestCount === 0) { - output.unescapeErrors.push({ - offset: strOffset, - length: 1, - errorType: UnescapeErrorType.SingleCloseBraceWithinFormatLiteral, - }); - strOffset++; - } else { - if (formatSegment.hasFormatSpecifier) { - formatSegment.formatSpecifierNestCount--; - } - - formatExpressionNestCount--; - - if (formatExpressionNestCount === 0) { - // A close brace within a format expression indicates that - // the expression is complete. - formatSegment.length = strOffset - formatSegment.offset; - output.formatStringSegments.push(formatSegment); - strOffset++; - - // Start a new segment. - formatSegment = { - offset: strOffset, - length: 0, - valueParts: [], - isExpression: false, - hasFormatSpecifier: false, - formatSpecifierNestCount: 0, - }; - } else { - appendOutputChar(curChar); - strOffset++; - } - } - } else if (formatSegment.isExpression && (curChar === Char.SingleQuote || curChar === Char.DoubleQuote)) { - // We're within an expression, and we've encountered a string literal. - // Skip over it. - const quoteChar = curChar; - appendOutputChar(curChar); - const isTriplicate = getEscapedCharacter(1) === quoteChar && getEscapedCharacter(2) === quoteChar; - if (isTriplicate) { - strOffset += 2; - appendOutputChar(curChar); - appendOutputChar(curChar); - output.valueParts.push(String.fromCharCode(curChar)); - output.valueParts.push(String.fromCharCode(curChar)); - } - - while (true) { - strOffset++; - let strChar = getEscapedCharacter(); - if (strChar === Char.EndOfText) { - break; - } - - if (strChar === Char.Backslash) { - if (isFormat) { - if (formatSegment.isExpression) { - // The last format segment was an unterminated expression. - output.unescapeErrors.push({ - offset: formatSegment.offset, - length: strOffset - formatSegment.offset, - errorType: UnescapeErrorType.UnterminatedFormatExpression, - }); - } - } - - appendOutputChar(strChar); - strOffset++; - strChar = getEscapedCharacter(); - appendOutputChar(strChar); - continue; - } - - if (strChar === Char.LineFeed || strChar === Char.CarriageReturn) { - if (!isTriplicate) { - break; - } - } - - if (strChar === quoteChar) { - if (!isTriplicate) { - strOffset++; - appendOutputChar(strChar); - break; - } - - if (getEscapedCharacter(1) === quoteChar && getEscapedCharacter(2) === quoteChar) { - strOffset += 3; - appendOutputChar(strChar); - appendOutputChar(strChar); - appendOutputChar(strChar); - break; - } - } - - appendOutputChar(strChar); - } } else { - if (formatSegment.isExpression && curChar === Char.Colon) { - formatSegment.hasFormatSpecifier = true; - } - // There's nothing to unescape, so output the escaped character directly. if (isBytes && curChar >= 128) { output.nonAsciiInBytes = true; diff --git a/packages/pyright-internal/src/parser/tokenizer.ts b/packages/pyright-internal/src/parser/tokenizer.ts index fbb31636f..b09f36f2a 100644 --- a/packages/pyright-internal/src/parser/tokenizer.ts +++ b/packages/pyright-internal/src/parser/tokenizer.ts @@ -30,6 +30,9 @@ import { Comment, CommentType, DedentToken, + FStringEndToken, + FStringMiddleToken, + FStringStartToken, IdentifierToken, IndentToken, KeywordToken, @@ -190,6 +193,17 @@ export interface IgnoreComment { rulesList: IgnoreCommentRule[] | undefined; } +interface FStringReplacementFieldContext { + inFormatSpecifier: boolean; + parenDepth: number; +} + +interface FStringContext { + startToken: FStringStartToken; + replacementFieldStack: FStringReplacementFieldContext[]; + activeReplacementField?: FStringReplacementFieldContext; +} + export class Tokenizer { private _cs = new CharacterStream(''); private _tokens: Token[] = []; @@ -201,6 +215,8 @@ export class Tokenizer { private _typeIgnoreLines = new Map(); private _pyrightIgnoreLines = new Map(); private _comments: Comment[] | undefined; + private _fStringStack: FStringContext[] = []; + private _activeFString: FStringContext | undefined; // Total times CR, CR/LF, and LF are used to terminate // lines. Used to determine the predominant line ending. @@ -271,6 +287,18 @@ export class Tokenizer { } } + // Insert any implied FStringEnd tokens. + while (this._activeFString) { + this._tokens.push( + FStringEndToken.create( + this._cs.position, + 0, + this._activeFString.startToken.flags | StringTokenFlags.Unterminated + ) + ); + this._activeFString = this._fStringStack.pop(); + } + // Insert an implied new line to make parsing easier. if (this._tokens.length === 0 || this._tokens[this._tokens.length - 1].type !== TokenType.NewLine) { this._tokens.push(NewLineToken.create(this._cs.position, 0, NewLineType.Implied, this._getComments())); @@ -343,7 +371,16 @@ export class Tokenizer { } private _addNextToken(): void { - this._cs.skipWhitespace(); + // Are we in the middle of an f-string but not in a replacement field? + if ( + this._activeFString && + (!this._activeFString.activeReplacementField || + this._activeFString.activeReplacementField.inFormatSpecifier) + ) { + this._handleFStringMiddle(); + } else { + this._cs.skipWhitespace(); + } if (this._cs.isEndOfStream()) { return; @@ -354,6 +391,9 @@ export class Tokenizer { } } + // Consumes one or more characters from the character stream and pushes + // tokens onto the token list. Returns true if the caller should advance + // to the next character. private _handleCharacter(): boolean { // f-strings, b-strings, etc const stringPrefixLength = this._getStringPrefixLength(); @@ -466,10 +506,37 @@ export class Tokenizer { case Char.OpenBrace: { this._parenDepth++; this._tokens.push(Token.create(TokenType.OpenCurlyBrace, this._cs.position, 1, this._getComments())); + + if (this._activeFString) { + // Are we starting a new replacement field? + if ( + !this._activeFString.activeReplacementField || + this._activeFString.activeReplacementField.inFormatSpecifier + ) { + // If there is already an active replacement field, push it + // on the stack so we can pop it later. + if (this._activeFString.activeReplacementField) { + this._activeFString.replacementFieldStack.push(this._activeFString.activeReplacementField); + } + + // Create a new active replacement field context. + this._activeFString.activeReplacementField = { + inFormatSpecifier: false, + parenDepth: this._parenDepth, + }; + } + } break; } case Char.CloseBrace: { + if ( + this._activeFString && + this._activeFString.activeReplacementField?.parenDepth === this._parenDepth + ) { + this._activeFString.activeReplacementField = this._activeFString.replacementFieldStack.pop(); + } + if (this._parenDepth > 0) { this._parenDepth--; } @@ -494,13 +561,27 @@ export class Tokenizer { case Char.Colon: { if (this._cs.nextChar === Char.Equal) { - this._tokens.push( - OperatorToken.create(this._cs.position, 2, OperatorType.Walrus, this._getComments()) - ); - this._cs.advance(1); - break; + if ( + !this._activeFString || + !this._activeFString.activeReplacementField || + this._activeFString.activeReplacementField.parenDepth !== this._parenDepth + ) { + this._tokens.push( + OperatorToken.create(this._cs.position, 2, OperatorType.Walrus, this._getComments()) + ); + this._cs.advance(1); + break; + } } + this._tokens.push(Token.create(TokenType.Colon, this._cs.position, 1, this._getComments())); + + if ( + this._activeFString?.activeReplacementField && + this._parenDepth === this._activeFString.activeReplacementField.parenDepth + ) { + this._activeFString.activeReplacementField.inFormatSpecifier = true; + } break; } @@ -958,12 +1039,32 @@ export class Tokenizer { break; case Char.Equal: + if ( + this._activeFString?.activeReplacementField && + this._activeFString?.activeReplacementField.parenDepth === this._parenDepth && + !this._activeFString.activeReplacementField.inFormatSpecifier && + nextChar !== Char.Equal + ) { + length = 1; + operatorType = OperatorType.Assign; + break; + } + length = nextChar === Char.Equal ? 2 : 1; operatorType = length === 2 ? OperatorType.Equals : OperatorType.Assign; break; case Char.ExclamationMark: if (nextChar !== Char.Equal) { + if (this._activeFString) { + // Handle the conversion separator (!) within an f-string. + this._tokens.push( + Token.create(TokenType.ExclamationMark, this._cs.position, 1, this._getComments()) + ); + this._cs.advance(1); + return true; + } + return false; } length = 2; @@ -1298,37 +1399,148 @@ export class Tokenizer { private _handleString(flags: StringTokenFlags, stringPrefixLength: number): void { const start = this._cs.position - stringPrefixLength; - if (flags & StringTokenFlags.Triplicate) { - this._cs.advance(3); - } else { - this._cs.moveNext(); - - if (flags & StringTokenFlags.SingleQuote) { - this._singleQuoteCount++; + if (flags & StringTokenFlags.Format) { + if (flags & StringTokenFlags.Triplicate) { + this._cs.advance(3); } else { - this._doubleQuoteCount++; + this._cs.moveNext(); } - } - const stringLiteralInfo = this._skipToEndOfStringLiteral(flags); - - const end = this._cs.position; + const end = this._cs.position; - this._tokens.push( - StringToken.create( + const fStringStartToken = FStringStartToken.create( start, end - start, - stringLiteralInfo.flags, - stringLiteralInfo.escapedValue, + flags, stringPrefixLength, this._getComments() - ) - ); + ); + + // Create a new f-string context and push it on the stack. + const fStringContext: FStringContext = { + startToken: fStringStartToken, + replacementFieldStack: [], + }; + + if (this._activeFString) { + this._fStringStack.push(this._activeFString); + } + this._activeFString = fStringContext; + + this._tokens.push(fStringStartToken); + } else { + if (flags & StringTokenFlags.Triplicate) { + this._cs.advance(3); + } else { + this._cs.moveNext(); + + if (flags & StringTokenFlags.SingleQuote) { + this._singleQuoteCount++; + } else { + this._doubleQuoteCount++; + } + } + + const stringLiteralInfo = this._skipToEndOfStringLiteral(flags); + const end = this._cs.position; + + // If this is an unterminated string, see if it matches the string type + // of an active f-string. If so, we'll treat it as an f-string end + // token rather than an unterminated regular string. This helps with + // parse error recovery if a closing bracket is missing in an f-string. + if ( + (stringLiteralInfo.flags & StringTokenFlags.Unterminated) !== 0 && + this._activeFString?.activeReplacementField + ) { + if ( + (flags & + (StringTokenFlags.Bytes | + StringTokenFlags.Unicode | + StringTokenFlags.Raw | + StringTokenFlags.Format)) === + 0 + ) { + const quoteTypeMask = + StringTokenFlags.Triplicate | StringTokenFlags.DoubleQuote | StringTokenFlags.SingleQuote; + if ((this._activeFString.startToken.flags & quoteTypeMask) === (flags & quoteTypeMask)) { + // Unwind to the start of this string token and terminate any replacement fields + // that are active. This will cause the tokenizer to re-process the quote as an + // FStringEnd token. + this._cs.position = start; + while (this._activeFString.replacementFieldStack.length > 0) { + this._activeFString.activeReplacementField = + this._activeFString.replacementFieldStack.pop(); + } + this._parenDepth = this._activeFString.activeReplacementField!.parenDepth - 1; + this._activeFString.activeReplacementField = undefined; + return; + } + } + } + + this._tokens.push( + StringToken.create( + start, + end - start, + stringLiteralInfo.flags, + stringLiteralInfo.escapedValue, + stringPrefixLength, + this._getComments() + ) + ); + } } - private _skipToEndOfStringLiteral(flags: StringTokenFlags): StringScannerOutput { + // Scans for either the FString end token or a replacement field. + private _handleFStringMiddle(): void { + const activeFString = this._activeFString!; + const inFormatSpecifier = !!this._activeFString!.activeReplacementField?.inFormatSpecifier; + const start = this._cs.position; + const flags = activeFString.startToken.flags; + const stringLiteralInfo = this._skipToEndOfStringLiteral(flags, inFormatSpecifier); + const end = this._cs.position; + + const isUnterminated = (stringLiteralInfo.flags & StringTokenFlags.Unterminated) !== 0; + const sawReplacementFieldStart = (stringLiteralInfo.flags & StringTokenFlags.ReplacementFieldStart) !== 0; + const sawReplacementFieldEnd = (stringLiteralInfo.flags & StringTokenFlags.ReplacementFieldEnd) !== 0; + const sawEndQuote = !isUnterminated && !sawReplacementFieldStart && !sawReplacementFieldEnd; + + let middleTokenLength = end - start; + if (sawEndQuote) { + middleTokenLength -= activeFString.startToken.quoteMarkLength; + } + + if (middleTokenLength > 0 || isUnterminated) { + this._tokens.push( + FStringMiddleToken.create( + start, + middleTokenLength, + stringLiteralInfo.flags, + stringLiteralInfo.escapedValue + ) + ); + } + + if (sawEndQuote) { + this._tokens.push( + FStringEndToken.create( + start + middleTokenLength, + activeFString.startToken.quoteMarkLength, + stringLiteralInfo.flags + ) + ); + + this._activeFString = this._fStringStack.pop(); + } else if (isUnterminated) { + this._activeFString = this._fStringStack.pop(); + } + } + + private _skipToEndOfStringLiteral(flags: StringTokenFlags, inFormatSpecifier = false): StringScannerOutput { const quoteChar = flags & StringTokenFlags.SingleQuote ? Char.SingleQuote : Char.DoubleQuote; const isTriplicate = (flags & StringTokenFlags.Triplicate) !== 0; + const isFString = (flags & StringTokenFlags.Format) !== 0; + let isInNamedUnicodeEscape = false; let escapedValueParts: number[] = []; while (true) { @@ -1344,17 +1556,40 @@ export class Tokenizer { // Move past the escape (backslash) character. this._cs.moveNext(); - if (this._cs.getCurrentChar() === Char.CarriageReturn || this._cs.getCurrentChar() === Char.LineFeed) { - if (this._cs.getCurrentChar() === Char.CarriageReturn && this._cs.nextChar === Char.LineFeed) { - escapedValueParts.push(this._cs.currentChar); - this._cs.moveNext(); - } - escapedValueParts.push(this._cs.currentChar); - this._cs.moveNext(); - this._addLineRange(); + // Handle the special escape sequence /N{name} for unicode characters. + if ( + !isInNamedUnicodeEscape && + this._cs.getCurrentChar() === Char.N && + this._cs.nextChar === Char.OpenBrace + ) { + isInNamedUnicodeEscape = true; } else { - escapedValueParts.push(this._cs.currentChar); - this._cs.moveNext(); + // If this is an f-string, the only escape that is allowed is for + // a single or double quote symbol. + if ( + !isFString || + this._cs.getCurrentChar() === Char.SingleQuote || + this._cs.getCurrentChar() === Char.DoubleQuote + ) { + if ( + this._cs.getCurrentChar() === Char.CarriageReturn || + this._cs.getCurrentChar() === Char.LineFeed + ) { + if ( + this._cs.getCurrentChar() === Char.CarriageReturn && + this._cs.nextChar === Char.LineFeed + ) { + escapedValueParts.push(this._cs.currentChar); + this._cs.moveNext(); + } + escapedValueParts.push(this._cs.currentChar); + this._cs.moveNext(); + this._addLineRange(); + } else { + escapedValueParts.push(this._cs.currentChar); + this._cs.moveNext(); + } + } } } else if (this._cs.currentChar === Char.LineFeed || this._cs.currentChar === Char.CarriageReturn) { if (!isTriplicate) { @@ -1383,6 +1618,30 @@ export class Tokenizer { ) { this._cs.advance(3); break; + } else if (!isInNamedUnicodeEscape && isFString && this._cs.currentChar === Char.OpenBrace) { + if (inFormatSpecifier || this._cs.nextChar !== Char.OpenBrace) { + flags |= StringTokenFlags.ReplacementFieldStart; + break; + } else { + escapedValueParts.push(this._cs.currentChar); + this._cs.moveNext(); + escapedValueParts.push(this._cs.currentChar); + this._cs.moveNext(); + } + } else if (isInNamedUnicodeEscape && this._cs.currentChar === Char.CloseBrace) { + isInNamedUnicodeEscape = false; + escapedValueParts.push(this._cs.currentChar); + this._cs.moveNext(); + } else if (isFString && this._cs.currentChar === Char.CloseBrace) { + if (inFormatSpecifier || this._cs.nextChar !== Char.CloseBrace) { + flags |= StringTokenFlags.ReplacementFieldEnd; + break; + } else { + escapedValueParts.push(this._cs.currentChar); + this._cs.moveNext(); + escapedValueParts.push(this._cs.currentChar); + this._cs.moveNext(); + } } else { escapedValueParts.push(this._cs.currentChar); this._cs.moveNext(); @@ -1392,7 +1651,7 @@ export class Tokenizer { // String.fromCharCode.apply crashes (stack overflow) if passed an array // that is too long. Cut off the extra characters in this case to avoid // the crash. It's unlikely that the full string value will be used as - // a string literal, an f-string, or a docstring, so this should be fine. + // a string literal or a docstring, so this should be fine. if (escapedValueParts.length > _maxStringTokenLength) { escapedValueParts = escapedValueParts.slice(0, _maxStringTokenLength); flags |= StringTokenFlags.ExceedsMaxSize; diff --git a/packages/pyright-internal/src/parser/tokenizerTypes.ts b/packages/pyright-internal/src/parser/tokenizerTypes.ts index e50ea7861..353204701 100644 --- a/packages/pyright-internal/src/parser/tokenizerTypes.ts +++ b/packages/pyright-internal/src/parser/tokenizerTypes.ts @@ -37,6 +37,10 @@ export const enum TokenType { Dot, Arrow, Backtick, + ExclamationMark, + FStringStart, + FStringMiddle, + FStringEnd, } export const enum NewLineType { @@ -163,6 +167,10 @@ export const enum StringTokenFlags { Bytes = 1 << 5, Format = 1 << 6, + // Other conditions + ReplacementFieldStart = 1 << 7, + ReplacementFieldEnd = 1 << 8, + // Error conditions Unterminated = 1 << 16, ExceedsMaxSize = 1 << 17, @@ -353,6 +361,81 @@ export namespace StringToken { } } +export interface FStringStartToken extends Token { + readonly type: TokenType.FStringStart; + readonly flags: StringTokenFlags; + + // Number of characters in token that appear before + // the quote marks (e.g. "r" or "UR"). + readonly prefixLength: number; + + // Number of characters in token that make up the quote + // (either 1 or 3). + readonly quoteMarkLength: number; +} + +export namespace FStringStartToken { + export function create( + start: number, + length: number, + flags: StringTokenFlags, + prefixLength: number, + comments: Comment[] | undefined + ) { + const token: FStringStartToken = { + start, + length, + type: TokenType.FStringStart, + flags, + prefixLength, + quoteMarkLength: flags & StringTokenFlags.Triplicate ? 3 : 1, + comments, + }; + + return token; + } +} + +export interface FStringMiddleToken extends Token { + readonly type: TokenType.FStringMiddle; + readonly flags: StringTokenFlags; + + // Use StringTokenUtils to convert escaped value to unescaped value. + readonly escapedValue: string; +} + +export namespace FStringMiddleToken { + export function create(start: number, length: number, flags: StringTokenFlags, escapedValue: string) { + const token: FStringMiddleToken = { + start, + length, + type: TokenType.FStringMiddle, + flags, + escapedValue, + }; + + return token; + } +} + +export interface FStringEndToken extends Token { + readonly type: TokenType.FStringEnd; + readonly flags: StringTokenFlags; +} + +export namespace FStringEndToken { + export function create(start: number, length: number, flags: StringTokenFlags) { + const token: FStringEndToken = { + start, + length, + type: TokenType.FStringEnd, + flags, + }; + + return token; + } +} + export interface NumberToken extends Token { readonly type: TokenType.Number; readonly value: number | bigint; diff --git a/packages/pyright-internal/src/tests/samples/fstring1.py b/packages/pyright-internal/src/tests/samples/fstring1.py index 63d62849e..275b632ec 100644 --- a/packages/pyright-internal/src/tests/samples/fstring1.py +++ b/packages/pyright-internal/src/tests/samples/fstring1.py @@ -8,10 +8,10 @@ # This should generate an error. b = f"hello { \t1 }" -# This should generate an error. +# This should generate an error prior to Python 3.12. b1 = f"""{"\n"}""" -# This should generate an error. +# This should generate an error prior to Python 3.12. b2 = f"{r'\n'}" @@ -33,7 +33,7 @@ g = f"hello { a[2:3] :3 }" # Test f-string with embedded bang. -h = f"hello { b['hello!'] :3 }" +h = f"hello { {}['hello!'] :3 }" # Test f-string with expression that contains newlines. i = f""" @@ -51,10 +51,6 @@ } """ -# This should generate a warning because of the unknown -# escape sequence but not an error. -h = f"hello\{4}" - # Test f-string with raw string and backslash. j = rf"aaa\{4}" @@ -80,4 +76,67 @@ n = f"{my_str:\u2007>{width}s}" # f-strings with nested expressions in the format string section. -o = f"{1+2:{1+2:{1+1:{1}}}}" +o = f"{1+2:{1+2:{1+1:}}}" + +# This should generate an error because the nesting is too deep. +p = f"{1+2:{1+2:{1+1:{1}}}}" + +# This should generate a warning because of the unknown +# escape sequence but not an error. +q = f"hello\{4}" + +s1 = f"""{f'''{f'{f"{1+1}"}'}'''}""" + +# This should generate an error prior to Python 3.12. +s2 = f"""{f'''{f'{f"""{1+1}"""}'}'''}""" + +# This should generate an error prior to Python 3.12. +s3 = f'{f'''{r'abc'}'''}' + +q1 = f"""{ + 1 + 1 # Comment + }""" + +# This should generate an error prior to Python 3.12, but +# pyright doesn't currently detect this error. +q2 = f'{ + 1 + 1 # Comment + }' + +# This should generate an error because an expression is missing. +r1 = f'{!r}' + +# This should generate an error because an expression is missing. +r2 = f'{!}' + +# This should generate an error because an expression is missing. +r3 = f'{:}' + +# This should generate an error because an expression is missing. +r4 = f'{=}' + +r5 = f'{1!s:}' +r6 = f'{1:}' +r7 = f'{1=}' +r8 = f'{1=:}' +r9 = f'{1=!r:}' + +s1 = f"}}" + +# This should generate an error because a single right brace is used. +s2 = f"}" + +t1 = f'{0==1}' +t2 = f'{0!=1}' +t3 = f'{0<=1}' + +# This should generate an error because this isn't a walrus +# operator as it appears. +t4 = f'{x1:=3}' + +t5 = f"{(x2:=3):{(x3:=0)}}" + +u1 = f"'{{\"{0}\": {0}}}'" + +def func1(x): + f"x:{yield (lambda i: x * i)}" diff --git a/packages/pyright-internal/src/tests/tokenizer.test.ts b/packages/pyright-internal/src/tests/tokenizer.test.ts index 66e6f61fb..ec4e5a58a 100644 --- a/packages/pyright-internal/src/tests/tokenizer.test.ts +++ b/packages/pyright-internal/src/tests/tokenizer.test.ts @@ -15,7 +15,11 @@ import assert from 'assert'; import * as StringTokenUtils from '../parser/stringTokenUtils'; import { Tokenizer } from '../parser/tokenizer'; import { + CommentType, DedentToken, + FStringEndToken, + FStringMiddleToken, + FStringStartToken, IdentifierToken, IndentToken, NewLineToken, @@ -511,118 +515,378 @@ test('Strings: triplicate double quote escape', () => { test('Strings: single quoted f-string', () => { const t = new Tokenizer(); const results = t.tokenize("a+f'quoted'"); - assert.equal(results.tokens.count, 3 + _implicitTokenCount); + assert.equal(results.tokens.count, 5 + _implicitTokenCount); assert.equal(results.tokens.getItemAt(0).type, TokenType.Identifier); assert.equal(results.tokens.getItemAt(1).type, TokenType.Operator); - const stringToken = results.tokens.getItemAt(2) as StringToken; - assert.equal(stringToken.type, TokenType.String); - assert.equal(stringToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Format); - assert.equal(stringToken.length, 9); - assert.equal(stringToken.escapedValue, 'quoted'); + const fStringStartToken = results.tokens.getItemAt(2) as FStringStartToken; + assert.equal(fStringStartToken.type, TokenType.FStringStart); + assert.equal(fStringStartToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Format); + assert.equal(fStringStartToken.length, 2); + + const fStringMiddleToken = results.tokens.getItemAt(3) as FStringMiddleToken; + assert.equal(fStringMiddleToken.type, TokenType.FStringMiddle); + assert.equal(fStringMiddleToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Format); + assert.equal(fStringMiddleToken.length, 6); + assert.equal(fStringMiddleToken.escapedValue, 'quoted'); + + const fStringEndToken = results.tokens.getItemAt(4) as FStringEndToken; + assert.equal(fStringEndToken.type, TokenType.FStringEnd); + assert.equal(fStringEndToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Format); + assert.equal(fStringEndToken.length, 1); }); test('Strings: double quoted f-string', () => { const t = new Tokenizer(); const results = t.tokenize('x(1,f"quoted")'); - assert.equal(results.tokens.count, 6 + _implicitTokenCount); + assert.equal(results.tokens.count, 8 + _implicitTokenCount); assert.equal(results.tokens.getItemAt(0).type, TokenType.Identifier); assert.equal(results.tokens.getItemAt(1).type, TokenType.OpenParenthesis); assert.equal(results.tokens.getItemAt(2).type, TokenType.Number); assert.equal(results.tokens.getItemAt(3).type, TokenType.Comma); - assert.equal(results.tokens.getItemAt(5).type, TokenType.CloseParenthesis); + assert.equal(results.tokens.getItemAt(7).type, TokenType.CloseParenthesis); - const stringToken = results.tokens.getItemAt(4) as StringToken; - assert.equal(stringToken.type, TokenType.String); - assert.equal(stringToken.flags, StringTokenFlags.DoubleQuote | StringTokenFlags.Format); - assert.equal(stringToken.length, 9); - assert.equal(stringToken.escapedValue, 'quoted'); + const fStringStartToken = results.tokens.getItemAt(4) as FStringStartToken; + assert.equal(fStringStartToken.type, TokenType.FStringStart); + assert.equal(fStringStartToken.flags, StringTokenFlags.DoubleQuote | StringTokenFlags.Format); + assert.equal(fStringStartToken.length, 2); + + const fStringMiddleToken = results.tokens.getItemAt(5) as FStringMiddleToken; + assert.equal(fStringMiddleToken.type, TokenType.FStringMiddle); + assert.equal(fStringMiddleToken.flags, StringTokenFlags.DoubleQuote | StringTokenFlags.Format); + assert.equal(fStringMiddleToken.length, 6); + assert.equal(fStringMiddleToken.escapedValue, 'quoted'); + + const fStringEndToken = results.tokens.getItemAt(6) as FStringEndToken; + assert.equal(fStringEndToken.type, TokenType.FStringEnd); + assert.equal(fStringEndToken.flags, StringTokenFlags.DoubleQuote | StringTokenFlags.Format); + assert.equal(fStringEndToken.length, 1); }); test('Strings: single quoted multiline f-string', () => { const t = new Tokenizer(); const results = t.tokenize("f'''quoted'''"); - assert.equal(results.tokens.count, 1 + _implicitTokenCount); + assert.equal(results.tokens.count, 3 + _implicitTokenCount); - const stringToken = results.tokens.getItemAt(0) as StringToken; - assert.equal(stringToken.type, TokenType.String); + const fStringStartToken = results.tokens.getItemAt(0) as FStringStartToken; + assert.equal(fStringStartToken.type, TokenType.FStringStart); assert.equal( - stringToken.flags, + fStringStartToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Triplicate | StringTokenFlags.Format ); - assert.equal(stringToken.length, 13); - assert.equal(stringToken.escapedValue, 'quoted'); + assert.equal(fStringStartToken.length, 4); + + const fStringMiddleToken = results.tokens.getItemAt(1) as FStringMiddleToken; + assert.equal(fStringMiddleToken.type, TokenType.FStringMiddle); + assert.equal( + fStringMiddleToken.flags, + StringTokenFlags.SingleQuote | StringTokenFlags.Triplicate | StringTokenFlags.Format + ); + assert.equal(fStringMiddleToken.length, 6); + assert.equal(fStringMiddleToken.escapedValue, 'quoted'); + + const fStringEndToken = results.tokens.getItemAt(2) as FStringEndToken; + assert.equal(fStringEndToken.type, TokenType.FStringEnd); + assert.equal( + fStringEndToken.flags, + StringTokenFlags.SingleQuote | StringTokenFlags.Triplicate | StringTokenFlags.Format + ); + assert.equal(fStringEndToken.length, 3); }); test('Strings: double quoted multiline f-string', () => { const t = new Tokenizer(); const results = t.tokenize('f"""quoted """'); - assert.equal(results.tokens.count, 1 + _implicitTokenCount); + assert.equal(results.tokens.count, 3 + _implicitTokenCount); - const stringToken = results.tokens.getItemAt(0) as StringToken; - assert.equal(stringToken.type, TokenType.String); + const fStringStartToken = results.tokens.getItemAt(0) as FStringStartToken; + assert.equal(fStringStartToken.type, TokenType.FStringStart); + assert.equal( + fStringStartToken.flags, + StringTokenFlags.DoubleQuote | StringTokenFlags.Triplicate | StringTokenFlags.Format + ); + assert.equal(fStringStartToken.length, 4); + + const fStringMiddleToken = results.tokens.getItemAt(1) as FStringMiddleToken; + assert.equal(fStringMiddleToken.type, TokenType.FStringMiddle); + assert.equal( + fStringMiddleToken.flags, + StringTokenFlags.DoubleQuote | StringTokenFlags.Triplicate | StringTokenFlags.Format + ); + assert.equal(fStringMiddleToken.length, 7); + assert.equal(fStringMiddleToken.escapedValue, 'quoted '); + + const fStringEndToken = results.tokens.getItemAt(2) as FStringEndToken; + assert.equal(fStringEndToken.type, TokenType.FStringEnd); assert.equal( - stringToken.flags, + fStringEndToken.flags, StringTokenFlags.DoubleQuote | StringTokenFlags.Triplicate | StringTokenFlags.Format ); - assert.equal(stringToken.length, 14); - assert.equal(stringToken.escapedValue, 'quoted '); + assert.equal(fStringEndToken.length, 3); }); test('Strings: f-string with single right brace', () => { const t = new Tokenizer(); const results = t.tokenize("f'hello}'"); - assert.equal(results.tokens.count, 1 + _implicitTokenCount); + assert.equal(results.tokens.count, 4 + _implicitTokenCount); - const stringToken = results.tokens.getItemAt(0) as StringToken; - const unescapedValue = StringTokenUtils.getUnescapedString(stringToken); - assert.equal(stringToken.type, TokenType.String); - assert.equal(stringToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Format); - assert.equal(unescapedValue.formatStringSegments.length, 1); - assert.equal(unescapedValue.unescapeErrors.length, 1); - assert.equal(unescapedValue.unescapeErrors[0].offset, 5); - assert.equal(unescapedValue.unescapeErrors[0].length, 1); + const fStringStartToken = results.tokens.getItemAt(0) as FStringStartToken; + assert.equal(fStringStartToken.type, TokenType.FStringStart); + assert.equal(fStringStartToken.length, 2); + assert.equal(fStringStartToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Format); + + const fStringMiddleToken = results.tokens.getItemAt(1) as FStringMiddleToken; + assert.equal(fStringMiddleToken.type, TokenType.FStringMiddle); + assert.equal(fStringMiddleToken.length, 5); assert.equal( - unescapedValue.unescapeErrors[0].errorType, - StringTokenUtils.UnescapeErrorType.SingleCloseBraceWithinFormatLiteral + fStringMiddleToken.flags, + StringTokenFlags.SingleQuote | StringTokenFlags.Format | StringTokenFlags.ReplacementFieldEnd ); + + const braceToken = results.tokens.getItemAt(2).type; + assert.equal(braceToken, TokenType.CloseCurlyBrace); + + const fStringEndToken = results.tokens.getItemAt(3) as FStringEndToken; + assert.equal(fStringEndToken.type, TokenType.FStringEnd); + assert.equal(fStringEndToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Format); + assert.equal(fStringEndToken.length, 1); }); test('Strings: f-string with escape in expression', () => { const t = new Tokenizer(); - const results = t.tokenize("f'hello { \\t }'"); - assert.equal(results.tokens.count, 1 + _implicitTokenCount); + const results = t.tokenize(`f'hello { "\\t" }'`); + assert.equal(results.tokens.count, 6 + _implicitTokenCount); - const stringToken = results.tokens.getItemAt(0) as StringToken; - const unescapedValue = StringTokenUtils.getUnescapedString(stringToken); - assert.equal(stringToken.type, TokenType.String); - assert.equal(stringToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Format); - assert.equal(unescapedValue.formatStringSegments.length, 2); - assert.equal(unescapedValue.unescapeErrors.length, 1); - assert.equal(unescapedValue.unescapeErrors[0].offset, 8); - assert.equal(unescapedValue.unescapeErrors[0].length, 1); - assert.equal( - unescapedValue.unescapeErrors[0].errorType, - StringTokenUtils.UnescapeErrorType.EscapeWithinFormatExpression - ); + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.String); + assert.equal(results.tokens.getItemAt(4).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(5).type, TokenType.FStringEnd); +}); + +test('Strings: f-string with escape in format string 1', () => { + const t = new Tokenizer(); + const results = t.tokenize("f'he\\{ 1 }lo'"); + assert.equal(results.tokens.count, 7 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + + const middleFString = results.tokens.getItemAt(1) as FStringMiddleToken; + assert.equal(middleFString.type, TokenType.FStringMiddle); + assert.equal(middleFString.escapedValue.length, 3); + + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Number); + assert.equal(results.tokens.getItemAt(4).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(5).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(6).type, TokenType.FStringEnd); +}); + +test('Strings: f-string with escape in format string 2', () => { + const t = new Tokenizer(); + const results = t.tokenize(`f"'{{\\"{0}\\": {0}}}'"`); + assert.equal(results.tokens.count, 11 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + + const middleFString = results.tokens.getItemAt(1) as FStringMiddleToken; + assert.equal(middleFString.type, TokenType.FStringMiddle); + assert.equal(middleFString.escapedValue.length, 5); + + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Number); + assert.equal(results.tokens.getItemAt(4).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(5).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(6).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(7).type, TokenType.Number); + assert.equal(results.tokens.getItemAt(8).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(9).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(10).type, TokenType.FStringEnd); +}); + +test('Strings: f-string with double brace', () => { + const t = new Tokenizer(); + const results = t.tokenize(`f"hello {{{0==0}}}"`); + assert.equal(results.tokens.count, 9 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Number); + assert.equal(results.tokens.getItemAt(4).type, TokenType.Operator); + assert.equal(results.tokens.getItemAt(5).type, TokenType.Number); + assert.equal(results.tokens.getItemAt(6).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(7).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(8).type, TokenType.FStringEnd); +}); + +test('Strings: f-string with walrus operator', () => { + const t = new Tokenizer(); + const results = t.tokenize(`f"{(x:=0)}"`); + assert.equal(results.tokens.count, 9 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenParenthesis); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(4).type, TokenType.Operator); + assert.equal(results.tokens.getItemAt(5).type, TokenType.Number); + assert.equal(results.tokens.getItemAt(6).type, TokenType.CloseParenthesis); + assert.equal(results.tokens.getItemAt(7).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(8).type, TokenType.FStringEnd); +}); + +test('Strings: f-string with single right brace', () => { + const t = new Tokenizer(); + const results = t.tokenize(`f"}"`); + assert.equal(results.tokens.count, 3 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(2).type, TokenType.FStringEnd); +}); + +test('Strings: f-string with comment', () => { + const t = new Tokenizer(); + const results = t.tokenize(`f'''hello{\nx # comment\n}'''`); + assert.equal(results.tokens.count, 6 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Identifier); + const closeBraceToken = results.tokens.getItemAt(4); + assert.equal(closeBraceToken.type, TokenType.CloseCurlyBrace); + assert.deepEqual(closeBraceToken.comments, [ + { type: CommentType.Regular, value: ' comment', start: 14, length: 8 }, + ]); + assert.equal(results.tokens.getItemAt(5).type, TokenType.FStringEnd); }); test('Strings: f-string with unterminated expression', () => { const t = new Tokenizer(); - const results = t.tokenize("f'hello { a + b'"); - assert.equal(results.tokens.count, 1 + _implicitTokenCount); + const results = t.tokenize("f'hello { a'"); + assert.equal(results.tokens.count, 5 + _implicitTokenCount); - const stringToken = results.tokens.getItemAt(0) as StringToken; - const unescapedValue = StringTokenUtils.getUnescapedString(stringToken); - assert.equal(stringToken.type, TokenType.String); - assert.equal(stringToken.flags, StringTokenFlags.SingleQuote | StringTokenFlags.Format); - assert.equal(unescapedValue.formatStringSegments.length, 2); - assert.equal(unescapedValue.unescapeErrors.length, 1); - assert.equal(unescapedValue.unescapeErrors[0].offset, 7); - assert.equal( - unescapedValue.unescapeErrors[0].errorType, - StringTokenUtils.UnescapeErrorType.UnterminatedFormatExpression - ); + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Identifier); + + const fStringEnd = results.tokens.getItemAt(4) as FStringEndToken; + assert.equal(fStringEnd.type, TokenType.FStringEnd); + assert.equal(fStringEnd.flags, StringTokenFlags.Format | StringTokenFlags.SingleQuote); +}); + +test('Strings: f-string with replacement field', () => { + const t = new Tokenizer(); + const results = t.tokenize("f'hello { a + b}'"); + assert.equal(results.tokens.count, 8 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(4).type, TokenType.Operator); + assert.equal(results.tokens.getItemAt(5).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(6).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(7).type, TokenType.FStringEnd); +}); + +test('Strings: f-string with format specifier', () => { + const t = new Tokenizer(); + const results = t.tokenize("f'hello { a ! b}'"); + assert.equal(results.tokens.count, 8 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(4).type, TokenType.ExclamationMark); + assert.equal(results.tokens.getItemAt(5).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(6).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(7).type, TokenType.FStringEnd); +}); + +test('Strings: f-string with debug format specifier', () => { + const t = new Tokenizer(); + const results = t.tokenize("f'hello { a =}'"); + assert.equal(results.tokens.count, 7 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(4).type, TokenType.Operator); + assert.equal(results.tokens.getItemAt(5).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(6).type, TokenType.FStringEnd); +}); + +test('Strings: nested f-string', () => { + const t = new Tokenizer(); + const results = t.tokenize("f'{f'{a}'}'"); + assert.equal(results.tokens.count, 9 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(2).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(3).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(4).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(5).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(6).type, TokenType.FStringEnd); + assert.equal(results.tokens.getItemAt(7).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(8).type, TokenType.FStringEnd); +}); + +test('Strings: nested f-string formats 1', () => { + const t = new Tokenizer(); + const results = t.tokenize("f'{a:x{{b}+:x{c}+}}'"); + assert.equal(results.tokens.count, 19 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(2).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(3).type, TokenType.Colon); + assert.equal(results.tokens.getItemAt(4).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(5).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(6).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(7).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(8).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(9).type, TokenType.Operator); + assert.equal(results.tokens.getItemAt(10).type, TokenType.Colon); + assert.equal(results.tokens.getItemAt(11).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(12).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(13).type, TokenType.Identifier); + assert.equal(results.tokens.getItemAt(14).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(15).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(16).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(17).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(18).type, TokenType.FStringEnd); +}); + +test('Strings: nested f-string formats 2', () => { + const t = new Tokenizer(); + const results = t.tokenize("f'hi{'x':*^{8:{'':}}0}'"); + assert.equal(results.tokens.count, 17 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(2).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(3).type, TokenType.String); + assert.equal(results.tokens.getItemAt(4).type, TokenType.Colon); + assert.equal(results.tokens.getItemAt(5).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(6).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(7).type, TokenType.Number); + assert.equal(results.tokens.getItemAt(8).type, TokenType.Colon); + assert.equal(results.tokens.getItemAt(9).type, TokenType.OpenCurlyBrace); + assert.equal(results.tokens.getItemAt(10).type, TokenType.String); + assert.equal(results.tokens.getItemAt(11).type, TokenType.Colon); + assert.equal(results.tokens.getItemAt(12).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(13).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(14).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(15).type, TokenType.CloseCurlyBrace); + assert.equal(results.tokens.getItemAt(16).type, TokenType.FStringEnd); }); test('Strings: escape at the end of single quoted string', () => { @@ -920,7 +1184,7 @@ test('Strings: bad name escapes', () => { test('Comments', () => { const t = new Tokenizer(); - const results = t.tokenize(' #co"""mment1\n\t\n#comm\'ent2 '); + const results = t.tokenize(' #co"""mment1\n\t\n#x\'y2 '); assert.equal(results.tokens.count, 1 + _implicitTokenCountNoImplicitNewLine); assert.equal(results.tokens.getItemAt(0).type, TokenType.NewLine); }); @@ -1474,7 +1738,7 @@ test('TypeIgnoreAll2', () => { test('TypeIgnoreAll3', () => { const t = new Tokenizer(); - const results = t.tokenize('\n# type: ignoressss\n'); + const results = t.tokenize('\n# type: ignoreSsss\n'); assert(!results.typeIgnoreAll); }); diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index fac7ee305..1a5ffc973 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -380,8 +380,15 @@ test('CallSite2', () => { }); test('FString1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['fstring1.py']); - TestUtils.validateResults(analysisResults, 8, 1); + const configOptions = new ConfigOptions('.'); + + configOptions.defaultPythonVersion = PythonVersion.V3_11; + const analysisResults1 = TestUtils.typeAnalyzeSampleFiles(['fstring1.py'], configOptions); + TestUtils.validateResults(analysisResults1, 14, 1); + + configOptions.defaultPythonVersion = PythonVersion.V3_12; + const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['fstring1.py'], configOptions); + TestUtils.validateResults(analysisResults2, 10, 1); }); test('FString2', () => { From b971a0c689d4b2be4b8f257cf88459d0e92d7cc6 Mon Sep 17 00:00:00 2001 From: Erik De Bonte Date: Fri, 19 May 2023 17:07:39 -0700 Subject: [PATCH 186/525] Add PEP 712 to features.md (#5143) --- docs/features.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/features.md b/docs/features.md index 8c9277e7b..a5373a889 100644 --- a/docs/features.md +++ b/docs/features.md @@ -30,10 +30,11 @@ Pyright supports [configuration files](configuration.md) that provide granular c * [PEP 675](https://www.python.org/dev/peps/pep-0675/) arbitrary literal strings * [PEP 681](https://www.python.org/dev/peps/pep-0681/) dataclass transform * [PEP 692](https://www.python.org/dev/peps/pep-0692/) TypedDict for kwargs typing -* [PEP 695](https://www.python.org/dev/peps/pep-0695/) Type parameter syntax -* [PEP 696](https://www.python.org/dev/peps/pep-0696/) (draft) Type defaults for TypeVarLikes -* [PEP 698](https://www.python.org/dev/peps/pep-0698/) Override decorator for static typing -* [PEP 702](https://www.python.org/dev/peps/pep-0702/) (draft) Marking deprecations +* [PEP 695](https://www.python.org/dev/peps/pep-0695/) type parameter syntax +* [PEP 696](https://www.python.org/dev/peps/pep-0696/) (draft) type defaults for TypeVarLikes +* [PEP 698](https://www.python.org/dev/peps/pep-0698/) override decorator for static typing +* [PEP 702](https://www.python.org/dev/peps/pep-0702/) (draft) marking deprecations +* [PEP 712](https://www.python.org/dev/peps/pep-0712/) (draft) converter parameter on dataclasses.field * Type inference for function return values, instance variables, class variables, and globals * Type guards that understand conditional code flow constructs like if/else statements From c2bf866d412de1387f48f7720116314631db1197 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 19 May 2023 17:31:27 -0700 Subject: [PATCH 187/525] Fixed style issue. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index c5de9b9b2..ff4e60b86 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11670,9 +11670,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const firstArg = argList[0]; if (firstArg.valueExpression && firstArg.valueExpression.nodeType === ParseNodeType.StringList) { - const typeAliasName = firstArg.valueExpression.strings - .map((s) => s.value) - .join(''); + const typeAliasName = firstArg.valueExpression.strings.map((s) => s.value).join(''); if (typeAliasName !== nameNode.value) { addError(Localizer.Diagnostic.typeAliasTypeNameMismatch(), firstArg.valueExpression); } From 0a85467eff2978fc7ea83814f9fc56b73c48cb4e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 19 May 2023 18:20:04 -0700 Subject: [PATCH 188/525] Implemented `ReadOnly` TypedDict fields to explore proposed PEP 705 variant. This is related to https://github.com/microsoft/pyright/issues/5118. (#5132) Co-authored-by: Eric Traut --- .../src/analyzer/patternMatching.ts | 1 + .../src/analyzer/typeEvaluator.ts | 54 ++++++-- .../src/analyzer/typeEvaluatorTypes.ts | 3 +- .../src/analyzer/typeGuards.ts | 1 + .../src/analyzer/typedDicts.ts | 93 ++++++++++++-- .../pyright-internal/src/analyzer/types.ts | 9 ++ .../src/localization/localize.ts | 10 ++ .../src/localization/package.nls.en-us.json | 5 + .../src/tests/samples/typedDictReadOnly1.py | 38 ++++++ .../src/tests/samples/typedDictReadOnly2.py | 115 ++++++++++++++++++ .../src/tests/typeEvaluator5.test.ts | 10 ++ .../stdlib/typing_extensions.pyi | 5 + 12 files changed, 324 insertions(+), 20 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/typedDictReadOnly1.py create mode 100644 packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index 00869f9f9..bf7ad0a98 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -491,6 +491,7 @@ function narrowTypeBasedOnMappingPattern( ); newNarrowedEntriesMap.set(keySubtype.literalValue as string, { valueType: valueEntry.valueType, + isReadOnly: valueEntry.isReadOnly, isRequired: false, isProvided: true, }); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index ff4e60b86..b1fa45e1a 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -6507,6 +6507,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let isIncomplete = baseTypeResult.isIncomplete; let isRequired = false; let isNotRequired = false; + let isReadOnly = false; const type = mapSubtypesExpandTypeVars( baseTypeResult.type, @@ -6675,6 +6676,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isNotRequired = true; } + if (result.isReadOnly) { + isReadOnly = true; + } + return result.type; } @@ -6725,7 +6730,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); } - return { type, isIncomplete, isRequired, isNotRequired }; + return { type, isIncomplete, isReadOnly, isRequired, isNotRequired }; } // Determines the effective variance of the type parameters for a generic @@ -13736,7 +13741,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return synthesizeTypeVarForSelfCls(enclosingClassTypeResult.classType, /* isClsParam */ true); } - function createRequiredType( + function createRequiredOrReadOnlyType( classType: ClassType, errorNode: ParseNode, typeArgs: TypeResultWithNode[] | undefined, @@ -13751,7 +13756,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (!typeArgs || typeArgs.length !== 1) { addError( - classType.details.name === 'Required' + classType.details.name === 'ReadOnly' + ? Localizer.Diagnostic.readOnlyArgCount() + : classType.details.name === 'Required' ? Localizer.Diagnostic.requiredArgCount() : Localizer.Diagnostic.notRequiredArgCount(), errorNode @@ -13782,12 +13789,25 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isUsageLegal = true; } + let isReadOnly = typeArgs[0].isReadOnly; let isRequired = typeArgs[0].isRequired; let isNotRequired = typeArgs[0].isNotRequired; - // Nested Required/NotRequired are not allowed. - if (typeArgs[0].isRequired || typeArgs[0].isNotRequired) { - isUsageLegal = false; + if (classType.details.name === 'ReadOnly') { + // Nested ReadOnly are not allowed. + if (typeArgs[0].isReadOnly) { + isUsageLegal = false; + } + + isReadOnly = true; + } else { + // Nested Required/NotRequired are not allowed. + if (typeArgs[0].isRequired || typeArgs[0].isNotRequired) { + isUsageLegal = false; + } + + isRequired = classType.details.name === 'Required'; + isNotRequired = classType.details.name === 'NotRequired'; } isRequired = classType.details.name === 'Required'; @@ -13795,7 +13815,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (!isUsageLegal) { addError( - classType.details.name === 'Required' + classType.details.name === 'ReadOnly' + ? Localizer.Diagnostic.readOnlyNotInTypedDict() + : classType.details.name === 'Required' ? Localizer.Diagnostic.requiredNotInTypedDict() : Localizer.Diagnostic.notRequiredNotInTypedDict(), errorNode @@ -13803,7 +13825,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type: ClassType.cloneForSpecialization(classType, [convertToInstance(typeArgType)], !!typeArgs) }; } - return { type: typeArgType, isRequired, isNotRequired }; + return { type: typeArgType, isReadOnly, isRequired, isNotRequired }; } function createUnpackType( @@ -13934,6 +13956,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type: TypeBase.cloneForAnnotated(typeArgs[0].type), + isReadOnly: typeArgs[0].isReadOnly, isRequired: typeArgs[0].isRequired, isNotRequired: typeArgs[0].isNotRequired, }; @@ -14341,6 +14364,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ['NoReturn', { alias: '', module: 'builtins' }], ['Never', { alias: '', module: 'builtins' }], ['LiteralString', { alias: '', module: 'builtins' }], + ['ReadOnly', { alias: '', module: 'builtins' }], ]); const aliasMapEntry = specialTypes.get(assignedName); @@ -15080,8 +15104,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } else { metaclassNode = arg.valueExpression; } - } else if (arg.name.value === 'total' && ClassType.isTypedDictClass(classType)) { - // The "total" parameter name applies only for TypedDict classes. + } else if ( + ClassType.isTypedDictClass(classType) && + (arg.name.value === 'total' || arg.name.value === 'readonly') + ) { + // The "total" and "readonly" parameters apply only for TypedDict classes. // PEP 589 specifies that the parameter must be either True or False. const constArgValue = evaluateStaticBoolExpression( arg.valueExpression, @@ -15095,6 +15122,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } else if (arg.name.value === 'total' && !constArgValue) { classType.details.flags |= ClassTypeFlags.CanOmitDictValues; + } else if (arg.name.value === 'readonly' && constArgValue) { + classType.details.flags |= ClassTypeFlags.DictValuesReadOnly; } } else { // Collect arguments that will be passed to the `__init_subclass__` @@ -18558,8 +18587,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case 'Required': - case 'NotRequired': { - return createRequiredType(classType, errorNode, typeArgs, flags); + case 'NotRequired': + case 'ReadOnly': { + return createRequiredOrReadOnlyType(classType, errorNode, typeArgs, flags); } case 'Self': { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 398c74b6b..03defb0ef 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -176,9 +176,10 @@ export interface TypeResult { // to __get__ and __set__ types? isAsymmetricDescriptor?: boolean; - // Is the type wrapped in a "Required" or "NotRequired" class? + // Is the type wrapped in a "Required", "NotRequired" or "ReadOnly" class? isRequired?: boolean; isNotRequired?: boolean; + isReadOnly?: boolean; // If a call expression, which overloads were used to satisfy it? overloadsUsedForCall?: FunctionType[]; diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 8325edb8c..70cacb58b 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -1815,6 +1815,7 @@ function narrowTypeForTypedDictKey( // Add the new entry. newNarrowedEntriesMap.set(literalKey.literalValue as string, { valueType: tdEntry.valueType, + isReadOnly: tdEntry.isReadOnly, isRequired: false, isProvided: true, }); diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index a5229a249..5dff09948 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -185,6 +185,8 @@ export function createTypedDictType( ); } else if (arg.name.value === 'total' && arg.valueExpression.constType === KeywordType.False) { classType.details.flags |= ClassTypeFlags.CanOmitDictValues; + } else if (arg.name.value === 'readonly' && arg.valueExpression.constType === KeywordType.True) { + classType.details.flags |= ClassTypeFlags.DictValuesReadOnly; } } else { evaluator.addError(Localizer.Diagnostic.typedDictExtraArgs(), arg.valueExpression || errorNode); @@ -293,6 +295,7 @@ export function synthesizeTypedDictClassMethods( const entries = getTypedDictMembersForClass(evaluator, classType); let allEntriesAreNotRequired = true; + let allEntriesAreReadOnly = true; entries.forEach((entry, name) => { FunctionType.addParameter(initOverride1, { category: ParameterCategory.Simple, @@ -313,6 +316,10 @@ export function synthesizeTypedDictClassMethods( if (entry.isRequired) { allEntriesAreNotRequired = false; } + + if (!entry.isReadOnly) { + allEntriesAreReadOnly = false; + } }); const symbolTable = classType.details.fields; @@ -500,11 +507,13 @@ export function synthesizeTypedDictClassMethods( } // Add a pop method if the entry is not required. - if (!entry.isRequired) { + if (!entry.isRequired && !entry.isReadOnly) { appendArray(popOverloads, createPopMethods(nameLiteralType, entry.valueType)); } - setDefaultOverloads.push(createSetDefaultMethod(nameLiteralType, entry.valueType)); + if (!entry.isReadOnly) { + setDefaultOverloads.push(createSetDefaultMethod(nameLiteralType, entry.valueType)); + } }); // If the class is marked "@final", we can assume that any other literal @@ -552,11 +561,16 @@ export function synthesizeTypedDictClassMethods( ); } - symbolTable.set('__delitem__', Symbol.createWithType(SymbolFlags.ClassMember, createDelItemMethod(strType))); + if (!allEntriesAreReadOnly) { + symbolTable.set( + '__delitem__', + Symbol.createWithType(SymbolFlags.ClassMember, createDelItemMethod(strType)) + ); + } // If the TypedDict is final and all of its entries are NotRequired, // add a "clear" and "popitem" method. - if (isClassFinal && allEntriesAreNotRequired) { + if (isClassFinal && allEntriesAreNotRequired && !allEntriesAreReadOnly) { const clearMethod = FunctionType.createSynthesizedInstance('clear'); FunctionType.addParameter(clearMethod, selfParam); clearMethod.details.declaredReturnType = NoneType.createInstance(); @@ -705,6 +719,7 @@ function getTypedDictMembersForClassRecursive( valueType = applySolvedTypeVars(valueType, typeVarContext); let isRequired = !ClassType.isCanOmitDictValues(classType); + let isReadOnly = ClassType.isDictValuesReadOnly(classType); if (isRequiredTypedDictVariable(evaluator, symbol)) { isRequired = true; @@ -712,15 +727,31 @@ function getTypedDictMembersForClassRecursive( isRequired = false; } + if (isReadOnlyTypedDictVariable(evaluator, symbol)) { + isReadOnly = true; + } + // If a base class already declares this field, verify that the // subclass isn't trying to change its type. That's expressly // forbidden in PEP 589. const existingEntry = keyMap.get(name); if (existingEntry) { - const isTypeCompatible = isTypeSame(existingEntry.valueType, valueType); + let isTypeCompatible: boolean; + const diag = new DiagnosticAddendum(); + + // If the field is read-only, the type is covariant. If it's not + // read-only, it's invariant. + if (existingEntry.isReadOnly) { + isTypeCompatible = evaluator.assignType( + existingEntry.valueType, + valueType, + diag.createAddendum() + ); + } else { + isTypeCompatible = isTypeSame(existingEntry.valueType, valueType); + } if (!isTypeCompatible) { - const diag = new DiagnosticAddendum(); diag.addMessage( Localizer.DiagnosticAddendum.typedDictFieldTypeRedefinition().format({ parentType: evaluator.printType(existingEntry.valueType), @@ -736,10 +767,24 @@ function getTypedDictMembersForClassRecursive( lastDecl.node ); } + + // Make sure that the derived class isn't marking a previously writable + // entry as read-only. + if (!existingEntry.isReadOnly && isReadOnly) { + evaluator.addDiagnostic( + AnalyzerNodeInfo.getFileInfo(lastDecl.node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typedDictFieldReadOnlyRedefinition().format({ + name, + }), + lastDecl.node + ); + } } keyMap.set(name, { valueType, + isReadOnly, isRequired, isProvided: false, }); @@ -772,7 +817,7 @@ export function assignTypedDictToTypedDict( ); typesAreConsistent = false; } else { - if (destEntry.isRequired !== srcEntry.isRequired) { + if (destEntry.isRequired !== srcEntry.isRequired && !destEntry.isReadOnly) { const message = destEntry.isRequired ? Localizer.DiagnosticAddendum.typedDictFieldRequired() : Localizer.DiagnosticAddendum.typedDictFieldNotRequired(); @@ -785,6 +830,16 @@ export function assignTypedDictToTypedDict( typesAreConsistent = false; } + if (!destEntry.isReadOnly && srcEntry.isReadOnly) { + diag?.createAddendum().addMessage( + Localizer.DiagnosticAddendum.typedDictFieldNotReadOnly().format({ + name, + type: evaluator.printType(destType), + }) + ); + typesAreConsistent = false; + } + const subDiag = diag?.createAddendum(); if ( !evaluator.assignType( @@ -895,6 +950,7 @@ export function assignToTypedDict( if (!symbolEntry.isRequired) { narrowedEntries.set(keyValue, { valueType: valueTypes[index].type, + isReadOnly: !!valueTypes[index].isReadOnly, isRequired: false, isProvided: true, }); @@ -993,6 +1049,13 @@ export function getTypeOfIndexedTypedDict( }) ); } + } else if (entry.isReadOnly && usage.method !== 'get') { + diag.addMessage( + Localizer.DiagnosticAddendum.keyReadOnly().format({ + name: entryName, + type: evaluator.printType(baseType), + }) + ); } if (usage.method === 'set') { @@ -1077,6 +1140,7 @@ export function narrowForKeyAssignment(classType: ClassType, key: string) { narrowedEntries.set(key, { isProvided: true, isRequired: false, + isReadOnly: tdEntry.isReadOnly, valueType: tdEntry.valueType, }); @@ -1112,3 +1176,18 @@ function isNotRequiredTypedDictVariable(evaluator: TypeEvaluator, symbol: Symbol return !!annotatedType.isNotRequired; }); } + +function isReadOnlyTypedDictVariable(evaluator: TypeEvaluator, symbol: Symbol) { + return symbol.getDeclarations().some((decl) => { + if (decl.type !== DeclarationType.Variable || !decl.typeAnnotationNode) { + return false; + } + + const annotatedType = evaluator.getTypeOfExpressionExpectingType(decl.typeAnnotationNode, { + allowFinal: true, + allowRequired: true, + }); + + return !!annotatedType.isReadOnly; + }); +} diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 51057d6c7..c1684f8f8 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -401,6 +401,7 @@ export interface DataClassEntry { export interface TypedDictEntry { valueType: Type; isRequired: boolean; + isReadOnly: boolean; isProvided: boolean; } @@ -438,6 +439,10 @@ export const enum ClassTypeFlags { // the dictionary values can be omitted. CanOmitDictValues = 1 << 8, + // Used in conjunction with TypedDictClass, indicates that + // the dictionary values are all readonly. + DictValuesReadOnly = 1 << 9, + // The class derives from a class that has the ABCMeta // metaclass. Such classes are allowed to contain // @abstractmethod decorators. @@ -921,6 +926,10 @@ export namespace ClassType { return !!(classType.details.flags & ClassTypeFlags.CanOmitDictValues); } + export function isDictValuesReadOnly(classType: ClassType) { + return !!(classType.details.flags & ClassTypeFlags.DictValuesReadOnly); + } + export function isEnumClass(classType: ClassType) { return !!(classType.details.flags & ClassTypeFlags.EnumClass); } diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 8ed2ca47a..f107de0af 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -751,6 +751,8 @@ export namespace Localizer { new ParameterizedString<{ directive: string }>(getRawString('Diagnostic.pyrightCommentUnknownDirective')); export const pyrightCommentUnknownDiagnosticRule = () => new ParameterizedString<{ rule: string }>(getRawString('Diagnostic.pyrightCommentUnknownDiagnosticRule')); + export const readOnlyArgCount = () => getRawString('Diagnostic.readOnlyArgCount'); + export const readOnlyNotInTypedDict = () => getRawString('Diagnostic.readOnlyNotInTypedDict'); export const recursiveDefinition = () => new ParameterizedString<{ name: string }>(getRawString('Diagnostic.recursiveDefinition')); export const relativeImportNotAllowed = () => getRawString('Diagnostic.relativeImportNotAllowed'); @@ -877,6 +879,8 @@ export namespace Localizer { export const typedDictEntryName = () => getRawString('Diagnostic.typedDictEntryName'); export const typedDictEntryUnique = () => getRawString('Diagnostic.typedDictEntryUnique'); export const typedDictExtraArgs = () => getRawString('Diagnostic.typedDictExtraArgs'); + export const typedDictFieldReadOnlyRedefinition = () => + new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typedDictFieldReadOnlyRedefinition')); export const typedDictFieldTypeRedefinition = () => new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typedDictFieldTypeRedefinition')); export const typedDictFirstArg = () => getRawString('Diagnostic.typedDictFirstArg'); @@ -1132,6 +1136,8 @@ export namespace Localizer { ); export const keyNotRequired = () => new ParameterizedString<{ name: string; type: string }>(getRawString('DiagnosticAddendum.keyNotRequired')); + export const keyReadOnly = () => + new ParameterizedString<{ name: string; type: string }>(getRawString('DiagnosticAddendum.keyReadOnly')); export const keyRequiredDeleted = () => new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.keyRequiredDeleted')); export const keyUndefined = () => @@ -1304,6 +1310,10 @@ export namespace Localizer { new ParameterizedString<{ name: string; type: string }>( getRawString('DiagnosticAddendum.typedDictFieldMissing') ); + export const typedDictFieldNotReadOnly = () => + new ParameterizedString<{ name: string; type: string }>( + getRawString('DiagnosticAddendum.typedDictFieldNotReadOnly') + ); export const typedDictFieldNotRequired = () => new ParameterizedString<{ name: string; type: string }>( getRawString('DiagnosticAddendum.typedDictFieldNotRequired') diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 8325dc5b5..0beb22196 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -365,6 +365,8 @@ "pyrightCommentUnknownDirective": "\"{directive}\" is an unknown directive for pyright comment; expected \"strict\" or \"basic\"", "pyrightCommentUnknownDiagnosticRule": "\"{rule}\" is an unknown diagnostic rule for pyright comment", "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\" is invalid value for pyright comment; expected true, false, error, warning, information, or none", + "readOnlyArgCount": "Expected a single type argument after \"ReadOnly\"", + "readOnlyNotInTypedDict": "\"ReadOnly\" is not allowed in this context", "relativeImportNotAllowed": "Relative imports cannot be used with \"import .a\" form; use \"from . import a\" instead", "recursiveDefinition": "Type of \"{name}\" could not be determined because it refers to itself", "requiredArgCount": "Expected a single type argument after \"Required\"", @@ -446,6 +448,7 @@ "typedDictEntryName": "Expected string literal for dictionary entry name", "typedDictEntryUnique": "Names within a dictionary must be unique", "typedDictExtraArgs": "Extra TypedDict arguments not supported", + "typedDictFieldReadOnlyRedefinition": "TypedDict field \"{name}\" cannot be redefined as read-only", "typedDictFieldTypeRedefinition": "Type of TypedDict field \"{name}\" cannot be redefined", "typedDictFirstArg": "Expected TypedDict class name as first argument", "typedDictSecondArgDict": "Expected dict or keyword parameter as second parameter", @@ -580,6 +583,7 @@ "dataClassFrozen": "\"{name}\" is frozen", "finalMethod": "Final method", "keyNotRequired": "\"{name}\" is not a required key in \"{type}\", so access may result in runtime exception", + "keyReadOnly": "\"{name}\" is a read-only key in \"{type}\"", "keyRequiredDeleted": "\"{name}\" is a required key and cannot be deleted", "keyUndefined": "\"{name}\" is not a defined key in \"{type}\"", "functionParamDefaultMissing": "Parameter \"{name}\" is missing default argument", @@ -666,6 +670,7 @@ "typeBound": "Type \"{sourceType}\" is incompatible with bound type \"{destType}\" for type variable \"{name}\"", "typeConstrainedTypeVar": "Type \"{type}\" is incompatible with constrained type variable \"{name}\"", "typedDictFieldMissing": "\"{name}\" is missing from \"{type}\"", + "typedDictFieldNotReadOnly": "\"{name}\" is not read-only in \"{type}\"", "typedDictFieldNotRequired": "\"{name}\" is not required in \"{type}\"", "typedDictFieldRequired": "\"{name}\" is required in \"{type}\"", "typedDictFieldTypeMismatch": "Type \"{type}\" is not assignable to field \"{name}\"", diff --git a/packages/pyright-internal/src/tests/samples/typedDictReadOnly1.py b/packages/pyright-internal/src/tests/samples/typedDictReadOnly1.py new file mode 100644 index 000000000..345decfb6 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typedDictReadOnly1.py @@ -0,0 +1,38 @@ +# This sample tests error conditions for TypedDict classes with +# read-only entries as introduced in PEP 705. + +from typing import NotRequired, Required, TypedDict +from typing_extensions import ReadOnly + + +class TD1(TypedDict): + a: ReadOnly[int] + b: Required[ReadOnly[str]] + c: ReadOnly[NotRequired[str]] + + # This should generate an error because nested ReadOnly are not allowed. + d: ReadOnly[ReadOnly[str]] + + +TD2 = TypedDict("TD2", {"a": ReadOnly[str]}, total=True, readonly=True) +TD3 = TypedDict("TD3", {"a": ReadOnly[str]}, readonly=False, total=True) + +# This should generate an error because readonly accepts only bool literals. +TD4 = TypedDict("TD4", {"a": ReadOnly[str]}, total=True, readonly=1) + +# This should generate an error because TypedDict doesn't accept additional parameters. +TD5 = TypedDict("TD5", {"a": ReadOnly[str]}, total=True, readonly=True, foo=1) + + +class F1(TypedDict): + a: Required[int] + + +class F2(F1, readonly=True): + # This should generate an error because it is redefined as read-only. + a: int + + +class F3(F1): + # This should generate an error because it is redefined as read-only. + a: ReadOnly[int] diff --git a/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py b/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py new file mode 100644 index 000000000..4b5b373a8 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py @@ -0,0 +1,115 @@ +# This sample tests various uses of ReadOnly fields in TypedDict classes +# as specified in PEP 705. + +from typing import ( + Generic, + Literal, + Mapping, + NotRequired, + Required, + TypeVar, + TypedDict, + Unpack, +) +from typing_extensions import ReadOnly + +_T = TypeVar("_T") + + +class TD1(TypedDict, Generic[_T]): + a: ReadOnly[int] + b: Required[str] + c: Required[ReadOnly[list[str]]] + d: ReadOnly[Required[dict[str, str]]] + e: ReadOnly[_T] + + +class TD2(TD1[_T]): + e: _T + f: ReadOnly[str] + + +td1: TD1[float] = {"a": 3, "b": "", "c": [], "d": {}, "e": 0.0} + +reveal_type(td1.get("a"), expected_text="int") +reveal_type(td1.get("b"), expected_text="str") +reveal_type(td1.get("c"), expected_text="list[str]") +reveal_type(td1.get("d"), expected_text="dict[str, str]") +reveal_type(td1.get("e"), expected_text="float") + +td2: TD2[float] = {"a": 3, "b": "", "c": [], "d": {}, "e": 0.0, "f": ""} + +x1: TD1[float] = td2 + + +class TD3(TypedDict, total=True): + a: str + + +class TD4(TypedDict, total=True): + a: ReadOnly[str] + + +td3: TD3 = {"a": ""} +td4: TD4 = {"a": ""} + +# This should generate an error. +td5 = td3 | td4 + +# This should generate an error. +td4["a"] = "" + +# This should generate an error. +x3_0: TD3 = td4 +x3_1: TD3 = td3 +x4_0: TD4 = td3 +x4_1: TD4 = td4 + + +def func1(**kwargs: Unpack[TD4]): + # This should generate an error. + kwargs["a"] = "" + + +m1: Mapping[str, object] = td3 +m2: Mapping[str, object] = td4 + + +class TD5(TypedDict): + a: ReadOnly[float | str] + b: ReadOnly[int] + + +class TD6(TD5): + a: int + + # This should generate an error because str is not + # a subtype of int. + b: ReadOnly[str] + + +class TD7(TD6): + # This should generate an error because Literal[3] is + # not the same type as int. + a: Literal[3] + + +class TD8(TypedDict): + a: NotRequired[ReadOnly[int]] + + +class TD9(TypedDict): + a: NotRequired[int] + + +class TD10(TypedDict): + a: int + + +td10: TD10 = {"a": 0} +n1: TD8 = td10 + +# This should generate an error because "a" is writable +# and required in TD10 but writable and not required in +# TD9, which means it can be deleted. +n2: TD9 = td10 diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 7c56d5798..ad7906049 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -286,3 +286,13 @@ test('TypeAliasType2', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAliasType2.py']); TestUtils.validateResults(analysisResults, 5); }); + +test('TypedDictReadOnly1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictReadOnly1.py']); + TestUtils.validateResults(analysisResults, 5); +}); + +test('TypedDictReadOnly2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictReadOnly2.py']); + TestUtils.validateResults(analysisResults, 7); +}); diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi index 57e252697..653274188 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi @@ -345,5 +345,10 @@ class TypeAliasType: __parameters__: tuple[Any, ...] | None __value__: Any + +# PEP 705 +ReadOnly: _SpecialForm + + # Proposed extension to PEP 647 StrictTypeGuard: _SpecialForm = ... From 25aaefe77f6facd8e2b9e41051ea1a5795759400 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 19 May 2023 23:58:46 -0700 Subject: [PATCH 189/525] Added special-case synthesis of the `update` method for a `TypedDict` class. For TypedDicts that include at least one read-only field, no updates are allowed. For TypedDicts that are writable, a "partial" type is synthesized that allows for any subset of keys (required or not required) to be passed to the `update` method. This addresses https://github.com/microsoft/pyright/discussions/5141. --- .../src/analyzer/typePrinter.ts | 7 ++ .../src/analyzer/typedDicts.ts | 65 ++++++++++++++++--- .../pyright-internal/src/analyzer/types.ts | 10 +++ .../src/tests/samples/typedDict23.py | 34 ++++++++++ .../src/tests/samples/typedDictReadOnly2.py | 8 +++ .../src/tests/typeEvaluator5.test.ts | 2 +- 6 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/typedDict23.py diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index 43aa10445..6035b44d6 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -953,6 +953,13 @@ function printObjectTypeForClassInternal( } } + // Wrap in a "Partial" for TypedDict that has been synthesized as partial. + if (type.isTypedDictPartial) { + if ((printTypeFlags & PrintTypeFlags.PythonSyntax) === 0) { + objName = `Partial[${objName}]`; + } + } + return objName; } diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index 5dff09948..dab664322 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -45,6 +45,7 @@ import { isInstantiableClass, isTypeSame, maxTypeRecursionCount, + NeverType, NoneType, OverloadedFunctionType, Type, @@ -464,6 +465,40 @@ export function synthesizeTypedDictClassMethods( return delItemOverload; } + function createUpdateMethod() { + const updateMethod = FunctionType.createSynthesizedInstance('update'); + FunctionType.addParameter(updateMethod, selfParam); + + let foundReadOnlyEntry = false; + entries.forEach((entry) => { + if (entry.isReadOnly) { + foundReadOnlyEntry = true; + } + }); + + // If at least one entry is read-only, don't allow updates. We need to override + // the update method provided by the _TypedDict base class, so we'll use + // a Never parameter to generate an error if someone attempts to call it + // in this case. + FunctionType.addParameter(updateMethod, { + category: ParameterCategory.Simple, + name: '__m', + hasDeclaredType: true, + type: foundReadOnlyEntry + ? NeverType.createNever() + : ClassType.cloneAsInstance(ClassType.cloneForPartialTypedDict(classType)), + }); + + FunctionType.addParameter(updateMethod, { + category: ParameterCategory.Simple, + name: '', + type: AnyType.create(), + }); + + updateMethod.details.declaredReturnType = NoneType.createInstance(); + return updateMethod; + } + const getOverloads: FunctionType[] = []; const popOverloads: FunctionType[] = []; const setDefaultOverloads: FunctionType[] = []; @@ -568,6 +603,8 @@ export function synthesizeTypedDictClassMethods( ); } + symbolTable.set('update', Symbol.createWithType(SymbolFlags.ClassMember, createUpdateMethod())); + // If the TypedDict is final and all of its entries are NotRequired, // add a "clear" and "popitem" method. if (isClassFinal && allEntriesAreNotRequired && !allEntriesAreReadOnly) { @@ -626,6 +663,13 @@ export function getTypedDictMembersForClass(evaluator: TypeEvaluator, classType: }); } + // If the class is "Partial", make all entries optional. + if (classType.isTypedDictPartial) { + entries.forEach((entry) => { + entry.isRequired = false; + }); + } + return entries; } @@ -803,21 +847,24 @@ export function assignTypedDictToTypedDict( recursionCount = 0 ) { let typesAreConsistent = true; + const isDestPartial = !!destType.isTypedDictPartial; const destEntries = getTypedDictMembersForClass(evaluator, destType); const srcEntries = getTypedDictMembersForClass(evaluator, srcType, /* allowNarrowed */ true); destEntries.forEach((destEntry, name) => { const srcEntry = srcEntries.get(name); if (!srcEntry) { - diag?.createAddendum().addMessage( - Localizer.DiagnosticAddendum.typedDictFieldMissing().format({ - name, - type: evaluator.printType(srcType), - }) - ); - typesAreConsistent = false; + if (!isDestPartial) { + diag?.createAddendum().addMessage( + Localizer.DiagnosticAddendum.typedDictFieldMissing().format({ + name, + type: evaluator.printType(srcType), + }) + ); + typesAreConsistent = false; + } } else { - if (destEntry.isRequired !== srcEntry.isRequired && !destEntry.isReadOnly) { + if (destEntry.isRequired !== srcEntry.isRequired && !destEntry.isReadOnly && !isDestPartial) { const message = destEntry.isRequired ? Localizer.DiagnosticAddendum.typedDictFieldRequired() : Localizer.DiagnosticAddendum.typedDictFieldNotRequired(); @@ -830,7 +877,7 @@ export function assignTypedDictToTypedDict( typesAreConsistent = false; } - if (!destEntry.isReadOnly && srcEntry.isReadOnly) { + if (!destEntry.isReadOnly && srcEntry.isReadOnly && !isDestPartial) { diag?.createAddendum().addMessage( Localizer.DiagnosticAddendum.typedDictFieldNotReadOnly().format({ name, diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index c1684f8f8..d30e83950 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -626,6 +626,10 @@ export interface ClassType extends TypeBase { // through the use of a guard expression. typedDictNarrowedEntries?: Map | undefined; + // Indicates that the typed dict class should be considered "partial", + // i.e. all of its entries are effectively NotRequired. + isTypedDictPartial?: boolean; + // Indicates whether the class is an asymmetric descriptor // or property - one where the __get__ and __set__ types differ. // If undefined, it hasn't been tested yet for asymmetry. @@ -735,6 +739,12 @@ export namespace ClassType { return newClassType; } + export function cloneForPartialTypedDict(classType: ClassType): ClassType { + const newClassType = TypeBase.cloneType(classType); + newClassType.isTypedDictPartial = true; + return newClassType; + } + export function cloneWithNewTypeParameters(classType: ClassType, typeParams: TypeVarType[]): ClassType { const newClassType = TypeBase.cloneType(classType); newClassType.details = { ...newClassType.details }; diff --git a/packages/pyright-internal/src/tests/samples/typedDict23.py b/packages/pyright-internal/src/tests/samples/typedDict23.py new file mode 100644 index 000000000..5cf04cd65 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typedDict23.py @@ -0,0 +1,34 @@ +# This sample tests the synthesized update method for TypedDict classes. + +from typing import NotRequired, Required, TypedDict + + +class TD1(TypedDict): + a: Required[int] + b: NotRequired[str] + + +class TD2(TD1): + c: Required[int] + + +td1: TD1 = {"a": 3} + +reveal_type(td1.update, expected_text="(__m: Partial[TD1], /) -> None") + +td1.update({}) +td1.update({"b": ""}) + +td2: TD2 = {"a": 0, "c": 3} + +reveal_type(td2.update, expected_text="(__m: Partial[TD2], /) -> None") + +td2.update(td1) + + +class TD3(TypedDict): + a: NotRequired[str] + + +td3: TD3 = {} +reveal_type(td3.update, expected_text="(__m: Partial[TD3], /) -> None") diff --git a/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py b/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py index 4b5b373a8..57f65ebac 100644 --- a/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py +++ b/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py @@ -53,6 +53,14 @@ class TD4(TypedDict, total=True): td3: TD3 = {"a": ""} td4: TD4 = {"a": ""} +reveal_type(td4.update, expected_text="(__m: Never, /) -> None") + +# This should generate an error. +td4.update({"a", ""}) + +# This should generate an error. +td4.update({}) + # This should generate an error. td5 = td3 | td4 diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index ad7906049..4d694f432 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -294,5 +294,5 @@ test('TypedDictReadOnly1', () => { test('TypedDictReadOnly2', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictReadOnly2.py']); - TestUtils.validateResults(analysisResults, 7); + TestUtils.validateResults(analysisResults, 9); }); From b29ba66e824cf01f99a3e8dd526647208657000b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 20 May 2023 00:29:13 -0700 Subject: [PATCH 190/525] Added minor optimization to previous commit. --- .../pyright-internal/src/analyzer/typedDicts.ts | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index dab664322..ca91acf00 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -297,6 +297,7 @@ export function synthesizeTypedDictClassMethods( const entries = getTypedDictMembersForClass(evaluator, classType); let allEntriesAreNotRequired = true; let allEntriesAreReadOnly = true; + let allEntriesAreWritable = true; entries.forEach((entry, name) => { FunctionType.addParameter(initOverride1, { category: ParameterCategory.Simple, @@ -318,7 +319,9 @@ export function synthesizeTypedDictClassMethods( allEntriesAreNotRequired = false; } - if (!entry.isReadOnly) { + if (entry.isReadOnly) { + allEntriesAreWritable = false; + } else { allEntriesAreReadOnly = false; } }); @@ -469,13 +472,6 @@ export function synthesizeTypedDictClassMethods( const updateMethod = FunctionType.createSynthesizedInstance('update'); FunctionType.addParameter(updateMethod, selfParam); - let foundReadOnlyEntry = false; - entries.forEach((entry) => { - if (entry.isReadOnly) { - foundReadOnlyEntry = true; - } - }); - // If at least one entry is read-only, don't allow updates. We need to override // the update method provided by the _TypedDict base class, so we'll use // a Never parameter to generate an error if someone attempts to call it @@ -484,7 +480,7 @@ export function synthesizeTypedDictClassMethods( category: ParameterCategory.Simple, name: '__m', hasDeclaredType: true, - type: foundReadOnlyEntry + type: !allEntriesAreWritable ? NeverType.createNever() : ClassType.cloneAsInstance(ClassType.cloneForPartialTypedDict(classType)), }); From 425d940452315cc1cac5b000145e647129f62316 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 20 May 2023 12:14:24 -0700 Subject: [PATCH 191/525] Added comment. No functional change. --- packages/pyright-internal/src/analyzer/dataClasses.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index 017b4b596..eee9014ea 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -87,6 +87,9 @@ export function synthesizeDataClassMethods( const newType = FunctionType.createSynthesizedInstance('__new__', FunctionTypeFlags.ConstructorMethod); const initType = FunctionType.createSynthesizedInstance('__init__'); + // Override `__new__` because some dataclasses (such as those that are + // created by subclassing from NamedTuple) may have their own custom + // __new__ that requires overriding. FunctionType.addParameter(newType, { category: ParameterCategory.Simple, name: 'cls', From ca6fdaf04e74dbb19adfcc16daeda8783a37c8d4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 20 May 2023 12:27:36 -0700 Subject: [PATCH 192/525] Changed protocol matching behavior for protocols that include a variable annotated as `ClassVar`. A class that defines this same variable as a "regular class variable" (one that is declared at the class level but can be overwritten on a per-instance basis) is now considered compatible with such a protocol. This addresses https://github.com/microsoft/pylance-release/issues/4389. --- .../src/analyzer/protocols.ts | 6 +++++- .../src/tests/samples/protocol4.py | 20 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index 60106c6a6..4b52903c3 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -430,7 +430,11 @@ function assignClassToProtocolInternal( } } - if (symbol.isClassVar() && !srcMemberInfo.symbol.isClassVar()) { + if ( + symbol.isClassVar() && + !srcMemberInfo.symbol.isClassVar() && + !srcMemberInfo.symbol.isClassMember() + ) { diag?.addMessage(Localizer.DiagnosticAddendum.protocolMemberClassVar().format({ name })); typesAreConsistent = false; } diff --git a/packages/pyright-internal/src/tests/samples/protocol4.py b/packages/pyright-internal/src/tests/samples/protocol4.py index 8032f224a..059ec9f7d 100644 --- a/packages/pyright-internal/src/tests/samples/protocol4.py +++ b/packages/pyright-internal/src/tests/samples/protocol4.py @@ -21,13 +21,27 @@ def cls_method(cls) -> None: # This should be an error cls.test2 = 3 + class ProtoB(Protocol): x: ClassVar[int] + class B: x: int -# This should generate an error because x is not a ClassVar in B. -a: ProtoB = B() - \ No newline at end of file +b: ProtoB = B() + + +class ProtoC(Protocol): + x: ClassVar[int] + + +class C: + def __init__(self): + self.x: int = 0 + + +# This should generate an error because x is an instance-only variable +# and doesn't satisfy the ClassVar annotation in the protocol. +c: ProtoC = C() From c8da3a3c931d05484ac12e3b8a8e7c2f17eb27af Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 20 May 2023 15:34:13 -0700 Subject: [PATCH 193/525] Changed type narrowing on assignment for member access expressions that involve an asymmetric `__getattr__` and `__setattr__` method. As with asymmetric descriptors, it is not safe in this case to assume that the written value will be the same as the read value. This addresses https://github.com/microsoft/pyright/issues/5121. --- .../src/analyzer/typeEvaluator.ts | 95 ++++++++++++++----- .../src/analyzer/typeEvaluatorTypes.ts | 8 +- .../pyright-internal/src/analyzer/types.ts | 4 + .../src/tests/samples/memberAccess19.py | 15 +++ 4 files changed, 94 insertions(+), 28 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index b1fa45e1a..8205573dc 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -345,9 +345,9 @@ interface MatchArgsToParamsResult { relevance: number; } -export interface DescriptorTypeResult { +export interface MemberAccessTypeResult { type: Type; - isAsymmetricDescriptor: boolean; + isAsymmetricAccessor: boolean; } interface ScopedTypeVarResult { @@ -533,7 +533,7 @@ interface TypeCacheEntry { export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions: EvaluatorOptions): TypeEvaluator { const symbolResolutionStack: SymbolResolutionStackEntry[] = []; - const asymmetricDescriptorAssignmentCache = new Set(); + const asymmetricAccessorAssignmentCache = new Set(); const speculativeTypeTracker = new SpeculativeTypeTracker(); const suppressedNodeStack: ParseNode[] = []; @@ -698,11 +698,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return; } - asymmetricDescriptorAssignmentCache.add(node.id); + asymmetricAccessorAssignmentCache.add(node.id); } - function isAsymmetricDescriptorAssignment(node: ParseNode) { - return asymmetricDescriptorAssignmentCache.has(node.id); + function isAsymmetricAccessorAssignment(node: ParseNode) { + return asymmetricAccessorAssignmentCache.has(node.id); } // Determines whether the specified node is contained within @@ -1884,7 +1884,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions type: memberInfo.type, classType: memberInfo.classType, isIncomplete: !!memberInfo.isTypeIncomplete, - isAsymmetricDescriptor: memberInfo.isAsymmetricDescriptor, + isAsymmetricAccessor: memberInfo.isAsymmetricAccessor, }; } return undefined; @@ -1974,7 +1974,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type: memberInfo.type, isIncomplete: !!memberInfo.isTypeIncomplete, - isAsymmetricDescriptor: memberInfo.isAsymmetricDescriptor, + isAsymmetricAccessor: memberInfo.isAsymmetricAccessor, }; } @@ -3175,7 +3175,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions EvaluatorFlags.None ); - if (setTypeResult.isAsymmetricDescriptor) { + if (setTypeResult.isAsymmetricAccessor) { setAsymmetricDescriptorAssignment(target); } @@ -4883,7 +4883,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const fileInfo = AnalyzerNodeInfo.getFileInfo(node); let type: Type | undefined; let isIncomplete = !!baseTypeResult.isIncomplete; - let isAsymmetricDescriptor: boolean | undefined; + let isAsymmetricAccessor: boolean | undefined; const isRequired = false; const isNotRequired = false; @@ -5010,8 +5010,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isIncomplete = true; } - if (typeResult?.isAsymmetricDescriptor) { - isAsymmetricDescriptor = true; + if (typeResult?.isAsymmetricAccessor) { + isAsymmetricAccessor = true; } } else { // Handle the special case of 'name' and 'value' members within an enum. @@ -5044,8 +5044,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isIncomplete = true; } - if (typeResult?.isAsymmetricDescriptor) { - isAsymmetricDescriptor = true; + if (typeResult?.isAsymmetricAccessor) { + isAsymmetricAccessor = true; } } break; @@ -5304,7 +5304,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - return { type, isIncomplete, isAsymmetricDescriptor, isRequired, isNotRequired }; + return { type, isIncomplete, isAsymmetricAccessor, isRequired, isNotRequired }; } function getTypeOfClassMemberName( @@ -5490,7 +5490,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isClassMember: !memberInfo.isInstanceMember, isClassVar: memberInfo.isClassVar, classType: memberInfo.classType, - isAsymmetricDescriptor: descriptorResult.isAsymmetricDescriptor, + isAsymmetricAccessor: descriptorResult.isAsymmetricAccessor, }; } @@ -5505,11 +5505,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (generalAttrType) { return { symbol: undefined, - type: generalAttrType, + type: generalAttrType.type, isTypeIncomplete: false, isClassMember: false, isClassVar: false, - isAsymmetricDescriptor: false, + isAsymmetricAccessor: generalAttrType.isAsymmetricAccessor, }; } } @@ -5533,10 +5533,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions memberName: string, usage: EvaluatorUsage, diag: DiagnosticAddendum | undefined - ): DescriptorTypeResult | undefined { + ): MemberAccessTypeResult | undefined { const treatConstructorAsClassMember = (flags & MemberAccessFlags.TreatConstructorAsClassMethod) !== 0; let isTypeValid = true; - let isAsymmetricDescriptor = false; + let isAsymmetricAccessor = false; type = mapSubtypes(type, (subtype) => { const concreteSubtype = makeTopLevelTypeVarsConcrete(subtype); @@ -5779,7 +5779,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Determine if we're calling __set__ on an asymmetric descriptor or property. if (usage.method === 'set' && isClass(accessMethod.classType)) { if (isAsymmetricDescriptorClass(accessMethod.classType)) { - isAsymmetricDescriptor = true; + isAsymmetricAccessor = true; } } @@ -5910,7 +5910,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return undefined; } - return { type, isAsymmetricDescriptor }; + return { type, isAsymmetricAccessor }; } function isAsymmetricDescriptorClass(classType: ClassType): boolean { @@ -5950,13 +5950,50 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return isAsymmetric; } + function isClassWithAsymmetricAttributeAccessor(classType: ClassType): boolean { + // If the value has already been cached in this type, return the cached value. + if (classType.isAsymmetricAttributeAccessor !== undefined) { + return classType.isAsymmetricAttributeAccessor; + } + + let isAsymmetric = false; + + const getterSymbolResult = lookUpClassMember(classType, '__getattr__', ClassMemberLookupFlags.SkipBaseClasses); + const setterSymbolResult = lookUpClassMember(classType, '__setattr__', ClassMemberLookupFlags.SkipBaseClasses); + + if (!getterSymbolResult || !setterSymbolResult) { + isAsymmetric = false; + } else { + const getterType = getEffectiveTypeOfSymbol(getterSymbolResult.symbol); + const setterType = getEffectiveTypeOfSymbol(setterSymbolResult.symbol); + + // If either the setter or getter is an overload (or some other non-function type), + // conservatively assume that it's not asymmetric. + if (isFunction(getterType) && isFunction(setterType)) { + // If there's no declared return type on the getter, assume it's symmetric. + if (setterType.details.parameters.length >= 3 && getterType.details.declaredReturnType) { + const setterValueType = FunctionType.getEffectiveParameterType(setterType, 2); + const getterReturnType = FunctionType.getSpecializedReturnType(getterType) ?? UnknownType.create(); + + if (!isTypeSame(setterValueType, getterReturnType)) { + isAsymmetric = true; + } + } + } + } + + // Cache the value for next time. + classType.isAsymmetricAttributeAccessor = isAsymmetric; + return isAsymmetric; + } + // Applies the __getattr__, __setattr__ or __delattr__ method if present. function applyAttributeAccessOverride( classType: ClassType, errorNode: ExpressionNode, usage: EvaluatorUsage, memberName: string - ): Type | undefined { + ): MemberAccessTypeResult | undefined { const getAttributeAccessMember = (name: string) => { // See if the class has a "__getattribute__" or "__getattr__" method. // If so, arbitrary members are supported. @@ -6023,7 +6060,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions /* skipUnknownArgCheck */ true ); - return callResult.returnType ?? UnknownType.create(); + let isAsymmetricAccessor = false; + if (usage.method === 'set') { + isAsymmetricAccessor = isClassWithAsymmetricAttributeAccessor(classType); + } + + return { + type: callResult.returnType ?? UnknownType.create(), + isAsymmetricAccessor, + }; } } } @@ -25045,7 +25090,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions validateOverloadedFunctionArguments, isAfterNodeReachable, isNodeReachable, - isAsymmetricDescriptorAssignment, + isAsymmetricDescriptorAssignment: isAsymmetricAccessorAssignment, suppressDiagnostics, getDeclarationsForStringNode, getDeclarationsForNameNode, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 03defb0ef..92e0b8496 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -173,8 +173,10 @@ export interface TypeResult { expectedTypeDiagAddendum?: DiagnosticAddendum | undefined; // Is member a descriptor object that is asymmetric with respect - // to __get__ and __set__ types? - isAsymmetricDescriptor?: boolean; + // to __get__ and __set__ types? Or is the member accessed through + // a __setattr__ method that is asymmetric with respect to the + // corresponding __getattr__? + isAsymmetricAccessor?: boolean; // Is the type wrapped in a "Required", "NotRequired" or "ReadOnly" class? isRequired?: boolean; @@ -360,7 +362,7 @@ export interface ClassMemberLookup { // Is member a descriptor object that is asymmetric with respect // to __get__ and __set__ types? - isAsymmetricDescriptor: boolean; + isAsymmetricAccessor: boolean; } export interface PrintTypeOptions { diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index d30e83950..53415d7f8 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -634,6 +634,10 @@ export interface ClassType extends TypeBase { // or property - one where the __get__ and __set__ types differ. // If undefined, it hasn't been tested yet for asymmetry. isAsymmetricDescriptor?: boolean; + + // Indicates whether the class has an asymmetric __getattr__ and + // __setattr__ signature. + isAsymmetricAttributeAccessor?: boolean; } export namespace ClassType { diff --git a/packages/pyright-internal/src/tests/samples/memberAccess19.py b/packages/pyright-internal/src/tests/samples/memberAccess19.py index 123401b7c..fbf6bd339 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess19.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess19.py @@ -78,3 +78,18 @@ def __delattr__(self, key: str): del a.g del a.h + + +# Test asymmetric __getattr__ and __setattr__ methods. We should not +# narrow the type on assignment in this case. +class B: + def __setattr__(self, __name: str, __value: Any) -> None: + pass + + def __getattr__(self, __attr: str) -> int: + return 10 + + +a = B() +a.test = "anything" +reveal_type(a.test, expected_text="int") From 7cdcef144de17ac5b57dd81865fb9638ec64f504 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 21 May 2023 12:24:48 -0700 Subject: [PATCH 194/525] Fixed a bug that led to a false positive error in certain circumstances with nested call expressions where the expected type of the parameter was a union. This addresses https://github.com/microsoft/pyright/issues/5065. --- .../src/analyzer/typeEvaluator.ts | 69 ++++++++++++++----- .../src/analyzer/typeUtils.ts | 6 +- .../src/tests/samples/genericTypes29.py | 31 +++++++-- .../src/tests/samples/genericTypes71.py | 24 ++++++- 4 files changed, 104 insertions(+), 26 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 8205573dc..33d294da4 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10262,6 +10262,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ): CallResult { const type = matchResults.overload; + // Can we safely ignore the inference context (either because it's not provided + // or will have no effect)? If so, we can eliminate a bunch of extra work. if ( !inferenceContext || isAnyOrUnknown(inferenceContext.expectedType) || @@ -10308,6 +10310,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (effectiveExpectedType) { + const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); + // Prepopulate the typeVarContext based on the specialized expected type if the // callee has a declared return type. This will allow us to more closely match // the expected type if possible. @@ -10335,7 +10339,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions effectiveReturnType, effectiveExpectedType, tempTypeVarContext, - ParseTreeUtils.getTypeVarScopesForNode(errorNode) + liveTypeVarScopes ); const genericReturnType = ClassType.cloneForSpecialization( @@ -10356,6 +10360,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + effectiveExpectedType = transformExpectedType(effectiveExpectedType, liveTypeVarScopes); + assignType( effectiveReturnType, effectiveExpectedType, @@ -10484,9 +10490,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isTypeIncomplete = true; } - // If we skipped a overload arg during the first pass, - // add another pass to ensure that we handle all of the - // type variables. + // If we skipped an overload arg or a bare type var during the first pass, + // add another pass to ensure that we handle all of the type variables. if (i === 0 && (argResult.skippedOverloadArg || argResult.skippedBareTypeVarExpectedType)) { passCount++; } @@ -10494,8 +10499,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); } - // Lock the type var map so it cannot be modified and revalidate the - // arguments in a second pass. + // Lock the type var map so it cannot be modified when revalidating + // the arguments in a second pass. typeVarContext.lock(); } @@ -10620,23 +10625,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions eliminateUnsolvedInUnions = false; } - // In general, we want to replace in-scope TypeVars with Unknown - // if they were not solved. However, if the return type is a - // Callable, we'll leave the TypeVars unsolved because - // the call below to adjustCallableReturnType will "detach" these - // TypeVars from the scope of this function and "attach" them to - // the scope of the callable. - let unknownIfNotFound = !isFunction(returnType); - - // We'll also leave TypeVars unsolved if the call is a recursive + // We'll leave TypeVars unsolved if the call is a recursive // call to a generic function. - const typeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); - if (typeVarScopes.some((typeVarScope) => typeVarContext.hasSolveForScope(typeVarScope))) { - unknownIfNotFound = false; - } + const unknownIfNotFound = !ParseTreeUtils.getTypeVarScopesForNode(errorNode).some((typeVarScope) => + typeVarContext.hasSolveForScope(typeVarScope) + ); let specializedReturnType = applySolvedTypeVars(returnType, typeVarContext, { unknownIfNotFound, + unknownExemptTypeVars: getUnknownExemptTypeVarsForReturnType(type, returnType), useUnknownOverDefault: skipUnknownArgCheck, eliminateUnsolvedInUnions, applyInScopePlaceholders: true, @@ -10707,6 +10704,40 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }; } + // In general, all in-scope type variables left in a return type should be + // replaced with Unknown. However, if the return type is a callable that uses + // type vars that are found nowhere within the function's input parameters, + // we'll treat these as though they're scoped to the callable and leave them + // unsolved. + function getUnknownExemptTypeVarsForReturnType(functionType: FunctionType, returnType: Type): TypeVarType[] { + if (isFunction(returnType) && !returnType.details.name) { + const returnTypeScopeId = returnType.details.typeVarScopeId; + + // If one or more type vars found within the return type are scoped to + // the functionType but don't appear anywhere else within the functionType's + // input parameters, rescope them to the return type callable so they are + // not replaced with Unknown. + if (returnTypeScopeId && functionType.details.typeVarScopeId) { + let typeVarsInReturnType = getTypeVarArgumentsRecursive(returnType); + + // Remove any type variables that appear in the function's input parameters. + functionType.details.parameters.forEach((param, index) => { + if (param.hasDeclaredType) { + const typeVarsInInputParam = getTypeVarArgumentsRecursive(param.type); + typeVarsInReturnType = typeVarsInReturnType.filter( + (returnTypeVar) => + !typeVarsInInputParam.some((inputTypeVar) => isTypeSame(returnTypeVar, inputTypeVar)) + ); + } + }); + + return typeVarsInReturnType; + } + } + + return []; + } + function adjustCallableReturnType(returnType: Type): Type { // If the return type includes a generic Callable type, set the type var // scope to a wildcard to allow these type vars to be solved. This won't diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 1f830615d..7176ce484 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -192,6 +192,7 @@ export const enum AssignTypeFlags { export interface ApplyTypeVarOptions { unknownIfNotFound?: boolean; + unknownExemptTypeVars?: TypeVarType[]; useUnknownOverDefault?: boolean; useNarrowBoundOnly?: boolean; eliminateUnsolvedInUnions?: boolean; @@ -3630,7 +3631,10 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { // default or Unknown. let useDefaultOrUnknown = false; if (this._options.unknownIfNotFound && !this._typeVarContext.hasSolveForScope(WildcardTypeVarScopeId)) { - useDefaultOrUnknown = true; + const exemptTypeVars = this._options.unknownExemptTypeVars ?? []; + if (!exemptTypeVars.some((t) => isTypeSame(t, typeVar))) { + useDefaultOrUnknown = true; + } } else if (this._options.applyInScopePlaceholders && typeVar.isInScopePlaceholder) { useDefaultOrUnknown = true; } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes29.py b/packages/pyright-internal/src/tests/samples/genericTypes29.py index 01c5795d3..3fe888080 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes29.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes29.py @@ -1,8 +1,7 @@ -# This sample tests bidirectional inference when the -# type derives from the expected type and both are -# generic. +# This sample tests bidirectional inference when the type derives from the +# expected type and both are generic. -from typing import Iterable, Mapping, Optional, TypeVar, Union +from typing import Generic, Iterable, Mapping, Optional, TypeVar, Union v0: Optional[Mapping[str, Union[int, str]]] = dict([("test1", 1), ("test2", 2)]) @@ -18,3 +17,27 @@ keys = channel_types.keys() options.update(dict.fromkeys(keys, 1)) + + +_KT = TypeVar("_KT") +_VT = TypeVar("_VT") +_S = TypeVar("_S") +_T = TypeVar("_T") +_X = TypeVar("_X") + + +class A(Generic[_KT, _VT]): + @classmethod + def method1(cls, i: Iterable[_T], v: _S) -> "A[_T, _S]": + ... + + +def func1(__x: A[int, _X] | A[str, _X] | A[str | int, _X]) -> A[int, _X]: + ... + + +v3 = func1(A.method1("a", "b")) +reveal_type(v3, expected_text="A[int, str]") + +v4 = str.maketrans(dict.fromkeys("a", "b")) +reveal_type(v4, expected_text="dict[int, str]") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes71.py b/packages/pyright-internal/src/tests/samples/genericTypes71.py index 13a51f2e6..d1209a75f 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes71.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes71.py @@ -1,7 +1,7 @@ # This sample tests the case where a generic class uses a default argument # for a generic type parameter in its constructor. -from typing import Generic, List, TypeVar +from typing import Callable, Generic, List, TypeVar T = TypeVar("T") @@ -67,6 +67,26 @@ def method2(self): Container[U].create() -def default_if_empty(obv: Container[T], default_value: T = None) -> None: +def func1(obv: Container[T], default_value: T = None) -> None: # This should generate an error. obv.on_next(default_value) + + +class A: + ... + + +T = TypeVar("T") +T_A = TypeVar("T_A", bound=A) + + +class B(Generic[T]): + def __init__(self, c: Callable[[], T]): + ... + + +def func2(cls: type[T_A] = A) -> Callable[[], T_A]: + ... + + +B(func2()) From 0998a3a7a4b18891756ccf1427aa8bb1c5f8a42c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 21 May 2023 12:46:10 -0700 Subject: [PATCH 195/525] Changed the behavior when a parameter whose type is a "naked" TypeVar has a default argument value. Mypy doesn't allow this case. Pyright allows it but previously modified the parameter type to be a union of the TypeVar and the type of the default argument. This behavior closed some type validation holes, but it created other problems and was very unintuitive for users. See https://github.com/microsoft/pyright/issues/3130. See https://github.com/microsoft/pyright/issues/2507 for a discussion that led to this original change. This change reverses this behavior. It potentially allows for some unsafe "creative" uses that will go unreported. --- .../src/analyzer/typeEvaluator.ts | 16 +--------------- .../src/tests/samples/genericTypes71.py | 1 - .../src/tests/typeEvaluator2.test.ts | 2 +- 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 33d294da4..e5aa1e263 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -16611,21 +16611,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions !isOptionalType(type) && !AnalyzerNodeInfo.getFileInfo(param).diagnosticRuleSet.strictParameterNoneValue ) { - type = combineTypes([type, NoneType.createInstance()]); - } else if (isTypeVar(type) && param.defaultValue && type.scopeType === TypeVarScopeType.Function) { - // Handle the case where a default argument type is provided when the - // parameter is annotated with a "raw" function-scoped type variable, as in: - // "def foo(value: T = 3)" - // In this case, we need to include the default value type in a union. - const defaultArgType = getTypeOfExpression( - param.defaultValue, - EvaluatorFlags.ConvertEllipsisToAny, - makeInferenceContext(type) - ).type; - - if (!isAny(defaultArgType)) { - type = combineTypes([type, defaultArgType]); - } + return combineTypes([type, NoneType.createInstance()]); } return type; diff --git a/packages/pyright-internal/src/tests/samples/genericTypes71.py b/packages/pyright-internal/src/tests/samples/genericTypes71.py index d1209a75f..3f0a0682b 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes71.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes71.py @@ -68,7 +68,6 @@ def method2(self): def func1(obv: Container[T], default_value: T = None) -> None: - # This should generate an error. obv.on_next(default_value) diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 6c6e134eb..9776f6bbc 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -848,7 +848,7 @@ test('GenericTypes71', () => { configOptions.diagnosticRuleSet.strictParameterNoneValue = true; analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes71.py'], configOptions); - TestUtils.validateResults(analysisResults, 5); + TestUtils.validateResults(analysisResults, 4); }); test('GenericTypes72', () => { From ec36e38ff7a9e2a1593678dc93cffb1e4ed6977a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 21 May 2023 13:46:03 -0700 Subject: [PATCH 196/525] Fixed recent regression that caused `useLibraryCodeForTypes` setting not to be applied if it was specified in the language server settings (as opposed to the config file). --- packages/pyright-internal/src/analyzer/service.ts | 8 ++++++++ .../pyright-internal/src/common/commandLineOptions.ts | 4 ++++ .../src/languageService/analyzerServiceExecutor.ts | 1 + 3 files changed, 13 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 3efbd119d..07f5c59fb 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -725,6 +725,14 @@ export class AnalyzerService { configOptions.logTypeEvaluationTime = !!commandLineOptions.logTypeEvaluationTime; configOptions.typeEvaluationTimeThreshold = commandLineOptions.typeEvaluationTimeThreshold; + // If useLibraryCodeForTypes was not specified in the config, allow the settings + // or command line to override it. + if (configOptions.useLibraryCodeForTypes === undefined) { + configOptions.useLibraryCodeForTypes = commandLineOptions.useLibraryCodeForTypes; + } else if (commandLineOptions.useLibraryCodeForTypes !== undefined) { + reportDuplicateSetting('useLibraryCodeForTypes', configOptions.useLibraryCodeForTypes); + } + // If useLibraryCodeForTypes is unspecified, default it to true. if (configOptions.useLibraryCodeForTypes === undefined) { configOptions.useLibraryCodeForTypes = true; diff --git a/packages/pyright-internal/src/common/commandLineOptions.ts b/packages/pyright-internal/src/common/commandLineOptions.ts index f67614438..82c01c447 100644 --- a/packages/pyright-internal/src/common/commandLineOptions.ts +++ b/packages/pyright-internal/src/common/commandLineOptions.ts @@ -89,6 +89,10 @@ export class CommandLineOptions { // Emit verbose information to console? verboseOutput?: boolean | undefined; + // In the absence of type stubs, use library implementations + // to extract type information? + useLibraryCodeForTypes?: boolean | undefined; + // Indicates that only open files should be checked. checkOnlyOpenFiles?: boolean | undefined; diff --git a/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts b/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts index 9dfdd823c..408b37c44 100644 --- a/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts +++ b/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts @@ -97,6 +97,7 @@ function getEffectiveCommandLineOptions( ) { const commandLineOptions = new CommandLineOptions(workspaceRootPath, true); commandLineOptions.checkOnlyOpenFiles = serverSettings.openFilesOnly; + commandLineOptions.useLibraryCodeForTypes = serverSettings.useLibraryCodeForTypes; commandLineOptions.typeCheckingMode = serverSettings.typeCheckingMode; commandLineOptions.autoImportCompletions = serverSettings.autoImportCompletions; commandLineOptions.indexing = serverSettings.indexing; From adb0e577caacbb98097b41dc7fd7815be8d2c43c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 21 May 2023 19:01:35 -0700 Subject: [PATCH 197/525] Updated typeshed stubs to the latest version. --- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/_ctypes.pyi | 18 +- .../stdlib/asyncio/__init__.pyi | 13 + .../stdlib/asyncio/base_events.pyi | 17 +- .../stdlib/asyncio/events.pyi | 22 +- .../stdlib/asyncio/sslproto.pyi | 5 +- .../stdlib/asyncio/taskgroups.pyi | 8 +- .../stdlib/asyncio/tasks.pyi | 26 +- .../stdlib/logging/handlers.pyi | 17 +- .../stubs/Flask-Cors/METADATA.toml | 1 + .../stubs/Flask-Migrate/METADATA.toml | 1 + .../stubs/Flask-SQLAlchemy/METADATA.toml | 1 + .../stubs/Markdown/METADATA.toml | 1 + .../stubs/Pillow/METADATA.toml | 4 +- .../stubs/Pillow/PIL/BlpImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/BmpImagePlugin.pyi | 13 +- .../stubs/Pillow/PIL/DdsImagePlugin.pyi | 96 +- .../stubs/Pillow/PIL/EpsImagePlugin.pyi | 6 +- .../stubs/Pillow/PIL/FitsImagePlugin.pyi | 7 + .../stubs/Pillow/PIL/GifImagePlugin.pyi | 8 + .../stubs/Pillow/PIL/IcnsImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/Image.pyi | 17 + .../stubs/Pillow/PIL/ImageCms.pyi | 9 +- .../stubs/Pillow/PIL/ImageDraw.pyi | 8 + .../stubs/Pillow/PIL/ImageDraw2.pyi | 2 + .../stubs/Pillow/PIL/ImageFile.pyi | 19 + .../stubs/Pillow/PIL/ImageFont.pyi | 8 + .../stubs/Pillow/PIL/ImageGrab.pyi | 38 +- .../stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi | 12 + .../stubs/Pillow/PIL/PcxImagePlugin.pyi | 2 - .../stubs/Pillow/PIL/PngImagePlugin.pyi | 2 +- .../stubs/Pillow/PIL/PpmImagePlugin.pyi | 8 +- .../stubs/Pillow/PIL/PyAccess.pyi | 2 - .../stubs/Pillow/PIL/QoiImagePlugin.pyi | 11 + .../stubs/Pillow/PIL/TiffImagePlugin.pyi | 105 +- .../stubs/Pillow/PIL/TiffTags.pyi | 36 +- .../stubs/Pillow/PIL/_binary.pyi | 1 + .../stubs/Pillow/PIL/_util.pyi | 0 .../stubs/PyMySQL/METADATA.toml | 1 + .../stubs/Pygments/METADATA.toml | 1 + .../stubs/Send2Trash/METADATA.toml | 1 + .../stubs/aws-xray-sdk/METADATA.toml | 1 + .../stubs/babel/METADATA.toml | 1 + .../stubs/beautifulsoup4/METADATA.toml | 1 + .../stubs/bleach/METADATA.toml | 1 + .../stubs/boto/METADATA.toml | 1 + .../stubs/braintree/METADATA.toml | 1 + .../stubs/caldav/METADATA.toml | 1 + .../stubs/chardet/METADATA.toml | 1 + .../stubs/commonmark/METADATA.toml | 1 + .../stubs/docutils/METADATA.toml | 3 +- .../stubs/docutils/docutils/nodes.pyi | 2 +- .../docutils/docutils/utils/__init__.pyi | 2 +- .../stubs/emoji/METADATA.toml | 2 - .../stubs/emoji/emoji/__init__.pyi | 30 - .../stubs/emoji/emoji/core.pyi | 31 - .../emoji/emoji/unicode_codes/__init__.pyi | 6 - .../emoji/emoji/unicode_codes/data_dict.pyi | 6 - .../stubs/flake8-2020/METADATA.toml | 2 +- .../stubs/flake8-bugbear/METADATA.toml | 3 +- .../stubs/flake8-builtins/METADATA.toml | 1 + .../stubs/flake8-docstrings/METADATA.toml | 1 + .../stubs/flake8-plugin-utils/METADATA.toml | 1 + .../stubs/flake8-rst-docstrings/METADATA.toml | 1 + .../stubs/flake8-simplify/METADATA.toml | 1 + .../stubs/flake8-typing-imports/METADATA.toml | 1 + .../stubs/fpdf2/fpdf/fpdf.pyi | 4 +- .../stubs/google-cloud-ndb/METADATA.toml | 1 + .../stubs/html5lib/METADATA.toml | 1 + .../stubs/invoke/METADATA.toml | 2 + .../stubs/jsonschema/METADATA.toml | 1 + .../stubs/ldap3/METADATA.toml | 1 + .../stubs/oauthlib/METADATA.toml | 1 + .../stubs/openpyxl/METADATA.toml | 1 + .../openpyxl/openpyxl/cell/rich_text.pyi | 9 +- .../stubs/openpyxl/openpyxl/cell/text.pyi | 53 +- .../stubs/openpyxl/openpyxl/chart/_3d.pyi | 54 +- .../stubs/openpyxl/openpyxl/chart/_chart.pyi | 36 +- .../openpyxl/openpyxl/chart/area_chart.pyi | 39 +- .../stubs/openpyxl/openpyxl/chart/axis.pyi | 115 +- .../openpyxl/openpyxl/chart/bar_chart.pyi | 49 +- .../openpyxl/openpyxl/chart/bubble_chart.pyi | 25 +- .../openpyxl/openpyxl/chart/chartspace.pyi | 103 +- .../openpyxl/openpyxl/chart/data_source.pyi | 120 +- .../openpyxl/openpyxl/chart/descriptors.pyi | 21 +- .../openpyxl/openpyxl/chart/error_bar.pyi | 34 +- .../stubs/openpyxl/openpyxl/chart/label.pyi | 32 +- .../stubs/openpyxl/openpyxl/chart/layout.pyi | 24 +- .../stubs/openpyxl/openpyxl/chart/legend.pyi | 43 +- .../openpyxl/openpyxl/chart/line_chart.pyi | 58 +- .../stubs/openpyxl/openpyxl/chart/marker.pyi | 40 +- .../stubs/openpyxl/openpyxl/chart/picture.pyi | 3 +- .../openpyxl/openpyxl/chart/pie_chart.pyi | 52 +- .../stubs/openpyxl/openpyxl/chart/pivot.pyi | 46 +- .../openpyxl/openpyxl/chart/plotarea.pyi | 45 +- .../openpyxl/chart/print_settings.pyi | 47 +- .../openpyxl/openpyxl/chart/radar_chart.pyi | 27 +- .../openpyxl/openpyxl/chart/reference.pyi | 41 +- .../openpyxl/openpyxl/chart/scatter_chart.pyi | 25 +- .../stubs/openpyxl/openpyxl/chart/series.pyi | 85 +- .../stubs/openpyxl/openpyxl/chart/shapes.pyi | 58 +- .../openpyxl/openpyxl/chart/stock_chart.pyi | 38 +- .../openpyxl/openpyxl/chart/surface_chart.pyi | 36 +- .../stubs/openpyxl/openpyxl/chart/text.pyi | 25 +- .../stubs/openpyxl/openpyxl/chart/title.pyi | 47 +- .../openpyxl/openpyxl/chart/trendline.pyi | 60 +- .../openpyxl/openpyxl/chart/updown_bars.pyi | 21 +- .../openpyxl/chartsheet/chartsheet.pyi | 75 +- .../openpyxl/openpyxl/chartsheet/custom.pyi | 48 +- .../openpyxl/chartsheet/properties.pyi | 15 +- .../openpyxl/chartsheet/protection.pyi | 21 +- .../openpyxl/openpyxl/chartsheet/publish.pyi | 59 +- .../openpyxl/openpyxl/chartsheet/relation.pyi | 110 +- .../openpyxl/openpyxl/chartsheet/views.pyi | 34 +- .../openpyxl/openpyxl/comments/author.pyi | 3 +- .../openpyxl/comments/comment_sheet.pyi | 135 +- .../openpyxl/descriptors/__init__.pyi | 1 - .../openpyxl/openpyxl/descriptors/base.pyi | 400 ++++- .../openpyxl/openpyxl/descriptors/excel.pyi | 41 +- .../openpyxl/openpyxl/descriptors/nested.pyi | 28 +- .../openpyxl/descriptors/sequence.pyi | 20 +- .../openpyxl/descriptors/serialisable.pyi | 14 +- .../openpyxl/openpyxl/drawing/colors.pyi | 206 ++- .../openpyxl/openpyxl/drawing/connector.pyi | 120 +- .../openpyxl/openpyxl/drawing/effect.pyi | 286 ++-- .../stubs/openpyxl/openpyxl/drawing/fill.pyi | 382 +++-- .../openpyxl/openpyxl/drawing/geometry.pyi | 637 ++++++-- .../openpyxl/openpyxl/drawing/graphic.pyi | 95 +- .../stubs/openpyxl/openpyxl/drawing/line.pyi | 82 +- .../openpyxl/openpyxl/drawing/picture.pyi | 108 +- .../openpyxl/openpyxl/drawing/properties.pyi | 149 +- .../openpyxl/drawing/spreadsheet_drawing.pyi | 79 +- .../stubs/openpyxl/openpyxl/drawing/text.pyi | 638 ++++---- .../openpyxl/formatting/formatting.pyi | 17 +- .../openpyxl/openpyxl/formatting/rule.pyi | 195 ++- .../openpyxl/openpyxl/packaging/core.pyi | 11 +- .../openpyxl/openpyxl/packaging/custom.pyi | 58 +- .../openpyxl/openpyxl/packaging/extended.pyi | 41 +- .../openpyxl/openpyxl/packaging/manifest.pyi | 17 +- .../openpyxl/packaging/relationship.pyi | 31 +- .../openpyxl/openpyxl/packaging/workbook.pyi | 109 +- .../stubs/openpyxl/openpyxl/pivot/cache.pyi | 915 +++++++----- .../stubs/openpyxl/openpyxl/pivot/fields.pyi | 285 ++-- .../stubs/openpyxl/openpyxl/pivot/record.pyi | 14 +- .../stubs/openpyxl/openpyxl/pivot/table.pyi | 1301 ++++++++++------- .../openpyxl/openpyxl/styles/alignment.pyi | 47 +- .../openpyxl/openpyxl/styles/borders.pyi | 80 +- .../openpyxl/openpyxl/styles/cell_style.pyi | 87 +- .../stubs/openpyxl/openpyxl/styles/colors.pyi | 43 +- .../openpyxl/openpyxl/styles/differential.pyi | 40 +- .../stubs/openpyxl/openpyxl/styles/fills.pyi | 105 +- .../stubs/openpyxl/openpyxl/styles/fonts.pyi | 14 +- .../openpyxl/openpyxl/styles/named_styles.pyi | 79 +- .../openpyxl/openpyxl/styles/numbers.pyi | 27 +- .../openpyxl/openpyxl/styles/styleable.pyi | 21 +- .../openpyxl/openpyxl/styles/stylesheet.pyi | 41 +- .../stubs/openpyxl/openpyxl/styles/table.pyi | 76 +- .../openpyxl/workbook/defined_name.pyi | 64 +- .../workbook/external_link/external.pyi | 80 +- .../openpyxl/workbook/function_group.pyi | 13 +- .../openpyxl/openpyxl/workbook/properties.pyi | 160 +- .../openpyxl/openpyxl/workbook/protection.pyi | 67 +- .../openpyxl/openpyxl/workbook/smart_tags.pyi | 25 +- .../openpyxl/openpyxl/workbook/views.pyi | 197 ++- .../stubs/openpyxl/openpyxl/workbook/web.pyi | 95 +- .../openpyxl/worksheet/cell_range.pyi | 38 +- .../openpyxl/worksheet/cell_watch.pyi | 9 +- .../openpyxl/openpyxl/worksheet/controls.pyi | 80 +- .../openpyxl/openpyxl/worksheet/custom.pyi | 9 +- .../openpyxl/worksheet/datavalidation.pyi | 111 +- .../openpyxl/worksheet/dimensions.pyi | 130 +- .../openpyxl/openpyxl/worksheet/errors.pyi | 51 +- .../openpyxl/openpyxl/worksheet/filters.pyi | 319 ++-- .../openpyxl/worksheet/header_footer.pyi | 72 +- .../openpyxl/openpyxl/worksheet/hyperlink.pyi | 25 +- .../openpyxl/openpyxl/worksheet/merge.pyi | 11 +- .../stubs/openpyxl/openpyxl/worksheet/ole.pyi | 138 +- .../openpyxl/openpyxl/worksheet/page.pyi | 111 +- .../openpyxl/openpyxl/worksheet/pagebreak.pyi | 32 +- .../openpyxl/worksheet/print_settings.pyi | 36 +- .../openpyxl/worksheet/properties.pyi | 71 +- .../openpyxl/worksheet/protection.pyi | 79 +- .../openpyxl/openpyxl/worksheet/related.pyi | 2 +- .../openpyxl/openpyxl/worksheet/scenario.pyi | 99 +- .../openpyxl/openpyxl/worksheet/smart_tag.pyi | 41 +- .../openpyxl/openpyxl/worksheet/table.pyi | 269 ++-- .../openpyxl/openpyxl/worksheet/views.pyi | 149 +- .../stubs/opentracing/METADATA.toml | 1 + .../stubs/paramiko/METADATA.toml | 1 + .../stubs/paramiko/paramiko/agent.pyi | 7 +- .../stubs/paramiko/paramiko/channel.pyi | 26 +- .../stubs/paramiko/paramiko/client.pyi | 11 +- .../stubs/paramiko/paramiko/compress.pyi | 5 +- .../stubs/paramiko/paramiko/dsskey.pyi | 3 +- .../stubs/paramiko/paramiko/ecdsakey.pyi | 3 +- .../stubs/paramiko/paramiko/ed25519key.pyi | 3 +- .../stubs/paramiko/paramiko/message.pyi | 9 +- .../stubs/paramiko/paramiko/packet.pyi | 10 +- .../stubs/paramiko/paramiko/pkey.pyi | 8 +- .../stubs/paramiko/paramiko/proxy.pyi | 3 +- .../stubs/paramiko/paramiko/rsakey.pyi | 3 +- .../stubs/paramiko/paramiko/sftp_client.pyi | 5 +- .../stubs/paramiko/paramiko/sftp_file.pyi | 3 +- .../stubs/paramiko/paramiko/sftp_handle.pyi | 4 +- .../stubs/paramiko/paramiko/transport.pyi | 6 +- .../stubs/paramiko/paramiko/util.pyi | 12 +- .../stubs/pep8-naming/METADATA.toml | 1 + .../stubs/protobuf/METADATA.toml | 3 +- .../stubs/psycopg2/METADATA.toml | 1 + .../stubs/pyOpenSSL/METADATA.toml | 1 + .../stubs/pyflakes/METADATA.toml | 1 + .../stubs/pyinstaller/METADATA.toml | 2 +- .../PyInstaller/building/datastruct.pyi | 3 + .../PyInstaller/depend/imphookapi.pyi | 4 +- .../stubs/python-datemath/METADATA.toml | 1 + .../stubs/python-dateutil/METADATA.toml | 1 + .../stubs/pyvmomi/METADATA.toml | 2 +- .../stubs/redis/METADATA.toml | 3 +- .../stubs/redis/redis/__init__.pyi | 5 +- .../stubs/redis/redis/asyncio/__init__.pyi | 6 + .../stubs/redis/redis/asyncio/client.pyi | 2 +- .../stubs/redis/redis/asyncio/cluster.pyi | 9 +- .../stubs/redis/redis/asyncio/connection.pyi | 13 +- .../stubs/redis/redis/asyncio/sentinel.pyi | 2 +- .../stubs/redis/redis/backoff.pyi | 2 + .../stubs/redis/redis/client.pyi | 2 +- .../stubs/redis/redis/cluster.pyi | 5 + .../stubs/redis/redis/commands/cluster.pyi | 6 +- .../stubs/redis/redis/commands/core.pyi | 6 +- .../stubs/redis/redis/connection.pyi | 7 +- .../stubs/redis/redis/sentinel.pyi | 2 +- .../stubs/setuptools/METADATA.toml | 6 +- .../setuptools/pkg_resources/__init__.pyi | 97 +- .../stubs/setuptools/setuptools/__init__.pyi | 35 +- .../_distutils/command/bdist_rpm.pyi | 52 + .../setuptools/_distutils/command/build.pyi | 30 + .../setuptools/setuptools/archive_util.pyi | 10 + .../setuptools/setuptools/build_meta.pyi | 19 +- .../setuptools/setuptools/command/alias.pyi | 2 +- .../setuptools/command/bdist_egg.pyi | 49 + .../setuptools/command/bdist_rpm.pyi | 4 + .../setuptools/setuptools/command/build.pyi | 16 + .../setuptools/command/build_ext.pyi | 4 +- .../setuptools/command/build_py.pyi | 6 +- .../setuptools/setuptools/command/develop.pyi | 4 +- .../setuptools/command/dist_info.pyi | 4 +- .../setuptools/command/easy_install.pyi | 6 +- .../setuptools/command/editable_wheel.pyi | 84 ++ .../setuptools/command/egg_info.pyi | 8 +- .../setuptools/command/install_egg_info.pyi | 2 +- .../setuptools/setuptools/command/rotate.pyi | 2 +- .../setuptools/command/saveopts.pyi | 2 +- .../setuptools/setuptools/command/setopt.pyi | 4 +- .../setuptools/setuptools/command/test.pyi | 2 +- .../stubs/setuptools/setuptools/config.pyi | 2 - .../setuptools/setuptools/config/__init__.pyi | 9 + .../setuptools/setuptools/config/expand.pyi | 53 + .../setuptools/config/pyprojecttoml.pyi | 52 + .../setuptools/setuptools/config/setupcfg.pyi | 83 ++ .../stubs/setuptools/setuptools/depends.pyi | 8 + .../stubs/setuptools/setuptools/discovery.pyi | 45 + .../stubs/setuptools/setuptools/dist.pyi | 5 +- .../stubs/setuptools/setuptools/glob.pyi | 2 + .../stubs/setuptools/setuptools/logging.pyi | 2 + .../setuptools/setuptools/package_index.pyi | 2 + .../setuptools/setuptools/py312compat.pyi | 3 + .../stubs/setuptools/setuptools/sandbox.pyi | 37 +- .../stubs/setuptools/setuptools/wheel.pyi | 2 + .../stubs/simplejson/METADATA.toml | 1 + .../stubs/stripe/METADATA.toml | 1 + .../stubs/tzlocal/METADATA.toml | 2 +- .../stubs/tzlocal/tzlocal/__init__.pyi | 3 + .../stubs/tzlocal/tzlocal/utils.pyi | 14 +- .../stubs/urllib3/METADATA.toml | 1 + .../stubs/waitress/METADATA.toml | 1 + 275 files changed, 8346 insertions(+), 4850 deletions(-) create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FitsImagePlugin.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/QoiImagePlugin.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_util.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/emoji/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/core.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/unicode_codes/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/unicode_codes/data_dict.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/command/bdist_rpm.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/command/build.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_egg.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_rpm.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/editable_wheel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/expand.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/pyprojecttoml.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/setupcfg.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/discovery.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/logging.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/py312compat.pyi diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index 8879094a9..4cc5e9a61 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -a6ecf564b552b2d0cae7a747b7eab8cb4f90f21c +35450d9c0d673fc713c3210d8c25d19425f9790e diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi index 3e3c8d29a..e2f8fa745 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi @@ -2,7 +2,7 @@ import sys from _typeshed import ReadableBuffer, WriteableBuffer from abc import abstractmethod from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence -from ctypes import CDLL, c_int +from ctypes import CDLL from typing import Any, ClassVar, Generic, TypeVar, overload from typing_extensions import Self, TypeAlias @@ -94,7 +94,7 @@ class _CArgObject: ... def byref(obj: _CData, offset: int = ...) -> _CArgObject: ... _ECT: TypeAlias = Callable[[type[_CData] | None, CFuncPtr, tuple[_CData, ...]], _CData] -_PF: TypeAlias = tuple[int] | tuple[int, str] | tuple[int, str, Any] +_PF: TypeAlias = tuple[int] | tuple[int, str | None] | tuple[int, str | None, Any] class CFuncPtr(_PointerLike, _CData): restype: type[_CData] | Callable[[int], Any] | None @@ -102,13 +102,19 @@ class CFuncPtr(_PointerLike, _CData): errcheck: _ECT _flags_: ClassVar[int] # Abstract attribute that must be defined on subclasses @overload - def __init__(self, address: int) -> None: ... + def __init__(self) -> None: ... @overload - def __init__(self, callable: Callable[..., Any]) -> None: ... + def __init__(self, __address: int) -> None: ... @overload - def __init__(self, func_spec: tuple[str | int, CDLL], paramflags: tuple[_PF, ...] = ...) -> None: ... + def __init__(self, __callable: Callable[..., Any]) -> None: ... @overload - def __init__(self, vtlb_index: int, name: str, paramflags: tuple[_PF, ...] = ..., iid: _Pointer[c_int] = ...) -> None: ... + def __init__(self, __func_spec: tuple[str | int, CDLL], __paramflags: tuple[_PF, ...] | None = ...) -> None: ... + if sys.platform == "win32": + @overload + def __init__( + self, __vtbl_index: int, __name: str, __paramflags: tuple[_PF, ...] | None = ..., __iid: _CData | None = ... + ) -> None: ... + def __call__(self, *args: Any, **kwargs: Any) -> Any: ... class _CField: diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/__init__.pyi index 4afcd37f5..2ce066cac 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/__init__.pyi @@ -1,4 +1,7 @@ import sys +from collections.abc import Awaitable, Coroutine, Generator +from typing import Any, TypeVar +from typing_extensions import TypeAlias # As at runtime, this depends on all submodules defining __all__ accurately. from .base_events import * @@ -28,3 +31,13 @@ if sys.platform == "win32": from .windows_events import * else: from .unix_events import * + +_T = TypeVar("_T") + +# Aliases imported by multiple submodules in typeshed +if sys.version_info >= (3, 12): + _AwaitableLike: TypeAlias = Awaitable[_T] + _CoroutineLike: TypeAlias = Coroutine[Any, Any, _T] +else: + _AwaitableLike: TypeAlias = Generator[Any, None, _T] | Awaitable[_T] + _CoroutineLike: TypeAlias = Generator[Any, None, _T] | Coroutine[Any, Any, _T] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi index 992f6af5c..fd765fdb0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi @@ -1,12 +1,13 @@ import ssl import sys from _typeshed import FileDescriptorLike, ReadableBuffer, WriteableBuffer +from asyncio import _AwaitableLike, _CoroutineLike from asyncio.events import AbstractEventLoop, AbstractServer, Handle, TimerHandle, _TaskFactory from asyncio.futures import Future from asyncio.protocols import BaseProtocol from asyncio.tasks import Task from asyncio.transports import BaseTransport, DatagramTransport, ReadTransport, SubprocessTransport, Transport, WriteTransport -from collections.abc import Awaitable, Callable, Coroutine, Generator, Iterable, Sequence +from collections.abc import Callable, Iterable, Sequence from contextvars import Context from socket import AddressFamily, SocketKind, _Address, _RetAddress, socket from typing import IO, Any, TypeVar, overload @@ -63,11 +64,7 @@ class Server(AbstractServer): class BaseEventLoop(AbstractEventLoop): def run_forever(self) -> None: ... - # Can't use a union, see mypy issue # 1873. - @overload - def run_until_complete(self, future: Generator[Any, None, _T]) -> _T: ... - @overload - def run_until_complete(self, future: Awaitable[_T]) -> _T: ... + def run_until_complete(self, future: _AwaitableLike[_T]) -> _T: ... def stop(self) -> None: ... def is_running(self) -> bool: ... def is_closed(self) -> bool: ... @@ -86,13 +83,11 @@ class BaseEventLoop(AbstractEventLoop): def create_future(self) -> Future[Any]: ... # Tasks methods if sys.version_info >= (3, 11): - def create_task( - self, coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T], *, name: object = None, context: Context | None = None - ) -> Task[_T]: ... + def create_task(self, coro: _CoroutineLike[_T], *, name: object = None, context: Context | None = None) -> Task[_T]: ... elif sys.version_info >= (3, 8): - def create_task(self, coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T], *, name: object = None) -> Task[_T]: ... + def create_task(self, coro: _CoroutineLike[_T], *, name: object = None) -> Task[_T]: ... else: - def create_task(self, coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T]) -> Task[_T]: ... + def create_task(self, coro: _CoroutineLike[_T]) -> Task[_T]: ... def set_task_factory(self, factory: _TaskFactory | None) -> None: ... def get_task_factory(self) -> _TaskFactory | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi index 34576b091..11112bb2e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi @@ -2,12 +2,13 @@ import ssl import sys from _typeshed import FileDescriptorLike, ReadableBuffer, StrPath, Unused, WriteableBuffer from abc import ABCMeta, abstractmethod -from collections.abc import Awaitable, Callable, Coroutine, Generator, Sequence +from collections.abc import Callable, Coroutine, Generator, Sequence from contextvars import Context from socket import AddressFamily, SocketKind, _Address, _RetAddress, socket from typing import IO, Any, Protocol, TypeVar, overload from typing_extensions import Literal, Self, TypeAlias +from . import _AwaitableLike, _CoroutineLike from .base_events import Server from .futures import Future from .protocols import BaseProtocol @@ -112,13 +113,8 @@ class AbstractEventLoop: slow_callback_duration: float @abstractmethod def run_forever(self) -> None: ... - # Can't use a union, see mypy issue # 1873. - @overload @abstractmethod - def run_until_complete(self, future: Generator[Any, None, _T]) -> _T: ... - @overload - @abstractmethod - def run_until_complete(self, future: Awaitable[_T]) -> _T: ... + def run_until_complete(self, future: _AwaitableLike[_T]) -> _T: ... @abstractmethod def stop(self) -> None: ... @abstractmethod @@ -158,20 +154,14 @@ class AbstractEventLoop: if sys.version_info >= (3, 11): @abstractmethod def create_task( - self, - coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T], - *, - name: str | None = None, - context: Context | None = None, + self, coro: _CoroutineLike[_T], *, name: str | None = None, context: Context | None = None ) -> Task[_T]: ... elif sys.version_info >= (3, 8): @abstractmethod - def create_task( - self, coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T], *, name: str | None = None - ) -> Task[_T]: ... + def create_task(self, coro: _CoroutineLike[_T], *, name: str | None = None) -> Task[_T]: ... else: @abstractmethod - def create_task(self, coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T]) -> Task[_T]: ... + def create_task(self, coro: _CoroutineLike[_T]) -> Task[_T]: ... @abstractmethod def set_task_factory(self, factory: _TaskFactory | None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/sslproto.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/sslproto.pyi index aadc7d32b..09733e5f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/sslproto.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/sslproto.pyi @@ -66,7 +66,10 @@ class _SSLProtocolTransport(transports._FlowControlMixin, transports.Transport): _sendfile_compatible: ClassVar[constants._SendfileMode] _loop: events.AbstractEventLoop - _ssl_protocol: SSLProtocol + if sys.version_info >= (3, 11): + _ssl_protocol: SSLProtocol | None + else: + _ssl_protocol: SSLProtocol _closed: bool def __init__(self, loop: events.AbstractEventLoop, ssl_protocol: SSLProtocol) -> None: ... def get_extra_info(self, name: str, default: Any | None = None) -> dict[str, Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/taskgroups.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/taskgroups.pyi index 8daa96f1e..08ea8f665 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/taskgroups.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/taskgroups.pyi @@ -1,11 +1,11 @@ # This only exists in 3.11+. See VERSIONS. -from collections.abc import Coroutine, Generator from contextvars import Context from types import TracebackType -from typing import Any, TypeVar +from typing import TypeVar from typing_extensions import Self +from . import _CoroutineLike from .tasks import Task __all__ = ["TaskGroup"] @@ -15,6 +15,4 @@ _T = TypeVar("_T") class TaskGroup: async def __aenter__(self) -> Self: ... async def __aexit__(self, et: type[BaseException] | None, exc: BaseException | None, tb: TracebackType | None) -> None: ... - def create_task( - self, coro: Generator[Any, None, _T] | Coroutine[Any, Any, _T], *, name: str | None = None, context: Context | None = None - ) -> Task[_T]: ... + def create_task(self, coro: _CoroutineLike[_T], *, name: str | None = None, context: Context | None = None) -> Task[_T]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/tasks.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/tasks.pyi index 308453709..d8c101f28 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/tasks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/tasks.pyi @@ -5,6 +5,7 @@ from types import FrameType from typing import Any, Generic, TextIO, TypeVar, overload from typing_extensions import Literal, TypeAlias +from . import _CoroutineLike from .events import AbstractEventLoop from .futures import Future @@ -274,6 +275,11 @@ else: ) -> tuple[set[Task[_T]], set[Task[_T]]]: ... async def wait_for(fut: _FutureLike[_T], timeout: float | None, *, loop: AbstractEventLoop | None = None) -> _T: ... +if sys.version_info >= (3, 12): + _TaskCompatibleCoro: TypeAlias = Coroutine[Any, Any, _T_co] +else: + _TaskCompatibleCoro: TypeAlias = Generator[_TaskYieldType, None, _T_co] | Awaitable[_T_co] + # mypy and pyright complain that a subclass of an invariant class shouldn't be covariant. # While this is true in general, here it's sort-of okay to have a covariant subclass, # since the only reason why `asyncio.Future` is invariant is the `set_result()` method, @@ -281,18 +287,12 @@ else: class Task(Future[_T_co], Generic[_T_co]): # type: ignore[type-var] # pyright: ignore[reportGeneralTypeIssues] if sys.version_info >= (3, 8): def __init__( - self, - coro: Generator[_TaskYieldType, None, _T_co] | Awaitable[_T_co], - *, - loop: AbstractEventLoop = ..., - name: str | None = ..., + self, coro: _TaskCompatibleCoro[_T_co], *, loop: AbstractEventLoop = ..., name: str | None = ... ) -> None: ... else: - def __init__( - self, coro: Generator[_TaskYieldType, None, _T_co] | Awaitable[_T_co], *, loop: AbstractEventLoop = ... - ) -> None: ... + def __init__(self, coro: _TaskCompatibleCoro[_T_co], *, loop: AbstractEventLoop = ...) -> None: ... if sys.version_info >= (3, 8): - def get_coro(self) -> Generator[_TaskYieldType, None, _T_co] | Awaitable[_T_co]: ... + def get_coro(self) -> _TaskCompatibleCoro[_T_co]: ... def get_name(self) -> str: ... def set_name(self, __value: object) -> None: ... @@ -312,15 +312,13 @@ class Task(Future[_T_co], Generic[_T_co]): # type: ignore[type-var] # pyright: def all_tasks(loop: AbstractEventLoop | None = None) -> set[Task[Any]]: ... if sys.version_info >= (3, 11): - def create_task( - coro: Generator[Any, None, _T] | Coroutine[Any, Any, _T], *, name: str | None = None, context: Context | None = None - ) -> Task[_T]: ... + def create_task(coro: _CoroutineLike[_T], *, name: str | None = None, context: Context | None = None) -> Task[_T]: ... elif sys.version_info >= (3, 8): - def create_task(coro: Generator[Any, None, _T] | Coroutine[Any, Any, _T], *, name: str | None = None) -> Task[_T]: ... + def create_task(coro: _CoroutineLike[_T], *, name: str | None = None) -> Task[_T]: ... else: - def create_task(coro: Generator[Any, None, _T] | Coroutine[Any, Any, _T]) -> Task[_T]: ... + def create_task(coro: _CoroutineLike[_T]) -> Task[_T]: ... def current_task(loop: AbstractEventLoop | None = None) -> Task[Any] | None: ... def _enter_task(loop: AbstractEventLoop, task: Task[Any]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi index 8a0373435..3a7c8ade7 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi @@ -5,10 +5,11 @@ import sys from _typeshed import ReadableBuffer, StrPath from collections.abc import Callable from logging import FileHandler, Handler, LogRecord -from queue import Queue, SimpleQueue from re import Pattern from socket import SocketKind, socket -from typing import Any, ClassVar +from typing import Any, ClassVar, Protocol, TypeVar + +_T = TypeVar("_T") DEFAULT_TCP_LOGGING_PORT: int DEFAULT_UDP_LOGGING_PORT: int @@ -249,17 +250,21 @@ class HTTPHandler(Handler): if sys.version_info >= (3, 9): def getConnection(self, host: str, secure: bool) -> http.client.HTTPConnection: ... # undocumented +class _QueueLike(Protocol[_T]): + def get(self) -> _T: ... + def put_nowait(self, __item: _T) -> None: ... + class QueueHandler(Handler): - queue: SimpleQueue[Any] | Queue[Any] # undocumented - def __init__(self, queue: SimpleQueue[Any] | Queue[Any]) -> None: ... + queue: _QueueLike[Any] + def __init__(self, queue: _QueueLike[Any]) -> None: ... def prepare(self, record: LogRecord) -> Any: ... def enqueue(self, record: LogRecord) -> None: ... class QueueListener: handlers: tuple[Handler, ...] # undocumented respect_handler_level: bool # undocumented - queue: SimpleQueue[Any] | Queue[Any] # undocumented - def __init__(self, queue: SimpleQueue[Any] | Queue[Any], *handlers: Handler, respect_handler_level: bool = False) -> None: ... + queue: _QueueLike[Any] # undocumented + def __init__(self, queue: _QueueLike[Any], *handlers: Handler, respect_handler_level: bool = False) -> None: ... def dequeue(self, block: bool) -> LogRecord: ... def prepare(self, record: LogRecord) -> Any: ... def start(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml index b39fb0d7a..8f67dd68b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml @@ -1,6 +1,7 @@ version = "3.0.*" # Requires a version of flask with a `py.typed` file requires = ["Flask>=2.0.0"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml index 7e798f1a2..7979b27a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml @@ -1,6 +1,7 @@ version = "4.0.*" # Requires a version of flask with a `py.typed` file requires = ["Flask>=2.0.0", "types-Flask-SQLAlchemy"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/METADATA.toml index d3d266df0..7c295e685 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/METADATA.toml @@ -1,6 +1,7 @@ version = "2.5.*" requires = ["types-SQLAlchemy"] obsolete_since = "3.0.1" # Released on 2022-10-11 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/METADATA.toml index 9914b4e00..1756f1f53 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/METADATA.toml @@ -1,4 +1,5 @@ version = "3.4.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml index eb1a1a9cf..aa2d5b748 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml @@ -1,5 +1,7 @@ version = "9.5.*" +partial_stub = true [tool.stubtest] stubtest_requirements = ["olefile"] -ignore_missing_stub = true +# darwin checks don't affect stubtest +platforms = ["linux", "win32"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi index 50a091c5b..27c329be8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi @@ -2,7 +2,7 @@ from enum import IntEnum from typing import Any, ClassVar from typing_extensions import Literal -from .ImageFile import ImageFile, PyDecoder +from .ImageFile import ImageFile, PyDecoder, PyEncoder class Format(IntEnum): JPEG: int @@ -44,3 +44,6 @@ class _BLPBaseDecoder(PyDecoder): class BLP1Decoder(_BLPBaseDecoder): ... class BLP2Decoder(_BLPBaseDecoder): ... + +class BLPEncoder(PyEncoder): + def encode(self, bufsize): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BmpImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BmpImagePlugin.pyi index 3ebe58175..6d8e94355 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BmpImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BmpImagePlugin.pyi @@ -1,15 +1,24 @@ from typing import Any, ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal -from .ImageFile import ImageFile +from .ImageFile import ImageFile, PyDecoder BIT2MODE: Any class BmpImageFile(ImageFile): + RAW: Final = 0 + RLE8: Final = 1 + RLE4: Final = 2 + BITFIELDS: Final = 3 + JPEG: Final = 4 + PNG: Final = 5 format_description: ClassVar[str] format: ClassVar[Literal["BMP", "DIB", "CUR"]] COMPRESSIONS: Any +class BmpRleDecoder(PyDecoder): + def decode(self, buffer): ... + class DibImageFile(BmpImageFile): format: ClassVar[Literal["DIB"]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/DdsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/DdsImagePlugin.pyi index 19893d9b6..ef46457d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/DdsImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/DdsImagePlugin.pyi @@ -1,43 +1,46 @@ from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from .ImageFile import ImageFile -DDS_MAGIC: int -DDSD_CAPS: int -DDSD_HEIGHT: int -DDSD_WIDTH: int -DDSD_PITCH: int -DDSD_PIXELFORMAT: int -DDSD_MIPMAPCOUNT: int -DDSD_LINEARSIZE: int -DDSD_DEPTH: int -DDSCAPS_COMPLEX: int -DDSCAPS_TEXTURE: int -DDSCAPS_MIPMAP: int -DDSCAPS2_CUBEMAP: int -DDSCAPS2_CUBEMAP_POSITIVEX: int -DDSCAPS2_CUBEMAP_NEGATIVEX: int -DDSCAPS2_CUBEMAP_POSITIVEY: int -DDSCAPS2_CUBEMAP_NEGATIVEY: int -DDSCAPS2_CUBEMAP_POSITIVEZ: int -DDSCAPS2_CUBEMAP_NEGATIVEZ: int -DDSCAPS2_VOLUME: int +DDS_MAGIC: Final = 0x20534444 -DDPF_ALPHAPIXELS: Literal[0x1] -DDPF_ALPHA: Literal[0x2] -DDPF_FOURCC: Literal[0x4] -DDPF_PALETTEINDEXED8: Literal[0x20] -DDPF_RGB: Literal[0x40] -DDPF_LUMINANCE: Literal[0x20000] +DDSD_CAPS: Final = 0x1 +DDSD_HEIGHT: Final = 0x2 +DDSD_WIDTH: Final = 0x4 +DDSD_PITCH: Final = 0x8 +DDSD_PIXELFORMAT: Final = 0x1000 +DDSD_MIPMAPCOUNT: Final = 0x20000 +DDSD_LINEARSIZE: Final = 0x80000 +DDSD_DEPTH: Final = 0x800000 -DDS_FOURCC: Literal[0x4] -DDS_RGB: Literal[0x40] -DDS_RGBA: Literal[0x41] -DDS_LUMINANCE: Literal[0x20000] -DDS_LUMINANCEA: Literal[0x20001] -DDS_ALPHA: Literal[0x2] -DDS_PAL8: Literal[0x20] +DDSCAPS_COMPLEX: Final = 0x8 +DDSCAPS_TEXTURE: Final = 0x1000 +DDSCAPS_MIPMAP: Final = 0x400000 + +DDSCAPS2_CUBEMAP: Final = 0x200 +DDSCAPS2_CUBEMAP_POSITIVEX: Final = 0x400 +DDSCAPS2_CUBEMAP_NEGATIVEX: Final = 0x800 +DDSCAPS2_CUBEMAP_POSITIVEY: Final = 0x1000 +DDSCAPS2_CUBEMAP_NEGATIVEY: Final = 0x2000 +DDSCAPS2_CUBEMAP_POSITIVEZ: Final = 0x4000 +DDSCAPS2_CUBEMAP_NEGATIVEZ: Final = 0x8000 +DDSCAPS2_VOLUME: Final = 0x200000 + +DDPF_ALPHAPIXELS: Final = 0x1 +DDPF_ALPHA: Final = 0x2 +DDPF_FOURCC: Final = 0x4 +DDPF_PALETTEINDEXED8: Final = 0x20 +DDPF_RGB: Final = 0x40 +DDPF_LUMINANCE: Final = 0x20000 + +DDS_FOURCC: Final = 0x4 +DDS_RGB: Final = 0x40 +DDS_RGBA: Final = 0x41 +DDS_LUMINANCE: Final = 0x20000 +DDS_LUMINANCEA: Final = 0x20001 +DDS_ALPHA: Final = 0x2 +DDS_PAL8: Final = 0x20 DDS_HEADER_FLAGS_TEXTURE: int DDS_HEADER_FLAGS_MIPMAP: int @@ -55,15 +58,22 @@ DDS_CUBEMAP_POSITIVEY: int DDS_CUBEMAP_NEGATIVEY: int DDS_CUBEMAP_POSITIVEZ: int DDS_CUBEMAP_NEGATIVEZ: int -DXT1_FOURCC: int -DXT3_FOURCC: int -DXT5_FOURCC: int -DXGI_FORMAT_R8G8B8A8_TYPELESS: int -DXGI_FORMAT_R8G8B8A8_UNORM: int -DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: int -DXGI_FORMAT_BC7_TYPELESS: int -DXGI_FORMAT_BC7_UNORM: int -DXGI_FORMAT_BC7_UNORM_SRGB: int + +DXT1_FOURCC: Final = 0x31545844 +DXT3_FOURCC: Final = 0x33545844 +DXT5_FOURCC: Final = 0x35545844 + +DXGI_FORMAT_R8G8B8A8_TYPELESS: Final = 27 +DXGI_FORMAT_R8G8B8A8_UNORM: Final = 28 +DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: Final = 29 +DXGI_FORMAT_BC5_TYPELESS: Final = 82 +DXGI_FORMAT_BC5_UNORM: Final = 83 +DXGI_FORMAT_BC5_SNORM: Final = 84 +DXGI_FORMAT_BC6H_UF16: Final = 95 +DXGI_FORMAT_BC6H_SF16: Final = 96 +DXGI_FORMAT_BC7_TYPELESS: Final = 97 +DXGI_FORMAT_BC7_UNORM: Final = 98 +DXGI_FORMAT_BC7_UNORM_SRGB: Final = 99 class DdsImageFile(ImageFile): format: ClassVar[Literal["DDS"]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi index c8cc6d504..609d3bb03 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi @@ -1,3 +1,4 @@ +import sys from typing import Any, ClassVar from typing_extensions import Literal @@ -6,7 +7,10 @@ from .ImageFile import ImageFile split: Any field: Any -gs_windows_binary: Any +if sys.platform == "win32": + gs_windows_binary: Literal["gswin32c", "gswin64c", "gs", False] +else: + gs_windows_binary: None def has_ghostscript(): ... def Ghostscript(tile, size, fp, scale: int = 1, transparency: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FitsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FitsImagePlugin.pyi new file mode 100644 index 000000000..5cb2f3b37 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FitsImagePlugin.pyi @@ -0,0 +1,7 @@ +from typing import ClassVar + +from . import Image as Image, ImageFile as ImageFile + +class FitsImageFile(ImageFile.ImageFile): + format: ClassVar[str] + format_description: ClassVar[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi index 309a666d5..62abc0f14 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi @@ -1,9 +1,17 @@ from _typeshed import Incomplete +from enum import IntEnum from typing import Any, ClassVar from typing_extensions import Literal from .ImageFile import ImageFile +class LoadingStrategy(IntEnum): + RGB_AFTER_FIRST = 0 + RGB_AFTER_DIFFERENT_PALETTE_ONLY = 1 + RGB_ALWAYS = 2 + +LOADING_STRATEGY: LoadingStrategy + class GifImageFile(ImageFile): format: ClassVar[Literal["GIF"]] format_description: ClassVar[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi index bbd3827e7..a261ae513 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi @@ -1,12 +1,13 @@ from _typeshed import Incomplete from typing import Any, ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from ._imaging import _PixelAccessor from .ImageFile import ImageFile enable_jpeg2k: Any -HEADERSIZE: int +MAGIC: Final = b"icns" +HEADERSIZE: Final = 8 def nextheader(fobj): ... def read_32t(fobj, start_length, size): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi index c965d1489..bd8671760 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi @@ -42,11 +42,14 @@ class DecompressionBombWarning(RuntimeWarning): ... class DecompressionBombError(Exception): ... MAX_IMAGE_PIXELS: int | None +USE_CFFI_ACCESS: Incomplete LINEAR: Literal[Resampling.BILINEAR] # deprecated CUBIC: Literal[Resampling.BICUBIC] # deprecated ANTIALIAS: Literal[Resampling.LANCZOS] # deprecated +def isImageType(t): ... + class Transpose(IntEnum): FLIP_LEFT_RIGHT: Literal[0] FLIP_TOP_BOTTOM: Literal[1] @@ -147,9 +150,17 @@ def init() -> None: ... def coerce_e(value) -> _E: ... class _E: + scale: Incomplete + data: Incomplete def __init__(self, scale, data) -> None: ... + def __neg__(self): ... def __add__(self, other) -> _E: ... + __radd__ = __add__ + def __sub__(self, other): ... + def __rsub__(self, other): ... def __mul__(self, other) -> _E: ... + __rmul__ = __mul__ + def __truediv__(self, other): ... _ImageState: TypeAlias = tuple[dict[str, Any], str, tuple[int, int], Any, bytes] @@ -176,6 +187,8 @@ class Image: def __exit__(self, *args: Unused) -> None: ... def close(self) -> None: ... def __eq__(self, other: object) -> bool: ... + @property + def __array_interface__(self): ... def __getstate__(self) -> _ImageState: ... def __setstate__(self, state: _ImageState) -> None: ... def tobytes(self, encoder_name: str = "raw", *args) -> bytes: ... @@ -213,6 +226,7 @@ class Image: def get_child_images(self) -> list[Image]: ... def getim(self): ... def getpalette(self, rawmode: str | None = "RGB") -> list[int] | None: ... + def apply_transparency(self) -> None: ... def getpixel(self, xy: tuple[int, int]): ... def getprojection(self) -> tuple[list[int], list[int]]: ... def histogram(self, mask: Image | None = None, extrema: tuple[int, int] | tuple[float, float] | None = None) -> list[int]: ... @@ -304,7 +318,10 @@ def linear_gradient(mode: _Mode) -> Image: ... def radial_gradient(mode: _Mode) -> Image: ... class Exif(MutableMapping[int, Any]): + endian: Incomplete + bigtiff: bool def load(self, data: bytes) -> None: ... + def load_from_fp(self, fp, offset: Incomplete | None = None) -> None: ... def tobytes(self, offset: int = 8) -> bytes: ... def get_ifd(self, tag: int): ... def hide_offsets(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi index b4a65c4d0..383c39332 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi @@ -1,4 +1,5 @@ -from _typeshed import Incomplete +import sys +from _typeshed import Incomplete, Unused from enum import IntEnum from typing import Any from typing_extensions import Literal @@ -55,7 +56,11 @@ class ImageCmsTransform(ImagePointHandler): def apply(self, im, imOut: Incomplete | None = None): ... def apply_in_place(self, im): ... -def get_display_profile(handle: Incomplete | None = None): ... +if sys.platform == "win32": + def get_display_profile(handle: Incomplete | None = None) -> ImageCmsProfile | None: ... + +else: + def get_display_profile(handle: Unused = None) -> None: ... class PyCMSError(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi index 4d6d63821..6c13040c1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi @@ -11,6 +11,14 @@ _XY: TypeAlias = Sequence[float | tuple[float, float]] _Outline: TypeAlias = Any class ImageDraw: + font: Incomplete + palette: Incomplete + im: Incomplete + draw: Incomplete + mode: Incomplete + ink: Incomplete + fontmode: str + fill: bool def __init__(self, im: Image, mode: str | None = None) -> None: ... def getfont(self): ... def arc(self, xy: _XY, start: float, end: float, fill: _Ink | None = None, width: float = 1) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi index 307c97701..a5ab7ea8a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi @@ -32,3 +32,5 @@ class Draw: def rectangle(self, xy, *options) -> None: ... def text(self, xy, text, font) -> None: ... def textsize(self, text, font): ... + def textbbox(self, xy, text, font): ... + def textlength(self, text, font): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi index 6ae0c50f7..303f96134 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi @@ -53,6 +53,18 @@ class PyCodecState: yoff: int def extents(self) -> tuple[int, int, int, int]: ... +class PyCodec: + im: Incomplete + state: Incomplete + fd: Incomplete + mode: Incomplete + def __init__(self, mode, *args) -> None: ... + args: Incomplete + def init(self, args) -> None: ... + def cleanup(self) -> None: ... + def setfd(self, fd) -> None: ... + def setimage(self, im, extents: Incomplete | None = None) -> None: ... + class PyDecoder: im: Any state: Any @@ -68,3 +80,10 @@ class PyDecoder: def setfd(self, fd) -> None: ... def setimage(self, im, extents: Incomplete | None = None) -> None: ... def set_as_raw(self, data, rawmode: Incomplete | None = None) -> None: ... + +class PyEncoder(PyCodec): + @property + def pushes_fd(self): ... + def encode(self, bufsize) -> None: ... + def encode_to_pyfd(self): ... + def encode_to_file(self, fh, bufsize): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi index aded9707e..3a9b68907 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi @@ -16,6 +16,8 @@ class _Font(Protocol): class ImageFont: def getsize(self, text: str | bytes, *args, **kwargs) -> tuple[int, int]: ... def getmask(self, text: str | bytes, mode: str = "", direction=..., features=...): ... + def getbbox(self, text, *args, **kwargs): ... + def getlength(self, text, *args, **kwargs): ... class FreeTypeFont: path: str | bytes | SupportsRead[bytes] | None @@ -23,6 +25,8 @@ class FreeTypeFont: index: int encoding: str layout_engine: Layout + font_bytes: Incomplete + font: Incomplete def __init__( self, font: str | bytes | SupportsRead[bytes] | None = None, @@ -110,9 +114,13 @@ class FreeTypeFont: def set_variation_by_axes(self, axes): ... class TransposedFont: + font: Incomplete + orientation: Incomplete def __init__(self, font: _Font, orientation: int | None = None) -> None: ... def getsize(self, text: str | bytes, *args, **kwargs) -> tuple[int, int]: ... def getmask(self, text: str | bytes, mode: str = "", *args, **kwargs): ... + def getbbox(self, text, *args, **kwargs): ... + def getlength(self, text, *args, **kwargs): ... def load(filename: FileDescriptorOrPath) -> ImageFont: ... def truetype( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageGrab.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageGrab.pyi index c0885ca3a..5f7c60b50 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageGrab.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageGrab.pyi @@ -1,8 +1,36 @@ -from _typeshed import Incomplete +import sys +from _typeshed import Incomplete, Unused + +from PIL.BmpImagePlugin import DibImageFile +from PIL.PngImagePlugin import PngImageFile from .Image import Image, _Box -def grab( - bbox: _Box | None = None, include_layered_windows: bool = False, all_screens: bool = False, xdisplay: Incomplete | None = None -) -> Image: ... -def grabclipboard() -> Image | None: ... +# include_layered_windows and all_screens are Windows only +# xdisplay must be None on non-linux platforms7 +if sys.platform == "linux": + def grab( + bbox: _Box | None = None, + include_layered_windows: Unused = False, + all_screens: Unused = False, + xdisplay: Incomplete | None = None, + ) -> Image: ... + +elif sys.platform == "win32": + def grab( + bbox: _Box | None = None, include_layered_windows: bool = False, all_screens: bool = False, xdisplay: None = None + ) -> Image: ... + +else: + def grab( + bbox: _Box | None = None, include_layered_windows: Unused = False, all_screens: Unused = False, xdisplay: None = None + ) -> Image: ... + +if sys.platform == "darwin": + def grabclipboard() -> Image | None: ... + +elif sys.platform == "win32": + def grabclipboard() -> list[str] | PngImageFile | DibImageFile | None: ... + +else: + def grabclipboard() -> Image: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi index 1c82de820..8bd579cfa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi @@ -1,9 +1,21 @@ +from _typeshed import Incomplete from typing import Any, ClassVar from typing_extensions import Literal from ._imaging import _PixelAccessor from .ImageFile import ImageFile +class BoxReader: + fp: Incomplete + has_length: Incomplete + length: Incomplete + remaining_in_box: int + def __init__(self, fp, length: int = -1) -> None: ... + def read_fields(self, field_format): ... + def read_boxes(self): ... + def has_next_box(self): ... + def next_box_type(self): ... + class Jpeg2KImageFile(ImageFile): format: ClassVar[Literal["JPEG2000"]] format_description: ClassVar[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcxImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcxImagePlugin.pyi index b8916662a..97fdb9805 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcxImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcxImagePlugin.pyi @@ -3,8 +3,6 @@ from typing_extensions import Literal from .ImageFile import ImageFile -logger: Any - class PcxImageFile(ImageFile): format: ClassVar[Literal["PCX", "DCX"]] format_description: ClassVar[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi index 4cae9d92d..7622d57cc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi @@ -6,7 +6,6 @@ from typing_extensions import Literal from ._binary import o8 as o8 from .ImageFile import ImageFile -logger: Any is_cid: Any MAX_TEXT_CHUNK: Any MAX_TEXT_MEMORY: Any @@ -104,6 +103,7 @@ class PngImageFile(ImageFile): im: Any def load_end(self) -> None: ... def getexif(self): ... + def getxmp(self): ... def putchunk(fp, cid, *data) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PpmImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PpmImagePlugin.pyi index 797bbd79b..97b5f896d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PpmImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PpmImagePlugin.pyi @@ -1,7 +1,7 @@ from typing import Any, ClassVar from typing_extensions import Literal -from .ImageFile import ImageFile +from .ImageFile import ImageFile, PyDecoder b_whitespace: bytes MODES: Any @@ -9,3 +9,9 @@ MODES: Any class PpmImageFile(ImageFile): format: ClassVar[Literal["PPM"]] format_description: ClassVar[str] + +class PpmPlainDecoder(PyDecoder): + def decode(self, buffer): ... + +class PpmDecoder(PyDecoder): + def decode(self, buffer): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi index bed128c38..6431e59e9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi @@ -1,10 +1,8 @@ -from logging import Logger from typing import Any from PIL._imaging import _PixelAccessor ffi: Any -logger: Logger class PyAccess(_PixelAccessor): readonly: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/QoiImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/QoiImagePlugin.pyi new file mode 100644 index 000000000..d2e32c803 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/QoiImagePlugin.pyi @@ -0,0 +1,11 @@ +from typing import ClassVar + +from . import Image as Image, ImageFile as ImageFile +from ._binary import o8 as o8 + +class QoiImageFile(ImageFile.ImageFile): + format: ClassVar[str] + format_description: ClassVar[str] + +class QoiDecoder(ImageFile.PyDecoder): + def decode(self, buffer): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi index ba34fc314..d39a2769d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi @@ -3,56 +3,63 @@ from collections.abc import MutableMapping from numbers import Rational from types import TracebackType from typing import Any, ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from ._imaging import _PixelAccessor from .ImageFile import ImageFile -logger: Any +# These are meant to be overridable READ_LIBTIFF: bool WRITE_LIBTIFF: bool IFD_LEGACY_API: bool -II: bytes -MM: bytes -IMAGEWIDTH: int -IMAGELENGTH: int -BITSPERSAMPLE: int -COMPRESSION: int -PHOTOMETRIC_INTERPRETATION: int -FILLORDER: int -IMAGEDESCRIPTION: int -STRIPOFFSETS: int -SAMPLESPERPIXEL: int -ROWSPERSTRIP: int -STRIPBYTECOUNTS: int -X_RESOLUTION: int -Y_RESOLUTION: int -PLANAR_CONFIGURATION: int -RESOLUTION_UNIT: int -TRANSFERFUNCTION: int -SOFTWARE: int -DATE_TIME: int -ARTIST: int -PREDICTOR: int -COLORMAP: int -TILEOFFSETS: int -SUBIFD: int -EXTRASAMPLES: int -SAMPLEFORMAT: int -JPEGTABLES: int -REFERENCEBLACKWHITE: int -COPYRIGHT: int -IPTC_NAA_CHUNK: int -PHOTOSHOP_CHUNK: int -ICCPROFILE: int -EXIFIFD: int -XMP: int -JPEGQUALITY: int -IMAGEJ_META_DATA_BYTE_COUNTS: int -IMAGEJ_META_DATA: int +STRIP_SIZE: int + +II: Final = b"II" +MM: Final = b"MM" +IMAGEWIDTH: Final = 256 +IMAGELENGTH: Final = 257 +BITSPERSAMPLE: Final = 258 +COMPRESSION: Final = 259 +PHOTOMETRIC_INTERPRETATION: Final = 262 +FILLORDER: Final = 266 +IMAGEDESCRIPTION: Final = 270 +STRIPOFFSETS: Final = 273 +SAMPLESPERPIXEL: Final = 277 +ROWSPERSTRIP: Final = 278 +STRIPBYTECOUNTS: Final = 279 +X_RESOLUTION: Final = 282 +Y_RESOLUTION: Final = 283 +PLANAR_CONFIGURATION: Final = 284 +RESOLUTION_UNIT: Final = 296 +TRANSFERFUNCTION: Final = 301 +SOFTWARE: Final = 305 +DATE_TIME: Final = 306 +ARTIST: Final = 315 +PREDICTOR: Final = 317 +COLORMAP: Final = 320 +TILEWIDTH: Final = 322 +TILELENGTH: Final = 323 +TILEOFFSETS: Final = 324 +TILEBYTECOUNTS: Final = 325 +SUBIFD: Final = 330 +EXTRASAMPLES: Final = 338 +SAMPLEFORMAT: Final = 339 +JPEGTABLES: Final = 347 +YCBCRSUBSAMPLING: Final = 530 +REFERENCEBLACKWHITE: Final = 532 +COPYRIGHT: Final = 33432 +IPTC_NAA_CHUNK: Final = 33723 +PHOTOSHOP_CHUNK: Final = 34377 +ICCPROFILE: Final = 34675 +EXIFIFD: Final = 34665 +XMP: Final = 700 +JPEGQUALITY: Final = 65537 +IMAGEJ_META_DATA_BYTE_COUNTS: Final = 50838 +IMAGEJ_META_DATA: Final = 50839 COMPRESSION_INFO: Any COMPRESSION_INFO_REV: Any OPEN_INFO: Any +MAX_SAMPLESPERPIXEL: Final = 6 PREFIXES: Any class IFDRational(Rational): @@ -124,6 +131,22 @@ class ImageFileDirectory_v2(MutableMapping[int, Any]): def load(self, fp) -> None: ... def tobytes(self, offset: int = 0): ... def save(self, fp): ... + load_double: Incomplete + load_float: Incomplete + load_long: Incomplete + load_long8: Incomplete + load_short: Incomplete + load_signed_byte: Incomplete + load_signed_long: Incomplete + load_signed_short: Incomplete + write_double: Incomplete + write_float: Incomplete + write_long: Incomplete + write_long8: Incomplete + write_short: Incomplete + write_signed_byte: Incomplete + write_signed_long: Incomplete + write_signed_short: Incomplete class ImageFileDirectory_v1(ImageFileDirectory_v2): def __init__(self, *args, **kwargs) -> None: ... @@ -154,6 +177,8 @@ class TiffImageFile(ImageFile): im: Any def seek(self, frame) -> None: ... def tell(self): ... + def getxmp(self): ... + def get_photoshop_blocks(self): ... def load(self) -> _PixelAccessor: ... def load_end(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi index 30a7e9d72..e23d03a7b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi @@ -1,6 +1,9 @@ from _typeshed import Incomplete from typing import Any, NamedTuple -from typing_extensions import Literal, TypeAlias +from typing_extensions import Final, Literal, TypeAlias + +_TagType: TypeAlias = Literal[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16] +_TagTuple: TypeAlias = tuple[str, _TagType, int] | tuple[str, _TagInfo, int, dict[str, int]] class _TagInfo(NamedTuple): value: Any @@ -22,23 +25,20 @@ class TagInfo(_TagInfo): def lookup(tag: int, group: int | None = None) -> _TagInfo: ... -BYTE: Literal[1] -ASCII: Literal[2] -SHORT: Literal[3] -LONG: Literal[4] -RATIONAL: Literal[5] -SIGNED_BYTE: Literal[6] -UNDEFINED: Literal[7] -SIGNED_SHORT: Literal[8] -SIGNED_LONG: Literal[9] -SIGNED_RATIONAL: Literal[10] -FLOAT: Literal[11] -DOUBLE: Literal[12] -IFD: Literal[13] - -_TagType: TypeAlias = Literal[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] -_TagTuple: TypeAlias = tuple[str, _TagType, int] | tuple[str, _TagInfo, int, dict[str, int]] - +BYTE: Final = 1 +ASCII: Final = 2 +SHORT: Final = 3 +LONG: Final = 4 +RATIONAL: Final = 5 +SIGNED_BYTE: Final = 6 +UNDEFINED: Final = 7 +SIGNED_SHORT: Final = 8 +SIGNED_LONG: Final = 9 +SIGNED_RATIONAL: Final = 10 +FLOAT: Final = 11 +DOUBLE: Final = 12 +IFD: Final = 13 +LONG8: Final = 16 TAGS_V2: dict[int, _TagTuple] TAGS_V2_GROUPS: dict[int, dict[int, _TagTuple]] TAGS: dict[int, str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_binary.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_binary.pyi index a6a62b7ba..0dc99fc48 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_binary.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_binary.pyi @@ -2,6 +2,7 @@ def i8(c): ... def o8(i): ... def i16le(c, o: int = 0): ... def si16le(c, o: int = 0): ... +def si16be(c, o: int = 0): ... def i32le(c, o: int = 0): ... def si32le(c, o: int = 0): ... def i16be(c, o: int = 0): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/_util.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml index 50057fed1..b9b1827ff 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml @@ -1,4 +1,5 @@ version = "1.0.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml index 1a86c302a..ed69afcdb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml @@ -1,5 +1,6 @@ version = "2.15.*" requires = ["types-docutils", "types-setuptools"] +partial_stub = true [tool.stubtest] stubtest_requirements = ["sphinx"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml index ee7e83f3e..8a1eb1a6d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml @@ -1,4 +1,5 @@ version = "1.8.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml index 4a08bb074..dc525a938 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml @@ -1,4 +1,5 @@ version = "2.12.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml index 137f94d40..7dc2c18b4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml @@ -1,6 +1,7 @@ version = "2.11.*" requires = ["types-pytz"] obsolete_since = "2.12.1" # Released on 2023-02-28 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml index b152aa7ac..9be859b59 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml @@ -1,5 +1,6 @@ version = "4.12.*" requires = ["types-html5lib"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/bleach/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/bleach/METADATA.toml index 5221c4123..276fbcfb4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/bleach/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/bleach/METADATA.toml @@ -1,4 +1,5 @@ version = "6.0.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/boto/METADATA.toml index ca0c1fad6..d6d7bfb95 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/METADATA.toml @@ -1,5 +1,6 @@ version = "2.49.*" requires = [] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml index b866d119a..04a023450 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml @@ -1,4 +1,5 @@ version = "4.19.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/caldav/METADATA.toml index 7781cfecf..047218cc5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/METADATA.toml @@ -1,6 +1,7 @@ version = "1.2.*" # also types-lxml and types-icalendar when those stubs are added requires = ["types-requests", "types-vobject"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml index a8d4f2a04..7e95f1f53 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml @@ -1,5 +1,6 @@ version = "5.0.*" obsolete_since = "5.1.0" # Released on 2022-12-01 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/commonmark/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/commonmark/METADATA.toml index 31ce4482b..e711a71bf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/commonmark/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/commonmark/METADATA.toml @@ -1,4 +1,5 @@ version = "0.9.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/docutils/METADATA.toml index 1647ad358..647482d55 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/METADATA.toml @@ -1,4 +1,5 @@ -version = "0.19.*" +version = "0.20.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi index 33f36fe20..4059cd0d6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/nodes.pyi @@ -76,7 +76,6 @@ class Node: siblings: bool = False, ascend: bool = False, ) -> Node: ... - def previous_sibling(self) -> Node | None: ... class Element(Node): children: list[Node] @@ -110,6 +109,7 @@ class Element(Node): def index(self, item: Node, start: int = 0, stop: int = sys.maxsize) -> int: ... def remove(self, item: Node) -> None: ... def insert(self, index: SupportsIndex, item: Node | Iterable[Node] | None) -> None: ... + def previous_sibling(self) -> Node | None: ... def __getattr__(self, __name: str) -> Incomplete: ... class TextElement(Element): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/utils/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/utils/__init__.pyi index 9ed328dc6..cdd0065a3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/utils/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/docutils/utils/__init__.pyi @@ -11,7 +11,7 @@ from docutils.nodes import document class DependencyList: list: _list[str] file: FileOutput | None - def __init__(self, output_file: str | None = None, dependencies: Iterable[str] = []) -> None: ... + def __init__(self, output_file: str | None = None, dependencies: Iterable[str] = ()) -> None: ... def set_output(self, output_file: str | None) -> None: ... def add(self, *filenames: str) -> None: ... def close(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/emoji/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/emoji/METADATA.toml deleted file mode 100644 index b0a6e7c5f..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/emoji/METADATA.toml +++ /dev/null @@ -1,2 +0,0 @@ -version = "2.1.*" -obsolete_since = "2.2.0" # Released on 2022-10-31 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/__init__.pyi deleted file mode 100644 index d81dfe628..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/__init__.pyi +++ /dev/null @@ -1,30 +0,0 @@ -from .core import ( - demojize as demojize, - distinct_emoji_list as distinct_emoji_list, - emoji_count as emoji_count, - emoji_list as emoji_list, - emojize as emojize, - is_emoji as is_emoji, - replace_emoji as replace_emoji, - version as version, -) -from .unicode_codes import EMOJI_DATA, LANGUAGES, STATUS - -__all__ = [ - "emojize", - "demojize", - "emoji_count", - "emoji_list", - "distinct_emoji_list", - "replace_emoji", - "version", - "is_emoji", - "EMOJI_DATA", - "STATUS", - "LANGUAGES", -] -__version__: str -__author__: str -__email__: str -__source__: str -__license__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/core.pyi deleted file mode 100644 index 5dfdfc171..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/core.pyi +++ /dev/null @@ -1,31 +0,0 @@ -from collections.abc import Callable -from typing_extensions import Literal, TypedDict - -_DEFAULT_DELIMITER: str - -class _EmojiListReturn(TypedDict): - emoji: str - match_start: int - match_end: int - -def emojize( - string: str, - delimiters: tuple[str, str] = (":", ":"), - variant: Literal["text_type", "emoji_type", None] = None, - language: str = "en", - version: float | None = None, - handle_version: str | Callable[[str, dict[str, str]], str] | None = None, -) -> str: ... -def demojize( - string: str, - delimiters: tuple[str, str] = (":", ":"), - language: str = "en", - version: float | None = None, - handle_version: str | Callable[[str, dict[str, str]], str] | None = None, -) -> str: ... -def replace_emoji(string: str, replace: str | Callable[[str, dict[str, str]], str] = "", version: float = -1) -> str: ... -def emoji_list(string: str) -> list[_EmojiListReturn]: ... -def distinct_emoji_list(string: str) -> list[str]: ... -def emoji_count(string: str, unique: bool = False) -> int: ... -def version(string: str) -> float: ... -def is_emoji(string: str) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/unicode_codes/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/unicode_codes/__init__.pyi deleted file mode 100644 index 9e698a6b5..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/unicode_codes/__init__.pyi +++ /dev/null @@ -1,6 +0,0 @@ -from .data_dict import * - -__all__ = ["get_emoji_unicode_dict", "get_aliases_unicode_dict", "EMOJI_DATA", "STATUS", "LANGUAGES"] - -def get_emoji_unicode_dict(lang: str) -> dict[str, str]: ... -def get_aliases_unicode_dict() -> dict[str, str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/unicode_codes/data_dict.pyi b/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/unicode_codes/data_dict.pyi deleted file mode 100644 index ffbd89d05..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/emoji/emoji/unicode_codes/data_dict.pyi +++ /dev/null @@ -1,6 +0,0 @@ -from _typeshed import Incomplete - -__all__ = ["EMOJI_DATA", "STATUS", "LANGUAGES"] -STATUS: dict[str, int] -LANGUAGES: list[str] -EMOJI_DATA: dict[str, dict[str, Incomplete]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-2020/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-2020/METADATA.toml index ef7966007..690242a33 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-2020/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-2020/METADATA.toml @@ -1 +1 @@ -version = "1.7.*" +version = "1.8.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml index f281c01fb..08572dfc9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml @@ -1,4 +1,5 @@ -version = "23.3.23" +version = "23.5.9" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-builtins/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-builtins/METADATA.toml index db11b9ead..437b55a26 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-builtins/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-builtins/METADATA.toml @@ -1,4 +1,5 @@ version = "2.1.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-docstrings/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-docstrings/METADATA.toml index bf44fdd13..4ec4b2b4c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-docstrings/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-docstrings/METADATA.toml @@ -1,4 +1,5 @@ version = "1.7.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml index 9a01e52f1..8e38e593b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml @@ -1,4 +1,5 @@ version = "1.3.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-rst-docstrings/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-rst-docstrings/METADATA.toml index c8abb998f..a116b6d71 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-rst-docstrings/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-rst-docstrings/METADATA.toml @@ -1,4 +1,5 @@ version = "0.3.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml index a11150fa1..647482d55 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml @@ -1,4 +1,5 @@ version = "0.20.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-typing-imports/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-typing-imports/METADATA.toml index 93e1f8e07..ebd7f83a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-typing-imports/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-typing-imports/METADATA.toml @@ -1,4 +1,5 @@ version = "1.14.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi index da49d9599..d1607c6e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/fpdf/fpdf.pyi @@ -548,8 +548,8 @@ class FPDF(GraphicsStateMixin): dest: Unused = "", linearize: bool = False, output_producer_class: Callable[[FPDF], OutputProducer] = ..., - ) -> None: ... + ) -> bytearray: ... @overload def output( self, name: str, dest: Unused = "", linearize: bool = False, output_producer_class: Callable[[FPDF], OutputProducer] = ... - ) -> bytearray: ... + ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml index 63fe58dfb..10e0f7f8d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml @@ -1,4 +1,5 @@ version = "2.1.*" +partial_stub = true [tool.stubtest] stubtest_requirements = ["protobuf==3.20.2"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/METADATA.toml index 0d6ac713a..80bcc75dc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/METADATA.toml @@ -1,4 +1,5 @@ version = "1.1.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/invoke/METADATA.toml index d9b8010e5..0b2ff5be2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/METADATA.toml @@ -1,4 +1,6 @@ version = "2.0.*" +obsolete_since = "2.1.2" # Released on 2023-05-15 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/METADATA.toml index d5dbdb975..b4f510c3d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/METADATA.toml @@ -1,4 +1,5 @@ version = "4.17.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/METADATA.toml index 9159fae4d..3c34f864a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/METADATA.toml @@ -1,5 +1,6 @@ version = "2.9.*" requires = ["types-pyasn1"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/METADATA.toml index ab10fefcb..67c8b5c62 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/METADATA.toml @@ -1,4 +1,5 @@ version = "3.2.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml index b34a69a3b..3d4e5c5a3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml @@ -1,4 +1,5 @@ version = "3.1.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi index e084bdec8..0100282c0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi @@ -1,14 +1,15 @@ from collections.abc import Iterable from typing import overload -from typing_extensions import Self +from typing_extensions import Literal, Self +from openpyxl.cell.text import InlineFont from openpyxl.descriptors import Strict, String, Typed class TextBlock(Strict): - font: Typed - text: String + font: Typed[InlineFont, Literal[False]] + text: String[Literal[False]] - def __init__(self, font: Typed, text: String) -> None: ... + def __init__(self, font: InlineFont, text: str) -> None: ... def __eq__(self, other: TextBlock) -> bool: ... # type: ignore[override] class CellRichText(list[str | TextBlock]): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi index 975890ee1..909358848 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi @@ -1,24 +1,35 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Alias, Integer, NoneSet, Typed, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable from openpyxl.styles.fonts import Font +_PhoneticPropertiesType: TypeAlias = Literal["halfwidthKatakana", "fullwidthKatakana", "Hiragana", "noConversion"] +_PhoneticPropertiesAlignment: TypeAlias = Literal["noControl", "left", "center", "distributed"] + class PhoneticProperties(Serialisable): tagname: str - fontId: Incomplete - type: Incomplete - alignment: Incomplete + fontId: Integer[Literal[False]] + type: NoneSet[_PhoneticPropertiesType] + alignment: NoneSet[_PhoneticPropertiesAlignment] def __init__( - self, fontId: Incomplete | None = None, type: Incomplete | None = None, alignment: Incomplete | None = None + self, + fontId: _ConvertibleToInt, + type: _PhoneticPropertiesType | Literal["none"] | None = None, + alignment: _PhoneticPropertiesAlignment | Literal["none"] | None = None, ) -> None: ... +_PhoneticProperties: TypeAlias = PhoneticProperties + class PhoneticText(Serialisable): tagname: str - sb: Incomplete - eb: Incomplete + sb: Integer[Literal[False]] + eb: Integer[Literal[False]] t: Incomplete - text: Incomplete - def __init__(self, sb: Incomplete | None = None, eb: Incomplete | None = None, t: Incomplete | None = None) -> None: ... + text: Alias + def __init__(self, sb: _ConvertibleToInt, eb: _ConvertibleToInt, t: Incomplete | None = None) -> None: ... class InlineFont(Font): tagname: str @@ -37,7 +48,7 @@ class InlineFont(Font): u: Incomplete vertAlign: Incomplete scheme: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, rFont: Incomplete | None = None, @@ -59,24 +70,24 @@ class InlineFont(Font): class RichText(Serialisable): tagname: str - rPr: Incomplete - font: Incomplete + rPr: Typed[InlineFont, Literal[True]] + font: Alias t: Incomplete - text: Incomplete - __elements__: Incomplete - def __init__(self, rPr: Incomplete | None = None, t: Incomplete | None = None) -> None: ... + text: Alias + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, rPr: InlineFont | None = None, t: Incomplete | None = None) -> None: ... class Text(Serialisable): tagname: str t: Incomplete - plain: Incomplete + plain: Alias r: Incomplete - formatted: Incomplete + formatted: Alias rPh: Incomplete - phonetic: Incomplete - phoneticPr: Incomplete - PhoneticProperties: Incomplete - __elements__: Incomplete - def __init__(self, t: Incomplete | None = None, r=(), rPh=(), phoneticPr: Incomplete | None = None) -> None: ... + phonetic: Alias + phoneticPr: Typed[_PhoneticProperties, Literal[True]] + PhoneticProperties: Alias + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, t: Incomplete | None = None, r=(), rPh=(), phoneticPr: _PhoneticProperties | None = None) -> None: ... @property def content(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi index 24a5dab5b..d11b2af0a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi @@ -1,21 +1,27 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.picture import PictureOptions +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class View3D(Serialisable): tagname: str rotX: Incomplete - x_rotation: Incomplete + x_rotation: Alias hPercent: Incomplete - height_percent: Incomplete + height_percent: Alias rotY: Incomplete - y_rotation: Incomplete + y_rotation: Alias depthPercent: Incomplete rAngAx: Incomplete - right_angle_axes: Incomplete + right_angle_axes: Alias perspective: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, rotX: int = 15, @@ -24,35 +30,35 @@ class View3D(Serialisable): depthPercent: Incomplete | None = None, rAngAx: bool = True, perspective: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, ) -> None: ... class Surface(Serialisable): tagname: str thickness: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - pictureOptions: Incomplete - extLst: Incomplete - __elements__: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + pictureOptions: Typed[PictureOptions, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, thickness: Incomplete | None = None, - spPr: Incomplete | None = None, - pictureOptions: Incomplete | None = None, - extLst: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + pictureOptions: PictureOptions | None = None, + extLst: Unused = None, ) -> None: ... class _3DBase(Serialisable): tagname: str - view3D: Incomplete - floor: Incomplete - sideWall: Incomplete - backWall: Incomplete + view3D: Typed[View3D, Literal[True]] + floor: Typed[Surface, Literal[True]] + sideWall: Typed[Surface, Literal[True]] + backWall: Typed[Surface, Literal[True]] def __init__( self, - view3D: Incomplete | None = None, - floor: Incomplete | None = None, - sideWall: Incomplete | None = None, - backWall: Incomplete | None = None, + view3D: View3D | None = None, + floor: Surface | None = None, + sideWall: Surface | None = None, + backWall: Surface | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi index b4833baa9..405748b58 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi @@ -1,36 +1,44 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from abc import abstractmethod +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.chart.layout import Layout +from openpyxl.chart.legend import Legend +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.descriptors.base import Alias, Bool, Integer, MinMax, Set, Typed, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -class AxId(Serialisable): # type: ignore[misc] - val: Incomplete - def __init__(self, val) -> None: ... +_ChartBaseDisplayBlanks: TypeAlias = Literal["span", "gap", "zero"] + +class AxId(Serialisable): + val: Integer[Literal[False]] + def __init__(self, val: _ConvertibleToInt) -> None: ... def PlotArea(): ... class ChartBase(Serialisable): - legend: Incomplete - layout: Incomplete - roundedCorners: Incomplete + legend: Typed[Legend, Literal[True]] + layout: Typed[Layout, Literal[True]] + roundedCorners: Bool[Literal[True]] axId: Incomplete - visible_cells_only: Incomplete - display_blanks: Incomplete + visible_cells_only: Bool[Literal[True]] + display_blanks: Set[_ChartBaseDisplayBlanks] ser: Incomplete - series: Incomplete + series: Alias title: Incomplete anchor: str width: int height: float - style: Incomplete + style: MinMax[float, Literal[True]] mime_type: str - graphical_properties: Incomplete - __elements__: Incomplete + graphical_properties: Typed[GraphicalProperties, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] plot_area: Incomplete pivotSource: Incomplete pivotFormats: Incomplete idx_base: int - def __init__(self, axId=(), **kw) -> None: ... + def __init__(self, axId=(), **kw: Unused) -> None: ... def __hash__(self) -> int: ... def __iadd__(self, other): ... def to_tree(self, namespace: Incomplete | None = None, tagname: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi index 3fb48ecbc..c9b82946d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi @@ -1,5 +1,12 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from abc import abstractmethod +from typing import ClassVar +from typing_extensions import Literal + +from openpyxl.chart.axis import ChartLines, NumericAxis, SeriesAxis, TextAxis +from openpyxl.chart.label import DataLabelList +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from ._chart import ChartBase @@ -7,17 +14,17 @@ class _AreaChartBase(ChartBase): grouping: Incomplete varyColors: Incomplete ser: Incomplete - dLbls: Incomplete - dataLabels: Incomplete - dropLines: Incomplete - __elements__: Incomplete + dLbls: Typed[DataLabelList, Literal[True]] + dataLabels: Alias + dropLines: Typed[ChartLines, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, grouping: str = "standard", varyColors: Incomplete | None = None, ser=(), - dLbls: Incomplete | None = None, - dropLines: Incomplete | None = None, + dLbls: DataLabelList | None = None, + dropLines: ChartLines | None = None, ) -> None: ... @property @abstractmethod @@ -30,11 +37,11 @@ class AreaChart(_AreaChartBase): ser: Incomplete dLbls: Incomplete dropLines: Incomplete - x_axis: Incomplete - y_axis: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, axId: Incomplete | None = None, extLst: Incomplete | None = None, **kw) -> None: ... + x_axis: Typed[TextAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, axId: Unused = None, extLst: Unused = None, **kw) -> None: ... class AreaChart3D(AreaChart): tagname: str @@ -44,8 +51,8 @@ class AreaChart3D(AreaChart): dLbls: Incomplete dropLines: Incomplete gapDepth: Incomplete - x_axis: Incomplete - y_axis: Incomplete - z_axis: Incomplete - __elements__: Incomplete + x_axis: Typed[TextAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + z_axis: Typed[SeriesAxis, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__(self, gapDepth: Incomplete | None = None, **kw) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi index 35b7e2463..258437879 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi @@ -1,13 +1,20 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from abc import abstractmethod +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.layout import Layout +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.text import RichText, Text +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class ChartLines(Serialisable): tagname: str - spPr: Incomplete - graphicalProperties: Incomplete - def __init__(self, spPr: Incomplete | None = None) -> None: ... + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + def __init__(self, spPr: GraphicalProperties | None = None) -> None: ... class Scaling(Serialisable): tagname: str @@ -15,53 +22,53 @@ class Scaling(Serialisable): orientation: Incomplete max: Incomplete min: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, logBase: Incomplete | None = None, orientation: str = "minMax", max: Incomplete | None = None, min: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, ) -> None: ... class _BaseAxis(Serialisable): axId: Incomplete - scaling: Incomplete + scaling: Typed[Scaling, Literal[False]] delete: Incomplete axPos: Incomplete - majorGridlines: Incomplete - minorGridlines: Incomplete + majorGridlines: Typed[ChartLines, Literal[True]] + minorGridlines: Typed[ChartLines, Literal[True]] title: Incomplete numFmt: Incomplete - number_format: Incomplete + number_format: Alias majorTickMark: Incomplete minorTickMark: Incomplete tickLblPos: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - txPr: Incomplete - textProperties: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + txPr: Typed[RichText, Literal[True]] + textProperties: Alias crossAx: Incomplete crosses: Incomplete crossesAt: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, axId: Incomplete | None = None, - scaling: Incomplete | None = None, + scaling: Scaling | None = None, delete: Incomplete | None = None, axPos: str = "l", - majorGridlines: Incomplete | None = None, - minorGridlines: Incomplete | None = None, + majorGridlines: ChartLines | None = None, + minorGridlines: ChartLines | None = None, title: Incomplete | None = None, numFmt: Incomplete | None = None, majorTickMark: Incomplete | None = None, minorTickMark: Incomplete | None = None, tickLblPos: Incomplete | None = None, - spPr: Incomplete | None = None, - txPr: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, crossAx: Incomplete | None = None, crosses: Incomplete | None = None, crossesAt: Incomplete | None = None, @@ -72,35 +79,35 @@ class _BaseAxis(Serialisable): class DisplayUnitsLabel(Serialisable): tagname: str - layout: Incomplete - tx: Incomplete - text: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - txPr: Incomplete - textPropertes: Incomplete - __elements__: Incomplete + layout: Typed[Layout, Literal[True]] + tx: Typed[Text, Literal[True]] + text: Alias + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + txPr: Typed[RichText, Literal[True]] + textPropertes: Alias + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - layout: Incomplete | None = None, - tx: Incomplete | None = None, - spPr: Incomplete | None = None, - txPr: Incomplete | None = None, + layout: Layout | None = None, + tx: Text | None = None, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, ) -> None: ... class DisplayUnitsLabelList(Serialisable): tagname: str custUnit: Incomplete builtInUnit: Incomplete - dispUnitsLbl: Incomplete - extLst: Incomplete - __elements__: Incomplete + dispUnitsLbl: Typed[DisplayUnitsLabel, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, custUnit: Incomplete | None = None, builtInUnit: Incomplete | None = None, - dispUnitsLbl: Incomplete | None = None, - extLst: Incomplete | None = None, + dispUnitsLbl: DisplayUnitsLabel | None = None, + extLst: Unused = None, ) -> None: ... class NumericAxis(_BaseAxis): @@ -124,16 +131,16 @@ class NumericAxis(_BaseAxis): crossBetween: Incomplete majorUnit: Incomplete minorUnit: Incomplete - dispUnits: Incomplete - extLst: Incomplete - __elements__: Incomplete + dispUnits: Typed[DisplayUnitsLabelList, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, crossBetween: Incomplete | None = None, majorUnit: Incomplete | None = None, minorUnit: Incomplete | None = None, - dispUnits: Incomplete | None = None, - extLst: Incomplete | None = None, + dispUnits: DisplayUnitsLabelList | None = None, + extLst: Unused = None, **kw, ) -> None: ... @classmethod @@ -163,8 +170,8 @@ class TextAxis(_BaseAxis): tickLblSkip: Incomplete tickMarkSkip: Incomplete noMultiLvlLbl: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, auto: Incomplete | None = None, @@ -173,7 +180,7 @@ class TextAxis(_BaseAxis): tickLblSkip: Incomplete | None = None, tickMarkSkip: Incomplete | None = None, noMultiLvlLbl: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, **kw, ) -> None: ... @@ -202,8 +209,8 @@ class DateAxis(TextAxis): majorTimeUnit: Incomplete minorUnit: Incomplete minorTimeUnit: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, auto: Incomplete | None = None, @@ -213,7 +220,7 @@ class DateAxis(TextAxis): majorTimeUnit: Incomplete | None = None, minorUnit: Incomplete | None = None, minorTimeUnit: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, **kw, ) -> None: ... @@ -237,12 +244,8 @@ class SeriesAxis(_BaseAxis): crossesAt: Incomplete tickLblSkip: Incomplete tickMarkSkip: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, - tickLblSkip: Incomplete | None = None, - tickMarkSkip: Incomplete | None = None, - extLst: Incomplete | None = None, - **kw, + self, tickLblSkip: Incomplete | None = None, tickMarkSkip: Incomplete | None = None, extLst: Unused = None, **kw ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi index f6ca9b733..f06b54c64 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi @@ -1,25 +1,32 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from abc import abstractmethod +from typing import ClassVar +from typing_extensions import Literal + +from openpyxl.chart.axis import ChartLines, NumericAxis, SeriesAxis, TextAxis +from openpyxl.chart.label import DataLabelList +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from ._3d import _3DBase from ._chart import ChartBase class _BarChartBase(ChartBase): barDir: Incomplete - type: Incomplete + type: Alias grouping: Incomplete varyColors: Incomplete ser: Incomplete - dLbls: Incomplete - dataLabels: Incomplete - __elements__: Incomplete + dLbls: Typed[DataLabelList, Literal[True]] + dataLabels: Alias + __elements__: ClassVar[tuple[str, ...]] def __init__( self, barDir: str = "col", grouping: str = "clustered", varyColors: Incomplete | None = None, ser=(), - dLbls: Incomplete | None = None, + dLbls: DataLabelList | None = None, **kw, ) -> None: ... @property @@ -35,18 +42,18 @@ class BarChart(_BarChartBase): dLbls: Incomplete gapWidth: Incomplete overlap: Incomplete - serLines: Incomplete - extLst: Incomplete - x_axis: Incomplete - y_axis: Incomplete - __elements__: Incomplete + serLines: Typed[ChartLines, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + x_axis: Typed[TextAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] legend: Incomplete def __init__( self, gapWidth: int = 150, overlap: Incomplete | None = None, - serLines: Incomplete | None = None, - extLst: Incomplete | None = None, + serLines: ChartLines | None = None, + extLst: Unused = None, **kw, ) -> None: ... @@ -64,18 +71,18 @@ class BarChart3D(_BarChartBase, _3DBase): gapWidth: Incomplete gapDepth: Incomplete shape: Incomplete - serLines: Incomplete - extLst: Incomplete - x_axis: Incomplete - y_axis: Incomplete - z_axis: Incomplete - __elements__: Incomplete + serLines: Typed[ChartLines, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + x_axis: Typed[TextAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + z_axis: Typed[SeriesAxis, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, gapWidth: int = 150, gapDepth: int = 150, shape: Incomplete | None = None, - serLines: Incomplete | None = None, - extLst: Incomplete | None = None, + serLines: ChartLines | None = None, + extLst: Unused = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi index e3f9130ef..a1ba6637d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi @@ -1,4 +1,11 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal + +from openpyxl.chart.axis import NumericAxis +from openpyxl.chart.label import DataLabelList +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from ._chart import ChartBase @@ -6,25 +13,25 @@ class BubbleChart(ChartBase): tagname: str varyColors: Incomplete ser: Incomplete - dLbls: Incomplete - dataLabels: Incomplete + dLbls: Typed[DataLabelList, Literal[True]] + dataLabels: Alias bubble3D: Incomplete bubbleScale: Incomplete showNegBubbles: Incomplete sizeRepresents: Incomplete - extLst: Incomplete - x_axis: Incomplete - y_axis: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + x_axis: Typed[NumericAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, varyColors: Incomplete | None = None, ser=(), - dLbls: Incomplete | None = None, + dLbls: DataLabelList | None = None, bubble3D: Incomplete | None = None, bubbleScale: Incomplete | None = None, showNegBubbles: Incomplete | None = None, sizeRepresents: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi index 4b0e1aac8..ad1da05ff 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi @@ -1,38 +1,50 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar, overload +from typing_extensions import Literal +from openpyxl.chart.legend import Legend +from openpyxl.chart.pivot import PivotSource +from openpyxl.chart.plotarea import PlotArea +from openpyxl.chart.print_settings import PrintSettings +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.text import RichText +from openpyxl.chart.title import Title +from openpyxl.descriptors.base import Alias, String, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.colors import ColorMapping class ChartContainer(Serialisable): tagname: str - title: Incomplete + title: Typed[Title, Literal[True]] autoTitleDeleted: Incomplete pivotFmts: Incomplete view3D: Incomplete floor: Incomplete sideWall: Incomplete backWall: Incomplete - plotArea: Incomplete - legend: Incomplete + plotArea: Typed[PlotArea, Literal[False]] + legend: Typed[Legend, Literal[True]] plotVisOnly: Incomplete dispBlanksAs: Incomplete showDLblsOverMax: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - title: Incomplete | None = None, + title: Title | None = None, autoTitleDeleted: Incomplete | None = None, pivotFmts=(), view3D: Incomplete | None = None, floor: Incomplete | None = None, sideWall: Incomplete | None = None, backWall: Incomplete | None = None, - plotArea: Incomplete | None = None, - legend: Incomplete | None = None, + plotArea: PlotArea | None = None, + legend: Legend | None = None, plotVisOnly: bool = True, dispBlanksAs: str = "gap", showDLblsOverMax: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, ) -> None: ... class Protection(Serialisable): @@ -42,7 +54,7 @@ class Protection(Serialisable): formatting: Incomplete selection: Incomplete userInterface: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, chartObject: Incomplete | None = None, @@ -55,8 +67,11 @@ class Protection(Serialisable): class ExternalData(Serialisable): tagname: str autoUpdate: Incomplete - id: Incomplete - def __init__(self, autoUpdate: Incomplete | None = None, id: Incomplete | None = None) -> None: ... + id: String[Literal[False]] + @overload + def __init__(self, autoUpdate: Incomplete | None = None, *, id: str) -> None: ... + @overload + def __init__(self, autoUpdate: Incomplete | None, id: str) -> None: ... class ChartSpace(Serialisable): tagname: str @@ -64,34 +79,54 @@ class ChartSpace(Serialisable): lang: Incomplete roundedCorners: Incomplete style: Incomplete - clrMapOvr: Incomplete - pivotSource: Incomplete - protection: Incomplete - chart: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - txPr: Incomplete - textProperties: Incomplete - externalData: Incomplete - printSettings: Incomplete + clrMapOvr: Typed[ColorMapping, Literal[True]] + pivotSource: Typed[PivotSource, Literal[True]] + protection: Typed[Protection, Literal[True]] + chart: Typed[ChartContainer, Literal[False]] + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + txPr: Typed[RichText, Literal[True]] + textProperties: Alias + externalData: Typed[ExternalData, Literal[True]] + printSettings: Typed[PrintSettings, Literal[True]] userShapes: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, date1904: Incomplete | None = None, lang: Incomplete | None = None, roundedCorners: Incomplete | None = None, style: Incomplete | None = None, - clrMapOvr: Incomplete | None = None, - pivotSource: Incomplete | None = None, - protection: Incomplete | None = None, - chart: Incomplete | None = None, - spPr: Incomplete | None = None, - txPr: Incomplete | None = None, - externalData: Incomplete | None = None, - printSettings: Incomplete | None = None, + clrMapOvr: ColorMapping | None = None, + pivotSource: PivotSource | None = None, + protection: Protection | None = None, + *, + chart: ChartContainer, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, + externalData: ExternalData | None = None, + printSettings: PrintSettings | None = None, userShapes: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, + ) -> None: ... + @overload + def __init__( + self, + date1904: Incomplete | None, + lang: Incomplete | None, + roundedCorners: Incomplete | None, + style: Incomplete | None, + clrMapOvr: ColorMapping | None, + pivotSource: PivotSource | None, + protection: Protection | None, + chart: ChartContainer, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, + externalData: ExternalData | None = None, + printSettings: PrintSettings | None = None, + userShapes: Incomplete | None = None, + extLst: Unused = None, ) -> None: ... def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi index 1210fb47a..613f97de0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi @@ -1,111 +1,115 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar, NoReturn, overload +from typing_extensions import Literal +from openpyxl.descriptors import Strict +from openpyxl.descriptors.base import Alias, Bool, Integer, String, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.nested import NestedText from openpyxl.descriptors.serialisable import Serialisable -class NumFmt(Serialisable): # type: ignore[misc] - formatCode: Incomplete - sourceLinked: Incomplete - def __init__(self, formatCode: Incomplete | None = None, sourceLinked: bool = False) -> None: ... +class NumFmt(Serialisable): + formatCode: String[Literal[False]] + sourceLinked: Bool[Literal[False]] + def __init__(self, formatCode: str, sourceLinked: _ConvertibleToBool = False) -> None: ... class NumberValueDescriptor(NestedText): allow_none: bool - expected_type: Incomplete - def __set__(self, instance, value) -> None: ... + expected_type: type[Incomplete] + def __set__(self, instance: Serialisable | Strict, value) -> None: ... # type: ignore[override] -class NumVal(Serialisable): # type: ignore[misc] - idx: Incomplete +class NumVal(Serialisable): + idx: Integer[Literal[False]] formatCode: Incomplete v: Incomplete - def __init__( - self, idx: Incomplete | None = None, formatCode: Incomplete | None = None, v: Incomplete | None = None - ) -> None: ... + def __init__(self, idx: _ConvertibleToInt, formatCode: Incomplete | None = None, v: Incomplete | None = None) -> None: ... -class NumData(Serialisable): # type: ignore[misc] +class NumData(Serialisable): formatCode: Incomplete ptCount: Incomplete pt: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, formatCode: Incomplete | None = None, ptCount: Incomplete | None = None, pt=(), extLst: Incomplete | None = None + self, formatCode: Incomplete | None = None, ptCount: Incomplete | None = None, pt=(), extLst: Unused = None ) -> None: ... -class NumRef(Serialisable): # type: ignore[misc] +class NumRef(Serialisable): f: Incomplete - ref: Incomplete - numCache: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__( - self, f: Incomplete | None = None, numCache: Incomplete | None = None, extLst: Incomplete | None = None - ) -> None: ... + ref: Alias + numCache: Typed[NumData, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, f: Incomplete | None = None, numCache: NumData | None = None, extLst: Unused = None) -> None: ... class StrVal(Serialisable): tagname: str - idx: Incomplete + idx: Integer[Literal[False]] v: Incomplete - def __init__(self, idx: int = 0, v: Incomplete | None = None) -> None: ... + def __init__(self, idx: _ConvertibleToInt = 0, v: Incomplete | None = None) -> None: ... class StrData(Serialisable): tagname: str ptCount: Incomplete pt: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, ptCount: Incomplete | None = None, pt=(), extLst: Incomplete | None = None) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, ptCount: Incomplete | None = None, pt=(), extLst: Unused = None) -> None: ... class StrRef(Serialisable): tagname: str f: Incomplete - strCache: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__( - self, f: Incomplete | None = None, strCache: Incomplete | None = None, extLst: Incomplete | None = None - ) -> None: ... + strCache: Typed[StrData, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, f: Incomplete | None = None, strCache: StrData | None = None, extLst: Unused = None) -> None: ... -class NumDataSource(Serialisable): # type: ignore[misc] - numRef: Incomplete - numLit: Incomplete - def __init__(self, numRef: Incomplete | None = None, numLit: Incomplete | None = None) -> None: ... +class NumDataSource(Serialisable): + numRef: Typed[NumRef, Literal[True]] + numLit: Typed[NumData, Literal[True]] + def __init__(self, numRef: NumRef | None = None, numLit: NumData | None = None) -> None: ... class Level(Serialisable): tagname: str pt: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, pt=()) -> None: ... class MultiLevelStrData(Serialisable): tagname: str - ptCount: Incomplete + ptCount: Integer[Literal[True]] lvl: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, ptCount: Incomplete | None = None, lvl=(), extLst: Incomplete | None = None) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, ptCount: _ConvertibleToInt | None = None, lvl=(), extLst: Unused = None) -> None: ... class MultiLevelStrRef(Serialisable): tagname: str f: Incomplete - multiLvlStrCache: Incomplete - extLst: Incomplete - __elements__: Incomplete + multiLvlStrCache: Typed[MultiLevelStrData, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, f: Incomplete | None = None, multiLvlStrCache: Incomplete | None = None, extLst: Incomplete | None = None + self, f: Incomplete | None = None, multiLvlStrCache: MultiLevelStrData | None = None, extLst: Unused = None ) -> None: ... class AxDataSource(Serialisable): tagname: str - numRef: Incomplete - numLit: Incomplete - strRef: Incomplete - strLit: Incomplete - multiLvlStrRef: Incomplete + numRef: Typed[NumRef, Literal[True]] + numLit: Typed[NumData, Literal[True]] + strRef: Typed[StrRef, Literal[True]] + strLit: Typed[StrData, Literal[True]] + multiLvlStrRef: Typed[MultiLevelStrRef, Literal[True]] + @overload + def __init__( + self, numRef: None = None, numLit: None = None, strRef: None = None, strLit: None = None, multiLvlStrRef: None = None + ) -> NoReturn: ... + @overload def __init__( self, - numRef: Incomplete | None = None, - numLit: Incomplete | None = None, - strRef: Incomplete | None = None, - strLit: Incomplete | None = None, - multiLvlStrRef: Incomplete | None = None, + numRef: NumRef | None = None, + numLit: NumData | None = None, + strRef: StrRef | None = None, + strLit: StrData | None = None, + multiLvlStrRef: MultiLevelStrRef | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/descriptors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/descriptors.pyi index 4c8407af4..8cd163b1d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/descriptors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/descriptors.pyi @@ -1,19 +1,22 @@ from _typeshed import Incomplete +from typing_extensions import Literal -from openpyxl.descriptors import Typed +from openpyxl.chart.data_source import NumFmt +from openpyxl.descriptors import Strict, Typed from openpyxl.descriptors.nested import NestedMinMax +from openpyxl.descriptors.serialisable import Serialisable class NestedGapAmount(NestedMinMax): allow_none: bool - min: int - max: int + min: float + max: float class NestedOverlap(NestedMinMax): allow_none: bool - min: int - max: int + min: float + max: float -class NumberFormatDescriptor(Typed): - expected_type: Incomplete - allow_none: bool - def __set__(self, instance, value) -> None: ... +class NumberFormatDescriptor(Typed[NumFmt, Incomplete]): + expected_type: type[NumFmt] + allow_none: Literal[True] + def __set__(self, instance: Serialisable | Strict, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi index ae21656be..922c7ce25 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi @@ -1,32 +1,38 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.data_source import NumDataSource +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class ErrorBars(Serialisable): tagname: str errDir: Incomplete - direction: Incomplete + direction: Alias errBarType: Incomplete - style: Incomplete + style: Alias errValType: Incomplete - size: Incomplete + size: Alias noEndCap: Incomplete - plus: Incomplete - minus: Incomplete + plus: Typed[NumDataSource, Literal[True]] + minus: Typed[NumDataSource, Literal[True]] val: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - extLst: Incomplete - __elements__: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, errDir: Incomplete | None = None, errBarType: str = "both", errValType: str = "fixedVal", noEndCap: Incomplete | None = None, - plus: Incomplete | None = None, - minus: Incomplete | None = None, + plus: NumDataSource | None = None, + minus: NumDataSource | None = None, val: Incomplete | None = None, - spPr: Incomplete | None = None, - extLst: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi index 520f48e3c..0473048ad 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi @@ -1,16 +1,22 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from abc import abstractmethod +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.text import RichText +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable as Serialisable class _DataLabelBase(Serialisable): numFmt: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - txPr: Incomplete - textProperties: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + txPr: Typed[RichText, Literal[True]] + textProperties: Alias dLblPos: Incomplete - position: Incomplete + position: Alias showLegendKey: Incomplete showVal: Incomplete showCatName: Incomplete @@ -19,13 +25,13 @@ class _DataLabelBase(Serialisable): showBubbleSize: Incomplete showLeaderLines: Incomplete separator: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, numFmt: Incomplete | None = None, - spPr: Incomplete | None = None, - txPr: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, dLblPos: Incomplete | None = None, showLegendKey: Incomplete | None = None, showVal: Incomplete | None = None, @@ -35,7 +41,7 @@ class _DataLabelBase(Serialisable): showBubbleSize: Incomplete | None = None, showLeaderLines: Incomplete | None = None, separator: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, ) -> None: ... @property @abstractmethod @@ -57,7 +63,7 @@ class DataLabel(_DataLabelBase): showLeaderLines: Incomplete separator: Incomplete extLst: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, idx: int = 0, **kw) -> None: ... class DataLabelList(_DataLabelBase): @@ -77,5 +83,5 @@ class DataLabelList(_DataLabelBase): showLeaderLines: Incomplete separator: Incomplete extLst: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, dLbl=(), delete: Incomplete | None = None, **kw) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi index dc6fcc14f..0d9b6a9cc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi @@ -1,5 +1,9 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class ManualLayout(Serialisable): @@ -12,11 +16,11 @@ class ManualLayout(Serialisable): x: Incomplete y: Incomplete w: Incomplete - width: Incomplete + width: Alias h: Incomplete - height: Incomplete - extLst: Incomplete - __elements__: Incomplete + height: Alias + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, layoutTarget: Incomplete | None = None, @@ -28,12 +32,12 @@ class ManualLayout(Serialisable): y: Incomplete | None = None, w: Incomplete | None = None, h: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, ) -> None: ... class Layout(Serialisable): tagname: str - manualLayout: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, manualLayout: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... + manualLayout: Typed[ManualLayout, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, manualLayout: ManualLayout | None = None, extLst: Unused = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi index 12c95b9a5..e7dfc21cf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi @@ -1,38 +1,43 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.layout import Layout +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.text import RichText +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class LegendEntry(Serialisable): tagname: str idx: Incomplete delete: Incomplete - txPr: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__( - self, idx: int = 0, delete: bool = False, txPr: Incomplete | None = None, extLst: Incomplete | None = None - ) -> None: ... + txPr: Typed[RichText, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, idx: int = 0, delete: bool = False, txPr: RichText | None = None, extLst: Unused = None) -> None: ... class Legend(Serialisable): tagname: str legendPos: Incomplete - position: Incomplete + position: Alias legendEntry: Incomplete - layout: Incomplete + layout: Typed[Layout, Literal[True]] overlay: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - txPr: Incomplete - textProperties: Incomplete - extLst: Incomplete - __elements__: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + txPr: Typed[RichText, Literal[True]] + textProperties: Alias + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, legendPos: str = "r", legendEntry=(), - layout: Incomplete | None = None, + layout: Layout | None = None, overlay: Incomplete | None = None, - spPr: Incomplete | None = None, - txPr: Incomplete | None = None, - extLst: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, + extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi index e15820a74..122b13fd7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi @@ -1,5 +1,13 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from abc import abstractmethod +from typing import ClassVar +from typing_extensions import Literal + +from openpyxl.chart.axis import ChartLines, NumericAxis, _BaseAxis +from openpyxl.chart.label import DataLabelList +from openpyxl.chart.updown_bars import UpDownBars +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from ._chart import ChartBase @@ -7,17 +15,17 @@ class _LineChartBase(ChartBase): grouping: Incomplete varyColors: Incomplete ser: Incomplete - dLbls: Incomplete - dataLabels: Incomplete - dropLines: Incomplete - __elements__: Incomplete + dLbls: Typed[DataLabelList, Literal[True]] + dataLabels: Alias + dropLines: Typed[ChartLines, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, grouping: str = "standard", varyColors: Incomplete | None = None, ser=(), - dLbls: Incomplete | None = None, - dropLines: Incomplete | None = None, + dLbls: DataLabelList | None = None, + dropLines: ChartLines | None = None, **kw, ) -> None: ... @property @@ -31,21 +39,21 @@ class LineChart(_LineChartBase): ser: Incomplete dLbls: Incomplete dropLines: Incomplete - hiLowLines: Incomplete - upDownBars: Incomplete + hiLowLines: Typed[ChartLines, Literal[True]] + upDownBars: Typed[UpDownBars, Literal[True]] marker: Incomplete smooth: Incomplete - extLst: Incomplete - x_axis: Incomplete - y_axis: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + x_axis: Typed[_BaseAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - hiLowLines: Incomplete | None = None, - upDownBars: Incomplete | None = None, + hiLowLines: ChartLines | None = None, + upDownBars: UpDownBars | None = None, marker: Incomplete | None = None, smooth: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, **kw, ) -> None: ... @@ -57,20 +65,20 @@ class LineChart3D(_LineChartBase): dLbls: Incomplete dropLines: Incomplete gapDepth: Incomplete - hiLowLines: Incomplete - upDownBars: Incomplete + hiLowLines: Typed[ChartLines, Literal[True]] + upDownBars: Typed[UpDownBars, Literal[True]] marker: Incomplete smooth: Incomplete - extLst: Incomplete - x_axis: Incomplete - y_axis: Incomplete - z_axis: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + x_axis: Typed[ExtensionList, Literal[False]] + y_axis: Typed[ExtensionList, Literal[False]] + z_axis: Typed[ExtensionList, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, gapDepth: Incomplete | None = None, - hiLowLines: Incomplete | None = None, - upDownBars: Incomplete | None = None, + hiLowLines: ChartLines | None = None, + upDownBars: UpDownBars | None = None, marker: Incomplete | None = None, smooth: Incomplete | None = None, **kw, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi index 07ff78671..1a19cf824 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi @@ -1,43 +1,49 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.picture import PictureOptions +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class Marker(Serialisable): tagname: str symbol: Incomplete size: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - extLst: Incomplete - __elements__: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, symbol: Incomplete | None = None, size: Incomplete | None = None, - spPr: Incomplete | None = None, - extLst: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + extLst: Unused = None, ) -> None: ... class DataPoint(Serialisable): tagname: str idx: Incomplete invertIfNegative: Incomplete - marker: Incomplete + marker: Typed[Marker, Literal[True]] bubble3D: Incomplete explosion: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - pictureOptions: Incomplete - extLst: Incomplete - __elements__: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + pictureOptions: Typed[PictureOptions, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, idx: Incomplete | None = None, invertIfNegative: Incomplete | None = None, - marker: Incomplete | None = None, + marker: Marker | None = None, bubble3D: Incomplete | None = None, explosion: Incomplete | None = None, - spPr: Incomplete | None = None, - pictureOptions: Incomplete | None = None, - extLst: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + pictureOptions: PictureOptions | None = None, + extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi index b5638bc00..ac155086d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete +from typing import ClassVar from openpyxl.descriptors.serialisable import Serialisable @@ -9,7 +10,7 @@ class PictureOptions(Serialisable): applyToEnd: Incomplete pictureFormat: Incomplete pictureStackUnit: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, applyToFront: Incomplete | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi index 392c060e3..ca6774611 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi @@ -1,6 +1,12 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from abc import abstractmethod +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.axis import ChartLines +from openpyxl.chart.label import DataLabelList +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable from ._chart import ChartBase @@ -8,10 +14,10 @@ from ._chart import ChartBase class _PieChartBase(ChartBase): varyColors: Incomplete ser: Incomplete - dLbls: Incomplete - dataLabels: Incomplete - __elements__: Incomplete - def __init__(self, varyColors: bool = True, ser=(), dLbls: Incomplete | None = None) -> None: ... + dLbls: Typed[DataLabelList, Literal[True]] + dataLabels: Alias + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, varyColors: bool = True, ser=(), dLbls: DataLabelList | None = None) -> None: ... @property @abstractmethod def tagname(self) -> str: ... @@ -22,17 +28,17 @@ class PieChart(_PieChartBase): ser: Incomplete dLbls: Incomplete firstSliceAng: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, firstSliceAng: int = 0, extLst: Incomplete | None = None, **kw) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, firstSliceAng: int = 0, extLst: Unused = None, **kw) -> None: ... class PieChart3D(_PieChartBase): tagname: str varyColors: Incomplete ser: Incomplete dLbls: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] class DoughnutChart(_PieChartBase): tagname: str @@ -41,14 +47,14 @@ class DoughnutChart(_PieChartBase): dLbls: Incomplete firstSliceAng: Incomplete holeSize: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, firstSliceAng: int = 0, holeSize: int = 10, extLst: Incomplete | None = None, **kw) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, firstSliceAng: int = 0, holeSize: int = 10, extLst: Unused = None, **kw) -> None: ... class CustomSplit(Serialisable): tagname: str secondPiePt: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, secondPiePt=()) -> None: ... class ProjectedPieChart(_PieChartBase): @@ -57,25 +63,25 @@ class ProjectedPieChart(_PieChartBase): ser: Incomplete dLbls: Incomplete ofPieType: Incomplete - type: Incomplete + type: Alias gapWidth: Incomplete splitType: Incomplete splitPos: Incomplete - custSplit: Incomplete + custSplit: Typed[CustomSplit, Literal[True]] secondPieSize: Incomplete - serLines: Incomplete - join_lines: Incomplete - extLst: Incomplete - __elements__: Incomplete + serLines: Typed[ChartLines, Literal[True]] + join_lines: Alias + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, ofPieType: str = "pie", gapWidth: Incomplete | None = None, splitType: str = "auto", splitPos: Incomplete | None = None, - custSplit: Incomplete | None = None, + custSplit: CustomSplit | None = None, secondPieSize: int = 75, - serLines: Incomplete | None = None, - extLst: Incomplete | None = None, + serLines: ChartLines | None = None, + extLst: Unused = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi index f0ebd05bb..2d9ae8111 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi @@ -1,35 +1,41 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.label import DataLabel as _DataLabel +from openpyxl.chart.marker import Marker +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.text import RichText +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class PivotSource(Serialisable): tagname: str name: Incomplete fmtId: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__( - self, name: Incomplete | None = None, fmtId: Incomplete | None = None, extLst: Incomplete | None = None - ) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, name: str | None = None, fmtId: Incomplete | None = None, extLst: Unused = None) -> None: ... class PivotFormat(Serialisable): tagname: str idx: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - txPr: Incomplete - TextBody: Incomplete - marker: Incomplete - dLbl: Incomplete - DataLabel: Incomplete - extLst: Incomplete - __elements__: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + txPr: Typed[RichText, Literal[True]] + TextBody: Alias + marker: Typed[Marker, Literal[True]] + dLbl: Typed[_DataLabel, Literal[True]] + DataLabel: Alias + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, idx: int = 0, - spPr: Incomplete | None = None, - txPr: Incomplete | None = None, - marker: Incomplete | None = None, - dLbl: Incomplete | None = None, - extLst: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, + marker: Marker | None = None, + dLbl: _DataLabel | None = None, + extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi index 6b23d92bc..ef67d2b57 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi @@ -1,5 +1,12 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.layout import Layout +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.text import RichText +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class DataTable(Serialisable): @@ -8,29 +15,29 @@ class DataTable(Serialisable): showVertBorder: Incomplete showOutline: Incomplete showKeys: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - txPr: Incomplete - extLst: Incomplete - __elements__: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + txPr: Typed[RichText, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, showHorzBorder: Incomplete | None = None, showVertBorder: Incomplete | None = None, showOutline: Incomplete | None = None, showKeys: Incomplete | None = None, - spPr: Incomplete | None = None, - txPr: Incomplete | None = None, - extLst: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, + extLst: Unused = None, ) -> None: ... class PlotArea(Serialisable): tagname: str - layout: Incomplete - dTable: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - extLst: Incomplete + layout: Typed[Layout, Literal[True]] + dTable: Typed[DataTable, Literal[True]] + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + extLst: Typed[ExtensionList, Literal[True]] areaChart: Incomplete area3DChart: Incomplete lineChart: Incomplete @@ -51,15 +58,15 @@ class PlotArea(Serialisable): catAx: Incomplete dateAx: Incomplete serAx: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - layout: Incomplete | None = None, - dTable: Incomplete | None = None, - spPr: Incomplete | None = None, + layout: Layout | None = None, + dTable: DataTable | None = None, + spPr: GraphicalProperties | None = None, _charts=(), _axes=(), - extLst: Incomplete | None = None, + extLst: Unused = None, ) -> None: ... def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... @classmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi index 5fb000ca7..c7f5ba881 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi @@ -1,29 +1,42 @@ -from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Alias, Float, Typed, _ConvertibleToFloat from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.worksheet.header_footer import HeaderFooter +from openpyxl.worksheet.page import PrintPageSetup class PageMargins(Serialisable): tagname: str - l: Incomplete - left: Incomplete - r: Incomplete - right: Incomplete - t: Incomplete - top: Incomplete - b: Incomplete - bottom: Incomplete - header: Incomplete - footer: Incomplete + l: Float[Literal[False]] + left: Alias + r: Float[Literal[False]] + right: Alias + t: Float[Literal[False]] + top: Alias + b: Float[Literal[False]] + bottom: Alias + header: Float[Literal[False]] + footer: Float[Literal[False]] def __init__( - self, l: float = 0.75, r: float = 0.75, t: int = 1, b: int = 1, header: float = 0.5, footer: float = 0.5 + self, + l: _ConvertibleToFloat = 0.75, + r: _ConvertibleToFloat = 0.75, + t: _ConvertibleToFloat = 1, + b: _ConvertibleToFloat = 1, + header: _ConvertibleToFloat = 0.5, + footer: _ConvertibleToFloat = 0.5, ) -> None: ... class PrintSettings(Serialisable): tagname: str - headerFooter: Incomplete - pageMargins: Incomplete - pageSetup: Incomplete - __elements__: Incomplete + headerFooter: Typed[HeaderFooter, Literal[True]] + pageMargins: Typed[PageMargins, Literal[True]] + pageSetup: Typed[PrintPageSetup, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, headerFooter: Incomplete | None = None, pageMargins: Incomplete | None = None, pageSetup: Incomplete | None = None + self, + headerFooter: HeaderFooter | None = None, + pageMargins: PageMargins | None = None, + pageSetup: PrintPageSetup | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi index a32595079..93cda0001 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi @@ -1,25 +1,32 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal + +from openpyxl.chart.axis import NumericAxis, TextAxis +from openpyxl.chart.label import DataLabelList +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from ._chart import ChartBase class RadarChart(ChartBase): tagname: str radarStyle: Incomplete - type: Incomplete + type: Alias varyColors: Incomplete ser: Incomplete - dLbls: Incomplete - dataLabels: Incomplete - extLst: Incomplete - x_axis: Incomplete - y_axis: Incomplete - __elements__: Incomplete + dLbls: Typed[DataLabelList, Literal[True]] + dataLabels: Alias + extLst: Typed[ExtensionList, Literal[True]] + x_axis: Typed[TextAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, radarStyle: str = "standard", varyColors: Incomplete | None = None, ser=(), - dLbls: Incomplete | None = None, - extLst: Incomplete | None = None, + dLbls: DataLabelList | None = None, + extLst: Unused = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/reference.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/reference.pyi index 10f0473d1..b36ab6766 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/reference.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/reference.pyi @@ -1,27 +1,42 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from collections.abc import Generator +from typing import overload +from typing_extensions import Literal from openpyxl.descriptors import Strict +from openpyxl.descriptors.base import MinMax, String, _ConvertibleToInt class DummyWorksheet: title: Incomplete def __init__(self, title) -> None: ... class Reference(Strict): - min_row: Incomplete - max_row: Incomplete - min_col: Incomplete - max_col: Incomplete - range_string: Incomplete - worksheet: Incomplete + min_row: MinMax[int, Literal[False]] + max_row: MinMax[int, Literal[False]] + min_col: MinMax[int, Literal[False]] + max_col: MinMax[int, Literal[False]] + range_string: String[Literal[True]] + worksheet: Incomplete | None + @overload def __init__( self, - worksheet: Incomplete | None = None, - min_col: Incomplete | None = None, - min_row: Incomplete | None = None, - max_col: Incomplete | None = None, - max_row: Incomplete | None = None, - range_string: Incomplete | None = None, + *, + worksheet: Unused = None, + min_col: Unused = None, + min_row: Unused = None, + max_col: Unused = None, + max_row: Unused = None, + range_string: str, + ) -> None: ... + @overload + def __init__( + self, + worksheet: Incomplete | None, + min_col: _ConvertibleToInt, + min_row: _ConvertibleToInt, + max_col: _ConvertibleToInt | None = None, + max_row: _ConvertibleToInt | None = None, + range_string: str | None = None, ) -> None: ... def __len__(self) -> int: ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi index b0a7e49e6..2aebe5b13 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi @@ -1,4 +1,11 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal + +from openpyxl.chart.axis import NumericAxis, TextAxis +from openpyxl.chart.label import DataLabelList +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from ._chart import ChartBase as ChartBase @@ -7,18 +14,18 @@ class ScatterChart(ChartBase): scatterStyle: Incomplete varyColors: Incomplete ser: Incomplete - dLbls: Incomplete - dataLabels: Incomplete - extLst: Incomplete - x_axis: Incomplete - y_axis: Incomplete - __elements__: Incomplete + dLbls: Typed[DataLabelList, Literal[True]] + dataLabels: Alias + extLst: Typed[ExtensionList, Literal[True]] + x_axis: Typed[NumericAxis | TextAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, scatterStyle: Incomplete | None = None, varyColors: Incomplete | None = None, ser=(), - dLbls: Incomplete | None = None, - extLst: Incomplete | None = None, + dLbls: DataLabelList | None = None, + extLst: Unused = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi index 5316058bc..7dcb7b771 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi @@ -1,70 +1,81 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.data_source import AxDataSource, NumDataSource, StrRef +from openpyxl.chart.error_bar import ErrorBars +from openpyxl.chart.label import DataLabelList +from openpyxl.chart.marker import Marker +from openpyxl.chart.picture import PictureOptions +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.trendline import Trendline +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable attribute_mapping: Incomplete class SeriesLabel(Serialisable): tagname: str - strRef: Incomplete + strRef: Typed[StrRef, Literal[True]] v: Incomplete - value: Incomplete - __elements__: Incomplete - def __init__(self, strRef: Incomplete | None = None, v: Incomplete | None = None) -> None: ... + value: Alias + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, strRef: StrRef | None = None, v: Incomplete | None = None) -> None: ... class Series(Serialisable): tagname: str idx: Incomplete order: Incomplete - tx: Incomplete - title: Incomplete - spPr: Incomplete + tx: Typed[SeriesLabel, Literal[True]] + title: Alias + spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Incomplete - pictureOptions: Incomplete + pictureOptions: Typed[PictureOptions, Literal[True]] dPt: Incomplete - data_points: Incomplete - dLbls: Incomplete - labels: Incomplete - trendline: Incomplete - errBars: Incomplete - cat: Incomplete - identifiers: Incomplete - val: Incomplete - extLst: Incomplete + data_points: Alias + dLbls: Typed[DataLabelList, Literal[True]] + labels: Alias + trendline: Typed[Trendline, Literal[True]] + errBars: Typed[ErrorBars, Literal[True]] + cat: Typed[AxDataSource, Literal[True]] + identifiers: Alias + val: Typed[NumDataSource, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] invertIfNegative: Incomplete shape: Incomplete - xVal: Incomplete - yVal: Incomplete - bubbleSize: Incomplete - zVal: Incomplete + xVal: Typed[AxDataSource, Literal[True]] + yVal: Typed[NumDataSource, Literal[True]] + bubbleSize: Typed[NumDataSource, Literal[True]] + zVal: Alias bubble3D: Incomplete - marker: Incomplete + marker: Typed[Marker, Literal[True]] smooth: Incomplete explosion: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, idx: int = 0, order: int = 0, - tx: Incomplete | None = None, - spPr: Incomplete | None = None, - pictureOptions: Incomplete | None = None, + tx: SeriesLabel | None = None, + spPr: GraphicalProperties | None = None, + pictureOptions: PictureOptions | None = None, dPt=(), - dLbls: Incomplete | None = None, - trendline: Incomplete | None = None, - errBars: Incomplete | None = None, - cat: Incomplete | None = None, - val: Incomplete | None = None, + dLbls: DataLabelList | None = None, + trendline: Trendline | None = None, + errBars: ErrorBars | None = None, + cat: AxDataSource | None = None, + val: NumDataSource | None = None, invertIfNegative: Incomplete | None = None, shape: Incomplete | None = None, - xVal: Incomplete | None = None, - yVal: Incomplete | None = None, - bubbleSize: Incomplete | None = None, + xVal: AxDataSource | None = None, + yVal: NumDataSource | None = None, + bubbleSize: NumDataSource | None = None, bubble3D: Incomplete | None = None, - marker: Incomplete | None = None, + marker: Marker | None = None, smooth: Incomplete | None = None, explosion: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: Unused = None, ) -> None: ... def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi index 423b76933..11f1cb588 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi @@ -1,37 +1,47 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Alias, NoneSet, Typed from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.fill import GradientFillProperties, PatternFillProperties +from openpyxl.drawing.geometry import CustomGeometry2D, PresetGeometry2D, Scene3D, Shape3D, Transform2D +from openpyxl.drawing.line import LineProperties + +_GraphicalPropertiesBwMode: TypeAlias = Literal[ + "clr", "auto", "gray", "ltGray", "invGray", "grayWhite", "blackGray", "blackWhite", "black", "white", "hidden" +] class GraphicalProperties(Serialisable): tagname: str - bwMode: Incomplete - xfrm: Incomplete - transform: Incomplete - custGeom: Incomplete - prstGeom: Incomplete + bwMode: NoneSet[_GraphicalPropertiesBwMode] + xfrm: Typed[Transform2D, Literal[True]] + transform: Alias + custGeom: Typed[CustomGeometry2D, Literal[True]] + prstGeom: Typed[PresetGeometry2D, Literal[True]] noFill: Incomplete solidFill: Incomplete - gradFill: Incomplete - pattFill: Incomplete - ln: Incomplete - line: Incomplete - scene3d: Incomplete - sp3d: Incomplete - shape3D: Incomplete - extLst: Incomplete - __elements__: Incomplete + gradFill: Typed[GradientFillProperties, Literal[True]] + pattFill: Typed[PatternFillProperties, Literal[True]] + ln: Typed[LineProperties, Literal[True]] + line: Alias + scene3d: Typed[Scene3D, Literal[True]] + sp3d: Typed[Shape3D, Literal[True]] + shape3D: Alias + extLst: Typed[Incomplete, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - bwMode: Incomplete | None = None, - xfrm: Incomplete | None = None, + bwMode: _GraphicalPropertiesBwMode | Literal["none"] | None = None, + xfrm: Transform2D | None = None, noFill: Incomplete | None = None, solidFill: Incomplete | None = None, - gradFill: Incomplete | None = None, - pattFill: Incomplete | None = None, + gradFill: GradientFillProperties | None = None, + pattFill: PatternFillProperties | None = None, ln: Incomplete | None = None, - scene3d: Incomplete | None = None, - custGeom: Incomplete | None = None, - prstGeom: Incomplete | None = None, - sp3d: Incomplete | None = None, - extLst: Incomplete | None = None, + scene3d: Scene3D | None = None, + custGeom: CustomGeometry2D | None = None, + prstGeom: PresetGeometry2D | None = None, + sp3d: Shape3D | None = None, + extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi index 1b72ff42b..f97cc1249 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi @@ -1,26 +1,34 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal + +from openpyxl.chart.axis import ChartLines, NumericAxis, TextAxis +from openpyxl.chart.label import DataLabelList +from openpyxl.chart.updown_bars import UpDownBars +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from ._chart import ChartBase class StockChart(ChartBase): tagname: str ser: Incomplete - dLbls: Incomplete - dataLabels: Incomplete - dropLines: Incomplete - hiLowLines: Incomplete - upDownBars: Incomplete - extLst: Incomplete - x_axis: Incomplete - y_axis: Incomplete - __elements__: Incomplete + dLbls: Typed[DataLabelList, Literal[True]] + dataLabels: Alias + dropLines: Typed[ChartLines, Literal[True]] + hiLowLines: Typed[ChartLines, Literal[True]] + upDownBars: Typed[UpDownBars, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + x_axis: Typed[TextAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, ser=(), - dLbls: Incomplete | None = None, - dropLines: Incomplete | None = None, - hiLowLines: Incomplete | None = None, - upDownBars: Incomplete | None = None, - extLst: Incomplete | None = None, + dLbls: DataLabelList | None = None, + dropLines: ChartLines | None = None, + hiLowLines: ChartLines | None = None, + upDownBars: UpDownBars | None = None, + extLst: Unused = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi index bc32897e6..ea9d2a3bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi @@ -1,6 +1,12 @@ from _typeshed import Incomplete from abc import abstractmethod +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.axis import NumericAxis, SeriesAxis, TextAxis +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable from ._3d import _3DBase @@ -9,23 +15,23 @@ from ._chart import ChartBase class BandFormat(Serialisable): tagname: str idx: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - __elements__: Incomplete - def __init__(self, idx: int = 0, spPr: Incomplete | None = None) -> None: ... + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, idx: int = 0, spPr: GraphicalProperties | None = None) -> None: ... class BandFormatList(Serialisable): tagname: str bandFmt: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, bandFmt=()) -> None: ... class _SurfaceChartBase(ChartBase): wireframe: Incomplete ser: Incomplete - bandFmts: Incomplete - __elements__: Incomplete - def __init__(self, wireframe: Incomplete | None = None, ser=(), bandFmts: Incomplete | None = None, **kw) -> None: ... + bandFmts: Typed[BandFormatList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, wireframe: Incomplete | None = None, ser=(), bandFmts: BandFormatList | None = None, **kw) -> None: ... @property @abstractmethod def tagname(self) -> str: ... @@ -35,11 +41,11 @@ class SurfaceChart3D(_SurfaceChartBase, _3DBase): wireframe: Incomplete ser: Incomplete bandFmts: Incomplete - extLst: Incomplete - x_axis: Incomplete - y_axis: Incomplete - z_axis: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + x_axis: Typed[TextAxis, Literal[False]] + y_axis: Typed[NumericAxis, Literal[False]] + z_axis: Typed[SeriesAxis, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__(self, **kw) -> None: ... class SurfaceChart(SurfaceChart3D): @@ -47,6 +53,6 @@ class SurfaceChart(SurfaceChart3D): wireframe: Incomplete ser: Incomplete bandFmts: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__(self, **kw) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi index 5244666e7..72edd6947 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi @@ -1,23 +1,28 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.data_source import StrRef +from openpyxl.descriptors.base import Alias, Typed from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.text import ListStyle, RichTextProperties class RichText(Serialisable): tagname: str - bodyPr: Incomplete - properties: Incomplete - lstStyle: Incomplete + bodyPr: Typed[RichTextProperties, Literal[False]] + properties: Alias + lstStyle: Typed[ListStyle, Literal[True]] p: Incomplete - paragraphs: Incomplete - __elements__: Incomplete + paragraphs: Alias + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, bodyPr: Incomplete | None = None, lstStyle: Incomplete | None = None, p: Incomplete | None = None + self, bodyPr: RichTextProperties | None = None, lstStyle: ListStyle | None = None, p: Incomplete | None = None ) -> None: ... class Text(Serialisable): tagname: str - strRef: Incomplete - rich: Incomplete - __elements__: Incomplete - def __init__(self, strRef: Incomplete | None = None, rich: Incomplete | None = None) -> None: ... + strRef: Typed[StrRef, Literal[True]] + rich: Typed[RichText, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, strRef: StrRef | None = None, rich: RichText | None = None) -> None: ... def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi index e7772ee2b..49c4f8efd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi @@ -1,33 +1,40 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal -from openpyxl.descriptors import Typed +from openpyxl.chart.layout import Layout +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.text import RichText, Text +from openpyxl.descriptors import Strict, Typed +from openpyxl.descriptors.base import Alias +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class Title(Serialisable): tagname: str - tx: Incomplete - text: Incomplete - layout: Incomplete + tx: Typed[Text, Literal[True]] + text: Alias + layout: Typed[Layout, Literal[True]] overlay: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - txPr: Incomplete - body: Incomplete - extLst: Incomplete - __elements__: Incomplete + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + txPr: Typed[RichText, Literal[True]] + body: Alias + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - tx: Incomplete | None = None, - layout: Incomplete | None = None, + tx: Text | None = None, + layout: Layout | None = None, overlay: Incomplete | None = None, - spPr: Incomplete | None = None, - txPr: Incomplete | None = None, - extLst: Incomplete | None = None, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, + extLst: Unused = None, ) -> None: ... def title_maker(text): ... -class TitleDescriptor(Typed): - expected_type: Incomplete - allow_none: bool - def __set__(self, instance, value) -> None: ... +class TitleDescriptor(Typed[Title, Incomplete]): + expected_type: type[Title] + allow_none: Literal[True] + def __set__(self, instance: Serialisable | Strict, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi index 2c7f1f4e7..aff6c9473 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi @@ -1,33 +1,41 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.data_source import NumFmt +from openpyxl.chart.layout import Layout +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.text import RichText, Text +from openpyxl.descriptors.base import Alias, String, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class TrendlineLabel(Serialisable): tagname: str - layout: Incomplete - tx: Incomplete - numFmt: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - txPr: Incomplete - textProperties: Incomplete - extLst: Incomplete - __elements__: Incomplete + layout: Typed[Layout, Literal[True]] + tx: Typed[Text, Literal[True]] + numFmt: Typed[NumFmt, Literal[True]] + spPr: Typed[GraphicalProperties, Literal[True]] + graphicalProperties: Alias + txPr: Typed[RichText, Literal[True]] + textProperties: Alias + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - layout: Incomplete | None = None, - tx: Incomplete | None = None, - numFmt: Incomplete | None = None, - spPr: Incomplete | None = None, - txPr: Incomplete | None = None, - extLst: Incomplete | None = None, + layout: Layout | None = None, + tx: Text | None = None, + numFmt: NumFmt | None = None, + spPr: GraphicalProperties | None = None, + txPr: RichText | None = None, + extLst: Unused = None, ) -> None: ... class Trendline(Serialisable): tagname: str - name: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete + name: String[Literal[True]] + spPr: Typed[ExtensionList, Literal[True]] + graphicalProperties: Alias trendlineType: Incomplete order: Incomplete period: Incomplete @@ -36,13 +44,13 @@ class Trendline(Serialisable): intercept: Incomplete dispRSqr: Incomplete dispEq: Incomplete - trendlineLbl: Incomplete - extLst: Incomplete - __elements__: Incomplete + trendlineLbl: Typed[ExtensionList, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - name: Incomplete | None = None, - spPr: Incomplete | None = None, + name: str | None = None, + spPr: ExtensionList | None = None, trendlineType: str = "linear", order: Incomplete | None = None, period: Incomplete | None = None, @@ -51,6 +59,6 @@ class Trendline(Serialisable): intercept: Incomplete | None = None, dispRSqr: Incomplete | None = None, dispEq: Incomplete | None = None, - trendlineLbl: Incomplete | None = None, - extLst: Incomplete | None = None, + trendlineLbl: ExtensionList | None = None, + extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi index 864cfa874..5e789b700 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi @@ -1,18 +1,19 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.axis import ChartLines +from openpyxl.descriptors.base import Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class UpDownBars(Serialisable): tagname: str gapWidth: Incomplete - upBars: Incomplete - downBars: Incomplete - extLst: Incomplete - __elements__: Incomplete + upBars: Typed[ChartLines, Literal[True]] + downBars: Typed[ChartLines, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, - gapWidth: int = 150, - upBars: Incomplete | None = None, - downBars: Incomplete | None = None, - extLst: Incomplete | None = None, + self, gapWidth: int = 150, upBars: ChartLines | None = None, downBars: ChartLines | None = None, extLst: Unused = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi index b2713e99a..8df0c1eaa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi @@ -1,44 +1,59 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.chartsheet.custom import CustomChartsheetViews +from openpyxl.chartsheet.properties import ChartsheetProperties +from openpyxl.chartsheet.protection import ChartsheetProtection +from openpyxl.chartsheet.publish import WebPublishItems +from openpyxl.chartsheet.relation import DrawingHF, SheetBackgroundPicture +from openpyxl.chartsheet.views import ChartsheetViewList +from openpyxl.descriptors.base import Alias, Set, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable from openpyxl.workbook.child import _WorkbookChild +from openpyxl.worksheet.drawing import Drawing +from openpyxl.worksheet.header_footer import HeaderFooter as _HeaderFooter +from openpyxl.worksheet.page import PageMargins, PrintPageSetup + +_ChartsheetSheetState: TypeAlias = Literal["visible", "hidden", "veryHidden"] class Chartsheet(_WorkbookChild, Serialisable): tagname: str mime_type: str - sheetPr: Incomplete - sheetViews: Incomplete - sheetProtection: Incomplete - customSheetViews: Incomplete - pageMargins: Incomplete - pageSetup: Incomplete - drawing: Incomplete - drawingHF: Incomplete - picture: Incomplete - webPublishItems: Incomplete - extLst: Incomplete - sheet_state: Incomplete - headerFooter: Incomplete - HeaderFooter: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + sheetPr: Typed[ChartsheetProperties, Literal[True]] + sheetViews: Typed[ChartsheetViewList, Literal[False]] + sheetProtection: Typed[ChartsheetProtection, Literal[True]] + customSheetViews: Typed[CustomChartsheetViews, Literal[True]] + pageMargins: Typed[PageMargins, Literal[True]] + pageSetup: Typed[PrintPageSetup, Literal[True]] + drawing: Typed[Drawing, Literal[True]] + drawingHF: Typed[DrawingHF, Literal[True]] + picture: Typed[SheetBackgroundPicture, Literal[True]] + webPublishItems: Typed[WebPublishItems, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + sheet_state: Set[_ChartsheetSheetState] + headerFooter: Typed[_HeaderFooter, Literal[False]] + HeaderFooter: Alias + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] def __init__( self, - sheetPr: Incomplete | None = None, - sheetViews: Incomplete | None = None, - sheetProtection: Incomplete | None = None, - customSheetViews: Incomplete | None = None, - pageMargins: Incomplete | None = None, - pageSetup: Incomplete | None = None, - headerFooter: Incomplete | None = None, - drawing: Incomplete | None = None, - drawingHF: Incomplete | None = None, - picture: Incomplete | None = None, - webPublishItems: Incomplete | None = None, - extLst: Incomplete | None = None, + sheetPr: ChartsheetProperties | None = None, + sheetViews: ChartsheetViewList | None = None, + sheetProtection: ChartsheetProtection | None = None, + customSheetViews: CustomChartsheetViews | None = None, + pageMargins: PageMargins | None = None, + pageSetup: PrintPageSetup | None = None, + headerFooter: _HeaderFooter | None = None, + drawing: Unused = None, + drawingHF: DrawingHF | None = None, + picture: SheetBackgroundPicture | None = None, + webPublishItems: WebPublishItems | None = None, + extLst: Unused = None, parent: Incomplete | None = None, title: str = "", - sheet_state: str = "visible", + sheet_state: _ChartsheetSheetState = "visible", ) -> None: ... def add_chart(self, chart) -> None: ... def to_tree(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi index 00cefe838..657bf69b6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi @@ -1,30 +1,50 @@ from _typeshed import Incomplete +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, Integer, Set, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.worksheet.header_footer import HeaderFooter +from openpyxl.worksheet.page import PageMargins, PrintPageSetup + +_CustomChartsheetViewState: TypeAlias = Literal["visible", "hidden", "veryHidden"] class CustomChartsheetView(Serialisable): tagname: str guid: Incomplete - scale: Incomplete - state: Incomplete - zoomToFit: Incomplete - pageMargins: Incomplete - pageSetup: Incomplete - headerFooter: Incomplete - __elements__: Incomplete + scale: Integer[Literal[False]] + state: Set[_CustomChartsheetViewState] + zoomToFit: Bool[Literal[True]] + pageMargins: Typed[PageMargins, Literal[True]] + pageSetup: Typed[PrintPageSetup, Literal[True]] + headerFooter: Typed[HeaderFooter, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, guid: Incomplete | None = None, - scale: Incomplete | None = None, - state: str = "visible", - zoomToFit: Incomplete | None = None, - pageMargins: Incomplete | None = None, - pageSetup: Incomplete | None = None, - headerFooter: Incomplete | None = None, + *, + scale: _ConvertibleToInt, + state: _CustomChartsheetViewState = "visible", + zoomToFit: _ConvertibleToBool | None = None, + pageMargins: PageMargins | None = None, + pageSetup: PrintPageSetup | None = None, + headerFooter: HeaderFooter | None = None, + ) -> None: ... + @overload + def __init__( + self, + guid: Incomplete | None, + scale: _ConvertibleToInt, + state: _CustomChartsheetViewState = "visible", + zoomToFit: _ConvertibleToBool | None = None, + pageMargins: PageMargins | None = None, + pageSetup: PrintPageSetup | None = None, + headerFooter: HeaderFooter | None = None, ) -> None: ... class CustomChartsheetViews(Serialisable): tagname: str customSheetView: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, customSheetView: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi index 818da9456..aa960694f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi @@ -1,13 +1,16 @@ -from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Bool, String, Typed, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable as Serialisable +from openpyxl.styles.colors import Color class ChartsheetProperties(Serialisable): tagname: str - published: Incomplete - codeName: Incomplete - tabColor: Incomplete - __elements__: Incomplete + published: Bool[Literal[True]] + codeName: String[Literal[True]] + tabColor: Typed[Color, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, published: Incomplete | None = None, codeName: Incomplete | None = None, tabColor: Incomplete | None = None + self, published: _ConvertibleToBool | None = None, codeName: str | None = None, tabColor: Color | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi index 8b6220b89..629fa3abc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi @@ -1,25 +1,28 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Bool, Integer, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable from openpyxl.worksheet.protection import _Protected class ChartsheetProtection(Serialisable, _Protected): tagname: str - algorithmName: Incomplete + algorithmName: String[Literal[True]] hashValue: Incomplete saltValue: Incomplete - spinCount: Incomplete - content: Incomplete - objects: Incomplete - __attrs__: Incomplete + spinCount: Integer[Literal[True]] + content: Bool[Literal[True]] + objects: Bool[Literal[True]] + __attrs__: ClassVar[tuple[str, ...]] password: Incomplete def __init__( self, - content: Incomplete | None = None, - objects: Incomplete | None = None, + content: _ConvertibleToBool | None = None, + objects: _ConvertibleToBool | None = None, hashValue: Incomplete | None = None, - spinCount: Incomplete | None = None, + spinCount: _ConvertibleToInt | None = None, saltValue: Incomplete | None = None, - algorithmName: Incomplete | None = None, + algorithmName: str | None = None, password: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi index 1e1064060..667706d14 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi @@ -1,32 +1,53 @@ from _typeshed import Incomplete +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, Integer, Set, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable +_WebPublishItemSourceType: TypeAlias = Literal[ + "sheet", "printArea", "autoFilter", "range", "chart", "pivotTable", "query", "label" +] + class WebPublishItem(Serialisable): tagname: str - id: Incomplete - divId: Incomplete - sourceType: Incomplete - sourceRef: Incomplete - sourceObject: Incomplete - destinationFile: Incomplete - title: Incomplete - autoRepublish: Incomplete + id: Integer[Literal[False]] + divId: String[Literal[False]] + sourceType: Set[_WebPublishItemSourceType] + sourceRef: String[Literal[False]] + sourceObject: String[Literal[True]] + destinationFile: String[Literal[False]] + title: String[Literal[True]] + autoRepublish: Bool[Literal[True]] + @overload + def __init__( + self, + id: _ConvertibleToInt, + divId: str, + sourceType: _WebPublishItemSourceType, + sourceRef: str, + sourceObject: str | None = None, + *, + destinationFile: str, + title: str | None = None, + autoRepublish: _ConvertibleToBool | None = None, + ) -> None: ... + @overload def __init__( self, - id: Incomplete | None = None, - divId: Incomplete | None = None, - sourceType: Incomplete | None = None, - sourceRef: Incomplete | None = None, - sourceObject: Incomplete | None = None, - destinationFile: Incomplete | None = None, - title: Incomplete | None = None, - autoRepublish: Incomplete | None = None, + id: _ConvertibleToInt, + divId: str, + sourceType: _WebPublishItemSourceType, + sourceRef: str, + sourceObject: str | None, + destinationFile: str, + title: str | None = None, + autoRepublish: _ConvertibleToBool | None = None, ) -> None: ... class WebPublishItems(Serialisable): tagname: str - count: Incomplete + count: Integer[Literal[True]] webPublishItem: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, webPublishItem: Incomplete | None = None) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt | None = None, webPublishItem: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi index 903c5f2fb..95ae0902f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi @@ -1,5 +1,7 @@ from _typeshed import Incomplete +from typing_extensions import Literal +from openpyxl.descriptors.base import Alias, Integer, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable class SheetBackgroundPicture(Serialisable): @@ -9,61 +11,61 @@ class SheetBackgroundPicture(Serialisable): class DrawingHF(Serialisable): id: Incomplete - lho: Incomplete - leftHeaderOddPages: Incomplete - lhe: Incomplete - leftHeaderEvenPages: Incomplete - lhf: Incomplete - leftHeaderFirstPage: Incomplete - cho: Incomplete - centerHeaderOddPages: Incomplete - che: Incomplete - centerHeaderEvenPages: Incomplete - chf: Incomplete - centerHeaderFirstPage: Incomplete - rho: Incomplete - rightHeaderOddPages: Incomplete - rhe: Incomplete - rightHeaderEvenPages: Incomplete - rhf: Incomplete - rightHeaderFirstPage: Incomplete - lfo: Incomplete - leftFooterOddPages: Incomplete - lfe: Incomplete - leftFooterEvenPages: Incomplete - lff: Incomplete - leftFooterFirstPage: Incomplete - cfo: Incomplete - centerFooterOddPages: Incomplete - cfe: Incomplete - centerFooterEvenPages: Incomplete - cff: Incomplete - centerFooterFirstPage: Incomplete - rfo: Incomplete - rightFooterOddPages: Incomplete - rfe: Incomplete - rightFooterEvenPages: Incomplete - rff: Incomplete - rightFooterFirstPage: Incomplete + lho: Integer[Literal[True]] + leftHeaderOddPages: Alias + lhe: Integer[Literal[True]] + leftHeaderEvenPages: Alias + lhf: Integer[Literal[True]] + leftHeaderFirstPage: Alias + cho: Integer[Literal[True]] + centerHeaderOddPages: Alias + che: Integer[Literal[True]] + centerHeaderEvenPages: Alias + chf: Integer[Literal[True]] + centerHeaderFirstPage: Alias + rho: Integer[Literal[True]] + rightHeaderOddPages: Alias + rhe: Integer[Literal[True]] + rightHeaderEvenPages: Alias + rhf: Integer[Literal[True]] + rightHeaderFirstPage: Alias + lfo: Integer[Literal[True]] + leftFooterOddPages: Alias + lfe: Integer[Literal[True]] + leftFooterEvenPages: Alias + lff: Integer[Literal[True]] + leftFooterFirstPage: Alias + cfo: Integer[Literal[True]] + centerFooterOddPages: Alias + cfe: Integer[Literal[True]] + centerFooterEvenPages: Alias + cff: Integer[Literal[True]] + centerFooterFirstPage: Alias + rfo: Integer[Literal[True]] + rightFooterOddPages: Alias + rfe: Integer[Literal[True]] + rightFooterEvenPages: Alias + rff: Integer[Literal[True]] + rightFooterFirstPage: Alias def __init__( self, id: Incomplete | None = None, - lho: Incomplete | None = None, - lhe: Incomplete | None = None, - lhf: Incomplete | None = None, - cho: Incomplete | None = None, - che: Incomplete | None = None, - chf: Incomplete | None = None, - rho: Incomplete | None = None, - rhe: Incomplete | None = None, - rhf: Incomplete | None = None, - lfo: Incomplete | None = None, - lfe: Incomplete | None = None, - lff: Incomplete | None = None, - cfo: Incomplete | None = None, - cfe: Incomplete | None = None, - cff: Incomplete | None = None, - rfo: Incomplete | None = None, - rfe: Incomplete | None = None, - rff: Incomplete | None = None, + lho: _ConvertibleToInt | None = None, + lhe: _ConvertibleToInt | None = None, + lhf: _ConvertibleToInt | None = None, + cho: _ConvertibleToInt | None = None, + che: _ConvertibleToInt | None = None, + chf: _ConvertibleToInt | None = None, + rho: _ConvertibleToInt | None = None, + rhe: _ConvertibleToInt | None = None, + rhf: _ConvertibleToInt | None = None, + lfo: _ConvertibleToInt | None = None, + lfe: _ConvertibleToInt | None = None, + lff: _ConvertibleToInt | None = None, + cfo: _ConvertibleToInt | None = None, + cfe: _ConvertibleToInt | None = None, + cff: _ConvertibleToInt | None = None, + rfo: _ConvertibleToInt | None = None, + rfe: _ConvertibleToInt | None = None, + rff: _ConvertibleToInt | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi index d71696aa6..5f20f7c95 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi @@ -1,27 +1,31 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Bool, Integer, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class ChartsheetView(Serialisable): tagname: str - tabSelected: Incomplete - zoomScale: Incomplete - workbookViewId: Incomplete - zoomToFit: Incomplete - extLst: Incomplete - __elements__: Incomplete + tabSelected: Bool[Literal[True]] + zoomScale: Integer[Literal[True]] + workbookViewId: Integer[Literal[False]] + zoomToFit: Bool[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - tabSelected: Incomplete | None = None, - zoomScale: Incomplete | None = None, - workbookViewId: int = 0, - zoomToFit: Incomplete | None = True, - extLst: Incomplete | None = None, + tabSelected: _ConvertibleToBool | None = None, + zoomScale: _ConvertibleToInt | None = None, + workbookViewId: _ConvertibleToInt = 0, + zoomToFit: _ConvertibleToBool | None = True, + extLst: Unused = None, ) -> None: ... class ChartsheetViewList(Serialisable): tagname: str sheetView: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, sheetView: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, sheetView: Incomplete | None = None, extLst: Unused = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi index cda8676b3..89ef622d4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi @@ -1,9 +1,10 @@ from _typeshed import Incomplete +from openpyxl.descriptors.base import Alias from openpyxl.descriptors.serialisable import Serialisable class AuthorList(Serialisable): tagname: str author: Incomplete - authors: Incomplete + authors: Alias def __init__(self, author=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi index b2f7de628..2fb64a3b8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi @@ -1,67 +1,100 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from collections.abc import Generator +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.cell.text import Text +from openpyxl.comments.author import AuthorList +from openpyxl.descriptors.base import Bool, Integer, Set, String, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.worksheet.ole import ObjectAnchor + +_PropertiesTextHAlign: TypeAlias = Literal["left", "center", "right", "justify", "distributed"] +_PropertiesTextVAlign: TypeAlias = Literal["top", "center", "bottom", "justify", "distributed"] class Properties(Serialisable): - locked: Incomplete - defaultSize: Incomplete - disabled: Incomplete - uiObject: Incomplete - autoFill: Incomplete - autoLine: Incomplete - altText: Incomplete - textHAlign: Incomplete - textVAlign: Incomplete - lockText: Incomplete - justLastX: Incomplete - autoScale: Incomplete - rowHidden: Incomplete - colHidden: Incomplete - __elements__: Incomplete - anchor: Incomplete + locked: Bool[Literal[True]] + defaultSize: Bool[Literal[True]] + _print: Bool[Literal[True]] # Not private. Avoids name clash + disabled: Bool[Literal[True]] + uiObject: Bool[Literal[True]] + autoFill: Bool[Literal[True]] + autoLine: Bool[Literal[True]] + altText: String[Literal[True]] + textHAlign: Set[_PropertiesTextHAlign] + textVAlign: Set[_PropertiesTextVAlign] + lockText: Bool[Literal[True]] + justLastX: Bool[Literal[True]] + autoScale: Bool[Literal[True]] + rowHidden: Bool[Literal[True]] + colHidden: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + anchor: ObjectAnchor | None + @overload + def __init__( + self, + locked: _ConvertibleToBool | None = None, + defaultSize: _ConvertibleToBool | None = None, + _print: _ConvertibleToBool | None = None, + disabled: _ConvertibleToBool | None = None, + uiObject: _ConvertibleToBool | None = None, + autoFill: _ConvertibleToBool | None = None, + autoLine: _ConvertibleToBool | None = None, + altText: str | None = None, + *, + textHAlign: _PropertiesTextHAlign, + textVAlign: _PropertiesTextVAlign, + lockText: _ConvertibleToBool | None = None, + justLastX: _ConvertibleToBool | None = None, + autoScale: _ConvertibleToBool | None = None, + rowHidden: _ConvertibleToBool | None = None, + colHidden: _ConvertibleToBool | None = None, + anchor: ObjectAnchor | None = None, + ) -> None: ... + @overload def __init__( self, - locked: Incomplete | None = None, - defaultSize: Incomplete | None = None, - _print: Incomplete | None = None, - disabled: Incomplete | None = None, - uiObject: Incomplete | None = None, - autoFill: Incomplete | None = None, - autoLine: Incomplete | None = None, - altText: Incomplete | None = None, - textHAlign: Incomplete | None = None, - textVAlign: Incomplete | None = None, - lockText: Incomplete | None = None, - justLastX: Incomplete | None = None, - autoScale: Incomplete | None = None, - rowHidden: Incomplete | None = None, - colHidden: Incomplete | None = None, - anchor: Incomplete | None = None, + locked: _ConvertibleToBool | None, + defaultSize: _ConvertibleToBool | None, + _print: _ConvertibleToBool | None, + disabled: _ConvertibleToBool | None, + uiObject: _ConvertibleToBool | None, + autoFill: _ConvertibleToBool | None, + autoLine: _ConvertibleToBool | None, + altText: str | None, + textHAlign: _PropertiesTextHAlign, + textVAlign: _PropertiesTextVAlign, + lockText: _ConvertibleToBool | None = None, + justLastX: _ConvertibleToBool | None = None, + autoScale: _ConvertibleToBool | None = None, + rowHidden: _ConvertibleToBool | None = None, + colHidden: _ConvertibleToBool | None = None, + anchor: ObjectAnchor | None = None, ) -> None: ... class CommentRecord(Serialisable): tagname: str - ref: Incomplete - authorId: Incomplete + ref: String[Literal[False]] + authorId: Integer[Literal[False]] guid: Incomplete - shapeId: Incomplete - text: Incomplete - commentPr: Incomplete - author: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + shapeId: Integer[Literal[True]] + text: Typed[Text, Literal[False]] + commentPr: Typed[Properties, Literal[True]] + author: String[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] height: Incomplete width: Incomplete def __init__( self, ref: str = "", - authorId: int = 0, + authorId: _ConvertibleToInt = 0, guid: Incomplete | None = None, - shapeId: int = 0, - text: Incomplete | None = None, - commentPr: Incomplete | None = None, - author: Incomplete | None = None, + shapeId: _ConvertibleToInt | None = 0, + text: Text | None = None, + commentPr: Properties | None = None, + author: str | None = None, height: int = 79, width: int = 144, ) -> None: ... @@ -72,14 +105,12 @@ class CommentRecord(Serialisable): class CommentSheet(Serialisable): tagname: str - authors: Incomplete + authors: Typed[AuthorList, Literal[False]] commentList: Incomplete - extLst: Incomplete + extLst: Typed[ExtensionList, Literal[True]] mime_type: str - __elements__: Incomplete - def __init__( - self, authors: Incomplete | None = None, commentList: Incomplete | None = None, extLst: Incomplete | None = None - ) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, authors: AuthorList, commentList: Incomplete | None = None, extLst: Unused = None) -> None: ... def to_tree(self): ... @property def comments(self) -> Generator[Incomplete, None, None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/__init__.pyi index bf8523313..5817c55b8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/__init__.pyi @@ -8,4 +8,3 @@ class MetaSerialisable(type): def __new__(cls, clsname, bases, methods): ... class Strict(metaclass=MetaStrict): ... -class _Serialiasable(metaclass=MetaSerialisable): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi index 616c5f183..5fa2dac33 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi @@ -1,85 +1,359 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, ReadableBuffer, SupportsTrunc, Unused +from collections.abc import Iterable, Sized +from datetime import datetime +from re import Pattern +from typing import Any, Generic, SupportsFloat, SupportsInt, TypeVar, overload +from typing_extensions import Literal, SupportsIndex, TypeAlias -class Descriptor: - name: Incomplete - def __init__(self, name: Incomplete | None = None, **kw) -> None: ... - def __set__(self, instance, value) -> None: ... +from openpyxl.descriptors import Strict +from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.fill import Blip +from openpyxl.worksheet.cell_range import CellRange, MultiCellRange -class Typed(Descriptor): - expected_type: Incomplete - allow_none: bool +_T = TypeVar("_T") +_P = TypeVar("_P", str, ReadableBuffer) +_N = TypeVar("_N", bound=bool) +_L = TypeVar("_L", bound=Sized) +_M = TypeVar("_M", int, float) + +_ExpectedTypeParam: TypeAlias = type[_T] | tuple[type[_T], ...] +_ConvertibleToMultiCellRange: TypeAlias = MultiCellRange | str | Iterable[CellRange] +_ConvertibleToInt: TypeAlias = int | str | ReadableBuffer | SupportsInt | SupportsIndex | SupportsTrunc +_ConvertibleToFloat: TypeAlias = float | SupportsFloat | SupportsIndex | str | ReadableBuffer +# Since everything is convertible to a bool, this restricts to only intended expected types +_ConvertibleToBool: TypeAlias = bool | str | int | None # True | False | "true" | "t" | "false" | "f" | 1 | 0 | None + +class Descriptor(Generic[_T]): + name: str | None + def __init__(self, name: str | None = None, **kw: object) -> None: ... + def __get__(self, instance: Serialisable | Strict, cls: type | None) -> _T: ... + def __set__(self, instance: Serialisable | Strict, value: _T) -> None: ... + +class Typed(Descriptor[_T], Generic[_T, _N]): + expected_type: type[_T] + allow_none: _N nested: bool __doc__: Incomplete - def __init__(self, *args, **kw) -> None: ... - def __set__(self, instance, value) -> None: ... -class Convertible(Typed): - def __set__(self, instance, value) -> None: ... + @overload + def __init__( + self: Typed[_T, Literal[True]], + name: str | None = None, + *, + expected_type: _ExpectedTypeParam[_T], + allow_none: Literal[True], + nested: bool = False, + ) -> None: ... + @overload + def __init__( + self: Typed[_T, Literal[False]], + name: str | None = None, + *, + expected_type: _ExpectedTypeParam[_T], + allow_none: Literal[False] = False, + nested: bool = False, + ) -> None: ... + @overload + def __get__(self: Typed[_T, Literal[True]], instance: Serialisable | Strict, cls: type | None = None) -> _T | None: ... + @overload + def __get__(self: Typed[_T, Literal[False]], instance: Serialisable | Strict, cls: type | None = None) -> _T: ... + @overload + def __set__(self: Typed[_T, Literal[True]], instance: Serialisable | Strict, value: _T | None) -> None: ... + @overload + def __set__(self: Typed[_T, Literal[False]], instance: Serialisable | Strict, value: _T) -> None: ... -class Max(Convertible): - expected_type: Incomplete - allow_none: bool - def __init__(self, **kw) -> None: ... - def __set__(self, instance, value) -> None: ... +class Convertible(Typed[_T, _N]): + @overload + def __init__( + self: Convertible[_T, Literal[True]], + name: str | None = None, + *, + expected_type: _ExpectedTypeParam[_T], + allow_none: Literal[True], + ) -> None: ... + @overload + def __init__( + self: Convertible[_T, Literal[False]], + name: str | None = None, + *, + expected_type: _ExpectedTypeParam[_T], + allow_none: Literal[False] = False, + ) -> None: ... + # NOTE: It is currently impossible to make a generic based on the parameter type of another generic + # So we implement explicitely the types used internally + # MultiCellRange + @overload + def __set__( + self: Convertible[MultiCellRange, Literal[True]], + instance: Serialisable | Strict, + value: _ConvertibleToMultiCellRange | None, + ) -> None: ... + @overload + def __set__( + self: Convertible[MultiCellRange, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToMultiCellRange + ) -> None: ... + # str | Blip + @overload + def __set__( + self: Convertible[str, bool] | Convertible[Blip, bool], + instance: Serialisable | Strict, + value: object, # Not[None] when _N = False + ) -> None: ... + # bool + @overload + def __set__(self: Convertible[bool, bool], instance: Serialisable | Strict, value: _ConvertibleToBool) -> None: ... + # int + @overload + def __set__( + self: Convertible[int, Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToInt | None + ) -> None: ... + @overload + def __set__(self: Convertible[int, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToInt) -> None: ... + # float + @overload + def __set__( + self: Convertible[float, Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToFloat | None + ) -> None: ... + @overload + def __set__( + self: Convertible[float, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToFloat + ) -> None: ... + # Anything else + @overload + def __set__(self: Convertible[_T, Literal[True]], instance: Serialisable | Strict, value: _T | int | Any | None) -> None: ... -class Min(Convertible): - expected_type: Incomplete - allow_none: bool - def __init__(self, **kw) -> None: ... - def __set__(self, instance, value) -> None: ... +class Max(Convertible[_M, _N]): + expected_type: type[_M] + allow_none: _N + max: float + @overload + def __init__( + self: Max[int, Literal[True]], *, expected_type: _ExpectedTypeParam[int], allow_none: Literal[True], max: float + ) -> None: ... + @overload + def __init__( + self: Max[int, Literal[False]], *, expected_type: _ExpectedTypeParam[int], allow_none: Literal[False] = False, max: float + ) -> None: ... + # mypy can't infer type from `expected_type = float` (pyright can), so we have to add extra overloads + @overload + def __init__( + self: Max[float, Literal[True]], *, expected_type: _ExpectedTypeParam[float] = ..., allow_none: Literal[True], max: float + ) -> None: ... + @overload + def __init__( + self: Max[float, Literal[False]], + *, + expected_type: _ExpectedTypeParam[float] = ..., + allow_none: Literal[False] = False, + max: float, + ) -> None: ... + @overload # type:ignore[override] # Different restrictions + def __set__(self: Max[int, Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToInt | None) -> None: ... + @overload + def __set__(self: Max[int, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToInt) -> None: ... + @overload + def __set__(self: Max[float, Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToFloat | None) -> None: ... + @overload + def __set__(self: Max[float, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToFloat) -> None: ... -class MinMax(Min, Max): ... +class Min(Convertible[_M, _N]): + expected_type: type[_M] + allow_none: _N + min: float + @overload + def __init__( + self: Min[int, Literal[True]], *, expected_type: _ExpectedTypeParam[int], allow_none: Literal[True], min: float + ) -> None: ... + @overload + def __init__( + self: Min[int, Literal[False]], *, expected_type: _ExpectedTypeParam[int], allow_none: Literal[False] = False, min: float + ) -> None: ... + # mypy can't infer type from `expected_type = float` (pyright can), so we have to add extra overloads + @overload + def __init__( + self: Min[float, Literal[True]], *, expected_type: _ExpectedTypeParam[float] = ..., allow_none: Literal[True], min: float + ) -> None: ... + @overload + def __init__( + self: Min[float, Literal[False]], + *, + expected_type: _ExpectedTypeParam[float] = ..., + allow_none: Literal[False] = False, + min: float, + ) -> None: ... + @overload # type:ignore[override] # Different restrictions + def __set__(self: Min[int, Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToInt | None) -> None: ... + @overload + def __set__(self: Min[int, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToInt) -> None: ... + @overload + def __set__(self: Min[float, Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToFloat | None) -> None: ... + @overload + def __set__(self: Min[float, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToFloat) -> None: ... -class Set(Descriptor): - __doc__: Incomplete - def __init__(self, name: Incomplete | None = None, **kw) -> None: ... - def __set__(self, instance, value) -> None: ... +class MinMax(Min[_M, _N], Max[_M, _N]): + expected_type: type[_M] + allow_none: _N + @overload + def __init__( + self: MinMax[int, Literal[True]], + *, + expected_type: _ExpectedTypeParam[int], + allow_none: Literal[True], + min: float, + max: float, + ) -> None: ... + @overload + def __init__( + self: MinMax[int, Literal[False]], + *, + expected_type: _ExpectedTypeParam[int], + allow_none: Literal[False] = False, + min: float, + max: float, + ) -> None: ... + # mypy can't infer type from `expected_type = float` (pyright can), so we have to add extra overloads + @overload + def __init__( + self: MinMax[float, Literal[True]], + *, + expected_type: _ExpectedTypeParam[float] = ..., + allow_none: Literal[True], + min: float, + max: float, + ) -> None: ... + @overload + def __init__( + self: MinMax[float, Literal[False]], + *, + expected_type: _ExpectedTypeParam[float] = ..., + allow_none: Literal[False] = False, + min: float, + max: float, + ) -> None: ... + +class Set(Descriptor[_T]): + __doc__: str + values: Iterable[_T] + def __init__(self, name: str | None = None, *, values: Iterable[_T]) -> None: ... + def __set__(self, instance: Serialisable | Strict, value: _T) -> None: ... + +class NoneSet(Set[_T | None]): + def __init__(self, name: str | None = None, *, values: Iterable[_T | None]) -> None: ... + def __set__(self, instance: Serialisable | Strict, value: _T | Literal["none"] | None) -> None: ... -class NoneSet(Set): - def __init__(self, name: Incomplete | None = None, **kw) -> None: ... - def __set__(self, instance, value) -> None: ... +class Integer(Convertible[int, _N]): + allow_none: _N + expected_type: type[int] + @overload + def __init__(self: Integer[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: Integer[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... -class Integer(Convertible): - expected_type: Incomplete +class Float(Convertible[float, _N]): + allow_none: _N + expected_type: type[float] + @overload + def __init__(self: Float[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: Float[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... -class Float(Convertible): - expected_type: Incomplete +class Bool(Convertible[bool, _N]): + expected_type: type[bool] + allow_none: _N + @overload + def __init__(self: Bool[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: Bool[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... + def __set__( # type:ignore[override] # Different restrictions + self: Bool[Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToBool | None + ) -> None: ... -class Bool(Convertible): - expected_type: Incomplete - def __set__(self, instance, value) -> None: ... +class String(Typed[str, _N]): + allow_none: _N + expected_type: type[str] + @overload + def __init__(self: String[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: String[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... -class String(Typed): - expected_type: Incomplete +class Text(String[_N], Convertible[str, _N]): ... # unused -class Text(String, Convertible): ... +class ASCII(Typed[bytes, _N]): # unused + expected_type: type[bytes] + def __init__(self, name: str | None = None, *, allow_none: bool = False) -> None: ... -class ASCII(Typed): - expected_type: Incomplete +class Tuple(Typed[tuple[Any, ...], _N]): # unused + expected_type: type[tuple[Any, ...]] + def __init__(self, name: str | None = None, *, allow_none: bool = False) -> None: ... -class Tuple(Typed): - expected_type: Incomplete +class Length(Descriptor[_L]): + def __init__(self, name: Unused = None, *, length: int) -> None: ... + def __set__(self, instance: Serialisable | Strict, value: _L) -> None: ... -class Length(Descriptor): - def __init__(self, name: Incomplete | None = None, **kw) -> None: ... - def __set__(self, instance, value) -> None: ... +class Default(Typed[_T, _N]): # unused + def __init__( + self, name: Unused = None, *, expected_type: _ExpectedTypeParam[_T], allow_none: bool = False, defaults: Unused = {} + ) -> None: ... + def __call__(self) -> _T: ... -class Default(Typed): - def __init__(self, name: Incomplete | None = None, **kw) -> None: ... - def __call__(self): ... +# Note: Aliases types can't be infered. Anyway an alias means there's another option +# incomplete: Make it generic with explicit getter/setter type arguments ? +class Alias(Descriptor[Incomplete]): + alias: str + def __init__(self, alias: str) -> None: ... + def __set__(self, instance: Serialisable | Strict, value: Incomplete) -> None: ... + def __get__(self, instance: Serialisable | Strict, cls: Unused): ... -class Alias(Descriptor): - alias: Incomplete - def __init__(self, alias) -> None: ... - def __set__(self, instance, value) -> None: ... - def __get__(self, instance, cls): ... +class MatchPattern(Descriptor[_P], Generic[_P, _N]): + allow_none: _N + test_pattern: Pattern[bytes] | Pattern[str] + pattern: str | Pattern[str] | bytes | Pattern[bytes] -class MatchPattern(Descriptor): - allow_none: bool - test_pattern: Incomplete - def __init__(self, name: Incomplete | None = None, **kw) -> None: ... - def __set__(self, instance, value) -> None: ... + @overload # str + def __init__( + self: MatchPattern[str, Literal[True]], name: str | None = None, *, pattern: str | Pattern[str], allow_none: Literal[True] + ) -> None: ... + @overload # str | None + def __init__( + self: MatchPattern[str, Literal[False]], + name: str | None = None, + *, + pattern: str | Pattern[str], + allow_none: Literal[False] = False, + ) -> None: ... + @overload # bytes + def __init__( + self: MatchPattern[ReadableBuffer, Literal[True]], + name: str | None = None, + *, + pattern: bytes | Pattern[bytes], + allow_none: Literal[True], + ) -> None: ... + @overload # bytes | None + def __init__( + self: MatchPattern[ReadableBuffer, Literal[False]], + name: str | None = None, + *, + pattern: bytes | Pattern[bytes], + allow_none: Literal[False] = False, + ) -> None: ... + @overload + def __get__(self: MatchPattern[_P, Literal[True]], instance: Serialisable | Strict, cls: type | None = None) -> _P | None: ... + @overload + def __get__(self: MatchPattern[_P, Literal[False]], instance: Serialisable | Strict, cls: type | None = None) -> _P: ... + @overload + def __set__(self: MatchPattern[_P, Literal[True]], instance: Serialisable | Strict, value: _P | None) -> None: ... + @overload + def __set__(self: MatchPattern[_P, Literal[False]], instance: Serialisable | Strict, value: _P) -> None: ... -class DateTime(Typed): - expected_type: Incomplete - def __set__(self, instance, value) -> None: ... +class DateTime(Typed[datetime, _N]): + allow_none: _N + expected_type: type[datetime] + @overload + def __init__(self: DateTime[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: DateTime[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... + @overload + def __set__(self: DateTime[Literal[True]], instance: Serialisable | Strict, value: datetime | str | None) -> None: ... + @overload + def __set__(self: DateTime[Literal[False]], instance: Serialisable | Strict, value: datetime | str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi index dfc212e86..4424ddc88 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi @@ -1,46 +1,51 @@ from _typeshed import Incomplete +from typing import TypeVar +from typing_extensions import Literal -from . import Integer, MatchPattern, MinMax, String +from . import Integer, MatchPattern, MinMax, Strict, String from .serialisable import Serialisable -class HexBinary(MatchPattern): +_N = TypeVar("_N", bound=bool) +_M = TypeVar("_M", int, float) + +class HexBinary(MatchPattern[str, Incomplete]): pattern: str -class UniversalMeasure(MatchPattern): +class UniversalMeasure(MatchPattern[str, Incomplete]): pattern: str -class TextPoint(MinMax): - expected_type: Incomplete - min: int - max: int +class TextPoint(MinMax[_M, _N]): + expected_type: type[_M] + min: float + max: float Coordinate = Integer -class Percentage(MinMax): +class Percentage(MinMax[float, Incomplete]): pattern: str - min: int - max: int - def __set__(self, instance, value) -> None: ... + min: float + max: float + def __set__(self, instance: Serialisable | Strict, value: Incomplete) -> None: ... class Extension(Serialisable): - uri: Incomplete - def __init__(self, uri: Incomplete | None = None) -> None: ... + uri: String[Literal[False]] + def __init__(self, uri: str) -> None: ... class ExtensionList(Serialisable): ext: Incomplete def __init__(self, ext=()) -> None: ... -class Relation(String): +class Relation(String[Incomplete]): namespace: Incomplete allow_none: bool -class Base64Binary(MatchPattern): +class Base64Binary(MatchPattern[str, Incomplete]): pattern: str -class Guid(MatchPattern): +class Guid(MatchPattern[str, Incomplete]): pattern: str -class CellRange(MatchPattern): +class CellRange(MatchPattern[str, Incomplete]): pattern: str allow_none: bool - def __set__(self, instance, value) -> None: ... + def __set__(self, instance: Serialisable | Strict, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi index dbd1cbf72..2c0643e5d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi @@ -1,17 +1,21 @@ from _typeshed import Incomplete -from .base import Bool, Convertible, Descriptor, Float, Integer, MinMax, NoneSet, Set, String +from openpyxl.descriptors import Strict +from openpyxl.descriptors.base import Bool, Convertible, Descriptor, Float, Integer, MinMax, NoneSet, Set, String +from openpyxl.descriptors.serialisable import Serialisable -class Nested(Descriptor): +# NOTE: # type: ignore[misc]: Class does not reimplement the relevant methods, so runtime also has incompatible supertypes + +class Nested(Descriptor[Incomplete]): nested: bool attribute: str - def __set__(self, instance, value) -> None: ... + def __set__(self, instance: Serialisable | Strict, value) -> None: ... def from_tree(self, node): ... def to_tree( self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None ): ... -class NestedValue(Nested, Convertible): ... +class NestedValue(Nested, Convertible[Incomplete, Incomplete]): ... # type: ignore[misc] class NestedText(NestedValue): def from_tree(self, node): ... @@ -19,18 +23,18 @@ class NestedText(NestedValue): self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None ): ... -class NestedFloat(NestedValue, Float): ... -class NestedInteger(NestedValue, Integer): ... -class NestedString(NestedValue, String): ... +class NestedFloat(NestedValue, Float[Incomplete]): ... # type: ignore[misc] +class NestedInteger(NestedValue, Integer[Incomplete]): ... # type: ignore[misc] +class NestedString(NestedValue, String[Incomplete]): ... # type: ignore[misc] -class NestedBool(NestedValue, Bool): +class NestedBool(NestedValue, Bool[Incomplete]): # type: ignore[misc] def from_tree(self, node): ... -class NestedNoneSet(Nested, NoneSet): ... -class NestedSet(Nested, Set): ... -class NestedMinMax(Nested, MinMax): ... +class NestedNoneSet(Nested, NoneSet[Incomplete]): ... +class NestedSet(Nested, Set[Incomplete]): ... +class NestedMinMax(Nested, MinMax[Incomplete, Incomplete]): ... # type: ignore[misc] -class EmptyTag(Nested, Bool): +class EmptyTag(Nested, Bool[Incomplete]): # type: ignore[misc] def from_tree(self, node): ... def to_tree( self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi index 3acbf2554..0a76df3a3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi @@ -1,14 +1,18 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from collections.abc import Generator +from typing_extensions import Self + +from openpyxl.descriptors import Strict +from openpyxl.descriptors.serialisable import Serialisable from .base import Alias, Descriptor -class Sequence(Descriptor): - expected_type: Incomplete +class Sequence(Descriptor[Incomplete]): + expected_type: type[Incomplete] seq_types: Incomplete idx_base: int unique: bool - def __set__(self, instance, seq) -> None: ... + def __set__(self, instance: Serialisable | Strict, seq) -> None: ... def to_tree(self, tagname, obj, namespace: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... class ValueSequence(Sequence): @@ -22,12 +26,12 @@ class NestedSequence(Sequence): def from_tree(self, node): ... class MultiSequence(Sequence): - def __set__(self, instance, seq) -> None: ... + def __set__(self, instance: Serialisable | Strict, seq) -> None: ... def to_tree(self, tagname, obj, namespace: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... class MultiSequencePart(Alias): - expected_type: Incomplete + expected_type: type[Incomplete] store: Incomplete def __init__(self, expected_type, store) -> None: ... - def __set__(self, instance, value) -> None: ... - def __get__(self, instance, cls): ... + def __set__(self, instance: Serialisable | Strict, value) -> None: ... + def __get__(self, instance: Unused, cls: Unused) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi index b2b279e4f..671ed3a82 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi @@ -1,15 +1,17 @@ from _typeshed import Incomplete +from typing import ClassVar -from . import _Serialiasable +from openpyxl.descriptors import MetaSerialisable KEYWORDS: Incomplete seq_types: Incomplete -class Serialisable(_Serialiasable): - __attrs__: Incomplete - __nested__: Incomplete - __elements__: Incomplete - __namespaced__: Incomplete +class Serialisable(metaclass=MetaSerialisable): + # These dunders are always set at runtime by MetaSerialisable so they can't be None + __attrs__: ClassVar[tuple[str, ...]] + __nested__: ClassVar[tuple[str, ...]] + __elements__: ClassVar[tuple[str, ...]] + __namespaced__: ClassVar[tuple[tuple[str, str], ...]] idx_base: int @property # TODO: needs overrides in many sub-classes diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi index 9f90ab5c2..29bba5a90 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi @@ -1,8 +1,67 @@ from _typeshed import Incomplete +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias -from openpyxl.descriptors import Typed +from openpyxl.descriptors import Strict, Typed +from openpyxl.descriptors.base import Alias, Integer, MinMax, Set, _ConvertibleToFloat, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +_ColorSetType: TypeAlias = Literal[ + "dk1", "lt1", "dk2", "lt2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hlink", "folHlink" +] +_SystemColorVal: TypeAlias = Literal[ + "scrollBar", + "background", + "activeCaption", + "inactiveCaption", + "menu", + "window", + "windowFrame", + "menuText", + "windowText", + "captionText", + "activeBorder", + "inactiveBorder", + "appWorkspace", + "highlight", + "highlightText", + "btnFace", + "btnShadow", + "grayText", + "btnText", + "inactiveCaptionText", + "btnHighlight", + "3dDkShadow", + "3dLight", + "infoText", + "infoBk", + "hotLight", + "gradientActiveCaption", + "gradientInactiveCaption", + "menuHighlight", + "menuBar", +] +_SchemeColorVal: TypeAlias = Literal[ + "bg1", + "tx1", + "bg2", + "tx2", + "accent1", + "accent2", + "accent3", + "accent4", + "accent5", + "accent6", + "hlink", + "folHlink", + "phClr", + "dk1", + "lt1", + "dk2", + "lt2", +] + PRESET_COLORS: Incomplete SCHEME_COLORS: Incomplete @@ -13,9 +72,9 @@ class SystemColor(Serialisable): namespace: Incomplete tint: Incomplete shade: Incomplete - comp: Incomplete - inv: Incomplete - gray: Incomplete + comp: Typed[Transform, Literal[True]] + inv: Typed[Transform, Literal[True]] + gray: Typed[Transform, Literal[True]] alpha: Incomplete alphaOff: Incomplete alphaMod: Incomplete @@ -37,20 +96,20 @@ class SystemColor(Serialisable): blue: Incomplete blueOff: Incomplete blueMod: Incomplete - gamma: Incomplete - invGamma: Incomplete - val: Incomplete + gamma: Typed[Transform, Literal[True]] + invGamma: Typed[Transform, Literal[True]] + val: Set[_SystemColorVal] lastClr: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - val: str = "windowText", + val: _SystemColorVal = "windowText", lastClr: Incomplete | None = None, tint: Incomplete | None = None, shade: Incomplete | None = None, - comp: Incomplete | None = None, - inv: Incomplete | None = None, - gray: Incomplete | None = None, + comp: Transform | None = None, + inv: Transform | None = None, + gray: Transform | None = None, alpha: Incomplete | None = None, alphaOff: Incomplete | None = None, alphaMod: Incomplete | None = None, @@ -72,23 +131,25 @@ class SystemColor(Serialisable): blue: Incomplete | None = None, blueOff: Incomplete | None = None, blueMod: Incomplete | None = None, - gamma: Incomplete | None = None, - invGamma: Incomplete | None = None, + gamma: Transform | None = None, + invGamma: Transform | None = None, ) -> None: ... class HSLColor(Serialisable): tagname: str - hue: Incomplete - sat: Incomplete - lum: Incomplete - def __init__(self, hue: Incomplete | None = None, sat: Incomplete | None = None, lum: Incomplete | None = None) -> None: ... + hue: Integer[Literal[False]] + sat: MinMax[float, Literal[False]] + lum: MinMax[float, Literal[False]] + def __init__(self, hue: _ConvertibleToInt, sat: _ConvertibleToFloat, lum: _ConvertibleToFloat) -> None: ... class RGBPercent(Serialisable): tagname: str - r: Incomplete - g: Incomplete - b: Incomplete - def __init__(self, r: Incomplete | None = None, g: Incomplete | None = None, b: Incomplete | None = None) -> None: ... + r: MinMax[float, Literal[False]] + g: MinMax[float, Literal[False]] + b: MinMax[float, Literal[False]] + def __init__(self, r: _ConvertibleToFloat, g: _ConvertibleToFloat, b: _ConvertibleToFloat) -> None: ... + +_RGBPercent: TypeAlias = RGBPercent class SchemeColor(Serialisable): tagname: str @@ -121,8 +182,9 @@ class SchemeColor(Serialisable): blueMod: Incomplete gamma: Incomplete invGamma: Incomplete - val: Incomplete - __elements__: Incomplete + val: Set[_SchemeColorVal] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, tint: Incomplete | None = None, @@ -153,46 +215,82 @@ class SchemeColor(Serialisable): blueMod: Incomplete | None = None, gamma: Incomplete | None = None, invGamma: Incomplete | None = None, - val: Incomplete | None = None, + *, + val: _SchemeColorVal, + ) -> None: ... + @overload + def __init__( + self, + tint: Incomplete | None, + shade: Incomplete | None, + comp: Incomplete | None, + inv: Incomplete | None, + gray: Incomplete | None, + alpha: Incomplete | None, + alphaOff: Incomplete | None, + alphaMod: Incomplete | None, + hue: Incomplete | None, + hueOff: Incomplete | None, + hueMod: Incomplete | None, + sat: Incomplete | None, + satOff: Incomplete | None, + satMod: Incomplete | None, + lum: Incomplete | None, + lumOff: Incomplete | None, + lumMod: Incomplete | None, + red: Incomplete | None, + redOff: Incomplete | None, + redMod: Incomplete | None, + green: Incomplete | None, + greenOff: Incomplete | None, + greenMod: Incomplete | None, + blue: Incomplete | None, + blueOff: Incomplete | None, + blueMod: Incomplete | None, + gamma: Incomplete | None, + invGamma: Incomplete | None, + val: _SchemeColorVal, ) -> None: ... class ColorChoice(Serialisable): tagname: str namespace: Incomplete - scrgbClr: Incomplete - RGBPercent: Incomplete + scrgbClr: Typed[_RGBPercent, Literal[True]] + RGBPercent: Alias srgbClr: Incomplete - RGB: Incomplete - hslClr: Incomplete - sysClr: Incomplete - schemeClr: Incomplete + RGB: Alias + hslClr: Typed[HSLColor, Literal[True]] + sysClr: Typed[SystemColor, Literal[True]] + schemeClr: Typed[SystemColor, Literal[True]] prstClr: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - scrgbClr: Incomplete | None = None, + scrgbClr: _RGBPercent | None = None, srgbClr: Incomplete | None = None, - hslClr: Incomplete | None = None, - sysClr: Incomplete | None = None, - schemeClr: Incomplete | None = None, + hslClr: HSLColor | None = None, + sysClr: SystemColor | None = None, + schemeClr: SystemColor | None = None, prstClr: Incomplete | None = None, ) -> None: ... +_COLOR_SET: tuple[_ColorSetType, ...] + class ColorMapping(Serialisable): tagname: str - bg1: Incomplete - tx1: Incomplete - bg2: Incomplete - tx2: Incomplete - accent1: Incomplete - accent2: Incomplete - accent3: Incomplete - accent4: Incomplete - accent5: Incomplete - accent6: Incomplete - hlink: Incomplete - folHlink: Incomplete - extLst: Incomplete + bg1: Set[_ColorSetType] + tx1: Set[_ColorSetType] + bg2: Set[_ColorSetType] + tx2: Set[_ColorSetType] + accent1: Set[_ColorSetType] + accent2: Set[_ColorSetType] + accent3: Set[_ColorSetType] + accent4: Set[_ColorSetType] + accent5: Set[_ColorSetType] + accent6: Set[_ColorSetType] + hlink: Set[_ColorSetType] + folHlink: Set[_ColorSetType] + extLst: Typed[ExtensionList, Literal[True]] def __init__( self, bg1: str = "lt1", @@ -207,10 +305,10 @@ class ColorMapping(Serialisable): accent6: str = "accent6", hlink: str = "hlink", folHlink: str = "folHlink", - extLst: Incomplete | None = None, + extLst: ExtensionList | None = None, ) -> None: ... -class ColorChoiceDescriptor(Typed): - expected_type: Incomplete - allow_none: bool - def __set__(self, instance, value) -> None: ... +class ColorChoiceDescriptor(Typed[ColorChoice, Incomplete]): + expected_type: type[ColorChoice] + allow_none: Literal[True] + def __set__(self, instance: Serialisable | Strict, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi index 9d5b98816..565b1b08e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi @@ -1,76 +1,98 @@ -from _typeshed import Incomplete +from typing import ClassVar, overload +from typing_extensions import Literal +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.chart.text import RichText +from openpyxl.descriptors import Typed +from openpyxl.descriptors.base import Alias, Bool, Integer, String, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.geometry import ShapeStyle +from openpyxl.drawing.properties import NonVisualDrawingProps, NonVisualDrawingShapeProps class Connection(Serialisable): - id: Incomplete - idx: Incomplete - def __init__(self, id: Incomplete | None = None, idx: Incomplete | None = None) -> None: ... + id: Integer[Literal[False]] + idx: Integer[Literal[False]] + def __init__(self, id: _ConvertibleToInt, idx: _ConvertibleToInt) -> None: ... class ConnectorLocking(Serialisable): - extLst: Incomplete - def __init__(self, extLst: Incomplete | None = None) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + def __init__(self, extLst: ExtensionList | None = None) -> None: ... class NonVisualConnectorProperties(Serialisable): - cxnSpLocks: Incomplete - stCxn: Incomplete - endCxn: Incomplete - extLst: Incomplete + cxnSpLocks: Typed[ConnectorLocking, Literal[True]] + stCxn: Typed[Connection, Literal[True]] + endCxn: Typed[Connection, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] def __init__( self, - cxnSpLocks: Incomplete | None = None, - stCxn: Incomplete | None = None, - endCxn: Incomplete | None = None, - extLst: Incomplete | None = None, + cxnSpLocks: ConnectorLocking | None = None, + stCxn: Connection | None = None, + endCxn: Connection | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class ConnectorNonVisual(Serialisable): - cNvPr: Incomplete - cNvCxnSpPr: Incomplete - __elements__: Incomplete - def __init__(self, cNvPr: Incomplete | None = None, cNvCxnSpPr: Incomplete | None = None) -> None: ... + cNvPr: Typed[NonVisualDrawingProps, Literal[False]] + cNvCxnSpPr: Typed[NonVisualConnectorProperties, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, cNvPr: NonVisualDrawingProps, cNvCxnSpPr: NonVisualConnectorProperties) -> None: ... class ConnectorShape(Serialisable): tagname: str - nvCxnSpPr: Incomplete - spPr: Incomplete - style: Incomplete - macro: Incomplete - fPublished: Incomplete + nvCxnSpPr: Typed[ConnectorNonVisual, Literal[False]] + spPr: Typed[GraphicalProperties, Literal[False]] + style: Typed[ShapeStyle, Literal[True]] + macro: String[Literal[True]] + fPublished: Bool[Literal[True]] def __init__( self, - nvCxnSpPr: Incomplete | None = None, - spPr: Incomplete | None = None, - style: Incomplete | None = None, - macro: Incomplete | None = None, - fPublished: Incomplete | None = None, + nvCxnSpPr: ConnectorNonVisual, + spPr: GraphicalProperties, + style: ShapeStyle | None = None, + macro: str | None = None, + fPublished: _ConvertibleToBool | None = None, ) -> None: ... class ShapeMeta(Serialisable): tagname: str - cNvPr: Incomplete - cNvSpPr: Incomplete - def __init__(self, cNvPr: Incomplete | None = None, cNvSpPr: Incomplete | None = None) -> None: ... + cNvPr: Typed[NonVisualDrawingProps, Literal[False]] + cNvSpPr: Typed[NonVisualDrawingShapeProps, Literal[False]] + def __init__(self, cNvPr: NonVisualDrawingProps, cNvSpPr: NonVisualDrawingShapeProps) -> None: ... class Shape(Serialisable): - macro: Incomplete - textlink: Incomplete - fPublished: Incomplete - fLocksText: Incomplete - nvSpPr: Incomplete - meta: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - style: Incomplete - txBody: Incomplete + macro: String[Literal[True]] + textlink: String[Literal[True]] + fPublished: Bool[Literal[True]] + fLocksText: Bool[Literal[True]] + nvSpPr: Typed[ShapeMeta, Literal[True]] + meta: Alias + spPr: Typed[GraphicalProperties, Literal[False]] + graphicalProperties: Alias + style: Typed[ShapeStyle, Literal[True]] + txBody: Typed[RichText, Literal[True]] + @overload def __init__( self, - macro: Incomplete | None = None, - textlink: Incomplete | None = None, - fPublished: Incomplete | None = None, - fLocksText: Incomplete | None = None, - nvSpPr: Incomplete | None = None, - spPr: Incomplete | None = None, - style: Incomplete | None = None, - txBody: Incomplete | None = None, + macro: str | None = None, + textlink: str | None = None, + fPublished: _ConvertibleToBool | None = None, + fLocksText: _ConvertibleToBool | None = None, + nvSpPr: ShapeMeta | None = None, + *, + spPr: GraphicalProperties, + style: ShapeStyle | None = None, + txBody: RichText | None = None, + ) -> None: ... + @overload + def __init__( + self, + macro: str | None, + textlink: str | None, + fPublished: _ConvertibleToBool | None, + fLocksText: _ConvertibleToBool | None, + nvSpPr: ShapeMeta | None, + spPr: GraphicalProperties, + style: ShapeStyle | None = None, + txBody: RichText | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi index 1e340241a..130714d48 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi @@ -1,208 +1,260 @@ from _typeshed import Incomplete +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import ( + Bool, + Float, + Integer, + Set, + String, + Typed, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) from openpyxl.descriptors.serialisable import Serialisable from .colors import ColorChoice +_FillOverlayEffectBlend: TypeAlias = Literal["over", "mult", "screen", "darken", "lighten"] +_EffectContainerType: TypeAlias = Literal["sib", "tree"] +_Algn: TypeAlias = Literal["tl", "t", "tr", "l", "ctr", "r", "bl", "b", "br"] +_PresetShadowEffectPrst: TypeAlias = Literal[ + "shdw1", + "shdw2", + "shdw3", + "shdw4", + "shdw5", + "shdw6", + "shdw7", + "shdw8", + "shdw9", + "shdw10", + "shdw11", + "shdw12", + "shdw13", + "shdw14", + "shdw15", + "shdw16", + "shdw17", + "shdw18", + "shdw19", + "shdw20", +] + class TintEffect(Serialisable): tagname: str - hue: Incomplete - amt: Incomplete - def __init__(self, hue: int = 0, amt: int = 0) -> None: ... + hue: Integer[Literal[False]] + amt: Integer[Literal[False]] + def __init__(self, hue: _ConvertibleToInt = 0, amt: _ConvertibleToInt = 0) -> None: ... class LuminanceEffect(Serialisable): tagname: str - bright: Incomplete - contrast: Incomplete - def __init__(self, bright: int = 0, contrast: int = 0) -> None: ... + bright: Integer[Literal[False]] + contrast: Integer[Literal[False]] + def __init__(self, bright: _ConvertibleToInt = 0, contrast: _ConvertibleToInt = 0) -> None: ... class HSLEffect(Serialisable): - hue: Incomplete - sat: Incomplete - lum: Incomplete - def __init__(self, hue: Incomplete | None = None, sat: Incomplete | None = None, lum: Incomplete | None = None) -> None: ... + hue: Integer[Literal[False]] + sat: Integer[Literal[False]] + lum: Integer[Literal[False]] + def __init__(self, hue: _ConvertibleToInt, sat: _ConvertibleToInt, lum: _ConvertibleToInt) -> None: ... class GrayscaleEffect(Serialisable): tagname: str class FillOverlayEffect(Serialisable): - blend: Incomplete - def __init__(self, blend: Incomplete | None = None) -> None: ... + blend: Set[_FillOverlayEffectBlend] + def __init__(self, blend: _FillOverlayEffectBlend) -> None: ... class DuotoneEffect(Serialisable): ... class ColorReplaceEffect(Serialisable): ... class Color(Serialisable): ... class ColorChangeEffect(Serialisable): - useA: Incomplete - clrFrom: Incomplete - clrTo: Incomplete - def __init__( - self, useA: Incomplete | None = None, clrFrom: Incomplete | None = None, clrTo: Incomplete | None = None - ) -> None: ... + useA: Bool[Literal[True]] + clrFrom: Typed[Color, Literal[False]] + clrTo: Typed[Color, Literal[False]] + @overload + def __init__(self, useA: _ConvertibleToBool | None = None, *, clrFrom: Color, clrTo: Color) -> None: ... + @overload + def __init__(self, useA: _ConvertibleToBool | None, clrFrom: Color, clrTo: Color) -> None: ... class BlurEffect(Serialisable): - rad: Incomplete - grow: Incomplete - def __init__(self, rad: Incomplete | None = None, grow: Incomplete | None = None) -> None: ... + rad: Float[Literal[False]] + grow: Bool[Literal[True]] + def __init__(self, rad: _ConvertibleToFloat, grow: _ConvertibleToBool | None = None) -> None: ... class BiLevelEffect(Serialisable): - thresh: Incomplete - def __init__(self, thresh: Incomplete | None = None) -> None: ... + thresh: Integer[Literal[False]] + def __init__(self, thresh: _ConvertibleToInt) -> None: ... class AlphaReplaceEffect(Serialisable): - a: Incomplete - def __init__(self, a: Incomplete | None = None) -> None: ... + a: Integer[Literal[False]] + def __init__(self, a: _ConvertibleToInt) -> None: ... class AlphaModulateFixedEffect(Serialisable): - amt: Incomplete - def __init__(self, amt: Incomplete | None = None) -> None: ... + amt: Integer[Literal[False]] + def __init__(self, amt: _ConvertibleToInt) -> None: ... class EffectContainer(Serialisable): - type: Incomplete - name: Incomplete - def __init__(self, type: Incomplete | None = None, name: Incomplete | None = None) -> None: ... + type: Set[_EffectContainerType] + name: String[Literal[True]] + def __init__(self, type: _EffectContainerType, name: str | None = None) -> None: ... class AlphaModulateEffect(Serialisable): - cont: Incomplete - def __init__(self, cont: Incomplete | None = None) -> None: ... + cont: Typed[EffectContainer, Literal[False]] + def __init__(self, cont: EffectContainer) -> None: ... class AlphaInverseEffect(Serialisable): ... class AlphaFloorEffect(Serialisable): ... class AlphaCeilingEffect(Serialisable): ... class AlphaBiLevelEffect(Serialisable): - thresh: Incomplete - def __init__(self, thresh: Incomplete | None = None) -> None: ... + thresh: Integer[Literal[False]] + def __init__(self, thresh: _ConvertibleToInt) -> None: ... class GlowEffect(ColorChoice): - rad: Incomplete + rad: Float[Literal[False]] scrgbClr: Incomplete srgbClr: Incomplete hslClr: Incomplete sysClr: Incomplete schemeClr: Incomplete prstClr: Incomplete - __elements__: Incomplete - def __init__(self, rad: Incomplete | None = None, **kw) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, rad: _ConvertibleToFloat, **kw) -> None: ... class InnerShadowEffect(ColorChoice): - blurRad: Incomplete - dist: Incomplete - dir: Incomplete + blurRad: Float[Literal[False]] + dist: Float[Literal[False]] + dir: Integer[Literal[False]] scrgbClr: Incomplete srgbClr: Incomplete hslClr: Incomplete sysClr: Incomplete schemeClr: Incomplete prstClr: Incomplete - __elements__: Incomplete - def __init__( - self, blurRad: Incomplete | None = None, dist: Incomplete | None = None, dir: Incomplete | None = None, **kw - ) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, blurRad: _ConvertibleToFloat, dist: _ConvertibleToFloat, dir: _ConvertibleToInt, **kw) -> None: ... class OuterShadow(ColorChoice): tagname: str - blurRad: Incomplete - dist: Incomplete - dir: Incomplete - sx: Incomplete - sy: Incomplete - kx: Incomplete - ky: Incomplete - algn: Incomplete - rotWithShape: Incomplete + blurRad: Float[Literal[True]] + dist: Float[Literal[True]] + dir: Integer[Literal[True]] + sx: Integer[Literal[True]] + sy: Integer[Literal[True]] + kx: Integer[Literal[True]] + ky: Integer[Literal[True]] + algn: Set[_Algn] + rotWithShape: Bool[Literal[True]] scrgbClr: Incomplete srgbClr: Incomplete hslClr: Incomplete sysClr: Incomplete schemeClr: Incomplete prstClr: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, - blurRad: Incomplete | None = None, - dist: Incomplete | None = None, - dir: Incomplete | None = None, - sx: Incomplete | None = None, - sy: Incomplete | None = None, - kx: Incomplete | None = None, - ky: Incomplete | None = None, - algn: Incomplete | None = None, - rotWithShape: Incomplete | None = None, + blurRad: _ConvertibleToFloat | None = None, + dist: _ConvertibleToFloat | None = None, + dir: _ConvertibleToInt | None = None, + sx: _ConvertibleToInt | None = None, + sy: _ConvertibleToInt | None = None, + kx: _ConvertibleToInt | None = None, + ky: _ConvertibleToInt | None = None, + *, + algn: _Algn, + rotWithShape: _ConvertibleToBool | None = None, + **kw, + ) -> None: ... + @overload + def __init__( + self, + blurRad: _ConvertibleToFloat | None, + dist: _ConvertibleToFloat | None, + dir: _ConvertibleToInt | None, + sx: _ConvertibleToInt | None, + sy: _ConvertibleToInt | None, + kx: _ConvertibleToInt | None, + ky: _ConvertibleToInt | None, + algn: _Algn, + rotWithShape: _ConvertibleToBool | None = None, **kw, ) -> None: ... class PresetShadowEffect(ColorChoice): - prst: Incomplete - dist: Incomplete - dir: Incomplete + prst: Set[_PresetShadowEffectPrst] + dist: Float[Literal[False]] + dir: Integer[Literal[False]] scrgbClr: Incomplete srgbClr: Incomplete hslClr: Incomplete sysClr: Incomplete schemeClr: Incomplete prstClr: Incomplete - __elements__: Incomplete - def __init__( - self, prst: Incomplete | None = None, dist: Incomplete | None = None, dir: Incomplete | None = None, **kw - ) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, prst: _PresetShadowEffectPrst, dist: _ConvertibleToFloat, dir: _ConvertibleToInt, **kw) -> None: ... class ReflectionEffect(Serialisable): - blurRad: Incomplete - stA: Incomplete - stPos: Incomplete - endA: Incomplete - endPos: Incomplete - dist: Incomplete - dir: Incomplete - fadeDir: Incomplete - sx: Incomplete - sy: Incomplete - kx: Incomplete - ky: Incomplete - algn: Incomplete - rotWithShape: Incomplete + blurRad: Float[Literal[False]] + stA: Integer[Literal[False]] + stPos: Integer[Literal[False]] + endA: Integer[Literal[False]] + endPos: Integer[Literal[False]] + dist: Float[Literal[False]] + dir: Integer[Literal[False]] + fadeDir: Integer[Literal[False]] + sx: Integer[Literal[False]] + sy: Integer[Literal[False]] + kx: Integer[Literal[False]] + ky: Integer[Literal[False]] + algn: Set[_Algn] + rotWithShape: Bool[Literal[True]] def __init__( self, - blurRad: Incomplete | None = None, - stA: Incomplete | None = None, - stPos: Incomplete | None = None, - endA: Incomplete | None = None, - endPos: Incomplete | None = None, - dist: Incomplete | None = None, - dir: Incomplete | None = None, - fadeDir: Incomplete | None = None, - sx: Incomplete | None = None, - sy: Incomplete | None = None, - kx: Incomplete | None = None, - ky: Incomplete | None = None, - algn: Incomplete | None = None, - rotWithShape: Incomplete | None = None, + blurRad: _ConvertibleToFloat, + stA: _ConvertibleToInt, + stPos: _ConvertibleToInt, + endA: _ConvertibleToInt, + endPos: _ConvertibleToInt, + dist: _ConvertibleToFloat, + dir: _ConvertibleToInt, + fadeDir: _ConvertibleToInt, + sx: _ConvertibleToInt, + sy: _ConvertibleToInt, + kx: _ConvertibleToInt, + ky: _ConvertibleToInt, + algn: _Algn, + rotWithShape: _ConvertibleToBool | None = None, ) -> None: ... class SoftEdgesEffect(Serialisable): - rad: Incomplete - def __init__(self, rad: Incomplete | None = None) -> None: ... + rad: Float[Literal[False]] + def __init__(self, rad: _ConvertibleToFloat) -> None: ... class EffectList(Serialisable): - blur: Incomplete - fillOverlay: Incomplete - glow: Incomplete - innerShdw: Incomplete - outerShdw: Incomplete - prstShdw: Incomplete - reflection: Incomplete - softEdge: Incomplete - __elements__: Incomplete + blur: Typed[BlurEffect, Literal[True]] + fillOverlay: Typed[FillOverlayEffect, Literal[True]] + glow: Typed[GlowEffect, Literal[True]] + innerShdw: Typed[InnerShadowEffect, Literal[True]] + outerShdw: Typed[OuterShadow, Literal[True]] + prstShdw: Typed[PresetShadowEffect, Literal[True]] + reflection: Typed[ReflectionEffect, Literal[True]] + softEdge: Typed[SoftEdgesEffect, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - blur: Incomplete | None = None, - fillOverlay: Incomplete | None = None, - glow: Incomplete | None = None, - innerShdw: Incomplete | None = None, - outerShdw: Incomplete | None = None, - prstShdw: Incomplete | None = None, - reflection: Incomplete | None = None, - softEdge: Incomplete | None = None, + blur: BlurEffect | None = None, + fillOverlay: FillOverlayEffect | None = None, + glow: GlowEffect | None = None, + innerShdw: InnerShadowEffect | None = None, + outerShdw: OuterShadow | None = None, + prstShdw: PresetShadowEffect | None = None, + reflection: ReflectionEffect | None = None, + softEdge: SoftEdgesEffect | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi index dfc4a9d62..4ff6baf3d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi @@ -1,32 +1,131 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import ( + Alias, + Bool, + Integer, + MinMax, + NoneSet, + Set, + Typed, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.colors import ColorChoice, HSLColor, RGBPercent as _RGBPercent, SchemeColor, SystemColor +from openpyxl.drawing.effect import ( + AlphaBiLevelEffect, + AlphaCeilingEffect, + AlphaFloorEffect, + AlphaInverseEffect, + AlphaModulateEffect, + AlphaModulateFixedEffect, + AlphaReplaceEffect, + BiLevelEffect, + BlurEffect, + ColorChangeEffect, + ColorReplaceEffect, + DuotoneEffect, + FillOverlayEffect, + GrayscaleEffect, + HSLEffect, + LuminanceEffect, + TintEffect, +) + +_PatternFillPropertiesPrst: TypeAlias = Literal[ + "pct5", + "pct10", + "pct20", + "pct25", + "pct30", + "pct40", + "pct50", + "pct60", + "pct70", + "pct75", + "pct80", + "pct90", + "horz", + "vert", + "ltHorz", + "ltVert", + "dkHorz", + "dkVert", + "narHorz", + "narVert", + "dashHorz", + "dashVert", + "cross", + "dnDiag", + "upDiag", + "ltDnDiag", + "ltUpDiag", + "dkDnDiag", + "dkUpDiag", + "wdDnDiag", + "wdUpDiag", + "dashDnDiag", + "dashUpDiag", + "diagCross", + "smCheck", + "lgCheck", + "smGrid", + "lgGrid", + "dotGrid", + "smConfetti", + "lgConfetti", + "horzBrick", + "diagBrick", + "solidDmnd", + "openDmnd", + "dotDmnd", + "plaid", + "sphere", + "weave", + "divot", + "shingle", + "wave", + "trellis", + "zigZag", +] +_PropertiesFlip: TypeAlias = Literal["x", "y", "xy"] +_TileInfoPropertiesAlgn: TypeAlias = Literal["tl", "t", "tr", "l", "ctr", "r", "bl", "b", "br"] +_BlipCstate: TypeAlias = Literal["email", "screen", "print", "hqprint"] +_PathShadePropertiesPath: TypeAlias = Literal["shape", "circle", "rect"] class PatternFillProperties(Serialisable): tagname: str namespace: Incomplete - prst: Incomplete - preset: Incomplete - fgClr: Incomplete - foreground: Incomplete - bgClr: Incomplete - background: Incomplete - __elements__: Incomplete + prst: NoneSet[_PatternFillPropertiesPrst] + preset: Alias + fgClr: Typed[ColorChoice, Literal[True]] + foreground: Alias + bgClr: Typed[ColorChoice, Literal[True]] + background: Alias + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, prst: Incomplete | None = None, fgClr: Incomplete | None = None, bgClr: Incomplete | None = None + self, + prst: _PatternFillPropertiesPrst | Literal["none"] | None = None, + fgClr: ColorChoice | None = None, + bgClr: ColorChoice | None = None, ) -> None: ... class RelativeRect(Serialisable): tagname: str namespace: Incomplete l: Incomplete - left: Incomplete + left: Alias t: Incomplete - top: Incomplete + top: Alias r: Incomplete - right: Incomplete + right: Alias b: Incomplete - bottom: Incomplete + bottom: Alias def __init__( self, l: Incomplete | None = None, t: Incomplete | None = None, r: Incomplete | None = None, b: Incomplete | None = None ) -> None: ... @@ -34,192 +133,193 @@ class RelativeRect(Serialisable): class StretchInfoProperties(Serialisable): tagname: str namespace: Incomplete - fillRect: Incomplete - def __init__(self, fillRect=...) -> None: ... + fillRect: Typed[RelativeRect, Literal[True]] + def __init__(self, fillRect: RelativeRect = ...) -> None: ... class GradientStop(Serialisable): tagname: str namespace: Incomplete - pos: Incomplete - scrgbClr: Incomplete - RGBPercent: Incomplete + pos: MinMax[float, Literal[True]] + scrgbClr: Typed[_RGBPercent, Literal[True]] + RGBPercent: Alias srgbClr: Incomplete - RGB: Incomplete - hslClr: Incomplete - sysClr: Incomplete - schemeClr: Incomplete + RGB: Alias + hslClr: Typed[HSLColor, Literal[True]] + sysClr: Typed[SystemColor, Literal[True]] + schemeClr: Typed[SchemeColor, Literal[True]] prstClr: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - pos: Incomplete | None = None, - scrgbClr: Incomplete | None = None, + pos: _ConvertibleToFloat | None = None, + scrgbClr: _RGBPercent | None = None, srgbClr: Incomplete | None = None, - hslClr: Incomplete | None = None, - sysClr: Incomplete | None = None, - schemeClr: Incomplete | None = None, + hslClr: HSLColor | None = None, + sysClr: SystemColor | None = None, + schemeClr: SchemeColor | None = None, prstClr: Incomplete | None = None, ) -> None: ... class LinearShadeProperties(Serialisable): tagname: str namespace: Incomplete - ang: Incomplete - scaled: Incomplete - def __init__(self, ang: Incomplete | None = None, scaled: Incomplete | None = None) -> None: ... + ang: Integer[Literal[False]] + scaled: Bool[Literal[True]] + def __init__(self, ang: _ConvertibleToInt, scaled: _ConvertibleToBool | None = None) -> None: ... class PathShadeProperties(Serialisable): tagname: str namespace: Incomplete - path: Incomplete - fillToRect: Incomplete - def __init__(self, path: Incomplete | None = None, fillToRect: Incomplete | None = None) -> None: ... + path: Set[_PathShadePropertiesPath] + fillToRect: Typed[RelativeRect, Literal[True]] + def __init__(self, path: _PathShadePropertiesPath, fillToRect: RelativeRect | None = None) -> None: ... class GradientFillProperties(Serialisable): tagname: str namespace: Incomplete - flip: Incomplete - rotWithShape: Incomplete + flip: NoneSet[_PropertiesFlip] + rotWithShape: Bool[Literal[True]] gsLst: Incomplete - stop_list: Incomplete - lin: Incomplete - linear: Incomplete - path: Incomplete - tileRect: Incomplete - __elements__: Incomplete + stop_list: Alias + lin: Typed[LinearShadeProperties, Literal[True]] + linear: Alias + path: Typed[PathShadeProperties, Literal[True]] + tileRect: Typed[RelativeRect, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - flip: Incomplete | None = None, - rotWithShape: Incomplete | None = None, + flip: _PropertiesFlip | Literal["none"] | None = None, + rotWithShape: _ConvertibleToBool | None = None, gsLst=(), - lin: Incomplete | None = None, - path: Incomplete | None = None, - tileRect: Incomplete | None = None, + lin: LinearShadeProperties | None = None, + path: PathShadeProperties | None = None, + tileRect: RelativeRect | None = None, ) -> None: ... class SolidColorFillProperties(Serialisable): tagname: str - scrgbClr: Incomplete - RGBPercent: Incomplete + scrgbClr: Typed[_RGBPercent, Literal[True]] + RGBPercent: Alias srgbClr: Incomplete - RGB: Incomplete - hslClr: Incomplete - sysClr: Incomplete - schemeClr: Incomplete + RGB: Alias + hslClr: Typed[HSLColor, Literal[True]] + sysClr: Typed[SystemColor, Literal[True]] + schemeClr: Typed[SchemeColor, Literal[True]] prstClr: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - scrgbClr: Incomplete | None = None, + scrgbClr: _RGBPercent | None = None, srgbClr: Incomplete | None = None, - hslClr: Incomplete | None = None, - sysClr: Incomplete | None = None, - schemeClr: Incomplete | None = None, + hslClr: HSLColor | None = None, + sysClr: SystemColor | None = None, + schemeClr: SchemeColor | None = None, prstClr: Incomplete | None = None, ) -> None: ... class Blip(Serialisable): tagname: str namespace: Incomplete - cstate: Incomplete + cstate: NoneSet[_BlipCstate] embed: Incomplete link: Incomplete - noGrp: Incomplete - noSelect: Incomplete - noRot: Incomplete - noChangeAspect: Incomplete - noMove: Incomplete - noResize: Incomplete - noEditPoints: Incomplete - noAdjustHandles: Incomplete - noChangeArrowheads: Incomplete - noChangeShapeType: Incomplete - extLst: Incomplete - alphaBiLevel: Incomplete - alphaCeiling: Incomplete - alphaFloor: Incomplete - alphaInv: Incomplete - alphaMod: Incomplete - alphaModFix: Incomplete - alphaRepl: Incomplete - biLevel: Incomplete - blur: Incomplete - clrChange: Incomplete - clrRepl: Incomplete - duotone: Incomplete - fillOverlay: Incomplete - grayscl: Incomplete - hsl: Incomplete - lum: Incomplete - tint: Incomplete - __elements__: Incomplete + noGrp: Bool[Literal[True]] + noSelect: Bool[Literal[True]] + noRot: Bool[Literal[True]] + noChangeAspect: Bool[Literal[True]] + noMove: Bool[Literal[True]] + noResize: Bool[Literal[True]] + noEditPoints: Bool[Literal[True]] + noAdjustHandles: Bool[Literal[True]] + noChangeArrowheads: Bool[Literal[True]] + noChangeShapeType: Bool[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + alphaBiLevel: Typed[AlphaBiLevelEffect, Literal[True]] + alphaCeiling: Typed[AlphaCeilingEffect, Literal[True]] + alphaFloor: Typed[AlphaFloorEffect, Literal[True]] + alphaInv: Typed[AlphaInverseEffect, Literal[True]] + alphaMod: Typed[AlphaModulateEffect, Literal[True]] + alphaModFix: Typed[AlphaModulateFixedEffect, Literal[True]] + alphaRepl: Typed[AlphaReplaceEffect, Literal[True]] + biLevel: Typed[BiLevelEffect, Literal[True]] + blur: Typed[BlurEffect, Literal[True]] + clrChange: Typed[ColorChangeEffect, Literal[True]] + clrRepl: Typed[ColorReplaceEffect, Literal[True]] + duotone: Typed[DuotoneEffect, Literal[True]] + fillOverlay: Typed[FillOverlayEffect, Literal[True]] + grayscl: Typed[GrayscaleEffect, Literal[True]] + hsl: Typed[HSLEffect, Literal[True]] + lum: Typed[LuminanceEffect, Literal[True]] + tint: Typed[TintEffect, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - cstate: Incomplete | None = None, + cstate: _BlipCstate | Literal["none"] | None = None, embed: Incomplete | None = None, link: Incomplete | None = None, - noGrp: Incomplete | None = None, - noSelect: Incomplete | None = None, - noRot: Incomplete | None = None, - noChangeAspect: Incomplete | None = None, - noMove: Incomplete | None = None, - noResize: Incomplete | None = None, - noEditPoints: Incomplete | None = None, - noAdjustHandles: Incomplete | None = None, - noChangeArrowheads: Incomplete | None = None, - noChangeShapeType: Incomplete | None = None, - extLst: Incomplete | None = None, - alphaBiLevel: Incomplete | None = None, - alphaCeiling: Incomplete | None = None, - alphaFloor: Incomplete | None = None, - alphaInv: Incomplete | None = None, - alphaMod: Incomplete | None = None, - alphaModFix: Incomplete | None = None, - alphaRepl: Incomplete | None = None, - biLevel: Incomplete | None = None, - blur: Incomplete | None = None, - clrChange: Incomplete | None = None, - clrRepl: Incomplete | None = None, - duotone: Incomplete | None = None, - fillOverlay: Incomplete | None = None, - grayscl: Incomplete | None = None, - hsl: Incomplete | None = None, - lum: Incomplete | None = None, - tint: Incomplete | None = None, + noGrp: _ConvertibleToBool | None = None, + noSelect: _ConvertibleToBool | None = None, + noRot: _ConvertibleToBool | None = None, + noChangeAspect: _ConvertibleToBool | None = None, + noMove: _ConvertibleToBool | None = None, + noResize: _ConvertibleToBool | None = None, + noEditPoints: _ConvertibleToBool | None = None, + noAdjustHandles: _ConvertibleToBool | None = None, + noChangeArrowheads: _ConvertibleToBool | None = None, + noChangeShapeType: _ConvertibleToBool | None = None, + extLst: ExtensionList | None = None, + alphaBiLevel: AlphaBiLevelEffect | None = None, + alphaCeiling: AlphaCeilingEffect | None = None, + alphaFloor: AlphaFloorEffect | None = None, + alphaInv: AlphaInverseEffect | None = None, + alphaMod: AlphaModulateEffect | None = None, + alphaModFix: AlphaModulateFixedEffect | None = None, + alphaRepl: AlphaReplaceEffect | None = None, + biLevel: BiLevelEffect | None = None, + blur: BlurEffect | None = None, + clrChange: ColorChangeEffect | None = None, + clrRepl: ColorReplaceEffect | None = None, + duotone: DuotoneEffect | None = None, + fillOverlay: FillOverlayEffect | None = None, + grayscl: GrayscaleEffect | None = None, + hsl: HSLEffect | None = None, + lum: LuminanceEffect | None = None, + tint: TintEffect | None = None, ) -> None: ... class TileInfoProperties(Serialisable): - tx: Incomplete - ty: Incomplete - sx: Incomplete - sy: Incomplete - flip: Incomplete - algn: Incomplete + tx: Integer[Literal[True]] + ty: Integer[Literal[True]] + sx: Integer[Literal[True]] + sy: Integer[Literal[True]] + flip: NoneSet[_PropertiesFlip] + algn: Set[_TileInfoPropertiesAlgn] def __init__( self, - tx: Incomplete | None = None, - ty: Incomplete | None = None, - sx: Incomplete | None = None, - sy: Incomplete | None = None, - flip: Incomplete | None = None, - algn: Incomplete | None = None, + tx: _ConvertibleToInt | None = None, + ty: _ConvertibleToInt | None = None, + sx: _ConvertibleToInt | None = None, + sy: _ConvertibleToInt | None = None, + flip: _PropertiesFlip | Literal["none"] | None = None, + *, + algn: _TileInfoPropertiesAlgn, ) -> None: ... class BlipFillProperties(Serialisable): tagname: str - dpi: Incomplete - rotWithShape: Incomplete - blip: Incomplete - srcRect: Incomplete - tile: Incomplete - stretch: Incomplete - __elements__: Incomplete + dpi: Integer[Literal[True]] + rotWithShape: Bool[Literal[True]] + blip: Typed[Blip, Literal[True]] + srcRect: Typed[RelativeRect, Literal[True]] + tile: Typed[TileInfoProperties, Literal[True]] + stretch: Typed[StretchInfoProperties, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - dpi: Incomplete | None = None, - rotWithShape: Incomplete | None = None, - blip: Incomplete | None = None, - tile: Incomplete | None = None, - stretch=..., - srcRect: Incomplete | None = None, + dpi: _ConvertibleToInt | None = None, + rotWithShape: _ConvertibleToBool | None = None, + blip: Blip | None = None, + tile: TileInfoProperties | None = None, + stretch: StretchInfoProperties = ..., + srcRect: RelativeRect | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi index cbfc29708..8b9b53215 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi @@ -1,6 +1,341 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import ( + Alias, + Bool, + Float, + Integer, + MinMax, + NoneSet, + Set, + String, + Typed, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) +from openpyxl.descriptors.excel import Coordinate, ExtensionList, Percentage from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.styles.colors import Color + +_BevelPrst: TypeAlias = Literal[ + "relaxedInset", + "circle", + "slope", + "cross", + "angle", + "softRound", + "convex", + "coolSlant", + "divot", + "riblet", + "hardEdge", + "artDeco", +] +_Shape3DPrstMaterial: TypeAlias = Literal[ + "legacyMatte", + "legacyPlastic", + "legacyMetal", + "legacyWireframe", + "matte", + "plastic", + "metal", + "warmMatte", + "translucentPowder", + "powder", + "dkEdge", + "softEdge", + "clear", + "flat", + "softmetal", +] +_Path2DFill: TypeAlias = Literal["norm", "lighten", "lightenLess", "darken", "darkenLess"] +_FontReferenceIdx: TypeAlias = Literal["major", "minor"] +_CameraPrst: TypeAlias = Literal[ + "legacyObliqueTopLeft", + "legacyObliqueTop", + "legacyObliqueTopRight", + "legacyObliqueLeft", + "legacyObliqueFront", + "legacyObliqueRight", + "legacyObliqueBottomLeft", + "legacyObliqueBottom", + "legacyObliqueBottomRight", + "legacyPerspectiveTopLeft", + "legacyPerspectiveTop", + "legacyPerspectiveTopRight", + "legacyPerspectiveLeft", + "legacyPerspectiveFront", + "legacyPerspectiveRight", + "legacyPerspectiveBottomLeft", + "legacyPerspectiveBottom", + "legacyPerspectiveBottomRight", + "orthographicFront", + "isometricTopUp", + "isometricTopDown", + "isometricBottomUp", + "isometricBottomDown", + "isometricLeftUp", + "isometricLeftDown", + "isometricRightUp", + "isometricRightDown", + "isometricOffAxis1Left", + "isometricOffAxis1Right", + "isometricOffAxis1Top", + "isometricOffAxis2Left", + "isometricOffAxis2Right", + "isometricOffAxis2Top", + "isometricOffAxis3Left", + "isometricOffAxis3Right", + "isometricOffAxis3Bottom", + "isometricOffAxis4Left", + "isometricOffAxis4Right", + "isometricOffAxis4Bottom", + "obliqueTopLeft", + "obliqueTop", + "obliqueTopRight", + "obliqueLeft", + "obliqueRight", + "obliqueBottomLeft", + "obliqueBottom", + "obliqueBottomRight", + "perspectiveFront", + "perspectiveLeft", + "perspectiveRight", + "perspectiveAbove", + "perspectiveBelow", + "perspectiveAboveLeftFacing", + "perspectiveAboveRightFacing", + "perspectiveContrastingLeftFacing", + "perspectiveContrastingRightFacing", + "perspectiveHeroicLeftFacing", + "perspectiveHeroicRightFacing", + "perspectiveHeroicExtremeLeftFacing", + "perspectiveHeroicExtremeRightFacing", + "perspectiveRelaxed", + "perspectiveRelaxedModerately", +] +_LightRigRig: TypeAlias = Literal[ + "legacyFlat1", + "legacyFlat2", + "legacyFlat3", + "legacyFlat4", + "legacyNormal1", + "legacyNormal2", + "legacyNormal3", + "legacyNormal4", + "legacyHarsh1", + "legacyHarsh2", + "legacyHarsh3", + "legacyHarsh4", + "threePt", + "balanced", + "soft", + "harsh", + "flood", + "contrasting", + "morning", + "sunrise", + "sunset", + "chilly", + "freezing", + "flat", + "twoPt", + "glow", + "brightRoom", +] +_LightRigDir: TypeAlias = Literal["tl", "t", "tr", "l", "r", "bl", "b", "br"] +_PresetGeometry2DPrst: TypeAlias = Literal[ + "line", + "lineInv", + "triangle", + "rtTriangle", + "rect", + "diamond", + "parallelogram", + "trapezoid", + "nonIsoscelesTrapezoid", + "pentagon", + "hexagon", + "heptagon", + "octagon", + "decagon", + "dodecagon", + "star4", + "star5", + "star6", + "star7", + "star8", + "star10", + "star12", + "star16", + "star24", + "star32", + "roundRect", + "round1Rect", + "round2SameRect", + "round2DiagRect", + "snipRoundRect", + "snip1Rect", + "snip2SameRect", + "snip2DiagRect", + "plaque", + "ellipse", + "teardrop", + "homePlate", + "chevron", + "pieWedge", + "pie", + "blockArc", + "donut", + "noSmoking", + "rightArrow", + "leftArrow", + "upArrow", + "downArrow", + "stripedRightArrow", + "notchedRightArrow", + "bentUpArrow", + "leftRightArrow", + "upDownArrow", + "leftUpArrow", + "leftRightUpArrow", + "quadArrow", + "leftArrowCallout", + "rightArrowCallout", + "upArrowCallout", + "downArrowCallout", + "leftRightArrowCallout", + "upDownArrowCallout", + "quadArrowCallout", + "bentArrow", + "uturnArrow", + "circularArrow", + "leftCircularArrow", + "leftRightCircularArrow", + "curvedRightArrow", + "curvedLeftArrow", + "curvedUpArrow", + "curvedDownArrow", + "swooshArrow", + "cube", + "can", + "lightningBolt", + "heart", + "sun", + "moon", + "smileyFace", + "irregularSeal1", + "irregularSeal2", + "foldedCorner", + "bevel", + "frame", + "halfFrame", + "corner", + "diagStripe", + "chord", + "arc", + "leftBracket", + "rightBracket", + "leftBrace", + "rightBrace", + "bracketPair", + "bracePair", + "straightConnector1", + "bentConnector2", + "bentConnector3", + "bentConnector4", + "bentConnector5", + "curvedConnector2", + "curvedConnector3", + "curvedConnector4", + "curvedConnector5", + "callout1", + "callout2", + "callout3", + "accentCallout1", + "accentCallout2", + "accentCallout3", + "borderCallout1", + "borderCallout2", + "borderCallout3", + "accentBorderCallout1", + "accentBorderCallout2", + "accentBorderCallout3", + "wedgeRectCallout", + "wedgeRoundRectCallout", + "wedgeEllipseCallout", + "cloudCallout", + "cloud", + "ribbon", + "ribbon2", + "ellipseRibbon", + "ellipseRibbon2", + "leftRightRibbon", + "verticalScroll", + "horizontalScroll", + "wave", + "doubleWave", + "plus", + "flowChartProcess", + "flowChartDecision", + "flowChartInputOutput", + "flowChartPredefinedProcess", + "flowChartInternalStorage", + "flowChartDocument", + "flowChartMultidocument", + "flowChartTerminator", + "flowChartPreparation", + "flowChartManualInput", + "flowChartManualOperation", + "flowChartConnector", + "flowChartPunchedCard", + "flowChartPunchedTape", + "flowChartSummingJunction", + "flowChartOr", + "flowChartCollate", + "flowChartSort", + "flowChartExtract", + "flowChartMerge", + "flowChartOfflineStorage", + "flowChartOnlineStorage", + "flowChartMagneticTape", + "flowChartMagneticDisk", + "flowChartMagneticDrum", + "flowChartDisplay", + "flowChartDelay", + "flowChartAlternateProcess", + "flowChartOffpageConnector", + "actionButtonBlank", + "actionButtonHome", + "actionButtonHelp", + "actionButtonInformation", + "actionButtonForwardNext", + "actionButtonBackPrevious", + "actionButtonEnd", + "actionButtonBeginning", + "actionButtonReturn", + "actionButtonDocument", + "actionButtonSound", + "actionButtonMovie", + "gear6", + "gear9", + "funnel", + "mathPlus", + "mathMinus", + "mathMultiply", + "mathDivide", + "mathEqual", + "mathNotEqual", + "cornerTabs", + "squareTabs", + "plaqueTabs", + "chartX", + "chartStar", + "chartPlus", +] class Point2D(Serialisable): tagname: str @@ -12,173 +347,163 @@ class Point2D(Serialisable): class PositiveSize2D(Serialisable): tagname: str namespace: Incomplete - cx: Incomplete - width: Incomplete - cy: Incomplete - height: Incomplete - def __init__(self, cx: Incomplete | None = None, cy: Incomplete | None = None) -> None: ... + cx: Integer[Literal[False]] + width: Alias + cy: Integer[Literal[False]] + height: Alias + def __init__(self, cx: _ConvertibleToInt, cy: _ConvertibleToInt) -> None: ... class Transform2D(Serialisable): tagname: str namespace: Incomplete - rot: Incomplete - flipH: Incomplete - flipV: Incomplete - off: Incomplete - ext: Incomplete - chOff: Incomplete - chExt: Incomplete - __elements__: Incomplete + rot: Integer[Literal[True]] + flipH: Bool[Literal[True]] + flipV: Bool[Literal[True]] + off: Typed[Point2D, Literal[True]] + ext: Typed[PositiveSize2D, Literal[True]] + chOff: Typed[Point2D, Literal[True]] + chExt: Typed[PositiveSize2D, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - rot: Incomplete | None = None, - flipH: Incomplete | None = None, - flipV: Incomplete | None = None, - off: Incomplete | None = None, - ext: Incomplete | None = None, - chOff: Incomplete | None = None, - chExt: Incomplete | None = None, + rot: _ConvertibleToInt | None = None, + flipH: _ConvertibleToBool | None = None, + flipV: _ConvertibleToBool | None = None, + off: Point2D | None = None, + ext: PositiveSize2D | None = None, + chOff: Point2D | None = None, + chExt: PositiveSize2D | None = None, ) -> None: ... class GroupTransform2D(Serialisable): tagname: str namespace: Incomplete - rot: Incomplete - flipH: Incomplete - flipV: Incomplete - off: Incomplete - ext: Incomplete - chOff: Incomplete - chExt: Incomplete - __elements__: Incomplete + rot: Integer[Literal[True]] + flipH: Bool[Literal[True]] + flipV: Bool[Literal[True]] + off = Typed(expected_type=Point2D, allow_none=True) + ext = Typed(expected_type=PositiveSize2D, allow_none=True) + chOff = Typed(expected_type=Point2D, allow_none=True) + chExt = Typed(expected_type=PositiveSize2D, allow_none=True) + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - rot: int = 0, - flipH: Incomplete | None = None, - flipV: Incomplete | None = None, - off: Incomplete | None = None, - ext: Incomplete | None = None, - chOff: Incomplete | None = None, - chExt: Incomplete | None = None, + rot: _ConvertibleToInt | None = 0, + flipH: _ConvertibleToBool | None = None, + flipV: _ConvertibleToBool | None = None, + off: Point2D | None = None, + ext: PositiveSize2D | None = None, + chOff: Point2D | None = None, + chExt: PositiveSize2D | None = None, ) -> None: ... class SphereCoords(Serialisable): tagname: str - lat: Incomplete - lon: Incomplete - rev: Incomplete - def __init__(self, lat: Incomplete | None = None, lon: Incomplete | None = None, rev: Incomplete | None = None) -> None: ... + lat: Integer[Literal[False]] + lon: Integer[Literal[False]] + rev: Integer[Literal[False]] + def __init__(self, lat: _ConvertibleToInt, lon: _ConvertibleToInt, rev: _ConvertibleToInt) -> None: ... class Camera(Serialisable): tagname: str - prst: Incomplete - fov: Incomplete - zoom: Incomplete - rot: Incomplete + prst: Set[_CameraPrst] + fov: Integer[Literal[True]] + zoom: Typed[Percentage, Literal[True]] + rot: Typed[SphereCoords, Literal[True]] def __init__( self, - prst: Incomplete | None = None, - fov: Incomplete | None = None, - zoom: Incomplete | None = None, - rot: Incomplete | None = None, + prst: _CameraPrst, + fov: _ConvertibleToInt | None = None, + zoom: Percentage | None = None, + rot: SphereCoords | None = None, ) -> None: ... class LightRig(Serialisable): tagname: str - rig: Incomplete - dir: Incomplete - rot: Incomplete - def __init__(self, rig: Incomplete | None = None, dir: Incomplete | None = None, rot: Incomplete | None = None) -> None: ... + rig: Set[_LightRigRig] + dir: Set[_LightRigDir] + rot: Typed[SphereCoords, Literal[True]] + def __init__(self, rig: _LightRigRig, dir: _LightRigDir, rot: SphereCoords | None = None) -> None: ... class Vector3D(Serialisable): tagname: str - dx: Incomplete - dy: Incomplete - dz: Incomplete - def __init__(self, dx: Incomplete | None = None, dy: Incomplete | None = None, dz: Incomplete | None = None) -> None: ... + dx: Integer[Literal[False]] + dy: Integer[Literal[False]] + dz: Integer[Literal[False]] + def __init__(self, dx: _ConvertibleToInt, dy: _ConvertibleToInt, dz: _ConvertibleToInt) -> None: ... class Point3D(Serialisable): tagname: str - x: Incomplete - y: Incomplete - z: Incomplete - def __init__(self, x: Incomplete | None = None, y: Incomplete | None = None, z: Incomplete | None = None) -> None: ... + x: Integer[Literal[False]] + y: Integer[Literal[False]] + z: Integer[Literal[False]] + def __init__(self, x: _ConvertibleToInt, y: _ConvertibleToInt, z: _ConvertibleToInt) -> None: ... class Backdrop(Serialisable): - anchor: Incomplete - norm: Incomplete - up: Incomplete - extLst: Incomplete - def __init__( - self, - anchor: Incomplete | None = None, - norm: Incomplete | None = None, - up: Incomplete | None = None, - extLst: Incomplete | None = None, - ) -> None: ... + anchor: Typed[Point3D, Literal[False]] + norm: Typed[Vector3D, Literal[False]] + up: Typed[Vector3D, Literal[False]] + extLst: Typed[ExtensionList, Literal[True]] + def __init__(self, anchor: Point3D, norm: Vector3D, up: Vector3D, extLst: ExtensionList | None = None) -> None: ... class Scene3D(Serialisable): - camera: Incomplete - lightRig: Incomplete - backdrop: Incomplete - extLst: Incomplete + camera: Typed[Camera, Literal[False]] + lightRig: Typed[LightRig, Literal[False]] + backdrop: Typed[Backdrop, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] def __init__( - self, - camera: Incomplete | None = None, - lightRig: Incomplete | None = None, - backdrop: Incomplete | None = None, - extLst: Incomplete | None = None, + self, camera: Camera, lightRig: LightRig, backdrop: Backdrop | None = None, extLst: ExtensionList | None = None ) -> None: ... class Bevel(Serialisable): tagname: str - w: Incomplete - h: Incomplete - prst: Incomplete - def __init__(self, w: Incomplete | None = None, h: Incomplete | None = None, prst: Incomplete | None = None) -> None: ... + w: Integer[Literal[False]] + h: Integer[Literal[False]] + prst: NoneSet[_BevelPrst] + def __init__(self, w: _ConvertibleToInt, h: _ConvertibleToInt, prst: _BevelPrst | Literal["none"] | None = None) -> None: ... class Shape3D(Serialisable): namespace: Incomplete - z: Incomplete - extrusionH: Incomplete - contourW: Incomplete - prstMaterial: Incomplete - bevelT: Incomplete - bevelB: Incomplete - extrusionClr: Incomplete - contourClr: Incomplete - extLst: Incomplete + z: Typed[Coordinate[bool], Literal[True]] + extrusionH: Integer[Literal[True]] + contourW: Integer[Literal[True]] + prstMaterial: NoneSet[_Shape3DPrstMaterial] + bevelT: Typed[Bevel, Literal[True]] + bevelB: Typed[Bevel, Literal[True]] + extrusionClr: Typed[Color, Literal[True]] + contourClr: Typed[Color, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] def __init__( self, - z: Incomplete | None = None, - extrusionH: Incomplete | None = None, - contourW: Incomplete | None = None, - prstMaterial: Incomplete | None = None, - bevelT: Incomplete | None = None, - bevelB: Incomplete | None = None, - extrusionClr: Incomplete | None = None, - contourClr: Incomplete | None = None, - extLst: Incomplete | None = None, + z: Coordinate[bool] | None = None, + extrusionH: _ConvertibleToInt | None = None, + contourW: _ConvertibleToInt | None = None, + prstMaterial: _Shape3DPrstMaterial | Literal["none"] | None = None, + bevelT: Bevel | None = None, + bevelB: Bevel | None = None, + extrusionClr: Color | None = None, + contourClr: Color | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class Path2D(Serialisable): - w: Incomplete - h: Incomplete - fill: Incomplete - stroke: Incomplete - extrusionOk: Incomplete + w: Float[Literal[False]] + h: Float[Literal[False]] + fill: NoneSet[_Path2DFill] + stroke: Bool[Literal[True]] + extrusionOk: Bool[Literal[True]] def __init__( self, - w: Incomplete | None = None, - h: Incomplete | None = None, - fill: Incomplete | None = None, - stroke: Incomplete | None = None, - extrusionOk: Incomplete | None = None, + w: _ConvertibleToFloat, + h: _ConvertibleToFloat, + fill: _Path2DFill | Literal["none"] | None = None, + stroke: _ConvertibleToBool | None = None, + extrusionOk: _ConvertibleToBool | None = None, ) -> None: ... class Path2DList(Serialisable): - path: Incomplete - def __init__(self, path: Incomplete | None = None) -> None: ... + path: Typed[Path2D, Literal[True]] + def __init__(self, path: Path2D | None = None) -> None: ... class GeomRect(Serialisable): l: Incomplete @@ -195,65 +520,73 @@ class AdjPoint2D(Serialisable): def __init__(self, x: Incomplete | None = None, y: Incomplete | None = None) -> None: ... class ConnectionSite(Serialisable): - ang: Incomplete - pos: Incomplete - def __init__(self, ang: Incomplete | None = None, pos: Incomplete | None = None) -> None: ... + ang: MinMax[float, Literal[False]] + pos: Typed[AdjPoint2D, Literal[False]] + def __init__(self, ang: _ConvertibleToFloat, pos: AdjPoint2D) -> None: ... class ConnectionSiteList(Serialisable): - cxn: Incomplete - def __init__(self, cxn: Incomplete | None = None) -> None: ... + cxn: Typed[ConnectionSite, Literal[True]] + def __init__(self, cxn: ConnectionSite | None = None) -> None: ... class AdjustHandleList(Serialisable): ... class GeomGuide(Serialisable): - name: Incomplete - fmla: Incomplete - def __init__(self, name: Incomplete | None = None, fmla: Incomplete | None = None) -> None: ... + name: String[Literal[False]] + fmla: String[Literal[False]] + def __init__(self, name: str, fmla: str) -> None: ... class GeomGuideList(Serialisable): - gd: Incomplete - def __init__(self, gd: Incomplete | None = None) -> None: ... + gd: Typed[GeomGuide, Literal[True]] + def __init__(self, gd: GeomGuide | None = None) -> None: ... class CustomGeometry2D(Serialisable): - avLst: Incomplete - gdLst: Incomplete - ahLst: Incomplete - cxnLst: Incomplete - pathLst: Incomplete - rect: Incomplete + avLst: Typed[GeomGuideList, Literal[True]] + gdLst: Typed[GeomGuideList, Literal[True]] + ahLst: Typed[AdjustHandleList, Literal[True]] + cxnLst: Typed[ConnectionSiteList, Literal[True]] + pathLst: Typed[Path2DList, Literal[False]] + rect: GeomRect | None + @overload def __init__( self, - avLst: Incomplete | None = None, - gdLst: Incomplete | None = None, - ahLst: Incomplete | None = None, - cxnLst: Incomplete | None = None, - rect: Incomplete | None = None, - pathLst: Incomplete | None = None, + avLst: GeomGuideList | None = None, + gdLst: GeomGuideList | None = None, + ahLst: AdjustHandleList | None = None, + cxnLst: ConnectionSiteList | None = None, + rect: Unused = None, + *, + pathLst: Path2DList, + ) -> None: ... + @overload + def __init__( + self, + avLst: GeomGuideList | None, + gdLst: GeomGuideList | None, + ahLst: AdjustHandleList | None, + cxnLst: ConnectionSiteList | None, + rect: Unused, + pathLst: Path2DList, ) -> None: ... class PresetGeometry2D(Serialisable): namespace: Incomplete - prst: Incomplete - avLst: Incomplete - def __init__(self, prst: Incomplete | None = None, avLst: Incomplete | None = None) -> None: ... + prst: Set[_PresetGeometry2DPrst] + avLst: Typed[GeomGuideList, Literal[True]] + def __init__(self, prst: _PresetGeometry2DPrst, avLst: GeomGuideList | None = None) -> None: ... class FontReference(Serialisable): - idx: Incomplete - def __init__(self, idx: Incomplete | None = None) -> None: ... + idx: NoneSet[_FontReferenceIdx] + def __init__(self, idx: _FontReferenceIdx | Literal["none"] | None = None) -> None: ... class StyleMatrixReference(Serialisable): - idx: Incomplete - def __init__(self, idx: Incomplete | None = None) -> None: ... + idx: Integer[Literal[False]] + def __init__(self, idx: _ConvertibleToInt) -> None: ... class ShapeStyle(Serialisable): - lnRef: Incomplete - fillRef: Incomplete - effectRef: Incomplete - fontRef: Incomplete + lnRef: Typed[StyleMatrixReference, Literal[False]] + fillRef: Typed[StyleMatrixReference, Literal[False]] + effectRef: Typed[StyleMatrixReference, Literal[False]] + fontRef: Typed[FontReference, Literal[False]] def __init__( - self, - lnRef: Incomplete | None = None, - fillRef: Incomplete | None = None, - effectRef: Incomplete | None = None, - fontRef: Incomplete | None = None, + self, lnRef: StyleMatrixReference, fillRef: StyleMatrixReference, effectRef: StyleMatrixReference, fontRef: FontReference ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi index d3ab2089b..4e5e5b209 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi @@ -1,76 +1,85 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Alias, Bool, String, Typed, _ConvertibleToBool +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.picture import PictureFrame +from openpyxl.drawing.properties import GroupShapeProperties, NonVisualGroupShape +from openpyxl.drawing.relation import ChartRelation +from openpyxl.drawing.xdr import XDRTransform2D class GraphicFrameLocking(Serialisable): - noGrp: Incomplete - noDrilldown: Incomplete - noSelect: Incomplete - noChangeAspect: Incomplete - noMove: Incomplete - noResize: Incomplete - extLst: Incomplete + noGrp: Bool[Literal[True]] + noDrilldown: Bool[Literal[True]] + noSelect: Bool[Literal[True]] + noChangeAspect: Bool[Literal[True]] + noMove: Bool[Literal[True]] + noResize: Bool[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] def __init__( self, - noGrp: Incomplete | None = None, - noDrilldown: Incomplete | None = None, - noSelect: Incomplete | None = None, - noChangeAspect: Incomplete | None = None, - noMove: Incomplete | None = None, - noResize: Incomplete | None = None, - extLst: Incomplete | None = None, + noGrp: _ConvertibleToBool | None = None, + noDrilldown: _ConvertibleToBool | None = None, + noSelect: _ConvertibleToBool | None = None, + noChangeAspect: _ConvertibleToBool | None = None, + noMove: _ConvertibleToBool | None = None, + noResize: _ConvertibleToBool | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class NonVisualGraphicFrameProperties(Serialisable): tagname: str - graphicFrameLocks: Incomplete - extLst: Incomplete - def __init__(self, graphicFrameLocks: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... + graphicFrameLocks: Typed[GraphicFrameLocking, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + def __init__(self, graphicFrameLocks: GraphicFrameLocking | None = None, extLst: ExtensionList | None = None) -> None: ... class NonVisualGraphicFrame(Serialisable): tagname: str - cNvPr: Incomplete - cNvGraphicFramePr: Incomplete - __elements__: Incomplete + cNvPr: Typed[ExtensionList, Literal[False]] + cNvGraphicFramePr: Typed[ExtensionList, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__(self, cNvPr: Incomplete | None = None, cNvGraphicFramePr: Incomplete | None = None) -> None: ... class GraphicData(Serialisable): tagname: str namespace: Incomplete - uri: Incomplete - chart: Incomplete - def __init__(self, uri: str = ..., chart: Incomplete | None = None) -> None: ... + uri: String[Literal[False]] + chart: Typed[ChartRelation, Literal[True]] + def __init__(self, uri: str = ..., chart: ChartRelation | None = None) -> None: ... class GraphicObject(Serialisable): tagname: str namespace: Incomplete - graphicData: Incomplete - def __init__(self, graphicData: Incomplete | None = None) -> None: ... + graphicData: Typed[GraphicData, Literal[False]] + def __init__(self, graphicData: GraphicData | None = None) -> None: ... class GraphicFrame(Serialisable): tagname: str - nvGraphicFramePr: Incomplete - xfrm: Incomplete - graphic: Incomplete - macro: Incomplete - fPublished: Incomplete - __elements__: Incomplete + nvGraphicFramePr: Typed[NonVisualGraphicFrame, Literal[False]] + xfrm: Typed[XDRTransform2D, Literal[False]] + graphic: Typed[GraphicObject, Literal[False]] + macro: String[Literal[True]] + fPublished: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - nvGraphicFramePr: Incomplete | None = None, - xfrm: Incomplete | None = None, - graphic: Incomplete | None = None, - macro: Incomplete | None = None, - fPublished: Incomplete | None = None, + nvGraphicFramePr: NonVisualGraphicFrame | None = None, + xfrm: XDRTransform2D | None = None, + graphic: GraphicObject | None = None, + macro: str | None = None, + fPublished: _ConvertibleToBool | None = None, ) -> None: ... class GroupShape(Serialisable): - nvGrpSpPr: Incomplete - nonVisualProperties: Incomplete - grpSpPr: Incomplete - visualProperties: Incomplete - pic: Incomplete - __elements__: Incomplete + nvGrpSpPr: Typed[NonVisualGroupShape, Literal[False]] + nonVisualProperties: Alias + grpSpPr: Typed[GroupShapeProperties, Literal[False]] + visualProperties: Alias + pic: Typed[PictureFrame, Literal[True]] + # Source incorrectly uses a list here instead of a tuple + __elements__: ClassVar[list[str]] # type: ignore[assignment] def __init__( - self, nvGrpSpPr: Incomplete | None = None, grpSpPr: Incomplete | None = None, pic: Incomplete | None = None + self, nvGrpSpPr: NonVisualGroupShape, grpSpPr: GroupShapeProperties, pic: PictureFrame | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi index 27e57cb24..af2e168af 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi @@ -1,23 +1,39 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Alias, Integer, MinMax, NoneSet, Typed, _ConvertibleToFloat, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.fill import GradientFillProperties, PatternFillProperties + +_LineEndPropertiesType: TypeAlias = Literal["none", "triangle", "stealth", "diamond", "oval", "arrow"] +_LineEndPropertiesWLen: TypeAlias = Literal["sm", "med", "lg"] +_LinePropertiesCap: TypeAlias = Literal["rnd", "sq", "flat"] +_LinePropertiesCmpd: TypeAlias = Literal["sng", "dbl", "thickThin", "thinThick", "tri"] +_LinePropertiesAlgn: TypeAlias = Literal["ctr", "in"] class LineEndProperties(Serialisable): tagname: str namespace: Incomplete - type: Incomplete - w: Incomplete - len: Incomplete - def __init__(self, type: Incomplete | None = None, w: Incomplete | None = None, len: Incomplete | None = None) -> None: ... + type: NoneSet[_LineEndPropertiesType] + w: NoneSet[_LineEndPropertiesWLen] + len: NoneSet[_LineEndPropertiesWLen] + def __init__( + self, + type: _LineEndPropertiesType | Literal["none"] | None = None, + w: _LineEndPropertiesWLen | Literal["none"] | None = None, + len: _LineEndPropertiesWLen | Literal["none"] | None = None, + ) -> None: ... class DashStop(Serialisable): tagname: str namespace: Incomplete - d: Incomplete - length: Incomplete - sp: Incomplete - space: Incomplete - def __init__(self, d: int = 0, sp: int = 0) -> None: ... + d: Integer[Literal[False]] + length: Alias + sp: Integer[Literal[False]] + space: Alias + def __init__(self, d: _ConvertibleToInt = 0, sp: _ConvertibleToInt = 0) -> None: ... class DashStopList(Serialisable): ds: Incomplete @@ -26,41 +42,41 @@ class DashStopList(Serialisable): class LineProperties(Serialisable): tagname: str namespace: Incomplete - w: Incomplete - width: Incomplete - cap: Incomplete - cmpd: Incomplete - algn: Incomplete + w: MinMax[float, Literal[True]] + width: Alias + cap: NoneSet[_LinePropertiesCap] + cmpd: NoneSet[_LinePropertiesCmpd] + algn: NoneSet[_LinePropertiesAlgn] noFill: Incomplete solidFill: Incomplete - gradFill: Incomplete - pattFill: Incomplete + gradFill: Typed[GradientFillProperties, Literal[True]] + pattFill: Typed[PatternFillProperties, Literal[True]] prstDash: Incomplete - dashStyle: Incomplete - custDash: Incomplete + dashStyle: Alias + custDash: Typed[DashStop, Literal[True]] round: Incomplete bevel: Incomplete miter: Incomplete - headEnd: Incomplete - tailEnd: Incomplete - extLst: Incomplete - __elements__: Incomplete + headEnd: Typed[LineEndProperties, Literal[True]] + tailEnd: Typed[LineEndProperties, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - w: Incomplete | None = None, - cap: Incomplete | None = None, - cmpd: Incomplete | None = None, - algn: Incomplete | None = None, + w: _ConvertibleToFloat | None = None, + cap: _LinePropertiesCap | Literal["none"] | None = None, + cmpd: _LinePropertiesCmpd | Literal["none"] | None = None, + algn: _LinePropertiesAlgn | Literal["none"] | None = None, noFill: Incomplete | None = None, solidFill: Incomplete | None = None, - gradFill: Incomplete | None = None, - pattFill: Incomplete | None = None, + gradFill: GradientFillProperties | None = None, + pattFill: PatternFillProperties | None = None, prstDash: Incomplete | None = None, - custDash: Incomplete | None = None, + custDash: DashStop | None = None, round: Incomplete | None = None, bevel: Incomplete | None = None, miter: Incomplete | None = None, - headEnd: Incomplete | None = None, - tailEnd: Incomplete | None = None, - extLst: Incomplete | None = None, + headEnd: LineEndProperties | None = None, + tailEnd: LineEndProperties | None = None, + extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi index d69cab296..27a0ceccf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi @@ -1,72 +1,82 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.chart.shapes import GraphicalProperties +from openpyxl.descriptors.base import Alias, Bool, String, Typed, _ConvertibleToBool +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.fill import BlipFillProperties +from openpyxl.drawing.geometry import ShapeStyle +from openpyxl.drawing.properties import NonVisualDrawingProps class PictureLocking(Serialisable): tagname: str namespace: Incomplete - noCrop: Incomplete - noGrp: Incomplete - noSelect: Incomplete - noRot: Incomplete - noChangeAspect: Incomplete - noMove: Incomplete - noResize: Incomplete - noEditPoints: Incomplete - noAdjustHandles: Incomplete - noChangeArrowheads: Incomplete - noChangeShapeType: Incomplete - extLst: Incomplete - __elements__: Incomplete + noCrop: Bool[Literal[True]] + noGrp: Bool[Literal[True]] + noSelect: Bool[Literal[True]] + noRot: Bool[Literal[True]] + noChangeAspect: Bool[Literal[True]] + noMove: Bool[Literal[True]] + noResize: Bool[Literal[True]] + noEditPoints: Bool[Literal[True]] + noAdjustHandles: Bool[Literal[True]] + noChangeArrowheads: Bool[Literal[True]] + noChangeShapeType: Bool[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - noCrop: Incomplete | None = None, - noGrp: Incomplete | None = None, - noSelect: Incomplete | None = None, - noRot: Incomplete | None = None, - noChangeAspect: Incomplete | None = None, - noMove: Incomplete | None = None, - noResize: Incomplete | None = None, - noEditPoints: Incomplete | None = None, - noAdjustHandles: Incomplete | None = None, - noChangeArrowheads: Incomplete | None = None, - noChangeShapeType: Incomplete | None = None, - extLst: Incomplete | None = None, + noCrop: _ConvertibleToBool | None = None, + noGrp: _ConvertibleToBool | None = None, + noSelect: _ConvertibleToBool | None = None, + noRot: _ConvertibleToBool | None = None, + noChangeAspect: _ConvertibleToBool | None = None, + noMove: _ConvertibleToBool | None = None, + noResize: _ConvertibleToBool | None = None, + noEditPoints: _ConvertibleToBool | None = None, + noAdjustHandles: _ConvertibleToBool | None = None, + noChangeArrowheads: _ConvertibleToBool | None = None, + noChangeShapeType: _ConvertibleToBool | None = None, + extLst: Unused = None, ) -> None: ... class NonVisualPictureProperties(Serialisable): tagname: str - preferRelativeResize: Incomplete - picLocks: Incomplete - extLst: Incomplete - __elements__: Incomplete + preferRelativeResize: Bool[Literal[True]] + picLocks: Typed[PictureLocking, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, preferRelativeResize: Incomplete | None = None, picLocks: Incomplete | None = None, extLst: Incomplete | None = None + self, preferRelativeResize: _ConvertibleToBool | None = None, picLocks: Incomplete | None = None, extLst: Unused = None ) -> None: ... class PictureNonVisual(Serialisable): tagname: str - cNvPr: Incomplete - cNvPicPr: Incomplete - __elements__: Incomplete - def __init__(self, cNvPr: Incomplete | None = None, cNvPicPr: Incomplete | None = None) -> None: ... + cNvPr: Typed[NonVisualDrawingProps, Literal[False]] + cNvPicPr: Typed[NonVisualPictureProperties, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__( + self, cNvPr: NonVisualDrawingProps | None = None, cNvPicPr: NonVisualPictureProperties | None = None + ) -> None: ... class PictureFrame(Serialisable): tagname: str - macro: Incomplete - fPublished: Incomplete - nvPicPr: Incomplete - blipFill: Incomplete - spPr: Incomplete - graphicalProperties: Incomplete - style: Incomplete - __elements__: Incomplete + macro: String[Literal[True]] + fPublished: Bool[Literal[True]] + nvPicPr: Typed[PictureNonVisual, Literal[False]] + blipFill: Typed[BlipFillProperties, Literal[False]] + spPr: Typed[GraphicalProperties, Literal[False]] + graphicalProperties: Alias + style: Typed[ShapeStyle, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - macro: Incomplete | None = None, - fPublished: Incomplete | None = None, - nvPicPr: Incomplete | None = None, - blipFill: Incomplete | None = None, - spPr: Incomplete | None = None, - style: Incomplete | None = None, + macro: str | None = None, + fPublished: _ConvertibleToBool | None = None, + nvPicPr: PictureNonVisual | None = None, + blipFill: BlipFillProperties | None = None, + spPr: GraphicalProperties | None = None, + style: ShapeStyle | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi index 56adb9e44..6addd6f8c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi @@ -1,97 +1,122 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, NoneSet, String, Typed, _ConvertibleToBool +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.geometry import GroupTransform2D, Scene3D +from openpyxl.drawing.text import Hyperlink + +_GroupShapePropertiesBwMode: TypeAlias = Literal[ + "clr", "auto", "gray", "ltGray", "invGray", "grayWhite", "blackGray", "blackWhite", "black", "white", "hidden" +] class GroupShapeProperties(Serialisable): tagname: str - bwMode: Incomplete - xfrm: Incomplete - scene3d: Incomplete - extLst: Incomplete + bwMode: NoneSet[_GroupShapePropertiesBwMode] + xfrm: Typed[GroupTransform2D, Literal[True]] + scene3d: Typed[Scene3D, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] def __init__( self, - bwMode: Incomplete | None = None, - xfrm: Incomplete | None = None, - scene3d: Incomplete | None = None, - extLst: Incomplete | None = None, + bwMode: _GroupShapePropertiesBwMode | Literal["none"] | None = None, + xfrm: GroupTransform2D | None = None, + scene3d: Scene3D | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class GroupLocking(Serialisable): tagname: str namespace: Incomplete - noGrp: Incomplete - noUngrp: Incomplete - noSelect: Incomplete - noRot: Incomplete - noChangeAspect: Incomplete - noMove: Incomplete - noResize: Incomplete - noChangeArrowheads: Incomplete - noEditPoints: Incomplete - noAdjustHandles: Incomplete - noChangeShapeType: Incomplete - extLst: Incomplete - __elements__: Incomplete + noGrp: Bool[Literal[True]] + noUngrp: Bool[Literal[True]] + noSelect: Bool[Literal[True]] + noRot: Bool[Literal[True]] + noChangeAspect: Bool[Literal[True]] + noMove: Bool[Literal[True]] + noResize: Bool[Literal[True]] + noChangeArrowheads: Bool[Literal[True]] + noEditPoints: Bool[Literal[True]] + noAdjustHandles: Bool[Literal[True]] + noChangeShapeType: Bool[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - noGrp: Incomplete | None = None, - noUngrp: Incomplete | None = None, - noSelect: Incomplete | None = None, - noRot: Incomplete | None = None, - noChangeAspect: Incomplete | None = None, - noChangeArrowheads: Incomplete | None = None, - noMove: Incomplete | None = None, - noResize: Incomplete | None = None, - noEditPoints: Incomplete | None = None, - noAdjustHandles: Incomplete | None = None, - noChangeShapeType: Incomplete | None = None, - extLst: Incomplete | None = None, + noGrp: _ConvertibleToBool | None = None, + noUngrp: _ConvertibleToBool | None = None, + noSelect: _ConvertibleToBool | None = None, + noRot: _ConvertibleToBool | None = None, + noChangeAspect: _ConvertibleToBool | None = None, + noChangeArrowheads: _ConvertibleToBool | None = None, + noMove: _ConvertibleToBool | None = None, + noResize: _ConvertibleToBool | None = None, + noEditPoints: _ConvertibleToBool | None = None, + noAdjustHandles: _ConvertibleToBool | None = None, + noChangeShapeType: _ConvertibleToBool | None = None, + extLst: Unused = None, ) -> None: ... class NonVisualGroupDrawingShapeProps(Serialisable): tagname: str - grpSpLocks: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, grpSpLocks: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... + grpSpLocks: Typed[GroupLocking, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, grpSpLocks: Incomplete | None = None, extLst: Unused = None) -> None: ... class NonVisualDrawingShapeProps(Serialisable): tagname: str - spLocks: Incomplete - txBax: Incomplete - extLst: Incomplete - __elements__: Incomplete + spLocks: Typed[GroupLocking, Literal[True]] + txBax: Bool[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] txBox: Incomplete def __init__( - self, spLocks: Incomplete | None = None, txBox: Incomplete | None = None, extLst: Incomplete | None = None + self, spLocks: Incomplete | None = None, txBox: _ConvertibleToBool | None = None, extLst: Unused = None ) -> None: ... class NonVisualDrawingProps(Serialisable): tagname: str id: Incomplete - name: Incomplete - descr: Incomplete - hidden: Incomplete - title: Incomplete - hlinkClick: Incomplete - hlinkHover: Incomplete - extLst: Incomplete - __elements__: Incomplete + name: String[Literal[False]] + descr: String[Literal[True]] + hidden: Bool[Literal[True]] + title: String[Literal[True]] + hlinkClick: Typed[Hyperlink, Literal[True]] + hlinkHover: Typed[Hyperlink, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + # Source incorrectly uses a list here instead of a tuple + __elements__: ClassVar[list[str]] # type: ignore[assignment] + @overload def __init__( self, id: Incomplete | None = None, - name: Incomplete | None = None, - descr: Incomplete | None = None, - hidden: Incomplete | None = None, - title: Incomplete | None = None, - hlinkClick: Incomplete | None = None, - hlinkHover: Incomplete | None = None, - extLst: Incomplete | None = None, + *, + name: str, + descr: str | None = None, + hidden: _ConvertibleToBool | None = None, + title: str | None = None, + hlinkClick: Hyperlink | None = None, + hlinkHover: Hyperlink | None = None, + extLst: ExtensionList | None = None, + ) -> None: ... + @overload + def __init__( + self, + id: Incomplete | None, + name: str, + descr: str | None = None, + hidden: _ConvertibleToBool | None = None, + title: str | None = None, + hlinkClick: Hyperlink | None = None, + hlinkHover: Hyperlink | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class NonVisualGroupShape(Serialisable): tagname: str - cNvPr: Incomplete - cNvGrpSpPr: Incomplete - __elements__: Incomplete - def __init__(self, cNvPr: Incomplete | None = None, cNvGrpSpPr: Incomplete | None = None) -> None: ... + cNvPr: Typed[NonVisualDrawingProps, Literal[False]] + cNvGrpSpPr: Typed[NonVisualGroupDrawingShapeProps, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, cNvPr: NonVisualDrawingProps, cNvGrpSpPr: NonVisualGroupDrawingShapeProps) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi index c413406d9..13b70b287 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi @@ -1,11 +1,22 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Alias, Bool, NoneSet, Typed, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.connector import Shape +from openpyxl.drawing.graphic import GraphicFrame, GroupShape +from openpyxl.drawing.picture import PictureFrame +from openpyxl.drawing.xdr import XDRPoint2D, XDRPositiveSize2D + +_TwoCellAnchorEditAs: TypeAlias = Literal["twoCell", "oneCell", "absolute"] class AnchorClientData(Serialisable): - fLocksWithSheet: Incomplete - fPrintsWithSheet: Incomplete - def __init__(self, fLocksWithSheet: Incomplete | None = None, fPrintsWithSheet: Incomplete | None = None) -> None: ... + fLocksWithSheet: Bool[Literal[True]] + fPrintsWithSheet: Bool[Literal[True]] + def __init__( + self, fLocksWithSheet: _ConvertibleToBool | None = None, fPrintsWithSheet: _ConvertibleToBool | None = None + ) -> None: ... class AnchorMarker(Serialisable): tagname: str @@ -16,32 +27,32 @@ class AnchorMarker(Serialisable): def __init__(self, col: int = 0, colOff: int = 0, row: int = 0, rowOff: int = 0) -> None: ... class _AnchorBase(Serialisable): - sp: Incomplete - shape: Incomplete - grpSp: Incomplete - groupShape: Incomplete - graphicFrame: Incomplete - cxnSp: Incomplete - connectionShape: Incomplete - pic: Incomplete + sp: Typed[Shape, Literal[True]] + shape: Alias + grpSp: Typed[GroupShape, Literal[True]] + groupShape: Alias + graphicFrame: Typed[GraphicFrame, Literal[True]] + cxnSp: Typed[Shape, Literal[True]] + connectionShape: Alias + pic: Typed[PictureFrame, Literal[True]] contentPart: Incomplete - clientData: Incomplete - __elements__: Incomplete + clientData: Typed[AnchorClientData, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - clientData: Incomplete | None = None, - sp: Incomplete | None = None, - grpSp: Incomplete | None = None, - graphicFrame: Incomplete | None = None, - cxnSp: Incomplete | None = None, - pic: Incomplete | None = None, + clientData: AnchorClientData | None = None, + sp: Shape | None = None, + grpSp: GroupShape | None = None, + graphicFrame: GraphicFrame | None = None, + cxnSp: Shape | None = None, + pic: PictureFrame | None = None, contentPart: Incomplete | None = None, ) -> None: ... class AbsoluteAnchor(_AnchorBase): tagname: str - pos: Incomplete - ext: Incomplete + pos: Typed[XDRPoint2D, Literal[False]] + ext: Typed[XDRPositiveSize2D, Literal[False]] sp: Incomplete grpSp: Incomplete graphicFrame: Incomplete @@ -49,12 +60,13 @@ class AbsoluteAnchor(_AnchorBase): pic: Incomplete contentPart: Incomplete clientData: Incomplete - __elements__: Incomplete - def __init__(self, pos: Incomplete | None = None, ext: Incomplete | None = None, **kw) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, pos: XDRPoint2D | None = None, ext: XDRPositiveSize2D | None = None, **kw) -> None: ... class OneCellAnchor(_AnchorBase): tagname: str - ext: Incomplete + _from: Typed[AnchorMarker, Literal[False]] # Not private. Avoids name clash + ext: Typed[XDRPositiveSize2D, Literal[False]] sp: Incomplete grpSp: Incomplete graphicFrame: Incomplete @@ -62,13 +74,14 @@ class OneCellAnchor(_AnchorBase): pic: Incomplete contentPart: Incomplete clientData: Incomplete - __elements__: Incomplete - def __init__(self, _from: Incomplete | None = None, ext: Incomplete | None = None, **kw) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, _from: AnchorMarker | None = None, ext: XDRPositiveSize2D | None = None, **kw) -> None: ... class TwoCellAnchor(_AnchorBase): tagname: str - editAs: Incomplete - to: Incomplete + editAs: NoneSet[_TwoCellAnchorEditAs] + _from: Typed[AnchorMarker, Literal[False]] # Not private. Avoids name clash + to: Typed[AnchorMarker, Literal[False]] sp: Incomplete grpSp: Incomplete graphicFrame: Incomplete @@ -76,9 +89,13 @@ class TwoCellAnchor(_AnchorBase): pic: Incomplete contentPart: Incomplete clientData: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, editAs: Incomplete | None = None, _from: Incomplete | None = None, to: Incomplete | None = None, **kw + self, + editAs: _TwoCellAnchorEditAs | Literal["none"] | None = None, + _from: AnchorMarker | None = None, + to: AnchorMarker | None = None, + **kw, ) -> None: ... class SpreadsheetDrawing(Serialisable): @@ -88,7 +105,7 @@ class SpreadsheetDrawing(Serialisable): twoCellAnchor: Incomplete oneCellAnchor: Incomplete absoluteAnchor: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] charts: Incomplete images: Incomplete def __init__(self, twoCellAnchor=(), oneCellAnchor=(), absoluteAnchor=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi index d7115ebab..57eebdc0b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi @@ -1,222 +1,360 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import ( + Alias, + Bool, + Integer, + MinMax, + NoneSet, + Set, + String, + Typed, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) +from openpyxl.descriptors.excel import Coordinate, ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.effect import Color, EffectContainer, EffectList +from openpyxl.drawing.fill import BlipFillProperties, GradientFillProperties, PatternFillProperties +from openpyxl.drawing.geometry import Scene3D +from openpyxl.drawing.line import LineProperties -class EmbeddedWAVAudioFile(Serialisable): # type: ignore[misc] - name: Incomplete - def __init__(self, name: Incomplete | None = None) -> None: ... +_CharacterPropertiesU: TypeAlias = Literal[ + "words", + "sng", + "dbl", + "heavy", + "dotted", + "dottedHeavy", + "dash", + "dashHeavy", + "dashLong", + "dashLongHeavy", + "dotDash", + "dotDashHeavy", + "dotDotDash", + "dotDotDashHeavy", + "wavy", + "wavyHeavy", + "wavyDbl", +] +_CharacterPropertiesStrike: TypeAlias = Literal["noStrike", "sngStrike", "dblStrike"] +_CharacterPropertiesCap: TypeAlias = Literal["small", "all"] +_ParagraphPropertiesAlgn: TypeAlias = Literal["l", "ctr", "r", "just", "justLow", "dist", "thaiDist"] +_ParagraphPropertiesFontAlgn: TypeAlias = Literal["auto", "t", "ctr", "base", "b"] +_RichTextPropertiesVertOverflow: TypeAlias = Literal["overflow", "ellipsis", "clip"] +_RichTextPropertiesHorzOverflow: TypeAlias = Literal["overflow", "clip"] +_RichTextPropertiesVert: TypeAlias = Literal[ + "horz", "vert", "vert270", "wordArtVert", "eaVert", "mongolianVert", "wordArtVertRtl" +] +_RichTextPropertiesWrap: TypeAlias = Literal["none", "square"] +_RichTextPropertiesAnchor: TypeAlias = Literal["t", "ctr", "b", "just", "dist"] +_AutonumberBulletType: TypeAlias = Literal[ + "alphaLcParenBoth", + "alphaUcParenBoth", + "alphaLcParenR", + "alphaUcParenR", + "alphaLcPeriod", + "alphaUcPeriod", + "arabicParenBoth", + "arabicParenR", + "arabicPeriod", + "arabicPlain", + "romanLcParenBoth", + "romanUcParenBoth", + "romanLcParenR", + "romanUcParenR", + "romanLcPeriod", + "romanUcPeriod", + "circleNumDbPlain", + "circleNumWdBlackPlain", + "circleNumWdWhitePlain", + "arabicDbPeriod", + "arabicDbPlain", + "ea1ChsPeriod", + "ea1ChsPlain", + "ea1ChtPeriod", + "ea1ChtPlain", + "ea1JpnChsDbPeriod", + "ea1JpnKorPlain", + "ea1JpnKorPeriod", + "arabic1Minus", + "arabic2Minus", + "hebrew2Minus", + "thaiAlphaPeriod", + "thaiAlphaParenR", + "thaiAlphaParenBoth", + "thaiNumPeriod", + "thaiNumParenR", + "thaiNumParenBoth", + "hindiAlphaPeriod", + "hindiNumPeriod", + "hindiNumParenR", + "hindiAlpha1Period", +] +_TabStopAlgn: TypeAlias = Literal["l", "ctr", "r", "dec"] +_PresetTextShapePrst: TypeAlias = Literal[ + "textNoShape", + "textPlain", + "textStop", + "textTriangle", + "textTriangleInverted", + "textChevron", + "textChevronInverted", + "textRingInside", + "textRingOutside", + "textArchUp", + "textArchDown", + "textCircle", + "textButton", + "textArchUpPour", + "textArchDownPour", + "textCirclePour", + "textButtonPour", + "textCurveUp", + "textCurveDown", + "textCanUp", + "textCanDown", + "textWave1", + "textWave2", + "textDoubleWave1", + "textWave4", + "textInflate", + "textDeflate", + "textInflateBottom", + "textDeflateBottom", + "textInflateTop", + "textDeflateTop", + "textDeflateInflate", + "textDeflateInflateDeflate", + "textFadeRight", + "textFadeLeft", + "textFadeUp", + "textFadeDown", + "textSlantUp", + "textSlantDown", + "textCascadeUp", + "textCascadeDown", +] + +class EmbeddedWAVAudioFile(Serialisable): + name: String[Literal[True]] + def __init__(self, name: str | None = None) -> None: ... class Hyperlink(Serialisable): tagname: str namespace: Incomplete - invalidUrl: Incomplete - action: Incomplete - tgtFrame: Incomplete - tooltip: Incomplete - history: Incomplete - highlightClick: Incomplete - endSnd: Incomplete - snd: Incomplete - extLst: Incomplete + invalidUrl: String[Literal[True]] + action: String[Literal[True]] + tgtFrame: String[Literal[True]] + tooltip: String[Literal[True]] + history: Bool[Literal[True]] + highlightClick: Bool[Literal[True]] + endSnd: Bool[Literal[True]] + snd: Typed[EmbeddedWAVAudioFile, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] id: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - invalidUrl: Incomplete | None = None, - action: Incomplete | None = None, - tgtFrame: Incomplete | None = None, - tooltip: Incomplete | None = None, - history: Incomplete | None = None, - highlightClick: Incomplete | None = None, - endSnd: Incomplete | None = None, - snd: Incomplete | None = None, - extLst: Incomplete | None = None, + invalidUrl: str | None = None, + action: str | None = None, + tgtFrame: str | None = None, + tooltip: str | None = None, + history: _ConvertibleToBool | None = None, + highlightClick: _ConvertibleToBool | None = None, + endSnd: _ConvertibleToBool | None = None, + snd: EmbeddedWAVAudioFile | None = None, + extLst: ExtensionList | None = None, id: Incomplete | None = None, ) -> None: ... class Font(Serialisable): tagname: str namespace: Incomplete - typeface: Incomplete + typeface: String[Literal[False]] panose: Incomplete - pitchFamily: Incomplete - charset: Incomplete + pitchFamily: MinMax[float, Literal[True]] + charset: Integer[Literal[True]] def __init__( self, - typeface: Incomplete | None = None, + typeface: str, panose: Incomplete | None = None, - pitchFamily: Incomplete | None = None, - charset: Incomplete | None = None, + pitchFamily: _ConvertibleToFloat | None = None, + charset: _ConvertibleToInt | None = None, ) -> None: ... class CharacterProperties(Serialisable): tagname: str namespace: Incomplete - kumimoji: Incomplete - lang: Incomplete - altLang: Incomplete - sz: Incomplete - b: Incomplete - i: Incomplete - u: Incomplete - strike: Incomplete - kern: Incomplete - cap: Incomplete - spc: Incomplete - normalizeH: Incomplete - baseline: Incomplete - noProof: Incomplete - dirty: Incomplete - err: Incomplete - smtClean: Incomplete - smtId: Incomplete - bmk: Incomplete - ln: Incomplete - highlight: Incomplete - latin: Incomplete - ea: Incomplete - cs: Incomplete - sym: Incomplete - hlinkClick: Incomplete - hlinkMouseOver: Incomplete + kumimoji: Bool[Literal[True]] + lang: String[Literal[True]] + altLang: String[Literal[True]] + sz: MinMax[float, Literal[True]] + b: Bool[Literal[True]] + i: Bool[Literal[True]] + u: NoneSet[_CharacterPropertiesU] + strike: NoneSet[_CharacterPropertiesStrike] + kern: Integer[Literal[True]] + cap: NoneSet[_CharacterPropertiesCap] + spc: Integer[Literal[True]] + normalizeH: Bool[Literal[True]] + baseline: Integer[Literal[True]] + noProof: Bool[Literal[True]] + dirty: Bool[Literal[True]] + err: Bool[Literal[True]] + smtClean: Bool[Literal[True]] + smtId: Integer[Literal[True]] + bmk: String[Literal[True]] + ln: Typed[LineProperties, Literal[True]] + highlight: Typed[Color, Literal[True]] + latin: Typed[Font, Literal[True]] + ea: Typed[Font, Literal[True]] + cs: Typed[Font, Literal[True]] + sym: Typed[Font, Literal[True]] + hlinkClick: Typed[Hyperlink, Literal[True]] + hlinkMouseOver: Typed[Hyperlink, Literal[True]] rtl: Incomplete - extLst: Incomplete + extLst: Typed[ExtensionList, Literal[True]] noFill: Incomplete solidFill: Incomplete - gradFill: Incomplete - blipFill: Incomplete - pattFill: Incomplete + gradFill: Typed[GradientFillProperties, Literal[True]] + blipFill: Typed[BlipFillProperties, Literal[True]] + pattFill: Typed[PatternFillProperties, Literal[True]] grpFill: Incomplete - effectLst: Incomplete - effectDag: Incomplete + effectLst: Typed[EffectList, Literal[True]] + effectDag: Typed[EffectContainer, Literal[True]] uLnTx: Incomplete - uLn: Incomplete + uLn: Typed[LineProperties, Literal[True]] uFillTx: Incomplete uFill: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - kumimoji: Incomplete | None = None, - lang: Incomplete | None = None, - altLang: Incomplete | None = None, - sz: Incomplete | None = None, - b: Incomplete | None = None, - i: Incomplete | None = None, - u: Incomplete | None = None, - strike: Incomplete | None = None, - kern: Incomplete | None = None, - cap: Incomplete | None = None, - spc: Incomplete | None = None, - normalizeH: Incomplete | None = None, - baseline: Incomplete | None = None, - noProof: Incomplete | None = None, - dirty: Incomplete | None = None, - err: Incomplete | None = None, - smtClean: Incomplete | None = None, - smtId: Incomplete | None = None, - bmk: Incomplete | None = None, - ln: Incomplete | None = None, - highlight: Incomplete | None = None, - latin: Incomplete | None = None, - ea: Incomplete | None = None, - cs: Incomplete | None = None, - sym: Incomplete | None = None, - hlinkClick: Incomplete | None = None, - hlinkMouseOver: Incomplete | None = None, + kumimoji: _ConvertibleToBool | None = None, + lang: str | None = None, + altLang: str | None = None, + sz: _ConvertibleToFloat | None = None, + b: _ConvertibleToBool | None = None, + i: _ConvertibleToBool | None = None, + u: _CharacterPropertiesU | Literal["none"] | None = None, + strike: _CharacterPropertiesStrike | Literal["none"] | None = None, + kern: _ConvertibleToInt | None = None, + cap: _CharacterPropertiesCap | Literal["none"] | None = None, + spc: _ConvertibleToInt | None = None, + normalizeH: _ConvertibleToBool | None = None, + baseline: _ConvertibleToInt | None = None, + noProof: _ConvertibleToBool | None = None, + dirty: _ConvertibleToBool | None = None, + err: _ConvertibleToBool | None = None, + smtClean: _ConvertibleToBool | None = None, + smtId: _ConvertibleToInt | None = None, + bmk: str | None = None, + ln: LineProperties | None = None, + highlight: Color | None = None, + latin: Font | None = None, + ea: Font | None = None, + cs: Font | None = None, + sym: Font | None = None, + hlinkClick: Hyperlink | None = None, + hlinkMouseOver: Hyperlink | None = None, rtl: Incomplete | None = None, - extLst: Incomplete | None = None, + extLst: ExtensionList | None = None, noFill: Incomplete | None = None, solidFill: Incomplete | None = None, - gradFill: Incomplete | None = None, - blipFill: Incomplete | None = None, - pattFill: Incomplete | None = None, + gradFill: GradientFillProperties | None = None, + blipFill: BlipFillProperties | None = None, + pattFill: PatternFillProperties | None = None, grpFill: Incomplete | None = None, - effectLst: Incomplete | None = None, - effectDag: Incomplete | None = None, + effectLst: EffectList | None = None, + effectDag: EffectContainer | None = None, uLnTx: Incomplete | None = None, - uLn: Incomplete | None = None, + uLn: LineProperties | None = None, uFillTx: Incomplete | None = None, uFill: Incomplete | None = None, ) -> None: ... -class TabStop(Serialisable): # type: ignore[misc] - pos: Incomplete - algn: Incomplete - def __init__(self, pos: Incomplete | None = None, algn: Incomplete | None = None) -> None: ... +class TabStop(Serialisable): + pos: Typed[Coordinate[bool], Literal[True]] + algn: Typed[Set[_TabStopAlgn], Literal[False]] + def __init__(self, pos: Coordinate[bool] | None = None, algn: Set[_TabStopAlgn] | None = None) -> None: ... -class TabStopList(Serialisable): # type: ignore[misc] - tab: Incomplete +class TabStopList(Serialisable): + tab: Typed[TabStop, Literal[True]] def __init__(self, tab: Incomplete | None = None) -> None: ... class Spacing(Serialisable): spcPct: Incomplete spcPts: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, spcPct: Incomplete | None = None, spcPts: Incomplete | None = None) -> None: ... class AutonumberBullet(Serialisable): - type: Incomplete - startAt: Incomplete - def __init__(self, type: Incomplete | None = None, startAt: Incomplete | None = None) -> None: ... + type: Set[_AutonumberBulletType] + startAt: Integer[Literal[False]] + def __init__(self, type: _AutonumberBulletType, startAt: _ConvertibleToInt) -> None: ... class ParagraphProperties(Serialisable): tagname: str namespace: Incomplete - marL: Incomplete - marR: Incomplete - lvl: Incomplete - indent: Incomplete - algn: Incomplete - defTabSz: Incomplete - rtl: Incomplete - eaLnBrk: Incomplete - fontAlgn: Incomplete - latinLnBrk: Incomplete - hangingPunct: Incomplete - lnSpc: Incomplete - spcBef: Incomplete - spcAft: Incomplete - tabLst: Incomplete - defRPr: Incomplete - extLst: Incomplete + marL: Integer[Literal[True]] + marR: Integer[Literal[True]] + lvl: Integer[Literal[True]] + indent: Integer[Literal[True]] + algn: NoneSet[_ParagraphPropertiesAlgn] + defTabSz: Integer[Literal[True]] + rtl: Bool[Literal[True]] + eaLnBrk: Bool[Literal[True]] + fontAlgn: NoneSet[_ParagraphPropertiesFontAlgn] + latinLnBrk: Bool[Literal[True]] + hangingPunct: Bool[Literal[True]] + lnSpc: Typed[Spacing, Literal[True]] + spcBef: Typed[Spacing, Literal[True]] + spcAft: Typed[Spacing, Literal[True]] + tabLst: Typed[TabStopList, Literal[True]] + defRPr: Typed[CharacterProperties, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] buClrTx: Incomplete - buClr: Incomplete + buClr: Typed[Color, Literal[True]] buSzTx: Incomplete buSzPct: Incomplete buSzPts: Incomplete buFontTx: Incomplete - buFont: Incomplete + buFont: Typed[Font, Literal[True]] buNone: Incomplete buAutoNum: Incomplete buChar: Incomplete buBlip: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - marL: Incomplete | None = None, - marR: Incomplete | None = None, - lvl: Incomplete | None = None, - indent: Incomplete | None = None, - algn: Incomplete | None = None, - defTabSz: Incomplete | None = None, - rtl: Incomplete | None = None, - eaLnBrk: Incomplete | None = None, - fontAlgn: Incomplete | None = None, - latinLnBrk: Incomplete | None = None, - hangingPunct: Incomplete | None = None, - lnSpc: Incomplete | None = None, - spcBef: Incomplete | None = None, - spcAft: Incomplete | None = None, - tabLst: Incomplete | None = None, - defRPr: Incomplete | None = None, - extLst: Incomplete | None = None, + marL: _ConvertibleToInt | None = None, + marR: _ConvertibleToInt | None = None, + lvl: _ConvertibleToInt | None = None, + indent: _ConvertibleToInt | None = None, + algn: _ParagraphPropertiesAlgn | Literal["none"] | None = None, + defTabSz: _ConvertibleToInt | None = None, + rtl: _ConvertibleToBool | None = None, + eaLnBrk: _ConvertibleToBool | None = None, + fontAlgn: _ParagraphPropertiesFontAlgn | Literal["none"] | None = None, + latinLnBrk: _ConvertibleToBool | None = None, + hangingPunct: _ConvertibleToBool | None = None, + lnSpc: Spacing | None = None, + spcBef: Spacing | None = None, + spcAft: Spacing | None = None, + tabLst: TabStopList | None = None, + defRPr: CharacterProperties | None = None, + extLst: ExtensionList | None = None, buClrTx: Incomplete | None = None, - buClr: Incomplete | None = None, + buClr: Color | None = None, buSzTx: Incomplete | None = None, buSzPct: Incomplete | None = None, buSzPts: Incomplete | None = None, buFontTx: Incomplete | None = None, - buFont: Incomplete | None = None, + buFont: Font | None = None, buNone: Incomplete | None = None, buAutoNum: Incomplete | None = None, buChar: Incomplete | None = None, @@ -226,156 +364,156 @@ class ParagraphProperties(Serialisable): class ListStyle(Serialisable): tagname: str namespace: Incomplete - defPPr: Incomplete - lvl1pPr: Incomplete - lvl2pPr: Incomplete - lvl3pPr: Incomplete - lvl4pPr: Incomplete - lvl5pPr: Incomplete - lvl6pPr: Incomplete - lvl7pPr: Incomplete - lvl8pPr: Incomplete - lvl9pPr: Incomplete - extLst: Incomplete - __elements__: Incomplete + defPPr: Typed[ParagraphProperties, Literal[True]] + lvl1pPr: Typed[ParagraphProperties, Literal[True]] + lvl2pPr: Typed[ParagraphProperties, Literal[True]] + lvl3pPr: Typed[ParagraphProperties, Literal[True]] + lvl4pPr: Typed[ParagraphProperties, Literal[True]] + lvl5pPr: Typed[ParagraphProperties, Literal[True]] + lvl6pPr: Typed[ParagraphProperties, Literal[True]] + lvl7pPr: Typed[ParagraphProperties, Literal[True]] + lvl8pPr: Typed[ParagraphProperties, Literal[True]] + lvl9pPr: Typed[ParagraphProperties, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - defPPr: Incomplete | None = None, - lvl1pPr: Incomplete | None = None, - lvl2pPr: Incomplete | None = None, - lvl3pPr: Incomplete | None = None, - lvl4pPr: Incomplete | None = None, - lvl5pPr: Incomplete | None = None, - lvl6pPr: Incomplete | None = None, - lvl7pPr: Incomplete | None = None, - lvl8pPr: Incomplete | None = None, - lvl9pPr: Incomplete | None = None, - extLst: Incomplete | None = None, + defPPr: ParagraphProperties | None = None, + lvl1pPr: ParagraphProperties | None = None, + lvl2pPr: ParagraphProperties | None = None, + lvl3pPr: ParagraphProperties | None = None, + lvl4pPr: ParagraphProperties | None = None, + lvl5pPr: ParagraphProperties | None = None, + lvl6pPr: ParagraphProperties | None = None, + lvl7pPr: ParagraphProperties | None = None, + lvl8pPr: ParagraphProperties | None = None, + lvl9pPr: ParagraphProperties | None = None, + extLst: ParagraphProperties | None = None, ) -> None: ... class RegularTextRun(Serialisable): tagname: str namespace: Incomplete - rPr: Incomplete - properties: Incomplete + rPr: Typed[CharacterProperties, Literal[True]] + properties: Alias t: Incomplete - value: Incomplete - __elements__: Incomplete - def __init__(self, rPr: Incomplete | None = None, t: str = "") -> None: ... + value: Alias + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, rPr: CharacterProperties | None = None, t: str = "") -> None: ... class LineBreak(Serialisable): tagname: str namespace: Incomplete - rPr: Incomplete - __elements__: Incomplete - def __init__(self, rPr: Incomplete | None = None) -> None: ... + rPr: Typed[CharacterProperties, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, rPr: CharacterProperties | None = None) -> None: ... class TextField(Serialisable): - id: Incomplete - type: Incomplete - rPr: Incomplete - pPr: Incomplete - t: Incomplete - __elements__: Incomplete + id: String[Literal[False]] + type: String[Literal[True]] + rPr: Typed[CharacterProperties, Literal[True]] + pPr: Typed[CharacterProperties, Literal[True]] + t: String[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - id: Incomplete | None = None, - type: Incomplete | None = None, - rPr: Incomplete | None = None, - pPr: Incomplete | None = None, - t: Incomplete | None = None, + id: str, + type: str | None = None, + rPr: CharacterProperties | None = None, + pPr: CharacterProperties | None = None, + t: str | None = None, ) -> None: ... class Paragraph(Serialisable): tagname: str namespace: Incomplete - pPr: Incomplete - properties: Incomplete - endParaRPr: Incomplete + pPr: Typed[ParagraphProperties, Literal[True]] + properties: Alias + endParaRPr: Typed[CharacterProperties, Literal[True]] r: Incomplete - text: Incomplete - br: Incomplete - fld: Incomplete - __elements__: Incomplete + text: Alias + br: Typed[LineBreak, Literal[True]] + fld: Typed[TextField, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - pPr: Incomplete | None = None, - endParaRPr: Incomplete | None = None, + pPr: ParagraphProperties | None = None, + endParaRPr: CharacterProperties | None = None, r: Incomplete | None = None, - br: Incomplete | None = None, - fld: Incomplete | None = None, + br: LineBreak | None = None, + fld: TextField | None = None, ) -> None: ... class GeomGuide(Serialisable): - name: Incomplete - fmla: Incomplete - def __init__(self, name: Incomplete | None = None, fmla: Incomplete | None = None) -> None: ... + name: String[Literal[False]] + fmla: String[Literal[False]] + def __init__(self, name: str, fmla: str) -> None: ... class GeomGuideList(Serialisable): gd: Incomplete def __init__(self, gd: Incomplete | None = None) -> None: ... class PresetTextShape(Serialisable): - prst: Incomplete - avLst: Incomplete - def __init__(self, prst: Incomplete | None = None, avLst: Incomplete | None = None) -> None: ... + prst: Typed[Set[_PresetTextShapePrst], Literal[False]] + avLst: Typed[GeomGuideList, Literal[True]] + def __init__(self, prst: Set[_PresetTextShapePrst], avLst: GeomGuideList | None = None) -> None: ... class TextNormalAutofit(Serialisable): - fontScale: Incomplete - lnSpcReduction: Incomplete - def __init__(self, fontScale: Incomplete | None = None, lnSpcReduction: Incomplete | None = None) -> None: ... + fontScale: Integer[Literal[False]] + lnSpcReduction: Integer[Literal[False]] + def __init__(self, fontScale: _ConvertibleToInt, lnSpcReduction: _ConvertibleToInt) -> None: ... class RichTextProperties(Serialisable): tagname: str namespace: Incomplete - rot: Incomplete - spcFirstLastPara: Incomplete - vertOverflow: Incomplete - horzOverflow: Incomplete - vert: Incomplete - wrap: Incomplete - lIns: Incomplete - tIns: Incomplete - rIns: Incomplete - bIns: Incomplete - numCol: Incomplete - spcCol: Incomplete - rtlCol: Incomplete - fromWordArt: Incomplete - anchor: Incomplete - anchorCtr: Incomplete - forceAA: Incomplete - upright: Incomplete - compatLnSpc: Incomplete - prstTxWarp: Incomplete - scene3d: Incomplete - extLst: Incomplete + rot: Integer[Literal[True]] + spcFirstLastPara: Bool[Literal[True]] + vertOverflow: NoneSet[_RichTextPropertiesVertOverflow] + horzOverflow: NoneSet[_RichTextPropertiesHorzOverflow] + vert: NoneSet[_RichTextPropertiesVert] + wrap: NoneSet[_RichTextPropertiesWrap] + lIns: Integer[Literal[True]] + tIns: Integer[Literal[True]] + rIns: Integer[Literal[True]] + bIns: Integer[Literal[True]] + numCol: Integer[Literal[True]] + spcCol: Integer[Literal[True]] + rtlCol: Bool[Literal[True]] + fromWordArt: Bool[Literal[True]] + anchor: NoneSet[_RichTextPropertiesAnchor] + anchorCtr: Bool[Literal[True]] + forceAA: Bool[Literal[True]] + upright: Bool[Literal[True]] + compatLnSpc: Bool[Literal[True]] + prstTxWarp: Typed[PresetTextShape, Literal[True]] + scene3d: Typed[Scene3D, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] noAutofit: Incomplete normAutofit: Incomplete spAutoFit: Incomplete flatTx: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - rot: Incomplete | None = None, - spcFirstLastPara: Incomplete | None = None, - vertOverflow: Incomplete | None = None, - horzOverflow: Incomplete | None = None, - vert: Incomplete | None = None, - wrap: Incomplete | None = None, - lIns: Incomplete | None = None, - tIns: Incomplete | None = None, - rIns: Incomplete | None = None, - bIns: Incomplete | None = None, - numCol: Incomplete | None = None, - spcCol: Incomplete | None = None, - rtlCol: Incomplete | None = None, - fromWordArt: Incomplete | None = None, - anchor: Incomplete | None = None, - anchorCtr: Incomplete | None = None, - forceAA: Incomplete | None = None, - upright: Incomplete | None = None, - compatLnSpc: Incomplete | None = None, + rot: _ConvertibleToInt | None = None, + spcFirstLastPara: _ConvertibleToBool | None = None, + vertOverflow: _RichTextPropertiesVertOverflow | Literal["none"] | None = None, + horzOverflow: _RichTextPropertiesHorzOverflow | Literal["none"] | None = None, + vert: _RichTextPropertiesVert | Literal["none"] | None = None, + wrap: _RichTextPropertiesWrap | Literal["none"] | None = None, + lIns: _ConvertibleToInt | None = None, + tIns: _ConvertibleToInt | None = None, + rIns: _ConvertibleToInt | None = None, + bIns: _ConvertibleToInt | None = None, + numCol: _ConvertibleToInt | None = None, + spcCol: _ConvertibleToInt | None = None, + rtlCol: _ConvertibleToBool | None = None, + fromWordArt: _ConvertibleToBool | None = None, + anchor: _RichTextPropertiesAnchor | Literal["none"] | None = None, + anchorCtr: _ConvertibleToBool | None = None, + forceAA: _ConvertibleToBool | None = None, + upright: _ConvertibleToBool | None = None, + compatLnSpc: _ConvertibleToBool | None = None, prstTxWarp: Incomplete | None = None, scene3d: Incomplete | None = None, extLst: Incomplete | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi index 3b34563fd..80d0ef837 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi @@ -1,15 +1,20 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing_extensions import Literal +from openpyxl.descriptors.base import Alias, Bool, Convertible, _ConvertibleToBool, _ConvertibleToMultiCellRange from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.worksheet.cell_range import MultiCellRange class ConditionalFormatting(Serialisable): tagname: str - sqref: Incomplete - cells: Incomplete - pivot: Incomplete + sqref: Convertible[MultiCellRange, Literal[False]] + cells: Alias + pivot: Bool[Literal[True]] cfRule: Incomplete - rules: Incomplete - def __init__(self, sqref=(), pivot: Incomplete | None = None, cfRule=(), extLst: Incomplete | None = None) -> None: ... + rules: Alias + def __init__( + self, sqref: _ConvertibleToMultiCellRange = (), pivot: _ConvertibleToBool | None = None, cfRule=(), extLst: Unused = None + ) -> None: ... def __eq__(self, other): ... def __hash__(self) -> int: ... def __contains__(self, coord): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi index 958431086..ccb97c501 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi @@ -1,56 +1,119 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal, TypeAlias -from openpyxl.descriptors import Float +from openpyxl.descriptors import Float, Strict +from openpyxl.descriptors.base import Bool, Integer, NoneSet, Set, String, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.styles.differential import DifferentialStyle -class ValueDescriptor(Float): - expected_type: Incomplete - def __set__(self, instance, value) -> None: ... +_IconSetIconSet: TypeAlias = Literal[ + "3Arrows", + "3ArrowsGray", + "3Flags", + "3TrafficLights1", + "3TrafficLights2", + "3Signs", + "3Symbols", + "3Symbols2", + "4Arrows", + "4ArrowsGray", + "4RedToBlack", + "4Rating", + "4TrafficLights", + "5Arrows", + "5ArrowsGray", + "5Rating", + "5Quarters", +] +_RuleOperator: TypeAlias = Literal[ + "lessThan", + "lessThanOrEqual", + "equal", + "notEqual", + "greaterThanOrEqual", + "greaterThan", + "between", + "notBetween", + "containsText", + "notContains", + "beginsWith", + "endsWith", +] +_RuleTimePeriod: TypeAlias = Literal[ + "today", "yesterday", "tomorrow", "last7Days", "thisMonth", "lastMonth", "nextMonth", "thisWeek", "lastWeek", "nextWeek" +] +_FormatObjectType: TypeAlias = Literal["num", "percent", "max", "min", "formula", "percentile"] +_RuleType: TypeAlias = Literal[ + "expression", + "cellIs", + "colorScale", + "dataBar", + "iconSet", + "top10", + "uniqueValues", + "duplicateValues", + "containsText", + "notContainsText", + "beginsWith", + "endsWith", + "containsBlanks", + "notContainsBlanks", + "containsErrors", + "notContainsErrors", + "timePeriod", + "aboveAverage", +] + +class ValueDescriptor(Float[Incomplete]): + expected_type: type[Incomplete] + def __set__(self, instance: Serialisable | Strict, value) -> None: ... # type: ignore[override] class FormatObject(Serialisable): tagname: str - type: Incomplete + type: Set[_FormatObjectType] val: Incomplete - gte: Incomplete - extLst: Incomplete - __elements__: Incomplete + gte: Bool[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, type, val: Incomplete | None = None, gte: Incomplete | None = None, extLst: Incomplete | None = None + self, type: _FormatObjectType, val: Incomplete | None = None, gte: _ConvertibleToBool | None = None, extLst: Unused = None ) -> None: ... -class RuleType(Serialisable): # type: ignore[misc] +class RuleType(Serialisable): cfvo: Incomplete class IconSet(RuleType): tagname: str - iconSet: Incomplete - showValue: Incomplete - percent: Incomplete - reverse: Incomplete - __elements__: Incomplete + iconSet: NoneSet[_IconSetIconSet] + showValue: Bool[Literal[True]] + percent: Bool[Literal[True]] + reverse: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] cfvo: Incomplete def __init__( self, - iconSet: Incomplete | None = None, - showValue: Incomplete | None = None, - percent: Incomplete | None = None, - reverse: Incomplete | None = None, + iconSet: _IconSetIconSet | Literal["none"] | None = None, + showValue: _ConvertibleToBool | None = None, + percent: _ConvertibleToBool | None = None, + reverse: _ConvertibleToBool | None = None, cfvo: Incomplete | None = None, ) -> None: ... class DataBar(RuleType): tagname: str - minLength: Incomplete - maxLength: Incomplete - showValue: Incomplete + minLength: Integer[Literal[True]] + maxLength: Integer[Literal[True]] + showValue: Bool[Literal[True]] color: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] cfvo: Incomplete def __init__( self, - minLength: Incomplete | None = None, - maxLength: Incomplete | None = None, - showValue: Incomplete | None = None, + minLength: _ConvertibleToInt | None = None, + maxLength: _ConvertibleToInt | None = None, + showValue: _ConvertibleToBool | None = None, cfvo: Incomplete | None = None, color: Incomplete | None = None, ) -> None: ... @@ -58,54 +121,54 @@ class DataBar(RuleType): class ColorScale(RuleType): tagname: str color: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] cfvo: Incomplete def __init__(self, cfvo: Incomplete | None = None, color: Incomplete | None = None) -> None: ... class Rule(Serialisable): tagname: str - type: Incomplete - dxfId: Incomplete - priority: Incomplete - stopIfTrue: Incomplete - aboveAverage: Incomplete - percent: Incomplete - bottom: Incomplete - operator: Incomplete - text: Incomplete - timePeriod: Incomplete - rank: Incomplete - stdDev: Incomplete - equalAverage: Incomplete + type: Set[_RuleType] + dxfId: Integer[Literal[True]] + priority: Integer[Literal[False]] + stopIfTrue: Bool[Literal[True]] + aboveAverage: Bool[Literal[True]] + percent: Bool[Literal[True]] + bottom: Bool[Literal[True]] + operator: NoneSet[_RuleOperator] + text: String[Literal[True]] + timePeriod: NoneSet[_RuleTimePeriod] + rank: Integer[Literal[True]] + stdDev: Integer[Literal[True]] + equalAverage: Bool[Literal[True]] formula: Incomplete - colorScale: Incomplete - dataBar: Incomplete - iconSet: Incomplete - extLst: Incomplete - dxf: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + colorScale: Typed[ColorScale, Literal[True]] + dataBar: Typed[DataBar, Literal[True]] + iconSet: Typed[IconSet, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + dxf: Typed[DifferentialStyle, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] def __init__( self, - type, - dxfId: Incomplete | None = None, - priority: int = 0, - stopIfTrue: Incomplete | None = None, - aboveAverage: Incomplete | None = None, - percent: Incomplete | None = None, - bottom: Incomplete | None = None, - operator: Incomplete | None = None, - text: Incomplete | None = None, - timePeriod: Incomplete | None = None, - rank: Incomplete | None = None, - stdDev: Incomplete | None = None, - equalAverage: Incomplete | None = None, + type: _RuleType, + dxfId: _ConvertibleToInt | None = None, + priority: _ConvertibleToInt = 0, + stopIfTrue: _ConvertibleToBool | None = None, + aboveAverage: _ConvertibleToBool | None = None, + percent: _ConvertibleToBool | None = None, + bottom: _ConvertibleToBool | None = None, + operator: _RuleOperator | Literal["none"] | None = None, + text: str | None = None, + timePeriod: _RuleTimePeriod | Literal["none"] | None = None, + rank: _ConvertibleToInt | None = None, + stdDev: _ConvertibleToInt | None = None, + equalAverage: _ConvertibleToBool | None = None, formula=(), - colorScale: Incomplete | None = None, - dataBar: Incomplete | None = None, - iconSet: Incomplete | None = None, - extLst: Incomplete | None = None, - dxf: Incomplete | None = None, + colorScale: ColorScale | None = None, + dataBar: DataBar | None = None, + iconSet: IconSet | None = None, + extLst: Unused = None, + dxf: DifferentialStyle | None = None, ) -> None: ... def ColorScaleRule( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi index 4162220c6..96e68ca37 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi @@ -1,11 +1,14 @@ from _typeshed import Incomplete +from typing import ClassVar from openpyxl.descriptors import DateTime +from openpyxl.descriptors.base import Alias from openpyxl.descriptors.nested import NestedText from openpyxl.descriptors.serialisable import Serialisable -class NestedDateTime(DateTime, NestedText): - expected_type: Incomplete +# Does not reimplement the relevant methods, so runtime also has incompatible supertypes +class NestedDateTime(DateTime[Incomplete], NestedText): # type: ignore[misc] + expected_type: type[Incomplete] def to_tree( self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None ): ... @@ -25,7 +28,7 @@ class DocumentProperties(Serialisable): lastPrinted: Incomplete revision: Incomplete version: Incomplete - last_modified_by: Incomplete + last_modified_by: Alias subject: Incomplete title: Incomplete creator: Incomplete @@ -34,7 +37,7 @@ class DocumentProperties(Serialisable): language: Incomplete created: Incomplete modified: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, category: Incomplete | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi index 6de2d4756..188498ea0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi @@ -1,35 +1,53 @@ from _typeshed import Incomplete from collections.abc import Iterator -from typing_extensions import Self +from datetime import datetime +from typing import Any, Generic, TypeVar +from typing_extensions import Literal, Self -from openpyxl.descriptors import Bool, DateTime, Float, Integer, Sequence, Strict, String +from openpyxl.descriptors import Sequence, Strict +from openpyxl.descriptors.base import ( + Bool, + DateTime, + Float, + Integer, + String, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) from openpyxl.descriptors.nested import NestedText -class NestedBoolText(Bool, NestedText): ... +_T = TypeVar("_T") -class _TypedProperty(Strict): - name: String - value: Incomplete - def __init__(self, name: str, value) -> None: ... - def __eq__(self, other: _TypedProperty) -> bool: ... # type: ignore[override] +# Does not reimplement anything, so runtime also has incompatible supertypes +class NestedBoolText(Bool[Incomplete], NestedText): ... # type: ignore[misc] -class IntProperty(_TypedProperty): - value: Integer +class _TypedProperty(Strict, Generic[_T]): + name: String[Literal[False]] + # Since this is internal, just list all possible values + value: Integer[Literal[False]] | Float[Literal[False]] | String[Literal[True]] | DateTime[Literal[False]] | Bool[ + Literal[False] + ] | String[Literal[False]] + def __init__(self, name: str, value: _T) -> None: ... + def __eq__(self, other: _TypedProperty[Any]) -> bool: ... # type: ignore[override] -class FloatProperty(_TypedProperty): - value: Float +class IntProperty(_TypedProperty[_ConvertibleToInt]): + value: Integer[Literal[False]] -class StringProperty(_TypedProperty): - value: String +class FloatProperty(_TypedProperty[_ConvertibleToFloat]): + value: Float[Literal[False]] -class DateTimeProperty(_TypedProperty): - value: DateTime +class StringProperty(_TypedProperty[str | None]): + value: String[Literal[True]] -class BoolProperty(_TypedProperty): - value: Bool +class DateTimeProperty(_TypedProperty[datetime]): + value: DateTime[Literal[False]] -class LinkProperty(_TypedProperty): - value: String +class BoolProperty(_TypedProperty[_ConvertibleToBool]): + value: Bool[Literal[False]] + +class LinkProperty(_TypedProperty[str]): + value: String[Literal[False]] CLASS_MAPPING: Incomplete XML_MAPPING: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi index 7b4ca3f0d..c50f9fe3f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi @@ -1,20 +1,23 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Typed from openpyxl.descriptors.serialisable import Serialisable def get_version(): ... -class DigSigBlob(Serialisable): # type: ignore[misc] - __elements__: Incomplete - __attrs__: Incomplete +class DigSigBlob(Serialisable): + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] -class VectorLpstr(Serialisable): # type: ignore[misc] - __elements__: Incomplete - __attrs__: Incomplete +class VectorLpstr(Serialisable): + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] -class VectorVariant(Serialisable): # type: ignore[misc] - __elements__: Incomplete - __attrs__: Incomplete +class VectorVariant(Serialisable): + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] class ExtendedProperties(Serialisable): tagname: str @@ -33,19 +36,19 @@ class ExtendedProperties(Serialisable): HiddenSlides: Incomplete MMClips: Incomplete ScaleCrop: Incomplete - HeadingPairs: Incomplete - TitlesOfParts: Incomplete + HeadingPairs: Typed[VectorVariant, Literal[True]] + TitlesOfParts: Typed[VectorLpstr, Literal[True]] LinksUpToDate: Incomplete CharactersWithSpaces: Incomplete SharedDoc: Incomplete HyperlinkBase: Incomplete - HLinks: Incomplete + HLinks: Typed[VectorVariant, Literal[True]] HyperlinksChanged: Incomplete - DigSig: Incomplete + DigSig: Typed[DigSigBlob, Literal[True]] Application: Incomplete AppVersion: Incomplete DocSecurity: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, Template: Incomplete | None = None, @@ -63,15 +66,15 @@ class ExtendedProperties(Serialisable): HiddenSlides: Incomplete | None = None, MMClips: Incomplete | None = None, ScaleCrop: Incomplete | None = None, - HeadingPairs: Incomplete | None = None, - TitlesOfParts: Incomplete | None = None, + HeadingPairs: Unused = None, + TitlesOfParts: Unused = None, LinksUpToDate: Incomplete | None = None, CharactersWithSpaces: Incomplete | None = None, SharedDoc: Incomplete | None = None, HyperlinkBase: Incomplete | None = None, - HLinks: Incomplete | None = None, + HLinks: Unused = None, HyperlinksChanged: Incomplete | None = None, - DigSig: Incomplete | None = None, + DigSig: Unused = None, Application: str = "Microsoft Excel", AppVersion: Incomplete | None = None, DocSecurity: Incomplete | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi index 26a1cb5be..bcc569d4e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi @@ -1,21 +1,24 @@ from _typeshed import Incomplete from collections.abc import Generator +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import String from openpyxl.descriptors.serialisable import Serialisable mimetypes: Incomplete class FileExtension(Serialisable): tagname: str - Extension: Incomplete - ContentType: Incomplete - def __init__(self, Extension, ContentType) -> None: ... + Extension: String[Literal[False]] + ContentType: String[Literal[False]] + def __init__(self, Extension: str, ContentType: str) -> None: ... class Override(Serialisable): tagname: str - PartName: Incomplete - ContentType: Incomplete - def __init__(self, PartName, ContentType) -> None: ... + PartName: String[Literal[False]] + ContentType: String[Literal[False]] + def __init__(self, PartName: str, ContentType: str) -> None: ... DEFAULT_TYPES: Incomplete DEFAULT_OVERRIDE: Incomplete @@ -25,7 +28,7 @@ class Manifest(Serialisable): Default: Incomplete Override: Incomplete path: str - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, Default=(), Override=()) -> None: ... @property def filenames(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi index e39941b0c..04cb557b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi @@ -1,23 +1,28 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from collections.abc import Generator +from typing import overload +from typing_extensions import Literal +from openpyxl.descriptors.base import Alias, String from openpyxl.descriptors.serialisable import Serialisable class Relationship(Serialisable): tagname: str - Type: Incomplete - Target: Incomplete - target: Incomplete - TargetMode: Incomplete - Id: Incomplete - id: Incomplete + Type: String[Literal[False]] + Target: String[Literal[False]] + target: Alias + TargetMode: String[Literal[True]] + Id: String[Literal[True]] + id: Alias + @overload def __init__( - self, - Id: Incomplete | None = None, - Type: Incomplete | None = None, - type: Incomplete | None = None, - Target: Incomplete | None = None, - TargetMode: Incomplete | None = None, + self, Id: str, Type: Unused = None, *, type: str, Target: str | None = None, TargetMode: str | None = None + ) -> None: ... + @overload + def __init__(self, Id: str, Type: Unused, type: str, Target: str | None = None, TargetMode: str | None = None) -> None: ... + @overload + def __init__( + self, Id: str, Type: str, type: None = None, Target: str | None = None, TargetMode: str | None = None ) -> None: ... class RelationshipList(Serialisable): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi index d29395ad4..4875deb6b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi @@ -1,89 +1,102 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Alias, Bool, Integer, NoneSet, String, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.workbook.defined_name import DefinedNameList +from openpyxl.workbook.function_group import FunctionGroupList +from openpyxl.workbook.properties import CalcProperties, FileVersion, WorkbookProperties +from openpyxl.workbook.protection import FileSharing, WorkbookProtection +from openpyxl.workbook.smart_tags import SmartTagList, SmartTagProperties +from openpyxl.workbook.web import WebPublishing, WebPublishObjectList + +_ChildSheetState: TypeAlias = Literal["visible", "hidden", "veryHidden"] +_WorkbookPackageConformance: TypeAlias = Literal["strict", "transitional"] class FileRecoveryProperties(Serialisable): tagname: str - autoRecover: Incomplete - crashSave: Incomplete - dataExtractLoad: Incomplete - repairLoad: Incomplete + autoRecover: Bool[Literal[True]] + crashSave: Bool[Literal[True]] + dataExtractLoad: Bool[Literal[True]] + repairLoad: Bool[Literal[True]] def __init__( self, - autoRecover: Incomplete | None = None, - crashSave: Incomplete | None = None, - dataExtractLoad: Incomplete | None = None, - repairLoad: Incomplete | None = None, + autoRecover: _ConvertibleToBool | None = None, + crashSave: _ConvertibleToBool | None = None, + dataExtractLoad: _ConvertibleToBool | None = None, + repairLoad: _ConvertibleToBool | None = None, ) -> None: ... class ChildSheet(Serialisable): tagname: str - name: Incomplete - sheetId: Incomplete - state: Incomplete + name: String[Literal[False]] + sheetId: Integer[Literal[False]] + state: NoneSet[_ChildSheetState] id: Incomplete def __init__( self, - name: Incomplete | None = None, - sheetId: Incomplete | None = None, - state: str = "visible", + name: str, + sheetId: _ConvertibleToInt, + state: _ChildSheetState | Literal["none"] | None = "visible", id: Incomplete | None = None, ) -> None: ... class PivotCache(Serialisable): tagname: str - cacheId: Incomplete + cacheId: Integer[Literal[False]] id: Incomplete - def __init__(self, cacheId: Incomplete | None = None, id: Incomplete | None = None) -> None: ... + def __init__(self, cacheId: _ConvertibleToInt, id: Incomplete | None = None) -> None: ... class WorkbookPackage(Serialisable): tagname: str - conformance: Incomplete - fileVersion: Incomplete - fileSharing: Incomplete - workbookPr: Incomplete - properties: Incomplete - workbookProtection: Incomplete + conformance: NoneSet[_WorkbookPackageConformance] + fileVersion: Typed[FileVersion, Literal[True]] + fileSharing: Typed[FileSharing, Literal[True]] + workbookPr: Typed[WorkbookProperties, Literal[True]] + properties: Alias + workbookProtection: Typed[WorkbookProtection, Literal[True]] bookViews: Incomplete sheets: Incomplete - functionGroups: Incomplete + functionGroups: Typed[FunctionGroupList, Literal[True]] externalReferences: Incomplete - definedNames: Incomplete - calcPr: Incomplete + definedNames: Typed[DefinedNameList, Literal[True]] + calcPr: Typed[CalcProperties, Literal[True]] oleSize: Incomplete customWorkbookViews: Incomplete pivotCaches: Incomplete - smartTagPr: Incomplete - smartTagTypes: Incomplete - webPublishing: Incomplete - fileRecoveryPr: Incomplete - webPublishObjects: Incomplete - extLst: Incomplete + smartTagPr: Typed[SmartTagProperties, Literal[True]] + smartTagTypes: Typed[SmartTagList, Literal[True]] + webPublishing: Typed[WebPublishing, Literal[True]] + fileRecoveryPr: Typed[FileRecoveryProperties, Literal[True]] + webPublishObjects: Typed[WebPublishObjectList, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] Ignorable: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - conformance: Incomplete | None = None, - fileVersion: Incomplete | None = None, - fileSharing: Incomplete | None = None, - workbookPr: Incomplete | None = None, - workbookProtection: Incomplete | None = None, + conformance: _WorkbookPackageConformance | Literal["none"] | None = None, + fileVersion: FileVersion | None = None, + fileSharing: FileSharing | None = None, + workbookPr: WorkbookProperties | None = None, + workbookProtection: WorkbookProtection | None = None, bookViews=(), sheets=(), - functionGroups: Incomplete | None = None, + functionGroups: FunctionGroupList | None = None, externalReferences=(), - definedNames: Incomplete | None = None, - calcPr: Incomplete | None = None, + definedNames: DefinedNameList | None = None, + calcPr: CalcProperties | None = None, oleSize: Incomplete | None = None, customWorkbookViews=(), pivotCaches=(), - smartTagPr: Incomplete | None = None, - smartTagTypes: Incomplete | None = None, - webPublishing: Incomplete | None = None, - fileRecoveryPr: Incomplete | None = None, - webPublishObjects: Incomplete | None = None, - extLst: Incomplete | None = None, - Ignorable: Incomplete | None = None, + smartTagPr: SmartTagProperties | None = None, + smartTagTypes: SmartTagList | None = None, + webPublishing: WebPublishing | None = None, + fileRecoveryPr: FileRecoveryProperties | None = None, + webPublishObjects: WebPublishObjectList | None = None, + extLst: Unused = None, + Ignorable: Unused = None, ) -> None: ... def to_tree(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi index f807b116f..2a456dc95 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi @@ -1,318 +1,372 @@ -from _typeshed import Incomplete - +from _typeshed import Incomplete, Unused +from datetime import datetime +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias + +from openpyxl.descriptors.base import ( + Bool, + DateTime, + Float, + Integer, + Set, + String, + Typed, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.pivot.fields import Error, Missing, Number, Text, TupleList +from openpyxl.pivot.table import PivotArea + +_RangePrGroupBy: TypeAlias = Literal["range", "seconds", "minutes", "hours", "days", "months", "quarters", "years"] +_CacheSourceType: TypeAlias = Literal["worksheet", "external", "consolidation", "scenario"] class MeasureDimensionMap(Serialisable): tagname: str - measureGroup: Incomplete - dimension: Incomplete - def __init__(self, measureGroup: Incomplete | None = None, dimension: Incomplete | None = None) -> None: ... + measureGroup: Integer[Literal[True]] + dimension: Integer[Literal[True]] + def __init__(self, measureGroup: _ConvertibleToInt | None = None, dimension: _ConvertibleToInt | None = None) -> None: ... class MeasureGroup(Serialisable): tagname: str - name: Incomplete - caption: Incomplete - def __init__(self, name: Incomplete | None = None, caption: Incomplete | None = None) -> None: ... + name: String[Literal[False]] + caption: String[Literal[False]] + def __init__(self, name: str, caption: str) -> None: ... class PivotDimension(Serialisable): tagname: str - measure: Incomplete - name: Incomplete - uniqueName: Incomplete - caption: Incomplete - def __init__( - self, - measure: Incomplete | None = None, - name: Incomplete | None = None, - uniqueName: Incomplete | None = None, - caption: Incomplete | None = None, - ) -> None: ... + measure: Bool[Literal[False]] + name: String[Literal[False]] + uniqueName: String[Literal[False]] + caption: String[Literal[False]] + @overload + def __init__(self, measure: _ConvertibleToBool = None, *, name: str, uniqueName: str, caption: str) -> None: ... + @overload + def __init__(self, measure: _ConvertibleToBool, name: str, uniqueName: str, caption: str) -> None: ... class CalculatedMember(Serialisable): tagname: str - name: Incomplete - mdx: Incomplete - memberName: Incomplete - hierarchy: Incomplete - parent: Incomplete - solveOrder: Incomplete - set: Incomplete - extLst: Incomplete - __elements__: Incomplete + name: String[Literal[False]] + mdx: String[Literal[False]] + memberName: String[Literal[False]] + hierarchy: String[Literal[False]] + parent: String[Literal[False]] + solveOrder: Integer[Literal[False]] + set: Bool[Literal[False]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - name: Incomplete | None = None, - mdx: Incomplete | None = None, - memberName: Incomplete | None = None, - hierarchy: Incomplete | None = None, - parent: Incomplete | None = None, - solveOrder: Incomplete | None = None, - set: Incomplete | None = None, - extLst: Incomplete | None = None, + name: str, + mdx: str, + memberName: str, + hierarchy: str, + parent: str, + solveOrder: _ConvertibleToInt, + set: _ConvertibleToBool = None, + extLst: Unused = None, ) -> None: ... class CalculatedItem(Serialisable): tagname: str - field: Incomplete - formula: Incomplete - pivotArea: Incomplete - extLst: Incomplete - __elements__: Incomplete + field: Integer[Literal[True]] + formula: String[Literal[False]] + pivotArea: Typed[PivotArea, Literal[False]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( - self, - field: Incomplete | None = None, - formula: Incomplete | None = None, - pivotArea: Incomplete | None = None, - extLst: Incomplete | None = None, + self, field: _ConvertibleToInt | None = None, *, formula: str, pivotArea: PivotArea, extLst: Incomplete | None = None + ) -> None: ... + @overload + def __init__( + self, field: _ConvertibleToInt | None, formula: str, pivotArea: PivotArea, extLst: Incomplete | None = None ) -> None: ... class ServerFormat(Serialisable): tagname: str - culture: Incomplete - format: Incomplete - def __init__(self, culture: Incomplete | None = None, format: Incomplete | None = None) -> None: ... + culture: String[Literal[True]] + format: String[Literal[True]] + def __init__(self, culture: str | None = None, format: str | None = None) -> None: ... class ServerFormatList(Serialisable): tagname: str serverFormat: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] def __init__(self, count: Incomplete | None = None, serverFormat: Incomplete | None = None) -> None: ... @property def count(self): ... class Query(Serialisable): tagname: str - mdx: Incomplete - tpls: Incomplete - __elements__: Incomplete - def __init__(self, mdx: Incomplete | None = None, tpls: Incomplete | None = None) -> None: ... + mdx: String[Literal[False]] + tpls: Typed[TupleList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, mdx: str, tpls: TupleList | None = None) -> None: ... class QueryCache(Serialisable): tagname: str - count: Incomplete - query: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, query: Incomplete | None = None) -> None: ... + count: Integer[Literal[False]] + query: Typed[Query, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt, query: Query) -> None: ... class OLAPSet(Serialisable): tagname: str - count: Incomplete - maxRank: Incomplete - setDefinition: Incomplete + count: Integer[Literal[False]] + maxRank: Integer[Literal[False]] + setDefinition: String[Literal[False]] sortType: Incomplete - queryFailed: Incomplete - tpls: Incomplete - sortByTuple: Incomplete - __elements__: Incomplete + queryFailed: Bool[Literal[False]] + tpls: Typed[TupleList, Literal[True]] + sortByTuple: Typed[TupleList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - count: Incomplete | None = None, - maxRank: Incomplete | None = None, - setDefinition: Incomplete | None = None, + count: _ConvertibleToInt, + maxRank: _ConvertibleToInt, + setDefinition: str, sortType: Incomplete | None = None, - queryFailed: Incomplete | None = None, - tpls: Incomplete | None = None, - sortByTuple: Incomplete | None = None, + queryFailed: _ConvertibleToBool = None, + tpls: TupleList | None = None, + sortByTuple: TupleList | None = None, ) -> None: ... -class OLAPSets(Serialisable): # type: ignore[misc] - count: Incomplete - set: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, set: Incomplete | None = None) -> None: ... +class OLAPSets(Serialisable): + count: Integer[Literal[False]] + set: Typed[OLAPSet, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt, set: OLAPSet) -> None: ... class PCDSDTCEntries(Serialisable): tagname: str - count: Incomplete - m: Incomplete - n: Incomplete - e: Incomplete - s: Incomplete - __elements__: Incomplete - def __init__( - self, - count: Incomplete | None = None, - m: Incomplete | None = None, - n: Incomplete | None = None, - e: Incomplete | None = None, - s: Incomplete | None = None, - ) -> None: ... + count: Integer[Literal[False]] + m: Typed[Missing, Literal[False]] + n: Typed[Number, Literal[False]] + e: Typed[Error, Literal[False]] + s: Typed[Text, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt, m: Missing, n: Number, e: Error, s: Text) -> None: ... class TupleCache(Serialisable): tagname: str - entries: Incomplete - sets: Incomplete - queryCache: Incomplete - serverFormats: Incomplete - extLst: Incomplete - __elements__: Incomplete + entries: Typed[PCDSDTCEntries, Literal[True]] + sets: Typed[OLAPSets, Literal[True]] + queryCache: Typed[QueryCache, Literal[True]] + serverFormats: Typed[ServerFormatList, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - entries: Incomplete | None = None, - sets: Incomplete | None = None, - queryCache: Incomplete | None = None, - serverFormats: Incomplete | None = None, - extLst: Incomplete | None = None, + entries: PCDSDTCEntries | None = None, + sets: OLAPSets | None = None, + queryCache: QueryCache | None = None, + serverFormats: ServerFormatList | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class PCDKPI(Serialisable): tagname: str - uniqueName: Incomplete - caption: Incomplete - displayFolder: Incomplete - measureGroup: Incomplete - parent: Incomplete - value: Incomplete - goal: Incomplete - status: Incomplete - trend: Incomplete - weight: Incomplete - time: Incomplete + uniqueName: String[Literal[False]] + caption: String[Literal[True]] + displayFolder: String[Literal[False]] + measureGroup: String[Literal[False]] + parent: String[Literal[False]] + value: String[Literal[False]] + goal: String[Literal[False]] + status: String[Literal[False]] + trend: String[Literal[False]] + weight: String[Literal[False]] + time: String[Literal[False]] + @overload + def __init__( + self, + uniqueName: str, + caption: str | None = None, + *, + displayFolder: str, + measureGroup: str, + parent: str, + value: str, + goal: str, + status: str, + trend: str, + weight: str, + time: str, + ) -> None: ... + @overload def __init__( self, - uniqueName: Incomplete | None = None, - caption: Incomplete | None = None, - displayFolder: Incomplete | None = None, - measureGroup: Incomplete | None = None, - parent: Incomplete | None = None, - value: Incomplete | None = None, - goal: Incomplete | None = None, - status: Incomplete | None = None, - trend: Incomplete | None = None, - weight: Incomplete | None = None, - time: Incomplete | None = None, + uniqueName: str, + caption: str | None, + displayFolder: str, + measureGroup: str, + parent: str, + value: str, + goal: str, + status: str, + trend: str, + weight: str, + time: str, ) -> None: ... class GroupMember(Serialisable): tagname: str - uniqueName: Incomplete - group: Incomplete - def __init__(self, uniqueName: Incomplete | None = None, group: Incomplete | None = None) -> None: ... + uniqueName: String[Literal[False]] + group: Bool[Literal[False]] + def __init__(self, uniqueName: str, group: _ConvertibleToBool = None) -> None: ... -class GroupMembers(Serialisable): # type: ignore[misc] - count: Incomplete - groupMember: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, groupMember: Incomplete | None = None) -> None: ... +class GroupMembers(Serialisable): + count: Integer[Literal[False]] + groupMember: Typed[GroupMember, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt, groupMember: GroupMember) -> None: ... class LevelGroup(Serialisable): tagname: str - name: Incomplete - uniqueName: Incomplete - caption: Incomplete - uniqueParent: Incomplete - id: Incomplete - groupMembers: Incomplete - __elements__: Incomplete + name: String[Literal[False]] + uniqueName: String[Literal[False]] + caption: String[Literal[False]] + uniqueParent: String[Literal[False]] + id: Integer[Literal[False]] + groupMembers: Typed[GroupMembers, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, - name: Incomplete | None = None, - uniqueName: Incomplete | None = None, - caption: Incomplete | None = None, - uniqueParent: Incomplete | None = None, - id: Incomplete | None = None, - groupMembers: Incomplete | None = None, + self, name: str, uniqueName: str, caption: str, uniqueParent: str, id: _ConvertibleToInt, groupMembers: GroupMembers ) -> None: ... class Groups(Serialisable): tagname: str - count: Incomplete - group: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, group: Incomplete | None = None) -> None: ... + count: Integer[Literal[False]] + group: Typed[LevelGroup, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt, group: LevelGroup) -> None: ... class GroupLevel(Serialisable): tagname: str - uniqueName: Incomplete - caption: Incomplete - user: Incomplete - customRollUp: Incomplete - groups: Incomplete - extLst: Incomplete - __elements__: Incomplete + uniqueName: String[Literal[False]] + caption: String[Literal[False]] + user: Bool[Literal[False]] + customRollUp: Bool[Literal[False]] + groups: Typed[Groups, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - uniqueName: Incomplete | None = None, - caption: Incomplete | None = None, - user: Incomplete | None = None, - customRollUp: Incomplete | None = None, - groups: Incomplete | None = None, - extLst: Incomplete | None = None, + uniqueName: str, + caption: str, + user: _ConvertibleToBool = None, + customRollUp: _ConvertibleToBool = None, + groups: Groups | None = None, + extLst: ExtensionList | None = None, ) -> None: ... -class GroupLevels(Serialisable): # type: ignore[misc] - count: Incomplete - groupLevel: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, groupLevel: Incomplete | None = None) -> None: ... +class GroupLevels(Serialisable): + count: Integer[Literal[False]] + groupLevel: Typed[GroupLevel, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt, groupLevel: GroupLevel) -> None: ... class FieldUsage(Serialisable): tagname: str - x: Incomplete - def __init__(self, x: Incomplete | None = None) -> None: ... + x: Integer[Literal[False]] + def __init__(self, x: _ConvertibleToInt) -> None: ... -class FieldsUsage(Serialisable): # type: ignore[misc] - count: Incomplete - fieldUsage: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, fieldUsage: Incomplete | None = None) -> None: ... +class FieldsUsage(Serialisable): + count: Integer[Literal[False]] + fieldUsage: Typed[FieldUsage, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt, fieldUsage: FieldUsage | None = None) -> None: ... class CacheHierarchy(Serialisable): tagname: str - uniqueName: Incomplete - caption: Incomplete - measure: Incomplete - set: Incomplete - parentSet: Incomplete - iconSet: Incomplete - attribute: Incomplete - time: Incomplete - keyAttribute: Incomplete - defaultMemberUniqueName: Incomplete - allUniqueName: Incomplete - allCaption: Incomplete - dimensionUniqueName: Incomplete - displayFolder: Incomplete - measureGroup: Incomplete - measures: Incomplete - count: Incomplete - oneField: Incomplete - memberValueDatatype: Incomplete - unbalanced: Incomplete - unbalancedGroup: Incomplete - hidden: Incomplete - fieldsUsage: Incomplete - groupLevels: Incomplete - extLst: Incomplete - __elements__: Incomplete + uniqueName: String[Literal[False]] + caption: String[Literal[True]] + measure: Bool[Literal[False]] + set: Bool[Literal[False]] + parentSet: Integer[Literal[True]] + iconSet: Integer[Literal[False]] + attribute: Bool[Literal[False]] + time: Bool[Literal[False]] + keyAttribute: Bool[Literal[False]] + defaultMemberUniqueName: String[Literal[True]] + allUniqueName: String[Literal[True]] + allCaption: String[Literal[True]] + dimensionUniqueName: String[Literal[True]] + displayFolder: String[Literal[True]] + measureGroup: String[Literal[True]] + measures: Bool[Literal[False]] + count: Integer[Literal[False]] + oneField: Bool[Literal[False]] + memberValueDatatype: Integer[Literal[True]] + unbalanced: Bool[Literal[True]] + unbalancedGroup: Bool[Literal[True]] + hidden: Bool[Literal[False]] + fieldsUsage: Typed[FieldsUsage, Literal[True]] + groupLevels: Typed[GroupLevels, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, uniqueName: str = "", - caption: Incomplete | None = None, - measure: Incomplete | None = None, - set: Incomplete | None = None, - parentSet: Incomplete | None = None, - iconSet: int = 0, - attribute: Incomplete | None = None, - time: Incomplete | None = None, - keyAttribute: Incomplete | None = None, - defaultMemberUniqueName: Incomplete | None = None, - allUniqueName: Incomplete | None = None, - allCaption: Incomplete | None = None, - dimensionUniqueName: Incomplete | None = None, - displayFolder: Incomplete | None = None, - measureGroup: Incomplete | None = None, - measures: Incomplete | None = None, - count: Incomplete | None = None, - oneField: Incomplete | None = None, - memberValueDatatype: Incomplete | None = None, - unbalanced: Incomplete | None = None, - unbalancedGroup: Incomplete | None = None, - hidden: Incomplete | None = None, - fieldsUsage: Incomplete | None = None, - groupLevels: Incomplete | None = None, - extLst: Incomplete | None = None, + caption: str | None = None, + measure: _ConvertibleToBool = None, + set: _ConvertibleToBool = None, + parentSet: _ConvertibleToInt | None = None, + iconSet: _ConvertibleToInt = 0, + attribute: _ConvertibleToBool = None, + time: _ConvertibleToBool = None, + keyAttribute: _ConvertibleToBool = None, + defaultMemberUniqueName: str | None = None, + allUniqueName: str | None = None, + allCaption: str | None = None, + dimensionUniqueName: str | None = None, + displayFolder: str | None = None, + measureGroup: str | None = None, + measures: _ConvertibleToBool = None, + *, + count: _ConvertibleToInt, + oneField: _ConvertibleToBool = None, + memberValueDatatype: _ConvertibleToInt | None = None, + unbalanced: _ConvertibleToBool | None = None, + unbalancedGroup: _ConvertibleToBool | None = None, + hidden: _ConvertibleToBool = None, + fieldsUsage: FieldsUsage | None = None, + groupLevels: GroupLevels | None = None, + extLst: ExtensionList | None = None, + ) -> None: ... + @overload + def __init__( + self, + uniqueName: str, + caption: str | None, + measure: _ConvertibleToBool, + set: _ConvertibleToBool, + parentSet: _ConvertibleToInt | None, + iconSet: _ConvertibleToInt, + attribute: _ConvertibleToBool, + time: _ConvertibleToBool, + keyAttribute: _ConvertibleToBool, + defaultMemberUniqueName: str | None, + allUniqueName: str | None, + allCaption: str | None, + dimensionUniqueName: str | None, + displayFolder: str | None, + measureGroup: str | None, + measures: _ConvertibleToBool, + count: _ConvertibleToInt, + oneField: _ConvertibleToBool = None, + memberValueDatatype: _ConvertibleToInt | None = None, + unbalanced: _ConvertibleToBool | None = None, + unbalancedGroup: _ConvertibleToBool | None = None, + hidden: _ConvertibleToBool = None, + fieldsUsage: FieldsUsage | None = None, + groupLevels: GroupLevels | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class GroupItems(Serialisable): @@ -323,56 +377,56 @@ class GroupItems(Serialisable): e: Incomplete s: Incomplete d: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] def __init__(self, count: Incomplete | None = None, m=(), n=(), b=(), e=(), s=(), d=()) -> None: ... @property def count(self): ... class DiscretePr(Serialisable): tagname: str - count: Incomplete + count: Integer[Literal[False]] x: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, x: Incomplete | None = None) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt, x: Incomplete | None = None) -> None: ... class RangePr(Serialisable): tagname: str - autoStart: Incomplete - autoEnd: Incomplete - groupBy: Incomplete - startNum: Incomplete - endNum: Incomplete - startDate: Incomplete - endDate: Incomplete - groupInterval: Incomplete + autoStart: Bool[Literal[True]] + autoEnd: Bool[Literal[True]] + groupBy: Set[_RangePrGroupBy] + startNum: Float[Literal[True]] + endNum: Float[Literal[True]] + startDate: DateTime[Literal[True]] + endDate: DateTime[Literal[True]] + groupInterval: Float[Literal[True]] def __init__( self, - autoStart: bool = True, - autoEnd: bool = True, - groupBy: str = "range", - startNum: Incomplete | None = None, - endNum: Incomplete | None = None, - startDate: Incomplete | None = None, - endDate: Incomplete | None = None, - groupInterval: int = 1, + autoStart: _ConvertibleToBool | None = True, + autoEnd: _ConvertibleToBool | None = True, + groupBy: _RangePrGroupBy = "range", + startNum: _ConvertibleToFloat | None = None, + endNum: _ConvertibleToFloat | None = None, + startDate: datetime | str | None = None, + endDate: datetime | str | None = None, + groupInterval: _ConvertibleToFloat | None = 1, ) -> None: ... class FieldGroup(Serialisable): tagname: str - par: Incomplete - base: Incomplete - rangePr: Incomplete - discretePr: Incomplete - groupItems: Incomplete - __elements__: Incomplete + par: Integer[Literal[True]] + base: Integer[Literal[True]] + rangePr: Typed[RangePr, Literal[True]] + discretePr: Typed[DiscretePr, Literal[True]] + groupItems: Typed[GroupItems, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - par: Incomplete | None = None, - base: Incomplete | None = None, - rangePr: Incomplete | None = None, - discretePr: Incomplete | None = None, - groupItems: Incomplete | None = None, + par: _ConvertibleToInt | None = None, + base: _ConvertibleToInt | None = None, + rangePr: RangePr | None = None, + discretePr: DiscretePr | None = None, + groupItems: GroupItems | None = None, ) -> None: ... class SharedItems(Serialisable): @@ -383,147 +437,181 @@ class SharedItems(Serialisable): e: Incomplete s: Incomplete d: Incomplete - containsSemiMixedTypes: Incomplete - containsNonDate: Incomplete - containsDate: Incomplete - containsString: Incomplete - containsBlank: Incomplete - containsMixedTypes: Incomplete - containsNumber: Incomplete - containsInteger: Incomplete - minValue: Incomplete - maxValue: Incomplete - minDate: Incomplete - maxDate: Incomplete - longText: Incomplete - __attrs__: Incomplete + containsSemiMixedTypes: Bool[Literal[True]] + containsNonDate: Bool[Literal[True]] + containsDate: Bool[Literal[True]] + containsString: Bool[Literal[True]] + containsBlank: Bool[Literal[True]] + containsMixedTypes: Bool[Literal[True]] + containsNumber: Bool[Literal[True]] + containsInteger: Bool[Literal[True]] + minValue: Float[Literal[True]] + maxValue: Float[Literal[True]] + minDate: DateTime[Literal[True]] + maxDate: DateTime[Literal[True]] + longText: Bool[Literal[True]] + __attrs__: ClassVar[tuple[str, ...]] def __init__( self, _fields=(), - containsSemiMixedTypes: Incomplete | None = None, - containsNonDate: Incomplete | None = None, - containsDate: Incomplete | None = None, - containsString: Incomplete | None = None, - containsBlank: Incomplete | None = None, - containsMixedTypes: Incomplete | None = None, - containsNumber: Incomplete | None = None, - containsInteger: Incomplete | None = None, - minValue: Incomplete | None = None, - maxValue: Incomplete | None = None, - minDate: Incomplete | None = None, - maxDate: Incomplete | None = None, - count: Incomplete | None = None, - longText: Incomplete | None = None, + containsSemiMixedTypes: _ConvertibleToBool | None = None, + containsNonDate: _ConvertibleToBool | None = None, + containsDate: _ConvertibleToBool | None = None, + containsString: _ConvertibleToBool | None = None, + containsBlank: _ConvertibleToBool | None = None, + containsMixedTypes: _ConvertibleToBool | None = None, + containsNumber: _ConvertibleToBool | None = None, + containsInteger: _ConvertibleToBool | None = None, + minValue: _ConvertibleToFloat | None = None, + maxValue: _ConvertibleToFloat | None = None, + minDate: datetime | str | None = None, + maxDate: datetime | str | None = None, + count: Unused = None, + longText: _ConvertibleToBool | None = None, ) -> None: ... @property def count(self): ... class CacheField(Serialisable): tagname: str - sharedItems: Incomplete - fieldGroup: Incomplete + sharedItems: Typed[SharedItems, Literal[True]] + fieldGroup: Typed[FieldGroup, Literal[True]] mpMap: Incomplete - extLst: Incomplete - name: Incomplete - caption: Incomplete - propertyName: Incomplete - serverField: Incomplete - uniqueList: Incomplete - numFmtId: Incomplete - formula: Incomplete - sqlType: Incomplete - hierarchy: Incomplete - level: Incomplete - databaseField: Incomplete - mappingCount: Incomplete - memberPropertyField: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + name: String[Literal[False]] + caption: String[Literal[True]] + propertyName: String[Literal[True]] + serverField: Bool[Literal[True]] + uniqueList: Bool[Literal[True]] + numFmtId: Integer[Literal[True]] + formula: String[Literal[True]] + sqlType: Integer[Literal[True]] + hierarchy: Integer[Literal[True]] + level: Integer[Literal[True]] + databaseField: Bool[Literal[True]] + mappingCount: Integer[Literal[True]] + memberPropertyField: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, - sharedItems: Incomplete | None = None, - fieldGroup: Incomplete | None = None, + sharedItems: SharedItems | None = None, + fieldGroup: FieldGroup | None = None, mpMap: Incomplete | None = None, - extLst: Incomplete | None = None, - name: Incomplete | None = None, - caption: Incomplete | None = None, - propertyName: Incomplete | None = None, - serverField: Incomplete | None = None, - uniqueList: bool = True, - numFmtId: Incomplete | None = None, - formula: Incomplete | None = None, - sqlType: int = 0, - hierarchy: int = 0, - level: int = 0, - databaseField: bool = True, - mappingCount: Incomplete | None = None, - memberPropertyField: Incomplete | None = None, + extLst: ExtensionList | None = None, + *, + name: str, + caption: str | None = None, + propertyName: str | None = None, + serverField: _ConvertibleToBool | None = None, + uniqueList: _ConvertibleToBool | None = True, + numFmtId: _ConvertibleToInt | None = None, + formula: str | None = None, + sqlType: _ConvertibleToInt | None = 0, + hierarchy: _ConvertibleToInt | None = 0, + level: _ConvertibleToInt | None = 0, + databaseField: _ConvertibleToBool | None = True, + mappingCount: _ConvertibleToInt | None = None, + memberPropertyField: _ConvertibleToBool | None = None, + ) -> None: ... + @overload + def __init__( + self, + sharedItems: SharedItems | None, + fieldGroup: FieldGroup | None, + mpMap: Incomplete | None, + extLst: ExtensionList | None, + name: str, + caption: str | None = None, + propertyName: str | None = None, + serverField: _ConvertibleToBool | None = None, + uniqueList: _ConvertibleToBool | None = True, + numFmtId: _ConvertibleToInt | None = None, + formula: str | None = None, + sqlType: _ConvertibleToInt | None = 0, + hierarchy: _ConvertibleToInt | None = 0, + level: _ConvertibleToInt | None = 0, + databaseField: _ConvertibleToBool | None = True, + mappingCount: _ConvertibleToInt | None = None, + memberPropertyField: _ConvertibleToBool | None = None, ) -> None: ... class RangeSet(Serialisable): tagname: str - i1: Incomplete - i2: Incomplete - i3: Incomplete - i4: Incomplete - ref: Incomplete - name: Incomplete - sheet: Incomplete + i1: Integer[Literal[True]] + i2: Integer[Literal[True]] + i3: Integer[Literal[True]] + i4: Integer[Literal[True]] + ref: String[Literal[False]] + name: String[Literal[True]] + sheet: String[Literal[True]] + @overload def __init__( self, - i1: Incomplete | None = None, - i2: Incomplete | None = None, - i3: Incomplete | None = None, - i4: Incomplete | None = None, - ref: Incomplete | None = None, - name: Incomplete | None = None, - sheet: Incomplete | None = None, + i1: _ConvertibleToInt | None = None, + i2: _ConvertibleToInt | None = None, + i3: _ConvertibleToInt | None = None, + i4: _ConvertibleToInt | None = None, + *, + ref: str, + name: str | None = None, + sheet: str | None = None, + ) -> None: ... + @overload + def __init__( + self, + i1: _ConvertibleToInt | None, + i2: _ConvertibleToInt | None, + i3: _ConvertibleToInt | None, + i4: _ConvertibleToInt | None, + ref: str, + name: str | None = None, + sheet: str | None = None, ) -> None: ... class PageItem(Serialisable): tagname: str - name: Incomplete - def __init__(self, name: Incomplete | None = None) -> None: ... + name: String[Literal[False]] + def __init__(self, name: str) -> None: ... class Page(Serialisable): tagname: str pageItem: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, count: Incomplete | None = None, pageItem: Incomplete | None = None) -> None: ... @property def count(self): ... class Consolidation(Serialisable): tagname: str - autoPage: Incomplete + autoPage: Bool[Literal[True]] pages: Incomplete rangeSets: Incomplete - __elements__: Incomplete - def __init__(self, autoPage: Incomplete | None = None, pages=(), rangeSets=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, autoPage: _ConvertibleToBool | None = None, pages=(), rangeSets=()) -> None: ... class WorksheetSource(Serialisable): tagname: str - ref: Incomplete - name: Incomplete - sheet: Incomplete - def __init__( - self, ref: Incomplete | None = None, name: Incomplete | None = None, sheet: Incomplete | None = None - ) -> None: ... + ref: String[Literal[True]] + name: String[Literal[True]] + sheet: String[Literal[True]] + def __init__(self, ref: str | None = None, name: str | None = None, sheet: str | None = None) -> None: ... class CacheSource(Serialisable): tagname: str - type: Incomplete - connectionId: Incomplete - worksheetSource: Incomplete - consolidation: Incomplete - extLst: Incomplete - __elements__: Incomplete + type: Set[_CacheSourceType] + connectionId: Integer[Literal[True]] + worksheetSource: Typed[WorksheetSource, Literal[True]] + consolidation: Typed[Consolidation, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - type: Incomplete | None = None, - connectionId: Incomplete | None = None, - worksheetSource: Incomplete | None = None, - consolidation: Incomplete | None = None, - extLst: Incomplete | None = None, + type: _CacheSourceType, + connectionId: _ConvertibleToInt | None = None, + worksheetSource: WorksheetSource | None = None, + consolidation: Consolidation | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class CacheDefinition(Serialisable): @@ -531,25 +619,25 @@ class CacheDefinition(Serialisable): rel_type: str records: Incomplete tagname: str - invalid: Incomplete - saveData: Incomplete - refreshOnLoad: Incomplete - optimizeMemory: Incomplete - enableRefresh: Incomplete - refreshedBy: Incomplete - refreshedDate: Incomplete - refreshedDateIso: Incomplete - backgroundQuery: Incomplete - missingItemsLimit: Incomplete - createdVersion: Incomplete - refreshedVersion: Incomplete - minRefreshableVersion: Incomplete - recordCount: Incomplete - upgradeOnRefresh: Incomplete - tupleCache: Incomplete - supportSubquery: Incomplete - supportAdvancedDrill: Incomplete - cacheSource: Incomplete + invalid: Bool[Literal[True]] + saveData: Bool[Literal[True]] + refreshOnLoad: Bool[Literal[True]] + optimizeMemory: Bool[Literal[True]] + enableRefresh: Bool[Literal[True]] + refreshedBy: String[Literal[True]] + refreshedDate: Float[Literal[True]] + refreshedDateIso: DateTime[Literal[True]] + backgroundQuery: Bool[Literal[True]] + missingItemsLimit: Integer[Literal[True]] + createdVersion: Integer[Literal[True]] + refreshedVersion: Integer[Literal[True]] + minRefreshableVersion: Integer[Literal[True]] + recordCount: Integer[Literal[True]] + upgradeOnRefresh: Bool[Literal[True]] + tupleCache: Typed[TupleCache, Literal[True]] + supportSubquery: Bool[Literal[True]] + supportAdvancedDrill: Bool[Literal[True]] + cacheSource: Typed[CacheSource, Literal[True]] cacheFields: Incomplete cacheHierarchies: Incomplete kpis: Incomplete @@ -558,30 +646,65 @@ class CacheDefinition(Serialisable): dimensions: Incomplete measureGroups: Incomplete maps: Incomplete - extLst: Incomplete + extLst: Typed[ExtensionList, Literal[True]] id: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] + @overload + def __init__( + self, + invalid: _ConvertibleToBool | None = None, + saveData: _ConvertibleToBool | None = None, + refreshOnLoad: _ConvertibleToBool | None = None, + optimizeMemory: _ConvertibleToBool | None = None, + enableRefresh: _ConvertibleToBool | None = None, + refreshedBy: str | None = None, + refreshedDate: _ConvertibleToFloat | None = None, + refreshedDateIso: datetime | str | None = None, + backgroundQuery: _ConvertibleToBool | None = None, + missingItemsLimit: _ConvertibleToInt | None = None, + createdVersion: _ConvertibleToInt | None = None, + refreshedVersion: _ConvertibleToInt | None = None, + minRefreshableVersion: _ConvertibleToInt | None = None, + recordCount: _ConvertibleToInt | None = None, + upgradeOnRefresh: _ConvertibleToBool | None = None, + tupleCache: TupleCache | None = None, + supportSubquery: _ConvertibleToBool | None = None, + supportAdvancedDrill: _ConvertibleToBool | None = None, + *, + cacheSource: CacheSource, + cacheFields=(), + cacheHierarchies=(), + kpis=(), + calculatedItems=(), + calculatedMembers=(), + dimensions=(), + measureGroups=(), + maps=(), + extLst: ExtensionList | None = None, + id: Incomplete | None = None, + ) -> None: ... + @overload def __init__( self, - invalid: Incomplete | None = None, - saveData: Incomplete | None = None, - refreshOnLoad: Incomplete | None = None, - optimizeMemory: Incomplete | None = None, - enableRefresh: Incomplete | None = None, - refreshedBy: Incomplete | None = None, - refreshedDate: Incomplete | None = None, - refreshedDateIso: Incomplete | None = None, - backgroundQuery: Incomplete | None = None, - missingItemsLimit: Incomplete | None = None, - createdVersion: Incomplete | None = None, - refreshedVersion: Incomplete | None = None, - minRefreshableVersion: Incomplete | None = None, - recordCount: Incomplete | None = None, - upgradeOnRefresh: Incomplete | None = None, - tupleCache: Incomplete | None = None, - supportSubquery: Incomplete | None = None, - supportAdvancedDrill: Incomplete | None = None, - cacheSource: Incomplete | None = None, + invalid: _ConvertibleToBool | None, + saveData: _ConvertibleToBool | None, + refreshOnLoad: _ConvertibleToBool | None, + optimizeMemory: _ConvertibleToBool | None, + enableRefresh: _ConvertibleToBool | None, + refreshedBy: str | None, + refreshedDate: _ConvertibleToFloat | None, + refreshedDateIso: datetime | str | None, + backgroundQuery: _ConvertibleToBool | None, + missingItemsLimit: _ConvertibleToInt | None, + createdVersion: _ConvertibleToInt | None, + refreshedVersion: _ConvertibleToInt | None, + minRefreshableVersion: _ConvertibleToInt | None, + recordCount: _ConvertibleToInt | None, + upgradeOnRefresh: _ConvertibleToBool | None, + tupleCache: TupleCache | None, + supportSubquery: _ConvertibleToBool | None, + supportAdvancedDrill: _ConvertibleToBool | None, + cacheSource: CacheSource, cacheFields=(), cacheHierarchies=(), kpis=(), @@ -590,7 +713,7 @@ class CacheDefinition(Serialisable): dimensions=(), measureGroups=(), maps=(), - extLst: Incomplete | None = None, + extLst: ExtensionList | None = None, id: Incomplete | None = None, ) -> None: ... def to_tree(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi index 1bcb29a97..536929917 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi @@ -1,192 +1,253 @@ from _typeshed import Incomplete +from datetime import datetime +from typing import ClassVar, overload +from typing_extensions import Literal +from openpyxl.descriptors.base import ( + Bool, + DateTime, + Float, + Integer, + String, + Typed, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) from openpyxl.descriptors.serialisable import Serialisable class Index(Serialisable): tagname: str - v: Incomplete - def __init__(self, v: int = 0) -> None: ... + v: Integer[Literal[True]] + def __init__(self, v: _ConvertibleToInt | None = 0) -> None: ... -class Tuple(Serialisable): # type: ignore[misc] - fld: Incomplete - hier: Incomplete - item: Incomplete - def __init__(self, fld: Incomplete | None = None, hier: Incomplete | None = None, item: Incomplete | None = None) -> None: ... +class Tuple(Serialisable): + fld: Integer[Literal[False]] + hier: Integer[Literal[False]] + item: Integer[Literal[False]] + def __init__(self, fld: _ConvertibleToInt, hier: _ConvertibleToInt, item: _ConvertibleToInt) -> None: ... -class TupleList(Serialisable): # type: ignore[misc] - c: Incomplete - tpl: Incomplete - __elements__: Incomplete - def __init__(self, c: Incomplete | None = None, tpl: Incomplete | None = None) -> None: ... +class TupleList(Serialisable): + c: Integer[Literal[True]] + tpl: Typed[Tuple, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + @overload + def __init__(self, c: _ConvertibleToInt | None = None, *, tpl: Tuple) -> None: ... + @overload + def __init__(self, c: _ConvertibleToInt | None, tpl: Tuple) -> None: ... class Missing(Serialisable): tagname: str tpls: Incomplete x: Incomplete - u: Incomplete - f: Incomplete - c: Incomplete - cp: Incomplete + u: Bool[Literal[True]] + f: Bool[Literal[True]] + c: String[Literal[True]] + cp: Integer[Literal[True]] + _in: Integer[Literal[True]] # Not private. Avoids name clash bc: Incomplete fc: Incomplete - i: Incomplete - un: Incomplete - st: Incomplete - b: Incomplete - __elements__: Incomplete + i: Bool[Literal[True]] + un: Bool[Literal[True]] + st: Bool[Literal[True]] + b: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, tpls=(), x=(), - u: Incomplete | None = None, - f: Incomplete | None = None, - c: Incomplete | None = None, - cp: Incomplete | None = None, - _in: Incomplete | None = None, + u: _ConvertibleToBool | None = None, + f: _ConvertibleToBool | None = None, + c: str | None = None, + cp: _ConvertibleToInt | None = None, + _in: _ConvertibleToInt | None = None, bc: Incomplete | None = None, fc: Incomplete | None = None, - i: Incomplete | None = None, - un: Incomplete | None = None, - st: Incomplete | None = None, - b: Incomplete | None = None, + i: _ConvertibleToBool | None = None, + un: _ConvertibleToBool | None = None, + st: _ConvertibleToBool | None = None, + b: _ConvertibleToBool | None = None, ) -> None: ... class Number(Serialisable): tagname: str tpls: Incomplete x: Incomplete - v: Incomplete - u: Incomplete - f: Incomplete - c: Incomplete - cp: Incomplete + v: Float[Literal[False]] + u: Bool[Literal[True]] + f: Bool[Literal[True]] + c: String[Literal[True]] + cp: Integer[Literal[True]] + _in: Integer[Literal[True]] # Not private. Avoids name clash bc: Incomplete fc: Incomplete - i: Incomplete - un: Incomplete - st: Incomplete - b: Incomplete - __elements__: Incomplete + i: Bool[Literal[True]] + un: Bool[Literal[True]] + st: Bool[Literal[True]] + b: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, tpls=(), x=(), - v: Incomplete | None = None, - u: Incomplete | None = None, - f: Incomplete | None = None, - c: Incomplete | None = None, - cp: Incomplete | None = None, - _in: Incomplete | None = None, + *, + v: _ConvertibleToFloat, + u: _ConvertibleToBool | None = None, + f: _ConvertibleToBool | None = None, + c: str | None = None, + cp: _ConvertibleToInt | None = None, + _in: _ConvertibleToInt | None = None, + bc: Incomplete | None = None, + fc: Incomplete | None = None, + i: _ConvertibleToBool | None = None, + un: _ConvertibleToBool | None = None, + st: _ConvertibleToBool | None = None, + b: _ConvertibleToBool | None = None, + ) -> None: ... + @overload + def __init__( + self, + tpls, + x, + v: _ConvertibleToFloat, + u: _ConvertibleToBool | None = None, + f: _ConvertibleToBool | None = None, + c: str | None = None, + cp: _ConvertibleToInt | None = None, + _in: _ConvertibleToInt | None = None, bc: Incomplete | None = None, fc: Incomplete | None = None, - i: Incomplete | None = None, - un: Incomplete | None = None, - st: Incomplete | None = None, - b: Incomplete | None = None, + i: _ConvertibleToBool | None = None, + un: _ConvertibleToBool | None = None, + st: _ConvertibleToBool | None = None, + b: _ConvertibleToBool | None = None, ) -> None: ... class Error(Serialisable): tagname: str - tpls: Incomplete + tpls: Typed[TupleList, Literal[True]] x: Incomplete - v: Incomplete - u: Incomplete - f: Incomplete - c: Incomplete - cp: Incomplete + v: String[Literal[False]] + u: Bool[Literal[True]] + f: Bool[Literal[True]] + c: String[Literal[True]] + cp: Integer[Literal[True]] + _in: Integer[Literal[True]] # Not private. Avoids name clash bc: Incomplete fc: Incomplete - i: Incomplete - un: Incomplete - st: Incomplete - b: Incomplete - __elements__: Incomplete + i: Bool[Literal[True]] + un: Bool[Literal[True]] + st: Bool[Literal[True]] + b: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, - tpls: Incomplete | None = None, + tpls: TupleList | None = None, x=(), - v: Incomplete | None = None, - u: Incomplete | None = None, - f: Incomplete | None = None, - c: Incomplete | None = None, - cp: Incomplete | None = None, - _in: Incomplete | None = None, + *, + v: str, + u: _ConvertibleToBool | None = None, + f: _ConvertibleToBool | None = None, + c: str | None = None, + cp: _ConvertibleToInt | None = None, + _in: _ConvertibleToInt | None = None, + bc: Incomplete | None = None, + fc: Incomplete | None = None, + i: _ConvertibleToBool | None = None, + un: _ConvertibleToBool | None = None, + st: _ConvertibleToBool | None = None, + b: _ConvertibleToBool | None = None, + ) -> None: ... + @overload + def __init__( + self, + tpls: TupleList | None, + x, + v: str, + u: _ConvertibleToBool | None = None, + f: _ConvertibleToBool | None = None, + c: str | None = None, + cp: _ConvertibleToInt | None = None, + _in: _ConvertibleToInt | None = None, bc: Incomplete | None = None, fc: Incomplete | None = None, - i: Incomplete | None = None, - un: Incomplete | None = None, - st: Incomplete | None = None, - b: Incomplete | None = None, + i: _ConvertibleToBool | None = None, + un: _ConvertibleToBool | None = None, + st: _ConvertibleToBool | None = None, + b: _ConvertibleToBool | None = None, ) -> None: ... class Boolean(Serialisable): tagname: str x: Incomplete - v: Incomplete - u: Incomplete - f: Incomplete - c: Incomplete - cp: Incomplete - __elements__: Incomplete + v: Bool[Literal[False]] + u: Bool[Literal[True]] + f: Bool[Literal[True]] + c: String[Literal[True]] + cp: Integer[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, x=(), - v: Incomplete | None = None, - u: Incomplete | None = None, - f: Incomplete | None = None, - c: Incomplete | None = None, - cp: Incomplete | None = None, + v: _ConvertibleToBool = None, + u: _ConvertibleToBool | None = None, + f: _ConvertibleToBool | None = None, + c: str | None = None, + cp: _ConvertibleToInt | None = None, ) -> None: ... class Text(Serialisable): tagname: str tpls: Incomplete x: Incomplete - v: Incomplete - u: Incomplete - f: Incomplete - c: Incomplete - cp: Incomplete + v: String[Literal[False]] + u: Bool[Literal[True]] + f: Bool[Literal[True]] + c: String[Literal[True]] + cp: Integer[Literal[True]] + _in: Integer[Literal[True]] # Not private. Avoids name clash bc: Incomplete fc: Incomplete - i: Incomplete - un: Incomplete - st: Incomplete - b: Incomplete - __elements__: Incomplete + i: Bool[Literal[True]] + un: Bool[Literal[True]] + st: Bool[Literal[True]] + b: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, tpls=(), x=(), v: Incomplete | None = None, - u: Incomplete | None = None, - f: Incomplete | None = None, + u: _ConvertibleToBool | None = None, + f: _ConvertibleToBool | None = None, c: Incomplete | None = None, - cp: Incomplete | None = None, - _in: Incomplete | None = None, + cp: _ConvertibleToInt | None = None, + _in: _ConvertibleToInt | None = None, bc: Incomplete | None = None, fc: Incomplete | None = None, - i: Incomplete | None = None, - un: Incomplete | None = None, - st: Incomplete | None = None, - b: Incomplete | None = None, + i: _ConvertibleToBool | None = None, + un: _ConvertibleToBool | None = None, + st: _ConvertibleToBool | None = None, + b: _ConvertibleToBool | None = None, ) -> None: ... class DateTimeField(Serialisable): tagname: str x: Incomplete - v: Incomplete - u: Incomplete - f: Incomplete - c: Incomplete - cp: Incomplete - __elements__: Incomplete + v: DateTime[Literal[False]] + u: Bool[Literal[True]] + f: Bool[Literal[True]] + c: String[Literal[True]] + cp: Integer[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, x=(), - v: Incomplete | None = None, - u: Incomplete | None = None, - f: Incomplete | None = None, - c: Incomplete | None = None, - cp: Incomplete | None = None, + v: datetime | str | None = None, + u: _ConvertibleToBool | None = None, + f: _ConvertibleToBool | None = None, + c: str | None = None, + cp: _ConvertibleToInt | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi index 90411cb66..cc3cb4979 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi @@ -1,5 +1,9 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class Record(Serialisable): @@ -28,10 +32,10 @@ class RecordList(Serialisable): rel_type: str tagname: str r: Incomplete - extLst: Incomplete - __elements__: Incomplete - __attrs__: Incomplete - def __init__(self, count: Incomplete | None = None, r=(), extLst: Incomplete | None = None) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] + def __init__(self, count: Unused = None, r=(), extLst: ExtensionList | None = None) -> None: ... @property def count(self): ... def to_tree(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi index 2bca0d309..d3d10f626 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi @@ -1,17 +1,120 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, Integer, NoneSet, Set, String, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.worksheet.filters import AutoFilter + +_PivotAreaType: TypeAlias = Literal["normal", "data", "all", "origin", "button", "topEnd", "topRight"] +_PivotAxis: TypeAlias = Literal["axisRow", "axisCol", "axisPage", "axisValues"] +_ConditionalFormatType: TypeAlias = Literal["all", "row", "column"] +_FormatAction: TypeAlias = Literal["blank", "formatting", "drill", "formula"] +_PivotFilterType: TypeAlias = Literal[ + "unknown", + "count", + "percent", + "sum", + "captionEqual", + "captionNotEqual", + "captionBeginsWith", + "captionNotBeginsWith", + "captionEndsWith", + "captionNotEndsWith", + "captionContains", + "captionNotContains", + "captionGreaterThan", + "captionGreaterThanOrEqual", + "captionLessThan", + "captionLessThanOrEqual", + "captionBetween", + "captionNotBetween", + "valueEqual", + "valueNotEqual", + "valueGreaterThan", + "valueGreaterThanOrEqual", + "valueLessThan", + "valueLessThanOrEqual", + "valueBetween", + "valueNotBetween", + "dateEqual", + "dateNotEqual", + "dateOlderThan", + "dateOlderThanOrEqual", + "dateNewerThan", + "dateNewerThanOrEqual", + "dateBetween", + "dateNotBetween", + "tomorrow", + "today", + "yesterday", + "nextWeek", + "thisWeek", + "lastWeek", + "nextMonth", + "thisMonth", + "lastMonth", + "nextQuarter", + "thisQuarter", + "lastQuarter", + "nextYear", + "thisYear", + "lastYear", + "yearToDate", + "Q1", + "Q2", + "Q3", + "Q4", + "M1", + "M2", + "M3", + "M4", + "M5", + "M6", + "M7", + "M8", + "M9", + "M10", + "M11", + "M12", +] +_ConditionalFormatScope: TypeAlias = Literal["selection", "data", "field"] +_DataFieldSubtotal: TypeAlias = Literal[ + "average", "count", "countNums", "max", "min", "product", "stdDev", "stdDevp", "sum", "var", "varp" +] +_DataFieldShowDataAs: TypeAlias = Literal[ + "normal", "difference", "percent", "percentDiff", "runTotal", "percentOfRow", "percentOfCol", "percentOfTotal", "index" +] +_ItemType: TypeAlias = Literal[ + "data", + "default", + "sum", + "countA", + "avg", + "max", + "min", + "product", + "count", + "stdDev", + "stdDevP", + "var", + "varP", + "grand", + "blank", +] +_PivotFieldSortType: TypeAlias = Literal["manual", "ascending", "descending"] class HierarchyUsage(Serialisable): tagname: str - hierarchyUsage: Incomplete - def __init__(self, hierarchyUsage: Incomplete | None = None) -> None: ... + hierarchyUsage: Integer[Literal[False]] + def __init__(self, hierarchyUsage: _ConvertibleToInt) -> None: ... class ColHierarchiesUsage(Serialisable): tagname: str colHierarchyUsage: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] def __init__(self, count: Incomplete | None = None, colHierarchyUsage=()) -> None: ... @property def count(self): ... @@ -19,179 +122,213 @@ class ColHierarchiesUsage(Serialisable): class RowHierarchiesUsage(Serialisable): tagname: str rowHierarchyUsage: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] def __init__(self, count: Incomplete | None = None, rowHierarchyUsage=()) -> None: ... @property def count(self): ... class PivotFilter(Serialisable): tagname: str - fld: Incomplete - mpFld: Incomplete - type: Incomplete - evalOrder: Incomplete - id: Incomplete - iMeasureHier: Incomplete - iMeasureFld: Incomplete - name: Incomplete - description: Incomplete - stringValue1: Incomplete - stringValue2: Incomplete - autoFilter: Incomplete - extLst: Incomplete - __elements__: Incomplete + fld: Integer[Literal[False]] + mpFld: Integer[Literal[True]] + type: Set[_PivotFilterType] + evalOrder: Integer[Literal[True]] + id: Integer[Literal[False]] + iMeasureHier: Integer[Literal[True]] + iMeasureFld: Integer[Literal[True]] + name: String[Literal[True]] + description: String[Literal[True]] + stringValue1: String[Literal[True]] + stringValue2: String[Literal[True]] + autoFilter: Typed[AutoFilter, Literal[False]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, - fld: Incomplete | None = None, - mpFld: Incomplete | None = None, - type: Incomplete | None = None, - evalOrder: Incomplete | None = None, - id: Incomplete | None = None, - iMeasureHier: Incomplete | None = None, - iMeasureFld: Incomplete | None = None, - name: Incomplete | None = None, - description: Incomplete | None = None, - stringValue1: Incomplete | None = None, - stringValue2: Incomplete | None = None, - autoFilter: Incomplete | None = None, - extLst: Incomplete | None = None, + fld: _ConvertibleToInt, + mpFld: _ConvertibleToInt | None = None, + *, + type: _PivotFilterType, + evalOrder: _ConvertibleToInt | None = None, + id: _ConvertibleToInt, + iMeasureHier: _ConvertibleToInt | None = None, + iMeasureFld: _ConvertibleToInt | None = None, + name: str | None = None, + description: str | None = None, + stringValue1: str | None = None, + stringValue2: str | None = None, + autoFilter: AutoFilter, + extLst: ExtensionList | None = None, + ) -> None: ... + @overload + def __init__( + self, + fld: _ConvertibleToInt, + mpFld: _ConvertibleToInt | None, + type: _PivotFilterType, + evalOrder: _ConvertibleToInt | None, + id: _ConvertibleToInt, + iMeasureHier: _ConvertibleToInt | None, + iMeasureFld: _ConvertibleToInt | None, + name: str | None, + description: str | None, + stringValue1: str | None, + stringValue2: str | None, + autoFilter: AutoFilter, + extLst: ExtensionList | None = None, ) -> None: ... -class PivotFilters(Serialisable): # type: ignore[misc] - count: Incomplete - filter: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, filter: Incomplete | None = None) -> None: ... +class PivotFilters(Serialisable): + count: Integer[Literal[False]] + filter: Typed[PivotFilter, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: _ConvertibleToInt, filter: PivotFilter | None = None) -> None: ... class PivotTableStyle(Serialisable): tagname: str - name: Incomplete - showRowHeaders: Incomplete - showColHeaders: Incomplete - showRowStripes: Incomplete - showColStripes: Incomplete - showLastColumn: Incomplete + name: String[Literal[True]] + showRowHeaders: Bool[Literal[False]] + showColHeaders: Bool[Literal[False]] + showRowStripes: Bool[Literal[False]] + showColStripes: Bool[Literal[False]] + showLastColumn: Bool[Literal[False]] def __init__( self, - name: Incomplete | None = None, - showRowHeaders: Incomplete | None = None, - showColHeaders: Incomplete | None = None, - showRowStripes: Incomplete | None = None, - showColStripes: Incomplete | None = None, - showLastColumn: Incomplete | None = None, + name: str | None = None, + showRowHeaders: _ConvertibleToBool = None, + showColHeaders: _ConvertibleToBool = None, + showRowStripes: _ConvertibleToBool = None, + showColStripes: _ConvertibleToBool = None, + showLastColumn: _ConvertibleToBool = None, ) -> None: ... class MemberList(Serialisable): tagname: str - level: Incomplete + level: Integer[Literal[True]] member: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, level: Incomplete | None = None, member=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: Incomplete | None = None, level: _ConvertibleToInt | None = None, member=()) -> None: ... @property def count(self): ... class MemberProperty(Serialisable): tagname: str - name: Incomplete - showCell: Incomplete - showTip: Incomplete - showAsCaption: Incomplete - nameLen: Incomplete - pPos: Incomplete - pLen: Incomplete - level: Incomplete - field: Incomplete + name: String[Literal[True]] + showCell: Bool[Literal[True]] + showTip: Bool[Literal[True]] + showAsCaption: Bool[Literal[True]] + nameLen: Integer[Literal[True]] + pPos: Integer[Literal[True]] + pLen: Integer[Literal[True]] + level: Integer[Literal[True]] + field: Integer[Literal[False]] + @overload def __init__( self, - name: Incomplete | None = None, - showCell: Incomplete | None = None, - showTip: Incomplete | None = None, - showAsCaption: Incomplete | None = None, - nameLen: Incomplete | None = None, - pPos: Incomplete | None = None, - pLen: Incomplete | None = None, - level: Incomplete | None = None, - field: Incomplete | None = None, + name: str | None = None, + showCell: _ConvertibleToBool | None = None, + showTip: _ConvertibleToBool | None = None, + showAsCaption: _ConvertibleToBool | None = None, + nameLen: _ConvertibleToInt | None = None, + pPos: _ConvertibleToInt | None = None, + pLen: _ConvertibleToInt | None = None, + level: _ConvertibleToInt | None = None, + *, + field: _ConvertibleToInt, + ) -> None: ... + @overload + def __init__( + self, + name: str | None, + showCell: _ConvertibleToBool | None, + showTip: _ConvertibleToBool | None, + showAsCaption: _ConvertibleToBool | None, + nameLen: _ConvertibleToInt | None, + pPos: _ConvertibleToInt | None, + pLen: _ConvertibleToInt | None, + level: _ConvertibleToInt | None, + field: _ConvertibleToInt, ) -> None: ... class PivotHierarchy(Serialisable): tagname: str - outline: Incomplete - multipleItemSelectionAllowed: Incomplete - subtotalTop: Incomplete - showInFieldList: Incomplete - dragToRow: Incomplete - dragToCol: Incomplete - dragToPage: Incomplete - dragToData: Incomplete - dragOff: Incomplete - includeNewItemsInFilter: Incomplete - caption: Incomplete + outline: Bool[Literal[False]] + multipleItemSelectionAllowed: Bool[Literal[False]] + subtotalTop: Bool[Literal[False]] + showInFieldList: Bool[Literal[False]] + dragToRow: Bool[Literal[False]] + dragToCol: Bool[Literal[False]] + dragToPage: Bool[Literal[False]] + dragToData: Bool[Literal[False]] + dragOff: Bool[Literal[False]] + includeNewItemsInFilter: Bool[Literal[False]] + caption: String[Literal[True]] mps: Incomplete - members: Incomplete - extLst: Incomplete - __elements__: Incomplete + members: Typed[MemberList, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - outline: Incomplete | None = None, - multipleItemSelectionAllowed: Incomplete | None = None, - subtotalTop: Incomplete | None = None, - showInFieldList: Incomplete | None = None, - dragToRow: Incomplete | None = None, - dragToCol: Incomplete | None = None, - dragToPage: Incomplete | None = None, - dragToData: Incomplete | None = None, - dragOff: Incomplete | None = None, - includeNewItemsInFilter: Incomplete | None = None, - caption: Incomplete | None = None, + outline: _ConvertibleToBool = None, + multipleItemSelectionAllowed: _ConvertibleToBool = None, + subtotalTop: _ConvertibleToBool = None, + showInFieldList: _ConvertibleToBool = None, + dragToRow: _ConvertibleToBool = None, + dragToCol: _ConvertibleToBool = None, + dragToPage: _ConvertibleToBool = None, + dragToData: _ConvertibleToBool = None, + dragOff: _ConvertibleToBool = None, + includeNewItemsInFilter: _ConvertibleToBool = None, + caption: str | None = None, mps=(), - members: Incomplete | None = None, - extLst: Incomplete | None = None, + members: MemberList | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class Reference(Serialisable): tagname: str - field: Incomplete - selected: Incomplete - byPosition: Incomplete - relative: Incomplete - defaultSubtotal: Incomplete - sumSubtotal: Incomplete - countASubtotal: Incomplete - avgSubtotal: Incomplete - maxSubtotal: Incomplete - minSubtotal: Incomplete - productSubtotal: Incomplete - countSubtotal: Incomplete - stdDevSubtotal: Incomplete - stdDevPSubtotal: Incomplete - varSubtotal: Incomplete - varPSubtotal: Incomplete + field: Integer[Literal[True]] + selected: Bool[Literal[True]] + byPosition: Bool[Literal[True]] + relative: Bool[Literal[True]] + defaultSubtotal: Bool[Literal[True]] + sumSubtotal: Bool[Literal[True]] + countASubtotal: Bool[Literal[True]] + avgSubtotal: Bool[Literal[True]] + maxSubtotal: Bool[Literal[True]] + minSubtotal: Bool[Literal[True]] + productSubtotal: Bool[Literal[True]] + countSubtotal: Bool[Literal[True]] + stdDevSubtotal: Bool[Literal[True]] + stdDevPSubtotal: Bool[Literal[True]] + varSubtotal: Bool[Literal[True]] + varPSubtotal: Bool[Literal[True]] x: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - field: Incomplete | None = None, - count: Incomplete | None = None, - selected: Incomplete | None = None, - byPosition: Incomplete | None = None, - relative: Incomplete | None = None, - defaultSubtotal: Incomplete | None = None, - sumSubtotal: Incomplete | None = None, - countASubtotal: Incomplete | None = None, - avgSubtotal: Incomplete | None = None, - maxSubtotal: Incomplete | None = None, - minSubtotal: Incomplete | None = None, - productSubtotal: Incomplete | None = None, - countSubtotal: Incomplete | None = None, - stdDevSubtotal: Incomplete | None = None, - stdDevPSubtotal: Incomplete | None = None, - varSubtotal: Incomplete | None = None, - varPSubtotal: Incomplete | None = None, + field: _ConvertibleToInt | None = None, + count: Unused = None, + selected: _ConvertibleToBool | None = None, + byPosition: _ConvertibleToBool | None = None, + relative: _ConvertibleToBool | None = None, + defaultSubtotal: _ConvertibleToBool | None = None, + sumSubtotal: _ConvertibleToBool | None = None, + countASubtotal: _ConvertibleToBool | None = None, + avgSubtotal: _ConvertibleToBool | None = None, + maxSubtotal: _ConvertibleToBool | None = None, + minSubtotal: _ConvertibleToBool | None = None, + productSubtotal: _ConvertibleToBool | None = None, + countSubtotal: _ConvertibleToBool | None = None, + stdDevSubtotal: _ConvertibleToBool | None = None, + stdDevPSubtotal: _ConvertibleToBool | None = None, + varSubtotal: _ConvertibleToBool | None = None, + varPSubtotal: _ConvertibleToBool | None = None, x: Incomplete | None = (), - extLst: Incomplete | None = None, + extLst: ExtensionList | None = None, ) -> None: ... @property def count(self): ... @@ -199,299 +336,345 @@ class Reference(Serialisable): class PivotArea(Serialisable): tagname: str references: Incomplete - extLst: Incomplete - field: Incomplete - type: Incomplete - dataOnly: Incomplete - labelOnly: Incomplete - grandRow: Incomplete - grandCol: Incomplete - cacheIndex: Incomplete - outline: Incomplete - offset: Incomplete - collapsedLevelsAreSubtotals: Incomplete - axis: Incomplete - fieldPosition: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + field: Integer[Literal[True]] + type: NoneSet[_PivotAreaType] + dataOnly: Bool[Literal[True]] + labelOnly: Bool[Literal[True]] + grandRow: Bool[Literal[True]] + grandCol: Bool[Literal[True]] + cacheIndex: Bool[Literal[True]] + outline: Bool[Literal[True]] + offset: String[Literal[True]] + collapsedLevelsAreSubtotals: Bool[Literal[True]] + axis: NoneSet[_PivotAxis] + fieldPosition: Integer[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, references=(), - extLst: Incomplete | None = None, - field: Incomplete | None = None, - type: str = "normal", - dataOnly: bool = True, - labelOnly: Incomplete | None = None, - grandRow: Incomplete | None = None, - grandCol: Incomplete | None = None, - cacheIndex: Incomplete | None = None, - outline: bool = True, - offset: Incomplete | None = None, - collapsedLevelsAreSubtotals: Incomplete | None = None, - axis: Incomplete | None = None, - fieldPosition: Incomplete | None = None, + extLst: ExtensionList | None = None, + field: _ConvertibleToInt | None = None, + type: _PivotAreaType | Literal["none"] | None = "normal", + dataOnly: _ConvertibleToBool | None = True, + labelOnly: _ConvertibleToBool | None = None, + grandRow: _ConvertibleToBool | None = None, + grandCol: _ConvertibleToBool | None = None, + cacheIndex: _ConvertibleToBool | None = None, + outline: _ConvertibleToBool | None = True, + offset: str | None = None, + collapsedLevelsAreSubtotals: _ConvertibleToBool | None = None, + axis: _PivotAxis | Literal["none"] | None = None, + fieldPosition: _ConvertibleToInt | None = None, ) -> None: ... class ChartFormat(Serialisable): tagname: str - chart: Incomplete - format: Incomplete - series: Incomplete - pivotArea: Incomplete - __elements__: Incomplete + chart: Integer[Literal[False]] + format: Integer[Literal[False]] + series: Bool[Literal[False]] + pivotArea: Typed[PivotArea, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( - self, - chart: Incomplete | None = None, - format: Incomplete | None = None, - series: Incomplete | None = None, - pivotArea: Incomplete | None = None, + self, chart: _ConvertibleToInt, format: _ConvertibleToInt, series: _ConvertibleToBool = None, *, pivotArea: PivotArea + ) -> None: ... + @overload + def __init__( + self, chart: _ConvertibleToInt, format: _ConvertibleToInt, series: _ConvertibleToBool, pivotArea: PivotArea ) -> None: ... class ConditionalFormat(Serialisable): tagname: str - scope: Incomplete - type: Incomplete - priority: Incomplete + scope: Set[_ConditionalFormatScope] + type: NoneSet[_ConditionalFormatType] + priority: Integer[Literal[False]] pivotAreas: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, - scope: Incomplete | None = "selection", - type: Incomplete | None = None, - priority: Incomplete | None = None, + scope: _ConditionalFormatScope = "selection", + type: _ConditionalFormatType | Literal["none"] | None = None, + *, + priority: _ConvertibleToInt, pivotAreas=(), - extLst: Incomplete | None = None, + extLst: ExtensionList | None = None, + ) -> None: ... + @overload + def __init__( + self, + scope: _ConditionalFormatScope, + type: _ConditionalFormatType | Literal["none"] | None, + priority: _ConvertibleToInt, + pivotAreas=(), + extLst: ExtensionList | None = None, ) -> None: ... +class ConditionalFormatList(Serialisable): + tagname: str + conditionalFormat: Incomplete + __attrs__: ClassVar[tuple[str, ...]] + def __init__(self, conditionalFormat=..., count: Incomplete | None = ...) -> None: ... + def by_priority(self): ... + @property + def count(self): ... + def to_tree(self, tagname: Incomplete | None = ...): ... # type: ignore[override] + class Format(Serialisable): tagname: str - action: Incomplete - dxfId: Incomplete - pivotArea: Incomplete - extLst: Incomplete - __elements__: Incomplete + action: NoneSet[_FormatAction] + dxfId: Integer[Literal[True]] + pivotArea: Typed[PivotArea, Literal[False]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload + def __init__( + self, + action: _FormatAction | Literal["none"] | None = "formatting", + dxfId: _ConvertibleToInt | None = None, + *, + pivotArea: PivotArea, + extLst: ExtensionList | None = None, + ) -> None: ... + @overload def __init__( self, - action: str = "formatting", - dxfId: Incomplete | None = None, - pivotArea: Incomplete | None = None, - extLst: Incomplete | None = None, + action: _FormatAction | Literal["none"] | None, + dxfId: _ConvertibleToInt | None, + pivotArea: PivotArea, + extLst: ExtensionList | None = None, ) -> None: ... class DataField(Serialisable): tagname: str - name: Incomplete - fld: Incomplete - subtotal: Incomplete - showDataAs: Incomplete - baseField: Incomplete - baseItem: Incomplete - numFmtId: Incomplete - extLst: Incomplete - __elements__: Incomplete + name: String[Literal[True]] + fld: Integer[Literal[False]] + subtotal: Set[_DataFieldSubtotal] + showDataAs: Set[_DataFieldShowDataAs] + baseField: Integer[Literal[False]] + baseItem: Integer[Literal[False]] + numFmtId: Integer[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, - name: Incomplete | None = None, - fld: Incomplete | None = None, + name: str | None = None, + *, + fld: _ConvertibleToInt, subtotal: str = "sum", showDataAs: str = "normal", - baseField: int = -1, - baseItem: int = 1048832, - numFmtId: Incomplete | None = None, - extLst: Incomplete | None = None, + baseField: _ConvertibleToInt = -1, + baseItem: _ConvertibleToInt = 1048832, + numFmtId: _ConvertibleToInt | None = None, + extLst: ExtensionList | None = None, + ) -> None: ... + @overload + def __init__( + self, + name: str | None, + fld: _ConvertibleToInt, + subtotal: str = "sum", + showDataAs: str = "normal", + baseField: _ConvertibleToInt = -1, + baseItem: _ConvertibleToInt = 1048832, + numFmtId: _ConvertibleToInt | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class PageField(Serialisable): tagname: str - fld: Incomplete - item: Incomplete - hier: Incomplete - name: Incomplete - cap: Incomplete - extLst: Incomplete - __elements__: Incomplete + fld: Integer[Literal[False]] + item: Integer[Literal[True]] + hier: Integer[Literal[True]] + name: String[Literal[True]] + cap: String[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - fld: Incomplete | None = None, - item: Incomplete | None = None, - hier: Incomplete | None = None, - name: Incomplete | None = None, - cap: Incomplete | None = None, - extLst: Incomplete | None = None, + fld: _ConvertibleToInt, + item: _ConvertibleToInt | None = None, + hier: _ConvertibleToInt | None = None, + name: str | None = None, + cap: str | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class RowColItem(Serialisable): tagname: str - t: Incomplete - r: Incomplete - i: Incomplete + t: Set[_ItemType] + r: Integer[Literal[False]] + i: Integer[Literal[False]] x: Incomplete - __elements__: Incomplete - def __init__(self, t: str = "data", r: int = 0, i: int = 0, x=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, t: _ItemType = "data", r: _ConvertibleToInt = 0, i: _ConvertibleToInt = 0, x=()) -> None: ... class RowColField(Serialisable): tagname: str - x: Incomplete - def __init__(self, x: Incomplete | None = None) -> None: ... + x: Integer[Literal[False]] + def __init__(self, x: _ConvertibleToInt) -> None: ... -class AutoSortScope(Serialisable): # type: ignore[misc] - pivotArea: Incomplete - __elements__: Incomplete - def __init__(self, pivotArea: Incomplete | None = None) -> None: ... +class AutoSortScope(Serialisable): + pivotArea: Typed[PivotArea, Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, pivotArea: PivotArea) -> None: ... class FieldItem(Serialisable): tagname: str - n: Incomplete - t: Incomplete - h: Incomplete - s: Incomplete - sd: Incomplete - f: Incomplete - m: Incomplete - c: Incomplete - x: Incomplete - d: Incomplete - e: Incomplete + n: String[Literal[True]] + t: Set[_ItemType] + h: Bool[Literal[True]] + s: Bool[Literal[True]] + sd: Bool[Literal[True]] + f: Bool[Literal[True]] + m: Bool[Literal[True]] + c: Bool[Literal[True]] + x: Integer[Literal[True]] + d: Bool[Literal[True]] + e: Bool[Literal[True]] def __init__( self, - n: Incomplete | None = None, - t: str = "data", - h: Incomplete | None = None, - s: Incomplete | None = None, - sd: bool = True, - f: Incomplete | None = None, - m: Incomplete | None = None, - c: Incomplete | None = None, - x: Incomplete | None = None, - d: Incomplete | None = None, - e: Incomplete | None = None, + n: str | None = None, + t: _ItemType = "data", + h: _ConvertibleToBool | None = None, + s: _ConvertibleToBool | None = None, + sd: _ConvertibleToBool | None = True, + f: _ConvertibleToBool | None = None, + m: _ConvertibleToBool | None = None, + c: _ConvertibleToBool | None = None, + x: _ConvertibleToInt | None = None, + d: _ConvertibleToBool | None = None, + e: _ConvertibleToBool | None = None, ) -> None: ... class PivotField(Serialisable): tagname: str items: Incomplete - autoSortScope: Incomplete - extLst: Incomplete - name: Incomplete - axis: Incomplete - dataField: Incomplete - subtotalCaption: Incomplete - showDropDowns: Incomplete - hiddenLevel: Incomplete - uniqueMemberProperty: Incomplete - compact: Incomplete - allDrilled: Incomplete - numFmtId: Incomplete - outline: Incomplete - subtotalTop: Incomplete - dragToRow: Incomplete - dragToCol: Incomplete - multipleItemSelectionAllowed: Incomplete - dragToPage: Incomplete - dragToData: Incomplete - dragOff: Incomplete - showAll: Incomplete - insertBlankRow: Incomplete - serverField: Incomplete - insertPageBreak: Incomplete - autoShow: Incomplete - topAutoShow: Incomplete - hideNewItems: Incomplete - measureFilter: Incomplete - includeNewItemsInFilter: Incomplete - itemPageCount: Incomplete - sortType: Incomplete - dataSourceSort: Incomplete - nonAutoSortDefault: Incomplete - rankBy: Incomplete - defaultSubtotal: Incomplete - sumSubtotal: Incomplete - countASubtotal: Incomplete - avgSubtotal: Incomplete - maxSubtotal: Incomplete - minSubtotal: Incomplete - productSubtotal: Incomplete - countSubtotal: Incomplete - stdDevSubtotal: Incomplete - stdDevPSubtotal: Incomplete - varSubtotal: Incomplete - varPSubtotal: Incomplete - showPropCell: Incomplete - showPropTip: Incomplete - showPropAsCaption: Incomplete - defaultAttributeDrillState: Incomplete - __elements__: Incomplete + autoSortScope: Typed[AutoSortScope, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + name: String[Literal[True]] + axis: NoneSet[_PivotAxis] + dataField: Bool[Literal[True]] + subtotalCaption: String[Literal[True]] + showDropDowns: Bool[Literal[True]] + hiddenLevel: Bool[Literal[True]] + uniqueMemberProperty: String[Literal[True]] + compact: Bool[Literal[True]] + allDrilled: Bool[Literal[True]] + numFmtId: Integer[Literal[True]] + outline: Bool[Literal[True]] + subtotalTop: Bool[Literal[True]] + dragToRow: Bool[Literal[True]] + dragToCol: Bool[Literal[True]] + multipleItemSelectionAllowed: Bool[Literal[True]] + dragToPage: Bool[Literal[True]] + dragToData: Bool[Literal[True]] + dragOff: Bool[Literal[True]] + showAll: Bool[Literal[True]] + insertBlankRow: Bool[Literal[True]] + serverField: Bool[Literal[True]] + insertPageBreak: Bool[Literal[True]] + autoShow: Bool[Literal[True]] + topAutoShow: Bool[Literal[True]] + hideNewItems: Bool[Literal[True]] + measureFilter: Bool[Literal[True]] + includeNewItemsInFilter: Bool[Literal[True]] + itemPageCount: Integer[Literal[True]] + sortType: Set[_PivotFieldSortType] + dataSourceSort: Bool[Literal[True]] + nonAutoSortDefault: Bool[Literal[True]] + rankBy: Integer[Literal[True]] + defaultSubtotal: Bool[Literal[True]] + sumSubtotal: Bool[Literal[True]] + countASubtotal: Bool[Literal[True]] + avgSubtotal: Bool[Literal[True]] + maxSubtotal: Bool[Literal[True]] + minSubtotal: Bool[Literal[True]] + productSubtotal: Bool[Literal[True]] + countSubtotal: Bool[Literal[True]] + stdDevSubtotal: Bool[Literal[True]] + stdDevPSubtotal: Bool[Literal[True]] + varSubtotal: Bool[Literal[True]] + varPSubtotal: Bool[Literal[True]] + showPropCell: Bool[Literal[True]] + showPropTip: Bool[Literal[True]] + showPropAsCaption: Bool[Literal[True]] + defaultAttributeDrillState: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, items=(), - autoSortScope: Incomplete | None = None, - name: Incomplete | None = None, - axis: Incomplete | None = None, - dataField: Incomplete | None = None, - subtotalCaption: Incomplete | None = None, - showDropDowns: bool = True, - hiddenLevel: Incomplete | None = None, - uniqueMemberProperty: Incomplete | None = None, - compact: bool = True, - allDrilled: Incomplete | None = None, - numFmtId: Incomplete | None = None, - outline: bool = True, - subtotalTop: bool = True, - dragToRow: bool = True, - dragToCol: bool = True, - multipleItemSelectionAllowed: Incomplete | None = None, - dragToPage: bool = True, - dragToData: bool = True, - dragOff: bool = True, - showAll: bool = True, - insertBlankRow: Incomplete | None = None, - serverField: Incomplete | None = None, - insertPageBreak: Incomplete | None = None, - autoShow: Incomplete | None = None, - topAutoShow: bool = True, - hideNewItems: Incomplete | None = None, - measureFilter: Incomplete | None = None, - includeNewItemsInFilter: Incomplete | None = None, - itemPageCount: int = 10, - sortType: str = "manual", - dataSourceSort: Incomplete | None = None, - nonAutoSortDefault: Incomplete | None = None, - rankBy: Incomplete | None = None, - defaultSubtotal: bool = True, - sumSubtotal: Incomplete | None = None, - countASubtotal: Incomplete | None = None, - avgSubtotal: Incomplete | None = None, - maxSubtotal: Incomplete | None = None, - minSubtotal: Incomplete | None = None, - productSubtotal: Incomplete | None = None, - countSubtotal: Incomplete | None = None, - stdDevSubtotal: Incomplete | None = None, - stdDevPSubtotal: Incomplete | None = None, - varSubtotal: Incomplete | None = None, - varPSubtotal: Incomplete | None = None, - showPropCell: Incomplete | None = None, - showPropTip: Incomplete | None = None, - showPropAsCaption: Incomplete | None = None, - defaultAttributeDrillState: Incomplete | None = None, - extLst: Incomplete | None = None, + autoSortScope: AutoSortScope | None = None, + name: str | None = None, + axis: _PivotAxis | Literal["none"] | None = None, + dataField: _ConvertibleToBool | None = None, + subtotalCaption: str | None = None, + showDropDowns: _ConvertibleToBool | None = True, + hiddenLevel: _ConvertibleToBool | None = None, + uniqueMemberProperty: str | None = None, + compact: _ConvertibleToBool | None = True, + allDrilled: _ConvertibleToBool | None = None, + numFmtId: _ConvertibleToInt | None = None, + outline: _ConvertibleToBool | None = True, + subtotalTop: _ConvertibleToBool | None = True, + dragToRow: _ConvertibleToBool | None = True, + dragToCol: _ConvertibleToBool | None = True, + multipleItemSelectionAllowed: _ConvertibleToBool | None = None, + dragToPage: _ConvertibleToBool | None = True, + dragToData: _ConvertibleToBool | None = True, + dragOff: _ConvertibleToBool | None = True, + showAll: _ConvertibleToBool | None = True, + insertBlankRow: _ConvertibleToBool | None = None, + serverField: _ConvertibleToBool | None = None, + insertPageBreak: _ConvertibleToBool | None = None, + autoShow: _ConvertibleToBool | None = None, + topAutoShow: _ConvertibleToBool | None = True, + hideNewItems: _ConvertibleToBool | None = None, + measureFilter: _ConvertibleToBool | None = None, + includeNewItemsInFilter: _ConvertibleToBool | None = None, + itemPageCount: _ConvertibleToInt | None = 10, + sortType: _PivotFieldSortType = "manual", + dataSourceSort: _ConvertibleToBool | None = None, + nonAutoSortDefault: _ConvertibleToBool | None = None, + rankBy: _ConvertibleToInt | None = None, + defaultSubtotal: _ConvertibleToBool | None = True, + sumSubtotal: _ConvertibleToBool | None = None, + countASubtotal: _ConvertibleToBool | None = None, + avgSubtotal: _ConvertibleToBool | None = None, + maxSubtotal: _ConvertibleToBool | None = None, + minSubtotal: _ConvertibleToBool | None = None, + productSubtotal: _ConvertibleToBool | None = None, + countSubtotal: _ConvertibleToBool | None = None, + stdDevSubtotal: _ConvertibleToBool | None = None, + stdDevPSubtotal: _ConvertibleToBool | None = None, + varSubtotal: _ConvertibleToBool | None = None, + varPSubtotal: _ConvertibleToBool | None = None, + showPropCell: _ConvertibleToBool | None = None, + showPropTip: _ConvertibleToBool | None = None, + showPropAsCaption: _ConvertibleToBool | None = None, + defaultAttributeDrillState: _ConvertibleToBool | None = None, + extLst: Unused = None, ) -> None: ... class Location(Serialisable): tagname: str - ref: Incomplete - firstHeaderRow: Incomplete - firstDataRow: Incomplete - firstDataCol: Incomplete - rowPageCount: Incomplete - colPageCount: Incomplete + ref: String[Literal[False]] + firstHeaderRow: Integer[Literal[False]] + firstDataRow: Integer[Literal[False]] + firstDataCol: Integer[Literal[False]] + rowPageCount: Integer[Literal[True]] + colPageCount: Integer[Literal[True]] def __init__( self, - ref: Incomplete | None = None, - firstHeaderRow: Incomplete | None = None, - firstDataRow: Incomplete | None = None, - firstDataCol: Incomplete | None = None, - rowPageCount: Incomplete | None = None, - colPageCount: Incomplete | None = None, + ref: str, + firstHeaderRow: _ConvertibleToInt, + firstDataRow: _ConvertibleToInt, + firstDataCol: _ConvertibleToInt, + rowPageCount: _ConvertibleToInt | None = None, + colPageCount: _ConvertibleToInt | None = None, ) -> None: ... class TableDefinition(Serialisable): @@ -499,75 +682,75 @@ class TableDefinition(Serialisable): rel_type: str tagname: str cache: Incomplete - name: Incomplete - cacheId: Incomplete - dataOnRows: Incomplete - dataPosition: Incomplete - dataCaption: Incomplete - grandTotalCaption: Incomplete - errorCaption: Incomplete - showError: Incomplete - missingCaption: Incomplete - showMissing: Incomplete - pageStyle: Incomplete - pivotTableStyle: Incomplete - vacatedStyle: Incomplete - tag: Incomplete - updatedVersion: Incomplete - minRefreshableVersion: Incomplete - asteriskTotals: Incomplete - showItems: Incomplete - editData: Incomplete - disableFieldList: Incomplete - showCalcMbrs: Incomplete - visualTotals: Incomplete - showMultipleLabel: Incomplete - showDataDropDown: Incomplete - showDrill: Incomplete - printDrill: Incomplete - showMemberPropertyTips: Incomplete - showDataTips: Incomplete - enableWizard: Incomplete - enableDrill: Incomplete - enableFieldProperties: Incomplete - preserveFormatting: Incomplete - useAutoFormatting: Incomplete - pageWrap: Incomplete - pageOverThenDown: Incomplete - subtotalHiddenItems: Incomplete - rowGrandTotals: Incomplete - colGrandTotals: Incomplete - fieldPrintTitles: Incomplete - itemPrintTitles: Incomplete - mergeItem: Incomplete - showDropZones: Incomplete - createdVersion: Incomplete - indent: Incomplete - showEmptyRow: Incomplete - showEmptyCol: Incomplete - showHeaders: Incomplete - compact: Incomplete - outline: Incomplete - outlineData: Incomplete - compactData: Incomplete - published: Incomplete - gridDropZones: Incomplete - immersive: Incomplete - multipleFieldFilters: Incomplete - chartFormat: Incomplete - rowHeaderCaption: Incomplete - colHeaderCaption: Incomplete - fieldListSortAscending: Incomplete - mdxSubqueries: Incomplete - customListSort: Incomplete - autoFormatId: Incomplete - applyNumberFormats: Incomplete - applyBorderFormats: Incomplete - applyFontFormats: Incomplete - applyPatternFormats: Incomplete - applyAlignmentFormats: Incomplete - applyWidthHeightFormats: Incomplete - location: Incomplete + name: String[Literal[False]] + cacheId: Integer[Literal[False]] + dataOnRows: Bool[Literal[False]] + dataPosition: Integer[Literal[True]] + dataCaption: String[Literal[False]] + grandTotalCaption: String[Literal[True]] + errorCaption: String[Literal[True]] + showError: Bool[Literal[False]] + missingCaption: String[Literal[True]] + showMissing: Bool[Literal[False]] + pageStyle: String[Literal[True]] + pivotTableStyle: String[Literal[True]] + vacatedStyle: String[Literal[True]] + tag: String[Literal[True]] + updatedVersion: Integer[Literal[False]] + minRefreshableVersion: Integer[Literal[False]] + asteriskTotals: Bool[Literal[False]] + showItems: Bool[Literal[False]] + editData: Bool[Literal[False]] + disableFieldList: Bool[Literal[False]] + showCalcMbrs: Bool[Literal[False]] + visualTotals: Bool[Literal[False]] + showMultipleLabel: Bool[Literal[False]] + showDataDropDown: Bool[Literal[False]] + showDrill: Bool[Literal[False]] + printDrill: Bool[Literal[False]] + showMemberPropertyTips: Bool[Literal[False]] + showDataTips: Bool[Literal[False]] + enableWizard: Bool[Literal[False]] + enableDrill: Bool[Literal[False]] + enableFieldProperties: Bool[Literal[False]] + preserveFormatting: Bool[Literal[False]] + useAutoFormatting: Bool[Literal[False]] + pageWrap: Integer[Literal[False]] + pageOverThenDown: Bool[Literal[False]] + subtotalHiddenItems: Bool[Literal[False]] + rowGrandTotals: Bool[Literal[False]] + colGrandTotals: Bool[Literal[False]] + fieldPrintTitles: Bool[Literal[False]] + itemPrintTitles: Bool[Literal[False]] + mergeItem: Bool[Literal[False]] + showDropZones: Bool[Literal[False]] + createdVersion: Integer[Literal[False]] + indent: Integer[Literal[False]] + showEmptyRow: Bool[Literal[False]] + showEmptyCol: Bool[Literal[False]] + showHeaders: Bool[Literal[False]] + compact: Bool[Literal[False]] + outline: Bool[Literal[False]] + outlineData: Bool[Literal[False]] + compactData: Bool[Literal[False]] + published: Bool[Literal[False]] + gridDropZones: Bool[Literal[False]] + immersive: Bool[Literal[False]] + multipleFieldFilters: Bool[Literal[False]] + chartFormat: Integer[Literal[False]] + rowHeaderCaption: String[Literal[True]] + colHeaderCaption: String[Literal[True]] + fieldListSortAscending: Bool[Literal[False]] + mdxSubqueries: Bool[Literal[False]] + customListSort: Bool[Literal[True]] + autoFormatId: Integer[Literal[True]] + applyNumberFormats: Bool[Literal[False]] + applyBorderFormats: Bool[Literal[False]] + applyFontFormats: Bool[Literal[False]] + applyPatternFormats: Bool[Literal[False]] + applyAlignmentFormats: Bool[Literal[False]] + applyWidthHeightFormats: Bool[Literal[False]] + location: Typed[Location, Literal[False]] pivotFields: Incomplete rowFields: Incomplete rowItems: Incomplete @@ -576,87 +759,179 @@ class TableDefinition(Serialisable): pageFields: Incomplete dataFields: Incomplete formats: Incomplete - conditionalFormats: Incomplete + conditionalFormats: Typed[ConditionalFormatList, Literal[True]] chartFormats: Incomplete pivotHierarchies: Incomplete - pivotTableStyleInfo: Incomplete + pivotTableStyleInfo: Typed[PivotTableStyle, Literal[True]] filters: Incomplete - rowHierarchiesUsage: Incomplete - colHierarchiesUsage: Incomplete - extLst: Incomplete + rowHierarchiesUsage: Typed[RowHierarchiesUsage, Literal[True]] + colHierarchiesUsage: Typed[ColHierarchiesUsage, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] id: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] + @overload + def __init__( + self, + name: str, + cacheId: _ConvertibleToInt, + dataOnRows: _ConvertibleToBool = False, + dataPosition: _ConvertibleToInt | None = None, + *, + dataCaption: str, + grandTotalCaption: str | None = None, + errorCaption: str | None = None, + showError: _ConvertibleToBool = False, + missingCaption: str | None = None, + showMissing: _ConvertibleToBool = True, + pageStyle: str | None = None, + pivotTableStyle: str | None = None, + vacatedStyle: str | None = None, + tag: str | None = None, + updatedVersion: _ConvertibleToInt = 0, + minRefreshableVersion: _ConvertibleToInt = 0, + asteriskTotals: _ConvertibleToBool = False, + showItems: _ConvertibleToBool = True, + editData: _ConvertibleToBool = False, + disableFieldList: _ConvertibleToBool = False, + showCalcMbrs: _ConvertibleToBool = True, + visualTotals: _ConvertibleToBool = True, + showMultipleLabel: _ConvertibleToBool = True, + showDataDropDown: _ConvertibleToBool = True, + showDrill: _ConvertibleToBool = True, + printDrill: _ConvertibleToBool = False, + showMemberPropertyTips: _ConvertibleToBool = True, + showDataTips: _ConvertibleToBool = True, + enableWizard: _ConvertibleToBool = True, + enableDrill: _ConvertibleToBool = True, + enableFieldProperties: _ConvertibleToBool = True, + preserveFormatting: _ConvertibleToBool = True, + useAutoFormatting: _ConvertibleToBool = False, + pageWrap: _ConvertibleToInt = 0, + pageOverThenDown: _ConvertibleToBool = False, + subtotalHiddenItems: _ConvertibleToBool = False, + rowGrandTotals: _ConvertibleToBool = True, + colGrandTotals: _ConvertibleToBool = True, + fieldPrintTitles: _ConvertibleToBool = False, + itemPrintTitles: _ConvertibleToBool = False, + mergeItem: _ConvertibleToBool = False, + showDropZones: _ConvertibleToBool = True, + createdVersion: _ConvertibleToInt = 0, + indent: _ConvertibleToInt = 1, + showEmptyRow: _ConvertibleToBool = False, + showEmptyCol: _ConvertibleToBool = False, + showHeaders: _ConvertibleToBool = True, + compact: _ConvertibleToBool = True, + outline: _ConvertibleToBool = False, + outlineData: _ConvertibleToBool = False, + compactData: _ConvertibleToBool = True, + published: _ConvertibleToBool = False, + gridDropZones: _ConvertibleToBool = False, + immersive: _ConvertibleToBool = True, + multipleFieldFilters: _ConvertibleToBool = None, + chartFormat: _ConvertibleToInt = 0, + rowHeaderCaption: str | None = None, + colHeaderCaption: str | None = None, + fieldListSortAscending: _ConvertibleToBool = None, + mdxSubqueries: _ConvertibleToBool = None, + customListSort: _ConvertibleToBool | None = None, + autoFormatId: _ConvertibleToInt | None = None, + applyNumberFormats: _ConvertibleToBool = False, + applyBorderFormats: _ConvertibleToBool = False, + applyFontFormats: _ConvertibleToBool = False, + applyPatternFormats: _ConvertibleToBool = False, + applyAlignmentFormats: _ConvertibleToBool = False, + applyWidthHeightFormats: _ConvertibleToBool = False, + location: Location, + pivotFields=(), + rowFields=(), + rowItems=(), + colFields=(), + colItems=(), + pageFields=(), + dataFields=(), + formats=(), + conditionalFormats: ConditionalFormatList | None = None, + chartFormats=(), + pivotHierarchies=(), + pivotTableStyleInfo: PivotTableStyle | None = None, + filters=(), + rowHierarchiesUsage: RowHierarchiesUsage | None = None, + colHierarchiesUsage: ColHierarchiesUsage | None = None, + extLst: ExtensionList | None = None, + id: Incomplete | None = None, + ) -> None: ... + @overload def __init__( self, - name: Incomplete | None = None, - cacheId: Incomplete | None = None, - dataOnRows: bool = False, - dataPosition: Incomplete | None = None, - dataCaption: Incomplete | None = None, - grandTotalCaption: Incomplete | None = None, - errorCaption: Incomplete | None = None, - showError: bool = False, - missingCaption: Incomplete | None = None, - showMissing: bool = True, - pageStyle: Incomplete | None = None, - pivotTableStyle: Incomplete | None = None, - vacatedStyle: Incomplete | None = None, - tag: Incomplete | None = None, - updatedVersion: int = 0, - minRefreshableVersion: int = 0, - asteriskTotals: bool = False, - showItems: bool = True, - editData: bool = False, - disableFieldList: bool = False, - showCalcMbrs: bool = True, - visualTotals: bool = True, - showMultipleLabel: bool = True, - showDataDropDown: bool = True, - showDrill: bool = True, - printDrill: bool = False, - showMemberPropertyTips: bool = True, - showDataTips: bool = True, - enableWizard: bool = True, - enableDrill: bool = True, - enableFieldProperties: bool = True, - preserveFormatting: bool = True, - useAutoFormatting: bool = False, - pageWrap: int = 0, - pageOverThenDown: bool = False, - subtotalHiddenItems: bool = False, - rowGrandTotals: bool = True, - colGrandTotals: bool = True, - fieldPrintTitles: bool = False, - itemPrintTitles: bool = False, - mergeItem: bool = False, - showDropZones: bool = True, - createdVersion: int = 0, - indent: int = 1, - showEmptyRow: bool = False, - showEmptyCol: bool = False, - showHeaders: bool = True, - compact: bool = True, - outline: bool = False, - outlineData: bool = False, - compactData: bool = True, - published: bool = False, - gridDropZones: bool = False, - immersive: bool = True, - multipleFieldFilters: Incomplete | None = None, - chartFormat: int = 0, - rowHeaderCaption: Incomplete | None = None, - colHeaderCaption: Incomplete | None = None, - fieldListSortAscending: Incomplete | None = None, - mdxSubqueries: Incomplete | None = None, - customListSort: Incomplete | None = None, - autoFormatId: Incomplete | None = None, - applyNumberFormats: bool = False, - applyBorderFormats: bool = False, - applyFontFormats: bool = False, - applyPatternFormats: bool = False, - applyAlignmentFormats: bool = False, - applyWidthHeightFormats: bool = False, - location: Incomplete | None = None, + name: str, + cacheId: _ConvertibleToInt, + dataOnRows: _ConvertibleToBool, + dataPosition: _ConvertibleToInt | None, + dataCaption: str, + grandTotalCaption: str | None, + errorCaption: str | None, + showError: _ConvertibleToBool, + missingCaption: str | None, + showMissing: _ConvertibleToBool, + pageStyle: str | None, + pivotTableStyle: str | None, + vacatedStyle: str | None, + tag: str | None, + updatedVersion: _ConvertibleToInt, + minRefreshableVersion: _ConvertibleToInt, + asteriskTotals: _ConvertibleToBool, + showItems: _ConvertibleToBool, + editData: _ConvertibleToBool, + disableFieldList: _ConvertibleToBool, + showCalcMbrs: _ConvertibleToBool, + visualTotals: _ConvertibleToBool, + showMultipleLabel: _ConvertibleToBool, + showDataDropDown: _ConvertibleToBool, + showDrill: _ConvertibleToBool, + printDrill: _ConvertibleToBool, + showMemberPropertyTips: _ConvertibleToBool, + showDataTips: _ConvertibleToBool, + enableWizard: _ConvertibleToBool, + enableDrill: _ConvertibleToBool, + enableFieldProperties: _ConvertibleToBool, + preserveFormatting: _ConvertibleToBool, + useAutoFormatting: _ConvertibleToBool, + pageWrap: _ConvertibleToInt, + pageOverThenDown: _ConvertibleToBool, + subtotalHiddenItems: _ConvertibleToBool, + rowGrandTotals: _ConvertibleToBool, + colGrandTotals: _ConvertibleToBool, + fieldPrintTitles: _ConvertibleToBool, + itemPrintTitles: _ConvertibleToBool, + mergeItem: _ConvertibleToBool, + showDropZones: _ConvertibleToBool, + createdVersion: _ConvertibleToInt, + indent: _ConvertibleToInt, + showEmptyRow: _ConvertibleToBool, + showEmptyCol: _ConvertibleToBool, + showHeaders: _ConvertibleToBool, + compact: _ConvertibleToBool, + outline: _ConvertibleToBool, + outlineData: _ConvertibleToBool, + compactData: _ConvertibleToBool, + published: _ConvertibleToBool, + gridDropZones: _ConvertibleToBool, + immersive: _ConvertibleToBool, + multipleFieldFilters: _ConvertibleToBool, + chartFormat: _ConvertibleToInt, + rowHeaderCaption: str | None, + colHeaderCaption: str | None, + fieldListSortAscending: _ConvertibleToBool, + mdxSubqueries: _ConvertibleToBool, + customListSort: _ConvertibleToBool | None, + autoFormatId: _ConvertibleToInt | None, + applyNumberFormats: _ConvertibleToBool, + applyBorderFormats: _ConvertibleToBool, + applyFontFormats: _ConvertibleToBool, + applyPatternFormats: _ConvertibleToBool, + applyAlignmentFormats: _ConvertibleToBool, + applyWidthHeightFormats: _ConvertibleToBool, + location: Location, pivotFields=(), rowFields=(), rowItems=(), @@ -665,14 +940,14 @@ class TableDefinition(Serialisable): pageFields=(), dataFields=(), formats=(), - conditionalFormats=None, + conditionalFormats: ConditionalFormatList | None = None, chartFormats=(), pivotHierarchies=(), - pivotTableStyleInfo: Incomplete | None = None, + pivotTableStyleInfo: PivotTableStyle | None = None, filters=(), - rowHierarchiesUsage: Incomplete | None = None, - colHierarchiesUsage: Incomplete | None = None, - extLst: Incomplete | None = None, + rowHierarchiesUsage: RowHierarchiesUsage | None = None, + colHierarchiesUsage: ColHierarchiesUsage | None = None, + extLst: ExtensionList | None = None, id: Incomplete | None = None, ) -> None: ... def to_tree(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi index 3498ac9a0..d38c39286 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi @@ -1,36 +1,43 @@ from _typeshed import Incomplete +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Alias, Bool, Min, MinMax, NoneSet, _ConvertibleToBool, _ConvertibleToFloat from openpyxl.descriptors.serialisable import Serialisable -horizontal_alignments: Incomplete -vertical_aligments: Incomplete +_HorizontalAlignmentsType: TypeAlias = Literal[ + "general", "left", "center", "right", "fill", "justify", "centerContinuous", "distributed" +] +_VerticalAlignmentsType: TypeAlias = Literal["top", "center", "bottom", "justify", "distributed"] + +horizontal_alignments: tuple[_HorizontalAlignmentsType, ...] +vertical_aligments: tuple[_VerticalAlignmentsType, ...] class Alignment(Serialisable): tagname: str __fields__: Incomplete - horizontal: Incomplete - vertical: Incomplete - textRotation: Incomplete - text_rotation: Incomplete - wrapText: Incomplete - wrap_text: Incomplete - shrinkToFit: Incomplete - shrink_to_fit: Incomplete - indent: Incomplete - relativeIndent: Incomplete - justifyLastLine: Incomplete - readingOrder: Incomplete + horizontal: NoneSet[_HorizontalAlignmentsType] + vertical: NoneSet[_VerticalAlignmentsType] + textRotation: NoneSet[int] + text_rotation: Alias + wrapText: Bool[Literal[True]] + wrap_text: Alias + shrinkToFit: Bool[Literal[True]] + shrink_to_fit: Alias + indent: MinMax[float, Literal[False]] + relativeIndent: MinMax[float, Literal[False]] + justifyLastLine: Bool[Literal[True]] + readingOrder: Min[float, Literal[False]] def __init__( self, horizontal: Incomplete | None = None, vertical: Incomplete | None = None, textRotation: int = 0, - wrapText: Incomplete | None = None, - shrinkToFit: Incomplete | None = None, - indent: int = 0, - relativeIndent: int = 0, - justifyLastLine: Incomplete | None = None, - readingOrder: int = 0, + wrapText: _ConvertibleToBool | None = None, + shrinkToFit: _ConvertibleToBool | None = None, + indent: _ConvertibleToFloat = 0, + relativeIndent: _ConvertibleToFloat = 0, + justifyLastLine: _ConvertibleToBool | None = None, + readingOrder: _ConvertibleToFloat = 0, text_rotation: Incomplete | None = None, wrap_text: Incomplete | None = None, shrink_to_fit: Incomplete | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi index 423581070..f11117c9c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi @@ -1,7 +1,26 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Alias, Bool, NoneSet, Typed, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable +_SideStyle: TypeAlias = Literal[ + "dashDot", + "dashDotDot", + "dashed", + "dotted", + "double", + "hair", + "medium", + "mediumDashDot", + "mediumDashDotDot", + "mediumDashed", + "slantDashDot", + "thick", + "thin", +] + BORDER_NONE: Incomplete BORDER_DASHDOT: str BORDER_DASHDOTDOT: str @@ -17,47 +36,50 @@ BORDER_SLANTDASHDOT: str BORDER_THICK: str BORDER_THIN: str -class Side(Serialisable): # type: ignore[misc] +class Side(Serialisable): __fields__: Incomplete color: Incomplete - style: Incomplete - border_style: Incomplete + style: NoneSet[_SideStyle] + border_style: Alias def __init__( - self, style: Incomplete | None = None, color: Incomplete | None = None, border_style: Incomplete | None = None + self, + style: _SideStyle | Literal["none"] | None = None, + color: Incomplete | None = None, + border_style: Incomplete | None = None, ) -> None: ... class Border(Serialisable): tagname: str __fields__: Incomplete - __elements__: Incomplete - start: Incomplete - end: Incomplete - left: Incomplete - right: Incomplete - top: Incomplete - bottom: Incomplete - diagonal: Incomplete - vertical: Incomplete - horizontal: Incomplete - outline: Incomplete - diagonalUp: Incomplete - diagonalDown: Incomplete + __elements__: ClassVar[tuple[str, ...]] + start: Typed[Side, Literal[True]] + end: Typed[Side, Literal[True]] + left: Typed[Side, Literal[True]] + right: Typed[Side, Literal[True]] + top: Typed[Side, Literal[True]] + bottom: Typed[Side, Literal[True]] + diagonal: Typed[Side, Literal[True]] + vertical: Typed[Side, Literal[True]] + horizontal: Typed[Side, Literal[True]] + outline: Bool[Literal[False]] + diagonalUp: Bool[Literal[False]] + diagonalDown: Bool[Literal[False]] diagonal_direction: Incomplete def __init__( self, - left: Incomplete | None = None, - right: Incomplete | None = None, - top: Incomplete | None = None, - bottom: Incomplete | None = None, - diagonal: Incomplete | None = None, + left: Side | None = None, + right: Side | None = None, + top: Side | None = None, + bottom: Side | None = None, + diagonal: Side | None = None, diagonal_direction: Incomplete | None = None, - vertical: Incomplete | None = None, - horizontal: Incomplete | None = None, - diagonalUp: bool = False, - diagonalDown: bool = False, - outline: bool = True, - start: Incomplete | None = None, - end: Incomplete | None = None, + vertical: Side | None = None, + horizontal: Side | None = None, + diagonalUp: _ConvertibleToBool = False, + diagonalDown: _ConvertibleToBool = False, + outline: _ConvertibleToBool = True, + start: Side | None = None, + end: Side | None = None, ) -> None: ... def __iter__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi index 81855a0de..d1cd92846 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi @@ -1,13 +1,20 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from array import array +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors import Strict +from openpyxl.descriptors.base import Bool, Integer, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.styles.alignment import Alignment +from openpyxl.styles.protection import Protection class ArrayDescriptor: key: Incomplete def __init__(self, key) -> None: ... - def __get__(self, instance, cls): ... - def __set__(self, instance, value) -> None: ... + def __get__(self, instance: Serialisable | Strict, cls: Unused): ... + def __set__(self, instance: Serialisable | Strict, value) -> None: ... class StyleArray(array[Incomplete]): tagname: str @@ -27,43 +34,43 @@ class StyleArray(array[Incomplete]): class CellStyle(Serialisable): tagname: str - numFmtId: Incomplete - fontId: Incomplete - fillId: Incomplete - borderId: Incomplete - xfId: Incomplete - quotePrefix: Incomplete - pivotButton: Incomplete - applyNumberFormat: Incomplete - applyFont: Incomplete - applyFill: Incomplete - applyBorder: Incomplete + numFmtId: Integer[Literal[False]] + fontId: Integer[Literal[False]] + fillId: Integer[Literal[False]] + borderId: Integer[Literal[False]] + xfId: Integer[Literal[True]] + quotePrefix: Bool[Literal[True]] + pivotButton: Bool[Literal[True]] + applyNumberFormat: Bool[Literal[True]] + applyFont: Bool[Literal[True]] + applyFill: Bool[Literal[True]] + applyBorder: Bool[Literal[True]] # Overwritten by properties below - # applyAlignment: Bool - # applyProtection: Bool - alignment: Incomplete - protection: Incomplete - extLst: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + # applyAlignment: Bool[Literal[True]] + # applyProtection: Bool[Literal[True]] + alignment: Typed[Alignment, Literal[True]] + protection: Typed[Protection, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] def __init__( self, - numFmtId: int = 0, - fontId: int = 0, - fillId: int = 0, - borderId: int = 0, - xfId: Incomplete | None = None, - quotePrefix: Incomplete | None = None, - pivotButton: Incomplete | None = None, - applyNumberFormat: Incomplete | None = None, - applyFont: Incomplete | None = None, - applyFill: Incomplete | None = None, - applyBorder: Incomplete | None = None, - applyAlignment: Incomplete | None = None, - applyProtection: Incomplete | None = None, - alignment: Incomplete | None = None, - protection: Incomplete | None = None, - extLst: Incomplete | None = None, + numFmtId: _ConvertibleToInt = 0, + fontId: _ConvertibleToInt = 0, + fillId: _ConvertibleToInt = 0, + borderId: _ConvertibleToInt = 0, + xfId: _ConvertibleToInt | None = None, + quotePrefix: _ConvertibleToBool | None = None, + pivotButton: _ConvertibleToBool | None = None, + applyNumberFormat: _ConvertibleToBool | None = None, + applyFont: _ConvertibleToBool | None = None, + applyFill: _ConvertibleToBool | None = None, + applyBorder: _ConvertibleToBool | None = None, + applyAlignment: Unused = None, + applyProtection: Unused = None, + alignment: Alignment | None = None, + protection: Protection | None = None, + extLst: Unused = None, ) -> None: ... def to_array(self): ... @classmethod @@ -75,14 +82,14 @@ class CellStyle(Serialisable): class CellStyleList(Serialisable): tagname: str - __attrs__: Incomplete + __attrs__: ClassVar[tuple[str, ...]] # Overwritten by property below # count: Integer xf: Incomplete alignment: Incomplete protection: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, xf=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: Unused = None, xf=()) -> None: ... @property def count(self): ... def __getitem__(self, idx): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi index d05e52ead..67fbdd861 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi @@ -1,6 +1,9 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal -from openpyxl.descriptors import Typed +from openpyxl.descriptors import Strict, Typed +from openpyxl.descriptors.base import Bool, Integer, MinMax, String, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable COLOR_INDEX: Incomplete @@ -9,27 +12,27 @@ WHITE: Incomplete BLUE: Incomplete aRGB_REGEX: Incomplete -class RGB(Typed): - expected_type: Incomplete - def __set__(self, instance, value) -> None: ... +class RGB(Typed[str, Incomplete]): + expected_type: type[str] + def __set__(self, instance: Serialisable | Strict, value) -> None: ... class Color(Serialisable): tagname: str rgb: Incomplete - indexed: Incomplete - auto: Incomplete - theme: Incomplete - tint: Incomplete - type: Incomplete + indexed: Integer[Literal[False]] + auto: Bool[Literal[False]] + theme: Integer[Literal[False]] + tint: MinMax[float, Literal[False]] + type: String[Literal[False]] def __init__( self, rgb="00000000", - indexed: Incomplete | None = None, - auto: Incomplete | None = None, - theme: Incomplete | None = None, - tint: float = 0.0, - index: Incomplete | None = None, - type: str = "rgb", + indexed: _ConvertibleToInt | None = None, + auto: _ConvertibleToBool | None = None, + theme: _ConvertibleToInt | None = None, + tint: _ConvertibleToFloat = 0.0, + index: _ConvertibleToInt | None = None, + type: Unused = "rgb", ) -> None: ... @property def value(self): ... @@ -40,9 +43,9 @@ class Color(Serialisable): def index(self): ... def __add__(self, other): ... -class ColorDescriptor(Typed): - expected_type: Incomplete - def __set__(self, instance, value) -> None: ... +class ColorDescriptor(Typed[Color, Incomplete]): + expected_type: type[Color] + def __set__(self, instance: Serialisable | Strict, value) -> None: ... class RgbColor(Serialisable): tagname: str @@ -53,7 +56,7 @@ class ColorList(Serialisable): tagname: str indexedColors: Incomplete mruColors: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, indexedColors=(), mruColors=()) -> None: ... def __bool__(self) -> bool: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi index 560e64d06..a30bf66a5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi @@ -1,33 +1,39 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.styles import Alignment, Border, Fill, Font, Protection +from openpyxl.styles.numbers import NumberFormat class DifferentialStyle(Serialisable): tagname: str - __elements__: Incomplete - font: Incomplete - numFmt: Incomplete - fill: Incomplete - alignment: Incomplete - border: Incomplete - protection: Incomplete - extLst: Incomplete + __elements__: ClassVar[tuple[str, ...]] + font: Typed[Font, Literal[True]] + numFmt: Typed[NumberFormat, Literal[True]] + fill: Typed[Fill, Literal[True]] + alignment: Typed[Alignment, Literal[True]] + border: Typed[Border, Literal[True]] + protection: Typed[Protection, Literal[True]] + extLst: ExtensionList | None def __init__( self, - font: Incomplete | None = None, - numFmt: Incomplete | None = None, - fill: Incomplete | None = None, - alignment: Incomplete | None = None, - border: Incomplete | None = None, - protection: Incomplete | None = None, - extLst: Incomplete | None = None, + font: Font | None = None, + numFmt: NumberFormat | None = None, + fill: Fill | None = None, + alignment: Alignment | None = None, + border: Border | None = None, + protection: Protection | None = None, + extLst: ExtensionList | None = None, ) -> None: ... class DifferentialStyleList(Serialisable): tagname: str dxf: Incomplete - styles: Incomplete - __attrs__: Incomplete + styles: Alias + __attrs__: ClassVar[tuple[str, ...]] def __init__(self, dxf=(), count: Incomplete | None = None) -> None: ... def append(self, dxf) -> None: ... def add(self, dxf): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi index 8606fc491..889844800 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi @@ -1,28 +1,54 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Final, Literal, TypeAlias from openpyxl.descriptors import Sequence +from openpyxl.descriptors.base import Alias, Float, MinMax, NoneSet, Set, _ConvertibleToFloat from openpyxl.descriptors.serialisable import Serialisable -FILL_NONE: str -FILL_SOLID: str -FILL_PATTERN_DARKDOWN: str -FILL_PATTERN_DARKGRAY: str -FILL_PATTERN_DARKGRID: str -FILL_PATTERN_DARKHORIZONTAL: str -FILL_PATTERN_DARKTRELLIS: str -FILL_PATTERN_DARKUP: str -FILL_PATTERN_DARKVERTICAL: str -FILL_PATTERN_GRAY0625: str -FILL_PATTERN_GRAY125: str -FILL_PATTERN_LIGHTDOWN: str -FILL_PATTERN_LIGHTGRAY: str -FILL_PATTERN_LIGHTGRID: str -FILL_PATTERN_LIGHTHORIZONTAL: str -FILL_PATTERN_LIGHTTRELLIS: str -FILL_PATTERN_LIGHTUP: str -FILL_PATTERN_LIGHTVERTICAL: str -FILL_PATTERN_MEDIUMGRAY: str -fills: Incomplete +FILL_NONE: Final = "none" +FILL_SOLID: Final = "solid" +FILL_PATTERN_DARKDOWN: Final = "darkDown" +FILL_PATTERN_DARKGRAY: Final = "darkGray" +FILL_PATTERN_DARKGRID: Final = "darkGrid" +FILL_PATTERN_DARKHORIZONTAL: Final = "darkHorizontal" +FILL_PATTERN_DARKTRELLIS: Final = "darkTrellis" +FILL_PATTERN_DARKUP: Final = "darkUp" +FILL_PATTERN_DARKVERTICAL: Final = "darkVertical" +FILL_PATTERN_GRAY0625: Final = "gray0625" +FILL_PATTERN_GRAY125: Final = "gray125" +FILL_PATTERN_LIGHTDOWN: Final = "lightDown" +FILL_PATTERN_LIGHTGRAY: Final = "lightGray" +FILL_PATTERN_LIGHTGRID: Final = "lightGrid" +FILL_PATTERN_LIGHTHORIZONTAL: Final = "lightHorizontal" +FILL_PATTERN_LIGHTTRELLIS: Final = "lightTrellis" +FILL_PATTERN_LIGHTUP: Final = "lightUp" +FILL_PATTERN_LIGHTVERTICAL: Final = "lightVertical" +FILL_PATTERN_MEDIUMGRAY: Final = "mediumGray" + +_GradientFillType: TypeAlias = Literal["linear", "path"] +_FillsType: TypeAlias = Literal[ + "none", + "solid", + "darkDown", + "darkGray", + "darkGrid", + "darkHorizontal", + "darkTrellis", + "darkUp", + "darkVertical", + "gray0625", + "gray125", + "lightDown", + "lightGray", + "lightGrid", + "lightHorizontal", + "lightTrellis", + "lightUp", + "lightVertical", + "mediumGray", +] +fills: tuple[_FillsType, ...] class Fill(Serialisable): tagname: str @@ -31,13 +57,13 @@ class Fill(Serialisable): class PatternFill(Fill): tagname: str - __elements__: Incomplete - patternType: Incomplete - fill_type: Incomplete + __elements__: ClassVar[tuple[str, ...]] + patternType: NoneSet[_FillsType] + fill_type: Alias fgColor: Incomplete - start_color: Incomplete + start_color: Alias bgColor: Incomplete - end_color: Incomplete + end_color: Alias def __init__( self, patternType: Incomplete | None = None, @@ -54,26 +80,33 @@ DEFAULT_GRAY_FILL: Incomplete class Stop(Serialisable): tagname: str - position: Incomplete + position: MinMax[float, Literal[False]] color: Incomplete - def __init__(self, color, position) -> None: ... + def __init__(self, color, position: _ConvertibleToFloat) -> None: ... class StopList(Sequence): - expected_type: Incomplete + expected_type: type[Incomplete] def __set__(self, obj, values) -> None: ... class GradientFill(Fill): tagname: str - type: Incomplete - fill_type: Incomplete - degree: Incomplete - left: Incomplete - right: Incomplete - top: Incomplete - bottom: Incomplete + type: Set[_GradientFillType] + fill_type: Alias + degree: Float[Literal[False]] + left: Float[Literal[False]] + right: Float[Literal[False]] + top: Float[Literal[False]] + bottom: Float[Literal[False]] stop: Incomplete def __init__( - self, type: str = "linear", degree: int = 0, left: int = 0, right: int = 0, top: int = 0, bottom: int = 0, stop=() + self, + type: _GradientFillType = "linear", + degree: _ConvertibleToFloat = 0, + left: _ConvertibleToFloat = 0, + right: _ConvertibleToFloat = 0, + top: _ConvertibleToFloat = 0, + bottom: _ConvertibleToFloat = 0, + stop=(), ) -> None: ... def __iter__(self): ... def to_tree(self, tagname: Incomplete | None = None, namespace: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi index 2762a77fd..88ad1e98e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi @@ -1,5 +1,7 @@ from _typeshed import Incomplete +from typing import ClassVar +from openpyxl.descriptors.base import Alias from openpyxl.descriptors.serialisable import Serialisable class Font(Serialisable): @@ -11,24 +13,24 @@ class Font(Serialisable): charset: Incomplete family: Incomplete sz: Incomplete - size: Incomplete + size: Alias b: Incomplete - bold: Incomplete + bold: Alias i: Incomplete - italic: Incomplete + italic: Alias strike: Incomplete - strikethrough: Incomplete + strikethrough: Alias outline: Incomplete shadow: Incomplete condense: Incomplete extend: Incomplete u: Incomplete - underline: Incomplete + underline: Alias vertAlign: Incomplete color: Incomplete scheme: Incomplete tagname: str - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, name: Incomplete | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi index 3d35fa984..e029b84e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi @@ -1,31 +1,40 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Bool, Integer, String, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.styles.alignment import Alignment +from openpyxl.styles.borders import Border +from openpyxl.styles.fills import Fill +from openpyxl.styles.fonts import Font +from openpyxl.styles.protection import Protection -class NamedStyle(Serialisable): # type: ignore[misc] - font: Incomplete - fill: Incomplete - border: Incomplete - alignment: Incomplete +class NamedStyle(Serialisable): + font: Typed[Font, Literal[False]] + fill: Typed[Fill, Literal[False]] + border: Typed[Border, Literal[False]] + alignment: Typed[Alignment, Literal[False]] number_format: Incomplete - protection: Incomplete - builtinId: Incomplete - hidden: Incomplete + protection: Typed[Protection, Literal[False]] + builtinId: Integer[Literal[True]] + hidden: Bool[Literal[True]] # Overwritten by property below # xfId: Integer - name: Incomplete + name: String[Literal[False]] def __init__( self, name: str = "Normal", - font=None, - fill=None, - border=None, - alignment=None, + font: Font | None = None, + fill: Fill | None = None, + border: Border | None = None, + alignment: Alignment | None = None, number_format: Incomplete | None = None, - protection=None, - builtinId: Incomplete | None = None, - hidden: bool = False, - xfId: Incomplete | None = None, + protection: Protection | None = None, + builtinId: _ConvertibleToInt | None = None, + hidden: _ConvertibleToBool | None = False, + xfId: Unused = None, ) -> None: ... def __setattr__(self, attr: str, value) -> None: ... def __iter__(self): ... @@ -44,23 +53,23 @@ class NamedStyleList(list[Incomplete]): class _NamedCellStyle(Serialisable): tagname: str - name: Incomplete - xfId: Incomplete - builtinId: Incomplete - iLevel: Incomplete - hidden: Incomplete - customBuiltin: Incomplete - extLst: Incomplete - __elements__: Incomplete + name: String[Literal[False]] + xfId: Integer[Literal[False]] + builtinId: Integer[Literal[True]] + iLevel: Integer[Literal[True]] + hidden: Bool[Literal[True]] + customBuiltin: Bool[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - name: Incomplete | None = None, - xfId: Incomplete | None = None, - builtinId: Incomplete | None = None, - iLevel: Incomplete | None = None, - hidden: Incomplete | None = None, - customBuiltin: Incomplete | None = None, - extLst: Incomplete | None = None, + name: str, + xfId: _ConvertibleToInt, + builtinId: _ConvertibleToInt | None = None, + iLevel: _ConvertibleToInt | None = None, + hidden: _ConvertibleToBool | None = None, + customBuiltin: _ConvertibleToBool | None = None, + extLst: Unused = None, ) -> None: ... class _NamedCellStyleList(Serialisable): @@ -68,8 +77,8 @@ class _NamedCellStyleList(Serialisable): # Overwritten by property below # count: Integer cellStyle: Incomplete - __attrs__: Incomplete - def __init__(self, count: Incomplete | None = None, cellStyle=()) -> None: ... + __attrs__: ClassVar[tuple[str, ...]] + def __init__(self, count: Unused = None, cellStyle=()) -> None: ... @property def count(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi index b8fc40e52..a2ad642a1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi @@ -1,6 +1,9 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal -from openpyxl.descriptors import String +from openpyxl.descriptors import Strict, String +from openpyxl.descriptors.base import Integer, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable BUILTIN_FORMATS: Incomplete @@ -53,21 +56,21 @@ def is_builtin(fmt): ... def builtin_format_code(index): ... def builtin_format_id(fmt): ... -class NumberFormatDescriptor(String): - def __set__(self, instance, value) -> None: ... +class NumberFormatDescriptor(String[Incomplete]): + def __set__(self, instance: Serialisable | Strict, value) -> None: ... -class NumberFormat(Serialisable): # type: ignore[misc] - numFmtId: Incomplete - formatCode: Incomplete - def __init__(self, numFmtId: Incomplete | None = None, formatCode: Incomplete | None = None) -> None: ... +class NumberFormat(Serialisable): + numFmtId: Integer[Literal[False]] + formatCode: String[Literal[False]] + def __init__(self, numFmtId: _ConvertibleToInt, formatCode: str) -> None: ... -class NumberFormatList(Serialisable): # type: ignore[misc] +class NumberFormatList(Serialisable): # Overwritten by property below # count: Integer numFmt: Incomplete - __elements__: Incomplete - __attrs__: Incomplete - def __init__(self, count: Incomplete | None = None, numFmt=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] + def __init__(self, count: Unused = None, numFmt=()) -> None: ... @property def count(self): ... def __getitem__(self, idx): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/styleable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/styleable.pyi index b5602dbf1..6753a0222 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/styleable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/styleable.pyi @@ -1,30 +1,33 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from warnings import warn as warn +from openpyxl.descriptors import Strict +from openpyxl.descriptors.serialisable import Serialisable + class StyleDescriptor: collection: Incomplete key: Incomplete def __init__(self, collection, key) -> None: ... - def __set__(self, instance, value) -> None: ... - def __get__(self, instance, cls): ... + def __set__(self, instance: Serialisable | Strict, value) -> None: ... + def __get__(self, instance: Serialisable | Strict, cls: Unused): ... class NumberFormatDescriptor: key: str collection: str - def __set__(self, instance, value) -> None: ... - def __get__(self, instance, cls): ... + def __set__(self, instance: Serialisable | Strict, value) -> None: ... + def __get__(self, instance: Serialisable | Strict, cls: Unused): ... class NamedStyleDescriptor: key: str collection: str - def __set__(self, instance, value) -> None: ... - def __get__(self, instance, cls): ... + def __set__(self, instance: Serialisable | Strict, value) -> None: ... + def __get__(self, instance: Serialisable | Strict, cls: Unused): ... class StyleArrayDescriptor: key: Incomplete def __init__(self, key) -> None: ... - def __set__(self, instance, value) -> None: ... - def __get__(self, instance, cls): ... + def __set__(self, instance: Serialisable | Strict, value) -> None: ... + def __get__(self, instance: Serialisable | Strict, cls: Unused): ... class StyleableObject: font: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi index 31434efbf..ae36e4813 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi @@ -1,21 +1,30 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Typed +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.styles.cell_style import CellStyleList +from openpyxl.styles.colors import ColorList +from openpyxl.styles.named_styles import _NamedCellStyleList +from openpyxl.styles.numbers import NumberFormatList +from openpyxl.styles.table import TableStyleList class Stylesheet(Serialisable): tagname: str - numFmts: Incomplete + numFmts: Typed[NumberFormatList, Literal[False]] fonts: Incomplete fills: Incomplete borders: Incomplete - cellStyleXfs: Incomplete - cellXfs: Incomplete - cellStyles: Incomplete + cellStyleXfs: Typed[CellStyleList, Literal[False]] + cellXfs: Typed[CellStyleList, Literal[False]] + cellStyles: Typed[_NamedCellStyleList, Literal[False]] dxfs: Incomplete - tableStyles: Incomplete - colors: Incomplete - extLst: Incomplete - __elements__: Incomplete + tableStyles: Typed[TableStyleList, Literal[True]] + colors: Typed[ColorList, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] number_formats: Incomplete cell_styles: Incomplete alignments: Incomplete @@ -23,17 +32,17 @@ class Stylesheet(Serialisable): named_styles: Incomplete def __init__( self, - numFmts: Incomplete | None = None, + numFmts: NumberFormatList | None = None, fonts=(), fills=(), borders=(), - cellStyleXfs: Incomplete | None = None, - cellXfs: Incomplete | None = None, - cellStyles: Incomplete | None = None, + cellStyleXfs: CellStyleList | None = None, + cellXfs: CellStyleList | None = None, + cellStyles: _NamedCellStyleList | None = None, dxfs=(), - tableStyles: Incomplete | None = None, - colors: Incomplete | None = None, - extLst: Incomplete | None = None, + tableStyles: TableStyleList | None = None, + colors: ColorList | None = None, + extLst: Unused = None, ) -> None: ... @classmethod def from_tree(cls, node): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi index daf88cab3..9e83304b5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi @@ -1,45 +1,79 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, Integer, Set, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable +_TableStyleElementType: TypeAlias = Literal[ + "wholeTable", + "headerRow", + "totalRow", + "firstColumn", + "lastColumn", + "firstRowStripe", + "secondRowStripe", + "firstColumnStripe", + "secondColumnStripe", + "firstHeaderCell", + "lastHeaderCell", + "firstTotalCell", + "lastTotalCell", + "firstSubtotalColumn", + "secondSubtotalColumn", + "thirdSubtotalColumn", + "firstSubtotalRow", + "secondSubtotalRow", + "thirdSubtotalRow", + "blankRow", + "firstColumnSubheading", + "secondColumnSubheading", + "thirdColumnSubheading", + "firstRowSubheading", + "secondRowSubheading", + "thirdRowSubheading", + "pageFieldLabels", + "pageFieldValues", +] + class TableStyleElement(Serialisable): tagname: str - type: Incomplete - size: Incomplete - dxfId: Incomplete + type: Set[_TableStyleElementType] + size: Integer[Literal[True]] + dxfId: Integer[Literal[True]] def __init__( - self, type: Incomplete | None = None, size: Incomplete | None = None, dxfId: Incomplete | None = None + self, type: _TableStyleElementType, size: _ConvertibleToInt | None = None, dxfId: _ConvertibleToInt | None = None ) -> None: ... class TableStyle(Serialisable): tagname: str - name: Incomplete - pivot: Incomplete - table: Incomplete - count: Incomplete + name: String[Literal[False]] + pivot: Bool[Literal[True]] + table: Bool[Literal[True]] + count: Integer[Literal[True]] tableStyleElement: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - name: Incomplete | None = None, - pivot: Incomplete | None = None, - table: Incomplete | None = None, - count: Incomplete | None = None, + name: str, + pivot: _ConvertibleToBool | None = None, + table: _ConvertibleToBool | None = None, + count: _ConvertibleToInt | None = None, tableStyleElement=(), ) -> None: ... class TableStyleList(Serialisable): tagname: str - defaultTableStyle: Incomplete - defaultPivotStyle: Incomplete + defaultTableStyle: String[Literal[True]] + defaultPivotStyle: String[Literal[True]] tableStyle: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] def __init__( self, - count: Incomplete | None = None, - defaultTableStyle: str = "TableStyleMedium9", - defaultPivotStyle: str = "PivotStyleLight16", + count: Unused = None, + defaultTableStyle: str | None = "TableStyleMedium9", + defaultPivotStyle: str | None = "PivotStyleLight16", tableStyle=(), ) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi index 913a0ab35..9aa62c731 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi @@ -2,8 +2,10 @@ from _typeshed import Incomplete from collections import defaultdict from collections.abc import Generator from re import Pattern +from typing_extensions import Literal from openpyxl.descriptors import Sequence +from openpyxl.descriptors.base import Alias, Bool, Integer, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable RESERVED: frozenset[str] @@ -11,40 +13,40 @@ RESERVED_REGEX: Pattern[str] class DefinedName(Serialisable): tagname: str - name: Incomplete - comment: Incomplete - customMenu: Incomplete - description: Incomplete - help: Incomplete - statusBar: Incomplete - localSheetId: Incomplete - hidden: Incomplete - function: Incomplete - vbProcedure: Incomplete - xlm: Incomplete - functionGroupId: Incomplete - shortcutKey: Incomplete - publishToServer: Incomplete - workbookParameter: Incomplete + name: String[Literal[False]] + comment: String[Literal[True]] + customMenu: String[Literal[True]] + description: String[Literal[True]] + help: String[Literal[True]] + statusBar: String[Literal[True]] + localSheetId: Integer[Literal[True]] + hidden: Bool[Literal[True]] + function: Bool[Literal[True]] + vbProcedure: Bool[Literal[True]] + xlm: Bool[Literal[True]] + functionGroupId: Integer[Literal[True]] + shortcutKey: String[Literal[True]] + publishToServer: Bool[Literal[True]] + workbookParameter: Bool[Literal[True]] attr_text: Incomplete - value: Incomplete + value: Alias def __init__( self, - name: Incomplete | None = None, - comment: Incomplete | None = None, - customMenu: Incomplete | None = None, - description: Incomplete | None = None, - help: Incomplete | None = None, - statusBar: Incomplete | None = None, - localSheetId: Incomplete | None = None, - hidden: Incomplete | None = None, - function: Incomplete | None = None, - vbProcedure: Incomplete | None = None, - xlm: Incomplete | None = None, - functionGroupId: Incomplete | None = None, - shortcutKey: Incomplete | None = None, - publishToServer: Incomplete | None = None, - workbookParameter: Incomplete | None = None, + name: str, + comment: str | None = None, + customMenu: str | None = None, + description: str | None = None, + help: str | None = None, + statusBar: str | None = None, + localSheetId: _ConvertibleToInt | None = None, + hidden: _ConvertibleToBool | None = None, + function: _ConvertibleToBool | None = None, + vbProcedure: _ConvertibleToBool | None = None, + xlm: _ConvertibleToBool | None = None, + functionGroupId: _ConvertibleToInt | None = None, + shortcutKey: str | None = None, + publishToServer: _ConvertibleToBool | None = None, + workbookParameter: _ConvertibleToBool | None = None, attr_text: Incomplete | None = None, ) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi index 91eb85597..947ebe992 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi @@ -1,75 +1,79 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, Integer, NoneSet, String, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.packaging.relationship import Relationship -class ExternalCell(Serialisable): # type: ignore[misc] - r: Incomplete - t: Incomplete - vm: Incomplete +_ExternalCellType: TypeAlias = Literal["b", "d", "n", "e", "s", "str", "inlineStr"] + +class ExternalCell(Serialisable): + r: String[Literal[False]] + t: NoneSet[_ExternalCellType] + vm: Integer[Literal[True]] v: Incomplete def __init__( - self, r: Incomplete | None = None, t: Incomplete | None = None, vm: Incomplete | None = None, v: Incomplete | None = None + self, + r: str, + t: _ExternalCellType | Literal["none"] | None = None, + vm: _ConvertibleToInt | None = None, + v: Incomplete | None = None, ) -> None: ... -class ExternalRow(Serialisable): # type: ignore[misc] - r: Incomplete +class ExternalRow(Serialisable): + r: Integer[Literal[False]] cell: Incomplete - __elements__: Incomplete - def __init__(self, r=(), cell: Incomplete | None = None) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, r: _ConvertibleToInt, cell: Incomplete | None = None) -> None: ... -class ExternalSheetData(Serialisable): # type: ignore[misc] - sheetId: Incomplete - refreshError: Incomplete +class ExternalSheetData(Serialisable): + sheetId: Integer[Literal[False]] + refreshError: Bool[Literal[True]] row: Incomplete - __elements__: Incomplete - def __init__(self, sheetId: Incomplete | None = None, refreshError: Incomplete | None = None, row=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, sheetId: _ConvertibleToInt, refreshError: _ConvertibleToBool | None = None, row=()) -> None: ... -class ExternalSheetDataSet(Serialisable): # type: ignore[misc] +class ExternalSheetDataSet(Serialisable): sheetData: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, sheetData: Incomplete | None = None) -> None: ... -class ExternalSheetNames(Serialisable): # type: ignore[misc] +class ExternalSheetNames(Serialisable): sheetName: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, sheetName=()) -> None: ... class ExternalDefinedName(Serialisable): tagname: str - name: Incomplete - refersTo: Incomplete - sheetId: Incomplete - def __init__( - self, name: Incomplete | None = None, refersTo: Incomplete | None = None, sheetId: Incomplete | None = None - ) -> None: ... + name: String[Literal[False]] + refersTo: String[Literal[True]] + sheetId: Integer[Literal[True]] + def __init__(self, name: str, refersTo: str | None = None, sheetId: _ConvertibleToInt | None = None) -> None: ... class ExternalBook(Serialisable): tagname: str - sheetNames: Incomplete + sheetNames: Typed[ExternalSheetNames, Literal[True]] definedNames: Incomplete - sheetDataSet: Incomplete + sheetDataSet: Typed[ExternalSheetDataSet, Literal[True]] id: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - sheetNames: Incomplete | None = None, + sheetNames: ExternalSheetNames | None = None, definedNames=(), - sheetDataSet: Incomplete | None = None, + sheetDataSet: ExternalSheetDataSet | None = None, id: Incomplete | None = None, ) -> None: ... class ExternalLink(Serialisable): tagname: str mime_type: str - externalBook: Incomplete - file_link: Incomplete - __elements__: Incomplete + externalBook: Typed[ExternalBook, Literal[True]] + file_link: Typed[Relationship, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, - externalBook: Incomplete | None = None, - ddeLink: Incomplete | None = None, - oleLink: Incomplete | None = None, - extLst: Incomplete | None = None, + self, externalBook: ExternalBook | None = None, ddeLink: Unused = None, oleLink: Unused = None, extLst: Unused = None ) -> None: ... def to_tree(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi index e8926313f..442a4c4b7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi @@ -1,15 +1,18 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Integer, String, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable class FunctionGroup(Serialisable): tagname: str - name: Incomplete - def __init__(self, name: Incomplete | None = None) -> None: ... + name: String[Literal[False]] + def __init__(self, name: str) -> None: ... class FunctionGroupList(Serialisable): tagname: str - builtInGroupCount: Incomplete + builtInGroupCount: Integer[Literal[True]] functionGroup: Incomplete - __elements__: Incomplete - def __init__(self, builtInGroupCount: int = 16, functionGroup=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, builtInGroupCount: _ConvertibleToInt | None = 16, functionGroup=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi index b68cee451..0d2eebeba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi @@ -1,95 +1,111 @@ from _typeshed import Incomplete +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import ( + Bool, + Float, + Integer, + NoneSet, + String, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) from openpyxl.descriptors.serialisable import Serialisable +_WorkbookPropertiesShowObjects: TypeAlias = Literal["all", "placeholders"] +_WorkbookPropertiesUpdateLinks: TypeAlias = Literal["userSet", "never", "always"] +_CalcPropertiesCalcMode: TypeAlias = Literal["manual", "auto", "autoNoTable"] +_CalcPropertiesRefMode: TypeAlias = Literal["A1", "R1C1"] + class WorkbookProperties(Serialisable): tagname: str - date1904: Incomplete - dateCompatibility: Incomplete - showObjects: Incomplete - showBorderUnselectedTables: Incomplete - filterPrivacy: Incomplete - promptedSolutions: Incomplete - showInkAnnotation: Incomplete - backupFile: Incomplete - saveExternalLinkValues: Incomplete - updateLinks: Incomplete - codeName: Incomplete - hidePivotFieldList: Incomplete - showPivotChartFilter: Incomplete - allowRefreshQuery: Incomplete - publishItems: Incomplete - checkCompatibility: Incomplete - autoCompressPictures: Incomplete - refreshAllConnections: Incomplete - defaultThemeVersion: Incomplete + date1904: Bool[Literal[True]] + dateCompatibility: Bool[Literal[True]] + showObjects: NoneSet[_WorkbookPropertiesShowObjects] + showBorderUnselectedTables: Bool[Literal[True]] + filterPrivacy: Bool[Literal[True]] + promptedSolutions: Bool[Literal[True]] + showInkAnnotation: Bool[Literal[True]] + backupFile: Bool[Literal[True]] + saveExternalLinkValues: Bool[Literal[True]] + updateLinks: NoneSet[_WorkbookPropertiesUpdateLinks] + codeName: String[Literal[True]] + hidePivotFieldList: Bool[Literal[True]] + showPivotChartFilter: Bool[Literal[True]] + allowRefreshQuery: Bool[Literal[True]] + publishItems: Bool[Literal[True]] + checkCompatibility: Bool[Literal[True]] + autoCompressPictures: Bool[Literal[True]] + refreshAllConnections: Bool[Literal[True]] + defaultThemeVersion: Integer[Literal[True]] def __init__( self, - date1904: Incomplete | None = None, - dateCompatibility: Incomplete | None = None, - showObjects: Incomplete | None = None, - showBorderUnselectedTables: Incomplete | None = None, - filterPrivacy: Incomplete | None = None, - promptedSolutions: Incomplete | None = None, - showInkAnnotation: Incomplete | None = None, - backupFile: Incomplete | None = None, - saveExternalLinkValues: Incomplete | None = None, - updateLinks: Incomplete | None = None, - codeName: Incomplete | None = None, - hidePivotFieldList: Incomplete | None = None, - showPivotChartFilter: Incomplete | None = None, - allowRefreshQuery: Incomplete | None = None, - publishItems: Incomplete | None = None, - checkCompatibility: Incomplete | None = None, - autoCompressPictures: Incomplete | None = None, - refreshAllConnections: Incomplete | None = None, - defaultThemeVersion: Incomplete | None = None, + date1904: _ConvertibleToBool | None = None, + dateCompatibility: _ConvertibleToBool | None = None, + showObjects: _WorkbookPropertiesShowObjects | Literal["none"] | None = None, + showBorderUnselectedTables: _ConvertibleToBool | None = None, + filterPrivacy: _ConvertibleToBool | None = None, + promptedSolutions: _ConvertibleToBool | None = None, + showInkAnnotation: _ConvertibleToBool | None = None, + backupFile: _ConvertibleToBool | None = None, + saveExternalLinkValues: _ConvertibleToBool | None = None, + updateLinks: _WorkbookPropertiesUpdateLinks | Literal["none"] | None = None, + codeName: str | None = None, + hidePivotFieldList: _ConvertibleToBool | None = None, + showPivotChartFilter: _ConvertibleToBool | None = None, + allowRefreshQuery: _ConvertibleToBool | None = None, + publishItems: _ConvertibleToBool | None = None, + checkCompatibility: _ConvertibleToBool | None = None, + autoCompressPictures: _ConvertibleToBool | None = None, + refreshAllConnections: _ConvertibleToBool | None = None, + defaultThemeVersion: _ConvertibleToInt | None = None, ) -> None: ... class CalcProperties(Serialisable): tagname: str - calcId: Incomplete - calcMode: Incomplete - fullCalcOnLoad: Incomplete - refMode: Incomplete - iterate: Incomplete - iterateCount: Incomplete - iterateDelta: Incomplete - fullPrecision: Incomplete - calcCompleted: Incomplete - calcOnSave: Incomplete - concurrentCalc: Incomplete - concurrentManualCount: Incomplete - forceFullCalc: Incomplete + calcId: Integer[Literal[False]] + calcMode: NoneSet[_CalcPropertiesCalcMode] + fullCalcOnLoad: Bool[Literal[True]] + refMode: NoneSet[_CalcPropertiesRefMode] + iterate: Bool[Literal[True]] + iterateCount: Integer[Literal[True]] + iterateDelta: Float[Literal[True]] + fullPrecision: Bool[Literal[True]] + calcCompleted: Bool[Literal[True]] + calcOnSave: Bool[Literal[True]] + concurrentCalc: Bool[Literal[True]] + concurrentManualCount: Integer[Literal[True]] + forceFullCalc: Bool[Literal[True]] def __init__( self, - calcId: int = 124519, - calcMode: Incomplete | None = None, - fullCalcOnLoad: bool = True, - refMode: Incomplete | None = None, - iterate: Incomplete | None = None, - iterateCount: Incomplete | None = None, - iterateDelta: Incomplete | None = None, - fullPrecision: Incomplete | None = None, - calcCompleted: Incomplete | None = None, - calcOnSave: Incomplete | None = None, - concurrentCalc: Incomplete | None = None, - concurrentManualCount: Incomplete | None = None, - forceFullCalc: Incomplete | None = None, + calcId: _ConvertibleToInt = 124519, + calcMode: _CalcPropertiesCalcMode | Literal["none"] | None = None, + fullCalcOnLoad: _ConvertibleToBool | None = True, + refMode: _CalcPropertiesRefMode | Literal["none"] | None = None, + iterate: _ConvertibleToBool | None = None, + iterateCount: _ConvertibleToInt | None = None, + iterateDelta: _ConvertibleToFloat | None = None, + fullPrecision: _ConvertibleToBool | None = None, + calcCompleted: _ConvertibleToBool | None = None, + calcOnSave: _ConvertibleToBool | None = None, + concurrentCalc: _ConvertibleToBool | None = None, + concurrentManualCount: _ConvertibleToInt | None = None, + forceFullCalc: _ConvertibleToBool | None = None, ) -> None: ... class FileVersion(Serialisable): tagname: str - appName: Incomplete - lastEdited: Incomplete - lowestEdited: Incomplete - rupBuild: Incomplete + appName: String[Literal[True]] + lastEdited: String[Literal[True]] + lowestEdited: String[Literal[True]] + rupBuild: String[Literal[True]] codeName: Incomplete def __init__( self, - appName: Incomplete | None = None, - lastEdited: Incomplete | None = None, - lowestEdited: Incomplete | None = None, - rupBuild: Incomplete | None = None, + appName: str | None = None, + lastEdited: str | None = None, + lowestEdited: str | None = None, + rupBuild: str | None = None, codeName: Incomplete | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi index f978e8e85..3e5bdb636 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi @@ -1,45 +1,48 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Alias, Bool, Integer, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable class WorkbookProtection(Serialisable): tagname: str - workbook_password: Incomplete - workbookPasswordCharacterSet: Incomplete - revision_password: Incomplete - revisionsPasswordCharacterSet: Incomplete - lockStructure: Incomplete - lock_structure: Incomplete - lockWindows: Incomplete - lock_windows: Incomplete - lockRevision: Incomplete - lock_revision: Incomplete - revisionsAlgorithmName: Incomplete + workbook_password: Alias + workbookPasswordCharacterSet: String[Literal[True]] + revision_password: Alias + revisionsPasswordCharacterSet: String[Literal[True]] + lockStructure: Bool[Literal[True]] + lock_structure: Alias + lockWindows: Bool[Literal[True]] + lock_windows: Alias + lockRevision: Bool[Literal[True]] + lock_revision: Alias + revisionsAlgorithmName: String[Literal[True]] revisionsHashValue: Incomplete revisionsSaltValue: Incomplete - revisionsSpinCount: Incomplete - workbookAlgorithmName: Incomplete + revisionsSpinCount: Integer[Literal[True]] + workbookAlgorithmName: String[Literal[True]] workbookHashValue: Incomplete workbookSaltValue: Incomplete - workbookSpinCount: Incomplete - __attrs__: Incomplete + workbookSpinCount: Integer[Literal[True]] + __attrs__: ClassVar[tuple[str, ...]] def __init__( self, workbookPassword: Incomplete | None = None, - workbookPasswordCharacterSet: Incomplete | None = None, + workbookPasswordCharacterSet: str | None = None, revisionsPassword: Incomplete | None = None, - revisionsPasswordCharacterSet: Incomplete | None = None, - lockStructure: Incomplete | None = None, - lockWindows: Incomplete | None = None, - lockRevision: Incomplete | None = None, - revisionsAlgorithmName: Incomplete | None = None, + revisionsPasswordCharacterSet: str | None = None, + lockStructure: _ConvertibleToBool | None = None, + lockWindows: _ConvertibleToBool | None = None, + lockRevision: _ConvertibleToBool | None = None, + revisionsAlgorithmName: str | None = None, revisionsHashValue: Incomplete | None = None, revisionsSaltValue: Incomplete | None = None, - revisionsSpinCount: Incomplete | None = None, - workbookAlgorithmName: Incomplete | None = None, + revisionsSpinCount: _ConvertibleToInt | None = None, + workbookAlgorithmName: str | None = None, workbookHashValue: Incomplete | None = None, workbookSaltValue: Incomplete | None = None, - workbookSpinCount: Incomplete | None = None, + workbookSpinCount: _ConvertibleToInt | None = None, ) -> None: ... def set_workbook_password(self, value: str = "", already_hashed: bool = False) -> None: ... @property @@ -58,20 +61,20 @@ DocumentSecurity = WorkbookProtection class FileSharing(Serialisable): tagname: str - readOnlyRecommended: Incomplete - userName: Incomplete + readOnlyRecommended: Bool[Literal[True]] + userName: String[Literal[True]] reservationPassword: Incomplete - algorithmName: Incomplete + algorithmName: String[Literal[True]] hashValue: Incomplete saltValue: Incomplete - spinCount: Incomplete + spinCount: Integer[Literal[True]] def __init__( self, - readOnlyRecommended: Incomplete | None = None, - userName: Incomplete | None = None, + readOnlyRecommended: _ConvertibleToBool | None = None, + userName: str | None = None, reservationPassword: Incomplete | None = None, - algorithmName: Incomplete | None = None, + algorithmName: str | None = None, hashValue: Incomplete | None = None, saltValue: Incomplete | None = None, - spinCount: Incomplete | None = None, + spinCount: _ConvertibleToInt | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi index 9c595258f..3c188b2c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi @@ -1,24 +1,29 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, NoneSet, String, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable +_SmartTagPropertiesShow: TypeAlias = Literal["all", "noIndicator"] + class SmartTag(Serialisable): tagname: str - namespaceUri: Incomplete - name: Incomplete - url: Incomplete - def __init__( - self, namespaceUri: Incomplete | None = None, name: Incomplete | None = None, url: Incomplete | None = None - ) -> None: ... + namespaceUri: String[Literal[True]] + name: String[Literal[True]] + url: String[Literal[True]] + def __init__(self, namespaceUri: str | None = None, name: str | None = None, url: str | None = None) -> None: ... class SmartTagList(Serialisable): tagname: str smartTagType: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, smartTagType=()) -> None: ... class SmartTagProperties(Serialisable): tagname: str - embed: Incomplete - show: Incomplete - def __init__(self, embed: Incomplete | None = None, show: Incomplete | None = None) -> None: ... + embed: Bool[Literal[True]] + show: NoneSet[_SmartTagPropertiesShow] + def __init__( + self, embed: _ConvertibleToBool | None = None, show: _SmartTagPropertiesShow | Literal["none"] | None = None + ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi index cedcaacb3..d9ecb97e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi @@ -1,95 +1,134 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, Integer, NoneSet, String, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +_BookViewVilibility: TypeAlias = Literal["visible", "hidden", "veryHidden"] +_CustomWorkbookViewShowComments: TypeAlias = Literal["commNone", "commIndicator", "commIndAndComment"] +_CustomWorkbookViewShowObjects: TypeAlias = Literal["all", "placeholders"] + class BookView(Serialisable): tagname: str - visibility: Incomplete - minimized: Incomplete - showHorizontalScroll: Incomplete - showVerticalScroll: Incomplete - showSheetTabs: Incomplete - xWindow: Incomplete - yWindow: Incomplete - windowWidth: Incomplete - windowHeight: Incomplete - tabRatio: Incomplete - firstSheet: Incomplete - activeTab: Incomplete - autoFilterDateGrouping: Incomplete - extLst: Incomplete - __elements__: Incomplete + visibility: NoneSet[_BookViewVilibility] + minimized: Bool[Literal[True]] + showHorizontalScroll: Bool[Literal[True]] + showVerticalScroll: Bool[Literal[True]] + showSheetTabs: Bool[Literal[True]] + xWindow: Integer[Literal[True]] + yWindow: Integer[Literal[True]] + windowWidth: Integer[Literal[True]] + windowHeight: Integer[Literal[True]] + tabRatio: Integer[Literal[True]] + firstSheet: Integer[Literal[True]] + activeTab: Integer[Literal[True]] + autoFilterDateGrouping: Bool[Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - visibility: str = "visible", - minimized: bool = False, - showHorizontalScroll: bool = True, - showVerticalScroll: bool = True, - showSheetTabs: bool = True, - xWindow: Incomplete | None = None, - yWindow: Incomplete | None = None, - windowWidth: Incomplete | None = None, - windowHeight: Incomplete | None = None, - tabRatio: int = 600, - firstSheet: int = 0, - activeTab: int = 0, - autoFilterDateGrouping: bool = True, - extLst: Incomplete | None = None, + visibility: _BookViewVilibility | Literal["none"] | None = "visible", + minimized: _ConvertibleToBool | None = False, + showHorizontalScroll: _ConvertibleToBool | None = True, + showVerticalScroll: _ConvertibleToBool | None = True, + showSheetTabs: _ConvertibleToBool | None = True, + xWindow: _ConvertibleToInt | None = None, + yWindow: _ConvertibleToInt | None = None, + windowWidth: _ConvertibleToInt | None = None, + windowHeight: _ConvertibleToInt | None = None, + tabRatio: _ConvertibleToInt | None = 600, + firstSheet: _ConvertibleToInt | None = 0, + activeTab: _ConvertibleToInt | None = 0, + autoFilterDateGrouping: _ConvertibleToBool | None = True, + extLst: Unused = None, ) -> None: ... class CustomWorkbookView(Serialisable): tagname: str - name: Incomplete + name: String[Literal[False]] guid: Incomplete - autoUpdate: Incomplete - mergeInterval: Incomplete - changesSavedWin: Incomplete - onlySync: Incomplete - personalView: Incomplete - includePrintSettings: Incomplete - includeHiddenRowCol: Incomplete - maximized: Incomplete - minimized: Incomplete - showHorizontalScroll: Incomplete - showVerticalScroll: Incomplete - showSheetTabs: Incomplete - xWindow: Incomplete - yWindow: Incomplete - windowWidth: Incomplete - windowHeight: Incomplete - tabRatio: Incomplete - activeSheetId: Incomplete - showFormulaBar: Incomplete - showStatusbar: Incomplete - showComments: Incomplete - showObjects: Incomplete - extLst: Incomplete - __elements__: Incomplete + autoUpdate: Bool[Literal[True]] + mergeInterval: Integer[Literal[True]] + changesSavedWin: Bool[Literal[True]] + onlySync: Bool[Literal[True]] + personalView: Bool[Literal[True]] + includePrintSettings: Bool[Literal[True]] + includeHiddenRowCol: Bool[Literal[True]] + maximized: Bool[Literal[True]] + minimized: Bool[Literal[True]] + showHorizontalScroll: Bool[Literal[True]] + showVerticalScroll: Bool[Literal[True]] + showSheetTabs: Bool[Literal[True]] + xWindow: Integer[Literal[False]] + yWindow: Integer[Literal[False]] + windowWidth: Integer[Literal[False]] + windowHeight: Integer[Literal[False]] + tabRatio: Integer[Literal[True]] + activeSheetId: Integer[Literal[False]] + showFormulaBar: Bool[Literal[True]] + showStatusbar: Bool[Literal[True]] + showComments: NoneSet[_CustomWorkbookViewShowComments] + showObjects: NoneSet[_CustomWorkbookViewShowObjects] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( self, - name: Incomplete | None = None, + name: str, guid: Incomplete | None = None, - autoUpdate: Incomplete | None = None, - mergeInterval: Incomplete | None = None, - changesSavedWin: Incomplete | None = None, - onlySync: Incomplete | None = None, - personalView: Incomplete | None = None, - includePrintSettings: Incomplete | None = None, - includeHiddenRowCol: Incomplete | None = None, - maximized: Incomplete | None = None, - minimized: Incomplete | None = None, - showHorizontalScroll: Incomplete | None = None, - showVerticalScroll: Incomplete | None = None, - showSheetTabs: Incomplete | None = None, - xWindow: Incomplete | None = None, - yWindow: Incomplete | None = None, - windowWidth: Incomplete | None = None, - windowHeight: Incomplete | None = None, - tabRatio: Incomplete | None = None, - activeSheetId: Incomplete | None = None, - showFormulaBar: Incomplete | None = None, - showStatusbar: Incomplete | None = None, - showComments: str = "commIndicator", - showObjects: str = "all", - extLst: Incomplete | None = None, + autoUpdate: _ConvertibleToBool | None = None, + mergeInterval: _ConvertibleToInt | None = None, + changesSavedWin: _ConvertibleToBool | None = None, + onlySync: _ConvertibleToBool | None = None, + personalView: _ConvertibleToBool | None = None, + includePrintSettings: _ConvertibleToBool | None = None, + includeHiddenRowCol: _ConvertibleToBool | None = None, + maximized: _ConvertibleToBool | None = None, + minimized: _ConvertibleToBool | None = None, + showHorizontalScroll: _ConvertibleToBool | None = None, + showVerticalScroll: _ConvertibleToBool | None = None, + showSheetTabs: _ConvertibleToBool | None = None, + *, + xWindow: _ConvertibleToInt, + yWindow: _ConvertibleToInt, + windowWidth: _ConvertibleToInt, + windowHeight: _ConvertibleToInt, + tabRatio: _ConvertibleToInt | None = None, + activeSheetId: _ConvertibleToInt, + showFormulaBar: _ConvertibleToBool | None = None, + showStatusbar: _ConvertibleToBool | None = None, + showComments: _CustomWorkbookViewShowComments | Literal["none"] | None = "commIndicator", + showObjects: _CustomWorkbookViewShowObjects | Literal["none"] | None = "all", + extLst: Unused = None, + ) -> None: ... + @overload + def __init__( + self, + name: str, + guid: Incomplete | None, + autoUpdate: _ConvertibleToBool | None, + mergeInterval: _ConvertibleToInt | None, + changesSavedWin: _ConvertibleToBool | None, + onlySync: _ConvertibleToBool | None, + personalView: _ConvertibleToBool | None, + includePrintSettings: _ConvertibleToBool | None, + includeHiddenRowCol: _ConvertibleToBool | None, + maximized: _ConvertibleToBool | None, + minimized: _ConvertibleToBool | None, + showHorizontalScroll: _ConvertibleToBool | None, + showVerticalScroll: _ConvertibleToBool | None, + showSheetTabs: _ConvertibleToBool | None, + xWindow: _ConvertibleToInt, + yWindow: _ConvertibleToInt, + windowWidth: _ConvertibleToInt, + windowHeight: _ConvertibleToInt, + tabRatio: _ConvertibleToInt | None, + activeSheetId: _ConvertibleToInt, + showFormulaBar: _ConvertibleToBool | None = None, + showStatusbar: _ConvertibleToBool | None = None, + showComments: _CustomWorkbookViewShowComments | Literal["none"] | None = "commIndicator", + showObjects: _CustomWorkbookViewShowObjects | Literal["none"] | None = "all", + extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi index c5a6bfe35..62bbf82c0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi @@ -1,23 +1,52 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, Integer, NoneSet, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable +_WebPublishingTargetScreenSize: TypeAlias = Literal[ + "544x376", + "640x480", + "720x512", + "800x600", + "1024x768", + "1152x882", + "1152x900", + "1280x1024", + "1600x1200", + "1800x1440", + "1920x1200", +] + class WebPublishObject(Serialisable): tagname: str - id: Incomplete - divId: Incomplete - sourceObject: Incomplete - destinationFile: Incomplete - title: Incomplete - autoRepublish: Incomplete + id: Integer[Literal[False]] + divId: String[Literal[False]] + sourceObject: String[Literal[True]] + destinationFile: String[Literal[False]] + title: String[Literal[True]] + autoRepublish: Bool[Literal[True]] + @overload + def __init__( + self, + id: _ConvertibleToInt, + divId: str, + sourceObject: str | None = None, + *, + destinationFile: str, + title: str | None = None, + autoRepublish: _ConvertibleToBool | None = None, + ) -> None: ... + @overload def __init__( self, - id: Incomplete | None = None, - divId: Incomplete | None = None, - sourceObject: Incomplete | None = None, - destinationFile: Incomplete | None = None, - title: Incomplete | None = None, - autoRepublish: Incomplete | None = None, + id: _ConvertibleToInt, + divId: str, + sourceObject: str | None, + destinationFile: str, + title: str | None = None, + autoRepublish: _ConvertibleToBool | None = None, ) -> None: ... class WebPublishObjectList(Serialisable): @@ -25,31 +54,31 @@ class WebPublishObjectList(Serialisable): # Overwritten by property below # count: Integer webPublishObject: Incomplete - __elements__: Incomplete - def __init__(self, count: Incomplete | None = None, webPublishObject=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, count: Unused = None, webPublishObject=()) -> None: ... @property def count(self): ... class WebPublishing(Serialisable): tagname: str - css: Incomplete - thicket: Incomplete - longFileNames: Incomplete - vml: Incomplete - allowPng: Incomplete - targetScreenSize: Incomplete - dpi: Incomplete - codePage: Incomplete - characterSet: Incomplete + css: Bool[Literal[True]] + thicket: Bool[Literal[True]] + longFileNames: Bool[Literal[True]] + vml: Bool[Literal[True]] + allowPng: Bool[Literal[True]] + targetScreenSize: NoneSet[_WebPublishingTargetScreenSize] + dpi: Integer[Literal[True]] + codePage: Integer[Literal[True]] + characterSet: String[Literal[True]] def __init__( self, - css: Incomplete | None = None, - thicket: Incomplete | None = None, - longFileNames: Incomplete | None = None, - vml: Incomplete | None = None, - allowPng: Incomplete | None = None, - targetScreenSize: str = "800x600", - dpi: Incomplete | None = None, - codePage: Incomplete | None = None, - characterSet: Incomplete | None = None, + css: _ConvertibleToBool | None = None, + thicket: _ConvertibleToBool | None = None, + longFileNames: _ConvertibleToBool | None = None, + vml: _ConvertibleToBool | None = None, + allowPng: _ConvertibleToBool | None = None, + targetScreenSize: _WebPublishingTargetScreenSize | Literal["none"] | None = "800x600", + dpi: _ConvertibleToInt | None = None, + codePage: _ConvertibleToInt | None = None, + characterSet: str | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi index f6a409314..c244ba5e8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi @@ -1,22 +1,38 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from collections.abc import Generator +from typing import overload +from typing_extensions import Literal from openpyxl.descriptors import Strict +from openpyxl.descriptors.base import MinMax, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -class CellRange(Serialisable): # type: ignore[misc] - min_col: Incomplete - min_row: Incomplete - max_col: Incomplete - max_row: Incomplete +class CellRange(Serialisable): + min_col: MinMax[int, Literal[False]] + min_row: MinMax[int, Literal[False]] + max_col: MinMax[int, Literal[False]] + max_row: MinMax[int, Literal[False]] title: Incomplete + + @overload + def __init__( + self, + range_string: Incomplete, + min_col: Unused = None, + min_row: Unused = None, + max_col: Unused = None, + max_row: Unused = None, + title: Incomplete | None = None, + ) -> None: ... + @overload def __init__( self, - range_string: Incomplete | None = None, - min_col: Incomplete | None = None, - min_row: Incomplete | None = None, - max_col: Incomplete | None = None, - max_row: Incomplete | None = None, + range_string: None = None, + *, + min_col: _ConvertibleToInt, + min_row: _ConvertibleToInt, + max_col: _ConvertibleToInt, + max_row: _ConvertibleToInt, title: Incomplete | None = None, ) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi index d3c3434a4..e6e2e4c95 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi @@ -1,14 +1,17 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import String from openpyxl.descriptors.serialisable import Serialisable class CellWatch(Serialisable): tagname: str - r: Incomplete - def __init__(self, r: Incomplete | None = None) -> None: ... + r: String[Literal[True]] + def __init__(self, r: str) -> None: ... class CellWatches(Serialisable): tagname: str cellWatch: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, cellWatch=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi index 99cfd33de..33139070e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi @@ -1,57 +1,65 @@ from _typeshed import Incomplete +from typing import ClassVar, overload +from typing_extensions import Literal +from openpyxl.descriptors.base import Bool, Integer, String, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.worksheet.ole import ObjectAnchor class ControlProperty(Serialisable): tagname: str - anchor: Incomplete - locked: Incomplete - defaultSize: Incomplete - disabled: Incomplete - recalcAlways: Incomplete - uiObject: Incomplete - autoFill: Incomplete - autoLine: Incomplete - autoPict: Incomplete - macro: Incomplete - altText: Incomplete - linkedCell: Incomplete - listFillRange: Incomplete - cf: Incomplete + anchor: Typed[ObjectAnchor, Literal[False]] + locked: Bool[Literal[True]] + defaultSize: Bool[Literal[True]] + _print: Bool[Literal[True]] # Not private. Avoids name clash + disabled: Bool[Literal[True]] + recalcAlways: Bool[Literal[True]] + uiObject: Bool[Literal[True]] + autoFill: Bool[Literal[True]] + autoLine: Bool[Literal[True]] + autoPict: Bool[Literal[True]] + macro: String[Literal[True]] + altText: String[Literal[True]] + linkedCell: String[Literal[True]] + listFillRange: String[Literal[True]] + cf: String[Literal[True]] id: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - anchor: Incomplete | None = None, - locked: bool = True, - defaultSize: bool = True, - _print: bool = True, - disabled: bool = False, - recalcAlways: bool = False, - uiObject: bool = False, - autoFill: bool = True, - autoLine: bool = True, - autoPict: bool = True, - macro: Incomplete | None = None, - altText: Incomplete | None = None, - linkedCell: Incomplete | None = None, - listFillRange: Incomplete | None = None, - cf: str = "pict", + anchor: ObjectAnchor, + locked: _ConvertibleToBool | None = True, + defaultSize: _ConvertibleToBool | None = True, + _print: _ConvertibleToBool | None = True, + disabled: _ConvertibleToBool | None = False, + recalcAlways: _ConvertibleToBool | None = False, + uiObject: _ConvertibleToBool | None = False, + autoFill: _ConvertibleToBool | None = True, + autoLine: _ConvertibleToBool | None = True, + autoPict: _ConvertibleToBool | None = True, + macro: str | None = None, + altText: str | None = None, + linkedCell: str | None = None, + listFillRange: str | None = None, + cf: str | None = "pict", id: Incomplete | None = None, ) -> None: ... class Control(Serialisable): tagname: str - controlPr: Incomplete - shapeId: Incomplete - name: Incomplete - __elements__: Incomplete + controlPr: Typed[ControlProperty, Literal[True]] + shapeId: Integer[Literal[False]] + name: String[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( - self, controlPr: Incomplete | None = None, shapeId: Incomplete | None = None, name: Incomplete | None = None + self, controlPr: ControlProperty | None = None, *, shapeId: _ConvertibleToInt, name: str | None = None ) -> None: ... + @overload + def __init__(self, controlPr: ControlProperty | None, shapeId: _ConvertibleToInt, name: str | None = None) -> None: ... class Controls(Serialisable): tagname: str control: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, control=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi index 3c9b6616e..f09142011 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi @@ -1,14 +1,17 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import String from openpyxl.descriptors.serialisable import Serialisable class CustomProperty(Serialisable): tagname: str - name: Incomplete - def __init__(self, name: Incomplete | None = None) -> None: ... + name: String[Literal[False]] + def __init__(self, name: str) -> None: ... class CustomProperties(Serialisable): tagname: str customPr: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, customPr=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi index 335fbd599..fca6efb4f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi @@ -1,49 +1,82 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import ( + Alias, + Bool, + Convertible, + Integer, + NoneSet, + String, + _ConvertibleToBool, + _ConvertibleToInt, + _ConvertibleToMultiCellRange, +) from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.worksheet.cell_range import MultiCellRange + +_DataValidationType: TypeAlias = Literal["whole", "decimal", "list", "date", "time", "textLength", "custom"] +_DataValidationErrorStyle: TypeAlias = Literal["stop", "warning", "information"] +_DataValidationImeMode: TypeAlias = Literal[ + "noControl", + "off", + "on", + "disabled", + "hiragana", + "fullKatakana", + "halfKatakana", + "fullAlpha", + "halfAlpha", + "fullHangul", + "halfHangul", +] +_DataValidationOperator: TypeAlias = Literal[ + "between", "notBetween", "equal", "notEqual", "lessThan", "lessThanOrEqual", "greaterThan", "greaterThanOrEqual" +] def collapse_cell_addresses(cells, input_ranges=()): ... def expand_cell_ranges(range_string): ... class DataValidation(Serialisable): tagname: str - sqref: Incomplete - cells: Incomplete - ranges: Incomplete - showErrorMessage: Incomplete - showDropDown: Incomplete - hide_drop_down: Incomplete - showInputMessage: Incomplete - allowBlank: Incomplete - allow_blank: Incomplete - errorTitle: Incomplete - error: Incomplete - promptTitle: Incomplete - prompt: Incomplete + sqref: Convertible[MultiCellRange, Literal[False]] + cells: Alias + ranges: Alias + showDropDown: Bool[Literal[True]] + hide_drop_down: Alias + showInputMessage: Bool[Literal[True]] + showErrorMessage: Bool[Literal[True]] + allowBlank: Bool[Literal[True]] + allow_blank: Alias + errorTitle: String[Literal[True]] + error: String[Literal[True]] + promptTitle: String[Literal[True]] + prompt: String[Literal[True]] formula1: Incomplete formula2: Incomplete - type: Incomplete - errorStyle: Incomplete - imeMode: Incomplete - operator: Incomplete - validation_type: Incomplete + type: NoneSet[_DataValidationType] + errorStyle: NoneSet[_DataValidationErrorStyle] + imeMode: NoneSet[_DataValidationImeMode] + operator: NoneSet[_DataValidationOperator] + validation_type: Alias def __init__( self, - type: Incomplete | None = None, + type: _DataValidationType | Literal["none"] | None = None, formula1: Incomplete | None = None, formula2: Incomplete | None = None, - showErrorMessage: bool = False, - showInputMessage: bool = False, - showDropDown: Incomplete | None = False, - allowBlank: Incomplete | None = False, - sqref=(), - promptTitle: Incomplete | None = None, - errorStyle: Incomplete | None = None, - error: Incomplete | None = None, - prompt: Incomplete | None = None, - errorTitle: Incomplete | None = None, - imeMode: Incomplete | None = None, - operator: Incomplete | None = None, + showErrorMessage: _ConvertibleToBool | None = False, + showInputMessage: _ConvertibleToBool | None = False, + showDropDown: _ConvertibleToBool | None = False, + allowBlank: _ConvertibleToBool | None = False, + sqref: _ConvertibleToMultiCellRange = (), + promptTitle: str | None = None, + errorStyle: _DataValidationErrorStyle | Literal["none"] | None = None, + error: str | None = None, + prompt: str | None = None, + errorTitle: str | None = None, + imeMode: _DataValidationImeMode | Literal["none"] | None = None, + operator: _DataValidationOperator | Literal["none"] | None = None, allow_blank: Incomplete | None = False, ) -> None: ... def add(self, cell) -> None: ... @@ -51,17 +84,17 @@ class DataValidation(Serialisable): class DataValidationList(Serialisable): tagname: str - disablePrompts: Incomplete - xWindow: Incomplete - yWindow: Incomplete + disablePrompts: Bool[Literal[True]] + xWindow: Integer[Literal[True]] + yWindow: Integer[Literal[True]] dataValidation: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] def __init__( self, - disablePrompts: Incomplete | None = None, - xWindow: Incomplete | None = None, - yWindow: Incomplete | None = None, + disablePrompts: _ConvertibleToBool | None = None, + xWindow: _ConvertibleToInt | None = None, + yWindow: _ConvertibleToInt | None = None, count: Incomplete | None = None, dataValidation=(), ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi index cdeac3983..3d714605b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi @@ -1,10 +1,19 @@ from _typeshed import Incomplete, Unused from collections.abc import Callable, Iterator from typing import ClassVar, Generic, TypeVar -from typing_extensions import Self +from typing_extensions import Literal, Self from openpyxl.descriptors import Strict -from openpyxl.descriptors.base import Alias, Bool, Float, Integer, String +from openpyxl.descriptors.base import ( + Alias, + Bool, + Float, + Integer, + String, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) from openpyxl.descriptors.serialisable import Serialisable from openpyxl.styles.styleable import StyleableObject from openpyxl.utils.bound_dictionary import BoundDictionary @@ -16,21 +25,21 @@ _DimT = TypeVar("_DimT", bound=Dimension) class Dimension(Strict, StyleableObject): __fields__: ClassVar[tuple[str, ...]] - index: Integer - hidden: Bool - outlineLevel: Integer + index: Integer[Literal[False]] + hidden: Bool[Literal[False]] + outlineLevel: Integer[Literal[True]] outline_level: Alias - collapsed: Bool + collapsed: Bool[Literal[False]] style: Alias def __init__( self, - index: int, - hidden: bool, - outlineLevel: int | None, - collapsed: bool, + index: _ConvertibleToInt, + hidden: _ConvertibleToBool, + outlineLevel: _ConvertibleToInt | None, + collapsed: _ConvertibleToBool, worksheet: Worksheet, - visible: bool = True, + visible: Unused = True, style: Incomplete | None = None, ) -> None: ... def __iter__(self) -> Iterator[tuple[str, str]]: ... @@ -39,29 +48,28 @@ class Dimension(Strict, StyleableObject): class RowDimension(Dimension): r: Alias s: Alias - ht: Float + ht: Float[Literal[True]] height: Alias - thickBot: Bool - thickTop: Bool - + thickBot: Bool[Literal[False]] + thickTop: Bool[Literal[False]] def __init__( self, worksheet: Worksheet, index: int = 0, - ht: Incomplete | None = None, - customHeight: Incomplete | None = None, + ht: _ConvertibleToFloat | None = None, + customHeight: Unused = None, s: Incomplete | None = None, - customFormat: Incomplete | None = None, - hidden: bool = False, - outlineLevel: int = 0, - outline_level: Incomplete | None = None, - collapsed: bool = False, + customFormat: Unused = None, + hidden: _ConvertibleToBool = None, + outlineLevel: _ConvertibleToInt | None = 0, + outline_level: _ConvertibleToInt | None = None, + collapsed: _ConvertibleToBool = None, visible: Incomplete | None = None, height: Incomplete | None = None, r: Incomplete | None = None, - spans: Incomplete | None = None, - thickBot: Incomplete | None = None, - thickTop: Incomplete | None = None, + spans: Unused = None, + thickBot: _ConvertibleToBool = None, + thickTop: _ConvertibleToBool = None, **kw: Unused, ) -> None: ... @property @@ -70,30 +78,30 @@ class RowDimension(Dimension): def customHeight(self) -> bool: ... class ColumnDimension(Dimension): - width: Float - bestFit: Bool + width: Float[Literal[False]] + bestFit: Bool[Literal[False]] auto_size: Alias - index: String # type: ignore[assignment] - min: Integer - max: Integer - collapsed: Bool + index: String[Literal[False]] # type:ignore[assignment] + min: Integer[Literal[True]] + max: Integer[Literal[True]] + collapsed: Bool[Literal[False]] def __init__( self, worksheet: Worksheet, index: str = "A", - width: int = 13, - bestFit: bool = False, - hidden: bool = False, - outlineLevel: int = 0, - outline_level: int | None = None, - collapsed: bool = False, + width: _ConvertibleToFloat = 13, + bestFit: _ConvertibleToBool = False, + hidden: _ConvertibleToBool = False, + outlineLevel: _ConvertibleToInt | None = 0, + outline_level: _ConvertibleToInt | None = None, + collapsed: _ConvertibleToBool = False, style: Incomplete | None = None, - min: int | None = None, - max: int | None = None, - customWidth: bool = False, + min: _ConvertibleToInt | None = None, + max: _ConvertibleToInt | None = None, + customWidth: Unused = False, visible: bool | None = None, - auto_size: bool | None = None, + auto_size: _ConvertibleToBool | None = None, ) -> None: ... @property def customWidth(self) -> bool: ... @@ -113,31 +121,31 @@ class DimensionHolder(BoundDictionary[str, _DimT], Generic[_DimT]): class SheetFormatProperties(Serialisable): tagname: str - baseColWidth: Incomplete - defaultColWidth: Incomplete - defaultRowHeight: Incomplete - customHeight: Incomplete - zeroHeight: Incomplete - thickTop: Incomplete - thickBottom: Incomplete - outlineLevelRow: Incomplete - outlineLevelCol: Incomplete + baseColWidth: Integer[Literal[True]] + defaultColWidth: Float[Literal[True]] + defaultRowHeight: Float[Literal[False]] + customHeight: Bool[Literal[True]] + zeroHeight: Bool[Literal[True]] + thickTop: Bool[Literal[True]] + thickBottom: Bool[Literal[True]] + outlineLevelRow: Integer[Literal[True]] + outlineLevelCol: Integer[Literal[True]] def __init__( self, - baseColWidth: int = 8, - defaultColWidth: Incomplete | None = None, - defaultRowHeight: int = 15, - customHeight: Incomplete | None = None, - zeroHeight: Incomplete | None = None, - thickTop: Incomplete | None = None, - thickBottom: Incomplete | None = None, - outlineLevelRow: Incomplete | None = None, - outlineLevelCol: Incomplete | None = None, + baseColWidth: _ConvertibleToInt | None = 8, + defaultColWidth: _ConvertibleToFloat | None = None, + defaultRowHeight: _ConvertibleToFloat = 15, + customHeight: _ConvertibleToBool | None = None, + zeroHeight: _ConvertibleToBool | None = None, + thickTop: _ConvertibleToBool | None = None, + thickBottom: _ConvertibleToBool | None = None, + outlineLevelRow: _ConvertibleToInt | None = None, + outlineLevelCol: _ConvertibleToInt | None = None, ) -> None: ... class SheetDimension(Serialisable): tagname: str - ref: Incomplete - def __init__(self, ref: Incomplete | None = None) -> None: ... + ref: String[Literal[False]] + def __init__(self, ref: str) -> None: ... @property def boundaries(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi index d29bc9cbc..7bc924830 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi @@ -1,47 +1,50 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Bool, String, Typed, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable class Extension(Serialisable): tagname: str - uri: Incomplete - def __init__(self, uri: Incomplete | None = None) -> None: ... + uri: String[Literal[True]] + def __init__(self, uri: str | None = None) -> None: ... class ExtensionList(Serialisable): tagname: str ext: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, ext=()) -> None: ... class IgnoredError(Serialisable): tagname: str sqref: Incomplete - evalError: Incomplete - twoDigitTextYear: Incomplete - numberStoredAsText: Incomplete - formula: Incomplete - formulaRange: Incomplete - unlockedFormula: Incomplete - emptyCellReference: Incomplete - listDataValidation: Incomplete - calculatedColumn: Incomplete + evalError: Bool[Literal[True]] + twoDigitTextYear: Bool[Literal[True]] + numberStoredAsText: Bool[Literal[True]] + formula: Bool[Literal[True]] + formulaRange: Bool[Literal[True]] + unlockedFormula: Bool[Literal[True]] + emptyCellReference: Bool[Literal[True]] + listDataValidation: Bool[Literal[True]] + calculatedColumn: Bool[Literal[True]] def __init__( self, sqref: Incomplete | None = None, - evalError: bool = False, - twoDigitTextYear: bool = False, - numberStoredAsText: bool = False, - formula: bool = False, - formulaRange: bool = False, - unlockedFormula: bool = False, - emptyCellReference: bool = False, - listDataValidation: bool = False, - calculatedColumn: bool = False, + evalError: _ConvertibleToBool | None = False, + twoDigitTextYear: _ConvertibleToBool | None = False, + numberStoredAsText: _ConvertibleToBool | None = False, + formula: _ConvertibleToBool | None = False, + formulaRange: _ConvertibleToBool | None = False, + unlockedFormula: _ConvertibleToBool | None = False, + emptyCellReference: _ConvertibleToBool | None = False, + listDataValidation: _ConvertibleToBool | None = False, + calculatedColumn: _ConvertibleToBool | None = False, ) -> None: ... class IgnoredErrors(Serialisable): tagname: str ignoredError: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, ignoredError=(), extLst: Incomplete | None = None) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, ignoredError=(), extLst: ExtensionList | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi index b3ad79588..caff87dca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi @@ -1,158 +1,285 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from datetime import datetime +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import ( + Alias, + Bool, + DateTime, + Float, + Integer, + MinMax, + NoneSet, + Set, + String, + Typed, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +_SortConditionSortBy: TypeAlias = Literal["value", "cellColor", "fontColor", "icon"] +_IconSet: TypeAlias = Literal[ + "3Arrows", + "3ArrowsGray", + "3Flags", + "3TrafficLights1", + "3TrafficLights2", + "3Signs", + "3Symbols", + "3Symbols2", + "4Arrows", + "4ArrowsGray", + "4RedToBlack", + "4Rating", + "4TrafficLights", + "5Arrows", + "5ArrowsGray", + "5Rating", + "5Quarters", +] +_SortStateSortMethod: TypeAlias = Literal["stroke", "pinYin"] +_CustomFilterOperator: TypeAlias = Literal[ + "equal", "lessThan", "lessThanOrEqual", "notEqual", "greaterThanOrEqual", "greaterThan" +] +_FiltersCalendarType: TypeAlias = Literal[ + "gregorian", + "gregorianUs", + "gregorianMeFrench", + "gregorianArabic", + "hijri", + "hebrew", + "taiwan", + "japan", + "thai", + "korea", + "saka", + "gregorianXlitEnglish", + "gregorianXlitFrench", +] +_DynamicFilterType: TypeAlias = Literal[ + "null", + "aboveAverage", + "belowAverage", + "tomorrow", + "today", + "yesterday", + "nextWeek", + "thisWeek", + "lastWeek", + "nextMonth", + "thisMonth", + "lastMonth", + "nextQuarter", + "thisQuarter", + "lastQuarter", + "nextYear", + "thisYear", + "lastYear", + "yearToDate", + "Q1", + "Q2", + "Q3", + "Q4", + "M1", + "M2", + "M3", + "M4", + "M5", + "M6", + "M7", + "M8", + "M9", + "M10", + "M11", + "M12", +] +_DateGroupItemDateTimeGrouping: TypeAlias = Literal["year", "month", "day", "hour", "minute", "second"] + class SortCondition(Serialisable): tagname: str - descending: Incomplete - sortBy: Incomplete + descending: Bool[Literal[True]] + sortBy: NoneSet[_SortConditionSortBy] ref: Incomplete - customList: Incomplete - dxfId: Incomplete - iconSet: Incomplete - iconId: Incomplete + customList: String[Literal[True]] + dxfId: Integer[Literal[True]] + iconSet: NoneSet[_IconSet] + iconId: Integer[Literal[True]] def __init__( self, ref: Incomplete | None = None, - descending: Incomplete | None = None, - sortBy: Incomplete | None = None, - customList: Incomplete | None = None, - dxfId: Incomplete | None = None, - iconSet: Incomplete | None = None, - iconId: Incomplete | None = None, + descending: _ConvertibleToBool | None = None, + sortBy: _SortConditionSortBy | Literal["none"] | None = None, + customList: str | None = None, + dxfId: _ConvertibleToInt | None = None, + iconSet: _IconSet | Literal["none"] | None = None, + iconId: _ConvertibleToInt | None = None, ) -> None: ... class SortState(Serialisable): tagname: str - columnSort: Incomplete - caseSensitive: Incomplete - sortMethod: Incomplete + columnSort: Bool[Literal[True]] + caseSensitive: Bool[Literal[True]] + sortMethod: NoneSet[_SortStateSortMethod] ref: Incomplete sortCondition: Incomplete - extLst: Incomplete - __elements__: Incomplete + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - columnSort: Incomplete | None = None, - caseSensitive: Incomplete | None = None, - sortMethod: Incomplete | None = None, + columnSort: _ConvertibleToBool | None = None, + caseSensitive: _ConvertibleToBool | None = None, + sortMethod: _SortStateSortMethod | Literal["none"] | None = None, ref: Incomplete | None = None, sortCondition=(), - extLst: Incomplete | None = None, + extLst: Unused = None, ) -> None: ... def __bool__(self) -> bool: ... class IconFilter(Serialisable): tagname: str - iconSet: Incomplete - iconId: Incomplete - def __init__(self, iconSet: Incomplete | None = None, iconId: Incomplete | None = None) -> None: ... + iconSet: Set[_IconSet] + iconId: Integer[Literal[True]] + def __init__(self, iconSet: _IconSet, iconId: _ConvertibleToInt | None = None) -> None: ... class ColorFilter(Serialisable): tagname: str - dxfId: Incomplete - cellColor: Incomplete - def __init__(self, dxfId: Incomplete | None = None, cellColor: Incomplete | None = None) -> None: ... + dxfId: Integer[Literal[True]] + cellColor: Bool[Literal[True]] + def __init__(self, dxfId: _ConvertibleToInt | None = None, cellColor: _ConvertibleToBool | None = None) -> None: ... class DynamicFilter(Serialisable): tagname: str - type: Incomplete - val: Incomplete - valIso: Incomplete - maxVal: Incomplete - maxValIso: Incomplete + type: Set[_DynamicFilterType] + val: Float[Literal[True]] + valIso: DateTime[Literal[True]] + maxVal: Float[Literal[True]] + maxValIso: DateTime[Literal[True]] def __init__( self, - type: Incomplete | None = None, - val: Incomplete | None = None, - valIso: Incomplete | None = None, - maxVal: Incomplete | None = None, - maxValIso: Incomplete | None = None, + type: _DynamicFilterType, + val: _ConvertibleToFloat | None = None, + valIso: datetime | str | None = None, + maxVal: _ConvertibleToFloat | None = None, + maxValIso: datetime | str | None = None, ) -> None: ... class CustomFilter(Serialisable): tagname: str - operator: Incomplete + operator: NoneSet[_CustomFilterOperator] val: Incomplete - def __init__(self, operator: Incomplete | None = None, val: Incomplete | None = None) -> None: ... + def __init__( + self, operator: _CustomFilterOperator | Literal["none"] | None = None, val: Incomplete | None = None + ) -> None: ... class CustomFilters(Serialisable): tagname: str + _and: Bool[Literal[True]] # Not private. Avoids name clash customFilter: Incomplete - __elements__: Incomplete - def __init__(self, _and: Incomplete | None = False, customFilter=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, _and: _ConvertibleToBool | None = False, customFilter=()) -> None: ... class Top10(Serialisable): tagname: str - top: Incomplete - percent: Incomplete - val: Incomplete - filterVal: Incomplete + top: Bool[Literal[True]] + percent: Bool[Literal[True]] + val: Float[Literal[False]] + filterVal: Float[Literal[True]] + @overload + def __init__( + self, + top: _ConvertibleToBool | None = None, + percent: _ConvertibleToBool | None = None, + *, + val: _ConvertibleToFloat, + filterVal: _ConvertibleToFloat | None = None, + ) -> None: ... + @overload def __init__( self, - top: Incomplete | None = None, - percent: Incomplete | None = None, - val: Incomplete | None = None, - filterVal: Incomplete | None = None, + top: _ConvertibleToBool | None, + percent: _ConvertibleToBool | None, + val: _ConvertibleToFloat, + filterVal: _ConvertibleToFloat | None = None, ) -> None: ... class DateGroupItem(Serialisable): tagname: str - year: Incomplete - month: Incomplete - day: Incomplete - hour: Incomplete - minute: Incomplete - second: Incomplete - dateTimeGrouping: Incomplete + year: Integer[Literal[False]] + month: MinMax[float, Literal[True]] + day: MinMax[float, Literal[True]] + hour: MinMax[float, Literal[True]] + minute: MinMax[float, Literal[True]] + second: Integer[Literal[True]] + dateTimeGrouping: Set[_DateGroupItemDateTimeGrouping] + @overload + def __init__( + self, + year: _ConvertibleToInt, + month: _ConvertibleToFloat | None = None, + day: _ConvertibleToFloat | None = None, + hour: _ConvertibleToFloat | None = None, + minute: _ConvertibleToFloat | None = None, + second: _ConvertibleToInt | None = None, + *, + dateTimeGrouping: _DateGroupItemDateTimeGrouping, + ) -> None: ... + @overload def __init__( self, - year: Incomplete | None = None, - month: Incomplete | None = None, - day: Incomplete | None = None, - hour: Incomplete | None = None, - minute: Incomplete | None = None, - second: Incomplete | None = None, - dateTimeGrouping: Incomplete | None = None, + year: _ConvertibleToInt, + month: _ConvertibleToFloat | None, + day: _ConvertibleToFloat | None, + hour: _ConvertibleToFloat | None, + minute: _ConvertibleToFloat | None, + second: _ConvertibleToInt | None, + dateTimeGrouping: _DateGroupItemDateTimeGrouping, ) -> None: ... class Filters(Serialisable): tagname: str - blank: Incomplete - calendarType: Incomplete + blank: Bool[Literal[True]] + calendarType: NoneSet[_FiltersCalendarType] filter: Incomplete dateGroupItem: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, blank: Incomplete | None = None, calendarType: Incomplete | None = None, filter=(), dateGroupItem=() + self, + blank: _ConvertibleToBool | None = None, + calendarType: _FiltersCalendarType | Literal["none"] | None = None, + filter=(), + dateGroupItem=(), ) -> None: ... class FilterColumn(Serialisable): tagname: str - colId: Incomplete - col_id: Incomplete - hiddenButton: Incomplete - showButton: Incomplete - filters: Incomplete - top10: Incomplete - customFilters: Incomplete - dynamicFilter: Incomplete - colorFilter: Incomplete - iconFilter: Incomplete - extLst: Incomplete - __elements__: Incomplete + colId: Integer[Literal[False]] + col_id: Alias + hiddenButton: Bool[Literal[True]] + showButton: Bool[Literal[True]] + filters: Typed[Filters, Literal[True]] + top10: Typed[Top10, Literal[True]] + customFilters: Typed[CustomFilters, Literal[True]] + dynamicFilter: Typed[DynamicFilter, Literal[True]] + colorFilter: Typed[ColorFilter, Literal[True]] + iconFilter: Typed[IconFilter, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - colId: Incomplete | None = None, - hiddenButton: Incomplete | None = False, - showButton: Incomplete | None = True, - filters: Incomplete | None = None, - top10: Incomplete | None = None, - customFilters: Incomplete | None = None, - dynamicFilter: Incomplete | None = None, - colorFilter: Incomplete | None = None, - iconFilter: Incomplete | None = None, - extLst: Incomplete | None = None, + colId: _ConvertibleToInt, + hiddenButton: _ConvertibleToBool | None = False, + showButton: _ConvertibleToBool | None = True, + filters: Filters | None = None, + top10: Top10 | None = None, + customFilters: CustomFilters | None = None, + dynamicFilter: DynamicFilter | None = None, + colorFilter: ColorFilter | None = None, + iconFilter: IconFilter | None = None, + extLst: Unused = None, blank: Incomplete | None = None, vals: Incomplete | None = None, ) -> None: ... @@ -161,15 +288,11 @@ class AutoFilter(Serialisable): tagname: str ref: Incomplete filterColumn: Incomplete - sortState: Incomplete - extLst: Incomplete - __elements__: Incomplete + sortState: Typed[SortState, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, - ref: Incomplete | None = None, - filterColumn=(), - sortState: Incomplete | None = None, - extLst: Incomplete | None = None, + self, ref: Incomplete | None = None, filterColumn=(), sortState: SortState | None = None, extLst: Unused = None ) -> None: ... def __bool__(self) -> bool: ... def add_filter_column(self, col_id, vals, blank: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi index 4a876b3ba..3128bf684 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi @@ -1,6 +1,9 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal from openpyxl.descriptors import Strict +from openpyxl.descriptors.base import Alias, Bool, Integer, MatchPattern, String, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable FONT_PATTERN: str @@ -9,29 +12,28 @@ SIZE_REGEX: str FORMAT_REGEX: Incomplete class _HeaderFooterPart(Strict): - text: Incomplete - font: Incomplete - size: Incomplete + text: String[Literal[True]] + font: String[Literal[True]] + size: Integer[Literal[True]] RGB: str - color: Incomplete + color: MatchPattern[str, Literal[True]] def __init__( - self, - text: Incomplete | None = None, - font: Incomplete | None = None, - size: Incomplete | None = None, - color: Incomplete | None = None, + self, text: str | None = None, font: str | None = None, size: _ConvertibleToInt | None = None, color: str | None = None ) -> None: ... def __bool__(self) -> bool: ... @classmethod def from_str(cls, text): ... class HeaderFooterItem(Strict): - left: Incomplete - center: Incomplete - centre: Incomplete - right: Incomplete + left: Typed[_HeaderFooterPart, Literal[False]] + center: Typed[_HeaderFooterPart, Literal[False]] + centre: Alias + right: Typed[_HeaderFooterPart, Literal[False]] def __init__( - self, left: Incomplete | None = None, right: Incomplete | None = None, center: Incomplete | None = None + self, + left: _HeaderFooterPart | None = None, + right: _HeaderFooterPart | None = None, + center: _HeaderFooterPart | None = None, ) -> None: ... def __bool__(self) -> bool: ... def to_tree(self, tagname): ... @@ -40,28 +42,28 @@ class HeaderFooterItem(Strict): class HeaderFooter(Serialisable): tagname: str - differentOddEven: Incomplete - differentFirst: Incomplete - scaleWithDoc: Incomplete - alignWithMargins: Incomplete - oddHeader: Incomplete - oddFooter: Incomplete - evenHeader: Incomplete - evenFooter: Incomplete - firstHeader: Incomplete - firstFooter: Incomplete - __elements__: Incomplete + differentOddEven: Bool[Literal[True]] + differentFirst: Bool[Literal[True]] + scaleWithDoc: Bool[Literal[True]] + alignWithMargins: Bool[Literal[True]] + oddHeader: Typed[HeaderFooterItem, Literal[True]] + oddFooter: Typed[HeaderFooterItem, Literal[True]] + evenHeader: Typed[HeaderFooterItem, Literal[True]] + evenFooter: Typed[HeaderFooterItem, Literal[True]] + firstHeader: Typed[HeaderFooterItem, Literal[True]] + firstFooter: Typed[HeaderFooterItem, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - differentOddEven: Incomplete | None = None, - differentFirst: Incomplete | None = None, - scaleWithDoc: Incomplete | None = None, - alignWithMargins: Incomplete | None = None, - oddHeader: Incomplete | None = None, - oddFooter: Incomplete | None = None, - evenHeader: Incomplete | None = None, - evenFooter: Incomplete | None = None, - firstHeader: Incomplete | None = None, - firstFooter: Incomplete | None = None, + differentOddEven: _ConvertibleToBool | None = None, + differentFirst: _ConvertibleToBool | None = None, + scaleWithDoc: _ConvertibleToBool | None = None, + alignWithMargins: _ConvertibleToBool | None = None, + oddHeader: HeaderFooterItem | None = None, + oddFooter: HeaderFooterItem | None = None, + evenHeader: HeaderFooterItem | None = None, + evenFooter: HeaderFooterItem | None = None, + firstHeader: HeaderFooterItem | None = None, + firstFooter: HeaderFooterItem | None = None, ) -> None: ... def __bool__(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi index deba3e34e..aaccd9a6d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi @@ -1,24 +1,27 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import String from openpyxl.descriptors.serialisable import Serialisable class Hyperlink(Serialisable): tagname: str - ref: Incomplete - location: Incomplete - tooltip: Incomplete - display: Incomplete + ref: String[Literal[False]] + location: String[Literal[True]] + tooltip: String[Literal[True]] + display: String[Literal[True]] id: Incomplete - target: Incomplete - __attrs__: Incomplete + target: String[Literal[True]] + __attrs__: ClassVar[tuple[str, ...]] def __init__( self, - ref: Incomplete | None = None, - location: Incomplete | None = None, - tooltip: Incomplete | None = None, - display: Incomplete | None = None, + ref: str, + location: str | None = None, + tooltip: str | None = None, + display: str | None = None, id: Incomplete | None = None, - target: Incomplete | None = None, + target: str | None = None, ) -> None: ... class HyperlinkList(Serialisable): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi index e0324855b..46f9f498e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi @@ -1,4 +1,5 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar from openpyxl.descriptors.serialisable import Serialisable @@ -8,7 +9,7 @@ class MergeCell(CellRange): tagname: str @property def ref(self): ... - __attrs__: Incomplete + __attrs__: ClassVar[tuple[str, ...]] def __init__(self, ref: Incomplete | None = None) -> None: ... def __copy__(self): ... @@ -17,9 +18,9 @@ class MergeCells(Serialisable): # Overwritten by property below # count: Integer mergeCell: Incomplete - __elements__: Incomplete - __attrs__: Incomplete - def __init__(self, count: Incomplete | None = None, mergeCell=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] + def __init__(self, count: Unused = None, mergeCell=()) -> None: ... @property def count(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi index ca159e62f..21d3bbf38 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi @@ -1,75 +1,115 @@ from _typeshed import Incomplete +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, Integer, Set, String, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.spreadsheet_drawing import AnchorMarker + +_OleObjectDvAspect: TypeAlias = Literal["DVASPECT_CONTENT", "DVASPECT_ICON"] +_OleObjectOleUpdate: TypeAlias = Literal["OLEUPDATE_ALWAYS", "OLEUPDATE_ONCALL"] class ObjectAnchor(Serialisable): tagname: str - to: Incomplete - moveWithCells: Incomplete - sizeWithCells: Incomplete - z_order: Incomplete + _from: Typed[AnchorMarker, Literal[False]] # Not private. Avoids name clash + to: Typed[AnchorMarker, Literal[False]] + moveWithCells: Bool[Literal[True]] + sizeWithCells: Bool[Literal[True]] + z_order: Integer[Literal[True]] def __init__( self, - _from: Incomplete | None = None, - to: Incomplete | None = None, - moveWithCells: bool = False, - sizeWithCells: bool = False, - z_order: Incomplete | None = None, + _from: AnchorMarker, + to: AnchorMarker, + moveWithCells: _ConvertibleToBool | None = False, + sizeWithCells: _ConvertibleToBool | None = False, + z_order: _ConvertibleToInt | None = None, ) -> None: ... class ObjectPr(Serialisable): tagname: str - anchor: Incomplete - locked: Incomplete - defaultSize: Incomplete - disabled: Incomplete - uiObject: Incomplete - autoFill: Incomplete - autoLine: Incomplete - autoPict: Incomplete - macro: Incomplete - altText: Incomplete - dde: Incomplete - __elements__: Incomplete + anchor: Typed[ObjectAnchor, Literal[False]] + locked: Bool[Literal[True]] + defaultSize: Bool[Literal[True]] + _print: Bool[Literal[True]] # Not private. Avoids name clash + disabled: Bool[Literal[True]] + uiObject: Bool[Literal[True]] + autoFill: Bool[Literal[True]] + autoLine: Bool[Literal[True]] + autoPict: Bool[Literal[True]] + macro: String[Literal[False]] + altText: String[Literal[True]] + dde: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload + def __init__( + self, + anchor: ObjectAnchor, + locked: _ConvertibleToBool | None = None, + defaultSize: _ConvertibleToBool | None = None, + _print: _ConvertibleToBool | None = None, + disabled: _ConvertibleToBool | None = None, + uiObject: _ConvertibleToBool | None = None, + autoFill: _ConvertibleToBool | None = None, + autoLine: _ConvertibleToBool | None = None, + autoPict: _ConvertibleToBool | None = None, + *, + macro: str, + altText: str | None = None, + dde: _ConvertibleToBool | None = False, + ) -> None: ... + @overload def __init__( self, - anchor: Incomplete | None = None, - locked: bool = True, - defaultSize: bool = True, - _print: bool = True, - disabled: bool = False, - uiObject: bool = False, - autoFill: bool = True, - autoLine: bool = True, - autoPict: bool = True, - macro: Incomplete | None = None, - altText: Incomplete | None = None, - dde: bool = False, + anchor: ObjectAnchor, + locked: _ConvertibleToBool | None, + defaultSize: _ConvertibleToBool | None, + _print: _ConvertibleToBool | None, + disabled: _ConvertibleToBool | None, + uiObject: _ConvertibleToBool | None, + autoFill: _ConvertibleToBool | None, + autoLine: _ConvertibleToBool | None, + autoPict: _ConvertibleToBool | None, + macro: str, + altText: str | None = None, + dde: _ConvertibleToBool | None = False, ) -> None: ... class OleObject(Serialisable): tagname: str - objectPr: Incomplete - progId: Incomplete - dvAspect: Incomplete - link: Incomplete - oleUpdate: Incomplete - autoLoad: Incomplete - shapeId: Incomplete - __elements__: Incomplete + objectPr: Typed[ObjectPr, Literal[True]] + progId: String[Literal[True]] + dvAspect: Set[_OleObjectDvAspect] + link: String[Literal[True]] + oleUpdate: Set[_OleObjectOleUpdate] + autoLoad: Bool[Literal[True]] + shapeId: Integer[Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + @overload + def __init__( + self, + objectPr: ObjectPr | None = None, + progId: str | None = None, + dvAspect: _OleObjectDvAspect = "DVASPECT_CONTENT", + link: str | None = None, + *, + oleUpdate: _OleObjectOleUpdate, + autoLoad: _ConvertibleToBool | None = False, + shapeId: _ConvertibleToInt, + ) -> None: ... + @overload def __init__( self, - objectPr: Incomplete | None = None, - progId: Incomplete | None = None, - dvAspect: str = "DVASPECT_CONTENT", - link: Incomplete | None = None, - oleUpdate: Incomplete | None = None, - autoLoad: bool = False, - shapeId: Incomplete | None = None, + objectPr: ObjectPr | None, + progId: str | None, + dvAspect: _OleObjectDvAspect, + link: str | None, + oleUpdate: _OleObjectOleUpdate, + autoLoad: _ConvertibleToBool | None, + shapeId: _ConvertibleToInt, ) -> None: ... class OleObjects(Serialisable): tagname: str oleObject: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, oleObject=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi index a15c7b798..913c47be7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi @@ -1,49 +1,56 @@ from _typeshed import Incomplete +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import Bool, Float, Integer, NoneSet, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable +_PrintPageSetupOrientation: TypeAlias = Literal["default", "portrait", "landscape"] +_PrintPageSetupPageOrder: TypeAlias = Literal["downThenOver", "overThenDown"] +_PrintPageSetupCellComments: TypeAlias = Literal["asDisplayed", "atEnd"] +_PrintPageSetupErrors: TypeAlias = Literal["displayed", "blank", "dash", "NA"] + class PrintPageSetup(Serialisable): tagname: str - orientation: Incomplete - paperSize: Incomplete - scale: Incomplete - fitToHeight: Incomplete - fitToWidth: Incomplete - firstPageNumber: Incomplete - useFirstPageNumber: Incomplete + orientation: NoneSet[_PrintPageSetupOrientation] + paperSize: Integer[Literal[True]] + scale: Integer[Literal[True]] + fitToHeight: Integer[Literal[True]] + fitToWidth: Integer[Literal[True]] + firstPageNumber: Integer[Literal[True]] + useFirstPageNumber: Bool[Literal[True]] paperHeight: Incomplete paperWidth: Incomplete - pageOrder: Incomplete - usePrinterDefaults: Incomplete - blackAndWhite: Incomplete - draft: Incomplete - cellComments: Incomplete - errors: Incomplete - horizontalDpi: Incomplete - verticalDpi: Incomplete - copies: Incomplete + pageOrder: NoneSet[_PrintPageSetupPageOrder] + usePrinterDefaults: Bool[Literal[True]] + blackAndWhite: Bool[Literal[True]] + draft: Bool[Literal[True]] + cellComments: NoneSet[_PrintPageSetupCellComments] + errors: NoneSet[_PrintPageSetupErrors] + horizontalDpi: Integer[Literal[True]] + verticalDpi: Integer[Literal[True]] + copies: Integer[Literal[True]] id: Incomplete def __init__( self, worksheet: Incomplete | None = None, - orientation: Incomplete | None = None, - paperSize: Incomplete | None = None, - scale: Incomplete | None = None, - fitToHeight: Incomplete | None = None, - fitToWidth: Incomplete | None = None, - firstPageNumber: Incomplete | None = None, - useFirstPageNumber: Incomplete | None = None, + orientation: _PrintPageSetupOrientation | Literal["none"] | None = None, + paperSize: _ConvertibleToInt | None = None, + scale: _ConvertibleToInt | None = None, + fitToHeight: _ConvertibleToInt | None = None, + fitToWidth: _ConvertibleToInt | None = None, + firstPageNumber: _ConvertibleToInt | None = None, + useFirstPageNumber: _ConvertibleToBool | None = None, paperHeight: Incomplete | None = None, paperWidth: Incomplete | None = None, - pageOrder: Incomplete | None = None, - usePrinterDefaults: Incomplete | None = None, - blackAndWhite: Incomplete | None = None, - draft: Incomplete | None = None, - cellComments: Incomplete | None = None, - errors: Incomplete | None = None, - horizontalDpi: Incomplete | None = None, - verticalDpi: Incomplete | None = None, - copies: Incomplete | None = None, + pageOrder: _PrintPageSetupPageOrder | Literal["none"] | None = None, + usePrinterDefaults: _ConvertibleToBool | None = None, + blackAndWhite: _ConvertibleToBool | None = None, + draft: _ConvertibleToBool | None = None, + cellComments: _PrintPageSetupCellComments | Literal["none"] | None = None, + errors: _PrintPageSetupErrors | Literal["none"] | None = None, + horizontalDpi: _ConvertibleToInt | None = None, + verticalDpi: _ConvertibleToInt | None = None, + copies: _ConvertibleToInt | None = None, id: Incomplete | None = None, ) -> None: ... def __bool__(self) -> bool: ... @@ -62,29 +69,35 @@ class PrintPageSetup(Serialisable): class PrintOptions(Serialisable): tagname: str - horizontalCentered: Incomplete - verticalCentered: Incomplete - headings: Incomplete - gridLines: Incomplete - gridLinesSet: Incomplete + horizontalCentered: Bool[Literal[True]] + verticalCentered: Bool[Literal[True]] + headings: Bool[Literal[True]] + gridLines: Bool[Literal[True]] + gridLinesSet: Bool[Literal[True]] def __init__( self, - horizontalCentered: Incomplete | None = None, - verticalCentered: Incomplete | None = None, - headings: Incomplete | None = None, - gridLines: Incomplete | None = None, - gridLinesSet: Incomplete | None = None, + horizontalCentered: _ConvertibleToBool | None = None, + verticalCentered: _ConvertibleToBool | None = None, + headings: _ConvertibleToBool | None = None, + gridLines: _ConvertibleToBool | None = None, + gridLinesSet: _ConvertibleToBool | None = None, ) -> None: ... def __bool__(self) -> bool: ... class PageMargins(Serialisable): tagname: str - left: Incomplete - right: Incomplete - top: Incomplete - bottom: Incomplete - header: Incomplete - footer: Incomplete + left: Float[Literal[False]] + right: Float[Literal[False]] + top: Float[Literal[False]] + bottom: Float[Literal[False]] + header: Float[Literal[False]] + footer: Float[Literal[False]] def __init__( - self, left: float = 0.75, right: float = 0.75, top: int = 1, bottom: int = 1, header: float = 0.5, footer: float = 0.5 + self, + left: _ConvertibleToFloat = 0.75, + right: _ConvertibleToFloat = 0.75, + top: _ConvertibleToFloat = 1, + bottom: _ConvertibleToFloat = 1, + header: _ConvertibleToFloat = 0.5, + footer: _ConvertibleToFloat = 0.5, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi index 04cb2018c..32f2d2b7e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi @@ -1,15 +1,25 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Bool, Integer, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable class Break(Serialisable): tagname: str - id: Incomplete - min: Incomplete - max: Incomplete - man: Incomplete - pt: Incomplete - def __init__(self, id: int = 0, min: int = 0, max: int = 16383, man: bool = True, pt: Incomplete | None = None) -> None: ... + id: Integer[Literal[True]] + min: Integer[Literal[True]] + max: Integer[Literal[True]] + man: Bool[Literal[True]] + pt: Bool[Literal[True]] + def __init__( + self, + id: _ConvertibleToInt | None = 0, + min: _ConvertibleToInt | None = 0, + max: _ConvertibleToInt | None = 16383, + man: _ConvertibleToBool | None = True, + pt: _ConvertibleToBool | None = None, + ) -> None: ... class RowBreak(Serialisable): tagname: str @@ -17,9 +27,9 @@ class RowBreak(Serialisable): # count: Integer # manualBreakCount: Integer brk: Incomplete - __elements__: Incomplete - __attrs__: Incomplete - def __init__(self, count: Incomplete | None = None, manualBreakCount: Incomplete | None = None, brk=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] + def __init__(self, count: Unused = None, manualBreakCount: Unused = None, brk=()) -> None: ... def __bool__(self) -> bool: ... def __len__(self) -> int: ... @property @@ -37,4 +47,4 @@ class ColBreak(RowBreak): @property def manualBreakCount(self): ... brk: Incomplete - __attrs__: Incomplete + __attrs__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi index 2c3ce1ae4..37f39cdfa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi @@ -1,8 +1,10 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from re import Pattern -from typing_extensions import Self +from typing import overload +from typing_extensions import Literal, Self from openpyxl.descriptors import Integer, Strict, String +from openpyxl.descriptors.base import Typed, _ConvertibleToInt from openpyxl.utils.cell import SHEETRANGE_RE as SHEETRANGE_RE from .cell_range import MultiCellRange @@ -15,26 +17,28 @@ TITLES_REGEX: Pattern[str] PRINT_AREA_RE: Pattern[str] class ColRange(Strict): - min_col: String - max_col: String - def __init__( - self, range_string: Incomplete | None = None, min_col: Incomplete | None = None, max_col: Incomplete | None = None - ) -> None: ... + min_col: String[Literal[False]] + max_col: String[Literal[False]] + @overload + def __init__(self, range_string: None = None, *, min_col: str, max_col: str) -> None: ... + @overload + def __init__(self, range_string: Incomplete, min_col: Unused = None, max_col: Unused = None) -> None: ... def __eq__(self, other: object) -> bool: ... class RowRange(Strict): - min_row: Integer - max_row: Integer - def __init__( - self, range_string: Incomplete | None = None, min_row: Incomplete | None = None, max_row: Incomplete | None = None - ) -> None: ... + min_row: Integer[Literal[False]] + max_row: Integer[Literal[False]] + @overload + def __init__(self, range_string: None, min_row: _ConvertibleToInt, max_row: _ConvertibleToInt) -> None: ... + @overload + def __init__(self, range_string: Incomplete, min_row: Unused = None, max_row: Unused = None) -> None: ... def __eq__(self, other: object) -> bool: ... class PrintTitles(Strict): - cols: Incomplete - rows: Incomplete - title: String - def __init__(self, cols: Incomplete | None = None, rows: Incomplete | None = None, title: str = "") -> None: ... + cols: Typed[ColRange, Literal[True]] + rows: Typed[RowRange, Literal[True]] + title: String[Literal[False]] + def __init__(self, cols: ColRange | None = None, rows: RowRange | None = None, title: str = "") -> None: ... @classmethod def from_string(cls, value) -> Self: ... def __eq__(self, other: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi index 0f8eafb0f..0c910c98f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi @@ -1,54 +1,57 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Bool, String, Typed, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable class Outline(Serialisable): tagname: str - applyStyles: Incomplete - summaryBelow: Incomplete - summaryRight: Incomplete - showOutlineSymbols: Incomplete + applyStyles: Bool[Literal[True]] + summaryBelow: Bool[Literal[True]] + summaryRight: Bool[Literal[True]] + showOutlineSymbols: Bool[Literal[True]] def __init__( self, - applyStyles: Incomplete | None = None, - summaryBelow: Incomplete | None = None, - summaryRight: Incomplete | None = None, - showOutlineSymbols: Incomplete | None = None, + applyStyles: _ConvertibleToBool | None = None, + summaryBelow: _ConvertibleToBool | None = None, + summaryRight: _ConvertibleToBool | None = None, + showOutlineSymbols: _ConvertibleToBool | None = None, ) -> None: ... class PageSetupProperties(Serialisable): tagname: str - autoPageBreaks: Incomplete - fitToPage: Incomplete - def __init__(self, autoPageBreaks: Incomplete | None = None, fitToPage: Incomplete | None = None) -> None: ... + autoPageBreaks: Bool[Literal[True]] + fitToPage: Bool[Literal[True]] + def __init__(self, autoPageBreaks: _ConvertibleToBool | None = None, fitToPage: _ConvertibleToBool | None = None) -> None: ... class WorksheetProperties(Serialisable): tagname: str - codeName: Incomplete - enableFormatConditionsCalculation: Incomplete - filterMode: Incomplete - published: Incomplete - syncHorizontal: Incomplete - syncRef: Incomplete - syncVertical: Incomplete - transitionEvaluation: Incomplete - transitionEntry: Incomplete + codeName: String[Literal[True]] + enableFormatConditionsCalculation: Bool[Literal[True]] + filterMode: Bool[Literal[True]] + published: Bool[Literal[True]] + syncHorizontal: Bool[Literal[True]] + syncRef: String[Literal[True]] + syncVertical: Bool[Literal[True]] + transitionEvaluation: Bool[Literal[True]] + transitionEntry: Bool[Literal[True]] tabColor: Incomplete - outlinePr: Incomplete - pageSetUpPr: Incomplete - __elements__: Incomplete + outlinePr: Typed[Outline, Literal[True]] + pageSetUpPr: Typed[PageSetupProperties, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - codeName: Incomplete | None = None, - enableFormatConditionsCalculation: Incomplete | None = None, - filterMode: Incomplete | None = None, - published: Incomplete | None = None, - syncHorizontal: Incomplete | None = None, - syncRef: Incomplete | None = None, - syncVertical: Incomplete | None = None, - transitionEvaluation: Incomplete | None = None, - transitionEntry: Incomplete | None = None, + codeName: str | None = None, + enableFormatConditionsCalculation: _ConvertibleToBool | None = None, + filterMode: _ConvertibleToBool | None = None, + published: _ConvertibleToBool | None = None, + syncHorizontal: _ConvertibleToBool | None = None, + syncRef: str | None = None, + syncVertical: _ConvertibleToBool | None = None, + transitionEvaluation: _ConvertibleToBool | None = None, + transitionEntry: _ConvertibleToBool | None = None, tabColor: Incomplete | None = None, - outlinePr: Incomplete | None = None, - pageSetUpPr: Incomplete | None = None, + outlinePr: Outline | None = None, + pageSetUpPr: PageSetupProperties | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi index cc910a11b..fa1e29004 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi @@ -1,5 +1,8 @@ from _typeshed import Incomplete +from typing import ClassVar +from typing_extensions import Literal +from openpyxl.descriptors.base import Alias, Bool, Integer, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable class _Protected: @@ -11,51 +14,51 @@ class _Protected: class SheetProtection(Serialisable, _Protected): tagname: str - sheet: Incomplete - enabled: Incomplete - objects: Incomplete - scenarios: Incomplete - formatCells: Incomplete - formatColumns: Incomplete - formatRows: Incomplete - insertColumns: Incomplete - insertRows: Incomplete - insertHyperlinks: Incomplete - deleteColumns: Incomplete - deleteRows: Incomplete - selectLockedCells: Incomplete - selectUnlockedCells: Incomplete - sort: Incomplete - autoFilter: Incomplete - pivotTables: Incomplete + sheet: Bool[Literal[False]] + enabled: Alias + objects: Bool[Literal[False]] + scenarios: Bool[Literal[False]] + formatCells: Bool[Literal[False]] + formatColumns: Bool[Literal[False]] + formatRows: Bool[Literal[False]] + insertColumns: Bool[Literal[False]] + insertRows: Bool[Literal[False]] + insertHyperlinks: Bool[Literal[False]] + deleteColumns: Bool[Literal[False]] + deleteRows: Bool[Literal[False]] + selectLockedCells: Bool[Literal[False]] + selectUnlockedCells: Bool[Literal[False]] + sort: Bool[Literal[False]] + autoFilter: Bool[Literal[False]] + pivotTables: Bool[Literal[False]] saltValue: Incomplete - spinCount: Incomplete - algorithmName: Incomplete + spinCount: Integer[Literal[True]] + algorithmName: String[Literal[True]] hashValue: Incomplete - __attrs__: Incomplete + __attrs__: ClassVar[tuple[str, ...]] password: Incomplete def __init__( self, - sheet: bool = False, - objects: bool = False, - scenarios: bool = False, - formatCells: bool = True, - formatRows: bool = True, - formatColumns: bool = True, - insertColumns: bool = True, - insertRows: bool = True, - insertHyperlinks: bool = True, - deleteColumns: bool = True, - deleteRows: bool = True, - selectLockedCells: bool = False, - selectUnlockedCells: bool = False, - sort: bool = True, - autoFilter: bool = True, - pivotTables: bool = True, + sheet: _ConvertibleToBool = False, + objects: _ConvertibleToBool = False, + scenarios: _ConvertibleToBool = False, + formatCells: _ConvertibleToBool = True, + formatRows: _ConvertibleToBool = True, + formatColumns: _ConvertibleToBool = True, + insertColumns: _ConvertibleToBool = True, + insertRows: _ConvertibleToBool = True, + insertHyperlinks: _ConvertibleToBool = True, + deleteColumns: _ConvertibleToBool = True, + deleteRows: _ConvertibleToBool = True, + selectLockedCells: _ConvertibleToBool = False, + selectUnlockedCells: _ConvertibleToBool = False, + sort: _ConvertibleToBool = True, + autoFilter: _ConvertibleToBool = True, + pivotTables: _ConvertibleToBool = True, password: Incomplete | None = None, - algorithmName: Incomplete | None = None, + algorithmName: str | None = None, saltValue: Incomplete | None = None, - spinCount: Incomplete | None = None, + spinCount: _ConvertibleToInt | None = None, hashValue: Incomplete | None = None, ) -> None: ... def set_password(self, value: str = "", already_hashed: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/related.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/related.pyi index b778c4ad9..dbabb55d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/related.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/related.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from openpyxl.descriptors.serialisable import Serialisable -class Related(Serialisable): # type: ignore[misc] +class Related(Serialisable): id: Incomplete def __init__(self, id: Incomplete | None = None) -> None: ... def to_tree(self, tagname, idx: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi index fc448de79..67ed74af7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi @@ -1,42 +1,79 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar, overload +from typing_extensions import Literal +from openpyxl.descriptors.base import ( + Bool, + Convertible, + Integer, + String, + _ConvertibleToBool, + _ConvertibleToInt, + _ConvertibleToMultiCellRange, +) from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.worksheet.cell_range import MultiCellRange class InputCells(Serialisable): tagname: str - r: Incomplete - deleted: Incomplete - undone: Incomplete - val: Incomplete - numFmtId: Incomplete + r: String[Literal[False]] + deleted: Bool[Literal[True]] + undone: Bool[Literal[True]] + val: String[Literal[False]] + numFmtId: Integer[Literal[True]] + + @overload + def __init__( + self, + r: str, + deleted: _ConvertibleToBool | None = False, + undone: _ConvertibleToBool | None = False, + *, + val: str, + numFmtId: _ConvertibleToInt | None = None, + ) -> None: ... + @overload def __init__( self, - r: Incomplete | None = None, - deleted: bool = False, - undone: bool = False, - val: Incomplete | None = None, - numFmtId: Incomplete | None = None, + r: str, + deleted: _ConvertibleToBool | None, + undone: _ConvertibleToBool | None, + val: str, + numFmtId: _ConvertibleToInt | None = None, ) -> None: ... class Scenario(Serialisable): tagname: str inputCells: Incomplete - name: Incomplete - locked: Incomplete - hidden: Incomplete - user: Incomplete - comment: Incomplete - __elements__: Incomplete - __attrs__: Incomplete + name: String[Literal[False]] + locked: Bool[Literal[True]] + hidden: Bool[Literal[True]] + user: String[Literal[True]] + comment: String[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] + @overload def __init__( self, inputCells=(), - name: Incomplete | None = None, - locked: bool = False, - hidden: bool = False, - count: Incomplete | None = None, - user: Incomplete | None = None, - comment: Incomplete | None = None, + *, + name: str, + locked: _ConvertibleToBool | None = False, + hidden: _ConvertibleToBool | None = False, + count: Unused = None, + user: str | None = None, + comment: str | None = None, + ) -> None: ... + @overload + def __init__( + self, + inputCells, + name: str, + locked: _ConvertibleToBool | None = False, + hidden: _ConvertibleToBool | None = False, + count: Unused = None, + user: str | None = None, + comment: str | None = None, ) -> None: ... @property def count(self): ... @@ -44,12 +81,16 @@ class Scenario(Serialisable): class ScenarioList(Serialisable): tagname: str scenario: Incomplete - current: Incomplete - show: Incomplete - sqref: Incomplete - __elements__: Incomplete + current: Integer[Literal[True]] + show: Integer[Literal[True]] + sqref: Convertible[MultiCellRange, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( - self, scenario=(), current: Incomplete | None = None, show: Incomplete | None = None, sqref: Incomplete | None = None + self, + scenario=(), + current: _ConvertibleToInt | None = None, + show: _ConvertibleToInt | None = None, + sqref: _ConvertibleToMultiCellRange | None = None, ) -> None: ... def append(self, scenario) -> None: ... def __bool__(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi index 4f3481098..f99140e11 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi @@ -1,33 +1,50 @@ from _typeshed import Incomplete +from typing import ClassVar, overload +from typing_extensions import Literal +from openpyxl.descriptors.base import Bool, Integer, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable class CellSmartTagPr(Serialisable): tagname: str - key: Incomplete - val: Incomplete - def __init__(self, key: Incomplete | None = None, val: Incomplete | None = None) -> None: ... + key: String[Literal[False]] + val: String[Literal[False]] + def __init__(self, key: str, val: str) -> None: ... class CellSmartTag(Serialisable): tagname: str cellSmartTagPr: Incomplete - type: Incomplete - deleted: Incomplete - xmlBased: Incomplete - __elements__: Incomplete + type: Integer[Literal[False]] + deleted: Bool[Literal[True]] + xmlBased: Bool[Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload def __init__( - self, cellSmartTagPr=(), type: Incomplete | None = None, deleted: bool = False, xmlBased: bool = False + self, + cellSmartTagPr=(), + *, + type: _ConvertibleToInt, + deleted: _ConvertibleToBool | None = False, + xmlBased: _ConvertibleToBool | None = False, + ) -> None: ... + @overload + def __init__( + self, + cellSmartTagPr, + type: _ConvertibleToInt, + deleted: _ConvertibleToBool | None = False, + xmlBased: _ConvertibleToBool | None = False, ) -> None: ... class CellSmartTags(Serialisable): tagname: str cellSmartTag: Incomplete - r: Incomplete - __elements__: Incomplete - def __init__(self, cellSmartTag=(), r: Incomplete | None = None) -> None: ... + r: String[Literal[False]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, cellSmartTag, r: str) -> None: ... class SmartTags(Serialisable): tagname: str cellSmartTags: Incomplete - __elements__: Incomplete + __elements__: ClassVar[tuple[str, ...]] def __init__(self, cellSmartTags=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi index c90397270..ac50fe04d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi @@ -1,156 +1,199 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias -from openpyxl.descriptors import String +from openpyxl.descriptors import Strict, String +from openpyxl.descriptors.base import Alias, Bool, Integer, NoneSet, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.worksheet.filters import AutoFilter, SortState + +_TableColumnTotalsRowFunction: TypeAlias = Literal[ + "sum", "min", "max", "average", "count", "countNums", "stdDev", "var", "custom" +] +_TableTableType: TypeAlias = Literal["worksheet", "xml", "queryTable"] TABLESTYLES: Incomplete PIVOTSTYLES: Incomplete class TableStyleInfo(Serialisable): tagname: str - name: Incomplete - showFirstColumn: Incomplete - showLastColumn: Incomplete - showRowStripes: Incomplete - showColumnStripes: Incomplete + name: String[Literal[True]] + showFirstColumn: Bool[Literal[True]] + showLastColumn: Bool[Literal[True]] + showRowStripes: Bool[Literal[True]] + showColumnStripes: Bool[Literal[True]] def __init__( self, - name: Incomplete | None = None, - showFirstColumn: Incomplete | None = None, - showLastColumn: Incomplete | None = None, - showRowStripes: Incomplete | None = None, - showColumnStripes: Incomplete | None = None, + name: str | None = None, + showFirstColumn: _ConvertibleToBool | None = None, + showLastColumn: _ConvertibleToBool | None = None, + showRowStripes: _ConvertibleToBool | None = None, + showColumnStripes: _ConvertibleToBool | None = None, ) -> None: ... class XMLColumnProps(Serialisable): tagname: str - mapId: Incomplete - xpath: Incomplete - denormalized: Incomplete - xmlDataType: Incomplete - extLst: Incomplete - __elements__: Incomplete + mapId: Integer[Literal[False]] + xpath: String[Literal[False]] + denormalized: Bool[Literal[True]] + xmlDataType: String[Literal[False]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload + def __init__( + self, + mapId: _ConvertibleToInt, + xpath: str, + denormalized: _ConvertibleToBool | None = None, + *, + xmlDataType: str, + extLst: Unused = None, + ) -> None: ... + @overload def __init__( self, - mapId: Incomplete | None = None, - xpath: Incomplete | None = None, - denormalized: Incomplete | None = None, - xmlDataType: Incomplete | None = None, - extLst: Incomplete | None = None, + mapId: _ConvertibleToInt, + xpath: str, + denormalized: _ConvertibleToBool | None, + xmlDataType: str, + extLst: Unused = None, ) -> None: ... class TableFormula(Serialisable): tagname: str - array: Incomplete + array: Bool[Literal[True]] attr_text: Incomplete - text: Incomplete - def __init__(self, array: Incomplete | None = None, attr_text: Incomplete | None = None) -> None: ... + text: Alias + def __init__(self, array: _ConvertibleToBool | None = None, attr_text: Incomplete | None = None) -> None: ... class TableColumn(Serialisable): tagname: str - id: Incomplete - uniqueName: Incomplete - name: Incomplete - totalsRowFunction: Incomplete - totalsRowLabel: Incomplete - queryTableFieldId: Incomplete - headerRowDxfId: Incomplete - dataDxfId: Incomplete - totalsRowDxfId: Incomplete - headerRowCellStyle: Incomplete - dataCellStyle: Incomplete - totalsRowCellStyle: Incomplete - calculatedColumnFormula: Incomplete - totalsRowFormula: Incomplete - xmlColumnPr: Incomplete - extLst: Incomplete - __elements__: Incomplete + id: Integer[Literal[False]] + uniqueName: String[Literal[True]] + name: String[Literal[False]] + totalsRowFunction: NoneSet[_TableColumnTotalsRowFunction] + totalsRowLabel: String[Literal[True]] + queryTableFieldId: Integer[Literal[True]] + headerRowDxfId: Integer[Literal[True]] + dataDxfId: Integer[Literal[True]] + totalsRowDxfId: Integer[Literal[True]] + headerRowCellStyle: String[Literal[True]] + dataCellStyle: String[Literal[True]] + totalsRowCellStyle: String[Literal[True]] + calculatedColumnFormula: Typed[TableFormula, Literal[True]] + totalsRowFormula: Typed[TableFormula, Literal[True]] + xmlColumnPr: Typed[XMLColumnProps, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + @overload + def __init__( + self, + id: _ConvertibleToInt, + uniqueName: str | None = None, + *, + name: str, + totalsRowFunction: _TableColumnTotalsRowFunction | Literal["none"] | None = None, + totalsRowLabel: str | None = None, + queryTableFieldId: _ConvertibleToInt | None = None, + headerRowDxfId: _ConvertibleToInt | None = None, + dataDxfId: _ConvertibleToInt | None = None, + totalsRowDxfId: _ConvertibleToInt | None = None, + headerRowCellStyle: str | None = None, + dataCellStyle: str | None = None, + totalsRowCellStyle: str | None = None, + calculatedColumnFormula: TableFormula | None = None, + totalsRowFormula: TableFormula | None = None, + xmlColumnPr: XMLColumnProps | None = None, + extLst: ExtensionList | None = None, + ) -> None: ... + @overload def __init__( self, - id: Incomplete | None = None, - uniqueName: Incomplete | None = None, - name: Incomplete | None = None, - totalsRowFunction: Incomplete | None = None, - totalsRowLabel: Incomplete | None = None, - queryTableFieldId: Incomplete | None = None, - headerRowDxfId: Incomplete | None = None, - dataDxfId: Incomplete | None = None, - totalsRowDxfId: Incomplete | None = None, - headerRowCellStyle: Incomplete | None = None, - dataCellStyle: Incomplete | None = None, - totalsRowCellStyle: Incomplete | None = None, - calculatedColumnFormula: Incomplete | None = None, - totalsRowFormula: Incomplete | None = None, - xmlColumnPr: Incomplete | None = None, - extLst: Incomplete | None = None, + id: _ConvertibleToInt, + uniqueName: str | None, + name: str, + totalsRowFunction: _TableColumnTotalsRowFunction | Literal["none"] | None = None, + totalsRowLabel: str | None = None, + queryTableFieldId: _ConvertibleToInt | None = None, + headerRowDxfId: _ConvertibleToInt | None = None, + dataDxfId: _ConvertibleToInt | None = None, + totalsRowDxfId: _ConvertibleToInt | None = None, + headerRowCellStyle: str | None = None, + dataCellStyle: str | None = None, + totalsRowCellStyle: str | None = None, + calculatedColumnFormula: TableFormula | None = None, + totalsRowFormula: TableFormula | None = None, + xmlColumnPr: XMLColumnProps | None = None, + extLst: ExtensionList | None = None, ) -> None: ... def __iter__(self): ... @classmethod def from_tree(cls, node): ... -class TableNameDescriptor(String): - def __set__(self, instance, value) -> None: ... +class TableNameDescriptor(String[Incomplete]): + def __set__(self, instance: Serialisable | Strict, value) -> None: ... class Table(Serialisable): mime_type: str tagname: str - id: Incomplete - name: Incomplete + id: Integer[Literal[False]] + name: String[Literal[True]] displayName: Incomplete - comment: Incomplete + comment: String[Literal[True]] ref: Incomplete - tableType: Incomplete - headerRowCount: Incomplete - insertRow: Incomplete - insertRowShift: Incomplete - totalsRowCount: Incomplete - totalsRowShown: Incomplete - published: Incomplete - headerRowDxfId: Incomplete - dataDxfId: Incomplete - totalsRowDxfId: Incomplete - headerRowBorderDxfId: Incomplete - tableBorderDxfId: Incomplete - totalsRowBorderDxfId: Incomplete - headerRowCellStyle: Incomplete - dataCellStyle: Incomplete - totalsRowCellStyle: Incomplete - connectionId: Incomplete - autoFilter: Incomplete - sortState: Incomplete + tableType: NoneSet[_TableTableType] + headerRowCount: Integer[Literal[True]] + insertRow: Bool[Literal[True]] + insertRowShift: Bool[Literal[True]] + totalsRowCount: Integer[Literal[True]] + totalsRowShown: Bool[Literal[True]] + published: Bool[Literal[True]] + headerRowDxfId: Integer[Literal[True]] + dataDxfId: Integer[Literal[True]] + totalsRowDxfId: Integer[Literal[True]] + headerRowBorderDxfId: Integer[Literal[True]] + tableBorderDxfId: Integer[Literal[True]] + totalsRowBorderDxfId: Integer[Literal[True]] + headerRowCellStyle: String[Literal[True]] + dataCellStyle: String[Literal[True]] + totalsRowCellStyle: String[Literal[True]] + connectionId: Integer[Literal[True]] + autoFilter: Typed[AutoFilter, Literal[True]] + sortState: Typed[SortState, Literal[True]] tableColumns: Incomplete - tableStyleInfo: Incomplete - extLst: Incomplete - __elements__: Incomplete + tableStyleInfo: Typed[TableStyleInfo, Literal[True]] + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] def __init__( self, - id: int = 1, + id: _ConvertibleToInt = 1, displayName: Incomplete | None = None, ref: Incomplete | None = None, - name: Incomplete | None = None, - comment: Incomplete | None = None, - tableType: Incomplete | None = None, - headerRowCount: int = 1, - insertRow: Incomplete | None = None, - insertRowShift: Incomplete | None = None, - totalsRowCount: Incomplete | None = None, - totalsRowShown: Incomplete | None = None, - published: Incomplete | None = None, - headerRowDxfId: Incomplete | None = None, - dataDxfId: Incomplete | None = None, - totalsRowDxfId: Incomplete | None = None, - headerRowBorderDxfId: Incomplete | None = None, - tableBorderDxfId: Incomplete | None = None, - totalsRowBorderDxfId: Incomplete | None = None, - headerRowCellStyle: Incomplete | None = None, - dataCellStyle: Incomplete | None = None, - totalsRowCellStyle: Incomplete | None = None, - connectionId: Incomplete | None = None, - autoFilter: Incomplete | None = None, - sortState: Incomplete | None = None, + name: str | None = None, + comment: str | None = None, + tableType: _TableTableType | Literal["none"] | None = None, + headerRowCount: _ConvertibleToInt | None = 1, + insertRow: _ConvertibleToBool | None = None, + insertRowShift: _ConvertibleToBool | None = None, + totalsRowCount: _ConvertibleToInt | None = None, + totalsRowShown: _ConvertibleToBool | None = None, + published: _ConvertibleToBool | None = None, + headerRowDxfId: _ConvertibleToInt | None = None, + dataDxfId: _ConvertibleToInt | None = None, + totalsRowDxfId: _ConvertibleToInt | None = None, + headerRowBorderDxfId: _ConvertibleToInt | None = None, + tableBorderDxfId: _ConvertibleToInt | None = None, + totalsRowBorderDxfId: _ConvertibleToInt | None = None, + headerRowCellStyle: str | None = None, + dataCellStyle: str | None = None, + totalsRowCellStyle: str | None = None, + connectionId: _ConvertibleToInt | None = None, + autoFilter: AutoFilter | None = None, + sortState: SortState | None = None, tableColumns=(), - tableStyleInfo: Incomplete | None = None, - extLst: Incomplete | None = None, + tableStyleInfo: TableStyleInfo | None = None, + extLst: Unused = None, ) -> None: ... def to_tree(self): ... @property @@ -163,9 +206,9 @@ class TablePartList(Serialisable): # Overwritten by property below # count: Integer tablePart: Incomplete - __elements__: Incomplete - __attrs__: Incomplete - def __init__(self, count: Incomplete | None = None, tablePart=()) -> None: ... + __elements__: ClassVar[tuple[str, ...]] + __attrs__: ClassVar[tuple[str, ...]] + def __init__(self, count: Unused = None, tablePart=()) -> None: ... def append(self, part) -> None: ... @property def count(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi index 86bb9afea..51c208c36 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi @@ -1,84 +1,107 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import ( + Bool, + Float, + Integer, + NoneSet, + Set, + String, + Typed, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) +from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable -class Pane(Serialisable): # type: ignore[misc] - xSplit: Incomplete - ySplit: Incomplete - topLeftCell: Incomplete - activePane: Incomplete - state: Incomplete +_Pane: TypeAlias = Literal["bottomRight", "topRight", "bottomLeft", "topLeft"] +_SheetViewView: TypeAlias = Literal["normal", "pageBreakPreview", "pageLayout"] +_PaneState: TypeAlias = Literal["split", "frozen", "frozenSplit"] + +class Pane(Serialisable): + xSplit: Float[Literal[True]] + ySplit: Float[Literal[True]] + topLeftCell: String[Literal[True]] + activePane: Set[_Pane] + state: Set[_PaneState] def __init__( self, - xSplit: Incomplete | None = None, - ySplit: Incomplete | None = None, - topLeftCell: Incomplete | None = None, - activePane: str = "topLeft", - state: str = "split", + xSplit: _ConvertibleToFloat | None = None, + ySplit: _ConvertibleToFloat | None = None, + topLeftCell: str | None = None, + activePane: _Pane = "topLeft", + state: _PaneState = "split", ) -> None: ... -class Selection(Serialisable): # type: ignore[misc] - pane: Incomplete - activeCell: Incomplete - activeCellId: Incomplete - sqref: Incomplete +class Selection(Serialisable): + pane: NoneSet[_Pane] + activeCell: String[Literal[True]] + activeCellId: Integer[Literal[True]] + sqref: String[Literal[True]] def __init__( - self, pane: Incomplete | None = None, activeCell: str = "A1", activeCellId: Incomplete | None = None, sqref: str = "A1" + self, + pane: _Pane | Literal["none"] | None = None, + activeCell: str | None = "A1", + activeCellId: _ConvertibleToInt | None = None, + sqref: str | None = "A1", ) -> None: ... class SheetView(Serialisable): tagname: str - windowProtection: Incomplete - showFormulas: Incomplete - showGridLines: Incomplete - showRowColHeaders: Incomplete - showZeros: Incomplete - rightToLeft: Incomplete - tabSelected: Incomplete - showRuler: Incomplete - showOutlineSymbols: Incomplete - defaultGridColor: Incomplete - showWhiteSpace: Incomplete - view: Incomplete - topLeftCell: Incomplete - colorId: Incomplete - zoomScale: Incomplete - zoomScaleNormal: Incomplete - zoomScaleSheetLayoutView: Incomplete - zoomScalePageLayoutView: Incomplete - zoomToFit: Incomplete - workbookViewId: Incomplete + windowProtection: Bool[Literal[True]] + showFormulas: Bool[Literal[True]] + showGridLines: Bool[Literal[True]] + showRowColHeaders: Bool[Literal[True]] + showZeros: Bool[Literal[True]] + rightToLeft: Bool[Literal[True]] + tabSelected: Bool[Literal[True]] + showRuler: Bool[Literal[True]] + showOutlineSymbols: Bool[Literal[True]] + defaultGridColor: Bool[Literal[True]] + showWhiteSpace: Bool[Literal[True]] + view: NoneSet[_SheetViewView] + topLeftCell: String[Literal[True]] + colorId: Integer[Literal[True]] + zoomScale: Integer[Literal[True]] + zoomScaleNormal: Integer[Literal[True]] + zoomScaleSheetLayoutView: Integer[Literal[True]] + zoomScalePageLayoutView: Integer[Literal[True]] + zoomToFit: Bool[Literal[True]] + workbookViewId: Integer[Literal[True]] selection: Incomplete - pane: Incomplete + pane: Typed[Pane, Literal[True]] def __init__( self, - windowProtection: Incomplete | None = None, - showFormulas: Incomplete | None = None, - showGridLines: Incomplete | None = None, - showRowColHeaders: Incomplete | None = None, - showZeros: Incomplete | None = None, - rightToLeft: Incomplete | None = None, - tabSelected: Incomplete | None = None, - showRuler: Incomplete | None = None, - showOutlineSymbols: Incomplete | None = None, - defaultGridColor: Incomplete | None = None, - showWhiteSpace: Incomplete | None = None, - view: Incomplete | None = None, - topLeftCell: Incomplete | None = None, - colorId: Incomplete | None = None, - zoomScale: Incomplete | None = None, - zoomScaleNormal: Incomplete | None = None, - zoomScaleSheetLayoutView: Incomplete | None = None, - zoomScalePageLayoutView: Incomplete | None = None, - zoomToFit: Incomplete | None = None, - workbookViewId: int = 0, + windowProtection: _ConvertibleToBool | None = None, + showFormulas: _ConvertibleToBool | None = None, + showGridLines: _ConvertibleToBool | None = None, + showRowColHeaders: _ConvertibleToBool | None = None, + showZeros: _ConvertibleToBool | None = None, + rightToLeft: _ConvertibleToBool | None = None, + tabSelected: _ConvertibleToBool | None = None, + showRuler: _ConvertibleToBool | None = None, + showOutlineSymbols: _ConvertibleToBool | None = None, + defaultGridColor: _ConvertibleToBool | None = None, + showWhiteSpace: _ConvertibleToBool | None = None, + view: _SheetViewView | Literal["none"] | None = None, + topLeftCell: str | None = None, + colorId: _ConvertibleToInt | None = None, + zoomScale: _ConvertibleToInt | None = None, + zoomScaleNormal: _ConvertibleToInt | None = None, + zoomScaleSheetLayoutView: _ConvertibleToInt | None = None, + zoomScalePageLayoutView: _ConvertibleToInt | None = None, + zoomToFit: _ConvertibleToBool | None = None, + workbookViewId: _ConvertibleToInt | None = 0, selection: Incomplete | None = None, - pane: Incomplete | None = None, + pane: Pane | None = None, ) -> None: ... class SheetViewList(Serialisable): tagname: str sheetView: Incomplete - extLst: Incomplete - __elements__: Incomplete - def __init__(self, sheetView: Incomplete | None = None, extLst: Incomplete | None = None) -> None: ... + extLst: Typed[ExtensionList, Literal[True]] + __elements__: ClassVar[tuple[str, ...]] + def __init__(self, sheetView: Incomplete | None = None, extLst: Unused = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/METADATA.toml index d00ec0514..43c0d301d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/METADATA.toml @@ -1,4 +1,5 @@ version = "2.4.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml index 3fdfdc78d..5c9238818 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml @@ -1,6 +1,7 @@ version = "3.0.*" # Requires a version of cryptography where cryptography.hazmat.primitives.ciphers.Cipher is generic requires = ["cryptography>=37.0.0"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi index 464b0c612..e7cbf16e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi @@ -1,9 +1,10 @@ +from _typeshed import ReadableBuffer from socket import _RetAddress, socket from threading import Thread from typing import Protocol from paramiko.channel import Channel -from paramiko.message import Message +from paramiko.message import Message, _LikeBytes from paramiko.pkey import PKey from paramiko.transport import Transport @@ -61,7 +62,7 @@ class AgentKey(PKey): blob: bytes public_blob: None name: str - def __init__(self, agent: AgentSSH, blob: bytes) -> None: ... + def __init__(self, agent: AgentSSH, blob: ReadableBuffer) -> None: ... def asbytes(self) -> bytes: ... def get_name(self) -> str: ... - def sign_ssh_data(self, data: bytes, algorithm: str | None = None) -> Message: ... + def sign_ssh_data(self, data: _LikeBytes, algorithm: str | None = None) -> Message: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/channel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/channel.pyi index 536d3bfdc..6b5a3664f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/channel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/channel.pyi @@ -1,4 +1,5 @@ -from collections.abc import Callable, Mapping +from _typeshed import SupportsItems +from collections.abc import Callable from logging import Logger from threading import Condition, Event, Lock from typing import Any, TypeVar @@ -6,6 +7,7 @@ from typing_extensions import Literal from paramiko.buffered_pipe import BufferedPipe from paramiko.file import BufferedFile +from paramiko.message import _LikeBytes from paramiko.transport import Transport from paramiko.util import ClosingContextManager @@ -43,22 +45,22 @@ class Channel(ClosingContextManager): def __init__(self, chanid: int) -> None: ... def __del__(self) -> None: ... def get_pty( - self, term: str | bytes = "vt100", width: int = 80, height: int = 24, width_pixels: int = 0, height_pixels: int = 0 + self, term: _LikeBytes = "vt100", width: int = 80, height: int = 24, width_pixels: int = 0, height_pixels: int = 0 ) -> None: ... def invoke_shell(self) -> None: ... - def exec_command(self, command: str | bytes) -> None: ... - def invoke_subsystem(self, subsystem: str | bytes) -> None: ... + def exec_command(self, command: _LikeBytes) -> None: ... + def invoke_subsystem(self, subsystem: _LikeBytes) -> None: ... def resize_pty(self, width: int = 80, height: int = 24, width_pixels: int = 0, height_pixels: int = 0) -> None: ... - def update_environment(self, environment: Mapping[str | bytes, str | bytes]) -> None: ... - def set_environment_variable(self, name: str | bytes, value: str | bytes) -> None: ... + def update_environment(self, environment: SupportsItems[_LikeBytes, _LikeBytes]) -> None: ... + def set_environment_variable(self, name: _LikeBytes, value: _LikeBytes) -> None: ... def exit_status_ready(self) -> bool: ... def recv_exit_status(self) -> int: ... def send_exit_status(self, status: int) -> None: ... def request_x11( self, screen_number: int = 0, - auth_protocol: str | bytes | None = None, - auth_cookie: str | bytes | None = None, + auth_protocol: _LikeBytes | None = None, + auth_cookie: _LikeBytes | None = None, single_connection: bool = False, handler: Callable[[Channel, tuple[str, int]], object] | None = None, ) -> bytes: ... @@ -78,10 +80,10 @@ class Channel(ClosingContextManager): def recv_stderr_ready(self) -> bool: ... def recv_stderr(self, nbytes: int) -> bytes: ... def send_ready(self) -> bool: ... - def send(self, s: bytes) -> int: ... - def send_stderr(self, s: bytes) -> int: ... - def sendall(self, s: bytes) -> None: ... - def sendall_stderr(self, s: bytes) -> None: ... + def send(self, s: bytes | bytearray) -> int: ... + def send_stderr(self, s: bytes | bytearray) -> int: ... + def sendall(self, s: bytes | bytearray) -> None: ... + def sendall_stderr(self, s: bytes | bytearray) -> None: ... def makefile(self, *params: Any) -> ChannelFile: ... def makefile_stderr(self, *params: Any) -> ChannelStderrFile: ... def makefile_stdin(self, *params: Any) -> ChannelStdinFile: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi index feda1bdfc..413bf0fdb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi @@ -12,7 +12,12 @@ from .transport import _SocketLike class _TransportFactory(Protocol): def __call__( - self, __sock: _SocketLike, *, gss_kex: bool, gss_deleg_creds: bool, disabled_algorithms: dict[str, Iterable[str]] | None + self, + __sock: _SocketLike, + *, + gss_kex: bool, + gss_deleg_creds: bool, + disabled_algorithms: Mapping[str, Iterable[str]] | None, ) -> Transport: ... class SSHClient(ClosingContextManager): @@ -44,7 +49,7 @@ class SSHClient(ClosingContextManager): auth_timeout: float | None = None, gss_trust_dns: bool = True, passphrase: str | None = None, - disabled_algorithms: dict[str, Iterable[str]] | None = None, + disabled_algorithms: Mapping[str, Iterable[str]] | None = None, transport_factory: _TransportFactory | None = None, ) -> None: ... def close(self) -> None: ... @@ -54,7 +59,7 @@ class SSHClient(ClosingContextManager): bufsize: int = -1, timeout: float | None = None, get_pty: bool = False, - environment: dict[str, str] | None = None, + environment: Mapping[str, str] | None = None, ) -> tuple[ChannelStdinFile, ChannelFile, ChannelStderrFile]: ... def invoke_shell( self, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/compress.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/compress.pyi index da0394797..9dd81d17f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/compress.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/compress.pyi @@ -1,11 +1,12 @@ +from _typeshed import ReadableBuffer from zlib import _Compress, _Decompress class ZlibCompressor: z: _Compress def __init__(self) -> None: ... - def __call__(self, data: bytes) -> bytes: ... + def __call__(self, data: ReadableBuffer) -> bytes: ... class ZlibDecompressor: z: _Decompress def __init__(self) -> None: ... - def __call__(self, data: bytes) -> bytes: ... + def __call__(self, data: ReadableBuffer) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/dsskey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/dsskey.pyi index a63e8f31a..979812821 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/dsskey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/dsskey.pyi @@ -1,3 +1,4 @@ +from _typeshed import ReadableBuffer from collections.abc import Callable from typing import IO @@ -15,7 +16,7 @@ class DSSKey(PKey): def __init__( self, msg: Message | None = None, - data: bytes | None = None, + data: ReadableBuffer | None = None, filename: str | None = None, password: str | None = None, vals: tuple[int, int, int, int] | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ecdsakey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ecdsakey.pyi index 661b27de6..515e7e85e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ecdsakey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ecdsakey.pyi @@ -1,3 +1,4 @@ +from _typeshed import ReadableBuffer from collections.abc import Callable, Sequence from typing import IO, Any @@ -30,7 +31,7 @@ class ECDSAKey(PKey): def __init__( self, msg: Message | None = None, - data: bytes | None = None, + data: ReadableBuffer | None = None, filename: str | None = None, password: str | None = None, vals: tuple[EllipticCurvePrivateKey, EllipticCurvePublicKey] | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ed25519key.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ed25519key.pyi index 8c0361d4e..d5d269a12 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ed25519key.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/ed25519key.pyi @@ -1,3 +1,4 @@ +from _typeshed import ReadableBuffer from typing import IO from paramiko.message import Message @@ -8,7 +9,7 @@ class Ed25519Key(PKey): def __init__( self, msg: Message | None = None, - data: bytes | None = None, + data: ReadableBuffer | None = None, filename: str | None = None, password: str | None = None, file_obj: IO[str] | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/message.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/message.pyi index 0f1261c85..ac6a9decd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/message.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/message.pyi @@ -1,3 +1,4 @@ +from _typeshed import ReadableBuffer from collections.abc import Iterable from io import BytesIO from typing import Any, Protocol @@ -6,13 +7,13 @@ from typing_extensions import TypeAlias class _SupportsAsBytes(Protocol): def asbytes(self) -> bytes: ... -_LikeBytes: TypeAlias = bytes | str | _SupportsAsBytes +_LikeBytes: TypeAlias = bytes | str | _SupportsAsBytes | ReadableBuffer class Message: big_int: int packet: BytesIO seqno: int # only when packet.Packetizer.read_message() is used - def __init__(self, content: bytes | None = None) -> None: ... + def __init__(self, content: ReadableBuffer | None = None) -> None: ... def __bytes__(self) -> bytes: ... def asbytes(self) -> bytes: ... def rewind(self) -> None: ... @@ -29,8 +30,8 @@ class Message: def get_text(self) -> str: ... def get_binary(self) -> bytes: ... def get_list(self) -> list[str]: ... - def add_bytes(self, b: bytes) -> Message: ... - def add_byte(self, b: bytes) -> Message: ... + def add_bytes(self, b: ReadableBuffer) -> Message: ... + def add_byte(self, b: ReadableBuffer) -> Message: ... def add_boolean(self, b: bool) -> Message: ... def add_int(self, n: int) -> Message: ... def add_adaptive_int(self, n: int) -> Message: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/packet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/packet.pyi index da6a0c9ef..820d4e241 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/packet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/packet.pyi @@ -1,4 +1,4 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, ReadableBuffer from collections.abc import Callable from hashlib import _Hash from logging import Logger @@ -9,7 +9,7 @@ from cryptography.hazmat.primitives.ciphers import Cipher from paramiko.compress import ZlibCompressor, ZlibDecompressor from paramiko.message import Message -def compute_hmac(key: bytes, message: bytes, digest_class: _Hash) -> bytes: ... +def compute_hmac(key: bytes | bytearray, message: ReadableBuffer, digest_class: _Hash) -> bytes: ... class NeedRekeyException(Exception): ... @@ -30,7 +30,7 @@ class Packetizer: block_size: int, mac_engine: _Hash, mac_size: int, - mac_key: bytes, + mac_key: bytes | bytearray, sdctr: bool = False, etm: bool = False, ) -> None: ... @@ -40,7 +40,7 @@ class Packetizer: block_size: int, mac_engine: _Hash, mac_size: int, - mac_key: bytes, + mac_key: bytes | bytearray, etm: bool = False, ) -> None: ... def set_outbound_compressor(self, compressor: ZlibCompressor) -> None: ... @@ -57,7 +57,7 @@ class Packetizer: def handshake_timed_out(self) -> bool: ... def complete_handshake(self) -> None: ... def read_all(self, n: int, check_rekey: bool = False) -> bytes: ... - def write_all(self, out: bytes) -> None: ... + def write_all(self, out: ReadableBuffer) -> None: ... def readline(self, timeout: float) -> str: ... def send_message(self, data: Message) -> None: ... def read_message(self) -> tuple[int, Message]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/pkey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/pkey.pyi index a71727411..caba24194 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/pkey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/pkey.pyi @@ -1,12 +1,14 @@ from re import Pattern -from typing import IO +from typing import IO, TypeVar from typing_extensions import Self from paramiko.message import Message OPENSSH_AUTH_MAGIC: bytes -def _unpad_openssh(data: bytes) -> bytes: ... +_BytesT = TypeVar("_BytesT", bound=bytes | bytearray) + +def _unpad_openssh(data: _BytesT) -> _BytesT: ... class PKey: public_blob: PublicBlob | None @@ -33,7 +35,7 @@ class PKey: class PublicBlob: key_type: str - key_blob: str + key_blob: bytes comment: str def __init__(self, type_: str, blob: bytes, comment: str | None = None) -> None: ... @classmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/proxy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/proxy.pyi index 111e056b0..ad7971947 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/proxy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/proxy.pyi @@ -1,3 +1,4 @@ +from _typeshed import ReadableBuffer from subprocess import Popen from typing import Any @@ -8,7 +9,7 @@ class ProxyCommand(ClosingContextManager): process: Popen[Any] timeout: float | None def __init__(self, command_line: str) -> None: ... - def send(self, content: bytes) -> int: ... + def send(self, content: ReadableBuffer) -> int: ... def recv(self, size: int) -> bytes: ... def close(self) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi index b9ececeeb..3ad9e14be 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi @@ -1,3 +1,4 @@ +from _typeshed import ReadableBuffer from collections.abc import Callable from typing import IO @@ -11,7 +12,7 @@ class RSAKey(PKey): def __init__( self, msg: Message | None = None, - data: bytes | None = None, + data: ReadableBuffer | None = None, filename: str | None = None, password: str | None = None, key: None | RSAPublicKey | RSAPrivateKey = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi index 5bad906be..460c37c05 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi @@ -1,3 +1,4 @@ +from _typeshed import StrOrBytesPath from collections.abc import Callable, Iterator from logging import Logger from typing import IO @@ -50,11 +51,11 @@ class SFTPClient(BaseSFTP, ClosingContextManager): self, fl: IO[bytes], remotepath: bytes | str, file_size: int = 0, callback: _Callback | None = None, confirm: bool = True ) -> SFTPAttributes: ... def put( - self, localpath: bytes | str, remotepath: bytes | str, callback: _Callback | None = None, confirm: bool = True + self, localpath: StrOrBytesPath, remotepath: bytes | str, callback: _Callback | None = None, confirm: bool = True ) -> SFTPAttributes: ... def getfo(self, remotepath: bytes | str, fl: IO[bytes], callback: _Callback | None = None, prefetch: bool = True) -> int: ... def get( - self, remotepath: bytes | str, localpath: bytes | str, callback: _Callback | None = None, prefetch: bool = True + self, remotepath: bytes | str, localpath: StrOrBytesPath, callback: _Callback | None = None, prefetch: bool = True ) -> None: ... class SFTP(SFTPClient): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi index cbb20b800..afe4bfd47 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi @@ -2,6 +2,7 @@ from collections.abc import Iterator, Sequence from typing import Any from paramiko.file import BufferedFile +from paramiko.message import _LikeBytes from paramiko.sftp_attr import SFTPAttributes from paramiko.sftp_client import SFTPClient from paramiko.sftp_handle import SFTPHandle @@ -11,7 +12,7 @@ class SFTPFile(BufferedFile[Any]): sftp: SFTPClient handle: SFTPHandle pipelined: bool - def __init__(self, sftp: SFTPClient, handle: bytes, mode: str = "r", bufsize: int = -1) -> None: ... + def __init__(self, sftp: SFTPClient, handle: _LikeBytes, mode: str = "r", bufsize: int = -1) -> None: ... def __del__(self) -> None: ... def close(self) -> None: ... def settimeout(self, timeout: float) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_handle.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_handle.pyi index 08c199d3c..d730c69c4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_handle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_handle.pyi @@ -1,3 +1,5 @@ +from _typeshed import ReadableBuffer + from paramiko.sftp_attr import SFTPAttributes from paramiko.util import ClosingContextManager @@ -5,6 +7,6 @@ class SFTPHandle(ClosingContextManager): def __init__(self, flags: int = 0) -> None: ... def close(self) -> None: ... def read(self, offset: int, length: int) -> bytes | int: ... - def write(self, offset: int, data: bytes) -> int: ... + def write(self, offset: int, data: ReadableBuffer) -> int: ... def stat(self) -> int | SFTPAttributes: ... def chattr(self, attr: SFTPAttributes) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/transport.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/transport.pyi index 6443312a6..fba9a6cde 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/transport.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/transport.pyi @@ -1,4 +1,4 @@ -from collections.abc import Callable, Iterable, Sequence +from collections.abc import Callable, Iterable, Mapping, Sequence from logging import Logger from socket import socket from threading import Condition, Event, Lock, Thread @@ -64,7 +64,7 @@ class Transport(Thread, ClosingContextManager): banner_timeout: float handshake_timeout: float auth_timeout: float - disabled_algorithms: dict[str, Iterable[str]] | None + disabled_algorithms: Mapping[str, Iterable[str]] | None server_mode: bool server_object: ServerInterface | None server_key_dict: dict[str, PKey] @@ -79,7 +79,7 @@ class Transport(Thread, ClosingContextManager): default_max_packet_size: int = 32768, gss_kex: bool = False, gss_deleg_creds: bool = True, - disabled_algorithms: dict[str, Iterable[str]] | None = None, + disabled_algorithms: Mapping[str, Iterable[str]] | None = None, server_sig_algs: bool = True, ) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/util.pyi index f8cfecb21..f7388e665 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/util.pyi @@ -1,3 +1,5 @@ +from _typeshed import ReadableBuffer +from collections.abc import Iterable from hashlib import _Hash from logging import Logger, LogRecord from types import TracebackType @@ -10,14 +12,14 @@ from paramiko.hostkeys import HostKeys class SupportsClose(Protocol): def close(self) -> None: ... -def inflate_long(s: bytes, always_positive: bool = False) -> int: ... +def inflate_long(s: bytes | bytearray, always_positive: bool = False) -> int: ... def deflate_long(n: int, add_sign_padding: bool = True) -> bytes: ... -def format_binary(data: bytes, prefix: str = "") -> list[str]: ... -def format_binary_line(data: bytes) -> str: ... -def safe_string(s: bytes) -> bytes: ... +def format_binary(data: bytes | bytearray, prefix: str = "") -> list[str]: ... +def format_binary_line(data: bytes | bytearray) -> str: ... +def safe_string(s: Iterable[int | str]) -> bytes: ... def bit_length(n: int) -> int: ... def tb_strings() -> list[str]: ... -def generate_key_bytes(hash_alg: type[_Hash], salt: bytes, key: bytes | str, nbytes: int) -> bytes: ... +def generate_key_bytes(hash_alg: type[_Hash], salt: ReadableBuffer, key: bytes | str, nbytes: int) -> bytes: ... def load_host_keys(filename: str) -> HostKeys: ... def parse_ssh_config(file_obj: IO[str]) -> SSHConfig: ... def lookup_ssh_host_config(hostname: str, config: SSHConfig) -> SSHConfigDict: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/METADATA.toml index 04ddbe7b0..361474831 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/METADATA.toml @@ -1,4 +1,5 @@ version = "0.13.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/METADATA.toml index 39cd1ce95..28d94736f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/METADATA.toml @@ -1,5 +1,6 @@ -version = "4.22.*" +version = "4.23.*" extra_description = "Generated with aid from mypy-protobuf v3.4.0" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/METADATA.toml index 2a3162d1d..4a249abf8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/METADATA.toml @@ -1,4 +1,5 @@ version = "2.9.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml index baa929c65..4cdff58ef 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml @@ -1,6 +1,7 @@ version = "23.1.*" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml index 7f11ff387..c3490c9bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml @@ -1,4 +1,5 @@ version = "3.0.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml index e94528184..a752aeb82 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml @@ -1,2 +1,2 @@ -version = "5.10.*" +version = "5.11.*" requires = ["types-setuptools"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi index 472aa855c..090a115e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi @@ -41,3 +41,6 @@ class Tree(Target, TOC): typecode: _TypeCode = "DATA", ) -> None: ... def assemble(self) -> None: ... + +def normalize_toc(toc: Iterable[_TOCTuple]) -> list[_TOCTuple]: ... +def normalize_pyz_toc(toc: Iterable[_TOCTuple]) -> list[_TOCTuple]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/depend/imphookapi.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/depend/imphookapi.pyi index a5fddf4bd..19ba39abf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/depend/imphookapi.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/depend/imphookapi.pyi @@ -63,8 +63,8 @@ class PostGraphAPI: def imports(self) -> Generator[Package, None, None]: ... def add_imports(self, *module_names: str) -> None: ... def del_imports(self, *module_names: str) -> None: ... - def add_binaries(self, list_of_tuples: TOC | Iterable[tuple[StrOrBytesPath, StrOrBytesPath]]) -> None: ... - def add_datas(self, list_of_tuples: TOC | Iterable[tuple[StrOrBytesPath, StrOrBytesPath]]) -> None: ... + def add_binaries(self, binaries: TOC | Iterable[tuple[StrOrBytesPath, StrOrBytesPath]]) -> None: ... + def add_datas(self, datas: TOC | Iterable[tuple[StrOrBytesPath, StrOrBytesPath]]) -> None: ... def set_module_collection_mode( self, name: str | None, mode: Literal["pyz", "pyc", "py", "pyz+py", "py+pyz", None] ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/METADATA.toml index 8b3cb47b1..744a8cd91 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/METADATA.toml @@ -1,6 +1,7 @@ version = "1.5.*" # Requires a version of arrow with a `py.typed` file requires = ["arrow>=1.0.1"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/METADATA.toml index 2b4746def..175f394fa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/METADATA.toml @@ -1,4 +1,5 @@ version = "2.8.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml index 6885f10e0..452ffd22f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml @@ -1,5 +1,5 @@ version = "8.0.0.*" -obsolete_since = "8.0.1.0" # Released on 2023-05-05 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml index 8864f4e1d..423ba5838 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml @@ -1,6 +1,7 @@ -version = "4.5.4" +version = "4.5.5" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0", "types-pyOpenSSL"] +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/__init__.pyi index e96eb52fd..a02bc174b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/__init__.pyi @@ -1,4 +1,4 @@ -from . import client, connection, credentials, exceptions, sentinel, utils +from . import backoff, client, connection, credentials, exceptions, sentinel, utils from .cluster import RedisCluster as RedisCluster __all__ = [ @@ -13,6 +13,7 @@ __all__ = [ "CredentialProvider", "DataError", "from_url", + "default_backoff", "InvalidResponse", "PubSubError", "ReadOnlyError", @@ -32,6 +33,8 @@ __all__ = [ "WatchError", ] +default_backoff = backoff.default_backoff + Redis = client.Redis BlockingConnectionPool = connection.BlockingConnectionPool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/__init__.pyi index 22c85ecc0..23d3d7d41 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/__init__.pyi @@ -1,4 +1,5 @@ from redis.asyncio.client import Redis as Redis, StrictRedis as StrictRedis +from redis.asyncio.cluster import RedisCluster as RedisCluster from redis.asyncio.connection import ( BlockingConnectionPool as BlockingConnectionPool, Connection as Connection, @@ -6,6 +7,7 @@ from redis.asyncio.connection import ( SSLConnection as SSLConnection, UnixDomainSocketConnection as UnixDomainSocketConnection, ) +from redis.asyncio.parser import CommandsParser as CommandsParser from redis.asyncio.sentinel import ( Sentinel as Sentinel, SentinelConnectionPool as SentinelConnectionPool, @@ -13,6 +15,7 @@ from redis.asyncio.sentinel import ( SentinelManagedSSLConnection as SentinelManagedSSLConnection, ) from redis.asyncio.utils import from_url as from_url +from redis.backoff import default_backoff as default_backoff from redis.exceptions import ( AuthenticationError as AuthenticationError, AuthenticationWrongNumberOfArgsError as AuthenticationWrongNumberOfArgsError, @@ -35,15 +38,18 @@ __all__ = [ "BlockingConnectionPool", "BusyLoadingError", "ChildDeadlockedError", + "CommandsParser", "Connection", "ConnectionError", "ConnectionPool", "DataError", "from_url", + "default_backoff", "InvalidResponse", "PubSubError", "ReadOnlyError", "Redis", + "RedisCluster", "RedisError", "ResponseError", "Sentinel", diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi index fed150e24..575e833dd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi @@ -832,7 +832,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def zremrangebylex(self, name: _Key, min: _Value, max: _Value) -> Any: ... # type: ignore[override] def zremrangebyrank(self, name: _Key, min: int, max: int) -> Any: ... # type: ignore[override] def zremrangebyscore(self, name: _Key, min: _Value, max: _Value) -> Any: ... # type: ignore[override] - def zrevrank(self, name: _Key, value: _Value) -> Any: ... # type: ignore[override] + def zrevrank(self, name: _Key, value: _Value, withscore: bool = False) -> Any: ... # type: ignore[override] def zscore(self, name: _Key, value: _Value) -> Any: ... # type: ignore[override] def zunion(self, keys, aggregate: Incomplete | None = None, withscores: bool = False) -> Any: ... # type: ignore[override] def zunionstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None) -> Any: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/cluster.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/cluster.pyi index e61313fdd..25d8f9dd1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/cluster.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/cluster.pyi @@ -73,6 +73,7 @@ class RedisCluster(AbstractRedis, AbstractRedisCluster, Generic[_StrType]): # T ssl_certfile: str | None = None, ssl_check_hostname: bool = False, ssl_keyfile: str | None = None, + address_remap: Callable[[str, int], tuple[str, int]] | None = None, ) -> None: ... async def initialize(self) -> Self: ... async def close(self) -> None: ... @@ -135,8 +136,13 @@ class NodesManager: nodes_cache: dict[str, ClusterNode] slots_cache: dict[int, list[ClusterNode]] read_load_balancer: LoadBalancer + address_remap: Callable[[str, int], tuple[str, int]] | None def __init__( - self, startup_nodes: list[ClusterNode], require_full_coverage: bool, connection_kwargs: dict[str, Any] + self, + startup_nodes: list[ClusterNode], + require_full_coverage: bool, + connection_kwargs: dict[str, Any], + address_remap: Callable[[str, int], tuple[str, int]] | None = None, ) -> None: ... def get_node(self, host: str | None = None, port: int | None = None, node_name: str | None = None) -> ClusterNode | None: ... def set_nodes(self, old: dict[str, ClusterNode], new: dict[str, ClusterNode], remove_old: bool = False) -> None: ... @@ -144,6 +150,7 @@ class NodesManager: def get_nodes_by_server_type(self, server_type: str) -> list[ClusterNode]: ... async def initialize(self) -> None: ... async def close(self, attr: str = "nodes_cache") -> None: ... + def remap_host_port(self, host: str, port: int) -> tuple[str, int]: ... class ClusterPipeline(AbstractRedis, AbstractRedisCluster, Generic[_StrType]): # TODO: AsyncRedisClusterCommands def __init__(self, client: RedisCluster[_StrType]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi index ae7e0fd6a..09c9ebe1d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi @@ -43,7 +43,8 @@ class BaseParser: EXCEPTION_CLASSES: ExceptionMappingT def __init__(self, socket_read_size: int) -> None: ... def __del__(self) -> None: ... - def parse_error(self, response: str) -> ResponseError: ... + @classmethod + def parse_error(cls, response: str) -> ResponseError: ... def on_disconnect(self) -> None: ... def on_connect(self, connection: Connection): ... async def read_response(self, disable_decoding: bool = False) -> EncodableT | ResponseError | list[EncodableT] | None: ... @@ -60,7 +61,7 @@ class HiredisParser(BaseParser): def on_connect(self, connection: Connection): ... def on_disconnect(self) -> None: ... async def read_from_socket(self) -> Literal[True]: ... - async def read_response(self, disable_decoding: bool = False) -> EncodableT | list[EncodableT]: ... + async def read_response(self, disable_decoding: bool = False) -> EncodableT | list[EncodableT]: ... # type: ignore[override] DefaultParser: type[PythonParser | HiredisParser] @@ -134,11 +135,13 @@ class Connection: async def send_packed_command(self, command: bytes | str | Iterable[bytes], check_health: bool = True): ... async def send_command(self, *args, **kwargs) -> None: ... @overload - async def read_response(self, *, timeout: float) -> Incomplete | None: ... + async def read_response(self, *, timeout: float, disconnect_on_error: bool = True) -> Incomplete | None: ... @overload - async def read_response(self, disable_decoding: bool, timeout: float) -> Incomplete | None: ... + async def read_response( + self, disable_decoding: bool, timeout: float, *, disconnect_on_error: bool = True + ) -> Incomplete | None: ... @overload - async def read_response(self, disable_decoding: bool = False, timeout: None = None): ... + async def read_response(self, disable_decoding: bool = False, timeout: None = None, *, disconnect_on_error: bool = True): ... def pack_command(self, *args: EncodableT) -> list[bytes]: ... def pack_commands(self, commands: Iterable[Iterable[EncodableT]]) -> list[bytes]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi index edb68a4aa..78adae9a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi @@ -16,7 +16,7 @@ class SentinelManagedConnection(Connection): def __init__(self, **kwargs) -> None: ... async def connect_to(self, address) -> None: ... async def connect(self): ... - @overload + @overload # type: ignore[override] async def read_response(self, *, timeout: float) -> Incomplete | None: ... @overload async def read_response(self, disable_decoding: bool, timeout: float) -> Incomplete | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/backoff.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/backoff.pyi index 6e05455fe..40230a134 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/backoff.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/backoff.pyi @@ -27,3 +27,5 @@ class EqualJitterBackoff(AbstractBackoff): class DecorrelatedJitterBackoff(AbstractBackoff): def __init__(self, cap: float = 0.512, base: float = 0.008) -> None: ... def compute(self, failures: int) -> float: ... + +def default_backoff() -> EqualJitterBackoff: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi index cf7bb78ee..e61515d02 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi @@ -702,7 +702,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): def zrevrangebylex( # type: ignore[override] self, name: _Key, max: _Value, min: _Value, start: int | None = None, num: int | None = None ) -> Pipeline[_StrType]: ... - def zrevrank(self, name: _Key, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] + def zrevrank(self, name: _Key, value: _Value, withscore: bool = False) -> Pipeline[_StrType]: ... # type: ignore[override] def zscore(self, name: _Key, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def zunionstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None) -> Pipeline[_StrType]: ... # type: ignore[override] def pfadd(self, name: _Key, *values: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/cluster.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/cluster.pyi index 93f972790..ba515942a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/cluster.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/cluster.pyi @@ -18,6 +18,7 @@ def get_connection(redis_node: Redis[Any], *args, **options: _ConnectionPoolOpti def parse_scan_result(command: Unused, res, **options): ... def parse_pubsub_numsub(command: Unused, res, **options: Unused): ... def parse_cluster_slots(resp, **options) -> dict[tuple[int, int], dict[str, Any]]: ... +def parse_cluster_myshardid(resp: bytes, **options: Unused) -> str: ... PRIMARY: str REPLICA: str @@ -69,6 +70,7 @@ class RedisCluster(AbstractRedisCluster, RedisClusterCommands[_StrType], Generic read_from_replicas: bool = False, dynamic_startup_nodes: bool = True, url: str | None = None, + address_remap: Callable[[str, int], tuple[str, int]] | None = None, **kwargs, ) -> None: ... def __enter__(self) -> Self: ... @@ -141,6 +143,7 @@ class NodesManager: connection_pool_class: type[ConnectionPool] connection_kwargs: dict[str, Incomplete] # TODO: could be a TypedDict read_load_balancer: LoadBalancer + address_remap: Callable[[str, int], tuple[str, int]] | None def __init__( self, startup_nodes: Iterable[ClusterNode], @@ -149,6 +152,7 @@ class NodesManager: lock: Lock | None = None, dynamic_startup_nodes: bool = True, connection_pool_class: type[ConnectionPool] = ..., + address_remap: Callable[[str, int], tuple[str, int]] | None = None, **kwargs, # TODO: same type as connection_kwargs ) -> None: ... def get_node( @@ -164,6 +168,7 @@ class NodesManager: def initialize(self) -> None: ... def close(self) -> None: ... def reset(self) -> None: ... + def remap_host_port(self, host: str, port: int) -> tuple[str, int]: ... class ClusterPubSub(PubSub): node: ClusterNode | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/cluster.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/cluster.pyi index 530438240..28789988b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/cluster.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/cluster.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete -from typing import Generic +from typing import Generic, NoReturn from .core import ACLCommands, DataAccessCommands, ManagementCommands, PubSubCommands, _StrType @@ -56,6 +56,10 @@ class RedisClusterCommands( def cluster_setslot_stable(self, slot_id): ... def cluster_replicas(self, node_id, target_nodes: Incomplete | None = None): ... def cluster_slots(self, target_nodes: Incomplete | None = None): ... + def cluster_myshardid(self, target_nodes: Incomplete | None = None): ... + def cluster_links(self, target_node: Incomplete): ... + def cluster_flushslots(self, target_nodes: Incomplete | None = None) -> NoReturn: ... + def cluster_bumpepoch(self, target_nodes: Incomplete | None = None) -> NoReturn: ... read_from_replicas: bool def readonly(self, target_nodes: Incomplete | None = None): ... def readwrite(self, target_nodes: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi index 1651634dc..9e31fd302 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi @@ -133,6 +133,8 @@ class ManagementCommands: def client_unblock(self, client_id, error: bool = False, **kwargs: _CommandOptions): ... def client_pause(self, timeout, all: bool = True, **kwargs: _CommandOptions): ... def client_unpause(self, **kwargs: _CommandOptions): ... + def client_no_evict(self, mode: str): ... + def client_no_touch(self, mode: str): ... def command(self, **kwargs: _CommandOptions): ... def command_info(self, **kwargs: _CommandOptions): ... def command_count(self, **kwargs: _CommandOptions): ... @@ -1181,7 +1183,7 @@ class SortedSetCommands(Generic[_StrType]): def zremrangebylex(self, name: _Key, min: _Value, max: _Value) -> int: ... def zremrangebyrank(self, name: _Key, min: int, max: int) -> int: ... def zremrangebyscore(self, name: _Key, min: _Value, max: _Value) -> int: ... - def zrevrank(self, name: _Key, value: _Value) -> int | None: ... + def zrevrank(self, name: _Key, value: _Value, withscore: bool = False) -> int | None: ... def zscore(self, name: _Key, value: _Value) -> float | None: ... def zunion(self, keys, aggregate: Incomplete | None = None, withscores: bool = False): ... def zunionstore(self, dest: _Key, keys: Iterable[_Key], aggregate: Literal["SUM", "MIN", "MAX"] | None = None) -> int: ... @@ -1384,7 +1386,7 @@ class AsyncSortedSetCommands(Generic[_StrType]): async def zremrangebylex(self, name: _Key, min: _Value, max: _Value) -> int: ... async def zremrangebyrank(self, name: _Key, min: int, max: int) -> int: ... async def zremrangebyscore(self, name: _Key, min: _Value, max: _Value) -> int: ... - async def zrevrank(self, name: _Key, value: _Value) -> int | None: ... + async def zrevrank(self, name: _Key, value: _Value, withscore: bool = False) -> int | None: ... async def zscore(self, name: _Key, value: _Value) -> float | None: ... async def zunion(self, keys, aggregate: Incomplete | None = None, withscores: bool = False): ... async def zunionstore( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi index 71af4cc77..8ede46969 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi @@ -31,7 +31,8 @@ _ConnectFunc: TypeAlias = Callable[[Connection], object] class BaseParser: EXCEPTION_CLASSES: ClassVar[dict[str, type[Exception] | dict[str, type[Exception]]]] - def parse_error(self, response: str) -> Exception: ... + @classmethod + def parse_error(cls, response: str) -> Exception: ... class SocketBuffer: socket_read_size: int @@ -127,7 +128,9 @@ class AbstractConnection: def send_packed_command(self, command: str | Iterable[str], check_health: bool = True) -> None: ... def send_command(self, *args, **kwargs) -> None: ... def can_read(self, timeout: float | None = 0) -> bool: ... - def read_response(self, disable_decoding: bool = False) -> Any: ... # `str | bytes` or `list[str | bytes]` + def read_response( + self, disable_decoding: bool = False, *, disconnect_on_error: bool = True + ) -> Any: ... # `str | bytes` or `list[str | bytes]` def pack_command(self, *args) -> list[bytes]: ... def pack_commands(self, commands: Iterable[Iterable[Incomplete]]) -> list[bytes]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi index d57c470ea..133f58763 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi @@ -20,7 +20,7 @@ class SentinelManagedConnection(Connection): def connect_to(self, address: _AddressAndPort) -> None: ... def connect(self) -> None: ... # The result can be either `str | bytes` or `list[str | bytes]` - def read_response(self, disable_decoding: bool = False) -> Any: ... + def read_response(self, disable_decoding: bool = False) -> Any: ... # type: ignore[override] class SentinelManagedSSLConnection(SentinelManagedConnection, SSLConnection): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml index 948bda814..c3f5535f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml @@ -1,4 +1,6 @@ -version = "67.7.*" +version = "67.8.*" +partial_stub = true [tool.stubtest] -ignore_missing_stub = true +# darwin is equivalent to linux for OS-specific methods +platforms = ["linux", "win32"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi index 2188c0078..05d970c9f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi @@ -6,7 +6,7 @@ from abc import ABCMeta from collections.abc import Callable, Generator, Iterable, Sequence from io import BytesIO from re import Pattern -from typing import IO, Any, ClassVar, TypeVar, overload +from typing import IO, Any, ClassVar, Protocol, TypeVar, overload, type_check_only from typing_extensions import Literal, Self, TypeAlias _Version: TypeAlias = Incomplete # from packaging.version @@ -21,8 +21,8 @@ _PkgReqType: TypeAlias = str | Requirement _DistFinderType: TypeAlias = Callable[[_Importer, str, bool], Generator[Distribution, None, None]] _NSHandlerType: TypeAlias = Callable[[_Importer, str, str, types.ModuleType], str] -def declare_namespace(name: str) -> None: ... -def fixup_namespace_packages(path_item: str) -> None: ... +def declare_namespace(packageName: str) -> None: ... +def fixup_namespace_packages(path_item: str, parent=None) -> None: ... class WorkingSet: entries: list[str] @@ -35,18 +35,24 @@ class WorkingSet: def __iter__(self) -> Generator[Distribution, None, None]: ... def find(self, req: Requirement) -> Distribution | None: ... def resolve( - self, requirements: Iterable[Requirement], env: Environment | None = None, installer: _InstallerType | None = None + self, + requirements: Iterable[Requirement], + env: Environment | None = None, + installer: _InstallerType | None = None, + replace_conflicting: bool = False, + extras=None, ) -> list[Distribution]: ... def add(self, dist: Distribution, entry: str | None = None, insert: bool = True, replace: bool = False) -> None: ... - def subscribe(self, callback: Callable[[Distribution], object]) -> None: ... + def subscribe(self, callback: Callable[[Distribution], object], existing: bool = True) -> None: ... def find_plugins( - self, plugin_env: Environment, full_env: Environment | None = None, fallback: bool = True + self, plugin_env: Environment, full_env: Environment | None = None, installer=None, fallback: bool = True ) -> tuple[list[Distribution], dict[Distribution, Exception]]: ... working_set: WorkingSet require = working_set.require run_script = working_set.run_script +run_main = run_script iter_entry_points = working_set.iter_entry_points add_activation_listener = working_set.subscribe @@ -62,13 +68,15 @@ class Environment: def __add__(self, other: Distribution | Environment) -> Environment: ... def __iadd__(self, other: Distribution | Environment) -> Self: ... @overload - def best_match(self, req: Requirement, working_set: WorkingSet, *, replace_conflicting: bool = False) -> Distribution: ... + def best_match( + self, req: Requirement, working_set: WorkingSet, installer: None = None, replace_conflicting: bool = False + ) -> Distribution: ... @overload def best_match( self, req: Requirement, working_set: WorkingSet, installer: Callable[[Requirement], _T], replace_conflicting: bool = False ) -> _T: ... @overload - def obtain(self, requirement: Requirement) -> None: ... + def obtain(self, requirement: Requirement, installer: None = None) -> None: ... @overload def obtain(self, requirement: Requirement, installer: Callable[[Requirement], _T]) -> _T: ... def scan(self, search_path: Sequence[str] | None = None) -> None: ... @@ -85,6 +93,7 @@ class Requirement: # TODO: change this to packaging.markers.Marker | None once we can import # packaging.markers marker: Incomplete | None + def __init__(self, requirement_string: str) -> None: ... @staticmethod def parse(s: str | Iterable[str]) -> Requirement: ... def __contains__(self, item: Distribution | str | tuple[str, ...]) -> bool: ... @@ -93,11 +102,12 @@ class Requirement: def load_entry_point(dist: _EPDistType, group: str, name: str) -> Any: ... def get_entry_info(dist: _EPDistType, group: str, name: str) -> EntryPoint | None: ... @overload -def get_entry_map(dist: _EPDistType) -> dict[str, dict[str, EntryPoint]]: ... +def get_entry_map(dist: _EPDistType, group: None = None) -> dict[str, dict[str, EntryPoint]]: ... @overload def get_entry_map(dist: _EPDistType, group: str) -> dict[str, EntryPoint]: ... class EntryPoint: + pattern: ClassVar[Pattern[str]] name: str module_name: str attrs: tuple[str, ...] @@ -143,8 +153,8 @@ def resource_listdir(package_or_requirement: _PkgReqType, resource_name: str) -> def resource_filename(package_or_requirement: _PkgReqType, resource_name: str) -> str: ... def set_extraction_path(path: str) -> None: ... def cleanup_resources(force: bool = False) -> list[str]: ... - -class IResourceManager: +@type_check_only +class _IResourceManager(Protocol): def resource_exists(self, package_or_requirement: _PkgReqType, resource_name: str) -> bool: ... def resource_stream(self, package_or_requirement: _PkgReqType, resource_name: str) -> IO[bytes]: ... def resource_string(self, package_or_requirement: _PkgReqType, resource_name: str) -> bytes: ... @@ -158,11 +168,11 @@ class IResourceManager: def postprocess(self, tempname: str, filename: str) -> None: ... @overload -def get_provider(package_or_requirement: str) -> IResourceProvider: ... +def get_provider(moduleOrReq: str) -> IResourceProvider: ... @overload -def get_provider(package_or_requirement: Requirement) -> Distribution: ... +def get_provider(moduleOrReq: Requirement) -> Distribution: ... -class IMetadataProvider: +class IMetadataProvider(Protocol): def has_metadata(self, name: str) -> bool | None: ... def metadata_isdir(self, name: str) -> bool: ... def metadata_listdir(self, name: str) -> list[str]: ... @@ -196,7 +206,7 @@ class ContextualVersionConflict(VersionConflict): class UnknownExtra(ResolutionError): ... class ExtractionError(Exception): - manager: IResourceManager + manager: _IResourceManager cache_path: str original_error: Exception @@ -206,7 +216,16 @@ def register_finder(importer_type: type, distribution_finder: _DistFinderType) - def register_loader_type(loader_type: type, provider_factory: Callable[[types.ModuleType], IResourceProvider]) -> None: ... def register_namespace_handler(importer_type: type, namespace_handler: _NSHandlerType) -> None: ... -class IResourceProvider(IMetadataProvider): ... +class IResourceProvider(IMetadataProvider, Protocol): + def get_resource_filename(self, manager: _IResourceManager, resource_name): ... + def get_resource_stream(self, manager: _IResourceManager, resource_name): ... + def get_resource_string(self, manager: _IResourceManager, resource_name): ... + def has_resource(self, resource_name): ... + def resource_isdir(self, resource_name): ... + def resource_listdir(self, resource_name): ... + +def invalid_marker(text) -> SyntaxError | Literal[False]: ... +def evaluate_marker(text, extra: Incomplete | None = None): ... class NullProvider: egg_name: str | None @@ -215,9 +234,9 @@ class NullProvider: module_path: str | None def __init__(self, module) -> None: ... - def get_resource_filename(self, manager, resource_name) -> str: ... - def get_resource_stream(self, manager, resource_name) -> BytesIO: ... - def get_resource_string(self, manager, resource_name): ... + def get_resource_filename(self, manager: _IResourceManager, resource_name) -> str: ... + def get_resource_stream(self, manager: _IResourceManager, resource_name) -> BytesIO: ... + def get_resource_string(self, manager: _IResourceManager, resource_name): ... def has_resource(self, resource_name) -> bool: ... def has_metadata(self, name: str) -> bool | None: ... def get_metadata(self, name: str) -> str: ... @@ -228,11 +247,21 @@ class NullProvider: def metadata_listdir(self, name: str) -> list[str]: ... def run_script(self, script_name: str, namespace: dict[str, Any]) -> None: ... -class Distribution(NullProvider, IResourceProvider, IMetadataProvider): +# Doesn't actually extend NullProvider +class Distribution(NullProvider): PKG_INFO: ClassVar[str] location: str project_name: str @property + def hashcmp(self) -> tuple[Incomplete, int, str, Incomplete | None, str, str]: ... + def __hash__(self) -> int: ... + def __lt__(self, other: Distribution) -> bool: ... + def __le__(self, other: Distribution) -> bool: ... + def __gt__(self, other: Distribution) -> bool: ... + def __ge__(self, other: Distribution) -> bool: ... + def __eq__(self, other: object) -> bool: ... + def __ne__(self, other: object) -> bool: ... + @property def key(self) -> str: ... @property def extras(self) -> list[str]: ... @@ -259,15 +288,17 @@ class Distribution(NullProvider, IResourceProvider, IMetadataProvider): ) -> Distribution: ... @classmethod def from_filename(cls, filename: str, metadata: _MetadataType = None, **kw: str | None | int) -> Distribution: ... - def activate(self, path: list[str] | None = None) -> None: ... + def activate(self, path: list[str] | None = None, replace: bool = False) -> None: ... def as_requirement(self) -> Requirement: ... def requires(self, extras: tuple[str, ...] = ()) -> list[Requirement]: ... + def check_version_conflict(self) -> None: ... + def has_version(self) -> bool: ... def clone(self, **kw: str | int | None) -> Requirement: ... def egg_name(self) -> str: ... # type: ignore[override] # supertype's egg_name is a variable, not a method - def __cmp__(self, other: Any) -> bool: ... def get_entry_info(self, group: str, name: str) -> EntryPoint | None: ... + def insert_on(self, path, loc: Incomplete | None = None, replace: bool = False) -> None: ... @overload - def get_entry_map(self) -> dict[str, dict[str, EntryPoint]]: ... + def get_entry_map(self, group: None = None) -> dict[str, dict[str, EntryPoint]]: ... @overload def get_entry_map(self, group: str) -> dict[str, EntryPoint]: ... def load_entry_point(self, group: str, name: str) -> Any: ... @@ -281,7 +312,7 @@ class EggProvider(NullProvider): class DefaultProvider(EggProvider): ... -class PathMetadata(DefaultProvider, IResourceProvider): +class PathMetadata(DefaultProvider): egg_info: str module_path: str def __init__(self, path: str, egg_info: str) -> None: ... @@ -289,11 +320,13 @@ class PathMetadata(DefaultProvider, IResourceProvider): class ZipProvider(EggProvider): eagers: list[str] | None zip_pre: str + @property + def zipinfo(self): ... -class EggMetadata(ZipProvider, IResourceProvider): +class EggMetadata(ZipProvider): loader: zipimport.zipimporter module_path: str - def __init__(self, zipimporter: zipimport.zipimporter) -> None: ... + def __init__(self, importer: zipimport.zipimporter) -> None: ... class EmptyProvider(NullProvider): module_path: None @@ -301,17 +334,19 @@ class EmptyProvider(NullProvider): empty_provider: EmptyProvider -class FileMetadata(EmptyProvider, IResourceProvider): - def __init__(self, path_to_pkg_info: str) -> None: ... +class FileMetadata(EmptyProvider): + def __init__(self, path: str) -> None: ... + +class PEP440Warning(RuntimeWarning): ... parse_version = _Version def yield_lines(iterable: _NestedStr) -> Generator[str, None, None]: ... -def split_sections(strs: _NestedStr) -> Generator[tuple[str | None, list[str]], None, None]: ... +def split_sections(s: _NestedStr) -> Generator[tuple[str | None, list[str]], None, None]: ... def safe_name(name: str) -> str: ... def safe_version(version: str) -> str: ... def safe_extra(extra: str) -> str: ... -def to_filename(name_or_version: str) -> str: ... +def to_filename(name: str) -> str: ... def get_build_platform() -> str: ... def get_platform() -> str: ... def get_supported_platform() -> str: ... @@ -320,3 +355,5 @@ def get_default_cache() -> str: ... def get_importer(path_item: str) -> _Importer: ... def ensure_directory(path: str) -> None: ... def normalize_path(filename: str) -> str: ... + +class PkgResourcesDeprecationWarning(Warning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi index 109af35c4..52c81396d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/__init__.pyi @@ -2,24 +2,31 @@ from abc import abstractmethod from collections.abc import Iterable, Mapping, Sequence from typing import Any -from setuptools.depends import Require as Require -from setuptools.dist import Distribution as Distribution -from setuptools.extension import Extension as Extension -from setuptools.warnings import SetuptoolsDeprecationWarning as SetuptoolsDeprecationWarning - from ._distutils.cmd import Command as _Command +from .depends import Require as Require +from .discovery import _Path +from .dist import Distribution as Distribution +from .extension import Extension as Extension +from .warnings import SetuptoolsDeprecationWarning as SetuptoolsDeprecationWarning -__version__: str - -class PackageFinder: - @classmethod - def find(cls, where: str = ".", exclude: Iterable[str] = (), include: Iterable[str] = ("*",)) -> list[str]: ... +__all__ = [ + "setup", + "Distribution", + "Command", + "Extension", + "Require", + "SetuptoolsDeprecationWarning", + "find_packages", + "find_namespace_packages", +] -class PEP420PackageFinder(PackageFinder): ... - -find_packages = PackageFinder.find -find_namespace_packages = PEP420PackageFinder.find +__version__: str +# Pytype fails with the following: +# find_packages = PackageFinder.find +# find_namespace_packages = PEP420PackageFinder.find +def find_packages(where: _Path = ".", exclude: Iterable[str] = (), include: Iterable[str] = ("*",)) -> list[str]: ... +def find_namespace_packages(where: _Path = ".", exclude: Iterable[str] = (), include: Iterable[str] = ("*",)) -> list[str]: ... def setup( *, name: str = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/command/bdist_rpm.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/command/bdist_rpm.pyi new file mode 100644 index 000000000..929b1b4a9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/command/bdist_rpm.pyi @@ -0,0 +1,52 @@ +from _typeshed import Incomplete + +from ..cmd import Command + +class bdist_rpm(Command): + description: str + user_options: Incomplete + boolean_options: Incomplete + negative_opt: Incomplete + bdist_base: Incomplete + rpm_base: Incomplete + dist_dir: Incomplete + python: Incomplete + fix_python: Incomplete + spec_only: Incomplete + binary_only: Incomplete + source_only: Incomplete + use_bzip2: Incomplete + distribution_name: Incomplete + group: Incomplete + release: Incomplete + serial: Incomplete + vendor: Incomplete + packager: Incomplete + doc_files: Incomplete + changelog: Incomplete + icon: Incomplete + prep_script: Incomplete + build_script: Incomplete + install_script: Incomplete + clean_script: Incomplete + verify_script: Incomplete + pre_install: Incomplete + post_install: Incomplete + pre_uninstall: Incomplete + post_uninstall: Incomplete + prep: Incomplete + provides: Incomplete + requires: Incomplete + conflicts: Incomplete + build_requires: Incomplete + obsoletes: Incomplete + keep_temp: int + use_rpm_opt_flags: int + rpm3_mode: int + no_autoreq: int + force_arch: Incomplete + quiet: int + def initialize_options(self) -> None: ... + def finalize_options(self) -> None: ... + def finalize_package_data(self) -> None: ... + def run(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/command/build.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/command/build.pyi new file mode 100644 index 000000000..02f82169a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/command/build.pyi @@ -0,0 +1,30 @@ +from _typeshed import Incomplete + +from ..cmd import Command + +def show_compilers() -> None: ... + +class build(Command): + description: str + user_options: Incomplete + boolean_options: Incomplete + help_options: Incomplete + build_base: str + build_purelib: Incomplete + build_platlib: Incomplete + build_lib: Incomplete + build_temp: Incomplete + build_scripts: Incomplete + compiler: Incomplete + plat_name: Incomplete + debug: Incomplete + force: int + executable: Incomplete + parallel: Incomplete + def initialize_options(self) -> None: ... + def finalize_options(self) -> None: ... + def run(self) -> None: ... + def has_pure_modules(self): ... + def has_c_libraries(self): ... + def has_ext_modules(self): ... + def has_scripts(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/archive_util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/archive_util.pyi index b11be8191..44fe556de 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/archive_util.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/archive_util.pyi @@ -3,6 +3,16 @@ from typing import Any from ._distutils.errors import DistutilsError +__all__ = [ + "unpack_archive", + "unpack_zipfile", + "unpack_tarfile", + "default_filter", + "UnrecognizedFormat", + "extraction_drivers", + "unpack_directory", +] + class UnrecognizedFormat(DistutilsError): ... def default_filter(src, dst): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/build_meta.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/build_meta.pyi index f4f632db2..90004985a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/build_meta.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/build_meta.pyi @@ -1,7 +1,20 @@ from collections.abc import Mapping from typing import Any -from setuptools import dist +from . import dist + +__all__ = [ + "get_requires_for_build_sdist", + "get_requires_for_build_wheel", + "prepare_metadata_for_build_wheel", + "build_wheel", + "build_sdist", + "get_requires_for_build_editable", + "prepare_metadata_for_build_editable", + "build_editable", + "__legacy__", + "SetupRequirementsError", +] class SetupRequirementsError(BaseException): specifiers: Any @@ -41,4 +54,8 @@ prepare_metadata_for_build_wheel = _BACKEND.prepare_metadata_for_build_wheel build_wheel = _BACKEND.build_wheel build_sdist = _BACKEND.build_sdist +get_requires_for_build_editable = _BACKEND.get_requires_for_build_editable +prepare_metadata_for_build_editable = _BACKEND.prepare_metadata_for_build_editable +build_editable = _BACKEND.build_editable + __legacy__: _BuildMetaLegacyBackend diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/alias.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/alias.pyi index ff79d933a..6486ffaa8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/alias.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/alias.pyi @@ -1,6 +1,6 @@ from typing import Any -from setuptools.command.setopt import option_base +from .setopt import option_base def shquote(arg): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_egg.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_egg.pyi new file mode 100644 index 000000000..2b6276bbe --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_egg.pyi @@ -0,0 +1,49 @@ +from _typeshed import Incomplete +from collections.abc import Generator + +from .. import Command + +def strip_module(filename): ... +def sorted_walk(dir) -> Generator[Incomplete, None, None]: ... +def write_stub(resource, pyfile) -> None: ... + +class bdist_egg(Command): + description: str + user_options: Incomplete + boolean_options: Incomplete + bdist_dir: Incomplete + plat_name: Incomplete + keep_temp: int + dist_dir: Incomplete + skip_build: int + egg_output: Incomplete + exclude_source_files: Incomplete + def initialize_options(self) -> None: ... + egg_info: Incomplete + def finalize_options(self) -> None: ... + def do_install_data(self) -> None: ... + def get_outputs(self): ... + def call_command(self, cmdname, **kw): ... + stubs: Incomplete + def run(self) -> None: ... + def zap_pyfiles(self) -> None: ... + def zip_safe(self): ... + def gen_header(self): ... + def copy_metadata_to(self, target_dir) -> None: ... + def get_ext_outputs(self): ... + +NATIVE_EXTENSIONS: Incomplete + +def walk_egg(egg_dir) -> Generator[Incomplete, None, None]: ... +def analyze_egg(egg_dir, stubs): ... +def write_safety_flag(egg_dir, safe) -> None: ... + +safety_flags: Incomplete + +def scan_module(egg_dir, base, name, stubs): ... +def iter_symbols(code) -> Generator[Incomplete, None, None]: ... +def can_scan(): ... + +INSTALL_DIRECTORY_ATTRS: Incomplete + +def make_zipfile(zip_filename, base_dir, verbose: int = 0, dry_run: int = 0, compress: bool = True, mode: str = "w"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_rpm.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_rpm.pyi new file mode 100644 index 000000000..31de5b470 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/bdist_rpm.pyi @@ -0,0 +1,4 @@ +from .._distutils.command import bdist_rpm as orig + +class bdist_rpm(orig.bdist_rpm): + def run(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build.pyi new file mode 100644 index 000000000..6319600c1 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build.pyi @@ -0,0 +1,16 @@ +from typing import Protocol + +from .._distutils.command.build import build as _build + +class build(_build): + def get_sub_commands(self): ... + +class SubCommand(Protocol): + editable_mode: bool + build_lib: str + def initialize_options(self) -> None: ... + def finalize_options(self) -> None: ... + def run(self) -> None: ... + def get_source_files(self) -> list[str]: ... + def get_outputs(self) -> list[str]: ... + def get_output_mapping(self) -> dict[str, str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_ext.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_ext.pyi index b2ceb17bc..21973fb79 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_ext.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_ext.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete -from typing import Any +from typing import Any, ClassVar from .._distutils.command.build_ext import build_ext as _build_ext @@ -11,6 +11,7 @@ def if_dl(s): ... def get_abi3_suffix(): ... class build_ext(_build_ext): + editable_mode: ClassVar[bool] inplace: Any def run(self) -> None: ... def copy_extensions_to_source(self) -> None: ... @@ -27,6 +28,7 @@ class build_ext(_build_ext): def build_extension(self, ext) -> None: ... def links_to_dynamic(self, ext): ... def get_outputs(self): ... + def get_output_mapping(self) -> dict[str, str]: ... def write_stub(self, output_dir, ext, compile: bool = False) -> None: ... def link_shared_object( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_py.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_py.pyi index 0e2fc54ab..3bdce5ca6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_py.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/build_py.pyi @@ -1,10 +1,12 @@ -from typing import Any +from _typeshed import Incomplete +from typing import Any, ClassVar from .._distutils.command import build_py as orig def make_writable(target) -> None: ... class build_py(orig.build_py): + editable_mode: ClassVar[bool] package_data: Any exclude_package_data: Any def finalize_options(self) -> None: ... @@ -12,9 +14,11 @@ class build_py(orig.build_py): data_files: Any def __getattr__(self, attr: str): ... def build_module(self, module, module_file, package): ... + def get_data_files_without_manifest(self) -> list[tuple[Incomplete, Incomplete, Incomplete, list[Incomplete]]]: ... def find_data_files(self, package, src_dir): ... def build_package_data(self) -> None: ... manifest_files: Any + def get_output_mapping(self) -> dict[str, str]: ... def analyze_manifest(self) -> None: ... def get_data_files(self) -> None: ... def check_package(self, package, package_dir): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/develop.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/develop.pyi index f7c1058ce..ebefbc2d4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/develop.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/develop.pyi @@ -1,7 +1,7 @@ from typing import Any -from setuptools import namespaces -from setuptools.command.easy_install import easy_install +from .. import namespaces +from .easy_install import easy_install class develop(namespaces.DevelopInstaller, easy_install): description: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/dist_info.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/dist_info.pyi index d2501e80b..723a764d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/dist_info.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/dist_info.pyi @@ -1,10 +1,12 @@ -from typing import Any +from typing import Any, ClassVar from .._distutils.cmd import Command class dist_info(Command): description: str user_options: Any + boolean_options: ClassVar[list[str]] + negative_opt: ClassVar[dict[str, str]] egg_base: Any def initialize_options(self) -> None: ... def finalize_options(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi index b2b0d859c..37c4eae99 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi @@ -3,7 +3,10 @@ from collections.abc import Iterator from typing import Any from pkg_resources import Environment -from setuptools import Command, SetuptoolsDeprecationWarning + +from .. import Command, SetuptoolsDeprecationWarning + +__all__ = ["easy_install", "PthDistributions", "extract_wininst_cfg", "get_exe_prefixes"] class easy_install(Command): description: str @@ -96,6 +99,7 @@ class PthDistributions(Environment): filename: Any sitedirs: Any basedir: Any + paths: list[str] def __init__(self, filename, sitedirs=()) -> None: ... def save(self) -> None: ... def add(self, dist) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/editable_wheel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/editable_wheel.pyi new file mode 100644 index 000000000..4f527d24a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/editable_wheel.pyi @@ -0,0 +1,84 @@ +from _typeshed import Incomplete +from enum import Enum +from pathlib import Path +from types import TracebackType +from typing import Protocol +from typing_extensions import Self, TypeAlias + +from .. import Command, errors, namespaces +from ..dist import Distribution +from ..warnings import SetuptoolsWarning + +# Actually from wheel.wheelfile import WheelFile +_WheelFile: TypeAlias = Incomplete +_Path: TypeAlias = str | Path + +class _EditableMode(Enum): + STRICT: str + LENIENT: str + COMPAT: str + @classmethod + def convert(cls, mode: str | None) -> _EditableMode: ... + +class editable_wheel(Command): + description: str + user_options: Incomplete + dist_dir: Incomplete + dist_info_dir: Incomplete + project_dir: Incomplete + mode: Incomplete + def initialize_options(self) -> None: ... + package_dir: Incomplete + def finalize_options(self) -> None: ... + def run(self) -> None: ... + +class EditableStrategy(Protocol): + def __call__(self, wheel: _WheelFile, files: list[str], mapping: dict[str, str]) -> None: ... + def __enter__(self): ... + def __exit__( + self, _exc_type: type[BaseException] | None, _exc_value: BaseException | None, _traceback: TracebackType | None + ) -> None: ... + +class _StaticPth: + dist: Incomplete + name: Incomplete + path_entries: Incomplete + def __init__(self, dist: Distribution, name: str, path_entries: list[Path]) -> None: ... + def __call__(self, wheel: _WheelFile, files: list[str], mapping: dict[str, str]): ... + def __enter__(self) -> Self: ... + def __exit__( + self, _exc_type: type[BaseException] | None, _exc_value: BaseException | None, _traceback: TracebackType | None + ) -> None: ... + +class _LinkTree(_StaticPth): + auxiliary_dir: Incomplete + build_lib: Incomplete + def __init__(self, dist: Distribution, name: str, auxiliary_dir: _Path, build_lib: _Path) -> None: ... + def __call__(self, wheel: _WheelFile, files: list[str], mapping: dict[str, str]): ... + def __enter__(self) -> Self: ... + def __exit__( + self, _exc_type: type[BaseException] | None, _exc_value: BaseException | None, _traceback: TracebackType | None + ) -> None: ... + +class _TopLevelFinder: + dist: Incomplete + name: Incomplete + def __init__(self, dist: Distribution, name: str) -> None: ... + def __call__(self, wheel: _WheelFile, files: list[str], mapping: dict[str, str]): ... + def __enter__(self) -> Self: ... + def __exit__( + self, _exc_type: type[BaseException] | None, _exc_value: BaseException | None, _traceback: TracebackType | None + ) -> None: ... + +class _NamespaceInstaller(namespaces.Installer): + distribution: Incomplete + src_root: Incomplete + installation_dir: Incomplete + editable_name: Incomplete + outputs: Incomplete + dry_run: bool + def __init__(self, distribution, installation_dir, editable_name, src_root) -> None: ... + +class InformationOnly(SetuptoolsWarning): ... +class LinksNotSupported(errors.FileError): ... +class _DebuggingTips(SetuptoolsWarning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi index d63a3c7f1..9685a9270 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi @@ -1,9 +1,11 @@ from typing import Any +from typing_extensions import Final -from setuptools import Command, SetuptoolsDeprecationWarning -from setuptools.command.sdist import sdist - +from .. import Command, SetuptoolsDeprecationWarning from .._distutils.filelist import FileList as _FileList +from .sdist import sdist + +PY_MAJOR: Final[str] def translate_pattern(glob): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_egg_info.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_egg_info.pyi index 2977e32c2..a37c98cca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_egg_info.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/install_egg_info.pyi @@ -1,6 +1,6 @@ from typing import Any -from setuptools import Command, namespaces +from .. import Command, namespaces class install_egg_info(namespaces.Installer, Command): description: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/rotate.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/rotate.pyi index 5d5de6f18..27c11582e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/rotate.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/rotate.pyi @@ -1,6 +1,6 @@ from typing import Any -from setuptools import Command +from .. import Command class rotate(Command): description: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/saveopts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/saveopts.pyi index 09d435c63..c96862b29 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/saveopts.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/saveopts.pyi @@ -1,4 +1,4 @@ -from setuptools.command.setopt import option_base +from .setopt import option_base class saveopts(option_base): description: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/setopt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/setopt.pyi index 8ad8da2ce..c57c3601d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/setopt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/setopt.pyi @@ -1,7 +1,9 @@ from abc import abstractmethod from typing import Any -from setuptools import Command +from .. import Command + +__all__ = ["config_file", "edit_config", "option_base", "setopt"] def config_file(kind: str = "local"): ... def edit_config(filename, settings, dry_run: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/test.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/test.pyi index 004b534e7..1764926f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/test.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/test.pyi @@ -5,7 +5,7 @@ from typing import Any, Generic, TypeVar, overload from typing_extensions import Self from unittest import TestLoader, TestSuite -from setuptools import Command +from .. import Command _T = TypeVar("_T") diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config.pyi deleted file mode 100644 index 0d865c53c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config.pyi +++ /dev/null @@ -1,2 +0,0 @@ -def read_configuration(filepath, find_others: bool = False, ignore_option_errors: bool = False): ... -def parse_configuration(distribution, command_options, ignore_option_errors: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/__init__.pyi new file mode 100644 index 000000000..ca745c919 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/__init__.pyi @@ -0,0 +1,9 @@ +from _typeshed import Incomplete +from collections.abc import Callable +from typing import TypeVar + +Fn = TypeVar("Fn", bound=Callable[..., Incomplete]) # noqa: Y001 # Exists at runtime +__all__ = ("parse_configuration", "read_configuration") + +def read_configuration(filepath, find_others: bool = False, ignore_option_errors: bool = False): ... +def parse_configuration(distribution, command_options, ignore_option_errors: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/expand.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/expand.pyi new file mode 100644 index 000000000..ff32f6690 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/expand.pyi @@ -0,0 +1,53 @@ +import os +from _typeshed import Incomplete +from collections.abc import Callable, Iterable, Iterator, Mapping +from importlib.machinery import ModuleSpec +from types import TracebackType +from typing import TypeVar +from typing_extensions import Self, TypeAlias + +from ..dist import Distribution + +chain_iter: Incomplete +_Path: TypeAlias = str | os.PathLike[Incomplete] +_K = TypeVar("_K") +_VCo = TypeVar("_VCo", covariant=True) + +class StaticModule: + def __init__(self, name: str, spec: ModuleSpec) -> None: ... + def __getattr__(self, attr): ... + +def glob_relative(patterns: Iterable[str], root_dir: _Path | None = None) -> list[str]: ... +def read_files(filepaths: str | bytes | Iterable[_Path], root_dir: Incomplete | None = None) -> str: ... +def read_attr(attr_desc: str, package_dir: Mapping[str, str] | None = None, root_dir: _Path | None = None): ... +def resolve_class( + qualified_class_name: str, package_dir: Mapping[str, str] | None = None, root_dir: _Path | None = None +) -> Callable[..., Incomplete]: ... +def cmdclass( + values: dict[str, str], package_dir: Mapping[str, str] | None = None, root_dir: _Path | None = None +) -> dict[str, Callable[..., Incomplete]]: ... +def find_packages( + *, namespaces: bool = True, fill_package_dir: dict[str, str] | None = None, root_dir: _Path | None = None, **kwargs +) -> list[str]: ... +def version(value: Callable[..., Incomplete] | Iterable[str | int] | str) -> str: ... +def canonic_package_data(package_data: dict[Incomplete, Incomplete]) -> dict[Incomplete, Incomplete]: ... +def canonic_data_files( + data_files: list[Incomplete] | dict[Incomplete, Incomplete], root_dir: _Path | None = None +) -> list[tuple[str, list[str]]]: ... +def entry_points(text: str, text_source: str = "entry-points") -> dict[str, dict[Incomplete, Incomplete]]: ... + +class EnsurePackagesDiscovered: + def __init__(self, distribution: Distribution) -> None: ... + def __call__(self) -> None: ... + def __enter__(self) -> Self: ... + def __exit__( + self, _exc_type: type[BaseException] | None, _exc_value: BaseException | None, _traceback: TracebackType | None + ) -> None: ... + @property + def package_dir(self) -> Mapping[str, str]: ... + +class LazyMappingProxy(Mapping[_K, _VCo]): + def __init__(self, obtain_mapping_value: Callable[[], Mapping[_K, _VCo]]) -> None: ... + def __getitem__(self, key: _K) -> _VCo: ... + def __len__(self) -> int: ... + def __iter__(self) -> Iterator[_K]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/pyprojecttoml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/pyprojecttoml.pyi new file mode 100644 index 000000000..ce56e9bae --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/pyprojecttoml.pyi @@ -0,0 +1,52 @@ +import os +from _typeshed import Incomplete +from types import TracebackType +from typing_extensions import Self, TypeAlias + +from ..dist import Distribution +from ..warnings import SetuptoolsWarning +from . import expand + +_Path: TypeAlias = str | os.PathLike[Incomplete] + +def load_file(filepath: _Path) -> dict[Incomplete, Incomplete]: ... +def validate(config: dict[Incomplete, Incomplete], filepath: _Path) -> bool: ... +def apply_configuration(dist: Distribution, filepath: _Path, ignore_option_errors: bool = False) -> Distribution: ... +def read_configuration( + filepath: _Path, expand: bool = True, ignore_option_errors: bool = False, dist: Distribution | None = None +): ... +def expand_configuration( + config: dict[Incomplete, Incomplete], + root_dir: _Path | None = None, + ignore_option_errors: bool = False, + dist: Distribution | None = None, +) -> dict[Incomplete, Incomplete]: ... + +class _ConfigExpander: + config: Incomplete + root_dir: Incomplete + project_cfg: Incomplete + dynamic: Incomplete + setuptools_cfg: Incomplete + dynamic_cfg: Incomplete + ignore_option_errors: Incomplete + def __init__( + self, + config: dict[Incomplete, Incomplete], + root_dir: _Path | None = None, + ignore_option_errors: bool = False, + dist: Distribution | None = None, + ) -> None: ... + def expand(self): ... + +class _EnsurePackagesDiscovered(expand.EnsurePackagesDiscovered): + def __init__( + self, distribution: Distribution, project_cfg: dict[Incomplete, Incomplete], setuptools_cfg: dict[Incomplete, Incomplete] + ) -> None: ... + def __enter__(self) -> Self: ... + def __exit__( + self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None + ): ... + +class _BetaConfiguration(SetuptoolsWarning): ... +class _InvalidFile(SetuptoolsWarning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/setupcfg.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/setupcfg.pyi new file mode 100644 index 000000000..222792693 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/config/setupcfg.pyi @@ -0,0 +1,83 @@ +import os +from _typeshed import Incomplete +from typing import Generic, TypeVar +from typing_extensions import TypeAlias + +from .._distutils.dist import DistributionMetadata +from ..dist import Distribution +from . import expand + +_Path: TypeAlias = str | os.PathLike[Incomplete] +SingleCommandOptions: Incomplete +AllCommandOptions: Incomplete +Target = TypeVar("Target", bound=Distribution | DistributionMetadata) # noqa: Y001 # Exists at runtime + +def read_configuration( + filepath: _Path, find_others: bool = False, ignore_option_errors: bool = False +) -> dict[Incomplete, Incomplete]: ... +def apply_configuration(dist: Distribution, filepath: _Path) -> Distribution: ... +def configuration_to_dict( + handlers: tuple[ConfigHandler[Distribution | DistributionMetadata], ...] +) -> dict[Incomplete, Incomplete]: ... +def parse_configuration( + distribution: Distribution, command_options: AllCommandOptions, ignore_option_errors: bool = False +) -> tuple[ConfigMetadataHandler, ConfigOptionsHandler]: ... + +class ConfigHandler(Generic[Target]): + section_prefix: str + aliases: dict[str, str] + ignore_option_errors: Incomplete + target_obj: Incomplete + sections: Incomplete + set_options: Incomplete + ensure_discovered: Incomplete + def __init__( + self, + target_obj: Target, + options: AllCommandOptions, + ignore_option_errors, + ensure_discovered: expand.EnsurePackagesDiscovered, + ) -> None: ... + @property + def parsers(self) -> None: ... + def __setitem__(self, option_name, value): ... + def parse_section(self, section_options) -> None: ... + def parse(self) -> None: ... + +class ConfigMetadataHandler(ConfigHandler[DistributionMetadata]): + section_prefix: str + aliases: Incomplete + strict_mode: bool + package_dir: Incomplete + root_dir: Incomplete + def __init__( + self, + target_obj: DistributionMetadata, + options: AllCommandOptions, + ignore_option_errors: bool, + ensure_discovered: expand.EnsurePackagesDiscovered, + package_dir: dict[Incomplete, Incomplete] | None = None, + root_dir: _Path = ".", + ) -> None: ... + @property + def parsers(self): ... + +class ConfigOptionsHandler(ConfigHandler[Distribution]): + section_prefix: str + root_dir: Incomplete + package_dir: Incomplete + def __init__( + self, + target_obj: Distribution, + options: AllCommandOptions, + ignore_option_errors: bool, + ensure_discovered: expand.EnsurePackagesDiscovered, + ) -> None: ... + @property + def parsers(self): ... + def parse_section_packages__find(self, section_options): ... + def parse_section_entry_points(self, section_options) -> None: ... + def parse_section_package_data(self, section_options) -> None: ... + def parse_section_exclude_package_data(self, section_options) -> None: ... + def parse_section_extras_require(self, section_options): ... + def parse_section_data_files(self, section_options) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/depends.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/depends.pyi index 072ebc51e..34c877298 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/depends.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/depends.pyi @@ -1,4 +1,12 @@ from _typeshed import Incomplete +from typing import IO, Any +from typing_extensions import Literal + +__all__ = ["Require", "find_module", "get_module_constant", "extract_constant"] + +def find_module( + module, paths=None +) -> tuple[IO[Any], str | None, tuple[str, Literal["", "r", "rb"], Literal[7, 6, 1, 2, 3, -1]]]: ... class Require: def __init__( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/discovery.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/discovery.pyi new file mode 100644 index 000000000..15f74d902 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/discovery.pyi @@ -0,0 +1,45 @@ +import os +from _typeshed import Incomplete +from collections.abc import Iterable, Iterator, Mapping +from typing_extensions import TypeAlias + +from . import Distribution + +_Path: TypeAlias = str | os.PathLike[Incomplete] +StrIter: TypeAlias = Iterator[str] +chain_iter: Incomplete + +class _Filter: + def __init__(self, *patterns: str) -> None: ... + def __call__(self, item: str) -> bool: ... + def __contains__(self, item: str) -> bool: ... + +class _Finder: + ALWAYS_EXCLUDE: tuple[str, ...] + DEFAULT_EXCLUDE: tuple[str, ...] + @classmethod + def find(cls, where: _Path = ".", exclude: Iterable[str] = (), include: Iterable[str] = ("*",)) -> list[str]: ... + +class PackageFinder(_Finder): + ALWAYS_EXCLUDE: Incomplete + +class PEP420PackageFinder(PackageFinder): ... +class ModuleFinder(_Finder): ... + +class FlatLayoutPackageFinder(PEP420PackageFinder): + DEFAULT_EXCLUDE: Incomplete + +class FlatLayoutModuleFinder(ModuleFinder): + DEFAULT_EXCLUDE: Incomplete + +class ConfigDiscovery: + dist: Incomplete + def __init__(self, distribution: Distribution) -> None: ... + def __call__(self, force: bool = False, name: bool = True, ignore_ext_modules: bool = False) -> None: ... + def analyse_name(self) -> None: ... + +def remove_nested_packages(packages: list[str]) -> list[str]: ... +def remove_stubs(packages: list[str]) -> list[str]: ... +def find_parent_package(packages: list[str], package_dir: Mapping[str, str], root_dir: _Path) -> str | None: ... +def find_package_path(name: str, package_dir: Mapping[str, str], root_dir: _Path) -> str: ... +def construct_package_dir(packages: list[str], package_path: _Path) -> dict[str, str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/dist.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/dist.pyi index 8ace1407a..c7b950061 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/dist.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/dist.pyi @@ -1,10 +1,11 @@ from collections.abc import Iterable, Iterator, Mapping, MutableMapping from typing import Any -from setuptools import Command, SetuptoolsDeprecationWarning - +from . import Command, SetuptoolsDeprecationWarning from ._distutils.dist import Distribution as _Distribution +__all__ = ["Distribution"] + class Distribution(_Distribution): def patch_missing_pkg_info(self, attrs: Mapping[str, Any]) -> None: ... src_root: str | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/glob.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/glob.pyi index 3ae65a804..e5d6431bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/glob.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/glob.pyi @@ -1,3 +1,5 @@ +__all__ = ["glob", "iglob", "escape"] + def glob(pathname, recursive: bool = False): ... def iglob(pathname, recursive: bool = False): ... def escape(pathname): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/logging.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/logging.pyi new file mode 100644 index 000000000..6933bcbd5 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/logging.pyi @@ -0,0 +1,2 @@ +def configure() -> None: ... +def set_threshold(level): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/package_index.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/package_index.pyi index 171745051..b32b580b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/package_index.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/package_index.pyi @@ -4,6 +4,8 @@ from typing import Any from pkg_resources import Environment +__all__ = ["PackageIndex", "distros_for_url", "parse_bdist_wininst", "interpret_distro_name"] + def parse_bdist_wininst(name): ... def distros_for_url(url, metadata: Incomplete | None = None) -> None: ... def interpret_distro_name( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/py312compat.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/py312compat.pyi new file mode 100644 index 000000000..898cfa8f5 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/py312compat.pyi @@ -0,0 +1,3 @@ +from _typeshed import Incomplete, StrOrBytesPath + +def shutil_rmtree(path: StrOrBytesPath, ignore_errors: bool = False, onexc: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/sandbox.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/sandbox.pyi index 89e141184..acae66997 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/sandbox.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/sandbox.pyi @@ -1,15 +1,18 @@ +import sys from types import TracebackType from typing import Any -from typing_extensions import Literal +from typing_extensions import Literal, Self from ._distutils.errors import DistutilsError +__all__ = ["AbstractSandbox", "DirectorySandbox", "SandboxViolation", "run_setup"] + class UnpickleableException(Exception): @staticmethod def dump(type, exc): ... class ExceptionSaver: - def __enter__(self): ... + def __enter__(self) -> Self: ... def __exit__( self, type: type[BaseException] | None, exc: BaseException | None, tb: TracebackType | None ) -> Literal[True] | None: ... @@ -23,12 +26,40 @@ class AbstractSandbox: self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None ) -> None: ... def run(self, func): ... + # Dynamically created + if sys.platform == "win32": + def startfile(self, path, *args, **kw): ... + else: + def chown(self, path, *args, **kw): ... + def chroot(self, path, *args, **kw): ... + def lchown(self, path, *args, **kw): ... + def mkfifo(self, path, *args, **kw): ... + def mknod(self, path, *args, **kw): ... + def pathconf(self, path, *args, **kw): ... + + def access(self, path, *args, **kw): ... + def chdir(self, path, *args, **kw): ... + def chmod(self, path, *args, **kw): ... + def getcwd(self, *args, **kw): ... + def link(self, src, dst, *args, **kw): ... + def listdir(self, path, *args, **kw): ... + def lstat(self, path, *args, **kw): ... + def mkdir(self, path, *args, **kw): ... + def open(self, path, *args, **kw): ... + def readlink(self, path, *args, **kw): ... + def remove(self, path, *args, **kw): ... + def rename(self, src, dst, *args, **kw): ... + def rmdir(self, path, *args, **kw): ... + def stat(self, path, *args, **kw): ... + def symlink(self, src, dst, *args, **kw): ... + def unlink(self, path, *args, **kw): ... + def utime(self, path, *args, **kw): ... class DirectorySandbox(AbstractSandbox): write_ops: Any def __init__(self, sandbox, exceptions=...) -> None: ... def tmpnam(self) -> None: ... - def open(self, file, flags, mode: int = 511, *args, **kw): ... + def open(self, file, flags, mode: int = 511, *args, **kw): ... # type:ignore[override] class SandboxViolation(DistutilsError): tmpl: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/wheel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/wheel.pyi index fe8d564af..eeb7eee24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/wheel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/wheel.pyi @@ -1,9 +1,11 @@ +from collections.abc import Generator from typing import Any WHEEL_NAME: Any NAMESPACE_PACKAGE_INIT: str def unpack(src_dir, dst_dir) -> None: ... +def disable_info_traces() -> Generator[None, None, None]: ... class Wheel: filename: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml index c6ff42e73..2f8d0e659 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml @@ -1,4 +1,5 @@ version = "3.19.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/stripe/METADATA.toml index 098add938..045114fe5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/METADATA.toml @@ -1,4 +1,5 @@ version = "3.5.*" +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/METADATA.toml index 3f6d82f31..4849fa5ea 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/METADATA.toml @@ -1,2 +1,2 @@ -version = "4.3" +version = "5.0.1" requires = ["types-pytz"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/tzlocal/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/tzlocal/__init__.pyi index 81c2351ad..2d118c02f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/tzlocal/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/tzlocal/__init__.pyi @@ -1,4 +1,7 @@ from pytz import BaseTzInfo +from tzlocal.utils import assert_tz_offset + +__all__ = ["get_localzone", "get_localzone_name", "reload_localzone", "assert_tz_offset"] def reload_localzone() -> None: ... def get_localzone() -> BaseTzInfo: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/tzlocal/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/tzlocal/utils.pyi index aedc34ac5..e56ead683 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/tzlocal/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/tzlocal/utils.pyi @@ -1,16 +1,4 @@ import datetime -import sys -import pytz - -if sys.version_info >= (3, 9): - import zoneinfo - - class ZoneInfoNotFoundError(pytz.UnknownTimeZoneError, zoneinfo.ZoneInfoNotFoundError): ... - -else: - class ZoneInfoNotFoundError(pytz.UnknownTimeZoneError): ... - -def get_system_offset() -> int: ... def get_tz_offset(tz: datetime.tzinfo) -> int: ... -def assert_tz_offset(tz: datetime.tzinfo) -> None: ... +def assert_tz_offset(tz: datetime.tzinfo, error: bool = True) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml index 84c49f9bb..344c34462 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml @@ -1,5 +1,6 @@ version = "1.26.*" obsolete_since = "2.0.0" # Released on 2023-04-26 +partial_stub = true [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/waitress/METADATA.toml index 1819293d3..be1838d9f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/METADATA.toml @@ -1,5 +1,6 @@ version = "2.1.*" requires = [] +partial_stub = true [tool.stubtest] ignore_missing_stub = true From 130f5fa8932c73bfa8b9a63f7c810c8646235392 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 21 May 2023 21:24:47 -0700 Subject: [PATCH 198/525] Minor code simplification in lambda inference code. No functional change. --- .../src/analyzer/typeEvaluator.ts | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index e5aa1e263..9adb7ca6f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13074,19 +13074,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If we're speculatively evaluating the lambda, create another speculative // evaluation scope for the return expression and do not allow retention // of the cached types. - const inferLambdaReturnType = () => { - const returnTypeResult = getTypeOfExpression( - node.expression, - /* flags */ undefined, - makeInferenceContext(expectedReturnType) - ); - - functionType.inferredReturnType = returnTypeResult.type; - if (returnTypeResult.isIncomplete) { - isIncomplete = true; - } - }; - // We need to set allowCacheRetention to false because we don't want to // cache the type of the lambda return expression because it depends on // the parameter types that we set above, and the speculative type cache @@ -13094,7 +13081,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions useSpeculativeMode( isSpeculativeModeInUse(node) || inferenceContext?.isTypeIncomplete ? node.expression : undefined, () => { - inferLambdaReturnType(); + const returnTypeResult = getTypeOfExpression( + node.expression, + /* flags */ undefined, + makeInferenceContext(expectedReturnType) + ); + + functionType.inferredReturnType = returnTypeResult.type; + if (returnTypeResult.isIncomplete) { + isIncomplete = true; + } }, /* allowCacheRetention */ false ); From d91130c18948bc8b52583a1d35790fc9040da6a0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 21 May 2023 21:38:00 -0700 Subject: [PATCH 199/525] Fixed bug that resulted in a false positive error when the "expected type" for a lambda is a function that includes a ParamSpec. This addresses https://github.com/microsoft/pyright/issues/5147. --- .../src/analyzer/typeEvaluator.ts | 5 ++++ .../src/tests/samples/lambda11.py | 30 +++++++++++++++++++ .../src/tests/typeEvaluator1.test.ts | 6 ++++ 3 files changed, 41 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/lambda11.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 9adb7ca6f..97af6eaa0 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13067,6 +13067,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); } + // Handle the case where the expected type contains a ParamSpec. + if (expectedFunctionType?.details.paramSpec) { + functionType.details.paramSpec = expectedFunctionType.details.paramSpec; + } + const expectedReturnType = expectedFunctionType ? getFunctionEffectiveReturnType(expectedFunctionType) : undefined; diff --git a/packages/pyright-internal/src/tests/samples/lambda11.py b/packages/pyright-internal/src/tests/samples/lambda11.py new file mode 100644 index 000000000..afeac5552 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/lambda11.py @@ -0,0 +1,30 @@ +# This sample tests the case where a lambda's expected type includes +# a ParamSpec. + +from typing import Callable, Generic, TypeVar, Concatenate, ParamSpec + +T = TypeVar("T") +P = ParamSpec("P") + + +class Callback(Generic[T]): + def __init__( + self, + func: Callable[Concatenate[T, P], object], + *args: P.args, + **kwargs: P.kwargs + ) -> None: + ... + + +v1: Callback[tuple[int, int]] = Callback(lambda p: (p[1], p[0])) + + +def func1( + func: Callable[Concatenate[int, P], T], *args: P.args, **kwargs: P.kwargs +) -> T: + ... + + +v2 = func1(lambda p: p) +reveal_type(v2, expected_text="int") diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 69f734645..24f4dc185 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -675,6 +675,12 @@ test('Lambda10', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Lambda11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['lambda11.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Call1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['call1.py']); From a428fe81be2e0bf0a846eb3f0c8bbb516e2b841d Mon Sep 17 00:00:00 2001 From: Christina Hanson Date: Tue, 23 May 2023 08:00:30 +1200 Subject: [PATCH 200/525] Preserve parentheses around unary operators for printing (#5152) --- .../pyright-internal/src/analyzer/parseTreeUtils.ts | 6 ++++-- packages/pyright-internal/src/parser/parseNodes.ts | 2 ++ packages/pyright-internal/src/parser/parser.ts | 11 ++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts index 06fa4905f..cb2e6d066 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts @@ -214,7 +214,8 @@ export function printExpression(node: ExpressionNode, flags = PrintExpressionFla } case ParseNodeType.UnaryOperation: { - return printOperator(node.operator) + printExpression(node.expression, flags); + const exprStr = printOperator(node.operator) + printExpression(node.expression, flags); + return node.parenthesized ? `(${exprStr})` : exprStr; } case ParseNodeType.BinaryOperation: { @@ -318,7 +319,8 @@ export function printExpression(node: ExpressionNode, flags = PrintExpressionFla } case ParseNodeType.Await: { - return 'await ' + printExpression(node.expression, flags); + const exprStr = 'await ' + printExpression(node.expression, flags); + return node.parenthesized ? `(${exprStr})` : exprStr; } case ParseNodeType.Ternary: { diff --git a/packages/pyright-internal/src/parser/parseNodes.ts b/packages/pyright-internal/src/parser/parseNodes.ts index d7b4a13ee..cffd5d270 100644 --- a/packages/pyright-internal/src/parser/parseNodes.ts +++ b/packages/pyright-internal/src/parser/parseNodes.ts @@ -796,6 +796,7 @@ export interface UnaryOperationNode extends ParseNodeBase { expression: ExpressionNode; operatorToken: Token; operator: OperatorType; + parenthesized?: boolean; } export namespace UnaryOperationNode { @@ -1126,6 +1127,7 @@ export namespace AugmentedAssignmentNode { export interface AwaitNode extends ParseNodeBase { readonly nodeType: ParseNodeType.Await; expression: ExpressionNode; + parenthesized?: boolean; } export namespace AwaitNode { diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index 9e59ee0e4..a5f377710 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -3827,10 +3827,15 @@ export class Parser { this._addError(Localizer.Diagnostic.tupleInAnnotation() + diag.getString(), possibleTupleNode); } - if (possibleTupleNode.nodeType === ParseNodeType.BinaryOperation) { - // Mark the binary expression as parenthesized so we don't attempt + if ( + possibleTupleNode.nodeType === ParseNodeType.UnaryOperation || + possibleTupleNode.nodeType === ParseNodeType.Await || + possibleTupleNode.nodeType === ParseNodeType.BinaryOperation + ) { + // Mark binary expressions as parenthesized so we don't attempt // to use comparison chaining, which isn't appropriate when the - // expression is parenthesized. + // expression is parenthesized. Unary and await expressions + // are also marked to be able to display them unambiguously. possibleTupleNode.parenthesized = true; } From dd109eb9ce2e489a86d829f92bc642137c2a5093 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 22 May 2023 13:04:38 -0700 Subject: [PATCH 201/525] Renamed ParameterCategory enumeration for clarity and brevity. Added new accessor functions for position-only and keyword-only separators. No functional change. --- .../pyright-internal/src/analyzer/checker.ts | 4 +- .../src/analyzer/constructorTransform.ts | 6 +- .../src/analyzer/dataClasses.ts | 2 +- .../src/analyzer/parameterUtils.ts | 17 ++-- .../src/analyzer/parseTreeUtils.ts | 4 +- .../src/analyzer/typeEvaluator.ts | 80 +++++++++---------- .../src/analyzer/typeGuards.ts | 4 +- .../src/analyzer/typePrinter.ts | 18 ++--- .../src/analyzer/typeStubWriter.ts | 4 +- .../src/analyzer/typeUtils.ts | 24 +++--- .../src/analyzer/typedDicts.ts | 4 +- .../pyright-internal/src/analyzer/types.ts | 34 ++++---- .../src/commands/dumpFileDebugInfoCommand.ts | 4 +- .../src/languageService/completionProvider.ts | 10 +-- .../pyright-internal/src/parser/parseNodes.ts | 4 +- .../pyright-internal/src/parser/parser.ts | 14 ++-- .../src/tests/typePrinter.test.ts | 6 +- 17 files changed, 117 insertions(+), 122 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index bfeac0b5e..65be4430b 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -438,7 +438,7 @@ export class Checker extends ParseTreeWalker { node.parameters.forEach((param, index) => { if (param.name) { // Determine whether this is a P.args parameter. - if (param.category === ParameterCategory.VarArgList) { + if (param.category === ParameterCategory.ArgsList) { const annotationExpr = param.typeAnnotation || param.typeAnnotationComment; if ( annotationExpr && @@ -450,7 +450,7 @@ export class Checker extends ParseTreeWalker { sawParamSpecArgs = true; } } - } else if (param.category === ParameterCategory.VarArgDictionary) { + } else if (param.category === ParameterCategory.KwargsDict) { sawParamSpecArgs = false; } } diff --git a/packages/pyright-internal/src/analyzer/constructorTransform.ts b/packages/pyright-internal/src/analyzer/constructorTransform.ts index c68bc5357..bf78f0afa 100644 --- a/packages/pyright-internal/src/analyzer/constructorTransform.ts +++ b/packages/pyright-internal/src/analyzer/constructorTransform.ts @@ -423,10 +423,10 @@ function applyPartialTransformToFunction( return specializedParam; }); const unassignedParamList = updatedParamList.filter((param) => { - if (param.category === ParameterCategory.VarArgDictionary) { + if (param.category === ParameterCategory.KwargsDict) { return false; } - if (param.category === ParameterCategory.VarArgList) { + if (param.category === ParameterCategory.ArgsList) { return true; } return !param.name || !paramMap.has(param.name); @@ -435,7 +435,7 @@ function applyPartialTransformToFunction( return param.name && paramMap.get(param.name); }); const kwargsParam = updatedParamList.filter((param) => { - return param.category === ParameterCategory.VarArgDictionary; + return param.category === ParameterCategory.KwargsDict; }); const newParamList: FunctionParameter[] = []; diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index eee9014ea..622457185 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -541,7 +541,7 @@ export function synthesizeDataClassMethods( if (keywordOnlyParams.length > 0) { FunctionType.addParameter(initType, { - category: ParameterCategory.VarArgList, + category: ParameterCategory.ArgsList, type: AnyType.create(), }); keywordOnlyParams.forEach((param) => { diff --git a/packages/pyright-internal/src/analyzer/parameterUtils.ts b/packages/pyright-internal/src/analyzer/parameterUtils.ts index cb0e8d33f..bc5159ff2 100644 --- a/packages/pyright-internal/src/analyzer/parameterUtils.ts +++ b/packages/pyright-internal/src/analyzer/parameterUtils.ts @@ -13,6 +13,7 @@ import { FunctionParameter, FunctionType, isClassInstance, + isPositionOnlySeparator, isUnpackedClass, isVariadicTypeVar, Type, @@ -21,7 +22,7 @@ import { partiallySpecializeType } from './typeUtils'; export function isTypedKwargs(param: FunctionParameter): boolean { return ( - param.category === ParameterCategory.VarArgDictionary && + param.category === ParameterCategory.KwargsDict && isClassInstance(param.type) && isUnpackedClass(param.type) && ClassType.isTypedDictClass(param.type) && @@ -75,9 +76,7 @@ export function getParameterListDetails(type: FunctionType): ParameterListDetail hasUnpackedTypedDict: false, }; - let positionOnlyIndex = type.details.parameters.findIndex( - (p) => p.category === ParameterCategory.Simple && !p.name - ); + let positionOnlyIndex = type.details.parameters.findIndex((p) => isPositionOnlySeparator(p)); // Handle the old (pre Python 3.8) way of specifying positional-only // parameters by naming them with "__". @@ -125,7 +124,7 @@ export function getParameterListDetails(type: FunctionType): ParameterListDetail let source: ParameterSource; if (sourceOverride !== undefined) { source = sourceOverride; - } else if (param.category === ParameterCategory.VarArgList) { + } else if (param.category === ParameterCategory.ArgsList) { source = ParameterSource.PositionOnly; } else if (sawKeywordOnlySeparator) { source = ParameterSource.KeywordOnly; @@ -146,7 +145,7 @@ export function getParameterListDetails(type: FunctionType): ParameterListDetail }; type.details.parameters.forEach((param, index) => { - if (param.category === ParameterCategory.VarArgList) { + if (param.category === ParameterCategory.ArgsList) { // If this is an unpacked tuple, expand the entries. const paramType = FunctionType.getEffectiveParameterType(type, index); if (param.name && isUnpackedClass(paramType) && paramType.tupleTypeArguments) { @@ -155,10 +154,10 @@ export function getParameterListDetails(type: FunctionType): ParameterListDetail paramType.tupleTypeArguments.forEach((tupleArg, tupleIndex) => { const category = isVariadicTypeVar(tupleArg.type) || tupleArg.isUnbounded - ? ParameterCategory.VarArgList + ? ParameterCategory.ArgsList : ParameterCategory.Simple; - if (category === ParameterCategory.VarArgList) { + if (category === ParameterCategory.ArgsList) { result.argsIndex = result.params.length; } @@ -220,7 +219,7 @@ export function getParameterListDetails(type: FunctionType): ParameterListDetail addVirtualParameter(param, index); } - } else if (param.category === ParameterCategory.VarArgDictionary) { + } else if (param.category === ParameterCategory.KwargsDict) { sawKeywordOnlySeparator = true; const paramType = FunctionType.getEffectiveParameterType(type, index); diff --git a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts index cb2e6d066..88d5cb66e 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts @@ -428,9 +428,9 @@ export function printExpression(node: ExpressionNode, flags = PrintExpressionFla .map((param) => { let paramStr = ''; - if (param.category === ParameterCategory.VarArgList) { + if (param.category === ParameterCategory.ArgsList) { paramStr += '*'; - } else if (param.category === ParameterCategory.VarArgDictionary) { + } else if (param.category === ParameterCategory.KwargsDict) { paramStr += '**'; } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 97af6eaa0..a4d410764 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -306,6 +306,7 @@ import { isNoneTypeClass, isOverloadedFunction, isParamSpec, + isPositionOnlySeparator, isTypeSame, isTypeVar, isUnbound, @@ -1436,9 +1437,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getTypeOfParameterAnnotation(paramTypeNode: ExpressionNode, paramCategory: ParameterCategory) { return getTypeOfAnnotation(paramTypeNode, { associateTypeVarsWithScope: true, - allowTypeVarTuple: paramCategory === ParameterCategory.VarArgList, - allowUnpackedTypedDict: paramCategory === ParameterCategory.VarArgDictionary, - allowUnpackedTuple: paramCategory === ParameterCategory.VarArgList, + allowTypeVarTuple: paramCategory === ParameterCategory.ArgsList, + allowUnpackedTypedDict: paramCategory === ParameterCategory.KwargsDict, + allowUnpackedTuple: paramCategory === ParameterCategory.ArgsList, }); } @@ -4934,7 +4935,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (baseType.details.isParamSpec) { if (memberName === 'args') { const paramNode = ParseTreeUtils.getEnclosingParameter(node); - if (!paramNode || paramNode.category !== ParameterCategory.VarArgList) { + if (!paramNode || paramNode.category !== ParameterCategory.ArgsList) { addError(Localizer.Diagnostic.paramSpecArgsUsage(), node); return { type: UnknownType.create(isIncomplete), isIncomplete }; } @@ -4943,7 +4944,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (memberName === 'kwargs') { const paramNode = ParseTreeUtils.getEnclosingParameter(node); - if (!paramNode || paramNode.category !== ParameterCategory.VarArgDictionary) { + if (!paramNode || paramNode.category !== ParameterCategory.KwargsDict) { addError(Localizer.Diagnostic.paramSpecKwargsUsage(), node); return { type: UnknownType.create(isIncomplete), isIncomplete }; } @@ -9472,7 +9473,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const paramName = paramDetails.params[paramIndex].param.name; const isParamVariadic = - paramDetails.params[paramIndex].param.category === ParameterCategory.VarArgList && + paramDetails.params[paramIndex].param.category === ParameterCategory.ArgsList && isVariadicTypeVar(paramType); if (argList[argIndex].argumentCategory === ArgumentCategory.UnpackedList) { @@ -9546,7 +9547,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions argList[argIndex].valueExpression! )?.type ?? UnknownType.create(); - if (paramDetails.params[paramIndex].param.category !== ParameterCategory.VarArgList) { + if (paramDetails.params[paramIndex].param.category !== ParameterCategory.ArgsList) { matchedUnpackedListOfUnknownLength = true; } } @@ -9603,20 +9604,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions paramMap.get(paramName)!.argsReceived++; } - if ( - advanceToNextArg || - paramDetails.params[paramIndex].param.category === ParameterCategory.VarArgList - ) { + if (advanceToNextArg || paramDetails.params[paramIndex].param.category === ParameterCategory.ArgsList) { argIndex++; } if ( isVariadicTypeVarFullyMatched || - paramDetails.params[paramIndex].param.category !== ParameterCategory.VarArgList + paramDetails.params[paramIndex].param.category !== ParameterCategory.ArgsList ) { paramIndex++; } - } else if (paramDetails.params[paramIndex].param.category === ParameterCategory.VarArgList) { + } else if (paramDetails.params[paramIndex].param.category === ParameterCategory.ArgsList) { trySetActive(argList[argIndex], paramDetails.params[paramIndex].param); if (paramSpecArgList) { @@ -9636,7 +9634,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } paramCategory = isVariadicTypeVar(effectiveParamType) - ? ParameterCategory.VarArgList + ? ParameterCategory.ArgsList : ParameterCategory.Simple; if (remainingArgCount <= remainingParamCount) { @@ -9703,7 +9701,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if ( positionalOnlyLimitIndex >= 0 && paramIndex < positionalOnlyLimitIndex && - paramDetails.params[paramIndex].param.category === ParameterCategory.VarArgList && + paramDetails.params[paramIndex].param.category === ParameterCategory.ArgsList && !isParamSpec(paramDetails.params[paramIndex].param.type) ) { paramIndex++; @@ -9733,7 +9731,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const firstArgsParam = paramDetails.params.findIndex( (paramInfo) => - paramInfo.param.category === ParameterCategory.VarArgList && !isParamSpec(paramInfo.param.type) + paramInfo.param.category === ParameterCategory.ArgsList && !isParamSpec(paramInfo.param.type) ); if (firstArgsParam >= paramIndex && firstArgsParam < positionalOnlyLimitIndex) { // If there is another args parameter beyond the current param index, @@ -9806,7 +9804,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } else if (paramDetails.kwargsIndex !== undefined) { const paramType = paramDetails.params[paramDetails.kwargsIndex].type; validateArgTypeParams.push({ - paramCategory: ParameterCategory.VarArgDictionary, + paramCategory: ParameterCategory.KwargsDict, paramType, requiresTypeVarMatching: requiresSpecialization(paramType), argument: { @@ -9849,7 +9847,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions unpackedDictionaryArgType = AnyType.create(); if (typeResult.type.details.paramSpec) { validateArgTypeParams.push({ - paramCategory: ParameterCategory.VarArgDictionary, + paramCategory: ParameterCategory.KwargsDict, paramType: typeResult.type.details.paramSpec, requiresTypeVarMatching: false, argument: argList[argIndex], @@ -9956,7 +9954,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } else { const paramType = paramDetails.params[paramDetails.kwargsIndex].type; validateArgTypeParams.push({ - paramCategory: ParameterCategory.VarArgDictionary, + paramCategory: ParameterCategory.KwargsDict, paramType, requiresTypeVarMatching: requiresSpecialization(paramType), argument: argList[argIndex], @@ -10013,7 +10011,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isParamSpec(argType) && argType.paramSpecAccess === 'args') { validateArgTypeParams.push({ - paramCategory: ParameterCategory.VarArgList, + paramCategory: ParameterCategory.ArgsList, paramType: typeResult.type.details.paramSpec, requiresTypeVarMatching: false, argument: argList[argIndex], @@ -10199,7 +10197,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } const combinedArg: ValidateArgTypeParams = { - paramCategory: ParameterCategory.VarArgList, + paramCategory: ParameterCategory.ArgsList, paramType, requiresTypeVarMatching: true, argument: { @@ -10883,10 +10881,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (positionalIndexLimit < 0) { positionalIndexLimit = paramSpecParams.length; } - const argsParam = paramSpecParams.find((paramInfo) => paramInfo.category === ParameterCategory.VarArgList); - const kwargsParam = paramSpecParams.find( - (paramInfo) => paramInfo.category === ParameterCategory.VarArgDictionary - ); + const argsParam = paramSpecParams.find((paramInfo) => paramInfo.category === ParameterCategory.ArgsList); + const kwargsParam = paramSpecParams.find((paramInfo) => paramInfo.category === ParameterCategory.KwargsDict); const signatureTracker = new UniqueSignatureTracker(); let sawUnpackedListArgument = false; @@ -10962,7 +10958,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // See if there is an *args parameter. const argsParam = paramSpecParams.find( - (param) => param.category === ParameterCategory.VarArgList && param.name + (param) => param.category === ParameterCategory.ArgsList && param.name ); if (argsParam && paramMap.has(argsParam.name!)) { // TODO - validate args type @@ -10973,9 +10969,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions assert(arg.argumentCategory === ArgumentCategory.UnpackedDictionary); // See if there is an *kwargs parameter. - const kwargsParam = paramSpecParams.find( - (param) => param.category === ParameterCategory.VarArgDictionary - ); + const kwargsParam = paramSpecParams.find((param) => param.category === ParameterCategory.KwargsDict); if (kwargsParam && paramMap.has(kwargsParam.name!)) { // TODO - validate kwargs type paramMap.delete(kwargsParam.name!); @@ -11143,7 +11137,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If we're assigning to a var arg dictionary with a TypeVar type, // strip literals before performing the assignment. This is used in // places like a dict constructor. - if (argParam.paramCategory === ParameterCategory.VarArgDictionary && isTypeVar(argParam.paramType)) { + if (argParam.paramCategory === ParameterCategory.KwargsDict && isTypeVar(argParam.paramType)) { argType = stripLiteralValue(argType); } @@ -13437,11 +13431,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isVariadicTypeVar(entryType)) { validateVariadicTypeVarIsUnpacked(entryType, entry.node); - paramCategory = ParameterCategory.VarArgList; + paramCategory = ParameterCategory.ArgsList; noteSawUnpacked(entry); } else if (validateTypeArg(entry, { allowUnpackedTuples: true })) { if (isUnpackedClass(entryType)) { - paramCategory = ParameterCategory.VarArgList; + paramCategory = ParameterCategory.ArgsList; noteSawUnpacked(entry); } } else { @@ -16731,7 +16725,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return type; } - case ParameterCategory.VarArgList: { + case ParameterCategory.ArgsList: { if (isTypeVar(type) && type.paramSpecAccess) { return type; } @@ -16753,7 +16747,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return UnknownType.create(); } - case ParameterCategory.VarArgDictionary: { + case ParameterCategory.KwargsDict: { // Leave a ParamSpec alone. if (isTypeVar(type) && type.paramSpecAccess) { return type; @@ -18040,10 +18034,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isVariableAnnotation: annotationNode.parent?.nodeType === ParseNodeType.TypeAnnotation, allowUnpackedTuple: annotationParent.nodeType === ParseNodeType.Parameter && - annotationParent.category === ParameterCategory.VarArgList, + annotationParent.category === ParameterCategory.ArgsList, allowUnpackedTypedDict: annotationParent.nodeType === ParseNodeType.Parameter && - annotationParent.category === ParameterCategory.VarArgDictionary, + annotationParent.category === ParameterCategory.KwargsDict, }); return; } @@ -23184,7 +23178,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const srcPositionalsToPack = srcDetails.params.slice(destDetails.argsIndex, srcLastToPackIndex - suffixLength); const srcTupleTypes: TupleTypeArgument[] = []; srcPositionalsToPack.forEach((entry) => { - if (entry.param.category === ParameterCategory.VarArgList) { + if (entry.param.category === ParameterCategory.ArgsList) { if (isUnpackedVariadicTypeVar(entry.type)) { srcTupleTypes.push({ type: entry.type, isUnbounded: false }); } else if (isUnpackedClass(entry.type) && entry.type.tupleTypeArguments) { @@ -23219,7 +23213,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ...srcDetails.params.slice(0, destDetails.argsIndex), { param: { - category: ParameterCategory.VarArgList, + category: ParameterCategory.ArgsList, name: '_arg_combined', isNameSynthesized: true, hasDeclaredType: true, @@ -23236,12 +23230,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ]; const argsIndex = srcDetails.params.findIndex( - (param) => param.param.category === ParameterCategory.VarArgList + (param) => param.param.category === ParameterCategory.ArgsList ); srcDetails.argsIndex = argsIndex >= 0 ? argsIndex : undefined; const kwargsIndex = srcDetails.params.findIndex( - (param) => param.param.category === ParameterCategory.VarArgDictionary + (param) => param.param.category === ParameterCategory.KwargsDict ); srcDetails.kwargsIndex = kwargsIndex >= 0 ? kwargsIndex : undefined; @@ -23309,8 +23303,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const isDestPositionalOnly = destParam.source === ParameterSource.PositionOnly; if ( !isDestPositionalOnly && - destParam.param.category !== ParameterCategory.VarArgList && - srcParam.param.category !== ParameterCategory.VarArgList && + destParam.param.category !== ParameterCategory.ArgsList && + srcParam.param.category !== ParameterCategory.ArgsList && destParamName !== srcParamName ) { diag?.createAddendum().addMessage( @@ -23786,7 +23780,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (p.name) { matchedParamCount++; } - } else if (!p.name && p.category === ParameterCategory.Simple && remainingParams.length === 0) { + } else if (isPositionOnlySeparator(p) && remainingParams.length === 0) { // Don't bother pushing a position-only separator if it // is the first remaining param. } else { diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 70cacb58b..f0f009e36 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -1093,8 +1093,8 @@ function getIsInstanceClassTypes(argType: Type): (ClassType | TypeVarType | None } else if ( isFunction(subtype) && subtype.details.parameters.length === 2 && - subtype.details.parameters[0].category === ParameterCategory.VarArgList && - subtype.details.parameters[1].category === ParameterCategory.VarArgDictionary + subtype.details.parameters[0].category === ParameterCategory.ArgsList && + subtype.details.parameters[1].category === ParameterCategory.KwargsDict ) { classTypeList.push(subtype); } else { diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index 6035b44d6..1a664f68f 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -978,7 +978,7 @@ function printFunctionPartsInternal( // Handle specialized variadic type parameters specially. if ( index === type.details.parameters.length - 1 && - param.category === ParameterCategory.VarArgList && + param.category === ParameterCategory.ArgsList && isVariadicTypeVar(param.type) ) { const specializedParamType = FunctionType.getEffectiveParameterType(type, index); @@ -1023,11 +1023,11 @@ function printFunctionPartsInternal( } let paramString = ''; - if (param.category === ParameterCategory.VarArgList) { + if (param.category === ParameterCategory.ArgsList) { if (!param.name || !param.isNameSynthesized) { paramString += '*'; } - } else if (param.category === ParameterCategory.VarArgDictionary) { + } else if (param.category === ParameterCategory.KwargsDict) { paramString += '**'; } @@ -1063,11 +1063,11 @@ function printFunctionPartsInternal( if (emittedParamName) { paramString += ': '; - } else if (param.category === ParameterCategory.VarArgList && !isUnpacked(paramType)) { + } else if (param.category === ParameterCategory.ArgsList && !isUnpacked(paramType)) { paramString += '*'; } - if (param.category === ParameterCategory.VarArgDictionary && isUnpacked(paramType)) { + if (param.category === ParameterCategory.KwargsDict && isUnpacked(paramType)) { if (printTypeFlags & PrintTypeFlags.PythonSyntax) { // Use "Unpack" because ** isn't legal syntax prior to Python 3.12. paramTypeString = `Unpack[${paramTypeString.substring(1)}]`; @@ -1081,8 +1081,8 @@ function printFunctionPartsInternal( if (isParamSpec(paramType)) { if ( - param.category === ParameterCategory.VarArgList || - param.category === ParameterCategory.VarArgDictionary + param.category === ParameterCategory.ArgsList || + param.category === ParameterCategory.KwargsDict ) { isParamSpecArgsKwargsParam = true; } @@ -1123,9 +1123,9 @@ function printFunctionPartsInternal( // If this is a (...) signature, replace the *args, **kwargs with "...". if (FunctionType.shouldSkipArgsKwargsCompatibilityCheck(type) && !isParamSpecArgsKwargsParam) { - if (param.category === ParameterCategory.VarArgList) { + if (param.category === ParameterCategory.ArgsList) { paramString = '...'; - } else if (param.category === ParameterCategory.VarArgDictionary) { + } else if (param.category === ParameterCategory.KwargsDict) { return; } } diff --git a/packages/pyright-internal/src/analyzer/typeStubWriter.ts b/packages/pyright-internal/src/analyzer/typeStubWriter.ts index a3e8ed897..eb64c4a17 100644 --- a/packages/pyright-internal/src/analyzer/typeStubWriter.ts +++ b/packages/pyright-internal/src/analyzer/typeStubWriter.ts @@ -660,9 +660,9 @@ export class TypeStubWriter extends ParseTreeWalker { private _printParameter(paramNode: ParameterNode, functionNode: FunctionNode, paramIndex: number): string { let line = ''; - if (paramNode.category === ParameterCategory.VarArgList) { + if (paramNode.category === ParameterCategory.ArgsList) { line += '*'; - } else if (paramNode.category === ParameterCategory.VarArgDictionary) { + } else if (paramNode.category === ParameterCategory.KwargsDict) { line += '**'; } diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 7176ce484..ccb75b653 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -28,10 +28,12 @@ import { isClassInstance, isFunction, isInstantiableClass, + isKeywordOnlySeparator, isNever, isNoneInstance, isOverloadedFunction, isParamSpec, + isPositionOnlySeparator, isTypeSame, isTypeVar, isUnbound, @@ -2388,8 +2390,8 @@ export function removeParamSpecVariadicsFromFunction(type: FunctionType): Functi const kwargsParam = type.details.parameters[paramCount - 1]; if ( - argsParam.category !== ParameterCategory.VarArgList || - kwargsParam.category !== ParameterCategory.VarArgDictionary || + argsParam.category !== ParameterCategory.ArgsList || + kwargsParam.category !== ParameterCategory.KwargsDict || !isParamSpec(argsParam.type) || !isParamSpec(kwargsParam.type) || !isTypeSame(argsParam.type, kwargsParam.type) @@ -2905,7 +2907,7 @@ export function convertParamSpecValueToType(paramSpecValue: FunctionType, omitPa // If the ParamSpec has a position-only separator as its only parameter, // treat it as though there are no parameters. const onlyParam = paramSpecValue.details.parameters[0]; - if (onlyParam.category === ParameterCategory.Simple && !onlyParam.name) { + if (isPositionOnlySeparator(onlyParam)) { hasParameters = false; } } @@ -3352,8 +3354,8 @@ class TypeVarTransformer { ); if ( - argsParam.category === ParameterCategory.VarArgList && - kwargsParam.category === ParameterCategory.VarArgDictionary && + argsParam.category === ParameterCategory.ArgsList && + kwargsParam.category === ParameterCategory.KwargsDict && isParamSpec(argsParamType) && isParamSpec(kwargsParamType) && isTypeSame(argsParamType, kwargsParamType) @@ -3397,7 +3399,7 @@ class TypeVarTransformer { if ( variadicParamIndex === undefined && isVariadicTypeVar(paramType) && - functionType.details.parameters[i].category === ParameterCategory.VarArgList + functionType.details.parameters[i].category === ParameterCategory.ArgsList ) { variadicParamIndex = i; @@ -3454,9 +3456,7 @@ class TypeVarTransformer { // Unpack the tuple into individual parameters. variadicTypesToUnpack!.forEach((unpackedType) => { FunctionType.addParameter(newFunctionType, { - category: unpackedType.isUnbounded - ? ParameterCategory.VarArgList - : ParameterCategory.Simple, + category: unpackedType.isUnbounded ? ParameterCategory.ArgsList : ParameterCategory.Simple, name: `__p${newFunctionType.details.parameters.length}`, isNameSynthesized: true, type: unpackedType.type, @@ -3476,9 +3476,9 @@ class TypeVarTransformer { } else { const param = { ...functionType.details.parameters[index] }; - if (param.category === ParameterCategory.VarArgList && !param.name) { + if (isKeywordOnlySeparator(param)) { insertKeywordOnlySeparator = false; - } else if (param.category === ParameterCategory.VarArgDictionary) { + } else if (param.category === ParameterCategory.KwargsDict) { insertKeywordOnlySeparator = false; } @@ -3486,7 +3486,7 @@ class TypeVarTransformer { // unpacked a variadic TypeVar. if (param.category === ParameterCategory.Simple && param.name && insertKeywordOnlySeparator) { FunctionType.addParameter(newFunctionType, { - category: ParameterCategory.VarArgList, + category: ParameterCategory.ArgsList, type: UnknownType.create(), }); insertKeywordOnlySeparator = false; diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index ca91acf00..e7945456e 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -273,7 +273,7 @@ export function synthesizeTypedDictClassMethods( // All subsequent parameters must be named, so insert an empty "*". FunctionType.addParameter(initOverride1, { - category: ParameterCategory.VarArgList, + category: ParameterCategory.ArgsList, type: AnyType.create(), hasDeclaredType: true, }); @@ -289,7 +289,7 @@ export function synthesizeTypedDictClassMethods( // All parameters must be named, so insert an empty "*". FunctionType.addParameter(initOverride2, { - category: ParameterCategory.VarArgList, + category: ParameterCategory.ArgsList, type: AnyType.create(), hasDeclaredType: true, }); diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 53415d7f8..5daf10720 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1181,6 +1181,16 @@ export interface FunctionParameter { typeAnnotation?: ExpressionNode | undefined; } +export function isPositionOnlySeparator(param: FunctionParameter) { + // A simple parameter with no name is treated as a "/" separator. + return param.category === ParameterCategory.Simple && !param.name; +} + +export function isKeywordOnlySeparator(param: FunctionParameter) { + // An *args parameter with no name is treated as a "*" separator. + return param.category === ParameterCategory.ArgsList && !param.name; +} + export const enum FunctionTypeFlags { None = 0, @@ -1629,14 +1639,10 @@ export namespace FunctionType { // If there is a position-only separator in the captured param spec signature, // remove the position-only separator in the existing signature. Otherwise, // we'll end up with redundant position-only separators. - if ( - paramSpecValue.details.parameters.some( - (entry) => entry.category === ParameterCategory.Simple && !entry.name - ) - ) { + if (paramSpecValue.details.parameters.some((entry) => isPositionOnlySeparator(entry))) { if (newFunction.details.parameters.length > 0) { const lastParam = newFunction.details.parameters[newFunction.details.parameters.length - 1]; - if (lastParam.category === ParameterCategory.Simple && !lastParam.name) { + if (isPositionOnlySeparator(lastParam)) { newFunction.details.parameters.pop(); } } @@ -1717,13 +1723,13 @@ export namespace FunctionType { export function getDefaultParameters(useUnknown = false): FunctionParameter[] { return [ { - category: ParameterCategory.VarArgList, + category: ParameterCategory.ArgsList, name: 'args', type: useUnknown ? UnknownType.create() : AnyType.create(), hasDeclaredType: !useUnknown, }, { - category: ParameterCategory.VarArgDictionary, + category: ParameterCategory.KwargsDict, name: 'kwargs', type: useUnknown ? UnknownType.create() : AnyType.create(), hasDeclaredType: !useUnknown, @@ -1746,9 +1752,9 @@ export namespace FunctionType { if (param.category === ParameterCategory.Simple) { return false; - } else if (param.category === ParameterCategory.VarArgList) { + } else if (param.category === ParameterCategory.ArgsList) { sawArgs = true; - } else if (param.category === ParameterCategory.VarArgDictionary) { + } else if (param.category === ParameterCategory.KwargsDict) { sawKwargs = true; } @@ -2676,12 +2682,8 @@ export function isTypeSame(type1: Type, type2: Type, options: TypeSameOptions = return false; } - const positionalOnlyIndex1 = params1.findIndex( - (param) => param.category === ParameterCategory.Simple && !param.name - ); - const positionalOnlyIndex2 = params2.findIndex( - (param) => param.category === ParameterCategory.Simple && !param.name - ); + const positionalOnlyIndex1 = params1.findIndex((param) => isPositionOnlySeparator(param)); + const positionalOnlyIndex2 = params2.findIndex((param) => isPositionOnlySeparator(param)); // Make sure the parameter details match. for (let i = 0; i < params1.length; i++) { diff --git a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts index c0c4cf855..608b2de77 100644 --- a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts +++ b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts @@ -1012,9 +1012,9 @@ function getParameterCategoryString(type: ParameterCategory) { switch (type) { case ParameterCategory.Simple: return 'Simple'; - case ParameterCategory.VarArgList: + case ParameterCategory.ArgsList: return 'VarArgList'; - case ParameterCategory.VarArgDictionary: + case ParameterCategory.KwargsDict: return 'VarArgDictionary'; } } diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 0f3715b7a..4f360d320 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -574,7 +574,7 @@ export class CompletionProvider { // All simple parameters after a `*` or `*args` parameter // are considered keyword only. - if (parameter.category === ParameterCategory.VarArgList) { + if (parameter.category === ParameterCategory.ArgsList) { sawKeywordOnlySeparator = true; } } @@ -584,11 +584,11 @@ export class CompletionProvider { function convertToString(parameter: [node: ParameterNode, keywordOnly: boolean]) { const name = parameter[0].name?.value; - if (parameter[0].category === ParameterCategory.VarArgList) { + if (parameter[0].category === ParameterCategory.ArgsList) { return `*${name}`; } - if (parameter[0].category === ParameterCategory.VarArgDictionary) { + if (parameter[0].category === ParameterCategory.KwargsDict) { return `**${name}`; } @@ -1646,9 +1646,9 @@ export class CompletionProvider { const paramList = node.parameters .map((param, index) => { let paramString = ''; - if (param.category === ParameterCategory.VarArgList) { + if (param.category === ParameterCategory.ArgsList) { paramString += '*'; - } else if (param.category === ParameterCategory.VarArgDictionary) { + } else if (param.category === ParameterCategory.KwargsDict) { paramString += '**'; } diff --git a/packages/pyright-internal/src/parser/parseNodes.ts b/packages/pyright-internal/src/parser/parseNodes.ts index cffd5d270..bf4db3392 100644 --- a/packages/pyright-internal/src/parser/parseNodes.ts +++ b/packages/pyright-internal/src/parser/parseNodes.ts @@ -454,8 +454,8 @@ export namespace FunctionNode { export const enum ParameterCategory { Simple, - VarArgList, - VarArgDictionary, + ArgsList, + KwargsDict, } export interface ParameterNode extends ParseNodeBase { diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index a5f377710..66ce9a701 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -1958,7 +1958,7 @@ export class Parser { paramList.push(param); - if (param.category === ParameterCategory.VarArgList) { + if (param.category === ParameterCategory.ArgsList) { if (!param.name) { if (sawKeywordOnlySeparator) { this._addError(Localizer.Diagnostic.duplicateKeywordOnly(), param); @@ -1974,7 +1974,7 @@ export class Parser { } } - if (param.category === ParameterCategory.VarArgDictionary) { + if (param.category === ParameterCategory.KwargsDict) { if (sawKwArgs) { this._addError(Localizer.Diagnostic.duplicateKwargsParam(), param); } @@ -2007,7 +2007,7 @@ export class Parser { if (paramList.length > 0) { const lastParam = paramList[paramList.length - 1]; - if (lastParam.category === ParameterCategory.VarArgList && !lastParam.name) { + if (lastParam.category === ParameterCategory.ArgsList && !lastParam.name) { this._addError(Localizer.Diagnostic.expectedNamedParameter(), lastParam); } } @@ -2034,7 +2034,7 @@ export class Parser { const paramName = this._getTokenIfIdentifier(); if (!paramName) { if (starCount === 1) { - const paramNode = ParameterNode.create(firstToken, ParameterCategory.VarArgList); + const paramNode = ParameterNode.create(firstToken, ParameterCategory.ArgsList); return paramNode; } else if (slashCount === 1) { const paramNode = ParameterNode.create(firstToken, ParameterCategory.Simple); @@ -2055,9 +2055,9 @@ export class Parser { let paramType = ParameterCategory.Simple; if (starCount === 1) { - paramType = ParameterCategory.VarArgList; + paramType = ParameterCategory.ArgsList; } else if (starCount === 2) { - paramType = ParameterCategory.VarArgDictionary; + paramType = ParameterCategory.KwargsDict; } const paramNode = ParameterNode.create(firstToken, paramType); if (paramName) { @@ -2067,7 +2067,7 @@ export class Parser { } if (allowAnnotations && this._consumeTokenIfType(TokenType.Colon)) { - paramNode.typeAnnotation = this._parseTypeAnnotation(paramType === ParameterCategory.VarArgList); + paramNode.typeAnnotation = this._parseTypeAnnotation(paramType === ParameterCategory.ArgsList); paramNode.typeAnnotation.parent = paramNode; extendRange(paramNode, paramNode.typeAnnotation); } diff --git a/packages/pyright-internal/src/tests/typePrinter.test.ts b/packages/pyright-internal/src/tests/typePrinter.test.ts index d9d5fb6e6..d128813b3 100644 --- a/packages/pyright-internal/src/tests/typePrinter.test.ts +++ b/packages/pyright-internal/src/tests/typePrinter.test.ts @@ -133,14 +133,14 @@ test('FunctionTypes', () => { }); FunctionType.addParameter(funcTypeA, { - category: ParameterCategory.VarArgList, + category: ParameterCategory.ArgsList, hasDeclaredType: true, type: AnyType.create(), name: 'args', }); FunctionType.addParameter(funcTypeA, { - category: ParameterCategory.VarArgDictionary, + category: ParameterCategory.KwargsDict, hasDeclaredType: true, type: AnyType.create(), name: 'kwargs', @@ -188,7 +188,7 @@ test('FunctionTypes', () => { const unpackedTs = TypeVarType.cloneForUnpacked(typeVarTupleTs); FunctionType.addParameter(funcTypeC, { - category: ParameterCategory.VarArgList, + category: ParameterCategory.ArgsList, hasDeclaredType: true, type: unpackedTs, name: 'args', From 50260659c3f756cde3d64b510fae3ba315a32423 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 22 May 2023 13:15:10 -0700 Subject: [PATCH 202/525] Fixed a couple of bugs in the method override consistency check that resulted in false positives when ParamSpecs were involved. This addresses https://github.com/microsoft/pyright/issues/5151. --- .../src/analyzer/typeEvaluator.ts | 24 ++++++--- .../src/localization/localize.ts | 1 + .../src/localization/package.nls.en-us.json | 1 + .../src/tests/samples/methodOverride3.py | 49 ++++++++++++++++++- .../src/tests/typeEvaluator3.test.ts | 2 +- 5 files changed, 67 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index a4d410764..015b09d3e 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24261,7 +24261,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions baseParam.name !== overrideParam.name ) { if (overrideParam.category === ParameterCategory.Simple) { - if (enforceParamNames) { + if (enforceParamNames && !baseParam.isNameSynthesized) { if (overrideParamDetails.params[i].source === ParameterSource.PositionOnly) { diag?.addMessage( Localizer.DiagnosticAddendum.overrideParamNamePositionOnly().format({ @@ -24285,13 +24285,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions i < overrideParamDetails.positionOnlyParamCount && i >= baseParamDetails.positionOnlyParamCount ) { - diag?.addMessage( - Localizer.DiagnosticAddendum.overrideParamNamePositionOnly().format({ - index: i + 1, - baseName: baseParam.name || '*', - }) - ); - canOverride = false; + if (!baseParam.isNameSynthesized) { + diag?.addMessage( + Localizer.DiagnosticAddendum.overrideParamNamePositionOnly().format({ + index: i + 1, + baseName: baseParam.name || '*', + }) + ); + canOverride = false; + } } else { const baseParamType = baseParamDetails.params[i].type; const overrideParamType = overrideParamDetails.params[i].type; @@ -24462,6 +24464,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + // Verify that one or the other method doesn't contain a ParamSpec. + if (baseMethod.details.paramSpec && !overrideMethod.details.paramSpec) { + diag?.addMessage(Localizer.DiagnosticAddendum.paramSpecMissingInOverride()); + canOverride = false; + } + // Now check the return type. const baseReturnType = getFunctionEffectiveReturnType(baseMethod); const overrideReturnType = getFunctionEffectiveReturnType(overrideMethod); diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index f107de0af..b75a502af 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -1248,6 +1248,7 @@ export namespace Localizer { new ParameterizedString<{ index: number; sourceType: string; destType: string }>( getRawString('DiagnosticAddendum.paramAssignment') ); + export const paramSpecMissingInOverride = () => getRawString('DiagnosticAddendum.paramSpecMissingInOverride'); export const paramType = () => new ParameterizedString<{ paramType: string }>(getRawString('DiagnosticAddendum.paramType')); export const privateImportFromPyTypedSource = () => diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 0beb22196..9cd2a276b 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -643,6 +643,7 @@ "overrideReturnType": "Return type mismatch: base method returns type \"{baseType}\", override returns type \"{overrideType}\"", "overrideType": "Base class defines type as \"{type}\"", "paramAssignment": "Parameter {index}: type \"{sourceType}\" cannot be assigned to type \"{destType}\"", + "paramSpecMissingInOverride": "ParamSpec parameters are missing in override method", "paramType": "Parameter type is \"{paramType}\"", "privateImportFromPyTypedSource": "Import from \"{module}\" instead", "propertyAccessFromProtocolClass": "A property defined within a protocol class cannot be accessed as a class variable", diff --git a/packages/pyright-internal/src/tests/samples/methodOverride3.py b/packages/pyright-internal/src/tests/samples/methodOverride3.py index 19a7305dc..64d768789 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride3.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride3.py @@ -3,7 +3,7 @@ # diagnostic rule. -from typing import Generic, Iterable, TypeVar +from typing import Generic, Iterable, ParamSpec, TypeVar class A1: @@ -109,3 +109,50 @@ class FSub2(F3[int], F1[int]): class FSub3(F2[int], F1[int]): pass + + +_P = ParamSpec("_P") +_R = TypeVar("_R") + + +class G1(Generic[_P, _R]): + def f(self, *args: _P.args, **kwargs: _P.kwargs) -> _R: + ... + + def g(self) -> _R: + ... + + +class G2(G1[_P, _R]): + # This should generate an error because f is missing ParamSpec parameters. + def f(self) -> _R: + ... + + def g(self, *args: _P.args, **kwargs: _P.kwargs) -> _R: + ... + + +class G3(G1[[], _R]): + def f(self) -> _R: + ... + + def g(self) -> _R: + ... + + +class G4(G1[[int, int], str]): + def f(self, a: int, b: int, /) -> str: + ... + + def g(self) -> str: + ... + + +class G5(G1[[], str]): + # This should generate an error because the specialized + # signature of f in the base class has no positional parameters. + def f(self, a: int, b: int) -> str: + ... + + def g(self) -> str: + ... diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index af19e9705..d55ac5966 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -811,7 +811,7 @@ test('MethodOverride3', () => { // Turn on errors. configOptions.diagnosticRuleSet.reportIncompatibleMethodOverride = 'error'; analysisResults = TestUtils.typeAnalyzeSampleFiles(['methodOverride3.py'], configOptions); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 5); }); test('MethodOverride4', () => { From 146156c5ccf7e82b2d6eb9ec65ea239b388d3bcd Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 22 May 2023 13:47:14 -0700 Subject: [PATCH 203/525] Fixed bug that led to the incorrect type evaluation of an async generator when an `await` operator was used within a nested expression. This addresses https://github.com/microsoft/pyright/issues/2322. --- .../src/analyzer/parseTreeUtils.ts | 16 ++++++++++++++++ .../src/analyzer/typeEvaluator.ts | 7 +++++-- .../src/tests/samples/generators14.py | 6 ++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts index 88d5cb66e..6f3db5c50 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts @@ -17,6 +17,7 @@ import { ArgumentCategory, ArgumentNode, AssignmentExpressionNode, + AwaitNode, CallNode, ClassNode, DecoratorNode, @@ -1082,6 +1083,21 @@ export function isSuiteEmpty(node: SuiteNode): boolean { return sawEllipsis; } +export function containsAwaitNode(node: ParseNode): boolean { + let foundAwait = false; + + class AwaitNodeWalker extends ParseTreeWalker { + override visitAwait(node: AwaitNode) { + foundAwait = true; + return false; + } + } + + const walker = new AwaitNodeWalker(); + walker.walk(node); + return foundAwait; +} + export function isMatchingExpression(reference: ExpressionNode, expression: ExpressionNode): boolean { if (reference.nodeType === ParseNodeType.Name) { if (expression.nodeType === ParseNodeType.Name) { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 015b09d3e..0c3b8a80f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13104,16 +13104,19 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let isIncomplete = false; let typeErrors = false; + // If any of the "for" clauses are marked async or any of the "if" clauses + // or the final expression contain an "await" operator anywhere within + // the expression, it is treated as an async generator. let isAsync = node.forIfNodes.some((comp) => { return ( (comp.nodeType === ParseNodeType.ListComprehensionFor && comp.isAsync) || (comp.nodeType === ParseNodeType.ListComprehensionIf && - comp.testExpression.nodeType === ParseNodeType.Await) + ParseTreeUtils.containsAwaitNode(comp.testExpression)) ); }); let type: Type = UnknownType.create(); - if (node.expression.nodeType === ParseNodeType.Await) { + if (ParseTreeUtils.containsAwaitNode(node.expression)) { isAsync = true; } diff --git a/packages/pyright-internal/src/tests/samples/generators14.py b/packages/pyright-internal/src/tests/samples/generators14.py index e9d5910b6..b923bc360 100644 --- a/packages/pyright-internal/src/tests/samples/generators14.py +++ b/packages/pyright-internal/src/tests/samples/generators14.py @@ -17,3 +17,9 @@ async def main() -> None: v4 = (await foo() for _ in [2, 3]) reveal_type(v4, expected_text="AsyncGenerator[int, None]") + + v5 = ((0, await foo()) for _ in [1, 2]) + reveal_type(v5, expected_text="AsyncGenerator[tuple[Literal[0], int], None]") + + v6 = (x for x in [1, 2] if (x, await foo())) + reveal_type(v6, expected_text="AsyncGenerator[int, None]") From 5779fe1605de3cdb6c74354eb37b850a73cfed79 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 22 May 2023 23:38:24 -0700 Subject: [PATCH 204/525] Addressed a performance issue that occurs when analyzing complex functions with deeply nested lambdas. This change adds a more sophisticated type caching mechanism that avoids emptying the cache when analyzing lambdas. This addresses https://github.com/microsoft/pyright/issues/4950. --- .../src/analyzer/typeCacheUtils.ts | 77 ++++++++++++++++--- .../src/analyzer/typeEvaluator.ts | 6 +- 2 files changed, 70 insertions(+), 13 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeCacheUtils.ts b/packages/pyright-internal/src/analyzer/typeCacheUtils.ts index 460a3f8fb..208207dc4 100644 --- a/packages/pyright-internal/src/analyzer/typeCacheUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeCacheUtils.ts @@ -22,7 +22,12 @@ interface SpeculativeEntry { interface SpeculativeContext { speculativeRootNode: ParseNode; entriesToUndo: SpeculativeEntry[]; - allowCacheRetention: boolean; + dependentType: Type | undefined; +} + +interface DependentType { + speculativeRootNode: ParseNode; + dependentType: Type; } export interface TypeResult { @@ -34,6 +39,7 @@ export interface SpeculativeTypeEntry { typeResult: TypeResult; expectedType: Type | undefined; incompleteGenerationCount: number; + dependentTypes?: DependentType[]; } // This class maintains a stack of "speculative type contexts". When @@ -41,23 +47,44 @@ export interface SpeculativeTypeEntry { // entries that were created within that context are removed from the // corresponding type caches because they are no longer valid. // Each type context also contains a map of "speculative types" that are -// contextually evaluated based on an "expected type". +// contextually evaluated based on an "expected type" and potentially +// one or more "dependent types". The "expected type" applies in cases +// where the speculative root node is being evaluated with bidirectional +// type inference. Dependent types apply in cases where the type of +// many subnodes depends on the expected type of a parent node, as in the +// case of lambda type inference. export class SpeculativeTypeTracker { private _speculativeContextStack: SpeculativeContext[] = []; private _speculativeTypeCache = new Map(); + private _activeDependentTypes: DependentType[] = []; - enterSpeculativeContext(speculativeRootNode: ParseNode, allowCacheRetention: boolean) { + enterSpeculativeContext(speculativeRootNode: ParseNode, dependentType: Type | undefined) { this._speculativeContextStack.push({ speculativeRootNode, entriesToUndo: [], - allowCacheRetention, + dependentType, }); + + // Retain a list of active dependent types. This information is already + // contained within the speculative context stack, but we retain a copy + // in this alternate form for performance reasons. + if (dependentType) { + this._activeDependentTypes.push({ + speculativeRootNode, + dependentType, + }); + } } leaveSpeculativeContext() { assert(this._speculativeContextStack.length > 0); const context = this._speculativeContextStack.pop(); + if (context?.dependentType) { + assert(this._activeDependentTypes.length > 0); + this._activeDependentTypes.pop(); + } + // Delete all of the speculative type cache entries // that were tracked in this context. context!.entriesToUndo.forEach((entry) => { @@ -114,9 +141,6 @@ export class SpeculativeTypeTracker { expectedType: Type | undefined ) { assert(this._speculativeContextStack.length > 0); - if (this._speculativeContextStack.some((context) => !context.allowCacheRetention)) { - return; - } const maxCacheEntriesPerNode = 8; let cacheEntries = this._speculativeTypeCache.get(node.id); @@ -150,7 +174,17 @@ export class SpeculativeTypeTracker { } // Add the new entry. - cacheEntries.push({ typeResult, expectedType, incompleteGenerationCount }); + const newEntry: SpeculativeTypeEntry = { + typeResult, + expectedType, + incompleteGenerationCount, + }; + + if (this._activeDependentTypes.length > 0) { + newEntry.dependentTypes = Array.from(this._activeDependentTypes); + } + + cacheEntries.push(newEntry); this._speculativeTypeCache.set(node.id, cacheEntries); } @@ -165,10 +199,14 @@ export class SpeculativeTypeTracker { if (entries) { for (const entry of entries) { if (!expectedType) { - if (!entry.expectedType) { + if (!entry.expectedType && this._dependentTypesMatch(entry)) { return entry; } - } else if (entry.expectedType && isTypeSame(expectedType, entry.expectedType)) { + } else if ( + entry.expectedType && + isTypeSame(expectedType, entry.expectedType) && + this._dependentTypesMatch(entry) + ) { return entry; } } @@ -177,4 +215,23 @@ export class SpeculativeTypeTracker { return undefined; } + + // Determines whether a cache entry matches the current set of + // active dependent types. If not, the cache entry can't be used + // in the current context. + private _dependentTypesMatch(entry: SpeculativeTypeEntry): boolean { + const cachedDependentTypes = entry.dependentTypes ?? []; + if (cachedDependentTypes.length !== this._activeDependentTypes.length) { + return false; + } + + return cachedDependentTypes.every((cachedDepType, index) => { + const activeDepType = this._activeDependentTypes[index]; + if (cachedDepType.speculativeRootNode !== activeDepType.speculativeRootNode) { + return false; + } + + return isTypeSame(cachedDepType.dependentType, activeDepType.dependentType); + }); + } } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 0c3b8a80f..7bee7d7ea 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13091,7 +13091,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isIncomplete = true; } }, - /* allowCacheRetention */ false + inferenceContext?.expectedType ); // Mark the function type as no longer being evaluated. @@ -19215,13 +19215,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function useSpeculativeMode( speculativeNode: ParseNode | undefined, callback: () => T, - allowCacheRetention = true + dependentType?: Type | undefined ) { if (!speculativeNode) { return callback(); } - speculativeTypeTracker.enterSpeculativeContext(speculativeNode, allowCacheRetention); + speculativeTypeTracker.enterSpeculativeContext(speculativeNode, dependentType); try { const result = callback(); From 0685e2771a7631c80c01fb6e68d88ec3147f1743 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 23 May 2023 15:07:55 -0700 Subject: [PATCH 205/525] Added perf optimization to stripLiteralValue method to handle large unions comprised only of literal values. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 7bee7d7ea..e31d2bb87 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1410,6 +1410,18 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } function stripLiteralValue(type: Type): Type { + // Handle the not-uncommon case where the type is a union that consists + // only of literal str or literal int values. + if (isUnion(type) && type.subtypes.length > 0) { + if ( + type.literalStrMap?.size === type.subtypes.length || + type.literalIntMap?.size === type.subtypes.length || + type.literalEnumMap?.size === type.subtypes.length + ) { + return stripLiteralValue(type.subtypes[0]); + } + } + return mapSubtypes(type, (subtype) => { if (isClass(subtype)) { if (subtype.literalValue !== undefined) { From f50393d9eaa7632ba9362ee5e5dbc8d205ac2f2a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 23 May 2023 15:09:53 -0700 Subject: [PATCH 206/525] Modified constraint solver to limit the number of subtypes in a union for the narrow bound of a type variable. Under certain rare circumstances, this can grow to a very large number and cause perf issues and hangs. This addresses https://github.com/microsoft/pyright/issues/5162. --- .../src/analyzer/constraintSolver.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index b6a67ae6f..1120be069 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -60,6 +60,11 @@ import { } from './typeUtils'; import { TypeVarContext } from './typeVarContext'; +// As we widen the narrow bound of a type variable, we may end up with +// many subtypes. For performance reasons, we need to cap this at some +// point. This constant determines the cap. +const maxSubtypeCountForTypeVarNarrowBound = 64; + // Assigns the source type to the dest type var in the type var context. If an existing // type is already associated with that type var name, it attempts to either widen or // narrow the type (depending on the value of the isContravariant parameter). The goal is @@ -582,9 +587,15 @@ export function assignTypeToTypeVar( objectType && isClassInstance(objectType) ) { - newNarrowTypeBound = combineTypes([curSolvedNarrowTypeBound, objectType]); + newNarrowTypeBound = combineTypes( + [curSolvedNarrowTypeBound, objectType], + maxSubtypeCountForTypeVarNarrowBound + ); } else { - newNarrowTypeBound = combineTypes([curSolvedNarrowTypeBound, adjSrcType]); + newNarrowTypeBound = combineTypes( + [curSolvedNarrowTypeBound, adjSrcType], + maxSubtypeCountForTypeVarNarrowBound + ); } } } From d2322ad605ac6bb243b1906642f157ab6a644ed6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 23 May 2023 16:09:04 -0700 Subject: [PATCH 207/525] Fixed a bug that caused an internal cache to be corrupted leading to a false positive error in specific circumstances. This addresses https://github.com/microsoft/pyright/issues/5159. --- packages/pyright-internal/src/analyzer/typeUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index ccb75b653..f2dbe470c 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1950,7 +1950,7 @@ export function isEffectivelyInstantiable(type: Type): boolean { export function convertToInstance(type: Type, includeSubclasses = true): Type { // See if we've already performed this conversion and cached it. - if (type.cached?.instanceType) { + if (type.cached?.instanceType && includeSubclasses) { return type.cached.instanceType; } @@ -2008,7 +2008,7 @@ export function convertToInstance(type: Type, includeSubclasses = true): Type { ); } - if (type !== result) { + if (type !== result && includeSubclasses) { // Cache the converted value for next time. if (!type.cached) { type.cached = {}; From 7e95fe8d9e50a13cb29a27fba7bf16c900a1c68f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 23 May 2023 17:06:23 -0700 Subject: [PATCH 208/525] Published 1.1.310 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 7c0436d06..3376afb18 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.309", + "version": "1.1.310", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index f0cf5148b..26c79aee8 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.309", + "version": "1.1.310", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.309", + "version": "1.1.310", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index bb6f3de5f..a3b17710e 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.309", + "version": "1.1.310", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 7d81e6ed6..351366a8f 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.309", + "version": "1.1.310", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.309", + "version": "1.1.310", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index e83646494..f30e55809 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.309", + "version": "1.1.310", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 1fbfb51b5..9649213cb 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.309", + "version": "1.1.310", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.309", + "version": "1.1.310", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 4ef3edff6..19f5a0caa 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.309", + "version": "1.1.310", "private": true, "license": "MIT", "author": { From 91a2ec2c2c8b33c6d3f8d87de19a12f31c5cf60a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 24 May 2023 08:49:21 -0700 Subject: [PATCH 209/525] Fixed regression in f-string tokenization that led to a false positive error when an escape character (backslash) is used with a carriage return or line feed within the non-expression part of an f-string. This addresses https://github.com/microsoft/pyright/issues/5167. --- .../pyright-internal/src/parser/tokenizer.ts | 20 +++++++++---------- .../src/tests/samples/fstring1.py | 6 ++++++ .../src/tests/tokenizer.test.ts | 10 ++++++++++ 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/parser/tokenizer.ts b/packages/pyright-internal/src/parser/tokenizer.ts index b09f36f2a..e8775c6e4 100644 --- a/packages/pyright-internal/src/parser/tokenizer.ts +++ b/packages/pyright-internal/src/parser/tokenizer.ts @@ -1564,17 +1564,17 @@ export class Tokenizer { ) { isInNamedUnicodeEscape = true; } else { - // If this is an f-string, the only escape that is allowed is for - // a single or double quote symbol. - if ( - !isFString || + // If this is an f-string, the only escapes that are allowed is for + // a single or double quote symbol or a newline/carriage return. + const isEscapedQuote = this._cs.getCurrentChar() === Char.SingleQuote || - this._cs.getCurrentChar() === Char.DoubleQuote - ) { - if ( - this._cs.getCurrentChar() === Char.CarriageReturn || - this._cs.getCurrentChar() === Char.LineFeed - ) { + this._cs.getCurrentChar() === Char.DoubleQuote; + const isEscapedNewLine = + this._cs.getCurrentChar() === Char.CarriageReturn || + this._cs.getCurrentChar() === Char.LineFeed; + + if (!isFString || isEscapedQuote || isEscapedNewLine) { + if (isEscapedNewLine) { if ( this._cs.getCurrentChar() === Char.CarriageReturn && this._cs.nextChar === Char.LineFeed diff --git a/packages/pyright-internal/src/tests/samples/fstring1.py b/packages/pyright-internal/src/tests/samples/fstring1.py index 275b632ec..96065e22a 100644 --- a/packages/pyright-internal/src/tests/samples/fstring1.py +++ b/packages/pyright-internal/src/tests/samples/fstring1.py @@ -140,3 +140,9 @@ def func1(x): f"x:{yield (lambda i: x * i)}" + +v1 = f"x \ +y" + +v2 = f'x \ +y' diff --git a/packages/pyright-internal/src/tests/tokenizer.test.ts b/packages/pyright-internal/src/tests/tokenizer.test.ts index ec4e5a58a..17208894f 100644 --- a/packages/pyright-internal/src/tests/tokenizer.test.ts +++ b/packages/pyright-internal/src/tests/tokenizer.test.ts @@ -652,6 +652,16 @@ test('Strings: f-string with single right brace', () => { assert.equal(fStringEndToken.length, 1); }); +test('Strings: f-string with new line escape', () => { + const t = new Tokenizer(); + const results = t.tokenize(`f'x \\\ny'`); + assert.equal(results.tokens.count, 3 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + assert.equal(results.tokens.getItemAt(1).type, TokenType.FStringMiddle); + assert.equal(results.tokens.getItemAt(2).type, TokenType.FStringEnd); +}); + test('Strings: f-string with escape in expression', () => { const t = new Tokenizer(); const results = t.tokenize(`f'hello { "\\t" }'`); From 0d24883416fdaffdad37feb648d2b189e246654f Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 24 May 2023 10:02:39 -0700 Subject: [PATCH 210/525] pull-pylance-with-pyright-1.1.310 (#5171) --- .../src/analyzer/docStringConversion.ts | 2 +- .../pyright-internal/src/common/uriParser.ts | 12 +++++ .../src/languageServerBase.ts | 8 ++- .../src/languageService/renameProvider.ts | 15 +++--- .../src/tests/docStringConversion.test.ts | 50 +++++++++++++++++++ .../src/tests/fourslash/fourslash.ts | 15 +++--- .../rename.function.untitledFile.fourslash.ts | 21 ++++++++ .../src/tests/harness/fourslash/testState.ts | 18 ++++--- .../pyright-internal/src/workspaceFactory.ts | 8 +-- 9 files changed, 123 insertions(+), 26 deletions(-) create mode 100644 packages/pyright-internal/src/tests/fourslash/rename.function.untitledFile.fourslash.ts diff --git a/packages/pyright-internal/src/analyzer/docStringConversion.ts b/packages/pyright-internal/src/analyzer/docStringConversion.ts index 4e545a340..d51c250ef 100644 --- a/packages/pyright-internal/src/analyzer/docStringConversion.ts +++ b/packages/pyright-internal/src/analyzer/docStringConversion.ts @@ -584,7 +584,7 @@ class DocStringConverter { // catch-all for styles except reST const hasArguments = - !line?.endsWith(':') && !line?.endsWith('::') && !!line.match(/^\s*.*?\w+(\s*\(\w+\))*\s*:\s*\w+/g); + !line?.endsWith(':') && !line?.endsWith('::') && !!line.match(/^\s*.*?\w+(\s*\(.*?\))*\s*:\s*\w+/g); // reSt params. Attempt to put directives lines into their own paragraphs. const restDirective = DirectivesExtraNewlineRegExp.test(line); //line.match(/^\s*:param/); diff --git a/packages/pyright-internal/src/common/uriParser.ts b/packages/pyright-internal/src/common/uriParser.ts index f98509aa5..dc7dd7a29 100644 --- a/packages/pyright-internal/src/common/uriParser.ts +++ b/packages/pyright-internal/src/common/uriParser.ts @@ -26,6 +26,18 @@ export class UriParser { return convertUriToPath(this.fs, uriString); } + isUntitled(uri: URI | string | undefined) { + if (!uri) { + return false; + } + + if (isString(uri)) { + uri = URI.parse(uri); + } + + return uri.scheme === 'untitled'; + } + isLocal(uri: URI | string | undefined) { if (!uri) { return false; diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 3ef33aae5..7e296a021 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -1066,6 +1066,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { token: CancellationToken ): Promise { const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const isUntitled = this.uriParser.isUntitled(params.textDocument.uri); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -1074,7 +1075,8 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return workspace.service.run((program) => { return new RenameProvider(program, filePath, position, token).canRenameSymbol( - workspace.kinds.includes(WellKnownWorkspaceKinds.Default) + workspace.kinds.includes(WellKnownWorkspaceKinds.Default), + isUntitled ); }, token); } @@ -1084,6 +1086,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { token: CancellationToken ): Promise { const { filePath, position } = this.uriParser.decodeTextDocumentPosition(params.textDocument, params.position); + const isUntitled = this.uriParser.isUntitled(params.textDocument.uri); const workspace = await this.getWorkspaceForFile(filePath); if (workspace.disableLanguageServices) { @@ -1093,7 +1096,8 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return workspace.service.run((program) => { return new RenameProvider(program, filePath, position, token).renameSymbol( params.newName, - workspace.kinds.includes(WellKnownWorkspaceKinds.Default) + workspace.kinds.includes(WellKnownWorkspaceKinds.Default), + isUntitled ); }, token); } diff --git a/packages/pyright-internal/src/languageService/renameProvider.ts b/packages/pyright-internal/src/languageService/renameProvider.ts index fb8b54820..655c7463d 100644 --- a/packages/pyright-internal/src/languageService/renameProvider.ts +++ b/packages/pyright-internal/src/languageService/renameProvider.ts @@ -33,7 +33,7 @@ export class RenameProvider { this._parseResults = this._program.getParseResults(this._filePath); } - canRenameSymbol(isDefaultWorkspace: boolean): Range | null { + canRenameSymbol(isDefaultWorkspace: boolean, isUntitled: boolean): Range | null { throwIfCancellationRequested(this._token); if (!this._parseResults) { return null; @@ -48,7 +48,8 @@ export class RenameProvider { this._program, this._filePath, referencesResult, - isDefaultWorkspace + isDefaultWorkspace, + isUntitled ); if (renameMode === 'none') { return null; @@ -58,7 +59,7 @@ export class RenameProvider { return convertTextRangeToRange(referencesResult.nodeAtOffset, this._parseResults.tokenizerOutput.lines); } - renameSymbol(newName: string, isDefaultWorkspace: boolean): WorkspaceEdit | null { + renameSymbol(newName: string, isDefaultWorkspace: boolean, isUntitled: boolean): WorkspaceEdit | null { throwIfCancellationRequested(this._token); if (!this._parseResults) { return null; @@ -74,7 +75,8 @@ export class RenameProvider { this._program, this._filePath, referencesResult, - isDefaultWorkspace + isDefaultWorkspace, + isUntitled ); switch (renameMode) { @@ -136,7 +138,8 @@ export class RenameProvider { program: ProgramView, filePath: string, referencesResult: ReferencesResult, - isDefaultWorkspace: boolean + isDefaultWorkspace: boolean, + isUntitled: boolean ) { const sourceFileInfo = program.getSourceFileInfo(filePath)!; @@ -159,7 +162,7 @@ export class RenameProvider { return 'singleFileMode'; } - if (referencesResult.declarations.every((d) => isUserCode(program.getSourceFileInfo(d.path)))) { + if (!isUntitled && referencesResult.declarations.every((d) => isUserCode(program.getSourceFileInfo(d.path)))) { return 'multiFileMode'; } diff --git a/packages/pyright-internal/src/tests/docStringConversion.test.ts b/packages/pyright-internal/src/tests/docStringConversion.test.ts index 403b53b94..ce1b747d0 100644 --- a/packages/pyright-internal/src/tests/docStringConversion.test.ts +++ b/packages/pyright-internal/src/tests/docStringConversion.test.ts @@ -658,6 +658,56 @@ Returns: _testConvertToMarkdown(docstring, markdown); }); +test('GoogleWithComplexTypes', () => { + const docstring = ` + Example function with types documented in the docstring. + + Args: + param1 (int|bool): The first parameter. + param2 (list[str] with others): The second parameter. + + Returns: + bool: The return value. True for success, False otherwise. +`; + + const markdown = ` +Example function with types documented in the docstring. + +Args: +    param1 (int|bool): The first parameter. +    param2 (list\\[str\\] with others): The second parameter. + +Returns: +    bool: The return value. True for success, False otherwise.`; + + _testConvertToMarkdown(docstring, markdown); +}); + +test('GoogleWithInvalidTypes', () => { + const docstring = ` + Example function with types documented in the docstring. + + Args: + param1: (int|bool))): The first parameter. + param2: (list[str] with others): The second parameter. + + Returns: + bool: The return value. True for success, False otherwise. +`; + + const markdown = ` +Example function with types documented in the docstring. + +Args: +    param1: (int|bool))): The first parameter. +param2: (list\\[str\\] with others): The second parameter. + +Returns: +    bool: The return value. True for success, False otherwise.`; + + _testConvertToMarkdown(docstring, markdown); +}); + test('FieldListDontAddLineBreaksToHeaders', () => { const docstring = ` Parameters diff --git a/packages/pyright-internal/src/tests/fourslash/fourslash.ts b/packages/pyright-internal/src/tests/fourslash/fourslash.ts index 6a91d21a5..429cfb9ee 100644 --- a/packages/pyright-internal/src/tests/fourslash/fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/fourslash.ts @@ -337,12 +337,15 @@ declare namespace _ { definitions: DocumentRange[]; }; }): void; - verifyRename(map: { - [marker: string]: { - newName: string; - changes: FileEditAction[]; - }; - }): void; + verifyRename( + map: { + [marker: string]: { + newName: string; + changes: FileEditAction[]; + }; + }, + isUntitled?: boolean + ): void; /* not tested yet paste(text: string): void; diff --git a/packages/pyright-internal/src/tests/fourslash/rename.function.untitledFile.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/rename.function.untitledFile.fourslash.ts new file mode 100644 index 000000000..47c714db9 --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/rename.function.untitledFile.fourslash.ts @@ -0,0 +1,21 @@ +/// + +// @filename: declare.py +//// def func(): +//// pass + +// @filename: Untitled-1.py +//// from declare import func +//// /*marker*/func() + +{ + helper.verifyRename( + { + marker: { + newName: 'func1', + changes: [], + }, + }, + true + ); +} diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index dc2954b84..a005bd1d1 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -1364,12 +1364,15 @@ export class TestState { } } - verifyRename(map: { - [marker: string]: { - newName: string; - changes: FileEditAction[]; - }; - }) { + verifyRename( + map: { + [marker: string]: { + newName: string; + changes: FileEditAction[]; + }; + }, + isUntitled = false + ) { this.analyze(); for (const marker of this.getMarkers()) { @@ -1385,7 +1388,8 @@ export class TestState { const position = this.convertOffsetToPosition(fileName, marker.position); const actual = new RenameProvider(this.program, fileName, position, CancellationToken.None).renameSymbol( expected.newName, - /* isDefaultWorkspace */ false + /* isDefaultWorkspace */ false, + isUntitled ); verifyWorkspaceEdit( diff --git a/packages/pyright-internal/src/workspaceFactory.ts b/packages/pyright-internal/src/workspaceFactory.ts index 6185025c7..81f3609f6 100644 --- a/packages/pyright-internal/src/workspaceFactory.ts +++ b/packages/pyright-internal/src/workspaceFactory.ts @@ -449,7 +449,7 @@ export class WorkspaceFactory { await bestInstance.isInitialized.promise; // If this best instance doesn't match the pythonPath, then we need to create a new one. - if (pythonPath && bestInstance.pythonPath !== pythonPath) { + if (pythonPath !== undefined && bestInstance.pythonPath !== pythonPath) { bestInstance = this._createImmutableCopy(bestInstance, pythonPath); } @@ -461,7 +461,7 @@ export class WorkspaceFactory { let bestInstance = this._getBestWorkspaceForFile(filePath, pythonPath); // If this best instance doesn't match the pythonPath, then we need to create a new one. - if (pythonPath && bestInstance.pythonPath !== pythonPath) { + if (pythonPath !== undefined && bestInstance.pythonPath !== pythonPath) { bestInstance = this._createImmutableCopy(bestInstance, pythonPath); } @@ -561,7 +561,7 @@ export class WorkspaceFactory { '', this._defaultWorkspacePath, pythonPath, - pythonPath ? WorkspacePythonPathKind.Immutable : WorkspacePythonPathKind.Mutable, + pythonPath !== undefined ? WorkspacePythonPathKind.Immutable : WorkspacePythonPathKind.Mutable, [WellKnownWorkspaceKinds.Default] ); } @@ -594,7 +594,7 @@ export class WorkspaceFactory { } // If there's any that match the python path, take the one with the longest path from those. - if (pythonPath) { + if (pythonPath !== undefined) { const matchingWorkspaces = workspaces.filter((w) => w.pythonPath === pythonPath); if (matchingWorkspaces.length > 0) { return this._getLongestPathWorkspace(matchingWorkspaces); From 16e2a8cda4ee4c763bb77bbd9adc4d2eca17c6b6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 24 May 2023 14:45:12 -0700 Subject: [PATCH 211/525] Fixed a bug that resulted in a crash in certain cases within the argument/parameter matching logic. This addresses https://github.com/microsoft/pyright/issues/5173. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index e31d2bb87..a8420ee6f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9312,6 +9312,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Build a map of parameters by name. const paramMap = new Map(); paramDetails.params.forEach((paramInfo) => { + assert(paramInfo !== undefined, 'paramInfo is undefined for param name map'); const param = paramInfo.param; if (param.name && param.category === ParameterCategory.Simple) { paramMap.set(param.name, { @@ -9372,11 +9373,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (argList.some((arg) => arg.argumentCategory === ArgumentCategory.UnpackedList)) { argList.forEach((arg) => { if (arg.name) { - const keywordParamIndex = paramDetails.params.findIndex( - (paramInfo) => + const keywordParamIndex = paramDetails.params.findIndex((paramInfo) => { + assert(paramInfo, 'paramInfo entry is undefined fork kwargs check'); + return ( paramInfo.param.name === arg.name!.value && paramInfo.param.category === ParameterCategory.Simple - ); + ); + }); // Is this a parameter that can be interpreted as either a keyword or a positional? // If so, we'll treat it as a keyword parameter in this case because it's being @@ -9713,6 +9716,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if ( positionalOnlyLimitIndex >= 0 && paramIndex < positionalOnlyLimitIndex && + paramIndex < paramDetails.params.length && paramDetails.params[paramIndex].param.category === ParameterCategory.ArgsList && !isParamSpec(paramDetails.params[paramIndex].param.type) ) { @@ -10143,6 +10147,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // already been matched, see if the type of that *args parameter is a variadic // type variable. If so, we'll preprocess those arguments and combine them // into a tuple. + assert( + paramDetails.argsIndex === undefined || paramDetails.argsIndex < paramDetails.params.length, + 'paramDetails.argsIndex params entry is invalid' + ); if ( paramDetails.argsIndex !== undefined && paramDetails.argsIndex >= 0 && From 87abc03f65e53cf4a94065d8ba0a905bfe7e1741 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 24 May 2023 19:06:38 -0700 Subject: [PATCH 212/525] Made `TextRange` (and range fields in `ParseNodeBase`) immutable. A couple of recent bugs would have been avoided with this. --- .../pyright-internal/src/analyzer/checker.ts | 4 +-- .../src/analyzer/commentUtils.ts | 34 +++++++++---------- .../pyright-internal/src/common/textRange.ts | 33 ++++++++++++------ .../pyright-internal/src/parser/parseNodes.ts | 21 +++++++----- 4 files changed, 54 insertions(+), 38 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 65be4430b..4b1ff016b 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -3280,8 +3280,8 @@ export class Checker extends ParseTreeWalker { const nameParts = decl.node.module.nameParts; if (nameParts.length > 0) { const multipartName = nameParts.map((np) => np.value).join('.'); - const textRange: TextRange = { start: nameParts[0].start, length: nameParts[0].length }; - TextRange.extend(textRange, nameParts[nameParts.length - 1]); + let textRange: TextRange = { start: nameParts[0].start, length: nameParts[0].length }; + textRange = TextRange.extend(textRange, nameParts[nameParts.length - 1]); this._fileInfo.diagnosticSink.addUnusedCodeWithTextRange( Localizer.Diagnostic.unaccessedSymbol().format({ name: multipartName }), textRange, diff --git a/packages/pyright-internal/src/analyzer/commentUtils.ts b/packages/pyright-internal/src/analyzer/commentUtils.ts index 70493a944..029ee3466 100644 --- a/packages/pyright-internal/src/analyzer/commentUtils.ts +++ b/packages/pyright-internal/src/analyzer/commentUtils.ts @@ -52,8 +52,10 @@ export function getFileLevelDirectives( const token = tokens.getItemAt(i); if (token.comments) { for (const comment of token.comments) { - const textRange: TextRange = { start: comment.start, length: comment.length }; - const value = _trimTextWithRange(comment.value, textRange); + const [value, textRange] = _trimTextWithRange(comment.value, { + start: comment.start, + length: comment.length, + }); const isCommentOnOwnLine = (): boolean => { const curTokenLineOffset = convertOffsetToPosition(comment.start, lines).character; @@ -167,11 +169,10 @@ function _parsePyrightComment( let rangeOffset = 0; for (const operand of operandList) { - const operandRange: TextRange = { + const [trimmedOperand, operandRange] = _trimTextWithRange(operand, { start: commentRange.start + commentPrefix.length + rangeOffset, length: operand.length, - }; - const trimmedOperand = _trimTextWithRange(operand, operandRange); + }); ruleSet = _parsePyrightOperand(trimmedOperand, operandRange, ruleSet, diagnostics); rangeOffset += operand.length + 1; @@ -188,11 +189,10 @@ function _parsePyrightOperand( diagnostics: CommentDiagnostic[] ) { const operandSplit = operand.split('='); - const ruleRange: TextRange = { + const [trimmedRule, ruleRange] = _trimTextWithRange(operandSplit[0], { start: operandRange.start, length: operandSplit[0].length, - }; - const trimmedRule = _trimTextWithRange(operandSplit[0], ruleRange); + }); // Handle basic directives "basic" and "strict". if (operandSplit.length === 1) { @@ -205,11 +205,10 @@ function _parsePyrightOperand( const boolRules = getBooleanDiagnosticRules(); const ruleValue = operandSplit.length > 0 ? operandSplit.slice(1).join('=') : ''; - const ruleValueRange: TextRange = { + const [trimmedRuleValue, ruleValueRange] = _trimTextWithRange(ruleValue, { start: operandRange.start + operandSplit[0].length + 1, length: ruleValue.length, - }; - const trimmedRuleValue = _trimTextWithRange(ruleValue, ruleValueRange); + }); if (diagLevelRules.find((r) => r === trimmedRule)) { const diagLevelValue = _parseDiagLevel(trimmedRuleValue); @@ -285,21 +284,22 @@ function _parseBoolSetting(value: string): boolean | undefined { // Calls "trim" on the text and adjusts the corresponding range // if characters are trimmed from the beginning or end. -function _trimTextWithRange(text: string, range: TextRange): string { +function _trimTextWithRange(text: string, range: TextRange): [string, TextRange] { assert(text.length === range.length); const value1 = text.trimStart(); + let updatedRange = range; + if (value1 !== text) { const delta = text.length - value1.length; - range.start += delta; - range.length -= delta; + updatedRange = { start: updatedRange.start + delta, length: updatedRange.length - delta }; } const value2 = value1.trimEnd(); if (value2 !== value1) { - range.length -= value1.length - value2.length; + updatedRange = { start: updatedRange.start, length: updatedRange.length - value1.length + value2.length }; } - assert(value2.length === range.length); - return value2; + assert(value2.length === updatedRange.length); + return [value2, updatedRange]; } diff --git a/packages/pyright-internal/src/common/textRange.ts b/packages/pyright-internal/src/common/textRange.ts index cd973fae9..1f8547f0c 100644 --- a/packages/pyright-internal/src/common/textRange.ts +++ b/packages/pyright-internal/src/common/textRange.ts @@ -8,8 +8,8 @@ */ export interface TextRange { - start: number; - length: number; + readonly start: number; + readonly length: number; } export namespace TextRange { @@ -53,23 +53,34 @@ export namespace TextRange { return overlaps(range, other.start) || overlaps(other, range.start); } - export function extend(range: TextRange, extension: TextRange | TextRange[] | undefined) { + export function extend(range: TextRange, extension: TextRange | TextRange[] | undefined): TextRange { + let result = range; + if (extension) { if (Array.isArray(extension)) { extension.forEach((r) => { - extend(range, r); + result = extend(result, r); }); } else { - if (extension.start < range.start) { - range.length += range.start - extension.start; - range.start = extension.start; + if (extension.start < result.start) { + result = { + start: extension.start, + length: result.length + result.start - extension.start, + }; } - if (getEnd(extension) > getEnd(range)) { - range.length += getEnd(extension) - getEnd(range); + const extensionEnd = getEnd(extension); + const resultEnd = getEnd(result); + if (extensionEnd > resultEnd) { + result = { + start: result.start, + length: result.length + extensionEnd - resultEnd, + }; } } } + + return result; } export function combine(ranges: TextRange[]): TextRange | undefined { @@ -77,9 +88,9 @@ export namespace TextRange { return undefined; } - const combinedRange = { start: ranges[0].start, length: ranges[0].length }; + let combinedRange = { start: ranges[0].start, length: ranges[0].length }; for (let i = 1; i < ranges.length; i++) { - extend(combinedRange, ranges[i]); + combinedRange = extend(combinedRange, ranges[i]); } return combinedRange; } diff --git a/packages/pyright-internal/src/parser/parseNodes.ts b/packages/pyright-internal/src/parser/parseNodes.ts index bf4db3392..a4b2a452a 100644 --- a/packages/pyright-internal/src/parser/parseNodes.ts +++ b/packages/pyright-internal/src/parser/parseNodes.ts @@ -130,8 +130,15 @@ export const enum ErrorExpressionCategory { MaxDepthExceeded, } -export interface ParseNodeBase extends TextRange { +export interface MutableTextRange { + start: number; + length: number; +} + +export interface ParseNodeBase extends MutableTextRange { readonly nodeType: ParseNodeType; + readonly start: number; + readonly length: number; // A unique ID given to each parse node. id: number; @@ -151,14 +158,12 @@ export function getNextNodeId() { } export function extendRange(node: ParseNodeBase, newRange: TextRange) { - if (newRange.start < node.start) { - node.length += node.start - newRange.start; - node.start = newRange.start; - } + const extendedRange = TextRange.extend(node, newRange); - if (TextRange.getEnd(newRange) > TextRange.getEnd(node)) { - node.length = TextRange.getEnd(newRange) - node.start; - } + // Temporarily allow writes to the range fields. + const mutableNode = node as MutableTextRange; + mutableNode.start = extendedRange.start; + mutableNode.length = extendedRange.length; } export type ParseNodeArray = (ParseNode | undefined)[]; From d7fe43bfbf8e94c4603d04515d3832453a34eabe Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 24 May 2023 20:19:55 -0700 Subject: [PATCH 213/525] Updated bug template to clarify that we're looking for a minimal, self-contained code sample in text form. --- .github/ISSUE_TEMPLATE/bug_report.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 933c58a77..538c593c7 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -21,7 +21,8 @@ Steps to reproduce the behavior. A clear and concise description of what you expected to happen. **Screenshots or Code** -If applicable, add screenshots or the text of the code (surrounded by triple back ticks) to help explain your problem. +If possible, provide a minimal, self-contained code sample (surrounded by triple back ticks) to demonstrate the issue. The code should define or imports all referenced symbols. + ```python def foo(self) -> str: return 3 From 344ba99d586a9ad08bd8d13a9952cc5377f2b75b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 24 May 2023 21:35:10 -0700 Subject: [PATCH 214/525] Fixed recent regression that led to a false negative when using `functools.partial` with bidirectional type inference. This addresses https://github.com/microsoft/pyright/issues/5164. --- .../src/analyzer/constructors.ts | 297 ++++++++++-------- .../src/tests/samples/partial1.py | 16 +- .../src/tests/typeEvaluator1.test.ts | 2 +- 3 files changed, 189 insertions(+), 126 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index c192a8616..4f09b8a76 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -20,7 +20,14 @@ import { getFileInfo } from './analyzerNodeInfo'; import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; import { applyConstructorTransform, hasConstructorTransform } from './constructorTransform'; import { getTypeVarScopesForNode } from './parseTreeUtils'; -import { CallResult, FunctionArgument, MemberAccessFlags, TypeEvaluator, TypeResult } from './typeEvaluatorTypes'; +import { + CallResult, + ClassMemberLookup, + FunctionArgument, + MemberAccessFlags, + TypeEvaluator, + TypeResult, +} from './typeEvaluatorTypes'; import { ClassMemberLookupFlags, InferenceContext, @@ -96,177 +103,219 @@ export function validateConstructorArguments( type ); - let returnType: Type | undefined; - let validatedArgExpressions = false; - let argumentErrors = false; - let isTypeIncomplete = false; - const overloadsUsedForCall: FunctionType[] = []; - let newMethodReturnType: Type | undefined; const useConstructorTransform = hasConstructorTransform(type); // If there is a constructor transform, evaluate all arguments speculatively // so we can later re-evaluate them in the context of the transform. - evaluator.useSpeculativeMode(useConstructorTransform ? errorNode : undefined, () => { - // Validate __new__ if it is present. - if (newMethodTypeResult) { - // Use speculative mode for arg expressions because we don't know whether - // we'll need to re-evaluate these expressions later for __init__. - const newCallResult = validateNewMethod( + const returnResult = evaluator.useSpeculativeMode(useConstructorTransform ? errorNode : undefined, () => { + return validateNewAndInitMethods( + evaluator, + errorNode, + argList, + type, + skipUnknownArgCheck, + inferenceContext, + newMethodTypeResult + ); + }); + + let validatedArgExpressions = !useConstructorTransform || returnResult.argumentErrors; + + // Apply a constructor transform if applicable. + if (useConstructorTransform) { + if (returnResult.argumentErrors) { + // If there were errors when validating the __new__ and __init__ methods, + // we need to re-evaluate the arguments to generate error messages because + // we previously evaluated them speculatively. + validateNewAndInitMethods( evaluator, errorNode, argList, type, skipUnknownArgCheck, inferenceContext, - newMethodTypeResult, - /* useSpeculativeModeForArgs */ true + newMethodTypeResult ); - if (newCallResult.argumentErrors) { - argumentErrors = true; - } else { - appendArray(overloadsUsedForCall, newCallResult.overloadsUsedForCall); + validatedArgExpressions = true; + } else if (returnResult.returnType) { + const transformed = applyConstructorTransform(evaluator, errorNode, argList, type, { + argumentErrors: returnResult.argumentErrors, + returnType: returnResult.returnType, + isTypeIncomplete: !!returnResult.isTypeIncomplete, + }); + + returnResult.returnType = transformed.returnType; + + if (transformed.isTypeIncomplete) { + returnResult.isTypeIncomplete = true; } - if (newCallResult.isTypeIncomplete) { - isTypeIncomplete = true; + if (transformed.argumentErrors) { + returnResult.argumentErrors = true; } - newMethodReturnType = newCallResult.returnType; + validatedArgExpressions = true; } + } - if (!newMethodReturnType) { - newMethodReturnType = ClassType.cloneAsInstance(type); - } else if (!isNever(newMethodReturnType)) { - if (!isClassInstance(newMethodReturnType)) { - // If the __new__ method returns something other than an object or - // NoReturn, we'll ignore its return type. - newMethodReturnType = ClassType.cloneAsInstance(type); + // If we weren't able to validate the args, analyze the expressions here + // to mark symbols referenced and report expression evaluation errors. + if (!validatedArgExpressions) { + argList.forEach((arg) => { + if (arg.valueExpression && !evaluator.isSpeculativeModeInUse(arg.valueExpression)) { + evaluator.getTypeOfExpression(arg.valueExpression); } - } + }); + } - let initMethodTypeResult: TypeResult | undefined; + return returnResult; +} - // Validate __init__ if it's present. Skip if the __new__ method produced errors. - if ( - !argumentErrors && - !isNever(newMethodReturnType) && - !shouldSkipInitEvaluation(evaluator, type, newMethodReturnType) - ) { - // If the __new__ method returned the same type as the class it's constructing - // but didn't supply solved type arguments, we'll ignore its specialized return - // type and rely on the __init__ method to supply the type arguments instead. - let initMethodBindToType = newMethodReturnType; - if (isPartlyUnknown(initMethodBindToType)) { - initMethodBindToType = ClassType.cloneAsInstance(type); - } +function validateNewAndInitMethods( + evaluator: TypeEvaluator, + errorNode: ExpressionNode, + argList: FunctionArgument[], + type: ClassType, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined, + newMethodTypeResult: ClassMemberLookup | undefined +): CallResult { + let returnType: Type | undefined; + let validatedArgExpressions = false; + let argumentErrors = false; + let isTypeIncomplete = false; + const overloadsUsedForCall: FunctionType[] = []; + let newMethodReturnType: Type | undefined; - // Determine whether the class overrides the object.__init__ method. - initMethodTypeResult = evaluator.getTypeOfObjectMember( - errorNode, - ClassType.cloneAsInstance(initMethodBindToType), - '__init__', - { method: 'get' }, - /* diag */ undefined, - MemberAccessFlags.SkipObjectBaseClass | MemberAccessFlags.SkipAttributeAccessOverride - ); + // Validate __new__ if it is present. + if (newMethodTypeResult) { + // Use speculative mode for arg expressions because we don't know whether + // we'll need to re-evaluate these expressions later for __init__. + const newCallResult = validateNewMethod( + evaluator, + errorNode, + argList, + type, + skipUnknownArgCheck, + inferenceContext, + newMethodTypeResult, + /* useSpeculativeModeForArgs */ true + ); - // Validate __init__ if it's present. - if (initMethodTypeResult) { - const initCallResult = validateInitMethod( - evaluator, - errorNode, - argList, - initMethodBindToType, - skipUnknownArgCheck, - inferenceContext, - initMethodTypeResult.type - ); + if (newCallResult.argumentErrors) { + argumentErrors = true; + } else { + appendArray(overloadsUsedForCall, newCallResult.overloadsUsedForCall); + } - if (initCallResult.argumentErrors) { - argumentErrors = true; - } else { - overloadsUsedForCall.push(...initCallResult.overloadsUsedForCall); - } + if (newCallResult.isTypeIncomplete) { + isTypeIncomplete = true; + } - if (initCallResult.isTypeIncomplete) { - isTypeIncomplete = true; - } + newMethodReturnType = newCallResult.returnType; + } - returnType = initCallResult.returnType; - validatedArgExpressions = true; - skipUnknownArgCheck = true; - } + if (!newMethodReturnType) { + newMethodReturnType = ClassType.cloneAsInstance(type); + } else if (!isNever(newMethodReturnType)) { + if (!isClassInstance(newMethodReturnType)) { + // If the __new__ method returns something other than an object or + // NoReturn, we'll ignore its return type. + newMethodReturnType = ClassType.cloneAsInstance(type); } + } - if (!validatedArgExpressions && newMethodTypeResult) { - // If we skipped the __init__ method and the __new__ method was evaluated only - // speculatively, evaluate it non-speculatively now so we can report errors. - if (!evaluator.isSpeculativeModeInUse(errorNode)) { - validateNewMethod( - evaluator, - errorNode, - argList, - type, - skipUnknownArgCheck, - inferenceContext, - newMethodTypeResult, - /* useSpeculativeModeForArgs */ false - ); - } + let initMethodTypeResult: TypeResult | undefined; - validatedArgExpressions = true; - returnType = newMethodReturnType; + // Validate __init__ if it's present. Skip if the __new__ method produced errors. + if ( + !argumentErrors && + !isNever(newMethodReturnType) && + !shouldSkipInitEvaluation(evaluator, type, newMethodReturnType) + ) { + // If the __new__ method returned the same type as the class it's constructing + // but didn't supply solved type arguments, we'll ignore its specialized return + // type and rely on the __init__ method to supply the type arguments instead. + let initMethodBindToType = newMethodReturnType; + if (isPartlyUnknown(initMethodBindToType)) { + initMethodBindToType = ClassType.cloneAsInstance(type); } - // If the class doesn't override object.__new__ or object.__init__, use the - // fallback constructor type evaluation for the `object` class. - if (!newMethodTypeResult && !initMethodTypeResult) { - const callResult = validateFallbackConstructorCall(evaluator, errorNode, argList, type, inferenceContext); + // Determine whether the class overrides the object.__init__ method. + initMethodTypeResult = evaluator.getTypeOfObjectMember( + errorNode, + ClassType.cloneAsInstance(initMethodBindToType), + '__init__', + { method: 'get' }, + /* diag */ undefined, + MemberAccessFlags.SkipObjectBaseClass | MemberAccessFlags.SkipAttributeAccessOverride + ); + + // Validate __init__ if it's present. + if (initMethodTypeResult) { + const initCallResult = validateInitMethod( + evaluator, + errorNode, + argList, + initMethodBindToType, + skipUnknownArgCheck, + inferenceContext, + initMethodTypeResult.type + ); - if (callResult.argumentErrors) { + if (initCallResult.argumentErrors) { argumentErrors = true; } else { - appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); + overloadsUsedForCall.push(...initCallResult.overloadsUsedForCall); } - if (callResult.isTypeIncomplete) { + if (initCallResult.isTypeIncomplete) { isTypeIncomplete = true; } - returnType = callResult.returnType ?? UnknownType.create(); + returnType = initCallResult.returnType; + validatedArgExpressions = true; + skipUnknownArgCheck = true; } - }); + } - // Apply a constructor transform if applicable. - if (!argumentErrors && returnType && useConstructorTransform) { - const transformed = applyConstructorTransform(evaluator, errorNode, argList, type, { - argumentErrors, - returnType, - isTypeIncomplete, - }); + if (!validatedArgExpressions && newMethodTypeResult) { + // If we skipped the __init__ method and the __new__ method was evaluated only + // speculatively, evaluate it non-speculatively now so we can report errors. + if (!evaluator.isSpeculativeModeInUse(errorNode)) { + validateNewMethod( + evaluator, + errorNode, + argList, + type, + skipUnknownArgCheck, + inferenceContext, + newMethodTypeResult, + /* useSpeculativeModeForArgs */ false + ); + } - returnType = transformed.returnType; + validatedArgExpressions = true; + returnType = newMethodReturnType; + } - if (transformed.isTypeIncomplete) { - isTypeIncomplete = true; - } + // If the class doesn't override object.__new__ or object.__init__, use the + // fallback constructor type evaluation for the `object` class. + if (!newMethodTypeResult && !initMethodTypeResult) { + const callResult = validateFallbackConstructorCall(evaluator, errorNode, argList, type, inferenceContext); - if (transformed.argumentErrors) { + if (callResult.argumentErrors) { argumentErrors = true; + } else { + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); } - validatedArgExpressions = true; - } + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } - // If we weren't able to validate the args, analyze the expressions here - // to mark symbols referenced and report expression evaluation errors. - if (!validatedArgExpressions) { - argList.forEach((arg) => { - if (arg.valueExpression && !evaluator.isSpeculativeModeInUse(arg.valueExpression)) { - evaluator.getTypeOfExpression(arg.valueExpression); - } - }); + returnType = callResult.returnType ?? UnknownType.create(); } return { argumentErrors, returnType, isTypeIncomplete, overloadsUsedForCall }; diff --git a/packages/pyright-internal/src/tests/samples/partial1.py b/packages/pyright-internal/src/tests/samples/partial1.py index 151e894f2..e9180f4b3 100644 --- a/packages/pyright-internal/src/tests/samples/partial1.py +++ b/packages/pyright-internal/src/tests/samples/partial1.py @@ -1,9 +1,10 @@ # This sample tests the functools.partial support. from functools import partial -from typing import TypeVar +from typing import Callable, Protocol, Self, TypeVar _T1 = TypeVar("_T1") +_T2 = TypeVar("_T2", contravariant=True) def func1(): @@ -161,3 +162,16 @@ def func8(a: int, name: str, **kwargs: int): p8_1(3, "", 5) p8_1(3, "", foo=4, bar=5) + + +class Partial(Protocol[_T2]): + def __new__(cls, __func: Callable[..., _T2]) -> Self: + ... + + +def func9() -> int: + ... + + +# This should generate an error. +x: Partial[str] = partial(func9) diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 24f4dc185..211c72ac2 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1425,7 +1425,7 @@ test('Descriptor2', () => { test('Partial1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['partial1.py']); - TestUtils.validateResults(analysisResults, 17); + TestUtils.validateResults(analysisResults, 18); }); test('Partial2', () => { From ebf474432a1f2c218f635b1269c003b9b0f37d53 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 25 May 2023 14:08:36 -0700 Subject: [PATCH 215/525] Fixed a bug that led to (temporary) sporadic `reportUnnecessaryTypeIgnoreComment` errors. This addresses https://github.com/microsoft/pyright/issues/5179. --- packages/pyright-internal/src/analyzer/sourceFile.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 5327eca43..9673926c2 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -373,7 +373,13 @@ export class SourceFile { const unnecessaryTypeIgnoreDiags: Diagnostic[] = []; - if (this._diagnosticRuleSet.reportUnnecessaryTypeIgnoreComment !== 'none') { + // Skip this step if type checking is needed. Otherwise we'll likely produce + // incorrect (false positive) reportUnnecessaryTypeIgnoreComment diagnostics + // until checking is performed on this file. + if ( + this._diagnosticRuleSet.reportUnnecessaryTypeIgnoreComment !== 'none' && + !this._writableData.isCheckingNeeded + ) { const diagCategory = convertLevelToCategory(this._diagnosticRuleSet.reportUnnecessaryTypeIgnoreComment); const prefilteredErrorList = prefilteredDiagList.filter( From 6e6c3664b30e78de5671e1fdcc5f7bb4c8310629 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 25 May 2023 18:36:11 -0700 Subject: [PATCH 216/525] Added documentation for pyright's handling of constructor calls and how this differs from mypy. --- docs/mypy-comparison.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/mypy-comparison.md b/docs/mypy-comparison.md index cc4c3d839..7cb9a88bb 100644 --- a/docs/mypy-comparison.md +++ b/docs/mypy-comparison.md @@ -280,6 +280,13 @@ Mypy infers the type of `self` and `cls` parameters in methods but otherwise doe Pyright implements several parameter type inference techniques that improve type checking and language service features in the absence of explicit parameter type annotations. For details, refer to [this documentation](type-inference.md#parameter-type-inference). +### Constructor Calls + +When pyright evaluates a call to a constructor, it attempts to follow the runtime behavior as closely as possible. At runtime, when a constructor is called, it invokes the `__call__` method of the metaclass. Most classes use `type` as their metaclass. (Even when a different metaclasses is used, it typically does not override `type.__call__`.) The `type.__call__` method calls the `__new__` method for the class and passes all of the arguments (both positional and keyword) that were passed to the constructor call. If the `__new__` method returns an instance of the class (or a child class), `type.__call__` then calls the `__init__` method on the class. Pyright follows this same flow for evaluating the type of a constructor call. If a custom metaclass is present, pyright evaluates its `__call__` method to determine whether it returns an instance of the class. If not, it assumes that the metaclass has custom behavior that overrides `type.__call__`. Likewise, if a class provides a `__new__` method that returns a type other than the class being constructed (or a child class thereof), it assumes that `__init__` will not be called. + +By comparison, mypy first evaluates the `__init__` method if present, and it ignores the annotated return type of the `__new__` method. + + ### Constraint Solver Behaviors When evaluating a call expression that invokes a generic class constructor or a generic function, a type checker performs a process called “constraint solving” to solve the type variables found within the target function signature. The solved type variables are then applied to the return type of that function to determine the final type of the call expression. This process is called “constraint solving” because it takes into account various constraints that are specified for each type variable. These constraints include variance rules and type variable bounds. From e102fe755c9a87977f4c3202ca5548424193e28e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 27 May 2023 08:49:40 -0600 Subject: [PATCH 217/525] Fixed a recent regression that affected a function that returned a generic `Callable` that used `type[T]` rather than `T` in the type annotation. This addresses https://github.com/microsoft/pyright/issues/5188. --- .../src/analyzer/typeUtils.ts | 3 +- .../src/tests/samples/genericTypes113.py | 32 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes113.py diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index f2dbe470c..e7b020e9a 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3632,7 +3632,8 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { let useDefaultOrUnknown = false; if (this._options.unknownIfNotFound && !this._typeVarContext.hasSolveForScope(WildcardTypeVarScopeId)) { const exemptTypeVars = this._options.unknownExemptTypeVars ?? []; - if (!exemptTypeVars.some((t) => isTypeSame(t, typeVar))) { + const typeVarInstance = TypeBase.isInstance(typeVar) ? typeVar : TypeVarType.cloneAsInstance(typeVar); + if (!exemptTypeVars.some((t) => isTypeSame(t, typeVarInstance))) { useDefaultOrUnknown = true; } } else if (this._options.applyInScopePlaceholders && typeVar.isInScopePlaceholder) { diff --git a/packages/pyright-internal/src/tests/samples/genericTypes113.py b/packages/pyright-internal/src/tests/samples/genericTypes113.py new file mode 100644 index 000000000..da004047d --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes113.py @@ -0,0 +1,32 @@ +# This sample tests the case where a generic function returns a generic +# Callable. There are certain cases where we want the type variables in +# the return type to be rescoped to the return callable. + +from typing import Callable, TypeVar + + +_T1 = TypeVar("_T1") + + +def func1(a: _T1 | None) -> Callable[[_T1], _T1]: + ... + + +v1 = func1(None) +reveal_type(v1, expected_text="(Unknown) -> Unknown") + + +def func2(a: None) -> Callable[[_T1], _T1]: + ... + + +v2 = func2(None) +reveal_type(v2, expected_text="(_T1@func2) -> _T1@func2") + + +def func3(a: None) -> Callable[[type[_T1]], type[_T1]]: + ... + + +v3 = func3(None) +reveal_type(v3, expected_text="(Type[_T1@func3]) -> Type[_T1@func3]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 9776f6bbc..825626123 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1097,6 +1097,12 @@ test('GenericTypes112', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes113', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes113.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 59f8f38cfc2282121c08c658c7bada0f3621c19f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 27 May 2023 09:20:44 -0600 Subject: [PATCH 218/525] Fixed a recent regression that resulted in the incorrect evaluation of the `value` field for an `Enum`. This addresses https://github.com/microsoft/pyright/issues/5187. --- packages/pyright-internal/src/analyzer/enums.ts | 2 +- packages/pyright-internal/src/tests/samples/enums1.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index 7ff48fb94..d6c3cfdd8 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -411,7 +411,7 @@ export function getTypeOfEnumMember( // The type wasn't associated with a particular enum literal, so return // a union of all possible enum literals. const literalValues = enumerateLiteralsForType(evaluator, classType); - if (literalValues) { + if (literalValues && literalValues.length > 0) { return { type: combineTypes( literalValues.map((literalClass) => { diff --git a/packages/pyright-internal/src/tests/samples/enums1.py b/packages/pyright-internal/src/tests/samples/enums1.py index e56e27b8c..431e8473e 100644 --- a/packages/pyright-internal/src/tests/samples/enums1.py +++ b/packages/pyright-internal/src/tests/samples/enums1.py @@ -158,3 +158,8 @@ class TestEnum10(Enum, metaclass=CustomEnumMeta1): reveal_type(te9_A._value_, expected_text="Any") reveal_type(te9_A.name, expected_text="Literal['A']") reveal_type(te9_A._name_, expected_text="Literal['A']") + + +def func2(e: type[Enum]): + values = {v.value for v in e} + reveal_type(values, expected_text="set[Any]") From 6a43d966de85ec6331c66f5641585d0340e6fc40 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 27 May 2023 13:52:32 -0600 Subject: [PATCH 219/525] Fixed a bug that led to an unsolved type variable within a union producing an `Unknown` type in some cases. This triggers false positive errors in strict mode. This addresses https://github.com/microsoft/pyright/issues/5183. --- packages/pyright-internal/src/analyzer/typeUtils.ts | 2 +- .../src/tests/samples/listComprehension9.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index e7b020e9a..665f1be38 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3706,7 +3706,7 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { const typeVarType = signatureContext.getTypeVarType(preTransform); // Did the TypeVar remain unsolved? - if (!typeVarType) { + if (!typeVarType || (isTypeVar(typeVarType) && typeVarType.isInScopePlaceholder)) { // If the TypeVar was not transformed, then it was unsolved, // and we'll eliminate it. if (preTransform === postTransform) { diff --git a/packages/pyright-internal/src/tests/samples/listComprehension9.py b/packages/pyright-internal/src/tests/samples/listComprehension9.py index 35d9245f9..e75fe8ae4 100644 --- a/packages/pyright-internal/src/tests/samples/listComprehension9.py +++ b/packages/pyright-internal/src/tests/samples/listComprehension9.py @@ -1,6 +1,8 @@ # This sample tests the case where a comprehension requires bidirectional # type inference for correct analysis. +# pyright: strict + from typing import TypedDict @@ -10,3 +12,11 @@ class X(TypedDict): xs: list[X] = [] xs.extend({"x": c} for c in "abc") + + +def func1(data: dict[str, int]): + sum(data.get(k, 0) for k in "") + + +def func2(data: dict[str, int]): + sum([data.get(k, 0) for k in ""]) From e087691d91a9c2c7d2c518e91412869914bf32dd Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 27 May 2023 21:33:46 -0600 Subject: [PATCH 220/525] Simplified some code in the `__new__` code validation logic. --- .../src/analyzer/constructors.ts | 45 +++++-------------- 1 file changed, 12 insertions(+), 33 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 4f09b8a76..ac8ee5a1d 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -40,7 +40,6 @@ import { isTupleClass, lookUpClassMember, mapSubtypes, - requiresSpecialization, specializeTupleClass, transformPossibleRecursiveTypeAlias, } from './typeUtils'; @@ -372,42 +371,22 @@ function validateNewMethod( if (overloadsUsedForCall.length === 0) { overloadsUsedForCall.push(...callResult.overloadsUsedForCall); } + } - // If the constructor returned an object whose type matches the class of - // the original type being constructed, use the return type in case it was - // specialized. If it doesn't match, we'll fall back on the assumption that - // the constructed type is an instance of the class type. We need to do this - // in cases where we're inferring the return type based on a call to - // super().__new__(). - if (newReturnType) { - if (isClassInstance(newReturnType) && ClassType.isSameGenericClass(newReturnType, type)) { - // If the specialized return type derived from the __init__ - // method is "better" than the return type provided by the - // __new__ method (where "better" means that the type arguments - // are all known), stick with the __init__ result. - if (!isPartlyUnknown(newReturnType) && !requiresSpecialization(newReturnType)) { - // Special-case the 'tuple' type specialization to use - // the homogenous arbitrary-length form. - if ( - isClassInstance(newReturnType) && - ClassType.isTupleClass(newReturnType) && - !newReturnType.tupleTypeArguments && - newReturnType.typeArguments && - newReturnType.typeArguments.length === 1 - ) { - newReturnType = specializeTupleClass(newReturnType, [ - { type: newReturnType.typeArguments[0], isUnbounded: true }, - ]); - } - } + if (newReturnType) { + // Special-case the 'tuple' type specialization to use the homogenous + // arbitrary-length form. + if (isClassInstance(newReturnType) && isTupleClass(newReturnType) && !newReturnType.tupleTypeArguments) { + if (newReturnType.typeArguments && newReturnType.typeArguments.length === 1) { + newReturnType = specializeTupleClass(newReturnType, [ + { type: newReturnType.typeArguments[0], isUnbounded: true }, + ]); } - } - } - if (!newReturnType) { + newReturnType = applyExpectedTypeForTupleConstructor(newReturnType, inferenceContext); + } + } else { newReturnType = applyExpectedTypeForConstructor(evaluator, type, inferenceContext, typeVarContext); - } else if (isClassInstance(newReturnType) && isTupleClass(newReturnType) && !newReturnType.tupleTypeArguments) { - newReturnType = applyExpectedTypeForTupleConstructor(newReturnType, inferenceContext); } return { argumentErrors, returnType: newReturnType, isTypeIncomplete, overloadsUsedForCall }; From 685e8768bf07981a898a8a7d0bd9d1e42cd4c229 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 28 May 2023 08:49:04 -0600 Subject: [PATCH 221/525] Fixed a bug that allowed unsolved type parameters to "leak" from a `__new__` call in some cases. This addresses https://github.com/microsoft/pyright/issues/5190. --- .../src/analyzer/constructors.ts | 9 +++- .../src/tests/samples/constructor17.py | 46 +++++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 6 +++ 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/constructor17.py diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index ac8ee5a1d..1abc6d4e1 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -220,8 +220,13 @@ function validateNewAndInitMethods( } else if (!isNever(newMethodReturnType)) { if (!isClassInstance(newMethodReturnType)) { // If the __new__ method returns something other than an object or - // NoReturn, we'll ignore its return type. - newMethodReturnType = ClassType.cloneAsInstance(type); + // NoReturn, we'll ignore its return type and assume that it + // returns Self. + newMethodReturnType = applySolvedTypeVars( + ClassType.cloneAsInstance(type), + new TypeVarContext(getTypeVarScopeId(type)), + { unknownIfNotFound: true } + ) as ClassType; } } diff --git a/packages/pyright-internal/src/tests/samples/constructor17.py b/packages/pyright-internal/src/tests/samples/constructor17.py new file mode 100644 index 000000000..88e8069c3 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/constructor17.py @@ -0,0 +1,46 @@ +# This sample tests the case where a generic class constructor doesn't +# allow for the solving of a class-scoped type variable. In this case, +# the type argument should be Unknown. + +from typing import Generic, TypeVar + +T = TypeVar("T") + + +class A(Generic[T]): + def __new__(cls, *args, **kwargs): + ... + + +class B(Generic[T]): + def __init__(self): + ... + + +class C(Generic[T]): + def __new__(cls, *args, **kwargs): + ... + + def __init__(self): + ... + + +class D(Generic[T]): + def __new__(cls, *args, **kwargs): + ... + + def __init__(self, a: T): + ... + + +a = A(1) +reveal_type(a, expected_text="A[Unknown]") + +b = B() +reveal_type(b, expected_text="B[Unknown]") + +c = C() +reveal_type(c, expected_text="C[Unknown]") + +d = D(1) +reveal_type(d, expected_text="D[int]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index d55ac5966..8c43e7fbd 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1398,6 +1398,12 @@ test('Constructor16', () => { TestUtils.validateResults(analysisResults, 2); }); +test('Constructor17', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor17.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('InconsistentConstructor1', () => { const configOptions = new ConfigOptions('.'); From 3bd10b62b87a438de7af5c30a419efd3ccad2e13 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 28 May 2023 11:42:09 -0600 Subject: [PATCH 222/525] Added another test case. Removed some unnecessary code in constructor evaluation logic. --- .../src/analyzer/constructors.ts | 22 +++++++++---------- .../src/tests/samples/constructor17.py | 7 ++++++ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 1abc6d4e1..e512aa734 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -217,17 +217,15 @@ function validateNewAndInitMethods( if (!newMethodReturnType) { newMethodReturnType = ClassType.cloneAsInstance(type); - } else if (!isNever(newMethodReturnType)) { - if (!isClassInstance(newMethodReturnType)) { - // If the __new__ method returns something other than an object or - // NoReturn, we'll ignore its return type and assume that it - // returns Self. - newMethodReturnType = applySolvedTypeVars( - ClassType.cloneAsInstance(type), - new TypeVarContext(getTypeVarScopeId(type)), - { unknownIfNotFound: true } - ) as ClassType; - } + } else if (!isNever(newMethodReturnType) && !isClassInstance(newMethodReturnType)) { + // If the __new__ method returns something other than an object or + // NoReturn, we'll ignore its return type and assume that it + // returns Self. + newMethodReturnType = applySolvedTypeVars( + ClassType.cloneAsInstance(type), + new TypeVarContext(getTypeVarScopeId(type)), + { unknownIfNotFound: true } + ) as ClassType; } let initMethodTypeResult: TypeResult | undefined; @@ -249,7 +247,7 @@ function validateNewAndInitMethods( // Determine whether the class overrides the object.__init__ method. initMethodTypeResult = evaluator.getTypeOfObjectMember( errorNode, - ClassType.cloneAsInstance(initMethodBindToType), + initMethodBindToType, '__init__', { method: 'get' }, /* diag */ undefined, diff --git a/packages/pyright-internal/src/tests/samples/constructor17.py b/packages/pyright-internal/src/tests/samples/constructor17.py index 88e8069c3..bd34e5d52 100644 --- a/packages/pyright-internal/src/tests/samples/constructor17.py +++ b/packages/pyright-internal/src/tests/samples/constructor17.py @@ -33,6 +33,10 @@ def __init__(self, a: T): ... +class E(Generic[T]): + pass + + a = A(1) reveal_type(a, expected_text="A[Unknown]") @@ -44,3 +48,6 @@ def __init__(self, a: T): d = D(1) reveal_type(d, expected_text="D[int]") + +e = E() +reveal_type(e, expected_text="E[Unknown]") From d4a904c7f396b689e149cbb2db4c2caeeef18046 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 29 May 2023 18:30:54 -0600 Subject: [PATCH 223/525] Fixed a bug that led to a false positive when a function-scoped ParamSpec was used within a constructor, and a lambda with no parameters is passed to the constructor as an argument. This addresses https://github.com/microsoft/pyright/issues/5196. --- .../src/analyzer/typeEvaluator.ts | 8 +++----- .../pyright-internal/src/analyzer/types.ts | 20 +++++++++---------- .../src/tests/samples/paramSpec43.py | 18 +++++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 5 +++++ 4 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/paramSpec43.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index a8420ee6f..dd305f3b3 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13000,8 +13000,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const hasVarArgs = functionType.details.parameters.some( (param) => !!param.name && param.category !== ParameterCategory.Simple ); + const hasParamSpec = !!functionType.details.paramSpec; + return ( hasVarArgs || + hasParamSpec || (functionParamCount >= minLambdaParamCount && functionParamCount <= maxLambdaParamCount) ); }); @@ -13081,11 +13084,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); } - // Handle the case where the expected type contains a ParamSpec. - if (expectedFunctionType?.details.paramSpec) { - functionType.details.paramSpec = expectedFunctionType.details.paramSpec; - } - const expectedReturnType = expectedFunctionType ? getFunctionEffectiveReturnType(expectedFunctionType) : undefined; diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 5daf10720..8f1f78dce 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -2715,21 +2715,19 @@ export function isTypeSame(type1: Type, type2: Type, options: TypeSameOptions = } // If the functions have ParamSpecs associated with them, make sure those match. - if (!type1.specializedTypes && !functionType2.specializedTypes) { - const paramSpec1 = type1.details.paramSpec; - const paramSpec2 = functionType2.details.paramSpec; + const paramSpec1 = type1.details.paramSpec; + const paramSpec2 = functionType2.details.paramSpec; - if (paramSpec1) { - if (!paramSpec2) { - return false; - } + if (paramSpec1) { + if (!paramSpec2) { + return false; + } - if (!isTypeSame(paramSpec1, paramSpec2, options, recursionCount)) { - return false; - } - } else if (paramSpec2) { + if (!isTypeSame(paramSpec1, paramSpec2, options, recursionCount)) { return false; } + } else if (paramSpec2) { + return false; } // Make sure the return types match. diff --git a/packages/pyright-internal/src/tests/samples/paramSpec43.py b/packages/pyright-internal/src/tests/samples/paramSpec43.py new file mode 100644 index 000000000..001c59add --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/paramSpec43.py @@ -0,0 +1,18 @@ +# This sample tests the case where a generic class has a function-local +# ParamSpec in its constructor. + +from typing import TypeVar, Callable, ParamSpec, Protocol + +P = ParamSpec("P") +R = TypeVar("R") + + +class Decorator(Protocol): + def __call__(self, __x: Callable[P, R]) -> Callable[P, R]: + ... + + +def func1(deco: Decorator): + deco(lambda: None)() + deco(lambda x: x)(1) + deco(lambda x, y: x)(1, "") diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 1a5ffc973..4f4dffc04 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -1011,6 +1011,11 @@ test('ParamSpec42', () => { TestUtils.validateResults(results, 0); }); +test('ParamSpec43', () => { + const results = TestUtils.typeAnalyzeSampleFiles(['paramSpec43.py']); + TestUtils.validateResults(results, 0); +}); + test('ClassVar1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['classVar1.py']); From fbdffd38153e69a967c0c4c676470f9ad7a19d47 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 30 May 2023 08:36:36 -0600 Subject: [PATCH 224/525] Fixed a bug in the bidirectional type inference mechanism that theoretically produced inconsistent results. --- packages/pyright-internal/src/analyzer/typeUtils.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 665f1be38..fabac7f40 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3165,15 +3165,16 @@ class TypeVarTransformer { } transformTypeVarsInClassType(classType: ClassType, recursionCount: number): ClassType { + const typeParams = ClassType.getTypeParameters(classType); + // Handle the common case where the class has no type parameters. - if (ClassType.getTypeParameters(classType).length === 0 && !ClassType.isSpecialBuiltIn(classType)) { + if (typeParams.length === 0 && !ClassType.isSpecialBuiltIn(classType)) { return classType; } let newTypeArgs: Type[] | undefined; let newTupleTypeArgs: TupleTypeArgument[] | undefined; let specializationNeeded = false; - const typeParams = ClassType.getTypeParameters(classType); const transformParamSpec = (paramSpec: TypeVarType) => { const paramSpecValue = this.transformParamSpec(paramSpec, recursionCount); @@ -3878,7 +3879,7 @@ class InScopePlaceholderTransformer extends TypeVarTransformer { override transformTypeVar(typeVar: TypeVarType) { if (typeVar.isInScopePlaceholder) { - return this._signatureContext.getTypeVarType(typeVar) ?? UnknownType.create(); + return this._signatureContext.getTypeVarType(typeVar) ?? typeVar; } return typeVar; From 957d0aac9d6c89fe6dcee48dd22e27ed0a39826a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 30 May 2023 09:00:35 -0600 Subject: [PATCH 225/525] Removed debugging code that was used to get more information about a crashing bug. The underlying cause appears to be addressed now. See https://github.com/microsoft/pyright/issues/5091#event-9379575388 for details. --- .../src/analyzer/typeUtils.ts | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index fabac7f40..25823702a 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -8,7 +8,7 @@ */ import { appendArray } from '../common/collectionUtils'; -import { assert, fail } from '../common/debug'; +import { assert } from '../common/debug'; import { ParameterCategory } from '../parser/parseNodes'; import { DeclarationType } from './declaration'; import { Symbol, SymbolFlags, SymbolTable } from './symbol'; @@ -2729,25 +2729,8 @@ export function computeMroLinearization(classType: ClassType): boolean { // entries of the specified class. This is used once the class has been // added to the MRO. function filterClass(classToFilter: ClassType, classLists: Type[][]) { - if (classToFilter?.category !== TypeCategory.Class) { - // These "fail" calls are in place to diagnose a sporadic crash that - // we are seeing in the pylance telemetry. Delete these once we - // fix the underlying problem. - fail( - `Corrupted class type when computing MRO for ${classType.details.name}: ${JSON.stringify( - classToFilter - )}` - ); - } for (let i = 0; i < classLists.length; i++) { classLists[i] = classLists[i].filter((value) => { - if (value?.category === undefined) { - fail( - `Unexpected undefined type when computing MRO for ${classType.details.name}: ${JSON.stringify( - classLists - )}` - ); - } return !isInstantiableClass(value) || !ClassType.isSameGenericClass(value, classToFilter); }); } From 719ddea20a1ed545f4a29119d66a08b5999469b8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 30 May 2023 15:23:56 -0600 Subject: [PATCH 226/525] Fixed a bug that led to false positive errors for a constructor call used in conjunction with bidirectional type inference for a generic class that includes both a `__new__` and an `__init__` method. This addresses https://github.com/microsoft/pyright/issues/5201, https://github.com/microsoft/pyright/issues/5176, and https://github.com/microsoft/pyright/issues/5144. --- .../src/analyzer/constructors.ts | 36 +++++++++++++- .../src/tests/samples/constructor18.py | 47 +++++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 6 +++ 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/constructor18.py diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index e512aa734..3f3523528 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -15,7 +15,7 @@ import { appendArray } from '../common/collectionUtils'; import { DiagnosticRule } from '../common/diagnosticRules'; import { Localizer } from '../localization/localize'; -import { ExpressionNode } from '../parser/parseNodes'; +import { ExpressionNode, ParameterCategory } from '../parser/parseNodes'; import { getFileInfo } from './analyzerNodeInfo'; import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; import { applyConstructorTransform, hasConstructorTransform } from './constructorTransform'; @@ -59,6 +59,7 @@ import { isInstantiableClass, isNever, isOverloadedFunction, + isTypeVar, isUnknown, } from './types'; @@ -215,7 +216,10 @@ function validateNewAndInitMethods( newMethodReturnType = newCallResult.returnType; } - if (!newMethodReturnType) { + if (!newMethodReturnType || isDefaultNewMethod(newMethodTypeResult?.type)) { + // If there is no __new__ method or it uses a default signature, + // (cls, *args, **kwargs) -> Self, allow the __init__ method to + // determine the specialized type of the class. newMethodReturnType = ClassType.cloneAsInstance(type); } else if (!isNever(newMethodReturnType) && !isClassInstance(newMethodReturnType)) { // If the __new__ method returns something other than an object or @@ -859,3 +863,31 @@ function shouldSkipInitEvaluation(evaluator: TypeEvaluator, classType: ClassType return skipInitCheck; } + +// Determine whether the __new__ method is the placeholder signature +// of "def __new__(cls, *args, **kwargs) -> Self". +function isDefaultNewMethod(newMethod?: Type): boolean { + if (!newMethod || !isFunction(newMethod)) { + return false; + } + + if (newMethod.details.paramSpec) { + return false; + } + + const params = newMethod.details.parameters; + if (params.length !== 2) { + return false; + } + + if (params[0].category !== ParameterCategory.ArgsList || params[1].category !== ParameterCategory.KwargsDict) { + return false; + } + + const returnType = newMethod.details.declaredReturnType ?? newMethod.inferredReturnType; + if (!returnType || !isTypeVar(returnType) || !returnType.details.isSynthesizedSelf) { + return false; + } + + return true; +} diff --git a/packages/pyright-internal/src/tests/samples/constructor18.py b/packages/pyright-internal/src/tests/samples/constructor18.py new file mode 100644 index 000000000..2efd205c0 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/constructor18.py @@ -0,0 +1,47 @@ +# This sample tests the case where a generic class contains a +# __new__ method that returns a Self type and an __init__ method +# that provides specialization for the Self type. When evaluating +# the __new__ method, we don't want to specialize the Self type +# too early. + +from dataclasses import dataclass +from typing import Generic, Self, TypeVar, overload + + +_ = isinstance(dict(a=0), dict) + + +class ClassA: + ... + + +_T1 = TypeVar("_T1", bound=ClassA | str, covariant=True) +_T2 = TypeVar("_T2") + + +class ClassB(Generic[_T1]): + def __new__(cls, *args, **kwargs) -> Self: + return super().__new__(cls, *args, **kwargs) + + @overload + def __init__(self: "ClassB[_T1]", arg: _T1) -> None: + ... + + @overload + def __init__(self: "ClassB[str]", arg: int) -> None: + ... + + def __init__(self, arg: int | ClassA | str) -> None: + pass + + +b1: ClassB[ClassA | str] = ClassB[str](32) + + +@dataclass +class ClassC(Generic[_T2]): + value: _T2 + + +c1: ClassC[int] | ClassC[str] = ClassC("hi") +c2: ClassC[int] | ClassC[str] = ClassC(1) diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 8c43e7fbd..b489c09d0 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1404,6 +1404,12 @@ test('Constructor17', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Constructor18', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor18.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('InconsistentConstructor1', () => { const configOptions = new ConfigOptions('.'); From 82c0ba5c7302dd1b7e1d1b7619b3845e6013c752 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 30 May 2023 16:29:22 -0600 Subject: [PATCH 227/525] Cleaned up some comments in the sourceFile module. No functional change. --- .../src/analyzer/sourceFile.ts | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 9673926c2..4ffe66677 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -1096,14 +1096,13 @@ export class SourceFile { } // Get all task list diagnostics for the current file and add them - // to the specified diagnostic list + // to the specified diagnostic list. private _addTaskListDiagnostics(taskListTokens: TaskListToken[] | undefined, diagList: Diagnostic[]) { - // input validation if (!taskListTokens || taskListTokens.length === 0 || !diagList) { return; } - // if we have no tokens, we're done + // If we have no tokens, we're done. if (!this._writableData.parseResults?.tokenizerOutput?.tokens) { return; } @@ -1112,7 +1111,7 @@ export class SourceFile { for (let i = 0; i < tokenizerOutput.tokens.count; i++) { const token = tokenizerOutput.tokens.getItemAt(i); - // if there are no comments, skip this token + // If there are no comments, skip this token. if (!token.comments || token.comments.length === 0) { continue; } @@ -1126,25 +1125,26 @@ export class SourceFile { const regexStr = '^[\\s]*' + token.text + '([\\s]*$|[\\W]+)'; const regex = RegExp(regexStr, 'i'); // case insensitive - // if the comment doesn't match, skip it + // If the comment doesn't match, skip it. if (!regex.test(comment.value)) { continue; } - // Calculate the range for the diagnostic - // This allows navigation to the comment via double clicking the item in the task list pane + // Calculate the range for the diagnostic. This allows navigation + // to the comment via double clicking the item in the task list pane. let rangeStart = comment.start; - // The comment technically starts right after the comment identifier (#), but we want the caret right - // before the task list token (since there might be whitespace before it) + // The comment technically starts right after the comment identifier(#), + // but we want the caret right before the task list token (since there + // might be whitespace before it). const indexOfToken = comment.value.toLowerCase().indexOf(token.text.toLowerCase()); rangeStart += indexOfToken; const rangeEnd = TextRange.getEnd(comment); const range = convertOffsetsToRange(rangeStart, rangeEnd, tokenizerOutput.lines!); - // Add the diagnostic to the list to send to VS, - // and trim whitespace from the comment so it's easier to read in the task list + // Add the diagnostic to the list and trim whitespace from the comment so + // it's easier to read in the task list. diagList.push( new Diagnostic(DiagnosticCategory.TaskItem, comment.value.trim(), range, token.priority) ); From d2022b77637546f19b2603329100bebaf707e20b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 30 May 2023 16:31:13 -0600 Subject: [PATCH 228/525] Fixed a bug that led to incorrect handling of `# type: ignore` comments if a file is type checked but then pyright runs low on memory and is forced to dispose of cached parse information. We now precompute the accumulated diagnostics while the cached parse information is available. This addresses https://github.com/microsoft/pyright/issues/5202. --- .../pyright-internal/src/analyzer/program.ts | 3 +- .../src/analyzer/sourceFile.ts | 767 +++++++++--------- 2 files changed, 394 insertions(+), 376 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index b602557c1..3e995bc98 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -1926,6 +1926,7 @@ export class Program { const execEnv = this._configOptions.findExecEnvironment(fileToCheck.sourceFile.getFilePath()); fileToCheck.sourceFile.check( + this.configOptions, this._importResolver, this._evaluator!, this._createSourceMapper(execEnv, token, fileToCheck), @@ -2084,7 +2085,7 @@ export class Program { const firstFilePath = circDep.getPaths()[0]; const firstSourceFile = this.getSourceFileInfo(firstFilePath)!; assert(firstSourceFile !== undefined); - firstSourceFile.sourceFile.addCircularDependency(circDep); + firstSourceFile.sourceFile.addCircularDependency(this.configOptions, circDep); } private _markFileDirtyRecursive(sourceFileInfo: SourceFileInfo, markSet: Set, forceRebinding = false) { diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 4ffe66677..b4587254b 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -109,6 +109,11 @@ class WriteableData { typeIgnoreAll: IgnoreComment | undefined; pyrightIgnoreLines = new Map(); + // Accumulated and filtered diagnostics that combines all of the + // above information. This needs to be recomputed any time the + // above change. + accumulatedDiagnostics: Diagnostic[] = []; + // Circular dependencies that have been reported in this file. circularDependencies: CircularDependency[] = []; noCircularDependencyConfirmed = false; @@ -282,399 +287,138 @@ export class SourceFile { return undefined; } - let includeWarningsAndErrors = true; + return this._writableData.accumulatedDiagnostics; + } - // If a file was imported as a third-party file, don't report - // any errors for it. The user can't fix them anyway. - if (this._isThirdPartyImport) { - includeWarningsAndErrors = false; - } + getImports(): ImportResult[] { + return this._writableData.imports || []; + } - let diagList: Diagnostic[] = []; - appendArray(diagList, this._writableData.parseDiagnostics); - appendArray(diagList, this._writableData.commentDiagnostics); - appendArray(diagList, this._writableData.bindDiagnostics); - appendArray(diagList, this._writableData.checkerDiagnostics); + getBuiltinsImport(): ImportResult | undefined { + return this._writableData.builtinsImport; + } - const prefilteredDiagList = diagList; - const typeIgnoreLinesClone = new Map(this._writableData.typeIgnoreLines); - const pyrightIgnoreLinesClone = new Map(this._writableData.pyrightIgnoreLines); + getIPythonDisplayImport(): ImportResult | undefined { + return this._writableData.ipythonDisplayImport; + } - // Filter the diagnostics based on "type: ignore" lines. - if (this._diagnosticRuleSet.enableTypeIgnoreComments) { - if (this._writableData.typeIgnoreLines.size > 0) { - diagList = diagList.filter((d) => { - if ( - d.category !== DiagnosticCategory.UnusedCode && - d.category !== DiagnosticCategory.UnreachableCode && - d.category !== DiagnosticCategory.Deprecated - ) { - for (let line = d.range.start.line; line <= d.range.end.line; line++) { - if (this._writableData.typeIgnoreLines.has(line)) { - typeIgnoreLinesClone.delete(line); - return false; - } - } - } + getModuleSymbolTable(): SymbolTable | undefined { + return this._writableData.moduleSymbolTable; + } - return true; - }); - } - } + getCheckTime() { + return this._writableData.checkTime; + } - // Filter the diagnostics based on "pyright: ignore" lines. - if (this._writableData.pyrightIgnoreLines.size > 0) { - diagList = diagList.filter((d) => { - if (d.category !== DiagnosticCategory.UnreachableCode && d.category !== DiagnosticCategory.Deprecated) { - for (let line = d.range.start.line; line <= d.range.end.line; line++) { - const pyrightIgnoreComment = this._writableData.pyrightIgnoreLines.get(line); - if (pyrightIgnoreComment) { - if (!pyrightIgnoreComment.rulesList) { - pyrightIgnoreLinesClone.delete(line); - return false; - } + enterEditMode() { + this._isEditMode = true; + } - const diagRule = d.getRule(); - if (!diagRule) { - // If there's no diagnostic rule, it won't match - // against a rules list. - return true; - } + exitEditMode(): string | undefined { + this._isEditMode = false; - // Did we find this rule in the list? - if (pyrightIgnoreComment.rulesList.find((rule) => rule.text === diagRule)) { - // Update the pyrightIgnoreLinesClone to remove this rule. - const oldClone = pyrightIgnoreLinesClone.get(line); - if (oldClone?.rulesList) { - const filteredRulesList = oldClone.rulesList.filter( - (rule) => rule.text !== diagRule - ); - if (filteredRulesList.length === 0) { - pyrightIgnoreLinesClone.delete(line); - } else { - pyrightIgnoreLinesClone.set(line, { - range: oldClone.range, - rulesList: filteredRulesList, - }); - } - } + // If we had an edit, return our text. + if (this._preEditData) { + const text = this._writableData.clientDocumentContents!; + this._writableData = this._preEditData; + this._preEditData = undefined; + return text; + } + return undefined; + } - return false; - } + // Indicates whether the contents of the file have changed since + // the last analysis was performed. + didContentsChangeOnDisk(): boolean { + // If this is an open file any content changes will be + // provided through the editor. We can assume contents + // didn't change without us knowing about them. + if (this._writableData.clientDocumentContents) { + return false; + } - return true; - } - } - } + // If the file was never read previously, no need to check for a change. + if (this._writableData.lastFileContentLength === undefined) { + return false; + } + + // Read in the latest file contents and see if the hash matches + // that of the previous contents. + try { + // Read the file's contents. + const fileContents = this.fileSystem.readFileSync(this._filePath, 'utf8'); + if (fileContents.length !== this._writableData.lastFileContentLength) { return true; - }); + } + + if (StringUtils.hashString(fileContents) !== this._writableData.lastFileContentHash) { + return true; + } + } catch (error) { + return true; } - const unnecessaryTypeIgnoreDiags: Diagnostic[] = []; + return false; + } - // Skip this step if type checking is needed. Otherwise we'll likely produce - // incorrect (false positive) reportUnnecessaryTypeIgnoreComment diagnostics - // until checking is performed on this file. - if ( - this._diagnosticRuleSet.reportUnnecessaryTypeIgnoreComment !== 'none' && - !this._writableData.isCheckingNeeded - ) { - const diagCategory = convertLevelToCategory(this._diagnosticRuleSet.reportUnnecessaryTypeIgnoreComment); + // Drop parse and binding info to save memory. It is used + // in cases where memory is low. When info is needed, the file + // will be re-parsed and rebound. + dropParseAndBindInfo(): void { + this._writableData.parseResults = undefined; + this._writableData.moduleSymbolTable = undefined; + this._writableData.isBindingNeeded = true; + } - const prefilteredErrorList = prefilteredDiagList.filter( - (diag) => - diag.category === DiagnosticCategory.Error || - diag.category === DiagnosticCategory.Warning || - diag.category === DiagnosticCategory.Information - ); + markDirty(): void { + this._writableData.fileContentsVersion++; + this._writableData.noCircularDependencyConfirmed = false; + this._writableData.isCheckingNeeded = true; + this._writableData.isBindingNeeded = true; + this._writableData.moduleSymbolTable = undefined; - const isUnreachableCodeRange = (range: Range) => { - return prefilteredDiagList.find( - (diag) => - diag.category === DiagnosticCategory.UnreachableCode && - diag.range.start.line <= range.start.line && - diag.range.end.line >= range.end.line - ); - }; + const filePath = this.getFilePath(); + Extensions.getProgramExtensions(filePath).forEach((e) => (e.fileDirty ? e.fileDirty(filePath) : null)); + } - if (prefilteredErrorList.length === 0 && this._writableData.typeIgnoreAll !== undefined) { - const rangeStart = this._writableData.typeIgnoreAll.range.start; - const rangeEnd = rangeStart + this._writableData.typeIgnoreAll.range.length; - const range = convertOffsetsToRange( - rangeStart, - rangeEnd, - this._writableData.parseResults!.tokenizerOutput.lines! - ); + markReanalysisRequired(forceRebinding: boolean): void { + // Keep the parse info, but reset the analysis to the beginning. + this._writableData.isCheckingNeeded = true; + this._writableData.noCircularDependencyConfirmed = false; - if (!isUnreachableCodeRange(range) && this._diagnosticRuleSet.enableTypeIgnoreComments) { - unnecessaryTypeIgnoreDiags.push( - new Diagnostic(diagCategory, Localizer.Diagnostic.unnecessaryTypeIgnore(), range) - ); - } + // If the file contains a wildcard import or __all__ symbols, + // we need to rebind because a dependent import may have changed. + if (this._writableData.parseResults) { + if ( + this._writableData.parseResults.containsWildcardImport || + AnalyzerNodeInfo.getDunderAllInfo(this._writableData.parseResults.parseTree) !== undefined || + forceRebinding + ) { + // We don't need to rebuild index data since wildcard + // won't affect user file indices. User file indices + // don't contain import alias info. + this._writableData.parseTreeNeedsCleaning = true; + this._writableData.isBindingNeeded = true; + this._writableData.moduleSymbolTable = undefined; } + } + } - typeIgnoreLinesClone.forEach((ignoreComment) => { - if (this._writableData.parseResults?.tokenizerOutput.lines) { - const rangeStart = ignoreComment.range.start; - const rangeEnd = rangeStart + ignoreComment.range.length; - const range = convertOffsetsToRange( - rangeStart, - rangeEnd, - this._writableData.parseResults!.tokenizerOutput.lines! - ); + getClientVersion() { + return this._writableData.clientDocumentVersion; + } - if (!isUnreachableCodeRange(range) && this._diagnosticRuleSet.enableTypeIgnoreComments) { - unnecessaryTypeIgnoreDiags.push( - new Diagnostic(diagCategory, Localizer.Diagnostic.unnecessaryTypeIgnore(), range) - ); - } - } - }); + getOpenFileContents() { + return this._writableData.clientDocumentContents; + } - pyrightIgnoreLinesClone.forEach((ignoreComment) => { - if (this._writableData.parseResults?.tokenizerOutput.lines) { - if (!ignoreComment.rulesList) { - const rangeStart = ignoreComment.range.start; - const rangeEnd = rangeStart + ignoreComment.range.length; - const range = convertOffsetsToRange( - rangeStart, - rangeEnd, - this._writableData.parseResults!.tokenizerOutput.lines! - ); - - if (!isUnreachableCodeRange(range)) { - unnecessaryTypeIgnoreDiags.push( - new Diagnostic(diagCategory, Localizer.Diagnostic.unnecessaryPyrightIgnore(), range) - ); - } - } else { - ignoreComment.rulesList.forEach((unusedRule) => { - const rangeStart = unusedRule.range.start; - const rangeEnd = rangeStart + unusedRule.range.length; - const range = convertOffsetsToRange( - rangeStart, - rangeEnd, - this._writableData.parseResults!.tokenizerOutput.lines! - ); - - if (!isUnreachableCodeRange(range)) { - unnecessaryTypeIgnoreDiags.push( - new Diagnostic( - diagCategory, - Localizer.Diagnostic.unnecessaryPyrightIgnoreRule().format({ - name: unusedRule.text, - }), - range - ) - ); - } - }); - } - } - }); - } - - if ( - this._diagnosticRuleSet.reportImportCycles !== 'none' && - this._writableData.circularDependencies.length > 0 - ) { - const category = convertLevelToCategory(this._diagnosticRuleSet.reportImportCycles); - - this._writableData.circularDependencies.forEach((cirDep) => { - const diag = new Diagnostic( - category, - Localizer.Diagnostic.importCycleDetected() + - '\n' + - cirDep - .getPaths() - .map((path) => ' ' + path) - .join('\n'), - getEmptyRange() - ); - diag.setRule(DiagnosticRule.reportImportCycles); - diagList.push(diag); - }); - } - - if (this._writableData.hitMaxImportDepth !== undefined) { - diagList.push( - new Diagnostic( - DiagnosticCategory.Error, - Localizer.Diagnostic.importDepthExceeded().format({ depth: this._writableData.hitMaxImportDepth }), - getEmptyRange() - ) - ); - } - - // add diagnostics for comments that match the task list tokens - this._addTaskListDiagnostics(options.taskListTokens, diagList); - - // If the file is in the ignore list, clear the diagnostic list. - if (options.ignore.find((ignoreFileSpec) => ignoreFileSpec.regExp.test(this._realFilePath))) { - diagList = []; - } - - // If there is a "type: ignore" comment at the top of the file, clear - // the diagnostic list of all error, warning, and information diagnostics. - if (this._diagnosticRuleSet.enableTypeIgnoreComments) { - if (this._writableData.typeIgnoreAll !== undefined) { - diagList = diagList.filter( - (diag) => - diag.category !== DiagnosticCategory.Error && - diag.category !== DiagnosticCategory.Warning && - diag.category !== DiagnosticCategory.Information - ); - } - } - - // Now add in the "unnecessary type ignore" diagnostics. - diagList = diagList.concat(unnecessaryTypeIgnoreDiags); - - // If we're not returning any diagnostics, filter out all of - // the errors and warnings, leaving only the unreachable code - // and deprecated diagnostics. - if (!includeWarningsAndErrors) { - diagList = diagList.filter( - (diag) => - diag.category === DiagnosticCategory.UnusedCode || - diag.category === DiagnosticCategory.UnreachableCode || - diag.category === DiagnosticCategory.Deprecated - ); - } - - return diagList; - } - - getImports(): ImportResult[] { - return this._writableData.imports || []; - } - - getBuiltinsImport(): ImportResult | undefined { - return this._writableData.builtinsImport; - } - - getIPythonDisplayImport(): ImportResult | undefined { - return this._writableData.ipythonDisplayImport; - } - - getModuleSymbolTable(): SymbolTable | undefined { - return this._writableData.moduleSymbolTable; - } - - getCheckTime() { - return this._writableData.checkTime; - } - - enterEditMode() { - this._isEditMode = true; - } - - exitEditMode(): string | undefined { - this._isEditMode = false; - - // If we had an edit, return our text. - if (this._preEditData) { - const text = this._writableData.clientDocumentContents!; - this._writableData = this._preEditData; - this._preEditData = undefined; - return text; - } - return undefined; - } - - // Indicates whether the contents of the file have changed since - // the last analysis was performed. - didContentsChangeOnDisk(): boolean { - // If this is an open file any content changes will be - // provided through the editor. We can assume contents - // didn't change without us knowing about them. - if (this._writableData.clientDocumentContents) { - return false; - } - - // If the file was never read previously, no need to check for a change. - if (this._writableData.lastFileContentLength === undefined) { - return false; - } - - // Read in the latest file contents and see if the hash matches - // that of the previous contents. - try { - // Read the file's contents. - const fileContents = this.fileSystem.readFileSync(this._filePath, 'utf8'); - - if (fileContents.length !== this._writableData.lastFileContentLength) { - return true; - } - - if (StringUtils.hashString(fileContents) !== this._writableData.lastFileContentHash) { - return true; - } - } catch (error) { - return true; - } - - return false; - } - - // Drop parse and binding info to save memory. It is used - // in cases where memory is low. When info is needed, the file - // will be re-parsed and rebound. - dropParseAndBindInfo(): void { - this._writableData.parseResults = undefined; - this._writableData.moduleSymbolTable = undefined; - this._writableData.isBindingNeeded = true; - } - - markDirty(): void { - this._writableData.fileContentsVersion++; - this._writableData.noCircularDependencyConfirmed = false; - this._writableData.isCheckingNeeded = true; - this._writableData.isBindingNeeded = true; - this._writableData.moduleSymbolTable = undefined; - - const filePath = this.getFilePath(); - Extensions.getProgramExtensions(filePath).forEach((e) => (e.fileDirty ? e.fileDirty(filePath) : null)); - } - - markReanalysisRequired(forceRebinding: boolean): void { - // Keep the parse info, but reset the analysis to the beginning. - this._writableData.isCheckingNeeded = true; - this._writableData.noCircularDependencyConfirmed = false; - - // If the file contains a wildcard import or __all__ symbols, - // we need to rebind because a dependent import may have changed. - if (this._writableData.parseResults) { - if ( - this._writableData.parseResults.containsWildcardImport || - AnalyzerNodeInfo.getDunderAllInfo(this._writableData.parseResults.parseTree) !== undefined || - forceRebinding - ) { - // We don't need to rebuild index data since wildcard - // won't affect user file indices. User file indices - // don't contain import alias info. - this._writableData.parseTreeNeedsCleaning = true; - this._writableData.isBindingNeeded = true; - this._writableData.moduleSymbolTable = undefined; - } - } - } - - getClientVersion() { - return this._writableData.clientDocumentVersion; - } - - getOpenFileContents() { - return this._writableData.clientDocumentContents; - } - - getFileContent(): string | undefined { - // Get current buffer content if the file is opened. - const openFileContent = this.getOpenFileContents(); - if (openFileContent !== undefined) { - return openFileContent; - } + getFileContent(): string | undefined { + // Get current buffer content if the file is opened. + const openFileContent = this.getOpenFileContents(); + if (openFileContent !== undefined) { + return openFileContent; + } // Otherwise, get content from file system. try { @@ -762,7 +506,7 @@ export class SourceFile { // Adds a new circular dependency for this file but only if // it hasn't already been added. - addCircularDependency(circDependency: CircularDependency) { + addCircularDependency(configOptions: ConfigOptions, circDependency: CircularDependency) { let updatedDependencyList = false; // Some topologies can result in a massive number of cycles. We'll cut it off. @@ -774,7 +518,7 @@ export class SourceFile { } if (updatedDependencyList) { - this._writableData.diagnosticVersion++; + this._recomputeDiagnostics(configOptions); } } @@ -937,7 +681,8 @@ export class SourceFile { this._writableData.isCheckingNeeded = true; this._writableData.parseTreeNeedsCleaning = false; this._writableData.hitMaxImportDepth = undefined; - this._writableData.diagnosticVersion++; + + this._recomputeDiagnostics(configOptions); return true; }); @@ -1008,13 +753,15 @@ export class SourceFile { } // Prepare for the next stage of the analysis. - this._writableData.diagnosticVersion++; this._writableData.isCheckingNeeded = true; this._writableData.isBindingNeeded = false; + + this._recomputeDiagnostics(configOptions); }); } check( + configOptions: ConfigOptions, importResolver: ImportResolver, evaluator: TypeEvaluator, sourceMapper: SourceMapper, @@ -1072,7 +819,8 @@ export class SourceFile { // These will be detected by the program module and associated // with the source file right before it is finalized. this._writableData.circularDependencies = []; - this._writableData.diagnosticVersion++; + + this._recomputeDiagnostics(configOptions); } }); } @@ -1081,6 +829,275 @@ export class SourceFile { this._ipythonMode = enable ? IPythonMode.CellDocs : IPythonMode.None; } + // Computes an updated set of accumulated diagnostics for the file + // based on the partial diagnostics from various analysis stages. + private _recomputeDiagnostics(configOptions: ConfigOptions) { + this._writableData.diagnosticVersion++; + + let includeWarningsAndErrors = true; + + // If a file was imported as a third-party file, don't report + // any errors for it. The user can't fix them anyway. + if (this._isThirdPartyImport) { + includeWarningsAndErrors = false; + } + + let diagList: Diagnostic[] = []; + appendArray(diagList, this._writableData.parseDiagnostics); + appendArray(diagList, this._writableData.commentDiagnostics); + appendArray(diagList, this._writableData.bindDiagnostics); + appendArray(diagList, this._writableData.checkerDiagnostics); + + const prefilteredDiagList = diagList; + const typeIgnoreLinesClone = new Map(this._writableData.typeIgnoreLines); + const pyrightIgnoreLinesClone = new Map(this._writableData.pyrightIgnoreLines); + + // Filter the diagnostics based on "type: ignore" lines. + if (this._diagnosticRuleSet.enableTypeIgnoreComments) { + if (this._writableData.typeIgnoreLines.size > 0) { + diagList = diagList.filter((d) => { + if ( + d.category !== DiagnosticCategory.UnusedCode && + d.category !== DiagnosticCategory.UnreachableCode && + d.category !== DiagnosticCategory.Deprecated + ) { + for (let line = d.range.start.line; line <= d.range.end.line; line++) { + if (this._writableData.typeIgnoreLines.has(line)) { + typeIgnoreLinesClone.delete(line); + return false; + } + } + } + + return true; + }); + } + } + + // Filter the diagnostics based on "pyright: ignore" lines. + if (this._writableData.pyrightIgnoreLines.size > 0) { + diagList = diagList.filter((d) => { + if (d.category !== DiagnosticCategory.UnreachableCode && d.category !== DiagnosticCategory.Deprecated) { + for (let line = d.range.start.line; line <= d.range.end.line; line++) { + const pyrightIgnoreComment = this._writableData.pyrightIgnoreLines.get(line); + if (pyrightIgnoreComment) { + if (!pyrightIgnoreComment.rulesList) { + pyrightIgnoreLinesClone.delete(line); + return false; + } + + const diagRule = d.getRule(); + if (!diagRule) { + // If there's no diagnostic rule, it won't match + // against a rules list. + return true; + } + + // Did we find this rule in the list? + if (pyrightIgnoreComment.rulesList.find((rule) => rule.text === diagRule)) { + // Update the pyrightIgnoreLinesClone to remove this rule. + const oldClone = pyrightIgnoreLinesClone.get(line); + if (oldClone?.rulesList) { + const filteredRulesList = oldClone.rulesList.filter( + (rule) => rule.text !== diagRule + ); + if (filteredRulesList.length === 0) { + pyrightIgnoreLinesClone.delete(line); + } else { + pyrightIgnoreLinesClone.set(line, { + range: oldClone.range, + rulesList: filteredRulesList, + }); + } + } + + return false; + } + + return true; + } + } + } + + return true; + }); + } + + const unnecessaryTypeIgnoreDiags: Diagnostic[] = []; + + // Skip this step if type checking is needed. Otherwise we'll likely produce + // incorrect (false positive) reportUnnecessaryTypeIgnoreComment diagnostics + // until checking is performed on this file. + if ( + this._diagnosticRuleSet.reportUnnecessaryTypeIgnoreComment !== 'none' && + !this._writableData.isCheckingNeeded + ) { + const diagCategory = convertLevelToCategory(this._diagnosticRuleSet.reportUnnecessaryTypeIgnoreComment); + + const prefilteredErrorList = prefilteredDiagList.filter( + (diag) => + diag.category === DiagnosticCategory.Error || + diag.category === DiagnosticCategory.Warning || + diag.category === DiagnosticCategory.Information + ); + + const isUnreachableCodeRange = (range: Range) => { + return prefilteredDiagList.find( + (diag) => + diag.category === DiagnosticCategory.UnreachableCode && + diag.range.start.line <= range.start.line && + diag.range.end.line >= range.end.line + ); + }; + + if (prefilteredErrorList.length === 0 && this._writableData.typeIgnoreAll !== undefined) { + const rangeStart = this._writableData.typeIgnoreAll.range.start; + const rangeEnd = rangeStart + this._writableData.typeIgnoreAll.range.length; + const range = convertOffsetsToRange( + rangeStart, + rangeEnd, + this._writableData.parseResults!.tokenizerOutput.lines! + ); + + if (!isUnreachableCodeRange(range) && this._diagnosticRuleSet.enableTypeIgnoreComments) { + unnecessaryTypeIgnoreDiags.push( + new Diagnostic(diagCategory, Localizer.Diagnostic.unnecessaryTypeIgnore(), range) + ); + } + } + + typeIgnoreLinesClone.forEach((ignoreComment) => { + if (this._writableData.parseResults?.tokenizerOutput.lines) { + const rangeStart = ignoreComment.range.start; + const rangeEnd = rangeStart + ignoreComment.range.length; + const range = convertOffsetsToRange( + rangeStart, + rangeEnd, + this._writableData.parseResults!.tokenizerOutput.lines! + ); + + if (!isUnreachableCodeRange(range) && this._diagnosticRuleSet.enableTypeIgnoreComments) { + unnecessaryTypeIgnoreDiags.push( + new Diagnostic(diagCategory, Localizer.Diagnostic.unnecessaryTypeIgnore(), range) + ); + } + } + }); + + pyrightIgnoreLinesClone.forEach((ignoreComment) => { + if (this._writableData.parseResults?.tokenizerOutput.lines) { + if (!ignoreComment.rulesList) { + const rangeStart = ignoreComment.range.start; + const rangeEnd = rangeStart + ignoreComment.range.length; + const range = convertOffsetsToRange( + rangeStart, + rangeEnd, + this._writableData.parseResults!.tokenizerOutput.lines! + ); + + if (!isUnreachableCodeRange(range)) { + unnecessaryTypeIgnoreDiags.push( + new Diagnostic(diagCategory, Localizer.Diagnostic.unnecessaryPyrightIgnore(), range) + ); + } + } else { + ignoreComment.rulesList.forEach((unusedRule) => { + const rangeStart = unusedRule.range.start; + const rangeEnd = rangeStart + unusedRule.range.length; + const range = convertOffsetsToRange( + rangeStart, + rangeEnd, + this._writableData.parseResults!.tokenizerOutput.lines! + ); + + if (!isUnreachableCodeRange(range)) { + unnecessaryTypeIgnoreDiags.push( + new Diagnostic( + diagCategory, + Localizer.Diagnostic.unnecessaryPyrightIgnoreRule().format({ + name: unusedRule.text, + }), + range + ) + ); + } + }); + } + } + }); + } + + if ( + this._diagnosticRuleSet.reportImportCycles !== 'none' && + this._writableData.circularDependencies.length > 0 + ) { + const category = convertLevelToCategory(this._diagnosticRuleSet.reportImportCycles); + + this._writableData.circularDependencies.forEach((cirDep) => { + const diag = new Diagnostic( + category, + Localizer.Diagnostic.importCycleDetected() + + '\n' + + cirDep + .getPaths() + .map((path) => ' ' + path) + .join('\n'), + getEmptyRange() + ); + diag.setRule(DiagnosticRule.reportImportCycles); + diagList.push(diag); + }); + } + + if (this._writableData.hitMaxImportDepth !== undefined) { + diagList.push( + new Diagnostic( + DiagnosticCategory.Error, + Localizer.Diagnostic.importDepthExceeded().format({ depth: this._writableData.hitMaxImportDepth }), + getEmptyRange() + ) + ); + } + + // Add diagnostics for comments that match the task list tokens. + this._addTaskListDiagnostics(configOptions.taskListTokens, diagList); + + // If the file is in the ignore list, clear the diagnostic list. + if (configOptions.ignore.find((ignoreFileSpec) => ignoreFileSpec.regExp.test(this._realFilePath))) { + diagList = []; + } + + // If there is a "type: ignore" comment at the top of the file, clear + // the diagnostic list of all error, warning, and information diagnostics. + if (this._diagnosticRuleSet.enableTypeIgnoreComments) { + if (this._writableData.typeIgnoreAll !== undefined) { + diagList = diagList.filter( + (diag) => + diag.category !== DiagnosticCategory.Error && + diag.category !== DiagnosticCategory.Warning && + diag.category !== DiagnosticCategory.Information + ); + } + } + + // Now add in the "unnecessary type ignore" diagnostics. + diagList = diagList.concat(unnecessaryTypeIgnoreDiags); + + // If we're not returning any diagnostics, filter out all of + // the errors and warnings, leaving only the unreachable code + // and deprecated diagnostics. + if (!includeWarningsAndErrors) { + diagList = diagList.filter( + (diag) => + diag.category === DiagnosticCategory.UnusedCode || + diag.category === DiagnosticCategory.UnreachableCode || + diag.category === DiagnosticCategory.Deprecated + ); + } + + this._writableData.accumulatedDiagnostics = diagList; + } + private _cachePreEditState() { // If there's no document yet, this change doesn't count as a write yet. if (this._writableData.clientDocumentContents !== undefined) { From 519b1a64dfeac1020d5975510395d939573b7068 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 30 May 2023 19:56:26 -0600 Subject: [PATCH 229/525] Fixed a bug that led to a crash when running `pyright --verifytypes numpy`. A pathological case in the numpy code was causing an exponential explosion in the number of type variable signature contexts. This addresses https://github.com/microsoft/pyright/issues/5205. --- .../src/analyzer/typeVarContext.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeVarContext.ts b/packages/pyright-internal/src/analyzer/typeVarContext.ts index 6b3220704..f56231c51 100644 --- a/packages/pyright-internal/src/analyzer/typeVarContext.ts +++ b/packages/pyright-internal/src/analyzer/typeVarContext.ts @@ -25,6 +25,14 @@ import { WildcardTypeVarScopeId, } from './types'; +// The maximum number of signature contexts that can be associated +// with a TypeVarContext. This equates to the number of overloads +// that can be captured by a ParamSpec (or multiple ParamSpecs). +// We should never hit this limit in practice, but there are certain +// pathological cases where we could, and we need to protect against +// this so it doesn't completely exhaust memory. +const maxSignatureContextCount = 64; + export interface TypeVarMapEntry { typeVar: TypeVarType; @@ -325,7 +333,11 @@ export class TypeVarContext { copySignatureContexts(contexts: TypeVarSignatureContext[]) { assert(contexts.length > 0); - this._signatureContexts = Array.from(contexts); + // Limit the number of signature contexts. There are rare circumstances + // where this can grow to unbounded numbers and exhaust memory. + if (contexts.length < maxSignatureContextCount) { + this._signatureContexts = Array.from(contexts); + } } // Returns the list of scopes this type var map is "solving". From d20fbcf8e69014cd14b135837378f9c96d5ffe99 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 30 May 2023 20:27:13 -0600 Subject: [PATCH 230/525] Published 1.1.311 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 3376afb18..463e7326f 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.310", + "version": "1.1.311", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 26c79aee8..a7bb4f354 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.310", + "version": "1.1.311", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.310", + "version": "1.1.311", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index a3b17710e..764598731 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.310", + "version": "1.1.311", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 351366a8f..d8ff6c952 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.310", + "version": "1.1.311", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.310", + "version": "1.1.311", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index f30e55809..44033215c 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.310", + "version": "1.1.311", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 9649213cb..b7186d06c 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.310", + "version": "1.1.311", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.310", + "version": "1.1.311", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 19f5a0caa..15f0477c9 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.310", + "version": "1.1.311", "private": true, "license": "MIT", "author": { From 78ec9d3439edc0afea6176a1cfe27d37a1f3bf5f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 30 May 2023 23:07:36 -0600 Subject: [PATCH 231/525] Fixed a bug that results in a false positive when calling a generic function that has a declared return type of a tuple and the call has an expected type (bidirectional type inference). This addresses https://github.com/microsoft/pyright/issues/5206. --- .../src/analyzer/constraintSolver.ts | 15 ++++++++++++ .../src/tests/samples/genericTypes114.py | 23 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 +++++ 3 files changed, 44 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes114.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 1120be069..a59d0e16a 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -881,6 +881,21 @@ export function populateTypeVarContextBasedOnExpectedType( /* narrowBoundNoLiterals */ undefined, variance === Variance.Contravariant ? undefined : typeArgValue ); + + if (entry.tupleTypes) { + typeVarContext.setTupleTypeVar( + entry.typeVar, + entry.tupleTypes.map((tupleEntry) => { + let tupleType = tupleEntry.type; + + if (liveTypeVarScopes) { + tupleType = transformExpectedType(tupleEntry.type, liveTypeVarScopes); + } + + return { type: tupleType, isUnbounded: tupleEntry.isUnbounded }; + }) + ); + } } }); return true; diff --git a/packages/pyright-internal/src/tests/samples/genericTypes114.py b/packages/pyright-internal/src/tests/samples/genericTypes114.py new file mode 100644 index 000000000..86c49c909 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes114.py @@ -0,0 +1,23 @@ +# This sample tests the case where a generic function that returns a tuple +# is called with an expected type. + +from typing import Iterable, Literal, TypeVar + +A = TypeVar("A") +B = TypeVar("B") + + +def func1(a: A, b: B) -> tuple[Iterable[A], Iterable[B]]: + return ((a,), (b,)) + + +def func2(a: A, b: B) -> tuple[Iterable[B], Iterable[A]]: + return ([b], [a]) + + +def func3() -> tuple[Iterable[str], Iterable[int]]: + return func1("", 3) + + +def func4() -> tuple[Iterable[Literal["hi"]], Iterable[Literal[3]]]: + return func2(3, "hi") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 825626123..e227b0c61 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1103,6 +1103,12 @@ test('GenericTypes113', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes114', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes114.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 7784093ab7e32db5ecca20b10903113020b930d6 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 31 May 2023 09:28:18 -0700 Subject: [PATCH 232/525] pull-pylance-with-pyright-1.1.311 (#5211) --- .../pyright-internal/src/analyzer/program.ts | 10 +++- .../src/backgroundAnalysisBase.ts | 48 +++++++++---------- .../src/tests/service.test.ts | 12 +++++ 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 3e995bc98..546526282 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -544,8 +544,14 @@ export class Program { } containsSourceFileIn(folder: string): boolean { - const normalized = normalizePathCase(this.fileSystem, folder); - return this._sourceFileList.some((i) => i.sourceFile.getFilePath().startsWith(normalized)); + const normalizedFolder = normalizePathCase(this.fileSystem, folder); + for (const normalizedSourceFilePath of this._sourceFileMap.keys()) { + if (normalizedSourceFilePath.startsWith(normalizedFolder)) { + return true; + } + } + + return false; } owns(filePath: string) { diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index 43552a91d..f998c901e 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -671,36 +671,36 @@ function convertDiagnostics(diagnostics: Diagnostic[]) { }); } -export interface AnalysisRequest { - requestType: - | 'analyze' - | 'resumeAnalysis' - | 'setConfigOptions' - | 'setTrackedFiles' - | 'setAllowedThirdPartyImports' - | 'ensurePartialStubPackages' - | 'setFileOpened' - | 'updateChainedFilePath' - | 'setFileClosed' - | 'markAllFilesDirty' - | 'markFilesDirty' - | 'invalidateAndForceReanalysis' - | 'restart' - | 'getDiagnosticsForRange' - | 'writeTypeStub' - | 'getSemanticTokens' - | 'setExperimentOptions' - | 'setImportResolver' - | 'getInlayHints' - | 'shutdown' - | 'addInterimFile'; +export type AnalysisRequestKind = + | 'analyze' + | 'resumeAnalysis' + | 'setConfigOptions' + | 'setTrackedFiles' + | 'setAllowedThirdPartyImports' + | 'ensurePartialStubPackages' + | 'setFileOpened' + | 'updateChainedFilePath' + | 'setFileClosed' + | 'markAllFilesDirty' + | 'markFilesDirty' + | 'invalidateAndForceReanalysis' + | 'restart' + | 'getDiagnosticsForRange' + | 'writeTypeStub' + | 'setImportResolver' + | 'shutdown' + | 'addInterimFile'; +export interface AnalysisRequest { + requestType: AnalysisRequestKind; data: any; port?: MessagePort | undefined; } +export type AnalysisResponseKind = 'log' | 'analysisResult' | 'analysisPaused' | 'analysisDone'; + export interface AnalysisResponse { - requestType: 'log' | 'telemetry' | 'analysisResult' | 'analysisPaused' | 'indexResult' | 'analysisDone'; + requestType: AnalysisResponseKind; data: any; } diff --git a/packages/pyright-internal/src/tests/service.test.ts b/packages/pyright-internal/src/tests/service.test.ts index f9f33bd92..0191df601 100644 --- a/packages/pyright-internal/src/tests/service.test.ts +++ b/packages/pyright-internal/src/tests/service.test.ts @@ -180,6 +180,18 @@ test('folder that contains no file but whose parent has __init__ has changed', ( testSourceFileWatchChange(code, /* expected */ true, /* isFile */ false); }); +test('program containsSourceFileIn', () => { + const code = ` +// @ignoreCase: true + +// @filename: myLib/__init__.py +//// # empty + `; + + const state = parseAndGetTestState(code, '/projectRoot').state; + assert(state.workspace.service.test_program.containsSourceFileIn(state.activeFile.fileName)); +}); + function testSourceFileWatchChange(code: string, expected = true, isFile = true) { const state = parseAndGetTestState(code, '/projectRoot').state; const marker = state.getMarkerByName('marker'); From 9f133287fbd5a1624a35bfee43e537c2e7903417 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 31 May 2023 12:29:08 -0600 Subject: [PATCH 233/525] Simplified code in `reportIncompatibleMethodOverride` logic. No functional change. --- .../src/analyzer/typeEvaluator.ts | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index dd305f3b3..c3c98c947 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24120,9 +24120,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } // For an overload overriding a base method, at least one overload - // must be compatible with the base method. + // or the implementation must be compatible with the base method. if ( - OverloadedFunctionType.getOverloads(overrideMethod).some((overrideOverload) => { + overrideMethod.overloads.some((overrideOverload) => { return validateOverrideMethodInternal( baseMethod, overrideOverload, @@ -24134,21 +24134,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } - // Or the implementation must be compatible. - const overrideImplementation = OverloadedFunctionType.getImplementation(overrideMethod); - if (overrideImplementation) { - if ( - validateOverrideMethodInternal( - baseMethod, - overrideImplementation, - /* diag */ undefined, - enforceParamNames - ) - ) { - return true; - } - } - diag.addMessage(Localizer.DiagnosticAddendum.overrideNoOverloadMatches()); return false; } From e29d6a5e50ddcc4da0842d425a882d0c6e9794d2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 31 May 2023 12:40:09 -0600 Subject: [PATCH 234/525] Enhanced `reportIncompatibleMethodOverride` diagnostic check to support cases where the overridden function is overloaded. Attempted to duplicate the same logic that's in mypy for compatibility. This addresses https://github.com/microsoft/pyright/issues/5200. --- .../src/analyzer/typeEvaluator.ts | 41 ++++++- .../src/localization/localize.ts | 3 + .../src/localization/package.nls.en-us.json | 2 + .../src/tests/samples/methodOverride6.py | 104 ++++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 11 ++ 5 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/methodOverride6.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index c3c98c947..10ba2e6f6 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24138,7 +24138,46 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return false; } - // TODO - need to implement the case where the base method is overloaded + // For a non-overloaded method overriding an overloaded method, the + // override must match all of the overloads. + if (isFunction(overrideMethod)) { + return OverloadedFunctionType.getOverloads(baseMethod).every((overload) => + validateOverrideMethodInternal(overload, overrideMethod, diag?.createAddendum(), enforceParamNames) + ); + } + + // For an overloaded method overriding an overloaded method, the overrides + // must all match and be in the correct order. It is OK if the base method + // has additional overloads that are not present in the override. + + let previousMatchIndex = -1; + let overrideOverloadIndex = 0; + for (const overrideOverload of OverloadedFunctionType.getOverloads(overrideMethod)) { + const matchIndex = OverloadedFunctionType.getOverloads(baseMethod).findIndex((baseOverload) => { + return validateOverrideMethodInternal( + baseOverload, + overrideOverload, + /* diag */ undefined, + enforceParamNames + ); + }); + + if (matchIndex < 0) { + diag.addMessage( + Localizer.DiagnosticAddendum.overrideOverloadNoMatch().format({ index: overrideOverloadIndex }) + ); + return false; + } + + if (matchIndex < previousMatchIndex) { + diag.addMessage(Localizer.DiagnosticAddendum.overrideOverloadOrder()); + return false; + } + + previousMatchIndex = matchIndex; + overrideOverloadIndex++; + } + return true; } diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index b75a502af..4beff2538 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -1210,6 +1210,9 @@ export namespace Localizer { export const overrideNotClassMethod = () => getRawString('DiagnosticAddendum.overrideNotClassMethod'); export const overrideNotInstanceMethod = () => getRawString('DiagnosticAddendum.overrideNotInstanceMethod'); export const overrideNotStaticMethod = () => getRawString('DiagnosticAddendum.overrideNotStaticMethod'); + export const overrideOverloadNoMatch = () => + new ParameterizedString<{ index: number }>(getRawString('DiagnosticAddendum.overrideOverloadNoMatch')); + export const overrideOverloadOrder = () => getRawString('DiagnosticAddendum.overrideOverloadOrder'); export const overrideParamKeywordNoDefault = () => new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.overrideParamKeywordNoDefault')); export const overrideParamKeywordType = () => diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 9cd2a276b..18b563062 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -631,6 +631,8 @@ "overrideNotClassMethod": "Base method is declared as a classmethod but override is not", "overrideNotInstanceMethod": "Base method is declared as an instance method but override is not", "overrideNotStaticMethod": "Base method is declared as a staticmethod but override is not", + "overrideOverloadNoMatch": "Overload {index} is not compatible with base method", + "overrideOverloadOrder": "Overloads for override method must be in the same order as the base method", "overrideParamKeywordNoDefault": "Keyword parameter \"{name}\" mismatch: base parameter has default argument value, override parameter does not", "overrideParamKeywordType": "Keyword parameter \"{name}\" type mismatch: base parameter is type \"{baseType}\", override parameter is type \"{overrideType}\"", "overrideParamName": "Parameter {index} name mismatch: base parameter is named \"{baseName}\", override parameter is named \"{overrideName}\"", diff --git a/packages/pyright-internal/src/tests/samples/methodOverride6.py b/packages/pyright-internal/src/tests/samples/methodOverride6.py new file mode 100644 index 000000000..6beae470e --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/methodOverride6.py @@ -0,0 +1,104 @@ +# This sample tests the case where a method is overriding an overloaded method. + +from typing import Any, Generic, Literal, TypeVar, overload + +_T = TypeVar("_T") + + +class Parent1(Generic[_T]): + @overload + def m1(self, x: Literal[True]) -> int: + ... + + @overload + def m1(self, x: Literal[False]) -> float: + ... + + @overload + def m1(self, x: _T) -> _T: + ... + + def m1(self, x: bool | _T) -> int | float | _T: + return x + + +class Child1_1(Parent1[str]): + @overload + def m1(self, x: bool) -> int: + ... + + @overload + def m1(self, x: str) -> str: + ... + + def m1(self, x: bool | str) -> int | str: + return x + + +class Child1_2(Parent1[str]): + def m1(self, x: Any) -> Any: + return x + + +class Child1_3(Parent1[str]): + @overload + def m1(self, x: bool) -> int: + ... + + @overload + def m1(self, x: str) -> str: + ... + + def m1(self, x: bool | str) -> int | float | str: + return x + + +class Child1_4(Parent1[str]): + @overload + def m1(self, x: str) -> str: + ... + + @overload + def m1(self, x: bool) -> int: + ... + + # This should generate an error because the overloads are + # in the wrong order. + def m1(self, x: bool | str) -> int | float | str: + return x + + +class Child1_5(Parent1[str]): + @overload + def m1(self, x: Literal[True]) -> int: + ... + + @overload + def m1(self, x: Literal[False]) -> float: + ... + + @overload + def m1(self, x: bytes) -> bytes: + ... + + # This should generate an error because the overloads are + # in the wrong order. + def m1(self, x: bool | bytes) -> int | float | bytes: + return x + + +class Child1_6(Parent1[bytes]): + @overload + def m1(self, x: Literal[True]) -> int: + ... + + @overload + def m1(self, x: Literal[False]) -> float: + ... + + @overload + def m1(self, x: bytes) -> bytes: + ... + + def m1(self, x: bool | bytes) -> int | float | bytes: + return x diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index b489c09d0..f6aa63ff1 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -827,6 +827,17 @@ test('MethodOverride5', () => { TestUtils.validateResults(analysisResults, 0); }); +test('MethodOverride6', () => { + const configOptions = new ConfigOptions('.'); + + const analysisResults1 = TestUtils.typeAnalyzeSampleFiles(['methodOverride6.py'], configOptions); + TestUtils.validateResults(analysisResults1, 0); + + configOptions.diagnosticRuleSet.reportIncompatibleMethodOverride = 'error'; + const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['methodOverride6.py'], configOptions); + TestUtils.validateResults(analysisResults2, 2); +}); + test('Enums1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums1.py']); From c4d9f04c0299c88581d645b73a1abb41eaf67db5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 31 May 2023 14:29:40 -0600 Subject: [PATCH 235/525] Fixed a bug that resulted in a false positive in certain obscure cases involving callables with parameters that are typed using TypeVarTuples. This addresses https://github.com/microsoft/pyright/issues/5208. --- .../src/analyzer/typeEvaluator.ts | 38 +++++++++++++------ .../src/tests/samples/variadicTypeVar23.py | 22 ++++++++++- 2 files changed, 47 insertions(+), 13 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 10ba2e6f6..c6e7c3bd8 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21136,18 +21136,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return isAssignable; } - function assignTupleTypeArgs( - destType: ClassType, - srcType: ClassType, - diag: DiagnosticAddendum | undefined, - destTypeVarContext: TypeVarContext | undefined, - srcTypeVarContext: TypeVarContext | undefined, - flags: AssignTypeFlags, - recursionCount: number - ) { - const destTypeArgs = [...(destType.tupleTypeArguments ?? [])]; - const srcTypeArgs = [...(srcType.tupleTypeArguments ?? [])]; - + // Adjusts the source type arguments list to match the length of the + // dest type arguments list if the dest list contains an unbounded + // or variadic entry. + function adjustSourceTupleTypeArgs(destTypeArgs: TupleTypeArgument[], srcTypeArgs: TupleTypeArgument[]) { const destVariadicIndex = destTypeArgs.findIndex((t) => isVariadicTypeVar(t.type)); const destUnboundedIndex = destTypeArgs.findIndex((t) => t.isUnbounded); const srcUnboundedIndex = srcTypeArgs.findIndex((t) => t.isUnbounded); @@ -21203,6 +21195,28 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } } + } + + function assignTupleTypeArgs( + destType: ClassType, + srcType: ClassType, + diag: DiagnosticAddendum | undefined, + destTypeVarContext: TypeVarContext | undefined, + srcTypeVarContext: TypeVarContext | undefined, + flags: AssignTypeFlags, + recursionCount: number + ) { + const destTypeArgs = [...(destType.tupleTypeArguments ?? [])]; + const srcTypeArgs = [...(srcType.tupleTypeArguments ?? [])]; + let srcUnboundedIndex: number; + + if (flags & AssignTypeFlags.ReverseTypeVarMatching) { + adjustSourceTupleTypeArgs(srcTypeArgs, destTypeArgs); + srcUnboundedIndex = destTypeArgs.findIndex((t) => t.isUnbounded); + } else { + adjustSourceTupleTypeArgs(destTypeArgs, srcTypeArgs); + srcUnboundedIndex = srcTypeArgs.findIndex((t) => t.isUnbounded); + } if (srcTypeArgs.length === destTypeArgs.length) { for (let argIndex = 0; argIndex < srcTypeArgs.length; argIndex++) { diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py index bd37d51c1..3cb993f8c 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py @@ -1,10 +1,12 @@ # This sample tests a complex combination of TypeVarTuple, # unpacking, bidirectional type inference, and recursive calls. -from typing import TypeVar, TypeVarTuple, Callable +from dataclasses import dataclass +from typing import Generic, TypeVar, TypeVarTuple, Callable X = TypeVar("X") Y = TypeVar("Y") +Z = TypeVar("Z") Xs = TypeVarTuple("Xs") Ys = TypeVarTuple("Ys") @@ -31,3 +33,21 @@ def wrapped(*xs: X): return cons(f, star(f))(*xs) return wrapped + + +@dataclass(frozen=True) +class Tree(Generic[X, Y]): + left: X + right: Y + + +def lift( + f: Callable[[*Xs], tuple[*Ys]] +) -> Callable[[Tree[Z, tuple[*Xs]]], Tree[Z, tuple[*Ys]]]: + ... + + +def test( + f: Callable[[X], Y] +) -> Callable[[Tree[Z, tuple[X, ...]]], Tree[Z, tuple[Y, ...]]]: + return lift(star(f)) From 6a156cd577326488be9780f0ba13acca0daeaa05 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 31 May 2023 19:24:42 -0600 Subject: [PATCH 236/525] Fixed a bug that led to false positive errors when a generic function was called in a nested manner (i.e. invoked as in an argument expression). This addresses https://github.com/microsoft/pyright/issues/4949, https://github.com/microsoft/pyright/issues/5165, https://github.com/microsoft/pyright/issues/5166 and https://github.com/microsoft/pyright/issues/5172. --- .../src/analyzer/constraintSolver.ts | 9 +-- .../src/analyzer/constructors.ts | 6 +- .../src/analyzer/patternMatching.ts | 3 +- .../src/analyzer/typeEvaluator.ts | 25 +++++--- .../src/analyzer/typeGuards.ts | 3 +- .../src/analyzer/typeUtils.ts | 14 +++-- .../pyright-internal/src/analyzer/types.ts | 12 +++- .../src/tests/samples/genericTypes115.py | 62 +++++++++++++++++++ .../src/tests/samples/variadicTypeVar23.py | 18 ++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++ 10 files changed, 134 insertions(+), 24 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes115.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index a59d0e16a..8084ad733 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -826,7 +826,8 @@ export function populateTypeVarContextBasedOnExpectedType( type: ClassType, expectedType: Type, typeVarContext: TypeVarContext, - liveTypeVarScopes: TypeVarScopeId[] | undefined + liveTypeVarScopes: TypeVarScopeId[] | undefined, + usageOffset: number | undefined = undefined ): boolean { if (isAny(expectedType)) { type.details.typeParameters.forEach((typeParam) => { @@ -869,7 +870,7 @@ export function populateTypeVarContextBasedOnExpectedType( let typeArgValue = sameClassTypeVarContext.getPrimarySignature().getTypeVarType(entry.typeVar); if (typeArgValue && liveTypeVarScopes) { - typeArgValue = transformExpectedType(typeArgValue, liveTypeVarScopes); + typeArgValue = transformExpectedType(typeArgValue, liveTypeVarScopes, usageOffset); } if (typeArgValue) { @@ -889,7 +890,7 @@ export function populateTypeVarContextBasedOnExpectedType( let tupleType = tupleEntry.type; if (liveTypeVarScopes) { - tupleType = transformExpectedType(tupleEntry.type, liveTypeVarScopes); + tupleType = transformExpectedType(tupleEntry.type, liveTypeVarScopes, usageOffset); } return { type: tupleType, isUnbounded: tupleEntry.isUnbounded }; @@ -958,7 +959,7 @@ export function populateTypeVarContextBasedOnExpectedType( let typeArgValue: Type | undefined = transformPossibleRecursiveTypeAlias(expectedTypeArgs[index]); if (liveTypeVarScopes) { - typeArgValue = transformExpectedType(typeArgValue, liveTypeVarScopes); + typeArgValue = transformExpectedType(typeArgValue, liveTypeVarScopes, usageOffset); } if (typeArgValue) { diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 3f3523528..985835ee7 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -431,7 +431,8 @@ function validateInitMethod( ClassType.cloneAsInstance(type), expectedSubType, typeVarContext, - getTypeVarScopesForNode(errorNode) + getTypeVarScopesForNode(errorNode), + errorNode.start ) ) { const specializedConstructor = applySolvedTypeVars(initMethodType, typeVarContext); @@ -564,7 +565,8 @@ function validateFallbackConstructorCall( ClassType.cloneAsInstance(type), inferenceContext.expectedType, typeVarContext, - getTypeVarScopesForNode(errorNode) + getTypeVarScopesForNode(errorNode), + errorNode.start ); } diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index bf7ad0a98..31ec05676 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -815,7 +815,8 @@ function narrowTypeBasedOnClassPattern( matchTypeInstance, subjectSubtypeExpanded, typeVarContext, - /* liveTypeVarScopes */ undefined + /* liveTypeVarScopes */ undefined, + /* usageOffset */ undefined ) ) { resultType = applySolvedTypeVars(matchTypeInstance, typeVarContext, { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index c6e7c3bd8..11de0ebdd 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -7431,7 +7431,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ClassType.cloneAsInstance(tupleClassType), inferenceContext.expectedType, tupleTypeVarContext, - ParseTreeUtils.getTypeVarScopesForNode(node) + ParseTreeUtils.getTypeVarScopesForNode(node), + node.start ) ) { return undefined; @@ -10357,7 +10358,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions effectiveReturnType, effectiveExpectedType, tempTypeVarContext, - liveTypeVarScopes + liveTypeVarScopes, + errorNode.start ); const genericReturnType = ClassType.cloneForSpecialization( @@ -10378,7 +10380,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - effectiveExpectedType = transformExpectedType(effectiveExpectedType, liveTypeVarScopes); + effectiveExpectedType = transformExpectedType(effectiveExpectedType, liveTypeVarScopes, errorNode.start); assignType( effectiveReturnType, @@ -10464,7 +10466,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // example of this is the built-in "map" method whose first parameter is // a lambda and second parameter indicates what type the lambda should accept. // In practice, we will limit the number of passes to 2 because it can get - // very expensive to go beyond this, and we don't see generally see cases + // very expensive to go beyond this, and we don't generally see cases // where more than two passes are needed. let passCount = Math.min(typeVarMatchingCount, 2); for (let i = 0; i < passCount; i++) { @@ -10958,7 +10960,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const argResult = validateArgType( { paramCategory: ParameterCategory.Simple, - paramType: transformExpectedType(paramType, liveTypeVarScopes), + paramType: transformExpectedType(paramType, liveTypeVarScopes, /* usageOffset */ undefined), requiresTypeVarMatching: false, argument: arg, errorNode: arg.valueExpression || errorNode, @@ -11303,7 +11305,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const simplifiedType = removeUnbound(argType); const fileInfo = AnalyzerNodeInfo.getFileInfo(argParam.errorNode); - const getDiagAddendum = () => { + function getDiagAddendum() { const diagAddendum = new DiagnosticAddendum(); if (argParam.paramName) { diagAddendum.addMessage( @@ -11317,7 +11319,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } return diagAddendum; - }; + } // Do not check for unknown types if the expected type is "Any". // Don't print types if reportUnknownArgumentType is disabled for performance. @@ -12288,7 +12290,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions builtInDict, inferenceContext.expectedType, dictTypeVarContext, - ParseTreeUtils.getTypeVarScopesForNode(node) + ParseTreeUtils.getTypeVarScopesForNode(node), + node.start, ) ) { return undefined; @@ -12691,7 +12694,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions builtInListOrSet, inferenceContext.expectedType, typeVarContext, - ParseTreeUtils.getTypeVarScopesForNode(node) + ParseTreeUtils.getTypeVarScopesForNode(node), + node.start, ) ) { return undefined; @@ -24011,7 +24015,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ), declaredType, typeVarContext, - ParseTreeUtils.getTypeVarScopesForNode(node) + ParseTreeUtils.getTypeVarScopesForNode(node), + node.start, ); let replacedTypeArg = false; diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index f0f009e36..c31636e4d 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -1283,7 +1283,8 @@ function narrowTypeForIsInstance( unspecializedFilterType, varType, typeVarContext, - /* liveTypeVarScopes */ undefined + /* liveTypeVarScopes */ undefined, + errorNode.start ) ) { specializedFilterType = applySolvedTypeVars( diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 25823702a..cd2d33145 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1133,8 +1133,12 @@ export function validateTypeVarDefault( // expected type uses TypeVars that are not part of the context of the // class we are constructing. We'll replace these type variables with dummy // type variables. -export function transformExpectedType(expectedType: Type, liveTypeVarScopes: TypeVarScopeId[]): Type { - const transformer = new ExpectedTypeTransformer(liveTypeVarScopes); +export function transformExpectedType( + expectedType: Type, + liveTypeVarScopes: TypeVarScopeId[], + usageOffset: number | undefined +): Type { + const transformer = new ExpectedTypeTransformer(liveTypeVarScopes, usageOffset); return transformer.apply(expectedType, 0); } @@ -3830,13 +3834,13 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { } class ExpectedTypeTransformer extends TypeVarTransformer { - constructor(private _liveTypeVarScopes: TypeVarScopeId[]) { + constructor(private _liveTypeVarScopes: TypeVarScopeId[], private _usageOffset: number | undefined) { super(); } override transformTypeVar(typeVar: TypeVarType) { if (!this._isTypeVarLive(typeVar)) { - return TypeVarType.cloneAsInScopePlaceholder(typeVar); + return TypeVarType.cloneAsInScopePlaceholder(typeVar, this._usageOffset); } return typeVar; @@ -3844,7 +3848,7 @@ class ExpectedTypeTransformer extends TypeVarTransformer { override transformParamSpec(paramSpec: TypeVarType): FunctionType | undefined { if (!this._isTypeVarLive(paramSpec)) { - return convertTypeToParamSpecValue(TypeVarType.cloneAsInScopePlaceholder(paramSpec)); + return convertTypeToParamSpecValue(TypeVarType.cloneAsInScopePlaceholder(paramSpec, this._usageOffset)); } return undefined; diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 8f1f78dce..1169b24bf 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -2380,14 +2380,24 @@ export namespace TypeVarType { return newInstance; } - export function cloneAsInScopePlaceholder(type: TypeVarType): TypeVarType { + export function cloneAsInScopePlaceholder(type: TypeVarType, usageOffset?: number): TypeVarType { if (type.isInScopePlaceholder) { return type; } + // If the caller specified a usage offset, append it to the TypeVar + // internal name. This allows us to distinguish it from other uses + // of the same TypeVar. For example nested calls to a generic + // function like `foo(foo(1))`. + let newNameWithScope = type.nameWithScope; + if (usageOffset) { + newNameWithScope = `${type.nameWithScope}-${usageOffset}`; + } + const newInstance = TypeBase.cloneType(type); newInstance.isInScopePlaceholder = true; newInstance.scopeId = InScopePlaceholderScopeId; + newInstance.nameWithScope = newNameWithScope; return newInstance; } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes115.py b/packages/pyright-internal/src/tests/samples/genericTypes115.py new file mode 100644 index 000000000..faecabf95 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes115.py @@ -0,0 +1,62 @@ +# This sample tests the case where a generic function call is nested +# within itself. + +from typing import Callable, ParamSpec, Protocol, Type, TypeVar, Union, overload +from itertools import chain + +P = ParamSpec("P") +R = TypeVar("R") +T = TypeVar("T", covariant=True) + + +def func1(): + return [ + f"{12 if hour == 0 else hour!s}:{minute!s:0>2} {meridian}" + for hour, minute, meridian in chain.from_iterable( + chain.from_iterable( + [(hour, minute, meridian) for minute in range(0, 60, 15)] + for hour in range(12) + ) + for meridian in ("am", "pm") + ) + ] + + +class A(Protocol[T, P]): + def __init__(self, *args: P.args, **kwds: P.kwargs): + ... + + +def make_a(x: Callable[P, R]) -> Type[A[R, P]]: + ... + + +@overload +def func2(x: Type[A[R, P]]) -> Type[A[R, P]]: + ... + + +@overload +def func2(x: Callable[P, R]) -> Type[A[R, P]]: + ... + + +def func2(x: Union[Type[A[R, P]], Callable[P, R]]) -> Type[A[R, P]]: + ... + + +def func3(): + def foo(x: int) -> str: + ... + + x = make_a(foo) + y = func2(x) + z = func2(make_a(foo)) + + reveal_type(y, expected_text="Type[A[str, (x: int)]]") + reveal_type(z, expected_text="Type[A[str, (x: int)]]") + + +def func4(my_dict: dict[str, str]): + reveal_type(my_dict.get("item1", ""), expected_text="str") + reveal_type(my_dict.get("item1", my_dict.get("item2", "")), expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py index 3cb993f8c..c23f1703f 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar23.py @@ -51,3 +51,21 @@ def test( f: Callable[[X], Y] ) -> Callable[[Tree[Z, tuple[X, ...]]], Tree[Z, tuple[Y, ...]]]: return lift(star(f)) + + +def parallel( + f: Callable[[X], Y], + g: Callable[[*Xs], tuple[*Ys]], +) -> Callable[[X, *Xs], tuple[Y, *Ys]]: + def wrapped(a: X, *bs: *Xs): + return f(a), *g(*bs) + + return wrapped + + +def identity(x: X) -> X: + return x + + +def parallel_identity(*xs: *Xs) -> tuple[*Xs]: + return xs diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index e227b0c61..90a29523b 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1109,6 +1109,12 @@ test('GenericTypes114', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes115', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes115.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From cf8dbb44d1c8e112d5099455453421626e1cd784 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 31 May 2023 20:21:01 -0600 Subject: [PATCH 237/525] Fixed style issue. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 11de0ebdd..b146229cb 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -12291,7 +12291,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferenceContext.expectedType, dictTypeVarContext, ParseTreeUtils.getTypeVarScopesForNode(node), - node.start, + node.start ) ) { return undefined; @@ -12695,7 +12695,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferenceContext.expectedType, typeVarContext, ParseTreeUtils.getTypeVarScopesForNode(node), - node.start, + node.start ) ) { return undefined; @@ -24016,7 +24016,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions declaredType, typeVarContext, ParseTreeUtils.getTypeVarScopesForNode(node), - node.start, + node.start ); let replacedTypeArg = false; From 4e17df516236e82002a3187ad7a93869adeff1d5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 1 Jun 2023 15:07:45 -0600 Subject: [PATCH 238/525] Performance: Added caching for the requiresSpecialization function. --- .../src/analyzer/typeUtils.ts | 42 +++++++++++++------ .../pyright-internal/src/analyzer/types.ts | 3 ++ 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index cd2d33145..3d6458884 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2485,6 +2485,30 @@ export function requiresSpecialization( } recursionCount++; + // Is the answer cached? + const canUseCache = !ignorePseudoGeneric && !ignoreSelf; + if (canUseCache && type.cached?.requiresSpecialization !== undefined) { + return type.cached.requiresSpecialization; + } + + const result = _requiresSpecialization(type, ignorePseudoGeneric, ignoreSelf, recursionCount); + + if (canUseCache) { + if (type.cached === undefined) { + type.cached = {}; + } + type.cached.requiresSpecialization = result; + } + + return result; +} + +function _requiresSpecialization( + type: Type, + ignorePseudoGeneric = false, + ignoreSelf = false, + recursionCount = 0 +): boolean { switch (type.category) { case TypeCategory.Class: { if (ClassType.isPseudoGenericClass(type) && ignorePseudoGeneric) { @@ -2492,10 +2516,8 @@ export function requiresSpecialization( } if (type.typeArguments) { - return ( - type.typeArguments.find((typeArg) => - requiresSpecialization(typeArg, ignorePseudoGeneric, ignoreSelf, recursionCount) - ) !== undefined + return type.typeArguments.some((typeArg) => + requiresSpecialization(typeArg, ignorePseudoGeneric, ignoreSelf, recursionCount) ); } @@ -2538,18 +2560,14 @@ export function requiresSpecialization( } case TypeCategory.OverloadedFunction: { - return ( - type.overloads.find((overload) => - requiresSpecialization(overload, ignorePseudoGeneric, ignoreSelf, recursionCount) - ) !== undefined + return type.overloads.some((overload) => + requiresSpecialization(overload, ignorePseudoGeneric, ignoreSelf, recursionCount) ); } case TypeCategory.Union: { - return ( - findSubtype(type, (subtype) => - requiresSpecialization(subtype, ignorePseudoGeneric, ignoreSelf, recursionCount) - ) !== undefined + return type.subtypes.some((subtype) => + requiresSpecialization(subtype, ignorePseudoGeneric, ignoreSelf, recursionCount) ); } diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 1169b24bf..9096ca6fa 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -155,6 +155,9 @@ interface TypeBase { // Type converted to instantiable and instance (cached) instantiableType?: Type; instanceType?: Type; + + // Requires specialization flag (cached) + requiresSpecialization?: boolean; }; } From a0526de43d821686f81ebf12737e2496c9d260e6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 1 Jun 2023 15:59:38 -0600 Subject: [PATCH 239/525] Simplified code in the constraint solver and fixed an edge-case behavior when a parameter with a naked TypeVar type has a default argument of None. --- packages/pyright-internal/src/analyzer/constraintSolver.ts | 6 +++--- .../pyright-internal/src/tests/samples/genericTypes71.py | 6 +++--- packages/pyright-internal/src/tests/typeEvaluator2.test.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 8084ad733..51ca787e4 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -508,7 +508,7 @@ export function assignTypeToTypeVar( curNarrowTypeBound, adjSrcType, diagAddendum, - new TypeVarContext(destType.scopeId), + /* destTypeVarContext */ undefined, /* srcTypeVarContext */ undefined, flags, recursionCount @@ -524,7 +524,7 @@ export function assignTypeToTypeVar( adjSrcType, curNarrowTypeBound, /* diag */ undefined, - new TypeVarContext(destType.scopeId), + /* destTypeVarContext */ undefined, /* srcTypeVarContext */ undefined, flags & AssignTypeFlags.IgnoreTypeVarScope, recursionCount @@ -551,7 +551,7 @@ export function assignTypeToTypeVar( adjSrcType, curNarrowTypeBound, /* diag */ undefined, - new TypeVarContext(destType.scopeId), + /* destTypeVarContext */ undefined, /* srcTypeVarContext */ undefined, flags & AssignTypeFlags.IgnoreTypeVarScope, recursionCount diff --git a/packages/pyright-internal/src/tests/samples/genericTypes71.py b/packages/pyright-internal/src/tests/samples/genericTypes71.py index 3f0a0682b..955d90e51 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes71.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes71.py @@ -33,9 +33,9 @@ def __init__(self, value: T = None): @classmethod def create(cls) -> "Container[T]": - # This should generate an error but it doesn't - # currently because Container[T] being constructed - # is different from the current Container[T]. + # This should generate an error if strictParameterNoneValue + # is true because Container[T] being constructed is different + # from the current Container[T]. return Container[T]() def on_next(self, value: T): diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 90a29523b..de3098f9f 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -848,7 +848,7 @@ test('GenericTypes71', () => { configOptions.diagnosticRuleSet.strictParameterNoneValue = true; analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes71.py'], configOptions); - TestUtils.validateResults(analysisResults, 4); + TestUtils.validateResults(analysisResults, 5); }); test('GenericTypes72', () => { From 731c87649d63e3f36e8262ec5704a708c0ec36d2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 1 Jun 2023 18:12:58 -0600 Subject: [PATCH 240/525] Fixed a bug that resulted in the incorrect return type inference for an async function that has no type annotations. This addresses https://github.com/microsoft/pyright/issues/5220. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index b146229cb..b6c0bbe28 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -20622,6 +20622,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions FunctionType.hasUnannotatedParams(type) && !FunctionType.isStubDefinition(type) && !FunctionType.isPyTypedDefinition(type) && + !FunctionType.isWrapReturnTypeInAwait(type) && args ) { const contextualReturnType = getFunctionInferredReturnTypeUsingArguments(type, args); From 2d4b66ac37e45d0edbf871bf7ad2055977d630e7 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 2 Jun 2023 00:19:48 -0600 Subject: [PATCH 241/525] Fixed bug that resulted in a false positive error when using a nested `Literal` that includes `None`. This addresses https://github.com/microsoft/pyright/issues/5221. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 4 +++- packages/pyright-internal/src/tests/samples/literals1.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index b6c0bbe28..53288f1b3 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13674,7 +13674,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions doForEachSubtype(exprType.type, (subtype) => { if (!isInstantiableClass(subtype) || subtype.literalValue === undefined) { - isLiteralType = false; + if (!isNoneTypeClass(subtype)) { + isLiteralType = false; + } } }); diff --git a/packages/pyright-internal/src/tests/samples/literals1.py b/packages/pyright-internal/src/tests/samples/literals1.py index c01309906..641cdf03f 100644 --- a/packages/pyright-internal/src/tests/samples/literals1.py +++ b/packages/pyright-internal/src/tests/samples/literals1.py @@ -2,7 +2,7 @@ from typing import Literal -ValidResponses = Literal["a", b"b", "c" "c", True, None] +ValidResponses = Literal["a", b"b", Literal["c" "c", True, None]] def foo(a: ValidResponses): From 7ef362eea03c0425e1a604ce0bd0e8ba5925922b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 3 Jun 2023 01:31:15 -0600 Subject: [PATCH 242/525] Fixed a bug that led to extremely long (effectively infinite) evaluation times when a generic function was passed as an argument to itself. This addresses https://github.com/microsoft/pyright/issues/5163. --- .../src/analyzer/typeEvaluator.ts | 3 +++ .../src/analyzer/typeUtils.ts | 12 ++++++++--- .../src/tests/samples/genericTypes87.py | 20 +++++++++++++++---- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 53288f1b3..152f0d9ab 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10471,6 +10471,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let passCount = Math.min(typeVarMatchingCount, 2); for (let i = 0; i < passCount; i++) { const signatureTracker = new UniqueSignatureTracker(); + signatureTracker.addSignature(type); useSpeculativeMode(errorNode, () => { matchResults.argParams.forEach((argParam) => { @@ -10531,6 +10532,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const argResults: ArgResult[] = []; const signatureTracker = new UniqueSignatureTracker(); + signatureTracker.addSignature(type); + matchResults.argParams.forEach((argParam) => { const argResult = validateArgType( argParam, diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 3d6458884..f64149f51 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3564,14 +3564,20 @@ class UniqueFunctionSignatureTransformer extends TypeVarTransformer { // Create new type variables with the same scope but with // different (unique) names. sourceType.details.typeParameters.forEach((typeParam) => { - const replacement = TypeVarType.cloneForNewName( + let replacement: Type = TypeVarType.cloneForNewName( typeParam, `${typeParam.details.name}(${existingSignature.count})` ); - typeVarContext.setTypeVarType(typeParam, replacement); - updatedSourceType = applySolvedTypeVars(sourceType, typeVarContext); + if (replacement.details.isParamSpec) { + replacement = convertTypeToParamSpecValue(replacement); + } + + typeVarContext.setTypeVarType(typeParam, replacement); }); + + updatedSourceType = applySolvedTypeVars(sourceType, typeVarContext); + assert(isFunction(updatedSourceType) || isOverloadedFunction(updatedSourceType)); } this._signatureTracker.addSignature(sourceType); diff --git a/packages/pyright-internal/src/tests/samples/genericTypes87.py b/packages/pyright-internal/src/tests/samples/genericTypes87.py index 2810d091a..8d58c39d4 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes87.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes87.py @@ -3,18 +3,30 @@ # caused an infinite loop. from random import random -from typing import TypeVar +from typing import Any, Callable, TypeVar T = TypeVar("T") U = TypeVar("U") -def f(x: T, y: U) -> T | U: +def func1(x: T, y: U) -> T | U: return x if random() > 0.5 else y -def g(x: T, y: T) -> T: +def func2(x: T, y: T) -> T: return x if random() > 0.5 else y -reveal_type(g(f, g), expected_text="((x: T@f, y: U@f) -> (T@f | U@f)) | T@f | U@f") +reveal_type( + func2(func1, func2), expected_text="(x: T@func1, y: U@func1) -> (T@func1 | U@func1)" +) + + +S = TypeVar("S", bound=Callable[..., Any]) + + +def func3(x: S) -> S: + return x + + +reveal_type(func3(func3), expected_text="(x: S(1)@func3) -> S(1)@func3") From 8bb94dcb06e83cc052d4cba0153d1403631e584c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 3 Jun 2023 14:28:07 -0600 Subject: [PATCH 243/525] Added new "typeWalker" class that allows recursive traversal of a type. Converted `isPartlyUnknown` to use this functionality. The plan is to move other type utility functions to use this same walker to reduce code duplication. --- .../src/analyzer/typeUtils.ts | 86 ++------ .../src/analyzer/typeWalker.ts | 206 ++++++++++++++++++ .../pyright-internal/src/analyzer/types.ts | 2 +- 3 files changed, 223 insertions(+), 71 deletions(-) create mode 100644 packages/pyright-internal/src/analyzer/typeWalker.ts diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index f64149f51..b363ee1c1 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -62,6 +62,7 @@ import { WildcardTypeVarScopeId, } from './types'; import { TypeVarContext, TypeVarSignatureContext } from './typeVarContext'; +import { TypeWalker } from './typeWalker'; export interface ClassMember { // Symbol @@ -2166,86 +2167,31 @@ export function containsUnknown(type: Type) { } // Determines if any part of the type contains "Unknown", including any type arguments. -export function isPartlyUnknown(type: Type, allowUnknownTypeArgsForClasses = false, recursionCount = 0): boolean { - if (recursionCount > maxTypeRecursionCount) { - return false; - } - recursionCount++; - - if (isUnknown(type)) { - return true; - } +export function isPartlyUnknown(type: Type, allowUnknownTypeArgsForClasses = false): boolean { + class PartlyUnknownWalker extends TypeWalker { + isPartlyUnknown = false; - // If this is a generic type alias, see if any of its type arguments - // are either unspecified or are partially known. - if (type.typeAliasInfo?.typeArguments) { - if ( - type.typeAliasInfo.typeArguments.some((typeArg) => - isPartlyUnknown(typeArg, allowUnknownTypeArgsForClasses, recursionCount) - ) - ) { - return true; + constructor(private _allowUnknownTypeArgsForClasses: boolean) { + super(); } - } - // See if a union contains an unknown type. - if (isUnion(type)) { - return ( - findSubtype(type, (subtype) => isPartlyUnknown(subtype, allowUnknownTypeArgsForClasses, recursionCount)) !== - undefined - ); - } + override visitUnknown(type: UnknownType) { + this.isPartlyUnknown = true; - // See if an object or class has an unknown type argument. - if (isClass(type)) { - if (TypeBase.isInstance(type)) { - allowUnknownTypeArgsForClasses = false; + // No need to keep walking. + this.cancelWalk(); } - if (!allowUnknownTypeArgsForClasses && !ClassType.isPseudoGenericClass(type)) { - const typeArgs = type.tupleTypeArguments?.map((t) => t.type) || type.typeArguments; - if (typeArgs) { - for (const argType of typeArgs) { - if (isPartlyUnknown(argType, allowUnknownTypeArgsForClasses, recursionCount)) { - return true; - } - } + override visitClass(type: ClassType) { + if (!this._allowUnknownTypeArgsForClasses || !TypeBase.isInstantiable(type)) { + super.visitClass(type); } } - - return false; } - // See if a function has an unknown type. - if (isOverloadedFunction(type)) { - return OverloadedFunctionType.getOverloads(type).some((overload) => { - return isPartlyUnknown(overload, /* allowUnknownTypeArgsForClasses */ false, recursionCount); - }); - } - - if (isFunction(type)) { - for (let i = 0; i < type.details.parameters.length; i++) { - // Ignore parameters such as "*" that have no name. - if (type.details.parameters[i].name) { - const paramType = FunctionType.getEffectiveParameterType(type, i); - if (isPartlyUnknown(paramType, /* allowUnknownTypeArgsForClasses */ false, recursionCount)) { - return true; - } - } - } - - if ( - type.details.declaredReturnType && - !FunctionType.isParamSpecValue(type) && - isPartlyUnknown(type.details.declaredReturnType, /* allowUnknownTypeArgsForClasses */ false, recursionCount) - ) { - return true; - } - - return false; - } - - return false; + const walker = new PartlyUnknownWalker(allowUnknownTypeArgsForClasses); + walker.walk(type); + return walker.isPartlyUnknown; } // If the specified type is a generic class with a single type argument diff --git a/packages/pyright-internal/src/analyzer/typeWalker.ts b/packages/pyright-internal/src/analyzer/typeWalker.ts new file mode 100644 index 000000000..94a83784f --- /dev/null +++ b/packages/pyright-internal/src/analyzer/typeWalker.ts @@ -0,0 +1,206 @@ +/* + * typeWalker.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * Author: Eric Traut + * + * A class that walks the parts of a type (e.g. the parameters of a function + * or the type arguments of a class). It detects and prevents infinite recursion. + */ + +import { assert, assertNever } from '../common/debug'; +import { + AnyType, + ClassType, + FunctionType, + ModuleType, + NeverType, + NoneType, + OverloadedFunctionType, + Type, + TypeCategory, + TypeVarType, + UnboundType, + UnionType, + UnknownType, + maxTypeRecursionCount, +} from './types'; + +export class TypeWalker { + private _recursionCount = 0; + private _isWalkCanceled = false; + private _hitRecursionLimit = false; + + get isRecursionLimitHit() { + return this._hitRecursionLimit; + } + + get isWalkCanceled() { + return this._isWalkCanceled; + } + + walk(type: Type): void { + if (this._recursionCount > maxTypeRecursionCount) { + this._hitRecursionLimit = true; + return; + } + + if (this._isWalkCanceled) { + return; + } + + this._recursionCount++; + + if (type.typeAliasInfo) { + this.visitTypeAlias(type); + } + + switch (type.category) { + case TypeCategory.Unbound: + this.visitUnbound(type); + break; + + case TypeCategory.Any: + this.visitAny(type); + break; + + case TypeCategory.Unknown: + this.visitUnknown(type); + break; + + case TypeCategory.None: + this.visitNone(type); + break; + + case TypeCategory.Never: + this.visitNever(type); + break; + + case TypeCategory.Function: + this.visitFunction(type); + break; + + case TypeCategory.OverloadedFunction: + this.visitOverloadedFunction(type); + break; + + case TypeCategory.Class: + this.visitClass(type); + break; + + case TypeCategory.Module: + this.visitModule(type); + break; + + case TypeCategory.Union: + this.visitUnion(type); + break; + + case TypeCategory.TypeVar: + this.visitTypeVar(type); + break; + + default: + assertNever(type); + } + + this._recursionCount--; + } + + cancelWalk() { + this._isWalkCanceled = true; + } + + visitTypeAlias(type: Type) { + assert(type.typeAliasInfo); + + if (type.typeAliasInfo.typeArguments) { + for (const typeArg of type.typeAliasInfo.typeArguments) { + this.walk(typeArg); + if (this._isWalkCanceled) { + break; + } + } + } + } + + visitUnbound(type: UnboundType): void { + // Nothing to do. + } + + visitAny(type: AnyType): void { + // Nothing to do. + } + + visitUnknown(type: UnknownType): void { + // Nothing to do. + } + + visitNone(type: NoneType): void { + // Nothing to do. + } + + visitNever(type: NeverType): void { + // Nothing to do. + } + + visitFunction(type: FunctionType): void { + for (let i = 0; i < type.details.parameters.length; i++) { + // Ignore parameters such as "*" that have no name. + if (type.details.parameters[i].name) { + const paramType = FunctionType.getEffectiveParameterType(type, i); + this.walk(paramType); + if (this._isWalkCanceled) { + break; + } + } + } + + if (!this._isWalkCanceled && !FunctionType.isParamSpecValue(type)) { + const returnType = type.details.declaredReturnType ?? type.inferredReturnType; + if (returnType) { + this.walk(returnType); + } + } + } + + visitOverloadedFunction(type: OverloadedFunctionType): void { + for (const overload of type.overloads) { + this.walk(overload); + if (this._isWalkCanceled) { + break; + } + } + } + + visitClass(type: ClassType): void { + if (!ClassType.isPseudoGenericClass(type)) { + const typeArgs = type.tupleTypeArguments?.map((t) => t.type) || type.typeArguments; + if (typeArgs) { + for (const argType of typeArgs) { + this.walk(argType); + if (this._isWalkCanceled) { + break; + } + } + } + } + } + + visitModule(type: ModuleType): void { + // Nothing to do. + } + + visitUnion(type: UnionType): void { + for (const subtype of type.subtypes) { + this.walk(subtype); + if (this._isWalkCanceled) { + break; + } + } + } + + visitTypeVar(type: TypeVarType): void { + // Nothing to do. + } +} diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 9096ca6fa..cc69542df 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -113,7 +113,7 @@ export interface TypeSameOptions { treatAnySameAsUnknown?: boolean; } -interface TypeAliasInfo { +export interface TypeAliasInfo { name: string; fullName: string; typeVarScopeId: TypeVarScopeId; From 5d083ac45a319ea5ba083f590832f9ee4bf8e26e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 3 Jun 2023 14:39:18 -0600 Subject: [PATCH 244/525] Converted `containsLiteral` to use new type walker. --- .../src/analyzer/typeUtils.ts | 69 +++++-------------- 1 file changed, 17 insertions(+), 52 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index b363ee1c1..d8f912df6 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -796,66 +796,31 @@ export function isLiteralTypeOrUnion(type: Type): boolean { return false; } -export function containsType( - type: Type, - predicate: (t: Type) => boolean, - includeTypeArgs = false, - recursionCount = 0 -): boolean { - if (recursionCount > maxTypeRecursionCount) { - return false; - } - recursionCount++; +export function containsLiteralType(type: Type, includeTypeArgs = false): boolean { + class ContainsLiteralTypeWalker extends TypeWalker { + foundLiteral = false; - if (predicate(type)) { - return true; - } - - if (includeTypeArgs && isClass(type)) { - const typeArgs = type.tupleTypeArguments?.map((t) => t.type) || type.typeArguments; - if (typeArgs) { - return typeArgs.some((typeArg) => containsType(typeArg, predicate, includeTypeArgs, recursionCount)); + constructor(private _includeTypeArgs: boolean) { + super(); } - } - - if (isUnion(type)) { - return type.subtypes.some((subtype) => containsType(subtype, predicate, includeTypeArgs, recursionCount)); - } - - if (isOverloadedFunction(type)) { - return type.overloads.some((overload) => containsType(overload, predicate, includeTypeArgs, recursionCount)); - } - if (isFunction(type)) { - const returnType = FunctionType.getSpecializedReturnType(type); - if (returnType && containsType(returnType, predicate, includeTypeArgs, recursionCount)) { - return true; - } + override visitClass(classType: ClassType): void { + if (isClassInstance(classType)) { + if (isLiteralType(classType) || ClassType.isBuiltIn(classType, 'LiteralString')) { + this.foundLiteral = true; + this.cancelWalk(); + } + } - for (let i = 0; i < type.details.parameters.length; i++) { - const paramType = FunctionType.getEffectiveParameterType(type, i); - if (containsType(paramType, predicate, includeTypeArgs, recursionCount)) { - return true; + if (this._includeTypeArgs) { + super.visitClass(classType); } } } - return false; -} - -export function containsLiteralType(type: Type, includeTypeArgs = false, recursionCount = 0): boolean { - return containsType( - type, - (t) => { - if (!isClassInstance(t)) { - return false; - } - - return isLiteralType(t) || ClassType.isBuiltIn(t, 'LiteralString'); - }, - includeTypeArgs, - recursionCount - ); + const walker = new ContainsLiteralTypeWalker(includeTypeArgs); + walker.walk(type); + return walker.foundLiteral; } // If all of the subtypes are literals with the same built-in class (e.g. From 771b7e66bb0ccdd8f3b7864897c3f751f6f75005 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 3 Jun 2023 16:38:09 -0600 Subject: [PATCH 245/525] Rewrote containsAnyOrUnknown so it support recursive detection. --- .../src/analyzer/typeEvaluator.ts | 22 ++++++--- .../src/analyzer/typeUtils.ts | 48 +++++++++++-------- 2 files changed, 44 insertions(+), 26 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 152f0d9ab..538039f5d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -198,7 +198,6 @@ import { computeMroLinearization, containsAnyOrUnknown, containsLiteralType, - containsUnknown, convertParamSpecValueToType, convertToInstance, convertToInstantiable, @@ -8218,16 +8217,21 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions for (let dedupedIndex = 0; dedupedIndex < dedupedMatchResults.length; dedupedIndex++) { if (assignType(dedupedMatchResults[dedupedIndex], result.returnType)) { - if (!containsAnyOrUnknown(dedupedMatchResults[dedupedIndex])) { + const anyOrUnknown = containsAnyOrUnknown( + dedupedMatchResults[dedupedIndex], + /* recurse */ false + ); + if (!anyOrUnknown) { isSubtypeSubsumed = true; - } else if (!containsUnknown(dedupedMatchResults[dedupedIndex])) { + } else if (isAny(anyOrUnknown)) { dedupedResultsIncludeAny = true; } break; } else if (assignType(result.returnType, dedupedMatchResults[dedupedIndex])) { - if (!containsAnyOrUnknown(result.returnType)) { + const anyOrUnknown = containsAnyOrUnknown(result.returnType, /* recurse */ false); + if (!anyOrUnknown) { dedupedMatchResults[dedupedIndex] = NeverType.createNever(); - } else if (!containsUnknown(dedupedMatchResults[dedupedIndex])) { + } else if (isAny(anyOrUnknown)) { dedupedResultsIncludeAny = true; } break; @@ -15433,7 +15437,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const decorator = node.decorators[i]; const newDecoratedType = applyClassDecorator(decoratedType, classType, decorator); - if (containsUnknown(newDecoratedType)) { + const unknownOrAny = containsAnyOrUnknown(newDecoratedType, /* recurse */ false); + + if (unknownOrAny && isUnknown(unknownOrAny)) { // Report this error only on the first unknown type. if (!foundUnknown) { addDiagnostic( @@ -16547,7 +16553,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const decorator = node.decorators[i]; const newDecoratedType = applyFunctionDecorator(decoratedType, functionType, decorator, node); - if (containsUnknown(newDecoratedType)) { + const unknownOrAny = containsAnyOrUnknown(newDecoratedType, /* recurse */ false); + + if (unknownOrAny && isUnknown(unknownOrAny)) { // Report this error only on the first unknown type. if (!foundUnknown) { addDiagnostic( diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index d8f912df6..9e329074f 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2103,32 +2103,42 @@ export function getMembersForModule(moduleType: ModuleType, symbolTable: SymbolT }); } -// Determines if the type is an Any or Unknown or a union that -// contains one of these. It does not look at type arguments. -export function containsAnyOrUnknown(type: Type) { - let foundAnyOrUnknown = false; +// Determines if the type contains an Any or Unknown type. If so, +// it returns the Any or Unknown type. Unknowns are preferred over +// Any if both are present. If recurse is true, it will recurse +// through type arguments and parameters. +export function containsAnyOrUnknown(type: Type, recurse: boolean): AnyType | UnknownType | undefined { + class AnyOrUnknownWalker extends TypeWalker { + anyOrUnknownType: AnyType | UnknownType | undefined; + + constructor(private _recurse: boolean) { + super(); + } - doForEachSubtype(type, (subtype) => { - if (isAnyOrUnknown(subtype)) { - foundAnyOrUnknown = true; + override visitUnknown(type: UnknownType) { + this.anyOrUnknownType = this.anyOrUnknownType ? preserveUnknown(this.anyOrUnknownType, type) : type; } - }); - return foundAnyOrUnknown; -} + override visitAny(type: AnyType) { + this.anyOrUnknownType = this.anyOrUnknownType ? preserveUnknown(this.anyOrUnknownType, type) : type; + } -// Determines if the type is an Unknown or a union that contains an Unknown. -// It does not look at type arguments. -export function containsUnknown(type: Type) { - let foundUnknown = false; + override visitClass(type: ClassType) { + if (this._recurse) { + super.visitClass(type); + } + } - doForEachSubtype(type, (subtype) => { - if (isUnknown(subtype)) { - foundUnknown = true; + override visitFunction(type: FunctionType) { + if (this._recurse) { + super.visitFunction(type); + } } - }); + } - return foundUnknown; + const walker = new AnyOrUnknownWalker(recurse); + walker.walk(type); + return walker.anyOrUnknownType; } // Determines if any part of the type contains "Unknown", including any type arguments. From 746e03a49d8fb5431bb012f4fa2fe06513f26c30 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 3 Jun 2023 17:36:09 -0600 Subject: [PATCH 246/525] Modified overload matching algorithm to better match that of mypy. In particular, if overload matching is ambiguous due to an `Any` or `Unknown` anywhere within an argument type (even within type arguments) and the resulting filtered overloads return the same generic type but with different type arguments, the resulting type was previously the return type of the first filtered overload. It is now the common generic type with erased type arguments. This addresses https://github.com/microsoft/pyright/issues/5216. --- docs/type-concepts-advanced.md | 2 +- .../src/analyzer/typeEvaluator.ts | 45 +++++++--- .../src/analyzer/typeUtils.ts | 34 ++++++++ .../src/tests/samples/overload12.py | 84 ++++++++++++++++++- 4 files changed, 151 insertions(+), 14 deletions(-) diff --git a/docs/type-concepts-advanced.md b/docs/type-concepts-advanced.md index 533c5e905..3c3b98b35 100644 --- a/docs/type-concepts-advanced.md +++ b/docs/type-concepts-advanced.md @@ -307,7 +307,7 @@ Some functions or methods can return one of several different types. In cases wh 4. If more than one overload remains, the “winner” is chosen based on the order in which the overloads are declared. In general, the first remaining overload is the “winner”. There are two exceptions to this rule. Exception 1: When an `*args` (unpacked) argument matches a `*args` parameter in one of the overload signatures, this overrides the normal order-based rule. - Exception 2: When two or more overloads match because an argument evaluates to `Any` or `Unknown`, the matching overload is ambiguous. In this case, pyright examines the return types of the remaining overloads and eliminates types that are duplicates or are subsumed by (i.e. proper subtypes of) other types in the list. If only one type remains after this coalescing step, that type is used. If more than one type remains after this coalescing step, the type of the call expression evaluates to `Unknown`. For example, if two overloads are matched due to an argument that evaluates to `Any`, and those two overloads have return types of `str` and `LiteralString`, pyright will coalesce this to just `str` because `LiteralString` is a proper subtype of `str`. If the two overloads have return types of `str` and `bytes`, the call expression will evaluate to `Unknown` because `str` and `bytes` have no overlap. + Exception 2: When two or more overloads match because an argument or a type argument evaluates to `Any` or `Unknown` and this causes overload matching to be ambiguous. In this case, pyright examines the return types of the remaining overloads and eliminates types that are duplicates or are subsumed by (i.e. proper subtypes of) other types in the list. If only one type remains after this coalescing step, that type is used. If more than one type remains after this coalescing step and all of the types are the same class but with different type arguments, these type arguments are “erased” (i.e. replaced with `Unknown`). Otherwise, the type of the call expression evaluates to `Unknown`. For example, if two overloads are matched due to an argument that evaluates to `Any`, and those two overloads have return types of `str` and `LiteralString`, pyright will coalesce this to just `str` because `LiteralString` is a proper subtype of `str`. If the two overloads have return types of `list[str]` and `list[int]`, the call expression will evaluate to `list[Unknown]`. If the two overloads have return types of `str` and `bytes`, the call expression will evaluate to `Unknown` because `str` and `bytes` have no overlap. 5. If no overloads remain, Pyright considers whether any of the arguments are union types. If so, these union types are expanded into their constituent subtypes, and the entire process of overload matching is repeated with the expanded argument types. If two or more overloads match, the union of their respective return types form the final return type for the call expression. diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 538039f5d..a261e2471 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -206,6 +206,7 @@ import { doForEachSubtype, ensureFunctionSignaturesAreUnique, explodeGenericClass, + getCommonErasedType, getContainerDepth, getDeclaredGeneratorReturnType, getGeneratorTypeArgs, @@ -8256,10 +8257,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (dedupedResultsIncludeAny) { effectiveReturnType = AnyType.create(); } else { - effectiveReturnType = UnknownType.createPossibleType( - combinedTypes, - possibleMatchInvolvesIncompleteUnknown - ); + // If all of the return types are the same generic class, + // replace the type arguments with Unknown. Otherwise return + // an Unknown type that has associated "possible types" to aid + // with completion suggestions. + effectiveReturnType = + getCommonErasedType(dedupedMatchResults) ?? + UnknownType.createPossibleType(combinedTypes, possibleMatchInvolvesIncompleteUnknown); } } @@ -8314,6 +8318,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return matches; } + // If the relevance of some matches differs, filter out the ones that + // are lower relevance. This favors *args parameters in cases where + // a *args argument is used. + if (matches[0].matchResults.relevance !== matches[matches.length - 1].matchResults.relevance) { + matches = matches.filter((m) => m.matchResults.relevance === matches[0].matchResults.relevance); + + if (matches.length < 2) { + return matches; + } + } + // If all of the return types match, select the first one. if ( areTypesSame( @@ -8330,9 +8345,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } for (let i = 0; i < firstArgResults.length; i++) { - // If the arg is Any or Unknown, see if the corresponding + // If the arg contains Any or Unknown, see if the corresponding // parameter types differ in any way. - if (isAnyOrUnknown(firstArgResults[i].argType)) { + const anyOrUnknownInArg = containsAnyOrUnknown(firstArgResults[i].argType, /* recurse */ true); + + if (anyOrUnknownInArg) { const paramTypes = matches.map((match) => i < match.matchResults.argParams.length ? match.matchResults.argParams[i].paramType @@ -10409,7 +10426,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let isTypeIncomplete = matchResults.isTypeIncomplete; let argumentErrors = false; let specializedInitSelfType: Type | undefined; - let anyOrUnknownArgument: UnknownType | AnyType | undefined; + let accumulatedAnyOrUnknownArg: UnknownType | AnyType | undefined; const typeCondition = getTypeCondition(type); if (type.boundTypeVarScopeId) { @@ -10564,10 +10581,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions condition = TypeCondition.combine(condition, argResult.condition) ?? []; } - if (isAnyOrUnknown(argResult.argType)) { - anyOrUnknownArgument = anyOrUnknownArgument - ? preserveUnknown(argResult.argType, anyOrUnknownArgument) - : argResult.argType; + // Determine if the argument type contains an Any or Unknown. Accumulate + // these across all arguments. + const anyOrUnknownInArg = containsAnyOrUnknown(argResult.argType, /* recurs */ true); + + if (anyOrUnknownInArg) { + accumulatedAnyOrUnknownArg = accumulatedAnyOrUnknownArg + ? preserveUnknown(anyOrUnknownInArg, accumulatedAnyOrUnknownArg) + : anyOrUnknownInArg; } if (type.details.paramSpec) { @@ -10722,7 +10743,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { argumentErrors, argResults, - anyOrUnknownArgument, + anyOrUnknownArgument: accumulatedAnyOrUnknownArg, returnType: specializedReturnType, isTypeIncomplete, activeParam: matchResults.activeParam, diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 9e329074f..d3ed7094e 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2283,6 +2283,40 @@ export function specializeTupleClass( return clonedClassType; } +// If the array contains two or more class types that are all the same +// generic type, return the common "erased" type — a type that +// replaces all of the type arguments with Unknown. +export function getCommonErasedType(types: Type[]): ClassType | undefined { + if (types.length < 2) { + return undefined; + } + + if (!isClass(types[0])) { + return undefined; + } + + for (let i = 1; i < types.length; i++) { + const candidate = types[i]; + if ( + !isClass(candidate) || + TypeBase.isInstance(candidate) !== TypeBase.isInstance(types[0]) || + !ClassType.isSameGenericClass(types[0], candidate) + ) { + return undefined; + } + } + + if (isTupleClass(types[0])) { + return specializeTupleClass(types[0], [{ type: UnknownType.create(), isUnbounded: true }]); + } + + return ClassType.cloneForSpecialization( + types[0], + types[0].details.typeParameters.map((t) => UnknownType.create()), + /* isTypeArgumentExplicit */ true + ); +} + // If the type is a function or overloaded function that has a paramSpec // associated with it and P.args and P.kwargs at the end of the signature, // it removes these parameters from the function. diff --git a/packages/pyright-internal/src/tests/samples/overload12.py b/packages/pyright-internal/src/tests/samples/overload12.py index ce0c1b15f..8bcae90b8 100644 --- a/packages/pyright-internal/src/tests/samples/overload12.py +++ b/packages/pyright-internal/src/tests/samples/overload12.py @@ -1,9 +1,12 @@ # This sample tests overload matching in cases where one or more # matches are found due to an Any or Unknown argument. -from typing import Any, Literal, overload +from __future__ import annotations +from typing import Any, Generic, Literal, TypeVar, overload from typing_extensions import LiteralString +_T = TypeVar("_T") + @overload def overload1(x: int, y: float) -> float: @@ -119,3 +122,82 @@ def unknown_any() -> Any: def func5(a: Any): reveal_type(overload4(a, flag=False), expected_text="str") reveal_type(overload4("0", flag=a), expected_text="Unknown") + + +@overload +def overload5(x: list[int]) -> list[int]: + ... + + +@overload +def overload5(x: list[str]) -> list[str]: + ... + + +def overload5(x: list[str] | list[int]) -> list[str] | list[int]: + return x + + +def func6(y: list[Any]): + reveal_type(overload5(y), expected_text="list[Unknown]") + + +class ClassA(Generic[_T]): + @overload + def m1(self: ClassA[int]) -> ClassA[int]: + ... + + @overload + def m1(self: ClassA[str]) -> ClassA[str]: + ... + + def m1(self) -> ClassA[Any]: + return self + + +def func7(a: ClassA[Any]): + reveal_type(a.m1(), expected_text="ClassA[int]") + + +class ClassB(Generic[_T]): + @overload + def m1(self: ClassB[int], obj: int | ClassB[int]) -> ClassB[int]: + ... + + @overload + def m1(self: ClassB[str], obj: str | ClassB[str]) -> ClassB[str]: + ... + + def m1(self, obj: Any) -> ClassB[Any]: + return self + + +def func8(b: ClassB[Any]): + reveal_type(b.m1(b), expected_text="ClassB[Unknown]") + + +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") + + +@overload +def overload6(a: _T1, /) -> tuple[_T1]: + ... + + +@overload +def overload6(a: _T1, b: _T2, /) -> tuple[_T1, _T2]: + ... + + +@overload +def overload6(*args: _T1) -> tuple[_T1, ...]: + ... + + +def overload6(*args: Any) -> tuple[Any, ...]: + return tuple(args) + + +def func9(*args: int): + reveal_type(overload6(*args), expected_text="tuple[int, ...]") From d345e20ebf5fb1d9e322aa3560187571a7f8cf16 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 4 Jun 2023 01:31:13 -0600 Subject: [PATCH 247/525] Changed the matching of an unpacked dictionary passed as an argument to a callable when keyword arguments are present and have default values. Previously, the types of all such parameters were not checked against the unpacked dict type (under the assumption that the default argument would satisfy the parameter in this case). The new behavior matches that of mypy and assumes that the unpacked dict may supply arguments for all otherwise-unmatched keyword parameters even if they have default argument values. This addresses https://github.com/microsoft/pyright/discussions/5231. --- .../src/analyzer/typeEvaluator.ts | 7 ++-- .../src/tests/samples/overload12.py | 40 +++++++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 2 +- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index a261e2471..2efde69c2 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8487,9 +8487,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { argumentErrors: true, isTypeIncomplete: false, overloadsUsedForCall: [] }; } - // Create a helper lambda that evaluates the overload that matches + // Create a helper function that evaluates the overload that matches // the arg/param lists. - const evaluateUsingLastMatchingOverload = (skipUnknownArgCheck: boolean) => { + function evaluateUsingLastMatchingOverload(skipUnknownArgCheck: boolean) { // Find the match with the largest overload index (i.e. the last overload // that was in the overload list). const lastMatch = filteredMatchResults.reduce((previous, current) => { @@ -8507,7 +8507,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions skipUnknownArgCheck, inferenceContext ); - }; + } // If there is only one possible arg/param match among the overloads, // use the normal type matching mechanism because it is faster and @@ -10075,7 +10075,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions paramIndex >= paramDetails.firstPositionOrKeywordIndex && param.category === ParameterCategory.Simple && param.name && - !param.hasDefault && paramMap.has(param.name) && paramMap.get(param.name)!.argsReceived === 0 ) { diff --git a/packages/pyright-internal/src/tests/samples/overload12.py b/packages/pyright-internal/src/tests/samples/overload12.py index 8bcae90b8..d0d7fcc0c 100644 --- a/packages/pyright-internal/src/tests/samples/overload12.py +++ b/packages/pyright-internal/src/tests/samples/overload12.py @@ -201,3 +201,43 @@ def overload6(*args: Any) -> tuple[Any, ...]: def func9(*args: int): reveal_type(overload6(*args), expected_text="tuple[int, ...]") + + +@overload +def overload7(a: float = ..., *, b: Literal[True] = ...) -> float: + ... + + +@overload +def overload7(a: float = ..., *, b: bool) -> str: + ... + + +def overload7(a: float = 1.0, *, b: bool = True) -> float | str: + ... + + +def func10(kwargs_dict: dict[Any, Any]): + reveal_type(overload7(**kwargs_dict), expected_text="Unknown") + + +def func11(kwargs_dict: dict[str, Any]): + reveal_type(overload7(**kwargs_dict), expected_text="Unknown") + + +def func12(kwargs_dict: dict[str, bool]): + reveal_type(overload7(**kwargs_dict), expected_text="str") + + +def func13(kwargs_dict: dict[str, Literal[True]]): + reveal_type(overload7(**kwargs_dict), expected_text="float") + + +def func14(): + reveal_type(overload7(), expected_text="float") + + +def func15(kwargs_dict: dict[str, str]): + # This should generate an error because str isn't a valid type for + # the b parameter. + overload7(1.0, **kwargs_dict) diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 4f4dffc04..cb9fa90a0 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -321,7 +321,7 @@ test('Overload11', () => { test('Overload12', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['overload12.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); test('Overload13', () => { From 2c97966b7d851b4874c9456c4ad8f556a7ecec1c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 4 Jun 2023 14:04:14 -0600 Subject: [PATCH 248/525] Added auto-exclude logic specifically for typeshed so stdlib stubs that are not "in scope" for the current python version are auto-excluded from the project. This applies only if the `typeshedPath` is set to `.`. This addresses https://github.com/python/typeshed/pull/10258. --- .../src/analyzer/importResolver.ts | 27 +++++++++++++++++++ .../pyright-internal/src/analyzer/service.ts | 13 +++++++++ 2 files changed, 40 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 60715df21..3dc577d89 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -425,6 +425,33 @@ export class ImportResolver { return this._cachedPythonSearchPaths.paths; } + getTypeshedStdlibExcludeList(execEnv: ExecutionEnvironment): string[] { + const typeshedStdlibPath = this.getTypeshedStdLibPath(execEnv); + const excludes: string[] = []; + + if (!typeshedStdlibPath) { + return excludes; + } + + if (!this._cachedTypeshedStdLibModuleVersions) { + this._cachedTypeshedStdLibModuleVersions = this._readTypeshedStdLibVersions(execEnv, []); + } + + this._cachedTypeshedStdLibModuleVersions.forEach((versionRange, moduleName) => { + if (versionRange.max !== undefined && execEnv.pythonVersion > versionRange.max) { + // Add excludes for both the ".pyi" file and the directory that contains it + // (in case it's using a "__init__.pyi" file). + const moduleDirPath = combinePaths(typeshedStdlibPath, ...moduleName.split('.')); + excludes.push(moduleDirPath); + + const moduleFilePath = moduleDirPath + '.pyi'; + excludes.push(moduleFilePath); + } + }); + + return excludes; + } + protected readdirEntriesCached(path: string): Dirent[] { const cachedValue = this._cachedEntriesForPath.get(path); if (cachedValue) { diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 07f5c59fb..fce1d4458 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -681,6 +681,19 @@ export class AnalyzerService { configOptions.applyDiagnosticOverrides(commandLineOptions.diagnosticSeverityOverrides); } + // If the caller specified that "typeshedPath" is the root of the project, + // then we're presumably running in the typeshed project itself. Auto-exclude + // stdlib packages that don't match the current Python version. + if (configOptions.typeshedPath === projectRoot && configOptions.defaultPythonVersion !== undefined) { + const excludeList = this.getImportResolver().getTypeshedStdlibExcludeList( + configOptions.getDefaultExecEnvironment() + ); + + excludeList.forEach((exclude) => { + configOptions.exclude.push(getFileSpec(this.fs, commandLineOptions.executionRoot, exclude)); + }); + } + // Override the analyzeUnannotatedFunctions setting based on the command-line setting. if (commandLineOptions.analyzeUnannotatedFunctions !== undefined) { configOptions.diagnosticRuleSet.analyzeUnannotatedFunctions = From c8a16aa148afea403d985a80bd87998b06135c93 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 4 Jun 2023 16:00:04 -0600 Subject: [PATCH 249/525] Fixed issue that caused a false positive error in typeshed CI due to nondeterministic handling of circular dependency in `ReprEnum` class. This addresses https://github.com/microsoft/pyright/issues/5232. --- .../pyright-internal/src/analyzer/checker.ts | 2 ++ .../src/analyzer/typeEvaluator.ts | 21 +++++++++---------- .../src/analyzer/typeEvaluatorTypes.ts | 1 + 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 4b1ff016b..39e09ffe0 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -405,6 +405,8 @@ export class Checker extends ParseTreeWalker { if (ClassType.isEnumClass(classTypeResult.classType)) { this._validateEnumClassOverride(node, classTypeResult.classType); } + + this._evaluator.validateInitSubclassArgs(node, classTypeResult.classType); } this._scopedNodes.push(node); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 2efde69c2..986480763 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -14995,7 +14995,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const initSubclassArgs: FunctionArgument[] = []; let metaclassNode: ExpressionNode | undefined; - let isMetaclassDeferred = false; let exprFlags = EvaluatorFlags.ExpectingType | EvaluatorFlags.AllowGenericClassType | @@ -15060,7 +15059,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions dependency: argType, callback: () => completeClassTypeDeferred(classType, node, node.name), }); - isMetaclassDeferred = true; } if (ClassType.isBuiltIn(argType, 'Protocol')) { @@ -15585,12 +15583,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Update the decorated class type. writeTypeCache(node, { type: decoratedType }, EvaluatorFlags.None); - // Validate that arguments passed to `__init_subclass__` are of the correct type. - // Defer this if the metaclass calculation is deferred. - if (!isMetaclassDeferred) { - validateInitSubclassArgs(node, classType); - } - return { classType, decoratedType }; } @@ -15995,8 +15987,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Recompute the effective metaclass. computeEffectiveMetaclass(type, errorNode); - - validateInitSubclassArgs(node, type); } function validateInitSubclassArgs(node: ClassNode, classType: ClassType) { @@ -19482,7 +19472,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // the corresponding named parameter can be determined from the context. const argNode = node.parent; const paramName = node.value; - if (argNode.parent && argNode.parent.nodeType === ParseNodeType.Call) { + if (argNode.parent?.nodeType === ParseNodeType.Call) { const baseType = getType(argNode.parent.leftExpression); if (baseType) { @@ -19521,6 +19511,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } } + } else if (argNode.parent?.nodeType === ParseNodeType.Class) { + const classTypeResult = getTypeOfClass(argNode.parent); + + // Validate the init subclass args for this class so we can properly + // evaluate its custom keyword parameters. + if (classTypeResult) { + validateInitSubclassArgs(argNode.parent, classTypeResult.classType); + } } } else { const fileInfo = AnalyzerNodeInfo.getFileInfo(node); @@ -25206,6 +25204,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions verifyRaiseExceptionType, verifyDeleteExpression, validateOverloadedFunctionArguments, + validateInitSubclassArgs, isAfterNodeReachable, isNodeReachable, isAsymmetricDescriptorAssignment: isAsymmetricAccessorAssignment, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 92e0b8496..804eadb84 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -466,6 +466,7 @@ export interface TypeEvaluator { skipUnknownArgCheck: boolean, inferenceContext: InferenceContext | undefined ) => CallResult; + validateInitSubclassArgs: (node: ClassNode, classType: ClassType) => void; isAfterNodeReachable: (node: ParseNode) => boolean; isNodeReachable: (node: ParseNode, sourceNode?: ParseNode | undefined) => boolean; From 56e5fff7f7112a06052bc03f3160f61d96e6cee0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 5 Jun 2023 11:52:49 -0600 Subject: [PATCH 250/525] Fixed a bug that led to a false positive error when validating the consistency of the return type of a generator function if the return type declaration was not specifically `Generator` or `Iterable` (or their async counterparts). This addresses https://github.com/microsoft/pyright/issues/5235. --- .../pyright-internal/src/analyzer/checker.ts | 106 ++++++++++-------- .../src/localization/localize.ts | 10 +- .../src/localization/package.nls.en-us.json | 5 +- .../src/tests/checker.test.ts | 2 +- .../src/tests/samples/generators1.py | 30 ++++- .../src/tests/samples/noreturn1.py | 2 - .../tests/samples/typeNarrowingIsinstance7.py | 6 +- 7 files changed, 101 insertions(+), 60 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 39e09ffe0..753378b6a 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -130,7 +130,6 @@ import { getClassFieldsRecursive, getDeclaredGeneratorReturnType, getGeneratorTypeArgs, - getGeneratorYieldType, getProtocolSymbols, getProtocolSymbolsRecursive, getTypeVarArgumentsRecursive, @@ -6210,55 +6209,74 @@ export class Checker extends ParseTreeWalker { } } + // Determines whether a yield or yield from node is compatible with the + // return type annotation of the containing function. private _validateYieldType(node: YieldNode | YieldFromNode, yieldType: Type) { - let declaredReturnType: Type | undefined; - let declaredYieldType: Type | undefined; const enclosingFunctionNode = ParseTreeUtils.getEnclosingFunction(node); + if (!enclosingFunctionNode || !enclosingFunctionNode.returnTypeAnnotation) { + return; + } - if (enclosingFunctionNode) { - const functionTypeResult = this._evaluator.getTypeOfFunction(enclosingFunctionNode); - if (functionTypeResult) { - assert(isFunction(functionTypeResult.functionType)); - declaredReturnType = FunctionType.getSpecializedReturnType(functionTypeResult.functionType); - if (declaredReturnType) { - declaredYieldType = getGeneratorYieldType(declaredReturnType, !!enclosingFunctionNode.isAsync); - } + const functionTypeResult = this._evaluator.getTypeOfFunction(enclosingFunctionNode); + if (!functionTypeResult) { + return; + } - if (declaredReturnType && !declaredYieldType && enclosingFunctionNode.returnTypeAnnotation) { - this._evaluator.addDiagnostic( - this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - enclosingFunctionNode.isAsync - ? Localizer.Diagnostic.generatorAsyncReturnType() - : Localizer.Diagnostic.generatorSyncReturnType(), - enclosingFunctionNode.returnTypeAnnotation - ); - } - } + const declaredReturnType = FunctionType.getSpecializedReturnType(functionTypeResult.functionType); + if (!declaredReturnType) { + return; } - if (this._evaluator.isNodeReachable(node, /* sourceNode */ undefined)) { - if (declaredReturnType && isNever(declaredReturnType)) { - this._evaluator.addDiagnostic( - this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.noReturnContainsYield(), - node - ); - } else if (declaredYieldType) { - const diagAddendum = new DiagnosticAddendum(); - if (!this._evaluator.assignType(declaredYieldType, yieldType, diagAddendum)) { - this._evaluator.addDiagnostic( - this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.yieldTypeMismatch().format({ - exprType: this._evaluator.printType(yieldType), - yieldType: this._evaluator.printType(declaredYieldType), - }) + diagAddendum.getString(), - node.expression || node - ); - } - } + let generatorType: Type | undefined; + if ( + !enclosingFunctionNode.isAsync && + isClassInstance(declaredReturnType) && + ClassType.isBuiltIn(declaredReturnType, 'AwaitableGenerator') + ) { + // Handle the old-style (pre-await) generator case + // if the return type explicitly uses AwaitableGenerator. + generatorType = this._evaluator.getTypingType(node, 'AwaitableGenerator'); + } else { + generatorType = this._evaluator.getTypingType( + node, + enclosingFunctionNode.isAsync ? 'AsyncGenerator' : 'Generator' + ); + } + + if (!generatorType || !isInstantiableClass(generatorType)) { + return; + } + + if (!this._evaluator.isNodeReachable(node, /* sourceNode */ undefined)) { + return; + } + + if (isNever(declaredReturnType)) { + this._evaluator.addDiagnostic( + this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.noReturnContainsYield(), + node + ); + return; + } + + const specializedGenerator = ClassType.cloneAsInstance( + ClassType.cloneForSpecialization(generatorType, [yieldType], /* isTypeArgumentExplicit */ true) + ); + + const diagAddendum = new DiagnosticAddendum(); + if (!this._evaluator.assignType(declaredReturnType, specializedGenerator, diagAddendum)) { + const errorMessage = enclosingFunctionNode.isAsync + ? Localizer.Diagnostic.generatorAsyncReturnType() + : Localizer.Diagnostic.generatorSyncReturnType(); + + this._evaluator.addDiagnostic( + this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + errorMessage.format({ yieldType: this._evaluator.printType(yieldType) }) + diagAddendum.getString(), + node.expression ?? node + ); } } diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 4beff2538..b64055e7e 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -468,9 +468,11 @@ export namespace Localizer { export const functionInConditionalExpression = () => getRawString('Diagnostic.functionInConditionalExpression'); export const functionTypeParametersIllegal = () => getRawString('Diagnostic.functionTypeParametersIllegal'); export const futureImportLocationNotAllowed = () => getRawString('Diagnostic.futureImportLocationNotAllowed'); - export const generatorAsyncReturnType = () => getRawString('Diagnostic.generatorAsyncReturnType'); + export const generatorAsyncReturnType = () => + new ParameterizedString<{ yieldType: string }>(getRawString('Diagnostic.generatorAsyncReturnType')); export const generatorNotParenthesized = () => getRawString('Diagnostic.generatorNotParenthesized'); - export const generatorSyncReturnType = () => getRawString('Diagnostic.generatorSyncReturnType'); + export const generatorSyncReturnType = () => + new ParameterizedString<{ yieldType: string }>(getRawString('Diagnostic.generatorSyncReturnType')); export const genericBaseClassNotAllowed = () => getRawString('Diagnostic.genericBaseClassNotAllowed'); export const genericClassAssigned = () => getRawString('Diagnostic.genericClassAssigned'); export const genericClassDeleted = () => getRawString('Diagnostic.genericClassDeleted'); @@ -1065,10 +1067,6 @@ export namespace Localizer { export const yieldFromIllegal = () => getRawString('Diagnostic.yieldFromIllegal'); export const yieldFromOutsideAsync = () => getRawString('Diagnostic.yieldFromOutsideAsync'); export const yieldOutsideFunction = () => getRawString('Diagnostic.yieldOutsideFunction'); - export const yieldTypeMismatch = () => - new ParameterizedString<{ exprType: string; yieldType: string }>( - getRawString('Diagnostic.yieldTypeMismatch') - ); export const yieldWithinListCompr = () => getRawString('Diagnostic.yieldWithinListCompr'); export const zeroCaseStatementsFound = () => getRawString('Diagnostic.zeroCaseStatementsFound'); export const zeroLengthTupleNotAllowed = () => getRawString('Diagnostic.zeroLengthTupleNotAllowed'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 18b563062..0818a3202 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -196,9 +196,9 @@ "functionInConditionalExpression": "Conditional expression references function which always evaluates to True", "functionTypeParametersIllegal": "Function type parameter syntax requires Python 3.12 or newer", "futureImportLocationNotAllowed": "Imports from __future__ must be at the beginning of the file", - "generatorAsyncReturnType": "Return type of async generator function must be \"AsyncGenerator\" or \"AsyncIterable\"", + "generatorAsyncReturnType": "Return type of async generator function must be compatible with \"AsyncGenerator[{yieldType}, Any]\"", "generatorNotParenthesized": "Generator expressions must be parenthesized if not sole argument", - "generatorSyncReturnType": "Return type of generator function must be \"Generator\" or \"Iterable\"", + "generatorSyncReturnType": "Return type of generator function must be compatible with \"Generator[{yieldType}, Any, Any]\"", "genericBaseClassNotAllowed": "\"Generic\" base class cannot be used with type parameter syntax", "genericClassAssigned": "Generic class type cannot be assigned", "genericClassDeleted": "Generic class type cannot be deleted", @@ -562,7 +562,6 @@ "yieldFromIllegal": "Use of \"yield from\" requires Python 3.3 or newer", "yieldFromOutsideAsync": "\"yield from\" not allowed in an async function", "yieldOutsideFunction": "\"yield\" not allowed outside of a function or lambda", - "yieldTypeMismatch": "Expression of type \"{exprType}\" cannot be assigned to yield type \"{yieldType}\"", "yieldWithinListCompr": "\"yield\" not allowed inside a list comprehension", "zeroCaseStatementsFound": "Match statement must include at least one case statement", "zeroLengthTupleNotAllowed": "Zero-length tuple not allowed in this context" diff --git a/packages/pyright-internal/src/tests/checker.test.ts b/packages/pyright-internal/src/tests/checker.test.ts index e6dd75e1d..24764cb1c 100644 --- a/packages/pyright-internal/src/tests/checker.test.ts +++ b/packages/pyright-internal/src/tests/checker.test.ts @@ -128,7 +128,7 @@ test('Constants1', () => { test('NoReturn1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['noreturn1.py']); - TestUtils.validateResults(analysisResults, 5); + TestUtils.validateResults(analysisResults, 4); }); test('NoReturn2', () => { diff --git a/packages/pyright-internal/src/tests/samples/generators1.py b/packages/pyright-internal/src/tests/samples/generators1.py index 2f14ef15b..7cddc5f27 100644 --- a/packages/pyright-internal/src/tests/samples/generators1.py +++ b/packages/pyright-internal/src/tests/samples/generators1.py @@ -1,7 +1,17 @@ # This sample tests various type checking operations relating to # generator functions (those with a "yield" method). -from typing import Any, Generator, Dict, Iterable, Iterator, List, TypedDict +from typing import ( + Any, + Awaitable, + Generator, + Dict, + Iterable, + Iterator, + List, + Protocol, + TypedDict, +) class ClassA: @@ -124,3 +134,21 @@ def generator13() -> Generator[TD1, None, None]: def generator14() -> Iterator[TD1]: yield {"x": "x"} + + +class IntIterator(Protocol): + def __next__(self, /) -> int: + ... + + +def generator15() -> IntIterator: + yield 0 + + +class AsyncIntIterator(Protocol): + def __anext__(self, /) -> Awaitable[int]: + ... + + +async def generator16() -> AsyncIntIterator: + yield 0 diff --git a/packages/pyright-internal/src/tests/samples/noreturn1.py b/packages/pyright-internal/src/tests/samples/noreturn1.py index 49c1e19af..872e66dd1 100644 --- a/packages/pyright-internal/src/tests/samples/noreturn1.py +++ b/packages/pyright-internal/src/tests/samples/noreturn1.py @@ -29,8 +29,6 @@ def func4(x: bool) -> str: func3() -# This should generate an error because a generator -# function must return an iterable type. def func5(x: bool) -> NoReturn: if x: # This should generate an error because the function diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance7.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance7.py index 38673fca4..1bcc49c70 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance7.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance7.py @@ -2,7 +2,7 @@ # a union of class types, some of which are tuples of other types # and some of which are not. -from typing import Tuple, Type, TypeVar, Iterator, Union +from typing import TypeVar, Iterator T1 = TypeVar("T1", bound="X") T2 = TypeVar("T2", bound="X") @@ -12,8 +12,8 @@ class X: element_list: list["X"] def return_iter( - self, cls: Union[Type[T1], Tuple[Type[T1], Type[T2]]] - ) -> Union[Iterator[T1], Iterator[T2]]: + self, cls: type[T1] | tuple[type[T1], type[T2]] + ) -> Iterator[T1 | T2]: for item in self.element_list: if isinstance(item, cls): yield item From 8f82de9ba8c4ff213ece01cb139e57cce3c1a026 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 5 Jun 2023 12:26:54 -0600 Subject: [PATCH 251/525] Fixed a false negative type error involving a recursive type alias that includes a `Sequence` and a `str` (which is itself a recursive type involving `Sequence`). This addresses https://github.com/microsoft/pyright/issues/5215. --- .../src/analyzer/typeEvaluator.ts | 7 ++++++ .../src/tests/samples/recursiveTypeAlias14.py | 22 +++++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 6 +++++ 3 files changed, 35 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/recursiveTypeAlias14.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 986480763..1c14f476f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21676,6 +21676,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ) { // Use a smaller recursive limit in this case to prevent runaway recursion. if (recursionCount > maxRecursiveTypeAliasRecursionCount) { + // Add a special case for when the source is a str, which is itself + // a recursive type (since it derives from Sequence[str]). + if (isClassInstance(srcType) && ClassType.isBuiltIn(srcType, 'str') && isUnion(transformedDestType)) { + return transformedDestType.subtypes.some( + (subtype) => isClassInstance(subtype) && ClassType.isBuiltIn(subtype, ['object', 'str']) + ); + } return true; } } diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias14.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias14.py new file mode 100644 index 000000000..95e6bc924 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias14.py @@ -0,0 +1,22 @@ +# This sample tests the case where a recursive type alias contains +# a `Sequence` that potentially overlaps with str (which derives from +# Sequence[str]). + +from typing import Sequence + + +NestedIntList = int | Sequence["NestedIntList"] + + +def func1() -> NestedIntList: + result: NestedIntList = 1 + for _ in range(1): + result = [result] + return result + +def func2() -> NestedIntList: + # This should generate an error. + result: NestedIntList = "" + for _ in range(1): + result = [result] + return result diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index f6aa63ff1..72b99b8e4 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -708,6 +708,12 @@ test('RecursiveTypeAlias13', () => { TestUtils.validateResults(analysisResults, 0); }); +test('RecursiveTypeAlias14', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['recursiveTypeAlias14.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + test('Classes1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['classes1.py']); From c8e4d9c5d7b711a261a3af0e676868443aaeaf11 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 5 Jun 2023 13:27:46 -0600 Subject: [PATCH 252/525] Fixed a bug that led to a false positive error when a call expression was used on the RHS of an "or" or "and" operator and the target callable involved an overload with a function-scoped TypeVar in the return type. This addresses https://github.com/microsoft/pyright/issues/5234. --- .../src/analyzer/constraintSolver.ts | 19 +++++----- .../src/tests/samples/operators11.py | 36 +++++++++++++++++++ .../src/tests/typeEvaluator1.test.ts | 6 ++++ 3 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/operators11.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 51ca787e4..1a1bc0ec8 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -422,14 +422,17 @@ export function assignTypeToTypeVar( if ((flags & AssignTypeFlags.PopulatingExpectedType) !== 0) { // If we're populating the expected type, constrain either the - // narrow type bound, wide type bound or both. - if ((flags & AssignTypeFlags.EnforceInvariance) !== 0) { - newNarrowTypeBound = adjSrcType; - newWideTypeBound = adjSrcType; - } else if (isContravariant) { - newNarrowTypeBound = adjSrcType; - } else { - newWideTypeBound = adjSrcType; + // narrow type bound, wide type bound or both. Don't overwrite + // an existing entry. + if (!curEntry) { + if ((flags & AssignTypeFlags.EnforceInvariance) !== 0) { + newNarrowTypeBound = adjSrcType; + newWideTypeBound = adjSrcType; + } else if (isContravariant) { + newNarrowTypeBound = adjSrcType; + } else { + newWideTypeBound = adjSrcType; + } } } else if (isContravariant) { // Update the wide type bound. diff --git a/packages/pyright-internal/src/tests/samples/operators11.py b/packages/pyright-internal/src/tests/samples/operators11.py new file mode 100644 index 000000000..3b77b885d --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/operators11.py @@ -0,0 +1,36 @@ +# This sample tests the handling of the "or" and "and" operators +# when used with bidirectional type inference. + + +from typing import Any, TypeVar, overload + +_T = TypeVar("_T", bound=str) + + +@overload +def func1(cmd: _T) -> _T: + ... + + +@overload +def func1(cmd: bytes) -> None: + ... + + +def func1(cmd: Any) -> Any: + ... + + +def func2(x: bool): + y = x or func1("") + reveal_type(y, expected_text="str | Literal[True]") + + +def func3(x: list[str]): + y = x or [] + reveal_type(y, expected_text="list[str]") + + +def func4(x: set[str]): + y = x or [] + reveal_type(y, expected_text="set[str] | list[Any]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 211c72ac2..a8ea63498 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1122,6 +1122,12 @@ test('Operators10', () => { TestUtils.validateResults(analysisResults, 1); }); +test('Operators11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators11.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Optional1', () => { const configOptions = new ConfigOptions('.'); From 5ca3d900fdc43144ef58e83f1ead5c84b28331e1 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 5 Jun 2023 15:06:24 -0600 Subject: [PATCH 253/525] Deleted redundant documentation. --- docs/internals.md | 74 ----------------------------------------------- 1 file changed, 74 deletions(-) diff --git a/docs/internals.md b/docs/internals.md index e0da0c976..9372ec974 100644 --- a/docs/internals.md +++ b/docs/internals.md @@ -35,77 +35,3 @@ The [binder](https://github.com/microsoft/pyright/blob/main/packages/pyright-int The [checker](https://github.com/microsoft/pyright/blob/main/packages/pyright-internal/src/analyzer/checker.ts) is responsible for checking all of the statements and expressions within a source file. It relies heavily on the [typeEvaluator](https://github.com/microsoft/pyright/blob/main/packages/pyright-internal/src/analyzer/typeEvaluator.ts) module, which performs most of the heavy lifting. The checker doesn’t run on all files, only those that require full diagnostic output. For example, if a source file is not part of the program but is imported by the program, the checker doesn’t need to run on it. -## Type Checking Concepts - -Pyright uses an internal type called “Unknown” to represent types that are not annotated and cannot be inferred. Unknown is generally treated like the “Any” type in terms of type checking, but it provides a way for developers to know when type annotations are missing and could provide additional value. - -Pyright attempts to infer the types of global (module-level) variables, class variables, instance variables, and local variables. Return and yield types are also inferred. If type annotations are provided in these cases, the type annotation overrides any inferred types. - -Pyright supports type narrowing to track assumptions that apply within certain code flow paths. For example, consider the following code: -```python -def func(a: str | list[str] | None): - if isinstance(a, str): - log(a) - elif isinstance(a, list): - log(msg) for msg in a - else: - log(a) -``` - -In this example, the type evaluator knows that parameter a is either None, str, or list[str]. Within the first `if` clause, a is constrained to be a str. Within the `elif` clause, it is constrained to be a list[str], and within the `else` clause, it has to be None (by process of elimination). The type checker would therefore flag the final line as an error if the log method could not accept None as a parameter. - -Narrowing is also applied when values are assigned to a variable. - -```python -def func(b: str | list[str] | None): - # The declared type of “a” is a union of three types - # (str, list[str] and None). - a: str | list[str] | None = b - reveal_type(a) # Type is `str | list[str] | None` - - a = "hi" - reveal_type(a) # Type is `str` - - a = ["a", "b", "c"] - reveal_type(a) # Type is `list[str]` - - a = None - reveal_type(a) # Type is `None` -``` - -If the type narrowing logic exhausts all possible subtypes, it can be assumed that a code path will never be taken. For example, consider the following: - -```python -def func(a: Foo | Bar): - if isinstance(a, Foo): - # “a” must be type Foo - a.do_something_1() - elif isinstance(a, Bar): - # “a” must be type Bar - a.do_something_2() - else: - # This code is unreachable, so type of “a” is "Never" - a.do_something_3() -``` - -In this case, the type of parameter “a” is initially “Union[Foo, Bar]”. Within the “if” clause, the type narrowing logic will conclude that it must be of type “Foo”. Within the “elif” clause, it must be of type “Bar”. What type is it within the “else” clause? The type narrowing system has eliminated all possible subtypes, so it gives it the type “Never”. This is generally indicates that there’s a logic error in the code because there’s way that code block will ever be executed. - -Narrowing is also used to discriminate between subtypes of a union when the union subtypes have a common member with declared literal types that differentiate between the subtypes. - -```python -class Foo: - kind: Literal["Foo"] - def do_something_1(self): - pass - -class Bar: - kind: Literal["Bar"] - def do_something_2(self): - pass - -def func(a: Foo | Bar): - if a.kind == "Foo": - a.do_something_1() - else: - a.do_something_2() -``` From adf43dbc1413458769a1078d385157efed9495f0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 5 Jun 2023 16:01:38 -0600 Subject: [PATCH 254/525] Fixed a bug in the tokenizer that led to an incorrect error for an f-string that ends in a double backslash. This addresses https://github.com/microsoft/pyright/issues/5240. --- packages/pyright-internal/src/parser/tokenizer.ts | 3 ++- .../pyright-internal/src/tests/tokenizer.test.ts | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/parser/tokenizer.ts b/packages/pyright-internal/src/parser/tokenizer.ts index e8775c6e4..59e60983a 100644 --- a/packages/pyright-internal/src/parser/tokenizer.ts +++ b/packages/pyright-internal/src/parser/tokenizer.ts @@ -1572,8 +1572,9 @@ export class Tokenizer { const isEscapedNewLine = this._cs.getCurrentChar() === Char.CarriageReturn || this._cs.getCurrentChar() === Char.LineFeed; + const isEscapedBackslash = this._cs.getCurrentChar() === Char.Backslash; - if (!isFString || isEscapedQuote || isEscapedNewLine) { + if (!isFString || isEscapedBackslash || isEscapedQuote || isEscapedNewLine) { if (isEscapedNewLine) { if ( this._cs.getCurrentChar() === Char.CarriageReturn && diff --git a/packages/pyright-internal/src/tests/tokenizer.test.ts b/packages/pyright-internal/src/tests/tokenizer.test.ts index 17208894f..b7e54ab3c 100644 --- a/packages/pyright-internal/src/tests/tokenizer.test.ts +++ b/packages/pyright-internal/src/tests/tokenizer.test.ts @@ -652,6 +652,18 @@ test('Strings: f-string with single right brace', () => { assert.equal(fStringEndToken.length, 1); }); +test('Strings: f-string with backslash escape', () => { + const t = new Tokenizer(); + const results = t.tokenize(`f'\\\\'`); + assert.equal(results.tokens.count, 3 + _implicitTokenCount); + + assert.equal(results.tokens.getItemAt(0).type, TokenType.FStringStart); + const fStringMiddleToken = results.tokens.getItemAt(1) as FStringMiddleToken; + assert.equal(fStringMiddleToken.type, TokenType.FStringMiddle); + assert.equal(fStringMiddleToken.length, 2); + assert.equal(results.tokens.getItemAt(2).type, TokenType.FStringEnd); +}); + test('Strings: f-string with new line escape', () => { const t = new Tokenizer(); const results = t.tokenize(`f'x \\\ny'`); From 9a8b76a3a35cd0c6ab51aecbdaba9802b79f751e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 6 Jun 2023 01:29:45 -0600 Subject: [PATCH 255/525] Improved evaluation of nested calls that involve the same generic function or multiple uses of the same generic function as arguments to the same call. In these cases, the generic signatures need to be made unique so the type variables of each are treated as though they are independent. This addresses https://github.com/microsoft/pyright/issues/4948. --- .../src/analyzer/typeEvaluator.ts | 77 +++++++++++-- .../src/analyzer/typeUtils.ts | 106 ++++++++++++------ .../src/tests/samples/genericTypes105.py | 35 +++++- 3 files changed, 173 insertions(+), 45 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1c14f476f..cb1765407 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1157,6 +1157,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ) { expectedTypeCache.set(node.id, inferenceContext.expectedType); + // If this is a generic function and there is a signature tracker, + // make sure the signature is unique. + if (inferenceContext.signatureTracker && isFunction(typeResult.type)) { + typeResult.type = ensureFunctionSignaturesAreUnique( + typeResult.type, + inferenceContext.signatureTracker, + node.start + ); + } + if (!typeResult.isIncomplete && !typeResult.expectedTypeDiagAddendum) { const diag = new DiagnosticAddendum(); @@ -7377,7 +7387,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let expectedTypeDiagAddendum: DiagnosticAddendum | undefined; if (effectiveExpectedType) { - const result = getTypeOfTupleWithContext(node, makeInferenceContext(effectiveExpectedType)); + const result = getTypeOfTupleWithContext( + node, + makeInferenceContext( + effectiveExpectedType, + /* isTypeIncomplete */ false, + inferenceContext?.signatureTracker + ) + ); + if (result && !result.typeErrors) { return result; } @@ -7453,7 +7471,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getTypeOfExpression( expr, /* flags */ undefined, - makeInferenceContext(index < expectedTypes.length ? expectedTypes[index] : undefined) + makeInferenceContext( + index < expectedTypes.length ? expectedTypes[index] : undefined, + inferenceContext.isTypeIncomplete, + inferenceContext.signatureTracker + ) ) ); const isIncomplete = entryTypeResults.some((result) => result.isIncomplete); @@ -7571,6 +7593,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let typeResult: TypeResult = { type: UnknownType.create() }; + // If the inference context has an associated signature tracker, make sure + // the base type of this call is not the same as one of the tracked signatures. + // This is important for nested generic calls (e.g. "foo(foo(x))"). + if (inferenceContext?.signatureTracker) { + baseTypeResult.type = ensureFunctionSignaturesAreUnique( + baseTypeResult.type, + inferenceContext.signatureTracker, + node.leftExpression.start + ); + } + if (!isTypeAliasPlaceholder(baseTypeResult.type)) { if (node.leftExpression.nodeType === ParseNodeType.Name && node.leftExpression.value === 'super') { // Handle the built-in "super" call specially. @@ -8371,6 +8404,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ): FunctionType | undefined { let overloadIndex = 0; let matches: MatchArgsToParamsResult[] = []; + const signatureTracker = new UniqueSignatureTracker(); // Create a list of potential overload matches based on arguments. OverloadedFunctionType.getOverloads(typeResult.type).forEach((overload) => { @@ -8401,6 +8435,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions errorNode, match, new TypeVarContext(getTypeVarScopeId(match.overload)), + signatureTracker, /* skipUnknownArgCheck */ true ); @@ -10300,6 +10335,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferenceContext: InferenceContext | undefined ): CallResult { const type = matchResults.overload; + const signatureTracker = inferenceContext?.signatureTracker ?? new UniqueSignatureTracker(); + matchResults.overload = ensureFunctionSignaturesAreUnique( + matchResults.overload, + signatureTracker, + errorNode.start + ) as FunctionType; // Can we safely ignore the inference context (either because it's not provided // or will have no effect)? If so, we can eliminate a bunch of extra work. @@ -10310,7 +10351,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions !type.details.declaredReturnType || !requiresSpecialization(FunctionType.getSpecializedReturnType(type) ?? UnknownType.create()) ) { - return validateFunctionArgumentTypes(errorNode, matchResults, typeVarContext, skipUnknownArgCheck); + return validateFunctionArgumentTypes( + errorNode, + matchResults, + typeVarContext, + signatureTracker, + skipUnknownArgCheck + ); } const effectiveReturnType = getFunctionEffectiveReturnType(type); @@ -10339,6 +10386,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions errorNode, matchResults, typeVarContextCopy, + signatureTracker, skipUnknownArgCheck ); @@ -10412,13 +10460,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } - return validateFunctionArgumentTypes(errorNode, matchResults, typeVarContext, skipUnknownArgCheck); + return validateFunctionArgumentTypes( + errorNode, + matchResults, + typeVarContext, + signatureTracker, + skipUnknownArgCheck + ); } function validateFunctionArgumentTypes( errorNode: ExpressionNode, matchResults: MatchArgsToParamsResult, typeVarContext: TypeVarContext, + signatureTracker: UniqueSignatureTracker, skipUnknownArgCheck = false ): CallResult { const type = matchResults.overload; @@ -10490,9 +10545,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // where more than two passes are needed. let passCount = Math.min(typeVarMatchingCount, 2); for (let i = 0; i < passCount; i++) { - const signatureTracker = new UniqueSignatureTracker(); - signatureTracker.addSignature(type); - useSpeculativeMode(errorNode, () => { matchResults.argParams.forEach((argParam) => { if (!argParam.requiresTypeVarMatching) { @@ -10551,9 +10603,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let condition: TypeCondition[] = []; const argResults: ArgResult[] = []; - const signatureTracker = new UniqueSignatureTracker(); - signatureTracker.addSignature(type); - matchResults.argParams.forEach((argParam) => { const argResult = validateArgType( argParam, @@ -11120,7 +11169,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const exprTypeResult = getTypeOfExpression( argParam.argument.valueExpression, flags, - makeInferenceContext(expectedType, !!typeResult?.isIncomplete) + makeInferenceContext(expectedType, !!typeResult?.isIncomplete, signatureTracker) ); argType = exprTypeResult.type; @@ -11128,7 +11177,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If the type includes multiple instances of a generic function // signature, force the type arguments for the duplicates to have // unique names. - argType = ensureFunctionSignaturesAreUnique(argType, signatureTracker); + argType = ensureFunctionSignaturesAreUnique( + argType, + signatureTracker, + argParam.argument.valueExpression.start + ); if (exprTypeResult.isIncomplete) { isTypeIncomplete = true; diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index d3ed7094e..355defa20 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -206,32 +206,41 @@ export interface ApplyTypeVarOptions { export interface InferenceContext { expectedType: Type; isTypeIncomplete?: boolean; + signatureTracker?: UniqueSignatureTracker; } -export interface SignatureWithCount { +export interface SignatureWithOffsets { type: FunctionType; - count: number; + expressionOffsets: number[]; } +// Tracks whether a function signature has been seen before within +// an expression. For example, in the expression "foo(foo, foo)", the +// signature for "foo" will be seen three times at three different +// file offsets. If the signature is generic, we need to create unique +// type variables for each instance because they are independent of +// each other. export class UniqueSignatureTracker { - signaturesSeen: SignatureWithCount[]; + private _signaturesSeen: SignatureWithOffsets[]; constructor() { - this.signaturesSeen = []; + this._signaturesSeen = []; } - findSignature(signature: FunctionType): SignatureWithCount | undefined { - return this.signaturesSeen.find((s) => { + findSignature(signature: FunctionType): SignatureWithOffsets | undefined { + return this._signaturesSeen.find((s) => { return isTypeSame(signature, s.type); }); } - addSignature(signature: FunctionType) { + addSignature(signature: FunctionType, offset: number) { const existingSignature = this.findSignature(signature); if (existingSignature) { - existingSignature.count++; + if (!existingSignature.expressionOffsets.some((o) => o === offset)) { + existingSignature.expressionOffsets.push(offset); + } } else { - this.signaturesSeen.push({ type: signature, count: 1 }); + this._signaturesSeen.push({ type: signature, expressionOffsets: [offset] }); } } } @@ -284,22 +293,32 @@ export function isTypeVarSame(type1: TypeVarType, type2: Type) { return isCompatible; } -export function makeInferenceContext(expectedType: undefined, isTypeIncomplete?: boolean): undefined; -export function makeInferenceContext(expectedType: Type, isTypeIncomplete?: boolean): InferenceContext; +export function makeInferenceContext( + expectedType: undefined, + isTypeIncomplete?: boolean, + signatureTracker?: UniqueSignatureTracker +): undefined; +export function makeInferenceContext( + expectedType: Type, + isTypeIncomplete?: boolean, + signatureTracker?: UniqueSignatureTracker +): InferenceContext; export function makeInferenceContext( expectedType: Type | undefined, - isTypeIncomplete?: boolean + isTypeIncomplete?: boolean, + signatureTracker?: UniqueSignatureTracker ): InferenceContext | undefined; export function makeInferenceContext( expectedType: Type | undefined, - isTypeIncomplete?: boolean + isTypeIncomplete?: boolean, + signatureTracker?: UniqueSignatureTracker ): InferenceContext | undefined { if (!expectedType) { return undefined; } - return { expectedType, isTypeIncomplete }; + return { expectedType, isTypeIncomplete, signatureTracker }; } // Calls a callback for each subtype and combines the results @@ -973,8 +992,12 @@ export function populateTypeVarContextForSelfType( // Looks for duplicate function types within the type and ensures that // if they are generic, they have unique type variables. -export function ensureFunctionSignaturesAreUnique(type: Type, signatureTracker: UniqueSignatureTracker): Type { - const transformer = new UniqueFunctionSignatureTransformer(signatureTracker); +export function ensureFunctionSignaturesAreUnique( + type: Type, + signatureTracker: UniqueSignatureTracker, + expressionOffset: number +): Type { + const transformer = new UniqueFunctionSignatureTransformer(signatureTracker, expressionOffset); return transformer.apply(type, 0); } @@ -3498,10 +3521,20 @@ class TypeVarDefaultValidator extends TypeVarTransformer { } class UniqueFunctionSignatureTransformer extends TypeVarTransformer { - constructor(private _signatureTracker: UniqueSignatureTracker) { + constructor(private _signatureTracker: UniqueSignatureTracker, private _expressionOffset: number) { super(); } + override transformGenericTypeAlias(type: Type, recursionCount: number): Type { + // Don't transform type aliases. + return type; + } + + override transformTypeVarsInClassType(classType: ClassType, recursionCount: number): ClassType { + // Don't transform classes. + return classType; + } + override transformTypeVarsInFunctionType( sourceType: FunctionType, recursionCount: number @@ -3516,26 +3549,35 @@ class UniqueFunctionSignatureTransformer extends TypeVarTransformer { if (existingSignature) { const typeVarContext = new TypeVarContext(getTypeVarScopeId(sourceType)); - // Create new type variables with the same scope but with - // different (unique) names. - sourceType.details.typeParameters.forEach((typeParam) => { - let replacement: Type = TypeVarType.cloneForNewName( - typeParam, - `${typeParam.details.name}(${existingSignature.count})` - ); + let offsetIndex = existingSignature.expressionOffsets.findIndex( + (offset) => offset === this._expressionOffset + ); + if (offsetIndex < 0) { + offsetIndex = existingSignature.expressionOffsets.length; + } - if (replacement.details.isParamSpec) { - replacement = convertTypeToParamSpecValue(replacement); - } + if (offsetIndex > 0) { + // Create new type variables with the same scope but with + // different (unique) names. + sourceType.details.typeParameters.forEach((typeParam) => { + let replacement: Type = TypeVarType.cloneForNewName( + typeParam, + `${typeParam.details.name}(${offsetIndex})` + ); - typeVarContext.setTypeVarType(typeParam, replacement); - }); + if (replacement.details.isParamSpec) { + replacement = convertTypeToParamSpecValue(replacement); + } - updatedSourceType = applySolvedTypeVars(sourceType, typeVarContext); - assert(isFunction(updatedSourceType) || isOverloadedFunction(updatedSourceType)); + typeVarContext.setTypeVarType(typeParam, replacement); + }); + + updatedSourceType = applySolvedTypeVars(sourceType, typeVarContext); + assert(isFunction(updatedSourceType) || isOverloadedFunction(updatedSourceType)); + } } - this._signatureTracker.addSignature(sourceType); + this._signatureTracker.addSignature(sourceType, this._expressionOffset); return updatedSourceType; } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes105.py b/packages/pyright-internal/src/tests/samples/genericTypes105.py index ddf78bde9..1205a9139 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes105.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes105.py @@ -1,12 +1,14 @@ # This sample tests the case where a generic function is passed # as an argument to another generic function multiple times. -from typing import TypeVar, Callable +from dataclasses import dataclass +from typing import Generic, TypeVar, Callable T = TypeVar("T") A = TypeVar("A") B = TypeVar("B") C = TypeVar("C") +D = TypeVar("D") X = TypeVar("X") Y = TypeVar("Y") Z = TypeVar("Z") @@ -79,3 +81,34 @@ def test_2(self, f: Callable[[A], X]) -> Callable[[A, B, C], tuple[X, B, C]]: ) return val + + +@dataclass(frozen=True) +class Pair(Generic[A, B]): + left: A + right: B + + +def func1(f: Callable[[A], B]) -> Callable[[Pair[A, X]], Pair[B, X]]: + ... + + +def test_3(pair: Pair[Pair[A, B], C]) -> Pair[Pair[A, B], C]: + val1 = func1(func1(identity)) + reveal_type( + val1, + expected_text="(Pair[Pair[T@identity, X(1)@func1], X@func1]) -> Pair[Pair[T@identity, X(1)@func1], X@func1]", + ) + val2 = val1(pair) + reveal_type(val2, expected_text="Pair[Pair[A@test_3, B@test_3], C@test_3]") + return val2 + + +def test_4(pair: Pair[Pair[Pair[A, B], C], D]) -> Pair[Pair[Pair[A, B], C], D]: + val1 = func1(func1(func1(identity))) + reveal_type( + val1, + expected_text="(Pair[Pair[Pair[T@identity, X(2)@func1], X(1)@func1], X@func1]) -> Pair[Pair[Pair[T@identity, X(2)@func1], X(1)@func1], X@func1]", + ) + val2 = val1(pair) + return val2 From a783677a230ab7be24ca75b8407a73aa4caba6cf Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 6 Jun 2023 11:04:15 -0600 Subject: [PATCH 256/525] Improved readability of protocol functions. No functional change. --- .../src/analyzer/protocols.ts | 541 +++++++++--------- 1 file changed, 265 insertions(+), 276 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index 4b52903c3..e218e6c0f 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -190,255 +190,239 @@ function assignClassToProtocolInternal( return; } - if (symbol.isClassMember() && !symbol.isIgnoredForProtocolMatch() && !checkedSymbolSet.has(name)) { - let isMemberFromMetaclass = false; - let srcMemberInfo: ClassMember | undefined; - - // Special-case the `__class_getitem__` for normal protocol comparison. - // This is a convention agreed upon by typeshed maintainers. - if (!treatSourceAsInstantiable && name === '__class_getitem__') { - return; - } + if (!symbol.isClassMember() || symbol.isIgnoredForProtocolMatch() || checkedSymbolSet.has(name)) { + return; + } - // Special-case the `__slots__` entry for all protocol comparisons. - // This is a convention agreed upon by typeshed maintainers. - if (name === '__slots__') { - return; - } + let isMemberFromMetaclass = false; + let srcMemberInfo: ClassMember | undefined; - // Note that we've already checked this symbol. It doesn't need to - // be checked again even if it is declared by a subclass. - checkedSymbolSet.add(name); + // Special-case the `__class_getitem__` for normal protocol comparison. + // This is a convention agreed upon by typeshed maintainers. + if (!treatSourceAsInstantiable && name === '__class_getitem__') { + return; + } - // Look in the metaclass first if we're treating the source as an instantiable class. - if ( - treatSourceAsInstantiable && - srcType.details.effectiveMetaclass && - isInstantiableClass(srcType.details.effectiveMetaclass) - ) { - srcMemberInfo = lookUpClassMember(srcType.details.effectiveMetaclass, name); - if (srcMemberInfo) { - srcClassTypeVarContext.addSolveForScope(getTypeVarScopeId(srcType.details.effectiveMetaclass)); - isMemberFromMetaclass = true; - } + // Special-case the `__slots__` entry for all protocol comparisons. + // This is a convention agreed upon by typeshed maintainers. + if (name === '__slots__') { + return; + } + + // Note that we've already checked this symbol. It doesn't need to + // be checked again even if it is declared by a subclass. + checkedSymbolSet.add(name); + + // Look in the metaclass first if we're treating the source as an instantiable class. + if ( + treatSourceAsInstantiable && + srcType.details.effectiveMetaclass && + isInstantiableClass(srcType.details.effectiveMetaclass) + ) { + srcMemberInfo = lookUpClassMember(srcType.details.effectiveMetaclass, name); + if (srcMemberInfo) { + srcClassTypeVarContext.addSolveForScope(getTypeVarScopeId(srcType.details.effectiveMetaclass)); + isMemberFromMetaclass = true; } + } + + if (!srcMemberInfo) { + srcMemberInfo = lookUpClassMember(srcType, name); + } + + if (!srcMemberInfo) { + diag?.addMessage(Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name })); + typesAreConsistent = false; + return; + } - if (!srcMemberInfo) { - srcMemberInfo = lookUpClassMember(srcType, name); + if (symbol.isClassVar() && !srcMemberInfo.symbol.isClassVar() && !srcMemberInfo.symbol.isClassMember()) { + diag?.addMessage(Localizer.DiagnosticAddendum.protocolMemberClassVar().format({ name })); + typesAreConsistent = false; + } + + let destMemberType = evaluator.getDeclaredTypeOfSymbol(symbol)?.type; + if (!destMemberType) { + return; + } + + // Partially specialize the type of the symbol based on the MRO class. + // We can skip this if it's the dest class because it is already + // specialized. + if (!ClassType.isSameGenericClass(mroClass, destType)) { + destMemberType = partiallySpecializeType(destMemberType, mroClass, srcType); + } + + let srcMemberType: Type; + if (isInstantiableClass(srcMemberInfo.classType)) { + const symbolType = evaluator.getEffectiveTypeOfSymbol(srcMemberInfo.symbol); + + // If this is a function, infer its return type prior to specializing it. + if (isFunction(symbolType)) { + evaluator.inferReturnTypeIfNecessary(symbolType); } - if (!srcMemberInfo) { - diag?.addMessage(Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name })); - typesAreConsistent = false; - } else { - let destMemberType = evaluator.getDeclaredTypeOfSymbol(symbol)?.type; - if (destMemberType) { - // Partially specialize the type of the symbol based on the MRO class. - // We can skip this if it's the dest class because it is already - // specialized. - if (!ClassType.isSameGenericClass(mroClass, destType)) { - destMemberType = partiallySpecializeType(destMemberType, mroClass, srcType); - } + srcMemberType = partiallySpecializeType(symbolType, srcMemberInfo.classType, noLiteralSrcType); + } else { + srcMemberType = UnknownType.create(); + } - let srcMemberType: Type; - if (isInstantiableClass(srcMemberInfo.classType)) { - const symbolType = evaluator.getEffectiveTypeOfSymbol(srcMemberInfo.symbol); - - // If this is a function, infer its return type prior to specializing it. - if (isFunction(symbolType)) { - evaluator.inferReturnTypeIfNecessary(symbolType); - } - - srcMemberType = partiallySpecializeType( - symbolType, - srcMemberInfo.classType, - noLiteralSrcType - ); - } else { - srcMemberType = UnknownType.create(); - } + if (isFunction(srcMemberType) || isOverloadedFunction(srcMemberType)) { + if (isMemberFromMetaclass) { + const boundSrcFunction = evaluator.bindFunctionToClassOrObject( + ClassType.cloneAsInstance(srcType), + srcMemberType, + /* memberClass */ undefined, + /* errorNode */ undefined, + recursionCount, + /* treatConstructorAsClassMember */ false, + srcType + ); + if (boundSrcFunction) { + srcMemberType = removeParamSpecVariadicsFromSignature(boundSrcFunction); + } - if (isFunction(srcMemberType) || isOverloadedFunction(srcMemberType)) { - if (isMemberFromMetaclass) { - const boundSrcFunction = evaluator.bindFunctionToClassOrObject( - ClassType.cloneAsInstance(srcType), - srcMemberType, - /* memberClass */ undefined, - /* errorNode */ undefined, - recursionCount, - /* treatConstructorAsClassMember */ false, - srcType - ); - if (boundSrcFunction) { - srcMemberType = removeParamSpecVariadicsFromSignature(boundSrcFunction); - } - - if (isFunction(destMemberType) || isOverloadedFunction(destMemberType)) { - const boundDeclaredType = evaluator.bindFunctionToClassOrObject( - ClassType.cloneAsInstance(srcType), - destMemberType, - /* memberClass */ undefined, - /* errorNode */ undefined, - recursionCount, - /* treatConstructorAsClassMember */ false, - srcType - ); - if (boundDeclaredType) { - destMemberType = removeParamSpecVariadicsFromSignature(boundDeclaredType); - } - } - } else if (isInstantiableClass(srcMemberInfo.classType)) { - // Replace any "Self" TypeVar within the dest with the source type. - destMemberType = applySolvedTypeVars(destMemberType, selfTypeVarContext); - - const boundSrcFunction = evaluator.bindFunctionToClassOrObject( - treatSourceAsInstantiable ? srcType : ClassType.cloneAsInstance(srcType), - srcMemberType, - srcMemberInfo.classType, - /* errorNode */ undefined, - recursionCount - ); - if (boundSrcFunction) { - srcMemberType = removeParamSpecVariadicsFromSignature(boundSrcFunction); - } - - if (isFunction(destMemberType) || isOverloadedFunction(destMemberType)) { - const boundDeclaredType = evaluator.bindFunctionToClassOrObject( - ClassType.cloneAsInstance(srcType), - destMemberType, - srcMemberInfo.classType, - /* errorNode */ undefined, - recursionCount - ); - if (boundDeclaredType) { - destMemberType = removeParamSpecVariadicsFromSignature(boundDeclaredType); - } - } - } - } else { - // Replace any "Self" TypeVar within the dest with the source type. - destMemberType = applySolvedTypeVars(destMemberType, selfTypeVarContext); + if (isFunction(destMemberType) || isOverloadedFunction(destMemberType)) { + const boundDeclaredType = evaluator.bindFunctionToClassOrObject( + ClassType.cloneAsInstance(srcType), + destMemberType, + /* memberClass */ undefined, + /* errorNode */ undefined, + recursionCount, + /* treatConstructorAsClassMember */ false, + srcType + ); + if (boundDeclaredType) { + destMemberType = removeParamSpecVariadicsFromSignature(boundDeclaredType); } + } + } else if (isInstantiableClass(srcMemberInfo.classType)) { + // Replace any "Self" TypeVar within the dest with the source type. + destMemberType = applySolvedTypeVars(destMemberType, selfTypeVarContext); + + const boundSrcFunction = evaluator.bindFunctionToClassOrObject( + treatSourceAsInstantiable ? srcType : ClassType.cloneAsInstance(srcType), + srcMemberType, + srcMemberInfo.classType, + /* errorNode */ undefined, + recursionCount + ); + if (boundSrcFunction) { + srcMemberType = removeParamSpecVariadicsFromSignature(boundSrcFunction); + } - const subDiag = diag?.createAddendum(); - - // Properties require special processing. - if (isClassInstance(destMemberType) && ClassType.isPropertyClass(destMemberType)) { - if ( - isClassInstance(srcMemberType) && - ClassType.isPropertyClass(srcMemberType) && - !treatSourceAsInstantiable - ) { - if ( - !assignProperty( - evaluator, - ClassType.cloneAsInstantiable(destMemberType), - ClassType.cloneAsInstantiable(srcMemberType), - mroClass, - srcType, - subDiag?.createAddendum(), - genericDestTypeVarContext, - selfTypeVarContext, - recursionCount - ) - ) { - if (subDiag) { - subDiag.addMessage( - Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }) - ); - } - typesAreConsistent = false; - } - } else { - // Extract the property type from the property class. - const getterType = evaluator.getGetterTypeFromProperty( - destMemberType, - /* inferTypeIfNeeded */ true - ); - if ( - !getterType || - !evaluator.assignType( - getterType, - srcMemberType, - subDiag?.createAddendum(), - genericDestTypeVarContext, - /* srcTypeVarContext */ undefined, - assignTypeFlags, - recursionCount - ) - ) { - if (subDiag) { - subDiag.addMessage( - Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }) - ); - } - typesAreConsistent = false; - } - } - } else { - // Class and instance variables that are mutable need to - // enforce invariance. - const primaryDecl = symbol.getDeclarations()[0]; - const isInvariant = primaryDecl?.type === DeclarationType.Variable && !primaryDecl.isFinal; - if ( - !evaluator.assignType( - destMemberType, - srcMemberType, - subDiag?.createAddendum(), - genericDestTypeVarContext, - /* srcTypeVarContext */ undefined, - isInvariant ? assignTypeFlags | AssignTypeFlags.EnforceInvariance : assignTypeFlags, - recursionCount - ) - ) { - if (subDiag) { - if (isInvariant) { - subDiag.addMessage( - Localizer.DiagnosticAddendum.memberIsInvariant().format({ name }) - ); - } - subDiag.addMessage( - Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name }) - ); - } - typesAreConsistent = false; - } + if (isFunction(destMemberType) || isOverloadedFunction(destMemberType)) { + const boundDeclaredType = evaluator.bindFunctionToClassOrObject( + ClassType.cloneAsInstance(srcType), + destMemberType, + srcMemberInfo.classType, + /* errorNode */ undefined, + recursionCount + ); + if (boundDeclaredType) { + destMemberType = removeParamSpecVariadicsFromSignature(boundDeclaredType); } + } + } + } else { + // Replace any "Self" TypeVar within the dest with the source type. + destMemberType = applySolvedTypeVars(destMemberType, selfTypeVarContext); + } + + const subDiag = diag?.createAddendum(); - const isDestFinal = symbol - .getTypedDeclarations() - .some((decl) => decl.type === DeclarationType.Variable && !!decl.isFinal); - const isSrcFinal = srcMemberInfo.symbol - .getTypedDeclarations() - .some((decl) => decl.type === DeclarationType.Variable && !!decl.isFinal); - - if (isDestFinal !== isSrcFinal) { - if (isDestFinal) { - if (subDiag) { - subDiag.addMessage( - Localizer.DiagnosticAddendum.memberIsFinalInProtocol().format({ name }) - ); - } - } else { - if (subDiag) { - subDiag.addMessage( - Localizer.DiagnosticAddendum.memberIsNotFinalInProtocol().format({ name }) - ); - } - } - typesAreConsistent = false; + // Properties require special processing. + if (isClassInstance(destMemberType) && ClassType.isPropertyClass(destMemberType)) { + if ( + isClassInstance(srcMemberType) && + ClassType.isPropertyClass(srcMemberType) && + !treatSourceAsInstantiable + ) { + if ( + !assignProperty( + evaluator, + ClassType.cloneAsInstantiable(destMemberType), + ClassType.cloneAsInstantiable(srcMemberType), + mroClass, + srcType, + subDiag?.createAddendum(), + genericDestTypeVarContext, + selfTypeVarContext, + recursionCount + ) + ) { + if (subDiag) { + subDiag.addMessage(Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name })); } + typesAreConsistent = false; } - + } else { + // Extract the property type from the property class. + const getterType = evaluator.getGetterTypeFromProperty( + destMemberType, + /* inferTypeIfNeeded */ true + ); if ( - symbol.isClassVar() && - !srcMemberInfo.symbol.isClassVar() && - !srcMemberInfo.symbol.isClassMember() + !getterType || + !evaluator.assignType( + getterType, + srcMemberType, + subDiag?.createAddendum(), + genericDestTypeVarContext, + /* srcTypeVarContext */ undefined, + assignTypeFlags, + recursionCount + ) ) { - diag?.addMessage(Localizer.DiagnosticAddendum.protocolMemberClassVar().format({ name })); + if (subDiag) { + subDiag.addMessage(Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name })); + } typesAreConsistent = false; } } + } else { + // Class and instance variables that are mutable need to enforce invariance. + const primaryDecl = symbol.getDeclarations()[0]; + const isInvariant = primaryDecl?.type === DeclarationType.Variable && !primaryDecl.isFinal; + if ( + !evaluator.assignType( + destMemberType, + srcMemberType, + subDiag?.createAddendum(), + genericDestTypeVarContext, + /* srcTypeVarContext */ undefined, + isInvariant ? assignTypeFlags | AssignTypeFlags.EnforceInvariance : assignTypeFlags, + recursionCount + ) + ) { + if (subDiag) { + if (isInvariant) { + subDiag.addMessage(Localizer.DiagnosticAddendum.memberIsInvariant().format({ name })); + } + subDiag.addMessage(Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name })); + } + typesAreConsistent = false; + } + } + + const isDestFinal = symbol + .getTypedDeclarations() + .some((decl) => decl.type === DeclarationType.Variable && !!decl.isFinal); + const isSrcFinal = srcMemberInfo.symbol + .getTypedDeclarations() + .some((decl) => decl.type === DeclarationType.Variable && !!decl.isFinal); + + if (isDestFinal !== isSrcFinal) { + if (isDestFinal) { + if (subDiag) { + subDiag.addMessage(Localizer.DiagnosticAddendum.memberIsFinalInProtocol().format({ name })); + } + } else { + if (subDiag) { + subDiag.addMessage(Localizer.DiagnosticAddendum.memberIsNotFinalInProtocol().format({ name })); + } + } + typesAreConsistent = false; } }); }); @@ -513,59 +497,64 @@ export function assignModuleToProtocol( } mroClass.details.fields.forEach((symbol, name) => { - if (symbol.isClassMember() && !symbol.isIgnoredForProtocolMatch() && !checkedSymbolSet.has(name)) { - // Note that we've already checked this symbol. It doesn't need to - // be checked again even if it is declared by a subclass. - checkedSymbolSet.add(name); + if (!symbol.isClassMember() || symbol.isIgnoredForProtocolMatch() || checkedSymbolSet.has(name)) { + return; + } - const memberSymbol = srcType.fields.get(name); + // Note that we've already checked this symbol. It doesn't need to + // be checked again even if it is declared by a subclass. + checkedSymbolSet.add(name); - if (!memberSymbol) { - diag?.addMessage(Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name })); - typesAreConsistent = false; - } else { - let destMemberType = evaluator.getDeclaredTypeOfSymbol(symbol)?.type; - if (destMemberType) { - destMemberType = partiallySpecializeType(destMemberType, destType); - - const srcMemberType = evaluator.getEffectiveTypeOfSymbol(memberSymbol); - - if (isFunction(srcMemberType) || isOverloadedFunction(srcMemberType)) { - if (isFunction(destMemberType) || isOverloadedFunction(destMemberType)) { - const boundDeclaredType = evaluator.bindFunctionToClassOrObject( - ClassType.cloneAsInstance(destType), - destMemberType, - destType, - /* errorNode */ undefined, - recursionCount - ); - if (boundDeclaredType) { - destMemberType = boundDeclaredType; - } - } - } + const memberSymbol = srcType.fields.get(name); - const subDiag = diag?.createAddendum(); - - if ( - !evaluator.assignType( - destMemberType, - srcMemberType, - subDiag?.createAddendum(), - genericDestTypeVarContext, - /* srcTypeVarContext */ undefined, - AssignTypeFlags.Default, - recursionCount - ) - ) { - if (subDiag) { - subDiag.addMessage(Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name })); - } - typesAreConsistent = false; - } + if (!memberSymbol) { + diag?.addMessage(Localizer.DiagnosticAddendum.protocolMemberMissing().format({ name })); + typesAreConsistent = false; + return; + } + + let destMemberType = evaluator.getDeclaredTypeOfSymbol(symbol)?.type; + if (!destMemberType) { + return; + } + + destMemberType = partiallySpecializeType(destMemberType, destType); + + const srcMemberType = evaluator.getEffectiveTypeOfSymbol(memberSymbol); + + if (isFunction(srcMemberType) || isOverloadedFunction(srcMemberType)) { + if (isFunction(destMemberType) || isOverloadedFunction(destMemberType)) { + const boundDeclaredType = evaluator.bindFunctionToClassOrObject( + ClassType.cloneAsInstance(destType), + destMemberType, + destType, + /* errorNode */ undefined, + recursionCount + ); + if (boundDeclaredType) { + destMemberType = boundDeclaredType; } } } + + const subDiag = diag?.createAddendum(); + + if ( + !evaluator.assignType( + destMemberType, + srcMemberType, + subDiag?.createAddendum(), + genericDestTypeVarContext, + /* srcTypeVarContext */ undefined, + AssignTypeFlags.Default, + recursionCount + ) + ) { + if (subDiag) { + subDiag.addMessage(Localizer.DiagnosticAddendum.memberTypeMismatch().format({ name })); + } + typesAreConsistent = false; + } }); }); From 24b612fda2720db163336a03bc81cc1af39e8e2e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 6 Jun 2023 17:53:24 -0600 Subject: [PATCH 257/525] Reverted overload change for now. It's causing breaks in the pandas-stubs library. More investigation is needed. --- docs/type-concepts-advanced.md | 2 +- .../src/analyzer/typeEvaluator.ts | 45 ++----- .../src/analyzer/typeUtils.ts | 34 ----- .../src/tests/samples/overload12.py | 123 +----------------- .../src/tests/typeEvaluator4.test.ts | 2 +- 5 files changed, 15 insertions(+), 191 deletions(-) diff --git a/docs/type-concepts-advanced.md b/docs/type-concepts-advanced.md index 3c3b98b35..533c5e905 100644 --- a/docs/type-concepts-advanced.md +++ b/docs/type-concepts-advanced.md @@ -307,7 +307,7 @@ Some functions or methods can return one of several different types. In cases wh 4. If more than one overload remains, the “winner” is chosen based on the order in which the overloads are declared. In general, the first remaining overload is the “winner”. There are two exceptions to this rule. Exception 1: When an `*args` (unpacked) argument matches a `*args` parameter in one of the overload signatures, this overrides the normal order-based rule. - Exception 2: When two or more overloads match because an argument or a type argument evaluates to `Any` or `Unknown` and this causes overload matching to be ambiguous. In this case, pyright examines the return types of the remaining overloads and eliminates types that are duplicates or are subsumed by (i.e. proper subtypes of) other types in the list. If only one type remains after this coalescing step, that type is used. If more than one type remains after this coalescing step and all of the types are the same class but with different type arguments, these type arguments are “erased” (i.e. replaced with `Unknown`). Otherwise, the type of the call expression evaluates to `Unknown`. For example, if two overloads are matched due to an argument that evaluates to `Any`, and those two overloads have return types of `str` and `LiteralString`, pyright will coalesce this to just `str` because `LiteralString` is a proper subtype of `str`. If the two overloads have return types of `list[str]` and `list[int]`, the call expression will evaluate to `list[Unknown]`. If the two overloads have return types of `str` and `bytes`, the call expression will evaluate to `Unknown` because `str` and `bytes` have no overlap. + Exception 2: When two or more overloads match because an argument evaluates to `Any` or `Unknown`, the matching overload is ambiguous. In this case, pyright examines the return types of the remaining overloads and eliminates types that are duplicates or are subsumed by (i.e. proper subtypes of) other types in the list. If only one type remains after this coalescing step, that type is used. If more than one type remains after this coalescing step, the type of the call expression evaluates to `Unknown`. For example, if two overloads are matched due to an argument that evaluates to `Any`, and those two overloads have return types of `str` and `LiteralString`, pyright will coalesce this to just `str` because `LiteralString` is a proper subtype of `str`. If the two overloads have return types of `str` and `bytes`, the call expression will evaluate to `Unknown` because `str` and `bytes` have no overlap. 5. If no overloads remain, Pyright considers whether any of the arguments are union types. If so, these union types are expanded into their constituent subtypes, and the entire process of overload matching is repeated with the expanded argument types. If two or more overloads match, the union of their respective return types form the final return type for the call expression. diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index cb1765407..6304a9478 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -206,7 +206,6 @@ import { doForEachSubtype, ensureFunctionSignaturesAreUnique, explodeGenericClass, - getCommonErasedType, getContainerDepth, getDeclaredGeneratorReturnType, getGeneratorTypeArgs, @@ -8290,13 +8289,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (dedupedResultsIncludeAny) { effectiveReturnType = AnyType.create(); } else { - // If all of the return types are the same generic class, - // replace the type arguments with Unknown. Otherwise return - // an Unknown type that has associated "possible types" to aid - // with completion suggestions. - effectiveReturnType = - getCommonErasedType(dedupedMatchResults) ?? - UnknownType.createPossibleType(combinedTypes, possibleMatchInvolvesIncompleteUnknown); + effectiveReturnType = UnknownType.createPossibleType( + combinedTypes, + possibleMatchInvolvesIncompleteUnknown + ); } } @@ -8351,17 +8347,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return matches; } - // If the relevance of some matches differs, filter out the ones that - // are lower relevance. This favors *args parameters in cases where - // a *args argument is used. - if (matches[0].matchResults.relevance !== matches[matches.length - 1].matchResults.relevance) { - matches = matches.filter((m) => m.matchResults.relevance === matches[0].matchResults.relevance); - - if (matches.length < 2) { - return matches; - } - } - // If all of the return types match, select the first one. if ( areTypesSame( @@ -8378,11 +8363,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } for (let i = 0; i < firstArgResults.length; i++) { - // If the arg contains Any or Unknown, see if the corresponding + // If the arg is Any or Unknown, see if the corresponding // parameter types differ in any way. - const anyOrUnknownInArg = containsAnyOrUnknown(firstArgResults[i].argType, /* recurse */ true); - - if (anyOrUnknownInArg) { + if (isAnyOrUnknown(firstArgResults[i].argType)) { const paramTypes = matches.map((match) => i < match.matchResults.argParams.length ? match.matchResults.argParams[i].paramType @@ -10480,7 +10463,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let isTypeIncomplete = matchResults.isTypeIncomplete; let argumentErrors = false; let specializedInitSelfType: Type | undefined; - let accumulatedAnyOrUnknownArg: UnknownType | AnyType | undefined; + let anyOrUnknownArgument: UnknownType | AnyType | undefined; const typeCondition = getTypeCondition(type); if (type.boundTypeVarScopeId) { @@ -10629,14 +10612,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions condition = TypeCondition.combine(condition, argResult.condition) ?? []; } - // Determine if the argument type contains an Any or Unknown. Accumulate - // these across all arguments. - const anyOrUnknownInArg = containsAnyOrUnknown(argResult.argType, /* recurs */ true); - - if (anyOrUnknownInArg) { - accumulatedAnyOrUnknownArg = accumulatedAnyOrUnknownArg - ? preserveUnknown(anyOrUnknownInArg, accumulatedAnyOrUnknownArg) - : anyOrUnknownInArg; + if (isAnyOrUnknown(argResult.argType)) { + anyOrUnknownArgument = anyOrUnknownArgument + ? preserveUnknown(argResult.argType, anyOrUnknownArgument) + : argResult.argType; } if (type.details.paramSpec) { @@ -10791,7 +10770,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { argumentErrors, argResults, - anyOrUnknownArgument: accumulatedAnyOrUnknownArg, + anyOrUnknownArgument, returnType: specializedReturnType, isTypeIncomplete, activeParam: matchResults.activeParam, diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 355defa20..d181e1ed2 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2306,40 +2306,6 @@ export function specializeTupleClass( return clonedClassType; } -// If the array contains two or more class types that are all the same -// generic type, return the common "erased" type — a type that -// replaces all of the type arguments with Unknown. -export function getCommonErasedType(types: Type[]): ClassType | undefined { - if (types.length < 2) { - return undefined; - } - - if (!isClass(types[0])) { - return undefined; - } - - for (let i = 1; i < types.length; i++) { - const candidate = types[i]; - if ( - !isClass(candidate) || - TypeBase.isInstance(candidate) !== TypeBase.isInstance(types[0]) || - !ClassType.isSameGenericClass(types[0], candidate) - ) { - return undefined; - } - } - - if (isTupleClass(types[0])) { - return specializeTupleClass(types[0], [{ type: UnknownType.create(), isUnbounded: true }]); - } - - return ClassType.cloneForSpecialization( - types[0], - types[0].details.typeParameters.map((t) => UnknownType.create()), - /* isTypeArgumentExplicit */ true - ); -} - // If the type is a function or overloaded function that has a paramSpec // associated with it and P.args and P.kwargs at the end of the signature, // it removes these parameters from the function. diff --git a/packages/pyright-internal/src/tests/samples/overload12.py b/packages/pyright-internal/src/tests/samples/overload12.py index d0d7fcc0c..1ec799af0 100644 --- a/packages/pyright-internal/src/tests/samples/overload12.py +++ b/packages/pyright-internal/src/tests/samples/overload12.py @@ -1,12 +1,9 @@ # This sample tests overload matching in cases where one or more # matches are found due to an Any or Unknown argument. -from __future__ import annotations -from typing import Any, Generic, Literal, TypeVar, overload +from typing import Any, Literal, overload from typing_extensions import LiteralString -_T = TypeVar("_T") - @overload def overload1(x: int, y: float) -> float: @@ -123,121 +120,3 @@ def func5(a: Any): reveal_type(overload4(a, flag=False), expected_text="str") reveal_type(overload4("0", flag=a), expected_text="Unknown") - -@overload -def overload5(x: list[int]) -> list[int]: - ... - - -@overload -def overload5(x: list[str]) -> list[str]: - ... - - -def overload5(x: list[str] | list[int]) -> list[str] | list[int]: - return x - - -def func6(y: list[Any]): - reveal_type(overload5(y), expected_text="list[Unknown]") - - -class ClassA(Generic[_T]): - @overload - def m1(self: ClassA[int]) -> ClassA[int]: - ... - - @overload - def m1(self: ClassA[str]) -> ClassA[str]: - ... - - def m1(self) -> ClassA[Any]: - return self - - -def func7(a: ClassA[Any]): - reveal_type(a.m1(), expected_text="ClassA[int]") - - -class ClassB(Generic[_T]): - @overload - def m1(self: ClassB[int], obj: int | ClassB[int]) -> ClassB[int]: - ... - - @overload - def m1(self: ClassB[str], obj: str | ClassB[str]) -> ClassB[str]: - ... - - def m1(self, obj: Any) -> ClassB[Any]: - return self - - -def func8(b: ClassB[Any]): - reveal_type(b.m1(b), expected_text="ClassB[Unknown]") - - -_T1 = TypeVar("_T1") -_T2 = TypeVar("_T2") - - -@overload -def overload6(a: _T1, /) -> tuple[_T1]: - ... - - -@overload -def overload6(a: _T1, b: _T2, /) -> tuple[_T1, _T2]: - ... - - -@overload -def overload6(*args: _T1) -> tuple[_T1, ...]: - ... - - -def overload6(*args: Any) -> tuple[Any, ...]: - return tuple(args) - - -def func9(*args: int): - reveal_type(overload6(*args), expected_text="tuple[int, ...]") - - -@overload -def overload7(a: float = ..., *, b: Literal[True] = ...) -> float: - ... - - -@overload -def overload7(a: float = ..., *, b: bool) -> str: - ... - - -def overload7(a: float = 1.0, *, b: bool = True) -> float | str: - ... - - -def func10(kwargs_dict: dict[Any, Any]): - reveal_type(overload7(**kwargs_dict), expected_text="Unknown") - - -def func11(kwargs_dict: dict[str, Any]): - reveal_type(overload7(**kwargs_dict), expected_text="Unknown") - - -def func12(kwargs_dict: dict[str, bool]): - reveal_type(overload7(**kwargs_dict), expected_text="str") - - -def func13(kwargs_dict: dict[str, Literal[True]]): - reveal_type(overload7(**kwargs_dict), expected_text="float") - - -def func14(): - reveal_type(overload7(), expected_text="float") - - -def func15(kwargs_dict: dict[str, str]): - # This should generate an error because str isn't a valid type for - # the b parameter. - overload7(1.0, **kwargs_dict) diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index cb9fa90a0..4f4dffc04 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -321,7 +321,7 @@ test('Overload11', () => { test('Overload12', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['overload12.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); test('Overload13', () => { From a6572d64184a55b727f3cbbf2d7fb99caa663ef8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 4 Jun 2023 16:27:16 -0600 Subject: [PATCH 258/525] Updated typeshed stubs to the latest verison. --- .../src/tests/typeEvaluator5.test.ts | 2 +- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/VERSIONS | 8 +- .../typeshed-fallback/stdlib/_ast.pyi | 51 ++- .../stdlib/_collections_abc.pyi | 11 + .../typeshed-fallback/stdlib/_csv.pyi | 4 + .../typeshed-fallback/stdlib/_ctypes.pyi | 2 + .../typeshed-fallback/stdlib/_socket.pyi | 25 ++ .../stdlib/_typeshed/__init__.pyi | 71 ++-- .../typeshed-fallback/stdlib/argparse.pyi | 43 ++- .../typeshed-fallback/stdlib/array.pyi | 2 + .../typeshed-fallback/stdlib/ast.pyi | 4 +- .../typeshed-fallback/stdlib/binhex.pyi | 6 +- .../typeshed-fallback/stdlib/builtins.pyi | 38 +- .../typeshed-fallback/stdlib/csv.pyi | 5 + .../stdlib/distutils/__init__.pyi | 5 + .../typeshed-fallback/stdlib/fcntl.pyi | 17 +- .../typeshed-fallback/stdlib/fractions.pyi | 8 +- .../typeshed-fallback/stdlib/functools.pyi | 53 ++- .../typeshed-fallback/stdlib/gzip.pyi | 6 +- .../typeshed-fallback/stdlib/hmac.pyi | 4 +- .../typeshed-fallback/stdlib/imaplib.pyi | 4 +- .../typeshed-fallback/stdlib/inspect.pyi | 22 ++ .../stdlib/json/__init__.pyi | 9 + .../stdlib/logging/handlers.pyi | 2 +- .../typeshed-fallback/stdlib/math.pyi | 9 +- .../typeshed-fallback/stdlib/mmap.pyi | 2 + .../typeshed-fallback/stdlib/pathlib.pyi | 28 +- .../typeshed-fallback/stdlib/pdb.pyi | 5 +- .../typeshed-fallback/stdlib/pickle.pyi | 2 + .../typeshed-fallback/stdlib/random.pyi | 13 +- .../typeshed-fallback/stdlib/shutil.pyi | 46 ++- .../typeshed-fallback/stdlib/smtplib.pyi | 4 +- .../typeshed-fallback/stdlib/socket.pyi | 35 ++ .../typeshed-fallback/stdlib/socketserver.pyi | 5 + .../typeshed-fallback/stdlib/statistics.pyi | 9 +- .../typeshed-fallback/stdlib/sys.pyi | 12 +- .../typeshed-fallback/stdlib/tempfile.pyi | 75 +++- .../typeshed-fallback/stdlib/threading.pyi | 7 + .../typeshed-fallback/stdlib/types.pyi | 4 +- .../typeshed-fallback/stdlib/typing.pyi | 125 +++++-- .../stdlib/typing_extensions.pyi | 138 +++++--- .../typeshed-fallback/stdlib/weakref.pyi | 2 +- .../stdlib/xmlrpc/client.pyi | 10 +- .../typeshed-fallback/stdlib/zipfile.pyi | 4 +- .../typeshed-fallback/stdlib/zipimport.pyi | 6 +- .../stubs/PyAutoGUI/pyautogui/__init__.pyi | 7 +- .../stubs/PyScreeze/pyscreeze/__init__.pyi | 6 +- .../stubs/PyYAML/yaml/__init__.pyi | 332 ++++++++++++------ .../stubs/aiofiles/aiofiles/os.pyi | 36 +- .../stubs/babel/METADATA.toml | 2 +- .../stubs/babel/babel/messages/frontend.pyi | 3 +- .../stubs/braintree/METADATA.toml | 2 +- .../stubs/cffi/METADATA.toml | 1 + .../typeshed-fallback/stubs/cffi/cffi/api.pyi | 4 +- .../stubs/chardet/METADATA.toml | 6 - .../stubs/chardet/chardet/__init__.pyi | 16 - .../stubs/chardet/chardet/enums.pyi | 39 -- .../chardet/chardet/langbulgarianmodel.pyi | 7 - .../chardet/chardet/langcyrillicmodel.pyi | 15 - .../stubs/chardet/chardet/langgreekmodel.pyi | 7 - .../stubs/chardet/chardet/langhebrewmodel.pyi | 5 - .../chardet/chardet/langhungarianmodel.pyi | 7 - .../stubs/chardet/chardet/langthaimodel.pyi | 5 - .../chardet/chardet/langturkishmodel.pyi | 5 - .../chardet/chardet/universaldetector.pyi | 29 -- .../stubs/chardet/chardet/version.pyi | 2 - .../stubs/flake8-bugbear/METADATA.toml | 2 +- .../stubs/paramiko/METADATA.toml | 2 +- .../stubs/paramiko/paramiko/agent.pyi | 3 +- .../stubs/paramiko/paramiko/auth_strategy.pyi | 57 +++ .../stubs/paramiko/paramiko/client.pyi | 7 +- .../stubs/paramiko/paramiko/rsakey.pyi | 2 +- .../stubs/psutil/psutil/__init__.pyi | 7 +- .../stubs/pyOpenSSL/METADATA.toml | 2 +- .../stubs/pyvmomi/METADATA.toml | 1 + .../stubs/pywin32/win32/lib/pywintypes.pyi | 14 +- .../stubs/regex/METADATA.toml | 2 +- .../stubs/requests/METADATA.toml | 2 +- 79 files changed, 1100 insertions(+), 482 deletions(-) delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 4d694f432..b33202937 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -279,7 +279,7 @@ test('TypePrinter1', () => { test('TypeAliasType1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAliasType1.py']); - TestUtils.validateResults(analysisResults, 13); + TestUtils.validateResults(analysisResults, 15); }); test('TypeAliasType2', () => { diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index 4cc5e9a61..515c0aafc 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -35450d9c0d673fc713c3210d8c25d19425f9790e +e347af1d59ed46478a788ed60fd02096fce26edd diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS b/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS index d24aa35fa..f0efb1c08 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS +++ b/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS @@ -61,7 +61,7 @@ antigravity: 2.7- argparse: 2.7- array: 2.7- ast: 2.7- -asynchat: 2.7- +asynchat: 2.7-3.11 asyncio: 3.4- asyncio.mixins: 3.10- asyncio.exceptions: 3.8- @@ -72,7 +72,7 @@ asyncio.taskgroups: 3.11- asyncio.threads: 3.9- asyncio.timeouts: 3.11- asyncio.trsock: 3.8- -asyncore: 2.7- +asyncore: 2.7-3.11 atexit: 2.7- audioop: 2.7- base64: 2.7- @@ -112,7 +112,7 @@ dbm: 2.7- decimal: 2.7- difflib: 2.7- dis: 2.7- -distutils: 2.7- +distutils: 2.7-3.11 distutils.command.bdist_msi: 2.7-3.10 distutils.command.bdist_wininst: 2.7-3.9 doctest: 2.7- @@ -228,7 +228,7 @@ shlex: 2.7- shutil: 2.7- signal: 2.7- site: 2.7- -smtpd: 2.7- +smtpd: 2.7-3.11 smtplib: 2.7- sndhdr: 2.7- socket: 2.7- diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi index 7bc47266d..05e2a08fd 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi @@ -1,13 +1,14 @@ import sys +import typing_extensions from typing import Any, ClassVar -from typing_extensions import Literal, TypeAlias +from typing_extensions import Literal PyCF_ONLY_AST: Literal[1024] if sys.version_info >= (3, 8): PyCF_TYPE_COMMENTS: Literal[4096] PyCF_ALLOW_TOP_LEVEL_AWAIT: Literal[8192] -_Identifier: TypeAlias = str +_Identifier: typing_extensions.TypeAlias = str class AST: if sys.version_info >= (3, 10): @@ -59,31 +60,43 @@ class Expression(mod): class stmt(AST): ... class FunctionDef(stmt): - if sys.version_info >= (3, 10): + if sys.version_info >= (3, 12): + __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment", "type_params") + elif sys.version_info >= (3, 10): __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment") name: _Identifier args: arguments body: list[stmt] decorator_list: list[expr] returns: expr | None + if sys.version_info >= (3, 12): + type_params: list[type_param] class AsyncFunctionDef(stmt): - if sys.version_info >= (3, 10): + if sys.version_info >= (3, 12): + __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment", "type_params") + elif sys.version_info >= (3, 10): __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment") name: _Identifier args: arguments body: list[stmt] decorator_list: list[expr] returns: expr | None + if sys.version_info >= (3, 12): + type_params: list[type_param] class ClassDef(stmt): - if sys.version_info >= (3, 10): + if sys.version_info >= (3, 12): + __match_args__ = ("name", "bases", "keywords", "body", "decorator_list", "type_params") + elif sys.version_info >= (3, 10): __match_args__ = ("name", "bases", "keywords", "body", "decorator_list") name: _Identifier bases: list[expr] keywords: list[keyword] body: list[stmt] decorator_list: list[expr] + if sys.version_info >= (3, 12): + type_params: list[type_param] class Return(stmt): if sys.version_info >= (3, 10): @@ -366,10 +379,10 @@ class Attribute(expr): ctx: expr_context if sys.version_info >= (3, 9): - _Slice: TypeAlias = expr + _Slice: typing_extensions.TypeAlias = expr else: class slice(AST): ... - _Slice: TypeAlias = slice + _Slice: typing_extensions.TypeAlias = slice class Slice(_Slice): if sys.version_info >= (3, 10): @@ -526,7 +539,7 @@ if sys.version_info >= (3, 10): class pattern(AST): ... # Without the alias, Pyright complains variables named pattern are recursively defined - _Pattern: TypeAlias = pattern + _Pattern: typing_extensions.TypeAlias = pattern class match_case(AST): __match_args__ = ("pattern", "guard", "body") @@ -571,3 +584,25 @@ if sys.version_info >= (3, 10): class MatchOr(pattern): __match_args__ = ("patterns",) patterns: list[pattern] + +if sys.version_info >= (3, 12): + class type_param(AST): ... + + class TypeVar(type_param): + __match_args__ = ("name", "bound") + name: _Identifier + bound: expr | None + + class ParamSpec(type_param): + __match_args__ = ("name",) + name: _Identifier + + class TypeVarTuple(type_param): + __match_args__ = ("name",) + name: _Identifier + + class TypeAlias(stmt): + __match_args__ = ("name", "typeparams", "value") + name: Name + type_params: list[type_param] + value: expr diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi index 352da6cfb..05b5421c2 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi @@ -1,4 +1,5 @@ import sys +from abc import abstractmethod from types import MappingProxyType from typing import ( # noqa: Y022,Y038 AbstractSet as Set, @@ -23,11 +24,13 @@ from typing import ( # noqa: Y022,Y038 MutableMapping as MutableMapping, MutableSequence as MutableSequence, MutableSet as MutableSet, + Protocol, Reversible as Reversible, Sequence as Sequence, Sized as Sized, TypeVar, ValuesView as ValuesView, + runtime_checkable, ) from typing_extensions import final @@ -58,6 +61,8 @@ __all__ = [ "MutableSequence", "ByteString", ] +if sys.version_info >= (3, 12): + __all__ += ["Buffer"] _KT_co = TypeVar("_KT_co", covariant=True) # Key type covariant containers. _VT_co = TypeVar("_VT_co", covariant=True) # Value type covariant containers. @@ -79,3 +84,9 @@ class dict_items(ItemsView[_KT_co, _VT_co], Generic[_KT_co, _VT_co]): # undocum if sys.version_info >= (3, 10): @property def mapping(self) -> MappingProxyType[_KT_co, _VT_co]: ... + +if sys.version_info >= (3, 12): + @runtime_checkable + class Buffer(Protocol): + @abstractmethod + def __buffer__(self, __flags: int) -> memoryview: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi index c9b9f47e6..19ea487e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi @@ -1,3 +1,4 @@ +import sys from _typeshed import SupportsWrite from collections.abc import Iterable, Iterator from typing import Any @@ -9,6 +10,9 @@ QUOTE_ALL: Literal[1] QUOTE_MINIMAL: Literal[0] QUOTE_NONE: Literal[3] QUOTE_NONNUMERIC: Literal[2] +if sys.version_info >= (3, 12): + QUOTE_STRINGS: Literal[4] + QUOTE_NOTNULL: Literal[5] # Ideally this would be `QUOTE_ALL | QUOTE_MINIMAL | QUOTE_NONE | QUOTE_NONNUMERIC` # However, using literals in situations like these can cause false-positives (see #7258) diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi index e2f8fa745..c2b612c38 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi @@ -63,6 +63,8 @@ class _CData(metaclass=_CDataMeta): def from_param(cls, obj: Any) -> Self | _CArgObject: ... @classmethod def in_dll(cls, library: CDLL, name: str) -> Self: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... class _SimpleCData(Generic[_T], _CData): value: _T diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi index f7b0e6901..7a0ede628 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi @@ -692,3 +692,28 @@ if sys.platform != "win32" or sys.version_info >= (3, 8): def if_nameindex() -> list[tuple[int, str]]: ... def if_nametoindex(__name: str) -> int: ... def if_indextoname(__index: int) -> str: ... + +if sys.version_info >= (3, 12): + IP_PKTINFO: int + IP_UNBLOCK_SOURCE: int + IP_BLOCK_SOURCE: int + IP_ADD_SOURCE_MEMBERSHIP: int + IP_DROP_SOURCE_MEMBERSHIP: int + if sys.platform == "win32": + AF_HYPERV: int + HV_PROTOCOL_RAW: int + HVSOCKET_CONNECT_TIMEOUT: int + HVSOCKET_CONNECT_TIMEOUT_MAX: int + HVSOCKET_CONNECTED_SUSPEND: int + HVSOCKET_ADDRESS_FLAG_PASSTHRU: int + HV_GUID_ZERO: str + HV_GUID_WILDCARD: str + HV_GUID_BROADCAST: str + HV_GUID_CHILDREN: str + HV_GUID_LOOPBACK: str + HV_GUID_PARENT: str + else: + ETHERTYPE_ARP: int + ETHERTYPE_IP: int + ETHERTYPE_IPV6: int + ETHERTYPE_VLAN: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi index 3c29032b6..5d03142c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi @@ -2,17 +2,13 @@ # # See the README.md file in this directory for more information. -import array -import ctypes -import mmap -import pickle import sys -from collections.abc import Awaitable, Callable, Iterable, Set as AbstractSet +from collections.abc import Awaitable, Callable, Iterable, Sequence, Set as AbstractSet, Sized from dataclasses import Field from os import PathLike from types import FrameType, TracebackType -from typing import Any, AnyStr, ClassVar, Generic, Protocol, TypeVar -from typing_extensions import Final, Literal, LiteralString, TypeAlias, final +from typing import Any, AnyStr, ClassVar, Generic, Protocol, TypeVar, overload +from typing_extensions import Buffer, Final, Literal, LiteralString, TypeAlias, final _KT = TypeVar("_KT") _KT_co = TypeVar("_KT_co", covariant=True) @@ -227,42 +223,33 @@ class SupportsNoArgReadline(Protocol[_T_co]): class SupportsWrite(Protocol[_T_contra]): def write(self, __s: _T_contra) -> object: ... -ReadOnlyBuffer: TypeAlias = bytes # stable +# Unfortunately PEP 688 does not allow us to distinguish read-only +# from writable buffers. We use these aliases for readability for now. +# Perhaps a future extension of the buffer protocol will allow us to +# distinguish these cases in the type system. +ReadOnlyBuffer: TypeAlias = Buffer # stable # Anything that implements the read-write buffer interface. -# The buffer interface is defined purely on the C level, so we cannot define a normal Protocol -# for it (until PEP 688 is implemented). Instead we have to list the most common stdlib buffer classes in a Union. -if sys.version_info >= (3, 8): - WriteableBuffer: TypeAlias = ( - bytearray | memoryview | array.array[Any] | mmap.mmap | ctypes._CData | pickle.PickleBuffer - ) # stable -else: - WriteableBuffer: TypeAlias = bytearray | memoryview | array.array[Any] | mmap.mmap | ctypes._CData # stable -# Same as _WriteableBuffer, but also includes read-only buffer types (like bytes). -ReadableBuffer: TypeAlias = ReadOnlyBuffer | WriteableBuffer # stable -_BufferWithLen: TypeAlias = ReadableBuffer # not stable # noqa: Y047 - -# Anything that implements the read-write buffer interface, and can be sliced/indexed. -SliceableBuffer: TypeAlias = bytes | bytearray | memoryview | array.array[Any] | mmap.mmap -IndexableBuffer: TypeAlias = bytes | bytearray | memoryview | array.array[Any] | mmap.mmap -# https://github.com/python/typeshed/pull/9115#issuecomment-1304905864 -# Post PEP 688, they should be rewritten as such: -# from collections.abc import Sequence -# from typing import Sized, overload -# class SliceableBuffer(Protocol): -# def __buffer__(self, __flags: int) -> memoryview: ... -# def __getitem__(self, __slice: slice) -> Sequence[int]: ... -# class IndexableBuffer(Protocol): -# def __buffer__(self, __flags: int) -> memoryview: ... -# def __getitem__(self, __i: int) -> int: ... -# class SupportsGetItemBuffer(SliceableBuffer, IndexableBuffer, Protocol): -# def __buffer__(self, __flags: int) -> memoryview: ... -# def __contains__(self, __x: Any) -> bool: ... -# @overload -# def __getitem__(self, __slice: slice) -> Sequence[int]: ... -# @overload -# def __getitem__(self, __i: int) -> int: ... -# class SizedBuffer(Sized, Protocol): # instead of _BufferWithLen -# def __buffer__(self, __flags: int) -> memoryview: ... +WriteableBuffer: TypeAlias = Buffer +# Same as WriteableBuffer, but also includes read-only buffer types (like bytes). +ReadableBuffer: TypeAlias = Buffer # stable + +class SliceableBuffer(Buffer, Protocol): + def __getitem__(self, __slice: slice) -> Sequence[int]: ... + +class IndexableBuffer(Buffer, Protocol): + def __getitem__(self, __i: int) -> int: ... + +class SupportsGetItemBuffer(SliceableBuffer, IndexableBuffer, Protocol): + def __contains__(self, __x: Any) -> bool: ... + @overload + def __getitem__(self, __slice: slice) -> Sequence[int]: ... + @overload + def __getitem__(self, __i: int) -> int: ... + +class SizedBuffer(Sized, Buffer, Protocol): ... + +# for compatibility with third-party stubs that may use this +_BufferWithLen: TypeAlias = SizedBuffer # not stable # noqa: Y047 ExcInfo: TypeAlias = tuple[type[BaseException], BaseException, TracebackType] OptExcInfo: TypeAlias = ExcInfo | tuple[None, None, None] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi index 1e9560693..8e6f9da8e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi @@ -2,7 +2,7 @@ import sys from collections.abc import Callable, Generator, Iterable, Sequence from re import Pattern from typing import IO, Any, Generic, NewType, NoReturn, Protocol, TypeVar, overload -from typing_extensions import Literal, TypeAlias +from typing_extensions import Literal, Self, TypeAlias __all__ = [ "ArgumentParser", @@ -97,8 +97,16 @@ class _ActionsContainer: version: str = ..., **kwargs: Any, ) -> Action: ... - def add_argument_group(self, *args: Any, **kwargs: Any) -> _ArgumentGroup: ... - def add_mutually_exclusive_group(self, **kwargs: Any) -> _MutuallyExclusiveGroup: ... + def add_argument_group( + self, + title: str | None = None, + description: str | None = None, + *, + prefix_chars: str = ..., + argument_default: Any = ..., + conflict_handler: str = ..., + ) -> _ArgumentGroup: ... + def add_mutually_exclusive_group(self, *, required: bool = False) -> _MutuallyExclusiveGroup: ... def _add_action(self, action: _ActionT) -> _ActionT: ... def _remove_action(self, action: Action) -> None: ... def _add_container_actions(self, container: _ActionsContainer) -> None: ... @@ -236,11 +244,19 @@ class HelpFormatter: _current_indent: int _level: int _action_max_length: int - _root_section: Any - _current_section: Any + _root_section: _Section + _current_section: _Section _whitespace_matcher: Pattern[str] _long_break_matcher: Pattern[str] - _Section: type[Any] # Nested class + + class _Section: + formatter: HelpFormatter + heading: str | None + parent: Self | None + items: list[tuple[Callable[..., str], Iterable[Any]]] + def __init__(self, formatter: HelpFormatter, parent: Self | None, heading: str | None = None) -> None: ... + def format_help(self) -> str: ... + def __init__(self, prog: str, indent_increment: int = 2, max_help_position: int = 24, width: int | None = None) -> None: ... def _indent(self) -> None: ... def _dedent(self) -> None: ... @@ -249,16 +265,16 @@ class HelpFormatter: def end_section(self) -> None: ... def add_text(self, text: str | None) -> None: ... def add_usage( - self, usage: str | None, actions: Iterable[Action], groups: Iterable[_ArgumentGroup], prefix: str | None = None + self, usage: str | None, actions: Iterable[Action], groups: Iterable[_MutuallyExclusiveGroup], prefix: str | None = None ) -> None: ... def add_argument(self, action: Action) -> None: ... def add_arguments(self, actions: Iterable[Action]) -> None: ... def format_help(self) -> str: ... def _join_parts(self, part_strings: Iterable[str]) -> str: ... def _format_usage( - self, usage: str | None, actions: Iterable[Action], groups: Iterable[_ArgumentGroup], prefix: str | None + self, usage: str | None, actions: Iterable[Action], groups: Iterable[_MutuallyExclusiveGroup], prefix: str | None ) -> str: ... - def _format_actions_usage(self, actions: Iterable[Action], groups: Iterable[_ArgumentGroup]) -> str: ... + def _format_actions_usage(self, actions: Iterable[Action], groups: Iterable[_MutuallyExclusiveGroup]) -> str: ... def _format_text(self, text: str) -> str: ... def _format_action(self, action: Action) -> str: ... def _format_action_invocation(self, action: Action) -> str: ... @@ -342,7 +358,14 @@ class _ArgumentGroup(_ActionsContainer): title: str | None _group_actions: list[Action] def __init__( - self, container: _ActionsContainer, title: str | None = None, description: str | None = None, **kwargs: Any + self, + container: _ActionsContainer, + title: str | None = None, + description: str | None = None, + *, + prefix_chars: str = ..., + argument_default: Any = ..., + conflict_handler: str = ..., ) -> None: ... # undocumented diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi index 38a815b58..8b003503b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi @@ -80,5 +80,7 @@ class array(MutableSequence[_T], Generic[_T]): def __rmul__(self, __value: int) -> array[_T]: ... def __copy__(self) -> array[_T]: ... def __deepcopy__(self, __unused: Any) -> array[_T]: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... ArrayType = array diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi index ea899e150..377138141 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi @@ -3,7 +3,7 @@ import sys from _ast import * from _typeshed import ReadableBuffer, Unused from collections.abc import Iterator -from typing import Any, TypeVar, overload +from typing import Any, TypeVar as _TypeVar, overload from typing_extensions import Literal if sys.version_info >= (3, 8): @@ -168,7 +168,7 @@ class NodeTransformer(NodeVisitor): # The usual return type is AST | None, but Iterable[AST] # is also allowed in some cases -- this needs to be mapped. -_T = TypeVar("_T", bound=AST) +_T = _TypeVar("_T", bound=AST) if sys.version_info >= (3, 8): @overload diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi index e0993c840..64ba9f615 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi @@ -1,4 +1,4 @@ -from _typeshed import _BufferWithLen +from _typeshed import SizedBuffer from typing import IO, Any from typing_extensions import Literal, TypeAlias @@ -28,9 +28,9 @@ class openrsrc: class BinHex: def __init__(self, name_finfo_dlen_rlen: _FileInfoTuple, ofp: _FileHandleUnion) -> None: ... - def write(self, data: _BufferWithLen) -> None: ... + def write(self, data: SizedBuffer) -> None: ... def close_data(self) -> None: ... - def write_rsrc(self, data: _BufferWithLen) -> None: ... + def write_rsrc(self, data: SizedBuffer) -> None: ... def close(self) -> None: ... def binhex(inp: str, out: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index 6bc9c7ec8..b38717761 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -36,7 +36,6 @@ from typing import ( # noqa: Y022 IO, Any, BinaryIO, - ByteString, ClassVar, Generic, Mapping, @@ -54,7 +53,18 @@ from typing import ( # noqa: Y022 overload, type_check_only, ) -from typing_extensions import Concatenate, Literal, LiteralString, ParamSpec, Self, SupportsIndex, TypeAlias, TypeGuard, final +from typing_extensions import ( # type: ignore + Concatenate, + Literal, + LiteralString, + ParamSpec, + Self, + SupportsIndex, + TypeAlias, + TypeGuard, + TypeVarTuple, + final, +) if sys.version_info >= (3, 9): from types import GenericAlias @@ -188,6 +198,8 @@ class type: if sys.version_info >= (3, 10): def __or__(self, __value: Any) -> types.UnionType: ... def __ror__(self, __value: Any) -> types.UnionType: ... + if sys.version_info >= (3, 12): + __type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] class super: @overload @@ -245,6 +257,9 @@ class int: signed: bool = False, ) -> Self: ... + if sys.version_info >= (3, 12): + def is_integer(self) -> Literal[True]: ... + def __add__(self, __value: int) -> int: ... def __sub__(self, __value: int) -> int: ... def __mul__(self, __value: int) -> int: ... @@ -450,7 +465,7 @@ class str(Sequence[str]): @overload def format(self: LiteralString, *args: LiteralString, **kwargs: LiteralString) -> LiteralString: ... @overload - def format(self, *args: object, **kwargs: object) -> str: ... + def format(self, *args: object, **kwargs: object) -> str: ... # type: ignore def format_map(self, map: _FormatMapMapping) -> str: ... def index(self, __sub: str, __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...) -> int: ... def isalnum(self) -> bool: ... @@ -580,7 +595,7 @@ class str(Sequence[str]): @overload def __mod__(self: LiteralString, __value: LiteralString | tuple[LiteralString, ...]) -> LiteralString: ... @overload - def __mod__(self, __value: Any) -> str: ... + def __mod__(self, __value: Any) -> str: ... # type: ignore @overload def __mul__(self: LiteralString, __value: SupportsIndex) -> LiteralString: ... @overload @@ -592,7 +607,7 @@ class str(Sequence[str]): def __rmul__(self, __value: SupportsIndex) -> str: ... # type: ignore[misc] def __getnewargs__(self) -> tuple[str]: ... -class bytes(ByteString): +class bytes(Sequence[int]): @overload def __new__(cls, __o: Iterable[SupportsIndex] | SupportsIndex | SupportsBytes | ReadableBuffer) -> Self: ... @overload @@ -695,7 +710,9 @@ class bytes(ByteString): if sys.version_info >= (3, 11): def __bytes__(self) -> bytes: ... -class bytearray(MutableSequence[int], ByteString): + def __buffer__(self, __flags: int) -> memoryview: ... + +class bytearray(MutableSequence[int]): @overload def __init__(self) -> None: ... @overload @@ -810,6 +827,8 @@ class bytearray(MutableSequence[int], ByteString): def __gt__(self, __value: ReadableBuffer) -> bool: ... def __ge__(self, __value: ReadableBuffer) -> bool: ... def __alloc__(self) -> int: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... @final class memoryview(Sequence[int]): @@ -871,6 +890,9 @@ class memoryview(Sequence[int]): else: def hex(self) -> str: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... + @final class bool(int): def __new__(cls, __o: object = ...) -> Self: ... @@ -960,6 +982,8 @@ class function: if sys.version_info >= (3, 10): @property def __builtins__(self) -> dict[str, Any]: ... + if sys.version_info >= (3, 12): + __type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] __module__: str # mypy uses `builtins.function.__get__` to represent methods, properties, and getset_descriptors so we type the return as Any. @@ -1912,6 +1936,8 @@ class ImportError(Exception): name: str | None path: str | None msg: str # undocumented + if sys.version_info >= (3, 12): + name_from: str | None # undocumented class LookupError(Exception): ... class MemoryError(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi index 59f2e7a3c..139ba7af2 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi @@ -21,6 +21,9 @@ from _csv import ( unregister_dialect as unregister_dialect, writer as writer, ) + +if sys.version_info >= (3, 12): + from _csv import QUOTE_STRINGS as QUOTE_STRINGS, QUOTE_NOTNULL as QUOTE_NOTNULL from _typeshed import SupportsWrite from collections.abc import Collection, Iterable, Iterator, Mapping, Sequence from typing import Any, Generic, TypeVar, overload @@ -57,6 +60,8 @@ __all__ = [ "DictWriter", "unix_dialect", ] +if sys.version_info >= (3, 12): + __all__ += ["QUOTE_STRINGS", "QUOTE_NOTNULL"] _T = TypeVar("_T") diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi index e69de29bb..328a5b783 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi @@ -0,0 +1,5 @@ +# Attempts to improve these stubs are probably not the best use of time: +# - distutils is deleted in Python 3.12 and newer +# - Most users already do not use stdlib distutils, due to setuptools monkeypatching +# - We have very little quality assurance on these stubs, since due to the two above issues +# we allowlist all distutils errors in stubtest. diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi index 90676e365..6aec7515f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi @@ -1,7 +1,7 @@ import sys from _typeshed import FileDescriptorLike, ReadOnlyBuffer, WriteableBuffer from typing import Any, overload -from typing_extensions import Literal +from typing_extensions import Buffer, Literal if sys.platform != "win32": FASYNC: int @@ -20,6 +20,9 @@ if sys.platform != "win32": F_SETOWN: int F_UNLCK: int F_WRLCK: int + + F_GETLEASE: int + F_SETLEASE: int if sys.platform == "darwin": F_FULLFSYNC: int F_NOCACHE: int @@ -30,11 +33,9 @@ if sys.platform != "win32": F_SETSIG: int F_SHLCK: int F_SETLK64: int - F_SETLEASE: int F_GETSIG: int F_NOTIFY: int F_EXLCK: int - F_GETLEASE: int F_GETLK64: int if sys.version_info >= (3, 8): F_ADD_SEALS: int @@ -104,13 +105,19 @@ if sys.platform != "win32": def fcntl(__fd: FileDescriptorLike, __cmd: int, __arg: int = 0) -> int: ... @overload def fcntl(__fd: FileDescriptorLike, __cmd: int, __arg: str | ReadOnlyBuffer) -> bytes: ... + # If arg is an int, return int @overload def ioctl(__fd: FileDescriptorLike, __request: int, __arg: int = 0, __mutate_flag: bool = True) -> int: ... + # The return type works as follows: + # - If arg is a read-write buffer, return int if mutate_flag is True, otherwise bytes + # - If arg is a read-only buffer, return bytes (and ignore the value of mutate_flag) + # We can't represent that precisely as we can't distinguish between read-write and read-only + # buffers, so we add overloads for a few unambiguous cases and use Any for the rest. @overload - def ioctl(__fd: FileDescriptorLike, __request: int, __arg: WriteableBuffer, __mutate_flag: Literal[True] = True) -> int: ... + def ioctl(__fd: FileDescriptorLike, __request: int, __arg: bytes, __mutate_flag: bool = True) -> bytes: ... @overload def ioctl(__fd: FileDescriptorLike, __request: int, __arg: WriteableBuffer, __mutate_flag: Literal[False]) -> bytes: ... @overload - def ioctl(__fd: FileDescriptorLike, __request: int, __arg: ReadOnlyBuffer, __mutate_flag: bool = True) -> bytes: ... + def ioctl(__fd: FileDescriptorLike, __request: int, __arg: Buffer, __mutate_flag: bool = True) -> Any: ... def flock(__fd: FileDescriptorLike, __operation: int) -> None: ... def lockf(__fd: FileDescriptorLike, __cmd: int, __len: int = 0, __start: int = 0, __whence: int = 0) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi index 3c84978c1..7ec8addeb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi @@ -22,11 +22,9 @@ else: class Fraction(Rational): @overload - def __new__( - cls, numerator: int | Rational = 0, denominator: int | Rational | None = None, *, _normalize: bool = True - ) -> Self: ... + def __new__(cls, numerator: int | Rational = 0, denominator: int | Rational | None = None) -> Self: ... @overload - def __new__(cls, __value: float | Decimal | str, *, _normalize: bool = True) -> Self: ... + def __new__(cls, __value: float | Decimal | str) -> Self: ... @classmethod def from_float(cls, f: float) -> Self: ... @classmethod @@ -34,6 +32,8 @@ class Fraction(Rational): def limit_denominator(self, max_denominator: int = 1000000) -> Fraction: ... if sys.version_info >= (3, 8): def as_integer_ratio(self) -> tuple[int, int]: ... + if sys.version_info >= (3, 12): + def is_integer(self) -> bool: ... @property def numerator(a) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi index 5a9fd12ab..8adc3d822 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi @@ -72,9 +72,19 @@ if sys.version_info >= (3, 8): else: def lru_cache(maxsize: int | None = 128, typed: bool = False) -> Callable[[Callable[..., _T]], _lru_cache_wrapper[_T]]: ... -WRAPPER_ASSIGNMENTS: tuple[ - Literal["__module__"], Literal["__name__"], Literal["__qualname__"], Literal["__doc__"], Literal["__annotations__"] -] +if sys.version_info >= (3, 12): + WRAPPER_ASSIGNMENTS: tuple[ + Literal["__module__"], + Literal["__name__"], + Literal["__qualname__"], + Literal["__doc__"], + Literal["__annotations__"], + Literal["__type_params__"], + ] +else: + WRAPPER_ASSIGNMENTS: tuple[ + Literal["__module__"], Literal["__name__"], Literal["__qualname__"], Literal["__doc__"], Literal["__annotations__"] + ] WRAPPER_UPDATES: tuple[Literal["__dict__"]] class _Wrapped(Generic[_PWrapped, _RWrapped, _PWrapper, _RWapper]): @@ -87,17 +97,32 @@ class _Wrapped(Generic[_PWrapped, _RWrapped, _PWrapper, _RWapper]): class _Wrapper(Generic[_PWrapped, _RWrapped]): def __call__(self, f: Callable[_PWrapper, _RWapper]) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... -def update_wrapper( - wrapper: Callable[_PWrapper, _RWapper], - wrapped: Callable[_PWrapped, _RWrapped], - assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), - updated: Sequence[str] = ("__dict__",), -) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... -def wraps( - wrapped: Callable[_PWrapped, _RWrapped], - assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), - updated: Sequence[str] = ("__dict__",), -) -> _Wrapper[_PWrapped, _RWrapped]: ... +if sys.version_info >= (3, 12): + def update_wrapper( + wrapper: Callable[_PWrapper, _RWapper], + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__", "__type_params__"), + updated: Sequence[str] = ("__dict__",), + ) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... + def wraps( + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__", "__type_params__"), + updated: Sequence[str] = ("__dict__",), + ) -> _Wrapper[_PWrapped, _RWrapped]: ... + +else: + def update_wrapper( + wrapper: Callable[_PWrapper, _RWapper], + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), + updated: Sequence[str] = ("__dict__",), + ) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... + def wraps( + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), + updated: Sequence[str] = ("__dict__",), + ) -> _Wrapper[_PWrapped, _RWrapped]: ... + def total_ordering(cls: type[_T]) -> type[_T]: ... def cmp_to_key(mycmp: Callable[[_T, _T], int]) -> Callable[[_T], SupportsAllComparisons]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi index 6a794f381..1ec8b4b8c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi @@ -1,7 +1,7 @@ import _compression import sys import zlib -from _typeshed import ReadableBuffer, StrOrBytesPath, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer, StrOrBytesPath from io import FileIO from typing import Protocol, TextIO, overload from typing_extensions import Literal, TypeAlias @@ -159,9 +159,9 @@ class _GzipReader(_compression.DecompressReader): def __init__(self, fp: _ReadableFileobj) -> None: ... if sys.version_info >= (3, 8): - def compress(data: _BufferWithLen, compresslevel: int = 9, *, mtime: float | None = None) -> bytes: ... + def compress(data: SizedBuffer, compresslevel: int = 9, *, mtime: float | None = None) -> bytes: ... else: - def compress(data: _BufferWithLen, compresslevel: int = 9) -> bytes: ... + def compress(data: SizedBuffer, compresslevel: int = 9) -> bytes: ... def decompress(data: ReadableBuffer) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi index ee8af1b48..9ff99a5a0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import ReadableBuffer, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer from collections.abc import Callable from types import ModuleType from typing import Any, AnyStr, overload @@ -46,4 +46,4 @@ class HMAC: def compare_digest(__a: ReadableBuffer, __b: ReadableBuffer) -> bool: ... @overload def compare_digest(__a: AnyStr, __b: AnyStr) -> bool: ... -def digest(key: _BufferWithLen, msg: ReadableBuffer, digest: _DigestMod) -> bytes: ... +def digest(key: SizedBuffer, msg: ReadableBuffer, digest: _DigestMod) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi index 1c2112dd3..7781559c3 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi @@ -1,7 +1,7 @@ import subprocess import sys import time -from _typeshed import ReadableBuffer, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer from builtins import list as _list # conflicts with a method named "list" from collections.abc import Callable from datetime import datetime @@ -155,7 +155,7 @@ class _Authenticator: def __init__(self, mechinst: Callable[[bytes], bytes | bytearray | memoryview | str | None]) -> None: ... def process(self, data: str) -> str: ... def encode(self, inp: bytes | bytearray | memoryview) -> str: ... - def decode(self, inp: str | _BufferWithLen) -> bytes: ... + def decode(self, inp: str | SizedBuffer) -> bytes: ... def Internaldate2tuple(resp: ReadableBuffer) -> time.struct_time | None: ... def Int2AP(num: SupportsAbs[SupportsInt]) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi index a2252e38e..2d004a8e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi @@ -598,3 +598,25 @@ def classify_class_attrs(cls: type) -> list[Attribute]: ... if sys.version_info >= (3, 9): class ClassFoundException(Exception): ... + +if sys.version_info >= (3, 12): + class BufferFlags(enum.IntFlag): + SIMPLE: int + WRITABLE: int + FORMAT: int + ND: int + STRIDES: int + C_CONTIGUOUS: int + F_CONTIGUOUS: int + ANY_CONTIGUOUS: int + INDIRECT: int + CONTIG: int + CONTIG_RO: int + STRIDED: int + STRIDED_RO: int + RECORDS: int + RECORDS_RO: int + FULL: int + FULL_RO: int + READ: int + WRITE: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi index 63e9718ee..dc0cdff92 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi @@ -1,3 +1,4 @@ +import sys from _typeshed import SupportsRead, SupportsWrite from collections.abc import Callable from typing import Any @@ -6,6 +7,8 @@ from .decoder import JSONDecodeError as JSONDecodeError, JSONDecoder as JSONDeco from .encoder import JSONEncoder as JSONEncoder __all__ = ["dump", "dumps", "load", "loads", "JSONDecoder", "JSONDecodeError", "JSONEncoder"] +if sys.version_info >= (3, 12): + __all__ += ["AttrDict"] def dumps( obj: Any, @@ -59,3 +62,9 @@ def load( **kwds: Any, ) -> Any: ... def detect_encoding(b: bytes | bytearray) -> str: ... # undocumented + +if sys.version_info >= (3, 12): + class AttrDict(dict[str, Any]): + def __getattr__(self, name: str) -> Any: ... + def __setattr__(self, name: str, value: Any) -> None: ... + def __delattr__(self, name: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi index 3a7c8ade7..ad5bf392b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi @@ -179,7 +179,7 @@ class SysLogHandler(Handler): facility_names: ClassVar[dict[str, int]] # undocumented priority_map: ClassVar[dict[str, str]] # undocumented def __init__( - self, address: tuple[str, int] | str = ("localhost", 514), facility: int = 1, socktype: SocketKind | None = None + self, address: tuple[str, int] | str = ("localhost", 514), facility: str | int = 1, socktype: SocketKind | None = None ) -> None: ... if sys.version_info >= (3, 11): def createSocket(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi index 231964f39..4a4d592b8 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi @@ -112,7 +112,10 @@ def log1p(__x: _SupportsFloatOrIndex) -> float: ... def log2(__x: _SupportsFloatOrIndex) -> float: ... def modf(__x: _SupportsFloatOrIndex) -> tuple[float, float]: ... -if sys.version_info >= (3, 9): +if sys.version_info >= (3, 12): + def nextafter(__x: _SupportsFloatOrIndex, __y: _SupportsFloatOrIndex, *, steps: SupportsIndex | None = None) -> float: ... + +elif sys.version_info >= (3, 9): def nextafter(__x: _SupportsFloatOrIndex, __y: _SupportsFloatOrIndex) -> float: ... if sys.version_info >= (3, 8): @@ -130,6 +133,10 @@ def radians(__x: _SupportsFloatOrIndex) -> float: ... def remainder(__x: _SupportsFloatOrIndex, __y: _SupportsFloatOrIndex) -> float: ... def sin(__x: _SupportsFloatOrIndex) -> float: ... def sinh(__x: _SupportsFloatOrIndex) -> float: ... + +if sys.version_info >= (3, 12): + def sumprod(__p: Iterable[float], __q: Iterable[float]) -> float: ... + def sqrt(__x: _SupportsFloatOrIndex) -> float: ... def tan(__x: _SupportsFloatOrIndex) -> float: ... def tanh(__x: _SupportsFloatOrIndex) -> float: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi index 8da4ea7ca..38e192439 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi @@ -76,6 +76,8 @@ class mmap(Iterable[int], Sized): def __iter__(self) -> Iterator[int]: ... def __enter__(self) -> Self: ... def __exit__(self, *args: Unused) -> None: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... if sys.version_info >= (3, 8) and sys.platform != "win32": MADV_NORMAL: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi index 7aec66b58..3c2ae0fe7 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi @@ -55,7 +55,11 @@ class PurePath(PathLike[str]): if sys.version_info >= (3, 9): def is_relative_to(self, *other: StrPath) -> bool: ... - def match(self, path_pattern: str) -> bool: ... + if sys.version_info >= (3, 12): + def match(self, path_pattern: str, *, case_sensitive: bool | None = None) -> bool: ... + else: + def match(self, path_pattern: str) -> bool: ... + def relative_to(self, *other: StrPath) -> Self: ... def with_name(self, name: str) -> Self: ... if sys.version_info >= (3, 9): @@ -70,6 +74,9 @@ class PurePath(PathLike[str]): if sys.version_info >= (3, 9) and sys.version_info < (3, 11): def __class_getitem__(cls, type: Any) -> GenericAlias: ... + if sys.version_info >= (3, 12): + def with_segments(self, *args: StrPath) -> Self: ... + class PurePosixPath(PurePath): ... class PureWindowsPath(PurePath): ... @@ -86,8 +93,15 @@ class Path(PurePath): def stat(self) -> stat_result: ... def chmod(self, mode: int) -> None: ... - def exists(self) -> bool: ... - def glob(self, pattern: str) -> Generator[Self, None, None]: ... + if sys.version_info >= (3, 12): + def exists(self, *, follow_symlinks: bool = True) -> bool: ... + def glob(self, pattern: str, *, case_sensitive: bool | None = None) -> Generator[Self, None, None]: ... + def rglob(self, pattern: str, *, case_sensitive: bool | None = None) -> Generator[Self, None, None]: ... + else: + def exists(self) -> bool: ... + def glob(self, pattern: str) -> Generator[Self, None, None]: ... + def rglob(self, pattern: str) -> Generator[Self, None, None]: ... + def is_dir(self) -> bool: ... def is_file(self) -> bool: ... def is_symlink(self) -> bool: ... @@ -95,6 +109,9 @@ class Path(PurePath): def is_fifo(self) -> bool: ... def is_block_device(self) -> bool: ... def is_char_device(self) -> bool: ... + if sys.version_info >= (3, 12): + def is_junction(self) -> bool: ... + def iterdir(self) -> Generator[Self, None, None]: ... def lchmod(self, mode: int) -> None: ... def lstat(self) -> stat_result: ... @@ -159,6 +176,10 @@ class Path(PurePath): # so it's safer to pretend they don't exist def owner(self) -> str: ... def group(self) -> str: ... + + # This method does "exist" on Windows on <3.12, but always raises NotImplementedError + # On py312+, it works properly on Windows, as with all other platforms + if sys.platform != "win32" or sys.version_info >= (3, 12): def is_mount(self) -> bool: ... if sys.version_info >= (3, 9): @@ -171,7 +192,6 @@ class Path(PurePath): def replace(self, target: str | PurePath) -> None: ... def resolve(self, strict: bool = False) -> Self: ... - def rglob(self, pattern: str) -> Generator[Self, None, None]: ... def rmdir(self) -> None: ... def symlink_to(self, target: StrOrBytesPath, target_is_directory: bool = False) -> None: ... if sys.version_info >= (3, 10): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi index 405c45ca0..e0d69e7d3 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi @@ -168,7 +168,10 @@ class Pdb(Bdb, Cmd): def find_function(funcname: str, filename: str) -> tuple[str, str, int] | None: ... def main() -> None: ... def help() -> None: ... -def getsourcelines(obj: _SourceObjectType) -> tuple[list[str], int]: ... + +if sys.version_info < (3, 10): + def getsourcelines(obj: _SourceObjectType) -> tuple[list[str], int]: ... + def lasti2lineno(code: CodeType, lasti: int) -> int: ... class _rstr(str): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi index 55ff38585..cf3995d74 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi @@ -103,6 +103,8 @@ if sys.version_info >= (3, 8): def __init__(self, buffer: ReadableBuffer) -> None: ... def raw(self) -> memoryview: ... def release(self) -> None: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... _BufferCallback: TypeAlias = Callable[[PickleBuffer], Any] | None def dump( obj: Any, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi index 5434f2240..9fd1c64f2 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi @@ -34,6 +34,8 @@ __all__ = [ if sys.version_info >= (3, 9): __all__ += ["randbytes"] +if sys.version_info >= (3, 12): + __all__ += ["binomialvariate"] _T = TypeVar("_T") @@ -79,8 +81,15 @@ class Random(_random.Random): def uniform(self, a: float, b: float) -> float: ... def triangular(self, low: float = 0.0, high: float = 1.0, mode: float | None = None) -> float: ... + if sys.version_info >= (3, 12): + def binomialvariate(self, n: int = 1, p: float = 0.5) -> int: ... + def betavariate(self, alpha: float, beta: float) -> float: ... - def expovariate(self, lambd: float) -> float: ... + if sys.version_info >= (3, 12): + def expovariate(self, lambd: float = 1.0) -> float: ... + else: + def expovariate(self, lambd: float) -> float: ... + def gammavariate(self, alpha: float, beta: float) -> float: ... if sys.version_info >= (3, 11): def gauss(self, mu: float = 0.0, sigma: float = 1.0) -> float: ... @@ -117,6 +126,8 @@ expovariate = _inst.expovariate vonmisesvariate = _inst.vonmisesvariate gammavariate = _inst.gammavariate gauss = _inst.gauss +if sys.version_info >= (3, 12): + binomialvariate = _inst.binomialvariate betavariate = _inst.betavariate paretovariate = _inst.paretovariate weibullvariate = _inst.weibullvariate diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi index e8eb46833..ef716d404 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi @@ -87,22 +87,46 @@ else: ignore_dangling_symlinks: bool = False, ) -> _PathReturn: ... -_OnErrorCallback: TypeAlias = Callable[[Callable[..., Any], Any, Any], object] +_OnErrorCallback: TypeAlias = Callable[[Callable[..., Any], str, Any], object] +_OnExcCallback: TypeAlias = Callable[[Callable[..., Any], str, Exception], object] class _RmtreeType(Protocol): avoids_symlink_attacks: bool - if sys.version_info >= (3, 11): + if sys.version_info >= (3, 12): + @overload def __call__( self, path: StrOrBytesPath, - ignore_errors: bool = ..., - onerror: _OnErrorCallback | None = ..., + ignore_errors: bool = False, + onerror: _OnErrorCallback | None = None, *, - dir_fd: int | None = ..., + onexc: None = None, + dir_fd: int | None = None, + ) -> None: ... + @overload + def __call__( + self, + path: StrOrBytesPath, + ignore_errors: bool = False, + onerror: None = None, + *, + onexc: _OnExcCallback, + dir_fd: int | None = None, + ) -> None: ... + elif sys.version_info >= (3, 11): + def __call__( + self, + path: StrOrBytesPath, + ignore_errors: bool = False, + onerror: _OnErrorCallback | None = None, + *, + dir_fd: int | None = None, ) -> None: ... else: - def __call__(self, path: StrOrBytesPath, ignore_errors: bool = ..., onerror: _OnErrorCallback | None = ...) -> None: ... + def __call__( + self, path: StrOrBytesPath, ignore_errors: bool = False, onerror: _OnErrorCallback | None = None + ) -> None: ... rmtree: _RmtreeType @@ -167,7 +191,15 @@ def register_archive_format( name: str, function: Callable[[str, str], object], extra_args: None = None, description: str = "" ) -> None: ... def unregister_archive_format(name: str) -> None: ... -def unpack_archive(filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None) -> None: ... + +if sys.version_info >= (3, 12): + def unpack_archive( + filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None, *, filter: str | None = None + ) -> None: ... + +else: + def unpack_archive(filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None) -> None: ... + @overload def register_unpack_format( name: str, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi index 4228ad551..584fa164f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi @@ -1,6 +1,6 @@ import sys from _socket import _Address as _SourceAddress -from _typeshed import ReadableBuffer, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer from collections.abc import Sequence from email.message import Message as _Message from re import Pattern @@ -133,7 +133,7 @@ class SMTP: self, from_addr: str, to_addrs: str | Sequence[str], - msg: _BufferWithLen | str, + msg: SizedBuffer | str, mail_options: Sequence[str] = (), rcpt_options: Sequence[str] = (), ) -> _SendErrs: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi index 6c897b919..e1ffc573b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi @@ -438,6 +438,36 @@ if sys.platform == "win32": SIO_LOOPBACK_FAST_PATH as SIO_LOOPBACK_FAST_PATH, SIO_RCVALL as SIO_RCVALL, ) +if sys.version_info >= (3, 12): + from _socket import ( + IP_ADD_SOURCE_MEMBERSHIP as IP_ADD_SOURCE_MEMBERSHIP, + IP_BLOCK_SOURCE as IP_BLOCK_SOURCE, + IP_DROP_SOURCE_MEMBERSHIP as IP_DROP_SOURCE_MEMBERSHIP, + IP_PKTINFO as IP_PKTINFO, + IP_UNBLOCK_SOURCE as IP_UNBLOCK_SOURCE, + ) + + if sys.platform == "win32": + from _socket import ( + HV_GUID_BROADCAST as HV_GUID_BROADCAST, + HV_GUID_CHILDREN as HV_GUID_CHILDREN, + HV_GUID_LOOPBACK as HV_GUID_LOOPBACK, + HV_GUID_PARENT as HV_GUID_PARENT, + HV_GUID_WILDCARD as HV_GUID_WILDCARD, + HV_GUID_ZERO as HV_GUID_ZERO, + HV_PROTOCOL_RAW as HV_PROTOCOL_RAW, + HVSOCKET_ADDRESS_FLAG_PASSTHRU as HVSOCKET_ADDRESS_FLAG_PASSTHRU, + HVSOCKET_CONNECT_TIMEOUT as HVSOCKET_CONNECT_TIMEOUT, + HVSOCKET_CONNECT_TIMEOUT_MAX as HVSOCKET_CONNECT_TIMEOUT_MAX, + HVSOCKET_CONNECTED_SUSPEND as HVSOCKET_CONNECTED_SUSPEND, + ) + else: + from _socket import ( + ETHERTYPE_ARP as ETHERTYPE_ARP, + ETHERTYPE_IP as ETHERTYPE_IP, + ETHERTYPE_IPV6 as ETHERTYPE_IPV6, + ETHERTYPE_VLAN as ETHERTYPE_VLAN, + ) # Re-exported from errno EBADF: int @@ -489,6 +519,8 @@ class AddressFamily(IntEnum): AF_LINK: int if sys.platform != "darwin": AF_BLUETOOTH: int + if sys.platform == "win32" and sys.version_info >= (3, 12): + AF_HYPERV: int AF_INET = AddressFamily.AF_INET AF_INET6 = AddressFamily.AF_INET6 @@ -540,6 +572,9 @@ if sys.platform != "win32" or sys.version_info >= (3, 9): if sys.platform != "darwin": AF_BLUETOOTH = AddressFamily.AF_BLUETOOTH +if sys.platform == "win32" and sys.version_info >= (3, 12): + AF_HYPERV = AddressFamily.AF_HYPERV + class SocketKind(IntEnum): SOCK_STREAM: int SOCK_DGRAM: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi index 3799d82a0..6a932f66c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi @@ -28,6 +28,8 @@ if sys.platform != "win32": "UnixDatagramServer", "UnixStreamServer", ] + if sys.version_info >= (3, 12): + __all__ += ["ForkingUnixStreamServer", "ForkingUnixDatagramServer"] _RequestType: TypeAlias = _socket | tuple[bytes, _socket] _AfUnixAddress: TypeAlias = str | ReadableBuffer # address acceptable for an AF_UNIX socket @@ -124,6 +126,9 @@ class ThreadingMixIn: if sys.platform != "win32": class ForkingTCPServer(ForkingMixIn, TCPServer): ... class ForkingUDPServer(ForkingMixIn, UDPServer): ... + if sys.version_info >= (3, 12): + class ForkingUnixStreamServer(ForkingMixIn, UnixStreamServer): ... + class ForkingUnixDatagramServer(ForkingMixIn, UnixDatagramServer): ... class ThreadingTCPServer(ThreadingMixIn, TCPServer): ... class ThreadingUDPServer(ThreadingMixIn, UDPServer): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi index 1358b1f90..af5fcec6a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi @@ -114,8 +114,15 @@ if sys.version_info >= (3, 8): def __rsub__(self, x2: float | NormalDist) -> NormalDist: ... __rmul__ = __mul__ -if sys.version_info >= (3, 10): +if sys.version_info >= (3, 12): + def correlation( + __x: Sequence[_Number], __y: Sequence[_Number], *, method: Literal["linear", "ranked"] = "linear" + ) -> float: ... + +elif sys.version_info >= (3, 10): def correlation(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ... + +if sys.version_info >= (3, 10): def covariance(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ... class LinearRegression(NamedTuple): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi index c2fdbeccc..ca0491240 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi @@ -321,7 +321,7 @@ if sys.version_info < (3, 9): if sys.version_info >= (3, 8): # Doesn't exist at runtime, but exported in the stubs so pytest etc. can annotate their code more easily. - class UnraisableHookArgs: + class UnraisableHookArgs(Protocol): exc_type: type[BaseException] exc_value: BaseException | None exc_traceback: TracebackType | None @@ -359,3 +359,13 @@ if sys.version_info < (3, 8): # as part of the response to CVE-2020-10735 def set_int_max_str_digits(maxdigits: int) -> None: ... def get_int_max_str_digits() -> int: ... + +if sys.version_info >= (3, 12): + def getunicodeinternedsize() -> int: ... + def deactivate_stack_trampoline() -> None: ... + def is_stack_trampoline_active() -> bool: ... + # It always exists, but raises on non-linux platforms: + if sys.platform == "linux": + def activate_stack_trampoline(__backend: str) -> None: ... + else: + def activate_stack_trampoline(__backend: str) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi index cd27e91fb..1b6e4b99a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi @@ -33,7 +33,51 @@ template: str _StrMode: TypeAlias = Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"] _BytesMode: TypeAlias = Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] -if sys.version_info >= (3, 8): +if sys.version_info >= (3, 12): + @overload + def NamedTemporaryFile( + mode: _StrMode, + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + delete: bool = True, + *, + errors: str | None = None, + delete_on_close: bool = True, + ) -> _TemporaryFileWrapper[str]: ... + @overload + def NamedTemporaryFile( + mode: _BytesMode = "w+b", + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + delete: bool = True, + *, + errors: str | None = None, + delete_on_close: bool = True, + ) -> _TemporaryFileWrapper[bytes]: ... + @overload + def NamedTemporaryFile( + mode: str = "w+b", + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + delete: bool = True, + *, + errors: str | None = None, + delete_on_close: bool = True, + ) -> _TemporaryFileWrapper[Any]: ... + +elif sys.version_info >= (3, 8): @overload def NamedTemporaryFile( mode: _StrMode, @@ -185,7 +229,11 @@ class _TemporaryFileWrapper(Generic[AnyStr], IO[AnyStr]): file: IO[AnyStr] # io.TextIOWrapper, io.BufferedReader or io.BufferedWriter name: str delete: bool - def __init__(self, file: IO[AnyStr], name: str, delete: bool = True) -> None: ... + if sys.version_info >= (3, 12): + def __init__(self, file: IO[AnyStr], name: str, delete: bool = True, delete_on_close: bool = True) -> None: ... + else: + def __init__(self, file: IO[AnyStr], name: str, delete: bool = True) -> None: ... + def __enter__(self) -> Self: ... def __exit__(self, exc: type[BaseException] | None, value: BaseException | None, tb: TracebackType | None) -> None: ... def __getattr__(self, name: str) -> Any: ... @@ -425,7 +473,28 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): class TemporaryDirectory(Generic[AnyStr]): name: AnyStr - if sys.version_info >= (3, 10): + if sys.version_info >= (3, 12): + @overload + def __init__( + self: TemporaryDirectory[str], + suffix: str | None = None, + prefix: str | None = None, + dir: StrPath | None = None, + ignore_cleanup_errors: bool = False, + *, + delete: bool = True, + ) -> None: ... + @overload + def __init__( + self: TemporaryDirectory[bytes], + suffix: bytes | None = None, + prefix: bytes | None = None, + dir: BytesPath | None = None, + ignore_cleanup_errors: bool = False, + *, + delete: bool = True, + ) -> None: ... + elif sys.version_info >= (3, 10): @overload def __init__( self: TemporaryDirectory[str], diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi index 6275e4552..badd09cae 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi @@ -37,6 +37,9 @@ if sys.version_info >= (3, 8): if sys.version_info >= (3, 10): __all__ += ["getprofile", "gettrace"] +if sys.version_info >= (3, 12): + __all__ += ["setprofile_all_threads", "settrace_all_threads"] + _profile_hook: ProfileFunction | None def active_count() -> int: ... @@ -53,6 +56,10 @@ if sys.version_info >= (3, 8): def settrace(func: TraceFunction) -> None: ... def setprofile(func: ProfileFunction | None) -> None: ... +if sys.version_info >= (3, 12): + def setprofile_all_threads(func: ProfileFunction | None) -> None: ... + def settrace_all_threads(func: TraceFunction) -> None: ... + if sys.version_info >= (3, 10): def gettrace() -> TraceFunction | None: ... def getprofile() -> ProfileFunction | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi index 43475d912..fb31fbda6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi @@ -17,7 +17,7 @@ from importlib.machinery import ModuleSpec # pytype crashes if types.MappingProxyType inherits from collections.abc.Mapping instead of typing.Mapping from typing import Any, ClassVar, Generic, Mapping, Protocol, TypeVar, overload # noqa: Y022 -from typing_extensions import Literal, ParamSpec, final +from typing_extensions import Literal, ParamSpec, TypeVarTuple, final __all__ = [ "FunctionType", @@ -94,6 +94,8 @@ class FunctionType: if sys.version_info >= (3, 10): @property def __builtins__(self) -> dict[str, Any]: ... + if sys.version_info >= (3, 12): + __type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] __module__: str def __init__( diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi index 6fc677dcb..db042dc44 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi @@ -136,14 +136,32 @@ Any = object() @_final class TypeVar: - __name__: str - __bound__: Any | None - __constraints__: tuple[Any, ...] - __covariant__: bool - __contravariant__: bool - def __init__( - self, name: str, *constraints: Any, bound: Any | None = None, covariant: bool = False, contravariant: bool = False - ) -> None: ... + @property + def __name__(self) -> str: ... + @property + def __bound__(self) -> Any | None: ... + @property + def __constraints__(self) -> tuple[Any, ...]: ... + @property + def __covariant__(self) -> bool: ... + @property + def __contravariant__(self) -> bool: ... + if sys.version_info >= (3, 12): + @property + def __infer_variance__(self) -> bool: ... + def __init__( + self, + name: str, + *constraints: Any, + bound: Any | None = None, + covariant: bool = False, + contravariant: bool = False, + infer_variance: bool = False, + ) -> None: ... + else: + def __init__( + self, name: str, *constraints: Any, bound: Any | None = None, covariant: bool = False, contravariant: bool = False + ) -> None: ... if sys.version_info >= (3, 10): def __or__(self, right: Any) -> _SpecialForm: ... def __ror__(self, left: Any) -> _SpecialForm: ... @@ -193,30 +211,55 @@ if sys.version_info >= (3, 11): NotRequired: _SpecialForm LiteralString: _SpecialForm + @_final class TypeVarTuple: - __name__: str + @property + def __name__(self) -> str: ... def __init__(self, name: str) -> None: ... def __iter__(self) -> Any: ... def __typing_subst__(self, arg: Never) -> Never: ... def __typing_prepare_subst__(self, alias: Incomplete, args: Incomplete) -> Incomplete: ... if sys.version_info >= (3, 10): + @_final class ParamSpecArgs: - __origin__: ParamSpec + @property + def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... + @_final class ParamSpecKwargs: - __origin__: ParamSpec + @property + def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... + @_final class ParamSpec: - __name__: str - __bound__: Any | None - __covariant__: bool - __contravariant__: bool - def __init__( - self, name: str, *, bound: Any | None = None, contravariant: bool = False, covariant: bool = False - ) -> None: ... + @property + def __name__(self) -> str: ... + @property + def __bound__(self) -> Any | None: ... + @property + def __covariant__(self) -> bool: ... + @property + def __contravariant__(self) -> bool: ... + if sys.version_info >= (3, 12): + @property + def __infer_variance__(self) -> bool: ... + def __init__( + self, + name: str, + *, + bound: Any | None = None, + contravariant: bool = False, + covariant: bool = False, + infer_variance: bool = False, + ) -> None: ... + else: + def __init__( + self, name: str, *, bound: Any | None = None, contravariant: bool = False, covariant: bool = False + ) -> None: ... + @property def args(self) -> ParamSpecArgs: ... @property @@ -233,7 +276,7 @@ if sys.version_info >= (3, 10): class NewType: def __init__(self, name: str, tp: Any) -> None: ... - def __call__(self, x: _T) -> _T: ... + def __call__(self, __x: _T) -> _T: ... def __or__(self, other: Any) -> _SpecialForm: ... def __ror__(self, other: Any) -> _SpecialForm: ... __supertype__: type @@ -728,7 +771,7 @@ class TextIO(IO[str]): @abstractmethod def __enter__(self) -> TextIO: ... -class ByteString(Sequence[int], metaclass=ABCMeta): ... +ByteString: typing_extensions.TypeAlias = bytes | bytearray | memoryview # Functions @@ -800,18 +843,21 @@ if sys.version_info >= (3, 11): class NamedTuple(tuple[Any, ...]): if sys.version_info < (3, 8): - _field_types: collections.OrderedDict[str, type] + _field_types: ClassVar[collections.OrderedDict[str, type]] elif sys.version_info < (3, 9): - _field_types: dict[str, type] - _field_defaults: dict[str, Any] - _fields: tuple[str, ...] - _source: str + _field_types: ClassVar[dict[str, type]] + _field_defaults: ClassVar[dict[str, Any]] + _fields: ClassVar[tuple[str, ...]] + # __orig_bases__ sometimes exists on <3.12, but not consistently + # So we only add it to the stub on 3.12+. + if sys.version_info >= (3, 12): + __orig_bases__: ClassVar[tuple[Any, ...]] @overload def __init__(self, typename: str, fields: Iterable[tuple[str, Any]] = ...) -> None: ... @overload def __init__(self, typename: str, fields: None = None, **kwargs: Any) -> None: ... @classmethod - def _make(cls: Type[_T], iterable: Iterable[Any]) -> _T: ... + def _make(cls, iterable: Iterable[Any]) -> typing_extensions.Self: ... if sys.version_info >= (3, 8): def _asdict(self) -> dict[str, Any]: ... else: @@ -827,6 +873,10 @@ class _TypedDict(Mapping[str, object], metaclass=ABCMeta): if sys.version_info >= (3, 9): __required_keys__: ClassVar[frozenset[str]] __optional_keys__: ClassVar[frozenset[str]] + # __orig_bases__ sometimes exists on <3.12, but not consistently, + # so we only add it to the stub on 3.12+ + if sys.version_info >= (3, 12): + __orig_bases__: ClassVar[tuple[Any, ...]] def copy(self) -> typing_extensions.Self: ... # Using Never so that only calls using mypy plugin hook that specialize the signature # can go through. @@ -873,3 +923,26 @@ if sys.version_info >= (3, 10): def is_typeddict(tp: object) -> bool: ... def _type_repr(obj: object) -> str: ... + +if sys.version_info >= (3, 12): + def override(__arg: _F) -> _F: ... + @_final + class TypeAliasType: + def __init__( + self, name: str, value: Any, *, type_params: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] = () + ) -> None: ... + @property + def __value__(self) -> Any: ... + @property + def __type_params__(self) -> tuple[TypeVar | ParamSpec | TypeVarTuple, ...]: ... + @property + def __parameters__(self) -> tuple[Any, ...]: ... + @property + def __name__(self) -> str: ... + # It's writable on types, but not on instances of TypeAliasType. + @property + def __module__(self) -> str | None: ... # type: ignore[override] + def __getitem__(self, parameters: Any) -> Any: ... + if sys.version_info >= (3, 10): + def __or__(self, right: Any) -> _SpecialForm: ... + def __ror__(self, left: Any) -> _SpecialForm: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi index 653274188..c96171542 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi @@ -22,9 +22,14 @@ from typing import ( # noqa: Y022,Y039 DefaultDict as DefaultDict, Deque as Deque, Mapping, - NewType as NewType, NoReturn as NoReturn, Sequence, + SupportsAbs as SupportsAbs, + SupportsBytes as SupportsBytes, + SupportsComplex as SupportsComplex, + SupportsFloat as SupportsFloat, + SupportsInt as SupportsInt, + SupportsRound as SupportsRound, Text as Text, Type as Type, _Alias, @@ -39,6 +44,7 @@ if sys.version_info >= (3, 9): __all__ = [ "Any", + "Buffer", "ClassVar", "Concatenate", "Final", @@ -66,6 +72,12 @@ __all__ = [ "OrderedDict", "TypedDict", "SupportsIndex", + "SupportsAbs", + "SupportsRound", + "SupportsBytes", + "SupportsComplex", + "SupportsFloat", + "SupportsInt", "Annotated", "assert_never", "assert_type", @@ -84,6 +96,7 @@ __all__ = [ "runtime_checkable", "Text", "TypeAlias", + "TypeAliasType", "TypeGuard", "TYPE_CHECKING", "Never", @@ -93,6 +106,7 @@ __all__ = [ "clear_overloads", "get_args", "get_origin", + "get_original_bases", "get_overloads", "get_type_hints", ] @@ -134,6 +148,7 @@ class _TypedDict(Mapping[str, object], metaclass=abc.ABCMeta): __required_keys__: ClassVar[frozenset[str]] __optional_keys__: ClassVar[frozenset[str]] __total__: ClassVar[bool] + __orig_bases__: ClassVar[tuple[Any, ...]] def copy(self) -> Self: ... # Using Never so that only calls using mypy plugin hook that specialize the signature # can go through. @@ -183,10 +198,11 @@ class SupportsIndex(Protocol, metaclass=abc.ABCMeta): @abc.abstractmethod def __index__(self) -> int: ... -# New things in 3.10 +# New and changed things in 3.10 if sys.version_info >= (3, 10): from typing import ( Concatenate as Concatenate, + NewType as NewType, ParamSpecArgs as ParamSpecArgs, ParamSpecKwargs as ParamSpecKwargs, TypeAlias as TypeAlias, @@ -194,12 +210,16 @@ if sys.version_info >= (3, 10): is_typeddict as is_typeddict, ) else: + @final class ParamSpecArgs: - __origin__: ParamSpec + @property + def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... + @final class ParamSpecKwargs: - __origin__: ParamSpec + @property + def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... Concatenate: _SpecialForm @@ -207,6 +227,11 @@ else: TypeGuard: _SpecialForm def is_typeddict(tp: object) -> bool: ... + class NewType: + def __init__(self, name: str, tp: Any) -> None: ... + def __call__(self, __x: _T) -> _T: ... + __supertype__: type + # New things in 3.11 # NamedTuples are not new, but the ability to create generic NamedTuples is new in 3.11 if sys.version_info >= (3, 11): @@ -251,12 +276,12 @@ else: class NamedTuple(tuple[Any, ...]): if sys.version_info < (3, 8): - _field_types: collections.OrderedDict[str, type] + _field_types: ClassVar[collections.OrderedDict[str, type]] elif sys.version_info < (3, 9): - _field_types: dict[str, type] - _field_defaults: dict[str, Any] - _fields: tuple[str, ...] - _source: str + _field_types: ClassVar[dict[str, type]] + _field_defaults: ClassVar[dict[str, Any]] + _fields: ClassVar[tuple[str, ...]] + __orig_bases__: ClassVar[tuple[Any, ...]] @overload def __init__(self, typename: str, fields: Iterable[tuple[str, Any]] = ...) -> None: ... @overload @@ -272,16 +297,24 @@ else: # New things in 3.xx # The `default` parameter was added to TypeVar, ParamSpec, and TypeVarTuple (PEP 696) -# The `infer_variance` parameter was added to TypeVar (PEP 695) +# The `infer_variance` parameter was added to TypeVar in 3.12 (PEP 695) # typing_extensions.override (PEP 698) @final class TypeVar: - __name__: str - __bound__: Any | None - __constraints__: tuple[Any, ...] - __covariant__: bool - __contravariant__: bool - __default__: Any | None + @property + def __name__(self) -> str: ... + @property + def __bound__(self) -> Any | None: ... + @property + def __constraints__(self) -> tuple[Any, ...]: ... + @property + def __covariant__(self) -> bool: ... + @property + def __contravariant__(self) -> bool: ... + @property + def __infer_variance__(self) -> bool: ... + @property + def __default__(self) -> Any | None: ... def __init__( self, name: str, @@ -300,11 +333,18 @@ class TypeVar: @final class ParamSpec: - __name__: str - __bound__: type[Any] | None - __covariant__: bool - __contravariant__: bool - __default__: type[Any] | None + @property + def __name__(self) -> str: ... + @property + def __bound__(self) -> Any | None: ... + @property + def __covariant__(self) -> bool: ... + @property + def __contravariant__(self) -> bool: ... + @property + def __infer_variance__(self) -> bool: ... + @property + def __default__(self) -> Any | None: ... def __init__( self, name: str, @@ -321,30 +361,48 @@ class ParamSpec: @final class TypeVarTuple: - __name__: str - __default__: Any | None + @property + def __name__(self) -> str: ... + @property + def __default__(self) -> Any | None: ... def __init__(self, name: str, *, default: Any | None = None) -> None: ... def __iter__(self) -> Any: ... # Unpack[Self] -def override(__arg: _F) -> _F: ... def deprecated(__msg: str, *, category: type[Warning] | None = ..., stacklevel: int = 1) -> Callable[[_T], _T]: ... -# PEP 695 - -@final -class TypeAliasType: - def __new__( - cls, - name: str, - value: Any, - *, - type_params: tuple[Any, ...] | None = None, - ) -> TypeAliasType: ... - def __or__(self, other: Any) -> Any: ... - __name__: str - __parameters__: tuple[Any, ...] | None - __value__: Any - +if sys.version_info >= (3, 12): + from collections.abc import Buffer as Buffer + from types import get_original_bases as get_original_bases + from typing import TypeAliasType as TypeAliasType, override as override +else: + def override(__arg: _F) -> _F: ... + def get_original_bases(__cls: type) -> tuple[Any, ...]: ... + @final + class TypeAliasType: + def __init__( + self, name: str, value: Any, *, type_params: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] = () + ) -> None: ... + @property + def __value__(self) -> Any: ... + @property + def __type_params__(self) -> tuple[TypeVar | ParamSpec | TypeVarTuple, ...]: ... + @property + def __parameters__(self) -> tuple[Any, ...]: ... + @property + def __name__(self) -> str: ... + # It's writable on types, but not on instances of TypeAliasType. + @property + def __module__(self) -> str | None: ... # type: ignore[override] + def __getitem__(self, parameters: Any) -> Any: ... + if sys.version_info >= (3, 10): + def __or__(self, right: Any) -> _SpecialForm: ... + def __ror__(self, left: Any) -> _SpecialForm: ... + + @runtime_checkable + class Buffer(Protocol): + # Not actually a Protocol at runtime; see + # https://github.com/python/typeshed/issues/10224 for why we're defining it this way + def __buffer__(self, __flags: int) -> memoryview: ... # PEP 705 ReadOnly: _SpecialForm diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi index 0bbab52f9..13f48fe85 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi @@ -41,7 +41,7 @@ _P = ParamSpec("_P") ProxyTypes: tuple[type[Any], ...] class WeakMethod(ref[_CallableT], Generic[_CallableT]): - def __new__(cls, meth: _CallableT, callback: Callable[[_CallableT], object] | None = None) -> Self: ... + def __new__(cls, meth: _CallableT, callback: Callable[[Self], object] | None = None) -> Self: ... def __call__(self) -> _CallableT | None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi index 8c32f3080..79969359f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi @@ -2,7 +2,7 @@ import gzip import http.client import sys import time -from _typeshed import ReadableBuffer, SupportsRead, SupportsWrite, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer, SupportsRead, SupportsWrite from collections.abc import Callable, Iterable, Mapping from datetime import datetime from io import BytesIO @@ -236,20 +236,20 @@ class Transport: def __init__(self, use_datetime: bool = False, use_builtin_types: bool = False) -> None: ... def request( - self, host: _HostType, handler: str, request_body: _BufferWithLen, verbose: bool = False + self, host: _HostType, handler: str, request_body: SizedBuffer, verbose: bool = False ) -> tuple[_Marshallable, ...]: ... def single_request( - self, host: _HostType, handler: str, request_body: _BufferWithLen, verbose: bool = False + self, host: _HostType, handler: str, request_body: SizedBuffer, verbose: bool = False ) -> tuple[_Marshallable, ...]: ... def getparser(self) -> tuple[ExpatParser, Unmarshaller]: ... def get_host_info(self, host: _HostType) -> tuple[str, list[tuple[str, str]], dict[str, str]]: ... def make_connection(self, host: _HostType) -> http.client.HTTPConnection: ... def close(self) -> None: ... def send_request( - self, host: _HostType, handler: str, request_body: _BufferWithLen, debug: bool + self, host: _HostType, handler: str, request_body: SizedBuffer, debug: bool ) -> http.client.HTTPConnection: ... def send_headers(self, connection: http.client.HTTPConnection, headers: list[tuple[str, str]]) -> None: ... - def send_content(self, connection: http.client.HTTPConnection, request_body: _BufferWithLen) -> None: ... + def send_content(self, connection: http.client.HTTPConnection, request_body: SizedBuffer) -> None: ... def parse_response(self, response: http.client.HTTPResponse) -> tuple[_Marshallable, ...]: ... class SafeTransport(Transport): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi index 92f1dc49a..abda7a3b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi @@ -1,6 +1,6 @@ import io import sys -from _typeshed import StrOrBytesPath, StrPath, _BufferWithLen +from _typeshed import SizedBuffer, StrOrBytesPath, StrPath from collections.abc import Callable, Iterable, Iterator from os import PathLike from types import TracebackType @@ -179,7 +179,7 @@ class ZipFile: def writestr( self, zinfo_or_arcname: str | ZipInfo, - data: _BufferWithLen | str, + data: SizedBuffer | str, compress_type: int | None = None, compresslevel: int | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi index ee97faace..0189bfe71 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi @@ -17,8 +17,10 @@ class zipimporter: else: def __init__(self, path: StrOrBytesPath) -> None: ... - def find_loader(self, fullname: str, path: str | None = None) -> tuple[zipimporter | None, list[str]]: ... # undocumented - def find_module(self, fullname: str, path: str | None = None) -> zipimporter | None: ... + if sys.version_info < (3, 12): + def find_loader(self, fullname: str, path: str | None = None) -> tuple[zipimporter | None, list[str]]: ... # undocumented + def find_module(self, fullname: str, path: str | None = None) -> zipimporter | None: ... + def get_code(self, fullname: str) -> CodeType: ... def get_data(self, pathname: str) -> bytes: ... def get_filename(self, fullname: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi index 771f0cd24..c00379e37 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi @@ -6,7 +6,6 @@ from typing_extensions import Final, ParamSpec, SupportsIndex, TypeAlias from pyscreeze import ( center as center, - grab as grab, locate as locate, locateAll as locateAll, locateAllOnScreen as locateAllOnScreen, @@ -68,6 +67,9 @@ def getPointOnLine(x1: float, y1: float, x2: float, y2: float, n: float) -> tupl def linear(n: float) -> float: ... def position(x: int | None = None, y: int | None = None) -> Point: ... def size() -> Size: ... + +resolution = size + def onScreen(x: _NormalizeableXArg | None, y: SupportsInt | None = None) -> bool: ... def mouseDown( x: _NormalizeableXArg | None = None, @@ -235,6 +237,9 @@ def typewrite( write = typewrite def hotkey(*args: str, logScreenshot: bool | None = None, interval: float = 0.0) -> None: ... + +shortcut = hotkey + def failSafeCheck() -> None: ... def displayMousePosition(xOffset: float = 0, yOffset: float = 0) -> None: ... def sleep(seconds: float) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi index 5c52490e9..be6db8189 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi @@ -41,7 +41,7 @@ class PyScreezeException(Exception): ... class ImageNotFoundException(PyScreezeException): ... # _locateAll_opencv -def requiresPillow(wrappedFunction: Callable[_P, _R]) -> Callable[_P, _R]: ... +def requiresPyGetWindow(wrappedFunction: Callable[_P, _R]) -> Callable[_P, _R]: ... @overload def locate( needleImage: str | Image.Image | _Mat, @@ -142,6 +142,8 @@ def locateCenterOnScreen( step: int = 1, confidence: None = None, ) -> Point | None: ... +def locateOnScreenNear(image: str | Image.Image | _Mat, x: int, y: int) -> Box: ... +def locateCenterOnScreenNear(image: str | Image.Image | _Mat, x: int, y: int) -> Point | None: ... # _locateAll_opencv @overload @@ -176,8 +178,6 @@ def pixelMatchesColor( def pixel(x: int, y: int) -> tuple[int, int, int]: ... def screenshot(imageFilename: StrOrBytesPath | None = None, region: tuple[int, int, int, int] | None = None) -> Image.Image: ... -grab = screenshot - # _locateAll_opencv @overload def locateAll( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi index 14dc7b537..883492c73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi @@ -1,7 +1,6 @@ from collections.abc import Callable, Iterable, Iterator, Mapping from re import Pattern from typing import Any, TypeVar, overload -from typing_extensions import TypeAlias from . import resolver as resolver # Help mypy a bit; this is implied by loader and dumper from .constructor import BaseConstructor @@ -20,9 +19,6 @@ from .representer import BaseRepresenter from .resolver import BaseResolver from .tokens import * -# FIXME: the functions really return str if encoding is None, otherwise bytes. Waiting for python/mypy#5621 -_Yaml: TypeAlias = Any - _T = TypeVar("_T") _Constructor = TypeVar("_Constructor", bound=BaseConstructor) _Representer = TypeVar("_Representer", bound=BaseRepresenter) @@ -58,6 +54,7 @@ def serialize_all( nodes, stream: _WriteStream[Any], Dumper=..., + *, canonical: bool | None = None, indent: int | None = None, width: int | _Inf | None = None, @@ -74,33 +71,51 @@ def serialize_all( nodes, stream: None = None, Dumper=..., + *, canonical: bool | None = None, indent: int | None = None, width: int | _Inf | None = None, allow_unicode: bool | None = None, line_break: str | None = None, - encoding: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, +) -> str: ... +@overload +def serialize_all( + nodes, + stream: None = None, + Dumper=..., + *, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, explicit_start: bool | None = None, explicit_end: bool | None = None, version: tuple[int, int] | None = None, tags: Mapping[str, str] | None = None, -) -> _Yaml: ... +) -> bytes: ... @overload def serialize( node, stream: _WriteStream[Any], Dumper=..., *, - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, ) -> None: ... @overload def serialize( @@ -108,22 +123,40 @@ def serialize( stream: None = None, Dumper=..., *, - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., -) -> _Yaml: ... + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, +) -> str: ... +@overload +def serialize( + node, + stream: None = None, + Dumper=..., + *, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, +) -> bytes: ... @overload def dump_all( documents: Iterable[Any], stream: _WriteStream[Any], Dumper=..., + *, default_style: str | None = None, default_flow_style: bool | None = False, canonical: bool | None = None, @@ -143,6 +176,7 @@ def dump_all( documents: Iterable[Any], stream: None = None, Dumper=..., + *, default_style: str | None = None, default_flow_style: bool | None = False, canonical: bool | None = None, @@ -150,32 +184,52 @@ def dump_all( width: int | _Inf | None = None, allow_unicode: bool | None = None, line_break: str | None = None, - encoding: str | None = None, + encoding: None = None, explicit_start: bool | None = None, explicit_end: bool | None = None, version: tuple[int, int] | None = None, tags: Mapping[str, str] | None = None, sort_keys: bool = True, -) -> _Yaml: ... +) -> str: ... +@overload +def dump_all( + documents: Iterable[Any], + stream: None = None, + Dumper=..., + *, + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> bytes: ... @overload def dump( data: Any, stream: _WriteStream[Any], Dumper=..., *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... @overload def dump( @@ -183,96 +237,154 @@ def dump( stream: None = None, Dumper=..., *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., -) -> _Yaml: ... + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> str: ... +@overload +def dump( + data: Any, + stream: None = None, + Dumper=..., + *, + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> bytes: ... @overload def safe_dump_all( documents: Iterable[Any], stream: _WriteStream[Any], *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... @overload def safe_dump_all( documents: Iterable[Any], stream: None = None, *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., -) -> _Yaml: ... + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> str: ... +@overload +def safe_dump_all( + documents: Iterable[Any], + stream: None = None, + *, + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> bytes: ... @overload def safe_dump( data: Any, stream: _WriteStream[Any], *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... @overload def safe_dump( data: Any, stream: None = None, *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., -) -> _Yaml: ... + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> str: ... +@overload +def safe_dump( + data: Any, + stream: None = None, + *, + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> bytes: ... def add_implicit_resolver( tag: str, regexp: Pattern[str], diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi index ad15feec9..27a3c70a4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import FileDescriptorOrPath, GenericPath, ReadableBuffer, StrOrBytesPath +from _typeshed import BytesPath, FileDescriptorOrPath, GenericPath, ReadableBuffer, StrOrBytesPath, StrPath from asyncio.events import AbstractEventLoop from collections.abc import Sequence from os import _ScandirIterator, stat_result @@ -26,6 +26,9 @@ async def rename( loop: AbstractEventLoop | None = ..., executor: Any = ..., ) -> None: ... +async def renames( + old: StrOrBytesPath, new: StrOrBytesPath, loop: AbstractEventLoop | None = ..., executor: Any = ... +) -> None: ... async def replace( src: StrOrBytesPath, dst: StrOrBytesPath, @@ -38,12 +41,37 @@ async def replace( async def remove( path: StrOrBytesPath, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... +async def unlink( + path: StrOrBytesPath, *, dir_fd: int | None = ..., loop: AbstractEventLoop | None = ..., executor: Any = ... +) -> None: ... async def mkdir( path: StrOrBytesPath, mode: int = 511, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... async def makedirs( name: StrOrBytesPath, mode: int = 511, exist_ok: bool = False, *, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... +async def link( + src: StrOrBytesPath, + dst: StrOrBytesPath, + *, + src_dir_fd: int | None = ..., + dst_dir_fd: int | None = ..., + follow_symlinks: bool = ..., + loop: AbstractEventLoop | None = ..., + executor: Any = ..., +) -> None: ... +async def symlink( + src: StrOrBytesPath, + dst: StrOrBytesPath, + target_is_directory: bool = ..., + *, + dir_fd: int | None = ..., + loop: AbstractEventLoop | None = ..., + executor: Any = ..., +) -> None: ... +async def readlink( + path: AnyStr, *, dir_fd: int | None = ..., loop: AbstractEventLoop | None = ..., executor: Any = ... +) -> AnyStr: ... async def rmdir( path: StrOrBytesPath, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... @@ -56,6 +84,12 @@ async def scandir(path: int, *, loop: AbstractEventLoop | None = ..., executor: async def scandir( path: GenericPath[AnyStr], *, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> _ScandirIterator[AnyStr]: ... +@overload +async def listdir(path: StrPath | None, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> list[str]: ... +@overload +async def listdir(path: BytesPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> list[bytes]: ... +@overload +async def listdir(path: int, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> list[str]: ... if sys.platform != "win32": @overload diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml index 7dc2c18b4..a80fc97a8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml @@ -1,5 +1,5 @@ version = "2.11.*" -requires = ["types-pytz"] +requires = ["types-pytz", "types-setuptools"] obsolete_since = "2.12.1" # Released on 2023-02-28 partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi index dfc1a1308..c20579b48 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi @@ -1,8 +1,9 @@ import abc from _typeshed import Incomplete -from distutils.cmd import Command as _Command from typing import Any +from setuptools._distutils.cmd import Command as _Command + def listify_value(arg, split: Incomplete | None = None): ... class Command(_Command, metaclass=abc.ABCMeta): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml index 04a023450..ad13d437b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.19.*" +version = "4.20.*" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml index e7239b079..3a9cb22e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml @@ -1,4 +1,5 @@ version = "1.15.*" +requires = ["types-setuptools"] [tool.stubtest] # linux and darwin are mostly equivalent, except for a single `RTLD_DEEPBIND` variable diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi index 770751128..85478ce66 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi @@ -1,4 +1,3 @@ -import distutils.core import sys import types from _typeshed import Incomplete, ReadableBuffer, WriteableBuffer @@ -7,6 +6,7 @@ from typing import Any, TypeVar, overload from typing_extensions import Literal, TypeAlias import _cffi_backend +from setuptools._distutils.extension import Extension _T = TypeVar("_T") @@ -93,7 +93,7 @@ class FFI: def set_source_pkgconfig( self, module_name: str, pkgconfig_libs: list[str], source: str, source_extension: str = ".c", **kwds: Any ) -> None: ... - def distutils_extension(self, tmpdir: str = "build", verbose: bool = True) -> distutils.core.Extension: ... + def distutils_extension(self, tmpdir: str = "build", verbose: bool = True) -> Extension: ... def emit_c_code(self, filename: str) -> None: ... def emit_python_code(self, filename: str) -> None: ... def compile(self, tmpdir: str = ".", verbose: int = 0, target: str | None = None, debug: bool | None = None) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml deleted file mode 100644 index 7e95f1f53..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml +++ /dev/null @@ -1,6 +0,0 @@ -version = "5.0.*" -obsolete_since = "5.1.0" # Released on 2022-12-01 -partial_stub = true - -[tool.stubtest] -ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi deleted file mode 100644 index 6a87f3434..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi +++ /dev/null @@ -1,16 +0,0 @@ -from typing_extensions import TypedDict - -from .universaldetector import UniversalDetector as UniversalDetector, _FinalResultType, _IntermediateResultType -from .version import VERSION as VERSION, __version__ as __version__ - -# unused in this module, but imported in multiple submodules -class _LangModelType(TypedDict): # noqa: Y049 - char_to_order_map: tuple[int, ...] - precedence_matrix: tuple[int, ...] - typical_positive_ratio: float - keep_english_letter: bool - charset_name: str - language: str - -def detect(byte_str: bytes | bytearray) -> _FinalResultType: ... -def detect_all(byte_str: bytes | bytearray, ignore_threshold: bool = False) -> list[_IntermediateResultType]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi deleted file mode 100644 index 71c9e10c6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi +++ /dev/null @@ -1,39 +0,0 @@ -class InputState: - PURE_ASCII: int - ESC_ASCII: int - HIGH_BYTE: int - -class LanguageFilter: - CHINESE_SIMPLIFIED: int - CHINESE_TRADITIONAL: int - JAPANESE: int - KOREAN: int - NON_CJK: int - ALL: int - CHINESE: int - CJK: int - -class ProbingState: - DETECTING: int - FOUND_IT: int - NOT_ME: int - -class MachineState: - START: int - ERROR: int - ITS_ME: int - -class SequenceLikelihood: - NEGATIVE: int - UNLIKELY: int - LIKELY: int - POSITIVE: int - @classmethod - def get_num_categories(cls) -> int: ... - -class CharacterCategory: - UNDEFINED: int - LINE_BREAK: int - SYMBOL: int - DIGIT: int - CONTROL: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi deleted file mode 100644 index 07344de5c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from . import _LangModelType - -Latin5_BulgarianCharToOrderMap: tuple[int, ...] -win1251BulgarianCharToOrderMap: tuple[int, ...] -BulgarianLangModel: tuple[int, ...] -Latin5BulgarianModel: _LangModelType -Win1251BulgarianModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi deleted file mode 100644 index 22e7c52dc..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi +++ /dev/null @@ -1,15 +0,0 @@ -from . import _LangModelType - -KOI8R_char_to_order_map: tuple[int, ...] -win1251_char_to_order_map: tuple[int, ...] -latin5_char_to_order_map: tuple[int, ...] -macCyrillic_char_to_order_map: tuple[int, ...] -IBM855_char_to_order_map: tuple[int, ...] -IBM866_char_to_order_map: tuple[int, ...] -RussianLangModel: tuple[int, ...] -Koi8rModel: _LangModelType -Win1251CyrillicModel: _LangModelType -Latin5CyrillicModel: _LangModelType -MacCyrillicModel: _LangModelType -Ibm866Model: _LangModelType -Ibm855Model: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi deleted file mode 100644 index ceee125a2..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from . import _LangModelType - -Latin7_char_to_order_map: tuple[int, ...] -win1253_char_to_order_map: tuple[int, ...] -GreekLangModel: tuple[int, ...] -Latin7GreekModel: _LangModelType -Win1253GreekModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi deleted file mode 100644 index a17e10de3..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from . import _LangModelType - -WIN1255_CHAR_TO_ORDER_MAP: tuple[int, ...] -HEBREW_LANG_MODEL: tuple[int, ...] -Win1255HebrewModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi deleted file mode 100644 index 498c7da58..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from . import _LangModelType - -Latin2_HungarianCharToOrderMap: tuple[int, ...] -win1250HungarianCharToOrderMap: tuple[int, ...] -HungarianLangModel: tuple[int, ...] -Latin2HungarianModel: _LangModelType -Win1250HungarianModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi deleted file mode 100644 index eee2356e8..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from . import _LangModelType - -TIS620CharToOrderMap: tuple[int, ...] -ThaiLangModel: tuple[int, ...] -TIS620ThaiModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi deleted file mode 100644 index 6686f262d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from . import _LangModelType - -Latin5_TurkishCharToOrderMap: tuple[int, ...] -TurkishLangModel: tuple[int, ...] -Latin5TurkishModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi deleted file mode 100644 index 79dc7130d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi +++ /dev/null @@ -1,29 +0,0 @@ -from logging import Logger -from re import Pattern -from typing_extensions import TypedDict - -class _FinalResultType(TypedDict): - encoding: str - confidence: float - language: str - -class _IntermediateResultType(TypedDict): - encoding: str | None - confidence: float - language: str | None - -class UniversalDetector: - MINIMUM_THRESHOLD: float - HIGH_BYTE_DETECTOR: Pattern[bytes] - ESC_DETECTOR: Pattern[bytes] - WIN_BYTE_DETECTOR: Pattern[bytes] - ISO_WIN_MAP: dict[str, str] - - result: _IntermediateResultType - done: bool - lang_filter: int - logger: Logger - def __init__(self, lang_filter: int = 31) -> None: ... - def reset(self) -> None: ... - def feed(self, byte_str: bytes | bytearray) -> None: ... - def close(self) -> _FinalResultType: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi deleted file mode 100644 index 966073bd2..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi +++ /dev/null @@ -1,2 +0,0 @@ -__version__: str -VERSION: list[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml index 08572dfc9..745fc1a4b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.5.9" +version = "23.6.5" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml index 5c9238818..20ba790a4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml @@ -1,4 +1,4 @@ -version = "3.0.*" +version = "3.2.*" # Requires a version of cryptography where cryptography.hazmat.primitives.ciphers.Cipher is generic requires = ["cryptography>=37.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi index e7cbf16e0..0d1886ef3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi @@ -62,7 +62,8 @@ class AgentKey(PKey): blob: bytes public_blob: None name: str - def __init__(self, agent: AgentSSH, blob: ReadableBuffer) -> None: ... + comment: str + def __init__(self, agent: AgentSSH, blob: ReadableBuffer, comment: str = "") -> None: ... def asbytes(self) -> bytes: ... def get_name(self) -> str: ... def sign_ssh_data(self, data: _LikeBytes, algorithm: str | None = None) -> Message: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi new file mode 100644 index 000000000..707dd0f3d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi @@ -0,0 +1,57 @@ +import abc +from collections.abc import Callable, Iterator +from logging import Logger +from pathlib import Path +from typing import NamedTuple + +from paramiko.config import SSHConfig +from paramiko.pkey import PKey +from paramiko.ssh_exception import AuthenticationException +from paramiko.transport import Transport + +class AuthSource: + username: str + def __init__(self, username: str) -> None: ... + @abc.abstractmethod + def authenticate(self, transport: Transport) -> list[str]: ... + +class NoneAuth(AuthSource): + def authenticate(self, transport: Transport) -> list[str]: ... + +class Password(AuthSource): + password_getter: Callable[[], str] + def __init__(self, username: str, password_getter: Callable[[], str]) -> None: ... + def authenticate(self, transport: Transport) -> list[str]: ... + +class PrivateKey(AuthSource): + def authenticate(self, transport: Transport) -> list[str]: ... + +class InMemoryPrivateKey(PrivateKey): + pkey: PKey + def __init__(self, username: str, pkey: PKey) -> None: ... + +class OnDiskPrivateKey(PrivateKey): + source: str + path: Path + pkey: PKey + def __init__(self, username: str, source: str, path: Path, pkey: PKey) -> None: ... + +class SourceResult(NamedTuple): + source: AuthSource + result: list[str] | Exception + +class AuthResult(list[SourceResult]): + strategy: AuthStrategy + def __init__(self, strategy: AuthStrategy, *args: SourceResult, **kwargs: object) -> None: ... + +class AuthFailure(AuthenticationException): + result: AuthResult + def __init__(self, result: AuthResult) -> None: ... + +class AuthStrategy: + ssh_config: SSHConfig + log: Logger + def __init__(self, ssh_config: SSHConfig) -> None: ... + @abc.abstractmethod + def get_sources(self) -> Iterator[AuthSource]: ... + def authenticate(self, transport: Transport) -> list[SourceResult]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi index 413bf0fdb..c6fe88441 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi @@ -1,15 +1,14 @@ from collections.abc import Iterable, Mapping from typing import NoReturn, Protocol +from paramiko.auth_strategy import AuthStrategy from paramiko.channel import Channel, ChannelFile, ChannelStderrFile, ChannelStdinFile from paramiko.hostkeys import HostKeys from paramiko.pkey import PKey from paramiko.sftp_client import SFTPClient -from paramiko.transport import Transport +from paramiko.transport import Transport, _SocketLike from paramiko.util import ClosingContextManager -from .transport import _SocketLike - class _TransportFactory(Protocol): def __call__( self, @@ -47,10 +46,12 @@ class SSHClient(ClosingContextManager): gss_host: str | None = None, banner_timeout: float | None = None, auth_timeout: float | None = None, + channel_timeout: float | None = None, gss_trust_dns: bool = True, passphrase: str | None = None, disabled_algorithms: Mapping[str, Iterable[str]] | None = None, transport_factory: _TransportFactory | None = None, + auth_strategy: AuthStrategy | None = None, ) -> None: ... def close(self) -> None: ... def exec_command( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi index 3ad9e14be..ade72fde4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi @@ -27,7 +27,7 @@ class RSAKey(PKey): def get_name(self) -> str: ... def get_bits(self) -> int: ... def can_sign(self) -> bool: ... - def sign_ssh_data(self, data: bytes, algorithm: str = "ssh-rsa") -> Message: ... # type: ignore[override] + def sign_ssh_data(self, data: bytes, algorithm: str | None = None) -> Message: ... # type: ignore[override] def verify_ssh_sig(self, data: bytes, msg: Message) -> bool: ... def write_private_key_file(self, filename: str, password: str | None = None) -> None: ... def write_private_key(self, file_obj: IO[str], password: str | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi index 54a282f72..ba4d3b510 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi @@ -231,7 +231,12 @@ def wait_procs( ) -> tuple[list[Process], list[Process]]: ... def cpu_count(logical: bool = True) -> int: ... def cpu_times(percpu: bool = False): ... -def cpu_percent(interval: float | None = None, percpu: bool = False) -> float: ... +@overload +def cpu_percent(interval: float | None = None, percpu: Literal[False] = False) -> float: ... +@overload +def cpu_percent(interval: float | None, percpu: Literal[True]) -> list[float]: ... +@overload +def cpu_percent(*, percpu: Literal[True]) -> list[float]: ... def cpu_times_percent(interval: float | None = None, percpu: bool = False): ... def cpu_stats() -> scpustats: ... def cpu_freq(percpu: bool = False) -> scpufreq: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml index 4cdff58ef..02e6421bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.1.*" +version = "23.2.*" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml index 452ffd22f..e47e40f17 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml @@ -1,5 +1,6 @@ version = "8.0.0.*" partial_stub = true +obsolete_since = "8.0.1.0.1" # Released on 2023-05-25 [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi index c0f995607..ac71380df 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi @@ -2,7 +2,8 @@ # "KeyError: 'pywintypes'" from _typeshed import Incomplete from datetime import datetime -from typing_extensions import Literal +from typing import NoReturn +from typing_extensions import Literal, Never import _win32typing @@ -15,6 +16,15 @@ class error(Exception): class com_error(Exception): ... class UnicodeType(str): ... +class HANDLEType: + def __init__(self, *args: Never, **kwargs: Never) -> NoReturn: ... + @property + def handle(self) -> int: ... + def Close(self) -> None: ... + def close(self) -> None: ... + def Detach(self) -> None: ... + def __int__(self) -> int: ... + class TimeType(datetime): Format = datetime.strftime @@ -32,7 +42,7 @@ def ACL(__bufSize: int = ...) -> _win32typing.PyACL: ... def SID(buffer, idAuthority, subAuthorities, bufSize=...) -> _win32typing.PySID: ... def SECURITY_ATTRIBUTES() -> _win32typing.PySECURITY_ATTRIBUTES: ... def SECURITY_DESCRIPTOR() -> _win32typing.PySECURITY_DESCRIPTOR: ... -def HANDLE() -> int: ... +def HANDLE() -> HANDLEType: ... def HKEY() -> _win32typing.PyHKEY: ... def WAVEFORMATEX() -> _win32typing.PyWAVEFORMATEX: ... def TimeStamp(*args, **kwargs): ... # incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml index fef9036ad..f7972b352 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml @@ -1 +1 @@ -version = "2023.5.5" +version = "2023.6.3" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml index 8006e0087..f0410f316 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.30.*" +version = "2.31.*" requires = ["types-urllib3"] [tool.stubtest] From ee3c669bad06ae348b913390338d18bf850d5624 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 6 Jun 2023 18:50:04 -0600 Subject: [PATCH 259/525] Published 1.1.312 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 463e7326f..ef29785fc 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.311", + "version": "1.1.312", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index a7bb4f354..57303618a 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.311", + "version": "1.1.312", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.311", + "version": "1.1.312", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 764598731..dfbd8670a 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.311", + "version": "1.1.312", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index d8ff6c952..392438f4b 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.311", + "version": "1.1.312", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.311", + "version": "1.1.312", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 44033215c..60a379712 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.311", + "version": "1.1.312", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index b7186d06c..b5da6a58e 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.311", + "version": "1.1.312", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.311", + "version": "1.1.312", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 15f0477c9..641710ab0 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.311", + "version": "1.1.312", "private": true, "license": "MIT", "author": { From 62ede5625bba630f19fc18c3b1a7e21d7f7b0281 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 7 Jun 2023 10:30:23 -0600 Subject: [PATCH 260/525] Revert "Updated typeshed stubs to the latest verison." This reverts commit a6572d64184a55b727f3cbbf2d7fb99caa663ef8. --- .../src/tests/typeEvaluator5.test.ts | 2 +- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/VERSIONS | 8 +- .../typeshed-fallback/stdlib/_ast.pyi | 51 +-- .../stdlib/_collections_abc.pyi | 11 - .../typeshed-fallback/stdlib/_csv.pyi | 4 - .../typeshed-fallback/stdlib/_ctypes.pyi | 2 - .../typeshed-fallback/stdlib/_socket.pyi | 25 -- .../stdlib/_typeshed/__init__.pyi | 71 ++-- .../typeshed-fallback/stdlib/argparse.pyi | 43 +-- .../typeshed-fallback/stdlib/array.pyi | 2 - .../typeshed-fallback/stdlib/ast.pyi | 4 +- .../typeshed-fallback/stdlib/binhex.pyi | 6 +- .../typeshed-fallback/stdlib/builtins.pyi | 38 +- .../typeshed-fallback/stdlib/csv.pyi | 5 - .../stdlib/distutils/__init__.pyi | 5 - .../typeshed-fallback/stdlib/fcntl.pyi | 17 +- .../typeshed-fallback/stdlib/fractions.pyi | 8 +- .../typeshed-fallback/stdlib/functools.pyi | 53 +-- .../typeshed-fallback/stdlib/gzip.pyi | 6 +- .../typeshed-fallback/stdlib/hmac.pyi | 4 +- .../typeshed-fallback/stdlib/imaplib.pyi | 4 +- .../typeshed-fallback/stdlib/inspect.pyi | 22 -- .../stdlib/json/__init__.pyi | 9 - .../stdlib/logging/handlers.pyi | 2 +- .../typeshed-fallback/stdlib/math.pyi | 9 +- .../typeshed-fallback/stdlib/mmap.pyi | 2 - .../typeshed-fallback/stdlib/pathlib.pyi | 28 +- .../typeshed-fallback/stdlib/pdb.pyi | 5 +- .../typeshed-fallback/stdlib/pickle.pyi | 2 - .../typeshed-fallback/stdlib/random.pyi | 13 +- .../typeshed-fallback/stdlib/shutil.pyi | 46 +-- .../typeshed-fallback/stdlib/smtplib.pyi | 4 +- .../typeshed-fallback/stdlib/socket.pyi | 35 -- .../typeshed-fallback/stdlib/socketserver.pyi | 5 - .../typeshed-fallback/stdlib/statistics.pyi | 9 +- .../typeshed-fallback/stdlib/sys.pyi | 12 +- .../typeshed-fallback/stdlib/tempfile.pyi | 75 +--- .../typeshed-fallback/stdlib/threading.pyi | 7 - .../typeshed-fallback/stdlib/types.pyi | 4 +- .../typeshed-fallback/stdlib/typing.pyi | 125 ++----- .../stdlib/typing_extensions.pyi | 138 +++----- .../typeshed-fallback/stdlib/weakref.pyi | 2 +- .../stdlib/xmlrpc/client.pyi | 10 +- .../typeshed-fallback/stdlib/zipfile.pyi | 4 +- .../typeshed-fallback/stdlib/zipimport.pyi | 6 +- .../stubs/PyAutoGUI/pyautogui/__init__.pyi | 7 +- .../stubs/PyScreeze/pyscreeze/__init__.pyi | 6 +- .../stubs/PyYAML/yaml/__init__.pyi | 332 ++++++------------ .../stubs/aiofiles/aiofiles/os.pyi | 36 +- .../stubs/babel/METADATA.toml | 2 +- .../stubs/babel/babel/messages/frontend.pyi | 3 +- .../stubs/braintree/METADATA.toml | 2 +- .../stubs/cffi/METADATA.toml | 1 - .../typeshed-fallback/stubs/cffi/cffi/api.pyi | 4 +- .../stubs/chardet/METADATA.toml | 6 + .../stubs/chardet/chardet/__init__.pyi | 16 + .../stubs/chardet/chardet/enums.pyi | 39 ++ .../chardet/chardet/langbulgarianmodel.pyi | 7 + .../chardet/chardet/langcyrillicmodel.pyi | 15 + .../stubs/chardet/chardet/langgreekmodel.pyi | 7 + .../stubs/chardet/chardet/langhebrewmodel.pyi | 5 + .../chardet/chardet/langhungarianmodel.pyi | 7 + .../stubs/chardet/chardet/langthaimodel.pyi | 5 + .../chardet/chardet/langturkishmodel.pyi | 5 + .../chardet/chardet/universaldetector.pyi | 29 ++ .../stubs/chardet/chardet/version.pyi | 2 + .../stubs/flake8-bugbear/METADATA.toml | 2 +- .../stubs/paramiko/METADATA.toml | 2 +- .../stubs/paramiko/paramiko/agent.pyi | 3 +- .../stubs/paramiko/paramiko/auth_strategy.pyi | 57 --- .../stubs/paramiko/paramiko/client.pyi | 7 +- .../stubs/paramiko/paramiko/rsakey.pyi | 2 +- .../stubs/psutil/psutil/__init__.pyi | 7 +- .../stubs/pyOpenSSL/METADATA.toml | 2 +- .../stubs/pyvmomi/METADATA.toml | 1 - .../stubs/pywin32/win32/lib/pywintypes.pyi | 14 +- .../stubs/regex/METADATA.toml | 2 +- .../stubs/requests/METADATA.toml | 2 +- 79 files changed, 482 insertions(+), 1100 deletions(-) create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index b33202937..4d694f432 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -279,7 +279,7 @@ test('TypePrinter1', () => { test('TypeAliasType1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAliasType1.py']); - TestUtils.validateResults(analysisResults, 15); + TestUtils.validateResults(analysisResults, 13); }); test('TypeAliasType2', () => { diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index 515c0aafc..4cc5e9a61 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -e347af1d59ed46478a788ed60fd02096fce26edd +35450d9c0d673fc713c3210d8c25d19425f9790e diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS b/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS index f0efb1c08..d24aa35fa 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS +++ b/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS @@ -61,7 +61,7 @@ antigravity: 2.7- argparse: 2.7- array: 2.7- ast: 2.7- -asynchat: 2.7-3.11 +asynchat: 2.7- asyncio: 3.4- asyncio.mixins: 3.10- asyncio.exceptions: 3.8- @@ -72,7 +72,7 @@ asyncio.taskgroups: 3.11- asyncio.threads: 3.9- asyncio.timeouts: 3.11- asyncio.trsock: 3.8- -asyncore: 2.7-3.11 +asyncore: 2.7- atexit: 2.7- audioop: 2.7- base64: 2.7- @@ -112,7 +112,7 @@ dbm: 2.7- decimal: 2.7- difflib: 2.7- dis: 2.7- -distutils: 2.7-3.11 +distutils: 2.7- distutils.command.bdist_msi: 2.7-3.10 distutils.command.bdist_wininst: 2.7-3.9 doctest: 2.7- @@ -228,7 +228,7 @@ shlex: 2.7- shutil: 2.7- signal: 2.7- site: 2.7- -smtpd: 2.7-3.11 +smtpd: 2.7- smtplib: 2.7- sndhdr: 2.7- socket: 2.7- diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi index 05e2a08fd..7bc47266d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi @@ -1,14 +1,13 @@ import sys -import typing_extensions from typing import Any, ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias PyCF_ONLY_AST: Literal[1024] if sys.version_info >= (3, 8): PyCF_TYPE_COMMENTS: Literal[4096] PyCF_ALLOW_TOP_LEVEL_AWAIT: Literal[8192] -_Identifier: typing_extensions.TypeAlias = str +_Identifier: TypeAlias = str class AST: if sys.version_info >= (3, 10): @@ -60,43 +59,31 @@ class Expression(mod): class stmt(AST): ... class FunctionDef(stmt): - if sys.version_info >= (3, 12): - __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment", "type_params") - elif sys.version_info >= (3, 10): + if sys.version_info >= (3, 10): __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment") name: _Identifier args: arguments body: list[stmt] decorator_list: list[expr] returns: expr | None - if sys.version_info >= (3, 12): - type_params: list[type_param] class AsyncFunctionDef(stmt): - if sys.version_info >= (3, 12): - __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment", "type_params") - elif sys.version_info >= (3, 10): + if sys.version_info >= (3, 10): __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment") name: _Identifier args: arguments body: list[stmt] decorator_list: list[expr] returns: expr | None - if sys.version_info >= (3, 12): - type_params: list[type_param] class ClassDef(stmt): - if sys.version_info >= (3, 12): - __match_args__ = ("name", "bases", "keywords", "body", "decorator_list", "type_params") - elif sys.version_info >= (3, 10): + if sys.version_info >= (3, 10): __match_args__ = ("name", "bases", "keywords", "body", "decorator_list") name: _Identifier bases: list[expr] keywords: list[keyword] body: list[stmt] decorator_list: list[expr] - if sys.version_info >= (3, 12): - type_params: list[type_param] class Return(stmt): if sys.version_info >= (3, 10): @@ -379,10 +366,10 @@ class Attribute(expr): ctx: expr_context if sys.version_info >= (3, 9): - _Slice: typing_extensions.TypeAlias = expr + _Slice: TypeAlias = expr else: class slice(AST): ... - _Slice: typing_extensions.TypeAlias = slice + _Slice: TypeAlias = slice class Slice(_Slice): if sys.version_info >= (3, 10): @@ -539,7 +526,7 @@ if sys.version_info >= (3, 10): class pattern(AST): ... # Without the alias, Pyright complains variables named pattern are recursively defined - _Pattern: typing_extensions.TypeAlias = pattern + _Pattern: TypeAlias = pattern class match_case(AST): __match_args__ = ("pattern", "guard", "body") @@ -584,25 +571,3 @@ if sys.version_info >= (3, 10): class MatchOr(pattern): __match_args__ = ("patterns",) patterns: list[pattern] - -if sys.version_info >= (3, 12): - class type_param(AST): ... - - class TypeVar(type_param): - __match_args__ = ("name", "bound") - name: _Identifier - bound: expr | None - - class ParamSpec(type_param): - __match_args__ = ("name",) - name: _Identifier - - class TypeVarTuple(type_param): - __match_args__ = ("name",) - name: _Identifier - - class TypeAlias(stmt): - __match_args__ = ("name", "typeparams", "value") - name: Name - type_params: list[type_param] - value: expr diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi index 05b5421c2..352da6cfb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi @@ -1,5 +1,4 @@ import sys -from abc import abstractmethod from types import MappingProxyType from typing import ( # noqa: Y022,Y038 AbstractSet as Set, @@ -24,13 +23,11 @@ from typing import ( # noqa: Y022,Y038 MutableMapping as MutableMapping, MutableSequence as MutableSequence, MutableSet as MutableSet, - Protocol, Reversible as Reversible, Sequence as Sequence, Sized as Sized, TypeVar, ValuesView as ValuesView, - runtime_checkable, ) from typing_extensions import final @@ -61,8 +58,6 @@ __all__ = [ "MutableSequence", "ByteString", ] -if sys.version_info >= (3, 12): - __all__ += ["Buffer"] _KT_co = TypeVar("_KT_co", covariant=True) # Key type covariant containers. _VT_co = TypeVar("_VT_co", covariant=True) # Value type covariant containers. @@ -84,9 +79,3 @@ class dict_items(ItemsView[_KT_co, _VT_co], Generic[_KT_co, _VT_co]): # undocum if sys.version_info >= (3, 10): @property def mapping(self) -> MappingProxyType[_KT_co, _VT_co]: ... - -if sys.version_info >= (3, 12): - @runtime_checkable - class Buffer(Protocol): - @abstractmethod - def __buffer__(self, __flags: int) -> memoryview: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi index 19ea487e1..c9b9f47e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi @@ -1,4 +1,3 @@ -import sys from _typeshed import SupportsWrite from collections.abc import Iterable, Iterator from typing import Any @@ -10,9 +9,6 @@ QUOTE_ALL: Literal[1] QUOTE_MINIMAL: Literal[0] QUOTE_NONE: Literal[3] QUOTE_NONNUMERIC: Literal[2] -if sys.version_info >= (3, 12): - QUOTE_STRINGS: Literal[4] - QUOTE_NOTNULL: Literal[5] # Ideally this would be `QUOTE_ALL | QUOTE_MINIMAL | QUOTE_NONE | QUOTE_NONNUMERIC` # However, using literals in situations like these can cause false-positives (see #7258) diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi index c2b612c38..e2f8fa745 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi @@ -63,8 +63,6 @@ class _CData(metaclass=_CDataMeta): def from_param(cls, obj: Any) -> Self | _CArgObject: ... @classmethod def in_dll(cls, library: CDLL, name: str) -> Self: ... - def __buffer__(self, __flags: int) -> memoryview: ... - def __release_buffer__(self, __buffer: memoryview) -> None: ... class _SimpleCData(Generic[_T], _CData): value: _T diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi index 7a0ede628..f7b0e6901 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi @@ -692,28 +692,3 @@ if sys.platform != "win32" or sys.version_info >= (3, 8): def if_nameindex() -> list[tuple[int, str]]: ... def if_nametoindex(__name: str) -> int: ... def if_indextoname(__index: int) -> str: ... - -if sys.version_info >= (3, 12): - IP_PKTINFO: int - IP_UNBLOCK_SOURCE: int - IP_BLOCK_SOURCE: int - IP_ADD_SOURCE_MEMBERSHIP: int - IP_DROP_SOURCE_MEMBERSHIP: int - if sys.platform == "win32": - AF_HYPERV: int - HV_PROTOCOL_RAW: int - HVSOCKET_CONNECT_TIMEOUT: int - HVSOCKET_CONNECT_TIMEOUT_MAX: int - HVSOCKET_CONNECTED_SUSPEND: int - HVSOCKET_ADDRESS_FLAG_PASSTHRU: int - HV_GUID_ZERO: str - HV_GUID_WILDCARD: str - HV_GUID_BROADCAST: str - HV_GUID_CHILDREN: str - HV_GUID_LOOPBACK: str - HV_GUID_PARENT: str - else: - ETHERTYPE_ARP: int - ETHERTYPE_IP: int - ETHERTYPE_IPV6: int - ETHERTYPE_VLAN: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi index 5d03142c6..3c29032b6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi @@ -2,13 +2,17 @@ # # See the README.md file in this directory for more information. +import array +import ctypes +import mmap +import pickle import sys -from collections.abc import Awaitable, Callable, Iterable, Sequence, Set as AbstractSet, Sized +from collections.abc import Awaitable, Callable, Iterable, Set as AbstractSet from dataclasses import Field from os import PathLike from types import FrameType, TracebackType -from typing import Any, AnyStr, ClassVar, Generic, Protocol, TypeVar, overload -from typing_extensions import Buffer, Final, Literal, LiteralString, TypeAlias, final +from typing import Any, AnyStr, ClassVar, Generic, Protocol, TypeVar +from typing_extensions import Final, Literal, LiteralString, TypeAlias, final _KT = TypeVar("_KT") _KT_co = TypeVar("_KT_co", covariant=True) @@ -223,33 +227,42 @@ class SupportsNoArgReadline(Protocol[_T_co]): class SupportsWrite(Protocol[_T_contra]): def write(self, __s: _T_contra) -> object: ... -# Unfortunately PEP 688 does not allow us to distinguish read-only -# from writable buffers. We use these aliases for readability for now. -# Perhaps a future extension of the buffer protocol will allow us to -# distinguish these cases in the type system. -ReadOnlyBuffer: TypeAlias = Buffer # stable +ReadOnlyBuffer: TypeAlias = bytes # stable # Anything that implements the read-write buffer interface. -WriteableBuffer: TypeAlias = Buffer -# Same as WriteableBuffer, but also includes read-only buffer types (like bytes). -ReadableBuffer: TypeAlias = Buffer # stable - -class SliceableBuffer(Buffer, Protocol): - def __getitem__(self, __slice: slice) -> Sequence[int]: ... - -class IndexableBuffer(Buffer, Protocol): - def __getitem__(self, __i: int) -> int: ... - -class SupportsGetItemBuffer(SliceableBuffer, IndexableBuffer, Protocol): - def __contains__(self, __x: Any) -> bool: ... - @overload - def __getitem__(self, __slice: slice) -> Sequence[int]: ... - @overload - def __getitem__(self, __i: int) -> int: ... - -class SizedBuffer(Sized, Buffer, Protocol): ... - -# for compatibility with third-party stubs that may use this -_BufferWithLen: TypeAlias = SizedBuffer # not stable # noqa: Y047 +# The buffer interface is defined purely on the C level, so we cannot define a normal Protocol +# for it (until PEP 688 is implemented). Instead we have to list the most common stdlib buffer classes in a Union. +if sys.version_info >= (3, 8): + WriteableBuffer: TypeAlias = ( + bytearray | memoryview | array.array[Any] | mmap.mmap | ctypes._CData | pickle.PickleBuffer + ) # stable +else: + WriteableBuffer: TypeAlias = bytearray | memoryview | array.array[Any] | mmap.mmap | ctypes._CData # stable +# Same as _WriteableBuffer, but also includes read-only buffer types (like bytes). +ReadableBuffer: TypeAlias = ReadOnlyBuffer | WriteableBuffer # stable +_BufferWithLen: TypeAlias = ReadableBuffer # not stable # noqa: Y047 + +# Anything that implements the read-write buffer interface, and can be sliced/indexed. +SliceableBuffer: TypeAlias = bytes | bytearray | memoryview | array.array[Any] | mmap.mmap +IndexableBuffer: TypeAlias = bytes | bytearray | memoryview | array.array[Any] | mmap.mmap +# https://github.com/python/typeshed/pull/9115#issuecomment-1304905864 +# Post PEP 688, they should be rewritten as such: +# from collections.abc import Sequence +# from typing import Sized, overload +# class SliceableBuffer(Protocol): +# def __buffer__(self, __flags: int) -> memoryview: ... +# def __getitem__(self, __slice: slice) -> Sequence[int]: ... +# class IndexableBuffer(Protocol): +# def __buffer__(self, __flags: int) -> memoryview: ... +# def __getitem__(self, __i: int) -> int: ... +# class SupportsGetItemBuffer(SliceableBuffer, IndexableBuffer, Protocol): +# def __buffer__(self, __flags: int) -> memoryview: ... +# def __contains__(self, __x: Any) -> bool: ... +# @overload +# def __getitem__(self, __slice: slice) -> Sequence[int]: ... +# @overload +# def __getitem__(self, __i: int) -> int: ... +# class SizedBuffer(Sized, Protocol): # instead of _BufferWithLen +# def __buffer__(self, __flags: int) -> memoryview: ... ExcInfo: TypeAlias = tuple[type[BaseException], BaseException, TracebackType] OptExcInfo: TypeAlias = ExcInfo | tuple[None, None, None] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi index 8e6f9da8e..1e9560693 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi @@ -2,7 +2,7 @@ import sys from collections.abc import Callable, Generator, Iterable, Sequence from re import Pattern from typing import IO, Any, Generic, NewType, NoReturn, Protocol, TypeVar, overload -from typing_extensions import Literal, Self, TypeAlias +from typing_extensions import Literal, TypeAlias __all__ = [ "ArgumentParser", @@ -97,16 +97,8 @@ class _ActionsContainer: version: str = ..., **kwargs: Any, ) -> Action: ... - def add_argument_group( - self, - title: str | None = None, - description: str | None = None, - *, - prefix_chars: str = ..., - argument_default: Any = ..., - conflict_handler: str = ..., - ) -> _ArgumentGroup: ... - def add_mutually_exclusive_group(self, *, required: bool = False) -> _MutuallyExclusiveGroup: ... + def add_argument_group(self, *args: Any, **kwargs: Any) -> _ArgumentGroup: ... + def add_mutually_exclusive_group(self, **kwargs: Any) -> _MutuallyExclusiveGroup: ... def _add_action(self, action: _ActionT) -> _ActionT: ... def _remove_action(self, action: Action) -> None: ... def _add_container_actions(self, container: _ActionsContainer) -> None: ... @@ -244,19 +236,11 @@ class HelpFormatter: _current_indent: int _level: int _action_max_length: int - _root_section: _Section - _current_section: _Section + _root_section: Any + _current_section: Any _whitespace_matcher: Pattern[str] _long_break_matcher: Pattern[str] - - class _Section: - formatter: HelpFormatter - heading: str | None - parent: Self | None - items: list[tuple[Callable[..., str], Iterable[Any]]] - def __init__(self, formatter: HelpFormatter, parent: Self | None, heading: str | None = None) -> None: ... - def format_help(self) -> str: ... - + _Section: type[Any] # Nested class def __init__(self, prog: str, indent_increment: int = 2, max_help_position: int = 24, width: int | None = None) -> None: ... def _indent(self) -> None: ... def _dedent(self) -> None: ... @@ -265,16 +249,16 @@ class HelpFormatter: def end_section(self) -> None: ... def add_text(self, text: str | None) -> None: ... def add_usage( - self, usage: str | None, actions: Iterable[Action], groups: Iterable[_MutuallyExclusiveGroup], prefix: str | None = None + self, usage: str | None, actions: Iterable[Action], groups: Iterable[_ArgumentGroup], prefix: str | None = None ) -> None: ... def add_argument(self, action: Action) -> None: ... def add_arguments(self, actions: Iterable[Action]) -> None: ... def format_help(self) -> str: ... def _join_parts(self, part_strings: Iterable[str]) -> str: ... def _format_usage( - self, usage: str | None, actions: Iterable[Action], groups: Iterable[_MutuallyExclusiveGroup], prefix: str | None + self, usage: str | None, actions: Iterable[Action], groups: Iterable[_ArgumentGroup], prefix: str | None ) -> str: ... - def _format_actions_usage(self, actions: Iterable[Action], groups: Iterable[_MutuallyExclusiveGroup]) -> str: ... + def _format_actions_usage(self, actions: Iterable[Action], groups: Iterable[_ArgumentGroup]) -> str: ... def _format_text(self, text: str) -> str: ... def _format_action(self, action: Action) -> str: ... def _format_action_invocation(self, action: Action) -> str: ... @@ -358,14 +342,7 @@ class _ArgumentGroup(_ActionsContainer): title: str | None _group_actions: list[Action] def __init__( - self, - container: _ActionsContainer, - title: str | None = None, - description: str | None = None, - *, - prefix_chars: str = ..., - argument_default: Any = ..., - conflict_handler: str = ..., + self, container: _ActionsContainer, title: str | None = None, description: str | None = None, **kwargs: Any ) -> None: ... # undocumented diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi index 8b003503b..38a815b58 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi @@ -80,7 +80,5 @@ class array(MutableSequence[_T], Generic[_T]): def __rmul__(self, __value: int) -> array[_T]: ... def __copy__(self) -> array[_T]: ... def __deepcopy__(self, __unused: Any) -> array[_T]: ... - def __buffer__(self, __flags: int) -> memoryview: ... - def __release_buffer__(self, __buffer: memoryview) -> None: ... ArrayType = array diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi index 377138141..ea899e150 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi @@ -3,7 +3,7 @@ import sys from _ast import * from _typeshed import ReadableBuffer, Unused from collections.abc import Iterator -from typing import Any, TypeVar as _TypeVar, overload +from typing import Any, TypeVar, overload from typing_extensions import Literal if sys.version_info >= (3, 8): @@ -168,7 +168,7 @@ class NodeTransformer(NodeVisitor): # The usual return type is AST | None, but Iterable[AST] # is also allowed in some cases -- this needs to be mapped. -_T = _TypeVar("_T", bound=AST) +_T = TypeVar("_T", bound=AST) if sys.version_info >= (3, 8): @overload diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi index 64ba9f615..e0993c840 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi @@ -1,4 +1,4 @@ -from _typeshed import SizedBuffer +from _typeshed import _BufferWithLen from typing import IO, Any from typing_extensions import Literal, TypeAlias @@ -28,9 +28,9 @@ class openrsrc: class BinHex: def __init__(self, name_finfo_dlen_rlen: _FileInfoTuple, ofp: _FileHandleUnion) -> None: ... - def write(self, data: SizedBuffer) -> None: ... + def write(self, data: _BufferWithLen) -> None: ... def close_data(self) -> None: ... - def write_rsrc(self, data: SizedBuffer) -> None: ... + def write_rsrc(self, data: _BufferWithLen) -> None: ... def close(self) -> None: ... def binhex(inp: str, out: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index b38717761..6bc9c7ec8 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -36,6 +36,7 @@ from typing import ( # noqa: Y022 IO, Any, BinaryIO, + ByteString, ClassVar, Generic, Mapping, @@ -53,18 +54,7 @@ from typing import ( # noqa: Y022 overload, type_check_only, ) -from typing_extensions import ( # type: ignore - Concatenate, - Literal, - LiteralString, - ParamSpec, - Self, - SupportsIndex, - TypeAlias, - TypeGuard, - TypeVarTuple, - final, -) +from typing_extensions import Concatenate, Literal, LiteralString, ParamSpec, Self, SupportsIndex, TypeAlias, TypeGuard, final if sys.version_info >= (3, 9): from types import GenericAlias @@ -198,8 +188,6 @@ class type: if sys.version_info >= (3, 10): def __or__(self, __value: Any) -> types.UnionType: ... def __ror__(self, __value: Any) -> types.UnionType: ... - if sys.version_info >= (3, 12): - __type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] class super: @overload @@ -257,9 +245,6 @@ class int: signed: bool = False, ) -> Self: ... - if sys.version_info >= (3, 12): - def is_integer(self) -> Literal[True]: ... - def __add__(self, __value: int) -> int: ... def __sub__(self, __value: int) -> int: ... def __mul__(self, __value: int) -> int: ... @@ -465,7 +450,7 @@ class str(Sequence[str]): @overload def format(self: LiteralString, *args: LiteralString, **kwargs: LiteralString) -> LiteralString: ... @overload - def format(self, *args: object, **kwargs: object) -> str: ... # type: ignore + def format(self, *args: object, **kwargs: object) -> str: ... def format_map(self, map: _FormatMapMapping) -> str: ... def index(self, __sub: str, __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...) -> int: ... def isalnum(self) -> bool: ... @@ -595,7 +580,7 @@ class str(Sequence[str]): @overload def __mod__(self: LiteralString, __value: LiteralString | tuple[LiteralString, ...]) -> LiteralString: ... @overload - def __mod__(self, __value: Any) -> str: ... # type: ignore + def __mod__(self, __value: Any) -> str: ... @overload def __mul__(self: LiteralString, __value: SupportsIndex) -> LiteralString: ... @overload @@ -607,7 +592,7 @@ class str(Sequence[str]): def __rmul__(self, __value: SupportsIndex) -> str: ... # type: ignore[misc] def __getnewargs__(self) -> tuple[str]: ... -class bytes(Sequence[int]): +class bytes(ByteString): @overload def __new__(cls, __o: Iterable[SupportsIndex] | SupportsIndex | SupportsBytes | ReadableBuffer) -> Self: ... @overload @@ -710,9 +695,7 @@ class bytes(Sequence[int]): if sys.version_info >= (3, 11): def __bytes__(self) -> bytes: ... - def __buffer__(self, __flags: int) -> memoryview: ... - -class bytearray(MutableSequence[int]): +class bytearray(MutableSequence[int], ByteString): @overload def __init__(self) -> None: ... @overload @@ -827,8 +810,6 @@ class bytearray(MutableSequence[int]): def __gt__(self, __value: ReadableBuffer) -> bool: ... def __ge__(self, __value: ReadableBuffer) -> bool: ... def __alloc__(self) -> int: ... - def __buffer__(self, __flags: int) -> memoryview: ... - def __release_buffer__(self, __buffer: memoryview) -> None: ... @final class memoryview(Sequence[int]): @@ -890,9 +871,6 @@ class memoryview(Sequence[int]): else: def hex(self) -> str: ... - def __buffer__(self, __flags: int) -> memoryview: ... - def __release_buffer__(self, __buffer: memoryview) -> None: ... - @final class bool(int): def __new__(cls, __o: object = ...) -> Self: ... @@ -982,8 +960,6 @@ class function: if sys.version_info >= (3, 10): @property def __builtins__(self) -> dict[str, Any]: ... - if sys.version_info >= (3, 12): - __type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] __module__: str # mypy uses `builtins.function.__get__` to represent methods, properties, and getset_descriptors so we type the return as Any. @@ -1936,8 +1912,6 @@ class ImportError(Exception): name: str | None path: str | None msg: str # undocumented - if sys.version_info >= (3, 12): - name_from: str | None # undocumented class LookupError(Exception): ... class MemoryError(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi index 139ba7af2..59f2e7a3c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi @@ -21,9 +21,6 @@ from _csv import ( unregister_dialect as unregister_dialect, writer as writer, ) - -if sys.version_info >= (3, 12): - from _csv import QUOTE_STRINGS as QUOTE_STRINGS, QUOTE_NOTNULL as QUOTE_NOTNULL from _typeshed import SupportsWrite from collections.abc import Collection, Iterable, Iterator, Mapping, Sequence from typing import Any, Generic, TypeVar, overload @@ -60,8 +57,6 @@ __all__ = [ "DictWriter", "unix_dialect", ] -if sys.version_info >= (3, 12): - __all__ += ["QUOTE_STRINGS", "QUOTE_NOTNULL"] _T = TypeVar("_T") diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi index 328a5b783..e69de29bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi @@ -1,5 +0,0 @@ -# Attempts to improve these stubs are probably not the best use of time: -# - distutils is deleted in Python 3.12 and newer -# - Most users already do not use stdlib distutils, due to setuptools monkeypatching -# - We have very little quality assurance on these stubs, since due to the two above issues -# we allowlist all distutils errors in stubtest. diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi index 6aec7515f..90676e365 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi @@ -1,7 +1,7 @@ import sys from _typeshed import FileDescriptorLike, ReadOnlyBuffer, WriteableBuffer from typing import Any, overload -from typing_extensions import Buffer, Literal +from typing_extensions import Literal if sys.platform != "win32": FASYNC: int @@ -20,9 +20,6 @@ if sys.platform != "win32": F_SETOWN: int F_UNLCK: int F_WRLCK: int - - F_GETLEASE: int - F_SETLEASE: int if sys.platform == "darwin": F_FULLFSYNC: int F_NOCACHE: int @@ -33,9 +30,11 @@ if sys.platform != "win32": F_SETSIG: int F_SHLCK: int F_SETLK64: int + F_SETLEASE: int F_GETSIG: int F_NOTIFY: int F_EXLCK: int + F_GETLEASE: int F_GETLK64: int if sys.version_info >= (3, 8): F_ADD_SEALS: int @@ -105,19 +104,13 @@ if sys.platform != "win32": def fcntl(__fd: FileDescriptorLike, __cmd: int, __arg: int = 0) -> int: ... @overload def fcntl(__fd: FileDescriptorLike, __cmd: int, __arg: str | ReadOnlyBuffer) -> bytes: ... - # If arg is an int, return int @overload def ioctl(__fd: FileDescriptorLike, __request: int, __arg: int = 0, __mutate_flag: bool = True) -> int: ... - # The return type works as follows: - # - If arg is a read-write buffer, return int if mutate_flag is True, otherwise bytes - # - If arg is a read-only buffer, return bytes (and ignore the value of mutate_flag) - # We can't represent that precisely as we can't distinguish between read-write and read-only - # buffers, so we add overloads for a few unambiguous cases and use Any for the rest. @overload - def ioctl(__fd: FileDescriptorLike, __request: int, __arg: bytes, __mutate_flag: bool = True) -> bytes: ... + def ioctl(__fd: FileDescriptorLike, __request: int, __arg: WriteableBuffer, __mutate_flag: Literal[True] = True) -> int: ... @overload def ioctl(__fd: FileDescriptorLike, __request: int, __arg: WriteableBuffer, __mutate_flag: Literal[False]) -> bytes: ... @overload - def ioctl(__fd: FileDescriptorLike, __request: int, __arg: Buffer, __mutate_flag: bool = True) -> Any: ... + def ioctl(__fd: FileDescriptorLike, __request: int, __arg: ReadOnlyBuffer, __mutate_flag: bool = True) -> bytes: ... def flock(__fd: FileDescriptorLike, __operation: int) -> None: ... def lockf(__fd: FileDescriptorLike, __cmd: int, __len: int = 0, __start: int = 0, __whence: int = 0) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi index 7ec8addeb..3c84978c1 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi @@ -22,9 +22,11 @@ else: class Fraction(Rational): @overload - def __new__(cls, numerator: int | Rational = 0, denominator: int | Rational | None = None) -> Self: ... + def __new__( + cls, numerator: int | Rational = 0, denominator: int | Rational | None = None, *, _normalize: bool = True + ) -> Self: ... @overload - def __new__(cls, __value: float | Decimal | str) -> Self: ... + def __new__(cls, __value: float | Decimal | str, *, _normalize: bool = True) -> Self: ... @classmethod def from_float(cls, f: float) -> Self: ... @classmethod @@ -32,8 +34,6 @@ class Fraction(Rational): def limit_denominator(self, max_denominator: int = 1000000) -> Fraction: ... if sys.version_info >= (3, 8): def as_integer_ratio(self) -> tuple[int, int]: ... - if sys.version_info >= (3, 12): - def is_integer(self) -> bool: ... @property def numerator(a) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi index 8adc3d822..5a9fd12ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi @@ -72,19 +72,9 @@ if sys.version_info >= (3, 8): else: def lru_cache(maxsize: int | None = 128, typed: bool = False) -> Callable[[Callable[..., _T]], _lru_cache_wrapper[_T]]: ... -if sys.version_info >= (3, 12): - WRAPPER_ASSIGNMENTS: tuple[ - Literal["__module__"], - Literal["__name__"], - Literal["__qualname__"], - Literal["__doc__"], - Literal["__annotations__"], - Literal["__type_params__"], - ] -else: - WRAPPER_ASSIGNMENTS: tuple[ - Literal["__module__"], Literal["__name__"], Literal["__qualname__"], Literal["__doc__"], Literal["__annotations__"] - ] +WRAPPER_ASSIGNMENTS: tuple[ + Literal["__module__"], Literal["__name__"], Literal["__qualname__"], Literal["__doc__"], Literal["__annotations__"] +] WRAPPER_UPDATES: tuple[Literal["__dict__"]] class _Wrapped(Generic[_PWrapped, _RWrapped, _PWrapper, _RWapper]): @@ -97,32 +87,17 @@ class _Wrapped(Generic[_PWrapped, _RWrapped, _PWrapper, _RWapper]): class _Wrapper(Generic[_PWrapped, _RWrapped]): def __call__(self, f: Callable[_PWrapper, _RWapper]) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... -if sys.version_info >= (3, 12): - def update_wrapper( - wrapper: Callable[_PWrapper, _RWapper], - wrapped: Callable[_PWrapped, _RWrapped], - assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__", "__type_params__"), - updated: Sequence[str] = ("__dict__",), - ) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... - def wraps( - wrapped: Callable[_PWrapped, _RWrapped], - assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__", "__type_params__"), - updated: Sequence[str] = ("__dict__",), - ) -> _Wrapper[_PWrapped, _RWrapped]: ... - -else: - def update_wrapper( - wrapper: Callable[_PWrapper, _RWapper], - wrapped: Callable[_PWrapped, _RWrapped], - assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), - updated: Sequence[str] = ("__dict__",), - ) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... - def wraps( - wrapped: Callable[_PWrapped, _RWrapped], - assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), - updated: Sequence[str] = ("__dict__",), - ) -> _Wrapper[_PWrapped, _RWrapped]: ... - +def update_wrapper( + wrapper: Callable[_PWrapper, _RWapper], + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), + updated: Sequence[str] = ("__dict__",), +) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... +def wraps( + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), + updated: Sequence[str] = ("__dict__",), +) -> _Wrapper[_PWrapped, _RWrapped]: ... def total_ordering(cls: type[_T]) -> type[_T]: ... def cmp_to_key(mycmp: Callable[[_T, _T], int]) -> Callable[[_T], SupportsAllComparisons]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi index 1ec8b4b8c..6a794f381 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi @@ -1,7 +1,7 @@ import _compression import sys import zlib -from _typeshed import ReadableBuffer, SizedBuffer, StrOrBytesPath +from _typeshed import ReadableBuffer, StrOrBytesPath, _BufferWithLen from io import FileIO from typing import Protocol, TextIO, overload from typing_extensions import Literal, TypeAlias @@ -159,9 +159,9 @@ class _GzipReader(_compression.DecompressReader): def __init__(self, fp: _ReadableFileobj) -> None: ... if sys.version_info >= (3, 8): - def compress(data: SizedBuffer, compresslevel: int = 9, *, mtime: float | None = None) -> bytes: ... + def compress(data: _BufferWithLen, compresslevel: int = 9, *, mtime: float | None = None) -> bytes: ... else: - def compress(data: SizedBuffer, compresslevel: int = 9) -> bytes: ... + def compress(data: _BufferWithLen, compresslevel: int = 9) -> bytes: ... def decompress(data: ReadableBuffer) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi index 9ff99a5a0..ee8af1b48 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import ReadableBuffer, SizedBuffer +from _typeshed import ReadableBuffer, _BufferWithLen from collections.abc import Callable from types import ModuleType from typing import Any, AnyStr, overload @@ -46,4 +46,4 @@ class HMAC: def compare_digest(__a: ReadableBuffer, __b: ReadableBuffer) -> bool: ... @overload def compare_digest(__a: AnyStr, __b: AnyStr) -> bool: ... -def digest(key: SizedBuffer, msg: ReadableBuffer, digest: _DigestMod) -> bytes: ... +def digest(key: _BufferWithLen, msg: ReadableBuffer, digest: _DigestMod) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi index 7781559c3..1c2112dd3 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi @@ -1,7 +1,7 @@ import subprocess import sys import time -from _typeshed import ReadableBuffer, SizedBuffer +from _typeshed import ReadableBuffer, _BufferWithLen from builtins import list as _list # conflicts with a method named "list" from collections.abc import Callable from datetime import datetime @@ -155,7 +155,7 @@ class _Authenticator: def __init__(self, mechinst: Callable[[bytes], bytes | bytearray | memoryview | str | None]) -> None: ... def process(self, data: str) -> str: ... def encode(self, inp: bytes | bytearray | memoryview) -> str: ... - def decode(self, inp: str | SizedBuffer) -> bytes: ... + def decode(self, inp: str | _BufferWithLen) -> bytes: ... def Internaldate2tuple(resp: ReadableBuffer) -> time.struct_time | None: ... def Int2AP(num: SupportsAbs[SupportsInt]) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi index 2d004a8e6..a2252e38e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi @@ -598,25 +598,3 @@ def classify_class_attrs(cls: type) -> list[Attribute]: ... if sys.version_info >= (3, 9): class ClassFoundException(Exception): ... - -if sys.version_info >= (3, 12): - class BufferFlags(enum.IntFlag): - SIMPLE: int - WRITABLE: int - FORMAT: int - ND: int - STRIDES: int - C_CONTIGUOUS: int - F_CONTIGUOUS: int - ANY_CONTIGUOUS: int - INDIRECT: int - CONTIG: int - CONTIG_RO: int - STRIDED: int - STRIDED_RO: int - RECORDS: int - RECORDS_RO: int - FULL: int - FULL_RO: int - READ: int - WRITE: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi index dc0cdff92..63e9718ee 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi @@ -1,4 +1,3 @@ -import sys from _typeshed import SupportsRead, SupportsWrite from collections.abc import Callable from typing import Any @@ -7,8 +6,6 @@ from .decoder import JSONDecodeError as JSONDecodeError, JSONDecoder as JSONDeco from .encoder import JSONEncoder as JSONEncoder __all__ = ["dump", "dumps", "load", "loads", "JSONDecoder", "JSONDecodeError", "JSONEncoder"] -if sys.version_info >= (3, 12): - __all__ += ["AttrDict"] def dumps( obj: Any, @@ -62,9 +59,3 @@ def load( **kwds: Any, ) -> Any: ... def detect_encoding(b: bytes | bytearray) -> str: ... # undocumented - -if sys.version_info >= (3, 12): - class AttrDict(dict[str, Any]): - def __getattr__(self, name: str) -> Any: ... - def __setattr__(self, name: str, value: Any) -> None: ... - def __delattr__(self, name: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi index ad5bf392b..3a7c8ade7 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi @@ -179,7 +179,7 @@ class SysLogHandler(Handler): facility_names: ClassVar[dict[str, int]] # undocumented priority_map: ClassVar[dict[str, str]] # undocumented def __init__( - self, address: tuple[str, int] | str = ("localhost", 514), facility: str | int = 1, socktype: SocketKind | None = None + self, address: tuple[str, int] | str = ("localhost", 514), facility: int = 1, socktype: SocketKind | None = None ) -> None: ... if sys.version_info >= (3, 11): def createSocket(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi index 4a4d592b8..231964f39 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi @@ -112,10 +112,7 @@ def log1p(__x: _SupportsFloatOrIndex) -> float: ... def log2(__x: _SupportsFloatOrIndex) -> float: ... def modf(__x: _SupportsFloatOrIndex) -> tuple[float, float]: ... -if sys.version_info >= (3, 12): - def nextafter(__x: _SupportsFloatOrIndex, __y: _SupportsFloatOrIndex, *, steps: SupportsIndex | None = None) -> float: ... - -elif sys.version_info >= (3, 9): +if sys.version_info >= (3, 9): def nextafter(__x: _SupportsFloatOrIndex, __y: _SupportsFloatOrIndex) -> float: ... if sys.version_info >= (3, 8): @@ -133,10 +130,6 @@ def radians(__x: _SupportsFloatOrIndex) -> float: ... def remainder(__x: _SupportsFloatOrIndex, __y: _SupportsFloatOrIndex) -> float: ... def sin(__x: _SupportsFloatOrIndex) -> float: ... def sinh(__x: _SupportsFloatOrIndex) -> float: ... - -if sys.version_info >= (3, 12): - def sumprod(__p: Iterable[float], __q: Iterable[float]) -> float: ... - def sqrt(__x: _SupportsFloatOrIndex) -> float: ... def tan(__x: _SupportsFloatOrIndex) -> float: ... def tanh(__x: _SupportsFloatOrIndex) -> float: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi index 38e192439..8da4ea7ca 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi @@ -76,8 +76,6 @@ class mmap(Iterable[int], Sized): def __iter__(self) -> Iterator[int]: ... def __enter__(self) -> Self: ... def __exit__(self, *args: Unused) -> None: ... - def __buffer__(self, __flags: int) -> memoryview: ... - def __release_buffer__(self, __buffer: memoryview) -> None: ... if sys.version_info >= (3, 8) and sys.platform != "win32": MADV_NORMAL: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi index 3c2ae0fe7..7aec66b58 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi @@ -55,11 +55,7 @@ class PurePath(PathLike[str]): if sys.version_info >= (3, 9): def is_relative_to(self, *other: StrPath) -> bool: ... - if sys.version_info >= (3, 12): - def match(self, path_pattern: str, *, case_sensitive: bool | None = None) -> bool: ... - else: - def match(self, path_pattern: str) -> bool: ... - + def match(self, path_pattern: str) -> bool: ... def relative_to(self, *other: StrPath) -> Self: ... def with_name(self, name: str) -> Self: ... if sys.version_info >= (3, 9): @@ -74,9 +70,6 @@ class PurePath(PathLike[str]): if sys.version_info >= (3, 9) and sys.version_info < (3, 11): def __class_getitem__(cls, type: Any) -> GenericAlias: ... - if sys.version_info >= (3, 12): - def with_segments(self, *args: StrPath) -> Self: ... - class PurePosixPath(PurePath): ... class PureWindowsPath(PurePath): ... @@ -93,15 +86,8 @@ class Path(PurePath): def stat(self) -> stat_result: ... def chmod(self, mode: int) -> None: ... - if sys.version_info >= (3, 12): - def exists(self, *, follow_symlinks: bool = True) -> bool: ... - def glob(self, pattern: str, *, case_sensitive: bool | None = None) -> Generator[Self, None, None]: ... - def rglob(self, pattern: str, *, case_sensitive: bool | None = None) -> Generator[Self, None, None]: ... - else: - def exists(self) -> bool: ... - def glob(self, pattern: str) -> Generator[Self, None, None]: ... - def rglob(self, pattern: str) -> Generator[Self, None, None]: ... - + def exists(self) -> bool: ... + def glob(self, pattern: str) -> Generator[Self, None, None]: ... def is_dir(self) -> bool: ... def is_file(self) -> bool: ... def is_symlink(self) -> bool: ... @@ -109,9 +95,6 @@ class Path(PurePath): def is_fifo(self) -> bool: ... def is_block_device(self) -> bool: ... def is_char_device(self) -> bool: ... - if sys.version_info >= (3, 12): - def is_junction(self) -> bool: ... - def iterdir(self) -> Generator[Self, None, None]: ... def lchmod(self, mode: int) -> None: ... def lstat(self) -> stat_result: ... @@ -176,10 +159,6 @@ class Path(PurePath): # so it's safer to pretend they don't exist def owner(self) -> str: ... def group(self) -> str: ... - - # This method does "exist" on Windows on <3.12, but always raises NotImplementedError - # On py312+, it works properly on Windows, as with all other platforms - if sys.platform != "win32" or sys.version_info >= (3, 12): def is_mount(self) -> bool: ... if sys.version_info >= (3, 9): @@ -192,6 +171,7 @@ class Path(PurePath): def replace(self, target: str | PurePath) -> None: ... def resolve(self, strict: bool = False) -> Self: ... + def rglob(self, pattern: str) -> Generator[Self, None, None]: ... def rmdir(self) -> None: ... def symlink_to(self, target: StrOrBytesPath, target_is_directory: bool = False) -> None: ... if sys.version_info >= (3, 10): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi index e0d69e7d3..405c45ca0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi @@ -168,10 +168,7 @@ class Pdb(Bdb, Cmd): def find_function(funcname: str, filename: str) -> tuple[str, str, int] | None: ... def main() -> None: ... def help() -> None: ... - -if sys.version_info < (3, 10): - def getsourcelines(obj: _SourceObjectType) -> tuple[list[str], int]: ... - +def getsourcelines(obj: _SourceObjectType) -> tuple[list[str], int]: ... def lasti2lineno(code: CodeType, lasti: int) -> int: ... class _rstr(str): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi index cf3995d74..55ff38585 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi @@ -103,8 +103,6 @@ if sys.version_info >= (3, 8): def __init__(self, buffer: ReadableBuffer) -> None: ... def raw(self) -> memoryview: ... def release(self) -> None: ... - def __buffer__(self, __flags: int) -> memoryview: ... - def __release_buffer__(self, __buffer: memoryview) -> None: ... _BufferCallback: TypeAlias = Callable[[PickleBuffer], Any] | None def dump( obj: Any, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi index 9fd1c64f2..5434f2240 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi @@ -34,8 +34,6 @@ __all__ = [ if sys.version_info >= (3, 9): __all__ += ["randbytes"] -if sys.version_info >= (3, 12): - __all__ += ["binomialvariate"] _T = TypeVar("_T") @@ -81,15 +79,8 @@ class Random(_random.Random): def uniform(self, a: float, b: float) -> float: ... def triangular(self, low: float = 0.0, high: float = 1.0, mode: float | None = None) -> float: ... - if sys.version_info >= (3, 12): - def binomialvariate(self, n: int = 1, p: float = 0.5) -> int: ... - def betavariate(self, alpha: float, beta: float) -> float: ... - if sys.version_info >= (3, 12): - def expovariate(self, lambd: float = 1.0) -> float: ... - else: - def expovariate(self, lambd: float) -> float: ... - + def expovariate(self, lambd: float) -> float: ... def gammavariate(self, alpha: float, beta: float) -> float: ... if sys.version_info >= (3, 11): def gauss(self, mu: float = 0.0, sigma: float = 1.0) -> float: ... @@ -126,8 +117,6 @@ expovariate = _inst.expovariate vonmisesvariate = _inst.vonmisesvariate gammavariate = _inst.gammavariate gauss = _inst.gauss -if sys.version_info >= (3, 12): - binomialvariate = _inst.binomialvariate betavariate = _inst.betavariate paretovariate = _inst.paretovariate weibullvariate = _inst.weibullvariate diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi index ef716d404..e8eb46833 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi @@ -87,46 +87,22 @@ else: ignore_dangling_symlinks: bool = False, ) -> _PathReturn: ... -_OnErrorCallback: TypeAlias = Callable[[Callable[..., Any], str, Any], object] -_OnExcCallback: TypeAlias = Callable[[Callable[..., Any], str, Exception], object] +_OnErrorCallback: TypeAlias = Callable[[Callable[..., Any], Any, Any], object] class _RmtreeType(Protocol): avoids_symlink_attacks: bool - if sys.version_info >= (3, 12): - @overload + if sys.version_info >= (3, 11): def __call__( self, path: StrOrBytesPath, - ignore_errors: bool = False, - onerror: _OnErrorCallback | None = None, + ignore_errors: bool = ..., + onerror: _OnErrorCallback | None = ..., *, - onexc: None = None, - dir_fd: int | None = None, - ) -> None: ... - @overload - def __call__( - self, - path: StrOrBytesPath, - ignore_errors: bool = False, - onerror: None = None, - *, - onexc: _OnExcCallback, - dir_fd: int | None = None, - ) -> None: ... - elif sys.version_info >= (3, 11): - def __call__( - self, - path: StrOrBytesPath, - ignore_errors: bool = False, - onerror: _OnErrorCallback | None = None, - *, - dir_fd: int | None = None, + dir_fd: int | None = ..., ) -> None: ... else: - def __call__( - self, path: StrOrBytesPath, ignore_errors: bool = False, onerror: _OnErrorCallback | None = None - ) -> None: ... + def __call__(self, path: StrOrBytesPath, ignore_errors: bool = ..., onerror: _OnErrorCallback | None = ...) -> None: ... rmtree: _RmtreeType @@ -191,15 +167,7 @@ def register_archive_format( name: str, function: Callable[[str, str], object], extra_args: None = None, description: str = "" ) -> None: ... def unregister_archive_format(name: str) -> None: ... - -if sys.version_info >= (3, 12): - def unpack_archive( - filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None, *, filter: str | None = None - ) -> None: ... - -else: - def unpack_archive(filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None) -> None: ... - +def unpack_archive(filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None) -> None: ... @overload def register_unpack_format( name: str, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi index 584fa164f..4228ad551 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi @@ -1,6 +1,6 @@ import sys from _socket import _Address as _SourceAddress -from _typeshed import ReadableBuffer, SizedBuffer +from _typeshed import ReadableBuffer, _BufferWithLen from collections.abc import Sequence from email.message import Message as _Message from re import Pattern @@ -133,7 +133,7 @@ class SMTP: self, from_addr: str, to_addrs: str | Sequence[str], - msg: SizedBuffer | str, + msg: _BufferWithLen | str, mail_options: Sequence[str] = (), rcpt_options: Sequence[str] = (), ) -> _SendErrs: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi index e1ffc573b..6c897b919 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi @@ -438,36 +438,6 @@ if sys.platform == "win32": SIO_LOOPBACK_FAST_PATH as SIO_LOOPBACK_FAST_PATH, SIO_RCVALL as SIO_RCVALL, ) -if sys.version_info >= (3, 12): - from _socket import ( - IP_ADD_SOURCE_MEMBERSHIP as IP_ADD_SOURCE_MEMBERSHIP, - IP_BLOCK_SOURCE as IP_BLOCK_SOURCE, - IP_DROP_SOURCE_MEMBERSHIP as IP_DROP_SOURCE_MEMBERSHIP, - IP_PKTINFO as IP_PKTINFO, - IP_UNBLOCK_SOURCE as IP_UNBLOCK_SOURCE, - ) - - if sys.platform == "win32": - from _socket import ( - HV_GUID_BROADCAST as HV_GUID_BROADCAST, - HV_GUID_CHILDREN as HV_GUID_CHILDREN, - HV_GUID_LOOPBACK as HV_GUID_LOOPBACK, - HV_GUID_PARENT as HV_GUID_PARENT, - HV_GUID_WILDCARD as HV_GUID_WILDCARD, - HV_GUID_ZERO as HV_GUID_ZERO, - HV_PROTOCOL_RAW as HV_PROTOCOL_RAW, - HVSOCKET_ADDRESS_FLAG_PASSTHRU as HVSOCKET_ADDRESS_FLAG_PASSTHRU, - HVSOCKET_CONNECT_TIMEOUT as HVSOCKET_CONNECT_TIMEOUT, - HVSOCKET_CONNECT_TIMEOUT_MAX as HVSOCKET_CONNECT_TIMEOUT_MAX, - HVSOCKET_CONNECTED_SUSPEND as HVSOCKET_CONNECTED_SUSPEND, - ) - else: - from _socket import ( - ETHERTYPE_ARP as ETHERTYPE_ARP, - ETHERTYPE_IP as ETHERTYPE_IP, - ETHERTYPE_IPV6 as ETHERTYPE_IPV6, - ETHERTYPE_VLAN as ETHERTYPE_VLAN, - ) # Re-exported from errno EBADF: int @@ -519,8 +489,6 @@ class AddressFamily(IntEnum): AF_LINK: int if sys.platform != "darwin": AF_BLUETOOTH: int - if sys.platform == "win32" and sys.version_info >= (3, 12): - AF_HYPERV: int AF_INET = AddressFamily.AF_INET AF_INET6 = AddressFamily.AF_INET6 @@ -572,9 +540,6 @@ if sys.platform != "win32" or sys.version_info >= (3, 9): if sys.platform != "darwin": AF_BLUETOOTH = AddressFamily.AF_BLUETOOTH -if sys.platform == "win32" and sys.version_info >= (3, 12): - AF_HYPERV = AddressFamily.AF_HYPERV - class SocketKind(IntEnum): SOCK_STREAM: int SOCK_DGRAM: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi index 6a932f66c..3799d82a0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi @@ -28,8 +28,6 @@ if sys.platform != "win32": "UnixDatagramServer", "UnixStreamServer", ] - if sys.version_info >= (3, 12): - __all__ += ["ForkingUnixStreamServer", "ForkingUnixDatagramServer"] _RequestType: TypeAlias = _socket | tuple[bytes, _socket] _AfUnixAddress: TypeAlias = str | ReadableBuffer # address acceptable for an AF_UNIX socket @@ -126,9 +124,6 @@ class ThreadingMixIn: if sys.platform != "win32": class ForkingTCPServer(ForkingMixIn, TCPServer): ... class ForkingUDPServer(ForkingMixIn, UDPServer): ... - if sys.version_info >= (3, 12): - class ForkingUnixStreamServer(ForkingMixIn, UnixStreamServer): ... - class ForkingUnixDatagramServer(ForkingMixIn, UnixDatagramServer): ... class ThreadingTCPServer(ThreadingMixIn, TCPServer): ... class ThreadingUDPServer(ThreadingMixIn, UDPServer): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi index af5fcec6a..1358b1f90 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi @@ -114,15 +114,8 @@ if sys.version_info >= (3, 8): def __rsub__(self, x2: float | NormalDist) -> NormalDist: ... __rmul__ = __mul__ -if sys.version_info >= (3, 12): - def correlation( - __x: Sequence[_Number], __y: Sequence[_Number], *, method: Literal["linear", "ranked"] = "linear" - ) -> float: ... - -elif sys.version_info >= (3, 10): - def correlation(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ... - if sys.version_info >= (3, 10): + def correlation(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ... def covariance(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ... class LinearRegression(NamedTuple): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi index ca0491240..c2fdbeccc 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi @@ -321,7 +321,7 @@ if sys.version_info < (3, 9): if sys.version_info >= (3, 8): # Doesn't exist at runtime, but exported in the stubs so pytest etc. can annotate their code more easily. - class UnraisableHookArgs(Protocol): + class UnraisableHookArgs: exc_type: type[BaseException] exc_value: BaseException | None exc_traceback: TracebackType | None @@ -359,13 +359,3 @@ if sys.version_info < (3, 8): # as part of the response to CVE-2020-10735 def set_int_max_str_digits(maxdigits: int) -> None: ... def get_int_max_str_digits() -> int: ... - -if sys.version_info >= (3, 12): - def getunicodeinternedsize() -> int: ... - def deactivate_stack_trampoline() -> None: ... - def is_stack_trampoline_active() -> bool: ... - # It always exists, but raises on non-linux platforms: - if sys.platform == "linux": - def activate_stack_trampoline(__backend: str) -> None: ... - else: - def activate_stack_trampoline(__backend: str) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi index 1b6e4b99a..cd27e91fb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi @@ -33,51 +33,7 @@ template: str _StrMode: TypeAlias = Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"] _BytesMode: TypeAlias = Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] -if sys.version_info >= (3, 12): - @overload - def NamedTemporaryFile( - mode: _StrMode, - buffering: int = -1, - encoding: str | None = None, - newline: str | None = None, - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: GenericPath[AnyStr] | None = None, - delete: bool = True, - *, - errors: str | None = None, - delete_on_close: bool = True, - ) -> _TemporaryFileWrapper[str]: ... - @overload - def NamedTemporaryFile( - mode: _BytesMode = "w+b", - buffering: int = -1, - encoding: str | None = None, - newline: str | None = None, - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: GenericPath[AnyStr] | None = None, - delete: bool = True, - *, - errors: str | None = None, - delete_on_close: bool = True, - ) -> _TemporaryFileWrapper[bytes]: ... - @overload - def NamedTemporaryFile( - mode: str = "w+b", - buffering: int = -1, - encoding: str | None = None, - newline: str | None = None, - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: GenericPath[AnyStr] | None = None, - delete: bool = True, - *, - errors: str | None = None, - delete_on_close: bool = True, - ) -> _TemporaryFileWrapper[Any]: ... - -elif sys.version_info >= (3, 8): +if sys.version_info >= (3, 8): @overload def NamedTemporaryFile( mode: _StrMode, @@ -229,11 +185,7 @@ class _TemporaryFileWrapper(Generic[AnyStr], IO[AnyStr]): file: IO[AnyStr] # io.TextIOWrapper, io.BufferedReader or io.BufferedWriter name: str delete: bool - if sys.version_info >= (3, 12): - def __init__(self, file: IO[AnyStr], name: str, delete: bool = True, delete_on_close: bool = True) -> None: ... - else: - def __init__(self, file: IO[AnyStr], name: str, delete: bool = True) -> None: ... - + def __init__(self, file: IO[AnyStr], name: str, delete: bool = True) -> None: ... def __enter__(self) -> Self: ... def __exit__(self, exc: type[BaseException] | None, value: BaseException | None, tb: TracebackType | None) -> None: ... def __getattr__(self, name: str) -> Any: ... @@ -473,28 +425,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): class TemporaryDirectory(Generic[AnyStr]): name: AnyStr - if sys.version_info >= (3, 12): - @overload - def __init__( - self: TemporaryDirectory[str], - suffix: str | None = None, - prefix: str | None = None, - dir: StrPath | None = None, - ignore_cleanup_errors: bool = False, - *, - delete: bool = True, - ) -> None: ... - @overload - def __init__( - self: TemporaryDirectory[bytes], - suffix: bytes | None = None, - prefix: bytes | None = None, - dir: BytesPath | None = None, - ignore_cleanup_errors: bool = False, - *, - delete: bool = True, - ) -> None: ... - elif sys.version_info >= (3, 10): + if sys.version_info >= (3, 10): @overload def __init__( self: TemporaryDirectory[str], diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi index badd09cae..6275e4552 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi @@ -37,9 +37,6 @@ if sys.version_info >= (3, 8): if sys.version_info >= (3, 10): __all__ += ["getprofile", "gettrace"] -if sys.version_info >= (3, 12): - __all__ += ["setprofile_all_threads", "settrace_all_threads"] - _profile_hook: ProfileFunction | None def active_count() -> int: ... @@ -56,10 +53,6 @@ if sys.version_info >= (3, 8): def settrace(func: TraceFunction) -> None: ... def setprofile(func: ProfileFunction | None) -> None: ... -if sys.version_info >= (3, 12): - def setprofile_all_threads(func: ProfileFunction | None) -> None: ... - def settrace_all_threads(func: TraceFunction) -> None: ... - if sys.version_info >= (3, 10): def gettrace() -> TraceFunction | None: ... def getprofile() -> ProfileFunction | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi index fb31fbda6..43475d912 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi @@ -17,7 +17,7 @@ from importlib.machinery import ModuleSpec # pytype crashes if types.MappingProxyType inherits from collections.abc.Mapping instead of typing.Mapping from typing import Any, ClassVar, Generic, Mapping, Protocol, TypeVar, overload # noqa: Y022 -from typing_extensions import Literal, ParamSpec, TypeVarTuple, final +from typing_extensions import Literal, ParamSpec, final __all__ = [ "FunctionType", @@ -94,8 +94,6 @@ class FunctionType: if sys.version_info >= (3, 10): @property def __builtins__(self) -> dict[str, Any]: ... - if sys.version_info >= (3, 12): - __type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] __module__: str def __init__( diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi index db042dc44..6fc677dcb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi @@ -136,32 +136,14 @@ Any = object() @_final class TypeVar: - @property - def __name__(self) -> str: ... - @property - def __bound__(self) -> Any | None: ... - @property - def __constraints__(self) -> tuple[Any, ...]: ... - @property - def __covariant__(self) -> bool: ... - @property - def __contravariant__(self) -> bool: ... - if sys.version_info >= (3, 12): - @property - def __infer_variance__(self) -> bool: ... - def __init__( - self, - name: str, - *constraints: Any, - bound: Any | None = None, - covariant: bool = False, - contravariant: bool = False, - infer_variance: bool = False, - ) -> None: ... - else: - def __init__( - self, name: str, *constraints: Any, bound: Any | None = None, covariant: bool = False, contravariant: bool = False - ) -> None: ... + __name__: str + __bound__: Any | None + __constraints__: tuple[Any, ...] + __covariant__: bool + __contravariant__: bool + def __init__( + self, name: str, *constraints: Any, bound: Any | None = None, covariant: bool = False, contravariant: bool = False + ) -> None: ... if sys.version_info >= (3, 10): def __or__(self, right: Any) -> _SpecialForm: ... def __ror__(self, left: Any) -> _SpecialForm: ... @@ -211,55 +193,30 @@ if sys.version_info >= (3, 11): NotRequired: _SpecialForm LiteralString: _SpecialForm - @_final class TypeVarTuple: - @property - def __name__(self) -> str: ... + __name__: str def __init__(self, name: str) -> None: ... def __iter__(self) -> Any: ... def __typing_subst__(self, arg: Never) -> Never: ... def __typing_prepare_subst__(self, alias: Incomplete, args: Incomplete) -> Incomplete: ... if sys.version_info >= (3, 10): - @_final class ParamSpecArgs: - @property - def __origin__(self) -> ParamSpec: ... + __origin__: ParamSpec def __init__(self, origin: ParamSpec) -> None: ... - @_final class ParamSpecKwargs: - @property - def __origin__(self) -> ParamSpec: ... + __origin__: ParamSpec def __init__(self, origin: ParamSpec) -> None: ... - @_final class ParamSpec: - @property - def __name__(self) -> str: ... - @property - def __bound__(self) -> Any | None: ... - @property - def __covariant__(self) -> bool: ... - @property - def __contravariant__(self) -> bool: ... - if sys.version_info >= (3, 12): - @property - def __infer_variance__(self) -> bool: ... - def __init__( - self, - name: str, - *, - bound: Any | None = None, - contravariant: bool = False, - covariant: bool = False, - infer_variance: bool = False, - ) -> None: ... - else: - def __init__( - self, name: str, *, bound: Any | None = None, contravariant: bool = False, covariant: bool = False - ) -> None: ... - + __name__: str + __bound__: Any | None + __covariant__: bool + __contravariant__: bool + def __init__( + self, name: str, *, bound: Any | None = None, contravariant: bool = False, covariant: bool = False + ) -> None: ... @property def args(self) -> ParamSpecArgs: ... @property @@ -276,7 +233,7 @@ if sys.version_info >= (3, 10): class NewType: def __init__(self, name: str, tp: Any) -> None: ... - def __call__(self, __x: _T) -> _T: ... + def __call__(self, x: _T) -> _T: ... def __or__(self, other: Any) -> _SpecialForm: ... def __ror__(self, other: Any) -> _SpecialForm: ... __supertype__: type @@ -771,7 +728,7 @@ class TextIO(IO[str]): @abstractmethod def __enter__(self) -> TextIO: ... -ByteString: typing_extensions.TypeAlias = bytes | bytearray | memoryview +class ByteString(Sequence[int], metaclass=ABCMeta): ... # Functions @@ -843,21 +800,18 @@ if sys.version_info >= (3, 11): class NamedTuple(tuple[Any, ...]): if sys.version_info < (3, 8): - _field_types: ClassVar[collections.OrderedDict[str, type]] + _field_types: collections.OrderedDict[str, type] elif sys.version_info < (3, 9): - _field_types: ClassVar[dict[str, type]] - _field_defaults: ClassVar[dict[str, Any]] - _fields: ClassVar[tuple[str, ...]] - # __orig_bases__ sometimes exists on <3.12, but not consistently - # So we only add it to the stub on 3.12+. - if sys.version_info >= (3, 12): - __orig_bases__: ClassVar[tuple[Any, ...]] + _field_types: dict[str, type] + _field_defaults: dict[str, Any] + _fields: tuple[str, ...] + _source: str @overload def __init__(self, typename: str, fields: Iterable[tuple[str, Any]] = ...) -> None: ... @overload def __init__(self, typename: str, fields: None = None, **kwargs: Any) -> None: ... @classmethod - def _make(cls, iterable: Iterable[Any]) -> typing_extensions.Self: ... + def _make(cls: Type[_T], iterable: Iterable[Any]) -> _T: ... if sys.version_info >= (3, 8): def _asdict(self) -> dict[str, Any]: ... else: @@ -873,10 +827,6 @@ class _TypedDict(Mapping[str, object], metaclass=ABCMeta): if sys.version_info >= (3, 9): __required_keys__: ClassVar[frozenset[str]] __optional_keys__: ClassVar[frozenset[str]] - # __orig_bases__ sometimes exists on <3.12, but not consistently, - # so we only add it to the stub on 3.12+ - if sys.version_info >= (3, 12): - __orig_bases__: ClassVar[tuple[Any, ...]] def copy(self) -> typing_extensions.Self: ... # Using Never so that only calls using mypy plugin hook that specialize the signature # can go through. @@ -923,26 +873,3 @@ if sys.version_info >= (3, 10): def is_typeddict(tp: object) -> bool: ... def _type_repr(obj: object) -> str: ... - -if sys.version_info >= (3, 12): - def override(__arg: _F) -> _F: ... - @_final - class TypeAliasType: - def __init__( - self, name: str, value: Any, *, type_params: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] = () - ) -> None: ... - @property - def __value__(self) -> Any: ... - @property - def __type_params__(self) -> tuple[TypeVar | ParamSpec | TypeVarTuple, ...]: ... - @property - def __parameters__(self) -> tuple[Any, ...]: ... - @property - def __name__(self) -> str: ... - # It's writable on types, but not on instances of TypeAliasType. - @property - def __module__(self) -> str | None: ... # type: ignore[override] - def __getitem__(self, parameters: Any) -> Any: ... - if sys.version_info >= (3, 10): - def __or__(self, right: Any) -> _SpecialForm: ... - def __ror__(self, left: Any) -> _SpecialForm: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi index c96171542..653274188 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi @@ -22,14 +22,9 @@ from typing import ( # noqa: Y022,Y039 DefaultDict as DefaultDict, Deque as Deque, Mapping, + NewType as NewType, NoReturn as NoReturn, Sequence, - SupportsAbs as SupportsAbs, - SupportsBytes as SupportsBytes, - SupportsComplex as SupportsComplex, - SupportsFloat as SupportsFloat, - SupportsInt as SupportsInt, - SupportsRound as SupportsRound, Text as Text, Type as Type, _Alias, @@ -44,7 +39,6 @@ if sys.version_info >= (3, 9): __all__ = [ "Any", - "Buffer", "ClassVar", "Concatenate", "Final", @@ -72,12 +66,6 @@ __all__ = [ "OrderedDict", "TypedDict", "SupportsIndex", - "SupportsAbs", - "SupportsRound", - "SupportsBytes", - "SupportsComplex", - "SupportsFloat", - "SupportsInt", "Annotated", "assert_never", "assert_type", @@ -96,7 +84,6 @@ __all__ = [ "runtime_checkable", "Text", "TypeAlias", - "TypeAliasType", "TypeGuard", "TYPE_CHECKING", "Never", @@ -106,7 +93,6 @@ __all__ = [ "clear_overloads", "get_args", "get_origin", - "get_original_bases", "get_overloads", "get_type_hints", ] @@ -148,7 +134,6 @@ class _TypedDict(Mapping[str, object], metaclass=abc.ABCMeta): __required_keys__: ClassVar[frozenset[str]] __optional_keys__: ClassVar[frozenset[str]] __total__: ClassVar[bool] - __orig_bases__: ClassVar[tuple[Any, ...]] def copy(self) -> Self: ... # Using Never so that only calls using mypy plugin hook that specialize the signature # can go through. @@ -198,11 +183,10 @@ class SupportsIndex(Protocol, metaclass=abc.ABCMeta): @abc.abstractmethod def __index__(self) -> int: ... -# New and changed things in 3.10 +# New things in 3.10 if sys.version_info >= (3, 10): from typing import ( Concatenate as Concatenate, - NewType as NewType, ParamSpecArgs as ParamSpecArgs, ParamSpecKwargs as ParamSpecKwargs, TypeAlias as TypeAlias, @@ -210,16 +194,12 @@ if sys.version_info >= (3, 10): is_typeddict as is_typeddict, ) else: - @final class ParamSpecArgs: - @property - def __origin__(self) -> ParamSpec: ... + __origin__: ParamSpec def __init__(self, origin: ParamSpec) -> None: ... - @final class ParamSpecKwargs: - @property - def __origin__(self) -> ParamSpec: ... + __origin__: ParamSpec def __init__(self, origin: ParamSpec) -> None: ... Concatenate: _SpecialForm @@ -227,11 +207,6 @@ else: TypeGuard: _SpecialForm def is_typeddict(tp: object) -> bool: ... - class NewType: - def __init__(self, name: str, tp: Any) -> None: ... - def __call__(self, __x: _T) -> _T: ... - __supertype__: type - # New things in 3.11 # NamedTuples are not new, but the ability to create generic NamedTuples is new in 3.11 if sys.version_info >= (3, 11): @@ -276,12 +251,12 @@ else: class NamedTuple(tuple[Any, ...]): if sys.version_info < (3, 8): - _field_types: ClassVar[collections.OrderedDict[str, type]] + _field_types: collections.OrderedDict[str, type] elif sys.version_info < (3, 9): - _field_types: ClassVar[dict[str, type]] - _field_defaults: ClassVar[dict[str, Any]] - _fields: ClassVar[tuple[str, ...]] - __orig_bases__: ClassVar[tuple[Any, ...]] + _field_types: dict[str, type] + _field_defaults: dict[str, Any] + _fields: tuple[str, ...] + _source: str @overload def __init__(self, typename: str, fields: Iterable[tuple[str, Any]] = ...) -> None: ... @overload @@ -297,24 +272,16 @@ else: # New things in 3.xx # The `default` parameter was added to TypeVar, ParamSpec, and TypeVarTuple (PEP 696) -# The `infer_variance` parameter was added to TypeVar in 3.12 (PEP 695) +# The `infer_variance` parameter was added to TypeVar (PEP 695) # typing_extensions.override (PEP 698) @final class TypeVar: - @property - def __name__(self) -> str: ... - @property - def __bound__(self) -> Any | None: ... - @property - def __constraints__(self) -> tuple[Any, ...]: ... - @property - def __covariant__(self) -> bool: ... - @property - def __contravariant__(self) -> bool: ... - @property - def __infer_variance__(self) -> bool: ... - @property - def __default__(self) -> Any | None: ... + __name__: str + __bound__: Any | None + __constraints__: tuple[Any, ...] + __covariant__: bool + __contravariant__: bool + __default__: Any | None def __init__( self, name: str, @@ -333,18 +300,11 @@ class TypeVar: @final class ParamSpec: - @property - def __name__(self) -> str: ... - @property - def __bound__(self) -> Any | None: ... - @property - def __covariant__(self) -> bool: ... - @property - def __contravariant__(self) -> bool: ... - @property - def __infer_variance__(self) -> bool: ... - @property - def __default__(self) -> Any | None: ... + __name__: str + __bound__: type[Any] | None + __covariant__: bool + __contravariant__: bool + __default__: type[Any] | None def __init__( self, name: str, @@ -361,48 +321,30 @@ class ParamSpec: @final class TypeVarTuple: - @property - def __name__(self) -> str: ... - @property - def __default__(self) -> Any | None: ... + __name__: str + __default__: Any | None def __init__(self, name: str, *, default: Any | None = None) -> None: ... def __iter__(self) -> Any: ... # Unpack[Self] +def override(__arg: _F) -> _F: ... def deprecated(__msg: str, *, category: type[Warning] | None = ..., stacklevel: int = 1) -> Callable[[_T], _T]: ... -if sys.version_info >= (3, 12): - from collections.abc import Buffer as Buffer - from types import get_original_bases as get_original_bases - from typing import TypeAliasType as TypeAliasType, override as override -else: - def override(__arg: _F) -> _F: ... - def get_original_bases(__cls: type) -> tuple[Any, ...]: ... - @final - class TypeAliasType: - def __init__( - self, name: str, value: Any, *, type_params: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] = () - ) -> None: ... - @property - def __value__(self) -> Any: ... - @property - def __type_params__(self) -> tuple[TypeVar | ParamSpec | TypeVarTuple, ...]: ... - @property - def __parameters__(self) -> tuple[Any, ...]: ... - @property - def __name__(self) -> str: ... - # It's writable on types, but not on instances of TypeAliasType. - @property - def __module__(self) -> str | None: ... # type: ignore[override] - def __getitem__(self, parameters: Any) -> Any: ... - if sys.version_info >= (3, 10): - def __or__(self, right: Any) -> _SpecialForm: ... - def __ror__(self, left: Any) -> _SpecialForm: ... - - @runtime_checkable - class Buffer(Protocol): - # Not actually a Protocol at runtime; see - # https://github.com/python/typeshed/issues/10224 for why we're defining it this way - def __buffer__(self, __flags: int) -> memoryview: ... +# PEP 695 + +@final +class TypeAliasType: + def __new__( + cls, + name: str, + value: Any, + *, + type_params: tuple[Any, ...] | None = None, + ) -> TypeAliasType: ... + def __or__(self, other: Any) -> Any: ... + __name__: str + __parameters__: tuple[Any, ...] | None + __value__: Any + # PEP 705 ReadOnly: _SpecialForm diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi index 13f48fe85..0bbab52f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi @@ -41,7 +41,7 @@ _P = ParamSpec("_P") ProxyTypes: tuple[type[Any], ...] class WeakMethod(ref[_CallableT], Generic[_CallableT]): - def __new__(cls, meth: _CallableT, callback: Callable[[Self], object] | None = None) -> Self: ... + def __new__(cls, meth: _CallableT, callback: Callable[[_CallableT], object] | None = None) -> Self: ... def __call__(self) -> _CallableT | None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi index 79969359f..8c32f3080 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi @@ -2,7 +2,7 @@ import gzip import http.client import sys import time -from _typeshed import ReadableBuffer, SizedBuffer, SupportsRead, SupportsWrite +from _typeshed import ReadableBuffer, SupportsRead, SupportsWrite, _BufferWithLen from collections.abc import Callable, Iterable, Mapping from datetime import datetime from io import BytesIO @@ -236,20 +236,20 @@ class Transport: def __init__(self, use_datetime: bool = False, use_builtin_types: bool = False) -> None: ... def request( - self, host: _HostType, handler: str, request_body: SizedBuffer, verbose: bool = False + self, host: _HostType, handler: str, request_body: _BufferWithLen, verbose: bool = False ) -> tuple[_Marshallable, ...]: ... def single_request( - self, host: _HostType, handler: str, request_body: SizedBuffer, verbose: bool = False + self, host: _HostType, handler: str, request_body: _BufferWithLen, verbose: bool = False ) -> tuple[_Marshallable, ...]: ... def getparser(self) -> tuple[ExpatParser, Unmarshaller]: ... def get_host_info(self, host: _HostType) -> tuple[str, list[tuple[str, str]], dict[str, str]]: ... def make_connection(self, host: _HostType) -> http.client.HTTPConnection: ... def close(self) -> None: ... def send_request( - self, host: _HostType, handler: str, request_body: SizedBuffer, debug: bool + self, host: _HostType, handler: str, request_body: _BufferWithLen, debug: bool ) -> http.client.HTTPConnection: ... def send_headers(self, connection: http.client.HTTPConnection, headers: list[tuple[str, str]]) -> None: ... - def send_content(self, connection: http.client.HTTPConnection, request_body: SizedBuffer) -> None: ... + def send_content(self, connection: http.client.HTTPConnection, request_body: _BufferWithLen) -> None: ... def parse_response(self, response: http.client.HTTPResponse) -> tuple[_Marshallable, ...]: ... class SafeTransport(Transport): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi index abda7a3b9..92f1dc49a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi @@ -1,6 +1,6 @@ import io import sys -from _typeshed import SizedBuffer, StrOrBytesPath, StrPath +from _typeshed import StrOrBytesPath, StrPath, _BufferWithLen from collections.abc import Callable, Iterable, Iterator from os import PathLike from types import TracebackType @@ -179,7 +179,7 @@ class ZipFile: def writestr( self, zinfo_or_arcname: str | ZipInfo, - data: SizedBuffer | str, + data: _BufferWithLen | str, compress_type: int | None = None, compresslevel: int | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi index 0189bfe71..ee97faace 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi @@ -17,10 +17,8 @@ class zipimporter: else: def __init__(self, path: StrOrBytesPath) -> None: ... - if sys.version_info < (3, 12): - def find_loader(self, fullname: str, path: str | None = None) -> tuple[zipimporter | None, list[str]]: ... # undocumented - def find_module(self, fullname: str, path: str | None = None) -> zipimporter | None: ... - + def find_loader(self, fullname: str, path: str | None = None) -> tuple[zipimporter | None, list[str]]: ... # undocumented + def find_module(self, fullname: str, path: str | None = None) -> zipimporter | None: ... def get_code(self, fullname: str) -> CodeType: ... def get_data(self, pathname: str) -> bytes: ... def get_filename(self, fullname: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi index c00379e37..771f0cd24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi @@ -6,6 +6,7 @@ from typing_extensions import Final, ParamSpec, SupportsIndex, TypeAlias from pyscreeze import ( center as center, + grab as grab, locate as locate, locateAll as locateAll, locateAllOnScreen as locateAllOnScreen, @@ -67,9 +68,6 @@ def getPointOnLine(x1: float, y1: float, x2: float, y2: float, n: float) -> tupl def linear(n: float) -> float: ... def position(x: int | None = None, y: int | None = None) -> Point: ... def size() -> Size: ... - -resolution = size - def onScreen(x: _NormalizeableXArg | None, y: SupportsInt | None = None) -> bool: ... def mouseDown( x: _NormalizeableXArg | None = None, @@ -237,9 +235,6 @@ def typewrite( write = typewrite def hotkey(*args: str, logScreenshot: bool | None = None, interval: float = 0.0) -> None: ... - -shortcut = hotkey - def failSafeCheck() -> None: ... def displayMousePosition(xOffset: float = 0, yOffset: float = 0) -> None: ... def sleep(seconds: float) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi index be6db8189..5c52490e9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi @@ -41,7 +41,7 @@ class PyScreezeException(Exception): ... class ImageNotFoundException(PyScreezeException): ... # _locateAll_opencv -def requiresPyGetWindow(wrappedFunction: Callable[_P, _R]) -> Callable[_P, _R]: ... +def requiresPillow(wrappedFunction: Callable[_P, _R]) -> Callable[_P, _R]: ... @overload def locate( needleImage: str | Image.Image | _Mat, @@ -142,8 +142,6 @@ def locateCenterOnScreen( step: int = 1, confidence: None = None, ) -> Point | None: ... -def locateOnScreenNear(image: str | Image.Image | _Mat, x: int, y: int) -> Box: ... -def locateCenterOnScreenNear(image: str | Image.Image | _Mat, x: int, y: int) -> Point | None: ... # _locateAll_opencv @overload @@ -178,6 +176,8 @@ def pixelMatchesColor( def pixel(x: int, y: int) -> tuple[int, int, int]: ... def screenshot(imageFilename: StrOrBytesPath | None = None, region: tuple[int, int, int, int] | None = None) -> Image.Image: ... +grab = screenshot + # _locateAll_opencv @overload def locateAll( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi index 883492c73..14dc7b537 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi @@ -1,6 +1,7 @@ from collections.abc import Callable, Iterable, Iterator, Mapping from re import Pattern from typing import Any, TypeVar, overload +from typing_extensions import TypeAlias from . import resolver as resolver # Help mypy a bit; this is implied by loader and dumper from .constructor import BaseConstructor @@ -19,6 +20,9 @@ from .representer import BaseRepresenter from .resolver import BaseResolver from .tokens import * +# FIXME: the functions really return str if encoding is None, otherwise bytes. Waiting for python/mypy#5621 +_Yaml: TypeAlias = Any + _T = TypeVar("_T") _Constructor = TypeVar("_Constructor", bound=BaseConstructor) _Representer = TypeVar("_Representer", bound=BaseRepresenter) @@ -54,7 +58,6 @@ def serialize_all( nodes, stream: _WriteStream[Any], Dumper=..., - *, canonical: bool | None = None, indent: int | None = None, width: int | _Inf | None = None, @@ -71,51 +74,33 @@ def serialize_all( nodes, stream: None = None, Dumper=..., - *, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, -) -> str: ... -@overload -def serialize_all( - nodes, - stream: None = None, - Dumper=..., - *, canonical: bool | None = None, indent: int | None = None, width: int | _Inf | None = None, allow_unicode: bool | None = None, line_break: str | None = None, - encoding: str, + encoding: str | None = None, explicit_start: bool | None = None, explicit_end: bool | None = None, version: tuple[int, int] | None = None, tags: Mapping[str, str] | None = None, -) -> bytes: ... +) -> _Yaml: ... @overload def serialize( node, stream: _WriteStream[Any], Dumper=..., *, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: str | None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, + canonical: bool | None = ..., + indent: int | None = ..., + width: int | _Inf | None = ..., + allow_unicode: bool | None = ..., + line_break: str | None = ..., + encoding: str | None = ..., + explicit_start: bool | None = ..., + explicit_end: bool | None = ..., + version: tuple[int, int] | None = ..., + tags: Mapping[str, str] | None = ..., ) -> None: ... @overload def serialize( @@ -123,40 +108,22 @@ def serialize( stream: None = None, Dumper=..., *, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, -) -> str: ... -@overload -def serialize( - node, - stream: None = None, - Dumper=..., - *, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: str, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, -) -> bytes: ... + canonical: bool | None = ..., + indent: int | None = ..., + width: int | _Inf | None = ..., + allow_unicode: bool | None = ..., + line_break: str | None = ..., + encoding: str | None = ..., + explicit_start: bool | None = ..., + explicit_end: bool | None = ..., + version: tuple[int, int] | None = ..., + tags: Mapping[str, str] | None = ..., +) -> _Yaml: ... @overload def dump_all( documents: Iterable[Any], stream: _WriteStream[Any], Dumper=..., - *, default_style: str | None = None, default_flow_style: bool | None = False, canonical: bool | None = None, @@ -176,7 +143,6 @@ def dump_all( documents: Iterable[Any], stream: None = None, Dumper=..., - *, default_style: str | None = None, default_flow_style: bool | None = False, canonical: bool | None = None, @@ -184,52 +150,32 @@ def dump_all( width: int | _Inf | None = None, allow_unicode: bool | None = None, line_break: str | None = None, - encoding: None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, -) -> str: ... -@overload -def dump_all( - documents: Iterable[Any], - stream: None = None, - Dumper=..., - *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: str, + encoding: str | None = None, explicit_start: bool | None = None, explicit_end: bool | None = None, version: tuple[int, int] | None = None, tags: Mapping[str, str] | None = None, sort_keys: bool = True, -) -> bytes: ... +) -> _Yaml: ... @overload def dump( data: Any, stream: _WriteStream[Any], Dumper=..., *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: str | None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, + default_style: str | None = ..., + default_flow_style: bool | None = ..., + canonical: bool | None = ..., + indent: int | None = ..., + width: int | _Inf | None = ..., + allow_unicode: bool | None = ..., + line_break: str | None = ..., + encoding: str | None = ..., + explicit_start: bool | None = ..., + explicit_end: bool | None = ..., + version: tuple[int, int] | None = ..., + tags: Mapping[str, str] | None = ..., + sort_keys: bool = ..., ) -> None: ... @overload def dump( @@ -237,154 +183,96 @@ def dump( stream: None = None, Dumper=..., *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, -) -> str: ... -@overload -def dump( - data: Any, - stream: None = None, - Dumper=..., - *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: str, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, -) -> bytes: ... + default_style: str | None = ..., + default_flow_style: bool | None = ..., + canonical: bool | None = ..., + indent: int | None = ..., + width: int | _Inf | None = ..., + allow_unicode: bool | None = ..., + line_break: str | None = ..., + encoding: str | None = ..., + explicit_start: bool | None = ..., + explicit_end: bool | None = ..., + version: tuple[int, int] | None = ..., + tags: Mapping[str, str] | None = ..., + sort_keys: bool = ..., +) -> _Yaml: ... @overload def safe_dump_all( documents: Iterable[Any], stream: _WriteStream[Any], *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: str | None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, + default_style: str | None = ..., + default_flow_style: bool | None = ..., + canonical: bool | None = ..., + indent: int | None = ..., + width: int | _Inf | None = ..., + allow_unicode: bool | None = ..., + line_break: str | None = ..., + encoding: str | None = ..., + explicit_start: bool | None = ..., + explicit_end: bool | None = ..., + version: tuple[int, int] | None = ..., + tags: Mapping[str, str] | None = ..., + sort_keys: bool = ..., ) -> None: ... @overload def safe_dump_all( documents: Iterable[Any], stream: None = None, *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, -) -> str: ... -@overload -def safe_dump_all( - documents: Iterable[Any], - stream: None = None, - *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: str, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, -) -> bytes: ... + default_style: str | None = ..., + default_flow_style: bool | None = ..., + canonical: bool | None = ..., + indent: int | None = ..., + width: int | _Inf | None = ..., + allow_unicode: bool | None = ..., + line_break: str | None = ..., + encoding: str | None = ..., + explicit_start: bool | None = ..., + explicit_end: bool | None = ..., + version: tuple[int, int] | None = ..., + tags: Mapping[str, str] | None = ..., + sort_keys: bool = ..., +) -> _Yaml: ... @overload def safe_dump( data: Any, stream: _WriteStream[Any], *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: str | None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, + default_style: str | None = ..., + default_flow_style: bool | None = ..., + canonical: bool | None = ..., + indent: int | None = ..., + width: int | _Inf | None = ..., + allow_unicode: bool | None = ..., + line_break: str | None = ..., + encoding: str | None = ..., + explicit_start: bool | None = ..., + explicit_end: bool | None = ..., + version: tuple[int, int] | None = ..., + tags: Mapping[str, str] | None = ..., + sort_keys: bool = ..., ) -> None: ... @overload def safe_dump( data: Any, stream: None = None, *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: None = None, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, -) -> str: ... -@overload -def safe_dump( - data: Any, - stream: None = None, - *, - default_style: str | None = None, - default_flow_style: bool | None = False, - canonical: bool | None = None, - indent: int | None = None, - width: int | _Inf | None = None, - allow_unicode: bool | None = None, - line_break: str | None = None, - encoding: str, - explicit_start: bool | None = None, - explicit_end: bool | None = None, - version: tuple[int, int] | None = None, - tags: Mapping[str, str] | None = None, - sort_keys: bool = True, -) -> bytes: ... + default_style: str | None = ..., + default_flow_style: bool | None = ..., + canonical: bool | None = ..., + indent: int | None = ..., + width: int | _Inf | None = ..., + allow_unicode: bool | None = ..., + line_break: str | None = ..., + encoding: str | None = ..., + explicit_start: bool | None = ..., + explicit_end: bool | None = ..., + version: tuple[int, int] | None = ..., + tags: Mapping[str, str] | None = ..., + sort_keys: bool = ..., +) -> _Yaml: ... def add_implicit_resolver( tag: str, regexp: Pattern[str], diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi index 27a3c70a4..ad15feec9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import BytesPath, FileDescriptorOrPath, GenericPath, ReadableBuffer, StrOrBytesPath, StrPath +from _typeshed import FileDescriptorOrPath, GenericPath, ReadableBuffer, StrOrBytesPath from asyncio.events import AbstractEventLoop from collections.abc import Sequence from os import _ScandirIterator, stat_result @@ -26,9 +26,6 @@ async def rename( loop: AbstractEventLoop | None = ..., executor: Any = ..., ) -> None: ... -async def renames( - old: StrOrBytesPath, new: StrOrBytesPath, loop: AbstractEventLoop | None = ..., executor: Any = ... -) -> None: ... async def replace( src: StrOrBytesPath, dst: StrOrBytesPath, @@ -41,37 +38,12 @@ async def replace( async def remove( path: StrOrBytesPath, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... -async def unlink( - path: StrOrBytesPath, *, dir_fd: int | None = ..., loop: AbstractEventLoop | None = ..., executor: Any = ... -) -> None: ... async def mkdir( path: StrOrBytesPath, mode: int = 511, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... async def makedirs( name: StrOrBytesPath, mode: int = 511, exist_ok: bool = False, *, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... -async def link( - src: StrOrBytesPath, - dst: StrOrBytesPath, - *, - src_dir_fd: int | None = ..., - dst_dir_fd: int | None = ..., - follow_symlinks: bool = ..., - loop: AbstractEventLoop | None = ..., - executor: Any = ..., -) -> None: ... -async def symlink( - src: StrOrBytesPath, - dst: StrOrBytesPath, - target_is_directory: bool = ..., - *, - dir_fd: int | None = ..., - loop: AbstractEventLoop | None = ..., - executor: Any = ..., -) -> None: ... -async def readlink( - path: AnyStr, *, dir_fd: int | None = ..., loop: AbstractEventLoop | None = ..., executor: Any = ... -) -> AnyStr: ... async def rmdir( path: StrOrBytesPath, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... @@ -84,12 +56,6 @@ async def scandir(path: int, *, loop: AbstractEventLoop | None = ..., executor: async def scandir( path: GenericPath[AnyStr], *, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> _ScandirIterator[AnyStr]: ... -@overload -async def listdir(path: StrPath | None, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> list[str]: ... -@overload -async def listdir(path: BytesPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> list[bytes]: ... -@overload -async def listdir(path: int, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> list[str]: ... if sys.platform != "win32": @overload diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml index a80fc97a8..7dc2c18b4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml @@ -1,5 +1,5 @@ version = "2.11.*" -requires = ["types-pytz", "types-setuptools"] +requires = ["types-pytz"] obsolete_since = "2.12.1" # Released on 2023-02-28 partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi index c20579b48..dfc1a1308 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi @@ -1,9 +1,8 @@ import abc from _typeshed import Incomplete +from distutils.cmd import Command as _Command from typing import Any -from setuptools._distutils.cmd import Command as _Command - def listify_value(arg, split: Incomplete | None = None): ... class Command(_Command, metaclass=abc.ABCMeta): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml index ad13d437b..04a023450 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.20.*" +version = "4.19.*" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml index 3a9cb22e1..e7239b079 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml @@ -1,5 +1,4 @@ version = "1.15.*" -requires = ["types-setuptools"] [tool.stubtest] # linux and darwin are mostly equivalent, except for a single `RTLD_DEEPBIND` variable diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi index 85478ce66..770751128 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi @@ -1,3 +1,4 @@ +import distutils.core import sys import types from _typeshed import Incomplete, ReadableBuffer, WriteableBuffer @@ -6,7 +7,6 @@ from typing import Any, TypeVar, overload from typing_extensions import Literal, TypeAlias import _cffi_backend -from setuptools._distutils.extension import Extension _T = TypeVar("_T") @@ -93,7 +93,7 @@ class FFI: def set_source_pkgconfig( self, module_name: str, pkgconfig_libs: list[str], source: str, source_extension: str = ".c", **kwds: Any ) -> None: ... - def distutils_extension(self, tmpdir: str = "build", verbose: bool = True) -> Extension: ... + def distutils_extension(self, tmpdir: str = "build", verbose: bool = True) -> distutils.core.Extension: ... def emit_c_code(self, filename: str) -> None: ... def emit_python_code(self, filename: str) -> None: ... def compile(self, tmpdir: str = ".", verbose: int = 0, target: str | None = None, debug: bool | None = None) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml new file mode 100644 index 000000000..7e95f1f53 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml @@ -0,0 +1,6 @@ +version = "5.0.*" +obsolete_since = "5.1.0" # Released on 2022-12-01 +partial_stub = true + +[tool.stubtest] +ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi new file mode 100644 index 000000000..6a87f3434 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi @@ -0,0 +1,16 @@ +from typing_extensions import TypedDict + +from .universaldetector import UniversalDetector as UniversalDetector, _FinalResultType, _IntermediateResultType +from .version import VERSION as VERSION, __version__ as __version__ + +# unused in this module, but imported in multiple submodules +class _LangModelType(TypedDict): # noqa: Y049 + char_to_order_map: tuple[int, ...] + precedence_matrix: tuple[int, ...] + typical_positive_ratio: float + keep_english_letter: bool + charset_name: str + language: str + +def detect(byte_str: bytes | bytearray) -> _FinalResultType: ... +def detect_all(byte_str: bytes | bytearray, ignore_threshold: bool = False) -> list[_IntermediateResultType]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi new file mode 100644 index 000000000..71c9e10c6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi @@ -0,0 +1,39 @@ +class InputState: + PURE_ASCII: int + ESC_ASCII: int + HIGH_BYTE: int + +class LanguageFilter: + CHINESE_SIMPLIFIED: int + CHINESE_TRADITIONAL: int + JAPANESE: int + KOREAN: int + NON_CJK: int + ALL: int + CHINESE: int + CJK: int + +class ProbingState: + DETECTING: int + FOUND_IT: int + NOT_ME: int + +class MachineState: + START: int + ERROR: int + ITS_ME: int + +class SequenceLikelihood: + NEGATIVE: int + UNLIKELY: int + LIKELY: int + POSITIVE: int + @classmethod + def get_num_categories(cls) -> int: ... + +class CharacterCategory: + UNDEFINED: int + LINE_BREAK: int + SYMBOL: int + DIGIT: int + CONTROL: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi new file mode 100644 index 000000000..07344de5c --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi @@ -0,0 +1,7 @@ +from . import _LangModelType + +Latin5_BulgarianCharToOrderMap: tuple[int, ...] +win1251BulgarianCharToOrderMap: tuple[int, ...] +BulgarianLangModel: tuple[int, ...] +Latin5BulgarianModel: _LangModelType +Win1251BulgarianModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi new file mode 100644 index 000000000..22e7c52dc --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi @@ -0,0 +1,15 @@ +from . import _LangModelType + +KOI8R_char_to_order_map: tuple[int, ...] +win1251_char_to_order_map: tuple[int, ...] +latin5_char_to_order_map: tuple[int, ...] +macCyrillic_char_to_order_map: tuple[int, ...] +IBM855_char_to_order_map: tuple[int, ...] +IBM866_char_to_order_map: tuple[int, ...] +RussianLangModel: tuple[int, ...] +Koi8rModel: _LangModelType +Win1251CyrillicModel: _LangModelType +Latin5CyrillicModel: _LangModelType +MacCyrillicModel: _LangModelType +Ibm866Model: _LangModelType +Ibm855Model: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi new file mode 100644 index 000000000..ceee125a2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi @@ -0,0 +1,7 @@ +from . import _LangModelType + +Latin7_char_to_order_map: tuple[int, ...] +win1253_char_to_order_map: tuple[int, ...] +GreekLangModel: tuple[int, ...] +Latin7GreekModel: _LangModelType +Win1253GreekModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi new file mode 100644 index 000000000..a17e10de3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi @@ -0,0 +1,5 @@ +from . import _LangModelType + +WIN1255_CHAR_TO_ORDER_MAP: tuple[int, ...] +HEBREW_LANG_MODEL: tuple[int, ...] +Win1255HebrewModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi new file mode 100644 index 000000000..498c7da58 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi @@ -0,0 +1,7 @@ +from . import _LangModelType + +Latin2_HungarianCharToOrderMap: tuple[int, ...] +win1250HungarianCharToOrderMap: tuple[int, ...] +HungarianLangModel: tuple[int, ...] +Latin2HungarianModel: _LangModelType +Win1250HungarianModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi new file mode 100644 index 000000000..eee2356e8 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi @@ -0,0 +1,5 @@ +from . import _LangModelType + +TIS620CharToOrderMap: tuple[int, ...] +ThaiLangModel: tuple[int, ...] +TIS620ThaiModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi new file mode 100644 index 000000000..6686f262d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi @@ -0,0 +1,5 @@ +from . import _LangModelType + +Latin5_TurkishCharToOrderMap: tuple[int, ...] +TurkishLangModel: tuple[int, ...] +Latin5TurkishModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi new file mode 100644 index 000000000..79dc7130d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi @@ -0,0 +1,29 @@ +from logging import Logger +from re import Pattern +from typing_extensions import TypedDict + +class _FinalResultType(TypedDict): + encoding: str + confidence: float + language: str + +class _IntermediateResultType(TypedDict): + encoding: str | None + confidence: float + language: str | None + +class UniversalDetector: + MINIMUM_THRESHOLD: float + HIGH_BYTE_DETECTOR: Pattern[bytes] + ESC_DETECTOR: Pattern[bytes] + WIN_BYTE_DETECTOR: Pattern[bytes] + ISO_WIN_MAP: dict[str, str] + + result: _IntermediateResultType + done: bool + lang_filter: int + logger: Logger + def __init__(self, lang_filter: int = 31) -> None: ... + def reset(self) -> None: ... + def feed(self, byte_str: bytes | bytearray) -> None: ... + def close(self) -> _FinalResultType: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi new file mode 100644 index 000000000..966073bd2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi @@ -0,0 +1,2 @@ +__version__: str +VERSION: list[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml index 745fc1a4b..08572dfc9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.6.5" +version = "23.5.9" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml index 20ba790a4..5c9238818 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml @@ -1,4 +1,4 @@ -version = "3.2.*" +version = "3.0.*" # Requires a version of cryptography where cryptography.hazmat.primitives.ciphers.Cipher is generic requires = ["cryptography>=37.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi index 0d1886ef3..e7cbf16e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi @@ -62,8 +62,7 @@ class AgentKey(PKey): blob: bytes public_blob: None name: str - comment: str - def __init__(self, agent: AgentSSH, blob: ReadableBuffer, comment: str = "") -> None: ... + def __init__(self, agent: AgentSSH, blob: ReadableBuffer) -> None: ... def asbytes(self) -> bytes: ... def get_name(self) -> str: ... def sign_ssh_data(self, data: _LikeBytes, algorithm: str | None = None) -> Message: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi deleted file mode 100644 index 707dd0f3d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi +++ /dev/null @@ -1,57 +0,0 @@ -import abc -from collections.abc import Callable, Iterator -from logging import Logger -from pathlib import Path -from typing import NamedTuple - -from paramiko.config import SSHConfig -from paramiko.pkey import PKey -from paramiko.ssh_exception import AuthenticationException -from paramiko.transport import Transport - -class AuthSource: - username: str - def __init__(self, username: str) -> None: ... - @abc.abstractmethod - def authenticate(self, transport: Transport) -> list[str]: ... - -class NoneAuth(AuthSource): - def authenticate(self, transport: Transport) -> list[str]: ... - -class Password(AuthSource): - password_getter: Callable[[], str] - def __init__(self, username: str, password_getter: Callable[[], str]) -> None: ... - def authenticate(self, transport: Transport) -> list[str]: ... - -class PrivateKey(AuthSource): - def authenticate(self, transport: Transport) -> list[str]: ... - -class InMemoryPrivateKey(PrivateKey): - pkey: PKey - def __init__(self, username: str, pkey: PKey) -> None: ... - -class OnDiskPrivateKey(PrivateKey): - source: str - path: Path - pkey: PKey - def __init__(self, username: str, source: str, path: Path, pkey: PKey) -> None: ... - -class SourceResult(NamedTuple): - source: AuthSource - result: list[str] | Exception - -class AuthResult(list[SourceResult]): - strategy: AuthStrategy - def __init__(self, strategy: AuthStrategy, *args: SourceResult, **kwargs: object) -> None: ... - -class AuthFailure(AuthenticationException): - result: AuthResult - def __init__(self, result: AuthResult) -> None: ... - -class AuthStrategy: - ssh_config: SSHConfig - log: Logger - def __init__(self, ssh_config: SSHConfig) -> None: ... - @abc.abstractmethod - def get_sources(self) -> Iterator[AuthSource]: ... - def authenticate(self, transport: Transport) -> list[SourceResult]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi index c6fe88441..413bf0fdb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi @@ -1,14 +1,15 @@ from collections.abc import Iterable, Mapping from typing import NoReturn, Protocol -from paramiko.auth_strategy import AuthStrategy from paramiko.channel import Channel, ChannelFile, ChannelStderrFile, ChannelStdinFile from paramiko.hostkeys import HostKeys from paramiko.pkey import PKey from paramiko.sftp_client import SFTPClient -from paramiko.transport import Transport, _SocketLike +from paramiko.transport import Transport from paramiko.util import ClosingContextManager +from .transport import _SocketLike + class _TransportFactory(Protocol): def __call__( self, @@ -46,12 +47,10 @@ class SSHClient(ClosingContextManager): gss_host: str | None = None, banner_timeout: float | None = None, auth_timeout: float | None = None, - channel_timeout: float | None = None, gss_trust_dns: bool = True, passphrase: str | None = None, disabled_algorithms: Mapping[str, Iterable[str]] | None = None, transport_factory: _TransportFactory | None = None, - auth_strategy: AuthStrategy | None = None, ) -> None: ... def close(self) -> None: ... def exec_command( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi index ade72fde4..3ad9e14be 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi @@ -27,7 +27,7 @@ class RSAKey(PKey): def get_name(self) -> str: ... def get_bits(self) -> int: ... def can_sign(self) -> bool: ... - def sign_ssh_data(self, data: bytes, algorithm: str | None = None) -> Message: ... # type: ignore[override] + def sign_ssh_data(self, data: bytes, algorithm: str = "ssh-rsa") -> Message: ... # type: ignore[override] def verify_ssh_sig(self, data: bytes, msg: Message) -> bool: ... def write_private_key_file(self, filename: str, password: str | None = None) -> None: ... def write_private_key(self, file_obj: IO[str], password: str | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi index ba4d3b510..54a282f72 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi @@ -231,12 +231,7 @@ def wait_procs( ) -> tuple[list[Process], list[Process]]: ... def cpu_count(logical: bool = True) -> int: ... def cpu_times(percpu: bool = False): ... -@overload -def cpu_percent(interval: float | None = None, percpu: Literal[False] = False) -> float: ... -@overload -def cpu_percent(interval: float | None, percpu: Literal[True]) -> list[float]: ... -@overload -def cpu_percent(*, percpu: Literal[True]) -> list[float]: ... +def cpu_percent(interval: float | None = None, percpu: bool = False) -> float: ... def cpu_times_percent(interval: float | None = None, percpu: bool = False): ... def cpu_stats() -> scpustats: ... def cpu_freq(percpu: bool = False) -> scpufreq: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml index 02e6421bb..4cdff58ef 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.2.*" +version = "23.1.*" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml index e47e40f17..452ffd22f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml @@ -1,6 +1,5 @@ version = "8.0.0.*" partial_stub = true -obsolete_since = "8.0.1.0.1" # Released on 2023-05-25 [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi index ac71380df..c0f995607 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi @@ -2,8 +2,7 @@ # "KeyError: 'pywintypes'" from _typeshed import Incomplete from datetime import datetime -from typing import NoReturn -from typing_extensions import Literal, Never +from typing_extensions import Literal import _win32typing @@ -16,15 +15,6 @@ class error(Exception): class com_error(Exception): ... class UnicodeType(str): ... -class HANDLEType: - def __init__(self, *args: Never, **kwargs: Never) -> NoReturn: ... - @property - def handle(self) -> int: ... - def Close(self) -> None: ... - def close(self) -> None: ... - def Detach(self) -> None: ... - def __int__(self) -> int: ... - class TimeType(datetime): Format = datetime.strftime @@ -42,7 +32,7 @@ def ACL(__bufSize: int = ...) -> _win32typing.PyACL: ... def SID(buffer, idAuthority, subAuthorities, bufSize=...) -> _win32typing.PySID: ... def SECURITY_ATTRIBUTES() -> _win32typing.PySECURITY_ATTRIBUTES: ... def SECURITY_DESCRIPTOR() -> _win32typing.PySECURITY_DESCRIPTOR: ... -def HANDLE() -> HANDLEType: ... +def HANDLE() -> int: ... def HKEY() -> _win32typing.PyHKEY: ... def WAVEFORMATEX() -> _win32typing.PyWAVEFORMATEX: ... def TimeStamp(*args, **kwargs): ... # incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml index f7972b352..fef9036ad 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml @@ -1 +1 @@ -version = "2023.6.3" +version = "2023.5.5" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml index f0410f316..8006e0087 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.31.*" +version = "2.30.*" requires = ["types-urllib3"] [tool.stubtest] From 3b36b8ea3592e72a8f59c9a73371d0ba4e6fcbcc Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 7 Jun 2023 10:33:05 -0600 Subject: [PATCH 261/525] Published 1.1.313 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index ef29785fc..acf0ef436 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.312", + "version": "1.1.313", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 57303618a..9a36dd4b6 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.312", + "version": "1.1.313", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.312", + "version": "1.1.313", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index dfbd8670a..df539211c 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.312", + "version": "1.1.313", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 392438f4b..0b3d51ad0 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.312", + "version": "1.1.313", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.312", + "version": "1.1.313", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 60a379712..9a52c21e5 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.312", + "version": "1.1.313", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index b5da6a58e..73cec0f0c 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.312", + "version": "1.1.313", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.312", + "version": "1.1.313", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 641710ab0..83f234b44 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.312", + "version": "1.1.313", "private": true, "license": "MIT", "author": { From 51d2ff8beb19b60e21732a11e75bb5c6514e62ac Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 7 Jun 2023 11:51:29 -0600 Subject: [PATCH 262/525] Switched from ts-loader to esbuild-loader for better build performance. (#5247) Co-authored-by: Eric Traut --- packages/pyright-internal/package-lock.json | 11 - packages/pyright-internal/package.json | 1 - .../pyright-internal/src/common/charCodes.ts | 162 ++++ .../pyright-internal/src/common/pathUtils.ts | 2 +- .../src/parser/characterStream.ts | 3 +- .../pyright-internal/src/parser/characters.ts | 3 +- .../src/parser/stringTokenUtils.ts | 3 +- .../pyright-internal/src/parser/tokenizer.ts | 3 +- .../src/tests/harness/fourslash/testState.ts | 6 +- packages/pyright/webpack.config.js | 4 +- packages/vscode-pyright/package-lock.json | 747 ++++++++++++++++++ packages/vscode-pyright/package.json | 1 + packages/vscode-pyright/webpack.config.js | 4 +- 13 files changed, 922 insertions(+), 28 deletions(-) create mode 100644 packages/pyright-internal/src/common/charCodes.ts diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 9a36dd4b6..c3c68ffb1 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -19,7 +19,6 @@ "leven": "^3.1.0", "source-map-support": "^0.5.21", "tmp": "^0.2.1", - "typescript-char": "^0.0.0", "vscode-jsonrpc": "8.1.0", "vscode-languageserver": "8.1.0", "vscode-languageserver-textdocument": "^1.0.10", @@ -4130,11 +4129,6 @@ "node": ">=4.2.0" } }, - "node_modules/typescript-char": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/typescript-char/-/typescript-char-0.0.0.tgz", - "integrity": "sha1-VY/tpzfHZaYQtzfu+7F3Xum8jas=" - }, "node_modules/typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", @@ -7555,11 +7549,6 @@ "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true }, - "typescript-char": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/typescript-char/-/typescript-char-0.0.0.tgz", - "integrity": "sha1-VY/tpzfHZaYQtzfu+7F3Xum8jas=" - }, "typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index df539211c..27d7b84de 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -25,7 +25,6 @@ "leven": "^3.1.0", "source-map-support": "^0.5.21", "tmp": "^0.2.1", - "typescript-char": "^0.0.0", "vscode-jsonrpc": "8.1.0", "vscode-languageserver": "8.1.0", "vscode-languageserver-textdocument": "^1.0.10", diff --git a/packages/pyright-internal/src/common/charCodes.ts b/packages/pyright-internal/src/common/charCodes.ts new file mode 100644 index 000000000..83a0aa6fc --- /dev/null +++ b/packages/pyright-internal/src/common/charCodes.ts @@ -0,0 +1,162 @@ +/* + * charCodes.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Based on code from typescript-char: + * https://github.com/mason-lang/typescript-char + * + * Character code definitions. + */ + +export const enum Char { + Null = 0, + StartOfHeading = 1, + StartOfText = 2, + EndOfText = 3, + EndOfTransmission = 4, + Enquiry = 5, + Acknowledge = 6, + Bell = 7, + Backspace = 8, + Tab = 9, + LineFeed = 0xa, + VerticalTab = 0xb, + FormFeed = 0xc, + CarriageReturn = 0xd, + ShiftOut = 0xe, + ShirtIn = 0xf, + DataLineEscape = 0x10, + DeviceControl1 = 0x11, + DeviceControl2 = 0x12, + DeviceControl3 = 0x13, + DeviceControl4 = 0x14, + NegativeAcknowledgement = 0x15, + SynchronousIdle = 0x16, + EndOfTransmitBlock = 0x17, + Cancel = 0x18, + EndOfMedium = 0x19, + Substitute = 0x1a, + Escape = 0x1b, + FileSeparator = 0x1c, + GroupSeparator = 0x1d, + RecordSeparator = 0x1e, + UnitSeparator = 0x1f, + + // Printable characters + Space = 0x20, + ExclamationMark = 0x21, + DoubleQuote = 0x22, + Hash = 0x23, + $ = 0x24, + Percent = 0x25, + Ampersand = 0x26, + SingleQuote = 0x27, + OpenParenthesis = 0x28, + CloseParenthesis = 0x29, + Asterisk = 0x2a, + Plus = 0x2b, + Comma = 0x2c, + Hyphen = 0x2d, + Period = 0x2e, + Slash = 0x2f, + _0 = 0x30, + _1 = 0x31, + _2 = 0x32, + _3 = 0x33, + _4 = 0x34, + _5 = 0x35, + _6 = 0x36, + _7 = 0x37, + _8 = 0x38, + _9 = 0x39, + Colon = 0x3a, + Semicolon = 0x3b, + Less = 0x3c, + Equal = 0x3d, + Greater = 0x3e, + QuestionMark = 0x3f, + At = 0x40, + A = 0x41, + B = 0x42, + C = 0x43, + D = 0x44, + E = 0x45, + F = 0x46, + G = 0x47, + H = 0x48, + I = 0x49, + J = 0x4a, + K = 0x4b, + L = 0x4c, + M = 0x4d, + N = 0x4e, + O = 0x4f, + P = 0x50, + Q = 0x51, + R = 0x52, + S = 0x53, + T = 0x54, + U = 0x55, + V = 0x56, + W = 0x57, + X = 0x58, + Y = 0x59, + Z = 0x5a, + OpenBracket = 0x5b, + Backslash = 0x5c, + CloseBracket = 0x5d, + Caret = 0x5e, + Underscore = 0x5f, + Backtick = 0x60, + a = 0x61, + b = 0x62, + c = 0x63, + d = 0x64, + e = 0x65, + f = 0x66, + g = 0x67, + h = 0x68, + i = 0x69, + j = 0x6a, + k = 0x6b, + l = 0x6c, + m = 0x6d, + n = 0x6e, + o = 0x6f, + p = 0x70, + q = 0x71, + r = 0x72, + s = 0x73, + t = 0x74, + u = 0x75, + v = 0x76, + w = 0x77, + x = 0x78, + y = 0x79, + z = 0x7a, + OpenBrace = 0x7b, + Bar = 0x7c, + CloseBrace = 0x7d, + Tilde = 0x7e, + Delete = 0x7f, + + // Other space characters + NonBreakingSpace = 0xa0, + EnQuad = 0x2000, + EmQuad = 0x2001, + EnSpace = 0x2002, + EmSpace = 0x2003, + ThreePerEmSpace = 0x2004, + FourPerEmSpace = 0x2005, + SixPerEmSpace = 0x2006, + FigureSpace = 0x2007, + PunctuationSpace = 0x2008, + ThinSpace = 0x2009, + HairSpace = 0x200a, + ZeroWidthSpace = 0x200b, + NarrowNoBreakSpace = 0x202f, + IdeographicSpace = 0x3000, + MathematicalSpace = 0x205f, + Ogham = 0x1680, +} diff --git a/packages/pyright-internal/src/common/pathUtils.ts b/packages/pyright-internal/src/common/pathUtils.ts index ceca078f0..a88f762b5 100644 --- a/packages/pyright-internal/src/common/pathUtils.ts +++ b/packages/pyright-internal/src/common/pathUtils.ts @@ -9,9 +9,9 @@ import type { Dirent } from 'fs'; import * as path from 'path'; -import Char from 'typescript-char'; import { URI } from 'vscode-uri'; +import { Char } from './charCodes'; import { some } from './collectionUtils'; import { compareValues, Comparison, GetCanonicalFileName, identity } from './core'; import { randomBytesHex } from './crypto'; diff --git a/packages/pyright-internal/src/parser/characterStream.ts b/packages/pyright-internal/src/parser/characterStream.ts index a232da49b..a7065bffd 100644 --- a/packages/pyright-internal/src/parser/characterStream.ts +++ b/packages/pyright-internal/src/parser/characterStream.ts @@ -10,8 +10,7 @@ * Class that represents a stream of characters. */ -import Char from 'typescript-char'; - +import { Char } from '../common/charCodes'; import { isLineBreak, isWhiteSpace } from './characters'; export class CharacterStream { diff --git a/packages/pyright-internal/src/parser/characters.ts b/packages/pyright-internal/src/parser/characters.ts index a7dd3c13e..b8edc8930 100644 --- a/packages/pyright-internal/src/parser/characters.ts +++ b/packages/pyright-internal/src/parser/characters.ts @@ -10,8 +10,7 @@ * Utility routines used by tokenizer. */ -import Char from 'typescript-char'; - +import { Char } from '../common/charCodes'; import * as unicode from './unicode'; enum CharCategory { diff --git a/packages/pyright-internal/src/parser/stringTokenUtils.ts b/packages/pyright-internal/src/parser/stringTokenUtils.ts index 8d345e295..bbe8073e9 100644 --- a/packages/pyright-internal/src/parser/stringTokenUtils.ts +++ b/packages/pyright-internal/src/parser/stringTokenUtils.ts @@ -8,8 +8,7 @@ * literal values. */ -import Char from 'typescript-char'; - +import { Char } from '../common/charCodes'; import { FStringMiddleToken, StringToken, StringTokenFlags } from './tokenizerTypes'; export const enum UnescapeErrorType { diff --git a/packages/pyright-internal/src/parser/tokenizer.ts b/packages/pyright-internal/src/parser/tokenizer.ts index 59e60983a..f54422c8e 100644 --- a/packages/pyright-internal/src/parser/tokenizer.ts +++ b/packages/pyright-internal/src/parser/tokenizer.ts @@ -10,10 +10,9 @@ * Converts a Python program text stream into a stream of tokens. */ -import Char from 'typescript-char'; - import { isWhitespace } from '../analyzer/parseTreeUtils'; import { IPythonMode } from '../analyzer/sourceFile'; +import { Char } from '../common/charCodes'; import { TextRange } from '../common/textRange'; import { TextRangeCollection } from '../common/textRangeCollection'; import { diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index a005bd1d1..165e26b1a 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -8,7 +8,6 @@ */ import assert from 'assert'; import * as path from 'path'; -import Char from 'typescript-char'; import { CancellationToken, CodeAction, @@ -31,6 +30,7 @@ import { findNodeByOffset } from '../../../analyzer/parseTreeUtils'; import { Program } from '../../../analyzer/program'; import { AnalyzerService } from '../../../analyzer/service'; import { CommandResult } from '../../../commands/commandResult'; +import { Char } from '../../../common/charCodes'; import { ConfigOptions, SignatureDisplayType } from '../../../common/configOptions'; import { ConsoleInterface, NullConsole } from '../../../common/console'; import { Comparison, isNumber, isString, toBoolean } from '../../../common/core'; @@ -50,6 +50,7 @@ import { import { convertOffsetToPosition, convertPositionToOffset } from '../../../common/positionUtils'; import { DocumentRange, Position, Range as PositionRange, TextRange, rangesAreEqual } from '../../../common/textRange'; import { TextRangeCollection } from '../../../common/textRangeCollection'; +import { convertToWorkspaceEdit } from '../../../common/workspaceEditUtils'; import { LanguageServerInterface } from '../../../languageServerBase'; import { CallHierarchyProvider } from '../../../languageService/callHierarchyProvider'; import { CompletionOptions, CompletionProvider } from '../../../languageService/completionProvider'; @@ -62,6 +63,7 @@ import { DocumentHighlightProvider } from '../../../languageService/documentHigh import { HoverProvider } from '../../../languageService/hoverProvider'; import { convertDocumentRangesToLocation } from '../../../languageService/navigationUtils'; import { ReferencesProvider } from '../../../languageService/referencesProvider'; +import { RenameProvider } from '../../../languageService/renameProvider'; import { SignatureHelpProvider } from '../../../languageService/signatureHelpProvider'; import { ParseNode } from '../../../parser/parseNodes'; import { ParseResults } from '../../../parser/parser'; @@ -92,8 +94,6 @@ import { import { TestFeatures, TestLanguageService } from './testLanguageService'; import { createVfsInfoFromFourSlashData, getMarkerByName, getMarkerName, getMarkerNames } from './testStateUtils'; import { verifyWorkspaceEdit } from './workspaceEditTestUtils'; -import { RenameProvider } from '../../../languageService/renameProvider'; -import { convertToWorkspaceEdit } from '../../../common/workspaceEditUtils'; export interface TextChange { span: TextRange; diff --git a/packages/pyright/webpack.config.js b/packages/pyright/webpack.config.js index f4354f064..da6274e4d 100644 --- a/packages/pyright/webpack.config.js +++ b/packages/pyright/webpack.config.js @@ -46,9 +46,9 @@ module.exports = (_, { mode }) => { rules: [ { test: /\.ts$/, - loader: 'ts-loader', + loader: 'esbuild-loader', options: { - configFile: 'tsconfig.json', + tsconfig: 'tsconfig.json', }, }, { diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 73cec0f0c..c9597bc72 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -20,6 +20,7 @@ "@types/vscode": "~1.78.0", "copy-webpack-plugin": "^10.2.4", "detect-indent": "^6.1.0", + "esbuild-loader": "^3.0.1", "shx": "^0.3.4", "ts-loader": "^9.4.2", "typescript": "~4.4.4", @@ -40,6 +41,358 @@ "node": ">=10.0.0" } }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -540,6 +893,15 @@ } ] }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -1007,6 +1369,15 @@ "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", "dev": true }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -1056,6 +1427,71 @@ "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/esbuild-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-3.0.1.tgz", + "integrity": "sha512-aZfGybqTeuyCd4AsVvWOOfkhIuN+wfZFjMyh3gyQEU1Uvsl8L6vye9HqP93iRa0iTA+6Jclap514PJIC3cLnMA==", + "dev": true, + "dependencies": { + "esbuild": "^0.17.6", + "get-tsconfig": "^4.4.0", + "loader-utils": "^2.0.4", + "webpack-sources": "^1.4.3" + }, + "funding": { + "url": "https://github.com/esbuild-kit/esbuild-loader?sponsor=1" + }, + "peerDependencies": { + "webpack": "^4.40.0 || ^5.0.0" + } + }, + "node_modules/esbuild-loader/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -1272,6 +1708,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", + "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -1619,6 +2067,18 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/keytar": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", @@ -1666,6 +2126,20 @@ "node": ">=6.11.5" } }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -2278,6 +2752,15 @@ "node": ">=8" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -2543,6 +3026,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -3389,6 +3878,160 @@ "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", "dev": true }, + "@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "dev": true, + "optional": true + }, "@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -3805,6 +4448,12 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -4146,6 +4795,12 @@ "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", "dev": true }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -4183,6 +4838,60 @@ "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, + "esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "esbuild-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-3.0.1.tgz", + "integrity": "sha512-aZfGybqTeuyCd4AsVvWOOfkhIuN+wfZFjMyh3gyQEU1Uvsl8L6vye9HqP93iRa0iTA+6Jclap514PJIC3cLnMA==", + "dev": true, + "requires": { + "esbuild": "^0.17.6", + "get-tsconfig": "^4.4.0", + "loader-utils": "^2.0.4", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -4364,6 +5073,15 @@ "has-symbols": "^1.0.1" } }, + "get-tsconfig": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", + "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, "github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -4617,6 +5335,12 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, "keytar": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", @@ -4654,6 +5378,17 @@ "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -5126,6 +5861,12 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -5282,6 +6023,12 @@ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 83f234b44..2257f2656 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -961,6 +961,7 @@ "@types/vscode": "~1.78.0", "copy-webpack-plugin": "^10.2.4", "detect-indent": "^6.1.0", + "esbuild-loader": "^3.0.1", "shx": "^0.3.4", "ts-loader": "^9.4.2", "typescript": "~4.4.4", diff --git a/packages/vscode-pyright/webpack.config.js b/packages/vscode-pyright/webpack.config.js index 5900873df..4c2607f06 100644 --- a/packages/vscode-pyright/webpack.config.js +++ b/packages/vscode-pyright/webpack.config.js @@ -48,9 +48,9 @@ module.exports = (_, { mode }) => { rules: [ { test: /\.ts$/, - loader: 'ts-loader', + loader: 'esbuild-loader', options: { - configFile: 'tsconfig.json', + tsconfig: 'tsconfig.json', }, }, ], From 73165c50c273daf302dc0a9e91a26fb6ba9f2f4a Mon Sep 17 00:00:00 2001 From: Heejae Chang <1333179+heejaechang@users.noreply.github.com> Date: Wed, 7 Jun 2023 15:03:40 -0700 Subject: [PATCH 263/525] Push pylance changes to pyright (#5248) * Push pylance changes to pyright * Update packages/pyright-internal/src/backgroundThreadBase.ts Co-authored-by: Erik De Bonte --------- Co-authored-by: Erik De Bonte --- .vscode/tasks.json | 22 +- package.json | 2 +- packages/pyright-internal/package-lock.json | 3612 +++++++++++------ packages/pyright-internal/package.json | 2 +- .../pyright-internal/src/analyzer/program.ts | 23 +- .../src/backgroundAnalysisBase.ts | 4 +- .../src/backgroundThreadBase.ts | 49 +- .../pyright-internal/src/common/fileSystem.ts | 4 +- .../src/common/realFileSystem.ts | 4 + .../src/languageServerBase.ts | 7 +- .../src/languageService/definitionProvider.ts | 177 +- .../src/languageService/hoverProvider.ts | 141 +- .../pyright-internal/src/pyrightFileSystem.ts | 4 + .../src/readonlyAugmentedFileSystem.ts | 4 + .../harness/fourslash/testLanguageService.ts | 5 + .../src/tests/harness/vfs/filesystem.ts | 40 +- .../pyright-internal/src/workspaceFactory.ts | 18 +- packages/pyright/package-lock.json | 2220 +++++----- packages/pyright/package.json | 10 +- packages/pyright/webpack.config.js | 2 +- packages/vscode-pyright/package-lock.json | 3052 +++++++------- packages/vscode-pyright/package.json | 10 +- 22 files changed, 5118 insertions(+), 4294 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 8edf60f4a..1f88582c6 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -18,17 +18,17 @@ "fileLocation": "absolute", "pattern": [ { - "regexp": "\\[tsl\\] (ERROR|WARNING) in (.*)?\\((\\d+),(\\d+)\\)", - "severity": 1, - "file": 2, - "line": 3, - "column": 4 - }, - { - "regexp": "\\s*TS(\\d+):\\s*(.*)$", - "code": 1, - "message": 2 - } + "regexp": "\\[tsl\\] (ERROR|WARNING) in (.*)?\\((\\d+),(\\d+)\\)", + "severity": 1, + "file": 2, + "line": 3, + "column": 4 + }, + { + "regexp": "\\s*TS(\\d+):\\s*(.*)$", + "code": 1, + "message": 2 + } ], "background": { "activeOnStart": true, diff --git a/package.json b/package.json index 1554af7a1..539814cee 100644 --- a/package.json +++ b/package.json @@ -39,4 +39,4 @@ "typescript": "~4.4.4", "yargs": "^16.2.0" } -} +} \ No newline at end of file diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index c3c68ffb1..ac7be7dad 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -38,59 +38,59 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.0.2.tgz", - "integrity": "sha512-sE8Gx+qSDMLoJvb3QarJJlDQK7SSY4rK3hxp4XsiANeFOmjU46ZI7Y9adAQRJrmbz8zbtZkp3mJTT+rGxtF0XA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.2.2", - "sourcemap-codec": "1.4.8" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz", + "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.0.tgz", - "integrity": "sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.0.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.0", - "@babel/parser": "^7.17.0", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0", + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz", + "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.22.0", + "@babel/helper-compilation-targets": "^7.22.1", + "@babel/helper-module-transforms": "^7.22.1", + "@babel/helpers": "^7.22.0", + "@babel/parser": "^7.22.0", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.2", "semver": "^6.3.0" }, "engines": { @@ -101,38 +101,40 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz", + "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.22.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz", + "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.22.0", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -142,159 +144,176 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" + "yallist": "^3.0.2" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz", + "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==", "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.21.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz", + "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.21.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.0.tgz", - "integrity": "sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==", + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz", + "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0" + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -340,13 +359,22 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -365,9 +393,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", + "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -524,12 +552,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", - "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -539,33 +567,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", + "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.21.4", + "@babel/parser": "^7.21.9", + "@babel/types": "^7.21.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.0", - "@babel/types": "^7.17.0", + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.4.tgz", + "integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.22.3", + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.22.4", + "@babel/types": "^7.22.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -573,13 +601,23 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz", + "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -613,6 +651,89 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -846,6 +967,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/transform/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", @@ -862,29 +995,64 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", - "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, "engines": { "node": ">=6.0.0" } }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.2.6.tgz", - "integrity": "sha512-rVJf5dSMEBxnDEwtAT5x8+p6tZ+xU6Ocm+cR1MYL2gMsRi4MMzVf9Pvq6JaxIsEeKAyYmo2U+yPQN4QfdTfFnA==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "sourcemap-codec": "1.4.8" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -899,23 +1067,14 @@ "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -941,12 +1100,12 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", "dev": true, "dependencies": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "node_modules/@types/command-line-args": { @@ -961,9 +1120,9 @@ "integrity": "sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==" }, "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "dependencies": { "@types/node": "*" @@ -1003,6 +1162,38 @@ "pretty-format": "^27.0.0" } }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/@types/node": { "version": "17.0.45", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", @@ -1010,9 +1201,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", - "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true }, "node_modules/@types/stack-utils": { @@ -1028,18 +1219,18 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, "node_modules/@yarnpkg/fslib": { @@ -1054,6 +1245,11 @@ "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" } }, + "node_modules/@yarnpkg/fslib/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/@yarnpkg/libzip": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", @@ -1066,6 +1262,11 @@ "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" } }, + "node_modules/@yarnpkg/libzip/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -1073,9 +1274,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1142,6 +1343,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1166,9 +1379,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1177,15 +1390,6 @@ "node": ">= 8" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/array-back": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", @@ -1332,26 +1536,35 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/bs-logger": { @@ -1399,14 +1612,24 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001307", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", - "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", + "version": "1.0.30001495", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", + "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, "node_modules/chalk": { "version": "4.1.2", @@ -1458,15 +1681,20 @@ "fsevents": "~2.3.2" } }, - "node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, @@ -1542,16 +1770,13 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -1605,10 +1830,45 @@ "node": ">=10" } }, + "node_modules/data-urls/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1623,9 +1883,9 @@ } }, "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, "node_modules/dedent": { @@ -1641,9 +1901,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1698,9 +1958,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.64", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz", - "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", + "version": "1.4.421", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.421.tgz", + "integrity": "sha512-wZOyn3s/aQOtLGAwXMZfteQPN68kgls2wDAnYOA8kCjBvKVrW5RwmWVspxJYTqrcN7Y263XJVsC66VCIGzDO3g==", "dev": true }, "node_modules/emittery": { @@ -1739,15 +1999,6 @@ "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/escodegen": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", @@ -1770,6 +2021,66 @@ "source-map": "~0.6.1" } }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -1783,15 +2094,6 @@ "node": ">=4" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1802,9 +2104,9 @@ } }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -1861,9 +2163,9 @@ "dev": true }, "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { "bser": "2.1.1" @@ -1891,37 +2193,10 @@ "node": ">=4.0.0" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -1982,14 +2257,14 @@ } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -2000,30 +2275,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/has": { @@ -2064,20 +2319,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -2134,7 +2375,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" @@ -2143,7 +2384,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2181,9 +2422,9 @@ } }, "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -2195,7 +2436,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { "node": ">=0.10.0" } @@ -2244,21 +2485,18 @@ "dev": true }, "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "node_modules/isexe": { @@ -2277,9 +2515,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -2292,6 +2530,15 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", @@ -2321,9 +2568,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -2402,6 +2649,38 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/jest-cli": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", @@ -2479,34 +2758,113 @@ } } }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "node_modules/jest-config/node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-each": { + "node_modules/jest-config/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", @@ -2522,6 +2880,38 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/jest-environment-jsdom": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", @@ -2620,6 +3010,38 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/jest-junit": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz", @@ -2648,6 +3070,38 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/jest-matcher-utils": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", @@ -2663,6 +3117,38 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", @@ -2683,6 +3169,38 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/jest-mock": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", @@ -2697,9 +3215,9 @@ } }, "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "engines": { "node": ">=6" @@ -2868,21 +3386,38 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" + "engines": { + "node": ">=10" }, - "bin": { - "semver": "bin/semver.js" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -2900,6 +3435,21 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-validate": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", @@ -2917,6 +3467,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -2929,6 +3491,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "node_modules/jest-watcher": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", @@ -2982,63 +3564,122 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "punycode": "^2.1.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } } }, "node_modules/jsesc": { @@ -3076,15 +3717,6 @@ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -3093,37 +3725,12 @@ "node": ">=6" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -3133,26 +3740,14 @@ "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -3168,6 +3763,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -3190,13 +3794,13 @@ "dev": true }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" @@ -3244,10 +3848,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp": { "version": "1.0.4", @@ -3280,9 +3887,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", "dev": true }, "node_modules/normalize-path": { @@ -3306,15 +3913,15 @@ } }, "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz", + "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", "dev": true }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } @@ -3334,50 +3941,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -3423,7 +3986,7 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } @@ -3481,39 +4044,56 @@ "node": ">=8" } }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "p-locate": "^4.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/prompts": { @@ -3529,25 +4109,34 @@ "node": ">= 6" } }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, "node_modules/readdirp": { @@ -3564,7 +4153,7 @@ "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { "resolve": "^1.1.6" @@ -3582,13 +4171,19 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -3611,7 +4206,7 @@ "node": ">=8" } }, - "node_modules/resolve-from": { + "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -3621,9 +4216,9 @@ } }, "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", "dev": true, "engines": { "node": ">=10" @@ -3643,12 +4238,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -3667,15 +4256,33 @@ "node": ">=10" } }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3768,22 +4375,16 @@ "source-map": "^0.6.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" @@ -3882,9 +4483,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "dependencies": { "has-flag": "^4.0.0", @@ -3943,9 +4544,9 @@ } }, "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true }, "node_modules/tmp": { @@ -3968,7 +4569,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { "node": ">=4" @@ -3986,29 +4587,27 @@ } }, "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" } }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, "engines": { - "node": ">=8" + "node": ">= 4.0.0" } }, "node_modules/ts-jest": { @@ -4054,38 +4653,6 @@ } } }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -4095,18 +4662,6 @@ "node": ">=4" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -4137,13 +4692,44 @@ "node": ">=8" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, - "engines": { - "node": ">= 4.0.0" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, "node_modules/uuid": { @@ -4225,6 +4811,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, "dependencies": { "browser-process-hrtime": "^1.0.0" @@ -4251,15 +4838,6 @@ "makeerror": "1.0.12" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, "node_modules/whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", @@ -4275,20 +4853,6 @@ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4333,24 +4897,12 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "engines": { "node": ">=8.3.0" @@ -4371,7 +4923,7 @@ "node_modules/xml": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, "node_modules/xml-name-validator": { @@ -4420,9 +4972,9 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, "engines": { "node": ">=10" @@ -4431,201 +4983,219 @@ }, "dependencies": { "@ampproject/remapping": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.0.2.tgz", - "integrity": "sha512-sE8Gx+qSDMLoJvb3QarJJlDQK7SSY4rK3hxp4XsiANeFOmjU46ZI7Y9adAQRJrmbz8zbtZkp3mJTT+rGxtF0XA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.2.2", - "sourcemap-codec": "1.4.8" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", "dev": true, "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz", + "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==", "dev": true }, "@babel/core": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.0.tgz", - "integrity": "sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.0.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.0", - "@babel/parser": "^7.17.0", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0", + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz", + "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.22.0", + "@babel/helper-compilation-targets": "^7.22.1", + "@babel/helper-module-transforms": "^7.22.1", + "@babel/helpers": "^7.22.0", + "@babel/parser": "^7.22.0", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.2", "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "@babel/generator": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz", + "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==", "dev": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/types": "^7.22.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz", + "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.22.0", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz", + "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==", + "dev": true }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.21.4" } }, "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.22.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz", + "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.0" } }, "@babel/helper-plugin-utils": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", "dev": true }, "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.21.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", "dev": true }, "@babel/helpers": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.0.tgz", - "integrity": "sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==", + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz", + "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0" + "@babel/template": "^7.21.9", + "@babel/traverse": "^7.22.1", + "@babel/types": "^7.22.3" } }, "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -4662,13 +5232,19 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "supports-color": { @@ -4683,9 +5259,9 @@ } }, "@babel/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", + "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -4797,50 +5373,59 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", - "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.17.12" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", + "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.21.4", + "@babel/parser": "^7.21.9", + "@babel/types": "^7.21.5" } }, "@babel/traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.0", - "@babel/types": "^7.17.0", + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.4.tgz", + "integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.22.3", + "@babel/helper-environment-visitor": "^7.22.1", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.22.4", + "@babel/types": "^7.22.4", "debug": "^4.1.0", "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz", + "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -4866,6 +5451,70 @@ "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "@istanbuljs/schema": { @@ -5050,6 +5699,20 @@ "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + } } }, "@jest/types": { @@ -5065,26 +5728,57 @@ "chalk": "^4.0.0" } }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/resolve-uri": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", - "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.2.6.tgz", - "integrity": "sha512-rVJf5dSMEBxnDEwtAT5x8+p6tZ+xU6Ocm+cR1MYL2gMsRi4MMzVf9Pvq6JaxIsEeKAyYmo2U+yPQN4QfdTfFnA==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "sourcemap-codec": "1.4.8" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + } } }, "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -5099,20 +5793,14 @@ "@sinonjs/commons": "^1.7.0" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -5138,12 +5826,12 @@ } }, "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "@types/command-line-args": { @@ -5158,9 +5846,9 @@ "integrity": "sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==" }, "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "requires": { "@types/node": "*" @@ -5198,6 +5886,31 @@ "requires": { "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "@types/node": { @@ -5207,9 +5920,9 @@ "dev": true }, "@types/prettier": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", - "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true }, "@types/stack-utils": { @@ -5225,18 +5938,18 @@ "dev": true }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", "dev": true, "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, "@yarnpkg/fslib": { @@ -5246,6 +5959,13 @@ "requires": { "@yarnpkg/libzip": "^2.3.0", "tslib": "^1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "@yarnpkg/libzip": { @@ -5255,6 +5975,13 @@ "requires": { "@types/emscripten": "^1.39.6", "tslib": "^1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "abab": { @@ -5264,9 +5991,9 @@ "dev": true }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-globals": { @@ -5309,6 +6036,14 @@ "dev": true, "requires": { "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } } }, "ansi-regex": { @@ -5326,23 +6061,14 @@ } }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "array-back": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", @@ -5459,16 +6185,15 @@ "dev": true }, "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" } }, "bs-logger": { @@ -5507,9 +6232,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001307", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", - "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", + "version": "1.0.30001495", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", + "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", "dev": true }, "chalk": { @@ -5540,14 +6265,18 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -5613,16 +6342,13 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "cross-spawn": { "version": "7.0.3", @@ -5667,21 +6393,49 @@ "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.0.0" + }, + "dependencies": { + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } } }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" } }, "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, "dedent": { @@ -5697,9 +6451,9 @@ "dev": true }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, "delayed-stream": { @@ -5738,9 +6492,9 @@ } }, "electron-to-chromium": { - "version": "1.4.64", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz", - "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", + "version": "1.4.421", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.421.tgz", + "integrity": "sha512-wZOyn3s/aQOtLGAwXMZfteQPN68kgls2wDAnYOA8kCjBvKVrW5RwmWVspxJYTqrcN7Y263XJVsC66VCIGzDO3g==", "dev": true }, "emittery": { @@ -5770,12 +6524,6 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, "escodegen": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", @@ -5787,6 +6535,53 @@ "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } } }, "esprima": { @@ -5795,12 +6590,6 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -5808,9 +6597,9 @@ "dev": true }, "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -5855,9 +6644,9 @@ "dev": true }, "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "requires": { "bser": "2.1.1" @@ -5879,31 +6668,10 @@ "array-back": "^3.0.1" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -5942,36 +6710,22 @@ "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "has": { @@ -6003,17 +6757,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -6052,13 +6795,13 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -6090,9 +6833,9 @@ } }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -6101,7 +6844,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -6135,15 +6878,15 @@ "dev": true }, "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "isexe": { @@ -6159,9 +6902,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -6169,6 +6912,14 @@ "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "istanbul-lib-report": { @@ -6194,9 +6945,9 @@ } }, "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -6250,6 +7001,31 @@ "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "jest-cli": { @@ -6302,6 +7078,37 @@ "pretty-format": "^27.5.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "jest-diff": { @@ -6314,6 +7121,31 @@ "diff-sequences": "^27.5.1", "jest-get-type": "^27.5.1", "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "jest-docblock": { @@ -6336,6 +7168,31 @@ "jest-get-type": "^27.5.1", "jest-util": "^27.5.1", "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "jest-environment-jsdom": { @@ -6417,6 +7274,31 @@ "jest-util": "^27.5.1", "pretty-format": "^27.5.1", "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "jest-junit": { @@ -6439,6 +7321,31 @@ "requires": { "jest-get-type": "^27.5.1", "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "jest-matcher-utils": { @@ -6451,6 +7358,31 @@ "jest-diff": "^27.5.1", "jest-get-type": "^27.5.1", "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "jest-message-util": { @@ -6468,6 +7400,31 @@ "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } } }, "jest-mock": { @@ -6481,9 +7438,9 @@ } }, "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "requires": {} }, @@ -6621,14 +7578,28 @@ "semver": "^7.3.2" }, "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true } } }, @@ -6644,6 +7615,14 @@ "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" + }, + "dependencies": { + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + } } }, "jest-validate": { @@ -6660,11 +7639,34 @@ "pretty-format": "^27.5.1" }, "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true } } }, @@ -6707,19 +7709,9 @@ }, "js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "jsdom": { "version": "16.7.0", @@ -6754,6 +7746,62 @@ "whatwg-url": "^8.5.0", "ws": "^7.4.6", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } } }, "jsesc": { @@ -6779,42 +7827,17 @@ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -6824,23 +7847,14 @@ "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6848,6 +7862,14 @@ "dev": true, "requires": { "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "make-error": { @@ -6872,13 +7894,13 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime-db": { @@ -6911,9 +7933,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "mkdirp": { @@ -6941,9 +7963,9 @@ "dev": true }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", "dev": true }, "normalize-path": { @@ -6961,15 +7983,15 @@ } }, "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz", + "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } @@ -6983,38 +8005,6 @@ "mimic-fn": "^2.1.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -7048,7 +8038,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", @@ -7086,30 +8076,44 @@ "dev": true, "requires": { "find-up": "^4.0.0" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" }, "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } } } }, @@ -7121,24 +8125,32 @@ "requires": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" + }, + "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + } } }, "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, "readdirp": { @@ -7152,7 +8164,7 @@ "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "requires": { "resolve": "^1.1.6" @@ -7164,13 +8176,19 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -7182,18 +8200,20 @@ "dev": true, "requires": { "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", "dev": true }, "rimraf": { @@ -7204,12 +8224,6 @@ "glob": "^7.1.3" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -7226,10 +8240,24 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } }, "shebang-command": { "version": "2.0.0", @@ -7299,22 +8327,16 @@ "source-map": "^0.6.0" } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -7385,9 +8407,9 @@ } }, "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -7428,9 +8450,9 @@ } }, "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true }, "tmp": { @@ -7450,7 +8472,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-regex-range": { @@ -7462,23 +8484,23 @@ } }, "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + } } }, "ts-jest": { @@ -7495,31 +8517,6 @@ "make-error": "1.x", "semver": "7.x", "yargs-parser": "20.x" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" } }, "type-detect": { @@ -7528,12 +8525,6 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -7554,11 +8545,25 @@ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } }, "uuid": { "version": "8.3.2", @@ -7649,12 +8654,6 @@ "makeerror": "1.0.12" } }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, "whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", @@ -7670,17 +8669,6 @@ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7710,31 +8698,19 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "requires": {} }, "xml": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, "xml-name-validator": { @@ -7777,9 +8753,9 @@ } }, "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true } } diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 27d7b84de..f3a31675d 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -42,4 +42,4 @@ "ts-jest": "^27.1.5", "typescript": "~4.4.4" } -} +} \ No newline at end of file diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 546526282..964cc44f8 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -1678,7 +1678,7 @@ export class Program { const implicitPath = nextImplicitImport.sourceFile.getFilePath(); if (implicitSet.has(implicitPath)) { // We've found a cycle. Break out of the loop. - debug.fail(`Found a cycle in implicit imports files for ${implicitPath}`); + debug.fail(`Found a cycle in implicit imports files`); } implicitSet.add(implicitPath); @@ -1891,20 +1891,14 @@ export class Program { return false; } - this._bindFile(fileToCheck); - - if (this._preCheckCallback) { - const parseResults = fileToCheck.sourceFile.getParseResults(); - if (parseResults) { - this._preCheckCallback(parseResults, this._evaluator!); - } - } - if (!this._disableChecker) { // For ipython, make sure we check all its dependent files first since // their results can affect this file's result. let dependentFiles: ParseResults[] | undefined = undefined; if (fileToCheck.sourceFile.getIPythonMode() === IPythonMode.CellDocs) { + // Parse file to get up to date dependency graph. + this._parseFile(fileToCheck); + dependentFiles = []; const importedByFiles = collectImportedByFiles(fileToCheck); for (const file of importedByFiles) { @@ -1930,6 +1924,15 @@ export class Program { } } + this._bindFile(fileToCheck); + + if (this._preCheckCallback) { + const parseResults = fileToCheck.sourceFile.getParseResults(); + if (parseResults) { + this._preCheckCallback(parseResults, this._evaluator!); + } + } + const execEnv = this._configOptions.findExecEnvironment(fileToCheck.sourceFile.getFilePath()); fileToCheck.sourceFile.check( this.configOptions, diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index f998c901e..c22ee3dc2 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -264,8 +264,8 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase protected importResolver: ImportResolver; protected logTracker: LogTracker; - protected constructor() { - super(workerData as InitializationData); + protected constructor(fileSystem?: FileSystem) { + super(workerData as InitializationData, fileSystem); // Stash the base directory into a global variable. const data = workerData as InitializationData; diff --git a/packages/pyright-internal/src/backgroundThreadBase.ts b/packages/pyright-internal/src/backgroundThreadBase.ts index bbc0f4b1c..7632f63a6 100644 --- a/packages/pyright-internal/src/backgroundThreadBase.ts +++ b/packages/pyright-internal/src/backgroundThreadBase.ts @@ -10,23 +10,48 @@ import { MessagePort, parentPort, TransferListItem } from 'worker_threads'; import { OperationCanceledException, setCancellationFolderName } from './common/cancellationUtils'; import { ConfigOptions } from './common/configOptions'; -import { LogLevel } from './common/console'; +import { ConsoleInterface, LogLevel } from './common/console'; import * as debug from './common/debug'; import { FileSystem } from './common/fileSystem'; import { FileSpec } from './common/pathUtils'; import { createFromRealFileSystem } from './common/realFileSystem'; import { PyrightFileSystem } from './pyrightFileSystem'; +export class BackgroundConsole implements ConsoleInterface { + // We always generate logs in the background. For the foreground, + // we'll decide based on user setting whether. + get level() { + return LogLevel.Log; + } + + log(msg: string) { + this.post(LogLevel.Log, msg); + } + info(msg: string) { + this.post(LogLevel.Info, msg); + } + warn(msg: string) { + this.post(LogLevel.Warn, msg); + } + error(msg: string) { + this.post(LogLevel.Error, msg); + } + protected post(level: LogLevel, msg: string) { + parentPort?.postMessage({ requestType: 'log', data: { level: level, message: msg } }); + } +} + export class BackgroundThreadBase { + private _console = new BackgroundConsole(); protected fs: FileSystem; - protected constructor(data: InitializationData) { + protected constructor(data: InitializationData, fileSystem?: FileSystem) { setCancellationFolderName(data.cancellationFolderName); // Stash the base directory into a global variable. (global as any).__rootDirectory = data.rootDirectory; - this.fs = new PyrightFileSystem(createFromRealFileSystem(this.getConsole())); + this.fs = fileSystem ?? new PyrightFileSystem(createFromRealFileSystem(this.getConsole())); } protected log(level: LogLevel, msg: string) { @@ -34,23 +59,7 @@ export class BackgroundThreadBase { } protected getConsole() { - return { - log: (msg: string) => { - this.log(LogLevel.Log, msg); - }, - info: (msg: string) => { - this.log(LogLevel.Info, msg); - }, - warn: (msg: string) => { - this.log(LogLevel.Warn, msg); - }, - error: (msg: string) => { - this.log(LogLevel.Error, msg); - }, - // We always generate logs in the background. For the foreground, - // we'll decide decide based on user setting whether. - level: LogLevel.Log, - }; + return this._console; } protected handleShutdown() { diff --git a/packages/pyright-internal/src/common/fileSystem.ts b/packages/pyright-internal/src/common/fileSystem.ts index 64e6acb17..1285753fa 100644 --- a/packages/pyright-internal/src/common/fileSystem.ts +++ b/packages/pyright-internal/src/common/fileSystem.ts @@ -86,7 +86,10 @@ export interface ReadOnlyFileSystem { export interface FileSystem extends ReadOnlyFileSystem { mkdirSync(path: string, options?: MkDirOptions): void; writeFileSync(path: string, data: string | Buffer, encoding: BufferEncoding | null): void; + unlinkSync(path: string): void; + rmdirSync(path: string): void; + createFileSystemWatcher(paths: string[], listener: FileWatcherEventHandler): FileWatcher; createReadStream(path: string): fs.ReadStream; createWriteStream(path: string): fs.WriteStream; @@ -95,7 +98,6 @@ export interface FileSystem extends ReadOnlyFileSystem { // The directory returned by tmpdir must exist and be the same each time tmpdir is called. tmpdir(): string; tmpfile(options?: TmpfileOptions): string; - dispose(): void; } diff --git a/packages/pyright-internal/src/common/realFileSystem.ts b/packages/pyright-internal/src/common/realFileSystem.ts index 7dd8c7d45..ef6374407 100644 --- a/packages/pyright-internal/src/common/realFileSystem.ts +++ b/packages/pyright-internal/src/common/realFileSystem.ts @@ -288,6 +288,10 @@ class RealFileSystem implements FileSystem { return stat; } + rmdirSync(path: string): void { + yarnFS.rmdirSync(path); + } + unlinkSync(path: string) { yarnFS.unlinkSync(path); } diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 7e296a021..13de26b67 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -173,6 +173,7 @@ export interface LanguageServerInterface { readonly window: WindowInterface; readonly supportAdvancedEdits: boolean; + getWorkspaces(): Promise; getWorkspaceForFile(filePath: string): Promise; getSettings(workspace: Workspace): Promise; createBackgroundAnalysis(serviceId: string): BackgroundAnalysisBase | undefined; @@ -200,7 +201,7 @@ export interface WorkspaceServices { backgroundAnalysis: BackgroundAnalysisBase | undefined; } -interface ClientCapabilities { +export interface ClientCapabilities { hasConfigurationCapability: boolean; hasVisualStudioExtensionsCapability: boolean; hasWorkspaceFoldersCapability: boolean; @@ -376,7 +377,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { // the extension directory. Otherwise the execution of // python can have unintended and surprising results. const moduleDirectory = this.fs.getModulePath(); - if (moduleDirectory) { + if (moduleDirectory && this.fs.existsSync(moduleDirectory)) { this.fs.chdir(moduleDirectory); } @@ -437,7 +438,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return service; } - async test_getWorkspaces() { + async getWorkspaces(): Promise { const workspaces = [...this.workspaceFactory.items()]; for (const workspace of workspaces) { await workspace.isInitialized.promise; diff --git a/packages/pyright-internal/src/languageService/definitionProvider.ts b/packages/pyright-internal/src/languageService/definitionProvider.ts index 2540bd33e..2f3d846fe 100644 --- a/packages/pyright-internal/src/languageService/definitionProvider.ts +++ b/packages/pyright-internal/src/languageService/definitionProvider.ts @@ -34,6 +34,102 @@ export enum DefinitionFilter { PreferStubs = 'preferStubs', } +export function addDeclarationsToDefinitions( + evaluator: TypeEvaluator, + sourceMapper: SourceMapper, + declarations: Declaration[] | undefined, + definitions: DocumentRange[] +) { + if (!declarations) { + return; + } + + declarations.forEach((decl) => { + let resolvedDecl = evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true, { + allowExternallyHiddenAccess: true, + }); + + if (!resolvedDecl || !resolvedDecl.path) { + return; + } + + // If the decl is an unresolved import, skip it. + if (resolvedDecl.type === DeclarationType.Alias && resolvedDecl.isUnresolved) { + return; + } + + // If the resolved decl is still an alias, it means it + // resolved to a module. We need to apply loader actions + // to determine its path. + if ( + resolvedDecl.type === DeclarationType.Alias && + resolvedDecl.symbolName && + resolvedDecl.submoduleFallback && + resolvedDecl.submoduleFallback.path + ) { + resolvedDecl = resolvedDecl.submoduleFallback; + } + + _addIfUnique(definitions, { + path: resolvedDecl.path, + range: resolvedDecl.range, + }); + + if (isFunctionDeclaration(resolvedDecl)) { + // Handle overloaded function case + const functionType = evaluator.getTypeForDeclaration(resolvedDecl)?.type; + if (functionType && isOverloadedFunction(functionType)) { + for (const overloadDecl of functionType.overloads.map((o) => o.details.declaration).filter(isDefined)) { + _addIfUnique(definitions, { + path: overloadDecl.path, + range: overloadDecl.range, + }); + } + } + } + + if (!isStubFile(resolvedDecl.path)) { + return; + } + + if (resolvedDecl.type === DeclarationType.Alias) { + // Add matching source module + sourceMapper + .findModules(resolvedDecl.path) + .map((m) => getFileInfo(m)?.filePath) + .filter(isDefined) + .forEach((f) => _addIfUnique(definitions, _createModuleEntry(f))); + return; + } + + const implDecls = sourceMapper.findDeclarations(resolvedDecl); + for (const implDecl of implDecls) { + if (implDecl && implDecl.path) { + _addIfUnique(definitions, { + path: implDecl.path, + range: implDecl.range, + }); + } + } + }); +} + +export function filterDefinitions(filter: DefinitionFilter, definitions: DocumentRange[]) { + if (filter === DefinitionFilter.All) { + return definitions; + } + + // If go-to-declaration is supported, attempt to only show only pyi files in go-to-declaration + // and none in go-to-definition, unless filtering would produce an empty list. + const preferStubs = filter === DefinitionFilter.PreferStubs; + const wantedFile = (v: DocumentRange) => preferStubs === isStubFile(v.path); + if (definitions.find(wantedFile)) { + return definitions.filter(wantedFile); + } + + return definitions; +} + class DefinitionProviderBase { protected constructor( protected readonly sourceMapper: SourceMapper, @@ -78,88 +174,11 @@ class DefinitionProviderBase { return undefined; } - if (this._filter === DefinitionFilter.All) { - return definitions; - } - - // If go-to-declaration is supported, attempt to only show only pyi files in go-to-declaration - // and none in go-to-definition, unless filtering would produce an empty list. - const preferStubs = this._filter === DefinitionFilter.PreferStubs; - const wantedFile = (v: DocumentRange) => preferStubs === isStubFile(v.path); - if (definitions.find(wantedFile)) { - return definitions.filter(wantedFile); - } - - return definitions; + return filterDefinitions(this._filter, definitions); } protected resolveDeclarations(declarations: Declaration[] | undefined, definitions: DocumentRange[]) { - if (declarations) { - declarations.forEach((decl) => { - let resolvedDecl = this.evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true, { - allowExternallyHiddenAccess: true, - }); - if (resolvedDecl && resolvedDecl.path) { - // If the decl is an unresolved import, skip it. - if (resolvedDecl.type === DeclarationType.Alias && resolvedDecl.isUnresolved) { - return; - } - - // If the resolved decl is still an alias, it means it - // resolved to a module. We need to apply loader actions - // to determine its path. - if ( - resolvedDecl.type === DeclarationType.Alias && - resolvedDecl.symbolName && - resolvedDecl.submoduleFallback && - resolvedDecl.submoduleFallback.path - ) { - resolvedDecl = resolvedDecl.submoduleFallback; - } - - _addIfUnique(definitions, { - path: resolvedDecl.path, - range: resolvedDecl.range, - }); - - if (isFunctionDeclaration(resolvedDecl)) { - // Handle overloaded function case - const functionType = this.evaluator.getTypeForDeclaration(resolvedDecl)?.type; - if (functionType && isOverloadedFunction(functionType)) { - for (const overloadDecl of functionType.overloads - .map((o) => o.details.declaration) - .filter(isDefined)) { - _addIfUnique(definitions, { - path: overloadDecl.path, - range: overloadDecl.range, - }); - } - } - } - - if (isStubFile(resolvedDecl.path)) { - if (resolvedDecl.type === DeclarationType.Alias) { - // Add matching source module - this.sourceMapper - .findModules(resolvedDecl.path) - .map((m) => getFileInfo(m)?.filePath) - .filter(isDefined) - .forEach((f) => _addIfUnique(definitions, _createModuleEntry(f))); - } else { - const implDecls = this.sourceMapper.findDeclarations(resolvedDecl); - for (const implDecl of implDecls) { - if (implDecl && implDecl.path) { - _addIfUnique(definitions, { - path: implDecl.path, - range: implDecl.range, - }); - } - } - } - } - } - }); - } + addDeclarationsToDefinitions(this.evaluator, this.sourceMapper, declarations, definitions); } } diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index 0ee2b32a0..ab5c7c45f 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -46,23 +46,87 @@ import { getTypeForToolTip, } from './tooltipUtils'; +export interface HoverTextPart { + python?: boolean; + text: string; +} + +export interface HoverResults { + parts: HoverTextPart[]; + range: Range; +} + +export function convertHoverResults(hoverResults: HoverResults | null, format: MarkupKind): Hover | null { + if (!hoverResults) { + return null; + } + + const markupString = hoverResults.parts + .map((part) => { + if (part.python) { + if (format === MarkupKind.Markdown) { + return '```python\n' + part.text + '\n```\n'; + } else if (format === MarkupKind.PlainText) { + return part.text + '\n\n'; + } else { + fail(`Unsupported markup type: ${format}`); + } + } + return part.text; + }) + .join('') + .trimEnd(); + + return { + contents: { + kind: format, + value: markupString, + }, + range: hoverResults.range, + }; +} + +export function addDocumentationResultsPart(docString: string | undefined, format: MarkupKind, parts: HoverTextPart[]) { + if (!docString) { + return; + } + + if (format === MarkupKind.Markdown) { + const markDown = convertDocStringToMarkdown(docString); + + if (parts.length > 0 && markDown.length > 0) { + parts.push({ text: '---\n' }); + } + + parts.push({ text: markDown, python: false }); + return; + } + + if (format === MarkupKind.PlainText) { + parts.push({ text: convertDocStringToPlainText(docString), python: false }); + return; + } + + fail(`Unsupported markup type: ${format}`); +} + export class HoverProvider { private readonly _parseResults: ParseResults | undefined; private readonly _sourceMapper: SourceMapper; constructor( - private _program: ProgramView, - private _filePath: string, - private _position: Position, - private _format: MarkupKind, - private _token: CancellationToken + private readonly _program: ProgramView, + private readonly _filePath: string, + private readonly _position: Position, + private readonly _format: MarkupKind, + private readonly _token: CancellationToken ) { this._parseResults = this._program.getParseResults(this._filePath); this._sourceMapper = this._program.getSourceMapper(this._filePath, this._token, /* mapCompiled */ true); } getHover(): Hover | null { - return this._convertHoverResults(this._getHoverResult()); + return convertHoverResults(this._getHoverResult(), this._format); } static getPrimaryDeclaration(declarations: Declaration[]) { @@ -469,30 +533,9 @@ export class HoverProvider { const docString = getDocumentationPartsForTypeAndDecl(this._sourceMapper, type, resolvedDecl, this._evaluator, { name, }); - if (docString) { - this._addDocumentationResultsPart(parts, docString); - return true; - } - - return false; - } - - private _addDocumentationResultsPart(parts: HoverTextPart[], docString?: string) { - if (docString) { - if (this._format === MarkupKind.Markdown) { - const markDown = convertDocStringToMarkdown(docString); - - if (parts.length > 0 && markDown.length > 0) { - parts.push({ text: '---\n' }); - } - this._addResultsPart(parts, markDown); - } else if (this._format === MarkupKind.PlainText) { - this._addResultsPart(parts, convertDocStringToPlainText(docString)); - } else { - fail(`Unsupported markup type: ${this._format}`); - } - } + addDocumentationResultsPart(docString, this._format, parts); + return !!docString; } private _addResultsPart(parts: HoverTextPart[], text: string, python = false) { @@ -501,44 +544,4 @@ export class HoverProvider { text, }); } - - private _convertHoverResults(hoverResults: HoverResults | null): Hover | null { - if (!hoverResults) { - return null; - } - - const markupString = hoverResults.parts - .map((part) => { - if (part.python) { - if (this._format === MarkupKind.Markdown) { - return '```python\n' + part.text + '\n```\n'; - } else if (this._format === MarkupKind.PlainText) { - return part.text + '\n\n'; - } else { - fail(`Unsupported markup type: ${this._format}`); - } - } - return part.text; - }) - .join('') - .trimEnd(); - - return { - contents: { - kind: this._format, - value: markupString, - }, - range: hoverResults.range, - }; - } -} - -interface HoverTextPart { - python?: boolean; - text: string; -} - -interface HoverResults { - parts: HoverTextPart[]; - range: Range; } diff --git a/packages/pyright-internal/src/pyrightFileSystem.ts b/packages/pyright-internal/src/pyrightFileSystem.ts index baab66a01..a1cd69a46 100644 --- a/packages/pyright-internal/src/pyrightFileSystem.ts +++ b/packages/pyright-internal/src/pyrightFileSystem.ts @@ -77,6 +77,10 @@ export class PyrightFileSystem this.realFS.writeFileSync(this.getOriginalPath(path), data, encoding); } + override rmdirSync(path: string): void { + this.realFS.rmdirSync(this.getOriginalPath(path)); + } + override unlinkSync(path: string): void { this.realFS.unlinkSync(this.getOriginalPath(path)); } diff --git a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts index 528194f16..2b20d8b12 100644 --- a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts +++ b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts @@ -95,6 +95,10 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { return this.realFS.statSync(this.getOriginalPath(path)); } + rmdirSync(path: string): void { + throw new Error('Operation is not allowed.'); + } + unlinkSync(path: string): void { throw new Error('Operation is not allowed.'); } diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts b/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts index 8b9fd2ad4..081fe1d63 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts @@ -108,10 +108,15 @@ export class TestLanguageService implements LanguageServerInterface { searchPathsToWatch: [], }; } + decodeTextDocumentUri(uriString: string): string { return this._uriParser.decodeTextDocumentUri(uriString); } + getWorkspaces(): Promise { + return Promise.resolve([this._workspace, this._defaultWorkspace]); + } + getWorkspaceForFile(filePath: string): Promise { if (filePath.startsWith(this._workspace.rootPath)) { return Promise.resolve(this._workspace); diff --git a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts index 86932cb7c..aac36d0de 100644 --- a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts +++ b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts @@ -14,6 +14,7 @@ import { FileSystem, FileWatcher, FileWatcherEventHandler, + FileWatcherEventType, MkDirOptions, TmpfileOptions, } from '../../../common/fileSystem'; @@ -31,6 +32,25 @@ export interface DiffOptions { includeChangedFileWithSameContent?: boolean; } +export class TestFileSystemWatcher implements FileWatcher { + private _paths: string[] = []; + constructor(paths: string[], private _listener: FileWatcherEventHandler) { + this._paths = paths.map((p) => pathUtil.normalizePath(p)); + } + close() { + // Do nothing. + } + + fireFileChange(path: string, eventType: FileWatcherEventType): boolean { + const normalized = pathUtil.normalizePath(path); + if (this._paths.some((p) => normalized.startsWith(p))) { + this._listener(eventType, normalized); + return true; + } + return false; + } +} + /** * Represents a virtual POSIX-like file system. */ @@ -53,8 +73,12 @@ export class TestFileSystem implements FileSystem { private _shadowRoot: TestFileSystem | undefined; private _dirStack: string[] | undefined; private _tmpfileCounter = 0; + private _watchers: TestFileSystemWatcher[] = []; + private _id: number; + private static _nextId = 1; constructor(ignoreCase: boolean, options: FileSystemOptions = {}) { + this._id = TestFileSystem._nextId++; const { time = -1, files, meta } = options; this.ignoreCase = ignoreCase; this.stringComparer = this.ignoreCase @@ -315,11 +339,17 @@ export class TestFileSystem implements FileSystem { } createFileSystemWatcher(paths: string[], listener: FileWatcherEventHandler): FileWatcher { - return { - close: () => { - /* left empty */ - }, - }; + const watcher = new TestFileSystemWatcher(paths, listener); + this._watchers.push(watcher); + return watcher; + } + + fireFileWatcherEvent(path: string, event: FileWatcherEventType) { + for (const watcher of this._watchers) { + if (watcher.fireFileChange(path, event)) { + break; + } + } } getModulePath(): string { diff --git a/packages/pyright-internal/src/workspaceFactory.ts b/packages/pyright-internal/src/workspaceFactory.ts index 81f3609f6..4d526d31b 100644 --- a/packages/pyright-internal/src/workspaceFactory.ts +++ b/packages/pyright-internal/src/workspaceFactory.ts @@ -296,11 +296,26 @@ export class WorkspaceFactory { return workspace; } + getWorkspaceForFileSync(filePath: string, pythonPath: string | undefined): Workspace { + // Find or create best match. + return this._getOrCreateBestWorkspaceFileSync(filePath, pythonPath); + } + async getContainingWorkspacesForFile(filePath: string): Promise { // Wait for all workspaces to be initialized before attempting to find the best workspace. Otherwise // the list of files won't be complete and the `contains` check might fail. await Promise.all(this.items().map((w) => w.isInitialized.promise)); + // Find or create best match. + const workspaces = this.getContainingWorkspacesForFileSync(filePath); + + // The workspaces may have just been created, wait for them all to be initialized + await Promise.all(workspaces.map((w) => w.isInitialized.promise)); + + return workspaces; + } + + getContainingWorkspacesForFileSync(filePath: string): Workspace[] { // All workspaces that track the file should be considered. let workspaces = this.items().filter((w) => w.service.isTracked(filePath)); @@ -314,9 +329,6 @@ export class WorkspaceFactory { workspaces = workspaces.filter((w) => w.pythonPathKind === WorkspacePythonPathKind.Immutable); } - // The workspaces may have just been created, wait for them all to be initialized - await Promise.all(workspaces.map((w) => w.isInitialized.promise)); - return workspaces; } diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 0b3d51ad0..ddaa0279f 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -15,31 +15,31 @@ "devDependencies": { "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", - "copy-webpack-plugin": "^10.2.4", + "copy-webpack-plugin": "^11.0.0", "esbuild-loader": "^3.0.1", "shx": "^0.3.4", - "ts-loader": "^9.4.2", + "ts-loader": "^9.4.3", "typescript": "~4.4.4", - "webpack": "^5.82.0", - "webpack-cli": "^4.10.0" + "webpack": "^5.85.0", + "webpack-cli": "^5.1.1" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, "engines": { "node": ">=10.0.0" } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.8.tgz", - "integrity": "sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", "cpu": [ "arm" ], @@ -53,9 +53,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.8.tgz", - "integrity": "sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", "cpu": [ "arm64" ], @@ -69,9 +69,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.8.tgz", - "integrity": "sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", "cpu": [ "x64" ], @@ -85,9 +85,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.8.tgz", - "integrity": "sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", "cpu": [ "arm64" ], @@ -101,9 +101,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.8.tgz", - "integrity": "sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", "cpu": [ "x64" ], @@ -117,9 +117,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.8.tgz", - "integrity": "sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", "cpu": [ "arm64" ], @@ -133,9 +133,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.8.tgz", - "integrity": "sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", "cpu": [ "x64" ], @@ -149,9 +149,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.8.tgz", - "integrity": "sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", "cpu": [ "arm" ], @@ -165,9 +165,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.8.tgz", - "integrity": "sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", "cpu": [ "arm64" ], @@ -181,9 +181,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.8.tgz", - "integrity": "sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", "cpu": [ "ia32" ], @@ -197,9 +197,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.8.tgz", - "integrity": "sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", "cpu": [ "loong64" ], @@ -213,9 +213,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.8.tgz", - "integrity": "sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", "cpu": [ "mips64el" ], @@ -229,9 +229,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.8.tgz", - "integrity": "sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", "cpu": [ "ppc64" ], @@ -245,9 +245,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.8.tgz", - "integrity": "sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", "cpu": [ "riscv64" ], @@ -261,9 +261,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.8.tgz", - "integrity": "sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", "cpu": [ "s390x" ], @@ -277,9 +277,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.8.tgz", - "integrity": "sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", "cpu": [ "x64" ], @@ -293,9 +293,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.8.tgz", - "integrity": "sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", "cpu": [ "x64" ], @@ -309,9 +309,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.8.tgz", - "integrity": "sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", "cpu": [ "x64" ], @@ -325,9 +325,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.8.tgz", - "integrity": "sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", "cpu": [ "x64" ], @@ -341,9 +341,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.8.tgz", - "integrity": "sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", "cpu": [ "arm64" ], @@ -357,9 +357,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.8.tgz", - "integrity": "sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", "cpu": [ "ia32" ], @@ -373,9 +373,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.8.tgz", - "integrity": "sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", "cpu": [ "x64" ], @@ -492,9 +492,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==", "dev": true, "dependencies": { "@types/estree": "*", @@ -502,9 +502,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -518,9 +518,9 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "node_modules/@types/node": { @@ -530,180 +530,188 @@ "dev": true }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=14.15.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -724,9 +732,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -736,23 +744,23 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "peerDependencies": { "acorn": "^8" } }, "node_modules/ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" }, "funding": { @@ -777,16 +785,35 @@ } } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, "peerDependencies": { - "ajv": "^8.8.2" + "ajv": "^6.9.1" } }, "node_modules/ansi-styles": { @@ -804,18 +831,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -854,26 +869,35 @@ } }, "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer-from": { @@ -883,14 +907,24 @@ "dev": true }, "node_modules/caniuse-lite": { - "version": "1.0.30001307", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", - "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", + "version": "1.0.30001495", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", + "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, "node_modules/chalk": { "version": "4.1.2", @@ -931,6 +965,18 @@ "node": ">=6" } }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -950,38 +996,41 @@ "dev": true }, "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, "dependencies": { - "fast-glob": "^3.2.7", + "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", - "globby": "^12.0.2", + "globby": "^13.1.1", "normalize-path": "^3.0.0", "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0" }, "engines": { - "node": ">= 12.20.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", @@ -991,6 +1040,37 @@ "webpack": "^5.1.0" } }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", + "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1018,9 +1098,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.64", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz", - "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", + "version": "1.4.421", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.421.tgz", + "integrity": "sha512-wZOyn3s/aQOtLGAwXMZfteQPN68kgls2wDAnYOA8kCjBvKVrW5RwmWVspxJYTqrcN7Y263XJVsC66VCIGzDO3g==", "dev": true }, "node_modules/emojis-list": { @@ -1033,9 +1113,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", + "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -1064,9 +1144,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.8.tgz", - "integrity": "sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, "hasInstallScript": true, "bin": { @@ -1076,28 +1156,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.8", - "@esbuild/android-arm64": "0.17.8", - "@esbuild/android-x64": "0.17.8", - "@esbuild/darwin-arm64": "0.17.8", - "@esbuild/darwin-x64": "0.17.8", - "@esbuild/freebsd-arm64": "0.17.8", - "@esbuild/freebsd-x64": "0.17.8", - "@esbuild/linux-arm": "0.17.8", - "@esbuild/linux-arm64": "0.17.8", - "@esbuild/linux-ia32": "0.17.8", - "@esbuild/linux-loong64": "0.17.8", - "@esbuild/linux-mips64el": "0.17.8", - "@esbuild/linux-ppc64": "0.17.8", - "@esbuild/linux-riscv64": "0.17.8", - "@esbuild/linux-s390x": "0.17.8", - "@esbuild/linux-x64": "0.17.8", - "@esbuild/netbsd-x64": "0.17.8", - "@esbuild/openbsd-x64": "0.17.8", - "@esbuild/sunos-x64": "0.17.8", - "@esbuild/win32-arm64": "0.17.8", - "@esbuild/win32-ia32": "0.17.8", - "@esbuild/win32-x64": "0.17.8" + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" } }, "node_modules/esbuild-loader": { @@ -1118,16 +1198,6 @@ "webpack": "^4.40.0 || ^5.0.0" } }, - "node_modules/esbuild-loader/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -1196,9 +1266,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -1230,10 +1300,13 @@ "dev": true }, "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } }, "node_modules/fastq": { "version": "1.13.0", @@ -1256,23 +1329,10 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/function-bind": { @@ -1282,24 +1342,27 @@ "dev": true }, "node_modules/get-tsconfig": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.4.0.tgz", - "integrity": "sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", + "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, "funding": { "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -1328,30 +1391,10 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "node_modules/globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, - "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/has": { @@ -1406,7 +1449,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", @@ -1429,9 +1472,9 @@ } }, "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -1443,7 +1486,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1470,18 +1513,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1491,7 +1522,7 @@ "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1533,9 +1564,9 @@ "dev": true }, "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "node_modules/json5": { @@ -1560,9 +1591,9 @@ } }, "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "engines": { "node": ">=6.11.5" @@ -1582,30 +1613,6 @@ "node": ">=8.9.0" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -1622,34 +1629,34 @@ } }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -1668,10 +1675,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/neo-async": { "version": "2.6.2", @@ -1680,9 +1690,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", "dev": true }, "node_modules/normalize-path": { @@ -1697,39 +1707,12 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -1751,7 +1734,7 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1811,10 +1794,62 @@ "node": ">=8" } }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" @@ -1852,7 +1887,7 @@ "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { "resolve": "^1.1.6" @@ -1871,12 +1906,12 @@ } }, "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -1899,7 +1934,7 @@ "node": ">=8" } }, - "node_modules/resolve-from": { + "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -1908,6 +1943,15 @@ "node": ">=8" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -1962,15 +2006,15 @@ ] }, "node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -1980,10 +2024,44 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -1995,6 +2073,18 @@ "node": ">=10" } }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", @@ -2070,18 +2160,6 @@ "node": ">=6" } }, - "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -2141,13 +2219,13 @@ } }, "node_modules/terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "version": "5.17.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", + "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -2159,16 +2237,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "terser": "^5.16.8" }, "engines": { "node": ">= 10.13.0" @@ -2192,37 +2270,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", @@ -2241,6 +2288,12 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2254,9 +2307,9 @@ } }, "node_modules/ts-loader": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", - "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.3.tgz", + "integrity": "sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -2285,6 +2338,36 @@ "node": ">=4.2.0" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -2308,9 +2391,9 @@ } }, "node_modules/webpack": { - "version": "5.82.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz", - "integrity": "sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==", + "version": "5.85.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", + "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -2319,10 +2402,10 @@ "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.13.0", + "enhanced-resolve": "^5.14.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -2355,44 +2438,42 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.3.tgz", + "integrity": "sha512-MTuk7NUMvEHQUSXCpvUrF1q2p0FJS40dPFfqQvG3jTWcgv/8plBNz2Kv2HXZiLGPnfmSAA5uCtCILO1JBmmkfw==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "5.x.x" }, "peerDependenciesMeta": { "@webpack-cli/generators": { "optional": true }, - "@webpack-cli/migrate": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -2401,40 +2482,31 @@ } } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/webpack-cli/node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/webpack-cli/node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", @@ -2445,45 +2517,15 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", @@ -2502,6 +2544,15 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2518,15 +2569,15 @@ } }, "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "node_modules/yallist": { @@ -2538,162 +2589,162 @@ }, "dependencies": { "@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, "@esbuild/android-arm": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.8.tgz", - "integrity": "sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.8.tgz", - "integrity": "sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.8.tgz", - "integrity": "sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.8.tgz", - "integrity": "sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.8.tgz", - "integrity": "sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.8.tgz", - "integrity": "sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.8.tgz", - "integrity": "sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.8.tgz", - "integrity": "sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.8.tgz", - "integrity": "sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.8.tgz", - "integrity": "sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.8.tgz", - "integrity": "sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.8.tgz", - "integrity": "sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.8.tgz", - "integrity": "sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.8.tgz", - "integrity": "sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.8.tgz", - "integrity": "sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.8.tgz", - "integrity": "sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.8.tgz", - "integrity": "sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.8.tgz", - "integrity": "sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.8.tgz", - "integrity": "sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.8.tgz", - "integrity": "sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.8.tgz", - "integrity": "sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.8.tgz", - "integrity": "sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", "dev": true, "optional": true }, @@ -2782,9 +2833,9 @@ } }, "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==", "dev": true, "requires": { "@types/estree": "*", @@ -2792,9 +2843,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -2808,9 +2859,9 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/node": { @@ -2820,171 +2871,169 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "requires": { - "envinfo": "^7.7.3" - } + "requires": {} }, "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "requires": {} }, @@ -3001,27 +3050,27 @@ "dev": true }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "requires": {} }, "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, @@ -3032,16 +3081,34 @@ "dev": true, "requires": { "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } + "requires": {} }, "ansi-styles": { "version": "4.3.0", @@ -3052,12 +3119,6 @@ "color-convert": "^2.0.1" } }, - "array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3090,16 +3151,15 @@ } }, "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" } }, "buffer-from": { @@ -3109,9 +3169,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001307", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", - "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", + "version": "1.0.30001495", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", + "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", "dev": true }, "chalk": { @@ -3139,6 +3199,17 @@ "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, "color-convert": { @@ -3157,35 +3228,56 @@ "dev": true }, "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, "requires": { - "fast-glob": "^3.2.7", + "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", - "globby": "^12.0.2", + "globby": "^13.1.1", "normalize-path": "^3.0.0", "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "globby": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", + "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } } }, "cross-spawn": { @@ -3209,9 +3301,9 @@ } }, "electron-to-chromium": { - "version": "1.4.64", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz", - "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", + "version": "1.4.421", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.421.tgz", + "integrity": "sha512-wZOyn3s/aQOtLGAwXMZfteQPN68kgls2wDAnYOA8kCjBvKVrW5RwmWVspxJYTqrcN7Y263XJVsC66VCIGzDO3g==", "dev": true }, "emojis-list": { @@ -3221,9 +3313,9 @@ "dev": true }, "enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", + "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -3243,33 +3335,33 @@ "dev": true }, "esbuild": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.8.tgz", - "integrity": "sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, "requires": { - "@esbuild/android-arm": "0.17.8", - "@esbuild/android-arm64": "0.17.8", - "@esbuild/android-x64": "0.17.8", - "@esbuild/darwin-arm64": "0.17.8", - "@esbuild/darwin-x64": "0.17.8", - "@esbuild/freebsd-arm64": "0.17.8", - "@esbuild/freebsd-x64": "0.17.8", - "@esbuild/linux-arm": "0.17.8", - "@esbuild/linux-arm64": "0.17.8", - "@esbuild/linux-ia32": "0.17.8", - "@esbuild/linux-loong64": "0.17.8", - "@esbuild/linux-mips64el": "0.17.8", - "@esbuild/linux-ppc64": "0.17.8", - "@esbuild/linux-riscv64": "0.17.8", - "@esbuild/linux-s390x": "0.17.8", - "@esbuild/linux-x64": "0.17.8", - "@esbuild/netbsd-x64": "0.17.8", - "@esbuild/openbsd-x64": "0.17.8", - "@esbuild/sunos-x64": "0.17.8", - "@esbuild/win32-arm64": "0.17.8", - "@esbuild/win32-ia32": "0.17.8", - "@esbuild/win32-x64": "0.17.8" + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" } }, "esbuild-loader": { @@ -3282,18 +3374,6 @@ "get-tsconfig": "^4.4.0", "loader-utils": "^2.0.4", "webpack-sources": "^1.4.3" - }, - "dependencies": { - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } } }, "escalade": { @@ -3348,9 +3428,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -3378,9 +3458,9 @@ "dev": true }, "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true }, "fastq": { @@ -3401,20 +3481,10 @@ "to-regex-range": "^5.0.1" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "function-bind": { @@ -3424,21 +3494,24 @@ "dev": true }, "get-tsconfig": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.4.0.tgz", - "integrity": "sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==", - "dev": true + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", + "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -3458,24 +3531,10 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, - "requires": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "has": { @@ -3512,7 +3571,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -3532,9 +3591,9 @@ "dev": true }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -3543,7 +3602,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-glob": { @@ -3561,15 +3620,6 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3579,7 +3629,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, "jest-worker": { @@ -3611,9 +3661,9 @@ "dev": true }, "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json5": { @@ -3629,9 +3679,9 @@ "dev": true }, "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, "loader-utils": { @@ -3645,24 +3695,6 @@ "json5": "^2.1.2" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -3676,28 +3708,28 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" } }, "minimatch": { @@ -3710,9 +3742,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "neo-async": { @@ -3722,9 +3754,9 @@ "dev": true }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", "dev": true }, "normalize-path": { @@ -3736,30 +3768,12 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -3775,7 +3789,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { @@ -3815,12 +3829,51 @@ "dev": true, "requires": { "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "queue-microtask": { @@ -3841,7 +3894,7 @@ "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "requires": { "resolve": "^1.1.6" @@ -3854,12 +3907,12 @@ "dev": true }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -3871,12 +3924,20 @@ "dev": true, "requires": { "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true }, "reusify": { @@ -3901,24 +3962,64 @@ "dev": true }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "serialize-javascript": { @@ -3975,12 +4076,6 @@ "shelljs": "^0.8.5" } }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -4025,55 +4120,38 @@ "dev": true }, "terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "version": "5.17.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", + "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } } }, "terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "terser": "^5.16.8" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "schema-utils": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", @@ -4097,9 +4175,9 @@ } }, "ts-loader": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", - "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.3.tgz", + "integrity": "sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -4114,6 +4192,16 @@ "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4134,9 +4222,9 @@ } }, "webpack": { - "version": "5.82.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz", - "integrity": "sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==", + "version": "5.85.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", + "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -4145,10 +4233,10 @@ "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.13.0", + "enhanced-resolve": "^5.14.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -4165,31 +4253,6 @@ "webpack-sources": "^3.2.3" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "schema-utils": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", @@ -4200,56 +4263,57 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true } } }, "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.3.tgz", + "integrity": "sha512-MTuk7NUMvEHQUSXCpvUrF1q2p0FJS40dPFfqQvG3jTWcgv/8plBNz2Kv2HXZiLGPnfmSAA5uCtCILO1JBmmkfw==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true }, "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" } } } }, "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -4257,10 +4321,14 @@ } }, "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } }, "which": { "version": "2.0.2", @@ -4272,15 +4340,15 @@ } }, "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "yallist": { diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 9a52c21e5..ca876e473 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -25,13 +25,13 @@ "devDependencies": { "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", - "copy-webpack-plugin": "^10.2.4", + "copy-webpack-plugin": "^11.0.0", "esbuild-loader": "^3.0.1", "shx": "^0.3.4", - "ts-loader": "^9.4.2", + "ts-loader": "^9.4.3", "typescript": "~4.4.4", - "webpack": "^5.82.0", - "webpack-cli": "^4.10.0" + "webpack": "^5.85.0", + "webpack-cli": "^5.1.1" }, "files": [ "/dist", @@ -42,4 +42,4 @@ "pyright": "index.js", "pyright-langserver": "langserver.index.js" } -} +} \ No newline at end of file diff --git a/packages/pyright/webpack.config.js b/packages/pyright/webpack.config.js index da6274e4d..01df5fb16 100644 --- a/packages/pyright/webpack.config.js +++ b/packages/pyright/webpack.config.js @@ -54,7 +54,7 @@ module.exports = (_, { mode }) => { { // Transform pre-compiled JS files to use syntax available in Node 12+. // esbuild is fast, so let it run on all JS files rather than matching - // only known-bad libs. ts-loader does this for us for TypeScript files. + // only known-bad libs. test: /\.js$/, loader: 'esbuild-loader', options: { diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index c9597bc72..aaf3720ea 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -18,24 +18,24 @@ "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", "@types/vscode": "~1.78.0", - "copy-webpack-plugin": "^10.2.4", + "copy-webpack-plugin": "^11.0.0", "detect-indent": "^6.1.0", "esbuild-loader": "^3.0.1", "shx": "^0.3.4", - "ts-loader": "^9.4.2", + "ts-loader": "^9.4.3", "typescript": "~4.4.4", "vsce": "^2.7.0", - "webpack": "^5.82.0", - "webpack-cli": "^4.10.0" + "webpack": "^5.85.0", + "webpack-cli": "^5.1.1" }, "engines": { "vscode": "^1.78.0" } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -497,9 +497,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==", "dev": true, "dependencies": { "@types/estree": "*", @@ -507,9 +507,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -523,9 +523,9 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "node_modules/@types/node": { @@ -535,186 +535,194 @@ "dev": true }, "node_modules/@types/vscode": { - "version": "1.78.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.78.0.tgz", - "integrity": "sha512-LJZIJpPvKJ0HVQDqfOy6W4sNKUBBwyDu1Bs8chHBZOe9MNuKTJtidgZ2bqjhmmWpUb0TIIqv47BFUcVmAsgaVA==", + "version": "1.78.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.78.1.tgz", + "integrity": "sha512-wEA+54axejHu7DhcUfnFBan1IqFD1gBDxAFz8LoX06NbNDMRJv/T6OGthOs52yZccasKfN588EyffHWABkR0fg==", "dev": true }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=14.15.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -735,9 +743,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -747,23 +755,23 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "peerDependencies": { "acorn": "^8" } }, "node_modules/ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" }, "funding": { @@ -788,25 +796,35 @@ } } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "ajv": "^8.8.2" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "ajv": "^6.9.1" } }, "node_modules/ansi-styles": { @@ -824,44 +842,16 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/azure-devops-node-api": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.1.1.tgz", - "integrity": "sha512-XDG91XzLZ15reP12s3jFkKS8oiagSICjnLwxEYieme4+4h3ZveFOFRA4iYIG40RyHXsiI0mefFYYMFIJbMpWcg==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", + "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", "dev": true, "dependencies": { "tunnel": "0.0.6", @@ -913,24 +903,10 @@ "readable-stream": "^3.4.0" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "node_modules/brace-expansion": { @@ -956,26 +932,35 @@ } }, "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer": { @@ -1005,7 +990,7 @@ "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "engines": { "node": "*" @@ -1031,14 +1016,24 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001307", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", - "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", + "version": "1.0.30001495", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", + "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, "node_modules/chalk": { "version": "4.1.2", @@ -1057,18 +1052,18 @@ } }, "node_modules/cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "dev": true, "dependencies": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" }, "engines": { "node": ">= 6" @@ -1078,27 +1073,22 @@ } }, "node_modules/cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dev": true, "dependencies": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -1122,11 +1112,14 @@ "node": ">=6" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } @@ -1150,47 +1143,41 @@ "dev": true }, "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=14" } }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, "dependencies": { - "fast-glob": "^3.2.7", + "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", - "globby": "^12.0.2", + "globby": "^13.1.1", "normalize-path": "^3.0.0", "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0" }, "engines": { - "node": ">= 12.20.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", @@ -1200,11 +1187,36 @@ "webpack": "^5.1.0" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", + "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -1221,15 +1233,15 @@ } }, "node_modules/css-select": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, "dependencies": { "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", - "domutils": "^2.8.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", "nth-check": "^2.0.1" }, "funding": { @@ -1237,9 +1249,9 @@ } }, "node_modules/css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "engines": { "node": ">= 6" @@ -1263,6 +1275,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -1272,12 +1296,6 @@ "node": ">=4.0.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, "node_modules/detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", @@ -1309,23 +1327,23 @@ } }, "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, "funding": { "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { @@ -1335,12 +1353,12 @@ ] }, "node_modules/domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "dependencies": { - "domelementtype": "^2.2.0" + "domelementtype": "^2.3.0" }, "engines": { "node": ">= 4" @@ -1350,23 +1368,23 @@ } }, "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" } }, "node_modules/electron-to-chromium": { - "version": "1.4.64", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz", - "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", + "version": "1.4.421", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.421.tgz", + "integrity": "sha512-wZOyn3s/aQOtLGAwXMZfteQPN68kgls2wDAnYOA8kCjBvKVrW5RwmWVspxJYTqrcN7Y263XJVsC66VCIGzDO3g==", "dev": true }, "node_modules/emojis-list": { @@ -1388,9 +1406,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", + "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -1401,10 +1419,13 @@ } }, "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -1482,16 +1503,6 @@ "webpack": "^4.40.0 || ^5.0.0" } }, - "node_modules/esbuild-loader/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -1501,15 +1512,6 @@ "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -1612,15 +1614,18 @@ "dev": true }, "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -1629,7 +1634,7 @@ "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "dependencies": { "pend": "~1.2.0" @@ -1647,19 +1652,6 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -1669,7 +1661,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/function-bind": { @@ -1678,31 +1670,16 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1723,19 +1700,19 @@ "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "dev": true }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -1764,30 +1741,10 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "node_modules/globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, - "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/has": { @@ -1811,10 +1768,10 @@ "node": ">=8" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, "engines": { "node": ">= 0.4" @@ -1823,28 +1780,22 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -1854,10 +1805,10 @@ } ], "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, "node_modules/ieee754": { @@ -1881,9 +1832,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" @@ -1911,7 +1862,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", @@ -1940,9 +1891,9 @@ } }, "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -1954,20 +1905,8 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, "engines": { "node": ">=0.10.0" } @@ -1993,24 +1932,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2020,7 +1941,7 @@ "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2062,9 +1983,9 @@ "dev": true }, "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "node_modules/json5": { @@ -2090,6 +2011,12 @@ "prebuild-install": "^7.0.1" } }, + "node_modules/keytar/node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -2118,9 +2045,9 @@ } }, "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "engines": { "node": ">=6.11.5" @@ -2140,29 +2067,6 @@ "node": ">=8.9.0" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/markdown-it": { "version": "12.3.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", @@ -2191,7 +2095,7 @@ "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "node_modules/merge-stream": { @@ -2210,13 +2114,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" @@ -2235,38 +2139,26 @@ } }, "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2280,10 +2172,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp-classic": { "version": "0.5.3", @@ -2310,9 +2205,9 @@ "dev": true }, "node_modules/node-abi": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", - "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.43.0.tgz", + "integrity": "sha512-QB0MMv+tn9Ur2DtJrc8y09n0n6sw88CyDniWSX2cHW10goQXYPK9ZpFJOktDS4ron501edPX6h9i7Pg+RnH5nQ==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -2321,16 +2216,10 @@ "node": ">=10" } }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true - }, "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", "dev": true }, "node_modules/normalize-path": { @@ -2342,22 +2231,10 @@ "node": ">=0.10.0" } }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { "boolbase": "^1.0.0" @@ -2366,28 +2243,10 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2396,39 +2255,12 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -2441,7 +2273,7 @@ "node_modules/parse-semver": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", - "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", "dev": true, "dependencies": { "semver": "^5.1.0" @@ -2457,18 +2289,28 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", "dev": true, "dependencies": { - "parse5": "^6.0.1" + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/path-exists": { @@ -2483,7 +2325,7 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2516,7 +2358,7 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "node_modules/picocolors": { @@ -2549,10 +2391,62 @@ "node": ">=8" } }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/prebuild-install": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", - "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", "dev": true, "dependencies": { "detect-libc": "^2.0.0", @@ -2562,7 +2456,6 @@ "mkdirp-classic": "^0.5.3", "napi-build-utils": "^1.0.1", "node-abi": "^3.3.0", - "npmlog": "^4.0.1", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", @@ -2576,12 +2469,6 @@ "node": ">=10" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -2593,18 +2480,18 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -2660,10 +2547,19 @@ "rc": "cli.js" } }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, "dependencies": { "mute-stream": "~0.0.4" @@ -2673,30 +2569,23 @@ } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { "resolve": "^1.1.6" @@ -2715,12 +2604,12 @@ } }, "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -2743,7 +2632,7 @@ "node": ">=8" } }, - "node_modules/resolve-from": { + "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -2836,15 +2725,15 @@ "dev": true }, "node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -2854,10 +2743,44 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2868,6 +2791,17 @@ "node": ">=10" } }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", @@ -2877,12 +2811,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -2963,12 +2891,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -3014,18 +2936,6 @@ "simple-concat": "^1.0.0" } }, - "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -3052,53 +2962,12 @@ } }, "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.2.0" } }, "node_modules/supports-color": { @@ -3146,6 +3015,12 @@ "tar-stream": "^2.1.4" } }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "node_modules/tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", @@ -3162,28 +3037,14 @@ "node": ">=6" } }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "version": "5.17.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", + "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -3195,16 +3056,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "terser": "^5.16.8" }, "engines": { "node": ">= 10.13.0" @@ -3228,37 +3089,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", @@ -3283,18 +3113,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3308,9 +3126,9 @@ } }, "node_modules/ts-loader": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", - "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.3.tgz", + "integrity": "sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -3326,12 +3144,6 @@ "webpack": "^5.0.0" } }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -3344,7 +3156,7 @@ "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "dependencies": { "safe-buffer": "^5.0.1" @@ -3354,9 +3166,9 @@ } }, "node_modules/typed-rest-client": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz", - "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.9.tgz", + "integrity": "sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g==", "dev": true, "dependencies": { "qs": "^6.9.1", @@ -3384,11 +3196,41 @@ "dev": true }, "node_modules/underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "dev": true }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3407,13 +3249,14 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "node_modules/vsce": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz", - "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.15.0.tgz", + "integrity": "sha512-P8E9LAZvBCQnoGoizw65JfGvyMqNGlHdlUXD1VAuxtvYAaHBKLBdKPnpy60XKVDAkQCfmMu53g+gq9FM+ydepw==", + "deprecated": "vsce has been renamed to @vscode/vsce. Install using @vscode/vsce instead.", "dev": true, "dependencies": { "azure-devops-node-api": "^11.0.1", @@ -3482,18 +3325,60 @@ "node_modules/vsce/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/vsce/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/vsce/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/vsce/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/vsce/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vsce/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/vsce/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -3515,6 +3400,18 @@ "node": ">=4" } }, + "node_modules/vsce/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, "node_modules/vscode-jsonrpc": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", @@ -3545,9 +3442,9 @@ } }, "node_modules/vscode-languageclient/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3594,9 +3491,9 @@ } }, "node_modules/webpack": { - "version": "5.82.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz", - "integrity": "sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==", + "version": "5.85.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", + "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -3605,10 +3502,10 @@ "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.13.0", + "enhanced-resolve": "^5.14.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -3641,42 +3538,40 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.3.tgz", + "integrity": "sha512-MTuk7NUMvEHQUSXCpvUrF1q2p0FJS40dPFfqQvG3jTWcgv/8plBNz2Kv2HXZiLGPnfmSAA5uCtCILO1JBmmkfw==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "5.x.x" }, "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { + "@webpack-cli/generators": { "optional": true }, "webpack-bundle-analyzer": { @@ -3687,40 +3582,31 @@ } } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/webpack-cli/node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/webpack-cli/node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", @@ -3731,45 +3617,15 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", @@ -3788,6 +3644,15 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3803,25 +3668,16 @@ "node": ">= 8" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "node_modules/xml2js": { @@ -3854,7 +3710,7 @@ "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", @@ -3873,9 +3729,9 @@ }, "dependencies": { "@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, "@esbuild/android-arm": { @@ -4117,9 +3973,9 @@ } }, "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==", "dev": true, "requires": { "@types/estree": "*", @@ -4127,9 +3983,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -4143,9 +3999,9 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/node": { @@ -4155,177 +4011,175 @@ "dev": true }, "@types/vscode": { - "version": "1.78.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.78.0.tgz", - "integrity": "sha512-LJZIJpPvKJ0HVQDqfOy6W4sNKUBBwyDu1Bs8chHBZOe9MNuKTJtidgZ2bqjhmmWpUb0TIIqv47BFUcVmAsgaVA==", + "version": "1.78.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.78.1.tgz", + "integrity": "sha512-wEA+54axejHu7DhcUfnFBan1IqFD1gBDxAFz8LoX06NbNDMRJv/T6OGthOs52yZccasKfN588EyffHWABkR0fg==", "dev": true }, "@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "requires": { - "envinfo": "^7.7.3" - } + "requires": {} }, "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "requires": {} }, @@ -4342,27 +4196,27 @@ "dev": true }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "requires": {} }, "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, @@ -4373,22 +4227,34 @@ "dev": true, "requires": { "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "requires": {} }, "ansi-styles": { "version": "4.3.0", @@ -4399,38 +4265,16 @@ "color-convert": "^2.0.1" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true - }, "azure-devops-node-api": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.1.1.tgz", - "integrity": "sha512-XDG91XzLZ15reP12s3jFkKS8oiagSICjnLwxEYieme4+4h3ZveFOFRA4iYIG40RyHXsiI0mefFYYMFIJbMpWcg==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", + "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", "dev": true, "requires": { "tunnel": "0.0.6", @@ -4463,25 +4307,12 @@ "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } } }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "brace-expansion": { @@ -4504,16 +4335,15 @@ } }, "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" } }, "buffer": { @@ -4529,7 +4359,7 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-from": { @@ -4549,9 +4379,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001307", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", - "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", + "version": "1.0.30001495", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", + "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", "dev": true }, "chalk": { @@ -4565,39 +4395,34 @@ } }, "cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "dev": true, "requires": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" } }, "cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dev": true, "requires": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -4613,14 +4438,19 @@ "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4637,49 +4467,58 @@ "dev": true }, "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, "requires": { - "fast-glob": "^3.2.7", + "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", - "globby": "^12.0.2", + "globby": "^13.1.1", "normalize-path": "^3.0.0", "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "globby": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", + "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } } }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -4692,22 +4531,22 @@ } }, "css-select": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", - "domutils": "^2.8.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, "decompress-response": { @@ -4717,6 +4556,14 @@ "dev": true, "requires": { "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } } }, "deep-extend": { @@ -4725,12 +4572,6 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, "detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", @@ -4753,46 +4594,46 @@ } }, "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" } }, "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "requires": { - "domelementtype": "^2.2.0" + "domelementtype": "^2.3.0" } }, "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" } }, "electron-to-chromium": { - "version": "1.4.64", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz", - "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", + "version": "1.4.421", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.421.tgz", + "integrity": "sha512-wZOyn3s/aQOtLGAwXMZfteQPN68kgls2wDAnYOA8kCjBvKVrW5RwmWVspxJYTqrcN7Y263XJVsC66VCIGzDO3g==", "dev": true }, "emojis-list": { @@ -4811,9 +4652,9 @@ } }, "enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", + "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -4821,9 +4662,9 @@ } }, "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true }, "envinfo": { @@ -4878,18 +4719,6 @@ "get-tsconfig": "^4.4.0", "loader-utils": "^2.0.4", "webpack-sources": "^1.4.3" - }, - "dependencies": { - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } } }, "escalade": { @@ -4898,12 +4727,6 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -4986,15 +4809,15 @@ "dev": true }, "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true }, "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -5003,7 +4826,7 @@ "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "requires": { "pend": "~1.2.0" @@ -5018,16 +4841,6 @@ "to-regex-range": "^5.0.1" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -5037,7 +4850,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "function-bind": { @@ -5046,31 +4859,16 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" } }, "get-tsconfig": { @@ -5085,19 +4883,19 @@ "github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -5117,24 +4915,10 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, - "requires": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "has": { @@ -5152,37 +4936,28 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "dev": true, "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, "ieee754": { @@ -5192,9 +4967,9 @@ "dev": true }, "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "import-local": { @@ -5210,7 +4985,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -5236,9 +5011,9 @@ "dev": true }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -5247,18 +5022,9 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -5274,21 +5040,6 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -5298,7 +5049,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, "jest-worker": { @@ -5330,9 +5081,9 @@ "dev": true }, "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json5": { @@ -5349,6 +5100,14 @@ "requires": { "node-addon-api": "^4.3.0", "prebuild-install": "^7.0.1" + }, + "dependencies": { + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true + } } }, "kind-of": { @@ -5373,9 +5132,9 @@ } }, "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, "loader-utils": { @@ -5384,26 +5143,9 @@ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } }, "markdown-it": { @@ -5430,7 +5172,7 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "merge-stream": { @@ -5446,13 +5188,13 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime": { @@ -5462,26 +5204,20 @@ "dev": true }, "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" } }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -5492,9 +5228,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "mkdirp-classic": { @@ -5522,24 +5258,18 @@ "dev": true }, "node-abi": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", - "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.43.0.tgz", + "integrity": "sha512-QB0MMv+tn9Ur2DtJrc8y09n0n6sw88CyDniWSX2cHW10goQXYPK9ZpFJOktDS4ron501edPX6h9i7Pg+RnH5nQ==", "dev": true, "requires": { "semver": "^7.3.5" } }, - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true - }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", "dev": true }, "normalize-path": { @@ -5548,72 +5278,30 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "requires": { "boolbase": "^1.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -5623,7 +5311,7 @@ "parse-semver": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", - "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", "dev": true, "requires": { "semver": "^5.1.0" @@ -5638,18 +5326,22 @@ } }, "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } }, "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", "dev": true, "requires": { - "parse5": "^6.0.1" + "domhandler": "^5.0.2", + "parse5": "^7.0.0" } }, "path-exists": { @@ -5661,7 +5353,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { @@ -5685,7 +5377,7 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "picocolors": { @@ -5707,12 +5399,51 @@ "dev": true, "requires": { "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } } }, "prebuild-install": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", - "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", "dev": true, "requires": { "detect-libc": "^2.0.0", @@ -5722,7 +5453,6 @@ "mkdirp-classic": "^0.5.3", "napi-build-utils": "^1.0.1", "node-abi": "^3.3.0", - "npmlog": "^4.0.1", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", @@ -5730,12 +5460,6 @@ "tunnel-agent": "^0.6.0" } }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -5747,15 +5471,15 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -5786,44 +5510,40 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + } } }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, "requires": { "mute-stream": "~0.0.4" } }, "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "requires": { "resolve": "^1.1.6" @@ -5836,12 +5556,12 @@ "dev": true }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -5853,14 +5573,16 @@ "dev": true, "requires": { "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, "resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -5904,23 +5626,62 @@ "dev": true }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "requires": { "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + } } }, "serialize-javascript": { @@ -5932,12 +5693,6 @@ "randombytes": "^2.1.0" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -5994,12 +5749,6 @@ "object-inspect": "^1.9.0" } }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -6017,12 +5766,6 @@ "simple-concat": "^1.0.0" } }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -6046,48 +5789,14 @@ } }, "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "safe-buffer": "~5.2.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6119,6 +5828,14 @@ "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.1.4" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + } } }, "tar-stream": { @@ -6132,29 +5849,16 @@ "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } } }, "terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "version": "5.17.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", + "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -6168,43 +5872,18 @@ } }, "terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "terser": "^5.16.8" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "schema-utils": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", @@ -6218,15 +5897,6 @@ } } }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6237,9 +5907,9 @@ } }, "ts-loader": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", - "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.3.tgz", + "integrity": "sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -6248,12 +5918,6 @@ "semver": "^7.3.4" } }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, "tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -6263,16 +5927,16 @@ "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "requires": { "safe-buffer": "^5.0.1" } }, "typed-rest-client": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz", - "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.9.tgz", + "integrity": "sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g==", "dev": true, "requires": { "qs": "^6.9.1", @@ -6293,11 +5957,21 @@ "dev": true }, "underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "dev": true }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6316,13 +5990,13 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "vsce": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz", - "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.15.0.tgz", + "integrity": "sha512-P8E9LAZvBCQnoGoizw65JfGvyMqNGlHdlUXD1VAuxtvYAaHBKLBdKPnpy60XKVDAkQCfmMu53g+gq9FM+ydepw==", "dev": true, "requires": { "azure-devops-node-api": "^11.0.1", @@ -6379,15 +6053,45 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -6402,6 +6106,15 @@ "requires": { "has-flag": "^3.0.0" } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } } } }, @@ -6429,9 +6142,9 @@ } }, "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "requires": { "brace-expansion": "^2.0.1" } @@ -6471,9 +6184,9 @@ } }, "webpack": { - "version": "5.82.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz", - "integrity": "sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg==", + "version": "5.85.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", + "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -6482,10 +6195,10 @@ "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.13.0", + "enhanced-resolve": "^5.14.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -6502,31 +6215,6 @@ "webpack-sources": "^3.2.3" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "schema-utils": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", @@ -6537,56 +6225,57 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true } } }, "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.3.tgz", + "integrity": "sha512-MTuk7NUMvEHQUSXCpvUrF1q2p0FJS40dPFfqQvG3jTWcgv/8plBNz2Kv2HXZiLGPnfmSAA5uCtCILO1JBmmkfw==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true }, "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" } } } }, "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -6594,10 +6283,14 @@ } }, "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } }, "which": { "version": "2.0.2", @@ -6608,25 +6301,16 @@ "isexe": "^2.0.0" } }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "xml2js": { @@ -6653,7 +6337,7 @@ "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "requires": { "buffer-crc32": "~0.2.3", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 2257f2656..ab166c626 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -959,14 +959,14 @@ "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", "@types/vscode": "~1.78.0", - "copy-webpack-plugin": "^10.2.4", + "copy-webpack-plugin": "^11.0.0", "detect-indent": "^6.1.0", "esbuild-loader": "^3.0.1", "shx": "^0.3.4", - "ts-loader": "^9.4.2", + "ts-loader": "^9.4.3", "typescript": "~4.4.4", "vsce": "^2.7.0", - "webpack": "^5.82.0", - "webpack-cli": "^4.10.0" + "webpack": "^5.85.0", + "webpack-cli": "^5.1.1" } -} +} \ No newline at end of file From 35ba762def4cfa6ef249800455a66bab6c1b92e7 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 7 Jun 2023 15:24:40 -0600 Subject: [PATCH 264/525] Fixed a bug in the typeshed VERSIONS exclusions. It was falling back on the VERSIONS file in the packaged typeshed rather than using the custom typeshed path specified in the configuration or command line. --- .../src/analyzer/importResolver.ts | 125 ++++++++++++------ .../pyright-internal/src/analyzer/service.ts | 34 +++-- 2 files changed, 107 insertions(+), 52 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 3dc577d89..5428895a6 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -312,12 +312,12 @@ export class ImportResolver { getTypeshedStdLibPath(execEnv: ExecutionEnvironment) { const unused: string[] = []; - return this._getStdlibTypeshedPath(execEnv, unused); + return this._getStdlibTypeshedPath(this._configOptions.typeshedPath, execEnv.pythonVersion, unused); } getTypeshedThirdPartyPath(execEnv: ExecutionEnvironment) { const unused: string[] = []; - return this._getThirdPartyTypeshedPath(execEnv, unused); + return this._getThirdPartyTypeshedPath(this._configOptions.typeshedPath, unused); } isStdlibModule(module: ImportedModuleDescriptor, execEnv: ExecutionEnvironment): boolean { @@ -332,7 +332,11 @@ export class ImportResolver { const importFailureInfo: string[] = []; const roots = []; - const stdTypeshed = this._getStdlibTypeshedPath(execEnv, importFailureInfo); + const stdTypeshed = this._getStdlibTypeshedPath( + this._configOptions.typeshedPath, + execEnv.pythonVersion, + importFailureInfo + ); if (stdTypeshed) { roots.push(stdTypeshed); } @@ -352,12 +356,12 @@ export class ImportResolver { // There's one path for each third party package, which blows up logging. // Just get the root directly and show it with `...` to indicate that this // is where the third party folder is in the roots. - const thirdPartyRoot = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo); + const thirdPartyRoot = this._getThirdPartyTypeshedPath(this._configOptions.typeshedPath, importFailureInfo); if (thirdPartyRoot) { roots.push(combinePaths(thirdPartyRoot, '...')); } } else { - const thirdPartyPaths = this._getThirdPartyTypeshedPackageRoots(execEnv, importFailureInfo); + const thirdPartyPaths = this._getThirdPartyTypeshedPackageRoots(importFailureInfo); appendArray(roots, thirdPartyPaths); } @@ -425,8 +429,9 @@ export class ImportResolver { return this._cachedPythonSearchPaths.paths; } - getTypeshedStdlibExcludeList(execEnv: ExecutionEnvironment): string[] { - const typeshedStdlibPath = this.getTypeshedStdLibPath(execEnv); + getTypeshedStdlibExcludeList(customTypeshedPath: string, pythonVersion: PythonVersion): string[] { + const unused: string[] = []; + const typeshedStdlibPath = this._getStdlibTypeshedPath(customTypeshedPath, pythonVersion, unused); const excludes: string[] = []; if (!typeshedStdlibPath) { @@ -434,11 +439,11 @@ export class ImportResolver { } if (!this._cachedTypeshedStdLibModuleVersions) { - this._cachedTypeshedStdLibModuleVersions = this._readTypeshedStdLibVersions(execEnv, []); + this._cachedTypeshedStdLibModuleVersions = this._readTypeshedStdLibVersions(customTypeshedPath, []); } this._cachedTypeshedStdLibModuleVersions.forEach((versionRange, moduleName) => { - if (versionRange.max !== undefined && execEnv.pythonVersion > versionRange.max) { + if (versionRange.max !== undefined && pythonVersion > versionRange.max) { // Add excludes for both the ".pyi" file and the directory that contains it // (in case it's using a "__init__.pyi" file). const moduleDirPath = combinePaths(typeshedStdlibPath, ...moduleName.split('.')); @@ -1050,7 +1055,12 @@ export class ImportResolver { let moduleNameWithInvalidCharacters: string | undefined; // Is this a stdlib typeshed path? - const stdLibTypeshedPath = this._getStdlibTypeshedPath(execEnv, importFailureInfo); + const stdLibTypeshedPath = this._getStdlibTypeshedPath( + this._configOptions.typeshedPath, + execEnv.pythonVersion, + importFailureInfo + ); + if (stdLibTypeshedPath) { moduleName = this.getModuleNameFromPath(stdLibTypeshedPath, filePath); if (moduleName) { @@ -1060,7 +1070,14 @@ export class ImportResolver { importedSymbols: undefined, }; - if (this._isStdlibTypeshedStubValidForVersion(moduleDescriptor, execEnv, [])) { + if ( + this._isStdlibTypeshedStubValidForVersion( + moduleDescriptor, + this._configOptions.typeshedPath, + execEnv.pythonVersion, + [] + ) + ) { return { moduleName, importType, isLocalTypingsFile }; } } @@ -1122,7 +1139,11 @@ export class ImportResolver { } // Check for a typeshed file. - const thirdPartyTypeshedPath = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo); + const thirdPartyTypeshedPath = this._getThirdPartyTypeshedPath( + this._configOptions.typeshedPath, + importFailureInfo + ); + if (thirdPartyTypeshedPath) { const candidateModuleName = this.getModuleNameFromPath( thirdPartyTypeshedPath, @@ -1567,7 +1588,7 @@ export class ImportResolver { // If a library is fully py.typed, then we have found the best match, // unless the execution environment is typeshed itself, in which case // we don't want to favor py.typed libraries. Use the typeshed lookup below. - if (execEnv.root !== this._getTypeshedRoot(execEnv, importFailureInfo)) { + if (execEnv.root !== this._getTypeshedRoot(this._configOptions.typeshedPath, importFailureInfo)) { if (bestResultSoFar?.pyTypedInfo && !bestResultSoFar.isPartlyResolved) { return bestResultSoFar; } @@ -1743,12 +1764,18 @@ export class ImportResolver { let typeshedPaths: string[] | undefined; if (isStdLib) { - const path = this._getStdlibTypeshedPath(execEnv, importFailureInfo, moduleDescriptor); + const path = this._getStdlibTypeshedPath( + this._configOptions.typeshedPath, + execEnv.pythonVersion, + importFailureInfo, + moduleDescriptor + ); + if (path) { typeshedPaths = [path]; } } else { - typeshedPaths = this._getThirdPartyTypeshedPackagePaths(moduleDescriptor, execEnv, importFailureInfo); + typeshedPaths = this._getThirdPartyTypeshedPackagePaths(moduleDescriptor, importFailureInfo); } if (typeshedPaths) { @@ -1856,14 +1883,18 @@ export class ImportResolver { let typeshedPaths: string[] | undefined; if (isStdLib) { - const path = this._getStdlibTypeshedPath(execEnv, importFailureInfo, moduleDescriptor); + const path = this._getStdlibTypeshedPath( + this._configOptions.typeshedPath, + execEnv.pythonVersion, + importFailureInfo, + moduleDescriptor + ); if (path) { typeshedPaths = [path]; } } else { typeshedPaths = this._getThirdPartyTypeshedPackagePaths( moduleDescriptor, - execEnv, importFailureInfo, /* includeMatchOnly */ false ); @@ -1896,15 +1927,21 @@ export class ImportResolver { // If moduleDescriptor is provided, it is filtered based on the VERSIONS // file in the typeshed stubs. private _getStdlibTypeshedPath( - execEnv: ExecutionEnvironment, + customTypeshedPath: string | undefined, + pythonVersion: PythonVersion, importFailureInfo: string[], moduleDescriptor?: ImportedModuleDescriptor ) { - const subdirectory = this._getTypeshedSubdirectory(/* isStdLib */ true, execEnv, importFailureInfo); + const subdirectory = this._getTypeshedSubdirectory(/* isStdLib */ true, customTypeshedPath, importFailureInfo); if ( subdirectory && moduleDescriptor && - !this._isStdlibTypeshedStubValidForVersion(moduleDescriptor, execEnv, importFailureInfo) + !this._isStdlibTypeshedStubValidForVersion( + moduleDescriptor, + customTypeshedPath, + pythonVersion, + importFailureInfo + ) ) { return undefined; } @@ -1912,17 +1949,21 @@ export class ImportResolver { return subdirectory; } - private _getThirdPartyTypeshedPath(execEnv: ExecutionEnvironment, importFailureInfo: string[]) { - return this._getTypeshedSubdirectory(/* isStdLib */ false, execEnv, importFailureInfo); + private _getThirdPartyTypeshedPath(customTypeshedPath: string | undefined, importFailureInfo: string[]) { + return this._getTypeshedSubdirectory(/* isStdLib */ false, customTypeshedPath, importFailureInfo); } private _isStdlibTypeshedStubValidForVersion( moduleDescriptor: ImportedModuleDescriptor, - execEnv: ExecutionEnvironment, + customTypeshedPath: string | undefined, + pythonVersion: PythonVersion, importFailureInfo: string[] ) { if (!this._cachedTypeshedStdLibModuleVersions) { - this._cachedTypeshedStdLibModuleVersions = this._readTypeshedStdLibVersions(execEnv, importFailureInfo); + this._cachedTypeshedStdLibModuleVersions = this._readTypeshedStdLibVersions( + customTypeshedPath, + importFailureInfo + ); } // Loop through the name parts to make sure the module and submodules @@ -1931,11 +1972,11 @@ export class ImportResolver { const namePartsToConsider = moduleDescriptor.nameParts.slice(0, namePartCount); const versionRange = this._cachedTypeshedStdLibModuleVersions.get(namePartsToConsider.join('.')); if (versionRange) { - if (execEnv.pythonVersion < versionRange.min) { + if (pythonVersion < versionRange.min) { return false; } - if (versionRange.max !== undefined && execEnv.pythonVersion > versionRange.max) { + if (versionRange.max !== undefined && pythonVersion > versionRange.max) { return false; } } @@ -1945,13 +1986,17 @@ export class ImportResolver { } private _readTypeshedStdLibVersions( - execEnv: ExecutionEnvironment, + customTypeshedPath: string | undefined, importFailureInfo: string[] ): Map { const versionRangeMap = new Map(); // Read the VERSIONS file from typeshed. - const typeshedStdLibPath = this._getTypeshedSubdirectory(/* isStdLib */ true, execEnv, importFailureInfo); + const typeshedStdLibPath = this._getTypeshedSubdirectory( + /* isStdLib */ true, + customTypeshedPath, + importFailureInfo + ); if (typeshedStdLibPath) { const versionsFilePath = combinePaths(typeshedStdLibPath, 'VERSIONS'); @@ -2006,11 +2051,10 @@ export class ImportResolver { private _getThirdPartyTypeshedPackagePaths( moduleDescriptor: ImportedModuleDescriptor, - execEnv: ExecutionEnvironment, importFailureInfo: string[], includeMatchOnly = true ): string[] | undefined { - const typeshedPath = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo); + const typeshedPath = this._getThirdPartyTypeshedPath(this._configOptions.typeshedPath, importFailureInfo); if (!this._cachedTypeshedThirdPartyPackagePaths) { this._buildTypeshedThirdPartyPackageMap(typeshedPath); @@ -2030,8 +2074,8 @@ export class ImportResolver { return []; } - private _getThirdPartyTypeshedPackageRoots(execEnv: ExecutionEnvironment, importFailureInfo: string[]) { - const typeshedPath = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo); + private _getThirdPartyTypeshedPackageRoots(importFailureInfo: string[]) { + const typeshedPath = this._getThirdPartyTypeshedPath(this._configOptions.typeshedPath, importFailureInfo); if (!this._cachedTypeshedThirdPartyPackagePaths) { this._buildTypeshedThirdPartyPackageMap(typeshedPath); @@ -2040,7 +2084,7 @@ export class ImportResolver { return this._cachedTypeshedThirdPartyPackageRoots!; } - private _getTypeshedRoot(execEnv: ExecutionEnvironment, importFailureInfo: string[]) { + private _getTypeshedRoot(customTypeshedPath: string | undefined, importFailureInfo: string[]) { if (this._cachedTypeshedRoot !== undefined) { return this._cachedTypeshedRoot; } @@ -2049,10 +2093,9 @@ export class ImportResolver { // Did the user specify a typeshed path? If not, we'll look in the // python search paths, then in the typeshed-fallback directory. - if (this._configOptions.typeshedPath) { - const possibleTypeshedPath = this._configOptions.typeshedPath; - if (this.dirExistsCached(possibleTypeshedPath)) { - typeshedPath = possibleTypeshedPath; + if (customTypeshedPath) { + if (this.dirExistsCached(customTypeshedPath)) { + typeshedPath = customTypeshedPath; } } else { const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo); @@ -2074,7 +2117,11 @@ export class ImportResolver { return typeshedPath; } - private _getTypeshedSubdirectory(isStdLib: boolean, execEnv: ExecutionEnvironment, importFailureInfo: string[]) { + private _getTypeshedSubdirectory( + isStdLib: boolean, + customTypeshedPath: string | undefined, + importFailureInfo: string[] + ) { // See if we have it cached. if (isStdLib) { if (this._cachedTypeshedStdLibPath !== undefined) { @@ -2086,7 +2133,7 @@ export class ImportResolver { } } - let typeshedPath = this._getTypeshedRoot(execEnv, importFailureInfo); + let typeshedPath = this._getTypeshedRoot(customTypeshedPath, importFailureInfo); typeshedPath = PythonPathUtils.getTypeshedSubdirectory(typeshedPath, isStdLib); if (!this.dirExistsCached(typeshedPath)) { diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index fce1d4458..93092c694 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -26,6 +26,7 @@ import { defaultStubsDirectory } from '../common/pathConsts'; import { FileSpec, combinePaths, + comparePaths, forEachAncestorDirectory, getDirectoryPath, getFileExtension, @@ -681,19 +682,6 @@ export class AnalyzerService { configOptions.applyDiagnosticOverrides(commandLineOptions.diagnosticSeverityOverrides); } - // If the caller specified that "typeshedPath" is the root of the project, - // then we're presumably running in the typeshed project itself. Auto-exclude - // stdlib packages that don't match the current Python version. - if (configOptions.typeshedPath === projectRoot && configOptions.defaultPythonVersion !== undefined) { - const excludeList = this.getImportResolver().getTypeshedStdlibExcludeList( - configOptions.getDefaultExecEnvironment() - ); - - excludeList.forEach((exclude) => { - configOptions.exclude.push(getFileSpec(this.fs, commandLineOptions.executionRoot, exclude)); - }); - } - // Override the analyzeUnannotatedFunctions setting based on the command-line setting. if (commandLineOptions.analyzeUnannotatedFunctions !== undefined) { configOptions.diagnosticRuleSet.analyzeUnannotatedFunctions = @@ -730,6 +718,26 @@ export class AnalyzerService { } } + // If the caller specified that "typeshedPath" is the root of the project, + // then we're presumably running in the typeshed project itself. Auto-exclude + // stdlib packages that don't match the current Python version. + if ( + configOptions.typeshedPath && + comparePaths(configOptions.typeshedPath, projectRoot) === 0 && + configOptions.defaultPythonVersion !== undefined + ) { + const excludeList = this.getImportResolver().getTypeshedStdlibExcludeList( + configOptions.typeshedPath, + configOptions.defaultPythonVersion + ); + + this._console.info(`Excluding typeshed stdlib stubs according to VERSIONS file:`); + excludeList.forEach((exclude) => { + this._console.info(` ${exclude}`); + configOptions.exclude.push(getFileSpec(this.fs, commandLineOptions.executionRoot, exclude)); + }); + } + configOptions.verboseOutput = commandLineOptions.verboseOutput ?? configOptions.verboseOutput; configOptions.checkOnlyOpenFiles = !!commandLineOptions.checkOnlyOpenFiles; configOptions.autoImportCompletions = !!commandLineOptions.autoImportCompletions; From c8e72e70f3865cce403c49b1ef0d05b91cdad8ac Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 8 Jun 2023 13:20:53 -0600 Subject: [PATCH 265/525] Changed the behavior of the tokenizer to emit an extra zero-length line at the end of its line array if the last character in the file is a carriage return or linefeed character. This addresses https://github.com/microsoft/pyright/issues/5251. --- packages/pyright-internal/src/parser/tokenizer.ts | 9 +++++++++ packages/pyright-internal/src/tests/tokenizer.test.ts | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/parser/tokenizer.ts b/packages/pyright-internal/src/parser/tokenizer.ts index f54422c8e..eeff18566 100644 --- a/packages/pyright-internal/src/parser/tokenizer.ts +++ b/packages/pyright-internal/src/parser/tokenizer.ts @@ -312,6 +312,15 @@ export class Tokenizer { // Add the final line range. this._addLineRange(); + // If the last line ended in a line-end character, add an empty line. + if (this._lineRanges.length > 0) { + const lastLine = this._lineRanges[this._lineRanges.length - 1]; + const lastCharOfLastLine = text.charCodeAt(lastLine.start + lastLine.length - 1); + if (lastCharOfLastLine === Char.CarriageReturn || lastCharOfLastLine === Char.LineFeed) { + this._lineRanges.push({ start: this._cs.position, length: 0 }); + } + } + let predominantEndOfLineSequence = '\n'; if (this._crCount > this._crLfCount && this._crCount > this._lfCount) { predominantEndOfLineSequence = '\r'; diff --git a/packages/pyright-internal/src/tests/tokenizer.test.ts b/packages/pyright-internal/src/tests/tokenizer.test.ts index b7e54ab3c..d37e57d15 100644 --- a/packages/pyright-internal/src/tests/tokenizer.test.ts +++ b/packages/pyright-internal/src/tests/tokenizer.test.ts @@ -77,6 +77,8 @@ test('NewLines', () => { assert.equal(results.tokens.contains(5), true); assert.equal(results.tokens.contains(6), false); + + assert.equal(results.lines.count, 4); }); test('InvalidWithNewLine', () => { @@ -1677,12 +1679,12 @@ test('Lines1', () => { // the replacement here. const sampleTextLfOnly = sampleText.replace(/\r\n/g, '\n'); const resultsLf = t.tokenize(sampleTextLfOnly); - assert.equal(resultsLf.lines.count, 14); + assert.equal(resultsLf.lines.count, 15); // Now replace the LF with CR/LF sequences. const sampleTextCrLf = sampleTextLfOnly.replace(/\n/g, '\r\n'); const resultsCrLf = t.tokenize(sampleTextCrLf); - assert.equal(resultsCrLf.lines.count, 14); + assert.equal(resultsCrLf.lines.count, 15); }); test('Comments1', () => { From 37de82f374963de135d41db74d1edc32244c6a92 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 8 Jun 2023 21:47:21 -0600 Subject: [PATCH 266/525] Added support for mypy_primer workflow. --- .github/workflows/mypy_primer.yaml | 69 +++++++++++++++ .github/workflows/mypy_primer_comment.yaml | 98 ++++++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 .github/workflows/mypy_primer.yaml create mode 100644 .github/workflows/mypy_primer_comment.yaml diff --git a/.github/workflows/mypy_primer.yaml b/.github/workflows/mypy_primer.yaml new file mode 100644 index 000000000..61f451443 --- /dev/null +++ b/.github/workflows/mypy_primer.yaml @@ -0,0 +1,69 @@ +name: Run mypy_primer + +on: + pull_request: + paths: + - 'pyright/**' + - 'pyright-internal/src/**' + - 'pyright-internal/typeshed-fallback/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + mypy_primer: + name: Run mypy_primer + runs-on: ubuntu-latest + permissions: + contents: read + strategy: + matrix: + shard-index: [0, 1, 2] + fail-fast: false + steps: + - uses: actions/checkout@v3 + with: + path: pyright_to_test + fetch-depth: 0 + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Install dependencies + run: | + python -m pip install -U pip + pip install git+https://github.com/hauntsaninja/mypy_primer.git + - name: Run mypy_primer + shell: bash + run: | + cd pyright_to_test + echo "new commit" + + echo '' + cd .. + # fail action if exit code isn't zero or one + ( + mypy_primer \ + --repo pyright_to_test \ + --type-checker pyright \ + --new $GITHUB_SHA \ + --num-shards 3 --shard-index ${{ matrix.shard-index }} \ + --debug \ + --output concise \ + | tee diff_${{ matrix.shard-index }}.txt + ) || [ $? -eq 1 ] + - name: Upload mypy_primer diff + uses: actions/upload-artifact@v3 + with: + name: mypy_primer_diffs + path: diff_${{ matrix.shard-index }}.txt + - if: ${{ matrix.shard-index }} == 0 + name: Save PR number + run: | + echo ${{ github.event.pull_request.number }} | tee pr_number.txt + - if: ${{ matrix.shard-index }} == 0 + name: Upload PR number + uses: actions/upload-artifact@v3 + with: + name: mypy_primer_diffs + path: pr_number.txt diff --git a/.github/workflows/mypy_primer_comment.yaml b/.github/workflows/mypy_primer_comment.yaml new file mode 100644 index 000000000..6e3bb5903 --- /dev/null +++ b/.github/workflows/mypy_primer_comment.yaml @@ -0,0 +1,98 @@ +name: Comment with mypy_primer diff + +on: + workflow_run: + workflows: + - Run mypy_primer + types: + - completed + +permissions: + contents: read + pull-requests: write + +jobs: + comment: + name: Comment PR from mypy_primer + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + steps: + - name: Download diffs + uses: actions/github-script@v6 + with: + script: | + const fs = require('fs'); + const artifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: ${{ github.event.workflow_run.id }}, + }); + const [matchArtifact] = artifacts.data.artifacts.filter((artifact) => + artifact.name == "mypy_primer_diffs"); + + const download = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: "zip", + }); + fs.writeFileSync("diff.zip", Buffer.from(download.data)); + + - run: unzip diff.zip + - run: | + cat diff_*.txt | tee fulldiff.txt + + - name: Post comment + id: post-comment + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const MAX_CHARACTERS = 30000 + const MAX_CHARACTERS_PER_PROJECT = MAX_CHARACTERS / 3 + + const fs = require('fs') + let data = fs.readFileSync('fulldiff.txt', { encoding: 'utf8' }) + + function truncateIfNeeded(original, maxLength) { + if (original.length <= maxLength) { + return original + } + let truncated = original.substring(0, maxLength) + // further, remove last line that might be truncated + truncated = truncated.substring(0, truncated.lastIndexOf('\n')) + let lines_truncated = original.split('\n').length - truncated.split('\n').length + return `${truncated}\n\n... (truncated ${lines_truncated} lines) ...` + } + + const projects = data.split('\n\n') + // don't let one project dominate + data = projects.map(project => truncateIfNeeded(project, MAX_CHARACTERS_PER_PROJECT)).join('\n\n') + // posting comment fails if too long, so truncate + data = truncateIfNeeded(data, MAX_CHARACTERS) + + console.log("Diff from mypy_primer:") + console.log(data) + + let body + if (data.trim()) { + body = 'Diff from [mypy_primer](https://github.com/hauntsaninja/mypy_primer), showing the effect of this PR on open source code:\n```diff\n' + data + '```' + } else { + body = "According to [mypy_primer](https://github.com/hauntsaninja/mypy_primer), this change doesn't affect type check results on a corpus of open source code. ✅" + } + const prNumber = parseInt(fs.readFileSync("pr_number.txt", { encoding: "utf8" })) + await github.rest.issues.createComment({ + issue_number: prNumber, + owner: context.repo.owner, + repo: context.repo.repo, + body + }) + return prNumber + + - name: Hide old comments + # v0.4.0 + uses: kanga333/comment-hider@c12bb20b48aeb8fc098e35967de8d4f8018fffdf + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + leave_visible: 1 + issue_number: ${{ steps.post-comment.outputs.result }} From 5d4ab3b5ad52c836671909c8d570a78494ad7b19 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 8 Jun 2023 22:02:59 -0600 Subject: [PATCH 267/525] Fixed paths --- .github/workflows/mypy_primer.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/mypy_primer.yaml b/.github/workflows/mypy_primer.yaml index 61f451443..e28d86fce 100644 --- a/.github/workflows/mypy_primer.yaml +++ b/.github/workflows/mypy_primer.yaml @@ -3,9 +3,9 @@ name: Run mypy_primer on: pull_request: paths: - - 'pyright/**' - - 'pyright-internal/src/**' - - 'pyright-internal/typeshed-fallback/**' + - 'packages/pyright/**' + - 'packages/pyright-internal/src/**' + - 'packages/pyright-internal/typeshed-fallback/**' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} From 10e077bfedcc2846e104d4e1d32ffdd0ebf0c994 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 8 Jun 2023 22:03:29 -0600 Subject: [PATCH 268/525] Fixed formatting --- .github/workflows/mypy_primer.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/mypy_primer.yaml b/.github/workflows/mypy_primer.yaml index e28d86fce..485c9cfd3 100644 --- a/.github/workflows/mypy_primer.yaml +++ b/.github/workflows/mypy_primer.yaml @@ -3,9 +3,9 @@ name: Run mypy_primer on: pull_request: paths: - - 'packages/pyright/**' - - 'packages/pyright-internal/src/**' - - 'packages/pyright-internal/typeshed-fallback/**' + - 'packages/pyright/**' + - 'packages/pyright-internal/src/**' + - 'packages/pyright-internal/typeshed-fallback/**' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -28,7 +28,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: '3.10' - name: Install dependencies run: | python -m pip install -U pip From b6c8378950518c0f3acf6c56a3dd070a4818f1ec Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 8 Jun 2023 22:45:10 -0600 Subject: [PATCH 269/525] Created separate workflow for running mypy_primer on push to main. --- .github/workflows/mypy_primer_comment.yaml | 2 +- .../{mypy_primer.yaml => mypy_primer_pr.yaml} | 16 +++-- .github/workflows/mypy_primer_push.yaml | 59 +++++++++++++++++++ 3 files changed, 71 insertions(+), 6 deletions(-) rename .github/workflows/{mypy_primer.yaml => mypy_primer_pr.yaml} (78%) create mode 100644 .github/workflows/mypy_primer_push.yaml diff --git a/.github/workflows/mypy_primer_comment.yaml b/.github/workflows/mypy_primer_comment.yaml index 6e3bb5903..b03533982 100644 --- a/.github/workflows/mypy_primer_comment.yaml +++ b/.github/workflows/mypy_primer_comment.yaml @@ -3,7 +3,7 @@ name: Comment with mypy_primer diff on: workflow_run: workflows: - - Run mypy_primer + - Run mypy_primer on PR types: - completed diff --git a/.github/workflows/mypy_primer.yaml b/.github/workflows/mypy_primer_pr.yaml similarity index 78% rename from .github/workflows/mypy_primer.yaml rename to .github/workflows/mypy_primer_pr.yaml index 485c9cfd3..337d83a89 100644 --- a/.github/workflows/mypy_primer.yaml +++ b/.github/workflows/mypy_primer_pr.yaml @@ -1,4 +1,4 @@ -name: Run mypy_primer +name: Run mypy_primer on PR on: pull_request: @@ -13,13 +13,13 @@ concurrency: jobs: mypy_primer: - name: Run mypy_primer + name: Run mypy_primer on PR runs-on: ubuntu-latest permissions: contents: read strategy: matrix: - shard-index: [0, 1, 2] + shard-index: [0] fail-fast: false steps: - uses: actions/checkout@v3 @@ -38,6 +38,12 @@ jobs: run: | cd pyright_to_test echo "new commit" + git rev-list --format=%s --max-count=1 $GITHUB_SHA + + MERGE_BASE=$(git merge-base $GITHUB_SHA origin/$GITHUB_BASE_REF) + git checkout -b base_commit $MERGE_BASE + echo "base commit" + git rev-list --format=%s --max-count=1 base_commit echo '' cd .. @@ -46,8 +52,8 @@ jobs: mypy_primer \ --repo pyright_to_test \ --type-checker pyright \ - --new $GITHUB_SHA \ - --num-shards 3 --shard-index ${{ matrix.shard-index }} \ + --new $GITHUB_SHA --old base_commit \ + --num-shards 1 --shard-index ${{ matrix.shard-index }} \ --debug \ --output concise \ | tee diff_${{ matrix.shard-index }}.txt diff --git a/.github/workflows/mypy_primer_push.yaml b/.github/workflows/mypy_primer_push.yaml new file mode 100644 index 000000000..e8ca9d7f1 --- /dev/null +++ b/.github/workflows/mypy_primer_push.yaml @@ -0,0 +1,59 @@ +name: Run mypy_primer on push + +on: + push: + branches: + - main + paths: + - 'packages/pyright/**' + - 'packages/pyright-internal/src/**' + - 'packages/pyright-internal/typeshed-fallback/**' + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + mypy_primer: + name: Run mypy_primer on push + runs-on: ubuntu-latest + permissions: + contents: read + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v3 + with: + path: pyright_to_test + fetch-depth: 0 + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install dependencies + run: | + python -m pip install -U pip + pip install git+https://github.com/hauntsaninja/mypy_primer.git + - name: Run mypy_primer + shell: bash + run: | + cd pyright_to_test + echo "new commit" + git rev-list --format=%s --max-count=1 $GITHUB_SHA + + cd .. + # fail action if exit code isn't zero or one + ( + mypy_primer \ + --repo pyright_to_test \ + --type-checker pyright \ + --new $GITHUB_SHA \ + --debug \ + --output concise \ + | tee diff.txt + ) || [ $? -eq 1 ] + - name: Upload mypy_primer diff + uses: actions/upload-artifact@v3 + with: + name: mypy_primer_diffs + path: diff.txt From 71f0f77afc97531ee6dee6b6c0aeef27bfee2e70 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 8 Jun 2023 23:09:15 -0600 Subject: [PATCH 270/525] Added comments to new workflow definition files. --- .github/workflows/mypy_primer_comment.yaml | 3 +++ .github/workflows/mypy_primer_pr.yaml | 16 ++++++++++++++++ .github/workflows/mypy_primer_push.yaml | 6 ++++++ 3 files changed, 25 insertions(+) diff --git a/.github/workflows/mypy_primer_comment.yaml b/.github/workflows/mypy_primer_comment.yaml index b03533982..43db369f7 100644 --- a/.github/workflows/mypy_primer_comment.yaml +++ b/.github/workflows/mypy_primer_comment.yaml @@ -1,3 +1,6 @@ +# This workflow runs when the "Run mypy_primer on PR" workflow completes. +# It downloads the diff from the other workflow instances and creates +# a summary comment in the PR. name: Comment with mypy_primer diff on: diff --git a/.github/workflows/mypy_primer_pr.yaml b/.github/workflows/mypy_primer_pr.yaml index 337d83a89..62dd03ad7 100644 --- a/.github/workflows/mypy_primer_pr.yaml +++ b/.github/workflows/mypy_primer_pr.yaml @@ -1,6 +1,22 @@ +# This workflow runs mypy_primer, a tool that runs pyright on a variety +# of open-source Python projects that are known to type check with pyright. +# It builds pyright from the latest PR commit and the merge base of the PR +# and compares the output of both. It uploads the diffs as an artifact and +# creates a PR comment with the results (with the help of the +# mypy_primer_comment action). + +# This workflow definition borrows liberally from the mypy repo. The original +# workflow was designed to work in a sharded manner where n copies of +# mypy_primer are started in parallel. Each instance runs 1/n of the projects. +# For now, we run only one instance because pyright is fast, and the number +# of projects that use pyright for type checking is small. To change this in +# the future, change the 'shard_index' matrix to [0, 1, ..., n-1] and set +# 'num-shards' to n. + name: Run mypy_primer on PR on: + # Run on the creation or update of a PR. pull_request: paths: - 'packages/pyright/**' diff --git a/.github/workflows/mypy_primer_push.yaml b/.github/workflows/mypy_primer_push.yaml index e8ca9d7f1..17351fec4 100644 --- a/.github/workflows/mypy_primer_push.yaml +++ b/.github/workflows/mypy_primer_push.yaml @@ -1,6 +1,11 @@ +# This workflow runs mypy_primer, a tool that runs pyright on a variety +# of open-source Python projects that are known to type check with pyright. +# It builds pyright from the latest commit and the last release tag and +# compares the output of both. It uploads the diffs as an artifact. name: Run mypy_primer on push on: + # Run on all pushes to main. push: branches: - main @@ -8,6 +13,7 @@ on: - 'packages/pyright/**' - 'packages/pyright-internal/src/**' - 'packages/pyright-internal/typeshed-fallback/**' + # Also run manually if requested. workflow_dispatch: concurrency: From dc9413ce7141c2032cf76d96258b8aaeda3c8f9b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 8 Jun 2023 23:23:47 -0600 Subject: [PATCH 271/525] Fixed style issue. --- .github/workflows/mypy_primer_pr.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mypy_primer_pr.yaml b/.github/workflows/mypy_primer_pr.yaml index 62dd03ad7..0109e6a8d 100644 --- a/.github/workflows/mypy_primer_pr.yaml +++ b/.github/workflows/mypy_primer_pr.yaml @@ -5,7 +5,7 @@ # creates a PR comment with the results (with the help of the # mypy_primer_comment action). -# This workflow definition borrows liberally from the mypy repo. The original +# This workflow definition borrows liberally from the mypy repo. The original # workflow was designed to work in a sharded manner where n copies of # mypy_primer are started in parallel. Each instance runs 1/n of the projects. # For now, we run only one instance because pyright is fast, and the number From 0d0e716f92786d56065c976df170670cd37bb057 Mon Sep 17 00:00:00 2001 From: Serhii Tereshchenko Date: Fri, 9 Jun 2023 17:37:45 +0300 Subject: [PATCH 272/525] Update ci-integration.md (#5259) When both scripts are executed in `scripts:` section, and `pyright` reports error, second script is not executed. Best way to ensure report are always converted, is to use `after_script:` block. --- docs/ci-integration.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/ci-integration.md b/docs/ci-integration.md index adee361c9..93a7830fd 100644 --- a/docs/ci-integration.md +++ b/docs/ci-integration.md @@ -33,6 +33,7 @@ job_name: - npm i -g pyright-to-gitlab-ci script: - pyright --outputjson > report_raw.json + after_script: - pyright-to-gitlab-ci --src report_raw.json --output report.json --base_path . artifacts: paths: From 639717217d7685dbc5a4d22fe2f9e878d9f68356 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 9 Jun 2023 17:02:27 -0600 Subject: [PATCH 273/525] Fixed bug that resulted in a false negative when using the `reportMissingTypeArgument` check when defining an old-style type alias. This same bug resulted in inconsistent behavior between `Union` and `|`, which should be equivalent. This addresses https://github.com/microsoft/pyright/issues/5256. (#5262) Co-authored-by: Eric Traut --- .../src/analyzer/operations.ts | 11 ++++++++++ .../src/analyzer/typeEvaluator.ts | 21 +++++++++++-------- .../src/analyzer/typeEvaluatorTypes.ts | 1 + .../src/tests/samples/typeAlias17.py | 21 +++++++++++++++---- .../src/tests/typeEvaluator3.test.ts | 2 +- 5 files changed, 42 insertions(+), 14 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/operations.ts b/packages/pyright-internal/src/analyzer/operations.ts index cbc7ba0e4..cb159d9f4 100644 --- a/packages/pyright-internal/src/analyzer/operations.ts +++ b/packages/pyright-internal/src/analyzer/operations.ts @@ -619,6 +619,17 @@ export function getTypeOfBinaryOperation( return { type: UnknownType.create() }; } + adjustedLeftType = evaluator.reportMissingTypeArguments( + node.leftExpression, + adjustedLeftType, + flags | EvaluatorFlags.ExpectingType + ); + adjustedRightType = evaluator.reportMissingTypeArguments( + node.rightExpression, + adjustedRightType, + flags | EvaluatorFlags.ExpectingType + ); + const newUnion = combineTypes([adjustedLeftType, adjustedRightType]); if (isUnion(newUnion)) { TypeBase.setSpecialForm(newUnion); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 6304a9478..6cb310fc8 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -4604,15 +4604,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Is this a generic class that needs to be specialized? if (isInstantiableClass(type)) { if ((flags & EvaluatorFlags.ExpectingType) !== 0) { - if (requiresTypeArguments(type) && !type.typeArguments) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportMissingTypeArgument, - DiagnosticRule.reportMissingTypeArgument, - Localizer.Diagnostic.typeArgsMissingForClass().format({ - name: type.aliasName || type.details.name, - }), - node - ); + if (!type.typeAliasInfo && requiresTypeArguments(type)) { + if (!type.typeArguments || !type.isTypeArgumentExplicit) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportMissingTypeArgument, + DiagnosticRule.reportMissingTypeArgument, + Localizer.Diagnostic.typeArgsMissingForClass().format({ + name: type.aliasName || type.details.name, + }), + node + ); + } } } if (!type.typeArguments) { @@ -25291,6 +25293,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getBuiltInObject, getTypingType, verifyTypeArgumentsAssignable, + reportMissingTypeArguments, inferReturnTypeIfNecessary, inferTypeParameterVarianceForClass, isFinalVariable, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 804eadb84..0d3d20678 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -616,6 +616,7 @@ export interface TypeEvaluator { flags: AssignTypeFlags, recursionCount: number ) => boolean; + reportMissingTypeArguments: (node: ExpressionNode, type: Type, flags: EvaluatorFlags) => Type; isFinalVariable: (symbol: Symbol) => boolean; isFinalVariableDeclaration: (decl: Declaration) => boolean; diff --git a/packages/pyright-internal/src/tests/samples/typeAlias17.py b/packages/pyright-internal/src/tests/samples/typeAlias17.py index 0c9cf5b11..428ecdde4 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias17.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias17.py @@ -11,7 +11,7 @@ TA1 = dict[T1, T2] -# This should generate an error if reportMissingTypeArguments is enabled. +# This should generate an error if reportMissingTypeArgument is enabled. a1: TA1 # This should generate an error because of too few type arguments. a2: TA1[str] @@ -21,7 +21,7 @@ TA2 = Callable[P, T1] -# This should generate an error if reportMissingTypeArguments is enabled. +# This should generate an error if reportMissingTypeArgument is enabled. b1: TA2 # This should generate an error because of too few type arguments. b2: TA2[...] @@ -31,7 +31,7 @@ TA3 = Callable[P, int] -# This should generate an error if reportMissingTypeArguments is enabled. +# This should generate an error if reportMissingTypeArgument is enabled. c1: TA3 c2: TA3[int] c3: TA3[int, int] @@ -40,8 +40,21 @@ TA4 = list[T1] | tuple[Unpack[Tv1]] -# This should generate an error if reportMissingTypeArguments is enabled. +# This should generate an error if reportMissingTypeArgument is enabled. d1: TA4 d2: TA4[int] d3: TA4[int, int] d4: TA4[int, int, int] + + +_T = TypeVar("_T") +TA5 = dict[_T, _T] + +# This should generate an error if reportMissingTypeArgument is enabled +TA6 = TA5 | None + +# This should generate an error if reportMissingTypeArgument is enabled +TA7 = list | str + +# This should generate an error if reportMissingTypeArgument is enabled +TA8 = str | dict diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 72b99b8e4..9544e9906 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -612,7 +612,7 @@ test('TypeAlias17', () => { configOptions.diagnosticRuleSet.reportMissingTypeArgument = 'error'; const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['typeAlias17.py'], configOptions); - TestUtils.validateResults(analysisResults2, 8); + TestUtils.validateResults(analysisResults2, 11); }); test('TypeAlias18', () => { From c7f3b8d9fd3c25228d199b6194eba052e60b7750 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 9 Jun 2023 17:34:13 -0600 Subject: [PATCH 274/525] Fixed a bug that led to a false negative when passing an unpacked tuple of length one to a function that requires more (or fewer) than one positional argument. This addresses https://github.com/microsoft/pyright/issues/5261. (#5263) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 2 +- .../pyright-internal/src/tests/samples/call2.py | 16 ++++++++++++++-- .../src/tests/typeEvaluator1.test.ts | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 6cb310fc8..6ab07cda7 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9298,7 +9298,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isClassInstance(combinedArgType) && isTupleClass(combinedArgType)) { const tupleTypeArgs = combinedArgType.tupleTypeArguments ?? []; - if (tupleTypeArgs.length !== 1) { + if (tupleTypeArgs.length !== 1 || !tupleTypeArgs[0].isUnbounded) { for (const tupleTypeArg of tupleTypeArgs) { if (tupleTypeArg.isUnbounded) { expandedArgList.push({ diff --git a/packages/pyright-internal/src/tests/samples/call2.py b/packages/pyright-internal/src/tests/samples/call2.py index 4e87e7270..35271d113 100644 --- a/packages/pyright-internal/src/tests/samples/call2.py +++ b/packages/pyright-internal/src/tests/samples/call2.py @@ -118,12 +118,24 @@ def func9( # This should generate an error. func9(*args4, **kwargs3) -def func10(x: int): ... + +def func10(x: int): + ... + func10(1, *()) # This should generate an error. -func10(1, *(1, )) +func10(1, *(1,)) + +func10(*(1,)) + +# This should generate an error. +func10(*(1, 1)) + +# This should generate an error. +func10(*("",)) + def func11(y: tuple[int, ...]): func10(1, *y) diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index a8ea63498..d9143da22 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -690,7 +690,7 @@ test('Call1', () => { test('Call2', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['call2.py']); - TestUtils.validateResults(analysisResults, 13); + TestUtils.validateResults(analysisResults, 15); }); test('Call3', () => { From d5856e38a0e96cc49efc941dff3427a48de9c342 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 9 Jun 2023 19:03:32 -0600 Subject: [PATCH 275/525] Reverted the use of the TypeWalker for the `isPartlyUnknown` function. This function is called very frequently, and allocating a new walker object every time it's called is too expensive. This addresses https://github.com/microsoft/pyright/issues/5245. --- .../src/analyzer/typeUtils.ts | 88 +++++++++++++++---- 1 file changed, 73 insertions(+), 15 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index d181e1ed2..098c2d16d 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2165,31 +2165,89 @@ export function containsAnyOrUnknown(type: Type, recurse: boolean): AnyType | Un } // Determines if any part of the type contains "Unknown", including any type arguments. -export function isPartlyUnknown(type: Type, allowUnknownTypeArgsForClasses = false): boolean { - class PartlyUnknownWalker extends TypeWalker { - isPartlyUnknown = false; +// This function does not use the TypeWalker because it is called very frequently, +// and allocating a memory walker object for every call significantly increases +// peak memory usage. +export function isPartlyUnknown(type: Type, allowUnknownTypeArgsForClasses = false, recursionCount = 0): boolean { + if (recursionCount > maxTypeRecursionCount) { + return false; + } + recursionCount++; - constructor(private _allowUnknownTypeArgsForClasses: boolean) { - super(); + if (isUnknown(type)) { + return true; + } + + // If this is a generic type alias, see if any of its type arguments + // are either unspecified or are partially known. + if (type.typeAliasInfo?.typeArguments) { + if ( + type.typeAliasInfo.typeArguments.some((typeArg) => + isPartlyUnknown(typeArg, allowUnknownTypeArgsForClasses, recursionCount) + ) + ) { + return true; } + } - override visitUnknown(type: UnknownType) { - this.isPartlyUnknown = true; + // See if a union contains an unknown type. + if (isUnion(type)) { + return ( + findSubtype(type, (subtype) => isPartlyUnknown(subtype, allowUnknownTypeArgsForClasses, recursionCount)) !== + undefined + ); + } - // No need to keep walking. - this.cancelWalk(); + // See if an object or class has an unknown type argument. + if (isClass(type)) { + if (TypeBase.isInstance(type)) { + allowUnknownTypeArgsForClasses = false; } - override visitClass(type: ClassType) { - if (!this._allowUnknownTypeArgsForClasses || !TypeBase.isInstantiable(type)) { - super.visitClass(type); + if (!allowUnknownTypeArgsForClasses && !ClassType.isPseudoGenericClass(type)) { + const typeArgs = type.tupleTypeArguments?.map((t) => t.type) || type.typeArguments; + if (typeArgs) { + for (const argType of typeArgs) { + if (isPartlyUnknown(argType, allowUnknownTypeArgsForClasses, recursionCount)) { + return true; + } + } } } + + return false; } - const walker = new PartlyUnknownWalker(allowUnknownTypeArgsForClasses); - walker.walk(type); - return walker.isPartlyUnknown; + // See if a function has an unknown type. + if (isOverloadedFunction(type)) { + return OverloadedFunctionType.getOverloads(type).some((overload) => { + return isPartlyUnknown(overload, /* allowUnknownTypeArgsForClasses */ false, recursionCount); + }); + } + + if (isFunction(type)) { + for (let i = 0; i < type.details.parameters.length; i++) { + // Ignore parameters such as "*" that have no name. + if (type.details.parameters[i].name) { + const paramType = FunctionType.getEffectiveParameterType(type, i); + if (isPartlyUnknown(paramType, /* allowUnknownTypeArgsForClasses */ false, recursionCount)) { + return true; + } + } + } + + if ( + type.details.declaredReturnType && + !FunctionType.isParamSpecValue(type) && + isPartlyUnknown(type.details.declaredReturnType, /* allowUnknownTypeArgsForClasses */ false, recursionCount) + ) { + return true; + } + + return false; + } + + return false; } // If the specified type is a generic class with a single type argument From f018ebdd29b892ccb96aeb704151b87fd821acab Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 11 Jun 2023 08:19:30 -0700 Subject: [PATCH 276/525] Fixed false positive error when using a `*args: P.args` as the first parameter in a method. --- packages/pyright-internal/src/analyzer/checker.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 753378b6a..e6f0250b9 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -6174,6 +6174,15 @@ export class Checker extends ParseTreeWalker { return; } + // If the method starts with a `*args: P.args`, skip the check. + if ( + paramInfo.category === ParameterCategory.ArgsList && + isParamSpec(paramInfo.type) && + paramInfo.type.paramSpecAccess === 'args' + ) { + return; + } + // Don't enforce this for an overloaded method because the "self" param // annotation can be used as a filter for the overload. This differs from // mypy, which enforces this check for overloads, but there are legitimate From 3931cf64316440eadbf490dbcd0cff408a9f9e3a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 11 Jun 2023 19:52:24 -0700 Subject: [PATCH 277/525] Simplified buildTypeVarContextFromSpecializedClass utility function in preparation for further changes. (#5269) Co-authored-by: Eric Traut --- .../src/analyzer/constructors.ts | 2 +- .../src/analyzer/dataClasses.ts | 2 +- .../src/analyzer/typeUtils.ts | 23 +++++++------------ .../pyright-internal/src/analyzer/types.ts | 2 +- .../src/tests/samples/memberAccess14.py | 2 +- 5 files changed, 12 insertions(+), 19 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 985835ee7..214ceb44d 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -483,7 +483,7 @@ function validateInitMethod( if (!returnType) { const typeVarContext = type.typeArguments - ? buildTypeVarContextFromSpecializedClass(type, /* makeConcrete */ false) + ? buildTypeVarContextFromSpecializedClass(type) : new TypeVarContext(getTypeVarScopeId(type)); typeVarContext.addSolveForScope(getTypeVarScopeId(initMethodType)); diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index 622457185..a2ec3f026 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -835,7 +835,7 @@ function addInheritedDataClassEntries(classType: ClassType, entries: DataClassEn ClassType.getReverseMro(classType).forEach((mroClass) => { if (isInstantiableClass(mroClass)) { - const typeVarContext = buildTypeVarContextFromSpecializedClass(mroClass, /* makeConcrete */ false); + const typeVarContext = buildTypeVarContextFromSpecializedClass(mroClass); const dataClassEntries = ClassType.getDataClassEntries(mroClass); // Add the entries to the end of the list, replacing same-named diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 098c2d16d..fa7a57e01 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -972,7 +972,7 @@ export function partiallySpecializeType( } // Partially specialize the type using the specialized class type vars. - const typeVarContext = buildTypeVarContextFromSpecializedClass(contextClassType, /* makeConcrete */ undefined); + const typeVarContext = buildTypeVarContextFromSpecializedClass(contextClassType); if (selfClass) { populateTypeVarContextForSelfType(typeVarContext, contextClassType, selfClass); @@ -1732,18 +1732,10 @@ export function setTypeArgumentsRecursive( // types. For example, if the generic type is Dict[_T1, _T2] and the // specialized type is Dict[str, int], it returns a map that associates // _T1 with str and _T2 with int. -export function buildTypeVarContextFromSpecializedClass(classType: ClassType, makeConcrete = true): TypeVarContext { +export function buildTypeVarContextFromSpecializedClass(classType: ClassType): TypeVarContext { const typeParameters = ClassType.getTypeParameters(classType); - let typeArguments = classType.typeArguments; - // If there are no type arguments, we can either use the type variables - // from the type parameters (keeping the type arguments generic) or - // fill in concrete types. - if (!typeArguments && !makeConcrete) { - typeArguments = typeParameters; - } - - const typeVarContext = buildTypeVarContext(typeParameters, typeArguments, getTypeVarScopeId(classType)); + const typeVarContext = buildTypeVarContext(typeParameters, classType.typeArguments, getTypeVarScopeId(classType)); if (ClassType.isTupleClass(classType) && classType.tupleTypeArguments && typeParameters.length >= 1) { typeVarContext.setTupleTypeVar(typeParameters[0], classType.tupleTypeArguments); } @@ -1757,11 +1749,12 @@ export function buildTypeVarContext( typeVarScopeId: TypeVarScopeId | undefined ): TypeVarContext { const typeVarContext = new TypeVarContext(typeVarScopeId); + typeParameters.forEach((typeParam, index) => { let typeArgType: Type; if (typeArgs) { - if (isParamSpec(typeParam)) { + if (typeParam.details.isParamSpec) { if (index < typeArgs.length) { typeArgType = typeArgs[index]; if (isFunction(typeArgType) && FunctionType.isParamSpecValue(typeArgType)) { @@ -2714,7 +2707,7 @@ export function computeMroLinearization(classType: ClassType): boolean { filteredBaseClasses.forEach((baseClass) => { if (isInstantiableClass(baseClass)) { - const typeVarContext = buildTypeVarContextFromSpecializedClass(baseClass, /* makeConcrete */ false); + const typeVarContext = buildTypeVarContextFromSpecializedClass(baseClass); classListsToMerge.push( baseClass.details.mro.map((mroClass) => { return applySolvedTypeVars(mroClass, typeVarContext); @@ -2727,13 +2720,13 @@ export function computeMroLinearization(classType: ClassType): boolean { classListsToMerge.push( filteredBaseClasses.map((baseClass) => { - const typeVarContext = buildTypeVarContextFromSpecializedClass(classType, /* makeConcrete */ false); + const typeVarContext = buildTypeVarContextFromSpecializedClass(classType); return applySolvedTypeVars(baseClass, typeVarContext); }) ); // The first class in the MRO is the class itself. - const typeVarContext = buildTypeVarContextFromSpecializedClass(classType, /* makeConcrete */ false); + const typeVarContext = buildTypeVarContextFromSpecializedClass(classType); classType.details.mro.push(applySolvedTypeVars(classType, typeVarContext)); // Helper function that returns true if the specified searchClass diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index cc69542df..923537b7c 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -2445,7 +2445,7 @@ export namespace TypeVarType { const variance = type.computedVariance ?? type.details.declaredVariance; // By this point, the variance should have been inferred. - assert(variance !== Variance.Auto); + assert(variance !== Variance.Auto, 'Expected variance to be inferred'); return variance; } diff --git a/packages/pyright-internal/src/tests/samples/memberAccess14.py b/packages/pyright-internal/src/tests/samples/memberAccess14.py index 43c8b3c79..1b8205e85 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess14.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess14.py @@ -52,7 +52,7 @@ class D(C[float]): ... -reveal_type(C.prop, expected_text="CachedSlotProperty[C[T@C], int]") +reveal_type(C.prop, expected_text="CachedSlotProperty[Self@C[T@C], int]") reveal_type(D.prop, expected_text="CachedSlotProperty[D, int]") From 783633a260d18509f2afefb5e4acfefbaf65180c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 12 Jun 2023 08:21:10 -0700 Subject: [PATCH 278/525] Cleaned up code in protocols module in prep for a significant change required to fix https://github.com/microsoft/pyright/issues/5243. (#5272) Co-authored-by: Eric Traut --- .../src/analyzer/protocols.ts | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index e218e6c0f..18b0e1340 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -145,10 +145,7 @@ function assignClassToProtocolInternal( return isTypeSame(destType, srcType); } - // Strip the type arguments off the dest protocol if they are provided. - const genericDestType = ClassType.cloneForSpecialization(destType, undefined, /* isTypeArgumentExplicit */ false); - const genericDestTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); - + const protocolTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); const selfTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); const noLiteralSrcType = evaluator.stripLiteralValue(srcType) as ClassType; populateTypeVarContextForSelfType(selfTypeVarContext, destType, noLiteralSrcType); @@ -346,7 +343,7 @@ function assignClassToProtocolInternal( mroClass, srcType, subDiag?.createAddendum(), - genericDestTypeVarContext, + protocolTypeVarContext, selfTypeVarContext, recursionCount ) @@ -368,7 +365,7 @@ function assignClassToProtocolInternal( getterType, srcMemberType, subDiag?.createAddendum(), - genericDestTypeVarContext, + protocolTypeVarContext, /* srcTypeVarContext */ undefined, assignTypeFlags, recursionCount @@ -389,7 +386,7 @@ function assignClassToProtocolInternal( destMemberType, srcMemberType, subDiag?.createAddendum(), - genericDestTypeVarContext, + protocolTypeVarContext, /* srcTypeVarContext */ undefined, isInvariant ? assignTypeFlags | AssignTypeFlags.EnforceInvariance : assignTypeFlags, recursionCount @@ -431,13 +428,18 @@ function assignClassToProtocolInternal( if (typesAreConsistent && destType.details.typeParameters.length > 0) { // Create a specialized version of the protocol defined by the dest and // make sure the resulting type args can be assigned. - const specializedDestProtocol = applySolvedTypeVars(genericDestType, genericDestTypeVarContext) as ClassType; + const genericProtocolType = ClassType.cloneForSpecialization( + destType, + undefined, + /* isTypeArgumentExplicit */ false + ); + const specializedProtocolType = applySolvedTypeVars(genericProtocolType, protocolTypeVarContext) as ClassType; if (destType.typeArguments) { if ( !evaluator.verifyTypeArgumentsAssignable( destType, - specializedDestProtocol, + specializedProtocolType, diag, destTypeVarContext, srcTypeVarContext, @@ -447,22 +449,18 @@ function assignClassToProtocolInternal( ) { typesAreConsistent = false; } - } else if ( - destTypeVarContext && - destType.details.typeParameters.length > 0 && - specializedDestProtocol.typeArguments && - !destTypeVarContext.isLocked() - ) { - // Populate the typeVar map with type arguments of the source. - const srcTypeArgs = specializedDestProtocol.typeArguments; - for (let i = 0; i < destType.details.typeParameters.length; i++) { - const typeArgType = i < srcTypeArgs.length ? srcTypeArgs[i] : UnknownType.create(); - destTypeVarContext.setTypeVarType( - destType.details.typeParameters[i], - /* narrowBound */ undefined, - /* narrowBoundNoLiterals */ undefined, - typeArgType - ); + } else if (destTypeVarContext && !destTypeVarContext.isLocked()) { + for (const typeParam of destType.details.typeParameters) { + const typeArgEntry = protocolTypeVarContext.getPrimarySignature().getTypeVar(typeParam); + + if (typeArgEntry) { + destTypeVarContext.setTypeVarType( + typeParam, + typeArgEntry?.narrowBound, + typeArgEntry?.narrowBoundNoLiterals, + typeArgEntry?.wideBound + ); + } } } } @@ -475,7 +473,7 @@ export function assignModuleToProtocol( destType: ClassType, srcType: ModuleType, diag: DiagnosticAddendum | undefined, - typeVarContext: TypeVarContext | undefined, + destTypeVarContext: TypeVarContext | undefined, flags: AssignTypeFlags, recursionCount: number ): boolean { @@ -486,10 +484,7 @@ export function assignModuleToProtocol( let typesAreConsistent = true; const checkedSymbolSet = new Set(); - - // Strip the type arguments off the dest protocol if they are provided. - const genericDestType = ClassType.cloneForSpecialization(destType, undefined, /* isTypeArgumentExplicit */ false); - const genericDestTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); + const protocolTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); destType.details.mro.forEach((mroClass) => { if (!isInstantiableClass(mroClass) || !ClassType.isProtocolClass(mroClass)) { @@ -544,7 +539,7 @@ export function assignModuleToProtocol( destMemberType, srcMemberType, subDiag?.createAddendum(), - genericDestTypeVarContext, + protocolTypeVarContext, /* srcTypeVarContext */ undefined, AssignTypeFlags.Default, recursionCount @@ -562,14 +557,19 @@ export function assignModuleToProtocol( if (typesAreConsistent && destType.details.typeParameters.length > 0 && destType.typeArguments) { // Create a specialized version of the protocol defined by the dest and // make sure the resulting type args can be assigned. - const specializedSrcProtocol = applySolvedTypeVars(genericDestType, genericDestTypeVarContext) as ClassType; + const genericProtocolType = ClassType.cloneForSpecialization( + destType, + undefined, + /* isTypeArgumentExplicit */ false + ); + const specializedProtocolType = applySolvedTypeVars(genericProtocolType, protocolTypeVarContext) as ClassType; if ( !evaluator.verifyTypeArgumentsAssignable( destType, - specializedSrcProtocol, + specializedProtocolType, diag, - typeVarContext, + destTypeVarContext, /* srcTypeVarContext */ undefined, flags, recursionCount From 7ffe61abc1248027a42b309f25b8f51932c85cde Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 12 Jun 2023 08:40:51 -0700 Subject: [PATCH 279/525] Improved the protocol matching logic so it honors partially-solved type variables whose values are provided by other argument types in a call. This addresses https://github.com/microsoft/pyright/issues/5243. (#5273) Co-authored-by: Eric Traut --- .../src/analyzer/protocols.ts | 43 ++++++++++++++++- .../src/tests/samples/protocol41.py | 48 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 +++ 3 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/protocol41.py diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index 18b0e1340..443da9d8d 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -15,6 +15,7 @@ import { assignProperty } from './properties'; import { TypeEvaluator } from './typeEvaluatorTypes'; import { ClassType, + isAnyOrUnknown, isClassInstance, isFunction, isInstantiableClass, @@ -23,7 +24,9 @@ import { maxTypeRecursionCount, ModuleType, Type, + TypeVarType, UnknownType, + Variance, } from './types'; import { applySolvedTypeVars, @@ -36,6 +39,7 @@ import { partiallySpecializeType, populateTypeVarContextForSelfType, removeParamSpecVariadicsFromSignature, + requiresSpecialization, } from './typeUtils'; import { TypeVarContext } from './typeVarContext'; @@ -145,7 +149,7 @@ function assignClassToProtocolInternal( return isTypeSame(destType, srcType); } - const protocolTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); + const protocolTypeVarContext = createProtocolTypeVarContext(evaluator, destType, destTypeVarContext); const selfTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); const noLiteralSrcType = evaluator.stripLiteralValue(srcType) as ClassType; populateTypeVarContextForSelfType(selfTypeVarContext, destType, noLiteralSrcType); @@ -484,7 +488,7 @@ export function assignModuleToProtocol( let typesAreConsistent = true; const checkedSymbolSet = new Set(); - const protocolTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); + const protocolTypeVarContext = createProtocolTypeVarContext(evaluator, destType, destTypeVarContext); destType.details.mro.forEach((mroClass) => { if (!isInstantiableClass(mroClass) || !ClassType.isProtocolClass(mroClass)) { @@ -581,3 +585,38 @@ export function assignModuleToProtocol( return typesAreConsistent; } + +function createProtocolTypeVarContext( + evaluator: TypeEvaluator, + destType: ClassType, + destTypeVarContext: TypeVarContext | undefined +) { + const protocolTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); + if (destTypeVarContext && destType?.typeArguments) { + // Infer the type parameter variance because we need it below. + evaluator.inferTypeParameterVarianceForClass(destType); + + // Populate the typeVarContext with any concrete constraints that + // have already been solved. + const specializedDestType = applySolvedTypeVars(destType, destTypeVarContext, { + useNarrowBoundOnly: true, + }) as ClassType; + destType.details.typeParameters.forEach((typeParam, index) => { + if (index < specializedDestType.typeArguments!.length) { + const typeArg = specializedDestType.typeArguments![index]; + + if (!requiresSpecialization(typeArg) && !isAnyOrUnknown(typeArg)) { + const typeParamVariance = TypeVarType.getVariance(typeParam); + protocolTypeVarContext.setTypeVarType( + typeParam, + typeParamVariance !== Variance.Contravariant ? typeArg : undefined, + /* narrowBoundNoLiterals */ undefined, + typeParamVariance !== Variance.Covariant ? typeArg : undefined + ); + } + } + }); + } + + return protocolTypeVarContext; +} diff --git a/packages/pyright-internal/src/tests/samples/protocol41.py b/packages/pyright-internal/src/tests/samples/protocol41.py new file mode 100644 index 000000000..495c43716 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/protocol41.py @@ -0,0 +1,48 @@ +# This sample verifies that a generic protocol that is specialized with +# a type variable can be matched if that type variable's type is +# supplied by another argument in a call. + +from typing import Protocol, TypeVar + +_T_co = TypeVar("_T_co", covariant=True) +_T_contra = TypeVar("_T_contra", contravariant=True) + + +class MyStr: + ... + + +class MyBytes: + def __buffer__(self, __flags: int) -> memoryview: + ... + + +MyAnyStr = TypeVar("MyAnyStr", MyStr, MyBytes) + + +class Buffer(Protocol): + def __buffer__(self, __flags: int) -> memoryview: + ... + + +class SupportsRead(Protocol[_T_co]): + def read(self, __length: int = ...) -> _T_co: + ... + + +class SupportsWrite(Protocol[_T_contra]): + def write(self, __s: _T_contra) -> object: + ... + + +class BufferedWriter: + def write(self, __buffer: Buffer) -> int: + raise NotImplementedError + + +def f(s: SupportsRead[MyAnyStr], t: SupportsWrite[MyAnyStr]) -> None: + ... + + +def h(src: SupportsRead[MyBytes], tgt: BufferedWriter) -> None: + f(src, tgt) diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index de3098f9f..aad3fb1e3 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1359,6 +1359,12 @@ test('Protocol40', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Protocol41', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol41.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('TypedDict1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDict1.py']); From d20a39cef353263a5d63a3924fa1d58dff4ff26f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 12 Jun 2023 08:42:55 -0700 Subject: [PATCH 280/525] Typeshed update 2 (#5274) * Improved the protocol matching logic so it honors partially-solved type variables whose values are provided by other argument types in a call. This addresses https://github.com/microsoft/pyright/issues/5243. * Updated typeshed to the latest version. --------- Co-authored-by: Eric Traut --- .../src/tests/samples/typeAliasType1.py | 4 +- .../src/tests/typeEvaluator5.test.ts | 2 +- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/VERSIONS | 10 +- .../typeshed-fallback/stdlib/_ast.pyi | 51 ++- .../stdlib/_collections_abc.pyi | 11 + .../typeshed-fallback/stdlib/_csv.pyi | 4 + .../typeshed-fallback/stdlib/_ctypes.pyi | 5 + .../typeshed-fallback/stdlib/_socket.pyi | 25 ++ .../typeshed-fallback/stdlib/_thread.pyi | 3 + .../stdlib/_typeshed/__init__.pyi | 71 ++-- .../typeshed-fallback/stdlib/_winapi.pyi | 31 ++ .../typeshed-fallback/stdlib/argparse.pyi | 43 +- .../typeshed-fallback/stdlib/array.pyi | 2 + .../typeshed-fallback/stdlib/ast.pyi | 4 +- .../typeshed-fallback/stdlib/binhex.pyi | 6 +- .../typeshed-fallback/stdlib/builtins.pyi | 38 +- .../typeshed-fallback/stdlib/calendar.pyi | 75 +++- .../typeshed-fallback/stdlib/csv.pyi | 5 + .../stdlib/ctypes/__init__.pyi | 3 + .../typeshed-fallback/stdlib/dis.pyi | 5 +- .../stdlib/distutils/__init__.pyi | 5 + .../stdlib/email/generator.pyi | 8 +- .../typeshed-fallback/stdlib/email/policy.pyi | 3 +- .../typeshed-fallback/stdlib/fcntl.pyi | 17 +- .../typeshed-fallback/stdlib/fractions.pyi | 8 +- .../typeshed-fallback/stdlib/ftplib.pyi | 15 +- .../typeshed-fallback/stdlib/functools.pyi | 53 ++- .../typeshed-fallback/stdlib/gzip.pyi | 6 +- .../typeshed-fallback/stdlib/hmac.pyi | 4 +- .../stdlib/http/__init__.pyi | 11 + .../typeshed-fallback/stdlib/imaplib.pyi | 4 +- .../typeshed-fallback/stdlib/inspect.pyi | 22 + .../stdlib/json/__init__.pyi | 9 + .../typeshed-fallback/stdlib/locale.pyi | 11 +- .../stdlib/logging/handlers.pyi | 2 +- .../typeshed-fallback/stdlib/math.pyi | 9 +- .../typeshed-fallback/stdlib/mmap.pyi | 2 + .../stdlib/multiprocessing/connection.pyi | 7 +- .../stdlib/multiprocessing/queues.pyi | 2 + .../typeshed-fallback/stdlib/opcode.pyi | 12 +- .../typeshed-fallback/stdlib/pathlib.pyi | 28 +- .../typeshed-fallback/stdlib/pdb.pyi | 5 +- .../typeshed-fallback/stdlib/pickle.pyi | 2 + .../typeshed-fallback/stdlib/pkgutil.pyi | 13 +- .../typeshed-fallback/stdlib/random.pyi | 13 +- .../typeshed-fallback/stdlib/shutil.pyi | 46 +- .../typeshed-fallback/stdlib/smtplib.pyi | 4 +- .../typeshed-fallback/stdlib/socket.pyi | 35 ++ .../typeshed-fallback/stdlib/socketserver.pyi | 5 + .../typeshed-fallback/stdlib/statistics.pyi | 9 +- .../typeshed-fallback/stdlib/sys.pyi | 12 +- .../typeshed-fallback/stdlib/tempfile.pyi | 234 +++++++++-- .../typeshed-fallback/stdlib/threading.pyi | 7 + .../typeshed-fallback/stdlib/token.pyi | 9 + .../typeshed-fallback/stdlib/tokenize.pyi | 3 + .../typeshed-fallback/stdlib/types.pyi | 8 +- .../typeshed-fallback/stdlib/typing.pyi | 130 ++++-- .../stdlib/typing_extensions.pyi | 138 ++++-- .../typeshed-fallback/stdlib/uuid.pyi | 3 + .../typeshed-fallback/stdlib/weakref.pyi | 2 +- .../typeshed-fallback/stdlib/webbrowser.pyi | 11 +- .../stdlib/xmlrpc/client.pyi | 10 +- .../typeshed-fallback/stdlib/zipfile.pyi | 4 +- .../typeshed-fallback/stdlib/zipimport.pyi | 6 +- .../ExifRead/@tests/stubtest_allowlist.txt | 2 + .../@tests/stubtest_allowlist.txt | 2 + .../Markdown/@tests/stubtest_allowlist.txt | 11 + .../Pillow/@tests/stubtest_allowlist.txt | 26 ++ .../@tests/stubtest_allowlist_win32.txt | 2 + .../@tests/test_cases/check_tk_compat.py | 15 + .../PyAutoGUI/@tests/stubtest_allowlist.txt | 1 + .../stubs/PyAutoGUI/pyautogui/__init__.pyi | 7 +- .../PyMySQL/@tests/stubtest_allowlist.txt | 12 + .../@tests/stubtest_allowlist_linux.txt | 4 + .../stubs/PyScreeze/pyscreeze/__init__.pyi | 6 +- .../PyYAML/@tests/stubtest_allowlist.txt | 8 + .../stubs/PyYAML/yaml/__init__.pyi | 332 ++++++++++----- .../Pygments/@tests/stubtest_allowlist.txt | 9 + .../SQLAlchemy/@tests/stubtest_allowlist.txt | 85 ++++ .../@tests/test_cases/check_loader_option.py | 60 +++ .../@tests/test_cases/check_register.py | 68 +++ .../aiofiles/@tests/stubtest_allowlist.txt | 98 +++++ .../@tests/stubtest_allowlist_darwin.txt | 2 + .../@tests/stubtest_allowlist_linux.txt | 2 + .../stubs/aiofiles/aiofiles/os.pyi | 36 +- .../aiofiles/aiofiles/tempfile/temptypes.pyi | 6 +- .../@tests/stubtest_allowlist.txt | 4 + .../stubs/babel/METADATA.toml | 2 +- .../stubs/babel/babel/messages/frontend.pyi | 3 +- .../bleach/@tests/stubtest_allowlist.txt | 2 + .../boltons/@tests/stubtest_allowlist.txt | 10 + .../stubs/boltons/METADATA.toml | 4 + .../stubs/boltons/boltons/__init__.pyi | 0 .../stubs/boltons/boltons/cacheutils.pyi | 115 +++++ .../stubs/boltons/boltons/debugutils.pyi | 9 + .../stubs/boltons/boltons/deprutils.pyi | 8 + .../stubs/boltons/boltons/dictutils.pyi | 90 ++++ .../stubs/boltons/boltons/easterutils.pyi | 3 + .../stubs/boltons/boltons/ecoutils.pyi | 28 ++ .../stubs/boltons/boltons/excutils.pyi | 9 + .../stubs/boltons/boltons/fileutils.pyi | 79 ++++ .../stubs/boltons/boltons/formatutils.pyi | 35 ++ .../stubs/boltons/boltons/funcutils.pyi | 59 +++ .../stubs/boltons/boltons/gcutils.pyi | 14 + .../stubs/boltons/boltons/ioutils.pyi | 93 +++++ .../stubs/boltons/boltons/iterutils.pyi | 83 ++++ .../stubs/boltons/boltons/jsonutils.pyi | 25 ++ .../stubs/boltons/boltons/listutils.pyi | 33 ++ .../stubs/boltons/boltons/mathutils.pyi | 33 ++ .../stubs/boltons/boltons/mboxutils.pyi | 8 + .../stubs/boltons/boltons/namedutils.pyi | 4 + .../stubs/boltons/boltons/pathutils.pyi | 11 + .../stubs/boltons/boltons/queueutils.pyi | 15 + .../stubs/boltons/boltons/setutils.pyi | 89 ++++ .../stubs/boltons/boltons/socketutils.pyi | 72 ++++ .../stubs/boltons/boltons/statsutils.pyi | 62 +++ .../stubs/boltons/boltons/strutils.pyi | 64 +++ .../stubs/boltons/boltons/tableutils.pyi | 63 +++ .../stubs/boltons/boltons/tbutils.pyi | 85 ++++ .../stubs/boltons/boltons/timeutils.pyi | 62 +++ .../stubs/boltons/boltons/typeutils.pyi | 10 + .../stubs/boltons/boltons/urlutils.pyi | 86 ++++ .../stubs/boto/@tests/stubtest_allowlist.txt | 9 + .../braintree/@tests/stubtest_allowlist.txt | 1 + .../stubs/braintree/METADATA.toml | 2 +- .../cachetools/@tests/stubtest_allowlist.txt | 22 + .../caldav/@tests/stubtest_allowlist.txt | 13 + .../stubs/cffi/@tests/stubtest_allowlist.txt | 4 + .../cffi/@tests/stubtest_allowlist_darwin.txt | 2 + .../cffi/@tests/stubtest_allowlist_linux.txt | 2 + .../stubs/cffi/METADATA.toml | 1 + .../typeshed-fallback/stubs/cffi/cffi/api.pyi | 4 +- .../stubs/chardet/METADATA.toml | 6 - .../stubs/chardet/chardet/__init__.pyi | 16 - .../stubs/chardet/chardet/enums.pyi | 39 -- .../chardet/chardet/langbulgarianmodel.pyi | 7 - .../chardet/chardet/langcyrillicmodel.pyi | 15 - .../stubs/chardet/chardet/langgreekmodel.pyi | 7 - .../stubs/chardet/chardet/langhebrewmodel.pyi | 5 - .../chardet/chardet/langhungarianmodel.pyi | 7 - .../stubs/chardet/chardet/langthaimodel.pyi | 5 - .../chardet/chardet/langturkishmodel.pyi | 5 - .../chardet/chardet/universaldetector.pyi | 29 -- .../stubs/chardet/chardet/version.pyi | 2 - .../colorama/@tests/stubtest_allowlist.txt | 46 ++ .../@tests/stubtest_allowlist_linux.txt | 7 + .../contextvars/@tests/stubtest_allowlist.txt | 4 + .../dateparser/@tests/stubtest_allowlist.txt | 8 + .../decorator/@tests/stubtest_allowlist.txt | 9 + .../@tests/stubtest_allowlist.txt | 2 + .../docutils/@tests/stubtest_allowlist.txt | 24 ++ .../@tests/stubtest_allowlist.txt | 2 + .../entrypoints/@tests/stubtest_allowlist.txt | 2 + .../@tests/stubtest_allowlist.txt | 1 + .../stubs/flake8-bugbear/METADATA.toml | 2 +- .../@tests/stubtest_allowlist.txt | 6 + .../stubs/fpdf2/@tests/stubtest_allowlist.txt | 16 + .../@tests/stubtest_allowlist.txt | 4 + .../hdbcli/@tests/stubtest_allowlist.txt | 6 + .../httplib2/@tests/stubtest_allowlist.txt | 2 + .../@tests/stubtest_allowlist.txt | 11 + .../inifile/@tests/stubtest_allowlist.txt | 23 + .../stubs/inifile/METADATA.toml | 1 + .../stubs/inifile/inifile.pyi | 130 ++++++ .../invoke/@tests/stubtest_allowlist.txt | 3 + .../invoke/@tests/test_cases/check_task.py | 17 + .../keyboard/@tests/stubtest_allowlist.txt | 5 + .../@tests/stubtest_allowlist_darwin.txt | 3 + .../@tests/stubtest_allowlist_linux.txt | 3 + .../stubs/mock/@tests/stubtest_allowlist.txt | 2 + .../@tests/stubtest_allowlist.txt | 6 + .../mysqlclient/@tests/stubtest_allowlist.txt | 1 + .../netaddr/@tests/stubtest_allowlist.txt | 7 + .../oauthlib/@tests/stubtest_allowlist.txt | 1 + .../openpyxl/@tests/stubtest_allowlist.txt | 177 ++++++++ .../test_cases/check_base_descriptors.py | 392 ++++++++++++++++++ .../opentracing/@tests/stubtest_allowlist.txt | 4 + .../paramiko/@tests/stubtest_allowlist.txt | 3 + .../@tests/stubtest_allowlist_darwin.txt | 2 + .../@tests/stubtest_allowlist_linux.txt | 2 + .../@tests/stubtest_allowlist_win32.txt | 2 + .../stubs/paramiko/METADATA.toml | 2 +- .../stubs/paramiko/paramiko/agent.pyi | 3 +- .../stubs/paramiko/paramiko/auth_strategy.pyi | 57 +++ .../stubs/paramiko/paramiko/client.pyi | 7 +- .../stubs/paramiko/paramiko/rsakey.pyi | 2 +- .../@tests/stubtest_allowlist.txt | 8 + .../passlib/@tests/stubtest_allowlist.txt | 50 +++ .../@tests/stubtest_allowlist_win32.txt | 2 + .../passpy/@tests/stubtest_allowlist.txt | 6 + .../peewee/@tests/stubtest_allowlist.txt | 25 ++ .../pep8-naming/@tests/stubtest_allowlist.txt | 2 + .../stubs/pika/@tests/stubtest_allowlist.txt | 18 + .../protobuf/@tests/stubtest_allowlist.txt | 41 ++ .../@tests/test_cases/check_struct.py | 17 + .../psutil/@tests/stubtest_allowlist.txt | 13 + .../@tests/stubtest_allowlist_darwin.txt | 4 + .../@tests/stubtest_allowlist_linux.txt | 4 + .../@tests/stubtest_allowlist_win32.txt | 6 + .../stubs/psutil/psutil/__init__.pyi | 7 +- .../psycopg2/@tests/stubtest_allowlist.txt | 5 + .../pyOpenSSL/@tests/stubtest_allowlist.txt | 1 + .../stubs/pyOpenSSL/METADATA.toml | 2 +- .../pyasn1/@tests/stubtest_allowlist.txt | 10 + .../pyflakes/@tests/stubtest_allowlist.txt | 25 ++ .../pyinstaller/@tests/stubtest_allowlist.txt | 44 ++ .../@tests/stubtest_allowlist_win32.txt | 2 + .../stubs/pyinstaller/METADATA.toml | 2 +- .../pynput/@tests/stubtest_allowlist.txt | 16 + .../@tests/stubtest_allowlist_linux.txt | 5 + .../@tests/stubtest_allowlist_win32.txt | 2 + .../pyserial/@tests/stubtest_allowlist.txt | 62 +++ .../@tests/stubtest_allowlist_darwin.txt | 16 + .../@tests/stubtest_allowlist_linux.txt | 18 + .../@tests/stubtest_allowlist_win32.txt | 12 + .../@tests/stubtest_allowlist.txt | 12 + .../@tests/stubtest_allowlist.txt | 4 + .../@tests/stubtest_allowlist.txt | 13 + .../@tests/test_cases/check_relativedelta.py | 9 + .../@tests/stubtest_allowlist.txt | 1 + .../python-jose/@tests/stubtest_allowlist.txt | 6 + .../python-nmap/@tests/stubtest_allowlist.txt | 1 + .../@tests/stubtest_allowlist.txt | 1 + .../python-xlib/@tests/stubtest_allowlist.txt | 25 ++ .../stubs/pytz/@tests/stubtest_allowlist.txt | 5 + .../pyvmomi/@tests/stubtest_allowlist.txt | 8 + .../stubs/pyvmomi/METADATA.toml | 1 + .../@tests/stubtest_allowlist_win32.txt | 74 ++++ .../stubs/pywin32/win32/lib/pywintypes.pyi | 14 +- .../stubs/redis/@tests/stubtest_allowlist.txt | 73 ++++ .../stubs/regex/@tests/stubtest_allowlist.txt | 18 + .../regex/@tests/test_cases/check_finditer.py | 11 + .../stubs/regex/METADATA.toml | 2 +- .../requests/@tests/stubtest_allowlist.txt | 11 + .../requests/@tests/test_cases/check_post.py | 56 +++ .../stubs/requests/METADATA.toml | 2 +- .../stubs/retry/@tests/stubtest_allowlist.txt | 3 + .../setuptools/@tests/stubtest_allowlist.txt | 65 +++ .../@tests/stubtest_allowlist_darwin.txt | 2 + .../@tests/stubtest_allowlist_linux.txt | 2 + .../@tests/test_cases/check_protocols.py | 54 +++ .../simplejson/@tests/stubtest_allowlist.txt | 14 + .../@tests/stubtest_allowlist.txt | 2 + .../stubs/six/@tests/stubtest_allowlist.txt | 35 ++ .../slumber/@tests/stubtest_allowlist.txt | 2 + .../stdlib-list/@tests/stubtest_allowlist.txt | 2 + .../stripe/@tests/stubtest_allowlist.txt | 8 + .../stubs/tqdm/@tests/stubtest_allowlist.txt | 4 + .../@tests/stubtest_allowlist.txt | 14 + .../@tests/stubtest_allowlist.txt | 2 + .../@tests/stubtest_allowlist_darwin.txt | 2 + .../@tests/stubtest_allowlist_linux.txt | 2 + .../tree-sitter/@tests/stubtest_allowlist.txt | 39 ++ .../tzlocal/@tests/stubtest_allowlist.txt | 6 + .../stubs/ujson/METADATA.toml | 2 +- .../urllib3/@tests/stubtest_allowlist.txt | 31 ++ .../vobject/@tests/stubtest_allowlist.txt | 22 + .../waitress/@tests/stubtest_allowlist.txt | 33 ++ .../@tests/stubtest_allowlist_darwin.txt | 1 + .../@tests/stubtest_allowlist_linux.txt | 1 + .../zxcvbn/@tests/stubtest_allowlist.txt | 1 + 262 files changed, 5278 insertions(+), 566 deletions(-) create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/ExifRead/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Markdown/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/stubtest_allowlist_win32.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/test_cases/check_tk_compat.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/PyYAML/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Pygments/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_loader_option.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_register.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist_darwin.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/bleach/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/cacheutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/debugutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/deprutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/dictutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/easterutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/ecoutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/excutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/fileutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/formatutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/funcutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/gcutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/ioutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/iterutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/jsonutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/listutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/mathutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/mboxutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/namedutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/pathutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/queueutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/setutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/socketutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/statsutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/strutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/tableutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/tbutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/timeutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/typeutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/urlutils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/boto/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/braintree/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/cachetools/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/caldav/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist_darwin.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist_linux.txt delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/colorama/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/colorama/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/contextvars/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/dateparser/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/decorator/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/docutils/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/editdistance/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/entrypoints/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/fpdf2/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/hdbcli/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/httplib2/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/inifile/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/inifile/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/inifile/inifile.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/invoke/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/invoke/@tests/test_cases/check_task.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist_darwin.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/mock/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/netaddr/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/oauthlib/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/openpyxl/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/openpyxl/@tests/test_cases/check_base_descriptors.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/opentracing/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_darwin.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_win32.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/parsimonious/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/passlib/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/passlib/@tests/stubtest_allowlist_win32.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/passpy/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/peewee/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pika/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/protobuf/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/protobuf/@tests/test_cases/check_struct.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_darwin.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_win32.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/psycopg2/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyasn1/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyflakes/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/@tests/stubtest_allowlist_win32.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist_win32.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_darwin.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_win32.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pytest-lazy-fixture/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/python-crontab/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/@tests/test_cases/check_relativedelta.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/python-gflags/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/python-jose/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/python-nmap/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/python-slugify/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/python-xlib/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pytz/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pywin32/@tests/stubtest_allowlist_win32.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/redis/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/regex/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/regex/@tests/test_cases/check_finditer.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/requests/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/requests/@tests/test_cases/check_post.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/retry/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist_darwin.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/test_cases/check_protocols.py create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/simplejson/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/singledispatch/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/six/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/slumber/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/stripe/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/tqdm/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/translationstring/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist_darwin.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/tzlocal/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/urllib3/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/vobject/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist_darwin.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist_linux.txt create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/@tests/stubtest_allowlist.txt diff --git a/packages/pyright-internal/src/tests/samples/typeAliasType1.py b/packages/pyright-internal/src/tests/samples/typeAliasType1.py index 0ba0ef312..9bfe9e41d 100644 --- a/packages/pyright-internal/src/tests/samples/typeAliasType1.py +++ b/packages/pyright-internal/src/tests/samples/typeAliasType1.py @@ -29,7 +29,7 @@ # This should generate two errors because type_params is not a tuple. TA7 = TypeAliasType("TA7", int, type_params=[1]) -# This should generate an error because type_params is not a tuple of TypeVars. +# This should generate two errors because type_params is not a tuple of TypeVars. TA8 = TypeAliasType("TA8", int, type_params=(int,)) @@ -41,5 +41,5 @@ my_tuple = (S, T) -# This should generate an error because type_params is not a tuple. +# This should generate two errors because type_params is not a tuple. TA10 = TypeAliasType("TA10", int, type_params=my_tuple) diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 4d694f432..b33202937 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -279,7 +279,7 @@ test('TypePrinter1', () => { test('TypeAliasType1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAliasType1.py']); - TestUtils.validateResults(analysisResults, 13); + TestUtils.validateResults(analysisResults, 15); }); test('TypeAliasType2', () => { diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index 4cc5e9a61..36914fa18 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -35450d9c0d673fc713c3210d8c25d19425f9790e +6a94c9d677db9e9f85d764cc46294fd5c5e2a4b8 diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS b/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS index d24aa35fa..49433e346 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS +++ b/packages/pyright-internal/typeshed-fallback/stdlib/VERSIONS @@ -61,7 +61,7 @@ antigravity: 2.7- argparse: 2.7- array: 2.7- ast: 2.7- -asynchat: 2.7- +asynchat: 2.7-3.11 asyncio: 3.4- asyncio.mixins: 3.10- asyncio.exceptions: 3.8- @@ -72,7 +72,7 @@ asyncio.taskgroups: 3.11- asyncio.threads: 3.9- asyncio.timeouts: 3.11- asyncio.trsock: 3.8- -asyncore: 2.7- +asyncore: 2.7-3.11 atexit: 2.7- audioop: 2.7- base64: 2.7- @@ -112,7 +112,7 @@ dbm: 2.7- decimal: 2.7- difflib: 2.7- dis: 2.7- -distutils: 2.7- +distutils: 2.7-3.11 distutils.command.bdist_msi: 2.7-3.10 distutils.command.bdist_wininst: 2.7-3.9 doctest: 2.7- @@ -147,7 +147,7 @@ html: 3.0- http: 3.0- imaplib: 2.7- imghdr: 2.7- -imp: 2.7- +imp: 2.7-3.11 importlib: 2.7- importlib.metadata: 3.8- importlib.metadata._meta: 3.10- @@ -228,7 +228,7 @@ shlex: 2.7- shutil: 2.7- signal: 2.7- site: 2.7- -smtpd: 2.7- +smtpd: 2.7-3.11 smtplib: 2.7- sndhdr: 2.7- socket: 2.7- diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi index 7bc47266d..05e2a08fd 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_ast.pyi @@ -1,13 +1,14 @@ import sys +import typing_extensions from typing import Any, ClassVar -from typing_extensions import Literal, TypeAlias +from typing_extensions import Literal PyCF_ONLY_AST: Literal[1024] if sys.version_info >= (3, 8): PyCF_TYPE_COMMENTS: Literal[4096] PyCF_ALLOW_TOP_LEVEL_AWAIT: Literal[8192] -_Identifier: TypeAlias = str +_Identifier: typing_extensions.TypeAlias = str class AST: if sys.version_info >= (3, 10): @@ -59,31 +60,43 @@ class Expression(mod): class stmt(AST): ... class FunctionDef(stmt): - if sys.version_info >= (3, 10): + if sys.version_info >= (3, 12): + __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment", "type_params") + elif sys.version_info >= (3, 10): __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment") name: _Identifier args: arguments body: list[stmt] decorator_list: list[expr] returns: expr | None + if sys.version_info >= (3, 12): + type_params: list[type_param] class AsyncFunctionDef(stmt): - if sys.version_info >= (3, 10): + if sys.version_info >= (3, 12): + __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment", "type_params") + elif sys.version_info >= (3, 10): __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment") name: _Identifier args: arguments body: list[stmt] decorator_list: list[expr] returns: expr | None + if sys.version_info >= (3, 12): + type_params: list[type_param] class ClassDef(stmt): - if sys.version_info >= (3, 10): + if sys.version_info >= (3, 12): + __match_args__ = ("name", "bases", "keywords", "body", "decorator_list", "type_params") + elif sys.version_info >= (3, 10): __match_args__ = ("name", "bases", "keywords", "body", "decorator_list") name: _Identifier bases: list[expr] keywords: list[keyword] body: list[stmt] decorator_list: list[expr] + if sys.version_info >= (3, 12): + type_params: list[type_param] class Return(stmt): if sys.version_info >= (3, 10): @@ -366,10 +379,10 @@ class Attribute(expr): ctx: expr_context if sys.version_info >= (3, 9): - _Slice: TypeAlias = expr + _Slice: typing_extensions.TypeAlias = expr else: class slice(AST): ... - _Slice: TypeAlias = slice + _Slice: typing_extensions.TypeAlias = slice class Slice(_Slice): if sys.version_info >= (3, 10): @@ -526,7 +539,7 @@ if sys.version_info >= (3, 10): class pattern(AST): ... # Without the alias, Pyright complains variables named pattern are recursively defined - _Pattern: TypeAlias = pattern + _Pattern: typing_extensions.TypeAlias = pattern class match_case(AST): __match_args__ = ("pattern", "guard", "body") @@ -571,3 +584,25 @@ if sys.version_info >= (3, 10): class MatchOr(pattern): __match_args__ = ("patterns",) patterns: list[pattern] + +if sys.version_info >= (3, 12): + class type_param(AST): ... + + class TypeVar(type_param): + __match_args__ = ("name", "bound") + name: _Identifier + bound: expr | None + + class ParamSpec(type_param): + __match_args__ = ("name",) + name: _Identifier + + class TypeVarTuple(type_param): + __match_args__ = ("name",) + name: _Identifier + + class TypeAlias(stmt): + __match_args__ = ("name", "typeparams", "value") + name: Name + type_params: list[type_param] + value: expr diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi index 352da6cfb..05b5421c2 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi @@ -1,4 +1,5 @@ import sys +from abc import abstractmethod from types import MappingProxyType from typing import ( # noqa: Y022,Y038 AbstractSet as Set, @@ -23,11 +24,13 @@ from typing import ( # noqa: Y022,Y038 MutableMapping as MutableMapping, MutableSequence as MutableSequence, MutableSet as MutableSet, + Protocol, Reversible as Reversible, Sequence as Sequence, Sized as Sized, TypeVar, ValuesView as ValuesView, + runtime_checkable, ) from typing_extensions import final @@ -58,6 +61,8 @@ __all__ = [ "MutableSequence", "ByteString", ] +if sys.version_info >= (3, 12): + __all__ += ["Buffer"] _KT_co = TypeVar("_KT_co", covariant=True) # Key type covariant containers. _VT_co = TypeVar("_VT_co", covariant=True) # Value type covariant containers. @@ -79,3 +84,9 @@ class dict_items(ItemsView[_KT_co, _VT_co], Generic[_KT_co, _VT_co]): # undocum if sys.version_info >= (3, 10): @property def mapping(self) -> MappingProxyType[_KT_co, _VT_co]: ... + +if sys.version_info >= (3, 12): + @runtime_checkable + class Buffer(Protocol): + @abstractmethod + def __buffer__(self, __flags: int) -> memoryview: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi index c9b9f47e6..19ea487e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_csv.pyi @@ -1,3 +1,4 @@ +import sys from _typeshed import SupportsWrite from collections.abc import Iterable, Iterator from typing import Any @@ -9,6 +10,9 @@ QUOTE_ALL: Literal[1] QUOTE_MINIMAL: Literal[0] QUOTE_NONE: Literal[3] QUOTE_NONNUMERIC: Literal[2] +if sys.version_info >= (3, 12): + QUOTE_STRINGS: Literal[4] + QUOTE_NOTNULL: Literal[5] # Ideally this would be `QUOTE_ALL | QUOTE_MINIMAL | QUOTE_NONE | QUOTE_NONNUMERIC` # However, using literals in situations like these can cause false-positives (see #7258) diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi index e2f8fa745..25d604218 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_ctypes.pyi @@ -22,6 +22,9 @@ RTLD_LOCAL: int if sys.version_info >= (3, 11): CTYPES_MAX_ARGCOUNT: int +if sys.version_info >= (3, 12): + SIZEOF_TIME_T: int + if sys.platform == "win32": # Description, Source, HelpFile, HelpContext, scode _COMError_Details: TypeAlias = tuple[str | None, str | None, str | None, int | None, int | None] @@ -63,6 +66,8 @@ class _CData(metaclass=_CDataMeta): def from_param(cls, obj: Any) -> Self | _CArgObject: ... @classmethod def in_dll(cls, library: CDLL, name: str) -> Self: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... class _SimpleCData(Generic[_T], _CData): value: _T diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi index f7b0e6901..7a0ede628 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_socket.pyi @@ -692,3 +692,28 @@ if sys.platform != "win32" or sys.version_info >= (3, 8): def if_nameindex() -> list[tuple[int, str]]: ... def if_nametoindex(__name: str) -> int: ... def if_indextoname(__index: int) -> str: ... + +if sys.version_info >= (3, 12): + IP_PKTINFO: int + IP_UNBLOCK_SOURCE: int + IP_BLOCK_SOURCE: int + IP_ADD_SOURCE_MEMBERSHIP: int + IP_DROP_SOURCE_MEMBERSHIP: int + if sys.platform == "win32": + AF_HYPERV: int + HV_PROTOCOL_RAW: int + HVSOCKET_CONNECT_TIMEOUT: int + HVSOCKET_CONNECT_TIMEOUT_MAX: int + HVSOCKET_CONNECTED_SUSPEND: int + HVSOCKET_ADDRESS_FLAG_PASSTHRU: int + HV_GUID_ZERO: str + HV_GUID_WILDCARD: str + HV_GUID_BROADCAST: str + HV_GUID_CHILDREN: str + HV_GUID_LOOPBACK: str + HV_GUID_PARENT: str + else: + ETHERTYPE_ARP: int + ETHERTYPE_IP: int + ETHERTYPE_IPV6: int + ETHERTYPE_VLAN: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_thread.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_thread.pyi index 152362edc..dba8664fb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_thread.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_thread.pyi @@ -43,3 +43,6 @@ if sys.version_info >= (3, 8): @property def thread(self) -> Thread | None: ... _excepthook: Callable[[_ExceptHookArgs], Any] + +if sys.version_info >= (3, 12): + def daemon_threads_allowed() -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi index 3c29032b6..5d03142c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_typeshed/__init__.pyi @@ -2,17 +2,13 @@ # # See the README.md file in this directory for more information. -import array -import ctypes -import mmap -import pickle import sys -from collections.abc import Awaitable, Callable, Iterable, Set as AbstractSet +from collections.abc import Awaitable, Callable, Iterable, Sequence, Set as AbstractSet, Sized from dataclasses import Field from os import PathLike from types import FrameType, TracebackType -from typing import Any, AnyStr, ClassVar, Generic, Protocol, TypeVar -from typing_extensions import Final, Literal, LiteralString, TypeAlias, final +from typing import Any, AnyStr, ClassVar, Generic, Protocol, TypeVar, overload +from typing_extensions import Buffer, Final, Literal, LiteralString, TypeAlias, final _KT = TypeVar("_KT") _KT_co = TypeVar("_KT_co", covariant=True) @@ -227,42 +223,33 @@ class SupportsNoArgReadline(Protocol[_T_co]): class SupportsWrite(Protocol[_T_contra]): def write(self, __s: _T_contra) -> object: ... -ReadOnlyBuffer: TypeAlias = bytes # stable +# Unfortunately PEP 688 does not allow us to distinguish read-only +# from writable buffers. We use these aliases for readability for now. +# Perhaps a future extension of the buffer protocol will allow us to +# distinguish these cases in the type system. +ReadOnlyBuffer: TypeAlias = Buffer # stable # Anything that implements the read-write buffer interface. -# The buffer interface is defined purely on the C level, so we cannot define a normal Protocol -# for it (until PEP 688 is implemented). Instead we have to list the most common stdlib buffer classes in a Union. -if sys.version_info >= (3, 8): - WriteableBuffer: TypeAlias = ( - bytearray | memoryview | array.array[Any] | mmap.mmap | ctypes._CData | pickle.PickleBuffer - ) # stable -else: - WriteableBuffer: TypeAlias = bytearray | memoryview | array.array[Any] | mmap.mmap | ctypes._CData # stable -# Same as _WriteableBuffer, but also includes read-only buffer types (like bytes). -ReadableBuffer: TypeAlias = ReadOnlyBuffer | WriteableBuffer # stable -_BufferWithLen: TypeAlias = ReadableBuffer # not stable # noqa: Y047 - -# Anything that implements the read-write buffer interface, and can be sliced/indexed. -SliceableBuffer: TypeAlias = bytes | bytearray | memoryview | array.array[Any] | mmap.mmap -IndexableBuffer: TypeAlias = bytes | bytearray | memoryview | array.array[Any] | mmap.mmap -# https://github.com/python/typeshed/pull/9115#issuecomment-1304905864 -# Post PEP 688, they should be rewritten as such: -# from collections.abc import Sequence -# from typing import Sized, overload -# class SliceableBuffer(Protocol): -# def __buffer__(self, __flags: int) -> memoryview: ... -# def __getitem__(self, __slice: slice) -> Sequence[int]: ... -# class IndexableBuffer(Protocol): -# def __buffer__(self, __flags: int) -> memoryview: ... -# def __getitem__(self, __i: int) -> int: ... -# class SupportsGetItemBuffer(SliceableBuffer, IndexableBuffer, Protocol): -# def __buffer__(self, __flags: int) -> memoryview: ... -# def __contains__(self, __x: Any) -> bool: ... -# @overload -# def __getitem__(self, __slice: slice) -> Sequence[int]: ... -# @overload -# def __getitem__(self, __i: int) -> int: ... -# class SizedBuffer(Sized, Protocol): # instead of _BufferWithLen -# def __buffer__(self, __flags: int) -> memoryview: ... +WriteableBuffer: TypeAlias = Buffer +# Same as WriteableBuffer, but also includes read-only buffer types (like bytes). +ReadableBuffer: TypeAlias = Buffer # stable + +class SliceableBuffer(Buffer, Protocol): + def __getitem__(self, __slice: slice) -> Sequence[int]: ... + +class IndexableBuffer(Buffer, Protocol): + def __getitem__(self, __i: int) -> int: ... + +class SupportsGetItemBuffer(SliceableBuffer, IndexableBuffer, Protocol): + def __contains__(self, __x: Any) -> bool: ... + @overload + def __getitem__(self, __slice: slice) -> Sequence[int]: ... + @overload + def __getitem__(self, __i: int) -> int: ... + +class SizedBuffer(Sized, Buffer, Protocol): ... + +# for compatibility with third-party stubs that may use this +_BufferWithLen: TypeAlias = SizedBuffer # not stable # noqa: Y047 ExcInfo: TypeAlias = tuple[type[BaseException], BaseException, TracebackType] OptExcInfo: TypeAlias = ExcInfo | tuple[None, None, None] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_winapi.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_winapi.pyi index ca1e61f0f..b51d84470 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_winapi.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_winapi.pyi @@ -137,6 +137,34 @@ if sys.platform == "win32": LCMAP_TRADITIONAL_CHINESE: int LCMAP_UPPERCASE: int + if sys.version_info >= (3, 12): + COPYFILE2_CALLBACK_CHUNK_STARTED: Literal[1] + COPYFILE2_CALLBACK_CHUNK_FINISHED: Literal[2] + COPYFILE2_CALLBACK_STREAM_STARTED: Literal[3] + COPYFILE2_CALLBACK_STREAM_FINISHED: Literal[4] + COPYFILE2_CALLBACK_POLL_CONTINUE: Literal[5] + COPYFILE2_CALLBACK_ERROR: Literal[6] + + COPYFILE2_PROGRESS_CONTINUE: Literal[0] + COPYFILE2_PROGRESS_CANCEL: Literal[1] + COPYFILE2_PROGRESS_STOP: Literal[2] + COPYFILE2_PROGRESS_QUIET: Literal[3] + COPYFILE2_PROGRESS_PAUSE: Literal[4] + + COPY_FILE_FAIL_IF_EXISTS: Literal[0x1] + COPY_FILE_RESTARTABLE: Literal[0x2] + COPY_FILE_OPEN_SOURCE_FOR_WRITE: Literal[0x4] + COPY_FILE_ALLOW_DECRYPTED_DESTINATION: Literal[0x8] + COPY_FILE_COPY_SYMLINK: Literal[0x800] + COPY_FILE_NO_BUFFERING: Literal[0x1000] + COPY_FILE_REQUEST_SECURITY_PRIVILEGES: Literal[0x2000] + COPY_FILE_RESUME_FROM_PAUSE: Literal[0x4000] + COPY_FILE_NO_OFFLOAD: Literal[0x40000] + COPY_FILE_REQUEST_COMPRESSED_TRAFFIC: Literal[0x10000000] + + ERROR_ACCESS_DENIED: Literal[5] + ERROR_PRIVILEGE_NOT_HELD: Literal[1314] + def CloseHandle(__handle: int) -> None: ... @overload def ConnectNamedPipe(handle: int, overlapped: Literal[True]) -> Overlapped: ... @@ -224,3 +252,6 @@ if sys.platform == "win32": def GetOverlappedResult(self, __wait: bool) -> tuple[int, int]: ... def cancel(self) -> None: ... def getbuffer(self) -> bytes | None: ... + + if sys.version_info >= (3, 12): + def CopyFile2(existing_file_name: str, new_file_name: str, flags: int, progress_routine: int | None = None) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi index 1e9560693..8e6f9da8e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi @@ -2,7 +2,7 @@ import sys from collections.abc import Callable, Generator, Iterable, Sequence from re import Pattern from typing import IO, Any, Generic, NewType, NoReturn, Protocol, TypeVar, overload -from typing_extensions import Literal, TypeAlias +from typing_extensions import Literal, Self, TypeAlias __all__ = [ "ArgumentParser", @@ -97,8 +97,16 @@ class _ActionsContainer: version: str = ..., **kwargs: Any, ) -> Action: ... - def add_argument_group(self, *args: Any, **kwargs: Any) -> _ArgumentGroup: ... - def add_mutually_exclusive_group(self, **kwargs: Any) -> _MutuallyExclusiveGroup: ... + def add_argument_group( + self, + title: str | None = None, + description: str | None = None, + *, + prefix_chars: str = ..., + argument_default: Any = ..., + conflict_handler: str = ..., + ) -> _ArgumentGroup: ... + def add_mutually_exclusive_group(self, *, required: bool = False) -> _MutuallyExclusiveGroup: ... def _add_action(self, action: _ActionT) -> _ActionT: ... def _remove_action(self, action: Action) -> None: ... def _add_container_actions(self, container: _ActionsContainer) -> None: ... @@ -236,11 +244,19 @@ class HelpFormatter: _current_indent: int _level: int _action_max_length: int - _root_section: Any - _current_section: Any + _root_section: _Section + _current_section: _Section _whitespace_matcher: Pattern[str] _long_break_matcher: Pattern[str] - _Section: type[Any] # Nested class + + class _Section: + formatter: HelpFormatter + heading: str | None + parent: Self | None + items: list[tuple[Callable[..., str], Iterable[Any]]] + def __init__(self, formatter: HelpFormatter, parent: Self | None, heading: str | None = None) -> None: ... + def format_help(self) -> str: ... + def __init__(self, prog: str, indent_increment: int = 2, max_help_position: int = 24, width: int | None = None) -> None: ... def _indent(self) -> None: ... def _dedent(self) -> None: ... @@ -249,16 +265,16 @@ class HelpFormatter: def end_section(self) -> None: ... def add_text(self, text: str | None) -> None: ... def add_usage( - self, usage: str | None, actions: Iterable[Action], groups: Iterable[_ArgumentGroup], prefix: str | None = None + self, usage: str | None, actions: Iterable[Action], groups: Iterable[_MutuallyExclusiveGroup], prefix: str | None = None ) -> None: ... def add_argument(self, action: Action) -> None: ... def add_arguments(self, actions: Iterable[Action]) -> None: ... def format_help(self) -> str: ... def _join_parts(self, part_strings: Iterable[str]) -> str: ... def _format_usage( - self, usage: str | None, actions: Iterable[Action], groups: Iterable[_ArgumentGroup], prefix: str | None + self, usage: str | None, actions: Iterable[Action], groups: Iterable[_MutuallyExclusiveGroup], prefix: str | None ) -> str: ... - def _format_actions_usage(self, actions: Iterable[Action], groups: Iterable[_ArgumentGroup]) -> str: ... + def _format_actions_usage(self, actions: Iterable[Action], groups: Iterable[_MutuallyExclusiveGroup]) -> str: ... def _format_text(self, text: str) -> str: ... def _format_action(self, action: Action) -> str: ... def _format_action_invocation(self, action: Action) -> str: ... @@ -342,7 +358,14 @@ class _ArgumentGroup(_ActionsContainer): title: str | None _group_actions: list[Action] def __init__( - self, container: _ActionsContainer, title: str | None = None, description: str | None = None, **kwargs: Any + self, + container: _ActionsContainer, + title: str | None = None, + description: str | None = None, + *, + prefix_chars: str = ..., + argument_default: Any = ..., + conflict_handler: str = ..., ) -> None: ... # undocumented diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi index 38a815b58..8b003503b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi @@ -80,5 +80,7 @@ class array(MutableSequence[_T], Generic[_T]): def __rmul__(self, __value: int) -> array[_T]: ... def __copy__(self) -> array[_T]: ... def __deepcopy__(self, __unused: Any) -> array[_T]: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... ArrayType = array diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi index ea899e150..377138141 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ast.pyi @@ -3,7 +3,7 @@ import sys from _ast import * from _typeshed import ReadableBuffer, Unused from collections.abc import Iterator -from typing import Any, TypeVar, overload +from typing import Any, TypeVar as _TypeVar, overload from typing_extensions import Literal if sys.version_info >= (3, 8): @@ -168,7 +168,7 @@ class NodeTransformer(NodeVisitor): # The usual return type is AST | None, but Iterable[AST] # is also allowed in some cases -- this needs to be mapped. -_T = TypeVar("_T", bound=AST) +_T = _TypeVar("_T", bound=AST) if sys.version_info >= (3, 8): @overload diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi index e0993c840..64ba9f615 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/binhex.pyi @@ -1,4 +1,4 @@ -from _typeshed import _BufferWithLen +from _typeshed import SizedBuffer from typing import IO, Any from typing_extensions import Literal, TypeAlias @@ -28,9 +28,9 @@ class openrsrc: class BinHex: def __init__(self, name_finfo_dlen_rlen: _FileInfoTuple, ofp: _FileHandleUnion) -> None: ... - def write(self, data: _BufferWithLen) -> None: ... + def write(self, data: SizedBuffer) -> None: ... def close_data(self) -> None: ... - def write_rsrc(self, data: _BufferWithLen) -> None: ... + def write_rsrc(self, data: SizedBuffer) -> None: ... def close(self) -> None: ... def binhex(inp: str, out: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index 6bc9c7ec8..b38717761 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -36,7 +36,6 @@ from typing import ( # noqa: Y022 IO, Any, BinaryIO, - ByteString, ClassVar, Generic, Mapping, @@ -54,7 +53,18 @@ from typing import ( # noqa: Y022 overload, type_check_only, ) -from typing_extensions import Concatenate, Literal, LiteralString, ParamSpec, Self, SupportsIndex, TypeAlias, TypeGuard, final +from typing_extensions import ( # type: ignore + Concatenate, + Literal, + LiteralString, + ParamSpec, + Self, + SupportsIndex, + TypeAlias, + TypeGuard, + TypeVarTuple, + final, +) if sys.version_info >= (3, 9): from types import GenericAlias @@ -188,6 +198,8 @@ class type: if sys.version_info >= (3, 10): def __or__(self, __value: Any) -> types.UnionType: ... def __ror__(self, __value: Any) -> types.UnionType: ... + if sys.version_info >= (3, 12): + __type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] class super: @overload @@ -245,6 +257,9 @@ class int: signed: bool = False, ) -> Self: ... + if sys.version_info >= (3, 12): + def is_integer(self) -> Literal[True]: ... + def __add__(self, __value: int) -> int: ... def __sub__(self, __value: int) -> int: ... def __mul__(self, __value: int) -> int: ... @@ -450,7 +465,7 @@ class str(Sequence[str]): @overload def format(self: LiteralString, *args: LiteralString, **kwargs: LiteralString) -> LiteralString: ... @overload - def format(self, *args: object, **kwargs: object) -> str: ... + def format(self, *args: object, **kwargs: object) -> str: ... # type: ignore def format_map(self, map: _FormatMapMapping) -> str: ... def index(self, __sub: str, __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...) -> int: ... def isalnum(self) -> bool: ... @@ -580,7 +595,7 @@ class str(Sequence[str]): @overload def __mod__(self: LiteralString, __value: LiteralString | tuple[LiteralString, ...]) -> LiteralString: ... @overload - def __mod__(self, __value: Any) -> str: ... + def __mod__(self, __value: Any) -> str: ... # type: ignore @overload def __mul__(self: LiteralString, __value: SupportsIndex) -> LiteralString: ... @overload @@ -592,7 +607,7 @@ class str(Sequence[str]): def __rmul__(self, __value: SupportsIndex) -> str: ... # type: ignore[misc] def __getnewargs__(self) -> tuple[str]: ... -class bytes(ByteString): +class bytes(Sequence[int]): @overload def __new__(cls, __o: Iterable[SupportsIndex] | SupportsIndex | SupportsBytes | ReadableBuffer) -> Self: ... @overload @@ -695,7 +710,9 @@ class bytes(ByteString): if sys.version_info >= (3, 11): def __bytes__(self) -> bytes: ... -class bytearray(MutableSequence[int], ByteString): + def __buffer__(self, __flags: int) -> memoryview: ... + +class bytearray(MutableSequence[int]): @overload def __init__(self) -> None: ... @overload @@ -810,6 +827,8 @@ class bytearray(MutableSequence[int], ByteString): def __gt__(self, __value: ReadableBuffer) -> bool: ... def __ge__(self, __value: ReadableBuffer) -> bool: ... def __alloc__(self) -> int: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... @final class memoryview(Sequence[int]): @@ -871,6 +890,9 @@ class memoryview(Sequence[int]): else: def hex(self) -> str: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... + @final class bool(int): def __new__(cls, __o: object = ...) -> Self: ... @@ -960,6 +982,8 @@ class function: if sys.version_info >= (3, 10): @property def __builtins__(self) -> dict[str, Any]: ... + if sys.version_info >= (3, 12): + __type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] __module__: str # mypy uses `builtins.function.__get__` to represent methods, properties, and getset_descriptors so we type the return as Any. @@ -1912,6 +1936,8 @@ class ImportError(Exception): name: str | None path: str | None msg: str # undocumented + if sys.version_info >= (3, 12): + name_from: str | None # undocumented class LookupError(Exception): ... class MemoryError(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/calendar.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/calendar.pyi index 255a12d33..3f881393e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/calendar.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/calendar.pyi @@ -1,4 +1,5 @@ import datetime +import enum import sys from _typeshed import Unused from collections.abc import Iterable, Sequence @@ -35,6 +36,23 @@ __all__ = [ if sys.version_info >= (3, 10): __all__ += ["FRIDAY", "MONDAY", "SATURDAY", "SUNDAY", "THURSDAY", "TUESDAY", "WEDNESDAY"] +if sys.version_info >= (3, 12): + __all__ += [ + "Day", + "Month", + "JANUARY", + "FEBRUARY", + "MARCH", + "APRIL", + "MAY", + "JUNE", + "JULY", + "AUGUST", + "SEPTEMBER", + "OCTOBER", + "NOVEMBER", + "DECEMBER", + ] _LocaleType: TypeAlias = tuple[str | None, str | None] @@ -134,12 +152,55 @@ day_abbr: Sequence[str] month_name: Sequence[str] month_abbr: Sequence[str] -MONDAY: Literal[0] -TUESDAY: Literal[1] -WEDNESDAY: Literal[2] -THURSDAY: Literal[3] -FRIDAY: Literal[4] -SATURDAY: Literal[5] -SUNDAY: Literal[6] +if sys.version_info >= (3, 12): + class Month(enum.IntEnum): + JANUARY: Literal[1] + FEBRUARY: Literal[2] + MARCH: Literal[3] + APRIL: Literal[4] + MAY: Literal[5] + JUNE: Literal[6] + JULY: Literal[7] + AUGUST: Literal[8] + SEPTEMBER: Literal[9] + OCTOBER: Literal[10] + NOVEMBER: Literal[11] + DECEMBER: Literal[12] + JANUARY = Month.JANUARY + FEBRUARY = Month.FEBRUARY + MARCH = Month.MARCH + APRIL = Month.APRIL + MAY = Month.MAY + JUNE = Month.JUNE + JULY = Month.JULY + AUGUST = Month.AUGUST + SEPTEMBER = Month.SEPTEMBER + OCTOBER = Month.OCTOBER + NOVEMBER = Month.NOVEMBER + DECEMBER = Month.DECEMBER + + class Day(enum.IntEnum): + MONDAY: Literal[0] + TUESDAY: Literal[1] + WEDNESDAY: Literal[2] + THURSDAY: Literal[3] + FRIDAY: Literal[4] + SATURDAY: Literal[5] + SUNDAY: Literal[6] + MONDAY = Day.MONDAY + TUESDAY = Day.TUESDAY + WEDNESDAY = Day.WEDNESDAY + THURSDAY = Day.THURSDAY + FRIDAY = Day.FRIDAY + SATURDAY = Day.SATURDAY + SUNDAY = Day.SUNDAY +else: + MONDAY: Literal[0] + TUESDAY: Literal[1] + WEDNESDAY: Literal[2] + THURSDAY: Literal[3] + FRIDAY: Literal[4] + SATURDAY: Literal[5] + SUNDAY: Literal[6] EPOCH: Literal[1970] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi index 59f2e7a3c..139ba7af2 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/csv.pyi @@ -21,6 +21,9 @@ from _csv import ( unregister_dialect as unregister_dialect, writer as writer, ) + +if sys.version_info >= (3, 12): + from _csv import QUOTE_STRINGS as QUOTE_STRINGS, QUOTE_NOTNULL as QUOTE_NOTNULL from _typeshed import SupportsWrite from collections.abc import Collection, Iterable, Iterator, Mapping, Sequence from typing import Any, Generic, TypeVar, overload @@ -57,6 +60,8 @@ __all__ = [ "DictWriter", "unix_dialect", ] +if sys.version_info >= (3, 12): + __all__ += ["QUOTE_STRINGS", "QUOTE_NOTNULL"] _T = TypeVar("_T") diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ctypes/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ctypes/__init__.pyi index 7a185a5b5..b14fb93c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ctypes/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ctypes/__init__.pyi @@ -181,6 +181,9 @@ class c_bool(_SimpleCData[bool]): if sys.platform == "win32": class HRESULT(_SimpleCData[int]): ... # TODO undocumented +if sys.version_info >= (3, 12): + c_time_t: type[c_int32 | c_int64] + class py_object(_CanCastTo, _SimpleCData[_T]): ... class BigEndianStructure(Structure): ... class LittleEndianStructure(Structure): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/dis.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/dis.pyi index d153771e6..ab101a517 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/dis.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/dis.pyi @@ -29,9 +29,12 @@ __all__ = [ "opmap", "HAVE_ARGUMENT", "EXTENDED_ARG", - "hasnargs", "stack_effect", ] +if sys.version_info >= (3, 12): + __all__ += ["hasarg", "hasexc"] +else: + __all__ += ["hasnargs"] # Strictly this should not have to include Callable, but mypy doesn't use FunctionType # for functions (python/mypy#3171) diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi index e69de29bb..328a5b783 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/distutils/__init__.pyi @@ -0,0 +1,5 @@ +# Attempts to improve these stubs are probably not the best use of time: +# - distutils is deleted in Python 3.12 and newer +# - Most users already do not use stdlib distutils, due to setuptools monkeypatching +# - We have very little quality assurance on these stubs, since due to the two above issues +# we allowlist all distutils errors in stubtest. diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/email/generator.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/email/generator.pyi index 8362dd9c4..faa6551fc 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/email/generator.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/email/generator.pyi @@ -1,11 +1,12 @@ from _typeshed import SupportsWrite from email.message import Message from email.policy import Policy +from typing_extensions import Self __all__ = ["Generator", "DecodedGenerator", "BytesGenerator"] class Generator: - def clone(self, fp: SupportsWrite[str]) -> Generator: ... + def clone(self, fp: SupportsWrite[str]) -> Self: ... def write(self, s: str) -> None: ... def __init__( self, @@ -17,9 +18,7 @@ class Generator: ) -> None: ... def flatten(self, msg: Message, unixfrom: bool = False, linesep: str | None = None) -> None: ... -class BytesGenerator: - def clone(self, fp: SupportsWrite[bytes]) -> BytesGenerator: ... - def write(self, s: str) -> None: ... +class BytesGenerator(Generator): def __init__( self, outfp: SupportsWrite[bytes], @@ -28,7 +27,6 @@ class BytesGenerator: *, policy: Policy | None = None, ) -> None: ... - def flatten(self, msg: Message, unixfrom: bool = False, linesep: str | None = None) -> None: ... class DecodedGenerator(Generator): def __init__( diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/email/policy.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/email/policy.pyi index 4df3c1e48..dc7f18489 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/email/policy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/email/policy.pyi @@ -5,6 +5,7 @@ from email.errors import MessageDefect from email.header import Header from email.message import Message from typing import Any +from typing_extensions import Self __all__ = ["Compat32", "compat32", "Policy", "EmailPolicy", "default", "strict", "SMTP", "HTTP"] @@ -25,7 +26,7 @@ class Policy(metaclass=ABCMeta): mangle_from_: bool = ..., message_factory: Callable[[Policy], Message] | None = ..., ) -> None: ... - def clone(self, **kw: Any) -> Policy: ... + def clone(self, **kw: Any) -> Self: ... def handle_defect(self, obj: Message, defect: MessageDefect) -> None: ... def register_defect(self, obj: Message, defect: MessageDefect) -> None: ... def header_max_count(self, name: str) -> int | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi index 90676e365..6aec7515f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/fcntl.pyi @@ -1,7 +1,7 @@ import sys from _typeshed import FileDescriptorLike, ReadOnlyBuffer, WriteableBuffer from typing import Any, overload -from typing_extensions import Literal +from typing_extensions import Buffer, Literal if sys.platform != "win32": FASYNC: int @@ -20,6 +20,9 @@ if sys.platform != "win32": F_SETOWN: int F_UNLCK: int F_WRLCK: int + + F_GETLEASE: int + F_SETLEASE: int if sys.platform == "darwin": F_FULLFSYNC: int F_NOCACHE: int @@ -30,11 +33,9 @@ if sys.platform != "win32": F_SETSIG: int F_SHLCK: int F_SETLK64: int - F_SETLEASE: int F_GETSIG: int F_NOTIFY: int F_EXLCK: int - F_GETLEASE: int F_GETLK64: int if sys.version_info >= (3, 8): F_ADD_SEALS: int @@ -104,13 +105,19 @@ if sys.platform != "win32": def fcntl(__fd: FileDescriptorLike, __cmd: int, __arg: int = 0) -> int: ... @overload def fcntl(__fd: FileDescriptorLike, __cmd: int, __arg: str | ReadOnlyBuffer) -> bytes: ... + # If arg is an int, return int @overload def ioctl(__fd: FileDescriptorLike, __request: int, __arg: int = 0, __mutate_flag: bool = True) -> int: ... + # The return type works as follows: + # - If arg is a read-write buffer, return int if mutate_flag is True, otherwise bytes + # - If arg is a read-only buffer, return bytes (and ignore the value of mutate_flag) + # We can't represent that precisely as we can't distinguish between read-write and read-only + # buffers, so we add overloads for a few unambiguous cases and use Any for the rest. @overload - def ioctl(__fd: FileDescriptorLike, __request: int, __arg: WriteableBuffer, __mutate_flag: Literal[True] = True) -> int: ... + def ioctl(__fd: FileDescriptorLike, __request: int, __arg: bytes, __mutate_flag: bool = True) -> bytes: ... @overload def ioctl(__fd: FileDescriptorLike, __request: int, __arg: WriteableBuffer, __mutate_flag: Literal[False]) -> bytes: ... @overload - def ioctl(__fd: FileDescriptorLike, __request: int, __arg: ReadOnlyBuffer, __mutate_flag: bool = True) -> bytes: ... + def ioctl(__fd: FileDescriptorLike, __request: int, __arg: Buffer, __mutate_flag: bool = True) -> Any: ... def flock(__fd: FileDescriptorLike, __operation: int) -> None: ... def lockf(__fd: FileDescriptorLike, __cmd: int, __len: int = 0, __start: int = 0, __whence: int = 0) -> Any: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi index 3c84978c1..7ec8addeb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/fractions.pyi @@ -22,11 +22,9 @@ else: class Fraction(Rational): @overload - def __new__( - cls, numerator: int | Rational = 0, denominator: int | Rational | None = None, *, _normalize: bool = True - ) -> Self: ... + def __new__(cls, numerator: int | Rational = 0, denominator: int | Rational | None = None) -> Self: ... @overload - def __new__(cls, __value: float | Decimal | str, *, _normalize: bool = True) -> Self: ... + def __new__(cls, __value: float | Decimal | str) -> Self: ... @classmethod def from_float(cls, f: float) -> Self: ... @classmethod @@ -34,6 +32,8 @@ class Fraction(Rational): def limit_denominator(self, max_denominator: int = 1000000) -> Fraction: ... if sys.version_info >= (3, 8): def as_integer_ratio(self) -> tuple[int, int]: ... + if sys.version_info >= (3, 12): + def is_integer(self) -> bool: ... @property def numerator(a) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi index 36a213d48..f24d14fbf 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi @@ -118,7 +118,20 @@ class FTP: def close(self) -> None: ... class FTP_TLS(FTP): - if sys.version_info >= (3, 9): + if sys.version_info >= (3, 12): + def __init__( + self, + host: str = "", + user: str = "", + passwd: str = "", + acct: str = "", + *, + context: SSLContext | None = None, + timeout: float = ..., + source_address: tuple[str, int] | None = None, + encoding: str = "utf-8", + ) -> None: ... + elif sys.version_info >= (3, 9): def __init__( self, host: str = "", diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi index 5a9fd12ab..8adc3d822 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/functools.pyi @@ -72,9 +72,19 @@ if sys.version_info >= (3, 8): else: def lru_cache(maxsize: int | None = 128, typed: bool = False) -> Callable[[Callable[..., _T]], _lru_cache_wrapper[_T]]: ... -WRAPPER_ASSIGNMENTS: tuple[ - Literal["__module__"], Literal["__name__"], Literal["__qualname__"], Literal["__doc__"], Literal["__annotations__"] -] +if sys.version_info >= (3, 12): + WRAPPER_ASSIGNMENTS: tuple[ + Literal["__module__"], + Literal["__name__"], + Literal["__qualname__"], + Literal["__doc__"], + Literal["__annotations__"], + Literal["__type_params__"], + ] +else: + WRAPPER_ASSIGNMENTS: tuple[ + Literal["__module__"], Literal["__name__"], Literal["__qualname__"], Literal["__doc__"], Literal["__annotations__"] + ] WRAPPER_UPDATES: tuple[Literal["__dict__"]] class _Wrapped(Generic[_PWrapped, _RWrapped, _PWrapper, _RWapper]): @@ -87,17 +97,32 @@ class _Wrapped(Generic[_PWrapped, _RWrapped, _PWrapper, _RWapper]): class _Wrapper(Generic[_PWrapped, _RWrapped]): def __call__(self, f: Callable[_PWrapper, _RWapper]) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... -def update_wrapper( - wrapper: Callable[_PWrapper, _RWapper], - wrapped: Callable[_PWrapped, _RWrapped], - assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), - updated: Sequence[str] = ("__dict__",), -) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... -def wraps( - wrapped: Callable[_PWrapped, _RWrapped], - assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), - updated: Sequence[str] = ("__dict__",), -) -> _Wrapper[_PWrapped, _RWrapped]: ... +if sys.version_info >= (3, 12): + def update_wrapper( + wrapper: Callable[_PWrapper, _RWapper], + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__", "__type_params__"), + updated: Sequence[str] = ("__dict__",), + ) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... + def wraps( + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__", "__type_params__"), + updated: Sequence[str] = ("__dict__",), + ) -> _Wrapper[_PWrapped, _RWrapped]: ... + +else: + def update_wrapper( + wrapper: Callable[_PWrapper, _RWapper], + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), + updated: Sequence[str] = ("__dict__",), + ) -> _Wrapped[_PWrapped, _RWrapped, _PWrapper, _RWapper]: ... + def wraps( + wrapped: Callable[_PWrapped, _RWrapped], + assigned: Sequence[str] = ("__module__", "__name__", "__qualname__", "__doc__", "__annotations__"), + updated: Sequence[str] = ("__dict__",), + ) -> _Wrapper[_PWrapped, _RWrapped]: ... + def total_ordering(cls: type[_T]) -> type[_T]: ... def cmp_to_key(mycmp: Callable[[_T, _T], int]) -> Callable[[_T], SupportsAllComparisons]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi index 6a794f381..1ec8b4b8c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/gzip.pyi @@ -1,7 +1,7 @@ import _compression import sys import zlib -from _typeshed import ReadableBuffer, StrOrBytesPath, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer, StrOrBytesPath from io import FileIO from typing import Protocol, TextIO, overload from typing_extensions import Literal, TypeAlias @@ -159,9 +159,9 @@ class _GzipReader(_compression.DecompressReader): def __init__(self, fp: _ReadableFileobj) -> None: ... if sys.version_info >= (3, 8): - def compress(data: _BufferWithLen, compresslevel: int = 9, *, mtime: float | None = None) -> bytes: ... + def compress(data: SizedBuffer, compresslevel: int = 9, *, mtime: float | None = None) -> bytes: ... else: - def compress(data: _BufferWithLen, compresslevel: int = 9) -> bytes: ... + def compress(data: SizedBuffer, compresslevel: int = 9) -> bytes: ... def decompress(data: ReadableBuffer) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi index ee8af1b48..9ff99a5a0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/hmac.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import ReadableBuffer, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer from collections.abc import Callable from types import ModuleType from typing import Any, AnyStr, overload @@ -46,4 +46,4 @@ class HMAC: def compare_digest(__a: ReadableBuffer, __b: ReadableBuffer) -> bool: ... @overload def compare_digest(__a: AnyStr, __b: AnyStr) -> bool: ... -def digest(key: _BufferWithLen, msg: ReadableBuffer, digest: _DigestMod) -> bytes: ... +def digest(key: SizedBuffer, msg: ReadableBuffer, digest: _DigestMod) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/http/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/http/__init__.pyi index d4b44f2eb..4310c79b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/http/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/http/__init__.pyi @@ -79,6 +79,17 @@ class HTTPStatus(IntEnum): EARLY_HINTS: Literal[103] IM_A_TEAPOT: Literal[418] TOO_EARLY: Literal[425] + if sys.version_info >= (3, 12): + @property + def is_informational(self) -> bool: ... + @property + def is_success(self) -> bool: ... + @property + def is_redirection(self) -> bool: ... + @property + def is_client_error(self) -> bool: ... + @property + def is_server_error(self) -> bool: ... if sys.version_info >= (3, 11): class HTTPMethod(StrEnum): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi index 1c2112dd3..7781559c3 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/imaplib.pyi @@ -1,7 +1,7 @@ import subprocess import sys import time -from _typeshed import ReadableBuffer, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer from builtins import list as _list # conflicts with a method named "list" from collections.abc import Callable from datetime import datetime @@ -155,7 +155,7 @@ class _Authenticator: def __init__(self, mechinst: Callable[[bytes], bytes | bytearray | memoryview | str | None]) -> None: ... def process(self, data: str) -> str: ... def encode(self, inp: bytes | bytearray | memoryview) -> str: ... - def decode(self, inp: str | _BufferWithLen) -> bytes: ... + def decode(self, inp: str | SizedBuffer) -> bytes: ... def Internaldate2tuple(resp: ReadableBuffer) -> time.struct_time | None: ... def Int2AP(num: SupportsAbs[SupportsInt]) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi index a2252e38e..2d004a8e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi @@ -598,3 +598,25 @@ def classify_class_attrs(cls: type) -> list[Attribute]: ... if sys.version_info >= (3, 9): class ClassFoundException(Exception): ... + +if sys.version_info >= (3, 12): + class BufferFlags(enum.IntFlag): + SIMPLE: int + WRITABLE: int + FORMAT: int + ND: int + STRIDES: int + C_CONTIGUOUS: int + F_CONTIGUOUS: int + ANY_CONTIGUOUS: int + INDIRECT: int + CONTIG: int + CONTIG_RO: int + STRIDED: int + STRIDED_RO: int + RECORDS: int + RECORDS_RO: int + FULL: int + FULL_RO: int + READ: int + WRITE: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi index 63e9718ee..dc0cdff92 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi @@ -1,3 +1,4 @@ +import sys from _typeshed import SupportsRead, SupportsWrite from collections.abc import Callable from typing import Any @@ -6,6 +7,8 @@ from .decoder import JSONDecodeError as JSONDecodeError, JSONDecoder as JSONDeco from .encoder import JSONEncoder as JSONEncoder __all__ = ["dump", "dumps", "load", "loads", "JSONDecoder", "JSONDecodeError", "JSONEncoder"] +if sys.version_info >= (3, 12): + __all__ += ["AttrDict"] def dumps( obj: Any, @@ -59,3 +62,9 @@ def load( **kwds: Any, ) -> Any: ... def detect_encoding(b: bytes | bytearray) -> str: ... # undocumented + +if sys.version_info >= (3, 12): + class AttrDict(dict[str, Any]): + def __getattr__(self, name: str) -> Any: ... + def __setattr__(self, name: str, value: Any) -> None: ... + def __delattr__(self, name: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/locale.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/locale.pyi index c6cc7cacf..3753700ea 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/locale.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/locale.pyi @@ -15,7 +15,6 @@ __all__ = [ "str", "atof", "atoi", - "format", "format_string", "currency", "normalize", @@ -32,6 +31,9 @@ __all__ = [ if sys.version_info >= (3, 11): __all__ += ["getencoding"] +if sys.version_info < (3, 12): + __all__ += ["format"] + # This module defines a function "str()", which is why "str" can't be used # as a type annotation or type alias. from builtins import str as _str @@ -123,7 +125,12 @@ def normalize(localename: _str) -> _str: ... def resetlocale(category: int = ...) -> None: ... def strcoll(__os1: _str, __os2: _str) -> int: ... def strxfrm(__string: _str) -> _str: ... -def format(percent: _str, value: float | Decimal, grouping: bool = False, monetary: bool = False, *additional: Any) -> _str: ... + +if sys.version_info < (3, 12): + def format( + percent: _str, value: float | Decimal, grouping: bool = False, monetary: bool = False, *additional: Any + ) -> _str: ... + def format_string(f: _str, val: Any, grouping: bool = False, monetary: bool = False) -> _str: ... def currency(val: float | Decimal, symbol: bool = True, grouping: bool = False, international: bool = False) -> _str: ... def delocalize(string: _str) -> _str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi index 3a7c8ade7..ad5bf392b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/handlers.pyi @@ -179,7 +179,7 @@ class SysLogHandler(Handler): facility_names: ClassVar[dict[str, int]] # undocumented priority_map: ClassVar[dict[str, str]] # undocumented def __init__( - self, address: tuple[str, int] | str = ("localhost", 514), facility: int = 1, socktype: SocketKind | None = None + self, address: tuple[str, int] | str = ("localhost", 514), facility: str | int = 1, socktype: SocketKind | None = None ) -> None: ... if sys.version_info >= (3, 11): def createSocket(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi index 231964f39..4a4d592b8 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/math.pyi @@ -112,7 +112,10 @@ def log1p(__x: _SupportsFloatOrIndex) -> float: ... def log2(__x: _SupportsFloatOrIndex) -> float: ... def modf(__x: _SupportsFloatOrIndex) -> tuple[float, float]: ... -if sys.version_info >= (3, 9): +if sys.version_info >= (3, 12): + def nextafter(__x: _SupportsFloatOrIndex, __y: _SupportsFloatOrIndex, *, steps: SupportsIndex | None = None) -> float: ... + +elif sys.version_info >= (3, 9): def nextafter(__x: _SupportsFloatOrIndex, __y: _SupportsFloatOrIndex) -> float: ... if sys.version_info >= (3, 8): @@ -130,6 +133,10 @@ def radians(__x: _SupportsFloatOrIndex) -> float: ... def remainder(__x: _SupportsFloatOrIndex, __y: _SupportsFloatOrIndex) -> float: ... def sin(__x: _SupportsFloatOrIndex) -> float: ... def sinh(__x: _SupportsFloatOrIndex) -> float: ... + +if sys.version_info >= (3, 12): + def sumprod(__p: Iterable[float], __q: Iterable[float]) -> float: ... + def sqrt(__x: _SupportsFloatOrIndex) -> float: ... def tan(__x: _SupportsFloatOrIndex) -> float: ... def tanh(__x: _SupportsFloatOrIndex) -> float: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi index 8da4ea7ca..38e192439 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/mmap.pyi @@ -76,6 +76,8 @@ class mmap(Iterable[int], Sized): def __iter__(self) -> Iterator[int]: ... def __enter__(self) -> Self: ... def __exit__(self, *args: Unused) -> None: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... if sys.version_info >= (3, 8) and sys.platform != "win32": MADV_NORMAL: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/connection.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/connection.pyi index d03437371..28696fe6a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/connection.pyi @@ -52,7 +52,12 @@ class Listener: self, exc_type: type[BaseException] | None, exc_value: BaseException | None, exc_tb: types.TracebackType | None ) -> None: ... -def deliver_challenge(connection: Connection, authkey: bytes) -> None: ... +if sys.version_info >= (3, 12): + def deliver_challenge(connection: Connection, authkey: bytes, digest_name: str = "sha256") -> None: ... + +else: + def deliver_challenge(connection: Connection, authkey: bytes) -> None: ... + def answer_challenge(connection: Connection, authkey: bytes) -> None: ... def wait( object_list: Iterable[Connection | socket.socket | int], timeout: float | None = None diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/queues.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/queues.pyi index a26ab7173..8e72d15f2 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/queues.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/queues.pyi @@ -22,6 +22,8 @@ class Queue(Generic[_T]): def close(self) -> None: ... def join_thread(self) -> None: ... def cancel_join_thread(self) -> None: ... + if sys.version_info >= (3, 12): + def __class_getitem__(cls, __item: Any) -> GenericAlias: ... class JoinableQueue(Queue[_T]): def task_done(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/opcode.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/opcode.pyi index 1232454e7..f852489ff 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/opcode.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/opcode.pyi @@ -14,9 +14,12 @@ __all__ = [ "opmap", "HAVE_ARGUMENT", "EXTENDED_ARG", - "hasnargs", "stack_effect", ] +if sys.version_info >= (3, 12): + __all__ += ["hasarg", "hasexc"] +else: + __all__ += ["hasnargs"] if sys.version_info >= (3, 9): cmp_op: tuple[Literal["<"], Literal["<="], Literal["=="], Literal["!="], Literal[">"], Literal[">="]] @@ -42,6 +45,11 @@ hasjabs: list[int] haslocal: list[int] hascompare: list[int] hasfree: list[int] +if sys.version_info >= (3, 12): + hasarg: list[int] + hasexc: list[int] +else: + hasnargs: list[int] opname: list[str] opmap: dict[str, int] @@ -53,5 +61,3 @@ if sys.version_info >= (3, 8): else: def stack_effect(__opcode: int, __oparg: int | None = None) -> int: ... - -hasnargs: list[int] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi index 7aec66b58..3c2ae0fe7 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi @@ -55,7 +55,11 @@ class PurePath(PathLike[str]): if sys.version_info >= (3, 9): def is_relative_to(self, *other: StrPath) -> bool: ... - def match(self, path_pattern: str) -> bool: ... + if sys.version_info >= (3, 12): + def match(self, path_pattern: str, *, case_sensitive: bool | None = None) -> bool: ... + else: + def match(self, path_pattern: str) -> bool: ... + def relative_to(self, *other: StrPath) -> Self: ... def with_name(self, name: str) -> Self: ... if sys.version_info >= (3, 9): @@ -70,6 +74,9 @@ class PurePath(PathLike[str]): if sys.version_info >= (3, 9) and sys.version_info < (3, 11): def __class_getitem__(cls, type: Any) -> GenericAlias: ... + if sys.version_info >= (3, 12): + def with_segments(self, *args: StrPath) -> Self: ... + class PurePosixPath(PurePath): ... class PureWindowsPath(PurePath): ... @@ -86,8 +93,15 @@ class Path(PurePath): def stat(self) -> stat_result: ... def chmod(self, mode: int) -> None: ... - def exists(self) -> bool: ... - def glob(self, pattern: str) -> Generator[Self, None, None]: ... + if sys.version_info >= (3, 12): + def exists(self, *, follow_symlinks: bool = True) -> bool: ... + def glob(self, pattern: str, *, case_sensitive: bool | None = None) -> Generator[Self, None, None]: ... + def rglob(self, pattern: str, *, case_sensitive: bool | None = None) -> Generator[Self, None, None]: ... + else: + def exists(self) -> bool: ... + def glob(self, pattern: str) -> Generator[Self, None, None]: ... + def rglob(self, pattern: str) -> Generator[Self, None, None]: ... + def is_dir(self) -> bool: ... def is_file(self) -> bool: ... def is_symlink(self) -> bool: ... @@ -95,6 +109,9 @@ class Path(PurePath): def is_fifo(self) -> bool: ... def is_block_device(self) -> bool: ... def is_char_device(self) -> bool: ... + if sys.version_info >= (3, 12): + def is_junction(self) -> bool: ... + def iterdir(self) -> Generator[Self, None, None]: ... def lchmod(self, mode: int) -> None: ... def lstat(self) -> stat_result: ... @@ -159,6 +176,10 @@ class Path(PurePath): # so it's safer to pretend they don't exist def owner(self) -> str: ... def group(self) -> str: ... + + # This method does "exist" on Windows on <3.12, but always raises NotImplementedError + # On py312+, it works properly on Windows, as with all other platforms + if sys.platform != "win32" or sys.version_info >= (3, 12): def is_mount(self) -> bool: ... if sys.version_info >= (3, 9): @@ -171,7 +192,6 @@ class Path(PurePath): def replace(self, target: str | PurePath) -> None: ... def resolve(self, strict: bool = False) -> Self: ... - def rglob(self, pattern: str) -> Generator[Self, None, None]: ... def rmdir(self) -> None: ... def symlink_to(self, target: StrOrBytesPath, target_is_directory: bool = False) -> None: ... if sys.version_info >= (3, 10): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi index 405c45ca0..e0d69e7d3 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi @@ -168,7 +168,10 @@ class Pdb(Bdb, Cmd): def find_function(funcname: str, filename: str) -> tuple[str, str, int] | None: ... def main() -> None: ... def help() -> None: ... -def getsourcelines(obj: _SourceObjectType) -> tuple[list[str], int]: ... + +if sys.version_info < (3, 10): + def getsourcelines(obj: _SourceObjectType) -> tuple[list[str], int]: ... + def lasti2lineno(code: CodeType, lasti: int) -> int: ... class _rstr(str): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi index 55ff38585..cf3995d74 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pickle.pyi @@ -103,6 +103,8 @@ if sys.version_info >= (3, 8): def __init__(self, buffer: ReadableBuffer) -> None: ... def raw(self) -> memoryview: ... def release(self) -> None: ... + def __buffer__(self, __flags: int) -> memoryview: ... + def __release_buffer__(self, __buffer: memoryview) -> None: ... _BufferCallback: TypeAlias = Callable[[PickleBuffer], Any] | None def dump( obj: Any, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pkgutil.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pkgutil.pyi index f9808c9e5..59f1f734c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pkgutil.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pkgutil.pyi @@ -12,12 +12,12 @@ __all__ = [ "walk_packages", "iter_modules", "get_data", - "ImpImporter", - "ImpLoader", "read_code", "extend_path", "ModuleInfo", ] +if sys.version_info < (3, 12): + __all__ += ["ImpImporter", "ImpLoader"] _PathT = TypeVar("_PathT", bound=Iterable[str]) @@ -28,11 +28,12 @@ class ModuleInfo(NamedTuple): def extend_path(path: _PathT, name: str) -> _PathT: ... -class ImpImporter: - def __init__(self, path: str | None = None) -> None: ... +if sys.version_info < (3, 12): + class ImpImporter: + def __init__(self, path: str | None = None) -> None: ... -class ImpLoader: - def __init__(self, fullname: str, file: IO[str], filename: str, etc: tuple[str, str, int]) -> None: ... + class ImpLoader: + def __init__(self, fullname: str, file: IO[str], filename: str, etc: tuple[str, str, int]) -> None: ... def find_loader(fullname: str) -> Loader | None: ... def get_importer(path_item: str) -> PathEntryFinder | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi index 5434f2240..9fd1c64f2 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/random.pyi @@ -34,6 +34,8 @@ __all__ = [ if sys.version_info >= (3, 9): __all__ += ["randbytes"] +if sys.version_info >= (3, 12): + __all__ += ["binomialvariate"] _T = TypeVar("_T") @@ -79,8 +81,15 @@ class Random(_random.Random): def uniform(self, a: float, b: float) -> float: ... def triangular(self, low: float = 0.0, high: float = 1.0, mode: float | None = None) -> float: ... + if sys.version_info >= (3, 12): + def binomialvariate(self, n: int = 1, p: float = 0.5) -> int: ... + def betavariate(self, alpha: float, beta: float) -> float: ... - def expovariate(self, lambd: float) -> float: ... + if sys.version_info >= (3, 12): + def expovariate(self, lambd: float = 1.0) -> float: ... + else: + def expovariate(self, lambd: float) -> float: ... + def gammavariate(self, alpha: float, beta: float) -> float: ... if sys.version_info >= (3, 11): def gauss(self, mu: float = 0.0, sigma: float = 1.0) -> float: ... @@ -117,6 +126,8 @@ expovariate = _inst.expovariate vonmisesvariate = _inst.vonmisesvariate gammavariate = _inst.gammavariate gauss = _inst.gauss +if sys.version_info >= (3, 12): + binomialvariate = _inst.binomialvariate betavariate = _inst.betavariate paretovariate = _inst.paretovariate weibullvariate = _inst.weibullvariate diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi index e8eb46833..ef716d404 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi @@ -87,22 +87,46 @@ else: ignore_dangling_symlinks: bool = False, ) -> _PathReturn: ... -_OnErrorCallback: TypeAlias = Callable[[Callable[..., Any], Any, Any], object] +_OnErrorCallback: TypeAlias = Callable[[Callable[..., Any], str, Any], object] +_OnExcCallback: TypeAlias = Callable[[Callable[..., Any], str, Exception], object] class _RmtreeType(Protocol): avoids_symlink_attacks: bool - if sys.version_info >= (3, 11): + if sys.version_info >= (3, 12): + @overload def __call__( self, path: StrOrBytesPath, - ignore_errors: bool = ..., - onerror: _OnErrorCallback | None = ..., + ignore_errors: bool = False, + onerror: _OnErrorCallback | None = None, *, - dir_fd: int | None = ..., + onexc: None = None, + dir_fd: int | None = None, + ) -> None: ... + @overload + def __call__( + self, + path: StrOrBytesPath, + ignore_errors: bool = False, + onerror: None = None, + *, + onexc: _OnExcCallback, + dir_fd: int | None = None, + ) -> None: ... + elif sys.version_info >= (3, 11): + def __call__( + self, + path: StrOrBytesPath, + ignore_errors: bool = False, + onerror: _OnErrorCallback | None = None, + *, + dir_fd: int | None = None, ) -> None: ... else: - def __call__(self, path: StrOrBytesPath, ignore_errors: bool = ..., onerror: _OnErrorCallback | None = ...) -> None: ... + def __call__( + self, path: StrOrBytesPath, ignore_errors: bool = False, onerror: _OnErrorCallback | None = None + ) -> None: ... rmtree: _RmtreeType @@ -167,7 +191,15 @@ def register_archive_format( name: str, function: Callable[[str, str], object], extra_args: None = None, description: str = "" ) -> None: ... def unregister_archive_format(name: str) -> None: ... -def unpack_archive(filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None) -> None: ... + +if sys.version_info >= (3, 12): + def unpack_archive( + filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None, *, filter: str | None = None + ) -> None: ... + +else: + def unpack_archive(filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None) -> None: ... + @overload def register_unpack_format( name: str, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi index 4228ad551..584fa164f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/smtplib.pyi @@ -1,6 +1,6 @@ import sys from _socket import _Address as _SourceAddress -from _typeshed import ReadableBuffer, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer from collections.abc import Sequence from email.message import Message as _Message from re import Pattern @@ -133,7 +133,7 @@ class SMTP: self, from_addr: str, to_addrs: str | Sequence[str], - msg: _BufferWithLen | str, + msg: SizedBuffer | str, mail_options: Sequence[str] = (), rcpt_options: Sequence[str] = (), ) -> _SendErrs: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi index 6c897b919..e1ffc573b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi @@ -438,6 +438,36 @@ if sys.platform == "win32": SIO_LOOPBACK_FAST_PATH as SIO_LOOPBACK_FAST_PATH, SIO_RCVALL as SIO_RCVALL, ) +if sys.version_info >= (3, 12): + from _socket import ( + IP_ADD_SOURCE_MEMBERSHIP as IP_ADD_SOURCE_MEMBERSHIP, + IP_BLOCK_SOURCE as IP_BLOCK_SOURCE, + IP_DROP_SOURCE_MEMBERSHIP as IP_DROP_SOURCE_MEMBERSHIP, + IP_PKTINFO as IP_PKTINFO, + IP_UNBLOCK_SOURCE as IP_UNBLOCK_SOURCE, + ) + + if sys.platform == "win32": + from _socket import ( + HV_GUID_BROADCAST as HV_GUID_BROADCAST, + HV_GUID_CHILDREN as HV_GUID_CHILDREN, + HV_GUID_LOOPBACK as HV_GUID_LOOPBACK, + HV_GUID_PARENT as HV_GUID_PARENT, + HV_GUID_WILDCARD as HV_GUID_WILDCARD, + HV_GUID_ZERO as HV_GUID_ZERO, + HV_PROTOCOL_RAW as HV_PROTOCOL_RAW, + HVSOCKET_ADDRESS_FLAG_PASSTHRU as HVSOCKET_ADDRESS_FLAG_PASSTHRU, + HVSOCKET_CONNECT_TIMEOUT as HVSOCKET_CONNECT_TIMEOUT, + HVSOCKET_CONNECT_TIMEOUT_MAX as HVSOCKET_CONNECT_TIMEOUT_MAX, + HVSOCKET_CONNECTED_SUSPEND as HVSOCKET_CONNECTED_SUSPEND, + ) + else: + from _socket import ( + ETHERTYPE_ARP as ETHERTYPE_ARP, + ETHERTYPE_IP as ETHERTYPE_IP, + ETHERTYPE_IPV6 as ETHERTYPE_IPV6, + ETHERTYPE_VLAN as ETHERTYPE_VLAN, + ) # Re-exported from errno EBADF: int @@ -489,6 +519,8 @@ class AddressFamily(IntEnum): AF_LINK: int if sys.platform != "darwin": AF_BLUETOOTH: int + if sys.platform == "win32" and sys.version_info >= (3, 12): + AF_HYPERV: int AF_INET = AddressFamily.AF_INET AF_INET6 = AddressFamily.AF_INET6 @@ -540,6 +572,9 @@ if sys.platform != "win32" or sys.version_info >= (3, 9): if sys.platform != "darwin": AF_BLUETOOTH = AddressFamily.AF_BLUETOOTH +if sys.platform == "win32" and sys.version_info >= (3, 12): + AF_HYPERV = AddressFamily.AF_HYPERV + class SocketKind(IntEnum): SOCK_STREAM: int SOCK_DGRAM: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi index 3799d82a0..6a932f66c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/socketserver.pyi @@ -28,6 +28,8 @@ if sys.platform != "win32": "UnixDatagramServer", "UnixStreamServer", ] + if sys.version_info >= (3, 12): + __all__ += ["ForkingUnixStreamServer", "ForkingUnixDatagramServer"] _RequestType: TypeAlias = _socket | tuple[bytes, _socket] _AfUnixAddress: TypeAlias = str | ReadableBuffer # address acceptable for an AF_UNIX socket @@ -124,6 +126,9 @@ class ThreadingMixIn: if sys.platform != "win32": class ForkingTCPServer(ForkingMixIn, TCPServer): ... class ForkingUDPServer(ForkingMixIn, UDPServer): ... + if sys.version_info >= (3, 12): + class ForkingUnixStreamServer(ForkingMixIn, UnixStreamServer): ... + class ForkingUnixDatagramServer(ForkingMixIn, UnixDatagramServer): ... class ThreadingTCPServer(ThreadingMixIn, TCPServer): ... class ThreadingUDPServer(ThreadingMixIn, UDPServer): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi index 1358b1f90..af5fcec6a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi @@ -114,8 +114,15 @@ if sys.version_info >= (3, 8): def __rsub__(self, x2: float | NormalDist) -> NormalDist: ... __rmul__ = __mul__ -if sys.version_info >= (3, 10): +if sys.version_info >= (3, 12): + def correlation( + __x: Sequence[_Number], __y: Sequence[_Number], *, method: Literal["linear", "ranked"] = "linear" + ) -> float: ... + +elif sys.version_info >= (3, 10): def correlation(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ... + +if sys.version_info >= (3, 10): def covariance(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ... class LinearRegression(NamedTuple): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi index c2fdbeccc..ca0491240 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sys.pyi @@ -321,7 +321,7 @@ if sys.version_info < (3, 9): if sys.version_info >= (3, 8): # Doesn't exist at runtime, but exported in the stubs so pytest etc. can annotate their code more easily. - class UnraisableHookArgs: + class UnraisableHookArgs(Protocol): exc_type: type[BaseException] exc_value: BaseException | None exc_traceback: TracebackType | None @@ -359,3 +359,13 @@ if sys.version_info < (3, 8): # as part of the response to CVE-2020-10735 def set_int_max_str_digits(maxdigits: int) -> None: ... def get_int_max_str_digits() -> int: ... + +if sys.version_info >= (3, 12): + def getunicodeinternedsize() -> int: ... + def deactivate_stack_trampoline() -> None: ... + def is_stack_trampoline_active() -> bool: ... + # It always exists, but raises on non-linux platforms: + if sys.platform == "linux": + def activate_stack_trampoline(__backend: str) -> None: ... + else: + def activate_stack_trampoline(__backend: str) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi index cd27e91fb..eca58a372 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi @@ -1,10 +1,21 @@ import io import sys -from _typeshed import BytesPath, GenericPath, ReadableBuffer, StrPath, WriteableBuffer +from _typeshed import ( + BytesPath, + GenericPath, + OpenBinaryMode, + OpenBinaryModeReading, + OpenBinaryModeUpdating, + OpenBinaryModeWriting, + OpenTextMode, + ReadableBuffer, + StrPath, + WriteableBuffer, +) from collections.abc import Iterable, Iterator from types import TracebackType from typing import IO, Any, AnyStr, Generic, overload -from typing_extensions import Literal, Self, TypeAlias +from typing_extensions import Literal, Self if sys.version_info >= (3, 9): from types import GenericAlias @@ -30,13 +41,54 @@ TMP_MAX: int tempdir: str | None template: str -_StrMode: TypeAlias = Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"] -_BytesMode: TypeAlias = Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] +if sys.version_info >= (3, 12): + @overload + def NamedTemporaryFile( + mode: OpenTextMode, + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + delete: bool = True, + *, + errors: str | None = None, + delete_on_close: bool = True, + ) -> _TemporaryFileWrapper[str]: ... + @overload + def NamedTemporaryFile( + mode: OpenBinaryMode = "w+b", + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + delete: bool = True, + *, + errors: str | None = None, + delete_on_close: bool = True, + ) -> _TemporaryFileWrapper[bytes]: ... + @overload + def NamedTemporaryFile( + mode: str = "w+b", + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + delete: bool = True, + *, + errors: str | None = None, + delete_on_close: bool = True, + ) -> _TemporaryFileWrapper[Any]: ... -if sys.version_info >= (3, 8): +elif sys.version_info >= (3, 8): @overload def NamedTemporaryFile( - mode: _StrMode, + mode: OpenTextMode, buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -49,7 +101,7 @@ if sys.version_info >= (3, 8): ) -> _TemporaryFileWrapper[str]: ... @overload def NamedTemporaryFile( - mode: _BytesMode = "w+b", + mode: OpenBinaryMode = "w+b", buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -77,7 +129,7 @@ if sys.version_info >= (3, 8): else: @overload def NamedTemporaryFile( - mode: _StrMode, + mode: OpenTextMode, buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -88,7 +140,7 @@ else: ) -> _TemporaryFileWrapper[str]: ... @overload def NamedTemporaryFile( - mode: _BytesMode = "w+b", + mode: OpenBinaryMode = "w+b", buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -112,10 +164,11 @@ else: if sys.platform == "win32": TemporaryFile = NamedTemporaryFile else: + # See the comments for builtins.open() for an explanation of the overloads. if sys.version_info >= (3, 8): @overload def TemporaryFile( - mode: _StrMode, + mode: OpenTextMode, buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -124,11 +177,47 @@ else: dir: GenericPath[AnyStr] | None = None, *, errors: str | None = None, - ) -> IO[str]: ... + ) -> io.TextIOWrapper: ... @overload def TemporaryFile( - mode: _BytesMode = "w+b", - buffering: int = -1, + mode: OpenBinaryMode, + buffering: Literal[0], + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + *, + errors: str | None = None, + ) -> io.FileIO: ... + @overload + def TemporaryFile( + mode: OpenBinaryModeWriting, + buffering: Literal[-1, 1] = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + *, + errors: str | None = None, + ) -> io.BufferedWriter: ... + @overload + def TemporaryFile( + mode: OpenBinaryModeReading, + buffering: Literal[-1, 1] = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + *, + errors: str | None = None, + ) -> io.BufferedReader: ... + @overload + def TemporaryFile( + mode: OpenBinaryModeUpdating = "w+b", + buffering: Literal[-1, 1] = -1, encoding: str | None = None, newline: str | None = None, suffix: AnyStr | None = None, @@ -136,7 +225,7 @@ else: dir: GenericPath[AnyStr] | None = None, *, errors: str | None = None, - ) -> IO[bytes]: ... + ) -> io.BufferedRandom: ... @overload def TemporaryFile( mode: str = "w+b", @@ -152,40 +241,74 @@ else: else: @overload def TemporaryFile( - mode: _StrMode, - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: GenericPath[AnyStr] | None = ..., - ) -> IO[str]: ... + mode: OpenTextMode, + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + ) -> io.TextIOWrapper: ... + @overload + def TemporaryFile( + mode: OpenBinaryMode, + buffering: Literal[0], + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + ) -> io.FileIO: ... @overload def TemporaryFile( - mode: _BytesMode = ..., - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: GenericPath[AnyStr] | None = ..., - ) -> IO[bytes]: ... + mode: OpenBinaryModeUpdating = "w+b", + buffering: Literal[-1, 1] = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + ) -> io.BufferedRandom: ... + @overload + def TemporaryFile( + mode: OpenBinaryModeWriting, + buffering: Literal[-1, 1] = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + ) -> io.BufferedWriter: ... + @overload + def TemporaryFile( + mode: OpenBinaryModeReading, + buffering: Literal[-1, 1] = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + ) -> io.BufferedReader: ... @overload def TemporaryFile( - mode: str = ..., - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: AnyStr | None = ..., - prefix: AnyStr | None = ..., - dir: GenericPath[AnyStr] | None = ..., + mode: str = "w+b", + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, ) -> IO[Any]: ... class _TemporaryFileWrapper(Generic[AnyStr], IO[AnyStr]): file: IO[AnyStr] # io.TextIOWrapper, io.BufferedReader or io.BufferedWriter name: str delete: bool - def __init__(self, file: IO[AnyStr], name: str, delete: bool = True) -> None: ... + if sys.version_info >= (3, 12): + def __init__(self, file: IO[AnyStr], name: str, delete: bool = True, delete_on_close: bool = True) -> None: ... + else: + def __init__(self, file: IO[AnyStr], name: str, delete: bool = True) -> None: ... + def __enter__(self) -> Self: ... def __exit__(self, exc: type[BaseException] | None, value: BaseException | None, tb: TracebackType | None) -> None: ... def __getattr__(self, name: str) -> Any: ... @@ -246,7 +369,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): def __init__( self: SpooledTemporaryFile[bytes], max_size: int = 0, - mode: _BytesMode = "w+b", + mode: OpenBinaryMode = "w+b", buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -260,7 +383,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): def __init__( self: SpooledTemporaryFile[str], max_size: int, - mode: _StrMode, + mode: OpenTextMode, buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -275,7 +398,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): self: SpooledTemporaryFile[str], max_size: int = 0, *, - mode: _StrMode, + mode: OpenTextMode, buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -319,7 +442,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): def __init__( self: SpooledTemporaryFile[bytes], max_size: int = 0, - mode: _BytesMode = "w+b", + mode: OpenBinaryMode = "w+b", buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -331,7 +454,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): def __init__( self: SpooledTemporaryFile[str], max_size: int, - mode: _StrMode, + mode: OpenTextMode, buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -344,7 +467,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): self: SpooledTemporaryFile[str], max_size: int = 0, *, - mode: _StrMode, + mode: OpenTextMode, buffering: int = -1, encoding: str | None = None, newline: str | None = None, @@ -425,7 +548,28 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): class TemporaryDirectory(Generic[AnyStr]): name: AnyStr - if sys.version_info >= (3, 10): + if sys.version_info >= (3, 12): + @overload + def __init__( + self: TemporaryDirectory[str], + suffix: str | None = None, + prefix: str | None = None, + dir: StrPath | None = None, + ignore_cleanup_errors: bool = False, + *, + delete: bool = True, + ) -> None: ... + @overload + def __init__( + self: TemporaryDirectory[bytes], + suffix: bytes | None = None, + prefix: bytes | None = None, + dir: BytesPath | None = None, + ignore_cleanup_errors: bool = False, + *, + delete: bool = True, + ) -> None: ... + elif sys.version_info >= (3, 10): @overload def __init__( self: TemporaryDirectory[str], diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi index 6275e4552..badd09cae 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/threading.pyi @@ -37,6 +37,9 @@ if sys.version_info >= (3, 8): if sys.version_info >= (3, 10): __all__ += ["getprofile", "gettrace"] +if sys.version_info >= (3, 12): + __all__ += ["setprofile_all_threads", "settrace_all_threads"] + _profile_hook: ProfileFunction | None def active_count() -> int: ... @@ -53,6 +56,10 @@ if sys.version_info >= (3, 8): def settrace(func: TraceFunction) -> None: ... def setprofile(func: ProfileFunction | None) -> None: ... +if sys.version_info >= (3, 12): + def setprofile_all_threads(func: ProfileFunction | None) -> None: ... + def settrace_all_threads(func: TraceFunction) -> None: ... + if sys.version_info >= (3, 10): def gettrace() -> TraceFunction | None: ... def getprofile() -> ProfileFunction | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/token.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/token.pyi index fcd6ef87d..85867a2b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/token.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/token.pyi @@ -73,6 +73,9 @@ if sys.version_info >= (3, 8): if sys.version_info >= (3, 10): __all__ += ["SOFT_KEYWORD"] +if sys.version_info >= (3, 12): + __all__ += ["EXCLAMATION", "FSTRING_END", "FSTRING_MIDDLE", "FSTRING_START"] + ENDMARKER: int NAME: int NUMBER: int @@ -145,6 +148,12 @@ if sys.version_info >= (3, 8): if sys.version_info >= (3, 10): SOFT_KEYWORD: int +if sys.version_info >= (3, 12): + EXCLAMATION: int + FSTRING_END: int + FSTRING_MIDDLE: int + FSTRING_START: int + def ISTERMINAL(x: int) -> bool: ... def ISNONTERMINAL(x: int) -> bool: ... def ISEOF(x: int) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tokenize.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tokenize.pyi index ba57402fb..0028ed034 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tokenize.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tokenize.pyi @@ -83,6 +83,9 @@ if sys.version_info >= (3, 8): if sys.version_info >= (3, 10): __all__ += ["SOFT_KEYWORD"] +if sys.version_info >= (3, 12): + __all__ += ["EXCLAMATION", "FSTRING_END", "FSTRING_MIDDLE", "FSTRING_START"] + if sys.version_info >= (3, 8): from token import EXACT_TOKEN_TYPES as EXACT_TOKEN_TYPES else: diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi index 43475d912..6909c765c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi @@ -17,7 +17,7 @@ from importlib.machinery import ModuleSpec # pytype crashes if types.MappingProxyType inherits from collections.abc.Mapping instead of typing.Mapping from typing import Any, ClassVar, Generic, Mapping, Protocol, TypeVar, overload # noqa: Y022 -from typing_extensions import Literal, ParamSpec, final +from typing_extensions import Literal, ParamSpec, TypeVarTuple, final __all__ = [ "FunctionType", @@ -94,6 +94,8 @@ class FunctionType: if sys.version_info >= (3, 10): @property def __builtins__(self) -> dict[str, Any]: ... + if sys.version_info >= (3, 12): + __type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] __module__: str def __init__( @@ -374,6 +376,10 @@ class AsyncGeneratorType(AsyncGenerator[_T_co, _T_contra]): def ag_await(self) -> Awaitable[Any] | None: ... __name__: str __qualname__: str + if sys.version_info >= (3, 12): + @property + def ag_suspended(self) -> bool: ... + def __aiter__(self) -> AsyncGeneratorType[_T_co, _T_contra]: ... def __anext__(self) -> Coroutine[Any, Any, _T_co]: ... def asend(self, __val: _T_contra) -> Coroutine[Any, Any, _T_co]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi index 6fc677dcb..08d7da5e8 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi @@ -136,14 +136,32 @@ Any = object() @_final class TypeVar: - __name__: str - __bound__: Any | None - __constraints__: tuple[Any, ...] - __covariant__: bool - __contravariant__: bool - def __init__( - self, name: str, *constraints: Any, bound: Any | None = None, covariant: bool = False, contravariant: bool = False - ) -> None: ... + @property + def __name__(self) -> str: ... + @property + def __bound__(self) -> Any | None: ... + @property + def __constraints__(self) -> tuple[Any, ...]: ... + @property + def __covariant__(self) -> bool: ... + @property + def __contravariant__(self) -> bool: ... + if sys.version_info >= (3, 12): + @property + def __infer_variance__(self) -> bool: ... + def __init__( + self, + name: str, + *constraints: Any, + bound: Any | None = None, + covariant: bool = False, + contravariant: bool = False, + infer_variance: bool = False, + ) -> None: ... + else: + def __init__( + self, name: str, *constraints: Any, bound: Any | None = None, covariant: bool = False, contravariant: bool = False + ) -> None: ... if sys.version_info >= (3, 10): def __or__(self, right: Any) -> _SpecialForm: ... def __ror__(self, left: Any) -> _SpecialForm: ... @@ -193,30 +211,55 @@ if sys.version_info >= (3, 11): NotRequired: _SpecialForm LiteralString: _SpecialForm + @_final class TypeVarTuple: - __name__: str + @property + def __name__(self) -> str: ... def __init__(self, name: str) -> None: ... def __iter__(self) -> Any: ... def __typing_subst__(self, arg: Never) -> Never: ... def __typing_prepare_subst__(self, alias: Incomplete, args: Incomplete) -> Incomplete: ... if sys.version_info >= (3, 10): + @_final class ParamSpecArgs: - __origin__: ParamSpec + @property + def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... + @_final class ParamSpecKwargs: - __origin__: ParamSpec + @property + def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... + @_final class ParamSpec: - __name__: str - __bound__: Any | None - __covariant__: bool - __contravariant__: bool - def __init__( - self, name: str, *, bound: Any | None = None, contravariant: bool = False, covariant: bool = False - ) -> None: ... + @property + def __name__(self) -> str: ... + @property + def __bound__(self) -> Any | None: ... + @property + def __covariant__(self) -> bool: ... + @property + def __contravariant__(self) -> bool: ... + if sys.version_info >= (3, 12): + @property + def __infer_variance__(self) -> bool: ... + def __init__( + self, + name: str, + *, + bound: Any | None = None, + contravariant: bool = False, + covariant: bool = False, + infer_variance: bool = False, + ) -> None: ... + else: + def __init__( + self, name: str, *, bound: Any | None = None, contravariant: bool = False, covariant: bool = False + ) -> None: ... + @property def args(self) -> ParamSpecArgs: ... @property @@ -233,7 +276,7 @@ if sys.version_info >= (3, 10): class NewType: def __init__(self, name: str, tp: Any) -> None: ... - def __call__(self, x: _T) -> _T: ... + def __call__(self, __x: _T) -> _T: ... def __or__(self, other: Any) -> _SpecialForm: ... def __ror__(self, other: Any) -> _SpecialForm: ... __supertype__: type @@ -588,6 +631,7 @@ class Mapping(Collection[_KT], Generic[_KT, _VT_co]): def keys(self) -> KeysView[_KT]: ... def values(self) -> ValuesView[_VT_co]: ... def __contains__(self, __key: object) -> bool: ... + def __eq__(self, __other: object) -> bool: ... class MutableMapping(Mapping[_KT, _VT], Generic[_KT, _VT]): @abstractmethod @@ -728,7 +772,7 @@ class TextIO(IO[str]): @abstractmethod def __enter__(self) -> TextIO: ... -class ByteString(Sequence[int], metaclass=ABCMeta): ... +ByteString: typing_extensions.TypeAlias = bytes | bytearray | memoryview # Functions @@ -800,18 +844,21 @@ if sys.version_info >= (3, 11): class NamedTuple(tuple[Any, ...]): if sys.version_info < (3, 8): - _field_types: collections.OrderedDict[str, type] + _field_types: ClassVar[collections.OrderedDict[str, type]] elif sys.version_info < (3, 9): - _field_types: dict[str, type] - _field_defaults: dict[str, Any] - _fields: tuple[str, ...] - _source: str + _field_types: ClassVar[dict[str, type]] + _field_defaults: ClassVar[dict[str, Any]] + _fields: ClassVar[tuple[str, ...]] + # __orig_bases__ sometimes exists on <3.12, but not consistently + # So we only add it to the stub on 3.12+. + if sys.version_info >= (3, 12): + __orig_bases__: ClassVar[tuple[Any, ...]] @overload - def __init__(self, typename: str, fields: Iterable[tuple[str, Any]] = ...) -> None: ... + def __init__(self, __typename: str, __fields: Iterable[tuple[str, Any]]) -> None: ... @overload - def __init__(self, typename: str, fields: None = None, **kwargs: Any) -> None: ... + def __init__(self, __typename: str, __fields: None = None, **kwargs: Any) -> None: ... @classmethod - def _make(cls: Type[_T], iterable: Iterable[Any]) -> _T: ... + def _make(cls, iterable: Iterable[Any]) -> typing_extensions.Self: ... if sys.version_info >= (3, 8): def _asdict(self) -> dict[str, Any]: ... else: @@ -827,6 +874,10 @@ class _TypedDict(Mapping[str, object], metaclass=ABCMeta): if sys.version_info >= (3, 9): __required_keys__: ClassVar[frozenset[str]] __optional_keys__: ClassVar[frozenset[str]] + # __orig_bases__ sometimes exists on <3.12, but not consistently, + # so we only add it to the stub on 3.12+ + if sys.version_info >= (3, 12): + __orig_bases__: ClassVar[tuple[Any, ...]] def copy(self) -> typing_extensions.Self: ... # Using Never so that only calls using mypy plugin hook that specialize the signature # can go through. @@ -873,3 +924,26 @@ if sys.version_info >= (3, 10): def is_typeddict(tp: object) -> bool: ... def _type_repr(obj: object) -> str: ... + +if sys.version_info >= (3, 12): + def override(__arg: _F) -> _F: ... + @_final + class TypeAliasType: + def __init__( + self, name: str, value: Any, *, type_params: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] = () + ) -> None: ... + @property + def __value__(self) -> Any: ... + @property + def __type_params__(self) -> tuple[TypeVar | ParamSpec | TypeVarTuple, ...]: ... + @property + def __parameters__(self) -> tuple[Any, ...]: ... + @property + def __name__(self) -> str: ... + # It's writable on types, but not on instances of TypeAliasType. + @property + def __module__(self) -> str | None: ... # type: ignore[override] + def __getitem__(self, parameters: Any) -> Any: ... + if sys.version_info >= (3, 10): + def __or__(self, right: Any) -> _SpecialForm: ... + def __ror__(self, left: Any) -> _SpecialForm: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi index 653274188..c96171542 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi @@ -22,9 +22,14 @@ from typing import ( # noqa: Y022,Y039 DefaultDict as DefaultDict, Deque as Deque, Mapping, - NewType as NewType, NoReturn as NoReturn, Sequence, + SupportsAbs as SupportsAbs, + SupportsBytes as SupportsBytes, + SupportsComplex as SupportsComplex, + SupportsFloat as SupportsFloat, + SupportsInt as SupportsInt, + SupportsRound as SupportsRound, Text as Text, Type as Type, _Alias, @@ -39,6 +44,7 @@ if sys.version_info >= (3, 9): __all__ = [ "Any", + "Buffer", "ClassVar", "Concatenate", "Final", @@ -66,6 +72,12 @@ __all__ = [ "OrderedDict", "TypedDict", "SupportsIndex", + "SupportsAbs", + "SupportsRound", + "SupportsBytes", + "SupportsComplex", + "SupportsFloat", + "SupportsInt", "Annotated", "assert_never", "assert_type", @@ -84,6 +96,7 @@ __all__ = [ "runtime_checkable", "Text", "TypeAlias", + "TypeAliasType", "TypeGuard", "TYPE_CHECKING", "Never", @@ -93,6 +106,7 @@ __all__ = [ "clear_overloads", "get_args", "get_origin", + "get_original_bases", "get_overloads", "get_type_hints", ] @@ -134,6 +148,7 @@ class _TypedDict(Mapping[str, object], metaclass=abc.ABCMeta): __required_keys__: ClassVar[frozenset[str]] __optional_keys__: ClassVar[frozenset[str]] __total__: ClassVar[bool] + __orig_bases__: ClassVar[tuple[Any, ...]] def copy(self) -> Self: ... # Using Never so that only calls using mypy plugin hook that specialize the signature # can go through. @@ -183,10 +198,11 @@ class SupportsIndex(Protocol, metaclass=abc.ABCMeta): @abc.abstractmethod def __index__(self) -> int: ... -# New things in 3.10 +# New and changed things in 3.10 if sys.version_info >= (3, 10): from typing import ( Concatenate as Concatenate, + NewType as NewType, ParamSpecArgs as ParamSpecArgs, ParamSpecKwargs as ParamSpecKwargs, TypeAlias as TypeAlias, @@ -194,12 +210,16 @@ if sys.version_info >= (3, 10): is_typeddict as is_typeddict, ) else: + @final class ParamSpecArgs: - __origin__: ParamSpec + @property + def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... + @final class ParamSpecKwargs: - __origin__: ParamSpec + @property + def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... Concatenate: _SpecialForm @@ -207,6 +227,11 @@ else: TypeGuard: _SpecialForm def is_typeddict(tp: object) -> bool: ... + class NewType: + def __init__(self, name: str, tp: Any) -> None: ... + def __call__(self, __x: _T) -> _T: ... + __supertype__: type + # New things in 3.11 # NamedTuples are not new, but the ability to create generic NamedTuples is new in 3.11 if sys.version_info >= (3, 11): @@ -251,12 +276,12 @@ else: class NamedTuple(tuple[Any, ...]): if sys.version_info < (3, 8): - _field_types: collections.OrderedDict[str, type] + _field_types: ClassVar[collections.OrderedDict[str, type]] elif sys.version_info < (3, 9): - _field_types: dict[str, type] - _field_defaults: dict[str, Any] - _fields: tuple[str, ...] - _source: str + _field_types: ClassVar[dict[str, type]] + _field_defaults: ClassVar[dict[str, Any]] + _fields: ClassVar[tuple[str, ...]] + __orig_bases__: ClassVar[tuple[Any, ...]] @overload def __init__(self, typename: str, fields: Iterable[tuple[str, Any]] = ...) -> None: ... @overload @@ -272,16 +297,24 @@ else: # New things in 3.xx # The `default` parameter was added to TypeVar, ParamSpec, and TypeVarTuple (PEP 696) -# The `infer_variance` parameter was added to TypeVar (PEP 695) +# The `infer_variance` parameter was added to TypeVar in 3.12 (PEP 695) # typing_extensions.override (PEP 698) @final class TypeVar: - __name__: str - __bound__: Any | None - __constraints__: tuple[Any, ...] - __covariant__: bool - __contravariant__: bool - __default__: Any | None + @property + def __name__(self) -> str: ... + @property + def __bound__(self) -> Any | None: ... + @property + def __constraints__(self) -> tuple[Any, ...]: ... + @property + def __covariant__(self) -> bool: ... + @property + def __contravariant__(self) -> bool: ... + @property + def __infer_variance__(self) -> bool: ... + @property + def __default__(self) -> Any | None: ... def __init__( self, name: str, @@ -300,11 +333,18 @@ class TypeVar: @final class ParamSpec: - __name__: str - __bound__: type[Any] | None - __covariant__: bool - __contravariant__: bool - __default__: type[Any] | None + @property + def __name__(self) -> str: ... + @property + def __bound__(self) -> Any | None: ... + @property + def __covariant__(self) -> bool: ... + @property + def __contravariant__(self) -> bool: ... + @property + def __infer_variance__(self) -> bool: ... + @property + def __default__(self) -> Any | None: ... def __init__( self, name: str, @@ -321,30 +361,48 @@ class ParamSpec: @final class TypeVarTuple: - __name__: str - __default__: Any | None + @property + def __name__(self) -> str: ... + @property + def __default__(self) -> Any | None: ... def __init__(self, name: str, *, default: Any | None = None) -> None: ... def __iter__(self) -> Any: ... # Unpack[Self] -def override(__arg: _F) -> _F: ... def deprecated(__msg: str, *, category: type[Warning] | None = ..., stacklevel: int = 1) -> Callable[[_T], _T]: ... -# PEP 695 - -@final -class TypeAliasType: - def __new__( - cls, - name: str, - value: Any, - *, - type_params: tuple[Any, ...] | None = None, - ) -> TypeAliasType: ... - def __or__(self, other: Any) -> Any: ... - __name__: str - __parameters__: tuple[Any, ...] | None - __value__: Any - +if sys.version_info >= (3, 12): + from collections.abc import Buffer as Buffer + from types import get_original_bases as get_original_bases + from typing import TypeAliasType as TypeAliasType, override as override +else: + def override(__arg: _F) -> _F: ... + def get_original_bases(__cls: type) -> tuple[Any, ...]: ... + @final + class TypeAliasType: + def __init__( + self, name: str, value: Any, *, type_params: tuple[TypeVar | ParamSpec | TypeVarTuple, ...] = () + ) -> None: ... + @property + def __value__(self) -> Any: ... + @property + def __type_params__(self) -> tuple[TypeVar | ParamSpec | TypeVarTuple, ...]: ... + @property + def __parameters__(self) -> tuple[Any, ...]: ... + @property + def __name__(self) -> str: ... + # It's writable on types, but not on instances of TypeAliasType. + @property + def __module__(self) -> str | None: ... # type: ignore[override] + def __getitem__(self, parameters: Any) -> Any: ... + if sys.version_info >= (3, 10): + def __or__(self, right: Any) -> _SpecialForm: ... + def __ror__(self, left: Any) -> _SpecialForm: ... + + @runtime_checkable + class Buffer(Protocol): + # Not actually a Protocol at runtime; see + # https://github.com/python/typeshed/issues/10224 for why we're defining it this way + def __buffer__(self, __flags: int) -> memoryview: ... # PEP 705 ReadOnly: _SpecialForm diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi index 935e44e80..74ce4ebd6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi @@ -96,3 +96,6 @@ RESERVED_NCS: str RFC_4122: str RESERVED_MICROSOFT: str RESERVED_FUTURE: str + +if sys.version_info >= (3, 12): + def main() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi index 0bbab52f9..13f48fe85 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi @@ -41,7 +41,7 @@ _P = ParamSpec("_P") ProxyTypes: tuple[type[Any], ...] class WeakMethod(ref[_CallableT], Generic[_CallableT]): - def __new__(cls, meth: _CallableT, callback: Callable[[_CallableT], object] | None = None) -> Self: ... + def __new__(cls, meth: _CallableT, callback: Callable[[Self], object] | None = None) -> Self: ... def __call__(self) -> _CallableT | None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/webbrowser.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/webbrowser.pyi index 02edd42e7..99c7bb584 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/webbrowser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/webbrowser.pyi @@ -43,8 +43,12 @@ class UnixBrowser(BaseBrowser): class Mozilla(UnixBrowser): ... -class Galeon(UnixBrowser): - raise_opts: list[str] +if sys.version_info < (3, 12): + class Galeon(UnixBrowser): + raise_opts: list[str] + + class Grail(BaseBrowser): + def open(self, url: str, new: int = 0, autoraise: bool = True) -> bool: ... class Chrome(UnixBrowser): ... class Opera(UnixBrowser): ... @@ -53,9 +57,6 @@ class Elinks(UnixBrowser): ... class Konqueror(BaseBrowser): def open(self, url: str, new: int = 0, autoraise: bool = True) -> bool: ... -class Grail(BaseBrowser): - def open(self, url: str, new: int = 0, autoraise: bool = True) -> bool: ... - if sys.platform == "win32": class WindowsDefault(BaseBrowser): def open(self, url: str, new: int = 0, autoraise: bool = True) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi index 8c32f3080..79969359f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xmlrpc/client.pyi @@ -2,7 +2,7 @@ import gzip import http.client import sys import time -from _typeshed import ReadableBuffer, SupportsRead, SupportsWrite, _BufferWithLen +from _typeshed import ReadableBuffer, SizedBuffer, SupportsRead, SupportsWrite from collections.abc import Callable, Iterable, Mapping from datetime import datetime from io import BytesIO @@ -236,20 +236,20 @@ class Transport: def __init__(self, use_datetime: bool = False, use_builtin_types: bool = False) -> None: ... def request( - self, host: _HostType, handler: str, request_body: _BufferWithLen, verbose: bool = False + self, host: _HostType, handler: str, request_body: SizedBuffer, verbose: bool = False ) -> tuple[_Marshallable, ...]: ... def single_request( - self, host: _HostType, handler: str, request_body: _BufferWithLen, verbose: bool = False + self, host: _HostType, handler: str, request_body: SizedBuffer, verbose: bool = False ) -> tuple[_Marshallable, ...]: ... def getparser(self) -> tuple[ExpatParser, Unmarshaller]: ... def get_host_info(self, host: _HostType) -> tuple[str, list[tuple[str, str]], dict[str, str]]: ... def make_connection(self, host: _HostType) -> http.client.HTTPConnection: ... def close(self) -> None: ... def send_request( - self, host: _HostType, handler: str, request_body: _BufferWithLen, debug: bool + self, host: _HostType, handler: str, request_body: SizedBuffer, debug: bool ) -> http.client.HTTPConnection: ... def send_headers(self, connection: http.client.HTTPConnection, headers: list[tuple[str, str]]) -> None: ... - def send_content(self, connection: http.client.HTTPConnection, request_body: _BufferWithLen) -> None: ... + def send_content(self, connection: http.client.HTTPConnection, request_body: SizedBuffer) -> None: ... def parse_response(self, response: http.client.HTTPResponse) -> tuple[_Marshallable, ...]: ... class SafeTransport(Transport): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi index 92f1dc49a..abda7a3b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/zipfile.pyi @@ -1,6 +1,6 @@ import io import sys -from _typeshed import StrOrBytesPath, StrPath, _BufferWithLen +from _typeshed import SizedBuffer, StrOrBytesPath, StrPath from collections.abc import Callable, Iterable, Iterator from os import PathLike from types import TracebackType @@ -179,7 +179,7 @@ class ZipFile: def writestr( self, zinfo_or_arcname: str | ZipInfo, - data: _BufferWithLen | str, + data: SizedBuffer | str, compress_type: int | None = None, compresslevel: int | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi index ee97faace..0189bfe71 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/zipimport.pyi @@ -17,8 +17,10 @@ class zipimporter: else: def __init__(self, path: StrOrBytesPath) -> None: ... - def find_loader(self, fullname: str, path: str | None = None) -> tuple[zipimporter | None, list[str]]: ... # undocumented - def find_module(self, fullname: str, path: str | None = None) -> zipimporter | None: ... + if sys.version_info < (3, 12): + def find_loader(self, fullname: str, path: str | None = None) -> tuple[zipimporter | None, list[str]]: ... # undocumented + def find_module(self, fullname: str, path: str | None = None) -> zipimporter | None: ... + def get_code(self, fullname: str) -> CodeType: ... def get_data(self, pathname: str) -> bytes: ... def get_filename(self, fullname: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..57820b2cc --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +# Stub-only module. +exifread._types diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..2187a2368 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +# Needed due dynamic attribute generation +flask_sqlalchemy.SQLAlchemy.__getattr__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..1651202c5 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/@tests/stubtest_allowlist.txt @@ -0,0 +1,11 @@ +markdown.extensions.abbr.ABBR_REF_RE +markdown.extensions.attr_list.AttrListTreeprocessor.run +markdown.extensions.codehilite.CodeHilite.__init__ +markdown.extensions.fenced_code.FencedBlockPreprocessor.__init__ +markdown.extensions.footnotes.DEF_RE +markdown.extensions.footnotes.FootnotePreprocessor +markdown.extensions.footnotes.TABBED_RE +markdown.extensions.legacy_attrs.LegacyAttrs.run +markdown.extensions.toc.TocTreeprocessor.run +markdown.extensions.toc.slugify +markdown.postprocessors.UnescapePostprocessor # deprecated diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..f64ebfffa --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/stubtest_allowlist.txt @@ -0,0 +1,26 @@ +PIL.__main__ + +# Requires Pyside or PyQt to be installed. +# Not worth adding to tool.stubtest.stubtest_requirements +# because it's only used as a base type and it's a long install. +PIL.ImageQt.ImageQt + +# Only stubbing what's necessary from private modules +PIL\._imaging\.\w+? + +# Internal logger variable +PIL\..+?\.logger + +# Loop variables leaked in global scope +PIL.BmpImagePlugin.BmpImageFile.k +PIL.BmpImagePlugin.BmpImageFile.v +PIL.Image.enum +PIL.Image.item +PIL.ImageCms.flag +PIL.ImageMath.k +PIL.ImageMath.v +PIL.ImageQt.qt_module +PIL.ImImagePlugin.i +PIL.XVThumbImagePlugin.b +PIL.XVThumbImagePlugin.g +PIL.XVThumbImagePlugin.r diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/stubtest_allowlist_win32.txt b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/stubtest_allowlist_win32.txt new file mode 100644 index 000000000..e1b308eb3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/stubtest_allowlist_win32.txt @@ -0,0 +1,2 @@ +# Loop variables leaked in global scope +PIL.EpsImagePlugin.binary diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/test_cases/check_tk_compat.py b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/test_cases/check_tk_compat.py new file mode 100644 index 000000000..05332d505 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/@tests/test_cases/check_tk_compat.py @@ -0,0 +1,15 @@ +# Verify that ImageTK images are valid to pass to TK code. +from __future__ import annotations + +import tkinter + +from PIL import ImageTk + +photo = ImageTk.PhotoImage() +bitmap = ImageTk.BitmapImage() + +tkinter.Label(image=photo) +tkinter.Label(image=bitmap) + +tkinter.Label().configure(image=photo) +tkinter.Label().configure(image=bitmap) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..a511c3b35 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +pyautogui.__main__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi index 771f0cd24..c00379e37 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/pyautogui/__init__.pyi @@ -6,7 +6,6 @@ from typing_extensions import Final, ParamSpec, SupportsIndex, TypeAlias from pyscreeze import ( center as center, - grab as grab, locate as locate, locateAll as locateAll, locateAllOnScreen as locateAllOnScreen, @@ -68,6 +67,9 @@ def getPointOnLine(x1: float, y1: float, x2: float, y2: float, n: float) -> tupl def linear(n: float) -> float: ... def position(x: int | None = None, y: int | None = None) -> Point: ... def size() -> Size: ... + +resolution = size + def onScreen(x: _NormalizeableXArg | None, y: SupportsInt | None = None) -> bool: ... def mouseDown( x: _NormalizeableXArg | None = None, @@ -235,6 +237,9 @@ def typewrite( write = typewrite def hotkey(*args: str, logScreenshot: bool | None = None, interval: float = 0.0) -> None: ... + +shortcut = hotkey + def failSafeCheck() -> None: ... def displayMousePosition(xOffset: float = 0, yOffset: float = 0) -> None: ... def sleep(seconds: float) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..f8fe06591 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/@tests/stubtest_allowlist.txt @@ -0,0 +1,12 @@ +pymysql.connections.byte2int +pymysql.connections.int2byte +pymysql.connections.lenenc_int +pymysql.connections.pack_int24 +pymysql.cursors.Cursor.__del__ +# DictCursorMixin changes method types of inherited classes, but doesn't contain much at runtime +pymysql.cursors.DictCursorMixin.__iter__ +pymysql.cursors.DictCursorMixin.fetch[a-z]* +pymysql.escape_dict +pymysql.escape_sequence +pymysql.escape_string +pymysql.util diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..fb9d32191 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,4 @@ +# temp variable used to define scrotExists by checking if the command "scrot" exists +pyscreeze.whichProc +# present but unimplemented +pyscreeze.screenshotWindow diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi index 5c52490e9..be6db8189 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/pyscreeze/__init__.pyi @@ -41,7 +41,7 @@ class PyScreezeException(Exception): ... class ImageNotFoundException(PyScreezeException): ... # _locateAll_opencv -def requiresPillow(wrappedFunction: Callable[_P, _R]) -> Callable[_P, _R]: ... +def requiresPyGetWindow(wrappedFunction: Callable[_P, _R]) -> Callable[_P, _R]: ... @overload def locate( needleImage: str | Image.Image | _Mat, @@ -142,6 +142,8 @@ def locateCenterOnScreen( step: int = 1, confidence: None = None, ) -> Point | None: ... +def locateOnScreenNear(image: str | Image.Image | _Mat, x: int, y: int) -> Box: ... +def locateCenterOnScreenNear(image: str | Image.Image | _Mat, x: int, y: int) -> Point | None: ... # _locateAll_opencv @overload @@ -176,8 +178,6 @@ def pixelMatchesColor( def pixel(x: int, y: int) -> tuple[int, int, int]: ... def screenshot(imageFilename: StrOrBytesPath | None = None, region: tuple[int, int, int, int] | None = None) -> Image.Image: ... -grab = screenshot - # _locateAll_opencv @overload def locateAll( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..50728cc41 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/@tests/stubtest_allowlist.txt @@ -0,0 +1,8 @@ +# yaml._yaml is for backwards compatibility so none of it matters anyway +yaml._yaml.__test__ + +# Some arguments to these functions are technically positional or keyword +# arguments at runtime, but according to the documentation and other, +# similar functions, it's safer to treat them as keyword-only arguments. +yaml.dump_all +yaml.serialize_all diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi index 14dc7b537..883492c73 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/yaml/__init__.pyi @@ -1,7 +1,6 @@ from collections.abc import Callable, Iterable, Iterator, Mapping from re import Pattern from typing import Any, TypeVar, overload -from typing_extensions import TypeAlias from . import resolver as resolver # Help mypy a bit; this is implied by loader and dumper from .constructor import BaseConstructor @@ -20,9 +19,6 @@ from .representer import BaseRepresenter from .resolver import BaseResolver from .tokens import * -# FIXME: the functions really return str if encoding is None, otherwise bytes. Waiting for python/mypy#5621 -_Yaml: TypeAlias = Any - _T = TypeVar("_T") _Constructor = TypeVar("_Constructor", bound=BaseConstructor) _Representer = TypeVar("_Representer", bound=BaseRepresenter) @@ -58,6 +54,7 @@ def serialize_all( nodes, stream: _WriteStream[Any], Dumper=..., + *, canonical: bool | None = None, indent: int | None = None, width: int | _Inf | None = None, @@ -74,33 +71,51 @@ def serialize_all( nodes, stream: None = None, Dumper=..., + *, canonical: bool | None = None, indent: int | None = None, width: int | _Inf | None = None, allow_unicode: bool | None = None, line_break: str | None = None, - encoding: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, +) -> str: ... +@overload +def serialize_all( + nodes, + stream: None = None, + Dumper=..., + *, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, explicit_start: bool | None = None, explicit_end: bool | None = None, version: tuple[int, int] | None = None, tags: Mapping[str, str] | None = None, -) -> _Yaml: ... +) -> bytes: ... @overload def serialize( node, stream: _WriteStream[Any], Dumper=..., *, - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, ) -> None: ... @overload def serialize( @@ -108,22 +123,40 @@ def serialize( stream: None = None, Dumper=..., *, - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., -) -> _Yaml: ... + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, +) -> str: ... +@overload +def serialize( + node, + stream: None = None, + Dumper=..., + *, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, +) -> bytes: ... @overload def dump_all( documents: Iterable[Any], stream: _WriteStream[Any], Dumper=..., + *, default_style: str | None = None, default_flow_style: bool | None = False, canonical: bool | None = None, @@ -143,6 +176,7 @@ def dump_all( documents: Iterable[Any], stream: None = None, Dumper=..., + *, default_style: str | None = None, default_flow_style: bool | None = False, canonical: bool | None = None, @@ -150,32 +184,52 @@ def dump_all( width: int | _Inf | None = None, allow_unicode: bool | None = None, line_break: str | None = None, - encoding: str | None = None, + encoding: None = None, explicit_start: bool | None = None, explicit_end: bool | None = None, version: tuple[int, int] | None = None, tags: Mapping[str, str] | None = None, sort_keys: bool = True, -) -> _Yaml: ... +) -> str: ... +@overload +def dump_all( + documents: Iterable[Any], + stream: None = None, + Dumper=..., + *, + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> bytes: ... @overload def dump( data: Any, stream: _WriteStream[Any], Dumper=..., *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... @overload def dump( @@ -183,96 +237,154 @@ def dump( stream: None = None, Dumper=..., *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., -) -> _Yaml: ... + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> str: ... +@overload +def dump( + data: Any, + stream: None = None, + Dumper=..., + *, + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> bytes: ... @overload def safe_dump_all( documents: Iterable[Any], stream: _WriteStream[Any], *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... @overload def safe_dump_all( documents: Iterable[Any], stream: None = None, *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., -) -> _Yaml: ... + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> str: ... +@overload +def safe_dump_all( + documents: Iterable[Any], + stream: None = None, + *, + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> bytes: ... @overload def safe_dump( data: Any, stream: _WriteStream[Any], *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str | None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, ) -> None: ... @overload def safe_dump( data: Any, stream: None = None, *, - default_style: str | None = ..., - default_flow_style: bool | None = ..., - canonical: bool | None = ..., - indent: int | None = ..., - width: int | _Inf | None = ..., - allow_unicode: bool | None = ..., - line_break: str | None = ..., - encoding: str | None = ..., - explicit_start: bool | None = ..., - explicit_end: bool | None = ..., - version: tuple[int, int] | None = ..., - tags: Mapping[str, str] | None = ..., - sort_keys: bool = ..., -) -> _Yaml: ... + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: None = None, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> str: ... +@overload +def safe_dump( + data: Any, + stream: None = None, + *, + default_style: str | None = None, + default_flow_style: bool | None = False, + canonical: bool | None = None, + indent: int | None = None, + width: int | _Inf | None = None, + allow_unicode: bool | None = None, + line_break: str | None = None, + encoding: str, + explicit_start: bool | None = None, + explicit_end: bool | None = None, + version: tuple[int, int] | None = None, + tags: Mapping[str, str] | None = None, + sort_keys: bool = True, +) -> bytes: ... def add_implicit_resolver( tag: str, regexp: Pattern[str], diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..f72c29ab5 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/@tests/stubtest_allowlist.txt @@ -0,0 +1,9 @@ +# Pygments uses mcs, pyright wants cls +pygments.lexer.LexerMeta.__new__ +pygments.style.StyleMeta.__new__ + +# Defined in lexer classes, intended to be used as static method, but doesn't use @staticmethod +pygments.lexer.LexerMeta.analyse_text + +# Inheriting from tuple is weird +pygments.token._TokenType.__init__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..aacd3b85a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/stubtest_allowlist.txt @@ -0,0 +1,85 @@ +# mypy plugin not supported in typeshed +sqlalchemy.ext.mypy.* +# test suites +sqlalchemy.testing.suite +# Leaked re-exports from the compat module +sqlalchemy.util.quote + +# Expanding keyword arguments in stubs +sqlalchemy.ext.declarative.as_declarative + +# not always present +sqlalchemy.engine.Engine.logging_name # initialized if not None +sqlalchemy.engine.base.Engine.logging_name # initialized if not None +sqlalchemy.sql.lambdas.PyWrapper.__clause_element__ +sqlalchemy.testing.util.non_refcount_gc_collect + +# potentially replaced at runtime +sqlalchemy.engine.Row.count +sqlalchemy.engine.Row.index +sqlalchemy.engine.row.Row.count +sqlalchemy.engine.row.Row.index + +# abstract fields not present at runtime +sqlalchemy.engine.Transaction.connection +sqlalchemy.engine.Transaction.is_active +sqlalchemy.engine.base.Transaction.connection +sqlalchemy.engine.base.Transaction.is_active + +# initialized to None during class construction, but overridden during __init__() or __new__() +sqlalchemy.engine.base.Connection.engine +sqlalchemy.engine.Connection.engine +sqlalchemy.orm.Mapper.single +sqlalchemy.orm.mapper.Mapper.single + +# Uses @memoized_property at runtime, but we use @property for compatibility +sqlalchemy.engine.URL.normalized_query +sqlalchemy.engine.url.URL.normalized_query +# Uses @memoized_property, but that causes regr_test to raise 'Cannot determine type of "..." in base class "..." [misc]' +sqlalchemy.schema.SchemaItem.info +sqlalchemy.sql.elements.AnnotatedColumnElement.info +sqlalchemy.sql.elements.AnnotatedColumnElement.key +sqlalchemy.sql.elements.AnnotatedColumnElement.name +sqlalchemy.sql.elements.AnnotatedColumnElement.table +sqlalchemy.sql.schema.SchemaItem.info + +# runtime has extra internal arguments that are inconsistent across micro versions +sqlalchemy.testing.engines.testing_engine + +# __new__ signature conflicts with __init__ signature (which is more precise), +# so __new__ is deliberately omitted in the stub +sqlalchemy.sql.annotation.Annotated.__new__ + +# At runtime __new__ is defined, but we define __init__ in the stub +# because otherwise all subclasses would be identified by pyright +# as having conflicting __new__/__init__ methods +sqlalchemy.orm.unitofwork.PostSortRec.__new__ + +# KeyError/AttributeError on import due to dynamic initialization from a different module +sqlalchemy.testing.fixtures +sqlalchemy.testing.pickleable +sqlalchemy.testing.plugin.bootstrap + +# method arguments starting with double underscores in the implementation trips up stubtest +sqlalchemy.testing.resolve_lambda +sqlalchemy.testing.util.resolve_lambda +sqlalchemy.orm.collections.MappedCollection.update + +# stubtest thinks __slots__ are always members +# https://github.com/python/mypy/issues/13906 +sqlalchemy.sql.elements.quoted_name.lower +sqlalchemy.sql.elements.quoted_name.upper +sqlalchemy.sql.expression.quoted_name.lower +sqlalchemy.sql.expression.quoted_name.upper +sqlalchemy.sql.quoted_name.lower +sqlalchemy.sql.quoted_name.upper +sqlalchemy.orm.ColumnProperty.Comparator.__clause_element__ +sqlalchemy.orm.properties.ColumnProperty.Comparator.__clause_element__ + +# Same error as in stdlib due to it being re-exported +sqlalchemy.dialects.mysql.asyncmy.AsyncAdapt_asyncmy_dbapi.Binary +sqlalchemy.util.compat.StringIO.seek +sqlalchemy.util.compat.StringIO.truncate +sqlalchemy.util.StringIO.seek +sqlalchemy.util.StringIO.truncate +sqlalchemy.testing.mock.patch diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_loader_option.py b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_loader_option.py new file mode 100644 index 000000000..1f596af83 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_loader_option.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +from typing_extensions import assert_type + +from sqlalchemy.orm.strategy_options import ( + Load, + contains_eager, + defaultload, + defer, + immediateload, + joinedload, + lazyload, + load_only, + loader_option, + noload, + raiseload, + selectin_polymorphic, + selectinload, + subqueryload, + undefer, + undefer_group, + with_expression, +) + + +def fn(loadopt: Load, *args: object) -> loader_option: + return loader_option() + + +# Testing that the function and return type of function are actually all instances of "loader_option" +assert_type(contains_eager, loader_option) +assert_type(contains_eager(fn), loader_option) +assert_type(load_only, loader_option) +assert_type(load_only(fn), loader_option) +assert_type(joinedload, loader_option) +assert_type(joinedload(fn), loader_option) +assert_type(subqueryload, loader_option) +assert_type(subqueryload(fn), loader_option) +assert_type(selectinload, loader_option) +assert_type(selectinload(fn), loader_option) +assert_type(lazyload, loader_option) +assert_type(lazyload(fn), loader_option) +assert_type(immediateload, loader_option) +assert_type(immediateload(fn), loader_option) +assert_type(noload, loader_option) +assert_type(noload(fn), loader_option) +assert_type(raiseload, loader_option) +assert_type(raiseload(fn), loader_option) +assert_type(defaultload, loader_option) +assert_type(defaultload(fn), loader_option) +assert_type(defer, loader_option) +assert_type(defer(fn), loader_option) +assert_type(undefer, loader_option) +assert_type(undefer(fn), loader_option) +assert_type(undefer_group, loader_option) +assert_type(undefer_group(fn), loader_option) +assert_type(with_expression, loader_option) +assert_type(with_expression(fn), loader_option) +assert_type(selectin_polymorphic, loader_option) +assert_type(selectin_polymorphic(fn), loader_option) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_register.py b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_register.py new file mode 100644 index 000000000..186cb2540 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_register.py @@ -0,0 +1,68 @@ +from __future__ import annotations + +from _typeshed.dbapi import DBAPIConnection +from typing import cast + +from sqlalchemy.engine.base import Engine +from sqlalchemy.engine.default import DefaultDialect +from sqlalchemy.engine.url import URL +from sqlalchemy.pool.base import Pool +from sqlalchemy.testing import config as ConfigModule +from sqlalchemy.testing.provision import ( + configure_follower, + create_db, + drop_all_schema_objects_post_tables, + drop_all_schema_objects_pre_tables, + drop_db, + follower_url_from_main, + generate_driver_url, + get_temp_table_name, + post_configure_engine, + prepare_for_drop_tables, + register, + run_reap_dbs, + set_default_schema_on_connection, + stop_test_class_outside_fixtures, + temp_table_keyword_args, + update_db_opts, +) +from sqlalchemy.util import immutabledict + +url = URL("", "", "", "", 0, "", immutabledict()) +engine = Engine(Pool(lambda: cast(DBAPIConnection, object())), DefaultDialect(), "") +config = cast(ConfigModule.Config, object()) +unused = None + + +class Foo: + pass + + +# Test that the decorator changes the first parameter to "cfg: str | URL | _ConfigProtocol" +@register.init +def no_args(__foo: Foo) -> None: + pass + + +no_args(cfg="") +no_args(cfg=url) +no_args(cfg=config) + +# Test pre-decorated functions +generate_driver_url(url, "", "") +drop_all_schema_objects_pre_tables(url, unused) +drop_all_schema_objects_post_tables(url, unused) +create_db(url, engine, unused) +drop_db(url, engine, unused) +update_db_opts(url, unused) +post_configure_engine(url, unused, unused) +follower_url_from_main(url, "") +configure_follower(url, unused) +run_reap_dbs(url, unused) +temp_table_keyword_args(url, engine) +prepare_for_drop_tables(url, unused) +stop_test_class_outside_fixtures(url, unused, type) +get_temp_table_name(url, unused, "") +set_default_schema_on_connection(url, unused, unused) +set_default_schema_on_connection(ConfigModule, unused, unused) +set_default_schema_on_connection(config, unused, unused) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..29651389f --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist.txt @@ -0,0 +1,98 @@ +# These all delegate using *args,**kwargs, but stubs use signature of +# method they are being delegated to. +aiofiles.threadpool.binary.AsyncBufferedIOBase.close +aiofiles.threadpool.binary.AsyncBufferedIOBase.detach +aiofiles.threadpool.binary.AsyncBufferedIOBase.fileno +aiofiles.threadpool.binary.AsyncBufferedIOBase.flush +aiofiles.threadpool.binary.AsyncBufferedIOBase.isatty +aiofiles.threadpool.binary.AsyncBufferedIOBase.readable +aiofiles.threadpool.binary.AsyncBufferedIOBase.seekable +aiofiles.threadpool.binary.AsyncBufferedIOBase.tell +aiofiles.threadpool.binary.AsyncBufferedIOBase.writable +aiofiles.threadpool.binary.AsyncIndirectBufferedIOBase.close +aiofiles.threadpool.binary.AsyncIndirectBufferedIOBase.detach +aiofiles.threadpool.binary.AsyncIndirectBufferedIOBase.fileno +aiofiles.threadpool.binary.AsyncIndirectBufferedIOBase.flush +aiofiles.threadpool.binary.AsyncIndirectBufferedIOBase.isatty +aiofiles.threadpool.binary.AsyncIndirectBufferedIOBase.readable +aiofiles.threadpool.binary.AsyncIndirectBufferedIOBase.seekable +aiofiles.threadpool.binary.AsyncIndirectBufferedIOBase.tell +aiofiles.threadpool.binary.AsyncIndirectBufferedIOBase.writable +aiofiles.threadpool.binary.AsyncFileIO.close +aiofiles.threadpool.binary.AsyncFileIO.fileno +aiofiles.threadpool.binary.AsyncFileIO.flush +aiofiles.threadpool.binary.AsyncFileIO.isatty +aiofiles.threadpool.binary.AsyncFileIO.readable +aiofiles.threadpool.binary.AsyncFileIO.readall +aiofiles.threadpool.binary.AsyncFileIO.seekable +aiofiles.threadpool.binary.AsyncFileIO.tell +aiofiles.threadpool.binary.AsyncFileIO.writable +aiofiles.threadpool.binary.AsyncIndirectFileIO.close +aiofiles.threadpool.binary.AsyncIndirectFileIO.fileno +aiofiles.threadpool.binary.AsyncIndirectFileIO.flush +aiofiles.threadpool.binary.AsyncIndirectFileIO.isatty +aiofiles.threadpool.binary.AsyncIndirectFileIO.readable +aiofiles.threadpool.binary.AsyncIndirectFileIO.readall +aiofiles.threadpool.binary.AsyncIndirectFileIO.seekable +aiofiles.threadpool.binary.AsyncIndirectFileIO.tell +aiofiles.threadpool.binary.AsyncIndirectFileIO.writable +aiofiles.threadpool.text.AsyncTextIOWrapper.close +aiofiles.threadpool.text.AsyncTextIOWrapper.detach +aiofiles.threadpool.text.AsyncTextIOWrapper.fileno +aiofiles.threadpool.text.AsyncTextIOWrapper.flush +aiofiles.threadpool.text.AsyncTextIOWrapper.isatty +aiofiles.threadpool.text.AsyncTextIOWrapper.readable +aiofiles.threadpool.text.AsyncTextIOWrapper.seekable +aiofiles.threadpool.text.AsyncTextIOWrapper.tell +aiofiles.threadpool.text.AsyncTextIOWrapper.writable +aiofiles.threadpool.text.AsyncTextIndirectIOWrapper.close +aiofiles.threadpool.text.AsyncTextIndirectIOWrapper.detach +aiofiles.threadpool.text.AsyncTextIndirectIOWrapper.fileno +aiofiles.threadpool.text.AsyncTextIndirectIOWrapper.flush +aiofiles.threadpool.text.AsyncTextIndirectIOWrapper.isatty +aiofiles.threadpool.text.AsyncTextIndirectIOWrapper.readable +aiofiles.threadpool.text.AsyncTextIndirectIOWrapper.seekable +aiofiles.threadpool.text.AsyncTextIndirectIOWrapper.tell +aiofiles.threadpool.text.AsyncTextIndirectIOWrapper.writable + +# These functions get the wrong signature from functools.wraps() +aiofiles.os.stat +aiofiles.os.rename +aiofiles.os.renames +aiofiles.os.replace +aiofiles.os.remove +aiofiles.os.unlink +aiofiles.os.mkdir +aiofiles.os.makedirs +aiofiles.os.link +aiofiles.os.symlink +aiofiles.os.readlink +aiofiles.os.rmdir +aiofiles.os.removedirs +aiofiles.os.scandir +aiofiles.os.listdir +aiofiles.ospath.exists +aiofiles.ospath.isfile +aiofiles.ospath.isdir +aiofiles.ospath.getsize +aiofiles.ospath.getmtime +aiofiles.ospath.getatime +aiofiles.ospath.getctime +aiofiles.ospath.samefile +aiofiles.ospath.sameopenfile + +# Same issues as above +aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.close +aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.fileno +aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.flush +aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.isatty +aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.rollover +aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.tell +aiofiles.tempfile.temptypes.AsyncTemporaryDirectory.cleanup + +# Metaclass differs: +aiofiles.base.AiofilesContextManager +aiofiles.tempfile.AiofilesContextManagerTempDir + +# Helper decorator, too complex to type +aiofiles.os.wrap diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist_darwin.txt b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist_darwin.txt new file mode 100644 index 000000000..b0ea37bd4 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist_darwin.txt @@ -0,0 +1,2 @@ +# This function gets the wrong signature from functools.wraps() +aiofiles.os.sendfile diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..b0ea37bd4 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,2 @@ +# This function gets the wrong signature from functools.wraps() +aiofiles.os.sendfile diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi index ad15feec9..27a3c70a4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/os.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import FileDescriptorOrPath, GenericPath, ReadableBuffer, StrOrBytesPath +from _typeshed import BytesPath, FileDescriptorOrPath, GenericPath, ReadableBuffer, StrOrBytesPath, StrPath from asyncio.events import AbstractEventLoop from collections.abc import Sequence from os import _ScandirIterator, stat_result @@ -26,6 +26,9 @@ async def rename( loop: AbstractEventLoop | None = ..., executor: Any = ..., ) -> None: ... +async def renames( + old: StrOrBytesPath, new: StrOrBytesPath, loop: AbstractEventLoop | None = ..., executor: Any = ... +) -> None: ... async def replace( src: StrOrBytesPath, dst: StrOrBytesPath, @@ -38,12 +41,37 @@ async def replace( async def remove( path: StrOrBytesPath, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... +async def unlink( + path: StrOrBytesPath, *, dir_fd: int | None = ..., loop: AbstractEventLoop | None = ..., executor: Any = ... +) -> None: ... async def mkdir( path: StrOrBytesPath, mode: int = 511, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... async def makedirs( name: StrOrBytesPath, mode: int = 511, exist_ok: bool = False, *, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... +async def link( + src: StrOrBytesPath, + dst: StrOrBytesPath, + *, + src_dir_fd: int | None = ..., + dst_dir_fd: int | None = ..., + follow_symlinks: bool = ..., + loop: AbstractEventLoop | None = ..., + executor: Any = ..., +) -> None: ... +async def symlink( + src: StrOrBytesPath, + dst: StrOrBytesPath, + target_is_directory: bool = ..., + *, + dir_fd: int | None = ..., + loop: AbstractEventLoop | None = ..., + executor: Any = ..., +) -> None: ... +async def readlink( + path: AnyStr, *, dir_fd: int | None = ..., loop: AbstractEventLoop | None = ..., executor: Any = ... +) -> AnyStr: ... async def rmdir( path: StrOrBytesPath, *, dir_fd: int | None = None, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> None: ... @@ -56,6 +84,12 @@ async def scandir(path: int, *, loop: AbstractEventLoop | None = ..., executor: async def scandir( path: GenericPath[AnyStr], *, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> _ScandirIterator[AnyStr]: ... +@overload +async def listdir(path: StrPath | None, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> list[str]: ... +@overload +async def listdir(path: BytesPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> list[bytes]: ... +@overload +async def listdir(path: int, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> list[str]: ... if sys.platform != "win32": @overload diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/tempfile/temptypes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/tempfile/temptypes.pyi index 211fcafc8..bb9fdcfca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/tempfile/temptypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/aiofiles/tempfile/temptypes.pyi @@ -1,7 +1,7 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, OpenBinaryMode from asyncio import AbstractEventLoop from collections.abc import Generator, Iterable -from tempfile import TemporaryDirectory, _BytesMode +from tempfile import TemporaryDirectory from types import coroutine as coroutine from typing import TypeVar @@ -33,7 +33,7 @@ class AsyncSpooledTemporaryFile(AsyncBase[_T]): @property def encoding(self) -> str: ... @property - def mode(self) -> _BytesMode: ... + def mode(self) -> OpenBinaryMode: ... @property def name(self) -> str: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..c0f8fbaf4 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/@tests/stubtest_allowlist.txt @@ -0,0 +1,4 @@ +aws_xray_sdk.core.async_recorder.subsegment_decorator +aws_xray_sdk.core.models.subsegment.subsegment_decorator +aws_xray_sdk.core.sampling.connector.ServiceConnector.fetch_sampling_rules +aws_xray_sdk.core.sampling.sampler.ServiceConnector.fetch_sampling_rules diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml index 7dc2c18b4..a80fc97a8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml @@ -1,5 +1,5 @@ version = "2.11.*" -requires = ["types-pytz"] +requires = ["types-pytz", "types-setuptools"] obsolete_since = "2.12.1" # Released on 2023-02-28 partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi index dfc1a1308..c20579b48 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi @@ -1,8 +1,9 @@ import abc from _typeshed import Incomplete -from distutils.cmd import Command as _Command from typing import Any +from setuptools._distutils.cmd import Command as _Command + def listify_value(arg, split: Incomplete | None = None): ... class Command(_Command, metaclass=abc.ABCMeta): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/bleach/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/bleach/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..c3ff453fd --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/bleach/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +bleach.css_sanitizer # Requires tinycss2 to be installed +bleach.html5lib_shim.* diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/boltons/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..1d73fe8b2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/@tests/stubtest_allowlist.txt @@ -0,0 +1,10 @@ +# These names exist in __all__, but have no definition: +boltons.strutils.int_list_complement +boltons.strutils.int_list_to_int_tuples + +# Internal compatibility aliases +boltons.cacheutils.basestring +boltons.funcutils.basestring +boltons.funcutils.inspect_formatargspec +boltons.funcutils.make_method +boltons.iterutils.basestring diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/boltons/METADATA.toml new file mode 100644 index 000000000..0243ddf54 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/METADATA.toml @@ -0,0 +1,4 @@ +version = "23.0.*" + +[tool.stubtest] +ignore_missing_stub = false diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/cacheutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/cacheutils.pyi new file mode 100644 index 000000000..178171647 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/cacheutils.pyi @@ -0,0 +1,115 @@ +import weakref +from _typeshed import Incomplete, Self, SupportsItems, SupportsKeysAndGetItem +from collections.abc import Callable, Generator, Hashable, Iterable, Iterator, Mapping +from typing import Any, Generic, TypeVar, overload + +_KT = TypeVar("_KT") +_VT = TypeVar("_VT") +_T = TypeVar("_T") + +PREV: int +NEXT: int +KEY: int +VALUE: int +DEFAULT_MAX_SIZE: int + +class LRI(dict[_KT, _VT]): + hit_count: int + miss_count: int + soft_miss_count: int + max_size: int + on_miss: Callable[[_KT], _VT] + def __init__(self, max_size: int = 128, values: Incomplete | None = None, on_miss: Incomplete | None = None) -> None: ... + def __setitem__(self, key: _KT, value: _VT) -> None: ... + def __getitem__(self, key: _KT) -> _VT: ... + @overload + def get(self, key: _KT, default: None = None) -> _VT | None: ... + @overload + def get(self, key: _KT, default: _T) -> _T | _VT: ... + def __delitem__(self, key: _KT) -> None: ... + @overload + def pop(self, key: _KT) -> _VT: ... + @overload + def pop(self, key: _KT, default: _T) -> _T | _VT: ... + def popitem(self) -> tuple[_KT, _VT]: ... + def clear(self) -> None: ... + def copy(self: Self) -> Self: ... + @overload + def setdefault(self, key: _KT, default: None = None) -> _VT: ... + @overload + def setdefault(self, key: _KT, default: _VT) -> _VT: ... + def update(self, E: SupportsKeysAndGetItem[_KT, _VT] | Iterable[tuple[_KT, _VT]], **F: _VT) -> None: ... # type: ignore[override] + +class LRU(LRI[_KT, _VT]): + def __getitem__(self, key: _KT) -> _VT: ... + +def make_cache_key( + args: Iterable[Hashable], + kwargs: SupportsItems[Hashable, Hashable], + typed: bool = False, + kwarg_mark: object = ..., + fasttypes: frozenset[type] = ..., +): ... + +class CachedFunction: + func: Incomplete + get_cache: Incomplete + scoped: Incomplete + typed: Incomplete + key_func: Incomplete + def __init__(self, func, cache, scoped: bool = True, typed: bool = False, key: Incomplete | None = None): ... + def __call__(self, *args, **kwargs): ... + +class CachedMethod: + func: Incomplete + get_cache: Incomplete + scoped: Incomplete + typed: Incomplete + key_func: Incomplete + bound_to: Incomplete + def __init__(self, func, cache, scoped: bool = True, typed: bool = False, key: Incomplete | None = None): ... + def __get__(self, obj, objtype: Incomplete | None = None): ... + def __call__(self, *args, **kwargs): ... + +def cached(cache: Mapping[Any, Any], scoped: bool = True, typed: bool = False, key: Incomplete | None = None): ... +def cachedmethod(cache, scoped: bool = True, typed: bool = False, key: Incomplete | None = None): ... + +class cachedproperty(Generic[_T]): + func: Callable[[Incomplete], _T] + def __init__(self, func: Callable[[Incomplete], _T]) -> None: ... + def __get__(self, obj: _T, objtype: type | None = None): ... + +class ThresholdCounter(Generic[_T]): + total: int + def __init__(self, threshold: float = 0.001) -> None: ... + @property + def threshold(self) -> float: ... + def add(self, key: _T) -> None: ... + def elements(self) -> Iterator[_T]: ... + def most_common(self, n: int | None = None) -> list[tuple[_T, int]]: ... + def get_common_count(self) -> int: ... + def get_uncommon_count(self) -> int: ... + def get_commonality(self) -> float: ... + def __getitem__(self, key: _T) -> int: ... + def __len__(self) -> int: ... + def __contains__(self, key: _T) -> bool: ... + def iterkeys(self) -> Iterator[_T]: ... + def keys(self) -> list[_T]: ... + def itervalues(self) -> Generator[int, None, None]: ... + def values(self) -> list[int]: ... + def iteritems(self) -> Generator[tuple[_T, int], None, None]: ... + def items(self) -> list[tuple[_T, int]]: ... + def get(self, key: _T, default: int = 0) -> int: ... + def update(self, iterable: Iterable[_T] | Mapping[_T, int], **kwargs: Iterable[_T] | Mapping[_T, int]) -> None: ... + +class MinIDMap(Generic[_T]): + mapping: weakref.WeakKeyDictionary[_T, int] + ref_map: dict[_T, int] + free: list[int] + def __init__(self) -> None: ... + def get(self, a: _T) -> int: ... + def drop(self, a: _T) -> None: ... + def __contains__(self, a: _T) -> bool: ... + def __iter__(self) -> Iterator[_T]: ... + def __len__(self) -> int: ... + def iteritems(self) -> Iterator[tuple[_T, int]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/debugutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/debugutils.pyi new file mode 100644 index 000000000..02a7df4fa --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/debugutils.pyi @@ -0,0 +1,9 @@ +from _typeshed import Incomplete +from collections.abc import Callable +from typing import Any + +def pdb_on_signal(signalnum: int | None = None) -> None: ... +def pdb_on_exception(limit: int = 100) -> None: ... +def wrap_trace( + obj: Incomplete, hook: Callable[..., Any] = ..., which: str | None = None, events: str | None = None, label: str | None = None +) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/deprutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/deprutils.pyi new file mode 100644 index 000000000..2e25d98e7 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/deprutils.pyi @@ -0,0 +1,8 @@ +from types import ModuleType +from typing import Any + +class DeprecatableModule(ModuleType): + def __init__(self, module: ModuleType) -> None: ... + def __getattribute__(self, name: str) -> Any: ... + +def deprecate_module_member(mod_name: str, name: str, message: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/dictutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/dictutils.pyi new file mode 100644 index 000000000..2b74aaaf2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/dictutils.pyi @@ -0,0 +1,90 @@ +from _typeshed import SupportsKeysAndGetItem +from binascii import Incomplete +from collections.abc import Generator, ItemsView, Iterable, KeysView, ValuesView +from typing import NoReturn, TypeVar +from typing_extensions import Self, TypeAlias + +_KT = TypeVar("_KT") +_VT = TypeVar("_VT") +_T = TypeVar("_T") + +class OrderedMultiDict(dict[_KT, _VT]): + def add(self, k: _KT, v: _VT) -> None: ... + def addlist(self, k: _KT, v: Iterable[_VT]) -> None: ... + def clear(self) -> None: ... + def copy(self) -> Self: ... + def counts(self) -> OrderedMultiDict[_KT, _VT]: ... + @classmethod + def fromkeys(cls, keys: _KT, default: _VT | None = None) -> OrderedMultiDict[_KT, _VT]: ... # type: ignore[override] + def get(self, k: _KT, default: _VT | None = None) -> OrderedMultiDict[_KT, _VT]: ... # type: ignore[override] + def getlist(self, k: _KT, default: _VT | None = ...) -> list[object]: ... + def inverted(self) -> OrderedMultiDict[_KT, _VT]: ... + def items(self, multi: bool = False) -> list[tuple[_KT, _VT]]: ... # type: ignore[override] + def iteritems(self, multi: bool = False) -> Generator[tuple[_KT, _VT], None, None]: ... + def iterkeys(self, multi: bool = False) -> Generator[_KT, None, None]: ... + def itervalues(self, multi: bool = False) -> Generator[_VT, None, None]: ... + def keys(self, multi: bool = False) -> list[_KT]: ... # type: ignore[override] + def pop(self, k: _KT, default: _VT | None = ...) -> _VT: ... # type: ignore[override] + def popall(self, k: _KT, default: _VT | None = ...) -> list[_VT]: ... + def poplast(self, k: _KT | None = ..., default: _VT | None = ...) -> _VT: ... + def setdefault(self, k: _KT, default: _VT | None = ...) -> _VT: ... + def sorted(self, key: _KT | None = None, reverse: bool = False) -> OrderedMultiDict[_KT, _VT]: ... + def sortedvalues(self, key: _KT | None = None, reverse: bool = False) -> OrderedMultiDict[_KT, _VT]: ... + def todict(self, multi: bool = False) -> dict[_KT, _VT]: ... + def update(self, E: dict[_KT, _VT] | Iterable[object], **F) -> None: ... # type: ignore[override] + def update_extend(self, E: dict[_KT, _VT] | Iterable[object], **F) -> None: ... + def values(self, multi: bool = False) -> list[_VT]: ... # type: ignore[override] + def viewitems(self) -> ItemsView[_KT, _VT]: ... + def viewkeys(self) -> KeysView[_KT]: ... + def viewvalues(self) -> ValuesView[_VT]: ... + +OMD: TypeAlias = OrderedMultiDict[_KT, _VT] +MultiDict: TypeAlias = OrderedMultiDict[_KT, _VT] + +class FastIterOrderedMultiDict(OrderedMultiDict[_KT, _VT]): # undocumented + def iteritems(self, multi: bool = False) -> Generator[tuple[_KT, _VT], None, None]: ... + def iterkeys(self, multi: bool = False) -> Generator[_KT, None, None]: ... + +class OneToOne(dict[_KT, _VT]): + inv: dict[_VT, _KT] + def clear(self) -> None: ... + def copy(self) -> Self: ... + def pop(self, key: _KT, default: _VT | _T = ...) -> _VT | _T: ... + def popitem(self) -> tuple[_KT, _VT]: ... + def setdefault(self, key: _KT, default: _VT | None = None) -> _VT: ... + @classmethod + def unique(cls, *a, **kw) -> Self: ... + def update(self, dict_or_iterable, **kw) -> None: ... # type: ignore[override] + +class ManyToMany(dict[_KT, frozenset[_VT]]): + data: dict[_KT, set[_VT]] + inv: dict[_VT, set[_KT]] + # def __contains__(self, key: _KT): ... + def __delitem__(self, key: _KT) -> None: ... + def __eq__(self, other): ... + def __getitem__(self, key: _KT): ... + def __init__(self, items: Iterable[Incomplete] | None = None) -> None: ... + def __iter__(self): ... + def __len__(self): ... + def __setitem__(self, key: _KT, vals: Iterable[_VT]) -> None: ... + def add(self, key: _KT, val: _VT) -> None: ... + def get(self, key: _KT, default: frozenset[_VT] = ...) -> frozenset[_VT]: ... # type: ignore[override] + def iteritems(self) -> Generator[tuple[_KT, _VT], None, None]: ... + def keys(self): ... + def remove(self, key: _KT, val: _VT) -> None: ... + def replace(self, key: _KT, newkey: _KT) -> None: ... + def update(self, iterable: ManyToMany[_KT, _VT] | SupportsKeysAndGetItem[_KT, _VT] | tuple[_KT, _VT]) -> None: ... # type: ignore[override] + +def subdict(d: dict[_KT, _VT], keep: Iterable[_KT] | None = None, drop: Iterable[_KT] | None = None) -> dict[_KT, _VT]: ... + +class FrozenHashError(TypeError): ... # undocumented + +class FrozenDict(dict[_KT, _VT]): + def __copy__(self) -> Self: ... + def clear(self, *a, **kw) -> None: ... + @classmethod + def fromkeys(cls, keys: Iterable[_KT], value: _VT | None = None) -> FrozenDict[_KT, _VT]: ... # type: ignore[override] + def pop(self, *a, **kw) -> NoReturn: ... + def popitem(self, *a, **kw) -> NoReturn: ... + def setdefault(self, *a, **kw) -> NoReturn: ... + def updated(self, *a, **kw) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/easterutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/easterutils.pyi new file mode 100644 index 000000000..4ccfba3ee --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/easterutils.pyi @@ -0,0 +1,3 @@ +from typing import NoReturn + +def gobs_program() -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/ecoutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/ecoutils.pyi new file mode 100644 index 000000000..ef2da2178 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/ecoutils.pyi @@ -0,0 +1,28 @@ +from typing import Any + +ECO_VERSION: str +PY_GT_2: bool +HAVE_URANDOM: bool +INSTANCE_ID: str +IS_64BIT: bool +HAVE_UCS4: bool +HAVE_READLINE: bool +SQLITE_VERSION: str +OPENSSL_VERSION: str +TKINTER_VERSION: str +ZLIB_VERSION: str +EXPAT_VERSION: str +CPU_COUNT: int +HAVE_THREADING: bool +HAVE_IPV6: bool +RLIMIT_NOFILE: int +RLIMIT_FDS_SOFT: int +RLIMIT_FDS_HARD: int +START_TIME_INFO: dict[str, str | float] + +def getrandbits(k: int) -> int: ... +def get_python_info() -> dict[str, Any]: ... +def get_profile(**kwargs) -> dict[str, Any]: ... +def get_profile_json(indent: bool = False) -> str: ... +def main() -> None: ... +def dumps(val: Any, indent: int) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/excutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/excutils.pyi new file mode 100644 index 000000000..5994c849e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/excutils.pyi @@ -0,0 +1,9 @@ +from typing import Any +from typing_extensions import Self + +class ExceptionCauseMixin(Exception): + cause: Any + def __new__(cls, *args, **kw) -> Self: ... + def get_str(self) -> str: ... + +class MathError(ExceptionCauseMixin, ValueError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/fileutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/fileutils.pyi new file mode 100644 index 000000000..d8c97c51b --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/fileutils.pyi @@ -0,0 +1,79 @@ +from _typeshed import StrOrBytesPath +from collections.abc import Callable, Generator, Iterable +from types import TracebackType +from typing import IO, Any, NoReturn +from typing_extensions import Self + +def mkdir_p(path: StrOrBytesPath) -> None: ... + +class FilePerms: + user: str + group: str + other: str + def __init__(self, user: str = "", group: str = "", other: str = "") -> None: ... + @classmethod + def from_int(cls, i: int) -> Self: ... + @classmethod + def from_path(cls, path: StrOrBytesPath) -> Self: ... + def __int__(self) -> int: ... + +def atomic_save(dest_path: str, **kwargs) -> AtomicSaver: ... + +class AtomicSaver: + dest_path: str + overwrite: bool + file_perms: int + overwrite_part: bool + part_filename: str + rm_part_on_exc: bool + text_mode: bool + buffering: int + dest_dir: str + part_path: str + mode: str + open_flags: int + part_file: str | None + def __init__(self, dest_path: str, **kwargs) -> None: ... + def setup(self) -> None: ... + def __enter__(self) -> IO[Any] | None: ... + def __exit__( + self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None + ) -> None: ... + +def iter_find_files( + directory: str, patterns: str | Iterable[str], ignored: str | Iterable[str] | None = None, include_dirs: bool = False +) -> Generator[str, None, None]: ... +def copy_tree( + src: StrOrBytesPath, + dst: StrOrBytesPath, + symlinks: bool = False, + ignore: None | Callable[[str, list[str]], Iterable[str]] | Callable[[StrOrBytesPath, list[str]], Iterable[str]] = None, +) -> None: ... + +copytree = copy_tree + +class DummyFile: + name: str + mode: str + closed: bool + errors: None + isatty: bool + encoding: None + newlines: None + softspace: int + def __init__(self, path: StrOrBytesPath, mode: str = "r", buffering: int | None = None) -> None: ... + def close(self) -> None: ... + def fileno(self) -> int: ... + def flush(self) -> None: ... + def next(self) -> NoReturn: ... + def read(self, size: int = 0) -> str: ... + def readline(self, size: int = 0) -> str: ... + def readlines(self, size: int = 0) -> list[str]: ... + def seek(self) -> None: ... + def tell(self) -> int: ... + def truncate(self) -> None: ... + def write(self, string: str) -> None: ... + def writelines(self, list_of_strings: list[str]) -> None: ... + def __next__(self) -> NoReturn: ... + def __enter__(self) -> None: ... + def __exit__(self, exc_type, exc_val, exc_tb) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/formatutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/formatutils.pyi new file mode 100644 index 000000000..20ac5f0a8 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/formatutils.pyi @@ -0,0 +1,35 @@ +from collections.abc import Callable +from typing import Any + +def construct_format_field_str(fname: str, fspec: str, conv: str) -> str: ... +def infer_positional_format_args(fstr: str) -> str: ... +def get_format_args(fstr: str) -> tuple[list[tuple[int, type]], list[tuple[str, type]]]: ... +def tokenize_format_str(fstr: str, resolve_pos: bool = True) -> list[str | BaseFormatField]: ... + +class BaseFormatField: + def __init__(self, fname: str, fspec: str = "", conv: str | None = None) -> None: ... + base_name: str + fname: str + subpath: str + is_positional: bool + def set_fname(self, fname: str) -> None: ... + subfields: list[str] + fspec: str + type_char: str + type_func: str + def set_fspec(self, fspec) -> None: ... + conv: str + conv_func: str | None + def set_conv(self, conv: str) -> None: ... + @property + def fstr(self) -> str: ... + +class DeferredValue: + func: Callable[..., Any] + cache_value: bool + def __init__(self, func: Callable[..., Any], cache_value: bool = True) -> None: ... + def get_value(self) -> Any: ... + def __int__(self) -> int: ... + def __float__(self) -> float: ... + def __unicode__(self) -> str: ... + def __format__(self, fmt: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/funcutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/funcutils.pyi new file mode 100644 index 000000000..f5fc35fa1 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/funcutils.pyi @@ -0,0 +1,59 @@ +import functools +from _typeshed import Incomplete +from functools import total_ordering as total_ordering + +NO_DEFAULT: Incomplete + +def get_module_callables(mod, ignore: Incomplete | None = None): ... +def mro_items(type_obj): ... +def dir_dict(obj, raise_exc: bool = False): ... +def copy_function(orig, copy_dict: bool = True): ... +def partial_ordering(cls): ... + +class InstancePartial(functools.partial[Incomplete]): + def __get__(self, obj, obj_type): ... + +class CachedInstancePartial(functools.partial[Incomplete]): + __name__: Incomplete + def __set_name__(self, obj_type, name) -> None: ... + __doc__: Incomplete + __module__: Incomplete + def __get__(self, obj, obj_type): ... + +partial = CachedInstancePartial + +def format_invocation(name: str = "", args=(), kwargs: Incomplete | None = None, **kw): ... +def format_exp_repr( + obj, pos_names, req_names: Incomplete | None = None, opt_names: Incomplete | None = None, opt_key: Incomplete | None = None +): ... +def format_nonexp_repr( + obj, req_names: Incomplete | None = None, opt_names: Incomplete | None = None, opt_key: Incomplete | None = None +): ... +def wraps(func, injected: Incomplete | None = None, expected: Incomplete | None = None, **kw): ... +def update_wrapper( + wrapper, + func, + injected: Incomplete | None = None, + expected: Incomplete | None = None, + build_from: Incomplete | None = None, + **kw, +): ... + +class FunctionBuilder: + name: Incomplete + def __init__(self, name, **kw) -> None: ... + def get_sig_str(self, with_annotations: bool = True): ... + def get_invocation_str(self): ... + @classmethod + def from_func(cls, func): ... + def get_func(self, execdict: Incomplete | None = None, add_source: bool = True, with_dict: bool = True): ... + def get_defaults_dict(self): ... + def get_arg_names(self, only_required: bool = False): ... + defaults: Incomplete + def add_arg(self, arg_name, default=..., kwonly: bool = False) -> None: ... + def remove_arg(self, arg_name) -> None: ... + +class MissingArgument(ValueError): ... +class ExistingArgument(ValueError): ... + +def noop(*args, **kwargs) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/gcutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/gcutils.pyi new file mode 100644 index 000000000..455af78e3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/gcutils.pyi @@ -0,0 +1,14 @@ +from typing import TypeVar + +_T = TypeVar("_T") + +def get_all(type_obj: type[_T], include_subtypes: bool = True) -> list[_T]: ... + +class GCToggler: + postcollect: bool + def __init__(self, postcollect: bool = False) -> None: ... + def __enter__(self) -> None: ... + def __exit__(self, exc_type, exc_val, exc_tb) -> None: ... + +toggle_gc: GCToggler +toggle_gc_postcollect: GCToggler diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/ioutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/ioutils.pyi new file mode 100644 index 000000000..2660eb510 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/ioutils.pyi @@ -0,0 +1,93 @@ +import abc +from _typeshed import Incomplete +from abc import abstractmethod + +text_type = str +binary_type = bytes +READ_CHUNK_SIZE: int +EINVAL: Incomplete + +class SpooledIOBase(metaclass=abc.ABCMeta): + __metaclass__: Incomplete + def __init__(self, max_size: int = 5000000, dir: Incomplete | None = None) -> None: ... + @abstractmethod + def read(self, n: int = -1): ... + @abstractmethod + def write(self, s): ... + @abstractmethod + def seek(self, pos, mode: int = 0): ... + @abstractmethod + def readline(self, length: Incomplete | None = None): ... + @abstractmethod + def readlines(self, sizehint: int = 0): ... + def writelines(self, lines) -> None: ... + @abstractmethod + def rollover(self): ... + @abstractmethod + def tell(self): ... + @property + @abc.abstractmethod + def buffer(self): ... + @property + @abc.abstractmethod + def len(self): ... + softspace: Incomplete + def close(self): ... + def flush(self): ... + def isatty(self): ... + def next(self): ... + @property + def closed(self): ... + @property + def pos(self): ... + @property + def buf(self): ... + def fileno(self): ... + def truncate(self, size: Incomplete | None = None): ... + def getvalue(self): ... + def seekable(self): ... + def readable(self): ... + def writable(self): ... + __next__: Incomplete + def __len__(self): ... + def __iter__(self): ... + def __enter__(self): ... + def __exit__(self, *args) -> None: ... + def __eq__(self, other): ... + def __ne__(self, other): ... + def __bool__(self): ... + __nonzero__: Incomplete + +class SpooledBytesIO(SpooledIOBase): + def read(self, n: int = -1): ... + def write(self, s) -> None: ... + def seek(self, pos, mode: int = 0): ... + def readline(self, length: Incomplete | None = None): ... + def readlines(self, sizehint: int = 0): ... + def rollover(self) -> None: ... + @property + def buffer(self): ... + @property + def len(self): ... + def tell(self): ... + +class SpooledStringIO(SpooledIOBase): + def __init__(self, *args, **kwargs) -> None: ... + def read(self, n: int = -1): ... + def write(self, s) -> None: ... + def seek(self, pos, mode: int = 0): ... + def readline(self, length: Incomplete | None = None): ... + def readlines(self, sizehint: int = 0): ... + @property + def buffer(self): ... + def rollover(self) -> None: ... + def tell(self): ... + @property + def len(self): ... + +def is_text_fileobj(fileobj) -> bool: ... + +class MultiFileReader: + def __init__(self, *fileobjs) -> None: ... + def read(self, amt: Incomplete | None = None): ... + def seek(self, offset, whence=0) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/iterutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/iterutils.pyi new file mode 100644 index 000000000..c448e7427 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/iterutils.pyi @@ -0,0 +1,83 @@ +from _typeshed import Incomplete +from collections.abc import Generator + +def is_iterable(obj) -> bool: ... +def is_scalar(obj) -> bool: ... +def is_collection(obj) -> bool: ... +def split(src, sep: Incomplete | None = None, maxsplit: Incomplete | None = None): ... +def split_iter( + src, sep: Incomplete | None = None, maxsplit: Incomplete | None = None +) -> Generator[Incomplete, None, Incomplete]: ... +def lstrip(iterable, strip_value: Incomplete | None = None): ... +def lstrip_iter(iterable, strip_value: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... +def rstrip(iterable, strip_value: Incomplete | None = None): ... +def rstrip_iter(iterable, strip_value: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... +def strip(iterable, strip_value: Incomplete | None = None): ... +def strip_iter(iterable, strip_value: Incomplete | None = None): ... +def chunked(src, size, count: Incomplete | None = None, **kw): ... +def chunked_iter(src, size, **kw) -> Generator[Incomplete, None, Incomplete]: ... +def chunk_ranges( + input_size: int, chunk_size: int, input_offset: int = 0, overlap_size: int = 0, align: bool = False +) -> Generator[tuple[int, int], None, None]: ... +def pairwise(src): ... +def pairwise_iter(src): ... +def windowed(src, size): ... +def windowed_iter(src, size): ... +def xfrange(stop, start: Incomplete | None = None, step: float = 1.0) -> Generator[Incomplete, None, None]: ... +def frange(stop, start: Incomplete | None = None, step: float = 1.0): ... +def backoff(start, stop, count: Incomplete | None = None, factor: float = 2.0, jitter: bool = False): ... +def backoff_iter( + start, stop, count: Incomplete | None = None, factor: float = 2.0, jitter: bool = False +) -> Generator[Incomplete, None, None]: ... +def bucketize(src, key=..., value_transform: Incomplete | None = None, key_filter: Incomplete | None = None): ... +def partition(src, key=...): ... +def unique(src, key: Incomplete | None = None): ... +def unique_iter(src, key: Incomplete | None = None) -> Generator[Incomplete, None, Incomplete]: ... +def redundant(src, key: Incomplete | None = None, groups: bool = False): ... +def one(src, default: Incomplete | None = None, key: Incomplete | None = None): ... +def first(iterable, default: Incomplete | None = None, key: Incomplete | None = None): ... +def flatten_iter(iterable) -> Generator[Incomplete, None, None]: ... +def flatten(iterable): ... +def same(iterable, ref=...): ... +def default_visit(path, key, value): ... +def default_enter(path, key, value): ... +def default_exit(path, key, old_parent, new_parent, new_items): ... +def remap(root, visit=..., enter=..., exit=..., **kwargs): ... + +class PathAccessError(KeyError, IndexError, TypeError): + exc: Incomplete + seg: Incomplete + path: Incomplete + def __init__(self, exc, seg, path) -> None: ... + +def get_path(root, path, default=...): ... +def research(root, query=..., reraise: bool = False): ... + +class GUIDerator: + size: Incomplete + count: Incomplete + def __init__(self, size: int = 24) -> None: ... + pid: Incomplete + salt: Incomplete + def reseed(self) -> None: ... + def __iter__(self): ... + def __next__(self): ... + next: Incomplete + +class SequentialGUIDerator(GUIDerator): + start: Incomplete + def reseed(self) -> None: ... + def __next__(self): ... + next: Incomplete + +guid_iter: Incomplete +seq_guid_iter: Incomplete + +def soft_sorted( + iterable, + first: Incomplete | None = None, + last: Incomplete | None = None, + key: Incomplete | None = None, + reverse: bool = False, +): ... +def untyped_sorted(iterable, key: Incomplete | None = None, reverse: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/jsonutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/jsonutils.pyi new file mode 100644 index 000000000..bd6a6d23f --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/jsonutils.pyi @@ -0,0 +1,25 @@ +from collections.abc import Generator +from typing import IO, Any, overload +from typing_extensions import Self + +@overload +def reverse_iter_lines( + file_obj: IO[bytes], blocksize: int = 4096, preseek: bool = True, encoding: None = None +) -> Generator[bytes, None, None]: ... +@overload +def reverse_iter_lines( + file_obj: IO[str], blocksize: int = 4096, preseek: bool = True, *, encoding: str +) -> Generator[str, None, None]: ... +@overload +def reverse_iter_lines(file_obj: IO[str], blocksize: int, preseek: bool, encoding: str) -> Generator[str, None, None]: ... + +class JSONLIterator: + ignore_errors: bool + def __init__( + self, file_obj: IO[str], ignore_errors: bool = False, reverse: bool = False, rel_seek: float | None = None + ) -> None: ... + @property + def cur_byte_pos(self) -> int: ... + def __iter__(self) -> Self: ... + def next(self) -> Any: ... + __next__ = next diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/listutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/listutils.pyi new file mode 100644 index 000000000..af490dc46 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/listutils.pyi @@ -0,0 +1,33 @@ +from collections.abc import Iterable +from typing import TypeVar, overload +from typing_extensions import Self, SupportsIndex, TypeAlias + +_T = TypeVar("_T") + +class BarrelList(list[_T]): + lists: list[list[_T]] + @overload + def __init__(self, iterable: None = None) -> None: ... + @overload + def __init__(self, iterable: Iterable[_T]) -> None: ... + def insert(self, index: SupportsIndex, item: _T) -> None: ... + def append(self, item: _T) -> None: ... + def extend(self, iterable: Iterable[_T]) -> None: ... + def pop(self, *a) -> _T: ... + def iter_slice(self, start: int, stop: int, step: int | None = None) -> Iterable[_T]: ... + def del_slice(self, start: int, stop: int, step: int | None = None) -> None: ... + __delslice__ = del_slice + @classmethod + def from_iterable(cls, it: Iterable[_T]) -> Self: ... + def __getslice__(self, start: int, stop: int): ... + def __setslice__(self, start: int, stop: int, sequence: int) -> None: ... + def sort(self) -> None: ... # type: ignore[override] + def reverse(self) -> None: ... + def count(self, item: _T) -> int: ... + def index(self, item: _T) -> int: ... # type: ignore[override] + +BList: TypeAlias = BarrelList[_T] + +class SplayList(list[_T]): + def shift(self, item_index: int, dest_index: int = 0) -> None: ... + def swap(self, item_index: int, dest_index: int) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/mathutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/mathutils.pyi new file mode 100644 index 000000000..2590a3e50 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/mathutils.pyi @@ -0,0 +1,33 @@ +from collections.abc import Sequence + +def clamp(x: float, lower: float = ..., upper: float = ...) -> float: ... +def ceil(x: float, options: Sequence[float] | None = None) -> float: ... +def floor(x: float, options: Sequence[float] | None = None) -> float: ... + +class Bits: + val: int + len: int + def __init__(self, val: int | list[bool] | str | bytes = 0, len_: int | None = None) -> None: ... + def __getitem__(self, k) -> Bits | bool: ... + def __len__(self) -> int: ... + def __eq__(self, other) -> bool: ... + def __or__(self, other: Bits) -> Bits: ... + def __and__(self, other: Bits) -> Bits: ... + def __lshift__(self, other: int) -> Bits: ... + def __rshift__(self, other: int) -> Bits: ... + def __hash__(self) -> int: ... + def as_list(self) -> list[bool]: ... + def as_bin(self) -> str: ... + def as_hex(self) -> str: ... + def as_int(self) -> int: ... + def as_bytes(self) -> bytes: ... + @classmethod + def from_list(cls, list_): ... + @classmethod + def from_bin(cls, bin): ... + @classmethod + def from_hex(cls, hex): ... + @classmethod + def from_int(cls, int_, len_: int | None = None): ... + @classmethod + def from_bytes(cls, bytes_): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/mboxutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/mboxutils.pyi new file mode 100644 index 000000000..ca61fb700 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/mboxutils.pyi @@ -0,0 +1,8 @@ +import mailbox + +DEFAULT_MAXMEM: int + +class mbox_readonlydir(mailbox.mbox): + maxmem: int + def __init__(self, path: str, factory: type | None = None, create: bool = True, maxmem: int = 1048576) -> None: ... + def flush(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/namedutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/namedutils.pyi new file mode 100644 index 000000000..5d3f117f9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/namedutils.pyi @@ -0,0 +1,4 @@ +from collections.abc import Sequence + +def namedtuple(typename: str, field_names: Sequence[str], verbose: bool = False, rename: bool = False): ... +def namedlist(typename: str, field_names: Sequence[str], verbose: bool = False, rename: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/pathutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/pathutils.pyi new file mode 100644 index 000000000..ecb8004b8 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/pathutils.pyi @@ -0,0 +1,11 @@ +def augpath( + path: str, + suffix: str = "", + prefix: str = "", + ext: str | None = None, + base: str | None = None, + dpath: str | None = None, + multidot: bool = False, +) -> str: ... +def shrinkuser(path: str, home: str = "~") -> str: ... +def expandpath(path: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/queueutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/queueutils.pyi new file mode 100644 index 000000000..701298e78 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/queueutils.pyi @@ -0,0 +1,15 @@ +from binascii import Incomplete +from typing_extensions import TypeAlias + +class BasePriorityQueue: + def __init__(self, **kw) -> None: ... + def add(self, task, priority: int | None = None) -> None: ... + def remove(self, task) -> None: ... + def peek(self, default=...) -> Incomplete: ... + def pop(self, default=...) -> Incomplete: ... + def __len__(self) -> int: ... + +class HeapPriorityQueue(BasePriorityQueue): ... +class SortedPriorityQueue(BasePriorityQueue): ... + +PriorityQueue: TypeAlias = SortedPriorityQueue diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/setutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/setutils.pyi new file mode 100644 index 000000000..9926b6fa7 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/setutils.pyi @@ -0,0 +1,89 @@ +from collections.abc import Generator, Iterable, Iterator, MutableSet +from itertools import islice +from typing import Any +from typing_extensions import Self + +class IndexedSet(MutableSet[Any]): + item_index_map: dict[Any, Any] + item_list: list[Any] + dead_indices: list[int] + def __init__(self, other: Iterable[Any] | None = None) -> None: ... + def __len__(self) -> int: ... + def __contains__(self, item: Any) -> bool: ... + def __iter__(self) -> Iterator[Any]: ... + def __reversed__(self) -> Generator[Any, None, None]: ... + @classmethod + def from_iterable(cls, it: Iterable[Any]) -> set[Any]: ... + def add(self, item: Any) -> None: ... + def remove(self, item: Any) -> None: ... + def discard(self, item: Any) -> None: ... + def clear(self) -> None: ... + def isdisjoint(self, other: Iterable[Any]) -> bool: ... + def issubset(self, other: Iterable[Any]) -> bool: ... + def issuperset(self, other: Iterable[Any]) -> bool: ... + def union(self, *others: Iterable[Any]) -> set[Any]: ... + def iter_intersection(self, *others: Iterable[Any]) -> Generator[Any, None, None]: ... + def intersection(self, *others: Iterable[Any]) -> set[Any]: ... + def iter_difference(self, *others: Iterable[Any]) -> Generator[Any, None, None]: ... + def difference(self, *others: Iterable[Any]) -> Any: ... + def symmetric_difference(self, *others: Iterable[Any]) -> set[Any]: ... + # __or__ = union + __ror__ = union + # __and__ = intersection + __rand__ = intersection + # __sub__ = difference + # __xor__ = symmetric_difference + __rxor__ = symmetric_difference + def __rsub__(self, other: Iterable[Any]) -> Any: ... + def update(self, *others: Iterable[Any]) -> None: ... + def intersection_update(self, *others: Iterable[Any]) -> None: ... + def difference_update(self, *others: Iterable[Any]) -> None: ... + def symmetric_difference_update(self, other: Iterable[Any]) -> None: ... + def iter_slice(self, start: int, stop: int, step: int | None = None) -> islice[Iterable[Any]]: ... + def __getitem__(self, index: int) -> Any: ... + def pop(self, index: int | None = None) -> Any: ... + def count(self, val: Any) -> int: ... + def reverse(self) -> None: ... + def sort(self, **kwargs) -> None: ... + def index(self, val: Any) -> int: ... + +def complement(wrapped: set[Any]) -> set[Any]: ... + +class _ComplementSet: + def __init__(self, included: set[Any] | None = None, excluded: set[Any] | None = None) -> None: ... + def complemented(self) -> set[Any]: ... + __invert__ = complemented + def complement(self) -> None: ... + def __contains__(self, item: Any) -> bool: ... + def add(self, item: Any) -> None: ... + def remove(self, item: Any) -> None: ... + def pop(self) -> Any: ... + def intersection(self, other: set[Any]) -> set[Any]: ... + def __and__(self, other: set[Any]) -> set[Any]: ... + __rand__ = __and__ + def __iand__(self, other: set[Any]) -> Self: ... + def union(self, other: set[Any]) -> set[Any]: ... + def __or__(self, other: set[Any]) -> set[Any]: ... + __ror__ = __or__ + def __ior__(self, other: set[Any]) -> Self: ... + def update(self, items: Iterable[Any]) -> None: ... + def discard(self, items: Iterable[Any]) -> None: ... + def symmetric_difference(self, other: set[Any]) -> set[Any]: ... + def __xor__(self, other: set[Any]) -> set[Any]: ... + __rxor__ = __xor__ + def symmetric_difference_update(self, other: set[Any]) -> None: ... + def isdisjoint(self, other: set[Any]) -> bool: ... + def issubset(self, other: set[Any]) -> bool: ... + def __le__(self, other: set[Any]) -> bool: ... + def __lt__(self, other: set[Any]) -> bool: ... + def issuperset(self, other: set[Any]) -> bool: ... + def __ge__(self, other: set[Any]) -> bool: ... + def __gt__(self, other: set[Any]) -> bool: ... + def difference(self, other: set[Any]) -> set[Any]: ... + def __sub__(self, other: set[Any]) -> set[Any]: ... + def __rsub__(self, other: set[Any]) -> set[Any]: ... + def difference_update(self, other: set[Any]) -> None: ... + def __isub__(self, other: set[Any]) -> Self: ... + def __len__(self) -> int: ... + def __iter__(self) -> Iterator[Any]: ... + def __bool__(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/socketutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/socketutils.pyi new file mode 100644 index 000000000..30b438e68 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/socketutils.pyi @@ -0,0 +1,72 @@ +import socket +from _typeshed import ReadableBuffer, SliceableBuffer + +DEFAULT_TIMEOUT: int +DEFAULT_MAXSIZE: int + +class BufferedSocket: + sock: socket.socket + rbuf: bytes + sbuf: list[SliceableBuffer] + maxsize: int + timeout: int + def __init__(self, sock: socket.socket, timeout: int = ..., maxsize: int = 32768, recvsize: int = ...) -> None: ... + def settimeout(self, timeout: float) -> None: ... + def gettimeout(self) -> float: ... + def setblocking(self, blocking: bool) -> None: ... + def setmaxsize(self, maxsize) -> None: ... + def getrecvbuffer(self) -> bytes: ... + def getsendbuffer(self) -> bytes: ... + def recv(self, size: int, flags: int = 0, timeout: float = ...) -> bytes: ... + def peek(self, size: int, timeout: float = ...) -> bytes: ... + def recv_close(self, timeout: float = ..., maxsize: int = ...) -> bytes: ... + def recv_until( + self, delimiter: ReadableBuffer, timeout: float = ..., maxsize: int = ..., with_delimiter: bool = False + ) -> bytes: ... + def recv_size(self, size: int, timeout: float = ...) -> bytes: ... + def send(self, data: SliceableBuffer, flags: int = 0, timeout: float = ...) -> str: ... + def sendall(self, data: SliceableBuffer, flags: int = 0, timeout: float = ...) -> str: ... + def flush(self) -> None: ... + def buffer(self, data: SliceableBuffer) -> None: ... + def getsockname(self) -> str: ... + def getpeername(self) -> str: ... + def getsockopt(self, level: int, optname: int, buflen: int | None = None) -> bytes | int: ... + def setsockopt(self, level: int, optname: int, value: int | ReadableBuffer | None) -> bytes | int: ... + @property + def type(self) -> int: ... + @property + def family(self) -> int: ... + @property + def proto(self) -> int: ... + def fileno(self) -> int: ... + rbuf_unconsumed: bytes + def close(self) -> None: ... + def shutdown(self, how: int) -> None: ... + +class Error(socket.error): ... +class ConnectionClosed(Error): ... + +class MessageTooLong(Error): + def __init__(self, bytes_read: int | None = None, delimiter: str | None = None) -> None: ... + +class Timeout(socket.timeout, Error): + def __init__(self, timeout: float, extra: str = "") -> None: ... + +class NetstringSocket: + bsock: BufferedSocket + timeout: float + maxsize: int + def __init__(self, sock: socket.socket, timeout: float = 10, maxsize: int = 32768) -> None: ... + def fileno(self) -> int: ... + def settimeout(self, timeout: float) -> None: ... + def setmaxsize(self, maxsize: int) -> None: ... + def read_ns(self, timeout: float = ..., maxsize: int = ...): ... + def write_ns(self, payload: bytes) -> None: ... + +class NetstringProtocolError(Error): ... + +class NetstringInvalidSize(NetstringProtocolError): + def __init__(self, msg: str) -> None: ... + +class NetstringMessageTooLong(NetstringProtocolError): + def __init__(self, size: int, maxsize: int) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/statsutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/statsutils.pyi new file mode 100644 index 000000000..5697064a9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/statsutils.pyi @@ -0,0 +1,62 @@ +from _typeshed import Incomplete +from collections.abc import Callable, Iterator +from typing import Any + +class _StatsProperty: + name: str + func: Callable[..., Any] + internal_name: str + __doc__: str | None + def __init__(self, name: str, func: Callable[..., Any]) -> None: ... + def __get__(self, obj: object, objtype: Any | None = None) -> Any: ... + +class Stats: + data: list[float] + default: float + def __init__(self, data: list[float], default: float = 0.0, use_copy: bool = True, is_sorted: bool = False) -> None: ... + def __len__(self) -> int: ... + def __iter__(self) -> Iterator[float]: ... + def clear_cache(self) -> None: ... + count: _StatsProperty + mean: _StatsProperty + max: _StatsProperty + min: _StatsProperty + median: _StatsProperty + iqr: _StatsProperty + trimean: _StatsProperty + variance: _StatsProperty + std_dev: _StatsProperty + median_abs_dev: _StatsProperty + mad: _StatsProperty + rel_std_dev: _StatsProperty + skewness: _StatsProperty + kurtosis: _StatsProperty + pearson_type: _StatsProperty + def get_quantile(self, q: float) -> float: ... + def get_zscore(self, value: float) -> float: ... + def trim_relative(self, amount: float = 0.15) -> None: ... + def get_histogram_counts(self, bins: int | None = None, **kw) -> int: ... + def format_histogram(self, bins: int | None = None, **kw) -> str: ... + def describe( + self, quantiles: list[float] | None = None, format: str | None = None + ) -> dict[str, float] | list[float] | str: ... + +def describe( + data: list[float], quantiles: list[float] | None = None, format: str | None = None +) -> dict[str, float] | list[float] | str: ... + +mean: Incomplete +median: Incomplete +iqr: Incomplete +trimean: Incomplete +variance: Incomplete +std_dev: Incomplete +median_abs_dev: Incomplete +rel_std_dev: Incomplete +skewness: Incomplete +kurtosis: Incomplete +pearson_type: Incomplete + +def format_histogram_counts( + bin_counts: list[float], width: int | None = None, format_bin: Callable[..., Any] | None = None +) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/strutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/strutils.pyi new file mode 100644 index 000000000..9519a95e4 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/strutils.pyi @@ -0,0 +1,64 @@ +from collections.abc import Callable, Generator, Iterable +from html.parser import HTMLParser +from typing import Any, TypeVar + +_KT = TypeVar("_KT") +_VT = TypeVar("_VT") + +unichr = chr + +def camel2under(camel_string: str) -> str: ... +def under2camel(under_string: str) -> str: ... +def slugify(text: str, delim: str = "_", lower: bool = True, ascii: bool = False) -> str: ... +def split_punct_ws(text: str) -> str: ... +def unit_len(sized_iterable: Iterable[Any], unit_noun: str = "item") -> str: ... +def ordinalize(number: int | str, ext_only: bool = False) -> str: ... +def cardinalize(unit_noun: str, count: int) -> str: ... +def singularize(word: str) -> str: ... +def pluralize(word: str) -> str: ... +def find_hashtags(string: str) -> list[str]: ... +def a10n(string: str) -> str: ... +def strip_ansi(text: str) -> str: ... +def asciify(text: str, ignore: bool = False): ... +def is_ascii(text: str) -> bool: ... + +class DeaccenterDict(dict[_KT, _VT]): + def __missing__(self, key: _KT) -> _VT: ... + def __getitem__(self, key: _KT) -> _VT: ... + +def bytes2human(nbytes: int, ndigits: int = 0) -> str: ... + +class HTMLTextExtractor(HTMLParser): + strict: bool + convert_charrefs: bool + result: list[str] + def __init__(self) -> None: ... + def handle_data(self, d: str) -> None: ... + def handle_charref(self, number: str) -> None: ... + def handle_entityref(self, name: str) -> None: ... + def get_text(self) -> str: ... + +def html2text(html: str) -> str: ... +def gunzip_bytes(bytestring: bytes) -> bytes: ... +def gzip_bytes(bytestring: bytes, level: int = 6) -> int: ... +def iter_splitlines(text: str) -> Generator[str, None, None]: ... +def indent(text: str, margin: str, newline: str = "\n", key: Callable[..., bool] = ...) -> str: ... +def is_uuid(obj, version: int = 4) -> bool: ... +def escape_shell_args(args: list[str], sep: str = " ", style: str | None = None) -> str: ... +def args2sh(args: list[str], sep: str = " ") -> str: ... +def args2cmd(args: list[str], sep: str = " ") -> str: ... +def parse_int_list(range_string: str, delim: str = ",", range_delim: str = "-") -> list[int]: ... +def format_int_list(int_list: list[int], delim: str = ",", range_delim: str = "-", delim_space: bool = False) -> str: ... + +class MultiReplace: + group_map: dict[str, str] + combined_pattern: str + def __init__(self, sub_map: dict[str, str], **kwargs) -> None: ... + def sub(self, text: str) -> str: ... + +def multi_replace(text: str, sub_map: dict[str, str], **kwargs) -> str: ... +def unwrap_text(text: str, ending: str = "\n\n") -> str: ... + +# Names in __all__ with no definition: +# int_list_complement +# int_list_to_int_tuples diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/tableutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/tableutils.pyi new file mode 100644 index 000000000..ce6d5b72f --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/tableutils.pyi @@ -0,0 +1,63 @@ +from _typeshed import Incomplete + +class UnsupportedData(TypeError): ... + +class InputType: + def __init__(self, *a, **kw) -> None: ... + def get_entry_seq(self, data_seq, headers): ... + +class DictInputType(InputType): + def check_type(self, obj): ... + def guess_headers(self, obj): ... + def get_entry(self, obj, headers): ... + def get_entry_seq(self, obj, headers): ... + +class ObjectInputType(InputType): + def check_type(self, obj): ... + def guess_headers(self, obj): ... + def get_entry(self, obj, headers): ... + +class ListInputType(InputType): + def check_type(self, obj): ... + def guess_headers(self, obj) -> None: ... + def get_entry(self, obj, headers): ... + def get_entry_seq(self, obj_seq, headers): ... + +class TupleInputType(InputType): + def check_type(self, obj): ... + def guess_headers(self, obj) -> None: ... + def get_entry(self, obj, headers): ... + def get_entry_seq(self, obj_seq, headers): ... + +class NamedTupleInputType(InputType): + def check_type(self, obj): ... + def guess_headers(self, obj): ... + def get_entry(self, obj, headers): ... + def get_entry_seq(self, obj_seq, headers): ... + +class Table: + headers: Incomplete + metadata: Incomplete + def __init__(self, data: Incomplete | None = None, headers=..., metadata: Incomplete | None = None) -> None: ... + def extend(self, data) -> None: ... + @classmethod + def from_dict(cls, data, headers=..., max_depth: int = 1, metadata: Incomplete | None = None): ... + @classmethod + def from_list(cls, data, headers=..., max_depth: int = 1, metadata: Incomplete | None = None): ... + @classmethod + def from_object(cls, data, headers=..., max_depth: int = 1, metadata: Incomplete | None = None): ... + @classmethod + def from_data(cls, data, headers=..., max_depth: int = 1, **kwargs): ... + def __len__(self): ... + def __getitem__(self, idx): ... + def to_html( + self, + orientation: Incomplete | None = None, + wrapped: bool = True, + with_headers: bool = True, + with_newlines: bool = True, + with_metadata: bool = False, + max_depth: int = 1, + ): ... + def get_cell_html(self, value): ... + def to_text(self, with_headers: bool = True, maxlen: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/tbutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/tbutils.pyi new file mode 100644 index 000000000..b0129b623 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/tbutils.pyi @@ -0,0 +1,85 @@ +from collections.abc import Iterator +from types import FrameType, TracebackType +from typing import Any +from typing_extensions import Self + +class Callpoint: + func_name: str + lineno: int + module_name: str + module_path: str + lasti: int + line: str + def __init__( + self, module_name: str, module_path: str, func_name: str, lineno: int, lasti: int, line: str | None = None + ) -> None: ... + def to_dict(self) -> dict[str, object]: ... + @classmethod + def from_current(cls, level: int = 1) -> Self: ... + @classmethod + def from_frame(cls, frame: FrameType) -> Self: ... + @classmethod + def from_tb(cls, tb: TracebackType) -> Self: ... + def tb_frame_str(self) -> str: ... + +class TracebackInfo: + callpoint_type: type[Callpoint] + frames: list[FrameType] + def __init__(self, frames: list[FrameType]) -> None: ... + @classmethod + def from_frame(cls, frame: FrameType | None = None, level: int = 1, limit: int | None = None) -> Self: ... + @classmethod + def from_traceback(cls, tb: TracebackType | None = None, limit: int | None = None) -> Self: ... + @classmethod + def from_dict(cls, d: dict[str, list[FrameType]]) -> Self: ... + def to_dict(self) -> dict[str, list[FrameType]]: ... + def __len__(self) -> int: ... + def __iter__(self) -> Iterator[FrameType]: ... + def get_formatted(self) -> str: ... + +class ExceptionInfo: + tb_info_type: type[TracebackInfo] + exc_type: str + exc_msg: str + tb_info: TracebackInfo + def __init__(self, exc_type: str, exc_msg: str, tb_info: TracebackInfo) -> None: ... + @classmethod + def from_exc_info(cls, exc_type: str, exc_value: Any, traceback: TracebackType) -> Self: ... + @classmethod + def from_current(cls) -> Self: ... + def to_dict(self) -> dict[str, str | dict[str, list[FrameType]]]: ... + def get_formatted(self) -> str: ... + def get_formatted_exception_only(self) -> str: ... + +class ContextualCallpoint(Callpoint): + local_reprs: dict[Any, Any] + pre_lines: list[str] + post_lines: list[str] + def __init__(self, *a, **kw) -> None: ... + @classmethod + def from_frame(cls, frame: FrameType) -> Self: ... + @classmethod + def from_tb(cls, tb: TracebackType) -> Self: ... + def to_dict(self) -> dict[str, Any]: ... + +class ContextualTracebackInfo(TracebackInfo): + callpoint_type: type[ContextualCallpoint] + +class ContextualExceptionInfo(ExceptionInfo): + tb_info_type: type[ContextualTracebackInfo] + +def print_exception(etype: str, value: Any, tb: TracebackType, limit: int | None = None, file: str | None = None) -> None: ... + +class ParsedException: + exc_type: str + exc_msg: str + frames: list[FrameType] + def __init__(self, exc_type_name: str, exc_msg: str, frames: list[FrameType] | None = None) -> None: ... + @property + def source_file(self) -> str | None: ... + def to_dict(self) -> dict[str, str | list[FrameType]]: ... + def to_string(self) -> str: ... + @classmethod + def from_string(cls, tb_str: str) -> Self: ... + +ParsedTB = ParsedException diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/timeutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/timeutils.pyi new file mode 100644 index 000000000..cf5dd4ab0 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/timeutils.pyi @@ -0,0 +1,62 @@ +from collections.abc import Generator +from datetime import date, datetime, timedelta, tzinfo + +def total_seconds(td: timedelta) -> float: ... +def dt_to_timestamp(dt: datetime) -> int: ... +def isoparse(iso_str: str) -> datetime: ... +def parse_timedelta(text: str) -> timedelta: ... + +parse_td = parse_timedelta + +def decimal_relative_time( + d: datetime, other: datetime | None = None, ndigits: int = 0, cardinalize: bool = True +) -> tuple[float, str]: ... +def relative_time(d: datetime, other: datetime | None = None, ndigits: int = 0) -> str: ... +def strpdate(string: str, format: str) -> date: ... +def daterange(start: date, stop: date, step: int = 1, inclusive: bool = False) -> Generator[date, None, None]: ... + +ZERO: timedelta +HOUR: timedelta + +class ConstantTZInfo(tzinfo): + name: str + offset: timedelta + def __init__(self, name: str = "ConstantTZ", offset: timedelta = ...) -> None: ... + @property + def utcoffset_hours(self) -> str: ... + def utcoffset(self, dt: datetime | None) -> timedelta: ... + def tzname(self, dt: datetime | None) -> str: ... + def dst(self, dt: datetime | None) -> timedelta: ... + +UTC: ConstantTZInfo +EPOCH_AWARE: datetime +EPOCH_NAIVE: datetime + +class LocalTZInfo(tzinfo): + def is_dst(self, dt: datetime) -> bool: ... + def utcoffset(self, dt: datetime | None) -> timedelta: ... + def dst(self, dt: datetime | None) -> timedelta: ... + def tzname(self, dt: datetime | None) -> str: ... + +LocalTZ: LocalTZInfo +DSTSTART_2007: datetime +DSTEND_2007: datetime +DSTSTART_1987_2006: datetime +DSTEND_1987_2006: datetime +DSTSTART_1967_1986: datetime +DSTEND_1967_1986: datetime + +class USTimeZone(tzinfo): + stdoffset: timedelta + reprname: str + stdname: str + dstname: str + def __init__(self, hours: int, reprname: str, stdname: str, dstname: str) -> None: ... + def tzname(self, dt: datetime | None) -> str: ... + def utcoffset(self, dt: datetime | None) -> timedelta: ... + def dst(self, dt: datetime | None) -> timedelta: ... + +Eastern: USTimeZone +Central: USTimeZone +Mountain: USTimeZone +Pacific: USTimeZone diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/typeutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/typeutils.pyi new file mode 100644 index 000000000..bfb0980d5 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/typeutils.pyi @@ -0,0 +1,10 @@ +from typing import Any + +def make_sentinel(name: str = "_MISSING", var_name: str | None = None) -> object: ... +def issubclass(subclass: type, baseclass: type) -> bool: ... +def get_all_subclasses(cls: type) -> list[type]: ... + +class classproperty: + fn: Any + def __init__(self, fn) -> None: ... + def __get__(self, instance, cls): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/urlutils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/urlutils.pyi new file mode 100644 index 000000000..93cba19ed --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/boltons/urlutils.pyi @@ -0,0 +1,86 @@ +from _typeshed import Incomplete + +from boltons.dictutils import OrderedMultiDict + +SCHEME_PORT_MAP: Incomplete +NO_NETLOC_SCHEMES: Incomplete + +class URLParseError(ValueError): ... + +DEFAULT_ENCODING: str + +def to_unicode(obj: object) -> str: ... +def find_all_links(text, with_text: bool = False, default_scheme: str = "https", schemes=()): ... +def quote_path_part(text, full_quote: bool = True): ... +def quote_query_part(text, full_quote: bool = True): ... +def quote_fragment_part(text, full_quote: bool = True): ... +def quote_userinfo_part(text, full_quote: bool = True): ... +def unquote(string, encoding: str = "utf-8", errors: str = "replace"): ... +def unquote_to_bytes(string): ... +def register_scheme(text, uses_netloc: Incomplete | None = None, default_port: Incomplete | None = None) -> None: ... +def resolve_path_parts(path_parts): ... + +class cachedproperty: + __doc__: Incomplete + func: Incomplete + def __init__(self, func) -> None: ... + def __get__(self, obj, objtype: Incomplete | None = None): ... + +class URL: + scheme: Incomplete + username: Incomplete + password: Incomplete + family: Incomplete + host: Incomplete + port: Incomplete + path_parts: Incomplete + fragment: Incomplete + def __init__(self, url: str = "") -> None: ... + @classmethod + def from_parts( + cls, + scheme: Incomplete | None = None, + host: Incomplete | None = None, + path_parts=(), + query_params=(), + fragment: str = "", + port: Incomplete | None = None, + username: Incomplete | None = None, + password: Incomplete | None = None, + ): ... + query_params: Incomplete + qp: Incomplete + @property + def path(self): ... + @path.setter + def path(self, path_text) -> None: ... + @property + def uses_netloc(self): ... + @property + def default_port(self): ... + def normalize(self, with_case: bool = True) -> None: ... + def navigate(self, dest): ... + def get_authority(self, full_quote: bool = False, with_userinfo: bool = False): ... + def to_text(self, full_quote: bool = False): ... + def __unicode__(self): ... + def __eq__(self, other): ... + def __ne__(self, other): ... + +def parse_host(host): ... +def parse_url(url_text): ... + +DEFAULT_PARSED_URL: Incomplete + +def parse_qsl(qs, keep_blank_values: bool = True, encoding="utf8"): ... + +PREV: Incomplete +NEXT: Incomplete +KEY: Incomplete +VALUE: Incomplete +SPREV: Incomplete +SNEXT: Incomplete + +class QueryParamDict(OrderedMultiDict[Incomplete, Incomplete]): + @classmethod + def from_text(cls, query_string): ... + def to_text(self, full_quote: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/boto/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..e5fa8bd1d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/@tests/stubtest_allowlist.txt @@ -0,0 +1,9 @@ +boto.connection.AWSQueryConnection.make_request +boto.elb +boto.kms.layer1.KMSConnection.make_request +boto.s3.S3RegionInfo.connect +boto.s3.bucket.Bucket.get_location +boto.s3.bucket.Bucket.get_tags +boto.s3.bucket.Bucket.get_xml_tags +boto.s3.connection.S3Connection.make_request +boto.utils.LazyLoadMetadata.get diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/braintree/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..f40932c48 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +.*\.AttributeGetter.__repr__ # has an extra argument, but also a million things inherit from it diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml index 04a023450..ad13d437b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.19.*" +version = "4.20.*" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cachetools/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/cachetools/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..077ad4553 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/cachetools/@tests/stubtest_allowlist.txt @@ -0,0 +1,22 @@ +cachetools.Cache.get + +# stubs omit defaulted arguments that are meant to be optimizations, not provided by user +cachetools.FIFOCache.__delitem__ +cachetools.FIFOCache.__setitem__ +cachetools.LFUCache.__delitem__ +cachetools.LFUCache.__getitem__ +cachetools.LFUCache.__setitem__ +cachetools.LRUCache.__delitem__ +cachetools.LRUCache.__getitem__ +cachetools.LRUCache.__setitem__ +cachetools.MRUCache.__delitem__ +cachetools.MRUCache.__getitem__ +cachetools.MRUCache.__setitem__ +cachetools.TLRUCache.__delitem__ +cachetools.TLRUCache.__getitem__ +cachetools.TLRUCache.__setitem__ +cachetools.TTLCache.__delitem__ +cachetools.TTLCache.__getitem__ +cachetools.TTLCache.__setitem__ +cachetools._TimedCache.__len__ +cachetools._TimedCache.__repr__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/caldav/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..293f7da8b --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/@tests/stubtest_allowlist.txt @@ -0,0 +1,13 @@ +# **kwargs replaced with actual arguments in stubs +caldav.DAVClient.calendar +caldav.DAVClient.principal +caldav.davclient.DAVClient.calendar +caldav.davclient.DAVClient.principal + +# Initialized in class, but immediately overwritten in __init__ +caldav.DAVClient.url +caldav.davclient.DAVClient.url +caldav.davclient.DAVResponse.headers +caldav.elements.base.BaseElement.children + +.*.findprop diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..908583146 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist.txt @@ -0,0 +1,4 @@ +# added dynamically and not detected by stubtest +cffi.(api.)?FFI.CData +cffi.(api.)?FFI.CType +cffi.(api.)?FFI.buffer diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist_darwin.txt b/packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist_darwin.txt new file mode 100644 index 000000000..55d4b889a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist_darwin.txt @@ -0,0 +1,2 @@ +# Technically exists on all OSs, but crashes on all but Windows. So we hide it in stubs +cffi.(api.)?FFI.getwinerror diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..55d4b889a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,2 @@ +# Technically exists on all OSs, but crashes on all but Windows. So we hide it in stubs +cffi.(api.)?FFI.getwinerror diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml index e7239b079..3a9cb22e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml @@ -1,4 +1,5 @@ version = "1.15.*" +requires = ["types-setuptools"] [tool.stubtest] # linux and darwin are mostly equivalent, except for a single `RTLD_DEEPBIND` variable diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi index 770751128..85478ce66 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/cffi/api.pyi @@ -1,4 +1,3 @@ -import distutils.core import sys import types from _typeshed import Incomplete, ReadableBuffer, WriteableBuffer @@ -7,6 +6,7 @@ from typing import Any, TypeVar, overload from typing_extensions import Literal, TypeAlias import _cffi_backend +from setuptools._distutils.extension import Extension _T = TypeVar("_T") @@ -93,7 +93,7 @@ class FFI: def set_source_pkgconfig( self, module_name: str, pkgconfig_libs: list[str], source: str, source_extension: str = ".c", **kwds: Any ) -> None: ... - def distutils_extension(self, tmpdir: str = "build", verbose: bool = True) -> distutils.core.Extension: ... + def distutils_extension(self, tmpdir: str = "build", verbose: bool = True) -> Extension: ... def emit_c_code(self, filename: str) -> None: ... def emit_python_code(self, filename: str) -> None: ... def compile(self, tmpdir: str = ".", verbose: int = 0, target: str | None = None, debug: bool | None = None) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml deleted file mode 100644 index 7e95f1f53..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/METADATA.toml +++ /dev/null @@ -1,6 +0,0 @@ -version = "5.0.*" -obsolete_since = "5.1.0" # Released on 2022-12-01 -partial_stub = true - -[tool.stubtest] -ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi deleted file mode 100644 index 6a87f3434..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/__init__.pyi +++ /dev/null @@ -1,16 +0,0 @@ -from typing_extensions import TypedDict - -from .universaldetector import UniversalDetector as UniversalDetector, _FinalResultType, _IntermediateResultType -from .version import VERSION as VERSION, __version__ as __version__ - -# unused in this module, but imported in multiple submodules -class _LangModelType(TypedDict): # noqa: Y049 - char_to_order_map: tuple[int, ...] - precedence_matrix: tuple[int, ...] - typical_positive_ratio: float - keep_english_letter: bool - charset_name: str - language: str - -def detect(byte_str: bytes | bytearray) -> _FinalResultType: ... -def detect_all(byte_str: bytes | bytearray, ignore_threshold: bool = False) -> list[_IntermediateResultType]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi deleted file mode 100644 index 71c9e10c6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/enums.pyi +++ /dev/null @@ -1,39 +0,0 @@ -class InputState: - PURE_ASCII: int - ESC_ASCII: int - HIGH_BYTE: int - -class LanguageFilter: - CHINESE_SIMPLIFIED: int - CHINESE_TRADITIONAL: int - JAPANESE: int - KOREAN: int - NON_CJK: int - ALL: int - CHINESE: int - CJK: int - -class ProbingState: - DETECTING: int - FOUND_IT: int - NOT_ME: int - -class MachineState: - START: int - ERROR: int - ITS_ME: int - -class SequenceLikelihood: - NEGATIVE: int - UNLIKELY: int - LIKELY: int - POSITIVE: int - @classmethod - def get_num_categories(cls) -> int: ... - -class CharacterCategory: - UNDEFINED: int - LINE_BREAK: int - SYMBOL: int - DIGIT: int - CONTROL: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi deleted file mode 100644 index 07344de5c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langbulgarianmodel.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from . import _LangModelType - -Latin5_BulgarianCharToOrderMap: tuple[int, ...] -win1251BulgarianCharToOrderMap: tuple[int, ...] -BulgarianLangModel: tuple[int, ...] -Latin5BulgarianModel: _LangModelType -Win1251BulgarianModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi deleted file mode 100644 index 22e7c52dc..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langcyrillicmodel.pyi +++ /dev/null @@ -1,15 +0,0 @@ -from . import _LangModelType - -KOI8R_char_to_order_map: tuple[int, ...] -win1251_char_to_order_map: tuple[int, ...] -latin5_char_to_order_map: tuple[int, ...] -macCyrillic_char_to_order_map: tuple[int, ...] -IBM855_char_to_order_map: tuple[int, ...] -IBM866_char_to_order_map: tuple[int, ...] -RussianLangModel: tuple[int, ...] -Koi8rModel: _LangModelType -Win1251CyrillicModel: _LangModelType -Latin5CyrillicModel: _LangModelType -MacCyrillicModel: _LangModelType -Ibm866Model: _LangModelType -Ibm855Model: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi deleted file mode 100644 index ceee125a2..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langgreekmodel.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from . import _LangModelType - -Latin7_char_to_order_map: tuple[int, ...] -win1253_char_to_order_map: tuple[int, ...] -GreekLangModel: tuple[int, ...] -Latin7GreekModel: _LangModelType -Win1253GreekModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi deleted file mode 100644 index a17e10de3..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhebrewmodel.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from . import _LangModelType - -WIN1255_CHAR_TO_ORDER_MAP: tuple[int, ...] -HEBREW_LANG_MODEL: tuple[int, ...] -Win1255HebrewModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi deleted file mode 100644 index 498c7da58..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langhungarianmodel.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from . import _LangModelType - -Latin2_HungarianCharToOrderMap: tuple[int, ...] -win1250HungarianCharToOrderMap: tuple[int, ...] -HungarianLangModel: tuple[int, ...] -Latin2HungarianModel: _LangModelType -Win1250HungarianModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi deleted file mode 100644 index eee2356e8..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langthaimodel.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from . import _LangModelType - -TIS620CharToOrderMap: tuple[int, ...] -ThaiLangModel: tuple[int, ...] -TIS620ThaiModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi deleted file mode 100644 index 6686f262d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/langturkishmodel.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from . import _LangModelType - -Latin5_TurkishCharToOrderMap: tuple[int, ...] -TurkishLangModel: tuple[int, ...] -Latin5TurkishModel: _LangModelType diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi deleted file mode 100644 index 79dc7130d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/universaldetector.pyi +++ /dev/null @@ -1,29 +0,0 @@ -from logging import Logger -from re import Pattern -from typing_extensions import TypedDict - -class _FinalResultType(TypedDict): - encoding: str - confidence: float - language: str - -class _IntermediateResultType(TypedDict): - encoding: str | None - confidence: float - language: str | None - -class UniversalDetector: - MINIMUM_THRESHOLD: float - HIGH_BYTE_DETECTOR: Pattern[bytes] - ESC_DETECTOR: Pattern[bytes] - WIN_BYTE_DETECTOR: Pattern[bytes] - ISO_WIN_MAP: dict[str, str] - - result: _IntermediateResultType - done: bool - lang_filter: int - logger: Logger - def __init__(self, lang_filter: int = 31) -> None: ... - def reset(self) -> None: ... - def feed(self, byte_str: bytes | bytearray) -> None: ... - def close(self) -> _FinalResultType: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi b/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi deleted file mode 100644 index 966073bd2..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/chardet/chardet/version.pyi +++ /dev/null @@ -1,2 +0,0 @@ -__version__: str -VERSION: list[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/colorama/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/colorama/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..cee2f1962 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/colorama/@tests/stubtest_allowlist.txt @@ -0,0 +1,46 @@ +# These are defined as ints, but later are converted to strings via magic: +colorama.ansi.AnsiBack.BLACK +colorama.ansi.AnsiBack.BLUE +colorama.ansi.AnsiBack.CYAN +colorama.ansi.AnsiBack.GREEN +colorama.ansi.AnsiBack.LIGHTBLACK_EX +colorama.ansi.AnsiBack.LIGHTBLUE_EX +colorama.ansi.AnsiBack.LIGHTCYAN_EX +colorama.ansi.AnsiBack.LIGHTGREEN_EX +colorama.ansi.AnsiBack.LIGHTMAGENTA_EX +colorama.ansi.AnsiBack.LIGHTRED_EX +colorama.ansi.AnsiBack.LIGHTWHITE_EX +colorama.ansi.AnsiBack.LIGHTYELLOW_EX +colorama.ansi.AnsiBack.MAGENTA +colorama.ansi.AnsiBack.RED +colorama.ansi.AnsiBack.RESET +colorama.ansi.AnsiBack.WHITE +colorama.ansi.AnsiBack.YELLOW +colorama.ansi.AnsiFore.BLACK +colorama.ansi.AnsiFore.BLUE +colorama.ansi.AnsiFore.CYAN +colorama.ansi.AnsiFore.GREEN +colorama.ansi.AnsiFore.LIGHTBLACK_EX +colorama.ansi.AnsiFore.LIGHTBLUE_EX +colorama.ansi.AnsiFore.LIGHTCYAN_EX +colorama.ansi.AnsiFore.LIGHTGREEN_EX +colorama.ansi.AnsiFore.LIGHTMAGENTA_EX +colorama.ansi.AnsiFore.LIGHTRED_EX +colorama.ansi.AnsiFore.LIGHTWHITE_EX +colorama.ansi.AnsiFore.LIGHTYELLOW_EX +colorama.ansi.AnsiFore.MAGENTA +colorama.ansi.AnsiFore.RED +colorama.ansi.AnsiFore.RESET +colorama.ansi.AnsiFore.WHITE +colorama.ansi.AnsiFore.YELLOW +colorama.ansi.AnsiStyle.BRIGHT +colorama.ansi.AnsiStyle.DIM +colorama.ansi.AnsiStyle.NORMAL +colorama.ansi.AnsiStyle.RESET_ALL + +# These are defined as None, but on initialization are set to correct values: +colorama.initialise.wrapped_stderr +colorama.initialise.wrapped_stdout + +# Not planning on writing stubs for tests: +colorama.tests.* diff --git a/packages/pyright-internal/typeshed-fallback/stubs/colorama/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/colorama/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..1fff10610 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/colorama/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,7 @@ +# These are only available on Windows: +colorama.winterm.WinColor +colorama.winterm.WinStyle +colorama.winterm.WinTerm + +# A re-export that's an implementation detail: +colorama.winterm.get_osfhandle diff --git a/packages/pyright-internal/typeshed-fallback/stubs/contextvars/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/contextvars/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..64f8aa01a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/contextvars/@tests/stubtest_allowlist.txt @@ -0,0 +1,4 @@ +contextvars.Context.__init__ +contextvars.Context.get +contextvars.ContextVar.reset +contextvars.ContextVar.set diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..40724a190 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/@tests/stubtest_allowlist.txt @@ -0,0 +1,8 @@ +dateparser.calendars.hijri +dateparser.calendars.hijri_parser +dateparser.calendars.jalali +dateparser.calendars.jalali_parser +dateparser.search.detection.BaseLanguageDetector.iterate_applicable_languages + +# Timezone and other internal data: +dateparser.data.date_translation_data.* diff --git a/packages/pyright-internal/typeshed-fallback/stubs/decorator/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/decorator/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..c256a8ca4 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/decorator/@tests/stubtest_allowlist.txt @@ -0,0 +1,9 @@ +decorator.ContextManager.__init__ +decorator.FunctionMaker.args +decorator.FunctionMaker.kwonlyargs +decorator.FunctionMaker.kwonlydefaults +decorator.FunctionMaker.varargs +decorator.FunctionMaker.varkw +decorator.decorate +decorator.decorator +decorator.get_init diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..9a3c06c24 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +# Loop variable that leaks into the global namespace +dj_database_url.key diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/docutils/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..82dcbd5eb --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/@tests/stubtest_allowlist.txt @@ -0,0 +1,24 @@ +docutils.TransformSpec.unknown_reference_resolvers +docutils.frontend.ConfigParser.__getattr__ +docutils.frontend.ConfigParser.read +docutils.frontend.OptionParser.__getattr__ +docutils.io.FileOutput.__getattr__ +docutils.io.FileOutput.__init__ +docutils.io.Input.__init__ +docutils.languages.LanguageImporter.__getattr__ +docutils.nodes.Element.__getattr__ +docutils.nodes.NodeVisitor.__getattr__ +docutils.nodes.document.__getattr__ +docutils.nodes.document.__init__ +docutils.nodes.Element.__iter__ # doesn't exist at runtime, but the class is iterable due to __getitem__ +docutils.parsers.rst.Directive.__getattr__ +docutils.transforms.Transform.__getattr__ +docutils.transforms.Transformer.__getattr__ +docutils.utils.Reporter.__getattr__ +docutils.parsers.recommonmark_wrapper + +# the constructor appears to be mostly internal API, public API users are meant to use docutils.utils.new_reporter instead +docutils.utils.Reporter.__init__ + +# these methods take a rawsource parameter that has been deprecated and is completely ignored, so we omit it from the stub +docutils.nodes.Text.__new__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/editdistance/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/editdistance/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..ef46eff1a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/editdistance/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +# Not public API -- the submodule is an implementation detail due to it being a cythonized package +editdistance.bycython diff --git a/packages/pyright-internal/typeshed-fallback/stubs/entrypoints/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/entrypoints/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..7bfaa84f2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/entrypoints/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +# staticmethod weirdness: +entrypoints.CaseSensitiveConfigParser.optionxform diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..82f069091 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +bugbear.BugBearChecker.__getattr__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml index 08572dfc9..745fc1a4b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.5.9" +version = "23.6.5" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..c458a5410 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/@tests/stubtest_allowlist.txt @@ -0,0 +1,6 @@ +flake8_plugin_utils +flake8_plugin_utils.plugin +flake8_plugin_utils.utils +flake8_plugin_utils.utils.assertions +flake8_plugin_utils.utils.constants +flake8_plugin_utils.utils.equiv_nodes diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..7675d7912 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/@tests/stubtest_allowlist.txt @@ -0,0 +1,16 @@ +# Argument has default at runtime, but using it raises a TypeError. +fpdf.FPDF.set_creation_date +fpdf.fpdf.FPDF.set_creation_date + +# fonttools shims since we can't import it +fpdf._fonttools_shims + +# Checking the following function crashes stubtest 0.991, but seems to be +# fixed in later versions. +fpdf.FPDF.set_encryption +fpdf.fpdf.FPDF.set_encryption + +# Runtime has some internal arguments. +fpdf.syntax.build_obj_dict +fpdf.ViewerPreferences.serialize +fpdf\.[a-z]+\.[A-Za-z]+\.serialize diff --git a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..a67cb1a30 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/@tests/stubtest_allowlist.txt @@ -0,0 +1,4 @@ +# inconsistency of signatures between stub and implementation (cls vs self) +google.cloud.ndb.ModelAdapter.__new__ +google.cloud.ndb.metadata.EntityGroup.__new__ +google.cloud.ndb.model.ModelAdapter.__new__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..bb9185155 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/@tests/stubtest_allowlist.txt @@ -0,0 +1,6 @@ +# Are set to `None` by default, initialized later: +hdbcli.dbapi.Error.errorcode +hdbcli.dbapi.Error.errortext +hdbcli.dbapi.Warning.errorcode +hdbcli.dbapi.Warning.errortext +hdbcli.dbapi.ExecuteManyErrorEntry.rownumber diff --git a/packages/pyright-internal/typeshed-fallback/stubs/httplib2/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..6b90fbdac --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +# __getattr__() replaced with actual field in stub +httplib2.Response.dict diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..a7ffb9bdc --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/@tests/stubtest_allowlist.txt @@ -0,0 +1,11 @@ +humanfriendly.compat.StringIO.seek +humanfriendly.compat.StringIO.truncate + +# Re-exports: +humanfriendly.usage.import_module +humanfriendly.compat.which +humanfriendly.compat.name2codepoint +humanfriendly.compat.monotonic + +# Tests are not included into stubs: +humanfriendly.tests diff --git a/packages/pyright-internal/typeshed-fallback/stubs/inifile/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/inifile/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..8d212b367 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/inifile/@tests/stubtest_allowlist.txt @@ -0,0 +1,23 @@ +# These are internal use and python 2 compatibility variables and functions +inifile.PY2 +inifile.WIN +inifile.integer_types +inifile.iter_from_file +inifile.iteritems +inifile.reraise +inifile.string_types + +# Attributes that should be treated as read-only and thus are annotated +# with @property +inifile.Dialect.ns_sep +inifile.Dialect.kv_sep +inifile.Dialect.quotes +inifile.Dialect.true +inifile.Dialect.false +inifile.Dialect.comments +inifile.Dialect.allow_escaping +inifile.Dialect.linesep +inifile.IniData.dialect +inifile.IniFile.filename +inifile.IniFile.encoding +inifile.IniFile.is_new diff --git a/packages/pyright-internal/typeshed-fallback/stubs/inifile/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/inifile/METADATA.toml new file mode 100644 index 000000000..582104d3a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/inifile/METADATA.toml @@ -0,0 +1 @@ +version = "0.4.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/inifile/inifile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/inifile/inifile.pyi new file mode 100644 index 000000000..ec8c93226 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/inifile/inifile.pyi @@ -0,0 +1,130 @@ +from _typeshed import StrPath, SupportsKeysAndGetItem +from collections.abc import Container, Iterable, Iterator, Mapping, MutableMapping, Sequence +from typing import TypeVar, overload +from typing_extensions import Literal, TypeAlias +from uuid import UUID + +_T = TypeVar("_T") + +_Token: TypeAlias = ( + tuple[Literal["EMPTY"], str, None] + | tuple[Literal["COMMENT"], str, None] + | tuple[Literal["SECTION"], str, tuple[str, ...]] + | tuple[Literal["KV"], str, tuple[str, str, str]] +) + +def get_app_dir(app_name: str, roaming: bool = ..., force_posix: bool = ...) -> str: ... + +class Dialect: + def __init__( + self, + ns_sep: str = ..., + kv_sep: str = ..., + quotes: Sequence[str] = ..., + true: Sequence[str] = ..., + false: Sequence[str] = ..., + comments: Container[str] = ..., + allow_escaping: bool = ..., + linesep: str | None = ..., + ) -> None: ... + @property + def ns_sep(self) -> str: ... + @property + def kv_sep(self) -> str: ... + @property + def quotes(self) -> Sequence[str]: ... + @property + def true(self) -> Sequence[str]: ... + @property + def false(self) -> Sequence[str]: ... + @property + def comments(self) -> Container[str]: ... + @property + def allow_escaping(self) -> bool: ... + @property + def linesep(self) -> str | None: ... + def get_actual_linesep(self) -> str: ... + def get_strippable_lineseps(self) -> str: ... + def kv_serialize(self, key, val: str | None) -> str | None: ... + def escape(self, value: str, quote: str | None = ...) -> str: ... + def unescape(self, value: str) -> str: ... + def to_string(self, value: bool | float | str) -> str: ... + def dict_from_iterable(self, iterable: Iterable[str]) -> MutableMapping[str, str]: ... + def tokenize(self, iterable: Iterable[str]) -> Iterator[_Token]: ... + def update_tokens( + self, old_tokens: Iterable[_Token], changes: SupportsKeysAndGetItem[str, str] | Iterable[tuple[str, str]] + ) -> list[_Token]: ... + +default_dialect: Dialect + +class IniData(MutableMapping[str, str]): + def __init__(self, mapping: Mapping[str, str] | None = ..., dialect: Dialect | None = ...) -> None: ... + @property + def dialect(self) -> Dialect: ... + @property + def is_dirty(self) -> bool: ... + def get_updated_lines(self, line_iter: Iterable[_Token] | None = ...) -> list[_Token]: ... + def discard(self) -> None: ... + def rollover(self) -> None: ... + def to_dict(self) -> dict[str, str]: ... + def __len__(self) -> int: ... + @overload + def get(self, name: str) -> str | None: ... + @overload + def get(self, name: str, default: _T) -> str | _T: ... + @overload + def get_ascii(self, name: str) -> str | None: ... + @overload + def get_ascii(self, name: str, default: _T) -> str | _T: ... + @overload + def get_bool(self, name: str) -> bool: ... + @overload + def get_bool(self, name: str, default: _T) -> bool | _T: ... + @overload + def get_int(self, name: str) -> int | None: ... + @overload + def get_int(self, name: str, default: _T = ...) -> int | _T: ... + @overload + def get_float(self, name: str) -> float | None: ... + @overload + def get_float(self, name: str, default: _T) -> float | _T: ... + @overload + def get_uuid(self, name: str) -> UUID | None: ... + @overload + def get_uuid(self, name: str, default: _T) -> UUID | _T: ... + def itersections(self) -> Iterator[str]: ... + def sections(self) -> Iterator[str]: ... + def iteritems(self) -> Iterator[tuple[str, str]]: ... + def iterkeys(self) -> Iterator[str]: ... + def itervalues(self) -> Iterator[str]: ... + # NB: keys, items, values currently return a generator, which is + # incompatible with the views returned by Mappings + def items(self) -> Iterator[tuple[str, str]]: ... # type: ignore[override] + def keys(self) -> Iterator[str]: ... # type: ignore[override] + def __iter__(self) -> Iterator[str]: ... + def values(self) -> Iterator[str]: ... # type: ignore[override] + def section_as_dict(self, section: str) -> dict[str, str]: ... + def __getitem__(self, name: str) -> str: ... + def __setitem__(self, name: str, value: str) -> None: ... + def __delitem__(self, name: str) -> None: ... + +class IniFile(IniData): + def __init__(self, filename: StrPath, encoding: str | None = ..., dialect: Dialect | None = ...) -> None: ... + @property + def filename(self) -> str: ... + @property + def encoding(self) -> str | None: ... + @property + def is_new(self) -> bool: ... + def save(self, create_folder: bool = ...) -> None: ... + +class AppIniFile(IniFile): + def __init__( + self, + app_name: str, + filename: StrPath, + roaming: bool = ..., + force_posix: bool = ..., + encoding: str | None = ..., + dialect: Dialect | None = ..., + ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/invoke/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..7ff918e35 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/@tests/stubtest_allowlist.txt @@ -0,0 +1,3 @@ +# Metaclass differs: +invoke.parser.ParseMachine +invoke.parser.parser.ParseMachine diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/@tests/test_cases/check_task.py b/packages/pyright-internal/typeshed-fallback/stubs/invoke/@tests/test_cases/check_task.py new file mode 100644 index 000000000..a56d1488c --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/@tests/test_cases/check_task.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from invoke import Context, task + +# =========================================== +# This snippet is a regression test for #8936 +# =========================================== + + +@task +def docker_build(context: Context) -> None: + pass + + +@task(docker_build) +def docker_push(context: Context) -> None: + pass diff --git a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..c2296909d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist.txt @@ -0,0 +1,5 @@ +# scan_code *should* never be None in real use. This is also according to docs. +keyboard.KeyboardEvent.scan_code +keyboard._keyboard_event.KeyboardEvent.scan_code +# TODO: Should this be allowlisted? +keyboard.__main__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist_darwin.txt b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist_darwin.txt new file mode 100644 index 000000000..cdf3ec0e6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist_darwin.txt @@ -0,0 +1,3 @@ +# Defaults don't align with possible values +keyboard.mouse.on_button +keyboard.mouse.wait diff --git a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..cdf3ec0e6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,3 @@ +# Defaults don't align with possible values +keyboard.mouse.on_button +keyboard.mouse.wait diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mock/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/mock/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..b9f6f499c --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/mock/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +mock.patch +mock.mock.patch diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..4f48c1c4b --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/@tests/stubtest_allowlist.txt @@ -0,0 +1,6 @@ +mypy_extensions.FlexibleAlias +mypy_extensions.TypedDict +mypy_extensions.i64.* +mypy_extensions.i32.* +mypy_extensions.i16.* +mypy_extensions.u8.* diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..fbc91acd6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +MySQLdb.Connection diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..a77ef49fb --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/@tests/stubtest_allowlist.txt @@ -0,0 +1,7 @@ +# Error: is not present in stub +# ============================= +netaddr.core.a # This is a temporary module attribute used to detect python version + +# Error: is not present at runtime +# ================================ +netaddr.ip.iana.XMLRecordParser.__getattr__ # __init__ has `self.__dict__.update(kwargs)` diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..7159ad88b --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +oauthlib.oauth1.rfc5849.parameters.prepare_headers diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..199b32567 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/@tests/stubtest_allowlist.txt @@ -0,0 +1,177 @@ +# "cls" argument has wrong name in implementation. +openpyxl.descriptors.slots.AutoSlotProperties.__new__ + +# Requires numpy to be installed +openpyxl.utils.dataframe + +# Element can be imported from lxml or xml.etree, so the attributes can +# differ at runtime. +openpyxl.xml.functions.Element.* + +# Fake getters +openpyxl\.descriptors\..*\.__get__ + +# Stubtest sees and type[T] as different: https://github.com/python/mypy/issues/13316 +openpyxl.chart.descriptors.NumberFormatDescriptor.expected_type +openpyxl.chart.title.TitleDescriptor.expected_type +openpyxl.drawing.colors.ColorChoiceDescriptor.expected_type +openpyxl.styles.colors.ColorDescriptor.expected_type + +# Stubtest doesn't like generics here +openpyxl\.descriptors\.(base\.)?Bool\.allow_none +openpyxl\.descriptors\.(base\.)?DateTime\.allow_none +openpyxl\.descriptors\.(base\.)?Float\.allow_none +openpyxl\.descriptors\.(base\.)?Integer\.allow_none +openpyxl\.descriptors\.(base\.)?MatchPattern\.allow_none +openpyxl\.descriptors\.(base\.)?Max\.allow_none +openpyxl\.descriptors\.(base\.)?Min\.allow_none +openpyxl\.descriptors\.(base\.)?MinMax\.allow_none +openpyxl\.descriptors\.(base\.)?String\.allow_none +openpyxl\.descriptors\.(base\.)?Typed\.allow_none + +# "has a default value but stub argument does not" +# Runtime has default arguments that would fail + +openpyxl.cell.text.PhoneticProperties.__init__ +openpyxl.cell.text.PhoneticText.__init__ +openpyxl.chart.chartspace.ChartSpace.__init__ +openpyxl.chart.chartspace.ExternalData.__init__ +openpyxl.chart.data_source.NumFmt.__init__ +openpyxl.chart.data_source.NumVal.__init__ +openpyxl.chartsheet.custom.CustomChartsheetView.__init__ +openpyxl.chartsheet.publish.WebPublishItem.__init__ +openpyxl.comments.comment_sheet.CommentSheet.__init__ +openpyxl.comments.comment_sheet.Properties.__init__ +openpyxl.descriptors.excel.Extension.__init__ +openpyxl.drawing.colors.HSLColor.__init__ +openpyxl.drawing.colors.RGBPercent.__init__ +openpyxl.drawing.colors.SchemeColor.__init__ +openpyxl.drawing.connector.Connection.__init__ +openpyxl.drawing.connector.ConnectorNonVisual.__init__ +openpyxl.drawing.connector.ConnectorShape.__init__ +openpyxl.drawing.connector.Shape.__init__ +openpyxl.drawing.connector.ShapeMeta.__init__ +openpyxl.drawing.effect.AlphaBiLevelEffect.__init__ +openpyxl.drawing.effect.AlphaModulateEffect.__init__ +openpyxl.drawing.effect.AlphaModulateFixedEffect.__init__ +openpyxl.drawing.effect.AlphaReplaceEffect.__init__ +openpyxl.drawing.effect.BiLevelEffect.__init__ +openpyxl.drawing.effect.BlurEffect.__init__ +openpyxl.drawing.effect.ColorChangeEffect.__init__ +openpyxl.drawing.effect.EffectContainer.__init__ +openpyxl.drawing.effect.FillOverlayEffect.__init__ +openpyxl.drawing.effect.GlowEffect.__init__ +openpyxl.drawing.effect.HSLEffect.__init__ +openpyxl.drawing.effect.InnerShadowEffect.__init__ +openpyxl.drawing.effect.OuterShadow.__init__ +openpyxl.drawing.effect.PresetShadowEffect.__init__ +openpyxl.drawing.effect.ReflectionEffect.__init__ +openpyxl.drawing.effect.SoftEdgesEffect.__init__ +openpyxl.drawing.fill.LinearShadeProperties.__init__ +openpyxl.drawing.fill.PathShadeProperties.__init__ +openpyxl.drawing.fill.TileInfoProperties.__init__ +openpyxl.drawing.geometry.Backdrop.__init__ +openpyxl.drawing.geometry.Bevel.__init__ +openpyxl.drawing.geometry.Camera.__init__ +openpyxl.drawing.geometry.ConnectionSite.__init__ +openpyxl.drawing.geometry.CustomGeometry2D.__init__ +openpyxl.drawing.geometry.GeomGuide.__init__ +openpyxl.drawing.geometry.LightRig.__init__ +openpyxl.drawing.geometry.Path2D.__init__ +openpyxl.drawing.geometry.Point3D.__init__ +openpyxl.drawing.geometry.PositiveSize2D.__init__ +openpyxl.drawing.geometry.PresetGeometry2D.__init__ +openpyxl.drawing.geometry.Scene3D.__init__ +openpyxl.drawing.geometry.ShapeStyle.__init__ +openpyxl.drawing.geometry.SphereCoords.__init__ +openpyxl.drawing.geometry.StyleMatrixReference.__init__ +openpyxl.drawing.geometry.Vector3D.__init__ +openpyxl.drawing.graphic.GroupShape.__init__ +openpyxl.drawing.properties.NonVisualDrawingProps.__init__ +openpyxl.drawing.properties.NonVisualGroupShape.__init__ +openpyxl.drawing.text.AutonumberBullet.__init__ +openpyxl.drawing.text.Font.__init__ +openpyxl.drawing.text.GeomGuide.__init__ +openpyxl.drawing.text.PresetTextShape.__init__ +openpyxl.drawing.text.TextField.__init__ +openpyxl.drawing.text.TextNormalAutofit.__init__ +openpyxl.packaging.relationship.Relationship.__init__ +openpyxl.packaging.workbook.ChildSheet.__init__ +openpyxl.packaging.workbook.PivotCache.__init__ +openpyxl.pivot.cache.CacheDefinition.__init__ +openpyxl.pivot.cache.CacheField.__init__ +openpyxl.pivot.cache.CacheHierarchy.__init__ +openpyxl.pivot.cache.CacheSource.__init__ +openpyxl.pivot.cache.CalculatedItem.__init__ +openpyxl.pivot.cache.CalculatedMember.__init__ +openpyxl.pivot.cache.DiscretePr.__init__ +openpyxl.pivot.cache.FieldsUsage.__init__ +openpyxl.pivot.cache.FieldUsage.__init__ +openpyxl.pivot.cache.GroupLevel.__init__ +openpyxl.pivot.cache.GroupLevels.__init__ +openpyxl.pivot.cache.GroupMember.__init__ +openpyxl.pivot.cache.GroupMembers.__init__ +openpyxl.pivot.cache.Groups.__init__ +openpyxl.pivot.cache.LevelGroup.__init__ +openpyxl.pivot.cache.MeasureGroup.__init__ +openpyxl.pivot.cache.OLAPSet.__init__ +openpyxl.pivot.cache.OLAPSets.__init__ +openpyxl.pivot.cache.PageItem.__init__ +openpyxl.pivot.cache.PCDKPI.__init__ +openpyxl.pivot.cache.PCDSDTCEntries.__init__ +openpyxl.pivot.cache.PivotDimension.__init__ +openpyxl.pivot.cache.Query.__init__ +openpyxl.pivot.cache.QueryCache.__init__ +openpyxl.pivot.cache.RangeSet.__init__ +openpyxl.pivot.fields.Error.__init__ +openpyxl.pivot.fields.Number.__init__ +openpyxl.pivot.fields.Tuple.__init__ +openpyxl.pivot.fields.TupleList.__init__ +openpyxl.pivot.table.AutoSortScope.__init__ +openpyxl.pivot.table.ChartFormat.__init__ +openpyxl.pivot.table.ConditionalFormat.__init__ +openpyxl.pivot.table.DataField.__init__ +openpyxl.pivot.table.Format.__init__ +openpyxl.pivot.table.HierarchyUsage.__init__ +openpyxl.pivot.table.Location.__init__ +openpyxl.pivot.table.MemberProperty.__init__ +openpyxl.pivot.table.PageField.__init__ +openpyxl.pivot.table.PivotFilter.__init__ +openpyxl.pivot.table.PivotFilters.__init__ +openpyxl.pivot.table.RowColField.__init__ +openpyxl.pivot.table.TableDefinition.__init__ +openpyxl.styles.named_styles._NamedCellStyle.__init__ +openpyxl.styles.numbers.NumberFormat.__init__ +openpyxl.styles.table.TableStyle.__init__ +openpyxl.styles.table.TableStyleElement.__init__ +openpyxl.workbook.defined_name.DefinedName.__init__ +openpyxl.workbook.external_link.external.ExternalCell.__init__ +openpyxl.workbook.external_link.external.ExternalDefinedName.__init__ +openpyxl.workbook.external_link.external.ExternalRow.__init__ +openpyxl.workbook.external_link.external.ExternalSheetData.__init__ +openpyxl.workbook.function_group.FunctionGroup.__init__ +openpyxl.workbook.views.CustomWorkbookView.__init__ +openpyxl.workbook.web.WebPublishObject.__init__ +openpyxl.worksheet.cell_watch.CellWatch.__init__ +openpyxl.worksheet.controls.Control.__init__ +openpyxl.worksheet.controls.ControlProperty.__init__ +openpyxl.worksheet.custom.CustomProperty.__init__ +openpyxl.worksheet.dimensions.RowDimension.__init__ +openpyxl.worksheet.dimensions.SheetDimension.__init__ +openpyxl.worksheet.filters.DateGroupItem.__init__ +openpyxl.worksheet.filters.DynamicFilter.__init__ +openpyxl.worksheet.filters.FilterColumn.__init__ +openpyxl.worksheet.filters.IconFilter.__init__ +openpyxl.worksheet.filters.Top10.__init__ +openpyxl.worksheet.hyperlink.Hyperlink.__init__ +openpyxl.worksheet.ole.ObjectAnchor.__init__ +openpyxl.worksheet.ole.ObjectPr.__init__ +openpyxl.worksheet.ole.OleObject.__init__ +openpyxl.worksheet.print_settings.RowRange.__init__ +openpyxl.worksheet.scenario.InputCells.__init__ +openpyxl.worksheet.scenario.Scenario.__init__ +openpyxl.worksheet.smart_tag.CellSmartTag.__init__ +openpyxl.worksheet.smart_tag.CellSmartTagPr.__init__ +openpyxl.worksheet.smart_tag.CellSmartTags.__init__ +openpyxl.worksheet.table.TableColumn.__init__ +openpyxl.worksheet.table.XMLColumnProps.__init__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/@tests/test_cases/check_base_descriptors.py b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/@tests/test_cases/check_base_descriptors.py new file mode 100644 index 000000000..d9a950c5b --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/@tests/test_cases/check_base_descriptors.py @@ -0,0 +1,392 @@ +# Needed until mypy issues are solved +# pyright: reportUnnecessaryTypeIgnoreComment=false +from __future__ import annotations + +from _typeshed import ReadableBuffer +from datetime import date, datetime, time +from typing import Any, List, Tuple, Union +from typing_extensions import Literal, assert_type + +from openpyxl.descriptors import Strict +from openpyxl.descriptors.base import ( + Bool, + Convertible, + DateTime, + Descriptor, + Float, + Integer, + Length, + MatchPattern, + MinMax, + NoneSet, + Set, + String, + Typed, +) +from openpyxl.descriptors.serialisable import Serialisable + + +class WithDescriptors(Serialisable): + descriptor = Descriptor[str]() + + typed_default = Typed(expected_type=str) + typed_not_none = Typed(expected_type=str, allow_none=False) + typed_none = Typed(expected_type=str, allow_none=True) + + set_tuple = Set(values=("a", 1, 0.0)) + set_list = Set(values=["a", 1, 0.0]) + set_tuple_none = Set(values=("a", 1, 0.0, None)) + + noneset_tuple = NoneSet(values=("a", 1, 0.0)) + noneset_list = NoneSet(values=["a", 1, 0.0]) + + length_tuple = Length[Tuple[str, str]](length=1) # Can't validate tuple length in a generic manner + length_list = Length[List[str]](length=1) + length_invalid = Length[object](length=1) # type: ignore + + match_pattern_str_default = MatchPattern(pattern="") + match_pattern_str = MatchPattern(pattern="", allow_none=False) + match_pattern_str_none = MatchPattern(pattern="", allow_none=True) + match_pattern_bytes_default = MatchPattern(pattern=b"") + match_pattern_bytes = MatchPattern(pattern=b"", allow_none=False) + match_pattern_bytes_none = MatchPattern(pattern=b"", allow_none=True) + + convertible_default = Convertible(expected_type=int) + convertible_not_none = Convertible(expected_type=int, allow_none=False) + convertible_none = Convertible(expected_type=int, allow_none=True) + + # NOTE: min and max params are independent of expected_type since int and floats can always be compared together + minmax_default = MinMax(min=0, max=0) + minmax_float = MinMax(min=0, max=0, expected_type=float, allow_none=False) + minmax_float_none = MinMax(min=0, max=0, expected_type=float, allow_none=True) + minmax_int = MinMax(min=0.0, max=0.0, expected_type=int, allow_none=False) + minmax_int_none = MinMax(min=0.0, max=0.0, expected_type=int, allow_none=True) + + bool_default = Bool() + bool_not_none = Bool(allow_none=False) + bool_none = Bool(allow_none=True) + + datetime_default = DateTime() + datetime_not_none = DateTime(allow_none=False) + datetime_none = DateTime(allow_none=True) + + string_default = String() + string_not_none = String(allow_none=False) + string_none = String(allow_none=True) + + float_default = Float() + float_not_none = Float(allow_none=False) + float_none = Float(allow_none=True) + + integer_default = Integer() + integer_not_none = Integer(allow_none=False) + integer_none = Integer(allow_none=True) + + # Test inferred annotation + assert_type(descriptor, Descriptor[str]) + + assert_type(typed_default, Typed[str, Literal[False]]) + assert_type(typed_not_none, Typed[str, Literal[False]]) + assert_type(typed_none, Typed[str, Literal[True]]) + + assert_type(set_tuple, Set[Union[Literal["a", 1], float]]) # type: ignore[assert-type] # False-positive in mypy + assert_type(set_list, Set[Union[str, int, float]]) # type: ignore[assert-type] # False-positive in mypy # Literals are simplified in non-tuples + assert_type(set_tuple_none, Set[Union[Literal["a", 1, None], float]]) # type: ignore[assert-type] # False-positive in mypy + + assert_type(noneset_tuple, NoneSet[Union[Literal["a", 1], float]]) # type: ignore[assert-type] # False-positive in mypy + assert_type(noneset_list, NoneSet[Union[str, float]]) # type: ignore[assert-type] # False-positive in mypy# int and float are merged in generic unions + + assert_type(length_tuple, Length[Tuple[str, str]]) + assert_type(length_list, Length[List[str]]) + + assert_type(match_pattern_str_default, MatchPattern[str, Literal[False]]) + assert_type(match_pattern_str, MatchPattern[str, Literal[False]]) + assert_type(match_pattern_str_none, MatchPattern[str, Literal[True]]) + assert_type(match_pattern_bytes_default, MatchPattern[ReadableBuffer, Literal[False]]) + assert_type(match_pattern_bytes, MatchPattern[ReadableBuffer, Literal[False]]) + assert_type(match_pattern_bytes_none, MatchPattern[ReadableBuffer, Literal[True]]) + + assert_type(convertible_default, Convertible[int, Literal[False]]) + assert_type(convertible_not_none, Convertible[int, Literal[False]]) + assert_type(convertible_none, Convertible[int, Literal[True]]) + + assert_type(minmax_default, MinMax[float, Literal[False]]) + assert_type(minmax_float, MinMax[float, Literal[False]]) + assert_type(minmax_float_none, MinMax[float, Literal[True]]) + assert_type(minmax_int, MinMax[int, Literal[False]]) + assert_type(minmax_int_none, MinMax[int, Literal[True]]) + + assert_type(bool_default, Bool[Literal[False]]) + assert_type(bool_not_none, Bool[Literal[False]]) + assert_type(bool_none, Bool[Literal[True]]) + + assert_type(datetime_default, DateTime[Literal[False]]) + assert_type(datetime_not_none, DateTime[Literal[False]]) + assert_type(datetime_none, DateTime[Literal[True]]) + + assert_type(string_default, String[Literal[False]]) + assert_type(string_not_none, String[Literal[False]]) + assert_type(string_none, String[Literal[True]]) + + assert_type(float_default, Float[Literal[False]]) + assert_type(float_not_none, Float[Literal[False]]) + assert_type(float_none, Float[Literal[True]]) + + assert_type(integer_default, Integer[Literal[False]]) + assert_type(integer_not_none, Integer[Literal[False]]) + assert_type(integer_none, Integer[Literal[True]]) + + +with_descriptors = WithDescriptors() + + +# Test with missing subclass +class NotSerialisable: + descriptor = Descriptor[Any]() + + +NotSerialisable().descriptor = None # type: ignore + + +# Test with Strict subclass +class WithDescriptorsStrict(Strict): + descriptor = Descriptor[Any]() + + +WithDescriptorsStrict().descriptor = None + + +# Test getters +assert_type(with_descriptors.descriptor, str) + +assert_type(with_descriptors.typed_not_none, str) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.typed_none, Union[str, None]) + +assert_type(with_descriptors.set_tuple, Union[Literal["a", 1], float]) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.set_list, Union[str, int, float]) # type: ignore[assert-type] # False-positive in mypy # Literals are simplified in non-tuples +assert_type(with_descriptors.set_tuple_none, Union[Literal["a", 1, None], float]) # type: ignore[assert-type] # False-positive in mypy + +assert_type(with_descriptors.noneset_tuple, Union[Literal["a", 1], float, None]) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.noneset_list, Union[str, float, None]) # type: ignore[assert-type] # False-positive in mypy # int and float are merged in generic unions + +assert_type(with_descriptors.length_tuple, Tuple[str, str]) +assert_type(with_descriptors.length_list, List[str]) + +assert_type(with_descriptors.match_pattern_str, str) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.match_pattern_str_none, Union[str, None]) +assert_type(with_descriptors.match_pattern_bytes, ReadableBuffer) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.match_pattern_bytes_none, Union[ReadableBuffer, None]) + +assert_type(with_descriptors.convertible_not_none, int) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.convertible_none, Union[int, None]) + +assert_type(with_descriptors.minmax_float, float) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.minmax_float_none, Union[float, None]) +assert_type(with_descriptors.minmax_int, int) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.minmax_int_none, Union[int, None]) + +assert_type(with_descriptors.bool_not_none, bool) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.bool_none, Union[bool, None]) + +assert_type(with_descriptors.datetime_not_none, datetime) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.datetime_none, Union[datetime, None]) + +assert_type(with_descriptors.string_not_none, str) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.string_none, Union[str, None]) + +assert_type(with_descriptors.float_not_none, float) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.float_none, Union[float, None]) + +assert_type(with_descriptors.integer_not_none, int) # type: ignore[assert-type] # False-positive in mypy +assert_type(with_descriptors.integer_none, Union[int, None]) + + +# Test setters (expected type, None, unexpected type) +with_descriptors.descriptor = "" +with_descriptors.descriptor = None # type: ignore +with_descriptors.descriptor = 0 # type: ignore + + +with_descriptors.typed_not_none = "" +with_descriptors.typed_not_none = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.typed_not_none = 0 # type: ignore + +with_descriptors.typed_none = "" +with_descriptors.typed_none = None +with_descriptors.typed_none = 0 # type: ignore + + +# NOTE: Can't check Set for literal int wen used with a float because any int is a vlaid float +with_descriptors.set_tuple = "a" +with_descriptors.set_tuple = 0 +with_descriptors.set_tuple = 0.0 +with_descriptors.set_tuple = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.set_tuple = "none" # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.set_tuple = object() # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy + +with_descriptors.set_list = "a" +with_descriptors.set_list = 0 +with_descriptors.set_list = 0.0 +with_descriptors.set_list = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.set_list = "none" # can't check literals validity +with_descriptors.set_list = object() # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy + +with_descriptors.set_tuple_none = "a" +with_descriptors.set_tuple_none = 0 +with_descriptors.set_tuple_none = 0.0 +with_descriptors.set_tuple_none = None +with_descriptors.set_tuple_none = "none" # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.set_tuple_none = object() # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy + + +with_descriptors.noneset_tuple = "a" +with_descriptors.noneset_tuple = 0 +with_descriptors.noneset_tuple = 0.0 +with_descriptors.noneset_tuple = None +with_descriptors.noneset_tuple = "none" +with_descriptors.noneset_tuple = object() # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy + +with_descriptors.noneset_list = "a" +with_descriptors.noneset_list = 0 +with_descriptors.noneset_list = 0.0 +with_descriptors.noneset_list = None +with_descriptors.noneset_list = "none" +with_descriptors.noneset_list = object() # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy + + +# NOTE: Can't validate tuple length in a generic manner +with_descriptors.length_tuple = ("a", "a") +with_descriptors.length_tuple = None # type: ignore +with_descriptors.length_tuple = ["a", "a"] # type: ignore +with_descriptors.length_tuple = "" # type: ignore + +with_descriptors.length_list = ["a", "a"] +with_descriptors.length_list = None # type: ignore +with_descriptors.length_list = ("a", "a") # type: ignore +with_descriptors.length_list = "" # type: ignore + + +with_descriptors.match_pattern_str = "" +with_descriptors.match_pattern_str = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.match_pattern_str = b"" # type: ignore +with_descriptors.match_pattern_str = 0 # type: ignore + +with_descriptors.match_pattern_str_none = "" +with_descriptors.match_pattern_str_none = None +with_descriptors.match_pattern_str_none = b"" # type: ignore +with_descriptors.match_pattern_str_none = 0 # type: ignore + +with_descriptors.match_pattern_bytes = b"" +with_descriptors.match_pattern_bytes = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.match_pattern_bytes = "" # type: ignore +with_descriptors.match_pattern_bytes = 0 # type: ignore + +with_descriptors.match_pattern_bytes_none = b"" +with_descriptors.match_pattern_bytes_none = None +with_descriptors.match_pattern_bytes_none = "" # type: ignore +with_descriptors.match_pattern_bytes_none = 0 # type: ignore + + +with_descriptors.convertible_not_none = 0 +with_descriptors.convertible_not_none = "0" +with_descriptors.convertible_not_none = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.convertible_not_none = object() # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy + +with_descriptors.convertible_none = 0 +with_descriptors.convertible_none = "0" +with_descriptors.convertible_none = None +with_descriptors.convertible_none = object() # FIXME: False positive(?) in pyright and mypy + + +with_descriptors.minmax_float = 0 +with_descriptors.minmax_float = "0" +with_descriptors.minmax_float = 0.0 +with_descriptors.minmax_float = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.minmax_float = object() # type: ignore + +with_descriptors.minmax_float_none = 0 +with_descriptors.minmax_float_none = "0" +with_descriptors.minmax_float_none = 0.0 +with_descriptors.minmax_float_none = None +with_descriptors.minmax_float_none = object() # type: ignore + +with_descriptors.minmax_int = 0 +with_descriptors.minmax_int = "0" +with_descriptors.minmax_int = 0.0 +with_descriptors.minmax_int = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.minmax_int = object() # type: ignore + +with_descriptors.minmax_int_none = 0 +with_descriptors.minmax_int_none = "0" +with_descriptors.minmax_int_none = 0.0 +with_descriptors.minmax_int_none = None +with_descriptors.minmax_int_none = object() # type: ignore + + +with_descriptors.bool_not_none = False +with_descriptors.bool_not_none = "0" +with_descriptors.bool_not_none = 0 +with_descriptors.bool_not_none = None +with_descriptors.bool_not_none = 0.0 # type: ignore +with_descriptors.bool_not_none = object() # type: ignore + +with_descriptors.bool_none = False +with_descriptors.bool_none = "0" +with_descriptors.bool_none = 0 +with_descriptors.bool_none = None +with_descriptors.bool_none = 0.0 # type: ignore +with_descriptors.bool_none = object() # type: ignore + + +with_descriptors.datetime_not_none = datetime(0, 0, 0) +with_descriptors.datetime_not_none = "" +with_descriptors.datetime_not_none = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.datetime_not_none = 0 # type: ignore +with_descriptors.datetime_not_none = date(0, 0, 0) # type: ignore +with_descriptors.datetime_not_none = time() # type: ignore + +with_descriptors.datetime_none = datetime(0, 0, 0) +with_descriptors.datetime_none = "" +with_descriptors.datetime_none = None +with_descriptors.datetime_none = 0 # type: ignore +with_descriptors.datetime_none = date(0, 0, 0) # type: ignore +with_descriptors.datetime_none = time() # type: ignore + + +with_descriptors.string_not_none = "" +with_descriptors.string_not_none = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.string_not_none = 0 # type: ignore + +with_descriptors.string_none = "" +with_descriptors.string_none = None +with_descriptors.string_none = 0 # type: ignore + + +with_descriptors.float_not_none = 0 +with_descriptors.float_not_none = 0.0 +with_descriptors.float_not_none = "0" +with_descriptors.float_not_none = b"0" +with_descriptors.float_not_none = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.float_not_none = object() # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy + +with_descriptors.float_none = 0 +with_descriptors.float_none = 0.0 +with_descriptors.float_none = "0" +with_descriptors.float_none = b"0" +with_descriptors.float_none = None +with_descriptors.float_none = object() # FIXME: False positive(?) in pyright and mypy + + +with_descriptors.integer_not_none = 0 +with_descriptors.integer_not_none = 0.0 +with_descriptors.integer_not_none = "0" +with_descriptors.integer_not_none = b"0" +with_descriptors.integer_not_none = None # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy +with_descriptors.integer_not_none = object() # pyright: ignore[reportGeneralTypeIssues] # false negative in mypy + +with_descriptors.integer_none = 0 +with_descriptors.integer_none = 0.0 +with_descriptors.integer_none = "0" +with_descriptors.integer_none = b"0" +with_descriptors.integer_none = None +with_descriptors.integer_none = object() # FIXME: False positive(?) in pyright and mypy diff --git a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..7c96a3405 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/@tests/stubtest_allowlist.txt @@ -0,0 +1,4 @@ +opentracing.harness.api_check +opentracing.harness.scope_check +opentracing.scope_managers.gevent +opentracing.scope_managers.tornado diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..bd194ca10 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist.txt @@ -0,0 +1,3 @@ +paramiko.SFTPServer.__init__ +paramiko.sftp_server.SFTPServer.__init__ +paramiko.util.SupportsClose diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_darwin.txt b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_darwin.txt new file mode 100644 index 000000000..62983197e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_darwin.txt @@ -0,0 +1,2 @@ +paramiko._winapi +paramiko.win_pageant diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..62983197e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,2 @@ +paramiko._winapi +paramiko.win_pageant diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_win32.txt b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_win32.txt new file mode 100644 index 000000000..51664f850 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/@tests/stubtest_allowlist_win32.txt @@ -0,0 +1,2 @@ +# Type-checkers don't support architecture checks. So we have to Union +paramiko.win_pageant.ULONG_PTR diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml index 5c9238818..20ba790a4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml @@ -1,4 +1,4 @@ -version = "3.0.*" +version = "3.2.*" # Requires a version of cryptography where cryptography.hazmat.primitives.ciphers.Cipher is generic requires = ["cryptography>=37.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi index e7cbf16e0..0d1886ef3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/agent.pyi @@ -62,7 +62,8 @@ class AgentKey(PKey): blob: bytes public_blob: None name: str - def __init__(self, agent: AgentSSH, blob: ReadableBuffer) -> None: ... + comment: str + def __init__(self, agent: AgentSSH, blob: ReadableBuffer, comment: str = "") -> None: ... def asbytes(self) -> bytes: ... def get_name(self) -> str: ... def sign_ssh_data(self, data: _LikeBytes, algorithm: str | None = None) -> Message: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi new file mode 100644 index 000000000..707dd0f3d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/auth_strategy.pyi @@ -0,0 +1,57 @@ +import abc +from collections.abc import Callable, Iterator +from logging import Logger +from pathlib import Path +from typing import NamedTuple + +from paramiko.config import SSHConfig +from paramiko.pkey import PKey +from paramiko.ssh_exception import AuthenticationException +from paramiko.transport import Transport + +class AuthSource: + username: str + def __init__(self, username: str) -> None: ... + @abc.abstractmethod + def authenticate(self, transport: Transport) -> list[str]: ... + +class NoneAuth(AuthSource): + def authenticate(self, transport: Transport) -> list[str]: ... + +class Password(AuthSource): + password_getter: Callable[[], str] + def __init__(self, username: str, password_getter: Callable[[], str]) -> None: ... + def authenticate(self, transport: Transport) -> list[str]: ... + +class PrivateKey(AuthSource): + def authenticate(self, transport: Transport) -> list[str]: ... + +class InMemoryPrivateKey(PrivateKey): + pkey: PKey + def __init__(self, username: str, pkey: PKey) -> None: ... + +class OnDiskPrivateKey(PrivateKey): + source: str + path: Path + pkey: PKey + def __init__(self, username: str, source: str, path: Path, pkey: PKey) -> None: ... + +class SourceResult(NamedTuple): + source: AuthSource + result: list[str] | Exception + +class AuthResult(list[SourceResult]): + strategy: AuthStrategy + def __init__(self, strategy: AuthStrategy, *args: SourceResult, **kwargs: object) -> None: ... + +class AuthFailure(AuthenticationException): + result: AuthResult + def __init__(self, result: AuthResult) -> None: ... + +class AuthStrategy: + ssh_config: SSHConfig + log: Logger + def __init__(self, ssh_config: SSHConfig) -> None: ... + @abc.abstractmethod + def get_sources(self) -> Iterator[AuthSource]: ... + def authenticate(self, transport: Transport) -> list[SourceResult]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi index 413bf0fdb..c6fe88441 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/client.pyi @@ -1,15 +1,14 @@ from collections.abc import Iterable, Mapping from typing import NoReturn, Protocol +from paramiko.auth_strategy import AuthStrategy from paramiko.channel import Channel, ChannelFile, ChannelStderrFile, ChannelStdinFile from paramiko.hostkeys import HostKeys from paramiko.pkey import PKey from paramiko.sftp_client import SFTPClient -from paramiko.transport import Transport +from paramiko.transport import Transport, _SocketLike from paramiko.util import ClosingContextManager -from .transport import _SocketLike - class _TransportFactory(Protocol): def __call__( self, @@ -47,10 +46,12 @@ class SSHClient(ClosingContextManager): gss_host: str | None = None, banner_timeout: float | None = None, auth_timeout: float | None = None, + channel_timeout: float | None = None, gss_trust_dns: bool = True, passphrase: str | None = None, disabled_algorithms: Mapping[str, Iterable[str]] | None = None, transport_factory: _TransportFactory | None = None, + auth_strategy: AuthStrategy | None = None, ) -> None: ... def close(self) -> None: ... def exec_command( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi index 3ad9e14be..ade72fde4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/rsakey.pyi @@ -27,7 +27,7 @@ class RSAKey(PKey): def get_name(self) -> str: ... def get_bits(self) -> int: ... def can_sign(self) -> bool: ... - def sign_ssh_data(self, data: bytes, algorithm: str = "ssh-rsa") -> Message: ... # type: ignore[override] + def sign_ssh_data(self, data: bytes, algorithm: str | None = None) -> Message: ... # type: ignore[override] def verify_ssh_sig(self, data: bytes, msg: Message) -> bool: ... def write_private_key_file(self, filename: str, password: str | None = None) -> None: ... def write_private_key(self, file_obj: IO[str], password: str | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..f870d6960 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/@tests/stubtest_allowlist.txt @@ -0,0 +1,8 @@ +parsimonious.nodes.RuleDecoratorMeta.__new__ + +# Magic: +parsimonious.adhoc_expression + +# Tests are shipped with the source, we ignore it: +parsimonious.tests +parsimonious\.tests\..* diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/passlib/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..d2087ce33 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/@tests/stubtest_allowlist.txt @@ -0,0 +1,50 @@ +# proxy module that uses some import magic incompatible with stubtest +passlib.hash + +# django unsupported in stubs +passlib.ext.django.models + +# uses @memoized_property at runtime, but @property in the stubs +passlib.crypto.digest.HashInfo.supported +passlib.crypto.digest.HashInfo.supported_by_fastpbkdf2 +passlib.crypto.digest.HashInfo.supported_by_hashlib_pbkdf2 +passlib.pwd.PhraseGenerator.symbol_count +passlib.pwd.SequenceGenerator.entropy +passlib.pwd.SequenceGenerator.entropy_per_symbol +passlib.pwd.SequenceGenerator.symbol_count +passlib.pwd.WordGenerator.symbol_count +passlib.totp.TotpMatch.cache_seconds +passlib.totp.TotpMatch.cache_time +passlib.totp.TotpMatch.expected_counter +passlib.totp.TotpMatch.expire_time +passlib.totp.TotpMatch.skipped +passlib.totp.TotpToken.expire_time +passlib.totp.TotpToken.start_time + +# "hybrid" method that can be called on an instance or class +passlib.totp.TOTP.normalize_token + +# import problem +passlib.utils.compat._ordered_dict + +# initialized to None, but set by concrete sub-classes +passlib.handlers.pbkdf2.Pbkdf2DigestHandler.default_rounds +passlib.utils.handlers.GenericHandler.setting_kwds + +# set to None on class level, but initialized in __init__ +passlib.utils.handlers.HasManyIdents.ident +passlib.utils.handlers.HasRounds.rounds + +# Errors in `__all__` at runtime: +# TODO: change after https://github.com/python/mypy/pull/14217 is released +passlib.handlers.oracle.__all__ +passlib.handlers.oracle.oracle11g +passlib.handlers.oracle.oracle10g +passlib.handlers.mysql.__all__ +passlib.handlers.mysql.mysq41 + +# Compat tools are ignored: +passlib.utils.compat.* + +# Tests are not included: +passlib.tests.* diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/@tests/stubtest_allowlist_win32.txt b/packages/pyright-internal/typeshed-fallback/stubs/passlib/@tests/stubtest_allowlist_win32.txt new file mode 100644 index 000000000..217d59c71 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/@tests/stubtest_allowlist_win32.txt @@ -0,0 +1,2 @@ +# Only exists if crypt is present +passlib.hosts.host_context diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passpy/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/passpy/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..f7e53b666 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/passpy/@tests/stubtest_allowlist.txt @@ -0,0 +1,6 @@ +passpy.__main__ + +# Uses `git` dependency: +passpy.git +# Uses `gpg` dependency: +passpy.gpg diff --git a/packages/pyright-internal/typeshed-fallback/stubs/peewee/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/peewee/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..984770680 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/peewee/@tests/stubtest_allowlist.txt @@ -0,0 +1,25 @@ +peewee.DQ.__invert__ +peewee.DateField.day +peewee.DateField.month +peewee.DateField.year +peewee.DateTimeField.day +peewee.DateTimeField.hour +peewee.DateTimeField.minute +peewee.DateTimeField.month +peewee.DateTimeField.second +peewee.DateTimeField.year +peewee.Model.insert +peewee.Model.replace +peewee.Model.update +peewee.TimeField.hour +peewee.TimeField.minute +peewee.TimeField.second +peewee.TimestampField.day +peewee.TimestampField.hour +peewee.TimestampField.minute +peewee.TimestampField.month +peewee.TimestampField.second +peewee.TimestampField.year +peewee.Window.as_groups +peewee.Window.as_range +peewee.Window.as_rows diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..0cceda881 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +pep8ext_naming.NamingChecker.__getattr__ +pep8ext_naming.NamingChecker.parse_options diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pika/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..711d3d08a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/@tests/stubtest_allowlist.txt @@ -0,0 +1,18 @@ +# Inherited from stdlib's io module. +pika.compat.StringIO.seek +pika.compat.StringIO.truncate + +# Stubtest doesn't understand that a property alias is also read-only. +# https://github.com/python/mypy/issues/13975 +pika(\.adapters)?(\.blocking_connection)?\.BlockingConnection\.basic_nack +pika(\.adapters)?(\.blocking_connection)?\.BlockingConnection\.consumer_cancel_notify +pika(\.adapters)?(\.blocking_connection)?\.BlockingConnection\.exchange_exchange_bindings +pika(\.adapters)?(\.blocking_connection)?\.BlockingConnection\.publisher_confirms + +# The implementation has defaults for the arguments that would make the +# created instances unusable, so we require the arguments in the stub. +pika.spec.Queue.DeclareOk.__init__ + +# Arguments have a sentinel default, which is not reflected in the stubs. +pika.ConnectionParameters.__init__ +pika.connection.ConnectionParameters.__init__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..9b135c70d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/@tests/stubtest_allowlist.txt @@ -0,0 +1,41 @@ +# Generated pb2 methods diverge for a variety of reasons. They are tested +# carefully in mypy-protobuf which internally runs stubtest. Skip those here. +google.protobuf\..*_pb2\..* + +# While Message and Descriptor are both defined with a null DESCRIPTOR, +# subclasses of Message and instances of EnumTypeWrapper require this value to +# be set, and since these type stubs are intended for use with protoc-generated +# python it's more accurate to make them non-nullable. +google.protobuf.internal.enum_type_wrapper.EnumTypeWrapper.DESCRIPTOR +google.protobuf.message.Message.DESCRIPTOR + +# Exists at runtime, but via a __getitem__/__setitem__ hack +# See https://github.com/protocolbuffers/protobuf/blob/3ea30d80847cd9561db570ae7f673afc15523545/python/google/protobuf/message.py#L67 +google.protobuf.message.Message.Extensions + +# These are typed as (self, **kwargs) at runtime as thin wrapper functions +# around the underlying true typing. We prefer the true typing +google.protobuf.internal.containers.BaseContainer.sort +google.protobuf.message.Message.SerializePartialToString +google.protobuf.message.Message.SerializeToString +google.protobuf.text_format.MessageToBytes + +# Stubbed as static method, but actually exists as a property that's +# a function. Typeshed's typing is more useful +google.protobuf.service.Service.GetDescriptor + +# These are deliberately omitted in the stub. +# The classes can't be constructed directly anyway, +# so the signatures of their constructors are somewhat irrelevant. +google.protobuf.descriptor.Descriptor.__new__ +google.protobuf.descriptor.ServiceDescriptor.__new__ + +# Set to None at runtime - which doesn't match the Sequence base class. +# It's a hack - just allow it. +google.protobuf.internal.containers.BaseContainer.__hash__ + +# Metaclass differs: +google.protobuf.descriptor.OneofDescriptor + +# Runtime does not have __iter__ (yet...): hack in spirit of https://github.com/python/typeshed/issues/7813 +google.protobuf.internal.well_known_types.ListValue.__iter__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/@tests/test_cases/check_struct.py b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/@tests/test_cases/check_struct.py new file mode 100644 index 000000000..d3679af47 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/@tests/test_cases/check_struct.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from google.protobuf.struct_pb2 import ListValue, Struct + +list_value = ListValue() + +lst = list(list_value) # Ensure type checkers recognise that the class is iterable (doesn't have an `__iter__` method at runtime) + +list_value[0] = 42.42 +list_value[0] = "42" +list_value[0] = None +list_value[0] = True +list_value[0] = [42.42, "42", None, True, [42.42, "42", None, True], {"42": 42}] +list_value[0] = ListValue() +list_value[0] = Struct() + +list_element = list_value[0] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..0b6e1ce09 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist.txt @@ -0,0 +1,13 @@ +# These super() dunders don't seem to be particularly useful, +# and having them pop up on autocomplete suggestions would be annoying +psutil._compat.super.__self__ +psutil._compat.super.__self_class__ +psutil._compat.super.__thisclass__ + +# Stubtest does not support these platforms +psutil._psaix +psutil._psbsd +psutil._pssunos + +# Test utilities +psutil.tests.* diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_darwin.txt b/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_darwin.txt new file mode 100644 index 000000000..4cf5ba5d3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_darwin.txt @@ -0,0 +1,4 @@ +psutil._pslinux +psutil._psutil_linux +psutil._psutil_windows +psutil._pswindows diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..eb279310d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,4 @@ +psutil._psosx +psutil._psutil_windows +psutil._psutil_osx +psutil._pswindows diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_win32.txt b/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_win32.txt new file mode 100644 index 000000000..4fa870ef8 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/@tests/stubtest_allowlist_win32.txt @@ -0,0 +1,6 @@ +psutil._pslinux +psutil._psosx + +psutil._psutil_linux +psutil._psutil_osx +psutil._psutil_posix diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi index 54a282f72..ba4d3b510 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi @@ -231,7 +231,12 @@ def wait_procs( ) -> tuple[list[Process], list[Process]]: ... def cpu_count(logical: bool = True) -> int: ... def cpu_times(percpu: bool = False): ... -def cpu_percent(interval: float | None = None, percpu: bool = False) -> float: ... +@overload +def cpu_percent(interval: float | None = None, percpu: Literal[False] = False) -> float: ... +@overload +def cpu_percent(interval: float | None, percpu: Literal[True]) -> list[float]: ... +@overload +def cpu_percent(*, percpu: Literal[True]) -> list[float]: ... def cpu_times_percent(interval: float | None = None, percpu: bool = False): ... def cpu_stats() -> scpustats: ... def cpu_freq(percpu: bool = False) -> scpufreq: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..0a93eaedc --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/@tests/stubtest_allowlist.txt @@ -0,0 +1,5 @@ +psycopg2.connection +psycopg2.cursor +psycopg2.pool.AbstractConnectionPool.closeall +psycopg2.pool.AbstractConnectionPool.getconn +psycopg2.pool.AbstractConnectionPool.putconn diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..ade54ad26 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +OpenSSL.SSL.Context.__getattr__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml index 4cdff58ef..02e6421bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.1.*" +version = "23.2.*" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..2d7a6bbca --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/@tests/stubtest_allowlist.txt @@ -0,0 +1,10 @@ +# type_check_only +pyasn1.type.base.NoValue.plug + +# typeshed typing differences with runtime collections.OrderedDict and builtins.dict +pyasn1.codec.native.encoder.SequenceEncoder.protoDict +pyasn1.codec.native.encoder.SetEncoder.protoDict + +# Attempted "__ne__" operation on ASN.1 schema object +pyasn1.type.base +pyasn1.type.univ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..3ea354771 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/@tests/stubtest_allowlist.txt @@ -0,0 +1,25 @@ +# These all have class-level defaults that differ from the instance attributes +pyflakes.messages.DuplicateArgument.message_args +pyflakes.messages.ForwardAnnotationSyntaxError.message_args +pyflakes.messages.FutureFeatureNotDefined.message_args +pyflakes.messages.ImportShadowedByLoopVar.message_args +pyflakes.messages.ImportStarUsage.message_args +pyflakes.messages.ImportStarUsed.message_args +pyflakes.messages.MultiValueRepeatedKeyLiteral.message_args +pyflakes.messages.MultiValueRepeatedKeyVariable.message_args +pyflakes.messages.PercentFormatExtraNamedArguments.message_args +pyflakes.messages.PercentFormatInvalidFormat.message_args +pyflakes.messages.PercentFormatMissingArgument.message_args +pyflakes.messages.PercentFormatPositionalCountMismatch.message_args +pyflakes.messages.PercentFormatUnsupportedFormatCharacter.message_args +pyflakes.messages.RedefinedWhileUnused.message_args +pyflakes.messages.StringDotFormatExtraNamedArguments.message_args +pyflakes.messages.StringDotFormatExtraPositionalArguments.message_args +pyflakes.messages.StringDotFormatInvalidFormat.message_args +pyflakes.messages.StringDotFormatMissingArgument.message_args +pyflakes.messages.UndefinedExport.message_args +pyflakes.messages.UndefinedLocal.message_args +pyflakes.messages.UndefinedName.message_args +pyflakes.messages.UnusedAnnotation.message_args +pyflakes.messages.UnusedImport.message_args +pyflakes.messages.UnusedVariable.message_args diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..55fc67171 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/@tests/stubtest_allowlist.txt @@ -0,0 +1,44 @@ +# fake module, only exists once the app is frozen +pyi_splash + +# Undocumented and clearly not meant to be exposed +PyInstaller\..+?\.logger +PyInstaller.__main__.generate_parser +PyInstaller.__main__.run_build +PyInstaller.__main__.run_makespec +PyInstaller.utils.hooks.conda.lib_dir + +# A mix of modules meant to be private, and shallow incomplete type references for other modules +PyInstaller\.building\.\w+? +PyInstaller.building.build_main.* +PyInstaller.building.datastruct.unique_name +PyInstaller.depend.analysis.* +PyInstaller.isolated._parent.* +PyInstaller\.lib\.modulegraph\.modulegraph\.\w+? + +# Most modules are not meant to be used, yet are not marked as private +PyInstaller.archive.* +PyInstaller.config +PyInstaller.configure +PyInstaller.depend.bindepend +PyInstaller.depend.bytecode +PyInstaller.depend.dylib +PyInstaller.depend.imphook +PyInstaller.depend.utils +PyInstaller.exceptions +PyInstaller.hooks.* +PyInstaller\.lib\.modulegraph\.\w+? +PyInstaller.loader.* +PyInstaller.log +PyInstaller.utils.cliutils.* +PyInstaller.utils.conftest +PyInstaller.utils.git +PyInstaller.utils.hooks.django +PyInstaller.utils.hooks.gi +PyInstaller.utils.hooks.qt +PyInstaller.utils.hooks.tcl_tk +PyInstaller.utils.misc +PyInstaller.utils.osx +PyInstaller.utils.run_tests +PyInstaller.utils.tests +PyInstaller\.utils\.win32\.\w+? diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/@tests/stubtest_allowlist_win32.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/@tests/stubtest_allowlist_win32.txt new file mode 100644 index 000000000..d31a94e8d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/@tests/stubtest_allowlist_win32.txt @@ -0,0 +1,2 @@ +PyInstaller\.utils\.win32\.versioninfo\.\w+? +PyInstaller\.utils\.win32\.winmanifest\.\w+? diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml index a752aeb82..0e0e0a47e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml @@ -1,2 +1,2 @@ -version = "5.11.*" +version = "5.12.*" requires = ["types-setuptools"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..0fa0e5d5a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist.txt @@ -0,0 +1,16 @@ +# These __init__ methods have *args, **kwargs arguments on some platforms, but not others +pynput.mouse.Controller.__init__ + +# stubtest issues with non-`type` metaclasses, see https://github.com/python/mypy/issues/13316 +pynput.keyboard.Controller._Key +pynput.keyboard._base.Controller._Key +pynput.keyboard._dummy.Controller._Key + +# Platform specific private utils: +pynput._util.xorg_keysyms +pynput._util.xorg +pynput._util.win32_vks +pynput._util.win32 +pynput._util.uinput +pynput._util.darwin_vks +pynput._util.darwin diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..6a32bbd42 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,5 @@ +# These __init__ methods have *args, **kwargs arguments on some platforms, but not others +pynput.keyboard.Controller.__init__ + +# Platform specific implementation detail: +pynput.keyboard.Controller.keyboard_mapping diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist_win32.txt b/packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist_win32.txt new file mode 100644 index 000000000..99b195507 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pynput/@tests/stubtest_allowlist_win32.txt @@ -0,0 +1,2 @@ +# These __init__ methods have *args, **kwargs arguments on some platforms, but not others +pynput.keyboard.Controller.__init__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..8aca6db15 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist.txt @@ -0,0 +1,62 @@ +# Error: failed to import +# ======================= +serial.__main__ # SystemExit +serial.serialcli # (IronPython) ModuleNotFoundError: No module named 'System' +serial.serialjava # No Java Communications API implementation found + +# Error: is inconsistent +# ====================== +# These are positional only argument in the stub because they inherit from io.RawIOBase +# but at runtime they are normal arguments that don't have consistent names. +serial.Serial.write +serial.SerialBase.readinto +serial.serialutil.SerialBase.readinto +serial.rfc2217.Serial.write +serial.rs485.RS485.write +serial.urlhandler.protocol_cp2110.Serial.write +serial.urlhandler.protocol_loop.Serial.write +serial.urlhandler.protocol_rfc2217.Serial.write +serial.urlhandler.protocol_socket.Serial.write +serial.urlhandler.protocol_spy.Serial.write + +# Error: is not present in stub +# ============================= +# Python 2 compatibility +serial.basestring +serial.serialutil.basestring +serial.serialutil.iterbytes +serial.serialutil.to_bytes + +# Deprecated aliases +serial.SerialBase.applySettingsDict +serial.SerialBase.flushInput +serial.SerialBase.flushOutput +serial.SerialBase.getCD +serial.SerialBase.getCTS +serial.SerialBase.getDSR +serial.SerialBase.getRI +serial.SerialBase.getSettingsDict +serial.SerialBase.inWaiting +serial.SerialBase.interCharTimeout +serial.SerialBase.isOpen +serial.SerialBase.sendBreak +serial.SerialBase.setDTR +serial.SerialBase.setPort +serial.SerialBase.setRTS +serial.SerialBase.writeTimeout +serial.serialutil.SerialBase.applySettingsDict +serial.serialutil.SerialBase.flushInput +serial.serialutil.SerialBase.flushOutput +serial.serialutil.SerialBase.getCD +serial.serialutil.SerialBase.getCTS +serial.serialutil.SerialBase.getDSR +serial.serialutil.SerialBase.getRI +serial.serialutil.SerialBase.getSettingsDict +serial.serialutil.SerialBase.inWaiting +serial.serialutil.SerialBase.interCharTimeout +serial.serialutil.SerialBase.isOpen +serial.serialutil.SerialBase.sendBreak +serial.serialutil.SerialBase.setDTR +serial.serialutil.SerialBase.setPort +serial.serialutil.SerialBase.setRTS +serial.serialutil.SerialBase.writeTimeout diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_darwin.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_darwin.txt new file mode 100644 index 000000000..ebfc25005 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_darwin.txt @@ -0,0 +1,16 @@ +# Error: failed to import +# ======================= +serial.serialwin32 # Windows only +serial.win32 # Windows only +serial.tools.list_ports_windows # Windows only + +# Error: is inconsistent +# ====================== +# Methods defined with positional-only argument in the stub because they inherit from +# io.RawIOBase but at runtime they are normal arguments that don't have consistent +# names. +serial.serialposix.Serial.write + +# intended to be private aliases +serial.tools.list_ports_posix.plat +serial.serialposix.plat diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..6de377770 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,18 @@ +# Error: failed to import +# ======================= +serial.serialwin32 # Windows only +serial.win32 # Windows only +serial.tools.list_ports_osx # Mac only +serial.tools.list_ports_windows # Windows only + +# Error: is inconsistent +# ====================== +# Methods defined with positional-only argument in the stub because they inherit from +# io.RawIOBase but at runtime they are normal arguments that don't have consistent +# names. +serial.serialposix.Serial.write + +# Error: is missing from the stub (intended to be private aliases) +# ================================================================ +serial.tools.list_ports_posix.plat +serial.serialposix.plat diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_win32.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_win32.txt new file mode 100644 index 000000000..75273f1f2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/@tests/stubtest_allowlist_win32.txt @@ -0,0 +1,12 @@ +# Error: failed to import +# ======================= +serial.serialposix # Posix only +serial.tools.list_ports_osx # Mac only +serial.tools.list_ports_posix # Posix only + +# Error: is inconsistent +# ====================== +# Methods defined with positional-only argument in the stub because they inherit from +# io.RawIOBase but at runtime they are normal arguments that don't have consistent +# names. +serial.serialwin32.Serial.write diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pytest-lazy-fixture/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pytest-lazy-fixture/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..24eb54e76 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pytest-lazy-fixture/@tests/stubtest_allowlist.txt @@ -0,0 +1,12 @@ +# Part of the pytest API, which is internal: +pytest_lazyfixture.pytest_.* + +# Internal undocumented API: +pytest_lazyfixture.fillfixtures +pytest_lazyfixture.normalize_call +pytest_lazyfixture.normalize_metafunc_calls +pytest_lazyfixture.sorted_by_dependency +pytest_lazyfixture.copy_metafunc + +# Compat: +pytest_lazyfixture.PY3 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..ca0f86d94 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/@tests/stubtest_allowlist.txt @@ -0,0 +1,4 @@ +# Runtime only-hack that doesn't affect typing: +crontabs.CronTabs.__new__ +# stub does not have *args argument "args", but function doesn't actually accept positional args +crontab.CronTab.remove_all diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..852c593a1 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/@tests/stubtest_allowlist.txt @@ -0,0 +1,13 @@ +dateutil.parser._tzparser.__init__ +dateutil.parser.parserinfo.convertyear +dateutil.rrule.weekday.__init__ +dateutil.tz.tz.tzoffset.instance +dateutil.tz.tz.tzstr.instance +dateutil.tz.tzoffset.instance +dateutil.tz.tzstr.instance + +# Metaclass differs: +dateutil.tz.tzoffset +dateutil.tz.tzutc +dateutil.tz.tz.tzoffset +dateutil.tz.tz.tzutc diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/@tests/test_cases/check_relativedelta.py b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/@tests/test_cases/check_relativedelta.py new file mode 100644 index 000000000..8e83759df --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/@tests/test_cases/check_relativedelta.py @@ -0,0 +1,9 @@ +from __future__ import annotations + +from dateutil import relativedelta + + +# An illustrative example for why we re-export dateutil._common.weekday from dateutil.relativedelta in the stub +class Calendar: + def __init__(self, week_start: relativedelta.weekday = relativedelta.MO) -> None: + self.week_start = week_start diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-gflags/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/python-gflags/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..f37b2b810 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-gflags/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +gflags diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..efd6e0e11 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/@tests/stubtest_allowlist.txt @@ -0,0 +1,6 @@ +jose.backends.cryptography_backend +jose.backends.CryptographyAESKey +jose.backends.CryptographyECKey +jose.backends.CryptographyHMACKey +jose.backends.CryptographyRSAKey +jose.backends.ECDSAECKey diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..7e144572d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +nmap.test_nmap diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..e77adcaea --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +slugify.__main__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..1809e171e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/@tests/stubtest_allowlist.txt @@ -0,0 +1,25 @@ +# Type helpers +Xlib._typing + +# __all__ is a map at runtime +# https://github.com/python-xlib/python-xlib/pull/238 +Xlib.ext(\.__all__)? + +# These will unconditionally fail at runtime +# See: https://github.com/python-xlib/python-xlib/issues/253 +Xlib.protocol.rq.DictWrapper.__gt__ +Xlib.protocol.rq.DictWrapper.__lt__ +Xlib.protocol.rq.Event.__gt__ +Xlib.protocol.rq.Event.__lt__ + +# Can be None or str once instantiated +Xlib.protocol.rq.*.structcode +# Should only ever be str once instantiated +Xlib.protocol.rq.*.name + +# Structs generate their attributes (@type_check_only) +Xlib.protocol.rq.Struct.__getattr__ + +# Iteration variable that bleeds into the global scope +Xlib.protocol.rq.c +Xlib.protocol.rq.size diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pytz/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pytz/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..c25eb8283 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pytz/@tests/stubtest_allowlist.txt @@ -0,0 +1,5 @@ +# "Abstract" methods, see the .pyi file for more details. +pytz.BaseTzInfo.localize +pytz.BaseTzInfo.normalize +pytz.tzinfo.BaseTzInfo.localize +pytz.tzinfo.BaseTzInfo.normalize diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..b14e3eb36 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/@tests/stubtest_allowlist.txt @@ -0,0 +1,8 @@ +pyVmomi.vim +pyVmomi.vim.event +pyVmomi.vim.fault +pyVmomi.vim.option +pyVmomi.vim.view +pyVmomi.vmodl +pyVmomi.vmodl.fault +pyVmomi.vmodl.query diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml index 452ffd22f..e47e40f17 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml @@ -1,5 +1,6 @@ version = "8.0.0.*" partial_stub = true +obsolete_since = "8.0.1.0.1" # Released on 2023-05-25 [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/@tests/stubtest_allowlist_win32.txt b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/@tests/stubtest_allowlist_win32.txt new file mode 100644 index 000000000..40cfcd86e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/@tests/stubtest_allowlist_win32.txt @@ -0,0 +1,74 @@ +# Not available at runtime. Contains type definitions that are otherwise not exposed +_win32typing +win32com(ext)?.mapi._exchdapi +win32._wincerapi + +# PyWin tool / debugger +pythonwin.start_pythonwin +pythonwin.pywin.* +win32com.client.combrowse +win32com.client.tlbrowse + +# Utilities to generate python bindings +win32com.client.build.* +win32com.client.CLSIDToClass +win32com.client.connect +# "dynamic.CDipatch" is necessary for mypy to not throw AssertionError +win32com.client.dynamic.* +win32com.client.gencache.* +win32com.client.genpy +win32com.client.makepy +win32com.client.selecttlb +win32com.client.util +win32com.makegw.* +(win32.lib.)?pywintypes.__import_pywin32_system_module__ + +# COM object servers scripts +win32com.server.factory +win32com.server.localserver +win32com.server.register +win32com.servers.* +# Active X Scripts +win32com(ext)?.axscript.client.framework +win32com(ext)?.axscript.client.pyscript_rexec +# "pyscript.pyi" is necessary for mypy to not fail due to missing stub +win32com(ext)?.axscript.client.pyscript.* +win32com(ext)?.axscript.client.scriptdispatch +# Other scripts +isapi.install + +# Demos, tests and debugging +win32com.demos.* +win32com.servers.test_pycomtest +win32com.test.* +win32com(ext)?.axdebug.codecontainer +win32com(ext)?.axdebug.dump +win32com(ext)?.axdebug.debugger +win32com(ext)?.axscript.client.debug +win32com(ext)?.axscript.client.pydumper +win32com(ext)?.directsound.test.* + +# Deprecated and obsolete +pythoncom.MakeIID +pythoncom.MakeTime +(win32.lib.)?win32pdhquery.Query.addperfcounter +# Deprecated and makes a buffer of random junk. Use something like `b"\x00" * bufferSize` instead +(win32.)?win(32|xp)gui.PyMakeBuffer + +# failed to import, ImportError: DLL load failed while importing axdebug: The specified module could not be found. +win32com.axdebug.axdebug +win32com(ext)?.axdebug.codecontainer +# failed to import, ModuleNotFoundError: No module named 'gateways' +win32com(ext)?.axdebug.contexts +# failed to import, ModuleNotFoundError: No module named 'axdebug' +win32com(ext)?.axdebug.adb +win32com(ext)?.axdebug.documents +win32com(ext)?.axdebug.expressions +# failed to import, ModuleNotFoundError: No module named 'expressions' +win32com(ext)?.axdebug.stackframe +# Axdebug is not built on Python 3.11: https://github.com/mhammond/pywin32/blob/main/setup.py#L405 +# failed to import, ImportError: cannot import name 'axdebug' from 'win32com.axdebug' +win32com.axdebug.gateways +win32comext.axdebug.gateways +# failed to import, ModuleNotFoundError: No module named 'win32comext.axdebug.axdebug' +win32comext.axdebug.axdebug diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi index c0f995607..ac71380df 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/lib/pywintypes.pyi @@ -2,7 +2,8 @@ # "KeyError: 'pywintypes'" from _typeshed import Incomplete from datetime import datetime -from typing_extensions import Literal +from typing import NoReturn +from typing_extensions import Literal, Never import _win32typing @@ -15,6 +16,15 @@ class error(Exception): class com_error(Exception): ... class UnicodeType(str): ... +class HANDLEType: + def __init__(self, *args: Never, **kwargs: Never) -> NoReturn: ... + @property + def handle(self) -> int: ... + def Close(self) -> None: ... + def close(self) -> None: ... + def Detach(self) -> None: ... + def __int__(self) -> int: ... + class TimeType(datetime): Format = datetime.strftime @@ -32,7 +42,7 @@ def ACL(__bufSize: int = ...) -> _win32typing.PyACL: ... def SID(buffer, idAuthority, subAuthorities, bufSize=...) -> _win32typing.PySID: ... def SECURITY_ATTRIBUTES() -> _win32typing.PySECURITY_ATTRIBUTES: ... def SECURITY_DESCRIPTOR() -> _win32typing.PySECURITY_DESCRIPTOR: ... -def HANDLE() -> int: ... +def HANDLE() -> HANDLEType: ... def HKEY() -> _win32typing.PyHKEY: ... def WAVEFORMATEX() -> _win32typing.PyWAVEFORMATEX: ... def TimeStamp(*args, **kwargs): ... # incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/redis/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..427b2305d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/@tests/stubtest_allowlist.txt @@ -0,0 +1,73 @@ +redis.client.Pipeline.transaction # instance attribute has same name as superclass method + +# async def mismatch problems +redis.asyncio.client.Pipeline.command_info +redis.asyncio.client.Pipeline.debug_segfault +redis.asyncio.client.Pipeline.memory_doctor +redis.asyncio.client.Pipeline.memory_help +redis.asyncio.client.Pipeline.script_debug +redis.asyncio.client.Pipeline.shutdown + +# unclear problems +redis.asyncio.Sentinel.master_for +redis.asyncio.Sentinel.slave_for +redis.asyncio.sentinel.Sentinel.master_for +redis.asyncio.sentinel.Sentinel.slave_for +redis.sentinel.Sentinel.master_for +redis.sentinel.Sentinel.slave_for + +# Metaclass differs: +redis.RedisCluster +redis.asyncio.Redis +redis.asyncio.RedisCluster +redis.asyncio.client.Pipeline +redis.asyncio.client.Redis +redis.client.Pipeline +redis.client.Redis +redis.cluster.ClusterPipeline +redis.cluster.RedisCluster +redis.commands.AsyncCoreCommands +redis.commands.CoreCommands +redis.commands.RedisClusterCommands +redis.commands.cluster.ClusterDataAccessCommands +redis.commands.cluster.ClusterManagementCommands +redis.commands.cluster.ClusterMultiKeyCommands +redis.commands.cluster.RedisClusterCommands +redis.commands.core.ACLCommands +redis.commands.core.AsyncACLCommands +redis.commands.core.AsyncBasicKeyCommands +redis.commands.core.AsyncClusterCommands +redis.commands.core.AsyncCoreCommands +redis.commands.core.AsyncDataAccessCommands +redis.commands.core.AsyncGeoCommands +redis.commands.core.AsyncHashCommands +redis.commands.core.AsyncHyperlogCommands +redis.commands.core.AsyncListCommands +redis.commands.core.AsyncManagementCommands +redis.commands.core.AsyncModuleCommands +redis.commands.core.AsyncPubSubCommands +redis.commands.core.AsyncScanCommands +redis.commands.core.AsyncScriptCommands +redis.commands.core.AsyncSetCommands +redis.commands.core.AsyncSortedSetCommands +redis.commands.core.AsyncStreamCommands +redis.commands.core.BasicKeyCommands +redis.commands.core.ClusterCommands +redis.commands.core.CoreCommands +redis.commands.core.DataAccessCommands +redis.commands.core.GeoCommands +redis.commands.core.HashCommands +redis.commands.core.HyperlogCommands +redis.commands.core.ListCommands +redis.commands.core.ManagementCommands +redis.commands.core.ModuleCommands +redis.commands.core.PubSubCommands +redis.commands.core.ScanCommands +redis.commands.core.ScriptCommands +redis.commands.core.SetCommands +redis.commands.core.SortedSetCommands +redis.commands.core.StreamCommands +redis.commands.json.Pipeline +redis.commands.timeseries.Pipeline +redis.asyncio.cluster.ClusterPipeline +redis.asyncio.cluster.RedisCluster diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/regex/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..1591d7371 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/@tests/stubtest_allowlist.txt @@ -0,0 +1,18 @@ +# Not exported in C modules: +regex._regex.Splitter +regex._regex.Scanner + +# Implementation details: +regex._regex.compile +regex._regex.copyright +regex._regex.fold_case +regex._regex.get_all_cases +regex._regex.get_code_size +regex._regex.get_expand_on_folding +regex._regex.get_properties +regex._regex.has_property_value +regex._regex.CODE_SIZE +regex._regex.MAGIC + +# Tests: +regex.test_regex diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/@tests/test_cases/check_finditer.py b/packages/pyright-internal/typeshed-fallback/stubs/regex/@tests/test_cases/check_finditer.py new file mode 100644 index 000000000..0b572973c --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/@tests/test_cases/check_finditer.py @@ -0,0 +1,11 @@ +from __future__ import annotations + +from typing import List +from typing_extensions import assert_type + +import regex + +# Regression tests for #9263 +assert_type(list(regex.finditer(r"foo", "foo")), List[regex.Match[str]]) +pat = regex.compile(rb"foo") +assert_type(list(pat.finditer(b"foo")), List[regex.Match[bytes]]) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml index fef9036ad..f7972b352 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml @@ -1 +1 @@ -version = "2023.5.5" +version = "2023.6.3" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/requests/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..fdd39a91a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/@tests/stubtest_allowlist.txt @@ -0,0 +1,11 @@ +# Re-exports from urllib3 (should be fixed in those stubs, not here) +requests\.adapters\.PoolManager\..* +requests\.adapters\.Retry\..* + +# Loop variables that leak into the global scope +requests.packages.mod +requests.packages.package +requests.packages.target + +# Alias for builtins.bytes +requests.compat.bytes.__buffer__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/@tests/test_cases/check_post.py b/packages/pyright-internal/typeshed-fallback/stubs/requests/@tests/test_cases/check_post.py new file mode 100644 index 000000000..d68a484d9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/@tests/test_cases/check_post.py @@ -0,0 +1,56 @@ +from __future__ import annotations + +from collections.abc import Iterable + +import requests + +# ================================================================================================= +# Regression test for #7988 (multiple files should be allowed for the "files" argument) +# This snippet comes from the requests documentation +# (https://requests.readthedocs.io/en/latest/user/advanced/#post-multiple-multipart-encoded-files), +# so should pass a type checker without error +# ================================================================================================= + + +url = "https://httpbin.org/post" +multiple_files = [ + ("images", ("foo.png", open("foo.png", "rb"), "image/png")), + ("images", ("bar.png", open("bar.png", "rb"), "image/png")), +] +r = requests.post(url, files=multiple_files) + + +# ================================================================================= +# Tests for various different types being passed into the "data" parameter +# (These all return "Any", so there's not much value in using assert_type here.) +# (Just test that type checkers don't emit an error if it doesn't fail at runtime.) +# ================================================================================= + + +# Arbitrary iterable +def gen() -> Iterable[bytes]: + yield b"foo" + yield b"bar" + + +requests.post("http://httpbin.org/anything", data=gen()).json()["data"] + +# bytes +requests.post("http://httpbin.org/anything", data=b"foobar").json()["data"] + +# str +requests.post("http://httpbin.org/anything", data="foobar").json()["data"] + +# Files +requests.post("http://httpbin.org/anything", data=open("/tmp/foobar", "rb", encoding="UTF-8")).json()["data"] +requests.post("http://httpbin.org/anything", data=open("/tmp/foobar", "r", encoding="UTF-8")).json()["data"] + +# Mappings +requests.post("http://httpbin.org/anything", data={b"foo": b"bar"}).json()["form"] +requests.post("http://httpbin.org/anything", data={"foo": "bar"}).json()["form"] + +# mappings represented by an list/tuple of key-values pairs +requests.post("http://httpbin.org/anything", data=[(b"foo", b"bar")]).json()["form"] +requests.post("http://httpbin.org/anything", data=[("foo", "bar")]).json()["form"] +requests.post("http://httpbin.org/anything", data=((b"foo", b"bar"),)).json()["form"] +requests.post("http://httpbin.org/anything", data=(("foo", "bar"),)).json()["form"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml index 8006e0087..f0410f316 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.30.*" +version = "2.31.*" requires = ["types-urllib3"] [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/retry/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/retry/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..0e4e3d2ea --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/retry/@tests/stubtest_allowlist.txt @@ -0,0 +1,3 @@ +retry.compat +retry.tests +retry.tests.test_retry diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..48eb73ba5 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist.txt @@ -0,0 +1,65 @@ +# These are used like protocols, but forgot to specify "self" as the first method param +pkg_resources.IResourceProvider.get_resource_filename +pkg_resources.IResourceProvider.get_resource_stream +pkg_resources.IResourceProvider.get_resource_string +pkg_resources.IResourceProvider.has_resource +pkg_resources.IResourceProvider.resource_isdir +pkg_resources.IResourceProvider.resource_listdir +pkg_resources.IMetadataProvider.get_metadata +pkg_resources.IMetadataProvider.get_metadata_lines +pkg_resources.IMetadataProvider.has_metadata +pkg_resources.IMetadataProvider.metadata_isdir +pkg_resources.IMetadataProvider.metadata_listdir +pkg_resources.IMetadataProvider.run_script + +# Is always set in __init__ +pkg_resources.PathMetadata.egg_info +pkg_resources.EggMetadata.loader + +# 1 used for True as a default value +setuptools._distutils.dist.Distribution.get_command_obj + +# Dynamically created in __init__ +setuptools._distutils.dist.Distribution.get_name +setuptools._distutils.dist.Distribution.get_version +setuptools._distutils.dist.Distribution.get_fullname +setuptools._distutils.dist.Distribution.get_author +setuptools._distutils.dist.Distribution.get_author_email +setuptools._distutils.dist.Distribution.get_maintainer +setuptools._distutils.dist.Distribution.get_maintainer_email +setuptools._distutils.dist.Distribution.get_contact +setuptools._distutils.dist.Distribution.get_contact_email +setuptools._distutils.dist.Distribution.get_url +setuptools._distutils.dist.Distribution.get_license +setuptools._distutils.dist.Distribution.get_licence +setuptools._distutils.dist.Distribution.get_description +setuptools._distutils.dist.Distribution.get_long_description +setuptools._distutils.dist.Distribution.get_keywords +setuptools._distutils.dist.Distribution.get_platforms +setuptools._distutils.dist.Distribution.get_classifiers +setuptools._distutils.dist.Distribution.get_download_url +setuptools._distutils.dist.Distribution.get_requires +setuptools._distutils.dist.Distribution.get_provides +setuptools._distutils.dist.Distribution.get_obsoletes + +# Not supported by typeshed +setuptools.py34compat +setuptools.command.py36compat + +# Private modules +setuptools.config._validate_pyproject.* +setuptools.command.build_py.build_py.existing_egg_info_dir + +# Loop variable leak +setuptools.sandbox.AbstractSandbox.name + +# Vendored and modified version of stdlib's distutils. Basically implementation details +setuptools._distutils.* +# Other vendored code +setuptools._vendor.* +pkg_resources._vendor.* +# Deprecated in favor of importlib.resources, importlib.metadata and their backports +# So like distutils, we only add what we need to reference. +pkg_resources.AvailableDistributions +pkg_resources.ResourceManager +pkg_resources.extern diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist_darwin.txt b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist_darwin.txt new file mode 100644 index 000000000..6b3c1d5e7 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist_darwin.txt @@ -0,0 +1,2 @@ +# Mock +setuptools.msvc.winreg diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..6b3c1d5e7 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,2 @@ +# Mock +setuptools.msvc.winreg diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/test_cases/check_protocols.py b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/test_cases/check_protocols.py new file mode 100644 index 000000000..66237a4bc --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/@tests/test_cases/check_protocols.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +from typing import Any + +from pkg_resources import ( + DefaultProvider, + EggMetadata, + EggProvider, + EmptyProvider, + FileMetadata, + IMetadataProvider, + IResourceProvider, + NullProvider, + PathMetadata, + ZipProvider, +) +from setuptools.command.editable_wheel import EditableStrategy, _LinkTree, _StaticPth, _TopLevelFinder +from setuptools.config.expand import EnsurePackagesDiscovered +from setuptools.config.pyprojecttoml import _EnsurePackagesDiscovered + +# We don't care about the __init__ methods, only about if an instance respects the Protocol +_: Any = object() + +# Test IMetadataProvider Protocol implementers +metadata_provider: IMetadataProvider +metadata_provider = NullProvider(_) +metadata_provider = EggProvider(_) +metadata_provider = EmptyProvider() +metadata_provider = DefaultProvider(_) +metadata_provider = ZipProvider(_) +metadata_provider = FileMetadata(_) +metadata_provider = PathMetadata(_, _) +metadata_provider = EggMetadata(_) + +# Test IResourceProvider Protocol implementers +resource_provider: IResourceProvider +resource_provider = NullProvider(_) +resource_provider = EggProvider(_) +resource_provider = EmptyProvider() +resource_provider = DefaultProvider(_) +resource_provider = ZipProvider(_) +resource_provider = FileMetadata(_) +resource_provider = PathMetadata(_, _) +resource_provider = EggMetadata(_) + + +# Test EditableStrategy Protocol implementers +editable_strategy: EditableStrategy +editable_strategy = _StaticPth(_, _, _) +editable_strategy = _LinkTree(_, _, _, _) +editable_strategy = _TopLevelFinder(_, _) +# Not EditableStrategy due to incompatible __call__ method +editable_strategy = EnsurePackagesDiscovered(_) # type: ignore +editable_strategy = _EnsurePackagesDiscovered(_, _, _) # type: ignore diff --git a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..d3000e8eb --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/@tests/stubtest_allowlist.txt @@ -0,0 +1,14 @@ +simplejson.JSONDecodeError.__init__ +simplejson.JSONDecoder.__init__ +simplejson.JSONDecoder.decode +simplejson.JSONDecoder.raw_decode +simplejson.JSONEncoder.__init__ +simplejson.decoder.JSONDecoder.__init__ +simplejson.decoder.JSONDecoder.decode +simplejson.decoder.JSONDecoder.raw_decode +simplejson.dump +simplejson.dumps +simplejson.encoder.JSONEncoder.__init__ +simplejson.load +simplejson.loads +simplejson.scanner.JSONDecodeError.__init__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/singledispatch/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/singledispatch/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..b47df9e9a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/singledispatch/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +# Internal utils, we are not interested in them: +singledispatch.helpers diff --git a/packages/pyright-internal/typeshed-fallback/stubs/six/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/six/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..68a54f47f --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/six/@tests/stubtest_allowlist.txt @@ -0,0 +1,35 @@ +# Problems inherited from the standard library +six.BytesIO.readlines +six.BytesIO.seek +six.StringIO.seek +six.StringIO.truncate +six.create_bound_method.__closure__ +six.create_bound_method.__defaults__ +six.moves.* + +# Implemented using "operator" functions in the implementation +six.get_function_closure +six.get_function_code +six.get_function_defaults +six.get_function_globals +six.get_method_function +six.get_method_self +six.viewitems +six.viewkeys +six.viewvalues +# Should be `operator.itemgetter[int]`. But a bug in mypy prevents using TypeVar in itemgetter__call__ +six.byte2int + +# Utils +six.Module_six_moves_urllib +six.Module_six_moves_urllib_error +six.Module_six_moves_urllib_parse +six.Module_six_moves_urllib_request +six.Module_six_moves_urllib_response +six.Module_six_moves_urllib_robotparser + +# Belongs to `django.utils.six` +six.iterlists + +# Unclear problems +six.callable diff --git a/packages/pyright-internal/typeshed-fallback/stubs/slumber/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/slumber/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..15230d95a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/slumber/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +slumber.API.__init__ +slumber.Resource.as_raw diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..9a2ba7626 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +# looks like developer tooling that's not part of the public API +stdlib_list.fetch diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/stripe/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..2bed8ffef --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/@tests/stubtest_allowlist.txt @@ -0,0 +1,8 @@ +# The following methods have custom classmethod decorators +stripe\..*\.delete +stripe\..*PaymentIntent\.confirm +stripe\.api_resources\.test_helpers\.test_clock\.TestClock\.advance +stripe\.api_resources\.test_helpers\.TestClock\.advance +stripe\.api_resources\..*\.SearchableAPIResource\.search # Not defined on the actual class in v3, but expected to exist. +stripe\.api_resources\..*\.SearchableAPIResource\.search_auto_paging_iter # Not defined on the actual class in v3, but expected to exist. +stripe\.api_resources\..*\.Session.expire diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..b142ecf1f --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/@tests/stubtest_allowlist.txt @@ -0,0 +1,4 @@ +# Cannot import in stubtest +tqdm.__main__ +# disco-py fails to install through pip and is an archived project +tqdm.contrib.discord diff --git a/packages/pyright-internal/typeshed-fallback/stubs/translationstring/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/translationstring/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..36d5b3db6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/translationstring/@tests/stubtest_allowlist.txt @@ -0,0 +1,14 @@ +# Error: is not present in stub +# ============================= +# string patterns for internal use that should not be exported +translationstring.CONTEXT_MASK +translationstring.NAME_RE + + +# Error: failed to find stubs +# =========================== +# PY2 compat stuff that is not needed externally +translationstring.compat + +# tests that should not be part of the distribution anyway +translationstring.tests.* diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..13f325bda --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +# No idea what this is, seems to be auto-generated +tree_sitter_languages.core.__test__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist_darwin.txt b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist_darwin.txt new file mode 100644 index 000000000..caab3d656 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist_darwin.txt @@ -0,0 +1,2 @@ +# stubtest/stubgen sees languages.so as a module +tree_sitter_languages.languages diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..caab3d656 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1,2 @@ +# stubtest/stubgen sees languages.so as a module +tree_sitter_languages.languages diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..45a56be70 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/@tests/stubtest_allowlist.txt @@ -0,0 +1,39 @@ +# "self" argument is missing when stubtest inspects these methods +tree_sitter.Node.child_by_field_id +tree_sitter.Node.child_by_field_name +tree_sitter.Node.children_by_field_id +tree_sitter.Node.children_by_field_name +tree_sitter.Node.sexp +tree_sitter.Node.walk +tree_sitter.Parser.parse +tree_sitter.Parser.set_language +tree_sitter.Tree.edit +tree_sitter.Tree.get_changed_ranges +tree_sitter.Tree.walk +tree_sitter.TreeCursor.copy +tree_sitter.TreeCursor.current_field_name +tree_sitter.TreeCursor.goto_first_child +tree_sitter.TreeCursor.goto_next_sibling +tree_sitter.TreeCursor.goto_parent +tree_sitter.binding.Node.child_by_field_id +tree_sitter.binding.Node.child_by_field_name +tree_sitter.binding.Node.children_by_field_id +tree_sitter.binding.Node.children_by_field_name +tree_sitter.binding.Node.sexp +tree_sitter.binding.Node.walk +tree_sitter.binding.Parser.parse +tree_sitter.binding.Parser.set_language +tree_sitter.binding.Query.captures +tree_sitter.binding.Query.matches +tree_sitter.binding.Tree.edit +tree_sitter.binding.Tree.get_changed_ranges +tree_sitter.binding.Tree.walk +tree_sitter.binding.TreeCursor.copy +tree_sitter.binding.TreeCursor.current_field_name +tree_sitter.binding.TreeCursor.goto_first_child +tree_sitter.binding.TreeCursor.goto_next_sibling +tree_sitter.binding.TreeCursor.goto_parent + +# Runtime takes *args and **kwargs and ignores them. Passing arguments is most likely a mistake. +tree_sitter.Parser.__init__ +tree_sitter.binding.Parser.__init__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..caead0434 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/@tests/stubtest_allowlist.txt @@ -0,0 +1,6 @@ +# Implementation details +tzlocal.unix +tzlocal.win32 + +# Internal stuff: +tzlocal.utils.log diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ujson/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/ujson/METADATA.toml index 17781efc4..295659a16 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ujson/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/ujson/METADATA.toml @@ -1 +1 @@ -version = "5.7.*" +version = "5.8.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..0a86c7a63 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/@tests/stubtest_allowlist.txt @@ -0,0 +1,31 @@ +urllib3.NullHandler +urllib3._collections.HTTPHeaderDict.from_httplib +urllib3._collections.HTTPHeaderDict.getlist +urllib3._collections.RLock +urllib3.connection.HTTPConnection.request +urllib3.connection.HTTPSConnection.__init__ +urllib3.connection.VerifiedHTTPSConnection.__init__ +urllib3.connection.VerifiedHTTPSConnection.set_cert +urllib3.connectionpool.ConnectionError +# TODO: remove ResponseCls ignore when https://github.com/python/mypy/issues/13316 is closed +urllib3.connectionpool.HTTPConnectionPool.ResponseCls +urllib3.connectionpool.HTTPConnectionPool.__init__ +urllib3.connectionpool.HTTPConnectionPool.urlopen +urllib3.connectionpool.HTTPSConnectionPool.__init__ +urllib3.connectionpool.VerifiedHTTPSConnection.__init__ +urllib3.connectionpool.VerifiedHTTPSConnection.set_cert +urllib3.poolmanager.PoolManager.connection_from_host +urllib3.poolmanager.PoolManager.connection_from_url +urllib3.poolmanager.PoolManager.urlopen +urllib3.poolmanager.ProxyManager.__init__ +urllib3.poolmanager.ProxyManager.connection_from_host +urllib3.poolmanager.ProxyManager.urlopen +urllib3.request.RequestMethods.request_encode_url +urllib3.response.BrotliDecoder +urllib3.util.connection.poll +urllib3.util.connection.select +urllib3.util.ssl_.create_default_context +urllib3.util.ssl_.ssl_wrap_socket + +# Metaclass differs: +urllib3.util.retry.Retry diff --git a/packages/pyright-internal/typeshed-fallback/stubs/vobject/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/vobject/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..22f329834 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/vobject/@tests/stubtest_allowlist.txt @@ -0,0 +1,22 @@ +# implementation has *args and **kwds arguments that can't be used +vobject.base.VBase.__init__ + +# Only available on Windows +# This module is currently broken on Python 3 +# See: https://github.com/eventable/vobject/pull/187 +vobject.win32tz + +# dependencies +vobject.icalendar.Pytz +vobject.icalendar.pytz + +# python2 compat +vobject.base.basestring +vobject.base.str_ +vobject.base.to_unicode +vobject.base.to_basestring +vobject.vcard.basestring + +# implementation details that users shouldn't depend on +vobject.base.formatter +vobject.base.handler diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..e9d6b575c --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist.txt @@ -0,0 +1,33 @@ +waitress.adjustments.Adjustments.clear_untrusted_proxy_headers +waitress.adjustments.PY2 +waitress.adjustments.string_types +waitress.channel.HTTPChannel.addr +waitress.channel.HTTPChannel.error_task_class +waitress.channel.HTTPChannel.parser_class +waitress.channel.HTTPChannel.request +waitress.channel.HTTPChannel.task_class +waitress.compat.PY2 +waitress.compat.PY3 +waitress.compat.ResourceWarning +waitress.compat.class_types +waitress.compat.exec_ +waitress.compat.integer_types +waitress.compat.qualname +waitress.compat.reraise +waitress.compat.set_nonblocking +waitress.compat.string_types +waitress.compat.text_ +waitress.compat.tobytes +waitress.compat.tostr +waitress.compat.unquote_bytes_to_wsgi +waitress.rfc7230.tobytes +waitress.server.BaseWSGIServer.channel_class +waitress.server.BaseWSGIServer.get_server_name +waitress.server.MultiSocketServer.__init__ +waitress.server.WSGIServer +waitress.task.ErrorTask.content_length +waitress.task.ThreadedTaskDispatcher.start_new_thread +waitress.task.WSGITask.content_length +waitress.rfc7230.BWS +waitress.wasyncore.map +waitress.wasyncore.dispatcher_with_send.handle_write diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist_darwin.txt b/packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist_darwin.txt new file mode 100644 index 000000000..3aad82a7a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist_darwin.txt @@ -0,0 +1 @@ +waitress.server.UnixWSGIServer.get_server_name diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist_linux.txt b/packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist_linux.txt new file mode 100644 index 000000000..3aad82a7a --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/@tests/stubtest_allowlist_linux.txt @@ -0,0 +1 @@ +waitress.server.UnixWSGIServer.get_server_name diff --git a/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000..5842f5953 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +zxcvbn.__main__ From 76f2dd13844a112df00143f4ab992adbfa386da5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 12 Jun 2023 13:36:20 -0700 Subject: [PATCH 281/525] Fixed a bug that led to infinite analysis time and heap exhaustion when analyzing an overloaded function that includes a ParamSpec that uses itself as an argument. This addresses https://github.com/microsoft/pyright/issues/5163. (#5276) Co-authored-by: Eric Traut --- .../src/analyzer/typeUtils.ts | 19 +++++++++--- .../pyright-internal/src/analyzer/types.ts | 12 ++++++- .../src/tests/samples/genericTypes105.py | 31 ++++++++++++++++++- 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index fa7a57e01..b2bdb0ee0 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -210,7 +210,7 @@ export interface InferenceContext { } export interface SignatureWithOffsets { - type: FunctionType; + type: FunctionType | OverloadedFunctionType; expressionOffsets: number[]; } @@ -227,20 +227,29 @@ export class UniqueSignatureTracker { this._signaturesSeen = []; } - findSignature(signature: FunctionType): SignatureWithOffsets | undefined { + findSignature(signature: FunctionType | OverloadedFunctionType): SignatureWithOffsets | undefined { + // Use the associated overload type if this is a function associated with an overload. + let effectiveSignature = signature; + if (isFunction(signature) && signature.overloaded) { + effectiveSignature = signature.overloaded; + } + return this._signaturesSeen.find((s) => { - return isTypeSame(signature, s.type); + return isTypeSame(effectiveSignature, s.type); }); } addSignature(signature: FunctionType, offset: number) { - const existingSignature = this.findSignature(signature); + // If this function is part of a broader overload, use the overload instead. + const effectiveSignature = signature.overloaded ?? signature; + + const existingSignature = this.findSignature(effectiveSignature); if (existingSignature) { if (!existingSignature.expressionOffsets.some((o) => o === offset)) { existingSignature.expressionOffsets.push(offset); } } else { - this._signaturesSeen.push({ type: signature, expressionOffsets: [offset] }); + this._signaturesSeen.push({ type: effectiveSignature, expressionOffsets: [offset] }); } } } diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 923537b7c..79d2a813d 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1351,6 +1351,10 @@ export interface FunctionType extends TypeBase { // The type var scope for the class that the function was bound to boundTypeVarScopeId?: TypeVarScopeId | undefined; + + // If this function is part of an overloaded function, this + // refers back to the overloaded function type. + overloaded?: OverloadedFunctionType; } export namespace FunctionType { @@ -1894,14 +1898,20 @@ export namespace OverloadedFunctionType { export function create(overloads: FunctionType[]) { const newType: OverloadedFunctionType = { category: TypeCategory.OverloadedFunction, - overloads, + overloads: [], flags: TypeFlags.Instance, }; + + overloads.forEach((overload) => { + OverloadedFunctionType.addOverload(newType, overload); + }); + return newType; } // Adds a new overload or an implementation. export function addOverload(type: OverloadedFunctionType, functionType: FunctionType) { + functionType.overloaded = type; type.overloads.push(functionType); } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes105.py b/packages/pyright-internal/src/tests/samples/genericTypes105.py index 1205a9139..df67cafb1 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes105.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes105.py @@ -2,7 +2,7 @@ # as an argument to another generic function multiple times. from dataclasses import dataclass -from typing import Generic, TypeVar, Callable +from typing import Any, Generic, Literal, ParamSpec, TypeVar, Callable, overload T = TypeVar("T") A = TypeVar("A") @@ -12,6 +12,7 @@ X = TypeVar("X") Y = TypeVar("Y") Z = TypeVar("Z") +P = ParamSpec("P") def identity(x: T) -> T: @@ -112,3 +113,31 @@ def test_4(pair: Pair[Pair[Pair[A, B], C], D]) -> Pair[Pair[Pair[A, B], C], D]: ) val2 = val1(pair) return val2 + + +@overload +def test_5( + a: type[Callable[P, type[T]]], *, b: Literal[False, None] = ... +) -> type[list[type[T]]]: + ... + + +@overload +def test_5(a: T, *args: int, b: Literal[False, None] = ...) -> type[list[T]]: + ... + + +@overload +def test_5(a: T, *args: int, b: Literal[True] = ...) -> type[list[T]]: + ... + + +def test_5(a: Any, *args: int, b: Any = ...) -> Any: + ... + + +val3 = test_5(test_5, **{}) +reveal_type( + val3, + expected_text="Type[list[Overload[(a: Type[(**P(1)@test_5) -> Type[T(1)@test_5]], *, b: Literal[False] | None = ...) -> Type[list[Type[T(1)@test_5]]], (a: T(1)@test_5, *args: int, b: Literal[False] | None = ...) -> Type[list[T(1)@test_5]], (a: T(1)@test_5, *args: int, b: Literal[True] = ...) -> Type[list[T(1)@test_5]], (a: Any, *args: int, b: Any = ...) -> Any]]]", +) From 810f37f5fdb0366cee15279b351d1a22bc4a97c6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 12 Jun 2023 14:18:29 -0700 Subject: [PATCH 282/525] Fixed a bug that led to a false positive `reportIncompatibleMethodOverride` error for overloaded method overrides in cases where the overloads are differentiated based on explicit types for the `self` or `cls` parameter. This addresses https://github.com/microsoft/pyright/discussions/5275. (#5279) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 6ab07cda7..d6e5febfd 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24250,7 +24250,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions baseOverload, overrideOverload, /* diag */ undefined, - enforceParamNames + enforceParamNames, + /* exemptSelfClsParam */ false ); }); @@ -24273,11 +24274,18 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } + // Determines whether the override method is compatible with the base method. + // If enforceParamNames is true, the parameter names of non-positional-only + // parameters are enforced. If exemptSelfClsParam is true, the "self" and "cls" + // parameters are exempted from type checks. This is normally the case except + // with overloaded method overrides where the "self" or "cls" parameter type + // must be honored to differentiate between overloads. function validateOverrideMethodInternal( baseMethod: FunctionType, overrideMethod: FunctionType, diag: DiagnosticAddendum | undefined, - enforceParamNames: boolean + enforceParamNames: boolean, + exemptSelfClsParam = true ): boolean { const baseParamDetails = getParameterListDetails(baseMethod); const overrideParamDetails = getParameterListDetails(overrideMethod); @@ -24377,7 +24385,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If the first parameter is a "self" or "cls" parameter, skip the // test because these are allowed to violate the Liskov substitution // principle. - if (i === 0) { + if (i === 0 && exemptSelfClsParam) { if ( FunctionType.isInstanceMethod(overrideMethod) || FunctionType.isClassMethod(overrideMethod) || @@ -24438,7 +24446,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const baseIsSynthesizedTypeVar = isTypeVar(baseParamType) && baseParamType.details.isSynthesized; const overrideIsSynthesizedTypeVar = isTypeVar(overrideParamType) && overrideParamType.details.isSynthesized; - if (!baseIsSynthesizedTypeVar && !overrideIsSynthesizedTypeVar) { + if (!exemptSelfClsParam || (!baseIsSynthesizedTypeVar && !overrideIsSynthesizedTypeVar)) { if ( baseParam.category !== overrideParam.category || !assignType( From b0c108f23667144d30261e2cc43054eb6bfb4ffb Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 12 Jun 2023 15:43:24 -0700 Subject: [PATCH 283/525] Updated issue templates. --- .github/ISSUE_TEMPLATE/bug_report.md | 8 ++++---- .github/ISSUE_TEMPLATE/feature_request.md | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 538c593c7..086e0d143 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,8 +1,8 @@ --- name: Bug report -about: Create a report to help us improve pyright +about: Report incorrect or unintended behaviors title: '' -labels: '' +labels: bug assignees: '' --- @@ -20,7 +20,7 @@ Steps to reproduce the behavior. **Expected behavior** A clear and concise description of what you expected to happen. -**Screenshots or Code** +**Code or Screenshots** If possible, provide a minimal, self-contained code sample (surrounded by triple back ticks) to demonstrate the issue. The code should define or imports all referenced symbols. ```python @@ -31,7 +31,7 @@ def foo(self) -> str: If your code relies on symbols that are imported from a third-party library, include the associated import statements and specify which versions of those libraries you have installed. **VS Code extension or command-line** -Are you running pyright as a VS Code extension or a command-line tool? Which version? You can find the version of the VS Code extension by clicking on the Pyright icon in the extensions panel. +Are you running pyright as a VS Code extension, a language server in another editor, or the command-line tool? Which version? **Additional context** Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 1bb546d0b..34c06b0be 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,12 +1,14 @@ --- name: Feature request -about: Suggest an idea for pyright +about: Suggest an idea or improvement title: '' labels: enhancement request assignees: '' --- +If you have a question about a behavior that you’re seeing in Pyright, consider posting to the [Pyright discussion forum](https://github.com/microsoft/pyright/discussions). + **Is your feature request related to a problem? Please describe.** A clear and concise description of the problem. From f7b3a1dd7f72cddf7f75d7d6c0e8f24f6bc2aeec Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 13 Jun 2023 14:27:15 -0700 Subject: [PATCH 284/525] Fixed a regression that caused an incorrect type evaluation of a function that returns a callable with a ParamSpec that does not appear outside of the return type annotation. This addresses https://github.com/microsoft/pyright/issues/5283. (#5284) Co-authored-by: Eric Traut --- .../src/analyzer/typeUtils.ts | 5 +- .../src/tests/samples/genericTypes58.py | 49 ++++++++++--------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index b2bdb0ee0..7ac35f80b 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3810,7 +3810,10 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { let useDefaultOrUnknown = false; if (this._options.unknownIfNotFound && !this._typeVarContext.hasSolveForScope(WildcardTypeVarScopeId)) { - useDefaultOrUnknown = true; + const exemptTypeVars = this._options.unknownExemptTypeVars ?? []; + if (!exemptTypeVars.some((t) => isTypeSame(t, paramSpec))) { + useDefaultOrUnknown = true; + } } else if (this._options.applyInScopePlaceholders && paramSpec.isInScopePlaceholder) { useDefaultOrUnknown = true; } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes58.py b/packages/pyright-internal/src/tests/samples/genericTypes58.py index 98f327a21..6dcf920c6 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes58.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes58.py @@ -2,20 +2,14 @@ # within unions, where the TypeVar may not be solved during constraint # solving. -from typing import ( - Awaitable, - Callable, - Generic, - List, - TypeVar, - Union, -) +from typing import Awaitable, Callable, Generic, ParamSpec, TypeVar _T = TypeVar("_T") +_P = ParamSpec("_P") -def func1(x: Union[str, None, _T]) -> Union[str, None, _T]: +def func1(x: str | None | _T) -> str | None | _T: ... @@ -24,37 +18,46 @@ def func1(x: Union[str, None, _T]) -> Union[str, None, _T]: reveal_type(func1(3), expected_text="str | int | None") -def func2(x: Union[str, None, _T]) -> List[Union[str, None, _T]]: +def func2(x: str | None | _T) -> list[str | None | _T]: ... -reveal_type(func2(None), expected_text="List[str | None]") -reveal_type(func2("hi"), expected_text="List[str | None]") -reveal_type(func2(3), expected_text="List[str | int | None]") +reveal_type(func2(None), expected_text="list[str | None]") +reveal_type(func2("hi"), expected_text="list[str | None]") +reveal_type(func2(3), expected_text="list[str | int | None]") -CallbackSig = Callable[..., Awaitable[None]] -CallbackSigT = TypeVar("CallbackSigT", bound="CallbackSig") +Callback = Callable[..., Awaitable[None]] +_C = TypeVar("_C", bound=Callback) -class UsesFoo(Generic[CallbackSigT]): +class UsesFoo(Generic[_C]): ... -def dec1() -> Callable[ - [Union[CallbackSigT, UsesFoo[CallbackSigT]]], UsesFoo[CallbackSigT] -]: +def decorator1() -> Callable[[_C | UsesFoo[_C]], UsesFoo[_C]]: ... -@dec1() -async def bars() -> None: +@decorator1() +async def func3() -> None: ... -def get_first(l: list): +def func4(l: list): return next(iter(l), None) -val = get_first([]) +val = func4([]) reveal_type(val, expected_text="Unknown | None") + + +def func5() -> Callable[[Callable[_P, _T]], Callable[_P, _T]]: + ... + + +def func6(x: int) -> str: + ... + + +reveal_type(func5()(func6), expected_text="(x: int) -> str") From 0b49479dfff6f4f3aa95d425deac0da3df420496 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 13 Jun 2023 20:21:13 -0700 Subject: [PATCH 285/525] Published 1.1.314 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index acf0ef436..9a43a7d06 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.313", + "version": "1.1.314", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index ac7be7dad..84999835c 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.313", + "version": "1.1.314", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.313", + "version": "1.1.314", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index f3a31675d..2509d184f 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.313", + "version": "1.1.314", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index ddaa0279f..66446e5a9 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.313", + "version": "1.1.314", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.313", + "version": "1.1.314", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index ca876e473..3831a19b0 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.313", + "version": "1.1.314", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index aaf3720ea..4a0ff0208 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.313", + "version": "1.1.314", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.313", + "version": "1.1.314", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index ab166c626..d277dced7 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.313", + "version": "1.1.314", "private": true, "license": "MIT", "author": { From ae795f5b8ee3e112c58206ab8855c7e8be424d3d Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 14 Jun 2023 10:09:58 -0700 Subject: [PATCH 286/525] pull-pylance-with-pyright-1.1.314 (#5293) --- .../pyright-internal/src/analyzer/program.ts | 29 ++--------- .../pyright-internal/src/analyzer/service.ts | 14 ++---- .../src/common/extensibility.ts | 17 +++++-- .../src/common/workspaceEditUtils.ts | 49 ++++++++----------- .../src/languageServerBase.ts | 4 +- .../src/languageService/completionProvider.ts | 3 ++ .../src/tests/workspaceEditUtils.test.ts | 5 +- 7 files changed, 50 insertions(+), 71 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 964cc44f8..7dd85286f 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -19,7 +19,7 @@ import { assert } from '../common/debug'; import { Diagnostic } from '../common/diagnostic'; import { FileDiagnostics } from '../common/diagnosticSink'; import { FileEditAction } from '../common/editAction'; -import { Extensions, ProgramMutator, ProgramView } from '../common/extensibility'; +import { EditableProgram, Extensions, ProgramView } from '../common/extensibility'; import { LogTracker } from '../common/logTracker'; import { combinePaths, @@ -672,33 +672,10 @@ export class Program { // This will allow the callback to execute a type evaluator with an associated // cancellation token and provide a mutable program. Should already be in edit mode when called. - runWithMutation(callback: (v: ProgramView, m: ProgramMutator) => void, token: CancellationToken): void { + runEditMode(callback: (v: EditableProgram) => void, token: CancellationToken): void { if (this._isEditMode) { - // Create a temporary mutator that doesn't talk to the - // background thread. In edit mode there is no background thread. - const mutator: ProgramMutator = { - addInterimFile: (f) => { - return this.addInterimFile(f); - }, - setFileOpened: (p, v, c, i, ch, r) => { - this.setFileOpened(p, v, c, { - isTracked: this.owns(p), - ipythonMode: i, - chainedFilePath: ch, - realFilePath: r, - }); - }, - updateOpenFileContents: (p, v, c, i, r) => { - this.setFileOpened(p, v, c, { - isTracked: this.owns(p), - ipythonMode: i, - chainedFilePath: undefined, - realFilePath: r, - }); - }, - }; const evaluator = this._evaluator ?? this._createNewEvaluator(); - evaluator.runWithCancellationToken(token, () => callback(this, mutator)); + evaluator.runWithCancellationToken(token, () => callback(this)); } } diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 93092c694..28ae4f6f0 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -19,7 +19,7 @@ import { ConfigOptions, matchFileSpecs } from '../common/configOptions'; import { ConsoleInterface, LogLevel, StandardConsole, log } from '../common/console'; import { Diagnostic } from '../common/diagnostic'; import { FileEditAction } from '../common/editAction'; -import { Extensions, ProgramMutator, ProgramView } from '../common/extensibility'; +import { EditableProgram, Extensions, ProgramMutator, ProgramView } from '../common/extensibility'; import { FileSystem, FileWatcher, FileWatcherEventType, ignoredWatchEventFunction } from '../common/fileSystem'; import { Host, HostFactory, NoAccessHost } from '../common/host'; import { defaultStubsDirectory } from '../common/pathConsts'; @@ -231,20 +231,16 @@ export class AnalyzerService { return service; } - runEditMode(callback: (v: ProgramView, m: ProgramMutator) => void, token: CancellationToken) { + runEditMode(callback: (e: EditableProgram) => void, token: CancellationToken) { let edits: FileEditAction[] = []; - const disposable = token.onCancellationRequested(() => { - edits = []; - this._backgroundAnalysisProgram.exitEditMode(); - }); this._backgroundAnalysisProgram.enterEditMode(); try { - this._program.runWithMutation(callback, token); + this._program.runEditMode(callback, token); } finally { - disposable.dispose(); edits = this._backgroundAnalysisProgram.exitEditMode(); } - return edits; + + return token.isCancellationRequested ? [] : edits; } dispose() { diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index 65035f105..6b88ae87e 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -98,15 +98,26 @@ export interface ProgramView { preferStubs?: boolean ): SourceMapper; - // See whether we can get rid of these 2 methods + // Consider getDiagnosticsForRange to call `analyzeFile` automatically if the file is not analyzed. + analyzeFile(filePath: string, token: CancellationToken): boolean; + getDiagnosticsForRange(filePath: string, range: Range): Diagnostic[]; + + // See whether we can get rid of these methods getBoundSourceFileInfo(file: string, content?: string, force?: boolean): prog.SourceFileInfo | undefined; handleMemoryHighUsage(): void; clone(): prog.Program; - analyzeFile(filePath: string, token: CancellationToken): boolean; - getDiagnosticsForRange(filePath: string, range: Range): Diagnostic[]; +} + +// This exposes some APIs to mutate program. Unlike ProgramMutator, this will only mutate this program +// and doesn't forward the request to the BG thread. +// One can use this when edits are temporary such as `runEditMode` or `test` +export interface EditableProgram extends ProgramView { + addInterimFile(file: string): void; + setFileOpened(filePath: string, version: number | null, contents: string, options?: prog.OpenFileOptions): void; } // Mutable wrapper around a program. Allows the FG thread to forward this request to the BG thread +// Any edits made to this program will persist and mutate the program's state permanently. export interface ProgramMutator { addInterimFile(file: string): void; setFileOpened( diff --git a/packages/pyright-internal/src/common/workspaceEditUtils.ts b/packages/pyright-internal/src/common/workspaceEditUtils.ts index e2a3ab214..02e669910 100644 --- a/packages/pyright-internal/src/common/workspaceEditUtils.ts +++ b/packages/pyright-internal/src/common/workspaceEditUtils.ts @@ -23,7 +23,7 @@ import { convertPathToUri, convertUriToPath } from '../common/pathUtils'; import { createMapFromItems } from './collectionUtils'; import { isArray } from './core'; import { assertNever } from './debug'; -import { ProgramMutator, ProgramView, SourceFileInfo } from './extensibility'; +import { EditableProgram, SourceFileInfo } from './extensibility'; import { ReadOnlyFileSystem } from './fileSystem'; import { convertRangeToTextRange, convertTextRangeToRange } from './positionUtils'; import { TextRange } from './textRange'; @@ -101,22 +101,17 @@ export function applyTextEditsToString( return current; } -export function applyWorkspaceEdit( - view: ProgramView, - mutator: ProgramMutator, - edits: WorkspaceEdit, - filesChanged: Set -) { +export function applyWorkspaceEdit(program: EditableProgram, edits: WorkspaceEdit, filesChanged: Set) { if (edits.changes) { for (const kv of Object.entries(edits.changes)) { - const filePath = convertUriToPath(view.fileSystem, kv[0]); - const fileInfo = view.getSourceFileInfo(filePath); + const filePath = convertUriToPath(program.fileSystem, kv[0]); + const fileInfo = program.getSourceFileInfo(filePath); if (!fileInfo || !fileInfo.isTracked) { // We don't allow non user file being modified. continue; } - applyDocumentChanges(mutator, fileInfo, kv[1]); + applyDocumentChanges(program, fileInfo, kv[1]); filesChanged.add(filePath); } } @@ -125,14 +120,14 @@ export function applyWorkspaceEdit( if (edits.documentChanges) { for (const change of edits.documentChanges) { if (TextDocumentEdit.is(change)) { - const filePath = convertUriToPath(view.fileSystem, change.textDocument.uri); - const fileInfo = view.getSourceFileInfo(filePath); + const filePath = convertUriToPath(program.fileSystem, change.textDocument.uri); + const fileInfo = program.getSourceFileInfo(filePath); if (!fileInfo || !fileInfo.isTracked) { // We don't allow non user file being modified. continue; } - applyDocumentChanges(mutator, fileInfo, change.edits); + applyDocumentChanges(program, fileInfo, change.edits); filesChanged.add(filePath); } @@ -142,29 +137,27 @@ export function applyWorkspaceEdit( } } -export function applyDocumentChanges(mutator: ProgramMutator, fileInfo: SourceFileInfo, edits: TextEdit[]) { +export function applyDocumentChanges(program: EditableProgram, fileInfo: SourceFileInfo, edits: TextEdit[]) { if (!fileInfo.isOpenByClient) { const fileContent = fileInfo.sourceFile.getFileContent(); - mutator.setFileOpened( - fileInfo.sourceFile.getFilePath(), - 0, - fileContent ?? '', - fileInfo.sourceFile.getIPythonMode(), - fileInfo.sourceFile.getRealFilePath() - ); + program.setFileOpened(fileInfo.sourceFile.getFilePath(), 0, fileContent ?? '', { + isTracked: fileInfo.isTracked, + ipythonMode: fileInfo.sourceFile.getIPythonMode(), + chainedFilePath: fileInfo.chainedSourceFile?.sourceFile.getFilePath(), + realFilePath: fileInfo.sourceFile.getRealFilePath(), + }); } const version = fileInfo.sourceFile.getClientVersion() ?? 0; const filePath = fileInfo.sourceFile.getFilePath(); const sourceDoc = TextDocument.create(filePath, 'python', version, fileInfo.sourceFile.getOpenFileContents() ?? ''); - mutator.updateOpenFileContents( - filePath, - version + 1, - TextDocument.applyEdits(sourceDoc, edits), - fileInfo.sourceFile.getIPythonMode(), - fileInfo.sourceFile.getRealFilePath() - ); + program.setFileOpened(filePath, version + 1, TextDocument.applyEdits(sourceDoc, edits), { + isTracked: fileInfo.isTracked, + ipythonMode: fileInfo.sourceFile.getIPythonMode(), + chainedFilePath: fileInfo.chainedSourceFile?.sourceFile.getFilePath(), + realFilePath: fileInfo.sourceFile.getRealFilePath(), + }); } export function generateWorkspaceEdit( diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 13de26b67..fc0062ab7 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -231,7 +231,7 @@ const nullProgressReporter = attachWorkDone(undefined as any, /* params */ undef * Additional DiagnosticTag values that are specific to Visual Studio. * These must match the values in https://dev.azure.com/devdiv/DevDiv/_git/vslanguageserverclient?path=%2Fsrc%2Fproduct%2FProtocol%2FLanguageServer.Protocol.Extensions%2FVSDiagnosticTags.cs&version=GBdevelop&_a=contents */ -namespace VSDiagnosticTag { +export namespace VSDiagnosticTag { /** * A diagnostic entry generated by the build. */ @@ -285,7 +285,7 @@ namespace VSDiagnosticTag { * DiagnosticRank values that are specific to Visual Studio. * These must match the values in https://dev.azure.com/devdiv/DevDiv/_git/vslanguageserverclient?path=/src/product/Protocol/LanguageServer.Protocol.Extensions/VSDiagnosticRank.cs&version=GBdevelop&_a=contents */ -namespace VSDiagnosticRank { +export namespace VSDiagnosticRank { export const Highest = 100; export const High = 200; export const Default = 300; diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 4f360d320..9ed7406b2 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -617,6 +617,9 @@ export class CompletionProvider { completionMap: CompletionMap, detail: SymbolDetail ) { + // Make sure we don't crash due to OOM. + this.program.handleMemoryHighUsage(); + let primaryDecl = getLastTypedDeclaredForSymbol(symbol); if (!primaryDecl) { const declarations = symbol.getDeclarations(); diff --git a/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts b/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts index cdfa38e9b..2a9fafc59 100644 --- a/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts +++ b/packages/pyright-internal/src/tests/workspaceEditUtils.test.ts @@ -315,9 +315,8 @@ test('test generateWorkspaceEdits', async () => { }); function applyWorkspaceEditToService(service: AnalyzerService, edits: WorkspaceEdit, filesChanged: Set) { - const view = service.backgroundAnalysisProgram.program; - const mutator = service; - applyWorkspaceEdit(view, mutator, edits, filesChanged); + const program = service.backgroundAnalysisProgram.program; + applyWorkspaceEdit(program, edits, filesChanged); } async function getClonedService(state: TestState) { From 4d27f864b20c596823ab3b6d0cbe52e4732a80a5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 14 Jun 2023 11:00:55 -0700 Subject: [PATCH 287/525] Fixed a regression that caused a false positive `reportMissingTypeArgument` diagnostic when using a generic type in conjunction with the `|` union operator in the second argument to an `isinstance` or `issubclass` call. This addresses https://github.com/microsoft/pyright/issues/5294. (#5295) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 12 +++++++----- .../src/analyzer/typeEvaluatorTypes.ts | 5 ++++- .../src/tests/samples/genericTypes33.py | 7 +++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d6e5febfd..793dfd744 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -4603,7 +4603,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Is this a generic class that needs to be specialized? if (isInstantiableClass(type)) { - if ((flags & EvaluatorFlags.ExpectingType) !== 0) { + if ((flags & EvaluatorFlags.ExpectingType) !== 0 && (flags & EvaluatorFlags.AllowMissingTypeArgs) === 0) { if (!type.typeAliasInfo && requiresTypeArguments(type)) { if (!type.typeArguments || !type.isTypeArgumentExplicit) { addDiagnostic( @@ -4617,6 +4617,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } } + if (!type.typeArguments) { type = createSpecializedClassType(type, /* typeArgs */ undefined, flags, node)?.type; } @@ -10293,7 +10294,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ['isinstance', 'issubclass'].some((name) => name === typeResult.type.details.builtInName) && validateArgTypeParams.length === 2 ) { - validateArgTypeParams[1].expectingType = true; + validateArgTypeParams[1].isinstanceParam = true; } return { @@ -11142,8 +11143,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (argParam.argType) { argType = argParam.argType; } else { - const flags = argParam.expectingType - ? EvaluatorFlags.EvaluateStringLiteralAsType | + const flags = argParam.isinstanceParam + ? EvaluatorFlags.AllowMissingTypeArgs | + EvaluatorFlags.EvaluateStringLiteralAsType | EvaluatorFlags.DisallowParamSpec | EvaluatorFlags.DisallowTypeVarTuple : EvaluatorFlags.None; @@ -11195,7 +11197,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Was the argument's type precomputed by the caller? if (argParam.argType) { argType = argParam.argType; - } else if (argParam.expectingType && !argParam.argument.typeResult && argParam.argument.valueExpression) { + } else if (argParam.isinstanceParam && !argParam.argument.typeResult && argParam.argument.valueExpression) { const argTypeResult = getTypeOfExpression( argParam.argument.valueExpression, EvaluatorFlags.EvaluateStringLiteralAsType | diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 0d3d20678..5780f18a7 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -89,6 +89,9 @@ export const enum EvaluatorFlags { // flagged as errors. ExpectingTypeAnnotation = 1 << 8, + // Suppress the reportMissingTypeArgument diagnostic in this context. + AllowMissingTypeArgs = 1 << 9, + // The Generic class type is allowed in this context. It is // normally not allowed if ExpectingType is set. AllowGenericClassType = 1 << 10, @@ -266,7 +269,7 @@ export interface ValidateArgTypeParams { paramName?: string | undefined; isParamNameSynthesized?: boolean; mapsToVarArgList?: boolean | undefined; - expectingType?: boolean; + isinstanceParam?: boolean; } export interface AnnotationTypeOptions { diff --git a/packages/pyright-internal/src/tests/samples/genericTypes33.py b/packages/pyright-internal/src/tests/samples/genericTypes33.py index 52704a61f..1f54cf634 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes33.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes33.py @@ -44,3 +44,10 @@ class Class3(Generic[_T1, _T2]): # This should generate an error when reportMissingTypeArgument is enabled. def func1() -> collections.deque: ... + + +def func2(obj: object): + if isinstance(obj, Class1): + pass + if isinstance(obj, Class1 | Class2): + pass From 7bfe3153ce77d82dc9e93459663db9f1d854b05c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 14 Jun 2023 12:24:35 -0700 Subject: [PATCH 288/525] Modified protocol matching and the constraint solver to handle an edge case where a partially-solved type variable with a solution of `Any` are provided by other argument types in a call. This addresses https://github.com/microsoft/pyright/issues/5243. (#5296) Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 5 ++++- packages/pyright-internal/src/analyzer/protocols.ts | 3 +-- .../pyright-internal/src/tests/samples/protocol41.py | 12 ++++++++---- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 1a1bc0ec8..9d98ed629 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -451,7 +451,10 @@ export function assignTypeToTypeVar( ) ) { // The srcType is narrower than the current wideTypeBound, so replace it. - newWideTypeBound = adjSrcType; + // If it's Any, don't replace it because Any is the narrowest type already. + if (!isAny(curWideTypeBound)) { + newWideTypeBound = adjSrcType; + } } else if ( !evaluator.assignType( adjSrcType, diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index 443da9d8d..5bf99f3a2 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -15,7 +15,6 @@ import { assignProperty } from './properties'; import { TypeEvaluator } from './typeEvaluatorTypes'; import { ClassType, - isAnyOrUnknown, isClassInstance, isFunction, isInstantiableClass, @@ -605,7 +604,7 @@ function createProtocolTypeVarContext( if (index < specializedDestType.typeArguments!.length) { const typeArg = specializedDestType.typeArguments![index]; - if (!requiresSpecialization(typeArg) && !isAnyOrUnknown(typeArg)) { + if (!requiresSpecialization(typeArg)) { const typeParamVariance = TypeVarType.getVariance(typeParam); protocolTypeVarContext.setTypeVarType( typeParam, diff --git a/packages/pyright-internal/src/tests/samples/protocol41.py b/packages/pyright-internal/src/tests/samples/protocol41.py index 495c43716..354a0e465 100644 --- a/packages/pyright-internal/src/tests/samples/protocol41.py +++ b/packages/pyright-internal/src/tests/samples/protocol41.py @@ -2,7 +2,7 @@ # a type variable can be matched if that type variable's type is # supplied by another argument in a call. -from typing import Protocol, TypeVar +from typing import Any, Protocol, TypeVar _T_co = TypeVar("_T_co", covariant=True) _T_contra = TypeVar("_T_contra", contravariant=True) @@ -40,9 +40,13 @@ def write(self, __buffer: Buffer) -> int: raise NotImplementedError -def f(s: SupportsRead[MyAnyStr], t: SupportsWrite[MyAnyStr]) -> None: +def func1(s: SupportsRead[MyAnyStr], t: SupportsWrite[MyAnyStr]) -> None: ... -def h(src: SupportsRead[MyBytes], tgt: BufferedWriter) -> None: - f(src, tgt) +def test1(src: SupportsRead[MyBytes], tgt: BufferedWriter) -> None: + func1(src, tgt) + + +def test2(src: Any, tgt: BufferedWriter) -> None: + func1(src, tgt) From b0c4716f7b67ac946c9c50f317cedb578317f0bf Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 14 Jun 2023 15:52:11 -0700 Subject: [PATCH 289/525] Fixed a bug that leads to a false positive error in the `reportIncompatibleMethodOverride` check when a child class is overriding an overloaded method in the base class and one or more of the overloads doesn't apply because the `self` or `cls` parameter is explicitly annotated in a way that's not applicable to the child class. This addresses https://github.com/microsoft/pyright/issues/5288. (#5302) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/checker.ts | 3 + .../src/analyzer/typeEvaluator.ts | 92 +++++++++++++--- .../src/analyzer/typeEvaluatorTypes.ts | 1 + .../src/tests/samples/methodOverride6.py | 101 ++++++++++++++++++ 4 files changed, 182 insertions(+), 15 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index e6f0250b9..4f62d18eb 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -5328,6 +5328,7 @@ export class Checker extends ParseTreeWalker { !this._evaluator.validateOverrideMethod( overriddenType, overrideFunction, + /* baseClass */ undefined, diagAddendum, /* enforceParamNameMatch */ true ) @@ -5613,6 +5614,7 @@ export class Checker extends ParseTreeWalker { !this._evaluator.validateOverrideMethod( baseType, overrideType, + childClassType, diagAddendum, enforceParamNameMatch ) @@ -5768,6 +5770,7 @@ export class Checker extends ParseTreeWalker { !this._evaluator.validateOverrideMethod( baseClassMethodType, subclassMethodType, + childClassType, diagAddendum.createAddendum() ) ) { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 793dfd744..790da89aa 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24197,6 +24197,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function validateOverrideMethod( baseMethod: Type, overrideMethod: FunctionType | OverloadedFunctionType, + baseClass: ClassType | undefined, diag: DiagnosticAddendum, enforceParamNames = true ): boolean { @@ -24235,9 +24236,19 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // For a non-overloaded method overriding an overloaded method, the // override must match all of the overloads. if (isFunction(overrideMethod)) { - return OverloadedFunctionType.getOverloads(baseMethod).every((overload) => - validateOverrideMethodInternal(overload, overrideMethod, diag?.createAddendum(), enforceParamNames) - ); + return OverloadedFunctionType.getOverloads(baseMethod).every((overload) => { + // If the override isn't applicable for this base class, skip the check. + if (baseClass && !isOverrideMethodApplicable(overload, baseClass)) { + return true; + } + + return validateOverrideMethodInternal( + overload, + overrideMethod, + diag?.createAddendum(), + enforceParamNames + ); + }); } // For an overloaded method overriding an overloaded method, the overrides @@ -24246,8 +24257,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let previousMatchIndex = -1; let overrideOverloadIndex = 0; + const baseOverloads = OverloadedFunctionType.getOverloads(baseMethod); + for (const overrideOverload of OverloadedFunctionType.getOverloads(overrideMethod)) { - const matchIndex = OverloadedFunctionType.getOverloads(baseMethod).findIndex((baseOverload) => { + const matchIndex = baseOverloads.findIndex((baseOverload) => { + // If the override isn't applicable for this base class, skip the check. + if (baseClass && !isOverrideMethodApplicable(baseOverload, baseClass)) { + return false; + } + return validateOverrideMethodInternal( baseOverload, overrideOverload, @@ -24276,12 +24294,57 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } - // Determines whether the override method is compatible with the base method. - // If enforceParamNames is true, the parameter names of non-positional-only - // parameters are enforced. If exemptSelfClsParam is true, the "self" and "cls" - // parameters are exempted from type checks. This is normally the case except - // with overloaded method overrides where the "self" or "cls" parameter type - // must be honored to differentiate between overloads. + // Determines whether a child class override is applicable to a parent + // class method signature. This is important in cases where the parent + // class defines an overload where some of the overload signatures supply + // explicit type annotations for the "self" or "cls" parameter and some + // of these do not apply to the child class. + function isOverrideMethodApplicable(baseMethod: FunctionType, childClass: ClassType): boolean { + if ( + !FunctionType.isInstanceMethod(baseMethod) && + !FunctionType.isClassMethod(baseMethod) && + !FunctionType.isConstructorMethod(baseMethod) + ) { + return true; + } + + const baseParamDetails = getParameterListDetails(baseMethod); + if (baseParamDetails.params.length === 0) { + return true; + } + + const baseParamType = baseParamDetails.params[0].param; + + if (baseParamType.category !== ParameterCategory.Simple || !baseParamType.hasDeclaredType) { + return true; + } + + // If this is a self or cls parameter, determine whether the override + // class can be assigned to the base parameter type. If not, then this + // override doesn't apply. This is important for overloads where the + // base class contains some overload signatures that are not applicable + // to the child class. + const childSelfOrClsType = FunctionType.isInstanceMethod(baseMethod) + ? ClassType.cloneAsInstance(childClass) + : childClass; + + return assignType( + baseParamType.type, + childSelfOrClsType, + /* diag */ undefined, + /* destTypeVarContext */ undefined, + /* srcTypeVarContext */ undefined, + AssignTypeFlags.SkipSolveTypeVars + ); + } + + // Determines whether the override method is compatible with the overridden method. + // This is used both for parent/child overrides and implicit overrides for peer + // classes in a multi-inheritance case. If enforceParamNames is true, the parameter + // names of non-positional-only parameters are enforced. If exemptSelfClsParam + // is true, the "self" and "cls" parameters are exempted from type checks. + // This is normally the case except with overloaded method overrides where the + // "self" or "cls" parameter type must be honored to differentiate between overloads. function validateOverrideMethodInternal( baseMethod: FunctionType, overrideMethod: FunctionType, @@ -24310,8 +24373,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions diag?.addMessage(Localizer.DiagnosticAddendum.overrideNotClassMethod()); canOverride = false; } - } - if (FunctionType.isInstanceMethod(baseMethod)) { + } else if (FunctionType.isInstanceMethod(baseMethod)) { if (!FunctionType.isInstanceMethod(overrideMethod)) { diag?.addMessage(Localizer.DiagnosticAddendum.overrideNotInstanceMethod()); canOverride = false; @@ -24526,14 +24588,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions paramInfo.source === ParameterSource.KeywordOnly && paramInfo.param.category === ParameterCategory.Simple ); - const overrideWkOnlyParams = overrideParamDetails.params.filter( + const overrideKwOnlyParams = overrideParamDetails.params.filter( (paramInfo) => paramInfo.source === ParameterSource.KeywordOnly && paramInfo.param.category === ParameterCategory.Simple ); baseKwOnlyParams.forEach((paramInfo) => { - const overrideParamInfo = overrideWkOnlyParams.find((pi) => paramInfo.param.name === pi.param.name); + const overrideParamInfo = overrideKwOnlyParams.find((pi) => paramInfo.param.name === pi.param.name); if (!overrideParamInfo && overrideParamDetails.kwargsIndex === undefined) { diag?.addMessage( @@ -24583,7 +24645,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Verify that any keyword-only parameters added by the overload are compatible // with the **kwargs in the base. - overrideWkOnlyParams.forEach((paramInfo) => { + overrideKwOnlyParams.forEach((paramInfo) => { const baseParamInfo = baseKwOnlyParams.find((pi) => paramInfo.param.name === pi.param.name); if (!baseParamInfo) { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 5780f18a7..5240d83e0 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -584,6 +584,7 @@ export interface TypeEvaluator { validateOverrideMethod: ( baseMethod: Type, overrideMethod: FunctionType | OverloadedFunctionType, + baseClass: ClassType | undefined, diag: DiagnosticAddendum, enforceParamNames?: boolean ) => boolean; diff --git a/packages/pyright-internal/src/tests/samples/methodOverride6.py b/packages/pyright-internal/src/tests/samples/methodOverride6.py index 6beae470e..0d3b25e4a 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride6.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride6.py @@ -102,3 +102,104 @@ def m1(self, x: bytes) -> bytes: def m1(self, x: bool | bytes) -> int | float | bytes: return x + + +class Parent2(Generic[_T]): + @overload + def method1(self: "Parent2[int]", x: list[int]) -> list[int]: + ... + + @overload + def method1(self, x: str) -> dict[str, str]: + ... + + def method1(self, x: Any) -> Any: + ... + + @overload + def method2(self: "Parent2[int]", x: list[int]) -> list[int]: + ... + + @overload + def method2(self, x: str) -> dict[str, str]: + ... + + @overload + def method2(self, x: int) -> int: + ... + + def method2(self, x: Any) -> Any: + ... + + @overload + @classmethod + def method3(cls: "type[Parent2[int]]", x: list[int]) -> list[int]: + ... + + @overload + @classmethod + def method3(cls, x: str) -> dict[str, str]: + ... + + @classmethod + def method3(cls, x: Any) -> Any: + ... + + @overload + @classmethod + def method4(cls: "type[Parent2[int]]", x: list[int]) -> list[int]: + ... + + @overload + @classmethod + def method4(cls, x: str) -> dict[str, str]: + ... + + @overload + @classmethod + def method4(cls, x: int) -> int: + ... + + @classmethod + def method4(cls, x: Any) -> Any: + ... + + +class Child2_1(Parent2[str]): + def method1(self, x: str) -> dict[str, str]: + ... + + +class Child2_2(Parent2[str]): + @overload + def method2(self, x: str) -> dict[str, str]: + ... + + @overload + def method2(self, x: int) -> int: + ... + + def method2(self, x: Any) -> Any: + ... + + +class Child2_3(Parent2[str]): + @classmethod + def method3(cls, x: str) -> dict[str, str]: + ... + + +class Child2_4(Parent2[str]): + @overload + @classmethod + def method4(cls, x: str) -> dict[str, str]: + ... + + @overload + @classmethod + def method4(cls, x: int) -> int: + ... + + @classmethod + def method4(cls, x: Any) -> Any: + ... From 6de44b923793a503b96fe57f89eb70b220379a0c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 14 Jun 2023 17:36:01 -0700 Subject: [PATCH 290/525] Changed mypy_primer PR script to use 2 shards (parallel action executions) rather than 1 to reduce wait times. --- .github/workflows/mypy_primer_pr.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mypy_primer_pr.yaml b/.github/workflows/mypy_primer_pr.yaml index 0109e6a8d..12518680e 100644 --- a/.github/workflows/mypy_primer_pr.yaml +++ b/.github/workflows/mypy_primer_pr.yaml @@ -35,7 +35,7 @@ jobs: contents: read strategy: matrix: - shard-index: [0] + shard-index: [0, 1] fail-fast: false steps: - uses: actions/checkout@v3 @@ -69,7 +69,7 @@ jobs: --repo pyright_to_test \ --type-checker pyright \ --new $GITHUB_SHA --old base_commit \ - --num-shards 1 --shard-index ${{ matrix.shard-index }} \ + --num-shards 2 --shard-index ${{ matrix.shard-index }} \ --debug \ --output concise \ | tee diff_${{ matrix.shard-index }}.txt From f97ca0546c8d6f5d9f663930912bf09a93b75e48 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 14 Jun 2023 17:44:55 -0700 Subject: [PATCH 291/525] Fixed a bug in type evaluation of the two-argument form of the `super` call. There were situations where the incorrect MRO class was used. This addresses https://github.com/microsoft/pyright/issues/5299. (#5304) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/checker.ts | 1 + .../src/analyzer/typeEvaluator.ts | 47 +++++++-------- .../src/analyzer/typeGuards.ts | 2 +- .../src/analyzer/typeUtils.ts | 57 ++++++++++++------- .../src/tests/samples/super1.py | 2 +- .../src/tests/samples/super2.py | 35 ++++++++++++ .../src/tests/samples/super4.py | 32 ++++++++--- 7 files changed, 118 insertions(+), 58 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 4f62d18eb..bacc304a9 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -5451,6 +5451,7 @@ export class Checker extends ParseTreeWalker { continue; } + assert(isClass(mroBaseClass)); const baseClassAndSymbol = lookUpClassMember(mroBaseClass, name, ClassMemberLookupFlags.Default); if (!baseClassAndSymbol) { continue; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 790da89aa..0995b7962 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -7958,6 +7958,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions addError(Localizer.Diagnostic.superCallArgCount(), node.arguments[2]); } + const enclosingClass = ParseTreeUtils.getEnclosingClass(node); + const enclosingClassType = enclosingClass ? getTypeOfClass(enclosingClass)?.classType : undefined; + // Determine which class the "super" call is applied to. If // there is no first argument, then the class is implicit. let targetClassType: Type; @@ -7974,10 +7977,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } } else { - const enclosingClass = ParseTreeUtils.getEnclosingClass(node); - if (enclosingClass) { - const classTypeInfo = getTypeOfClass(enclosingClass); - targetClassType = classTypeInfo ? classTypeInfo.classType : UnknownType.create(); + if (enclosingClassType) { + targetClassType = enclosingClassType ?? UnknownType.create(); } else { addError(Localizer.Diagnostic.superCallZeroArgForm(), node.leftExpression); targetClassType = UnknownType.create(); @@ -8028,39 +8029,35 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions node.arguments[1].valueExpression ); } - } else { + } else if (enclosingClassType) { + bindToType = ClassType.cloneAsInstance(enclosingClassType); + + // Get the type from the self or cls parameter if it is explicitly annotated. + // If it's a TypeVar, change the bindToType into a conditional type. const enclosingMethod = ParseTreeUtils.getEnclosingFunction(node); let implicitBindToType: Type | undefined; - // Get the type from the self or cls parameter if it is explicitly annotated. if (enclosingMethod) { const methodTypeInfo = getTypeOfFunction(enclosingMethod); if (methodTypeInfo) { const methodType = methodTypeInfo.functionType; - if (FunctionType.isClassMethod(methodType)) { + if ( + FunctionType.isClassMethod(methodType) || + FunctionType.isConstructorMethod(methodType) || + FunctionType.isInstanceMethod(methodType) + ) { if ( methodType.details.parameters.length > 0 && methodType.details.parameters[0].hasDeclaredType ) { implicitBindToType = makeTopLevelTypeVarsConcrete(methodType.details.parameters[0].type); } - } else if (FunctionType.isInstanceMethod(methodType)) { - if ( - methodType.details.parameters.length > 0 && - methodType.details.parameters[0].hasDeclaredType - ) { - implicitBindToType = makeTopLevelTypeVarsConcrete( - convertToInstantiable(methodType.details.parameters[0].type) - ); - } } } } - if (implicitBindToType && isInstantiableClass(implicitBindToType)) { - bindToType = implicitBindToType; - } else if (isInstantiableClass(targetClassType)) { - bindToType = targetClassType; + if (bindToType && implicitBindToType) { + bindToType = addConditionToType(bindToType, getTypeCondition(implicitBindToType)) as ClassType; } } @@ -8089,11 +8086,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const parentNode = node.parent!; if (parentNode.nodeType === ParseNodeType.MemberAccess) { const memberName = parentNode.memberName.value; - const lookupResults = lookUpClassMember( - targetClassType, - memberName, - ClassMemberLookupFlags.SkipOriginalClass - ); + const effectiveTargetClass = isClass(targetClassType) ? targetClassType : undefined; + + const lookupResults = bindToType + ? lookUpClassMember(bindToType, memberName, ClassMemberLookupFlags.Default, effectiveTargetClass) + : undefined; if (lookupResults && isInstantiableClass(lookupResults.classType)) { return { type: resultIsInstance diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index c31636e4d..8fb2f258e 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -1932,7 +1932,7 @@ function narrowTypeForDiscriminatedLiteralFieldComparison( // Handle the case where the field is a property // that has a declared literal return type for its getter. - if (isClassInstance(subtype) && isProperty(memberType)) { + if (isClassInstance(subtype) && isClassInstance(memberType) && isProperty(memberType)) { const getterInfo = lookUpObjectMember(memberType, 'fget'); if (getterInfo && getterInfo.isTypeDeclared) { diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 7ac35f80b..685f93911 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -121,21 +121,16 @@ export const enum ClassMemberLookupFlags { export const enum ClassIteratorFlags { Default = 0, - // By default, the original (derived) class is searched along - // with its base classes. If this flag is set, the original - // class is skipped and only the base classes are searched. - SkipOriginalClass = 1 << 0, - // By default, base classes are searched as well as the // original (derived) class. If this flag is set, no recursion // is performed. - SkipBaseClasses = 1 << 1, + SkipBaseClasses = 1 << 0, // Skip the 'object' base class in particular. - SkipObjectBaseClass = 1 << 2, + SkipObjectBaseClass = 1 << 1, // Skip the 'type' base class in particular. - SkipTypeBaseClass = 1 << 3, + SkipTypeBaseClass = 1 << 2, } export const enum AssignTypeFlags { @@ -1222,12 +1217,13 @@ export function getContainerDepth(type: Type, recursionCount = 0) { } export function lookUpObjectMember( - objectType: Type, + objectType: ClassType, memberName: string, - flags = ClassMemberLookupFlags.Default + flags = ClassMemberLookupFlags.Default, + skipMroClass?: ClassType | undefined ): ClassMember | undefined { if (isClassInstance(objectType)) { - return lookUpClassMember(objectType, memberName, flags); + return lookUpClassMember(objectType, memberName, flags, skipMroClass); } return undefined; @@ -1236,11 +1232,12 @@ export function lookUpObjectMember( // Looks up a member in a class using the multiple-inheritance rules // defined by Python. export function lookUpClassMember( - classType: Type, + classType: ClassType, memberName: string, - flags = ClassMemberLookupFlags.Default + flags = ClassMemberLookupFlags.Default, + skipMroClass?: ClassType | undefined ): ClassMember | undefined { - const memberItr = getClassMemberIterator(classType, memberName, flags); + const memberItr = getClassMemberIterator(classType, memberName, flags, skipMroClass); return memberItr.next()?.value; } @@ -1253,14 +1250,23 @@ export function lookUpClassMember( // ClassB[str] which inherits from Dict[_T1, int], a search for '__iter__' // would return a class type of Dict[str, int] and a symbolType of // (self) -> Iterator[str]. -export function* getClassMemberIterator(classType: Type, memberName: string, flags = ClassMemberLookupFlags.Default) { +// If skipMroClass is defined, all MRO classes up to and including that class +// are skipped. +export function* getClassMemberIterator( + classType: ClassType | AnyType | UnknownType, + memberName: string, + flags = ClassMemberLookupFlags.Default, + skipMroClass?: ClassType | undefined +) { const declaredTypesOnly = (flags & ClassMemberLookupFlags.DeclaredTypesOnly) !== 0; let skippedUndeclaredType = false; if (isClass(classType)) { let classFlags = ClassIteratorFlags.Default; if (flags & ClassMemberLookupFlags.SkipOriginalClass) { - classFlags = classFlags | ClassIteratorFlags.SkipOriginalClass; + if (isClass(classType)) { + skipMroClass = classType; + } } if (flags & ClassMemberLookupFlags.SkipBaseClasses) { classFlags = classFlags | ClassIteratorFlags.SkipBaseClasses; @@ -1272,7 +1278,7 @@ export function* getClassMemberIterator(classType: Type, memberName: string, fla classFlags = classFlags | ClassIteratorFlags.SkipTypeBaseClass; } - const classItr = getClassIterator(classType, classFlags); + const classItr = getClassIterator(classType, classFlags, skipMroClass); for (const [mroClass, specializedMroClass] of classItr) { if (!isInstantiableClass(mroClass)) { @@ -1377,14 +1383,21 @@ export function* getClassMemberIterator(classType: Type, memberName: string, fla return undefined; } -export function* getClassIterator(classType: Type, flags = ClassIteratorFlags.Default) { +export function* getClassIterator(classType: Type, flags = ClassIteratorFlags.Default, skipMroClass?: ClassType) { if (isClass(classType)) { - let skipMroEntry = (flags & ClassIteratorFlags.SkipOriginalClass) !== 0; + let foundSkipMroClass = skipMroClass === undefined; for (const mroClass of classType.details.mro) { - if (skipMroEntry) { - skipMroEntry = false; - continue; + // Are we still searching fro teh skipMroClass? + if (!foundSkipMroClass && skipMroClass) { + if (!isClass(mroClass)) { + foundSkipMroClass = true; + } else if (ClassType.isSameGenericClass(mroClass, skipMroClass)) { + foundSkipMroClass = true; + continue; + } else { + continue; + } } // If mroClass is an ancestor of classType, partially specialize diff --git a/packages/pyright-internal/src/tests/samples/super1.py b/packages/pyright-internal/src/tests/samples/super1.py index fc14b531f..9a2754e7c 100644 --- a/packages/pyright-internal/src/tests/samples/super1.py +++ b/packages/pyright-internal/src/tests/samples/super1.py @@ -36,7 +36,7 @@ def __init__(self): super().goodbye() -super(Bar).aaa() +super(Bar) # This should generate an error super(Bar).bbb() diff --git a/packages/pyright-internal/src/tests/samples/super2.py b/packages/pyright-internal/src/tests/samples/super2.py index 22988c1a4..a9b55640c 100644 --- a/packages/pyright-internal/src/tests/samples/super2.py +++ b/packages/pyright-internal/src/tests/samples/super2.py @@ -27,3 +27,38 @@ def factoryB(cls): b2 = B.factoryB() reveal_type(b2, expected_text="B") + + +class C: + def __init__(self) -> None: + ... + + +class CChild(C): + def __init__(self, name: str) -> None: + ... + + +class D: + def __init__(self, name: str, num: int): + ... + + +class DChild1(CChild, D): + def __init__(self, name: str, num: int) -> None: + super(C, self).__init__(name, num) + + +class DChild2(CChild, D): + def __init__(self, name: str) -> None: + super(DChild2, self).__init__(name) + + +class DChild3(CChild, D): + def __init__(self) -> None: + super(CChild, self).__init__() + + +d1 = DChild1("", 1) +d2 = DChild2("") +d3 = DChild3() diff --git a/packages/pyright-internal/src/tests/samples/super4.py b/packages/pyright-internal/src/tests/samples/super4.py index d829a1897..d88b2fd21 100644 --- a/packages/pyright-internal/src/tests/samples/super4.py +++ b/packages/pyright-internal/src/tests/samples/super4.py @@ -2,23 +2,37 @@ # and a base class with an annotated cls or self parameter that # relies on the subclass being passed as a parameter. +from typing import Generic, TypeVar -from __future__ import annotations -import typing +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2", bound="Parent2") -T = typing.TypeVar("T") - -class Base(typing.Generic[T]): +class Parent1(Generic[_T1]): @classmethod - def construct(cls: typing.Type[T]) -> T: + def construct(cls: type[_T1]) -> _T1: return cls() -class Derived(Base["Derived"]): +class Child1(Parent1["Child1"]): + @classmethod + def construct(cls) -> "Child1": + return super().construct() + + +reveal_type(Child1.construct(), expected_text="Child1") + + +class Parent2: + @classmethod + def construct(cls: type[_T2]) -> _T2: + ... + + +class Child2(Parent2): @classmethod - def construct(cls) -> Derived: + def construct(cls: type[_T2]) -> _T2: return super().construct() -d: Derived = Derived.construct() +reveal_type(Child2.construct(), expected_text="Child2") From d1c482b14348f1ad3ea81194b06b4cc30f38fe6c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 14 Jun 2023 19:28:53 -0700 Subject: [PATCH 292/525] Fixed bug that led to false positive errors when (#5305) Co-authored-by: Eric Traut --- .../src/analyzer/protocols.ts | 12 ++++--- .../src/tests/samples/protocol41.py | 33 ++++++++++++++++++- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index 5bf99f3a2..91911731c 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -591,15 +591,19 @@ function createProtocolTypeVarContext( destTypeVarContext: TypeVarContext | undefined ) { const protocolTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); - if (destTypeVarContext && destType?.typeArguments) { + if (destType?.typeArguments) { // Infer the type parameter variance because we need it below. evaluator.inferTypeParameterVarianceForClass(destType); + let specializedDestType = destType; + if (destTypeVarContext) { + specializedDestType = applySolvedTypeVars(destType, destTypeVarContext, { + useNarrowBoundOnly: true, + }) as ClassType; + } + // Populate the typeVarContext with any concrete constraints that // have already been solved. - const specializedDestType = applySolvedTypeVars(destType, destTypeVarContext, { - useNarrowBoundOnly: true, - }) as ClassType; destType.details.typeParameters.forEach((typeParam, index) => { if (index < specializedDestType.typeArguments!.length) { const typeArg = specializedDestType.typeArguments![index]; diff --git a/packages/pyright-internal/src/tests/samples/protocol41.py b/packages/pyright-internal/src/tests/samples/protocol41.py index 354a0e465..134a9a261 100644 --- a/packages/pyright-internal/src/tests/samples/protocol41.py +++ b/packages/pyright-internal/src/tests/samples/protocol41.py @@ -2,7 +2,7 @@ # a type variable can be matched if that type variable's type is # supplied by another argument in a call. -from typing import Any, Protocol, TypeVar +from typing import Any, Protocol, TypeVar, overload _T_co = TypeVar("_T_co", covariant=True) _T_contra = TypeVar("_T_contra", contravariant=True) @@ -50,3 +50,34 @@ def test1(src: SupportsRead[MyBytes], tgt: BufferedWriter) -> None: def test2(src: Any, tgt: BufferedWriter) -> None: func1(src, tgt) + + +AnyStr_contra = TypeVar("AnyStr_contra", str, bytes, contravariant=True) + + +class BytesIO: + def write(self, __b: Buffer) -> None: + pass + + +class WriteBuffer(Protocol[AnyStr_contra]): + def write(self, __b: AnyStr_contra) -> Any: + ... + + +class NDFrame: + @overload + def to_csv(self, p: WriteBuffer[bytes]) -> None: + ... + + @overload + def to_csv(self, p: None = ...) -> str: + ... + + def to_csv(self, p: Any = None) -> Any: + ... + + +def test3(b: BytesIO) -> None: + df = NDFrame() + df.to_csv(b) From b12ca059273b6dbbd3fa67ffae8a9d7687024827 Mon Sep 17 00:00:00 2001 From: "Ross J. Duff, MSc" <42073607+rjdbcm@users.noreply.github.com> Date: Thu, 15 Jun 2023 10:42:26 -0500 Subject: [PATCH 293/525] Clarification of --version argument usage string (#5308) * Update command-line.md clarify that `--version` prints the version *and exits* * Update --version usage string Clarifies that `--version` prints the version *and exits*, this is fairly common language used by most CLI apps to indicate what the behavior of `--version` is. It may surprise new users that `--version` exits rather than appending the version with the previous language. --- docs/command-line.md | 2 +- packages/pyright-internal/src/pyright.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/command-line.md b/docs/command-line.md index 96f82d85f..086844156 100644 --- a/docs/command-line.md +++ b/docs/command-line.md @@ -22,7 +22,7 @@ Pyright can be run as either a VS Code extension or as a node-based command-line | -v, --venvpath `` | Directory that contains virtual environments (4) | | --verbose | Emit verbose diagnostics | | --verifytypes `` | Verify completeness of types in py.typed package | -| --version | Print pyright version | +| --version | Print pyright version and exit | | --warnings | Use exit code of 1 if warnings are reported | | -w, --watch | Continue to run and watch for changes (5) | diff --git a/packages/pyright-internal/src/pyright.ts b/packages/pyright-internal/src/pyright.ts index c8ebb35d5..09fc452a4 100644 --- a/packages/pyright-internal/src/pyright.ts +++ b/packages/pyright-internal/src/pyright.ts @@ -727,7 +727,7 @@ function printUsage() { ' -v,--venvpath Directory that contains virtual environments\n' + ' --verbose Emit verbose diagnostics\n' + ' --verifytypes Verify type completeness of a py.typed package\n' + - ' --version Print Pyright version\n' + + ' --version Print Pyright version and exit\n' + ' --warnings Use exit code of 1 if warnings are reported\n' + ' -w,--watch Continue to run and watch for changes\n' ); From 5c725bc267c117c449aa92572818b13a3a2e4b6d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 15 Jun 2023 09:23:39 -0700 Subject: [PATCH 294/525] Fixed a bug that led to a false positive when passing unpacked lists or dictionaries to a constructor for a class that doesn't provide its own constructor and falls back to the `object` constructor. --- .../pyright-internal/src/analyzer/constructors.ts | 5 +++-- .../src/tests/samples/constructor19.py | 15 +++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 6 ++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/constructor19.py diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 214ceb44d..da3b6a704 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -15,7 +15,7 @@ import { appendArray } from '../common/collectionUtils'; import { DiagnosticRule } from '../common/diagnosticRules'; import { Localizer } from '../localization/localize'; -import { ExpressionNode, ParameterCategory } from '../parser/parseNodes'; +import { ArgumentCategory, ExpressionNode, ParameterCategory } from '../parser/parseNodes'; import { getFileInfo } from './analyzerNodeInfo'; import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; import { applyConstructorTransform, hasConstructorTransform } from './constructorTransform'; @@ -534,7 +534,8 @@ function validateFallbackConstructorCall( ): CallResult { let reportedErrors = false; - if (argList.length > 0) { + // It's OK if the argument list consists only of `*args` and `**kwargs`. + if (argList.length > 0 && argList.some((arg) => arg.argumentCategory === ArgumentCategory.Simple)) { const fileInfo = getFileInfo(errorNode); evaluator.addDiagnostic( fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diff --git a/packages/pyright-internal/src/tests/samples/constructor19.py b/packages/pyright-internal/src/tests/samples/constructor19.py new file mode 100644 index 000000000..7a93b989e --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/constructor19.py @@ -0,0 +1,15 @@ +# This sample handles the case where a class doesn't define its own +# constructor and relies on the `object` class constructor, which accepts +# no parameters. + + +class A: + pass + + +a1 = A() + +# This should generate an error +a2 = A(1) + +a3 = A(*[], **{}) diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 9544e9906..3dbd0a4f1 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1427,6 +1427,12 @@ test('Constructor18', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Constructor19', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor19.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + test('InconsistentConstructor1', () => { const configOptions = new ConfigOptions('.'); From 20ce6049f3e01602446480c12fe1ccc9e4ea3a24 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 15 Jun 2023 11:53:12 -0700 Subject: [PATCH 295/525] Changed parameter type inference logic to avoid inferring the type of an unannotated parameter with a default value consisting of a lambda. This addresses https://github.com/microsoft/pyright/issues/5306. --- .../src/analyzer/typeEvaluator.ts | 21 ++++++++++++++----- .../src/tests/samples/paramInference1.py | 13 ++++++++---- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 0995b7962..40faf3345 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -16774,12 +16774,23 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ) { inferredParamType = combineTypes([defaultValueType, UnknownType.create()]); } else { - // Do not infer certain types like tuple because it's likely to be - // more restrictive (narrower) than intended. - if ( - !isClassInstance(defaultValueType) || - !ClassType.isBuiltIn(defaultValueType, ['tuple', 'list', 'set', 'dict']) + let skipInference = false; + + if (isFunction(defaultValueType) || isOverloadedFunction(defaultValueType)) { + // Do not infer parameter types that use a lambda or another function as a + // default value. We're likely to generate false positives in this case. + // It's not clear whether parameters should be positional-only or not. + skipInference = true; + } else if ( + isClassInstance(defaultValueType) && + ClassType.isBuiltIn(defaultValueType, ['tuple', 'list', 'set', 'dict']) ) { + // Do not infer certain types like tuple because it's likely to be + // more restrictive (narrower) than intended. + skipInference = true; + } + + if (!skipInference) { inferredParamType = stripLiteralValue(defaultValueType); } } diff --git a/packages/pyright-internal/src/tests/samples/paramInference1.py b/packages/pyright-internal/src/tests/samples/paramInference1.py index 0ece9d28f..05cf42dc3 100644 --- a/packages/pyright-internal/src/tests/samples/paramInference1.py +++ b/packages/pyright-internal/src/tests/samples/paramInference1.py @@ -28,16 +28,21 @@ def func2(a, b=0, c=None): reveal_type(c, expected_text="Unknown | None") -def func3(a=(1, 2), b=[1,2], c={1: 2}): +def func3(a=(1, 2), b=[1, 2], c={1: 2}): reveal_type(a, expected_text="Unknown") reveal_type(b, expected_text="Unknown") reveal_type(c, expected_text="Unknown") -class _Undefined: pass + +class _Undefined: + pass + + Undefined = _Undefined() -def func4(a=1, b=None, c=Undefined): + +def func4(a=1, b=None, c=Undefined, d=lambda x: x): reveal_type(a, expected_text="int") reveal_type(b, expected_text="Unknown | None") reveal_type(c, expected_text="_Undefined | Unknown") - + reveal_type(d, expected_text="Unknown") From 450f71bf1c2dab0959515172145ff0994d9f99c2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 15 Jun 2023 12:35:12 -0700 Subject: [PATCH 296/525] Fixed a regression that caused an incorrect type evaluation of a function that returns a callable with a ParamSpec that does not appear outside of the return type annotation. A previous fix didn't correctly handle the case that involved a class parameterized with a ParamSpec. This addresses https://github.com/microsoft/pyright/issues/5283. --- .../src/analyzer/typeUtils.ts | 2 +- .../src/tests/samples/genericTypes58.py | 23 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 685f93911..3c6cc5d59 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3824,7 +3824,7 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { let useDefaultOrUnknown = false; if (this._options.unknownIfNotFound && !this._typeVarContext.hasSolveForScope(WildcardTypeVarScopeId)) { const exemptTypeVars = this._options.unknownExemptTypeVars ?? []; - if (!exemptTypeVars.some((t) => isTypeSame(t, paramSpec))) { + if (!exemptTypeVars.some((t) => isTypeSame(t, paramSpec, { ignoreTypeFlags: true }))) { useDefaultOrUnknown = true; } } else if (this._options.applyInScopePlaceholders && paramSpec.isInScopePlaceholder) { diff --git a/packages/pyright-internal/src/tests/samples/genericTypes58.py b/packages/pyright-internal/src/tests/samples/genericTypes58.py index 6dcf920c6..7e713f0a7 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes58.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes58.py @@ -31,11 +31,11 @@ def func2(x: str | None | _T) -> list[str | None | _T]: _C = TypeVar("_C", bound=Callback) -class UsesFoo(Generic[_C]): +class ClassA(Generic[_C]): ... -def decorator1() -> Callable[[_C | UsesFoo[_C]], UsesFoo[_C]]: +def decorator1() -> Callable[[_C | ClassA[_C]], ClassA[_C]]: ... @@ -61,3 +61,22 @@ def func6(x: int) -> str: reveal_type(func5()(func6), expected_text="(x: int) -> str") + + +class ClassB(Generic[_P]): + def method1(self, val: str, *args: _P.args, **kwargs: _P.kwargs) -> None: + pass + + +def decorator2() -> Callable[[Callable[_P, None]], ClassB[_P]]: + ... + + +@decorator2() +def func7(y: int) -> None: + pass + + +reveal_type(func7, expected_text="ClassB[(y: int)]") +reveal_type(func7.method1, expected_text="(val: str, y: int) -> None") +reveal_type(func7.method1("", 1), expected_text="None") From 8d9910eb897b858f923e43ab0582b59fd6694563 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 15 Jun 2023 16:01:12 -0700 Subject: [PATCH 297/525] Added more details about difference between mypy and pyright overload resolution in ambiguous cases. --- docs/mypy-comparison.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/mypy-comparison.md b/docs/mypy-comparison.md index 7cb9a88bb..2b1d301a2 100644 --- a/docs/mypy-comparison.md +++ b/docs/mypy-comparison.md @@ -373,7 +373,20 @@ Pyright’s approach gives developers more control. It provides a way to be expl ### Overload Resolution -Overload resolution rules are under-specified in PEP 484. Pyright and mypy apply similar rules, but there are likely some complex edge cases where different results will be produced. For full documentation of pyright’s overload behaviors, refer to [this documentation](type-concepts-advanced.md#overloads). +Overload resolution rules are under-specified in PEP 484. Pyright and mypy apply similar rules, but there are inevitably cases where different results will be produced. For full documentation of pyright’s overload behaviors, refer to [this documentation](type-concepts-advanced.md#overloads). + +One known difference is in the handling of ambiguous overloads due to `Any` argument types where one return type is the supertype of all other return types. In this case, pyright evaluates the resulting return type as the supertype, but mypy evaluates the return type as `Any`. Pyright’s behavior here tries to preserve as much type information as possible, which is important for completion suggestions. + +```python +@overload +def func1(x: int) -> int: ... + +@overload +def func1(x: str) -> float: ... + +def func2(val: Any): + reveal_type(func1(val)) # mypy: Any, pyright: float +``` ### Import Statements From 8a09073e6eef70e1e37df272c988fbe89f41d162 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 15 Jun 2023 16:01:25 -0700 Subject: [PATCH 298/525] Fixed a false negative where an unpacked dictionary argument was not validated against the `**kwargs` parameter type. This addresses https://github.com/microsoft/pyright/issues/5309. (#5310) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 13 +++++++++++++ .../pyright-internal/src/localization/localize.ts | 1 + .../src/localization/package.nls.en-us.json | 1 + packages/pyright-internal/src/parser/parser.ts | 8 ++++++-- .../pyright-internal/src/tests/samples/call2.py | 2 ++ .../src/tests/samples/subscript3.py | 8 +++++++- .../src/tests/typeEvaluator1.test.ts | 2 +- .../src/tests/typeEvaluator3.test.ts | 2 +- 8 files changed, 32 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 40faf3345..2cd0627b6 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9950,6 +9950,19 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + if (paramDetails.kwargsIndex !== undefined && unpackedDictionaryArgType) { + const paramType = paramDetails.params[paramDetails.kwargsIndex].type; + validateArgTypeParams.push({ + paramCategory: ParameterCategory.Simple, + paramType, + requiresTypeVarMatching: requiresSpecialization(paramType), + argType: unpackedDictionaryArgType, + argument: argList[argIndex], + errorNode: argList[argIndex].valueExpression || errorNode, + paramName: paramDetails.params[paramDetails.kwargsIndex].param.name, + }); + } + if (!isValidMappingType) { if (!isDiagnosticSuppressedForNode(errorNode)) { addDiagnostic( diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index b64055e7e..dd907189f 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -1025,6 +1025,7 @@ export namespace Localizer { export const unpackedArgInTypeArgument = () => getRawString('Diagnostic.unpackedArgInTypeArgument'); export const unpackedArgWithVariadicParam = () => getRawString('Diagnostic.unpackedArgWithVariadicParam'); export const unpackedDictArgumentNotMapping = () => getRawString('Diagnostic.unpackedDictArgumentNotMapping'); + export const unpackedDictSubscriptIllegal = () => getRawString('Diagnostic.unpackedDictSubscriptIllegal'); export const unpackedSubscriptIllegal = () => getRawString('Diagnostic.unpackedSubscriptIllegal'); export const unpackedTypedDictArgument = () => getRawString('Diagnostic.unpackedTypedDictArgument'); export const unpackedTypeVarTupleExpected = () => diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 0818a3202..2e18b3d6c 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -530,6 +530,7 @@ "unpackedArgInTypeArgument": "Unpacked arguments cannot be used in type argument lists", "unpackedArgWithVariadicParam": "Unpacked argument cannot be used for TypeVarTuple parameter", "unpackedDictArgumentNotMapping": "Argument expression after ** must be a mapping with a \"str\" key type", + "unpackedDictSubscriptIllegal": "Dictionary unpack operator in subscript is not allowed", "unpackedSubscriptIllegal": "Unpack operator in subscript requires Python 3.11 or newer", "unpackedTypedDictArgument": "Unable to match unpacked TypedDict argument to parameters", "unpackedTypeVarTupleExpected": "Expected unpacked TypeVarTuple; use Unpack[{name1}] or *{name2}", diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index 66ce9a701..b38db9eeb 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -3600,14 +3600,18 @@ export class Parser { } if (argType !== ArgumentCategory.Simple) { - const unpackAllowed = + const unpackListAllowed = this._parseOptions.isStubFile || this._isParsingQuotedText || this._getLanguageVersion() >= PythonVersion.V3_11; - if (argType === ArgumentCategory.UnpackedDictionary || !unpackAllowed) { + if (argType === ArgumentCategory.UnpackedList && !unpackListAllowed) { this._addError(Localizer.Diagnostic.unpackedSubscriptIllegal(), argNode); } + + if (argType === ArgumentCategory.UnpackedDictionary) { + this._addError(Localizer.Diagnostic.unpackedDictSubscriptIllegal(), argNode); + } } if (!this._consumeTokenIfType(TokenType.Comma)) { diff --git a/packages/pyright-internal/src/tests/samples/call2.py b/packages/pyright-internal/src/tests/samples/call2.py index 35271d113..ce18c3b92 100644 --- a/packages/pyright-internal/src/tests/samples/call2.py +++ b/packages/pyright-internal/src/tests/samples/call2.py @@ -35,6 +35,8 @@ def func2(a: str, **b: int): func2("hi", b=3, c=4, d=5) str_dict = {"a": "3", "b": "2"} + +# This should generate a type error func2("hi", **str_dict) diff --git a/packages/pyright-internal/src/tests/samples/subscript3.py b/packages/pyright-internal/src/tests/samples/subscript3.py index 4520e5790..fe221f8ae 100644 --- a/packages/pyright-internal/src/tests/samples/subscript3.py +++ b/packages/pyright-internal/src/tests/samples/subscript3.py @@ -117,9 +117,15 @@ def __setitem__(self, index: Any, value: float, **kwargs: int) -> None: c_obj = ClassC() -z1 = c_obj[1, *val_list, **val_dict] +z1 = c_obj[1, *val_list] reveal_type(z1, expected_text="complex") +# This should generate an error because dictionary unpack isn't allowed in subscript. +z2 = c_obj[1, *val_list, **val_dict] + +c_obj[1, *val_list] = 4.3 + +# This should generate an error because dictionary unpack isn't allowed in subscript. c_obj[1, *val_list, **val_dict] = 4.3 # This should generate an error because complex isn't assignable. diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index d9143da22..457eb468d 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -690,7 +690,7 @@ test('Call1', () => { test('Call2', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['call2.py']); - TestUtils.validateResults(analysisResults, 15); + TestUtils.validateResults(analysisResults, 16); }); test('Call3', () => { diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 3dbd0a4f1..5d03f8445 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1524,7 +1524,7 @@ test('Subscript3', () => { // Analyze with Python 3.9 settings. configOptions.defaultPythonVersion = PythonVersion.V3_9; const analysisResults39 = TestUtils.typeAnalyzeSampleFiles(['subscript3.py'], configOptions); - TestUtils.validateResults(analysisResults39, 30); + TestUtils.validateResults(analysisResults39, 32); // Analyze with Python 3.10 settings. // These are disabled because PEP 637 was rejected. From 2cd022020762e90f27af7fced914e5d2e4eff6c8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 15 Jun 2023 20:48:54 -0700 Subject: [PATCH 299/525] Fixed several subtle bugs in the overload matching algorithm in the case where Any or Unknown arguments are present. (#5316) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 23 +- .../src/tests/samples/overload12.py | 223 +++++++++++++++++- .../src/tests/typeEvaluator4.test.ts | 2 +- 3 files changed, 243 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 2cd0627b6..dd44e7368 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8347,6 +8347,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return matches; } + // If the relevance of some matches differs, filter out the ones that + // are lower relevance. This favors *args parameters in cases where + // a *args argument is used. + if (matches[0].matchResults.relevance !== matches[matches.length - 1].matchResults.relevance) { + matches = matches.filter((m) => m.matchResults.relevance === matches[0].matchResults.relevance); + + if (matches.length < 2) { + return matches; + } + } + // If all of the return types match, select the first one. if ( areTypesSame( @@ -8362,6 +8373,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return matches; } + let foundAmbiguousAnyArg = false; for (let i = 0; i < firstArgResults.length; i++) { // If the arg is Any or Unknown, see if the corresponding // parameter types differ in any way. @@ -8372,11 +8384,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions : UnknownType.create() ); if (!areTypesSame(paramTypes, { treatAnySameAsUnknown: true })) { - return matches; + foundAmbiguousAnyArg = true; } } } + // If the first overload has a different number of effective arguments + // than latter overloads, don't filter any of them. This typically means + // that one of the arguments is an unpacked iterator, and it maps to + // an indeterminate number of parameters, which means that the overload + // selection is ambiguous. + if (foundAmbiguousAnyArg || matches.some((match) => match.argResults.length !== firstArgResults.length)) { + return matches; + } + return [matches[0]]; } diff --git a/packages/pyright-internal/src/tests/samples/overload12.py b/packages/pyright-internal/src/tests/samples/overload12.py index 1ec799af0..eaa0f6b79 100644 --- a/packages/pyright-internal/src/tests/samples/overload12.py +++ b/packages/pyright-internal/src/tests/samples/overload12.py @@ -1,9 +1,12 @@ -# This sample tests overload matching in cases where one or more -# matches are found due to an Any or Unknown argument. +# This sample tests overload matching in cases where the match +# is ambiguous due to an Any or Unknown argument. -from typing import Any, Literal, overload +from __future__ import annotations +from typing import Any, Generic, Literal, TypeVar, overload from typing_extensions import LiteralString +_T = TypeVar("_T") + @overload def overload1(x: int, y: float) -> float: @@ -120,3 +123,217 @@ def func5(a: Any): reveal_type(overload4(a, flag=False), expected_text="str") reveal_type(overload4("0", flag=a), expected_text="Unknown") + +@overload +def overload5(x: list[int]) -> list[int]: + ... + + +@overload +def overload5(x: list[str]) -> list[str]: + ... + + +def overload5(x: list[str] | list[int]) -> list[str] | list[int]: + return x + + +def func6(y: list[Any]): + reveal_type(overload5(y), expected_text="list[int]") + + +class ClassA(Generic[_T]): + @overload + def m1(self: ClassA[int]) -> ClassA[int]: + ... + + @overload + def m1(self: ClassA[str]) -> ClassA[str]: + ... + + def m1(self) -> ClassA[Any]: + return self + + +def func7(a: ClassA[Any]): + reveal_type(a.m1(), expected_text="ClassA[int]") + + +class ClassB(Generic[_T]): + @overload + def m1(self: ClassB[int], obj: int | ClassB[int]) -> ClassB[int]: + ... + + @overload + def m1(self: ClassB[str], obj: str | ClassB[str]) -> ClassB[str]: + ... + + def m1(self, obj: Any) -> ClassB[Any]: + return self + + +def func8(b: ClassB[Any]): + reveal_type(b.m1(b), expected_text="ClassB[int]") + + +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") + + +@overload +def overload6(a: _T1, /) -> tuple[_T1]: + ... + + +@overload +def overload6(a: _T1, b: _T2, /) -> tuple[_T1, _T2]: + ... + + +@overload +def overload6(*args: _T1) -> tuple[_T1, ...]: + ... + + +def overload6(*args: Any) -> tuple[Any, ...]: + return tuple(args) + + +def func9(*args: int): + reveal_type(overload6(*args), expected_text="tuple[int, ...]") + + +@overload +def overload7(a: float = ..., *, b: Literal[True] = ...) -> float: + ... + + +@overload +def overload7(a: float = ..., *, b: bool) -> str: + ... + + +def overload7(a: float = 1.0, *, b: bool = True) -> float | str: + ... + + +def func10(kwargs_dict: dict[Any, Any]): + reveal_type(overload7(**kwargs_dict), expected_text="Unknown") + + +def func11(kwargs_dict: dict[str, Any]): + reveal_type(overload7(**kwargs_dict), expected_text="Unknown") + + +def func12(kwargs_dict: dict[str, bool]): + reveal_type(overload7(**kwargs_dict), expected_text="str") + + +def func13(kwargs_dict: dict[str, Literal[True]]): + reveal_type(overload7(**kwargs_dict), expected_text="float") + + +def func14(): + reveal_type(overload7(), expected_text="float") + + +def func15(kwargs_dict: dict[str, str]): + # This should generate an error because str isn't a valid type for + # the b parameter. + overload7(1.0, **kwargs_dict) + + +@overload +def overload8(x: int = 3, **kwargs: int) -> int: + ... + + +@overload +def overload8(**kwargs: str) -> str: + ... + + +def overload8(*args, **kwargs) -> Any: + pass + + +def func16(a: dict[str, Any], i: int): + reveal_type(overload8(x=i, **a), expected_text="int") + reveal_type(overload8(**a), expected_text="Unknown") + + +@overload +def overload9(x: int, y: int) -> int: + ... + + +@overload +def overload9(x: float, y: int, z: str) -> float: + ... + + +@overload +def overload9(x: object, y: int, z: str, a: None) -> str: + ... + + +def overload9(x, y, z=..., a=...) -> Any: + pass + + +def func17(a: Any): + reveal_type(overload9(*a), expected_text="Unknown") + reveal_type(overload9(a, *a), expected_text="Unknown") + reveal_type(overload9(1, *a), expected_text="Unknown") + reveal_type(overload9(1.1, *a), expected_text="Unknown") + reveal_type(overload9("", *a), expected_text="str") + + +@overload +def overload10(x: list[int]) -> list[int]: + ... + + +@overload +def overload10(x: list[Any]) -> list[Any]: + ... + + +def overload10(x) -> Any: + pass + + +def func18(a: Any, b: list[Any], c: list[str], d: list[int]): + reveal_type(overload10(a), expected_text="list[int]") + reveal_type(overload10(b), expected_text="list[int]") + reveal_type(overload10(c), expected_text="list[Any]") + reveal_type(overload10(d), expected_text="list[int]") + + +class ClassC: + @overload + def method1(self, k: Literal["hi"], default: Any) -> float: + ... + + @overload + def method1(self, k: str, default: _T) -> Any | _T: + ... + + def method1(self, k: str, default: _T) -> Any | _T: + ... + + +def func19(a: ClassC, b: list, c: Any): + my_list1: list = [] + v1 = a.method1("hi", my_list1) + reveal_type(v1, expected_text="float") + + v2 = a.method1("hi", b) + reveal_type(v2, expected_text="float") + + v3 = a.method1("hi", c) + reveal_type(v3, expected_text="float") + + my_list2: list[int] = [] + v1 = a.method1("hi", my_list2) + reveal_type(v1, expected_text="float") diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 4f4dffc04..cb9fa90a0 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -321,7 +321,7 @@ test('Overload11', () => { test('Overload12', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['overload12.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); test('Overload13', () => { From b90abab417acb4b90eff04c99dda640c314dee5b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 16 Jun 2023 00:43:11 -0700 Subject: [PATCH 300/525] Improved the heuristic used to determine which subtypes of a union within an "expected type" should be used for bidirectional type inference. This addresses https://github.com/microsoft/pyright/issues/5312. (#5317) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 36 ++++++++++++++++--- .../src/tests/samples/genericTypes116.py | 28 +++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++ 3 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes116.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index dd44e7368..0badfa53a 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1569,6 +1569,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const decoratorTypeResult = getTypeOfExpression(node.expression, flags); + // Special-case typing.type_check_only. It's used in many stdlib + // functions, and pyright treats it as a no-op, so don't waste + // time evaluating it. + if ( + isFunction(decoratorTypeResult.type) && + decoratorTypeResult.type.details.builtInName === 'type_check_only' + ) { + return functionOrClassType; + } + // Special-case the combination of a classmethod decorator applied // to a property. This is allowed in Python 3.9, but it's not reflected // in the builtins.pyi stub for classmethod. @@ -10422,13 +10432,29 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Determine which type arguments are needed to match the expected type. if (isClassInstance(effectiveReturnType)) { - // If the return type is a class and the expected type is a union that contains - // that class, see if we can eliminate the other subtypes in the union. + // If the return type is a class and the expected type is a union + // that is type compatible with that class, filter the subtypes in + // the union to see if we can find one that is potentially compatible. if (isUnion(effectiveExpectedType)) { const filteredType = mapSubtypes(effectiveExpectedType, (subtype) => { - return isClassInstance(subtype) && ClassType.isSameGenericClass(effectiveReturnType, subtype) - ? subtype - : undefined; + if (!isClassInstance(subtype) || subtype.details.typeParameters.length === 0) { + return undefined; + } + + if ( + ClassType.isProtocolClass(subtype) || + subtype.details.mro.some((mroClass) => { + return ( + isClassInstance(mroClass) && + mroClass.details.typeParameters.length > 0 && + ClassType.isSameGenericClass(effectiveReturnType, mroClass) + ); + }) + ) { + return subtype; + } + + return undefined; }); if (isClassInstance(filteredType)) { diff --git a/packages/pyright-internal/src/tests/samples/genericTypes116.py b/packages/pyright-internal/src/tests/samples/genericTypes116.py new file mode 100644 index 000000000..a3f8ff407 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes116.py @@ -0,0 +1,28 @@ +# This sample tests bidirectional type inference in cases where the +# expected type is a union of multiple class instances. + +from typing import Iterable, Sequence + + +def func1(points: tuple[float, float] | Iterable[tuple[float, float]]) -> None: + ... + + +def test1(val: tuple[float, float]): + func1(tuple((val, val))) + + +def func2(points: tuple[float, float] | Sequence[tuple[float, float]]) -> None: + ... + + +def test2(val: tuple[float, float]): + func2(tuple([val, val])) + + +def func3(points: tuple[float, float] | tuple[str, str]) -> None: + ... + + +def test3(val: tuple[float, float]): + func3(tuple(val)) diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index aad3fb1e3..4e7010a2c 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1115,6 +1115,12 @@ test('GenericTypes115', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes116', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes116.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 2829429742c1ebec9ed70954dd0232126b5dbdd3 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 17 Jun 2023 12:33:13 -0700 Subject: [PATCH 301/525] Fixed bug that led to an incorrect type evaluation for nested call expressions where an inner call expression used a ParamSpec. This addresses https://github.com/microsoft/pyright/issues/5281. (#5322) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 54 +++++++++---------- .../src/tests/samples/genericTypes105.py | 6 +++ .../src/tests/samples/genericTypes108.py | 38 ++++++++++--- .../src/tests/samples/genericTypes71.py | 1 - 4 files changed, 65 insertions(+), 34 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 0badfa53a..5224ef39d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1170,7 +1170,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const diag = new DiagnosticAddendum(); // Make sure the resulting type is assignable to the expected type. - if (!assignType(inferenceContext.expectedType, typeResult.type, diag)) { + if ( + !assignType( + inferenceContext.expectedType, + typeResult.type, + diag, + /* destTypeVarContext */ undefined, + /* srcTypeVarContext */ undefined, + AssignTypeFlags.IgnoreTypeVarScope + ) + ) { typeResult.typeErrors = true; typeResult.expectedTypeDiagAddendum = diag; diag.addTextRange(node); @@ -23234,9 +23243,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions /* diag */ undefined, srcTypeVarContext, destTypeVarContext, - (flags ^ AssignTypeFlags.ReverseTypeVarMatching) | - AssignTypeFlags.IgnoreTypeVarScope | - AssignTypeFlags.RetainLiteralsForTypeVar, + (flags ^ AssignTypeFlags.ReverseTypeVarMatching) | AssignTypeFlags.RetainLiteralsForTypeVar, recursionCount ); @@ -23252,9 +23259,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions /* diag */ undefined, srcTypeVarContext, destTypeVarContext, - (flags ^ AssignTypeFlags.ReverseTypeVarMatching) | - AssignTypeFlags.IgnoreTypeVarScope | - AssignTypeFlags.RetainLiteralsForTypeVar, + (flags ^ AssignTypeFlags.ReverseTypeVarMatching) | AssignTypeFlags.RetainLiteralsForTypeVar, recursionCount ); @@ -23979,11 +23984,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const srcParamSpec = effectiveSrcType.details.paramSpec; const destParamSpec = effectiveDestType.details.paramSpec; - const targetTypeVarContext = - (flags & AssignTypeFlags.ReverseTypeVarMatching) === 0 ? destTypeVarContext : srcTypeVarContext; - if (targetTypeVarContext.hasSolveForScope(destParamSpec.scopeId)) { - // Synthesize a function based on the remaining parameters. + // If there are remaining parameters and the source and dest do not contain + // the same ParamSpec, synthesize a function for the remaining parameters. + if ( + remainingParams.length > 0 || + !srcParamSpec || + !isTypeSame(srcParamSpec, destParamSpec, { ignoreTypeFlags: true }) + ) { const remainingFunction = FunctionType.createInstance( '', '', @@ -24000,12 +24008,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions : undefined; if ( - !assignTypeToTypeVar( - evaluatorInterface, + !assignType( destParamSpec, remainingFunction, /* diag */ undefined, - targetTypeVarContext + destTypeVarContext, + srcTypeVarContext, + flags ) ) { // If we couldn't assign the function to the ParamSpec, see if we can @@ -24014,27 +24023,18 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if ( remainingParams.length > 0 || !srcParamSpec || - !assignTypeToTypeVar( - evaluatorInterface, + !assignType( destParamSpec, convertToInstance(srcParamSpec) as TypeVarType, /* diag */ undefined, - targetTypeVarContext + destTypeVarContext, + srcTypeVarContext, + flags ) ) { canAssign = false; } } - } else { - // If there are any remaining parameters or the source doesn't include the - // dest param spec itself, it is not assignable in this case. - if ( - !srcParamSpec || - !isTypeSame(srcParamSpec, destParamSpec, { ignoreTypeFlags: true }) || - remainingParams.length > 0 - ) { - canAssign = false; - } } } } diff --git a/packages/pyright-internal/src/tests/samples/genericTypes105.py b/packages/pyright-internal/src/tests/samples/genericTypes105.py index df67cafb1..f03dbca3d 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes105.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes105.py @@ -139,5 +139,11 @@ def test_5(a: Any, *args: int, b: Any = ...) -> Any: val3 = test_5(test_5, **{}) reveal_type( val3, + expected_text="Unknown", +) + +val4 = test_5(test_5, b=True) +reveal_type( + val4, expected_text="Type[list[Overload[(a: Type[(**P(1)@test_5) -> Type[T(1)@test_5]], *, b: Literal[False] | None = ...) -> Type[list[Type[T(1)@test_5]]], (a: T(1)@test_5, *args: int, b: Literal[False] | None = ...) -> Type[list[T(1)@test_5]], (a: T(1)@test_5, *args: int, b: Literal[True] = ...) -> Type[list[T(1)@test_5]], (a: Any, *args: int, b: Any = ...) -> Any]]]", ) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes108.py b/packages/pyright-internal/src/tests/samples/genericTypes108.py index 418da5932..ca3263348 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes108.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes108.py @@ -1,22 +1,48 @@ # This sample tests the handling of nested calls to generic functions # when bidirectional type inference is involved. -from typing import Literal, TypeVar +from typing import Callable, Generic, Literal, ParamSpec, TypeVar -T = TypeVar("T") +_T = TypeVar("_T") +_P = ParamSpec("_P") -def identity(x: T) -> T: +def identity1(x: _T) -> _T: return x -def identity2(x: T) -> T: +def identity2(x: _T) -> _T: return x -def test(x: Literal[2]) -> Literal[2]: - return identity(identity2(x)) +def test1(x: Literal[2]) -> Literal[2]: + return identity1(identity2(x)) v1 = min(1, max(2, 0.5)) reveal_type(v1, expected_text="float") + + +class Future(Generic[_T]): + ... + + +def func1(future: Future[_T]) -> Future[_T]: + ... + + +def func2(__fn: Callable[_P, _T], *args: _P.args, **kwargs: _P.kwargs) -> Future[_T]: + ... + + +def func3() -> int: + ... + + +def func4(a: int, b: int) -> str: + ... + + +reveal_type(func1(func2(func3)), expected_text="Future[int]") +reveal_type(func1(func2(func4, 1, 2)), expected_text="Future[str]") +reveal_type(func1(func2(func4, a=1, b=2)), expected_text="Future[str]") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes71.py b/packages/pyright-internal/src/tests/samples/genericTypes71.py index 955d90e51..82ec79b52 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes71.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes71.py @@ -75,7 +75,6 @@ class A: ... -T = TypeVar("T") T_A = TypeVar("T_A", bound=A) From 05593825a2b4407a69d50fc8de6bea6cccf0aecb Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 17 Jun 2023 14:19:12 -0700 Subject: [PATCH 302/525] Fixed false negative when a literal and non-literal are assigned to the same TypeVar in an invariant context. This addresses https://github.com/microsoft/pyright/issues/5321. (#5323) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 83 +++++++++++++++---- .../pyright-internal/src/analyzer/types.ts | 3 +- .../src/tests/samples/constructor2.py | 2 +- .../src/tests/samples/genericTypes117.py | 21 +++++ .../src/tests/samples/protocol6.py | 9 +- .../src/tests/samples/typedDict18.py | 4 +- .../src/tests/typeEvaluator2.test.ts | 8 +- 7 files changed, 110 insertions(+), 20 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes117.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 5224ef39d..686762ca1 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -12377,6 +12377,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions keyTypes, valueTypes, /* forceStrictInference */ true, + /* isValueTypeInvariant */ true, /* expectedKeyType */ undefined, /* expectedValueType */ undefined, expectedTypedDictEntries, @@ -12437,6 +12438,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const expectedKeyType = specializedDict.typeArguments[0]; const expectedValueType = specializedDict.typeArguments[1]; + // Dict and MutableMapping types have invariant value types, so they + // cannot be narrowed further. Other super-types like Mapping, Collection, + // and Iterable use covariant value types, so they can be narrowed. + const isValueTypeInvariant = + isClassInstance(inferenceContext.expectedType) && + (ClassType.isBuiltIn(inferenceContext.expectedType, 'dict') || + ClassType.isBuiltIn(inferenceContext.expectedType, 'MutableMapping')); + // Infer the key and value types if possible. if ( getKeyAndValueTypesFromDictionary( @@ -12444,6 +12453,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions keyTypes, valueTypes, /* forceStrictInference */ true, + isValueTypeInvariant, expectedKeyType, expectedValueType, undefined, @@ -12453,14 +12463,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isIncomplete = true; } - // Dict and MutableMapping types have invariant value types, so they - // cannot be narrowed further. Other super-types like Mapping, Collection, - // and Iterable use covariant value types, so they can be narrowed. - const isValueTypeInvariant = - isClassInstance(inferenceContext.expectedType) && - (ClassType.isBuiltIn(inferenceContext.expectedType, 'dict') || - ClassType.isBuiltIn(inferenceContext.expectedType, 'MutableMapping')); - const specializedKeyType = inferTypeArgFromExpectedEntryType( makeInferenceContext(expectedKeyType), keyTypes.map((result) => result.type), @@ -12498,7 +12500,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions node, keyTypeResults, valueTypeResults, - /* forceStrictInference */ hasExpectedType + /* forceStrictInference */ hasExpectedType, + /* isValueTypeInvariant */ false ) ) { isIncomplete = true; @@ -12554,6 +12557,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions keyTypes: TypeResultWithNode[], valueTypes: TypeResultWithNode[], forceStrictInference: boolean, + isValueTypeInvariant: boolean, expectedKeyType?: Type, expectedValueType?: Type, expectedTypedDictEntries?: Map, @@ -12589,6 +12593,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } let valueTypeResult: TypeResult; + let entryInferenceContext: InferenceContext | undefined; if ( expectedTypedDictEntries && @@ -12598,21 +12603,32 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions expectedTypedDictEntries.has(keyType.literalValue as string) ) { const effectiveValueType = expectedTypedDictEntries.get(keyType.literalValue as string)!.valueType; + entryInferenceContext = makeInferenceContext(effectiveValueType); valueTypeResult = getTypeOfExpression( entryNode.valueExpression, /* flags */ undefined, - makeInferenceContext(effectiveValueType) + entryInferenceContext ); } else { const effectiveValueType = expectedValueType ?? (forceStrictInference ? NeverType.createNever() : undefined); + entryInferenceContext = makeInferenceContext(effectiveValueType); valueTypeResult = getTypeOfExpression( entryNode.valueExpression, /* flags */ undefined, - makeInferenceContext(effectiveValueType) + entryInferenceContext ); } + if (entryInferenceContext && !valueTypeResult.typeErrors) { + valueTypeResult.type = + inferTypeArgFromExpectedEntryType( + entryInferenceContext, + [valueTypeResult.type], + !isValueTypeInvariant + ) ?? valueTypeResult.type; + } + if (expectedDiagAddendum && valueTypeResult.expectedTypeDiagAddendum) { expectedDiagAddendum.addAddendum(valueTypeResult.expectedTypeDiagAddendum); } @@ -12642,12 +12658,22 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + const entryInferenceContext = makeInferenceContext(expectedType); const unexpandedTypeResult = getTypeOfExpression( entryNode.expandExpression, /* flags */ undefined, - makeInferenceContext(expectedType) + entryInferenceContext ); + if (entryInferenceContext && !unexpandedTypeResult.typeErrors) { + unexpandedTypeResult.type = + inferTypeArgFromExpectedEntryType( + entryInferenceContext, + [unexpandedTypeResult.type], + !isValueTypeInvariant + ) ?? unexpandedTypeResult.type; + } + if (unexpandedTypeResult.isIncomplete) { isIncomplete = true; } @@ -13001,7 +13027,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return inferenceContext.expectedType; } - const typeVarContext = new TypeVarContext(); + const typeVarContext = new TypeVarContext(getTypeVarScopeId(inferenceContext.expectedType)); const expectedType = inferenceContext.expectedType; let isCompatible = true; @@ -13022,7 +13048,27 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions : stripLiteralValue(combinedTypes); } - return applySolvedTypeVars(inferenceContext.expectedType, typeVarContext, { applyInScopePlaceholders: true }); + return mapSubtypes( + applySolvedTypeVars(inferenceContext.expectedType, typeVarContext, { applyInScopePlaceholders: true }), + (subtype) => { + if (entryTypes.length !== 1) { + return subtype; + } + const entryType = entryTypes[0]; + + // If the entry type is a TypedDict instance, clone it with additional information. + if ( + isTypeSame(subtype, entryType, { ignoreTypedDictNarrowEntries: true }) && + isClass(subtype) && + isClass(entryType) && + ClassType.isTypedDictClass(entryType) + ) { + return ClassType.cloneForNarrowedTypedDictEntries(subtype, entryType.typedDictNarrowedEntries); + } + + return subtype; + } + ); } function getTypeOfYield(node: YieldNode): TypeResult { @@ -21519,6 +21565,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions prevSrcType = curSrcType; } + // If we're enforcing invariance, literal types must match as well. + if ((flags & AssignTypeFlags.EnforceInvariance) !== 0) { + const srcIsLiteral = srcType.literalValue !== undefined; + const destIsLiteral = destType.literalValue !== undefined; + if (srcIsLiteral !== destIsLiteral) { + return false; + } + } + if (destType.typeArguments) { // If the dest type is specialized, make sure the specialized source // type arguments are assignable to the dest type arguments. diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 79d2a813d..61f96c957 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -110,6 +110,7 @@ export type InheritanceChain = (ClassType | UnknownType)[]; export interface TypeSameOptions { ignorePseudoGeneric?: boolean; ignoreTypeFlags?: boolean; + ignoreTypedDictNarrowEntries?: boolean; treatAnySameAsUnknown?: boolean; } @@ -2688,7 +2689,7 @@ export function isTypeSame(type1: Type, type2: Type, options: TypeSameOptions = return false; } - if (!ClassType.isTypedDictNarrowedEntriesSame(type1, classType2)) { + if (!options.ignoreTypedDictNarrowEntries && !ClassType.isTypedDictNarrowedEntriesSame(type1, classType2)) { return false; } diff --git a/packages/pyright-internal/src/tests/samples/constructor2.py b/packages/pyright-internal/src/tests/samples/constructor2.py index 7eed70519..7bb4fe1f9 100644 --- a/packages/pyright-internal/src/tests/samples/constructor2.py +++ b/packages/pyright-internal/src/tests/samples/constructor2.py @@ -162,7 +162,7 @@ def s17(): def s18(): a1: Mapping[object, object] = {"a": 3, "b": 5.6} - reveal_type(a1, expected_text="dict[object, float | int]") + reveal_type(a1, expected_text="dict[object, int | float]") a2: Dict[object, object] = {"a": 3, "b": 5.6} reveal_type(a2, expected_text="dict[object, object]") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes117.py b/packages/pyright-internal/src/tests/samples/genericTypes117.py new file mode 100644 index 000000000..7134322ec --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes117.py @@ -0,0 +1,21 @@ +# This sample validates that a literal and a non-literal are not considered +# compatible types when in an invariant context. + +from typing import Literal, TypeVar + +T = TypeVar("T") + + +def func1(a: T, b: T) -> T: + return a + + +def func2() -> None: + foo_list: list[Literal["foo"]] = ["foo"] + x = func1(foo_list, [""]) + reveal_type(x, expected_text="list[Literal['foo']] | list[str]") + + # This should generate an error. + x.append("not foo") + print(foo_list) + diff --git a/packages/pyright-internal/src/tests/samples/protocol6.py b/packages/pyright-internal/src/tests/samples/protocol6.py index c4265aba8..d2678fd8e 100644 --- a/packages/pyright-internal/src/tests/samples/protocol6.py +++ b/packages/pyright-internal/src/tests/samples/protocol6.py @@ -60,21 +60,26 @@ class Cow: # doesn't provide an attributes. c: Mammal[str] = Tapir() +# This should generate an error because "species" +# is incompatible. d: Ungulate[bytes] = Camel() + e: Ungulate[str] = Cow() f: CamelLike = Camel() - class CallTreeProto(Protocol): subcalls: list["CallTreeProto"] + class MyCallTree: subcalls: list["MyCallTree"] - + + class OtherCallTree: subcalls: list["CallTreeProto"] + # This should generate an error. x1: CallTreeProto = MyCallTree() diff --git a/packages/pyright-internal/src/tests/samples/typedDict18.py b/packages/pyright-internal/src/tests/samples/typedDict18.py index 1949aeeba..021170f20 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict18.py +++ b/packages/pyright-internal/src/tests/samples/typedDict18.py @@ -34,6 +34,7 @@ class TD4(TD3, Generic[_T1]): v4: TD4[str] = {"a": 3, "b": ""} +v5: TD4[tuple[str]] = {"a": 3, "b": ("",)} def func1(x: TD1[_T1, _T2]) -> dict[_T1, _T2]: @@ -108,6 +109,7 @@ def func6(a: TD8) -> Literal[1]: reveal_type(func6({"x": 1, "y": 1, "z": "a"})) + class TD9(TypedDict, Generic[_T1]): x: _T1 @@ -123,4 +125,4 @@ def __init__(self, **attrs: Unpack[TD9[_T1]]) -> None: f6 = ClassA[str](x=1) f7 = ClassA(x=1) -reveal_type(f7, expected_text='ClassA[int]') +reveal_type(f7, expected_text="ClassA[int]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 4e7010a2c..4a2279951 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1121,6 +1121,12 @@ test('GenericTypes116', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes117', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes117.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); @@ -1154,7 +1160,7 @@ test('Protocol5', () => { test('Protocol6', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol6.py']); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 4); }); test('Protocol7', () => { From 327ce377016f18dac65503bb57dd158a49ef89f4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 17 Jun 2023 20:30:36 -0700 Subject: [PATCH 303/525] Added test case for https://github.com/microsoft/pyright/issues/5027. --- .../src/tests/samples/protocol42.py | 21 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++++ 2 files changed, 27 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/protocol42.py diff --git a/packages/pyright-internal/src/tests/samples/protocol42.py b/packages/pyright-internal/src/tests/samples/protocol42.py new file mode 100644 index 000000000..38426dc77 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/protocol42.py @@ -0,0 +1,21 @@ +# This sample tests the case where a protocol implementation uses a +# method-scoped type variable. + +from typing import Protocol, Sequence, TypeVar + +Input = TypeVar("Input", contravariant=True) +Output = TypeVar("Output", covariant=True) +T = TypeVar("T") + + +class ProtoA(Protocol[Input, Output]): + def __call__(self, input: Input) -> Output: + raise NotImplementedError + + +class ImplA: + def __call__(self, input: Sequence[T]) -> T: + return input[0] + + +v1: ProtoA[Sequence[int], int] = ImplA() diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 4a2279951..9ba22d8d1 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1377,6 +1377,12 @@ test('Protocol41', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Protocol42', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol42.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('TypedDict1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDict1.py']); From 3021b9c621581f4534874a7ad49caad22477aa8f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 17 Jun 2023 21:52:57 -0700 Subject: [PATCH 304/525] =?UTF-8?q?Minor=20code=20cleanup=20=E2=80=94=20re?= =?UTF-8?q?moved=20dead=20code=20and=20converted=20lambda=20to=20function.?= =?UTF-8?q?=20No=20functional=20change.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pyright-internal/src/analyzer/constructors.ts | 4 ++-- .../pyright-internal/src/analyzer/typeEvaluator.ts | 13 ------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index da3b6a704..44aa6c6ad 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -722,7 +722,7 @@ export function createFunctionFromConstructor( const initType = evaluator.getTypeOfMember(initInfo); const objectType = ClassType.cloneAsInstance(classType); - const convertInitToConstructor = (initSubtype: FunctionType) => { + function convertInitToConstructor(initSubtype: FunctionType) { let constructorFunction = evaluator.bindFunctionToClassOrObject( objectType, initSubtype, @@ -747,7 +747,7 @@ export function createFunctionFromConstructor( } return constructorFunction; - }; + } if (isFunction(initType)) { return convertInitToConstructor(initType); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 686762ca1..b977a14b2 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11263,19 +11263,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Was the argument's type precomputed by the caller? if (argParam.argType) { argType = argParam.argType; - } else if (argParam.isinstanceParam && !argParam.argument.typeResult && argParam.argument.valueExpression) { - const argTypeResult = getTypeOfExpression( - argParam.argument.valueExpression, - EvaluatorFlags.EvaluateStringLiteralAsType | - EvaluatorFlags.DisallowParamSpec | - EvaluatorFlags.DisallowTypeVarTuple - ); - - argType = argTypeResult.type; - - if (argTypeResult.isIncomplete) { - isTypeIncomplete = true; - } } else { const argTypeResult = getTypeOfArgument(argParam.argument); argType = argTypeResult.type; From 47cd514dbda38890d41191d5c132b21ca22d202d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 17 Jun 2023 22:21:52 -0700 Subject: [PATCH 305/525] Changed auto-variance algorithm to ignore `__new__` and `__init__` methods for purposes of calculating the variance of a TypeVar. This mirrors the behavior of mypy. (#5327) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 103 ++++++++++-------- .../src/tests/samples/autoVariance1.py | 10 ++ .../src/tests/samples/autoVariance3.py | 24 +++- .../src/tests/samples/partial1.py | 2 +- .../src/tests/samples/protocol29.py | 2 +- 5 files changed, 87 insertions(+), 54 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index b977a14b2..bd070ab16 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21207,58 +21207,65 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let isAssignable = true; destType.details.fields.forEach((symbol, name) => { - if (isAssignable && symbol.isClassMember() && !symbol.isIgnoredForProtocolMatch()) { - const memberInfo = lookUpClassMember(srcType, name); - assert(memberInfo !== undefined); + if (!isAssignable || !symbol.isClassMember() || symbol.isIgnoredForProtocolMatch()) { + return; + } + + // Constructor methods are exempt from variance calculations. + if (name === '__new__' || name === '__init__') { + return; + } + + const memberInfo = lookUpClassMember(srcType, name); + assert(memberInfo !== undefined); - let destMemberType = getDeclaredTypeOfSymbol(symbol)?.type; - if (destMemberType) { - const srcMemberType = getTypeOfMember(memberInfo!); - destMemberType = partiallySpecializeType(destMemberType, destType); + let destMemberType = getDeclaredTypeOfSymbol(symbol)?.type; + if (destMemberType) { + const srcMemberType = getTypeOfMember(memberInfo!); + destMemberType = partiallySpecializeType(destMemberType, destType); - // Properties require special processing. + // Properties require special processing. + if ( + isClassInstance(destMemberType) && + ClassType.isPropertyClass(destMemberType) && + isClassInstance(srcMemberType) && + ClassType.isPropertyClass(srcMemberType) + ) { if ( - isClassInstance(destMemberType) && - ClassType.isPropertyClass(destMemberType) && - isClassInstance(srcMemberType) && - ClassType.isPropertyClass(srcMemberType) + !assignProperty( + evaluatorInterface, + ClassType.cloneAsInstantiable(destMemberType), + ClassType.cloneAsInstantiable(srcMemberType), + destType, + srcType, + diag, + typeVarContext, + /* selfTypeVarContext */ undefined, + recursionCount + ) ) { - if ( - !assignProperty( - evaluatorInterface, - ClassType.cloneAsInstantiable(destMemberType), - ClassType.cloneAsInstantiable(srcMemberType), - destType, - srcType, - diag, - typeVarContext, - /* selfTypeVarContext */ undefined, - recursionCount - ) - ) { - isAssignable = false; - } - } else { - const primaryDecl = symbol.getDeclarations()[0]; - // Class and instance variables that are mutable need to - // enforce invariance. - const flags = - primaryDecl?.type === DeclarationType.Variable && !isFinalVariableDeclaration(primaryDecl) - ? AssignTypeFlags.EnforceInvariance - : AssignTypeFlags.Default; - if ( - !assignType( - destMemberType, - srcMemberType, - diag, - typeVarContext, - /* srcTypeVarContext */ undefined, - flags, - recursionCount - ) - ) { - isAssignable = false; - } + isAssignable = false; + } + } else { + const primaryDecl = symbol.getDeclarations()[0]; + // Class and instance variables that are mutable need to + // enforce invariance. + const flags = + primaryDecl?.type === DeclarationType.Variable && !isFinalVariableDeclaration(primaryDecl) + ? AssignTypeFlags.EnforceInvariance + : AssignTypeFlags.Default; + if ( + !assignType( + destMemberType, + srcMemberType, + diag, + typeVarContext, + /* srcTypeVarContext */ undefined, + flags, + recursionCount + ) + ) { + isAssignable = false; } } } diff --git a/packages/pyright-internal/src/tests/samples/autoVariance1.py b/packages/pyright-internal/src/tests/samples/autoVariance1.py index d3add0a86..e8dadf96c 100644 --- a/packages/pyright-internal/src/tests/samples/autoVariance1.py +++ b/packages/pyright-internal/src/tests/samples/autoVariance1.py @@ -33,6 +33,10 @@ def __init__(self, value: T) -> None: def value(self): return self._value + @value.setter + def value(self, value: T): + self._value = value + # This should generate an error based on variance vinv1_1: ShouldBeInvariant1[float] = ShouldBeInvariant1[int](1) @@ -47,6 +51,9 @@ def __init__(self, value: T) -> None: def get_value(self) ->T: return self._value + def set_value(self, value: T): + self._value = value + # This should generate an error based on variance vinv2_1: ShouldBeInvariant2[float] = ShouldBeInvariant2[int](1) @@ -73,6 +80,9 @@ class ShouldBeInvariant3[K, V](dict[K, V]): class ShouldBeContravariant1[T]: def __init__(self, value: T) -> None: self._value = value + + def set_value(self, value: T) -> None: + self._value = value # This should generate an error based on variance diff --git a/packages/pyright-internal/src/tests/samples/autoVariance3.py b/packages/pyright-internal/src/tests/samples/autoVariance3.py index 88f5978a4..808ce11ab 100644 --- a/packages/pyright-internal/src/tests/samples/autoVariance3.py +++ b/packages/pyright-internal/src/tests/samples/autoVariance3.py @@ -17,8 +17,11 @@ class ShouldBeCovariant1(Generic[T]): - def __getitem__(self, index: int) -> T: ... - def __iter__(self) -> Iterator[T]: ... + def __getitem__(self, index: int) -> T: + ... + + def __iter__(self) -> Iterator[T]: + ... vco1_1: ShouldBeCovariant1[float] = ShouldBeCovariant1[int]() @@ -30,13 +33,13 @@ def __iter__(self) -> Iterator[T]: ... class ShouldBeCovariant2(Sequence[T]): pass + vco2_1: ShouldBeCovariant2[float] = ShouldBeCovariant2[int]() # This should generate an error based on variance vco2_2: ShouldBeCovariant2[int] = ShouldBeCovariant2[float]() - class ShouldBeInvariant1(Generic[T]): def __init__(self, value: T) -> None: self._value = value @@ -45,6 +48,11 @@ def __init__(self, value: T) -> None: def value(self): return self._value + @value.setter + def value(self, value: T): + self._value = value + + # This should generate an error based on variance vinv1_1: ShouldBeInvariant1[float] = ShouldBeInvariant1[int](1) @@ -56,9 +64,13 @@ class ShouldBeInvariant2(Generic[T]): def __init__(self, value: T) -> None: self._value = value - def get_value(self) ->T: + def get_value(self) -> T: return self._value + def set_value(self, value: T): + self._value = value + + # This should generate an error based on variance vinv2_1: ShouldBeInvariant2[float] = ShouldBeInvariant2[int](1) @@ -69,6 +81,7 @@ def get_value(self) ->T: class ShouldBeInvariant3(dict[K, V]): pass + # This should generate an error based on variance vinv3_1: ShouldBeInvariant3[float, str] = ShouldBeInvariant3[int, str]() @@ -86,6 +99,9 @@ class ShouldBeContravariant1(Generic[T]): def __init__(self, value: T) -> None: self._value = value + def set_value(self, value: T): + self._value = value + # This should generate an error based on variance vcontra1_1: ShouldBeContravariant1[float] = ShouldBeContravariant1[int](1) diff --git a/packages/pyright-internal/src/tests/samples/partial1.py b/packages/pyright-internal/src/tests/samples/partial1.py index e9180f4b3..c62f951df 100644 --- a/packages/pyright-internal/src/tests/samples/partial1.py +++ b/packages/pyright-internal/src/tests/samples/partial1.py @@ -4,7 +4,7 @@ from typing import Callable, Protocol, Self, TypeVar _T1 = TypeVar("_T1") -_T2 = TypeVar("_T2", contravariant=True) +_T2 = TypeVar("_T2", covariant=True) def func1(): diff --git a/packages/pyright-internal/src/tests/samples/protocol29.py b/packages/pyright-internal/src/tests/samples/protocol29.py index 3b2936377..ceb8cfefa 100644 --- a/packages/pyright-internal/src/tests/samples/protocol29.py +++ b/packages/pyright-internal/src/tests/samples/protocol29.py @@ -5,7 +5,7 @@ from typing_extensions import Protocol, Self from typing import Any, Callable, Type, TypeVar -_T = TypeVar("_T") +_T = TypeVar("_T", covariant=True) class Partial(Protocol[_T]): From 9bf823160cde536758e547f1dfee7c6591dacdc2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 17 Jun 2023 22:48:18 -0700 Subject: [PATCH 306/525] Fixed a bug that led to incorrect type evaluation when passing a generic class (with a constructor that includes class-scoped TypeVars) as an argument for a callable parameter. The class was being specialized prematurely (with type arguments set to `Unknown`) before the constraint solver was able to solve the higher-order function's type variables. This addresses https://github.com/microsoft/pyright/issues/5324. (#5328) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 4 ++-- .../src/tests/samples/genericTypes118.py | 12 ++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes118.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bd070ab16..31d4511c5 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11214,7 +11214,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions EvaluatorFlags.EvaluateStringLiteralAsType | EvaluatorFlags.DisallowParamSpec | EvaluatorFlags.DisallowTypeVarTuple - : EvaluatorFlags.None; + : EvaluatorFlags.DoNotSpecialize; const exprTypeResult = getTypeOfExpression( argParam.argument.valueExpression, flags, @@ -22542,7 +22542,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions concreteSrcType, diag?.createAddendum(), destTypeVarContext ?? new TypeVarContext(getTypeVarScopeId(destType)), - srcTypeVarContext ?? new TypeVarContext(getTypeVarScopeId(concreteSrcType)), + srcTypeVarContext ?? new TypeVarContext(getTypeVarScopeIds(concreteSrcType)), flags, recursionCount ) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes118.py b/packages/pyright-internal/src/tests/samples/genericTypes118.py new file mode 100644 index 000000000..19cf05d47 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes118.py @@ -0,0 +1,12 @@ +# This sample tests the case where a generic class is passed as an +# argument to a function that accepts a generic callable parameter. +# The class-scoped TypeVars for the class must be preserved when +# solving the higher-order TypeVars. + +from itertools import compress +from typing import Any, Iterable + + +def func1(a: Iterable[Iterable[tuple[str, int]]], b: Any) -> None: + c = map(compress, a, b) + reveal_type(c, expected_text="map[compress[tuple[str, int]]]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 9ba22d8d1..9e07d3d32 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1127,6 +1127,12 @@ test('GenericTypes117', () => { TestUtils.validateResults(analysisResults, 1); }); +test('GenericTypes118', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes118.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 53cb3f92ddc9a19e8d4d66bb5dbab7caa0063370 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 17 Jun 2023 23:00:49 -0700 Subject: [PATCH 307/525] Improved consistency of parameter ordering internally to type evaluator. No functional change. --- .../pyright-internal/src/analyzer/operations.ts | 6 +++--- .../pyright-internal/src/analyzer/typeEvaluator.ts | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/operations.ts b/packages/pyright-internal/src/analyzer/operations.ts index cb159d9f4..650f343f8 100644 --- a/packages/pyright-internal/src/analyzer/operations.ts +++ b/packages/pyright-internal/src/analyzer/operations.ts @@ -487,8 +487,8 @@ export function validateBinaryOperation( export function getTypeOfBinaryOperation( evaluator: TypeEvaluator, node: BinaryOperationNode, - inferenceContext: InferenceContext | undefined, - flags: EvaluatorFlags + flags: EvaluatorFlags, + inferenceContext: InferenceContext | undefined ): TypeResult { const leftExpression = node.leftExpression; let rightExpression = node.rightExpression; @@ -505,7 +505,7 @@ export function getTypeOfBinaryOperation( operatorSupportsChaining(rightExpression.operator) ) { // Evaluate the right expression so it is type checked. - getTypeOfBinaryOperation(evaluator, rightExpression, inferenceContext, flags); + getTypeOfBinaryOperation(evaluator, rightExpression, flags, inferenceContext); // Use the left side of the right expression for comparison purposes. rightExpression = rightExpression.leftExpression; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 31d4511c5..652d7d73f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -955,12 +955,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case ParseNodeType.Call: { - typeResult = getTypeOfCall(node, inferenceContext, flags); + typeResult = getTypeOfCall(node, flags, inferenceContext); break; } case ParseNodeType.Tuple: { - typeResult = getTypeOfTuple(node, inferenceContext, flags); + typeResult = getTypeOfTuple(node, flags, inferenceContext); break; } @@ -999,7 +999,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case ParseNodeType.BinaryOperation: { - typeResult = getTypeOfBinaryOperation(evaluatorInterface, node, inferenceContext, flags); + typeResult = getTypeOfBinaryOperation(evaluatorInterface, node, flags, inferenceContext); break; } @@ -7372,8 +7372,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getTypeOfTuple( node: TupleNode, - inferenceContext: InferenceContext | undefined, - flags: EvaluatorFlags + flags: EvaluatorFlags, + inferenceContext: InferenceContext | undefined ): TypeResult { if ((flags & EvaluatorFlags.ExpectingType) !== 0 && node.expressions.length === 0 && !inferenceContext) { return { type: makeTupleObject([]), isEmptyTupleShorthand: true }; @@ -7590,8 +7590,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getTypeOfCall( node: CallNode, - inferenceContext: InferenceContext | undefined, - flags: EvaluatorFlags + flags: EvaluatorFlags, + inferenceContext: InferenceContext | undefined ): TypeResult { let baseTypeResult: TypeResult | undefined; From 7ea11a1866e8c1cbae818901a4b8d7a6d60c2138 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 17 Jun 2023 23:17:32 -0700 Subject: [PATCH 308/525] =?UTF-8?q?Minor=20code=20cleanup=20=E2=80=94?= =?UTF-8?q?=C2=A0rename=20constant=20for=20clarity=20and=20refactor=20vali?= =?UTF-8?q?dation=20function.=20No=20functional=20change.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/analyzer/operations.ts | 4 +- .../src/analyzer/typeEvaluator.ts | 100 +++++++++++------- .../src/analyzer/typeEvaluatorTypes.ts | 4 +- 3 files changed, 65 insertions(+), 43 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/operations.ts b/packages/pyright-internal/src/analyzer/operations.ts index 650f343f8..2435df059 100644 --- a/packages/pyright-internal/src/analyzer/operations.ts +++ b/packages/pyright-internal/src/analyzer/operations.ts @@ -622,12 +622,12 @@ export function getTypeOfBinaryOperation( adjustedLeftType = evaluator.reportMissingTypeArguments( node.leftExpression, adjustedLeftType, - flags | EvaluatorFlags.ExpectingType + flags | EvaluatorFlags.ExpectingInstantiableType ); adjustedRightType = evaluator.reportMissingTypeArguments( node.rightExpression, adjustedRightType, - flags | EvaluatorFlags.ExpectingType + flags | EvaluatorFlags.ExpectingInstantiableType ); const newUnion = combineTypes([adjustedLeftType, adjustedRightType]); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 652d7d73f..f37c04982 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -936,7 +936,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions initializedBasicTypes(node); let typeResult: TypeResult | undefined; - let reportExpectingTypeErrors = (flags & EvaluatorFlags.ExpectingType) !== 0; + let expectingInstantiable = (flags & EvaluatorFlags.ExpectingInstantiableType) !== 0; switch (node.nodeType) { case ParseNodeType.Name: { @@ -976,7 +976,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isExpectingType) { // Don't report expecting type errors again. We will have already // reported them when analyzing the contents of the string. - reportExpectingTypeErrors = false; + expectingInstantiable = false; } typeResult = getTypeOfStringList(node, flags, isExpectingType); @@ -1087,7 +1087,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions case ParseNodeType.TypeAnnotation: { typeResult = getTypeOfExpression( node.typeAnnotation, - EvaluatorFlags.ExpectingType | + EvaluatorFlags.ExpectingInstantiableType | EvaluatorFlags.ExpectingTypeAnnotation | EvaluatorFlags.EvaluateStringLiteralAsType | EvaluatorFlags.DisallowParamSpec | @@ -1124,26 +1124,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions fail(`Unhandled expression type '${ParseTreeUtils.printExpression(node)}'`); } - if (reportExpectingTypeErrors && !typeResult.isIncomplete) { - if (flags & EvaluatorFlags.DisallowTypeVarTuple) { - if (isVariadicTypeVar(typeResult.type) && !typeResult.type.isVariadicInUnion) { - addError(Localizer.Diagnostic.typeVarTupleContext(), node); - typeResult.type = UnknownType.create(); - } - } - - if (!isEffectivelyInstantiable(typeResult.type)) { - const isEmptyVariadic = - isClassInstance(typeResult.type) && - ClassType.isTupleClass(typeResult.type) && - typeResult.type.tupleTypeArguments?.length === 0; - - if (!isEmptyVariadic) { - addExpectedClassDiagnostic(typeResult.type, node); - typeResult.type = UnknownType.create(); - typeResult.typeErrors = true; - } - } + // Do we need to validate that the type is instantiable? + if (expectingInstantiable) { + validateTypeIsInstantiable(typeResult, flags, node); } writeTypeCache(node, typeResult, flags, inferenceContext, /* allowSpeculativeCaching */ true); @@ -1199,6 +1182,33 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return typeResult; } + function validateTypeIsInstantiable(typeResult: TypeResult, flags: EvaluatorFlags, node: ExpressionNode) { + // If the type is incomplete, don't log any diagnostics yet. + if (typeResult.isIncomplete) { + return; + } + + if (flags & EvaluatorFlags.DisallowTypeVarTuple) { + if (isVariadicTypeVar(typeResult.type) && !typeResult.type.isVariadicInUnion) { + addError(Localizer.Diagnostic.typeVarTupleContext(), node); + typeResult.type = UnknownType.create(); + } + } + + if (!isEffectivelyInstantiable(typeResult.type)) { + const isEmptyVariadic = + isClassInstance(typeResult.type) && + ClassType.isTupleClass(typeResult.type) && + typeResult.type.tupleTypeArguments?.length === 0; + + if (!isEmptyVariadic) { + addExpectedClassDiagnostic(typeResult.type, node); + typeResult.type = UnknownType.create(); + typeResult.typeErrors = true; + } + } + } + function getTypeOfAwaitOperator(node: AwaitNode, flags: EvaluatorFlags, inferenceContext?: InferenceContext) { const effectiveExpectedType = inferenceContext ? createAwaitableReturnType(node, inferenceContext.expectedType, /* isGenerator */ false) @@ -1287,7 +1297,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let typeResult: TypeResult | undefined; if (isExpectingType) { - let updatedFlags = flags | EvaluatorFlags.AllowForwardReferences | EvaluatorFlags.ExpectingType; + let updatedFlags = flags | EvaluatorFlags.AllowForwardReferences | EvaluatorFlags.ExpectingInstantiableType; // In most cases, annotations within a string are not parsed by the interpreter. // There are a few exceptions (e.g. the "bound" value for a TypeVar constructor). @@ -1486,7 +1496,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } let evaluatorFlags = - EvaluatorFlags.ExpectingType | + EvaluatorFlags.ExpectingInstantiableType | EvaluatorFlags.ExpectingTypeAnnotation | EvaluatorFlags.ConvertEllipsisToAny | EvaluatorFlags.EvaluateStringLiteralAsType; @@ -4338,7 +4348,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isTypeVar(type) && !type.details.isParamSpec && !type.isVariadicInUnion && - (flags & EvaluatorFlags.ExpectingType) === 0 && + (flags & EvaluatorFlags.ExpectingInstantiableType) === 0 && type.details.name === name ) { // Handle the special case of a PEP 604 union. These can appear within @@ -4361,7 +4371,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - if ((flags & EvaluatorFlags.ExpectingType) !== 0) { + if ((flags & EvaluatorFlags.ExpectingInstantiableType) !== 0) { if ((flags & EvaluatorFlags.AllowGenericClassType) === 0) { if (isInstantiableClass(type) && ClassType.isBuiltIn(type, 'Generic')) { addDiagnostic( @@ -4622,7 +4632,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Is this a generic class that needs to be specialized? if (isInstantiableClass(type)) { - if ((flags & EvaluatorFlags.ExpectingType) !== 0 && (flags & EvaluatorFlags.AllowMissingTypeArgs) === 0) { + if ( + (flags & EvaluatorFlags.ExpectingInstantiableType) !== 0 && + (flags & EvaluatorFlags.AllowMissingTypeArgs) === 0 + ) { if (!type.typeAliasInfo && requiresTypeArguments(type)) { if (!type.typeArguments || !type.isTypeArgumentExplicit) { addDiagnostic( @@ -4644,7 +4657,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Is this a generic type alias that needs to be specialized? if ( - (flags & EvaluatorFlags.ExpectingType) !== 0 && + (flags & EvaluatorFlags.ExpectingInstantiableType) !== 0 && type.typeAliasInfo && type.typeAliasInfo.typeParameters && type.typeAliasInfo.typeParameters.length > 0 && @@ -6126,7 +6139,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If this is meant to be a type and the base expression is a string expression, // emit an error because this will generate a runtime exception in Python versions // less than 3.10. - if (flags & EvaluatorFlags.ExpectingType) { + if (flags & EvaluatorFlags.ExpectingInstantiableType) { if (node.baseExpression.nodeType === ParseNodeType.StringList) { const fileInfo = AnalyzerNodeInfo.getFileInfo(node); if (!fileInfo.isStubFile && fileInfo.executionEnvironment.pythonVersion < PythonVersion.V3_10) { @@ -6606,7 +6619,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return concreteSubtype; } - if (flags & EvaluatorFlags.ExpectingType) { + if (flags & EvaluatorFlags.ExpectingInstantiableType) { if (isTypeVar(unexpandedSubtype)) { addDiagnostic( AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, @@ -6630,7 +6643,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions concreteSubtype.details.effectiveMetaclass && isInstantiableClass(concreteSubtype.details.effectiveMetaclass) && !ClassType.isBuiltIn(concreteSubtype.details.effectiveMetaclass, ['type', '_InitVarMeta']) && - (flags & EvaluatorFlags.ExpectingType) === 0 + (flags & EvaluatorFlags.ExpectingInstantiableType) === 0 ) { const itemMethodType = getTypeOfClassMember( node, @@ -7314,7 +7327,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let adjustedFlags = flags | - EvaluatorFlags.ExpectingType | + EvaluatorFlags.ExpectingInstantiableType | EvaluatorFlags.ConvertEllipsisToAny | EvaluatorFlags.EvaluateStringLiteralAsType; @@ -7375,7 +7388,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions flags: EvaluatorFlags, inferenceContext: InferenceContext | undefined ): TypeResult { - if ((flags & EvaluatorFlags.ExpectingType) !== 0 && node.expressions.length === 0 && !inferenceContext) { + if ( + (flags & EvaluatorFlags.ExpectingInstantiableType) !== 0 && + node.expressions.length === 0 && + !inferenceContext + ) { return { type: makeTupleObject([]), isEmptyTupleShorthand: true }; } @@ -11930,7 +11947,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeParameters = []; let isTypeParamListValid = true; typeParamsExpr.expressions.map((expr) => { - let entryType = getTypeOfExpression(expr, EvaluatorFlags.ExpectingType).type; + let entryType = getTypeOfExpression(expr, EvaluatorFlags.ExpectingInstantiableType).type; if (isTypeVar(entryType)) { if (entryType.scopeId) { isTypeParamListValid = false; @@ -12147,7 +12164,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let type: Type | undefined; if (node.constType === KeywordType.None) { - type = (flags & EvaluatorFlags.ExpectingType) !== 0 ? NoneType.createType() : NoneType.createInstance(); + type = + (flags & EvaluatorFlags.ExpectingInstantiableType) !== 0 + ? NoneType.createType() + : NoneType.createInstance(); } else if ( node.constType === KeywordType.True || node.constType === KeywordType.False || @@ -14720,7 +14740,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isDeclaredTypeAlias(node.leftExpression)) { flags |= - EvaluatorFlags.ExpectingType | + EvaluatorFlags.ExpectingInstantiableType | EvaluatorFlags.ExpectingTypeAnnotation | EvaluatorFlags.EvaluateStringLiteralAsType | EvaluatorFlags.DisallowParamSpec | @@ -15131,7 +15151,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const initSubclassArgs: FunctionArgument[] = []; let metaclassNode: ExpressionNode | undefined; let exprFlags = - EvaluatorFlags.ExpectingType | + EvaluatorFlags.ExpectingInstantiableType | EvaluatorFlags.AllowGenericClassType | EvaluatorFlags.DisallowNakedGeneric | EvaluatorFlags.DisallowTypeVarsWithScopeId | @@ -19203,7 +19223,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getTypeOfExpressionExpectingType(node: ExpressionNode, options?: ExpectedTypeOptions): TypeResult { let flags = - EvaluatorFlags.ExpectingType | EvaluatorFlags.EvaluateStringLiteralAsType | EvaluatorFlags.DisallowClassVar; + EvaluatorFlags.ExpectingInstantiableType | + EvaluatorFlags.EvaluateStringLiteralAsType | + EvaluatorFlags.DisallowClassVar; if (!options?.allowTypeVarsWithoutScopeId) { flags |= EvaluatorFlags.DisallowTypeVarsWithoutScopeId; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 5240d83e0..e2f8b8d94 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -80,9 +80,9 @@ export const enum EvaluatorFlags { // A TypeVarTuple isn't allowed in this context. DisallowTypeVarTuple = 1 << 6, - // Expression is expected to be a type (class) rather + // Expression is expected to be an instantiable type rather // than an instance (object) - ExpectingType = 1 << 7, + ExpectingInstantiableType = 1 << 7, // A type annotation restricts the types of expressions that are // allowed. If this flag is set, illegal type expressions are From 42a37f4b98a7e22a53835a0a5a9cbce611a6b627 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 17 Jun 2023 23:38:50 -0700 Subject: [PATCH 309/525] Re-enabled a test case that was previously disabled because it was broken. --- .../pyright-internal/src/tests/typeEvaluator2.test.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 9e07d3d32..0667eb844 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -620,14 +620,11 @@ test('GenericTypes34', () => { TestUtils.validateResults(analysisResults, 1); }); -// This test is intentionally commented out for now. The functionality -// that it tests relied on the looser handling of TypeVars. +test('GenericTypes35', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes35.py']); -// test('GenericTypes35', () => { -// const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes35.py']); - -// TestUtils.validateResults(analysisResults, 1); -// }); + TestUtils.validateResults(analysisResults, 1); +}); test('GenericTypes36', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes36.py']); From 2de35e3684972c199a142b8c7a19fc899bb42ab1 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 18 Jun 2023 00:00:06 -0700 Subject: [PATCH 310/525] Added documentation about higher-order functions. --- docs/mypy-comparison.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/mypy-comparison.md b/docs/mypy-comparison.md index 2b1d301a2..3152fd38b 100644 --- a/docs/mypy-comparison.md +++ b/docs/mypy-comparison.md @@ -346,6 +346,29 @@ def func2(x: list[int], y: list[str] | int): reveal_type(v2) # pyright: "list[int | str]" ("list[list[str] | int]" is also a valid answer) ``` +#### Constraint Solver: Higher-order Functions + +If a generic higher-order function is passed another generic callable as an argument, pyright is able to solve the type variables for both the target function and the argument. Mypy isn’t able to handle higher-order functions. + +```python +def identity(val: T) -> T: + return val + + +def higher_order1(cb: Callable[[S], T], arg: S) -> T: + return cb(arg) + +v1 = higher_order1(identity, 1.0) # mypy generates an error +reveal_type(v1) # mypy: T, pyright: float + + +def higher_order2(cb: Callable[P, R], *args: P.args, **kwargs: P.kwargs) -> R: + return cb(*args, **kwargs) + +v2 = higher_order2(identity, "") # mypy generates an error +reveal_type(v2) # mypy: T, pyright: str +``` + ### Constrained Type Variables From 02b776919844dee3fba0fb70cc2546d547f8fe37 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 18 Jun 2023 00:17:53 -0700 Subject: [PATCH 311/525] Fixed a false positive error arising from the use of a binary expression for a base class in a class declaration statement. This addresses https://github.com/microsoft/pyright/pull/5326. (#5331) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 10 +++++++++- .../pyright-internal/src/tests/samples/classes10.py | 9 ++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index f37c04982..3d530a6b8 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -999,7 +999,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case ParseNodeType.BinaryOperation: { - typeResult = getTypeOfBinaryOperation(evaluatorInterface, node, flags, inferenceContext); + let effectiveFlags = flags; + + // If we're expecting an instantiable type and this isn't a union operator, + // don't require that the two operands are also instantiable types. + if (expectingInstantiable && node.operator !== OperatorType.BitwiseOr) { + effectiveFlags &= ~EvaluatorFlags.ExpectingInstantiableType; + } + + typeResult = getTypeOfBinaryOperation(evaluatorInterface, node, effectiveFlags, inferenceContext); break; } diff --git a/packages/pyright-internal/src/tests/samples/classes10.py b/packages/pyright-internal/src/tests/samples/classes10.py index 6c1fd9fd9..bbd8ff210 100644 --- a/packages/pyright-internal/src/tests/samples/classes10.py +++ b/packages/pyright-internal/src/tests/samples/classes10.py @@ -10,9 +10,16 @@ class InnerA: pass -def dynamic_subclass(cls: type[T_A]): +def dynamic_subclass1(cls: type[T_A]): class SubClass(cls): class SubInnerClass(cls.InnerA): pass return SubClass + + +def dynamic_subclass2(base: type[A] | None): + class SubClass(base or A): + ... + + return SubClass From 2b0f8d22cdeed43aa060836d838fe5297607dfa9 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 18 Jun 2023 09:46:18 -0700 Subject: [PATCH 312/525] Improved hover text to display the calculated variance for a PEP 695-style class-scoped type variable when the user hovers over the type parameter in the type param list. --- .../src/analyzer/typeEvaluator.ts | 29 +++++++++++++++++- .../src/analyzer/typeEvaluatorTypes.ts | 1 + .../src/analyzer/typePrinter.ts | 30 ++++++++++++++++++- .../src/languageService/hoverProvider.ts | 21 ++++++++----- .../src/languageService/tooltipUtils.ts | 10 +++---- 5 files changed, 76 insertions(+), 15 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 3d530a6b8..550ea396f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -785,9 +785,33 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // context, logging any errors in the process. This may require the // type of surrounding statements to be evaluated. function getType(node: ExpressionNode): Type | undefined { - return evaluateTypeForSubnode(node, () => { + let type = evaluateTypeForSubnode(node, () => { evaluateTypesForExpressionInContext(node); })?.type; + + // If this is a type parameter with a calculated variance, see if we + // can swap it out for a version that has a computed variance. + if (type && isTypeVar(type) && type.details.declaredVariance === Variance.Auto) { + const typeVarType = type; + const typeParamListNode = ParseTreeUtils.getParentNodeOfType(node, ParseNodeType.TypeParameterList); + + if (typeParamListNode?.parent?.nodeType === ParseNodeType.Class) { + const classTypeResult = getTypeOfClass(typeParamListNode.parent); + + if (classTypeResult) { + inferTypeParameterVarianceForClass(classTypeResult.classType); + const typeParam = classTypeResult.classType.details.typeParameters.find((param) => + isTypeSame(param, typeVarType, { ignoreTypeFlags: true }) + ); + + if (typeParam) { + type = TypeBase.isInstance(type) ? TypeVarType.cloneAsInstance(typeParam) : typeParam; + } + } + } + } + + return type; } function getTypeResult(node: ExpressionNode): TypeResult | undefined { @@ -25341,6 +25365,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (options?.printUnknownWithAny) { flags |= TypePrinter.PrintTypeFlags.PrintUnknownWithAny; } + if (options?.printTypeVarVariance) { + flags |= TypePrinter.PrintTypeFlags.PrintTypeVarVariance; + } if (options?.omitTypeArgumentsIfUnknown) { flags |= TypePrinter.PrintTypeFlags.OmitTypeArgumentsIfUnknown; } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index e2f8b8d94..b438738cf 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -373,6 +373,7 @@ export interface PrintTypeOptions { enforcePythonSyntax?: boolean; useTypingUnpack?: boolean; printUnknownWithAny?: boolean; + printTypeVarVariance?: boolean; omitTypeArgumentsIfUnknown?: boolean; } diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index 1a664f68f..255470e57 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -34,6 +34,7 @@ import { TypeBase, TypeCategory, TypeVarType, + Variance, } from './types'; import { convertToInstance, doForEachSubtype, isTupleClass } from './typeUtils'; @@ -78,6 +79,9 @@ export const enum PrintTypeFlags { // Expand TypedDict kwargs to show the keys from the TypedDict instead of **kwargs. ExpandTypedDictArgs = 1 << 10, + + // Print the variance of a type parameter. + PrintTypeVarVariance = 1 << 11, } export type FunctionReturnTypeCallback = (type: FunctionType) => Type; @@ -677,7 +681,14 @@ function printTypeInternal( } if (TypeBase.isInstantiable(type)) { - return `${_printNestedInstantiable(type, typeVarName)}`; + typeVarName = `${_printNestedInstantiable(type, typeVarName)}`; + } + + if (!type.details.isVariadic && (printTypeFlags & PrintTypeFlags.PrintTypeVarVariance) !== 0) { + const varianceText = _getTypeVarVarianceText(type); + if (varianceText) { + typeVarName = `${typeVarName} (${varianceText})`; + } } return typeVarName; @@ -1191,6 +1202,23 @@ function _getReadableTypeVarName(type: TypeVarType, usePythonSyntax: boolean) { return TypeVarType.getReadableName(type); } +function _getTypeVarVarianceText(type: TypeVarType) { + const computedVariance = type.computedVariance ?? type.details.declaredVariance; + if (computedVariance === Variance.Invariant) { + return 'invariant'; + } + + if (computedVariance === Variance.Covariant) { + return 'covariant'; + } + + if (computedVariance === Variance.Contravariant) { + return 'contravariant'; + } + + return ''; +} + // Represents a map of named types (classes and type aliases) that appear within // a specified type to determine whether any of the names require disambiguation // (i.e. their fully-qualified name is required). diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index ab5c7c45f..b921e0c2f 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -15,7 +15,7 @@ import { Declaration, DeclarationType } from '../analyzer/declaration'; import { convertDocStringToMarkdown, convertDocStringToPlainText } from '../analyzer/docStringConversion'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { SourceMapper } from '../analyzer/sourceMapper'; -import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; +import { PrintTypeOptions, TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { doForEachSubtype, isMaybeDescriptorInstance } from '../analyzer/typeUtils'; import { ClassType, @@ -343,7 +343,7 @@ export class HoverProvider { this._functionSignatureDisplay ); } else { - typeText = typeVarName || node.value + this._getTypeText(typeNode, expandTypeAlias); + typeText = typeVarName || node.value + this._getTypeText(typeNode, { expandTypeAlias }); typeText = `(${label}) ` + typeText; } this._addResultsPart(parts, typeText, /* python */ true); @@ -373,9 +373,14 @@ export class HoverProvider { } case DeclarationType.TypeParameter: { + // If the user is hovering over a type parameter name in a class type parameter + // list, display the computed variance of the type param. + const typeParamListNode = ParseTreeUtils.getParentNodeOfType(node, ParseNodeType.TypeParameterList); + const printTypeVarVariance = typeParamListNode?.parent?.nodeType === ParseNodeType.Class; + this._addResultsPart( parts, - '(type parameter) ' + node.value + this._getTypeText(node), + '(type parameter) ' + node.value + this._getTypeText(node, { printTypeVarVariance }), /* python */ true ); this._addDocumentationPart(parts, node, resolvedDecl); @@ -437,7 +442,7 @@ export class HoverProvider { } case DeclarationType.TypeAlias: { - const typeText = node.value + this._getTypeText(node, /* expandTypeAlias */ true); + const typeText = node.value + this._getTypeText(node, { expandTypeAlias: true }); this._addResultsPart(parts, `(type alias) ${typeText}`, /* python */ true); this._addDocumentationPart(parts, node, resolvedDecl); break; @@ -509,14 +514,14 @@ export class HoverProvider { return getTypeForToolTip(this._evaluator, node); } - private _getTypeText(node: ExpressionNode, expandTypeAlias = false): string { + private _getTypeText(node: ExpressionNode, options?: PrintTypeOptions): string { const type = this._getType(node); - return ': ' + this._evaluator.printType(type, { expandTypeAlias }); + return ': ' + this._evaluator.printType(type, options); } - private _getTypesText(nodes: ExpressionNode[], expandTypeAlias = false): string { + private _getTypesText(nodes: ExpressionNode[], options?: PrintTypeOptions): string { const type = combineExpressionTypes(nodes, this._evaluator); - return ': ' + this._evaluator.printType(type, { expandTypeAlias }); + return ': ' + this._evaluator.printType(type, options); } private _addDocumentationPart(parts: HoverTextPart[], node: NameNode, resolvedDecl: Declaration | undefined) { diff --git a/packages/pyright-internal/src/languageService/tooltipUtils.ts b/packages/pyright-internal/src/languageService/tooltipUtils.ts index 7af857a22..4d45bac90 100644 --- a/packages/pyright-internal/src/languageService/tooltipUtils.ts +++ b/packages/pyright-internal/src/languageService/tooltipUtils.ts @@ -25,17 +25,17 @@ import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { ClassMemberLookupFlags, lookUpClassMember } from '../analyzer/typeUtils'; import { ClassType, - combineTypes, FunctionType, + OverloadedFunctionType, + Type, + TypeCategory, + UnknownType, + combineTypes, isClassInstance, isFunction, isInstantiableClass, isModule, isOverloadedFunction, - OverloadedFunctionType, - Type, - TypeCategory, - UnknownType, } from '../analyzer/types'; import { SignatureDisplayType } from '../common/configOptions'; import { isDefined } from '../common/core'; From e3080b1369ee9833aa4403c8498b3615b31b0e75 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 18 Jun 2023 10:15:58 -0700 Subject: [PATCH 313/525] Fixed a bug that led to a false positive error under certain circumstances when a literal type argument was used in conjunction with a protocol that used a covariant type parameter and an implementation of that protocol that used an invariant type parameter. This addresses https://github.com/microsoft/pyright/issues/5282. (#5332) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 2 +- .../src/tests/samples/genericTypes119.py | 28 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericTypes119.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 550ea396f..e86c7a37b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21780,7 +21780,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions assignmentDiag, destTypeVarContext, srcTypeVarContext, - flags | AssignTypeFlags.EnforceInvariance, + flags | AssignTypeFlags.EnforceInvariance | AssignTypeFlags.RetainLiteralsForTypeVar, recursionCount ) ) { diff --git a/packages/pyright-internal/src/tests/samples/genericTypes119.py b/packages/pyright-internal/src/tests/samples/genericTypes119.py new file mode 100644 index 000000000..5cebd203d --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericTypes119.py @@ -0,0 +1,28 @@ +# This sample tests the case where a protocol uses a covariant +# type parameter but a corresponding implementation uses an +# invariant type parameter. Literal types need to be handled +# carefully in this case. + +from typing import Awaitable, Literal, TypeVar + +_T = TypeVar("_T") + + +class Future(Awaitable[_T]): + ... + + +def func1(future: Future[_T]) -> Future[_T]: + ... + + +def func2(coro: Awaitable[_T]) -> Future[_T]: + ... + + +def func3() -> Awaitable[Literal[True]]: + ... + + +v1 = func1(func2(func3())) +reveal_type(v1, expected_text="Future[Literal[True]]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 0667eb844..7a0fcca34 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1130,6 +1130,12 @@ test('GenericTypes118', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericTypes119', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes119.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From 52c8cac1ffe917eb0560a8094ca17eaef703875c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 18 Jun 2023 12:41:24 -0700 Subject: [PATCH 314/525] Changed type printer (the component that renders types into text) to use the lowercase `type[x]` instead of `Type[x]`. It has now been four years since PEP 585 deprecated the use of the upper-case version, so most developers should be getting comfortable with the lowercase version at this point. --- packages/pyright-internal/src/analyzer/typePrinter.ts | 6 +++--- .../tests/fourslash/completions.typeAlias.fourslash.ts | 2 +- .../fourslash/completions.variableDocStrings.fourslash.ts | 2 +- .../tests/fourslash/hover.docstring.alias.fourslash.ts | 6 +++--- .../src/tests/fourslash/hover.init.fourslash.ts | 2 +- .../tests/fourslash/hover.variable.docString.fourslash.ts | 2 +- packages/pyright-internal/src/tests/samples/annotated1.py | 2 +- .../pyright-internal/src/tests/samples/classGetItem1.py | 4 ++-- .../pyright-internal/src/tests/samples/functionMember2.py | 6 +++--- .../pyright-internal/src/tests/samples/genericTypes105.py | 2 +- .../pyright-internal/src/tests/samples/genericTypes113.py | 2 +- .../pyright-internal/src/tests/samples/genericTypes115.py | 4 ++-- .../pyright-internal/src/tests/samples/genericTypes28.py | 6 +++--- .../pyright-internal/src/tests/samples/genericTypes31.py | 2 +- .../pyright-internal/src/tests/samples/genericTypes46.py | 4 ++-- .../pyright-internal/src/tests/samples/genericTypes81.py | 2 +- .../pyright-internal/src/tests/samples/isinstance1.py | 4 ++-- .../pyright-internal/src/tests/samples/isinstance4.py | 2 +- .../pyright-internal/src/tests/samples/isinstance6.py | 4 ++-- .../pyright-internal/src/tests/samples/memberAccess12.py | 2 +- .../pyright-internal/src/tests/samples/memberAccess13.py | 4 ++-- packages/pyright-internal/src/tests/samples/metaclass4.py | 2 +- packages/pyright-internal/src/tests/samples/metaclass5.py | 4 ++-- .../pyright-internal/src/tests/samples/nameBindings4.py | 2 +- packages/pyright-internal/src/tests/samples/none2.py | 6 +++--- packages/pyright-internal/src/tests/samples/operators6.py | 4 ++-- .../pyright-internal/src/tests/samples/properties11.py | 4 ++-- .../src/tests/samples/recursiveTypeAlias3.py | 2 +- packages/pyright-internal/src/tests/samples/self5.py | 4 ++-- packages/pyright-internal/src/tests/samples/typeAlias1.py | 2 +- .../pyright-internal/src/tests/samples/typeAlias12.py | 2 +- .../pyright-internal/src/tests/samples/typeAlias13.py | 4 ++-- .../pyright-internal/src/tests/samples/typeAlias15.py | 2 +- packages/pyright-internal/src/tests/samples/typeAlias4.py | 6 +++--- packages/pyright-internal/src/tests/samples/typeAlias5.py | 4 ++-- .../src/tests/samples/typeNarrowingIsinstance3.py | 6 +++--- .../src/tests/samples/typeNarrowingIsinstance6.py | 4 ++-- .../src/tests/samples/typeNarrowingLiteralMember1.py | 8 ++++---- packages/pyright-internal/src/tests/samples/unions3.py | 2 +- packages/pyright-internal/src/tests/typePrinter.test.ts | 4 ++-- 40 files changed, 71 insertions(+), 71 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index 255470e57..1b6577331 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -434,7 +434,7 @@ function printTypeInternal( recursionTypes, recursionCount ); - return `Type[${typeString}]`; + return `type[${typeString}]`; } return printFunctionType( @@ -589,7 +589,7 @@ function printTypeInternal( if (literalClassStrings.size > 0) { const literalStrings: string[] = []; literalClassStrings.forEach((s) => literalStrings.push(s)); - dedupedSubtypeStrings.push(`Type[Literal[${literalStrings.join(', ')}]]`); + dedupedSubtypeStrings.push(`type[Literal[${literalStrings.join(', ')}]]`); } if (dedupedSubtypeStrings.length === 1) { @@ -1188,7 +1188,7 @@ function _printNestedInstantiable(type: Type, textToWrap: string) { const nestedTypes = (type.instantiableNestingLevel ?? 0) + 1; for (let nestLevel = 0; nestLevel < nestedTypes; nestLevel++) { - textToWrap = `Type[${textToWrap}]`; + textToWrap = `type[${textToWrap}]`; } return textToWrap; diff --git a/packages/pyright-internal/src/tests/fourslash/completions.typeAlias.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.typeAlias.fourslash.ts index c7e6645ed..d95f4da97 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.typeAlias.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.typeAlias.fourslash.ts @@ -13,7 +13,7 @@ await helper.verifyCompletion('includes', 'markdown', { { label: 'AliasT', kind: Consts.CompletionItemKind.Variable, - documentation: '```python\nAliasT: Type[list[int]]\n```', + documentation: '```python\nAliasT: type[list[int]]\n```', }, ], }, diff --git a/packages/pyright-internal/src/tests/fourslash/completions.variableDocStrings.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.variableDocStrings.fourslash.ts index efefe2542..3d42599fb 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.variableDocStrings.fourslash.ts @@ -66,7 +66,7 @@ await helper.verifyCompletion('includes', 'markdown', { label: 'SomeType', kind: Consts.CompletionItemKind.Variable, documentation: - "```python\nSomeType: Type[List[int | str]]\n```\n---\nHere's some documentation about SomeType", + "```python\nSomeType: type[List[int | str]]\n```\n---\nHere's some documentation about SomeType", }, ], }, diff --git a/packages/pyright-internal/src/tests/fourslash/hover.docstring.alias.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/hover.docstring.alias.fourslash.ts index ebc2a2398..bf47de096 100644 --- a/packages/pyright-internal/src/tests/fourslash/hover.docstring.alias.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/hover.docstring.alias.fourslash.ts @@ -18,7 +18,7 @@ //// ''' Alias alone doc string ''' helper.verifyHover('markdown', { - marker1: '```python\n(type alias) A: Type[Foo]\n```\n---\nAlias doc string\n\nOriginal doc string', - marker2: '```python\n(type alias) A: Type[Foo]\n```\n---\nAlias doc string\n\nOriginal doc string', - marker3: '```python\n(type alias) B: Type[Baz]\n```\n---\nAlias alone doc string', + marker1: '```python\n(type alias) A: type[Foo]\n```\n---\nAlias doc string\n\nOriginal doc string', + marker2: '```python\n(type alias) A: type[Foo]\n```\n---\nAlias doc string\n\nOriginal doc string', + marker3: '```python\n(type alias) B: type[Baz]\n```\n---\nAlias alone doc string', }); diff --git a/packages/pyright-internal/src/tests/fourslash/hover.init.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/hover.init.fourslash.ts index d871d9ae8..9be5ddbfa 100644 --- a/packages/pyright-internal/src/tests/fourslash/hover.init.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/hover.init.fourslash.ts @@ -32,7 +32,7 @@ helper.verifyHover('markdown', { marker1: '```python\nclass C1(name: str = "hello")\n```\n---\n\\_\\_init\\_\\_ docs', - marker2: '```python\n(type alias) unionType: Type[C1] | Type[C2]\n```', + marker2: '```python\n(type alias) unionType: type[C1] | type[C2]\n```', marker3: '```python\nclass G(value: int)\n```', marker4: '```python\nclass G(value: int)\n```', marker5: '```python\nclass C1(name: str = "hello")\n```\n---\n\\_\\_init\\_\\_ docs', diff --git a/packages/pyright-internal/src/tests/fourslash/hover.variable.docString.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/hover.variable.docString.fourslash.ts index d3a1d2006..07120d085 100644 --- a/packages/pyright-internal/src/tests/fourslash/hover.variable.docString.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/hover.variable.docString.fourslash.ts @@ -45,6 +45,6 @@ helper.verifyHover('markdown', { marker3: '```python\n(variable) y: Literal[2]\n```\n---\ntest y', marker4: '```python\n(variable) z: int\n```\n---\ntest z', marker5: - "```python\n(type alias) SomeType: Type[List[int | str]]\n```\n---\nHere's some documentation about SomeType", + "```python\n(type alias) SomeType: type[List[int | str]]\n```\n---\nHere's some documentation about SomeType", marker6: '```python\n(variable) x: Literal[123670029844611072]\n```', }); diff --git a/packages/pyright-internal/src/tests/samples/annotated1.py b/packages/pyright-internal/src/tests/samples/annotated1.py index 3d3976ee4..f94f4864d 100644 --- a/packages/pyright-internal/src/tests/samples/annotated1.py +++ b/packages/pyright-internal/src/tests/samples/annotated1.py @@ -75,4 +75,4 @@ class B: Alias2 = str Alias3 = Alias1[Alias2] -reveal_type(Alias3, expected_text="Type[str]") +reveal_type(Alias3, expected_text="type[str]") diff --git a/packages/pyright-internal/src/tests/samples/classGetItem1.py b/packages/pyright-internal/src/tests/samples/classGetItem1.py index bc8c2edfd..d40886c1a 100644 --- a/packages/pyright-internal/src/tests/samples/classGetItem1.py +++ b/packages/pyright-internal/src/tests/samples/classGetItem1.py @@ -13,7 +13,7 @@ def __class_getitem__(self, args: tuple[int, ...]) -> None: ... -reveal_type(Foo[10, 63], expected_text="Type[Foo]") +reveal_type(Foo[10, 63], expected_text="type[Foo]") _T = TypeVar("_T") @@ -27,4 +27,4 @@ def __class_getitem__(cls, args: tuple[int, ...]) -> None: ... -reveal_type(Bar[int, str], expected_text="Type[Bar[int, str]]") +reveal_type(Bar[int, str], expected_text="type[Bar[int, str]]") diff --git a/packages/pyright-internal/src/tests/samples/functionMember2.py b/packages/pyright-internal/src/tests/samples/functionMember2.py index 75e221c1f..5efb8e453 100644 --- a/packages/pyright-internal/src/tests/samples/functionMember2.py +++ b/packages/pyright-internal/src/tests/samples/functionMember2.py @@ -30,13 +30,13 @@ def method3() -> None: reveal_type(s2, expected_text="A") s3 = A.method2.__self__ -reveal_type(s3, expected_text="Type[A]") +reveal_type(s3, expected_text="type[A]") s3 = A.method2.__self__ -reveal_type(s3, expected_text="Type[A]") +reveal_type(s3, expected_text="type[A]") s4 = A().method2.__self__ -reveal_type(s4, expected_text="Type[A]") +reveal_type(s4, expected_text="type[A]") # This should generate an error because method3 is static. s5 = A().method3.__self__ diff --git a/packages/pyright-internal/src/tests/samples/genericTypes105.py b/packages/pyright-internal/src/tests/samples/genericTypes105.py index f03dbca3d..b39f6a041 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes105.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes105.py @@ -145,5 +145,5 @@ def test_5(a: Any, *args: int, b: Any = ...) -> Any: val4 = test_5(test_5, b=True) reveal_type( val4, - expected_text="Type[list[Overload[(a: Type[(**P(1)@test_5) -> Type[T(1)@test_5]], *, b: Literal[False] | None = ...) -> Type[list[Type[T(1)@test_5]]], (a: T(1)@test_5, *args: int, b: Literal[False] | None = ...) -> Type[list[T(1)@test_5]], (a: T(1)@test_5, *args: int, b: Literal[True] = ...) -> Type[list[T(1)@test_5]], (a: Any, *args: int, b: Any = ...) -> Any]]]", + expected_text="type[list[Overload[(a: type[(**P(1)@test_5) -> type[T(1)@test_5]], *, b: Literal[False] | None = ...) -> type[list[type[T(1)@test_5]]], (a: T(1)@test_5, *args: int, b: Literal[False] | None = ...) -> type[list[T(1)@test_5]], (a: T(1)@test_5, *args: int, b: Literal[True] = ...) -> type[list[T(1)@test_5]], (a: Any, *args: int, b: Any = ...) -> Any]]]", ) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes113.py b/packages/pyright-internal/src/tests/samples/genericTypes113.py index da004047d..ee5d6762a 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes113.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes113.py @@ -29,4 +29,4 @@ def func3(a: None) -> Callable[[type[_T1]], type[_T1]]: v3 = func3(None) -reveal_type(v3, expected_text="(Type[_T1@func3]) -> Type[_T1@func3]") +reveal_type(v3, expected_text="(type[_T1@func3]) -> type[_T1@func3]") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes115.py b/packages/pyright-internal/src/tests/samples/genericTypes115.py index faecabf95..facfb5b7e 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes115.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes115.py @@ -53,8 +53,8 @@ def foo(x: int) -> str: y = func2(x) z = func2(make_a(foo)) - reveal_type(y, expected_text="Type[A[str, (x: int)]]") - reveal_type(z, expected_text="Type[A[str, (x: int)]]") + reveal_type(y, expected_text="type[A[str, (x: int)]]") + reveal_type(z, expected_text="type[A[str, (x: int)]]") def func4(my_dict: dict[str, str]): diff --git a/packages/pyright-internal/src/tests/samples/genericTypes28.py b/packages/pyright-internal/src/tests/samples/genericTypes28.py index d50e9ac8d..9fcf9023d 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes28.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes28.py @@ -42,13 +42,13 @@ class Bar(Foo): def bar(value: _T1) -> Type[Foo[_T1]]: baz = Foo(value) qux = type(baz) - reveal_type(qux, expected_text="Type[Foo[_T1@bar]]") + reveal_type(qux, expected_text="type[Foo[_T1@bar]]") return qux d = Bar.get() -reveal_type(d, expected_text="Type[Bar]") -reveal_type(Bar.get(), expected_text="Type[Bar]") +reveal_type(d, expected_text="type[Bar]") +reveal_type(Bar.get(), expected_text="type[Bar]") def class_constructor(cls: type[_T1]) -> Callable[..., _T1]: diff --git a/packages/pyright-internal/src/tests/samples/genericTypes31.py b/packages/pyright-internal/src/tests/samples/genericTypes31.py index d8c18a5d7..2a9b94b76 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes31.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes31.py @@ -45,5 +45,5 @@ def func7() -> str: reveal_type(func4({"": 1}), expected_text="int") reveal_type(func4(func6), expected_text="str") reveal_type(func4(func7), expected_text="str") -reveal_type(func4(str), expected_text="Type[str]") +reveal_type(func4(str), expected_text="type[str]") reveal_type(func5(str), expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes46.py b/packages/pyright-internal/src/tests/samples/genericTypes46.py index 8d56fba3b..355018bee 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes46.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes46.py @@ -62,5 +62,5 @@ def func7(t: type[_T5]) -> type[_T5]: val6 = func6(B) val7 = func7(B) -reveal_type(val6, expected_text="Type[B]") -reveal_type(val7, expected_text="Type[B]") +reveal_type(val6, expected_text="type[B]") +reveal_type(val7, expected_text="type[B]") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes81.py b/packages/pyright-internal/src/tests/samples/genericTypes81.py index a8ca97999..fab9b93c1 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes81.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes81.py @@ -27,6 +27,6 @@ def __init__(self, thing: T) -> None: f2 = F[A2](A2()) -reveal_type(F[A2], expected_text="Type[F[A]]") +reveal_type(F[A2], expected_text="type[F[A]]") reveal_type(f2, expected_text="F[A]") reveal_type(f2.thing, expected_text="A") diff --git a/packages/pyright-internal/src/tests/samples/isinstance1.py b/packages/pyright-internal/src/tests/samples/isinstance1.py index b734d6ed3..5a8d62929 100644 --- a/packages/pyright-internal/src/tests/samples/isinstance1.py +++ b/packages/pyright-internal/src/tests/samples/isinstance1.py @@ -45,9 +45,9 @@ def func5(x: int | str | complex): def func6(x: Type[int] | Type[str] | Type[complex]): if issubclass(x, (int, str)): - reveal_type(x, expected_text="Type[int] | Type[str]") + reveal_type(x, expected_text="type[int] | type[str]") else: - reveal_type(x, expected_text="Type[complex]") + reveal_type(x, expected_text="type[complex]") def func7(x: Optional[Union[int, SomeTypedDict]]): diff --git a/packages/pyright-internal/src/tests/samples/isinstance4.py b/packages/pyright-internal/src/tests/samples/isinstance4.py index 67caff88c..9c017f86f 100644 --- a/packages/pyright-internal/src/tests/samples/isinstance4.py +++ b/packages/pyright-internal/src/tests/samples/isinstance4.py @@ -43,7 +43,7 @@ def get_type_of_object(object: Union[Callable[..., Any], CustomClass]): def func1(cls: Type[_T1], val: _T1): if issubclass(cls, CustomClass): - reveal_type(cls, expected_text="Type[CustomClass]*") + reveal_type(cls, expected_text="type[CustomClass]*") else: reveal_type(cls, expected_text="Never") diff --git a/packages/pyright-internal/src/tests/samples/isinstance6.py b/packages/pyright-internal/src/tests/samples/isinstance6.py index 05a055cee..e7b2ad824 100644 --- a/packages/pyright-internal/src/tests/samples/isinstance6.py +++ b/packages/pyright-internal/src/tests/samples/isinstance6.py @@ -6,10 +6,10 @@ class Foo: @classmethod def bar(cls, other: type): if issubclass(other, cls): - reveal_type(other, expected_text="Type[Self@Foo]") + reveal_type(other, expected_text="type[Self@Foo]") if issubclass(other, (int, cls)): - reveal_type(other, expected_text="Type[Self@Foo] | Type[int]") + reveal_type(other, expected_text="type[Self@Foo] | type[int]") def baz(self, other: object): if isinstance(other, type(self)): diff --git a/packages/pyright-internal/src/tests/samples/memberAccess12.py b/packages/pyright-internal/src/tests/samples/memberAccess12.py index c203be697..d16955764 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess12.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess12.py @@ -32,5 +32,5 @@ class B: a = A -reveal_type(B.a, expected_text="Type[A]") +reveal_type(B.a, expected_text="type[A]") reveal_type(B().a, expected_text="A") diff --git a/packages/pyright-internal/src/tests/samples/memberAccess13.py b/packages/pyright-internal/src/tests/samples/memberAccess13.py index 098f3ff0a..c04021a50 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess13.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess13.py @@ -9,8 +9,8 @@ class MockProducer: produce: Type[Mock] = Mock -reveal_type(MockProducer.produce, expected_text="Type[Mock]") -reveal_type(MockProducer().produce, expected_text="Type[Mock]") +reveal_type(MockProducer.produce, expected_text="type[Mock]") +reveal_type(MockProducer().produce, expected_text="type[Mock]") reveal_type(MockProducer.produce(), expected_text="Mock") diff --git a/packages/pyright-internal/src/tests/samples/metaclass4.py b/packages/pyright-internal/src/tests/samples/metaclass4.py index e3694dfe2..89f78a436 100644 --- a/packages/pyright-internal/src/tests/samples/metaclass4.py +++ b/packages/pyright-internal/src/tests/samples/metaclass4.py @@ -10,7 +10,7 @@ def do_something(self, p1: str, p2: int): MyCustomClass = MyMeta("MyCustomClass", (object,), {}) -reveal_type(MyCustomClass, expected_text="Type[MyCustomClass]") +reveal_type(MyCustomClass, expected_text="type[MyCustomClass]") class DerivedCustomClass(MyCustomClass): diff --git a/packages/pyright-internal/src/tests/samples/metaclass5.py b/packages/pyright-internal/src/tests/samples/metaclass5.py index 4f304c586..7967a0860 100644 --- a/packages/pyright-internal/src/tests/samples/metaclass5.py +++ b/packages/pyright-internal/src/tests/samples/metaclass5.py @@ -17,8 +17,8 @@ class Foo(metaclass=MetaFoo): def func1(a: Foo): - reveal_type(type(a), expected_text="Type[Foo]") - reveal_type(type("string1"), expected_text="Type[str]") + reveal_type(type(a), expected_text="type[Foo]") + reveal_type(type("string1"), expected_text="type[str]") reveal_type(type(a) == type("hi"), expected_text="bool") reveal_type(type("hi") == type("hi"), expected_text="bool") diff --git a/packages/pyright-internal/src/tests/samples/nameBindings4.py b/packages/pyright-internal/src/tests/samples/nameBindings4.py index dce32e85d..2aeb2d71a 100644 --- a/packages/pyright-internal/src/tests/samples/nameBindings4.py +++ b/packages/pyright-internal/src/tests/samples/nameBindings4.py @@ -7,4 +7,4 @@ def func1(): from enum import Enum -reveal_type(Enum, expected_text="Type[Enum]") +reveal_type(Enum, expected_text="type[Enum]") diff --git a/packages/pyright-internal/src/tests/samples/none2.py b/packages/pyright-internal/src/tests/samples/none2.py index ccf443d00..1d995aac1 100644 --- a/packages/pyright-internal/src/tests/samples/none2.py +++ b/packages/pyright-internal/src/tests/samples/none2.py @@ -1,11 +1,11 @@ -# This sample checks that Type[None] is handled correctly. +# This sample checks that type[None] is handled correctly. from typing import Type def func1(a: Type[None]) -> Type[str] | Type[None]: - reveal_type(a, expected_text="Type[None]") + reveal_type(a, expected_text="type[None]") # This should generate an error because None is # not compatible with Type[None]. @@ -15,7 +15,7 @@ def func1(a: Type[None]) -> Type[str] | Type[None]: val1 = func1(type(None)) if val1 is not None: - reveal_type(val1, expected_text="Type[str] | Type[None]") + reveal_type(val1, expected_text="type[str] | type[None]") # This should generate an error because None isn't # assignable to Type[None]. diff --git a/packages/pyright-internal/src/tests/samples/operators6.py b/packages/pyright-internal/src/tests/samples/operators6.py index b2cb2f35b..eb07d2ce3 100644 --- a/packages/pyright-internal/src/tests/samples/operators6.py +++ b/packages/pyright-internal/src/tests/samples/operators6.py @@ -4,7 +4,7 @@ import ctypes v1 = ctypes.POINTER(ctypes.c_bool) * 3 -reveal_type(v1, expected_text="Type[Array[_Pointer[c_bool]]]") +reveal_type(v1, expected_text="type[Array[_Pointer[c_bool]]]") v2 = 3 * ctypes.POINTER(ctypes.c_bool) -reveal_type(v2, expected_text="Type[Array[_Pointer[c_bool]]]") +reveal_type(v2, expected_text="type[Array[_Pointer[c_bool]]]") diff --git a/packages/pyright-internal/src/tests/samples/properties11.py b/packages/pyright-internal/src/tests/samples/properties11.py index 3223ffb9c..eaa90b74c 100644 --- a/packages/pyright-internal/src/tests/samples/properties11.py +++ b/packages/pyright-internal/src/tests/samples/properties11.py @@ -41,5 +41,5 @@ class Class3(Class2): ... -reveal_type(Class2.prop1, expected_text="Type[Class2]") -reveal_type(Class3.prop1, expected_text="Type[Class3]") +reveal_type(Class2.prop1, expected_text="type[Class2]") +reveal_type(Class3.prop1, expected_text="type[Class3]") diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias3.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias3.py index 723574825..ddc3c80b5 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias3.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias3.py @@ -23,4 +23,4 @@ RecursiveType: TypeAlias = list[Union[str, "RecursiveType"]] -reveal_type(RecursiveType, expected_text="Type[list[str | RecursiveType]]") +reveal_type(RecursiveType, expected_text="type[list[str | RecursiveType]]") diff --git a/packages/pyright-internal/src/tests/samples/self5.py b/packages/pyright-internal/src/tests/samples/self5.py index 50bb53fd8..7d2b4b6c6 100644 --- a/packages/pyright-internal/src/tests/samples/self5.py +++ b/packages/pyright-internal/src/tests/samples/self5.py @@ -20,7 +20,7 @@ class B(A): reveal_type(A().one, expected_text="A") -reveal_type(A.two, expected_text="Type[A]") +reveal_type(A.two, expected_text="type[A]") reveal_type(B().one, expected_text="B") -reveal_type(B.two, expected_text="Type[B]") +reveal_type(B.two, expected_text="type[B]") diff --git a/packages/pyright-internal/src/tests/samples/typeAlias1.py b/packages/pyright-internal/src/tests/samples/typeAlias1.py index aac7f712f..a8fe8fb08 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias1.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias1.py @@ -23,7 +23,7 @@ class A: Value2 = 1 -reveal_type(A.Value1, expected_text="Type[Literal[1]]") +reveal_type(A.Value1, expected_text="type[Literal[1]]") reveal_type(A.Value2, expected_text="int") diff --git a/packages/pyright-internal/src/tests/samples/typeAlias12.py b/packages/pyright-internal/src/tests/samples/typeAlias12.py index ee4d7f0a7..09a5454e6 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias12.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias12.py @@ -17,4 +17,4 @@ def fn2(x: List[Alias[V, V]]) -> List[V]: return x -reveal_type(Alias[int, int], expected_text="Type[int]") +reveal_type(Alias[int, int], expected_text="type[int]") diff --git a/packages/pyright-internal/src/tests/samples/typeAlias13.py b/packages/pyright-internal/src/tests/samples/typeAlias13.py index d9c9d53bc..382fc3670 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias13.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias13.py @@ -35,7 +35,7 @@ class F: Error = CoroMaybeMethod[DT, [F, E], Any] reveal_type( Error, - expected_text="Type[(DT@Error, F, E) -> Coroutine[Any, Any, Any]] | Type[(F, E) -> Coroutine[Any, Any, Any]]", + expected_text="type[(DT@Error, F, E) -> Coroutine[Any, Any, Any]] | type[(F, E) -> Coroutine[Any, Any, Any]]", ) @@ -57,5 +57,5 @@ class C: Something = CoroMaybeMethod[A, [BT, C], Any] reveal_type( Something, - expected_text="Type[(A, BT@Something, C) -> Coroutine[Any, Any, Any]] | Type[(BT@Something, C) -> Coroutine[Any, Any, Any]]", + expected_text="type[(A, BT@Something, C) -> Coroutine[Any, Any, Any]] | type[(BT@Something, C) -> Coroutine[Any, Any, Any]]", ) diff --git a/packages/pyright-internal/src/tests/samples/typeAlias15.py b/packages/pyright-internal/src/tests/samples/typeAlias15.py index 26db33094..28f20d741 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias15.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias15.py @@ -20,5 +20,5 @@ def func1(errs: _MaybeSequence[type[Exception]]): reveal_type( _MaybeSequence[type[HttpError]], - expected_text="Type[Type[HttpError]] | Type[Sequence[Type[HttpError]]]", + expected_text="type[type[HttpError]] | type[Sequence[type[HttpError]]]", ) diff --git a/packages/pyright-internal/src/tests/samples/typeAlias4.py b/packages/pyright-internal/src/tests/samples/typeAlias4.py index 8873432b4..9b2013108 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias4.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias4.py @@ -57,9 +57,9 @@ def requires_string(a: str): SimpleNonAlias: Type[int] = int if sys.version_info > (3, 9): - reveal_type(SimpleAlias, expected_text="Type[int]") - reveal_type(ExplicitAlias, expected_text="Type[int]") - reveal_type(SimpleNonAlias, expected_text="Type[int]") + reveal_type(SimpleAlias, expected_text="type[int]") + reveal_type(ExplicitAlias, expected_text="type[int]") + reveal_type(SimpleNonAlias, expected_text="type[int]") class ClassB: diff --git a/packages/pyright-internal/src/tests/samples/typeAlias5.py b/packages/pyright-internal/src/tests/samples/typeAlias5.py index 614b0fb12..7af95a16d 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias5.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias5.py @@ -11,7 +11,7 @@ MyUnion2 = Union[float, datetime] -# This should generate an error because two type arguements are +# This should generate an error because two type arguments are # expected, but only one was provided. MyUnion3 = MyUnion1[MyUnion2] @@ -24,7 +24,7 @@ MyUnion6 = MyUnion1[Literal[0], Literal["a"]] reveal_type( MyUnion6, - expected_text="Type[int] | Type[str] | Type[List[Literal[0]]] | Type[Literal[0, 'a']]", + expected_text="type[int] | type[str] | type[List[Literal[0]]] | type[Literal[0, 'a']]", ) diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py index f53db1e30..c0a20641c 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py @@ -55,14 +55,14 @@ def func2(val: Type[A]): # This should generate an error val.c_val - reveal_type(val, expected_text="Type[]") + reveal_type(val, expected_text="type[]") if issubclass(val, C): val.a_val val.b_val val.c_val reveal_type( - val, expected_text="Type[ and C>]" + val, expected_text="type[ and C>]" ) else: @@ -71,7 +71,7 @@ def func2(val: Type[A]): # This should generate an error val.b_val - reveal_type(val, expected_text="Type[A]") + reveal_type(val, expected_text="type[A]") _T1 = TypeVar("_T1", bound=A) diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance6.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance6.py index c97db1cab..e185381a4 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance6.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance6.py @@ -27,11 +27,11 @@ def func2( a: Type[SomeClass[int]], b: Union[Type[SomeClass[str]], Type[SomeClass[complex]]] ) -> None: if issubclass(a, OtherClass): - reveal_type(a, expected_text="Type[OtherClass[int]]") + reveal_type(a, expected_text="type[OtherClass[int]]") if issubclass(b, OtherClass): reveal_type( - b, expected_text="Type[OtherClass[str]] | Type[OtherClass[complex]]" + b, expected_text="type[OtherClass[str]] | type[OtherClass[complex]]" ) diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingLiteralMember1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingLiteralMember1.py index 57ee43290..5cba77534 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingLiteralMember1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingLiteralMember1.py @@ -108,16 +108,16 @@ def is_obj5(d: D): def eq_class2(c: Union[Type[A], Type[B]]): if c.kind_class == "A": - reveal_type(c, expected_text="Type[A]") + reveal_type(c, expected_text="type[A]") else: - reveal_type(c, expected_text="Type[B]") + reveal_type(c, expected_text="type[B]") def is_class2(c: Union[Type[A], Type[B]]): if c.kind_class is "A": - reveal_type(c, expected_text="Type[A] | Type[B]") + reveal_type(c, expected_text="type[A] | type[B]") else: - reveal_type(c, expected_text="Type[A] | Type[B]") + reveal_type(c, expected_text="type[A] | type[B]") class E: diff --git a/packages/pyright-internal/src/tests/samples/unions3.py b/packages/pyright-internal/src/tests/samples/unions3.py index 4473ac715..7b3fb10d8 100644 --- a/packages/pyright-internal/src/tests/samples/unions3.py +++ b/packages/pyright-internal/src/tests/samples/unions3.py @@ -16,7 +16,7 @@ class ClassWithNoMeta2: NoMetaUnion = ClassWithNoMeta1 | ClassWithNoMeta2 reveal_type( - NoMetaUnion, expected_text="Type[ClassWithNoMeta1] | Type[ClassWithNoMeta2]" + NoMetaUnion, expected_text="type[ClassWithNoMeta1] | type[ClassWithNoMeta2]" ) _T = TypeVar("_T") diff --git a/packages/pyright-internal/src/tests/typePrinter.test.ts b/packages/pyright-internal/src/tests/typePrinter.test.ts index d128813b3..afaea020a 100644 --- a/packages/pyright-internal/src/tests/typePrinter.test.ts +++ b/packages/pyright-internal/src/tests/typePrinter.test.ts @@ -49,7 +49,7 @@ test('SimpleTypes', () => { assert.strictEqual(printType(noneInstanceType, PrintTypeFlags.None, returnTypeCallback), 'None'); const noneInstantiableType = NoneType.createType(); - assert.strictEqual(printType(noneInstantiableType, PrintTypeFlags.None, returnTypeCallback), 'Type[None]'); + assert.strictEqual(printType(noneInstantiableType, PrintTypeFlags.None, returnTypeCallback), 'type[None]'); const moduleType = ModuleType.create('Test', ''); assert.strictEqual(printType(moduleType, PrintTypeFlags.None, returnTypeCallback), 'Module("Test")'); @@ -86,7 +86,7 @@ test('ClassTypes', () => { classTypeA.details.typeParameters.push(typeVarS, typeVarT); - assert.strictEqual(printType(classTypeA, PrintTypeFlags.None, returnTypeCallback), 'Type[A[S, T]]'); + assert.strictEqual(printType(classTypeA, PrintTypeFlags.None, returnTypeCallback), 'type[A[S, T]]'); const instanceA = ClassType.cloneAsInstance(classTypeA); assert.strictEqual(printType(instanceA, PrintTypeFlags.None, returnTypeCallback), 'A[S, T]'); From 8ce23eb615ace823cd45d9c4934c316c58cfe0e3 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 18 Jun 2023 12:55:22 -0700 Subject: [PATCH 315/525] =?UTF-8?q?Improved=20`reportUnnecessaryCast`=20so?= =?UTF-8?q?=20it=20works=20with=20types=20other=20than=20cl=E2=80=A6=20(#5?= =?UTF-8?q?336)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Improved `reportUnnecessaryCast` so it works with types other than class instances. This addresses https://github.com/microsoft/pyright/issues/5333. --- .../src/analyzer/typeEvaluator.ts | 4 +- .../src/tests/checker.test.ts | 2 +- .../src/tests/samples/unnecessaryCast1.py | 51 +++++++++++++++++-- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index e86c7a37b..594d1966a 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8913,9 +8913,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Verify that the cast is necessary. const castToType = getTypeOfArgumentExpectingType(argList[0]).type; const castFromType = getTypeOfArgument(argList[1]).type; - if (isInstantiableClass(castToType) && isClassInstance(castFromType)) { + if (TypeBase.isInstantiable(castToType) && !isUnknown(castToType)) { if ( - isTypeSame(castToType, ClassType.cloneAsInstantiable(castFromType), { + isTypeSame(convertToInstance(castToType), castFromType, { ignorePseudoGeneric: true, }) ) { diff --git a/packages/pyright-internal/src/tests/checker.test.ts b/packages/pyright-internal/src/tests/checker.test.ts index 24764cb1c..f420585e9 100644 --- a/packages/pyright-internal/src/tests/checker.test.ts +++ b/packages/pyright-internal/src/tests/checker.test.ts @@ -261,7 +261,7 @@ test('UnnecessaryCast1', () => { // Turn on errors. configOptions.diagnosticRuleSet.reportUnnecessaryCast = 'error'; analysisResults = TestUtils.typeAnalyzeSampleFiles(['unnecessaryCast1.py'], configOptions); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 6); }); test('UnnecessaryContains1', () => { diff --git a/packages/pyright-internal/src/tests/samples/unnecessaryCast1.py b/packages/pyright-internal/src/tests/samples/unnecessaryCast1.py index fe3d447e3..f63eddabb 100644 --- a/packages/pyright-internal/src/tests/samples/unnecessaryCast1.py +++ b/packages/pyright-internal/src/tests/samples/unnecessaryCast1.py @@ -1,13 +1,54 @@ # This sample tests the type checker's reportUnnecessaryCast feature. -from typing import cast, Union +from typing import Never, NoReturn, TypeVar, cast -def foo(a: int): +def func1(a: int): # This should generate an error if # reportUnnecessaryCast is enabled. - b = cast(int, a) + v1 = cast(int, a) -c: Union[int, str] = "hello" -d = cast(int, c) +def func2(a: int | str): + v1 = cast(int, a) + + b: str = "hello" + v2 = cast(int, b) + + +def func3(a: int | None): + v1 = cast(int, a) + + # This should generate an error if + # reportUnnecessaryCast is enabled. + v2 = cast(int | None, a) + + +T = TypeVar("T") + + +def func4(a: list[T]) -> list[T]: + # This should generate an error if + # reportUnnecessaryCast is enabled. + v1 = cast(list[T], a) + + return a + + +def func5(a: Never): + # This should generate an error if + # reportUnnecessaryCast is enabled. + v1 = cast(NoReturn, a) + + +def func6(a: type[int], b: int): + v1 = cast(int, a) + v2 = cast(type[int], b) + + # This should generate an error if + # reportUnnecessaryCast is enabled. + v3 = cast(type[int], a) + + # This should generate an error if + # reportUnnecessaryCast is enabled. + v4 = cast(int, b) From 643bb1d1330b7057957312e998d9e3b5b06faaea Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 18 Jun 2023 13:20:49 -0700 Subject: [PATCH 316/525] Improved type inference for lambdas in the case where a parameter includes a default value and the expected type doesn't include that parameter. This improvement was suggested in the [mypy issue tracker](https://github.com/python/mypy/issues/15459). (#5337) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 19 ++++++++++++++----- .../src/tests/samples/lambda12.py | 12 ++++++++++++ .../src/tests/typeEvaluator1.test.ts | 6 ++++++ 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/lambda12.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 594d1966a..98740b159 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13231,17 +13231,26 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // For now, use only the first expected type. const expectedFunctionType = expectedFunctionTypes.length > 0 ? expectedFunctionTypes[0] : undefined; let paramsArePositionOnly = true; + const expectedParamDetails = expectedFunctionType ? getParameterListDetails(expectedFunctionType) : undefined; node.parameters.forEach((param, index) => { - let paramType: Type = UnknownType.create(); - if (expectedFunctionType && index < expectedFunctionType.details.parameters.length) { - paramType = FunctionType.getEffectiveParameterType(expectedFunctionType, index); + let paramType: Type | undefined; + if (expectedParamDetails) { + if (index < expectedParamDetails.params.length) { + paramType = expectedParamDetails.params[index].type; + } else if (param.defaultValue) { + // If the lambda param has a default value but there is no associated + // parameter in the expected type, assume that the default value is + // being used to explicitly capture a value from an outer scope. Infer + // its type from the default value expression. + paramType = getTypeOfExpression(param.defaultValue, undefined, inferenceContext).type; + } } if (param.name) { writeTypeCache( param.name, - { type: transformVariadicParamType(node, param.category, paramType) }, + { type: transformVariadicParamType(node, param.category, paramType ?? UnknownType.create()) }, EvaluatorFlags.None ); } @@ -13288,7 +13297,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions hasDefault: !!param.defaultValue, defaultValueExpression: param.defaultValue, hasDeclaredType: true, - type: paramType, + type: paramType ?? UnknownType.create(), }; FunctionType.addParameter(functionType, functionParam); diff --git a/packages/pyright-internal/src/tests/samples/lambda12.py b/packages/pyright-internal/src/tests/samples/lambda12.py new file mode 100644 index 000000000..f1c287d14 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/lambda12.py @@ -0,0 +1,12 @@ +# This sample tests the case where a lambda includes one or more parameters +# that accept a default value and the the expected type does not include +# these parameters. In this case, the types of the extra parameters should +# be inferred based on the default value type. + +# pyright: strict + +from typing import Callable + + +def func1() -> list[Callable[[int], int]]: + return [lambda x, i=i: i * x for i in range(5)] diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 457eb468d..3cd4558cc 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -681,6 +681,12 @@ test('Lambda11', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Lambda12', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['lambda12.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Call1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['call1.py']); From 056415f6f44369085032224c1275f3c7d6bd1e93 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 18 Jun 2023 16:40:00 -0700 Subject: [PATCH 317/525] Fixed a bug in the control flow debugging code that prints the control flow graph. It was not correctly handling one of the node types which led to incomplete graphs. --- packages/pyright-internal/src/analyzer/codeFlowUtils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/codeFlowUtils.ts b/packages/pyright-internal/src/analyzer/codeFlowUtils.ts index 7b50428b2..4d925c203 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowUtils.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowUtils.ts @@ -104,6 +104,8 @@ export function formatControlFlowGraph(flowNode: FlowNode) { FlowFlags.WildcardImport | FlowFlags.TrueCondition | FlowFlags.FalseCondition | + FlowFlags.TrueNeverCondition | + FlowFlags.FalseNeverCondition | FlowFlags.NarrowForPattern | FlowFlags.ExhaustedMatch | FlowFlags.Call | @@ -115,7 +117,6 @@ export function formatControlFlowGraph(flowNode: FlowNode) { | FlowVariableAnnotation | FlowWildcardImport | FlowCondition - | FlowCondition | FlowExhaustedMatch | FlowCall | FlowPreFinallyGate From 23bcbcebfbbeb4732f13ed613fdc5c6307465dc8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 18 Jun 2023 17:42:25 -0700 Subject: [PATCH 318/525] Fixed bug in code flow engine that led to incorrect type evaluation of a variable in a nested loop. This addresses https://github.com/microsoft/pylance-release/issues/4509. --- .../src/analyzer/codeFlowEngine.ts | 29 ++++++++++++++++--- .../src/tests/samples/loops38.py | 22 ++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 6 ++++ 3 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/loops38.py diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index b600b4481..7877618f1 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -864,6 +864,7 @@ export function getCodeFlowEngine( reference === undefined && cacheEntry.incompleteSubtypes?.some((subtype) => subtype.type !== undefined); let firstAntecedentTypeIsIncomplete = false; + let firstAntecedentTypeIsPending = false; loopNode.antecedents.forEach((antecedent, index) => { // If we've trying to determine reachability and we've already proven @@ -872,6 +873,10 @@ export function getCodeFlowEngine( return; } + if (firstAntecedentTypeIsPending && index > 0) { + return; + } + cacheEntry = getCacheEntry(loopNode)!; // Is this entry marked "pending"? If so, we have recursed and there @@ -883,9 +888,21 @@ export function getCodeFlowEngine( index < cacheEntry.incompleteSubtypes.length && cacheEntry.incompleteSubtypes[index].isPending ) { - sawIncomplete = true; - sawPending = true; - return; + // In rare circumstances, it's possible for a code flow graph with + // nested loops to hit the case where the first antecedent is marked + // as pending. In this case, we'll evaluate only the first antecedent + // again even though it's pending. We're guaranteed to make forward + // progress with the first antecedent, and that will allow us to establish + // an initial type for this expression, but we don't want to evaluate + // any other antecedents in this case because this could result in + // infinite recursion. + if (index === 0) { + firstAntecedentTypeIsPending = true; + } else { + sawIncomplete = true; + sawPending = true; + return; + } } // Have we already been here (i.e. does the entry exist and is @@ -895,7 +912,11 @@ export function getCodeFlowEngine( cacheEntry.incompleteSubtypes !== undefined && index < cacheEntry.incompleteSubtypes.length ? cacheEntry.incompleteSubtypes[index] : undefined; - if (subtypeEntry === undefined || (!subtypeEntry?.isPending && subtypeEntry?.isIncomplete)) { + if ( + subtypeEntry === undefined || + (!subtypeEntry?.isPending && subtypeEntry?.isIncomplete) || + index === 0 + ) { const entryEvaluationCount = subtypeEntry === undefined ? 0 : subtypeEntry.evaluationCount; // Set this entry to "pending" to prevent infinite recursion. diff --git a/packages/pyright-internal/src/tests/samples/loops38.py b/packages/pyright-internal/src/tests/samples/loops38.py new file mode 100644 index 000000000..4dd9ecb80 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/loops38.py @@ -0,0 +1,22 @@ +# This sample tests a code flow graph that includes a nested loop +# and a variable that is assigned only in the outer loop. + + +# pyright: strict + + +# * Code flow graph for func1: +# Assign[step+=1] ── True[step==0] ── Assign[node=] ── Loop ┬─ Loop ┬─ Assign[step=1] ── Start +# │ ╰ Circular(Assign[step+=1]) +# ╰ FalseNever ─ False ─ Circular(Assign[node]) +def func1(nodes: list[int]): + step = 1 + while True: + for node in nodes: + if node or step == 0: + step += 1 + break + else: + return + + diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 5d03f8445..3dcb20a5f 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -388,6 +388,12 @@ test('Loops37', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Loops38', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops38.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('ForLoop1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['forLoop1.py']); From d816d0041c689e2cf51818514fbb291baadc9c1a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 00:00:07 -0700 Subject: [PATCH 319/525] Started to do a pass over the test cases to make them more consistent. --- .../src/tests/samples/abstractClass2.py | 21 +++++++----- .../src/tests/samples/annotatedVar1.py | 2 -- .../src/tests/samples/annotations4.py | 6 ++-- .../src/tests/samples/annotations5.py | 8 ++--- .../src/tests/samples/assignment11.py | 3 +- .../src/tests/samples/assignment12.py | 1 + .../src/tests/samples/assignment2.py | 10 +++--- .../src/tests/samples/assignment3.py | 14 ++++---- .../src/tests/samples/assignment4.py | 8 ++--- .../src/tests/samples/assignment8.py | 4 +-- .../src/tests/samples/assignment9.py | 16 ++++----- .../src/tests/samples/assignmentExpr7.py | 9 +++-- .../src/tests/samples/assignmentExpr9.py | 4 +-- .../src/tests/samples/augmentedAssignment2.py | 7 +--- .../src/tests/samples/augmentedAssignment3.py | 2 +- .../src/tests/samples/builtins2.py | 3 +- .../src/tests/samples/call2.py | 10 +++--- .../src/tests/samples/call4.py | 6 ++-- .../src/tests/samples/callSite1.py | 1 + .../src/tests/samples/callable1.py | 8 ++--- .../src/tests/samples/callable2.py | 26 +++++++------- .../src/tests/samples/callable3.py | 22 +++++------- .../src/tests/samples/callable4.py | 10 +++--- .../src/tests/samples/callable5.py | 16 ++++----- .../src/tests/samples/callable6.py | 23 +++++++------ .../src/tests/samples/callbackProtocol1.py | 16 ++++----- .../src/tests/samples/callbackProtocol5.py | 24 ++++++------- .../src/tests/samples/callbackProtocol6.py | 3 +- .../src/tests/samples/callbackProtocol9.py | 1 + .../src/tests/samples/circularBaseClass.py | 7 ++-- .../src/tests/samples/classGetItem1.py | 8 ++--- .../src/tests/samples/classVar1.py | 6 ++-- .../src/tests/samples/classVar3.py | 11 +++--- .../src/tests/samples/classes1.py | 5 +-- .../src/tests/samples/classes4.py | 10 +++--- .../src/tests/samples/classes5.py | 25 +++++++------- .../src/tests/samples/classes7.py | 1 + .../src/tests/samples/classes8.py | 4 +-- .../src/tests/samples/classes9.py | 10 +++++- .../src/tests/samples/codeFlow3.py | 6 ++-- .../src/tests/samples/codeFlow4.py | 6 ++-- .../src/tests/samples/codeFlow6.py | 12 +++---- .../src/tests/samples/codeFlow7.py | 12 +++---- .../src/tests/samples/comparison1.py | 9 +++-- .../src/tests/samples/comparison2.py | 1 + .../src/tests/samples/constructor1.py | 8 ++--- .../src/tests/samples/constructor12.py | 14 ++++---- .../src/tests/samples/constructor13.py | 6 ++-- .../src/tests/samples/constructor2.py | 34 ++++++++----------- .../src/tests/samples/constructor9.py | 4 +-- .../src/tests/typeEvaluator1.test.ts | 2 +- 51 files changed, 236 insertions(+), 249 deletions(-) diff --git a/packages/pyright-internal/src/tests/samples/abstractClass2.py b/packages/pyright-internal/src/tests/samples/abstractClass2.py index 3cc5fa402..dcbed833c 100644 --- a/packages/pyright-internal/src/tests/samples/abstractClass2.py +++ b/packages/pyright-internal/src/tests/samples/abstractClass2.py @@ -3,23 +3,28 @@ import abc + class InterfaceA(abc.ABC): - @abc.abstractmethod - def a(self) -> None: - print('InterfaceA.a') + @abc.abstractmethod + def a(self) -> None: + print("InterfaceA.a") + class MixinA(InterfaceA): - def a(self) -> None: - print('MixinA.a') + def a(self) -> None: + print("MixinA.a") + class InterfaceAB(InterfaceA): @abc.abstractmethod def b(self) -> None: - print('InterfaceAB.b') + print("InterfaceAB.b") + class ClassAB(InterfaceAB, MixinA): - def b(self) -> None: - print('ClassAB.b') + def b(self) -> None: + print("ClassAB.b") + ab = ClassAB() ab.a() diff --git a/packages/pyright-internal/src/tests/samples/annotatedVar1.py b/packages/pyright-internal/src/tests/samples/annotatedVar1.py index ee882dbab..0094dcae7 100644 --- a/packages/pyright-internal/src/tests/samples/annotatedVar1.py +++ b/packages/pyright-internal/src/tests/samples/annotatedVar1.py @@ -18,5 +18,3 @@ def foo(): b: float = 4.5 c: str = "" d: int = yield 42 - - diff --git a/packages/pyright-internal/src/tests/samples/annotations4.py b/packages/pyright-internal/src/tests/samples/annotations4.py index 4e4555f70..4c6d97160 100644 --- a/packages/pyright-internal/src/tests/samples/annotations4.py +++ b/packages/pyright-internal/src/tests/samples/annotations4.py @@ -2,7 +2,6 @@ # incompatible declared types. from collections.abc import Callable -from typing import List def a(): @@ -12,6 +11,7 @@ def a(): # This should generate an error for an incompatible assignment. a = 1 + # This should generate an error for an obscured type. def b(): pass @@ -48,9 +48,9 @@ def my_func(param1: int, param2): # This should be fine because both declarations of 'e' # use the same type. -e: List[int] +e: list[int] e = [3] -e: List[int] +e: list[int] def register(fn: Callable[[], None]) -> None: diff --git a/packages/pyright-internal/src/tests/samples/annotations5.py b/packages/pyright-internal/src/tests/samples/annotations5.py index 7a9a63e63..865e31344 100644 --- a/packages/pyright-internal/src/tests/samples/annotations5.py +++ b/packages/pyright-internal/src/tests/samples/annotations5.py @@ -1,9 +1,9 @@ # This sample tests the handling of tuple expressions within a subscript # when used with type annotations. -from typing import Dict, List +a1: dict[(str, str)] = {"hi": "there"} +# This should generate an error because there are too many type arguments. +a2: dict[(str, str, str)] = {"hi": "there"} -a: Dict[(str, str)] = {"hi": "there"} - -b: List[(int,)] = [3, 4, 5] +b1: list[(int,)] = [3, 4, 5] diff --git a/packages/pyright-internal/src/tests/samples/assignment11.py b/packages/pyright-internal/src/tests/samples/assignment11.py index 424da60bb..f48965881 100644 --- a/packages/pyright-internal/src/tests/samples/assignment11.py +++ b/packages/pyright-internal/src/tests/samples/assignment11.py @@ -11,5 +11,4 @@ # This should generate an error because type comments are not # allowed for chained assignments. -x1 = x2 = x3 = [3] # type: list[float] - +x1 = x2 = x3 = [3] # type: list[float] diff --git a/packages/pyright-internal/src/tests/samples/assignment12.py b/packages/pyright-internal/src/tests/samples/assignment12.py index 4b1557308..f823d4fa8 100644 --- a/packages/pyright-internal/src/tests/samples/assignment12.py +++ b/packages/pyright-internal/src/tests/samples/assignment12.py @@ -1,6 +1,7 @@ # This sample tests the case where a variable with a declared type # is assigned an unknown value or partially-unknown value. + def a_test(x: int): u = x.upper() # type: ignore reveal_type(u, expected_text="Unknown") diff --git a/packages/pyright-internal/src/tests/samples/assignment2.py b/packages/pyright-internal/src/tests/samples/assignment2.py index 144674b3a..4a79b7c20 100644 --- a/packages/pyright-internal/src/tests/samples/assignment2.py +++ b/packages/pyright-internal/src/tests/samples/assignment2.py @@ -1,25 +1,23 @@ # This sample tests assignments to indexed expressions # where the base is a specialized object. -from typing import List, Dict, Union - -v1: List[int] = [1, 2, 3, 4, 5] +v1: list[int] = [1, 2, 3, 4, 5] # This should generate an error because # the assigned type is wrong. v1[0] = "a" -v2: Dict[int, str] = {1: "str"} +v2: dict[int, str] = {1: "str"} # This should generate an error because # the assigned type is wrong. v2[1] = 123 -v3: List[Union[int, str]] = ["a"] +v3: list[int | str] = ["a"] v3[0] = 3 reveal_type(v3[0], expected_text="Literal[3]") -v4: Dict[str, Union[int, str]] = {} +v4: dict[str, int | str] = {} v4["aaa"] = 3 v4["bbb"] = "bbb" reveal_type(v4["aaa"], expected_text="Literal[3]") diff --git a/packages/pyright-internal/src/tests/samples/assignment3.py b/packages/pyright-internal/src/tests/samples/assignment3.py index 9558347eb..712c18757 100644 --- a/packages/pyright-internal/src/tests/samples/assignment3.py +++ b/packages/pyright-internal/src/tests/samples/assignment3.py @@ -2,7 +2,7 @@ # there is an expected type, so bidirectional type # inference is used. -from typing import Callable, Dict, Protocol, Tuple +from typing import Callable, Protocol f1: Callable[[int, int], int] = lambda a, b: a + b @@ -15,22 +15,22 @@ def must_be_int(val: int): return val -d1: Dict[str, Tuple[int, Callable[[int], int]]] = { +d1: dict[str, tuple[int, Callable[[int], int]]] = { "hello": (3, lambda x: must_be_int(x)) } -d2: Dict[str, Tuple[int, Callable[[int], int]]] = { +d2: dict[str, tuple[int, Callable[[int], int]]] = { # This should generate an error because the key is not a str. 3: (3, lambda x: must_be_int(x)) } -d3: Dict[str, Tuple[int, Callable[[int], int]]] = { +d3: dict[str, tuple[int, Callable[[int], int]]] = { # This should generate an error because the first element # of the tuple is not the correct type. "3": (3.0, lambda x: must_be_int(x)) } -d4: Dict[str, Tuple[int, Callable[[int], int]]] = { +d4: dict[str, tuple[int, Callable[[int], int]]] = { # This should generate an error because the lambda # type doesn't match. "3": (3, lambda _: 3.4) @@ -38,9 +38,9 @@ def must_be_int(val: int): class Adder(Protocol): - def __call__(self, x: int, y: Dict[str, int]) -> int: + def __call__(self, x: int, y: dict[str, int]) -> int: ... v1: Adder = lambda x, y: x + y["hi"] -reveal_type(v1, expected_text="(x: int, y: Dict[str, int]) -> int") +reveal_type(v1, expected_text="(x: int, y: dict[str, int]) -> int") diff --git a/packages/pyright-internal/src/tests/samples/assignment4.py b/packages/pyright-internal/src/tests/samples/assignment4.py index f0c503407..513ac9c9d 100644 --- a/packages/pyright-internal/src/tests/samples/assignment4.py +++ b/packages/pyright-internal/src/tests/samples/assignment4.py @@ -4,17 +4,17 @@ # pyright: strict -from typing import Dict, Callable, Sequence, Tuple +from typing import Callable, Sequence AAA = float BBB = int CCC = str DDD = str -AAATuple = Tuple[AAA, BBB, Callable[[Sequence[int], AAA], Sequence[float]]] +AAATuple = tuple[AAA, BBB, Callable[[Sequence[int], AAA], Sequence[float]]] def foo(): - var1: Dict[str, Tuple[AAA, BBB, CCC, DDD]] = {} - var2: Dict[str, AAATuple] = {} + var1: dict[str, tuple[AAA, BBB, CCC, DDD]] = {} + var2: dict[str, AAATuple] = {} for k, (var3, var4, _, _) in var1.items(): var2[k] = (var3, var4, lambda var5, var6: [v * var6 for v in var5]) diff --git a/packages/pyright-internal/src/tests/samples/assignment8.py b/packages/pyright-internal/src/tests/samples/assignment8.py index 4c16dc1da..ae1cd76b5 100644 --- a/packages/pyright-internal/src/tests/samples/assignment8.py +++ b/packages/pyright-internal/src/tests/samples/assignment8.py @@ -2,7 +2,7 @@ # assigned any other type. import os -from typing import Any, Optional, TypeVar, overload +from typing import Any, TypeVar, overload class Foo: @@ -14,7 +14,7 @@ def bar(self, obj: None) -> object: def bar(self, obj: object) -> Any: ... - def bar(self, obj: Optional[object]) -> Any: + def bar(self, obj: object | None) -> Any: pass @staticmethod diff --git a/packages/pyright-internal/src/tests/samples/assignment9.py b/packages/pyright-internal/src/tests/samples/assignment9.py index 4979e09e7..e017aa00b 100644 --- a/packages/pyright-internal/src/tests/samples/assignment9.py +++ b/packages/pyright-internal/src/tests/samples/assignment9.py @@ -1,25 +1,23 @@ # This sample tests assignment when the types are invariant and the -# source or destination are unions that contains subtypes which are +# source or destination are unions that contains subtypes which are # subclasses of each other. from datetime import datetime -from typing import List, Union class FloatSubclass(float): pass -float_list: List[float] = [1.0, 2.0] +float_list: list[float] = [1.0, 2.0] -v1: List[Union[float, FloatSubclass]] = float_list +v1: list[float | FloatSubclass] = float_list -v2: List[Union[int, float]] = float_list +v2: list[int | float] = float_list # This should generate an error. -v3: List[Union[int, float, datetime]] = float_list +v3: list[int | float | datetime] = float_list -v4: List[FloatSubclass | float] = [] -v5: List[float] = v4 - +v4: list[FloatSubclass | float] = [] +v5: list[float] = v4 diff --git a/packages/pyright-internal/src/tests/samples/assignmentExpr7.py b/packages/pyright-internal/src/tests/samples/assignmentExpr7.py index 7d62050b6..4f76ab2d0 100644 --- a/packages/pyright-internal/src/tests/samples/assignmentExpr7.py +++ b/packages/pyright-internal/src/tests/samples/assignmentExpr7.py @@ -1,13 +1,12 @@ -# This sample tests assignment expressions used within -# arguments +# This sample tests assignment expressions used within arguments import collections class NearestKeyDict(collections.UserDict): - def _keytransform(self, key): - a = len(candidate_keys := [k for k in sorted(self.data) if k >= key]) + def method1(self, key): + a = len(keys := [k for k in sorted(self.data) if k >= key]) # This should generate an error because walrus operators # are not allowed with named arguments. - b = list(iterable = candidate_keys := [k for k in sorted(self.data) if k >= key]) + b = list(iterable = keys := [k for k in sorted(self.data) if k >= key]) diff --git a/packages/pyright-internal/src/tests/samples/assignmentExpr9.py b/packages/pyright-internal/src/tests/samples/assignmentExpr9.py index eeccc317b..909d89074 100644 --- a/packages/pyright-internal/src/tests/samples/assignmentExpr9.py +++ b/packages/pyright-internal/src/tests/samples/assignmentExpr9.py @@ -1,7 +1,7 @@ # This sample tests the case where an assignment expression target # is found within a function decorator or a function default value expression. -from typing import Any, Callable, List, TypeVar +from typing import Any, Callable, TypeVar _T = TypeVar("_T") @@ -19,7 +19,7 @@ def decorator(*args: Any, **kwargs: Any) -> Callable[[_T], _T]: ], ) def decorated( - x: List[str] = [x for x in ["a", "b"] if x in (walrus_target_2 := ["a", "b"])] + x: list[str] = [x for x in ["a", "b"] if x in (walrus_target_2 := ["a", "b"])] ): pass diff --git a/packages/pyright-internal/src/tests/samples/augmentedAssignment2.py b/packages/pyright-internal/src/tests/samples/augmentedAssignment2.py index fa76133fc..3d170fa0c 100644 --- a/packages/pyright-internal/src/tests/samples/augmentedAssignment2.py +++ b/packages/pyright-internal/src/tests/samples/augmentedAssignment2.py @@ -1,12 +1,8 @@ # This sample tests expected diagnostics for augmented assignment # expressions. -from typing import List, Optional - -def add_values( - values1: List[float] = [], values2: Optional[List[float]] = None -) -> None: +def func1(values1: list[float] = [], values2: list[float] | None = None) -> None: values3 = None # This should generate an error @@ -20,4 +16,3 @@ def add_values( # This should generate an error values1 += values3 - diff --git a/packages/pyright-internal/src/tests/samples/augmentedAssignment3.py b/packages/pyright-internal/src/tests/samples/augmentedAssignment3.py index c4ac8f1f1..d731d0276 100644 --- a/packages/pyright-internal/src/tests/samples/augmentedAssignment3.py +++ b/packages/pyright-internal/src/tests/samples/augmentedAssignment3.py @@ -3,6 +3,6 @@ class ClassA: - def a(self): + def method1(self): # This should generate an error. self.val1 += 3 diff --git a/packages/pyright-internal/src/tests/samples/builtins2.py b/packages/pyright-internal/src/tests/samples/builtins2.py index 692620317..b1d5d71dc 100644 --- a/packages/pyright-internal/src/tests/samples/builtins2.py +++ b/packages/pyright-internal/src/tests/samples/builtins2.py @@ -4,5 +4,4 @@ if input(): print = lambda *x: None -print('') - +print("") diff --git a/packages/pyright-internal/src/tests/samples/call2.py b/packages/pyright-internal/src/tests/samples/call2.py index ce18c3b92..137a5df21 100644 --- a/packages/pyright-internal/src/tests/samples/call2.py +++ b/packages/pyright-internal/src/tests/samples/call2.py @@ -1,7 +1,7 @@ # This sample tests function parameter matching logic. -from typing import Any, Dict, List +from typing import Any def func1(a: int, *b: int): @@ -87,7 +87,7 @@ def func8( ... -kwargs1: Dict[str, int] = {} +kwargs1: dict[str, int] = {} # This should generate an error because int is not compatible with str. func8(z=False, **kwargs1) @@ -96,7 +96,7 @@ class MyStr(str): ... -kwargs2: Dict[MyStr, MyStr] = {} +kwargs2: dict[MyStr, MyStr] = {} func8(z=False, **kwargs2) @@ -111,10 +111,10 @@ def func9( ... -kwargs3: Dict[str, str] = {} +kwargs3: dict[str, str] = {} func9(0, "", **kwargs3) -args4: List[str] = ["hi"] +args4: list[str] = ["hi"] func9(0, *args4, **kwargs3) # This should generate an error. diff --git a/packages/pyright-internal/src/tests/samples/call4.py b/packages/pyright-internal/src/tests/samples/call4.py index b99760450..2b81adcb2 100644 --- a/packages/pyright-internal/src/tests/samples/call4.py +++ b/packages/pyright-internal/src/tests/samples/call4.py @@ -1,13 +1,11 @@ # This sample tests that the TypeVar matching logic for # functions is working correctly. -from typing import List - -a: List[str] = ["a", "bc"] +a: list[str] = ["a", "bc"] # This should work because the "sorted" is defined # with the first parameter of Iterable[_T] and the # 'key' parameter Callable[[_T], Any]. Since "len" # is a function that takes a "Sized" and "str" is # a "Sized", the result of this should be List[str]. -b: List[str] = sorted(a, key=len) +b: list[str] = sorted(a, key=len) diff --git a/packages/pyright-internal/src/tests/samples/callSite1.py b/packages/pyright-internal/src/tests/samples/callSite1.py index 48934bc4f..663366f2a 100644 --- a/packages/pyright-internal/src/tests/samples/callSite1.py +++ b/packages/pyright-internal/src/tests/samples/callSite1.py @@ -1,6 +1,7 @@ # This sample tests pyright's ability to perform return type # analysis of functions based on call-site arguments. + # This function has no type annotations def add(a, b): return a + b diff --git a/packages/pyright-internal/src/tests/samples/callable1.py b/packages/pyright-internal/src/tests/samples/callable1.py index 3c4022d03..7689e9069 100644 --- a/packages/pyright-internal/src/tests/samples/callable1.py +++ b/packages/pyright-internal/src/tests/samples/callable1.py @@ -3,7 +3,6 @@ from typing import Callable -# Test forward declaration Callable1 = Callable[["A"], None] @@ -22,7 +21,6 @@ def func2(a: Callable2): a(A()) -# Test Callable with ... Callable3 = Callable[..., int] @@ -30,10 +28,10 @@ def func3(a: Callable3) -> int: return a(1, 2, 3) + a() + a("hello") + a([]) -# This should generate an error (... not allowed in param list) +# This should generate an error (... not allowed in param list). Callable4 = Callable[[...], int] -# This should generate an error (too many arguments) +# This should generate an error (too many arguments). Callable5 = Callable[..., int, int] @@ -43,7 +41,7 @@ def func3(a: Callable3) -> int: def func6(a: Callable6): a() - # This should generate an error + # This should generate an error. a(1) diff --git a/packages/pyright-internal/src/tests/samples/callable2.py b/packages/pyright-internal/src/tests/samples/callable2.py index 525c76870..05cc1b815 100644 --- a/packages/pyright-internal/src/tests/samples/callable2.py +++ b/packages/pyright-internal/src/tests/samples/callable2.py @@ -9,50 +9,50 @@ _T1 = TypeVar("_T1") -def my_min(__iterable: Iterable[_T1]) -> _T1: +def func1(__iterable: Iterable[_T1]) -> _T1: ... -a: Callable[[Sequence[float]], float] = my_min -b: Callable[[Sequence[Any]], Any] = my_min +a: Callable[[Sequence[float]], float] = func1 +b: Callable[[Sequence[Any]], Any] = func1 -def my_min2(__iterable: Sequence[_T1]) -> _T1: +def func2(__iterable: Sequence[_T1]) -> _T1: ... # This should generate an error because an Iterable parameter # is not assignable to a Sequence parameter. -c: Callable[[Iterable[float]], float] = my_min2 +c: Callable[[Iterable[float]], float] = func2 _T2 = TypeVar("_T2", bound=float) -def my_max(__iterable: Iterable[_T2]) -> _T2: +def func3(__iterable: Iterable[_T2]) -> _T2: ... -d: Callable[[Sequence[int]], int] = my_max +d: Callable[[Sequence[int]], int] = func3 # This should generate an error because Sequence[str] # is not compatible with the bound TypeVar _T2. -e: Callable[[Sequence[str]], Any] = my_max +e: Callable[[Sequence[str]], Any] = func3 _T3 = TypeVar("_T3") -Continuation = Callable[[_T3], None] -Callback = Callable[[Continuation[_T3]], None] +TA1 = Callable[[_T3], None] +TA2 = Callable[[TA1[_T3]], None] -def from_continuation(callback: Callback[_T3]) -> Awaitable[_T3]: +def func4(cb: TA2[_T3]) -> Awaitable[_T3]: future: Future[_T3] = Future() return ensure_future(future) -def callback(done: Continuation[int]) -> None: +def func5(done: TA1[int]) -> None: pass -reveal_type(from_continuation(callback), expected_text="Awaitable[int]") +reveal_type(func4(func5), expected_text="Awaitable[int]") diff --git a/packages/pyright-internal/src/tests/samples/callable3.py b/packages/pyright-internal/src/tests/samples/callable3.py index 7d8679645..b27020741 100644 --- a/packages/pyright-internal/src/tests/samples/callable3.py +++ b/packages/pyright-internal/src/tests/samples/callable3.py @@ -2,27 +2,23 @@ # callable type as an input parameter, and the latter callable # contains generic types. -from typing import Callable, Generic, Optional, Tuple, TypeVar +from typing import Callable, Generic, TypeVar -Msg = TypeVar("Msg") -Reply = TypeVar("Reply") +T = TypeVar("T") +R = TypeVar("R") -class AsyncReplyChannel(Generic[Reply]): +class ClassA(Generic[R]): ... -class MailboxProcessor(Generic[Msg]): - def post_and_async_reply( - self, build_message: Callable[[AsyncReplyChannel[Reply]], Msg] - ) -> Optional[Reply]: +class ClassB(Generic[T]): + def method1(self, val: Callable[[ClassA[R]], T]) -> R | None: return None -agent: MailboxProcessor[Tuple[int, AsyncReplyChannel[str]]] = MailboxProcessor() -build_message: Callable[ - [AsyncReplyChannel[str]], Tuple[int, AsyncReplyChannel[str]] -] = lambda r: (42, r) -ret = agent.post_and_async_reply(build_message) +b1: ClassB[tuple[int, ClassA[str]]] = ClassB() +v1: Callable[[ClassA[str]], tuple[int, ClassA[str]]] = lambda r: (42, r) +ret = b1.method1(v1) reveal_type(ret, expected_text="str | None") diff --git a/packages/pyright-internal/src/tests/samples/callable4.py b/packages/pyright-internal/src/tests/samples/callable4.py index c622d52dc..56851cb8a 100644 --- a/packages/pyright-internal/src/tests/samples/callable4.py +++ b/packages/pyright-internal/src/tests/samples/callable4.py @@ -1,7 +1,7 @@ # This sample tests the case where a callable type within a function # signature contains a generic return type within a union. -from typing import Optional, TypeVar +from typing import TypeVar from collections.abc import Callable @@ -9,19 +9,19 @@ U = TypeVar("U") -def g(f: Callable[[T], Optional[U]], x: T) -> U: +def func1(f: Callable[[T], U | None], x: T) -> U: y = f(x) - reveal_type(y, expected_text="U@g | None") + reveal_type(y, expected_text="U@func1 | None") if y is not None: - reveal_type(y, expected_text="U@g") + reveal_type(y, expected_text="U@func1") return y raise ValueError() -def h(x: T, f: Callable[[T], Optional[U]]) -> U: +def func2(x: T, f: Callable[[T], U | None]) -> U: def g() -> U: y = f(x) if y is not None: diff --git a/packages/pyright-internal/src/tests/samples/callable5.py b/packages/pyright-internal/src/tests/samples/callable5.py index 87a4a0012..ef92dd9c2 100644 --- a/packages/pyright-internal/src/tests/samples/callable5.py +++ b/packages/pyright-internal/src/tests/samples/callable5.py @@ -2,35 +2,35 @@ # as a parameter along with another parameter that uses the same type variable # and a caller provides an overloaded function as an argument. -from typing import Any, Callable, TypeVar, Union, overload +from typing import Any, Callable, TypeVar, overload T = TypeVar("T") @overload -def ff1(real: float): +def func1(real: float): ... @overload -def ff1(real: str): +def func1(real: str): ... -def ff1(real: Union[float, str]) -> None: +def func1(real: float | str) -> None: ... -def fun(f: Callable[[T], Any], p: T): +def func2(f: Callable[[T], Any], p: T): return f(p) -fun(ff1, 4) -fun(ff1, "4") +func2(func1, 4) +func2(func1, "4") # This should generate an error because a "bytes" argument # doesn't match any of the overloads. -fun(ff1, b"") +func2(func1, b"") map(complex, ["3j", "4"]) diff --git a/packages/pyright-internal/src/tests/samples/callable6.py b/packages/pyright-internal/src/tests/samples/callable6.py index 3850418c0..85964bde1 100644 --- a/packages/pyright-internal/src/tests/samples/callable6.py +++ b/packages/pyright-internal/src/tests/samples/callable6.py @@ -1,19 +1,20 @@ # This sample tests the use of unpacked tuples in a Callable, as described # in PEP 646. -from typing import Callable, Tuple, TypeVar, Union +from typing import Callable, TypeVar, Union from typing_extensions import TypeVarTuple, Unpack _T = TypeVar("_T", bound=int) -TA1 = Callable[[_T, Unpack[Tuple[int, ...]], Tuple[int, int, str], str], _T] +TA1 = Callable[[_T, Unpack[tuple[int, ...]], tuple[int, int, str], str], _T] # This should generate an error -TA2 = Callable[[int, Unpack[Tuple[int, ...]], Unpack[Tuple[int, int, str]], str], int] +TA2 = Callable[[int, Unpack[tuple[int, ...]], Unpack[tuple[int, int, str]], str], int] -TA3 = Callable[[int, Unpack[Tuple[int, int]], str], int] +TA3 = Callable[[int, Unpack[tuple[int, int]], str], int] + +TA4 = Callable[[Unpack[tuple[int, ...]]], _T] -TA4 = Callable[[Unpack[Tuple[int, ...]]], _T] def func1(x: TA1[int]): r1 = x(3, 4, 5, (1, 2, "hi"), "hi") @@ -46,8 +47,8 @@ def func6(x: TA4): def func3( - path: str, *args: Unpack[Tuple[Unpack[Ts], str]] -) -> Union[Unpack[Tuple[Unpack[Ts], int]]]: + path: str, *args: Unpack[tuple[Unpack[Ts], str]] +) -> Union[Unpack[tuple[Unpack[Ts], int]]]: ... @@ -67,16 +68,16 @@ def func3( def func4( - path: str, *args: Unpack[Tuple[Unpack[Ts], str]] -) -> Tuple[Unpack[Ts], complex]: + path: str, *args: Unpack[tuple[Unpack[Ts], str]] +) -> tuple[Unpack[Ts], complex]: ... v4 = func4("", 1, "2", 3.3, None, "") -reveal_type(v4, expected_text="Tuple[int, str, float, None, complex]") +reveal_type(v4, expected_text="tuple[int, str, float, None, complex]") -def func5(path: str, *args: Unpack[Tuple[str, ...]]) -> None: +def func5(path: str, *args: Unpack[tuple[str, ...]]) -> None: ... diff --git a/packages/pyright-internal/src/tests/samples/callbackProtocol1.py b/packages/pyright-internal/src/tests/samples/callbackProtocol1.py index fc63cee85..fd6b61567 100644 --- a/packages/pyright-internal/src/tests/samples/callbackProtocol1.py +++ b/packages/pyright-internal/src/tests/samples/callbackProtocol1.py @@ -1,28 +1,26 @@ # This sample tests support for callback protocols (defined in PEP 544). -from typing import Optional, List, Protocol +from typing import Protocol class TestClass1(Protocol): - def __call__(self, *vals: bytes, maxlen: Optional[int] = None) -> List[bytes]: + def __call__(self, *vals: bytes, maxlen: int | None = None) -> list[bytes]: return [] -def good_cb(*vals: bytes, maxlen: Optional[int] = None) -> List[bytes]: +def good_cb(*vals: bytes, maxlen: int | None = None) -> list[bytes]: return [] -def bad_cb1( - *vals: bytes, maxlen: Optional[int], maxitems: Optional[int] -) -> List[bytes]: +def bad_cb1(*vals: bytes, maxlen: int | None, maxitems: int | None) -> list[bytes]: return [] -def bad_cb2(*vals: bytes) -> List[bytes]: +def bad_cb2(*vals: bytes) -> list[bytes]: return [] -def bad_cb3(*vals: bytes, maxlen: Optional[str]) -> List[bytes]: +def bad_cb3(*vals: bytes, maxlen: str | None) -> list[bytes]: return [] @@ -119,7 +117,7 @@ def func7(a: int, b: str) -> int: class TestClass6: - def __call__(self, *vals: bytes, maxlen: Optional[int] = None) -> List[bytes]: + def __call__(self, *vals: bytes, maxlen: int | None = None) -> list[bytes]: return [] diff --git a/packages/pyright-internal/src/tests/samples/callbackProtocol5.py b/packages/pyright-internal/src/tests/samples/callbackProtocol5.py index f3eb475ee..d1908bcfe 100644 --- a/packages/pyright-internal/src/tests/samples/callbackProtocol5.py +++ b/packages/pyright-internal/src/tests/samples/callbackProtocol5.py @@ -9,7 +9,7 @@ R = TypeVar("R", covariant=True) -class SomeFunc1(Protocol[P, R]): +class CallbackProto1(Protocol[P, R]): __name__: str other_attribute: int @@ -18,8 +18,8 @@ def __call__(self, *args: P.args, **kwargs: P.kwargs) -> R: ... -def other_func1(f: Callable[P, R]) -> SomeFunc1[P, R]: - converted = cast(SomeFunc1, f) +def decorator1(f: Callable[P, R]) -> CallbackProto1[P, R]: + converted = cast(CallbackProto1, f) print(converted.__name__) @@ -34,22 +34,22 @@ def other_func1(f: Callable[P, R]) -> SomeFunc1[P, R]: return converted -@other_func1 -def some_func1(x: int) -> str: +@decorator1 +def func1(x: int) -> str: ... -reveal_type(some_func1, expected_text="SomeFunc1[(x: int), str]") +reveal_type(func1, expected_text="CallbackProto1[(x: int), str]") -some_func1.other_attribute +func1.other_attribute # This should generate an error -some_func1.other_attribute2 +func1.other_attribute2 -some_func1(x=3) +func1(x=3) -class SomeFunc2(Protocol): +class CallbackProto2(Protocol): __name__: str __module__: str __qualname__: str @@ -59,8 +59,8 @@ def __call__(self) -> None: ... -def some_func2() -> None: +def func2() -> None: ... -v: SomeFunc2 = some_func2 +v: CallbackProto2 = func2 diff --git a/packages/pyright-internal/src/tests/samples/callbackProtocol6.py b/packages/pyright-internal/src/tests/samples/callbackProtocol6.py index 81cb9842f..17811a2a1 100644 --- a/packages/pyright-internal/src/tests/samples/callbackProtocol6.py +++ b/packages/pyright-internal/src/tests/samples/callbackProtocol6.py @@ -1,7 +1,8 @@ # This sample tests the case where a callback protocol uses a default argument # but the corresponding callable does not or vice versa. -from typing import Protocol, Any +from typing import Protocol + # Callback with positional parameter with default arg value. class Callback1(Protocol): diff --git a/packages/pyright-internal/src/tests/samples/callbackProtocol9.py b/packages/pyright-internal/src/tests/samples/callbackProtocol9.py index 133785f49..d0dab9df0 100644 --- a/packages/pyright-internal/src/tests/samples/callbackProtocol9.py +++ b/packages/pyright-internal/src/tests/samples/callbackProtocol9.py @@ -1,6 +1,7 @@ # This sample tests that a call through a __call__ handles the case # where the __call__ is a callable object itself. + class A: def __call__(self, v: int): print("Received", v) diff --git a/packages/pyright-internal/src/tests/samples/circularBaseClass.py b/packages/pyright-internal/src/tests/samples/circularBaseClass.py index 6524b43a7..562b76b05 100644 --- a/packages/pyright-internal/src/tests/samples/circularBaseClass.py +++ b/packages/pyright-internal/src/tests/samples/circularBaseClass.py @@ -1,14 +1,13 @@ # This test validates that a circular base class reference # will be reported and won't crash the analyzer. -# This should generate an error -# 'Bar' is not bound + +# This should generate an error because 'Bar' is not bound. class Bar(Bar): pass -# This should generate an error -# 'ClassB' is not bound +# This should generate an error because 'ClassB' is not bound. class ClassA(ClassB): pass diff --git a/packages/pyright-internal/src/tests/samples/classGetItem1.py b/packages/pyright-internal/src/tests/samples/classGetItem1.py index d40886c1a..194e16aff 100644 --- a/packages/pyright-internal/src/tests/samples/classGetItem1.py +++ b/packages/pyright-internal/src/tests/samples/classGetItem1.py @@ -5,7 +5,7 @@ from typing import Generic, TypeVar -class Foo: +class ClassA: # This should generate a warning because __class_getitem__ # is implicitly a classmethod and should use cls rather than # self. @@ -13,18 +13,18 @@ def __class_getitem__(self, args: tuple[int, ...]) -> None: ... -reveal_type(Foo[10, 63], expected_text="type[Foo]") +reveal_type(ClassA[10, 63], expected_text="type[ClassA]") _T = TypeVar("_T") _S = TypeVar("_S") -class Bar(Generic[_T, _S]): +class ClassB(Generic[_T, _S]): # Even though this class has a __class_getitem__ method, # it will be assumed to follow normal generic class semantics. def __class_getitem__(cls, args: tuple[int, ...]) -> None: ... -reveal_type(Bar[int, str], expected_text="type[Bar[int, str]]") +reveal_type(ClassB[int, str], expected_text="type[ClassB[int, str]]") diff --git a/packages/pyright-internal/src/tests/samples/classVar1.py b/packages/pyright-internal/src/tests/samples/classVar1.py index 7cf651120..a59a93c5a 100644 --- a/packages/pyright-internal/src/tests/samples/classVar1.py +++ b/packages/pyright-internal/src/tests/samples/classVar1.py @@ -1,7 +1,7 @@ # This sample tests the type checker's handling of ClassVar # as described in PEP 526. -from typing import Any, ClassVar, Dict, Optional +from typing import Any, ClassVar class MyDescriptor: @@ -15,10 +15,10 @@ def __set__(self, obj: Any, value: str): class Starship: captain: str = "Picard" damage: int - stats: "ClassVar[Dict[str, int]]" = {} + stats: "ClassVar[dict[str, int]]" = {} desc: ClassVar[MyDescriptor] = MyDescriptor() - def __init__(self, damage: int, captain: Optional[str] = None): + def __init__(self, damage: int, captain: str | None = None): self.damage = damage if captain: self.captain = captain # Else keep the default diff --git a/packages/pyright-internal/src/tests/samples/classVar3.py b/packages/pyright-internal/src/tests/samples/classVar3.py index e7e489568..6c347d752 100644 --- a/packages/pyright-internal/src/tests/samples/classVar3.py +++ b/packages/pyright-internal/src/tests/samples/classVar3.py @@ -1,7 +1,7 @@ # This sample tests the reporting of errors for ClassVar in contexts # where it is not allowed. -from typing import Annotated, Any, ClassVar, Final, Generic, List, TypeAlias, TypeVar +from typing import Annotated, Any, ClassVar, Final, Generic, TypeAlias, TypeVar from typing_extensions import Self # This should generate an error. @@ -12,6 +12,7 @@ # This should generate an error. TA1: TypeAlias = ClassVar[str] + class Foo(Generic[T]): x: ClassVar[int] = 3 @@ -19,19 +20,19 @@ class Foo(Generic[T]): y: Final[ClassVar[int]] = 3 # This should generate an error. - z: List[ClassVar[int]] = [] + z: list[ClassVar[int]] = [] # This should generate an error because TypeVars cannot # be used in a ClassVar. - illegal1: ClassVar[List[T]] + illegal1: ClassVar[list[T]] # This should generate an error because TypeVars cannot # be used in a ClassVar. illegal2: ClassVar[T] ok1: ClassVar[list] - ok2: ClassVar[List[Any]] - ok3: Annotated[ClassVar[List[Self]], ""] + ok2: ClassVar[list[Any]] + ok3: Annotated[ClassVar[list[Self]], ""] # This should generate an error. def func1(self, a: ClassVar[int]): diff --git a/packages/pyright-internal/src/tests/samples/classes1.py b/packages/pyright-internal/src/tests/samples/classes1.py index 602dcb25e..37242d4de 100644 --- a/packages/pyright-internal/src/tests/samples/classes1.py +++ b/packages/pyright-internal/src/tests/samples/classes1.py @@ -2,15 +2,12 @@ # handle various class definition cases. -from typing import Type - - class A: ... class B: - C: Type[A] + C: type[A] app = B() diff --git a/packages/pyright-internal/src/tests/samples/classes4.py b/packages/pyright-internal/src/tests/samples/classes4.py index 2b17c956c..d0bd1abf0 100644 --- a/packages/pyright-internal/src/tests/samples/classes4.py +++ b/packages/pyright-internal/src/tests/samples/classes4.py @@ -4,12 +4,12 @@ # variable statement. -class Foo: +class ClassA: bar: str = "hi" - def __init__(self, baz: str) -> None: - self.str = baz + def __init__(self, val: str) -> None: + self.str = val @classmethod - def from_baz(cls, baz: str) -> None: - cls.str = baz + def method1(cls, val: str) -> None: + cls.str = val diff --git a/packages/pyright-internal/src/tests/samples/classes5.py b/packages/pyright-internal/src/tests/samples/classes5.py index ff8262f21..5fbe3562f 100644 --- a/packages/pyright-internal/src/tests/samples/classes5.py +++ b/packages/pyright-internal/src/tests/samples/classes5.py @@ -1,7 +1,7 @@ # This sample tests the reportIncompatibleVariableOverride # configuration option. -from typing import Any, ClassVar, Final, List, Optional, Protocol, Type, Union +from typing import Any, ClassVar, Final, Protocol class ParentClass1: @@ -12,12 +12,12 @@ class ParentClass1: var1: int var2: str - var3: Union[int, str] + var3: int | str var4: int var5: int var6: int - var7: List[float] - var8: List[int] + var7: list[float] + var8: list[int] var9: int _var1: int @@ -127,11 +127,11 @@ class SubclassDeclared2(ParentClass2): # This should generate an error if reportIncompatibleVariableOverride # is enabled. - cv_decl_3: Optional[float] + cv_decl_3: float | None cv_infer_1: int cv_infer_2: str - cv_infer_3: Optional[float] + cv_infer_3: float | None def __init__(self): self.cv_decl_4: int @@ -142,11 +142,11 @@ def __init__(self): # This should generate an error if reportIncompatibleVariableOverride # is enabled. - self.cv_decl_6: Optional[float] + self.cv_decl_6: float | None self.cv_infer_4: int self.cv_infer_5: str - self.cv_infer_6: Optional[float] + self.cv_infer_6: float | None self.iv_decl_1: int @@ -156,11 +156,11 @@ def __init__(self): # This should generate an error if reportIncompatibleVariableOverride # is enabled. - self.iv_decl_3: Optional[float] + self.iv_decl_3: float | None self.iv_infer_1: int self.iv_infer_2: str - self.iv_infer_3: Optional[float] + self.iv_infer_3: float | None class SubclassInferred2(ParentClass2): @@ -216,8 +216,8 @@ class ConfigBase: class ParentClass3(Protocol): - Config1: ClassVar[Type[ConfigBase]] - Config2: ClassVar[Type[ConfigBase]] + Config1: ClassVar[type[ConfigBase]] + Config2: ClassVar[type[ConfigBase]] class ChildClass3(ParentClass3): @@ -276,4 +276,3 @@ class ChildClass4(ParentClass4): # This should generate 1 error if reportIncompatibleVariableOverride # is enabled because it is overriding a non-final with a final. y: Final = 0 - diff --git a/packages/pyright-internal/src/tests/samples/classes7.py b/packages/pyright-internal/src/tests/samples/classes7.py index 83c7df810..945b36e51 100644 --- a/packages/pyright-internal/src/tests/samples/classes7.py +++ b/packages/pyright-internal/src/tests/samples/classes7.py @@ -12,6 +12,7 @@ class BaseClass(Generic[T]): IntBaseClass = BaseClass[int] + # This should generate an error because the same # base class is used twice. class SubClass(BaseClass[float], IntBaseClass): diff --git a/packages/pyright-internal/src/tests/samples/classes8.py b/packages/pyright-internal/src/tests/samples/classes8.py index 2773d4a65..5db67309c 100644 --- a/packages/pyright-internal/src/tests/samples/classes8.py +++ b/packages/pyright-internal/src/tests/samples/classes8.py @@ -4,7 +4,7 @@ from os import DirEntry from types import TracebackType -from typing import AnyStr, ContextManager, Iterator, Type +from typing import AnyStr, ContextManager, Iterator from typing_extensions import Self @@ -25,7 +25,7 @@ def __enter__(self) -> Self: def __exit__( self, - __exc_type: Type[BaseException] | None, + __exc_type: type[BaseException] | None, __exc_value: BaseException | None, __traceback: TracebackType | None, ) -> bool | None: diff --git a/packages/pyright-internal/src/tests/samples/classes9.py b/packages/pyright-internal/src/tests/samples/classes9.py index 6574782f4..b92641d0d 100644 --- a/packages/pyright-internal/src/tests/samples/classes9.py +++ b/packages/pyright-internal/src/tests/samples/classes9.py @@ -5,28 +5,35 @@ # pyright: reportIncompatibleVariableOverride=true + class A: class M: pass + class B0(A): class M(A.M): pass + class B1(A): class M(A.M): pass + class C(B0, B1): class M(B0.M, B1.M): pass + class D0(B0): pass + class D1(B1): pass + class D(D0, D1, C): pass @@ -34,11 +41,12 @@ class D(D0, D1, C): class E0(B0): pass + class E1(B1): pass + # This should generate an error because B0.M is not # type compatible with B1.M. class E(E0, E1): pass - diff --git a/packages/pyright-internal/src/tests/samples/codeFlow3.py b/packages/pyright-internal/src/tests/samples/codeFlow3.py index 2c0113183..471ce1a2c 100644 --- a/packages/pyright-internal/src/tests/samples/codeFlow3.py +++ b/packages/pyright-internal/src/tests/samples/codeFlow3.py @@ -2,7 +2,7 @@ # where the first portion is statically determined to be false. -def foo(): - message = "" - if False and message: +def func1(): + val = "" + if False and val: pass diff --git a/packages/pyright-internal/src/tests/samples/codeFlow4.py b/packages/pyright-internal/src/tests/samples/codeFlow4.py index 1c8b7fff9..01afee85c 100644 --- a/packages/pyright-internal/src/tests/samples/codeFlow4.py +++ b/packages/pyright-internal/src/tests/samples/codeFlow4.py @@ -3,10 +3,10 @@ # final if/elif test expression evaluates to Never in the negative case. from enum import Enum -from typing import Literal, Union +from typing import Literal -def func1(x: Union[int, str]): +def func1(x: int | str): if isinstance(x, int): y = 0 elif isinstance(x, str): @@ -84,7 +84,7 @@ def func8(color: Color) -> bool: reveal_type(func8(Color.RED), expected_text="bool") -def func9(a: Union[str, int], b: Union[str, int]) -> bool: +def func9(a: str | int, b: str | int) -> bool: if isinstance(a, str): return True elif isinstance(a, int): diff --git a/packages/pyright-internal/src/tests/samples/codeFlow6.py b/packages/pyright-internal/src/tests/samples/codeFlow6.py index ce114250c..e8894d0ce 100644 --- a/packages/pyright-internal/src/tests/samples/codeFlow6.py +++ b/packages/pyright-internal/src/tests/samples/codeFlow6.py @@ -10,26 +10,26 @@ class C: @overload -def func(v: Callable[[], int]) -> int: +def func1(v: Callable[[], int]) -> int: ... @overload -def func(v: Callable[[], list[C]]) -> list[C]: +def func1(v: Callable[[], list[C]]) -> list[C]: ... -def func(v: Any) -> Any: +def func1(v: Any) -> Any: ... -def f(v: list[C]): +def func2(v: list[C]): ... -t = func(lambda: second_func()) +t = func1(lambda: func3()) t.append(C()) -def second_func() -> list[C]: +def func3() -> list[C]: ... diff --git a/packages/pyright-internal/src/tests/samples/codeFlow7.py b/packages/pyright-internal/src/tests/samples/codeFlow7.py index ce114250c..e8894d0ce 100644 --- a/packages/pyright-internal/src/tests/samples/codeFlow7.py +++ b/packages/pyright-internal/src/tests/samples/codeFlow7.py @@ -10,26 +10,26 @@ class C: @overload -def func(v: Callable[[], int]) -> int: +def func1(v: Callable[[], int]) -> int: ... @overload -def func(v: Callable[[], list[C]]) -> list[C]: +def func1(v: Callable[[], list[C]]) -> list[C]: ... -def func(v: Any) -> Any: +def func1(v: Any) -> Any: ... -def f(v: list[C]): +def func2(v: list[C]): ... -t = func(lambda: second_func()) +t = func1(lambda: func3()) t.append(C()) -def second_func() -> list[C]: +def func3() -> list[C]: ... diff --git a/packages/pyright-internal/src/tests/samples/comparison1.py b/packages/pyright-internal/src/tests/samples/comparison1.py index 52123d5e8..4df859c0e 100644 --- a/packages/pyright-internal/src/tests/samples/comparison1.py +++ b/packages/pyright-internal/src/tests/samples/comparison1.py @@ -1,7 +1,7 @@ # This sample tests the check for non-overlapping types compared # with equals comparison. -from typing import Literal, Optional, TypeVar, Union +from typing import Literal, TypeVar OS = Literal["Linux", "Darwin", "Windows"] @@ -42,9 +42,7 @@ class ClassB: _T2 = TypeVar("_T2", bound=ClassB) -def func2( - a: ClassA, b: ClassB, c: _T1, d: _T2, e: Union[ClassA, ClassB] -) -> Union[None, _T1, _T2]: +def func2(a: ClassA, b: ClassB, c: _T1, d: _T2, e: ClassA | ClassB) -> None | _T1 | _T2: # This should generate an error because there is no overlap in types. if a == b: return @@ -74,7 +72,8 @@ def func3(base: type) -> None: if ClassA == base: ... -def func4(val: Optional[str]): + +def func4(val: str | None): # This should generate an error because there is no overlap in types. if val == 42: ... diff --git a/packages/pyright-internal/src/tests/samples/comparison2.py b/packages/pyright-internal/src/tests/samples/comparison2.py index 98a30bbfd..a070cf031 100644 --- a/packages/pyright-internal/src/tests/samples/comparison2.py +++ b/packages/pyright-internal/src/tests/samples/comparison2.py @@ -28,6 +28,7 @@ def cond() -> bool: elif cond: pass + # This should generate a diagnostic when reportUnnecessaryComparison is enabled. def func1(): while cond: diff --git a/packages/pyright-internal/src/tests/samples/constructor1.py b/packages/pyright-internal/src/tests/samples/constructor1.py index 7f8e383f0..332d833c0 100644 --- a/packages/pyright-internal/src/tests/samples/constructor1.py +++ b/packages/pyright-internal/src/tests/samples/constructor1.py @@ -3,7 +3,7 @@ # bidirectional type inference and the expected type is a # union of other types. -from typing import Generic, TypeVar, Union, Final, Optional +from typing import Generic, TypeVar, Final T = TypeVar("T") E = TypeVar("E") @@ -19,12 +19,12 @@ def __init__(self, value: E) -> None: self._value: Final = value -Result = Union[Ok[T], Err[E]] +Result = Ok[T] | Err[E] -def return_ok_none() -> Result[Optional[int], Exception]: +def return_ok_none() -> Result[int | None, Exception]: return Ok(None) -def return_ok_one() -> Result[Optional[int], Exception]: +def return_ok_one() -> Result[int | None, Exception]: return Ok(1) diff --git a/packages/pyright-internal/src/tests/samples/constructor12.py b/packages/pyright-internal/src/tests/samples/constructor12.py index d22591a95..cab755cc9 100644 --- a/packages/pyright-internal/src/tests/samples/constructor12.py +++ b/packages/pyright-internal/src/tests/samples/constructor12.py @@ -7,14 +7,14 @@ T = TypeVar("T") -class Foo(Generic[T]): - def return_from_variable(self) -> "Foo[T]": - value = Foo[T]() - reveal_type(value, expected_text="Foo[T@Foo]") +class ClassA(Generic[T]): + def return_from_variable(self) -> "ClassA[T]": + value = ClassA[T]() + reveal_type(value, expected_text="ClassA[T@ClassA]") return value -x = Foo[int]() -returned_from_variable = x.return_from_variable() +x = ClassA[int]() +v1 = x.return_from_variable() -reveal_type(returned_from_variable, expected_text="Foo[int]") +reveal_type(v1, expected_text="ClassA[int]") diff --git a/packages/pyright-internal/src/tests/samples/constructor13.py b/packages/pyright-internal/src/tests/samples/constructor13.py index cbcf8a92d..7e6d85d4d 100644 --- a/packages/pyright-internal/src/tests/samples/constructor13.py +++ b/packages/pyright-internal/src/tests/samples/constructor13.py @@ -8,8 +8,8 @@ class Foo(Generic[T]): def __init__(self) -> None: - message_t = self.message_type() - reveal_type(message_t(), expected_text="T@Foo") + val = self.method1() + reveal_type(val(), expected_text="T@Foo") - def message_type(self) -> type[T]: + def method1(self) -> type[T]: ... diff --git a/packages/pyright-internal/src/tests/samples/constructor2.py b/packages/pyright-internal/src/tests/samples/constructor2.py index 7bb4fe1f9..1f319fbfa 100644 --- a/packages/pyright-internal/src/tests/samples/constructor2.py +++ b/packages/pyright-internal/src/tests/samples/constructor2.py @@ -3,16 +3,12 @@ from typing import ( Any, - Dict, Generic, Iterable, - List, Literal, Mapping, - Optional, Protocol, TypeVar, - Union, ) @@ -27,7 +23,7 @@ class Animal(Generic[_T1, _T2]): class Bear(Animal[_T3, int]): - def __init__(self, p1: Optional[_T3] = None): + def __init__(self, p1: _T3 | None = None): pass @@ -76,11 +72,11 @@ def s5(): def s6(): - a: Union[Bat, Bear[str]] = Bear() + a: Bat | Bear[str] = Bear() reveal_type(a, expected_text="Bear[str]") -def s7(p: Union[Bat, Bear[int]]): +def s7(p: Bat | Bear[int]): a: Animal[int, int] = p reveal_type(a, expected_text="Bat | Bear[int]") @@ -90,14 +86,14 @@ def s8(): reveal_type(a, expected_text="Bear[int]") -def s9(p: Dict[str, str]): - a: Dict[str, Any] = p - reveal_type(a, expected_text="Dict[str, Any]") +def s9(p: dict[str, str]): + a: dict[str, Any] = p + reveal_type(a, expected_text="dict[str, Any]") -def s10(p: List[str]): +def s10(p: list[str]): a: Iterable[Any] = p - reveal_type(a, expected_text="List[Any]") + reveal_type(a, expected_text="list[Any]") b: Iterable[str] = [] reveal_type(b, expected_text="list[str]") c: Iterable[str] = list() @@ -131,7 +127,7 @@ def s15(): reveal_type(b, expected_text="Bear[int]") c = Bear[float](1) reveal_type(c, expected_text="Bear[float]") - d = Bear[Union[str, int]](1) + d = Bear[str | int](1) reveal_type(d, expected_text="Bear[str | int]") @@ -144,19 +140,19 @@ def s17(): a1: Iterable[object] = [2, 3, 4] reveal_type(a1, expected_text="list[int]") - a2: List[object] = [2, 3, 4] + a2: list[object] = [2, 3, 4] reveal_type(a2, expected_text="list[object]") b1: Iterable[float] = [2, 3, 4] reveal_type(b1, expected_text="list[int]") - b2: List[float] = [2, 3, 4] + b2: list[float] = [2, 3, 4] reveal_type(b2, expected_text="list[float]") c1: Iterable[Literal["A", "B", "C"]] = ["A", "B"] reveal_type(c1, expected_text="list[Literal['A', 'B']]") - c2: List[Literal["A", "B", "C"]] = ["A", "B"] + c2: list[Literal["A", "B", "C"]] = ["A", "B"] reveal_type(c2, expected_text="list[Literal['A', 'B', 'C']]") @@ -164,17 +160,17 @@ def s18(): a1: Mapping[object, object] = {"a": 3, "b": 5.6} reveal_type(a1, expected_text="dict[object, int | float]") - a2: Dict[object, object] = {"a": 3, "b": 5.6} + a2: dict[object, object] = {"a": 3, "b": 5.6} reveal_type(a2, expected_text="dict[object, object]") b1: Mapping[str, float] = {"a": 3, "b": 5} reveal_type(b1, expected_text="dict[str, int]") - b2: Dict[str, float] = {"a": 3, "b": 5} + b2: dict[str, float] = {"a": 3, "b": 5} reveal_type(b2, expected_text="dict[str, float]") c1: Mapping[Literal["A", "B"], Literal[3, 4]] = {"A": 3} reveal_type(c1, expected_text="dict[Literal['A', 'B'], Literal[3]]") - c2: Dict[Literal["A", "B"], Literal[3, 4]] = {"A": 3} + c2: dict[Literal["A", "B"], Literal[3, 4]] = {"A": 3} reveal_type(c2, expected_text="dict[Literal['A', 'B'], Literal[3, 4]]") diff --git a/packages/pyright-internal/src/tests/samples/constructor9.py b/packages/pyright-internal/src/tests/samples/constructor9.py index 3b8c3649f..b4501e96a 100644 --- a/packages/pyright-internal/src/tests/samples/constructor9.py +++ b/packages/pyright-internal/src/tests/samples/constructor9.py @@ -4,7 +4,7 @@ from abc import ABC, abstractmethod from typing import TypeVar -_ASub = TypeVar("_ASub", bound="A") +T_A = TypeVar("T_A", bound="A") class A(ABC): @@ -15,5 +15,5 @@ def some_method(self) -> str: def some_factory_method_1(self): return type(self)() - def some_factory_method_2(self: _ASub) -> _ASub: + def some_factory_method_2(self: T_A) -> T_A: return type(self)() diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 3cd4558cc..e5382547c 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -866,7 +866,7 @@ test('Annotations4', () => { test('Annotations5', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['annotations5.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); test('Annotations6', () => { From b7df20097aa3668e4b93ae96578a3c0876e545f6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 08:20:54 -0700 Subject: [PATCH 320/525] Fixed bug that resulted in a false positive error when defining a new type alias using the `TypeAliasType` constructor that defines no new type parameters but references an outer-scoped type parameter in the type alias definition. This addresses https://github.com/microsoft/pyright/issues/5341. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 2 +- .../pyright-internal/src/tests/samples/typeAliasType2.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 98740b159..1e5a72f65 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -12009,7 +12009,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions nameNode, valueExpr, /* typeParamNodes */ undefined, - () => typeParameters + () => typeParameters ?? [] ); } diff --git a/packages/pyright-internal/src/tests/samples/typeAliasType2.py b/packages/pyright-internal/src/tests/samples/typeAliasType2.py index afa08d620..01cf13a33 100644 --- a/packages/pyright-internal/src/tests/samples/typeAliasType2.py +++ b/packages/pyright-internal/src/tests/samples/typeAliasType2.py @@ -1,6 +1,6 @@ # This sample tests the TypeAliasType constructor. -from typing import Callable, ParamSpec, TypeVar, TypeVarTuple +from typing import Callable, Generic, ParamSpec, TypeVar, TypeVarTuple from typing_extensions import TypeAliasType T1 = TypeVar("T1") @@ -45,3 +45,7 @@ TA7 = TypeAliasType("TA7", TA6) JSONNode = TypeAliasType("JSONNode", list[JSONNode] | dict[str, JSONNode] | str | float) + + +class A(Generic[T]): + L = TypeAliasType("L", list[T]) From 96e03aaad19dd4ed3fa29386b328112af86f29d1 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 09:39:09 -0700 Subject: [PATCH 321/525] Did a cleanup pass for the dataclass test cases. Renamed and reordered test cases for maintainability. --- .../src/tests/samples/dataclass1.py | 87 +++++++----- .../src/tests/samples/dataclass10.py | 46 ++----- .../src/tests/samples/dataclass11.py | 65 +++------ .../src/tests/samples/dataclass12.py | 46 ++++--- .../src/tests/samples/dataclass13.py | 54 ++------ .../src/tests/samples/dataclass14.py | 38 ++--- .../src/tests/samples/dataclass15.py | 62 ++------- .../src/tests/samples/dataclass16.py | 24 ++-- .../src/tests/samples/dataclass21.py | 13 -- .../src/tests/samples/dataclass22.py | 14 -- .../src/tests/samples/dataclass23.py | 22 --- .../src/tests/samples/dataclass24.py | 20 --- .../src/tests/samples/dataclass3.py | 33 +++-- .../src/tests/samples/dataclass4.py | 130 +++++++++++------- .../src/tests/samples/dataclass5.py | 6 +- .../src/tests/samples/dataclass6.py | 50 ++++--- .../src/tests/samples/dataclass7.py | 121 +++++----------- .../src/tests/samples/dataclass8.py | 14 +- .../src/tests/samples/dataclass9.py | 6 +- ...{dataclass25.py => dataclassConverter1.py} | 12 +- ...ataclass19.py => dataclassDescriptors1.py} | 1 - ...ataclass20.py => dataclassDescriptors2.py} | 0 .../src/tests/samples/dataclassFrozen1.py | 49 +++++++ .../{dataclass18.py => dataclassHash1.py} | 0 .../src/tests/samples/dataclassKwOnly1.py | 58 ++++++++ .../src/tests/samples/dataclassNamedTuple1.py | 52 +++++++ .../src/tests/samples/dataclassNamedTuple2.py | 18 +++ .../{dataclass17.py => dataclassSlots1.py} | 0 .../src/tests/samples/dataclassTransform1.py | 3 + .../src/tests/samples/dataclassTransform2.py | 9 +- .../src/tests/samples/dataclassTransform3.py | 8 +- .../src/tests/samples/dataclassTransform4.py | 20 ++- .../src/tests/typeEvaluator4.test.ts | 94 ++++++------- 33 files changed, 594 insertions(+), 581 deletions(-) delete mode 100644 packages/pyright-internal/src/tests/samples/dataclass21.py delete mode 100644 packages/pyright-internal/src/tests/samples/dataclass22.py delete mode 100644 packages/pyright-internal/src/tests/samples/dataclass23.py delete mode 100644 packages/pyright-internal/src/tests/samples/dataclass24.py rename packages/pyright-internal/src/tests/samples/{dataclass25.py => dataclassConverter1.py} (98%) rename packages/pyright-internal/src/tests/samples/{dataclass19.py => dataclassDescriptors1.py} (99%) rename packages/pyright-internal/src/tests/samples/{dataclass20.py => dataclassDescriptors2.py} (100%) create mode 100644 packages/pyright-internal/src/tests/samples/dataclassFrozen1.py rename packages/pyright-internal/src/tests/samples/{dataclass18.py => dataclassHash1.py} (100%) create mode 100644 packages/pyright-internal/src/tests/samples/dataclassKwOnly1.py create mode 100644 packages/pyright-internal/src/tests/samples/dataclassNamedTuple1.py create mode 100644 packages/pyright-internal/src/tests/samples/dataclassNamedTuple2.py rename packages/pyright-internal/src/tests/samples/{dataclass17.py => dataclassSlots1.py} (100%) diff --git a/packages/pyright-internal/src/tests/samples/dataclass1.py b/packages/pyright-internal/src/tests/samples/dataclass1.py index b826fc665..960701213 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass1.py +++ b/packages/pyright-internal/src/tests/samples/dataclass1.py @@ -1,50 +1,71 @@ -# This sample validates the Python 3.7 data class feature. +# This sample tests the handling of the @dataclass decorator. -from typing import ClassVar, Final, Hashable, NamedTuple, Optional +from dataclasses import dataclass, InitVar -class Other: - pass +@dataclass +class Bar: + bbb: int + ccc: str + aaa: str = "string" -def standalone(obj: object) -> None: - print(obj) +bar1 = Bar(bbb=5, ccc="hello") +bar2 = Bar(5, "hello") +bar3 = Bar(5, "hello", "hello2") +print(bar3.bbb) +print(bar3.ccc) +print(bar3.aaa) -class DataTuple(NamedTuple): - def _m(self): - pass +# This should generate an error because ddd +# isn't a declared value. +bar = Bar(bbb=5, ddd=5, ccc="hello") + +# This should generate an error because the +# parameter types don't match. +bar = Bar("hello", "goodbye") - # ClassVar variables should not be included. - class_var: ClassVar[int] = 4 +# This should generate an error because a parameter +# is missing. +bar = [Bar(2)] - id: int - aid: Other - value: str = "" +# This should generate an error because there are +# too many parameters. +bar = Bar(2, "hello", "hello", 4) - # Unannotated variables should not be included. - not_annotated = 5 - name: Optional[str] = None +@dataclass +class Baz1: + bbb: int + aaa: str = "string" - name2: Final[Optional[str]] = None + # This should generate an error because variables + # with no default cannot come after those with + # defaults. + ccc: str + + def __init__(self) -> None: + pass - not_a_method = standalone -d1 = DataTuple(id=1, aid=Other(), name2="hi") -d1.not_a_method() +@dataclass +class Baz2: + aaa: str + ddd: InitVar[int] = 3 -d2 = DataTuple(id=1, aid=Other(), value="v") -d3 = DataTuple(id=1, aid=Other(), name="hello") -d4 = DataTuple(id=1, aid=Other(), name=None) -id = d1.id -h4: Hashable = d4 -v = d3 == d4 +@dataclass(init=False) +class Baz3: + bbb: int + aaa: str = "string" + # This should not generate an error because + # the ordering requirement is not enforced when + # init=False. + ccc: str -# This should generate an error because the name argument -# is the incorrect type. -d5 = DataTuple(id=1, aid=Other(), name=3) -# This should generate an error because aid is a required -# parameter and is missing an argument here. -d6 = DataTuple(id=1, name=None) +@dataclass +class Baz4: + # Private names are not allowed, so this should + # generate an error. + __private: int diff --git a/packages/pyright-internal/src/tests/samples/dataclass10.py b/packages/pyright-internal/src/tests/samples/dataclass10.py index cfe2208c1..5bce5a1ef 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass10.py +++ b/packages/pyright-internal/src/tests/samples/dataclass10.py @@ -1,45 +1,21 @@ -# This sample tests the case where a dataclass entry is -# initialized with a "field" that uses "init=False". This -# case needs to be handled specially because it means -# that the synthesized __init__ method shouldn't include -# this field in its parameter list. +# This sample verifies that a generic dataclass works. -from dataclasses import dataclass, field +from dataclasses import dataclass +from typing import Generic, TypeVar, Union - -@dataclass -class Parent: - prop_1: str = field(init=False) - prop_2: str = field(default="hello") - prop_3: str = field(default_factory=lambda: "hello") - - # This should generate an error because it appears after - # a property with a default value. - prop_4: str = field() - - def __post_init__(self): - self.prop_1 = "test" +T = TypeVar("T") @dataclass -class Child(Parent): - prop_2: str +class Foo(Generic[T]): + value: Union[str, T] -test = Child(prop_2="test", prop_4="hi") +reveal_type(Foo(""), expected_text="Foo[Unknown]") -assert test.prop_1 == "test" -assert test.prop_2 == "test" +class Bar(Foo[int]): + pass -@dataclass -class HandshakeMessage: - reset_reason_hex: str - reset_data_hex: str - device_id: str = field(default="") - reset_reason: str = field(init=False) - reset_data: str = field(init=False) - - def __post_init__(self): - reset_reason = "calculated value" - reset_data = "calculated value" + +reveal_type(Bar(123), expected_text="Bar") diff --git a/packages/pyright-internal/src/tests/samples/dataclass11.py b/packages/pyright-internal/src/tests/samples/dataclass11.py index e098ae5a0..2ef75ba26 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass11.py +++ b/packages/pyright-internal/src/tests/samples/dataclass11.py @@ -1,53 +1,32 @@ -# This sample tests the synthesized comparison operators for dataclasses. +# This sample tests the case where an inheritance chain of +# dataclasses use generic types. from dataclasses import dataclass +from typing import Generic, TypeVar +Key0 = TypeVar("Key0") +Key1 = TypeVar("Key1") +Key2 = TypeVar("Key2") +Value = TypeVar("Value") -@dataclass(order=True) -class DC1: - a: str - b: int +@dataclass +class MapTreeLeaf(Generic[Key0, Value]): + key: Key0 + value: Value -@dataclass(order=True) -class DC2: - a: str - b: int +@dataclass +class MapTreeNode(MapTreeLeaf[Key1, Value]): + pass -dc1_1 = DC1("hi", 2) -dc1_2 = DC1("hi", 2) -if dc1_1 < dc1_2: - print("") +class Foo(Generic[Key2, Value]): + def add(self, key: Key2, value: Value): + return MapTreeNode(key=key, value=value) -if dc1_1 <= dc1_2: - print("") - -if dc1_1 > dc1_2: - print("") - -if dc1_1 >= dc1_2: - print("") - -if dc1_1 == dc1_2: - print("") - -if dc1_1 != dc1_2: - print("") - -if dc1_1 == None: - print("") - -if dc1_1 != None: - print("") - -dc2_1 = DC2("hi", 2) - -# This should generate an error because the types are -# incompatible. -if dc1_1 < dc2_1: - print("") - -if dc1_1 != dc2_1: - print("") + def test1(self, a: Key2, b: Value): + v1 = self.add(a, b) + reveal_type(v1, expected_text="MapTreeNode[Key2@Foo, Value@Foo]") + reveal_type(v1.key, expected_text="Key2@Foo") + reveal_type(v1.value, expected_text="Value@Foo") diff --git a/packages/pyright-internal/src/tests/samples/dataclass12.py b/packages/pyright-internal/src/tests/samples/dataclass12.py index 2ef75ba26..82f88f6b8 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass12.py +++ b/packages/pyright-internal/src/tests/samples/dataclass12.py @@ -1,32 +1,38 @@ -# This sample tests the case where an inheritance chain of -# dataclasses use generic types. +# This sample tests the case where a dataclass declares an instance +# variable and a subclass redeclares it as a class variable. from dataclasses import dataclass -from typing import Generic, TypeVar +from typing import ClassVar -Key0 = TypeVar("Key0") -Key1 = TypeVar("Key1") -Key2 = TypeVar("Key2") -Value = TypeVar("Value") + +@dataclass +class Base: + x: int + y: int @dataclass -class MapTreeLeaf(Generic[Key0, Value]): - key: Key0 - value: Value +class Special(Base): + x: ClassVar[int] = 1 + z: int @dataclass -class MapTreeNode(MapTreeLeaf[Key1, Value]): - pass +class VerySpecial(Special): + y: ClassVar[int] = 2 + + +Base(x=1, y=2) +Special(y=2, z=3) +Special(2, 3) + +# This should generate an error +Special(x=1, y=2, z=3) +# This should generate an error +Special(1, 2, 3) -class Foo(Generic[Key2, Value]): - def add(self, key: Key2, value: Value): - return MapTreeNode(key=key, value=value) +VerySpecial(z=3) - def test1(self, a: Key2, b: Value): - v1 = self.add(a, b) - reveal_type(v1, expected_text="MapTreeNode[Key2@Foo, Value@Foo]") - reveal_type(v1.key, expected_text="Key2@Foo") - reveal_type(v1.value, expected_text="Value@Foo") +# This should generate an error +VerySpecial(x=1, z=3) diff --git a/packages/pyright-internal/src/tests/samples/dataclass13.py b/packages/pyright-internal/src/tests/samples/dataclass13.py index dde92e784..acf7ca4f0 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass13.py +++ b/packages/pyright-internal/src/tests/samples/dataclass13.py @@ -1,49 +1,13 @@ -# This sample tests the handling of frozen dataclass types. +# This sample tests that a dataclass member without a type annotation +# but with a field descriptor assignment results in an error. -from dataclasses import dataclass -from typing import ClassVar +from dataclasses import dataclass, field -@dataclass(frozen=False) -class DC1: - val1: int = 6 +@dataclass +class MyClass: + id: int + x: int = field() - -@dataclass(frozen=True) -class DC2: - val2: int = 4 - - -# This should generate an error because a frozen dataclass -# cannot inherit from a non-frozen dataclass. -@dataclass(frozen=True) -class DC3(DC1): - val3: int = 4 - - -@dataclass(frozen=True) -class DC4(DC2): - val4: int = 4 - - val5: ClassVar[int] - - -# This should generate an error because a non-frozen dataclass -# cannot inherit from a frozen dataclass. -@dataclass(frozen=False) -class DC5(DC2): - val4: int = 5 - - -a = DC1(val1=3) -a.val1 = 3 - -b = DC4(val2=3, val4=5) - -DC4.val5 = 3 - -# This should generate an error because the dataclass is frozen. -b.val2 = 3 - -# This should generate an error because the dataclass is frozen. -b.val4 = 3 + # This should generate an error because it will result in a runtime exception + y = field() diff --git a/packages/pyright-internal/src/tests/samples/dataclass14.py b/packages/pyright-internal/src/tests/samples/dataclass14.py index 82f88f6b8..8bc9661cd 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass14.py +++ b/packages/pyright-internal/src/tests/samples/dataclass14.py @@ -1,38 +1,16 @@ -# This sample tests the case where a dataclass declares an instance -# variable and a subclass redeclares it as a class variable. +# This sample tests the case where a dataclass field has a corresponding +# redundant declaration within a method. from dataclasses import dataclass -from typing import ClassVar @dataclass -class Base: - x: int - y: int +class ClassA: + a: int + b: str + def foo(self): + self.b: str = "" -@dataclass -class Special(Base): - x: ClassVar[int] = 1 - z: int - - -@dataclass -class VerySpecial(Special): - y: ClassVar[int] = 2 - - -Base(x=1, y=2) -Special(y=2, z=3) -Special(2, 3) - -# This should generate an error -Special(x=1, y=2, z=3) - -# This should generate an error -Special(1, 2, 3) - -VerySpecial(z=3) -# This should generate an error -VerySpecial(x=1, z=3) +ClassA(1, "hi") diff --git a/packages/pyright-internal/src/tests/samples/dataclass15.py b/packages/pyright-internal/src/tests/samples/dataclass15.py index faa03c9e5..64d053023 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass15.py +++ b/packages/pyright-internal/src/tests/samples/dataclass15.py @@ -1,58 +1,22 @@ -# This sample tests the Python 3.10 additions to dataclass. +# This sample tests the case where a dataclass type refers to +# type that circularly refers back to the dataclass itself +# through a type alias. -from dataclasses import dataclass, KW_ONLY, field +from dataclasses import dataclass +from typing import List -@dataclass -class DC1: - a: str - _: KW_ONLY - b: int = 0 - - -DC1("hi") -DC1(a="hi") -DC1(a="hi", b=1) -DC1("hi", b=1) - -# This should generate an error because "b" is keyword-only. -DC1("hi", 1) +class ClassA: + test: "C" @dataclass -class DC2: - b: int = field(kw_only=True, default=3) - a: str - - -DC2("hi") -DC2(a="hi") -DC2(a="hi", b=1) -DC2("hi", b=1) - -# This should generate an error because "b" is keyword-only. -DC2("hi", 1) +class ClassB: + children: "C" - -@dataclass(kw_only=True) -class DC3: - a: str = field(kw_only=False) - b: int = 0 - - -DC3("hi") -DC3(a="hi") -DC3(a="hi", b=1) -DC3("hi", b=1) - -# This should generate an error because "b" is keyword-only. -DC3("hi", 1) - - -@dataclass -class DC4(DC3): - c: float + def test(self): + for child in self.children: + reveal_type(child, expected_text="ClassB") -DC4("", 0.2, b=3) -DC4(a="", b=3, c=0.2) +C = List[ClassB] diff --git a/packages/pyright-internal/src/tests/samples/dataclass16.py b/packages/pyright-internal/src/tests/samples/dataclass16.py index 5bce5a1ef..805d6ac10 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass16.py +++ b/packages/pyright-internal/src/tests/samples/dataclass16.py @@ -1,21 +1,21 @@ -# This sample verifies that a generic dataclass works. +# This sample tests the generation of __init__ when some ancestor +# classes are unknown. from dataclasses import dataclass -from typing import Generic, TypeVar, Union +import abc +from random import random -T = TypeVar("T") +C = abc.ABC if random() else object -@dataclass -class Foo(Generic[T]): - value: Union[str, T] - +class B(C): + def __init__(self, x: int): + pass -reveal_type(Foo(""), expected_text="Foo[Unknown]") - -class Bar(Foo[int]): - pass +@dataclass +class A(B): + color: str -reveal_type(Bar(123), expected_text="Bar") +reveal_type(A.__init__, expected_text="(self: A, *args: Any, **kwargs: Any) -> None") diff --git a/packages/pyright-internal/src/tests/samples/dataclass21.py b/packages/pyright-internal/src/tests/samples/dataclass21.py deleted file mode 100644 index acf7ca4f0..000000000 --- a/packages/pyright-internal/src/tests/samples/dataclass21.py +++ /dev/null @@ -1,13 +0,0 @@ -# This sample tests that a dataclass member without a type annotation -# but with a field descriptor assignment results in an error. - -from dataclasses import dataclass, field - - -@dataclass -class MyClass: - id: int - x: int = field() - - # This should generate an error because it will result in a runtime exception - y = field() diff --git a/packages/pyright-internal/src/tests/samples/dataclass22.py b/packages/pyright-internal/src/tests/samples/dataclass22.py deleted file mode 100644 index 896e154c9..000000000 --- a/packages/pyright-internal/src/tests/samples/dataclass22.py +++ /dev/null @@ -1,14 +0,0 @@ -# This sample tests the case where a dataclass field has a corresponding -# redundant declaration within a method. - -from dataclasses import dataclass - -@dataclass -class ClassA: - a: int - b: str - - def foo(self): - self.b: str = "" - -ClassA(1, "hi") diff --git a/packages/pyright-internal/src/tests/samples/dataclass23.py b/packages/pyright-internal/src/tests/samples/dataclass23.py deleted file mode 100644 index 64d053023..000000000 --- a/packages/pyright-internal/src/tests/samples/dataclass23.py +++ /dev/null @@ -1,22 +0,0 @@ -# This sample tests the case where a dataclass type refers to -# type that circularly refers back to the dataclass itself -# through a type alias. - -from dataclasses import dataclass -from typing import List - - -class ClassA: - test: "C" - - -@dataclass -class ClassB: - children: "C" - - def test(self): - for child in self.children: - reveal_type(child, expected_text="ClassB") - - -C = List[ClassB] diff --git a/packages/pyright-internal/src/tests/samples/dataclass24.py b/packages/pyright-internal/src/tests/samples/dataclass24.py deleted file mode 100644 index 0d0a1ac57..000000000 --- a/packages/pyright-internal/src/tests/samples/dataclass24.py +++ /dev/null @@ -1,20 +0,0 @@ -# This sample tests the generation of __init__ when some ancestor -# classes are unknown. - -from dataclasses import dataclass -import abc -from random import random - -C = abc.ABC if random() else object - -class B(C): - def __init__(self, x: int): - pass - - -@dataclass -class A(B): - color: str - - -reveal_type(A.__init__, expected_text="(self: A, *args: Any, **kwargs: Any) -> None") diff --git a/packages/pyright-internal/src/tests/samples/dataclass3.py b/packages/pyright-internal/src/tests/samples/dataclass3.py index f88293803..59b469659 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass3.py +++ b/packages/pyright-internal/src/tests/samples/dataclass3.py @@ -1,18 +1,29 @@ -# This sample validates the Python 3.7 data class feature, ensuring that -# NamedTuple must be a direct base class. +# This sample tests the type checker's handling of +# synthesized __init__ and __new__ methods for +# dataclass classes and their subclasses. -from typing import NamedTuple +from dataclasses import dataclass -class Parent(NamedTuple): - pass +@dataclass +class A: + x: int -class DataTuple2(Parent): - id: int +@dataclass(init=False) +class B(A): + y: int + def __init__(self, a: A, y: int): + self.__dict__ = a.__dict__ -# This should generate an error because DataTuple2 isn't considered -# a data class and won't have the associated __new__ or __init__ -# method defined. -data = DataTuple2(id=1) + +a = A(3) +b = B(a, 5) + + +# This should generate an error because there is an extra parameter +a = A(3, 4) + +# This should generate an error because there is one too few parameters +b = B(a) diff --git a/packages/pyright-internal/src/tests/samples/dataclass4.py b/packages/pyright-internal/src/tests/samples/dataclass4.py index 960701213..fad11ea20 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass4.py +++ b/packages/pyright-internal/src/tests/samples/dataclass4.py @@ -1,71 +1,105 @@ -# This sample tests the handling of the @dataclass decorator. +# This sample tests the analyzer's ability to handle inherited +# data classes. -from dataclasses import dataclass, InitVar +from dataclasses import dataclass, field -@dataclass -class Bar: - bbb: int - ccc: str - aaa: str = "string" +class C1: + ... + +class C2: + ... -bar1 = Bar(bbb=5, ccc="hello") -bar2 = Bar(5, "hello") -bar3 = Bar(5, "hello", "hello2") -print(bar3.bbb) -print(bar3.ccc) -print(bar3.aaa) -# This should generate an error because ddd -# isn't a declared value. -bar = Bar(bbb=5, ddd=5, ccc="hello") +class C3: + ... -# This should generate an error because the -# parameter types don't match. -bar = Bar("hello", "goodbye") -# This should generate an error because a parameter -# is missing. -bar = [Bar(2)] +@dataclass +class DC1: + aa: C1 + bb: C2 + cc: C3 + -# This should generate an error because there are -# too many parameters. -bar = Bar(2, "hello", "hello", 4) +class NonDC2: + ff: int @dataclass -class Baz1: - bbb: int - aaa: str = "string" +class DC2(NonDC2, DC1): + ee: C2 + aa: C2 + dd: C2 + + +dc2_1 = DC2(C2(), C2(), C3(), C2(), C2()) + +# This should generate an error because the type +# of parameter aa has been replaced with type C1. +dc2_2 = DC2(C1(), C2(), C3(), C2(), C2()) - # This should generate an error because variables - # with no default cannot come after those with - # defaults. - ccc: str +dc2_3 = DC2(ee=C2(), dd=C2(), aa=C2(), bb=C2(), cc=C3()) - def __init__(self) -> None: - pass + +@dataclass +class DC3: + aa: C1 + bb: C2 = C2() + cc: C3 = C3() @dataclass -class Baz2: - aaa: str - ddd: InitVar[int] = 3 +class DC4(DC3): + # This should generate an error because + # previous parameters have default values. + dd: C1 -@dataclass(init=False) -class Baz3: - bbb: int - aaa: str = "string" +@dataclass +class DC5(DC3): # This should not generate an error because - # the ordering requirement is not enforced when - # init=False. - ccc: str + # aa replaces aa in DC3, and it's ordered + # before the params with default values. + aa: C2 + + +@dataclass +class DC6: + a: int = 0 + + +@dataclass +class DC7(DC6): + a: int + + # This should generate an error because the default + # value for "a" is inherited from the base class. + b: str + + +@dataclass +class DC8: + a: int = field(default=0) + + +@dataclass +class DC9(DC8): + a: int + + # This should generate an error because the default + # value for "a" is inherited from the base class. + b: str + + +@dataclass +class DC10: + a: str = field(init=False, default="s") + b: bool = field() @dataclass -class Baz4: - # Private names are not allowed, so this should - # generate an error. - __private: int +class DC11(DC10): + a: str = field() + b: bool = field() diff --git a/packages/pyright-internal/src/tests/samples/dataclass5.py b/packages/pyright-internal/src/tests/samples/dataclass5.py index 43842a480..e17e0b2fc 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass5.py +++ b/packages/pyright-internal/src/tests/samples/dataclass5.py @@ -11,7 +11,7 @@ class A: def __init__(self, x: int): self.x = x - self.x_squared = x ** 2 + self.x_squared = x**2 a = A(3) @@ -24,7 +24,7 @@ class B: def __init__(self, x: int): self.x = x - self.x_squared = x ** 2 + self.x_squared = x**2 b = B(3) @@ -37,7 +37,7 @@ class C: def __init__(self, x: int): self.x = x - self.x_squared = x ** 2 + self.x_squared = x**2 c = C(3) diff --git a/packages/pyright-internal/src/tests/samples/dataclass6.py b/packages/pyright-internal/src/tests/samples/dataclass6.py index 59b469659..157be6b6a 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass6.py +++ b/packages/pyright-internal/src/tests/samples/dataclass6.py @@ -1,29 +1,45 @@ -# This sample tests the type checker's handling of -# synthesized __init__ and __new__ methods for -# dataclass classes and their subclasses. +# This sample tests the case where a dataclass entry is +# initialized with a "field" that uses "init=False". This +# case needs to be handled specially because it means +# that the synthesized __init__ method shouldn't include +# this field in its parameter list. -from dataclasses import dataclass +from dataclasses import dataclass, field @dataclass -class A: - x: int +class ParentA: + prop_1: str = field(init=False) + prop_2: str = field(default="hello") + prop_3: str = field(default_factory=lambda: "hello") + # This should generate an error because it appears after + # a property with a default value. + prop_4: str = field() -@dataclass(init=False) -class B(A): - y: int + def __post_init__(self): + self.prop_1 = "test" - def __init__(self, a: A, y: int): - self.__dict__ = a.__dict__ + +@dataclass +class ChildA(ParentA): + prop_2: str -a = A(3) -b = B(a, 5) +test = ChildA(prop_2="test", prop_4="hi") +assert test.prop_1 == "test" +assert test.prop_2 == "test" -# This should generate an error because there is an extra parameter -a = A(3, 4) -# This should generate an error because there is one too few parameters -b = B(a) +@dataclass +class ClassB: + prop_1: str + prop_2: str + prop_3: str = field(default="") + prop_4: str = field(init=False) + prop_5: str = field(init=False) + + def __post_init__(self): + cprop_1 = "calculated value" + cprop_2 = "calculated value" diff --git a/packages/pyright-internal/src/tests/samples/dataclass7.py b/packages/pyright-internal/src/tests/samples/dataclass7.py index a76d8447f..e098ae5a0 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass7.py +++ b/packages/pyright-internal/src/tests/samples/dataclass7.py @@ -1,106 +1,53 @@ -# This sample tests the analyzer's ability to handle inherited -# data classes. +# This sample tests the synthesized comparison operators for dataclasses. -from dataclasses import dataclass, field +from dataclasses import dataclass -class C1: - ... - - -class C2: - ... - - -class C3: - ... - - -@dataclass +@dataclass(order=True) class DC1: - aa: C1 - bb: C2 - cc: C3 - - -class NonDC2: - ff: int - - -@dataclass -class DC2(NonDC2, DC1): - ee: C2 - aa: C2 - dd: C2 - - -dc2_1 = DC2(C2(), C2(), C3(), C2(), C2()) - -# This should generate an error because the type -# of parameter aa has been replaced with type C1. -dc2_2 = DC2(C1(), C2(), C3(), C2(), C2()) - -dc2_3 = DC2(ee=C2(), dd=C2(), aa=C2(), bb=C2(), cc=C3()) - - -@dataclass -class DC3: - aa: C1 - bb: C2 = C2() - cc: C3 = C3() - - -@dataclass -class DC4(DC3): - # This should generate an error because - # previous parameters have default values. - dd: C1 + a: str + b: int -@dataclass -class DC5(DC3): - # This should not generate an error because - # aa replaces aa in DC3, and it's ordered - # before the params with default values. - aa: C2 +@dataclass(order=True) +class DC2: + a: str + b: int -@dataclass -class DC6: - a: int = 0 +dc1_1 = DC1("hi", 2) +dc1_2 = DC1("hi", 2) +if dc1_1 < dc1_2: + print("") -@dataclass -class DC7(DC6): - a: int +if dc1_1 <= dc1_2: + print("") - # This should generate an error because the default - # value for "a" is inherited from the base class. - b: str +if dc1_1 > dc1_2: + print("") +if dc1_1 >= dc1_2: + print("") -@dataclass -class DC8: - a: int = field(default=0) +if dc1_1 == dc1_2: + print("") +if dc1_1 != dc1_2: + print("") -@dataclass -class DC9(DC8): - a: int +if dc1_1 == None: + print("") - # This should generate an error because the default - # value for "a" is inherited from the base class. - b: str +if dc1_1 != None: + print("") +dc2_1 = DC2("hi", 2) -@dataclass -class DC10: - a: str = field(init=False, default="s") - b: bool = field() - - -@dataclass -class DC11(DC10): - a: str = field() - b: bool = field() +# This should generate an error because the types are +# incompatible. +if dc1_1 < dc2_1: + print("") +if dc1_1 != dc2_1: + print("") diff --git a/packages/pyright-internal/src/tests/samples/dataclass8.py b/packages/pyright-internal/src/tests/samples/dataclass8.py index 0f9bc0c4d..b87b29506 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass8.py +++ b/packages/pyright-internal/src/tests/samples/dataclass8.py @@ -5,18 +5,18 @@ @dataclass -class BaseClass: - my_ref: "ReferredClass" +class ParentA: + b: "ClassB" @dataclass -class SubClass(BaseClass): +class ChildA(ParentA): pass @dataclass -class ReferredClass: - sub_class: SubClass +class ClassB: + sub_class: ChildA - def trigger_bug(self): - SubClass(my_ref=self) + def method1(self): + ChildA(b=self) diff --git a/packages/pyright-internal/src/tests/samples/dataclass9.py b/packages/pyright-internal/src/tests/samples/dataclass9.py index 741e15810..0d0ea02c3 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass9.py +++ b/packages/pyright-internal/src/tests/samples/dataclass9.py @@ -3,13 +3,13 @@ # synthesized data classes. from dataclasses import dataclass -from typing import Any, Dict, Protocol +from typing import Any, Protocol class IsDataclass(Protocol): - # checking for this attribute seems to currently be + # Checking for this attribute seems to currently be # the most reliable way to ascertain that something is a dataclass - __dataclass_fields__: Dict[str, Any] + __dataclass_fields__: dict[str, Any] def dataclass_only(x: IsDataclass): diff --git a/packages/pyright-internal/src/tests/samples/dataclass25.py b/packages/pyright-internal/src/tests/samples/dataclassConverter1.py similarity index 98% rename from packages/pyright-internal/src/tests/samples/dataclass25.py rename to packages/pyright-internal/src/tests/samples/dataclassConverter1.py index d0e78f4f7..8d178e046 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass25.py +++ b/packages/pyright-internal/src/tests/samples/dataclassConverter1.py @@ -1,4 +1,4 @@ -# This sample tests the use of field's coverter parameter +# This sample tests the use of field's converter parameter # described in PEP 712. from dataclasses import dataclass, field @@ -48,16 +48,22 @@ def __init__(self, val: str | bytes) -> None: class Foo: # This should generate an error because "converter" is not an official property yet. field0: int = field(converter=converter_simple) + # This should generate an error because "converter" is not an official property yet. field1: int = field(converter=converter_with_param_before_args) + # This should generate an error because "converter" is not an official property yet. field2: int = field(converter=converter_with_args) + # This should generate an error because "converter" is not an official property yet. field3: int = field(converter=converter_with_extra_defaulted_params) + # This should generate an error because "converter" is not an official property yet. field4: int = field(converter=converter_with_default_for_first_param) + # This should generate an error because "converter" is not an official property yet. field5: int | str = field(converter=converter_with_more_specialized_return_type) + # This should generate an error because "converter" is not an official property yet. field6: ConverterClass = field(converter=ConverterClass) @@ -127,8 +133,10 @@ def __call__(self, arg1: str | int | list[str]) -> int | str: class Callables: # This should generate an error because "converter" is not an official property yet. field0: int = field(converter=CallableObject()) + # This should generate an error because "converter" is not an official property yet. field1: int = field(converter=callable) + # This should generate an error because "converter" is not an official property yet. field2: int = field(converter=callable_union) @@ -166,9 +174,11 @@ class Errors: # This should generate an error because "converter" is not an official property yet # and a second error because the return type doesn't match the field type. field0: int = field(converter=wrong_return_type) + # This should generate an error because "converter" is not an official property yet # and a second error because the converter has the wrong number of parameters. field1: int = field(converter=wrong_number_of_params) + # This should generate an error because "converter" is not an official property yet # and a second error because none of the overloads match the field type. field2: int = field(converter=wrong_converter_overload) diff --git a/packages/pyright-internal/src/tests/samples/dataclass19.py b/packages/pyright-internal/src/tests/samples/dataclassDescriptors1.py similarity index 99% rename from packages/pyright-internal/src/tests/samples/dataclass19.py rename to packages/pyright-internal/src/tests/samples/dataclassDescriptors1.py index cb8e4d5ce..bd3bfe1c4 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass19.py +++ b/packages/pyright-internal/src/tests/samples/dataclassDescriptors1.py @@ -41,4 +41,3 @@ class Foo: f3 = Foo() reveal_type(f3.y, expected_text="int") - diff --git a/packages/pyright-internal/src/tests/samples/dataclass20.py b/packages/pyright-internal/src/tests/samples/dataclassDescriptors2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/dataclass20.py rename to packages/pyright-internal/src/tests/samples/dataclassDescriptors2.py diff --git a/packages/pyright-internal/src/tests/samples/dataclassFrozen1.py b/packages/pyright-internal/src/tests/samples/dataclassFrozen1.py new file mode 100644 index 000000000..dde92e784 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/dataclassFrozen1.py @@ -0,0 +1,49 @@ +# This sample tests the handling of frozen dataclass types. + +from dataclasses import dataclass +from typing import ClassVar + + +@dataclass(frozen=False) +class DC1: + val1: int = 6 + + +@dataclass(frozen=True) +class DC2: + val2: int = 4 + + +# This should generate an error because a frozen dataclass +# cannot inherit from a non-frozen dataclass. +@dataclass(frozen=True) +class DC3(DC1): + val3: int = 4 + + +@dataclass(frozen=True) +class DC4(DC2): + val4: int = 4 + + val5: ClassVar[int] + + +# This should generate an error because a non-frozen dataclass +# cannot inherit from a frozen dataclass. +@dataclass(frozen=False) +class DC5(DC2): + val4: int = 5 + + +a = DC1(val1=3) +a.val1 = 3 + +b = DC4(val2=3, val4=5) + +DC4.val5 = 3 + +# This should generate an error because the dataclass is frozen. +b.val2 = 3 + +# This should generate an error because the dataclass is frozen. +b.val4 = 3 diff --git a/packages/pyright-internal/src/tests/samples/dataclass18.py b/packages/pyright-internal/src/tests/samples/dataclassHash1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/dataclass18.py rename to packages/pyright-internal/src/tests/samples/dataclassHash1.py diff --git a/packages/pyright-internal/src/tests/samples/dataclassKwOnly1.py b/packages/pyright-internal/src/tests/samples/dataclassKwOnly1.py new file mode 100644 index 000000000..faa03c9e5 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/dataclassKwOnly1.py @@ -0,0 +1,58 @@ +# This sample tests the Python 3.10 additions to dataclass. + +from dataclasses import dataclass, KW_ONLY, field + + +@dataclass +class DC1: + a: str + _: KW_ONLY + b: int = 0 + + +DC1("hi") +DC1(a="hi") +DC1(a="hi", b=1) +DC1("hi", b=1) + +# This should generate an error because "b" is keyword-only. +DC1("hi", 1) + + +@dataclass +class DC2: + b: int = field(kw_only=True, default=3) + a: str + + +DC2("hi") +DC2(a="hi") +DC2(a="hi", b=1) +DC2("hi", b=1) + +# This should generate an error because "b" is keyword-only. +DC2("hi", 1) + + +@dataclass(kw_only=True) +class DC3: + a: str = field(kw_only=False) + b: int = 0 + + +DC3("hi") +DC3(a="hi") +DC3(a="hi", b=1) +DC3("hi", b=1) + +# This should generate an error because "b" is keyword-only. +DC3("hi", 1) + + +@dataclass +class DC4(DC3): + c: float + + +DC4("", 0.2, b=3) +DC4(a="", b=3, c=0.2) diff --git a/packages/pyright-internal/src/tests/samples/dataclassNamedTuple1.py b/packages/pyright-internal/src/tests/samples/dataclassNamedTuple1.py new file mode 100644 index 000000000..0806b5a05 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/dataclassNamedTuple1.py @@ -0,0 +1,52 @@ +# This sample validates the Python 3.7 data class feature. + +from typing import ClassVar, Final, Hashable, NamedTuple + + +class Other: + pass + + +def standalone(obj: object) -> None: + print(obj) + + +class DataTuple(NamedTuple): + def _m(self): + pass + + # ClassVar variables should not be included. + class_var: ClassVar[int] = 4 + + id: int + aid: Other + value: str = "" + + # Unannotated variables should not be included. + not_annotated = 5 + + name: str | None = None + + name2: Final[str | None] = None + + not_a_method = standalone + + +d1 = DataTuple(id=1, aid=Other(), name2="hi") +d1.not_a_method() + +d2 = DataTuple(id=1, aid=Other(), value="v") +d3 = DataTuple(id=1, aid=Other(), name="hello") +d4 = DataTuple(id=1, aid=Other(), name=None) +id = d1.id + +h4: Hashable = d4 +v = d3 == d4 + +# This should generate an error because the name argument +# is the incorrect type. +d5 = DataTuple(id=1, aid=Other(), name=3) + +# This should generate an error because aid is a required +# parameter and is missing an argument here. +d6 = DataTuple(id=1, name=None) diff --git a/packages/pyright-internal/src/tests/samples/dataclassNamedTuple2.py b/packages/pyright-internal/src/tests/samples/dataclassNamedTuple2.py new file mode 100644 index 000000000..f88293803 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/dataclassNamedTuple2.py @@ -0,0 +1,18 @@ +# This sample validates the Python 3.7 data class feature, ensuring that +# NamedTuple must be a direct base class. + +from typing import NamedTuple + + +class Parent(NamedTuple): + pass + + +class DataTuple2(Parent): + id: int + + +# This should generate an error because DataTuple2 isn't considered +# a data class and won't have the associated __new__ or __init__ +# method defined. +data = DataTuple2(id=1) diff --git a/packages/pyright-internal/src/tests/samples/dataclass17.py b/packages/pyright-internal/src/tests/samples/dataclassSlots1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/dataclass17.py rename to packages/pyright-internal/src/tests/samples/dataclassSlots1.py diff --git a/packages/pyright-internal/src/tests/samples/dataclassTransform1.py b/packages/pyright-internal/src/tests/samples/dataclassTransform1.py index 867ca056d..d8c56084a 100644 --- a/packages/pyright-internal/src/tests/samples/dataclassTransform1.py +++ b/packages/pyright-internal/src/tests/samples/dataclassTransform1.py @@ -75,17 +75,20 @@ class Customer2Subclass(Customer2, frozen=True): def create_model_frozen(cls: _T) -> _T: ... + @create_model_frozen class Customer3: id: int name: str + # This should generate an error because a non-frozen class # cannot inherit from a frozen class. @create_model class Customer3Subclass(Customer3): age: int + c3_1 = Customer3(id=2, name="hi") # This should generate an error because Customer3 is frozen. diff --git a/packages/pyright-internal/src/tests/samples/dataclassTransform2.py b/packages/pyright-internal/src/tests/samples/dataclassTransform2.py index 0c5cf9c17..c1df2f99a 100644 --- a/packages/pyright-internal/src/tests/samples/dataclassTransform2.py +++ b/packages/pyright-internal/src/tests/samples/dataclassTransform2.py @@ -1,19 +1,19 @@ # This sample tests the handling of the dataclass_transform mechanism # when applied to a metaclass. -from typing import Any, Optional, TypeVar +from typing import Any, TypeVar from typing_extensions import dataclass_transform _T = TypeVar("_T") class ModelField: - def __init__(self, *, init: bool = True, default: Optional[Any] = None) -> None: + def __init__(self, *, init: bool = True, default: Any | None = None) -> None: ... def model_field( - *, init: bool = True, default: Optional[Any] = None, alias: Optional[str] = None + *, init: bool = True, default: Any | None = None, alias: str | None = None ) -> Any: ... @@ -82,14 +82,15 @@ class Customer2(ModelBase, order=True): c2_3 = Customer2(0, "John") - @dataclass_transform(frozen_default=True) class ModelMetaFrozen(type): pass + class ModelBaseFrozen(metaclass=ModelMetaFrozen): ... + class Customer3(ModelBaseFrozen): id: int name: str diff --git a/packages/pyright-internal/src/tests/samples/dataclassTransform3.py b/packages/pyright-internal/src/tests/samples/dataclassTransform3.py index c2fbe26af..4f2a5edbf 100644 --- a/packages/pyright-internal/src/tests/samples/dataclassTransform3.py +++ b/packages/pyright-internal/src/tests/samples/dataclassTransform3.py @@ -1,7 +1,7 @@ # This sample tests the handling of the dataclass_transform mechanism # when applied to a class. -from typing import Any, Callable, Generic, Optional, Tuple, TypeVar, Union +from typing import Any, Callable, Generic, TypeVar _T = TypeVar("_T") @@ -12,18 +12,18 @@ def __dataclass_transform__( order_default: bool = False, kw_only_default: bool = False, frozen_default: bool = False, - field_specifiers: Tuple[Union[type, Callable[..., Any]], ...] = (()), + field_specifiers: tuple[type | Callable[..., Any], ...] = (()), ) -> Callable[[_T], _T]: return lambda a: a class ModelField: - def __init__(self, *, init: bool = True, default: Optional[Any] = None) -> None: + def __init__(self, *, init: bool = True, default: Any | None = None) -> None: ... def model_field( - *, init: bool = True, default: Optional[Any] = None, alias: Optional[str] = None + *, init: bool = True, default: Any | None = None, alias: str | None = None ) -> Any: ... diff --git a/packages/pyright-internal/src/tests/samples/dataclassTransform4.py b/packages/pyright-internal/src/tests/samples/dataclassTransform4.py index 5c7873b27..afaa06ea3 100644 --- a/packages/pyright-internal/src/tests/samples/dataclassTransform4.py +++ b/packages/pyright-internal/src/tests/samples/dataclassTransform4.py @@ -5,11 +5,7 @@ Any, Callable, Literal, - Optional, - Tuple, - Type, TypeVar, - Union, overload, ) @@ -20,8 +16,8 @@ class ModelField: def __init__( self, *, - default: Optional[Any] = ..., - init: Optional[bool] = True, + default: Any | None = ..., + init: bool | None = True, **kwargs: Any, ) -> None: ... @@ -30,7 +26,7 @@ def __init__( @overload def field( *, - default: Optional[str] = None, + default: str | None = None, resolver: Callable[[], Any], init: Literal[False] = False, ) -> Any: @@ -40,7 +36,7 @@ def field( @overload def field( *, - default: Optional[str] = None, + default: str | None = None, resolver: None = None, init: Literal[True] = True, ) -> Any: @@ -49,8 +45,8 @@ def field( def field( *, - default: Optional[str] = None, - resolver: Optional[Callable[[], Any]] = None, + default: str | None = None, + resolver: Callable[[], Any] | None = None, init: bool = True, ) -> Any: ... @@ -61,7 +57,7 @@ def __dataclass_transform__( eq_default: bool = True, order_default: bool = False, kw_only_default: bool = False, - field_specifiers: Tuple[Union[type, Callable[..., Any]], ...] = (()), + field_specifiers: tuple[type | Callable[..., Any], ...] = (()), ) -> Callable[[T], T]: # If used within a stub file, the following implementation can be # replaced with "...". @@ -69,7 +65,7 @@ def __dataclass_transform__( @__dataclass_transform__(kw_only_default=True, field_specifiers=(field,)) -def create_model(*, init: bool = True) -> Callable[[Type[T]], Type[T]]: +def create_model(*, init: bool = True) -> Callable[[type[T]], type[T]]: ... diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index cb9fa90a0..1c583fc6d 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -525,10 +525,22 @@ test('MemberAccess21', () => { TestUtils.validateResults(analysisResults, 1); }); +test('DataClassNamedTuple1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassNamedTuple1.py']); + + TestUtils.validateResults(analysisResults, 2); +}); + +test('DataClassNamedTuple2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassNamedTuple2.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + test('DataClass1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass1.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 6); }); test('DataClass2', () => { @@ -540,13 +552,13 @@ test('DataClass2', () => { test('DataClass3', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass3.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 2); }); test('DataClass4', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass4.py']); - TestUtils.validateResults(analysisResults, 6); + TestUtils.validateResults(analysisResults, 4); }); test('DataClass5', () => { @@ -558,13 +570,13 @@ test('DataClass5', () => { test('DataClass6', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass6.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 1); }); test('DataClass7', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass7.py']); - TestUtils.validateResults(analysisResults, 4); + TestUtils.validateResults(analysisResults, 1); }); test('DataClass8', () => { @@ -582,99 +594,87 @@ test('DataClass9', () => { test('DataClass10', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass10.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); test('DataClass11', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass11.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); test('DataClass12', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass12.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 3); }); test('DataClass13', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass13.py']); - TestUtils.validateResults(analysisResults, 4); + TestUtils.validateResults(analysisResults, 1); }); test('DataClass14', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass14.py']); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 0); }); test('DataClass15', () => { - const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass15.py'], configOptions); + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass15.py']); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 0); }); test('DataClass16', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass16.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); -test('DataClass17', () => { - const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass17.py'], configOptions); +test('DataClassFrozen1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassFrozen1.py']); - TestUtils.validateResults(analysisResults, 5); + TestUtils.validateResults(analysisResults, 4); }); -test('DataClass18', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass18.py']); +test('DataClassKwOnly1', () => { + const configOptions = new ConfigOptions('.'); + configOptions.defaultPythonVersion = PythonVersion.V3_10; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassKwOnly1.py'], configOptions); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 3); }); -test('DataClass19', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass19.py']); +test('DataClassSlots1', () => { + const configOptions = new ConfigOptions('.'); + configOptions.defaultPythonVersion = PythonVersion.V3_10; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassSlots1.py'], configOptions); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 5); }); -test('DataClass20', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass20.py']); +test('DataClassHash1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassHash1.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 2); }); -test('DataClass21', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass21.py']); +test('DataClassDescriptors1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassDescriptors1.py']); TestUtils.validateResults(analysisResults, 1); }); -test('DataClass22', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass22.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - -test('DataClass23', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass23.py']); +test('DataClassDescriptors2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassDescriptors2.py']); TestUtils.validateResults(analysisResults, 0); }); -test('DataClass24', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass24.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - -test('DataClass25', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclass25.py']); +test('DataClassConverter1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassConverter1.py']); TestUtils.validateResults(analysisResults, 17); }); From 67394ad67c9c1261e208e706a7d0e2d00f898e0e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 10:21:36 -0700 Subject: [PATCH 322/525] Continued cleanup of test cases. --- .../src/tests/samples/call10.py | 82 +++++++++++++ .../src/tests/samples/decorator1.py | 5 +- .../src/tests/samples/decorator3.py | 6 +- .../src/tests/samples/decorator4.py | 12 +- .../src/tests/samples/decorator5.py | 18 +-- .../src/tests/samples/decorator6.py | 22 ++-- .../src/tests/samples/deprecated2.py | 1 - .../src/tests/samples/descriptor1.py | 18 +-- .../src/tests/samples/dictionary1.py | 12 +- .../src/tests/samples/dictionary2.py | 4 +- .../src/tests/samples/dictionary3.py | 8 +- .../src/tests/samples/ellipsis1.pyi | 16 ++- .../src/tests/samples/emptyContainers1.py | 4 +- .../src/tests/samples/{enums1.py => enum1.py} | 0 .../src/tests/samples/{enums3.py => enum2.py} | 0 .../src/tests/samples/enum3.py | 23 ++++ .../src/tests/samples/{enums5.py => enum4.py} | 0 .../src/tests/samples/{enums6.py => enum5.py} | 8 +- .../src/tests/samples/{enums7.py => enum6.py} | 0 .../src/tests/samples/{enums8.py => enum7.py} | 0 .../tests/samples/{enums10.py => enum8.py} | 0 .../tests/samples/{enums2.py => enumAuto1.py} | 0 .../{enums9.py => enumGenNextValue1.py} | 0 .../src/tests/samples/enums4.py | 23 ---- .../{expressions1.py => expression1.py} | 0 .../{expressions2.py => expression2.py} | 0 .../{expressions3.py => expression3.py} | 0 .../{expressions4.py => expression4.py} | 6 +- .../{expressions5.py => expression5.py} | 0 .../{expressions6.py => expression6.py} | 8 +- .../src/tests/samples/expression7.py | 40 +++++++ .../{expressions8.py => expression8.py} | 0 .../{expressions9.py => expression9.py} | 6 +- .../src/tests/samples/expressions7.py | 40 ------- .../src/tests/samples/final3.py | 4 +- .../src/tests/samples/final4.pyi | 2 +- .../src/tests/samples/final5.py | 4 +- .../src/tests/samples/forLoop1.py | 4 +- .../src/tests/samples/fstring4.py | 4 +- .../src/tests/samples/function1.py | 10 +- .../src/tests/samples/function10.py | 29 +++-- .../src/tests/samples/function11.py | 36 ------ .../src/tests/samples/function12.py | 26 ---- .../src/tests/samples/function2.py | 2 +- .../src/tests/samples/function3.py | 85 ++----------- .../src/tests/samples/function4.py | 27 +++-- .../src/tests/samples/function5.py | 13 ++ .../src/tests/samples/function6.py | 62 ++++++---- .../src/tests/samples/function7.py | 76 ++++++++++-- .../src/tests/samples/function8.py | 42 ++----- .../src/tests/samples/function9.py | 75 +++--------- .../src/tests/samples/functionAnnotation2.py | 1 + .../src/tests/samples/functionAnnotation4.py | 1 + .../src/tests/samples/futureImport2.py | 5 +- .../samples/{generators1.py => generator1.py} | 16 +-- .../{generators10.py => generator10.py} | 0 .../{generators11.py => generator11.py} | 0 .../{generators12.py => generator12.py} | 0 .../{generators13.py => generator13.py} | 6 +- .../{generators14.py => generator14.py} | 0 .../{generators15.py => generator15.py} | 0 .../{generators16.py => generator16.py} | 2 + .../samples/{generators2.py => generator2.py} | 0 .../samples/{generators3.py => generator3.py} | 4 +- .../samples/{generators4.py => generator4.py} | 0 .../samples/{generators5.py => generator5.py} | 0 .../samples/{generators6.py => generator6.py} | 0 .../samples/{generators7.py => generator7.py} | 4 +- .../samples/{generators8.py => generator8.py} | 0 .../samples/{generators9.py => generator9.py} | 0 .../src/tests/typeEvaluator1.test.ts | 68 +++++------ .../src/tests/typeEvaluator3.test.ts | 112 +++++++++--------- 72 files changed, 531 insertions(+), 551 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/call10.py rename packages/pyright-internal/src/tests/samples/{enums1.py => enum1.py} (100%) rename packages/pyright-internal/src/tests/samples/{enums3.py => enum2.py} (100%) create mode 100644 packages/pyright-internal/src/tests/samples/enum3.py rename packages/pyright-internal/src/tests/samples/{enums5.py => enum4.py} (100%) rename packages/pyright-internal/src/tests/samples/{enums6.py => enum5.py} (77%) rename packages/pyright-internal/src/tests/samples/{enums7.py => enum6.py} (100%) rename packages/pyright-internal/src/tests/samples/{enums8.py => enum7.py} (100%) rename packages/pyright-internal/src/tests/samples/{enums10.py => enum8.py} (100%) rename packages/pyright-internal/src/tests/samples/{enums2.py => enumAuto1.py} (100%) rename packages/pyright-internal/src/tests/samples/{enums9.py => enumGenNextValue1.py} (100%) delete mode 100644 packages/pyright-internal/src/tests/samples/enums4.py rename packages/pyright-internal/src/tests/samples/{expressions1.py => expression1.py} (100%) rename packages/pyright-internal/src/tests/samples/{expressions2.py => expression2.py} (100%) rename packages/pyright-internal/src/tests/samples/{expressions3.py => expression3.py} (100%) rename packages/pyright-internal/src/tests/samples/{expressions4.py => expression4.py} (77%) rename packages/pyright-internal/src/tests/samples/{expressions5.py => expression5.py} (100%) rename packages/pyright-internal/src/tests/samples/{expressions6.py => expression6.py} (52%) create mode 100644 packages/pyright-internal/src/tests/samples/expression7.py rename packages/pyright-internal/src/tests/samples/{expressions8.py => expression8.py} (100%) rename packages/pyright-internal/src/tests/samples/{expressions9.py => expression9.py} (58%) delete mode 100644 packages/pyright-internal/src/tests/samples/expressions7.py delete mode 100644 packages/pyright-internal/src/tests/samples/function11.py delete mode 100644 packages/pyright-internal/src/tests/samples/function12.py create mode 100644 packages/pyright-internal/src/tests/samples/function5.py rename packages/pyright-internal/src/tests/samples/{generators1.py => generator1.py} (92%) rename packages/pyright-internal/src/tests/samples/{generators10.py => generator10.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators11.py => generator11.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators12.py => generator12.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators13.py => generator13.py} (90%) rename packages/pyright-internal/src/tests/samples/{generators14.py => generator14.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators15.py => generator15.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators16.py => generator16.py} (78%) rename packages/pyright-internal/src/tests/samples/{generators2.py => generator2.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators3.py => generator3.py} (93%) rename packages/pyright-internal/src/tests/samples/{generators4.py => generator4.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators5.py => generator5.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators6.py => generator6.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators7.py => generator7.py} (82%) rename packages/pyright-internal/src/tests/samples/{generators8.py => generator8.py} (100%) rename packages/pyright-internal/src/tests/samples/{generators9.py => generator9.py} (100%) diff --git a/packages/pyright-internal/src/tests/samples/call10.py b/packages/pyright-internal/src/tests/samples/call10.py new file mode 100644 index 000000000..25178a102 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/call10.py @@ -0,0 +1,82 @@ +# This sample tests that the type checker properly handles +# types of args and kwargs correctly. + +from typing import Any, Hashable, Mapping, Protocol + + +def requires_hashable_tuple(p1: tuple[Hashable, ...]): + ... + + +def requires_hashable_dict(p1: dict[str, Hashable]): + ... + + +def test_args(*args: Hashable): + if args: + aaa = list(args) + bbb = tuple(aaa) + args = bbb + requires_hashable_tuple(args) + + +def test_kwargs(**kwargs: Hashable): + requires_hashable_dict(kwargs) + + +class StrSubclass(str): + ... + + +def test_kwargs2( + a: Mapping[str, Any], + b: Mapping[Any, Hashable], + c: dict[StrSubclass, Hashable], + d: int, + e: Mapping[int, Hashable], + f: tuple[str, ...], +): + test_kwargs(**a) + test_kwargs(**b) + test_kwargs(**c) + + # This should generate an error + test_kwargs(**d) + + # This should generate an error + test_kwargs(**e) + + # This should generate an error + test_kwargs(**f) + + +class Callback1(Protocol): + def __call__(self) -> None: + ... + + +def func1( + value: str = ..., + *args: object, +) -> None: + ... + + +def func2( + value: str = ..., + **kwargs: object, +) -> None: + ... + + +def func3( + value: str = ..., + *args: object, + **kwargs: object, +) -> None: + ... + + +v1: Callback1 = func1 +v2: Callback1 = func2 +v3: Callback1 = func3 diff --git a/packages/pyright-internal/src/tests/samples/decorator1.py b/packages/pyright-internal/src/tests/samples/decorator1.py index 957ec1048..0df7f8d35 100644 --- a/packages/pyright-internal/src/tests/samples/decorator1.py +++ b/packages/pyright-internal/src/tests/samples/decorator1.py @@ -1,6 +1,5 @@ -# This sample tests the a class-based decorator that uses -# a __get__ method as a way to provide access to a __call__ -# method. Very contorted, but it's legal Python. +# This sample tests the a class-based decorator that uses a +# __get__ method as a way to provide access to a __call__ method. class Wrapper: diff --git a/packages/pyright-internal/src/tests/samples/decorator3.py b/packages/pyright-internal/src/tests/samples/decorator3.py index b31bfc31f..4050d6b10 100644 --- a/packages/pyright-internal/src/tests/samples/decorator3.py +++ b/packages/pyright-internal/src/tests/samples/decorator3.py @@ -4,12 +4,13 @@ my_decorators = (staticmethod, classmethod, property) + class Foo: # This should generate an error if version < 3.9. @my_decorators[0] def my_static_method(): return 3 - + # This should generate an error if version < 3.9. @my_decorators[1] def my_class_method(cls): @@ -19,9 +20,8 @@ def my_class_method(cls): @my_decorators[2] def my_property(self): return 3 - + Foo.my_static_method() Foo.my_class_method() Foo().my_property - diff --git a/packages/pyright-internal/src/tests/samples/decorator4.py b/packages/pyright-internal/src/tests/samples/decorator4.py index 022cee5fd..1791c5f56 100644 --- a/packages/pyright-internal/src/tests/samples/decorator4.py +++ b/packages/pyright-internal/src/tests/samples/decorator4.py @@ -10,7 +10,7 @@ class Class2: pass -def my_decorator(fn): +def decorator1(fn): # This decorator returns a value that is # inferred to be a union containing an Unknown type. if fn: @@ -18,17 +18,17 @@ def my_decorator(fn): return Class2 -@my_decorator -class Class1: +@decorator1 +class ClassA: def __init__(self, a, b, c): pass -v1 = Class1(1, 2, 3) -reveal_type(v1, expected_text="Class1") +v1 = ClassA(1, 2, 3) +reveal_type(v1, expected_text="ClassA") -@my_decorator +@decorator1 def func1() -> int: return 3 diff --git a/packages/pyright-internal/src/tests/samples/decorator5.py b/packages/pyright-internal/src/tests/samples/decorator5.py index 760c4258b..3bf309cd2 100644 --- a/packages/pyright-internal/src/tests/samples/decorator5.py +++ b/packages/pyright-internal/src/tests/samples/decorator5.py @@ -3,7 +3,7 @@ # function type (and docstring) to pass through unmodified. -def simple_decorator(method): +def decorator1(method): def wrapper(*args, **kw): result = method(*args, **kw) return result @@ -11,19 +11,19 @@ def wrapper(*args, **kw): return wrapper -@simple_decorator -def function(var: str, kvar: str): +@decorator1 +def func1(var: str, kvar: str): return -reveal_type(function, expected_text="(var: str, kvar: str) -> None") +reveal_type(func1, expected_text="(var: str, kvar: str) -> None") -class Foo: - @simple_decorator - def method(self, var: str, kvar: str): +class ClassA: + @decorator1 + def method1(self, var: str, kvar: str): return -reveal_type(Foo().method, expected_text="(var: str, kvar: str) -> None") -reveal_type(Foo.method, expected_text="(self: Foo, var: str, kvar: str) -> None") +reveal_type(ClassA().method1, expected_text="(var: str, kvar: str) -> None") +reveal_type(ClassA.method1, expected_text="(self: ClassA, var: str, kvar: str) -> None") diff --git a/packages/pyright-internal/src/tests/samples/decorator6.py b/packages/pyright-internal/src/tests/samples/decorator6.py index 4e06939a8..a41d300d7 100644 --- a/packages/pyright-internal/src/tests/samples/decorator6.py +++ b/packages/pyright-internal/src/tests/samples/decorator6.py @@ -7,28 +7,28 @@ _T = TypeVar("_T") -def decorator(func: Callable[[_T, str], None]) -> Callable[[_T, str], None]: +def decorator1(func: Callable[[_T, str], None]) -> Callable[[_T, str], None]: @functools.wraps(func) - def func_wrapper(firstarg: _T, secondarg: str) -> None: - return func(firstarg, secondarg) + def func_wrapper(param1: _T, param2: str) -> None: + return func(param1, param2) return func_wrapper -class Test: +class ClassA: def __init__(self): self.test1(1, "a") self.test2("hi") @staticmethod - @decorator - def test1(firstarg: int, secondarg: str) -> None: - print(secondarg) + @decorator1 + def test1(param1: int, param2: str) -> None: + print(param2) @classmethod - @decorator - def test2(cls, secondarg: str) -> None: - print(secondarg) + @decorator1 + def test2(cls, param2: str) -> None: + print(param2) -Test() +ClassA() diff --git a/packages/pyright-internal/src/tests/samples/deprecated2.py b/packages/pyright-internal/src/tests/samples/deprecated2.py index ffd2c69a8..a5f2e324b 100644 --- a/packages/pyright-internal/src/tests/samples/deprecated2.py +++ b/packages/pyright-internal/src/tests/samples/deprecated2.py @@ -1,6 +1,5 @@ # This sample tests the @typing.deprecated decorator introduced in PEP 702. -from typing import Self from typing_extensions import deprecated, overload diff --git a/packages/pyright-internal/src/tests/samples/descriptor1.py b/packages/pyright-internal/src/tests/samples/descriptor1.py index d16faf5c9..b7f10f040 100644 --- a/packages/pyright-internal/src/tests/samples/descriptor1.py +++ b/packages/pyright-internal/src/tests/samples/descriptor1.py @@ -1,20 +1,20 @@ # This sample tests the detection and handling of asymmetric descriptors # and properties. Type narrowing should be disabled in these cases. -from typing import Any, Literal, Optional +from typing import Any, Literal class A: @property - def prop1(self) -> Optional[int]: + def prop1(self) -> int | None: ... @prop1.setter - def prop1(self, val: Optional[int]) -> None: + def prop1(self, val: int | None) -> None: ... @property - def prop2(self) -> Optional[int]: + def prop2(self) -> int | None: ... @prop2.setter @@ -30,7 +30,7 @@ def prop3(self) -> int: ... @prop3.setter - def prop3(self, val: Optional[int]) -> None: + def prop3(self, val: int | None) -> None: ... @prop3.deleter @@ -72,15 +72,15 @@ def func3(obj: A) -> Literal[3]: class Descriptor1: - def __get__(self, instance: Any, owner: Any) -> Optional[int]: + def __get__(self, instance: Any, owner: Any) -> int | None: ... - def __set__(self, owner: Any, value: Optional[int]) -> None: + def __set__(self, owner: Any, value: int | None) -> None: ... class Descriptor2: - def __get__(self, instance: Any, owner: Any) -> Optional[int]: + def __get__(self, instance: Any, owner: Any) -> int | None: ... def __set__(self, owner: Any, value: int) -> None: @@ -91,7 +91,7 @@ class Descriptor3: def __get__(self, instance: Any, owner: Any) -> int: ... - def __set__(self, owner: Any, value: Optional[int]) -> None: + def __set__(self, owner: Any, value: int | None) -> None: ... diff --git a/packages/pyright-internal/src/tests/samples/dictionary1.py b/packages/pyright-internal/src/tests/samples/dictionary1.py index 33d691d7b..76b783770 100644 --- a/packages/pyright-internal/src/tests/samples/dictionary1.py +++ b/packages/pyright-internal/src/tests/samples/dictionary1.py @@ -1,10 +1,10 @@ # This sample tests the type checker's type inference logic for # dictionaries. -from typing import Any, Callable, Dict, List, Literal, Sequence +from typing import Any, Callable, Literal, Sequence -def wantsIntDict(a: Dict[int, int]): +def wantsIntDict(a: dict[int, int]): pass @@ -31,11 +31,11 @@ def wantsIntDict(a: Dict[int, int]): LitChoices = Literal["ab", "bcd"] -keys: List[LitChoices] = ["ab", "bcd"] -d4: Dict[LitChoices, int] = {k: len(k) for k in keys} +keys: list[LitChoices] = ["ab", "bcd"] +d4: dict[LitChoices, int] = {k: len(k) for k in keys} -d5: Dict[str, Callable[[Sequence[Any]], float]] = { +d5: dict[str, Callable[[Sequence[Any]], float]] = { "min": min, "max": max, "sum": sum, @@ -46,4 +46,4 @@ def wantsIntDict(a: Dict[int, int]): d6: LiteralDict = {"ab": "x"} d7: LiteralDict = {"bcd": "y"} d6 = {**d6, **d7} -d6 = d6 | d7 \ No newline at end of file +d6 = d6 | d7 diff --git a/packages/pyright-internal/src/tests/samples/dictionary2.py b/packages/pyright-internal/src/tests/samples/dictionary2.py index 5e13a8918..166247077 100644 --- a/packages/pyright-internal/src/tests/samples/dictionary2.py +++ b/packages/pyright-internal/src/tests/samples/dictionary2.py @@ -1,9 +1,9 @@ # This sample tests dictionary inference logic. -from typing import Mapping, Union +from typing import Mapping -def f(mapping: Mapping[Union[str, bytes], int]): +def f(mapping: Mapping[str | bytes, int]): return mapping diff --git a/packages/pyright-internal/src/tests/samples/dictionary3.py b/packages/pyright-internal/src/tests/samples/dictionary3.py index 39611bdd4..fe1067de4 100644 --- a/packages/pyright-internal/src/tests/samples/dictionary3.py +++ b/packages/pyright-internal/src/tests/samples/dictionary3.py @@ -1,6 +1,6 @@ # This sample tests various dictionary diagnostics. -from typing import Generic, List, Mapping, TypeVar, Union +from typing import Generic, Mapping, TypeVar t1 = () @@ -12,19 +12,19 @@ _VT = TypeVar("_VT") -def func1(m: Union[Mapping[str, int], Mapping[str, str]]): +def func1(m: Mapping[str, int] | Mapping[str, str]): d1 = {**m} reveal_type(d1, expected_text="dict[str, int | str]") class MyMapping(Generic[_KT, _VT]): - def keys(self) -> List[_KT]: + def keys(self) -> list[_KT]: raise NotImplementedError def __getitem__(self, key: _KT) -> _VT: raise NotImplementedError -def func2(m: Union[MyMapping[str, int], MyMapping[str, str]]): +def func2(m: MyMapping[str, int] | MyMapping[str, str]): d1 = {**m} reveal_type(d1, expected_text="dict[str, int | str]") diff --git a/packages/pyright-internal/src/tests/samples/ellipsis1.pyi b/packages/pyright-internal/src/tests/samples/ellipsis1.pyi index 7dc909b88..e7ef65ca7 100644 --- a/packages/pyright-internal/src/tests/samples/ellipsis1.pyi +++ b/packages/pyright-internal/src/tests/samples/ellipsis1.pyi @@ -1,7 +1,7 @@ # This sample tests cases where the ellipsis operator can # and cannot be used. -from typing import Any, Callable, Dict, Generic, Optional, Tuple, TypeVar, Union +from typing import Any, Callable, Generic, Optional, TypeVar, Union _T1 = TypeVar("_T1") @@ -19,11 +19,11 @@ MyGenericClass1[int] # in a specialization list. MyGenericClass1[...] -a: Tuple[int, ...] +a: tuple[int, ...] # This should generate an error because ... cannot be used # in this context. -b: Tuple[..., int] +b: tuple[..., int] c: Callable[..., Any] @@ -37,12 +37,16 @@ e: Callable[[], ...] # This should generate two errors because ... cannot be used # in this context. -f: Dict[..., ...] +f: dict[..., ...] # This should generate an error because ... cannot be used # in this context. -g: Union[int, str, ...] +g: int | str | ... # This should generate an error because ... cannot be used # in this context. -h: Optional[...] +h: Union[int, str, ...] + +# This should generate an error because ... cannot be used +# in this context. +i: Optional[...] diff --git a/packages/pyright-internal/src/tests/samples/emptyContainers1.py b/packages/pyright-internal/src/tests/samples/emptyContainers1.py index e1cdfa64e..8591d0a64 100644 --- a/packages/pyright-internal/src/tests/samples/emptyContainers1.py +++ b/packages/pyright-internal/src/tests/samples/emptyContainers1.py @@ -2,8 +2,6 @@ # pyright: reportUnknownVariableType=true, reportUnknownArgumentType=true -from typing import List - def func1(a: bool): val1 = [] @@ -84,6 +82,6 @@ def method3(self): reveal_type(self.val2, expected_text="dict[str, int]") reveal_type(self.val3, expected_text="list[Unknown]") - def method4(self) -> List[int]: + def method4(self) -> list[int]: # This should generate an error because of a type mismatch. return self.val1 diff --git a/packages/pyright-internal/src/tests/samples/enums1.py b/packages/pyright-internal/src/tests/samples/enum1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/enums1.py rename to packages/pyright-internal/src/tests/samples/enum1.py diff --git a/packages/pyright-internal/src/tests/samples/enums3.py b/packages/pyright-internal/src/tests/samples/enum2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/enums3.py rename to packages/pyright-internal/src/tests/samples/enum2.py diff --git a/packages/pyright-internal/src/tests/samples/enum3.py b/packages/pyright-internal/src/tests/samples/enum3.py new file mode 100644 index 000000000..1660e0e99 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/enum3.py @@ -0,0 +1,23 @@ +# This sample tests that enum values are treated as constant even if +# they are not named as such. + +from enum import Enum + + +class EnumA(Enum): + bad = 0 + good = 1 + + +class EnumB: + def __init__(self): + self.status = EnumA.bad + self.foo = 1 + + +myobj = EnumB() + +reveal_type(myobj.status, expected_text="EnumA") + +myobj.status = EnumA.good +reveal_type(myobj.status, expected_text="Literal[EnumA.good]") diff --git a/packages/pyright-internal/src/tests/samples/enums5.py b/packages/pyright-internal/src/tests/samples/enum4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/enums5.py rename to packages/pyright-internal/src/tests/samples/enum4.py diff --git a/packages/pyright-internal/src/tests/samples/enums6.py b/packages/pyright-internal/src/tests/samples/enum5.py similarity index 77% rename from packages/pyright-internal/src/tests/samples/enums6.py rename to packages/pyright-internal/src/tests/samples/enum5.py index 1afd9ef7d..641ac2045 100644 --- a/packages/pyright-internal/src/tests/samples/enums6.py +++ b/packages/pyright-internal/src/tests/samples/enum5.py @@ -10,7 +10,7 @@ def __get__(self, instance, owner=None) -> complex: return 3j -class MyEnum(Enum): +class EnumA(Enum): ENTRY = (123, "abc") desc = Descriptor() @@ -25,9 +25,9 @@ def __init__(self, foo: int, bar: str) -> None: self.bar = bar -baz = 123 + MyEnum.ENTRY.foo +baz = 123 + EnumA.ENTRY.foo reveal_type(baz, expected_text="int") -reveal_type(MyEnum._exempt_, expected_text="int") +reveal_type(EnumA._exempt_, expected_text="int") -reveal_type(MyEnum.desc, expected_text="complex") +reveal_type(EnumA.desc, expected_text="complex") diff --git a/packages/pyright-internal/src/tests/samples/enums7.py b/packages/pyright-internal/src/tests/samples/enum6.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/enums7.py rename to packages/pyright-internal/src/tests/samples/enum6.py diff --git a/packages/pyright-internal/src/tests/samples/enums8.py b/packages/pyright-internal/src/tests/samples/enum7.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/enums8.py rename to packages/pyright-internal/src/tests/samples/enum7.py diff --git a/packages/pyright-internal/src/tests/samples/enums10.py b/packages/pyright-internal/src/tests/samples/enum8.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/enums10.py rename to packages/pyright-internal/src/tests/samples/enum8.py diff --git a/packages/pyright-internal/src/tests/samples/enums2.py b/packages/pyright-internal/src/tests/samples/enumAuto1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/enums2.py rename to packages/pyright-internal/src/tests/samples/enumAuto1.py diff --git a/packages/pyright-internal/src/tests/samples/enums9.py b/packages/pyright-internal/src/tests/samples/enumGenNextValue1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/enums9.py rename to packages/pyright-internal/src/tests/samples/enumGenNextValue1.py diff --git a/packages/pyright-internal/src/tests/samples/enums4.py b/packages/pyright-internal/src/tests/samples/enums4.py deleted file mode 100644 index 1cee93dd7..000000000 --- a/packages/pyright-internal/src/tests/samples/enums4.py +++ /dev/null @@ -1,23 +0,0 @@ -# This sample tests that enum values are treated as constant even if -# they are not named as such. - -from enum import Enum - - -class Status(Enum): - bad = 0 - good = 1 - - -class Myclass: - def __init__(self): - self.status = Status.bad - self.foo = 1 - - -myobj = Myclass() - -reveal_type(myobj.status, expected_text="Status") - -myobj.status = Status.good -reveal_type(myobj.status, expected_text="Literal[Status.good]") diff --git a/packages/pyright-internal/src/tests/samples/expressions1.py b/packages/pyright-internal/src/tests/samples/expression1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/expressions1.py rename to packages/pyright-internal/src/tests/samples/expression1.py diff --git a/packages/pyright-internal/src/tests/samples/expressions2.py b/packages/pyright-internal/src/tests/samples/expression2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/expressions2.py rename to packages/pyright-internal/src/tests/samples/expression2.py diff --git a/packages/pyright-internal/src/tests/samples/expressions3.py b/packages/pyright-internal/src/tests/samples/expression3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/expressions3.py rename to packages/pyright-internal/src/tests/samples/expression3.py diff --git a/packages/pyright-internal/src/tests/samples/expressions4.py b/packages/pyright-internal/src/tests/samples/expression4.py similarity index 77% rename from packages/pyright-internal/src/tests/samples/expressions4.py rename to packages/pyright-internal/src/tests/samples/expression4.py index 5db921ccc..9388caf4f 100644 --- a/packages/pyright-internal/src/tests/samples/expressions4.py +++ b/packages/pyright-internal/src/tests/samples/expression4.py @@ -1,9 +1,7 @@ # This sample tests the handling of "in" and "not in" operators. -from typing import List, Set, Union - -def func1(a: Union[int, str]): +def func1(a: int | str): # This should generate an error because a's type doesn't # support a __contains__ method. if 3 in a: @@ -15,7 +13,7 @@ def func1(a: Union[int, str]): pass -def func(a: Union[List[int], Set[float]]): +def func(a: list[int] | set[float]): if 3 in a: pass diff --git a/packages/pyright-internal/src/tests/samples/expressions5.py b/packages/pyright-internal/src/tests/samples/expression5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/expressions5.py rename to packages/pyright-internal/src/tests/samples/expression5.py diff --git a/packages/pyright-internal/src/tests/samples/expressions6.py b/packages/pyright-internal/src/tests/samples/expression6.py similarity index 52% rename from packages/pyright-internal/src/tests/samples/expressions6.py rename to packages/pyright-internal/src/tests/samples/expression6.py index b42b28a9b..90bfbb510 100644 --- a/packages/pyright-internal/src/tests/samples/expressions6.py +++ b/packages/pyright-internal/src/tests/samples/expression6.py @@ -1,14 +1,14 @@ # This sample tests that binary operations "or" and "and" # properly handle bidirectional type inference. -from typing import Any, Dict, Optional +from typing import Any -def func_or(a: Optional[Dict[str, Any]]): +def func_or(a: dict[str, Any] | None): a = a or dict() - reveal_type(a, expected_text="Dict[str, Any]") + reveal_type(a, expected_text="dict[str, Any]") def func_and(): - a: Optional[Dict[str, Any]] = True and dict() + a: dict[str, Any] | None = True and dict() reveal_type(a, expected_text="dict[str, Any]") diff --git a/packages/pyright-internal/src/tests/samples/expression7.py b/packages/pyright-internal/src/tests/samples/expression7.py new file mode 100644 index 000000000..267439cca --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/expression7.py @@ -0,0 +1,40 @@ +# This sample tests various conditions with AND and OR operators. + + +def func1() -> bool: + ... + + +def func2() -> int: + ... + + +def func3() -> str: + ... + + +reveal_type(func1() and func2(), expected_text="int | Literal[False]") +reveal_type(func1() and func3(), expected_text="str | Literal[False]") +reveal_type(func2() and func1(), expected_text="bool | Literal[0]") +reveal_type(func3() and func1(), expected_text="bool | Literal['']") + +reveal_type(func1() or func2(), expected_text="int | Literal[True]") +reveal_type(func1() or func3(), expected_text="str | Literal[True]") +reveal_type(func2() or func1(), expected_text="int | bool") +reveal_type(func3() or func1(), expected_text="str | bool") + + +class ClassA: + ... + + +class ClassB: + ... + + +def func4(a: ClassA and ClassB): + reveal_type(a, expected_text="ClassB") + + +def func5(a: ClassA or ClassB): + reveal_type(a, expected_text="ClassA") diff --git a/packages/pyright-internal/src/tests/samples/expressions8.py b/packages/pyright-internal/src/tests/samples/expression8.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/expressions8.py rename to packages/pyright-internal/src/tests/samples/expression8.py diff --git a/packages/pyright-internal/src/tests/samples/expressions9.py b/packages/pyright-internal/src/tests/samples/expression9.py similarity index 58% rename from packages/pyright-internal/src/tests/samples/expressions9.py rename to packages/pyright-internal/src/tests/samples/expression9.py index c7250d6c1..9633a9f44 100644 --- a/packages/pyright-internal/src/tests/samples/expressions9.py +++ b/packages/pyright-internal/src/tests/samples/expression9.py @@ -1,14 +1,12 @@ # This sample tests binary expressions that use list expressions as # a RHS operand. -from typing import List, Union - -def func1(a: List[Union[int, str]]): +def func1(a: list[int | str]): a += [5] return a + [5] -def func2(a: List[int], b: int): +def func2(a: list[int], b: int): return a + [b] diff --git a/packages/pyright-internal/src/tests/samples/expressions7.py b/packages/pyright-internal/src/tests/samples/expressions7.py deleted file mode 100644 index ab287951e..000000000 --- a/packages/pyright-internal/src/tests/samples/expressions7.py +++ /dev/null @@ -1,40 +0,0 @@ -# This sample tests various conditions with AND and OR operators. - - -def foo() -> bool: - ... - - -def bar() -> int: - ... - - -def baz() -> str: - ... - - -reveal_type(foo() and bar(), expected_text="int | Literal[False]") -reveal_type(foo() and baz(), expected_text="str | Literal[False]") -reveal_type(bar() and foo(), expected_text="bool | Literal[0]") -reveal_type(baz() and foo(), expected_text="bool | Literal['']") - -reveal_type(foo() or bar(), expected_text="int | Literal[True]") -reveal_type(foo() or baz(), expected_text="str | Literal[True]") -reveal_type(bar() or foo(), expected_text="int | bool") -reveal_type(baz() or foo(), expected_text="str | bool") - - -class Foo: - ... - - -class Bar: - ... - - -def func2(a: Foo and Bar): - reveal_type(a, expected_text="Bar") - - -def func3(a: Foo or Bar): - reveal_type(a, expected_text="Foo") diff --git a/packages/pyright-internal/src/tests/samples/final3.py b/packages/pyright-internal/src/tests/samples/final3.py index c0de86154..78def229c 100644 --- a/packages/pyright-internal/src/tests/samples/final3.py +++ b/packages/pyright-internal/src/tests/samples/final3.py @@ -2,7 +2,7 @@ # introduced in Python 3.8. import typing -from typing import Any, Final, List +from typing import Any, Final foo1: typing.Final = 3 @@ -108,7 +108,7 @@ def func1(a: Final[int]): # This should generate an error because Final must the outermost # type in assignments. -b: List[Final[int]] = [] +b: list[Final[int]] = [] class ClassA: diff --git a/packages/pyright-internal/src/tests/samples/final4.pyi b/packages/pyright-internal/src/tests/samples/final4.pyi index dffb9002d..fe0c06c1c 100644 --- a/packages/pyright-internal/src/tests/samples/final4.pyi +++ b/packages/pyright-internal/src/tests/samples/final4.pyi @@ -3,7 +3,7 @@ from typing import Final -class Foo: +class ClassA: foo1: Final[int] def __init__(self): self.foo2: Final[str] diff --git a/packages/pyright-internal/src/tests/samples/final5.py b/packages/pyright-internal/src/tests/samples/final5.py index 91497428b..17ce2f052 100644 --- a/packages/pyright-internal/src/tests/samples/final5.py +++ b/packages/pyright-internal/src/tests/samples/final5.py @@ -6,7 +6,7 @@ from typing import Final -class Foo1: +class ClassA: x: Final[int] def __init__(self, x: int) -> None: @@ -14,5 +14,5 @@ def __init__(self, x: int) -> None: @dataclass -class Foo2: +class ClassB: x: Final[int] diff --git a/packages/pyright-internal/src/tests/samples/forLoop1.py b/packages/pyright-internal/src/tests/samples/forLoop1.py index 17ea66eaa..7539d36cd 100644 --- a/packages/pyright-internal/src/tests/samples/forLoop1.py +++ b/packages/pyright-internal/src/tests/samples/forLoop1.py @@ -1,7 +1,7 @@ # This sample tests 'for' operations (both simple for loops # and list comprehension for loops). -from typing import Union, overload +from typing import overload def requires_int(val: int): @@ -104,7 +104,7 @@ def __getitem__(self, i: int) -> str: def __getitem__(self, i: slice) -> list[str]: ... - def __getitem__(self, i: Union[int, slice]) -> Union[str, list[str]]: + def __getitem__(self, i: int | slice) -> str | list[str]: ... diff --git a/packages/pyright-internal/src/tests/samples/fstring4.py b/packages/pyright-internal/src/tests/samples/fstring4.py index cb6663b9d..a2ab6520d 100644 --- a/packages/pyright-internal/src/tests/samples/fstring4.py +++ b/packages/pyright-internal/src/tests/samples/fstring4.py @@ -1,9 +1,7 @@ # This sample tests nested braces within an f-string. -from typing import Dict - -def foo(spam, dictval: Dict): +def foo(spam, dictval: dict): print(dictval) return "Done" diff --git a/packages/pyright-internal/src/tests/samples/function1.py b/packages/pyright-internal/src/tests/samples/function1.py index 9e10672aa..dfebdd6ee 100644 --- a/packages/pyright-internal/src/tests/samples/function1.py +++ b/packages/pyright-internal/src/tests/samples/function1.py @@ -1,12 +1,10 @@ # This sample tests that args and kwargs parameters are # properly typed. -from typing import Tuple, Dict, List +def function_with_args(*args: str): + reveal_type(args, expected_text="tuple[str, ...]") -def function_with_args(*args: str) -> Tuple[str, ...]: - return args - -def function_with_kwargs(**kwargs: List[str]) -> Dict[str, List[str]]: - return kwargs +def function_with_kwargs(**kwargs: list[str]): + reveal_type(kwargs, expected_text="dict[str, list[str]]") diff --git a/packages/pyright-internal/src/tests/samples/function10.py b/packages/pyright-internal/src/tests/samples/function10.py index 1956db8a8..6ad606be1 100644 --- a/packages/pyright-internal/src/tests/samples/function10.py +++ b/packages/pyright-internal/src/tests/samples/function10.py @@ -1,20 +1,25 @@ -# This sample tests bidirectional type inference for a function when -# a union includes a "bare" TypeVar and another (non-generic) type. +# This sample tests the case where a union of callables is passed +# to a generic function and the parameter types are subtypes of +# each other. -from dataclasses import dataclass -from typing import Generic, Sequence, TypeVar, Union +from typing import Any, Callable, Generic, TypeVar -T = TypeVar("T") +T_contra = TypeVar("T_contra", contravariant=True) -@dataclass -class Container(Generic[T]): - values: Sequence[Union[float, T]] +class Thing1: + prop1: str -def create_container(values: Sequence[Union[float, T]]) -> Container[T]: - return Container(values) +class Thing2: + prop1: str + prop2: str -arg: Sequence[Union[float, int]] = (1, 2.0) -x: Container[int] = create_container(arg) +class ClassA(Generic[T_contra]): + def __init__(self, callback: Callable[[T_contra], Any]) -> None: + ... + + +def func1(cb: Callable[[Thing1], Any] | Callable[[Thing1 | Thing2], Any]): + reveal_type(ClassA(cb), expected_text="ClassA[Thing1]") diff --git a/packages/pyright-internal/src/tests/samples/function11.py b/packages/pyright-internal/src/tests/samples/function11.py deleted file mode 100644 index 9402d479d..000000000 --- a/packages/pyright-internal/src/tests/samples/function11.py +++ /dev/null @@ -1,36 +0,0 @@ -# This sample tests the case where a function type is assigned to another -# and the source contains parameters that are annotated as literals and -# the destination has corresponding TypeVars. - -from typing import Callable, TypeVar, Literal - -_A = TypeVar("_A") - - -def wrapper1(fn: Callable[[_A], int]) -> _A: - ... - - -def f1(a: Literal[0]) -> int: - ... - - -reveal_type(wrapper1(f1), expected_text="Literal[0]") - - -def wrapper2(fn: Callable[..., _A]) -> Callable[..., _A]: - ... - - -def f2() -> Literal["Foo"]: - return "Foo" - - -reveal_type(wrapper2(f2)(), expected_text="Literal['Foo']") - - -def f3(): - return "Foo" - - -reveal_type(wrapper2(f3)(), expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/function12.py b/packages/pyright-internal/src/tests/samples/function12.py deleted file mode 100644 index 02775f256..000000000 --- a/packages/pyright-internal/src/tests/samples/function12.py +++ /dev/null @@ -1,26 +0,0 @@ -# This sample tests the case where a union of callables is passed -# to a generic function and the parameter types are subtypes of -# each other. - -from typing import Any, Callable, Generic, TypeVar - -T_contra = TypeVar('T_contra', contravariant=True) - - -class Thing1: - prop1: str - - -class Thing2: - prop1: str - prop2: str - - -class ClassA(Generic[T_contra]): - def __init__(self, callback: Callable[[T_contra], Any]) -> None: - ... - - -def func1(cb: Callable[[Thing1], Any] | Callable[[Thing1 | Thing2], Any]): - reveal_type(ClassA(cb), expected_text="ClassA[Thing1]") - diff --git a/packages/pyright-internal/src/tests/samples/function2.py b/packages/pyright-internal/src/tests/samples/function2.py index 7c1091de4..7c4dfaedb 100644 --- a/packages/pyright-internal/src/tests/samples/function2.py +++ b/packages/pyright-internal/src/tests/samples/function2.py @@ -1,6 +1,6 @@ # This sample tests the case where a param with no default # arg value can follow a param with a default arg value -# if they are both followed by a vararg param. +# if they are both followed by a *args param. def f(*a, b=1, c): diff --git a/packages/pyright-internal/src/tests/samples/function3.py b/packages/pyright-internal/src/tests/samples/function3.py index c417f7ab1..ede2a43dc 100644 --- a/packages/pyright-internal/src/tests/samples/function3.py +++ b/packages/pyright-internal/src/tests/samples/function3.py @@ -1,82 +1,13 @@ -# This sample tests that the type checker properly handles -# types of args and kwargs correctly. +# This sample tests assignment of a function that uses +# a synthesized TypeVar type for the "self" parameter. -from typing import Any, Dict, Hashable, Mapping, Protocol, Tuple +from typing import Callable -def requires_hashable_tuple(p1: Tuple[Hashable, ...]): - ... +class TestClass: + def method(self) -> None: + pass -def requires_hashable_dict(p1: Dict[str, Hashable]): - ... - - -def test_args(*args: Hashable): - if args: - aaa = list(args) - bbb = tuple(aaa) - args = bbb - requires_hashable_tuple(args) - - -def test_kwargs(**kwargs: Hashable): - requires_hashable_dict(kwargs) - - -class StrSubclass(str): - ... - - -def test_kwargs2( - a: Mapping[str, Any], - b: Mapping[Any, Hashable], - c: Dict[StrSubclass, Hashable], - d: int, - e: Mapping[int, Hashable], - f: Tuple[str, ...], -): - test_kwargs(**a) - test_kwargs(**b) - test_kwargs(**c) - - # This should generate an error - test_kwargs(**d) - - # This should generate an error - test_kwargs(**e) - - # This should generate an error - test_kwargs(**f) - - -class Callback1(Protocol): - def __call__(self) -> None: - ... - - -def func1( - value: str = ..., - *args: object, -) -> None: - ... - - -def func2( - value: str = ..., - **kwargs: object, -) -> None: - ... - - -def func3( - value: str = ..., - *args: object, - **kwargs: object, -) -> None: - ... - - -v1: Callback1 = func1 -v2: Callback1 = func2 -v3: Callback1 = func3 +# This should generate an error. +func1: Callable[[float], None] = TestClass.method diff --git a/packages/pyright-internal/src/tests/samples/function4.py b/packages/pyright-internal/src/tests/samples/function4.py index ede2a43dc..5e0be52b1 100644 --- a/packages/pyright-internal/src/tests/samples/function4.py +++ b/packages/pyright-internal/src/tests/samples/function4.py @@ -1,13 +1,22 @@ -# This sample tests assignment of a function that uses -# a synthesized TypeVar type for the "self" parameter. +# This sample tests the case where a generic function return type +# is handled correctly when its result is assigned to a LHS with +# an expected type that is a union (in this case, "msg" has a type +# of Union[str, None] and "get" returns the type Union[_VT_co, _T]. -from typing import Callable +def func1(key: str, msg: str | None): + if msg is None: + my_dict = {"a": "b"} + msg = my_dict.get(key, "c") -class TestClass: - def method(self) -> None: - pass + # Without bidirectional type inference, the + # revealed type will be "str", but since "msg" + # has a declared type, it will be used in this + # case to inform the type "str | None", which + # is a valid solution for the constraint solver. + # Unfortunately, it's probably not the answer + # the user expects in this case. + reveal_type(msg, expected_text="str | None") - -# This should generate an error. -func1: Callable[[float], None] = TestClass.method + x = my_dict.get(key, "c") + reveal_type(x, expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/function5.py b/packages/pyright-internal/src/tests/samples/function5.py new file mode 100644 index 000000000..6861efb6e --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/function5.py @@ -0,0 +1,13 @@ +# This test validates that a function can be treated as an object +# for type checking purposes. + +from typing import Hashable + + +def func1(a: int) -> int: + return a + + +x: object = func1 + +y: Hashable = func1 diff --git a/packages/pyright-internal/src/tests/samples/function6.py b/packages/pyright-internal/src/tests/samples/function6.py index 5a39fc30f..0c4cc7554 100644 --- a/packages/pyright-internal/src/tests/samples/function6.py +++ b/packages/pyright-internal/src/tests/samples/function6.py @@ -1,24 +1,38 @@ -# This sample tests the case where a generic function return type -# is handled correctly when its result is assigned to a LHS with -# an expected type that is a union (in this case, "msg" has a type -# of Union[str, None] and "get" returns the type Union[_VT_co, _T]. - -from typing import Optional - - -def f(key: str, msg: Optional[str]): - if msg is None: - my_dict = {"a": "b"} - msg = my_dict.get(key, "c") - - # Without bidirectional type inference, the - # revealed type will be "str", but since "msg" - # has a declared type, it will be used in this - # case to inform the type "str | None", which - # is a valid solution for the constraint solver. - # Unfortunately, it's probably not the answer - # the user expects in this case. - reveal_type(msg, expected_text="str | None") - - x = my_dict.get(key, "c") - reveal_type(x, expected_text="str") +# This sample verifies that functions are treated as though they +# derive from object. + +from typing import Callable, overload + + +@overload +def func1(a: str) -> str: + ... + + +@overload +def func1(a: int) -> int: + ... + + +def func1(a: str | int) -> str | int: + ... + + +def func2(a: str | int) -> str | int: + ... + + +def takes_object(val: object) -> None: + ... + + +takes_object(func1) +takes_object(func2) + + +def func3(b: Callable[[str], bool]) -> None: + if b == func1: + pass + + if b != func2: + pass diff --git a/packages/pyright-internal/src/tests/samples/function7.py b/packages/pyright-internal/src/tests/samples/function7.py index 6861efb6e..230e4ec23 100644 --- a/packages/pyright-internal/src/tests/samples/function7.py +++ b/packages/pyright-internal/src/tests/samples/function7.py @@ -1,13 +1,75 @@ -# This test validates that a function can be treated as an object -# for type checking purposes. +# This sample tests the case where a function type is compared to another +# function type where one contains a positional-only marker and the +# other does not. -from typing import Hashable +from typing import Protocol -def func1(a: int) -> int: - return a +class _Writer1(Protocol): + def write(self, a: str, b: str) -> object: + pass -x: object = func1 +class Writer1: + def write(self, a: str, /, b: str): + pass -y: Hashable = func1 + +def make_writer1(w: _Writer1): + pass + + +# This should generate an error because the source function is positional-only. +make_writer1(Writer1()) + + +class _Writer2(Protocol): + def write(self, a: str, /, b: str) -> object: + pass + + +class Writer2: + def write(self, a: str, b: str): + pass + + +def make_writer2(w: _Writer2): + pass + + +make_writer2(Writer2()) + + +class _Writer3(Protocol): + def write(self, a: str, b: str) -> object: + pass + + +class Writer3: + def write(self, __a: str, b: str): + pass + + +def make_writer3(w: _Writer3): + pass + + +# This should generate an error because the source function is positional-only. +make_writer3(Writer3()) + + +class _Writer4(Protocol): + def write(self, __a: str, b: str) -> object: + pass + + +class Writer4: + def write(self, a: str, b: str): + pass + + +def make_writer4(w: _Writer4): + pass + + +make_writer4(Writer4()) diff --git a/packages/pyright-internal/src/tests/samples/function8.py b/packages/pyright-internal/src/tests/samples/function8.py index 839f5f38e..d7d5c23a1 100644 --- a/packages/pyright-internal/src/tests/samples/function8.py +++ b/packages/pyright-internal/src/tests/samples/function8.py @@ -1,38 +1,20 @@ -# This sample verifies that functions are treated as though they -# derive from object. +# This sample tests bidirectional type inference for a function when +# a union includes a "bare" TypeVar and another (non-generic) type. -from typing import Callable, Union, overload +from dataclasses import dataclass +from typing import Generic, Sequence, TypeVar +T = TypeVar("T") -@overload -def func1(a: str) -> str: - ... +@dataclass +class Container(Generic[T]): + values: Sequence[float | T] -@overload -def func1(a: int) -> int: - ... +def create_container(values: Sequence[float | T]) -> Container[T]: + return Container(values) -def func1(a: Union[str, int]) -> Union[str, int]: - ... - -def func2(a: Union[str, int]) -> Union[str, int]: - ... - - -def takes_object(val: object) -> None: - ... - - -takes_object(func1) -takes_object(func2) - - -def func3(b: Callable[[str], bool]) -> None: - if b == func1: - pass - - if b != func2: - pass +arg: Sequence[float | int] = (1, 2.0) +x: Container[int] = create_container(arg) diff --git a/packages/pyright-internal/src/tests/samples/function9.py b/packages/pyright-internal/src/tests/samples/function9.py index 230e4ec23..9402d479d 100644 --- a/packages/pyright-internal/src/tests/samples/function9.py +++ b/packages/pyright-internal/src/tests/samples/function9.py @@ -1,75 +1,36 @@ -# This sample tests the case where a function type is compared to another -# function type where one contains a positional-only marker and the -# other does not. +# This sample tests the case where a function type is assigned to another +# and the source contains parameters that are annotated as literals and +# the destination has corresponding TypeVars. -from typing import Protocol +from typing import Callable, TypeVar, Literal +_A = TypeVar("_A") -class _Writer1(Protocol): - def write(self, a: str, b: str) -> object: - pass +def wrapper1(fn: Callable[[_A], int]) -> _A: + ... -class Writer1: - def write(self, a: str, /, b: str): - pass +def f1(a: Literal[0]) -> int: + ... -def make_writer1(w: _Writer1): - pass +reveal_type(wrapper1(f1), expected_text="Literal[0]") -# This should generate an error because the source function is positional-only. -make_writer1(Writer1()) +def wrapper2(fn: Callable[..., _A]) -> Callable[..., _A]: + ... -class _Writer2(Protocol): - def write(self, a: str, /, b: str) -> object: - pass +def f2() -> Literal["Foo"]: + return "Foo" -class Writer2: - def write(self, a: str, b: str): - pass +reveal_type(wrapper2(f2)(), expected_text="Literal['Foo']") -def make_writer2(w: _Writer2): - pass +def f3(): + return "Foo" -make_writer2(Writer2()) - -class _Writer3(Protocol): - def write(self, a: str, b: str) -> object: - pass - - -class Writer3: - def write(self, __a: str, b: str): - pass - - -def make_writer3(w: _Writer3): - pass - - -# This should generate an error because the source function is positional-only. -make_writer3(Writer3()) - - -class _Writer4(Protocol): - def write(self, __a: str, b: str) -> object: - pass - - -class Writer4: - def write(self, a: str, b: str): - pass - - -def make_writer4(w: _Writer4): - pass - - -make_writer4(Writer4()) +reveal_type(wrapper2(f3)(), expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/functionAnnotation2.py b/packages/pyright-internal/src/tests/samples/functionAnnotation2.py index 37da0e8c6..445e4ec0c 100644 --- a/packages/pyright-internal/src/tests/samples/functionAnnotation2.py +++ b/packages/pyright-internal/src/tests/samples/functionAnnotation2.py @@ -1,5 +1,6 @@ # This sample tests support for comment-style function annotations. + # Too few annotations def func1a(a, b): # type: (str) -> str diff --git a/packages/pyright-internal/src/tests/samples/functionAnnotation4.py b/packages/pyright-internal/src/tests/samples/functionAnnotation4.py index 1798fa92e..66f5b7c3b 100644 --- a/packages/pyright-internal/src/tests/samples/functionAnnotation4.py +++ b/packages/pyright-internal/src/tests/samples/functionAnnotation4.py @@ -2,6 +2,7 @@ from typing import Optional + # This should generate an error if reportTypeCommentUsage is enabled. def func1a(a, b): # type: (int, str) -> str diff --git a/packages/pyright-internal/src/tests/samples/futureImport2.py b/packages/pyright-internal/src/tests/samples/futureImport2.py index b68ebdde7..0b13be072 100644 --- a/packages/pyright-internal/src/tests/samples/futureImport2.py +++ b/packages/pyright-internal/src/tests/samples/futureImport2.py @@ -3,7 +3,8 @@ """ Doc String """ "Extension" -from __future__ import annotations # This should generate an error +from __future__ import annotations # This should generate an error + def func(): - from __future__ import annotations # This should generate an error + from __future__ import annotations # This should generate an error diff --git a/packages/pyright-internal/src/tests/samples/generators1.py b/packages/pyright-internal/src/tests/samples/generator1.py similarity index 92% rename from packages/pyright-internal/src/tests/samples/generators1.py rename to packages/pyright-internal/src/tests/samples/generator1.py index 7cddc5f27..162e7e6a3 100644 --- a/packages/pyright-internal/src/tests/samples/generators1.py +++ b/packages/pyright-internal/src/tests/samples/generator1.py @@ -1,17 +1,7 @@ # This sample tests various type checking operations relating to # generator functions (those with a "yield" method). -from typing import ( - Any, - Awaitable, - Generator, - Dict, - Iterable, - Iterator, - List, - Protocol, - TypedDict, -) +from typing import Any, Awaitable, Generator, Iterable, Iterator, Protocol, TypedDict class ClassA: @@ -97,7 +87,7 @@ def generator7() -> Generator[None, None, None]: yield -def generator8() -> Iterator[Dict[str, int]]: +def generator8() -> Iterator[dict[str, int]]: # This tests the bidirectional type inference # of dict types. It should not generate an error. yield {"hello": 3} @@ -115,7 +105,7 @@ async def generator10() -> int: # This should generate an error. -def generator11() -> List[int]: +def generator11() -> list[int]: yield 3 diff --git a/packages/pyright-internal/src/tests/samples/generators10.py b/packages/pyright-internal/src/tests/samples/generator10.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators10.py rename to packages/pyright-internal/src/tests/samples/generator10.py diff --git a/packages/pyright-internal/src/tests/samples/generators11.py b/packages/pyright-internal/src/tests/samples/generator11.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators11.py rename to packages/pyright-internal/src/tests/samples/generator11.py diff --git a/packages/pyright-internal/src/tests/samples/generators12.py b/packages/pyright-internal/src/tests/samples/generator12.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators12.py rename to packages/pyright-internal/src/tests/samples/generator12.py diff --git a/packages/pyright-internal/src/tests/samples/generators13.py b/packages/pyright-internal/src/tests/samples/generator13.py similarity index 90% rename from packages/pyright-internal/src/tests/samples/generators13.py rename to packages/pyright-internal/src/tests/samples/generator13.py index 7260309d1..847badce3 100644 --- a/packages/pyright-internal/src/tests/samples/generators13.py +++ b/packages/pyright-internal/src/tests/samples/generator13.py @@ -1,15 +1,15 @@ # This sample tests async generator and non-generator functions. import asyncio -from typing import AsyncGenerator, AsyncIterator, List +from typing import AsyncGenerator, AsyncIterator -async def get_data() -> List[int]: +async def get_data() -> list[int]: await asyncio.sleep(1) return [1, 2, 3] -async def generate(nums: List[int]) -> AsyncGenerator[str, None]: +async def generate(nums: list[int]) -> AsyncGenerator[str, None]: for n in nums: await asyncio.sleep(1) yield f"The number is {n}" diff --git a/packages/pyright-internal/src/tests/samples/generators14.py b/packages/pyright-internal/src/tests/samples/generator14.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators14.py rename to packages/pyright-internal/src/tests/samples/generator14.py diff --git a/packages/pyright-internal/src/tests/samples/generators15.py b/packages/pyright-internal/src/tests/samples/generator15.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators15.py rename to packages/pyright-internal/src/tests/samples/generator15.py diff --git a/packages/pyright-internal/src/tests/samples/generators16.py b/packages/pyright-internal/src/tests/samples/generator16.py similarity index 78% rename from packages/pyright-internal/src/tests/samples/generators16.py rename to packages/pyright-internal/src/tests/samples/generator16.py index 18805e3f4..c73a7b443 100644 --- a/packages/pyright-internal/src/tests/samples/generators16.py +++ b/packages/pyright-internal/src/tests/samples/generator16.py @@ -7,6 +7,8 @@ async def func1(n: int, fa: AsyncIterable[Any]): if n <= 0: + # This should generate an error because return statements + # are not allowed in async generators. return None g = aiter(fa) diff --git a/packages/pyright-internal/src/tests/samples/generators2.py b/packages/pyright-internal/src/tests/samples/generator2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators2.py rename to packages/pyright-internal/src/tests/samples/generator2.py diff --git a/packages/pyright-internal/src/tests/samples/generators3.py b/packages/pyright-internal/src/tests/samples/generator3.py similarity index 93% rename from packages/pyright-internal/src/tests/samples/generators3.py rename to packages/pyright-internal/src/tests/samples/generator3.py index 58b5ea8e1..f443d58c2 100644 --- a/packages/pyright-internal/src/tests/samples/generators3.py +++ b/packages/pyright-internal/src/tests/samples/generator3.py @@ -1,8 +1,6 @@ # This sample tests various type checking operations relating to # generator functions where the return type is inferred. -from typing import Optional - class ClassA: pass @@ -49,7 +47,7 @@ def consumer2() -> ClassA: return next(generator1()) -def consumer3() -> Optional[ClassA]: +def consumer3() -> ClassA | None: value = next(generator2()) if isinstance(value, str): diff --git a/packages/pyright-internal/src/tests/samples/generators4.py b/packages/pyright-internal/src/tests/samples/generator4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators4.py rename to packages/pyright-internal/src/tests/samples/generator4.py diff --git a/packages/pyright-internal/src/tests/samples/generators5.py b/packages/pyright-internal/src/tests/samples/generator5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators5.py rename to packages/pyright-internal/src/tests/samples/generator5.py diff --git a/packages/pyright-internal/src/tests/samples/generators6.py b/packages/pyright-internal/src/tests/samples/generator6.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators6.py rename to packages/pyright-internal/src/tests/samples/generator6.py diff --git a/packages/pyright-internal/src/tests/samples/generators7.py b/packages/pyright-internal/src/tests/samples/generator7.py similarity index 82% rename from packages/pyright-internal/src/tests/samples/generators7.py rename to packages/pyright-internal/src/tests/samples/generator7.py index 80c6d2ab2..db8276bcb 100644 --- a/packages/pyright-internal/src/tests/samples/generators7.py +++ b/packages/pyright-internal/src/tests/samples/generator7.py @@ -2,8 +2,6 @@ # and inferred return types from generators that use this # statement. -from typing import Dict - def f(): yield from [1, 2, 3] @@ -13,6 +11,6 @@ def g(): yield from f() -a: Dict[int, int] = {} +a: dict[int, int] = {} for i in g(): a[i] = i diff --git a/packages/pyright-internal/src/tests/samples/generators8.py b/packages/pyright-internal/src/tests/samples/generator8.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators8.py rename to packages/pyright-internal/src/tests/samples/generator8.py diff --git a/packages/pyright-internal/src/tests/samples/generators9.py b/packages/pyright-internal/src/tests/samples/generator9.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/generators9.py rename to packages/pyright-internal/src/tests/samples/generator9.py diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index e5382547c..8f5fce1ed 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -513,56 +513,56 @@ test('Specialization2', () => { TestUtils.validateResults(analysisResults, 0); }); -test('Expressions1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expressions1.py']); +test('Expression1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expression1.py']); TestUtils.validateResults(analysisResults, 4); }); -test('Expressions2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expressions2.py']); +test('Expression2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expression2.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Expressions3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expressions3.py']); +test('Expression3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expression3.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Expressions4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expressions4.py']); +test('Expression4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expression4.py']); TestUtils.validateResults(analysisResults, 2); }); -test('Expressions5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expressions5.py']); +test('Expression5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expression5.py']); TestUtils.validateResults(analysisResults, 12); }); -test('Expressions6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expressions6.py']); +test('Expression6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expression6.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Expressions7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expressions7.py']); +test('Expression7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expression7.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Expressions8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expressions8.py']); +test('Expression8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expression8.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Expressions9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expressions9.py']); +test('Expression9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['expression9.py']); TestUtils.validateResults(analysisResults, 0); }); @@ -749,6 +749,12 @@ test('Call9', () => { TestUtils.validateResults(analysisResults, 1); }); +test('Call10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['call10.py']); + + TestUtils.validateResults(analysisResults, 3); +}); + test('Function1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function1.py']); @@ -764,13 +770,19 @@ test('Function2', () => { test('Function3', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function3.py']); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 1); }); test('Function4', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function4.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); +}); + +test('Function5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function5.py']); + + TestUtils.validateResults(analysisResults, 0); }); test('Function6', () => { @@ -782,7 +794,7 @@ test('Function6', () => { test('Function7', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function7.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 2); }); test('Function8', () => { @@ -794,7 +806,7 @@ test('Function8', () => { test('Function9', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function9.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 0); }); test('Function10', () => { @@ -803,18 +815,6 @@ test('Function10', () => { TestUtils.validateResults(analysisResults, 0); }); -test('Function11', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function11.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - -test('Function12', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function12.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('KwargsUnpack1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['kwargsUnpack1.py']); diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 3dcb20a5f..606b965d7 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -27,101 +27,101 @@ test('Module2', () => { test('Ellipsis1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['ellipsis1.pyi']); - TestUtils.validateResults(analysisResults, 10); + TestUtils.validateResults(analysisResults, 11); }); -test('Generators1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators1.py']); +test('Generator1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator1.py']); TestUtils.validateResults(analysisResults, 9); }); -test('Generators2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators2.py']); +test('Generator2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator2.py']); TestUtils.validateResults(analysisResults, 2); }); -test('Generators3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators3.py']); +test('Generator3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator3.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Generators4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators4.py']); +test('Generator4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Generators5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators5.py']); +test('Generator5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator5.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Generators6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators6.py']); +test('Generator6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator6.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Generators7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators7.py']); +test('Generator7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator7.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Generators8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators8.py']); +test('Generator8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator8.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Generators9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators9.py']); +test('Generator9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator9.py']); TestUtils.validateResults(analysisResults, 2); }); -test('Generators10', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators10.py']); +test('Generator10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator10.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Generators11', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators11.py']); +test('Generator11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator11.py']); TestUtils.validateResults(analysisResults, 2); }); -test('Generators12', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators12.py']); +test('Generator12', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator12.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Generators13', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators13.py']); +test('Generator13', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator13.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Generators14', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators14.py']); +test('Generator14', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator14.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Generators15', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators15.py']); +test('Generator15', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator15.py']); TestUtils.validateResults(analysisResults, 3); }); -test('Generators16', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generators16.py']); +test('Generator16', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator16.py']); TestUtils.validateResults(analysisResults, 1); }); @@ -850,62 +850,62 @@ test('MethodOverride6', () => { TestUtils.validateResults(analysisResults2, 2); }); -test('Enums1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums1.py']); +test('Enum1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enum1.py']); TestUtils.validateResults(analysisResults, 3); }); -test('Enums2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums2.py']); +test('Enum2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enum2.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Enums3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums3.py']); +test('Enum3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enum3.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Enums4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums4.py']); +test('Enum4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enum4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Enums5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums5.py']); +test('Enum5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enum5.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Enums6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums6.py']); +test('Enum6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enum6.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 4); }); -test('Enums7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums7.py']); +test('Enum7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enum7.py']); - TestUtils.validateResults(analysisResults, 4); + TestUtils.validateResults(analysisResults, 1); }); -test('Enums8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums8.py']); +test('Enum8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enum8.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); -test('Enums9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums9.py']); +test('EnumAuto1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enumAuto1.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Enums10', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enums10.py']); +test('EnumGenNextValue1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['enumGenNextValue1.py']); TestUtils.validateResults(analysisResults, 0); }); From 1111f1b9bb8ce906c58534e6e5e3950965f3978b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 11:49:56 -0700 Subject: [PATCH 323/525] Started to untangle the hairball related to the "genericTypesX.py" test cases. --- ...enericTypes6.py => constrainedTypeVar1.py} | 15 +- ...ericTypes66.py => constrainedTypeVar10.py} | 8 +- ...ericTypes67.py => constrainedTypeVar11.py} | 29 +-- ...ericTypes68.py => constrainedTypeVar12.py} | 6 +- ...ericTypes76.py => constrainedTypeVar13.py} | 6 +- ...ericTypes81.py => constrainedTypeVar14.py} | 0 ...ericTypes83.py => constrainedTypeVar15.py} | 8 +- ...ericTypes54.py => constrainedTypeVar16.py} | 0 ...enericTypes9.py => constrainedTypeVar2.py} | 2 +- ...nericTypes22.py => constrainedTypeVar3.py} | 0 ...nericTypes25.py => constrainedTypeVar4.py} | 14 +- ...nericTypes34.py => constrainedTypeVar5.py} | 8 +- ...nericTypes36.py => constrainedTypeVar6.py} | 0 ...nericTypes46.py => constrainedTypeVar7.py} | 6 +- ...nericTypes63.py => constrainedTypeVar8.py} | 4 +- .../src/tests/samples/constrainedTypeVar9.py | 15 ++ .../{genericTypes5.py => constructor20.py} | 0 .../samples/{genericTypes1.py => del2.py} | 0 .../{genericTypes30.py => generic2.py} | 9 +- .../{genericTypes10.py => generic3.py} | 0 .../src/tests/samples/genericTypes100.py | 4 +- .../src/tests/samples/genericTypes11.py | 14 +- .../src/tests/samples/genericTypes12.py | 14 -- .../src/tests/samples/genericTypes13.py | 4 +- .../src/tests/samples/genericTypes14.py | 12 +- .../src/tests/samples/genericTypes15.py | 6 +- .../src/tests/samples/genericTypes16.py | 15 +- .../src/tests/samples/genericTypes17.py | 10 +- .../src/tests/samples/genericTypes19.py | 11 +- .../src/tests/samples/genericTypes2.py | 40 --- .../src/tests/samples/genericTypes21.py | 10 +- .../src/tests/samples/genericTypes28.py | 32 +-- .../src/tests/samples/genericTypes29.py | 8 +- .../src/tests/samples/genericTypes32.py | 2 +- .../src/tests/samples/genericTypes35.py | 8 +- .../src/tests/samples/genericTypes37.py | 6 +- .../src/tests/samples/genericTypes38.py | 15 -- .../src/tests/samples/genericTypes39.py | 65 ++--- .../src/tests/samples/genericTypes4.py | 6 +- .../src/tests/samples/genericTypes40.py | 4 +- .../src/tests/samples/genericTypes41.py | 8 +- .../src/tests/samples/genericTypes42.py | 12 +- .../src/tests/samples/genericTypes43.py | 16 +- .../src/tests/samples/genericTypes44.py | 8 +- .../src/tests/samples/genericTypes45.py | 28 +-- .../src/tests/samples/genericTypes56.py | 3 +- .../src/tests/samples/genericTypes65.py | 33 ++- .../src/tests/samples/genericTypes79.py | 2 +- .../src/tests/samples/genericTypes8.py | 4 +- .../src/tests/samples/genericTypes89.py | 14 +- .../src/tests/samples/genericTypes90.py | 5 +- .../{genericTypes33.py => missingTypeArg1.py} | 0 .../{genericTypes7.py => properties15.py} | 14 +- .../src/tests/samples/pseudoGeneric1.py | 8 +- .../{genericTypes20.py => pseudoGeneric2.py} | 16 +- .../{genericTypes26.py => pseudoGeneric3.py} | 11 +- .../{genericTypes27.py => typeAlias21.py} | 0 .../src/tests/typeEvaluator1.test.ts | 18 ++ .../src/tests/typeEvaluator2.test.ts | 234 +++++++----------- .../src/tests/typeEvaluator3.test.ts | 12 + .../src/tests/typeEvaluator4.test.ts | 18 ++ 61 files changed, 383 insertions(+), 497 deletions(-) rename packages/pyright-internal/src/tests/samples/{genericTypes6.py => constrainedTypeVar1.py} (67%) rename packages/pyright-internal/src/tests/samples/{genericTypes66.py => constrainedTypeVar10.py} (67%) rename packages/pyright-internal/src/tests/samples/{genericTypes67.py => constrainedTypeVar11.py} (52%) rename packages/pyright-internal/src/tests/samples/{genericTypes68.py => constrainedTypeVar12.py} (65%) rename packages/pyright-internal/src/tests/samples/{genericTypes76.py => constrainedTypeVar13.py} (92%) rename packages/pyright-internal/src/tests/samples/{genericTypes81.py => constrainedTypeVar14.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes83.py => constrainedTypeVar15.py} (72%) rename packages/pyright-internal/src/tests/samples/{genericTypes54.py => constrainedTypeVar16.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes9.py => constrainedTypeVar2.py} (96%) rename packages/pyright-internal/src/tests/samples/{genericTypes22.py => constrainedTypeVar3.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes25.py => constrainedTypeVar4.py} (65%) rename packages/pyright-internal/src/tests/samples/{genericTypes34.py => constrainedTypeVar5.py} (83%) rename packages/pyright-internal/src/tests/samples/{genericTypes36.py => constrainedTypeVar6.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes46.py => constrainedTypeVar7.py} (93%) rename packages/pyright-internal/src/tests/samples/{genericTypes63.py => constrainedTypeVar8.py} (86%) create mode 100644 packages/pyright-internal/src/tests/samples/constrainedTypeVar9.py rename packages/pyright-internal/src/tests/samples/{genericTypes5.py => constructor20.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes1.py => del2.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes30.py => generic2.py} (79%) rename packages/pyright-internal/src/tests/samples/{genericTypes10.py => generic3.py} (100%) delete mode 100644 packages/pyright-internal/src/tests/samples/genericTypes12.py delete mode 100644 packages/pyright-internal/src/tests/samples/genericTypes2.py delete mode 100644 packages/pyright-internal/src/tests/samples/genericTypes38.py rename packages/pyright-internal/src/tests/samples/{genericTypes33.py => missingTypeArg1.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes7.py => properties15.py} (51%) rename packages/pyright-internal/src/tests/samples/{genericTypes20.py => pseudoGeneric2.py} (73%) rename packages/pyright-internal/src/tests/samples/{genericTypes26.py => pseudoGeneric3.py} (73%) rename packages/pyright-internal/src/tests/samples/{genericTypes27.py => typeAlias21.py} (100%) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes6.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar1.py similarity index 67% rename from packages/pyright-internal/src/tests/samples/genericTypes6.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar1.py index 69ac2da38..adcad679f 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes6.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar1.py @@ -1,5 +1,4 @@ -# This sample tests the type checker's ability to do -# TypeVar matching for both constrained TypeVars and unconstrained. +# This sample tests constraint solving constrained TypeVars. from typing import Generic, TypeVar @@ -14,18 +13,6 @@ def constrained(first: S, second: S) -> S: # cannot satisfy the 'str' or 'bytes' constraint. result = constrained("a", b"abc") -T = TypeVar("T") - - -def unconstrained(first: T, second: T) -> T: - return first - - -# This shouldn't generate an error because the TypeVar matching -# logic is free to expand the type to a union of 'str' and 'bytes'. -result = unconstrained("a", b"abc") - - U = TypeVar("U", int, str) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes66.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar10.py similarity index 67% rename from packages/pyright-internal/src/tests/samples/genericTypes66.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar10.py index e0cd858a2..9b069c20b 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes66.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar10.py @@ -1,11 +1,11 @@ # This sample tests the handling of constrained type variables # that include unions. -from typing import List, TypeVar, Union +from typing import TypeVar T1 = TypeVar("T1", int, str) -T2 = TypeVar("T2", int, str, Union[int, str]) -T3 = TypeVar("T3", int, str, Union[int, str, List[int]]) +T2 = TypeVar("T2", int, str, int | str) +T3 = TypeVar("T3", int, str, int | str | list[int]) def func1(x: T1) -> T1: @@ -20,7 +20,7 @@ def func3(x: T3) -> T3: return x -def func4(y: Union[int, str]): +def func4(y: int | str): # This should generate an error because T1 doesn't # include a union constraint. func1(y) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes67.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar11.py similarity index 52% rename from packages/pyright-internal/src/tests/samples/genericTypes67.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar11.py index 85f63dcc3..09c8ba1b0 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes67.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar11.py @@ -1,6 +1,6 @@ # This sample tests for proper handling of constrained or bound TypeVars. -from typing import Dict, Generic, Literal, Optional, TypeVar, Union +from typing import Generic, TypeVar class IntSubclass1(int): @@ -28,30 +28,3 @@ def __add__(self, value: object) -> "IntSubclass2": def add2(value: _T2) -> _T2: reveal_type(value + 1, expected_text="int* | IntSubclass2*") return value + 5 - - -class A: - ... - - -class B: - ... - - -_T3 = TypeVar("_T3", bound=Union[A, B]) - - -class Registry(Generic[_T3]): - def __init__(self) -> None: - self.registry = {} - - @property - def registry(self) -> Dict[str, _T3]: - ... - - @registry.setter - def registry(self, registry: Dict[str, _T3]) -> None: - ... - - def get(self, _id: str) -> Optional[_T3]: - return self.registry.get(_id) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes68.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar12.py similarity index 65% rename from packages/pyright-internal/src/tests/samples/genericTypes68.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar12.py index a6526d41a..aa4233d23 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes68.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar12.py @@ -6,9 +6,9 @@ from typing import AnyStr -def func(path: AnyStr | PathLike[AnyStr]) -> AnyStr: +def func1(path: AnyStr | PathLike[AnyStr]) -> AnyStr: ... -def thing(value: AnyStr) -> AnyStr: - return func(value) +def func2(value: AnyStr) -> AnyStr: + return func1(value) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes76.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar13.py similarity index 92% rename from packages/pyright-internal/src/tests/samples/genericTypes76.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar13.py index 0c101bf13..31f52b8c1 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes76.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar13.py @@ -4,7 +4,7 @@ # that is typed as that TypeVar, we know that the code path is taken only # in the case where constraint is satisfied. -from typing import AnyStr, Generic, List, Optional, ParamSpec, TypeVar, Union +from typing import AnyStr, Generic, ParamSpec, TypeVar from typing_extensions import TypeVarTuple, Unpack _T1 = TypeVar("_T1", str, int) @@ -44,7 +44,7 @@ def func2(val1: _T1) -> list[_T1]: class Class1(Generic[_T1, _T2, _T3, _P, Unpack[_Ts]]): def meth1( self, val1: _T1, val2: _T2, val3: _T3, cond: bool - ) -> Union[List[_T1], List[_T2], List[_T3]]: + ) -> list[_T1] | list[_T2] | list[_T3]: if cond: # This should generate an error. return [0] @@ -98,7 +98,7 @@ def meth3(self, val1: _T1, val2: _T3) -> _T1: raise BaseException() -def func3(s: AnyStr, y: Optional[AnyStr] = None) -> AnyStr: +def func3(s: AnyStr, y: AnyStr | None = None) -> AnyStr: if isinstance(s, str): if y is None: pass diff --git a/packages/pyright-internal/src/tests/samples/genericTypes81.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar14.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes81.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar14.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes83.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar15.py similarity index 72% rename from packages/pyright-internal/src/tests/samples/genericTypes83.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar15.py index 14b02b094..1a64682df 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes83.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar15.py @@ -1,15 +1,15 @@ # This sample tests the case where a constrained TypeVar is used # as an argument for a constructor or function call. -from typing import TypeVar, Generic, Union +from typing import TypeVar, Generic from dataclasses import dataclass -class NDArray: +class ClassA: ... -_T = TypeVar("_T", Union[int, float], NDArray) +_T = TypeVar("_T", int | float, ClassA) @dataclass @@ -23,6 +23,6 @@ def func1(a: Data[_T]) -> _T: reveal_type(value, expected_text="int*") else: value = a.data - reveal_type(value, expected_text="NDArray*") + reveal_type(value, expected_text="ClassA*") return value diff --git a/packages/pyright-internal/src/tests/samples/genericTypes54.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar16.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes54.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar16.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes9.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar2.py similarity index 96% rename from packages/pyright-internal/src/tests/samples/genericTypes9.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar2.py index 890a39707..4b6dfcb63 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes9.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar2.py @@ -1,4 +1,4 @@ -# This sample tests type var matching for constrained type vars. +# This sample tests constraint solving for constrained type vars. import pathlib import shutil diff --git a/packages/pyright-internal/src/tests/samples/genericTypes22.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes22.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar3.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes25.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar4.py similarity index 65% rename from packages/pyright-internal/src/tests/samples/genericTypes25.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar4.py index 59b958737..05f2ecd2f 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes25.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar4.py @@ -1,18 +1,18 @@ # This sample tests type narrowing of generic constrained types. -from typing import AnyStr, Generic, List, Optional, Sequence, TypeVar, Union +from typing import AnyStr, Generic, Sequence, TypeVar -Command = Union[AnyStr, Sequence[AnyStr]] +Command = AnyStr | Sequence[AnyStr] -def version1(cmd: Command) -> List[str]: +def func1(cmd: Command) -> list[str]: if isinstance(cmd, bytes): return [str(cmd, "utf-8")] if isinstance(cmd, str): return [cmd] - ret: List[str] = [] + ret: list[str] = [] for itm in cmd: if isinstance(itm, str): ret.append(itm) @@ -25,12 +25,12 @@ def version1(cmd: Command) -> List[str]: class Item(Generic[T]): - value: Optional[T] + value: T | None - def __init__(self, source: Optional[T]) -> None: + def __init__(self, source: T | None) -> None: self.value = source - def read(self) -> Optional[T]: + def read(self) -> T | None: if self.value is None: raise RuntimeError(f"Item is required!") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes34.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar5.py similarity index 83% rename from packages/pyright-internal/src/tests/samples/genericTypes34.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar5.py index 2dcab4411..ef1a3cc23 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes34.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar5.py @@ -1,7 +1,7 @@ # This sample tests the handling of generic type aliases # with constrained types. -from typing import Callable, Generic, Type, TypeVar, Union +from typing import Callable, Generic, TypeVar T = TypeVar("T", str, bool, None) @@ -34,7 +34,7 @@ def f_generic3(val: T) -> T: return val -def f_union(val: Union[bool, str]) -> None: +def f_union(val: bool | str) -> None: # This should generate an error because a # union cannot be assigned to a constrained # type variable. @@ -46,9 +46,9 @@ def f_union(val: Union[bool, str]) -> None: f_generic3(val) -def func1(v: T, t: Type[T]): +def func1(v: T, t: type[T]): print(t) -def func2(v: T, t: Type[T]): +def func2(v: T, t: type[T]): func1(v, t) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes36.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar6.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes36.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar6.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes46.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar7.py similarity index 93% rename from packages/pyright-internal/src/tests/samples/genericTypes46.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar7.py index 355018bee..9a124b2ec 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes46.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar7.py @@ -4,7 +4,7 @@ from typing import Iterator, Optional, Sequence, TypeVar, Union -def func(a: Union[int, float]): +def func0(a: Union[int, float]): ... @@ -12,7 +12,7 @@ def func(a: Union[int, float]): def func1(a: _T1, b: _T1): - return func(a) + return func0(a) _T2 = TypeVar("_T2", int, float, complex) @@ -20,7 +20,7 @@ def func1(a: _T1, b: _T1): def func2(a: _T2, b: _T2): # This should generate an error. - return func(a) + return func0(a) _T3 = TypeVar("_T3", int, float) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes63.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar8.py similarity index 86% rename from packages/pyright-internal/src/tests/samples/genericTypes63.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar8.py index 19c3d8b0b..0eb0d43e3 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes63.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar8.py @@ -1,7 +1,7 @@ # This sample tests the handling of a constrained TypeVar used with # a Type[T] annotation. -from typing import Type, TypeVar, Any +from typing import TypeVar, Any class A: @@ -15,7 +15,7 @@ def f(self) -> None: T = TypeVar("T", str, int, A) -def factory(desired_type: Type[T]) -> T: +def factory(desired_type: type[T]) -> T: return desired_type(1) diff --git a/packages/pyright-internal/src/tests/samples/constrainedTypeVar9.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar9.py new file mode 100644 index 000000000..3f92ae7fc --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar9.py @@ -0,0 +1,15 @@ +# This sample tests the case where a constrained type variable +# includes a Literal[False] and Literal[True]. + +from typing import TypeVar, Generic, Literal + +XOrY = TypeVar("XOrY", Literal[True], Literal[False]) + + +class A(Generic[XOrY]): + pass + + +class B(Generic[XOrY]): + def __init__(self, a: A[XOrY]): + self.a = a diff --git a/packages/pyright-internal/src/tests/samples/genericTypes5.py b/packages/pyright-internal/src/tests/samples/constructor20.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes5.py rename to packages/pyright-internal/src/tests/samples/constructor20.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes1.py b/packages/pyright-internal/src/tests/samples/del2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes1.py rename to packages/pyright-internal/src/tests/samples/del2.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes30.py b/packages/pyright-internal/src/tests/samples/generic2.py similarity index 79% rename from packages/pyright-internal/src/tests/samples/genericTypes30.py rename to packages/pyright-internal/src/tests/samples/generic2.py index a053ed3d5..0463bdf07 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes30.py +++ b/packages/pyright-internal/src/tests/samples/generic2.py @@ -7,7 +7,7 @@ _T1 = TypeVar("_T1") -class Foo(Generic[_T1]): +class ClassA(Generic[_T1]): pass @@ -21,12 +21,13 @@ def func2(p1: Generic[_T1]) -> _T1: ... -AAA = Generic +TA1 = Generic + # This should generate an error. -def func3(a: _T1) -> AAA[_T1]: +def func3(a: _T1) -> TA1[_T1]: ... -class Foo2(AAA[_T1]): +class ClassB(TA1[_T1]): ... diff --git a/packages/pyright-internal/src/tests/samples/genericTypes10.py b/packages/pyright-internal/src/tests/samples/generic3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes10.py rename to packages/pyright-internal/src/tests/samples/generic3.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes100.py b/packages/pyright-internal/src/tests/samples/genericTypes100.py index f86c5eacd..d52e407a0 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes100.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes100.py @@ -1,16 +1,16 @@ # This sample tests the assignment of unions that contain TypeVars. - from typing import TypeVar T = TypeVar("T") + def func1(x: T | None) -> T | str: # This should generate an error. return x + def func2(x: T | int) -> T | str: # This should generate an error. return x - diff --git a/packages/pyright-internal/src/tests/samples/genericTypes11.py b/packages/pyright-internal/src/tests/samples/genericTypes11.py index 7f45d027b..eada59a73 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes11.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes11.py @@ -1,4 +1,4 @@ -# This sample validates generic type matching for protocol +# This sample validates constraint solving for protocol # classes where the protocol is partially specialized with a # type variable. @@ -9,18 +9,18 @@ _T = TypeVar("_T", covariant=True) -class Foo(Iterator[_T], Protocol): +class ProtoA(Iterator[_T], Protocol): pass -def foo(func: Callable[..., Iterator[_T]]) -> Callable[..., Foo[_T]]: +def decorator1(func: Callable[..., Iterator[_T]]) -> Callable[..., ProtoA[_T]]: ... -@foo -def f() -> Iterator[str]: +@decorator1 +def func1() -> Iterator[str]: yield "" -a = f() -b: Foo[str] = a +a = func1() +b: ProtoA[str] = a diff --git a/packages/pyright-internal/src/tests/samples/genericTypes12.py b/packages/pyright-internal/src/tests/samples/genericTypes12.py deleted file mode 100644 index 40f4220eb..000000000 --- a/packages/pyright-internal/src/tests/samples/genericTypes12.py +++ /dev/null @@ -1,14 +0,0 @@ -# This sample tests the checker's ability to enforce -# type invariance for type arguments. - -# pyright: strict - -from typing import Dict, Union - -foo: Dict[Union[int, str], str] = {} -bar: Dict[str, str] = {} - -# This should generate an error because -# both type parameters for Dict are invariant, -# and str isn't assignable to Union[int, str]. -foo = bar diff --git a/packages/pyright-internal/src/tests/samples/genericTypes13.py b/packages/pyright-internal/src/tests/samples/genericTypes13.py index d2ed47a00..56b10a48a 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes13.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes13.py @@ -1,7 +1,7 @@ # This sample tests the type checker's ability to do bidirectional # type inference when the expected type is defined by a bound TypeVar. -from typing import Dict, TypeVar +from typing import TypeVar class A: @@ -19,7 +19,7 @@ class C(A): _T_A = TypeVar("_T_A", bound=A) -def testFunc(value: Dict[str, _T_A]) -> _T_A: +def testFunc(value: dict[str, _T_A]) -> _T_A: return value["a"] diff --git a/packages/pyright-internal/src/tests/samples/genericTypes14.py b/packages/pyright-internal/src/tests/samples/genericTypes14.py index 68e8a3087..a6d63f8be 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes14.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes14.py @@ -1,22 +1,22 @@ -# This sample tests TypeVar matching in a situation -# where the matched type has a type argument that is +# This sample tests constraint solving in a situation +# where the type has a type argument that is # a union of types that are subclasses of each other. -from typing import Iterable, Iterator, List, Literal, Optional, TypeVar, Union +from typing import Iterable, Iterator, Literal, TypeVar _T = TypeVar("_T") -def filter(__function: None, __iterable: Iterable[Optional[_T]]) -> Iterator[_T]: +def filter(__function: None, __iterable: Iterable[_T | None]) -> Iterator[_T]: ... # In this case, bool is a subclass of int, so the TypeVar # matching for _T should evaluate to Iterator[int]. -list_of_bools_and_ints: List[Union[Literal[False], int]] = [] +list_of_bools_and_ints: list[Literal[False] | int] = [] generator_of_ints = filter(None, list_of_bools_and_ints) a: int = next(generator_of_ints) -# This should generate an error +# This should generate an error. b: bool = next(generator_of_ints) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes15.py b/packages/pyright-internal/src/tests/samples/genericTypes15.py index 1110c483d..f2bf2149b 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes15.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes15.py @@ -3,11 +3,9 @@ # the "keys" method on "dict") based on the provided "self" # argument. -from typing import Dict - -foo: Dict[str, str] = {} +v1: dict[str, str] = {} # This should not result in an "Unknown", so no # error should be generated. -result = dict.keys(foo) +result = dict.keys(v1) reveal_type(result, expected_text="dict_keys[Unknown, Unknown]") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes16.py b/packages/pyright-internal/src/tests/samples/genericTypes16.py index f4db97ca9..0b98ad8e4 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes16.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes16.py @@ -1,15 +1,14 @@ -# This sample tests the type checker's ability to -# perform TypeVar matching in the case where the first +# This sample tests constraint solving where the first # encounter with the TypeVar is contravariant but later # encounters are covariant or invariant. -def foo(value: object) -> bool: +def func1(value: object) -> bool: ... -# This should evaluate to a type of "Iterable[str]", -# not "Iterable[object]". -filtered_list = filter(foo, ["b", "a", "r"]) -should_be_str = next(filtered_list) -a = len(should_be_str) +v1 = filter(func1, ["b", "a", "r"]) +reveal_type(v1, expected_text="filter[str]") + +v2 = next(v1) +reveal_type(v2, expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes17.py b/packages/pyright-internal/src/tests/samples/genericTypes17.py index 937d10c88..2672a8fb0 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes17.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes17.py @@ -5,20 +5,20 @@ from typing import Any, Callable, Iterable, Iterator, TypeVar +_T = TypeVar("_T") + def is_one(x: int) -> bool: return x == 1 -nums = ["a", "b", "c"] - -_T = TypeVar("_T") +v1 = ["a", "b", "c"] -def filterX(__function: Callable[[_T], Any], __iterable: Iterable[_T]) -> Iterator[_T]: +def func1(__function: Callable[[_T], Any], __iterable: Iterable[_T]) -> Iterator[_T]: ... # This should be flagged as an error because nums is # not an int array. -ones = filterX(is_one, nums) +ones = func1(is_one, v1) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes19.py b/packages/pyright-internal/src/tests/samples/genericTypes19.py index 314a84421..3321ac4e4 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes19.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes19.py @@ -1,9 +1,10 @@ -# This sample tests the matching of type variables in methods +# This sample tests constraint solving in methods # where the type is provided by a default initialization value # rather than an argument provided directly by the caller. # We use "strict" here because we want to ensure that there are # no "unknown" types remaining in this file. + # pyright: strict from typing import Generic, TypeVar @@ -12,7 +13,7 @@ _B = TypeVar("_B") -class Foo(Generic[_A, _B]): +class ClassA(Generic[_A, _B]): def __init__(self, a: _A, b: _B = "hello"): self._foo_a = a self._foo_b = b @@ -26,7 +27,7 @@ def value_b(self): return self._foo_b -foo = Foo(27) +a1 = ClassA(27) -reveal_type(foo.value_a, expected_text="int") -reveal_type(foo.value_b, expected_text="str") +reveal_type(a1.value_a, expected_text="int") +reveal_type(a1.value_b, expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes2.py b/packages/pyright-internal/src/tests/samples/genericTypes2.py deleted file mode 100644 index 0b224a510..000000000 --- a/packages/pyright-internal/src/tests/samples/genericTypes2.py +++ /dev/null @@ -1,40 +0,0 @@ -# This sample checks for handling of generic functions. - -from typing import TypeVar, Any, Callable, List - -T = TypeVar("T") - - -def for_each(xs: List[T], f: Callable[[T], Any]) -> None: - for x in xs: - f(x) - - -class Foo: - ... - - -def call_len(x: Foo) -> None: - pass - - -# This should generate an error because call_len takes a str, -# which isn't compatible with a List[int]. -for_each([1, 2, 3], call_len) - - -def validate_param_types(i: int, s: str): - pass - - -async def test(): - import asyncio - - async def get_int() -> int: - return 42 - - async def get_str() -> str: - return "Hi!" - - i, s = await asyncio.gather(get_int(), get_str()) - validate_param_types(i, s) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes21.py b/packages/pyright-internal/src/tests/samples/genericTypes21.py index 504c20df4..cfdbe026d 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes21.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes21.py @@ -6,13 +6,13 @@ _T = TypeVar("_T") -def foo1(v: Optional[_T]) -> _T: +def func1(v: Optional[_T]) -> _T: if v is None: raise ValueError return v -def foo2(v: _T) -> _T: +def func2(v: _T) -> _T: if v is None: raise ValueError return v @@ -20,10 +20,8 @@ def foo2(v: _T) -> _T: f: Optional[int] = None -# This should not generate an error because type var _T -# should be matched to "int" rather than "Optional[int]". -a: int = foo1(f) +a: int = func1(f) # This should generate an error because type var _T # should be matched to "Optional[int]". -b: int = foo2(f) +b: int = func2(f) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes28.py b/packages/pyright-internal/src/tests/samples/genericTypes28.py index 9fcf9023d..8b0c0bb76 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes28.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes28.py @@ -8,25 +8,25 @@ _T3 = TypeVar("_T3") -def foo1(a: Type[_T1]) -> _T1: +def func1(a: Type[_T1]) -> _T1: return a() -a = foo1(Optional[int]) +a = func1(Optional[int]) -def foo2(a: Type[_T2]) -> Type[_T2]: +def func2(a: Type[_T2]) -> Type[_T2]: return a -b = foo2(type(None)) +b = func2(type(None)) # This should generate an error because None is # not a type; it's an instance of the NoneType class. -c = foo2(None) +c = func2(None) -class Foo(Generic[_T1]): +class ClassA(Generic[_T1]): def __init__(self, value: _T1) -> None: ... @@ -35,21 +35,21 @@ def get(cls: Type[_T3]) -> Type[_T3]: return cls -class Bar(Foo): +class ClassB(ClassA): pass -def bar(value: _T1) -> Type[Foo[_T1]]: - baz = Foo(value) - qux = type(baz) - reveal_type(qux, expected_text="type[Foo[_T1@bar]]") - return qux +def func3(value: _T1) -> Type[ClassA[_T1]]: + v1 = ClassA(value) + v2 = type(v1) + reveal_type(v2, expected_text="type[ClassA[_T1@func3]]") + return v2 -d = Bar.get() -reveal_type(d, expected_text="type[Bar]") -reveal_type(Bar.get(), expected_text="type[Bar]") +d = ClassB.get() +reveal_type(d, expected_text="type[ClassB]") +reveal_type(ClassB.get(), expected_text="type[ClassB]") -def class_constructor(cls: type[_T1]) -> Callable[..., _T1]: +def func4(cls: type[_T1]) -> Callable[..., _T1]: return cls diff --git a/packages/pyright-internal/src/tests/samples/genericTypes29.py b/packages/pyright-internal/src/tests/samples/genericTypes29.py index 3fe888080..76c6bfe83 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes29.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes29.py @@ -1,17 +1,17 @@ # This sample tests bidirectional inference when the type derives from the # expected type and both are generic. -from typing import Generic, Iterable, Mapping, Optional, TypeVar, Union +from typing import Generic, Iterable, Mapping, TypeVar -v0: Optional[Mapping[str, Union[int, str]]] = dict([("test1", 1), ("test2", 2)]) +v0: Mapping[str, int | str] | None = dict([("test1", 1), ("test2", 2)]) -v1: Optional[Mapping[str, float]] = dict([("test1", 1), ("test2", 2)]) +v1: Mapping[str, float] | None = dict([("test1", 1), ("test2", 2)]) # This should generate an error because of a type mismatch. v2: Mapping[str, str] = dict([("test1", 1), ("test2", 2)]) -options: dict[Union[int, str], int] = {} +options: dict[int | str, int] = {} channel_types: dict[str, int] = {} keys = channel_types.keys() diff --git a/packages/pyright-internal/src/tests/samples/genericTypes32.py b/packages/pyright-internal/src/tests/samples/genericTypes32.py index b9974205f..9133b6c10 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes32.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes32.py @@ -1,4 +1,4 @@ -# This sample checks the handling of TypeVar matching +# This sample checks the handling of constraint solving # in the case where list and tuple expressions are being # matched, and those expressions contain literal values. # We need to validate that the type inference for lists diff --git a/packages/pyright-internal/src/tests/samples/genericTypes35.py b/packages/pyright-internal/src/tests/samples/genericTypes35.py index 16fcada3c..a6bb146b0 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes35.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes35.py @@ -6,7 +6,7 @@ # NOTE: This test is no longer working. It previously worked # because of the looser handling of TypeVars. -from typing import TypeVar, Callable, Optional +from typing import TypeVar, Callable T1 = TypeVar("T1") U1 = TypeVar("U1") @@ -16,11 +16,11 @@ def identity1(x: T1) -> T1: return x -def fmap(f: Callable[[T1], U1], maybe: Optional[T1]) -> Optional[U1]: +def fmap(f: Callable[[T1], U1], maybe: T1 | None) -> U1 | None: return None -x1: Optional[int] = 0 +x1: int | None = 0 y1 = fmap(identity1, x1) if y1 is not None: @@ -37,7 +37,7 @@ def identity2(x: T2) -> T2: return x -x2: Optional[int] = 0 +x2: int | None = 0 # This should generate an error because identity2's TypeVar # T2 is bound to str, so there is no solution that satisfies diff --git a/packages/pyright-internal/src/tests/samples/genericTypes37.py b/packages/pyright-internal/src/tests/samples/genericTypes37.py index f41056390..6427d7395 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes37.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes37.py @@ -4,14 +4,14 @@ from typing import Any, Generic, TypeVar -class Bar: +class ClassA: ... -_T = TypeVar("_T", bound=Bar) +_T = TypeVar("_T", bound=ClassA) -class Foo(Generic[_T]): +class ClassB(Generic[_T]): def func1(self, a: _T): pass diff --git a/packages/pyright-internal/src/tests/samples/genericTypes38.py b/packages/pyright-internal/src/tests/samples/genericTypes38.py deleted file mode 100644 index 20da01134..000000000 --- a/packages/pyright-internal/src/tests/samples/genericTypes38.py +++ /dev/null @@ -1,15 +0,0 @@ -# This sample tests the handling of type variables -# used within a generic class. - -from queue import Queue -from typing import Generic, Optional, TypeVar - -_T = TypeVar("_T") - - -class Foo(Generic[_T]): - def __init__(self): - self._queue: "Queue[Optional[_T]]" = Queue() - - def publish(self, message: _T): - self._queue.put_nowait(message) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes39.py b/packages/pyright-internal/src/tests/samples/genericTypes39.py index 382bf43e9..f5372682e 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes39.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes39.py @@ -1,63 +1,50 @@ # This sample tests the handling of TypeVars defined by # a generic function. -from typing import Callable, Dict, Generic, Iterable, List, Tuple, TypeVar +from typing import Generic, TypeVar -T = TypeVar("T") -R = TypeVar("R") - -def do_something( - collection: Iterable[T], zero: R, f: Callable[[R, T], R] -) -> Iterable[R]: - s = zero - yield s - for x in collection: - s = f(s, x) - yield s - - -class Foo: +class ClassA: pass _T1 = TypeVar("_T1") -_T2 = TypeVar("_T2", bound=Foo) -_T2A = TypeVar("_T2A", bound=Foo) -_T3 = TypeVar("_T3", Foo, int, str) +_T2 = TypeVar("_T2", bound=ClassA) +_T2A = TypeVar("_T2A", bound=ClassA) +_T3 = TypeVar("_T3", ClassA, int, str) -class MyClass1(Generic[_T1]): +class Class1(Generic[_T1]): def __init__(self, a: _T1): - self._a: Dict[str, _T1] = {} - self._b: Tuple[_T1, ...] = (a, a, a) - self._c: Tuple[_T1, _T1] = (a, a) - self._d: List[_T1] = [a] + self._a: dict[str, _T1] = {} + self._b: tuple[_T1, ...] = (a, a, a) + self._c: tuple[_T1, _T1] = (a, a) + self._d: list[_T1] = [a] -class MyClass2(Generic[_T2]): +class Class2(Generic[_T2]): def __init__(self, a: _T2): - self._a: Dict[str, _T2] = {} - self._b: Tuple[_T2, ...] = (a, a, a) - self._c: Tuple[_T2, _T2] = (a, a) - self._d: List[_T2] = [a] + self._a: dict[str, _T2] = {} + self._b: tuple[_T2, ...] = (a, a, a) + self._c: tuple[_T2, _T2] = (a, a) + self._d: list[_T2] = [a] -class MyClass2A(Generic[_T2, _T2A]): +class Class2A(Generic[_T2, _T2A]): def __init__(self, a: _T2, b: _T2A): - self._a1: Dict[str, _T2A] = {"a": b} - self._a2: Dict[str, _T2] = {"a": a} - self._b: Tuple[_T2, ...] = (a, a, a) - self._c: Tuple[_T2, _T2] = (a, a) - self._d: List[_T2] = [a] + self._a1: dict[str, _T2A] = {"a": b} + self._a2: dict[str, _T2] = {"a": a} + self._b: tuple[_T2, ...] = (a, a, a) + self._c: tuple[_T2, _T2] = (a, a) + self._d: list[_T2] = [a] -class MyClass3(Generic[_T3]): +class Class3(Generic[_T3]): def __init__(self, a: _T3): - self._a: Dict[str, _T3] = {} - self._b: Tuple[_T3, ...] = (a, a, a) - self._c: Tuple[_T3, _T3] = (a, a) - self._d: List[_T3] = [a] + self._a: dict[str, _T3] = {} + self._b: tuple[_T3, ...] = (a, a, a) + self._c: tuple[_T3, _T3] = (a, a) + self._d: list[_T3] = [a] class Animal: diff --git a/packages/pyright-internal/src/tests/samples/genericTypes4.py b/packages/pyright-internal/src/tests/samples/genericTypes4.py index 45356d430..2f4ca372a 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes4.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes4.py @@ -1,6 +1,4 @@ -# This sample tests type inference and TypeVar matching. - -from typing import Union +# This sample tests bidirectional type inference and constraint solving. m = int(1) n = float(1.1) @@ -34,4 +32,4 @@ # This should generate an error because d should be # typed as dict[Any, str]. e2: float = e["x"] -e3: Union[float, str] = e["x"] +e3: float | str = e["x"] diff --git a/packages/pyright-internal/src/tests/samples/genericTypes40.py b/packages/pyright-internal/src/tests/samples/genericTypes40.py index fd9732423..e7328720a 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes40.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes40.py @@ -3,7 +3,7 @@ # pyright: strict -from typing import Callable, Dict, Literal, TypeVar +from typing import Callable, Literal, TypeVar def filter_fn(value: object): @@ -28,7 +28,7 @@ def func(v: Callable[[], _T]) -> _T: ... -x1: Dict[Animal, int] = func(lambda: {"cat": 0}) +x1: dict[Animal, int] = func(lambda: {"cat": 0}) def func1(factory: Callable[[], _T]) -> _T: diff --git a/packages/pyright-internal/src/tests/samples/genericTypes41.py b/packages/pyright-internal/src/tests/samples/genericTypes41.py index a5eec1a3b..dfd4f04a3 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes41.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes41.py @@ -3,14 +3,14 @@ from typing import TypeVar -_T1 = TypeVar("_T1", bound="P") -_T2 = TypeVar("_T2", bound="P") +_T1 = TypeVar("_T1", bound="ClassA") +_T2 = TypeVar("_T2", bound="ClassA") -class P: +class ClassA: def chain(self: _T1) -> _T1: ... -def func(p1: _T2) -> _T2: +def func1(p1: _T2) -> _T2: return p1.chain() diff --git a/packages/pyright-internal/src/tests/samples/genericTypes42.py b/packages/pyright-internal/src/tests/samples/genericTypes42.py index 6e2269675..6b7b08c55 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes42.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes42.py @@ -1,30 +1,30 @@ # This sample tests the instantiation of classes via a constructor # when the type of the class is a TypeVar. -from typing import Type, TypeVar +from typing import TypeVar -class Foo: +class ClassA: def __init__(self, a: int, b: str): pass -_TFoo = TypeVar("_TFoo", bound=Foo) +T_A = TypeVar("T_A", bound=ClassA) -def func1(cls: Type[_TFoo]) -> _TFoo: +def func1(cls: type[T_A]) -> T_A: # This should generate an error y = cls() x = cls(1, "") - reveal_type(x, expected_text="_TFoo@func1") + reveal_type(x, expected_text="T_A@func1") return x _T = TypeVar("_T") -def func2(cls: Type[_T]) -> _T: +def func2(cls: type[_T]) -> _T: y = cls(1, "") x = cls() diff --git a/packages/pyright-internal/src/tests/samples/genericTypes43.py b/packages/pyright-internal/src/tests/samples/genericTypes43.py index 845b58396..8cf936d67 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes43.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes43.py @@ -4,21 +4,21 @@ from typing import Generic, List, Type, TypeVar -class Foo: +class ClassA: pass -_TFoo = TypeVar("_TFoo", bound=Foo) -_TAnything = TypeVar("_TAnything") +T_A = TypeVar("T_A", bound=ClassA) +T = TypeVar("T") -class Bar(Generic[_TFoo, _TAnything]): +class ClassB(Generic[T_A, T]): def __init__( self, - p1: Type[_TFoo] = Foo, - p2: List[_TAnything] = [], + p1: Type[T_A] = ClassA, + p2: List[T] = [], # This should generate an error. - p3: List[_TFoo] = [2], - p4: List[_TAnything] = [2], + p3: List[T_A] = [2], + p4: List[T] = [2], ): pass diff --git a/packages/pyright-internal/src/tests/samples/genericTypes44.py b/packages/pyright-internal/src/tests/samples/genericTypes44.py index 00e84e742..2ced37343 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes44.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes44.py @@ -17,12 +17,12 @@ def __iter__(self) -> Iterator[T]: ... -def bar(it: Iterable[T]) -> Iterator[T]: - return ClassA(it) +def func1(val: Iterable[T]) -> Iterator[T]: + return ClassA(val) -def baz(it_of_its: Iterable[Iterable[T]]) -> Iterator[T]: - return chain(*it_of_its) +def func2(val: Iterable[Iterable[T]]) -> Iterator[T]: + return chain(*val) class ClassB(Generic[T]): diff --git a/packages/pyright-internal/src/tests/samples/genericTypes45.py b/packages/pyright-internal/src/tests/samples/genericTypes45.py index b59e480f3..26babfd7c 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes45.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes45.py @@ -9,35 +9,35 @@ _T2 = TypeVar("_T2") -class Foo(Generic[_T1]): +class ClassA(Generic[_T1]): @staticmethod - def func1(value: _T1) -> "Foo[_T1]": - return Foo[_T1]() + def func1(value: _T1) -> "ClassA[_T1]": + return ClassA[_T1]() @classmethod - def func2(cls, value: _T1) -> "Foo[_T1]": + def func2(cls, value: _T1) -> "ClassA[_T1]": return cls() -class FooSub1(Foo[_T2]): +class ClassASub1(ClassA[_T2]): pass -class FooSub2(Foo[int]): +class ClassASub2(ClassA[int]): pass def test1(val_str: str, val_int: int): - reveal_type(Foo.func1(val_str), expected_text="Foo[str]") - reveal_type(FooSub1.func1(val_str), expected_text="Foo[str]") - reveal_type(FooSub2.func1(val_int), expected_text="Foo[int]") + reveal_type(ClassA.func1(val_str), expected_text="ClassA[str]") + reveal_type(ClassASub1.func1(val_str), expected_text="ClassA[str]") + reveal_type(ClassASub2.func1(val_int), expected_text="ClassA[int]") # This should generate an error because the argument type doesn't match. - FooSub2.func1(val_str) + ClassASub2.func1(val_str) - reveal_type(Foo.func2(val_str), expected_text="Foo[str]") - reveal_type(FooSub1.func2(val_str), expected_text="Foo[str]") - reveal_type(FooSub2.func2(val_int), expected_text="Foo[int]") + reveal_type(ClassA.func2(val_str), expected_text="ClassA[str]") + reveal_type(ClassASub1.func2(val_str), expected_text="ClassA[str]") + reveal_type(ClassASub2.func2(val_int), expected_text="ClassA[int]") # This should generate an error because the argument type doesn't match. - FooSub2.func2(val_str) + ClassASub2.func2(val_str) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes56.py b/packages/pyright-internal/src/tests/samples/genericTypes56.py index 6c2d581ca..2d7386caa 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes56.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes56.py @@ -1,5 +1,4 @@ -# This sample tests that various types can be assigned -# to Type[Any]. +# This sample tests that various types can be assigned to Type[Any]. from typing import Any, Type, TypeVar diff --git a/packages/pyright-internal/src/tests/samples/genericTypes65.py b/packages/pyright-internal/src/tests/samples/genericTypes65.py index 3f92ae7fc..a9c732a90 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes65.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes65.py @@ -1,15 +1,30 @@ -# This sample tests the case where a constrained type variable -# includes a Literal[False] and Literal[True]. +# This sample tests for proper handling of bound TypeVars. -from typing import TypeVar, Generic, Literal +from typing import Generic, TypeVar -XOrY = TypeVar("XOrY", Literal[True], Literal[False]) +class A: + ... -class A(Generic[XOrY]): - pass +class B: + ... -class B(Generic[XOrY]): - def __init__(self, a: A[XOrY]): - self.a = a + +_T3 = TypeVar("_T3", bound=A | B) + + +class Registry(Generic[_T3]): + def __init__(self) -> None: + self.registry = {} + + @property + def registry(self) -> dict[str, _T3]: + ... + + @registry.setter + def registry(self, registry: dict[str, _T3]) -> None: + ... + + def get(self, _id: str) -> _T3 | None: + return self.registry.get(_id) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes79.py b/packages/pyright-internal/src/tests/samples/genericTypes79.py index 919555e66..db892a9b9 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes79.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes79.py @@ -1,5 +1,5 @@ # This sample tests the case that exercises some of the heuristics that -# determine whether TypeVar matching should retain a literal type. +# determine whether a solved TypeVar should retain a literal type. from typing import Callable, Dict, Generic, Literal, Tuple, TypeVar diff --git a/packages/pyright-internal/src/tests/samples/genericTypes8.py b/packages/pyright-internal/src/tests/samples/genericTypes8.py index 3b4bfc428..bce1d339c 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes8.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes8.py @@ -1,5 +1,5 @@ -# This sample tests the type checker's ability to do type var -# matching for callables, whose input parameters are contravariant. +# This sample tests the constraint solver's handling of callables +# whose input parameters are contravariant. from typing import TypeVar, Callable diff --git a/packages/pyright-internal/src/tests/samples/genericTypes89.py b/packages/pyright-internal/src/tests/samples/genericTypes89.py index 6361fa47c..0e45b63d9 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes89.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes89.py @@ -1,17 +1,15 @@ # This sample tests that a generic callable passed to a function cannot # be called with parameters that don't match the generic. -from typing import TypeVar, Callable, Any, Union +from typing import TypeVar, Callable, Any T = TypeVar("T") -def foo( - mkfoo: Callable[[T], list[T]], param1: T, param2: Any, param3: Union[Any, T] -) -> None: - mkfoo(param1) - mkfoo(param2) - mkfoo(param3) +def func1(cb: Callable[[T], list[T]], param1: T, param2: Any, param3: Any | T) -> None: + cb(param1) + cb(param2) + cb(param3) # This should generate an error. - mkfoo(0) + cb(0) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes90.py b/packages/pyright-internal/src/tests/samples/genericTypes90.py index a0196dce3..1d838a781 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes90.py +++ b/packages/pyright-internal/src/tests/samples/genericTypes90.py @@ -2,11 +2,12 @@ # evaluates correctly. # pyright: strict + from typing import TypeVar _T = TypeVar("_T") -def func(x: list[_T]) -> list[_T]: - result = func(x) +def func1(x: list[_T]) -> list[_T]: + result = func1(x) return result diff --git a/packages/pyright-internal/src/tests/samples/genericTypes33.py b/packages/pyright-internal/src/tests/samples/missingTypeArg1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes33.py rename to packages/pyright-internal/src/tests/samples/missingTypeArg1.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes7.py b/packages/pyright-internal/src/tests/samples/properties15.py similarity index 51% rename from packages/pyright-internal/src/tests/samples/genericTypes7.py rename to packages/pyright-internal/src/tests/samples/properties15.py index 4af0e693a..2556940d1 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes7.py +++ b/packages/pyright-internal/src/tests/samples/properties15.py @@ -5,20 +5,20 @@ T = TypeVar("T") -class Foo(Generic[T]): +class ClassA(Generic[T]): def __init__(self, bar: T): self._bar = bar @property - def bar(self) -> T: + def prop1(self) -> T: return self._bar - def bar_method(self) -> T: - reveal_type(self._bar, expected_text="T@Foo") + def method1(self) -> T: + reveal_type(self._bar, expected_text="T@ClassA") return self._bar -foo = Foo[int](3) +a = ClassA[int](3) -# This should work fine because foo.bar should be an int -foo.bar.bit_length() +# This should work fine because a.bar should be an int +a.prop1.bit_length() diff --git a/packages/pyright-internal/src/tests/samples/pseudoGeneric1.py b/packages/pyright-internal/src/tests/samples/pseudoGeneric1.py index 30e6c7243..ae086f42e 100644 --- a/packages/pyright-internal/src/tests/samples/pseudoGeneric1.py +++ b/packages/pyright-internal/src/tests/samples/pseudoGeneric1.py @@ -1,8 +1,6 @@ # This sample tests type checking scenarios related to "pseudo generic" # classes - those whose constructors are unannotated. -from typing import List - _DEFAULT_VALUE = object() @@ -15,9 +13,9 @@ def __init__( ... -a1: List[ClassA] = [ClassA("a", description="b")] -a2: List[ClassA] = [ClassA("c")] -a3: List[ClassA] = a1 + a2 +a1: list[ClassA] = [ClassA("a", description="b")] +a2: list[ClassA] = [ClassA("c")] +a3: list[ClassA] = a1 + a2 class ClassB: diff --git a/packages/pyright-internal/src/tests/samples/genericTypes20.py b/packages/pyright-internal/src/tests/samples/pseudoGeneric2.py similarity index 73% rename from packages/pyright-internal/src/tests/samples/genericTypes20.py rename to packages/pyright-internal/src/tests/samples/pseudoGeneric2.py index 61367fab1..17de559e8 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes20.py +++ b/packages/pyright-internal/src/tests/samples/pseudoGeneric2.py @@ -9,7 +9,7 @@ from logging import Handler, NOTSET -class Foo(Handler): +class ClassA(Handler): def __init__(self, a, b="hello", level=NOTSET): super().__init__(level) self._foo_a = a @@ -24,15 +24,15 @@ def value_b(self): return self._foo_b -foo1 = Foo(27) -reveal_type(foo1.value_a, expected_text="int") -reveal_type(foo1.value_b, expected_text="str") +a1 = ClassA(27) +reveal_type(a1.value_a, expected_text="int") +reveal_type(a1.value_b, expected_text="str") -foo2 = Foo("hello", "27") -reveal_type(foo2.value_a, expected_text="str") -reveal_type(foo2.value_b, expected_text="str") +a2 = ClassA("hello", "27") +reveal_type(a2.value_a, expected_text="str") +reveal_type(a2.value_b, expected_text="str") # This should generate an error because a pseudo-generic # class is not actually generic. -foo3: Foo[int, str, int] +a3: ClassA[int, str, int] diff --git a/packages/pyright-internal/src/tests/samples/genericTypes26.py b/packages/pyright-internal/src/tests/samples/pseudoGeneric3.py similarity index 73% rename from packages/pyright-internal/src/tests/samples/genericTypes26.py rename to packages/pyright-internal/src/tests/samples/pseudoGeneric3.py index 02d8fe32a..4cf33269a 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes26.py +++ b/packages/pyright-internal/src/tests/samples/pseudoGeneric3.py @@ -1,11 +1,11 @@ -# This sample is similar to genericTypes20.py in that it tests +# This sample is similar to pseudoGeneric2.py in that it tests # the case where the class's constructor is unannotated. This # particular case was causing an internal crash. import abc -class MyClass(metaclass=abc.ABCMeta): +class ClassB(metaclass=abc.ABCMeta): def __init__(self, value=None): self._cache = {"value": value} @@ -25,7 +25,6 @@ def __getattr__(self, attr): return self.__getattribute__(attr) -my_class = MyClass("test") -print(my_class.value) -del my_class.cache -print(my_class.value) +b1 = ClassB("test") +reveal_type(b1.value, expected_text="Unknown | Any | None") +del b1.cache diff --git a/packages/pyright-internal/src/tests/samples/genericTypes27.py b/packages/pyright-internal/src/tests/samples/typeAlias21.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes27.py rename to packages/pyright-internal/src/tests/samples/typeAlias21.py diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 8f5fce1ed..209302f51 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1074,6 +1074,12 @@ test('Properties14', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Properties15', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties15.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Operators1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators1.py']); @@ -1496,6 +1502,18 @@ test('PseudoGeneric1', () => { TestUtils.validateResults(analysisResults, 0); }); +test('PseudoGeneric2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['pseudoGeneric2.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + +test('PseudoGeneric3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['pseudoGeneric3.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('LiteralString1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['literalString1.py']); diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 7a0fcca34..434965b9a 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -415,70 +415,131 @@ test('NameBindings5', () => { TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes1.py']); +test('ConstrainedTypeVar1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar1.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 3); +}); + +test('ConstrainedTypeVar2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar2.py']); + + TestUtils.validateResults(analysisResults, 5); +}); + +test('ConstrainedTypeVar3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar3.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('ConstrainedTypeVar4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar4.py']); + + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes2.py']); +test('ConstrainedTypeVar5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar5.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes4.py']); +test('ConstrainedTypeVar6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar6.py']); - TestUtils.validateResults(analysisResults, 5); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes5.py']); +test('ConstrainedTypeVar7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar7.py']); TestUtils.validateResults(analysisResults, 2); }); -test('GenericTypes6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes6.py']); +test('ConstrainedTypeVar8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar8.py']); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes7.py']); +test('ConstrainedTypeVar9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar9.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes8.py']); +test('ConstrainedTypeVar10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar10.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + +test('ConstrainedTypeVar11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar11.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + +test('ConstrainedTypeVar12', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar12.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes9.py']); +test('ConstrainedTypeVar13', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar13.py']); TestUtils.validateResults(analysisResults, 5); }); -test('GenericTypes10', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes10.py']); +test('ConstrainedTypeVar14', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar14.py']); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes11', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes11.py']); +test('ConstrainedTypeVar15', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar15.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('ConstrainedTypeVar16', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar16.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes12', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes12.py']); +test('MissingTypeArg1', () => { + const configOptions = new ConfigOptions('.'); + // By default, reportMissingTypeArgument is disabled. + let analysisResults = TestUtils.typeAnalyzeSampleFiles(['missingTypeArg1.py']); TestUtils.validateResults(analysisResults, 1); + + // Turn on errors. + configOptions.diagnosticRuleSet.reportMissingTypeArgument = 'error'; + analysisResults = TestUtils.typeAnalyzeSampleFiles(['missingTypeArg1.py'], configOptions); + TestUtils.validateResults(analysisResults, 6); +}); + +test('GenericTypes4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes4.py']); + + TestUtils.validateResults(analysisResults, 5); +}); + +test('GenericTypes8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes8.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('GenericTypes11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes11.py']); + + TestUtils.validateResults(analysisResults, 0); }); test('GenericTypes13', () => { @@ -523,24 +584,12 @@ test('GenericTypes19', () => { TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes20', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes20.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - test('GenericTypes21', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes21.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes22', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes22.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('GenericTypes23', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes23.py']); @@ -553,24 +602,6 @@ test('GenericTypes24', () => { TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes25', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes25.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - -test('GenericTypes26', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes26.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - -test('GenericTypes27', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes27.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('GenericTypes28', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes28.py']); @@ -583,12 +614,6 @@ test('GenericTypes29', () => { TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes30', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes30.py']); - - TestUtils.validateResults(analysisResults, 3); -}); - test('GenericTypes31', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes31.py']); @@ -601,49 +626,18 @@ test('GenericTypes32', () => { TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes33', () => { - const configOptions = new ConfigOptions('.'); - - // By default, reportMissingTypeArgument is disabled. - let analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes33.py']); - TestUtils.validateResults(analysisResults, 1); - - // Turn on errors. - configOptions.diagnosticRuleSet.reportMissingTypeArgument = 'error'; - analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes33.py'], configOptions); - TestUtils.validateResults(analysisResults, 6); -}); - -test('GenericTypes34', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes34.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - test('GenericTypes35', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes35.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes36', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes36.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('GenericTypes37', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes37.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes38', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes38.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('GenericTypes39', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes39.py']); @@ -686,12 +680,6 @@ test('GenericTypes45', () => { TestUtils.validateResults(analysisResults, 2); }); -test('GenericTypes46', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes46.py']); - - TestUtils.validateResults(analysisResults, 2); -}); - test('GenericTypes47', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes47.py']); @@ -734,12 +722,6 @@ test('GenericTypes53', () => { TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes54', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes54.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('GenericTypes55', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes55.py']); @@ -788,12 +770,6 @@ test('GenericTypes62', () => { TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes63', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes63.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - test('GenericTypes64', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes64.py']); @@ -806,24 +782,6 @@ test('GenericTypes65', () => { TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes66', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes66.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - -test('GenericTypes67', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes67.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - -test('GenericTypes68', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes68.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('GenericTypes69', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes69.py']); @@ -872,12 +830,6 @@ test('GenericTypes75', () => { TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes76', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes76.py']); - - TestUtils.validateResults(analysisResults, 5); -}); - test('GenericTypes77', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes77.py']); @@ -902,24 +854,12 @@ test('GenericTypes80', () => { TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes81', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes81.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('GenericTypes82', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes82.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes83', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes83.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('GenericTypes84', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes84.py']); diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 606b965d7..712775ecc 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -633,6 +633,12 @@ test('TypeAlias20', () => { TestUtils.validateResults(analysisResults, 0); }); +test('TypeAlias21', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAlias21.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('RecursiveTypeAlias1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['recursiveTypeAlias1.py']); @@ -1439,6 +1445,12 @@ test('Constructor19', () => { TestUtils.validateResults(analysisResults, 1); }); +test('Constructor20', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor20.py']); + + TestUtils.validateResults(analysisResults, 2); +}); + test('InconsistentConstructor1', () => { const configOptions = new ConfigOptions('.'); diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 1c583fc6d..47c8866c1 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -739,6 +739,18 @@ test('Generic1', () => { TestUtils.validateResults(analysisResults, 9); }); +test('Generic2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generic2.py']); + + TestUtils.validateResults(analysisResults, 3); +}); + +test('Generic3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generic3.py']); + + TestUtils.validateResults(analysisResults, 3); +}); + test('Unions1', () => { const configOptions = new ConfigOptions('.'); @@ -1206,3 +1218,9 @@ test('Del1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['del1.py']); TestUtils.validateResults(analysisResults, 6); }); + +test('Del2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['del2.py']); + + TestUtils.validateResults(analysisResults, 2); +}); From 899799dcf7b0a9d6ba52de52fd956e0a28ae267e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 13:33:41 -0700 Subject: [PATCH 324/525] Finished cleaning up "genericTypesX.py" test files. --- ...ericTypes51.py => constrainedTypeVar17.py} | 0 .../{genericTypes42.py => constructor21.py} | 0 .../{genericTypes69.py => constructor22.py} | 0 .../{genericTypes70.py => constructor23.py} | 0 .../{genericTypes71.py => constructor24.py} | 0 .../{genericTypes75.py => constructor25.py} | 0 .../src/tests/samples/genericType1.py | 38 ++ .../{genericTypes48.py => genericType10.py} | 0 .../{genericTypes53.py => genericType11.py} | 0 .../{genericTypes55.py => genericType12.py} | 0 .../{genericTypes56.py => genericType13.py} | 0 .../{genericTypes61.py => genericType14.py} | 6 +- .../{genericTypes62.py => genericType15.py} | 0 .../{genericTypes72.py => genericType16.py} | 0 .../{genericTypes74.py => genericType17.py} | 0 .../{genericTypes78.py => genericType18.py} | 0 .../{genericTypes84.py => genericType19.py} | 0 .../{genericTypes13.py => genericType2.py} | 4 +- .../{genericTypes86.py => genericType20.py} | 0 .../{genericTypes88.py => genericType21.py} | 0 .../{genericTypes89.py => genericType22.py} | 0 .../{genericTypes90.py => genericType23.py} | 0 .../{genericTypes91.py => genericType24.py} | 0 .../{genericTypes92.py => genericType25.py} | 0 .../{genericTypes94.py => genericType26.py} | 0 .../{genericTypes96.py => genericType27.py} | 0 .../{genericTypes97.py => genericType28.py} | 0 .../{genericTypes98.py => genericType29.py} | 0 .../{genericTypes23.py => genericType3.py} | 0 .../{genericTypes99.py => genericType30.py} | 0 .../{genericTypes100.py => genericType31.py} | 0 .../{genericTypes102.py => genericType32.py} | 0 .../{genericTypes104.py => genericType33.py} | 0 .../{genericTypes106.py => genericType34.py} | 0 .../{genericTypes107.py => genericType35.py} | 0 .../{genericTypes109.py => genericType36.py} | 0 .../{genericTypes110.py => genericType37.py} | 0 .../{genericTypes111.py => genericType38.py} | 0 .../{genericTypes112.py => genericType39.py} | 0 .../{genericTypes24.py => genericType4.py} | 0 .../{genericTypes113.py => genericType40.py} | 0 .../{genericTypes114.py => genericType41.py} | 0 .../{genericTypes115.py => genericType42.py} | 0 .../{genericTypes116.py => genericType43.py} | 0 .../{genericTypes119.py => genericType44.py} | 0 .../{genericTypes29.py => genericType5.py} | 0 .../{genericTypes37.py => genericType6.py} | 0 .../{genericTypes39.py => genericType7.py} | 0 .../{genericTypes43.py => genericType8.py} | 0 .../{genericTypes45.py => genericType9.py} | 0 .../src/tests/samples/genericTypes4.py | 35 -- .../{genericTypes47.py => protocol43.py} | 0 .../samples/{genericTypes8.py => solver1.py} | 0 .../{genericTypes32.py => solver10.py} | 0 .../{genericTypes40.py => solver11.py} | 3 +- .../{genericTypes41.py => solver12.py} | 0 .../{genericTypes44.py => solver13.py} | 0 .../{genericTypes50.py => solver14.py} | 0 .../{genericTypes49.py => solver15.py} | 0 .../{genericTypes52.py => solver16.py} | 0 .../{genericTypes57.py => solver17.py} | 0 .../{genericTypes58.py => solver18.py} | 0 .../{genericTypes60.py => solver19.py} | 0 .../samples/{genericTypes11.py => solver2.py} | 0 .../{genericTypes64.py => solver20.py} | 0 .../{genericTypes65.py => solver21.py} | 0 .../{genericTypes82.py => solver22.py} | 0 .../{genericTypes85.py => solver23.py} | 0 .../{genericTypes93.py => solver24.py} | 0 .../{genericTypes95.py => solver25.py} | 0 .../samples/{genericTypes14.py => solver3.py} | 0 .../samples/{genericTypes15.py => solver4.py} | 0 .../samples/{genericTypes16.py => solver5.py} | 0 .../samples/{genericTypes17.py => solver6.py} | 0 .../samples/{genericTypes19.py => solver7.py} | 0 .../samples/{genericTypes21.py => solver8.py} | 4 +- .../samples/{genericTypes28.py => solver9.py} | 2 +- ...enericTypes35.py => solverHigherOrder1.py} | 0 ...enericTypes77.py => solverHigherOrder2.py} | 0 ...enericTypes87.py => solverHigherOrder3.py} | 0 ...nericTypes101.py => solverHigherOrder4.py} | 0 ...nericTypes105.py => solverHigherOrder5.py} | 0 ...nericTypes108.py => solverHigherOrder6.py} | 0 ...nericTypes118.py => solverHigherOrder7.py} | 0 .../{genericTypes79.py => solverLiteral1.py} | 0 .../{genericTypes117.py => solverLiteral2.py} | 0 .../{genericTypes31.py => solverScoring1.py} | 0 .../{genericTypes59.py => solverScoring2.py} | 0 .../{genericTypes73.py => solverScoring3.py} | 0 .../{genericTypes103.py => solverScoring4.py} | 0 .../{genericTypes80.py => solverUnknown1.py} | 0 .../{genericTypes18.py => typeAlias22.py} | 2 +- .../src/tests/typeEvaluator2.test.ts | 452 ++++++++---------- .../src/tests/typeEvaluator3.test.ts | 42 ++ 94 files changed, 295 insertions(+), 293 deletions(-) rename packages/pyright-internal/src/tests/samples/{genericTypes51.py => constrainedTypeVar17.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes42.py => constructor21.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes69.py => constructor22.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes70.py => constructor23.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes71.py => constructor24.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes75.py => constructor25.py} (100%) create mode 100644 packages/pyright-internal/src/tests/samples/genericType1.py rename packages/pyright-internal/src/tests/samples/{genericTypes48.py => genericType10.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes53.py => genericType11.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes55.py => genericType12.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes56.py => genericType13.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes61.py => genericType14.py} (74%) rename packages/pyright-internal/src/tests/samples/{genericTypes62.py => genericType15.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes72.py => genericType16.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes74.py => genericType17.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes78.py => genericType18.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes84.py => genericType19.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes13.py => genericType2.py} (80%) rename packages/pyright-internal/src/tests/samples/{genericTypes86.py => genericType20.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes88.py => genericType21.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes89.py => genericType22.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes90.py => genericType23.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes91.py => genericType24.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes92.py => genericType25.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes94.py => genericType26.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes96.py => genericType27.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes97.py => genericType28.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes98.py => genericType29.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes23.py => genericType3.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes99.py => genericType30.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes100.py => genericType31.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes102.py => genericType32.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes104.py => genericType33.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes106.py => genericType34.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes107.py => genericType35.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes109.py => genericType36.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes110.py => genericType37.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes111.py => genericType38.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes112.py => genericType39.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes24.py => genericType4.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes113.py => genericType40.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes114.py => genericType41.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes115.py => genericType42.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes116.py => genericType43.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes119.py => genericType44.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes29.py => genericType5.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes37.py => genericType6.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes39.py => genericType7.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes43.py => genericType8.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes45.py => genericType9.py} (100%) delete mode 100644 packages/pyright-internal/src/tests/samples/genericTypes4.py rename packages/pyright-internal/src/tests/samples/{genericTypes47.py => protocol43.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes8.py => solver1.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes32.py => solver10.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes40.py => solver11.py} (86%) rename packages/pyright-internal/src/tests/samples/{genericTypes41.py => solver12.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes44.py => solver13.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes50.py => solver14.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes49.py => solver15.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes52.py => solver16.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes57.py => solver17.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes58.py => solver18.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes60.py => solver19.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes11.py => solver2.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes64.py => solver20.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes65.py => solver21.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes82.py => solver22.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes85.py => solver23.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes93.py => solver24.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes95.py => solver25.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes14.py => solver3.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes15.py => solver4.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes16.py => solver5.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes17.py => solver6.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes19.py => solver7.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes21.py => solver8.py} (79%) rename packages/pyright-internal/src/tests/samples/{genericTypes28.py => solver9.py} (95%) rename packages/pyright-internal/src/tests/samples/{genericTypes35.py => solverHigherOrder1.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes77.py => solverHigherOrder2.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes87.py => solverHigherOrder3.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes101.py => solverHigherOrder4.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes105.py => solverHigherOrder5.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes108.py => solverHigherOrder6.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes118.py => solverHigherOrder7.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes79.py => solverLiteral1.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes117.py => solverLiteral2.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes31.py => solverScoring1.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes59.py => solverScoring2.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes73.py => solverScoring3.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes103.py => solverScoring4.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes80.py => solverUnknown1.py} (100%) rename packages/pyright-internal/src/tests/samples/{genericTypes18.py => typeAlias22.py} (96%) diff --git a/packages/pyright-internal/src/tests/samples/genericTypes51.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar17.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes51.py rename to packages/pyright-internal/src/tests/samples/constrainedTypeVar17.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes42.py b/packages/pyright-internal/src/tests/samples/constructor21.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes42.py rename to packages/pyright-internal/src/tests/samples/constructor21.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes69.py b/packages/pyright-internal/src/tests/samples/constructor22.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes69.py rename to packages/pyright-internal/src/tests/samples/constructor22.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes70.py b/packages/pyright-internal/src/tests/samples/constructor23.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes70.py rename to packages/pyright-internal/src/tests/samples/constructor23.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes71.py b/packages/pyright-internal/src/tests/samples/constructor24.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes71.py rename to packages/pyright-internal/src/tests/samples/constructor24.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes75.py b/packages/pyright-internal/src/tests/samples/constructor25.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes75.py rename to packages/pyright-internal/src/tests/samples/constructor25.py diff --git a/packages/pyright-internal/src/tests/samples/genericType1.py b/packages/pyright-internal/src/tests/samples/genericType1.py new file mode 100644 index 000000000..9cbfa38e0 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericType1.py @@ -0,0 +1,38 @@ +# This sample tests bidirectional type inference and constraint solving. + +m = int(1) +n = float(1.1) +p = "hello" + +a = dict(x=m, y=m) +a1: int = a["x"] + +b = dict(x=n, y=n) +reveal_type(b, expected_text="dict[str, float]") + +# This should generate an error. +b1: int = b["x"] +b2: float = b["x"] + +c = dict(x=m, y=n) +reveal_type(c, expected_text="dict[str, float]") + +# This should generate an error. +c1: int = c["x"] +c2: float = c["x"] + +d = dict(x=p, y=p) +reveal_type(d, expected_text="dict[str, str]") + +# This should generate an error. +d1: float = d["x"] +d2: str = d["x"] + +e = dict(x=n, y=p) +reveal_type(e, expected_text="dict[str, float | str]") + +# This should generate an error. +e1: str = e["x"] +# This should generate an error. +e2: float = e["x"] +e3: float | str = e["x"] diff --git a/packages/pyright-internal/src/tests/samples/genericTypes48.py b/packages/pyright-internal/src/tests/samples/genericType10.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes48.py rename to packages/pyright-internal/src/tests/samples/genericType10.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes53.py b/packages/pyright-internal/src/tests/samples/genericType11.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes53.py rename to packages/pyright-internal/src/tests/samples/genericType11.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes55.py b/packages/pyright-internal/src/tests/samples/genericType12.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes55.py rename to packages/pyright-internal/src/tests/samples/genericType12.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes56.py b/packages/pyright-internal/src/tests/samples/genericType13.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes56.py rename to packages/pyright-internal/src/tests/samples/genericType13.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes61.py b/packages/pyright-internal/src/tests/samples/genericType14.py similarity index 74% rename from packages/pyright-internal/src/tests/samples/genericTypes61.py rename to packages/pyright-internal/src/tests/samples/genericType14.py index a70991613..833c35641 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes61.py +++ b/packages/pyright-internal/src/tests/samples/genericType14.py @@ -1,7 +1,7 @@ # This sample tests a case where Type[X] and X are used within the # same class declaration. -from typing import Dict, Generic, Type, TypeVar +from typing import Generic, TypeVar from dataclasses import dataclass, field K = TypeVar("K") @@ -11,7 +11,7 @@ @dataclass class Registry(Generic[K, V]): key: K - value: Dict[str, V] = field(default_factory=dict) + value: dict[str, V] = field(default_factory=dict) class Base: @@ -21,7 +21,7 @@ class Base: BaseType = TypeVar("BaseType", bound=Base) -class BaseTypeRegistry(Registry[Type[BaseType], BaseType]): +class BaseTypeRegistry(Registry[type[BaseType], BaseType]): pass diff --git a/packages/pyright-internal/src/tests/samples/genericTypes62.py b/packages/pyright-internal/src/tests/samples/genericType15.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes62.py rename to packages/pyright-internal/src/tests/samples/genericType15.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes72.py b/packages/pyright-internal/src/tests/samples/genericType16.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes72.py rename to packages/pyright-internal/src/tests/samples/genericType16.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes74.py b/packages/pyright-internal/src/tests/samples/genericType17.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes74.py rename to packages/pyright-internal/src/tests/samples/genericType17.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes78.py b/packages/pyright-internal/src/tests/samples/genericType18.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes78.py rename to packages/pyright-internal/src/tests/samples/genericType18.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes84.py b/packages/pyright-internal/src/tests/samples/genericType19.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes84.py rename to packages/pyright-internal/src/tests/samples/genericType19.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes13.py b/packages/pyright-internal/src/tests/samples/genericType2.py similarity index 80% rename from packages/pyright-internal/src/tests/samples/genericTypes13.py rename to packages/pyright-internal/src/tests/samples/genericType2.py index 56b10a48a..de60ce33f 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes13.py +++ b/packages/pyright-internal/src/tests/samples/genericType2.py @@ -19,9 +19,9 @@ class C(A): _T_A = TypeVar("_T_A", bound=A) -def testFunc(value: dict[str, _T_A]) -> _T_A: +def func1(value: dict[str, _T_A]) -> _T_A: return value["a"] -x = testFunc({"b": B(), "c": C()}) +x = func1({"b": B(), "c": C()}) reveal_type(x, expected_text="B | C") diff --git a/packages/pyright-internal/src/tests/samples/genericTypes86.py b/packages/pyright-internal/src/tests/samples/genericType20.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes86.py rename to packages/pyright-internal/src/tests/samples/genericType20.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes88.py b/packages/pyright-internal/src/tests/samples/genericType21.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes88.py rename to packages/pyright-internal/src/tests/samples/genericType21.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes89.py b/packages/pyright-internal/src/tests/samples/genericType22.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes89.py rename to packages/pyright-internal/src/tests/samples/genericType22.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes90.py b/packages/pyright-internal/src/tests/samples/genericType23.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes90.py rename to packages/pyright-internal/src/tests/samples/genericType23.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes91.py b/packages/pyright-internal/src/tests/samples/genericType24.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes91.py rename to packages/pyright-internal/src/tests/samples/genericType24.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes92.py b/packages/pyright-internal/src/tests/samples/genericType25.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes92.py rename to packages/pyright-internal/src/tests/samples/genericType25.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes94.py b/packages/pyright-internal/src/tests/samples/genericType26.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes94.py rename to packages/pyright-internal/src/tests/samples/genericType26.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes96.py b/packages/pyright-internal/src/tests/samples/genericType27.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes96.py rename to packages/pyright-internal/src/tests/samples/genericType27.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes97.py b/packages/pyright-internal/src/tests/samples/genericType28.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes97.py rename to packages/pyright-internal/src/tests/samples/genericType28.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes98.py b/packages/pyright-internal/src/tests/samples/genericType29.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes98.py rename to packages/pyright-internal/src/tests/samples/genericType29.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes23.py b/packages/pyright-internal/src/tests/samples/genericType3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes23.py rename to packages/pyright-internal/src/tests/samples/genericType3.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes99.py b/packages/pyright-internal/src/tests/samples/genericType30.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes99.py rename to packages/pyright-internal/src/tests/samples/genericType30.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes100.py b/packages/pyright-internal/src/tests/samples/genericType31.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes100.py rename to packages/pyright-internal/src/tests/samples/genericType31.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes102.py b/packages/pyright-internal/src/tests/samples/genericType32.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes102.py rename to packages/pyright-internal/src/tests/samples/genericType32.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes104.py b/packages/pyright-internal/src/tests/samples/genericType33.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes104.py rename to packages/pyright-internal/src/tests/samples/genericType33.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes106.py b/packages/pyright-internal/src/tests/samples/genericType34.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes106.py rename to packages/pyright-internal/src/tests/samples/genericType34.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes107.py b/packages/pyright-internal/src/tests/samples/genericType35.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes107.py rename to packages/pyright-internal/src/tests/samples/genericType35.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes109.py b/packages/pyright-internal/src/tests/samples/genericType36.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes109.py rename to packages/pyright-internal/src/tests/samples/genericType36.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes110.py b/packages/pyright-internal/src/tests/samples/genericType37.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes110.py rename to packages/pyright-internal/src/tests/samples/genericType37.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes111.py b/packages/pyright-internal/src/tests/samples/genericType38.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes111.py rename to packages/pyright-internal/src/tests/samples/genericType38.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes112.py b/packages/pyright-internal/src/tests/samples/genericType39.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes112.py rename to packages/pyright-internal/src/tests/samples/genericType39.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes24.py b/packages/pyright-internal/src/tests/samples/genericType4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes24.py rename to packages/pyright-internal/src/tests/samples/genericType4.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes113.py b/packages/pyright-internal/src/tests/samples/genericType40.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes113.py rename to packages/pyright-internal/src/tests/samples/genericType40.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes114.py b/packages/pyright-internal/src/tests/samples/genericType41.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes114.py rename to packages/pyright-internal/src/tests/samples/genericType41.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes115.py b/packages/pyright-internal/src/tests/samples/genericType42.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes115.py rename to packages/pyright-internal/src/tests/samples/genericType42.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes116.py b/packages/pyright-internal/src/tests/samples/genericType43.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes116.py rename to packages/pyright-internal/src/tests/samples/genericType43.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes119.py b/packages/pyright-internal/src/tests/samples/genericType44.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes119.py rename to packages/pyright-internal/src/tests/samples/genericType44.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes29.py b/packages/pyright-internal/src/tests/samples/genericType5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes29.py rename to packages/pyright-internal/src/tests/samples/genericType5.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes37.py b/packages/pyright-internal/src/tests/samples/genericType6.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes37.py rename to packages/pyright-internal/src/tests/samples/genericType6.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes39.py b/packages/pyright-internal/src/tests/samples/genericType7.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes39.py rename to packages/pyright-internal/src/tests/samples/genericType7.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes43.py b/packages/pyright-internal/src/tests/samples/genericType8.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes43.py rename to packages/pyright-internal/src/tests/samples/genericType8.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes45.py b/packages/pyright-internal/src/tests/samples/genericType9.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes45.py rename to packages/pyright-internal/src/tests/samples/genericType9.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes4.py b/packages/pyright-internal/src/tests/samples/genericTypes4.py deleted file mode 100644 index 2f4ca372a..000000000 --- a/packages/pyright-internal/src/tests/samples/genericTypes4.py +++ /dev/null @@ -1,35 +0,0 @@ -# This sample tests bidirectional type inference and constraint solving. - -m = int(1) -n = float(1.1) -p = "hello" - -a = dict(x=m, y=m) -a1: int = a["x"] - -b = dict(x=n, y=n) -# This should generate an error because b should be -# typed as dict[Any, float], and b["x"] is a float. -b1: int = b["x"] -b2: float = b["x"] - -c = dict(x=m, y=n) -# This should generate an error because d should be -# typed as dict[Any, float]. -c1: int = c["x"] -c2: float = c["x"] - -d = dict(x=p, y=p) -# This should generate an error because d should be -# typed as dict[Any, str]. -d1: float = d["x"] -d2: str = d["x"] - -e = dict(x=n, y=p) -# This should generate an error because d should be -# typed as dict[Any, str]. -e1: str = e["x"] -# This should generate an error because d should be -# typed as dict[Any, str]. -e2: float = e["x"] -e3: float | str = e["x"] diff --git a/packages/pyright-internal/src/tests/samples/genericTypes47.py b/packages/pyright-internal/src/tests/samples/protocol43.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes47.py rename to packages/pyright-internal/src/tests/samples/protocol43.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes8.py b/packages/pyright-internal/src/tests/samples/solver1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes8.py rename to packages/pyright-internal/src/tests/samples/solver1.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes32.py b/packages/pyright-internal/src/tests/samples/solver10.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes32.py rename to packages/pyright-internal/src/tests/samples/solver10.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes40.py b/packages/pyright-internal/src/tests/samples/solver11.py similarity index 86% rename from packages/pyright-internal/src/tests/samples/genericTypes40.py rename to packages/pyright-internal/src/tests/samples/solver11.py index e7328720a..a6e539831 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes40.py +++ b/packages/pyright-internal/src/tests/samples/solver11.py @@ -1,5 +1,4 @@ -# This sample tests the type variable solving process when a -# callable type is involved. +# This sample tests the constraint solver when a callable type is involved. # pyright: strict diff --git a/packages/pyright-internal/src/tests/samples/genericTypes41.py b/packages/pyright-internal/src/tests/samples/solver12.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes41.py rename to packages/pyright-internal/src/tests/samples/solver12.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes44.py b/packages/pyright-internal/src/tests/samples/solver13.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes44.py rename to packages/pyright-internal/src/tests/samples/solver13.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes50.py b/packages/pyright-internal/src/tests/samples/solver14.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes50.py rename to packages/pyright-internal/src/tests/samples/solver14.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes49.py b/packages/pyright-internal/src/tests/samples/solver15.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes49.py rename to packages/pyright-internal/src/tests/samples/solver15.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes52.py b/packages/pyright-internal/src/tests/samples/solver16.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes52.py rename to packages/pyright-internal/src/tests/samples/solver16.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes57.py b/packages/pyright-internal/src/tests/samples/solver17.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes57.py rename to packages/pyright-internal/src/tests/samples/solver17.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes58.py b/packages/pyright-internal/src/tests/samples/solver18.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes58.py rename to packages/pyright-internal/src/tests/samples/solver18.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes60.py b/packages/pyright-internal/src/tests/samples/solver19.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes60.py rename to packages/pyright-internal/src/tests/samples/solver19.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes11.py b/packages/pyright-internal/src/tests/samples/solver2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes11.py rename to packages/pyright-internal/src/tests/samples/solver2.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes64.py b/packages/pyright-internal/src/tests/samples/solver20.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes64.py rename to packages/pyright-internal/src/tests/samples/solver20.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes65.py b/packages/pyright-internal/src/tests/samples/solver21.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes65.py rename to packages/pyright-internal/src/tests/samples/solver21.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes82.py b/packages/pyright-internal/src/tests/samples/solver22.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes82.py rename to packages/pyright-internal/src/tests/samples/solver22.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes85.py b/packages/pyright-internal/src/tests/samples/solver23.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes85.py rename to packages/pyright-internal/src/tests/samples/solver23.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes93.py b/packages/pyright-internal/src/tests/samples/solver24.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes93.py rename to packages/pyright-internal/src/tests/samples/solver24.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes95.py b/packages/pyright-internal/src/tests/samples/solver25.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes95.py rename to packages/pyright-internal/src/tests/samples/solver25.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes14.py b/packages/pyright-internal/src/tests/samples/solver3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes14.py rename to packages/pyright-internal/src/tests/samples/solver3.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes15.py b/packages/pyright-internal/src/tests/samples/solver4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes15.py rename to packages/pyright-internal/src/tests/samples/solver4.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes16.py b/packages/pyright-internal/src/tests/samples/solver5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes16.py rename to packages/pyright-internal/src/tests/samples/solver5.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes17.py b/packages/pyright-internal/src/tests/samples/solver6.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes17.py rename to packages/pyright-internal/src/tests/samples/solver6.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes19.py b/packages/pyright-internal/src/tests/samples/solver7.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes19.py rename to packages/pyright-internal/src/tests/samples/solver7.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes21.py b/packages/pyright-internal/src/tests/samples/solver8.py similarity index 79% rename from packages/pyright-internal/src/tests/samples/genericTypes21.py rename to packages/pyright-internal/src/tests/samples/solver8.py index cfdbe026d..c37df14e7 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes21.py +++ b/packages/pyright-internal/src/tests/samples/solver8.py @@ -1,5 +1,5 @@ -# This sample tests the special-case handling of Optional[T] within -# a function. +# This sample tests the constraint solver's special-case handling of +# Optional[T] within a function. from typing import Optional, TypeVar diff --git a/packages/pyright-internal/src/tests/samples/genericTypes28.py b/packages/pyright-internal/src/tests/samples/solver9.py similarity index 95% rename from packages/pyright-internal/src/tests/samples/genericTypes28.py rename to packages/pyright-internal/src/tests/samples/solver9.py index 8b0c0bb76..2885e2463 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes28.py +++ b/packages/pyright-internal/src/tests/samples/solver9.py @@ -1,5 +1,5 @@ # This sample tests that Optional types can be matched -# to Type[T] expressions. +# to Type[T] expressions by the constraint solver. from typing import Callable, Generic, Optional, Type, TypeVar diff --git a/packages/pyright-internal/src/tests/samples/genericTypes35.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes35.py rename to packages/pyright-internal/src/tests/samples/solverHigherOrder1.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes77.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes77.py rename to packages/pyright-internal/src/tests/samples/solverHigherOrder2.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes87.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes87.py rename to packages/pyright-internal/src/tests/samples/solverHigherOrder3.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes101.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes101.py rename to packages/pyright-internal/src/tests/samples/solverHigherOrder4.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes105.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes105.py rename to packages/pyright-internal/src/tests/samples/solverHigherOrder5.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes108.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder6.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes108.py rename to packages/pyright-internal/src/tests/samples/solverHigherOrder6.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes118.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder7.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes118.py rename to packages/pyright-internal/src/tests/samples/solverHigherOrder7.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes79.py b/packages/pyright-internal/src/tests/samples/solverLiteral1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes79.py rename to packages/pyright-internal/src/tests/samples/solverLiteral1.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes117.py b/packages/pyright-internal/src/tests/samples/solverLiteral2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes117.py rename to packages/pyright-internal/src/tests/samples/solverLiteral2.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes31.py b/packages/pyright-internal/src/tests/samples/solverScoring1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes31.py rename to packages/pyright-internal/src/tests/samples/solverScoring1.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes59.py b/packages/pyright-internal/src/tests/samples/solverScoring2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes59.py rename to packages/pyright-internal/src/tests/samples/solverScoring2.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes73.py b/packages/pyright-internal/src/tests/samples/solverScoring3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes73.py rename to packages/pyright-internal/src/tests/samples/solverScoring3.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes103.py b/packages/pyright-internal/src/tests/samples/solverScoring4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes103.py rename to packages/pyright-internal/src/tests/samples/solverScoring4.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes80.py b/packages/pyright-internal/src/tests/samples/solverUnknown1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/genericTypes80.py rename to packages/pyright-internal/src/tests/samples/solverUnknown1.py diff --git a/packages/pyright-internal/src/tests/samples/genericTypes18.py b/packages/pyright-internal/src/tests/samples/typeAlias22.py similarity index 96% rename from packages/pyright-internal/src/tests/samples/genericTypes18.py rename to packages/pyright-internal/src/tests/samples/typeAlias22.py index 39466e64a..8b203355c 100644 --- a/packages/pyright-internal/src/tests/samples/genericTypes18.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias22.py @@ -1,4 +1,4 @@ -# This sample tests handling of user-defined type aliases. +# This sample tests handling of type aliases. from datetime import datetime from typing import Any, Callable, Generic, TypeVar, Union diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 434965b9a..1a65b9f8f 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -511,6 +511,12 @@ test('ConstrainedTypeVar16', () => { TestUtils.validateResults(analysisResults, 0); }); +test('ConstrainedTypeVar17', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constrainedTypeVar17.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('MissingTypeArg1', () => { const configOptions = new ConfigOptions('.'); @@ -524,554 +530,500 @@ test('MissingTypeArg1', () => { TestUtils.validateResults(analysisResults, 6); }); -test('GenericTypes4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes4.py']); - - TestUtils.validateResults(analysisResults, 5); -}); - -test('GenericTypes8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes8.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - -test('GenericTypes11', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes11.py']); +test('Solver1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver1.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes13', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes13.py']); +test('Solver2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver2.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes14', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes14.py']); +test('Solver3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver3.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes15', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes15.py']); +test('Solver4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes16', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes16.py']); +test('Solver5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver5.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes17', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes17.py']); +test('Solver6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver6.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes18', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes18.py']); - - TestUtils.validateResults(analysisResults, 6); -}); - -test('GenericTypes19', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes19.py']); +test('Solver7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver7.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes21', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes21.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - -test('GenericTypes23', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes23.py']); - - TestUtils.validateResults(analysisResults, 2); -}); - -test('GenericTypes24', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes24.py']); +test('Solver8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver8.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes28', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes28.py']); +test('Solver9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver9.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes29', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes29.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - -test('GenericTypes31', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes31.py']); +test('Solver10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver10.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes32', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes32.py']); +test('Solver11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver11.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes35', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes35.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - -test('GenericTypes37', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes37.py']); +test('Solver12', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver12.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes39', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes39.py']); +test('Solver13', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver13.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes40', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes40.py']); +test('Solver14', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver14.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes41', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes41.py']); +test('Solver15', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver15.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes42', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes42.py']); +test('Solver16', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver16.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes43', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes43.py']); +test('Solver17', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver17.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes44', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes44.py']); +test('Solver18', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver18.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes45', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes45.py']); +test('Solver19', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver19.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes47', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes47.py']); +test('Solver20', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver20.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes48', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes48.py']); +test('Solver21', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver21.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes49', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes49.py']); +test('Solver22', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver22.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes50', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes50.py']); +test('Solver23', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver23.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 2); }); -test('GenericTypes51', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes51.py']); +test('Solver24', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver24.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes52', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes52.py']); +test('Solver25', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver25.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes53', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes53.py']); +test('SolverScoring1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverScoring1.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes55', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes55.py']); +test('SolverScoring2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverScoring2.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 2); }); -test('GenericTypes56', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes56.py']); +test('SolverScoring3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverScoring3.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes57', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes57.py']); +test('SolverScoring4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverScoring4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes58', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes58.py']); +test('SolverHigherOrder1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverHigherOrder1.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes59', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes59.py']); +test('SolverHigherOrder2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverHigherOrder2.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes60', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes60.py']); +test('SolverHigherOrder3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverHigherOrder3.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes61', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes61.py']); +test('SolverHigherOrder4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverHigherOrder4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes62', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes62.py']); +test('SolverHigherOrder5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverHigherOrder5.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes64', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes64.py']); +test('SolverHigherOrder6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverHigherOrder6.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes65', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes65.py']); +test('SolverHigherOrder7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverHigherOrder7.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes69', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes69.py']); +test('SolverLiteral1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverLiteral1.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes70', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes70.py']); +test('SolverLiteral2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverLiteral2.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes71', () => { - const configOptions = new ConfigOptions('.'); - - configOptions.diagnosticRuleSet.strictParameterNoneValue = false; - let analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes71.py'], configOptions); - TestUtils.validateResults(analysisResults, 4); +test('SolverUnknown1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverUnknown1.py']); - configOptions.diagnosticRuleSet.strictParameterNoneValue = true; - analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes71.py'], configOptions); - TestUtils.validateResults(analysisResults, 5); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes72', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes72.py']); +test('GenericType1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType1.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 5); }); -test('GenericTypes73', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes73.py']); +test('GenericType2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType2.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes74', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes74.py']); +test('GenericType3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType3.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 2); }); -test('GenericTypes75', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes75.py']); +test('GenericType4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType4.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes77', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes77.py']); +test('GenericType5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType5.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes78', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes78.py']); +test('GenericType6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType6.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes79', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes79.py']); +test('GenericType7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType7.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 2); }); -test('GenericTypes80', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes80.py']); +test('GenericType8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType8.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes82', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes82.py']); +test('GenericType9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType9.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 2); }); -test('GenericTypes84', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes84.py']); +test('GenericType10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType10.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes85', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes85.py']); +test('GenericType11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType11.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes86', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes86.py']); +test('GenericType12', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType12.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes87', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes87.py']); +test('GenericType13', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType13.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes88', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes88.py']); +test('GenericType14', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType14.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes89', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes89.py']); +test('GenericType15', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType15.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes90', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes90.py']); +test('GenericType16', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType16.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes91', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes91.py']); +test('GenericType17', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType17.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes92', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes92.py']); +test('GenericType18', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType18.py']); TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes93', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes93.py']); +test('GenericType19', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType19.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes94', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes94.py']); +test('GenericType20', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType20.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes95', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes95.py']); +test('GenericType21', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType21.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes96', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes96.py']); +test('GenericType22', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType22.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes97', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes97.py']); +test('GenericType23', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType23.py']); - TestUtils.validateResults(analysisResults, 18); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes98', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes98.py']); +test('GenericType24', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType24.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes99', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes99.py']); +test('GenericType25', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType25.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes100', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes100.py']); +test('GenericType26', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType26.py']); TestUtils.validateResults(analysisResults, 2); }); -test('GenericTypes101', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes101.py']); +test('GenericType27', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType27.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes102', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes102.py']); +test('GenericType28', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType28.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 18); }); -test('GenericTypes103', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes103.py']); +test('GenericType29', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType29.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes104', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes104.py']); - - TestUtils.validateResults(analysisResults, 1); -}); - -test('GenericTypes105', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes105.py']); +test('GenericType30', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType30.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes106', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes106.py']); +test('GenericType31', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType31.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 2); }); -test('GenericTypes107', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes107.py']); +test('GenericType32', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType32.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes108', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes108.py']); +test('GenericType33', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType33.py']); - TestUtils.validateResults(analysisResults, 0); + TestUtils.validateResults(analysisResults, 1); }); -test('GenericTypes109', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes109.py']); +test('GenericType34', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType34.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes110', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes110.py']); +test('GenericType35', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType35.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes111', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes111.py']); +test('GenericType36', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType36.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes112', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes112.py']); +test('GenericType37', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType37.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes113', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes113.py']); +test('GenericType38', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType38.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes114', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes114.py']); +test('GenericType39', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType39.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes115', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes115.py']); +test('GenericType40', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType40.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes116', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes116.py']); +test('GenericType41', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType41.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes117', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes117.py']); +test('GenericType42', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType42.py']); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes118', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes118.py']); +test('GenericType43', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType43.py']); TestUtils.validateResults(analysisResults, 0); }); -test('GenericTypes119', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericTypes119.py']); +test('GenericType44', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType44.py']); TestUtils.validateResults(analysisResults, 0); }); @@ -1332,6 +1284,12 @@ test('Protocol42', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Protocol43', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol43.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('TypedDict1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDict1.py']); diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 712775ecc..77e012302 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -639,6 +639,12 @@ test('TypeAlias21', () => { TestUtils.validateResults(analysisResults, 0); }); +test('TypeAlias22', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAlias22.py']); + + TestUtils.validateResults(analysisResults, 6); +}); + test('RecursiveTypeAlias1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['recursiveTypeAlias1.py']); @@ -1451,6 +1457,42 @@ test('Constructor20', () => { TestUtils.validateResults(analysisResults, 2); }); +test('Constructor21', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor21.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + +test('Constructor22', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor22.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('Constructor23', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor23.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('Constructor24', () => { + const configOptions = new ConfigOptions('.'); + + configOptions.diagnosticRuleSet.strictParameterNoneValue = false; + let analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor24.py'], configOptions); + TestUtils.validateResults(analysisResults, 4); + + configOptions.diagnosticRuleSet.strictParameterNoneValue = true; + analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor24.py'], configOptions); + TestUtils.validateResults(analysisResults, 5); +}); + +test('Constructor25', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor25.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + test('InconsistentConstructor1', () => { const configOptions = new ConfigOptions('.'); From 0c5c7b65eff2cbcda2d3fa8761a1b485b67ee619 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 14:23:50 -0700 Subject: [PATCH 325/525] Next batch of text case cleanup. --- ...istComprehension1.py => comprehension1.py} | 8 +- ...istComprehension2.py => comprehension2.py} | 0 ...istComprehension3.py => comprehension3.py} | 0 ...istComprehension4.py => comprehension4.py} | 0 ...istComprehension5.py => comprehension5.py} | 0 ...istComprehension6.py => comprehension6.py} | 0 ...istComprehension7.py => comprehension7.py} | 0 ...istComprehension8.py => comprehension8.py} | 4 +- ...istComprehension9.py => comprehension9.py} | 0 .../src/tests/samples/hashability1.py | 4 + .../src/tests/samples/import16.py | 1 - .../src/tests/samples/inferredTypes2.py | 2 +- .../src/tests/samples/isinstance1.py | 61 +-- .../src/tests/samples/isinstance5.py | 8 - .../src/tests/samples/lambda1.py | 4 +- .../src/tests/samples/lambda4.py | 6 +- .../src/tests/samples/lambda7.py | 1 + .../src/tests/samples/list1.py | 29 +- .../src/tests/samples/list2.py | 1 + .../src/tests/samples/list3.py | 1 + .../src/tests/samples/literalString1.py | 1 + .../src/tests/samples/{loops1.py => loop1.py} | 26 +- .../tests/samples/{loops10.py => loop10.py} | 0 .../tests/samples/{loops11.py => loop11.py} | 0 .../tests/samples/{loops12.py => loop12.py} | 2 +- .../tests/samples/{loops13.py => loop13.py} | 0 .../tests/samples/{loops14.py => loop14.py} | 4 +- .../tests/samples/{loops15.py => loop15.py} | 0 .../tests/samples/{loops16.py => loop16.py} | 0 .../tests/samples/{loops17.py => loop17.py} | 0 .../tests/samples/{loops18.py => loop18.py} | 0 .../tests/samples/{loops19.py => loop19.py} | 0 .../src/tests/samples/{loops2.py => loop2.py} | 4 +- .../tests/samples/{loops20.py => loop20.py} | 0 .../tests/samples/{loops21.py => loop21.py} | 0 .../tests/samples/{loops22.py => loop22.py} | 0 .../tests/samples/{loops23.py => loop23.py} | 0 .../tests/samples/{loops24.py => loop24.py} | 0 .../tests/samples/{loops25.py => loop25.py} | 0 .../tests/samples/{loops26.py => loop26.py} | 0 .../tests/samples/{loops27.py => loop27.py} | 0 .../tests/samples/{loops28.py => loop28.py} | 0 .../tests/samples/{loops29.py => loop29.py} | 0 .../src/tests/samples/{loops3.py => loop3.py} | 3 +- .../tests/samples/{loops30.py => loop30.py} | 0 .../tests/samples/{loops31.py => loop31.py} | 0 .../tests/samples/{loops32.py => loop32.py} | 0 .../tests/samples/{loops33.py => loop33.py} | 0 .../tests/samples/{loops34.py => loop34.py} | 0 .../tests/samples/{loops35.py => loop35.py} | 0 .../tests/samples/{loops36.py => loop36.py} | 0 .../tests/samples/{loops37.py => loop37.py} | 0 .../tests/samples/{loops38.py => loop38.py} | 0 .../src/tests/samples/{loops4.py => loop4.py} | 1 - .../src/tests/samples/{loops5.py => loop5.py} | 0 .../src/tests/samples/{loops6.py => loop6.py} | 16 +- .../src/tests/samples/{loops7.py => loop7.py} | 4 +- .../src/tests/samples/{loops8.py => loop8.py} | 2 +- .../src/tests/samples/{loops9.py => loop9.py} | 2 +- .../src/tests/samples/match12.py | 64 --- .../src/tests/samples/match2.py | 401 ++--------------- .../src/tests/samples/match3.py | 418 ++---------------- .../src/tests/samples/match7.py | 65 --- .../src/tests/samples/matchClass1.py | 392 ++++++++++++++++ .../samples/{match8.py => matchClass2.py} | 0 .../samples/{match9.py => matchClass3.py} | 0 .../{match10.py => matchExhaustion1.py} | 0 .../samples/{match6.py => matchLiteral1.py} | 0 .../samples/{match5.py => matchMapping1.py} | 14 +- .../src/tests/samples/matchSequence1.py | 378 ++++++++++++++++ .../{match11.py => matchUnnecessary1.py} | 0 .../samples/{match4.py => matchValue1.py} | 8 +- .../src/tests/samples/memberAccess1.py | 6 +- .../src/tests/samples/memberAccess11.py | 10 +- .../src/tests/samples/memberAccess12.py | 10 +- .../src/tests/samples/memberAccess13.py | 3 +- .../src/tests/samples/memberAccess14.py | 6 +- .../src/tests/samples/memberAccess19.py | 2 +- .../src/tests/samples/memberAccess2.py | 1 + .../src/tests/samples/memberAccess4.py | 4 +- .../src/tests/samples/memberAccess5.py | 4 +- .../src/tests/samples/memberAccess6.py | 32 +- .../src/tests/samples/memberAccess8.py | 8 +- .../src/tests/samples/metaclass1.py | 2 +- .../src/tests/samples/metaclass5.py | 22 +- .../src/tests/samples/metaclass9.py | 14 +- .../src/tests/samples/methodOverride1.py | 54 ++- .../src/tests/samples/methodOverride5.py | 4 +- .../src/tests/samples/methods1.py | 10 +- .../src/tests/samples/missingTypeArg1.py | 8 +- .../{nameBindings1.py => nameBinding1.py} | 0 .../{nameBindings2.py => nameBinding2.py} | 0 .../{nameBindings3.py => nameBinding3.py} | 0 .../{nameBindings4.py => nameBinding4.py} | 0 .../{nameBindings5.py => nameBinding5.py} | 0 ...ance10.py => typeNarrowingIsinstance13.py} | 0 ...tance9.py => typeNarrowingIsinstance14.py} | 4 +- ...tance7.py => typeNarrowingIsinstance15.py} | 0 ...tance6.py => typeNarrowingIsinstance16.py} | 10 +- .../samples/typeNarrowingIsinstance17.py | 57 +++ .../src/tests/typeEvaluator1.test.ts | 33 ++ .../src/tests/typeEvaluator2.test.ts | 55 +-- .../src/tests/typeEvaluator3.test.ts | 248 +++++------ 103 files changed, 1256 insertions(+), 1286 deletions(-) rename packages/pyright-internal/src/tests/samples/{listComprehension1.py => comprehension1.py} (80%) rename packages/pyright-internal/src/tests/samples/{listComprehension2.py => comprehension2.py} (100%) rename packages/pyright-internal/src/tests/samples/{listComprehension3.py => comprehension3.py} (100%) rename packages/pyright-internal/src/tests/samples/{listComprehension4.py => comprehension4.py} (100%) rename packages/pyright-internal/src/tests/samples/{listComprehension5.py => comprehension5.py} (100%) rename packages/pyright-internal/src/tests/samples/{listComprehension6.py => comprehension6.py} (100%) rename packages/pyright-internal/src/tests/samples/{listComprehension7.py => comprehension7.py} (100%) rename packages/pyright-internal/src/tests/samples/{listComprehension8.py => comprehension8.py} (88%) rename packages/pyright-internal/src/tests/samples/{listComprehension9.py => comprehension9.py} (100%) delete mode 100644 packages/pyright-internal/src/tests/samples/isinstance5.py rename packages/pyright-internal/src/tests/samples/{loops1.py => loop1.py} (58%) rename packages/pyright-internal/src/tests/samples/{loops10.py => loop10.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops11.py => loop11.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops12.py => loop12.py} (97%) rename packages/pyright-internal/src/tests/samples/{loops13.py => loop13.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops14.py => loop14.py} (86%) rename packages/pyright-internal/src/tests/samples/{loops15.py => loop15.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops16.py => loop16.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops17.py => loop17.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops18.py => loop18.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops19.py => loop19.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops2.py => loop2.py} (82%) rename packages/pyright-internal/src/tests/samples/{loops20.py => loop20.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops21.py => loop21.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops22.py => loop22.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops23.py => loop23.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops24.py => loop24.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops25.py => loop25.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops26.py => loop26.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops27.py => loop27.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops28.py => loop28.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops29.py => loop29.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops3.py => loop3.py} (77%) rename packages/pyright-internal/src/tests/samples/{loops30.py => loop30.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops31.py => loop31.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops32.py => loop32.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops33.py => loop33.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops34.py => loop34.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops35.py => loop35.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops36.py => loop36.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops37.py => loop37.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops38.py => loop38.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops4.py => loop4.py} (99%) rename packages/pyright-internal/src/tests/samples/{loops5.py => loop5.py} (100%) rename packages/pyright-internal/src/tests/samples/{loops6.py => loop6.py} (54%) rename packages/pyright-internal/src/tests/samples/{loops7.py => loop7.py} (87%) rename packages/pyright-internal/src/tests/samples/{loops8.py => loop8.py} (89%) rename packages/pyright-internal/src/tests/samples/{loops9.py => loop9.py} (89%) delete mode 100644 packages/pyright-internal/src/tests/samples/match12.py delete mode 100644 packages/pyright-internal/src/tests/samples/match7.py create mode 100644 packages/pyright-internal/src/tests/samples/matchClass1.py rename packages/pyright-internal/src/tests/samples/{match8.py => matchClass2.py} (100%) rename packages/pyright-internal/src/tests/samples/{match9.py => matchClass3.py} (100%) rename packages/pyright-internal/src/tests/samples/{match10.py => matchExhaustion1.py} (100%) rename packages/pyright-internal/src/tests/samples/{match6.py => matchLiteral1.py} (100%) rename packages/pyright-internal/src/tests/samples/{match5.py => matchMapping1.py} (89%) create mode 100644 packages/pyright-internal/src/tests/samples/matchSequence1.py rename packages/pyright-internal/src/tests/samples/{match11.py => matchUnnecessary1.py} (100%) rename packages/pyright-internal/src/tests/samples/{match4.py => matchValue1.py} (93%) rename packages/pyright-internal/src/tests/samples/{nameBindings1.py => nameBinding1.py} (100%) rename packages/pyright-internal/src/tests/samples/{nameBindings2.py => nameBinding2.py} (100%) rename packages/pyright-internal/src/tests/samples/{nameBindings3.py => nameBinding3.py} (100%) rename packages/pyright-internal/src/tests/samples/{nameBindings4.py => nameBinding4.py} (100%) rename packages/pyright-internal/src/tests/samples/{nameBindings5.py => nameBinding5.py} (100%) rename packages/pyright-internal/src/tests/samples/{isinstance10.py => typeNarrowingIsinstance13.py} (100%) rename packages/pyright-internal/src/tests/samples/{isinstance9.py => typeNarrowingIsinstance14.py} (83%) rename packages/pyright-internal/src/tests/samples/{isinstance7.py => typeNarrowingIsinstance15.py} (100%) rename packages/pyright-internal/src/tests/samples/{isinstance6.py => typeNarrowingIsinstance16.py} (55%) create mode 100644 packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance17.py diff --git a/packages/pyright-internal/src/tests/samples/listComprehension1.py b/packages/pyright-internal/src/tests/samples/comprehension1.py similarity index 80% rename from packages/pyright-internal/src/tests/samples/listComprehension1.py rename to packages/pyright-internal/src/tests/samples/comprehension1.py index 47dc49c0a..7d34de998 100644 --- a/packages/pyright-internal/src/tests/samples/listComprehension1.py +++ b/packages/pyright-internal/src/tests/samples/comprehension1.py @@ -1,6 +1,6 @@ # This sample tests type checking for list comprehensions. -from typing import Any, Generator, Iterable, List, Literal +from typing import Generator, Iterable, Literal a = [1, 2, 3, 4] @@ -10,12 +10,12 @@ def func1() -> Generator[int, None, None]: return b -def func2() -> List[int]: +def func2() -> list[int]: c = [elem for elem in a] return c -def func3() -> List[str]: +def func3() -> list[str]: c = [elem for elem in a] # This should generate an error because @@ -37,7 +37,7 @@ def generate(): FooOrBar = Literal["foo", "bar"] -def to_list(values: Iterable[FooOrBar]) -> List[FooOrBar]: +def to_list(values: Iterable[FooOrBar]) -> list[FooOrBar]: return [value for value in values] x = 3 diff --git a/packages/pyright-internal/src/tests/samples/listComprehension2.py b/packages/pyright-internal/src/tests/samples/comprehension2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/listComprehension2.py rename to packages/pyright-internal/src/tests/samples/comprehension2.py diff --git a/packages/pyright-internal/src/tests/samples/listComprehension3.py b/packages/pyright-internal/src/tests/samples/comprehension3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/listComprehension3.py rename to packages/pyright-internal/src/tests/samples/comprehension3.py diff --git a/packages/pyright-internal/src/tests/samples/listComprehension4.py b/packages/pyright-internal/src/tests/samples/comprehension4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/listComprehension4.py rename to packages/pyright-internal/src/tests/samples/comprehension4.py diff --git a/packages/pyright-internal/src/tests/samples/listComprehension5.py b/packages/pyright-internal/src/tests/samples/comprehension5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/listComprehension5.py rename to packages/pyright-internal/src/tests/samples/comprehension5.py diff --git a/packages/pyright-internal/src/tests/samples/listComprehension6.py b/packages/pyright-internal/src/tests/samples/comprehension6.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/listComprehension6.py rename to packages/pyright-internal/src/tests/samples/comprehension6.py diff --git a/packages/pyright-internal/src/tests/samples/listComprehension7.py b/packages/pyright-internal/src/tests/samples/comprehension7.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/listComprehension7.py rename to packages/pyright-internal/src/tests/samples/comprehension7.py diff --git a/packages/pyright-internal/src/tests/samples/listComprehension8.py b/packages/pyright-internal/src/tests/samples/comprehension8.py similarity index 88% rename from packages/pyright-internal/src/tests/samples/listComprehension8.py rename to packages/pyright-internal/src/tests/samples/comprehension8.py index 2bf4d8b6c..5196e9697 100644 --- a/packages/pyright-internal/src/tests/samples/listComprehension8.py +++ b/packages/pyright-internal/src/tests/samples/comprehension8.py @@ -4,12 +4,12 @@ # pyright: strict -class Foo: +class ClassA: input: str output: str -def minify1(foo: Foo): +def func1(foo: ClassA): foo.output = "".join( stripped for line in foo.input.splitlines() if (stripped := line.strip()) ) diff --git a/packages/pyright-internal/src/tests/samples/listComprehension9.py b/packages/pyright-internal/src/tests/samples/comprehension9.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/listComprehension9.py rename to packages/pyright-internal/src/tests/samples/comprehension9.py diff --git a/packages/pyright-internal/src/tests/samples/hashability1.py b/packages/pyright-internal/src/tests/samples/hashability1.py index 935b21f78..4429b30cc 100644 --- a/packages/pyright-internal/src/tests/samples/hashability1.py +++ b/packages/pyright-internal/src/tests/samples/hashability1.py @@ -11,10 +11,12 @@ # This should generate two errors because {} and [] are not hashable. s2: set[Any] = {{}, 2, dict, frozenset(), []} + class StrList(list[str]): def __hash__(self) -> int: ... + s3 = {StrList()} @@ -31,10 +33,12 @@ def func1(x: str | dict[Any, Any], y: Any, z: None): d4 = {y: "hi", z: "hi"} + @dataclass class DC1: a: int + @dataclass(frozen=True) class DC2: a: int diff --git a/packages/pyright-internal/src/tests/samples/import16.py b/packages/pyright-internal/src/tests/samples/import16.py index b506a5795..228354d3d 100644 --- a/packages/pyright-internal/src/tests/samples/import16.py +++ b/packages/pyright-internal/src/tests/samples/import16.py @@ -4,4 +4,3 @@ import html.entities x = html.escape - diff --git a/packages/pyright-internal/src/tests/samples/inferredTypes2.py b/packages/pyright-internal/src/tests/samples/inferredTypes2.py index adbd547e9..e988cc928 100644 --- a/packages/pyright-internal/src/tests/samples/inferredTypes2.py +++ b/packages/pyright-internal/src/tests/samples/inferredTypes2.py @@ -1,6 +1,7 @@ # This sample tests the ability of the type checker to infer # the types of instance variables based on their assigned values. + class ClassA: def __init__(self): self.value = None @@ -13,4 +14,3 @@ def func(self, param: int): self.value.bit_length() self.value = param - diff --git a/packages/pyright-internal/src/tests/samples/isinstance1.py b/packages/pyright-internal/src/tests/samples/isinstance1.py index 5a8d62929..cf1d7beb1 100644 --- a/packages/pyright-internal/src/tests/samples/isinstance1.py +++ b/packages/pyright-internal/src/tests/samples/isinstance1.py @@ -1,57 +1,8 @@ -# This sample tests basic type narrowing behavior for -# the isinstance call. +# This sample tests the use of "self.__class__" and "__class__" +# in an isinstance call. -from typing import Any, List, Optional, Type, TypedDict, Union - -def func1(x: Union[List[str], int]): - if isinstance(x, list): - reveal_type(x, expected_text="List[str]") - else: - reveal_type(x, expected_text="int") - - -def func2(x: Any): - if isinstance(x, list): - reveal_type(x, expected_text="list[Unknown]") - else: - reveal_type(x, expected_text="Any") - - -def func3(x): - if isinstance(x, list): - reveal_type(x, expected_text="list[Unknown]") - else: - reveal_type(x, expected_text="Unknown") - - -class SomeTypedDict(TypedDict): - name: str - - -def func4(x: Union[int, SomeTypedDict]): - if isinstance(x, dict): - reveal_type(x, expected_text="SomeTypedDict") - else: - reveal_type(x, expected_text="int") - - -def func5(x: int | str | complex): - if isinstance(x, (int, str)): - reveal_type(x, expected_text="int | str") - else: - reveal_type(x, expected_text="complex") - - -def func6(x: Type[int] | Type[str] | Type[complex]): - if issubclass(x, (int, str)): - reveal_type(x, expected_text="type[int] | type[str]") - else: - reveal_type(x, expected_text="type[complex]") - - -def func7(x: Optional[Union[int, SomeTypedDict]]): - if isinstance(x, (dict, type(None))): - reveal_type(x, expected_text="SomeTypedDict | None") - else: - reveal_type(x, expected_text="int") +class Foo: + def bar(self): + a = isinstance(object(), self.__class__) + b = isinstance(object(), __class__) diff --git a/packages/pyright-internal/src/tests/samples/isinstance5.py b/packages/pyright-internal/src/tests/samples/isinstance5.py deleted file mode 100644 index cf1d7beb1..000000000 --- a/packages/pyright-internal/src/tests/samples/isinstance5.py +++ /dev/null @@ -1,8 +0,0 @@ -# This sample tests the use of "self.__class__" and "__class__" -# in an isinstance call. - - -class Foo: - def bar(self): - a = isinstance(object(), self.__class__) - b = isinstance(object(), __class__) diff --git a/packages/pyright-internal/src/tests/samples/lambda1.py b/packages/pyright-internal/src/tests/samples/lambda1.py index 96aee866b..668ab0885 100644 --- a/packages/pyright-internal/src/tests/samples/lambda1.py +++ b/packages/pyright-internal/src/tests/samples/lambda1.py @@ -1,5 +1,5 @@ # This sample tests type checking for lambdas and their parameters. -from typing import Any, Callable, Iterable, Optional, TypeVar +from typing import Callable, Iterable, TypeVar #------------------------------------------------------ # Test basic lambda matching @@ -64,7 +64,7 @@ def needs_function2(callback: Callable[[str, int], str]): _T1 = TypeVar('_T1') -def may_need_function_generic(callback: Optional[Callable[[_T1], _T1]]): +def may_need_function_generic(callback: Callable[[_T1], _T1] | None): pass may_need_function_generic(lambda x: x) diff --git a/packages/pyright-internal/src/tests/samples/lambda4.py b/packages/pyright-internal/src/tests/samples/lambda4.py index 590182b7e..8644fe240 100644 --- a/packages/pyright-internal/src/tests/samples/lambda4.py +++ b/packages/pyright-internal/src/tests/samples/lambda4.py @@ -1,10 +1,10 @@ # This sample tests the case where a lambda is assigned to # a union type that contains multiple callables. -from typing import Callable, Protocol, Union +from typing import Callable, Protocol -U1 = Union[Callable[[int, str], bool], Callable[[str], bool]] +U1 = Callable[[int, str], bool] | Callable[[str], bool] def accepts_u1(cb: U1) -> U1: @@ -54,7 +54,7 @@ def __call__(self, p0: int, p1: str, *p2: str) -> bool: ... -U2 = Union[Callable1, Callable2, Callable3, Callable4] +U2 = Callable1 | Callable2 | Callable3 | Callable4 def accepts_u2(cb: U2) -> U2: diff --git a/packages/pyright-internal/src/tests/samples/lambda7.py b/packages/pyright-internal/src/tests/samples/lambda7.py index 66ffd8475..4428736b2 100644 --- a/packages/pyright-internal/src/tests/samples/lambda7.py +++ b/packages/pyright-internal/src/tests/samples/lambda7.py @@ -4,5 +4,6 @@ # pyright: strict + def func1(keys: list[str]): filter(lambda s: s.startswith(""), keys) diff --git a/packages/pyright-internal/src/tests/samples/list1.py b/packages/pyright-internal/src/tests/samples/list1.py index 2f7ff84a0..83faf0e3a 100644 --- a/packages/pyright-internal/src/tests/samples/list1.py +++ b/packages/pyright-internal/src/tests/samples/list1.py @@ -2,18 +2,7 @@ # pyright: strict, reportUnknownVariableType=false -from typing import ( - Any, - Collection, - Dict, - Generic, - List, - Literal, - Optional, - Sequence, - TypeVar, - Union, -) +from typing import Any, Collection, Generic, Literal, Sequence, TypeVar v1 = [1, 2, 3] @@ -25,7 +14,7 @@ v3 = [] reveal_type(v3, expected_text="list[Unknown]") -v4: List[object] = [] +v4: list[object] = [] v5: object = [] @@ -58,22 +47,22 @@ class Bar: v10.baz = [Foo()] reveal_type(v10.baz, expected_text="list[Foo]") -v11: List[Any] = [["hi", ["hi"], [[{}]]]] +v11: list[Any] = [["hi", ["hi"], [[{}]]]] reveal_type(v11, expected_text="list[Any]") -v12: List[Optional[int]] = [None] * 3 +v12: list[int | None] = [None] * 3 reveal_type(v12, expected_text="list[int | None]") -v13: List[Optional[str]] = ["3", None] * 2 +v13: list[str | None] = ["3", None] * 2 reveal_type(v13, expected_text="list[str | None]") x1 = 3 -v14: List[Optional[str]] = [None] * x1 +v14: list[str | None] = [None] * x1 x2 = [1, 2, 3] -v15: List[Optional[str]] = [None] * sum(x2) +v15: list[str | None] = [None] * sum(x2) -v16: Dict[str, List[Optional[str]]] = {n: [None] * len(n) for n in ["a", "aa", "aaa"]} +v16: dict[str, list[str | None]] = {n: [None] * len(n) for n in ["a", "aa", "aaa"]} ScalarKeysT = TypeVar("ScalarKeysT", bound=Literal["name", "country"]) @@ -91,7 +80,7 @@ def func1(by: list[ScalarKeysT]) -> ScalarKeysT: func1(["id"]) -def func2(thing: Union[str, List[Union[str, int]], List[List[Union[str, int]]]]): +def func2(thing: str | list[str | int] | list[list[str | int]]): ... diff --git a/packages/pyright-internal/src/tests/samples/list2.py b/packages/pyright-internal/src/tests/samples/list2.py index 1a6c1649a..eef2dac3c 100644 --- a/packages/pyright-internal/src/tests/samples/list2.py +++ b/packages/pyright-internal/src/tests/samples/list2.py @@ -4,6 +4,7 @@ import random from typing_extensions import LiteralString + # The join method is overloaded with both LiteralString and str variants. # We need to use the str overload here. def func(x: LiteralString): diff --git a/packages/pyright-internal/src/tests/samples/list3.py b/packages/pyright-internal/src/tests/samples/list3.py index 07a304fc9..f179a3530 100644 --- a/packages/pyright-internal/src/tests/samples/list3.py +++ b/packages/pyright-internal/src/tests/samples/list3.py @@ -1,6 +1,7 @@ # This sample tests list inference in a loop where the type of # the inferred list changes each time through the loop. + def func1(k: str): keys = ["a", "b", "c"] value = [] diff --git a/packages/pyright-internal/src/tests/samples/literalString1.py b/packages/pyright-internal/src/tests/samples/literalString1.py index 916b3ff76..3da49f106 100644 --- a/packages/pyright-internal/src/tests/samples/literalString1.py +++ b/packages/pyright-internal/src/tests/samples/literalString1.py @@ -74,6 +74,7 @@ def func6(a: LiteralString): v3: list[str] = "1 2 3".split(" ") + def func7(a: Literal["a", "b"], b: Literal["a", 1]): v1: LiteralString = f"{a}" diff --git a/packages/pyright-internal/src/tests/samples/loops1.py b/packages/pyright-internal/src/tests/samples/loop1.py similarity index 58% rename from packages/pyright-internal/src/tests/samples/loops1.py rename to packages/pyright-internal/src/tests/samples/loop1.py index f40ab4234..8bb46624c 100644 --- a/packages/pyright-internal/src/tests/samples/loops1.py +++ b/packages/pyright-internal/src/tests/samples/loop1.py @@ -2,44 +2,44 @@ # inferences within loop constructs. -def bar(a: list): +def func1(a: list): pass -def func1(): +def func2(): data = None for x in [2, 3]: if not data: data = [1, 2] else: - # This should not generate an error because the - # type checker should be able to determine that - # data must be a list at this point in the code. - bar(data) + reveal_type(data, expected_text="list[int]") + func1(data) else: + reveal_type(data, expected_text="list[int] | None") + # This should generate an error because the # type checker should be able to determine that # data must contain None at this point. - bar(data) + func1(data) x = 20 + 20 -def func2(): +def func3(): data = None while x: if not data: data = [1, 2] else: - # This should not generate an error because the - # type checker should be able to determine that - # data must be a list at this point in the code. - bar(data) + reveal_type(data, expected_text="list[int]") + func1(data) else: + reveal_type(data, expected_text="list[int] | None") + # This should generate an error because the # type checker should be able to determine that # data must contain None at this point. - bar(data) + func1(data) diff --git a/packages/pyright-internal/src/tests/samples/loops10.py b/packages/pyright-internal/src/tests/samples/loop10.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops10.py rename to packages/pyright-internal/src/tests/samples/loop10.py diff --git a/packages/pyright-internal/src/tests/samples/loops11.py b/packages/pyright-internal/src/tests/samples/loop11.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops11.py rename to packages/pyright-internal/src/tests/samples/loop11.py diff --git a/packages/pyright-internal/src/tests/samples/loops12.py b/packages/pyright-internal/src/tests/samples/loop12.py similarity index 97% rename from packages/pyright-internal/src/tests/samples/loops12.py rename to packages/pyright-internal/src/tests/samples/loop12.py index bd7918d17..1da804ee1 100644 --- a/packages/pyright-internal/src/tests/samples/loops12.py +++ b/packages/pyright-internal/src/tests/samples/loop12.py @@ -2,7 +2,7 @@ # within a loop body. -class Foo: +class ClassA: def non_property(self) -> int: ... diff --git a/packages/pyright-internal/src/tests/samples/loops13.py b/packages/pyright-internal/src/tests/samples/loop13.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops13.py rename to packages/pyright-internal/src/tests/samples/loop13.py diff --git a/packages/pyright-internal/src/tests/samples/loops14.py b/packages/pyright-internal/src/tests/samples/loop14.py similarity index 86% rename from packages/pyright-internal/src/tests/samples/loops14.py rename to packages/pyright-internal/src/tests/samples/loop14.py index 414e13c1d..6cfeb7adc 100644 --- a/packages/pyright-internal/src/tests/samples/loops14.py +++ b/packages/pyright-internal/src/tests/samples/loop14.py @@ -1,10 +1,8 @@ # This sample tests a loop that modifies a variable through type narrowing. -from typing import Union - class State: - def confirm_dialog(self) -> Union["State", bool]: + def confirm_dialog(self) -> "State | bool": return False diff --git a/packages/pyright-internal/src/tests/samples/loops15.py b/packages/pyright-internal/src/tests/samples/loop15.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops15.py rename to packages/pyright-internal/src/tests/samples/loop15.py diff --git a/packages/pyright-internal/src/tests/samples/loops16.py b/packages/pyright-internal/src/tests/samples/loop16.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops16.py rename to packages/pyright-internal/src/tests/samples/loop16.py diff --git a/packages/pyright-internal/src/tests/samples/loops17.py b/packages/pyright-internal/src/tests/samples/loop17.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops17.py rename to packages/pyright-internal/src/tests/samples/loop17.py diff --git a/packages/pyright-internal/src/tests/samples/loops18.py b/packages/pyright-internal/src/tests/samples/loop18.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops18.py rename to packages/pyright-internal/src/tests/samples/loop18.py diff --git a/packages/pyright-internal/src/tests/samples/loops19.py b/packages/pyright-internal/src/tests/samples/loop19.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops19.py rename to packages/pyright-internal/src/tests/samples/loop19.py diff --git a/packages/pyright-internal/src/tests/samples/loops2.py b/packages/pyright-internal/src/tests/samples/loop2.py similarity index 82% rename from packages/pyright-internal/src/tests/samples/loops2.py rename to packages/pyright-internal/src/tests/samples/loop2.py index 268bfd7f0..fa49cd972 100644 --- a/packages/pyright-internal/src/tests/samples/loops2.py +++ b/packages/pyright-internal/src/tests/samples/loop2.py @@ -1,10 +1,8 @@ # This sample tests a piece of code that involves lots # of cyclical dependencies for type resolution. -from typing import Tuple - -def needs_str(a: str) -> Tuple[str, str]: +def needs_str(a: str) -> tuple[str, str]: ... diff --git a/packages/pyright-internal/src/tests/samples/loops20.py b/packages/pyright-internal/src/tests/samples/loop20.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops20.py rename to packages/pyright-internal/src/tests/samples/loop20.py diff --git a/packages/pyright-internal/src/tests/samples/loops21.py b/packages/pyright-internal/src/tests/samples/loop21.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops21.py rename to packages/pyright-internal/src/tests/samples/loop21.py diff --git a/packages/pyright-internal/src/tests/samples/loops22.py b/packages/pyright-internal/src/tests/samples/loop22.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops22.py rename to packages/pyright-internal/src/tests/samples/loop22.py diff --git a/packages/pyright-internal/src/tests/samples/loops23.py b/packages/pyright-internal/src/tests/samples/loop23.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops23.py rename to packages/pyright-internal/src/tests/samples/loop23.py diff --git a/packages/pyright-internal/src/tests/samples/loops24.py b/packages/pyright-internal/src/tests/samples/loop24.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops24.py rename to packages/pyright-internal/src/tests/samples/loop24.py diff --git a/packages/pyright-internal/src/tests/samples/loops25.py b/packages/pyright-internal/src/tests/samples/loop25.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops25.py rename to packages/pyright-internal/src/tests/samples/loop25.py diff --git a/packages/pyright-internal/src/tests/samples/loops26.py b/packages/pyright-internal/src/tests/samples/loop26.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops26.py rename to packages/pyright-internal/src/tests/samples/loop26.py diff --git a/packages/pyright-internal/src/tests/samples/loops27.py b/packages/pyright-internal/src/tests/samples/loop27.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops27.py rename to packages/pyright-internal/src/tests/samples/loop27.py diff --git a/packages/pyright-internal/src/tests/samples/loops28.py b/packages/pyright-internal/src/tests/samples/loop28.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops28.py rename to packages/pyright-internal/src/tests/samples/loop28.py diff --git a/packages/pyright-internal/src/tests/samples/loops29.py b/packages/pyright-internal/src/tests/samples/loop29.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops29.py rename to packages/pyright-internal/src/tests/samples/loop29.py diff --git a/packages/pyright-internal/src/tests/samples/loops3.py b/packages/pyright-internal/src/tests/samples/loop3.py similarity index 77% rename from packages/pyright-internal/src/tests/samples/loops3.py rename to packages/pyright-internal/src/tests/samples/loop3.py index c9a5af45f..3c5109132 100644 --- a/packages/pyright-internal/src/tests/samples/loops3.py +++ b/packages/pyright-internal/src/tests/samples/loop3.py @@ -1,9 +1,8 @@ # This sample tests a piece of code that involves lots # of cyclical dependencies for type resolution. -from typing import Optional -n: Optional[str] = None +n: str | None = None while True: if n is None: n = "" diff --git a/packages/pyright-internal/src/tests/samples/loops30.py b/packages/pyright-internal/src/tests/samples/loop30.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops30.py rename to packages/pyright-internal/src/tests/samples/loop30.py diff --git a/packages/pyright-internal/src/tests/samples/loops31.py b/packages/pyright-internal/src/tests/samples/loop31.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops31.py rename to packages/pyright-internal/src/tests/samples/loop31.py diff --git a/packages/pyright-internal/src/tests/samples/loops32.py b/packages/pyright-internal/src/tests/samples/loop32.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops32.py rename to packages/pyright-internal/src/tests/samples/loop32.py diff --git a/packages/pyright-internal/src/tests/samples/loops33.py b/packages/pyright-internal/src/tests/samples/loop33.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops33.py rename to packages/pyright-internal/src/tests/samples/loop33.py diff --git a/packages/pyright-internal/src/tests/samples/loops34.py b/packages/pyright-internal/src/tests/samples/loop34.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops34.py rename to packages/pyright-internal/src/tests/samples/loop34.py diff --git a/packages/pyright-internal/src/tests/samples/loops35.py b/packages/pyright-internal/src/tests/samples/loop35.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops35.py rename to packages/pyright-internal/src/tests/samples/loop35.py diff --git a/packages/pyright-internal/src/tests/samples/loops36.py b/packages/pyright-internal/src/tests/samples/loop36.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops36.py rename to packages/pyright-internal/src/tests/samples/loop36.py diff --git a/packages/pyright-internal/src/tests/samples/loops37.py b/packages/pyright-internal/src/tests/samples/loop37.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops37.py rename to packages/pyright-internal/src/tests/samples/loop37.py diff --git a/packages/pyright-internal/src/tests/samples/loops38.py b/packages/pyright-internal/src/tests/samples/loop38.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops38.py rename to packages/pyright-internal/src/tests/samples/loop38.py diff --git a/packages/pyright-internal/src/tests/samples/loops4.py b/packages/pyright-internal/src/tests/samples/loop4.py similarity index 99% rename from packages/pyright-internal/src/tests/samples/loops4.py rename to packages/pyright-internal/src/tests/samples/loop4.py index a4a652e07..bdcc1af37 100644 --- a/packages/pyright-internal/src/tests/samples/loops4.py +++ b/packages/pyright-internal/src/tests/samples/loop4.py @@ -4,7 +4,6 @@ x: int = 0 while len(input()) < 42: - x += 43 if a and a: diff --git a/packages/pyright-internal/src/tests/samples/loops5.py b/packages/pyright-internal/src/tests/samples/loop5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/loops5.py rename to packages/pyright-internal/src/tests/samples/loop5.py diff --git a/packages/pyright-internal/src/tests/samples/loops6.py b/packages/pyright-internal/src/tests/samples/loop6.py similarity index 54% rename from packages/pyright-internal/src/tests/samples/loops6.py rename to packages/pyright-internal/src/tests/samples/loop6.py index 66721a5cb..68c6bb85a 100644 --- a/packages/pyright-internal/src/tests/samples/loops6.py +++ b/packages/pyright-internal/src/tests/samples/loop6.py @@ -2,24 +2,24 @@ # between untyped variables. -class Foo: - def new_from_dict(self, param1): - return Foo() +class ClassA: + def method1(self, param1): + return ClassA() - def method1(self): + def method2(self): return {}, {} def method3(self, param3): while True: for key in param3.keys(): - foo1 = self.new_from_dict({key: None}) - var1, var2 = foo1.method1() + foo1 = self.method1({key: None}) + var1, var2 = foo1.method2() if len(var1) < 2: param3 = var2 break - foo2 = foo1.new_from_dict({}) - var1, var2 = foo2.method1() + foo2 = foo1.method1({}) + var1, var2 = foo2.method2() else: break diff --git a/packages/pyright-internal/src/tests/samples/loops7.py b/packages/pyright-internal/src/tests/samples/loop7.py similarity index 87% rename from packages/pyright-internal/src/tests/samples/loops7.py rename to packages/pyright-internal/src/tests/samples/loop7.py index 73cddf8c7..26b6750d5 100644 --- a/packages/pyright-internal/src/tests/samples/loops7.py +++ b/packages/pyright-internal/src/tests/samples/loop7.py @@ -5,10 +5,10 @@ from typing import Optional -class Foo: +class ClassA: name: Optional[str] - def correct(self): + def method1(self): if self.name is not None: for _ in []: self.name = self.name.replace("", "") diff --git a/packages/pyright-internal/src/tests/samples/loops8.py b/packages/pyright-internal/src/tests/samples/loop8.py similarity index 89% rename from packages/pyright-internal/src/tests/samples/loops8.py rename to packages/pyright-internal/src/tests/samples/loop8.py index a22bca83a..ee09691ca 100644 --- a/packages/pyright-internal/src/tests/samples/loops8.py +++ b/packages/pyright-internal/src/tests/samples/loop8.py @@ -6,7 +6,7 @@ from typing import Iterable -def test(parts: Iterable[str]): +def func1(parts: Iterable[str]): x: list[str] = [] ns = "" for part in parts: diff --git a/packages/pyright-internal/src/tests/samples/loops9.py b/packages/pyright-internal/src/tests/samples/loop9.py similarity index 89% rename from packages/pyright-internal/src/tests/samples/loops9.py rename to packages/pyright-internal/src/tests/samples/loop9.py index 7e87318d4..8e162cc52 100644 --- a/packages/pyright-internal/src/tests/samples/loops9.py +++ b/packages/pyright-internal/src/tests/samples/loop9.py @@ -14,7 +14,7 @@ class B(A): pass -def foo(v: A, s: Dict[B, A]) -> object: +def func1(v: A, s: Dict[B, A]) -> object: if not isinstance(v, B): return v u = s.get(v) diff --git a/packages/pyright-internal/src/tests/samples/match12.py b/packages/pyright-internal/src/tests/samples/match12.py deleted file mode 100644 index 954a0d10b..000000000 --- a/packages/pyright-internal/src/tests/samples/match12.py +++ /dev/null @@ -1,64 +0,0 @@ -# This sample tests narrowing of subject subexpressions in match statements. - -from typing import Literal, TypedDict - - -class TD1(TypedDict): - name: Literal["a"] - extra_value: int - - -class TD2(TypedDict): - name: Literal["b"] - other_extra_value: int - - -def func1(item: TD1 | TD2): - match item["name"]: - case "c": - reveal_type(item, expected_text="Never") - case "a": - reveal_type(item, expected_text="TD1") - case "b": - reveal_type(item, expected_text="TD2") - - -T1 = tuple[Literal[0], int] -T2 = tuple[Literal[1], str] - - -def func2(item: T1 | T2): - match item[0]: - case 0: - reveal_type(item, expected_text="tuple[Literal[0], int]") - case 1: - reveal_type(item, expected_text="tuple[Literal[1], str]") - - -def func3(a: object, b: int) -> None: - match a, b: - case (complex(), 3): - reveal_type(a, expected_text="complex") - reveal_type(b, expected_text="Literal[3]") - - -Token = ( - str - | tuple[Literal["define"], str, str] - | tuple[Literal["include"], str] - | tuple[Literal["use"], str, int, int] -) - - -def func4(token: Token): - match token: - case str(x): - reveal_type(token, expected_text="str") - case "define", _, _: - reveal_type(token, expected_text="tuple[Literal['define'], str, str]") - case "include", _: - reveal_type(token, expected_text="tuple[Literal['include'], str]") - case "use", _, _, _: - reveal_type(token, expected_text="tuple[Literal['use'], str, int, int]") - case _: - reveal_type(token, expected_text="Never") diff --git a/packages/pyright-internal/src/tests/samples/match2.py b/packages/pyright-internal/src/tests/samples/match2.py index 209c80b3b..98b638aa9 100644 --- a/packages/pyright-internal/src/tests/samples/match2.py +++ b/packages/pyright-internal/src/tests/samples/match2.py @@ -1,378 +1,65 @@ -# This sample tests type checking for match statements (as -# described in PEP 634) that contain sequence patterns. +# This sample tests type narrowing of subject expressions for +# match statements. -from typing import Any, Generic, List, Literal, Protocol, Tuple, TypeVar, Union -def test_unknown(value_to_match): - match value_to_match: - case a1, a2: - reveal_type(a1, expected_text="Unknown") - reveal_type(a2, expected_text="Unknown") - - case *b1, b2: - reveal_type(b1, expected_text="list[Unknown]") - reveal_type(b2, expected_text="Unknown") - - case c1, *c2: - reveal_type(c1, expected_text="Unknown") - reveal_type(c2, expected_text="list[Unknown]") - - case d1, *d2, d3: - reveal_type(d1, expected_text="Unknown") - reveal_type(d2, expected_text="list[Unknown]") - reveal_type(d3, expected_text="Unknown") - - case 3, *e1: - reveal_type(e1, expected_text="list[Unknown]") - - case "hi", *f1: - reveal_type(f1, expected_text="list[Unknown]") - - case *g1, "hi": - reveal_type(g1, expected_text="list[Unknown]") - - -def test_list(value_to_match: List[str]): - match value_to_match: - case a1, a2: - reveal_type(a1, expected_text="str") - reveal_type(a2, expected_text="str") - reveal_type(value_to_match, expected_text="List[str]") - - case *b1, b2: - reveal_type(b1, expected_text="list[str]") - reveal_type(b2, expected_text="str") - reveal_type(value_to_match, expected_text="List[str]") - - case c1, *c2: - reveal_type(c1, expected_text="str") - reveal_type(c2, expected_text="list[str]") - reveal_type(value_to_match, expected_text="List[str]") - - case d1, *d2, d3: - reveal_type(d1, expected_text="str") - reveal_type(d2, expected_text="list[str]") - reveal_type(d3, expected_text="str") - reveal_type(value_to_match, expected_text="List[str]") - - case 3, *e1: - reveal_type(e1, expected_text="Never") - reveal_type(value_to_match, expected_text="Never") - - case "hi", *f1: - reveal_type(f1, expected_text="list[str]") - reveal_type(value_to_match, expected_text="List[str]") - - case *g1, "hi": - reveal_type(g1, expected_text="list[str]") - reveal_type(value_to_match, expected_text="List[str]") - -def test_open_ended_tuple(value_to_match: Tuple[str, ...]): - match value_to_match: - case a1, a2: - reveal_type(a1, expected_text="str") - reveal_type(a2, expected_text="str") - reveal_type(value_to_match, expected_text="tuple[str, str]") - - case *b1, b2: - reveal_type(b1, expected_text="list[str]") - reveal_type(b2, expected_text="str") - reveal_type(value_to_match, expected_text="Tuple[str, ...]") - - case c1, *c2: - reveal_type(c1, expected_text="str") - reveal_type(c2, expected_text="list[str]") - reveal_type(value_to_match, expected_text="Tuple[str, ...]") - - case d1, *d2, d3: - reveal_type(d1, expected_text="str") - reveal_type(d2, expected_text="list[str]") - reveal_type(d3, expected_text="str") - reveal_type(value_to_match, expected_text="Tuple[str, ...]") - - case 3, *e1: - reveal_type(e1, expected_text="Never") - reveal_type(value_to_match, expected_text="Never") - - case "hi", *f1: - reveal_type(f1, expected_text="list[str]") - reveal_type(value_to_match, expected_text="Tuple[str, ...]") - - case *g1, "hi": - reveal_type(g1, expected_text="list[str]") - reveal_type(value_to_match, expected_text="Tuple[str, ...]") - -def test_definite_tuple(value_to_match: Tuple[int, str, float, complex]): - match value_to_match: - case a1, a2, a3, a4 if value_to_match[0] == 0: - reveal_type(a1, expected_text="int") - reveal_type(a2, expected_text="str") - reveal_type(a3, expected_text="float") - reveal_type(a4, expected_text="complex") - reveal_type(value_to_match, expected_text="tuple[int, str, float, complex]") - - case *b1, b2 if value_to_match[0] == 0: - reveal_type(b1, expected_text="list[int | str | float]") - reveal_type(b2, expected_text="complex") - reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") - - case c1, *c2 if value_to_match[0] == 0: - reveal_type(c1, expected_text="int") - reveal_type(c2, expected_text="list[str | float | complex]") - reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") - - case d1, *d2, d3 if value_to_match[0] == 0: - reveal_type(d1, expected_text="int") - reveal_type(d2, expected_text="list[str | float]") - reveal_type(d3, expected_text="complex") - reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") - - case 3, *e1: - reveal_type(e1, expected_text="list[str | float | complex]") - reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") - - case "hi", *f1: - reveal_type(f1, expected_text="Never") - reveal_type(value_to_match, expected_text="Never") - - case *g1, 3j: - reveal_type(g1, expected_text="list[int | str | float]") - reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") - - case *h1, "hi": - reveal_type(h1, expected_text="Never") - reveal_type(value_to_match, expected_text="Never") - - -def test_union(value_to_match: Union[Tuple[complex, complex], Tuple[int, str, float, complex], List[str], Tuple[float, ...], Any]): - match value_to_match: - case a1, a2, a3, a4 if value_to_match[0] == 0: - reveal_type(a1, expected_text="int | str | float | Any") - reveal_type(a2, expected_text="str | float | Any") - reveal_type(a3, expected_text="float | str | Any") - reveal_type(a4, expected_text="complex | str | float | Any") - reveal_type(value_to_match, expected_text="tuple[int, str, float, complex] | List[str] | tuple[float, float, float, float] | Any") - - case *b1, b2 if value_to_match[0] == 0: - reveal_type(b1, expected_text="list[complex] | list[int | str | float] | list[str] | list[float] | list[Any]") - reveal_type(b2, expected_text="complex | str | float | Any") - reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") - - case c1, *c2 if value_to_match[0] == 0: - reveal_type(c1, expected_text="complex | int | str | float | Any") - reveal_type(c2, expected_text="list[complex] | list[str | float | complex] | list[str] | list[float] | list[Any]") - reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") - - case d1, *d2, d3 if value_to_match[0] == 0: - reveal_type(d1, expected_text="complex | int | str | float | Any") - reveal_type(d2, expected_text="list[str | float] | list[str] | list[float] | list[Any]") - reveal_type(d3, expected_text="complex | str | float | Any") - reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") - - case 3, e1: - reveal_type(e1, expected_text="complex | float | Any") - reveal_type(value_to_match, expected_text="tuple[Literal[3], complex] | tuple[Literal[3], float] | Any") - - case "hi", *f1: - reveal_type(f1, expected_text="list[str] | list[Any]") - reveal_type(value_to_match, expected_text="List[str] | Any") - - case *g1, 3j: - reveal_type(g1, expected_text="list[complex] | list[int | str | float] | list[Any]") - reveal_type(value_to_match, expected_text="tuple[complex, complex] | Tuple[int, str, float, complex] | Any") - - case *h1, "hi": - reveal_type(h1, expected_text="list[str] | list[Any]") - reveal_type(value_to_match, expected_text="List[str] | Any") - - -class SupportsLessThan(Protocol): - def __lt__(self, __other: Any) -> bool: ... - def __le__(self, __other: Any) -> bool: ... - -SupportsLessThanT = TypeVar("SupportsLessThanT", bound=SupportsLessThan) - - -def sort(seq: List[SupportsLessThanT]) -> List[SupportsLessThanT]: - match seq: - case [] | [_]: - reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") - return seq - - case [x, y] if x <= y: - reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") - return seq - - case [x, y]: - reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") - return [y, x] - - case [x, y, z] if x <= y <= z: - reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") - return seq - - case [x, y, z] if x > y > z: - reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") - return [z, y, x] - - case [p, *rest]: - a = sort([x for x in rest if x <= p]) - b = sort([x for x in rest if p < x]) - reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") - return a + [p] + b - return seq - - -def test_exceptions(seq: Union[str, bytes, bytearray]): - match seq: - case [x, y]: - reveal_type(x, expected_text="Never") - reveal_type(y, expected_text="Never") - return seq - -def test_object(seq: object): - match seq: - case (a1, a2) as a3: - reveal_type(a1, expected_text="object") - reveal_type(a2, expected_text="object") - reveal_type(a3, expected_text="Sequence[object]") - reveal_type(seq, expected_text="Sequence[object]") - - case (*b1, b2) as b3: - reveal_type(b1, expected_text="list[object]") - reveal_type(b2, expected_text="object") - reveal_type(b3, expected_text="Sequence[object]") - reveal_type(seq, expected_text="Sequence[object]") - - case (c1, *c2) as c3: - reveal_type(c1, expected_text="object") - reveal_type(c2, expected_text="list[object]") - reveal_type(c3, expected_text="Sequence[object]") - reveal_type(seq, expected_text="Sequence[object]") - - case (d1, *d2, d3) as d4: - reveal_type(d1, expected_text="object") - reveal_type(d2, expected_text="list[object]") - reveal_type(d3, expected_text="object") - reveal_type(d4, expected_text="Sequence[object]") - reveal_type(seq, expected_text="Sequence[object]") - - case (3, *e1) as e2: - reveal_type(e1, expected_text="list[object]") - reveal_type(e2, expected_text="Sequence[object | int]") - reveal_type(seq, expected_text="Sequence[object | int]") - - case ("hi", *f1) as f2: - reveal_type(f1, expected_text="list[object]") - reveal_type(f2, expected_text="Sequence[object | str]") - reveal_type(seq, expected_text="Sequence[object | str]") - - case (*g1, "hi") as g2: - reveal_type(g1, expected_text="list[object]") - reveal_type(g2, expected_text="Sequence[object | str]") - reveal_type(seq, expected_text="Sequence[object | str]") - - case [1, "hi", True] as h1: - reveal_type(h1, expected_text="Sequence[int | str | bool]") - reveal_type(seq, expected_text="Sequence[int | str | bool]") - - case [1, i1] as i2: - reveal_type(i1, expected_text="object") - reveal_type(i2, expected_text="Sequence[object | int]") - reveal_type(seq, expected_text="Sequence[object | int]") - -_T = TypeVar('_T') - -class A(Generic[_T]): - a: _T - -class B: ... -class C: ... +def func1(subj: int | dict[str, str] | tuple[int] | str, cond: bool): + match subj: + case (3 | "hi"): + reveal_type(subj, expected_text="Literal[3, 'hi']") + return -AAlias = A + case int(y) if cond: + reveal_type(subj, expected_text="int") + return -AInt = A[int] + case int(y): + reveal_type(subj, expected_text="int") + return -BOrC = B | C + case int(): + reveal_type(subj, expected_text="Never") + return -def test_illegal_type_alias(m: object): - match m: - case AAlias(a=i): - pass + case str(z): + reveal_type(subj, expected_text="str") + return - # This should generate an error because it raises an - # exception at runtime. - case AInt(a=i): - pass + reveal_type(subj, expected_text="dict[str, str] | tuple[int]") + return subj - # This should generate an error because it raises an - # exception at runtime. - case BOrC(a=i): - pass -def test_negative_narrowing1(subj: tuple[Literal[0]] | tuple[Literal[1]]): +# This should generate an error because there is the potential +# for fall-through if the subject expression is a str. +def func2(subj: int | str) -> str: match subj: - case (1,*a) | (*a): - reveal_type(subj, expected_text="tuple[Literal[1]] | tuple[Literal[0]]") - reveal_type(a, expected_text="list[int]") + case int(): + return "int" - case b: - reveal_type(subj, expected_text="Never") - reveal_type(b, expected_text="Never") + reveal_type(subj, expected_text="str") -def test_negative_narrowing2(subj: tuple[int, ...]): +# This should generate an error because there is the potential +# for fall-through if the guard expressions are false. +def func3(subj: int | str) -> str: match subj: - case (1,*a): - reveal_type(subj, expected_text="tuple[int, ...]") - reveal_type(a, expected_text="list[int]") - - case (b,): - reveal_type(subj, expected_text="tuple[int]") - reveal_type(b, expected_text="int") + case str() if len(subj) > 0: + return "str" - case (*c,): - reveal_type(subj, expected_text="tuple[int, ...]") - reveal_type(c, expected_text="list[int]") + case int() if subj < 0: + return "int" - case d: - reveal_type(subj, expected_text="Never") - reveal_type(d, expected_text="Never") + reveal_type(subj, expected_text="int | str") -def test_negative_narrowing3(subj: tuple[Any, Any]): +def func4(subj: int | str) -> str: match subj: - case (a, b): - reveal_type(a, expected_text="Any") - reveal_type(b, expected_text="Any") + case int(): + return "int" - case x: - reveal_type(x, expected_text="Never") + case str(): + return "str" - -def test_negative_narrowing4(a: str | None, b: str | None): - match (a, b): - case (None, _) as x: - reveal_type(x, expected_text="tuple[None, str | None]") - case (_, None) as x: - reveal_type(x, expected_text="tuple[str, None]") - case (a, b) as x: - reveal_type(x, expected_text="tuple[str, str]") - - -def test_negative_narrowing5(a: str | None, b: str | None): - match (a, b): - case (None, _) | (_, None) as x: - reveal_type(x, expected_text="tuple[None, str | None] | tuple[str, None]") - case (a, b) as x: - reveal_type(x, expected_text="tuple[str, str]") - - -def test_negative_narrowing6(a: str | None, b: str | None): - match (a, b): - case (None, None) as x: - reveal_type(x, expected_text="tuple[None, None]") - case (None, _) as x if 2 > 1: - reveal_type(x, expected_text="tuple[None, str | None]") - case (a, b) as x: - reveal_type(x, expected_text="tuple[str | None, str | None]") + case _: + # This should be ignored because the pattern has already + # been exhaustively matched. + pass diff --git a/packages/pyright-internal/src/tests/samples/match3.py b/packages/pyright-internal/src/tests/samples/match3.py index 3b3102bec..954a0d10b 100644 --- a/packages/pyright-internal/src/tests/samples/match3.py +++ b/packages/pyright-internal/src/tests/samples/match3.py @@ -1,392 +1,64 @@ -# This sample tests type checking for match statements (as -# described in PEP 634) that contain class patterns. +# This sample tests narrowing of subject subexpressions in match statements. -from typing import Any, Generic, Literal, NamedTuple, Optional, TypeVar, Union -from dataclasses import dataclass, field +from typing import Literal, TypedDict -foo = 3 -T = TypeVar("T") +class TD1(TypedDict): + name: Literal["a"] + extra_value: int -class ClassA: - __match_args__ = ("attr_a", "attr_b") - attr_a: int - attr_b: str +class TD2(TypedDict): + name: Literal["b"] + other_extra_value: int -class ClassB(Generic[T]): - __match_args__ = ("attr_a", "attr_b") - attr_a: T - attr_b: str +def func1(item: TD1 | TD2): + match item["name"]: + case "c": + reveal_type(item, expected_text="Never") + case "a": + reveal_type(item, expected_text="TD1") + case "b": + reveal_type(item, expected_text="TD2") -class ClassC: - ... +T1 = tuple[Literal[0], int] +T2 = tuple[Literal[1], str] -class ClassD(ClassC): - ... +def func2(item: T1 | T2): + match item[0]: + case 0: + reveal_type(item, expected_text="tuple[Literal[0], int]") + case 1: + reveal_type(item, expected_text="tuple[Literal[1], str]") -def test_unknown(value_to_match): - match value_to_match: - case ClassA(attr_a=a2) as a1: - reveal_type(a1, expected_text="ClassA") - reveal_type(a2, expected_text="int") - reveal_type(value_to_match, expected_text="ClassA") +def func3(a: object, b: int) -> None: + match a, b: + case (complex(), 3): + reveal_type(a, expected_text="complex") + reveal_type(b, expected_text="Literal[3]") - # This should generate an error because foo isn't instantiable. - case foo() as a3: - pass +Token = ( + str + | tuple[Literal["define"], str, str] + | tuple[Literal["include"], str] + | tuple[Literal["use"], str, int, int] +) -def test_any(value_to_match: Any): - match value_to_match: - case list() as a1: - reveal_type(a1, expected_text="list[Unknown]") - reveal_type(value_to_match, expected_text="list[Unknown]") - - -def test_custom_type(value_to_match: ClassA | ClassB[int] | ClassB[str] | ClassC): - match value_to_match: - case int() as a1: - reveal_type(a1, expected_text="Never") - reveal_type(value_to_match, expected_text="Never") - - case ClassA(attr_a=a4, attr_b=a5) as a3: - reveal_type(a3, expected_text="ClassA") - reveal_type(a4, expected_text="int") - reveal_type(a5, expected_text="str") - reveal_type(value_to_match, expected_text="ClassA") - reveal_type(value_to_match, expected_text="ClassA") - - case ClassB(a6, a7): - reveal_type(a6, expected_text="int | str") - reveal_type(a7, expected_text="str") - reveal_type(value_to_match, expected_text="ClassB[int] | ClassB[str]") - - case ClassD() as a2: - reveal_type(a2, expected_text="ClassD") - reveal_type(value_to_match, expected_text="ClassD") - - case ClassC() as a8: - reveal_type(a8, expected_text="ClassC") - reveal_type(value_to_match, expected_text="ClassC") - - -def test_literal(value_to_match: Literal[3]): - match value_to_match: - case int() as a1: - reveal_type(a1, expected_text="Literal[3]") - reveal_type(value_to_match, expected_text="Literal[3]") - - case float() as a2: - reveal_type(a2, expected_text="Never") - reveal_type(value_to_match, expected_text="Never") - - case str() as a3: - reveal_type(a3, expected_text="Never") - reveal_type(value_to_match, expected_text="Never") - - -TFloat = TypeVar("TFloat", bound=float) - - -def test_bound_typevar(value_to_match: TFloat) -> TFloat: - match value_to_match: - case int() as a1: - reveal_type(a1, expected_text="int*") - reveal_type(value_to_match, expected_text="int*") - - case float() as a2: - reveal_type(a2, expected_text="float*") - reveal_type(value_to_match, expected_text="float*") - - case str() as a3: - reveal_type(a3, expected_text="Never") - reveal_type(value_to_match, expected_text="Never") - - return value_to_match - - -TInt = TypeVar("TInt", bound=int) - - -def test_union( - value_to_match: Union[TInt, Literal[3], float, str] -) -> Union[TInt, Literal[3], float, str]: - match value_to_match: - case int() as a1: - reveal_type(a1, expected_text="int* | int") - reveal_type(value_to_match, expected_text="int* | int") - - case float() as a2: - reveal_type(a2, expected_text="float") - reveal_type(value_to_match, expected_text="float") - - case str() as a3: - reveal_type(a3, expected_text="str") - reveal_type(value_to_match, expected_text="str") - - return value_to_match - - -T = TypeVar("T") - - -class Point(Generic[T]): - __match_args__ = ("x", "y") - x: T - y: T - - -def func1(points: list[Point[float] | Point[complex]]): - match points: - case [] as a1: - reveal_type(a1, expected_text="list[Point[float] | Point[complex]]") - reveal_type(points, expected_text="list[Point[float] | Point[complex]]") - - case [Point(0, 0) as b1]: - reveal_type(b1, expected_text="Point[float] | Point[complex]") - reveal_type(points, expected_text="list[Point[float] | Point[complex]]") - - case [Point(c1, c2)]: - reveal_type(c1, expected_text="float | complex") - reveal_type(c2, expected_text="float | complex") - reveal_type(points, expected_text="list[Point[float] | Point[complex]]") - - case [Point(0, d1), Point(0, d2)]: - reveal_type(d1, expected_text="float | complex") - reveal_type(d2, expected_text="float | complex") - reveal_type(points, expected_text="list[Point[float] | Point[complex]]") - - case _ as e1: - reveal_type(e1, expected_text="list[Point[float] | Point[complex]]") - reveal_type(points, expected_text="list[Point[float] | Point[complex]]") - - -def func2(subj: object): - match subj: - case list() as a1: - reveal_type(a1, expected_text="list[Unknown]") - reveal_type(subj, expected_text="list[Unknown]") - - -def func3(subj: Union[int, str, dict[str, str]]): - match subj: - case int(x): - reveal_type(x, expected_text="int") - reveal_type(subj, expected_text="int") - - case str(x): - reveal_type(x, expected_text="str") - reveal_type(subj, expected_text="str") - - case dict(x): - reveal_type(x, expected_text="dict[str, str]") - reveal_type(subj, expected_text="dict[str, str]") - - -def func4(subj: object): - match subj: - case int(x): - reveal_type(x, expected_text="int") - reveal_type(subj, expected_text="int") +def func4(token: Token): + match token: case str(x): - reveal_type(x, expected_text="str") - reveal_type(subj, expected_text="str") - - -# Test the auto-generation of __match_args__ for dataclass. -@dataclass -class Dataclass1: - val1: int - val2: str = field(init=False) - val3: complex - - -@dataclass -class Dataclass2: - val1: int - val2: str - val3: float - - -def func5(subj: object): - match subj: - case Dataclass1(a, b): - reveal_type(a, expected_text="int") - reveal_type(b, expected_text="complex") - reveal_type(subj, expected_text="Dataclass1") - - case Dataclass2(a, b, c): - reveal_type(a, expected_text="int") - reveal_type(b, expected_text="str") - reveal_type(c, expected_text="float") - reveal_type(subj, expected_text="Dataclass2") - - -# Test the auto-generation of __match_args__ for named tuples. -NT1 = NamedTuple("NT1", [("val1", int), ("val2", complex)]) -NT2 = NamedTuple("NT2", [("val1", int), ("val2", str), ("val3", float)]) - - -def func6(subj: object): - match subj: - case NT1(a, b): - reveal_type(a, expected_text="int") - reveal_type(b, expected_text="complex") - reveal_type(subj, expected_text="NT1") - - case NT2(a, b, c): - reveal_type(a, expected_text="int") - reveal_type(b, expected_text="str") - reveal_type(c, expected_text="float") - reveal_type(subj, expected_text="NT2") - - -def func7(subj: object): - match subj: - case complex(real=a, imag=b): - reveal_type(a, expected_text="float") - reveal_type(b, expected_text="float") - - -T2 = TypeVar("T2") - - -class Parent(Generic[T]): - ... - - -class Child1(Parent[T]): - ... - - -class Child2(Parent[T], Generic[T, T2]): - ... - - -def func8(subj: Parent[int]): - match subj: - case Child1() as a1: - reveal_type(a1, expected_text="Child1[int]") - reveal_type(subj, expected_text="Child1[int]") - - case Child2() as b1: - reveal_type(b1, expected_text="Child2[int, Unknown]") - reveal_type(subj, expected_text="Child2[int, Unknown]") - - -T3 = TypeVar("T3") - - -def func9(v: T3) -> Optional[T3]: - match v: - case str(): - reveal_type(v, expected_text="str*") - return v - - case _: - return None - - -T4 = TypeVar("T4", int, str) - - -def func10(v: T4) -> Optional[T4]: - match v: - case str(): - reveal_type(v, expected_text="str*") - return v - - case int(): - reveal_type(v, expected_text="int*") - return v - - case list(): - reveal_type(v, expected_text="Never") - return v - + reveal_type(token, expected_text="str") + case "define", _, _: + reveal_type(token, expected_text="tuple[Literal['define'], str, str]") + case "include", _: + reveal_type(token, expected_text="tuple[Literal['include'], str]") + case "use", _, _, _: + reveal_type(token, expected_text="tuple[Literal['use'], str, int, int]") case _: - return None - - -def func11(subj: Any): - match subj: - case Child1() as a1: - reveal_type(a1, expected_text="Child1[Unknown]") - reveal_type(subj, expected_text="Child1[Unknown]") - - case Child2() as b1: - reveal_type(b1, expected_text="Child2[Unknown, Unknown]") - reveal_type(subj, expected_text="Child2[Unknown, Unknown]") - - -def func12(subj: int, flt_cls: type[float], union_val: float | int): - match subj: - # This should generate an error because int doesn't accept two arguments. - case int(1, 2): - pass - - match subj: - # This should generate an error because float doesn't accept keyword arguments. - case float(x=1): - pass - - match subj: - case flt_cls(): - pass - - # This should generate an error because it is a union. - case union_val(): - pass - - -def func13(subj: tuple[Literal[0]]): - match subj: - case tuple((1,)) as a: - reveal_type(subj, expected_text="Never") - reveal_type(a, expected_text="Never") - - case tuple((0, 0)) as b: - reveal_type(subj, expected_text="Never") - reveal_type(b, expected_text="Never") - - case tuple((0,)) as c: - reveal_type(subj, expected_text="tuple[Literal[0]]") - reveal_type(c, expected_text="tuple[Literal[0]]") - - case d: - reveal_type(subj, expected_text="Never") - reveal_type(d, expected_text="Never") - - -class ClassE(Generic[T]): - __match_args__ = ("x",) - x: list[T] - - -class ClassF(ClassE[T]): - pass - - -def func14(subj: ClassE[T]) -> T | None: - match subj: - case ClassF(a): - reveal_type(subj, expected_text="ClassF[T@func14]") - reveal_type(a, expected_text="list[T@func14]") - return a[0] - - -class IntPair(tuple[int, int]): - pass - - -def func15(x: IntPair | None) -> None: - match x: - case IntPair((y, z)): - reveal_type(y, expected_text="int") - reveal_type(z, expected_text="int") + reveal_type(token, expected_text="Never") diff --git a/packages/pyright-internal/src/tests/samples/match7.py b/packages/pyright-internal/src/tests/samples/match7.py deleted file mode 100644 index 7326f36b4..000000000 --- a/packages/pyright-internal/src/tests/samples/match7.py +++ /dev/null @@ -1,65 +0,0 @@ -# This sample tests type narrowing of subject expressions for -# match statements. - - -def func1(subj: int | dict[str, str] | tuple[int] | str, cond: bool): - match subj: - case (3 | "hi"): - reveal_type(subj, expected_text="Literal[3, 'hi']") - return - - case int(y) if cond: - reveal_type(subj, expected_text="int") - return - - case int(y): - reveal_type(subj, expected_text="int") - return - - case int(): - reveal_type(subj, expected_text="Never") - return - - case str(z): - reveal_type(subj, expected_text="str") - return - - reveal_type(subj, expected_text="dict[str, str] | tuple[int]") - return subj - - -# This should generate an error because there is the potential -# for fall-through if the subject expression is a str. -def func2(subj: int | str) -> str: - match subj: - case int(): - return "int" - - reveal_type(subj, expected_text='str') - - -# This should generate an error because there is the potential -# for fall-through if the guard expressions are false. -def func3(subj: int | str) -> str: - match subj: - case str() if len(subj) > 0: - return "str" - - case int() if subj < 0: - return "int" - - reveal_type(subj, expected_text='int | str') - - -def func4(subj: int | str) -> str: - match subj: - case int(): - return "int" - - case str(): - return "str" - - case _: - # This should be ignored because the pattern has already - # been exhaustively matched. - pass diff --git a/packages/pyright-internal/src/tests/samples/matchClass1.py b/packages/pyright-internal/src/tests/samples/matchClass1.py new file mode 100644 index 000000000..a32770bb9 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/matchClass1.py @@ -0,0 +1,392 @@ +# This sample tests type checking for match statements (as +# described in PEP 634) that contain class patterns. + +from typing import Any, Generic, Literal, NamedTuple, TypeVar +from dataclasses import dataclass, field + +foo = 3 + +T = TypeVar("T") + + +class ClassA: + __match_args__ = ("attr_a", "attr_b") + attr_a: int + attr_b: str + + +class ClassB(Generic[T]): + __match_args__ = ("attr_a", "attr_b") + attr_a: T + attr_b: str + + +class ClassC: + ... + + +class ClassD(ClassC): + ... + + +def test_unknown(value_to_match): + match value_to_match: + case ClassA(attr_a=a2) as a1: + reveal_type(a1, expected_text="ClassA") + reveal_type(a2, expected_text="int") + reveal_type(value_to_match, expected_text="ClassA") + + # This should generate an error because foo isn't instantiable. + case foo() as a3: + pass + + +def test_any(value_to_match: Any): + match value_to_match: + case list() as a1: + reveal_type(a1, expected_text="list[Unknown]") + reveal_type(value_to_match, expected_text="list[Unknown]") + + +def test_custom_type(value_to_match: ClassA | ClassB[int] | ClassB[str] | ClassC): + match value_to_match: + case int() as a1: + reveal_type(a1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case ClassA(attr_a=a4, attr_b=a5) as a3: + reveal_type(a3, expected_text="ClassA") + reveal_type(a4, expected_text="int") + reveal_type(a5, expected_text="str") + reveal_type(value_to_match, expected_text="ClassA") + reveal_type(value_to_match, expected_text="ClassA") + + case ClassB(a6, a7): + reveal_type(a6, expected_text="int | str") + reveal_type(a7, expected_text="str") + reveal_type(value_to_match, expected_text="ClassB[int] | ClassB[str]") + + case ClassD() as a2: + reveal_type(a2, expected_text="ClassD") + reveal_type(value_to_match, expected_text="ClassD") + + case ClassC() as a8: + reveal_type(a8, expected_text="ClassC") + reveal_type(value_to_match, expected_text="ClassC") + + +def test_literal(value_to_match: Literal[3]): + match value_to_match: + case int() as a1: + reveal_type(a1, expected_text="Literal[3]") + reveal_type(value_to_match, expected_text="Literal[3]") + + case float() as a2: + reveal_type(a2, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case str() as a3: + reveal_type(a3, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + +TFloat = TypeVar("TFloat", bound=float) + + +def test_bound_typevar(value_to_match: TFloat) -> TFloat: + match value_to_match: + case int() as a1: + reveal_type(a1, expected_text="int*") + reveal_type(value_to_match, expected_text="int*") + + case float() as a2: + reveal_type(a2, expected_text="float*") + reveal_type(value_to_match, expected_text="float*") + + case str() as a3: + reveal_type(a3, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + return value_to_match + + +TInt = TypeVar("TInt", bound=int) + + +def test_union( + value_to_match: TInt | Literal[3] | float | str, +) -> TInt | Literal[3] | float | str: + match value_to_match: + case int() as a1: + reveal_type(a1, expected_text="int* | int") + reveal_type(value_to_match, expected_text="int* | int") + + case float() as a2: + reveal_type(a2, expected_text="float") + reveal_type(value_to_match, expected_text="float") + + case str() as a3: + reveal_type(a3, expected_text="str") + reveal_type(value_to_match, expected_text="str") + + return value_to_match + + +T = TypeVar("T") + + +class Point(Generic[T]): + __match_args__ = ("x", "y") + x: T + y: T + + +def func1(points: list[Point[float] | Point[complex]]): + match points: + case [] as a1: + reveal_type(a1, expected_text="list[Point[float] | Point[complex]]") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + case [Point(0, 0) as b1]: + reveal_type(b1, expected_text="Point[float] | Point[complex]") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + case [Point(c1, c2)]: + reveal_type(c1, expected_text="float | complex") + reveal_type(c2, expected_text="float | complex") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + case [Point(0, d1), Point(0, d2)]: + reveal_type(d1, expected_text="float | complex") + reveal_type(d2, expected_text="float | complex") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + case _ as e1: + reveal_type(e1, expected_text="list[Point[float] | Point[complex]]") + reveal_type(points, expected_text="list[Point[float] | Point[complex]]") + + +def func2(subj: object): + match subj: + case list() as a1: + reveal_type(a1, expected_text="list[Unknown]") + reveal_type(subj, expected_text="list[Unknown]") + + +def func3(subj: int | str | dict[str, str]): + match subj: + case int(x): + reveal_type(x, expected_text="int") + reveal_type(subj, expected_text="int") + + case str(x): + reveal_type(x, expected_text="str") + reveal_type(subj, expected_text="str") + + case dict(x): + reveal_type(x, expected_text="dict[str, str]") + reveal_type(subj, expected_text="dict[str, str]") + + +def func4(subj: object): + match subj: + case int(x): + reveal_type(x, expected_text="int") + reveal_type(subj, expected_text="int") + + case str(x): + reveal_type(x, expected_text="str") + reveal_type(subj, expected_text="str") + + +# Test the auto-generation of __match_args__ for dataclass. +@dataclass +class Dataclass1: + val1: int + val2: str = field(init=False) + val3: complex + + +@dataclass +class Dataclass2: + val1: int + val2: str + val3: float + + +def func5(subj: object): + match subj: + case Dataclass1(a, b): + reveal_type(a, expected_text="int") + reveal_type(b, expected_text="complex") + reveal_type(subj, expected_text="Dataclass1") + + case Dataclass2(a, b, c): + reveal_type(a, expected_text="int") + reveal_type(b, expected_text="str") + reveal_type(c, expected_text="float") + reveal_type(subj, expected_text="Dataclass2") + + +# Test the auto-generation of __match_args__ for named tuples. +NT1 = NamedTuple("NT1", [("val1", int), ("val2", complex)]) +NT2 = NamedTuple("NT2", [("val1", int), ("val2", str), ("val3", float)]) + + +def func6(subj: object): + match subj: + case NT1(a, b): + reveal_type(a, expected_text="int") + reveal_type(b, expected_text="complex") + reveal_type(subj, expected_text="NT1") + + case NT2(a, b, c): + reveal_type(a, expected_text="int") + reveal_type(b, expected_text="str") + reveal_type(c, expected_text="float") + reveal_type(subj, expected_text="NT2") + + +def func7(subj: object): + match subj: + case complex(real=a, imag=b): + reveal_type(a, expected_text="float") + reveal_type(b, expected_text="float") + + +T2 = TypeVar("T2") + + +class Parent(Generic[T]): + ... + + +class Child1(Parent[T]): + ... + + +class Child2(Parent[T], Generic[T, T2]): + ... + + +def func8(subj: Parent[int]): + match subj: + case Child1() as a1: + reveal_type(a1, expected_text="Child1[int]") + reveal_type(subj, expected_text="Child1[int]") + + case Child2() as b1: + reveal_type(b1, expected_text="Child2[int, Unknown]") + reveal_type(subj, expected_text="Child2[int, Unknown]") + + +T3 = TypeVar("T3") + + +def func9(v: T3) -> T3 | None: + match v: + case str(): + reveal_type(v, expected_text="str*") + return v + + case _: + return None + + +T4 = TypeVar("T4", int, str) + + +def func10(v: T4) -> T4 | None: + match v: + case str(): + reveal_type(v, expected_text="str*") + return v + + case int(): + reveal_type(v, expected_text="int*") + return v + + case list(): + reveal_type(v, expected_text="Never") + return v + + case _: + return None + + +def func11(subj: Any): + match subj: + case Child1() as a1: + reveal_type(a1, expected_text="Child1[Unknown]") + reveal_type(subj, expected_text="Child1[Unknown]") + + case Child2() as b1: + reveal_type(b1, expected_text="Child2[Unknown, Unknown]") + reveal_type(subj, expected_text="Child2[Unknown, Unknown]") + + +def func12(subj: int, flt_cls: type[float], union_val: float | int): + match subj: + # This should generate an error because int doesn't accept two arguments. + case int(1, 2): + pass + + match subj: + # This should generate an error because float doesn't accept keyword arguments. + case float(x=1): + pass + + match subj: + case flt_cls(): + pass + + # This should generate an error because it is a union. + case union_val(): + pass + + +def func13(subj: tuple[Literal[0]]): + match subj: + case tuple((1,)) as a: + reveal_type(subj, expected_text="Never") + reveal_type(a, expected_text="Never") + + case tuple((0, 0)) as b: + reveal_type(subj, expected_text="Never") + reveal_type(b, expected_text="Never") + + case tuple((0,)) as c: + reveal_type(subj, expected_text="tuple[Literal[0]]") + reveal_type(c, expected_text="tuple[Literal[0]]") + + case d: + reveal_type(subj, expected_text="Never") + reveal_type(d, expected_text="Never") + + +class ClassE(Generic[T]): + __match_args__ = ("x",) + x: list[T] + + +class ClassF(ClassE[T]): + pass + + +def func14(subj: ClassE[T]) -> T | None: + match subj: + case ClassF(a): + reveal_type(subj, expected_text="ClassF[T@func14]") + reveal_type(a, expected_text="list[T@func14]") + return a[0] + + +class IntPair(tuple[int, int]): + pass + + +def func15(x: IntPair | None) -> None: + match x: + case IntPair((y, z)): + reveal_type(y, expected_text="int") + reveal_type(z, expected_text="int") diff --git a/packages/pyright-internal/src/tests/samples/match8.py b/packages/pyright-internal/src/tests/samples/matchClass2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/match8.py rename to packages/pyright-internal/src/tests/samples/matchClass2.py diff --git a/packages/pyright-internal/src/tests/samples/match9.py b/packages/pyright-internal/src/tests/samples/matchClass3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/match9.py rename to packages/pyright-internal/src/tests/samples/matchClass3.py diff --git a/packages/pyright-internal/src/tests/samples/match10.py b/packages/pyright-internal/src/tests/samples/matchExhaustion1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/match10.py rename to packages/pyright-internal/src/tests/samples/matchExhaustion1.py diff --git a/packages/pyright-internal/src/tests/samples/match6.py b/packages/pyright-internal/src/tests/samples/matchLiteral1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/match6.py rename to packages/pyright-internal/src/tests/samples/matchLiteral1.py diff --git a/packages/pyright-internal/src/tests/samples/match5.py b/packages/pyright-internal/src/tests/samples/matchMapping1.py similarity index 89% rename from packages/pyright-internal/src/tests/samples/match5.py rename to packages/pyright-internal/src/tests/samples/matchMapping1.py index d889f31b0..5c8b0e91f 100644 --- a/packages/pyright-internal/src/tests/samples/match5.py +++ b/packages/pyright-internal/src/tests/samples/matchMapping1.py @@ -1,7 +1,7 @@ # This sample tests type checking for match statements (as # described in PEP 634) that contain mapping patterns. -from typing import Dict, Literal, TypedDict +from typing import Literal, TypedDict from typing_extensions import NotRequired @@ -13,17 +13,17 @@ def test_unknown(value_to_match): reveal_type(value_to_match, expected_text="Unknown") -def test_dict(value_to_match: Dict[str | int, str | int]): +def test_dict(value_to_match: dict[str | int, str | int]): match value_to_match: case {1: a1}: reveal_type(a1, expected_text="str | int") - reveal_type(value_to_match, expected_text="Dict[str | int, str | int]") + reveal_type(value_to_match, expected_text="dict[str | int, str | int]") case {"hi": b1, "hi2": b2, **b3}: reveal_type(b1, expected_text="str | int") reveal_type(b2, expected_text="str | int") reveal_type(b3, expected_text="dict[str | int, str | int]") - reveal_type(value_to_match, expected_text="Dict[str | int, str | int]") + reveal_type(value_to_match, expected_text="dict[str | int, str | int]") case {3j: c1}: reveal_type(c1, expected_text="Never") @@ -62,16 +62,16 @@ def test_typed_dict(value_to_match: Movie): reveal_type(value_to_match, expected_text="Movie") -def test_union(value_to_match: Dict[str | int, str | int] | Movie | str): +def test_union(value_to_match: dict[str | int, str | int] | Movie | str): match value_to_match: case {3: a1}: reveal_type(a1, expected_text="str | int") - reveal_type(value_to_match, expected_text="Dict[str | int, str | int]") + reveal_type(value_to_match, expected_text="dict[str | int, str | int]") case {"gross_earnings": b1}: reveal_type(b1, expected_text="str | int | float") reveal_type( - value_to_match, expected_text="Dict[str | int, str | int] | Movie" + value_to_match, expected_text="dict[str | int, str | int] | Movie" ) diff --git a/packages/pyright-internal/src/tests/samples/matchSequence1.py b/packages/pyright-internal/src/tests/samples/matchSequence1.py new file mode 100644 index 000000000..209c80b3b --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/matchSequence1.py @@ -0,0 +1,378 @@ +# This sample tests type checking for match statements (as +# described in PEP 634) that contain sequence patterns. + +from typing import Any, Generic, List, Literal, Protocol, Tuple, TypeVar, Union + +def test_unknown(value_to_match): + match value_to_match: + case a1, a2: + reveal_type(a1, expected_text="Unknown") + reveal_type(a2, expected_text="Unknown") + + case *b1, b2: + reveal_type(b1, expected_text="list[Unknown]") + reveal_type(b2, expected_text="Unknown") + + case c1, *c2: + reveal_type(c1, expected_text="Unknown") + reveal_type(c2, expected_text="list[Unknown]") + + case d1, *d2, d3: + reveal_type(d1, expected_text="Unknown") + reveal_type(d2, expected_text="list[Unknown]") + reveal_type(d3, expected_text="Unknown") + + case 3, *e1: + reveal_type(e1, expected_text="list[Unknown]") + + case "hi", *f1: + reveal_type(f1, expected_text="list[Unknown]") + + case *g1, "hi": + reveal_type(g1, expected_text="list[Unknown]") + + +def test_list(value_to_match: List[str]): + match value_to_match: + case a1, a2: + reveal_type(a1, expected_text="str") + reveal_type(a2, expected_text="str") + reveal_type(value_to_match, expected_text="List[str]") + + case *b1, b2: + reveal_type(b1, expected_text="list[str]") + reveal_type(b2, expected_text="str") + reveal_type(value_to_match, expected_text="List[str]") + + case c1, *c2: + reveal_type(c1, expected_text="str") + reveal_type(c2, expected_text="list[str]") + reveal_type(value_to_match, expected_text="List[str]") + + case d1, *d2, d3: + reveal_type(d1, expected_text="str") + reveal_type(d2, expected_text="list[str]") + reveal_type(d3, expected_text="str") + reveal_type(value_to_match, expected_text="List[str]") + + case 3, *e1: + reveal_type(e1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case "hi", *f1: + reveal_type(f1, expected_text="list[str]") + reveal_type(value_to_match, expected_text="List[str]") + + case *g1, "hi": + reveal_type(g1, expected_text="list[str]") + reveal_type(value_to_match, expected_text="List[str]") + +def test_open_ended_tuple(value_to_match: Tuple[str, ...]): + match value_to_match: + case a1, a2: + reveal_type(a1, expected_text="str") + reveal_type(a2, expected_text="str") + reveal_type(value_to_match, expected_text="tuple[str, str]") + + case *b1, b2: + reveal_type(b1, expected_text="list[str]") + reveal_type(b2, expected_text="str") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + + case c1, *c2: + reveal_type(c1, expected_text="str") + reveal_type(c2, expected_text="list[str]") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + + case d1, *d2, d3: + reveal_type(d1, expected_text="str") + reveal_type(d2, expected_text="list[str]") + reveal_type(d3, expected_text="str") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + + case 3, *e1: + reveal_type(e1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case "hi", *f1: + reveal_type(f1, expected_text="list[str]") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + + case *g1, "hi": + reveal_type(g1, expected_text="list[str]") + reveal_type(value_to_match, expected_text="Tuple[str, ...]") + +def test_definite_tuple(value_to_match: Tuple[int, str, float, complex]): + match value_to_match: + case a1, a2, a3, a4 if value_to_match[0] == 0: + reveal_type(a1, expected_text="int") + reveal_type(a2, expected_text="str") + reveal_type(a3, expected_text="float") + reveal_type(a4, expected_text="complex") + reveal_type(value_to_match, expected_text="tuple[int, str, float, complex]") + + case *b1, b2 if value_to_match[0] == 0: + reveal_type(b1, expected_text="list[int | str | float]") + reveal_type(b2, expected_text="complex") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case c1, *c2 if value_to_match[0] == 0: + reveal_type(c1, expected_text="int") + reveal_type(c2, expected_text="list[str | float | complex]") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case d1, *d2, d3 if value_to_match[0] == 0: + reveal_type(d1, expected_text="int") + reveal_type(d2, expected_text="list[str | float]") + reveal_type(d3, expected_text="complex") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case 3, *e1: + reveal_type(e1, expected_text="list[str | float | complex]") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case "hi", *f1: + reveal_type(f1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + case *g1, 3j: + reveal_type(g1, expected_text="list[int | str | float]") + reveal_type(value_to_match, expected_text="Tuple[int, str, float, complex]") + + case *h1, "hi": + reveal_type(h1, expected_text="Never") + reveal_type(value_to_match, expected_text="Never") + + +def test_union(value_to_match: Union[Tuple[complex, complex], Tuple[int, str, float, complex], List[str], Tuple[float, ...], Any]): + match value_to_match: + case a1, a2, a3, a4 if value_to_match[0] == 0: + reveal_type(a1, expected_text="int | str | float | Any") + reveal_type(a2, expected_text="str | float | Any") + reveal_type(a3, expected_text="float | str | Any") + reveal_type(a4, expected_text="complex | str | float | Any") + reveal_type(value_to_match, expected_text="tuple[int, str, float, complex] | List[str] | tuple[float, float, float, float] | Any") + + case *b1, b2 if value_to_match[0] == 0: + reveal_type(b1, expected_text="list[complex] | list[int | str | float] | list[str] | list[float] | list[Any]") + reveal_type(b2, expected_text="complex | str | float | Any") + reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") + + case c1, *c2 if value_to_match[0] == 0: + reveal_type(c1, expected_text="complex | int | str | float | Any") + reveal_type(c2, expected_text="list[complex] | list[str | float | complex] | list[str] | list[float] | list[Any]") + reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") + + case d1, *d2, d3 if value_to_match[0] == 0: + reveal_type(d1, expected_text="complex | int | str | float | Any") + reveal_type(d2, expected_text="list[str | float] | list[str] | list[float] | list[Any]") + reveal_type(d3, expected_text="complex | str | float | Any") + reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") + + case 3, e1: + reveal_type(e1, expected_text="complex | float | Any") + reveal_type(value_to_match, expected_text="tuple[Literal[3], complex] | tuple[Literal[3], float] | Any") + + case "hi", *f1: + reveal_type(f1, expected_text="list[str] | list[Any]") + reveal_type(value_to_match, expected_text="List[str] | Any") + + case *g1, 3j: + reveal_type(g1, expected_text="list[complex] | list[int | str | float] | list[Any]") + reveal_type(value_to_match, expected_text="tuple[complex, complex] | Tuple[int, str, float, complex] | Any") + + case *h1, "hi": + reveal_type(h1, expected_text="list[str] | list[Any]") + reveal_type(value_to_match, expected_text="List[str] | Any") + + +class SupportsLessThan(Protocol): + def __lt__(self, __other: Any) -> bool: ... + def __le__(self, __other: Any) -> bool: ... + +SupportsLessThanT = TypeVar("SupportsLessThanT", bound=SupportsLessThan) + + +def sort(seq: List[SupportsLessThanT]) -> List[SupportsLessThanT]: + match seq: + case [] | [_]: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return seq + + case [x, y] if x <= y: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return seq + + case [x, y]: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return [y, x] + + case [x, y, z] if x <= y <= z: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return seq + + case [x, y, z] if x > y > z: + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return [z, y, x] + + case [p, *rest]: + a = sort([x for x in rest if x <= p]) + b = sort([x for x in rest if p < x]) + reveal_type(seq, expected_text="List[SupportsLessThanT@sort]") + return a + [p] + b + return seq + + +def test_exceptions(seq: Union[str, bytes, bytearray]): + match seq: + case [x, y]: + reveal_type(x, expected_text="Never") + reveal_type(y, expected_text="Never") + return seq + +def test_object(seq: object): + match seq: + case (a1, a2) as a3: + reveal_type(a1, expected_text="object") + reveal_type(a2, expected_text="object") + reveal_type(a3, expected_text="Sequence[object]") + reveal_type(seq, expected_text="Sequence[object]") + + case (*b1, b2) as b3: + reveal_type(b1, expected_text="list[object]") + reveal_type(b2, expected_text="object") + reveal_type(b3, expected_text="Sequence[object]") + reveal_type(seq, expected_text="Sequence[object]") + + case (c1, *c2) as c3: + reveal_type(c1, expected_text="object") + reveal_type(c2, expected_text="list[object]") + reveal_type(c3, expected_text="Sequence[object]") + reveal_type(seq, expected_text="Sequence[object]") + + case (d1, *d2, d3) as d4: + reveal_type(d1, expected_text="object") + reveal_type(d2, expected_text="list[object]") + reveal_type(d3, expected_text="object") + reveal_type(d4, expected_text="Sequence[object]") + reveal_type(seq, expected_text="Sequence[object]") + + case (3, *e1) as e2: + reveal_type(e1, expected_text="list[object]") + reveal_type(e2, expected_text="Sequence[object | int]") + reveal_type(seq, expected_text="Sequence[object | int]") + + case ("hi", *f1) as f2: + reveal_type(f1, expected_text="list[object]") + reveal_type(f2, expected_text="Sequence[object | str]") + reveal_type(seq, expected_text="Sequence[object | str]") + + case (*g1, "hi") as g2: + reveal_type(g1, expected_text="list[object]") + reveal_type(g2, expected_text="Sequence[object | str]") + reveal_type(seq, expected_text="Sequence[object | str]") + + case [1, "hi", True] as h1: + reveal_type(h1, expected_text="Sequence[int | str | bool]") + reveal_type(seq, expected_text="Sequence[int | str | bool]") + + case [1, i1] as i2: + reveal_type(i1, expected_text="object") + reveal_type(i2, expected_text="Sequence[object | int]") + reveal_type(seq, expected_text="Sequence[object | int]") + +_T = TypeVar('_T') + +class A(Generic[_T]): + a: _T + +class B: ... +class C: ... + +AAlias = A + +AInt = A[int] + +BOrC = B | C + +def test_illegal_type_alias(m: object): + match m: + case AAlias(a=i): + pass + + # This should generate an error because it raises an + # exception at runtime. + case AInt(a=i): + pass + + # This should generate an error because it raises an + # exception at runtime. + case BOrC(a=i): + pass + +def test_negative_narrowing1(subj: tuple[Literal[0]] | tuple[Literal[1]]): + match subj: + case (1,*a) | (*a): + reveal_type(subj, expected_text="tuple[Literal[1]] | tuple[Literal[0]]") + reveal_type(a, expected_text="list[int]") + + case b: + reveal_type(subj, expected_text="Never") + reveal_type(b, expected_text="Never") + + +def test_negative_narrowing2(subj: tuple[int, ...]): + match subj: + case (1,*a): + reveal_type(subj, expected_text="tuple[int, ...]") + reveal_type(a, expected_text="list[int]") + + case (b,): + reveal_type(subj, expected_text="tuple[int]") + reveal_type(b, expected_text="int") + + case (*c,): + reveal_type(subj, expected_text="tuple[int, ...]") + reveal_type(c, expected_text="list[int]") + + case d: + reveal_type(subj, expected_text="Never") + reveal_type(d, expected_text="Never") + + +def test_negative_narrowing3(subj: tuple[Any, Any]): + match subj: + case (a, b): + reveal_type(a, expected_text="Any") + reveal_type(b, expected_text="Any") + + case x: + reveal_type(x, expected_text="Never") + + +def test_negative_narrowing4(a: str | None, b: str | None): + match (a, b): + case (None, _) as x: + reveal_type(x, expected_text="tuple[None, str | None]") + case (_, None) as x: + reveal_type(x, expected_text="tuple[str, None]") + case (a, b) as x: + reveal_type(x, expected_text="tuple[str, str]") + + +def test_negative_narrowing5(a: str | None, b: str | None): + match (a, b): + case (None, _) | (_, None) as x: + reveal_type(x, expected_text="tuple[None, str | None] | tuple[str, None]") + case (a, b) as x: + reveal_type(x, expected_text="tuple[str, str]") + + +def test_negative_narrowing6(a: str | None, b: str | None): + match (a, b): + case (None, None) as x: + reveal_type(x, expected_text="tuple[None, None]") + case (None, _) as x if 2 > 1: + reveal_type(x, expected_text="tuple[None, str | None]") + case (a, b) as x: + reveal_type(x, expected_text="tuple[str | None, str | None]") diff --git a/packages/pyright-internal/src/tests/samples/match11.py b/packages/pyright-internal/src/tests/samples/matchUnnecessary1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/match11.py rename to packages/pyright-internal/src/tests/samples/matchUnnecessary1.py diff --git a/packages/pyright-internal/src/tests/samples/match4.py b/packages/pyright-internal/src/tests/samples/matchValue1.py similarity index 93% rename from packages/pyright-internal/src/tests/samples/match4.py rename to packages/pyright-internal/src/tests/samples/matchValue1.py index 4e7d7fca8..de6b0372d 100644 --- a/packages/pyright-internal/src/tests/samples/match4.py +++ b/packages/pyright-internal/src/tests/samples/matchValue1.py @@ -3,11 +3,11 @@ from dataclasses import dataclass from enum import Enum, auto -from typing import Annotated, Tuple, TypeVar, Union +from typing import Annotated, TypeVar from http import HTTPStatus -def handle_reply(reply: Tuple[HTTPStatus, str] | Tuple[HTTPStatus]): +def handle_reply(reply: tuple[HTTPStatus, str] | tuple[HTTPStatus]): match reply: case (HTTPStatus.OK as a1, a2): reveal_type(a1, expected_text="Literal[HTTPStatus.OK]") @@ -53,7 +53,7 @@ def test_class_var(value_to_match: str): TInt = TypeVar("TInt", bound=MyEnum) -def test_union(value_to_match: Union[TInt, MyEnum]) -> Union[TInt, MyEnum]: +def test_union(value_to_match: TInt | MyEnum) -> TInt | MyEnum: match value_to_match: case MyEnum.V1 as a1: reveal_type(a1, expected_text="Literal[MyEnum.V1]") @@ -74,7 +74,7 @@ class Color(Enum): green = 3 -def test_enum_narrowing(m: Union[Medal, Color, int]): +def test_enum_narrowing(m: Medal | Color | int): match m: case Medal.gold as a1: reveal_type(a1, expected_text="Literal[Medal.gold]") diff --git a/packages/pyright-internal/src/tests/samples/memberAccess1.py b/packages/pyright-internal/src/tests/samples/memberAccess1.py index c29e2f0bb..90caf6ca9 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess1.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess1.py @@ -2,7 +2,7 @@ # like __get__ and __set__ are handled correctly. from contextlib import ExitStack -from typing import Any, ContextManager, Generic, Optional, Type, TypeVar, overload +from typing import Any, ContextManager, Generic, TypeVar, overload from functools import cached_property _T = TypeVar("_T") @@ -41,7 +41,7 @@ def baz(self) -> int: class Factory: - def __get__(self, obj: Any, cls: Type[_T]) -> _T: + def __get__(self, obj: Any, cls: type[_T]) -> _T: return cls() @@ -55,7 +55,7 @@ class ClassC: class GenericDescriptor(Generic[_T]): value: _T - def __get__(self, instance: Optional[object], cls: Type[object]) -> _T: + def __get__(self, instance: object | None, cls: type[object]) -> _T: ... def __set__(self, instance: object, value: _T) -> None: diff --git a/packages/pyright-internal/src/tests/samples/memberAccess11.py b/packages/pyright-internal/src/tests/samples/memberAccess11.py index bbaa7cb7f..fb0ae7eb6 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess11.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess11.py @@ -3,12 +3,10 @@ from typing import Callable -UnboundMethodThatTakesIntAndReturnsStr = Callable[["MyClass", int], str] +Callback = Callable[["MyClass", int], str] -def method_decorator( - method: UnboundMethodThatTakesIntAndReturnsStr, -) -> UnboundMethodThatTakesIntAndReturnsStr: +def decorator1(method: Callback) -> Callback: def wrapper(self: "MyClass", a: int) -> str: return "wrapped " + method(self, a) @@ -19,14 +17,14 @@ class MyClass: def __init__(self): self.method4 = lambda x: x - @method_decorator + @decorator1 def method1(self, a: int) -> str: return "foo" def method2(self, a: int) -> str: return "foo" - method3 = method_decorator(method2) + method3 = decorator1(method2) mc = MyClass() diff --git a/packages/pyright-internal/src/tests/samples/memberAccess12.py b/packages/pyright-internal/src/tests/samples/memberAccess12.py index d16955764..0bf4ba09d 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess12.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess12.py @@ -1,7 +1,7 @@ # This sample tests a member access when the metaclass implements a descriptor # protocol. -from typing import Any, Optional, Union, Type, TypeVar, overload +from typing import Any, TypeVar, overload T = TypeVar("T") @@ -9,16 +9,14 @@ class MetaClass(type): @overload - def __get__(self: Type[T], instance: None, owner: Any) -> Type[T]: + def __get__(self: type[T], instance: None, owner: Any) -> type[T]: ... @overload - def __get__(self: Type[T], instance: object, owner: Any) -> T: + def __get__(self: type[T], instance: object, owner: Any) -> T: ... - def __get__( - self: Type[T], instance: Optional[object], owner: Any - ) -> Union[Type[T], T]: + def __get__(self: type[T], instance: object | None, owner: Any) -> type[T] | T: if instance is None: return self return self() diff --git a/packages/pyright-internal/src/tests/samples/memberAccess13.py b/packages/pyright-internal/src/tests/samples/memberAccess13.py index c04021a50..19fdf437d 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess13.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess13.py @@ -1,12 +1,11 @@ # This sample tests a member access when the member is a class # that inherits from Any. -from typing import Type from unittest.mock import Mock class MockProducer: - produce: Type[Mock] = Mock + produce: type[Mock] = Mock reveal_type(MockProducer.produce, expected_text="type[Mock]") diff --git a/packages/pyright-internal/src/tests/samples/memberAccess14.py b/packages/pyright-internal/src/tests/samples/memberAccess14.py index 1b8205e85..3b442959b 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess14.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess14.py @@ -3,7 +3,7 @@ # the descriptor. -from typing import Any, Callable, Generic, TypeVar, Union, overload +from typing import Any, Callable, Generic, TypeVar, overload T = TypeVar("T") T_contra = TypeVar("T_contra", contravariant=True) @@ -28,8 +28,8 @@ def __get__(self, instance: T_contra, owner: Any) -> V_co: ... def __get__( - self: CachedSlotPropertyT, instance: Union[T_contra, None], owner: Any - ) -> Union[CachedSlotPropertyT, V_co]: + self: CachedSlotPropertyT, instance: T_contra | None, owner: Any + ) -> CachedSlotPropertyT | V_co: ... diff --git a/packages/pyright-internal/src/tests/samples/memberAccess19.py b/packages/pyright-internal/src/tests/samples/memberAccess19.py index fbf6bd339..059d4e1db 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess19.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess19.py @@ -1,4 +1,4 @@ -# This sample tests the handling of __getattr__, __setattr__, and +# This sample tests the handling of __getattr__, __setattr__, and # __delattr__ methods. from typing import Any, Literal, TypeVar, overload diff --git a/packages/pyright-internal/src/tests/samples/memberAccess2.py b/packages/pyright-internal/src/tests/samples/memberAccess2.py index 484f8dd55..f142e2724 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess2.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess2.py @@ -4,6 +4,7 @@ from typing import Callable, NamedTuple, TypedDict + # This class follows the normal rules where variable # b, which is callable, acts like a class member and # is bound to an instance by the member access operator. diff --git a/packages/pyright-internal/src/tests/samples/memberAccess4.py b/packages/pyright-internal/src/tests/samples/memberAccess4.py index 231089fe8..0a46b109e 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess4.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess4.py @@ -2,7 +2,7 @@ # "self" or "cls" parameter type is honored when binding the # method to an object or class. -from typing import Protocol, Type, TypeVar +from typing import Protocol, TypeVar class HasItemProtocol1(Protocol): @@ -44,7 +44,7 @@ def must_have(self) -> None: class Mixin2: @classmethod - def do_stuff(cls: Type[HasItemProtocol2]): + def do_stuff(cls: type[HasItemProtocol2]): pass diff --git a/packages/pyright-internal/src/tests/samples/memberAccess5.py b/packages/pyright-internal/src/tests/samples/memberAccess5.py index 6bbd8dbb7..c86e1de5a 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess5.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess5.py @@ -2,7 +2,7 @@ # objects that provide a __get__ method and those # that do not. -from typing import Any, Union +from typing import Any class IntProvider: @@ -11,7 +11,7 @@ def __get__(self, instance: object, owner: Any) -> int: class Foo: - _int_value_declared: Union[IntProvider, int] = 3 + _int_value_declared: IntProvider | int = 3 _int_value_inferred = 3 def __init__(self): diff --git a/packages/pyright-internal/src/tests/samples/memberAccess6.py b/packages/pyright-internal/src/tests/samples/memberAccess6.py index 6715e2010..c97c6bc36 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess6.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess6.py @@ -3,18 +3,18 @@ # pyright: strict -from typing import Any, Generic, Optional, Type, TypeVar, overload +from typing import Any, Generic, TypeVar, overload _T = TypeVar("_T") -class FooBase: +class ParentA: pass class Column(Generic[_T]): - def __init__(self: "Column[_T]", type: Type[_T]) -> None: + def __init__(self: "Column[_T]", type: type[_T]) -> None: ... @overload @@ -22,31 +22,29 @@ def __get__(self: "Column[_T]", instance: None, type: Any) -> "Column[_T]": ... @overload - def __get__(self: "Column[_T]", instance: FooBase, type: Any) -> _T: + def __get__(self: "Column[_T]", instance: ParentA, type: Any) -> _T: ... - def __get__( - self, instance: Optional[FooBase], type: Any - ) -> Optional[_T] | "Column[_T]": + def __get__(self, instance: ParentA | None, type: Any) -> _T | None | "Column[_T]": ... -class Foo(FooBase): - bar: Column[str] = Column(str) - baz = Column(str) +class ChildA(ParentA): + attr1: Column[str] = Column(str) + attr2 = Column(str) -Foo.bar -Foo().bar -Foo.baz -Foo().baz +ChildA.attr1 +ChildA().attr1 +ChildA.attr2 +ChildA().attr2 -foo = Foo() +foo = ChildA() # This should generate an error because bar is declared as containing a # Column[str], which doesn't provide a __set__ method. -foo.bar = "" +foo.attr1 = "" # This should generate an error because baz's inferred type is # Column[str], which doesn't provide a __set__ method. -foo.baz = "" +foo.attr2 = "" diff --git a/packages/pyright-internal/src/tests/samples/memberAccess8.py b/packages/pyright-internal/src/tests/samples/memberAccess8.py index fb18905e7..7bd249e66 100644 --- a/packages/pyright-internal/src/tests/samples/memberAccess8.py +++ b/packages/pyright-internal/src/tests/samples/memberAccess8.py @@ -1,6 +1,6 @@ # This sample tests the use of a generic descriptor class. -from typing import Any, Callable, Generic, Optional, Type, TypeVar, overload +from typing import Any, Callable, Generic, TypeVar, overload _T = TypeVar("_T") @@ -44,14 +44,14 @@ def __init__(self, name: str, func: Callable[[_T], _T_co]): ... @overload - def __get__(self, instance: None, owner: Type[_T]) -> "Minimal[_T, _T_co]": + def __get__(self, instance: None, owner: type[_T]) -> "Minimal[_T, _T_co]": ... @overload - def __get__(self, instance: _T, owner: Type[_T]) -> _T_co: + def __get__(self, instance: _T, owner: type[_T]) -> _T_co: ... - def __get__(self, instance: Optional[_T], owner: Type[_T]) -> Any: + def __get__(self, instance: _T | None, owner: type[_T]) -> Any: ... diff --git a/packages/pyright-internal/src/tests/samples/metaclass1.py b/packages/pyright-internal/src/tests/samples/metaclass1.py index 488c8eec1..e4adb7081 100644 --- a/packages/pyright-internal/src/tests/samples/metaclass1.py +++ b/packages/pyright-internal/src/tests/samples/metaclass1.py @@ -1,7 +1,7 @@ # This sample tests pyright's ability to use metaclasses. from ctypes import Array, c_uint64 -from typing import Any, Generic, TypeAlias, TypeVar +from typing import Any, TypeAlias, TypeVar myArray1 = (c_uint64 * 5)() diff --git a/packages/pyright-internal/src/tests/samples/metaclass5.py b/packages/pyright-internal/src/tests/samples/metaclass5.py index 7967a0860..8e5c641a0 100644 --- a/packages/pyright-internal/src/tests/samples/metaclass5.py +++ b/packages/pyright-internal/src/tests/samples/metaclass5.py @@ -1,33 +1,31 @@ # This sample tests the handling of metaclass magic methods for # binary operators. -from typing import Type - -class MetaFoo(type): - def __eq__(self, a: "Type[Foo]") -> str: +class MetaA(type): + def __eq__(self, a: "type[ClassA]") -> str: return "hi" - def __add__(self, a: "Type[Foo]") -> int: + def __add__(self, a: "type[ClassA]") -> int: return 0 -class Foo(metaclass=MetaFoo): +class ClassA(metaclass=MetaA): pass -def func1(a: Foo): - reveal_type(type(a), expected_text="type[Foo]") +def func1(a: ClassA): + reveal_type(type(a), expected_text="type[ClassA]") reveal_type(type("string1"), expected_text="type[str]") reveal_type(type(a) == type("hi"), expected_text="bool") reveal_type(type("hi") == type("hi"), expected_text="bool") reveal_type(str != str, expected_text="bool") - reveal_type(Foo == type(a), expected_text="str") - reveal_type(Foo != type(a), expected_text="bool") - reveal_type(type(a) == Foo, expected_text="str") + reveal_type(ClassA == type(a), expected_text="str") + reveal_type(ClassA != type(a), expected_text="bool") + reveal_type(type(a) == ClassA, expected_text="str") # This should generate an error x = str + str - reveal_type(Foo + Foo, expected_text="int") + reveal_type(ClassA + ClassA, expected_text="int") diff --git a/packages/pyright-internal/src/tests/samples/metaclass9.py b/packages/pyright-internal/src/tests/samples/metaclass9.py index 7fdf2b744..c0aa464d2 100644 --- a/packages/pyright-internal/src/tests/samples/metaclass9.py +++ b/packages/pyright-internal/src/tests/samples/metaclass9.py @@ -1,15 +1,15 @@ # This sample tests the handling of metaclass keyword arguments. -from typing import Tuple, Dict, Any, Type +from typing import Any from typing_extensions import Self class Meta1(type): def __new__( - cls: Type[Self], + cls: type[Self], cls_name: str, - bases: Tuple[type, ...], - attrs: Dict[str, Any], + bases: tuple[type, ...], + attrs: dict[str, Any], *, param1: int, param2: str, @@ -43,10 +43,10 @@ class Class1_5(metaclass=Meta1, param2="", param1=1, param4=3): class Meta2(type): def __new__( - cls: Type[Self], + cls: type[Self], cls_name: str, - bases: Tuple[type, ...], - attrs: Dict[str, Any], + bases: tuple[type, ...], + attrs: dict[str, Any], *, param1: int, **kwargs: str, diff --git a/packages/pyright-internal/src/tests/samples/methodOverride1.py b/packages/pyright-internal/src/tests/samples/methodOverride1.py index d648c467c..7846cf09b 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride1.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride1.py @@ -6,14 +6,10 @@ Callable, Generic, Iterable, - List, - Optional, ParamSpec, Sequence, - Type, TypedDict, TypeVar, - Union, overload, ) @@ -61,7 +57,7 @@ def my_method10(self, a: int, b: int): def my_method11(self, a: int, b: int): return 1 - def my_method12(self, a: Union[int, str]) -> Union[int, str]: + def my_method12(self, a: int | str) -> int | str: return 1 def my_method13(self, a: int) -> int: @@ -86,7 +82,7 @@ def my_method19(self, a: str, b: int, c: float, d: bool) -> None: ... @classmethod - def my_method20(cls: Type[T_ParentClass], a: str) -> T_ParentClass: + def my_method20(cls: type[T_ParentClass], a: str) -> T_ParentClass: ... def my_method21(self, var: int) -> None: @@ -128,11 +124,11 @@ def my_method30(cls, /) -> None: ... @staticmethod - def my_method31(a: "Type[ParentClass]", /) -> None: + def my_method31(a: "type[ParentClass]", /) -> None: ... @staticmethod - def my_method32(a: "Type[ParentClass]", /) -> None: + def my_method32(a: "type[ParentClass]", /) -> None: ... def my_method33(self, /) -> None: @@ -220,12 +216,12 @@ def my_method11(self, a: int, b: int, *, c: str = "", **kwargs): def my_method12(self, a: int) -> int: return 1 - def my_method13(self, a: Union[int, str]) -> int: + def my_method13(self, a: int | str) -> int: return 1 # This should generate an error because the return type is # wider than in the original method. - def my_method14(self, a: int) -> Union[int, str]: + def my_method14(self, a: int) -> int | str: return 1 # This should generate an error because we're overriding a @@ -248,7 +244,7 @@ def my_method19(self, b: str, *args: object, **kwargs: object) -> None: ... @classmethod - def my_method20(cls: Type[T_ChildClass], a: str) -> T_ChildClass: + def my_method20(cls: type[T_ChildClass], a: str) -> T_ChildClass: ... # This should generate an error. @@ -293,7 +289,7 @@ def my_method29(self, /) -> None: # This should generate an error because it is not a classmethod. @staticmethod - def my_method30(a: Type[ParentClass], /) -> None: + def my_method30(a: type[ParentClass], /) -> None: ... # This should generate an error because it is not a staticmethod. @@ -312,7 +308,7 @@ def my_method33(cls, /) -> None: # This should generate an error because it is not an instance method. @staticmethod - def my_method34(a: Type[ParentClass], /) -> None: + def my_method34(a: type[ParentClass], /) -> None: ... def my_method35(self, **kwargs: int) -> None: @@ -366,14 +362,14 @@ def test(self, t: Iterable[int], bbb: str = "") -> Sequence[str]: class NarrowerArgument(A): - # This should generate error because List[int] is narrower + # This should generate error because list[int] is narrower # than Iterable[int]. - def test(self, t: List[int]) -> Sequence[str]: + def test(self, t: list[int]) -> Sequence[str]: ... class NarrowerReturn(A): - def test(self, t: Sequence[int]) -> List[str]: + def test(self, t: Sequence[int]) -> list[str]: ... @@ -385,9 +381,9 @@ def test(self, t: Sequence[int]) -> Iterable[str]: class GeneralizedReturn2(A): - # This should generate an error because List[int] is + # This should generate an error because list[int] is # incompatible with Sequence[str]. - def test(self, t: Sequence[int]) -> List[int]: + def test(self, t: Sequence[int]) -> list[int]: ... @@ -396,12 +392,12 @@ def test(self, t: Sequence[int]) -> List[int]: class Base1: - def submit(self, fn: Callable[..., _T1], *args: Any, **kwargs: Any) -> List[_T1]: + def submit(self, fn: Callable[..., _T1], *args: Any, **kwargs: Any) -> list[_T1]: return [] class Base2(Base1): - def submit(self, fn: Callable[..., _T2], *args: Any, **kwargs: Any) -> List[_T2]: + def submit(self, fn: Callable[..., _T2], *args: Any, **kwargs: Any) -> list[_T2]: return [] @@ -414,15 +410,15 @@ class Foo: class ClassA(Generic[_T2A]): - def func1(self) -> Optional[_T2A]: + def func1(self) -> _T2A | None: return None @property - def prop1(self) -> Optional[_T2A]: + def prop1(self) -> _T2A | None: return None @property - def prop2(self) -> Optional[_T2A]: + def prop2(self) -> _T2A | None: return None @prop2.setter @@ -434,7 +430,7 @@ def prop2(self): pass @property - def prop3(self) -> Optional[_T2A]: + def prop3(self) -> _T2A | None: return None @prop3.setter @@ -442,7 +438,7 @@ def prop3(self, val: _T2A): pass @property - def prop4(self) -> Optional[_T2A]: + def prop4(self) -> _T2A | None: return None @prop4.deleter @@ -459,7 +455,7 @@ class ClassB(ClassA[_T2B]): # cannot override a property. prop1: _T2B - def func1(self) -> Optional[_T2B]: + def func1(self) -> _T2B | None: return None @property @@ -477,13 +473,13 @@ def prop2(self): # This should generate an error because it is missing # a setter (fset method). @property - def prop3(self) -> Optional[_T2B]: + def prop3(self) -> _T2B | None: return None # This should generate an error because it is missing # a deleter (fdel method). @property - def prop4(self) -> Optional[_T2B]: + def prop4(self) -> _T2B | None: return None # This should generate an error because prop4's getter @@ -529,4 +525,4 @@ def a(self) -> float: class MyObject(TypedDict): - values: List[str] + values: list[str] diff --git a/packages/pyright-internal/src/tests/samples/methodOverride5.py b/packages/pyright-internal/src/tests/samples/methodOverride5.py index 36ae2da6d..542496333 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride5.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride5.py @@ -8,11 +8,12 @@ Ts = TypeVarTuple("Ts") + class Parent(Generic[*Ts]): def method_1(self, *args: *Ts) -> None: ... - def method_2(self, *args: *tuple[*Ts]) -> None: + def method_2(self, *args: * tuple[*Ts]) -> None: ... @@ -22,4 +23,3 @@ def method_1(self, arg1: int) -> None: def method_2(self, arg1: int) -> None: ... - diff --git a/packages/pyright-internal/src/tests/samples/methods1.py b/packages/pyright-internal/src/tests/samples/methods1.py index 62f3f40c3..aa40c1b2a 100644 --- a/packages/pyright-internal/src/tests/samples/methods1.py +++ b/packages/pyright-internal/src/tests/samples/methods1.py @@ -1,15 +1,7 @@ # This sample tests that instance methods, regardless of how they're # defined or decorated, act like instance methods. -from typing import ( - Any, - Callable, - ClassVar, - Concatenate, - Generic, - ParamSpec, - TypeVar, -) +from typing import Any, Callable, ClassVar, Concatenate, Generic, ParamSpec, TypeVar P = ParamSpec("P") R = TypeVar("R") diff --git a/packages/pyright-internal/src/tests/samples/missingTypeArg1.py b/packages/pyright-internal/src/tests/samples/missingTypeArg1.py index 1f54cf634..0a2f093f0 100644 --- a/packages/pyright-internal/src/tests/samples/missingTypeArg1.py +++ b/packages/pyright-internal/src/tests/samples/missingTypeArg1.py @@ -1,7 +1,7 @@ # This sample tests the reportMissingTypeArgument diagnostic rule. import collections -from typing import Generic, Optional, TypeVar, Union +from typing import Generic, TypeVar _T1 = TypeVar("_T1") @@ -21,14 +21,14 @@ class Class2(Class1): # This should generate an error when reportMissingTypeArgument is enabled. -var1: Optional[Class1] = None +var1: Class1 | None = None -GenericTypeAlias = Union[Class1[_T1], int] +GenericTypeAlias = Class1[_T1] | int # This should generate an error when reportMissingTypeArgument is enabled. -var2: Optional[GenericTypeAlias] = None +var2: GenericTypeAlias | None = None class Class3(Generic[_T1, _T2]): diff --git a/packages/pyright-internal/src/tests/samples/nameBindings1.py b/packages/pyright-internal/src/tests/samples/nameBinding1.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/nameBindings1.py rename to packages/pyright-internal/src/tests/samples/nameBinding1.py diff --git a/packages/pyright-internal/src/tests/samples/nameBindings2.py b/packages/pyright-internal/src/tests/samples/nameBinding2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/nameBindings2.py rename to packages/pyright-internal/src/tests/samples/nameBinding2.py diff --git a/packages/pyright-internal/src/tests/samples/nameBindings3.py b/packages/pyright-internal/src/tests/samples/nameBinding3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/nameBindings3.py rename to packages/pyright-internal/src/tests/samples/nameBinding3.py diff --git a/packages/pyright-internal/src/tests/samples/nameBindings4.py b/packages/pyright-internal/src/tests/samples/nameBinding4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/nameBindings4.py rename to packages/pyright-internal/src/tests/samples/nameBinding4.py diff --git a/packages/pyright-internal/src/tests/samples/nameBindings5.py b/packages/pyright-internal/src/tests/samples/nameBinding5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/nameBindings5.py rename to packages/pyright-internal/src/tests/samples/nameBinding5.py diff --git a/packages/pyright-internal/src/tests/samples/isinstance10.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance13.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/isinstance10.py rename to packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance13.py diff --git a/packages/pyright-internal/src/tests/samples/isinstance9.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance14.py similarity index 83% rename from packages/pyright-internal/src/tests/samples/isinstance9.py rename to packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance14.py index a0fc82d14..4fed42982 100644 --- a/packages/pyright-internal/src/tests/samples/isinstance9.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance14.py @@ -1,7 +1,7 @@ # This sample tests the isinstance narrowing when the list # of classes includes a type defined by a type variable. -from typing import Any, Type, TypeVar, Union +from typing import Any, Type, TypeVar T = TypeVar("T") @@ -16,7 +16,7 @@ def func1(cls: Type[T], obj: Any) -> T: reveal_type(v1, expected_text="int") -def func2(klass: Type[T], obj: Union[T, int]) -> T: +def func2(klass: Type[T], obj: T | int) -> T: assert isinstance(obj, klass) reveal_type(obj, expected_text="T@func2") return obj diff --git a/packages/pyright-internal/src/tests/samples/isinstance7.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance15.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/isinstance7.py rename to packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance15.py diff --git a/packages/pyright-internal/src/tests/samples/isinstance6.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance16.py similarity index 55% rename from packages/pyright-internal/src/tests/samples/isinstance6.py rename to packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance16.py index e7b2ad824..a7b7281b7 100644 --- a/packages/pyright-internal/src/tests/samples/isinstance6.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance16.py @@ -2,18 +2,18 @@ # based on cls and self parameters. -class Foo: +class ClassA: @classmethod def bar(cls, other: type): if issubclass(other, cls): - reveal_type(other, expected_text="type[Self@Foo]") + reveal_type(other, expected_text="type[Self@ClassA]") if issubclass(other, (int, cls)): - reveal_type(other, expected_text="type[Self@Foo] | type[int]") + reveal_type(other, expected_text="type[Self@ClassA] | type[int]") def baz(self, other: object): if isinstance(other, type(self)): - reveal_type(other, expected_text="Self@Foo") + reveal_type(other, expected_text="Self@ClassA") if isinstance(other, (int, type(self))): - reveal_type(other, expected_text="Self@Foo | int") + reveal_type(other, expected_text="Self@ClassA | int") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance17.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance17.py new file mode 100644 index 000000000..5a8d62929 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance17.py @@ -0,0 +1,57 @@ +# This sample tests basic type narrowing behavior for +# the isinstance call. + +from typing import Any, List, Optional, Type, TypedDict, Union + + +def func1(x: Union[List[str], int]): + if isinstance(x, list): + reveal_type(x, expected_text="List[str]") + else: + reveal_type(x, expected_text="int") + + +def func2(x: Any): + if isinstance(x, list): + reveal_type(x, expected_text="list[Unknown]") + else: + reveal_type(x, expected_text="Any") + + +def func3(x): + if isinstance(x, list): + reveal_type(x, expected_text="list[Unknown]") + else: + reveal_type(x, expected_text="Unknown") + + +class SomeTypedDict(TypedDict): + name: str + + +def func4(x: Union[int, SomeTypedDict]): + if isinstance(x, dict): + reveal_type(x, expected_text="SomeTypedDict") + else: + reveal_type(x, expected_text="int") + + +def func5(x: int | str | complex): + if isinstance(x, (int, str)): + reveal_type(x, expected_text="int | str") + else: + reveal_type(x, expected_text="complex") + + +def func6(x: Type[int] | Type[str] | Type[complex]): + if issubclass(x, (int, str)): + reveal_type(x, expected_text="type[int] | type[str]") + else: + reveal_type(x, expected_text="type[complex]") + + +def func7(x: Optional[Union[int, SomeTypedDict]]): + if isinstance(x, (dict, type(None))): + reveal_type(x, expected_text="SomeTypedDict | None") + else: + reveal_type(x, expected_text="int") diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 209302f51..e3895ba1a 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -417,6 +417,39 @@ test('TypeNarrowingIsinstance12', () => { TestUtils.validateResults(analysisResults, 0); }); +test('TypeNarrowingIsinstance13.py', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsinstance13.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('TypeNarrowingIsinstance14', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsinstance14.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('TypeNarrowingIsinstance15', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsinstance15.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('TypeNarrowingIsinstance16', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsinstance16.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('TypeNarrowingIsinstance17', () => { + // This test requires Python 3.10 because it uses PEP 604 notation for unions. + const configOptions = new ConfigOptions('.'); + configOptions.defaultPythonVersion = PythonVersion.V3_10; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsinstance17.py'], configOptions); + + TestUtils.validateResults(analysisResults, 0); +}); + test('TypeNarrowingTupleLength1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingTupleLength1.py']); diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 1a65b9f8f..4a87f9621 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -269,10 +269,7 @@ test('NewType6', () => { }); test('isInstance1', () => { - // This test requires Python 3.10 because it uses PEP 604 notation for unions. - const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['isinstance1.py'], configOptions); + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['isinstance1.py']); TestUtils.validateResults(analysisResults, 0); }); @@ -301,36 +298,6 @@ test('isInstance4', () => { TestUtils.validateResults(analysisResults, 2); }); -test('isInstance5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['isinstance5.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - -test('isInstance6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['isinstance6.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - -test('isInstance7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['isinstance7.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - -test('isInstance9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['isinstance9.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - -test('isInstance10', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['isinstance10.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('Unbound1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['unbound1.py']); @@ -385,32 +352,32 @@ test('AssertType1', () => { TestUtils.validateResults(analysisResults, 11); }); -test('NameBindings1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBindings1.py']); +test('NameBinding1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBinding1.py']); TestUtils.validateResults(analysisResults, 5); }); -test('NameBindings2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBindings2.py']); +test('NameBinding2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBinding2.py']); TestUtils.validateResults(analysisResults, 1); }); -test('NameBindings3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBindings3.py']); +test('NameBinding3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBinding3.py']); TestUtils.validateResults(analysisResults, 3); }); -test('NameBindings4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBindings4.py']); +test('NameBinding4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBinding4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('NameBindings5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBindings5.py']); +test('NameBinding5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['nameBinding5.py']); TestUtils.validateResults(analysisResults, 0); }); diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 77e012302..b090db46b 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -166,230 +166,230 @@ test('Coroutines3', () => { TestUtils.validateResults(analysisResults, 0); }); -test('Loops1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops1.py']); +test('Loop1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop1.py']); TestUtils.validateResults(analysisResults, 2); }); -test('Loops2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops2.py']); +test('Loop2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop2.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops3.py']); +test('Loop3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop3.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops4.py']); +test('Loop4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops5.py']); +test('Loop5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop5.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops6.py']); +test('Loop6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop6.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops7.py']); +test('Loop7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop7.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops8.py']); +test('Loop8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop8.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops9.py']); +test('Loop9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop9.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops10', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops10.py']); +test('Loop10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop10.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops11', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops11.py']); +test('Loop11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop11.py']); TestUtils.validateResults(analysisResults, 3); }); -test('Loops12', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops12.py']); +test('Loop12', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop12.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Loops13', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops13.py']); +test('Loop13', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop13.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops14', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops14.py']); +test('Loop14', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop14.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops15', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops15.py']); +test('Loop15', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop15.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops16', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops16.py']); +test('Loop16', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop16.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops17', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops17.py']); +test('Loop17', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop17.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops18', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops18.py']); +test('Loop18', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop18.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops19', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops19.py']); +test('Loop19', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop19.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops20', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops20.py']); +test('Loop20', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop20.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops21', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops21.py']); +test('Loop21', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop21.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops22', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops22.py']); +test('Loop22', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop22.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops23', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops23.py']); +test('Loop23', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop23.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops24', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops24.py']); +test('Loop24', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop24.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops25', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops25.py']); +test('Loop25', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop25.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops26', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops26.py']); +test('Loop26', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop26.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops27', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops27.py']); +test('Loop27', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop27.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops28', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops28.py']); +test('Loop28', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop28.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops29', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops29.py']); +test('Loop29', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop29.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops30', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops30.py']); +test('Loop30', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop30.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops31', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops31.py']); +test('Loop31', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop31.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Loops32', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops32.py']); +test('Loop32', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop32.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops33', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops33.py']); +test('Loop33', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop33.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops34', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops34.py']); +test('Loop34', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop34.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops35', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops35.py']); +test('Loop35', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop35.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops36', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops36.py']); +test('Loop36', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop36.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops37', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops37.py']); +test('Loop37', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop37.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Loops38', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loops38.py']); +test('Loop38', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['loop38.py']); TestUtils.validateResults(analysisResults, 0); }); @@ -406,56 +406,56 @@ test('ForLoop2', () => { TestUtils.validateResults(analysisResults, 7); }); -test('ListComprehension1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['listComprehension1.py']); +test('Comprehension1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension1.py']); TestUtils.validateResults(analysisResults, 2); }); -test('ListComprehension2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['listComprehension2.py']); +test('Comprehension2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension2.py']); TestUtils.validateResults(analysisResults, 0); }); -test('ListComprehension3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['listComprehension3.py']); +test('Comprehension3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension3.py']); TestUtils.validateResults(analysisResults, 0); }); -test('ListComprehension4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['listComprehension4.py']); +test('Comprehension4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('ListComprehension5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['listComprehension5.py']); +test('Comprehension5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension5.py']); TestUtils.validateResults(analysisResults, 0); }); -test('ListComprehension6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['listComprehension6.py']); +test('Comprehension6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension6.py']); TestUtils.validateResults(analysisResults, 4); }); -test('ListComprehension7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['listComprehension7.py']); +test('Comprehension7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension7.py']); TestUtils.validateResults(analysisResults, 1); }); -test('ListComprehension8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['listComprehension8.py']); +test('Comprehension8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension8.py']); TestUtils.validateResults(analysisResults, 0); }); -test('ListComprehension9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['listComprehension9.py']); +test('Comprehension9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension9.py']); TestUtils.validateResults(analysisResults, 0); }); @@ -1187,90 +1187,90 @@ test('Match3', () => { configOptions.defaultPythonVersion = PythonVersion.V3_10; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match3.py'], configOptions); - TestUtils.validateResults(analysisResults, 4); + TestUtils.validateResults(analysisResults, 0); }); -test('Match4', () => { +test('MatchSequence1', () => { const configOptions = new ConfigOptions('.'); configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match4.py'], configOptions); - TestUtils.validateResults(analysisResults, 0); + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['matchSequence1.py'], configOptions); + TestUtils.validateResults(analysisResults, 2); }); -test('Match5', () => { +test('MatchClass1', () => { const configOptions = new ConfigOptions('.'); configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match5.py'], configOptions); - TestUtils.validateResults(analysisResults, 2); + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['matchClass1.py'], configOptions); + TestUtils.validateResults(analysisResults, 4); }); -test('Match6', () => { +test('MatchClass2', () => { const configOptions = new ConfigOptions('.'); configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match6.py'], configOptions); + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['matchClass2.py'], configOptions); TestUtils.validateResults(analysisResults, 0); }); -test('Match7', () => { +test('MatchClass3', () => { const configOptions = new ConfigOptions('.'); configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match7.py'], configOptions); - TestUtils.validateResults(analysisResults, 2); + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['matchClass3.py'], configOptions); + TestUtils.validateResults(analysisResults, 0); }); -test('Match8', () => { +test('MatchValue1', () => { const configOptions = new ConfigOptions('.'); configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match8.py'], configOptions); + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['matchValue1.py'], configOptions); TestUtils.validateResults(analysisResults, 0); }); -test('Match9', () => { +test('MatchMapping1', () => { + const configOptions = new ConfigOptions('.'); + + configOptions.defaultPythonVersion = PythonVersion.V3_10; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['matchMapping1.py'], configOptions); + TestUtils.validateResults(analysisResults, 2); +}); + +test('MatchLiteral1', () => { const configOptions = new ConfigOptions('.'); configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match9.py'], configOptions); + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['matchLiteral1.py'], configOptions); TestUtils.validateResults(analysisResults, 0); }); -test('Match10', () => { +test('MatchExhaustion1', () => { const configOptions = new ConfigOptions('.'); configOptions.defaultPythonVersion = PythonVersion.V3_10; configOptions.diagnosticRuleSet.reportMatchNotExhaustive = 'none'; - const analysisResults1 = TestUtils.typeAnalyzeSampleFiles(['match10.py'], configOptions); + const analysisResults1 = TestUtils.typeAnalyzeSampleFiles(['matchExhaustion1.py'], configOptions); TestUtils.validateResults(analysisResults1, 0); configOptions.diagnosticRuleSet.reportMatchNotExhaustive = 'error'; - const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['match10.py'], configOptions); + const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['matchExhaustion1.py'], configOptions); TestUtils.validateResults(analysisResults2, 4); }); -test('Match11', () => { +test('MatchUnnecessary1', () => { const configOptions = new ConfigOptions('.'); configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults1 = TestUtils.typeAnalyzeSampleFiles(['match11.py'], configOptions); + const analysisResults1 = TestUtils.typeAnalyzeSampleFiles(['matchUnnecessary1.py'], configOptions); TestUtils.validateResults(analysisResults1, 0); configOptions.diagnosticRuleSet.reportUnnecessaryComparison = 'error'; - const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['match11.py'], configOptions); + const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['matchUnnecessary1.py'], configOptions); TestUtils.validateResults(analysisResults2, 7); }); -test('Match12', () => { - const configOptions = new ConfigOptions('.'); - - configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match12.py'], configOptions); - TestUtils.validateResults(analysisResults, 0); -}); - test('List1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['list1.py']); TestUtils.validateResults(analysisResults, 3); From cd257f722eaf234ae34b6090a7a04923fa29856e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 15:38:13 -0700 Subject: [PATCH 326/525] Next batch of test case cleanup. --- .../src/tests/samples/genericType44.py | 2 +- .../{namedTuples1.py => namedTuple1.py} | 14 +- .../{namedTuples2.py => namedTuple2.py} | 0 .../{namedTuples3.py => namedTuple3.py} | 3 +- .../{namedTuples4.py => namedTuple4.py} | 0 .../{namedTuples5.py => namedTuple5.py} | 0 .../{namedTuples6.py => namedTuple6.py} | 0 .../{namedTuples7.py => namedTuple7.py} | 6 +- .../{namedTuples8.py => namedTuple8.py} | 0 .../src/tests/samples/never2.py | 7 +- .../src/tests/samples/newType1.py | 4 +- .../src/tests/samples/newType3.py | 2 +- .../src/tests/samples/newType4.py | 8 + .../src/tests/samples/none1.py | 4 +- .../src/tests/samples/none2.py | 5 +- .../src/tests/samples/noreturn2.py | 16 +- .../src/tests/samples/noreturn3.py | 4 +- .../samples/{operators1.py => operator1.py} | 8 +- .../samples/{operators10.py => operator10.py} | 0 .../samples/{operators2.py => operator2.py} | 0 .../samples/{operators11.py => operator3.py} | 0 .../samples/{operators4.py => operator4.py} | 0 .../samples/{operators5.py => operator5.py} | 0 .../samples/{operators6.py => operator6.py} | 0 .../samples/{operators7.py => operator7.py} | 0 .../samples/{operators8.py => operator8.py} | 0 .../samples/{operators9.py => operator9.py} | 4 +- .../src/tests/samples/overload1.py | 2 +- .../src/tests/samples/overload12.py | 13 +- .../src/tests/samples/overload13.py | 1 - .../src/tests/samples/overload14.py | 1 + .../src/tests/samples/overload2.py | 20 +-- .../src/tests/samples/overload3.py | 8 +- .../src/tests/samples/overload4.py | 16 +- .../src/tests/samples/overload5.py | 35 ++--- .../src/tests/samples/overload6.py | 4 +- .../src/tests/samples/overload7.py | 62 +++----- .../src/tests/samples/overload8.py | 30 ++-- .../src/tests/samples/paramNames1.py | 4 +- .../src/tests/samples/paramSpec1.py | 33 ++-- .../src/tests/samples/paramSpec11.py | 8 +- .../src/tests/samples/paramSpec12.py | 3 +- .../src/tests/samples/paramSpec13.py | 19 +-- .../src/tests/samples/paramSpec16.py | 11 +- .../src/tests/samples/paramSpec17.py | 18 +-- .../src/tests/samples/paramSpec18.py | 8 +- .../src/tests/samples/paramSpec2.py | 14 +- .../src/tests/samples/paramSpec22.py | 16 +- .../src/tests/samples/paramSpec23.py | 9 +- .../src/tests/samples/paramSpec25.py | 5 +- .../src/tests/samples/paramSpec26.py | 6 +- .../src/tests/samples/paramSpec3.py | 50 +++--- .../src/tests/samples/paramSpec34.py | 26 ++-- .../src/tests/samples/paramSpec36.py | 12 +- .../src/tests/samples/paramSpec37.py | 18 +-- .../src/tests/samples/paramSpec38.py | 14 +- .../src/tests/samples/paramSpec39.py | 6 +- .../src/tests/samples/paramSpec4.py | 1 + .../src/tests/samples/paramSpec5.py | 12 +- .../src/tests/samples/paramSpec6.py | 8 +- .../src/tests/samples/paramSpec7.py | 14 +- .../src/tests/samples/paramType1.py | 16 +- .../src/tests/samples/partial3.py | 4 +- .../samples/{properties1.py => property1.py} | 2 +- .../{properties10.py => property10.py} | 4 +- .../{properties11.py => property11.py} | 4 +- .../{properties12.py => property12.py} | 0 .../{properties13.py => property13.py} | 0 .../{properties14.py => property14.py} | 6 +- .../{properties15.py => property15.py} | 0 .../samples/{properties2.py => property2.py} | 0 .../samples/{properties3.py => property3.py} | 0 .../samples/{properties4.py => property4.py} | 0 .../samples/{properties5.py => property5.py} | 0 .../samples/{properties6.py => property6.py} | 8 +- .../samples/{properties7.py => property7.py} | 0 .../samples/{properties8.py => property8.py} | 2 +- .../samples/{properties9.py => property9.py} | 0 .../src/tests/typeEvaluator1.test.ts | 142 +++++++++--------- .../src/tests/typeEvaluator2.test.ts | 2 +- 80 files changed, 357 insertions(+), 427 deletions(-) rename packages/pyright-internal/src/tests/samples/{namedTuples1.py => namedTuple1.py} (87%) rename packages/pyright-internal/src/tests/samples/{namedTuples2.py => namedTuple2.py} (100%) rename packages/pyright-internal/src/tests/samples/{namedTuples3.py => namedTuple3.py} (88%) rename packages/pyright-internal/src/tests/samples/{namedTuples4.py => namedTuple4.py} (100%) rename packages/pyright-internal/src/tests/samples/{namedTuples5.py => namedTuple5.py} (100%) rename packages/pyright-internal/src/tests/samples/{namedTuples6.py => namedTuple6.py} (100%) rename packages/pyright-internal/src/tests/samples/{namedTuples7.py => namedTuple7.py} (95%) rename packages/pyright-internal/src/tests/samples/{namedTuples8.py => namedTuple8.py} (100%) rename packages/pyright-internal/src/tests/samples/{operators1.py => operator1.py} (93%) rename packages/pyright-internal/src/tests/samples/{operators10.py => operator10.py} (100%) rename packages/pyright-internal/src/tests/samples/{operators2.py => operator2.py} (100%) rename packages/pyright-internal/src/tests/samples/{operators11.py => operator3.py} (100%) rename packages/pyright-internal/src/tests/samples/{operators4.py => operator4.py} (100%) rename packages/pyright-internal/src/tests/samples/{operators5.py => operator5.py} (100%) rename packages/pyright-internal/src/tests/samples/{operators6.py => operator6.py} (100%) rename packages/pyright-internal/src/tests/samples/{operators7.py => operator7.py} (100%) rename packages/pyright-internal/src/tests/samples/{operators8.py => operator8.py} (100%) rename packages/pyright-internal/src/tests/samples/{operators9.py => operator9.py} (75%) rename packages/pyright-internal/src/tests/samples/{properties1.py => property1.py} (98%) rename packages/pyright-internal/src/tests/samples/{properties10.py => property10.py} (92%) rename packages/pyright-internal/src/tests/samples/{properties11.py => property11.py} (90%) rename packages/pyright-internal/src/tests/samples/{properties12.py => property12.py} (100%) rename packages/pyright-internal/src/tests/samples/{properties13.py => property13.py} (100%) rename packages/pyright-internal/src/tests/samples/{properties14.py => property14.py} (94%) rename packages/pyright-internal/src/tests/samples/{properties15.py => property15.py} (100%) rename packages/pyright-internal/src/tests/samples/{properties2.py => property2.py} (100%) rename packages/pyright-internal/src/tests/samples/{properties3.py => property3.py} (100%) rename packages/pyright-internal/src/tests/samples/{properties4.py => property4.py} (100%) rename packages/pyright-internal/src/tests/samples/{properties5.py => property5.py} (100%) rename packages/pyright-internal/src/tests/samples/{properties6.py => property6.py} (78%) rename packages/pyright-internal/src/tests/samples/{properties7.py => property7.py} (100%) rename packages/pyright-internal/src/tests/samples/{properties8.py => property8.py} (97%) rename packages/pyright-internal/src/tests/samples/{properties9.py => property9.py} (100%) diff --git a/packages/pyright-internal/src/tests/samples/genericType44.py b/packages/pyright-internal/src/tests/samples/genericType44.py index 5cebd203d..e31bb861c 100644 --- a/packages/pyright-internal/src/tests/samples/genericType44.py +++ b/packages/pyright-internal/src/tests/samples/genericType44.py @@ -16,7 +16,7 @@ def func1(future: Future[_T]) -> Future[_T]: ... -def func2(coro: Awaitable[_T]) -> Future[_T]: +def func2(cb: Awaitable[_T]) -> Future[_T]: ... diff --git a/packages/pyright-internal/src/tests/samples/namedTuples1.py b/packages/pyright-internal/src/tests/samples/namedTuple1.py similarity index 87% rename from packages/pyright-internal/src/tests/samples/namedTuples1.py rename to packages/pyright-internal/src/tests/samples/namedTuple1.py index b0ba616a8..2006a5266 100644 --- a/packages/pyright-internal/src/tests/samples/namedTuples1.py +++ b/packages/pyright-internal/src/tests/samples/namedTuple1.py @@ -1,7 +1,7 @@ # This sample tests the type checker's handling of named tuples. -from collections import defaultdict, namedtuple -from typing import NamedTuple, Tuple +from collections import namedtuple +from typing import NamedTuple NamedTuple1 = namedtuple("NamedTuple1", "field1 field2") NamedTuple1(1, 2) @@ -19,10 +19,10 @@ # should be two parameters. NamedTuple1(1, 2, 3) -s1: Tuple[float, float] = NamedTuple1(3, 4) +s1: tuple[float, float] = NamedTuple1(3, 4) # This should generate an error because there are not enough entries. -s2: Tuple[float, float, float] = NamedTuple1(3, 4) +s2: tuple[float, float, float] = NamedTuple1(3, 4) NamedTuple2 = namedtuple("NamedTuple2", "field1, field2") NamedTuple2.__new__.__defaults__ = ([],) @@ -53,13 +53,13 @@ # type mismatch. NamedTuple3(field2=1, field1=2) -t1: Tuple[str, float] = NamedTuple3("hello", 2) +t1: tuple[str, float] = NamedTuple3("hello", 2) # This should generate an error because the types are incompatible. -t2: Tuple[float, float] = NamedTuple3("hello", 2) +t2: tuple[float, float] = NamedTuple3("hello", 2) # This should generate an error because the lengths are incompatible. -t3: Tuple[str, float, str] = NamedTuple3("hello", 2) +t3: tuple[str, float, str] = NamedTuple3("hello", 2) t4: NamedTuple = NamedTuple3("hello", 2) diff --git a/packages/pyright-internal/src/tests/samples/namedTuples2.py b/packages/pyright-internal/src/tests/samples/namedTuple2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/namedTuples2.py rename to packages/pyright-internal/src/tests/samples/namedTuple2.py diff --git a/packages/pyright-internal/src/tests/samples/namedTuples3.py b/packages/pyright-internal/src/tests/samples/namedTuple3.py similarity index 88% rename from packages/pyright-internal/src/tests/samples/namedTuples3.py rename to packages/pyright-internal/src/tests/samples/namedTuple3.py index c6b7c446b..f5afd3287 100644 --- a/packages/pyright-internal/src/tests/samples/namedTuples3.py +++ b/packages/pyright-internal/src/tests/samples/namedTuple3.py @@ -3,7 +3,8 @@ from typing import Generic, NamedTuple, TypeVar -# This should generate an error + +# This should generate an error. class A(NamedTuple, object): x: int diff --git a/packages/pyright-internal/src/tests/samples/namedTuples4.py b/packages/pyright-internal/src/tests/samples/namedTuple4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/namedTuples4.py rename to packages/pyright-internal/src/tests/samples/namedTuple4.py diff --git a/packages/pyright-internal/src/tests/samples/namedTuples5.py b/packages/pyright-internal/src/tests/samples/namedTuple5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/namedTuples5.py rename to packages/pyright-internal/src/tests/samples/namedTuple5.py diff --git a/packages/pyright-internal/src/tests/samples/namedTuples6.py b/packages/pyright-internal/src/tests/samples/namedTuple6.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/namedTuples6.py rename to packages/pyright-internal/src/tests/samples/namedTuple6.py diff --git a/packages/pyright-internal/src/tests/samples/namedTuples7.py b/packages/pyright-internal/src/tests/samples/namedTuple7.py similarity index 95% rename from packages/pyright-internal/src/tests/samples/namedTuples7.py rename to packages/pyright-internal/src/tests/samples/namedTuple7.py index 65954d6aa..81dca88db 100644 --- a/packages/pyright-internal/src/tests/samples/namedTuples7.py +++ b/packages/pyright-internal/src/tests/samples/namedTuple7.py @@ -18,10 +18,12 @@ class NT1(NamedTuple, Generic[_T1]): reveal_type(NT1(3.4, 4, [1, 2]), expected_text="NT1[float]") reveal_type(NT1(3.4, 4, [2j]), expected_text="NT1[complex]") -class NT2(NT1[str]): ... + +class NT2(NT1[str]): + ... + reveal_type(NT2("", 4, []), expected_text="NT2") # This should generate an error. NT2(1, 4, []) - diff --git a/packages/pyright-internal/src/tests/samples/namedTuples8.py b/packages/pyright-internal/src/tests/samples/namedTuple8.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/namedTuples8.py rename to packages/pyright-internal/src/tests/samples/namedTuple8.py diff --git a/packages/pyright-internal/src/tests/samples/never2.py b/packages/pyright-internal/src/tests/samples/never2.py index 325883ec3..a73fa22e7 100644 --- a/packages/pyright-internal/src/tests/samples/never2.py +++ b/packages/pyright-internal/src/tests/samples/never2.py @@ -6,18 +6,23 @@ U = TypeVar("U") T_co = TypeVar("T_co", covariant=True) + + class ClassA(Generic[T_co]): pass + def func1(x: U) -> ClassA[U]: return ClassA[Never]() T = TypeVar("T") + + class ClassB(Generic[T]): pass + def func2(x: U) -> ClassB[U]: # This should generate an error because T is invariant. return ClassB[Never]() - diff --git a/packages/pyright-internal/src/tests/samples/newType1.py b/packages/pyright-internal/src/tests/samples/newType1.py index 0772c463a..ea0a410d0 100644 --- a/packages/pyright-internal/src/tests/samples/newType1.py +++ b/packages/pyright-internal/src/tests/samples/newType1.py @@ -1,7 +1,7 @@ # This sample tests the type handler's handling of the # built-in NewType function. -from typing import NewType, Type, TypeVar +from typing import NewType, TypeVar MyString = NewType("MyString", str) @@ -27,7 +27,7 @@ def must_take_my_string(p1: MyString): _T = TypeVar("_T") -def func1(x: Type[_T]) -> Type[_T]: +def func1(x: type[_T]) -> type[_T]: return x diff --git a/packages/pyright-internal/src/tests/samples/newType3.py b/packages/pyright-internal/src/tests/samples/newType3.py index f0985900a..5d6648da6 100644 --- a/packages/pyright-internal/src/tests/samples/newType3.py +++ b/packages/pyright-internal/src/tests/samples/newType3.py @@ -1,7 +1,7 @@ # This sample tests that the type checker is properly synthesizing # a constructor for a NewType. -from typing import NewType, Union +from typing import NewType UserId = NewType("UserId", int) diff --git a/packages/pyright-internal/src/tests/samples/newType4.py b/packages/pyright-internal/src/tests/samples/newType4.py index 9a9836878..26862a517 100644 --- a/packages/pyright-internal/src/tests/samples/newType4.py +++ b/packages/pyright-internal/src/tests/samples/newType4.py @@ -3,6 +3,14 @@ from typing import Literal, NewType, Sized, Union +# This should generate an error. A = NewType("A", Union[int, str]) + +# This should generate an error. B = NewType("B", Literal[1]) + +# This should generate an error. C = NewType("B", Sized) + +# This should generate an error. +D = NewType("A", int | str) diff --git a/packages/pyright-internal/src/tests/samples/none1.py b/packages/pyright-internal/src/tests/samples/none1.py index e87461918..1297fa8f4 100644 --- a/packages/pyright-internal/src/tests/samples/none1.py +++ b/packages/pyright-internal/src/tests/samples/none1.py @@ -1,6 +1,6 @@ # This sample tests properties of the special NoneType. -from typing import Hashable, Iterable, Optional +from typing import Hashable, Iterable a: Hashable = None @@ -12,7 +12,7 @@ c.__doc__ -def func1(a: Optional[int]): +def func1(a: int | None): a.__class__ a.__doc__ diff --git a/packages/pyright-internal/src/tests/samples/none2.py b/packages/pyright-internal/src/tests/samples/none2.py index 1d995aac1..a92ad85bc 100644 --- a/packages/pyright-internal/src/tests/samples/none2.py +++ b/packages/pyright-internal/src/tests/samples/none2.py @@ -1,10 +1,7 @@ # This sample checks that type[None] is handled correctly. -from typing import Type - - -def func1(a: Type[None]) -> Type[str] | Type[None]: +def func1(a: type[None]) -> type[str] | type[None]: reveal_type(a, expected_text="type[None]") # This should generate an error because None is diff --git a/packages/pyright-internal/src/tests/samples/noreturn2.py b/packages/pyright-internal/src/tests/samples/noreturn2.py index 49e726413..ddf46897a 100644 --- a/packages/pyright-internal/src/tests/samples/noreturn2.py +++ b/packages/pyright-internal/src/tests/samples/noreturn2.py @@ -1,33 +1,33 @@ # This sample tests that the NoReturn logic is able to handle # union types in call expressions. -from typing import NoReturn, Union +from typing import NoReturn -def f() -> NoReturn: +def func1() -> NoReturn: raise TypeError -class B(object): +class B: def always_noreturn(self) -> NoReturn: - f() + func1() def sometimes_noreturn(self) -> NoReturn: raise TypeError -class C(object): +class C: def always_noreturn(self) -> NoReturn: - f() + func1() def sometimes_noreturn(self) -> int: return 0 -class A(object): +class A: def __init__(self): # Note the union type declaration here. - self._B_or_C: Union[B, C] = B() + self._B_or_C: B | C = B() def m3(self) -> NoReturn: self._B_or_C.always_noreturn() diff --git a/packages/pyright-internal/src/tests/samples/noreturn3.py b/packages/pyright-internal/src/tests/samples/noreturn3.py index b226930f5..d3058f1e4 100644 --- a/packages/pyright-internal/src/tests/samples/noreturn3.py +++ b/packages/pyright-internal/src/tests/samples/noreturn3.py @@ -5,9 +5,7 @@ class MyClass: - def no_return( - self, - ) -> NoReturn: + def no_return(self) -> NoReturn: ... diff --git a/packages/pyright-internal/src/tests/samples/operators1.py b/packages/pyright-internal/src/tests/samples/operator1.py similarity index 93% rename from packages/pyright-internal/src/tests/samples/operators1.py rename to packages/pyright-internal/src/tests/samples/operator1.py index 983b8d8c4..b3fc33383 100644 --- a/packages/pyright-internal/src/tests/samples/operators1.py +++ b/packages/pyright-internal/src/tests/samples/operator1.py @@ -1,15 +1,13 @@ # This sample tests the type checker's ability to check # custom operator overrides. -from typing import Union - -class A(object): +class A: def __eq__(self, Foo): return "equal" -class B(object): +class B: def __ne__(self, Bar): return self @@ -30,7 +28,7 @@ def needs_a_string(val: str): pass -def needs_a_string_or_bool(val: Union[bool, str]): +def needs_a_string_or_bool(val: bool | str): pass diff --git a/packages/pyright-internal/src/tests/samples/operators10.py b/packages/pyright-internal/src/tests/samples/operator10.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/operators10.py rename to packages/pyright-internal/src/tests/samples/operator10.py diff --git a/packages/pyright-internal/src/tests/samples/operators2.py b/packages/pyright-internal/src/tests/samples/operator2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/operators2.py rename to packages/pyright-internal/src/tests/samples/operator2.py diff --git a/packages/pyright-internal/src/tests/samples/operators11.py b/packages/pyright-internal/src/tests/samples/operator3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/operators11.py rename to packages/pyright-internal/src/tests/samples/operator3.py diff --git a/packages/pyright-internal/src/tests/samples/operators4.py b/packages/pyright-internal/src/tests/samples/operator4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/operators4.py rename to packages/pyright-internal/src/tests/samples/operator4.py diff --git a/packages/pyright-internal/src/tests/samples/operators5.py b/packages/pyright-internal/src/tests/samples/operator5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/operators5.py rename to packages/pyright-internal/src/tests/samples/operator5.py diff --git a/packages/pyright-internal/src/tests/samples/operators6.py b/packages/pyright-internal/src/tests/samples/operator6.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/operators6.py rename to packages/pyright-internal/src/tests/samples/operator6.py diff --git a/packages/pyright-internal/src/tests/samples/operators7.py b/packages/pyright-internal/src/tests/samples/operator7.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/operators7.py rename to packages/pyright-internal/src/tests/samples/operator7.py diff --git a/packages/pyright-internal/src/tests/samples/operators8.py b/packages/pyright-internal/src/tests/samples/operator8.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/operators8.py rename to packages/pyright-internal/src/tests/samples/operator8.py diff --git a/packages/pyright-internal/src/tests/samples/operators9.py b/packages/pyright-internal/src/tests/samples/operator9.py similarity index 75% rename from packages/pyright-internal/src/tests/samples/operators9.py rename to packages/pyright-internal/src/tests/samples/operator9.py index f3acb70d0..2d4e3eb72 100644 --- a/packages/pyright-internal/src/tests/samples/operators9.py +++ b/packages/pyright-internal/src/tests/samples/operator9.py @@ -1,14 +1,14 @@ # This sample tests bidirectional type inference for | operators. This # should apply only to TypedDict types. -from typing import Literal, TypeVar, Generic, Callable, Union +from typing import Literal, TypeVar, Generic, Callable T1 = TypeVar("T1") T2 = TypeVar("T2") class S(Generic[T1]): - def __or__(self, other: "S[T2]") -> "S[Union[T1, T2]]": + def __or__(self, other: "S[T2]") -> "S[T1 | T2]": ... diff --git a/packages/pyright-internal/src/tests/samples/overload1.py b/packages/pyright-internal/src/tests/samples/overload1.py index ad06b133a..86b0744b8 100644 --- a/packages/pyright-internal/src/tests/samples/overload1.py +++ b/packages/pyright-internal/src/tests/samples/overload1.py @@ -1,6 +1,6 @@ # This sample tests the type checker's handling of the overload decorator. -from typing import overload, Optional +from typing import overload from datetime import datetime, timezone, timedelta diff --git a/packages/pyright-internal/src/tests/samples/overload12.py b/packages/pyright-internal/src/tests/samples/overload12.py index eaa0f6b79..3d2eee77b 100644 --- a/packages/pyright-internal/src/tests/samples/overload12.py +++ b/packages/pyright-internal/src/tests/samples/overload12.py @@ -1,7 +1,6 @@ # This sample tests overload matching in cases where the match # is ambiguous due to an Any or Unknown argument. -from __future__ import annotations from typing import Any, Generic, Literal, TypeVar, overload from typing_extensions import LiteralString @@ -144,14 +143,14 @@ def func6(y: list[Any]): class ClassA(Generic[_T]): @overload - def m1(self: ClassA[int]) -> ClassA[int]: + def m1(self: "ClassA[int]") -> "ClassA[int]": ... @overload - def m1(self: ClassA[str]) -> ClassA[str]: + def m1(self: "ClassA[str]") -> "ClassA[str]": ... - def m1(self) -> ClassA[Any]: + def m1(self) -> "ClassA[Any]": return self @@ -161,14 +160,14 @@ def func7(a: ClassA[Any]): class ClassB(Generic[_T]): @overload - def m1(self: ClassB[int], obj: int | ClassB[int]) -> ClassB[int]: + def m1(self: "ClassB[int]", obj: "int | ClassB[int]") -> "ClassB[int]": ... @overload - def m1(self: ClassB[str], obj: str | ClassB[str]) -> ClassB[str]: + def m1(self: "ClassB[str]", obj: "str | ClassB[str]") -> "ClassB[str]": ... - def m1(self, obj: Any) -> ClassB[Any]: + def m1(self, obj: Any) -> "ClassB[Any]": return self diff --git a/packages/pyright-internal/src/tests/samples/overload13.py b/packages/pyright-internal/src/tests/samples/overload13.py index 0bd5f6dd4..989e35418 100644 --- a/packages/pyright-internal/src/tests/samples/overload13.py +++ b/packages/pyright-internal/src/tests/samples/overload13.py @@ -3,4 +3,3 @@ l: list[str] = [] "{s}".format(s="\n".join(sorted(l))) - diff --git a/packages/pyright-internal/src/tests/samples/overload14.py b/packages/pyright-internal/src/tests/samples/overload14.py index 258eb13e6..005ef0dd6 100644 --- a/packages/pyright-internal/src/tests/samples/overload14.py +++ b/packages/pyright-internal/src/tests/samples/overload14.py @@ -4,5 +4,6 @@ import subprocess + def my_method(cmd, *args, **kwargs): return subprocess.run(cmd, *args, **kwargs) diff --git a/packages/pyright-internal/src/tests/samples/overload2.py b/packages/pyright-internal/src/tests/samples/overload2.py index 5b8541a78..c989007ca 100644 --- a/packages/pyright-internal/src/tests/samples/overload2.py +++ b/packages/pyright-internal/src/tests/samples/overload2.py @@ -1,7 +1,7 @@ # This sample verifies that overloads work in # conjunction with async methods. -from typing import Union, overload +from typing import overload @overload @@ -14,24 +14,16 @@ async def func(x: str) -> str: ... -async def func(x) -> Union[int, str]: +async def func(x) -> int | str: if isinstance(x, int): return 32 else: return "that" -def requires_str(a: str): - pass - - -def requires_int(a: int): - pass - - async def test_function(): - should_be_str = await func("2") - requires_str(should_be_str) + v1 = await func("2") + reveal_type(v1, expected_text="str") - should_be_int = await func(2) - requires_int(should_be_int) + v2 = await func(2) + reveal_type(v2, expected_text="int") diff --git a/packages/pyright-internal/src/tests/samples/overload3.py b/packages/pyright-internal/src/tests/samples/overload3.py index 93ea72b2b..a95238567 100644 --- a/packages/pyright-internal/src/tests/samples/overload3.py +++ b/packages/pyright-internal/src/tests/samples/overload3.py @@ -2,7 +2,7 @@ # final function that omits the @overload decorator when matching # a caller against an overloaded function. -from typing import Union, TypeVar, overload, Tuple, Optional +from typing import TypeVar, overload T = TypeVar("T") @@ -13,13 +13,13 @@ def mouse_event(x1: int, y1: int) -> int: @overload -def mouse_event(x1: int, y1: int, x2: int, y2: int) -> Tuple[int, int]: +def mouse_event(x1: int, y1: int, x2: int, y2: int) -> tuple[int, int]: ... def mouse_event( - x1: int, y1: int, x2: Optional[int] = None, y2: Optional[int] = None -) -> Union[int, Tuple[int, int]]: + x1: int, y1: int, x2: int | None = None, y2: int | None = None +) -> int | tuple[int, int]: return 1 diff --git a/packages/pyright-internal/src/tests/samples/overload4.py b/packages/pyright-internal/src/tests/samples/overload4.py index 8dda322e0..8873d60db 100644 --- a/packages/pyright-internal/src/tests/samples/overload4.py +++ b/packages/pyright-internal/src/tests/samples/overload4.py @@ -6,41 +6,41 @@ # This should generate an error because there is only one overload. @overload -def foo1() -> None: +def func1() -> None: ... -def foo1() -> None: +def func1() -> None: ... # This should generate an error because there is only one overload. @overload -def foo2(a: int) -> None: +def func2(a: int) -> None: ... -def foo2(a: int) -> None: +def func2(a: int) -> None: pass class ClassA: # This should generate an error because there is no implementation. @overload - def foo3(self) -> None: + def func3(self) -> None: ... @overload - def foo3(self, a: int) -> None: + def func3(self, a: int) -> None: ... class ClassB(Protocol): # An implementation should not be required in a protocol class. @overload - def foo(self) -> None: + def func4(self) -> None: ... @overload - def foo(self, name: str) -> str: + def func4(self, name: str) -> str: ... diff --git a/packages/pyright-internal/src/tests/samples/overload5.py b/packages/pyright-internal/src/tests/samples/overload5.py index 0acae1462..e7b44a249 100644 --- a/packages/pyright-internal/src/tests/samples/overload5.py +++ b/packages/pyright-internal/src/tests/samples/overload5.py @@ -1,24 +1,11 @@ # This sample tests the type checker's detection of overlapping # overload declarations. -from typing import ( - Any, - Generic, - List, - Literal, - Optional, - Protocol, - Sequence, - Tuple, - Type, - TypeVar, - Union, - overload, -) +from typing import Any, Generic, Literal, Protocol, Sequence, TypeVar, overload @overload -def func1(a: float, b: Optional[float], c: Optional[bool] = None) -> int: +def func1(a: float, b: float | None, c: bool | None = None) -> int: ... @@ -119,11 +106,11 @@ def func5(*args: Any, **kwargs: Any) -> Any: class GenericClass(Generic[_T1, _T2]): @overload - def method1(self, a: _T1, b: Tuple[_T2, ...]) -> int: + def method1(self, a: _T1, b: tuple[_T2, ...]) -> int: ... @overload - def method1(self, a: _T1, b: Tuple[Any, ...]) -> int: + def method1(self, a: _T1, b: tuple[Any, ...]) -> int: ... def method1(self, *args: Any, **kwargs: Any) -> Any: @@ -201,7 +188,7 @@ def func13(x: int) -> str: @overload -def func13(x: Union[int, str]) -> int: +def func13(x: int | str) -> int: ... @@ -240,26 +227,26 @@ def func15(*args: Any, **kwargs: Any) -> Any: @overload -def func16(var: None) -> List[Any]: +def func16(var: None) -> list[Any]: ... @overload -def func16(var: _T1) -> List[_T1]: +def func16(var: _T1) -> list[_T1]: ... -def func16(var: Union[_T1, None]) -> List[_T1] | List[Any]: +def func16(var: _T1 | None) -> list[_T1] | list[Any]: ... @overload -def func17(a: int, b: List[int]) -> int: +def func17(a: int, b: list[int]) -> int: ... @overload -def func17(a: int, b: List[_T1]) -> _T1: +def func17(a: int, b: list[_T1]) -> _T1: ... @@ -296,7 +283,7 @@ def __call__(self, f: _T1 | None) -> _T1: class ClassC: @overload - def method1(self, x: Type[Any]) -> bool: + def method1(self, x: type[Any]) -> bool: ... @overload diff --git a/packages/pyright-internal/src/tests/samples/overload6.py b/packages/pyright-internal/src/tests/samples/overload6.py index 4c543b59d..19242d5ed 100644 --- a/packages/pyright-internal/src/tests/samples/overload6.py +++ b/packages/pyright-internal/src/tests/samples/overload6.py @@ -5,7 +5,7 @@ # includes an overloaded method. from fractions import Fraction -from typing import Any, Optional, Protocol, TypeVar, Union, overload +from typing import Any, Optional, Protocol, TypeVar, overload v1 = round(Fraction(1)) @@ -52,7 +52,7 @@ def __round__(self, ndigits: int) -> "Fraction": def __round__(self, ndigits: None = ...) -> int: ... - def __round__(self, ndigits: Optional[int] = None) -> Union["Fraction", int]: + def __round__(self, ndigits: Optional[int] = None) -> "Fraction | int": ... diff --git a/packages/pyright-internal/src/tests/samples/overload7.py b/packages/pyright-internal/src/tests/samples/overload7.py index ab55a8e98..5d3aa9d4b 100644 --- a/packages/pyright-internal/src/tests/samples/overload7.py +++ b/packages/pyright-internal/src/tests/samples/overload7.py @@ -5,22 +5,17 @@ Any, Awaitable, Callable, - Dict, Generic, Iterable, - List, Literal, NoReturn, - Optional, ParamSpec, Protocol, - Tuple, - Type, TypeVar, - Union, overload, ) + # This should generate an error because its input parameter # type is incompatible. @overload @@ -51,7 +46,7 @@ def func2(a: None) -> str: ... -def func2(a: Optional[int]) -> str: +def func2(a: int | None) -> str: ... @@ -78,11 +73,11 @@ def func4(a: None) -> None: @overload -def func4(a: List[_T]) -> _T: +def func4(a: list[_T]) -> _T: ... -def func4(a: Optional[List[_T]]) -> Optional[_T]: +def func4(a: list[_T] | None) -> _T | None: ... @@ -92,15 +87,15 @@ def method4(self, a: None) -> None: ... @overload - def method4(self, a: List[_T]) -> _T: + def method4(self, a: list[_T]) -> _T: ... - def method4(self, a: Optional[List[_T]]) -> Optional[_T]: + def method4(self, a: list[_T] | None) -> _T | None: ... @overload -def func5(a: List[_T]) -> _T: +def func5(a: list[_T]) -> _T: ... @@ -110,7 +105,7 @@ def func5(a: None) -> None: # This should generate an error because List is not compatible with Dict. -def func5(a: Optional[Dict[Any, Any]]) -> Optional[Any]: +def func5(a: dict[Any, Any] | None) -> Any | None: ... @@ -124,7 +119,7 @@ def func6(bar: str, /) -> int: ... -def func6(p0: Union[int, str], /) -> int: +def func6(p0: int | str, /) -> int: return 3 @@ -156,16 +151,16 @@ class ClassC: @overload -def func7(cls: Type[ClassB], var: int) -> ClassB: +def func7(cls: type[ClassB], var: int) -> ClassB: ... @overload -def func7(cls: Type[ClassC], var: str) -> ClassC: +def func7(cls: type[ClassC], var: str) -> ClassC: ... -def func7(cls: Type[_T2], var: Union[int, str]) -> _T2: +def func7(cls: type[_T2], var: int | str) -> _T2: return cls() @@ -178,11 +173,11 @@ def func8(foo: int) -> int: @overload -def func8(foo: _T3) -> Tuple[_T3]: +def func8(foo: _T3) -> tuple[_T3]: ... -def func8(foo: Union[_T3, int]) -> Union[Tuple[_T3], int]: +def func8(foo: _T3 | int) -> tuple[_T3] | int: ... @@ -203,7 +198,7 @@ def func9(bar: _T4) -> _T4: ... -def func9(bar: Optional[_T4] = None) -> Optional[_T4]: +def func9(bar: _T4 | None = None) -> _T4 | None: raise NotImplementedError @@ -229,7 +224,7 @@ class X: ... -_T6 = TypeVar("_T6", bound=Type[X]) +_T6 = TypeVar("_T6", bound=type[X]) @overload @@ -242,7 +237,7 @@ def func11(var: int) -> int: ... -def func11(var: Union[_T6, int]) -> Union[_T6, int]: +def func11(var: _T6 | int) -> _T6 | int: ... @@ -346,31 +341,20 @@ def __call__( x: Callable[P, R], *, sig: Literal[True] = ..., - ) -> BuildsWithSig[Type[R], P]: + ) -> BuildsWithSig[type[R], P]: ... @overload - def __call__( - self, - x: T2, - *, - sig: Literal[False] = ..., - ) -> Builds[Type[T2]]: + def __call__(self, x: T2, *, sig: Literal[False] = ...) -> Builds[type[T2]]: ... @overload def __call__( - self, - x: Union[T2, Callable[P, R]], - *, - sig: bool, - ) -> Union[Builds[Type[T2]], BuildsWithSig[Type[R], P]]: + self, x: T2 | Callable[P, R], *, sig: bool + ) -> Builds[type[T2]] | BuildsWithSig[type[R], P]: ... def __call__( - self, - x: Union[T2, Callable[P, R]], - *, - sig: bool = False, - ) -> Union[Builds[Type[T2]], BuildsWithSig[Type[R], P]]: + self, x: T2 | Callable[P, R], *, sig: bool = False + ) -> Builds[type[T2]] | BuildsWithSig[type[R], P]: ... diff --git a/packages/pyright-internal/src/tests/samples/overload8.py b/packages/pyright-internal/src/tests/samples/overload8.py index 270e0c8f2..b0a0f14b5 100644 --- a/packages/pyright-internal/src/tests/samples/overload8.py +++ b/packages/pyright-internal/src/tests/samples/overload8.py @@ -1,7 +1,7 @@ # This sample tests the expansion of union types during overload matching. -from typing import Literal, TypeVar, Union, overload +from typing import Literal, TypeVar, overload class A: @@ -29,11 +29,11 @@ def overloaded1(x: _T1) -> _T1: ... -def overloaded1(x: Union[A, B]) -> Union[str, B]: +def overloaded1(x: A | B) -> str | B: ... -def func1(a: Union[A, B], b: Union[A, B, C]): +def func1(a: A | B, b: A | B | C): v1 = overloaded1(a) reveal_type(v1, expected_text="str | B") @@ -70,9 +70,7 @@ def overloaded2(a: LargeUnion, b: Literal[10]) -> float: ... -def overloaded2( - a: LargeUnion, b: Union[LargeUnion, Literal[9, 10]] -) -> Union[str, float]: +def overloaded2(a: LargeUnion, b: LargeUnion | Literal[9, 10]) -> str | float: ... @@ -112,14 +110,24 @@ def func3(y: _T2): _T3 = TypeVar("_T3") + def func5(a: _T3) -> _T3: return a + @overload -def overloaded4(b: str) -> str: ... +def overloaded4(b: str) -> str: + ... + + @overload -def overloaded4(b: int) -> int: ... -def overloaded4(b: Union[str, int]) -> Union[str, int]: ... +def overloaded4(b: int) -> int: + ... + + +def overloaded4(b: str | int) -> str | int: + ... + -def func6(x: Union[str, int]) -> None: - y: Union[str, int] = overloaded4(func5(x)) +def func6(x: str | int) -> None: + y: str | int = overloaded4(func5(x)) diff --git a/packages/pyright-internal/src/tests/samples/paramNames1.py b/packages/pyright-internal/src/tests/samples/paramNames1.py index 6c0edae8a..b41843c0a 100644 --- a/packages/pyright-internal/src/tests/samples/paramNames1.py +++ b/packages/pyright-internal/src/tests/samples/paramNames1.py @@ -1,7 +1,7 @@ # This sample tests the reportSelfClsParameterName setting. -from typing import Union, overload +from typing import overload def foo(): @@ -48,7 +48,7 @@ def foo6(x: "Class1") -> str: # This should generate an error or warning if the setting # is enabled because "self" is expected. - def foo6(x) -> Union[int, str]: + def foo6(x) -> int | str: ... diff --git a/packages/pyright-internal/src/tests/samples/paramSpec1.py b/packages/pyright-internal/src/tests/samples/paramSpec1.py index 5212601b2..9a3fc0561 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec1.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec1.py @@ -1,41 +1,38 @@ # This sample tests error conditions for ParamSpec (PEP 612). -from typing import Any, Callable, List, ParamSpec, Protocol, Tuple, cast +from typing import Any, Callable, ParamSpec, Protocol, cast +P = ParamSpec("P") -TParams = ParamSpec("TParams") # This should generate an error because ParamSpecs # can't be used as a type annotation. -def foo(a: TParams) -> int: +def func1(a: P) -> int: return 1 a = 3 # This should generate an error. -b = cast(TParams, a) +b = cast(P, a) -foo(1) +func1(1) -def func1(x: Callable[TParams, Any]): +def func2(x: Callable[P, Any]): # This should generate an error. - c: List[TParams] = [] + c: list[P] = [] - d: Callable[TParams, int] + d: Callable[P, int] # This should generate an error. - e: Callable[TParams, TParams] + e: Callable[P, P] # This should generate an error. - f: Callable[[TParams], int] + f: Callable[[P], int] # This should generate an error. - g: Tuple[TParams] - - -P = ParamSpec("P") + g: tuple[P] class SomeWrapper(Protocol[P]): @@ -45,20 +42,20 @@ def __call__(self, *args: P.args, **kwargs: P.kwargs): # This should generate an error because P cannot be used with other # type arguments. -def func2(x: SomeWrapper[P, int]): +def func3(x: SomeWrapper[P, int]): pass # This should generate an error because P cannot be used with other # type arguments. -def func3(x: SomeWrapper[[P, int]]): +def func4(x: SomeWrapper[[P, int]]): pass -def func4(x: SomeWrapper[P]): +def func5(x: SomeWrapper[P]): pass # This form is considered an error. -def func5(x: SomeWrapper[[P]]): +def func6(x: SomeWrapper[[P]]): pass diff --git a/packages/pyright-internal/src/tests/samples/paramSpec11.py b/packages/pyright-internal/src/tests/samples/paramSpec11.py index 59b46d6de..7633da8f5 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec11.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec11.py @@ -21,16 +21,16 @@ def do_stuff(self, name: str, *args: _P.args, **kwargs: _P.kwargs) -> int: @MyDecorator -def my_func1(x: int, y: int, *, z: int): +def func1(x: int, y: int, *, z: int): return x + y -my_func1(6, 6, z=6) +func1(6, 6, z=6) @MyDecorator -def my_func2(*, a: int): +def func2(*, a: int): pass -my_func2.do_stuff("hi", a=4) +func2.do_stuff("hi", a=4) diff --git a/packages/pyright-internal/src/tests/samples/paramSpec12.py b/packages/pyright-internal/src/tests/samples/paramSpec12.py index cd1a32bea..1f1dfd1f1 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec12.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec12.py @@ -70,8 +70,7 @@ def union_args1( # This should generate an error because P.args cannot be used in # a union. def union_args2( - *args: Union[P.args, Sequence[Any]], - **kwargs: Union[P.kwargs, Mapping[str, Any]] + *args: P.args | Sequence[Any], **kwargs: Union[P.kwargs, Mapping[str, Any]] ) -> None: pass diff --git a/packages/pyright-internal/src/tests/samples/paramSpec13.py b/packages/pyright-internal/src/tests/samples/paramSpec13.py index e9647b7c9..c62df9a33 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec13.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec13.py @@ -2,16 +2,7 @@ # for a generic type alias, a generic function, and a generic class. import asyncio -from typing import ( - Any, - Callable, - Concatenate, - Coroutine, - Generic, - List, - ParamSpec, - TypeVar, -) +from typing import Any, Callable, Concatenate, Coroutine, Generic, ParamSpec, TypeVar _P = ParamSpec("_P") @@ -26,12 +17,12 @@ def func1(func: Callable[_P, _R]) -> AddIntParam[_P, _R]: ... -def func2(a: str, b: List[int]) -> str: +def func2(a: str, b: list[int]) -> str: ... v1 = func1(func2) -reveal_type(v1, expected_text="(int, a: str, b: List[int]) -> str") +reveal_type(v1, expected_text="(int, a: str, b: list[int]) -> str") # This should generate an error because 'int' isn't assignable to # ParamSpec _P. @@ -54,7 +45,7 @@ def remote(self, *args: _P.args, **kwargs: _P.kwargs) -> RemoteResponse[_R]: r1 = RemoteFunction(func2) -reveal_type(r1, expected_text="RemoteFunction[(a: str, b: List[int]), str]") +reveal_type(r1, expected_text="RemoteFunction[(a: str, b: list[int]), str]") v2 = r1("hi", []) reveal_type(v2, expected_text="str") @@ -81,7 +72,7 @@ def remote(func: Callable[_P, _R]) -> RemoteFunction[_P, _R]: v4 = remote(func2) -reveal_type(v4, expected_text="RemoteFunction[(a: str, b: List[int]), str]") +reveal_type(v4, expected_text="RemoteFunction[(a: str, b: list[int]), str]") Coro = Coroutine[Any, Any, _T] diff --git a/packages/pyright-internal/src/tests/samples/paramSpec16.py b/packages/pyright-internal/src/tests/samples/paramSpec16.py index e0784eb6c..22db3fd3f 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec16.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec16.py @@ -2,7 +2,6 @@ # ParamSpec. from typing import Callable, Generic, TypeVar - from typing_extensions import Concatenate, ParamSpec P = ParamSpec("P") @@ -12,17 +11,17 @@ U = TypeVar("U") -class Foo(Generic[P, T, Q, U]): +class ClassA(Generic[P, T, Q, U]): ... -def foo(func: Callable[Concatenate[Callable[P, T], Q], U]) -> Foo[P, T, Q, U]: +def decorator1(func: Callable[Concatenate[Callable[P, T], Q], U]) -> ClassA[P, T, Q, U]: ... -@foo -def bar(func: Callable[[int], float], a: str) -> bool: +@decorator1 +def func1(func: Callable[[int], float], a: str) -> bool: ... -reveal_type(bar, expected_text="Foo[(int), float, (a: str), bool]") +reveal_type(func1, expected_text="ClassA[(int), float, (a: str), bool]") diff --git a/packages/pyright-internal/src/tests/samples/paramSpec17.py b/packages/pyright-internal/src/tests/samples/paramSpec17.py index 821b1840a..13789a028 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec17.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec17.py @@ -10,25 +10,23 @@ P = ParamSpec("P") -def repr_func_call(func: Callable[P, object], *args: P.args, **kwargs: P.kwargs) -> str: +def func1(func: Callable[P, object], *args: P.args, **kwargs: P.kwargs) -> str: arg_reprs = [repr(arg) for arg in args] arg_reprs.extend(k + "=" + repr(v) for k, v in kwargs.items()) return func.__name__ + "(" + ", ".join(arg_reprs) + ")" -def print( - *values: object, - sep: str | None = ..., - end: str | None = ..., -) -> None: ... +def func2(*values: object, sep: str | None = ..., end: str | None = ...) -> None: + ... + -repr_func_call(print) +func1(func2) -def add_values(a: int, b: int): +def func3(a: int, b: int): ... -def foo(*args: Any, **kwargs: Any): - repr_func_call(add_values, *args, **kwargs) +def func4(*args: Any, **kwargs: Any): + func1(func3, *args, **kwargs) diff --git a/packages/pyright-internal/src/tests/samples/paramSpec18.py b/packages/pyright-internal/src/tests/samples/paramSpec18.py index 6018d06ca..a59bf7477 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec18.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec18.py @@ -10,10 +10,10 @@ def callback(a: int, b: str, c: str) -> int: ... -FooCallableWithConcatenate = Callable[Concatenate[int, P], int] +CallableWithConcatenate = Callable[Concatenate[int, P], int] -def func_with_callable(cb: FooCallableWithConcatenate[P]) -> Callable[P, bool]: +def func_with_callable(cb: CallableWithConcatenate[P]) -> Callable[P, bool]: ... @@ -21,12 +21,12 @@ def func_with_callable(cb: FooCallableWithConcatenate[P]) -> Callable[P, bool]: reveal_type(x1, expected_text="(b: str, c: str) -> bool") -class FooWithConcatenate(Protocol[P]): +class ClassWithConcatenate(Protocol[P]): def __call__(self, x: int, /, *args: P.args, **kwargs: P.kwargs) -> int: ... -def func_with_protocol(cb: FooWithConcatenate[P]) -> Callable[P, bool]: +def func_with_protocol(cb: ClassWithConcatenate[P]) -> Callable[P, bool]: ... diff --git a/packages/pyright-internal/src/tests/samples/paramSpec2.py b/packages/pyright-internal/src/tests/samples/paramSpec2.py index c4662b410..aa67e4360 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec2.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec2.py @@ -3,17 +3,13 @@ from asyncio import Future from typing import Awaitable, Callable, ParamSpec, TypeVar -TParams = ParamSpec("TParams") -TReturn = TypeVar("TReturn") +P = ParamSpec("P") +R = TypeVar("R") -def awaitable_wrapper( - a: Callable[TParams, TReturn] -) -> Callable[TParams, Awaitable[TReturn]]: - def foo_internal( - *args: TParams.args, **kwargs: TParams.kwargs - ) -> Awaitable[TReturn]: - ft: "Future[TReturn]" = Future() +def awaitable_wrapper(a: Callable[P, R]) -> Callable[P, Awaitable[R]]: + def foo_internal(*args: P.args, **kwargs: P.kwargs) -> Awaitable[R]: + ft: "Future[R]" = Future() ft.set_result(a(*args, **kwargs)) return ft diff --git a/packages/pyright-internal/src/tests/samples/paramSpec22.py b/packages/pyright-internal/src/tests/samples/paramSpec22.py index f803927ea..fee4cc409 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec22.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec22.py @@ -6,21 +6,21 @@ from typing_extensions import Concatenate, ParamSpec P = ParamSpec("P") -OUT = TypeVar("OUT") +R = TypeVar("R") -class MyPartial(Generic[P, OUT]): - def __init__(self, first: int, func: Callable[Concatenate[int, P], OUT]) -> None: +class MyPartial(Generic[P, R]): + def __init__(self, first: int, func: Callable[Concatenate[int, P], R]) -> None: self.first = first self.func = func - def __call__(self, *args: P.args, **kwargs: P.kwargs) -> OUT: + def __call__(self, *args: P.args, **kwargs: P.kwargs) -> R: ... -class MyPartialCreator(Generic[P, OUT]): - def __init__(self, func: Callable[Concatenate[int, P], OUT]): +class MyPartialCreator(Generic[P, R]): + def __init__(self, func: Callable[Concatenate[int, P], R]): self.func = func - def create_partial(self, first: int) -> Callable[P, OUT]: - return MyPartial[P, OUT](first=first, func=self.func) + def create_partial(self, first: int) -> Callable[P, R]: + return MyPartial[P, R](first=first, func=self.func) diff --git a/packages/pyright-internal/src/tests/samples/paramSpec23.py b/packages/pyright-internal/src/tests/samples/paramSpec23.py index d5f1078c3..0e1aaeb7c 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec23.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec23.py @@ -5,17 +5,16 @@ from typing import Callable, TypeVar from typing_extensions import Concatenate, ParamSpec -Pi = ParamSpec("Pi") +P = ParamSpec("P") -def is_inty(f: Callable[Pi, object]) -> Callable[Pi, int]: +def is_inty(f: Callable[P, object]) -> Callable[P, int]: ... -Po = ParamSpec("Po") T = TypeVar("T") -def outer(f: Callable[Concatenate[str, Po], object]): +def outer(f: Callable[Concatenate[str, P], object]): x = is_inty(f) - reveal_type(x, expected_text="(str, **Po@outer) -> int") + reveal_type(x, expected_text="(str, **P@outer) -> int") diff --git a/packages/pyright-internal/src/tests/samples/paramSpec25.py b/packages/pyright-internal/src/tests/samples/paramSpec25.py index 5eafcb08f..6503a3de5 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec25.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec25.py @@ -14,10 +14,7 @@ class Context: class Command(Generic[P]): - def __init__( - self, - handler: CommandHandler[P], - ) -> None: + def __init__(self, handler: CommandHandler[P]) -> None: ... diff --git a/packages/pyright-internal/src/tests/samples/paramSpec26.py b/packages/pyright-internal/src/tests/samples/paramSpec26.py index ad9bf9468..d45526006 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec26.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec26.py @@ -11,15 +11,15 @@ def __init__(self, func: Callable[P, Any]) -> None: ... -def func1(baz: A[Concatenate[int, P]]) -> A[P]: +def func1(a: A[Concatenate[int, P]]) -> A[P]: ... -def test(a: int, b: str) -> str: +def func2(a: int, b: str) -> str: ... -val1 = A(test) +val1 = A(func2) reveal_type(val1, expected_text="A[(a: int, b: str)]") val2 = func1(val1) reveal_type(val2, expected_text="A[(b: str)]") diff --git a/packages/pyright-internal/src/tests/samples/paramSpec3.py b/packages/pyright-internal/src/tests/samples/paramSpec3.py index b8aa5f11b..059301ae2 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec3.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec3.py @@ -1,72 +1,58 @@ # This sample tests ParamSpec (PEP 612) behavior. -from typing import ( - Awaitable, - Callable, - Generic, - Optional, - ParamSpec, - TypeVar, - Union, - overload, -) +from typing import Awaitable, Callable, Generic, ParamSpec, TypeVar, overload -Ps = ParamSpec("Ps") +P = ParamSpec("P") R = TypeVar("R") -async def log_to_database(): - ... - - -def add_logging(f: Callable[Ps, R]) -> Callable[Ps, Awaitable[R]]: - async def inner(*args: Ps.args, **kwargs: Ps.kwargs) -> R: - await log_to_database() +def decorator1(f: Callable[P, R]) -> Callable[P, Awaitable[R]]: + async def inner(*args: P.args, **kwargs: P.kwargs) -> R: return f(*args, **kwargs) return inner -@add_logging -def foo(x: int, y: str) -> int: +@decorator1 +def func1(x: int, y: str) -> int: return x + 7 -async def my_async_function(): - await foo(1, "A") +async def func2(): + await func1(1, "A") # This should generate an error because # the first parameter is not an int. - await foo("B", "2") + await func1("B", "2") @overload -def bar(x: int) -> None: +def func3(x: int) -> None: ... @overload -def bar(x: str) -> str: +def func3(x: str) -> str: ... -def bar(x: Union[int, str]) -> Optional[str]: +def func3(x: int | str) -> str | None: if isinstance(x, int): return None else: return x -x = add_logging(bar) reveal_type( - x, expected_text="Overload[(x: int) -> Awaitable[None], (x: str) -> Awaitable[str]]" + decorator1(func3), + expected_text="Overload[(x: int) -> Awaitable[None], (x: str) -> Awaitable[str]]", ) -class Foo(Generic[Ps, R]): - def __init__(self, func: Callable[Ps, R]): +class ClassA(Generic[P, R]): + def __init__(self, func: Callable[P, R]): self.func = func -def transform_foo(f: Callable[Ps, R]) -> Foo[Ps, R]: - return Foo(f) +def func4(f: Callable[P, R]) -> ClassA[P, R]: + return ClassA(f) diff --git a/packages/pyright-internal/src/tests/samples/paramSpec34.py b/packages/pyright-internal/src/tests/samples/paramSpec34.py index 06279feb0..869daed87 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec34.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec34.py @@ -1,27 +1,19 @@ # This sample tests the handling of nested functions that involve ParamSpecs. -from __future__ import annotations - -import warnings import functools -from typing import Optional, Callable, TypeVar +from typing import Callable, TypeVar from typing_extensions import ParamSpec -T = TypeVar('T') -P = ParamSpec('P') +P = ParamSpec("P") +R = TypeVar("R") -def deprecated(instead: Optional[str] = None) -> Callable[[Callable[P, T]], Callable[P, T]]: - def actual_decorator(func: Callable[P, T]) -> Callable[P, T]: - @functools.wraps(func) - def decorated(*args: P.args, **kwargs: P.kwargs) -> T: - warnings.simplefilter('always', DeprecationWarning) # turn off filter - if instead: - fmt = "{0.__name__} is deprecated, use {1} instead." - else: - fmt = '{0.__name__} is deprecated.' - warnings.warn(fmt.format(func, instead), stacklevel=3, category=DeprecationWarning) - warnings.simplefilter('default', DeprecationWarning) # reset filter +def deprecated( + instead: str | None = None, +) -> Callable[[Callable[P, R]], Callable[P, R]]: + def actual_decorator(func: Callable[P, R]) -> Callable[P, R]: + @functools.wraps(func) + def decorated(*args: P.args, **kwargs: P.kwargs) -> R: return func(*args, **kwargs) return decorated diff --git a/packages/pyright-internal/src/tests/samples/paramSpec36.py b/packages/pyright-internal/src/tests/samples/paramSpec36.py index 4a77f9188..4690e4ab5 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec36.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec36.py @@ -6,13 +6,13 @@ from typing import Callable, Iterator, ParamSpec, Protocol, TypeVar P = ParamSpec("P") -T = TypeVar("T") +R = TypeVar("R") class TakesFunctionWithArguments(Protocol): def __call__( - self, func: Callable[P, T], *args: P.args, **kwargs: P.kwargs - ) -> Future[T]: + self, func: Callable[P, R], *args: P.args, **kwargs: P.kwargs + ) -> Future[R]: ... @@ -21,8 +21,8 @@ def submit_wrapper() -> Iterator[TakesFunctionWithArguments]: with ThreadPoolExecutor() as pool: def my_submit( - func: Callable[P, T], *args: P.args, **kwargs: P.kwargs - ) -> Future[T]: + func: Callable[P, R], *args: P.args, **kwargs: P.kwargs + ) -> Future[R]: return pool.submit(func, *args, **kwargs) yield my_submit @@ -35,7 +35,7 @@ def foo(a: int, b: int, c: int) -> int: with submit_wrapper() as submit: submit(foo, a=1, b=2, c=3) submit(foo, 1, 2, 3) - + # This should generate an error. submit(foo, a=1, b=2, d=3) diff --git a/packages/pyright-internal/src/tests/samples/paramSpec37.py b/packages/pyright-internal/src/tests/samples/paramSpec37.py index 92a704e3a..0dc1cd7c7 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec37.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec37.py @@ -1,25 +1,19 @@ # This sample tests the case where a source type includes a ParamSpec # and a dest type includes an *args: Any and **kwargs: Any. -from typing import Any, Callable, List, Protocol, TypeVar, ParamSpec +from typing import Any, Callable, Protocol, TypeVar, ParamSpec -T = TypeVar("T") P = ParamSpec("P") +R = TypeVar("R") -class BulkFactory(Protocol[T]): - def __call__( - self, - n: int, - /, - *args: Any, - **kwargs: Any, - ) -> List[T]: +class ClassA(Protocol[R]): + def __call__(self, n: int, /, *args: Any, **kwargs: Any) -> list[R]: ... -def make_n(maker: Callable[P, T]) -> BulkFactory[T]: - def inner(n: int, /, *args: P.args, **kwargs: P.kwargs) -> List[T]: +def func1(maker: Callable[P, R]) -> ClassA[R]: + def inner(n: int, /, *args: P.args, **kwargs: P.kwargs) -> list[R]: return [maker(*args, **kwargs) for _ in range(n)] return inner diff --git a/packages/pyright-internal/src/tests/samples/paramSpec38.py b/packages/pyright-internal/src/tests/samples/paramSpec38.py index 1a77fba6e..68f97f502 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec38.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec38.py @@ -5,19 +5,21 @@ P = ParamSpec("P") -T = TypeVar("T") +R = TypeVar("R") -class Foo(Generic[P, T]): - def __init__(self, callback: Callable[P, T]): +class ClassA(Generic[P, R]): + def __init__(self, callback: Callable[P, R]): self.callback = callback - def method(self, *args: P.args, **kwargs: P.kwargs) -> T: + def method(self, *args: P.args, **kwargs: P.kwargs) -> R: return self.callback(*args, **kwargs) -def func(obj: object, **kwargs: object) -> object: +def func1(obj: object, **kwargs: object) -> object: ... -reveal_type(Foo(func).method, expected_text="(obj: object, **kwargs: object) -> object") +reveal_type( + ClassA(func1).method, expected_text="(obj: object, **kwargs: object) -> object" +) diff --git a/packages/pyright-internal/src/tests/samples/paramSpec39.py b/packages/pyright-internal/src/tests/samples/paramSpec39.py index 2cc88165c..dad3bb2a0 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec39.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec39.py @@ -6,11 +6,11 @@ from typing_extensions import ParamSpec P = ParamSpec("P") -T = TypeVar("T") +R = TypeVar("R") -def test(x: Callable[P, T]) -> Callable[P, T]: +def func1(x: Callable[P, R]) -> Callable[P, R]: return x -test(test) +func1(func1) diff --git a/packages/pyright-internal/src/tests/samples/paramSpec4.py b/packages/pyright-internal/src/tests/samples/paramSpec4.py index 9469a3bdf..657a7130a 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec4.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec4.py @@ -34,6 +34,7 @@ def takes_int_str(request: Request, x: int, y: str) -> int: # many parameters. takes_int_str(1, "A", 2) + # This should generate an error because a ParamSpec can appear # only within the last type arg for Concatenate def decorator1(f: Callable[Concatenate[P, P], int]) -> Callable[P, int]: diff --git a/packages/pyright-internal/src/tests/samples/paramSpec5.py b/packages/pyright-internal/src/tests/samples/paramSpec5.py index de7413460..830fd1c0a 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec5.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec5.py @@ -13,17 +13,17 @@ def decorator(fn: Callable[P, R]) -> Callable[P, R]: return fn -def foo(*, value: str) -> None: +def func1(*, value: str) -> None: ... -bar = decorator(foo) -reveal_type(bar, expected_text="(*, value: str) -> None") +f1 = decorator(func1) +reveal_type(f1, expected_text="(*, value: str) -> None") -def baz(value: str, /) -> None: +def func2(value: str, /) -> None: ... -qux = decorator(baz) -reveal_type(qux, expected_text="(value: str, /) -> None") +f2 = decorator(func2) +reveal_type(f2, expected_text="(value: str, /) -> None") diff --git a/packages/pyright-internal/src/tests/samples/paramSpec6.py b/packages/pyright-internal/src/tests/samples/paramSpec6.py index 7eb4d0473..988b78d45 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec6.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec6.py @@ -2,16 +2,16 @@ from typing import Callable, ParamSpec, TypeVar -V = TypeVar("V") P = ParamSpec("P") +R = TypeVar("R") -def foo(fn: Callable[P, V]) -> Callable[P, V]: +def func1(fn: Callable[P, R]) -> Callable[P, R]: ... -def bar(baz: str, qux: str = "") -> str: +def func2(a: str, b: str = "") -> str: ... -foo(bar)("") +func1(func2)("") diff --git a/packages/pyright-internal/src/tests/samples/paramSpec7.py b/packages/pyright-internal/src/tests/samples/paramSpec7.py index 1a8778b91..d1ea1bfa3 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec7.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec7.py @@ -3,20 +3,20 @@ from typing import Callable, Generic, ParamSpec, TypeVar -T = TypeVar("T") P = ParamSpec("P") +R = TypeVar("R") -def foo(f: Callable[P, T]) -> Callable[P, T]: +def func1(f: Callable[P, R]) -> Callable[P, R]: ... -class Baz(Generic[T]): - def qux(self, v: T) -> None: +class ClassA(Generic[R]): + def method1(self, v: R) -> None: ... -baz: Baz[int] = Baz() +v1: ClassA[int] = ClassA() -reveal_type(baz.qux, expected_text="(v: int) -> None") -reveal_type(foo(baz.qux), expected_text="(v: int) -> None") +reveal_type(v1.method1, expected_text="(v: int) -> None") +reveal_type(func1(v1.method1), expected_text="(v: int) -> None") diff --git a/packages/pyright-internal/src/tests/samples/paramType1.py b/packages/pyright-internal/src/tests/samples/paramType1.py index 7f6af7b15..476237511 100644 --- a/packages/pyright-internal/src/tests/samples/paramType1.py +++ b/packages/pyright-internal/src/tests/samples/paramType1.py @@ -1,7 +1,7 @@ # This sample validates that parameter types specified for "self" # and "cls" parameters are compatible with the containing class. -from typing import Iterator, Type, TypeVar +from typing import Iterator, TypeVar class Parent: @@ -21,14 +21,14 @@ def m2(self: Parent): ... # This should generate an error. - def m3(self: Type["Child1"]): + def m3(self: type["Child1"]): ... def m4(self: _TChild1) -> _TChild1: ... # This should generate an error. - def m5(self: Type[_TChild1]) -> _TChild1: + def m5(self: type[_TChild1]) -> _TChild1: ... def m6(self: _T) -> _T: @@ -39,7 +39,7 @@ def __new__(cls: "Child1"): ... @classmethod - def cm1(cls: Type["Child1"]): + def cm1(cls: type["Child1"]): ... @classmethod @@ -49,11 +49,11 @@ def cm2(cls: "Child1"): @classmethod # This should generate an error. - def cm3(cls: Type[Parent]): + def cm3(cls: type[Parent]): ... @classmethod - def cm4(cls: Type[_TChild1]) -> _TChild1: + def cm4(cls: type[_TChild1]) -> _TChild1: ... @classmethod @@ -62,10 +62,10 @@ def cm5(cls: _TChild1) -> _TChild1: ... @classmethod - def cm6(cls: Type[_T]) -> _T: + def cm6(cls: type[_T]) -> _T: ... class MyMeta(type): - def m1(self: Type[_T]) -> Iterator[_T]: + def m1(self: type[_T]) -> Iterator[_T]: ... diff --git a/packages/pyright-internal/src/tests/samples/partial3.py b/packages/pyright-internal/src/tests/samples/partial3.py index bda6ae1ca..619cdb9ec 100644 --- a/packages/pyright-internal/src/tests/samples/partial3.py +++ b/packages/pyright-internal/src/tests/samples/partial3.py @@ -12,7 +12,7 @@ class SubClass(BaseClass): pass -def func(base: BaseClass): +def func_base(base: BaseClass): pass @@ -26,6 +26,6 @@ def func_set(base: set[BaseClass]): sub = SubClass() -partial(func, sub) +partial(func_base, sub) partial(func_list, [sub]) partial(func_set, {sub}) diff --git a/packages/pyright-internal/src/tests/samples/properties1.py b/packages/pyright-internal/src/tests/samples/property1.py similarity index 98% rename from packages/pyright-internal/src/tests/samples/properties1.py rename to packages/pyright-internal/src/tests/samples/property1.py index bb1a4cac3..58bf5b12c 100644 --- a/packages/pyright-internal/src/tests/samples/properties1.py +++ b/packages/pyright-internal/src/tests/samples/property1.py @@ -2,7 +2,7 @@ # properties. -class ClassA(object): +class ClassA: @property def read_only_prop(self): return 1 diff --git a/packages/pyright-internal/src/tests/samples/properties10.py b/packages/pyright-internal/src/tests/samples/property10.py similarity index 92% rename from packages/pyright-internal/src/tests/samples/properties10.py rename to packages/pyright-internal/src/tests/samples/property10.py index fa1a969ff..c2540674b 100644 --- a/packages/pyright-internal/src/tests/samples/properties10.py +++ b/packages/pyright-internal/src/tests/samples/property10.py @@ -2,7 +2,7 @@ # and the type needs to be determined via inference. -class C: +class ClassA: def __init__(self): self._x = None @@ -15,5 +15,5 @@ def x(self, value): self._x = value -c = C() +c = ClassA() reveal_type(c.x, expected_text="Unknown | None") diff --git a/packages/pyright-internal/src/tests/samples/properties11.py b/packages/pyright-internal/src/tests/samples/property11.py similarity index 90% rename from packages/pyright-internal/src/tests/samples/properties11.py rename to packages/pyright-internal/src/tests/samples/property11.py index eaa90b74c..daff981ce 100644 --- a/packages/pyright-internal/src/tests/samples/properties11.py +++ b/packages/pyright-internal/src/tests/samples/property11.py @@ -2,7 +2,7 @@ # are supported in Python 3.9 and newer. -from typing import Type, TypeVar +from typing import TypeVar class Class1: @@ -33,7 +33,7 @@ def prop1(cls, value: str): class Class2: @classmethod @property - def prop1(cls: Type[T]) -> Type[T]: + def prop1(cls: type[T]) -> type[T]: return cls diff --git a/packages/pyright-internal/src/tests/samples/properties12.py b/packages/pyright-internal/src/tests/samples/property12.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/properties12.py rename to packages/pyright-internal/src/tests/samples/property12.py diff --git a/packages/pyright-internal/src/tests/samples/properties13.py b/packages/pyright-internal/src/tests/samples/property13.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/properties13.py rename to packages/pyright-internal/src/tests/samples/property13.py diff --git a/packages/pyright-internal/src/tests/samples/properties14.py b/packages/pyright-internal/src/tests/samples/property14.py similarity index 94% rename from packages/pyright-internal/src/tests/samples/properties14.py rename to packages/pyright-internal/src/tests/samples/property14.py index a3f4cac52..a0ffc08ef 100644 --- a/packages/pyright-internal/src/tests/samples/properties14.py +++ b/packages/pyright-internal/src/tests/samples/property14.py @@ -5,7 +5,8 @@ HashableT = TypeVar("HashableT", bound=Hashable) -class Foo: + +class ClassA: def __init__(self): self._something = [] @@ -18,6 +19,5 @@ def something(self, thing: list[HashableT]): self._something = thing -f = Foo() +f = ClassA() f.something = ["a", "b", "c"] - diff --git a/packages/pyright-internal/src/tests/samples/properties15.py b/packages/pyright-internal/src/tests/samples/property15.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/properties15.py rename to packages/pyright-internal/src/tests/samples/property15.py diff --git a/packages/pyright-internal/src/tests/samples/properties2.py b/packages/pyright-internal/src/tests/samples/property2.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/properties2.py rename to packages/pyright-internal/src/tests/samples/property2.py diff --git a/packages/pyright-internal/src/tests/samples/properties3.py b/packages/pyright-internal/src/tests/samples/property3.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/properties3.py rename to packages/pyright-internal/src/tests/samples/property3.py diff --git a/packages/pyright-internal/src/tests/samples/properties4.py b/packages/pyright-internal/src/tests/samples/property4.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/properties4.py rename to packages/pyright-internal/src/tests/samples/property4.py diff --git a/packages/pyright-internal/src/tests/samples/properties5.py b/packages/pyright-internal/src/tests/samples/property5.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/properties5.py rename to packages/pyright-internal/src/tests/samples/property5.py diff --git a/packages/pyright-internal/src/tests/samples/properties6.py b/packages/pyright-internal/src/tests/samples/property6.py similarity index 78% rename from packages/pyright-internal/src/tests/samples/properties6.py rename to packages/pyright-internal/src/tests/samples/property6.py index d0ad73da9..b2033a103 100644 --- a/packages/pyright-internal/src/tests/samples/properties6.py +++ b/packages/pyright-internal/src/tests/samples/property6.py @@ -1,13 +1,13 @@ # This sample tests the reportPropertyTypeMismatch diagnostic rule. -from typing import Generic, List, Optional, TypeVar +from typing import Generic, TypeVar _T = TypeVar("_T") class ClassA(Generic[_T]): @property - def prop_1(self) -> Optional[float]: + def prop_1(self) -> float | None: return 2 @prop_1.setter @@ -15,7 +15,7 @@ def prop_1(self, value: int) -> None: pass @property - def prop_2(self) -> Optional[int]: + def prop_2(self) -> int | None: return 2 # This should generate an error because a float @@ -25,7 +25,7 @@ def prop_2(self, value: float) -> None: pass @property - def prop_3(self) -> List[_T]: + def prop_3(self) -> list[_T]: return [] # This should generate an error because _T is diff --git a/packages/pyright-internal/src/tests/samples/properties7.py b/packages/pyright-internal/src/tests/samples/property7.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/properties7.py rename to packages/pyright-internal/src/tests/samples/property7.py diff --git a/packages/pyright-internal/src/tests/samples/properties8.py b/packages/pyright-internal/src/tests/samples/property8.py similarity index 97% rename from packages/pyright-internal/src/tests/samples/properties8.py rename to packages/pyright-internal/src/tests/samples/property8.py index f9ed23f28..92c42f83c 100644 --- a/packages/pyright-internal/src/tests/samples/properties8.py +++ b/packages/pyright-internal/src/tests/samples/property8.py @@ -2,7 +2,7 @@ # used with property getters, setters and deleters. -class Foo1: +class ClassA: @property def legal1(self) -> None: pass diff --git a/packages/pyright-internal/src/tests/samples/properties9.py b/packages/pyright-internal/src/tests/samples/property9.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/properties9.py rename to packages/pyright-internal/src/tests/samples/property9.py diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index e3895ba1a..67107afbd 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1015,164 +1015,164 @@ test('CapturedVariable1', () => { TestUtils.validateResults(analysisResults, 5); }); -test('Properties1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties1.py']); +test('Property1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property1.py']); TestUtils.validateResults(analysisResults, 5); }); -test('Properties2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties2.py']); +test('Property2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property2.py']); TestUtils.validateResults(analysisResults, 2); }); -test('Properties3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties3.py']); +test('Property3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property3.py']); TestUtils.validateResults(analysisResults, 4); }); -test('Properties4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties4.py']); +test('Property4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Properties5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties5.py']); +test('Property5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property5.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Properties6', () => { +test('Property6', () => { const configOptions = new ConfigOptions('.'); // Analyze with reportPropertyTypeMismatch enabled. configOptions.diagnosticRuleSet.reportPropertyTypeMismatch = 'error'; - const analysisResult1 = TestUtils.typeAnalyzeSampleFiles(['properties6.py'], configOptions); + const analysisResult1 = TestUtils.typeAnalyzeSampleFiles(['property6.py'], configOptions); TestUtils.validateResults(analysisResult1, 2); // Analyze with reportPropertyTypeMismatch disabled. configOptions.diagnosticRuleSet.reportPropertyTypeMismatch = 'none'; - const analysisResult2 = TestUtils.typeAnalyzeSampleFiles(['properties6.py'], configOptions); + const analysisResult2 = TestUtils.typeAnalyzeSampleFiles(['property6.py'], configOptions); TestUtils.validateResults(analysisResult2, 0); }); -test('Properties7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties7.py']); +test('Property7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property7.py']); TestUtils.validateResults(analysisResults, 2); }); -test('Properties8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties8.py']); +test('Property8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property8.py']); TestUtils.validateResults(analysisResults, 4); }); -test('Properties9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties9.py']); +test('Property9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property9.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Properties10', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties10.py']); +test('Property10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property10.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Properties11', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties11.py']); +test('Property11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property11.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Properties12', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties12.py']); +test('Property12', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property12.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Properties13', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties13.py']); +test('Property13', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property13.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Properties14', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties14.py']); +test('Property14', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property14.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Properties15', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['properties15.py']); +test('Property15', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['property15.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Operators1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators1.py']); +test('Operator1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator1.py']); TestUtils.validateResults(analysisResults, 5); }); -test('Operators2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators2.py']); +test('Operator2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator2.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Operators4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators4.py']); +test('Operator3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator3.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Operators5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators5.py']); +test('Operator4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator4.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('Operator5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator5.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Operators6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators6.py']); +test('Operator6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator6.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Operators7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators7.py']); +test('Operator7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator7.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Operators8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators8.py']); +test('Operator8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator8.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Operators9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators9.py']); +test('Operator9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator9.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Operators10', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators10.py']); +test('Operator10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operator10.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Operators11', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['operators11.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('Optional1', () => { const configOptions = new ConfigOptions('.'); @@ -1323,50 +1323,50 @@ test('Tuples18', () => { TestUtils.validateResults(analysisResults, 0); }); -test('NamedTuples1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples1.py']); +test('NamedTuple1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuple1.py']); TestUtils.validateResults(analysisResults, 12); }); -test('NamedTuples2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples2.py']); +test('NamedTuple2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuple2.py']); TestUtils.validateResults(analysisResults, 8); }); -test('NamedTuples3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples3.py']); +test('NamedTuple3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuple3.py']); TestUtils.validateResults(analysisResults, 1); }); -test('NamedTuples4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples4.py']); +test('NamedTuple4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuple4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('NamedTuples5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples5.py']); +test('NamedTuple5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuple5.py']); TestUtils.validateResults(analysisResults, 0); }); -test('NamedTuples6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples6.py']); +test('NamedTuple6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuple6.py']); TestUtils.validateResults(analysisResults, 3); }); -test('NamedTuples7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples7.py']); +test('NamedTuple7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuple7.py']); TestUtils.validateResults(analysisResults, 1); }); -test('NamedTuples8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuples8.py']); +test('NamedTuple8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuple8.py']); TestUtils.validateResults(analysisResults, 0); }); diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 4a87f9621..aa5957c4f 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -253,7 +253,7 @@ test('NewType3', () => { test('NewType4', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['newType4.py']); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 4); }); test('NewType5', () => { From 5568b4dc95f9610da3cd4263108f04de94841d6e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 18:00:31 -0700 Subject: [PATCH 327/525] Enhanced command-line version of pyright to allow file or directory names to be passed via stdin if `-` option is used in the command line. This addresses https://github.com/microsoft/pyright/issues/5342. --- docs/command-line.md | 1 + packages/pyright-internal/src/pyright.ts | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/docs/command-line.md b/docs/command-line.md index 086844156..0777f3ef9 100644 --- a/docs/command-line.md +++ b/docs/command-line.md @@ -25,6 +25,7 @@ Pyright can be run as either a VS Code extension or as a node-based command-line | --version | Print pyright version and exit | | --warnings | Use exit code of 1 if warnings are reported | | -w, --watch | Continue to run and watch for changes (5) | +| - | Read file or directory list from stdin | (1) If specific files are specified on the command line, it overrides the files or directories specified in the pyrightconfig.json or pyproject.toml file. diff --git a/packages/pyright-internal/src/pyright.ts b/packages/pyright-internal/src/pyright.ts index 09fc452a4..b524e1a70 100644 --- a/packages/pyright-internal/src/pyright.ts +++ b/packages/pyright-internal/src/pyright.ts @@ -15,6 +15,7 @@ import { timingStats } from './common/timing'; import chalk from 'chalk'; import commandLineArgs, { CommandLineOptions, OptionDefinition } from 'command-line-args'; +import * as fs from 'fs'; import { PackageTypeReport, TypeKnownStatus } from './analyzer/packageTypeReport'; import { PackageTypeVerifier } from './analyzer/packageTypeVerifier'; @@ -218,7 +219,24 @@ async function processArgs(): Promise { // Assume any relative paths are relative to the working directory. if (args.files && Array.isArray(args.files)) { - options.fileSpecs = args.files; + let fileSpecList = args.files; + + // Has the caller indicated that the file list will be supplied by stdin? + if (args.files.length === 1 && args.files[0] === '-') { + try { + const stdText = fs.readFileSync(process.stdin.fd, 'utf-8'); + fileSpecList = stdText + .trim() + .split(' ') + .map((s) => s.trim()) + .filter((s) => !s); + } catch (e) { + console.error('Invalid file list specified by stdin input.'); + return ExitStatus.ParameterError; + } + } + + options.fileSpecs = fileSpecList; options.fileSpecs = options.fileSpecs.map((f) => combinePaths(process.cwd(), f)); } else { options.fileSpecs = []; @@ -729,7 +747,8 @@ function printUsage() { ' --verifytypes Verify type completeness of a py.typed package\n' + ' --version Print Pyright version and exit\n' + ' --warnings Use exit code of 1 if warnings are reported\n' + - ' -w,--watch Continue to run and watch for changes\n' + ' -w,--watch Continue to run and watch for changes\n' + + ' - Read files from stdin\n' ); } From efea9b993cb530089d659922dbafe3a0e9574d0e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 18:26:49 -0700 Subject: [PATCH 328/525] Changed behavior of non-ClassVar variables within a protocol definition. Previously, an error was reported when such variables were accessed from the class (as opposed to an instance of the class). Mypy (which was the reference implementation for PEP 544) does not report an error here. This addresses https://github.com/microsoft/pylance-release/issues/4389. --- .../src/analyzer/typeEvaluator.ts | 23 ------------------- .../src/localization/localize.ts | 4 ---- .../src/localization/package.nls.en-us.json | 1 - .../src/tests/samples/classVar4.py | 9 +++++--- .../src/tests/typeEvaluator4.test.ts | 2 +- 5 files changed, 7 insertions(+), 32 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1e5a72f65..c6529b7ed 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -2011,29 +2011,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } - // If this is a protocol class X and we're accessing a non ClassVar, - // emit an error. - if ( - memberInfo && - memberInfo.classType && - memberInfo.symbol && - isClass(memberInfo.classType) && - ClassType.isProtocolClass(memberInfo.classType) - ) { - const primaryDecl = getLastTypedDeclaredForSymbol(memberInfo.symbol); - if (primaryDecl && primaryDecl.type === DeclarationType.Variable && !memberInfo.isClassVar) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.protocolMemberNotClassVar().format({ - memberName, - className: memberInfo.classType.details.name, - }), - errorNode - ); - } - } - const isMemberPresentOnClass = memberInfo?.classType !== undefined; // If it wasn't found on the class, see if it's part of the metaclass. diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index dd907189f..a37154ff9 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -723,10 +723,6 @@ export namespace Localizer { ); export const protocolBaseClassWithTypeArgs = () => getRawString('Diagnostic.protocolBaseClassWithTypeArgs'); export const protocolIllegal = () => getRawString('Diagnostic.protocolIllegal'); - export const protocolMemberNotClassVar = () => - new ParameterizedString<{ className: string; memberName: string }>( - getRawString('Diagnostic.protocolMemberNotClassVar') - ); export const protocolNotAllowedInTypeArgument = () => getRawString('Diagnostic.protocolNotAllowedInTypeArgument'); export const protocolUsedInCall = () => diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 2e18b3d6c..ddec26696 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -352,7 +352,6 @@ "protocolBaseClass": "Protocol class \"{classType}\" cannot derive from non-protocol class \"{baseType}\"", "protocolBaseClassWithTypeArgs": "Type arguments are not allowed with Protocol class when using type parameter syntax", "protocolIllegal": "Use of \"Protocol\" requires Python 3.7 or newer", - "protocolMemberNotClassVar": "Protocol class \"{className}\" does not define \"{memberName}\" as a ClassVar", "protocolNotAllowedInTypeArgument": "\"Protocol\" cannot be used as a type argument", "protocolUsedInCall": "Protocol class cannot be used in \"{name}\" call", "protocolVarianceContravariant": "Type variable \"{variable}\" used in generic protocol \"{class}\" should be contravariant", diff --git a/packages/pyright-internal/src/tests/samples/classVar4.py b/packages/pyright-internal/src/tests/samples/classVar4.py index 81355c91d..dcb67fe8a 100644 --- a/packages/pyright-internal/src/tests/samples/classVar4.py +++ b/packages/pyright-internal/src/tests/samples/classVar4.py @@ -1,4 +1,4 @@ -# This sample tests that pyright emits an error when attempting to access +# This sample tests that an error when attempting to access # a non-ClassVar protocol attribute from a protocol class. from typing import ClassVar, Protocol @@ -24,10 +24,13 @@ class Class(SomeProtocol): def func1() -> None: - # This should generate an error because y is not a ClassVar. + # Previously (prior to pyright 1.1.315), this generated an error + # because x was not explicitly declared as a ClassVar. This was changed + # to match mypy, which treats this as a normal class variable -- one that + # can be accessed as both a class an instance variable. x: int = Class.x - # This should generate an error because y is not a ClassVar. + # Same as above. y: int = Class.y z: int = Class.z diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 47c8866c1..c7f3e8ff9 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -1049,7 +1049,7 @@ test('ClassVar3', () => { test('ClassVar4', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['classVar4.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 0); }); test('TypeVar1', () => { From b0d4080c3663ba87a7ca634688e67dfa30c02f07 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 19:15:53 -0700 Subject: [PATCH 329/525] Next batch of test case cleanup. --- ...etComprehension1.py => comprehension10.py} | 6 +- .../src/tests/samples/protocol1.py | 8 +- .../src/tests/samples/protocol13.py | 11 +-- .../src/tests/samples/protocol17.py | 5 +- .../src/tests/samples/protocol2.py | 6 +- .../src/tests/samples/protocol20.py | 4 +- .../src/tests/samples/protocol21.py | 4 +- .../src/tests/samples/protocol22.py | 10 +-- .../src/tests/samples/protocol23.py | 8 +- .../src/tests/samples/protocol26.py | 13 ++- .../src/tests/samples/protocol28.py | 19 +++-- .../src/tests/samples/protocol29.py | 8 +- .../src/tests/samples/protocol3.py | 58 +++++++------ .../src/tests/samples/protocol32.py | 9 +- .../src/tests/samples/protocol33.py | 10 +-- .../src/tests/samples/protocol35.py | 2 +- .../src/tests/samples/protocol36.py | 12 +-- .../src/tests/samples/protocol39.py | 4 +- .../src/tests/samples/protocol4.py | 4 +- .../src/tests/samples/protocol5.py | 2 +- .../src/tests/samples/protocol6.py | 12 +-- .../src/tests/samples/protocol9.py | 14 ++-- .../src/tests/samples/protocolModule1.py | 4 +- .../src/tests/samples/protocolModule2.py | 6 +- .../src/tests/samples/pseudoGeneric1.py | 6 +- .../src/tests/samples/pyrightComment1.py | 2 +- .../src/tests/samples/pyrightIgnore1.py | 3 +- .../src/tests/samples/pyrightIgnore2.py | 4 +- .../src/tests/samples/recursiveTypeAlias1.py | 8 +- .../src/tests/samples/recursiveTypeAlias10.py | 3 - .../src/tests/samples/recursiveTypeAlias12.py | 8 +- .../src/tests/samples/recursiveTypeAlias14.py | 1 + .../src/tests/samples/recursiveTypeAlias2.py | 6 +- .../src/tests/samples/recursiveTypeAlias3.py | 4 +- .../src/tests/samples/recursiveTypeAlias4.py | 26 +++--- .../src/tests/samples/recursiveTypeAlias7.py | 4 +- .../src/tests/samples/required2.py | 10 +-- .../src/tests/samples/required3.py | 4 +- .../src/tests/samples/returnTypes1.py | 11 +-- .../src/tests/samples/returnTypes2.py | 1 + .../src/tests/samples/self1.py | 9 +- .../src/tests/samples/self2.py | 10 +-- .../src/tests/samples/slots2.py | 4 +- .../src/tests/samples/solver10.py | 4 +- .../src/tests/samples/solver13.py | 4 +- .../src/tests/samples/solver15.py | 14 ++-- .../src/tests/samples/solver17.py | 12 +-- .../src/tests/samples/solver19.py | 12 +-- .../src/tests/samples/solver20.py | 4 +- .../src/tests/samples/solver24.py | 4 +- .../src/tests/samples/solver8.py | 6 +- .../src/tests/samples/solver9.py | 10 +-- .../src/tests/samples/solverLiteral1.py | 6 +- .../src/tests/samples/solverScoring2.py | 34 ++++---- .../src/tests/samples/solverScoring3.py | 4 +- ...icExpressions1.py => staticExpression1.py} | 2 + ...eePartVersion1.py => staticExpression2.py} | 3 +- .../src/tests/samples/subscript1.py | 1 + .../src/tests/samples/subscript2.py | 4 +- .../src/tests/samples/subscript3.py | 8 +- .../src/tests/samples/subscript4.py | 2 +- .../src/tests/samples/super10.py | 1 + .../src/tests/samples/super2.py | 4 +- .../src/tests/samples/super6.py | 9 +- .../src/tests/samples/totalOrdering1.py | 1 + .../src/tests/samples/tryExcept1.py | 1 - .../src/tests/samples/tryExcept10.py | 1 + .../src/tests/samples/tryExcept2.py | 6 +- .../src/tests/samples/tryExcept3.py | 4 +- .../src/tests/samples/tryExcept8.py | 6 +- .../tests/samples/{tuples1.py => tuple1.py} | 1 + .../tests/samples/{tuples10.py => tuple10.py} | 6 +- .../src/tests/samples/tuple11.py | 19 +++++ .../tests/samples/{tuples12.py => tuple12.py} | 0 .../tests/samples/{tuples13.py => tuple13.py} | 4 +- .../tests/samples/{tuples15.py => tuple15.py} | 7 +- .../tests/samples/{tuples16.py => tuple16.py} | 7 +- .../tests/samples/{tuples17.py => tuple17.py} | 1 + .../tests/samples/{tuples18.py => tuple18.py} | 0 .../src/tests/samples/tuple2.py | 20 +++++ .../tests/samples/{tuples3.py => tuple3.py} | 8 +- .../tests/samples/{tuples4.py => tuple4.py} | 4 +- .../tests/samples/{tuples5.py => tuple5.py} | 8 +- .../tests/samples/{tuples6.py => tuple6.py} | 6 +- .../tests/samples/{tuples7.py => tuple7.py} | 13 ++- .../tests/samples/{tuples8.py => tuple8.py} | 5 +- .../tests/samples/{tuples9.py => tuple9.py} | 7 +- .../src/tests/samples/tupleUnpack1.py | 29 +++---- .../src/tests/samples/tuples11.py | 21 ----- .../src/tests/samples/tuples2.py | 23 ------ .../src/tests/typeEvaluator1.test.ts | 82 ++++++++++--------- .../src/tests/typeEvaluator3.test.ts | 4 +- .../src/tests/typeEvaluator4.test.ts | 6 -- 93 files changed, 398 insertions(+), 413 deletions(-) rename packages/pyright-internal/src/tests/samples/{setComprehension1.py => comprehension10.py} (85%) rename packages/pyright-internal/src/tests/samples/{staticExpressions1.py => staticExpression1.py} (99%) rename packages/pyright-internal/src/tests/samples/{threePartVersion1.py => staticExpression2.py} (91%) rename packages/pyright-internal/src/tests/samples/{tuples1.py => tuple1.py} (99%) rename packages/pyright-internal/src/tests/samples/{tuples10.py => tuple10.py} (81%) create mode 100644 packages/pyright-internal/src/tests/samples/tuple11.py rename packages/pyright-internal/src/tests/samples/{tuples12.py => tuple12.py} (100%) rename packages/pyright-internal/src/tests/samples/{tuples13.py => tuple13.py} (86%) rename packages/pyright-internal/src/tests/samples/{tuples15.py => tuple15.py} (79%) rename packages/pyright-internal/src/tests/samples/{tuples16.py => tuple16.py} (60%) rename packages/pyright-internal/src/tests/samples/{tuples17.py => tuple17.py} (99%) rename packages/pyright-internal/src/tests/samples/{tuples18.py => tuple18.py} (100%) create mode 100644 packages/pyright-internal/src/tests/samples/tuple2.py rename packages/pyright-internal/src/tests/samples/{tuples3.py => tuple3.py} (63%) rename packages/pyright-internal/src/tests/samples/{tuples4.py => tuple4.py} (78%) rename packages/pyright-internal/src/tests/samples/{tuples5.py => tuple5.py} (79%) rename packages/pyright-internal/src/tests/samples/{tuples6.py => tuple6.py} (91%) rename packages/pyright-internal/src/tests/samples/{tuples7.py => tuple7.py} (81%) rename packages/pyright-internal/src/tests/samples/{tuples8.py => tuple8.py} (93%) rename packages/pyright-internal/src/tests/samples/{tuples9.py => tuple9.py} (74%) delete mode 100644 packages/pyright-internal/src/tests/samples/tuples11.py delete mode 100644 packages/pyright-internal/src/tests/samples/tuples2.py diff --git a/packages/pyright-internal/src/tests/samples/setComprehension1.py b/packages/pyright-internal/src/tests/samples/comprehension10.py similarity index 85% rename from packages/pyright-internal/src/tests/samples/setComprehension1.py rename to packages/pyright-internal/src/tests/samples/comprehension10.py index 189631f86..dc0c69ec2 100644 --- a/packages/pyright-internal/src/tests/samples/setComprehension1.py +++ b/packages/pyright-internal/src/tests/samples/comprehension10.py @@ -1,6 +1,6 @@ # This sample tests type checking for set comprehensions. -from typing import Generator, Set +from typing import Generator a = [1, 2, 3, 4] @@ -10,12 +10,12 @@ def func1() -> Generator[int, None, None]: return b -def func2() -> Set[int]: +def func2() -> set[int]: c = {elem for elem in a} return c -def func3() -> Set[str]: +def func3() -> set[str]: c = {elem for elem in a} # This should generate an error because diff --git a/packages/pyright-internal/src/tests/samples/protocol1.py b/packages/pyright-internal/src/tests/samples/protocol1.py index 3cef5a67d..fbb93c410 100644 --- a/packages/pyright-internal/src/tests/samples/protocol1.py +++ b/packages/pyright-internal/src/tests/samples/protocol1.py @@ -1,6 +1,6 @@ # This sample tests the type checker's handling of generic protocol types. -from typing import Generic, List, Optional, TypeVar, Protocol +from typing import Generic, TypeVar, Protocol T = TypeVar("T") T_co = TypeVar("T_co", covariant=True) @@ -73,16 +73,16 @@ class NotProto2: # This should generate an error because "Protocol" cannot be used # as a type argument. -var2: List[Protocol] = [] +var2: list[Protocol] = [] class Abstract1(Protocol[T_contra]): - def do(self, x: Optional[T_contra]): + def do(self, x: T_contra | None): ... class Concrete1: - def do(self, x: Optional[int]): + def do(self, x: int | None): pass diff --git a/packages/pyright-internal/src/tests/samples/protocol13.py b/packages/pyright-internal/src/tests/samples/protocol13.py index 744e073ae..e7f011358 100644 --- a/packages/pyright-internal/src/tests/samples/protocol13.py +++ b/packages/pyright-internal/src/tests/samples/protocol13.py @@ -2,21 +2,16 @@ # include named-only parameters that match to positional parameters # within class that is being tested for protocol compatibility. -from typing import Optional, Protocol +from typing import Protocol class CollectionProtocol(Protocol): - def watch( - self, - *, - max_time: Optional[int] = ..., - key: Optional[str] = ..., - ) -> None: + def watch(self, *, max_time: int | None = ..., key: str | None = ...) -> None: ... class Collection: - def watch(self, key: Optional[str] = None, max_time: Optional[int] = None) -> None: + def watch(self, key: str | None = None, max_time: int | None = None) -> None: ... diff --git a/packages/pyright-internal/src/tests/samples/protocol17.py b/packages/pyright-internal/src/tests/samples/protocol17.py index f0b977f79..e18936697 100644 --- a/packages/pyright-internal/src/tests/samples/protocol17.py +++ b/packages/pyright-internal/src/tests/samples/protocol17.py @@ -1,6 +1,6 @@ # This sample tests for generic protocol variance consistency. -from typing import Protocol, TypeVar, Union +from typing import Protocol, TypeVar from typing_extensions import ParamSpec # pyright: strict @@ -13,7 +13,7 @@ class Protocol1(Protocol[_T1, _T2, _T3]): - def m1(self, p0: _T1, p1: _T2, p2: _T3) -> Union[_T1, _T2]: + def m1(self, p0: _T1, p1: _T2, p2: _T3) -> _T1 | _T2: ... def m2(self) -> _T1: @@ -93,6 +93,7 @@ class Protocol9(Protocol[_T1_co]): def prop1(self) -> _T1_co: ... + class Protocol10(Protocol[_T1_co]): def m1(self) -> type[_T1_co]: ... diff --git a/packages/pyright-internal/src/tests/samples/protocol2.py b/packages/pyright-internal/src/tests/samples/protocol2.py index c5b51a7d6..657323af4 100644 --- a/packages/pyright-internal/src/tests/samples/protocol2.py +++ b/packages/pyright-internal/src/tests/samples/protocol2.py @@ -2,7 +2,7 @@ # generic protocols with invariant, constrained, and contravariant # type arguments. -from typing import Optional, TypeVar, Protocol +from typing import TypeVar, Protocol T = TypeVar("T") @@ -24,11 +24,11 @@ def f(writer: Writer[bytes]): pass -def g(writer: Writer[T], v: Optional[T] = None): +def g(writer: Writer[T], v: T | None = None): pass -def h(writer: Writer[StrLike], v: Optional[StrLike] = None): +def h(writer: Writer[StrLike], v: StrLike | None = None): pass diff --git a/packages/pyright-internal/src/tests/samples/protocol20.py b/packages/pyright-internal/src/tests/samples/protocol20.py index c78b0eb08..59b6ecec5 100644 --- a/packages/pyright-internal/src/tests/samples/protocol20.py +++ b/packages/pyright-internal/src/tests/samples/protocol20.py @@ -1,7 +1,7 @@ # This sample tests the case where a TypeVar is bound to a # protocol class. -from typing import Protocol, Type, TypeVar +from typing import Protocol, TypeVar class ClsProtocol(Protocol): @@ -14,7 +14,7 @@ def __init__(self): class Sample: @classmethod - def test(cls: Type[T1]) -> T1: + def test(cls: type[T1]) -> T1: return cls() diff --git a/packages/pyright-internal/src/tests/samples/protocol21.py b/packages/pyright-internal/src/tests/samples/protocol21.py index a850fa0ef..c899a9010 100644 --- a/packages/pyright-internal/src/tests/samples/protocol21.py +++ b/packages/pyright-internal/src/tests/samples/protocol21.py @@ -2,7 +2,7 @@ # to indicate a read-only attribute. It also tests that a member access through # a protocol class (not an instance) is flagged as an error. -from typing import Protocol, Type +from typing import Protocol class A(Protocol): @@ -15,7 +15,7 @@ class B: name: str -def do_something(a: A, class_a: Type[A]) -> None: +def do_something(a: A, class_a: type[A]) -> None: val1 = a.name reveal_type(val1, expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/protocol22.py b/packages/pyright-internal/src/tests/samples/protocol22.py index 591b8f957..623354876 100644 --- a/packages/pyright-internal/src/tests/samples/protocol22.py +++ b/packages/pyright-internal/src/tests/samples/protocol22.py @@ -2,7 +2,7 @@ # of multiple type variables is treated as covariant with the # union type, thus affecting the variance restriction. -from typing import Protocol, Tuple, TypeVar, Union +from typing import Protocol, TypeVar # pyright: strict @@ -18,26 +18,26 @@ # This is right, as `_T1_co` and `_T2_co` are only covariant with # return type. class P1(Protocol[_T1_co, _T2_co]): - def m1(self) -> Union[_T1_co, _T2_co]: + def m1(self) -> _T1_co | _T2_co: ... # This is right, as `_T1_contra` and `_T2_contra` are only covariant # with the argument type. class P2(Protocol[_T1_contra, _T2_contra]): - def m1(self, a: Union[_T1_contra, _T2_contra]) -> None: + def m1(self, a: _T1_contra | _T2_contra) -> None: ... # This is right, as `_T1` and `_T2` are both covariant with the # argument type and the return type. class P3(Protocol[_T1, _T2]): - def m1(self, a: _T1, b: _T2) -> Union[_T1, _T2]: + def m1(self, a: _T1, b: _T2) -> _T1 | _T2: ... # This is right, as `_T1` and `_T2` are both covariant with the # argument type and the return type. class P4(Protocol[_T1, _T2]): - def m2(self, a: Union[_T1, _T2]) -> Tuple[_T1, _T2]: + def m2(self, a: _T1 | _T2) -> tuple[_T1, _T2]: ... diff --git a/packages/pyright-internal/src/tests/samples/protocol23.py b/packages/pyright-internal/src/tests/samples/protocol23.py index 20aecc8d8..56a3576e2 100644 --- a/packages/pyright-internal/src/tests/samples/protocol23.py +++ b/packages/pyright-internal/src/tests/samples/protocol23.py @@ -2,7 +2,7 @@ # can't be assigned to Type[Proto]. from abc import abstractmethod -from typing import Protocol, Type +from typing import Protocol class Proto(Protocol): @@ -16,7 +16,7 @@ def meth(self) -> int: return 42 -def func1(cls: Type[Proto]) -> int: +def func1(cls: type[Proto]) -> int: return cls().meth() @@ -26,7 +26,7 @@ def func1(cls: Type[Proto]) -> int: # not a concrete class type that implements the protocol. func1(Proto) -val1: Type[Proto] +val1: type[Proto] val1 = Concrete val1().meth() @@ -34,7 +34,7 @@ def func1(cls: Type[Proto]) -> int: val1 = Proto -def func2() -> Type[Proto]: +def func2() -> type[Proto]: ... diff --git a/packages/pyright-internal/src/tests/samples/protocol26.py b/packages/pyright-internal/src/tests/samples/protocol26.py index 3d1b8f673..0a7793daf 100644 --- a/packages/pyright-internal/src/tests/samples/protocol26.py +++ b/packages/pyright-internal/src/tests/samples/protocol26.py @@ -1,8 +1,7 @@ # This sample tests protocol class assignment in a case that involves tricky # recursion. -from __future__ import annotations -from typing import Protocol, Sequence, TypeVar, Union, overload +from typing import Protocol, Sequence, TypeVar, overload _T_co = TypeVar("_T_co", covariant=True) @@ -18,23 +17,23 @@ def __getitem__(self, __x: SupportsIndex) -> _T_co: ... @overload - def __getitem__(self, __x: slice) -> TupleLike[_T_co]: + def __getitem__(self, __x: slice) -> "TupleLike[_T_co]": ... - def __getitem__(self, __x: slice | SupportsIndex) -> _T_co | TupleLike[_T_co]: + def __getitem__(self, __x: slice | SupportsIndex) -> "_T_co | TupleLike[_T_co]": ... class NestedSequence(Protocol[_T_co]): @overload - def __getitem__(self, index: int, /) -> _T_co | NestedSequence[_T_co]: + def __getitem__(self, index: int, /) -> "_T_co | NestedSequence[_T_co]": ... @overload - def __getitem__(self, index: slice, /) -> NestedSequence[_T_co]: + def __getitem__(self, index: slice, /) -> "NestedSequence[_T_co]": ... def func(t: TupleLike[int]): - x: Union[int, NestedSequence[int]] = t + x: int | NestedSequence[int] = t y: NestedSequence[int] = t diff --git a/packages/pyright-internal/src/tests/samples/protocol28.py b/packages/pyright-internal/src/tests/samples/protocol28.py index 06386436e..948fa52b0 100644 --- a/packages/pyright-internal/src/tests/samples/protocol28.py +++ b/packages/pyright-internal/src/tests/samples/protocol28.py @@ -1,32 +1,33 @@ # This sample tests a complicated use case involving multiple # callback protocols. -from typing import Callable, Protocol, TypeVar, Any +from typing import Protocol, TypeVar, Any _T1 = TypeVar("_T1", contravariant=True) _T2 = TypeVar("_T2", covariant=True) _T3 = TypeVar("_T3", covariant=True) -Tv_my_callable = TypeVar("Tv_my_callable", bound="MyCallable[Any]") -class MyCallable(Protocol[_T1]): +class Callable1(Protocol[_T1]): def __call__(self, __x: _T1) -> Any: ... -class MyDecorator(Protocol[_T2]): - def __call__(self, __x: MyCallable[_T2]) -> Any: +_T4 = TypeVar("_T4", bound=Callable1[Any]) + + +class Decorator1(Protocol[_T2]): + def __call__(self, __x: Callable1[_T2]) -> Any: ... -def decorates_my_callable(__x: MyDecorator[_T3]) -> MyDecorator[_T3]: +def decorator1(__x: Decorator1[_T3]) -> Decorator1[_T3]: ... -def my_decorator_inner(__x: Tv_my_callable) -> Tv_my_callable: +def func1(__x: _T4) -> _T4: ... -decorates_my_callable(my_decorator_inner) - +decorator1(func1) diff --git a/packages/pyright-internal/src/tests/samples/protocol29.py b/packages/pyright-internal/src/tests/samples/protocol29.py index ceb8cfefa..3b0e907b3 100644 --- a/packages/pyright-internal/src/tests/samples/protocol29.py +++ b/packages/pyright-internal/src/tests/samples/protocol29.py @@ -3,7 +3,7 @@ from functools import partial from typing_extensions import Protocol, Self -from typing import Any, Callable, Type, TypeVar +from typing import Any, Callable, TypeVar _T = TypeVar("_T", covariant=True) @@ -14,13 +14,13 @@ def func(self) -> Callable[..., _T]: ... def __new__( - cls: Type[Self], __func: Callable[..., _T], *args: Any, **kwargs: Any + cls: type[Self], __func: Callable[..., _T], *args: Any, **kwargs: Any ) -> Self: ... -def f(x: Partial[int]): +def func1(x: Partial[int]): ... -f(partial(int)) +func1(partial(int)) diff --git a/packages/pyright-internal/src/tests/samples/protocol3.py b/packages/pyright-internal/src/tests/samples/protocol3.py index c6df4756f..466bbce75 100644 --- a/packages/pyright-internal/src/tests/samples/protocol3.py +++ b/packages/pyright-internal/src/tests/samples/protocol3.py @@ -4,13 +4,13 @@ from typing import ContextManager, Protocol, TypeVar -class Foo1(Protocol): +class Class1(Protocol): @property def batch_shape(self) -> int: return 0 -class MockFoo1: +class MockClass1: def __init__(self, batch_shape: int): self._batch_shape = batch_shape @@ -20,16 +20,16 @@ def batch_shape(self) -> int: # This should not generate an error. -d: Foo1 = MockFoo1(batch_shape=1) +d: Class1 = MockClass1(batch_shape=1) -class Foo2(Protocol): +class Class2(Protocol): @property def batch_shape(self) -> int: return 0 -class MockFoo2: +class MockClass2: def __init__(self, batch_shape: int): self._batch_shape = batch_shape @@ -40,10 +40,10 @@ def batch_shape(self) -> float: # This should generate an error because the # type of the batch_shape property is not compatible. -e: Foo2 = MockFoo2(batch_shape=1) +e: Class2 = MockClass2(batch_shape=1) -class Foo3(Protocol): +class Class3(Protocol): @property def batch_shape(self) -> int: return 0 @@ -53,7 +53,7 @@ def batch_shape(self, value: int) -> None: pass -class MockFoo3: +class MockClass3: def __init__(self, batch_shape: int): self._batch_shape = batch_shape @@ -64,10 +64,10 @@ def batch_shape(self) -> int: # This should generate an error because it is missing # a setter. -f: Foo3 = MockFoo3(batch_shape=1) +f: Class3 = MockClass3(batch_shape=1) -class Foo4(Protocol): +class Class4(Protocol): @property def batch_shape(self) -> int: return 0 @@ -77,7 +77,7 @@ def batch_shape(self) -> None: pass -class MockFoo4: +class MockClass4: def __init__(self, batch_shape: int): self._batch_shape = batch_shape @@ -92,35 +92,43 @@ def batch_shape(self, value: int) -> None: # This should generate an error because it is missing # a deleter. -g: Foo4 = MockFoo4(batch_shape=1) +g: Class4 = MockClass4(batch_shape=1) _T_co = TypeVar("_T_co", covariant=True) _Self = TypeVar("_Self") -class Foo5: + +class Class5: @property - def real(self: _Self) -> _Self: ... + def real(self: _Self) -> _Self: + ... + -class MockFoo5(Protocol[_T_co]): +class MockClass5(Protocol[_T_co]): @property - def real(self) -> _T_co: ... + def real(self) -> _T_co: + ... -foo5 = Foo5() -h: MockFoo5[Foo5] = foo5 +foo5 = Class5() +h: MockClass5[Class5] = foo5 -_MockFoo6 = TypeVar("_MockFoo6", bound="MockFoo6") -_Foo6 = TypeVar("_Foo6", bound="Foo6") +P6 = TypeVar("P6", bound="MockClass6") +C6 = TypeVar("C6", bound="Class6") -class MockFoo6(Protocol): + +class MockClass6(Protocol): @property - def bar(self: _MockFoo6) -> ContextManager[_MockFoo6]: ... + def bar(self: P6) -> ContextManager[P6]: + ... + -class Foo6(): +class Class6: @property - def bar(self: _Foo6) -> ContextManager[_Foo6]: ... + def bar(self: C6) -> ContextManager[C6]: + ... -i: MockFoo6 = Foo6() +i: MockClass6 = Class6() diff --git a/packages/pyright-internal/src/tests/samples/protocol32.py b/packages/pyright-internal/src/tests/samples/protocol32.py index 96787c6a0..5f4b59997 100644 --- a/packages/pyright-internal/src/tests/samples/protocol32.py +++ b/packages/pyright-internal/src/tests/samples/protocol32.py @@ -11,6 +11,7 @@ class Base1(Protocol[Value]): def method1(self, default: Value) -> Value: ... + class Base2(Base1[Value], Protocol): def method2(self, default: Value) -> Value: ... @@ -43,8 +44,9 @@ def method1(self, default: Value) -> Value: def another(self, arg: Arg) -> None: return + def func2(arg: Arg, value: Value) -> Interface[Arg, Value]: - # This should generate an error because + # This should generate an error because # Implementation2 doesn't implement method2. return Implementation2[Arg, Value]() @@ -59,8 +61,9 @@ def method2(self, default: Value) -> Value: def another(self, arg: Arg) -> None: return + def func3(arg: Arg, value: Value) -> Interface[Arg, Value]: - # This should generate an error because + # This should generate an error because # Implementation3's signature doesn't match. return Implementation3[Arg, Value]() @@ -77,6 +80,6 @@ def method3(self, message: str) -> str: def method3(self, message: str | int): return message + class Implementation4(Base4): ... - diff --git a/packages/pyright-internal/src/tests/samples/protocol33.py b/packages/pyright-internal/src/tests/samples/protocol33.py index 3bf6bc75b..4ff061400 100644 --- a/packages/pyright-internal/src/tests/samples/protocol33.py +++ b/packages/pyright-internal/src/tests/samples/protocol33.py @@ -1,14 +1,14 @@ # This sample tests a protocol matching case that involves # a union of TypeVars. -from typing import Generic, TypeVar, Union, Protocol +from typing import Generic, TypeVar, Protocol T = TypeVar("T") U = TypeVar("U") class AProto(Generic[T, U], Protocol): - def f(self) -> Union[T, U]: + def f(self) -> T | U: ... def g(self) -> "AProto[T, U]": @@ -16,7 +16,7 @@ def g(self) -> "AProto[T, U]": class A(Generic[T, U]): - def f(self) -> Union[T, U]: + def f(self) -> T | U: raise NotImplementedError def g(self) -> AProto[T, U]: @@ -24,7 +24,7 @@ def g(self) -> AProto[T, U]: class BProto(Generic[T, U], Protocol): - def f(self) -> Union[T, U]: + def f(self) -> T | U: ... def g(self) -> "BProto[T, U]": @@ -32,7 +32,7 @@ def g(self) -> "BProto[T, U]": class B(Generic[T, U]): - def f(self) -> Union[T, U]: + def f(self) -> T | U: raise NotImplementedError def g(self) -> BProto[T, U]: diff --git a/packages/pyright-internal/src/tests/samples/protocol35.py b/packages/pyright-internal/src/tests/samples/protocol35.py index 0f335e454..0fc1c8a70 100644 --- a/packages/pyright-internal/src/tests/samples/protocol35.py +++ b/packages/pyright-internal/src/tests/samples/protocol35.py @@ -1,5 +1,5 @@ # This sample tests that protocol compatibility caching produces -# the right result when the first example of protocol matching within +# the correct result when the first example of protocol matching within # the file does not require invariance enforcement but some later one # does. The cached protocol compatibility cannot be used in this case. diff --git a/packages/pyright-internal/src/tests/samples/protocol36.py b/packages/pyright-internal/src/tests/samples/protocol36.py index 5c6aea43d..7d0b7e22f 100644 --- a/packages/pyright-internal/src/tests/samples/protocol36.py +++ b/packages/pyright-internal/src/tests/samples/protocol36.py @@ -4,15 +4,17 @@ _T_co = TypeVar("_T_co", covariant=True) -class _NestedSequence(Protocol[_T_co]): + +class NestedSequence(Protocol[_T_co]): @overload - def __getitem__(self, __i: int) -> _T_co | "_NestedSequence[_T_co]": + def __getitem__(self, __i: int) -> _T_co | "NestedSequence[_T_co]": ... + @overload - def __getitem__(self, __s: slice) -> "_NestedSequence[_T_co]": + def __getitem__(self, __s: slice) -> "NestedSequence[_T_co]": ... def func(v1: list[list[list[int]]]): - a: _NestedSequence[int] = v1 - b: _NestedSequence[int] = [[[3, 4]]] + a: NestedSequence[int] = v1 + b: NestedSequence[int] = [[[3, 4]]] diff --git a/packages/pyright-internal/src/tests/samples/protocol39.py b/packages/pyright-internal/src/tests/samples/protocol39.py index 0c59b6be2..cf6c96aa3 100644 --- a/packages/pyright-internal/src/tests/samples/protocol39.py +++ b/packages/pyright-internal/src/tests/samples/protocol39.py @@ -10,8 +10,8 @@ def __get__(self) -> Any: ... -def foo(cls: Any) -> None: +def func1(cls: Any) -> None: pass -v1: SupportsGet = foo +v1: SupportsGet = func1 diff --git a/packages/pyright-internal/src/tests/samples/protocol4.py b/packages/pyright-internal/src/tests/samples/protocol4.py index 059ec9f7d..8b1e0797c 100644 --- a/packages/pyright-internal/src/tests/samples/protocol4.py +++ b/packages/pyright-internal/src/tests/samples/protocol4.py @@ -1,7 +1,7 @@ # This sample tests that instance and class variables # assigned within a Protocol method are flagged as errors. -from typing import ClassVar, List, Protocol +from typing import ClassVar, Protocol class ProtoA(Protocol): @@ -12,7 +12,7 @@ def method(self) -> None: self.a = 3 # This should be an error - self.temp: List[int] = [] + self.temp: list[int] = [] @classmethod def cls_method(cls) -> None: diff --git a/packages/pyright-internal/src/tests/samples/protocol5.py b/packages/pyright-internal/src/tests/samples/protocol5.py index 221326330..3157801ce 100644 --- a/packages/pyright-internal/src/tests/samples/protocol5.py +++ b/packages/pyright-internal/src/tests/samples/protocol5.py @@ -2,7 +2,7 @@ # the type checker allows instance variables that are initialized # in a method to be counted toward conformance to a defined Protocol. -from typing import Protocol, List +from typing import Protocol class Template(Protocol): diff --git a/packages/pyright-internal/src/tests/samples/protocol6.py b/packages/pyright-internal/src/tests/samples/protocol6.py index d2678fd8e..e84c4aafd 100644 --- a/packages/pyright-internal/src/tests/samples/protocol6.py +++ b/packages/pyright-internal/src/tests/samples/protocol6.py @@ -1,6 +1,6 @@ # This sample tests nested protocol definitions. -from typing import List, Literal, Protocol, TypeVar +from typing import Literal, Protocol, TypeVar _T1 = TypeVar("_T1") _T2 = TypeVar("_T2") @@ -9,7 +9,7 @@ class Animal(Protocol[_T1]): species: str - attributes: List[_T1] + attributes: list[_T1] class Mammal(Animal[_T2], Protocol): @@ -26,12 +26,12 @@ class CamelLike(Ungulate[bytes], Protocol): class Sloth: species: str - attributes: List[str] + attributes: list[str] class Armadillo: species: str - attributes: List[bytes] + attributes: list[bytes] class Tapir: @@ -40,13 +40,13 @@ class Tapir: class Camel: species: Literal["camel"] - attributes: List[bytes] + attributes: list[bytes] type_of_hooves: bytes class Cow: species: str - attributes: List[str] + attributes: list[str] type_of_hooves: str diff --git a/packages/pyright-internal/src/tests/samples/protocol9.py b/packages/pyright-internal/src/tests/samples/protocol9.py index d1cad71dd..6d3bb9352 100644 --- a/packages/pyright-internal/src/tests/samples/protocol9.py +++ b/packages/pyright-internal/src/tests/samples/protocol9.py @@ -1,17 +1,17 @@ # This sample tests a protocol class that refers to itself. -from typing import Optional, Protocol +from typing import Protocol class TreeLike(Protocol): value: int @property - def left(self) -> Optional["TreeLike"]: + def left(self) -> "TreeLike | None": ... @property - def right(self) -> Optional["TreeLike"]: + def right(self) -> "TreeLike | None": ... @@ -19,17 +19,17 @@ class SimpleTree: value: int @property - def left(self) -> Optional["SimpleTree"]: + def left(self) -> "SimpleTree | None": return self._left @property - def right(self) -> Optional["SimpleTree"]: + def right(self) -> "SimpleTree | None": return self._right def __init__(self, value: int) -> None: self.value = value - self._left: Optional["SimpleTree"] = None - self._right: Optional["SimpleTree"] = None + self._left: SimpleTree | None = None + self._right: SimpleTree | None = None root: TreeLike = SimpleTree(0) diff --git a/packages/pyright-internal/src/tests/samples/protocolModule1.py b/packages/pyright-internal/src/tests/samples/protocolModule1.py index f86fbeda8..ff852f1a5 100644 --- a/packages/pyright-internal/src/tests/samples/protocolModule1.py +++ b/packages/pyright-internal/src/tests/samples/protocolModule1.py @@ -1,10 +1,8 @@ # This sample is used in conjunction with protocolModule2.py. -from typing import Union - var_1: int = 3 -var_2: Union[int, str] = "hello" +var_2: int | str = "hello" def func_1(a: int, b: str) -> str: diff --git a/packages/pyright-internal/src/tests/samples/protocolModule2.py b/packages/pyright-internal/src/tests/samples/protocolModule2.py index bbf8c7df2..32c145c9b 100644 --- a/packages/pyright-internal/src/tests/samples/protocolModule2.py +++ b/packages/pyright-internal/src/tests/samples/protocolModule2.py @@ -1,6 +1,6 @@ # This sample tests protocol matching for modules. -from typing import Protocol, Type, TypeVar, Union, runtime_checkable +from typing import Protocol, TypeVar, runtime_checkable from . import protocolModule1 import datetime from importlib import import_module @@ -9,7 +9,7 @@ @runtime_checkable class P1(Protocol): var_1: int - var_2: Union[int, str] + var_2: int | str def func_1(self, a: int, b: str) -> str: ... @@ -61,7 +61,7 @@ class NonProtocol: # Test type narrowing of module symbols for isinstance checks. -def func1(x: Type[_T]): +def func1(x: type[_T]): if isinstance(datetime, (P1, P2, NonProtocol, x)): reveal_type(datetime, expected_text="P1 | P2 | _T@func1") else: diff --git a/packages/pyright-internal/src/tests/samples/pseudoGeneric1.py b/packages/pyright-internal/src/tests/samples/pseudoGeneric1.py index ae086f42e..8a0c0b8ff 100644 --- a/packages/pyright-internal/src/tests/samples/pseudoGeneric1.py +++ b/packages/pyright-internal/src/tests/samples/pseudoGeneric1.py @@ -5,11 +5,7 @@ class ClassA: - def __init__( - self, - name, - description=_DEFAULT_VALUE, - ): + def __init__(self, name, description=_DEFAULT_VALUE): ... diff --git a/packages/pyright-internal/src/tests/samples/pyrightComment1.py b/packages/pyright-internal/src/tests/samples/pyrightComment1.py index fb7a9c6d1..11dfca8f3 100644 --- a/packages/pyright-internal/src/tests/samples/pyrightComment1.py +++ b/packages/pyright-internal/src/tests/samples/pyrightComment1.py @@ -22,7 +22,7 @@ a = 1 # pyright: reportGeneralTypeIssues=false -def foo(): +def func1(): # This should generate an error because it's not on its own line. # pyright: reportGeneralTypeIssues=false pass diff --git a/packages/pyright-internal/src/tests/samples/pyrightIgnore1.py b/packages/pyright-internal/src/tests/samples/pyrightIgnore1.py index 271ae65c0..af108ce63 100644 --- a/packages/pyright-internal/src/tests/samples/pyrightIgnore1.py +++ b/packages/pyright-internal/src/tests/samples/pyrightIgnore1.py @@ -1,10 +1,9 @@ # This sample tests the # pyright: ignore comment. import sys -from typing import Optional -def foo(self, x: Optional[int]) -> str: +def func1(self, x: int | None) -> str: # This should suppress the error x + "hi" # pyright: ignore - test diff --git a/packages/pyright-internal/src/tests/samples/pyrightIgnore2.py b/packages/pyright-internal/src/tests/samples/pyrightIgnore2.py index 0ea0ced52..3bc5ebec9 100644 --- a/packages/pyright-internal/src/tests/samples/pyrightIgnore2.py +++ b/packages/pyright-internal/src/tests/samples/pyrightIgnore2.py @@ -1,10 +1,8 @@ # This sample tests the use of a pyright ignore comment in conjunction # with the reportUnnecessaryTypeIgnoreComment mechanism. -from typing import Optional - -def foo(self, x: Optional[int]) -> str: +def func1(self, x: int | None) -> str: # This should suppress the error v1 = x + "hi" # pyright: ignore - test diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias1.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias1.py index 357686f71..05cf1f8f6 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias1.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias1.py @@ -1,8 +1,8 @@ # This sample tests Pyright's handling of recursive type aliases. -from typing import Dict, List, Mapping, TypeVar, Union +from typing import Mapping, TypeVar, Union -MyTree = List[Union["MyTree", int]] +MyTree = list[Union["MyTree", int]] t1: MyTree = [1, 2, 3, [3, 4], [[3], 5]] @@ -22,7 +22,7 @@ # This should generate an error because str isn't compatible. i2 = "hi" -Foo = Union[bool, List["Foo"], Dict["Foo", "Foo"]] +Foo = Union[bool, list["Foo"], dict["Foo", "Foo"]] bar1: Foo = [True, [True, False]] bar2: Foo = [True, [True], {True: False}] @@ -33,7 +33,7 @@ baz2: Foo = [True, [True], {True: "False"}] baz4: Foo = {True: ["False"]} -Json = Union[None, int, str, float, List["Json"], Dict[str, "Json"]] +Json = Union[None, int, str, float, list["Json"], dict[str, "Json"]] # This should generate an error a1: Json = {"a": 1, "b": 3j} diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias10.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias10.py index e977dba88..a43a29257 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias10.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias10.py @@ -30,6 +30,3 @@ def func3(v: Optional[JsonVal1]): x: Optional[JsonVal2] = v return x - - - \ No newline at end of file diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias12.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias12.py index b8ad60846..963e590bc 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias12.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias12.py @@ -11,14 +11,18 @@ class TraceFunctionProto(Protocol): def __call__(self, frame: FrameType, event: str, arg: Any) -> Self | None: ... + TraceFunction: TypeAlias = Callable[[FrameType, str, Any], "TraceFunction | None"] -def settrace(tf: TraceFunction | None) -> None: ... + +def settrace(tf: TraceFunction | None) -> None: + ... + def func1(frame: FrameType, event: str, arg: Any) -> TraceFunction: ... + def func2(tf: TraceFunctionProto | None): settrace(tf) settrace(func1) - diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias14.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias14.py index 95e6bc924..633c6432f 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias14.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias14.py @@ -14,6 +14,7 @@ def func1() -> NestedIntList: result = [result] return result + def func2() -> NestedIntList: # This should generate an error. result: NestedIntList = "" diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias2.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias2.py index 82fe7653f..3d1146c21 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias2.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias2.py @@ -1,12 +1,12 @@ # This sample tests Pyright's handling of recursive type aliases # that are also generic. -from typing import List, TypeVar, Union +from typing import TypeVar, Union _T1 = TypeVar("_T1", str, int) _T2 = TypeVar("_T2") -GenericTypeAlias1 = List[Union["GenericTypeAlias1[_T1]", _T1]] +GenericTypeAlias1 = list[Union["GenericTypeAlias1[_T1]", _T1]] SpecializedTypeAlias1 = GenericTypeAlias1[str] @@ -22,7 +22,7 @@ b2: GenericTypeAlias1[str] = ["hi", [2.4]] -GenericTypeAlias2 = List[Union["GenericTypeAlias2[_T1, _T2]", _T1, _T2]] +GenericTypeAlias2 = list[Union["GenericTypeAlias2[_T1, _T2]", _T1, _T2]] c2: GenericTypeAlias2[str, int] = [[3, ["hi"]], "hi"] diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias3.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias3.py index ddc3c80b5..6fdb37bf1 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias3.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias3.py @@ -1,10 +1,10 @@ # This sample tests Pyright's handling of recursive type aliases. -from typing import List, TypeAlias, Union +from typing import TypeAlias, Union # This should generate an error because the forward reference # type needs to be in quotes. -GenericClass0 = List[Union[GenericClass0, int]] +GenericClass0 = list[GenericClass0 | int] # This should generate an error because the type alias directly # refers to itself. diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias4.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias4.py index 0a0c3d4d8..8bf6b994e 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias4.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias4.py @@ -2,50 +2,50 @@ # pyright: strict, reportUnusedVariable=false -from typing import Dict, Generator, List, Optional, Union +from typing import Generator -JSONArray = List["JSONType"] -JSONObject = Dict[str, "JSONType"] +JSONArray = list["JSONType"] +JSONObject = dict[str, "JSONType"] -JSONPrimitive = Union[str, float, int, bool, None] -JSONStructured = Union[JSONArray, JSONObject] +JSONPrimitive = str | float | int | bool | None +JSONStructured = JSONArray | JSONObject -JSONType = Union[JSONPrimitive, JSONStructured] +JSONType = JSONPrimitive | JSONStructured # Using type alias checking for list: def f2(args: JSONStructured): - if isinstance(args, List): + if isinstance(args, list): reveal_type( args, - expected_text="List[str | float | int | bool | JSONArray | Dict[str, JSONType] | None]", + expected_text="list[str | float | int | bool | JSONArray | dict[str, JSONType] | None]", ) else: reveal_type( args, - expected_text="Dict[str, str | float | int | bool | List[JSONType] | JSONObject | None]", + expected_text="dict[str, str | float | int | bool | list[JSONType] | JSONObject | None]", ) dargs: JSONObject = args # Using type alias checking for dict: def f3(args: JSONStructured): - if isinstance(args, Dict): + if isinstance(args, dict): reveal_type( args, - expected_text="Dict[str, str | float | int | bool | List[JSONType] | JSONObject | None]", + expected_text="dict[str, str | float | int | bool | list[JSONType] | JSONObject | None]", ) else: reveal_type( args, - expected_text="List[str | float | int | bool | JSONArray | Dict[str, JSONType] | None]", + expected_text="list[str | float | int | bool | JSONArray | dict[str, JSONType] | None]", ) largs: JSONArray = args # Using type alias for "is None" narrowing: -LinkedList = Optional[tuple[int, "LinkedList"]] +LinkedList = tuple[int, "LinkedList"] | None def g(xs: LinkedList) -> Generator[int, None, None]: diff --git a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias7.py b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias7.py index 77ecc936f..abde0df34 100644 --- a/packages/pyright-internal/src/tests/samples/recursiveTypeAlias7.py +++ b/packages/pyright-internal/src/tests/samples/recursiveTypeAlias7.py @@ -7,9 +7,9 @@ A = Union[str, Dict[str, "A"]] -def foo(x: A): +def func1(x: A): if isinstance(x, str): print(x) else: for _, v in x.items(): - foo(v) + func1(v) diff --git a/packages/pyright-internal/src/tests/samples/required2.py b/packages/pyright-internal/src/tests/samples/required2.py index 6b71f40e6..7318d74b5 100644 --- a/packages/pyright-internal/src/tests/samples/required2.py +++ b/packages/pyright-internal/src/tests/samples/required2.py @@ -3,7 +3,7 @@ # pyright: reportMissingModuleSource=false -from typing import Literal, Optional, Type, TypedDict, Annotated +from typing import Literal, TypedDict, Annotated from typing_extensions import NotRequired, Required @@ -11,10 +11,10 @@ class TD1(TypedDict, total=False): a: Annotated["Required[int]", ""] b: Annotated[NotRequired[str], ""] c: "Required[int | str]" - d: Required[Optional[str]] + d: Required[str | None] e: Required[Literal[1, 2, 3]] f: Required[None] - g: Required[Type[int]] + g: Required[type[int]] td1_1: TD1 = {"a": 3, "c": "hi", "d": None, "e": 3, "f": None, "g": int} @@ -42,10 +42,10 @@ class TD2(TypedDict, total=True): a: Required[int] b: NotRequired[str] c: Required[int | str] - d: NotRequired[Optional[str]] + d: NotRequired[str | None] e: NotRequired[Literal[1, 2, 3]] f: NotRequired[None] - g: NotRequired[Type[int]] + g: NotRequired[type[int]] td2_1: TD2 = {"a": 3, "c": "hi", "d": None, "e": 3, "f": None, "g": int} diff --git a/packages/pyright-internal/src/tests/samples/required3.py b/packages/pyright-internal/src/tests/samples/required3.py index f2d6a5a81..efad5fd2d 100644 --- a/packages/pyright-internal/src/tests/samples/required3.py +++ b/packages/pyright-internal/src/tests/samples/required3.py @@ -10,7 +10,7 @@ v1_0: Example1 = {"required": 1} -# This should generage an error. +# This should generate an error. v1_1: Example1 = {"not_required": 1} Example2 = TypedDict("Example", required=Required[int], not_required=NotRequired[int]) @@ -18,5 +18,5 @@ v2_0: Example2 = {"required": 1} -# This should generage an error. +# This should generate an error. v2_1: Example2 = {"not_required": 1} diff --git a/packages/pyright-internal/src/tests/samples/returnTypes1.py b/packages/pyright-internal/src/tests/samples/returnTypes1.py index ed693bc88..66d5aff5c 100644 --- a/packages/pyright-internal/src/tests/samples/returnTypes1.py +++ b/packages/pyright-internal/src/tests/samples/returnTypes1.py @@ -1,26 +1,27 @@ # This sample tests basic return type analysis and error reporting. -def add(a: int, b: int) -> int: +def func1(a: int, b: int) -> int: c = float(a + b) # This should generate an error: # Expression of type 'float' cannot be assigned to return type 'int' return c -def addf(a: float, b: float) -> float: +def func2(a: float, b: float) -> float: c = float(a + b) return c # This should generate an error: # Argument of type 'float' cannot be assigned to parameter of type 'int' -add(3.4, 5) +func1(3.4, 5) # This should be fine -addf(3, 5) +func2(3, 5) + # This should not produce any error because the function's suite is empty. -def noReturnIsFine() -> bool: +def func3() -> bool: "Doc strings are allowed" ... diff --git a/packages/pyright-internal/src/tests/samples/returnTypes2.py b/packages/pyright-internal/src/tests/samples/returnTypes2.py index 42ccf3c22..aa37b8c2d 100644 --- a/packages/pyright-internal/src/tests/samples/returnTypes2.py +++ b/packages/pyright-internal/src/tests/samples/returnTypes2.py @@ -1,6 +1,7 @@ # This sample tests the case where return type inference encounters # recursion. + class Grammar: @staticmethod def A(): diff --git a/packages/pyright-internal/src/tests/samples/self1.py b/packages/pyright-internal/src/tests/samples/self1.py index d3cc7cd47..791b05b6e 100644 --- a/packages/pyright-internal/src/tests/samples/self1.py +++ b/packages/pyright-internal/src/tests/samples/self1.py @@ -1,11 +1,12 @@ # This sample tests various error conditions for the Self type -from typing import Callable, Generic, Type, TypeVar +from typing import Callable, TypeVar from typing_extensions import Self T = TypeVar("T") + # This should generate an error because Self can't be used in this context. class A(Self): ... @@ -55,7 +56,7 @@ def method4(self: T, a: Self) -> T: return self @classmethod - def method5(cls) -> Type[Self]: + def method5(cls) -> type[Self]: return cls @classmethod @@ -63,13 +64,13 @@ def method6(cls, a: Self) -> None: ... @classmethod - def method7(cls: Type[Self]) -> Type[Self]: + def method7(cls: type[Self]) -> type[Self]: return cls # This should generate an error because Self can't be used with # methods that declare a non-Self type for "self". @classmethod - def method8(cls: Type[T], a: Self) -> Type[T]: + def method8(cls: type[T], a: Self) -> type[T]: # This should generate an error because Self can't be used with # methods that declare a non-Self type for "self". x: Self diff --git a/packages/pyright-internal/src/tests/samples/self2.py b/packages/pyright-internal/src/tests/samples/self2.py index 91e27d2d4..78f31b833 100644 --- a/packages/pyright-internal/src/tests/samples/self2.py +++ b/packages/pyright-internal/src/tests/samples/self2.py @@ -1,6 +1,6 @@ # This sample tests the usage of the Self type. -from typing import Callable, Dict, Generic, ParamSpec, Protocol, Type, TypeVar +from typing import Callable, Generic, ParamSpec, Protocol, TypeVar from typing_extensions import Self from dataclasses import dataclass @@ -22,11 +22,11 @@ def method2(self) -> Self: return self @classmethod - def method3(cls: Type[Self]) -> Type[Self]: + def method3(cls: type[Self]) -> type[Self]: return cls @classmethod - def method4(cls) -> Type[Self]: + def method4(cls) -> type[Self]: return cls @@ -44,7 +44,7 @@ def set_scale(self, scale: float) -> Self: return self @classmethod - def from_config(cls, config: Dict[str, float]) -> Self: + def from_config(cls, config: dict[str, float]) -> Self: return cls() @@ -65,7 +65,7 @@ def set_scale(self: Self, scale: float) -> Self: return self @classmethod - def from_config(cls: Type[Self], config: Dict[str, float]) -> Self: + def from_config(cls: type[Self], config: dict[str, float]) -> Self: return cls() def difference(self: Self, other: Self) -> float: diff --git a/packages/pyright-internal/src/tests/samples/slots2.py b/packages/pyright-internal/src/tests/samples/slots2.py index 4c0583d6f..0062a5d2b 100644 --- a/packages/pyright-internal/src/tests/samples/slots2.py +++ b/packages/pyright-internal/src/tests/samples/slots2.py @@ -3,6 +3,7 @@ from dataclasses import dataclass, field + class NoSlots1: pass @@ -30,9 +31,8 @@ class Slots2(Slots1): @dataclass class Slots3: - __slots__ = ('values',) + __slots__ = ("values",) # This should not generate an error because class variables # in a dataclass are replaced by instance variables. values: list[int] = field(default_factory=list) - diff --git a/packages/pyright-internal/src/tests/samples/solver10.py b/packages/pyright-internal/src/tests/samples/solver10.py index 9133b6c10..068f41879 100644 --- a/packages/pyright-internal/src/tests/samples/solver10.py +++ b/packages/pyright-internal/src/tests/samples/solver10.py @@ -4,13 +4,13 @@ # We need to validate that the type inference for lists # is not over-narrowing when matching these literals. -from typing import Callable, List, Tuple, TypeVar +from typing import Callable, TypeVar _T = TypeVar("_T") -def extend_if(xs: List[_T], ys: List[Tuple[_T, bool]]) -> List[_T]: +def extend_if(xs: list[_T], ys: list[tuple[_T, bool]]) -> list[_T]: raise NotImplementedError() diff --git a/packages/pyright-internal/src/tests/samples/solver13.py b/packages/pyright-internal/src/tests/samples/solver13.py index 2ced37343..e41124d76 100644 --- a/packages/pyright-internal/src/tests/samples/solver13.py +++ b/packages/pyright-internal/src/tests/samples/solver13.py @@ -1,6 +1,6 @@ # This sample tests that type variables chain properly. -from typing import Generic, Iterable, Iterator, Tuple, TypeVar +from typing import Generic, Iterable, Iterator, TypeVar from itertools import chain T = TypeVar("T") @@ -29,5 +29,5 @@ class ClassB(Generic[T]): def __init__(self, xs: Iterable[T]) -> None: self.xs = xs - def indexed(self) -> "ClassB[Tuple[int, T]]": + def indexed(self) -> "ClassB[tuple[int, T]]": return ClassB(enumerate(self.xs)) diff --git a/packages/pyright-internal/src/tests/samples/solver15.py b/packages/pyright-internal/src/tests/samples/solver15.py index 7515c3463..dc76b2f06 100644 --- a/packages/pyright-internal/src/tests/samples/solver15.py +++ b/packages/pyright-internal/src/tests/samples/solver15.py @@ -1,7 +1,7 @@ # This sample tests the handling of a bound TypeVar that is used # in a Type[X] statement. -from typing import Callable, Generic, TypeVar, Type, Union +from typing import Callable, Generic, TypeVar class Base: @@ -11,12 +11,12 @@ class Base: T = TypeVar("T", bound=Base) -def register(state_name: str, state: Type[T]): +def register(state_name: str, state: type[T]): ... -def register_state(state_name: str) -> Callable[[Type[T]], Type[T]]: - def decorator(state: Type[T]) -> Type[T]: +def register_state(state_name: str) -> Callable[[type[T]], type[T]]: + def decorator(state: type[T]) -> type[T]: register(state_name, state) return state @@ -30,12 +30,12 @@ class F: E = TypeVar("E", bound=F) -def coercer_method(value: Union[E, str], enum: Type[E]) -> E: +def coercer_method(value: E | str, enum: type[E]) -> E: ... class C(Generic[E]): - e_type: Type[E] + e_type: type[E] - def coerce(self, e_type: Type[E], value: Union[E, str]) -> E: + def coerce(self, e_type: type[E], value: E | str) -> E: return coercer_method(value, self.e_type) diff --git a/packages/pyright-internal/src/tests/samples/solver17.py b/packages/pyright-internal/src/tests/samples/solver17.py index 47863c248..a056fc9d5 100644 --- a/packages/pyright-internal/src/tests/samples/solver17.py +++ b/packages/pyright-internal/src/tests/samples/solver17.py @@ -2,29 +2,29 @@ # are unions and are being compared using invariant constraints # and the dest type contains a type variable. -from typing import Pattern, Sequence, TypeVar, List, Optional, Union +from typing import Pattern, Sequence, TypeVar _T = TypeVar("_T") -def func1(v: List[Optional[_T]]) -> _T: +def func1(v: list[_T | None]) -> _T: ... -def func2(v: List[Optional[Union[_T, str]]]) -> _T: +def func2(v: list[_T | str | None]) -> _T: ... -v1: List[Optional[int]] = [1, None] +v1: list[int | None] = [1, None] r1 = func1(v1) reveal_type(r1, expected_text="int") -v2: List[Optional[Union[int, str]]] = [1, None] +v2: list[int | str | None] = [1, None] r2_1 = func1(v2) reveal_type(r2_1, expected_text="int | str") r2_2 = func2(v2) reveal_type(r2_2, expected_text="int") -v3: List[Union[str, Sequence[Pattern]]] = [""] +v3: list[str | Sequence[Pattern]] = [""] diff --git a/packages/pyright-internal/src/tests/samples/solver19.py b/packages/pyright-internal/src/tests/samples/solver19.py index 166fcd357..972e6c214 100644 --- a/packages/pyright-internal/src/tests/samples/solver19.py +++ b/packages/pyright-internal/src/tests/samples/solver19.py @@ -1,27 +1,27 @@ # This sample tests the handling of Type[T] matching and replacement. -from typing import Generator, List, Type, TypeVar, Union +from typing import Generator, TypeVar -class LI(List[int]): +class LI(list[int]): pass -class LS(List[str]): +class LS(list[str]): pass _T1 = TypeVar("_T1") -class MyList(List[Union[LI, LS]]): - def get_generator(self, *, type_: Type[_T1]) -> Generator[_T1, None, None]: +class MyList(list[LI | LS]): + def get_generator(self, *, type_: type[_T1]) -> Generator[_T1, None, None]: for elem in self: if isinstance(elem, type_): yield elem -def same(other: Union[LI, LS]): +def same(other: LI | LS): for elem in MyList().get_generator(type_=other.__class__): for v in elem: print(v) diff --git a/packages/pyright-internal/src/tests/samples/solver20.py b/packages/pyright-internal/src/tests/samples/solver20.py index fdf9a5a18..e9e9f1440 100644 --- a/packages/pyright-internal/src/tests/samples/solver20.py +++ b/packages/pyright-internal/src/tests/samples/solver20.py @@ -1,9 +1,9 @@ # This sample tests the case where a type variable is bound to a union. -from typing import Callable, TypeVar, Union +from typing import Callable, TypeVar T = TypeVar("T") -IntStr = Union[str, int] +IntStr = str | int T1 = TypeVar("T1", bound=IntStr) T2 = TypeVar("T2", bound=IntStr) diff --git a/packages/pyright-internal/src/tests/samples/solver24.py b/packages/pyright-internal/src/tests/samples/solver24.py index 2979ab7c3..9addd6b31 100644 --- a/packages/pyright-internal/src/tests/samples/solver24.py +++ b/packages/pyright-internal/src/tests/samples/solver24.py @@ -1,7 +1,7 @@ # This sample tests the case where the constraint solver's solution involves # a union of type variables. -from typing import Generic, TypeVar, Union, cast +from typing import Generic, TypeVar V = TypeVar("V") V_co = TypeVar("V_co", covariant=True) @@ -17,7 +17,7 @@ def __init__(self, x: ClassA[V_co]): pass -def func1(a: ClassA[V], b: ClassA[U], c: bool) -> ClassB[Union[V, U]]: +def func1(a: ClassA[V], b: ClassA[U], c: bool) -> ClassB[V | U]: x: ClassA[V | U] = a reveal_type(x, expected_text="ClassA[V@func1]") if c: diff --git a/packages/pyright-internal/src/tests/samples/solver8.py b/packages/pyright-internal/src/tests/samples/solver8.py index c37df14e7..67830444b 100644 --- a/packages/pyright-internal/src/tests/samples/solver8.py +++ b/packages/pyright-internal/src/tests/samples/solver8.py @@ -1,12 +1,12 @@ # This sample tests the constraint solver's special-case handling of # Optional[T] within a function. -from typing import Optional, TypeVar +from typing import TypeVar _T = TypeVar("_T") -def func1(v: Optional[_T]) -> _T: +def func1(v: _T | None) -> _T: if v is None: raise ValueError return v @@ -18,7 +18,7 @@ def func2(v: _T) -> _T: return v -f: Optional[int] = None +f: int | None = None a: int = func1(f) diff --git a/packages/pyright-internal/src/tests/samples/solver9.py b/packages/pyright-internal/src/tests/samples/solver9.py index 2885e2463..f82eab0ea 100644 --- a/packages/pyright-internal/src/tests/samples/solver9.py +++ b/packages/pyright-internal/src/tests/samples/solver9.py @@ -1,21 +1,21 @@ # This sample tests that Optional types can be matched # to Type[T] expressions by the constraint solver. -from typing import Callable, Generic, Optional, Type, TypeVar +from typing import Callable, Generic, Optional, TypeVar _T1 = TypeVar("_T1") _T2 = TypeVar("_T2", bound=None) _T3 = TypeVar("_T3") -def func1(a: Type[_T1]) -> _T1: +def func1(a: type[_T1]) -> _T1: return a() a = func1(Optional[int]) -def func2(a: Type[_T2]) -> Type[_T2]: +def func2(a: type[_T2]) -> type[_T2]: return a @@ -31,7 +31,7 @@ def __init__(self, value: _T1) -> None: ... @classmethod - def get(cls: Type[_T3]) -> Type[_T3]: + def get(cls: type[_T3]) -> type[_T3]: return cls @@ -39,7 +39,7 @@ class ClassB(ClassA): pass -def func3(value: _T1) -> Type[ClassA[_T1]]: +def func3(value: _T1) -> type[ClassA[_T1]]: v1 = ClassA(value) v2 = type(v1) reveal_type(v2, expected_text="type[ClassA[_T1@func3]]") diff --git a/packages/pyright-internal/src/tests/samples/solverLiteral1.py b/packages/pyright-internal/src/tests/samples/solverLiteral1.py index db892a9b9..ea9c29bda 100644 --- a/packages/pyright-internal/src/tests/samples/solverLiteral1.py +++ b/packages/pyright-internal/src/tests/samples/solverLiteral1.py @@ -1,10 +1,10 @@ # This sample tests the case that exercises some of the heuristics that # determine whether a solved TypeVar should retain a literal type. -from typing import Callable, Dict, Generic, Literal, Tuple, TypeVar +from typing import Callable, Generic, Literal, TypeVar -FileChanges = Dict[str, Literal["created", "edited", "removed"]] +FileChanges = dict[str, Literal["created", "edited", "removed"]] changes: FileChanges = {} changes.update({filename: "removed" for filename in ["foo.py", "bar.py"]}) @@ -35,7 +35,7 @@ def func3(value: _T) -> Callable[[_T], None]: ... -x: Callable[[Tuple[bool]], None] = func3((True,)) +x: Callable[[tuple[bool]], None] = func3((True,)) def func4(v: _T, f: Callable[[_T], None]): diff --git a/packages/pyright-internal/src/tests/samples/solverScoring2.py b/packages/pyright-internal/src/tests/samples/solverScoring2.py index 2ce5f5bbf..7f4ad0dd3 100644 --- a/packages/pyright-internal/src/tests/samples/solverScoring2.py +++ b/packages/pyright-internal/src/tests/samples/solverScoring2.py @@ -3,7 +3,7 @@ # according to PEP 484, but pyright has code in place to find the # "least complex" answer. -from typing import Any, Generic, List, TypeVar, Union +from typing import Any, Generic, TypeVar, Union T1 = TypeVar("T1") @@ -20,52 +20,52 @@ def some_func(x: Wrapper[T1]) -> Wrapper[T1]: return ensure_wrapped(x) -def func1a(value: List[Union[T1, List[T1]]]) -> T1: +def func1a(value: list[Union[T1, list[T1]]]) -> T1: ... -def func2a(value: List[Union[float, List[float]]]): +def func2a(value: list[Union[float, list[float]]]): x = func1a(value) reveal_type(x, expected_text="float") -def func3a(value: List[Union[str, List[float]]]): +def func3a(value: list[Union[str, list[float]]]): # This should generate an error func1a(value) -def func4a(value: List[Union[float, str, List[Union[float, str]]]]): +def func4a(value: list[Union[float, str, list[Union[float, str]]]]): x = func1a(value) reveal_type(x, expected_text="float | str") -def func1b(value: List[Union[int, List[T1]]]) -> T1: +def func1b(value: list[Union[int, list[T1]]]) -> T1: ... -def func2b(value: List[Union[int, List[float]]]): +def func2b(value: list[Union[int, list[float]]]): x = func1b(value) reveal_type(x, expected_text="float") -def func3b(value: List[Union[str, List[float]]]): +def func3b(value: list[Union[str, list[float]]]): # This should generate an error func1b(value) -def ensure_list(value: Union[T1, List[T1]]) -> List[T1]: +def ensure_list(value: Union[T1, list[T1]]) -> list[T1]: ... def func4( - v1: list, v2: List[Any], v3: List[None], v4: Any, v5: int, v6: T1, v7: List[T1] + v1: list, v2: list[Any], v3: list[None], v4: Any, v5: int, v6: T1, v7: list[T1] ) -> T1: - reveal_type(ensure_list(v1), expected_text="List[Unknown]") - reveal_type(ensure_list(v2), expected_text="List[Any]") - reveal_type(ensure_list(v3), expected_text="List[None]") - reveal_type(ensure_list(v4), expected_text="List[Any]") - reveal_type(ensure_list(v5), expected_text="List[int]") - reveal_type(ensure_list(v6), expected_text="List[T1@func4]") - reveal_type(ensure_list(v7), expected_text="List[T1@func4]") + reveal_type(ensure_list(v1), expected_text="list[Unknown]") + reveal_type(ensure_list(v2), expected_text="list[Any]") + reveal_type(ensure_list(v3), expected_text="list[None]") + reveal_type(ensure_list(v4), expected_text="list[Any]") + reveal_type(ensure_list(v5), expected_text="list[int]") + reveal_type(ensure_list(v6), expected_text="list[T1@func4]") + reveal_type(ensure_list(v7), expected_text="list[T1@func4]") return v6 diff --git a/packages/pyright-internal/src/tests/samples/solverScoring3.py b/packages/pyright-internal/src/tests/samples/solverScoring3.py index 26e3e0daa..5cd2d1d5e 100644 --- a/packages/pyright-internal/src/tests/samples/solverScoring3.py +++ b/packages/pyright-internal/src/tests/samples/solverScoring3.py @@ -1,12 +1,12 @@ # This sample tests the case where the constraint solver can choose one # of several types that satisfy the constraints. -from typing import TypeVar, Union +from typing import TypeVar T = TypeVar("T") -def to_list(t: Union[list[T], T]) -> list[T]: +def to_list(t: list[T] | T) -> list[T]: ... diff --git a/packages/pyright-internal/src/tests/samples/staticExpressions1.py b/packages/pyright-internal/src/tests/samples/staticExpression1.py similarity index 99% rename from packages/pyright-internal/src/tests/samples/staticExpressions1.py rename to packages/pyright-internal/src/tests/samples/staticExpression1.py index 63a4416ae..400bb1546 100644 --- a/packages/pyright-internal/src/tests/samples/staticExpressions1.py +++ b/packages/pyright-internal/src/tests/samples/staticExpression1.py @@ -51,11 +51,13 @@ else: x = "error!" + class Dummy: DEFINED_FALSE: bool DEFINED_TRUE: bool DEFINED_STR: str + dummy = Dummy() if dummy.DEFINED_TRUE: diff --git a/packages/pyright-internal/src/tests/samples/threePartVersion1.py b/packages/pyright-internal/src/tests/samples/staticExpression2.py similarity index 91% rename from packages/pyright-internal/src/tests/samples/threePartVersion1.py rename to packages/pyright-internal/src/tests/samples/staticExpression2.py index 540685acb..a65ffad90 100644 --- a/packages/pyright-internal/src/tests/samples/threePartVersion1.py +++ b/packages/pyright-internal/src/tests/samples/staticExpression2.py @@ -1,5 +1,6 @@ -import sys +# This sample tests a special form of a sys.version_info check. +import sys from datetime import datetime, timezone, timedelta from typing import overload, Optional diff --git a/packages/pyright-internal/src/tests/samples/subscript1.py b/packages/pyright-internal/src/tests/samples/subscript1.py index 99d850764..8c031c4da 100644 --- a/packages/pyright-internal/src/tests/samples/subscript1.py +++ b/packages/pyright-internal/src/tests/samples/subscript1.py @@ -6,6 +6,7 @@ from collections import OrderedDict, deque from asyncio import Future, Task + # These should generate errors for Python 3.8 and older. def func1( a1: Queue[int], diff --git a/packages/pyright-internal/src/tests/samples/subscript2.py b/packages/pyright-internal/src/tests/samples/subscript2.py index d1ff78ef8..78aa8ff2d 100644 --- a/packages/pyright-internal/src/tests/samples/subscript2.py +++ b/packages/pyright-internal/src/tests/samples/subscript2.py @@ -1,12 +1,12 @@ # This sample tests various forms of subscript expressions for # syntax and semantic (type) errors. -from typing import List, TypeVar +from typing import TypeVar _T = TypeVar("_T", list, tuple) -def func1(p1: List[int], p2: _T): +def func1(p1: list[int], p2: _T): a1 = p1[0] reveal_type(a1, expected_text="int") diff --git a/packages/pyright-internal/src/tests/samples/subscript3.py b/packages/pyright-internal/src/tests/samples/subscript3.py index fe221f8ae..3d0d2540a 100644 --- a/packages/pyright-internal/src/tests/samples/subscript3.py +++ b/packages/pyright-internal/src/tests/samples/subscript3.py @@ -1,7 +1,7 @@ # This sample tests subscript forms specified in PEP 637 - # keyword and unpacked args. -from typing import Any, Tuple, Union, overload +from typing import Any, Union, overload class ClassA: @@ -10,7 +10,7 @@ def __getitem__(self, index: int) -> int: ... @overload - def __getitem__(self, index: Tuple[int, ...]) -> float: + def __getitem__(self, index: tuple[int, ...]) -> float: ... @overload @@ -25,7 +25,7 @@ def __setitem__(self, index: int, value: int) -> None: ... @overload - def __setitem__(self, index: Tuple[int, ...], value: float) -> None: + def __setitem__(self, index: tuple[int, ...], value: float) -> None: ... @overload @@ -93,7 +93,7 @@ def __setitem__(self, index: Any, value: Union[str, float], *, v1: int = 3) -> N class ClassB: - def __getitem__(self, value: Tuple[()], *, v1: int) -> str: + def __getitem__(self, value: tuple[()], *, v1: int) -> str: ... b_obj = ClassB() diff --git a/packages/pyright-internal/src/tests/samples/subscript4.py b/packages/pyright-internal/src/tests/samples/subscript4.py index 01bec6b8a..a4b6f734e 100644 --- a/packages/pyright-internal/src/tests/samples/subscript4.py +++ b/packages/pyright-internal/src/tests/samples/subscript4.py @@ -3,8 +3,8 @@ # pyright: strict + def func1(lst: list[tuple[int, int]]): for _ in range(1): lst[-1] = lst[-1][1], lst[-1][0] del lst[-1] - diff --git a/packages/pyright-internal/src/tests/samples/super10.py b/packages/pyright-internal/src/tests/samples/super10.py index 8c790952a..967908e2d 100644 --- a/packages/pyright-internal/src/tests/samples/super10.py +++ b/packages/pyright-internal/src/tests/samples/super10.py @@ -1,5 +1,6 @@ # This sample tests that super() calls use Self for binding. + class A: def clone(self): return self diff --git a/packages/pyright-internal/src/tests/samples/super2.py b/packages/pyright-internal/src/tests/samples/super2.py index a9b55640c..95835661b 100644 --- a/packages/pyright-internal/src/tests/samples/super2.py +++ b/packages/pyright-internal/src/tests/samples/super2.py @@ -1,7 +1,7 @@ # This sample tests the handling of the "super" call when # used with a two-argument form that specifies the "bind to" type. -from typing import Type, TypeVar +from typing import TypeVar T = TypeVar("T", bound="A") @@ -9,7 +9,7 @@ class A: @classmethod - def factory(cls: Type[T]) -> T: + def factory(cls: type[T]) -> T: return cls() diff --git a/packages/pyright-internal/src/tests/samples/super6.py b/packages/pyright-internal/src/tests/samples/super6.py index 34c34612c..aedafcd66 100644 --- a/packages/pyright-internal/src/tests/samples/super6.py +++ b/packages/pyright-internal/src/tests/samples/super6.py @@ -17,25 +17,22 @@ def __new__(cls): reveal_type(f, expected_text="Foo") - class FirstLevelMeta(type): def __new__(cls, name: str, bases, dct): new_class = super().__new__(cls, name, bases, dct) - reveal_type(new_class, expected_text='Self@FirstLevelMeta') + reveal_type(new_class, expected_text="Self@FirstLevelMeta") return new_class class SecondLevelMeta(FirstLevelMeta): def __new__(cls, name: str, bases, dct): new_class = super().__new__(cls, name, bases, dct) - reveal_type(new_class, expected_text='Self@SecondLevelMeta') + reveal_type(new_class, expected_text="Self@SecondLevelMeta") return new_class class ThirdLevelMeta(SecondLevelMeta): def __new__(cls, name: str, bases, dct): new_class = super().__new__(cls, name, bases, dct) - reveal_type(new_class, expected_text='Self@ThirdLevelMeta') + reveal_type(new_class, expected_text="Self@ThirdLevelMeta") return new_class - - diff --git a/packages/pyright-internal/src/tests/samples/totalOrdering1.py b/packages/pyright-internal/src/tests/samples/totalOrdering1.py index 5b4207edb..8c6882e34 100644 --- a/packages/pyright-internal/src/tests/samples/totalOrdering1.py +++ b/packages/pyright-internal/src/tests/samples/totalOrdering1.py @@ -20,6 +20,7 @@ def __gt__(self, other: object) -> bool: v5 = a == b v6 = a != b + # This should generate an error because it doesn't declare # any of the required ordering functions. @total_ordering diff --git a/packages/pyright-internal/src/tests/samples/tryExcept1.py b/packages/pyright-internal/src/tests/samples/tryExcept1.py index ca49b13f3..7888d4a0f 100644 --- a/packages/pyright-internal/src/tests/samples/tryExcept1.py +++ b/packages/pyright-internal/src/tests/samples/tryExcept1.py @@ -3,7 +3,6 @@ def func1(): - try: pass except: diff --git a/packages/pyright-internal/src/tests/samples/tryExcept10.py b/packages/pyright-internal/src/tests/samples/tryExcept10.py index 87632cb02..15b474a42 100644 --- a/packages/pyright-internal/src/tests/samples/tryExcept10.py +++ b/packages/pyright-internal/src/tests/samples/tryExcept10.py @@ -1,6 +1,7 @@ # This sample tests that type errors within a finally clause are # property detected. + def func1() -> None: file = None try: diff --git a/packages/pyright-internal/src/tests/samples/tryExcept2.py b/packages/pyright-internal/src/tests/samples/tryExcept2.py index cd743740b..6beebf81a 100644 --- a/packages/pyright-internal/src/tests/samples/tryExcept2.py +++ b/packages/pyright-internal/src/tests/samples/tryExcept2.py @@ -1,11 +1,11 @@ # This sample tests basic handling of nested finally clauses. -def deallocate(i: int) -> None: +def func1(i: int) -> None: pass -def test(): +def func2(): aaa = 3 try: try: @@ -13,4 +13,4 @@ def test(): finally: pass finally: - deallocate(aaa) + func1(aaa) diff --git a/packages/pyright-internal/src/tests/samples/tryExcept3.py b/packages/pyright-internal/src/tests/samples/tryExcept3.py index 5120e750c..d265387f4 100644 --- a/packages/pyright-internal/src/tests/samples/tryExcept3.py +++ b/packages/pyright-internal/src/tests/samples/tryExcept3.py @@ -1,9 +1,7 @@ # This sample verifies that the exception type validation # handles the case where the exception type is a Type[X] object. -from typing import Type - -exc: Type[Exception] = Exception +exc: type[Exception] = Exception try: diff --git a/packages/pyright-internal/src/tests/samples/tryExcept8.py b/packages/pyright-internal/src/tests/samples/tryExcept8.py index 3ec4e599e..ae755bc0b 100644 --- a/packages/pyright-internal/src/tests/samples/tryExcept8.py +++ b/packages/pyright-internal/src/tests/samples/tryExcept8.py @@ -1,7 +1,7 @@ # This sample tests the detection of inaccessible exception handlers. -from typing import Type, Union +from typing import Union def func1() -> None: @@ -51,7 +51,7 @@ def func5(): pass -def func6(u: Union[Type[Exception], tuple[Type[Exception], ...]]): +def func6(u: Union[type[Exception], tuple[type[Exception], ...]]): try: ... except ValueError as e: @@ -60,7 +60,7 @@ def func6(u: Union[Type[Exception], tuple[Type[Exception], ...]]): ... -def func7(u: Type[Exception]): +def func7(u: type[Exception]): try: ... except ValueError as e: diff --git a/packages/pyright-internal/src/tests/samples/tuples1.py b/packages/pyright-internal/src/tests/samples/tuple1.py similarity index 99% rename from packages/pyright-internal/src/tests/samples/tuples1.py rename to packages/pyright-internal/src/tests/samples/tuple1.py index 10d2182ba..9acc8ec96 100644 --- a/packages/pyright-internal/src/tests/samples/tuples1.py +++ b/packages/pyright-internal/src/tests/samples/tuple1.py @@ -90,6 +90,7 @@ def func10() -> tuple[int, ...]: func9((2, 3, 4)) func9((2,)) + # Tests for tuple assignments with unpack expressions. def func10_1() -> int: a = (3, 4, 5) diff --git a/packages/pyright-internal/src/tests/samples/tuples10.py b/packages/pyright-internal/src/tests/samples/tuple10.py similarity index 81% rename from packages/pyright-internal/src/tests/samples/tuples10.py rename to packages/pyright-internal/src/tests/samples/tuple10.py index 7bea94fe8..fe2a4234b 100644 --- a/packages/pyright-internal/src/tests/samples/tuples10.py +++ b/packages/pyright-internal/src/tests/samples/tuple10.py @@ -2,7 +2,7 @@ # literals under the appropriate circumstances. -from typing import List, Literal, Tuple +from typing import Literal a1 = (1, 2) @@ -11,11 +11,11 @@ a2 = list((1, 2)) reveal_type(a2, expected_text="list[Literal[1, 2]]") -a3: List[Literal[1]] = list((1,)) +a3: list[Literal[1]] = list((1,)) reveal_type(a3, expected_text="list[Literal[1]]") -def func1(v1: Tuple[Literal[1], ...], v2: Tuple[Literal[1]]): +def func1(v1: tuple[Literal[1], ...], v2: tuple[Literal[1]]): a4 = set(v1) reveal_type(a4, expected_text="set[Literal[1]]") diff --git a/packages/pyright-internal/src/tests/samples/tuple11.py b/packages/pyright-internal/src/tests/samples/tuple11.py new file mode 100644 index 000000000..6b3540107 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/tuple11.py @@ -0,0 +1,19 @@ +# This sample tests the handling of magic methods on +# the tuple class. + + +def func1(t1: tuple[int, ...], t2: tuple[int, ...]): + return t1 >= t2 + + +def func2(t1: tuple[int, ...], t2: tuple[str, int]): + return t1 < t2 + + +def func3(t1: tuple[int, int], t2: tuple[int, ...]): + return t1 > t2 + + +def func4(t1: tuple[int, ...], t2: tuple[str, ...]): + # This should generate an error + return t1 <= t2 diff --git a/packages/pyright-internal/src/tests/samples/tuples12.py b/packages/pyright-internal/src/tests/samples/tuple12.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/tuples12.py rename to packages/pyright-internal/src/tests/samples/tuple12.py diff --git a/packages/pyright-internal/src/tests/samples/tuples13.py b/packages/pyright-internal/src/tests/samples/tuple13.py similarity index 86% rename from packages/pyright-internal/src/tests/samples/tuples13.py rename to packages/pyright-internal/src/tests/samples/tuple13.py index 82da99a43..d143285eb 100644 --- a/packages/pyright-internal/src/tests/samples/tuples13.py +++ b/packages/pyright-internal/src/tests/samples/tuple13.py @@ -1,9 +1,7 @@ # This sample tests indexing of tuples with slice expressions. -from typing import Tuple - -def func1(val1: Tuple[int, str, None], val2: Tuple[int, ...]): +def func1(val1: tuple[int, str, None], val2: tuple[int, ...]): x1 = val1[:2] reveal_type(x1, expected_text="tuple[int, str]") diff --git a/packages/pyright-internal/src/tests/samples/tuples15.py b/packages/pyright-internal/src/tests/samples/tuple15.py similarity index 79% rename from packages/pyright-internal/src/tests/samples/tuples15.py rename to packages/pyright-internal/src/tests/samples/tuple15.py index fdaf16000..495ec52cd 100644 --- a/packages/pyright-internal/src/tests/samples/tuples15.py +++ b/packages/pyright-internal/src/tests/samples/tuple15.py @@ -1,18 +1,15 @@ # This sample tests the special-case handling of the __add__ operator # when two tuples of known types are added together. -from typing import Tuple - - v1 = () + () reveal_type(v1, expected_text="tuple[()]") -def func1(a: Tuple[int, int, int], b: Tuple[str, str]): +def func1(a: tuple[int, int, int], b: tuple[str, str]): reveal_type(a + b, expected_text="tuple[int, int, int, str, str]") -def func2(a: Tuple[int, int, int], b: Tuple[str, ...]): +def func2(a: tuple[int, int, int], b: tuple[str, ...]): reveal_type(a + b, expected_text="tuple[int | str, ...]") diff --git a/packages/pyright-internal/src/tests/samples/tuples16.py b/packages/pyright-internal/src/tests/samples/tuple16.py similarity index 60% rename from packages/pyright-internal/src/tests/samples/tuples16.py rename to packages/pyright-internal/src/tests/samples/tuple16.py index ca57eebb0..689282893 100644 --- a/packages/pyright-internal/src/tests/samples/tuples16.py +++ b/packages/pyright-internal/src/tests/samples/tuple16.py @@ -1,12 +1,9 @@ # This sample tests the handling of bidirectional type inference # for unions of tuples. -from typing import Dict, Tuple, Union - - # The following two unions are the same but declared in different orders. -TupleUnion1 = Union[Tuple[int, str], Tuple[int, str, Dict[str, Union[str, int]]]] -TupleUnion2 = Union[Tuple[int, str, Dict[str, Union[str, int]]], Tuple[int, str]] +TupleUnion1 = tuple[int, str] | tuple[int, str, dict[str, str | int]] +TupleUnion2 = tuple[int, str, dict[str, str | int]] | tuple[int, str] v1: TupleUnion1 = 1, "two", {"hey": "three"} v2: TupleUnion2 = 1, "two", {"hey": "three"} diff --git a/packages/pyright-internal/src/tests/samples/tuples17.py b/packages/pyright-internal/src/tests/samples/tuple17.py similarity index 99% rename from packages/pyright-internal/src/tests/samples/tuples17.py rename to packages/pyright-internal/src/tests/samples/tuple17.py index 366c18a4b..6aa759328 100644 --- a/packages/pyright-internal/src/tests/samples/tuples17.py +++ b/packages/pyright-internal/src/tests/samples/tuple17.py @@ -1,6 +1,7 @@ # This sample tests a limiter that prevents infinite recursion # in the tuple inference logic. + def func1(val: int): t = None while True: diff --git a/packages/pyright-internal/src/tests/samples/tuples18.py b/packages/pyright-internal/src/tests/samples/tuple18.py similarity index 100% rename from packages/pyright-internal/src/tests/samples/tuples18.py rename to packages/pyright-internal/src/tests/samples/tuple18.py diff --git a/packages/pyright-internal/src/tests/samples/tuple2.py b/packages/pyright-internal/src/tests/samples/tuple2.py new file mode 100644 index 000000000..816745776 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/tuple2.py @@ -0,0 +1,20 @@ +# This sample file tests various aspects of type analysis for tuples. + +no_args: tuple = () +zero_length: tuple[()] = () +all_ints1: tuple[int, ...] = () +all_ints2: tuple[int, ...] = (1,) +all_ints3: tuple[int, ...] = (1, 3, 4) + +all_ints1 = all_ints2 +all_ints2 = all_ints3 +all_ints3 = all_ints2 + +# This should generate an error. +bad_ellipsis1: tuple[...] + +# This should generate an error +bad_ellipsis2: tuple[int, int, ...] + +# This should generate an error +bad_ellipsis3: tuple[int, ..., int] diff --git a/packages/pyright-internal/src/tests/samples/tuples3.py b/packages/pyright-internal/src/tests/samples/tuple3.py similarity index 63% rename from packages/pyright-internal/src/tests/samples/tuples3.py rename to packages/pyright-internal/src/tests/samples/tuple3.py index a95e198c8..0183e3b3b 100644 --- a/packages/pyright-internal/src/tests/samples/tuples3.py +++ b/packages/pyright-internal/src/tests/samples/tuple3.py @@ -1,15 +1,13 @@ # This sample tests the assignment of heterogeneous tuples # to homogeneous tuple types. -from typing import Tuple - -def bar(values: Tuple[str, ...]): +def func1(values: tuple[str, ...]): ... # This should generate an error -bar(("", False)) +func1(("", False)) # This should generate an error -bar((False, "")) +func1((False, "")) diff --git a/packages/pyright-internal/src/tests/samples/tuples4.py b/packages/pyright-internal/src/tests/samples/tuple4.py similarity index 78% rename from packages/pyright-internal/src/tests/samples/tuples4.py rename to packages/pyright-internal/src/tests/samples/tuple4.py index 642113fa8..af783ec3d 100644 --- a/packages/pyright-internal/src/tests/samples/tuples4.py +++ b/packages/pyright-internal/src/tests/samples/tuple4.py @@ -1,7 +1,7 @@ # This sample tests the translation of a heterogeneous tuple # into an Iterable. -from typing import Iterable, TypeVar, Union +from typing import Iterable, TypeVar _T = TypeVar("_T") @@ -10,7 +10,7 @@ def foo(x: Iterable[_T]) -> Iterable[_T]: return x -def bar(x: Iterable[Union[int, str]]): +def bar(x: Iterable[int | str]): pass diff --git a/packages/pyright-internal/src/tests/samples/tuples5.py b/packages/pyright-internal/src/tests/samples/tuple5.py similarity index 79% rename from packages/pyright-internal/src/tests/samples/tuples5.py rename to packages/pyright-internal/src/tests/samples/tuple5.py index 0ba4a64e5..5f2ef8977 100644 --- a/packages/pyright-internal/src/tests/samples/tuples5.py +++ b/packages/pyright-internal/src/tests/samples/tuple5.py @@ -1,16 +1,14 @@ # This sample tests the type checker's handling of # empty tuples and assignment to empty tuples. -from typing import Tuple - -a: Tuple[()] = () +a: tuple[()] = () # This should generate an error because the assigned # tuple has one element, but the destination is # expecting zero. -b: Tuple[()] = (1,) +b: tuple[()] = (1,) # This should generate an error because the assigned # tuple has zero elements, but the destination is # expecting two. -c: Tuple[int, str] = () +c: tuple[int, str] = () diff --git a/packages/pyright-internal/src/tests/samples/tuples6.py b/packages/pyright-internal/src/tests/samples/tuple6.py similarity index 91% rename from packages/pyright-internal/src/tests/samples/tuples6.py rename to packages/pyright-internal/src/tests/samples/tuple6.py index 49625f74e..af0e0b42a 100644 --- a/packages/pyright-internal/src/tests/samples/tuples6.py +++ b/packages/pyright-internal/src/tests/samples/tuple6.py @@ -1,14 +1,14 @@ # This sample tests tuple parameter matching for # cases where an unpack operator is used in the target. -from typing import Iterable, Tuple, Union +from typing import Iterable a: int b: int c: str d: str e: Iterable[int] -f: Iterable[Union[str, int]] +f: Iterable[str | int] # This should generate an error because an unpack # operator must be within a tuple. @@ -44,7 +44,7 @@ a, b, *e, c, d = 3, 4, 5, "a", "b", "c" -def func1(p1: Tuple[str, ...]): +def func1(p1: tuple[str, ...]): global a, b, c, d c, d = p1 diff --git a/packages/pyright-internal/src/tests/samples/tuples7.py b/packages/pyright-internal/src/tests/samples/tuple7.py similarity index 81% rename from packages/pyright-internal/src/tests/samples/tuples7.py rename to packages/pyright-internal/src/tests/samples/tuple7.py index b3837397b..13aa52fec 100644 --- a/packages/pyright-internal/src/tests/samples/tuples7.py +++ b/packages/pyright-internal/src/tests/samples/tuple7.py @@ -1,8 +1,7 @@ # This sample tests handling of tuples and tracking # of specific types within a tuple. -from typing import Generic, List, Optional, Tuple, TypeVar -from typing_extensions import Self +from typing import Generic, TypeVar, Self _T = TypeVar("_T") @@ -28,15 +27,13 @@ def __new__(cls) -> Self: # This should generate an error because the trailing # comma turns the index value into a tuple. -e = objA[ - 0, -] +e = objA[0,] for aaa in objA: print(aaa) -class ClassB(Tuple[_T, ...]): +class ClassB(tuple[_T, ...]): def __new__(cls) -> Self: ... @@ -54,11 +51,11 @@ def __new__(cls) -> Self: zz2: complex = objB[2] -def func1(lst: Optional[List[str]]) -> None: +def func1(lst: list[str] | None) -> None: for item in lst or (): reveal_type(item, expected_text="str") class X(Generic[_T]): def __init__(self): - self._x: Tuple[_T, ...] = () + self._x: tuple[_T, ...] = () diff --git a/packages/pyright-internal/src/tests/samples/tuples8.py b/packages/pyright-internal/src/tests/samples/tuple8.py similarity index 93% rename from packages/pyright-internal/src/tests/samples/tuples8.py rename to packages/pyright-internal/src/tests/samples/tuple8.py index df84ec612..449b9bb15 100644 --- a/packages/pyright-internal/src/tests/samples/tuples8.py +++ b/packages/pyright-internal/src/tests/samples/tuple8.py @@ -1,8 +1,7 @@ # This sample verifies that the "tuple" type is treated # analogously to "Tuple" type. -from typing import Iterable, Tuple, TypeVar -from typing_extensions import Self +from typing import Iterable, TypeVar, Self _T = TypeVar("_T") @@ -90,7 +89,7 @@ def __new__(cls) -> Self: T = TypeVar("T") -def baz(v: Iterable[T]) -> Tuple[T]: +def baz(v: Iterable[T]) -> tuple[T]: ... diff --git a/packages/pyright-internal/src/tests/samples/tuples9.py b/packages/pyright-internal/src/tests/samples/tuple9.py similarity index 74% rename from packages/pyright-internal/src/tests/samples/tuples9.py rename to packages/pyright-internal/src/tests/samples/tuple9.py index b37367fa2..5b8b5a55a 100644 --- a/packages/pyright-internal/src/tests/samples/tuples9.py +++ b/packages/pyright-internal/src/tests/samples/tuple9.py @@ -5,13 +5,10 @@ # pyright: strict -from typing import Tuple - - str_list = ["1", "2", "3"] left, right = tuple(str_list) -check1: Tuple[str, str] = (left, right) +check1: tuple[str, str] = (left, right) # This should generate an error -check2: Tuple[str, int] = (left, right) +check2: tuple[str, int] = (left, right) diff --git a/packages/pyright-internal/src/tests/samples/tupleUnpack1.py b/packages/pyright-internal/src/tests/samples/tupleUnpack1.py index 513cf4d6e..d876691b5 100644 --- a/packages/pyright-internal/src/tests/samples/tupleUnpack1.py +++ b/packages/pyright-internal/src/tests/samples/tupleUnpack1.py @@ -1,42 +1,42 @@ # This sample tests the handling of Unpack[Tuple[...]] as described # in PEP 646. -from typing import Tuple, Union +from typing import Union from typing_extensions import Unpack -def func1(v1: Tuple[int, Unpack[Tuple[bool, bool]], str]): - reveal_type(v1, expected_text="Tuple[int, bool, bool, str]") +def func1(v1: tuple[int, Unpack[tuple[bool, bool]], str]): + reveal_type(v1, expected_text="tuple[int, bool, bool, str]") # This should generate an error because multiple unpacks. -def func2(v2: Tuple[int, Unpack[Tuple[bool, bool]], str, Unpack[Tuple[bool, bool]]]): +def func2(v2: tuple[int, Unpack[tuple[bool, bool]], str, Unpack[tuple[bool, bool]]]): pass -def func3(v3: Tuple[int, Unpack[Tuple[bool, ...]], str]): - reveal_type(v3, expected_text="Tuple[int, *tuple[bool, ...], str]") +def func3(v3: tuple[int, Unpack[tuple[bool, ...]], str]): + reveal_type(v3, expected_text="tuple[int, *tuple[bool, ...], str]") # This should generate an error because there are multiple unbounded tuples. -def func4(v4: Tuple[Unpack[Tuple[bool, ...]], ...]): +def func4(v4: tuple[Unpack[tuple[bool, ...]], ...]): pass # This should generate an error because there are multiple unbounded tuples. -def func5(v5: Tuple[Unpack[Tuple[Unpack[Tuple[bool, ...]]]], ...]): +def func5(v5: tuple[Unpack[tuple[Unpack[tuple[bool, ...]]]], ...]): pass -def func6(v6: Tuple[Unpack[Tuple[bool]], ...]): - reveal_type(v6, expected_text="Tuple[bool, ...]") +def func6(v6: tuple[Unpack[tuple[bool]], ...]): + reveal_type(v6, expected_text="tuple[bool, ...]") -def func7(v7: Tuple[Unpack[Tuple[bool, Unpack[Tuple[int, float]]]]]): - reveal_type(v7, expected_text="Tuple[bool, int, float]") +def func7(v7: tuple[Unpack[tuple[bool, Unpack[tuple[int, float]]]]]): + reveal_type(v7, expected_text="tuple[bool, int, float]") -def func8(v8: Union[Unpack[Tuple[Unpack[Tuple[bool, Unpack[Tuple[int, ...]]]]]]]): +def func8(v8: Union[Unpack[tuple[Unpack[tuple[bool, Unpack[tuple[int, ...]]]]]]]): reveal_type(v8, expected_text="bool | int") @@ -62,15 +62,16 @@ def func13(t: type): if t is Unpack: ... + def func14( *args: Unpack[tuple[int]], other: str, ) -> None: ... + func14(1, other="hi") # This should generate an error because the second argument # corresponds to a keyword-only parameter. func14(1, "hi") - diff --git a/packages/pyright-internal/src/tests/samples/tuples11.py b/packages/pyright-internal/src/tests/samples/tuples11.py deleted file mode 100644 index 0b870c409..000000000 --- a/packages/pyright-internal/src/tests/samples/tuples11.py +++ /dev/null @@ -1,21 +0,0 @@ -# This sample tests the handling of magic methods on -# the tuple class. - -from typing import Tuple - - -def func1(t1: Tuple[int, ...], t2: Tuple[int, ...]): - return t1 >= t2 - - -def func2(t1: Tuple[int, ...], t2: Tuple[str, int]): - return t1 < t2 - - -def func3(t1: Tuple[int, int], t2: Tuple[int, ...]): - return t1 > t2 - - -def func4(t1: Tuple[int, ...], t2: Tuple[str, ...]): - # This should generate an error - return t1 <= t2 diff --git a/packages/pyright-internal/src/tests/samples/tuples2.py b/packages/pyright-internal/src/tests/samples/tuples2.py deleted file mode 100644 index 2d9d2596d..000000000 --- a/packages/pyright-internal/src/tests/samples/tuples2.py +++ /dev/null @@ -1,23 +0,0 @@ -# This sample file tests various aspects of type analysis for tuples. - -from typing import Tuple - - -no_args: Tuple = () -zero_length: Tuple[()] = () -all_ints1: Tuple[int, ...] = () -all_ints2: Tuple[int, ...] = (1,) -all_ints3: Tuple[int, ...] = (1, 3, 4) - -all_ints1 = all_ints2 -all_ints2 = all_ints3 -all_ints3 = all_ints2 - -# This should generate an error. -bad_ellipsis1: Tuple[...] - -# This should generate an error -bad_ellipsis2: Tuple[int, int, ...] - -# This should generate an error -bad_ellipsis3: Tuple[int, ..., int] diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 67107afbd..87bb6aa11 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1221,104 +1221,104 @@ test('Optional2', () => { TestUtils.validateResults(analysisResults, 1); }); -test('Tuples1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples1.py']); +test('Tuple1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple1.py']); TestUtils.validateResults(analysisResults, 15); }); -test('Tuples2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples2.py']); +test('Tuple2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple2.py']); TestUtils.validateResults(analysisResults, 3); }); -test('Tuples3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples3.py']); +test('Tuple3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple3.py']); TestUtils.validateResults(analysisResults, 2); }); -test('Tuples4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples4.py']); +test('Tuple4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple4.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Tuples5', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples5.py']); +test('Tuple5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple5.py']); TestUtils.validateResults(analysisResults, 2); }); -test('Tuples6', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples6.py']); +test('Tuple6', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple6.py']); TestUtils.validateResults(analysisResults, 9); }); -test('Tuples7', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples7.py']); +test('Tuple7', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple7.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Tuples8', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples8.py']); +test('Tuple8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple8.py']); TestUtils.validateResults(analysisResults, 11); }); -test('Tuples9', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples9.py']); +test('Tuple9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple9.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Tuples10', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples10.py']); +test('Tuple10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple10.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Tuples11', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples11.py']); +test('Tuple11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple11.py']); TestUtils.validateResults(analysisResults, 1); }); -test('Tuples12', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples12.py']); +test('Tuple12', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple12.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Tuples13', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples13.py']); +test('Tuple13', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple13.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Tuples15', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples15.py']); +test('Tuple15', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple15.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Tuples16', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples16.py']); +test('Tuple16', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple16.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Tuples17', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples17.py']); +test('Tuple17', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple17.py']); TestUtils.validateResults(analysisResults, 0); }); -test('Tuples18', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuples18.py']); +test('Tuple18', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple18.py']); TestUtils.validateResults(analysisResults, 0); }); @@ -1595,28 +1595,34 @@ test('Dictionary4', () => { TestUtils.validateResults(analysisResults, 0); }); -test('StaticExpressions1', () => { +test('StaticExpression1', () => { const configOptions = new ConfigOptions('.'); configOptions.defaultPythonVersion = PythonVersion.V3_8; configOptions.defaultPythonPlatform = 'windows'; - const analysisResults1 = TestUtils.typeAnalyzeSampleFiles(['staticExpressions1.py'], configOptions); + const analysisResults1 = TestUtils.typeAnalyzeSampleFiles(['staticExpression1.py'], configOptions); TestUtils.validateResults(analysisResults1, 9); configOptions.defaultPythonVersion = PythonVersion.V3_11; configOptions.defaultPythonPlatform = 'Linux'; - const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['staticExpressions1.py'], configOptions); + const analysisResults2 = TestUtils.typeAnalyzeSampleFiles(['staticExpression1.py'], configOptions); TestUtils.validateResults(analysisResults2, 6); configOptions.defineConstant.set('DEFINED_TRUE', true); configOptions.defineConstant.set('DEFINED_FALSE', false); configOptions.defineConstant.set('DEFINED_STR', 'hi!'); - const analysisResults3 = TestUtils.typeAnalyzeSampleFiles(['staticExpressions1.py'], configOptions); + const analysisResults3 = TestUtils.typeAnalyzeSampleFiles(['staticExpression1.py'], configOptions); TestUtils.validateResults(analysisResults3, 0); }); +test('StaticExpression2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['staticExpression2.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('SpecialForm1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['specialForm1.py']); diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index b090db46b..5692f2d47 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -460,8 +460,8 @@ test('Comprehension9', () => { TestUtils.validateResults(analysisResults, 0); }); -test('SetComprehension1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['setComprehension1.py']); +test('Comprehension10', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['comprehension10.py']); TestUtils.validateResults(analysisResults, 1); }); diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index c7f3e8ff9..25d8fb31e 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -727,12 +727,6 @@ test('Callable6', () => { TestUtils.validateResults(analysisResults, 9); }); -test('ThreePartVersion1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['threePartVersion1.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('Generic1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generic1.py']); From 43c5fae1a1fa9178fa6b3bcf62b195b7221959d0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 20:17:00 -0700 Subject: [PATCH 330/525] Finished cleanup of test cases. --- .../src/tests/samples/typeAlias1.py | 6 +-- .../src/tests/samples/typeAlias11.py | 4 +- .../src/tests/samples/typeAlias12.py | 6 +-- .../src/tests/samples/typeAlias13.py | 14 +++--- .../src/tests/samples/typeAlias15.py | 10 ++-- .../src/tests/samples/typeAlias18.py | 2 +- .../src/tests/samples/typeAlias2.py | 6 +-- .../src/tests/samples/typeAlias3.py | 4 +- .../src/tests/samples/typeAlias5.py | 12 ++--- .../src/tests/samples/typeAlias6.py | 8 ++-- .../src/tests/samples/typeAlias7.py | 1 - .../src/tests/samples/typeAlias8.py | 8 ++-- .../src/tests/samples/typeAlias9.py | 14 +++--- .../src/tests/samples/typeGuard1.py | 18 +++---- .../src/tests/samples/typeGuard2.py | 14 +++--- .../src/tests/samples/typeNarrowing1.py | 48 +++++++++---------- .../src/tests/samples/typeNarrowing2.py | 8 +--- .../src/tests/samples/typeNarrowing3.py | 18 +++---- .../src/tests/samples/typeNarrowing4.py | 14 +++--- .../src/tests/samples/typeNarrowing5.py | 25 ++++++---- .../src/tests/samples/typeNarrowing6.py | 12 ++--- .../src/tests/samples/typeNarrowing7.py | 18 ++++--- .../src/tests/samples/typeNarrowingAssert1.py | 7 +-- .../tests/samples/typeNarrowingCallable1.py | 10 ++-- .../src/tests/samples/typeNarrowingFalsy1.py | 16 +++---- .../src/tests/samples/typeNarrowingIn1.py | 8 ++-- .../src/tests/samples/typeNarrowingIn2.py | 4 +- .../src/tests/samples/typeNarrowingIsNone1.py | 4 +- .../samples/typeNarrowingIsNoneTuple2.py | 48 +++++++++++-------- .../tests/samples/typeNarrowingIsinstance1.py | 20 ++++---- .../samples/typeNarrowingIsinstance10.py | 2 +- .../samples/typeNarrowingIsinstance11.py | 3 +- .../samples/typeNarrowingIsinstance13.py | 2 +- .../samples/typeNarrowingIsinstance14.py | 6 +-- .../samples/typeNarrowingIsinstance17.py | 12 ++--- .../tests/samples/typeNarrowingIsinstance3.py | 4 +- .../tests/samples/typeNarrowingIsinstance5.py | 10 ++-- .../tests/samples/typeNarrowingIsinstance6.py | 6 +-- .../tests/samples/typeNarrowingLiteral1.py | 2 +- .../samples/typeNarrowingLiteralMember1.py | 10 ++-- .../tests/samples/typeNarrowingLocalConst1.py | 19 ++++---- .../tests/samples/typeNarrowingNoneMember1.py | 12 ++--- .../samples/typeNarrowingTupleLength1.py | 34 ++++++------- .../tests/samples/typeNarrowingTypeEquals1.py | 20 ++++---- .../src/tests/samples/typeNarrowingTypeIs1.py | 20 ++++---- .../tests/samples/typeNarrowingTypedDict1.py | 16 +++---- .../tests/samples/typeNarrowingTypedDict2.py | 4 +- .../src/tests/samples/typeVar11.py | 4 +- .../src/tests/samples/typeVar3.py | 23 +++++---- .../src/tests/samples/typeVar4.py | 14 +++--- .../src/tests/samples/typeVar8.py | 4 +- .../src/tests/samples/typeVar9.py | 16 +++---- .../src/tests/samples/typedDict1.py | 7 +-- .../src/tests/samples/typedDict11.py | 4 +- .../src/tests/samples/typedDict12.py | 6 +-- .../src/tests/samples/typedDict14.py | 6 +-- .../src/tests/samples/typedDict16.py | 19 ++++---- .../src/tests/samples/typedDict4.py | 4 +- .../src/tests/samples/typedDict6.py | 6 ++- .../src/tests/samples/typedDict7.py | 6 +-- .../src/tests/samples/typedDict8.py | 8 ++-- .../src/tests/samples/unbound1.py | 2 +- .../src/tests/samples/unbound2.py | 4 +- .../src/tests/samples/unbound3.py | 2 +- .../src/tests/samples/unions1.py | 8 ++-- .../src/tests/samples/unions2.py | 4 +- .../src/tests/samples/unions5.py | 12 ++--- .../src/tests/samples/unions6.py | 1 - .../tests/samples/unnecessaryIsInstance1.py | 16 ++----- .../tests/samples/unnecessaryIsSubclass1.py | 4 +- .../src/tests/samples/unpack1.py | 8 ++-- .../src/tests/samples/unpack2.py | 10 ++-- .../src/tests/samples/unpack4.py | 5 +- .../src/tests/samples/unpack5.py | 1 + .../src/tests/samples/unusedCallResult1.py | 4 +- .../src/tests/samples/unusedExpression1.py | 5 -- .../src/tests/samples/unusedImport1.py | 8 ++-- .../src/tests/samples/variadicTypeVar1.py | 14 +++--- .../src/tests/samples/variadicTypeVar10.py | 8 ++-- .../src/tests/samples/variadicTypeVar11.py | 14 +++--- .../src/tests/samples/variadicTypeVar12.py | 4 +- .../src/tests/samples/variadicTypeVar13.py | 5 +- .../src/tests/samples/variadicTypeVar14.py | 15 ++++-- .../src/tests/samples/variadicTypeVar16.py | 2 - .../src/tests/samples/variadicTypeVar17.py | 25 ++++++---- .../src/tests/samples/variadicTypeVar18.py | 2 +- .../src/tests/samples/variadicTypeVar2.py | 18 +++---- .../src/tests/samples/variadicTypeVar20.py | 6 ++- .../src/tests/samples/variadicTypeVar21.py | 6 ++- .../src/tests/samples/variadicTypeVar22.py | 22 ++++++--- .../src/tests/samples/variadicTypeVar4.py | 14 +++--- .../src/tests/samples/variadicTypeVar5.py | 1 + .../src/tests/samples/variadicTypeVar6.py | 14 +++--- .../src/tests/samples/variadicTypeVar7.py | 20 ++++---- .../src/tests/samples/variadicTypeVar8.py | 8 ++-- .../src/tests/samples/with1.py | 3 +- .../src/tests/samples/with2.py | 8 ++-- .../src/tests/samples/with5.py | 8 ++-- .../src/tests/samples/with6.py | 8 ++-- 99 files changed, 519 insertions(+), 496 deletions(-) diff --git a/packages/pyright-internal/src/tests/samples/typeAlias1.py b/packages/pyright-internal/src/tests/samples/typeAlias1.py index a8fe8fb08..b4df6aea7 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias1.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias1.py @@ -1,11 +1,11 @@ # This sample tests that type aliasing works. -from typing import Any, Literal, Tuple +from typing import Any, Literal # Make sure it works with and without forward references. -TupleAlias = Tuple["int", int] +TupleAlias = tuple["int", int] -foo1: Tuple[int, int] +foo1: tuple[int, int] bar1: TupleAlias foo1 = (1, 2) diff --git a/packages/pyright-internal/src/tests/samples/typeAlias11.py b/packages/pyright-internal/src/tests/samples/typeAlias11.py index b369a5c1f..a1f7fc336 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias11.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias11.py @@ -1,7 +1,7 @@ # This sample tests the simple aliasing of a generic class with no # type arguments. -from typing import Generic, TypeVar, Union +from typing import Generic, TypeVar import collections from collections import OrderedDict @@ -30,7 +30,7 @@ def __init__(self, x: _T): TA3[int, int] -TA4 = Union[dict, OrderedDict] +TA4 = dict | OrderedDict # This should generate two errors because the two types in TA4 # are already specialized. diff --git a/packages/pyright-internal/src/tests/samples/typeAlias12.py b/packages/pyright-internal/src/tests/samples/typeAlias12.py index 09a5454e6..2af8c1799 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias12.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias12.py @@ -1,19 +1,19 @@ # This sample tests the handling of a generic type alias that uses # a union that collapses to a single type when specialized. -from typing import List, TypeVar, Union +from typing import TypeVar V = TypeVar("V") U = TypeVar("U") -Alias = Union[V, U] +Alias = V | U def fn(x: Alias[V, V]) -> V: return x -def fn2(x: List[Alias[V, V]]) -> List[V]: +def fn2(x: list[Alias[V, V]]) -> list[V]: return x diff --git a/packages/pyright-internal/src/tests/samples/typeAlias13.py b/packages/pyright-internal/src/tests/samples/typeAlias13.py index 382fc3670..bd69294a5 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias13.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias13.py @@ -11,11 +11,11 @@ Method = Callable[Concatenate[T, P], U] MaybeMethod = Union[Method[T, P, U], Callable[P, U]] -Coro = Coroutine[Any, Any, T] -MaybeCoro = Union[T, Coro[T]] -CoroFunc = Callable[P, Coro[T]] -CoroMethod = Method[T, P, Coro[U]] -CoroMaybeMethod = Union[CoroMethod[T, P, U], CoroFunc[P, U]] +Co = Coroutine[Any, Any, T] +MaybeCo = Union[T, Co[T]] +CoFunc = Callable[P, Co[T]] +CoMethod = Method[T, P, Co[U]] +CoMaybeMethod = Union[CoMethod[T, P, U], CoFunc[P, U]] class D: @@ -32,7 +32,7 @@ class F: DT = TypeVar("DT", bound=D) -Error = CoroMaybeMethod[DT, [F, E], Any] +Error = CoMaybeMethod[DT, [F, E], Any] reveal_type( Error, expected_text="type[(DT@Error, F, E) -> Coroutine[Any, Any, Any]] | type[(F, E) -> Coroutine[Any, Any, Any]]", @@ -54,7 +54,7 @@ class C: BT = TypeVar("BT", bound=B) -Something = CoroMaybeMethod[A, [BT, C], Any] +Something = CoMaybeMethod[A, [BT, C], Any] reveal_type( Something, expected_text="type[(A, BT@Something, C) -> Coroutine[Any, Any, Any]] | type[(BT@Something, C) -> Coroutine[Any, Any, Any]]", diff --git a/packages/pyright-internal/src/tests/samples/typeAlias15.py b/packages/pyright-internal/src/tests/samples/typeAlias15.py index 28f20d741..9e3a9275b 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias15.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias15.py @@ -1,17 +1,17 @@ # This sample tests the case where a generic type alias is specialized # with an instantiable class rather than a class instance. -from typing import TypeVar, Sequence, Type +from typing import TypeVar, Sequence -_T = TypeVar("_T", bound=Type[Exception]) -_MaybeSequence = _T | Sequence[_T] +T = TypeVar("T", bound=type[Exception]) +MaybeSequence = T | Sequence[T] class HttpError(Exception): pass -def func1(errs: _MaybeSequence[type[Exception]]): +def func1(errs: MaybeSequence[type[Exception]]): pass @@ -19,6 +19,6 @@ def func1(errs: _MaybeSequence[type[Exception]]): func1(Exception) reveal_type( - _MaybeSequence[type[HttpError]], + MaybeSequence[type[HttpError]], expected_text="type[type[HttpError]] | type[Sequence[type[HttpError]]]", ) diff --git a/packages/pyright-internal/src/tests/samples/typeAlias18.py b/packages/pyright-internal/src/tests/samples/typeAlias18.py index 34898b411..af786c89d 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias18.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias18.py @@ -2,7 +2,7 @@ # declaration. We want to ensure that the variance of type variables # is compatible with the usage within the type alias. -from typing import Callable, Generic, TypeVar, TypeAlias +from typing import Generic, TypeVar, TypeAlias T1 = TypeVar("T1") T2 = TypeVar("T2", covariant=True) diff --git a/packages/pyright-internal/src/tests/samples/typeAlias2.py b/packages/pyright-internal/src/tests/samples/typeAlias2.py index 37f4ea3f1..237500341 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias2.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias2.py @@ -1,11 +1,11 @@ # This sample tests that forward references to type aliases work. -from typing import Dict, Any, Union +from typing import Any, Union class Base: @staticmethod - def create(data: Dict[str, Any]) -> "Mix": + def create(data: dict[str, Any]) -> "Mix": return A() @@ -22,5 +22,5 @@ class B(Base): class S: @staticmethod - def create(data: Dict[str, Any]) -> "Mix": + def create(data: dict[str, Any]) -> "Mix": return A() diff --git a/packages/pyright-internal/src/tests/samples/typeAlias3.py b/packages/pyright-internal/src/tests/samples/typeAlias3.py index 669e16f5e..0061606f4 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias3.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias3.py @@ -4,13 +4,13 @@ # pyright: strict -from typing import Callable, Generic, Tuple, Optional, TypeVar +from typing import Callable, Generic, Optional, TypeVar from typing_extensions import ParamSpec T = TypeVar("T") P = ParamSpec("P") -ValidationResult = Tuple[bool, Optional[T]] +ValidationResult = tuple[bool, Optional[T]] def foo() -> ValidationResult[str]: diff --git a/packages/pyright-internal/src/tests/samples/typeAlias5.py b/packages/pyright-internal/src/tests/samples/typeAlias5.py index 7af95a16d..cc6e670f4 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias5.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias5.py @@ -2,12 +2,12 @@ # TypeVars. from datetime import datetime -from typing import IO, Dict, Generic, List, Literal, Type, TypeVar, Union +from typing import IO, Generic, Literal, TypeVar, Union _T1 = TypeVar("_T1") _T2 = TypeVar("_T2") -MyUnion1 = Union[int, _T1, str, _T2, List[_T1]] +MyUnion1 = Union[int, _T1, str, _T2, list[_T1]] MyUnion2 = Union[float, datetime] @@ -24,7 +24,7 @@ MyUnion6 = MyUnion1[Literal[0], Literal["a"]] reveal_type( MyUnion6, - expected_text="type[int] | type[str] | type[List[Literal[0]]] | type[Literal[0, 'a']]", + expected_text="type[int] | type[str] | type[list[Literal[0]]] | type[Literal[0, 'a']]", ) @@ -46,13 +46,13 @@ def __int__(self) -> int: v2: FooIsh[Bar] = Bar() # This should generate an error. -v3: FooIsh[Type[Bar]] = 42 +v3: FooIsh[type[Bar]] = 42 -MyTypeAlias = Dict[_T1, _T2] +MyTypeAlias = dict[_T1, _T2] class MyClass1(Generic[_T1, _T2]): # This should generate an error because S and T are bound # type variables. - MyTypeAlias = Dict[_T1, _T2] + MyTypeAlias = dict[_T1, _T2] diff --git a/packages/pyright-internal/src/tests/samples/typeAlias6.py b/packages/pyright-internal/src/tests/samples/typeAlias6.py index 723011067..a5b6cd8e4 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias6.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias6.py @@ -1,10 +1,10 @@ # This sample tests that certain type aliases cannot be used within # call expressions. -from typing import Callable, Optional, Tuple, Type, TypeVar, Union +from typing import Callable, TypeVar -T_Union = Union[int, float] +T_Union = int | float # This should generate an error T_Union(3) @@ -15,7 +15,7 @@ T_Callable(1) -T_Type1 = Type[int] +T_Type1 = type[int] # This should generate an error T_Type1(object) @@ -23,7 +23,7 @@ T_Type2 = type T_Type2(object) -T_Optional = Optional[str] +T_Optional = str | None # This should generate an error T_Optional(3) diff --git a/packages/pyright-internal/src/tests/samples/typeAlias7.py b/packages/pyright-internal/src/tests/samples/typeAlias7.py index efb5845dd..e2b7ee057 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias7.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias7.py @@ -3,7 +3,6 @@ from typing import Awaitable, Callable, Generic, TypeVar - TSource = TypeVar("TSource") TError = TypeVar("TError") TResult = TypeVar("TResult") diff --git a/packages/pyright-internal/src/tests/samples/typeAlias8.py b/packages/pyright-internal/src/tests/samples/typeAlias8.py index cd6e6efb2..27c0d150a 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias8.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias8.py @@ -9,16 +9,16 @@ F = Callable[[T], T] -def f() -> F[T]: +def func1() -> F[T]: def g(x: T) -> T: ... return g -g = f() -v1 = g("foo") +func2 = func1() +v1 = func2("foo") reveal_type(v1, expected_text="str") -v2 = g(1) +v2 = func2(1) reveal_type(v2, expected_text="int") diff --git a/packages/pyright-internal/src/tests/samples/typeAlias9.py b/packages/pyright-internal/src/tests/samples/typeAlias9.py index 8e55f178f..536988485 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias9.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias9.py @@ -3,33 +3,33 @@ # pyright: reportUnknownParameterType=true, reportMissingTypeArgument=false -from typing import Dict, List, TypeVar +from typing import TypeVar T = TypeVar("T") -Foo = List[T] +TA1 = list[T] # This should generate an error because Foo is missing a type argument, # so the type of `f` is partially unknown. -def foo1(f: Foo) -> None: +def func1(f: TA1) -> None: pass -Bar = Foo +TA2 = TA1 # This should generate an error because Bar doesn't specialize # Foo appropriately. -def foo2(f: Bar) -> None: +def func2(f: TA2) -> None: pass K = TypeVar("K") V = TypeVar("V") -Baz = Dict[K, V] +TA3 = dict[K, V] # This should generate two errors because Baz is only partially specialized. -def foo3(f: Baz[int]) -> None: +def func3(f: TA3[int]) -> None: pass diff --git a/packages/pyright-internal/src/tests/samples/typeGuard1.py b/packages/pyright-internal/src/tests/samples/typeGuard1.py index 0143e2748..17f87384a 100644 --- a/packages/pyright-internal/src/tests/samples/typeGuard1.py +++ b/packages/pyright-internal/src/tests/samples/typeGuard1.py @@ -5,34 +5,34 @@ # pyright: reportMissingModuleSource=false import os -from typing import Any, List, Tuple, TypeVar, Union +from typing import Any, TypeVar from typing_extensions import TypeGuard _T = TypeVar("_T") -def is_two_element_tuple(a: Tuple[_T, ...]) -> TypeGuard[Tuple[_T, _T]]: +def is_two_element_tuple(a: tuple[_T, ...]) -> TypeGuard[tuple[_T, _T]]: return True -def func1(a: Tuple[int, ...]): +def func1(a: tuple[int, ...]): if is_two_element_tuple(a): - reveal_type(a, expected_text="Tuple[int, int]") + reveal_type(a, expected_text="tuple[int, int]") else: - reveal_type(a, expected_text="Tuple[int, ...]") + reveal_type(a, expected_text="tuple[int, ...]") -def is_string_list(val: List[Any], allow_zero_entries: bool) -> TypeGuard[List[str]]: +def is_string_list(val: list[Any], allow_zero_entries: bool) -> TypeGuard[list[str]]: if allow_zero_entries and len(val) == 0: return True return all(isinstance(x, str) for x in val) -def func2(a: List[Union[str, int]]): +def func2(a: list[str | int]): if is_string_list(a, True): - reveal_type(a, expected_text="List[str]") + reveal_type(a, expected_text="list[str]") else: - reveal_type(a, expected_text="List[str | int]") + reveal_type(a, expected_text="list[str | int]") # This should generate an error because TypeGuard diff --git a/packages/pyright-internal/src/tests/samples/typeGuard2.py b/packages/pyright-internal/src/tests/samples/typeGuard2.py index 47bfd133c..600720a59 100644 --- a/packages/pyright-internal/src/tests/samples/typeGuard2.py +++ b/packages/pyright-internal/src/tests/samples/typeGuard2.py @@ -3,7 +3,7 @@ # pyright: strict, reportMissingModuleSource=false -from typing import Any, Callable, List, Sequence, TypeVar, overload +from typing import Any, Callable, Sequence, TypeVar, overload from typing_extensions import TypeGuard @@ -18,26 +18,26 @@ def cb2(obj: object) -> bool: ... -def simple_filter(list: Sequence[object], fn: Callable[[object], bool]) -> List[object]: +def simple_filter(val: Sequence[object], fn: Callable[[object], bool]) -> list[object]: ... @overload def overloaded_filter( - list: Sequence[object], fn: Callable[[object], TypeGuard[_T]] + val: Sequence[object], fn: Callable[[object], TypeGuard[_T]] ) -> Sequence[_T]: ... @overload def overloaded_filter( - list: Sequence[object], fn: Callable[[object], bool] + val: Sequence[object], fn: Callable[[object], bool] ) -> Sequence[object]: ... def overloaded_filter( - list: Sequence[object], fn: Callable[[object], Any] + val: Sequence[object], fn: Callable[[object], Any] ) -> Sequence[Any]: ... @@ -46,10 +46,10 @@ def overloaded_filter( reveal_type(x1, expected_text="bool") sf1 = simple_filter([], cb1) -reveal_type(sf1, expected_text="List[object]") +reveal_type(sf1, expected_text="list[object]") sf2 = simple_filter([], cb2) -reveal_type(sf2, expected_text="List[object]") +reveal_type(sf2, expected_text="list[object]") of1 = overloaded_filter([], cb1) reveal_type(of1, expected_text="Sequence[int]") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowing1.py b/packages/pyright-internal/src/tests/samples/typeNarrowing1.py index 1d9c3ac92..cbca8d4dc 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowing1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowing1.py @@ -6,56 +6,56 @@ from random import random -class Foo: - def bar(self): +class ClassA: + def x(self): return maybe = True -a = None if maybe else Foo() -b = None if maybe else Foo() +a = None if maybe else ClassA() +b = None if maybe else ClassA() if not a or not b: - a.bar() - b.bar() + a.x() + b.x() else: - a.bar() - b.bar() + a.x() + b.x() if not (not a or not b): - a.bar() - b.bar() + a.x() + b.x() else: - a.bar() - b.bar() + a.x() + b.x() if not a and not b: # This should be flagged as an error - a.bar() + a.x() # This should be flagged as an error - b.bar() + b.x() else: - a.bar() - b.bar() + a.x() + b.x() if not (not a and not b): - a.bar() - b.bar() + a.x() + b.x() else: # This should be flagged as an error - a.bar() + a.x() # This should be flagged as an error - b.bar() + b.x() if a or b: - a.bar() - b.bar() + a.x() + b.x() else: # This should be flagged as an error - a.bar() + a.x() # This should be flagged as an error - b.bar() + b.x() def func1(a: str, b: str | bool) -> bool: diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowing2.py b/packages/pyright-internal/src/tests/samples/typeNarrowing2.py index 10cddc4a4..1697dc292 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowing2.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowing2.py @@ -1,14 +1,10 @@ # This sample tests the type narrowing logic for "continue" # statements within a loop. -from typing import List, Optional - -def foo(args: List[Optional[int]]): +def func1(args: list[int | None]): for arg in args: if arg is None: continue - # This should not generate an error because - # arg is known to be an int at this point. - print(arg.bit_length()) + reveal_type(arg.bit_length(), expected_text="int") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowing3.py b/packages/pyright-internal/src/tests/samples/typeNarrowing3.py index d98dc6fde..9a349f368 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowing3.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowing3.py @@ -1,37 +1,31 @@ # This sample tests the type analyzer's type narrowing logic # relating to break and continue statements and while test expressions. -from typing import List, Optional - def only_int(a: int): return a < 3 def test_break(): - foo1 = None + val1 = None while True: - if foo1 is None: - foo1 = 5 + if val1 is None: + val1 = 5 break else: - foo1 = "hello" + val1 = "hello" - # This should not generate an error because foo1 - # can only be an int type at this point. - only_int(foo1) + reveal_type(val1, expected_text="Literal[5]") def test_continue(): bar1 = 1 - my_list: List[Optional[int]] = [None, 3, 5] + my_list: list[int | None] = [None, 3, 5] for n in my_list: if n is None: continue bar1 = n - # This should not generate an error because bar1 - # can only be an int type at this point. only_int(bar1) diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowing4.py b/packages/pyright-internal/src/tests/samples/typeNarrowing4.py index 03bc6a48a..15ea2578c 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowing4.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowing4.py @@ -4,21 +4,19 @@ # pyright: strict -from typing import Optional - class C: - def foo(self): + def method1(self): pass -def good(b: Optional[C]) -> None: +def good(b: C | None) -> None: a = b if a: - a.foo() + a.method1() -def bad(b: Optional[C]) -> None: +def bad(b: C | None) -> None: if c := b: - c.foo() - b.foo() + c.method1() + b.method1() diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowing5.py b/packages/pyright-internal/src/tests/samples/typeNarrowing5.py index d4ecc8ab4..c41a40d45 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowing5.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowing5.py @@ -2,30 +2,35 @@ # where the source contains Unknown or Any type # arguments. -from typing import Any, Dict, Generic, TypeVar +from typing import Any, Generic, TypeVar -def func1(struct: Dict[Any, Any]): - a1: Dict[str, Any] = struct - reveal_type(a1, expected_text="Dict[str, Any]") +def func1(struct: dict[Any, Any]): + a1: dict[str, Any] = struct + reveal_type(a1, expected_text="dict[str, Any]") def func2(struct: Any): - a1: Dict[Any, str] = struct - reveal_type(a1, expected_text="Dict[Any, str]") + a1: dict[Any, str] = struct + reveal_type(a1, expected_text="dict[Any, str]") - if isinstance(struct, Dict): - a2: Dict[str, Any] = struct - reveal_type(a2, expected_text="Dict[str, Any]") + if isinstance(struct, dict): + a2: dict[str, Any] = struct + reveal_type(a2, expected_text="dict[str, Any]") T = TypeVar("T") -class A(Generic[T]): ... + + +class A(Generic[T]): + ... + def func3(val: A[Any]): x: A[int] = val reveal_type(x, expected_text="A[int]") + def func4(val: A[list[Any]]): x: A[list[int]] = val reveal_type(x, expected_text="A[list[int]]") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowing6.py b/packages/pyright-internal/src/tests/samples/typeNarrowing6.py index 166611ba1..ccb6654fe 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowing6.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowing6.py @@ -3,17 +3,17 @@ # is reassigned. -class Foo1: +class Class1: val0: int -class Foo2: +class Class2: val1: int - val2: Foo1 + val2: Class1 -def func(a: bool): - foo2: Foo2 = Foo2() +def func1(a: bool): + foo2: Class2 = Class2() foo2.val1 = 0 foo2.val2.val0 = 4 @@ -21,7 +21,7 @@ def func(a: bool): reveal_type(foo2.val2.val0, expected_text="Literal[4]") if a: - foo2 = Foo2() + foo2 = Class2() reveal_type(foo2.val1, expected_text="int") reveal_type(foo2.val2.val0, expected_text="int") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowing7.py b/packages/pyright-internal/src/tests/samples/typeNarrowing7.py index 3c469d50b..905bd2db2 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowing7.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowing7.py @@ -1,13 +1,11 @@ # This sample tests type narrowing for index operations. -from typing import Dict, List, Optional, Union - class Foo: - val: List[List[Optional[str]]] = [] + val: list[list[str | None]] = [] -def func1(v1: List[Optional[complex]]): +def func1(v1: list[complex | None]): if v1[0] and v1[1]: reveal_type(v1[0], expected_text="complex") reveal_type(v1[1], expected_text="complex") @@ -40,17 +38,17 @@ def func1(v1: List[Optional[complex]]): reveal_type(v1[-1], expected_text="complex") -def func2(v1: List[Union[Dict[str, str], List[str]]]): +def func2(v1: list[dict[str, str] | list[str]]): if isinstance(v1[0], dict): - reveal_type(v1[0], expected_text="Dict[str, str]") - reveal_type(v1[1], expected_text="Dict[str, str] | List[str]") + reveal_type(v1[0], expected_text="dict[str, str]") + reveal_type(v1[1], expected_text="dict[str, str] | list[str]") if isinstance(v1[-1], list): - reveal_type(v1[-1], expected_text="List[str]") + reveal_type(v1[-1], expected_text="list[str]") def func3(): - v1: Dict[str, int] = {} + v1: dict[str, int] = {} reveal_type(v1["x1"], expected_text="int") v1["x1"] = 3 @@ -62,7 +60,7 @@ def func3(): v1 = {} reveal_type(v1["x1"], expected_text="int") - v2: Dict[str, Dict[str, int]] = {} + v2: dict[str, dict[str, int]] = {} reveal_type(v2["y1"]["y2"], expected_text="int") v2["y1"]["y2"] = 3 diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingAssert1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingAssert1.py index 72e31decd..791f4a6e2 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingAssert1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingAssert1.py @@ -1,13 +1,10 @@ # This sample exercises the type analyzer's type narrowing # logic for assert statements. -from typing import Union - condition: bool = True -def foo1(a: Union[str, int]) -> int: - +def func1(a: str | int) -> int: if condition: # This should generate an error because # a could be a str. @@ -18,7 +15,7 @@ def foo1(a: Union[str, int]) -> int: return a -def foo2(a: Union[str, int]) -> int: +def func2(a: str | int) -> int: # Test the form of "assert" that includes a message string. assert isinstance(a, int), "Message" return a diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingCallable1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingCallable1.py index 7674675aa..ecf340e3f 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingCallable1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingCallable1.py @@ -1,7 +1,7 @@ # This sample tests the type engine's narrowing logic for # callable expressions. -from typing import Callable, Optional, Type, TypeVar, Union +from typing import Callable, Optional, TypeVar, Union class CallableObj: @@ -9,7 +9,7 @@ def __call__(self, val: int): return 3 -def f(a: int) -> Union[Callable[[int], int], Type[int], CallableObj, int]: +def f(a: int) -> Union[Callable[[int], int], type[int], CallableObj, int]: if a == 0: def h(b: int): @@ -44,14 +44,14 @@ def test1(arg: Union[_T1, Callable[[], _T1]]) -> _T1: return arg -class Foo: +class ClassA: def bar(self) -> None: pass -def test2(o: Foo) -> None: +def test2(o: ClassA) -> None: if callable(o): - reveal_type(o, expected_text="") + reveal_type(o, expected_text="") # This should generate an error o.foo() diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingFalsy1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingFalsy1.py index b5f8219cb..cfaabe07c 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingFalsy1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingFalsy1.py @@ -1,6 +1,6 @@ # This sample tests type narrowing for falsey and truthy values. -from typing import AnyStr, Iterable, List, Literal, NamedTuple, Optional, Union +from typing import AnyStr, Iterable, Literal, NamedTuple, Union class A: @@ -22,21 +22,21 @@ def __bool__(self) -> Literal[True]: ... -def func1(x: Union[int, List[int], A, B, C, D, None]) -> None: +def func1(x: Union[int, list[int], A, B, C, D, None]) -> None: if x: - reveal_type(x, expected_text="int | List[int] | A | B | D") + reveal_type(x, expected_text="int | list[int] | A | B | D") else: - reveal_type(x, expected_text="List[int] | B | C | Literal[0] | None") + reveal_type(x, expected_text="list[int] | B | C | Literal[0] | None") -def func2(maybe_int: Optional[int]): +def func2(maybe_int: int | None): if bool(maybe_int): reveal_type(maybe_int, expected_text="int") else: reveal_type(maybe_int, expected_text="Literal[0] | None") -def func3(maybe_a: Optional[A]): +def func3(maybe_a: A | None): if bool(maybe_a): reveal_type(maybe_a, expected_text="A") else: @@ -106,10 +106,10 @@ def method(self) -> None: self.value += 1 -def func10(val: Optional[AnyStr]): +def func10(val: AnyStr | None): return 1 -def func11(val: Optional[AnyStr]): +def func11(val: AnyStr | None): assert val reveal_type(val, expected_text="AnyStr@func11") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIn1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIn1.py index 4b768e8cd..497be7c0f 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIn1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIn1.py @@ -1,6 +1,6 @@ # This sample tests type narrowing for the "in" operator. -from typing import Literal, Optional, Union +from typing import Literal import random @@ -16,8 +16,8 @@ def verify_none(p: None) -> None: ... -x: Optional[str] -y: Union[int, str] +x: str | None +y: int | str if random.random() < 0.5: x = None y = 1 @@ -40,7 +40,7 @@ def verify_none(p: None) -> None: verify_str(y) -def func1(x: Optional[Union[int, str]], y: Literal[1, 2, "b"], b: int): +def func1(x: int | str | None, y: Literal[1, 2, "b"], b: int): if x in (1, 2, "a"): reveal_type(x, expected_text="Literal[1, 2, 'a']") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIn2.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIn2.py index 8eb43e1a3..2810c553b 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIn2.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIn2.py @@ -9,7 +9,7 @@ class MyEnum(enum.Enum): C = enum.auto() -def func0(x: MyEnum): +def func1(x: MyEnum): if x is MyEnum.C: return elif x in (MyEnum.A, MyEnum.B): @@ -18,7 +18,7 @@ def func0(x: MyEnum): reveal_type(x, expected_text="Never") -def func1(x: MyEnum): +def func2(x: MyEnum): if x in (MyEnum.A, MyEnum.B): reveal_type(x, expected_text="Literal[MyEnum.A, MyEnum.B]") else: diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsNone1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsNone1.py index 1b0c9ae6a..12b382ccd 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsNone1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsNone1.py @@ -4,10 +4,10 @@ # pyright: strict, reportUnusedVariable=false -from typing import Optional, TypeVar +from typing import TypeVar -def func1(x: Optional[int]): +def func1(x: int | None): if x is not None: x.bit_length() diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsNoneTuple2.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsNoneTuple2.py index f6f28274b..5a4c7b4bb 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsNoneTuple2.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsNoneTuple2.py @@ -1,19 +1,26 @@ # This sample tests the type narrowing case for unions of NamedTuples # where one or more of the entries is tested against type None by index. -from typing import NamedTuple, Union - -IntFirst = NamedTuple("IntFirst", [ - ("first", int), - ("second", None), -]) - -StrSecond = NamedTuple("StrSecond", [ - ("first", None), - ("second", str), -]) - -def func1(a: Union[IntFirst, StrSecond]) -> IntFirst: +from typing import NamedTuple + +IntFirst = NamedTuple( + "IntFirst", + [ + ("first", int), + ("second", None), + ], +) + +StrSecond = NamedTuple( + "StrSecond", + [ + ("first", None), + ("second", str), + ], +) + + +def func1(a: IntFirst | StrSecond) -> IntFirst: if a[1] is None: reveal_type(a, expected_text="IntFirst") return a @@ -22,14 +29,17 @@ def func1(a: Union[IntFirst, StrSecond]) -> IntFirst: raise ValueError() -UnionFirst = NamedTuple("UnionFirst", [ - ("first", Union[None, int]), - ("second", None), -]) +UnionFirst = NamedTuple( + "UnionFirst", + [ + ("first", None | int), + ("second", None), + ], +) -def func2(a: Union[UnionFirst, StrSecond]): + +def func2(a: UnionFirst | StrSecond): if a[0] is None: reveal_type(a, expected_text="UnionFirst | StrSecond") else: reveal_type(a, expected_text="UnionFirst") - diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance1.py index 133cd2537..52d72687a 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance1.py @@ -1,7 +1,7 @@ # This sample exercises the type analyzer's isinstance type narrowing logic. from types import NoneType -from typing import List, Optional, Sized, Type, TypeVar, Union, Any +from typing import Sized, TypeVar, Union, Any class UnrelatedClass: @@ -52,7 +52,7 @@ def f(instance: Union[SuperClass, UnrelatedClass]) -> None: print(instance.property2) -def g(cls: Union[Type[SuperClass], Type[UnrelatedClass]]) -> None: +def g(cls: Union[type[SuperClass], type[UnrelatedClass]]) -> None: if issubclass(cls, (MyClass1, UnrelatedSubclass, Any)): print(cls.class_var1) @@ -89,18 +89,18 @@ def func1(instance: TestClass2) -> None: print(instance.property) -def func2(val: Union[int, None, str]) -> Optional[int]: +def func2(val: Union[int, None, str]) -> int | None: return None if isinstance((z := val), str) else z # Test the special-case handling of isinstance with a # "type" class. -def func3(ty: Type[int]) -> Type[int]: +def func3(ty: type[int]) -> type[int]: assert isinstance(ty, (type, str)) return ty -def func4(ty: Type[int]) -> Type[int]: +def func4(ty: type[int]) -> type[int]: assert not isinstance(ty, str) return ty @@ -108,20 +108,20 @@ def func4(ty: Type[int]) -> Type[int]: T = TypeVar("T") -def func5(ty: Type[T]) -> Type[T]: +def func5(ty: type[T]) -> type[T]: assert isinstance(ty, (type, str)) return ty -def func6(ty: Type[T]) -> Type[T]: +def func6(ty: type[T]) -> type[T]: assert not isinstance(ty, str) return ty # Test the handling of protocol classes that support runtime checking. -def func7(a: Union[List[int], int]): +def func7(a: Union[list[int], int]): if isinstance(a, Sized): - reveal_type(a, expected_text="List[int]") + reveal_type(a, expected_text="list[int]") else: reveal_type(a, expected_text="int") @@ -135,12 +135,10 @@ class Base1: class Sub1(Base1): - value: str class Sub2(Base1): - value: Base1 diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance10.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance10.py index abb2d49f1..adeadf3e3 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance10.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance10.py @@ -10,6 +10,6 @@ def check_object(obj: object): reveal_type(obj, expected_text="object") return reveal_type(obj, expected_text="object") - + if isinstance(obj, list): reveal_type(obj, expected_text="list[Unknown]") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance11.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance11.py index 1b0f6fb21..7b065b8f7 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance11.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance11.py @@ -2,6 +2,7 @@ # argument to isinstance is incomplete the first time the type guard # is evaluated because it's in an loop. + class X: pass @@ -10,7 +11,7 @@ class Y: p: type -def f(xs: list[X | Y]) -> None: +def func1(xs: list[X | Y]) -> None: for x in xs: if not isinstance(x, X): if x.p == X: diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance13.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance13.py index 6e574fafa..5715c6caf 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance13.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance13.py @@ -6,7 +6,7 @@ from typing import Any, Iterable, Sized -def f(v: Any) -> bool: +def func1(v: Any) -> bool: if isinstance(v, Iterable): reveal_type(v, expected_text="Iterable[Unknown]") if isinstance(v, Sized): diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance14.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance14.py index 4fed42982..467d35be0 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance14.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance14.py @@ -1,12 +1,12 @@ # This sample tests the isinstance narrowing when the list # of classes includes a type defined by a type variable. -from typing import Any, Type, TypeVar +from typing import Any, TypeVar T = TypeVar("T") -def func1(cls: Type[T], obj: Any) -> T: +def func1(cls: type[T], obj: Any) -> T: assert isinstance(obj, cls) reveal_type(obj, expected_text="T@func1") return obj @@ -16,7 +16,7 @@ def func1(cls: Type[T], obj: Any) -> T: reveal_type(v1, expected_text="int") -def func2(klass: Type[T], obj: T | int) -> T: +def func2(klass: type[T], obj: T | int) -> T: assert isinstance(obj, klass) reveal_type(obj, expected_text="T@func2") return obj diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance17.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance17.py index 5a8d62929..3d3046f52 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance17.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance17.py @@ -1,12 +1,12 @@ # This sample tests basic type narrowing behavior for # the isinstance call. -from typing import Any, List, Optional, Type, TypedDict, Union +from typing import Any, TypedDict -def func1(x: Union[List[str], int]): +def func1(x: list[str] | int): if isinstance(x, list): - reveal_type(x, expected_text="List[str]") + reveal_type(x, expected_text="list[str]") else: reveal_type(x, expected_text="int") @@ -29,7 +29,7 @@ class SomeTypedDict(TypedDict): name: str -def func4(x: Union[int, SomeTypedDict]): +def func4(x: int | SomeTypedDict): if isinstance(x, dict): reveal_type(x, expected_text="SomeTypedDict") else: @@ -43,14 +43,14 @@ def func5(x: int | str | complex): reveal_type(x, expected_text="complex") -def func6(x: Type[int] | Type[str] | Type[complex]): +def func6(x: type[int] | type[str] | type[complex]): if issubclass(x, (int, str)): reveal_type(x, expected_text="type[int] | type[str]") else: reveal_type(x, expected_text="type[complex]") -def func7(x: Optional[Union[int, SomeTypedDict]]): +def func7(x: int | SomeTypedDict | None): if isinstance(x, (dict, type(None))): reveal_type(x, expected_text="SomeTypedDict | None") else: diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py index c0a20641c..68cff76d1 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance3.py @@ -2,7 +2,7 @@ # narrowing in the case where there is no overlap between the # value type and the test type. -from typing import Type, TypeVar, final +from typing import TypeVar, final class A: @@ -47,7 +47,7 @@ def func1(val: A): reveal_type(val, expected_text="A") -def func2(val: Type[A]): +def func2(val: type[A]): if issubclass(val, B): val.a_val val.b_val diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance5.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance5.py index 459682267..442796193 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance5.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance5.py @@ -1,7 +1,7 @@ # This sample tests isinstance type narrowing when the class list # includes "Callable". -from typing import Callable, List, Sequence, TypeVar, Union +from typing import Callable, Sequence, TypeVar class A: @@ -24,11 +24,13 @@ class D(C): TCall1 = TypeVar("TCall1", bound=Callable[..., int]) -def func1(obj: Union[Callable[[int, str], int], List[int], A, B, C, D, TCall1]): +def func1( + obj: Callable[[int, str], int] | list[int] | A | B | C | D | TCall1 +) -> TCall1 | None: if isinstance(obj, (Callable, Sequence, C)): reveal_type( obj, - expected_text="((int, str) -> int) | List[int] | B | C | D | TCall1@func1", + expected_text="((int, str) -> int) | list[int] | B | C | D | TCall1@func1", ) else: reveal_type(obj, expected_text="A") @@ -36,4 +38,4 @@ def func1(obj: Union[Callable[[int, str], int], List[int], A, B, C, D, TCall1]): if isinstance(obj, Callable): reveal_type(obj, expected_text="((int, str) -> int) | B | TCall1@func1") else: - reveal_type(obj, expected_text="List[int] | C | D | A") + reveal_type(obj, expected_text="list[int] | C | D | A") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance6.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance6.py index e185381a4..936eef0ac 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance6.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance6.py @@ -2,7 +2,7 @@ # narrow the type of a specialized class to a subclass where the type # arguments are implied by the type arguments of the wider class. -from typing import Any, Generic, Iterable, Sequence, Type, TypeVar, Union +from typing import Any, Generic, Iterable, Sequence, TypeVar _T1 = TypeVar("_T1") @@ -15,7 +15,7 @@ class OtherClass(SomeClass[_T1]): ... -def func1(a: SomeClass[int], b: Union[SomeClass[str], SomeClass[complex]]) -> None: +def func1(a: SomeClass[int], b: SomeClass[str] | SomeClass[complex]) -> None: if isinstance(a, OtherClass): reveal_type(a, expected_text="OtherClass[int]") @@ -24,7 +24,7 @@ def func1(a: SomeClass[int], b: Union[SomeClass[str], SomeClass[complex]]) -> No def func2( - a: Type[SomeClass[int]], b: Union[Type[SomeClass[str]], Type[SomeClass[complex]]] + a: type[SomeClass[int]], b: type[SomeClass[str]] | type[SomeClass[complex]] ) -> None: if issubclass(a, OtherClass): reveal_type(a, expected_text="type[OtherClass[int]]") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingLiteral1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingLiteral1.py index e927d022b..b7733d5c7 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingLiteral1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingLiteral1.py @@ -4,7 +4,7 @@ from typing import Literal, Union -def func_1(p1: Literal["a", "b", "c"]): +def func1(p1: Literal["a", "b", "c"]): if p1 != "b": if p1 == "c": reveal_type(p1, expected_text="Literal['c']") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingLiteralMember1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingLiteralMember1.py index 5cba77534..f9362d368 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingLiteralMember1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingLiteralMember1.py @@ -1,7 +1,7 @@ # This sample tests type narrowing based on member accesses # to members that have literal types. -from typing import ClassVar, Literal, Type, Union +from typing import ClassVar, Literal, Union class A: @@ -106,14 +106,14 @@ def is_obj5(d: D): reveal_type(d, expected_text="D") -def eq_class2(c: Union[Type[A], Type[B]]): +def eq_class2(c: Union[type[A], type[B]]): if c.kind_class == "A": reveal_type(c, expected_text="type[A]") else: reveal_type(c, expected_text="type[B]") -def is_class2(c: Union[Type[A], Type[B]]): +def is_class2(c: Union[type[A], type[B]]): if c.kind_class is "A": reveal_type(c, expected_text="type[A] | type[B]") else: @@ -138,12 +138,15 @@ def test(x: E | F) -> None: else: reveal_type(x, expected_type="E") + class G: type: Literal[0] + class H: type: Literal[1] + class I: thing: G | H @@ -154,4 +157,3 @@ def method1(self) -> None: local = self.thing if local.type == 1: reveal_type(local, expected_text="H") - diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingLocalConst1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingLocalConst1.py index de8f2236b..adf1c4749 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingLocalConst1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingLocalConst1.py @@ -3,7 +3,6 @@ # These are sometimes referred to as "aliased conditional expressions". -from typing import Optional, Union import random @@ -15,7 +14,7 @@ class B: b: int -def func1(x: Union[A, B]) -> None: +def func1(x: A | B) -> None: is_a = not not isinstance(x, A) if not is_a: @@ -24,7 +23,7 @@ def func1(x: Union[A, B]) -> None: reveal_type(x, expected_text="A") -def func2(x: Union[A, B]) -> None: +def func2(x: A | B) -> None: is_a = isinstance(x, A) if random.random() < 0.5: @@ -36,7 +35,7 @@ def func2(x: Union[A, B]) -> None: reveal_type(x, expected_text="B | A") -def func3(x: Optional[int]): +def func3(x: int | None): is_number = x != None if is_number: @@ -45,7 +44,7 @@ def func3(x: Optional[int]): reveal_type(x, expected_text="None") -def func4() -> Optional[A]: +def func4() -> A | None: return A() if random.random() < 0.5 else None @@ -73,7 +72,7 @@ def func5(): reveal_type(maybe_a2, expected_text="A | None") -def func6(x: Union[A, B]) -> None: +def func6(x: A | B) -> None: is_a = isinstance(x, A) for y in range(1): @@ -90,11 +89,11 @@ def get_string() -> str: ... -def get_optional_string() -> Optional[str]: +def get_optional_string() -> str | None: ... -def func7(val: Optional[str] = None): +def func7(val: str | None = None): val = get_optional_string() val_is_none = val is None @@ -105,7 +104,7 @@ def func7(val: Optional[str] = None): reveal_type(val, expected_text="str") -def func8(val: Optional[str] = None): +def func8(val: str | None = None): val = get_optional_string() val_is_none = val is None @@ -118,7 +117,7 @@ def func8(val: Optional[str] = None): reveal_type(val, expected_text="str | None") -def func9(var: Optional[str] = None): +def func9(var: str | None = None): if var_not_None := not (var is None): reveal_type(var, expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingNoneMember1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingNoneMember1.py index c91e74b9e..7bdec48b6 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingNoneMember1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingNoneMember1.py @@ -1,7 +1,7 @@ # This sample tests the type narrowing case for unions of NamedTuples # where one or more of the entries is tested against type None by attribute. -from typing import NamedTuple, Optional, Union +from typing import NamedTuple, Union IntFirst = NamedTuple( "IntFirst", @@ -47,13 +47,13 @@ def func2(a: Union[UnionFirst, StrSecond]): class A: @property - def prop1(self) -> Optional[int]: + def prop1(self) -> int | None: ... member1: None - member2: Optional[int] - member3: Optional[int] - member4: Optional[int] + member2: int | None + member3: int | None + member4: int | None class B: @@ -62,7 +62,7 @@ def prop1(self) -> int: ... member1: int - member2: Optional[int] + member2: int | None member3: None member4: int diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingTupleLength1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingTupleLength1.py index 1f6cde3ec..3d1e503ee 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingTupleLength1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingTupleLength1.py @@ -1,44 +1,44 @@ # This sample tests type narrowing of tuples based on len(x) test. -from typing import Tuple, TypeVar, Union +from typing import TypeVar -def func1(val: Union[Tuple[int], Tuple[int, int], Tuple[str, str]]): +def func1(val: tuple[int] | tuple[int, int] | tuple[str, str]): if len(val) == 1: - reveal_type(val, expected_text="Tuple[int]") + reveal_type(val, expected_text="tuple[int]") else: - reveal_type(val, expected_text="Tuple[int, int] | Tuple[str, str]") + reveal_type(val, expected_text="tuple[int, int] | tuple[str, str]") if len(val) != 2: - reveal_type(val, expected_text="Tuple[int]") + reveal_type(val, expected_text="tuple[int]") else: - reveal_type(val, expected_text="Tuple[int, int] | Tuple[str, str]") + reveal_type(val, expected_text="tuple[int, int] | tuple[str, str]") -def func2(val: Union[Tuple[int], Tuple[int, ...]]): +def func2(val: tuple[int] | tuple[int, ...]): if len(val) == 1: - reveal_type(val, expected_text="Tuple[int] | Tuple[int, ...]") + reveal_type(val, expected_text="tuple[int] | tuple[int, ...]") else: - reveal_type(val, expected_text="Tuple[int, ...]") + reveal_type(val, expected_text="tuple[int, ...]") if len(val) != 2: - reveal_type(val, expected_text="Tuple[int] | Tuple[int, ...]") + reveal_type(val, expected_text="tuple[int] | tuple[int, ...]") else: - reveal_type(val, expected_text="Tuple[int, ...]") + reveal_type(val, expected_text="tuple[int, ...]") -def func3(val: Union[Tuple[int], Tuple[()]]): +def func3(val: tuple[int] | tuple[()]): if len(val) == 0: - reveal_type(val, expected_text="Tuple[()]") + reveal_type(val, expected_text="tuple[()]") else: - reveal_type(val, expected_text="Tuple[int]") + reveal_type(val, expected_text="tuple[int]") -_T1 = TypeVar("_T1", bound=Tuple[int]) -_T2 = TypeVar("_T2", bound=Tuple[str, str]) +_T1 = TypeVar("_T1", bound=tuple[int]) +_T2 = TypeVar("_T2", bound=tuple[str, str]) -def func4(val: Union[_T1, _T2]) -> Union[_T1, _T2]: +def func4(val: _T1 | _T2) -> _T1 | _T2: if len(val) == 1: reveal_type(val, expected_text="_T1@func4") else: diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingTypeEquals1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingTypeEquals1.py index 804d681a4..0e16b89d3 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingTypeEquals1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingTypeEquals1.py @@ -1,11 +1,10 @@ # This sample exercises the type analyzer's type narrowing # logic for tests of the form "type(X) == Y" or "type(X) != Y". -from typing import Any, Dict, Generic, Optional, TypeVar, Union, final +from typing import Any, Generic, TypeVar, final -def func1(a: Union[str, int]) -> int: - +def func1(a: str | int) -> int: if type(a) != str: # This should generate an error because # "a" is potentially a subclass of str. @@ -16,8 +15,7 @@ def func1(a: Union[str, int]) -> int: return a -def func2(a: Optional[str]) -> str: - +def func2(a: str | None) -> str: if type(a) == str: return a @@ -26,7 +24,7 @@ def func2(a: Optional[str]) -> str: return a -def func3(a: Dict[str, Any]) -> str: +def func3(a: dict[str, Any]) -> str: val = a.get("hello") if type(val) == str: return val @@ -42,7 +40,7 @@ class B(A): pass -def func4(a: Union[str, A]): +def func4(a: str | A): if type(a) == B: reveal_type(a, expected_text="B") else: @@ -61,7 +59,7 @@ class D: pass -E = Union[C[T], D] +E = C[T] | D def func5(x: E[T]) -> None: @@ -79,7 +77,7 @@ class BFinal: pass -def func6(val: Union[AFinal, BFinal]) -> None: +def func6(val: AFinal | BFinal) -> None: if type(val) == AFinal: reveal_type(val, expected_text="AFinal") else: @@ -94,14 +92,18 @@ def func7(val: Any): reveal_type(val, expected_text="int | Any") + class CParent: ... + class CChild(CParent): ... + _TC = TypeVar("_TC", bound=CParent) + def func8(a: _TC, b: _TC) -> _TC: if type(a) == CChild: reveal_type(a, expected_text="CChild*") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingTypeIs1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingTypeIs1.py index b3e46a295..9bd3a24a8 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingTypeIs1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingTypeIs1.py @@ -1,11 +1,10 @@ # This sample exercises the type analyzer's type narrowing # logic for tests of the form "type(X) is Y" or "type(X) is not Y". -from typing import Any, Dict, Generic, Optional, TypeVar, Union, final +from typing import Any, Generic, TypeVar, final -def func1(a: Union[str, int]) -> int: - +def func1(a: str | int) -> int: if type(a) is not str: # This should generate an error because # "a" is potentially a subclass of str. @@ -16,8 +15,7 @@ def func1(a: Union[str, int]) -> int: return a -def func2(a: Optional[str]) -> str: - +def func2(a: str | None) -> str: if type(a) is str: return a @@ -26,7 +24,7 @@ def func2(a: Optional[str]) -> str: return a -def func3(a: Dict[str, Any]) -> str: +def func3(a: dict[str, Any]) -> str: val = a.get("hello") if type(val) is str: return val @@ -42,7 +40,7 @@ class B(A): pass -def func4(a: Union[str, A]): +def func4(a: str | A): if type(a) is B: reveal_type(a, expected_text="B") else: @@ -61,7 +59,7 @@ class D: pass -E = Union[C[T], D] +E = C[T] | D def func5(x: E[T]) -> None: @@ -79,7 +77,7 @@ class BFinal: pass -def func6(val: Union[AFinal, BFinal]) -> None: +def func6(val: AFinal | BFinal) -> None: if type(val) is AFinal: reveal_type(val, expected_text="AFinal") else: @@ -94,14 +92,18 @@ def func7(val: Any): reveal_type(val, expected_text="int | Any") + class CParent: ... + class CChild(CParent): ... + _TC = TypeVar("_TC", bound=CParent) + def func8(a: _TC, b: _TC) -> _TC: if type(a) is CChild: reveal_type(a, expected_text="CChild*") diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict1.py index 62bb47449..9d6fbe5bf 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict1.py @@ -1,7 +1,7 @@ # This sample tests type narrowing for TypedDict types based # on whether a key is in or not in the dict. -from typing import TypedDict, Union, final +from typing import TypedDict, final @final @@ -27,42 +27,42 @@ class TD4(TypedDict): c: str -def f1(p: Union[TD1, TD2]): +def f1(p: TD1 | TD2): if "b" in p: reveal_type(p, expected_text="TD1") else: reveal_type(p, expected_text="TD2") -def f2(p: Union[TD1, TD2]): +def f2(p: TD1 | TD2): if "b" not in p: reveal_type(p, expected_text="TD2") else: reveal_type(p, expected_text="TD1") -def f3(p: Union[TD1, TD3]): +def f3(p: TD1 | TD3): if "d" in p: reveal_type(p, expected_text="TD3") else: reveal_type(p, expected_text="TD1 | TD3") -def f4(p: Union[TD1, TD3]): +def f4(p: TD1 | TD3): if "d" not in p: reveal_type(p, expected_text="TD1 | TD3") else: reveal_type(p, expected_text="TD3") -def f5(p: Union[TD1, TD3]): +def f5(p: TD1 | TD3): if "a" in p: reveal_type(p, expected_text="TD1 | TD3") else: reveal_type(p, expected_text="TD3") -def f6(p: Union[TD1, TD2, TD3]): +def f6(p: TD1 | TD2 | TD3): # This should generate an error for TD3. v1 = p["a"] @@ -93,7 +93,7 @@ def f8(p: TD3): f7(p) -def f9(p: Union[TD1, TD4]): +def f9(p: TD1 | TD4): if "b" in p: reveal_type(p, expected_text="TD1 | TD4") else: diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict2.py b/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict2.py index c3dc9f9ba..f1e397729 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict2.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict2.py @@ -1,7 +1,7 @@ # This sample tests type narrowing based on key accesses # to unions of TypedDicts that have fields with literal types. -from typing import Literal, TypedDict, Union +from typing import Literal, TypedDict class NewJobEvent(TypedDict): @@ -20,7 +20,7 @@ class OtherEvent(TypedDict): message: str -Event = Union[NewJobEvent, CancelJobEvent, OtherEvent] +Event = NewJobEvent | CancelJobEvent | OtherEvent def process_event1(event: Event) -> None: diff --git a/packages/pyright-internal/src/tests/samples/typeVar11.py b/packages/pyright-internal/src/tests/samples/typeVar11.py index a5f3a1896..bb31833ca 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar11.py +++ b/packages/pyright-internal/src/tests/samples/typeVar11.py @@ -1,12 +1,12 @@ # This sample tests that literal values are retained by the constraint # solver if they are found as type arguments. -from typing import Literal, Set +from typing import Literal _L1 = Literal["foo", "bar"] -def combine(set1: Set[_L1], set2: Set[_L1]) -> None: +def combine(set1: set[_L1], set2: set[_L1]) -> None: x = set1 | set2 reveal_type(x, expected_text="set[Literal['foo', 'bar']]") diff --git a/packages/pyright-internal/src/tests/samples/typeVar3.py b/packages/pyright-internal/src/tests/samples/typeVar3.py index 9f69177c1..6cc3805e3 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar3.py +++ b/packages/pyright-internal/src/tests/samples/typeVar3.py @@ -1,27 +1,26 @@ # This sample tests various diagnostics related to TypeVar usage. -from typing import Callable, Generic, List, Optional, TypeVar -import typing +from typing import Callable, Generic, TypeVar, AnyStr _T = TypeVar("_T") _S = TypeVar("_S") -class OuterClass(Generic[_T, typing.AnyStr]): +class OuterClass(Generic[_T, AnyStr]): # This should generate an error because _S # isn't defined in this context. my_var1: _S - my_var2: typing.AnyStr + my_var2: AnyStr # This should generate an error because _T # is already in use. class InnerClass1(Generic[_T]): ... - # This should generate an error because typing.AnyStr + # This should generate an error because AnyStr # is already in use. - class InnerClass2(Generic[_S, typing.AnyStr]): + class InnerClass2(Generic[_S, AnyStr]): my_var1: _S # This should generate an error because _T @@ -30,17 +29,17 @@ class InnerClass2(Generic[_S, typing.AnyStr]): class InnerClass3: # This should generate an error. - x: List[_T] + x: list[_T] def f(self, x: _T, y: _S, z: _S) -> _T: ... - def g(self, x: typing.AnyStr) -> None: + def g(self, x: AnyStr) -> None: # This should generate an error. - y: List[_T] + y: list[_T] -def func1(a: _T) -> Optional[_T]: +def func1(a: _T) -> _T | None: my_var1: _T # This should generate an error @@ -56,10 +55,10 @@ class InnerClass3(Generic[_T]): a: _S = 3 # This should generate an error. -b: List[_T] = [] +b: list[_T] = [] # This should generate an error. -c: List[typing.AnyStr] = [] +c: list[AnyStr] = [] T = TypeVar("T") diff --git a/packages/pyright-internal/src/tests/samples/typeVar4.py b/packages/pyright-internal/src/tests/samples/typeVar4.py index ffd87ba70..afe2b1f20 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar4.py +++ b/packages/pyright-internal/src/tests/samples/typeVar4.py @@ -2,7 +2,7 @@ # covariant and contravariant TypeVars are used incorrectly # for method parameters and return types. -from typing import Generic, List, Optional, TypeVar, Union +from typing import Generic, TypeVar _T = TypeVar("_T") _T_co = TypeVar("_T_co", covariant=True) @@ -18,19 +18,19 @@ def func1(self, a: _T): def func2(self, a: _T_co): pass - def func3(self, a: Union[int, _T_co]): + def func3(self, a: int | _T_co): pass - def func4(self, a: List[_T_co]): + def func4(self, a: list[_T_co]): pass def func5(self, a: _T_contra): pass - def func6(self) -> Optional[_T]: + def func6(self) -> _T | None: pass - def func7(self) -> Optional[_T_co]: + def func7(self) -> _T_co | None: pass # This should generate an error because contravariant @@ -38,8 +38,8 @@ def func7(self) -> Optional[_T_co]: def func8(self) -> _T_contra: ... - def func9(self) -> Union[_T_contra, int]: + def func9(self) -> _T_contra | int: return 3 - def func10(self) -> List[_T_contra]: + def func10(self) -> list[_T_contra]: return [] diff --git a/packages/pyright-internal/src/tests/samples/typeVar8.py b/packages/pyright-internal/src/tests/samples/typeVar8.py index b4d3854c6..7696997fc 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar8.py +++ b/packages/pyright-internal/src/tests/samples/typeVar8.py @@ -1,7 +1,7 @@ # This sample tests the handling of a TypeVar symbol that is # not representing another type. -from typing import TypeVar, Union +from typing import TypeVar T = TypeVar("T") @@ -14,7 +14,7 @@ S.__bound__ -def func1(x: bool, a: T, b: S) -> Union[T, S]: +def func1(x: bool, a: T, b: S) -> T | S: reveal_type(T.__name__, expected_text="str") reveal_type(S.__name__, expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/typeVar9.py b/packages/pyright-internal/src/tests/samples/typeVar9.py index e6b1db64f..bd6c4104c 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar9.py +++ b/packages/pyright-internal/src/tests/samples/typeVar9.py @@ -4,7 +4,7 @@ # pyright: reportInvalidTypeVarUse=true -from typing import AnyStr, Callable, Dict, Generic, List, overload +from typing import AnyStr, Callable, Generic, overload from typing_extensions import TypeVar @@ -33,7 +33,7 @@ def f1(v1: _T) -> None: ... -def f2(v1: _T, v2: List[_T]) -> None: +def f2(v1: _T, v2: list[_T]) -> None: ... @@ -41,13 +41,13 @@ def f3(v1: _T) -> _T: ... -def f4() -> Dict[_T, _T]: +def f4() -> dict[_T, _T]: ... # This should generate an error because _T # is a local typeVar and appears only once. -def f5() -> List[_T]: +def f5() -> list[_T]: ... @@ -67,13 +67,13 @@ def f7(v1: _T_Bound): # Bound TypeVars as type arguments are exempt when used in an # input parameter annotation. -def f8(v1: List[_T_Bound]): +def f8(v1: list[_T_Bound]): ... # Bound TypeVars as type arguments are not exempt when used in a # return annotation. -def f9() -> List[_T_Bound]: +def f9() -> list[_T_Bound]: ... @@ -91,7 +91,7 @@ def f11(x: AnyStr = ...) -> AnyStr: # This should generate an error because AnyStr can go unsolved. -def f12(x: AnyStr = ...) -> List[AnyStr]: +def f12(x: AnyStr = ...) -> list[AnyStr]: ... @@ -104,7 +104,7 @@ def f14(x: AnyStr = "") -> AnyStr: # This should generate an error because AnyStr can go unsolved. -def f15(x: AnyStr = ...) -> List[AnyStr] | None: +def f15(x: AnyStr = ...) -> list[AnyStr] | None: ... diff --git a/packages/pyright-internal/src/tests/samples/typedDict1.py b/packages/pyright-internal/src/tests/samples/typedDict1.py index bd9744a17..f7ff684a1 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict1.py +++ b/packages/pyright-internal/src/tests/samples/typedDict1.py @@ -1,9 +1,10 @@ # This sample tests the type analyzer's handling of TypedDict classes. -from typing import Any, Dict, TypedDict +from typing import Any, TypedDict not_total = False + # This should generate an error because # the value of the total argument must # be a literal "True" or "False". @@ -12,7 +13,7 @@ class TD1(TypedDict, total=not_total): class TD2(TypedDict, total=False): - """ This is a test """ + """This is a test""" a: int @@ -22,7 +23,7 @@ class TD2(TypedDict, total=False): b: float - c: "Dict[Any, Any]" + c: "dict[Any, Any]" # This should generate an error because # assignments are not allowed. diff --git a/packages/pyright-internal/src/tests/samples/typedDict11.py b/packages/pyright-internal/src/tests/samples/typedDict11.py index b038356b6..2087ee436 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict11.py +++ b/packages/pyright-internal/src/tests/samples/typedDict11.py @@ -1,13 +1,13 @@ # This sample tests bidirectional type inference (expected type) for # lists that include TypedDicts. -from typing import List, TypeVar, TypedDict +from typing import TypeVar, TypedDict MessageTypeDef = TypedDict("MessageTypeDef", {"Id": str, "Handle": str}) msgs = [{"Id": "1", "Handle": "2"}] -list2: List[MessageTypeDef] = [ +list2: list[MessageTypeDef] = [ {"Id": msg["Id"], "Handle": msg["Handle"]} for msg in msgs ] diff --git a/packages/pyright-internal/src/tests/samples/typedDict12.py b/packages/pyright-internal/src/tests/samples/typedDict12.py index cc774ef35..357db1657 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict12.py +++ b/packages/pyright-internal/src/tests/samples/typedDict12.py @@ -1,7 +1,7 @@ # This sample tests the synthesized methods get, setdefault # pop, __delitem__, clear, and popitem for a TypedDict. -from typing import Optional, TypedDict, Union, final +from typing import TypedDict, Union, final from typing_extensions import NotRequired, Required @@ -16,7 +16,7 @@ class TD2(TD1): td1: TD1 = {} td2: TD2 = {"foo": "hi"} -v1: Optional[str] = td1.get("bar") +v1: str | None = td1.get("bar") v2: str = td1.get("bar", "") @@ -56,7 +56,7 @@ class TD4(TypedDict): C = Union[TD3, TD4] -def test(a: TD3, b: TD4, c: C, s: str) -> Optional[int]: +def func1(a: TD3, b: TD4, c: C, s: str) -> int | None: a1 = a.get("foo") reveal_type(a1, expected_text="int") a2 = a.get("foo", 1.0) diff --git a/packages/pyright-internal/src/tests/samples/typedDict14.py b/packages/pyright-internal/src/tests/samples/typedDict14.py index 3ac286cef..0da147a90 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict14.py +++ b/packages/pyright-internal/src/tests/samples/typedDict14.py @@ -1,7 +1,7 @@ # This sample tests bidirectional type inference when assigning # a value to a typedDict element. -from typing import List, Optional, TypedDict, Union +from typing import TypedDict class Thing(TypedDict): @@ -10,8 +10,8 @@ class Thing(TypedDict): class Thing2(TypedDict): - v3: Optional[Thing] - v4: Optional[List[Union[str, int]]] + v3: Thing | None + v4: list[str | int] | None thing2: Thing2 = {"v3": None, "v4": None} diff --git a/packages/pyright-internal/src/tests/samples/typedDict16.py b/packages/pyright-internal/src/tests/samples/typedDict16.py index 9ef5a1f94..38ff90fad 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict16.py +++ b/packages/pyright-internal/src/tests/samples/typedDict16.py @@ -1,6 +1,6 @@ # This sample tests that type compatibility between TypedDicts. -from typing import List, TypedDict, final +from typing import TypedDict, final class TD0(TypedDict): @@ -20,9 +20,9 @@ class TD2(TypedDict): v2: TD1 = TD2(key="", value="") v3 = [v2] -v4: List[TD2] = v3 +v4: list[TD2] = v3 v5 = [v1] -v6: List[TD1] = v5 +v6: list[TD1] = v5 class TD10(TypedDict, total=False): @@ -47,11 +47,11 @@ class TD12(TypedDict): v12 = [v10] # This should generate an error. -v13: List[TD10] = v12 +v13: list[TD10] = v12 v14 = [v11] # This should generate an error. -v15: List[TD12] = v14 +v15: list[TD12] = v14 class TD20(TypedDict): @@ -73,21 +73,23 @@ class TD21(TypedDict): v22 = [v20] # This should generate an error. -v23: List[TD20] = v22 +v23: list[TD20] = v22 -v24: List[TD20] = [v21] +v24: list[TD20] = [v21] # This should generate an error. -v25: List[TD21] = v24 +v25: list[TD21] = v24 @final class TD30(TypedDict): value: str + @final class TD31(TypedDict): value: str + class TD32(TypedDict): value: str @@ -100,4 +102,3 @@ class TD32(TypedDict): # This should generate an error because of a @final mismatch. v33: TD30 = TD32(value="") - diff --git a/packages/pyright-internal/src/tests/samples/typedDict4.py b/packages/pyright-internal/src/tests/samples/typedDict4.py index d4e305913..8b7373fee 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict4.py +++ b/packages/pyright-internal/src/tests/samples/typedDict4.py @@ -1,6 +1,6 @@ # This sample tests the type analyzer's handling of TypedDict classes. -from typing import Literal, Optional, TypedDict, Union +from typing import Literal, TypedDict class Movie(TypedDict, total=False): @@ -15,7 +15,7 @@ class BookBasedMovie(Movie, total=True): movie1 = Movie(name="Blade Runner", year=1982) -def get_value(movie: Movie, key: Literal["year", "name"]) -> Optional[Union[int, str]]: +def get_value(movie: Movie, key: Literal["year", "name"]) -> int | str | None: if "year" in movie and "name" in movie: return movie[key] diff --git a/packages/pyright-internal/src/tests/samples/typedDict6.py b/packages/pyright-internal/src/tests/samples/typedDict6.py index 2e753d592..af66f8854 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict6.py +++ b/packages/pyright-internal/src/tests/samples/typedDict6.py @@ -76,7 +76,9 @@ def get_movie_name(movie: Movie): def foo(unknown_str_value: str): a = movie5[unknown_str_value] -Movie12 = TypedDict("Movie12", {"title": Required[str], "predecessor": NotRequired["Movie12"]}) -movie12: Movie12 = {"title": "Two Towers", "predecessor": {"title": "Fellowship"}} +Movie12 = TypedDict( + "Movie12", {"title": Required[str], "predecessor": NotRequired["Movie12"]} +) +movie12: Movie12 = {"title": "Two Towers", "predecessor": {"title": "Fellowship"}} diff --git a/packages/pyright-internal/src/tests/samples/typedDict7.py b/packages/pyright-internal/src/tests/samples/typedDict7.py index b0ad56289..00910fc6c 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict7.py +++ b/packages/pyright-internal/src/tests/samples/typedDict7.py @@ -1,6 +1,6 @@ # This sample tests synthesized get methods in TypedDict classes. -from typing import TypedDict, Union +from typing import TypedDict UserType1 = TypedDict("UserType1", {"name": str, "age": int}, total=False) user1: UserType1 = {"name": "Bob", "age": 40} @@ -11,12 +11,12 @@ UserType2 = TypedDict("UserType2", name=str, age=int) user2: UserType2 = {"name": "Bob", "age": 40} -name2: Union[str, None] = user2.get("name") +name2: str | None = user2.get("name") name3: str = user2.get("name") age2: int = user2.get("age", 42) -age3: Union[int, str] = user2.get("age", "42") +age3: int | str = user2.get("age", "42") age4: int = user2.get("age", "42") diff --git a/packages/pyright-internal/src/tests/samples/typedDict8.py b/packages/pyright-internal/src/tests/samples/typedDict8.py index 410f97cd6..abb76fce5 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict8.py +++ b/packages/pyright-internal/src/tests/samples/typedDict8.py @@ -2,7 +2,7 @@ # perform bidirectional type inference involving TypedDict # classes and dict literal expressions. -from typing import List, TypedDict +from typing import TypedDict class Entry(TypedDict): @@ -10,10 +10,10 @@ class Entry(TypedDict): value: str -entries1: List[Entry] = [{"index": 2, "value": "a"}, {"index": 5, "value": "b"}] +entries1: list[Entry] = [{"index": 2, "value": "a"}, {"index": 5, "value": "b"}] # This should generate an error -entries2: List[Entry] = [{"index": 2, "value": "a"}, {"index": "2", "value": "b"}] +entries2: list[Entry] = [{"index": 2, "value": "a"}, {"index": "2", "value": "b"}] # This should generate an error -entries3: List[Entry] = [{"index": 2, "value": "a"}, 3] +entries3: list[Entry] = [{"index": 2, "value": "a"}, 3] diff --git a/packages/pyright-internal/src/tests/samples/unbound1.py b/packages/pyright-internal/src/tests/samples/unbound1.py index ff687d479..24163422e 100644 --- a/packages/pyright-internal/src/tests/samples/unbound1.py +++ b/packages/pyright-internal/src/tests/samples/unbound1.py @@ -5,7 +5,7 @@ class X: # This should generate an error because 'X' is not yet declared. - def foo(self) -> X: + def func1(self) -> X: return X() a: X diff --git a/packages/pyright-internal/src/tests/samples/unbound2.py b/packages/pyright-internal/src/tests/samples/unbound2.py index bf008cec3..fb4a4d48a 100644 --- a/packages/pyright-internal/src/tests/samples/unbound2.py +++ b/packages/pyright-internal/src/tests/samples/unbound2.py @@ -2,11 +2,11 @@ # even if that variable has a type declaration. -def fn1(): +def func1(): aaa: int # This should generate an error because aaa is unbound. return aaa -fn1() +func1() diff --git a/packages/pyright-internal/src/tests/samples/unbound3.py b/packages/pyright-internal/src/tests/samples/unbound3.py index 50f63744c..3294d5c9e 100644 --- a/packages/pyright-internal/src/tests/samples/unbound3.py +++ b/packages/pyright-internal/src/tests/samples/unbound3.py @@ -1,7 +1,7 @@ # This sample tests that "possibly unbound" error messages don't propagate. -def foo(a: bool): +def func1(a: bool): if a: b = 3 diff --git a/packages/pyright-internal/src/tests/samples/unions1.py b/packages/pyright-internal/src/tests/samples/unions1.py index 9e69c1254..cd3a18d4e 100644 --- a/packages/pyright-internal/src/tests/samples/unions1.py +++ b/packages/pyright-internal/src/tests/samples/unions1.py @@ -4,7 +4,7 @@ from typing import Callable, Generic, TypeVar, Union -def foo2(a: int | str): +def func1(a: int | str): if isinstance(a, int): return 1 else: @@ -15,21 +15,21 @@ def foo2(a: int | str): A = int | str | B -def foo3(a: A) -> B: +def func2(a: A) -> B: if a == 3 or a is None: return b"" elif not isinstance(a, (int, str, bytes)): a() -def foo4(A: "int | str"): +def func3(A: "int | str"): return 1 T = TypeVar("T") -def foo5(a: str): +def func4(a: str): def helper(value: T) -> T | None: ... diff --git a/packages/pyright-internal/src/tests/samples/unions2.py b/packages/pyright-internal/src/tests/samples/unions2.py index 62f6e79b2..a73b78934 100644 --- a/packages/pyright-internal/src/tests/samples/unions2.py +++ b/packages/pyright-internal/src/tests/samples/unions2.py @@ -5,11 +5,11 @@ from typing import Any -class my_class: +class Class1: def __init__(self, v): self._v = v def test_bad_syntax(a: Any, b: Any): - r = my_class(a | b) + r = Class1(a | b) print(r) diff --git a/packages/pyright-internal/src/tests/samples/unions5.py b/packages/pyright-internal/src/tests/samples/unions5.py index c791b2273..18e9cb70d 100644 --- a/packages/pyright-internal/src/tests/samples/unions5.py +++ b/packages/pyright-internal/src/tests/samples/unions5.py @@ -4,15 +4,15 @@ from typing import Union -class Foo: +class Class1: a: int -class Bar: +class Class2: a: int -a1: type[Foo] | type[Bar] = Foo | Bar +a1: type[Class1] | type[Class2] = Class1 | Class2 # This should generate an error print(a1.a) @@ -20,7 +20,7 @@ class Bar: # This should generate an error a1() -a2: type[Foo] | type[Bar] = Union[Foo, Bar] +a2: type[Class1] | type[Class2] = Union[Class1, Class2] # This should generate an error print(a2.a) @@ -29,7 +29,7 @@ class Bar: a2() -b1 = Foo | Bar +b1 = Class1 | Class2 # This should generate an error print(b1.a) @@ -38,7 +38,7 @@ class Bar: b1() -b2 = Union[Foo, Bar] +b2 = Union[Class1, Class2] # This should generate an error print(b2.a) diff --git a/packages/pyright-internal/src/tests/samples/unions6.py b/packages/pyright-internal/src/tests/samples/unions6.py index 71db8a5ee..eef017e75 100644 --- a/packages/pyright-internal/src/tests/samples/unions6.py +++ b/packages/pyright-internal/src/tests/samples/unions6.py @@ -11,7 +11,6 @@ SupportsIndex, TypeGuard, TypeVar, - cast, overload, ) diff --git a/packages/pyright-internal/src/tests/samples/unnecessaryIsInstance1.py b/packages/pyright-internal/src/tests/samples/unnecessaryIsInstance1.py index 784d67a00..3dc3ada74 100644 --- a/packages/pyright-internal/src/tests/samples/unnecessaryIsInstance1.py +++ b/packages/pyright-internal/src/tests/samples/unnecessaryIsInstance1.py @@ -1,14 +1,6 @@ # This sample tests unnecessary isinstance error reporting. -from typing import ( - ClassVar, - Protocol, - Type, - TypedDict, - Union, - runtime_checkable, -) - +from typing import ClassVar, Protocol, TypedDict, runtime_checkable from unknown_import import CustomClass1 @@ -16,7 +8,7 @@ class CustomClass2(CustomClass1): pass -def func1(p1: int, p2: Union[int, str]): +def func1(p1: int, p2: int | str): a = isinstance(p2, str) b = isinstance(p2, (int, float)) @@ -44,7 +36,7 @@ class SomeTypedDict(TypedDict): name: str -def func2(p1: SomeTypedDict, p2: Union[int, SomeTypedDict]): +def func2(p1: SomeTypedDict, p2: int | SomeTypedDict): a = isinstance(p2, dict) # This should generate an error because it's always true. @@ -84,7 +76,7 @@ class B(A): pass -def func4(a: A, cls: Type[A]) -> None: +def func4(a: A, cls: type[A]) -> None: isinstance(a, cls) # This should generate an error because it's always true. diff --git a/packages/pyright-internal/src/tests/samples/unnecessaryIsSubclass1.py b/packages/pyright-internal/src/tests/samples/unnecessaryIsSubclass1.py index e82064cc6..524406088 100644 --- a/packages/pyright-internal/src/tests/samples/unnecessaryIsSubclass1.py +++ b/packages/pyright-internal/src/tests/samples/unnecessaryIsSubclass1.py @@ -1,9 +1,7 @@ # This sample tests unnecessary issubclass error reporting. -from typing import Union, Type - -def foo(p1: Type[int], p2: Union[Type[int], Type[str]]): +def func1(p1: type[int], p2: type[int] | type[str]): a = issubclass(p2, str) b = issubclass(p2, (int, float)) diff --git a/packages/pyright-internal/src/tests/samples/unpack1.py b/packages/pyright-internal/src/tests/samples/unpack1.py index dbfeb48e9..c198e41ee 100644 --- a/packages/pyright-internal/src/tests/samples/unpack1.py +++ b/packages/pyright-internal/src/tests/samples/unpack1.py @@ -3,15 +3,15 @@ # pyright: strictListInference=true -class Foo: +class Class1: ... -class Bar: +class Class2: ... -a = [1, "hello", 3.4, Foo()] +a = [1, "hello", 3.4, Class1()] b = [*a] @@ -26,7 +26,7 @@ def int_only(a: int): # be an int or foo. int_only(c) - if not isinstance(c, Foo): + if not isinstance(c, Class1): # This should not generate an error. int_only(c) diff --git a/packages/pyright-internal/src/tests/samples/unpack2.py b/packages/pyright-internal/src/tests/samples/unpack2.py index 01680f0da..f2ecf9c52 100644 --- a/packages/pyright-internal/src/tests/samples/unpack2.py +++ b/packages/pyright-internal/src/tests/samples/unpack2.py @@ -1,27 +1,27 @@ # This sample tests the creation of tuples from unpacked values. -from typing import Any, List, Tuple +from typing import Any -def foo() -> Tuple[int, int, int]: +def foo() -> tuple[int, int, int]: rest = (2, 3) t = 1, *rest return t -def foo2() -> Tuple[int, int, int]: +def foo2() -> tuple[int, int, int]: rest = (3, 4) t = 1, 2, *rest # This should generate an error return t -def foo3() -> Tuple[Any, ...]: +def foo3() -> tuple[Any, ...]: rest = [1, 2, 3] t = 1, 2, 3, *rest requires_list(rest) return t -def requires_list(a: List[int]): +def requires_list(a: list[int]): return None diff --git a/packages/pyright-internal/src/tests/samples/unpack4.py b/packages/pyright-internal/src/tests/samples/unpack4.py index d3954ef64..225d57c15 100644 --- a/packages/pyright-internal/src/tests/samples/unpack4.py +++ b/packages/pyright-internal/src/tests/samples/unpack4.py @@ -12,4 +12,7 @@ print(c) # This should always generate an error. -*a, *b = (1, 2, ) +*a, *b = ( + 1, + 2, +) diff --git a/packages/pyright-internal/src/tests/samples/unpack5.py b/packages/pyright-internal/src/tests/samples/unpack5.py index b8490da41..a6038138c 100644 --- a/packages/pyright-internal/src/tests/samples/unpack5.py +++ b/packages/pyright-internal/src/tests/samples/unpack5.py @@ -1,6 +1,7 @@ # This sample tests unpacking of tuples that contain PEP 646-style # tuples with unknown length within them. + def suffix() -> tuple[int, str, *tuple[bool, ...]]: return 1, "a", True diff --git a/packages/pyright-internal/src/tests/samples/unusedCallResult1.py b/packages/pyright-internal/src/tests/samples/unusedCallResult1.py index c652b2335..4c4bbdfda 100644 --- a/packages/pyright-internal/src/tests/samples/unusedCallResult1.py +++ b/packages/pyright-internal/src/tests/samples/unusedCallResult1.py @@ -1,6 +1,6 @@ # This sample tests the reportUnusedCallResult diagnostic rule. -from typing import Any, Iterable, List, Union +from typing import Any, Iterable def func1(): @@ -19,7 +19,7 @@ def func4(): return 3 -def func5(a: int) -> Union[int, List[int]]: +def func5(a: int) -> int | list[int]: if a < 0: return 5 return [3] diff --git a/packages/pyright-internal/src/tests/samples/unusedExpression1.py b/packages/pyright-internal/src/tests/samples/unusedExpression1.py index b936123e3..8631c5915 100644 --- a/packages/pyright-internal/src/tests/samples/unusedExpression1.py +++ b/packages/pyright-internal/src/tests/samples/unusedExpression1.py @@ -48,8 +48,3 @@ [x for x in range(3)] {x: x for x in range(3)} {x for x in range(3)} - - - - - diff --git a/packages/pyright-internal/src/tests/samples/unusedImport1.py b/packages/pyright-internal/src/tests/samples/unusedImport1.py index a2bbc06d8..15d353379 100644 --- a/packages/pyright-internal/src/tests/samples/unusedImport1.py +++ b/packages/pyright-internal/src/tests/samples/unusedImport1.py @@ -1,5 +1,5 @@ # This sample tests the reportUnusedImport diagnostic rule. -import sys as sys # Assumes export -import os as os2 # Should error -from sys import path as p # Should error -from os import environ as environ # Assumes export \ No newline at end of file +import sys as sys # Assumes export +import os as os2 # Should error +from sys import path as p # Should error +from os import environ as environ # Assumes export diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar1.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar1.py index 1c7e7bb5d..d333acec2 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar1.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar1.py @@ -3,7 +3,7 @@ # pyright: reportMissingModuleSource=false -from typing import Generic, List, Tuple, TypeVar, Union +from typing import Generic, TypeVar, Union from typing_extensions import TypeVarTuple, Unpack @@ -19,24 +19,24 @@ def __init__(self, *args: Unpack[_Xs]) -> None: def func2(self) -> Union[_Xs]: ... - def func3(self) -> Tuple[Unpack[_Xs]]: + def func3(self) -> tuple[Unpack[_Xs]]: ... # This should generate an error - def func4(self) -> Tuple[_Xs]: + def func4(self) -> tuple[_Xs]: ... def func5(self) -> "ClassA[int, str, Unpack[_Xs]]": ... - # This should be an error because List doesn't accept a variadic TypeVar. - x: List[_Xs] = [] + # This should be an error because list doesn't accept a variadic TypeVar. + x: list[_Xs] = [] # This should generate an error. y: _Xs = () # This should generate an error. - z: Tuple[_Xs, ...] + z: tuple[_Xs, ...] # This should generate an error. @@ -45,7 +45,7 @@ class ClassB(Generic[_Xs]): # This should generate an error. -x: List[_Xs] = [] +x: list[_Xs] = [] # This should generate an error. y: _Xs = () diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar10.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar10.py index 72aeb686b..3abed5a5a 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar10.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar10.py @@ -2,7 +2,7 @@ # in conjunction with unpacked tuples. from __future__ import annotations -from typing import Any, Generic, NewType, Tuple, TypeVar, Union +from typing import Any, Generic, NewType, TypeVar, Union from typing_extensions import TypeVarTuple, Unpack DType = TypeVar("DType") @@ -24,7 +24,7 @@ def __add__( ... -def process_batch_channels(x: Array[Batch, Unpack[Tuple[Any, ...]], Channels]) -> None: +def process_batch_channels(x: Array[Batch, Unpack[tuple[Any, ...]], Channels]) -> None: ... @@ -32,7 +32,7 @@ def expect_variadic_array1(x: Array[Batch, Unpack[Shape]]) -> Union[Unpack[Shape ... -def expect_variadic_array2(x: Array[Batch, Unpack[Tuple[Any, ...]]]) -> None: +def expect_variadic_array2(x: Array[Batch, Unpack[tuple[Any, ...]]]) -> None: ... @@ -58,7 +58,7 @@ def func3(z: Array[Batch]): process_batch_channels(z) -def func4(y: Array[Any, Unpack[Tuple[Any, ...]]]): +def func4(y: Array[Any, Unpack[tuple[Any, ...]]]): reveal_type(y, expected_text="Array[Any, *tuple[Any, ...]]") expect_variadic_array1(y) expect_variadic_array2(y) diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar11.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar11.py index a48f6ad4e..f54da8eff 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar11.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar11.py @@ -4,7 +4,7 @@ # pyright: reportMissingModuleSource=false -from typing import Generic, NewType, Tuple, Union +from typing import Generic, NewType, Union from typing_extensions import TypeVarTuple @@ -33,15 +33,15 @@ def __add__(self, other: "Array[*Shape]") -> "Array[*Shape]": _Xs = TypeVarTuple("_Xs") -def func1(a: Tuple[*_Xs], b: Tuple[*_Xs]) -> Union[*_Xs]: +def func1(a: tuple[*_Xs], b: tuple[*_Xs]) -> Union[*_Xs]: ... -def func2(a: Tuple[int, *_Xs], b: Tuple[int, *_Xs]) -> Union[*_Xs]: +def func2(a: tuple[int, *_Xs], b: tuple[int, *_Xs]) -> Union[*_Xs]: ... -def func3(p1: Tuple[int], p2: Tuple[int, str]): +def func3(p1: tuple[int], p2: tuple[int, str]): # This should generate an error v1 = func1(p1, p2) @@ -58,15 +58,15 @@ def func3(p1: Tuple[int], p2: Tuple[int, str]): reveal_type(v5, expected_text="str | int") -def func4(a: int, *args: *_Xs, **kwargs: str) -> Tuple[int, *_Xs]: +def func4(a: int, *args: *_Xs, **kwargs: str) -> tuple[int, *_Xs]: ... c1 = func4(4, 5.4, 6j, b="3", c="5") -reveal_type(c1, expected_text="Tuple[int, float, complex]") +reveal_type(c1, expected_text="tuple[int, float, complex]") c2 = func4(4, b="3", c="5") -reveal_type(c2, expected_text="Tuple[int]") +reveal_type(c2, expected_text="tuple[int]") # This should generate an error. c3 = func4(b="3", c="5") diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar12.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar12.py index 1c84f3817..29a1dbc62 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar12.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar12.py @@ -23,4 +23,6 @@ def example(a: int, b: str, *, keyed: bool) -> tuple[int, str, bool]: a: CallbackA[int, str, bool] = example -reveal_type(a, expected_text="(a: int, b: str, *, keyed: bool) -> tuple[int, str, bool]") +reveal_type( + a, expected_text="(a: int, b: str, *, keyed: bool) -> tuple[int, str, bool]" +) diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar13.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar13.py index ff8342c24..18faf0bf4 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar13.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar13.py @@ -28,8 +28,9 @@ def invoke_keyed(fn: CallbackKeyed[Unpack[Ts]], *args: *Ts) -> tuple[Unpack[Ts]] return fn(*args, keyed=True) -def invoke_keyed_should_fail(fn: CallbackKeyed[Unpack[Ts]], *args: *Ts) -> tuple[Unpack[Ts]]: +def invoke_keyed_should_fail( + fn: CallbackKeyed[Unpack[Ts]], *args: *Ts +) -> tuple[Unpack[Ts]]: # This should generate an error because "keyed" should # be interpreted as a keyword-only parameter. return fn(*args, True) - diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar14.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar14.py index c95508aab..d3933d0ae 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar14.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar14.py @@ -4,8 +4,9 @@ from typing import Callable, TypeVar from typing_extensions import TypeVarTuple -Ts = TypeVarTuple('Ts') -R = TypeVar('R') +Ts = TypeVarTuple("Ts") +R = TypeVar("R") + def call_with_params(func: Callable[[*Ts], R], *params: *Ts) -> R: # This should generate an error because it's missing a *. @@ -13,12 +14,15 @@ def call_with_params(func: Callable[[*Ts], R], *params: *Ts) -> R: return func(*params) + def callback1(*args: int) -> int: ... -def callback2(*args: *tuple[int, int]) -> int: + +def callback2(*args: * tuple[int, int]) -> int: ... + call_with_params(callback1) call_with_params(callback1, 1, 2, 3) @@ -33,9 +37,11 @@ def callback2(*args: *tuple[int, int]) -> int: # This should generate an error. call_with_params(callback2, 1, "") -def callback3(*args: *tuple[int, *tuple[str, ...], int]) -> int: + +def callback3(*args: * tuple[int, *tuple[str, ...], int]) -> int: ... + # This should generate an error. call_with_params(callback3) @@ -55,7 +61,6 @@ def foo(cls, *shape: *Ts) -> tuple[*Ts]: ... - def call_with_params2(target: Callable[[*Ts], int]) -> tuple[*Ts]: ... diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar16.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar16.py index b4c9187c1..051224156 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar16.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar16.py @@ -24,5 +24,3 @@ class Child(Base[int, str]): Child.method1(1, "") Child.method2(1, "") - - diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar17.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar17.py index 8212daa42..e9fcd3da2 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar17.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar17.py @@ -10,32 +10,40 @@ def call0(*args: *Ts) -> tuple[*Ts]: ... -def call1(*args: *tuple[int, *Ts]) -> tuple[*Ts]: + +def call1(*args: * tuple[int, *Ts]) -> tuple[*Ts]: ... -def call2(*args: *tuple[*Ts, float]) -> tuple[*Ts]: + +def call2(*args: * tuple[*Ts, float]) -> tuple[*Ts]: ... -def call3(*args: *tuple[int, *Ts, float]) -> tuple[*Ts]: + +def call3(*args: * tuple[int, *Ts, float]) -> tuple[*Ts]: ... -def call4(*args: *tuple[*tuple[int, *tuple[*Ts], float]]) -> tuple[*Ts]: + +def call4(*args: * tuple[*tuple[int, *tuple[*Ts], float]]) -> tuple[*Ts]: ... -def func1(*args: *tuple[int, str]): +def func1(*args: * tuple[int, str]): reveal_type(call0(*args), expected_text="tuple[int, str]") -def func2(*args: *tuple[int, ...]): + +def func2(*args: * tuple[int, ...]): reveal_type(call0(*args), expected_text="tuple[int, ...]") -def func3(*args: *tuple[int, *tuple[str, ...], float]): + +def func3(*args: * tuple[int, *tuple[str, ...], float]): reveal_type(call0(*args), expected_text="tuple[int, *tuple[str, ...], float]") + def func4(*args: *Ts) -> tuple[*Ts]: call0(*args) return args + def func5(x: int, y: str, z: float): v1 = call1(*(x, y, z)) reveal_type(v1, expected_text="tuple[str, float]") @@ -49,5 +57,6 @@ def func5(x: int, y: str, z: float): v4 = call4(*(x, *(y, z))) reveal_type(v4, expected_text="tuple[str]") -def func6(*args: *tuple[int, *tuple[None, ...], float]): + +def func6(*args: * tuple[int, *tuple[None, ...], float]): reveal_type(call2(*args), expected_text="tuple[int, *tuple[None, ...]]") diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar18.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar18.py index 839ebeafb..cbe5778ca 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar18.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar18.py @@ -6,6 +6,7 @@ Ts = TypeVarTuple("Ts") + def func1(f: Callable[[*Ts], Any], p: tuple[*Ts]): f(*p) @@ -15,4 +16,3 @@ def func1(f: Callable[[*Ts], Any], p: tuple[*Ts]): for i in p: # This should generate an error. f(i) - \ No newline at end of file diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar2.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar2.py index 5dcd64d4c..650a2b9e6 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar2.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar2.py @@ -3,7 +3,7 @@ # pyright: reportMissingModuleSource=false -from typing import Generic, List, Tuple, TypeVar, Union +from typing import Generic, TypeVar, Union from typing_extensions import TypeVarTuple, Unpack @@ -13,7 +13,7 @@ class ClassA(Generic[_T, Unpack[_Xs]]): def __init__(self, *shape: Unpack[_Xs]): - self.x: Tuple[Unpack[_Xs]] = shape + self.x: tuple[Unpack[_Xs]] = shape # This should generate an error self.y: _Xs = shape @@ -22,26 +22,26 @@ def func1(self) -> Union[Unpack[_Xs]]: ... # This should generate an error - def func2(self) -> Tuple[Unpack[_T]]: + def func2(self) -> tuple[Unpack[_T]]: ... # This should generate an error - def func3(self) -> Tuple[Unpack[int]]: + def func3(self) -> tuple[Unpack[int]]: ... # This should generate an error - def func4(self) -> Tuple[Unpack[_Xs, _Xs]]: + def func4(self) -> tuple[Unpack[_Xs, _Xs]]: ... # This should generate an error. - a: List[Unpack[_Xs]] = [] + a: list[Unpack[_Xs]] = [] # This should generate an error. b: Unpack[_Xs] = () # This should generate an error. -x: List[Unpack[_Xs]] = [] +x: list[Unpack[_Xs]] = [] # This should generate an error. y: Unpack[_Xs] = () @@ -55,9 +55,9 @@ class Array(Generic[Unpack[_Xs]]): # This should generate two errors because _Xs must be unpacked. -def func0(value: Array[_Xs]) -> Tuple[complex, _Xs, str]: +def func0(value: Array[_Xs]) -> tuple[complex, _Xs, str]: ... -# def func1(value: Array[*_Xs]) -> Tuple[complex, *_Xs, str]: +# def func1(value: Array[*_Xs]) -> tuple[complex, *_Xs, str]: # ... diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar20.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar20.py index 046db4afd..f8fa070ee 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar20.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar20.py @@ -7,12 +7,14 @@ T = TypeVar("T") Ts = TypeVarTuple("Ts") + def func1(*args: T) -> Tuple[T, ...]: return args + def func2(x: "Tuple[*Ts]") -> list[Union[*Ts]]: r = func1(*x) - reveal_type(r, expected_text='Tuple[Union[*Ts@func2], ...]') + reveal_type(r, expected_text="Tuple[Union[*Ts@func2], ...]") v = [i for i in r] - reveal_type(v, expected_text='list[Union[*Ts@func2]]') + reveal_type(v, expected_text="list[Union[*Ts@func2]]") return v diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar21.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar21.py index 0a50f41a8..8b2a79926 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar21.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar21.py @@ -7,9 +7,11 @@ T = TypeVar("T") Ts = TypeVarTuple("Ts") -def f(*args: Unpack[Ts]) -> Union[Unpack[Ts]]: ... + +def f(*args: Unpack[Ts]) -> Union[Unpack[Ts]]: + ... + def g(x: tuple[T, Unpack[Ts]]) -> Union[T, Unpack[Ts]]: f(*x) return x[0] - \ No newline at end of file diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar22.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar22.py index 9629948fb..81a1f5a55 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar22.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar22.py @@ -5,33 +5,41 @@ Ts = TypeVarTuple("Ts") -def func1(f: Callable[[Unpack[Ts]], None], vs: tuple[Unpack[Ts]]) -> Union[Unpack[Ts]]: ... + +def func1(f: Callable[[Unpack[Ts]], None], vs: tuple[Unpack[Ts]]) -> Union[Unpack[Ts]]: + ... + def func2(f: Callable[[Literal[1, 2]], None], vs: tuple[Literal[1, 2]]): v1 = func1(f, vs) - reveal_type(v1, expected_text='Literal[1, 2]') + reveal_type(v1, expected_text="Literal[1, 2]") + def func3(f: Callable[[Literal[1, 2, 3]], None], vs: tuple[Literal[1, 2]]): v1 = func1(f, vs) - reveal_type(v1, expected_text='Literal[1, 2]') + reveal_type(v1, expected_text="Literal[1, 2]") + def func4(f: Callable[[int], None], vs: tuple[Literal[1, 2]]): v1 = func1(f, vs) - reveal_type(v1, expected_text='int') + reveal_type(v1, expected_text="int") + def func5(f: Callable[[Literal[1, 2]], None], vs: tuple[Literal[1, 2, 3]]): # This should result in an error. func1(f, vs) + def func6(f: Callable[[Literal[1, 2]], None], vs: tuple[int]): # This should result in an error. func1(f, vs) + def func7(f: Callable[[int, int, int], None], vs: tuple[int, ...]): v1 = func1(f, vs) - reveal_type(v1, expected_text='int') + reveal_type(v1, expected_text="int") + def func8(f: Callable[[Unpack[tuple[int, ...]]], None], vs: tuple[int]): v1 = func1(f, vs) - reveal_type(v1, expected_text='int') - + reveal_type(v1, expected_text="int") diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar4.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar4.py index f10c5185c..78e328695 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar4.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar4.py @@ -3,7 +3,7 @@ # pyright: reportMissingModuleSource=false -from typing import Generic, NewType, Tuple, Union +from typing import Generic, NewType, Union from typing_extensions import TypeVarTuple, Unpack @@ -32,15 +32,15 @@ def __add__(self, other: "Array[Unpack[Shape]]") -> "Array[Unpack[Shape]]": _Xs = TypeVarTuple("_Xs") -def func1(a: Tuple[Unpack[_Xs]], b: Tuple[Unpack[_Xs]]) -> Union[Unpack[_Xs]]: +def func1(a: tuple[Unpack[_Xs]], b: tuple[Unpack[_Xs]]) -> Union[Unpack[_Xs]]: ... -def func2(a: Tuple[int, Unpack[_Xs]], b: Tuple[int, Unpack[_Xs]]) -> Union[Unpack[_Xs]]: +def func2(a: tuple[int, Unpack[_Xs]], b: tuple[int, Unpack[_Xs]]) -> Union[Unpack[_Xs]]: ... -def func3(p1: Tuple[int], p2: Tuple[int, str]): +def func3(p1: tuple[int], p2: tuple[int, str]): # This should generate an error v1 = func1(p1, p2) @@ -57,15 +57,15 @@ def func3(p1: Tuple[int], p2: Tuple[int, str]): reveal_type(v5, expected_text="str | int") -def func4(a: int, *args: Unpack[_Xs], **kwargs: str) -> Tuple[int, Unpack[_Xs]]: +def func4(a: int, *args: Unpack[_Xs], **kwargs: str) -> tuple[int, Unpack[_Xs]]: ... c1 = func4(4, 5.4, 6j, b="3", c="5") -reveal_type(c1, expected_text="Tuple[int, float, complex]") +reveal_type(c1, expected_text="tuple[int, float, complex]") c2 = func4(4, b="3", c="5") -reveal_type(c2, expected_text="Tuple[int]") +reveal_type(c2, expected_text="tuple[int]") # This should generate an error. c3 = func4(b="3", c="5") diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar5.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar5.py index c180d1c84..92e8647dd 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar5.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar5.py @@ -134,5 +134,6 @@ def callback8(a: int, b: str, c: complex, d: int) -> int: def func5(x: Callable[[Unpack[_Xs]], None], y: tuple[Unpack[_Xs]]): pass + def func6(x: Callable[[Unpack[_Xs]], None], y: tuple[Unpack[_Xs]]): func5(x, y) diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar6.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar6.py index 5aee9516a..07d839d39 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar6.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar6.py @@ -3,7 +3,7 @@ # pyright: reportMissingModuleSource=false, reportMissingTypeArgument=true -from typing import Dict, Generic, Optional, Tuple, TypeVar, Union +from typing import Generic, TypeVar, Union from typing_extensions import TypeVarTuple, Unpack _Xs = TypeVarTuple("_Xs") @@ -24,14 +24,14 @@ def __init__(self, *args: Unpack[_Xs]): Alias3 = Array[_T, int, _Xs] # This should generate an error if reportMissingTypeArgument is enabled. -x1: Optional[Alias1] = None +x1: Alias1 | None = None x2: Alias1[int] = Array(3) # This should generate an error. x3: Alias1[int, str] = Array(3) -x4: Alias1[int, Dict[str, str]] = Array(3, {}) +x4: Alias1[int, dict[str, str]] = Array(3, {}) # This should generate an error. x5: Alias1[()] = Array(3) @@ -65,14 +65,14 @@ def func1(a: Alias4[_T, Unpack[_Xs]]) -> Union[_T, Unpack[_Xs]]: z3 = func1(Array(3.5, 4)) reveal_type(z3, expected_text="float") -Alias6 = Tuple[int, Unpack[_Xs]] +Alias6 = tuple[int, Unpack[_Xs]] # The type annotation for y will generate an error if # reportMissingTypeArgument is enabled. def func2(x: Alias6[float, bool], y: Alias6, z: Alias6[()]): - reveal_type(x, expected_text="Tuple[int, float, bool]") + reveal_type(x, expected_text="tuple[int, float, bool]") - reveal_type(y, expected_text="Tuple[int, Unknown]") + reveal_type(y, expected_text="tuple[int, Unknown]") - reveal_type(z, expected_text="Tuple[int]") + reveal_type(z, expected_text="tuple[int]") diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar7.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar7.py index 2dcb408ae..87d5c3fd0 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar7.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar7.py @@ -3,7 +3,7 @@ # pyright: reportMissingModuleSource=false -from typing import Any, Callable, Dict, Generic, Tuple, TypeVar, Union +from typing import Any, Callable, Generic, TypeVar, Union from typing_extensions import TypeVarTuple, Unpack _Xs = TypeVarTuple("_Xs") @@ -17,25 +17,25 @@ class Class1(Generic[Unpack[_Ys], Unpack[_Xs]]): # This should generate an error because only one TypeVarTuple is allowed. -class Class2(Dict[Tuple[Unpack[_Ys]], Tuple[Unpack[_Xs]]]): +class Class2(dict[tuple[Unpack[_Ys]], tuple[Unpack[_Xs]]]): ... -class Class3(Dict[Tuple[Unpack[_Ys]], _T1]): +class Class3(dict[tuple[Unpack[_Ys]], _T1]): ... -class Class4(Dict[_T1, Tuple[Unpack[_Ys]]], Generic[Unpack[_Ys], _T1]): +class Class4(dict[_T1, tuple[Unpack[_Ys]]], Generic[Unpack[_Ys], _T1]): ... -class Class5(Dict[Tuple[Unpack[_Ys]], _T1], Generic[_T1, Unpack[_Ys]]): - def func1(self, a: Tuple[Unpack[_Ys], int]): +class Class5(dict[tuple[Unpack[_Ys]], _T1], Generic[_T1, Unpack[_Ys]]): + def func1(self, a: tuple[Unpack[_Ys], int]): pass - # This should generate an error because Tuple cannot contain multiple + # This should generate an error because tuple cannot contain multiple # TypeVarTuples. - def func2(self, *args: Unpack[_Xs]) -> Tuple[Unpack[_Ys], Unpack[_Xs]]: + def func2(self, *args: Unpack[_Xs]) -> tuple[Unpack[_Ys], Unpack[_Xs]]: ... def func3(self) -> Union[Unpack[_Ys], int]: @@ -53,7 +53,7 @@ def func6(self, a: Callable[[int], Unpack[_Ys]]): pass -Alias1 = Union[Tuple[int, Unpack[_Xs]], _T1] +Alias1 = Union[tuple[int, Unpack[_Xs]], _T1] # This should generate an error because at most one TypeVarTuple is allowed. -Alias2 = Union[Tuple[int, Unpack[_Xs]], Tuple[Unpack[_Ys]]] +Alias2 = Union[tuple[int, Unpack[_Xs]], tuple[Unpack[_Ys]]] diff --git a/packages/pyright-internal/src/tests/samples/variadicTypeVar8.py b/packages/pyright-internal/src/tests/samples/variadicTypeVar8.py index 0f4df007e..ed0239a28 100644 --- a/packages/pyright-internal/src/tests/samples/variadicTypeVar8.py +++ b/packages/pyright-internal/src/tests/samples/variadicTypeVar8.py @@ -2,7 +2,7 @@ # pyright: reportMissingModuleSource=false -from typing import List, TypeVar, Union +from typing import TypeVar, Union from typing_extensions import TypeVarTuple, Unpack @@ -35,11 +35,11 @@ def func6(*args: Unpack[_Xs]) -> Union[Unpack[_Xs]]: ... -def func7(a: List[Union[Unpack[_Xs]]]) -> Union[Unpack[_Xs]]: +def func7(a: list[Union[Unpack[_Xs]]]) -> Union[Unpack[_Xs]]: ... -def test1(a: int, b: str, c: List[int], d: Union[complex, str]): +def test1(a: int, b: str, c: list[int], d: Union[complex, str]): v1_1 = func1(a) reveal_type(v1_1, expected_text="int") @@ -111,7 +111,7 @@ def test1(a: int, b: str, c: List[int], d: Union[complex, str]): v7_1 = func7([a]) reveal_type(v7_1, expected_text="int") - x: List[Union[int, str]] = [a, b] + x: list[Union[int, str]] = [a, b] v7_2 = func7(x) reveal_type(v7_2, expected_text="int | str") diff --git a/packages/pyright-internal/src/tests/samples/with1.py b/packages/pyright-internal/src/tests/samples/with1.py index e6deab3da..0aca6001c 100644 --- a/packages/pyright-internal/src/tests/samples/with1.py +++ b/packages/pyright-internal/src/tests/samples/with1.py @@ -1,7 +1,6 @@ # This sample tests various forms of the 'with' statement. -from typing import Any, Generic, Optional, TypeVar -from typing_extensions import Self +from typing import Any, Generic, Optional, TypeVar, Self _T1 = TypeVar("_T1") diff --git a/packages/pyright-internal/src/tests/samples/with2.py b/packages/pyright-internal/src/tests/samples/with2.py index 0b2bc7fcb..e8ad52625 100644 --- a/packages/pyright-internal/src/tests/samples/with2.py +++ b/packages/pyright-internal/src/tests/samples/with2.py @@ -2,7 +2,7 @@ # or __aexit__ method. -from typing import Any, Optional, TypeVar +from typing import Any, TypeVar _T1 = TypeVar("_T1") @@ -18,9 +18,9 @@ def __enter__(self: _T1) -> _T1: def __exit__( self, - t: Optional[type] = None, - exc: Optional[BaseException] = None, - tb: Optional[Any] = None, + t: type | None = None, + exc: BaseException | None = None, + tb: Any | None = None, ) -> bool: return True diff --git a/packages/pyright-internal/src/tests/samples/with5.py b/packages/pyright-internal/src/tests/samples/with5.py index 49af9e6e9..ed4046516 100644 --- a/packages/pyright-internal/src/tests/samples/with5.py +++ b/packages/pyright-internal/src/tests/samples/with5.py @@ -1,6 +1,6 @@ # This sample tests the case of a context manager within a try/except block. -from typing import Optional, ContextManager +from typing import ContextManager def create_context() -> ContextManager[str]: @@ -12,8 +12,8 @@ def possible_exception() -> None: def func1(): - x: Optional[str] = None - ctx: Optional[str] = None + x: str | None = None + ctx: str | None = None try: with create_context() as ctx: x = "0" @@ -24,7 +24,7 @@ def func1(): def func2(): - ctx: Optional[str] = None + ctx: str | None = None try: with create_context() as ctx: possible_exception() diff --git a/packages/pyright-internal/src/tests/samples/with6.py b/packages/pyright-internal/src/tests/samples/with6.py index 2ac6b67e0..126944696 100644 --- a/packages/pyright-internal/src/tests/samples/with6.py +++ b/packages/pyright-internal/src/tests/samples/with6.py @@ -9,14 +9,16 @@ class ClassA(type): def __enter__(cls) -> Self: print("Enter A") return cls - - def __exit__(cls, exc_typ: type[Exception], exc_val: Exception, exc_tbc: TracebackType) -> None: + + def __exit__( + cls, exc_typ: type[Exception], exc_val: Exception, exc_tbc: TracebackType + ) -> None: print("Exit A") + class ClassB(metaclass=ClassA): ... with ClassB as b: ... - From eff69f5fe5aa58cca179469a95150b7bf9795159 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 22:35:56 -0700 Subject: [PATCH 331/525] Fixed a bug that caused incorrect type inference for parameters in unannotated methods within child classes who derive from a generic parent class. This addresses a bug reported on stack overflow: https://stackoverflow.com/questions/76466874/trouble-specifying-type-parameter-when-inheriting-from-generic-class. --- .../src/analyzer/typeEvaluator.ts | 9 +++++++++ .../src/tests/samples/paramInference2.py | 20 +++++++++++++++++++ .../src/tests/typeEvaluator1.test.ts | 6 ++++++ 3 files changed, 35 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/paramInference2.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index c6529b7ed..bb94f9069 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -16884,6 +16884,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions functionNode.parameters[paramIndex].category ); + // If the parameter type is generic, specialize it in the context + // of the child class. + if (requiresSpecialization(inferredParamType) && isClass(baseClassMemberInfo.classType)) { + const typeVarContext = buildTypeVarContextFromSpecializedClass( + baseClassMemberInfo.classType + ); + inferredParamType = applySolvedTypeVars(inferredParamType, typeVarContext); + } + const fileInfo = AnalyzerNodeInfo.getFileInfo(functionNode); if (fileInfo.isInPyTypedPackage && !fileInfo.isStubFile) { inferredParamType = TypeBase.cloneForAmbiguousType(inferredParamType); diff --git a/packages/pyright-internal/src/tests/samples/paramInference2.py b/packages/pyright-internal/src/tests/samples/paramInference2.py new file mode 100644 index 000000000..3ff981a8d --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/paramInference2.py @@ -0,0 +1,20 @@ +# This sample tests the logic that infers parameter types based on +# annotated base class methods when the base class is generic. + + +from typing import Generic, TypeVar + +T = TypeVar("T") + + +class Parent(Generic[T]): + def method1(self, a: T, b: list[T]) -> None: + ... + + +class Child(Parent[float]): + def method1(self, a, b): + reveal_type(self, expected_text="Self@Child") + reveal_type(a, expected_text="float") + reveal_type(b, expected_text="list[float]") + return a diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 87bb6aa11..2b3031b61 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1571,6 +1571,12 @@ test('ParamInference1', () => { TestUtils.validateResults(analysisResults, 0); }); +test('ParamInference2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['paramInference2.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Dictionary1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dictionary1.py']); From d12ad6e2beffe6303398e7aca8a67a9e3bb30a83 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 19 Jun 2023 23:59:08 -0700 Subject: [PATCH 332/525] Updated typeshed stubs to the latest version. --- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/argparse.pyi | 29 +- .../typeshed-fallback/stdlib/inspect.pyi | 3 +- .../typeshed-fallback/stdlib/shutil.pyi | 5 +- .../typeshed-fallback/stdlib/tarfile.pyi | 90 +++- .../typeshed-fallback/stdlib/tempfile.pyi | 21 + .../stdlib/zoneinfo/__init__.pyi | 6 +- .../stubs/WebOb/METADATA.toml | 1 + .../stubs/WebOb/webob/__init__.pyi | 13 + .../stubs/WebOb/webob/acceptparse.pyi | 503 ++++++++++++++++++ .../stubs/WebOb/webob/byterange.pyi | 28 + .../stubs/WebOb/webob/cachecontrol.pyi | 96 ++++ .../stubs/WebOb/webob/client.pyi | 12 + .../stubs/WebOb/webob/cookies.pyi | 148 ++++++ .../stubs/WebOb/webob/datetime_utils.pyi | 23 + .../stubs/WebOb/webob/dec.pyi | 49 ++ .../stubs/WebOb/webob/descriptors.pyi | 58 ++ .../stubs/WebOb/webob/etag.pyi | 53 ++ .../stubs/WebOb/webob/exc.pyi | 126 +++++ .../stubs/WebOb/webob/headers.pyi | 17 + .../stubs/WebOb/webob/multidict.pyi | 105 ++++ .../stubs/WebOb/webob/request.pyi | 238 +++++++++ .../stubs/WebOb/webob/response.pyi | 179 +++++++ .../stubs/WebOb/webob/static.pyi | 37 ++ .../stubs/WebOb/webob/util.pyi | 14 + .../stubs/hdbcli/METADATA.toml | 2 +- .../stubs/openpyxl/openpyxl/cell/cell.pyi | 42 +- .../openpyxl/openpyxl/cell/read_only.pyi | 3 +- .../stubs/openpyxl/openpyxl/cell/text.pyi | 27 +- .../stubs/openpyxl/openpyxl/chart/_3d.pyi | 39 +- .../stubs/openpyxl/openpyxl/chart/_chart.pyi | 6 +- .../openpyxl/openpyxl/chart/area_chart.pyi | 23 +- .../stubs/openpyxl/openpyxl/chart/axis.pyi | 207 ++++--- .../openpyxl/openpyxl/chart/bar_chart.pyi | 33 +- .../openpyxl/openpyxl/chart/bubble_chart.pyi | 29 +- .../openpyxl/openpyxl/chart/chartspace.pyi | 83 +-- .../openpyxl/openpyxl/chart/data_source.pyi | 56 +- .../openpyxl/openpyxl/chart/descriptors.pyi | 7 +- .../openpyxl/openpyxl/chart/error_bar.pyi | 33 +- .../stubs/openpyxl/openpyxl/chart/label.pyi | 65 +-- .../stubs/openpyxl/openpyxl/chart/layout.pyi | 50 +- .../stubs/openpyxl/openpyxl/chart/legend.pyi | 31 +- .../openpyxl/openpyxl/chart/line_chart.pyi | 39 +- .../stubs/openpyxl/openpyxl/chart/marker.pyi | 39 +- .../stubs/openpyxl/openpyxl/chart/picture.pyi | 28 +- .../openpyxl/openpyxl/chart/pie_chart.pyi | 73 ++- .../stubs/openpyxl/openpyxl/chart/pivot.pyi | 28 +- .../openpyxl/openpyxl/chart/plotarea.pyi | 25 +- .../openpyxl/chart/print_settings.pyi | 4 +- .../openpyxl/openpyxl/chart/radar_chart.pyi | 17 +- .../openpyxl/openpyxl/chart/scatter_chart.pyi | 17 +- .../stubs/openpyxl/openpyxl/chart/series.pyi | 45 +- .../stubs/openpyxl/openpyxl/chart/shapes.pyi | 9 +- .../openpyxl/openpyxl/chart/stock_chart.pyi | 2 +- .../openpyxl/openpyxl/chart/surface_chart.pyi | 31 +- .../stubs/openpyxl/openpyxl/chart/text.pyi | 6 +- .../stubs/openpyxl/openpyxl/chart/title.pyi | 9 +- .../openpyxl/openpyxl/chart/trendline.pyi | 45 +- .../openpyxl/openpyxl/chart/updown_bars.pyi | 2 +- .../openpyxl/chartsheet/chartsheet.pyi | 2 +- .../openpyxl/openpyxl/chartsheet/custom.pyi | 4 +- .../openpyxl/chartsheet/properties.pyi | 2 +- .../openpyxl/chartsheet/protection.pyi | 2 +- .../openpyxl/openpyxl/chartsheet/publish.pyi | 4 +- .../openpyxl/openpyxl/chartsheet/relation.pyi | 3 +- .../openpyxl/openpyxl/chartsheet/views.pyi | 4 +- .../openpyxl/openpyxl/comments/author.pyi | 3 +- .../openpyxl/comments/comment_sheet.pyi | 4 +- .../openpyxl/openpyxl/compat/numbers.pyi | 19 +- .../openpyxl/openpyxl/compat/strings.pyi | 5 +- .../openpyxl/openpyxl/descriptors/base.pyi | 5 +- .../openpyxl/openpyxl/descriptors/excel.pyi | 4 +- .../openpyxl/descriptors/namespace.pyi | 4 +- .../openpyxl/openpyxl/descriptors/nested.pyi | 312 +++++++++-- .../openpyxl/descriptors/sequence.pyi | 8 +- .../openpyxl/descriptors/serialisable.pyi | 16 +- .../openpyxl/openpyxl/drawing/colors.pyi | 497 +++++++++++------ .../openpyxl/openpyxl/drawing/connector.pyi | 4 +- .../openpyxl/openpyxl/drawing/effect.pyi | 8 +- .../stubs/openpyxl/openpyxl/drawing/fill.pyi | 55 +- .../openpyxl/openpyxl/drawing/geometry.pyi | 32 +- .../openpyxl/openpyxl/drawing/graphic.pyi | 14 +- .../stubs/openpyxl/openpyxl/drawing/line.pyi | 47 +- .../openpyxl/openpyxl/drawing/picture.pyi | 10 +- .../openpyxl/openpyxl/drawing/properties.pyi | 14 +- .../openpyxl/openpyxl/drawing/relation.pyi | 5 +- .../openpyxl/drawing/spreadsheet_drawing.pyi | 25 +- .../stubs/openpyxl/openpyxl/drawing/text.pyi | 137 ++--- .../stubs/openpyxl/openpyxl/drawing/xdr.pyi | 7 +- .../openpyxl/formatting/formatting.pyi | 3 +- .../openpyxl/openpyxl/formatting/rule.pyi | 10 +- .../openpyxl/openpyxl/formula/tokenizer.pyi | 50 +- .../openpyxl/openpyxl/formula/translate.pyi | 8 +- .../openpyxl/openpyxl/packaging/core.pyi | 63 ++- .../openpyxl/openpyxl/packaging/custom.pyi | 9 +- .../openpyxl/openpyxl/packaging/extended.pyi | 99 ++-- .../openpyxl/openpyxl/packaging/manifest.pyi | 12 +- .../openpyxl/packaging/relationship.pyi | 6 +- .../openpyxl/openpyxl/packaging/workbook.pyi | 15 +- .../stubs/openpyxl/openpyxl/pivot/cache.pyi | 75 +-- .../stubs/openpyxl/openpyxl/pivot/fields.pyi | 14 +- .../stubs/openpyxl/openpyxl/pivot/record.pyi | 4 +- .../stubs/openpyxl/openpyxl/pivot/table.pyi | 46 +- .../stubs/openpyxl/openpyxl/reader/excel.pyi | 4 +- .../openpyxl/openpyxl/styles/alignment.pyi | 5 +- .../openpyxl/openpyxl/styles/borders.pyi | 38 +- .../openpyxl/openpyxl/styles/cell_style.pyi | 6 +- .../stubs/openpyxl/openpyxl/styles/colors.pyi | 19 +- .../openpyxl/openpyxl/styles/differential.pyi | 4 +- .../stubs/openpyxl/openpyxl/styles/fills.pyi | 16 +- .../stubs/openpyxl/openpyxl/styles/fonts.pyi | 95 ++-- .../openpyxl/openpyxl/styles/named_styles.pyi | 4 +- .../openpyxl/openpyxl/styles/numbers.pyi | 88 +-- .../openpyxl/openpyxl/styles/protection.pyi | 3 +- .../openpyxl/openpyxl/styles/stylesheet.pyi | 4 +- .../stubs/openpyxl/openpyxl/styles/table.pyi | 6 +- .../stubs/openpyxl/openpyxl/utils/cell.pyi | 19 +- .../openpyxl/openpyxl/utils/datetime.pyi | 16 +- .../openpyxl/openpyxl/utils/formulas.pyi | 4 +- .../openpyxl/openpyxl/utils/inference.pyi | 9 +- .../stubs/openpyxl/openpyxl/utils/units.pyi | 14 +- .../openpyxl/openpyxl/workbook/child.pyi | 4 +- .../openpyxl/workbook/defined_name.pyi | 11 +- .../workbook/external_link/external.pyi | 15 +- .../openpyxl/workbook/external_reference.pyi | 3 +- .../openpyxl/workbook/function_group.pyi | 4 +- .../openpyxl/openpyxl/workbook/properties.pyi | 7 +- .../openpyxl/openpyxl/workbook/protection.pyi | 4 +- .../openpyxl/openpyxl/workbook/smart_tags.pyi | 6 +- .../openpyxl/openpyxl/workbook/views.pyi | 4 +- .../stubs/openpyxl/openpyxl/workbook/web.pyi | 6 +- .../openpyxl/openpyxl/workbook/workbook.pyi | 3 +- .../openpyxl/worksheet/_read_only.pyi | 6 +- .../openpyxl/openpyxl/worksheet/_reader.pyi | 57 +- .../openpyxl/openpyxl/worksheet/_writer.pyi | 2 +- .../openpyxl/worksheet/cell_range.pyi | 8 +- .../openpyxl/worksheet/cell_watch.pyi | 4 +- .../openpyxl/openpyxl/worksheet/controls.pyi | 6 +- .../openpyxl/openpyxl/worksheet/custom.pyi | 4 +- .../openpyxl/worksheet/datavalidation.pyi | 15 +- .../openpyxl/worksheet/dimensions.pyi | 4 +- .../openpyxl/openpyxl/worksheet/drawing.pyi | 3 +- .../openpyxl/openpyxl/worksheet/errors.pyi | 8 +- .../openpyxl/openpyxl/worksheet/filters.pyi | 24 +- .../openpyxl/worksheet/header_footer.pyi | 16 +- .../openpyxl/openpyxl/worksheet/hyperlink.pyi | 4 +- .../openpyxl/openpyxl/worksheet/merge.pyi | 4 +- .../stubs/openpyxl/openpyxl/worksheet/ole.pyi | 8 +- .../openpyxl/openpyxl/worksheet/page.pyi | 7 +- .../openpyxl/openpyxl/worksheet/pagebreak.pyi | 6 +- .../openpyxl/openpyxl/worksheet/picture.pyi | 4 +- .../openpyxl/worksheet/print_settings.pyi | 14 +- .../openpyxl/worksheet/properties.pyi | 6 +- .../openpyxl/worksheet/protection.pyi | 2 +- .../openpyxl/openpyxl/worksheet/scenario.pyi | 6 +- .../openpyxl/openpyxl/worksheet/smart_tag.pyi | 8 +- .../openpyxl/openpyxl/worksheet/table.pyi | 18 +- .../openpyxl/openpyxl/worksheet/views.pyi | 4 +- .../openpyxl/openpyxl/worksheet/worksheet.pyi | 35 +- .../stubs/openpyxl/openpyxl/xml/__init__.pyi | 6 +- .../stubs/openpyxl/openpyxl/xml/constants.pyi | 163 +++--- .../stubs/openpyxl/openpyxl/xml/functions.pyi | 5 +- .../stubs/psutil/psutil/__init__.pyi | 9 +- .../stubs/psutil/psutil/_psbsd.pyi | 3 +- .../stubs/psutil/psutil/_pslinux.pyi | 2 +- .../stubs/psutil/psutil/_pswindows.pyi | 2 +- 166 files changed, 4037 insertions(+), 1538 deletions(-) create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/acceptparse.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/byterange.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/cachecontrol.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/client.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/cookies.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/datetime_utils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/dec.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/descriptors.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/etag.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/exc.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/headers.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/multidict.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/request.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/response.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/static.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/util.pyi diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index 36914fa18..cab255c4f 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -6a94c9d677db9e9f85d764cc46294fd5c5e2a4b8 +4290a25727800902d1733bf41fbc4300d2567c70 diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi index 8e6f9da8e..e41048516 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi @@ -169,9 +169,9 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): add_help: bool = True, allow_abbrev: bool = True, ) -> None: ... - # Ignore errors about overlapping overloads + @overload - def parse_args(self, args: Sequence[str] | None = None, namespace: None = None) -> Namespace: ... # type: ignore[misc] + def parse_args(self, args: Sequence[str] | None = None, namespace: Namespace | None = None) -> Namespace: ... # type: ignore[misc] @overload def parse_args(self, args: Sequence[str] | None, namespace: _N) -> _N: ... @overload @@ -209,16 +209,27 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): def print_help(self, file: IO[str] | None = None) -> None: ... def format_usage(self) -> str: ... def format_help(self) -> str: ... - def parse_known_args( - self, args: Sequence[str] | None = None, namespace: Namespace | None = None - ) -> tuple[Namespace, list[str]]: ... + @overload + def parse_known_args(self, args: Sequence[str] | None = None, namespace: Namespace | None = None) -> tuple[Namespace, list[str]]: ... # type: ignore[misc] + @overload + def parse_known_args(self, args: Sequence[str] | None, namespace: _N) -> tuple[_N, list[str]]: ... + @overload + def parse_known_args(self, *, namespace: _N) -> tuple[_N, list[str]]: ... def convert_arg_line_to_args(self, arg_line: str) -> list[str]: ... def exit(self, status: int = 0, message: str | None = None) -> NoReturn: ... def error(self, message: str) -> NoReturn: ... - def parse_intermixed_args(self, args: Sequence[str] | None = None, namespace: Namespace | None = None) -> Namespace: ... - def parse_known_intermixed_args( - self, args: Sequence[str] | None = None, namespace: Namespace | None = None - ) -> tuple[Namespace, list[str]]: ... + @overload + def parse_intermixed_args(self, args: Sequence[str] | None = None, namespace: Namespace | None = None) -> Namespace: ... # type: ignore[misc] + @overload + def parse_intermixed_args(self, args: Sequence[str] | None, namespace: _N) -> _N: ... + @overload + def parse_intermixed_args(self, *, namespace: _N) -> _N: ... + @overload + def parse_known_intermixed_args(self, args: Sequence[str] | None = None, namespace: Namespace | None = None) -> tuple[Namespace, list[str]]: ... # type: ignore[misc] + @overload + def parse_known_intermixed_args(self, args: Sequence[str] | None, namespace: _N) -> tuple[_N, list[str]]: ... + @overload + def parse_known_intermixed_args(self, *, namespace: _N) -> tuple[_N, list[str]]: ... # undocumented def _get_optional_actions(self) -> list[Action]: ... def _get_positional_actions(self) -> list[Action]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi index 2d004a8e6..2b07200f1 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi @@ -2,6 +2,7 @@ import dis import enum import sys import types +from _typeshed import StrPath from collections import OrderedDict from collections.abc import AsyncGenerator, Awaitable, Callable, Coroutine, Generator, Mapping, Sequence, Set as AbstractSet from types import ( @@ -177,7 +178,7 @@ if sys.version_info >= (3, 11): @overload def getmembers_static(object: object, predicate: _GetMembersPredicate | None = None) -> _GetMembersReturn: ... -def getmodulename(path: str) -> str | None: ... +def getmodulename(path: StrPath) -> str | None: ... def ismodule(object: object) -> TypeGuard[ModuleType]: ... def isclass(object: object) -> TypeGuard[type[Any]]: ... def ismethod(object: object) -> TypeGuard[MethodType]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi index ef716d404..38c50d51b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/shutil.pyi @@ -2,6 +2,7 @@ import os import sys from _typeshed import BytesPath, FileDescriptorOrPath, StrOrBytesPath, StrPath, SupportsRead, SupportsWrite from collections.abc import Callable, Iterable, Sequence +from tarfile import _TarfileFilter from typing import Any, AnyStr, NamedTuple, Protocol, TypeVar, overload from typing_extensions import TypeAlias @@ -192,9 +193,9 @@ def register_archive_format( ) -> None: ... def unregister_archive_format(name: str) -> None: ... -if sys.version_info >= (3, 12): +if sys.version_info >= (3, 8): def unpack_archive( - filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None, *, filter: str | None = None + filename: StrPath, extract_dir: StrPath | None = None, format: str | None = None, *, filter: _TarfileFilter | None = None ) -> None: ... else: diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tarfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tarfile.pyi index 5cf1d55ca..d9d9641ac 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tarfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tarfile.pyi @@ -7,7 +7,7 @@ from collections.abc import Callable, Iterable, Iterator, Mapping from gzip import _ReadableFileobj as _GzipReadableFileobj, _WritableFileobj as _GzipWritableFileobj from types import TracebackType from typing import IO, ClassVar, Protocol, overload -from typing_extensions import Literal, Self +from typing_extensions import Literal, Self, TypeAlias __all__ = [ "TarFile", @@ -26,6 +26,21 @@ __all__ = [ "DEFAULT_FORMAT", "open", ] +if sys.version_info >= (3, 12): + __all__ += [ + "fully_trusted_filter", + "data_filter", + "tar_filter", + "FilterError", + "AbsoluteLinkError", + "OutsideDestinationError", + "SpecialFileError", + "AbsolutePathError", + "LinkOutsideDestinationError", + ] + +_FilterFunction: TypeAlias = Callable[[TarInfo, str], TarInfo | None] +_TarfileFilter: TypeAlias = Literal["fully_trusted", "tar", "data"] | _FilterFunction class _Fileobj(Protocol): def read(self, __size: int) -> bytes: ... @@ -125,6 +140,7 @@ class TarFile: debug: int | None errorlevel: int | None offset: int # undocumented + extraction_filter: _FilterFunction | None def __init__( self, name: StrOrBytesPath | None = None, @@ -275,12 +291,32 @@ class TarFile: def getnames(self) -> _list[str]: ... def list(self, verbose: bool = True, *, members: _list[TarInfo] | None = None) -> None: ... def next(self) -> TarInfo | None: ... - def extractall( - self, path: StrOrBytesPath = ".", members: Iterable[TarInfo] | None = None, *, numeric_owner: bool = False - ) -> None: ... - def extract( - self, member: str | TarInfo, path: StrOrBytesPath = "", set_attrs: bool = True, *, numeric_owner: bool = False - ) -> None: ... + if sys.version_info >= (3, 8): + def extractall( + self, + path: StrOrBytesPath = ".", + members: Iterable[TarInfo] | None = None, + *, + numeric_owner: bool = False, + filter: _TarfileFilter | None = ..., + ) -> None: ... + def extract( + self, + member: str | TarInfo, + path: StrOrBytesPath = "", + set_attrs: bool = True, + *, + numeric_owner: bool = False, + filter: _TarfileFilter | None = ..., + ) -> None: ... + else: + def extractall( + self, path: StrOrBytesPath = ".", members: Iterable[TarInfo] | None = None, *, numeric_owner: bool = False + ) -> None: ... + def extract( + self, member: str | TarInfo, path: StrOrBytesPath = "", set_attrs: bool = True, *, numeric_owner: bool = False + ) -> None: ... + def _extract_member( self, tarinfo: TarInfo, targetpath: str, set_attrs: bool = True, numeric_owner: bool = False ) -> None: ... # undocumented @@ -324,6 +360,31 @@ class StreamError(TarError): ... class ExtractError(TarError): ... class HeaderError(TarError): ... +if sys.version_info >= (3, 8): + class FilterError(TarError): + # This attribute is only set directly on the subclasses, but the documentation guarantees + # that it is always present on FilterError. + tarinfo: TarInfo + + class AbsolutePathError(FilterError): + def __init__(self, tarinfo: TarInfo) -> None: ... + + class OutsideDestinationError(FilterError): + def __init__(self, tarinfo: TarInfo, path: str) -> None: ... + + class SpecialFileError(FilterError): + def __init__(self, tarinfo: TarInfo) -> None: ... + + class AbsoluteLinkError(FilterError): + def __init__(self, tarinfo: TarInfo) -> None: ... + + class LinkOutsideDestinationError(FilterError): + def __init__(self, tarinfo: TarInfo, path: str) -> None: ... + + def fully_trusted_filter(member: TarInfo, dest_path: str) -> TarInfo: ... + def tar_filter(member: TarInfo, dest_path: str) -> TarInfo: ... + def data_filter(member: TarInfo, dest_path: str) -> TarInfo: ... + class TarInfo: name: str path: str @@ -353,6 +414,21 @@ class TarInfo: def linkpath(self) -> str: ... @linkpath.setter def linkpath(self, linkname: str) -> None: ... + if sys.version_info >= (3, 8): + def replace( + self, + *, + name: str = ..., + mtime: int = ..., + mode: int = ..., + linkname: str = ..., + uid: int = ..., + gid: int = ..., + uname: str = ..., + gname: str = ..., + deep: bool = True, + ) -> Self: ... + def get_info(self) -> Mapping[str, str | int | bytes | Mapping[str, str]]: ... if sys.version_info >= (3, 8): def tobuf(self, format: int | None = 2, encoding: str | None = "utf-8", errors: str = "surrogateescape") -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi index eca58a372..b251f8b9d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi @@ -191,6 +191,17 @@ else: errors: str | None = None, ) -> io.FileIO: ... @overload + def TemporaryFile( + *, + buffering: Literal[0], + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + errors: str | None = None, + ) -> io.FileIO: ... + @overload def TemporaryFile( mode: OpenBinaryModeWriting, buffering: Literal[-1, 1] = -1, @@ -260,6 +271,16 @@ else: dir: GenericPath[AnyStr] | None = None, ) -> io.FileIO: ... @overload + def TemporaryFile( + *, + buffering: Literal[0], + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: GenericPath[AnyStr] | None = None, + ) -> io.FileIO: ... + @overload def TemporaryFile( mode: OpenBinaryModeUpdating = "w+b", buffering: Literal[-1, 1] = -1, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/zoneinfo/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/zoneinfo/__init__.pyi index fe994be3e..a95530ed4 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/zoneinfo/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/zoneinfo/__init__.pyi @@ -17,9 +17,9 @@ class ZoneInfo(tzinfo): @classmethod def no_cache(cls, key: str) -> Self: ... @classmethod - def from_file(cls, __fobj: _IOBytes, key: str | None = ...) -> Self: ... + def from_file(cls, __fobj: _IOBytes, key: str | None = None) -> Self: ... @classmethod - def clear_cache(cls, *, only_keys: Iterable[str] | None = ...) -> None: ... + def clear_cache(cls, *, only_keys: Iterable[str] | None = None) -> None: ... def tzname(self, __dt: datetime | None) -> str | None: ... def utcoffset(self, __dt: datetime | None) -> timedelta | None: ... def dst(self, __dt: datetime | None) -> timedelta | None: ... @@ -30,7 +30,7 @@ class ZoneInfo(tzinfo): def reset_tzpath(to: Sequence[StrPath] | None = None) -> None: ... def available_timezones() -> set[str]: ... -TZPATH: Sequence[str] +TZPATH: tuple[str, ...] class ZoneInfoNotFoundError(KeyError): ... class InvalidTZPathWarning(RuntimeWarning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/METADATA.toml new file mode 100644 index 000000000..690242a33 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/METADATA.toml @@ -0,0 +1 @@ +version = "1.8.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/__init__.pyi new file mode 100644 index 000000000..308be3055 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/__init__.pyi @@ -0,0 +1,13 @@ +from webob.datetime_utils import ( + UTC as UTC, + day as day, + hour as hour, + minute as minute, + month as month, + second as second, + week as week, + year as year, +) +from webob.request import LegacyRequest as LegacyRequest, Request as Request +from webob.response import Response as Response +from webob.util import html_escape as html_escape diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/acceptparse.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/acceptparse.pyi new file mode 100644 index 000000000..4dba5387c --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/acceptparse.pyi @@ -0,0 +1,503 @@ +from _typeshed import SupportsItems +from collections.abc import Callable, Iterable, Iterator +from typing import Any, NamedTuple, TypeVar, overload +from typing_extensions import Literal, Self, TypeAlias + +_T = TypeVar("_T") +_ListOrTuple: TypeAlias = list[_T] | tuple[_T, ...] +_ParsedAccept: TypeAlias = tuple[str, float, list[tuple[str, str]], list[str | tuple[str, str]]] + +class AcceptOffer(NamedTuple): + type: str + subtype: str + params: tuple[tuple[str, str], ...] + +class Accept: + @classmethod + def parse(cls, value: str) -> Iterator[_ParsedAccept]: ... + @classmethod + def parse_offer(cls, offer: str | AcceptOffer) -> AcceptOffer: ... + +class AcceptValidHeader(Accept): + @property + def header_value(self) -> str: ... + @property + def parsed(self) -> list[_ParsedAccept] | None: ... + def __init__(self, header_value: str) -> None: ... + def copy(self) -> Self: ... + @overload + def __add__(self, other: str | None) -> Self: ... + @overload + def __add__(self, other: AcceptNoHeader | AcceptValidHeader | AcceptInvalidHeader) -> Self: ... + @overload + def __add__(self, other: SupportsItems[str, float | tuple[float, str]]) -> Self: ... + @overload + def __add__(self, other: _ListOrTuple[str | tuple[str, float, str] | list[Any]]) -> Self: ... + def __bool__(self) -> Literal[True]: ... + def __contains__(self, offer: str) -> bool: ... + def __iter__(self) -> Iterator[str]: ... + @overload + def __radd__(self, other: str | None) -> Self: ... + @overload + def __radd__(self, other: SupportsItems[str, float | tuple[float, str]]) -> Self: ... + @overload + def __radd__(self, other: _ListOrTuple[str | tuple[str, float, str] | list[Any]]) -> Self: ... + def accept_html(self) -> bool: ... + @property + def accepts_html(self) -> bool: ... + def acceptable_offers(self, offers: Iterable[str | AcceptOffer]) -> list[tuple[str, float]]: ... + @overload + def best_match(self, offers: Iterable[str | tuple[str, float] | list[Any]], default_match: None = None) -> str | None: ... + @overload + def best_match(self, offers: Iterable[str | tuple[str, float] | list[Any]], default_match: str) -> str: ... + def quality(self, offer: str) -> float | None: ... + +class _AcceptInvalidOrNoHeader(Accept): + @property + def parsed(self) -> None: ... + def copy(self) -> Self: ... + @overload + def __add__(self, other: None) -> AcceptNoHeader: ... + @overload + def __add__(self, other: str) -> AcceptValidHeader | AcceptNoHeader: ... + @overload + def __add__(self, other: AcceptValidHeader) -> AcceptValidHeader: ... + @overload + def __add__(self, other: AcceptNoHeader | AcceptInvalidHeader) -> AcceptNoHeader: ... + @overload + def __add__(self, other: SupportsItems[str, float | tuple[float, str]]) -> AcceptValidHeader | AcceptNoHeader: ... + @overload + def __add__(self, other: _ListOrTuple[str | tuple[str, float, str] | list[Any]]) -> AcceptValidHeader | AcceptNoHeader: ... + @overload + def __radd__(self, other: None) -> AcceptNoHeader: ... + @overload + def __radd__(self, other: str) -> AcceptValidHeader | AcceptNoHeader: ... + @overload + def __radd__(self, other: AcceptValidHeader) -> AcceptValidHeader: ... + @overload + def __radd__(self, other: AcceptNoHeader | AcceptInvalidHeader) -> AcceptNoHeader: ... + @overload + def __radd__(self, other: SupportsItems[str, float | tuple[float, str]]) -> AcceptValidHeader | AcceptNoHeader: ... + @overload + def __radd__(self, other: _ListOrTuple[str | tuple[str, float, str] | list[Any]]) -> AcceptValidHeader | AcceptNoHeader: ... + def __bool__(self) -> Literal[False]: ... + def __contains__(self, offer: str) -> Literal[True]: ... + def __iter__(self) -> Iterator[str]: ... + def accept_html(self) -> bool: ... + @property + def accepts_html(self) -> bool: ... + def acceptable_offers(self, offers: Iterable[str | AcceptOffer]) -> list[tuple[str, float]]: ... + @overload + def best_match(self, offers: Iterable[str | tuple[str, float] | list[Any]], default_match: None = None) -> str | None: ... + @overload + def best_match(self, offers: Iterable[str | tuple[str, float] | list[Any]], default_match: str) -> str: ... + def quality(self, offer: str) -> float: ... + +class AcceptNoHeader(_AcceptInvalidOrNoHeader): + @property + def header_value(self) -> None: ... + def __init__(self) -> None: ... + +class AcceptInvalidHeader(_AcceptInvalidOrNoHeader): + @property + def header_value(self) -> str: ... + def __init__(self, header_value: str) -> None: ... + +@overload +def create_accept_header(header_value: None) -> AcceptNoHeader: ... +@overload +def create_accept_header(header_value: str) -> AcceptValidHeader | AcceptInvalidHeader: ... + +class _AcceptProperty: + @overload + def __get__(self, __obj: None, __type: type | None = ...) -> property: ... + @overload + def __get__(self, __obj: Any, __type: type | None = ...) -> AcceptNoHeader | AcceptValidHeader | AcceptInvalidHeader: ... + @overload + def __set__(self, __obj: Any, __value: str | None) -> None: ... + @overload + def __set__(self, __obj: Any, __value: AcceptNoHeader | AcceptValidHeader | AcceptInvalidHeader) -> None: ... + @overload + def __set__(self, __obj: Any, __value: SupportsItems[str, float | tuple[float, str]]) -> None: ... + @overload + def __set__(self, __obj: Any, __value: _ListOrTuple[str | tuple[str, float, str] | list[Any]]) -> None: ... + def __delete__(self, __obj: Any) -> None: ... + +def accept_property() -> _AcceptProperty: ... + +class AcceptCharset: + @classmethod + def parse(cls, value: str) -> Iterator[tuple[str, float]]: ... + +class AcceptCharsetValidHeader(AcceptCharset): + @property + def header_value(self) -> str: ... + @property + def parsed(self) -> list[tuple[str, float]]: ... + def __init__(self, header_value: str) -> None: ... + def copy(self) -> Self: ... + @overload + def __add__(self, other: str | None) -> Self: ... + @overload + def __add__(self, other: AcceptCharsetValidHeader | AcceptCharsetNoHeader | AcceptCharsetInvalidHeader) -> Self: ... + @overload + def __add__(self, other: SupportsItems[str, float]) -> Self: ... + @overload + def __add__(self, other: _ListOrTuple[str | tuple[str, float] | list[Any]]) -> Self: ... + def __bool__(self) -> Literal[True]: ... + def __contains__(self, offer: str) -> bool: ... + def __iter__(self) -> Iterator[str]: ... + @overload + def __radd__(self, other: str | None) -> Self: ... + @overload + def __radd__(self, other: AcceptCharsetValidHeader | AcceptCharsetNoHeader | AcceptCharsetInvalidHeader) -> Self: ... + @overload + def __radd__(self, other: SupportsItems[str, float]) -> Self: ... + @overload + def __radd__(self, other: _ListOrTuple[str | tuple[str, float] | list[Any]]) -> Self: ... + def acceptable_offers(self, offers: Iterable[str]) -> list[tuple[str, float]]: ... + @overload + def best_match(self, offers: Iterable[str], default_match: None = None) -> str | None: ... + @overload + def best_match(self, offers: Iterable[str], default_match: str) -> str: ... + def quality(self, offer: str) -> float | None: ... + +class _AcceptCharsetInvalidOrNoHeader(AcceptCharset): + @property + def parsed(self) -> None: ... + def __bool__(self) -> Literal[False]: ... + def __contains__(self, offer: str) -> Literal[True]: ... + def __iter__(self) -> Iterator[str]: ... + @overload + def __add__(self, other: None) -> AcceptCharsetNoHeader: ... + @overload + def __add__(self, other: str) -> AcceptCharsetValidHeader | AcceptCharsetNoHeader: ... + @overload + def __add__(self, other: AcceptCharsetValidHeader) -> AcceptCharsetValidHeader: ... + @overload + def __add__(self, other: AcceptCharsetNoHeader | AcceptCharsetInvalidHeader) -> AcceptCharsetNoHeader: ... + @overload + def __add__(self, other: SupportsItems[str, float]) -> AcceptCharsetValidHeader | AcceptCharsetNoHeader: ... + @overload + def __add__( + self, other: _ListOrTuple[str | tuple[str, float] | list[Any]] + ) -> AcceptCharsetValidHeader | AcceptCharsetNoHeader: ... + @overload + def __radd__(self, other: None) -> AcceptCharsetNoHeader: ... + @overload + def __radd__(self, other: str) -> AcceptCharsetValidHeader | AcceptCharsetNoHeader: ... + @overload + def __radd__(self, other: AcceptCharsetValidHeader) -> AcceptCharsetValidHeader: ... + @overload + def __radd__(self, other: AcceptCharsetNoHeader | AcceptCharsetInvalidHeader) -> AcceptCharsetNoHeader: ... + @overload + def __radd__(self, other: SupportsItems[str, float]) -> AcceptCharsetValidHeader | AcceptCharsetNoHeader: ... + @overload + def __radd__( + self, other: _ListOrTuple[str | tuple[str, float] | list[Any]] + ) -> AcceptCharsetValidHeader | AcceptCharsetNoHeader: ... + def copy(self) -> Self: ... + def acceptable_offers(self, offers: Iterable[str]) -> list[tuple[str, float]]: ... + @overload + def best_match(self, offers: Iterable[str], default_match: None = None) -> str | None: ... + @overload + def best_match(self, offers: Iterable[str], default_match: str) -> str: ... + def quality(self, offer: str) -> float | None: ... + +class AcceptCharsetNoHeader(_AcceptCharsetInvalidOrNoHeader): + @property + def header_value(self) -> None: ... + def __init__(self) -> None: ... + +class AcceptCharsetInvalidHeader(_AcceptCharsetInvalidOrNoHeader): + @property + def header_value(self) -> str: ... + def __init__(self, header_value: str) -> None: ... + +@overload +def create_accept_charset_header(header_value: None) -> AcceptCharsetNoHeader: ... +@overload +def create_accept_charset_header(header_value: str) -> AcceptCharsetValidHeader | AcceptCharsetInvalidHeader: ... + +class _AcceptCharsetProperty: + @overload + def __get__(self, __obj: None, __type: type | None = ...) -> property: ... + @overload + def __get__( + self, __obj: Any, __type: type | None = ... + ) -> AcceptCharsetNoHeader | AcceptCharsetValidHeader | AcceptCharsetInvalidHeader: ... + @overload + def __set__(self, __obj: Any, __value: str | None) -> None: ... + @overload + def __set__( + self, __obj: Any, __value: AcceptCharsetNoHeader | AcceptCharsetValidHeader | AcceptCharsetInvalidHeader + ) -> None: ... + @overload + def __set__(self, __obj: Any, __value: SupportsItems[str, float]) -> None: ... + @overload + def __set__(self, __obj: Any, __value: _ListOrTuple[str | tuple[str, float] | list[Any]]) -> None: ... + def __delete__(self, __obj: Any) -> None: ... + +def accept_charset_property() -> _AcceptCharsetProperty: ... + +class AcceptEncoding: + @classmethod + def parse(cls, value: str) -> Iterator[tuple[str, float]]: ... + +class AcceptEncodingValidHeader(AcceptEncoding): + @property + def header_value(self) -> str: ... + @property + def parsed(self) -> list[tuple[str, float]]: ... + def __init__(self, header_value: str) -> None: ... + def copy(self) -> Self: ... + @overload + def __add__(self, other: str | None) -> Self: ... + @overload + def __add__(self, other: AcceptEncodingValidHeader | AcceptEncodingNoHeader | AcceptEncodingInvalidHeader) -> Self: ... + @overload + def __add__(self, other: SupportsItems[str, float]) -> Self: ... + @overload + def __add__(self, other: _ListOrTuple[str | tuple[str, float] | list[Any]]) -> Self: ... + def __bool__(self) -> Literal[True]: ... + def __contains__(self, offer: str) -> bool: ... + def __iter__(self) -> Iterator[str]: ... + @overload + def __radd__(self, other: str | None) -> Self: ... + @overload + def __radd__(self, other: AcceptEncodingValidHeader | AcceptEncodingNoHeader | AcceptEncodingInvalidHeader) -> Self: ... + @overload + def __radd__(self, other: SupportsItems[str, float]) -> Self: ... + @overload + def __radd__(self, other: _ListOrTuple[str | tuple[str, float] | list[Any]]) -> Self: ... + def acceptable_offers(self, offers: Iterable[str]) -> list[tuple[str, float]]: ... + @overload + def best_match(self, offers: Iterable[str], default_match: None = None) -> str | None: ... + @overload + def best_match(self, offers: Iterable[str], default_match: str) -> str: ... + def quality(self, offer: str) -> float | None: ... + +class _AcceptEncodingInvalidOrNoHeader(AcceptEncoding): + @property + def parsed(self) -> None: ... + def __bool__(self) -> Literal[False]: ... + def __contains__(self, offer: str) -> Literal[True]: ... + def __iter__(self) -> Iterator[str]: ... + @overload + def __add__(self, other: None) -> AcceptEncodingNoHeader: ... + @overload + def __add__(self, other: str) -> AcceptEncodingValidHeader | AcceptEncodingNoHeader: ... + @overload + def __add__(self, other: AcceptEncodingValidHeader) -> AcceptEncodingValidHeader: ... + @overload + def __add__(self, other: AcceptEncodingNoHeader | AcceptEncodingInvalidHeader) -> AcceptEncodingNoHeader: ... + @overload + def __add__(self, other: SupportsItems[str, float]) -> AcceptEncodingValidHeader | AcceptEncodingNoHeader: ... + @overload + def __add__( + self, other: _ListOrTuple[str | tuple[str, float] | list[Any]] + ) -> AcceptEncodingValidHeader | AcceptEncodingNoHeader: ... + @overload + def __radd__(self, other: None) -> AcceptEncodingNoHeader: ... + @overload + def __radd__(self, other: str) -> AcceptEncodingValidHeader | AcceptEncodingNoHeader: ... + @overload + def __radd__(self, other: AcceptEncodingValidHeader) -> AcceptEncodingValidHeader: ... + @overload + def __radd__(self, other: AcceptEncodingNoHeader | AcceptEncodingInvalidHeader) -> AcceptEncodingNoHeader: ... + @overload + def __radd__(self, other: SupportsItems[str, float]) -> AcceptEncodingValidHeader | AcceptEncodingNoHeader: ... + @overload + def __radd__( + self, other: _ListOrTuple[str | tuple[str, float] | list[Any]] + ) -> AcceptEncodingValidHeader | AcceptEncodingNoHeader: ... + def copy(self) -> Self: ... + def acceptable_offers(self, offers: Iterable[str]) -> list[tuple[str, float]]: ... + @overload + def best_match(self, offers: Iterable[str], default_match: None = None) -> str | None: ... + @overload + def best_match(self, offers: Iterable[str], default_match: str) -> str: ... + def quality(self, offer: str) -> float | None: ... + +class AcceptEncodingNoHeader(_AcceptEncodingInvalidOrNoHeader): + @property + def header_value(self) -> None: ... + def __init__(self) -> None: ... + +class AcceptEncodingInvalidHeader(_AcceptEncodingInvalidOrNoHeader): + @property + def header_value(self) -> str: ... + def __init__(self, header_value: str) -> None: ... + +@overload +def create_accept_encoding_header(header_value: None) -> AcceptEncodingNoHeader: ... +@overload +def create_accept_encoding_header(header_value: str) -> AcceptEncodingValidHeader | AcceptEncodingInvalidHeader: ... + +class _AcceptEncodingProperty: + @overload + def __get__(self, __obj: None, __type: type | None = ...) -> property: ... + @overload + def __get__( + self, __obj: Any, __type: type | None = ... + ) -> AcceptEncodingNoHeader | AcceptEncodingValidHeader | AcceptEncodingInvalidHeader: ... + @overload + def __set__(self, __obj: Any, __value: str | None) -> None: ... + @overload + def __set__( + self, __obj: Any, __value: AcceptEncodingNoHeader | AcceptEncodingValidHeader | AcceptEncodingInvalidHeader + ) -> None: ... + @overload + def __set__(self, __obj: Any, __value: SupportsItems[str, float]) -> None: ... + @overload + def __set__(self, __obj: Any, __value: _ListOrTuple[str | tuple[str, float] | list[Any]]) -> None: ... + def __delete__(self, __obj: Any) -> None: ... + +def accept_encoding_property() -> _AcceptEncodingProperty: ... + +class AcceptLanguage: + @classmethod + def parse(cls, value: str) -> Iterator[tuple[str, float]]: ... + +class AcceptLanguageValidHeader(AcceptLanguage): + @property + def header_value(self) -> str: ... + @property + def parsed(self) -> list[tuple[str, float]]: ... + def __init__(self, header_value: str) -> None: ... + def copy(self) -> Self: ... + @overload + def __add__(self, other: str | None) -> Self: ... + @overload + def __add__(self, other: AcceptLanguageValidHeader | AcceptLanguageNoHeader | AcceptLanguageInvalidHeader) -> Self: ... + @overload + def __add__(self, other: SupportsItems[str, float]) -> Self: ... + @overload + def __add__(self, other: _ListOrTuple[str | tuple[str, float] | list[Any]]) -> Self: ... + def __bool__(self) -> Literal[True]: ... + def __contains__(self, offer: str) -> bool: ... + def __iter__(self) -> Iterator[str]: ... + @overload + def __radd__(self, other: str | None) -> Self: ... + @overload + def __radd__(self, other: AcceptLanguageValidHeader | AcceptLanguageNoHeader | AcceptLanguageInvalidHeader) -> Self: ... + @overload + def __radd__(self, other: SupportsItems[str, float]) -> Self: ... + @overload + def __radd__(self, other: _ListOrTuple[str | tuple[str, float] | list[Any]]) -> Self: ... + def basic_filtering(self, language_tags: Iterable[str]) -> list[tuple[str, float]]: ... + @overload + def best_match(self, offers: Iterable[str], default_match: None = None) -> str | None: ... + @overload + def best_match(self, offers: Iterable[str], default_match: str) -> str: ... + @overload + def lookup( + self, + language_tags: Iterable[str], + default_range: str | None = None, + default_tag: str = ..., + default: str | Callable[[], str | None] | None = None, + ) -> str | None: ... + @overload + def lookup( + self, + language_tags: Iterable[str], + default_range: str | None = None, + default_tag: str | None = None, + default: str | Callable[[], str | None] = ..., + ) -> str | None: ... + def quality(self, offer: str) -> float | None: ... + +class _AcceptLanguageInvalidOrNoHeader(AcceptLanguage): + @property + def parsed(self) -> None: ... + def __bool__(self) -> Literal[False]: ... + def __contains__(self, offer: str) -> Literal[True]: ... + def __iter__(self) -> Iterator[str]: ... + @overload + def __add__(self, other: None) -> AcceptLanguageNoHeader: ... + @overload + def __add__(self, other: str) -> AcceptLanguageValidHeader | AcceptLanguageNoHeader: ... + @overload + def __add__(self, other: AcceptLanguageValidHeader) -> AcceptLanguageValidHeader: ... + @overload + def __add__(self, other: AcceptLanguageNoHeader | AcceptLanguageInvalidHeader) -> AcceptLanguageNoHeader: ... + @overload + def __add__(self, other: SupportsItems[str, float]) -> AcceptLanguageValidHeader | AcceptLanguageNoHeader: ... + @overload + def __add__( + self, other: _ListOrTuple[str | tuple[str, float] | list[Any]] + ) -> AcceptLanguageValidHeader | AcceptLanguageNoHeader: ... + @overload + def __radd__(self, other: None) -> AcceptLanguageNoHeader: ... + @overload + def __radd__(self, other: str) -> AcceptLanguageValidHeader | AcceptLanguageNoHeader: ... + @overload + def __radd__(self, other: AcceptLanguageValidHeader) -> AcceptLanguageValidHeader: ... + @overload + def __radd__(self, other: AcceptLanguageNoHeader | AcceptLanguageInvalidHeader) -> AcceptLanguageNoHeader: ... + @overload + def __radd__(self, other: SupportsItems[str, float]) -> AcceptLanguageValidHeader | AcceptLanguageNoHeader: ... + @overload + def __radd__( + self, other: _ListOrTuple[str | tuple[str, float] | list[Any]] + ) -> AcceptLanguageValidHeader | AcceptLanguageNoHeader: ... + def copy(self) -> Self: ... + def basic_filtering(self, language_tags: Iterable[str]) -> list[tuple[str, float]]: ... + @overload + def best_match(self, offers: Iterable[str], default_match: None = None) -> str | None: ... + @overload + def best_match(self, offers: Iterable[str], default_match: str) -> str: ... + @overload + def lookup( + self, + language_tags: Iterable[str], + default_range: str | None = None, + default_tag: str = ..., + default: str | Callable[[], str | None] | None = None, + ) -> str | None: ... + @overload + def lookup( + self, + language_tags: Iterable[str], + default_range: str | None = None, + default_tag: str | None = None, + default: str | Callable[[], str | None] = ..., + ) -> str | None: ... + def quality(self, offer: str) -> float | None: ... + +class AcceptLanguageNoHeader(_AcceptLanguageInvalidOrNoHeader): + def __init__(self) -> None: ... + @property + def header_value(self) -> None: ... + +class AcceptLanguageInvalidHeader(_AcceptLanguageInvalidOrNoHeader): + def __init__(self, header_value: str) -> None: ... + @property + def header_value(self) -> str: ... + +@overload +def create_accept_language_header(header_value: None) -> AcceptLanguageNoHeader: ... +@overload +def create_accept_language_header(header_value: str) -> AcceptLanguageValidHeader | AcceptLanguageInvalidHeader: ... + +class _AcceptLanguageProperty: + @overload + def __get__(self, __obj: None, __type: type | None = ...) -> property: ... + @overload + def __get__( + self, __obj: Any, __type: type | None = ... + ) -> AcceptLanguageNoHeader | AcceptLanguageValidHeader | AcceptLanguageInvalidHeader: ... + @overload + def __set__(self, __obj: Any, __value: str | None) -> None: ... + @overload + def __set__( + self, __obj: Any, __value: AcceptLanguageNoHeader | AcceptLanguageValidHeader | AcceptLanguageInvalidHeader + ) -> None: ... + @overload + def __set__(self, __obj: Any, __value: SupportsItems[str, float]) -> None: ... + @overload + def __set__(self, __obj: Any, __value: _ListOrTuple[str | tuple[str, float] | list[Any]]) -> None: ... + def __delete__(self, __obj: Any) -> None: ... + +def accept_language_property() -> _AcceptLanguageProperty: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/byterange.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/byterange.pyi new file mode 100644 index 000000000..c63cf6257 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/byterange.pyi @@ -0,0 +1,28 @@ +from collections.abc import Iterator +from typing import overload +from typing_extensions import Self + +class Range: + start: int | None + end: int | None + @overload + def __init__(self, start: None, end: None): ... + @overload + def __init__(self, start: int, end: int | None): ... + def range_for_length(self, length: int | None) -> tuple[int, int] | None: ... + def content_range(self, length: int | None) -> ContentRange | None: ... + def __iter__(self) -> Iterator[int | None]: ... + @classmethod + def parse(cls, header: str | None) -> Self: ... + +class ContentRange: + start: int | None + stop: int | None + length: int | None + @overload + def __init__(self, start: None, stop: None, length: int | None): ... + @overload + def __init__(self, start: int, stop: int, length: int | None): ... + def __iter__(self) -> Iterator[int | None]: ... + @classmethod + def parse(cls, value: str | None) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/cachecontrol.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/cachecontrol.pyi new file mode 100644 index 000000000..9e42ae605 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/cachecontrol.pyi @@ -0,0 +1,96 @@ +from collections.abc import Callable, MutableMapping +from typing import Any, Generic, TypeVar, overload +from typing_extensions import Literal, Self, TypeAlias + +from webob.request import Request +from webob.response import Response + +_T = TypeVar("_T") +_KT = TypeVar("_KT") +_VT = TypeVar("_VT") +_NoneLiteral = TypeVar("_NoneLiteral") +_Type: TypeAlias = type + +class UpdateDict(dict[_KT, _VT]): + updated: Callable[..., Any] | None + updated_args: tuple[Any, ...] | None + +class exists_property: + prop: str + type: str | None + def __init__(self, prop: str, type: str | None = None): ... + @overload + def __get__(self, obj: None, type: _Type | None = None) -> Self: ... + @overload + def __get__(self, obj: Any, type: _Type | None = None) -> bool: ... + def __set__(self, obj: Any, value: bool) -> None: ... + def __delete__(self, obj: Any) -> None: ... + +class value_property(Generic[_T, _NoneLiteral]): + prop: str + default: _T | None + none: _NoneLiteral + type: str | None + @overload + def __init__(self, prop: str, default: None = None, none: None = None, type: str | None = None): ... + @overload + def __init__(self, prop: str, default: _T, none: _NoneLiteral, type: str | None = None): ... + @overload + def __get__(self, obj: None, type: _Type | None = None) -> Self: ... + @overload + def __get__(self, obj: Any, type: _Type | None = None) -> _T | _NoneLiteral | None: ... + def __set__(self, obj: Any, value: _T | Literal[True]) -> None: ... + def __delete__(self, obj: Any) -> None: ... + +class _IntValueProperty(value_property[int, _NoneLiteral]): + def __set__(self, obj: Any, value: int) -> None: ... + +class _BaseCacheControl: + update_dict = UpdateDict + properties: MutableMapping[str, Any] + type: Literal["request", "response"] | None + @classmethod + @overload + def parse(cls, header: str, updates_to: None = None, type: None = None) -> _AnyCacheControl: ... + @classmethod + @overload + def parse(cls, header: str, updates_to: Request, type: Literal["request"]) -> _RequestCacheControl: ... + @classmethod + @overload + def parse(cls, header: str, updates_to: Response, type: Literal["response"]) -> _ResponseCacheControl: ... + + no_cache: value_property[str, Literal["*"]] + no_store: exists_property + no_transform: exists_property + max_age: _IntValueProperty[Literal[-1]] + def copy(self) -> Self: ... + +class _RequestCacheControl(_BaseCacheControl): + type: Literal["request"] + max_stale: _IntValueProperty[Literal["*"]] + min_fresh: _IntValueProperty[None] + only_if_cached: exists_property + +class _ResponseCacheControl(_BaseCacheControl): + type: Literal["response"] + public: exists_property + private: value_property[str, Literal["*"]] + must_revalidate: exists_property + proxy_revalidate: exists_property + s_maxage: _IntValueProperty[None] + s_max_age: _IntValueProperty[None] + stale_while_revalidate: _IntValueProperty[None] + stale_if_error: _IntValueProperty[None] + +class _AnyCacheControl(_RequestCacheControl, _ResponseCacheControl): + type: None # type:ignore[assignment] + +class CacheControl(_AnyCacheControl): + @overload + def __init__(self: _AnyCacheControl, properties: MutableMapping[str, Any], type: None) -> None: ... + @overload + def __init__(self: _RequestCacheControl, properties: MutableMapping[str, Any], type: Literal["request"]) -> None: ... + @overload + def __init__(self: _ResponseCacheControl, properties: MutableMapping[str, Any], type: Literal["response"]) -> None: ... + +def serialize_cache_control(properties: MutableMapping[str, Any] | _BaseCacheControl) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/client.pyi new file mode 100644 index 000000000..81f54880b --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/client.pyi @@ -0,0 +1,12 @@ +from _typeshed.wsgi import StartResponse, WSGIEnvironment +from collections.abc import Iterable +from http.client import HTTPMessage +from typing import ClassVar + +class SendRequest: + def __init__(self, HTTPConnection=..., HTTPSConnection=...) -> None: ... + def __call__(self, environ: WSGIEnvironment, start_response: StartResponse) -> Iterable[bytes]: ... + filtered_headers: ClassVar[tuple[str, ...]] + def parse_headers(self, message: HTTPMessage) -> list[tuple[str, str]]: ... + +send_request_app: SendRequest diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/cookies.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/cookies.pyi new file mode 100644 index 000000000..f0bfb5830 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/cookies.pyi @@ -0,0 +1,148 @@ +from _typeshed import Incomplete +from _typeshed.wsgi import WSGIEnvironment +from collections.abc import ItemsView, Iterator, KeysView, MutableMapping, ValuesView +from datetime import date, datetime, timedelta +from typing import TypeVar, overload +from typing_extensions import Literal + +from webob.descriptors import _AsymmetricProperty + +_T = TypeVar("_T") + +class RequestCookies(MutableMapping[str, str]): + def __init__(self, environ: WSGIEnvironment) -> None: ... + def __setitem__(self, name: str, value: str) -> None: ... + def __getitem__(self, name: str) -> str: ... + @overload + def get(self, name: str, default: None = None) -> str | None: ... + @overload + def get(self, name: str, default: str | _T) -> str | _T: ... + def __delitem__(self, name: str) -> None: ... + def keys(self) -> KeysView[str]: ... + def values(self) -> ValuesView[str]: ... + def items(self) -> ItemsView[str, str]: ... + def __contains__(self, name: object) -> bool: ... + def __iter__(self) -> Iterator[str]: ... + def __len__(self) -> int: ... + def clear(self) -> None: ... + +class Cookie(dict[str, Morsel]): + def __init__(self, input: str | None = None) -> None: ... + def load(self, data: str) -> None: ... + def add(self, key: str | bytes, val: str | bytes) -> Morsel: ... + def __setitem__(self, key: str | bytes, val: str | bytes) -> Morsel: ... # type:ignore[override] + def serialize(self, full: bool = True) -> str: ... + def values(self) -> list[Morsel]: ... # type:ignore[override] + def __str__(self, full: bool = True) -> str: ... + +class Morsel(dict[bytes, bytes | bool | None]): + name: bytes + value: bytes + def __init__(self, name: str | bytes, value: str | bytes) -> None: ... + @property + def path(self) -> bytes | None: ... + @path.setter + def path(self, v: bytes | None) -> None: ... + @property + def domain(self) -> bytes | None: ... + @domain.setter + def domain(self, v: bytes | None) -> None: ... + @property + def comment(self) -> bytes | None: ... + @comment.setter + def comment(self, v: bytes | None) -> None: ... + expires: _AsymmetricProperty[bytes | None, datetime | date | timedelta | int | str | bytes | None] + max_age: _AsymmetricProperty[bytes | None, timedelta | int | str | bytes] + @property + def httponly(self) -> bool | None: ... + @httponly.setter + def httponly(self, v: bool) -> None: ... + @property + def secure(self) -> bool | None: ... + @secure.setter + def secure(self, v: bool) -> None: ... + samesite: _AsymmetricProperty[bytes | None, Literal["strict", "lax", "none"] | None] + def serialize(self, full: bool = True) -> str: ... + def __str__(self, full: bool = True) -> str: ... + +def make_cookie( + name: str | bytes, + value: str | bytes | None, + max_age: int | timedelta | None = None, + path: str = "/", + domain: str | None = None, + secure: bool = False, + httponly: bool = False, + comment: str | None = None, + samesite: Literal["strict", "lax", "none"] | None = None, +) -> str: ... + +class JSONSerializer: + def dumps(self, appstruct): ... + def loads(self, bstruct): ... + +class Base64Serializer: + serializer: Incomplete + def __init__(self, serializer: Incomplete | None = None) -> None: ... + def dumps(self, appstruct): ... + def loads(self, bstruct): ... + +class SignedSerializer: + salt: Incomplete + secret: Incomplete + hashalg: Incomplete + salted_secret: Incomplete + digestmod: Incomplete + digest_size: Incomplete + serializer: Incomplete + def __init__(self, secret, salt, hashalg: str = "sha512", serializer: Incomplete | None = None) -> None: ... + def dumps(self, appstruct): ... + def loads(self, bstruct): ... + +class CookieProfile: + cookie_name: Incomplete + secure: Incomplete + max_age: Incomplete + httponly: Incomplete + samesite: Incomplete + path: Incomplete + domains: Incomplete + serializer: Incomplete + request: Incomplete + def __init__( + self, + cookie_name, + secure: bool = False, + max_age: Incomplete | None = None, + httponly: Incomplete | None = None, + samesite: Incomplete | None = None, + path: str = "/", + domains: Incomplete | None = None, + serializer: Incomplete | None = None, + ) -> None: ... + def __call__(self, request): ... + def bind(self, request): ... + def get_value(self): ... + def set_cookies(self, response, value, domains=..., max_age=..., path=..., secure=..., httponly=..., samesite=...): ... + def get_headers(self, value, domains=..., max_age=..., path=..., secure=..., httponly=..., samesite=...): ... + +class SignedCookieProfile(CookieProfile): + secret: Incomplete + salt: Incomplete + hashalg: Incomplete + original_serializer: Incomplete + def __init__( + self, + secret, + salt, + cookie_name, + secure: bool = False, + max_age: Incomplete | None = None, + httponly: bool = False, + samesite: Incomplete | None = None, + path: str = "/", + domains: Incomplete | None = None, + hashalg: str = "sha512", + serializer: Incomplete | None = None, + ) -> None: ... + def bind(self, request): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/datetime_utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/datetime_utils.pyi new file mode 100644 index 000000000..6a57d83d9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/datetime_utils.pyi @@ -0,0 +1,23 @@ +from datetime import datetime, timedelta, tzinfo + +class _UTC(tzinfo): + def dst(self, dt: datetime | None) -> timedelta: ... + def utcoffset(self, dt: datetime | None) -> timedelta: ... + def tzname(self, dt: datetime | None) -> str: ... + +UTC: _UTC + +def timedelta_to_seconds(td: timedelta) -> int: ... + +day: timedelta +week: timedelta +hour: timedelta +minute: timedelta +second: timedelta +month: timedelta +year: timedelta + +def parse_date(value: str | bytes) -> datetime | None: ... +def serialize_date(dt) -> str: ... +def parse_date_delta(value: str | bytes) -> datetime | None: ... +def serialize_date_delta(value) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/dec.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/dec.pyi new file mode 100644 index 000000000..a08ed4926 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/dec.pyi @@ -0,0 +1,49 @@ +from _typeshed import Incomplete +from _typeshed.wsgi import WSGIApplication +from typing import ClassVar, overload +from typing_extensions import Self + +from webob.request import Request + +class wsgify: + RequestClass: ClassVar[type[Request]] + func: Incomplete + args: Incomplete + kwargs: Incomplete + middleware_wraps: Incomplete + def __init__( + self, + func: Incomplete | None = None, + RequestClass: Incomplete | None = None, + args=..., + kwargs: Incomplete | None = None, + middleware_wraps: Incomplete | None = None, + ) -> None: ... + @overload + def __get__(self, obj: None, type: type | None = None) -> Self: ... + @overload + def __get__(self, obj: object, type: type | None = None) -> WSGIApplication: ... + def __call__(self, req, *args, **kw): ... + def get(self, url, **kw): ... + def post(self, url, POST: Incomplete | None = None, **kw): ... + def request(self, url, **kw): ... + def call_func(self, req, *args, **kwargs): ... + def clone(self, func: Incomplete | None = None, **kw): ... + @property + def undecorated(self): ... + @classmethod + def middleware(cls, middle_func: Incomplete | None = None, app: Incomplete | None = None, **kw): ... + +class _UnboundMiddleware: + wrapper_class: Incomplete + app: Incomplete + kw: Incomplete + def __init__(self, wrapper_class, app, kw) -> None: ... + def __call__(self, func, app: Incomplete | None = None): ... + +class _MiddlewareFactory: + wrapper_class: Incomplete + middleware: Incomplete + kw: Incomplete + def __init__(self, wrapper_class, middleware, kw) -> None: ... + def __call__(self, app: Incomplete | None = None, **config): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/descriptors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/descriptors.pyi new file mode 100644 index 000000000..6119896b6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/descriptors.pyi @@ -0,0 +1,58 @@ +from _typeshed import Incomplete +from collections.abc import Iterable +from datetime import date, datetime, timedelta +from time import _TimeTuple, struct_time +from typing import Any, Generic, NamedTuple, TypeVar, overload + +_GetterReturnType = TypeVar("_GetterReturnType") +_SetterValueType = TypeVar("_SetterValueType") + +class _AsymmetricProperty(Generic[_GetterReturnType, _SetterValueType]): + @overload + def __get__(self, __obj: None, __type: type | None = ...) -> property: ... + @overload + def __get__(self, __obj: Any, __type: type | None = ...) -> _GetterReturnType: ... + def __set__(self, __obj: Any, __value: _SetterValueType) -> None: ... + +class _AsymmetricPropertyWithDelete(_AsymmetricProperty[_GetterReturnType, _SetterValueType]): + def __delete__(self, __obj: Any) -> None: ... + +class _StringProperty(_AsymmetricPropertyWithDelete[str | None, str | None]): ... +class _ListProperty(_AsymmetricPropertyWithDelete[tuple[str, ...] | None, Iterable[str] | str | None]): ... +class _DateProperty( + _AsymmetricPropertyWithDelete[datetime | None, date | datetime | timedelta | _TimeTuple | struct_time | float | str | None] +): ... + +def environ_getter(key, default=..., rfc_section: Incomplete | None = None): ... +def environ_decoder(key, default=..., rfc_section: Incomplete | None = None, encattr: Incomplete | None = None): ... +def upath_property(key): ... +def deprecated_property(attr, name, text, version): ... +def header_getter(header: str, rfc_section: str) -> _StringProperty: ... +def converter(prop, parse, serialize, convert_name: Incomplete | None = None): ... +def list_header(header: str, rfc_section: str) -> _ListProperty: ... +def parse_list(value): ... +def serialize_list(value): ... +def converter_date(prop): ... +def date_header(header: str, rfc_section: str) -> _DateProperty: ... +def parse_etag_response(value, strong: bool = False): ... +def serialize_etag_response(value): ... +def serialize_if_range(value): ... +def parse_range(value): ... +def serialize_range(value): ... +def parse_int(value): ... +def parse_int_safe(value): ... + +serialize_int = str + +def parse_content_range(value): ... +def serialize_content_range(value): ... +def parse_auth_params(params): ... + +known_auth_schemes: dict[str, None] + +class _authorization(NamedTuple): + authtype: str + params: dict[str, str] | str + +def parse_auth(val): ... +def serialize_auth(val): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/etag.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/etag.pyi new file mode 100644 index 000000000..800570393 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/etag.pyi @@ -0,0 +1,53 @@ +from collections.abc import Collection +from datetime import datetime +from typing import Any, overload +from typing_extensions import TypeAlias + +from webob.response import Response + +_ETag: TypeAlias = _AnyETag | _NoETag | ETagMatcher + +class _ETagProperty: + @overload + def __get__(self, __obj: None, __type: type | None = ...) -> property: ... + @overload + def __get__(self, __obj: Any, __type: type | None = ...) -> _ETag: ... + @overload + def __set__(self, __obj: Any, __value: str | None) -> None: ... + @overload + def __set__(self, __obj: Any, __value: _ETag) -> None: ... + def __delete__(self, __obj: Any) -> None: ... + +def etag_property(key: str, default: _ETag, rfc_section: str, strong: bool = True) -> _ETagProperty: ... + +class _AnyETag: + def __bool__(self) -> bool: ... + def __contains__(self, other: str) -> bool: ... + +AnyETag: _AnyETag + +class _NoETag: + def __bool__(self) -> bool: ... + def __contains__(self, other: str) -> bool: ... + +NoETag: _NoETag + +class ETagMatcher: + etags: Collection[str] + def __init__(self, etags: Collection[str]) -> None: ... + def __contains__(self, other: str) -> bool: ... + @classmethod + def parse(cls, value: str, strong: bool = True) -> ETagMatcher | _AnyETag: ... + +class IfRange: + etag: _ETag + def __init__(self, etag: _ETag) -> None: ... + @classmethod + def parse(cls, value: str) -> IfRange | IfRangeDate: ... + def __contains__(self, resp: Response) -> bool: ... + def __bool__(self) -> bool: ... + +class IfRangeDate: + date: datetime + def __init__(self, date: datetime) -> None: ... + def __contains__(self, resp: Response) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/exc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/exc.pyi new file mode 100644 index 000000000..b662ea0ff --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/exc.pyi @@ -0,0 +1,126 @@ +from _typeshed import SupportsItems, SupportsKeysAndGetItem +from _typeshed.wsgi import StartResponse, WSGIApplication, WSGIEnvironment +from collections.abc import Iterable +from string import Template +from typing import Any, Protocol +from typing_extensions import Literal, Self + +from webob.response import Response + +class _JSONFormatter(Protocol): + def __call__(self, body: str, status: str, title: str, environ: WSGIEnvironment) -> str: ... + +class HTTPException(Exception): + wsgi_response: Response + def __init__(self, message: str, wsgi_response: Response) -> None: ... + def __call__(self, environ: WSGIEnvironment, start_response: StartResponse) -> Iterable[bytes]: ... + +class WSGIHTTPException(Response, HTTPException): + code: int + title: str + explanation: str + body_template_obj: Template + plain_template_obj: Template + html_template_obj: Template + empty_body: bool + detail: str | None + comment: str | None + def __init__( + self, + detail: str | None = None, + headers: SupportsItems[str, str] | SupportsKeysAndGetItem[str, str] | Iterable[tuple[str, str]] | None = None, + comment: str | None = None, + body_template: str | None = None, + json_formatter: _JSONFormatter | None = None, + **kw: Any, + ) -> None: ... + def plain_body(self, environ: WSGIEnvironment) -> str: ... + def html_body(self, environ: WSGIEnvironment) -> str: ... + def json_formatter(self, body: str, status: str, title: str, environ: WSGIEnvironment) -> str: ... + def json_body(self, environ: WSGIEnvironment) -> str: ... + def generate_response(self, environ: WSGIEnvironment, start_response: StartResponse) -> Iterable[bytes]: ... + @property + def wsgi_response(self) -> Self: ... # type:ignore[override] + def __str__(self) -> str: ... # type:ignore[override] # noqaY029 + +class HTTPError(WSGIHTTPException): ... +class HTTPRedirection(WSGIHTTPException): ... +class HTTPOk(WSGIHTTPException): ... +class HTTPCreated(HTTPOk): ... +class HTTPAccepted(HTTPOk): ... +class HTTPNonAuthoritativeInformation(HTTPOk): ... + +class HTTPNoContent(HTTPOk): + empty_body: Literal[True] + +class HTTPResetContent(HTTPOk): + empty_body: Literal[True] + +class HTTPPartialContent(HTTPOk): ... + +class _HTTPMove(HTTPRedirection): + explanation: str + add_slash: bool + def __init__( + self, + detail: str | None = None, + headers: str | None = None, + comment: str | None = None, + body_template: str | None = None, + location: str | None = None, + add_slash: bool = False, + ) -> None: ... + +class HTTPMultipleChoices(_HTTPMove): ... +class HTTPMovedPermanently(_HTTPMove): ... +class HTTPFound(_HTTPMove): ... +class HTTPSeeOther(_HTTPMove): ... + +class HTTPNotModified(HTTPRedirection): + empty_body: Literal[True] + +class HTTPUseProxy(_HTTPMove): ... +class HTTPTemporaryRedirect(_HTTPMove): ... +class HTTPPermanentRedirect(_HTTPMove): ... +class HTTPClientError(HTTPError): ... +class HTTPBadRequest(HTTPClientError): ... +class HTTPUnauthorized(HTTPClientError): ... +class HTTPPaymentRequired(HTTPClientError): ... +class HTTPForbidden(HTTPClientError): ... +class HTTPNotFound(HTTPClientError): ... +class HTTPMethodNotAllowed(HTTPClientError): ... +class HTTPNotAcceptable(HTTPClientError): ... +class HTTPProxyAuthenticationRequired(HTTPClientError): ... +class HTTPRequestTimeout(HTTPClientError): ... +class HTTPConflict(HTTPClientError): ... +class HTTPGone(HTTPClientError): ... +class HTTPLengthRequired(HTTPClientError): ... +class HTTPPreconditionFailed(HTTPClientError): ... +class HTTPRequestEntityTooLarge(HTTPClientError): ... +class HTTPRequestURITooLong(HTTPClientError): ... +class HTTPUnsupportedMediaType(HTTPClientError): ... +class HTTPRequestRangeNotSatisfiable(HTTPClientError): ... +class HTTPExpectationFailed(HTTPClientError): ... +class HTTPUnprocessableEntity(HTTPClientError): ... +class HTTPLocked(HTTPClientError): ... +class HTTPFailedDependency(HTTPClientError): ... +class HTTPPreconditionRequired(HTTPClientError): ... +class HTTPTooManyRequests(HTTPClientError): ... +class HTTPRequestHeaderFieldsTooLarge(HTTPClientError): ... +class HTTPUnavailableForLegalReasons(HTTPClientError): ... +class HTTPServerError(HTTPError): ... +class HTTPInternalServerError(HTTPServerError): ... +class HTTPNotImplemented(HTTPServerError): ... +class HTTPBadGateway(HTTPServerError): ... +class HTTPServiceUnavailable(HTTPServerError): ... +class HTTPGatewayTimeout(HTTPServerError): ... +class HTTPVersionNotSupported(HTTPServerError): ... +class HTTPInsufficientStorage(HTTPServerError): ... +class HTTPNetworkAuthenticationRequired(HTTPServerError): ... + +class HTTPExceptionMiddleware: + application: WSGIApplication + def __init__(self, application: WSGIApplication) -> None: ... + def __call__(self, environ: WSGIEnvironment, start_response: StartResponse) -> Iterable[bytes]: ... + +status_map: dict[int, WSGIHTTPException] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/headers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/headers.pyi new file mode 100644 index 000000000..35859b327 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/headers.pyi @@ -0,0 +1,17 @@ +from _typeshed.wsgi import WSGIEnvironment +from collections.abc import Iterator, MutableMapping + +from webob.multidict import MultiDict + +class ResponseHeaders(MultiDict[str, str]): ... + +class EnvironHeaders(MutableMapping[str, str]): + environ: WSGIEnvironment + def __init__(self, environ: WSGIEnvironment) -> None: ... + def __getitem__(self, hname: str) -> str: ... + def __setitem__(self, hname: str, value: str) -> None: ... + def __delitem__(self, hname: str) -> None: ... + def keys(self) -> list[str]: ... # type:ignore[override] + def __contains__(self, hname: object) -> bool: ... + def __len__(self) -> int: ... + def __iter__(self) -> Iterator[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/multidict.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/multidict.pyi new file mode 100644 index 000000000..3486d6ae3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/multidict.pyi @@ -0,0 +1,105 @@ +from _typeshed import SupportsItems, SupportsKeysAndGetItem +from _typeshed.wsgi import WSGIEnvironment +from cgi import FieldStorage +from collections.abc import Collection, Iterable, Iterator, MutableMapping +from typing import Any, TypeVar, overload +from typing_extensions import Literal, Self + +_T = TypeVar("_T") +_KT = TypeVar("_KT") +_VT = TypeVar("_VT") + +class MultiDict(MutableMapping[_KT, _VT]): + @overload + def __init__(self, __m: SupportsItems[_KT, _VT], **kwargs: _VT): ... + @overload + def __init__(self, __m: Iterable[tuple[_KT, _VT]], **kwargs: _VT): ... + @overload + def __init__(self, **kwargs: _VT) -> None: ... + @classmethod + def view_list(cls, lst: list[tuple[_KT, _VT]]) -> MultiDict[_KT, _VT]: ... + @classmethod + def from_fieldstorage(cls, fs: FieldStorage) -> MultiDict[str, str | FieldStorage]: ... + def __getitem__(self, key: _KT) -> _VT: ... + def __setitem__(self, key: _KT, value: _VT) -> None: ... + def add(self, key: _KT, value: _VT) -> None: ... + @overload + def get(self, key: _KT) -> _VT: ... + @overload + def get(self, key: _KT, default: _T) -> _VT | _T: ... + def getall(self, key: _KT) -> list[_VT]: ... + def getone(self, key: _KT) -> _VT: ... + def mixed(self) -> dict[_KT, _VT | list[_VT]]: ... + def dict_of_lists(self) -> dict[_KT, list[_VT]]: ... + def __delitem__(self, key: _KT) -> None: ... + def __contains__(self, key: object) -> bool: ... + has_key = __contains__ + def clear(self) -> None: ... + def copy(self) -> Self: ... + @overload + def setdefault(self, key: _KT, default: None = None) -> _VT | None: ... # type:ignore[misc] + @overload + def setdefault(self, key: _KT, default: _VT) -> _VT: ... + @overload + def pop(self, key: _KT) -> _VT: ... + @overload + def pop(self, key: _KT, default: _T) -> _VT | _T: ... + def popitem(self) -> tuple[_KT, _VT]: ... + @overload # type:ignore[override] + def update(self, __m: Collection[tuple[_KT, _VT]], **kwargs: _VT) -> None: ... + @overload + def update(self, **kwargs: _VT) -> None: ... + @overload + def extend(self, other: SupportsItems[_KT, _VT], **kwargs: _VT) -> None: ... + @overload + def extend(self, other: SupportsKeysAndGetItem[_KT, _VT], **kwargs: _VT) -> None: ... + @overload + def extend(self, other: Iterable[tuple[_KT, _VT]], **kwargs: _VT) -> None: ... + @overload + def extend(self, other: None = None, **kwargs: _VT) -> None: ... + def __len__(self) -> int: ... + def keys(self) -> Iterator[_KT]: ... # type:ignore[override] + __iter__ = keys + def values(self) -> Iterator[_VT]: ... # type:ignore[override] + def items(self) -> Iterator[tuple[_KT, _VT]]: ... # type:ignore[override] + +class GetDict(MultiDict[str, str]): + env: WSGIEnvironment + @overload + def __init__(self, data: SupportsItems[str, str], env: WSGIEnvironment) -> None: ... + @overload + def __init__(self, data: Iterable[tuple[str, str]], env: WSGIEnvironment) -> None: ... + def on_change(self) -> None: ... + +class NestedMultiDict(MultiDict[_KT, _VT]): + dicts: tuple[MultiDict[_KT, _VT] | NoVars, ...] + def __init__(self, *dicts: MultiDict[_KT, _VT] | NoVars) -> None: ... + def __setitem__(self, key: _KT, value: _VT) -> None: ... + def add(self, key: _KT, value: _VT) -> None: ... + def __delitem__(self, key: _KT) -> None: ... + def clear(self) -> None: ... + def setdefault(self, key: _KT, default: _VT | None = ...) -> Any: ... + def pop(self, key: _KT, default: Any = ...) -> Any: ... + def popitem(self) -> tuple[_KT, _VT]: ... + def update(self, *args: Any, **kwargs: _VT) -> None: ... + def copy(self) -> MultiDict[_KT, _VT]: ... # type:ignore[override] + +class NoVars: + reason: str + def __init__(self, reason: str | None = None) -> None: ... + @overload + def get(self, key: str, default: None = None) -> None: ... + @overload + def get(self, key: str, default: _T) -> _T: ... + def getall(self, key: str) -> list[str]: ... + def mixed(self) -> dict[str, str | list[str]]: ... + def dict_of_lists(self) -> dict[str, list[str]]: ... + def __contains__(self, key: object) -> Literal[False]: ... + has_key = __contains__ + def copy(self) -> Self: ... + def __len__(self) -> Literal[0]: ... + def __iter__(self) -> Iterator[str]: ... + def keys(self) -> Iterator[str]: ... + def values(self) -> Iterator[str]: ... + def items(self) -> Iterator[tuple[str, str]]: ... + def __bool__(self) -> Literal[False]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/request.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/request.pyi new file mode 100644 index 000000000..d14ff8038 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/request.pyi @@ -0,0 +1,238 @@ +import datetime +import io +from _typeshed import ( + ExcInfo, + Incomplete, + ReadableBuffer, + SupportsItems, + SupportsKeysAndGetItem, + SupportsNoArgReadline, + SupportsRead, +) +from _typeshed.wsgi import WSGIApplication, WSGIEnvironment +from cgi import FieldStorage +from collections.abc import Iterable, Mapping +from re import Pattern +from tempfile import _TemporaryFileWrapper +from typing import IO, Any, ClassVar, Protocol, TypeVar, overload +from typing_extensions import Literal, Self, TypeAlias, TypedDict + +from webob.acceptparse import _AcceptCharsetProperty, _AcceptEncodingProperty, _AcceptLanguageProperty, _AcceptProperty +from webob.byterange import Range +from webob.cachecontrol import _RequestCacheControl +from webob.cookies import RequestCookies +from webob.descriptors import _AsymmetricProperty, _AsymmetricPropertyWithDelete, _authorization, _DateProperty +from webob.etag import IfRange, IfRangeDate, _ETagProperty +from webob.headers import EnvironHeaders +from webob.multidict import GetDict, MultiDict, NestedMultiDict, NoVars +from webob.response import Response, _HTTPHeader + +_T = TypeVar("_T") +_HTTPMethod: TypeAlias = Literal["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH"] +_ListOrTuple: TypeAlias = list[_T] | tuple[_T, ...] + +class _SupportsReadAndNoArgReadline(SupportsRead[bytes], SupportsNoArgReadline[bytes], Protocol): ... + +class _RequestCacheControlDict(TypedDict, total=False): + max_stale: int + min_stale: int + only_if_cached: bool + no_cache: Literal[True] | str + no_store: bool + no_transform: bool + max_age: int + +class _FieldStorageWithFile(FieldStorage): + file: IO[bytes] + filename: str + +class _NoDefault: ... + +NoDefault: _NoDefault + +class BaseRequest: + request_body_tempfile_limit: ClassVar[int] + environ: WSGIEnvironment + method: _HTTPMethod + def __init__(self, environ: WSGIEnvironment, **kw: Any) -> None: ... + def encget(self, key: str, default: Any = ..., encattr: str | None = None) -> Any: ... + def encset(self, key: str, val: Any, encattr: str | None = None) -> None: ... + @property + def charset(self) -> str | None: ... + def decode(self, charset: str | None = None, errors: str = "strict") -> Self: ... + @property + def body_file(self) -> SupportsRead[bytes]: ... + @body_file.setter + def body_file(self, value: SupportsRead[bytes]) -> None: ... + content_length: int | None + body_file_raw: SupportsRead[bytes] + is_body_seekable: bool + @property + def body_file_seekable(self) -> IO[bytes]: ... + url_encoding: str + @property + def scheme(self) -> str | None: ... + @scheme.setter + def scheme(self, value: str | None) -> None: ... + @property + def http_version(self) -> str | None: ... + @http_version.setter + def http_version(self, value: str | None) -> None: ... + remote_user: str | None + remote_host: str | None + remote_addr: str | None + query_string: str + @property + def server_name(self) -> str | None: ... + @server_name.setter + def server_name(self, value: str | None) -> None: ... + @property + def server_port(self) -> int | None: ... + @server_port.setter + def server_port(self, value: int | None) -> None: ... + script_name: str + @property + def path_info(self) -> str | None: ... + @path_info.setter + def path_info(self, value: str | None) -> None: ... + uscript_name: str # bw compat + upath_info = path_info # bw compat + content_type: str | None + headers: _AsymmetricProperty[EnvironHeaders, SupportsItems[str, str] | Iterable[tuple[str, str]]] + @property + def client_addr(self) -> str | None: ... + @property + def host_port(self) -> str: ... + @property + def host_url(self) -> str: ... + @property + def application_url(self) -> str: ... + @property + def path_url(self) -> str: ... + @property + def path(self) -> str: ... + @property + def path_qs(self) -> str: ... + @property + def url(self) -> str: ... + def relative_url(self, other_url: str, to_application: bool = False) -> str: ... + def path_info_pop(self, pattern: Pattern[str] | None = None) -> str | None: ... + def path_info_peek(self) -> str | None: ... + urlvars: dict[str, str] + urlargs: tuple[str] + @property + def is_xhr(self) -> bool: ... + host: str + @property + def domain(self) -> str: ... + body: bytes + json: Any + json_body: Any + text: str + @property + def POST(self) -> MultiDict[str, str | _FieldStorageWithFile] | NoVars: ... + @property + def GET(self) -> GetDict: ... + @property + def params(self) -> NestedMultiDict[str, str | _FieldStorageWithFile]: ... + cookies: _AsymmetricProperty[RequestCookies, SupportsKeysAndGetItem[str, str] | Iterable[tuple[str, str]]] + def copy(self) -> Self: ... + def copy_get(self) -> Self: ... + @property + def is_body_readable(self) -> bool: ... + @is_body_readable.setter + def is_body_readable(self, flag: bool) -> None: ... + def make_body_seekable(self) -> None: ... + def copy_body(self) -> None: ... + def make_tempfile(self) -> _TemporaryFileWrapper[bytes]: ... + def remove_conditional_headers( + self, remove_encoding: bool = True, remove_range: bool = True, remove_match: bool = True, remove_modified: bool = True + ) -> None: ... + accept: _AcceptProperty + accept_charset: _AcceptCharsetProperty + accept_encoding: _AcceptEncodingProperty + accept_language: _AcceptLanguageProperty + authorization: _AsymmetricPropertyWithDelete[_authorization | None, tuple[str, str | dict[str, str]] | list[Any] | str | None] + cache_control: _AsymmetricPropertyWithDelete[ + _RequestCacheControl | None, _RequestCacheControl | _RequestCacheControlDict | str | None + ] + if_match: _ETagProperty + if_none_match: _ETagProperty + date: _DateProperty + if_modified_since: _DateProperty + if_unmodified_since: _DateProperty + if_range: _AsymmetricPropertyWithDelete[ + IfRange | IfRangeDate | None, IfRange | IfRangeDate | datetime.datetime | datetime.date | str | None + ] + max_forwards: int | None + pragma: str | None + range: _AsymmetricPropertyWithDelete[Range, tuple[int, int | None] | list[int | None] | str | None] + referer: str | None + referrer: str | None + user_agent: str | None + def as_bytes(self, skip_body: bool = False) -> bytes: ... + def as_text(self) -> str: ... + @classmethod + def from_bytes(cls, b: bytes) -> Self: ... + @classmethod + def from_text(cls, s: str) -> Self: ... + @classmethod + def from_file(cls, fp: _SupportsReadAndNoArgReadline) -> Self: ... + @overload + def call_application( + self, application: WSGIApplication, catch_exc_info: Literal[False] = False + ) -> tuple[str, list[_HTTPHeader], Iterable[bytes]]: ... + @overload + def call_application( + self, application: WSGIApplication, catch_exc_info: Literal[True] + ) -> tuple[str, list[_HTTPHeader], Iterable[bytes], ExcInfo | None]: ... + ResponseClass: type[Response] + def send(self, application: WSGIApplication | None = None, catch_exc_info: bool = False) -> Response: ... + get_response = send + def make_default_send_app(self) -> WSGIApplication: ... + @classmethod + def blank( + cls, + path: str, + environ: dict[str, None] | None = None, + base_url: str | None = None, + headers: Mapping[str, str] | None = None, + POST: str | bytes | Mapping[Any, Any] | Mapping[Any, _ListOrTuple[Any]] | None = None, + **kw, + ) -> Self: ... + +class LegacyRequest(BaseRequest): + uscript_name: Incomplete + upath_info: Incomplete + def encget(self, key, default=..., encattr: Incomplete | None = None): ... + +class AdhocAttrMixin: + def __setattr__(self, attr: str, value: Any) -> None: ... + def __getattr__(self, attr: str) -> Any: ... + def __delattr__(self, attr: str) -> None: ... + +class Request(AdhocAttrMixin, BaseRequest): ... +class DisconnectionError(IOError): ... + +def environ_from_url(path: str) -> WSGIEnvironment: ... +def environ_add_POST( + env: WSGIEnvironment, + data: str | bytes | Mapping[Any, Any] | Mapping[Any, _ListOrTuple[Any]] | None, + content_type: str | None = None, +) -> None: ... + +class LimitedLengthFile(io.RawIOBase): + file: SupportsRead[bytes] + maxlen: int + remaining: int + def __init__(self, file: SupportsRead[bytes], maxlen: int) -> None: ... + @staticmethod + def readable() -> Literal[True]: ... + def readinto(self, buff: ReadableBuffer) -> int: ... + +class Transcoder: + charset: str + errors: str + def __init__(self, charset: str, errors: str = "strict") -> None: ... + def transcode_query(self, q: str) -> str: ... + def transcode_fs(self, fs: FieldStorage, content_type: str) -> io.BytesIO: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/response.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/response.pyi new file mode 100644 index 000000000..7b0ed4d98 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/response.pyi @@ -0,0 +1,179 @@ +from _typeshed import SupportsItems, SupportsRead +from _typeshed.wsgi import StartResponse, WSGIApplication, WSGIEnvironment +from collections.abc import Iterable, Iterator, Sequence +from datetime import timedelta +from typing import IO, Any, Protocol +from typing_extensions import Literal, TypeAlias, TypedDict + +from webob.byterange import ContentRange +from webob.cachecontrol import _ResponseCacheControl +from webob.descriptors import _AsymmetricProperty, _AsymmetricPropertyWithDelete, _authorization, _DateProperty, _ListProperty +from webob.headers import ResponseHeaders +from webob.request import Request + +class _ResponseCacheExpires(Protocol): + def __call__( + self, + seconds: int | timedelta = 0, + *, + public: bool = ..., + private: Literal[True] | str = ..., + no_cache: Literal[True] | str = ..., + no_store: bool = ..., + no_transform: bool = ..., + must_revalidate: bool = ..., + proxy_revalidate: bool = ..., + max_age: int = ..., + s_maxage: int = ..., + s_max_age: int = ..., + stale_while_revalidate: int = ..., + stale_if_error: int = ..., + ) -> None: ... + +class _ResponseCacheControlDict(TypedDict, total=False): + public: bool + private: Literal[True] | str + no_cache: Literal[True] | str + no_store: bool + no_transform: bool + must_revalidate: bool + proxy_revalidate: bool + max_age: int + s_maxage: int + s_max_age: int + stale_while_revalidate: int + stale_if_error: int + +_HTTPHeader: TypeAlias = tuple[str, str] +_ContentRangeParams: TypeAlias = ( + ContentRange + | list[int | None] + | tuple[int, int] + | tuple[None, None] + | tuple[int, int, int | None] + | tuple[None, None, int | None] + | str + | None +) + +class Response: + default_content_type: str + default_charset: str + unicode_errors: str + default_conditional_response: bool + default_body_encoding: str + request: Request | None + environ: WSGIEnvironment | None + status: str + conditional_response: bool + + def __init__( + self, + body: bytes | str | None = None, + status: str | None = None, + headerlist: list[_HTTPHeader] | None = None, + app_iter: Iterator[bytes] | None = None, + content_type: str | None = None, + conditional_response: bool | None = None, + charset: str = ..., + **kw: Any, + ) -> None: ... + @classmethod + def from_file(cls, fp: IO[str]) -> Response: ... + def copy(self) -> Response: ... + status_code: int + status_int: int + headerlist: _AsymmetricPropertyWithDelete[list[_HTTPHeader], Iterable[_HTTPHeader] | SupportsItems[str, str]] + headers: _AsymmetricProperty[ResponseHeaders, SupportsItems[str, str] | Iterable[tuple[str, str]]] + body: bytes + json: Any + json_body: Any + @property + def has_body(self) -> bool: ... + text: str + unicode_body: str # deprecated + ubody: str # deprecated + body_file: _AsymmetricPropertyWithDelete[ResponseBodyFile, SupportsRead[bytes]] + content_length: int | None + def write(self, text: str | bytes) -> None: ... + app_iter: Iterator[bytes] + allow: _ListProperty + vary: _ListProperty + content_encoding: str | None + content_language: _ListProperty + content_location: str | None + content_md5: str | None + content_disposition: str | None + accept_ranges: str | None + content_range: _AsymmetricPropertyWithDelete[ContentRange | None, _ContentRangeParams] + date: _DateProperty + expires: _DateProperty + last_modified: _DateProperty + etag: _AsymmetricPropertyWithDelete[str | None, tuple[str, bool] | str | None] + @property + def etag_strong(self) -> str | None: ... + location: str | None + pragma: str | None + age: int | None + retry_after: _DateProperty + server: str | None + www_authenticate: _AsymmetricPropertyWithDelete[ + _authorization | None, tuple[str, str | dict[str, str]] | list[Any] | str | None + ] + charset: str | None + content_type: str | None + content_type_params: _AsymmetricPropertyWithDelete[dict[str, str], SupportsItems[str, str] | None] + def set_cookie( + self, + name: str, + value: str | None = "", + max_age: int | timedelta | None = None, + path: str = "/", + domain: str | None = None, + secure: bool = False, + httponly: bool = False, + comment: str | None = None, + overwrite: bool = False, + samesite: Literal["strict", "lax", "none"] | None = None, + ) -> None: ... + def delete_cookie(self, name: str, path: str = "/", domain: str | None = None) -> None: ... + def unset_cookie(self, name: str, strict: bool = True) -> None: ... + def merge_cookies(self, resp: Response | WSGIApplication) -> None: ... + cache_control: _AsymmetricProperty[_ResponseCacheControl, _ResponseCacheControl | _ResponseCacheControlDict | str | None] + cache_expires: _AsymmetricProperty[_ResponseCacheExpires, timedelta | int | bool | None] + def encode_content(self, encoding: Literal["gzip", "identity"] = "gzip", lazy: bool = False) -> None: ... + def decode_content(self) -> None: ... + def md5_etag(self, body: bytes | None = None, set_content_md5: bool = False) -> None: ... + def __call__(self, environ: WSGIEnvironment, start_response: StartResponse) -> Iterable[bytes]: ... + def conditional_response_app(self, environ: WSGIEnvironment, start_response: StartResponse) -> Iterable[bytes]: ... + def app_iter_range(self, start: int, stop: int | None) -> AppIterRange: ... + def __str__(self, skip_body: bool = False) -> str: ... + +class ResponseBodyFile: + mode: Literal["wb"] + closed: Literal[False] + response: Response + def __init__(self, response: Response): ... + @property + def encoding(self) -> str | None: ... + def write(self, text: str | bytes) -> int: ... + def writelines(self, seq: Sequence[str | bytes]) -> int: ... + def flush(self) -> None: ... + def tell(self) -> int: ... + +class AppIterRange: + app_iter: Iterator[bytes] + start: int + stop: int | None + def __init__(self, app_iter: Iterator[bytes], start: int, stop: int | None) -> None: ... + def __iter__(self) -> Iterator[bytes]: ... + def next(self) -> bytes: ... + __next__ = next + def close(self) -> None: ... + +class EmptyResponse: + def __init__(self, app_iter: Iterator[bytes] | None = None) -> None: ... + def __iter__(self) -> Iterator[bytes]: ... + def __len__(self) -> int: ... + def next(self) -> bytes: ... + __next__ = next diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/static.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/static.pyi new file mode 100644 index 000000000..0f9e087dc --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/static.pyi @@ -0,0 +1,37 @@ +from _typeshed import StrOrBytesPath +from collections.abc import Iterator +from typing import IO, Any + +from webob.dec import wsgify +from webob.request import Request +from webob.response import Response + +BLOCK_SIZE: int + +class FileApp: + filename: StrOrBytesPath + kw: dict[str, Any] + def __init__(self, filename: StrOrBytesPath, **kw: Any) -> None: ... + @wsgify + def __call__(self, req: Request) -> Response: ... + +class FileIter: + file: IO[bytes] + def __init__(self, file: IO[bytes]) -> None: ... + def app_iter_range( + self, seek: int | None = None, limit: int | None = None, block_size: int | None = None + ) -> Iterator[bytes]: ... + __iter__ = app_iter_range + +class DirectoryApp: + path: str | bytes + index_page: str | None + hide_index_with_redirect: bool + fileapp_kw: dict[str, Any] + def __init__( + self, path: StrOrBytesPath, index_page: str = "index.html", hide_index_with_redirect: bool = False, **kw: Any + ) -> None: ... + def make_fileapp(self, path: StrOrBytesPath) -> FileApp: ... + @wsgify + def __call__(self, req: Request) -> Response | FileApp: ... + def index(self, req: Request, path: StrOrBytesPath) -> Response | FileApp: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/util.pyi new file mode 100644 index 000000000..ea8ccec42 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/util.pyi @@ -0,0 +1,14 @@ +from collections.abc import Callable +from typing import AnyStr, Protocol + +class _HasHTML(Protocol): + def __html__(self) -> str: ... + +def html_escape(s: str | bytes | _HasHTML) -> str: ... +def header_docstring(header, rfc_section): ... +def warn_deprecation(text, version, stacklevel) -> None: ... + +status_reasons: dict[int, str] +status_generic_reasons: dict[int, str] + +def strings_differ(string1: AnyStr, string2: AnyStr, compare_digest: Callable[[AnyStr, AnyStr], bool] = ...) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml index 7d86e76a7..f37098fcf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml @@ -1 +1 @@ -version = "2.16.*" +version = "2.17.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/cell.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/cell.pyi index f8a90b74b..1f4ee9568 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/cell.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/cell.pyi @@ -1,8 +1,8 @@ -from _typeshed import Incomplete from datetime import date, datetime, time, timedelta from decimal import Decimal +from re import Pattern from typing import overload -from typing_extensions import TypeAlias +from typing_extensions import Final, TypeAlias from openpyxl.cell.rich_text import CellRichText from openpyxl.comments.comments import Comment @@ -12,26 +12,30 @@ from openpyxl.worksheet.formula import ArrayFormula, DataTableFormula from openpyxl.worksheet.hyperlink import Hyperlink from openpyxl.worksheet.worksheet import Worksheet +_TimeTypes: TypeAlias = datetime | date | time | timedelta _CellValue: TypeAlias = ( # if numpy is installed also numpy bool and number types - bool | float | Decimal | str | CellRichText | date | time | timedelta | DataTableFormula | ArrayFormula + bool | float | Decimal | str | CellRichText | _TimeTypes | DataTableFormula | ArrayFormula ) -__docformat__: str -TIME_TYPES: Incomplete -TIME_FORMATS: Incomplete -STRING_TYPES: Incomplete -KNOWN_TYPES: Incomplete -ILLEGAL_CHARACTERS_RE: Incomplete -ERROR_CODES: Incomplete -TYPE_STRING: str -TYPE_FORMULA: str -TYPE_NUMERIC: str -TYPE_BOOL: str -TYPE_NULL: str -TYPE_INLINE: str -TYPE_ERROR: str -TYPE_FORMULA_CACHE_STRING: str -VALID_TYPES: Incomplete +__docformat__: Final = "restructuredtext en" +TIME_TYPES: Final[tuple[type, ...]] +TIME_FORMATS: Final[dict[type[_TimeTypes], str]] +STRING_TYPES: Final[tuple[type, ...]] +KNOWN_TYPES: Final[tuple[type, ...]] + +ILLEGAL_CHARACTERS_RE: Final[Pattern[str]] +ERROR_CODES: Final[tuple[str, ...]] + +TYPE_STRING: Final = "s" +TYPE_FORMULA: Final = "f" +TYPE_NUMERIC: Final = "n" +TYPE_BOOL: Final = "b" +TYPE_NULL: Final = "n" +TYPE_INLINE: Final = "inlineStr" +TYPE_ERROR: Final = "e" +TYPE_FORMULA_CACHE_STRING: Final = "str" + +VALID_TYPES: Final[tuple[str, ...]] def get_type(t: type, value: object) -> str | None: ... def get_time_format(t: datetime) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/read_only.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/read_only.pyi index 2d1085d3c..71e54e185 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/read_only.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/read_only.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete +from typing_extensions import Final class ReadOnlyCell: parent: Incomplete @@ -48,4 +49,4 @@ class EmptyCell: alignment: Incomplete data_type: str -EMPTY_CELL: Incomplete +EMPTY_CELL: Final[EmptyCell] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi index 909358848..5aed12bbd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/text.pyi @@ -3,6 +3,7 @@ from typing import ClassVar from typing_extensions import Literal, TypeAlias from openpyxl.descriptors.base import Alias, Integer, NoneSet, Typed, _ConvertibleToInt +from openpyxl.descriptors.nested import NestedString, NestedText from openpyxl.descriptors.serialisable import Serialisable from openpyxl.styles.fonts import Font @@ -10,7 +11,7 @@ _PhoneticPropertiesType: TypeAlias = Literal["halfwidthKatakana", "fullwidthKata _PhoneticPropertiesAlignment: TypeAlias = Literal["noControl", "left", "center", "distributed"] class PhoneticProperties(Serialisable): - tagname: str + tagname: ClassVar[str] fontId: Integer[Literal[False]] type: NoneSet[_PhoneticPropertiesType] alignment: NoneSet[_PhoneticPropertiesAlignment] @@ -24,16 +25,16 @@ class PhoneticProperties(Serialisable): _PhoneticProperties: TypeAlias = PhoneticProperties class PhoneticText(Serialisable): - tagname: str + tagname: ClassVar[str] sb: Integer[Literal[False]] eb: Integer[Literal[False]] - t: Incomplete + t: NestedText[str, Literal[False]] text: Alias - def __init__(self, sb: _ConvertibleToInt, eb: _ConvertibleToInt, t: Incomplete | None = None) -> None: ... + def __init__(self, sb: _ConvertibleToInt, eb: _ConvertibleToInt, t: object = None) -> None: ... class InlineFont(Font): - tagname: str - rFont: Incomplete + tagname: ClassVar[str] + rFont: NestedString[Literal[True]] charset: Incomplete family: Incomplete b: Incomplete @@ -51,7 +52,7 @@ class InlineFont(Font): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - rFont: Incomplete | None = None, + rFont: object = None, charset: Incomplete | None = None, family: Incomplete | None = None, b: Incomplete | None = None, @@ -69,17 +70,17 @@ class InlineFont(Font): ) -> None: ... class RichText(Serialisable): - tagname: str + tagname: ClassVar[str] rPr: Typed[InlineFont, Literal[True]] font: Alias - t: Incomplete + t: NestedText[str, Literal[True]] text: Alias __elements__: ClassVar[tuple[str, ...]] - def __init__(self, rPr: InlineFont | None = None, t: Incomplete | None = None) -> None: ... + def __init__(self, rPr: InlineFont | None = None, t: object = None) -> None: ... class Text(Serialisable): - tagname: str - t: Incomplete + tagname: ClassVar[str] + t: NestedText[str, Literal[True]] plain: Alias r: Incomplete formatted: Alias @@ -88,6 +89,6 @@ class Text(Serialisable): phoneticPr: Typed[_PhoneticProperties, Literal[True]] PhoneticProperties: Alias __elements__: ClassVar[tuple[str, ...]] - def __init__(self, t: Incomplete | None = None, r=(), rPh=(), phoneticPr: _PhoneticProperties | None = None) -> None: ... + def __init__(self, t: object = None, r=(), rPh=(), phoneticPr: _PhoneticProperties | None = None) -> None: ... @property def content(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi index d11b2af0a..86a4d9829 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi @@ -1,41 +1,42 @@ -from _typeshed import Incomplete, Unused +from _typeshed import Unused from typing import ClassVar from typing_extensions import Literal from openpyxl.chart.picture import PictureOptions from openpyxl.chart.shapes import GraphicalProperties -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedMinMax, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable class View3D(Serialisable): - tagname: str - rotX: Incomplete + tagname: ClassVar[str] + rotX: NestedMinMax[float, Literal[True]] x_rotation: Alias - hPercent: Incomplete + hPercent: NestedMinMax[float, Literal[True]] height_percent: Alias - rotY: Incomplete + rotY: NestedInteger[Literal[True]] y_rotation: Alias - depthPercent: Incomplete - rAngAx: Incomplete + depthPercent: NestedInteger[Literal[True]] + rAngAx: NestedBool[Literal[True]] right_angle_axes: Alias - perspective: Incomplete + perspective: NestedInteger[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - rotX: int = 15, - hPercent: Incomplete | None = None, - rotY: int = 20, - depthPercent: Incomplete | None = None, - rAngAx: bool = True, - perspective: Incomplete | None = None, + rotX: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = 15, + hPercent: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + rotY: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = 20, + depthPercent: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + rAngAx: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = True, + perspective: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, extLst: Unused = None, ) -> None: ... class Surface(Serialisable): - tagname: str - thickness: Incomplete + tagname: ClassVar[str] + thickness: NestedInteger[Literal[True]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias pictureOptions: Typed[PictureOptions, Literal[True]] @@ -43,14 +44,14 @@ class Surface(Serialisable): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - thickness: Incomplete | None = None, + thickness: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, spPr: GraphicalProperties | None = None, pictureOptions: PictureOptions | None = None, extLst: Unused = None, ) -> None: ... class _3DBase(Serialisable): - tagname: str + tagname: ClassVar[str] view3D: Typed[View3D, Literal[True]] floor: Typed[Surface, Literal[True]] sideWall: Typed[Surface, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi index 405748b58..51ac0ab5d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_chart.pyi @@ -1,5 +1,4 @@ from _typeshed import Incomplete, Unused -from abc import abstractmethod from typing import ClassVar from typing_extensions import Literal, TypeAlias @@ -41,12 +40,9 @@ class ChartBase(Serialisable): def __init__(self, axId=(), **kw: Unused) -> None: ... def __hash__(self) -> int: ... def __iadd__(self, other): ... - def to_tree(self, namespace: Incomplete | None = None, tagname: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] + def to_tree(self, namespace: str | None = None, tagname: str | None = None, idx: Incomplete | None = None): ... # type: ignore[override] def set_categories(self, labels) -> None: ... def add_data(self, data, from_rows: bool = False, titles_from_data: bool = False) -> None: ... def append(self, value) -> None: ... @property def path(self): ... - @property - @abstractmethod - def tagname(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi index c9b82946d..a6b5e3ee1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi @@ -1,18 +1,20 @@ from _typeshed import Incomplete, Unused -from abc import abstractmethod from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.axis import ChartLines, NumericAxis, SeriesAxis, TextAxis from openpyxl.chart.label import DataLabelList -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedSet, _HasTagAndGet from ._chart import ChartBase +_AreaChartBaseGrouping: TypeAlias = Literal["percentStacked", "standard", "stacked"] + class _AreaChartBase(ChartBase): - grouping: Incomplete - varyColors: Incomplete + grouping: NestedSet[_AreaChartBaseGrouping] + varyColors: NestedBool[Literal[True]] ser: Incomplete dLbls: Typed[DataLabelList, Literal[True]] dataLabels: Alias @@ -20,18 +22,15 @@ class _AreaChartBase(ChartBase): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - grouping: str = "standard", - varyColors: Incomplete | None = None, + grouping: _HasTagAndGet[_AreaChartBaseGrouping] | _AreaChartBaseGrouping = "standard", + varyColors: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, ser=(), dLbls: DataLabelList | None = None, dropLines: ChartLines | None = None, ) -> None: ... - @property - @abstractmethod - def tagname(self) -> str: ... class AreaChart(_AreaChartBase): - tagname: str + tagname: ClassVar[str] grouping: Incomplete varyColors: Incomplete ser: Incomplete @@ -44,7 +43,7 @@ class AreaChart(_AreaChartBase): def __init__(self, axId: Unused = None, extLst: Unused = None, **kw) -> None: ... class AreaChart3D(AreaChart): - tagname: str + tagname: ClassVar[str] grouping: Incomplete varyColors: Incomplete ser: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi index 258437879..76d938aee 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi @@ -1,65 +1,115 @@ from _typeshed import Incomplete, Unused -from abc import abstractmethod -from typing import ClassVar -from typing_extensions import Literal +from typing import ClassVar, overload +from typing_extensions import Literal, TypeAlias from openpyxl.chart.layout import Layout from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText, Text -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import ( + NestedBool, + NestedFloat, + NestedInteger, + NestedMinMax, + NestedNoneSet, + NestedSet, + _HasTagAndGet, + _NestedNoneSetParam, +) from openpyxl.descriptors.serialisable import Serialisable +_ScalingOrientation: TypeAlias = Literal["maxMin", "minMax"] +_BaseAxisAxPos: TypeAlias = Literal["b", "l", "r", "t"] +_BaseAxisTickMark: TypeAlias = Literal["cross", "in", "out"] +_BaseAxisTickLblPos: TypeAlias = Literal["high", "low", "nextTo"] +_BaseAxisCrosses: TypeAlias = Literal["autoZero", "max", "min"] +_DisplayUnitsLabelListBuiltInUnit: TypeAlias = Literal[ + "hundreds", + "thousands", + "tenThousands", + "hundredThousands", + "millions", + "tenMillions", + "hundredMillions", + "billions", + "trillions", +] +_NumericAxisCrossBetween: TypeAlias = Literal["between", "midCat"] +_TextAxisLblAlgn: TypeAlias = Literal["ctr", "l", "r"] +_DateAxisTimeUnit: TypeAlias = Literal["days", "months", "years"] + class ChartLines(Serialisable): - tagname: str + tagname: ClassVar[str] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias def __init__(self, spPr: GraphicalProperties | None = None) -> None: ... class Scaling(Serialisable): - tagname: str - logBase: Incomplete - orientation: Incomplete - max: Incomplete - min: Incomplete + tagname: ClassVar[str] + logBase: NestedFloat[Literal[True]] + orientation: NestedSet[_ScalingOrientation] + max: NestedFloat[Literal[True]] + min: NestedFloat[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - logBase: Incomplete | None = None, - orientation: str = "minMax", - max: Incomplete | None = None, - min: Incomplete | None = None, + logBase: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + orientation: _HasTagAndGet[_ScalingOrientation] | _ScalingOrientation = "minMax", + max: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + min: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, extLst: Unused = None, ) -> None: ... class _BaseAxis(Serialisable): - axId: Incomplete + axId: NestedInteger[Literal[False]] scaling: Typed[Scaling, Literal[False]] - delete: Incomplete - axPos: Incomplete + delete: NestedBool[Literal[True]] + axPos: NestedSet[_BaseAxisAxPos] majorGridlines: Typed[ChartLines, Literal[True]] minorGridlines: Typed[ChartLines, Literal[True]] title: Incomplete numFmt: Incomplete number_format: Alias - majorTickMark: Incomplete - minorTickMark: Incomplete - tickLblPos: Incomplete + majorTickMark: NestedNoneSet[_BaseAxisTickMark] + minorTickMark: NestedNoneSet[_BaseAxisTickMark] + tickLblPos: NestedNoneSet[_BaseAxisTickLblPos] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias txPr: Typed[RichText, Literal[True]] textProperties: Alias - crossAx: Incomplete - crosses: Incomplete - crossesAt: Incomplete + crossAx: NestedInteger[Literal[False]] + crosses: NestedNoneSet[_BaseAxisCrosses] + crossesAt: NestedFloat[Literal[True]] __elements__: ClassVar[tuple[str, ...]] + @overload + def __init__( + self, + axId: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt, + scaling: Scaling | None, + delete: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None, + axPos: _HasTagAndGet[_BaseAxisAxPos] | _BaseAxisAxPos, + majorGridlines: ChartLines | None, + minorGridlines: ChartLines | None, + title: Incomplete | None, + numFmt: Incomplete | None, + majorTickMark: _NestedNoneSetParam[_BaseAxisTickMark], + minorTickMark: _NestedNoneSetParam[_BaseAxisTickMark], + tickLblPos: _NestedNoneSetParam[_BaseAxisTickLblPos], + spPr: GraphicalProperties | None, + txPr: RichText | None, + crossAx: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt, + crosses: _NestedNoneSetParam[_BaseAxisCrosses] = None, + crossesAt: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + ) -> None: ... + @overload def __init__( self, - axId: Incomplete | None = None, + axId: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt, scaling: Scaling | None = None, - delete: Incomplete | None = None, - axPos: str = "l", + delete: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + axPos: _HasTagAndGet[_BaseAxisAxPos] | _BaseAxisAxPos = "l", majorGridlines: ChartLines | None = None, minorGridlines: ChartLines | None = None, title: Incomplete | None = None, @@ -69,16 +119,14 @@ class _BaseAxis(Serialisable): tickLblPos: Incomplete | None = None, spPr: GraphicalProperties | None = None, txPr: RichText | None = None, - crossAx: Incomplete | None = None, + *, + crossAx: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt, crosses: Incomplete | None = None, - crossesAt: Incomplete | None = None, + crossesAt: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, ) -> None: ... - @property - @abstractmethod - def tagname(self) -> str: ... class DisplayUnitsLabel(Serialisable): - tagname: str + tagname: ClassVar[str] layout: Typed[Layout, Literal[True]] tx: Typed[Text, Literal[True]] text: Alias @@ -96,22 +144,25 @@ class DisplayUnitsLabel(Serialisable): ) -> None: ... class DisplayUnitsLabelList(Serialisable): - tagname: str - custUnit: Incomplete - builtInUnit: Incomplete + tagname: ClassVar[str] + custUnit: NestedFloat[Literal[True]] + builtInUnit: NestedNoneSet[_DisplayUnitsLabelListBuiltInUnit] dispUnitsLbl: Typed[DisplayUnitsLabel, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - custUnit: Incomplete | None = None, - builtInUnit: Incomplete | None = None, + custUnit: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + builtInUnit: _HasTagAndGet[_DisplayUnitsLabelListBuiltInUnit] + | _DisplayUnitsLabelListBuiltInUnit + | Literal["none"] + | None = None, dispUnitsLbl: DisplayUnitsLabel | None = None, extLst: Unused = None, ) -> None: ... class NumericAxis(_BaseAxis): - tagname: str + tagname: ClassVar[str] axId: Incomplete scaling: Incomplete delete: Incomplete @@ -128,17 +179,17 @@ class NumericAxis(_BaseAxis): crossAx: Incomplete crosses: Incomplete crossesAt: Incomplete - crossBetween: Incomplete - majorUnit: Incomplete - minorUnit: Incomplete + crossBetween: NestedNoneSet[_NumericAxisCrossBetween] + majorUnit: NestedFloat[Literal[True]] + minorUnit: NestedFloat[Literal[True]] dispUnits: Typed[DisplayUnitsLabelList, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - crossBetween: Incomplete | None = None, - majorUnit: Incomplete | None = None, - minorUnit: Incomplete | None = None, + crossBetween: _NestedNoneSetParam[_NumericAxisCrossBetween] = None, + majorUnit: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + minorUnit: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, dispUnits: DisplayUnitsLabelList | None = None, extLst: Unused = None, **kw, @@ -147,7 +198,7 @@ class NumericAxis(_BaseAxis): def from_tree(cls, node): ... class TextAxis(_BaseAxis): - tagname: str + tagname: ClassVar[str] axId: Incomplete scaling: Incomplete delete: Incomplete @@ -164,28 +215,28 @@ class TextAxis(_BaseAxis): crossAx: Incomplete crosses: Incomplete crossesAt: Incomplete - auto: Incomplete - lblAlgn: Incomplete - lblOffset: Incomplete - tickLblSkip: Incomplete - tickMarkSkip: Incomplete - noMultiLvlLbl: Incomplete + auto: NestedBool[Literal[True]] + lblAlgn: NestedNoneSet[_TextAxisLblAlgn] + lblOffset: NestedMinMax[float, Literal[False]] + tickLblSkip: NestedInteger[Literal[True]] + tickMarkSkip: NestedInteger[Literal[True]] + noMultiLvlLbl: NestedBool[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - auto: Incomplete | None = None, - lblAlgn: Incomplete | None = None, - lblOffset: int = 100, - tickLblSkip: Incomplete | None = None, - tickMarkSkip: Incomplete | None = None, - noMultiLvlLbl: Incomplete | None = None, + auto: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + lblAlgn: _NestedNoneSetParam[_TextAxisLblAlgn] = None, + lblOffset: _HasTagAndGet[_ConvertibleToFloat] | _ConvertibleToFloat = 100, + tickLblSkip: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + tickMarkSkip: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + noMultiLvlLbl: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, extLst: Unused = None, **kw, ) -> None: ... class DateAxis(TextAxis): - tagname: str + tagname: ClassVar[str] axId: Incomplete scaling: Incomplete delete: Incomplete @@ -202,30 +253,30 @@ class DateAxis(TextAxis): crossAx: Incomplete crosses: Incomplete crossesAt: Incomplete - auto: Incomplete - lblOffset: Incomplete - baseTimeUnit: Incomplete - majorUnit: Incomplete - majorTimeUnit: Incomplete - minorUnit: Incomplete - minorTimeUnit: Incomplete + auto: NestedBool[Literal[True]] + lblOffset: NestedInteger[Literal[True]] # type: ignore[assignment] + baseTimeUnit: NestedNoneSet[_DateAxisTimeUnit] + majorUnit: NestedFloat[Literal[True]] + majorTimeUnit: NestedNoneSet[_DateAxisTimeUnit] + minorUnit: NestedFloat[Literal[True]] + minorTimeUnit: NestedNoneSet[_DateAxisTimeUnit] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - auto: Incomplete | None = None, - lblOffset: Incomplete | None = None, - baseTimeUnit: Incomplete | None = None, - majorUnit: Incomplete | None = None, - majorTimeUnit: Incomplete | None = None, - minorUnit: Incomplete | None = None, - minorTimeUnit: Incomplete | None = None, + auto: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + lblOffset: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + baseTimeUnit: _NestedNoneSetParam[_DateAxisTimeUnit] = None, + majorUnit: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + majorTimeUnit: _NestedNoneSetParam[_DateAxisTimeUnit] = None, + minorUnit: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + minorTimeUnit: _NestedNoneSetParam[_DateAxisTimeUnit] = None, extLst: Unused = None, **kw, ) -> None: ... class SeriesAxis(_BaseAxis): - tagname: str + tagname: ClassVar[str] axId: Incomplete scaling: Incomplete delete: Incomplete @@ -242,10 +293,14 @@ class SeriesAxis(_BaseAxis): crossAx: Incomplete crosses: Incomplete crossesAt: Incomplete - tickLblSkip: Incomplete - tickMarkSkip: Incomplete + tickLblSkip: NestedInteger[Literal[True]] + tickMarkSkip: NestedInteger[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( - self, tickLblSkip: Incomplete | None = None, tickMarkSkip: Incomplete | None = None, extLst: Unused = None, **kw + self, + tickLblSkip: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + tickMarkSkip: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + extLst: Unused = None, + **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi index f06b54c64..2233b5b81 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi @@ -1,40 +1,41 @@ from _typeshed import Incomplete, Unused -from abc import abstractmethod from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.axis import ChartLines, NumericAxis, SeriesAxis, TextAxis from openpyxl.chart.label import DataLabelList -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedNoneSet, NestedSet, _HasTagAndGet, _NestedNoneSetParam from ._3d import _3DBase from ._chart import ChartBase +_BarChartBaseBarDir: TypeAlias = Literal["bar", "col"] +_BarChartBaseGrouping: TypeAlias = Literal["percentStacked", "clustered", "standard", "stacked"] +_BarChart3DShape: TypeAlias = Literal["cone", "coneToMax", "box", "cylinder", "pyramid", "pyramidToMax"] + class _BarChartBase(ChartBase): - barDir: Incomplete + barDir: NestedSet[_BarChartBaseBarDir] type: Alias - grouping: Incomplete - varyColors: Incomplete + grouping: NestedSet[_BarChartBaseGrouping] + varyColors: NestedBool[Literal[True]] ser: Incomplete dLbls: Typed[DataLabelList, Literal[True]] dataLabels: Alias __elements__: ClassVar[tuple[str, ...]] def __init__( self, - barDir: str = "col", - grouping: str = "clustered", - varyColors: Incomplete | None = None, + barDir: _HasTagAndGet[_BarChartBaseBarDir] | _BarChartBaseBarDir = "col", + grouping: _HasTagAndGet[_BarChartBaseGrouping] | _BarChartBaseGrouping = "clustered", + varyColors: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, ser=(), dLbls: DataLabelList | None = None, **kw, ) -> None: ... - @property - @abstractmethod - def tagname(self) -> str: ... class BarChart(_BarChartBase): - tagname: str + tagname: ClassVar[str] barDir: Incomplete grouping: Incomplete varyColors: Incomplete @@ -58,7 +59,7 @@ class BarChart(_BarChartBase): ) -> None: ... class BarChart3D(_BarChartBase, _3DBase): - tagname: str + tagname: ClassVar[str] barDir: Incomplete grouping: Incomplete varyColors: Incomplete @@ -70,7 +71,7 @@ class BarChart3D(_BarChartBase, _3DBase): backWall: Incomplete gapWidth: Incomplete gapDepth: Incomplete - shape: Incomplete + shape: NestedNoneSet[_BarChart3DShape] serLines: Typed[ChartLines, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] x_axis: Typed[TextAxis, Literal[False]] @@ -81,7 +82,7 @@ class BarChart3D(_BarChartBase, _3DBase): self, gapWidth: int = 150, gapDepth: int = 150, - shape: Incomplete | None = None, + shape: _NestedNoneSetParam[_BarChart3DShape] = None, serLines: ChartLines | None = None, extLst: Unused = None, **kw, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi index a1ba6637d..87868815b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi @@ -1,37 +1,40 @@ from _typeshed import Incomplete, Unused from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.axis import NumericAxis from openpyxl.chart.label import DataLabelList -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedMinMax, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam from ._chart import ChartBase +_BubbleChartSizeRepresents: TypeAlias = Literal["area", "w"] + class BubbleChart(ChartBase): - tagname: str - varyColors: Incomplete + tagname: ClassVar[str] + varyColors: NestedBool[Literal[True]] ser: Incomplete dLbls: Typed[DataLabelList, Literal[True]] dataLabels: Alias - bubble3D: Incomplete - bubbleScale: Incomplete - showNegBubbles: Incomplete - sizeRepresents: Incomplete + bubble3D: NestedBool[Literal[True]] + bubbleScale: NestedMinMax[float, Literal[True]] + showNegBubbles: NestedBool[Literal[True]] + sizeRepresents: NestedNoneSet[_BubbleChartSizeRepresents] extLst: Typed[ExtensionList, Literal[True]] x_axis: Typed[NumericAxis, Literal[False]] y_axis: Typed[NumericAxis, Literal[False]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - varyColors: Incomplete | None = None, + varyColors: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, ser=(), dLbls: DataLabelList | None = None, - bubble3D: Incomplete | None = None, - bubbleScale: Incomplete | None = None, - showNegBubbles: Incomplete | None = None, - sizeRepresents: Incomplete | None = None, + bubble3D: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + bubbleScale: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + showNegBubbles: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + sizeRepresents: _NestedNoneSetParam[_BubbleChartSizeRepresents] = None, extLst: Unused = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi index ad1da05ff..fdc79e6f5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete, Unused from typing import ClassVar, overload -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.legend import Legend from openpyxl.chart.pivot import PivotSource @@ -9,15 +9,18 @@ from openpyxl.chart.print_settings import PrintSettings from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText from openpyxl.chart.title import Title -from openpyxl.descriptors.base import Alias, String, Typed +from openpyxl.descriptors.base import Alias, String, Typed, _ConvertibleToBool, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedMinMax, NestedNoneSet, NestedString, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.colors import ColorMapping +_ChartContainerDispBlanksAs: TypeAlias = Literal["span", "gap", "zero"] + class ChartContainer(Serialisable): - tagname: str + tagname: ClassVar[str] title: Typed[Title, Literal[True]] - autoTitleDeleted: Incomplete + autoTitleDeleted: NestedBool[Literal[True]] pivotFmts: Incomplete view3D: Incomplete floor: Incomplete @@ -25,15 +28,15 @@ class ChartContainer(Serialisable): backWall: Incomplete plotArea: Typed[PlotArea, Literal[False]] legend: Typed[Legend, Literal[True]] - plotVisOnly: Incomplete - dispBlanksAs: Incomplete - showDLblsOverMax: Incomplete + plotVisOnly: NestedBool[Literal[False]] + dispBlanksAs: NestedNoneSet[_ChartContainerDispBlanksAs] + showDLblsOverMax: NestedBool[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, title: Title | None = None, - autoTitleDeleted: Incomplete | None = None, + autoTitleDeleted: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, pivotFmts=(), view3D: Incomplete | None = None, floor: Incomplete | None = None, @@ -41,44 +44,46 @@ class ChartContainer(Serialisable): backWall: Incomplete | None = None, plotArea: PlotArea | None = None, legend: Legend | None = None, - plotVisOnly: bool = True, - dispBlanksAs: str = "gap", - showDLblsOverMax: Incomplete | None = None, + plotVisOnly: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = True, + dispBlanksAs: _NestedNoneSetParam[_ChartContainerDispBlanksAs] = "gap", + showDLblsOverMax: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, extLst: Unused = None, ) -> None: ... class Protection(Serialisable): - tagname: str - chartObject: Incomplete - data: Incomplete - formatting: Incomplete - selection: Incomplete - userInterface: Incomplete + tagname: ClassVar[str] + chartObject: NestedBool[Literal[True]] + data: NestedBool[Literal[True]] + formatting: NestedBool[Literal[True]] + selection: NestedBool[Literal[True]] + userInterface: NestedBool[Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - chartObject: Incomplete | None = None, - data: Incomplete | None = None, - formatting: Incomplete | None = None, - selection: Incomplete | None = None, - userInterface: Incomplete | None = None, + chartObject: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + data: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + formatting: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + selection: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + userInterface: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, ) -> None: ... class ExternalData(Serialisable): - tagname: str - autoUpdate: Incomplete + tagname: ClassVar[str] + autoUpdate: NestedBool[Literal[True]] id: String[Literal[False]] @overload - def __init__(self, autoUpdate: Incomplete | None = None, *, id: str) -> None: ... + def __init__( + self, autoUpdate: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, *, id: str + ) -> None: ... @overload def __init__(self, autoUpdate: Incomplete | None, id: str) -> None: ... class ChartSpace(Serialisable): - tagname: str - date1904: Incomplete - lang: Incomplete - roundedCorners: Incomplete - style: Incomplete + tagname: ClassVar[str] + date1904: NestedBool[Literal[True]] + lang: NestedString[Literal[True]] + roundedCorners: NestedBool[Literal[True]] + style: NestedMinMax[float, Literal[True]] clrMapOvr: Typed[ColorMapping, Literal[True]] pivotSource: Typed[PivotSource, Literal[True]] protection: Typed[Protection, Literal[True]] @@ -95,10 +100,10 @@ class ChartSpace(Serialisable): @overload def __init__( self, - date1904: Incomplete | None = None, - lang: Incomplete | None = None, - roundedCorners: Incomplete | None = None, - style: Incomplete | None = None, + date1904: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + lang: object = None, + roundedCorners: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + style: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, clrMapOvr: ColorMapping | None = None, pivotSource: PivotSource | None = None, protection: Protection | None = None, @@ -114,10 +119,10 @@ class ChartSpace(Serialisable): @overload def __init__( self, - date1904: Incomplete | None, - lang: Incomplete | None, - roundedCorners: Incomplete | None, - style: Incomplete | None, + date1904: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None, + lang: object, + roundedCorners: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None, + style: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None, clrMapOvr: ColorMapping | None, pivotSource: PivotSource | None, protection: Protection | None, @@ -129,4 +134,4 @@ class ChartSpace(Serialisable): userShapes: Incomplete | None = None, extLst: Unused = None, ) -> None: ... - def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... + def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: str | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi index 613f97de0..791f97e7a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi @@ -5,7 +5,7 @@ from typing_extensions import Literal from openpyxl.descriptors import Strict from openpyxl.descriptors.base import Alias, Bool, Integer, String, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedText +from openpyxl.descriptors.nested import NestedInteger, NestedText, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable class NumFmt(Serialisable): @@ -13,56 +13,62 @@ class NumFmt(Serialisable): sourceLinked: Bool[Literal[False]] def __init__(self, formatCode: str, sourceLinked: _ConvertibleToBool = False) -> None: ... -class NumberValueDescriptor(NestedText): +class NumberValueDescriptor(NestedText[Incomplete, Incomplete]): allow_none: bool expected_type: type[Incomplete] def __set__(self, instance: Serialisable | Strict, value) -> None: ... # type: ignore[override] class NumVal(Serialisable): idx: Integer[Literal[False]] - formatCode: Incomplete + formatCode: NestedText[str, Literal[True]] v: Incomplete - def __init__(self, idx: _ConvertibleToInt, formatCode: Incomplete | None = None, v: Incomplete | None = None) -> None: ... + def __init__(self, idx: _ConvertibleToInt, formatCode: object = None, v: Incomplete | None = None) -> None: ... class NumData(Serialisable): - formatCode: Incomplete - ptCount: Incomplete + formatCode: NestedText[str, Literal[True]] + ptCount: NestedInteger[Literal[True]] pt: Incomplete extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( - self, formatCode: Incomplete | None = None, ptCount: Incomplete | None = None, pt=(), extLst: Unused = None + self, + formatCode: object = None, + ptCount: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + pt=(), + extLst: Unused = None, ) -> None: ... class NumRef(Serialisable): - f: Incomplete + f: NestedText[str, Literal[False]] ref: Alias numCache: Typed[NumData, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, f: Incomplete | None = None, numCache: NumData | None = None, extLst: Unused = None) -> None: ... + def __init__(self, f: object = None, numCache: NumData | None = None, extLst: Unused = None) -> None: ... class StrVal(Serialisable): - tagname: str + tagname: ClassVar[str] idx: Integer[Literal[False]] - v: Incomplete - def __init__(self, idx: _ConvertibleToInt = 0, v: Incomplete | None = None) -> None: ... + v: NestedText[str, Literal[False]] + def __init__(self, idx: _ConvertibleToInt = 0, v: object = None) -> None: ... class StrData(Serialisable): - tagname: str - ptCount: Incomplete + tagname: ClassVar[str] + ptCount: NestedInteger[Literal[True]] pt: Incomplete extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, ptCount: Incomplete | None = None, pt=(), extLst: Unused = None) -> None: ... + def __init__( + self, ptCount: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, pt=(), extLst: Unused = None + ) -> None: ... class StrRef(Serialisable): - tagname: str - f: Incomplete + tagname: ClassVar[str] + f: NestedText[str, Literal[True]] strCache: Typed[StrData, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, f: Incomplete | None = None, strCache: StrData | None = None, extLst: Unused = None) -> None: ... + def __init__(self, f: object = None, strCache: StrData | None = None, extLst: Unused = None) -> None: ... class NumDataSource(Serialisable): numRef: Typed[NumRef, Literal[True]] @@ -70,13 +76,13 @@ class NumDataSource(Serialisable): def __init__(self, numRef: NumRef | None = None, numLit: NumData | None = None) -> None: ... class Level(Serialisable): - tagname: str + tagname: ClassVar[str] pt: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, pt=()) -> None: ... class MultiLevelStrData(Serialisable): - tagname: str + tagname: ClassVar[str] ptCount: Integer[Literal[True]] lvl: Incomplete extLst: Typed[ExtensionList, Literal[True]] @@ -84,17 +90,15 @@ class MultiLevelStrData(Serialisable): def __init__(self, ptCount: _ConvertibleToInt | None = None, lvl=(), extLst: Unused = None) -> None: ... class MultiLevelStrRef(Serialisable): - tagname: str - f: Incomplete + tagname: ClassVar[str] + f: NestedText[str, Literal[False]] multiLvlStrCache: Typed[MultiLevelStrData, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__( - self, f: Incomplete | None = None, multiLvlStrCache: MultiLevelStrData | None = None, extLst: Unused = None - ) -> None: ... + def __init__(self, f: object = None, multiLvlStrCache: MultiLevelStrData | None = None, extLst: Unused = None) -> None: ... class AxDataSource(Serialisable): - tagname: str + tagname: ClassVar[str] numRef: Typed[NumRef, Literal[True]] numLit: Typed[NumData, Literal[True]] strRef: Typed[StrRef, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/descriptors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/descriptors.pyi index 8cd163b1d..eb1d72593 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/descriptors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/descriptors.pyi @@ -1,4 +1,3 @@ -from _typeshed import Incomplete from typing_extensions import Literal from openpyxl.chart.data_source import NumFmt @@ -6,17 +5,17 @@ from openpyxl.descriptors import Strict, Typed from openpyxl.descriptors.nested import NestedMinMax from openpyxl.descriptors.serialisable import Serialisable -class NestedGapAmount(NestedMinMax): +class NestedGapAmount(NestedMinMax[float, bool]): allow_none: bool min: float max: float -class NestedOverlap(NestedMinMax): +class NestedOverlap(NestedMinMax[float, bool]): allow_none: bool min: float max: float -class NumberFormatDescriptor(Typed[NumFmt, Incomplete]): +class NumberFormatDescriptor(Typed[NumFmt, Literal[True]]): expected_type: type[NumFmt] allow_none: Literal[True] def __set__(self, instance: Serialisable | Strict, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi index 922c7ce25..4f2804bc0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi @@ -1,38 +1,43 @@ -from _typeshed import Incomplete, Unused +from _typeshed import Unused from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.data_source import NumDataSource from openpyxl.chart.shapes import GraphicalProperties -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedNoneSet, NestedSet, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +_ErrorBarsErrBarType: TypeAlias = Literal["both", "minus", "plus"] +_ErrorBarsErrValType: TypeAlias = Literal["cust", "fixedVal", "percentage", "stdDev", "stdErr"] +_ErrorBarsErrDir: TypeAlias = Literal["x", "y"] + class ErrorBars(Serialisable): - tagname: str - errDir: Incomplete + tagname: ClassVar[str] + errDir: NestedNoneSet[_ErrorBarsErrDir] direction: Alias - errBarType: Incomplete + errBarType: NestedSet[_ErrorBarsErrBarType] style: Alias - errValType: Incomplete + errValType: NestedSet[_ErrorBarsErrValType] size: Alias - noEndCap: Incomplete + noEndCap: NestedBool[Literal[True]] plus: Typed[NumDataSource, Literal[True]] minus: Typed[NumDataSource, Literal[True]] - val: Incomplete + val: NestedFloat[Literal[True]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - errDir: Incomplete | None = None, - errBarType: str = "both", - errValType: str = "fixedVal", - noEndCap: Incomplete | None = None, + errDir: _NestedNoneSetParam[_ErrorBarsErrDir] = None, + errBarType: _HasTagAndGet[_ErrorBarsErrBarType] | _ErrorBarsErrBarType = "both", + errValType: _HasTagAndGet[_ErrorBarsErrValType] | _ErrorBarsErrValType = "fixedVal", + noEndCap: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, plus: NumDataSource | None = None, minus: NumDataSource | None = None, - val: Incomplete | None = None, + val: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, spPr: GraphicalProperties | None = None, extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi index 0473048ad..e7396adcc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi @@ -1,55 +1,54 @@ from _typeshed import Incomplete, Unused -from abc import abstractmethod from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedNoneSet, NestedString, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable as Serialisable +_DataLabelBaseDLblPos: TypeAlias = Literal["bestFit", "b", "ctr", "inBase", "inEnd", "l", "outEnd", "r", "t"] + class _DataLabelBase(Serialisable): - numFmt: Incomplete + numFmt: NestedString[Literal[True]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias txPr: Typed[RichText, Literal[True]] textProperties: Alias - dLblPos: Incomplete + dLblPos: NestedNoneSet[_DataLabelBaseDLblPos] position: Alias - showLegendKey: Incomplete - showVal: Incomplete - showCatName: Incomplete - showSerName: Incomplete - showPercent: Incomplete - showBubbleSize: Incomplete - showLeaderLines: Incomplete - separator: Incomplete + showLegendKey: NestedBool[Literal[True]] + showVal: NestedBool[Literal[True]] + showCatName: NestedBool[Literal[True]] + showSerName: NestedBool[Literal[True]] + showPercent: NestedBool[Literal[True]] + showBubbleSize: NestedBool[Literal[True]] + showLeaderLines: NestedBool[Literal[True]] + separator: NestedString[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - numFmt: Incomplete | None = None, + numFmt: object = None, spPr: GraphicalProperties | None = None, txPr: RichText | None = None, - dLblPos: Incomplete | None = None, - showLegendKey: Incomplete | None = None, - showVal: Incomplete | None = None, - showCatName: Incomplete | None = None, - showSerName: Incomplete | None = None, - showPercent: Incomplete | None = None, - showBubbleSize: Incomplete | None = None, - showLeaderLines: Incomplete | None = None, - separator: Incomplete | None = None, + dLblPos: _NestedNoneSetParam[_DataLabelBaseDLblPos] = None, + showLegendKey: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + showVal: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + showCatName: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + showSerName: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + showPercent: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + showBubbleSize: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + showLeaderLines: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + separator: object = None, extLst: Unused = None, ) -> None: ... - @property - @abstractmethod - def tagname(self) -> str: ... class DataLabel(_DataLabelBase): - tagname: str - idx: Incomplete + tagname: ClassVar[str] + idx: NestedInteger[Literal[False]] numFmt: Incomplete spPr: Incomplete txPr: Incomplete @@ -64,12 +63,12 @@ class DataLabel(_DataLabelBase): separator: Incomplete extLst: Incomplete __elements__: ClassVar[tuple[str, ...]] - def __init__(self, idx: int = 0, **kw) -> None: ... + def __init__(self, idx: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt = 0, **kw) -> None: ... class DataLabelList(_DataLabelBase): - tagname: str + tagname: ClassVar[str] dLbl: Incomplete - delete: Incomplete + delete: NestedBool[Literal[True]] numFmt: Incomplete spPr: Incomplete txPr: Incomplete @@ -84,4 +83,6 @@ class DataLabelList(_DataLabelBase): separator: Incomplete extLst: Incomplete __elements__: ClassVar[tuple[str, ...]] - def __init__(self, dLbl=(), delete: Incomplete | None = None, **kw) -> None: ... + def __init__( + self, dLbl=(), delete: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, **kw + ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi index 0d9b6a9cc..8d5337afc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi @@ -1,42 +1,46 @@ -from _typeshed import Incomplete, Unused +from _typeshed import Unused from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedMinMax, NestedNoneSet, NestedSet, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +_ManualLayoutMode: TypeAlias = Literal["edge", "factor"] +_ManualLayoutLayoutTarget: TypeAlias = Literal["inner", "outer"] + class ManualLayout(Serialisable): - tagname: str - layoutTarget: Incomplete - xMode: Incomplete - yMode: Incomplete - wMode: Incomplete - hMode: Incomplete - x: Incomplete - y: Incomplete - w: Incomplete + tagname: ClassVar[str] + layoutTarget: NestedNoneSet[_ManualLayoutLayoutTarget] + xMode: NestedNoneSet[_ManualLayoutMode] + yMode: NestedNoneSet[_ManualLayoutMode] + wMode: NestedSet[_ManualLayoutMode] + hMode: NestedSet[_ManualLayoutMode] + x: NestedMinMax[float, Literal[True]] + y: NestedMinMax[float, Literal[True]] + w: NestedMinMax[float, Literal[True]] width: Alias - h: Incomplete + h: NestedMinMax[float, Literal[True]] height: Alias extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - layoutTarget: Incomplete | None = None, - xMode: Incomplete | None = None, - yMode: Incomplete | None = None, - wMode: str = "factor", - hMode: str = "factor", - x: Incomplete | None = None, - y: Incomplete | None = None, - w: Incomplete | None = None, - h: Incomplete | None = None, + layoutTarget: _NestedNoneSetParam[_ManualLayoutLayoutTarget] = None, + xMode: _NestedNoneSetParam[_ManualLayoutMode] = None, + yMode: _NestedNoneSetParam[_ManualLayoutMode] = None, + wMode: _HasTagAndGet[_ManualLayoutMode] | _ManualLayoutMode = "factor", + hMode: _HasTagAndGet[_ManualLayoutMode] | _ManualLayoutMode = "factor", + x: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + y: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + w: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + h: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, extLst: Unused = None, ) -> None: ... class Layout(Serialisable): - tagname: str + tagname: ClassVar[str] manualLayout: Typed[ManualLayout, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi index e7dfc21cf..6ce837c98 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi @@ -1,30 +1,39 @@ from _typeshed import Incomplete, Unused from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.layout import Layout from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedSet, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable +_LegendLegendPos: TypeAlias = Literal["b", "tr", "l", "r", "t"] + class LegendEntry(Serialisable): - tagname: str - idx: Incomplete - delete: Incomplete + tagname: ClassVar[str] + idx: NestedInteger[Literal[False]] + delete: NestedBool[Literal[False]] txPr: Typed[RichText, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, idx: int = 0, delete: bool = False, txPr: RichText | None = None, extLst: Unused = None) -> None: ... + def __init__( + self, + idx: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt = 0, + delete: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = False, + txPr: RichText | None = None, + extLst: Unused = None, + ) -> None: ... class Legend(Serialisable): - tagname: str - legendPos: Incomplete + tagname: ClassVar[str] + legendPos: NestedSet[_LegendLegendPos] position: Alias legendEntry: Incomplete layout: Typed[Layout, Literal[True]] - overlay: Incomplete + overlay: NestedBool[Literal[True]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias txPr: Typed[RichText, Literal[True]] @@ -33,10 +42,10 @@ class Legend(Serialisable): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - legendPos: str = "r", + legendPos: _HasTagAndGet[_LegendLegendPos] | _LegendLegendPos = "r", legendEntry=(), layout: Layout | None = None, - overlay: Incomplete | None = None, + overlay: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, spPr: GraphicalProperties | None = None, txPr: RichText | None = None, extLst: Unused = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi index 122b13fd7..344250cfe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi @@ -1,19 +1,21 @@ from _typeshed import Incomplete, Unused -from abc import abstractmethod from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.axis import ChartLines, NumericAxis, _BaseAxis from openpyxl.chart.label import DataLabelList from openpyxl.chart.updown_bars import UpDownBars -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedSet, _HasTagAndGet from ._chart import ChartBase +_LineChartBaseGrouping: TypeAlias = Literal["percentStacked", "standard", "stacked"] + class _LineChartBase(ChartBase): - grouping: Incomplete - varyColors: Incomplete + grouping: NestedSet[_LineChartBaseGrouping] + varyColors: NestedBool[Literal[True]] ser: Incomplete dLbls: Typed[DataLabelList, Literal[True]] dataLabels: Alias @@ -21,19 +23,16 @@ class _LineChartBase(ChartBase): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - grouping: str = "standard", - varyColors: Incomplete | None = None, + grouping: _HasTagAndGet[_LineChartBaseGrouping] | _LineChartBaseGrouping = "standard", + varyColors: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, ser=(), dLbls: DataLabelList | None = None, dropLines: ChartLines | None = None, **kw, ) -> None: ... - @property - @abstractmethod - def tagname(self) -> str: ... class LineChart(_LineChartBase): - tagname: str + tagname: ClassVar[str] grouping: Incomplete varyColors: Incomplete ser: Incomplete @@ -41,8 +40,8 @@ class LineChart(_LineChartBase): dropLines: Incomplete hiLowLines: Typed[ChartLines, Literal[True]] upDownBars: Typed[UpDownBars, Literal[True]] - marker: Incomplete - smooth: Incomplete + marker: NestedBool[Literal[True]] + smooth: NestedBool[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] x_axis: Typed[_BaseAxis, Literal[False]] y_axis: Typed[NumericAxis, Literal[False]] @@ -51,14 +50,14 @@ class LineChart(_LineChartBase): self, hiLowLines: ChartLines | None = None, upDownBars: UpDownBars | None = None, - marker: Incomplete | None = None, - smooth: Incomplete | None = None, + marker: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + smooth: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, extLst: Unused = None, **kw, ) -> None: ... class LineChart3D(_LineChartBase): - tagname: str + tagname: ClassVar[str] grouping: Incomplete varyColors: Incomplete ser: Incomplete @@ -67,8 +66,8 @@ class LineChart3D(_LineChartBase): gapDepth: Incomplete hiLowLines: Typed[ChartLines, Literal[True]] upDownBars: Typed[UpDownBars, Literal[True]] - marker: Incomplete - smooth: Incomplete + marker: NestedBool[Literal[True]] + smooth: NestedBool[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] x_axis: Typed[ExtensionList, Literal[False]] y_axis: Typed[ExtensionList, Literal[False]] @@ -79,7 +78,7 @@ class LineChart3D(_LineChartBase): gapDepth: Incomplete | None = None, hiLowLines: ChartLines | None = None, upDownBars: UpDownBars | None = None, - marker: Incomplete | None = None, - smooth: Incomplete | None = None, + marker: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + smooth: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, **kw, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi index 1a19cf824..e4a158e0d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi @@ -1,36 +1,41 @@ -from _typeshed import Incomplete, Unused +from _typeshed import Unused from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.picture import PictureOptions from openpyxl.chart.shapes import GraphicalProperties -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedMinMax, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +_MarkerSymbol: TypeAlias = Literal[ + "circle", "dash", "diamond", "dot", "picture", "plus", "square", "star", "triangle", "x", "auto" +] + class Marker(Serialisable): - tagname: str - symbol: Incomplete - size: Incomplete + tagname: ClassVar[str] + symbol: NestedNoneSet[_MarkerSymbol] + size: NestedMinMax[float, Literal[True]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - symbol: Incomplete | None = None, - size: Incomplete | None = None, + symbol: _NestedNoneSetParam[_MarkerSymbol] = None, + size: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, spPr: GraphicalProperties | None = None, extLst: Unused = None, ) -> None: ... class DataPoint(Serialisable): - tagname: str - idx: Incomplete - invertIfNegative: Incomplete + tagname: ClassVar[str] + idx: NestedInteger[Literal[False]] + invertIfNegative: NestedBool[Literal[True]] marker: Typed[Marker, Literal[True]] - bubble3D: Incomplete - explosion: Incomplete + bubble3D: NestedBool[Literal[True]] + explosion: NestedInteger[Literal[True]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias pictureOptions: Typed[PictureOptions, Literal[True]] @@ -38,11 +43,11 @@ class DataPoint(Serialisable): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - idx: Incomplete | None = None, - invertIfNegative: Incomplete | None = None, + idx: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt, + invertIfNegative: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, marker: Marker | None = None, - bubble3D: Incomplete | None = None, - explosion: Incomplete | None = None, + bubble3D: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + explosion: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, spPr: GraphicalProperties | None = None, pictureOptions: PictureOptions | None = None, extLst: Unused = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi index ac155086d..0de58c404 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi @@ -1,21 +1,25 @@ -from _typeshed import Incomplete from typing import ClassVar +from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors.base import _ConvertibleToBool, _ConvertibleToFloat +from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +_PictureOptionsPictureFormat: TypeAlias = Literal["stretch", "stack", "stackScale"] + class PictureOptions(Serialisable): - tagname: str - applyToFront: Incomplete - applyToSides: Incomplete - applyToEnd: Incomplete - pictureFormat: Incomplete - pictureStackUnit: Incomplete + tagname: ClassVar[str] + applyToFront: NestedBool[Literal[True]] + applyToSides: NestedBool[Literal[True]] + applyToEnd: NestedBool[Literal[True]] + pictureFormat: NestedNoneSet[_PictureOptionsPictureFormat] + pictureStackUnit: NestedFloat[Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - applyToFront: Incomplete | None = None, - applyToSides: Incomplete | None = None, - applyToEnd: Incomplete | None = None, - pictureFormat: Incomplete | None = None, - pictureStackUnit: Incomplete | None = None, + applyToFront: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + applyToSides: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + applyToEnd: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + pictureFormat: _NestedNoneSetParam[_PictureOptionsPictureFormat] = None, + pictureStackUnit: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi index ca6774611..8d2338cd4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi @@ -1,39 +1,54 @@ from _typeshed import Incomplete, Unused -from abc import abstractmethod from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.axis import ChartLines from openpyxl.chart.label import DataLabelList -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import ( + NestedBool, + NestedFloat, + NestedMinMax, + NestedNoneSet, + NestedSet, + _HasTagAndGet, + _NestedNoneSetParam, +) from openpyxl.descriptors.serialisable import Serialisable from ._chart import ChartBase +_ProjectedPieChartOfPieType: TypeAlias = Literal["pie", "bar"] +_ProjectedPieChartSplitType: TypeAlias = Literal["auto", "cust", "percent", "pos", "val"] + class _PieChartBase(ChartBase): - varyColors: Incomplete + varyColors: NestedBool[Literal[True]] ser: Incomplete dLbls: Typed[DataLabelList, Literal[True]] dataLabels: Alias __elements__: ClassVar[tuple[str, ...]] - def __init__(self, varyColors: bool = True, ser=(), dLbls: DataLabelList | None = None) -> None: ... - @property - @abstractmethod - def tagname(self) -> str: ... + def __init__( + self, + varyColors: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = True, + ser=(), + dLbls: DataLabelList | None = None, + ) -> None: ... class PieChart(_PieChartBase): - tagname: str + tagname: ClassVar[str] varyColors: Incomplete ser: Incomplete dLbls: Incomplete - firstSliceAng: Incomplete + firstSliceAng: NestedMinMax[float, Literal[False]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, firstSliceAng: int = 0, extLst: Unused = None, **kw) -> None: ... + def __init__( + self, firstSliceAng: _HasTagAndGet[_ConvertibleToFloat] | _ConvertibleToFloat = 0, extLst: Unused = None, **kw + ) -> None: ... class PieChart3D(_PieChartBase): - tagname: str + tagname: ClassVar[str] varyColors: Incomplete ser: Incomplete dLbls: Incomplete @@ -41,46 +56,52 @@ class PieChart3D(_PieChartBase): __elements__: ClassVar[tuple[str, ...]] class DoughnutChart(_PieChartBase): - tagname: str + tagname: ClassVar[str] varyColors: Incomplete ser: Incomplete dLbls: Incomplete - firstSliceAng: Incomplete - holeSize: Incomplete + firstSliceAng: NestedMinMax[float, Literal[False]] + holeSize: NestedMinMax[float, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, firstSliceAng: int = 0, holeSize: int = 10, extLst: Unused = None, **kw) -> None: ... + def __init__( + self, + firstSliceAng: _HasTagAndGet[_ConvertibleToFloat] | _ConvertibleToFloat = 0, + holeSize: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = 10, + extLst: Unused = None, + **kw, + ) -> None: ... class CustomSplit(Serialisable): - tagname: str + tagname: ClassVar[str] secondPiePt: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, secondPiePt=()) -> None: ... class ProjectedPieChart(_PieChartBase): - tagname: str + tagname: ClassVar[str] varyColors: Incomplete ser: Incomplete dLbls: Incomplete - ofPieType: Incomplete + ofPieType: NestedSet[_ProjectedPieChartOfPieType] type: Alias gapWidth: Incomplete - splitType: Incomplete - splitPos: Incomplete + splitType: NestedNoneSet[_ProjectedPieChartSplitType] + splitPos: NestedFloat[Literal[True]] custSplit: Typed[CustomSplit, Literal[True]] - secondPieSize: Incomplete + secondPieSize: NestedMinMax[float, Literal[True]] serLines: Typed[ChartLines, Literal[True]] join_lines: Alias extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - ofPieType: str = "pie", + ofPieType: _HasTagAndGet[_ProjectedPieChartOfPieType] | _ProjectedPieChartOfPieType = "pie", gapWidth: Incomplete | None = None, - splitType: str = "auto", - splitPos: Incomplete | None = None, + splitType: _NestedNoneSetParam[_ProjectedPieChartSplitType] = "auto", + splitPos: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, custSplit: CustomSplit | None = None, - secondPieSize: int = 75, + secondPieSize: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = 75, serLines: ChartLines | None = None, extLst: Unused = None, **kw, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi index 2d9ae8111..fd7baf8d6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi @@ -1,26 +1,34 @@ -from _typeshed import Incomplete, Unused -from typing import ClassVar +from _typeshed import Unused +from typing import ClassVar, overload from typing_extensions import Literal from openpyxl.chart.label import DataLabel as _DataLabel from openpyxl.chart.marker import Marker from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedInteger, NestedText, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable class PivotSource(Serialisable): - tagname: str - name: Incomplete - fmtId: Incomplete + tagname: ClassVar[str] + name: NestedText[str, Literal[False]] + fmtId: NestedInteger[Literal[False]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, name: str | None = None, fmtId: Incomplete | None = None, extLst: Unused = None) -> None: ... + @overload + def __init__( + self, name: object, fmtId: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt, extLst: Unused = None + ) -> None: ... + @overload + def __init__( + self, name: object = None, *, fmtId: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt, extLst: Unused = None + ) -> None: ... class PivotFormat(Serialisable): - tagname: str - idx: Incomplete + tagname: ClassVar[str] + idx: NestedInteger[Literal[False]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias txPr: Typed[RichText, Literal[True]] @@ -32,7 +40,7 @@ class PivotFormat(Serialisable): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - idx: int = 0, + idx: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt = 0, spPr: GraphicalProperties | None = None, txPr: RichText | None = None, marker: Marker | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi index ef67d2b57..539c03fc5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi @@ -5,16 +5,17 @@ from typing_extensions import Literal from openpyxl.chart.layout import Layout from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable class DataTable(Serialisable): - tagname: str - showHorzBorder: Incomplete - showVertBorder: Incomplete - showOutline: Incomplete - showKeys: Incomplete + tagname: ClassVar[str] + showHorzBorder: NestedBool[Literal[True]] + showVertBorder: NestedBool[Literal[True]] + showOutline: NestedBool[Literal[True]] + showKeys: NestedBool[Literal[True]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias txPr: Typed[RichText, Literal[True]] @@ -22,17 +23,17 @@ class DataTable(Serialisable): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - showHorzBorder: Incomplete | None = None, - showVertBorder: Incomplete | None = None, - showOutline: Incomplete | None = None, - showKeys: Incomplete | None = None, + showHorzBorder: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + showVertBorder: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + showOutline: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + showKeys: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, spPr: GraphicalProperties | None = None, txPr: RichText | None = None, extLst: Unused = None, ) -> None: ... class PlotArea(Serialisable): - tagname: str + tagname: ClassVar[str] layout: Typed[Layout, Literal[True]] dTable: Typed[DataTable, Literal[True]] spPr: Typed[GraphicalProperties, Literal[True]] @@ -68,6 +69,6 @@ class PlotArea(Serialisable): _axes=(), extLst: Unused = None, ) -> None: ... - def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... + def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None, namespace: str | None = None): ... @classmethod def from_tree(cls, node): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi index c7f5ba881..f6c7a329d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/print_settings.pyi @@ -7,7 +7,7 @@ from openpyxl.worksheet.header_footer import HeaderFooter from openpyxl.worksheet.page import PrintPageSetup class PageMargins(Serialisable): - tagname: str + tagname: ClassVar[str] l: Float[Literal[False]] left: Alias r: Float[Literal[False]] @@ -29,7 +29,7 @@ class PageMargins(Serialisable): ) -> None: ... class PrintSettings(Serialisable): - tagname: str + tagname: ClassVar[str] headerFooter: Typed[HeaderFooter, Literal[True]] pageMargins: Typed[PageMargins, Literal[True]] pageSetup: Typed[PrintPageSetup, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi index 93cda0001..68d53d622 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi @@ -1,19 +1,22 @@ from _typeshed import Incomplete, Unused from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.axis import NumericAxis, TextAxis from openpyxl.chart.label import DataLabelList -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedSet, _HasTagAndGet from ._chart import ChartBase +_RadarChartRadarStyle: TypeAlias = Literal["standard", "marker", "filled"] + class RadarChart(ChartBase): - tagname: str - radarStyle: Incomplete + tagname: ClassVar[str] + radarStyle: NestedSet[_RadarChartRadarStyle] type: Alias - varyColors: Incomplete + varyColors: NestedBool[Literal[True]] ser: Incomplete dLbls: Typed[DataLabelList, Literal[True]] dataLabels: Alias @@ -23,8 +26,8 @@ class RadarChart(ChartBase): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - radarStyle: str = "standard", - varyColors: Incomplete | None = None, + radarStyle: _HasTagAndGet[_RadarChartRadarStyle] | _RadarChartRadarStyle = "standard", + varyColors: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, ser=(), dLbls: DataLabelList | None = None, extLst: Unused = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi index 2aebe5b13..59d92ba27 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi @@ -1,18 +1,21 @@ from _typeshed import Incomplete, Unused from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.axis import NumericAxis, TextAxis from openpyxl.chart.label import DataLabelList -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam from ._chart import ChartBase as ChartBase +_ScatterChartScatterStyle: TypeAlias = Literal["line", "lineMarker", "marker", "smooth", "smoothMarker"] + class ScatterChart(ChartBase): - tagname: str - scatterStyle: Incomplete - varyColors: Incomplete + tagname: ClassVar[str] + scatterStyle: NestedNoneSet[_ScatterChartScatterStyle] + varyColors: NestedBool[Literal[True]] ser: Incomplete dLbls: Typed[DataLabelList, Literal[True]] dataLabels: Alias @@ -22,8 +25,8 @@ class ScatterChart(ChartBase): __elements__: ClassVar[tuple[str, ...]] def __init__( self, - scatterStyle: Incomplete | None = None, - varyColors: Incomplete | None = None, + scatterStyle: _NestedNoneSetParam[_ScatterChartScatterStyle] = None, + varyColors: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, ser=(), dLbls: DataLabelList | None = None, extLst: Unused = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi index 7dcb7b771..b87eac1d9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete, Unused from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.data_source import AxDataSource, NumDataSource, StrRef from openpyxl.chart.error_bar import ErrorBars @@ -9,24 +9,27 @@ from openpyxl.chart.marker import Marker from openpyxl.chart.picture import PictureOptions from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.trendline import Trendline -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedNoneSet, NestedText, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +_SeriesShape: TypeAlias = Literal["cone", "coneToMax", "box", "cylinder", "pyramid", "pyramidToMax"] + attribute_mapping: Incomplete class SeriesLabel(Serialisable): - tagname: str + tagname: ClassVar[str] strRef: Typed[StrRef, Literal[True]] - v: Incomplete + v: NestedText[str, Literal[True]] value: Alias __elements__: ClassVar[tuple[str, ...]] - def __init__(self, strRef: StrRef | None = None, v: Incomplete | None = None) -> None: ... + def __init__(self, strRef: StrRef | None = None, v: object = None) -> None: ... class Series(Serialisable): - tagname: str - idx: Incomplete - order: Incomplete + tagname: ClassVar[str] + idx: NestedInteger[Literal[False]] + order: NestedInteger[Literal[False]] tx: Typed[SeriesLabel, Literal[True]] title: Alias spPr: Typed[GraphicalProperties, Literal[True]] @@ -42,21 +45,21 @@ class Series(Serialisable): identifiers: Alias val: Typed[NumDataSource, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] - invertIfNegative: Incomplete - shape: Incomplete + invertIfNegative: NestedBool[Literal[True]] + shape: NestedNoneSet[_SeriesShape] xVal: Typed[AxDataSource, Literal[True]] yVal: Typed[NumDataSource, Literal[True]] bubbleSize: Typed[NumDataSource, Literal[True]] zVal: Alias - bubble3D: Incomplete + bubble3D: NestedBool[Literal[True]] marker: Typed[Marker, Literal[True]] - smooth: Incomplete - explosion: Incomplete + smooth: NestedBool[Literal[True]] + explosion: NestedInteger[Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - idx: int = 0, - order: int = 0, + idx: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt = 0, + order: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt = 0, tx: SeriesLabel | None = None, spPr: GraphicalProperties | None = None, pictureOptions: PictureOptions | None = None, @@ -66,18 +69,18 @@ class Series(Serialisable): errBars: ErrorBars | None = None, cat: AxDataSource | None = None, val: NumDataSource | None = None, - invertIfNegative: Incomplete | None = None, - shape: Incomplete | None = None, + invertIfNegative: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + shape: _NestedNoneSetParam[_SeriesShape] = None, xVal: AxDataSource | None = None, yVal: NumDataSource | None = None, bubbleSize: NumDataSource | None = None, - bubble3D: Incomplete | None = None, + bubble3D: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, marker: Marker | None = None, - smooth: Incomplete | None = None, - explosion: Incomplete | None = None, + smooth: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + explosion: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, extLst: Unused = None, ) -> None: ... - def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] + def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None): ... # type: ignore[override] class XYSeries(Series): idx: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi index 11f1cb588..f973f3004 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi @@ -2,7 +2,8 @@ from _typeshed import Incomplete, Unused from typing import ClassVar from typing_extensions import Literal, TypeAlias -from openpyxl.descriptors.base import Alias, NoneSet, Typed +from openpyxl.descriptors.base import Alias, NoneSet, Typed, _ConvertibleToBool +from openpyxl.descriptors.nested import EmptyTag, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.fill import GradientFillProperties, PatternFillProperties from openpyxl.drawing.geometry import CustomGeometry2D, PresetGeometry2D, Scene3D, Shape3D, Transform2D @@ -13,13 +14,13 @@ _GraphicalPropertiesBwMode: TypeAlias = Literal[ ] class GraphicalProperties(Serialisable): - tagname: str + tagname: ClassVar[str] bwMode: NoneSet[_GraphicalPropertiesBwMode] xfrm: Typed[Transform2D, Literal[True]] transform: Alias custGeom: Typed[CustomGeometry2D, Literal[True]] prstGeom: Typed[PresetGeometry2D, Literal[True]] - noFill: Incomplete + noFill: EmptyTag[Literal[False]] solidFill: Incomplete gradFill: Typed[GradientFillProperties, Literal[True]] pattFill: Typed[PatternFillProperties, Literal[True]] @@ -34,7 +35,7 @@ class GraphicalProperties(Serialisable): self, bwMode: _GraphicalPropertiesBwMode | Literal["none"] | None = None, xfrm: Transform2D | None = None, - noFill: Incomplete | None = None, + noFill: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, solidFill: Incomplete | None = None, gradFill: GradientFillProperties | None = None, pattFill: PatternFillProperties | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi index f97cc1249..54ac6ae5e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/stock_chart.pyi @@ -11,7 +11,7 @@ from openpyxl.descriptors.excel import ExtensionList from ._chart import ChartBase class StockChart(ChartBase): - tagname: str + tagname: ClassVar[str] ser: Incomplete dLbls: Typed[DataLabelList, Literal[True]] dataLabels: Alias diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi index ea9d2a3bb..4178fcf21 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi @@ -1,43 +1,48 @@ from _typeshed import Incomplete -from abc import abstractmethod from typing import ClassVar from typing_extensions import Literal from openpyxl.chart.axis import NumericAxis, SeriesAxis, TextAxis from openpyxl.chart.shapes import GraphicalProperties -from openpyxl.descriptors.base import Alias, Typed +from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedInteger, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable from ._3d import _3DBase from ._chart import ChartBase class BandFormat(Serialisable): - tagname: str - idx: Incomplete + tagname: ClassVar[str] + idx: NestedInteger[Literal[False]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias __elements__: ClassVar[tuple[str, ...]] - def __init__(self, idx: int = 0, spPr: GraphicalProperties | None = None) -> None: ... + def __init__( + self, idx: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt = 0, spPr: GraphicalProperties | None = None + ) -> None: ... class BandFormatList(Serialisable): - tagname: str + tagname: ClassVar[str] bandFmt: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, bandFmt=()) -> None: ... class _SurfaceChartBase(ChartBase): - wireframe: Incomplete + wireframe: NestedBool[Literal[True]] ser: Incomplete bandFmts: Typed[BandFormatList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, wireframe: Incomplete | None = None, ser=(), bandFmts: BandFormatList | None = None, **kw) -> None: ... - @property - @abstractmethod - def tagname(self) -> str: ... + def __init__( + self, + wireframe: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + ser=(), + bandFmts: BandFormatList | None = None, + **kw, + ) -> None: ... class SurfaceChart3D(_SurfaceChartBase, _3DBase): - tagname: str + tagname: ClassVar[str] wireframe: Incomplete ser: Incomplete bandFmts: Incomplete @@ -49,7 +54,7 @@ class SurfaceChart3D(_SurfaceChartBase, _3DBase): def __init__(self, **kw) -> None: ... class SurfaceChart(SurfaceChart3D): - tagname: str + tagname: ClassVar[str] wireframe: Incomplete ser: Incomplete bandFmts: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi index 72edd6947..c9bebcc87 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/text.pyi @@ -8,7 +8,7 @@ from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.text import ListStyle, RichTextProperties class RichText(Serialisable): - tagname: str + tagname: ClassVar[str] bodyPr: Typed[RichTextProperties, Literal[False]] properties: Alias lstStyle: Typed[ListStyle, Literal[True]] @@ -20,9 +20,9 @@ class RichText(Serialisable): ) -> None: ... class Text(Serialisable): - tagname: str + tagname: ClassVar[str] strRef: Typed[StrRef, Literal[True]] rich: Typed[RichText, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__(self, strRef: StrRef | None = None, rich: RichText | None = None) -> None: ... - def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... + def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None, namespace: str | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi index 49c4f8efd..5159ccb32 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi @@ -6,16 +6,17 @@ from openpyxl.chart.layout import Layout from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText, Text from openpyxl.descriptors import Strict, Typed -from openpyxl.descriptors.base import Alias +from openpyxl.descriptors.base import Alias, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable class Title(Serialisable): - tagname: str + tagname: ClassVar[str] tx: Typed[Text, Literal[True]] text: Alias layout: Typed[Layout, Literal[True]] - overlay: Incomplete + overlay: NestedBool[Literal[True]] spPr: Typed[GraphicalProperties, Literal[True]] graphicalProperties: Alias txPr: Typed[RichText, Literal[True]] @@ -26,7 +27,7 @@ class Title(Serialisable): self, tx: Text | None = None, layout: Layout | None = None, - overlay: Incomplete | None = None, + overlay: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, spPr: GraphicalProperties | None = None, txPr: RichText | None = None, extLst: Unused = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi index aff6c9473..409b34b25 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi @@ -1,17 +1,20 @@ -from _typeshed import Incomplete, Unused +from _typeshed import Unused from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Literal, TypeAlias from openpyxl.chart.data_source import NumFmt from openpyxl.chart.layout import Layout from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText, Text -from openpyxl.descriptors.base import Alias, String, Typed +from openpyxl.descriptors.base import Alias, String, Typed, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedInteger, NestedSet, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable +_TrendlineTrendlineType: TypeAlias = Literal["exp", "linear", "log", "movingAvg", "poly", "power"] + class TrendlineLabel(Serialisable): - tagname: str + tagname: ClassVar[str] layout: Typed[Layout, Literal[True]] tx: Typed[Text, Literal[True]] numFmt: Typed[NumFmt, Literal[True]] @@ -32,18 +35,18 @@ class TrendlineLabel(Serialisable): ) -> None: ... class Trendline(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[True]] spPr: Typed[ExtensionList, Literal[True]] graphicalProperties: Alias - trendlineType: Incomplete - order: Incomplete - period: Incomplete - forward: Incomplete - backward: Incomplete - intercept: Incomplete - dispRSqr: Incomplete - dispEq: Incomplete + trendlineType: NestedSet[_TrendlineTrendlineType] + order: NestedInteger[Literal[True]] + period: NestedInteger[Literal[True]] + forward: NestedFloat[Literal[True]] + backward: NestedFloat[Literal[True]] + intercept: NestedFloat[Literal[True]] + dispRSqr: NestedBool[Literal[True]] + dispEq: NestedBool[Literal[True]] trendlineLbl: Typed[ExtensionList, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] @@ -51,14 +54,14 @@ class Trendline(Serialisable): self, name: str | None = None, spPr: ExtensionList | None = None, - trendlineType: str = "linear", - order: Incomplete | None = None, - period: Incomplete | None = None, - forward: Incomplete | None = None, - backward: Incomplete | None = None, - intercept: Incomplete | None = None, - dispRSqr: Incomplete | None = None, - dispEq: Incomplete | None = None, + trendlineType: _HasTagAndGet[_TrendlineTrendlineType] | _TrendlineTrendlineType = "linear", + order: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + period: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + forward: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + backward: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + intercept: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + dispRSqr: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + dispEq: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, trendlineLbl: ExtensionList | None = None, extLst: Unused = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi index 5e789b700..60e7ad447 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/updown_bars.pyi @@ -8,7 +8,7 @@ from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class UpDownBars(Serialisable): - tagname: str + tagname: ClassVar[str] gapWidth: Incomplete upBars: Typed[ChartLines, Literal[True]] downBars: Typed[ChartLines, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi index 8df0c1eaa..d174f5ffa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/chartsheet.pyi @@ -19,7 +19,7 @@ from openpyxl.worksheet.page import PageMargins, PrintPageSetup _ChartsheetSheetState: TypeAlias = Literal["visible", "hidden", "veryHidden"] class Chartsheet(_WorkbookChild, Serialisable): - tagname: str + tagname: ClassVar[str] mime_type: str sheetPr: Typed[ChartsheetProperties, Literal[True]] sheetViews: Typed[ChartsheetViewList, Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi index 657bf69b6..4298cd190 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/custom.pyi @@ -10,7 +10,7 @@ from openpyxl.worksheet.page import PageMargins, PrintPageSetup _CustomChartsheetViewState: TypeAlias = Literal["visible", "hidden", "veryHidden"] class CustomChartsheetView(Serialisable): - tagname: str + tagname: ClassVar[str] guid: Incomplete scale: Integer[Literal[False]] state: Set[_CustomChartsheetViewState] @@ -44,7 +44,7 @@ class CustomChartsheetView(Serialisable): ) -> None: ... class CustomChartsheetViews(Serialisable): - tagname: str + tagname: ClassVar[str] customSheetView: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, customSheetView: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi index aa960694f..9c0eec5b6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/properties.pyi @@ -6,7 +6,7 @@ from openpyxl.descriptors.serialisable import Serialisable as Serialisable from openpyxl.styles.colors import Color class ChartsheetProperties(Serialisable): - tagname: str + tagname: ClassVar[str] published: Bool[Literal[True]] codeName: String[Literal[True]] tabColor: Typed[Color, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi index 629fa3abc..9504f187b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/protection.pyi @@ -7,7 +7,7 @@ from openpyxl.descriptors.serialisable import Serialisable from openpyxl.worksheet.protection import _Protected class ChartsheetProtection(Serialisable, _Protected): - tagname: str + tagname: ClassVar[str] algorithmName: String[Literal[True]] hashValue: Incomplete saltValue: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi index 667706d14..92c6008a7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/publish.pyi @@ -10,7 +10,7 @@ _WebPublishItemSourceType: TypeAlias = Literal[ ] class WebPublishItem(Serialisable): - tagname: str + tagname: ClassVar[str] id: Integer[Literal[False]] divId: String[Literal[False]] sourceType: Set[_WebPublishItemSourceType] @@ -46,7 +46,7 @@ class WebPublishItem(Serialisable): ) -> None: ... class WebPublishItems(Serialisable): - tagname: str + tagname: ClassVar[str] count: Integer[Literal[True]] webPublishItem: Incomplete __elements__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi index 95ae0902f..718a65b37 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/relation.pyi @@ -1,11 +1,12 @@ from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from openpyxl.descriptors.base import Alias, Integer, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable class SheetBackgroundPicture(Serialisable): - tagname: str + tagname: ClassVar[str] id: Incomplete def __init__(self, id) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi index 5f20f7c95..cdc5d1ad6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chartsheet/views.pyi @@ -7,7 +7,7 @@ from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class ChartsheetView(Serialisable): - tagname: str + tagname: ClassVar[str] tabSelected: Bool[Literal[True]] zoomScale: Integer[Literal[True]] workbookViewId: Integer[Literal[False]] @@ -24,7 +24,7 @@ class ChartsheetView(Serialisable): ) -> None: ... class ChartsheetViewList(Serialisable): - tagname: str + tagname: ClassVar[str] sheetView: Incomplete extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi index 89ef622d4..ceba5327e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/author.pyi @@ -1,10 +1,11 @@ from _typeshed import Incomplete +from typing import ClassVar from openpyxl.descriptors.base import Alias from openpyxl.descriptors.serialisable import Serialisable class AuthorList(Serialisable): - tagname: str + tagname: ClassVar[str] author: Incomplete authors: Alias def __init__(self, author=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi index 2fb64a3b8..4d10664d0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/comment_sheet.pyi @@ -74,7 +74,7 @@ class Properties(Serialisable): ) -> None: ... class CommentRecord(Serialisable): - tagname: str + tagname: ClassVar[str] ref: String[Literal[False]] authorId: Integer[Literal[False]] guid: Incomplete @@ -104,7 +104,7 @@ class CommentRecord(Serialisable): def content(self): ... class CommentSheet(Serialisable): - tagname: str + tagname: ClassVar[str] authors: Typed[AuthorList, Literal[False]] commentList: Incomplete extLst: Typed[ExtensionList, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/compat/numbers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/compat/numbers.pyi index 2d5d36fc1..5e49423c0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/compat/numbers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/compat/numbers.pyi @@ -1,4 +1,17 @@ -from _typeshed import Incomplete +from decimal import Decimal +from typing_extensions import Final, TypeAlias -NUMERIC_TYPES: Incomplete -NUMPY: bool +# NOTE: Can't specify numpy as a dependency because openpyxl doesn't declare it as one +# import numpy +# if sys.version_info >= (3, 8): +# import numpy._typing + +# _NBitBase: TypeAlias = numpy._typing.NBitBase +# else: +# _NBitBase: TypeAlias = Any +# _NumericTypes: TypeAlias = int | float | Decimal | numpy.bool_ | numpy.floating[_NBitBase] | numpy.integer[_NBitBase] + +_NumericTypes: TypeAlias = int | float | Decimal +NUMERIC_TYPES: Final[tuple[type[_NumericTypes], ...]] + +NUMPY: Final[bool] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/compat/strings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/compat/strings.pyi index 0e3080ebd..7a6789a20 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/compat/strings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/compat/strings.pyi @@ -1,5 +1,6 @@ -from _typeshed import Incomplete +import sys +from typing_extensions import Final -VER: Incomplete +VER: Final[sys._version_info] def safe_string(value): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi index 5fa2dac33..1360e48ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi @@ -30,10 +30,11 @@ class Descriptor(Generic[_T]): def __set__(self, instance: Serialisable | Strict, value: _T) -> None: ... class Typed(Descriptor[_T], Generic[_T, _N]): + __doc__: str + # Members optional in __init__ expected_type: type[_T] allow_none: _N nested: bool - __doc__: Incomplete @overload def __init__( @@ -265,7 +266,7 @@ class Bool(Convertible[bool, _N]): @overload def __init__(self: Bool[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... def __set__( # type:ignore[override] # Different restrictions - self: Bool[Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToBool | None + self, instance: Serialisable | Strict, value: _ConvertibleToBool ) -> None: ... class String(Typed[str, _N]): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi index 4424ddc88..7bf24ad9d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete -from typing import TypeVar +from typing import ClassVar, TypeVar from typing_extensions import Literal from . import Integer, MatchPattern, MinMax, Strict, String @@ -36,7 +36,7 @@ class ExtensionList(Serialisable): def __init__(self, ext=()) -> None: ... class Relation(String[Incomplete]): - namespace: Incomplete + namespace: ClassVar[str] allow_none: bool class Base64Binary(MatchPattern[str, Incomplete]): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/namespace.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/namespace.pyi index db3a017fc..68d35cd8c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/namespace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/namespace.pyi @@ -1,3 +1 @@ -from _typeshed import Incomplete - -def namespaced(obj, tagname, namespace: Incomplete | None = None): ... +def namespaced(obj, tagname, namespace: str | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi index 2c0643e5d..7a68e909d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi @@ -1,41 +1,281 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused +from collections.abc import Callable, Iterable +from typing import Any, ClassVar, NoReturn, Protocol, TypeVar, overload +from typing_extensions import Literal, TypeAlias from openpyxl.descriptors import Strict from openpyxl.descriptors.base import Bool, Convertible, Descriptor, Float, Integer, MinMax, NoneSet, Set, String from openpyxl.descriptors.serialisable import Serialisable +from openpyxl.drawing.fill import Blip +from openpyxl.xml.functions import Element -# NOTE: # type: ignore[misc]: Class does not reimplement the relevant methods, so runtime also has incompatible supertypes - -class Nested(Descriptor[Incomplete]): - nested: bool - attribute: str - def __set__(self, instance: Serialisable | Strict, value) -> None: ... - def from_tree(self, node): ... - def to_tree( - self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None - ): ... - -class NestedValue(Nested, Convertible[Incomplete, Incomplete]): ... # type: ignore[misc] - -class NestedText(NestedValue): - def from_tree(self, node): ... - def to_tree( - self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None - ): ... - -class NestedFloat(NestedValue, Float[Incomplete]): ... # type: ignore[misc] -class NestedInteger(NestedValue, Integer[Incomplete]): ... # type: ignore[misc] -class NestedString(NestedValue, String[Incomplete]): ... # type: ignore[misc] - -class NestedBool(NestedValue, Bool[Incomplete]): # type: ignore[misc] - def from_tree(self, node): ... - -class NestedNoneSet(Nested, NoneSet[Incomplete]): ... -class NestedSet(Nested, Set[Incomplete]): ... -class NestedMinMax(Nested, MinMax[Incomplete, Incomplete]): ... # type: ignore[misc] - -class EmptyTag(Nested, Bool[Incomplete]): # type: ignore[misc] - def from_tree(self, node): ... - def to_tree( - self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None - ): ... +from .base import _M, _N, _T, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt, _ExpectedTypeParam + +_T_co = TypeVar("_T_co", covariant=True) + +# Usually an Element() from either lxml or xml.etree (has a 'tag' element) +class _HasTagAndGet(Protocol[_T_co]): + tag: Any # str | None | Callable[..., Any] + def get(self, __value: str) -> _T_co | None: ... + +class _HasTagAndText(Protocol): + tag: str | Callable[..., Any] + text: str + +_NestedNoneSetParam: TypeAlias = _HasTagAndGet[_T | Literal["none"] | None] | _T | Literal["none"] | None + +# NOTE: type: ignore[misc]: Class does not reimplement the relevant methods, so runtime also has incompatible supertypes + +class Nested(Descriptor[_T]): + nested: ClassVar[Literal[True]] + attribute: ClassVar[str] + # Members optional in __init__ + expected_type: type[_T] + allow_none: bool + namespace: str | None + # In usage, "Nested" is closed to "Typed" than "Descriptor", but doesn't use allow_none + def __init__( + self: Nested[_T], + name: str | None = None, + *, + expected_type: _ExpectedTypeParam[_T], + allow_none: bool = False, + nested: Unused = True, + namespace: str | None = None, + ) -> None: ... + def __get__(self, instance: Serialisable | Strict, cls: type | None) -> _T: ... + def __set__(self, instance: Serialisable | Strict, value: _HasTagAndGet[_T] | _T) -> None: ... + def from_tree(self, node: _HasTagAndGet[_T]) -> _T: ... + def to_tree(self, tagname: str | None = None, value: Incomplete | None = None, namespace: str | None = None) -> Element: ... + +class NestedValue(Nested[_T], Convertible[_T, _N]): # type: ignore[misc] + @overload + def __init__( + self: NestedValue[_T, Literal[True]], + name: str | None = None, + *, + expected_type: _ExpectedTypeParam[_T], + allow_none: Literal[True], + ) -> None: ... + @overload + def __init__( + self: NestedValue[_T, Literal[False]], + name: str | None = None, + *, + expected_type: _ExpectedTypeParam[_T], + allow_none: Literal[False] = False, + ) -> None: ... + @overload + def __get__(self: NestedValue[_T, Literal[True]], instance: Serialisable | Strict, cls: type | None = None) -> _T | None: ... + @overload + def __get__(self: NestedValue[_T, Literal[False]], instance: Serialisable | Strict, cls: type | None = None) -> _T: ... + # NOTE: It is currently impossible to make a generic based on the parameter type of another generic + # So we implement explicitely the types used internally + # str | Blip + @overload + def __set__( + self: NestedValue[str, bool] | NestedValue[Blip, bool], + instance: Serialisable | Strict, + value: object, # Not[None] when _N = False + ) -> None: ... + # bool + @overload + def __set__( + self: NestedValue[bool, bool], + instance: Serialisable | Strict, + value: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool, + ) -> None: ... + # int + @overload + def __set__( + self: NestedValue[int, Literal[True]], + instance: Serialisable | Strict, + value: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + ) -> None: ... + @overload + def __set__( + self: NestedValue[int, Literal[False]], + instance: Serialisable | Strict, + value: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt, + ) -> None: ... + # float + @overload + def __set__( + self: NestedValue[float, Literal[True]], + instance: Serialisable | Strict, + value: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None, + ) -> None: ... + @overload + def __set__( + self: NestedValue[float, Literal[False]], + instance: Serialisable | Strict, + value: _HasTagAndGet[_ConvertibleToFloat] | _ConvertibleToFloat, + ) -> None: ... + # Anything else + @overload + def __set__( + self: NestedValue[_T, Literal[True]], + instance: Serialisable | Strict, + value: _HasTagAndGet[_T | int | Any] | _T | int | Any | None, + ) -> None: ... + +class NestedText(NestedValue[_T, _N]): + @overload + def __init__( + self: NestedText[_T, Literal[True]], + name: str | None = None, + *, + expected_type: _ExpectedTypeParam[_T], + allow_none: Literal[True], + ) -> None: ... + @overload + def __init__( + self: NestedText[_T, Literal[False]], + name: str | None = None, + *, + expected_type: _ExpectedTypeParam[_T], + allow_none: Literal[False] = False, + ) -> None: ... + @overload + def __get__(self: NestedText[_T, Literal[True]], instance: Serialisable | Strict, cls: type | None = None) -> _T | None: ... + @overload + def __get__(self: NestedText[_T, Literal[False]], instance: Serialisable | Strict, cls: type | None = None) -> _T: ... + # NOTE: It is currently impossible to make a generic based on the parameter type of another generic + # So we implement explicitely the types used internally + # str + @overload + def __set__( # type: ignore[misc] # Incompatible return type because of NoReturn + self: NestedValue[str, bool], instance: Serialisable | Strict, value: object # Not[None] when _N = False + ) -> None: ... + # int + @overload + def __set__( + self: NestedValue[int, Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToInt | None + ) -> None: ... + @overload + def __set__(self: NestedValue[int, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToInt) -> None: ... + # If expected type (_T) is not str, it's impossible to use an Element as the value + @overload + def __set__(self: NestedValue[_T, Literal[True]], instance: Serialisable | Strict, value: _HasTagAndGet[Any]) -> NoReturn: ... + # Anything else + @overload + def __set__(self: NestedValue[_T, Literal[True]], instance: Serialisable | Strict, value: _T | int | Any | None) -> None: ... + def from_tree(self, node: _HasTagAndText) -> str: ... # type: ignore[override] + def to_tree(self, tagname: str | None = None, value: Incomplete | None = None, namespace: str | None = None) -> Element: ... + +class NestedFloat(NestedValue[float, _N], Float[_N]): # type: ignore[misc] + @overload + def __init__(self: NestedFloat[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: NestedFloat[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... + +class NestedInteger(NestedValue[int, _N], Integer[_N]): # type: ignore[misc] + @overload + def __init__(self: NestedInteger[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: NestedInteger[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... + +class NestedString(NestedValue[str, _N], String[_N]): # type: ignore[misc] + @overload + def __init__(self: NestedString[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: NestedString[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... + +class NestedBool(NestedValue[bool, _N], Bool[_N]): # type: ignore[misc] + @overload + def __init__(self: NestedBool[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: NestedBool[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... + def __set__( # type:ignore[override] # Different restrictions + self, instance: Serialisable | Strict, value: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool + ) -> None: ... + def from_tree(self, node) -> bool: ... # type: ignore[override] # Actual overriden return type + +class NestedNoneSet(Nested[_T | None], NoneSet[_T]): # type: ignore[misc] + def __init__(self, name: str | None = None, *, values: Iterable[_T | None]) -> None: ... + def __set__(self, instance: Serialisable | Strict, value: _NestedNoneSetParam[_T]) -> None: ... + +class NestedSet(Nested[_T], Set[_T]): + def __init__(self, name: str | None = None, *, values: Iterable[_T]) -> None: ... + +class NestedMinMax(Nested[_M], MinMax[_M, _N]): # type: ignore[misc] + @overload + def __init__( + self: NestedMinMax[int, Literal[True]], + *, + expected_type: _ExpectedTypeParam[int], + allow_none: Literal[True], + min: float, + max: float, + ) -> None: ... + @overload + def __init__( + self: NestedMinMax[int, Literal[False]], + *, + expected_type: _ExpectedTypeParam[int], + allow_none: Literal[False] = False, + min: float, + max: float, + ) -> None: ... + # mypy can't infer type from `expected_type = float` (pyright can), so we have to add extra overloads + @overload + def __init__( + self: NestedMinMax[float, Literal[True]], + *, + expected_type: _ExpectedTypeParam[float] = ..., + allow_none: Literal[True], + min: float, + max: float, + ) -> None: ... + @overload + def __init__( + self: NestedMinMax[float, Literal[False]], + *, + expected_type: _ExpectedTypeParam[float] = ..., + allow_none: Literal[False] = False, + min: float, + max: float, + ) -> None: ... + @overload + def __get__(self: NestedMinMax[_M, Literal[True]], instance: Serialisable | Strict, cls: type | None = None) -> _M | None: ... + @overload + def __get__(self: NestedMinMax[_M, Literal[False]], instance: Serialisable | Strict, cls: type | None = None) -> _M: ... + @overload # type:ignore[override] # Different restrictions + def __set__( + self: NestedMinMax[int, Literal[True]], + instance: Serialisable | Strict, + value: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + ) -> None: ... + @overload + def __set__( + self: NestedMinMax[int, Literal[False]], + instance: Serialisable | Strict, + value: _HasTagAndGet[_ConvertibleToInt] | _ConvertibleToInt, + ) -> None: ... + @overload + def __set__( + self: NestedMinMax[float, Literal[True]], + instance: Serialisable | Strict, + value: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None, + ) -> None: ... + @overload + def __set__( + self: NestedMinMax[float, Literal[False]], + instance: Serialisable | Strict, + value: _HasTagAndGet[_ConvertibleToFloat] | _ConvertibleToFloat, + ) -> None: ... + +class EmptyTag(Nested[bool], Bool[_N]): # type: ignore[misc] + @overload + def __init__(self: EmptyTag[Literal[True]], name: str | None = None, *, allow_none: Literal[True]) -> None: ... + @overload + def __init__(self: EmptyTag[Literal[False]], name: str | None = None, *, allow_none: Literal[False] = False) -> None: ... + @overload + def __get__(self: EmptyTag[Literal[True]], instance: Serialisable | Strict, cls: type | None = None) -> bool | None: ... + @overload + def __get__(self: EmptyTag[Literal[False]], instance: Serialisable | Strict, cls: type | None = None) -> bool: ... + def __set__( # type:ignore[override] # Different restrictions + self, instance: Serialisable | Strict, value: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool + ) -> None: ... + def from_tree(self, node: Unused) -> Literal[True]: ... # type: ignore[override] # Actual overriden return type + def to_tree(self, tagname: str | None = None, value: Incomplete | None = None, namespace: str | None = None) -> Element: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi index 0a76df3a3..333a592a2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi @@ -13,21 +13,21 @@ class Sequence(Descriptor[Incomplete]): idx_base: int unique: bool def __set__(self, instance: Serialisable | Strict, seq) -> None: ... - def to_tree(self, tagname, obj, namespace: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... + def to_tree(self, tagname, obj, namespace: str | None = None) -> Generator[Incomplete, None, None]: ... class ValueSequence(Sequence): attribute: str - def to_tree(self, tagname, obj, namespace: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... + def to_tree(self, tagname, obj, namespace: str | None = None) -> Generator[Incomplete, None, None]: ... def from_tree(self, node): ... class NestedSequence(Sequence): count: bool - def to_tree(self, tagname, obj, namespace: Incomplete | None = None): ... + def to_tree(self, tagname, obj, namespace: str | None = None): ... def from_tree(self, node): ... class MultiSequence(Sequence): def __set__(self, instance: Serialisable | Strict, seq) -> None: ... - def to_tree(self, tagname, obj, namespace: Incomplete | None = None) -> Generator[Incomplete, None, None]: ... + def to_tree(self, tagname, obj, namespace: str | None = None) -> Generator[Incomplete, None, None]: ... class MultiSequencePart(Alias): expected_type: type[Incomplete] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi index 671ed3a82..6f4158756 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi @@ -1,10 +1,11 @@ from _typeshed import Incomplete -from typing import ClassVar +from typing import Any, ClassVar, NoReturn +from typing_extensions import Final from openpyxl.descriptors import MetaSerialisable -KEYWORDS: Incomplete -seq_types: Incomplete +KEYWORDS: Final[frozenset[str]] +seq_types: Final[tuple[type[list[Any]], type[tuple[Any, ...]]]] class Serialisable(metaclass=MetaSerialisable): # These dunders are always set at runtime by MetaSerialisable so they can't be None @@ -13,14 +14,13 @@ class Serialisable(metaclass=MetaSerialisable): __elements__: ClassVar[tuple[str, ...]] __namespaced__: ClassVar[tuple[tuple[str, str], ...]] idx_base: int + # Needs overrides in many sub-classes. But a lot of subclasses are instanciated without overriding it, so can't be abstract @property - # TODO: needs overrides in many sub-classes - # @abstractmethod - def tagname(self) -> str: ... - namespace: Incomplete + def tagname(self) -> str | NoReturn: ... + namespace: ClassVar[str | None] @classmethod def from_tree(cls, node): ... - def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... + def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None, namespace: str | None = None): ... def __iter__(self): ... def __eq__(self, other): ... def __ne__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi index 29bba5a90..3ce090a39 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi @@ -1,10 +1,11 @@ from _typeshed import Incomplete from typing import ClassVar, overload -from typing_extensions import Literal, TypeAlias +from typing_extensions import Final, Literal, TypeAlias from openpyxl.descriptors import Strict, Typed -from openpyxl.descriptors.base import Alias, Integer, MinMax, Set, _ConvertibleToFloat, _ConvertibleToInt +from openpyxl.descriptors.base import Alias, Integer, MinMax, Set, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import EmptyTag, NestedInteger, NestedNoneSet, NestedValue, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable _ColorSetType: TypeAlias = Literal[ @@ -42,7 +43,7 @@ _SystemColorVal: TypeAlias = Literal[ "menuHighlight", "menuBar", ] -_SchemeColorVal: TypeAlias = Literal[ +_SchemeColors: TypeAlias = Literal[ "bg1", "tx1", "bg2", @@ -61,41 +62,233 @@ _SchemeColorVal: TypeAlias = Literal[ "dk2", "lt2", ] +_PresetColors: TypeAlias = Literal[ + "aliceBlue", + "antiqueWhite", + "aqua", + "aquamarine", + "azure", + "beige", + "bisque", + "black", + "blanchedAlmond", + "blue", + "blueViolet", + "brown", + "burlyWood", + "cadetBlue", + "chartreuse", + "chocolate", + "coral", + "cornflowerBlue", + "cornsilk", + "crimson", + "cyan", + "darkBlue", + "darkCyan", + "darkGoldenrod", + "darkGray", + "darkGrey", + "darkGreen", + "darkKhaki", + "darkMagenta", + "darkOliveGreen", + "darkOrange", + "darkOrchid", + "darkRed", + "darkSalmon", + "darkSeaGreen", + "darkSlateBlue", + "darkSlateGray", + "darkSlateGrey", + "darkTurquoise", + "darkViolet", + "dkBlue", + "dkCyan", + "dkGoldenrod", + "dkGray", + "dkGrey", + "dkGreen", + "dkKhaki", + "dkMagenta", + "dkOliveGreen", + "dkOrange", + "dkOrchid", + "dkRed", + "dkSalmon", + "dkSeaGreen", + "dkSlateBlue", + "dkSlateGray", + "dkSlateGrey", + "dkTurquoise", + "dkViolet", + "deepPink", + "deepSkyBlue", + "dimGray", + "dimGrey", + "dodgerBlue", + "firebrick", + "floralWhite", + "forestGreen", + "fuchsia", + "gainsboro", + "ghostWhite", + "gold", + "goldenrod", + "gray", + "grey", + "green", + "greenYellow", + "honeydew", + "hotPink", + "indianRed", + "indigo", + "ivory", + "khaki", + "lavender", + "lavenderBlush", + "lawnGreen", + "lemonChiffon", + "lightBlue", + "lightCoral", + "lightCyan", + "lightGoldenrodYellow", + "lightGray", + "lightGrey", + "lightGreen", + "lightPink", + "lightSalmon", + "lightSeaGreen", + "lightSkyBlue", + "lightSlateGray", + "lightSlateGrey", + "lightSteelBlue", + "lightYellow", + "ltBlue", + "ltCoral", + "ltCyan", + "ltGoldenrodYellow", + "ltGray", + "ltGrey", + "ltGreen", + "ltPink", + "ltSalmon", + "ltSeaGreen", + "ltSkyBlue", + "ltSlateGray", + "ltSlateGrey", + "ltSteelBlue", + "ltYellow", + "lime", + "limeGreen", + "linen", + "magenta", + "maroon", + "medAquamarine", + "medBlue", + "medOrchid", + "medPurple", + "medSeaGreen", + "medSlateBlue", + "medSpringGreen", + "medTurquoise", + "medVioletRed", + "mediumAquamarine", + "mediumBlue", + "mediumOrchid", + "mediumPurple", + "mediumSeaGreen", + "mediumSlateBlue", + "mediumSpringGreen", + "mediumTurquoise", + "mediumVioletRed", + "midnightBlue", + "mintCream", + "mistyRose", + "moccasin", + "navajoWhite", + "navy", + "oldLace", + "olive", + "oliveDrab", + "orange", + "orangeRed", + "orchid", + "paleGoldenrod", + "paleGreen", + "paleTurquoise", + "paleVioletRed", + "papayaWhip", + "peachPuff", + "peru", + "pink", + "plum", + "powderBlue", + "purple", + "red", + "rosyBrown", + "royalBlue", + "saddleBrown", + "salmon", + "sandyBrown", + "seaGreen", + "seaShell", + "sienna", + "silver", + "skyBlue", + "slateBlue", + "slateGray", + "slateGrey", + "snow", + "springGreen", + "steelBlue", + "tan", + "teal", + "thistle", + "tomato", + "turquoise", + "violet", + "wheat", + "white", + "whiteSmoke", + "yellow", + "yellowGreen", +] -PRESET_COLORS: Incomplete -SCHEME_COLORS: Incomplete +PRESET_COLORS: Final[list[_PresetColors]] +SCHEME_COLORS: Final[list[_SchemeColors]] class Transform(Serialisable): ... class SystemColor(Serialisable): - tagname: str - namespace: Incomplete - tint: Incomplete - shade: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] + tint: NestedInteger[Literal[True]] + shade: NestedInteger[Literal[True]] comp: Typed[Transform, Literal[True]] inv: Typed[Transform, Literal[True]] gray: Typed[Transform, Literal[True]] - alpha: Incomplete - alphaOff: Incomplete - alphaMod: Incomplete - hue: Incomplete - hueOff: Incomplete - hueMod: Incomplete - sat: Incomplete - satOff: Incomplete - satMod: Incomplete - lum: Incomplete - lumOff: Incomplete - lumMod: Incomplete - red: Incomplete - redOff: Incomplete - redMod: Incomplete - green: Incomplete - greenOff: Incomplete - greenMod: Incomplete - blue: Incomplete - blueOff: Incomplete - blueMod: Incomplete + alpha: NestedInteger[Literal[True]] + alphaOff: NestedInteger[Literal[True]] + alphaMod: NestedInteger[Literal[True]] + hue: NestedInteger[Literal[True]] + hueOff: NestedInteger[Literal[True]] + hueMod: NestedInteger[Literal[True]] + sat: NestedInteger[Literal[True]] + satOff: NestedInteger[Literal[True]] + satMod: NestedInteger[Literal[True]] + lum: NestedInteger[Literal[True]] + lumOff: NestedInteger[Literal[True]] + lumMod: NestedInteger[Literal[True]] + red: NestedInteger[Literal[True]] + redOff: NestedInteger[Literal[True]] + redMod: NestedInteger[Literal[True]] + green: NestedInteger[Literal[True]] + greenOff: NestedInteger[Literal[True]] + greenMod: NestedInteger[Literal[True]] + blue: NestedInteger[Literal[True]] + blueOff: NestedInteger[Literal[True]] + blueMod: NestedInteger[Literal[True]] gamma: Typed[Transform, Literal[True]] invGamma: Typed[Transform, Literal[True]] val: Set[_SystemColorVal] @@ -105,45 +298,45 @@ class SystemColor(Serialisable): self, val: _SystemColorVal = "windowText", lastClr: Incomplete | None = None, - tint: Incomplete | None = None, - shade: Incomplete | None = None, + tint: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + shade: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, comp: Transform | None = None, inv: Transform | None = None, gray: Transform | None = None, - alpha: Incomplete | None = None, - alphaOff: Incomplete | None = None, - alphaMod: Incomplete | None = None, - hue: Incomplete | None = None, - hueOff: Incomplete | None = None, - hueMod: Incomplete | None = None, - sat: Incomplete | None = None, - satOff: Incomplete | None = None, - satMod: Incomplete | None = None, - lum: Incomplete | None = None, - lumOff: Incomplete | None = None, - lumMod: Incomplete | None = None, - red: Incomplete | None = None, - redOff: Incomplete | None = None, - redMod: Incomplete | None = None, - green: Incomplete | None = None, - greenOff: Incomplete | None = None, - greenMod: Incomplete | None = None, - blue: Incomplete | None = None, - blueOff: Incomplete | None = None, - blueMod: Incomplete | None = None, + alpha: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + alphaOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + alphaMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + hue: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + hueOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + hueMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + sat: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + satOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + satMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + lum: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + lumOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + lumMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + red: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + redOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + redMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + green: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + greenOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + greenMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + blue: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + blueOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + blueMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, gamma: Transform | None = None, invGamma: Transform | None = None, ) -> None: ... class HSLColor(Serialisable): - tagname: str + tagname: ClassVar[str] hue: Integer[Literal[False]] sat: MinMax[float, Literal[False]] lum: MinMax[float, Literal[False]] def __init__(self, hue: _ConvertibleToInt, sat: _ConvertibleToFloat, lum: _ConvertibleToFloat) -> None: ... class RGBPercent(Serialisable): - tagname: str + tagname: ClassVar[str] r: MinMax[float, Literal[False]] g: MinMax[float, Literal[False]] b: MinMax[float, Literal[False]] @@ -152,132 +345,132 @@ class RGBPercent(Serialisable): _RGBPercent: TypeAlias = RGBPercent class SchemeColor(Serialisable): - tagname: str - namespace: Incomplete - tint: Incomplete - shade: Incomplete - comp: Incomplete - inv: Incomplete - gray: Incomplete - alpha: Incomplete - alphaOff: Incomplete - alphaMod: Incomplete - hue: Incomplete - hueOff: Incomplete - hueMod: Incomplete - sat: Incomplete - satOff: Incomplete - satMod: Incomplete - lum: Incomplete - lumOff: Incomplete - lumMod: Incomplete - red: Incomplete - redOff: Incomplete - redMod: Incomplete - green: Incomplete - greenOff: Incomplete - greenMod: Incomplete - blue: Incomplete - blueOff: Incomplete - blueMod: Incomplete - gamma: Incomplete - invGamma: Incomplete - val: Set[_SchemeColorVal] + tagname: ClassVar[str] + namespace: ClassVar[str] + tint: NestedInteger[Literal[True]] + shade: NestedInteger[Literal[True]] + comp: EmptyTag[Literal[True]] + inv: NestedInteger[Literal[True]] + gray: NestedInteger[Literal[True]] + alpha: NestedInteger[Literal[True]] + alphaOff: NestedInteger[Literal[True]] + alphaMod: NestedInteger[Literal[True]] + hue: NestedInteger[Literal[True]] + hueOff: NestedInteger[Literal[True]] + hueMod: NestedInteger[Literal[True]] + sat: NestedInteger[Literal[True]] + satOff: NestedInteger[Literal[True]] + satMod: NestedInteger[Literal[True]] + lum: NestedInteger[Literal[True]] + lumOff: NestedInteger[Literal[True]] + lumMod: NestedInteger[Literal[True]] + red: NestedInteger[Literal[True]] + redOff: NestedInteger[Literal[True]] + redMod: NestedInteger[Literal[True]] + green: NestedInteger[Literal[True]] + greenOff: NestedInteger[Literal[True]] + greenMod: NestedInteger[Literal[True]] + blue: NestedInteger[Literal[True]] + blueOff: NestedInteger[Literal[True]] + blueMod: NestedInteger[Literal[True]] + gamma: EmptyTag[Literal[True]] + invGamma: EmptyTag[Literal[True]] + val: Set[_SchemeColors] __elements__: ClassVar[tuple[str, ...]] @overload def __init__( self, - tint: Incomplete | None = None, - shade: Incomplete | None = None, - comp: Incomplete | None = None, - inv: Incomplete | None = None, - gray: Incomplete | None = None, - alpha: Incomplete | None = None, - alphaOff: Incomplete | None = None, - alphaMod: Incomplete | None = None, - hue: Incomplete | None = None, - hueOff: Incomplete | None = None, - hueMod: Incomplete | None = None, - sat: Incomplete | None = None, - satOff: Incomplete | None = None, - satMod: Incomplete | None = None, - lum: Incomplete | None = None, - lumOff: Incomplete | None = None, - lumMod: Incomplete | None = None, - red: Incomplete | None = None, - redOff: Incomplete | None = None, - redMod: Incomplete | None = None, - green: Incomplete | None = None, - greenOff: Incomplete | None = None, - greenMod: Incomplete | None = None, - blue: Incomplete | None = None, - blueOff: Incomplete | None = None, - blueMod: Incomplete | None = None, - gamma: Incomplete | None = None, - invGamma: Incomplete | None = None, + tint: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + shade: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + comp: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + inv: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + gray: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + alpha: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + alphaOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + alphaMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + hue: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + hueOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + hueMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + sat: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + satOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + satMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + lum: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + lumOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + lumMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + red: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + redOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + redMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + green: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + greenOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + greenMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + blue: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + blueOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + blueMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + gamma: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + invGamma: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, *, - val: _SchemeColorVal, + val: _SchemeColors, ) -> None: ... @overload def __init__( self, - tint: Incomplete | None, - shade: Incomplete | None, - comp: Incomplete | None, - inv: Incomplete | None, - gray: Incomplete | None, - alpha: Incomplete | None, - alphaOff: Incomplete | None, - alphaMod: Incomplete | None, - hue: Incomplete | None, - hueOff: Incomplete | None, - hueMod: Incomplete | None, - sat: Incomplete | None, - satOff: Incomplete | None, - satMod: Incomplete | None, - lum: Incomplete | None, - lumOff: Incomplete | None, - lumMod: Incomplete | None, - red: Incomplete | None, - redOff: Incomplete | None, - redMod: Incomplete | None, - green: Incomplete | None, - greenOff: Incomplete | None, - greenMod: Incomplete | None, - blue: Incomplete | None, - blueOff: Incomplete | None, - blueMod: Incomplete | None, - gamma: Incomplete | None, - invGamma: Incomplete | None, - val: _SchemeColorVal, + tint: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + shade: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + comp: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None, + inv: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + gray: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + alpha: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + alphaOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + alphaMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + hue: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + hueOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + hueMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + sat: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + satOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + satMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + lum: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + lumOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + lumMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + red: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + redOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + redMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + green: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + greenOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + greenMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + blue: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + blueOff: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + blueMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, + gamma: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None, + invGamma: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None, + val: _SchemeColors, ) -> None: ... class ColorChoice(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] scrgbClr: Typed[_RGBPercent, Literal[True]] RGBPercent: Alias - srgbClr: Incomplete + srgbClr: NestedValue[_RGBPercent, Literal[True]] RGB: Alias hslClr: Typed[HSLColor, Literal[True]] sysClr: Typed[SystemColor, Literal[True]] schemeClr: Typed[SystemColor, Literal[True]] - prstClr: Incomplete + prstClr: NestedNoneSet[_PresetColors] __elements__: ClassVar[tuple[str, ...]] def __init__( self, scrgbClr: _RGBPercent | None = None, - srgbClr: Incomplete | None = None, + srgbClr: _HasTagAndGet[_RGBPercent | None] | _RGBPercent | None = None, hslClr: HSLColor | None = None, sysClr: SystemColor | None = None, schemeClr: SystemColor | None = None, - prstClr: Incomplete | None = None, + prstClr: _NestedNoneSetParam[_PresetColors] = None, ) -> None: ... -_COLOR_SET: tuple[_ColorSetType, ...] +_COLOR_SET: Final[tuple[_ColorSetType, ...]] class ColorMapping(Serialisable): - tagname: str + tagname: ClassVar[str] bg1: Set[_ColorSetType] tx1: Set[_ColorSetType] bg2: Set[_ColorSetType] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi index 565b1b08e..3216c7d1e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/connector.pyi @@ -39,7 +39,7 @@ class ConnectorNonVisual(Serialisable): def __init__(self, cNvPr: NonVisualDrawingProps, cNvCxnSpPr: NonVisualConnectorProperties) -> None: ... class ConnectorShape(Serialisable): - tagname: str + tagname: ClassVar[str] nvCxnSpPr: Typed[ConnectorNonVisual, Literal[False]] spPr: Typed[GraphicalProperties, Literal[False]] style: Typed[ShapeStyle, Literal[True]] @@ -55,7 +55,7 @@ class ConnectorShape(Serialisable): ) -> None: ... class ShapeMeta(Serialisable): - tagname: str + tagname: ClassVar[str] cNvPr: Typed[NonVisualDrawingProps, Literal[False]] cNvSpPr: Typed[NonVisualDrawingShapeProps, Literal[False]] def __init__(self, cNvPr: NonVisualDrawingProps, cNvSpPr: NonVisualDrawingShapeProps) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi index 130714d48..98cd790bf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/effect.pyi @@ -44,13 +44,13 @@ _PresetShadowEffectPrst: TypeAlias = Literal[ ] class TintEffect(Serialisable): - tagname: str + tagname: ClassVar[str] hue: Integer[Literal[False]] amt: Integer[Literal[False]] def __init__(self, hue: _ConvertibleToInt = 0, amt: _ConvertibleToInt = 0) -> None: ... class LuminanceEffect(Serialisable): - tagname: str + tagname: ClassVar[str] bright: Integer[Literal[False]] contrast: Integer[Literal[False]] def __init__(self, bright: _ConvertibleToInt = 0, contrast: _ConvertibleToInt = 0) -> None: ... @@ -62,7 +62,7 @@ class HSLEffect(Serialisable): def __init__(self, hue: _ConvertibleToInt, sat: _ConvertibleToInt, lum: _ConvertibleToInt) -> None: ... class GrayscaleEffect(Serialisable): - tagname: str + tagname: ClassVar[str] class FillOverlayEffect(Serialisable): blend: Set[_FillOverlayEffectBlend] @@ -140,7 +140,7 @@ class InnerShadowEffect(ColorChoice): def __init__(self, blurRad: _ConvertibleToFloat, dist: _ConvertibleToFloat, dir: _ConvertibleToInt, **kw) -> None: ... class OuterShadow(ColorChoice): - tagname: str + tagname: ClassVar[str] blurRad: Float[Literal[True]] dist: Float[Literal[True]] dir: Integer[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi index 4ff6baf3d..f41624831 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi @@ -15,8 +15,9 @@ from openpyxl.descriptors.base import ( _ConvertibleToInt, ) from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedNoneSet, NestedValue, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable -from openpyxl.drawing.colors import ColorChoice, HSLColor, RGBPercent as _RGBPercent, SchemeColor, SystemColor +from openpyxl.drawing.colors import ColorChoice, HSLColor, RGBPercent as _RGBPercent, SchemeColor, SystemColor, _PresetColors from openpyxl.drawing.effect import ( AlphaBiLevelEffect, AlphaCeilingEffect, @@ -99,8 +100,8 @@ _BlipCstate: TypeAlias = Literal["email", "screen", "print", "hqprint"] _PathShadePropertiesPath: TypeAlias = Literal["shape", "circle", "rect"] class PatternFillProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] prst: NoneSet[_PatternFillPropertiesPrst] preset: Alias fgClr: Typed[ColorChoice, Literal[True]] @@ -116,8 +117,8 @@ class PatternFillProperties(Serialisable): ) -> None: ... class RelativeRect(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] l: Incomplete left: Alias t: Incomplete @@ -131,52 +132,52 @@ class RelativeRect(Serialisable): ) -> None: ... class StretchInfoProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] fillRect: Typed[RelativeRect, Literal[True]] def __init__(self, fillRect: RelativeRect = ...) -> None: ... class GradientStop(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] pos: MinMax[float, Literal[True]] scrgbClr: Typed[_RGBPercent, Literal[True]] RGBPercent: Alias - srgbClr: Incomplete + srgbClr: NestedValue[_RGBPercent, Literal[True]] RGB: Alias hslClr: Typed[HSLColor, Literal[True]] sysClr: Typed[SystemColor, Literal[True]] schemeClr: Typed[SchemeColor, Literal[True]] - prstClr: Incomplete + prstClr: NestedNoneSet[_PresetColors] __elements__: ClassVar[tuple[str, ...]] def __init__( self, pos: _ConvertibleToFloat | None = None, scrgbClr: _RGBPercent | None = None, - srgbClr: Incomplete | None = None, + srgbClr: _HasTagAndGet[_RGBPercent | None] | _RGBPercent | None = None, hslClr: HSLColor | None = None, sysClr: SystemColor | None = None, schemeClr: SchemeColor | None = None, - prstClr: Incomplete | None = None, + prstClr: _NestedNoneSetParam[_PresetColors] = None, ) -> None: ... class LinearShadeProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] ang: Integer[Literal[False]] scaled: Bool[Literal[True]] def __init__(self, ang: _ConvertibleToInt, scaled: _ConvertibleToBool | None = None) -> None: ... class PathShadeProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] path: Set[_PathShadePropertiesPath] fillToRect: Typed[RelativeRect, Literal[True]] def __init__(self, path: _PathShadePropertiesPath, fillToRect: RelativeRect | None = None) -> None: ... class GradientFillProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] flip: NoneSet[_PropertiesFlip] rotWithShape: Bool[Literal[True]] gsLst: Incomplete @@ -197,29 +198,29 @@ class GradientFillProperties(Serialisable): ) -> None: ... class SolidColorFillProperties(Serialisable): - tagname: str + tagname: ClassVar[str] scrgbClr: Typed[_RGBPercent, Literal[True]] RGBPercent: Alias - srgbClr: Incomplete + srgbClr: NestedValue[_RGBPercent, Literal[True]] RGB: Alias hslClr: Typed[HSLColor, Literal[True]] sysClr: Typed[SystemColor, Literal[True]] schemeClr: Typed[SchemeColor, Literal[True]] - prstClr: Incomplete + prstClr: NestedNoneSet[_PresetColors] __elements__: ClassVar[tuple[str, ...]] def __init__( self, scrgbClr: _RGBPercent | None = None, - srgbClr: Incomplete | None = None, + srgbClr: _HasTagAndGet[_RGBPercent | None] | _RGBPercent | None = None, hslClr: HSLColor | None = None, sysClr: SystemColor | None = None, schemeClr: SchemeColor | None = None, - prstClr: Incomplete | None = None, + prstClr: _NestedNoneSetParam[_PresetColors] = None, ) -> None: ... class Blip(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] cstate: NoneSet[_BlipCstate] embed: Incomplete link: Incomplete @@ -306,7 +307,7 @@ class TileInfoProperties(Serialisable): ) -> None: ... class BlipFillProperties(Serialisable): - tagname: str + tagname: ClassVar[str] dpi: Integer[Literal[True]] rotWithShape: Bool[Literal[True]] blip: Typed[Blip, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi index 8b9b53215..272b618cf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/geometry.pyi @@ -338,15 +338,15 @@ _PresetGeometry2DPrst: TypeAlias = Literal[ ] class Point2D(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] x: Incomplete y: Incomplete def __init__(self, x: Incomplete | None = None, y: Incomplete | None = None) -> None: ... class PositiveSize2D(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] cx: Integer[Literal[False]] width: Alias cy: Integer[Literal[False]] @@ -354,8 +354,8 @@ class PositiveSize2D(Serialisable): def __init__(self, cx: _ConvertibleToInt, cy: _ConvertibleToInt) -> None: ... class Transform2D(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] rot: Integer[Literal[True]] flipH: Bool[Literal[True]] flipV: Bool[Literal[True]] @@ -376,8 +376,8 @@ class Transform2D(Serialisable): ) -> None: ... class GroupTransform2D(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] rot: Integer[Literal[True]] flipH: Bool[Literal[True]] flipV: Bool[Literal[True]] @@ -398,14 +398,14 @@ class GroupTransform2D(Serialisable): ) -> None: ... class SphereCoords(Serialisable): - tagname: str + tagname: ClassVar[str] lat: Integer[Literal[False]] lon: Integer[Literal[False]] rev: Integer[Literal[False]] def __init__(self, lat: _ConvertibleToInt, lon: _ConvertibleToInt, rev: _ConvertibleToInt) -> None: ... class Camera(Serialisable): - tagname: str + tagname: ClassVar[str] prst: Set[_CameraPrst] fov: Integer[Literal[True]] zoom: Typed[Percentage, Literal[True]] @@ -419,21 +419,21 @@ class Camera(Serialisable): ) -> None: ... class LightRig(Serialisable): - tagname: str + tagname: ClassVar[str] rig: Set[_LightRigRig] dir: Set[_LightRigDir] rot: Typed[SphereCoords, Literal[True]] def __init__(self, rig: _LightRigRig, dir: _LightRigDir, rot: SphereCoords | None = None) -> None: ... class Vector3D(Serialisable): - tagname: str + tagname: ClassVar[str] dx: Integer[Literal[False]] dy: Integer[Literal[False]] dz: Integer[Literal[False]] def __init__(self, dx: _ConvertibleToInt, dy: _ConvertibleToInt, dz: _ConvertibleToInt) -> None: ... class Point3D(Serialisable): - tagname: str + tagname: ClassVar[str] x: Integer[Literal[False]] y: Integer[Literal[False]] z: Integer[Literal[False]] @@ -456,14 +456,14 @@ class Scene3D(Serialisable): ) -> None: ... class Bevel(Serialisable): - tagname: str + tagname: ClassVar[str] w: Integer[Literal[False]] h: Integer[Literal[False]] prst: NoneSet[_BevelPrst] def __init__(self, w: _ConvertibleToInt, h: _ConvertibleToInt, prst: _BevelPrst | Literal["none"] | None = None) -> None: ... class Shape3D(Serialisable): - namespace: Incomplete + namespace: ClassVar[str] z: Typed[Coordinate[bool], Literal[True]] extrusionH: Integer[Literal[True]] contourW: Integer[Literal[True]] @@ -569,7 +569,7 @@ class CustomGeometry2D(Serialisable): ) -> None: ... class PresetGeometry2D(Serialisable): - namespace: Incomplete + namespace: ClassVar[str] prst: Set[_PresetGeometry2DPrst] avLst: Typed[GeomGuideList, Literal[True]] def __init__(self, prst: _PresetGeometry2DPrst, avLst: GeomGuideList | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi index 4e5e5b209..a23c66b0b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/graphic.pyi @@ -30,33 +30,33 @@ class GraphicFrameLocking(Serialisable): ) -> None: ... class NonVisualGraphicFrameProperties(Serialisable): - tagname: str + tagname: ClassVar[str] graphicFrameLocks: Typed[GraphicFrameLocking, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] def __init__(self, graphicFrameLocks: GraphicFrameLocking | None = None, extLst: ExtensionList | None = None) -> None: ... class NonVisualGraphicFrame(Serialisable): - tagname: str + tagname: ClassVar[str] cNvPr: Typed[ExtensionList, Literal[False]] cNvGraphicFramePr: Typed[ExtensionList, Literal[False]] __elements__: ClassVar[tuple[str, ...]] def __init__(self, cNvPr: Incomplete | None = None, cNvGraphicFramePr: Incomplete | None = None) -> None: ... class GraphicData(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] uri: String[Literal[False]] chart: Typed[ChartRelation, Literal[True]] def __init__(self, uri: str = ..., chart: ChartRelation | None = None) -> None: ... class GraphicObject(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] graphicData: Typed[GraphicData, Literal[False]] def __init__(self, graphicData: GraphicData | None = None) -> None: ... class GraphicFrame(Serialisable): - tagname: str + tagname: ClassVar[str] nvGraphicFramePr: Typed[NonVisualGraphicFrame, Literal[False]] xfrm: Typed[XDRTransform2D, Literal[False]] graphic: Typed[GraphicObject, Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi index af2e168af..325f59930 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi @@ -2,8 +2,18 @@ from _typeshed import Incomplete, Unused from typing import ClassVar from typing_extensions import Literal, TypeAlias -from openpyxl.descriptors.base import Alias, Integer, MinMax, NoneSet, Typed, _ConvertibleToFloat, _ConvertibleToInt +from openpyxl.descriptors.base import ( + Alias, + Integer, + MinMax, + NoneSet, + Typed, + _ConvertibleToBool, + _ConvertibleToFloat, + _ConvertibleToInt, +) from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import EmptyTag, NestedInteger, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.fill import GradientFillProperties, PatternFillProperties @@ -12,10 +22,13 @@ _LineEndPropertiesWLen: TypeAlias = Literal["sm", "med", "lg"] _LinePropertiesCap: TypeAlias = Literal["rnd", "sq", "flat"] _LinePropertiesCmpd: TypeAlias = Literal["sng", "dbl", "thickThin", "thinThick", "tri"] _LinePropertiesAlgn: TypeAlias = Literal["ctr", "in"] +_LinePropertiesPrstDash: TypeAlias = Literal[ + "solid", "dot", "dash", "lgDash", "dashDot", "lgDashDot", "lgDashDotDot", "sysDash", "sysDot", "sysDashDot", "sysDashDotDot" +] class LineEndProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] type: NoneSet[_LineEndPropertiesType] w: NoneSet[_LineEndPropertiesWLen] len: NoneSet[_LineEndPropertiesWLen] @@ -27,8 +40,8 @@ class LineEndProperties(Serialisable): ) -> None: ... class DashStop(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] d: Integer[Literal[False]] length: Alias sp: Integer[Literal[False]] @@ -40,23 +53,23 @@ class DashStopList(Serialisable): def __init__(self, ds: Incomplete | None = None) -> None: ... class LineProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] w: MinMax[float, Literal[True]] width: Alias cap: NoneSet[_LinePropertiesCap] cmpd: NoneSet[_LinePropertiesCmpd] algn: NoneSet[_LinePropertiesAlgn] - noFill: Incomplete + noFill: EmptyTag[Literal[False]] solidFill: Incomplete gradFill: Typed[GradientFillProperties, Literal[True]] pattFill: Typed[PatternFillProperties, Literal[True]] - prstDash: Incomplete + prstDash: NestedNoneSet[_LinePropertiesPrstDash] dashStyle: Alias custDash: Typed[DashStop, Literal[True]] - round: Incomplete - bevel: Incomplete - miter: Incomplete + round: EmptyTag[Literal[False]] + bevel: EmptyTag[Literal[False]] + miter: NestedInteger[Literal[True]] headEnd: Typed[LineEndProperties, Literal[True]] tailEnd: Typed[LineEndProperties, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] @@ -67,15 +80,15 @@ class LineProperties(Serialisable): cap: _LinePropertiesCap | Literal["none"] | None = None, cmpd: _LinePropertiesCmpd | Literal["none"] | None = None, algn: _LinePropertiesAlgn | Literal["none"] | None = None, - noFill: Incomplete | None = None, + noFill: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, solidFill: Incomplete | None = None, gradFill: GradientFillProperties | None = None, pattFill: PatternFillProperties | None = None, - prstDash: Incomplete | None = None, + prstDash: _NestedNoneSetParam[_LinePropertiesPrstDash] = None, custDash: DashStop | None = None, - round: Incomplete | None = None, - bevel: Incomplete | None = None, - miter: Incomplete | None = None, + round: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + bevel: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + miter: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, headEnd: LineEndProperties | None = None, tailEnd: LineEndProperties | None = None, extLst: Unused = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi index 27a0ceccf..776129e14 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/picture.pyi @@ -11,8 +11,8 @@ from openpyxl.drawing.geometry import ShapeStyle from openpyxl.drawing.properties import NonVisualDrawingProps class PictureLocking(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] noCrop: Bool[Literal[True]] noGrp: Bool[Literal[True]] noSelect: Bool[Literal[True]] @@ -43,7 +43,7 @@ class PictureLocking(Serialisable): ) -> None: ... class NonVisualPictureProperties(Serialisable): - tagname: str + tagname: ClassVar[str] preferRelativeResize: Bool[Literal[True]] picLocks: Typed[PictureLocking, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] @@ -53,7 +53,7 @@ class NonVisualPictureProperties(Serialisable): ) -> None: ... class PictureNonVisual(Serialisable): - tagname: str + tagname: ClassVar[str] cNvPr: Typed[NonVisualDrawingProps, Literal[False]] cNvPicPr: Typed[NonVisualPictureProperties, Literal[False]] __elements__: ClassVar[tuple[str, ...]] @@ -62,7 +62,7 @@ class PictureNonVisual(Serialisable): ) -> None: ... class PictureFrame(Serialisable): - tagname: str + tagname: ClassVar[str] macro: String[Literal[True]] fPublished: Bool[Literal[True]] nvPicPr: Typed[PictureNonVisual, Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi index 6addd6f8c..a7b12d446 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/properties.pyi @@ -13,7 +13,7 @@ _GroupShapePropertiesBwMode: TypeAlias = Literal[ ] class GroupShapeProperties(Serialisable): - tagname: str + tagname: ClassVar[str] bwMode: NoneSet[_GroupShapePropertiesBwMode] xfrm: Typed[GroupTransform2D, Literal[True]] scene3d: Typed[Scene3D, Literal[True]] @@ -27,8 +27,8 @@ class GroupShapeProperties(Serialisable): ) -> None: ... class GroupLocking(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] noGrp: Bool[Literal[True]] noUngrp: Bool[Literal[True]] noSelect: Bool[Literal[True]] @@ -59,14 +59,14 @@ class GroupLocking(Serialisable): ) -> None: ... class NonVisualGroupDrawingShapeProps(Serialisable): - tagname: str + tagname: ClassVar[str] grpSpLocks: Typed[GroupLocking, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__(self, grpSpLocks: Incomplete | None = None, extLst: Unused = None) -> None: ... class NonVisualDrawingShapeProps(Serialisable): - tagname: str + tagname: ClassVar[str] spLocks: Typed[GroupLocking, Literal[True]] txBax: Bool[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] @@ -77,7 +77,7 @@ class NonVisualDrawingShapeProps(Serialisable): ) -> None: ... class NonVisualDrawingProps(Serialisable): - tagname: str + tagname: ClassVar[str] id: Incomplete name: String[Literal[False]] descr: String[Literal[True]] @@ -115,7 +115,7 @@ class NonVisualDrawingProps(Serialisable): ) -> None: ... class NonVisualGroupShape(Serialisable): - tagname: str + tagname: ClassVar[str] cNvPr: Typed[NonVisualDrawingProps, Literal[False]] cNvGrpSpPr: Typed[NonVisualGroupDrawingShapeProps, Literal[False]] __elements__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/relation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/relation.pyi index 05c831ed1..46828b6f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/relation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/relation.pyi @@ -1,9 +1,10 @@ from _typeshed import Incomplete +from typing import ClassVar from openpyxl.descriptors.serialisable import Serialisable class ChartRelation(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] id: Incomplete def __init__(self, id) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi index 13b70b287..127666b66 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/spreadsheet_drawing.pyi @@ -2,7 +2,8 @@ from _typeshed import Incomplete from typing import ClassVar from typing_extensions import Literal, TypeAlias -from openpyxl.descriptors.base import Alias, Bool, NoneSet, Typed, _ConvertibleToBool +from openpyxl.descriptors.base import Alias, Bool, NoneSet, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.nested import NestedText from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.connector import Shape from openpyxl.drawing.graphic import GraphicFrame, GroupShape @@ -19,12 +20,14 @@ class AnchorClientData(Serialisable): ) -> None: ... class AnchorMarker(Serialisable): - tagname: str - col: Incomplete - colOff: Incomplete - row: Incomplete - rowOff: Incomplete - def __init__(self, col: int = 0, colOff: int = 0, row: int = 0, rowOff: int = 0) -> None: ... + tagname: ClassVar[str] + col: NestedText[int, Literal[False]] + colOff: NestedText[int, Literal[False]] + row: NestedText[int, Literal[False]] + rowOff: NestedText[int, Literal[False]] + def __init__( + self, col: _ConvertibleToInt = 0, colOff: _ConvertibleToInt = 0, row: _ConvertibleToInt = 0, rowOff: _ConvertibleToInt = 0 + ) -> None: ... class _AnchorBase(Serialisable): sp: Typed[Shape, Literal[True]] @@ -50,7 +53,7 @@ class _AnchorBase(Serialisable): ) -> None: ... class AbsoluteAnchor(_AnchorBase): - tagname: str + tagname: ClassVar[str] pos: Typed[XDRPoint2D, Literal[False]] ext: Typed[XDRPositiveSize2D, Literal[False]] sp: Incomplete @@ -64,7 +67,7 @@ class AbsoluteAnchor(_AnchorBase): def __init__(self, pos: XDRPoint2D | None = None, ext: XDRPositiveSize2D | None = None, **kw) -> None: ... class OneCellAnchor(_AnchorBase): - tagname: str + tagname: ClassVar[str] _from: Typed[AnchorMarker, Literal[False]] # Not private. Avoids name clash ext: Typed[XDRPositiveSize2D, Literal[False]] sp: Incomplete @@ -78,7 +81,7 @@ class OneCellAnchor(_AnchorBase): def __init__(self, _from: AnchorMarker | None = None, ext: XDRPositiveSize2D | None = None, **kw) -> None: ... class TwoCellAnchor(_AnchorBase): - tagname: str + tagname: ClassVar[str] editAs: NoneSet[_TwoCellAnchorEditAs] _from: Typed[AnchorMarker, Literal[False]] # Not private. Avoids name clash to: Typed[AnchorMarker, Literal[False]] @@ -99,7 +102,7 @@ class TwoCellAnchor(_AnchorBase): ) -> None: ... class SpreadsheetDrawing(Serialisable): - tagname: str + tagname: ClassVar[str] mime_type: str PartName: str twoCellAnchor: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi index 57eebdc0b..c14018576 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi @@ -1,4 +1,4 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from typing import ClassVar from typing_extensions import Literal, TypeAlias @@ -16,9 +16,10 @@ from openpyxl.descriptors.base import ( _ConvertibleToInt, ) from openpyxl.descriptors.excel import Coordinate, ExtensionList +from openpyxl.descriptors.nested import EmptyTag, NestedBool, NestedInteger, NestedText, NestedValue, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.effect import Color, EffectContainer, EffectList -from openpyxl.drawing.fill import BlipFillProperties, GradientFillProperties, PatternFillProperties +from openpyxl.drawing.fill import Blip, BlipFillProperties, GradientFillProperties, PatternFillProperties from openpyxl.drawing.geometry import Scene3D from openpyxl.drawing.line import LineProperties @@ -145,8 +146,8 @@ class EmbeddedWAVAudioFile(Serialisable): def __init__(self, name: str | None = None) -> None: ... class Hyperlink(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] invalidUrl: String[Literal[True]] action: String[Literal[True]] tgtFrame: String[Literal[True]] @@ -173,8 +174,8 @@ class Hyperlink(Serialisable): ) -> None: ... class Font(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] typeface: String[Literal[False]] panose: Incomplete pitchFamily: MinMax[float, Literal[True]] @@ -188,8 +189,8 @@ class Font(Serialisable): ) -> None: ... class CharacterProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] kumimoji: Bool[Literal[True]] lang: String[Literal[True]] altLang: String[Literal[True]] @@ -217,20 +218,20 @@ class CharacterProperties(Serialisable): sym: Typed[Font, Literal[True]] hlinkClick: Typed[Hyperlink, Literal[True]] hlinkMouseOver: Typed[Hyperlink, Literal[True]] - rtl: Incomplete + rtl: NestedBool[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] - noFill: Incomplete + noFill: EmptyTag[Literal[False]] solidFill: Incomplete gradFill: Typed[GradientFillProperties, Literal[True]] blipFill: Typed[BlipFillProperties, Literal[True]] pattFill: Typed[PatternFillProperties, Literal[True]] - grpFill: Incomplete + grpFill: EmptyTag[Literal[False]] effectLst: Typed[EffectList, Literal[True]] effectDag: Typed[EffectContainer, Literal[True]] - uLnTx: Incomplete + uLnTx: EmptyTag[Literal[False]] uLn: Typed[LineProperties, Literal[True]] - uFillTx: Incomplete - uFill: Incomplete + uFillTx: EmptyTag[Literal[False]] + uFill: EmptyTag[Literal[False]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, @@ -261,20 +262,20 @@ class CharacterProperties(Serialisable): sym: Font | None = None, hlinkClick: Hyperlink | None = None, hlinkMouseOver: Hyperlink | None = None, - rtl: Incomplete | None = None, + rtl: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, extLst: ExtensionList | None = None, - noFill: Incomplete | None = None, + noFill: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, solidFill: Incomplete | None = None, gradFill: GradientFillProperties | None = None, blipFill: BlipFillProperties | None = None, pattFill: PatternFillProperties | None = None, - grpFill: Incomplete | None = None, + grpFill: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, effectLst: EffectList | None = None, effectDag: EffectContainer | None = None, - uLnTx: Incomplete | None = None, + uLnTx: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, uLn: LineProperties | None = None, - uFillTx: Incomplete | None = None, - uFill: Incomplete | None = None, + uFillTx: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + uFill: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, ) -> None: ... class TabStop(Serialisable): @@ -287,10 +288,14 @@ class TabStopList(Serialisable): def __init__(self, tab: Incomplete | None = None) -> None: ... class Spacing(Serialisable): - spcPct: Incomplete - spcPts: Incomplete + spcPct: NestedInteger[Literal[True]] + spcPts: NestedInteger[Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, spcPct: Incomplete | None = None, spcPts: Incomplete | None = None) -> None: ... + def __init__( + self, + spcPct: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + spcPts: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + ) -> None: ... class AutonumberBullet(Serialisable): type: Set[_AutonumberBulletType] @@ -298,8 +303,8 @@ class AutonumberBullet(Serialisable): def __init__(self, type: _AutonumberBulletType, startAt: _ConvertibleToInt) -> None: ... class ParagraphProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] marL: Integer[Literal[True]] marR: Integer[Literal[True]] lvl: Integer[Literal[True]] @@ -317,17 +322,17 @@ class ParagraphProperties(Serialisable): tabLst: Typed[TabStopList, Literal[True]] defRPr: Typed[CharacterProperties, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] - buClrTx: Incomplete + buClrTx: EmptyTag[Literal[False]] buClr: Typed[Color, Literal[True]] - buSzTx: Incomplete - buSzPct: Incomplete - buSzPts: Incomplete - buFontTx: Incomplete + buSzTx: EmptyTag[Literal[False]] + buSzPct: NestedInteger[Literal[True]] + buSzPts: NestedInteger[Literal[True]] + buFontTx: EmptyTag[Literal[False]] buFont: Typed[Font, Literal[True]] - buNone: Incomplete - buAutoNum: Incomplete - buChar: Incomplete - buBlip: Incomplete + buNone: EmptyTag[Literal[False]] + buAutoNum: EmptyTag[Literal[False]] + buChar: NestedValue[str, Literal[True]] + buBlip: NestedValue[Blip, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, @@ -348,22 +353,22 @@ class ParagraphProperties(Serialisable): tabLst: TabStopList | None = None, defRPr: CharacterProperties | None = None, extLst: ExtensionList | None = None, - buClrTx: Incomplete | None = None, + buClrTx: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, buClr: Color | None = None, - buSzTx: Incomplete | None = None, - buSzPct: Incomplete | None = None, - buSzPts: Incomplete | None = None, - buFontTx: Incomplete | None = None, + buSzTx: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + buSzPct: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + buSzPts: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + buFontTx: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, buFont: Font | None = None, - buNone: Incomplete | None = None, - buAutoNum: Incomplete | None = None, - buChar: Incomplete | None = None, - buBlip: Incomplete | None = None, + buNone: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + buAutoNum: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + buChar: object = None, + buBlip: object = None, ) -> None: ... class ListStyle(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] defPPr: Typed[ParagraphProperties, Literal[True]] lvl1pPr: Typed[ParagraphProperties, Literal[True]] lvl2pPr: Typed[ParagraphProperties, Literal[True]] @@ -392,18 +397,18 @@ class ListStyle(Serialisable): ) -> None: ... class RegularTextRun(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] rPr: Typed[CharacterProperties, Literal[True]] properties: Alias - t: Incomplete + t: NestedText[str, Literal[False]] value: Alias __elements__: ClassVar[tuple[str, ...]] - def __init__(self, rPr: CharacterProperties | None = None, t: str = "") -> None: ... + def __init__(self, rPr: CharacterProperties | None = None, t: object = "") -> None: ... class LineBreak(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] rPr: Typed[CharacterProperties, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__(self, rPr: CharacterProperties | None = None) -> None: ... @@ -425,8 +430,8 @@ class TextField(Serialisable): ) -> None: ... class Paragraph(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] pPr: Typed[ParagraphProperties, Literal[True]] properties: Alias endParaRPr: Typed[CharacterProperties, Literal[True]] @@ -464,8 +469,8 @@ class TextNormalAutofit(Serialisable): def __init__(self, fontScale: _ConvertibleToInt, lnSpcReduction: _ConvertibleToInt) -> None: ... class RichTextProperties(Serialisable): - tagname: str - namespace: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] rot: Integer[Literal[True]] spcFirstLastPara: Bool[Literal[True]] vertOverflow: NoneSet[_RichTextPropertiesVertOverflow] @@ -488,10 +493,10 @@ class RichTextProperties(Serialisable): prstTxWarp: Typed[PresetTextShape, Literal[True]] scene3d: Typed[Scene3D, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] - noAutofit: Incomplete - normAutofit: Incomplete - spAutoFit: Incomplete - flatTx: Incomplete + noAutofit: EmptyTag[Literal[False]] + normAutofit: EmptyTag[Literal[False]] + spAutoFit: EmptyTag[Literal[False]] + flatTx: NestedInteger[Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, @@ -514,11 +519,11 @@ class RichTextProperties(Serialisable): forceAA: _ConvertibleToBool | None = None, upright: _ConvertibleToBool | None = None, compatLnSpc: _ConvertibleToBool | None = None, - prstTxWarp: Incomplete | None = None, - scene3d: Incomplete | None = None, - extLst: Incomplete | None = None, - noAutofit: Incomplete | None = None, - normAutofit: Incomplete | None = None, - spAutoFit: Incomplete | None = None, - flatTx: Incomplete | None = None, + prstTxWarp: PresetTextShape | None = None, + scene3d: Scene3D | None = None, + extLst: Unused = None, + noAutofit: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + normAutofit: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + spAutoFit: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + flatTx: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/xdr.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/xdr.pyi index c77a2b7e1..fb67f3eda 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/xdr.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/xdr.pyi @@ -1,19 +1,20 @@ from _typeshed import Incomplete +from typing import ClassVar from .geometry import Point2D, PositiveSize2D, Transform2D class XDRPoint2D(Point2D): - namespace: Incomplete + namespace: ClassVar[None] # type:ignore[assignment] x: Incomplete y: Incomplete class XDRPositiveSize2D(PositiveSize2D): - namespace: Incomplete + namespace: ClassVar[None] # type:ignore[assignment] cx: Incomplete cy: Incomplete class XDRTransform2D(Transform2D): - namespace: Incomplete + namespace: ClassVar[None] # type:ignore[assignment] rot: Incomplete flipH: Incomplete flipV: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi index 80d0ef837..a828d3c08 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/formatting.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete, Unused +from typing import ClassVar from typing_extensions import Literal from openpyxl.descriptors.base import Alias, Bool, Convertible, _ConvertibleToBool, _ConvertibleToMultiCellRange @@ -6,7 +7,7 @@ from openpyxl.descriptors.serialisable import Serialisable from openpyxl.worksheet.cell_range import MultiCellRange class ConditionalFormatting(Serialisable): - tagname: str + tagname: ClassVar[str] sqref: Convertible[MultiCellRange, Literal[False]] cells: Alias pivot: Bool[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi index ccb97c501..b9e99931d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formatting/rule.pyi @@ -71,7 +71,7 @@ class ValueDescriptor(Float[Incomplete]): def __set__(self, instance: Serialisable | Strict, value) -> None: ... # type: ignore[override] class FormatObject(Serialisable): - tagname: str + tagname: ClassVar[str] type: Set[_FormatObjectType] val: Incomplete gte: Bool[Literal[True]] @@ -85,7 +85,7 @@ class RuleType(Serialisable): cfvo: Incomplete class IconSet(RuleType): - tagname: str + tagname: ClassVar[str] iconSet: NoneSet[_IconSetIconSet] showValue: Bool[Literal[True]] percent: Bool[Literal[True]] @@ -102,7 +102,7 @@ class IconSet(RuleType): ) -> None: ... class DataBar(RuleType): - tagname: str + tagname: ClassVar[str] minLength: Integer[Literal[True]] maxLength: Integer[Literal[True]] showValue: Bool[Literal[True]] @@ -119,14 +119,14 @@ class DataBar(RuleType): ) -> None: ... class ColorScale(RuleType): - tagname: str + tagname: ClassVar[str] color: Incomplete __elements__: ClassVar[tuple[str, ...]] cfvo: Incomplete def __init__(self, cfvo: Incomplete | None = None, color: Incomplete | None = None) -> None: ... class Rule(Serialisable): - tagname: str + tagname: ClassVar[str] type: Set[_RuleType] dxfId: Integer[Literal[True]] priority: Integer[Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/tokenizer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/tokenizer.pyi index 4f2561741..6b7d97431 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/tokenizer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/tokenizer.pyi @@ -1,13 +1,15 @@ from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final class TokenizerError(Exception): ... class Tokenizer: - SN_RE: Incomplete - WSPACE_RE: Incomplete - STRING_REGEXES: Incomplete - ERROR_CODES: Incomplete - TOKEN_ENDERS: str + SN_RE: Final[Pattern[str]] + WSPACE_RE: Final[Pattern[str]] + STRING_REGEXES: Final[dict[str, Pattern[str]]] + ERROR_CODES: Final[tuple[str, ...]] + TOKEN_ENDERS: Final = ",;}) +-*/^&=><%" formula: Incomplete items: Incomplete token_stack: Incomplete @@ -20,33 +22,33 @@ class Tokenizer: def render(self): ... class Token: - LITERAL: str - OPERAND: str - FUNC: str - ARRAY: str - PAREN: str - SEP: str - OP_PRE: str - OP_IN: str - OP_POST: str - WSPACE: str + LITERAL: Final = "LITERAL" + OPERAND: Final = "OPERAND" + FUNC: Final = "FUNC" + ARRAY: Final = "ARRAY" + PAREN: Final = "PAREN" + SEP: Final = "SEP" + OP_PRE: Final = "OPERATOR-PREFIX" + OP_IN: Final = "OPERATOR-INFIX" + OP_POST: Final = "OPERATOR-POSTFIX" + WSPACE: Final = "WHITE-SPACE" value: Incomplete type: Incomplete subtype: Incomplete def __init__(self, value, type_, subtype: str = "") -> None: ... - TEXT: str - NUMBER: str - LOGICAL: str - ERROR: str - RANGE: str + TEXT: Final = "TEXT" + NUMBER: Final = "NUMBER" + LOGICAL: Final = "LOGICAL" + ERROR: Final = "ERROR" + RANGE: Final = "RANGE" @classmethod def make_operand(cls, value): ... - OPEN: str - CLOSE: str + OPEN: Final = "OPEN" + CLOSE: Final = "CLOSE" @classmethod def make_subexp(cls, value, func: bool = False): ... def get_closer(self): ... - ARG: str - ROW: str + ARG: Final = "ARG" + ROW: Final = "ROW" @classmethod def make_separator(cls, value): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/translate.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/translate.pyi index 61c618730..edbec1d54 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/translate.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/formula/translate.pyi @@ -1,4 +1,6 @@ from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final class TranslatorError(Exception): ... @@ -6,9 +8,9 @@ class Translator: tokenizer: Incomplete def __init__(self, formula, origin) -> None: ... def get_tokens(self): ... - ROW_RANGE_RE: Incomplete - COL_RANGE_RE: Incomplete - CELL_REF_RE: Incomplete + ROW_RANGE_RE: Final[Pattern[str]] + COL_RANGE_RE: Final[Pattern[str]] + CELL_REF_RE: Final[Pattern[str]] @staticmethod def translate_row(row_str, rdelta): ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi index 96e68ca37..29f0191b4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/core.pyi @@ -1,5 +1,6 @@ from _typeshed import Incomplete from typing import ClassVar +from typing_extensions import Literal from openpyxl.descriptors import DateTime from openpyxl.descriptors.base import Alias @@ -7,52 +8,48 @@ from openpyxl.descriptors.nested import NestedText from openpyxl.descriptors.serialisable import Serialisable # Does not reimplement the relevant methods, so runtime also has incompatible supertypes -class NestedDateTime(DateTime[Incomplete], NestedText): # type: ignore[misc] +class NestedDateTime(DateTime[Incomplete], NestedText[Incomplete, Incomplete]): # type: ignore[misc] expected_type: type[Incomplete] - def to_tree( - self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None - ): ... + def to_tree(self, tagname: str | None = None, value: Incomplete | None = None, namespace: str | None = None): ... class QualifiedDateTime(NestedDateTime): - def to_tree( - self, tagname: Incomplete | None = None, value: Incomplete | None = None, namespace: Incomplete | None = None - ): ... + def to_tree(self, tagname: str | None = None, value: Incomplete | None = None, namespace: str | None = None): ... class DocumentProperties(Serialisable): - tagname: str - namespace: Incomplete - category: Incomplete - contentStatus: Incomplete - keywords: Incomplete - lastModifiedBy: Incomplete + tagname: ClassVar[str] + namespace: ClassVar[str] + category: NestedText[str, Literal[True]] + contentStatus: NestedText[str, Literal[True]] + keywords: NestedText[str, Literal[True]] + lastModifiedBy: NestedText[str, Literal[True]] lastPrinted: Incomplete - revision: Incomplete - version: Incomplete + revision: NestedText[str, Literal[True]] + version: NestedText[str, Literal[True]] last_modified_by: Alias - subject: Incomplete - title: Incomplete - creator: Incomplete - description: Incomplete - identifier: Incomplete - language: Incomplete + subject: NestedText[str, Literal[True]] + title: NestedText[str, Literal[True]] + creator: NestedText[str, Literal[True]] + description: NestedText[str, Literal[True]] + identifier: NestedText[str, Literal[True]] + language: NestedText[str, Literal[True]] created: Incomplete modified: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__( self, - category: Incomplete | None = None, - contentStatus: Incomplete | None = None, - keywords: Incomplete | None = None, - lastModifiedBy: Incomplete | None = None, + category: object = None, + contentStatus: object = None, + keywords: object = None, + lastModifiedBy: object = None, lastPrinted: Incomplete | None = None, - revision: Incomplete | None = None, - version: Incomplete | None = None, + revision: object = None, + version: object = None, created=None, - creator: str = "openpyxl", - description: Incomplete | None = None, - identifier: Incomplete | None = None, - language: Incomplete | None = None, + creator: object = "openpyxl", + description: object = None, + identifier: object = None, + language: object = None, modified=None, - subject: Incomplete | None = None, - title: Incomplete | None = None, + subject: object = None, + title: object = None, ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi index 188498ea0..9aadb179c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/custom.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from collections.abc import Iterator from datetime import datetime from typing import Any, Generic, TypeVar -from typing_extensions import Literal, Self +from typing_extensions import Final, Literal, Self, TypeAlias from openpyxl.descriptors import Sequence, Strict from openpyxl.descriptors.base import ( @@ -20,7 +20,7 @@ from openpyxl.descriptors.nested import NestedText _T = TypeVar("_T") # Does not reimplement anything, so runtime also has incompatible supertypes -class NestedBoolText(Bool[Incomplete], NestedText): ... # type: ignore[misc] +class NestedBoolText(Bool[Incomplete], NestedText[Incomplete, Incomplete]): ... # type: ignore[misc] class _TypedProperty(Strict, Generic[_T]): name: String[Literal[False]] @@ -49,8 +49,9 @@ class BoolProperty(_TypedProperty[_ConvertibleToBool]): class LinkProperty(_TypedProperty[str]): value: String[Literal[False]] -CLASS_MAPPING: Incomplete -XML_MAPPING: Incomplete +_MappingPropertyType: TypeAlias = StringProperty | IntProperty | FloatProperty | DateTimeProperty | BoolProperty | LinkProperty +CLASS_MAPPING: Final[dict[type[_MappingPropertyType], str]] +XML_MAPPING: Final[dict[str, type[_MappingPropertyType]]] class CustomPropertyList(Strict): props: Sequence diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi index c50f9fe3f..698fe0164 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/extended.pyi @@ -1,8 +1,9 @@ -from _typeshed import Incomplete, Unused +from _typeshed import Unused from typing import ClassVar from typing_extensions import Literal -from openpyxl.descriptors.base import Typed +from openpyxl.descriptors.base import Typed, _ConvertibleToInt +from openpyxl.descriptors.nested import NestedText from openpyxl.descriptors.serialisable import Serialisable def get_version(): ... @@ -20,63 +21,63 @@ class VectorVariant(Serialisable): __attrs__: ClassVar[tuple[str, ...]] class ExtendedProperties(Serialisable): - tagname: str - Template: Incomplete - Manager: Incomplete - Company: Incomplete - Pages: Incomplete - Words: Incomplete - Characters: Incomplete - PresentationFormat: Incomplete - Lines: Incomplete - Paragraphs: Incomplete - Slides: Incomplete - Notes: Incomplete - TotalTime: Incomplete - HiddenSlides: Incomplete - MMClips: Incomplete - ScaleCrop: Incomplete + tagname: ClassVar[str] + Template: NestedText[str, Literal[True]] + Manager: NestedText[str, Literal[True]] + Company: NestedText[str, Literal[True]] + Pages: NestedText[int, Literal[True]] + Words: NestedText[int, Literal[True]] + Characters: NestedText[int, Literal[True]] + PresentationFormat: NestedText[str, Literal[True]] + Lines: NestedText[int, Literal[True]] + Paragraphs: NestedText[int, Literal[True]] + Slides: NestedText[int, Literal[True]] + Notes: NestedText[int, Literal[True]] + TotalTime: NestedText[int, Literal[True]] + HiddenSlides: NestedText[int, Literal[True]] + MMClips: NestedText[int, Literal[True]] + ScaleCrop: NestedText[str, Literal[True]] HeadingPairs: Typed[VectorVariant, Literal[True]] TitlesOfParts: Typed[VectorLpstr, Literal[True]] - LinksUpToDate: Incomplete - CharactersWithSpaces: Incomplete - SharedDoc: Incomplete - HyperlinkBase: Incomplete + LinksUpToDate: NestedText[str, Literal[True]] + CharactersWithSpaces: NestedText[int, Literal[True]] + SharedDoc: NestedText[str, Literal[True]] + HyperlinkBase: NestedText[str, Literal[True]] HLinks: Typed[VectorVariant, Literal[True]] - HyperlinksChanged: Incomplete + HyperlinksChanged: NestedText[str, Literal[True]] DigSig: Typed[DigSigBlob, Literal[True]] - Application: Incomplete - AppVersion: Incomplete - DocSecurity: Incomplete + Application: NestedText[str, Literal[True]] + AppVersion: NestedText[str, Literal[True]] + DocSecurity: NestedText[int, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - Template: Incomplete | None = None, - Manager: Incomplete | None = None, - Company: Incomplete | None = None, - Pages: Incomplete | None = None, - Words: Incomplete | None = None, - Characters: Incomplete | None = None, - PresentationFormat: Incomplete | None = None, - Lines: Incomplete | None = None, - Paragraphs: Incomplete | None = None, - Slides: Incomplete | None = None, - Notes: Incomplete | None = None, - TotalTime: Incomplete | None = None, - HiddenSlides: Incomplete | None = None, - MMClips: Incomplete | None = None, - ScaleCrop: Incomplete | None = None, + Template: object = None, + Manager: object = None, + Company: object = None, + Pages: _ConvertibleToInt | None = None, + Words: _ConvertibleToInt | None = None, + Characters: _ConvertibleToInt | None = None, + PresentationFormat: object = None, + Lines: _ConvertibleToInt | None = None, + Paragraphs: _ConvertibleToInt | None = None, + Slides: _ConvertibleToInt | None = None, + Notes: _ConvertibleToInt | None = None, + TotalTime: _ConvertibleToInt | None = None, + HiddenSlides: _ConvertibleToInt | None = None, + MMClips: _ConvertibleToInt | None = None, + ScaleCrop: object = None, HeadingPairs: Unused = None, TitlesOfParts: Unused = None, - LinksUpToDate: Incomplete | None = None, - CharactersWithSpaces: Incomplete | None = None, - SharedDoc: Incomplete | None = None, - HyperlinkBase: Incomplete | None = None, + LinksUpToDate: object = None, + CharactersWithSpaces: _ConvertibleToInt | None = None, + SharedDoc: object = None, + HyperlinkBase: object = None, HLinks: Unused = None, - HyperlinksChanged: Incomplete | None = None, + HyperlinksChanged: object = None, DigSig: Unused = None, - Application: str = "Microsoft Excel", - AppVersion: Incomplete | None = None, - DocSecurity: Incomplete | None = None, + Application: object = "Microsoft Excel", + AppVersion: object = None, + DocSecurity: _ConvertibleToInt | None = None, ) -> None: ... def to_tree(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi index bcc569d4e..e0b8b8430 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/manifest.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from collections.abc import Generator from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from openpyxl.descriptors.base import String from openpyxl.descriptors.serialisable import Serialisable @@ -9,22 +9,22 @@ from openpyxl.descriptors.serialisable import Serialisable mimetypes: Incomplete class FileExtension(Serialisable): - tagname: str + tagname: ClassVar[str] Extension: String[Literal[False]] ContentType: String[Literal[False]] def __init__(self, Extension: str, ContentType: str) -> None: ... class Override(Serialisable): - tagname: str + tagname: ClassVar[str] PartName: String[Literal[False]] ContentType: String[Literal[False]] def __init__(self, PartName: str, ContentType: str) -> None: ... -DEFAULT_TYPES: Incomplete -DEFAULT_OVERRIDE: Incomplete +DEFAULT_TYPES: Final[list[FileExtension]] +DEFAULT_OVERRIDE: Final[list[Override]] class Manifest(Serialisable): - tagname: str + tagname: ClassVar[str] Default: Incomplete Override: Incomplete path: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi index 04cb557b1..09165e7bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/relationship.pyi @@ -1,13 +1,13 @@ from _typeshed import Incomplete, Unused from collections.abc import Generator -from typing import overload +from typing import ClassVar, overload from typing_extensions import Literal from openpyxl.descriptors.base import Alias, String from openpyxl.descriptors.serialisable import Serialisable class Relationship(Serialisable): - tagname: str + tagname: ClassVar[str] Type: String[Literal[False]] Target: String[Literal[False]] target: Alias @@ -26,7 +26,7 @@ class Relationship(Serialisable): ) -> None: ... class RelationshipList(Serialisable): - tagname: str + tagname: ClassVar[str] Relationship: Incomplete def __init__(self, Relationship=()) -> None: ... def append(self, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi index 4875deb6b..303fa16ac 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/packaging/workbook.pyi @@ -4,6 +4,7 @@ from typing_extensions import Literal, TypeAlias from openpyxl.descriptors.base import Alias, Bool, Integer, NoneSet, String, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedString from openpyxl.descriptors.serialisable import Serialisable from openpyxl.workbook.defined_name import DefinedNameList from openpyxl.workbook.function_group import FunctionGroupList @@ -16,7 +17,7 @@ _ChildSheetState: TypeAlias = Literal["visible", "hidden", "veryHidden"] _WorkbookPackageConformance: TypeAlias = Literal["strict", "transitional"] class FileRecoveryProperties(Serialisable): - tagname: str + tagname: ClassVar[str] autoRecover: Bool[Literal[True]] crashSave: Bool[Literal[True]] dataExtractLoad: Bool[Literal[True]] @@ -30,7 +31,7 @@ class FileRecoveryProperties(Serialisable): ) -> None: ... class ChildSheet(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] sheetId: Integer[Literal[False]] state: NoneSet[_ChildSheetState] @@ -44,13 +45,13 @@ class ChildSheet(Serialisable): ) -> None: ... class PivotCache(Serialisable): - tagname: str + tagname: ClassVar[str] cacheId: Integer[Literal[False]] id: Incomplete def __init__(self, cacheId: _ConvertibleToInt, id: Incomplete | None = None) -> None: ... class WorkbookPackage(Serialisable): - tagname: str + tagname: ClassVar[str] conformance: NoneSet[_WorkbookPackageConformance] fileVersion: Typed[FileVersion, Literal[True]] fileSharing: Typed[FileSharing, Literal[True]] @@ -63,7 +64,7 @@ class WorkbookPackage(Serialisable): externalReferences: Incomplete definedNames: Typed[DefinedNameList, Literal[True]] calcPr: Typed[CalcProperties, Literal[True]] - oleSize: Incomplete + oleSize: NestedString[Literal[True]] customWorkbookViews: Incomplete pivotCaches: Incomplete smartTagPr: Typed[SmartTagProperties, Literal[True]] @@ -72,7 +73,7 @@ class WorkbookPackage(Serialisable): fileRecoveryPr: Typed[FileRecoveryProperties, Literal[True]] webPublishObjects: Typed[WebPublishObjectList, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] - Ignorable: Incomplete + Ignorable: NestedString[Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__( self, @@ -87,7 +88,7 @@ class WorkbookPackage(Serialisable): externalReferences=(), definedNames: DefinedNameList | None = None, calcPr: CalcProperties | None = None, - oleSize: Incomplete | None = None, + oleSize: object = None, customWorkbookViews=(), pivotCaches=(), smartTagPr: SmartTagProperties | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi index 2a456dc95..635b93a5b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi @@ -16,6 +16,7 @@ from openpyxl.descriptors.base import ( _ConvertibleToInt, ) from openpyxl.descriptors.excel import ExtensionList +from openpyxl.descriptors.nested import NestedInteger, _HasTagAndGet from openpyxl.descriptors.serialisable import Serialisable from openpyxl.pivot.fields import Error, Missing, Number, Text, TupleList from openpyxl.pivot.table import PivotArea @@ -24,19 +25,19 @@ _RangePrGroupBy: TypeAlias = Literal["range", "seconds", "minutes", "hours", "da _CacheSourceType: TypeAlias = Literal["worksheet", "external", "consolidation", "scenario"] class MeasureDimensionMap(Serialisable): - tagname: str + tagname: ClassVar[str] measureGroup: Integer[Literal[True]] dimension: Integer[Literal[True]] def __init__(self, measureGroup: _ConvertibleToInt | None = None, dimension: _ConvertibleToInt | None = None) -> None: ... class MeasureGroup(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] caption: String[Literal[False]] def __init__(self, name: str, caption: str) -> None: ... class PivotDimension(Serialisable): - tagname: str + tagname: ClassVar[str] measure: Bool[Literal[False]] name: String[Literal[False]] uniqueName: String[Literal[False]] @@ -47,7 +48,7 @@ class PivotDimension(Serialisable): def __init__(self, measure: _ConvertibleToBool, name: str, uniqueName: str, caption: str) -> None: ... class CalculatedMember(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] mdx: String[Literal[False]] memberName: String[Literal[False]] @@ -70,7 +71,7 @@ class CalculatedMember(Serialisable): ) -> None: ... class CalculatedItem(Serialisable): - tagname: str + tagname: ClassVar[str] field: Integer[Literal[True]] formula: String[Literal[False]] pivotArea: Typed[PivotArea, Literal[False]] @@ -86,13 +87,13 @@ class CalculatedItem(Serialisable): ) -> None: ... class ServerFormat(Serialisable): - tagname: str + tagname: ClassVar[str] culture: String[Literal[True]] format: String[Literal[True]] def __init__(self, culture: str | None = None, format: str | None = None) -> None: ... class ServerFormatList(Serialisable): - tagname: str + tagname: ClassVar[str] serverFormat: Incomplete __elements__: ClassVar[tuple[str, ...]] __attrs__: ClassVar[tuple[str, ...]] @@ -101,21 +102,21 @@ class ServerFormatList(Serialisable): def count(self): ... class Query(Serialisable): - tagname: str + tagname: ClassVar[str] mdx: String[Literal[False]] tpls: Typed[TupleList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] def __init__(self, mdx: str, tpls: TupleList | None = None) -> None: ... class QueryCache(Serialisable): - tagname: str + tagname: ClassVar[str] count: Integer[Literal[False]] query: Typed[Query, Literal[False]] __elements__: ClassVar[tuple[str, ...]] def __init__(self, count: _ConvertibleToInt, query: Query) -> None: ... class OLAPSet(Serialisable): - tagname: str + tagname: ClassVar[str] count: Integer[Literal[False]] maxRank: Integer[Literal[False]] setDefinition: String[Literal[False]] @@ -142,7 +143,7 @@ class OLAPSets(Serialisable): def __init__(self, count: _ConvertibleToInt, set: OLAPSet) -> None: ... class PCDSDTCEntries(Serialisable): - tagname: str + tagname: ClassVar[str] count: Integer[Literal[False]] m: Typed[Missing, Literal[False]] n: Typed[Number, Literal[False]] @@ -152,7 +153,7 @@ class PCDSDTCEntries(Serialisable): def __init__(self, count: _ConvertibleToInt, m: Missing, n: Number, e: Error, s: Text) -> None: ... class TupleCache(Serialisable): - tagname: str + tagname: ClassVar[str] entries: Typed[PCDSDTCEntries, Literal[True]] sets: Typed[OLAPSets, Literal[True]] queryCache: Typed[QueryCache, Literal[True]] @@ -169,7 +170,7 @@ class TupleCache(Serialisable): ) -> None: ... class PCDKPI(Serialisable): - tagname: str + tagname: ClassVar[str] uniqueName: String[Literal[False]] caption: String[Literal[True]] displayFolder: String[Literal[False]] @@ -214,7 +215,7 @@ class PCDKPI(Serialisable): ) -> None: ... class GroupMember(Serialisable): - tagname: str + tagname: ClassVar[str] uniqueName: String[Literal[False]] group: Bool[Literal[False]] def __init__(self, uniqueName: str, group: _ConvertibleToBool = None) -> None: ... @@ -226,7 +227,7 @@ class GroupMembers(Serialisable): def __init__(self, count: _ConvertibleToInt, groupMember: GroupMember) -> None: ... class LevelGroup(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] uniqueName: String[Literal[False]] caption: String[Literal[False]] @@ -239,14 +240,14 @@ class LevelGroup(Serialisable): ) -> None: ... class Groups(Serialisable): - tagname: str + tagname: ClassVar[str] count: Integer[Literal[False]] group: Typed[LevelGroup, Literal[False]] __elements__: ClassVar[tuple[str, ...]] def __init__(self, count: _ConvertibleToInt, group: LevelGroup) -> None: ... class GroupLevel(Serialisable): - tagname: str + tagname: ClassVar[str] uniqueName: String[Literal[False]] caption: String[Literal[False]] user: Bool[Literal[False]] @@ -271,7 +272,7 @@ class GroupLevels(Serialisable): def __init__(self, count: _ConvertibleToInt, groupLevel: GroupLevel) -> None: ... class FieldUsage(Serialisable): - tagname: str + tagname: ClassVar[str] x: Integer[Literal[False]] def __init__(self, x: _ConvertibleToInt) -> None: ... @@ -282,7 +283,7 @@ class FieldsUsage(Serialisable): def __init__(self, count: _ConvertibleToInt, fieldUsage: FieldUsage | None = None) -> None: ... class CacheHierarchy(Serialisable): - tagname: str + tagname: ClassVar[str] uniqueName: String[Literal[False]] caption: String[Literal[True]] measure: Bool[Literal[False]] @@ -370,7 +371,7 @@ class CacheHierarchy(Serialisable): ) -> None: ... class GroupItems(Serialisable): - tagname: str + tagname: ClassVar[str] m: Incomplete n: Incomplete b: Incomplete @@ -384,14 +385,16 @@ class GroupItems(Serialisable): def count(self): ... class DiscretePr(Serialisable): - tagname: str + tagname: ClassVar[str] count: Integer[Literal[False]] - x: Incomplete + x: NestedInteger[Literal[True]] __elements__: ClassVar[tuple[str, ...]] - def __init__(self, count: _ConvertibleToInt, x: Incomplete | None = None) -> None: ... + def __init__( + self, count: _ConvertibleToInt, x: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None + ) -> None: ... class RangePr(Serialisable): - tagname: str + tagname: ClassVar[str] autoStart: Bool[Literal[True]] autoEnd: Bool[Literal[True]] groupBy: Set[_RangePrGroupBy] @@ -413,7 +416,7 @@ class RangePr(Serialisable): ) -> None: ... class FieldGroup(Serialisable): - tagname: str + tagname: ClassVar[str] par: Integer[Literal[True]] base: Integer[Literal[True]] rangePr: Typed[RangePr, Literal[True]] @@ -430,7 +433,7 @@ class FieldGroup(Serialisable): ) -> None: ... class SharedItems(Serialisable): - tagname: str + tagname: ClassVar[str] m: Incomplete n: Incomplete b: Incomplete @@ -473,10 +476,10 @@ class SharedItems(Serialisable): def count(self): ... class CacheField(Serialisable): - tagname: str + tagname: ClassVar[str] sharedItems: Typed[SharedItems, Literal[True]] fieldGroup: Typed[FieldGroup, Literal[True]] - mpMap: Incomplete + mpMap: NestedInteger[Literal[True]] extLst: Typed[ExtensionList, Literal[True]] name: String[Literal[False]] caption: String[Literal[True]] @@ -497,7 +500,7 @@ class CacheField(Serialisable): self, sharedItems: SharedItems | None = None, fieldGroup: FieldGroup | None = None, - mpMap: Incomplete | None = None, + mpMap: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, extLst: ExtensionList | None = None, *, name: str, @@ -537,7 +540,7 @@ class CacheField(Serialisable): ) -> None: ... class RangeSet(Serialisable): - tagname: str + tagname: ClassVar[str] i1: Integer[Literal[True]] i2: Integer[Literal[True]] i3: Integer[Literal[True]] @@ -570,12 +573,12 @@ class RangeSet(Serialisable): ) -> None: ... class PageItem(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] def __init__(self, name: str) -> None: ... class Page(Serialisable): - tagname: str + tagname: ClassVar[str] pageItem: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, count: Incomplete | None = None, pageItem: Incomplete | None = None) -> None: ... @@ -583,7 +586,7 @@ class Page(Serialisable): def count(self): ... class Consolidation(Serialisable): - tagname: str + tagname: ClassVar[str] autoPage: Bool[Literal[True]] pages: Incomplete rangeSets: Incomplete @@ -591,14 +594,14 @@ class Consolidation(Serialisable): def __init__(self, autoPage: _ConvertibleToBool | None = None, pages=(), rangeSets=()) -> None: ... class WorksheetSource(Serialisable): - tagname: str + tagname: ClassVar[str] ref: String[Literal[True]] name: String[Literal[True]] sheet: String[Literal[True]] def __init__(self, ref: str | None = None, name: str | None = None, sheet: str | None = None) -> None: ... class CacheSource(Serialisable): - tagname: str + tagname: ClassVar[str] type: Set[_CacheSourceType] connectionId: Integer[Literal[True]] worksheetSource: Typed[WorksheetSource, Literal[True]] @@ -618,7 +621,7 @@ class CacheDefinition(Serialisable): mime_type: str rel_type: str records: Incomplete - tagname: str + tagname: ClassVar[str] invalid: Bool[Literal[True]] saveData: Bool[Literal[True]] refreshOnLoad: Bool[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi index 536929917..661b671a4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/fields.pyi @@ -17,7 +17,7 @@ from openpyxl.descriptors.base import ( from openpyxl.descriptors.serialisable import Serialisable class Index(Serialisable): - tagname: str + tagname: ClassVar[str] v: Integer[Literal[True]] def __init__(self, v: _ConvertibleToInt | None = 0) -> None: ... @@ -37,7 +37,7 @@ class TupleList(Serialisable): def __init__(self, c: _ConvertibleToInt | None, tpl: Tuple) -> None: ... class Missing(Serialisable): - tagname: str + tagname: ClassVar[str] tpls: Incomplete x: Incomplete u: Bool[Literal[True]] @@ -70,7 +70,7 @@ class Missing(Serialisable): ) -> None: ... class Number(Serialisable): - tagname: str + tagname: ClassVar[str] tpls: Incomplete x: Incomplete v: Float[Literal[False]] @@ -125,7 +125,7 @@ class Number(Serialisable): ) -> None: ... class Error(Serialisable): - tagname: str + tagname: ClassVar[str] tpls: Typed[TupleList, Literal[True]] x: Incomplete v: String[Literal[False]] @@ -180,7 +180,7 @@ class Error(Serialisable): ) -> None: ... class Boolean(Serialisable): - tagname: str + tagname: ClassVar[str] x: Incomplete v: Bool[Literal[False]] u: Bool[Literal[True]] @@ -199,7 +199,7 @@ class Boolean(Serialisable): ) -> None: ... class Text(Serialisable): - tagname: str + tagname: ClassVar[str] tpls: Incomplete x: Incomplete v: String[Literal[False]] @@ -234,7 +234,7 @@ class Text(Serialisable): ) -> None: ... class DateTimeField(Serialisable): - tagname: str + tagname: ClassVar[str] x: Incomplete v: DateTime[Literal[False]] u: Bool[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi index cc3cb4979..7e90dac95 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/record.pyi @@ -7,7 +7,7 @@ from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable class Record(Serialisable): - tagname: str + tagname: ClassVar[str] m: Incomplete n: Incomplete b: Incomplete @@ -30,7 +30,7 @@ class Record(Serialisable): class RecordList(Serialisable): mime_type: str rel_type: str - tagname: str + tagname: ClassVar[str] r: Incomplete extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi index d3d10f626..59af9e6eb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi @@ -106,12 +106,12 @@ _ItemType: TypeAlias = Literal[ _PivotFieldSortType: TypeAlias = Literal["manual", "ascending", "descending"] class HierarchyUsage(Serialisable): - tagname: str + tagname: ClassVar[str] hierarchyUsage: Integer[Literal[False]] def __init__(self, hierarchyUsage: _ConvertibleToInt) -> None: ... class ColHierarchiesUsage(Serialisable): - tagname: str + tagname: ClassVar[str] colHierarchyUsage: Incomplete __elements__: ClassVar[tuple[str, ...]] __attrs__: ClassVar[tuple[str, ...]] @@ -120,7 +120,7 @@ class ColHierarchiesUsage(Serialisable): def count(self): ... class RowHierarchiesUsage(Serialisable): - tagname: str + tagname: ClassVar[str] rowHierarchyUsage: Incomplete __elements__: ClassVar[tuple[str, ...]] __attrs__: ClassVar[tuple[str, ...]] @@ -129,7 +129,7 @@ class RowHierarchiesUsage(Serialisable): def count(self): ... class PivotFilter(Serialisable): - tagname: str + tagname: ClassVar[str] fld: Integer[Literal[False]] mpFld: Integer[Literal[True]] type: Set[_PivotFilterType] @@ -187,7 +187,7 @@ class PivotFilters(Serialisable): def __init__(self, count: _ConvertibleToInt, filter: PivotFilter | None = None) -> None: ... class PivotTableStyle(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[True]] showRowHeaders: Bool[Literal[False]] showColHeaders: Bool[Literal[False]] @@ -205,7 +205,7 @@ class PivotTableStyle(Serialisable): ) -> None: ... class MemberList(Serialisable): - tagname: str + tagname: ClassVar[str] level: Integer[Literal[True]] member: Incomplete __elements__: ClassVar[tuple[str, ...]] @@ -214,7 +214,7 @@ class MemberList(Serialisable): def count(self): ... class MemberProperty(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[True]] showCell: Bool[Literal[True]] showTip: Bool[Literal[True]] @@ -253,7 +253,7 @@ class MemberProperty(Serialisable): ) -> None: ... class PivotHierarchy(Serialisable): - tagname: str + tagname: ClassVar[str] outline: Bool[Literal[False]] multipleItemSelectionAllowed: Bool[Literal[False]] subtotalTop: Bool[Literal[False]] @@ -288,7 +288,7 @@ class PivotHierarchy(Serialisable): ) -> None: ... class Reference(Serialisable): - tagname: str + tagname: ClassVar[str] field: Integer[Literal[True]] selected: Bool[Literal[True]] byPosition: Bool[Literal[True]] @@ -334,7 +334,7 @@ class Reference(Serialisable): def count(self): ... class PivotArea(Serialisable): - tagname: str + tagname: ClassVar[str] references: Incomplete extLst: Typed[ExtensionList, Literal[True]] field: Integer[Literal[True]] @@ -369,7 +369,7 @@ class PivotArea(Serialisable): ) -> None: ... class ChartFormat(Serialisable): - tagname: str + tagname: ClassVar[str] chart: Integer[Literal[False]] format: Integer[Literal[False]] series: Bool[Literal[False]] @@ -385,7 +385,7 @@ class ChartFormat(Serialisable): ) -> None: ... class ConditionalFormat(Serialisable): - tagname: str + tagname: ClassVar[str] scope: Set[_ConditionalFormatScope] type: NoneSet[_ConditionalFormatType] priority: Integer[Literal[False]] @@ -413,17 +413,17 @@ class ConditionalFormat(Serialisable): ) -> None: ... class ConditionalFormatList(Serialisable): - tagname: str + tagname: ClassVar[str] conditionalFormat: Incomplete __attrs__: ClassVar[tuple[str, ...]] def __init__(self, conditionalFormat=..., count: Incomplete | None = ...) -> None: ... def by_priority(self): ... @property def count(self): ... - def to_tree(self, tagname: Incomplete | None = ...): ... # type: ignore[override] + def to_tree(self, tagname: str | None = None): ... # type: ignore[override] class Format(Serialisable): - tagname: str + tagname: ClassVar[str] action: NoneSet[_FormatAction] dxfId: Integer[Literal[True]] pivotArea: Typed[PivotArea, Literal[False]] @@ -448,7 +448,7 @@ class Format(Serialisable): ) -> None: ... class DataField(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[True]] fld: Integer[Literal[False]] subtotal: Set[_DataFieldSubtotal] @@ -485,7 +485,7 @@ class DataField(Serialisable): ) -> None: ... class PageField(Serialisable): - tagname: str + tagname: ClassVar[str] fld: Integer[Literal[False]] item: Integer[Literal[True]] hier: Integer[Literal[True]] @@ -504,7 +504,7 @@ class PageField(Serialisable): ) -> None: ... class RowColItem(Serialisable): - tagname: str + tagname: ClassVar[str] t: Set[_ItemType] r: Integer[Literal[False]] i: Integer[Literal[False]] @@ -513,7 +513,7 @@ class RowColItem(Serialisable): def __init__(self, t: _ItemType = "data", r: _ConvertibleToInt = 0, i: _ConvertibleToInt = 0, x=()) -> None: ... class RowColField(Serialisable): - tagname: str + tagname: ClassVar[str] x: Integer[Literal[False]] def __init__(self, x: _ConvertibleToInt) -> None: ... @@ -523,7 +523,7 @@ class AutoSortScope(Serialisable): def __init__(self, pivotArea: PivotArea) -> None: ... class FieldItem(Serialisable): - tagname: str + tagname: ClassVar[str] n: String[Literal[True]] t: Set[_ItemType] h: Bool[Literal[True]] @@ -551,7 +551,7 @@ class FieldItem(Serialisable): ) -> None: ... class PivotField(Serialisable): - tagname: str + tagname: ClassVar[str] items: Incomplete autoSortScope: Typed[AutoSortScope, Literal[True]] extLst: Typed[ExtensionList, Literal[True]] @@ -660,7 +660,7 @@ class PivotField(Serialisable): ) -> None: ... class Location(Serialisable): - tagname: str + tagname: ClassVar[str] ref: String[Literal[False]] firstHeaderRow: Integer[Literal[False]] firstDataRow: Integer[Literal[False]] @@ -680,7 +680,7 @@ class Location(Serialisable): class TableDefinition(Serialisable): mime_type: str rel_type: str - tagname: str + tagname: ClassVar[str] cache: Incomplete name: String[Literal[False]] cacheId: Integer[Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/excel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/excel.pyi index 410ba2223..4747182a4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/excel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/excel.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete, StrPath, SupportsRead +from typing_extensions import Final, Literal, TypeAlias from zipfile import ZipFile from openpyxl.chartsheet.chartsheet import Chartsheet @@ -7,7 +8,8 @@ from openpyxl.packaging.relationship import Relationship from openpyxl.reader.workbook import WorkbookParser from openpyxl.workbook import Workbook -SUPPORTED_FORMATS: Incomplete +_SupportedFormats: TypeAlias = Literal[".xlsx", ".xlsm", ".xltx", ".xltm"] +SUPPORTED_FORMATS: Final[tuple[_SupportedFormats, ...]] class ExcelReader: archive: ZipFile diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi index d38c39286..752312b98 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/alignment.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal, TypeAlias from openpyxl.descriptors.base import Alias, Bool, Min, MinMax, NoneSet, _ConvertibleToBool, _ConvertibleToFloat @@ -13,8 +14,8 @@ horizontal_alignments: tuple[_HorizontalAlignmentsType, ...] vertical_aligments: tuple[_VerticalAlignmentsType, ...] class Alignment(Serialisable): - tagname: str - __fields__: Incomplete + tagname: ClassVar[str] + __fields__: ClassVar[tuple[str, ...]] horizontal: NoneSet[_HorizontalAlignmentsType] vertical: NoneSet[_VerticalAlignmentsType] textRotation: NoneSet[int] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi index f11117c9c..3a9607925 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/borders.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete from typing import ClassVar -from typing_extensions import Literal, TypeAlias +from typing_extensions import Final, Literal, TypeAlias from openpyxl.descriptors.base import Alias, Bool, NoneSet, Typed, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable @@ -21,23 +21,23 @@ _SideStyle: TypeAlias = Literal[ "thin", ] -BORDER_NONE: Incomplete -BORDER_DASHDOT: str -BORDER_DASHDOTDOT: str -BORDER_DASHED: str -BORDER_DOTTED: str -BORDER_DOUBLE: str -BORDER_HAIR: str -BORDER_MEDIUM: str -BORDER_MEDIUMDASHDOT: str -BORDER_MEDIUMDASHDOTDOT: str -BORDER_MEDIUMDASHED: str -BORDER_SLANTDASHDOT: str -BORDER_THICK: str -BORDER_THIN: str +BORDER_NONE: Final = None +BORDER_DASHDOT: Final = "dashDot" +BORDER_DASHDOTDOT: Final = "dashDotDot" +BORDER_DASHED: Final = "dashed" +BORDER_DOTTED: Final = "dotted" +BORDER_DOUBLE: Final = "double" +BORDER_HAIR: Final = "hair" +BORDER_MEDIUM: Final = "medium" +BORDER_MEDIUMDASHDOT: Final = "mediumDashDot" +BORDER_MEDIUMDASHDOTDOT: Final = "mediumDashDotDot" +BORDER_MEDIUMDASHED: Final = "mediumDashed" +BORDER_SLANTDASHDOT: Final = "slantDashDot" +BORDER_THICK: Final = "thick" +BORDER_THIN: Final = "thin" class Side(Serialisable): - __fields__: Incomplete + __fields__: ClassVar[tuple[str, ...]] color: Incomplete style: NoneSet[_SideStyle] border_style: Alias @@ -49,8 +49,8 @@ class Side(Serialisable): ) -> None: ... class Border(Serialisable): - tagname: str - __fields__: Incomplete + tagname: ClassVar[str] + __fields__: ClassVar[tuple[str, ...]] __elements__: ClassVar[tuple[str, ...]] start: Typed[Side, Literal[True]] end: Typed[Side, Literal[True]] @@ -83,4 +83,4 @@ class Border(Serialisable): ) -> None: ... def __iter__(self): ... -DEFAULT_BORDER: Incomplete +DEFAULT_BORDER: Final[Border] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi index d1cd92846..22362cf54 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/cell_style.pyi @@ -17,7 +17,7 @@ class ArrayDescriptor: def __set__(self, instance: Serialisable | Strict, value) -> None: ... class StyleArray(array[Incomplete]): - tagname: str + tagname: ClassVar[str] fontId: Incomplete fillId: Incomplete borderId: Incomplete @@ -33,7 +33,7 @@ class StyleArray(array[Incomplete]): def __deepcopy__(self, memo): ... class CellStyle(Serialisable): - tagname: str + tagname: ClassVar[str] numFmtId: Integer[Literal[False]] fontId: Integer[Literal[False]] fillId: Integer[Literal[False]] @@ -81,7 +81,7 @@ class CellStyle(Serialisable): def applyAlignment(self): ... class CellStyleList(Serialisable): - tagname: str + tagname: ClassVar[str] __attrs__: ClassVar[tuple[str, ...]] # Overwritten by property below # count: Integer diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi index 67fbdd861..3b69fc271 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/colors.pyi @@ -1,23 +1,24 @@ from _typeshed import Incomplete, Unused +from re import Pattern from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from openpyxl.descriptors import Strict, Typed from openpyxl.descriptors.base import Bool, Integer, MinMax, String, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -COLOR_INDEX: Incomplete -BLACK: Incomplete -WHITE: Incomplete -BLUE: Incomplete -aRGB_REGEX: Incomplete +COLOR_INDEX: Final[tuple[str, ...]] +BLACK: Final = "00000000" +WHITE: Final = "00FFFFFF" +BLUE: Final = "00FFFFFF" +aRGB_REGEX: Final[Pattern[str]] class RGB(Typed[str, Incomplete]): expected_type: type[str] def __set__(self, instance: Serialisable | Strict, value) -> None: ... class Color(Serialisable): - tagname: str + tagname: ClassVar[str] rgb: Incomplete indexed: Integer[Literal[False]] auto: Bool[Literal[False]] @@ -48,12 +49,12 @@ class ColorDescriptor(Typed[Color, Incomplete]): def __set__(self, instance: Serialisable | Strict, value) -> None: ... class RgbColor(Serialisable): - tagname: str + tagname: ClassVar[str] rgb: Incomplete def __init__(self, rgb: Incomplete | None = None) -> None: ... class ColorList(Serialisable): - tagname: str + tagname: ClassVar[str] indexedColors: Incomplete mruColors: Incomplete __elements__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi index a30bf66a5..508463dd5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/differential.pyi @@ -9,7 +9,7 @@ from openpyxl.styles import Alignment, Border, Fill, Font, Protection from openpyxl.styles.numbers import NumberFormat class DifferentialStyle(Serialisable): - tagname: str + tagname: ClassVar[str] __elements__: ClassVar[tuple[str, ...]] font: Typed[Font, Literal[True]] numFmt: Typed[NumberFormat, Literal[True]] @@ -30,7 +30,7 @@ class DifferentialStyle(Serialisable): ) -> None: ... class DifferentialStyleList(Serialisable): - tagname: str + tagname: ClassVar[str] dxf: Incomplete styles: Alias __attrs__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi index 889844800..b65e4d567 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fills.pyi @@ -51,12 +51,12 @@ _FillsType: TypeAlias = Literal[ fills: tuple[_FillsType, ...] class Fill(Serialisable): - tagname: str + tagname: ClassVar[str] @classmethod def from_tree(cls, el): ... class PatternFill(Fill): - tagname: str + tagname: ClassVar[str] __elements__: ClassVar[tuple[str, ...]] patternType: NoneSet[_FillsType] fill_type: Alias @@ -73,13 +73,13 @@ class PatternFill(Fill): start_color: Incomplete | None = None, end_color: Incomplete | None = None, ) -> None: ... - def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] + def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None): ... # type: ignore[override] -DEFAULT_EMPTY_FILL: Incomplete -DEFAULT_GRAY_FILL: Incomplete +DEFAULT_EMPTY_FILL: Final[PatternFill] +DEFAULT_GRAY_FILL: Final[PatternFill] class Stop(Serialisable): - tagname: str + tagname: ClassVar[str] position: MinMax[float, Literal[False]] color: Incomplete def __init__(self, color, position: _ConvertibleToFloat) -> None: ... @@ -89,7 +89,7 @@ class StopList(Sequence): def __set__(self, obj, values) -> None: ... class GradientFill(Fill): - tagname: str + tagname: ClassVar[str] type: Set[_GradientFillType] fill_type: Alias degree: Float[Literal[False]] @@ -109,4 +109,4 @@ class GradientFill(Fill): stop=(), ) -> None: ... def __iter__(self): ... - def to_tree(self, tagname: Incomplete | None = None, namespace: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] + def to_tree(self, tagname: str | None = None, namespace: str | None = None, idx: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi index 88ad1e98e..b6dbd7859 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi @@ -1,60 +1,75 @@ from _typeshed import Incomplete from typing import ClassVar +from typing_extensions import Final, Literal, TypeAlias -from openpyxl.descriptors.base import Alias +from openpyxl.descriptors.base import Alias, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt +from openpyxl.descriptors.nested import ( + NestedBool, + NestedFloat, + NestedInteger, + NestedMinMax, + NestedNoneSet, + NestedString, + _HasTagAndGet, + _NestedNoneSetParam, +) from openpyxl.descriptors.serialisable import Serialisable +_FontU: TypeAlias = Literal["single", "double", "singleAccounting", "doubleAccounting"] +_FontVertAlign: TypeAlias = Literal["superscript", "subscript", "baseline"] +_FontScheme: TypeAlias = Literal["major", "minor"] + class Font(Serialisable): - UNDERLINE_DOUBLE: str - UNDERLINE_DOUBLE_ACCOUNTING: str - UNDERLINE_SINGLE: str - UNDERLINE_SINGLE_ACCOUNTING: str - name: Incomplete - charset: Incomplete - family: Incomplete - sz: Incomplete + UNDERLINE_DOUBLE: Final = "double" + UNDERLINE_DOUBLE_ACCOUNTING: Final = "doubleAccounting" + UNDERLINE_SINGLE: Final = "single" + UNDERLINE_SINGLE_ACCOUNTING: Final = "singleAccounting" + name: NestedString[Literal[True]] + charset: NestedInteger[Literal[True]] + family: NestedMinMax[float, Literal[True]] + sz: NestedFloat[Literal[True]] size: Alias - b: Incomplete + b: NestedBool[Literal[False]] bold: Alias - i: Incomplete + i: NestedBool[Literal[False]] italic: Alias - strike: Incomplete + strike: NestedBool[Literal[True]] strikethrough: Alias - outline: Incomplete - shadow: Incomplete - condense: Incomplete - extend: Incomplete - u: Incomplete + outline: NestedBool[Literal[True]] + shadow: NestedBool[Literal[True]] + condense: NestedBool[Literal[True]] + extend: NestedBool[Literal[True]] + u: NestedNoneSet[_FontU] underline: Alias - vertAlign: Incomplete + vertAlign: NestedNoneSet[_FontVertAlign] color: Incomplete - scheme: Incomplete - tagname: str + scheme: NestedNoneSet[_FontScheme] + tagname: ClassVar[str] __elements__: ClassVar[tuple[str, ...]] def __init__( self, - name: Incomplete | None = None, - sz: Incomplete | None = None, - b: Incomplete | None = None, - i: Incomplete | None = None, - charset: Incomplete | None = None, - u: Incomplete | None = None, - strike: Incomplete | None = None, + name: object = None, + sz: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + b: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + i: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool = None, + charset: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None = None, + u: _NestedNoneSetParam[_FontU] = None, + strike: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, color: Incomplete | None = None, - scheme: Incomplete | None = None, - family: Incomplete | None = None, - size: Incomplete | None = None, - bold: Incomplete | None = None, - italic: Incomplete | None = None, - strikethrough: Incomplete | None = None, - underline: Incomplete | None = None, - vertAlign: Incomplete | None = None, - outline: Incomplete | None = None, - shadow: Incomplete | None = None, - condense: Incomplete | None = None, - extend: Incomplete | None = None, + scheme: _NestedNoneSetParam[_FontScheme] = None, + family: _HasTagAndGet[_ConvertibleToFloat | None] | _ConvertibleToFloat | None = None, + size: _HasTagAndGet[_ConvertibleToFloat] | _ConvertibleToFloat | None = None, + bold: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool | None = None, + italic: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool | None = None, + strikethrough: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool | None = None, + underline: _NestedNoneSetParam[_FontU] = None, + vertAlign: _NestedNoneSetParam[_FontVertAlign] = None, + outline: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + shadow: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + condense: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, + extend: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, ) -> None: ... @classmethod def from_tree(cls, node): ... -DEFAULT_FONT: Incomplete +DEFAULT_FONT: Final[Font] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi index e029b84e0..aa858f0a7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/named_styles.pyi @@ -52,7 +52,7 @@ class NamedStyleList(list[Incomplete]): def append(self, style) -> None: ... class _NamedCellStyle(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] xfId: Integer[Literal[False]] builtinId: Integer[Literal[True]] @@ -73,7 +73,7 @@ class _NamedCellStyle(Serialisable): ) -> None: ... class _NamedCellStyleList(Serialisable): - tagname: str + tagname: ClassVar[str] # Overwritten by property below # count: Integer cellStyle: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi index a2ad642a1..d23d987c8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/numbers.pyi @@ -1,53 +1,55 @@ from _typeshed import Incomplete, Unused +from re import Pattern from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from openpyxl.descriptors import Strict, String from openpyxl.descriptors.base import Integer, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -BUILTIN_FORMATS: Incomplete -BUILTIN_FORMATS_MAX_SIZE: int -BUILTIN_FORMATS_REVERSE: Incomplete -FORMAT_GENERAL: Incomplete -FORMAT_TEXT: Incomplete -FORMAT_NUMBER: Incomplete -FORMAT_NUMBER_00: Incomplete -FORMAT_NUMBER_COMMA_SEPARATED1: Incomplete -FORMAT_NUMBER_COMMA_SEPARATED2: str -FORMAT_PERCENTAGE: Incomplete -FORMAT_PERCENTAGE_00: Incomplete -FORMAT_DATE_YYYYMMDD2: str -FORMAT_DATE_YYMMDD: str -FORMAT_DATE_DDMMYY: str -FORMAT_DATE_DMYSLASH: str -FORMAT_DATE_DMYMINUS: str -FORMAT_DATE_DMMINUS: str -FORMAT_DATE_MYMINUS: str -FORMAT_DATE_XLSX14: Incomplete -FORMAT_DATE_XLSX15: Incomplete -FORMAT_DATE_XLSX16: Incomplete -FORMAT_DATE_XLSX17: Incomplete -FORMAT_DATE_XLSX22: Incomplete -FORMAT_DATE_DATETIME: str -FORMAT_DATE_TIME1: Incomplete -FORMAT_DATE_TIME2: Incomplete -FORMAT_DATE_TIME3: Incomplete -FORMAT_DATE_TIME4: Incomplete -FORMAT_DATE_TIME5: Incomplete -FORMAT_DATE_TIME6: Incomplete -FORMAT_DATE_TIME7: str -FORMAT_DATE_TIME8: str -FORMAT_DATE_TIMEDELTA: str -FORMAT_DATE_YYMMDDSLASH: str -FORMAT_CURRENCY_USD_SIMPLE: str -FORMAT_CURRENCY_USD: str -FORMAT_CURRENCY_EUR_SIMPLE: str -COLORS: str -LITERAL_GROUP: str -LOCALE_GROUP: str -STRIP_RE: Incomplete -TIMEDELTA_RE: Incomplete +BUILTIN_FORMATS: Final[dict[int, str]] +BUILTIN_FORMATS_MAX_SIZE: Final = 164 +BUILTIN_FORMATS_REVERSE: Final[dict[str, int]] +FORMAT_GENERAL: Final = "General" +FORMAT_TEXT: Final = "@" +FORMAT_NUMBER: Final = "0" +FORMAT_NUMBER_00: Final = "0.00" +FORMAT_NUMBER_COMMA_SEPARATED1: Final = "#,##0.00" +FORMAT_NUMBER_COMMA_SEPARATED2: Final = "#,##0.00_-" +FORMAT_PERCENTAGE: Final = "0%" +FORMAT_PERCENTAGE_00: Final = "0.00%" +FORMAT_DATE_YYYYMMDD2: Final = "yyyy-mm-dd" +FORMAT_DATE_YYMMDD: Final = "yy-mm-dd" +FORMAT_DATE_DDMMYY: Final = "dd/mm/yy" +FORMAT_DATE_DMYSLASH: Final = "d/m/y" +FORMAT_DATE_DMYMINUS: Final = "d-m-y" +FORMAT_DATE_DMMINUS: Final = "d-m" +FORMAT_DATE_MYMINUS: Final = "m-y" +FORMAT_DATE_XLSX14: Final = "mm-dd-yy" +FORMAT_DATE_XLSX15: Final = "d-mmm-yy" +FORMAT_DATE_XLSX16: Final = "d-mmm" +FORMAT_DATE_XLSX17: Final = "mmm-yy" +FORMAT_DATE_XLSX22: Final = "m/d/yy h:mm" +FORMAT_DATE_DATETIME: Final = "yyyy-mm-dd h:mm:ss" +FORMAT_DATE_TIME1: Final = "h:mm AM/PM" +FORMAT_DATE_TIME2: Final = "h:mm:ss AM/PM" +FORMAT_DATE_TIME3: Final = "h:mm" +FORMAT_DATE_TIME4: Final = "h:mm:ss" +FORMAT_DATE_TIME5: Final = "mm:ss" +FORMAT_DATE_TIME6: Final = "h:mm:ss" +FORMAT_DATE_TIME7: Final = "i:s.S" +FORMAT_DATE_TIME8: Final = "h:mm:ss@" +FORMAT_DATE_TIMEDELTA: Final = "[hh]:mm:ss" +FORMAT_DATE_YYMMDDSLASH: Final = "yy/mm/dd@" +FORMAT_CURRENCY_USD_SIMPLE: Final = '"$"#,##0.00_-' +FORMAT_CURRENCY_USD: Final = "$#,##0_-" +FORMAT_CURRENCY_EUR_SIMPLE: Final = "[$EUR ]#,##0.00_-" + +COLORS: Final[str] +LITERAL_GROUP: Final = r'".*?"' +LOCALE_GROUP: Final = r"\[(?!hh?\]|mm?\]|ss?\])[^\]]*\]" +STRIP_RE: Final[Pattern[str]] +TIMEDELTA_RE: Final[Pattern[str]] def is_date_format(fmt): ... def is_timedelta_format(fmt): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/protection.pyi index 0f533a668..7295cbf23 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/protection.pyi @@ -1,9 +1,10 @@ from _typeshed import Incomplete +from typing import ClassVar from openpyxl.descriptors.serialisable import Serialisable class Protection(Serialisable): - tagname: str + tagname: ClassVar[str] locked: Incomplete hidden: Incomplete def __init__(self, locked: bool = True, hidden: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi index ae36e4813..1d7b2fe26 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/stylesheet.pyi @@ -12,7 +12,7 @@ from openpyxl.styles.numbers import NumberFormatList from openpyxl.styles.table import TableStyleList class Stylesheet(Serialisable): - tagname: str + tagname: ClassVar[str] numFmts: Typed[NumberFormatList, Literal[False]] fonts: Incomplete fills: Incomplete @@ -48,7 +48,7 @@ class Stylesheet(Serialisable): def from_tree(cls, node): ... @property def custom_formats(self): ... - def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None, namespace: Incomplete | None = None): ... + def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None, namespace: str | None = None): ... def apply_stylesheet(archive, wb): ... def write_stylesheet(wb): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi index 9e83304b5..e9853be0f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/table.pyi @@ -37,7 +37,7 @@ _TableStyleElementType: TypeAlias = Literal[ ] class TableStyleElement(Serialisable): - tagname: str + tagname: ClassVar[str] type: Set[_TableStyleElementType] size: Integer[Literal[True]] dxfId: Integer[Literal[True]] @@ -46,7 +46,7 @@ class TableStyleElement(Serialisable): ) -> None: ... class TableStyle(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] pivot: Bool[Literal[True]] table: Bool[Literal[True]] @@ -63,7 +63,7 @@ class TableStyle(Serialisable): ) -> None: ... class TableStyleList(Serialisable): - tagname: str + tagname: ClassVar[str] defaultTableStyle: String[Literal[True]] defaultPivotStyle: String[Literal[True]] tableStyle: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/cell.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/cell.pyi index bddf718b7..5b15e29f3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/cell.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/cell.pyi @@ -1,20 +1,19 @@ from _typeshed import Incomplete from collections.abc import Generator +from re import Pattern +from typing_extensions import Final -COORD_RE: Incomplete -COL_RANGE: str -ROW_RANGE: str -RANGE_EXPR: str -ABSOLUTE_RE: Incomplete -SHEET_TITLE: str -SHEETRANGE_RE: Incomplete +COORD_RE: Final[Pattern[str]] +COL_RANGE: Final = """[A-Z]{1,3}:[A-Z]{1,3}:""" +ROW_RANGE: Final = r"""\d+:\d+:""" +RANGE_EXPR: Final[str] +ABSOLUTE_RE: Final[Pattern[str]] +SHEET_TITLE: Final[str] +SHEETRANGE_RE: Final[Pattern[str]] def get_column_interval(start: str | int, end: str | int) -> list[str]: ... def coordinate_from_string(coord_string: str) -> tuple[str, int]: ... def absolute_coordinate(coord_string: str) -> str: ... - -col: Incomplete - def get_column_letter(idx: int) -> str: ... def column_index_from_string(str_col: str) -> int: ... def range_boundaries(range_string: str) -> tuple[int, int, int, int]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi index 70b029bde..de2c233d5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/datetime.pyi @@ -1,14 +1,16 @@ -from _typeshed import Incomplete +from datetime import datetime +from re import Pattern +from typing_extensions import Final -MAC_EPOCH: Incomplete -WINDOWS_EPOCH: Incomplete +MAC_EPOCH: Final[datetime] +WINDOWS_EPOCH: Final[datetime] # The following two constants are defined twice in the implementation. CALENDAR_WINDOWS_1900 = WINDOWS_EPOCH CALENDAR_MAC_1904 = MAC_EPOCH -SECS_PER_DAY: int -ISO_FORMAT: str -ISO_REGEX: Incomplete -ISO_DURATION: Incomplete +SECS_PER_DAY: Final = 86400 +ISO_FORMAT: Final = "%Y-%m-%dT%H:%M:%SZ" +ISO_REGEX: Final[Pattern[str]] +ISO_DURATION: Final[Pattern[str]] def to_ISO8601(dt): ... def from_ISO8601(formatted_string): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/formulas.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/formulas.pyi index 8e49ec3ad..6d16169b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/formulas.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/formulas.pyi @@ -1,3 +1,3 @@ -from _typeshed import Incomplete +from typing_extensions import Final -FORMULAE: Incomplete +FORMULAE: Final[frozenset[str]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/inference.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/inference.pyi index b8411c805..85e0441c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/inference.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/inference.pyi @@ -1,8 +1,9 @@ -from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final -PERCENT_REGEX: Incomplete -TIME_REGEX: Incomplete -NUMBER_REGEX: Incomplete +PERCENT_REGEX: Final[Pattern[str]] +TIME_REGEX: Final[Pattern[str]] +NUMBER_REGEX: Final[Pattern[str]] def cast_numeric(value): ... def cast_percentage(value): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/units.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/units.pyi index 8f9c3d1a5..6264bc826 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/units.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/units.pyi @@ -1,11 +1,11 @@ -from _typeshed import Incomplete +from typing_extensions import Final -DEFAULT_ROW_HEIGHT: float -BASE_COL_WIDTH: int -DEFAULT_COLUMN_WIDTH: Incomplete -DEFAULT_LEFT_MARGIN: float -DEFAULT_TOP_MARGIN: float -DEFAULT_HEADER: float +DEFAULT_ROW_HEIGHT: Final[float] +BASE_COL_WIDTH: Final = 8 +DEFAULT_COLUMN_WIDTH: Final = 13 +DEFAULT_LEFT_MARGIN: Final[float] +DEFAULT_TOP_MARGIN: Final[float] +DEFAULT_HEADER: Final[float] def inch_to_dxa(value): ... def dxa_to_inch(value): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi index b74da8ee3..fa39d2e42 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/child.pyi @@ -1,6 +1,8 @@ from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final -INVALID_TITLE_REGEX: Incomplete +INVALID_TITLE_REGEX: Final[Pattern[str]] def avoid_duplicate_name(names, value): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi index 9aa62c731..7d3b95867 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/defined_name.pyi @@ -2,17 +2,18 @@ from _typeshed import Incomplete from collections import defaultdict from collections.abc import Generator from re import Pattern -from typing_extensions import Literal +from typing import ClassVar +from typing_extensions import Final, Literal from openpyxl.descriptors import Sequence from openpyxl.descriptors.base import Alias, Bool, Integer, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -RESERVED: frozenset[str] -RESERVED_REGEX: Pattern[str] +RESERVED: Final[frozenset[str]] +RESERVED_REGEX: Final[Pattern[str]] class DefinedName(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] comment: String[Literal[True]] customMenu: String[Literal[True]] @@ -63,7 +64,7 @@ class DefinedNameDict(dict[str, DefinedName]): def add(self, value: DefinedName) -> None: ... class DefinedNameList(Serialisable): - tagname: str + tagname: ClassVar[str] definedName: Sequence def __init__(self, definedName=()) -> None: ... def by_sheet(self) -> defaultdict[int, DefinedNameDict]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi index 947ebe992..fcd66e68b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_link/external.pyi @@ -3,6 +3,7 @@ from typing import ClassVar from typing_extensions import Literal, TypeAlias from openpyxl.descriptors.base import Bool, Integer, NoneSet, String, Typed, _ConvertibleToBool, _ConvertibleToInt +from openpyxl.descriptors.nested import NestedText from openpyxl.descriptors.serialisable import Serialisable from openpyxl.packaging.relationship import Relationship @@ -12,13 +13,9 @@ class ExternalCell(Serialisable): r: String[Literal[False]] t: NoneSet[_ExternalCellType] vm: Integer[Literal[True]] - v: Incomplete + v: NestedText[str, Literal[True]] def __init__( - self, - r: str, - t: _ExternalCellType | Literal["none"] | None = None, - vm: _ConvertibleToInt | None = None, - v: Incomplete | None = None, + self, r: str, t: _ExternalCellType | Literal["none"] | None = None, vm: _ConvertibleToInt | None = None, v: object = None ) -> None: ... class ExternalRow(Serialisable): @@ -45,14 +42,14 @@ class ExternalSheetNames(Serialisable): def __init__(self, sheetName=()) -> None: ... class ExternalDefinedName(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] refersTo: String[Literal[True]] sheetId: Integer[Literal[True]] def __init__(self, name: str, refersTo: str | None = None, sheetId: _ConvertibleToInt | None = None) -> None: ... class ExternalBook(Serialisable): - tagname: str + tagname: ClassVar[str] sheetNames: Typed[ExternalSheetNames, Literal[True]] definedNames: Incomplete sheetDataSet: Typed[ExternalSheetDataSet, Literal[True]] @@ -67,7 +64,7 @@ class ExternalBook(Serialisable): ) -> None: ... class ExternalLink(Serialisable): - tagname: str + tagname: ClassVar[str] mime_type: str externalBook: Typed[ExternalBook, Literal[True]] file_link: Typed[Relationship, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_reference.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_reference.pyi index 507b7acd6..4b202d9ce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_reference.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/external_reference.pyi @@ -1,8 +1,9 @@ from _typeshed import Incomplete +from typing import ClassVar from openpyxl.descriptors.serialisable import Serialisable class ExternalReference(Serialisable): - tagname: str + tagname: ClassVar[str] id: Incomplete def __init__(self, id) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi index 442a4c4b7..61f19b6c6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/function_group.pyi @@ -6,12 +6,12 @@ from openpyxl.descriptors.base import Integer, String, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable class FunctionGroup(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] def __init__(self, name: str) -> None: ... class FunctionGroupList(Serialisable): - tagname: str + tagname: ClassVar[str] builtInGroupCount: Integer[Literal[True]] functionGroup: Incomplete __elements__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi index 0d2eebeba..d06b589be 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/properties.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal, TypeAlias from openpyxl.descriptors.base import ( @@ -19,7 +20,7 @@ _CalcPropertiesCalcMode: TypeAlias = Literal["manual", "auto", "autoNoTable"] _CalcPropertiesRefMode: TypeAlias = Literal["A1", "R1C1"] class WorkbookProperties(Serialisable): - tagname: str + tagname: ClassVar[str] date1904: Bool[Literal[True]] dateCompatibility: Bool[Literal[True]] showObjects: NoneSet[_WorkbookPropertiesShowObjects] @@ -63,7 +64,7 @@ class WorkbookProperties(Serialisable): ) -> None: ... class CalcProperties(Serialisable): - tagname: str + tagname: ClassVar[str] calcId: Integer[Literal[False]] calcMode: NoneSet[_CalcPropertiesCalcMode] fullCalcOnLoad: Bool[Literal[True]] @@ -95,7 +96,7 @@ class CalcProperties(Serialisable): ) -> None: ... class FileVersion(Serialisable): - tagname: str + tagname: ClassVar[str] appName: String[Literal[True]] lastEdited: String[Literal[True]] lowestEdited: String[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi index 3e5bdb636..1b4c732b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/protection.pyi @@ -6,7 +6,7 @@ from openpyxl.descriptors.base import Alias, Bool, Integer, String, _Convertible from openpyxl.descriptors.serialisable import Serialisable class WorkbookProtection(Serialisable): - tagname: str + tagname: ClassVar[str] workbook_password: Alias workbookPasswordCharacterSet: String[Literal[True]] revision_password: Alias @@ -60,7 +60,7 @@ class WorkbookProtection(Serialisable): DocumentSecurity = WorkbookProtection class FileSharing(Serialisable): - tagname: str + tagname: ClassVar[str] readOnlyRecommended: Bool[Literal[True]] userName: String[Literal[True]] reservationPassword: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi index 3c188b2c6..bc7a95d7e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/smart_tags.pyi @@ -8,20 +8,20 @@ from openpyxl.descriptors.serialisable import Serialisable _SmartTagPropertiesShow: TypeAlias = Literal["all", "noIndicator"] class SmartTag(Serialisable): - tagname: str + tagname: ClassVar[str] namespaceUri: String[Literal[True]] name: String[Literal[True]] url: String[Literal[True]] def __init__(self, namespaceUri: str | None = None, name: str | None = None, url: str | None = None) -> None: ... class SmartTagList(Serialisable): - tagname: str + tagname: ClassVar[str] smartTagType: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, smartTagType=()) -> None: ... class SmartTagProperties(Serialisable): - tagname: str + tagname: ClassVar[str] embed: Bool[Literal[True]] show: NoneSet[_SmartTagPropertiesShow] def __init__( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi index d9ecb97e6..96263658b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/views.pyi @@ -11,7 +11,7 @@ _CustomWorkbookViewShowComments: TypeAlias = Literal["commNone", "commIndicator" _CustomWorkbookViewShowObjects: TypeAlias = Literal["all", "placeholders"] class BookView(Serialisable): - tagname: str + tagname: ClassVar[str] visibility: NoneSet[_BookViewVilibility] minimized: Bool[Literal[True]] showHorizontalScroll: Bool[Literal[True]] @@ -46,7 +46,7 @@ class BookView(Serialisable): ) -> None: ... class CustomWorkbookView(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] guid: Incomplete autoUpdate: Bool[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi index 62bbf82c0..a5c184bc4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/web.pyi @@ -20,7 +20,7 @@ _WebPublishingTargetScreenSize: TypeAlias = Literal[ ] class WebPublishObject(Serialisable): - tagname: str + tagname: ClassVar[str] id: Integer[Literal[False]] divId: String[Literal[False]] sourceObject: String[Literal[True]] @@ -50,7 +50,7 @@ class WebPublishObject(Serialisable): ) -> None: ... class WebPublishObjectList(Serialisable): - tagname: str + tagname: ClassVar[str] # Overwritten by property below # count: Integer webPublishObject: Incomplete @@ -60,7 +60,7 @@ class WebPublishObjectList(Serialisable): def count(self): ... class WebPublishing(Serialisable): - tagname: str + tagname: ClassVar[str] css: Bool[Literal[True]] thicket: Bool[Literal[True]] longFileNames: Bool[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/workbook.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/workbook.pyi index 3fc2bf03e..c609d6b3e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/workbook.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/workbook/workbook.pyi @@ -2,6 +2,7 @@ from _typeshed import Incomplete, StrPath from collections.abc import Iterator from datetime import datetime from typing import IO +from typing_extensions import Final from openpyxl.chartsheet.chartsheet import Chartsheet from openpyxl.styles.named_styles import NamedStyle @@ -9,7 +10,7 @@ from openpyxl.workbook.child import _WorkbookChild from openpyxl.worksheet._write_only import WriteOnlyWorksheet from openpyxl.worksheet.worksheet import Worksheet -INTEGER_TYPES: Incomplete +INTEGER_TYPES: Final[tuple[type[int]]] class Workbook: template: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_read_only.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_read_only.pyi index e976e94ac..7814b5be2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_read_only.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_read_only.pyi @@ -1,5 +1,7 @@ from _typeshed import Incomplete +from openpyxl.worksheet.worksheet import Worksheet + def read_dimension(source): ... class ReadOnlyWorksheet: @@ -9,8 +11,8 @@ class ReadOnlyWorksheet: def values(self): ... @property def rows(self): ... - __getitem__: Incomplete - __iter__: Incomplete + __getitem__ = Worksheet.__getitem__ + __iter__ = Worksheet.__iter__ parent: Incomplete title: Incomplete sheet_state: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_reader.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_reader.pyi index fc1d7028f..840801abb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_reader.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_reader.pyi @@ -1,40 +1,41 @@ import datetime from _typeshed import Incomplete from collections.abc import Container, Generator +from typing_extensions import Final from .hyperlink import HyperlinkList from .pagebreak import ColBreak, RowBreak from .protection import SheetProtection from .table import TablePartList -CELL_TAG: Incomplete -VALUE_TAG: Incomplete -FORMULA_TAG: Incomplete -MERGE_TAG: Incomplete -INLINE_STRING: Incomplete -COL_TAG: Incomplete -ROW_TAG: Incomplete -CF_TAG: Incomplete -LEGACY_TAG: Incomplete -PROT_TAG: Incomplete -EXT_TAG: Incomplete -HYPERLINK_TAG: Incomplete -TABLE_TAG: Incomplete -PRINT_TAG: Incomplete -MARGINS_TAG: Incomplete -PAGE_TAG: Incomplete -HEADER_TAG: Incomplete -FILTER_TAG: Incomplete -VALIDATION_TAG: Incomplete -PROPERTIES_TAG: Incomplete -VIEWS_TAG: Incomplete -FORMAT_TAG: Incomplete -ROW_BREAK_TAG: Incomplete -COL_BREAK_TAG: Incomplete -SCENARIOS_TAG: Incomplete -DATA_TAG: Incomplete -DIMENSION_TAG: Incomplete -CUSTOM_VIEWS_TAG: Incomplete +CELL_TAG: Final[str] +VALUE_TAG: Final[str] +FORMULA_TAG: Final[str] +MERGE_TAG: Final[str] +INLINE_STRING: Final[str] +COL_TAG: Final[str] +ROW_TAG: Final[str] +CF_TAG: Final[str] +LEGACY_TAG: Final[str] +PROT_TAG: Final[str] +EXT_TAG: Final[str] +HYPERLINK_TAG: Final[str] +TABLE_TAG: Final[str] +PRINT_TAG: Final[str] +MARGINS_TAG: Final[str] +PAGE_TAG: Final[str] +HEADER_TAG: Final[str] +FILTER_TAG: Final[str] +VALIDATION_TAG: Final[str] +PROPERTIES_TAG: Final[str] +VIEWS_TAG: Final[str] +FORMAT_TAG: Final[str] +ROW_BREAK_TAG: Final[str] +COL_BREAK_TAG: Final[str] +SCENARIOS_TAG: Final[str] +DATA_TAG: Final[str] +DIMENSION_TAG: Final[str] +CUSTOM_VIEWS_TAG: Final[str] class WorkSheetParser: min_row: Incomplete | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi index d22d6bb92..a76d960d6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from collections.abc import Generator -ALL_TEMP_FILES: Incomplete +ALL_TEMP_FILES: list[str] def create_temporary_file(suffix: str = ""): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi index c244ba5e8..1c6e0f61d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi @@ -50,17 +50,17 @@ class CellRange(Serialisable): def __ne__(self, other): ... def __eq__(self, other): ... def issubset(self, other): ... - __le__: Incomplete + __le__ = issubset def __lt__(self, other): ... def issuperset(self, other): ... - __ge__: Incomplete + __ge__ = issuperset def __contains__(self, coord): ... def __gt__(self, other): ... def isdisjoint(self, other): ... def intersection(self, other): ... - __and__: Incomplete + __and__ = intersection def union(self, other): ... - __or__: Incomplete + __or__ = union def __iter__(self): ... def expand(self, right: int = 0, down: int = 0, left: int = 0, up: int = 0) -> None: ... def shrink(self, right: int = 0, bottom: int = 0, left: int = 0, top: int = 0) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi index e6e2e4c95..d6d3c26b9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_watch.pyi @@ -6,12 +6,12 @@ from openpyxl.descriptors.base import String from openpyxl.descriptors.serialisable import Serialisable class CellWatch(Serialisable): - tagname: str + tagname: ClassVar[str] r: String[Literal[True]] def __init__(self, r: str) -> None: ... class CellWatches(Serialisable): - tagname: str + tagname: ClassVar[str] cellWatch: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, cellWatch=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi index 33139070e..ad3ebff3d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/controls.pyi @@ -7,7 +7,7 @@ from openpyxl.descriptors.serialisable import Serialisable from openpyxl.worksheet.ole import ObjectAnchor class ControlProperty(Serialisable): - tagname: str + tagname: ClassVar[str] anchor: Typed[ObjectAnchor, Literal[False]] locked: Bool[Literal[True]] defaultSize: Bool[Literal[True]] @@ -46,7 +46,7 @@ class ControlProperty(Serialisable): ) -> None: ... class Control(Serialisable): - tagname: str + tagname: ClassVar[str] controlPr: Typed[ControlProperty, Literal[True]] shapeId: Integer[Literal[False]] name: String[Literal[True]] @@ -59,7 +59,7 @@ class Control(Serialisable): def __init__(self, controlPr: ControlProperty | None, shapeId: _ConvertibleToInt, name: str | None = None) -> None: ... class Controls(Serialisable): - tagname: str + tagname: ClassVar[str] control: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, control=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi index f09142011..e395773bc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/custom.pyi @@ -6,12 +6,12 @@ from openpyxl.descriptors.base import String from openpyxl.descriptors.serialisable import Serialisable class CustomProperty(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[False]] def __init__(self, name: str) -> None: ... class CustomProperties(Serialisable): - tagname: str + tagname: ClassVar[str] customPr: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, customPr=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi index fca6efb4f..157a3bad2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/datavalidation.pyi @@ -13,6 +13,7 @@ from openpyxl.descriptors.base import ( _ConvertibleToInt, _ConvertibleToMultiCellRange, ) +from openpyxl.descriptors.nested import NestedText from openpyxl.descriptors.serialisable import Serialisable from openpyxl.worksheet.cell_range import MultiCellRange @@ -39,7 +40,7 @@ def collapse_cell_addresses(cells, input_ranges=()): ... def expand_cell_ranges(range_string): ... class DataValidation(Serialisable): - tagname: str + tagname: ClassVar[str] sqref: Convertible[MultiCellRange, Literal[False]] cells: Alias ranges: Alias @@ -53,8 +54,8 @@ class DataValidation(Serialisable): error: String[Literal[True]] promptTitle: String[Literal[True]] prompt: String[Literal[True]] - formula1: Incomplete - formula2: Incomplete + formula1: NestedText[str, Literal[True]] + formula2: NestedText[str, Literal[True]] type: NoneSet[_DataValidationType] errorStyle: NoneSet[_DataValidationErrorStyle] imeMode: NoneSet[_DataValidationImeMode] @@ -63,8 +64,8 @@ class DataValidation(Serialisable): def __init__( self, type: _DataValidationType | Literal["none"] | None = None, - formula1: Incomplete | None = None, - formula2: Incomplete | None = None, + formula1: object = None, + formula2: object = None, showErrorMessage: _ConvertibleToBool | None = False, showInputMessage: _ConvertibleToBool | None = False, showDropDown: _ConvertibleToBool | None = False, @@ -83,7 +84,7 @@ class DataValidation(Serialisable): def __contains__(self, cell): ... class DataValidationList(Serialisable): - tagname: str + tagname: ClassVar[str] disablePrompts: Bool[Literal[True]] xWindow: Integer[Literal[True]] yWindow: Integer[Literal[True]] @@ -102,4 +103,4 @@ class DataValidationList(Serialisable): def count(self): ... def __len__(self) -> int: ... def append(self, dv) -> None: ... - def to_tree(self, tagname: Incomplete | None = None): ... # type: ignore[override] + def to_tree(self, tagname: str | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi index 3d714605b..290a1b926 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/dimensions.pyi @@ -120,7 +120,7 @@ class DimensionHolder(BoundDictionary[str, _DimT], Generic[_DimT]): def to_tree(self) -> Element | None: ... class SheetFormatProperties(Serialisable): - tagname: str + tagname: ClassVar[str] baseColWidth: Integer[Literal[True]] defaultColWidth: Float[Literal[True]] defaultRowHeight: Float[Literal[False]] @@ -144,7 +144,7 @@ class SheetFormatProperties(Serialisable): ) -> None: ... class SheetDimension(Serialisable): - tagname: str + tagname: ClassVar[str] ref: String[Literal[False]] def __init__(self, ref: str) -> None: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/drawing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/drawing.pyi index d95fbd256..39bd9a91f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/drawing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/drawing.pyi @@ -1,8 +1,9 @@ from _typeshed import Incomplete +from typing import ClassVar from openpyxl.descriptors.serialisable import Serialisable class Drawing(Serialisable): - tagname: str + tagname: ClassVar[str] id: Incomplete def __init__(self, id: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi index 7bc924830..e5f790588 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/errors.pyi @@ -6,18 +6,18 @@ from openpyxl.descriptors.base import Bool, String, Typed, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable class Extension(Serialisable): - tagname: str + tagname: ClassVar[str] uri: String[Literal[True]] def __init__(self, uri: str | None = None) -> None: ... class ExtensionList(Serialisable): - tagname: str + tagname: ClassVar[str] ext: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, ext=()) -> None: ... class IgnoredError(Serialisable): - tagname: str + tagname: ClassVar[str] sqref: Incomplete evalError: Bool[Literal[True]] twoDigitTextYear: Bool[Literal[True]] @@ -43,7 +43,7 @@ class IgnoredError(Serialisable): ) -> None: ... class IgnoredErrors(Serialisable): - tagname: str + tagname: ClassVar[str] ignoredError: Incomplete extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi index caff87dca..a53c503f1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi @@ -100,7 +100,7 @@ _DynamicFilterType: TypeAlias = Literal[ _DateGroupItemDateTimeGrouping: TypeAlias = Literal["year", "month", "day", "hour", "minute", "second"] class SortCondition(Serialisable): - tagname: str + tagname: ClassVar[str] descending: Bool[Literal[True]] sortBy: NoneSet[_SortConditionSortBy] ref: Incomplete @@ -120,7 +120,7 @@ class SortCondition(Serialisable): ) -> None: ... class SortState(Serialisable): - tagname: str + tagname: ClassVar[str] columnSort: Bool[Literal[True]] caseSensitive: Bool[Literal[True]] sortMethod: NoneSet[_SortStateSortMethod] @@ -140,19 +140,19 @@ class SortState(Serialisable): def __bool__(self) -> bool: ... class IconFilter(Serialisable): - tagname: str + tagname: ClassVar[str] iconSet: Set[_IconSet] iconId: Integer[Literal[True]] def __init__(self, iconSet: _IconSet, iconId: _ConvertibleToInt | None = None) -> None: ... class ColorFilter(Serialisable): - tagname: str + tagname: ClassVar[str] dxfId: Integer[Literal[True]] cellColor: Bool[Literal[True]] def __init__(self, dxfId: _ConvertibleToInt | None = None, cellColor: _ConvertibleToBool | None = None) -> None: ... class DynamicFilter(Serialisable): - tagname: str + tagname: ClassVar[str] type: Set[_DynamicFilterType] val: Float[Literal[True]] valIso: DateTime[Literal[True]] @@ -168,7 +168,7 @@ class DynamicFilter(Serialisable): ) -> None: ... class CustomFilter(Serialisable): - tagname: str + tagname: ClassVar[str] operator: NoneSet[_CustomFilterOperator] val: Incomplete def __init__( @@ -176,14 +176,14 @@ class CustomFilter(Serialisable): ) -> None: ... class CustomFilters(Serialisable): - tagname: str + tagname: ClassVar[str] _and: Bool[Literal[True]] # Not private. Avoids name clash customFilter: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, _and: _ConvertibleToBool | None = False, customFilter=()) -> None: ... class Top10(Serialisable): - tagname: str + tagname: ClassVar[str] top: Bool[Literal[True]] percent: Bool[Literal[True]] val: Float[Literal[False]] @@ -207,7 +207,7 @@ class Top10(Serialisable): ) -> None: ... class DateGroupItem(Serialisable): - tagname: str + tagname: ClassVar[str] year: Integer[Literal[False]] month: MinMax[float, Literal[True]] day: MinMax[float, Literal[True]] @@ -240,7 +240,7 @@ class DateGroupItem(Serialisable): ) -> None: ... class Filters(Serialisable): - tagname: str + tagname: ClassVar[str] blank: Bool[Literal[True]] calendarType: NoneSet[_FiltersCalendarType] filter: Incomplete @@ -255,7 +255,7 @@ class Filters(Serialisable): ) -> None: ... class FilterColumn(Serialisable): - tagname: str + tagname: ClassVar[str] colId: Integer[Literal[False]] col_id: Alias hiddenButton: Bool[Literal[True]] @@ -285,7 +285,7 @@ class FilterColumn(Serialisable): ) -> None: ... class AutoFilter(Serialisable): - tagname: str + tagname: ClassVar[str] ref: Incomplete filterColumn: Incomplete sortState: Typed[SortState, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi index 3128bf684..e8066e023 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi @@ -1,21 +1,21 @@ -from _typeshed import Incomplete +from re import Pattern from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from openpyxl.descriptors import Strict from openpyxl.descriptors.base import Alias, Bool, Integer, MatchPattern, String, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -FONT_PATTERN: str -COLOR_PATTERN: str -SIZE_REGEX: str -FORMAT_REGEX: Incomplete +FONT_PATTERN: Final = '&"(?P.+)"' +COLOR_PATTERN: Final = "&K(?P[A-F0-9]{6})" +SIZE_REGEX: Final = r"&(?P\d+\s?)" +FORMAT_REGEX: Final[Pattern[str]] class _HeaderFooterPart(Strict): text: String[Literal[True]] font: String[Literal[True]] size: Integer[Literal[True]] - RGB: str + RGB: ClassVar[str] color: MatchPattern[str, Literal[True]] def __init__( self, text: str | None = None, font: str | None = None, size: _ConvertibleToInt | None = None, color: str | None = None @@ -41,7 +41,7 @@ class HeaderFooterItem(Strict): def from_tree(cls, node): ... class HeaderFooter(Serialisable): - tagname: str + tagname: ClassVar[str] differentOddEven: Bool[Literal[True]] differentFirst: Bool[Literal[True]] scaleWithDoc: Bool[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi index aaccd9a6d..7281d4cd4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/hyperlink.pyi @@ -6,7 +6,7 @@ from openpyxl.descriptors.base import String from openpyxl.descriptors.serialisable import Serialisable class Hyperlink(Serialisable): - tagname: str + tagname: ClassVar[str] ref: String[Literal[False]] location: String[Literal[True]] tooltip: String[Literal[True]] @@ -25,7 +25,7 @@ class Hyperlink(Serialisable): ) -> None: ... class HyperlinkList(Serialisable): - tagname: str + tagname: ClassVar[str] hyperlink: Incomplete def __init__(self, hyperlink=()) -> None: ... def __bool__(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi index 46f9f498e..7df3faaa5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/merge.pyi @@ -6,7 +6,7 @@ from openpyxl.descriptors.serialisable import Serialisable from .cell_range import CellRange class MergeCell(CellRange): - tagname: str + tagname: ClassVar[str] @property def ref(self): ... __attrs__: ClassVar[tuple[str, ...]] @@ -14,7 +14,7 @@ class MergeCell(CellRange): def __copy__(self): ... class MergeCells(Serialisable): - tagname: str + tagname: ClassVar[str] # Overwritten by property below # count: Integer mergeCell: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi index 21d3bbf38..49c845666 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/ole.pyi @@ -10,7 +10,7 @@ _OleObjectDvAspect: TypeAlias = Literal["DVASPECT_CONTENT", "DVASPECT_ICON"] _OleObjectOleUpdate: TypeAlias = Literal["OLEUPDATE_ALWAYS", "OLEUPDATE_ONCALL"] class ObjectAnchor(Serialisable): - tagname: str + tagname: ClassVar[str] _from: Typed[AnchorMarker, Literal[False]] # Not private. Avoids name clash to: Typed[AnchorMarker, Literal[False]] moveWithCells: Bool[Literal[True]] @@ -26,7 +26,7 @@ class ObjectAnchor(Serialisable): ) -> None: ... class ObjectPr(Serialisable): - tagname: str + tagname: ClassVar[str] anchor: Typed[ObjectAnchor, Literal[False]] locked: Bool[Literal[True]] defaultSize: Bool[Literal[True]] @@ -75,7 +75,7 @@ class ObjectPr(Serialisable): ) -> None: ... class OleObject(Serialisable): - tagname: str + tagname: ClassVar[str] objectPr: Typed[ObjectPr, Literal[True]] progId: String[Literal[True]] dvAspect: Set[_OleObjectDvAspect] @@ -109,7 +109,7 @@ class OleObject(Serialisable): ) -> None: ... class OleObjects(Serialisable): - tagname: str + tagname: ClassVar[str] oleObject: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, oleObject=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi index 913c47be7..06a96e133 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/page.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal, TypeAlias from openpyxl.descriptors.base import Bool, Float, Integer, NoneSet, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt @@ -10,7 +11,7 @@ _PrintPageSetupCellComments: TypeAlias = Literal["asDisplayed", "atEnd"] _PrintPageSetupErrors: TypeAlias = Literal["displayed", "blank", "dash", "NA"] class PrintPageSetup(Serialisable): - tagname: str + tagname: ClassVar[str] orientation: NoneSet[_PrintPageSetupOrientation] paperSize: Integer[Literal[True]] scale: Integer[Literal[True]] @@ -68,7 +69,7 @@ class PrintPageSetup(Serialisable): def from_tree(cls, node): ... class PrintOptions(Serialisable): - tagname: str + tagname: ClassVar[str] horizontalCentered: Bool[Literal[True]] verticalCentered: Bool[Literal[True]] headings: Bool[Literal[True]] @@ -85,7 +86,7 @@ class PrintOptions(Serialisable): def __bool__(self) -> bool: ... class PageMargins(Serialisable): - tagname: str + tagname: ClassVar[str] left: Float[Literal[False]] right: Float[Literal[False]] top: Float[Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi index 32f2d2b7e..d995cabe5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/pagebreak.pyi @@ -6,7 +6,7 @@ from openpyxl.descriptors.base import Bool, Integer, _ConvertibleToBool, _Conver from openpyxl.descriptors.serialisable import Serialisable class Break(Serialisable): - tagname: str + tagname: ClassVar[str] id: Integer[Literal[True]] min: Integer[Literal[True]] max: Integer[Literal[True]] @@ -22,7 +22,7 @@ class Break(Serialisable): ) -> None: ... class RowBreak(Serialisable): - tagname: str + tagname: ClassVar[str] # Overwritten by properties below # count: Integer # manualBreakCount: Integer @@ -41,7 +41,7 @@ class RowBreak(Serialisable): PageBreak = RowBreak class ColBreak(RowBreak): - tagname: str + tagname: ClassVar[str] @property def count(self): ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/picture.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/picture.pyi index 71b3f1340..071947859 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/picture.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/picture.pyi @@ -1,4 +1,6 @@ +from typing import ClassVar + from openpyxl.descriptors.serialisable import Serialisable class SheetBackgroundPicture(Serialisable): - tagname: str + tagname: ClassVar[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi index 37f39cdfa..91aeee436 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete, Unused from re import Pattern from typing import overload -from typing_extensions import Literal, Self +from typing_extensions import Final, Literal, Self from openpyxl.descriptors import Integer, Strict, String from openpyxl.descriptors.base import Typed, _ConvertibleToInt @@ -9,12 +9,12 @@ from openpyxl.utils.cell import SHEETRANGE_RE as SHEETRANGE_RE from .cell_range import MultiCellRange -COL_RANGE: str -COL_RANGE_RE: Pattern[str] -ROW_RANGE: str -ROW_RANGE_RE: Pattern[str] -TITLES_REGEX: Pattern[str] -PRINT_AREA_RE: Pattern[str] +COL_RANGE: Final[str] +COL_RANGE_RE: Final[Pattern[str]] +ROW_RANGE: Final[str] +ROW_RANGE_RE: Final[Pattern[str]] +TITLES_REGEX: Final[Pattern[str]] +PRINT_AREA_RE: Final[Pattern[str]] class ColRange(Strict): min_col: String[Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi index 0c910c98f..dcc4fdef2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/properties.pyi @@ -6,7 +6,7 @@ from openpyxl.descriptors.base import Bool, String, Typed, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable class Outline(Serialisable): - tagname: str + tagname: ClassVar[str] applyStyles: Bool[Literal[True]] summaryBelow: Bool[Literal[True]] summaryRight: Bool[Literal[True]] @@ -20,13 +20,13 @@ class Outline(Serialisable): ) -> None: ... class PageSetupProperties(Serialisable): - tagname: str + tagname: ClassVar[str] autoPageBreaks: Bool[Literal[True]] fitToPage: Bool[Literal[True]] def __init__(self, autoPageBreaks: _ConvertibleToBool | None = None, fitToPage: _ConvertibleToBool | None = None) -> None: ... class WorksheetProperties(Serialisable): - tagname: str + tagname: ClassVar[str] codeName: String[Literal[True]] enableFormatConditionsCalculation: Bool[Literal[True]] filterMode: Bool[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi index fa1e29004..90ddad654 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/protection.pyi @@ -13,7 +13,7 @@ class _Protected: def password(self, value) -> None: ... class SheetProtection(Serialisable, _Protected): - tagname: str + tagname: ClassVar[str] sheet: Bool[Literal[False]] enabled: Alias objects: Bool[Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi index 67ed74af7..cb5c04e46 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/scenario.pyi @@ -15,7 +15,7 @@ from openpyxl.descriptors.serialisable import Serialisable from openpyxl.worksheet.cell_range import MultiCellRange class InputCells(Serialisable): - tagname: str + tagname: ClassVar[str] r: String[Literal[False]] deleted: Bool[Literal[True]] undone: Bool[Literal[True]] @@ -43,7 +43,7 @@ class InputCells(Serialisable): ) -> None: ... class Scenario(Serialisable): - tagname: str + tagname: ClassVar[str] inputCells: Incomplete name: String[Literal[False]] locked: Bool[Literal[True]] @@ -79,7 +79,7 @@ class Scenario(Serialisable): def count(self): ... class ScenarioList(Serialisable): - tagname: str + tagname: ClassVar[str] scenario: Incomplete current: Integer[Literal[True]] show: Integer[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi index f99140e11..14c20d35a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/smart_tag.pyi @@ -6,13 +6,13 @@ from openpyxl.descriptors.base import Bool, Integer, String, _ConvertibleToBool, from openpyxl.descriptors.serialisable import Serialisable class CellSmartTagPr(Serialisable): - tagname: str + tagname: ClassVar[str] key: String[Literal[False]] val: String[Literal[False]] def __init__(self, key: str, val: str) -> None: ... class CellSmartTag(Serialisable): - tagname: str + tagname: ClassVar[str] cellSmartTagPr: Incomplete type: Integer[Literal[False]] deleted: Bool[Literal[True]] @@ -37,14 +37,14 @@ class CellSmartTag(Serialisable): ) -> None: ... class CellSmartTags(Serialisable): - tagname: str + tagname: ClassVar[str] cellSmartTag: Incomplete r: String[Literal[False]] __elements__: ClassVar[tuple[str, ...]] def __init__(self, cellSmartTag, r: str) -> None: ... class SmartTags(Serialisable): - tagname: str + tagname: ClassVar[str] cellSmartTags: Incomplete __elements__: ClassVar[tuple[str, ...]] def __init__(self, cellSmartTags=()) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi index ac50fe04d..8b48b4a02 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/table.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete, Unused from typing import ClassVar, overload -from typing_extensions import Literal, TypeAlias +from typing_extensions import Final, Literal, TypeAlias from openpyxl.descriptors import Strict, String from openpyxl.descriptors.base import Alias, Bool, Integer, NoneSet, Typed, _ConvertibleToBool, _ConvertibleToInt @@ -13,11 +13,11 @@ _TableColumnTotalsRowFunction: TypeAlias = Literal[ ] _TableTableType: TypeAlias = Literal["worksheet", "xml", "queryTable"] -TABLESTYLES: Incomplete -PIVOTSTYLES: Incomplete +TABLESTYLES: Final[tuple[str, ...]] +PIVOTSTYLES: Final[tuple[str, ...]] class TableStyleInfo(Serialisable): - tagname: str + tagname: ClassVar[str] name: String[Literal[True]] showFirstColumn: Bool[Literal[True]] showLastColumn: Bool[Literal[True]] @@ -33,7 +33,7 @@ class TableStyleInfo(Serialisable): ) -> None: ... class XMLColumnProps(Serialisable): - tagname: str + tagname: ClassVar[str] mapId: Integer[Literal[False]] xpath: String[Literal[False]] denormalized: Bool[Literal[True]] @@ -61,14 +61,14 @@ class XMLColumnProps(Serialisable): ) -> None: ... class TableFormula(Serialisable): - tagname: str + tagname: ClassVar[str] array: Bool[Literal[True]] attr_text: Incomplete text: Alias def __init__(self, array: _ConvertibleToBool | None = None, attr_text: Incomplete | None = None) -> None: ... class TableColumn(Serialisable): - tagname: str + tagname: ClassVar[str] id: Integer[Literal[False]] uniqueName: String[Literal[True]] name: String[Literal[False]] @@ -136,7 +136,7 @@ class TableNameDescriptor(String[Incomplete]): class Table(Serialisable): mime_type: str - tagname: str + tagname: ClassVar[str] id: Integer[Literal[False]] name: String[Literal[True]] displayName: Incomplete @@ -202,7 +202,7 @@ class Table(Serialisable): def column_names(self): ... class TablePartList(Serialisable): - tagname: str + tagname: ClassVar[str] # Overwritten by property below # count: Integer tablePart: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi index 51c208c36..626415f3c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/views.pyi @@ -50,7 +50,7 @@ class Selection(Serialisable): ) -> None: ... class SheetView(Serialisable): - tagname: str + tagname: ClassVar[str] windowProtection: Bool[Literal[True]] showFormulas: Bool[Literal[True]] showGridLines: Bool[Literal[True]] @@ -100,7 +100,7 @@ class SheetView(Serialisable): ) -> None: ... class SheetViewList(Serialisable): - tagname: str + tagname: ClassVar[str] sheetView: Incomplete extLst: Typed[ExtensionList, Literal[True]] __elements__: ClassVar[tuple[str, ...]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi index 97e75b9ec..d59e9c424 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi @@ -23,25 +23,28 @@ from openpyxl.worksheet.views import SheetView, SheetViewList class Worksheet(_WorkbookChild): mime_type: str - BREAK_NONE: int - BREAK_ROW: int - BREAK_COLUMN: int + BREAK_NONE: Final = 0 + BREAK_ROW: Final = 1 + BREAK_COLUMN: Final = 2 + SHEETSTATE_VISIBLE: Final = "visible" SHEETSTATE_HIDDEN: Final = "hidden" SHEETSTATE_VERYHIDDEN: Final = "veryHidden" - PAPERSIZE_LETTER: str - PAPERSIZE_LETTER_SMALL: str - PAPERSIZE_TABLOID: str - PAPERSIZE_LEDGER: str - PAPERSIZE_LEGAL: str - PAPERSIZE_STATEMENT: str - PAPERSIZE_EXECUTIVE: str - PAPERSIZE_A3: str - PAPERSIZE_A4: str - PAPERSIZE_A4_SMALL: str - PAPERSIZE_A5: str - ORIENTATION_PORTRAIT: str - ORIENTATION_LANDSCAPE: str + + PAPERSIZE_LETTER: Final = "1" + PAPERSIZE_LETTER_SMALL: Final = "2" + PAPERSIZE_TABLOID: Final = "3" + PAPERSIZE_LEDGER: Final = "4" + PAPERSIZE_LEGAL: Final = "5" + PAPERSIZE_STATEMENT: Final = "6" + PAPERSIZE_EXECUTIVE: Final = "7" + PAPERSIZE_A3: Final = "8" + PAPERSIZE_A4: Final = "9" + PAPERSIZE_A4_SMALL: Final = "10" + PAPERSIZE_A5: Final = "11" + + ORIENTATION_PORTRAIT: Final = "portrait" + ORIENTATION_LANDSCAPE: Final = "landscape" row_dimensions: DimensionHolder[RowDimension] column_dimensions: DimensionHolder[ColumnDimension] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/__init__.pyi index 9c4670087..517f09dd4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/__init__.pyi @@ -1,11 +1,11 @@ -from _typeshed import Incomplete +from typing_extensions import Final def lxml_available(): ... def lxml_env_set(): ... -LXML: Incomplete +LXML: Final[bool] def defusedxml_available(): ... def defusedxml_env_set(): ... -DEFUSEDXML: Incomplete +DEFUSEDXML: Final[bool] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/constants.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/constants.pyi index 63217f413..0903b9c24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/constants.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/constants.pyi @@ -1,74 +1,91 @@ -from _typeshed import Incomplete +from typing_extensions import Final -MIN_ROW: int -MIN_COLUMN: int -MAX_COLUMN: int -MAX_ROW: int -PACKAGE_PROPS: str -PACKAGE_XL: str -PACKAGE_RELS: str -PACKAGE_THEME: Incomplete -PACKAGE_WORKSHEETS: Incomplete -PACKAGE_CHARTSHEETS: Incomplete -PACKAGE_DRAWINGS: Incomplete -PACKAGE_CHARTS: Incomplete -PACKAGE_IMAGES: Incomplete -PACKAGE_WORKSHEET_RELS: Incomplete -PACKAGE_CHARTSHEETS_RELS: Incomplete -PACKAGE_PIVOT_TABLE: Incomplete -PACKAGE_PIVOT_CACHE: Incomplete -ARC_CONTENT_TYPES: str -ARC_ROOT_RELS: Incomplete -ARC_WORKBOOK_RELS: Incomplete -ARC_CORE: Incomplete -ARC_APP: Incomplete -ARC_WORKBOOK: Incomplete -ARC_STYLE: Incomplete -ARC_THEME: Incomplete -ARC_SHARED_STRINGS: Incomplete -ARC_CUSTOM_UI: str -XML_NS: str -DCORE_NS: str -DCTERMS_NS: str -DCTERMS_PREFIX: str -DOC_NS: str -REL_NS: Incomplete -COMMENTS_NS: Incomplete -IMAGE_NS: Incomplete -VML_NS: Incomplete -VTYPES_NS: Incomplete -XPROPS_NS: Incomplete -EXTERNAL_LINK_NS: Incomplete -PKG_NS: str -PKG_REL_NS: Incomplete -COREPROPS_NS: Incomplete -CONTYPES_NS: Incomplete -XSI_NS: str -SHEET_MAIN_NS: str -CHART_NS: str -DRAWING_NS: str -SHEET_DRAWING_NS: str -CHART_DRAWING_NS: str -CUSTOMUI_NS: str -NAMESPACES: Incomplete -WORKBOOK_MACRO: str -WORKBOOK: str -SPREADSHEET: str -SHARED_STRINGS: Incomplete -EXTERNAL_LINK: Incomplete -WORKSHEET_TYPE: Incomplete -COMMENTS_TYPE: Incomplete -STYLES_TYPE: Incomplete -CHARTSHEET_TYPE: Incomplete -DRAWING_TYPE: str -CHART_TYPE: str -CHARTSHAPE_TYPE: str -THEME_TYPE: str -XLTM: Incomplete -XLSM: Incomplete -XLTX: Incomplete -XLSX: Incomplete -EXT_TYPES: Incomplete -CTRL: str -ACTIVEX: str -VBA: str +MIN_ROW: Final = 0 +MIN_COLUMN: Final = 0 +MAX_COLUMN: Final = 16384 +MAX_ROW: Final = 1048576 + +PACKAGE_PROPS: Final = "docProps" +PACKAGE_XL: Final = "xl" +PACKAGE_RELS: Final = "_rels" +PACKAGE_THEME: Final = "xl/theme" +PACKAGE_WORKSHEETS: Final = "xl/worksheets" +PACKAGE_CHARTSHEETS: Final = "xl/chartsheets" +PACKAGE_DRAWINGS: Final = "xl/drawings" +PACKAGE_CHARTS: Final = "xl/charts" +PACKAGE_IMAGES: Final = "xl/media" +PACKAGE_WORKSHEET_RELS: Final = "xl/worksheets/_rels" +PACKAGE_CHARTSHEETS_RELS: Final = "xl/chartsheets/_rels" +PACKAGE_PIVOT_TABLE: Final = "xl/pivotTables" +PACKAGE_PIVOT_CACHE: Final = "xl/pivotCache" + +ARC_CONTENT_TYPES: Final = "[Content_Types].xml" +ARC_ROOT_RELS: Final = "_rels/.rels" +ARC_WORKBOOK_RELS: Final = "xl/_rels/workbook.xml.rels" +ARC_CORE: Final = "docProps/core.xml" +ARC_APP: Final = "docProps/app.xml" +ARC_CUSTOM: Final = "docProps/custom.xml" +ARC_WORKBOOK: Final = "xl/workbook.xml" +ARC_STYLE: Final = "xl/styles.xml" +ARC_THEME: Final = "xl/theme/theme1.xml" +ARC_SHARED_STRINGS: Final = "xl/sharedStrings.xml" +ARC_CUSTOM_UI: Final = "customUI/customUI.xml" + +DCORE_NS: Final = "http://purl.org/dc/elements/1.1/" +DCTERMS_NS: Final = "http://purl.org/dc/terms/" +DCTERMS_PREFIX: Final = "dcterms" + +DOC_NS: Final[str] +REL_NS: Final[str] +COMMENTS_NS: Final[str] +IMAGE_NS: Final[str] +VML_NS: Final[str] +VTYPES_NS: Final[str] +XPROPS_NS: Final[str] +CUSTPROPS_NS: Final[str] +EXTERNAL_LINK_NS: Final[str] + +CPROPS_FMTID: Final = "{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" + +PKG_NS: Final = "http://schemas.openxmlformats.org/package/2006/" +PKG_REL_NS: Final[str] +COREPROPS_NS: Final[str] +CONTYPES_NS: Final[str] + +XSI_NS: Final = "http://www.w3.org/2001/XMLSchema-instance" +XML_NS: Final = "http://www.w3.org/XML/1998/namespace" +SHEET_MAIN_NS: Final[str] + +CHART_NS: Final[str] +DRAWING_NS: Final[str] +SHEET_DRAWING_NS: Final[str] +CHART_DRAWING_NS: Final[str] + +CUSTOMUI_NS: Final[str] + +NAMESPACES: Final[dict[str, str]] + +WORKBOOK_MACRO: Final = "application/vnd.ms-excel.%s.macroEnabled.main+xml" +WORKBOOK: Final[str] +SPREADSHEET: Final[str] +SHARED_STRINGS: Final[str] +EXTERNAL_LINK: Final[str] +WORKSHEET_TYPE: Final[str] +COMMENTS_TYPE: Final[str] +STYLES_TYPE: Final[str] +CHARTSHEET_TYPE: Final[str] +DRAWING_TYPE: Final[str] +CHART_TYPE: Final[str] +CHARTSHAPE_TYPE: Final[str] +THEME_TYPE: Final[str] +CPROPS_TYPE: Final[str] +XLTM: Final[str] +XLSM: Final[str] +XLTX: Final[str] +XLSX: Final[str] + +EXT_TYPES: Final[dict[str, str]] + +CTRL: Final = "application/vnd.ms-excel.controlproperties+xml" +ACTIVEX: Final = "application/vnd.ms-office.activeX+xml" +VBA: Final = "application/vnd.ms-office.vbaProject" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi index c9438a9e7..6abacd8af 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi @@ -1,7 +1,8 @@ -from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final from xml.etree.ElementTree import Element as Element # possibly also imported from lxml -NS_REGEX: Incomplete +NS_REGEX: Final[Pattern[str]] def localname(node): ... def whitespace(node) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi index ba4d3b510..f989270ad 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/__init__.pyi @@ -133,6 +133,13 @@ else: def sensors_battery(): ... +if sys.platform == "linux": + from ._pslinux import pio +elif sys.platform == "win32": + from ._pswindows import pio +else: + from ._common import pio + AF_LINK: int version_info: tuple[int, int, int] __version__: str @@ -184,7 +191,7 @@ class Process: def terminal(self) -> str: ... def num_fds(self) -> int: ... if sys.platform != "darwin": - def io_counters(self): ... + def io_counters(self) -> pio: ... def ionice(self, ioclass: int | None = None, value: int | None = None) -> pionice: ... def cpu_affinity(self, cpus: list[int] | None = None) -> list[int] | None: ... def memory_maps(self, grouped: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psbsd.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psbsd.pyi index ef3a03851..fe5a54139 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psbsd.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_psbsd.pyi @@ -12,6 +12,7 @@ from psutil._common import ( conn_tmap as conn_tmap, conn_to_ntuple as conn_to_ntuple, memoize as memoize, + pio, usage_percent as usage_percent, ) @@ -140,7 +141,7 @@ class Process: def nice_get(self): ... def nice_set(self, value): ... def status(self): ... - def io_counters(self): ... + def io_counters(self) -> pio: ... def cwd(self): ... class nt_mmap_grouped(NamedTuple): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pslinux.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pslinux.pyi index b6502d083..dacd14206 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pslinux.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pslinux.pyi @@ -199,7 +199,7 @@ class Process: def cmdline(self): ... def environ(self): ... def terminal(self): ... - def io_counters(self): ... + def io_counters(self) -> pio: ... def cpu_times(self): ... def cpu_num(self): ... def wait(self, timeout: Incomplete | None = ...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pswindows.pyi b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pswindows.pyi index 7fc653304..da4b7f78f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pswindows.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/psutil/_pswindows.pyi @@ -193,7 +193,7 @@ class Process: def nice_set(self, value): ... def ionice_get(self): ... def ionice_set(self, ioclass, value) -> None: ... - def io_counters(self): ... + def io_counters(self) -> pio: ... def status(self): ... def cpu_affinity_get(self): ... def cpu_affinity_set(self, value): ... From 9cbe8c0841f890865c779960bd53cc39f27775b8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 20 Jun 2023 09:17:40 -0700 Subject: [PATCH 333/525] Fixed a bug that caused an incorrect false positive error for an `assert_type` call involving a `Callable[[], X]` type. Pyright was generating a signature with a positional-only separator in this case. This addresses https://github.com/python/typeshed/pull/10325#issuecomment-1598858415. (#5345) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bb94f9069..89c9c3167 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13676,11 +13676,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); }); - FunctionType.addParameter(functionType, { - category: ParameterCategory.Simple, - isNameSynthesized: false, - type: UnknownType.create(), - }); + if (typeList.length > 0) { + // Add a positional-only separator to the end of the parameter list. + FunctionType.addParameter(functionType, { + category: ParameterCategory.Simple, + isNameSynthesized: false, + type: UnknownType.create(), + }); + } } else if (isEllipsisType(typeArgs[0].type)) { FunctionType.addDefaultParameters(functionType); functionType.details.flags |= FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck; From 63f5658ae7d10de757399ff36bf5bc10048b0522 Mon Sep 17 00:00:00 2001 From: Erik De Bonte Date: Tue, 20 Jun 2023 10:50:18 -0700 Subject: [PATCH 334/525] Support PEP 712's new attribute assignment conversion (#5343) --- .../src/analyzer/dataClasses.ts | 97 ++++++++++++++++++- .../src/tests/samples/dataclassConverter2.py | 38 ++++++++ .../src/tests/typeEvaluator4.test.ts | 6 ++ 3 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/dataclassConverter2.py diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index a2ec3f026..0ed2710d6 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -25,10 +25,11 @@ import { TypeAnnotationNode, } from '../parser/parseNodes'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; +import { getFileInfo } from './analyzerNodeInfo'; import { createFunctionFromConstructor } from './constructors'; import { DeclarationType } from './declaration'; import { updateNamedTupleBaseClass } from './namedTuples'; -import { getEnclosingClassOrFunction, getScopeIdForNode } from './parseTreeUtils'; +import { getClassFullName, getEnclosingClassOrFunction, getScopeIdForNode, getTypeSourceId } from './parseTreeUtils'; import { evaluateStaticBoolExpression } from './staticExpressions'; import { Symbol, SymbolFlags } from './symbol'; import { isPrivateName } from './symbolNameUtils'; @@ -513,7 +514,19 @@ export function synthesizeDataClassMethods( effectiveType = transformDescriptorType(evaluator, effectiveType); if (entry.converter) { + const fieldType = effectiveType; effectiveType = getConverterInputType(evaluator, entry.converter, effectiveType, entry.name); + symbolTable.set( + entry.name, + getDescriptorForConverterField( + evaluator, + node, + entry.converter, + entry.name, + fieldType, + effectiveType + ) + ); } const effectiveName = entry.alias || entry.name; @@ -799,6 +812,88 @@ function getConverterAsFunction( return undefined; } +// Synthesizes an asymmetric descriptor class to be used in place of the +// annotated type of a field with a converter. The descriptor's __get__ method +// returns the declared type of the field and its __set__ method accepts the +// converter's input type. Returns the symbol for an instance of this descriptor +// type. +function getDescriptorForConverterField( + evaluator: TypeEvaluator, + dataclassNode: ParseNode, + converterNode: ParseNode, + fieldName: string, + getType: Type, + setType: Type +): Symbol { + const fileInfo = getFileInfo(dataclassNode); + const typeMetaclass = evaluator.getBuiltInType(dataclassNode, 'type'); + const descriptorName = `__converterDescriptor_${fieldName}`; + + const descriptorClass = ClassType.createInstantiable( + descriptorName, + getClassFullName(converterNode, fileInfo.moduleName, descriptorName), + fileInfo.moduleName, + fileInfo.filePath, + ClassTypeFlags.None, + getTypeSourceId(converterNode), + /* declaredMetaclass */ undefined, + isInstantiableClass(typeMetaclass) ? typeMetaclass : UnknownType.create() + ); + descriptorClass.details.baseClasses.push(evaluator.getBuiltInType(dataclassNode, 'object')); + computeMroLinearization(descriptorClass); + + const fields = descriptorClass.details.fields; + const selfType = synthesizeTypeVarForSelfCls(descriptorClass, /* isClsParam */ false); + + const setFunction = FunctionType.createSynthesizedInstance('__set__'); + FunctionType.addParameter(setFunction, { + category: ParameterCategory.Simple, + name: 'self', + type: selfType, + hasDeclaredType: true, + }); + FunctionType.addParameter(setFunction, { + category: ParameterCategory.Simple, + name: 'obj', + type: AnyType.create(), + hasDeclaredType: true, + }); + FunctionType.addParameter(setFunction, { + category: ParameterCategory.Simple, + name: 'value', + type: setType, + hasDeclaredType: true, + }); + setFunction.details.declaredReturnType = NoneType.createInstance(); + const setSymbol = Symbol.createWithType(SymbolFlags.ClassMember, setFunction); + fields.set('__set__', setSymbol); + + const getFunction = FunctionType.createSynthesizedInstance('__get__'); + FunctionType.addParameter(getFunction, { + category: ParameterCategory.Simple, + name: 'self', + type: selfType, + hasDeclaredType: true, + }); + FunctionType.addParameter(getFunction, { + category: ParameterCategory.Simple, + name: 'obj', + type: AnyType.create(), + hasDeclaredType: true, + }); + FunctionType.addParameter(getFunction, { + category: ParameterCategory.Simple, + name: 'objtype', + type: AnyType.create(), + hasDeclaredType: true, + }); + getFunction.details.declaredReturnType = getType; + const getSymbol = Symbol.createWithType(SymbolFlags.ClassMember, getFunction); + fields.set('__get__', getSymbol); + + return Symbol.createWithType(SymbolFlags.ClassMember, ClassType.cloneAsInstance(descriptorClass)); +} + // If the specified type is a descriptor — in particular, if it implements a // __set__ method, this method transforms the type into the input parameter // for the set method. diff --git a/packages/pyright-internal/src/tests/samples/dataclassConverter2.py b/packages/pyright-internal/src/tests/samples/dataclassConverter2.py new file mode 100644 index 000000000..83c68b673 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/dataclassConverter2.py @@ -0,0 +1,38 @@ +# This sample tests assignment of dataclass fields that use +# the coverter parameter described in PEP 712. + +from dataclasses import dataclass, field + + +def converter_simple(s: str) -> int: ... +def converter_passThru(x: str | int) -> str | int: ... + +@dataclass +class Foo: + # This should generate an error because "converter" is not an official property yet. + asymmetric: int = field(converter=converter_simple) + # This should generate an error because "converter" is not an official property yet. + symmetric: str | int = field(converter=converter_passThru) + +foo = Foo("1", 1) + +reveal_type(foo.asymmetric, expected_text="int") +foo.asymmetric = "2" +reveal_type(foo.asymmetric, expected_text="int") # Asymmetric -- type narrowing should not occur +# This should generate an error because only strs can be assigned to field0. +foo.asymmetric = 2 + +reveal_type(foo.symmetric, expected_text="str | int") +foo.symmetric = "1" +reveal_type(foo.symmetric, expected_text="Literal['1']") # Symmetric -- type narrowing should occur + + +reveal_type(Foo.asymmetric, expected_text="int") +Foo.asymmetric = "2" +reveal_type(Foo.asymmetric, expected_text="int") +# This should generate an error because only strs can be assigned to field0. +Foo.asymmetric = 2 + +reveal_type(Foo.symmetric, expected_text="str | int") +Foo.symmetric = "1" +reveal_type(Foo.symmetric, expected_text="Literal['1']") \ No newline at end of file diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 25d8fb31e..88271ff3d 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -679,6 +679,12 @@ test('DataClassConverter1', () => { TestUtils.validateResults(analysisResults, 17); }); +test('DataClassConverter2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassConverter2.py']); + + TestUtils.validateResults(analysisResults, 4); +}); + test('DataClassPostInit1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassPostInit1.py']); From ca8322f13a75fb97abfd743b871d5d5424b01055 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 20 Jun 2023 16:45:25 -0700 Subject: [PATCH 335/525] Fixed a bug in type caching mechanism that could have resulted in poor performance in certain circumstances. --- .../pyright-internal/src/analyzer/constraintSolver.ts | 2 +- packages/pyright-internal/src/analyzer/typePrinter.ts | 2 +- packages/pyright-internal/src/analyzer/typeUtils.ts | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 9d98ed629..bd089e69b 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -219,7 +219,7 @@ export function assignTypeToTypeVar( constrainedType = srcType; // If the source and dest are both instantiables (type[T]), then - // we need to convert to an instance (T) for the + // we need to convert to an instance (T). if (TypeBase.isInstantiable(srcType)) { constrainedType = convertToInstance(srcType, /* includeSubclasses */ false); } diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index 1b6577331..cdd07d990 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -427,7 +427,7 @@ function printTypeInternal( case TypeCategory.Function: { if (TypeBase.isInstantiable(type)) { const typeString = printFunctionType( - TypeBase.cloneTypeAsInstance(type), + FunctionType.cloneAsInstance(type), printTypeFlags, returnTypeCallback, uniqueNameMap, diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 3c6cc5d59..2ea85108a 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2067,11 +2067,13 @@ export function convertToInstantiable(type: Type): Type { ); } - // Cache the converted value for next time. - if (!type.cached) { - type.cached = {}; + if (type !== result) { + // Cache the converted value for next time. + if (!type.cached) { + type.cached = {}; + } + type.cached.instantiableType = result; } - type.cached.instantiableType = result; return result; } From 521d84e0cf25cbce1a8c4afd2cb90c45547baf1f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 20 Jun 2023 16:48:02 -0700 Subject: [PATCH 336/525] Added low-level caching mechanism for converting between instance and instantiation types. This should reduce memory usage in some circumstances. --- .../pyright-internal/src/analyzer/types.ts | 69 ++++++++++++++++--- 1 file changed, 59 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 61f96c957..14b662a4c 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -153,10 +153,15 @@ interface TypeBase { // Cached values are not cloned. cached?: { - // Type converted to instantiable and instance (cached) + // Type converted to instantiable and instance by convertToInstance + // and convertToInstantiable (cached) instantiableType?: Type; instanceType?: Type; + // Type converted to instantiable and instance by TypeBase methods (cached) + typeBaseInstantiableType?: Type; + typeBaseInstanceType?: Type; + // Requires specialization flag (cached) requiresSpecialization?: boolean; }; @@ -193,7 +198,7 @@ export namespace TypeBase { return clone; } - export function cloneTypeAsInstance(type: T): T { + export function cloneTypeAsInstance(type: T, cache: boolean): T { assert(TypeBase.isInstantiable(type)); const newInstance = TypeBase.cloneType(type); @@ -210,10 +215,19 @@ export namespace TypeBase { } } + // Should we cache it for next time? + if (cache) { + if (!type.cached) { + type.cached = {}; + } + + type.cached.typeBaseInstanceType = newInstance; + } + return newInstance; } - export function cloneTypeAsInstantiable(type: T): T { + export function cloneTypeAsInstantiable(type: T, cache: boolean): T { const newInstance: T = TypeBase.cloneType(type); if (TypeBase.isInstance(type)) { @@ -224,6 +238,15 @@ export namespace TypeBase { newInstance.instantiableNestingLevel === undefined ? 1 : newInstance.instantiableNestingLevel; } + // Should we cache it for next time? + if (cache) { + if (!type.cached) { + type.cached = {}; + } + + type.cached.typeBaseInstantiableType = newInstance; + } + return newInstance; } @@ -684,16 +707,25 @@ export namespace ClassType { return type; } - const newInstance = TypeBase.cloneTypeAsInstance(type); + if (includeSubclasses && type.cached?.typeBaseInstanceType) { + return type.cached.typeBaseInstanceType as ClassType; + } + + const newInstance = TypeBase.cloneTypeAsInstance(type, /* cache */ includeSubclasses); newInstance.flags &= ~TypeFlags.SpecialForm; if (includeSubclasses) { newInstance.includeSubclasses = true; } + return newInstance; } - export function cloneAsInstantiable(objectType: ClassType): ClassType { - return TypeBase.cloneTypeAsInstantiable(objectType); + export function cloneAsInstantiable(type: ClassType): ClassType { + if (type.cached?.typeBaseInstantiableType) { + return type.cached.typeBaseInstantiableType as ClassType; + } + + return TypeBase.cloneTypeAsInstantiable(type, /* cache */ true); } export function cloneForSpecialization( @@ -1465,13 +1497,21 @@ export namespace FunctionType { } export function cloneAsInstance(type: FunctionType): FunctionType { - const newInstance = TypeBase.cloneTypeAsInstance(type); + if (type.cached?.typeBaseInstanceType) { + return type.cached.typeBaseInstanceType as FunctionType; + } + + const newInstance = TypeBase.cloneTypeAsInstance(type, /* cache */ true); newInstance.flags &= ~TypeFlags.SpecialForm; return newInstance; } export function cloneAsInstantiable(type: FunctionType): FunctionType { - const newInstance = TypeBase.cloneTypeAsInstantiable(type); + if (type.cached?.typeBaseInstantiableType) { + return type.cached.typeBaseInstantiableType as FunctionType; + } + + const newInstance = TypeBase.cloneTypeAsInstantiable(type, /* cache */ true); newInstance.flags &= ~TypeFlags.SpecialForm; return newInstance; } @@ -2301,13 +2341,22 @@ export namespace TypeVarType { export function cloneAsInstance(type: TypeVarType): TypeVarType { assert(TypeBase.isInstantiable(type)); - const newInstance = TypeBase.cloneTypeAsInstance(type); + + if (type.cached?.typeBaseInstanceType) { + return type.cached.typeBaseInstanceType as TypeVarType; + } + + const newInstance = TypeBase.cloneTypeAsInstance(type, /* cache */ true); newInstance.flags &= ~TypeFlags.SpecialForm; return newInstance; } export function cloneAsInstantiable(type: TypeVarType): TypeVarType { - const newInstance = TypeBase.cloneTypeAsInstantiable(type); + if (type.cached?.typeBaseInstantiableType) { + return type.cached.typeBaseInstantiableType as TypeVarType; + } + + const newInstance = TypeBase.cloneTypeAsInstantiable(type, /* cache */ true); newInstance.flags &= ~TypeFlags.SpecialForm; return newInstance; } From 37535a317176b27ba660800ce50b333ef996a0f3 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 20 Jun 2023 17:45:02 -0700 Subject: [PATCH 337/525] Fixed a bug that led to incorrect type narrowing for the `isinstance` type guard in certain cases where the guard type and the pre-narrowed type are both generic. (#5347) Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 8 +++++ .../tests/samples/typeNarrowingIsinstance1.py | 33 +++++++++++++------ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index bd089e69b..14c633bf8 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -971,6 +971,14 @@ export function populateTypeVarContextBasedOnExpectedType( if (typeArgValue) { const variance = TypeVarType.getVariance(typeVar); + // If this type variable already has a type, don't overwrite it. This can + // happen if a single type variable in the derived class is used multiple times + // in the specialized base class type (e.g. Mapping[T, T]). + if (typeVarContext.getPrimarySignature().getTypeVarType(targetTypeVar)) { + isResultValid = false; + typeArgValue = UnknownType.create(); + } + typeVarContext.setTypeVarType( targetTypeVar, variance === Variance.Covariant ? undefined : typeArgValue, diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance1.py index 52d72687a..fe94c4dd6 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance1.py @@ -1,7 +1,10 @@ # This sample exercises the type analyzer's isinstance type narrowing logic. from types import NoneType -from typing import Sized, TypeVar, Union, Any +from typing import Generic, Sized, TypeVar, Union, Any + +S = TypeVar("S") +T = TypeVar("T") class UnrelatedClass: @@ -105,9 +108,6 @@ def func4(ty: type[int]) -> type[int]: return ty -T = TypeVar("T") - - def func5(ty: type[T]) -> type[T]: assert isinstance(ty, (type, str)) return ty @@ -134,21 +134,21 @@ class Base1: ... -class Sub1(Base1): +class Sub1_1(Base1): value: str -class Sub2(Base1): +class Sub1_2(Base1): value: Base1 def handler(node: Base1) -> Any: - if isinstance(node, Sub1): + if isinstance(node, Sub1_1): reveal_type(node.value, expected_text="str") - elif isinstance(node, Sub2): + elif isinstance(node, Sub1_2): reveal_type(node.value, expected_text="Base1") - if isinstance(node.value, Sub1): - reveal_type(node.value, expected_text="Sub1") + if isinstance(node.value, Sub1_1): + reveal_type(node.value, expected_text="Sub1_1") def func8(a: int | list[int] | dict[str, int] | None): @@ -166,3 +166,16 @@ def func9(a: int | None): reveal_type(a, expected_text="int") else: reveal_type(a, expected_text="None") + + +class Base2(Generic[S, T]): + pass + + +class Sub2(Base2[T, T]): + pass + + +def func10(val: Sub2[str] | Base2[str, float]): + if isinstance(val, Sub2): + reveal_type(val, expected_text="Sub2[str] | Sub2[Unknown]") From ed73c0e965a32b7b93477cbbc9b18fdbc318cf10 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 20 Jun 2023 18:17:06 -0700 Subject: [PATCH 338/525] Enhanced the `isinstance` type narrowing logic so it filters types based on the number of entries in a tuple if the type derives from a tuple. This addresses https://github.com/microsoft/pyright/issues/5346. (#5348) Co-authored-by: Eric Traut --- .../src/analyzer/typeGuards.ts | 70 ++++++++++--------- .../samples/typeNarrowingIsinstance18.py | 63 +++++++++++++++++ .../src/tests/typeEvaluator1.test.ts | 11 +-- 3 files changed, 106 insertions(+), 38 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance18.py diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 8fb2f258e..8ae28bcbd 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -1258,45 +1258,47 @@ function narrowTypeForIsInstance( // we haven't learned anything new about the variable type. filteredTypes.push(addConditionToType(varType, constraints)); } else if (filterIsSubclass) { - // If the variable type is a superclass of the isinstance - // filter, we can narrow the type to the subclass. - let specializedFilterType = filterType; - - // Try to retain the type arguments for the filter type. This is - // important because a specialized version of the filter cannot - // be passed to isinstance or issubclass. - if (isClass(filterType)) { - if ( - ClassType.isSpecialBuiltIn(filterType) || - filterType.details.typeParameters.length > 0 - ) { - const typeVarContext = new TypeVarContext(getTypeVarScopeId(filterType)); - const unspecializedFilterType = ClassType.cloneForSpecialization( - filterType, - /* typeArguments */ undefined, - /* isTypeArgumentExplicit */ false - ); - + if (evaluator.assignType(varType, filterType)) { + // If the variable type is a superclass of the isinstance + // filter, we can narrow the type to the subclass. + let specializedFilterType = filterType; + + // Try to retain the type arguments for the filter type. This is + // important because a specialized version of the filter cannot + // be passed to isinstance or issubclass. + if (isClass(filterType)) { if ( - populateTypeVarContextBasedOnExpectedType( - evaluator, - unspecializedFilterType, - varType, - typeVarContext, - /* liveTypeVarScopes */ undefined, - errorNode.start - ) + ClassType.isSpecialBuiltIn(filterType) || + filterType.details.typeParameters.length > 0 ) { - specializedFilterType = applySolvedTypeVars( - unspecializedFilterType, - typeVarContext, - { unknownIfNotFound: true } - ) as ClassType; + const typeVarContext = new TypeVarContext(getTypeVarScopeId(filterType)); + const unspecializedFilterType = ClassType.cloneForSpecialization( + filterType, + /* typeArguments */ undefined, + /* isTypeArgumentExplicit */ false + ); + + if ( + populateTypeVarContextBasedOnExpectedType( + evaluator, + unspecializedFilterType, + varType, + typeVarContext, + /* liveTypeVarScopes */ undefined, + errorNode.start + ) + ) { + specializedFilterType = applySolvedTypeVars( + unspecializedFilterType, + typeVarContext, + { unknownIfNotFound: true } + ) as ClassType; + } } } - } - filteredTypes.push(addConditionToType(specializedFilterType, constraints)); + filteredTypes.push(addConditionToType(specializedFilterType, constraints)); + } } else if ( allowIntersections && !ClassType.isFinal(varType) && diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance18.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance18.py new file mode 100644 index 000000000..e4c288746 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsinstance18.py @@ -0,0 +1,63 @@ +# This sample tests the case where a filter (guard) type has a subtype +# relationship to the type of the variable being filtered but the +# type arguments sometimes mean that it cannot be a subtype. + +from typing import Generic, NamedTuple, TypeVar + +T = TypeVar("T") + + +class NT1(NamedTuple, Generic[T]): + pass + + +def func1(val: NT1[str] | tuple[int, int]): + if isinstance(val, NT1): + reveal_type(val, expected_text="NT1[str]") + else: + reveal_type(val, expected_text="tuple[int, int]") + + +class NT2(NamedTuple, Generic[T]): + a: T + b: str + + +def func2(val: NT2[str] | tuple[int, int]): + if isinstance(val, NT2): + reveal_type(val, expected_text="NT2[str]") + else: + reveal_type(val, expected_text="tuple[int, int]") + + +def func3(val: NT2[str] | tuple[int, str]): + if isinstance(val, NT2): + reveal_type(val, expected_text="NT2[str] | NT2[Unknown]") + else: + reveal_type(val, expected_text="tuple[int, str]") + + +class NT3(NamedTuple, Generic[T]): + a: T + b: T + + +def func4(val: NT3[str] | tuple[int, int]): + if isinstance(val, NT3): + reveal_type(val, expected_text="NT3[str] | NT3[Unknown]") + else: + reveal_type(val, expected_text="tuple[int, int]") + + +def func5(val: NT3[str] | tuple[str, str, str]): + if isinstance(val, NT3): + reveal_type(val, expected_text="NT3[str]") + else: + reveal_type(val, expected_text="tuple[str, str, str]") + + +def func6(val: NT3[str] | tuple[str, ...]): + if isinstance(val, NT3): + reveal_type(val, expected_text="NT3[str] | NT3[Unknown]") + else: + reveal_type(val, expected_text="tuple[str, ...]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 2b3031b61..f33d31e07 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -442,10 +442,13 @@ test('TypeNarrowingIsinstance16', () => { }); test('TypeNarrowingIsinstance17', () => { - // This test requires Python 3.10 because it uses PEP 604 notation for unions. - const configOptions = new ConfigOptions('.'); - configOptions.defaultPythonVersion = PythonVersion.V3_10; - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsinstance17.py'], configOptions); + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsinstance17.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('TypeNarrowingIsinstance18', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsinstance18.py']); TestUtils.validateResults(analysisResults, 0); }); From cef2712bf30920017f4416dd41808f9e21bfcbaf Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 20 Jun 2023 18:34:15 -0700 Subject: [PATCH 339/525] Published 1.1.315 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 9a43a7d06..d2e84cba2 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.314", + "version": "1.1.315", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 84999835c..da7c57119 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.314", + "version": "1.1.315", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.314", + "version": "1.1.315", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 2509d184f..a133a20f2 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.314", + "version": "1.1.315", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 66446e5a9..0fe20d20a 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.314", + "version": "1.1.315", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.314", + "version": "1.1.315", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 3831a19b0..c0706ae37 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.314", + "version": "1.1.315", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 4a0ff0208..6fb0d8da6 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.314", + "version": "1.1.315", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.314", + "version": "1.1.315", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index d277dced7..758a249b5 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.314", + "version": "1.1.315", "private": true, "license": "MIT", "author": { From d4fd3af6d3d7d5996225fc1e23050e7ac62021d1 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 20 Jun 2023 19:15:24 -0700 Subject: [PATCH 340/525] Fixed a bug in the new `-` command-line feature. This addresses https://github.com/microsoft/pyright/issues/5342. --- packages/pyright-internal/src/pyright.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/pyright.ts b/packages/pyright-internal/src/pyright.ts index b524e1a70..660a1ef89 100644 --- a/packages/pyright-internal/src/pyright.ts +++ b/packages/pyright-internal/src/pyright.ts @@ -229,7 +229,7 @@ async function processArgs(): Promise { .trim() .split(' ') .map((s) => s.trim()) - .filter((s) => !s); + .filter((s) => !!s); } catch (e) { console.error('Invalid file list specified by stdin input.'); return ExitStatus.ParameterError; From 7b242d5e5ee70504cc43e4710d5f36b5db569b77 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 21 Jun 2023 08:09:40 -0700 Subject: [PATCH 341/525] Added mitigation for reported assertion failure (and crash). This temporarily addresses https://github.com/microsoft/pyright/issues/5355. --- .../pyright-internal/src/analyzer/codeFlowEngine.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index 7877618f1..e4369b57d 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -268,8 +268,15 @@ export function getCodeFlowEngine( evaluationCount: number ) { const cachedEntry = flowNodeTypeCache.cache.get(flowNode.id); - if (cachedEntry === undefined || !isIncompleteType(cachedEntry)) { - fail('setIncompleteSubtype can be called only on a valid incomplete cache entry'); + if (cachedEntry === undefined) { + fail('setIncompleteSubtype can be called only on a valid cache entry'); + } + + if (!isIncompleteType(cachedEntry)) { + // This condition should rarely happen, but it's possible in the case where we + // have a nested loop and getTypeFromLoopFlowNode is called recursively when + // the first antecedent is already marked as pending. + return; } const incompleteEntries = cachedEntry.incompleteSubtypes; From df7d83c1710cd837fe54a4cd643277430aacb539 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 21 Jun 2023 09:52:40 -0700 Subject: [PATCH 342/525] Fixed another instance of a false positive `reportMissingTypeArgument` error when a generic class is passed as the second argument to `isinstance`. This addresses https://github.com/microsoft/pyright/issues/5294. --- packages/pyright-internal/src/analyzer/typeGuards.ts | 3 ++- .../pyright-internal/src/tests/samples/missingTypeArg1.py | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 8ae28bcbd..5375f7d31 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -562,7 +562,8 @@ export function getTypeNarrowingCallback( const isInstanceCheck = callType.details.builtInName === 'isinstance'; const arg1TypeResult = evaluator.getTypeOfExpression( arg1Expr, - EvaluatorFlags.EvaluateStringLiteralAsType | + EvaluatorFlags.AllowMissingTypeArgs | + EvaluatorFlags.EvaluateStringLiteralAsType | EvaluatorFlags.DisallowParamSpec | EvaluatorFlags.DisallowTypeVarTuple ); diff --git a/packages/pyright-internal/src/tests/samples/missingTypeArg1.py b/packages/pyright-internal/src/tests/samples/missingTypeArg1.py index 0a2f093f0..6710d5825 100644 --- a/packages/pyright-internal/src/tests/samples/missingTypeArg1.py +++ b/packages/pyright-internal/src/tests/samples/missingTypeArg1.py @@ -51,3 +51,10 @@ def func2(obj: object): pass if isinstance(obj, Class1 | Class2): pass + + +class ClassA: + @staticmethod + def method1(data: int | str | dict[str, str]): + if isinstance(data, dict | str): + return data From 3f84540e0e89872f72b1a50bb24396dcdab033f3 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 21 Jun 2023 10:58:59 -0700 Subject: [PATCH 343/525] pull-pylance-with-pyright-1.1.315 (#5359) --- .../src/common/extensibility.ts | 6 +++--- .../src/tests/positionUtils.test.ts | 16 +++++++++++++++- .../src/tests/tokenizer.test.ts | 17 +++++++++++++++-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index 6b88ae87e..8c7a7cb6c 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -15,7 +15,7 @@ import * as prog from '../analyzer/program'; import { SourceMapper } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { Type } from '../analyzer/types'; -import { LanguageServerBase } from '../languageServerBase'; +import { LanguageServerBase, LanguageServerInterface } from '../languageServerBase'; import { CompletionOptions } from '../languageService/completionProvider'; import { FunctionNode, ParameterNode, ParseNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; @@ -139,7 +139,7 @@ export interface ProgramMutator { export interface ExtensionFactory { createProgramExtension?: (view: ProgramView, mutator: ProgramMutator) => ProgramExtension; - createLanguageServiceExtension?: (languageserver: LanguageServerBase) => LanguageServiceExtension; + createLanguageServiceExtension?: (languageserver: LanguageServerInterface) => LanguageServiceExtension; } export interface CommandExtension { @@ -245,7 +245,7 @@ export namespace Extensions { programExtensions = programExtensions.filter((s) => s.view.id !== viewId); } - export function createLanguageServiceExtensions(languageServer: LanguageServerBase) { + export function createLanguageServiceExtensions(languageServer: LanguageServerInterface) { languageServiceExtensions.push( ...(factories .map((s) => { diff --git a/packages/pyright-internal/src/tests/positionUtils.test.ts b/packages/pyright-internal/src/tests/positionUtils.test.ts index 5de010e37..9e3e2d7a8 100644 --- a/packages/pyright-internal/src/tests/positionUtils.test.ts +++ b/packages/pyright-internal/src/tests/positionUtils.test.ts @@ -9,8 +9,9 @@ import assert from 'assert'; import { DiagnosticSink } from '../common/diagnosticSink'; -import { getLineEndPosition } from '../common/positionUtils'; +import { convertOffsetToPosition, convertPositionToOffset, getLineEndPosition } from '../common/positionUtils'; import { ParseOptions, Parser } from '../parser/parser'; +import { Tokenizer } from '../parser/tokenizer'; test('getLineEndOffset', () => { const code = 'a = 1'; @@ -50,6 +51,19 @@ test('getLineEndOffset with mixed style ending', () => { verifyLineEnding(code, 2, 5); }); +test('End of file position and offest conversion', () => { + const code = 'hello\n'; + + const t = new Tokenizer(); + const results = t.tokenize(code); + + const position = convertOffsetToPosition(code.length, results.lines); + assert.strictEqual(position.line, 1); + + const offset = convertPositionToOffset(position, results.lines); + assert.strictEqual(offset, code.length); +}); + function verifyLineEnding(code: string, line: number, expected: number) { const parser = new Parser(); const parseResults = parser.parseSourceFile(code, new ParseOptions(), new DiagnosticSink()); diff --git a/packages/pyright-internal/src/tests/tokenizer.test.ts b/packages/pyright-internal/src/tests/tokenizer.test.ts index d37e57d15..9b04df823 100644 --- a/packages/pyright-internal/src/tests/tokenizer.test.ts +++ b/packages/pyright-internal/src/tests/tokenizer.test.ts @@ -77,8 +77,6 @@ test('NewLines', () => { assert.equal(results.tokens.contains(5), true); assert.equal(results.tokens.contains(6), false); - - assert.equal(results.lines.count, 4); }); test('InvalidWithNewLine', () => { @@ -1828,3 +1826,18 @@ test('Normalization', () => { assert.equal(idToken.length, 2); assert.equal(idToken.value, 'R'); }); + +test('Last empty line', () => { + const t = new Tokenizer(); + const results = t.tokenize('\r\n'); + assert.equal(results.tokens.count, _implicitTokenCount); + + const newLineToken = results.tokens.getItemAt(0) as NewLineToken; + assert.equal(newLineToken.type, TokenType.NewLine); + assert.equal(newLineToken.length, 2); + assert.equal(newLineToken.newLineType, NewLineType.CarriageReturnLineFeed); + + const eofToken = results.tokens.getItemAt(1); + assert.equal(eofToken.type, TokenType.EndOfStream); + assert.equal(eofToken.length, 0); +}); From fb62cc9bf835f0ca02d7a2ff925878b191c866c4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 21 Jun 2023 13:53:30 -0700 Subject: [PATCH 344/525] Added support for bidirectional type inference when using a dictionary expansion and a dictionary literal expression for an argument corresponding to an unpacked TypedDict `**kwargs` parameter. This addresses https://github.com/microsoft/pyright/issues/5358. (#5360) Co-authored-by: Eric Traut --- .../src/analyzer/parameterUtils.ts | 2 ++ .../src/analyzer/typeEvaluator.ts | 10 +++++++--- .../pyright-internal/src/tests/samples/call7.py | 16 +++++++++++++++- .../src/tests/samples/kwargsUnpack1.py | 3 ++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/parameterUtils.ts b/packages/pyright-internal/src/analyzer/parameterUtils.ts index bc5159ff2..ba18dcc67 100644 --- a/packages/pyright-internal/src/analyzer/parameterUtils.ts +++ b/packages/pyright-internal/src/analyzer/parameterUtils.ts @@ -61,6 +61,7 @@ export interface ParameterListDetails { // Other information hasUnpackedVariadicTypeVar: boolean; hasUnpackedTypedDict: boolean; + unpackedKwargsTypedDictType?: ClassType; } // Examines the input parameters within a function signature and creates a @@ -248,6 +249,7 @@ export function getParameterListDetails(type: FunctionType): ParameterListDetail }); result.hasUnpackedTypedDict = true; + result.unpackedKwargsTypedDictType = paramType; } else if (param.name) { if (result.kwargsIndex === undefined) { result.kwargsIndex = result.params.length; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 89c9c3167..8c61a4915 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9888,7 +9888,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions while (argIndex < argList.length) { if (argList[argIndex].argumentCategory === ArgumentCategory.UnpackedDictionary) { // Verify that the type used in this expression is a SupportsKeysAndGetItem[str, T]. - const argType = getTypeOfArgument(argList[argIndex]).type; + const argType = getTypeOfArgument( + argList[argIndex], + makeInferenceContext(paramDetails.unpackedKwargsTypedDictType) + ).type; + if (isAnyOrUnknown(argType)) { unpackedDictionaryArgType = argType; } else if (isClassInstance(argType) && ClassType.isTypedDictClass(argType)) { @@ -19222,7 +19226,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type: specializedClass }; } - function getTypeOfArgument(arg: FunctionArgument): TypeResult { + function getTypeOfArgument(arg: FunctionArgument, inferenceContext?: InferenceContext): TypeResult { if (arg.typeResult) { return { type: arg.typeResult.type, isIncomplete: arg.typeResult.isIncomplete }; } @@ -19234,7 +19238,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If there was no defined type provided, there should always // be a value expression from which we can retrieve the type. - return getTypeOfExpression(arg.valueExpression); + return getTypeOfExpression(arg.valueExpression, /* flags */ undefined, inferenceContext); } // This function is like getTypeOfArgument except that it is diff --git a/packages/pyright-internal/src/tests/samples/call7.py b/packages/pyright-internal/src/tests/samples/call7.py index a8ffe6570..489145ae6 100644 --- a/packages/pyright-internal/src/tests/samples/call7.py +++ b/packages/pyright-internal/src/tests/samples/call7.py @@ -1,7 +1,7 @@ # This sample tests the handling of an unpacked TypedDict passed as # an argument to a function. -from typing import TypedDict +from typing import TypedDict, Unpack class TD1(TypedDict): @@ -55,3 +55,17 @@ def func4(arg1: int, arg2: str, **kwargs: int): # This should generate an error because "arg3" cannot be matched # due to the type of the **kwargs parameter. func4(**td2) + + +class Options(TypedDict, total=False): + opt1: bool + opt2: str + + +def func5(code: str | None = None, **options: Unpack[Options]): + pass + + +func5(**{}) +func5(**{"opt1": True}) +func5(**{"opt2": "hi"}) diff --git a/packages/pyright-internal/src/tests/samples/kwargsUnpack1.py b/packages/pyright-internal/src/tests/samples/kwargsUnpack1.py index 4d0aaa8e4..c8c9ca85d 100644 --- a/packages/pyright-internal/src/tests/samples/kwargsUnpack1.py +++ b/packages/pyright-internal/src/tests/samples/kwargsUnpack1.py @@ -56,7 +56,8 @@ def func3(): # This should generate an error because it's an untyped dict. func1(**my_dict) - func1(**{"v1": 2, "v3": "4", "v4": 4}) + d1 = {"v1": 2, "v3": "4", "v4": 4} + func1(**d1) func2(**td2) From b3c77ba45cedc7e114411e4c633ddd5018f31fed Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 21 Jun 2023 15:55:50 -0700 Subject: [PATCH 345/525] Fixed bug that resulted in incorrect type evaluation when a generic callback protocol was invoked in a nested manner. This addresses https://github.com/microsoft/pyright/issues/5356. (#5361) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 9 ++++++++- .../src/tests/samples/solverHigherOrder6.py | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 8c61a4915..af068b089 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10936,6 +10936,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions skipUnknownArgCheck = false, inferenceContext?: InferenceContext ): CallResult { + const signatureTracker = inferenceContext?.signatureTracker ?? new UniqueSignatureTracker(); + typeResult.type = ensureFunctionSignaturesAreUnique( + typeResult.type, + signatureTracker, + errorNode.start + ) as FunctionType; + const matchResults = matchFunctionArgumentsToParameters(errorNode, argList, typeResult, 0); if (matchResults.argumentErrors) { @@ -10959,7 +10966,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions matchResults, typeVarContext, skipUnknownArgCheck, - inferenceContext + makeInferenceContext(inferenceContext?.expectedType, inferenceContext?.isTypeIncomplete, signatureTracker) ); } diff --git a/packages/pyright-internal/src/tests/samples/solverHigherOrder6.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder6.py index ca3263348..e53a27767 100644 --- a/packages/pyright-internal/src/tests/samples/solverHigherOrder6.py +++ b/packages/pyright-internal/src/tests/samples/solverHigherOrder6.py @@ -1,7 +1,7 @@ # This sample tests the handling of nested calls to generic functions # when bidirectional type inference is involved. -from typing import Callable, Generic, Literal, ParamSpec, TypeVar +from typing import Any, Callable, Generic, Literal, ParamSpec, Protocol, TypeVar _T = TypeVar("_T") _P = ParamSpec("_P") @@ -46,3 +46,16 @@ def func4(a: int, b: int) -> str: reveal_type(func1(func2(func3)), expected_text="Future[int]") reveal_type(func1(func2(func4, 1, 2)), expected_text="Future[str]") reveal_type(func1(func2(func4, a=1, b=2)), expected_text="Future[str]") + + +class Proto(Protocol): + def __call__(self, func: _T) -> _T: + ... + + +def func5(cb: Proto, names: Any): + val1 = cb(cb(names)) + reveal_type(val1, expected_text="Any") + + val2 = cb(cb(1)) + reveal_type(val2, expected_text="int") From 24e755025c99d729a6d015dc41c493ef0024df00 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 21 Jun 2023 16:02:39 -0700 Subject: [PATCH 346/525] Fixed formatting in test case. No functional change. --- .../src/tests/samples/solverHigherOrder4.py | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/tests/samples/solverHigherOrder4.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder4.py index 3131f68c4..bd0b79e85 100644 --- a/packages/pyright-internal/src/tests/samples/solverHigherOrder4.py +++ b/packages/pyright-internal/src/tests/samples/solverHigherOrder4.py @@ -8,11 +8,22 @@ _T_co = TypeVar("_T_co", covariant=True) _U = TypeVar("_U") -class MyIterable(Protocol[_T_co]): ... -class MySupportsAbs(Protocol[_T_co]): ... -def my_abs(x: MySupportsAbs[_T], /) -> _T: ... -def my_map(a: Callable[[_T], _U], b: MyIterable[_T]) -> MyIterable[_U]: ... +class MyIterable(Protocol[_T_co]): + ... + + +class MySupportsAbs(Protocol[_T_co]): + ... + + +def my_abs(x: MySupportsAbs[_T], /) -> _T: + ... + + +def my_map(a: Callable[[_T], _U], b: MyIterable[_T]) -> MyIterable[_U]: + ... + def func1(xs: MyIterable[MySupportsAbs[int]]): ys0 = my_map(a=my_abs, b=xs) @@ -25,9 +36,11 @@ def func1(xs: MyIterable[MySupportsAbs[int]]): def ident(x: _U) -> _U: return x + def func2(__cb: Callable[[_T1], _T], __arg0: _T1) -> _T: ... + x1_0 = func2(ident, "hi") reveal_type(x1_0, expected_text="str") @@ -37,9 +50,12 @@ def func2(__cb: Callable[[_T1], _T], __arg0: _T1) -> _T: _P = ParamSpec("_P") _R = TypeVar("_R") + + def func3(__obj: Callable[_P, _R], *args: _P.args, **kwargs: _P.kwargs) -> _R: ... + x2_0 = func3(ident, "hi") reveal_type(x2_0, expected_text="str") From 7fb28a43714e95db5c0f206f097d71dbbb9f139a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 21 Jun 2023 18:53:59 -0700 Subject: [PATCH 347/525] Fixed a bug that resulted in a false positive when passing a class to the `defaultdict` constructor. If an unspecialized class type is used as a upper or lower constraint within the constraint solver, we now use default type arguments (typically `Unknown`) rather than leaving these type arguments unspecified. This addresses https://github.com/microsoft/pyright/issues/5354. (#5363) Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 9 ++++++++ .../src/analyzer/typeEvaluator.ts | 2 +- .../src/analyzer/typeUtils.ts | 22 +++++++++++++++++++ .../src/tests/samples/solver26.py | 10 +++++++++ .../src/tests/typeEvaluator2.test.ts | 6 +++++ 5 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/solver26.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 14c633bf8..7f7d7becc 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -55,6 +55,7 @@ import { isPartlyUnknown, mapSubtypes, specializeTupleClass, + specializeWithDefaultTypeArgs, transformExpectedType, transformPossibleRecursiveTypeAlias, } from './typeUtils'; @@ -394,6 +395,14 @@ export function assignTypeToTypeVar( let adjSrcType = srcType; + // If the source is a class that is missing type arguments, fill + // in missing type arguments with Unknown. + if ((flags & AssignTypeFlags.AllowUnspecifiedTypeArguments) === 0) { + if (isClass(adjSrcType) && adjSrcType.includeSubclasses) { + adjSrcType = specializeWithDefaultTypeArgs(adjSrcType); + } + } + if (TypeBase.isInstantiable(destType)) { if (isEffectivelyInstantiable(adjSrcType)) { adjSrcType = convertToInstance(adjSrcType, /* includeSubclasses */ false); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index af068b089..793c251ef 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -25241,7 +25241,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions diag, typeVarContext, /* srcTypeVarContext */ undefined, - AssignTypeFlags.Default, + AssignTypeFlags.AllowUnspecifiedTypeArguments, recursionCount ) ) { diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 2ea85108a..23bfe30f1 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -186,6 +186,12 @@ export const enum AssignTypeFlags { // so TypeVars should match the specified type exactly rather than // employing narrowing or widening, and don't strip literals. PopulatingExpectedType = 1 << 10, + + // Normally, when a class type is assigned to a TypeVar and that class + // hasn't previously been specialized, it will be specialized with + // default type arguments (typically "Unknown"). This flag skips + // this step. + AllowUnspecifiedTypeArguments = 1 << 11, } export interface ApplyTypeVarOptions { @@ -771,6 +777,22 @@ export function getTypeVarScopeIds(type: Type): TypeVarScopeId[] | TypeVarScopeI return scopeId; } +// If the class type is generic and does not already have type arguments +// specified, specialize it with default type arguments (Unknown or the +// default type if provided). +export function specializeWithDefaultTypeArgs(type: ClassType): ClassType { + if (type.details.typeParameters.length === 0 || type.typeArguments) { + return type; + } + + return ClassType.cloneForSpecialization( + type, + type.details.typeParameters.map((param) => param.details.defaultType ?? UnknownType.create()), + /* isTypeArgumentExplicit */ false, + !!type.includeSubclasses + ); +} + // Determines whether the type derives from tuple. If so, it returns // the specialized tuple type. export function getSpecializedTupleType(type: Type): ClassType | undefined { diff --git a/packages/pyright-internal/src/tests/samples/solver26.py b/packages/pyright-internal/src/tests/samples/solver26.py new file mode 100644 index 000000000..a087a2f96 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/solver26.py @@ -0,0 +1,10 @@ +# This sample tests that when an unspecialized generic class type is used as +# a constraint in the constraint solver, default type arguments (typically +# `Unknown`) are used. + +from collections import defaultdict + + +def func1() -> None: + d1 = defaultdict(list) + reveal_type(d1, expected_text="defaultdict[Unknown, list[Unknown]]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index aa5957c4f..fd4616847 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -647,6 +647,12 @@ test('Solver25', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Solver26', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver26.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('SolverScoring1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverScoring1.py']); From ea96b47c6890ee6bb25b4a895911a54912f624b0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 21 Jun 2023 20:44:28 -0700 Subject: [PATCH 348/525] Modified the signature of the synthesized `get` method for TypedDict classes so it more closely matches the signature (and therefore the behavior) of the `get` method in `dict`. This addresses https://github.com/microsoft/pyright/issues/5364. (#5365) Co-authored-by: Eric Traut --- .../src/analyzer/typedDicts.ts | 30 ++++++++----------- .../src/tests/samples/typedDict12.py | 20 +++++++++++-- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index e7945456e..a657c4048 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -355,7 +355,7 @@ export function synthesizeTypedDictClassMethods( function createGetMethod( keyType: Type, - valueType: Type | undefined, + valueType: Type, includeDefault: boolean, isEntryRequired = false, defaultTypeMatchesField = false @@ -379,14 +379,15 @@ export function synthesizeTypedDictClassMethods( // If the entry is required, the type of the default param doesn't matter // because the type will always come from the value. defaultParamType = AnyType.create(); - returnType = valueType ?? AnyType.create(); + returnType = valueType; } else { - defaultParamType = defaultTypeMatchesField && valueType ? valueType : defaultTypeVar; - if (valueType) { - returnType = defaultTypeMatchesField ? valueType : combineTypes([valueType, defaultTypeVar]); + if (defaultTypeMatchesField) { + defaultParamType = valueType; } else { - returnType = defaultTypeVar; + defaultParamType = combineTypes([valueType, defaultTypeVar]); } + + returnType = defaultParamType; } FunctionType.addParameter(getOverload, { @@ -399,7 +400,7 @@ export function synthesizeTypedDictClassMethods( } else { getOverload.details.declaredReturnType = isEntryRequired ? valueType - : combineTypes([valueType ?? AnyType.create(), NoneType.createInstance()]); + : combineTypes([valueType, NoneType.createInstance()]); } return getOverload; } @@ -517,15 +518,6 @@ export function synthesizeTypedDictClassMethods( ) ); } else { - getOverloads.push( - createGetMethod( - nameLiteralType, - entry.valueType, - /* includeDefault */ true, - /* isEntryRequired */ false, - /* defaultTypeMatchesField */ true - ) - ); getOverloads.push( createGetMethod( nameLiteralType, @@ -562,7 +554,11 @@ export function synthesizeTypedDictClassMethods( ) ); getOverloads.push( - createGetMethod(literalStringInstance, /* valueType */ undefined, /* includeDefault */ true) + createGetMethod( + literalStringInstance, + /* valueType */ UnknownType.create(), + /* includeDefault */ true + ) ); } } diff --git a/packages/pyright-internal/src/tests/samples/typedDict12.py b/packages/pyright-internal/src/tests/samples/typedDict12.py index 357db1657..71a8f5247 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict12.py +++ b/packages/pyright-internal/src/tests/samples/typedDict12.py @@ -64,7 +64,7 @@ def func1(a: TD3, b: TD4, c: C, s: str) -> int | None: a3 = a.get("bar") reveal_type(a3, expected_text="None") a4 = a.get("bar", 1.0) - reveal_type(a4, expected_text="float") + reveal_type(a4, expected_text="Unknown | float") a5 = a.get("baz") reveal_type(a5, expected_text="int | None") a6 = a.get("baz", 1.0) @@ -94,7 +94,7 @@ def func1(a: TD3, b: TD4, c: C, s: str) -> int | None: c3 = c.get("bar") reveal_type(c3, expected_text="str | None") c4 = c.get("bar", 1.0) - reveal_type(c4, expected_text="float | str") + reveal_type(c4, expected_text="Unknown | float | str") c5 = c.get("baz") reveal_type(c5, expected_text="int | Any | None") c6 = c.get("baz", 1.0) @@ -126,3 +126,19 @@ class TD6(TypedDict): # This should generate an error because not all elements are NotRequired. td6.popitem() + + +class TD7(TypedDict, total=False): + a: dict[str, str] + b: list[str] + + +def func2(td7: TD7): + v1 = td7.get("a", []) + reveal_type(v1, expected_text="dict[str, str] | list[Any]") + + v2 = td7.get("a", {}) + reveal_type(v2, expected_text="dict[str, str]") + + v3 = td7.get("b", []) + reveal_type(v3, expected_text="list[str]") From 241cd62b95d092d4b3127f61ebe3d1a85ca0a15f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 22 Jun 2023 21:01:49 -0700 Subject: [PATCH 349/525] Removed some unnecessary code in the code path that validates generic class type compatibility. --- .../src/analyzer/typeEvaluator.ts | 87 ++++++------------- 1 file changed, 25 insertions(+), 62 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 793c251ef..f375a4e86 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21525,28 +21525,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ): boolean { let curSrcType = srcType; let prevSrcType: ClassType | undefined; - let curDestTypeVarContext = destTypeVarContext; - let effectiveFlags = flags; inferTypeParameterVarianceForClass(destType); - effectiveFlags |= AssignTypeFlags.SkipSolveTypeVars; - - if (!destTypeVarContext) { - curDestTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); - effectiveFlags &= ~AssignTypeFlags.SkipSolveTypeVars; - } else { - // If we're using the caller's type var context, don't solve the - // type vars in this pass. We'll do this after we're done looping - // through the inheritance chain. - effectiveFlags |= AssignTypeFlags.SkipSolveTypeVars; - } - for (let ancestorIndex = inheritanceChain.length - 1; ancestorIndex >= 0; ancestorIndex--) { const ancestorType = inheritanceChain[ancestorIndex]; - const curSrcTypeVarContext = new TypeVarContext(getTypeVarScopeId(curSrcType)); - // If we've hit an "unknown", all bets are off, and we need to assume // that the type is assignable. if (isUnknown(ancestorType)) { @@ -21576,20 +21560,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions curSrcType = specializeForBaseClass(effectiveCurSrcType, ancestorType); } - // Handle built-in types that support arbitrary numbers - // of type parameters like Tuple. - if (ancestorIndex === 0 && destType.tupleTypeArguments && curSrcType.tupleTypeArguments) { - return assignTupleTypeArgs( - destType, - curSrcType, - diag, - destTypeVarContext, - srcTypeVarContext, - flags, - recursionCount - ); - } - // If there are no type parameters on this class, we're done. const ancestorTypeParams = ClassType.getTypeParameters(ancestorType); if (ancestorTypeParams.length === 0) { @@ -21601,24 +21571,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } - // Validate that the type arguments match. - if ( - !verifyTypeArgumentsAssignable( - ancestorType, - curSrcType, - diag, - curDestTypeVarContext, - curSrcTypeVarContext, - effectiveFlags, - recursionCount - ) - ) { - return false; - } - - // Allocate a new type var map for the next time through the loop. - curDestTypeVarContext = new TypeVarContext(getTypeVarScopeId(ancestorType)); - effectiveFlags &= ~AssignTypeFlags.SkipSolveTypeVars; prevSrcType = curSrcType; } @@ -21631,23 +21583,34 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + // Handle tuple, which supports a variable number of type arguments. + if (destType.tupleTypeArguments && curSrcType.tupleTypeArguments) { + return assignTupleTypeArgs( + destType, + curSrcType, + diag, + destTypeVarContext, + srcTypeVarContext, + flags, + recursionCount + ); + } + if (destType.typeArguments) { // If the dest type is specialized, make sure the specialized source // type arguments are assignable to the dest type arguments. - if ( - !verifyTypeArgumentsAssignable( - destType, - curSrcType, - diag, - destTypeVarContext, - srcTypeVarContext, - flags, - recursionCount - ) - ) { - return false; - } - } else if ( + return verifyTypeArgumentsAssignable( + destType, + curSrcType, + diag, + destTypeVarContext, + srcTypeVarContext, + flags, + recursionCount + ); + } + + if ( destTypeVarContext && destType.details.typeParameters.length > 0 && curSrcType.typeArguments && From c8a25b2d6141a23907e3c6c0f188ec45122ec421 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 22 Jun 2023 21:14:49 -0700 Subject: [PATCH 350/525] Revert "Added mitigation for reported assertion failure (and crash). This temporarily addresses https://github.com/microsoft/pyright/issues/5355." This reverts commit 7b242d5e5ee70504cc43e4710d5f36b5db569b77. --- .../pyright-internal/src/analyzer/codeFlowEngine.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index e4369b57d..7877618f1 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -268,15 +268,8 @@ export function getCodeFlowEngine( evaluationCount: number ) { const cachedEntry = flowNodeTypeCache.cache.get(flowNode.id); - if (cachedEntry === undefined) { - fail('setIncompleteSubtype can be called only on a valid cache entry'); - } - - if (!isIncompleteType(cachedEntry)) { - // This condition should rarely happen, but it's possible in the case where we - // have a nested loop and getTypeFromLoopFlowNode is called recursively when - // the first antecedent is already marked as pending. - return; + if (cachedEntry === undefined || !isIncompleteType(cachedEntry)) { + fail('setIncompleteSubtype can be called only on a valid incomplete cache entry'); } const incompleteEntries = cachedEntry.incompleteSubtypes; From 1340dfac2239b9bb086780bfdb20dee9bd791367 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 22 Jun 2023 21:16:28 -0700 Subject: [PATCH 351/525] Added proper fix for regression that caused crash within certain doubly-nested loops. This addresses https://github.com/microsoft/pyright/issues/5355#issuecomment-1603646306. --- packages/pyright-internal/src/analyzer/codeFlowEngine.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index 7877618f1..745feb98a 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -1012,6 +1012,12 @@ export function getCodeFlowEngine( return { type: effectiveType, isIncomplete: reportIncomplete }; } + // If the first antecedent was pending, we skipped all of the other + // antecedents, so the type is incomplete. + if (firstAntecedentTypeIsPending) { + return { type: effectiveType, isIncomplete: true }; + } + return setCacheEntry(loopNode, effectiveType, /* isIncomplete */ false); } From a74a5030641fae94b4dcd83f68fa42a783862adc Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 22 Jun 2023 22:03:46 -0700 Subject: [PATCH 352/525] Fixed a bug that results in a false positive error when attempting to assign a class to a `Callable` type when the class is generic and the constructor includes class-scoped type variables in its parameter annotations. This addresses https://github.com/microsoft/pyright/issues/5369. (#5372) Co-authored-by: Eric Traut --- .../src/analyzer/constructors.ts | 4 ++++ .../pyright-internal/src/analyzer/typeUtils.ts | 13 +++++++------ packages/pyright-internal/src/analyzer/types.ts | 4 ++-- .../src/tests/samples/constructor8.py | 16 ++++++++++++++++ 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 44aa6c6ad..cd94176a0 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -734,6 +734,7 @@ export function createFunctionFromConstructor( if (constructorFunction) { constructorFunction = FunctionType.clone(constructorFunction); constructorFunction.details.declaredReturnType = objectType; + constructorFunction.details.typeVarScopeId = initSubtype.details.typeVarScopeId; if (constructorFunction.specializedTypes) { constructorFunction.specializedTypes.returnType = objectType; @@ -744,6 +745,7 @@ export function createFunctionFromConstructor( } constructorFunction.details.flags &= ~FunctionTypeFlags.StaticMethod; + constructorFunction.details.constructorTypeVarScopeId = getTypeVarScopeId(classType); } return constructorFunction; @@ -792,6 +794,7 @@ export function createFunctionFromConstructor( if (constructorFunction) { constructorFunction = FunctionType.clone(constructorFunction); + constructorFunction.details.typeVarScopeId = newSubtype.details.typeVarScopeId; if (!constructorFunction.details.docString && classType.details.docString) { constructorFunction.details.docString = classType.details.docString; @@ -800,6 +803,7 @@ export function createFunctionFromConstructor( constructorFunction.details.flags &= ~( FunctionTypeFlags.StaticMethod | FunctionTypeFlags.ConstructorMethod ); + constructorFunction.details.constructorTypeVarScopeId = getTypeVarScopeId(classType); } return constructorFunction; diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 23bfe30f1..1d2db9e86 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -758,11 +758,14 @@ export function getTypeVarScopeId(type: Type): TypeVarScopeId | undefined { // This is similar to getTypeVarScopeId except that it includes // the secondary scope IDs for functions. export function getTypeVarScopeIds(type: Type): TypeVarScopeId[] | TypeVarScopeId | undefined { - const scopeId = getTypeVarScopeId(type); + const scopeIds: TypeVarScopeId[] = []; - if (scopeId && isFunction(type)) { - const scopeIds: TypeVarScopeId[] = [scopeId]; + const scopeId = getTypeVarScopeId(type); + if (scopeId) { + scopeIds.push(scopeId); + } + if (isFunction(type)) { if (type.details.constructorTypeVarScopeId) { scopeIds.push(type.details.constructorTypeVarScopeId); } @@ -770,11 +773,9 @@ export function getTypeVarScopeIds(type: Type): TypeVarScopeId[] | TypeVarScopeI if (type.details.paramSpecTypeVarScopeId) { scopeIds.push(type.details.paramSpecTypeVarScopeId); } - - return scopeIds; } - return scopeId; + return scopeIds; } // If the class type is generic and does not already have type arguments diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 14b662a4c..9d6885e0a 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1451,7 +1451,7 @@ export namespace FunctionType { ); newFunction.details = { ...type.details }; - newFunction.boundToType = boundToType; + newFunction.boundToType = boundToType ?? type.boundToType; newFunction.preBoundFlags = newFunction.details.flags; if (stripFirstParam) { @@ -1491,7 +1491,7 @@ export namespace FunctionType { } newFunction.inferredReturnType = type.inferredReturnType; - newFunction.boundTypeVarScopeId = boundTypeVarScopeId; + newFunction.boundTypeVarScopeId = boundTypeVarScopeId ?? type.boundTypeVarScopeId; return newFunction; } diff --git a/packages/pyright-internal/src/tests/samples/constructor8.py b/packages/pyright-internal/src/tests/samples/constructor8.py index 71587f175..c525cf600 100644 --- a/packages/pyright-internal/src/tests/samples/constructor8.py +++ b/packages/pyright-internal/src/tests/samples/constructor8.py @@ -1,6 +1,7 @@ # This sample verifies that a class can be assigned to a Callable # type if its constructor conforms to that type. +from dataclasses import dataclass from typing import Any, Callable, Generic, Literal, TypeVar, Union, overload _T1 = TypeVar("_T1") @@ -97,3 +98,18 @@ def __init__(self, x: Any, y: bool = False) -> None: d5 = func1(D[Union[int, str]], "3") reveal_type(d5, expected_text="D[int | str]") + + +@dataclass(frozen=True, slots=True) +class E(Generic[_T1]): + x: _T1 + + +e1: Callable[[int], E[int]] = E + + +def func2(x: _T1) -> E[_T1]: + ... + + +e2: Callable[[int], E[int]] = func2 From 367b603e42cee67a5d183094f43397cfb5519b60 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 22 Jun 2023 22:23:30 -0700 Subject: [PATCH 353/525] Renamed a few internal functions for consistency. --- packages/pyright-internal/src/analyzer/protocols.ts | 4 ++-- .../pyright-internal/src/analyzer/typeEvaluator.ts | 10 +++++----- .../src/analyzer/typeEvaluatorTypes.ts | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index 91911731c..9c96c3172 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -440,7 +440,7 @@ function assignClassToProtocolInternal( if (destType.typeArguments) { if ( - !evaluator.verifyTypeArgumentsAssignable( + !evaluator.assignTypeArguments( destType, specializedProtocolType, diag, @@ -568,7 +568,7 @@ export function assignModuleToProtocol( const specializedProtocolType = applySolvedTypeVars(genericProtocolType, protocolTypeVarContext) as ClassType; if ( - !evaluator.verifyTypeArgumentsAssignable( + !evaluator.assignTypeArguments( destType, specializedProtocolType, diag, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index ae45cd838..bfcfdb58f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21449,7 +21449,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - function assignTupleTypeArgs( + function assignTupleTypeArguments( destType: ClassType, srcType: ClassType, diag: DiagnosticAddendum | undefined, @@ -21585,7 +21585,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Handle tuple, which supports a variable number of type arguments. if (destType.tupleTypeArguments && curSrcType.tupleTypeArguments) { - return assignTupleTypeArgs( + return assignTupleTypeArguments( destType, curSrcType, diag, @@ -21599,7 +21599,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (destType.typeArguments) { // If the dest type is specialized, make sure the specialized source // type arguments are assignable to the dest type arguments. - return verifyTypeArgumentsAssignable( + return assignTypeArguments( destType, curSrcType, diag, @@ -21649,7 +21649,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return undefined; } - function verifyTypeArgumentsAssignable( + function assignTypeArguments( destType: ClassType, srcType: ClassType, diag: DiagnosticAddendum | undefined, @@ -25510,7 +25510,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions getObjectType, getBuiltInObject, getTypingType, - verifyTypeArgumentsAssignable, + assignTypeArguments, reportMissingTypeArguments, inferReturnTypeIfNecessary, inferTypeParameterVarianceForClass, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index b438738cf..3bbb3dfac 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -612,7 +612,7 @@ export interface TypeEvaluator { getTypingType: (node: ParseNode, symbolName: string) => Type | undefined; inferReturnTypeIfNecessary: (type: Type) => void; inferTypeParameterVarianceForClass: (type: ClassType) => void; - verifyTypeArgumentsAssignable: ( + assignTypeArguments: ( destType: ClassType, srcType: ClassType, diag: DiagnosticAddendum | undefined, From 195b44e0425003f9ffb8137f405297f2dd988d9e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 22 Jun 2023 22:38:22 -0700 Subject: [PATCH 354/525] Moved decorator functionality out of type evaluator into its own module. --- .../src/analyzer/decorators.ts | 581 +++++++++++++++++ .../src/analyzer/typeEvaluator.ts | 592 +----------------- 2 files changed, 605 insertions(+), 568 deletions(-) create mode 100644 packages/pyright-internal/src/analyzer/decorators.ts diff --git a/packages/pyright-internal/src/analyzer/decorators.ts b/packages/pyright-internal/src/analyzer/decorators.ts new file mode 100644 index 000000000..d9027dd2a --- /dev/null +++ b/packages/pyright-internal/src/analyzer/decorators.ts @@ -0,0 +1,581 @@ +/* + * decorators.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * Author: Eric Traut + * + * Provides type evaluation logic that is specific to the application of + * function or class decorators. + */ + +import { appendArray } from '../common/collectionUtils'; +import { DiagnosticRule } from '../common/diagnosticRules'; +import { Localizer } from '../localization/localize'; +import { + ArgumentCategory, + CallNode, + DecoratorNode, + FunctionNode, + ParameterCategory, + ParseNodeType, +} from '../parser/parseNodes'; +import { getDeclaration, getFileInfo } from './analyzerNodeInfo'; +import { + applyDataClassDecorator, + getDataclassDecoratorBehaviors, + validateDataClassTransformDecorator, +} from './dataClasses'; +import { DeclarationType, FunctionDeclaration } from './declaration'; +import { + clonePropertyWithDeleter, + clonePropertyWithSetter, + createProperty, + validatePropertyMethod, +} from './properties'; +import { EvaluatorFlags, FunctionArgument, TypeEvaluator } from './typeEvaluatorTypes'; +import { isPartlyUnknown, isProperty } from './typeUtils'; +import { + ClassType, + ClassTypeFlags, + DataClassBehaviors, + FunctionType, + FunctionTypeFlags, + OverloadedFunctionType, + Type, + UnknownType, + isClassInstance, + isFunction, + isInstantiableClass, + isOverloadedFunction, +} from './types'; + +// Scans through the decorators to find a few built-in decorators +// that affect the function flags. +export function getFunctionFlagsFromDecorators(evaluator: TypeEvaluator, node: FunctionNode, isInClass: boolean) { + const fileInfo = getFileInfo(node); + let flags = FunctionTypeFlags.None; + + if (isInClass) { + // The "__new__" magic method is not an instance method. + // It acts as a static method instead. + if (node.name.value === '__new__') { + flags |= FunctionTypeFlags.ConstructorMethod; + } + + // Several magic methods are treated as class methods implicitly + // by the runtime. Check for these here. + const implicitClassMethods = ['__init_subclass__', '__class_getitem__']; + if (implicitClassMethods.some((name) => node.name.value === name)) { + flags |= FunctionTypeFlags.ClassMethod; + } + } + + for (const decoratorNode of node.decorators) { + // Some stub files (e.g. builtins.pyi) rely on forward declarations of decorators. + let evaluatorFlags = fileInfo.isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; + if (decoratorNode.expression.nodeType !== ParseNodeType.Call) { + evaluatorFlags |= EvaluatorFlags.DoNotSpecialize; + } + + const decoratorTypeResult = evaluator.getTypeOfExpression(decoratorNode.expression, evaluatorFlags); + const decoratorType = decoratorTypeResult.type; + + if (isFunction(decoratorType)) { + if (decoratorType.details.builtInName === 'abstractmethod') { + if (isInClass) { + flags |= FunctionTypeFlags.AbstractMethod; + } + } else if (decoratorType.details.builtInName === 'final') { + flags |= FunctionTypeFlags.Final; + } else if (decoratorType.details.builtInName === 'override') { + flags |= FunctionTypeFlags.Overridden; + } + } else if (isInstantiableClass(decoratorType)) { + if (ClassType.isBuiltIn(decoratorType, 'staticmethod')) { + if (isInClass) { + flags |= FunctionTypeFlags.StaticMethod; + } + } else if (ClassType.isBuiltIn(decoratorType, 'classmethod')) { + if (isInClass) { + flags |= FunctionTypeFlags.ClassMethod; + } + } + } + } + + return flags; +} + +// Transforms the input function type into an output type based on the +// decorator function described by the decoratorNode. +export function applyFunctionDecorator( + evaluator: TypeEvaluator, + inputFunctionType: Type, + undecoratedType: FunctionType, + decoratorNode: DecoratorNode, + functionNode: FunctionNode +): Type { + const fileInfo = getFileInfo(decoratorNode); + + // Some stub files (e.g. builtins.pyi) rely on forward declarations of decorators. + let evaluatorFlags = fileInfo.isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; + if (decoratorNode.expression.nodeType !== ParseNodeType.Call) { + evaluatorFlags |= EvaluatorFlags.DoNotSpecialize; + } + + const decoratorTypeResult = evaluator.getTypeOfExpression(decoratorNode.expression, evaluatorFlags); + const decoratorType = decoratorTypeResult.type; + + // Special-case the "overload" because it has no definition. Older versions of typeshed + // defined "overload" as an object, but newer versions define it as a function. + if ( + (isInstantiableClass(decoratorType) && ClassType.isSpecialBuiltIn(decoratorType, 'overload')) || + (isFunction(decoratorType) && decoratorType.details.builtInName === 'overload') + ) { + if (isFunction(inputFunctionType)) { + inputFunctionType.details.flags |= FunctionTypeFlags.Overloaded; + undecoratedType.details.flags |= FunctionTypeFlags.Overloaded; + return inputFunctionType; + } + } + + if (decoratorNode.expression.nodeType === ParseNodeType.Call) { + const decoratorCallType = evaluator.getTypeOfExpression( + decoratorNode.expression.leftExpression, + evaluatorFlags | EvaluatorFlags.DoNotSpecialize + ).type; + + if (isFunction(decoratorCallType)) { + if ( + decoratorCallType.details.name === '__dataclass_transform__' || + decoratorCallType.details.builtInName === 'dataclass_transform' + ) { + undecoratedType.details.decoratorDataClassBehaviors = validateDataClassTransformDecorator( + evaluator, + decoratorNode.expression + ); + return inputFunctionType; + } + + if (decoratorCallType.details.builtInName === 'deprecated') { + undecoratedType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); + return inputFunctionType; + } + } + + if (isOverloadedFunction(decoratorCallType)) { + if ( + decoratorCallType.overloads.length > 0 && + decoratorCallType.overloads[0].details.builtInName === 'deprecated' + ) { + undecoratedType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); + return inputFunctionType; + } + } + } + + let returnType = getTypeOfDecorator(evaluator, decoratorNode, inputFunctionType); + + // Check for some built-in decorator types with known semantics. + if (isFunction(decoratorType)) { + if (decoratorType.details.builtInName === 'abstractmethod') { + return inputFunctionType; + } + + if (decoratorType.details.builtInName === 'deprecated') { + undecoratedType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); + return inputFunctionType; + } + + // Handle property setters and deleters. + if (decoratorNode.expression.nodeType === ParseNodeType.MemberAccess) { + const baseType = evaluator.getTypeOfExpression( + decoratorNode.expression.leftExpression, + evaluatorFlags | EvaluatorFlags.DoNotSpecialize + ).type; + + if (isProperty(baseType)) { + const memberName = decoratorNode.expression.memberName.value; + if (memberName === 'setter') { + if (isFunction(inputFunctionType)) { + validatePropertyMethod(evaluator, inputFunctionType, decoratorNode); + return clonePropertyWithSetter(evaluator, baseType, inputFunctionType, functionNode); + } else { + return inputFunctionType; + } + } else if (memberName === 'deleter') { + if (isFunction(inputFunctionType)) { + validatePropertyMethod(evaluator, inputFunctionType, decoratorNode); + return clonePropertyWithDeleter(evaluator, baseType, inputFunctionType, functionNode); + } else { + return inputFunctionType; + } + } + } + } + } else if (isOverloadedFunction(decoratorType)) { + if (decoratorType.overloads.length > 0 && decoratorType.overloads[0].details.builtInName === 'deprecated') { + undecoratedType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); + return inputFunctionType; + } + } else if (isInstantiableClass(decoratorType)) { + if (ClassType.isBuiltIn(decoratorType)) { + switch (decoratorType.details.name) { + case 'classmethod': + case 'staticmethod': { + const requiredFlag = + decoratorType.details.name === 'classmethod' + ? FunctionTypeFlags.ClassMethod + : FunctionTypeFlags.StaticMethod; + + // If the function isn't currently a class method or static method + // (which can happen if the function was wrapped in a decorator), + // add the appropriate flag. + if (isFunction(inputFunctionType) && (inputFunctionType.details.flags & requiredFlag) === 0) { + const newFunction = FunctionType.clone(inputFunctionType); + newFunction.details.flags &= ~( + FunctionTypeFlags.ConstructorMethod | + FunctionTypeFlags.StaticMethod | + FunctionTypeFlags.ClassMethod + ); + newFunction.details.flags |= requiredFlag; + return newFunction; + } + + return inputFunctionType; + } + } + } + + // Handle properties and subclasses of properties specially. + if (ClassType.isPropertyClass(decoratorType)) { + if (isFunction(inputFunctionType)) { + validatePropertyMethod(evaluator, inputFunctionType, decoratorNode); + return createProperty(evaluator, decoratorNode, decoratorType, inputFunctionType); + } else if (isClassInstance(inputFunctionType)) { + const boundMethod = evaluator.getBoundMethod(inputFunctionType, '__call__'); + if (boundMethod && isFunction(boundMethod)) { + return createProperty(evaluator, decoratorNode, decoratorType, boundMethod); + } + + return UnknownType.create(); + } + } + } + + if (isFunction(inputFunctionType) && isFunction(returnType)) { + returnType = FunctionType.clone(returnType); + + // Copy the overload flag from the input function type. + if (FunctionType.isOverloaded(inputFunctionType)) { + returnType.details.flags |= FunctionTypeFlags.Overloaded; + } + + // Copy the docstrings from the input function type if the + // decorator didn't have its own docstring. + if (!returnType.details.docString) { + returnType.details.docString = inputFunctionType.details.docString; + } + } + + return returnType; +} + +export function applyClassDecorator( + evaluator: TypeEvaluator, + inputClassType: Type, + originalClassType: ClassType, + decoratorNode: DecoratorNode +): Type { + const fileInfo = getFileInfo(decoratorNode); + let flags = fileInfo.isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; + if (decoratorNode.expression.nodeType !== ParseNodeType.Call) { + flags |= EvaluatorFlags.DoNotSpecialize; + } + const decoratorType = evaluator.getTypeOfExpression(decoratorNode.expression, flags).type; + + if (decoratorNode.expression.nodeType === ParseNodeType.Call) { + const decoratorCallType = evaluator.getTypeOfExpression( + decoratorNode.expression.leftExpression, + flags | EvaluatorFlags.DoNotSpecialize + ).type; + + if (isFunction(decoratorCallType)) { + if ( + decoratorCallType.details.name === '__dataclass_transform__' || + decoratorCallType.details.builtInName === 'dataclass_transform' + ) { + originalClassType.details.classDataClassTransform = validateDataClassTransformDecorator( + evaluator, + decoratorNode.expression + ); + } else if (decoratorCallType.details.builtInName === 'deprecated') { + originalClassType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); + return inputClassType; + } + } + + if (isOverloadedFunction(decoratorCallType)) { + if ( + decoratorCallType.overloads.length > 0 && + decoratorCallType.overloads[0].details.builtInName === 'deprecated' + ) { + originalClassType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); + return inputClassType; + } + } + } + + if (isOverloadedFunction(decoratorType)) { + const dataclassBehaviors = getDataclassDecoratorBehaviors(decoratorType); + if (dataclassBehaviors) { + applyDataClassDecorator( + evaluator, + decoratorNode, + originalClassType, + dataclassBehaviors, + /* callNode */ undefined + ); + return inputClassType; + } + + if (decoratorType.overloads.length > 0 && decoratorType.overloads[0].details.builtInName === 'deprecated') { + originalClassType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); + return inputClassType; + } + } else if (isFunction(decoratorType)) { + if (decoratorType.details.builtInName === 'final') { + originalClassType.details.flags |= ClassTypeFlags.Final; + + // Don't call getTypeOfDecorator for final. We'll hard-code its + // behavior because its function definition results in a cyclical + // dependency between builtins, typing and _typeshed stubs. + return inputClassType; + } + + if (decoratorType.details.builtInName === 'deprecated') { + originalClassType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); + return inputClassType; + } + + if (decoratorType.details.builtInName === 'runtime_checkable') { + originalClassType.details.flags |= ClassTypeFlags.RuntimeCheckable; + + // Don't call getTypeOfDecorator for runtime_checkable. It appears + // frequently in stubs, and it's a waste of time to validate its + // parameters. + return inputClassType; + } + + // Is this a dataclass decorator? + let dataclassBehaviors: DataClassBehaviors | undefined; + let callNode: CallNode | undefined; + + if (decoratorNode.expression.nodeType === ParseNodeType.Call) { + callNode = decoratorNode.expression; + const decoratorCallType = evaluator.getTypeOfExpression( + callNode.leftExpression, + flags | EvaluatorFlags.DoNotSpecialize + ).type; + dataclassBehaviors = getDataclassDecoratorBehaviors(decoratorCallType); + } else { + const decoratorType = evaluator.getTypeOfExpression(decoratorNode.expression, flags).type; + dataclassBehaviors = getDataclassDecoratorBehaviors(decoratorType); + } + + if (dataclassBehaviors) { + applyDataClassDecorator(evaluator, decoratorNode, originalClassType, dataclassBehaviors, callNode); + return inputClassType; + } + } + + return getTypeOfDecorator(evaluator, decoratorNode, inputClassType); +} + +function getTypeOfDecorator(evaluator: TypeEvaluator, node: DecoratorNode, functionOrClassType: Type): Type { + // Evaluate the type of the decorator expression. + let flags = getFileInfo(node).isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; + if (node.expression.nodeType !== ParseNodeType.Call) { + flags |= EvaluatorFlags.DoNotSpecialize; + } + + const decoratorTypeResult = evaluator.getTypeOfExpression(node.expression, flags); + + // Special-case typing.type_check_only. It's used in many stdlib + // functions, and pyright treats it as a no-op, so don't waste + // time evaluating it. + if (isFunction(decoratorTypeResult.type) && decoratorTypeResult.type.details.builtInName === 'type_check_only') { + return functionOrClassType; + } + + // Special-case the combination of a classmethod decorator applied + // to a property. This is allowed in Python 3.9, but it's not reflected + // in the builtins.pyi stub for classmethod. + if ( + isInstantiableClass(decoratorTypeResult.type) && + ClassType.isBuiltIn(decoratorTypeResult.type, 'classmethod') && + isProperty(functionOrClassType) + ) { + return functionOrClassType; + } + + const argList: FunctionArgument[] = [ + { + argumentCategory: ArgumentCategory.Simple, + typeResult: { type: functionOrClassType }, + }, + ]; + + const returnType = + evaluator.validateCallArguments( + node.expression, + argList, + decoratorTypeResult, + /* typeVarContext */ undefined, + /* skipUnknownArgCheck */ true + ).returnType || UnknownType.create(); + + // If the return type is a function that has no annotations + // and just *args and **kwargs parameters, assume that it + // preserves the type of the input function. + if (isFunction(returnType) && !returnType.details.declaredReturnType) { + if ( + !returnType.details.parameters.some((param, index) => { + // Don't allow * or / separators or params with declared types. + if (!param.name || param.hasDeclaredType) { + return true; + } + + // Allow *args or **kwargs parameters. + if (param.category !== ParameterCategory.Simple) { + return false; + } + + // Allow inferred "self" or "cls" parameters. + return index !== 0 || !param.isTypeInferred; + }) + ) { + return functionOrClassType; + } + } + + // If the decorator is completely unannotated and the return type + // includes unknowns, assume that it preserves the type of the input + // function. + if (isPartlyUnknown(returnType)) { + if (isFunction(decoratorTypeResult.type)) { + if ( + !decoratorTypeResult.type.details.parameters.find((param) => param.typeAnnotation !== undefined) && + decoratorTypeResult.type.details.declaredReturnType === undefined + ) { + return functionOrClassType; + } + } + } + + return returnType; +} + +// Given a function node and the function type associated with it, this +// method searches for prior function nodes that are marked as @overload +// and creates an OverloadedFunctionType that includes this function and +// all previous ones. +export function addOverloadsToFunctionType(evaluator: TypeEvaluator, node: FunctionNode, type: FunctionType): Type { + let functionDecl: FunctionDeclaration | undefined; + const decl = getDeclaration(node); + if (decl) { + functionDecl = decl as FunctionDeclaration; + } + const symbolWithScope = evaluator.lookUpSymbolRecursive(node, node.name.value, /* honorCodeFlow */ false); + if (symbolWithScope) { + const decls = symbolWithScope.symbol.getDeclarations(); + + // Find this function's declaration. + const declIndex = decls.findIndex((decl) => decl === functionDecl); + if (declIndex > 0) { + // Evaluate all of the previous function declarations. They will + // be cached. We do it in this order to avoid a stack overflow due + // to recursion if there is a large number (1000's) of overloads. + for (let i = 0; i < declIndex; i++) { + const decl = decls[i]; + if (decl.type === DeclarationType.Function) { + evaluator.getTypeOfFunction(decl.node); + } + } + + let overloadedTypes: FunctionType[] = []; + + // Look at the previous declaration's type. + const prevDecl = decls[declIndex - 1]; + if (prevDecl.type === DeclarationType.Function) { + const prevDeclDeclTypeInfo = evaluator.getTypeOfFunction(prevDecl.node); + if (prevDeclDeclTypeInfo) { + if (isFunction(prevDeclDeclTypeInfo.decoratedType)) { + if (FunctionType.isOverloaded(prevDeclDeclTypeInfo.decoratedType)) { + overloadedTypes.push(prevDeclDeclTypeInfo.decoratedType); + } + } else if (isOverloadedFunction(prevDeclDeclTypeInfo.decoratedType)) { + // If the previous declaration was itself an overloaded function, + // copy the entries from it. + appendArray(overloadedTypes, prevDeclDeclTypeInfo.decoratedType.overloads); + } + } + } + + overloadedTypes.push(type); + + if (overloadedTypes.length === 1) { + return overloadedTypes[0]; + } + + // Apply the implementation's docstring to any overloads that don't + // have their own docstrings. + const implementation = overloadedTypes.find((signature) => !FunctionType.isOverloaded(signature)); + if (implementation?.details.docString) { + overloadedTypes = overloadedTypes.map((overload) => { + if (FunctionType.isOverloaded(overload) && !overload.details.docString) { + return FunctionType.cloneWithDocString(overload, implementation.details.docString); + } + return overload; + }); + } + + // Create a new overloaded type that copies the contents of the previous + // one and adds a new function. + const newOverload = OverloadedFunctionType.create(overloadedTypes); + + const prevOverload = overloadedTypes[overloadedTypes.length - 2]; + const isPrevOverloadAbstract = FunctionType.isAbstractMethod(prevOverload); + const isCurrentOverloadAbstract = FunctionType.isAbstractMethod(type); + + if (isPrevOverloadAbstract !== isCurrentOverloadAbstract) { + evaluator.addDiagnostic( + getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.overloadAbstractMismatch().format({ name: node.name.value }), + node.name + ); + } + + return newOverload; + } + } + + return type; +} + +// Given a @typing.deprecated decorator node, returns either '' or a custom +// deprecation message if one is provided. +function getCustomDeprecationMessage(decorator: DecoratorNode): string { + if ( + decorator.expression.nodeType === ParseNodeType.Call && + decorator.expression.arguments.length > 0 && + decorator.expression.arguments[0].argumentCategory === ArgumentCategory.Simple && + decorator.expression.arguments[0].valueExpression.nodeType === ParseNodeType.StringList && + decorator.expression.arguments[0].valueExpression.strings.length === 1 + ) { + return decorator.expression.arguments[0].valueExpression.strings[0].value; + } + + return ''; +} diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bfcfdb58f..2ff00867d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -37,7 +37,6 @@ import { CaseNode, ClassNode, ConstantNode, - DecoratorNode, DictionaryNode, ExceptNode, ExpressionNode, @@ -93,11 +92,8 @@ import { assignTypeToTypeVar, populateTypeVarContextBasedOnExpectedType } from ' import { createFunctionFromConstructor, validateConstructorArguments } from './constructors'; import { applyDataClassClassBehaviorOverrides, - applyDataClassDecorator, applyDataClassDefaultBehaviors, - getDataclassDecoratorBehaviors, synthesizeDataClassMethods, - validateDataClassTransformDecorator, } from './dataClasses'; import { ClassDeclaration, @@ -113,6 +109,12 @@ import { getNameNodeForDeclaration, resolveAliasDeclaration as resolveAliasDeclarationUtil, } from './declarationUtils'; +import { + addOverloadsToFunctionType, + applyClassDecorator, + applyFunctionDecorator, + getFunctionFlagsFromDecorators, +} from './decorators'; import { createEnumType, getEnumAutoValueType, @@ -137,13 +139,7 @@ import { } from './parameterUtils'; import * as ParseTreeUtils from './parseTreeUtils'; import { assignTypeToPatternTargets, checkForUnusedPattern, narrowTypeBasedOnPattern } from './patternMatching'; -import { - assignProperty, - clonePropertyWithDeleter, - clonePropertyWithSetter, - createProperty, - validatePropertyMethod, -} from './properties'; +import { assignProperty } from './properties'; import { assignClassToProtocol, assignModuleToProtocol } from './protocols'; import { Scope, ScopeType, SymbolWithScope } from './scope'; import * as ScopeUtils from './scopeUtils'; @@ -1609,95 +1605,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return convertToInstance(annotationType); } - function getTypeOfDecorator(node: DecoratorNode, functionOrClassType: Type): Type { - // Evaluate the type of the decorator expression. - let flags = AnalyzerNodeInfo.getFileInfo(node).isStubFile - ? EvaluatorFlags.AllowForwardReferences - : EvaluatorFlags.None; - if (node.expression.nodeType !== ParseNodeType.Call) { - flags |= EvaluatorFlags.DoNotSpecialize; - } - - const decoratorTypeResult = getTypeOfExpression(node.expression, flags); - - // Special-case typing.type_check_only. It's used in many stdlib - // functions, and pyright treats it as a no-op, so don't waste - // time evaluating it. - if ( - isFunction(decoratorTypeResult.type) && - decoratorTypeResult.type.details.builtInName === 'type_check_only' - ) { - return functionOrClassType; - } - - // Special-case the combination of a classmethod decorator applied - // to a property. This is allowed in Python 3.9, but it's not reflected - // in the builtins.pyi stub for classmethod. - if ( - isInstantiableClass(decoratorTypeResult.type) && - ClassType.isBuiltIn(decoratorTypeResult.type, 'classmethod') && - isProperty(functionOrClassType) - ) { - return functionOrClassType; - } - - const argList: FunctionArgument[] = [ - { - argumentCategory: ArgumentCategory.Simple, - typeResult: { type: functionOrClassType }, - }, - ]; - - const returnType = - validateCallArguments( - node.expression, - argList, - decoratorTypeResult, - /* typeVarContext */ undefined, - /* skipUnknownArgCheck */ true - ).returnType || UnknownType.create(); - - // If the return type is a function that has no annotations - // and just *args and **kwargs parameters, assume that it - // preserves the type of the input function. - if (isFunction(returnType) && !returnType.details.declaredReturnType) { - if ( - !returnType.details.parameters.some((param, index) => { - // Don't allow * or / separators or params with declared types. - if (!param.name || param.hasDeclaredType) { - return true; - } - - // Allow *args or **kwargs parameters. - if (param.category !== ParameterCategory.Simple) { - return false; - } - - // Allow inferred "self" or "cls" parameters. - return index !== 0 || !param.isTypeInferred; - }) - ) { - return functionOrClassType; - } - } - - // If the decorator is completely unannotated and the return type - // includes unknowns, assume that it preserves the type of the input - // function. - if (isPartlyUnknown(returnType)) { - if (isFunction(decoratorTypeResult.type)) { - if ( - !decoratorTypeResult.type.details.parameters.find((param) => param.typeAnnotation !== undefined) && - decoratorTypeResult.type.details.declaredReturnType === undefined - ) { - return functionOrClassType; - } - } - } - - return returnType; - } - function canBeFalsy(type: Type, recursionCount = 0): boolean { type = makeTopLevelTypeVarsConcrete(type); @@ -14012,7 +13919,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const enclosingFunction = ParseTreeUtils.getEnclosingFunction(errorNode); if (enclosingFunction) { - const functionFlags = getFunctionFlagsFromDecorators(enclosingFunction, /* isInClass */ true); + const functionFlags = getFunctionFlagsFromDecorators( + evaluatorInterface, + enclosingFunction, + /* isInClass */ true + ); const isInnerFunction = !!ParseTreeUtils.getEnclosingFunction(enclosingFunction); if (!isInnerFunction) { @@ -15641,7 +15552,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions for (let i = node.decorators.length - 1; i >= 0; i--) { const decorator = node.decorators[i]; - const newDecoratedType = applyClassDecorator(decoratedType, classType, decorator); + const newDecoratedType = applyClassDecorator(evaluatorInterface, decoratedType, classType, decorator); const unknownOrAny = containsAnyOrUnknown(newDecoratedType, /* recurse */ false); if (unknownOrAny && isUnknown(unknownOrAny)) { @@ -16018,138 +15929,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - function applyClassDecorator( - inputClassType: Type, - originalClassType: ClassType, - decoratorNode: DecoratorNode - ): Type { - const fileInfo = AnalyzerNodeInfo.getFileInfo(decoratorNode); - let flags = fileInfo.isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; - if (decoratorNode.expression.nodeType !== ParseNodeType.Call) { - flags |= EvaluatorFlags.DoNotSpecialize; - } - const decoratorType = getTypeOfExpression(decoratorNode.expression, flags).type; - - if (decoratorNode.expression.nodeType === ParseNodeType.Call) { - const decoratorCallType = getTypeOfExpression( - decoratorNode.expression.leftExpression, - flags | EvaluatorFlags.DoNotSpecialize - ).type; - - if (isFunction(decoratorCallType)) { - if ( - decoratorCallType.details.name === '__dataclass_transform__' || - decoratorCallType.details.builtInName === 'dataclass_transform' - ) { - originalClassType.details.classDataClassTransform = validateDataClassTransformDecorator( - evaluatorInterface, - decoratorNode.expression - ); - } else if (decoratorCallType.details.builtInName === 'deprecated') { - originalClassType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); - return inputClassType; - } - } - - if (isOverloadedFunction(decoratorCallType)) { - if ( - decoratorCallType.overloads.length > 0 && - decoratorCallType.overloads[0].details.builtInName === 'deprecated' - ) { - originalClassType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); - return inputClassType; - } - } - } - - if (isOverloadedFunction(decoratorType)) { - const dataclassBehaviors = getDataclassDecoratorBehaviors(decoratorType); - if (dataclassBehaviors) { - applyDataClassDecorator( - evaluatorInterface, - decoratorNode, - originalClassType, - dataclassBehaviors, - /* callNode */ undefined - ); - return inputClassType; - } - - if (decoratorType.overloads.length > 0 && decoratorType.overloads[0].details.builtInName === 'deprecated') { - originalClassType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); - return inputClassType; - } - } else if (isFunction(decoratorType)) { - if (decoratorType.details.builtInName === 'final') { - originalClassType.details.flags |= ClassTypeFlags.Final; - - // Don't call getTypeOfDecorator for final. We'll hard-code its - // behavior because its function definition results in a cyclical - // dependency between builtins, typing and _typeshed stubs. - return inputClassType; - } - - if (decoratorType.details.builtInName === 'deprecated') { - originalClassType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); - return inputClassType; - } - - if (decoratorType.details.builtInName === 'runtime_checkable') { - originalClassType.details.flags |= ClassTypeFlags.RuntimeCheckable; - - // Don't call getTypeOfDecorator for runtime_checkable. It appears - // frequently in stubs, and it's a waste of time to validate its - // parameters. - return inputClassType; - } - - // Is this a dataclass decorator? - let dataclassBehaviors: DataClassBehaviors | undefined; - let callNode: CallNode | undefined; - - if (decoratorNode.expression.nodeType === ParseNodeType.Call) { - callNode = decoratorNode.expression; - const decoratorCallType = getTypeOfExpression( - callNode.leftExpression, - flags | EvaluatorFlags.DoNotSpecialize - ).type; - dataclassBehaviors = getDataclassDecoratorBehaviors(decoratorCallType); - } else { - const decoratorType = getTypeOfExpression(decoratorNode.expression, flags).type; - dataclassBehaviors = getDataclassDecoratorBehaviors(decoratorType); - } - - if (dataclassBehaviors) { - applyDataClassDecorator( - evaluatorInterface, - decoratorNode, - originalClassType, - dataclassBehaviors, - callNode - ); - return inputClassType; - } - } - - return getTypeOfDecorator(decoratorNode, inputClassType); - } - - // Given a @typing.deprecated decorator node, returns either '' or a custom - // deprecation message if one is provided. - function getCustomDeprecationMessage(decorator: DecoratorNode): string { - if ( - decorator.expression.nodeType === ParseNodeType.Call && - decorator.expression.arguments.length > 0 && - decorator.expression.arguments[0].argumentCategory === ArgumentCategory.Simple && - decorator.expression.arguments[0].valueExpression.nodeType === ParseNodeType.StringList && - decorator.expression.arguments[0].valueExpression.strings.length === 1 - ) { - return decorator.expression.arguments[0].valueExpression.strings[0].value; - } - - return ''; - } - // Runs any registered "callback hooks" that depend on the specified class type. // This allows us to complete any work that requires dependent classes to be // completed. @@ -16350,7 +16129,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions containingClassType = classInfo.classType; } - let functionFlags = getFunctionFlagsFromDecorators(node, !!containingClassNode); + let functionFlags = getFunctionFlagsFromDecorators(evaluatorInterface, node, !!containingClassNode); if (functionDecl?.isGenerator) { functionFlags |= FunctionTypeFlags.Generator; } @@ -16749,7 +16528,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions for (let i = node.decorators.length - 1; i >= 0; i--) { const decorator = node.decorators[i]; - const newDecoratedType = applyFunctionDecorator(decoratedType, functionType, decorator, node); + const newDecoratedType = applyFunctionDecorator( + evaluatorInterface, + decoratedType, + functionType, + decorator, + node + ); const unknownOrAny = containsAnyOrUnknown(newDecoratedType, /* recurse */ false); if (unknownOrAny && isUnknown(unknownOrAny)) { @@ -16779,7 +16564,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); } - decoratedType = addOverloadsToFunctionType(node, decoratedType); + decoratedType = addOverloadsToFunctionType(evaluatorInterface, node, decoratedType); } writeTypeCache(node.name, { type: functionType }, EvaluatorFlags.None); @@ -17028,335 +16813,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - // Scans through the decorators to find a few built-in decorators - // that affect the function flags. - function getFunctionFlagsFromDecorators(node: FunctionNode, isInClass: boolean) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - let flags = FunctionTypeFlags.None; - - if (isInClass) { - // The "__new__" magic method is not an instance method. - // It acts as a static method instead. - if (node.name.value === '__new__') { - flags |= FunctionTypeFlags.ConstructorMethod; - } - - // Several magic methods are treated as class methods implicitly - // by the runtime. Check for these here. - const implicitClassMethods = ['__init_subclass__', '__class_getitem__']; - if (implicitClassMethods.some((name) => node.name.value === name)) { - flags |= FunctionTypeFlags.ClassMethod; - } - } - - for (const decoratorNode of node.decorators) { - // Some stub files (e.g. builtins.pyi) rely on forward declarations of decorators. - let evaluatorFlags = fileInfo.isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; - if (decoratorNode.expression.nodeType !== ParseNodeType.Call) { - evaluatorFlags |= EvaluatorFlags.DoNotSpecialize; - } - - const decoratorTypeResult = getTypeOfExpression(decoratorNode.expression, evaluatorFlags); - const decoratorType = decoratorTypeResult.type; - - if (isFunction(decoratorType)) { - if (decoratorType.details.builtInName === 'abstractmethod') { - if (isInClass) { - flags |= FunctionTypeFlags.AbstractMethod; - } - } else if (decoratorType.details.builtInName === 'final') { - flags |= FunctionTypeFlags.Final; - } else if (decoratorType.details.builtInName === 'override') { - flags |= FunctionTypeFlags.Overridden; - } - } else if (isInstantiableClass(decoratorType)) { - if (ClassType.isBuiltIn(decoratorType, 'staticmethod')) { - if (isInClass) { - flags |= FunctionTypeFlags.StaticMethod; - } - } else if (ClassType.isBuiltIn(decoratorType, 'classmethod')) { - if (isInClass) { - flags |= FunctionTypeFlags.ClassMethod; - } - } - } - } - - return flags; - } - - // Transforms the input function type into an output type based on the - // decorator function described by the decoratorNode. - function applyFunctionDecorator( - inputFunctionType: Type, - undecoratedType: FunctionType, - decoratorNode: DecoratorNode, - functionNode: FunctionNode - ): Type { - const fileInfo = AnalyzerNodeInfo.getFileInfo(decoratorNode); - - // Some stub files (e.g. builtins.pyi) rely on forward declarations of decorators. - let evaluatorFlags = fileInfo.isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; - if (decoratorNode.expression.nodeType !== ParseNodeType.Call) { - evaluatorFlags |= EvaluatorFlags.DoNotSpecialize; - } - - const decoratorTypeResult = getTypeOfExpression(decoratorNode.expression, evaluatorFlags); - const decoratorType = decoratorTypeResult.type; - - // Special-case the "overload" because it has no definition. Older versions of typeshed - // defined "overload" as an object, but newer versions define it as a function. - if ( - (isInstantiableClass(decoratorType) && ClassType.isSpecialBuiltIn(decoratorType, 'overload')) || - (isFunction(decoratorType) && decoratorType.details.builtInName === 'overload') - ) { - if (isFunction(inputFunctionType)) { - inputFunctionType.details.flags |= FunctionTypeFlags.Overloaded; - undecoratedType.details.flags |= FunctionTypeFlags.Overloaded; - return inputFunctionType; - } - } - - if (decoratorNode.expression.nodeType === ParseNodeType.Call) { - const decoratorCallType = getTypeOfExpression( - decoratorNode.expression.leftExpression, - evaluatorFlags | EvaluatorFlags.DoNotSpecialize - ).type; - - if (isFunction(decoratorCallType)) { - if ( - decoratorCallType.details.name === '__dataclass_transform__' || - decoratorCallType.details.builtInName === 'dataclass_transform' - ) { - undecoratedType.details.decoratorDataClassBehaviors = validateDataClassTransformDecorator( - evaluatorInterface, - decoratorNode.expression - ); - return inputFunctionType; - } - - if (decoratorCallType.details.builtInName === 'deprecated') { - undecoratedType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); - return inputFunctionType; - } - } - - if (isOverloadedFunction(decoratorCallType)) { - if ( - decoratorCallType.overloads.length > 0 && - decoratorCallType.overloads[0].details.builtInName === 'deprecated' - ) { - undecoratedType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); - return inputFunctionType; - } - } - } - - let returnType = getTypeOfDecorator(decoratorNode, inputFunctionType); - - // Check for some built-in decorator types with known semantics. - if (isFunction(decoratorType)) { - if (decoratorType.details.builtInName === 'abstractmethod') { - return inputFunctionType; - } - - if (decoratorType.details.builtInName === 'deprecated') { - undecoratedType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); - return inputFunctionType; - } - - // Handle property setters and deleters. - if (decoratorNode.expression.nodeType === ParseNodeType.MemberAccess) { - const baseType = getTypeOfExpression( - decoratorNode.expression.leftExpression, - evaluatorFlags | EvaluatorFlags.DoNotSpecialize - ).type; - - if (isProperty(baseType)) { - const memberName = decoratorNode.expression.memberName.value; - if (memberName === 'setter') { - if (isFunction(inputFunctionType)) { - validatePropertyMethod(evaluatorInterface, inputFunctionType, decoratorNode); - return clonePropertyWithSetter( - evaluatorInterface, - baseType, - inputFunctionType, - functionNode - ); - } else { - return inputFunctionType; - } - } else if (memberName === 'deleter') { - if (isFunction(inputFunctionType)) { - validatePropertyMethod(evaluatorInterface, inputFunctionType, decoratorNode); - return clonePropertyWithDeleter( - evaluatorInterface, - baseType, - inputFunctionType, - functionNode - ); - } else { - return inputFunctionType; - } - } - } - } - } else if (isOverloadedFunction(decoratorType)) { - if (decoratorType.overloads.length > 0 && decoratorType.overloads[0].details.builtInName === 'deprecated') { - undecoratedType.details.deprecatedMessage = getCustomDeprecationMessage(decoratorNode); - return inputFunctionType; - } - } else if (isInstantiableClass(decoratorType)) { - if (ClassType.isBuiltIn(decoratorType)) { - switch (decoratorType.details.name) { - case 'classmethod': - case 'staticmethod': { - const requiredFlag = - decoratorType.details.name === 'classmethod' - ? FunctionTypeFlags.ClassMethod - : FunctionTypeFlags.StaticMethod; - - // If the function isn't currently a class method or static method - // (which can happen if the function was wrapped in a decorator), - // add the appropriate flag. - if (isFunction(inputFunctionType) && (inputFunctionType.details.flags & requiredFlag) === 0) { - const newFunction = FunctionType.clone(inputFunctionType); - newFunction.details.flags &= ~( - FunctionTypeFlags.ConstructorMethod | - FunctionTypeFlags.StaticMethod | - FunctionTypeFlags.ClassMethod - ); - newFunction.details.flags |= requiredFlag; - return newFunction; - } - - return inputFunctionType; - } - } - } - - // Handle properties and subclasses of properties specially. - if (ClassType.isPropertyClass(decoratorType)) { - if (isFunction(inputFunctionType)) { - validatePropertyMethod(evaluatorInterface, inputFunctionType, decoratorNode); - return createProperty(evaluatorInterface, decoratorNode, decoratorType, inputFunctionType); - } else if (isClassInstance(inputFunctionType)) { - const boundMethod = getBoundMethod(inputFunctionType, '__call__'); - if (boundMethod && isFunction(boundMethod)) { - return createProperty(evaluatorInterface, decoratorNode, decoratorType, boundMethod); - } - - return UnknownType.create(); - } - } - } - - if (isFunction(inputFunctionType) && isFunction(returnType)) { - returnType = FunctionType.clone(returnType); - - // Copy the overload flag from the input function type. - if (FunctionType.isOverloaded(inputFunctionType)) { - returnType.details.flags |= FunctionTypeFlags.Overloaded; - } - - // Copy the docstrings from the input function type if the - // decorator didn't have its own docstring. - if (!returnType.details.docString) { - returnType.details.docString = inputFunctionType.details.docString; - } - } - - return returnType; - } - - // Given a function node and the function type associated with it, this - // method searches for prior function nodes that are marked as @overload - // and creates an OverloadedFunctionType that includes this function and - // all previous ones. - function addOverloadsToFunctionType(node: FunctionNode, type: FunctionType): Type { - let functionDecl: FunctionDeclaration | undefined; - const decl = AnalyzerNodeInfo.getDeclaration(node); - if (decl) { - functionDecl = decl as FunctionDeclaration; - } - const symbolWithScope = lookUpSymbolRecursive(node, node.name.value, /* honorCodeFlow */ false); - if (symbolWithScope) { - const decls = symbolWithScope.symbol.getDeclarations(); - - // Find this function's declaration. - const declIndex = decls.findIndex((decl) => decl === functionDecl); - if (declIndex > 0) { - // Evaluate all of the previous function declarations. They will - // be cached. We do it in this order to avoid a stack overflow due - // to recursion if there is a large number (1000's) of overloads. - for (let i = 0; i < declIndex; i++) { - const decl = decls[i]; - if (decl.type === DeclarationType.Function) { - getTypeOfFunction(decl.node); - } - } - - let overloadedTypes: FunctionType[] = []; - - // Look at the previous declaration's type. - const prevDecl = decls[declIndex - 1]; - if (prevDecl.type === DeclarationType.Function) { - const prevDeclDeclTypeInfo = getTypeOfFunction(prevDecl.node); - if (prevDeclDeclTypeInfo) { - if (isFunction(prevDeclDeclTypeInfo.decoratedType)) { - if (FunctionType.isOverloaded(prevDeclDeclTypeInfo.decoratedType)) { - overloadedTypes.push(prevDeclDeclTypeInfo.decoratedType); - } - } else if (isOverloadedFunction(prevDeclDeclTypeInfo.decoratedType)) { - // If the previous declaration was itself an overloaded function, - // copy the entries from it. - appendArray(overloadedTypes, prevDeclDeclTypeInfo.decoratedType.overloads); - } - } - } - - overloadedTypes.push(type); - - if (overloadedTypes.length === 1) { - return overloadedTypes[0]; - } - - // Apply the implementation's docstring to any overloads that don't - // have their own docstrings. - const implementation = overloadedTypes.find((signature) => !FunctionType.isOverloaded(signature)); - if (implementation?.details.docString) { - overloadedTypes = overloadedTypes.map((overload) => { - if (FunctionType.isOverloaded(overload) && !overload.details.docString) { - return FunctionType.cloneWithDocString(overload, implementation.details.docString); - } - return overload; - }); - } - - // Create a new overloaded type that copies the contents of the previous - // one and adds a new function. - const newOverload = OverloadedFunctionType.create(overloadedTypes); - - const prevOverload = overloadedTypes[overloadedTypes.length - 2]; - const isPrevOverloadAbstract = FunctionType.isAbstractMethod(prevOverload); - const isCurrentOverloadAbstract = FunctionType.isAbstractMethod(type); - - if (isPrevOverloadAbstract !== isCurrentOverloadAbstract) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.overloadAbstractMismatch().format({ name: node.name.value }), - node.name - ); - } - - return newOverload; - } - } - - return type; - } - function createAsyncFunction(node: FunctionNode, functionType: FunctionType): FunctionType { // Clone the original function and replace its return type with an // Awaitable[]. @@ -18572,7 +18028,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // See if the function is a method in a child class. We may be able to // infer the type of the parameter from a method of the same name in // a parent class if it has an annotated type. - const functionFlags = getFunctionFlagsFromDecorators(functionNode, /* isInClass */ true); + const functionFlags = getFunctionFlagsFromDecorators(evaluatorInterface, functionNode, /* isInClass */ true); const inferredParamType = inferParameterType(functionNode, functionFlags, paramIndex, classInfo?.classType); writeTypeCache( @@ -24994,7 +24450,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const decl = getLastTypedDeclaredForSymbol(symbol); if (decl && decl.type === DeclarationType.Function) { - const functionFlags = getFunctionFlagsFromDecorators(decl.node, true); + const functionFlags = getFunctionFlagsFromDecorators(evaluatorInterface, decl.node, true); isAbstract = !!(functionFlags & FunctionTypeFlags.AbstractMethod); } else { // If a symbol is overridden by a non-function, it is no longer From 9444c01fb4da228ff280f2fbc1b5de94e73c3456 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 23 Jun 2023 07:12:01 -0700 Subject: [PATCH 355/525] Fixed typo in comment. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 2ff00867d..d1318878e 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -579,7 +579,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } // This function should be called immediately prior to discarding - // the type evaluator. It forcibly replacing existing cache maps + // the type evaluator. It forcibly replaces existing cache maps // with empty equivalents. This shouldn't be necessary, but there // is apparently a bug in the v8 GC where it is unable to detect // circular references in complex data structures, so it fails From 9c01bf037b9ed60e47731db05c93da6dddf5a4be Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 24 Jun 2023 02:41:15 -0700 Subject: [PATCH 356/525] Added a small optimization to code path that assigns classes with type arguments. --- .../src/analyzer/typeEvaluator.ts | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d1318878e..42cfd35e9 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -20984,6 +20984,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferTypeParameterVarianceForClass(destType); + // If we're enforcing invariance, literal types must match. + if ((flags & AssignTypeFlags.EnforceInvariance) !== 0) { + const srcIsLiteral = srcType.literalValue !== undefined; + const destIsLiteral = destType.literalValue !== undefined; + if (srcIsLiteral !== destIsLiteral) { + return false; + } + } else { + // If the dest is an 'object', it's assignable. + if (ClassType.isBuiltIn(destType, 'object')) { + return true; + } + } + for (let ancestorIndex = inheritanceChain.length - 1; ancestorIndex >= 0; ancestorIndex--) { const ancestorType = inheritanceChain[ancestorIndex]; @@ -20993,11 +21007,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } - // If we've hit an 'object', it's assignable. - if (ClassType.isBuiltIn(ancestorType, 'object')) { - return true; - } - // If this isn't the first time through the loop, specialize // for the next ancestor in the chain. if (ancestorIndex < inheritanceChain.length - 1) { @@ -21066,12 +21075,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } - if ( - destTypeVarContext && - destType.details.typeParameters.length > 0 && - curSrcType.typeArguments && - !destTypeVarContext.isLocked() - ) { + if (destTypeVarContext && curSrcType.typeArguments && !destTypeVarContext.isLocked()) { // Populate the typeVar map with type arguments of the source. const srcTypeArgs = curSrcType.typeArguments; for (let i = 0; i < destType.details.typeParameters.length; i++) { From c286eeca9c8723c9bc515f44ca64fd2425300406 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 25 Jun 2023 08:09:48 +0200 Subject: [PATCH 357/525] Cleaned up some generator test cases. --- .../pyright-internal/src/tests/samples/generator10.py | 5 +++-- packages/pyright-internal/src/tests/samples/generator6.py | 4 ++-- packages/pyright-internal/src/tests/samples/generator7.py | 8 ++++---- packages/pyright-internal/src/tests/samples/generator8.py | 2 +- packages/pyright-internal/src/tests/samples/generator9.py | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/tests/samples/generator10.py b/packages/pyright-internal/src/tests/samples/generator10.py index 30b42e069..8d439850f 100644 --- a/packages/pyright-internal/src/tests/samples/generator10.py +++ b/packages/pyright-internal/src/tests/samples/generator10.py @@ -10,9 +10,10 @@ def __await__(self): yield from (sleep(0.1).__await__()) -async def test(): +async def func1(): x: None = await MyAwaitable() loop = get_event_loop() -loop.run_until_complete(test()) +loop.run_until_complete(func1()) + diff --git a/packages/pyright-internal/src/tests/samples/generator6.py b/packages/pyright-internal/src/tests/samples/generator6.py index 7d0ce6fff..6eb9f54a8 100644 --- a/packages/pyright-internal/src/tests/samples/generator6.py +++ b/packages/pyright-internal/src/tests/samples/generator6.py @@ -4,11 +4,11 @@ from typing import Iterable, AsyncIterable -def foo() -> Iterable[str]: +def func1() -> Iterable[str]: return yield "" -async def afoo() -> AsyncIterable[str]: +async def func2() -> AsyncIterable[str]: return yield "" diff --git a/packages/pyright-internal/src/tests/samples/generator7.py b/packages/pyright-internal/src/tests/samples/generator7.py index db8276bcb..8c80ada6e 100644 --- a/packages/pyright-internal/src/tests/samples/generator7.py +++ b/packages/pyright-internal/src/tests/samples/generator7.py @@ -3,14 +3,14 @@ # statement. -def f(): +def func1(): yield from [1, 2, 3] -def g(): - yield from f() +def func2(): + yield from func1() a: dict[int, int] = {} -for i in g(): +for i in func2(): a[i] = i diff --git a/packages/pyright-internal/src/tests/samples/generator8.py b/packages/pyright-internal/src/tests/samples/generator8.py index 26c3c64a2..1b3afbff5 100644 --- a/packages/pyright-internal/src/tests/samples/generator8.py +++ b/packages/pyright-internal/src/tests/samples/generator8.py @@ -7,6 +7,6 @@ ints2 = [3, 4] -def foo() -> Generator[int, None, None]: +def func1() -> Generator[int, None, None]: yield from ints1 yield from ints2 diff --git a/packages/pyright-internal/src/tests/samples/generator9.py b/packages/pyright-internal/src/tests/samples/generator9.py index c9e41130c..4b19068d7 100644 --- a/packages/pyright-internal/src/tests/samples/generator9.py +++ b/packages/pyright-internal/src/tests/samples/generator9.py @@ -4,7 +4,7 @@ a = lambda: (yield) -def foo(a: bool): +def func1(a: bool): if a: yield 3 yield 5 From ec761d5909e85e1c35378a503814c4184c9c875c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 25 Jun 2023 09:16:02 +0200 Subject: [PATCH 358/525] Added `isGenerator` field to ListComprehensionNode. It's not currently used, but it will likely be useful in the future. --- .../pyright-internal/src/parser/parseNodes.ts | 4 +++- .../pyright-internal/src/parser/parser.ts | 20 +++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/pyright-internal/src/parser/parseNodes.ts b/packages/pyright-internal/src/parser/parseNodes.ts index a4b2a452a..26f5b38a3 100644 --- a/packages/pyright-internal/src/parser/parseNodes.ts +++ b/packages/pyright-internal/src/parser/parseNodes.ts @@ -1268,11 +1268,12 @@ export interface ListComprehensionNode extends ParseNodeBase { readonly nodeType: ParseNodeType.ListComprehension; expression: ParseNode; forIfNodes: ListComprehensionForIfNode[]; + isGenerator: boolean; isParenthesized?: boolean; } export namespace ListComprehensionNode { - export function create(expression: ParseNode) { + export function create(expression: ParseNode, isGenerator: boolean) { const node: ListComprehensionNode = { start: expression.start, length: expression.length, @@ -1280,6 +1281,7 @@ export namespace ListComprehensionNode { id: _nextNodeId++, expression, forIfNodes: [], + isGenerator, }; expression.parent = node; diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index b38db9eeb..bee068e87 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -1571,7 +1571,7 @@ export class Parser { } // comp_iter: comp_for | comp_if - private _tryParseListComprehension(target: ParseNode): ListComprehensionNode | undefined { + private _tryParseListComprehension(target: ParseNode, isGenerator: boolean): ListComprehensionNode | undefined { const compFor = this._tryParseCompForStatement(); if (!compFor) { @@ -1584,7 +1584,7 @@ export class Parser { this._addError(Localizer.Diagnostic.dictExpandIllegalInComprehension(), target); } - const listCompNode = ListComprehensionNode.create(target); + const listCompNode = ListComprehensionNode.create(target, isGenerator); const forIfList: ListComprehensionForIfNode[] = [compFor]; while (true) { @@ -3761,7 +3761,7 @@ export class Parser { this._addError(Localizer.Diagnostic.expectedParamName(), nameExpr); } } else { - const listComp = this._tryParseListComprehension(valueExpr); + const listComp = this._tryParseListComprehension(valueExpr, /* isGenerator */ true); if (listComp) { valueExpr = listComp; } @@ -3979,7 +3979,7 @@ export class Parser { return yieldExpr; } - const exprListResult = this._parseTestListWithComprehension(); + const exprListResult = this._parseTestListWithComprehension(/* isGenerator */ true); const tupleOrExpression = this._makeExpressionOrTuple(exprListResult, /* enclosedInParens */ true); extendRange(tupleOrExpression, startParen); @@ -4004,7 +4004,7 @@ export class Parser { const startBracket = this._getNextToken(); assert(startBracket.type === TokenType.OpenBracket); - const exprListResult = this._parseTestListWithComprehension(); + const exprListResult = this._parseTestListWithComprehension(/* isGenerator */ false); const closeBracket: Token | undefined = this._peekToken(); if (!this._consumeTokenIfType(TokenType.CloseBracket)) { return this._handleExpressionParseError( @@ -4036,13 +4036,13 @@ export class Parser { } } - private _parseTestListWithComprehension(): ListResult { + private _parseTestListWithComprehension(isGenerator: boolean): ListResult { let sawComprehension = false; return this._parseExpressionListGeneric( () => { let expr = this._parseTestOrStarExpression(/* allowAssignmentExpression */ true); - const listComp = this._tryParseListComprehension(expr); + const listComp = this._tryParseListComprehension(expr, isGenerator); if (listComp) { expr = listComp; sawComprehension = true; @@ -4105,7 +4105,7 @@ export class Parser { } else { const keyEntryNode = DictionaryKeyEntryNode.create(keyExpression, valueExpression); let dictEntry: DictionaryEntryNode = keyEntryNode; - const listComp = this._tryParseListComprehension(keyEntryNode); + const listComp = this._tryParseListComprehension(keyEntryNode, /* isGenerator */ false); if (listComp) { dictEntry = listComp; sawListComprehension = true; @@ -4124,7 +4124,7 @@ export class Parser { const listEntryNode = DictionaryExpandEntryNode.create(doubleStarExpression); extendRange(listEntryNode, doubleStar); let expandEntryNode: DictionaryEntryNode = listEntryNode; - const listComp = this._tryParseListComprehension(listEntryNode); + const listComp = this._tryParseListComprehension(listEntryNode, /* isGenerator */ false); if (listComp) { expandEntryNode = listComp; sawListComprehension = true; @@ -4148,7 +4148,7 @@ export class Parser { dictionaryEntries.push(keyEntryNode); this._addError(Localizer.Diagnostic.dictKeyValuePairs(), keyExpression); } else { - const listComp = this._tryParseListComprehension(keyExpression); + const listComp = this._tryParseListComprehension(keyExpression, /* isGenerator */ false); if (listComp) { keyExpression = listComp; sawListComprehension = true; From d689dad11eb4f697f7200ea58be67a0b69fdacd4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 25 Jun 2023 09:31:44 +0200 Subject: [PATCH 359/525] Moved the evaluation of the first iterator in a comprehension expression out of the comprehension scope to better reflect runtime behavior. (#5379) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/binder.ts | 11 ++++++++++- .../pyright-internal/src/tests/typeEvaluator4.test.ts | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index cccad2e4c..af1b35fa8 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -2106,6 +2106,11 @@ export class Binder extends ParseTreeWalker { override visitListComprehension(node: ListComprehensionNode): boolean { const enclosingFunction = ParseTreeUtils.getEnclosingFunction(node); + // The first iterable is executed outside of the comprehension scope. + if (node.forIfNodes.length > 0 && node.forIfNodes[0].nodeType === ParseNodeType.ListComprehensionFor) { + this.walk(node.forIfNodes[0].iterableExpression); + } + this._createNewScope(ScopeType.ListComprehension, this._getNonClassParentScope(), () => { AnalyzerNodeInfo.setScope(node, this._currentScope); @@ -2139,7 +2144,11 @@ export class Binder extends ParseTreeWalker { for (let i = 0; i < node.forIfNodes.length; i++) { const compr = node.forIfNodes[i]; if (compr.nodeType === ParseNodeType.ListComprehensionFor) { - this.walk(compr.iterableExpression); + // We already walked the first iterable expression above, + // so skip it here. + if (i !== 0) { + this.walk(compr.iterableExpression); + } this._createAssignmentTargetFlowNodes( compr.targetExpression, diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 88271ff3d..2a3c4d670 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -108,7 +108,7 @@ test('AssignmentExpr3', () => { test('AssignmentExpr4', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['assignmentExpr4.py']); - TestUtils.validateResults(analysisResults, 17); + TestUtils.validateResults(analysisResults, 16); }); test('AssignmentExpr5', () => { From ca370ef2b8b63ddbbb277e25c650193f3c8392e3 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 25 Jun 2023 19:41:40 +0200 Subject: [PATCH 360/525] Fixed a bug that led to a false negative when a generic class with called its own constructor using its own type parameters as type arguments. This partially addresses https://github.com/microsoft/pyright/issues/5373. (#5381) Co-authored-by: Eric Traut --- .../src/analyzer/constructors.ts | 17 ++++++ .../src/tests/samples/constructor24.py | 7 ++- .../src/tests/samples/constructor26.py | 59 +++++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 8 ++- 4 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/constructor26.py diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index cd94176a0..da8b4e2e5 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -422,6 +422,17 @@ function validateInitMethod( returnType = mapSubtypes(inferenceContext.expectedType, (expectedSubType) => { expectedSubType = transformPossibleRecursiveTypeAlias(expectedSubType); + // If the expected type is the same type as the class and the class + // is already explicitly specialized, don't override the explicit + // specialization. + if ( + isClassInstance(expectedSubType) && + ClassType.isSameGenericClass(type, expectedSubType) && + type.typeArguments + ) { + return undefined; + } + const typeVarContext = new TypeVarContext(getTypeVarScopeId(type)); typeVarContext.addSolveForScope(getTypeVarScopeId(initMethodType)); @@ -664,6 +675,12 @@ function applyExpectedTypeForConstructor( ): Type { let unsolvedTypeVarsAreUnknown = true; + // If this isn't a generic type or it's a type that has already been + // explicitly specialized, the expected type isn't applicable. + if (type.details.typeParameters.length === 0 || type.typeArguments) { + return ClassType.cloneAsInstance(type); + } + if (inferenceContext) { const specializedExpectedType = mapSubtypes(inferenceContext.expectedType, (expectedSubtype) => { return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubtype, typeVarContext); diff --git a/packages/pyright-internal/src/tests/samples/constructor24.py b/packages/pyright-internal/src/tests/samples/constructor24.py index 82ec79b52..603a7363f 100644 --- a/packages/pyright-internal/src/tests/samples/constructor24.py +++ b/packages/pyright-internal/src/tests/samples/constructor24.py @@ -44,7 +44,7 @@ def on_next(self, value: T): class IntContainer(Container[int]): def increment(self): - # This should generate an error if strictParameterNoneValue is true. + # This should generate an error if strictParameterNoneValue is false. self.value += 1 @@ -57,10 +57,10 @@ def method1(self, a: U): Container() Container(123) - # This should generate an error if strictParameterNoneValue is false. + # This should generate an error if strictParameterNoneValue is true. Container[U]() - # This should generate an error if strictParameterNoneValue is false. + # This should generate an error if strictParameterNoneValue is true. Container[U](None) def method2(self): @@ -68,6 +68,7 @@ def method2(self): def func1(obv: Container[T], default_value: T = None) -> None: + # This should generate an error if strictParameterNoneValue is false. obv.on_next(default_value) diff --git a/packages/pyright-internal/src/tests/samples/constructor26.py b/packages/pyright-internal/src/tests/samples/constructor26.py new file mode 100644 index 000000000..479e0e90c --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/constructor26.py @@ -0,0 +1,59 @@ +# This sample tests the case where a generic class with multiple +# type parameters invokes its own constructor and uses its own +# type parameters to specialize the constructed type. + +from typing import Generic, TypeVar + +T = TypeVar("T") +U = TypeVar("U") + +# This test is commented out because it doesn't yet work. +# class Test1(Generic[T, U]): +# def __init__(self, t: T, u: U): +# pass + +# def test1(self, ts: list[T], us: list[U]) -> None: +# # This should generate an error. +# x1: Test1[U, T] = Test1(us, ts) + +# x2: Test1[list[U], list[T]] = Test1(us, ts) + + +class Test2(Generic[T, U]): + def __init__(self): + pass + + def test2(self) -> None: + x1: Test2[U, T] + x2: Test2[T, T] + x3: Test2[T, U] + + x1 = Test2[U, T]() + # This should generate an error. + x2 = Test2[U, T]() + # This should generate an error. + x3 = Test2[U, T]() + + # This should generate an error. + x1 = Test2[T, T]() + x2 = Test2[T, T]() + # This should generate an error. + x3 = Test2[T, T]() + + # This should generate an error. + x1 = Test2[T, U]() + # This should generate an error. + x2 = Test2[T, U]() + x3 = Test2[T, U]() + + +# This test is commented out because it doesn't yet work. +# class Test3(Generic[T, U]): +# def __init__(self, ts: list[T], us: list[U]): +# pass + +# def test3(self, ts: list[T], us: list[U]) -> None: +# # This should generate an error. +# x1: Test3[U, T] = Test3(us, ts) + +# x2: Test3[list[U], list[T]] = Test3(us, ts) diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 5692f2d47..4def4a621 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1484,7 +1484,7 @@ test('Constructor24', () => { configOptions.diagnosticRuleSet.strictParameterNoneValue = true; analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor24.py'], configOptions); - TestUtils.validateResults(analysisResults, 5); + TestUtils.validateResults(analysisResults, 4); }); test('Constructor25', () => { @@ -1493,6 +1493,12 @@ test('Constructor25', () => { TestUtils.validateResults(analysisResults, 1); }); +test('Constructor26', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['constructor26.py']); + + TestUtils.validateResults(analysisResults, 6); +}); + test('InconsistentConstructor1', () => { const configOptions = new ConfigOptions('.'); From 67fe93239f1c1ae6c82c3c2508d2c6d038f0c9f2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 26 Jun 2023 09:02:52 +0200 Subject: [PATCH 361/525] Published 1.1.316 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index d2e84cba2..fe4c04ee9 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.315", + "version": "1.1.316", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index da7c57119..ddb2c4a17 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.315", + "version": "1.1.316", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.315", + "version": "1.1.316", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index a133a20f2..3c1105330 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.315", + "version": "1.1.316", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 0fe20d20a..84a63ee4d 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.315", + "version": "1.1.316", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.315", + "version": "1.1.316", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index c0706ae37..990007a81 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.315", + "version": "1.1.316", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 6fb0d8da6..d5d7c68fb 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.315", + "version": "1.1.316", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.315", + "version": "1.1.316", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 758a249b5..2e8285265 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.315", + "version": "1.1.316", "private": true, "license": "MIT", "author": { From 85c840c7a5cba900801344a1eda83415d240bedf Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 26 Jun 2023 22:27:25 +0200 Subject: [PATCH 362/525] Fixed a regression that caused a false positive when comparing type compatibility between two `Callable` types that involve ParamSpecs. This addresses https://github.com/microsoft/pyright/issues/5384. --- .../src/analyzer/typeEvaluator.ts | 2 +- .../src/tests/samples/paramSpec44.py | 23 +++++++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 5 ++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/paramSpec44.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 42cfd35e9..bc4be4da3 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -23559,7 +23559,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions remainingParams.length > 0 || !srcParamSpec || !assignType( - destParamSpec, + convertToInstance(destParamSpec) as TypeVarType, convertToInstance(srcParamSpec) as TypeVarType, /* diag */ undefined, destTypeVarContext, diff --git a/packages/pyright-internal/src/tests/samples/paramSpec44.py b/packages/pyright-internal/src/tests/samples/paramSpec44.py new file mode 100644 index 000000000..c920761bb --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/paramSpec44.py @@ -0,0 +1,23 @@ +# This sample tests the handling of function assignments that involve +# ParamSpecs. + +from typing import overload, ParamSpec, TypeVar, Callable + +P = ParamSpec("P") +R = TypeVar("R") + + +@overload +def func1(f: Callable[P, R]) -> Callable[P, R]: + ... + + +@overload +def func1() -> Callable[[Callable[P, R]], Callable[P, R]]: + ... + + +def func1( + f: Callable[P, R] | None = None +) -> Callable[P, R] | Callable[[Callable[P, R]], Callable[P, R]]: + ... diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 2a3c4d670..510b50df2 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -1028,6 +1028,11 @@ test('ParamSpec43', () => { TestUtils.validateResults(results, 0); }); +test('ParamSpec44', () => { + const results = TestUtils.typeAnalyzeSampleFiles(['paramSpec44.py']); + TestUtils.validateResults(results, 0); +}); + test('ClassVar1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['classVar1.py']); From 4527c5baa3609755c2aaa54bd29c1738c7e2336b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 26 Jun 2023 22:36:14 +0200 Subject: [PATCH 363/525] Changed '-' command-line feature to support multi-line input. --- packages/pyright-internal/src/pyright.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/pyright-internal/src/pyright.ts b/packages/pyright-internal/src/pyright.ts index 660a1ef89..6bd27dd04 100644 --- a/packages/pyright-internal/src/pyright.ts +++ b/packages/pyright-internal/src/pyright.ts @@ -226,6 +226,7 @@ async function processArgs(): Promise { try { const stdText = fs.readFileSync(process.stdin.fd, 'utf-8'); fileSpecList = stdText + .replace(/[\r\n]/g, ' ') .trim() .split(' ') .map((s) => s.trim()) From 74d8f3c4d273f23a1f6677510e76d2efd11222b3 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:35:29 -0700 Subject: [PATCH 364/525] pull-pylance-with-pyright-1.1.316 (#5401) --- package.json | 2 +- packages/pyright-internal/package.json | 2 +- .../pyright-internal/src/analyzer/program.ts | 106 +++++++++++------- .../src/analyzer/sourceFile.ts | 1 + .../src/analyzer/sourceFileInfoUtils.ts | 85 ++++++++++++-- .../src/backgroundThreadBase.ts | 2 +- .../src/languageServerBase.ts | 1 + .../documentSymbolCollector.ts | 6 +- .../src/tests/chainedSourceFiles.test.ts | 60 +++++++++- .../pyright-internal/src/workspaceFactory.ts | 3 +- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 +- packages/vscode-pyright/package.json | 6 +- 13 files changed, 219 insertions(+), 61 deletions(-) diff --git a/package.json b/package.json index 539814cee..1554af7a1 100644 --- a/package.json +++ b/package.json @@ -39,4 +39,4 @@ "typescript": "~4.4.4", "yargs": "^16.2.0" } -} \ No newline at end of file +} diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 3c1105330..c320c2927 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -42,4 +42,4 @@ "ts-jest": "^27.1.5", "typescript": "~4.4.4" } -} \ No newline at end of file +} diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 7dd85286f..2c19d7751 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -44,7 +44,7 @@ import { ImportResult, ImportType } from './importResult'; import { getDocString } from './parseTreeUtils'; import { Scope } from './scope'; import { IPythonMode, SourceFile } from './sourceFile'; -import { collectImportedByFiles, isUserCode } from './sourceFileInfoUtils'; +import { createChainedByList, isUserCode, verifyNoCyclesInChainedFiles } from './sourceFileInfoUtils'; import { SourceMapper } from './sourceMapper'; import { Symbol } from './symbol'; import { createTracePrinter } from './tracePrinter'; @@ -402,6 +402,7 @@ export class Program { sourceFileInfo.diagnosticsVersion = 0; } + verifyNoCyclesInChainedFiles(sourceFileInfo); sourceFileInfo.sourceFile.setClientVersion(version, contents); } @@ -412,12 +413,15 @@ export class Program { updateChainedFilePath(filePath: string, chainedFilePath: string | undefined) { const sourceFileInfo = this.getSourceFileInfo(filePath); - if (sourceFileInfo) { - sourceFileInfo.chainedSourceFile = chainedFilePath ? this.getSourceFileInfo(chainedFilePath) : undefined; - - sourceFileInfo.sourceFile.markDirty(); - this._markFileDirtyRecursive(sourceFileInfo, new Set()); + if (!sourceFileInfo) { + return; } + + sourceFileInfo.chainedSourceFile = chainedFilePath ? this.getSourceFileInfo(chainedFilePath) : undefined; + sourceFileInfo.sourceFile.markDirty(); + this._markFileDirtyRecursive(sourceFileInfo, new Set()); + + verifyNoCyclesInChainedFiles(sourceFileInfo); } setFileClosed(filePath: string, isTracked?: boolean): FileDiagnostics[] { @@ -1848,7 +1852,7 @@ export class Program { return false; } - private _checkTypes(fileToCheck: SourceFileInfo, token: CancellationToken) { + private _checkTypes(fileToCheck: SourceFileInfo, token: CancellationToken, chainedByList?: SourceFileInfo[]) { return this._logTracker.log(`analyzing: ${fileToCheck.sourceFile.getFilePath()}`, (logState) => { // If the file isn't needed because it was eliminated from the // transitive closure or deleted, skip the file rather than wasting @@ -1871,38 +1875,9 @@ export class Program { if (!this._disableChecker) { // For ipython, make sure we check all its dependent files first since // their results can affect this file's result. - let dependentFiles: ParseResults[] | undefined = undefined; - if (fileToCheck.sourceFile.getIPythonMode() === IPythonMode.CellDocs) { - // Parse file to get up to date dependency graph. - this._parseFile(fileToCheck); - - dependentFiles = []; - const importedByFiles = collectImportedByFiles(fileToCheck); - for (const file of importedByFiles) { - if (!isUserCode(file)) { - continue; - } - - // If the file is already analyzed, it will be no op. - // And make sure we don't dump parse tree and etc while - // recursively calling checker. Otherwise, inner check - // can dump parse tree required by outer check. - const handle = this._cacheManager.pauseTracking(); - try { - this._checkTypes(file, token); - } finally { - handle.dispose(); - } - - const parseResults = file.sourceFile.getParseResults(); - if (parseResults) { - dependentFiles.push(parseResults); - } - } - } + const dependentFiles = this._checkDependentFiles(fileToCheck, chainedByList, token); this._bindFile(fileToCheck); - if (this._preCheckCallback) { const parseResults = fileToCheck.sourceFile.getParseResults(); if (parseResults) { @@ -1928,7 +1903,11 @@ export class Program { if (this._configOptions.diagnosticRuleSet.reportImportCycles !== 'none') { // Don't detect import cycles when doing type stub generation. Some // third-party modules are pretty convoluted. - if (!this._allowedThirdPartyImports) { + // Or if the file is the notebook cell. notebook cell can't have cycles. + if ( + !this._allowedThirdPartyImports && + fileToCheck.sourceFile.getIPythonMode() !== IPythonMode.CellDocs + ) { // We need to force all of the files to be parsed and build // a closure map for the files. const closureMap = new Map(); @@ -1955,6 +1934,57 @@ export class Program { }); } + private _checkDependentFiles( + fileToCheck: SourceFileInfo, + chainedByList: SourceFileInfo[] | undefined, + token: CancellationToken + ) { + if (fileToCheck.sourceFile.getIPythonMode() !== IPythonMode.CellDocs) { + return undefined; + } + + // If we don't have chainedByList, it means none of them are checked yet. + const needToRunChecker = !chainedByList; + + chainedByList = chainedByList ?? createChainedByList(this, fileToCheck); + const index = chainedByList.findIndex((v) => v === fileToCheck); + if (index < 0) { + return undefined; + } + + const startIndex = index + 1; + if (startIndex >= chainedByList.length) { + return undefined; + } + + if (needToRunChecker) { + // If the file is already analyzed, it will be no op. + // And make sure we don't dump parse tree and etc while + // calling checker. Otherwise, checkType can dump parse + // tree required by outer check. + const handle = this._cacheManager.pauseTracking(); + try { + for (let i = chainedByList.length - 1; i >= startIndex; i--) { + this._checkTypes(chainedByList[i], token, chainedByList); + } + } finally { + handle.dispose(); + } + } + + const dependentFiles = []; + for (let i = startIndex; i < chainedByList.length; i++) { + const file = chainedByList[i]; + + const parseResults = file.sourceFile.getParseResults(); + if (parseResults) { + dependentFiles.push(parseResults); + } + } + + return dependentFiles; + } + // Builds a map of files that includes the specified file and all of the files // it imports (recursively) and ensures that all such files. If any of these files // have already been checked (they and their recursive imports have completed the diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index b4587254b..49b55b2dc 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -434,6 +434,7 @@ export class SourceFile { return this.fileSystem.readFileSync(this._filePath, 'utf8'); } catch (error) { + this._console.error(`Error reading file "${this._filePath}": ${error}`); return undefined; } } diff --git a/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts b/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts index bac134e27..13643b687 100644 --- a/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts +++ b/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts @@ -6,26 +6,93 @@ * Functions that operate on SourceFileInfo objects. */ -import { SourceFileInfo } from '../common/extensibility'; +import { assert, fail } from '../common/debug'; +import { ProgramView, SourceFileInfo } from '../common/extensibility'; +import { IPythonMode } from './sourceFile'; export function isUserCode(fileInfo: SourceFileInfo | undefined) { return !!fileInfo && fileInfo.isTracked && !fileInfo.isThirdPartyImport && !fileInfo.isTypeshedFile; } -export function collectImportedByFiles(fileInfo: T): Set { - const importedByFiles = new Set(); - _collectImportedByFiles(fileInfo, importedByFiles); - return importedByFiles; +export function collectImportedByCells(program: ProgramView, fileInfo: T): Set { + // The ImportedBy only works when files are parsed. Due to the lazy-loading nature of our system, + // we can't ensure that all files within the program are parsed, which might lead to an incomplete dependency graph. + // Parsing all regular files goes against our lazy-nature, but for notebook cells, which we open by default, + // it makes sense to force complete parsing since they'll be parsed at some point anyway due to things like + // `semantic tokens` or `checkers`. + _parseAllOpenCells(program); + + const importedByCells = new Set(); + _collectImportedByCells(fileInfo, importedByCells); + return importedByCells; +} + +export function verifyNoCyclesInChainedFiles(fileInfo: T): void { + let nextChainedFile = fileInfo.chainedSourceFile; + if (!nextChainedFile) { + return; + } + + const set = new Set([fileInfo.sourceFile.getFilePath()]); + while (nextChainedFile) { + const path = nextChainedFile.sourceFile.getFilePath(); + if (set.has(path)) { + // We found a cycle. + fail(`Found a cycle in implicit imports files`); + } + + set.add(path); + nextChainedFile = nextChainedFile.chainedSourceFile; + } +} + +export function createChainedByList(program: ProgramView, fileInfo: T): T[] { + // We want to create reverse map of all chained files. + const map = new Map(); + for (const file of program.getSourceFileInfoList()) { + if (!file.chainedSourceFile) { + continue; + } + + map.set(file.chainedSourceFile, file); + } + + const visited = new Set(); + + const chainedByList: SourceFileInfo[] = [fileInfo]; + let current: SourceFileInfo | undefined = fileInfo; + while (current) { + assert(!visited.has(current), 'detected a cycle in chained files'); + visited.add(current); + + current = map.get(current); + if (current) { + chainedByList.push(current); + } + } + + return chainedByList as T[]; +} + +function _parseAllOpenCells(program: ProgramView): void { + for (const file of program.getSourceFileInfoList()) { + if (file.sourceFile.getIPythonMode() !== IPythonMode.CellDocs) { + continue; + } + + program.getParseResults(file.sourceFile.getFilePath()); + program.handleMemoryHighUsage(); + } } -function _collectImportedByFiles(fileInfo: SourceFileInfo, importedByFiles: Set) { +function _collectImportedByCells(fileInfo: SourceFileInfo, importedByCells: Set) { fileInfo.importedBy.forEach((dep) => { - if (importedByFiles.has(dep)) { + if (importedByCells.has(dep)) { // Already visited. return; } - importedByFiles.add(dep); - _collectImportedByFiles(dep, importedByFiles); + importedByCells.add(dep); + _collectImportedByCells(dep, importedByCells); }); } diff --git a/packages/pyright-internal/src/backgroundThreadBase.ts b/packages/pyright-internal/src/backgroundThreadBase.ts index 7632f63a6..66c48ab0d 100644 --- a/packages/pyright-internal/src/backgroundThreadBase.ts +++ b/packages/pyright-internal/src/backgroundThreadBase.ts @@ -51,7 +51,7 @@ export class BackgroundThreadBase { // Stash the base directory into a global variable. (global as any).__rootDirectory = data.rootDirectory; - this.fs = fileSystem ?? new PyrightFileSystem(createFromRealFileSystem(this.getConsole())); + this.fs = new PyrightFileSystem(fileSystem ?? createFromRealFileSystem(this.getConsole())); } protected log(level: LogLevel, msg: string) { diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index fc0062ab7..35b8af1e2 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -368,6 +368,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { this.workspaceFactory = new WorkspaceFactory( this.console, this.uriParser, + /* isWeb */ false, this.createAnalyzerServiceForWorkspace.bind(this), this.isPythonPathImmutable.bind(this), this.onWorkspaceCreated.bind(this) diff --git a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts index aefb7ea2b..bc46152f7 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts @@ -30,7 +30,7 @@ import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; import { ScopeType } from '../analyzer/scope'; import * as ScopeUtils from '../analyzer/scopeUtils'; import { IPythonMode } from '../analyzer/sourceFile'; -import { collectImportedByFiles } from '../analyzer/sourceFileInfoUtils'; +import { collectImportedByCells } from '../analyzer/sourceFileInfoUtils'; import { isStubFile } from '../analyzer/sourceMapper'; import { Symbol } from '../analyzer/symbol'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; @@ -182,7 +182,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { }); const sourceFileInfo = program.getSourceFileInfo(fileInfo.filePath); - if (sourceFileInfo && sourceFileInfo.sourceFile.getIPythonMode() !== IPythonMode.None) { + if (sourceFileInfo && sourceFileInfo.sourceFile.getIPythonMode() === IPythonMode.CellDocs) { // Add declarations from chained source files let builtinsScope = fileInfo.builtinsScope; while (builtinsScope && builtinsScope.type === ScopeType.Module) { @@ -192,7 +192,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { } // Add declarations from files that implicitly import the target file. - const implicitlyImportedBy = collectImportedByFiles(sourceFileInfo); + const implicitlyImportedBy = collectImportedByCells(program, sourceFileInfo); implicitlyImportedBy.forEach((implicitImport) => { const parseTree = program.getParseResults(implicitImport.sourceFile.getFilePath())?.parseTree; if (parseTree) { diff --git a/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts b/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts index 0910fd2ce..4620a5b1e 100644 --- a/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts +++ b/packages/pyright-internal/src/tests/chainedSourceFiles.test.ts @@ -195,6 +195,64 @@ test('chained files with 1000s of files', async () => { assert.strictEqual(initialDiags.length, 0); }); +test('imported by files', async () => { + const code = ` +// @filename: test1.py +//// import [|/*marker*/os|] + +// @filename: test2.py +//// os.path.join() + `; + + const basePath = normalizeSlashes('/'); + const { data, service } = createServiceWithChainedSourceFiles(basePath, code); + analyze(service.test_program); + + const marker = data.markerPositions.get('marker')!; + const range = data.ranges.find((r) => r.marker === marker)!; + + const parseResults = service.getParseResult(marker.fileName)!; + const diagnostics = await service.getDiagnosticsForRange( + marker.fileName, + convertOffsetsToRange(range.pos, range.end, parseResults.tokenizerOutput.lines), + CancellationToken.None + ); + + assert.strictEqual(diagnostics.length, 0); +}); + +test('re ordering cells', async () => { + const code = ` +// @filename: test1.py +//// import [|/*marker*/os|] + +// @filename: test2.py +//// /*bottom*/os.path.join() + `; + + const basePath = normalizeSlashes('/'); + const { data, service } = createServiceWithChainedSourceFiles(basePath, code); + analyze(service.test_program); + + const marker = data.markerPositions.get('marker')!; + const range = data.ranges.find((r) => r.marker === marker)!; + + const bottom = data.markerPositions.get('bottom')!; + + service.updateChainedFilePath(bottom.fileName, undefined); + service.updateChainedFilePath(marker.fileName, bottom.fileName); + analyze(service.test_program); + + const parseResults = service.getParseResult(marker.fileName)!; + const diagnostics = await service.getDiagnosticsForRange( + marker.fileName, + convertOffsetsToRange(range.pos, range.end, parseResults.tokenizerOutput.lines), + CancellationToken.None + ); + + assert.strictEqual(diagnostics.length, 1); +}); + function createServiceWithChainedSourceFiles(basePath: string, code: string) { const service = new AnalyzerService( 'test service', @@ -211,7 +269,7 @@ function createServiceWithChainedSourceFiles(basePath: string, code: string) { let chainedFilePath: string | undefined; for (const file of data.files) { - service.setFileOpened(file.fileName, 1, file.content, IPythonMode.None, chainedFilePath); + service.setFileOpened(file.fileName, 1, file.content, IPythonMode.CellDocs, chainedFilePath); chainedFilePath = file.fileName; } return { data, service }; diff --git a/packages/pyright-internal/src/workspaceFactory.ts b/packages/pyright-internal/src/workspaceFactory.ts index 4d526d31b..d15d7a58f 100644 --- a/packages/pyright-internal/src/workspaceFactory.ts +++ b/packages/pyright-internal/src/workspaceFactory.ts @@ -96,6 +96,7 @@ export class WorkspaceFactory { constructor( private readonly _console: ConsoleInterface, private readonly _uriParser: UriParser, + private readonly _isWeb: boolean, private readonly _createService: ( name: string, rootPath: string, @@ -387,7 +388,7 @@ export class WorkspaceFactory { kinds: string[] ) { // Update the kind based of the uri is local or not - if (!kinds.includes(WellKnownWorkspaceKinds.Default) && !this._uriParser.isLocal(rootUri)) { + if (!kinds.includes(WellKnownWorkspaceKinds.Default) && (!this._uriParser.isLocal(rootUri) || this._isWeb)) { // Web based workspace should be limited. kinds = [...kinds, WellKnownWorkspaceKinds.Limited]; } diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 990007a81..38704f402 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -42,4 +42,4 @@ "pyright": "index.js", "pyright-langserver": "langserver.index.js" } -} \ No newline at end of file +} diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index d5d7c68fb..0422e28af 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -10,14 +10,14 @@ "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", - "vscode-languageclient": "8.1.0", + "vscode-languageclient": "^8.1.0", "vscode-languageserver": "8.1.0", "vscode-languageserver-protocol": "3.17.3" }, "devDependencies": { "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", - "@types/vscode": "~1.78.0", + "@types/vscode": "^1.78.0", "copy-webpack-plugin": "^11.0.0", "detect-indent": "^6.1.0", "esbuild-loader": "^3.0.1", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 2e8285265..2737b2068 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -951,14 +951,14 @@ }, "dependencies": { "vscode-jsonrpc": "8.1.0", - "vscode-languageclient": "8.1.0", + "vscode-languageclient": "^8.1.0", "vscode-languageserver": "8.1.0", "vscode-languageserver-protocol": "3.17.3" }, "devDependencies": { "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", - "@types/vscode": "~1.78.0", + "@types/vscode": "^1.78.0", "copy-webpack-plugin": "^11.0.0", "detect-indent": "^6.1.0", "esbuild-loader": "^3.0.1", @@ -969,4 +969,4 @@ "webpack": "^5.85.0", "webpack-cli": "^5.1.1" } -} \ No newline at end of file +} From c767228a82535b0bdd404480d6ffd5a1d24c8884 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 28 Jun 2023 17:58:43 +0200 Subject: [PATCH 365/525] Improved documentation for "implied else" type narrowing. --- docs/type-concepts-advanced.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/type-concepts-advanced.md b/docs/type-concepts-advanced.md index 533c5e905..cd7a9c395 100644 --- a/docs/type-concepts-advanced.md +++ b/docs/type-concepts-advanced.md @@ -195,7 +195,7 @@ def func4(value: str | int) -> str: If you later added another color to the `Color` enumeration above (e.g. `YELLOW = 4`), Pyright would detect that `func3` no longer exhausts all members of the enumeration and possibly returns `None`, which violates the declared return type. Likewise, if you modify the type of the `value` parameter in `func4` to expand the union, a similar error will be produced. -This “narrowing for implied else” technique works for all narrowing expressions listed above with the exception of simple falsey/truthy statements and type guards. These are excluded because they are not generally used for exhaustive checks, and their inclusion would have a significant impact on analysis performance. +This “narrowing for implied else” technique works for all narrowing expressions listed above with the exception of simple falsey/truthy statements and type guards. It is also limited to simple names and doesn’t work with member access or index expressions. These are excluded because they are not generally used for exhaustive checks, and their inclusion would have a significant impact on analysis performance. ### Narrowing Any From 0a67c65bef4ce95d4de8d2218a0bd875d2fb9230 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 30 Jun 2023 08:39:10 +0200 Subject: [PATCH 366/525] Clarified in documentation that `no_type_check` is not supported. --- docs/mypy-comparison.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/mypy-comparison.md b/docs/mypy-comparison.md index 3152fd38b..8a5634201 100644 --- a/docs/mypy-comparison.md +++ b/docs/mypy-comparison.md @@ -29,6 +29,8 @@ By default, pyright performs type checking for all code regardless of whether it By default, mypy skips all functions or methods that do not have type annotations. This is a common source of confusion for mypy users who are surprised when type violations in unannotated functions go unreported. If the option `--check-untyped-defs` is enabled, mypy performs type checking for all functions and methods. +Mypy supports the `typing.no_type_check` decorator. This decorator does not make sense for language servers, so it is ignored by pyright. + ### Inferred Return Types From c41bc9c0552ee95ca247c64d3a79534a5e2209f2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 8 Jul 2023 12:44:05 +0200 Subject: [PATCH 367/525] Fixed regression where console output was emitted during tests, polluting the test output. --- packages/pyright-internal/src/analyzer/sourceFile.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 49b55b2dc..b4587254b 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -434,7 +434,6 @@ export class SourceFile { return this.fileSystem.readFileSync(this._filePath, 'utf8'); } catch (error) { - this._console.error(`Error reading file "${this._filePath}": ${error}`); return undefined; } } From 6bae2263e19e62871f7d28731593151eb02728d6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 11 Jul 2023 23:54:51 +0200 Subject: [PATCH 368/525] Added special-case support for enum fields that are assigned using an unpacked tuple operation. This addresses #5458. (#5460) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/enums.ts | 52 +++++++++++++++---- .../src/tests/samples/enum1.py | 9 ++++ 2 files changed, 51 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index d6c3cfdd8..7724609ae 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -8,10 +8,23 @@ */ import { assert } from '../common/debug'; -import { ArgumentCategory, ExpressionNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; +import { + ArgumentCategory, + AssignmentNode, + ExpressionNode, + NameNode, + ParseNode, + ParseNodeType, +} from '../parser/parseNodes'; import { getFileInfo } from './analyzerNodeInfo'; import { VariableDeclaration } from './declaration'; -import { getClassFullName, getEnclosingClass, getTypeSourceId } from './parseTreeUtils'; +import { + getClassFullName, + getEnclosingClass, + getParentNodeOfType, + getTypeSourceId, + isNodeContainedWithin, +} from './parseTreeUtils'; import { Symbol, SymbolFlags } from './symbol'; import { isSingleDunderName } from './symbolNameUtils'; import { FunctionArgument, TypeEvaluator } from './typeEvaluatorTypes'; @@ -23,6 +36,7 @@ import { ClassTypeFlags, EnumLiteral, Type, + UnknownType, combineTypes, isClass, isClassInstance, @@ -279,14 +293,24 @@ export function transformTypeForPossibleEnumClass( // variables used within each enum instance. Unless/until there is // a change to this convention and all type checkers and stubs adopt // it, we're stuck with this limitation. - let isMemberOfEnumeration = - (node.parent?.nodeType === ParseNodeType.Assignment && node.parent.leftExpression === node) || - (node.parent?.nodeType === ParseNodeType.TypeAnnotation && - node.parent.valueExpression === node && - node.parent.parent?.nodeType === ParseNodeType.Assignment) || - (getFileInfo(node).isStubFile && - node.parent?.nodeType === ParseNodeType.TypeAnnotation && - node.parent.valueExpression === node); + let isMemberOfEnumeration = false; + let isUnpackedTuple = false; + + const assignmentNode = getParentNodeOfType(node, ParseNodeType.Assignment) as AssignmentNode | undefined; + + if (assignmentNode && isNodeContainedWithin(node, assignmentNode.leftExpression)) { + isMemberOfEnumeration = true; + + if (getParentNodeOfType(node, ParseNodeType.Tuple)) { + isUnpackedTuple = true; + } + } else if ( + getFileInfo(node).isStubFile && + node.parent?.nodeType === ParseNodeType.TypeAnnotation && + node.parent.valueExpression === node + ) { + isMemberOfEnumeration = true; + } // The spec specifically excludes names that start and end with a single underscore. // This also includes dunder names. @@ -313,6 +337,14 @@ export function transformTypeForPossibleEnumClass( valueType = AnyType.create(); } else { valueType = getValueType(); + + // If the LHS is an unpacked tuple, we need to handle this as + // a special case. + if (isUnpackedTuple) { + valueType = + evaluator.getTypeOfIterator({ type: valueType }, /* isAsync */ false, /* errorNode */ undefined) + ?.type ?? UnknownType.create(); + } } // The spec excludes descriptors. diff --git a/packages/pyright-internal/src/tests/samples/enum1.py b/packages/pyright-internal/src/tests/samples/enum1.py index 431e8473e..98f8ed996 100644 --- a/packages/pyright-internal/src/tests/samples/enum1.py +++ b/packages/pyright-internal/src/tests/samples/enum1.py @@ -163,3 +163,12 @@ class TestEnum10(Enum, metaclass=CustomEnumMeta1): def func2(e: type[Enum]): values = {v.value for v in e} reveal_type(values, expected_text="set[Any]") + + +class TestEnum11(Enum): + (A, B, C) = range(3) + + +te11_A = TestEnum11.A +reveal_type(te11_A, expected_text="Literal[TestEnum11.A]") +reveal_type(te11_A.value, expected_text="int") From e1063f112c292f49edde87508baf34486c215ed0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 11 Jul 2023 23:57:12 +0200 Subject: [PATCH 369/525] Issue5453 5454 (#5461) * Fixed bug that resulted in false positive error when calling the same generic function with a ParamSpec multiple times as separate arguments within a call expression. This addresses #5453. * Fixed another ParamSpec-related issue. This addresses #5454. --------- Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 84 +++++++++++-------- .../src/tests/samples/paramSpec45.py | 32 +++++++ .../src/tests/typeEvaluator4.test.ts | 5 ++ 3 files changed, 87 insertions(+), 34 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/paramSpec45.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bc4be4da3..ceab74247 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9367,9 +9367,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Does this function define the param spec, or is it an inner // function nested within another function that defines the param // spec? We need to handle these two cases differently. + const paramSpecScopeId = varArgListParam.type.scopeId; if ( - varArgListParam.type.scopeId === typeResult.type.details.typeVarScopeId || - varArgListParam.type.scopeId === typeResult.type.details.constructorTypeVarScopeId + paramSpecScopeId === typeResult.type.details.typeVarScopeId || + paramSpecScopeId === typeResult.type.details.constructorTypeVarScopeId ) { paramSpecArgList = []; paramSpecTarget = TypeVarType.cloneForParamSpecAccess(varArgListParam.type, /* access */ undefined); @@ -9377,6 +9378,19 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions positionalOnlyLimitIndex = varArgListParamIndex; } } + } else if (typeResult.type.details.paramSpec) { + const paramSpecScopeId = typeResult.type.details.paramSpec.scopeId; + if ( + paramSpecScopeId === typeResult.type.details.typeVarScopeId || + paramSpecScopeId === typeResult.type.details.constructorTypeVarScopeId + ) { + hasParamSpecArgsKwargs = true; + paramSpecArgList = []; + paramSpecTarget = TypeVarType.cloneForParamSpecAccess( + typeResult.type.details.paramSpec, + /* access */ undefined + ); + } } // If there are keyword arguments present after a *args argument, @@ -9994,27 +10008,25 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); trySetActive(argList[argIndex], paramDetails.params[paramInfoIndex].param); } + } else if (paramSpecArgList) { + paramSpecArgList.push(argList[argIndex]); } else if (paramDetails.kwargsIndex !== undefined) { - if (paramSpecArgList) { - paramSpecArgList.push(argList[argIndex]); - } else { - const paramType = paramDetails.params[paramDetails.kwargsIndex].type; - validateArgTypeParams.push({ - paramCategory: ParameterCategory.KwargsDict, - paramType, - requiresTypeVarMatching: requiresSpecialization(paramType), - argument: argList[argIndex], - errorNode: argList[argIndex].valueExpression ?? errorNode, - paramName: paramNameValue, - }); + const paramType = paramDetails.params[paramDetails.kwargsIndex].type; + validateArgTypeParams.push({ + paramCategory: ParameterCategory.KwargsDict, + paramType, + requiresTypeVarMatching: requiresSpecialization(paramType), + argument: argList[argIndex], + errorNode: argList[argIndex].valueExpression ?? errorNode, + paramName: paramNameValue, + }); - // Remember that this parameter has already received a value. - paramMap.set(paramNameValue, { - argsNeeded: 1, - argsReceived: 1, - isPositionalOnly: false, - }); - } + // Remember that this parameter has already received a value. + paramMap.set(paramNameValue, { + argsNeeded: 1, + argsReceived: 1, + isPositionalOnly: false, + }); assert( paramDetails.params[paramDetails.kwargsIndex], 'paramDetails.kwargsIndex params entry is undefined' @@ -10030,20 +10042,24 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions reportedArgError = true; } } else if (argList[argIndex].argumentCategory === ArgumentCategory.Simple) { - if (!isDiagnosticSuppressedForNode(errorNode)) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); - addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - positionParamLimitIndex === 1 - ? Localizer.Diagnostic.argPositionalExpectedOne() - : Localizer.Diagnostic.argPositionalExpectedCount().format({ - expected: positionParamLimitIndex, - }), - argList[argIndex].valueExpression || errorNode - ); + if (paramSpecArgList) { + paramSpecArgList.push(argList[argIndex]); + } else { + if (!isDiagnosticSuppressedForNode(errorNode)) { + const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + positionParamLimitIndex === 1 + ? Localizer.Diagnostic.argPositionalExpectedOne() + : Localizer.Diagnostic.argPositionalExpectedCount().format({ + expected: positionParamLimitIndex, + }), + argList[argIndex].valueExpression || errorNode + ); + } + reportedArgError = true; } - reportedArgError = true; } else if (argList[argIndex].argumentCategory === ArgumentCategory.UnpackedList) { // Handle the case where a *args: P.args is passed as an argument to // a function that accepts a ParamSpec. diff --git a/packages/pyright-internal/src/tests/samples/paramSpec45.py b/packages/pyright-internal/src/tests/samples/paramSpec45.py new file mode 100644 index 000000000..ca1923535 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/paramSpec45.py @@ -0,0 +1,32 @@ +# This sample tests the case where the same function that uses a ParamSpec +# is called multiple times as arguments to the same call. + +from typing import Callable, ParamSpec + +P = ParamSpec("P") + + +def func1(func: Callable[P, object], *args: P.args, **kwargs: P.kwargs) -> object: + ... + + +def func2(x: str) -> int: + ... + + +def func3(y: str) -> int: + ... + + +print(func1(func2, x="..."), func1(func3, y="...")) + + +def func4(fn: Callable[P, int], *args: P.args, **kwargs: P.kwargs) -> int: + return fn(*args, **kwargs) + + +def func5(x: int, y: int) -> int: + return x + y + + +func5(func4(lambda x: x, 1), func4(lambda x, y: x + y, 2, 3)) diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 510b50df2..4d1017757 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -1033,6 +1033,11 @@ test('ParamSpec44', () => { TestUtils.validateResults(results, 0); }); +test('ParamSpec45', () => { + const results = TestUtils.typeAnalyzeSampleFiles(['paramSpec45.py']); + TestUtils.validateResults(results, 0); +}); + test('ClassVar1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['classVar1.py']); From 1c6cd1c06ee6018e0ba10a9dc7f5de097abf6726 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 00:00:08 +0200 Subject: [PATCH 370/525] Extended support for TypedDict discrimination by literal field so it supports `==` and `!=` with values that are unions of literal types. This addresses #5435. (#5464) Co-authored-by: Eric Traut --- .../src/analyzer/typeGuards.ts | 29 ++++++-- .../tests/samples/typeNarrowingTypedDict2.py | 67 +++++++++++++++---- 2 files changed, 77 insertions(+), 19 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 5375f7d31..579a2f63c 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -354,7 +354,7 @@ export function getTypeNarrowingCallback( const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression); const rightType = rightTypeResult.type; - if (isClassInstance(rightType) && rightType.literalValue !== undefined) { + if (isLiteralTypeOrUnion(rightType)) { return (type: Type) => { let narrowedType: Type; @@ -1849,7 +1849,7 @@ export function narrowTypeForDiscriminatedDictEntryComparison( evaluator: TypeEvaluator, referenceType: Type, indexLiteralType: ClassType, - literalType: ClassType, + literalType: Type, isPositiveTest: boolean ): Type { let canNarrow = true; @@ -1861,9 +1861,25 @@ export function narrowTypeForDiscriminatedDictEntryComparison( if (tdEntry && isLiteralTypeOrUnion(tdEntry.valueType)) { if (isPositiveTest) { - return evaluator.assignType(tdEntry.valueType, literalType) ? subtype : undefined; + let foundMatch = false; + + doForEachSubtype(literalType, (literalSubtype) => { + if (evaluator.assignType(tdEntry.valueType, literalSubtype)) { + foundMatch = true; + } + }); + + return foundMatch ? subtype : undefined; } else { - return evaluator.assignType(literalType, tdEntry.valueType) ? undefined : subtype; + let foundNonMatch = false; + + doForEachSubtype(literalType, (literalSubtype) => { + if (!evaluator.assignType(literalSubtype, tdEntry.valueType)) { + foundNonMatch = true; + } + }); + + return foundNonMatch ? subtype : undefined; } } } @@ -1879,7 +1895,7 @@ export function narrowTypeForDiscriminatedTupleComparison( evaluator: TypeEvaluator, referenceType: Type, indexLiteralType: ClassType, - literalType: ClassType, + literalType: Type, isPositiveTest: boolean ): Type { let canNarrow = true; @@ -1889,7 +1905,8 @@ export function narrowTypeForDiscriminatedTupleComparison( isClassInstance(subtype) && ClassType.isTupleClass(subtype) && !isUnboundedTupleClass(subtype) && - typeof indexLiteralType.literalValue === 'number' + typeof indexLiteralType.literalValue === 'number' && + isClassInstance(literalType) ) { const indexValue = indexLiteralType.literalValue; if (subtype.tupleTypeArguments && indexValue >= 0 && indexValue < subtype.tupleTypeArguments.length) { diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict2.py b/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict2.py index f1e397729..ca02090a0 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict2.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict2.py @@ -4,54 +4,95 @@ from typing import Literal, TypedDict -class NewJobEvent(TypedDict): +class Event1(TypedDict): tag: Literal["new-job"] job_name: str config_file_path: str -class CancelJobEvent(TypedDict): +class Event2(TypedDict): tag: Literal[2] job_id: int -class OtherEvent(TypedDict): +class Event3(TypedDict): tag: Literal["other-job"] message: str -Event = NewJobEvent | CancelJobEvent | OtherEvent +Event = Event1 | Event2 | Event3 def process_event1(event: Event) -> None: if event["tag"] == "new-job": - reveal_type(event, expected_text="NewJobEvent") + reveal_type(event, expected_text="Event1") event["job_name"] elif event["tag"] == 2: - reveal_type(event, expected_text="CancelJobEvent") + reveal_type(event, expected_text="Event2") event["job_id"] else: - reveal_type(event, expected_text="OtherEvent") + reveal_type(event, expected_text="Event3") event["message"] def process_event2(event: Event) -> None: if event["tag"] is "new-job": - reveal_type(event, expected_text="NewJobEvent") + reveal_type(event, expected_text="Event1") event["job_name"] elif event["tag"] is 2: - reveal_type(event, expected_text="CancelJobEvent") + reveal_type(event, expected_text="Event2") event["job_id"] else: - reveal_type(event, expected_text="OtherEvent") + reveal_type(event, expected_text="Event3") event["message"] class ClassA: - job_event: NewJobEvent | OtherEvent + job_event: Event1 | Event3 def method1(self): if self.job_event["tag"] == "new-job": - reveal_type(self.job_event, expected_text="NewJobEvent") + reveal_type(self.job_event, expected_text="Event1") else: - reveal_type(self.job_event, expected_text="OtherEvent") + reveal_type(self.job_event, expected_text="Event3") + + +class A(TypedDict): + name: Literal["A"] + a: str + + +class BC(TypedDict): + name: Literal["B", "C"] + b: str + + +AorBC = A | BC + + +def func1(val: AorBC, key: Literal["C", "D"]): + if val["name"] == key: + reveal_type(val, expected_text="BC") + else: + reveal_type(val, expected_text="A | BC") + + +def func2(val: AorBC, key: Literal["A", "D"]): + if val["name"] == key: + reveal_type(val, expected_text="A") + else: + reveal_type(val, expected_text="A | BC") + + +def func3(val: AorBC, key: Literal["A", "C"]): + if val["name"] == key: + reveal_type(val, expected_text="A | BC") + else: + reveal_type(val, expected_text="A | BC") + + +def func4(val: AorBC, key: Literal["B", "C"]): + if val["name"] == key: + reveal_type(val, expected_text="BC") + else: + reveal_type(val, expected_text="A | BC") From c2094c0047dbe7b1ec922bc7cadcc91b974fce9b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 00:03:57 +0200 Subject: [PATCH 371/525] Fixed a bug that resulted in incorrect hover results for identifiers used as keys or values within a dictionary expression. This addresses #5422. (#5466) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index ceab74247..bd662448b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -12571,12 +12571,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (entryInferenceContext && !valueTypeResult.typeErrors) { - valueTypeResult.type = - inferTypeArgFromExpectedEntryType( - entryInferenceContext, - [valueTypeResult.type], - !isValueTypeInvariant - ) ?? valueTypeResult.type; + const fromExpectedType = inferTypeArgFromExpectedEntryType( + entryInferenceContext, + [valueTypeResult.type], + !isValueTypeInvariant + ); + + if (fromExpectedType) { + valueTypeResult = { ...valueTypeResult, type: fromExpectedType }; + } } if (expectedDiagAddendum && valueTypeResult.expectedTypeDiagAddendum) { @@ -12609,19 +12612,22 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } const entryInferenceContext = makeInferenceContext(expectedType); - const unexpandedTypeResult = getTypeOfExpression( + let unexpandedTypeResult = getTypeOfExpression( entryNode.expandExpression, /* flags */ undefined, entryInferenceContext ); if (entryInferenceContext && !unexpandedTypeResult.typeErrors) { - unexpandedTypeResult.type = - inferTypeArgFromExpectedEntryType( - entryInferenceContext, - [unexpandedTypeResult.type], - !isValueTypeInvariant - ) ?? unexpandedTypeResult.type; + const fromExpectedType = inferTypeArgFromExpectedEntryType( + entryInferenceContext, + [unexpandedTypeResult.type], + !isValueTypeInvariant + ); + + if (fromExpectedType) { + unexpandedTypeResult = { ...unexpandedTypeResult, type: fromExpectedType }; + } } if (unexpandedTypeResult.isIncomplete) { From af48e92690e0751fbab7de57f74a36b8090bf645 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 00:04:54 +0200 Subject: [PATCH 372/525] Fixed recent regression in the synthesized TypedDict `get` method, which resulted in a false positive error when using strict mode. This addresses #5452. (#5462) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/typedDicts.ts | 6 +----- packages/pyright-internal/src/tests/samples/typedDict12.py | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index a657c4048..f16062e12 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -554,11 +554,7 @@ export function synthesizeTypedDictClassMethods( ) ); getOverloads.push( - createGetMethod( - literalStringInstance, - /* valueType */ UnknownType.create(), - /* includeDefault */ true - ) + createGetMethod(literalStringInstance, /* valueType */ AnyType.create(), /* includeDefault */ true) ); } } diff --git a/packages/pyright-internal/src/tests/samples/typedDict12.py b/packages/pyright-internal/src/tests/samples/typedDict12.py index 71a8f5247..96a68ab36 100644 --- a/packages/pyright-internal/src/tests/samples/typedDict12.py +++ b/packages/pyright-internal/src/tests/samples/typedDict12.py @@ -64,7 +64,7 @@ def func1(a: TD3, b: TD4, c: C, s: str) -> int | None: a3 = a.get("bar") reveal_type(a3, expected_text="None") a4 = a.get("bar", 1.0) - reveal_type(a4, expected_text="Unknown | float") + reveal_type(a4, expected_text="Any | float") a5 = a.get("baz") reveal_type(a5, expected_text="int | None") a6 = a.get("baz", 1.0) @@ -94,7 +94,7 @@ def func1(a: TD3, b: TD4, c: C, s: str) -> int | None: c3 = c.get("bar") reveal_type(c3, expected_text="str | None") c4 = c.get("bar", 1.0) - reveal_type(c4, expected_text="Unknown | float | str") + reveal_type(c4, expected_text="Any | float | str") c5 = c.get("baz") reveal_type(c5, expected_text="int | Any | None") c6 = c.get("baz", 1.0) From 97917863143579fbf5d315eae31712eee63dedf1 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 00:06:03 +0200 Subject: [PATCH 373/525] Removed limitation that files specified on the command line or in "include" directives end in ".py" or ".pyi". This addresses #5441. (#5463) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/service.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 28ae4f6f0..1b6b967eb 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -1177,15 +1177,10 @@ export class AnalyzerService { include.forEach((includeSpec) => { if (!FileSpec.isInPath(includeSpec.wildcardRoot, exclude)) { let foundFileSpec = false; - let isFileIncluded = true; const stat = tryStat(this.fs, includeSpec.wildcardRoot); if (stat?.isFile()) { - if (FileSpec.matchesIncludeFileRegex(includeSpec.wildcardRoot)) { - results.push(includeSpec.wildcardRoot); - } else { - isFileIncluded = false; - } + results.push(includeSpec.wildcardRoot); foundFileSpec = true; } else if (stat?.isDirectory()) { visitDirectory(includeSpec.wildcardRoot, includeSpec.regExp, includeSpec.hasDirectoryWildcard); @@ -1194,8 +1189,6 @@ export class AnalyzerService { if (!foundFileSpec) { this._console.error(`File or directory "${includeSpec.wildcardRoot}" does not exist.`); - } else if (!isFileIncluded) { - this._console.error(`File "${includeSpec.wildcardRoot}" is not a Python source file.`); } } }); From bc89399c9bcb602ec0179eb2a11d160ac2924a20 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 00:09:23 +0200 Subject: [PATCH 374/525] Fixed a bug that results in incorrect type evaluation for a higher-order function involving a ParamSpec. This addresses #5409. (#5469) Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 1 + .../src/analyzer/typeEvaluator.ts | 2 +- .../src/tests/samples/solverHigherOrder8.py | 27 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 +++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/solverHigherOrder8.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 7f7d7becc..973aec14c 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -807,6 +807,7 @@ function assignTypeToParamSpec( FunctionType.addParameter(newFunction, param); }); newFunction.details.typeVarScopeId = srcType.details.typeVarScopeId; + newFunction.details.paramSpecTypeVarScopeId = srcType.details.paramSpecTypeVarScopeId; newFunction.details.docString = srcType.details.docString; newFunction.details.paramSpec = srcType.details.paramSpec; typeVarContext.setTypeVarType(destType, newFunction); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bd662448b..c8b8f1b0b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10968,7 +10968,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); - const srcTypeVarContext = new TypeVarContext(paramSpecType.details.typeVarScopeId); + const srcTypeVarContext = new TypeVarContext(getTypeVarScopeIds(paramSpecType)); let reportedArgError = false; // Build a map of all named parameters. diff --git a/packages/pyright-internal/src/tests/samples/solverHigherOrder8.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder8.py new file mode 100644 index 000000000..746d62924 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/solverHigherOrder8.py @@ -0,0 +1,27 @@ +# This sample tests the case where a higher-order function involves a ParamSpec. + +from typing import TypeVar, Callable, Protocol, ParamSpec + +P = ParamSpec("P") +R = TypeVar("R", covariant=True) +T = TypeVar("T") + + +class Proto1(Protocol[P, R]): + @classmethod + def collect(cls, *args: P.args, **kwargs: P.kwargs) -> R: + ... + + +class Class1: + @classmethod + def collect(cls, n: type[T]) -> Callable[[Callable[[T], int]], None]: + ... + + +def func1(a: Proto1[P, R], *args: P.args, **kwargs: P.kwargs) -> R: + ... + + +reveal_type(func1(Class1, float), expected_text="((float) -> int) -> None") +reveal_type(func1(Class1, int), expected_text="((int) -> int) -> None") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index fd4616847..26fd93789 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -719,6 +719,12 @@ test('SolverHigherOrder7', () => { TestUtils.validateResults(analysisResults, 0); }); +test('SolverHigherOrder8', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverHigherOrder8.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('SolverLiteral1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverLiteral1.py']); From 72491ca6915e2b997cec4486680ffa805e2a67be Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 00:10:49 +0200 Subject: [PATCH 375/525] Modified diagnostic checks for list, dictionary, and tuple literal expressions within annotation expressions so they are emitted as part of the `reportGeneralTypeIssue` diagnostic rule rather than unconditionally. This addresses https://github.com/microsoft/pylance-release/issues/4587. (#5471) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 77 ++++++++++++++++++- .../pyright-internal/src/parser/parser.ts | 36 +-------- .../src/tests/typeEvaluator4.test.ts | 2 +- 3 files changed, 76 insertions(+), 39 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index c8b8f1b0b..1b51ec9bc 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1038,7 +1038,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions case ParseNodeType.List: case ParseNodeType.Set: { - typeResult = getTypeOfListOrSet(node, inferenceContext); + typeResult = getTypeOfListOrSet(node, flags, inferenceContext); break; } @@ -1063,7 +1063,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case ParseNodeType.Dictionary: { - typeResult = getTypeOfDictionary(node, inferenceContext); + typeResult = getTypeOfDictionary(node, flags, inferenceContext); break; } @@ -7304,6 +7304,23 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions flags: EvaluatorFlags, inferenceContext: InferenceContext | undefined ): TypeResult { + if ( + (flags & EvaluatorFlags.ExpectingTypeAnnotation) !== 0 && + node.parent?.nodeType !== ParseNodeType.Argument + ) { + // This is allowed inside of an index trailer, specifically + // to support Tuple[()], which is the documented way to annotate + // a zero-length tuple. + const diag = new DiagnosticAddendum(); + diag.addMessage(Localizer.DiagnosticAddendum.useTupleInstead()); + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.tupleInAnnotation() + diag.getString(), + node + ); + } + if ( (flags & EvaluatorFlags.ExpectingInstantiableType) !== 0 && node.expressions.length === 0 && @@ -7528,6 +7545,21 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ): TypeResult { let baseTypeResult: TypeResult | undefined; + if ( + (flags & EvaluatorFlags.ExpectingTypeAnnotation) !== 0 && + node.leftExpression.nodeType === ParseNodeType.Name && + node.leftExpression.value === 'type' + ) { + const diag = new DiagnosticAddendum(); + diag.addMessage(Localizer.DiagnosticAddendum.useTypeInstead()); + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typeCallNotAllowed() + diag.getString(), + node + ); + } + // Handle immediate calls of lambdas specially. if (node.leftExpression.nodeType === ParseNodeType.Lambda) { baseTypeResult = getTypeOfLambdaForCall(node, inferenceContext); @@ -12251,7 +12283,25 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return returnType; } - function getTypeOfDictionary(node: DictionaryNode, inferenceContext: InferenceContext | undefined): TypeResult { + function getTypeOfDictionary( + node: DictionaryNode, + flags: EvaluatorFlags, + inferenceContext: InferenceContext | undefined + ): TypeResult { + if ( + (flags & EvaluatorFlags.ExpectingTypeAnnotation) !== 0 && + node.parent?.nodeType !== ParseNodeType.Argument + ) { + const diag = new DiagnosticAddendum(); + diag.addMessage(Localizer.DiagnosticAddendum.useDictInstead()); + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.dictInAnnotation() + diag.getString(), + node + ); + } + // If the expected type is a union, analyze for each of the subtypes // to find one that matches. let effectiveExpectedType = inferenceContext?.expectedType; @@ -12730,7 +12780,26 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return isIncomplete; } - function getTypeOfListOrSet(node: ListNode | SetNode, inferenceContext: InferenceContext | undefined): TypeResult { + function getTypeOfListOrSet( + node: ListNode | SetNode, + flags: EvaluatorFlags, + inferenceContext: InferenceContext | undefined + ): TypeResult { + if ( + (flags & EvaluatorFlags.ExpectingTypeAnnotation) !== 0 && + node.nodeType === ParseNodeType.List && + node.parent?.nodeType !== ParseNodeType.Argument + ) { + const diag = new DiagnosticAddendum(); + diag.addMessage(Localizer.DiagnosticAddendum.useListInstead()); + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.listInAnnotation() + diag.getString(), + node + ); + } + // If the expected type is a union, recursively call for each of the subtypes // to find one that matches. let effectiveExpectedType = inferenceContext?.expectedType; diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index bee068e87..341a6d10d 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -3436,14 +3436,6 @@ export class Parser { this._isParsingTypeAnnotation = wasParsingTypeAnnotation; - if (this._isParsingTypeAnnotation) { - const diag = new DiagnosticAddendum(); - if (atomExpression.nodeType === ParseNodeType.Name && atomExpression.value === 'type') { - diag.addMessage(Localizer.DiagnosticAddendum.useTypeInstead()); - this._addError(Localizer.Diagnostic.typeCallNotAllowed() + diag.getString(), callNode); - } - } - atomExpression = callNode; if (atomExpression.maxChildDepth !== undefined && atomExpression.maxChildDepth >= maxChildNodeDepth) { @@ -3818,18 +3810,6 @@ export class Parser { if (nextToken.type === TokenType.OpenParenthesis) { const possibleTupleNode = this._parseTupleAtom(); - if ( - possibleTupleNode.nodeType === ParseNodeType.Tuple && - this._isParsingTypeAnnotation && - !this._isParsingIndexTrailer - ) { - // This is allowed inside of an index trailer, specifically - // to support Tuple[()], which is the documented way to annotate - // a zero-length tuple. - const diag = new DiagnosticAddendum(); - diag.addMessage(Localizer.DiagnosticAddendum.useTupleInstead()); - this._addError(Localizer.Diagnostic.tupleInAnnotation() + diag.getString(), possibleTupleNode); - } if ( possibleTupleNode.nodeType === ParseNodeType.UnaryOperation || @@ -3853,21 +3833,9 @@ export class Parser { return possibleTupleNode; } else if (nextToken.type === TokenType.OpenBracket) { - const listNode = this._parseListAtom(); - if (this._isParsingTypeAnnotation && !this._isParsingIndexTrailer) { - const diag = new DiagnosticAddendum(); - diag.addMessage(Localizer.DiagnosticAddendum.useListInstead()); - this._addError(Localizer.Diagnostic.listInAnnotation() + diag.getString(), listNode); - } - return listNode; + return this._parseListAtom(); } else if (nextToken.type === TokenType.OpenCurlyBrace) { - const dictNode = this._parseDictionaryOrSetAtom(); - if (this._isParsingTypeAnnotation && !this._isParsingIndexTrailer) { - const diag = new DiagnosticAddendum(); - diag.addMessage(Localizer.DiagnosticAddendum.useDictInstead()); - this._addError(Localizer.Diagnostic.dictInAnnotation() + diag.getString(), dictNode); - } - return dictNode; + return this._parseDictionaryOrSetAtom(); } if (nextToken.type === TokenType.Keyword) { diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 4d1017757..241a88fa9 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -910,7 +910,7 @@ test('ParamSpec19', () => { test('ParamSpec20', () => { const results = TestUtils.typeAnalyzeSampleFiles(['paramSpec20.py']); - TestUtils.validateResults(results, 6); + TestUtils.validateResults(results, 8); }); test('ParamSpec21', () => { From f9796dd5cd6806f6e7e2b0efd1a27786521b35f4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 00:22:35 +0200 Subject: [PATCH 376/525] Fixed bug that led to a confusing hover type for the return result of an async generator function. This addresses #5411. (#5468) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1b51ec9bc..c22ffb028 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -16919,6 +16919,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Note that the inferred type, once lazily computed, needs to wrap the // resulting type in an awaitable. + functionType.details.flags |= FunctionTypeFlags.WrapReturnTypeInAwait; awaitableFunctionType.details.flags |= FunctionTypeFlags.WrapReturnTypeInAwait; return awaitableFunctionType; From 8b38b5dbf902794aef63449890311f040d2cfe57 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 00:24:14 +0200 Subject: [PATCH 377/525] Added support for deferred annotation evaluation for `Annotated` type arguments beyond the first one. This addresses https://github.com/microsoft/pylance-release/issues/4565. (#5472) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/binder.ts | 27 ++++++++++++- .../src/analyzer/typeEvaluator.ts | 39 +++++++++++++------ .../src/tests/samples/annotated2.py | 18 +++++++++ .../src/tests/typeEvaluator4.test.ts | 6 +++ 4 files changed, 77 insertions(+), 13 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/annotated2.py diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index af1b35fa8..336d53ba6 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -229,6 +229,9 @@ export class Binder extends ParseTreeWalker { // Are we currently binding code located within an except block? private _isInExceptSuite = false; + // Are we currently walking the type arguments to an Annotated type annotation? + private _isInAnnotatedAnnotation = false; + // A list of names assigned to __slots__ within a class. private _dunderSlotsEntries: StringListNode[] | undefined; @@ -651,7 +654,12 @@ export class Binder extends ParseTreeWalker { // and this can lead to a performance issue when walking the control // flow graph if we need to evaluate every decorator. if (!ParseTreeUtils.isNodeContainedWithinNodeType(node, ParseNodeType.Decorator)) { - this._createCallFlowNode(node); + // Skip if we're in an 'Annotated' annotation because this creates + // problems for "No Return" return type analysis when annotation + // evaluation is deferred. + if (!this._isInAnnotatedAnnotation) { + this._createCallFlowNode(node); + } } // Is this an manipulation of dunder all? @@ -1269,7 +1277,22 @@ export class Binder extends ParseTreeWalker { override visitIndex(node: IndexNode): boolean { AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); - return true; + + this.walk(node.baseExpression); + + // If we're within an 'Annotated' type annotation, set the flag. + const wasInAnnotatedAnnotation = this._isInAnnotatedAnnotation; + if (this._isTypingAnnotation(node.baseExpression, 'Annotated')) { + this._isInAnnotatedAnnotation = true; + } + + node.items.forEach((argNode) => { + this.walk(argNode); + }); + + this._isInAnnotatedAnnotation = wasInAnnotatedAnnotation; + + return false; } override visitIf(node: IfNode): boolean { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index c22ffb028..9bd261f90 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -7171,17 +7171,31 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let typeResult: TypeResultWithNode; // If it's a custom __class_getitem__, none of the arguments should be - // treated as types. If it's an Annotated[a, b, c], only the first index - // should be treated as a type. The others can be regular (non-type) objects. - if (options?.hasCustomClassGetItem || (options?.isAnnotatedClass && argIndex > 0)) { + // treated as types. + if (options?.hasCustomClassGetItem) { + adjFlags = + EvaluatorFlags.DisallowParamSpec | + EvaluatorFlags.DisallowTypeVarTuple | + EvaluatorFlags.DoNotSpecialize | + EvaluatorFlags.DisallowClassVar; typeResult = { - ...getTypeOfExpression( - expr, - EvaluatorFlags.DisallowParamSpec | - EvaluatorFlags.DisallowTypeVarTuple | - EvaluatorFlags.DoNotSpecialize | - EvaluatorFlags.DisallowClassVar - ), + ...getTypeOfExpression(expr, adjFlags), + node: expr, + }; + } else if (options?.isAnnotatedClass && argIndex > 0) { + // If it's an Annotated[a, b, c], only the first index should be + // treated as a type.The others can be regular(non - type) objects. + adjFlags = + EvaluatorFlags.DisallowParamSpec | + EvaluatorFlags.DisallowTypeVarTuple | + EvaluatorFlags.DoNotSpecialize | + EvaluatorFlags.DisallowClassVar; + if (isAnnotationEvaluationPostponed(AnalyzerNodeInfo.getFileInfo(node))) { + adjFlags |= EvaluatorFlags.AllowForwardReferences; + } + + typeResult = { + ...getTypeOfExpression(expr, adjFlags), node: expr, }; } else { @@ -7564,7 +7578,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (node.leftExpression.nodeType === ParseNodeType.Lambda) { baseTypeResult = getTypeOfLambdaForCall(node, inferenceContext); } else { - baseTypeResult = getTypeOfExpression(node.leftExpression, EvaluatorFlags.DoNotSpecialize); + baseTypeResult = getTypeOfExpression( + node.leftExpression, + EvaluatorFlags.DoNotSpecialize | (flags & EvaluatorFlags.AllowForwardReferences) + ); } const argList = node.arguments.map((arg) => { diff --git a/packages/pyright-internal/src/tests/samples/annotated2.py b/packages/pyright-internal/src/tests/samples/annotated2.py new file mode 100644 index 000000000..b854c12f3 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/annotated2.py @@ -0,0 +1,18 @@ +# This sample tests the case where Annotated is used with deferred +# annotation evaluation. + +from __future__ import annotations +from typing import Annotated + + +v1: Annotated[str, ClassA, func1(), v2[0]] = "" + +v2 = [1, 2, 3] + + +class ClassA: + ... + + +def func1(): + ... diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 241a88fa9..0c3da0d7c 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -1146,6 +1146,12 @@ test('Annotated1', () => { TestUtils.validateResults(analysisResults39, 3); }); +test('Annotated2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['annotated2.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Circular1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['circular1.py']); From ada1ea63e8360fe3bd203bff3b0069c34d142817 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 00:27:35 +0200 Subject: [PATCH 378/525] Issue5405 5406 (#5470) * Improved assignment mismatch errors to better handle the case where the two types have the same short name but different fully-qualified names. In this case, the types are now expanded to avoid confusion. This addresses #5406. * Fixed incorrect type mismatch error messages within constraint solver logic. The source and destination types were swapped, which led to confusing messages. This addresses #5405. --------- Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 56 +++++++--------- .../src/analyzer/typeEvaluator.ts | 67 ++++++++++--------- .../src/analyzer/typeEvaluatorTypes.ts | 2 + .../src/analyzer/typePrinter.ts | 36 ++++++++-- .../src/tests/samples/typePrinter3.py | 18 +++++ .../src/tests/typeEvaluator5.test.ts | 5 ++ 6 files changed, 115 insertions(+), 69 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/typePrinter3.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 973aec14c..951bf9823 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -123,10 +123,9 @@ export function assignTypeToTypeVar( isTypeVarInScope = false; if (!destType.details.isSynthesized) { diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: evaluator.printType(srcType), - destType: evaluator.printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + evaluator.printSrcDestTypes(srcType, destType) + ) ); return false; } @@ -408,10 +407,9 @@ export function assignTypeToTypeVar( adjSrcType = convertToInstance(adjSrcType, /* includeSubclasses */ false); } else { diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: evaluator.printType(adjSrcType), - destType: evaluator.printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + evaluator.printSrcDestTypes(srcType, destType) + ) ); return false; } @@ -421,10 +419,9 @@ export function assignTypeToTypeVar( isTypeSame(convertToInstance(srcType), destType) ) { diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: evaluator.printType(adjSrcType), - destType: evaluator.printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + evaluator.printSrcDestTypes(adjSrcType, destType) + ) ); return false; } @@ -477,10 +474,9 @@ export function assignTypeToTypeVar( ) { if (diag && diagAddendum) { diag.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: evaluator.printType(adjSrcType), - destType: evaluator.printType(curWideTypeBound), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + evaluator.printSrcDestTypes(curWideTypeBound, adjSrcType) + ) ); diag.addAddendum(diagAddendum); } @@ -503,10 +499,9 @@ export function assignTypeToTypeVar( ) { if (diag && diagAddendum) { diag.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: evaluator.printType(adjSrcType), - destType: evaluator.printType(curNarrowTypeBound), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + evaluator.printSrcDestTypes(curNarrowTypeBound, newWideTypeBound!) + ) ); diag.addAddendum(diagAddendum); } @@ -553,10 +548,9 @@ export function assignTypeToTypeVar( // We need to widen the type. if (typeVarContext.isLocked()) { diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: evaluator.printType(curNarrowTypeBound), - destType: evaluator.printType(adjSrcType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + evaluator.printSrcDestTypes(adjSrcType, curNarrowTypeBound) + ) ); return false; } @@ -577,10 +571,9 @@ export function assignTypeToTypeVar( const widenedType = widenTypeForVariadicTypeVar(curNarrowTypeBound, adjSrcType); if (!widenedType) { diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: evaluator.printType(curNarrowTypeBound), - destType: evaluator.printType(adjSrcType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + evaluator.printSrcDestTypes(curNarrowTypeBound, adjSrcType) + ) ); return false; } @@ -652,10 +645,9 @@ export function assignTypeToTypeVar( ) { if (diag && diagAddendum) { diag.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: evaluator.printType(adjSrcType), - destType: evaluator.printType(curWideTypeBound), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + evaluator.printSrcDestTypes(newNarrowTypeBound, adjWideTypeBound) + ) ); } return false; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 9bd261f90..17041d756 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -3003,10 +3003,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions addDiagnostic( fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.typeAssignmentMismatch().format({ - sourceType: printType(type), - destType: printType(declaredType), - }) + diagAddendum.getString(), + Localizer.Diagnostic.typeAssignmentMismatch().format(printSrcDestTypes(type, declaredType)) + + diagAddendum.getString(), srcExpression ?? nameNode, diagAddendum.getEffectiveTextRange() ?? srcExpression ?? nameNode ); @@ -21643,10 +21641,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: printType(srcType), - destType: printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format(printSrcDestTypes(srcType, destType)) ); return false; } @@ -21807,10 +21802,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: printType(srcType), - destType: printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + printSrcDestTypes(srcType, destType) + ) ); return false; } @@ -21853,10 +21847,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: printType(srcType), - destType: printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format(printSrcDestTypes(srcType, destType)) ); return false; } @@ -22241,10 +22232,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: printType(srcType), - destType: printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format(printSrcDestTypes(srcType, destType)) ); return false; @@ -22485,10 +22473,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isIncompatible) { diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: printType(srcType), - destType: printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format(printSrcDestTypes(srcType, destType)) ); return false; } @@ -22601,10 +22586,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isIncompatible) { diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: printType(srcType), - destType: printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format(printSrcDestTypes(srcType, destType)) ); return false; } @@ -22727,10 +22709,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (!foundMatch) { if (diag && diagAddendum) { diag.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format({ - sourceType: printType(srcType), - destType: printType(destType), - }) + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format(printSrcDestTypes(srcType, destType)) ); diag.addAddendum(diagAddendum); } @@ -24891,6 +24870,26 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return TypePrinter.printFunctionParts(type, flags, getFunctionEffectiveReturnType); } + // Prints two types and determines whether they need to be output in + // fully-qualified form for disambiguation. + function printSrcDestTypes(srcType: Type, destType: Type): { sourceType: string; destType: string } { + const simpleSrcType = printType(srcType); + const simpleDestType = printType(destType); + + if (simpleSrcType !== simpleDestType) { + return { sourceType: simpleSrcType, destType: simpleDestType }; + } + + const fullSrcType = printType(srcType, { useFullyQualifiedNames: true }); + const fullDestType = printType(destType, { useFullyQualifiedNames: true }); + + if (fullSrcType !== fullDestType) { + return { sourceType: fullSrcType, destType: fullDestType }; + } + + return { sourceType: simpleSrcType, destType: simpleDestType }; + } + function printType(type: Type, options?: PrintTypeOptions): string { let flags = evaluatorOptions.printTypeFlags; @@ -24912,6 +24911,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (options?.omitTypeArgumentsIfUnknown) { flags |= TypePrinter.PrintTypeFlags.OmitTypeArgumentsIfUnknown; } + if (options?.useFullyQualifiedNames) { + flags |= TypePrinter.PrintTypeFlags.UseFullyQualifiedNames; + } return TypePrinter.printType(type, flags, getFunctionEffectiveReturnType); } @@ -25095,6 +25097,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions addDiagnostic, addDiagnosticForTextRange, printType, + printSrcDestTypes, printFunctionParts, getTypeCacheEntryCount, disposeEvaluator, diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 3bbb3dfac..4e93f9341 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -371,6 +371,7 @@ export interface ClassMemberLookup { export interface PrintTypeOptions { expandTypeAlias?: boolean; enforcePythonSyntax?: boolean; + useFullyQualifiedNames?: boolean; useTypingUnpack?: boolean; printUnknownWithAny?: boolean; printTypeVarVariance?: boolean; @@ -650,6 +651,7 @@ export interface TypeEvaluator { ) => Diagnostic | undefined; printType: (type: Type, options?: PrintTypeOptions) => string; + printSrcDestTypes: (srcType: Type, destType: Type) => { sourceType: string; destType: string }; printFunctionParts: (type: FunctionType, extraFlags?: PrintTypeFlags) => [string[], string]; getTypeCacheEntryCount: () => number; diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index cdd07d990..9ef3eff16 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -82,6 +82,10 @@ export const enum PrintTypeFlags { // Print the variance of a type parameter. PrintTypeVarVariance = 1 << 11, + + // Use the fully-qualified name of classes, type aliases, modules, + // and functions rather than short names. + UseFullyQualifiedNames = 1 << 12, } export type FunctionReturnTypeCallback = (type: FunctionType) => Type; @@ -219,7 +223,10 @@ function printTypeInternal( if (!expandTypeAlias) { try { recursionTypes.push(type); - let aliasName = type.typeAliasInfo.name; + let aliasName = + (printTypeFlags & PrintTypeFlags.UseFullyQualifiedNames) !== 0 + ? type.typeAliasInfo.fullName + : type.typeAliasInfo.name; // Use the fully-qualified name if the name isn't unique. if (!uniqueNameMap.isUnique(aliasName)) { @@ -333,7 +340,10 @@ function printTypeInternal( if (type.typeAliasInfo) { if (!type.typeAliasInfo.typeParameters) { - let name = type.typeAliasInfo.name; + let name = + (printTypeFlags & PrintTypeFlags.UseFullyQualifiedNames) !== 0 + ? type.typeAliasInfo.fullName + : type.typeAliasInfo.name; if (!uniqueNameMap.isUnique(name)) { name = type.typeAliasInfo.fullName; } @@ -823,7 +833,11 @@ function printObjectTypeForClassInternal( recursionTypes: Type[], recursionCount: number ): string { - let objName = type.aliasName || type.details.name; + let objName = type.aliasName; + if (!objName) { + objName = + (printTypeFlags & PrintTypeFlags.UseFullyQualifiedNames) !== 0 ? type.details.fullName : type.details.name; + } // Use the fully-qualified name if the name isn't unique. if (!uniqueNameMap.isUnique(objName)) { @@ -1244,7 +1258,11 @@ class UniqueNameMap { } if (!expandTypeAlias) { - this._addIfUnique(type.typeAliasInfo.name, type, /* useTypeAliasName */ true); + const typeAliasName = + (this._printTypeFlags & PrintTypeFlags.UseFullyQualifiedNames) !== 0 + ? type.typeAliasInfo.fullName + : type.typeAliasInfo.name; + this._addIfUnique(typeAliasName, type, /* useTypeAliasName */ true); // Recursively add the type arguments if present. if (type.typeAliasInfo.typeArguments) { @@ -1290,7 +1308,15 @@ class UniqueNameMap { break; } - this._addIfUnique(type.aliasName || type.details.name, type); + let className = type.aliasName; + if (!className) { + className = + (this._printTypeFlags & PrintTypeFlags.UseFullyQualifiedNames) !== 0 + ? type.details.fullName + : type.details.name; + } + + this._addIfUnique(className, type); if (!ClassType.isPseudoGenericClass(type)) { if (type.tupleTypeArguments) { diff --git a/packages/pyright-internal/src/tests/samples/typePrinter3.py b/packages/pyright-internal/src/tests/samples/typePrinter3.py new file mode 100644 index 000000000..dd17214b3 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typePrinter3.py @@ -0,0 +1,18 @@ +class A: + class Child1: + pass + + +class B: + class Child1: + pass + + class Child2: + pass + + +# This should generate an error that uses fully-qualified names. +v1: A.Child1 = B.Child1() + +# This should generate an error that uses simple names. +v2: A.Child1 = B.Child2() diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index b33202937..b7682e275 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -277,6 +277,11 @@ test('TypePrinter1', () => { TestUtils.validateResults(analysisResults, 0); }); +test('TypePrinter3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typePrinter3.py']); + TestUtils.validateResults(analysisResults, 2); +}); + test('TypeAliasType1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAliasType1.py']); TestUtils.validateResults(analysisResults, 15); From 70ecdc2974d44ba542c71fd6186b3759bcb47d82 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 09:59:16 +0200 Subject: [PATCH 379/525] Improved protocol type cache for improved type analysis performance in code bases that make heavy use of protocols. (#5480) Co-authored-by: Eric Traut --- .../src/analyzer/protocols.ts | 101 ++++++++++++++---- .../pyright-internal/src/analyzer/types.ts | 13 ++- 2 files changed, 90 insertions(+), 24 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index 9c96c3172..d49e19c90 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -22,6 +22,7 @@ import { isTypeSame, maxTypeRecursionCount, ModuleType, + ProtocolCompatibility, Type, TypeVarType, UnknownType, @@ -49,6 +50,9 @@ interface ProtocolAssignmentStackEntry { const protocolAssignmentStack: ProtocolAssignmentStackEntry[] = []; +// Maximum number of different types that are cached with a protocol. +const maxProtocolCompatibilityCacheEntries = 32; + // If treatSourceAsInstantiable is true, we're comparing the class object against the // protocol. If it's false, we're comparing the class instance against the protocol. export function assignClassToProtocol( @@ -80,14 +84,25 @@ export function assignClassToProtocol( } // See if we've already determined that this class is compatible with this protocol. - if ( - !enforceInvariance && - !treatSourceAsInstantiable && - destType.details.typeParameters.length === 0 && - srcType.details.typeParameters.length === 0 && - srcType.details.compatibleProtocols?.has(destType.details.fullName) - ) { - return true; + if (!enforceInvariance) { + const compatibility = getProtocolCompatibility(destType, srcType, flags, treatSourceAsInstantiable); + + if (compatibility !== undefined) { + if (compatibility) { + // If the caller has provided a destination type var context, + // we can't use the cached value unless the dest has no type + // parameters to solve. + if (!destTypeVarContext || destType.details.typeParameters.length === 0) { + return true; + } + } + + // If it's known not to be compatible and the caller hasn't requested + // any detailed diagnostic information, we can return false immediately. + if (!compatibility && !diag) { + return false; + } + } } protocolAssignmentStack.push({ srcType, destType }); @@ -114,23 +129,65 @@ export function assignClassToProtocol( protocolAssignmentStack.pop(); - // If the destination protocol is not generic and the source type is not - // generic and the two are compatible, cache that information so we can - // skip the check next time. - if ( - isCompatible && - !treatSourceAsInstantiable && - destType.details.typeParameters.length === 0 && - srcType.details.typeParameters.length === 0 - ) { - if (!srcType.details.compatibleProtocols) { - srcType.details.compatibleProtocols = new Set(); - } + // Cache the results for next time. + setProtocolCompatibility(destType, srcType, flags, treatSourceAsInstantiable, isCompatible); + + return isCompatible; +} + +// Looks up the protocol compatibility in the cache. If it's not found, +// return undefined. +function getProtocolCompatibility( + destType: ClassType, + srcType: ClassType, + flags: AssignTypeFlags, + treatSourceAsInstantiable: boolean +): boolean | undefined { + const entries = srcType.details.protocolCompatibility?.get(destType.details.fullName); + if (entries === undefined) { + return undefined; + } + + const entry = entries.find((entry) => { + return ( + isTypeSame(entry.destType, destType) && + isTypeSame(entry.srcType, srcType) && + entry.treatSourceAsInstantiable === treatSourceAsInstantiable && + entry.flags === flags + ); + }); + + return entry?.isCompatible; +} + +function setProtocolCompatibility( + destType: ClassType, + srcType: ClassType, + flags: AssignTypeFlags, + treatSourceAsInstantiable: boolean, + isCompatible: boolean +) { + if (!srcType.details.protocolCompatibility) { + srcType.details.protocolCompatibility = new Map(); + } - srcType.details.compatibleProtocols.add(destType.details.fullName); + let entries = srcType.details.protocolCompatibility.get(destType.details.fullName); + if (!entries) { + entries = []; + srcType.details.protocolCompatibility.set(destType.details.fullName, entries); } - return isCompatible; + entries.push({ + destType, + srcType, + treatSourceAsInstantiable, + flags, + isCompatible, + }); + + if (entries.length > maxProtocolCompatibilityCacheEntries) { + entries.shift(); + } } function assignClassToProtocolInternal( diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 9d6885e0a..7f3b9f84f 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -547,6 +547,14 @@ export interface DataClassBehaviors { fieldDescriptorNames: string[]; } +export interface ProtocolCompatibility { + srcType: Type; + destType: Type; + treatSourceAsInstantiable: boolean; + flags: number; // AssignTypeFlags + isCompatible: boolean; +} + interface ClassDetails { name: string; fullName: string; @@ -570,8 +578,9 @@ interface ClassDetails { localSlotsNames?: string[]; // A cache of protocol classes (indexed by the class full name) - // that have been determined to be compatible with this class. - compatibleProtocols?: Set; + // that have been determined to be compatible or incompatible + // with this class. + protocolCompatibility?: Map; // Transforms to apply if this class is used as a metaclass // or a base class. From e63f229d59218a7caec92314146c8483a5d6675f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 10:24:46 +0200 Subject: [PATCH 380/525] Added detection of errors when a namedtuple definition includes a language keyword. Also added minimal support for the `rename` parameter to the `namedtuple` function. This addresses #5423. (#5482) Co-authored-by: Eric Traut --- .../src/analyzer/namedTuples.ts | 77 ++++++++++++++++--- .../src/localization/localize.ts | 1 + .../src/localization/package.nls.en-us.json | 1 + .../pyright-internal/src/parser/tokenizer.ts | 15 ++++ .../src/tests/samples/namedTuple9.py | 24 ++++++ .../src/tests/typeEvaluator1.test.ts | 6 ++ 6 files changed, 113 insertions(+), 11 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/namedTuple9.py diff --git a/packages/pyright-internal/src/analyzer/namedTuples.ts b/packages/pyright-internal/src/analyzer/namedTuples.ts index ed4e1c2e3..42cabcbd0 100644 --- a/packages/pyright-internal/src/analyzer/namedTuples.ts +++ b/packages/pyright-internal/src/analyzer/namedTuples.ts @@ -18,34 +18,36 @@ import { ParseNodeType, StringListNode, } from '../parser/parseNodes'; +import { Tokenizer } from '../parser/tokenizer'; import { getFileInfo } from './analyzerNodeInfo'; import { DeclarationType, VariableDeclaration } from './declaration'; import * as ParseTreeUtils from './parseTreeUtils'; +import { evaluateStaticBoolExpression } from './staticExpressions'; import { Symbol, SymbolFlags } from './symbol'; import { FunctionArgument, TypeEvaluator } from './typeEvaluatorTypes'; +import { + computeMroLinearization, + convertToInstance, + isTupleClass, + isUnboundedTupleClass, + specializeTupleClass, + synthesizeTypeVarForSelfCls, +} from './typeUtils'; import { AnyType, ClassType, ClassTypeFlags, - combineTypes, FunctionParameter, FunctionType, FunctionTypeFlags, - isClassInstance, - isInstantiableClass, NoneType, TupleTypeArgument, Type, UnknownType, + combineTypes, + isClassInstance, + isInstantiableClass, } from './types'; -import { - computeMroLinearization, - convertToInstance, - isTupleClass, - isUnboundedTupleClass, - specializeTupleClass, - synthesizeTypeVarForSelfCls, -} from './typeUtils'; // Creates a new custom tuple factory class with named values. // Supports both typed and untyped variants. @@ -59,6 +61,25 @@ export function createNamedTupleType( const fileInfo = getFileInfo(errorNode); let className = 'namedtuple'; + // The "rename" parameter is supported only in the untyped version. + let allowRename = false; + if (!includesTypes) { + const renameArg = argList.find( + (arg) => arg.argumentCategory === ArgumentCategory.Simple && arg.name?.value === 'rename' + ); + + if (renameArg?.valueExpression) { + const renameValue = evaluateStaticBoolExpression( + renameArg.valueExpression, + fileInfo.executionEnvironment, + fileInfo.definedConstants + ); + if (renameValue === true) { + allowRename = true; + } + } + } + if (argList.length === 0) { evaluator.addError(Localizer.Diagnostic.namedTupleFirstArg(), errorNode); } else { @@ -156,6 +177,14 @@ export function createNamedTupleType( entries.forEach((entryName, index) => { entryName = entryName.trim(); if (entryName) { + entryName = renameKeyword( + evaluator, + entryName, + allowRename, + entriesArg.valueExpression!, + index + ); + const entryType = UnknownType.create(); const paramInfo: FunctionParameter = { category: ParameterCategory.Simple, @@ -232,6 +261,8 @@ export function createNamedTupleType( entryName = entryNameNode.strings.map((s) => s.value).join(''); if (!entryName) { evaluator.addError(Localizer.Diagnostic.namedTupleEmptyName(), entryNameNode); + } else { + entryName = renameKeyword(evaluator, entryName, allowRename, entryNameNode, index); } } else { addGenericGetAttribute = true; @@ -412,3 +443,27 @@ export function updateNamedTupleBaseClass( return isUpdateNeeded; } + +function renameKeyword( + evaluator: TypeEvaluator, + name: string, + allowRename: boolean, + errorNode: ExpressionNode, + index: number +): string { + // Determine whether the name is a keyword in python. + const isKeyword = Tokenizer.isKeyword(name); + + if (!isKeyword) { + // No rename necessary. + return name; + } + + if (allowRename) { + // Rename based on index. + return `_${index}`; + } + + evaluator.addError(Localizer.Diagnostic.namedTupleNameKeyword(), errorNode); + return name; +} diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index a37154ff9..559be611b 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -583,6 +583,7 @@ export namespace Localizer { export const namedTupleEmptyName = () => getRawString('Diagnostic.namedTupleEmptyName'); export const namedTupleFirstArg = () => getRawString('Diagnostic.namedTupleFirstArg'); export const namedTupleMultipleInheritance = () => getRawString('Diagnostic.namedTupleMultipleInheritance'); + export const namedTupleNameKeyword = () => getRawString('Diagnostic.namedTupleNameKeyword'); export const namedTupleNameType = () => getRawString('Diagnostic.namedTupleNameType'); export const namedTupleNameUnique = () => getRawString('Diagnostic.namedTupleNameUnique'); export const namedTupleNoTypes = () => getRawString('Diagnostic.namedTupleNoTypes'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index ddec26696..561feb3c4 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -268,6 +268,7 @@ "namedTupleEmptyName": "Names within a named tuple cannot be empty", "namedTupleMultipleInheritance": "Multiple inheritance with NamedTuple is not supported", "namedTupleFirstArg": "Expected named tuple class name as first argument", + "namedTupleNameKeyword": "Field names cannot be a keyword", "namedTupleNameType": "Expected two-entry tuple specifying entry name and type", "namedTupleNameUnique": "Names within a named tuple must be unique", "namedTupleNoTypes": "\"namedtuple\" provides no types for tuple entries; use \"NamedTuple\" instead", diff --git a/packages/pyright-internal/src/parser/tokenizer.ts b/packages/pyright-internal/src/parser/tokenizer.ts index eeff18566..ecac34fd8 100644 --- a/packages/pyright-internal/src/parser/tokenizer.ts +++ b/packages/pyright-internal/src/parser/tokenizer.ts @@ -91,6 +91,8 @@ const _keywords: Map = new Map([ ['True', KeywordType.True], ]); +const _softKeywords = new Set(['match', 'case', 'type']); + const _operatorInfo: { [key: number]: OperatorFlags } = { [OperatorType.Add]: OperatorFlags.Unary | OperatorFlags.Binary, [OperatorType.AddEqual]: OperatorFlags.Assignment, @@ -364,6 +366,19 @@ export class Tokenizer { return _operatorInfo[operatorType]; } + static isKeyword(name: string, includeSoftKeywords = false): boolean { + const keyword = _keywords.get(name); + if (!keyword) { + return false; + } + + if (includeSoftKeywords) { + return true; + } + + return !_softKeywords.has(name); + } + static isOperatorAssignment(operatorType?: OperatorType): boolean { if (operatorType === undefined || _operatorInfo[operatorType] === undefined) { return false; diff --git a/packages/pyright-internal/src/tests/samples/namedTuple9.py b/packages/pyright-internal/src/tests/samples/namedTuple9.py new file mode 100644 index 000000000..fb18d1c21 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/namedTuple9.py @@ -0,0 +1,24 @@ +# This sample tests the detection of keywords in a named tuple +# definition and support for the "rename" parameter. + + +from collections import namedtuple +from typing import NamedTuple + + +# This should generate an error because "def" is a keyword. +NT1 = namedtuple("NT1", ["abc", "def"]) + +# This should generate an error because "class" is a keyword. +NT2 = namedtuple("NT2", ["abc", "class"], rename=False) + +NT3 = namedtuple("NT3", ["abc", "def"], rename=True) + +v3 = NT3(abc=0, _1=0) + +# This should generate an error because "def" is a keyword. +NT4 = NamedTuple("NT4", [("abc", int), ("def", int)]) + + +# These are soft keywords, so they shouldn't generate an error. +NT5 = namedtuple("NT5", ["type", "match"]) diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index f33d31e07..48818b696 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1374,6 +1374,12 @@ test('NamedTuple8', () => { TestUtils.validateResults(analysisResults, 0); }); +test('NamedTuple9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['namedTuple9.py']); + + TestUtils.validateResults(analysisResults, 3); +}); + test('Slots1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['slots1.py']); From 6ec6e74d635011c7253f064a93f4e50a1a871a52 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 10:36:33 +0200 Subject: [PATCH 381/525] Updated typeshed stubs to the latest version. --- .../typeshed-fallback/commit.txt | 2 +- .../stdlib/_collections_abc.pyi | 2 +- .../typeshed-fallback/stdlib/_decimal.pyi | 1 + .../typeshed-fallback/stdlib/_weakref.pyi | 1 + .../stdlib/asyncio/__init__.pyi | 4 +- .../stdlib/asyncio/base_events.pyi | 4 +- .../stdlib/asyncio/events.pyi | 5 +- .../typeshed-fallback/stdlib/builtins.pyi | 17 +- .../typeshed-fallback/stdlib/codecs.pyi | 1 + .../stdlib/collections/__init__.pyi | 33 +- .../typeshed-fallback/stdlib/datetime.pyi | 4 + .../typeshed-fallback/stdlib/doctest.pyi | 3 + .../stdlib/email/charset.pyi | 9 +- .../typeshed-fallback/stdlib/email/utils.pyi | 11 +- .../typeshed-fallback/stdlib/enum.pyi | 11 +- .../typeshed-fallback/stdlib/errno.pyi | 14 +- .../typeshed-fallback/stdlib/http/client.pyi | 39 +- .../typeshed-fallback/stdlib/inspect.pyi | 27 + .../typeshed-fallback/stdlib/ipaddress.pyi | 1 + .../typeshed-fallback/stdlib/pathlib.pyi | 1 + .../typeshed-fallback/stdlib/plistlib.pyi | 1 + .../typeshed-fallback/stdlib/pydoc.pyi | 30 +- .../typeshed-fallback/stdlib/socket.pyi | 2 + .../stdlib/sqlite3/dbapi2.pyi | 1 + .../typeshed-fallback/stdlib/statistics.pyi | 1 + .../typeshed-fallback/stdlib/tempfile.pyi | 1 + .../stdlib/tkinter/__init__.pyi | 2 + .../typeshed-fallback/stdlib/types.pyi | 45 +- .../typeshed-fallback/stdlib/typing.pyi | 42 +- .../stdlib/unittest/mock.pyi | 5 +- .../typeshed-fallback/stdlib/uuid.pyi | 40 +- .../stubs/Flask-Cors/METADATA.toml | 2 +- .../stubs/Flask-Migrate/METADATA.toml | 4 +- .../@tests/stubtest_allowlist.txt | 2 - .../stubs/Flask-SQLAlchemy/METADATA.toml | 7 - .../flask_sqlalchemy/__init__.pyi | 97 ---- .../flask_sqlalchemy/model.pyi | 25 - .../flask_sqlalchemy/utils.pyi | 3 - .../stubs/Pillow/METADATA.toml | 2 +- .../stubs/Pillow/PIL/BdfFontFile.pyi | 6 +- .../stubs/Pillow/PIL/BlpImagePlugin.pyi | 15 +- .../stubs/Pillow/PIL/BmpImagePlugin.pyi | 9 +- .../stubs/Pillow/PIL/ContainerIO.pyi | 8 +- .../stubs/Pillow/PIL/DcxImagePlugin.pyi | 7 +- .../stubs/Pillow/PIL/EpsImagePlugin.pyi | 19 +- .../stubs/Pillow/PIL/FitsStubImagePlugin.pyi | 10 - .../stubs/Pillow/PIL/FontFile.pyi | 12 +- .../stubs/Pillow/PIL/FtexImagePlugin.pyi | 3 - .../stubs/Pillow/PIL/GbrImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/GifImagePlugin.pyi | 8 +- .../stubs/Pillow/PIL/GimpGradientFile.pyi | 8 +- .../stubs/Pillow/PIL/GimpPaletteFile.pyi | 4 +- .../stubs/Pillow/PIL/IcnsImagePlugin.pyi | 16 +- .../stubs/Pillow/PIL/IcoImagePlugin.pyi | 13 +- .../stubs/Pillow/PIL/ImImagePlugin.pyi | 17 +- .../stubs/Pillow/PIL/Image.pyi | 42 +- .../stubs/Pillow/PIL/ImageCms.pyi | 23 +- .../stubs/Pillow/PIL/ImageDraw.pyi | 21 +- .../stubs/Pillow/PIL/ImageDraw2.pyi | 23 +- .../stubs/Pillow/PIL/ImageFile.pyi | 34 +- .../stubs/Pillow/PIL/ImageFilter.pyi | 3 +- .../stubs/Pillow/PIL/ImageFont.pyi | 36 +- .../stubs/Pillow/PIL/ImageMath.pyi | 5 +- .../stubs/Pillow/PIL/ImageMode.pyi | 10 +- .../stubs/Pillow/PIL/ImageOps.pyi | 2 +- .../stubs/Pillow/PIL/ImagePalette.pyi | 13 +- .../stubs/Pillow/PIL/ImageQt.pyi | 5 +- .../stubs/Pillow/PIL/ImageSequence.pyi | 5 +- .../stubs/Pillow/PIL/ImageShow.pyi | 46 +- .../stubs/Pillow/PIL/ImageStat.pyi | 5 +- .../stubs/Pillow/PIL/ImageTk.pyi | 5 +- .../stubs/Pillow/PIL/ImageTransform.pyi | 12 +- .../stubs/Pillow/PIL/ImageWin.pyi | 15 +- .../stubs/Pillow/PIL/ImtImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/IptcImagePlugin.pyi | 9 +- .../stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi | 6 +- .../stubs/Pillow/PIL/JpegImagePlugin.pyi | 19 +- .../stubs/Pillow/PIL/JpegPresets.pyi | 4 +- .../stubs/Pillow/PIL/MpegImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/MpoImagePlugin.pyi | 8 +- .../stubs/Pillow/PIL/PaletteFile.pyi | 4 +- .../stubs/Pillow/PIL/PalmImagePlugin.pyi | 4 +- .../stubs/Pillow/PIL/PcdImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/PcfFontFile.pyi | 30 +- .../stubs/Pillow/PIL/PcxImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/PdfParser.pyi | 112 ++-- .../stubs/Pillow/PIL/PngImagePlugin.pyi | 63 +-- .../stubs/Pillow/PIL/PpmImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/PsdImagePlugin.pyi | 15 +- .../stubs/Pillow/PIL/PyAccess.pyi | 18 +- .../stubs/Pillow/PIL/SgiImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/SpiderImagePlugin.pyi | 8 +- .../stubs/Pillow/PIL/TarIO.pyi | 5 +- .../stubs/Pillow/PIL/TgaImagePlugin.pyi | 7 +- .../stubs/Pillow/PIL/TiffImagePlugin.pyi | 168 ++++-- .../stubs/Pillow/PIL/TiffTags.pyi | 4 +- .../stubs/Pillow/PIL/WebPImagePlugin.pyi | 7 +- .../stubs/Pillow/PIL/WmfImagePlugin.pyi | 4 +- .../stubs/Pillow/PIL/XbmImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/XpmImagePlugin.pyi | 5 +- .../stubs/Pillow/PIL/features.pyi | 7 +- .../stubs/PyMySQL/METADATA.toml | 2 +- .../stubs/PyMySQL/pymysql/charset.pyi | 4 +- .../stubs/PyMySQL/pymysql/connections.pyi | 9 +- .../SQLAlchemy/@tests/stubtest_allowlist.txt | 85 --- .../@tests/test_cases/check_loader_option.py | 60 --- .../@tests/test_cases/check_register.py | 68 --- .../stubs/SQLAlchemy/METADATA.toml | 9 - .../stubs/SQLAlchemy/sqlalchemy/__init__.pyi | 133 ----- .../SQLAlchemy/sqlalchemy/cimmutabledict.pyi | 19 - .../sqlalchemy/connectors/__init__.pyi | 1 - .../sqlalchemy/connectors/mxodbc.pyi | 17 - .../sqlalchemy/connectors/pyodbc.pyi | 22 - .../SQLAlchemy/sqlalchemy/cprocessors.pyi | 15 - .../SQLAlchemy/sqlalchemy/cresultproxy.pyi | 23 - .../sqlalchemy/databases/__init__.pyi | 18 - .../sqlalchemy/dialects/__init__.pyi | 16 - .../sqlalchemy/dialects/firebird/__init__.pyi | 34 -- .../sqlalchemy/dialects/firebird/base.pyi | 108 ---- .../sqlalchemy/dialects/firebird/fdb.pyi | 10 - .../dialects/firebird/kinterbasdb.pyi | 39 -- .../sqlalchemy/dialects/mssql/__init__.pyi | 76 --- .../sqlalchemy/dialects/mssql/base.pyi | 323 ------------ .../dialects/mssql/information_schema.pyi | 35 -- .../sqlalchemy/dialects/mssql/json.pyi | 10 - .../sqlalchemy/dialects/mssql/mxodbc.pyi | 27 - .../sqlalchemy/dialects/mssql/provision.pyi | 0 .../sqlalchemy/dialects/mssql/pymssql.pyi | 24 - .../sqlalchemy/dialects/mssql/pyodbc.pyi | 45 -- .../sqlalchemy/dialects/mysql/__init__.pyi | 85 --- .../sqlalchemy/dialects/mysql/aiomysql.pyi | 74 --- .../sqlalchemy/dialects/mysql/asyncmy.pyi | 84 --- .../sqlalchemy/dialects/mysql/base.pyi | 241 --------- .../sqlalchemy/dialects/mysql/cymysql.pyi | 21 - .../sqlalchemy/dialects/mysql/dml.pyi | 23 - .../sqlalchemy/dialects/mysql/enumerated.pyi | 21 - .../sqlalchemy/dialects/mysql/expression.pyi | 13 - .../sqlalchemy/dialects/mysql/json.pyi | 10 - .../sqlalchemy/dialects/mysql/mariadb.pyi | 11 - .../dialects/mysql/mariadbconnector.pyi | 36 -- .../dialects/mysql/mysqlconnector.pyi | 38 -- .../sqlalchemy/dialects/mysql/mysqldb.pyi | 33 -- .../sqlalchemy/dialects/mysql/oursql.pyi | 40 -- .../sqlalchemy/dialects/mysql/provision.pyi | 0 .../sqlalchemy/dialects/mysql/pymysql.pyi | 20 - .../sqlalchemy/dialects/mysql/pyodbc.pyi | 20 - .../sqlalchemy/dialects/mysql/reflection.pyi | 16 - .../dialects/mysql/reserved_words.pyi | 4 - .../sqlalchemy/dialects/mysql/types.pyi | 158 ------ .../sqlalchemy/dialects/oracle/__init__.pyi | 52 -- .../sqlalchemy/dialects/oracle/base.pyi | 222 -------- .../sqlalchemy/dialects/oracle/cx_oracle.pyi | 127 ----- .../sqlalchemy/dialects/oracle/provision.pyi | 0 .../dialects/postgresql/__init__.pyi | 100 ---- .../sqlalchemy/dialects/postgresql/array.pyi | 41 -- .../dialects/postgresql/asyncpg.pyi | 206 -------- .../sqlalchemy/dialects/postgresql/base.pyi | 314 ----------- .../sqlalchemy/dialects/postgresql/dml.pyi | 56 -- .../sqlalchemy/dialects/postgresql/ext.pyi | 27 - .../sqlalchemy/dialects/postgresql/hstore.pyi | 67 --- .../sqlalchemy/dialects/postgresql/json.pyi | 28 - .../sqlalchemy/dialects/postgresql/pg8000.pyi | 134 ----- .../dialects/postgresql/provision.pyi | 0 .../dialects/postgresql/psycopg2.pyi | 95 ---- .../dialects/postgresql/psycopg2cffi.pyi | 13 - .../dialects/postgresql/pygresql.pyi | 52 -- .../dialects/postgresql/pypostgresql.pyi | 30 -- .../sqlalchemy/dialects/postgresql/ranges.pyi | 36 -- .../sqlalchemy/dialects/sqlite/__init__.pyi | 45 -- .../sqlalchemy/dialects/sqlite/aiosqlite.pyi | 73 --- .../sqlalchemy/dialects/sqlite/base.pyi | 141 ----- .../sqlalchemy/dialects/sqlite/dml.pyi | 44 -- .../sqlalchemy/dialects/sqlite/json.pyi | 10 - .../sqlalchemy/dialects/sqlite/provision.pyi | 0 .../dialects/sqlite/pysqlcipher.pyi | 16 - .../sqlalchemy/dialects/sqlite/pysqlite.pyi | 28 - .../sqlalchemy/dialects/sybase/__init__.pyi | 58 --- .../sqlalchemy/dialects/sybase/base.pyi | 135 ----- .../sqlalchemy/dialects/sybase/mxodbc.pyi | 9 - .../sqlalchemy/dialects/sybase/pyodbc.pyi | 19 - .../sqlalchemy/dialects/sybase/pysybase.pyi | 28 - .../SQLAlchemy/sqlalchemy/engine/__init__.pyi | 46 -- .../SQLAlchemy/sqlalchemy/engine/base.pyi | 215 -------- .../sqlalchemy/engine/characteristics.pyi | 16 - .../SQLAlchemy/sqlalchemy/engine/create.pyi | 22 - .../SQLAlchemy/sqlalchemy/engine/cursor.pyi | 133 ----- .../SQLAlchemy/sqlalchemy/engine/default.pyi | 222 -------- .../SQLAlchemy/sqlalchemy/engine/events.pyi | 29 -- .../sqlalchemy/engine/interfaces.pyi | 170 ------ .../SQLAlchemy/sqlalchemy/engine/mock.pyi | 32 -- .../sqlalchemy/engine/reflection.pyi | 32 -- .../SQLAlchemy/sqlalchemy/engine/result.pyi | 134 ----- .../SQLAlchemy/sqlalchemy/engine/row.pyi | 63 --- .../sqlalchemy/engine/strategies.pyi | 4 - .../SQLAlchemy/sqlalchemy/engine/url.pyi | 65 --- .../SQLAlchemy/sqlalchemy/engine/util.pyi | 12 - .../SQLAlchemy/sqlalchemy/event/__init__.pyi | 10 - .../stubs/SQLAlchemy/sqlalchemy/event/api.pyi | 9 - .../SQLAlchemy/sqlalchemy/event/attr.pyi | 85 --- .../SQLAlchemy/sqlalchemy/event/base.pyi | 31 -- .../SQLAlchemy/sqlalchemy/event/legacy.pyi | 0 .../SQLAlchemy/sqlalchemy/event/registry.pyi | 27 - .../stubs/SQLAlchemy/sqlalchemy/events.pyi | 4 - .../stubs/SQLAlchemy/sqlalchemy/exc.pyi | 147 ------ .../SQLAlchemy/sqlalchemy/ext/__init__.pyi | 0 .../sqlalchemy/ext/associationproxy.pyi | 200 ------- .../sqlalchemy/ext/asyncio/__init__.pyi | 15 - .../sqlalchemy/ext/asyncio/base.pyi | 19 - .../sqlalchemy/ext/asyncio/engine.pyi | 103 ---- .../sqlalchemy/ext/asyncio/events.pyi | 5 - .../SQLAlchemy/sqlalchemy/ext/asyncio/exc.pyi | 5 - .../sqlalchemy/ext/asyncio/result.pyi | 56 -- .../sqlalchemy/ext/asyncio/scoping.pyi | 80 --- .../sqlalchemy/ext/asyncio/session.pyi | 120 ----- .../SQLAlchemy/sqlalchemy/ext/automap.pyi | 27 - .../stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi | 49 -- .../SQLAlchemy/sqlalchemy/ext/compiler.pyi | 8 - .../sqlalchemy/ext/declarative/__init__.pyi | 27 - .../sqlalchemy/ext/declarative/extensions.pyi | 14 - .../sqlalchemy/ext/horizontal_shard.pyi | 34 -- .../SQLAlchemy/sqlalchemy/ext/hybrid.pyi | 68 --- .../SQLAlchemy/sqlalchemy/ext/indexable.pyi | 18 - .../sqlalchemy/ext/instrumentation.pyi | 55 -- .../SQLAlchemy/sqlalchemy/ext/mutable.pyi | 64 --- .../sqlalchemy/ext/orderinglist.pyi | 22 - .../SQLAlchemy/sqlalchemy/ext/serializer.pyi | 10 - .../SQLAlchemy/sqlalchemy/future/__init__.pyi | 5 - .../SQLAlchemy/sqlalchemy/future/engine.pyi | 38 -- .../sqlalchemy/future/orm/__init__.pyi | 0 .../SQLAlchemy/sqlalchemy/inspection.pyi | 1 - .../stubs/SQLAlchemy/sqlalchemy/log.pyi | 51 -- .../SQLAlchemy/sqlalchemy/orm/__init__.pyi | 126 ----- .../SQLAlchemy/sqlalchemy/orm/attributes.pyi | 286 ---------- .../stubs/SQLAlchemy/sqlalchemy/orm/base.pyi | 76 --- .../SQLAlchemy/sqlalchemy/orm/clsregistry.pyi | 52 -- .../SQLAlchemy/sqlalchemy/orm/collections.pyi | 130 ----- .../SQLAlchemy/sqlalchemy/orm/context.pyi | 213 -------- .../SQLAlchemy/sqlalchemy/orm/decl_api.pyi | 146 ------ .../SQLAlchemy/sqlalchemy/orm/decl_base.pyi | 47 -- .../SQLAlchemy/sqlalchemy/orm/dependency.pyi | 74 --- .../sqlalchemy/orm/descriptor_props.pyi | 74 --- .../SQLAlchemy/sqlalchemy/orm/dynamic.pyi | 85 --- .../SQLAlchemy/sqlalchemy/orm/evaluator.pyi | 25 - .../SQLAlchemy/sqlalchemy/orm/events.pyi | 104 ---- .../stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi | 35 -- .../SQLAlchemy/sqlalchemy/orm/identity.pyi | 31 -- .../sqlalchemy/orm/instrumentation.pyi | 92 ---- .../SQLAlchemy/sqlalchemy/orm/interfaces.pyi | 133 ----- .../SQLAlchemy/sqlalchemy/orm/loading.pyi | 47 -- .../SQLAlchemy/sqlalchemy/orm/mapper.pyi | 145 ------ .../sqlalchemy/orm/path_registry.pyi | 107 ---- .../SQLAlchemy/sqlalchemy/orm/persistence.pyi | 40 -- .../SQLAlchemy/sqlalchemy/orm/properties.pyi | 45 -- .../stubs/SQLAlchemy/sqlalchemy/orm/query.pyi | 143 ----- .../sqlalchemy/orm/relationships.pyi | 187 ------- .../SQLAlchemy/sqlalchemy/orm/scoping.pyi | 105 ---- .../SQLAlchemy/sqlalchemy/orm/session.pyi | 232 --------- .../stubs/SQLAlchemy/sqlalchemy/orm/state.pyi | 82 --- .../SQLAlchemy/sqlalchemy/orm/strategies.pyi | 142 ----- .../sqlalchemy/orm/strategy_options.pyi | 86 ---- .../stubs/SQLAlchemy/sqlalchemy/orm/sync.pyi | 6 - .../SQLAlchemy/sqlalchemy/orm/unitofwork.pyi | 109 ---- .../stubs/SQLAlchemy/sqlalchemy/orm/util.pyi | 200 ------- .../SQLAlchemy/sqlalchemy/pool/__init__.pyi | 27 - .../stubs/SQLAlchemy/sqlalchemy/pool/base.pyi | 94 ---- .../sqlalchemy/pool/dbapi_proxy.pyi | 19 - .../SQLAlchemy/sqlalchemy/pool/events.pyi | 13 - .../stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi | 46 -- .../SQLAlchemy/sqlalchemy/processors.pyi | 7 - .../stubs/SQLAlchemy/sqlalchemy/schema.pyi | 51 -- .../SQLAlchemy/sqlalchemy/sql/__init__.pyi | 91 ---- .../SQLAlchemy/sqlalchemy/sql/annotation.pyi | 206 -------- .../stubs/SQLAlchemy/sqlalchemy/sql/base.pyi | 162 ------ .../SQLAlchemy/sqlalchemy/sql/coercions.pyi | 74 --- .../SQLAlchemy/sqlalchemy/sql/compiler.pyi | 487 ------------------ .../stubs/SQLAlchemy/sqlalchemy/sql/crud.pyi | 18 - .../stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi | 155 ------ .../sqlalchemy/sql/default_comparator.pyi | 3 - .../stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi | 120 ----- .../SQLAlchemy/sqlalchemy/sql/elements.pyi | 473 ----------------- .../SQLAlchemy/sqlalchemy/sql/events.pyi | 10 - .../SQLAlchemy/sqlalchemy/sql/expression.pyi | 203 -------- .../SQLAlchemy/sqlalchemy/sql/functions.pyi | 228 -------- .../SQLAlchemy/sqlalchemy/sql/lambdas.pyi | 122 ----- .../SQLAlchemy/sqlalchemy/sql/naming.pyi | 10 - .../SQLAlchemy/sqlalchemy/sql/operators.pyi | 194 ------- .../stubs/SQLAlchemy/sqlalchemy/sql/roles.pyi | 57 -- .../SQLAlchemy/sqlalchemy/sql/schema.pyi | 378 -------------- .../SQLAlchemy/sqlalchemy/sql/selectable.pyi | 438 ---------------- .../SQLAlchemy/sqlalchemy/sql/sqltypes.pyi | 381 -------------- .../SQLAlchemy/sqlalchemy/sql/traversals.pyi | 157 ------ .../SQLAlchemy/sqlalchemy/sql/type_api.pyi | 118 ----- .../stubs/SQLAlchemy/sqlalchemy/sql/util.pyi | 104 ---- .../SQLAlchemy/sqlalchemy/sql/visitors.pyi | 86 ---- .../sqlalchemy/testing/__init__.pyi | 77 --- .../sqlalchemy/testing/assertions.pyi | 89 ---- .../sqlalchemy/testing/assertsql.pyi | 82 --- .../SQLAlchemy/sqlalchemy/testing/asyncio.pyi | 1 - .../SQLAlchemy/sqlalchemy/testing/config.pyi | 58 --- .../SQLAlchemy/sqlalchemy/testing/engines.pyi | 83 --- .../sqlalchemy/testing/entities.pyi | 9 - .../sqlalchemy/testing/exclusions.pyi | 80 --- .../sqlalchemy/testing/fixtures.pyi | 84 --- .../SQLAlchemy/sqlalchemy/testing/mock.pyi | 1 - .../sqlalchemy/testing/pickleable.pyi | 63 --- .../sqlalchemy/testing/plugin/__init__.pyi | 0 .../sqlalchemy/testing/plugin/bootstrap.pyi | 6 - .../sqlalchemy/testing/plugin/plugin_base.pyi | 62 --- .../testing/plugin/pytestplugin.pyi | 38 -- .../testing/plugin/reinvent_fixtures_py2k.pyi | 6 - .../sqlalchemy/testing/profiling.pyi | 21 - .../sqlalchemy/testing/provision.pyi | 62 --- .../sqlalchemy/testing/requirements.pyi | 399 -------------- .../SQLAlchemy/sqlalchemy/testing/schema.pyi | 16 - .../SQLAlchemy/sqlalchemy/testing/util.pyi | 41 -- .../sqlalchemy/testing/warnings.pyi | 7 - .../stubs/SQLAlchemy/sqlalchemy/types.pyi | 106 ---- .../SQLAlchemy/sqlalchemy/util/__init__.pyi | 173 ------- .../sqlalchemy/util/_collections.pyi | 219 -------- .../sqlalchemy/util/_compat_py3k.pyi | 13 - .../sqlalchemy/util/_concurrency_py3k.pyi | 19 - .../SQLAlchemy/sqlalchemy/util/_preloaded.pyi | 11 - .../SQLAlchemy/sqlalchemy/util/compat.pyi | 112 ---- .../sqlalchemy/util/concurrency.pyi | 13 - .../sqlalchemy/util/deprecations.pyi | 28 - .../sqlalchemy/util/langhelpers.pyi | 176 ------- .../SQLAlchemy/sqlalchemy/util/queue.pyi | 35 -- .../sqlalchemy/util/topological.pyi | 3 - .../stubs/WebOb/webob/multidict.pyi | 2 +- .../stubs/annoy/METADATA.toml | 2 - .../stubs/annoy/annoy/__init__.pyi | 5 - .../stubs/annoy/annoy/annoylib.pyi | 44 -- .../stubs/braintree/METADATA.toml | 2 +- .../contextvars/@tests/stubtest_allowlist.txt | 4 - .../stubs/contextvars/METADATA.toml | 1 - .../stubs/contextvars/contextvars.pyi | 51 -- .../stubs/croniter/METADATA.toml | 2 +- .../stubs/croniter/croniter/croniter.pyi | 101 ++-- .../stubs/flake8-bugbear/METADATA.toml | 2 +- .../stubs/flake8-plugin-utils/METADATA.toml | 1 + .../stubs/inifile/inifile.pyi | 2 +- .../stubs/mock/mock/mock.pyi | 9 +- .../stubs/mysqlclient/METADATA.toml | 5 +- .../stubs/mysqlclient/MySQLdb/__init__.pyi | 20 +- .../stubs/mysqlclient/MySQLdb/_mysql.pyi | 122 ++--- .../stubs/mysqlclient/MySQLdb/connections.pyi | 19 +- .../stubs/mysqlclient/MySQLdb/converters.pyi | 6 +- .../stubs/mysqlclient/MySQLdb/cursors.pyi | 31 +- .../openpyxl/openpyxl/descriptors/base.pyi | 4 +- .../openpyxl/openpyxl/descriptors/nested.pyi | 14 +- .../stubs/pexpect/METADATA.toml | 1 + .../stubs/pexpect/pexpect/ANSI.pyi | 43 ++ .../stubs/pexpect/pexpect/FSM.pyi | 39 ++ .../stubs/pexpect/pexpect/__init__.pyi | 20 + .../stubs/pexpect/pexpect/_async.pyi | 17 + .../stubs/pexpect/pexpect/exceptions.pyi | 6 + .../stubs/pexpect/pexpect/expect.pyi | 38 ++ .../stubs/pexpect/pexpect/fdpexpect.pyi | 32 ++ .../stubs/pexpect/pexpect/popen_spawn.pyi | 34 ++ .../stubs/pexpect/pexpect/pty_spawn.pyi | 73 +++ .../stubs/pexpect/pexpect/pxssh.pyi | 59 +++ .../stubs/pexpect/pexpect/replwrap.pyi | 25 + .../stubs/pexpect/pexpect/run.pyi | 24 + .../stubs/pexpect/pexpect/screen.pyi | 80 +++ .../stubs/pexpect/pexpect/spawnbase.pyi | 79 +++ .../stubs/pexpect/pexpect/utils.pyi | 9 + .../stubs/pyOpenSSL/OpenSSL/crypto.pyi | 2 + .../stubs/pyinstaller/METADATA.toml | 2 +- .../pyinstaller/PyInstaller/building/api.pyi | 18 +- .../PyInstaller/building/build_main.pyi | 18 +- .../PyInstaller/building/datastruct.pyi | 4 +- .../PyInstaller/building/splash.pyi | 7 +- .../stubs/pyinstaller/PyInstaller/compat.pyi | 1 + .../stubs/redis/METADATA.toml | 2 +- .../stubs/redis/redis/asyncio/client.pyi | 10 +- .../stubs/redis/redis/asyncio/connection.pyi | 8 +- .../stubs/redis/redis/asyncio/sentinel.pyi | 8 +- .../stubs/redis/redis/client.pyi | 2 +- .../stubs/redis/redis/commands/core.pyi | 8 +- .../stubs/redis/redis/connection.pyi | 14 +- .../stubs/redis/redis/sentinel.pyi | 4 +- .../stubs/setuptools/METADATA.toml | 2 +- .../setuptools/_distutils/archive_util.pyi | 20 + .../setuptools/_distutils/ccompiler.pyi | 152 ++++++ .../setuptools/_distutils/dep_util.pyi | 3 + .../setuptools/_distutils/sysconfig.pyi | 14 + .../setuptools/setuptools/_distutils/util.pyi | 30 ++ .../setuptools/command/easy_install.pyi | 124 +++-- .../setuptools/command/egg_info.pyi | 26 +- .../stubs/stdlib-list/METADATA.toml | 1 + .../stripe/stripe/api_resources/__init__.pyi | 1 + .../stripe/api_resources/shipping_rate.pyi | 9 + .../stubs/tree-sitter-languages/METADATA.toml | 2 +- .../stubs/typed-ast/METADATA.toml | 1 - .../stubs/typed-ast/typed_ast/__init__.pyi | 0 .../stubs/typed-ast/typed_ast/ast27.pyi | 337 ------------ .../stubs/typed-ast/typed_ast/ast3.pyi | 391 -------------- .../stubs/typed-ast/typed_ast/conversions.pyi | 3 - 398 files changed, 1889 insertions(+), 18990 deletions(-) delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/@tests/stubtest_allowlist.txt delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/model.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/utils.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FitsStubImagePlugin.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/stubtest_allowlist.txt delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_loader_option.py delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_register.py delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cimmutabledict.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/mxodbc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/pyodbc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cprocessors.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cresultproxy.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/databases/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/fdb.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/information_schema.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/json.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/mxodbc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/provision.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pymssql.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/aiomysql.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/cymysql.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/dml.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/enumerated.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/expression.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/json.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadb.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadbconnector.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqlconnector.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/oursql.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/provision.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pyodbc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/reflection.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/reserved_words.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/provision.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ext.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/provision.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2cffi.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pygresql.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pypostgresql.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ranges.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/aiosqlite.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/json.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/provision.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/pysqlcipher.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/pysqlite.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/mxodbc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pyodbc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/characteristics.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/create.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/events.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/mock.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/reflection.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/row.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/strategies.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/util.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/api.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/attr.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/legacy.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/registry.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/events.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/exc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/events.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/exc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/automap.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/compiler.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/declarative/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/declarative/extensions.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/horizontal_shard.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/hybrid.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/indexable.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/instrumentation.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/mutable.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/orderinglist.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/serializer.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/engine.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/orm/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/inspection.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/clsregistry.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dependency.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dynamic.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/evaluator.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/events.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/identity.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/loading.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/properties.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/state.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategies.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/sync.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/unitofwork.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/util.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/dbapi_proxy.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/events.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/processors.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/schema.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/annotation.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/coercions.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/crud.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/default_comparator.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/events.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/expression.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/lambdas.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/naming.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/operators.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/roles.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/util.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertsql.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/asyncio.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/engines.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/entities.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/exclusions.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/fixtures.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/mock.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/pickleable.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/bootstrap.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/plugin_base.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/pytestplugin.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/reinvent_fixtures_py2k.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/profiling.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/requirements.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/schema.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/warnings.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/types.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_compat_py3k.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_concurrency_py3k.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_preloaded.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/concurrency.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/queue.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/topological.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/annoy/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/annoylib.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/contextvars/@tests/stubtest_allowlist.txt delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/contextvars/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/contextvars/contextvars.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/ANSI.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/FSM.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/_async.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/exceptions.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/expect.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/fdpexpect.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/popen_spawn.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/pty_spawn.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/pxssh.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/replwrap.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/run.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/screen.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/spawnbase.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/utils.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/archive_util.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/ccompiler.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/dep_util.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/sysconfig.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/util.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/shipping_rate.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/typed-ast/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast27.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast3.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/conversions.pyi diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index cab255c4f..bffd613de 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -4290a25727800902d1733bf41fbc4300d2567c70 +f28a4a1774eecca1d6e5e8699fb08c28951e7ea5 diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi index 05b5421c2..ba2f638d8 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi @@ -1,7 +1,7 @@ import sys from abc import abstractmethod from types import MappingProxyType -from typing import ( # noqa: Y022,Y038 +from typing import ( # noqa: Y022,Y038,Y057 AbstractSet as Set, AsyncGenerator as AsyncGenerator, AsyncIterable as AsyncIterable, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_decimal.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_decimal.pyi index 60c609456..9a90760bd 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_decimal.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_decimal.pyi @@ -73,6 +73,7 @@ class Decimal: def from_float(cls, __f: float) -> Self: ... def __bool__(self) -> bool: ... def compare(self, other: _Decimal, context: Context | None = None) -> Decimal: ... + def __hash__(self) -> int: ... def as_tuple(self) -> DecimalTuple: ... def as_integer_ratio(self) -> tuple[int, int]: ... def to_eng_string(self, context: Context | None = None) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_weakref.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_weakref.pyi index b6044fac4..2402d0bfe 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_weakref.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_weakref.pyi @@ -22,6 +22,7 @@ class ReferenceType(Generic[_T]): __callback__: Callable[[ReferenceType[_T]], Any] def __new__(cls, __o: _T, __callback: Callable[[ReferenceType[_T]], Any] | None = ...) -> Self: ... def __call__(self) -> _T | None: ... + def __hash__(self) -> int: ... if sys.version_info >= (3, 9): def __class_getitem__(cls, item: Any) -> GenericAlias: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/__init__.pyi index 2ce066cac..c11465184 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/__init__.pyi @@ -36,8 +36,8 @@ _T = TypeVar("_T") # Aliases imported by multiple submodules in typeshed if sys.version_info >= (3, 12): - _AwaitableLike: TypeAlias = Awaitable[_T] - _CoroutineLike: TypeAlias = Coroutine[Any, Any, _T] + _AwaitableLike: TypeAlias = Awaitable[_T] # noqa: Y047 + _CoroutineLike: TypeAlias = Coroutine[Any, Any, _T] # noqa: Y047 else: _AwaitableLike: TypeAlias = Generator[Any, None, _T] | Awaitable[_T] _CoroutineLike: TypeAlias = Generator[Any, None, _T] | Coroutine[Any, Any, _T] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi index fd765fdb0..9924f728f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi @@ -263,7 +263,7 @@ class BaseEventLoop(AbstractEventLoop): server_hostname: str | None = None, ssl_handshake_timeout: float | None = None, ssl_shutdown_timeout: float | None = None, - ) -> Transport: ... + ) -> Transport | None: ... async def connect_accepted_socket( self, protocol_factory: Callable[[], _ProtocolT], @@ -317,7 +317,7 @@ class BaseEventLoop(AbstractEventLoop): server_side: bool = False, server_hostname: str | None = None, ssl_handshake_timeout: float | None = None, - ) -> Transport: ... + ) -> Transport | None: ... async def connect_accepted_socket( self, protocol_factory: Callable[[], _ProtocolT], diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi index 11112bb2e..b1b0fcfa5 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi @@ -86,6 +86,7 @@ class TimerHandle(Handle): loop: AbstractEventLoop, context: Context | None = None, ) -> None: ... + def __hash__(self) -> int: ... def when(self) -> float: ... def __lt__(self, other: TimerHandle) -> bool: ... def __le__(self, other: TimerHandle) -> bool: ... @@ -358,7 +359,7 @@ class AbstractEventLoop: server_hostname: str | None = None, ssl_handshake_timeout: float | None = None, ssl_shutdown_timeout: float | None = None, - ) -> Transport: ... + ) -> Transport | None: ... async def create_unix_server( self, protocol_factory: _ProtocolFactory, @@ -418,7 +419,7 @@ class AbstractEventLoop: server_side: bool = False, server_hostname: str | None = None, ssl_handshake_timeout: float | None = None, - ) -> Transport: ... + ) -> Transport | None: ... async def create_unix_server( self, protocol_factory: _ProtocolFactory, diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index b38717761..ea917bddb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -53,7 +53,7 @@ from typing import ( # noqa: Y022 overload, type_check_only, ) -from typing_extensions import ( # type: ignore +from typing_extensions import ( Concatenate, Literal, LiteralString, @@ -316,6 +316,7 @@ class int: def __float__(self) -> float: ... def __int__(self) -> int: ... def __abs__(self) -> int: ... + def __hash__(self) -> int: ... def __bool__(self) -> bool: ... def __index__(self) -> int: ... @@ -379,6 +380,7 @@ class float: def __int__(self) -> int: ... def __float__(self) -> float: ... def __abs__(self) -> float: ... + def __hash__(self) -> int: ... def __bool__(self) -> bool: ... class complex: @@ -418,6 +420,7 @@ class complex: def __neg__(self) -> complex: ... def __pos__(self) -> complex: ... def __abs__(self) -> float: ... + def __hash__(self) -> int: ... def __bool__(self) -> bool: ... if sys.version_info >= (3, 11): def __complex__(self) -> complex: ... @@ -465,7 +468,7 @@ class str(Sequence[str]): @overload def format(self: LiteralString, *args: LiteralString, **kwargs: LiteralString) -> LiteralString: ... @overload - def format(self, *args: object, **kwargs: object) -> str: ... # type: ignore + def format(self, *args: object, **kwargs: object) -> str: ... def format_map(self, map: _FormatMapMapping) -> str: ... def index(self, __sub: str, __start: SupportsIndex | None = ..., __end: SupportsIndex | None = ...) -> int: ... def isalnum(self) -> bool: ... @@ -585,6 +588,7 @@ class str(Sequence[str]): def __ge__(self, __value: str) -> bool: ... def __getitem__(self, __key: SupportsIndex | slice) -> str: ... def __gt__(self, __value: str) -> bool: ... + def __hash__(self) -> int: ... @overload def __iter__(self: LiteralString) -> Iterator[LiteralString]: ... @overload @@ -595,7 +599,7 @@ class str(Sequence[str]): @overload def __mod__(self: LiteralString, __value: LiteralString | tuple[LiteralString, ...]) -> LiteralString: ... @overload - def __mod__(self, __value: Any) -> str: ... # type: ignore + def __mod__(self, __value: Any) -> str: ... @overload def __mul__(self: LiteralString, __value: SupportsIndex) -> LiteralString: ... @overload @@ -690,6 +694,7 @@ class bytes(Sequence[int]): def maketrans(__frm: ReadableBuffer, __to: ReadableBuffer) -> bytes: ... def __len__(self) -> int: ... def __iter__(self) -> Iterator[int]: ... + def __hash__(self) -> int: ... @overload def __getitem__(self, __key: SupportsIndex) -> int: ... @overload @@ -1097,7 +1102,13 @@ class dict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): __hash__: ClassVar[None] # type: ignore[assignment] if sys.version_info >= (3, 9): def __class_getitem__(cls, __item: Any) -> GenericAlias: ... + @overload + def __or__(self, __value: Mapping[_KT, _VT]) -> dict[_KT, _VT]: ... + @overload def __or__(self, __value: Mapping[_T1, _T2]) -> dict[_KT | _T1, _VT | _T2]: ... + @overload + def __ror__(self, __value: Mapping[_KT, _VT]) -> dict[_KT, _VT]: ... + @overload def __ror__(self, __value: Mapping[_T1, _T2]) -> dict[_KT | _T1, _VT | _T2]: ... # dict.__ior__ should be kept roughly in line with MutableMapping.update() @overload # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/codecs.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/codecs.pyi index 3f6d2d3d1..c9b6a4a82 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/codecs.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/codecs.pyi @@ -96,6 +96,7 @@ class _IncrementalDecoder(Protocol): def __call__(self, errors: str = ...) -> IncrementalDecoder: ... class CodecInfo(tuple[_Encoder, _Decoder, _StreamReader, _StreamWriter]): + _is_text_encoding: bool @property def encode(self) -> _Encoder: ... @property diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi index d5ca17c74..36d791019 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi @@ -1,6 +1,6 @@ import sys from _collections_abc import dict_items, dict_keys, dict_values -from _typeshed import SupportsKeysAndGetItem, SupportsRichComparison, SupportsRichComparisonT +from _typeshed import SupportsItems, SupportsKeysAndGetItem, SupportsRichComparison, SupportsRichComparisonT from typing import Any, Generic, NoReturn, TypeVar, overload from typing_extensions import Self, SupportsIndex, final @@ -83,8 +83,14 @@ class UserDict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): @overload def fromkeys(cls, iterable: Iterable[_T], value: _S) -> UserDict[_T, _S]: ... if sys.version_info >= (3, 9): + @overload + def __or__(self, other: UserDict[_KT, _VT] | dict[_KT, _VT]) -> Self: ... + @overload def __or__(self, other: UserDict[_T1, _T2] | dict[_T1, _T2]) -> UserDict[_KT | _T1, _VT | _T2]: ... - def __ror__(self, other: UserDict[_T1, _T2] | dict[_T1, _T2]) -> UserDict[_KT | _T1, _VT | _T2]: ... # type: ignore[misc] + @overload # type: ignore[misc] + def __ror__(self, other: UserDict[_KT, _VT] | dict[_KT, _VT]) -> Self: ... + @overload # type: ignore[misc] + def __ror__(self, other: UserDict[_T1, _T2] | dict[_T1, _T2]) -> UserDict[_KT | _T1, _VT | _T2]: ... # UserDict.__ior__ should be kept roughly in line with MutableMapping.update() @overload # type: ignore[misc] def __ior__(self, other: SupportsKeysAndGetItem[_KT, _VT]) -> Self: ... @@ -299,10 +305,10 @@ class Counter(dict[_T, int], Generic[_T]): def __pos__(self) -> Counter[_T]: ... def __neg__(self) -> Counter[_T]: ... # several type: ignores because __iadd__ is supposedly incompatible with __add__, etc. - def __iadd__(self, other: Counter[_T]) -> Self: ... # type: ignore[misc] - def __isub__(self, other: Counter[_T]) -> Self: ... - def __iand__(self, other: Counter[_T]) -> Self: ... - def __ior__(self, other: Counter[_T]) -> Self: ... # type: ignore[override,misc] + def __iadd__(self, other: SupportsItems[_T, int]) -> Self: ... # type: ignore[misc] + def __isub__(self, other: SupportsItems[_T, int]) -> Self: ... + def __iand__(self, other: SupportsItems[_T, int]) -> Self: ... + def __ior__(self, other: SupportsItems[_T, int]) -> Self: ... # type: ignore[override,misc] if sys.version_info >= (3, 10): def total(self) -> int: ... def __le__(self, other: Counter[Any]) -> bool: ... @@ -391,6 +397,15 @@ class defaultdict(dict[_KT, _VT], Generic[_KT, _VT]): def __missing__(self, __key: _KT) -> _VT: ... def __copy__(self) -> Self: ... def copy(self) -> Self: ... + if sys.version_info >= (3, 9): + @overload + def __or__(self, __value: Mapping[_KT, _VT]) -> Self: ... + @overload + def __or__(self, __value: Mapping[_T1, _T2]) -> defaultdict[_KT | _T1, _VT | _T2]: ... + @overload + def __ror__(self, __value: Mapping[_KT, _VT]) -> Self: ... + @overload + def __ror__(self, __value: Mapping[_T1, _T2]) -> defaultdict[_KT | _T1, _VT | _T2]: ... class ChainMap(MutableMapping[_KT, _VT], Generic[_KT, _VT]): maps: list[MutableMapping[_KT, _VT]] @@ -425,7 +440,13 @@ class ChainMap(MutableMapping[_KT, _VT], Generic[_KT, _VT]): @overload def fromkeys(cls, __iterable: Iterable[_T], __value: _S) -> ChainMap[_T, _S]: ... if sys.version_info >= (3, 9): + @overload + def __or__(self, other: Mapping[_KT, _VT]) -> Self: ... + @overload def __or__(self, other: Mapping[_T1, _T2]) -> ChainMap[_KT | _T1, _VT | _T2]: ... + @overload + def __ror__(self, other: Mapping[_KT, _VT]) -> Self: ... + @overload def __ror__(self, other: Mapping[_T1, _T2]) -> ChainMap[_KT | _T1, _VT | _T2]: ... # ChainMap.__ior__ should be kept roughly in line with MutableMapping.update() @overload # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi index 2bb2264c9..00d511915 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi @@ -35,6 +35,7 @@ class timezone(tzinfo): def tzname(self, __dt: datetime | None) -> str: ... def utcoffset(self, __dt: datetime | None) -> timedelta: ... def dst(self, __dt: datetime | None) -> None: ... + def __hash__(self) -> int: ... if sys.version_info >= (3, 11): UTC: timezone @@ -106,6 +107,7 @@ class date: @overload def __sub__(self, __value: date) -> timedelta: ... + def __hash__(self) -> int: ... def weekday(self) -> int: ... def isoweekday(self) -> int: ... if sys.version_info >= (3, 9): @@ -143,6 +145,7 @@ class time: def __lt__(self, __value: time) -> bool: ... def __ge__(self, __value: time) -> bool: ... def __gt__(self, __value: time) -> bool: ... + def __hash__(self) -> int: ... def isoformat(self, timespec: str = ...) -> str: ... @classmethod def fromisoformat(cls, __time_string: str) -> Self: ... @@ -217,6 +220,7 @@ class timedelta: def __ge__(self, __value: timedelta) -> bool: ... def __gt__(self, __value: timedelta) -> bool: ... def __bool__(self) -> bool: ... + def __hash__(self) -> int: ... class datetime(date): min: ClassVar[datetime] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/doctest.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/doctest.pyi index 88d066fdc..f3c05781a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/doctest.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/doctest.pyi @@ -85,6 +85,7 @@ class Example: indent: int = 0, options: dict[int, bool] | None = None, ) -> None: ... + def __hash__(self) -> int: ... def __eq__(self, other: object) -> bool: ... class DocTest: @@ -103,6 +104,7 @@ class DocTest: lineno: int | None, docstring: str | None, ) -> None: ... + def __hash__(self) -> int: ... def __lt__(self, other: DocTest) -> bool: ... def __eq__(self, other: object) -> bool: ... @@ -210,6 +212,7 @@ class DocTestCase(unittest.TestCase): ) -> None: ... def runTest(self) -> None: ... def format_failure(self, err: str) -> str: ... + def __hash__(self) -> int: ... def __eq__(self, other: object) -> bool: ... class SkipDocTestCase(DocTestCase): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/email/charset.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/email/charset.pyi index e612847c7..d61950a26 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/email/charset.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/email/charset.pyi @@ -1,4 +1,6 @@ -from collections.abc import Iterator +from collections.abc import Callable, Iterator +from email.message import Message +from typing import overload __all__ = ["Charset", "add_alias", "add_charset", "add_codec"] @@ -14,10 +16,13 @@ class Charset: input_codec: str | None output_codec: str | None def __init__(self, input_charset: str = "us-ascii") -> None: ... - def get_body_encoding(self) -> str: ... + def get_body_encoding(self) -> str | Callable[[Message], None]: ... def get_output_charset(self) -> str | None: ... def header_encode(self, string: str) -> str: ... def header_encode_lines(self, string: str, maxlengths: Iterator[int]) -> list[str]: ... + @overload + def body_encode(self, string: None) -> None: ... + @overload def body_encode(self, string: str) -> str: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, __value: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/email/utils.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/email/utils.pyi index 090ddf9e3..186e76805 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/email/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/email/utils.pyi @@ -1,5 +1,6 @@ import datetime import sys +from _typeshed import Unused from email import _ParamType from email.charset import Charset from typing import overload @@ -51,9 +52,15 @@ else: def mktime_tz(data: _PDTZ) -> int: ... def formatdate(timeval: float | None = None, localtime: bool = False, usegmt: bool = False) -> str: ... def format_datetime(dt: datetime.datetime, usegmt: bool = False) -> str: ... -def localtime(dt: datetime.datetime | None = None, isdst: int = -1) -> datetime.datetime: ... + +if sys.version_info >= (3, 12): + def localtime(dt: datetime.datetime | None = None, isdst: Unused = None) -> datetime.datetime: ... + +else: + def localtime(dt: datetime.datetime | None = None, isdst: int = -1) -> datetime.datetime: ... + def make_msgid(idstring: str | None = None, domain: str | None = None) -> str: ... -def decode_rfc2231(s: str) -> tuple[str | None, str | None, str]: ... +def decode_rfc2231(s: str) -> tuple[str | None, str | None, str]: ... # May return list[str]. See issue #10431 for details. def encode_rfc2231(s: str, charset: str | None = None, language: str | None = None) -> str: ... def collapse_rfc2231_value(value: _ParamType, errors: str = "replace", fallback_charset: str = "us-ascii") -> str: ... def decode_params(params: list[tuple[str, str]]) -> list[tuple[str, _ParamType]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi index 383c336ed..96a96dbce 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi @@ -4,7 +4,7 @@ import types from _typeshed import SupportsKeysAndGetItem, Unused from abc import ABCMeta from builtins import property as _builtins_property -from collections.abc import Iterable, Iterator, Mapping +from collections.abc import Callable, Iterable, Iterator, Mapping from typing import Any, Generic, TypeVar, overload from typing_extensions import Literal, Self, TypeAlias @@ -34,6 +34,9 @@ if sys.version_info >= (3, 11): "verify", ] +if sys.version_info >= (3, 12): + __all__ += ["pickle_by_enum_name", "pickle_by_global_name"] + _EnumMemberT = TypeVar("_EnumMemberT") _EnumerationT = TypeVar("_EnumerationT", bound=type[Enum]) @@ -234,6 +237,8 @@ if sys.version_info >= (3, 11): _value_: str @_magic_enum_attr def value(self) -> str: ... + @staticmethod + def _generate_next_value_(name: str, start: int, count: int, last_values: list[str]) -> str: ... class EnumCheck(StrEnum): CONTINUOUS: str @@ -289,3 +294,7 @@ class auto(IntFlag): @_magic_enum_attr def value(self) -> Any: ... def __new__(cls) -> Self: ... + +if sys.version_info >= (3, 12): + def pickle_by_global_name(self: Enum, proto: int) -> str: ... + def pickle_by_enum_name(self: _EnumMemberT, proto: int) -> tuple[Callable[..., Any], tuple[type[_EnumMemberT], str]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/errno.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/errno.pyi index 28874d44f..84d2b44a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/errno.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/errno.pyi @@ -91,9 +91,15 @@ ECANCELED: int # undocumented ENOTRECOVERABLE: int # undocumented EOWNERDEAD: int # undocumented +if sys.platform == "sunos5" or sys.platform == "solaris": # noqa: Y008 + ELOCKUNMAPPED: int + ENOTACTIVE: int + if sys.platform != "win32": ENOTBLK: int EMULTIHOP: int + +if sys.platform == "darwin": # All of the below are undocumented EAUTH: int EBADARCH: int @@ -112,9 +118,8 @@ if sys.platform != "win32": EPWROFF: int ERPCMISMATCH: int ESHLIBVERS: int - - if sys.platform != "darwin" or sys.version_info >= (3, 11): - EQFULL: int # undocumented + if sys.version_info >= (3, 11): + EQFULL: int if sys.platform != "darwin": EDEADLOCK: int @@ -164,9 +169,6 @@ if sys.platform != "win32" and sys.platform != "darwin": ENOKEY: int ENOMEDIUM: int ERFKILL: int - EL: int - ELOCKUNMAPPED: int - ENOTACTIVE: int if sys.platform == "win32": # All of these are undocumented diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi index 9c7c0c1c4..41ece1b05 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi @@ -1,6 +1,7 @@ import email.message import io import ssl +import sys import types from _typeshed import ReadableBuffer, SupportsRead, WriteableBuffer from collections.abc import Callable, Iterable, Iterator, Mapping @@ -175,19 +176,31 @@ class HTTPConnection: class HTTPSConnection(HTTPConnection): # Can be `None` if `.connect()` was not called: sock: ssl.SSLSocket | Any - def __init__( - self, - host: str, - port: int | None = None, - key_file: str | None = None, - cert_file: str | None = None, - timeout: float | None = ..., - source_address: tuple[str, int] | None = None, - *, - context: ssl.SSLContext | None = None, - check_hostname: bool | None = None, - blocksize: int = 8192, - ) -> None: ... + if sys.version_info >= (3, 12): + def __init__( + self, + host: str, + port: str | None = None, + *, + timeout: float | None = ..., + source_address: tuple[str, int] | None = None, + context: ssl.SSLContext | None = None, + blocksize: int = 8192, + ) -> None: ... + else: + def __init__( + self, + host: str, + port: int | None = None, + key_file: str | None = None, + cert_file: str | None = None, + timeout: float | None = ..., + source_address: tuple[str, int] | None = None, + *, + context: ssl.SSLContext | None = None, + check_hostname: bool | None = None, + blocksize: int = 8192, + ) -> None: ... class HTTPException(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi index 2b07200f1..9af4c39ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi @@ -128,8 +128,21 @@ if sys.version_info >= (3, 11): "walktree", ] + if sys.version_info >= (3, 12): + __all__ += [ + "markcoroutinefunction", + "AGEN_CLOSED", + "AGEN_CREATED", + "AGEN_RUNNING", + "AGEN_SUSPENDED", + "getasyncgenlocals", + "getasyncgenstate", + "BufferFlags", + ] + _P = ParamSpec("_P") _T = TypeVar("_T") +_F = TypeVar("_F", bound=Callable[..., Any]) _T_cont = TypeVar("_T_cont", contravariant=True) _V_cont = TypeVar("_V_cont", contravariant=True) @@ -184,6 +197,9 @@ def isclass(object: object) -> TypeGuard[type[Any]]: ... def ismethod(object: object) -> TypeGuard[MethodType]: ... def isfunction(object: object) -> TypeGuard[FunctionType]: ... +if sys.version_info >= (3, 12): + def markcoroutinefunction(func: _F) -> _F: ... + if sys.version_info >= (3, 8): @overload def isgeneratorfunction(obj: Callable[..., Generator[Any, Any, Any]]) -> bool: ... @@ -360,6 +376,17 @@ class _ParameterKind(enum.IntEnum): @property def description(self) -> str: ... +if sys.version_info >= (3, 12): + AGEN_CREATED: Literal["AGEN_CREATED"] + AGEN_RUNNING: Literal["AGEN_RUNNING"] + AGEN_SUSPENDED: Literal["AGEN_SUSPENDED"] + AGEN_CLOSED: Literal["AGEN_CLOSED"] + + def getasyncgenstate( + agen: AsyncGenerator[Any, Any] + ) -> Literal["AGEN_CREATED", "AGEN_RUNNING", "AGEN_SUSPENDED", "AGEN_CLOSED"]: ... + def getasyncgenlocals(agen: AsyncGeneratorType[Any, Any]) -> dict[str, Any]: ... + class Parameter: def __init__(self, name: str, kind: _ParameterKind, *, default: Any = ..., annotation: Any = ...) -> None: ... empty = _empty diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ipaddress.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ipaddress.pyi index 7a4146885..fc42cf03e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ipaddress.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ipaddress.pyi @@ -34,6 +34,7 @@ class _IPAddressBase: class _BaseAddress(_IPAddressBase, SupportsInt): def __init__(self, address: object) -> None: ... def __add__(self, other: int) -> Self: ... + def __hash__(self) -> int: ... def __int__(self) -> int: ... def __sub__(self, other: int) -> Self: ... if sys.version_info >= (3, 9): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi index 3c2ae0fe7..a509ec3af 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pathlib.pyi @@ -39,6 +39,7 @@ class PurePath(PathLike[str]): @property def stem(self) -> str: ... def __new__(cls, *args: StrPath) -> Self: ... + def __hash__(self) -> int: ... def __eq__(self, other: object) -> bool: ... def __fspath__(self) -> str: ... def __lt__(self, other: PurePath) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/plistlib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/plistlib.pyi index 5b76c935f..bd5525484 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/plistlib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/plistlib.pyi @@ -102,6 +102,7 @@ if sys.version_info >= (3, 8): def __init__(self, data: int) -> None: ... def __index__(self) -> int: ... def __reduce__(self) -> tuple[type[Self], tuple[int]]: ... + def __hash__(self) -> int: ... def __eq__(self, other: object) -> bool: ... class InvalidFileException(ValueError): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi index ed97f1918..c993af390 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi @@ -195,12 +195,24 @@ def resolve(thing: str | object, forceload: bool = ...) -> tuple[object, str] | def render_doc( thing: str | object, title: str = "Python Library Documentation: %s", forceload: bool = ..., renderer: Doc | None = None ) -> str: ... -def doc( - thing: str | object, - title: str = "Python Library Documentation: %s", - forceload: bool = ..., - output: SupportsWrite[str] | None = None, -) -> None: ... + +if sys.version_info >= (3, 12): + def doc( + thing: str | object, + title: str = "Python Library Documentation: %s", + forceload: bool = ..., + output: SupportsWrite[str] | None = None, + is_cli: bool = False, + ) -> None: ... + +else: + def doc( + thing: str | object, + title: str = "Python Library Documentation: %s", + forceload: bool = ..., + output: SupportsWrite[str] | None = None, + ) -> None: ... + def writedoc(thing: str | object, forceload: bool = ...) -> None: ... def writedocs(dir: str, pkgpath: str = "", done: Any | None = None) -> None: ... @@ -216,7 +228,11 @@ class Helper: def __call__(self, request: str | Helper | object = ...) -> None: ... def interact(self) -> None: ... def getline(self, prompt: str) -> str: ... - def help(self, request: Any) -> None: ... + if sys.version_info >= (3, 12): + def help(self, request: Any, is_cli: bool = False) -> None: ... + else: + def help(self, request: Any) -> None: ... + def intro(self) -> None: ... def list(self, items: _list[str], columns: int = 4, width: int = 80) -> None: ... def listkeywords(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi index e1ffc573b..5dd92ec8e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi @@ -468,6 +468,8 @@ if sys.version_info >= (3, 12): ETHERTYPE_IPV6 as ETHERTYPE_IPV6, ETHERTYPE_VLAN as ETHERTYPE_VLAN, ) +if sys.version_info >= (3, 11) and sys.platform == "darwin": + from _socket import TCP_CONNECTION_INFO as TCP_CONNECTION_INFO # Re-exported from errno EBADF: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi index 24974f787..21301c51f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi @@ -419,6 +419,7 @@ class Row: def __getitem__(self, __key: int | str) -> Any: ... @overload def __getitem__(self, __key: slice) -> tuple[Any, ...]: ... + def __hash__(self) -> int: ... def __iter__(self) -> Iterator[Any]: ... def __len__(self) -> int: ... # These return NotImplemented for anything that is not a Row. diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi index af5fcec6a..07174f453 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/statistics.pyi @@ -113,6 +113,7 @@ if sys.version_info >= (3, 8): __radd__ = __add__ def __rsub__(self, x2: float | NormalDist) -> NormalDist: ... __rmul__ = __mul__ + def __hash__(self) -> int: ... if sys.version_info >= (3, 12): def correlation( diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi index b251f8b9d..ea0430368 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tempfile.pyi @@ -380,6 +380,7 @@ else: # It does not actually derive from IO[AnyStr], but it does mostly behave # like one. class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase): + _file: IO[AnyStr] @property def encoding(self) -> str: ... # undocumented @property diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi index 3291b0c9d..ca6434a85 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi @@ -1633,6 +1633,7 @@ class Canvas(Widget, XView, YView): activefill: str = ..., activestipple: str = ..., anchor: _Anchor = ..., + angle: float | str = ..., disabledfill: str = ..., disabledstipple: str = ..., fill: str = ..., @@ -1653,6 +1654,7 @@ class Canvas(Widget, XView, YView): activefill: str = ..., activestipple: str = ..., anchor: _Anchor = ..., + angle: float | str = ..., disabledfill: str = ..., disabledstipple: str = ..., fill: str = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi index 6909c765c..e5468ce4e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi @@ -17,7 +17,7 @@ from importlib.machinery import ModuleSpec # pytype crashes if types.MappingProxyType inherits from collections.abc.Mapping instead of typing.Mapping from typing import Any, ClassVar, Generic, Mapping, Protocol, TypeVar, overload # noqa: Y022 -from typing_extensions import Literal, ParamSpec, TypeVarTuple, final +from typing_extensions import Literal, ParamSpec, Self, TypeVarTuple, final __all__ = [ "FunctionType", @@ -63,11 +63,8 @@ if sys.version_info >= (3, 12): _T1 = TypeVar("_T1") _T2 = TypeVar("_T2") -_T_co = TypeVar("_T_co", covariant=True) -_T_contra = TypeVar("_T_contra", contravariant=True) _KT = TypeVar("_KT") _VT_co = TypeVar("_VT_co", covariant=True) -_V_co = TypeVar("_V_co", covariant=True) @final class _Cell: @@ -351,27 +348,31 @@ class ModuleType: # using `builtins.__import__` or `importlib.import_module` less painful def __getattr__(self, name: str) -> Any: ... +_YieldT_co = TypeVar("_YieldT_co", covariant=True) +_SendT_contra = TypeVar("_SendT_contra", contravariant=True) +_ReturnT_co = TypeVar("_ReturnT_co", covariant=True) + @final -class GeneratorType(Generator[_T_co, _T_contra, _V_co]): +class GeneratorType(Generator[_YieldT_co, _SendT_contra, _ReturnT_co]): @property - def gi_yieldfrom(self) -> GeneratorType[_T_co, _T_contra, Any] | None: ... + def gi_yieldfrom(self) -> GeneratorType[_YieldT_co, _SendT_contra, Any] | None: ... if sys.version_info >= (3, 11): @property def gi_suspended(self) -> bool: ... __name__: str __qualname__: str - def __iter__(self) -> GeneratorType[_T_co, _T_contra, _V_co]: ... - def __next__(self) -> _T_co: ... - def send(self, __arg: _T_contra) -> _T_co: ... + def __iter__(self) -> Self: ... + def __next__(self) -> _YieldT_co: ... + def send(self, __arg: _SendT_contra) -> _YieldT_co: ... @overload def throw( self, __typ: type[BaseException], __val: BaseException | object = ..., __tb: TracebackType | None = ... - ) -> _T_co: ... + ) -> _YieldT_co: ... @overload - def throw(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = ...) -> _T_co: ... + def throw(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = ...) -> _YieldT_co: ... @final -class AsyncGeneratorType(AsyncGenerator[_T_co, _T_contra]): +class AsyncGeneratorType(AsyncGenerator[_YieldT_co, _SendT_contra]): @property def ag_await(self) -> Awaitable[Any] | None: ... __name__: str @@ -380,21 +381,21 @@ class AsyncGeneratorType(AsyncGenerator[_T_co, _T_contra]): @property def ag_suspended(self) -> bool: ... - def __aiter__(self) -> AsyncGeneratorType[_T_co, _T_contra]: ... - def __anext__(self) -> Coroutine[Any, Any, _T_co]: ... - def asend(self, __val: _T_contra) -> Coroutine[Any, Any, _T_co]: ... + def __aiter__(self) -> Self: ... + def __anext__(self) -> Coroutine[Any, Any, _YieldT_co]: ... + def asend(self, __val: _SendT_contra) -> Coroutine[Any, Any, _YieldT_co]: ... @overload async def athrow( self, __typ: type[BaseException], __val: BaseException | object = ..., __tb: TracebackType | None = ... - ) -> _T_co: ... + ) -> _YieldT_co: ... @overload - async def athrow(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = ...) -> _T_co: ... + async def athrow(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = ...) -> _YieldT_co: ... def aclose(self) -> Coroutine[Any, Any, None]: ... if sys.version_info >= (3, 9): def __class_getitem__(cls, __item: Any) -> GenericAlias: ... @final -class CoroutineType(Coroutine[_T_co, _T_contra, _V_co]): +class CoroutineType(Coroutine[_YieldT_co, _SendT_contra, _ReturnT_co]): __name__: str __qualname__: str @property @@ -404,14 +405,14 @@ class CoroutineType(Coroutine[_T_co, _T_contra, _V_co]): def cr_suspended(self) -> bool: ... def close(self) -> None: ... - def __await__(self) -> Generator[Any, None, _V_co]: ... - def send(self, __arg: _T_contra) -> _T_co: ... + def __await__(self) -> Generator[Any, None, _ReturnT_co]: ... + def send(self, __arg: _SendT_contra) -> _YieldT_co: ... @overload def throw( self, __typ: type[BaseException], __val: BaseException | object = ..., __tb: TracebackType | None = ... - ) -> _T_co: ... + ) -> _YieldT_co: ... @overload - def throw(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = ...) -> _T_co: ... + def throw(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = ...) -> _YieldT_co: ... class _StaticFunctionType: # Fictional type to correct the type of MethodType.__func__. diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi index 08d7da5e8..7496a0920 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi @@ -289,10 +289,8 @@ _S = TypeVar("_S") _KT = TypeVar("_KT") # Key type. _VT = TypeVar("_VT") # Value type. _T_co = TypeVar("_T_co", covariant=True) # Any type covariant containers. -_V_co = TypeVar("_V_co", covariant=True) # Any type covariant containers. _KT_co = TypeVar("_KT_co", covariant=True) # Key type covariant containers. _VT_co = TypeVar("_VT_co", covariant=True) # Value type covariant containers. -_T_contra = TypeVar("_T_contra", contravariant=True) # Ditto contravariant. _TC = TypeVar("_TC", bound=Type[object]) def no_type_check(arg: _F) -> _F: ... @@ -397,20 +395,24 @@ class Reversible(Iterable[_T_co], Protocol[_T_co]): @abstractmethod def __reversed__(self) -> Iterator[_T_co]: ... -class Generator(Iterator[_T_co], Generic[_T_co, _T_contra, _V_co]): - def __next__(self) -> _T_co: ... +_YieldT_co = TypeVar("_YieldT_co", covariant=True) +_SendT_contra = TypeVar("_SendT_contra", contravariant=True) +_ReturnT_co = TypeVar("_ReturnT_co", covariant=True) + +class Generator(Iterator[_YieldT_co], Generic[_YieldT_co, _SendT_contra, _ReturnT_co]): + def __next__(self) -> _YieldT_co: ... @abstractmethod - def send(self, __value: _T_contra) -> _T_co: ... + def send(self, __value: _SendT_contra) -> _YieldT_co: ... @overload @abstractmethod def throw( self, __typ: Type[BaseException], __val: BaseException | object = None, __tb: TracebackType | None = None - ) -> _T_co: ... + ) -> _YieldT_co: ... @overload @abstractmethod - def throw(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = None) -> _T_co: ... + def throw(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = None) -> _YieldT_co: ... def close(self) -> None: ... - def __iter__(self) -> Generator[_T_co, _T_contra, _V_co]: ... + def __iter__(self) -> Generator[_YieldT_co, _SendT_contra, _ReturnT_co]: ... @property def gi_code(self) -> CodeType: ... @property @@ -425,7 +427,7 @@ class Awaitable(Protocol[_T_co]): @abstractmethod def __await__(self) -> Generator[Any, None, _T_co]: ... -class Coroutine(Awaitable[_V_co], Generic[_T_co, _T_contra, _V_co]): +class Coroutine(Awaitable[_ReturnT_co], Generic[_YieldT_co, _SendT_contra, _ReturnT_co]): __name__: str __qualname__: str @property @@ -437,15 +439,15 @@ class Coroutine(Awaitable[_V_co], Generic[_T_co, _T_contra, _V_co]): @property def cr_running(self) -> bool: ... @abstractmethod - def send(self, __value: _T_contra) -> _T_co: ... + def send(self, __value: _SendT_contra) -> _YieldT_co: ... @overload @abstractmethod def throw( self, __typ: Type[BaseException], __val: BaseException | object = None, __tb: TracebackType | None = None - ) -> _T_co: ... + ) -> _YieldT_co: ... @overload @abstractmethod - def throw(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = None) -> _T_co: ... + def throw(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = None) -> _YieldT_co: ... @abstractmethod def close(self) -> None: ... @@ -453,7 +455,10 @@ class Coroutine(Awaitable[_V_co], Generic[_T_co, _T_contra, _V_co]): # The parameters correspond to Generator, but the 4th is the original type. @type_check_only class AwaitableGenerator( - Awaitable[_V_co], Generator[_T_co, _T_contra, _V_co], Generic[_T_co, _T_contra, _V_co, _S], metaclass=ABCMeta + Awaitable[_ReturnT_co], + Generator[_YieldT_co, _SendT_contra, _ReturnT_co], + Generic[_YieldT_co, _SendT_contra, _ReturnT_co, _S], + metaclass=ABCMeta, ): ... @runtime_checkable @@ -467,18 +472,18 @@ class AsyncIterator(AsyncIterable[_T_co], Protocol[_T_co]): def __anext__(self) -> Awaitable[_T_co]: ... def __aiter__(self) -> AsyncIterator[_T_co]: ... -class AsyncGenerator(AsyncIterator[_T_co], Generic[_T_co, _T_contra]): - def __anext__(self) -> Awaitable[_T_co]: ... +class AsyncGenerator(AsyncIterator[_YieldT_co], Generic[_YieldT_co, _SendT_contra]): + def __anext__(self) -> Awaitable[_YieldT_co]: ... @abstractmethod - def asend(self, __value: _T_contra) -> Awaitable[_T_co]: ... + def asend(self, __value: _SendT_contra) -> Awaitable[_YieldT_co]: ... @overload @abstractmethod def athrow( self, __typ: Type[BaseException], __val: BaseException | object = None, __tb: TracebackType | None = None - ) -> Awaitable[_T_co]: ... + ) -> Awaitable[_YieldT_co]: ... @overload @abstractmethod - def athrow(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = None) -> Awaitable[_T_co]: ... + def athrow(self, __typ: BaseException, __val: None = None, __tb: TracebackType | None = None) -> Awaitable[_YieldT_co]: ... def aclose(self) -> Awaitable[None]: ... @property def ag_await(self) -> Any: ... @@ -916,6 +921,7 @@ class ForwardRef: def _evaluate(self, globalns: dict[str, Any] | None, localns: dict[str, Any] | None) -> Any | None: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... if sys.version_info >= (3, 11): def __or__(self, other: Any) -> _SpecialForm: ... def __ror__(self, other: Any) -> _SpecialForm: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi index 1f554da52..0ed0701cc 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi @@ -3,13 +3,14 @@ from collections.abc import Awaitable, Callable, Coroutine, Iterable, Mapping, S from contextlib import _GeneratorContextManager from types import TracebackType from typing import Any, Generic, TypeVar, overload -from typing_extensions import Final, Literal, Self, TypeAlias +from typing_extensions import Final, Literal, ParamSpec, Self, TypeAlias _T = TypeVar("_T") _TT = TypeVar("_TT", bound=type[Any]) _R = TypeVar("_R") _F = TypeVar("_F", bound=Callable[..., Any]) _AF = TypeVar("_AF", bound=Callable[..., Coroutine[Any, Any, Any]]) +_P = ParamSpec("_P") if sys.version_info >= (3, 8): __all__ = ( @@ -234,7 +235,7 @@ class _patch(Generic[_T]): @overload def __call__(self, func: _TT) -> _TT: ... @overload - def __call__(self, func: Callable[..., _R]) -> Callable[..., _R]: ... + def __call__(self, func: Callable[_P, _R]) -> Callable[_P, _R]: ... if sys.version_info >= (3, 8): def decoration_helper( self, patched: _patch[Any], args: Sequence[Any], keywargs: Any diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi index 74ce4ebd6..fd8764653 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi @@ -1,11 +1,9 @@ +import builtins import sys from _typeshed import Unused from enum import Enum from typing_extensions import TypeAlias -# Because UUID has properties called int and bytes we need to rename these temporarily. -_Int: TypeAlias = int -_Bytes: TypeAlias = bytes _FieldsType: TypeAlias = tuple[int, int, int, int, int, int] class SafeUUID(Enum): @@ -17,49 +15,49 @@ class UUID: def __init__( self, hex: str | None = None, - bytes: _Bytes | None = None, - bytes_le: _Bytes | None = None, + bytes: builtins.bytes | None = None, + bytes_le: builtins.bytes | None = None, fields: _FieldsType | None = None, - int: _Int | None = None, - version: _Int | None = None, + int: builtins.int | None = None, + version: builtins.int | None = None, *, is_safe: SafeUUID = ..., ) -> None: ... @property def is_safe(self) -> SafeUUID: ... @property - def bytes(self) -> _Bytes: ... + def bytes(self) -> builtins.bytes: ... @property - def bytes_le(self) -> _Bytes: ... + def bytes_le(self) -> builtins.bytes: ... @property - def clock_seq(self) -> _Int: ... + def clock_seq(self) -> builtins.int: ... @property - def clock_seq_hi_variant(self) -> _Int: ... + def clock_seq_hi_variant(self) -> builtins.int: ... @property - def clock_seq_low(self) -> _Int: ... + def clock_seq_low(self) -> builtins.int: ... @property def fields(self) -> _FieldsType: ... @property def hex(self) -> str: ... @property - def int(self) -> _Int: ... + def int(self) -> builtins.int: ... @property - def node(self) -> _Int: ... + def node(self) -> builtins.int: ... @property - def time(self) -> _Int: ... + def time(self) -> builtins.int: ... @property - def time_hi_version(self) -> _Int: ... + def time_hi_version(self) -> builtins.int: ... @property - def time_low(self) -> _Int: ... + def time_low(self) -> builtins.int: ... @property - def time_mid(self) -> _Int: ... + def time_mid(self) -> builtins.int: ... @property def urn(self) -> str: ... @property def variant(self) -> str: ... @property - def version(self) -> _Int | None: ... - def __int__(self) -> _Int: ... + def version(self) -> builtins.int | None: ... + def __int__(self) -> builtins.int: ... def __eq__(self, other: object) -> bool: ... def __lt__(self, other: UUID) -> bool: ... def __le__(self, other: UUID) -> bool: ... @@ -72,7 +70,7 @@ if sys.version_info >= (3, 9): else: def getnode(*, getters: Unused = None) -> int: ... # undocumented -def uuid1(node: _Int | None = None, clock_seq: _Int | None = None) -> UUID: ... +def uuid1(node: int | None = None, clock_seq: int | None = None) -> UUID: ... if sys.version_info >= (3, 12): def uuid3(namespace: UUID, name: str | bytes) -> UUID: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml index 8f67dd68b..4c491c27e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml @@ -1,4 +1,4 @@ -version = "3.0.*" +version = "4.0.*" # Requires a version of flask with a `py.typed` file requires = ["Flask>=2.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml index 7979b27a6..7bbc03e43 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml @@ -1,6 +1,6 @@ version = "4.0.*" -# Requires a version of flask with a `py.typed` file -requires = ["Flask>=2.0.0", "types-Flask-SQLAlchemy"] +# Requires versions of flask and Flask-SQLAlchemy with `py.typed` files +requires = ["Flask>=2.0.0", "Flask-SQLAlchemy>=3.0.1"] partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/@tests/stubtest_allowlist.txt deleted file mode 100644 index 2187a2368..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/@tests/stubtest_allowlist.txt +++ /dev/null @@ -1,2 +0,0 @@ -# Needed due dynamic attribute generation -flask_sqlalchemy.SQLAlchemy.__getattr__ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/METADATA.toml deleted file mode 100644 index 7c295e685..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/METADATA.toml +++ /dev/null @@ -1,7 +0,0 @@ -version = "2.5.*" -requires = ["types-SQLAlchemy"] -obsolete_since = "3.0.1" # Released on 2022-10-11 -partial_stub = true - -[tool.stubtest] -ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/__init__.pyi deleted file mode 100644 index 3b92518bd..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/__init__.pyi +++ /dev/null @@ -1,97 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Generator -from typing import Any, Generic, TypeVar - -from sqlalchemy.orm import scoped_session -from sqlalchemy.orm.query import Query -from sqlalchemy.orm.session import Session - -from . import utils as utils -from .model import DefaultMeta as DefaultMeta, Model as Model - -models_committed: Any -before_models_committed: Any - -class SignallingSession(Session): - app: Any - def __init__(self, db, autocommit: bool = False, autoflush: bool = True, **options) -> None: ... - def get_bind(self, mapper: Incomplete | None = None, clause: Incomplete | None = None): ... # type: ignore[override] - -def get_debug_queries(): ... - -_T = TypeVar("_T") - -class BaseQuery(Query[_T]): - def get_or_404(self, ident, description: Incomplete | None = None): ... - def first_or_404(self, description: Incomplete | None = None): ... - def paginate( - self, - page: Incomplete | None = None, - per_page: Incomplete | None = None, - error_out: bool = True, - max_per_page: Incomplete | None = None, - ) -> Pagination[_T]: ... - -class Pagination(Generic[_T]): - query: BaseQuery[_T] | None - page: int - per_page: int - total: int | None - items: Any - def __init__(self, query: BaseQuery[_T] | None, page: int, per_page: int, total: int | None, items) -> None: ... - @property - def pages(self) -> int: ... - def prev(self, error_out: bool = False) -> Pagination[_T]: ... - @property - def prev_num(self) -> int | None: ... - @property - def has_prev(self) -> bool: ... - def next(self, error_out: bool = False) -> Pagination[_T]: ... - @property - def has_next(self) -> bool: ... - @property - def next_num(self) -> int | None: ... - def iter_pages( - self, left_edge: int = 2, left_current: int = 2, right_current: int = 5, right_edge: int = 2 - ) -> Generator[int | None, None, None]: ... - -def get_state(app): ... - -class SQLAlchemy: - Query: Any - use_native_unicode: Any - session: scoped_session - Model: Model - app: Any - def __init__( - self, - app: Incomplete | None = None, - use_native_unicode: bool = True, - session_options: Incomplete | None = None, - metadata: Incomplete | None = None, - query_class=..., - model_class=..., - engine_options: Incomplete | None = None, - ) -> None: ... - @property - def metadata(self): ... - def create_scoped_session(self, options: Incomplete | None = None): ... - def create_session(self, options): ... - def make_declarative_base(self, model, metadata: Incomplete | None = None): ... - def init_app(self, app): ... - def apply_pool_defaults(self, app, options): ... - def apply_driver_hacks(self, app, sa_url, options): ... - @property - def engine(self): ... - def make_connector(self, app: Incomplete | None = None, bind: Incomplete | None = None): ... - def get_engine(self, app: Incomplete | None = None, bind: Incomplete | None = None): ... - def create_engine(self, sa_url, engine_opts): ... - def get_app(self, reference_app: Incomplete | None = None): ... - def get_tables_for_bind(self, bind: Incomplete | None = None): ... - def get_binds(self, app: Incomplete | None = None): ... - def create_all(self, bind: str = "__all__", app: Incomplete | None = None) -> None: ... - def drop_all(self, bind: str = "__all__", app: Incomplete | None = None) -> None: ... - def reflect(self, bind: str = "__all__", app: Incomplete | None = None) -> None: ... - def __getattr__(self, name: str) -> Any: ... # exposes dynamically classes of SQLAlchemy - -class FSADeprecationWarning(DeprecationWarning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/model.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/model.pyi deleted file mode 100644 index f1780c090..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/model.pyi +++ /dev/null @@ -1,25 +0,0 @@ -from re import Pattern -from typing import Any - -from sqlalchemy import Table -from sqlalchemy.ext.declarative import DeclarativeMeta -from sqlalchemy.orm import Query - -def should_set_tablename(cls: type) -> bool: ... - -camelcase_re: Pattern[str] - -def camel_to_snake_case(name: str) -> str: ... - -class NameMetaMixin(type): - def __init__(cls, name: str, bases: tuple[type, ...], d: dict[str, Any]) -> None: ... - def __table_cls__(cls, *args, **kwargs) -> Table | None: ... - -class BindMetaMixin(type): - def __init__(cls, name: str, bases: tuple[type, ...], d: dict[str, Any]) -> None: ... - -class DefaultMeta(NameMetaMixin, BindMetaMixin, DeclarativeMeta): ... - -class Model: - query_class: type[Query[Any]] | None - query: Query[Any] | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/utils.pyi deleted file mode 100644 index 190d72483..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-SQLAlchemy/flask_sqlalchemy/utils.pyi +++ /dev/null @@ -1,3 +0,0 @@ -def parse_version(v: str) -> tuple[int, int, int]: ... -def sqlalchemy_version(op: str, val: str) -> bool: ... -def engine_config_warning(config, version: str, deprecated_config_key: str, engine_option) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml index aa2d5b748..7d5605c92 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml @@ -1,4 +1,4 @@ -version = "9.5.*" +version = "10.0.*" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BdfFontFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BdfFontFile.pyi index 8f6ba64be..67499ea8d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BdfFontFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BdfFontFile.pyi @@ -1,9 +1,9 @@ -from typing import Any +from _typeshed import Incomplete from .FontFile import FontFile -bdf_slant: Any -bdf_spacing: Any +bdf_slant: Incomplete +bdf_spacing: Incomplete def bdf_char(f): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi index 27c329be8..eb3dce0cf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BlpImagePlugin.pyi @@ -1,5 +1,6 @@ +from _typeshed import Incomplete from enum import IntEnum -from typing import Any, ClassVar +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile, PyDecoder, PyEncoder @@ -7,26 +8,16 @@ from .ImageFile import ImageFile, PyDecoder, PyEncoder class Format(IntEnum): JPEG: int -BLP_FORMAT_JPEG: Literal[Format.JPEG] - class Encoding(IntEnum): UNCOMPRESSED: int DXT: int UNCOMPRESSED_RAW_BGRA: int -BLP_ENCODING_UNCOMPRESSED: Literal[Encoding.UNCOMPRESSED] -BLP_ENCODING_DXT: Literal[Encoding.DXT] -BLP_ENCODING_UNCOMPRESSED_RAW_BGRA: Literal[Encoding.UNCOMPRESSED_RAW_BGRA] - class AlphaEncoding(IntEnum): DXT1: int DXT3: int DXT5: int -BLP_ALPHA_ENCODING_DXT1: Literal[AlphaEncoding.DXT1] -BLP_ALPHA_ENCODING_DXT3: Literal[AlphaEncoding.DXT3] -BLP_ALPHA_ENCODING_DXT5: Literal[AlphaEncoding.DXT5] - def unpack_565(i): ... def decode_dxt1(data, alpha: bool = False): ... def decode_dxt3(data): ... @@ -39,7 +30,7 @@ class BlpImageFile(ImageFile): format_description: ClassVar[str] class _BLPBaseDecoder(PyDecoder): - magic: Any + magic: Incomplete def decode(self, buffer): ... class BLP1Decoder(_BLPBaseDecoder): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BmpImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BmpImagePlugin.pyi index 6d8e94355..6004ffbc2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BmpImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/BmpImagePlugin.pyi @@ -1,9 +1,10 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Final, Literal from .ImageFile import ImageFile, PyDecoder -BIT2MODE: Any +BIT2MODE: Incomplete class BmpImageFile(ImageFile): RAW: Final = 0 @@ -14,7 +15,7 @@ class BmpImageFile(ImageFile): PNG: Final = 5 format_description: ClassVar[str] format: ClassVar[Literal["BMP", "DIB", "CUR"]] - COMPRESSIONS: Any + COMPRESSIONS: Incomplete class BmpRleDecoder(PyDecoder): def decode(self, buffer): ... @@ -22,4 +23,4 @@ class BmpRleDecoder(PyDecoder): class DibImageFile(BmpImageFile): format: ClassVar[Literal["DIB"]] -SAVE: Any +SAVE: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ContainerIO.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ContainerIO.pyi index 88baae6b9..b41bc4e49 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ContainerIO.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ContainerIO.pyi @@ -1,10 +1,10 @@ -from typing import Any +from _typeshed import Incomplete class ContainerIO: - fh: Any + fh: Incomplete pos: int - offset: Any - length: Any + offset: Incomplete + length: Incomplete def __init__(self, file, offset, length) -> None: ... def isatty(self): ... def seek(self, offset, mode=0) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/DcxImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/DcxImagePlugin.pyi index f8f64a9fd..94d40e4d9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/DcxImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/DcxImagePlugin.pyi @@ -1,4 +1,5 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .PcxImagePlugin import PcxImageFile @@ -7,7 +8,7 @@ MAGIC: int class DcxImageFile(PcxImageFile): format: ClassVar[Literal["DCX"]] - frame: Any - fp: Any + frame: Incomplete + fp: Incomplete def seek(self, frame) -> None: ... def tell(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi index 609d3bb03..c480388c9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/EpsImagePlugin.pyi @@ -1,12 +1,13 @@ import sys -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from ._imaging import _PixelAccessor from .ImageFile import ImageFile -split: Any -field: Any +split: Incomplete +field: Incomplete if sys.platform == "win32": gs_windows_binary: Literal["gswin32c", "gswin64c", "gs", False] else: @@ -16,8 +17,8 @@ def has_ghostscript(): ... def Ghostscript(tile, size, fp, scale: int = 1, transparency: bool = False): ... class PSFile: - fp: Any - char: Any + fp: Incomplete + char: Incomplete def __init__(self, fp) -> None: ... def seek(self, offset, whence=0) -> None: ... def readline(self): ... @@ -25,9 +26,9 @@ class PSFile: class EpsImageFile(ImageFile): format: ClassVar[Literal["EPS"]] format_description: ClassVar[str] - mode_map: Any - im: Any - mode: Any - tile: Any + mode_map: Incomplete + im: Incomplete + mode: Incomplete + tile: Incomplete def load(self, scale: int = 1, transparency: bool = False) -> _PixelAccessor: ... def load_seek(self, *args, **kwargs) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FitsStubImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FitsStubImagePlugin.pyi deleted file mode 100644 index cdd63750d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FitsStubImagePlugin.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from typing import ClassVar -from typing_extensions import Literal - -from .ImageFile import StubImageFile - -def register_handler(handler) -> None: ... - -class FITSStubImageFile(StubImageFile): - format: ClassVar[Literal["FITS"]] - format_description: ClassVar[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FontFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FontFile.pyi index fa8e103b7..1cdbf1ca7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FontFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FontFile.pyi @@ -1,16 +1,16 @@ -from typing import Any +from _typeshed import Incomplete WIDTH: int def puti16(fp, values) -> None: ... class FontFile: - bitmap: Any - info: Any - glyph: Any + bitmap: Incomplete + info: Incomplete + glyph: Incomplete def __init__(self) -> None: ... def __getitem__(self, ix): ... - ysize: Any - metrics: Any + ysize: Incomplete + metrics: Incomplete def compile(self): ... def save(self, filename) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FtexImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FtexImagePlugin.pyi index 0535ec47c..6dfd55052 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FtexImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/FtexImagePlugin.pyi @@ -10,9 +10,6 @@ class Format(IntEnum): DXT1: int UNCOMPRESSED: int -FORMAT_DXT1: Literal[Format.DXT1] -FORMAT_UNCOMPRESSED: Literal[Format.UNCOMPRESSED] - class FtexImageFile(ImageFile): format: ClassVar[Literal["FTEX"]] format_description: ClassVar[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GbrImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GbrImagePlugin.pyi index f03101f26..0e7c34b6b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GbrImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GbrImagePlugin.pyi @@ -1,4 +1,5 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from ._imaging import _PixelAccessor @@ -7,5 +8,5 @@ from .ImageFile import ImageFile class GbrImageFile(ImageFile): format: ClassVar[Literal["GBR"]] format_description: ClassVar[str] - im: Any + im: Incomplete def load(self) -> _PixelAccessor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi index 62abc0f14..081203a6d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GifImagePlugin.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete from enum import IntEnum -from typing import Any, ClassVar +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile @@ -15,17 +15,17 @@ LOADING_STRATEGY: LoadingStrategy class GifImageFile(ImageFile): format: ClassVar[Literal["GIF"]] format_description: ClassVar[str] - global_palette: Any + global_palette: Incomplete def data(self): ... @property def n_frames(self): ... @property def is_animated(self): ... - im: Any + im: Incomplete def seek(self, frame) -> None: ... def tell(self): ... -RAWMODE: Any +RAWMODE: Incomplete def get_interlace(im): ... def getheader(im, palette: Incomplete | None = None, info: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpGradientFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpGradientFile.pyi index 9261f4c10..5524ee8bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpGradientFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpGradientFile.pyi @@ -1,4 +1,4 @@ -from typing import Any +from _typeshed import Incomplete EPSILON: float @@ -8,12 +8,12 @@ def sine(middle, pos): ... def sphere_increasing(middle, pos): ... def sphere_decreasing(middle, pos): ... -SEGMENTS: Any +SEGMENTS: Incomplete class GradientFile: - gradient: Any + gradient: Incomplete def getpalette(self, entries: int = 256): ... class GimpGradientFile(GradientFile): - gradient: Any + gradient: Incomplete def __init__(self, fp) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpPaletteFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpPaletteFile.pyi index 441f85b72..e3578b672 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpPaletteFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/GimpPaletteFile.pyi @@ -1,7 +1,7 @@ -from typing import Any +from _typeshed import Incomplete class GimpPaletteFile: rawmode: str - palette: Any + palette: Incomplete def __init__(self, fp) -> None: ... def getpalette(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi index a261ae513..95650a31c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcnsImagePlugin.pyi @@ -1,11 +1,11 @@ from _typeshed import Incomplete -from typing import Any, ClassVar +from typing import ClassVar from typing_extensions import Final, Literal from ._imaging import _PixelAccessor from .ImageFile import ImageFile -enable_jpeg2k: Any +enable_jpeg2k: Incomplete MAGIC: Final = b"icns" HEADERSIZE: Final = 8 @@ -16,9 +16,9 @@ def read_mk(fobj, start_length, size): ... def read_png_or_jpeg2000(fobj, start_length, size): ... class IcnsFile: - SIZES: Any - dct: Any - fobj: Any + SIZES: Incomplete + dct: Incomplete + fobj: Incomplete def __init__(self, fobj) -> None: ... def itersizes(self): ... def bestsize(self): ... @@ -32,7 +32,7 @@ class IcnsImageFile(ImageFile): def size(self): ... @size.setter def size(self, value) -> None: ... - best_size: Any - im: Any - mode: Any + best_size: Incomplete + im: Incomplete + mode: Incomplete def load(self) -> _PixelAccessor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi index da5fea503..2a0b92fa2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IcoImagePlugin.pyi @@ -1,13 +1,14 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from ._imaging import _PixelAccessor from .ImageFile import ImageFile class IcoFile: - buf: Any - entry: Any - nb_items: Any + buf: Incomplete + entry: Incomplete + nb_items: Incomplete def __init__(self, buf): ... def sizes(self): ... def getentryindex(self, size, bpp: bool = False): ... @@ -21,7 +22,7 @@ class IcoImageFile(ImageFile): def size(self): ... @size.setter def size(self, value) -> None: ... - im: Any - mode: Any + im: Incomplete + mode: Incomplete def load(self) -> _PixelAccessor: ... def load_seek(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImImagePlugin.pyi index 09fd68419..7559eea94 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImImagePlugin.pyi @@ -1,4 +1,5 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile @@ -12,9 +13,9 @@ NAME: str SCALE: str SIZE: str MODE: str -TAGS: Any -OPEN: Any -split: Any +TAGS: Incomplete +OPEN: Incomplete +split: Incomplete def number(s): ... @@ -25,10 +26,10 @@ class ImImageFile(ImageFile): def n_frames(self): ... @property def is_animated(self): ... - frame: Any - fp: Any - tile: Any + frame: Incomplete + fp: Incomplete + tile: Incomplete def seek(self, frame) -> None: ... def tell(self): ... -SAVE: Any +SAVE: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi index bd8671760..9aeabdb06 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi @@ -3,7 +3,7 @@ from collections.abc import Callable, Iterable, Iterator, MutableMapping, Sequen from enum import IntEnum from pathlib import Path from typing import Any, ClassVar, Protocol, SupportsBytes -from typing_extensions import Literal, Self, TypeAlias +from typing_extensions import Final, Literal, Self, TypeAlias, TypeGuard from PIL.PyAccess import PyAccess @@ -29,26 +29,21 @@ _ConversionMatrix: TypeAlias = ( # `str` values are only accepted if mode="RGB" for an `Image` object # `float` values are only accepted for certain modes such as "F" # See https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.new -_Color: TypeAlias = int | tuple[int] | tuple[int, int, int] | tuple[int, int, int, int] | str | float | tuple[float] +_Color: TypeAlias = ( + int | tuple[int] | tuple[int, int] | tuple[int, int, int] | tuple[int, int, int, int] | str | float | tuple[float] +) class _Writeable(SupportsWrite[bytes], Protocol): def seek(self, __offset: int) -> Any: ... -NORMAL: Literal[0] # deprecated -SEQUENCE: Literal[1] # deprecated -CONTAINER: Literal[2] # deprecated - class DecompressionBombWarning(RuntimeWarning): ... class DecompressionBombError(Exception): ... -MAX_IMAGE_PIXELS: int | None -USE_CFFI_ACCESS: Incomplete +MAX_IMAGE_PIXELS: Final[int] -LINEAR: Literal[Resampling.BILINEAR] # deprecated -CUBIC: Literal[Resampling.BICUBIC] # deprecated -ANTIALIAS: Literal[Resampling.LANCZOS] # deprecated +USE_CFFI_ACCESS: bool -def isImageType(t): ... +def isImageType(t: object) -> TypeGuard[Image]: ... class Transpose(IntEnum): FLIP_LEFT_RIGHT: Literal[0] @@ -124,12 +119,6 @@ class Quantize(IntEnum): FASTOCTREE: Literal[2] LIBIMAGEQUANT: Literal[3] -# All Quantize items -MEDIANCUT: Literal[0] -MAXCOVERAGE: Literal[1] -FASTOCTREE: Literal[2] -LIBIMAGEQUANT: Literal[3] - ID: list[str] OPEN: dict[str, Any] MIME: dict[str, str] @@ -147,30 +136,29 @@ def getmodebandnames(mode: _Mode) -> tuple[str, ...]: ... def getmodebands(mode: _Mode) -> int: ... def preinit() -> None: ... def init() -> None: ... -def coerce_e(value) -> _E: ... class _E: scale: Incomplete - data: Incomplete - def __init__(self, scale, data) -> None: ... - def __neg__(self): ... + offset: Incomplete + def __init__(self, scale, offset) -> None: ... + def __neg__(self) -> _E: ... def __add__(self, other) -> _E: ... __radd__ = __add__ def __sub__(self, other): ... def __rsub__(self, other): ... def __mul__(self, other) -> _E: ... __rmul__ = __mul__ - def __truediv__(self, other): ... + def __truediv__(self, other) -> _E: ... _ImageState: TypeAlias = tuple[dict[str, Any], str, tuple[int, int], Any, bytes] class Image: format: ClassVar[str | None] format_description: ClassVar[str | None] - im: Any + im: Incomplete mode: _Mode - palette: Any - info: dict[Any, Any] + palette: Incomplete + info: dict[Incomplete, Incomplete] readonly: int pyaccess: PyAccess | None is_animated: bool # not present on all Image objects @@ -218,7 +206,7 @@ class Image: def draft(self, mode: _Mode, size: _Size) -> None: ... def filter(self, filter: Filter | Callable[[], Filter]) -> Image: ... def getbands(self) -> tuple[str, ...]: ... - def getbbox(self) -> tuple[int, int, int, int] | None: ... + def getbbox(self, *, alpha_only: bool = True) -> tuple[int, int, int, int] | None: ... def getcolors(self, maxcolors: int = 256) -> list[tuple[int, int]]: ... def getdata(self, band: int | None = None): ... def getextrema(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi index 383c39332..6eb7101c4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageCms.pyi @@ -1,14 +1,12 @@ import sys from _typeshed import Incomplete, Unused from enum import IntEnum -from typing import Any -from typing_extensions import Literal from .Image import ImagePointHandler DESCRIPTION: str VERSION: str -core: Any +core: Incomplete class Intent(IntEnum): PERCEPTUAL: int @@ -16,31 +14,22 @@ class Intent(IntEnum): SATURATION: int ABSOLUTE_COLORIMETRIC: int -INTENT_PERCEPTUAL: Literal[Intent.PERCEPTUAL] -INTENT_RELATIVE_COLORIMETRIC: Literal[Intent.RELATIVE_COLORIMETRIC] -INTENT_SATURATION: Literal[Intent.SATURATION] -INTENT_ABSOLUTE_COLORIMETRIC: Literal[Intent.ABSOLUTE_COLORIMETRIC] - class Direction(IntEnum): INPUT: int OUTPUT: int PROOF: int -DIRECTION_INPUT: Literal[Direction.INPUT] -DIRECTION_OUTPUT: Literal[Direction.OUTPUT] -DIRECTION_PROOF: Literal[Direction.PROOF] - -FLAGS: Any +FLAGS: Incomplete class ImageCmsProfile: def __init__(self, profile) -> None: ... def tobytes(self): ... class ImageCmsTransform(ImagePointHandler): - transform: Any - input_mode: Any - output_mode: Any - output_profile: Any + transform: Incomplete + input_mode: Incomplete + output_mode: Incomplete + output_profile: Incomplete def __init__( self, input, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi index 6c13040c1..fd5f4c74c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw.pyi @@ -47,6 +47,7 @@ class ImageDraw: rotation: float = 0, fill: _Ink | None = None, outline: _Ink | None = None, + width: float = 1, ) -> None: ... def rectangle( self, @@ -99,26 +100,6 @@ class ImageDraw: stroke_fill: _Ink | None = None, embedded_color: bool = False, ) -> None: ... - def textsize( - self, - text: str | bytes, - font: _Font | None = None, - spacing: float = 4, - direction: Literal["rtl", "ltr", "ttb"] | None = None, - features: Sequence[str] | None = None, - language: str | None = None, - stroke_width: int = 0, - ) -> tuple[int, int]: ... - def multiline_textsize( - self, - text: str | bytes, - font: _Font | None = None, - spacing: float = 4, - direction: Literal["rtl", "ltr", "ttb"] | None = None, - features: Sequence[str] | None = None, - language: str | None = None, - stroke_width: int = 0, - ) -> tuple[int, int]: ... def textlength( self, text: str | bytes, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi index a5ab7ea8a..cfa145540 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageDraw2.pyi @@ -1,26 +1,28 @@ from _typeshed import Incomplete -from typing import Any + +from .Image import Image +from .ImageDraw import ImageDraw class Pen: - color: Any - width: Any + color: Incomplete + width: Incomplete def __init__(self, color, width: int = 1, opacity: int = 255) -> None: ... class Brush: - color: Any + color: Incomplete def __init__(self, color, opacity: int = 255) -> None: ... class Font: - color: Any - font: Any + color: Incomplete + font: Incomplete def __init__(self, color, file, size: int = 12) -> None: ... class Draw: - draw: Any - image: Any - transform: Any + draw: ImageDraw + image: Image + transform: Incomplete | None def __init__(self, image, size: Incomplete | None = None, color: Incomplete | None = None) -> None: ... - def flush(self): ... + def flush(self) -> Image: ... def render(self, op, xy, pen, brush: Incomplete | None = None) -> None: ... def settransform(self, offset) -> None: ... def arc(self, xy, start, end, *options) -> None: ... @@ -31,6 +33,5 @@ class Draw: def polygon(self, xy, *options) -> None: ... def rectangle(self, xy, *options) -> None: ... def text(self, xy, text, font) -> None: ... - def textsize(self, text, font): ... def textbbox(self, xy, text, font): ... def textlength(self, text, font): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi index 303f96134..741e388d2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFile.pyi @@ -1,30 +1,30 @@ from _typeshed import Incomplete, Unused -from typing import Any, NoReturn +from typing import NoReturn from typing_extensions import Self from ._imaging import _PixelAccessor from .Image import Image MAXBLOCK: int -SAFEBLOCK: Any +SAFEBLOCK: Incomplete LOAD_TRUNCATED_IMAGES: bool -ERRORS: Any +ERRORS: Incomplete def raise_oserror(error) -> NoReturn: ... class ImageFile(Image): - custom_mimetype: Any + custom_mimetype: Incomplete tile: list[Incomplete] | None readonly: int - decoderconfig: Any - decodermaxblock: Any - fp: Any - filename: Any + decoderconfig: Incomplete + decodermaxblock: Incomplete + fp: Incomplete + filename: Incomplete def __init__(self, fp: Incomplete | None = None, filename: Incomplete | None = None) -> None: ... def get_format_mimetype(self): ... def verify(self) -> None: ... - map: Any - im: Any + map: Incomplete + im: Incomplete def load(self) -> _PixelAccessor: ... def load_prepare(self) -> None: ... def load_end(self) -> None: ... @@ -40,7 +40,7 @@ class Parser: offset: int finished: bool def reset(self) -> None: ... - decode: Any + decode: Incomplete def feed(self, data) -> None: ... def __enter__(self) -> Self: ... def __exit__(self, *args: Unused) -> None: ... @@ -66,16 +66,16 @@ class PyCodec: def setimage(self, im, extents: Incomplete | None = None) -> None: ... class PyDecoder: - im: Any - state: Any - fd: Any - mode: Any + im: Incomplete + state: Incomplete + fd: Incomplete + mode: Incomplete def __init__(self, mode, *args) -> None: ... - args: Any + args: Incomplete def init(self, args) -> None: ... @property def pulls_fd(self): ... - def decode(self, buffer) -> None: ... + def decode(self, buffer) -> tuple[int, int]: ... def cleanup(self) -> None: ... def setfd(self, fd) -> None: ... def setimage(self, im, extents: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFilter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFilter.pyi index 9a83da5a0..0c622017c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFilter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFilter.pyi @@ -1,6 +1,5 @@ from _typeshed import Incomplete from collections.abc import Callable, Iterable, Sequence -from typing import Any from typing_extensions import Literal, Self, TypeAlias from .Image import Image @@ -116,7 +115,7 @@ class Color3DLUT(MultibandFilter): size: list[int] channels: int mode: str | None - table: Any + table: Incomplete def __init__(self, size: int | Iterable[int], table, channels: int = 3, target_mode: str | None = None, **kwargs) -> None: ... @classmethod def generate( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi index 3a9b68907..e90c4f0cc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageFont.pyi @@ -1,20 +1,20 @@ from _typeshed import FileDescriptorOrPath, Incomplete, SupportsRead from enum import IntEnum from typing import Protocol -from typing_extensions import Literal +from typing_extensions import Final, Literal + +from PIL.Image import Transpose class Layout(IntEnum): BASIC: Literal[0] RAQM: Literal[1] -LAYOUT_BASIC: Literal[Layout.BASIC] -LAYOUT_RAQM: Literal[Layout.RAQM] +MAX_STRING_LENGTH: Final[int] = 1_000_000 class _Font(Protocol): def getmask(self, text: str | bytes, mode: str = ..., direction=..., features=...): ... class ImageFont: - def getsize(self, text: str | bytes, *args, **kwargs) -> tuple[int, int]: ... def getmask(self, text: str | bytes, mode: str = "", direction=..., features=...): ... def getbbox(self, text, *args, **kwargs): ... def getlength(self, text, *args, **kwargs): ... @@ -25,7 +25,7 @@ class FreeTypeFont: index: int encoding: str layout_engine: Layout - font_bytes: Incomplete + font_bytes: bytes # Only exists under some circumstances. font: Incomplete def __init__( self, @@ -55,24 +55,6 @@ class FreeTypeFont: stroke_width: int = 0, anchor: str | None = None, ) -> tuple[int, int, int, int]: ... - def getsize( - self, - text: str | bytes, - direction: Literal["ltr", "rtl", "ttb"] | None = None, - features: Incomplete | None = None, - language: str | None = None, - stroke_width: int = 0, - ) -> tuple[int, int]: ... - def getsize_multiline( - self, - text: str | bytes, - direction: Literal["ltr", "rtl", "ttb"] | None = None, - spacing: float = 4, - features: Incomplete | None = None, - language: str | None = None, - stroke_width: float = 0, - ) -> tuple[int, int]: ... - def getoffset(self, text: str | bytes) -> tuple[int, int]: ... def getmask( self, text: str | bytes, @@ -89,7 +71,6 @@ class FreeTypeFont: self, text: str | bytes, mode: str = "", - fill=..., direction: Literal["ltr", "rtl", "ttb"] | None = None, features: Incomplete | None = None, language: str | None = None, @@ -114,10 +95,9 @@ class FreeTypeFont: def set_variation_by_axes(self, axes): ... class TransposedFont: - font: Incomplete - orientation: Incomplete - def __init__(self, font: _Font, orientation: int | None = None) -> None: ... - def getsize(self, text: str | bytes, *args, **kwargs) -> tuple[int, int]: ... + font: _Font + orientation: Transpose | None + def __init__(self, font: _Font, orientation: Transpose | None = None) -> None: ... def getmask(self, text: str | bytes, mode: str = "", *args, **kwargs): ... def getbbox(self, text, *args, **kwargs): ... def getlength(self, text, *args, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMath.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMath.pyi index 4a462480b..b57bedf5f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMath.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMath.pyi @@ -1,8 +1,7 @@ from _typeshed import Incomplete -from typing import Any class _Operand: - im: Any + im: Incomplete def __init__(self, im) -> None: ... def apply(self, op, im1, im2: Incomplete | None = None, mode: Incomplete | None = None): ... def __bool__(self) -> bool: ... @@ -45,6 +44,6 @@ def imagemath_min(self, other): ... def imagemath_max(self, other): ... def imagemath_convert(self, mode): ... -ops: Any +ops: Incomplete def eval(expression, _dict={}, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMode.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMode.pyi index de5a9ab43..a9e138879 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMode.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageMode.pyi @@ -1,10 +1,10 @@ -from typing import Any +from _typeshed import Incomplete class ModeDescriptor: - mode: Any - bands: Any - basemode: Any - basetype: Any + mode: Incomplete + bands: Incomplete + basemode: Incomplete + basetype: Incomplete def __init__(self, mode, bands, basemode, basetype, typestr) -> None: ... def getmode(mode): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageOps.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageOps.pyi index 5e88c1749..e02190f65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageOps.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageOps.pyi @@ -45,4 +45,4 @@ def invert(image: Image) -> Image: ... def mirror(image: Image) -> Image: ... def posterize(image: Image, bits: int) -> Image: ... def solarize(image: Image, threshold: int = 128) -> Image: ... -def exif_transpose(image: Image) -> Image: ... +def exif_transpose(image: Image, *, in_place: bool = False) -> Image: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImagePalette.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImagePalette.pyi index 7a6567496..9d51a662f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImagePalette.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImagePalette.pyi @@ -1,15 +1,14 @@ from _typeshed import Incomplete -from typing import Any from .Image import Image class ImagePalette: - mode: Any - rawmode: Any - palette: Any - colors: Any - dirty: Any - def __init__(self, mode: str = "RGB", palette: Incomplete | None = None, size: int = 0) -> None: ... + mode: Incomplete + rawmode: Incomplete + palette: Incomplete + colors: Incomplete + dirty: Incomplete + def __init__(self, mode: str = "RGB", palette: Incomplete | None = None) -> None: ... def copy(self) -> ImagePalette: ... def getdata(self): ... def tobytes(self) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageQt.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageQt.pyi index bff69d300..72a03acf3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageQt.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageQt.pyi @@ -1,3 +1,4 @@ +from _typeshed import Incomplete from typing import Any from typing_extensions import Literal, TypeAlias @@ -9,9 +10,9 @@ from .Image import Image _QImage: TypeAlias = Any _QPixmap: TypeAlias = Any -qt_versions: Any +qt_versions: Incomplete qt_is_installed: bool -qt_version: Any +qt_version: Incomplete def rgb(r: int, g: int, b: int, a: int = 255) -> int: ... def fromqimage(im: ImageQt | _QImage) -> Image: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageSequence.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageSequence.pyi index e96de0cc7..9f9d6b61a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageSequence.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageSequence.pyi @@ -1,9 +1,8 @@ from _typeshed import Incomplete -from typing import Any class Iterator: - im: Any - position: Any + im: Incomplete + position: Incomplete def __init__(self, im) -> None: ... def __getitem__(self, ix): ... def __iter__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageShow.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageShow.pyi index 62a9e8e1e..8da788178 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageShow.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageShow.pyi @@ -1,4 +1,4 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, Unused from typing import Any from typing_extensions import Literal @@ -7,45 +7,53 @@ def show(image, title: Incomplete | None = None, **options): ... class Viewer: def show(self, image, **options): ... - format: Any - options: Any + format: Incomplete + options: Incomplete def get_format(self, image): ... - def get_command(self, file, **options) -> None: ... + # Abstract method + def get_command(self, file: str, **options: Any) -> str: ... def save_image(self, image): ... def show_image(self, image, **options): ... - def show_file(self, path: Incomplete | None = None, **options): ... + def show_file(self, path: str, **options: Any) -> Literal[1]: ... class WindowsViewer(Viewer): format: str - options: Any - def get_command(self, file, **options): ... + options: Incomplete + def get_command(self, file: str, **options: Unused) -> str: ... class MacViewer(Viewer): format: str - options: Any - def get_command(self, file, **options): ... - def show_file(self, path: Incomplete | None = None, **options): ... + options: Incomplete + def get_command(self, file: str, **options: Unused) -> str: ... + def show_file(self, path: str, **options: Unused) -> Literal[1]: ... class UnixViewer(Viewer): format: str - options: Any - def get_command(self, file, **options): ... - def show_file(self, path: Incomplete | None = None, **options): ... + options: Incomplete + # Unix viewer expects the following method to be implemented on all + # subclasses, but it isn't defined on the base class. + # def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: ... + def get_command(self, file: str, **options: Any) -> str: ... class XDGViewer(UnixViewer): - def get_command_ex(self, file, **options) -> tuple[Literal["xdg-open"], Literal["xdg-open"]]: ... + def get_command_ex(self, file: str, **options: Unused) -> tuple[str, str]: ... + def show_file(self, path: str, **options: Unused) -> Literal[1]: ... class DisplayViewer(UnixViewer): - def get_command_ex(self, file, title: str | None = None, **options): ... + def get_command_ex(self, file: str, title: str | None = None, **options: Unused) -> tuple[str, str]: ... + def show_file(self, path: str, *, title: str | None = None, **options: Unused) -> Literal[1]: ... class GmDisplayViewer(UnixViewer): - def get_command_ex(self, file, **options): ... + def get_command_ex(self, file: str, **options: Unused) -> tuple[str, str]: ... + def show_file(self, path: str, **options: Unused) -> Literal[1]: ... class EogViewer(UnixViewer): - def get_command_ex(self, file, **options): ... + def get_command_ex(self, file: str, **options: Unused) -> tuple[str, str]: ... + def show_file(self, path: str, **options: Unused) -> Literal[1]: ... class XVViewer(UnixViewer): - def get_command_ex(self, file, title: Incomplete | None = None, **options): ... + def get_command_ex(self, file, title: str | None = None, **options: Unused) -> tuple[str, str]: ... + def show_file(self, path: str, *, title: str | None = None, **options: Unused) -> Literal[1]: ... class IPythonViewer(Viewer): - def show_image(self, image, **options): ... + def show_image(self, image, **options: Unused) -> Literal[1]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageStat.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageStat.pyi index 2c4088fd6..7ae15d7a7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageStat.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageStat.pyi @@ -1,9 +1,8 @@ from _typeshed import Incomplete -from typing import Any class Stat: - h: Any - bands: Any + h: Incomplete + bands: Incomplete def __init__(self, image_or_list, mask: Incomplete | None = None) -> None: ... def __getattr__(self, id: str): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTk.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTk.pyi index f6b5efd0e..69fe38207 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTk.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTk.pyi @@ -3,7 +3,7 @@ import tkinter from _typeshed import ReadableBuffer, StrOrBytesPath, SupportsRead from typing import Any -from PIL.Image import Image, _Box, _Mode, _Size +from PIL.Image import Image, _Mode, _Size class PhotoImage(tkinter._PhotoImageLike): tk: _tkinter.TkappType @@ -26,8 +26,7 @@ class PhotoImage(tkinter._PhotoImageLike): def __del__(self) -> None: ... def width(self) -> int: ... def height(self) -> int: ... - # box is deprecated and unused - def paste(self, im: Image, box: _Box | None = None) -> None: ... + def paste(self, im: Image) -> None: ... class BitmapImage(tkinter._BitmapImageLike): def __init__( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTransform.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTransform.pyi index 7b7d82b33..84074a5b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTransform.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageTransform.pyi @@ -1,21 +1,21 @@ -from typing import Any +from _typeshed import Incomplete from .Image import ImageTransformHandler class Transform(ImageTransformHandler): - data: Any + data: Incomplete def __init__(self, data) -> None: ... def getdata(self): ... def transform(self, size, image, **options): ... class AffineTransform(Transform): - method: Any + method: Incomplete class ExtentTransform(Transform): - method: Any + method: Incomplete class QuadTransform(Transform): - method: Any + method: Incomplete class MeshTransform(Transform): - method: Any + method: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageWin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageWin.pyi index b4479f386..03f3b1c65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageWin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImageWin.pyi @@ -1,20 +1,19 @@ from _typeshed import Incomplete -from typing import Any class HDC: - dc: Any + dc: Incomplete def __init__(self, dc) -> None: ... def __int__(self) -> int: ... class HWND: - wnd: Any + wnd: Incomplete def __init__(self, wnd) -> None: ... def __int__(self) -> int: ... class Dib: - image: Any - mode: Any - size: Any + image: Incomplete + mode: Incomplete + size: Incomplete def __init__(self, image, size: Incomplete | None = None) -> None: ... def expose(self, handle): ... def draw(self, handle, dst, src: Incomplete | None = None): ... @@ -24,7 +23,7 @@ class Dib: def tobytes(self): ... class Window: - hwnd: Any + hwnd: Incomplete def __init__(self, title: str = "PIL", width: Incomplete | None = None, height: Incomplete | None = None) -> None: ... def ui_handle_clear(self, dc, x0, y0, x1, y1) -> None: ... def ui_handle_damage(self, x0, y0, x1, y1) -> None: ... @@ -34,6 +33,6 @@ class Window: def mainloop(self) -> None: ... class ImageWindow(Window): - image: Any + image: Incomplete def __init__(self, image, title: str = "PIL") -> None: ... def ui_handle_repair(self, dc, x0, y0, x1, y1) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImtImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImtImagePlugin.pyi index eadbef84f..cba9ba632 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImtImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/ImtImagePlugin.pyi @@ -1,9 +1,10 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile -field: Any +field: Incomplete class ImtImageFile(ImageFile): format: ClassVar[Literal["IMT"]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IptcImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IptcImagePlugin.pyi index 3430a3566..4348c8320 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IptcImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/IptcImagePlugin.pyi @@ -1,11 +1,12 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from ._imaging import _PixelAccessor from .ImageFile import ImageFile -COMPRESSION: Any -PAD: Any +COMPRESSION: Incomplete +PAD: Incomplete def i(c): ... def dump(c) -> None: ... @@ -15,7 +16,7 @@ class IptcImageFile(ImageFile): format_description: ClassVar[str] def getint(self, key): ... def field(self): ... - im: Any + im: Incomplete def load(self) -> _PixelAccessor: ... def getiptcinfo(im): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi index 8bd579cfa..749303a3d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Jpeg2KImagePlugin.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete -from typing import Any, ClassVar +from typing import ClassVar from typing_extensions import Literal from ._imaging import _PixelAccessor @@ -19,6 +19,6 @@ class BoxReader: class Jpeg2KImageFile(ImageFile): format: ClassVar[Literal["JPEG2000"]] format_description: ClassVar[str] - reduce: Any - tile: Any + reduce: Incomplete + tile: Incomplete def load(self) -> _PixelAccessor: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegImagePlugin.pyi index efec297c5..0b74b1070 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegImagePlugin.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete -from typing import Any, ClassVar +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile @@ -10,24 +10,23 @@ def COM(self, marker) -> None: ... def SOF(self, marker) -> None: ... def DQT(self, marker) -> None: ... -MARKER: Any +MARKER: Incomplete class JpegImageFile(ImageFile): format: ClassVar[Literal["JPEG", "MPO"]] format_description: ClassVar[str] def load_read(self, read_bytes): ... - mode: Any - tile: Any - decoderconfig: Any + mode: Incomplete + tile: Incomplete + decoderconfig: Incomplete def draft(self, mode, size): ... - im: Any + im: Incomplete def load_djpeg(self) -> None: ... def getxmp(self): ... -RAWMODE: Any -zigzag_index: Any -samplings: Any +RAWMODE: Incomplete +zigzag_index: Incomplete +samplings: Incomplete -def convert_dict_qtables(qtables): ... def get_sampling(im): ... def jpeg_factory(fp: Incomplete | None = None, filename: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegPresets.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegPresets.pyi index 8b213e668..6845732f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegPresets.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/JpegPresets.pyi @@ -1,3 +1,3 @@ -from typing import Any +from _typeshed import Incomplete -presets: Any +presets: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpegImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpegImagePlugin.pyi index 0f01f2b7b..ad5b1946c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpegImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpegImagePlugin.pyi @@ -1,10 +1,11 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile class BitStream: - fp: Any + fp: Incomplete bits: int bitbuffer: int def __init__(self, fp) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpoImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpoImagePlugin.pyi index 63e20b08e..979c08798 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpoImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/MpoImagePlugin.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete -from typing import Any, ClassVar +from typing import ClassVar from typing_extensions import Literal from .JpegImagePlugin import JpegImageFile @@ -7,9 +7,9 @@ from .JpegImagePlugin import JpegImageFile class MpoImageFile(JpegImageFile): format: ClassVar[Literal["MPO"]] def load_seek(self, pos) -> None: ... - fp: Any - offset: Any - tile: Any + fp: Incomplete + offset: Incomplete + tile: Incomplete def seek(self, frame) -> None: ... def tell(self): ... @staticmethod diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PaletteFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PaletteFile.pyi index 7f478448f..d78e44c4e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PaletteFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PaletteFile.pyi @@ -1,7 +1,7 @@ -from typing import Any +from _typeshed import Incomplete class PaletteFile: rawmode: str - palette: Any + palette: Incomplete def __init__(self, fp) -> None: ... def getpalette(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PalmImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PalmImagePlugin.pyi index 1cf530cef..2841953b7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PalmImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PalmImagePlugin.pyi @@ -1,5 +1,5 @@ -from typing import Any +from _typeshed import Incomplete def build_prototype_image(): ... -Palm8BitColormapImage: Any +Palm8BitColormapImage: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcdImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcdImagePlugin.pyi index a5ea3dd00..c7b7ec8d1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcdImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcdImagePlugin.pyi @@ -1,4 +1,5 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile @@ -6,5 +7,5 @@ from .ImageFile import ImageFile class PcdImageFile(ImageFile): format: ClassVar[Literal["PCD"]] format_description: ClassVar[str] - im: Any + im: Incomplete def load_end(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcfFontFile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcfFontFile.pyi index 8af6c9041..2bf629c3c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcfFontFile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcfFontFile.pyi @@ -1,25 +1,25 @@ -from typing import Any +from _typeshed import Incomplete from .FontFile import FontFile PCF_MAGIC: int -PCF_PROPERTIES: Any -PCF_ACCELERATORS: Any -PCF_METRICS: Any -PCF_BITMAPS: Any -PCF_INK_METRICS: Any -PCF_BDF_ENCODINGS: Any -PCF_SWIDTHS: Any -PCF_GLYPH_NAMES: Any -PCF_BDF_ACCELERATORS: Any -BYTES_PER_ROW: Any +PCF_PROPERTIES: Incomplete +PCF_ACCELERATORS: Incomplete +PCF_METRICS: Incomplete +PCF_BITMAPS: Incomplete +PCF_INK_METRICS: Incomplete +PCF_BDF_ENCODINGS: Incomplete +PCF_SWIDTHS: Incomplete +PCF_GLYPH_NAMES: Incomplete +PCF_BDF_ACCELERATORS: Incomplete +BYTES_PER_ROW: Incomplete def sz(s, o): ... class PcfFontFile(FontFile): name: str - charset_encoding: Any - toc: Any - fp: Any - info: Any + charset_encoding: Incomplete + toc: Incomplete + fp: Incomplete + info: Incomplete def __init__(self, fp, charset_encoding: str = "iso8859-1") -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcxImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcxImagePlugin.pyi index 97fdb9805..5c3faba95 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcxImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PcxImagePlugin.pyi @@ -1,4 +1,5 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile @@ -7,4 +8,4 @@ class PcxImageFile(ImageFile): format: ClassVar[Literal["PCX", "DCX"]] format_description: ClassVar[str] -SAVE: Any +SAVE: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PdfParser.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PdfParser.pyi index aab4b2e73..31c4f74a0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PdfParser.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PdfParser.pyi @@ -23,9 +23,9 @@ class IndirectReference: class IndirectObjectDef(IndirectReference): ... class XrefTable: - existing_entries: Any - new_entries: Any - deleted_entries: Any + existing_entries: Incomplete + new_entries: Incomplete + deleted_entries: Incomplete reading_finished: bool def __init__(self) -> None: ... def __setitem__(self, key, value) -> None: ... @@ -37,14 +37,14 @@ class XrefTable: def write(self, f): ... class PdfName: - name: Any + name: Incomplete def __init__(self, name) -> None: ... def name_as_str(self): ... def __eq__(self, other): ... def __hash__(self) -> int: ... @classmethod def from_pdf_stream(cls, data): ... - allowed_chars: Any + allowed_chars: Incomplete def __bytes__(self) -> bytes: ... class PdfArray(list[Any]): @@ -56,38 +56,38 @@ class PdfDict(collections.UserDict[bytes, Any]): def __bytes__(self) -> bytes: ... class PdfBinary: - data: Any + data: Incomplete def __init__(self, data) -> None: ... def __bytes__(self) -> bytes: ... class PdfStream: - dictionary: Any - buf: Any + dictionary: Incomplete + buf: Incomplete def __init__(self, dictionary, buf) -> None: ... def decode(self): ... -def pdf_repr(x: Any) -> bytes: ... +def pdf_repr(x: Incomplete) -> bytes: ... class PdfParser: - filename: Any - buf: Any - f: Any - start_offset: Any + filename: Incomplete + buf: Incomplete + f: Incomplete + start_offset: Incomplete should_close_buf: bool should_close_file: bool - cached_objects: Any + cached_objects: Incomplete file_size_total: int - root: Any - root_ref: Any - info: Any - info_ref: Any - page_tree_root: Any - pages: Any - orig_pages: Any - pages_ref: Any - last_xref_section_offset: Any - trailer_dict: Any - xref_table: Any + root: Incomplete + root_ref: Incomplete + info: Incomplete + info_ref: Incomplete + page_tree_root: Incomplete + pages: Incomplete + orig_pages: Incomplete + pages_ref: Incomplete + last_xref_section_offset: Incomplete + trailer_dict: Incomplete + xref_table: Incomplete def __init__( self, filename: Incomplete | None = None, @@ -114,55 +114,55 @@ class PdfParser: def del_root(self) -> None: ... @staticmethod def get_buf_from_file(f): ... - file_size_this: Any + file_size_this: Incomplete def read_pdf_info(self) -> None: ... def next_object_id(self, offset: Incomplete | None = None): ... delimiter: bytes delimiter_or_ws: bytes whitespace: bytes whitespace_or_hex: bytes - whitespace_optional: Any - whitespace_mandatory: Any + whitespace_optional: Incomplete + whitespace_mandatory: Incomplete whitespace_optional_no_nl: bytes newline_only: bytes - newline: Any - re_trailer_end: Any - re_trailer_prev: Any + newline: Incomplete + re_trailer_end: Incomplete + re_trailer_prev: Incomplete def read_trailer(self) -> None: ... def read_prev_trailer(self, xref_section_offset) -> None: ... - re_whitespace_optional: Any - re_name: Any - re_dict_start: Any - re_dict_end: Any + re_whitespace_optional: Incomplete + re_name: Incomplete + re_dict_start: Incomplete + re_dict_end: Incomplete @classmethod def interpret_trailer(cls, trailer_data): ... - re_hashes_in_name: Any + re_hashes_in_name: Incomplete @classmethod def interpret_name(cls, raw, as_text: bool = False): ... - re_null: Any - re_true: Any - re_false: Any - re_int: Any - re_real: Any - re_array_start: Any - re_array_end: Any - re_string_hex: Any - re_string_lit: Any - re_indirect_reference: Any - re_indirect_def_start: Any - re_indirect_def_end: Any - re_comment: Any - re_stream_start: Any - re_stream_end: Any + re_null: Incomplete + re_true: Incomplete + re_false: Incomplete + re_int: Incomplete + re_real: Incomplete + re_array_start: Incomplete + re_array_end: Incomplete + re_string_hex: Incomplete + re_string_lit: Incomplete + re_indirect_reference: Incomplete + re_indirect_def_start: Incomplete + re_indirect_def_end: Incomplete + re_comment: Incomplete + re_stream_start: Incomplete + re_stream_end: Incomplete @classmethod def get_value(cls, data, offset, expect_indirect: Incomplete | None = None, max_nesting: int = -1): ... - re_lit_str_token: Any - escaped_chars: Any + re_lit_str_token: Incomplete + escaped_chars: Incomplete @classmethod def get_literal_string(cls, data, offset): ... - re_xref_section_start: Any - re_xref_subsection_start: Any - re_xref_entry: Any + re_xref_section_start: Incomplete + re_xref_subsection_start: Incomplete + re_xref_entry: Incomplete def read_xref_table(self, xref_section_offset): ... def read_indirect(self, ref, max_nesting: int = -1): ... def linearize_page_tree(self, node: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi index 7622d57cc..f4103951f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PngImagePlugin.pyi @@ -1,34 +1,27 @@ from _typeshed import Incomplete, Unused from enum import IntEnum -from typing import Any, ClassVar +from typing import ClassVar from typing_extensions import Literal from ._binary import o8 as o8 from .ImageFile import ImageFile -is_cid: Any -MAX_TEXT_CHUNK: Any -MAX_TEXT_MEMORY: Any +is_cid: Incomplete +MAX_TEXT_CHUNK: Incomplete +MAX_TEXT_MEMORY: Incomplete class Disposal(IntEnum): OP_NONE: int OP_BACKGROUND: int OP_PREVIOUS: int -APNG_DISPOSE_OP_NONE: Literal[Disposal.OP_NONE] -APNG_DISPOSE_OP_BACKGROUND: Literal[Disposal.OP_BACKGROUND] -APNG_DISPOSE_OP_PREVIOUS: Literal[Disposal.OP_PREVIOUS] - class Blend(IntEnum): OP_SOURCE: int OP_OVER: int -APNG_BLEND_OP_SOURCE: Literal[Blend.OP_SOURCE] -APNG_BLEND_OP_OVER: Literal[Blend.OP_OVER] - class ChunkStream: - fp: Any - queue: Any + fp: Incomplete + queue: Incomplete def __init__(self, fp) -> None: ... def read(self): ... def __enter__(self): ... @@ -41,28 +34,28 @@ class ChunkStream: def verify(self, endchunk: bytes = b"IEND"): ... class iTXt(str): - lang: Any - tkey: Any + lang: Incomplete + tkey: Incomplete @staticmethod def __new__(cls, text, lang: Incomplete | None = None, tkey: Incomplete | None = None): ... class PngInfo: - chunks: Any + chunks: Incomplete def __init__(self) -> None: ... def add(self, cid, data, after_idat: bool = False) -> None: ... def add_itxt(self, key, value, lang: str = "", tkey: str = "", zip: bool = False) -> None: ... def add_text(self, key, value, zip: bool = False): ... class PngStream(ChunkStream): - im_info: Any - im_text: Any - im_size: Any - im_mode: Any - im_tile: Any - im_palette: Any - im_custom_mimetype: Any - im_n_frames: Any - rewind_state: Any + im_info: Incomplete + im_text: Incomplete + im_size: Incomplete + im_mode: Incomplete + im_tile: Incomplete + im_palette: Incomplete + im_custom_mimetype: Incomplete + im_n_frames: Incomplete + rewind_state: Incomplete text_memory: int def __init__(self, fp) -> None: ... def check_text_memory(self, chunklen) -> None: ... @@ -70,7 +63,7 @@ class PngStream(ChunkStream): def rewind(self) -> None: ... def chunk_iCCP(self, pos, length): ... def chunk_IHDR(self, pos, length): ... - im_idat: Any + im_idat: Incomplete def chunk_IDAT(self, pos, length) -> None: ... def chunk_IEND(self, pos, length) -> None: ... def chunk_PLTE(self, pos, length): ... @@ -92,15 +85,15 @@ class PngImageFile(ImageFile): format_description: ClassVar[str] @property def text(self): ... - fp: Any + fp: Incomplete def verify(self) -> None: ... def seek(self, frame) -> None: ... def tell(self): ... - decoderconfig: Any + decoderconfig: Incomplete def load_prepare(self) -> None: ... def load_read(self, read_bytes): ... - png: Any - im: Any + png: Incomplete + im: Incomplete def load_end(self) -> None: ... def getexif(self): ... def getxmp(self): ... @@ -108,15 +101,15 @@ class PngImageFile(ImageFile): def putchunk(fp, cid, *data) -> None: ... class _idat: - fp: Any - chunk: Any + fp: Incomplete + chunk: Incomplete def __init__(self, fp, chunk) -> None: ... def write(self, data) -> None: ... class _fdat: - fp: Any - chunk: Any - seq_num: Any + fp: Incomplete + chunk: Incomplete + seq_num: Incomplete def __init__(self, fp, chunk, seq_num) -> None: ... def write(self, data) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PpmImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PpmImagePlugin.pyi index 97b5f896d..5a26914e5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PpmImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PpmImagePlugin.pyi @@ -1,10 +1,11 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile, PyDecoder b_whitespace: bytes -MODES: Any +MODES: Incomplete class PpmImageFile(ImageFile): format: ClassVar[Literal["PPM"]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PsdImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PsdImagePlugin.pyi index 0d3835011..f6e620b93 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PsdImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PsdImagePlugin.pyi @@ -1,18 +1,19 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile -MODES: Any +MODES: Incomplete class PsdImageFile(ImageFile): format: ClassVar[Literal["PSD"]] format_description: ClassVar[str] - mode: Any - tile: Any - frame: Any - fp: Any + mode: Incomplete + tile: Incomplete + frame: Incomplete + fp: Incomplete def seek(self, layer): ... def tell(self): ... - im: Any + im: Incomplete def load_prepare(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi index 6431e59e9..1e82a3414 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/PyAccess.pyi @@ -1,19 +1,19 @@ -from typing import Any +from _typeshed import Incomplete from PIL._imaging import _PixelAccessor -ffi: Any +ffi: Incomplete class PyAccess(_PixelAccessor): - readonly: Any - image8: Any - image32: Any - image: Any + readonly: Incomplete + image8: Incomplete + image32: Incomplete + image: Incomplete def __init__(self, img, readonly: bool = False) -> None: ... def __setitem__(self, xy: tuple[int, int], color) -> None: ... - def __getitem__(self, xy: tuple[int, int]) -> Any: ... + def __getitem__(self, xy: tuple[int, int]) -> Incomplete: ... def putpixel(self, xy: tuple[int, int], color) -> None: ... - def getpixel(self, xy: tuple[int, int]) -> Any: ... + def getpixel(self, xy: tuple[int, int]) -> Incomplete: ... def check_xy(self, xy: tuple[int, int]): ... class _PyAccess32_2(PyAccess): @@ -57,6 +57,6 @@ class _PyAccessF(PyAccess): def get_pixel(self, x, y): ... def set_pixel(self, x, y, color) -> None: ... -mode_map: Any +mode_map: Incomplete def new(img, readonly: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SgiImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SgiImagePlugin.pyi index e7f4ff96e..556f2d981 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SgiImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SgiImagePlugin.pyi @@ -1,9 +1,10 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile, PyDecoder -MODES: Any +MODES: Incomplete class SgiImageFile(ImageFile): format: ClassVar[Literal["SGI"]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SpiderImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SpiderImagePlugin.pyi index 5500289f8..2869c0927 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SpiderImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/SpiderImagePlugin.pyi @@ -1,12 +1,12 @@ from _typeshed import Incomplete -from typing import Any, ClassVar +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile def isInt(f: object) -> Literal[0, 1]: ... -iforms: Any +iforms: Incomplete def isSpiderHeader(t): ... def isSpiderImage(filename): ... @@ -19,8 +19,8 @@ class SpiderImageFile(ImageFile): @property def is_animated(self): ... def tell(self): ... - stkoffset: Any - fp: Any + stkoffset: Incomplete + fp: Incomplete def seek(self, frame) -> None: ... def convert2byte(self, depth: int = 255): ... def tkPhotoImage(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TarIO.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TarIO.pyi index 60a3dedc4..39d4595dd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TarIO.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TarIO.pyi @@ -1,10 +1,9 @@ -from _typeshed import Unused -from typing import Any +from _typeshed import Incomplete, Unused from .ContainerIO import ContainerIO class TarIO(ContainerIO): - fh: Any + fh: Incomplete def __init__(self, tarfile, file) -> None: ... def __enter__(self): ... def __exit__(self, *args: Unused) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TgaImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TgaImagePlugin.pyi index 5022107b6..c46f6f583 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TgaImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TgaImagePlugin.pyi @@ -1,12 +1,13 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile -MODES: Any +MODES: Incomplete class TgaImageFile(ImageFile): format: ClassVar[Literal["TGA"]] format_description: ClassVar[str] -SAVE: Any +SAVE: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi index d39a2769d..a092e11b6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffImagePlugin.pyi @@ -1,13 +1,17 @@ +import sys from _typeshed import Incomplete -from collections.abc import MutableMapping +from collections.abc import Callable, MutableMapping +from fractions import Fraction, _ComparableNum from numbers import Rational from types import TracebackType -from typing import Any, ClassVar -from typing_extensions import Final, Literal +from typing import ClassVar, overload +from typing_extensions import Final, Literal, SupportsIndex, TypeAlias from ._imaging import _PixelAccessor from .ImageFile import ImageFile +_OpenInfo: TypeAlias = tuple[Literal[b"II", b"MM"], int, tuple[int, ...], int, tuple[int, ...], tuple[int, ...]] + # These are meant to be overridable READ_LIBTIFF: bool WRITE_LIBTIFF: bool @@ -56,11 +60,11 @@ XMP: Final = 700 JPEGQUALITY: Final = 65537 IMAGEJ_META_DATA_BYTE_COUNTS: Final = 50838 IMAGEJ_META_DATA: Final = 50839 -COMPRESSION_INFO: Any -COMPRESSION_INFO_REV: Any -OPEN_INFO: Any +COMPRESSION_INFO: Final[dict[int, str]] +COMPRESSION_INFO_REV: Final[dict[str, int]] +OPEN_INFO: Final[dict[_OpenInfo, tuple[str, str]]] MAX_SAMPLESPERPIXEL: Final = 6 -PREFIXES: Any +PREFIXES: Final[list[bytes]] class IFDRational(Rational): def __init__(self, value, denominator: int = 1) -> None: ... @@ -71,34 +75,100 @@ class IFDRational(Rational): def limit_rational(self, max_denominator): ... def __hash__(self) -> int: ... def __eq__(self, other): ... - __add__: Any - __radd__: Any - __sub__: Any - __rsub__: Any - __mul__: Any - __rmul__: Any - __truediv__: Any - __rtruediv__: Any - __floordiv__: Any - __rfloordiv__: Any - __mod__: Any - __rmod__: Any - __pow__: Any - __rpow__: Any - __pos__: Any - __neg__: Any - __abs__: Any - __trunc__: Any - __lt__: Any - __gt__: Any - __le__: Any - __ge__: Any - __bool__: Any - __ceil__: Any - __floor__: Any - __round__: Any + # The following methods are aliased from fractions.Fraction: + @overload + def __add__(a, b: int | Fraction) -> Fraction: ... + @overload + def __add__(a, b: float) -> float: ... + @overload + def __add__(a, b: complex) -> complex: ... + @overload + def __radd__(b, a: int | Fraction) -> Fraction: ... + @overload + def __radd__(b, a: float) -> float: ... + @overload + def __radd__(b, a: complex) -> complex: ... + @overload + def __sub__(a, b: int | Fraction) -> Fraction: ... + @overload + def __sub__(a, b: float) -> float: ... + @overload + def __sub__(a, b: complex) -> complex: ... + @overload + def __rsub__(b, a: int | Fraction) -> Fraction: ... + @overload + def __rsub__(b, a: float) -> float: ... + @overload + def __rsub__(b, a: complex) -> complex: ... + @overload + def __mul__(a, b: int | Fraction) -> Fraction: ... + @overload + def __mul__(a, b: float) -> float: ... + @overload + def __mul__(a, b: complex) -> complex: ... + @overload + def __rmul__(b, a: int | Fraction) -> Fraction: ... + @overload + def __rmul__(b, a: float) -> float: ... + @overload + def __rmul__(b, a: complex) -> complex: ... + @overload + def __truediv__(a, b: int | Fraction) -> Fraction: ... + @overload + def __truediv__(a, b: float) -> float: ... + @overload + def __truediv__(a, b: complex) -> complex: ... + @overload + def __rtruediv__(b, a: int | Fraction) -> Fraction: ... + @overload + def __rtruediv__(b, a: float) -> float: ... + @overload + def __rtruediv__(b, a: complex) -> complex: ... + @overload + def __floordiv__(a, b: int | Fraction) -> int: ... + @overload + def __floordiv__(a, b: float) -> float: ... + @overload + def __rfloordiv__(b, a: int | Fraction) -> int: ... + @overload + def __rfloordiv__(b, a: float) -> float: ... + @overload + def __mod__(a, b: int | Fraction) -> Fraction: ... + @overload + def __mod__(a, b: float) -> float: ... + @overload + def __rmod__(b, a: int | Fraction) -> Fraction: ... + @overload + def __rmod__(b, a: float) -> float: ... + @overload + def __pow__(a, b: int) -> Fraction: ... + @overload + def __pow__(a, b: float | Fraction) -> float: ... + @overload + def __pow__(a, b: complex) -> complex: ... + @overload + def __rpow__(b, a: float | Fraction) -> float: ... + @overload + def __rpow__(b, a: complex) -> complex: ... + def __pos__(a) -> Fraction: ... + def __neg__(a) -> Fraction: ... + def __abs__(a) -> Fraction: ... + def __trunc__(a) -> int: ... + def __lt__(a, b: _ComparableNum) -> bool: ... + def __gt__(a, b: _ComparableNum) -> bool: ... + def __le__(a, b: _ComparableNum) -> bool: ... + def __ge__(a, b: _ComparableNum) -> bool: ... + def __bool__(a) -> bool: ... + def __ceil__(a) -> int: ... + def __floor__(a) -> int: ... + @overload + def __round__(self, ndigits: None = None) -> int: ... + @overload + def __round__(self, ndigits: int) -> Fraction: ... + if sys.version_info >= (3, 11): + def __int__(a, _index: Callable[[SupportsIndex], int] = ...) -> int: ... -class ImageFileDirectory_v2(MutableMapping[int, Any]): +class ImageFileDirectory_v2(MutableMapping[int, Incomplete]): group: int | None tagtype: dict[int, int] def __init__( @@ -169,12 +239,12 @@ ImageFileDirectory = ImageFileDirectory_v1 class TiffImageFile(ImageFile): format: ClassVar[Literal["TIFF", "MIC"]] format_description: ClassVar[str] - tag_v2: Any - tag: Any + tag_v2: Incomplete + tag: Incomplete def __init__(self, fp: Incomplete | None = None, filename: Incomplete | None = None) -> None: ... @property def n_frames(self): ... - im: Any + im: Incomplete def seek(self, frame) -> None: ... def tell(self): ... def getxmp(self): ... @@ -182,19 +252,19 @@ class TiffImageFile(ImageFile): def load(self) -> _PixelAccessor: ... def load_end(self) -> None: ... -SAVE_INFO: Any +SAVE_INFO: Incomplete class AppendingTiffWriter: - fieldSizes: Any - Tags: Any - f: Any + fieldSizes: Incomplete + Tags: Incomplete + f: Incomplete close_fp: bool - name: Any - beginning: Any + name: Incomplete + beginning: Incomplete def __init__(self, fn, new: bool = False) -> None: ... - whereToWriteNewIFDOffset: Any + whereToWriteNewIFDOffset: Incomplete offsetOfNewPage: int - IIMM: Any + IIMM: Incomplete isFirst: bool def setup(self) -> None: ... def finalize(self) -> None: ... @@ -206,10 +276,10 @@ class AppendingTiffWriter: def tell(self): ... def seek(self, offset, whence=0): ... def goToEnd(self) -> None: ... - endian: Any - longFmt: Any - shortFmt: Any - tagFormat: Any + endian: Incomplete + longFmt: Incomplete + shortFmt: Incomplete + tagFormat: Incomplete def setEndian(self, endian) -> None: ... def skipIFDs(self) -> None: ... def write(self, data): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi index e23d03a7b..ba9261184 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/TiffTags.pyi @@ -1,12 +1,12 @@ from _typeshed import Incomplete -from typing import Any, NamedTuple +from typing import NamedTuple from typing_extensions import Final, Literal, TypeAlias _TagType: TypeAlias = Literal[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16] _TagTuple: TypeAlias = tuple[str, _TagType, int] | tuple[str, _TagInfo, int, dict[str, int]] class _TagInfo(NamedTuple): - value: Any + value: Incomplete name: str type: _TagType length: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WebPImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WebPImagePlugin.pyi index 43e06c675..406d4e906 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WebPImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WebPImagePlugin.pyi @@ -1,4 +1,5 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal, TypeAlias from ._imaging import _PixelAccessor @@ -12,7 +13,7 @@ class WebPImageFile(ImageFile): format_description: ClassVar[str] def getxmp(self) -> _XMP_Tags: ... def seek(self, frame) -> None: ... - fp: Any - tile: Any + fp: Incomplete + tile: Incomplete def load(self) -> _PixelAccessor: ... def tell(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi index 2cb78d884..1b78d0d45 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/WmfImagePlugin.pyi @@ -1,6 +1,6 @@ import sys from _typeshed import Incomplete -from typing import Any, ClassVar +from typing import ClassVar from typing_extensions import Literal from ._imaging import _PixelAccessor @@ -10,7 +10,7 @@ def register_handler(handler) -> None: ... if sys.platform == "win32": class WmfHandler: - bbox: Any + bbox: Incomplete def open(self, im) -> None: ... def load(self, im): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/XbmImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/XbmImagePlugin.pyi index 588aaac2d..d3d345bd4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/XbmImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/XbmImagePlugin.pyi @@ -1,9 +1,10 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile -xbm_head: Any +xbm_head: Incomplete class XbmImageFile(ImageFile): format: ClassVar[Literal["XBM"]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/XpmImagePlugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/XpmImagePlugin.pyi index d0df39a6e..c46c829c7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/XpmImagePlugin.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/XpmImagePlugin.pyi @@ -1,9 +1,10 @@ -from typing import Any, ClassVar +from _typeshed import Incomplete +from typing import ClassVar from typing_extensions import Literal from .ImageFile import ImageFile -xpm_head: Any +xpm_head: Incomplete class XpmImageFile(ImageFile): format: ClassVar[Literal["XPM"]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/features.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/features.pyi index ff7bca82e..95443313c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/features.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/features.pyi @@ -1,19 +1,18 @@ from _typeshed import Incomplete -from typing import Any -modules: Any +modules: Incomplete def check_module(feature): ... def version_module(feature): ... def get_supported_modules(): ... -codecs: Any +codecs: Incomplete def check_codec(feature): ... def version_codec(feature): ... def get_supported_codecs(): ... -features: Any +features: Incomplete def check_feature(feature): ... def version_feature(feature): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml index b9b1827ff..b4f31a779 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml @@ -1,4 +1,4 @@ -version = "1.0.*" +version = "1.1.*" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/charset.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/charset.pyi index 0a36fa695..21d211fbc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/charset.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/charset.pyi @@ -3,8 +3,8 @@ from typing import Any MBLENGTH: Any class Charset: - is_default: Any - def __init__(self, id, name, collation, is_default): ... + is_default: bool + def __init__(self, id, name, collation, is_default: bool = False) -> None: ... class Charsets: def add(self, c): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/connections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/connections.pyi index a70a23091..8564d19f1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/connections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/pymysql/connections.pyi @@ -63,8 +63,9 @@ class Connection(Generic[_C]): password: Any db: Any unix_socket: Any + charset: str + collation: str | None bind_address: Any - charset: Any use_unicode: Any client_flag: Any cursorclass: Any @@ -88,6 +89,7 @@ class Connection(Generic[_C]): port: int = 0, unix_socket: Incomplete | None = None, charset: str = "", + collation: str | None = None, sql_mode: Incomplete | None = None, read_default_file: Incomplete | None = None, conv=None, @@ -119,7 +121,7 @@ class Connection(Generic[_C]): binary_prefix: bool | None = False, program_name: Incomplete | None = None, server_public_key: bytes | None = None, - ): ... + ) -> None: ... @overload def __init__( self: Connection[_C], # different between overloads @@ -131,6 +133,7 @@ class Connection(Generic[_C]): port: int = 0, unix_socket: Incomplete | None = None, charset: str = "", + collation: str | None = None, sql_mode: Incomplete | None = None, read_default_file: Incomplete | None = None, conv=None, @@ -162,7 +165,7 @@ class Connection(Generic[_C]): binary_prefix: bool | None = False, program_name: Incomplete | None = None, server_public_key: bytes | None = None, - ): ... + ) -> None: ... socket: Any rfile: Any wfile: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/stubtest_allowlist.txt deleted file mode 100644 index aacd3b85a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/stubtest_allowlist.txt +++ /dev/null @@ -1,85 +0,0 @@ -# mypy plugin not supported in typeshed -sqlalchemy.ext.mypy.* -# test suites -sqlalchemy.testing.suite -# Leaked re-exports from the compat module -sqlalchemy.util.quote - -# Expanding keyword arguments in stubs -sqlalchemy.ext.declarative.as_declarative - -# not always present -sqlalchemy.engine.Engine.logging_name # initialized if not None -sqlalchemy.engine.base.Engine.logging_name # initialized if not None -sqlalchemy.sql.lambdas.PyWrapper.__clause_element__ -sqlalchemy.testing.util.non_refcount_gc_collect - -# potentially replaced at runtime -sqlalchemy.engine.Row.count -sqlalchemy.engine.Row.index -sqlalchemy.engine.row.Row.count -sqlalchemy.engine.row.Row.index - -# abstract fields not present at runtime -sqlalchemy.engine.Transaction.connection -sqlalchemy.engine.Transaction.is_active -sqlalchemy.engine.base.Transaction.connection -sqlalchemy.engine.base.Transaction.is_active - -# initialized to None during class construction, but overridden during __init__() or __new__() -sqlalchemy.engine.base.Connection.engine -sqlalchemy.engine.Connection.engine -sqlalchemy.orm.Mapper.single -sqlalchemy.orm.mapper.Mapper.single - -# Uses @memoized_property at runtime, but we use @property for compatibility -sqlalchemy.engine.URL.normalized_query -sqlalchemy.engine.url.URL.normalized_query -# Uses @memoized_property, but that causes regr_test to raise 'Cannot determine type of "..." in base class "..." [misc]' -sqlalchemy.schema.SchemaItem.info -sqlalchemy.sql.elements.AnnotatedColumnElement.info -sqlalchemy.sql.elements.AnnotatedColumnElement.key -sqlalchemy.sql.elements.AnnotatedColumnElement.name -sqlalchemy.sql.elements.AnnotatedColumnElement.table -sqlalchemy.sql.schema.SchemaItem.info - -# runtime has extra internal arguments that are inconsistent across micro versions -sqlalchemy.testing.engines.testing_engine - -# __new__ signature conflicts with __init__ signature (which is more precise), -# so __new__ is deliberately omitted in the stub -sqlalchemy.sql.annotation.Annotated.__new__ - -# At runtime __new__ is defined, but we define __init__ in the stub -# because otherwise all subclasses would be identified by pyright -# as having conflicting __new__/__init__ methods -sqlalchemy.orm.unitofwork.PostSortRec.__new__ - -# KeyError/AttributeError on import due to dynamic initialization from a different module -sqlalchemy.testing.fixtures -sqlalchemy.testing.pickleable -sqlalchemy.testing.plugin.bootstrap - -# method arguments starting with double underscores in the implementation trips up stubtest -sqlalchemy.testing.resolve_lambda -sqlalchemy.testing.util.resolve_lambda -sqlalchemy.orm.collections.MappedCollection.update - -# stubtest thinks __slots__ are always members -# https://github.com/python/mypy/issues/13906 -sqlalchemy.sql.elements.quoted_name.lower -sqlalchemy.sql.elements.quoted_name.upper -sqlalchemy.sql.expression.quoted_name.lower -sqlalchemy.sql.expression.quoted_name.upper -sqlalchemy.sql.quoted_name.lower -sqlalchemy.sql.quoted_name.upper -sqlalchemy.orm.ColumnProperty.Comparator.__clause_element__ -sqlalchemy.orm.properties.ColumnProperty.Comparator.__clause_element__ - -# Same error as in stdlib due to it being re-exported -sqlalchemy.dialects.mysql.asyncmy.AsyncAdapt_asyncmy_dbapi.Binary -sqlalchemy.util.compat.StringIO.seek -sqlalchemy.util.compat.StringIO.truncate -sqlalchemy.util.StringIO.seek -sqlalchemy.util.StringIO.truncate -sqlalchemy.testing.mock.patch diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_loader_option.py b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_loader_option.py deleted file mode 100644 index 1f596af83..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_loader_option.py +++ /dev/null @@ -1,60 +0,0 @@ -from __future__ import annotations - -from typing_extensions import assert_type - -from sqlalchemy.orm.strategy_options import ( - Load, - contains_eager, - defaultload, - defer, - immediateload, - joinedload, - lazyload, - load_only, - loader_option, - noload, - raiseload, - selectin_polymorphic, - selectinload, - subqueryload, - undefer, - undefer_group, - with_expression, -) - - -def fn(loadopt: Load, *args: object) -> loader_option: - return loader_option() - - -# Testing that the function and return type of function are actually all instances of "loader_option" -assert_type(contains_eager, loader_option) -assert_type(contains_eager(fn), loader_option) -assert_type(load_only, loader_option) -assert_type(load_only(fn), loader_option) -assert_type(joinedload, loader_option) -assert_type(joinedload(fn), loader_option) -assert_type(subqueryload, loader_option) -assert_type(subqueryload(fn), loader_option) -assert_type(selectinload, loader_option) -assert_type(selectinload(fn), loader_option) -assert_type(lazyload, loader_option) -assert_type(lazyload(fn), loader_option) -assert_type(immediateload, loader_option) -assert_type(immediateload(fn), loader_option) -assert_type(noload, loader_option) -assert_type(noload(fn), loader_option) -assert_type(raiseload, loader_option) -assert_type(raiseload(fn), loader_option) -assert_type(defaultload, loader_option) -assert_type(defaultload(fn), loader_option) -assert_type(defer, loader_option) -assert_type(defer(fn), loader_option) -assert_type(undefer, loader_option) -assert_type(undefer(fn), loader_option) -assert_type(undefer_group, loader_option) -assert_type(undefer_group(fn), loader_option) -assert_type(with_expression, loader_option) -assert_type(with_expression(fn), loader_option) -assert_type(selectin_polymorphic, loader_option) -assert_type(selectin_polymorphic(fn), loader_option) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_register.py b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_register.py deleted file mode 100644 index 186cb2540..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/@tests/test_cases/check_register.py +++ /dev/null @@ -1,68 +0,0 @@ -from __future__ import annotations - -from _typeshed.dbapi import DBAPIConnection -from typing import cast - -from sqlalchemy.engine.base import Engine -from sqlalchemy.engine.default import DefaultDialect -from sqlalchemy.engine.url import URL -from sqlalchemy.pool.base import Pool -from sqlalchemy.testing import config as ConfigModule -from sqlalchemy.testing.provision import ( - configure_follower, - create_db, - drop_all_schema_objects_post_tables, - drop_all_schema_objects_pre_tables, - drop_db, - follower_url_from_main, - generate_driver_url, - get_temp_table_name, - post_configure_engine, - prepare_for_drop_tables, - register, - run_reap_dbs, - set_default_schema_on_connection, - stop_test_class_outside_fixtures, - temp_table_keyword_args, - update_db_opts, -) -from sqlalchemy.util import immutabledict - -url = URL("", "", "", "", 0, "", immutabledict()) -engine = Engine(Pool(lambda: cast(DBAPIConnection, object())), DefaultDialect(), "") -config = cast(ConfigModule.Config, object()) -unused = None - - -class Foo: - pass - - -# Test that the decorator changes the first parameter to "cfg: str | URL | _ConfigProtocol" -@register.init -def no_args(__foo: Foo) -> None: - pass - - -no_args(cfg="") -no_args(cfg=url) -no_args(cfg=config) - -# Test pre-decorated functions -generate_driver_url(url, "", "") -drop_all_schema_objects_pre_tables(url, unused) -drop_all_schema_objects_post_tables(url, unused) -create_db(url, engine, unused) -drop_db(url, engine, unused) -update_db_opts(url, unused) -post_configure_engine(url, unused, unused) -follower_url_from_main(url, "") -configure_follower(url, unused) -run_reap_dbs(url, unused) -temp_table_keyword_args(url, engine) -prepare_for_drop_tables(url, unused) -stop_test_class_outside_fixtures(url, unused, type) -get_temp_table_name(url, unused, "") -set_default_schema_on_connection(url, unused, unused) -set_default_schema_on_connection(ConfigModule, unused, unused) -set_default_schema_on_connection(config, unused, unused) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/METADATA.toml deleted file mode 100644 index f3db0ed39..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/METADATA.toml +++ /dev/null @@ -1,9 +0,0 @@ -version = "1.4.46" -extra_description = """\ - The `sqlalchemy-stubs` package is an alternative to this package and also \ - includes a mypy plugin for more precise types.\ -""" -obsolete_since = "2.0.0" # Released on 2023-01-26 - -[tool.stubtest] -stubtest_requirements = ["pytest"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/__init__.pyi deleted file mode 100644 index 85d101e51..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/__init__.pyi +++ /dev/null @@ -1,133 +0,0 @@ -from .engine import ( - create_engine as create_engine, - create_mock_engine as create_mock_engine, - engine_from_config as engine_from_config, -) -from .inspection import inspect as inspect -from .schema import ( - BLANK_SCHEMA as BLANK_SCHEMA, - DDL as DDL, - CheckConstraint as CheckConstraint, - Column as Column, - ColumnDefault as ColumnDefault, - Computed as Computed, - Constraint as Constraint, - DefaultClause as DefaultClause, - FetchedValue as FetchedValue, - ForeignKey as ForeignKey, - ForeignKeyConstraint as ForeignKeyConstraint, - Identity as Identity, - Index as Index, - MetaData as MetaData, - PrimaryKeyConstraint as PrimaryKeyConstraint, - Sequence as Sequence, - Table as Table, - ThreadLocalMetaData as ThreadLocalMetaData, - UniqueConstraint as UniqueConstraint, -) -from .sql import ( - LABEL_STYLE_DEFAULT as LABEL_STYLE_DEFAULT, - LABEL_STYLE_DISAMBIGUATE_ONLY as LABEL_STYLE_DISAMBIGUATE_ONLY, - LABEL_STYLE_NONE as LABEL_STYLE_NONE, - LABEL_STYLE_TABLENAME_PLUS_COL as LABEL_STYLE_TABLENAME_PLUS_COL, - alias as alias, - all_ as all_, - and_ as and_, - any_ as any_, - asc as asc, - between as between, - bindparam as bindparam, - case as case, - cast as cast, - collate as collate, - column as column, - delete as delete, - desc as desc, - distinct as distinct, - except_ as except_, - except_all as except_all, - exists as exists, - extract as extract, - false as false, - func as func, - funcfilter as funcfilter, - insert as insert, - intersect as intersect, - intersect_all as intersect_all, - join as join, - lambda_stmt as lambda_stmt, - lateral as lateral, - literal as literal, - literal_column as literal_column, - modifier as modifier, - not_ as not_, - null as null, - nulls_first as nulls_first, - nulls_last as nulls_last, - nullsfirst as nullsfirst, - nullslast as nullslast, - or_ as or_, - outerjoin as outerjoin, - outparam as outparam, - over as over, - select as select, - subquery as subquery, - table as table, - tablesample as tablesample, - text as text, - true as true, - tuple_ as tuple_, - type_coerce as type_coerce, - union as union, - union_all as union_all, - update as update, - values as values, - within_group as within_group, -) -from .sql.sqltypes import ( - ARRAY as ARRAY, - BIGINT as BIGINT, - BINARY as BINARY, - BLOB as BLOB, - BOOLEAN as BOOLEAN, - CHAR as CHAR, - CLOB as CLOB, - DATE as DATE, - DATETIME as DATETIME, - DECIMAL as DECIMAL, - FLOAT as FLOAT, - INT as INT, - INTEGER as INTEGER, - JSON as JSON, - NCHAR as NCHAR, - NUMERIC as NUMERIC, - NVARCHAR as NVARCHAR, - REAL as REAL, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - VARBINARY as VARBINARY, - VARCHAR as VARCHAR, - BigInteger as BigInteger, - Boolean as Boolean, - Date as Date, - DateTime as DateTime, - Enum as Enum, - Float as Float, - Integer as Integer, - Interval as Interval, - LargeBinary as LargeBinary, - Numeric as Numeric, - PickleType as PickleType, - SmallInteger as SmallInteger, - String as String, - Text as Text, - Time as Time, - TupleType as TupleType, - TypeDecorator as TypeDecorator, - Unicode as Unicode, - UnicodeText as UnicodeText, -) - -__version__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cimmutabledict.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cimmutabledict.pyi deleted file mode 100644 index 1a1a3006a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cimmutabledict.pyi +++ /dev/null @@ -1,19 +0,0 @@ -from _typeshed import SupportsKeysAndGetItem -from collections.abc import Iterable -from typing import Generic, TypeVar, overload -from typing_extensions import final - -_KT = TypeVar("_KT") -_KT2 = TypeVar("_KT2") -_VT = TypeVar("_VT") -_VT2 = TypeVar("_VT2") - -@final -class immutabledict(dict[_KT, _VT], Generic[_KT, _VT]): - @overload - def union(self, __dict: dict[_KT2, _VT2]) -> immutabledict[_KT | _KT2, _VT | _VT2]: ... - @overload - def union(self, __dict: None = None, **kw: SupportsKeysAndGetItem[_KT2, _VT2]) -> immutabledict[_KT | _KT2, _VT | _VT2]: ... - def merge_with( - self, *args: SupportsKeysAndGetItem[_KT | _KT2, _VT2] | Iterable[tuple[_KT2, _VT2]] | None - ) -> immutabledict[_KT | _KT2, _VT | _VT2]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/__init__.pyi deleted file mode 100644 index b66d337f0..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/__init__.pyi +++ /dev/null @@ -1 +0,0 @@ -class Connector: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/mxodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/mxodbc.pyi deleted file mode 100644 index 3bf803352..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/mxodbc.pyi +++ /dev/null @@ -1,17 +0,0 @@ -from _typeshed import Incomplete - -from . import Connector - -class MxODBCConnector(Connector): - driver: str - supports_sane_multi_rowcount: bool - supports_unicode_statements: bool - supports_unicode_binds: bool - supports_native_decimal: bool - @classmethod - def dbapi(cls): ... - def on_connect(self): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/pyodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/pyodbc.pyi deleted file mode 100644 index 7210734f9..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/connectors/pyodbc.pyi +++ /dev/null @@ -1,22 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from . import Connector - -class PyODBCConnector(Connector): - driver: str - supports_sane_rowcount_returning: bool - supports_sane_multi_rowcount: bool - supports_unicode_statements: bool - supports_unicode_binds: bool - supports_native_decimal: bool - default_paramstyle: str - use_setinputsizes: bool - pyodbc_driver_name: Any - def __init__(self, supports_unicode_binds: Incomplete | None = None, use_setinputsizes: bool = False, **kw) -> None: ... - @classmethod - def dbapi(cls): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - def do_set_input_sizes(self, cursor, list_of_tuples, context) -> None: ... - def set_isolation_level(self, connection, level) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cprocessors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cprocessors.pyi deleted file mode 100644 index 93df3b165..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cprocessors.pyi +++ /dev/null @@ -1,15 +0,0 @@ -class DecimalResultProcessor: - def __init__(self, *args, **kwargs) -> None: ... - def process(self, *args, **kwargs): ... - -class UnicodeResultProcessor: - def __init__(self, *args, **kwargs) -> None: ... - def conditional_process(self, *args, **kwargs): ... - def process(self, *args, **kwargs): ... - -def int_to_boolean(*args, **kwargs): ... -def str_to_date(*args, **kwargs): ... -def str_to_datetime(*args, **kwargs): ... -def str_to_time(*args, **kwargs): ... -def to_float(*args, **kwargs): ... -def to_str(*args, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cresultproxy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cresultproxy.pyi deleted file mode 100644 index 4bf9b9ea1..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/cresultproxy.pyi +++ /dev/null @@ -1,23 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Callable, Iterable, Iterator -from typing import Any, overload - -class BaseRow: - def __init__( - self, - __parent, - __processors: Iterable[Callable[[Any], Any]] | None, - __keymap: dict[Incomplete, Incomplete], - __key_style: int, - __row: Iterable[Any], - ) -> None: ... - def __reduce__(self) -> tuple[Incomplete, tuple[Incomplete, Incomplete]]: ... - def __iter__(self) -> Iterator[Any]: ... - def __len__(self) -> int: ... - def __hash__(self) -> int: ... - @overload - def __getitem__(self, __key: str | int) -> tuple[Any, ...]: ... - @overload - def __getitem__(self, __key: slice) -> tuple[tuple[Any, ...]]: ... - -def safe_rowproxy_reconstructor(__cls, __state): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/databases/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/databases/__init__.pyi deleted file mode 100644 index 58f463cb7..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/databases/__init__.pyi +++ /dev/null @@ -1,18 +0,0 @@ -from ..dialects.firebird import base as firebird_base -from ..dialects.mssql import base as mssql_base -from ..dialects.mysql import base as mysql_base -from ..dialects.oracle import base as oracle_base -from ..dialects.postgresql import base as postgresql_base -from ..dialects.sqlite import base as sqlite_base -from ..dialects.sybase import base as sybase_base - -__all__ = ("firebird", "mssql", "mysql", "postgresql", "sqlite", "oracle", "sybase") - -firebird = firebird_base -mssql = mssql_base -mysql = mysql_base -oracle = oracle_base -postgresql = postgresql_base -postgres = postgresql_base -sqlite = sqlite_base -sybase = sybase_base diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/__init__.pyi deleted file mode 100644 index 63292f370..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/__init__.pyi +++ /dev/null @@ -1,16 +0,0 @@ -from typing import Any - -from . import ( - firebird as firebird, - mssql as mssql, - mysql as mysql, - oracle as oracle, - postgresql as postgresql, - sqlite as sqlite, - sybase as sybase, -) - -__all__ = ("firebird", "mssql", "mysql", "oracle", "postgresql", "sqlite", "sybase") - -registry: Any -plugins: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/__init__.pyi deleted file mode 100644 index a849e4ca6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/__init__.pyi +++ /dev/null @@ -1,34 +0,0 @@ -from typing import Any - -from .base import ( - BIGINT as BIGINT, - BLOB as BLOB, - CHAR as CHAR, - DATE as DATE, - FLOAT as FLOAT, - NUMERIC as NUMERIC, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - VARCHAR as VARCHAR, -) - -__all__ = ( - "SMALLINT", - "BIGINT", - "FLOAT", - "FLOAT", - "DATE", - "TIME", - "TEXT", - "NUMERIC", - "FLOAT", - "TIMESTAMP", - "VARCHAR", - "CHAR", - "BLOB", - "dialect", -) - -dialect: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi deleted file mode 100644 index 83dea8caa..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi +++ /dev/null @@ -1,108 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...engine import default -from ...sql import compiler, sqltypes -from ...sql.sqltypes import ( - BIGINT as BIGINT, - BLOB as BLOB, - DATE as DATE, - FLOAT as FLOAT, - INTEGER as INTEGER, - NUMERIC as NUMERIC, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - Integer as Integer, -) - -RESERVED_WORDS: Any - -class _StringType(sqltypes.String): - charset: Any - def __init__(self, charset: Incomplete | None = None, **kw) -> None: ... - -class VARCHAR(_StringType, sqltypes.VARCHAR): - __visit_name__: str - def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... - -class CHAR(_StringType, sqltypes.CHAR): - __visit_name__: str - def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... - -class _FBDateTime(sqltypes.DateTime): - def bind_processor(self, dialect): ... - -colspecs: Any -ischema_names: Any - -class FBTypeCompiler(compiler.GenericTypeCompiler): - def visit_boolean(self, type_, **kw): ... - def visit_datetime(self, type_, **kw): ... - def visit_TEXT(self, type_, **kw): ... - def visit_BLOB(self, type_, **kw): ... - def visit_CHAR(self, type_, **kw): ... - def visit_VARCHAR(self, type_, **kw): ... - -class FBCompiler(compiler.SQLCompiler): - ansi_bind_rules: bool - def visit_now_func(self, fn, **kw): ... - def visit_startswith_op_binary(self, binary, operator, **kw): ... - def visit_not_startswith_op_binary(self, binary, operator, **kw): ... - def visit_mod_binary(self, binary, operator, **kw): ... - def visit_alias(self, alias, asfrom: bool = False, **kwargs): ... # type: ignore[override] - def visit_substring_func(self, func, **kw): ... - def visit_length_func(self, function, **kw): ... - visit_char_length_func: Any - def function_argspec(self, func, **kw): ... - def default_from(self): ... - def visit_sequence(self, seq, **kw): ... - def get_select_precolumns(self, select, **kw): ... - def limit_clause(self, select, **kw): ... - def returning_clause(self, stmt, returning_cols): ... - -class FBDDLCompiler(compiler.DDLCompiler): - def visit_create_sequence(self, create): ... - def visit_drop_sequence(self, drop): ... - def visit_computed_column(self, generated): ... - -class FBIdentifierPreparer(compiler.IdentifierPreparer): - reserved_words: Any - illegal_initial_characters: Any - def __init__(self, dialect) -> None: ... - -class FBExecutionContext(default.DefaultExecutionContext): - def fire_sequence(self, seq, type_): ... - -class FBDialect(default.DefaultDialect): - name: str - supports_statement_cache: bool - max_identifier_length: int - supports_sequences: bool - sequences_optional: bool - supports_default_values: bool - postfetch_lastrowid: bool - supports_native_boolean: bool - requires_name_normalize: bool - supports_empty_insert: bool - statement_compiler: Any - ddl_compiler: Any - preparer: Any - type_compiler: Any - colspecs: Any - ischema_names: Any - construct_arguments: Any - def __init__(self, *args, **kwargs) -> None: ... - implicit_returning: Any - def initialize(self, connection) -> None: ... - def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None): ... # type: ignore[override] - def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_column_sequence(self, connection, table_name, column_name, schema: Incomplete | None = None, **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/fdb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/fdb.pyi deleted file mode 100644 index c2c7a025a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/fdb.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from .kinterbasdb import FBDialect_kinterbasdb - -class FBDialect_fdb(FBDialect_kinterbasdb): - supports_statement_cache: bool - def __init__(self, enable_rowcount: bool = True, retaining: bool = False, **kwargs) -> None: ... - @classmethod - def dbapi(cls): ... - def create_connect_args(self, url): ... - -dialect = FBDialect_fdb diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi deleted file mode 100644 index 8416a63aa..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi +++ /dev/null @@ -1,39 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql.sqltypes import Float, Numeric -from .base import FBDialect, FBExecutionContext - -class _kinterbasdb_numeric: - def bind_processor(self, dialect): ... - -class _FBNumeric_kinterbasdb(_kinterbasdb_numeric, Numeric): ... -class _FBFloat_kinterbasdb(_kinterbasdb_numeric, Float): ... - -class FBExecutionContext_kinterbasdb(FBExecutionContext): - @property - def rowcount(self): ... - -class FBDialect_kinterbasdb(FBDialect): - driver: str - supports_statement_cache: bool - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - supports_native_decimal: bool - colspecs: Any - enable_rowcount: Any - type_conv: Any - concurrency_level: Any - retaining: Any - def __init__( - self, type_conv: int = 200, concurrency_level: int = 1, enable_rowcount: bool = True, retaining: bool = False, **kwargs - ) -> None: ... - @classmethod - def dbapi(cls): ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def do_rollback(self, dbapi_connection) -> None: ... - def do_commit(self, dbapi_connection) -> None: ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = FBDialect_kinterbasdb diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/__init__.pyi deleted file mode 100644 index c4b6c72f6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/__init__.pyi +++ /dev/null @@ -1,76 +0,0 @@ -from typing import Any - -from .base import ( - BIGINT as BIGINT, - BINARY as BINARY, - BIT as BIT, - CHAR as CHAR, - DATE as DATE, - DATETIME as DATETIME, - DATETIME2 as DATETIME2, - DATETIMEOFFSET as DATETIMEOFFSET, - DECIMAL as DECIMAL, - FLOAT as FLOAT, - IMAGE as IMAGE, - INTEGER as INTEGER, - JSON as JSON, - MONEY as MONEY, - NCHAR as NCHAR, - NTEXT as NTEXT, - NUMERIC as NUMERIC, - NVARCHAR as NVARCHAR, - REAL as REAL, - ROWVERSION as ROWVERSION, - SMALLDATETIME as SMALLDATETIME, - SMALLINT as SMALLINT, - SMALLMONEY as SMALLMONEY, - SQL_VARIANT as SQL_VARIANT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - TINYINT as TINYINT, - UNIQUEIDENTIFIER as UNIQUEIDENTIFIER, - VARBINARY as VARBINARY, - VARCHAR as VARCHAR, - XML as XML, - try_cast as try_cast, -) - -__all__ = ( - "JSON", - "INTEGER", - "BIGINT", - "SMALLINT", - "TINYINT", - "VARCHAR", - "NVARCHAR", - "CHAR", - "NCHAR", - "TEXT", - "NTEXT", - "DECIMAL", - "NUMERIC", - "FLOAT", - "DATETIME", - "DATETIME2", - "DATETIMEOFFSET", - "DATE", - "TIME", - "SMALLDATETIME", - "BINARY", - "VARBINARY", - "BIT", - "REAL", - "IMAGE", - "TIMESTAMP", - "ROWVERSION", - "MONEY", - "SMALLMONEY", - "UNIQUEIDENTIFIER", - "SQL_VARIANT", - "XML", - "dialect", - "try_cast", -) - -dialect: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi deleted file mode 100644 index 2e5674285..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi +++ /dev/null @@ -1,323 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, overload -from typing_extensions import Literal - -from ...engine import default -from ...sql import compiler, sqltypes -from ...sql.elements import Cast -from ...sql.sqltypes import ( - BIGINT as BIGINT, - BINARY as BINARY, - CHAR as CHAR, - DATE as DATE, - DATETIME as DATETIME, - DECIMAL as DECIMAL, - FLOAT as FLOAT, - INTEGER as INTEGER, - NCHAR as NCHAR, - NUMERIC as NUMERIC, - NVARCHAR as NVARCHAR, - SMALLINT as SMALLINT, - TEXT as TEXT, - VARCHAR as VARCHAR, -) -from .json import JSON as JSON - -MS_2017_VERSION: Any -MS_2016_VERSION: Any -MS_2014_VERSION: Any -MS_2012_VERSION: Any -MS_2008_VERSION: Any -MS_2005_VERSION: Any -MS_2000_VERSION: Any -RESERVED_WORDS: Any - -class REAL(sqltypes.REAL): - __visit_name__: str - def __init__(self, **kw) -> None: ... - -class TINYINT(sqltypes.Integer): - __visit_name__: str - -class _MSDate(sqltypes.Date): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class TIME(sqltypes.TIME): - precision: Any - def __init__(self, precision: Incomplete | None = None, **kwargs) -> None: ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -_MSTime = TIME - -class _BASETIMEIMPL(TIME): - __visit_name__: str - -class _DateTimeBase: - def bind_processor(self, dialect): ... - -class _MSDateTime(_DateTimeBase, sqltypes.DateTime): ... - -class SMALLDATETIME(_DateTimeBase, sqltypes.DateTime): - __visit_name__: str - -class DATETIME2(_DateTimeBase, sqltypes.DateTime): - __visit_name__: str - precision: Any - def __init__(self, precision: Incomplete | None = None, **kw) -> None: ... - -class DATETIMEOFFSET(_DateTimeBase, sqltypes.DateTime): - __visit_name__: str - precision: Any - def __init__(self, precision: Incomplete | None = None, **kw) -> None: ... - -class _UnicodeLiteral: - def literal_processor(self, dialect): ... - -class _MSUnicode(_UnicodeLiteral, sqltypes.Unicode): ... -class _MSUnicodeText(_UnicodeLiteral, sqltypes.UnicodeText): ... - -class TIMESTAMP(sqltypes._Binary): - __visit_name__: str - length: Any - convert_int: Any - def __init__(self, convert_int: bool = False) -> None: ... - def result_processor(self, dialect, coltype): ... - -class ROWVERSION(TIMESTAMP): - __visit_name__: str - -class NTEXT(sqltypes.UnicodeText): - __visit_name__: str - -class VARBINARY(sqltypes.VARBINARY, sqltypes.LargeBinary): - __visit_name__: str - filestream: bool - @overload - def __init__(self, length: Literal["max"] | None, filestream: Literal[True]) -> None: ... - @overload - def __init__(self, *, filestream: Literal[True]) -> None: ... - @overload - def __init__(self, length: Incomplete | None = None, filestream: Literal[False] = False) -> None: ... - -class IMAGE(sqltypes.LargeBinary): - __visit_name__: str - -class XML(sqltypes.Text): - __visit_name__: str - -class BIT(sqltypes.Boolean): - __visit_name__: str - -class MONEY(sqltypes.TypeEngine): - __visit_name__: str - -class SMALLMONEY(sqltypes.TypeEngine): - __visit_name__: str - -class UNIQUEIDENTIFIER(sqltypes.TypeEngine): - __visit_name__: str - -class SQL_VARIANT(sqltypes.TypeEngine): - __visit_name__: str - -class TryCast(Cast): - __visit_name__: str - stringify_dialect: str - inherit_cache: bool - def __init__(self, *arg, **kw) -> None: ... - -try_cast: Any -MSDateTime: Any -MSDate: Any -MSReal = REAL -MSTinyInteger = TINYINT -MSTime = TIME -MSSmallDateTime = SMALLDATETIME -MSDateTime2 = DATETIME2 -MSDateTimeOffset = DATETIMEOFFSET -MSText = TEXT -MSNText = NTEXT -MSString = VARCHAR -MSNVarchar = NVARCHAR -MSChar = CHAR -MSNChar = NCHAR -MSBinary = BINARY -MSVarBinary = VARBINARY -MSImage = IMAGE -MSBit = BIT -MSMoney = MONEY -MSSmallMoney = SMALLMONEY -MSUniqueIdentifier = UNIQUEIDENTIFIER -MSVariant = SQL_VARIANT -ischema_names: Any - -class MSTypeCompiler(compiler.GenericTypeCompiler): - def visit_FLOAT(self, type_, **kw): ... - def visit_TINYINT(self, type_, **kw): ... - def visit_TIME(self, type_, **kw): ... - def visit_TIMESTAMP(self, type_, **kw): ... - def visit_ROWVERSION(self, type_, **kw): ... - def visit_datetime(self, type_, **kw): ... - def visit_DATETIMEOFFSET(self, type_, **kw): ... - def visit_DATETIME2(self, type_, **kw): ... - def visit_SMALLDATETIME(self, type_, **kw): ... - def visit_unicode(self, type_, **kw): ... - def visit_text(self, type_, **kw): ... - def visit_unicode_text(self, type_, **kw): ... - def visit_NTEXT(self, type_, **kw): ... - def visit_TEXT(self, type_, **kw): ... - def visit_VARCHAR(self, type_, **kw): ... - def visit_CHAR(self, type_, **kw): ... - def visit_NCHAR(self, type_, **kw): ... - def visit_NVARCHAR(self, type_, **kw): ... - def visit_date(self, type_, **kw): ... - def visit__BASETIMEIMPL(self, type_, **kw): ... - def visit_time(self, type_, **kw): ... - def visit_large_binary(self, type_, **kw): ... - def visit_IMAGE(self, type_, **kw): ... - def visit_XML(self, type_, **kw): ... - def visit_VARBINARY(self, type_, **kw): ... - def visit_boolean(self, type_, **kw): ... - def visit_BIT(self, type_, **kw): ... - def visit_JSON(self, type_, **kw): ... - def visit_MONEY(self, type_, **kw): ... - def visit_SMALLMONEY(self, type_, **kw): ... - def visit_UNIQUEIDENTIFIER(self, type_, **kw): ... - def visit_SQL_VARIANT(self, type_, **kw): ... - -class MSExecutionContext(default.DefaultExecutionContext): - def pre_exec(self) -> None: ... - cursor_fetch_strategy: Any - def post_exec(self) -> None: ... - def get_lastrowid(self): ... - @property - def rowcount(self): ... - def handle_dbapi_exception(self, e) -> None: ... - def fire_sequence(self, seq, type_): ... - def get_insert_default(self, column): ... - -class MSSQLCompiler(compiler.SQLCompiler): - returning_precedes_values: bool - extract_map: Any - tablealiases: Any - def __init__(self, *args, **kwargs) -> None: ... - def visit_now_func(self, fn, **kw): ... - def visit_current_date_func(self, fn, **kw): ... - def visit_length_func(self, fn, **kw): ... - def visit_char_length_func(self, fn, **kw): ... - def visit_concat_op_binary(self, binary, operator, **kw): ... - def visit_true(self, expr, **kw): ... - def visit_false(self, expr, **kw): ... - def visit_match_op_binary(self, binary, operator, **kw): ... - def get_select_precolumns(self, select, **kw): ... - def get_from_hint_text(self, table, text): ... - def get_crud_hint_text(self, table, text): ... - def fetch_clause(self, cs, **kwargs): ... - def limit_clause(self, cs, **kwargs): ... - def visit_try_cast(self, element, **kw): ... - def translate_select_structure(self, select_stmt, **kwargs): ... - def visit_table(self, table, mssql_aliased: bool = ..., iscrud: bool = ..., **kwargs): ... # type: ignore[override] - def visit_alias(self, alias, **kw): ... - def visit_column(self, column, add_to_result_map: Incomplete | None = ..., **kw): ... # type: ignore[override] - def visit_extract(self, extract, **kw): ... - def visit_savepoint(self, savepoint_stmt): ... - def visit_rollback_to_savepoint(self, savepoint_stmt): ... - def visit_binary(self, binary, **kwargs): ... - def returning_clause(self, stmt, returning_cols): ... - def get_cte_preamble(self, recursive): ... - def label_select_column(self, select, column, asfrom): ... - def for_update_clause(self, select, **kw): ... - def order_by_clause(self, select, **kw): ... - def update_from_clause(self, update_stmt, from_table, extra_froms, from_hints, **kw): ... - def delete_table_clause(self, delete_stmt, from_table, extra_froms): ... - def delete_extra_from_clause(self, delete_stmt, from_table, extra_froms, from_hints, **kw): ... - def visit_empty_set_expr(self, type_): ... - def visit_is_distinct_from_binary(self, binary, operator, **kw): ... - def visit_is_not_distinct_from_binary(self, binary, operator, **kw): ... - def visit_json_getitem_op_binary(self, binary, operator, **kw): ... - def visit_json_path_getitem_op_binary(self, binary, operator, **kw): ... - def visit_sequence(self, seq, **kw): ... - -class MSSQLStrictCompiler(MSSQLCompiler): - ansi_bind_rules: bool - def visit_in_op_binary(self, binary, operator, **kw): ... - def visit_not_in_op_binary(self, binary, operator, **kw): ... - def render_literal_value(self, value, type_): ... - -class MSDDLCompiler(compiler.DDLCompiler): - def get_column_specification(self, column, **kwargs): ... - def visit_create_index(self, create, include_schema: bool = False): ... # type: ignore[override] - def visit_drop_index(self, drop): ... - def visit_primary_key_constraint(self, constraint): ... - def visit_unique_constraint(self, constraint): ... - def visit_computed_column(self, generated): ... - def visit_create_sequence(self, create, **kw): ... - def visit_identity_column(self, identity, **kw): ... - -class MSIdentifierPreparer(compiler.IdentifierPreparer): - reserved_words: Any - def __init__(self, dialect) -> None: ... - def quote_schema(self, schema, force: Incomplete | None = None): ... - -class MSDialect(default.DefaultDialect): - name: str - supports_statement_cache: bool - supports_default_values: bool - supports_empty_insert: bool - use_scope_identity: bool - max_identifier_length: int - schema_name: str - implicit_returning: bool - full_returning: bool - colspecs: Any - engine_config_types: Any - ischema_names: Any - supports_sequences: bool - sequences_optional: bool - default_sequence_base: int - supports_native_boolean: bool - non_native_boolean_check_constraint: bool - supports_unicode_binds: bool - postfetch_lastrowid: bool - legacy_schema_aliasing: bool - server_version_info: Any - statement_compiler: Any - ddl_compiler: Any - type_compiler: Any - preparer: Any - construct_arguments: Any - query_timeout: Any - deprecate_large_types: Any - isolation_level: Any - def __init__( - self, - query_timeout: Incomplete | None = None, - use_scope_identity: bool = True, - schema_name: str = "dbo", - isolation_level: Incomplete | None = None, - deprecate_large_types: Incomplete | None = None, - json_serializer: Incomplete | None = None, - json_deserializer: Incomplete | None = None, - legacy_schema_aliasing: Incomplete | None = None, - ignore_no_transaction_on_rollback: bool = False, - **opts, - ) -> None: ... - def do_savepoint(self, connection, name) -> None: ... - def do_release_savepoint(self, connection, name) -> None: ... - def set_isolation_level(self, connection, level) -> None: ... - def get_isolation_level(self, dbapi_connection): ... - def initialize(self, connection) -> None: ... - def on_connect(self): ... - def has_table(self, connection, tablename, dbname, owner, schema): ... - def has_sequence(self, connection, sequencename, dbname, owner, schema): ... - def get_sequence_names(self, connection, dbname, owner, schema, **kw): ... - def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, dbname, owner, schema, **kw): ... - def get_view_names(self, connection, dbname, owner, schema, **kw): ... - def get_indexes(self, connection, tablename, dbname, owner, schema, **kw): ... - def get_view_definition(self, connection, viewname, dbname, owner, schema, **kw): ... - def get_columns(self, connection, tablename, dbname, owner, schema, **kw): ... - def get_pk_constraint(self, connection, tablename, dbname, owner, schema, **kw): ... - def get_foreign_keys(self, connection, tablename, dbname, owner, schema, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/information_schema.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/information_schema.pyi deleted file mode 100644 index f91531a75..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/information_schema.pyi +++ /dev/null @@ -1,35 +0,0 @@ -from typing import Any - -from ...sql import expression -from ...sql.type_api import TypeDecorator - -ischema: Any - -class CoerceUnicode(TypeDecorator): - impl: Any - cache_ok: bool - def process_bind_param(self, value, dialect): ... - def bind_expression(self, bindvalue): ... - -class _cast_on_2005(expression.ColumnElement[Any]): - bindvalue: Any - def __init__(self, bindvalue) -> None: ... - -schemata: Any -tables: Any -columns: Any -mssql_temp_table_columns: Any -constraints: Any -column_constraints: Any -key_constraints: Any -ref_constraints: Any -views: Any -computed_columns: Any -sequences: Any - -class IdentitySqlVariant(TypeDecorator): - impl: Any - cache_ok: bool - def column_expression(self, colexpr): ... - -identity_columns: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/json.pyi deleted file mode 100644 index 5d5bb5efe..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/json.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from ...sql.sqltypes import JSON as _JSON - -class JSON(_JSON): ... - -class _FormatTypeMixin: - def bind_processor(self, dialect): ... - def literal_processor(self, dialect): ... - -class JSONIndexType(_FormatTypeMixin, _JSON.JSONIndexType): ... -class JSONPathType(_FormatTypeMixin, _JSON.JSONPathType): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/mxodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/mxodbc.pyi deleted file mode 100644 index 2f0a14ffa..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/mxodbc.pyi +++ /dev/null @@ -1,27 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...connectors.mxodbc import MxODBCConnector -from .base import VARBINARY, MSDialect, _MSDate, _MSTime -from .pyodbc import MSExecutionContext_pyodbc, _MSNumeric_pyodbc - -class _MSNumeric_mxodbc(_MSNumeric_pyodbc): ... - -class _MSDate_mxodbc(_MSDate): - def bind_processor(self, dialect): ... - -class _MSTime_mxodbc(_MSTime): - def bind_processor(self, dialect): ... - -class _VARBINARY_mxodbc(VARBINARY): - def bind_processor(self, dialect): ... - -class MSExecutionContext_mxodbc(MSExecutionContext_pyodbc): ... - -class MSDialect_mxodbc(MxODBCConnector, MSDialect): - supports_statement_cache: bool - colspecs: Any - description_encoding: Any - def __init__(self, description_encoding: Incomplete | None = None, **params) -> None: ... - -dialect = MSDialect_mxodbc diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/provision.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/provision.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pymssql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pymssql.pyi deleted file mode 100644 index 01e796368..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pymssql.pyi +++ /dev/null @@ -1,24 +0,0 @@ -from typing import Any - -from ...sql.sqltypes import Numeric -from .base import MSDialect, MSIdentifierPreparer - -class _MSNumeric_pymssql(Numeric): - def result_processor(self, dialect, type_): ... - -class MSIdentifierPreparer_pymssql(MSIdentifierPreparer): - def __init__(self, dialect) -> None: ... - -class MSDialect_pymssql(MSDialect): - supports_statement_cache: bool - supports_native_decimal: bool - driver: str - preparer: Any - colspecs: Any - @classmethod - def dbapi(cls): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - def set_isolation_level(self, connection, level) -> None: ... - -dialect = MSDialect_pymssql diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi deleted file mode 100644 index 70e6e362b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi +++ /dev/null @@ -1,45 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...connectors.pyodbc import PyODBCConnector -from ...sql.sqltypes import DateTime, Float, Numeric -from .base import BINARY, DATETIMEOFFSET, VARBINARY, MSDialect, MSExecutionContext - -class _ms_numeric_pyodbc: - def bind_processor(self, dialect): ... - -class _MSNumeric_pyodbc(_ms_numeric_pyodbc, Numeric): ... -class _MSFloat_pyodbc(_ms_numeric_pyodbc, Float): ... - -class _ms_binary_pyodbc: - def bind_processor(self, dialect): ... - -class _ODBCDateTimeBindProcessor: - has_tz: bool - def bind_processor(self, dialect): ... - -class _ODBCDateTime(_ODBCDateTimeBindProcessor, DateTime): ... - -class _ODBCDATETIMEOFFSET(_ODBCDateTimeBindProcessor, DATETIMEOFFSET): - has_tz: bool - -class _VARBINARY_pyodbc(_ms_binary_pyodbc, VARBINARY): ... -class _BINARY_pyodbc(_ms_binary_pyodbc, BINARY): ... - -class MSExecutionContext_pyodbc(MSExecutionContext): - def pre_exec(self) -> None: ... - def post_exec(self) -> None: ... - -class MSDialect_pyodbc(PyODBCConnector, MSDialect): - supports_statement_cache: bool - supports_sane_rowcount_returning: bool - colspecs: Any - description_encoding: Any - use_scope_identity: Any - fast_executemany: Any - def __init__(self, description_encoding: Incomplete | None = None, fast_executemany: bool = False, **params) -> None: ... - def on_connect(self): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = MSDialect_pyodbc diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/__init__.pyi deleted file mode 100644 index faaa7d6e6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/__init__.pyi +++ /dev/null @@ -1,85 +0,0 @@ -from typing import Any - -from .base import ( - BIGINT as BIGINT, - BINARY as BINARY, - BIT as BIT, - BLOB as BLOB, - BOOLEAN as BOOLEAN, - CHAR as CHAR, - DATE as DATE, - DATETIME as DATETIME, - DECIMAL as DECIMAL, - DOUBLE as DOUBLE, - ENUM as ENUM, - FLOAT as FLOAT, - INTEGER as INTEGER, - JSON as JSON, - LONGBLOB as LONGBLOB, - LONGTEXT as LONGTEXT, - MEDIUMBLOB as MEDIUMBLOB, - MEDIUMINT as MEDIUMINT, - MEDIUMTEXT as MEDIUMTEXT, - NCHAR as NCHAR, - NUMERIC as NUMERIC, - NVARCHAR as NVARCHAR, - REAL as REAL, - SET as SET, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - TINYBLOB as TINYBLOB, - TINYINT as TINYINT, - TINYTEXT as TINYTEXT, - VARBINARY as VARBINARY, - VARCHAR as VARCHAR, - YEAR as YEAR, -) -from .dml import Insert as Insert, insert as insert -from .expression import match as match - -__all__ = ( - "BIGINT", - "BINARY", - "BIT", - "BLOB", - "BOOLEAN", - "CHAR", - "DATE", - "DATETIME", - "DECIMAL", - "DOUBLE", - "ENUM", - "DECIMAL", - "FLOAT", - "INTEGER", - "INTEGER", - "JSON", - "LONGBLOB", - "LONGTEXT", - "MEDIUMBLOB", - "MEDIUMINT", - "MEDIUMTEXT", - "NCHAR", - "NVARCHAR", - "NUMERIC", - "SET", - "SMALLINT", - "REAL", - "TEXT", - "TIME", - "TIMESTAMP", - "TINYBLOB", - "TINYINT", - "TINYTEXT", - "VARBINARY", - "VARCHAR", - "YEAR", - "dialect", - "insert", - "Insert", - "match", -) - -dialect: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/aiomysql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/aiomysql.pyi deleted file mode 100644 index a91b28976..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/aiomysql.pyi +++ /dev/null @@ -1,74 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...engine import AdaptedConnection -from .pymysql import MySQLDialect_pymysql - -class AsyncAdapt_aiomysql_cursor: - server_side: bool - await_: Any - def __init__(self, adapt_connection) -> None: ... - @property - def description(self): ... - @property - def rowcount(self): ... - @property - def arraysize(self): ... - @arraysize.setter - def arraysize(self, value) -> None: ... - @property - def lastrowid(self): ... - def close(self) -> None: ... - def execute(self, operation, parameters: Incomplete | None = None): ... - def executemany(self, operation, seq_of_parameters): ... - def setinputsizes(self, *inputsizes) -> None: ... - def __iter__(self): ... - def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def fetchall(self): ... - -class AsyncAdapt_aiomysql_ss_cursor(AsyncAdapt_aiomysql_cursor): - server_side: bool - await_: Any - def __init__(self, adapt_connection) -> None: ... - def close(self) -> None: ... - def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def fetchall(self): ... - -class AsyncAdapt_aiomysql_connection(AdaptedConnection): - await_: Any - dbapi: Any - def __init__(self, dbapi, connection) -> None: ... - def ping(self, reconnect): ... - def character_set_name(self): ... - def autocommit(self, value) -> None: ... - def cursor(self, server_side: bool = False): ... - def rollback(self) -> None: ... - def commit(self) -> None: ... - def close(self) -> None: ... - -class AsyncAdaptFallback_aiomysql_connection(AsyncAdapt_aiomysql_connection): - await_: Any - -class AsyncAdapt_aiomysql_dbapi: - aiomysql: Any - pymysql: Any - paramstyle: str - def __init__(self, aiomysql, pymysql) -> None: ... - def connect(self, *arg, **kw): ... - -class MySQLDialect_aiomysql(MySQLDialect_pymysql): - driver: str - supports_statement_cache: bool - supports_server_side_cursors: bool - is_async: bool - @classmethod - def dbapi(cls): ... - @classmethod - def get_pool_class(cls, url): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - def get_driver_connection(self, connection): ... - -dialect = MySQLDialect_aiomysql diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi deleted file mode 100644 index 1661a2922..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi +++ /dev/null @@ -1,84 +0,0 @@ -from _typeshed import Incomplete, ReadableBuffer -from collections.abc import Iterable -from typing import Any, SupportsBytes -from typing_extensions import SupportsIndex - -from ...engine import AdaptedConnection -from .pymysql import MySQLDialect_pymysql - -class AsyncAdapt_asyncmy_cursor: - server_side: bool - await_: Any - def __init__(self, adapt_connection) -> None: ... - @property - def description(self): ... - @property - def rowcount(self): ... - @property - def arraysize(self): ... - @arraysize.setter - def arraysize(self, value) -> None: ... - @property - def lastrowid(self): ... - def close(self) -> None: ... - def execute(self, operation, parameters: Incomplete | None = None): ... - def executemany(self, operation, seq_of_parameters): ... - def setinputsizes(self, *inputsizes) -> None: ... - def __iter__(self): ... - def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def fetchall(self): ... - -class AsyncAdapt_asyncmy_ss_cursor(AsyncAdapt_asyncmy_cursor): - server_side: bool - await_: Any - def __init__(self, adapt_connection) -> None: ... - def close(self) -> None: ... - def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def fetchall(self): ... - -class AsyncAdapt_asyncmy_connection(AdaptedConnection): - await_: Any - dbapi: Any - def __init__(self, dbapi, connection) -> None: ... - def ping(self, reconnect): ... - def character_set_name(self): ... - def autocommit(self, value) -> None: ... - def cursor(self, server_side: bool = False): ... - def rollback(self) -> None: ... - def commit(self) -> None: ... - def close(self) -> None: ... - -class AsyncAdaptFallback_asyncmy_connection(AsyncAdapt_asyncmy_connection): - await_: Any - -def _Binary(x: Iterable[SupportsIndex] | SupportsIndex | SupportsBytes | ReadableBuffer) -> bytes: ... - -class AsyncAdapt_asyncmy_dbapi: - asyncmy: Any - pymysql: Any - paramstyle: str - STRING: Incomplete - NUMBER: Incomplete - BINARY: Incomplete - DATETIME: Incomplete - TIMESTAMP: Incomplete - Binary = staticmethod(_Binary) - def __init__(self, asyncmy: Any) -> None: ... - def connect(self, *arg, **kw): ... - -class MySQLDialect_asyncmy(MySQLDialect_pymysql): - driver: str - supports_statement_cache: bool - supports_server_side_cursors: bool - is_async: bool - @classmethod - def dbapi(cls): ... - @classmethod - def get_pool_class(cls, url): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - def get_driver_connection(self, connection): ... - -dialect = MySQLDialect_asyncmy diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi deleted file mode 100644 index cae866674..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi +++ /dev/null @@ -1,241 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...engine import default -from ...sql import compiler -from ...sql.sqltypes import BINARY as BINARY, BLOB as BLOB, BOOLEAN as BOOLEAN, DATE as DATE, VARBINARY as VARBINARY -from .enumerated import ENUM as ENUM, SET as SET -from .json import JSON as JSON -from .reserved_words import RESERVED_WORDS_MARIADB as RESERVED_WORDS_MARIADB, RESERVED_WORDS_MYSQL as RESERVED_WORDS_MYSQL -from .types import ( - BIGINT as BIGINT, - BIT as BIT, - CHAR as CHAR, - DATETIME as DATETIME, - DECIMAL as DECIMAL, - DOUBLE as DOUBLE, - FLOAT as FLOAT, - INTEGER as INTEGER, - LONGBLOB as LONGBLOB, - LONGTEXT as LONGTEXT, - MEDIUMBLOB as MEDIUMBLOB, - MEDIUMINT as MEDIUMINT, - MEDIUMTEXT as MEDIUMTEXT, - NCHAR as NCHAR, - NUMERIC as NUMERIC, - NVARCHAR as NVARCHAR, - REAL as REAL, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - TINYBLOB as TINYBLOB, - TINYINT as TINYINT, - TINYTEXT as TINYTEXT, - VARCHAR as VARCHAR, - YEAR as YEAR, -) - -AUTOCOMMIT_RE: Any -SET_RE: Any -MSTime = TIME -MSSet = SET -MSEnum = ENUM -MSLongBlob = LONGBLOB -MSMediumBlob = MEDIUMBLOB -MSTinyBlob = TINYBLOB -MSBlob = BLOB -MSBinary = BINARY -MSVarBinary = VARBINARY -MSNChar = NCHAR -MSNVarChar = NVARCHAR -MSChar = CHAR -MSString = VARCHAR -MSLongText = LONGTEXT -MSMediumText = MEDIUMTEXT -MSTinyText = TINYTEXT -MSText = TEXT -MSYear = YEAR -MSTimeStamp = TIMESTAMP -MSBit = BIT -MSSmallInteger = SMALLINT -MSTinyInteger = TINYINT -MSMediumInteger = MEDIUMINT -MSBigInteger = BIGINT -MSNumeric = NUMERIC -MSDecimal = DECIMAL -MSDouble = DOUBLE -MSReal = REAL -MSFloat = FLOAT -MSInteger = INTEGER -colspecs: Any -ischema_names: Any - -class MySQLExecutionContext(default.DefaultExecutionContext): - def should_autocommit_text(self, statement): ... - def create_server_side_cursor(self): ... - def fire_sequence(self, seq, type_): ... - -class MySQLCompiler(compiler.SQLCompiler): - render_table_with_column_in_update_from: bool - extract_map: Any - def default_from(self): ... - def visit_random_func(self, fn, **kw): ... - def visit_sequence(self, seq, **kw): ... - def visit_sysdate_func(self, fn, **kw): ... - def visit_json_getitem_op_binary(self, binary, operator, **kw): ... - def visit_json_path_getitem_op_binary(self, binary, operator, **kw): ... - def visit_on_duplicate_key_update(self, on_duplicate, **kw): ... - def visit_concat_op_binary(self, binary, operator, **kw): ... - def visit_mysql_match(self, element, **kw): ... - def visit_match_op_binary(self, binary, operator, **kw): ... - def get_from_hint_text(self, table, text): ... - def visit_typeclause(self, typeclause, type_: Incomplete | None = None, **kw): ... - def visit_cast(self, cast, **kw): ... - def render_literal_value(self, value, type_): ... - def visit_true(self, element, **kw): ... - def visit_false(self, element, **kw): ... - def get_select_precolumns(self, select, **kw): ... - def visit_join(self, join, asfrom: bool = False, from_linter: Incomplete | None = None, **kwargs): ... - def for_update_clause(self, select, **kw): ... - def limit_clause(self, select, **kw): ... - def update_limit_clause(self, update_stmt): ... - def update_tables_clause(self, update_stmt, from_table, extra_froms, **kw): ... - def update_from_clause(self, update_stmt, from_table, extra_froms, from_hints, **kw) -> None: ... - def delete_table_clause(self, delete_stmt, from_table, extra_froms): ... - def delete_extra_from_clause(self, delete_stmt, from_table, extra_froms, from_hints, **kw): ... - def visit_empty_set_expr(self, element_types): ... - def visit_is_distinct_from_binary(self, binary, operator, **kw): ... - def visit_is_not_distinct_from_binary(self, binary, operator, **kw): ... - def visit_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_not_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_regexp_replace_op_binary(self, binary, operator, **kw): ... - -class MySQLDDLCompiler(compiler.DDLCompiler): - def get_column_specification(self, column, **kw): ... - def post_create_table(self, table): ... - def visit_create_index(self, create, **kw): ... - def visit_primary_key_constraint(self, constraint): ... - def visit_drop_index(self, drop): ... - def visit_drop_constraint(self, drop): ... - def define_constraint_match(self, constraint): ... - def visit_set_table_comment(self, create): ... - def visit_drop_table_comment(self, create): ... - def visit_set_column_comment(self, create): ... - -class MySQLTypeCompiler(compiler.GenericTypeCompiler): - def visit_NUMERIC(self, type_, **kw): ... - def visit_DECIMAL(self, type_, **kw): ... - def visit_DOUBLE(self, type_, **kw): ... - def visit_REAL(self, type_, **kw): ... - def visit_FLOAT(self, type_, **kw): ... - def visit_INTEGER(self, type_, **kw): ... - def visit_BIGINT(self, type_, **kw): ... - def visit_MEDIUMINT(self, type_, **kw): ... - def visit_TINYINT(self, type_, **kw): ... - def visit_SMALLINT(self, type_, **kw): ... - def visit_BIT(self, type_, **kw): ... - def visit_DATETIME(self, type_, **kw): ... - def visit_DATE(self, type_, **kw): ... - def visit_TIME(self, type_, **kw): ... - def visit_TIMESTAMP(self, type_, **kw): ... - def visit_YEAR(self, type_, **kw): ... - def visit_TEXT(self, type_, **kw): ... - def visit_TINYTEXT(self, type_, **kw): ... - def visit_MEDIUMTEXT(self, type_, **kw): ... - def visit_LONGTEXT(self, type_, **kw): ... - def visit_VARCHAR(self, type_, **kw): ... - def visit_CHAR(self, type_, **kw): ... - def visit_NVARCHAR(self, type_, **kw): ... - def visit_NCHAR(self, type_, **kw): ... - def visit_VARBINARY(self, type_, **kw): ... - def visit_JSON(self, type_, **kw): ... - def visit_large_binary(self, type_, **kw): ... - def visit_enum(self, type_, **kw): ... - def visit_BLOB(self, type_, **kw): ... - def visit_TINYBLOB(self, type_, **kw): ... - def visit_MEDIUMBLOB(self, type_, **kw): ... - def visit_LONGBLOB(self, type_, **kw): ... - def visit_ENUM(self, type_, **kw): ... - def visit_SET(self, type_, **kw): ... - def visit_BOOLEAN(self, type_, **kw): ... - -class MySQLIdentifierPreparer(compiler.IdentifierPreparer): - reserved_words: Any - def __init__(self, dialect, server_ansiquotes: bool = False, **kw) -> None: ... - -class MariaDBIdentifierPreparer(MySQLIdentifierPreparer): - reserved_words: Any - -class MySQLDialect(default.DefaultDialect): - logger: Any - name: str - supports_statement_cache: bool - supports_alter: bool - supports_native_boolean: bool - max_identifier_length: int - max_index_name_length: int - max_constraint_name_length: int - supports_native_enum: bool - supports_sequences: bool - sequences_optional: bool - supports_for_update_of: bool - supports_default_values: bool - supports_default_metavalue: bool - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - supports_multivalues_insert: bool - supports_comments: bool - inline_comments: bool - default_paramstyle: str - colspecs: Any - cte_follows_insert: bool - statement_compiler: Any - ddl_compiler: Any - type_compiler: Any - ischema_names: Any - preparer: Any - is_mariadb: bool - construct_arguments: Any - isolation_level: Any - def __init__( - self, - isolation_level: Incomplete | None = None, - json_serializer: Incomplete | None = None, - json_deserializer: Incomplete | None = None, - is_mariadb: Incomplete | None = None, - **kwargs, - ) -> None: ... - def on_connect(self): ... - def set_isolation_level(self, connection, level) -> None: ... - def get_isolation_level(self, connection): ... - def do_begin_twophase(self, connection, xid) -> None: ... - def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_recover_twophase(self, connection): ... - def is_disconnect(self, e, connection, cursor): ... - def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None): ... # type: ignore[override] - def get_sequence_names(self, connection, schema: Incomplete | None = None, **kw): ... - identifier_preparer: Any - def initialize(self, connection) -> None: ... - def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_table_options(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_check_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_table_comment(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... - -class _DecodingRow: - rowproxy: Any - charset: Any - def __init__(self, rowproxy, charset) -> None: ... - def __getitem__(self, index): ... - def __getattr__(self, attr: str): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/cymysql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/cymysql.pyi deleted file mode 100644 index 408d931df..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/cymysql.pyi +++ /dev/null @@ -1,21 +0,0 @@ -from typing import Any - -from .base import BIT -from .mysqldb import MySQLDialect_mysqldb - -class _cymysqlBIT(BIT): - def result_processor(self, dialect, coltype): ... - -class MySQLDialect_cymysql(MySQLDialect_mysqldb): - driver: str - supports_statement_cache: bool - description_encoding: Any - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - supports_unicode_statements: bool - colspecs: Any - @classmethod - def dbapi(cls): ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = MySQLDialect_cymysql diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/dml.pyi deleted file mode 100644 index 47463bbc4..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/dml.pyi +++ /dev/null @@ -1,23 +0,0 @@ -from typing import Any - -from ...sql.dml import Insert as StandardInsert -from ...sql.elements import ClauseElement -from ...util.langhelpers import memoized_property - -class Insert(StandardInsert): - stringify_dialect: str - inherit_cache: bool - @property - def inserted(self): ... - @memoized_property - def inserted_alias(self): ... - def on_duplicate_key_update(self, *args, **kw) -> None: ... - -insert: Any - -class OnDuplicateClause(ClauseElement): - __visit_name__: str - stringify_dialect: str - inserted_alias: Any - update: Any - def __init__(self, inserted_alias, update) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/enumerated.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/enumerated.pyi deleted file mode 100644 index e75307ef9..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/enumerated.pyi +++ /dev/null @@ -1,21 +0,0 @@ -from typing import Any - -from ...sql import sqltypes -from .types import _StringType - -class ENUM(sqltypes.NativeForEmulated, sqltypes.Enum, _StringType): # type: ignore[misc] # incompatible with base class - __visit_name__: str - native_enum: bool - def __init__(self, *enums, **kw) -> None: ... - @classmethod - def adapt_emulated_to_native(cls, impl, **kw): ... - -class SET(_StringType): - __visit_name__: str - retrieve_as_bitwise: Any - values: Any - def __init__(self, *values, **kw) -> None: ... - def column_expression(self, colexpr): ... - def result_processor(self, dialect, coltype): ... - def bind_processor(self, dialect): ... - def adapt(self, impltype, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/expression.pyi deleted file mode 100644 index 24d63634f..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/expression.pyi +++ /dev/null @@ -1,13 +0,0 @@ -from typing import Any - -from ...sql import elements -from ...sql.base import Generative - -class match(Generative, elements.BinaryExpression): - __visit_name__: str - inherit_cache: bool - def __init__(self, *cols, **kw) -> None: ... - modifiers: Any - def in_boolean_mode(self) -> None: ... - def in_natural_language_mode(self) -> None: ... - def with_query_expansion(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/json.pyi deleted file mode 100644 index 8baa9ff03..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/json.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from ...sql import sqltypes - -class JSON(sqltypes.JSON): ... - -class _FormatTypeMixin: - def bind_processor(self, dialect): ... - def literal_processor(self, dialect): ... - -class JSONIndexType(_FormatTypeMixin, sqltypes.JSON.JSONIndexType): ... -class JSONPathType(_FormatTypeMixin, sqltypes.JSON.JSONPathType): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadb.pyi deleted file mode 100644 index db8f5abd5..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadb.pyi +++ /dev/null @@ -1,11 +0,0 @@ -from typing import Any - -from .base import MySQLDialect - -class MariaDBDialect(MySQLDialect): - is_mariadb: bool - supports_statement_cache: bool - name: str - preparer: Any - -def loader(driver): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadbconnector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadbconnector.pyi deleted file mode 100644 index b4ab06a53..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mariadbconnector.pyi +++ /dev/null @@ -1,36 +0,0 @@ -from typing import Any - -from .base import MySQLCompiler, MySQLDialect, MySQLExecutionContext - -mariadb_cpy_minimum_version: Any - -class MySQLExecutionContext_mariadbconnector(MySQLExecutionContext): - def create_server_side_cursor(self): ... - def create_default_cursor(self): ... - -class MySQLCompiler_mariadbconnector(MySQLCompiler): ... - -class MySQLDialect_mariadbconnector(MySQLDialect): - driver: str - supports_statement_cache: bool - supports_unicode_statements: bool - encoding: str - convert_unicode: bool - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - supports_native_decimal: bool - default_paramstyle: str - statement_compiler: Any - supports_server_side_cursors: bool - paramstyle: str - def __init__(self, **kwargs) -> None: ... - @classmethod - def dbapi(cls): ... - def is_disconnect(self, e, connection, cursor): ... - def create_connect_args(self, url): ... - def do_begin_twophase(self, connection, xid) -> None: ... - def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - -dialect = MySQLDialect_mariadbconnector diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqlconnector.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqlconnector.pyi deleted file mode 100644 index 5ee626ed9..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqlconnector.pyi +++ /dev/null @@ -1,38 +0,0 @@ -from typing import Any - -from ...util.langhelpers import memoized_property -from .base import BIT, MySQLCompiler, MySQLDialect, MySQLIdentifierPreparer - -class MySQLCompiler_mysqlconnector(MySQLCompiler): - def visit_mod_binary(self, binary, operator, **kw): ... - def post_process_text(self, text): ... - def escape_literal_column(self, text): ... - -class MySQLIdentifierPreparer_mysqlconnector(MySQLIdentifierPreparer): ... - -class _myconnpyBIT(BIT): - def result_processor(self, dialect, coltype) -> None: ... - -class MySQLDialect_mysqlconnector(MySQLDialect): - driver: str - supports_statement_cache: bool - supports_unicode_binds: bool - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - supports_native_decimal: bool - default_paramstyle: str - statement_compiler: Any - preparer: Any - colspecs: Any - def __init__(self, *arg, **kw) -> None: ... - @property - def description_encoding(self): ... - @memoized_property - def supports_unicode_statements(self): ... - @classmethod - def dbapi(cls): ... - def do_ping(self, dbapi_connection): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = MySQLDialect_mysqlconnector diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi deleted file mode 100644 index 8c0bff8fa..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi +++ /dev/null @@ -1,33 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...util.langhelpers import memoized_property -from .base import MySQLCompiler, MySQLDialect, MySQLExecutionContext - -class MySQLExecutionContext_mysqldb(MySQLExecutionContext): - @property - def rowcount(self): ... - -class MySQLCompiler_mysqldb(MySQLCompiler): ... - -class MySQLDialect_mysqldb(MySQLDialect): - driver: str - supports_statement_cache: bool - supports_unicode_statements: bool - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - supports_native_decimal: bool - default_paramstyle: str - statement_compiler: Any - preparer: Any - def __init__(self, **kwargs) -> None: ... - @memoized_property - def supports_server_side_cursors(self): ... - @classmethod - def dbapi(cls): ... - def on_connect(self): ... - def do_ping(self, dbapi_connection): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def create_connect_args(self, url, _translate_args: Incomplete | None = None): ... - -dialect = MySQLDialect_mysqldb diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/oursql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/oursql.pyi deleted file mode 100644 index fa7ea6fbe..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/oursql.pyi +++ /dev/null @@ -1,40 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from .base import BIT, MySQLDialect, MySQLExecutionContext - -class _oursqlBIT(BIT): - def result_processor(self, dialect, coltype) -> None: ... - -class MySQLExecutionContext_oursql(MySQLExecutionContext): - @property - def plain_query(self): ... - -class MySQLDialect_oursql(MySQLDialect): - driver: str - supports_statement_cache: bool - supports_unicode_binds: bool - supports_unicode_statements: bool - supports_native_decimal: bool - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - colspecs: Any - @classmethod - def dbapi(cls): ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def do_begin(self, connection) -> None: ... - def do_begin_twophase(self, connection, xid) -> None: ... - def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] - def get_table_options(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_schema_names(self, connection, **kw): ... - def initialize(self, connection): ... - def is_disconnect(self, e, connection, cursor): ... - def create_connect_args(self, url): ... - -dialect = MySQLDialect_oursql diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/provision.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/provision.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi deleted file mode 100644 index cf2e137c6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi +++ /dev/null @@ -1,20 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...util.langhelpers import memoized_property -from .mysqldb import MySQLDialect_mysqldb - -class MySQLDialect_pymysql(MySQLDialect_mysqldb): - driver: str - supports_statement_cache: bool - description_encoding: Any - supports_unicode_statements: bool - supports_unicode_binds: bool - @memoized_property - def supports_server_side_cursors(self): ... - @classmethod - def dbapi(cls): ... - def create_connect_args(self, url, _translate_args: Incomplete | None = None): ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = MySQLDialect_pymysql diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pyodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pyodbc.pyi deleted file mode 100644 index f9363c3cc..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pyodbc.pyi +++ /dev/null @@ -1,20 +0,0 @@ -from typing import Any - -from ...connectors.pyodbc import PyODBCConnector -from .base import MySQLDialect, MySQLExecutionContext -from .types import TIME - -class _pyodbcTIME(TIME): - def result_processor(self, dialect, coltype): ... - -class MySQLExecutionContext_pyodbc(MySQLExecutionContext): - def get_lastrowid(self): ... - -class MySQLDialect_pyodbc(PyODBCConnector, MySQLDialect): - supports_statement_cache: bool - colspecs: Any - supports_unicode_statements: bool - pyodbc_driver_name: str - def on_connect(self): ... - -dialect = MySQLDialect_pyodbc diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/reflection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/reflection.pyi deleted file mode 100644 index f27c18525..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/reflection.pyi +++ /dev/null @@ -1,16 +0,0 @@ -from typing import Any - -class ReflectedState: - columns: Any - table_options: Any - table_name: Any - keys: Any - fk_constraints: Any - ck_constraints: Any - -class MySQLTableDefinitionParser: - logger: Any - dialect: Any - preparer: Any - def __init__(self, dialect, preparer) -> None: ... - def parse(self, show_create, charset): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/reserved_words.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/reserved_words.pyi deleted file mode 100644 index 28a741b2b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/reserved_words.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from typing import Any - -RESERVED_WORDS_MARIADB: Any -RESERVED_WORDS_MYSQL: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi deleted file mode 100644 index 49252518b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi +++ /dev/null @@ -1,158 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql import sqltypes - -class _NumericType: - unsigned: Any - zerofill: Any - def __init__(self, unsigned: bool = False, zerofill: bool = False, **kw) -> None: ... - -class _FloatType(_NumericType, sqltypes.Float): - scale: Any - def __init__( - self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw - ) -> None: ... - -class _IntegerType(_NumericType, sqltypes.Integer): - display_width: Any - def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... - -class _StringType(sqltypes.String): - charset: Any - ascii: Any - unicode: Any - binary: Any - national: Any - def __init__( - self, - charset: Incomplete | None = None, - collation: Incomplete | None = None, - ascii: bool = False, - binary: bool = False, - unicode: bool = False, - national: bool = False, - **kw, - ) -> None: ... - -class _MatchType(sqltypes.Float, sqltypes.MatchType): # type: ignore[misc] # incompatible with base class - def __init__(self, **kw) -> None: ... - -class NUMERIC(_NumericType, sqltypes.NUMERIC): - __visit_name__: str - def __init__( - self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw - ) -> None: ... - -class DECIMAL(_NumericType, sqltypes.DECIMAL): - __visit_name__: str - def __init__( - self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw - ) -> None: ... - -class DOUBLE(_FloatType): - __visit_name__: str - def __init__( - self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw - ) -> None: ... - -class REAL(_FloatType, sqltypes.REAL): - __visit_name__: str - def __init__( - self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = True, **kw - ) -> None: ... - -class FLOAT(_FloatType, sqltypes.FLOAT): - __visit_name__: str - def __init__( - self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: bool = False, **kw - ) -> None: ... - def bind_processor(self, dialect) -> None: ... - -class INTEGER(_IntegerType, sqltypes.INTEGER): - __visit_name__: str - def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... - -class BIGINT(_IntegerType, sqltypes.BIGINT): - __visit_name__: str - def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... - -class MEDIUMINT(_IntegerType): - __visit_name__: str - def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... - -class TINYINT(_IntegerType): - __visit_name__: str - def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... - -class SMALLINT(_IntegerType, sqltypes.SMALLINT): - __visit_name__: str - def __init__(self, display_width: Incomplete | None = None, **kw) -> None: ... - -class BIT(sqltypes.TypeEngine): - __visit_name__: str - length: Any - def __init__(self, length: Incomplete | None = None) -> None: ... - def result_processor(self, dialect, coltype): ... - -class TIME(sqltypes.TIME): - __visit_name__: str - fsp: Any - def __init__(self, timezone: bool = False, fsp: Incomplete | None = None) -> None: ... - def result_processor(self, dialect, coltype): ... - -class TIMESTAMP(sqltypes.TIMESTAMP): - __visit_name__: str - fsp: Any - def __init__(self, timezone: bool = False, fsp: Incomplete | None = None) -> None: ... - -class DATETIME(sqltypes.DATETIME): - __visit_name__: str - fsp: Any - def __init__(self, timezone: bool = False, fsp: Incomplete | None = None) -> None: ... - -class YEAR(sqltypes.TypeEngine): - __visit_name__: str - display_width: Any - def __init__(self, display_width: Incomplete | None = None) -> None: ... - -class TEXT(_StringType, sqltypes.TEXT): - __visit_name__: str - def __init__(self, length: Incomplete | None = None, **kw) -> None: ... - -class TINYTEXT(_StringType): - __visit_name__: str - def __init__(self, **kwargs) -> None: ... - -class MEDIUMTEXT(_StringType): - __visit_name__: str - def __init__(self, **kwargs) -> None: ... - -class LONGTEXT(_StringType): - __visit_name__: str - def __init__(self, **kwargs) -> None: ... - -class VARCHAR(_StringType, sqltypes.VARCHAR): - __visit_name__: str - def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... - -class CHAR(_StringType, sqltypes.CHAR): - __visit_name__: str - def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... - -class NVARCHAR(_StringType, sqltypes.NVARCHAR): - __visit_name__: str - def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... - -class NCHAR(_StringType, sqltypes.NCHAR): - __visit_name__: str - def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... - -class TINYBLOB(sqltypes._Binary): - __visit_name__: str - -class MEDIUMBLOB(sqltypes._Binary): - __visit_name__: str - -class LONGBLOB(sqltypes._Binary): - __visit_name__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/__init__.pyi deleted file mode 100644 index 3cc1662ff..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/__init__.pyi +++ /dev/null @@ -1,52 +0,0 @@ -from typing import Any - -from .base import ( - BFILE as BFILE, - BINARY_DOUBLE as BINARY_DOUBLE, - BINARY_FLOAT as BINARY_FLOAT, - BLOB as BLOB, - CHAR as CHAR, - CLOB as CLOB, - DATE as DATE, - DOUBLE_PRECISION as DOUBLE_PRECISION, - FLOAT as FLOAT, - INTERVAL as INTERVAL, - LONG as LONG, - NCHAR as NCHAR, - NCLOB as NCLOB, - NUMBER as NUMBER, - NVARCHAR as NVARCHAR, - NVARCHAR2 as NVARCHAR2, - RAW as RAW, - ROWID as ROWID, - TIMESTAMP as TIMESTAMP, - VARCHAR as VARCHAR, - VARCHAR2 as VARCHAR2, -) - -__all__ = ( - "VARCHAR", - "NVARCHAR", - "CHAR", - "NCHAR", - "DATE", - "NUMBER", - "BLOB", - "BFILE", - "CLOB", - "NCLOB", - "TIMESTAMP", - "RAW", - "FLOAT", - "DOUBLE_PRECISION", - "BINARY_DOUBLE", - "BINARY_FLOAT", - "LONG", - "dialect", - "INTERVAL", - "VARCHAR2", - "NVARCHAR2", - "ROWID", -) - -dialect: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi deleted file mode 100644 index 2a90fcf55..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi +++ /dev/null @@ -1,222 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...engine import default -from ...sql import ClauseElement, compiler, sqltypes -from ...sql.sqltypes import ( - BLOB as BLOB, - CHAR as CHAR, - CLOB as CLOB, - FLOAT as FLOAT, - INTEGER as INTEGER, - NCHAR as NCHAR, - NVARCHAR as NVARCHAR, - TIMESTAMP as TIMESTAMP, - VARCHAR as VARCHAR, -) - -RESERVED_WORDS: Any -NO_ARG_FNS: Any - -class RAW(sqltypes._Binary): - __visit_name__: str - -OracleRaw = RAW - -class NCLOB(sqltypes.Text): - __visit_name__: str - -class VARCHAR2(VARCHAR): - __visit_name__: str - -NVARCHAR2 = NVARCHAR - -class NUMBER(sqltypes.Numeric, sqltypes.Integer): - __visit_name__: str - def __init__( - self, precision: Incomplete | None = None, scale: Incomplete | None = None, asdecimal: Incomplete | None = None - ) -> None: ... - def adapt(self, impltype): ... - -class DOUBLE_PRECISION(sqltypes.Float): - __visit_name__: str - -class BINARY_DOUBLE(sqltypes.Float): - __visit_name__: str - -class BINARY_FLOAT(sqltypes.Float): - __visit_name__: str - -class BFILE(sqltypes.LargeBinary): - __visit_name__: str - -class LONG(sqltypes.Text): - __visit_name__: str - -class DATE(sqltypes.DateTime): - __visit_name__: str - -class INTERVAL(sqltypes.NativeForEmulated, sqltypes._AbstractInterval): - __visit_name__: str - day_precision: Any - second_precision: Any - def __init__(self, day_precision: Incomplete | None = None, second_precision: Incomplete | None = None) -> None: ... - def as_generic(self, allow_nulltype: bool = False): ... - def coerce_compared_value(self, op, value): ... - -class ROWID(sqltypes.TypeEngine): - __visit_name__: str - -class _OracleBoolean(sqltypes.Boolean): - def get_dbapi_type(self, dbapi): ... - -colspecs: Any -ischema_names: Any - -class OracleTypeCompiler(compiler.GenericTypeCompiler): - def visit_datetime(self, type_, **kw): ... - def visit_float(self, type_, **kw): ... - def visit_unicode(self, type_, **kw): ... - def visit_INTERVAL(self, type_, **kw): ... - def visit_LONG(self, type_, **kw): ... - def visit_TIMESTAMP(self, type_, **kw): ... - def visit_DOUBLE_PRECISION(self, type_, **kw): ... - def visit_BINARY_DOUBLE(self, type_, **kw): ... - def visit_BINARY_FLOAT(self, type_, **kw): ... - def visit_FLOAT(self, type_, **kw): ... - def visit_NUMBER(self, type_, **kw): ... - def visit_string(self, type_, **kw): ... - def visit_VARCHAR2(self, type_, **kw): ... - def visit_NVARCHAR2(self, type_, **kw): ... - visit_NVARCHAR: Any - def visit_VARCHAR(self, type_, **kw): ... - def visit_text(self, type_, **kw): ... - def visit_unicode_text(self, type_, **kw): ... - def visit_large_binary(self, type_, **kw): ... - def visit_big_integer(self, type_, **kw): ... - def visit_boolean(self, type_, **kw): ... - def visit_RAW(self, type_, **kw): ... - def visit_ROWID(self, type_, **kw): ... - -class OracleCompiler(compiler.SQLCompiler): - compound_keywords: Any - def __init__(self, *args, **kwargs) -> None: ... - def visit_mod_binary(self, binary, operator, **kw): ... - def visit_now_func(self, fn, **kw): ... - def visit_char_length_func(self, fn, **kw): ... - def visit_match_op_binary(self, binary, operator, **kw): ... - def visit_true(self, expr, **kw): ... - def visit_false(self, expr, **kw): ... - def get_cte_preamble(self, recursive): ... - def get_select_hint_text(self, byfroms): ... - def function_argspec(self, fn, **kw): ... - def visit_function(self, func, **kw): ... - def visit_table_valued_column(self, element, **kw): ... - def default_from(self): ... - def visit_join(self, join, from_linter: Incomplete | None = None, **kwargs): ... # type: ignore[override] - def visit_outer_join_column(self, vc, **kw): ... - def visit_sequence(self, seq, **kw): ... - def get_render_as_alias_suffix(self, alias_name_text): ... - has_out_parameters: bool - def returning_clause(self, stmt, returning_cols): ... - def translate_select_structure(self, select_stmt, **kwargs): ... - def limit_clause(self, select, **kw): ... - def visit_empty_set_expr(self, type_): ... - def for_update_clause(self, select, **kw): ... - def visit_is_distinct_from_binary(self, binary, operator, **kw): ... - def visit_is_not_distinct_from_binary(self, binary, operator, **kw): ... - def visit_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_not_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_regexp_replace_op_binary(self, binary, operator, **kw): ... - -class OracleDDLCompiler(compiler.DDLCompiler): - def define_constraint_cascades(self, constraint): ... - def visit_drop_table_comment(self, drop): ... - def visit_create_index(self, create): ... - def post_create_table(self, table): ... - def get_identity_options(self, identity_options): ... - def visit_computed_column(self, generated): ... - def visit_identity_column(self, identity, **kw): ... - -class OracleIdentifierPreparer(compiler.IdentifierPreparer): - reserved_words: Any - illegal_initial_characters: Any - def format_savepoint(self, savepoint): ... - -class OracleExecutionContext(default.DefaultExecutionContext): - def fire_sequence(self, seq, type_): ... - -class OracleDialect(default.DefaultDialect): - name: str - supports_statement_cache: bool - supports_alter: bool - supports_unicode_statements: bool - supports_unicode_binds: bool - max_identifier_length: int - supports_simple_order_by_label: bool - cte_follows_insert: bool - supports_sequences: bool - sequences_optional: bool - postfetch_lastrowid: bool - default_paramstyle: str - colspecs: Any - ischema_names: Any - requires_name_normalize: bool - supports_comments: bool - supports_default_values: bool - supports_default_metavalue: bool - supports_empty_insert: bool - supports_identity_columns: bool - statement_compiler: Any - ddl_compiler: Any - type_compiler: Any - preparer: Any - reflection_options: Any - construct_arguments: Any - use_ansi: Any - optimize_limits: Any - exclude_tablespaces: Any - def __init__( - self, - use_ansi: bool = True, - optimize_limits: bool = False, - use_binds_for_limits: Incomplete | None = None, - use_nchar_for_unicode: bool = False, - exclude_tablespaces=("SYSTEM", "SYSAUX"), - **kwargs, - ) -> None: ... - implicit_returning: Any - def initialize(self, connection) -> None: ... - def do_release_savepoint(self, connection, name) -> None: ... - def get_isolation_level(self, connection) -> None: ... - def get_default_isolation_level(self, dbapi_conn): ... - def set_isolation_level(self, connection, level) -> None: ... - def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None): ... # type: ignore[override] - def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_temp_table_names(self, connection, **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_sequence_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_table_options(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_table_comment( - self, connection, table_name, schema: Incomplete | None = None, resolve_synonyms: bool = False, dblink: str = "", **kw - ): ... - def get_indexes( - self, connection, table_name, schema: Incomplete | None = None, resolve_synonyms: bool = False, dblink: str = "", **kw - ): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_view_definition( - self, connection, view_name, schema: Incomplete | None = None, resolve_synonyms: bool = False, dblink: str = "", **kw - ): ... - def get_check_constraints( - self, connection, table_name, schema: Incomplete | None = None, include_all: bool = False, **kw - ): ... - -class _OuterJoinColumn(ClauseElement): - __visit_name__: str - column: Any - def __init__(self, column) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi deleted file mode 100644 index c7fed1770..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi +++ /dev/null @@ -1,127 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql import sqltypes -from . import base as oracle -from .base import OracleCompiler, OracleDialect, OracleExecutionContext - -class _OracleInteger(sqltypes.Integer): - def get_dbapi_type(self, dbapi): ... - -class _OracleNumeric(sqltypes.Numeric): - is_number: bool - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype) -> None: ... - -class _OracleBinaryFloat(_OracleNumeric): - def get_dbapi_type(self, dbapi): ... - -class _OracleBINARY_FLOAT(_OracleBinaryFloat, oracle.BINARY_FLOAT): ... -class _OracleBINARY_DOUBLE(_OracleBinaryFloat, oracle.BINARY_DOUBLE): ... - -class _OracleNUMBER(_OracleNumeric): - is_number: bool - -class _OracleDate(sqltypes.Date): - def bind_processor(self, dialect) -> None: ... - def result_processor(self, dialect, coltype): ... - -class _OracleChar(sqltypes.CHAR): - def get_dbapi_type(self, dbapi): ... - -class _OracleNChar(sqltypes.NCHAR): - def get_dbapi_type(self, dbapi): ... - -class _OracleUnicodeStringNCHAR(oracle.NVARCHAR2): - def get_dbapi_type(self, dbapi): ... - -class _OracleUnicodeStringCHAR(sqltypes.Unicode): - def get_dbapi_type(self, dbapi): ... - -class _OracleUnicodeTextNCLOB(oracle.NCLOB): - def get_dbapi_type(self, dbapi): ... - -class _OracleUnicodeTextCLOB(sqltypes.UnicodeText): - def get_dbapi_type(self, dbapi): ... - -class _OracleText(sqltypes.Text): - def get_dbapi_type(self, dbapi): ... - -class _OracleLong(oracle.LONG): - def get_dbapi_type(self, dbapi): ... - -class _OracleString(sqltypes.String): ... - -class _OracleEnum(sqltypes.Enum): - def bind_processor(self, dialect): ... - -class _OracleBinary(sqltypes.LargeBinary): - def get_dbapi_type(self, dbapi): ... - def bind_processor(self, dialect) -> None: ... - def result_processor(self, dialect, coltype): ... - -class _OracleInterval(oracle.INTERVAL): - def get_dbapi_type(self, dbapi): ... - -class _OracleRaw(oracle.RAW): ... - -class _OracleRowid(oracle.ROWID): - def get_dbapi_type(self, dbapi): ... - -class OracleCompiler_cx_oracle(OracleCompiler): - def bindparam_string(self, name, **kw): ... - -class OracleExecutionContext_cx_oracle(OracleExecutionContext): - out_parameters: Any - include_set_input_sizes: Any - def pre_exec(self) -> None: ... - cursor_fetch_strategy: Any - def post_exec(self) -> None: ... - def create_cursor(self): ... - def get_out_parameter_values(self, out_param_names): ... - -class OracleDialect_cx_oracle(OracleDialect): - supports_statement_cache: bool - statement_compiler: Any - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - supports_unicode_statements: bool - supports_unicode_binds: bool - use_setinputsizes: bool - driver: str - colspecs: Any - execute_sequence_format: Any - arraysize: Any - encoding_errors: Any - auto_convert_lobs: Any - coerce_to_unicode: Any - coerce_to_decimal: Any - cx_oracle_ver: Any - def __init__( - self, - auto_convert_lobs: bool = True, - coerce_to_unicode: bool = True, - coerce_to_decimal: bool = True, - arraysize: int = 50, - encoding_errors: Incomplete | None = None, - threaded: Incomplete | None = None, - **kwargs, - ): ... - @classmethod - def dbapi(cls): ... - def initialize(self, connection) -> None: ... - def get_isolation_level(self, connection): ... - def set_isolation_level(self, connection, level) -> None: ... - def on_connect(self): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - def create_xid(self): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def do_begin_twophase(self, connection, xid) -> None: ... - def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_set_input_sizes(self, cursor, list_of_tuples, context) -> None: ... - def do_recover_twophase(self, connection) -> None: ... - -dialect = OracleDialect_cx_oracle diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/provision.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/oracle/provision.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/__init__.pyi deleted file mode 100644 index 9a213981d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/__init__.pyi +++ /dev/null @@ -1,100 +0,0 @@ -import typing - -from .array import ARRAY as ARRAY, All as All, Any as Any, array as array -from .base import ( - BIGINT as BIGINT, - BIT as BIT, - BOOLEAN as BOOLEAN, - BYTEA as BYTEA, - CHAR as CHAR, - CIDR as CIDR, - DATE as DATE, - DOUBLE_PRECISION as DOUBLE_PRECISION, - ENUM as ENUM, - FLOAT as FLOAT, - INET as INET, - INTEGER as INTEGER, - INTERVAL as INTERVAL, - MACADDR as MACADDR, - MACADDR8 as MACADDR8, - MONEY as MONEY, - NUMERIC as NUMERIC, - OID as OID, - REAL as REAL, - REGCLASS as REGCLASS, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - TSVECTOR as TSVECTOR, - UUID as UUID, - VARCHAR as VARCHAR, - CreateEnumType as CreateEnumType, - DropEnumType as DropEnumType, -) -from .dml import Insert as Insert, insert as insert -from .ext import ExcludeConstraint as ExcludeConstraint, aggregate_order_by as aggregate_order_by, array_agg as array_agg -from .hstore import HSTORE as HSTORE, hstore as hstore -from .json import JSON as JSON, JSONB as JSONB -from .ranges import ( - DATERANGE as DATERANGE, - INT4RANGE as INT4RANGE, - INT8RANGE as INT8RANGE, - NUMRANGE as NUMRANGE, - TSRANGE as TSRANGE, - TSTZRANGE as TSTZRANGE, -) - -__all__ = ( - "INTEGER", - "BIGINT", - "SMALLINT", - "VARCHAR", - "CHAR", - "TEXT", - "NUMERIC", - "FLOAT", - "REAL", - "INET", - "CIDR", - "UUID", - "BIT", - "MACADDR", - "MACADDR8", - "MONEY", - "OID", - "REGCLASS", - "DOUBLE_PRECISION", - "TIMESTAMP", - "TIME", - "DATE", - "BYTEA", - "BOOLEAN", - "INTERVAL", - "ARRAY", - "ENUM", - "dialect", - "array", - "HSTORE", - "hstore", - "INT4RANGE", - "INT8RANGE", - "NUMRANGE", - "DATERANGE", - "TSVECTOR", - "TSRANGE", - "TSTZRANGE", - "JSON", - "JSONB", - "Any", - "All", - "DropEnumType", - "CreateEnumType", - "ExcludeConstraint", - "aggregate_order_by", - "array_agg", - "insert", - "Insert", -) - -dialect: typing.Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi deleted file mode 100644 index bfa94d1b1..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi +++ /dev/null @@ -1,41 +0,0 @@ -from _typeshed import Incomplete -from typing import Any as _Any - -from ...sql import expression, sqltypes - -def Any(other, arrexpr, operator=...): ... -def All(other, arrexpr, operator=...): ... - -class array(expression.ClauseList, expression.ColumnElement[_Any]): - __visit_name__: str - stringify_dialect: str - inherit_cache: bool - type: _Any - def __init__(self, clauses, **kw) -> None: ... - def self_group(self, against: Incomplete | None = None): ... - -CONTAINS: _Any -CONTAINED_BY: _Any -OVERLAP: _Any - -class ARRAY(sqltypes.ARRAY): - class Comparator(sqltypes.ARRAY.Comparator[_Any]): - def contains(self, other, **kwargs): ... - def contained_by(self, other): ... - def overlap(self, other): ... - comparator_factory: _Any - item_type: _Any - as_tuple: _Any - dimensions: _Any - zero_indexes: _Any - def __init__( - self, item_type, as_tuple: bool = False, dimensions: Incomplete | None = None, zero_indexes: bool = False - ) -> None: ... - @property - def hashable(self): ... - @property - def python_type(self): ... - def compare_values(self, x, y): ... - def bind_expression(self, bindvalue): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi deleted file mode 100644 index cb20a7df1..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi +++ /dev/null @@ -1,206 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...engine import AdaptedConnection -from ...sql import sqltypes -from . import json -from .base import ENUM, INTERVAL, OID, REGCLASS, UUID, PGCompiler, PGDialect, PGExecutionContext, PGIdentifierPreparer - -class AsyncpgTime(sqltypes.Time): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgDate(sqltypes.Date): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgDateTime(sqltypes.DateTime): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgBoolean(sqltypes.Boolean): - def get_dbapi_type(self, dbapi): ... - -class AsyncPgInterval(INTERVAL): - def get_dbapi_type(self, dbapi): ... - @classmethod - def adapt_emulated_to_native(cls, interval, **kw): ... - -class AsyncPgEnum(ENUM): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgInteger(sqltypes.Integer): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgBigInteger(sqltypes.BigInteger): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgJSON(json.JSON): - def get_dbapi_type(self, dbapi): ... - def result_processor(self, dialect, coltype) -> None: ... - -class AsyncpgJSONB(json.JSONB): - def get_dbapi_type(self, dbapi): ... - def result_processor(self, dialect, coltype) -> None: ... - -class AsyncpgJSONIndexType(sqltypes.JSON.JSONIndexType): - def get_dbapi_type(self, dbapi) -> None: ... - -class AsyncpgJSONIntIndexType(sqltypes.JSON.JSONIntIndexType): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgJSONStrIndexType(sqltypes.JSON.JSONStrIndexType): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgJSONPathType(json.JSONPathType): - def bind_processor(self, dialect): ... - -class AsyncpgUUID(UUID): - def get_dbapi_type(self, dbapi): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class AsyncpgNumeric(sqltypes.Numeric): - def get_dbapi_type(self, dbapi): ... - def bind_processor(self, dialect) -> None: ... - def result_processor(self, dialect, coltype): ... - -class AsyncpgFloat(AsyncpgNumeric): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgREGCLASS(REGCLASS): - def get_dbapi_type(self, dbapi): ... - -class AsyncpgOID(OID): - def get_dbapi_type(self, dbapi): ... - -class PGExecutionContext_asyncpg(PGExecutionContext): - def handle_dbapi_exception(self, e) -> None: ... - exclude_set_input_sizes: Any - def pre_exec(self) -> None: ... - def create_server_side_cursor(self): ... - -class PGCompiler_asyncpg(PGCompiler): ... -class PGIdentifierPreparer_asyncpg(PGIdentifierPreparer): ... - -class AsyncAdapt_asyncpg_cursor: - server_side: bool - description: Any - arraysize: int - rowcount: int - def __init__(self, adapt_connection) -> None: ... - def close(self) -> None: ... - def execute(self, operation, parameters: Incomplete | None = None) -> None: ... - def executemany(self, operation, seq_of_parameters): ... - def setinputsizes(self, *inputsizes) -> None: ... - def __iter__(self): ... - def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def fetchall(self): ... - -class AsyncAdapt_asyncpg_ss_cursor(AsyncAdapt_asyncpg_cursor): - server_side: bool - def __init__(self, adapt_connection) -> None: ... - def close(self) -> None: ... - def __aiter__(self): ... - async def __anext__(self) -> None: ... - def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def fetchall(self): ... - def executemany(self, operation, seq_of_parameters) -> None: ... - -class AsyncAdapt_asyncpg_connection(AdaptedConnection): - await_: Any - dbapi: Any - isolation_level: str - readonly: bool - deferrable: bool - def __init__(self, dbapi, connection, prepared_statement_cache_size: int = 100) -> None: ... - @property - def autocommit(self): ... - @autocommit.setter - def autocommit(self, value) -> None: ... - def set_isolation_level(self, level) -> None: ... - def cursor(self, server_side: bool = False): ... - def rollback(self) -> None: ... - def commit(self) -> None: ... - def close(self) -> None: ... - def terminate(self) -> None: ... - -class AsyncAdaptFallback_asyncpg_connection(AsyncAdapt_asyncpg_connection): - await_: Any - -class AsyncAdapt_asyncpg_dbapi: - asyncpg: Any - paramstyle: str - def __init__(self, asyncpg) -> None: ... - def connect(self, *arg, **kw): ... - - class Error(Exception): ... - class Warning(Exception): ... - class InterfaceError(Error): ... - class DatabaseError(Error): ... - class InternalError(DatabaseError): ... - class OperationalError(DatabaseError): ... - class ProgrammingError(DatabaseError): ... - class IntegrityError(DatabaseError): ... - class DataError(DatabaseError): ... - class NotSupportedError(DatabaseError): ... - class InternalServerError(InternalError): ... - - class InvalidCachedStatementError(NotSupportedError): - def __init__(self, message) -> None: ... - - def Binary(self, value): ... - STRING: Any - TIMESTAMP: Any - TIMESTAMP_W_TZ: Any - TIME: Any - TIME_W_TZ: Incomplete - DATE: Any - INTERVAL: Any - NUMBER: Any - FLOAT: Any - BOOLEAN: Any - INTEGER: Any - BIGINTEGER: Any - BYTES: Any - DECIMAL: Any - JSON: Any - JSONB: Any - ENUM: Any - UUID: Any - BYTEA: Any - DATETIME: Any - BINARY: Any - -class PGDialect_asyncpg(PGDialect): - driver: str - supports_statement_cache: bool - supports_unicode_statements: bool - supports_server_side_cursors: bool - supports_unicode_binds: bool - has_terminate: bool - default_paramstyle: str - supports_sane_multi_rowcount: bool - statement_compiler: Any - preparer: Any - use_setinputsizes: bool - use_native_uuid: bool - colspecs: Any - is_async: bool - @classmethod - def dbapi(cls): ... - def set_isolation_level(self, connection, level) -> None: ... - def set_readonly(self, connection, value) -> None: ... - def get_readonly(self, connection): ... - def set_deferrable(self, connection, value) -> None: ... - def get_deferrable(self, connection): ... - def create_connect_args(self, url): ... - @classmethod - def get_pool_class(cls, url): ... - def is_disconnect(self, e, connection, cursor): ... - def do_set_input_sizes(self, cursor, list_of_tuples, context) -> None: ... - async def setup_asyncpg_json_codec(self, conn): ... - async def setup_asyncpg_jsonb_codec(self, conn): ... - def on_connect(self): ... - def get_driver_connection(self, connection): ... - -dialect = PGDialect_asyncpg diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi deleted file mode 100644 index e90a53632..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi +++ /dev/null @@ -1,314 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...engine import characteristics, default, reflection -from ...schema import _CreateDropBase -from ...sql import compiler, elements, sqltypes -from ...sql.ddl import DDLBase -from ...sql.sqltypes import ( - BIGINT as BIGINT, - BOOLEAN as BOOLEAN, - CHAR as CHAR, - DATE as DATE, - FLOAT as FLOAT, - INTEGER as INTEGER, - NUMERIC as NUMERIC, - REAL as REAL, - SMALLINT as SMALLINT, - TEXT as TEXT, - VARCHAR as VARCHAR, -) - -IDX_USING: Any -AUTOCOMMIT_REGEXP: Any -RESERVED_WORDS: Any - -class BYTEA(sqltypes.LargeBinary): - __visit_name__: str - -class DOUBLE_PRECISION(sqltypes.Float): - __visit_name__: str - -class INET(sqltypes.TypeEngine): - __visit_name__: str - -PGInet = INET - -class CIDR(sqltypes.TypeEngine): - __visit_name__: str - -PGCidr = CIDR - -class MACADDR(sqltypes.TypeEngine): - __visit_name__: str - -PGMacAddr = MACADDR - -class MACADDR8(sqltypes.TypeEngine): - __visit_name__: str - -PGMacAddr8 = MACADDR8 - -class MONEY(sqltypes.TypeEngine): - __visit_name__: str - -class OID(sqltypes.TypeEngine): - __visit_name__: str - -class REGCLASS(sqltypes.TypeEngine): - __visit_name__: str - -class TIMESTAMP(sqltypes.TIMESTAMP): - precision: Any - def __init__(self, timezone: bool = False, precision: Incomplete | None = None) -> None: ... - -class TIME(sqltypes.TIME): - precision: Any - def __init__(self, timezone: bool = False, precision: Incomplete | None = None) -> None: ... - -class INTERVAL(sqltypes.NativeForEmulated, sqltypes._AbstractInterval): - __visit_name__: str - native: bool - precision: Any - fields: Any - def __init__(self, precision: Incomplete | None = None, fields: Incomplete | None = None) -> None: ... - @classmethod - def adapt_emulated_to_native(cls, interval, **kw): ... - def as_generic(self, allow_nulltype: bool = False): ... - @property - def python_type(self): ... - def coerce_compared_value(self, op, value): ... - -PGInterval = INTERVAL - -class BIT(sqltypes.TypeEngine): - __visit_name__: str - length: Any - varying: Any - def __init__(self, length: Incomplete | None = None, varying: bool = False) -> None: ... - -PGBit = BIT - -class UUID(sqltypes.TypeEngine): - __visit_name__: str - as_uuid: Any - def __init__(self, as_uuid: bool = False) -> None: ... - def coerce_compared_value(self, op, value): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -PGUuid = UUID - -class TSVECTOR(sqltypes.TypeEngine): - __visit_name__: str - -class ENUM(sqltypes.NativeForEmulated, sqltypes.Enum): # type: ignore[misc] # base classes incompatible - native_enum: bool - create_type: Any - def __init__(self, *enums, **kw) -> None: ... - @classmethod - def adapt_emulated_to_native(cls, impl, **kw): ... - def create(self, bind: Incomplete | None = None, checkfirst: bool = True) -> None: ... - def drop(self, bind: Incomplete | None = None, checkfirst: bool = True) -> None: ... - - class EnumGenerator(DDLBase): - checkfirst: Any - def __init__(self, dialect, connection, checkfirst: bool = False, **kwargs) -> None: ... - def visit_enum(self, enum) -> None: ... - - class EnumDropper(DDLBase): - checkfirst: Any - def __init__(self, dialect, connection, checkfirst: bool = False, **kwargs) -> None: ... - def visit_enum(self, enum) -> None: ... - -class _ColonCast(elements.Cast): - __visit_name__: str - type: Any - clause: Any - typeclause: Any - def __init__(self, expression, type_) -> None: ... - -colspecs: Any -ischema_names: Any - -class PGCompiler(compiler.SQLCompiler): - def visit_colon_cast(self, element, **kw): ... - def visit_array(self, element, **kw): ... - def visit_slice(self, element, **kw): ... - def visit_json_getitem_op_binary(self, binary, operator, _cast_applied: bool = False, **kw): ... - def visit_json_path_getitem_op_binary(self, binary, operator, _cast_applied: bool = False, **kw): ... - def visit_getitem_binary(self, binary, operator, **kw): ... - def visit_aggregate_order_by(self, element, **kw): ... - def visit_match_op_binary(self, binary, operator, **kw): ... - def visit_ilike_op_binary(self, binary, operator, **kw): ... - def visit_not_ilike_op_binary(self, binary, operator, **kw): ... - def visit_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_not_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_regexp_replace_op_binary(self, binary, operator, **kw): ... - def visit_empty_set_expr(self, element_types): ... - def render_literal_value(self, value, type_): ... - def visit_sequence(self, seq, **kw): ... - def limit_clause(self, select, **kw): ... - def format_from_hint_text(self, sqltext, table, hint, iscrud): ... - def get_select_precolumns(self, select, **kw): ... - def for_update_clause(self, select, **kw): ... - def returning_clause(self, stmt, returning_cols): ... - def visit_substring_func(self, func, **kw): ... - def visit_on_conflict_do_nothing(self, on_conflict, **kw): ... - def visit_on_conflict_do_update(self, on_conflict, **kw): ... - def update_from_clause(self, update_stmt, from_table, extra_froms, from_hints, **kw): ... - def delete_extra_from_clause(self, delete_stmt, from_table, extra_froms, from_hints, **kw): ... - def fetch_clause(self, select, **kw): ... - -class PGDDLCompiler(compiler.DDLCompiler): - def get_column_specification(self, column, **kwargs): ... - def visit_check_constraint(self, constraint): ... - def visit_foreign_key_constraint(self, constraint) -> str: ... # type: ignore[override] # Different params - def visit_drop_table_comment(self, drop): ... - def visit_create_enum_type(self, create): ... - def visit_drop_enum_type(self, drop): ... - def visit_create_index(self, create): ... - def visit_drop_index(self, drop): ... - def visit_exclude_constraint(self, constraint, **kw): ... - def post_create_table(self, table): ... - def visit_computed_column(self, generated): ... - def visit_create_sequence(self, create, **kw): ... - -class PGTypeCompiler(compiler.GenericTypeCompiler): - def visit_TSVECTOR(self, type_, **kw): ... - def visit_INET(self, type_, **kw): ... - def visit_CIDR(self, type_, **kw): ... - def visit_MACADDR(self, type_, **kw): ... - def visit_MACADDR8(self, type_, **kw): ... - def visit_MONEY(self, type_, **kw): ... - def visit_OID(self, type_, **kw): ... - def visit_REGCLASS(self, type_, **kw): ... - def visit_FLOAT(self, type_, **kw): ... - def visit_DOUBLE_PRECISION(self, type_, **kw): ... - def visit_BIGINT(self, type_, **kw): ... - def visit_HSTORE(self, type_, **kw): ... - def visit_JSON(self, type_, **kw): ... - def visit_JSONB(self, type_, **kw): ... - def visit_INT4RANGE(self, type_, **kw): ... - def visit_INT8RANGE(self, type_, **kw): ... - def visit_NUMRANGE(self, type_, **kw): ... - def visit_DATERANGE(self, type_, **kw): ... - def visit_TSRANGE(self, type_, **kw): ... - def visit_TSTZRANGE(self, type_, **kw): ... - def visit_datetime(self, type_, **kw): ... - def visit_enum(self, type_, **kw): ... - def visit_ENUM(self, type_, identifier_preparer: Incomplete | None = None, **kw): ... - def visit_TIMESTAMP(self, type_, **kw): ... - def visit_TIME(self, type_, **kw): ... - def visit_INTERVAL(self, type_, **kw): ... - def visit_BIT(self, type_, **kw): ... - def visit_UUID(self, type_, **kw): ... - def visit_large_binary(self, type_, **kw): ... - def visit_BYTEA(self, type_, **kw): ... - def visit_ARRAY(self, type_, **kw): ... - -class PGIdentifierPreparer(compiler.IdentifierPreparer): - reserved_words: Any - def format_type(self, type_, use_schema: bool = True): ... - -class PGInspector(reflection.Inspector): - def get_table_oid(self, table_name, schema: Incomplete | None = None): ... - def get_enums(self, schema: Incomplete | None = None): ... - def get_foreign_table_names(self, schema: Incomplete | None = None): ... - def get_view_names(self, schema: Incomplete | None = None, include=("plain", "materialized")): ... - -class CreateEnumType(_CreateDropBase): - __visit_name__: str - -class DropEnumType(_CreateDropBase): - __visit_name__: str - -class PGExecutionContext(default.DefaultExecutionContext): - def fire_sequence(self, seq, type_): ... - def get_insert_default(self, column): ... - def should_autocommit_text(self, statement): ... - -class PGReadOnlyConnectionCharacteristic(characteristics.ConnectionCharacteristic): - transactional: bool - def reset_characteristic(self, dialect, dbapi_conn) -> None: ... - def set_characteristic(self, dialect, dbapi_conn, value) -> None: ... - def get_characteristic(self, dialect, dbapi_conn): ... - -class PGDeferrableConnectionCharacteristic(characteristics.ConnectionCharacteristic): - transactional: bool - def reset_characteristic(self, dialect, dbapi_conn) -> None: ... - def set_characteristic(self, dialect, dbapi_conn, value) -> None: ... - def get_characteristic(self, dialect, dbapi_conn): ... - -class PGDialect(default.DefaultDialect): - name: str - supports_statement_cache: bool - supports_alter: bool - max_identifier_length: int - supports_sane_rowcount: bool - supports_native_enum: bool - supports_native_boolean: bool - supports_smallserial: bool - supports_sequences: bool - sequences_optional: bool - preexecute_autoincrement_sequences: bool - postfetch_lastrowid: bool - supports_comments: bool - supports_default_values: bool - supports_default_metavalue: bool - supports_empty_insert: bool - supports_multivalues_insert: bool - supports_identity_columns: bool - default_paramstyle: str - ischema_names: Any - colspecs: Any - statement_compiler: Any - ddl_compiler: Any - type_compiler: Any - preparer: Any - inspector: Any - isolation_level: Any - implicit_returning: bool - full_returning: bool - connection_characteristics: Any - construct_arguments: Any - reflection_options: Any - def __init__( - self, - isolation_level: Incomplete | None = None, - json_serializer: Incomplete | None = None, - json_deserializer: Incomplete | None = None, - **kwargs, - ) -> None: ... - def initialize(self, connection) -> None: ... - def on_connect(self): ... - def set_isolation_level(self, connection, level) -> None: ... - def get_isolation_level(self, connection): ... - def set_readonly(self, connection, value) -> None: ... - def get_readonly(self, connection) -> None: ... - def set_deferrable(self, connection, value) -> None: ... - def get_deferrable(self, connection) -> None: ... - def do_begin_twophase(self, connection, xid) -> None: ... - def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_recover_twophase(self, connection): ... - def has_schema(self, connection, schema): ... - def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None): ... # type: ignore[override] - def has_type(self, connection, type_name, schema: Incomplete | None = None): ... - def get_table_oid(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = None, include=("plain", "materialized"), **kw): ... - def get_sequence_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_foreign_keys( - self, connection, table_name, schema: Incomplete | None = None, postgresql_ignore_search_path: bool = False, **kw - ): ... - def get_indexes(self, connection, table_name, schema, **kw): ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_table_comment(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_check_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi deleted file mode 100644 index 9d73ebd04..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi +++ /dev/null @@ -1,56 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql.dml import Insert as StandardInsert -from ...sql.elements import ClauseElement -from ...util.langhelpers import memoized_property - -class Insert(StandardInsert): - stringify_dialect: str - inherit_cache: bool - @memoized_property - def excluded(self): ... - def on_conflict_do_update( - self, - constraint: Incomplete | None = None, - index_elements: Incomplete | None = None, - index_where: Incomplete | None = None, - set_: Incomplete | None = None, - where: Incomplete | None = None, - ) -> None: ... - def on_conflict_do_nothing( - self, - constraint: Incomplete | None = None, - index_elements: Incomplete | None = None, - index_where: Incomplete | None = None, - ) -> None: ... - -insert: Any - -class OnConflictClause(ClauseElement): - stringify_dialect: str - constraint_target: Any - inferred_target_elements: Any - inferred_target_whereclause: Any - def __init__( - self, - constraint: Incomplete | None = None, - index_elements: Incomplete | None = None, - index_where: Incomplete | None = None, - ) -> None: ... - -class OnConflictDoNothing(OnConflictClause): - __visit_name__: str - -class OnConflictDoUpdate(OnConflictClause): - __visit_name__: str - update_values_to_set: Any - update_whereclause: Any - def __init__( - self, - constraint: Incomplete | None = None, - index_elements: Incomplete | None = None, - index_where: Incomplete | None = None, - set_: Incomplete | None = None, - where: Incomplete | None = None, - ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ext.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ext.pyi deleted file mode 100644 index 834e86264..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ext.pyi +++ /dev/null @@ -1,27 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql import expression -from ...sql.schema import ColumnCollectionConstraint - -class aggregate_order_by(expression.ColumnElement[Any]): - __visit_name__: str - stringify_dialect: str - target: Any - type: Any - order_by: Any - def __init__(self, target, *order_by) -> None: ... - def self_group(self, against: Incomplete | None = None): ... - def get_children(self, **kwargs): ... - -class ExcludeConstraint(ColumnCollectionConstraint): - __visit_name__: str - where: Any - inherit_cache: bool - create_drop_stringify_dialect: str - operators: Any - using: Any - ops: Any - def __init__(self, *elements, **kw) -> None: ... - -def array_agg(*arg, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi deleted file mode 100644 index 936c78c68..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi +++ /dev/null @@ -1,67 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql import functions as sqlfunc, sqltypes - -class HSTORE(sqltypes.Indexable, sqltypes.Concatenable, sqltypes.TypeEngine): - __visit_name__: str - hashable: bool - text_type: Any - def __init__(self, text_type: Incomplete | None = None) -> None: ... - - class Comparator(sqltypes.Indexable.Comparator[Any], sqltypes.Concatenable.Comparator[Any]): - def has_key(self, other): ... - def has_all(self, other): ... - def has_any(self, other): ... - def contains(self, other, **kwargs): ... - def contained_by(self, other): ... - def defined(self, key): ... - def delete(self, key): ... - def slice(self, array): ... - def keys(self): ... - def vals(self): ... - def array(self): ... - def matrix(self): ... - comparator_factory: Any - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class hstore(sqlfunc.GenericFunction): - type: Any - name: str - inherit_cache: bool - -class _HStoreDefinedFunction(sqlfunc.GenericFunction): - type: Any - name: str - inherit_cache: bool - -class _HStoreDeleteFunction(sqlfunc.GenericFunction): - type: Any - name: str - inherit_cache: bool - -class _HStoreSliceFunction(sqlfunc.GenericFunction): - type: Any - name: str - inherit_cache: bool - -class _HStoreKeysFunction(sqlfunc.GenericFunction): - type: Any - name: str - inherit_cache: bool - -class _HStoreValsFunction(sqlfunc.GenericFunction): - type: Any - name: str - inherit_cache: bool - -class _HStoreArrayFunction(sqlfunc.GenericFunction): - type: Any - name: str - inherit_cache: bool - -class _HStoreMatrixFunction(sqlfunc.GenericFunction): - type: Any - name: str - inherit_cache: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi deleted file mode 100644 index 0621b3e95..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi +++ /dev/null @@ -1,28 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql import sqltypes - -class JSONPathType(sqltypes.JSON.JSONPathType): - def bind_processor(self, dialect): ... - def literal_processor(self, dialect): ... - -class JSON(sqltypes.JSON): - astext_type: Any - def __init__(self, none_as_null: bool = False, astext_type: Incomplete | None = None) -> None: ... - - class Comparator(sqltypes.JSON.Comparator): - @property - def astext(self): ... - comparator_factory: Any - -class JSONB(JSON): - __visit_name__: str - - class Comparator(JSON.Comparator): - def has_key(self, other): ... - def has_all(self, other): ... - def has_any(self, other): ... - def contains(self, other, **kwargs): ... - def contained_by(self, other): ... - comparator_factory: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi deleted file mode 100644 index 5d923063a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi +++ /dev/null @@ -1,134 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql import sqltypes -from .array import ARRAY as PGARRAY -from .base import ENUM, INTERVAL, UUID, PGCompiler, PGDialect, PGExecutionContext, PGIdentifierPreparer -from .json import JSON, JSONB, JSONPathType - -class _PGNumeric(sqltypes.Numeric): - def result_processor(self, dialect, coltype): ... - -class _PGNumericNoBind(_PGNumeric): - def bind_processor(self, dialect) -> None: ... - -class _PGJSON(JSON): - def result_processor(self, dialect, coltype) -> None: ... - def get_dbapi_type(self, dbapi): ... - -class _PGJSONB(JSONB): - def result_processor(self, dialect, coltype) -> None: ... - def get_dbapi_type(self, dbapi): ... - -class _PGJSONIndexType(sqltypes.JSON.JSONIndexType): - def get_dbapi_type(self, dbapi) -> None: ... - -class _PGJSONIntIndexType(sqltypes.JSON.JSONIntIndexType): - def get_dbapi_type(self, dbapi): ... - -class _PGJSONStrIndexType(sqltypes.JSON.JSONStrIndexType): - def get_dbapi_type(self, dbapi): ... - -class _PGJSONPathType(JSONPathType): - def get_dbapi_type(self, dbapi): ... - -class _PGUUID(UUID): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class _PGEnum(ENUM): - def get_dbapi_type(self, dbapi): ... - -class _PGInterval(INTERVAL): - def get_dbapi_type(self, dbapi): ... - @classmethod - def adapt_emulated_to_native(cls, interval, **kw): ... - -class _PGTimeStamp(sqltypes.DateTime): - def get_dbapi_type(self, dbapi): ... - -class _PGTime(sqltypes.Time): - def get_dbapi_type(self, dbapi): ... - -class _PGInteger(sqltypes.Integer): - def get_dbapi_type(self, dbapi): ... - -class _PGSmallInteger(sqltypes.SmallInteger): - def get_dbapi_type(self, dbapi): ... - -class _PGNullType(sqltypes.NullType): - def get_dbapi_type(self, dbapi): ... - -class _PGBigInteger(sqltypes.BigInteger): - def get_dbapi_type(self, dbapi): ... - -class _PGBoolean(sqltypes.Boolean): - def get_dbapi_type(self, dbapi): ... - -class _PGARRAY(PGARRAY): - def bind_expression(self, bindvalue): ... - -class PGExecutionContext_pg8000(PGExecutionContext): - def create_server_side_cursor(self): ... - def pre_exec(self) -> None: ... - -class ServerSideCursor: - server_side: bool - ident: Any - cursor: Any - def __init__(self, cursor, ident) -> None: ... - @property - def connection(self): ... - @property - def rowcount(self): ... - @property - def description(self): ... - def execute(self, operation, args=(), stream: Incomplete | None = None): ... - def executemany(self, operation, param_sets): ... - def fetchone(self): ... - def fetchmany(self, num: Incomplete | None = None): ... - def fetchall(self): ... - def close(self) -> None: ... - def setinputsizes(self, *sizes) -> None: ... - def setoutputsize(self, size, column: Incomplete | None = None) -> None: ... - -class PGCompiler_pg8000(PGCompiler): - def visit_mod_binary(self, binary, operator, **kw): ... - -class PGIdentifierPreparer_pg8000(PGIdentifierPreparer): - def __init__(self, *args, **kwargs) -> None: ... - -class PGDialect_pg8000(PGDialect): - driver: str - supports_statement_cache: bool - supports_unicode_statements: bool - supports_unicode_binds: bool - default_paramstyle: str - supports_sane_multi_rowcount: bool - statement_compiler: Any - preparer: Any - supports_server_side_cursors: bool - use_setinputsizes: bool - description_encoding: Any - colspecs: Any - client_encoding: Any - def __init__(self, client_encoding: Incomplete | None = None, **kwargs) -> None: ... - @classmethod - def dbapi(cls): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - def set_isolation_level(self, connection, level) -> None: ... - def set_readonly(self, connection, value) -> None: ... - def get_readonly(self, connection): ... - def set_deferrable(self, connection, value) -> None: ... - def get_deferrable(self, connection): ... - def set_client_encoding(self, connection, client_encoding) -> None: ... - def do_set_input_sizes(self, cursor, list_of_tuples, context) -> None: ... - def do_begin_twophase(self, connection, xid) -> None: ... - def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_recover_twophase(self, connection): ... - def on_connect(self): ... - -dialect = PGDialect_pg8000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/provision.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/provision.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi deleted file mode 100644 index d80b3f471..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi +++ /dev/null @@ -1,95 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql import sqltypes -from .array import ARRAY as PGARRAY -from .base import ENUM, UUID, PGCompiler, PGDialect, PGExecutionContext, PGIdentifierPreparer -from .hstore import HSTORE -from .json import JSON, JSONB - -logger: Any - -class _PGNumeric(sqltypes.Numeric): - def bind_processor(self, dialect) -> None: ... - def result_processor(self, dialect, coltype): ... - -class _PGEnum(ENUM): - def result_processor(self, dialect, coltype): ... - -class _PGHStore(HSTORE): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class _PGARRAY(PGARRAY): - def bind_expression(self, bindvalue): ... - -class _PGJSON(JSON): - def result_processor(self, dialect, coltype) -> None: ... - -class _PGJSONB(JSONB): - def result_processor(self, dialect, coltype) -> None: ... - -class _PGUUID(UUID): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class PGExecutionContext_psycopg2(PGExecutionContext): - def create_server_side_cursor(self): ... - cursor_fetch_strategy: Any - def post_exec(self) -> None: ... - -class PGCompiler_psycopg2(PGCompiler): ... -class PGIdentifierPreparer_psycopg2(PGIdentifierPreparer): ... - -EXECUTEMANY_PLAIN: Any -EXECUTEMANY_BATCH: Any -EXECUTEMANY_VALUES: Any -EXECUTEMANY_VALUES_PLUS_BATCH: Any - -class PGDialect_psycopg2(PGDialect): - driver: str - supports_statement_cache: bool - supports_unicode_statements: bool - supports_server_side_cursors: bool - default_paramstyle: str - supports_sane_multi_rowcount: bool - statement_compiler: Any - preparer: Any - psycopg2_version: Any - engine_config_types: Any - colspecs: Any - use_native_unicode: Any - use_native_hstore: Any - use_native_uuid: Any - supports_unicode_binds: Any - client_encoding: Any - executemany_mode: Any - insert_executemany_returning: bool - executemany_batch_page_size: Any - executemany_values_page_size: Any - def __init__( - self, - use_native_unicode: bool = True, - client_encoding: Incomplete | None = None, - use_native_hstore: bool = True, - use_native_uuid: bool = True, - executemany_mode: str = "values_only", - executemany_batch_page_size: int = 100, - executemany_values_page_size: int = 1000, - **kwargs, - ) -> None: ... - def initialize(self, connection) -> None: ... - @classmethod - def dbapi(cls): ... - def set_isolation_level(self, connection, level) -> None: ... - def set_readonly(self, connection, value) -> None: ... - def get_readonly(self, connection): ... - def set_deferrable(self, connection, value) -> None: ... - def get_deferrable(self, connection): ... - def do_ping(self, dbapi_connection): ... - def on_connect(self): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = PGDialect_psycopg2 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2cffi.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2cffi.pyi deleted file mode 100644 index 4456b3294..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2cffi.pyi +++ /dev/null @@ -1,13 +0,0 @@ -from typing import Any - -from .psycopg2 import PGDialect_psycopg2 - -class PGDialect_psycopg2cffi(PGDialect_psycopg2): - driver: str - supports_unicode_statements: bool - supports_statement_cache: bool - FEATURE_VERSION_MAP: Any - @classmethod - def dbapi(cls): ... - -dialect = PGDialect_psycopg2cffi diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pygresql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pygresql.pyi deleted file mode 100644 index 997db14e8..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pygresql.pyi +++ /dev/null @@ -1,52 +0,0 @@ -from typing import Any - -from ...sql.sqltypes import Numeric -from .base import UUID, PGCompiler, PGDialect, PGIdentifierPreparer -from .hstore import HSTORE -from .json import JSON, JSONB - -class _PGNumeric(Numeric): - def bind_processor(self, dialect) -> None: ... - def result_processor(self, dialect, coltype): ... - -class _PGHStore(HSTORE): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class _PGJSON(JSON): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class _PGJSONB(JSONB): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class _PGUUID(UUID): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class _PGCompiler(PGCompiler): - def visit_mod_binary(self, binary, operator, **kw): ... - def post_process_text(self, text): ... - -class _PGIdentifierPreparer(PGIdentifierPreparer): ... - -class PGDialect_pygresql(PGDialect): - driver: str - supports_statement_cache: bool - statement_compiler: Any - preparer: Any - @classmethod - def dbapi(cls): ... - colspecs: Any - dbapi_version: Any - supports_unicode_statements: bool - supports_unicode_binds: bool - has_native_hstore: Any - has_native_json: Any - has_native_uuid: Any - def __init__(self, **kwargs) -> None: ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = PGDialect_pygresql diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pypostgresql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pypostgresql.pyi deleted file mode 100644 index 9623ce216..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pypostgresql.pyi +++ /dev/null @@ -1,30 +0,0 @@ -from typing import Any - -from ...sql import sqltypes -from ...util.langhelpers import memoized_property -from .base import PGDialect, PGExecutionContext - -class PGNumeric(sqltypes.Numeric): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class PGExecutionContext_pypostgresql(PGExecutionContext): ... - -class PGDialect_pypostgresql(PGDialect): - driver: str - supports_statement_cache: bool - supports_unicode_statements: bool - supports_unicode_binds: bool - description_encoding: Any - default_paramstyle: str - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - colspecs: Any - @classmethod - def dbapi(cls): ... - @memoized_property - def dbapi_exception_translation_map(self): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = PGDialect_pypostgresql diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ranges.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ranges.pyi deleted file mode 100644 index d12715f46..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/ranges.pyi +++ /dev/null @@ -1,36 +0,0 @@ -from typing import Any - -from ...sql import sqltypes - -class RangeOperators: - class comparator_factory(sqltypes.Concatenable.Comparator[Any]): - def __ne__(self, other): ... - def contains(self, other, **kw): ... - def contained_by(self, other): ... - def overlaps(self, other): ... - def strictly_left_of(self, other): ... - __lshift__: Any - def strictly_right_of(self, other): ... - __rshift__: Any - def not_extend_right_of(self, other): ... - def not_extend_left_of(self, other): ... - def adjacent_to(self, other): ... - def __add__(self, other): ... - -class INT4RANGE(RangeOperators, sqltypes.TypeEngine): - __visit_name__: str - -class INT8RANGE(RangeOperators, sqltypes.TypeEngine): - __visit_name__: str - -class NUMRANGE(RangeOperators, sqltypes.TypeEngine): - __visit_name__: str - -class DATERANGE(RangeOperators, sqltypes.TypeEngine): - __visit_name__: str - -class TSRANGE(RangeOperators, sqltypes.TypeEngine): - __visit_name__: str - -class TSTZRANGE(RangeOperators, sqltypes.TypeEngine): - __visit_name__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/__init__.pyi deleted file mode 100644 index 7dcb0cd76..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/__init__.pyi +++ /dev/null @@ -1,45 +0,0 @@ -from typing import Any - -from .base import ( - BLOB as BLOB, - BOOLEAN as BOOLEAN, - CHAR as CHAR, - DATE as DATE, - DATETIME as DATETIME, - DECIMAL as DECIMAL, - FLOAT as FLOAT, - INTEGER as INTEGER, - JSON as JSON, - NUMERIC as NUMERIC, - REAL as REAL, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - VARCHAR as VARCHAR, -) -from .dml import Insert as Insert, insert as insert - -__all__ = ( - "BLOB", - "BOOLEAN", - "CHAR", - "DATE", - "DATETIME", - "DECIMAL", - "FLOAT", - "INTEGER", - "JSON", - "NUMERIC", - "SMALLINT", - "TEXT", - "TIME", - "TIMESTAMP", - "VARCHAR", - "REAL", - "Insert", - "insert", - "dialect", -) - -dialect: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/aiosqlite.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/aiosqlite.pyi deleted file mode 100644 index a4c15cb91..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/aiosqlite.pyi +++ /dev/null @@ -1,73 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...engine import AdaptedConnection -from .base import SQLiteExecutionContext -from .pysqlite import SQLiteDialect_pysqlite - -class AsyncAdapt_aiosqlite_cursor: - server_side: bool - await_: Any - arraysize: int - rowcount: int - description: Any - def __init__(self, adapt_connection) -> None: ... - def close(self) -> None: ... - lastrowid: int - def execute(self, operation, parameters: Incomplete | None = None) -> None: ... - def executemany(self, operation, seq_of_parameters) -> None: ... - def setinputsizes(self, *inputsizes) -> None: ... - def __iter__(self): ... - def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def fetchall(self): ... - -class AsyncAdapt_aiosqlite_ss_cursor(AsyncAdapt_aiosqlite_cursor): - server_side: bool - def __init__(self, *arg, **kw) -> None: ... - def close(self) -> None: ... - def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def fetchall(self): ... - -class AsyncAdapt_aiosqlite_connection(AdaptedConnection): - await_: Any - dbapi: Any - def __init__(self, dbapi, connection) -> None: ... - @property - def isolation_level(self): ... - @isolation_level.setter - def isolation_level(self, value) -> None: ... - def create_function(self, *args, **kw) -> None: ... - def cursor(self, server_side: bool = False): ... - def execute(self, *args, **kw): ... - def rollback(self) -> None: ... - def commit(self) -> None: ... - def close(self) -> None: ... - -class AsyncAdaptFallback_aiosqlite_connection(AsyncAdapt_aiosqlite_connection): - await_: Any - -class AsyncAdapt_aiosqlite_dbapi: - aiosqlite: Any - sqlite: Any - paramstyle: str - def __init__(self, aiosqlite, sqlite) -> None: ... - def connect(self, *arg, **kw): ... - -class SQLiteExecutionContext_aiosqlite(SQLiteExecutionContext): - def create_server_side_cursor(self): ... - -class SQLiteDialect_aiosqlite(SQLiteDialect_pysqlite): - driver: str - supports_statement_cache: bool - is_async: bool - supports_server_side_cursors: bool - @classmethod - def dbapi(cls): ... - @classmethod - def get_pool_class(cls, url): ... - def is_disconnect(self, e, connection, cursor): ... - def get_driver_connection(self, connection): ... - -dialect = SQLiteDialect_aiosqlite diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi deleted file mode 100644 index 135442bab..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/base.pyi +++ /dev/null @@ -1,141 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...engine import default -from ...sql import compiler, sqltypes -from ...sql.sqltypes import ( - BLOB as BLOB, - BOOLEAN as BOOLEAN, - CHAR as CHAR, - DECIMAL as DECIMAL, - FLOAT as FLOAT, - INTEGER as INTEGER, - NUMERIC as NUMERIC, - REAL as REAL, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIMESTAMP as TIMESTAMP, - VARCHAR as VARCHAR, -) -from .json import JSON as JSON - -class _SQliteJson(JSON): - def result_processor(self, dialect, coltype): ... - -class _DateTimeMixin: - def __init__(self, storage_format: Incomplete | None = None, regexp: Incomplete | None = None, **kw) -> None: ... - @property - def format_is_text_affinity(self): ... - def adapt(self, cls, **kw): ... - def literal_processor(self, dialect): ... - -class DATETIME(_DateTimeMixin, sqltypes.DateTime): - def __init__(self, *args, **kwargs) -> None: ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class DATE(_DateTimeMixin, sqltypes.Date): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class TIME(_DateTimeMixin, sqltypes.Time): - def __init__(self, *args, **kwargs) -> None: ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -colspecs: Any -ischema_names: Any - -class SQLiteCompiler(compiler.SQLCompiler): - extract_map: Any - def visit_now_func(self, fn, **kw): ... - def visit_localtimestamp_func(self, func, **kw): ... - def visit_true(self, expr, **kw): ... - def visit_false(self, expr, **kw): ... - def visit_char_length_func(self, fn, **kw): ... - def visit_cast(self, cast, **kwargs): ... - def visit_extract(self, extract, **kw): ... - def limit_clause(self, select, **kw): ... - def for_update_clause(self, select, **kw): ... - def visit_is_distinct_from_binary(self, binary, operator, **kw): ... - def visit_is_not_distinct_from_binary(self, binary, operator, **kw): ... - def visit_json_getitem_op_binary(self, binary, operator, **kw): ... - def visit_json_path_getitem_op_binary(self, binary, operator, **kw): ... - def visit_empty_set_op_expr(self, type_, expand_op): ... - def visit_empty_set_expr(self, element_types): ... - def visit_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_not_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_on_conflict_do_nothing(self, on_conflict, **kw): ... - def visit_on_conflict_do_update(self, on_conflict, **kw): ... - -class SQLiteDDLCompiler(compiler.DDLCompiler): - def get_column_specification(self, column, **kwargs): ... - def visit_primary_key_constraint(self, constraint): ... - def visit_unique_constraint(self, constraint): ... - def visit_check_constraint(self, constraint): ... - def visit_column_check_constraint(self, constraint): ... - def visit_foreign_key_constraint(self, constraint): ... - def define_constraint_remote_table(self, constraint, table, preparer): ... - def visit_create_index(self, create, include_schema: bool = False, include_table_schema: bool = True): ... # type: ignore[override] - def post_create_table(self, table): ... - -class SQLiteTypeCompiler(compiler.GenericTypeCompiler): - def visit_large_binary(self, type_, **kw): ... - def visit_DATETIME(self, type_, **kw): ... - def visit_DATE(self, type_, **kw): ... - def visit_TIME(self, type_, **kw): ... - def visit_JSON(self, type_, **kw): ... - -class SQLiteIdentifierPreparer(compiler.IdentifierPreparer): - reserved_words: Any - -class SQLiteExecutionContext(default.DefaultExecutionContext): ... - -class SQLiteDialect(default.DefaultDialect): - name: str - supports_alter: bool - supports_unicode_statements: bool - supports_unicode_binds: bool - supports_default_values: bool - supports_default_metavalue: bool - supports_empty_insert: bool - supports_cast: bool - supports_multivalues_insert: bool - tuple_in_values: bool - supports_statement_cache: bool - default_paramstyle: str - statement_compiler: Any - ddl_compiler: Any - type_compiler: Any - preparer: Any - ischema_names: Any - colspecs: Any - isolation_level: Any - construct_arguments: Any - native_datetime: Any - def __init__( - self, - isolation_level: Incomplete | None = None, - native_datetime: bool = False, - json_serializer: Incomplete | None = None, - json_deserializer: Incomplete | None = None, - _json_serializer: Incomplete | None = None, - _json_deserializer: Incomplete | None = None, - **kwargs, - ) -> None: ... - def set_isolation_level(self, connection, level) -> None: ... - def get_isolation_level(self, connection): ... - def on_connect(self): ... - def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_temp_table_names(self, connection, **kw): ... - def get_temp_view_names(self, connection, **kw): ... - def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] - def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_check_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi deleted file mode 100644 index 139c0f170..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/dml.pyi +++ /dev/null @@ -1,44 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql.dml import Insert as StandardInsert -from ...sql.elements import ClauseElement -from ...util.langhelpers import memoized_property - -class Insert(StandardInsert): - stringify_dialect: str - inherit_cache: bool - @memoized_property - def excluded(self): ... - def on_conflict_do_update( - self, - index_elements: Incomplete | None = None, - index_where: Incomplete | None = None, - set_: Incomplete | None = None, - where: Incomplete | None = None, - ) -> None: ... - def on_conflict_do_nothing(self, index_elements: Incomplete | None = None, index_where: Incomplete | None = None) -> None: ... - -insert: Any - -class OnConflictClause(ClauseElement): - stringify_dialect: str - constraint_target: Any - inferred_target_elements: Any - inferred_target_whereclause: Any - def __init__(self, index_elements: Incomplete | None = None, index_where: Incomplete | None = None) -> None: ... - -class OnConflictDoNothing(OnConflictClause): - __visit_name__: str - -class OnConflictDoUpdate(OnConflictClause): - __visit_name__: str - update_values_to_set: Any - update_whereclause: Any - def __init__( - self, - index_elements: Incomplete | None = None, - index_where: Incomplete | None = None, - set_: Incomplete | None = None, - where: Incomplete | None = None, - ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/json.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/json.pyi deleted file mode 100644 index 5d5bb5efe..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/json.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from ...sql.sqltypes import JSON as _JSON - -class JSON(_JSON): ... - -class _FormatTypeMixin: - def bind_processor(self, dialect): ... - def literal_processor(self, dialect): ... - -class JSONIndexType(_FormatTypeMixin, _JSON.JSONIndexType): ... -class JSONPathType(_FormatTypeMixin, _JSON.JSONPathType): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/provision.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/provision.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/pysqlcipher.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/pysqlcipher.pyi deleted file mode 100644 index cf2d8738e..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/pysqlcipher.pyi +++ /dev/null @@ -1,16 +0,0 @@ -from typing import Any - -from .pysqlite import SQLiteDialect_pysqlite - -class SQLiteDialect_pysqlcipher(SQLiteDialect_pysqlite): - driver: str - supports_statement_cache: bool - pragmas: Any - @classmethod - def dbapi(cls): ... - @classmethod - def get_pool_class(cls, url): ... - def on_connect_url(self, url): ... - def create_connect_args(self, url): ... - -dialect = SQLiteDialect_pysqlcipher diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/pysqlite.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/pysqlite.pyi deleted file mode 100644 index 5703abbdf..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sqlite/pysqlite.pyi +++ /dev/null @@ -1,28 +0,0 @@ -from typing import Any - -from .base import DATE, DATETIME, SQLiteDialect - -class _SQLite_pysqliteTimeStamp(DATETIME): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class _SQLite_pysqliteDate(DATE): - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class SQLiteDialect_pysqlite(SQLiteDialect): - default_paramstyle: str - supports_statement_cache: bool - colspecs: Any - description_encoding: Any - driver: str - @classmethod - def dbapi(cls): ... - @classmethod - def get_pool_class(cls, url): ... - def set_isolation_level(self, connection, level): ... - def on_connect(self): ... - def create_connect_args(self, url): ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = SQLiteDialect_pysqlite diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/__init__.pyi deleted file mode 100644 index 3b97262f2..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/__init__.pyi +++ /dev/null @@ -1,58 +0,0 @@ -from typing import Any - -from .base import ( - BIGINT as BIGINT, - BINARY as BINARY, - BIT as BIT, - CHAR as CHAR, - DATE as DATE, - DATETIME as DATETIME, - FLOAT as FLOAT, - IMAGE as IMAGE, - INT as INT, - INTEGER as INTEGER, - MONEY as MONEY, - NCHAR as NCHAR, - NUMERIC as NUMERIC, - NVARCHAR as NVARCHAR, - SMALLINT as SMALLINT, - SMALLMONEY as SMALLMONEY, - TEXT as TEXT, - TIME as TIME, - TINYINT as TINYINT, - UNICHAR as UNICHAR, - UNITEXT as UNITEXT, - UNIVARCHAR as UNIVARCHAR, - VARBINARY as VARBINARY, - VARCHAR as VARCHAR, -) - -__all__ = ( - "CHAR", - "VARCHAR", - "TIME", - "NCHAR", - "NVARCHAR", - "TEXT", - "DATE", - "DATETIME", - "FLOAT", - "NUMERIC", - "BIGINT", - "INT", - "INTEGER", - "SMALLINT", - "BINARY", - "VARBINARY", - "UNITEXT", - "UNICHAR", - "UNIVARCHAR", - "IMAGE", - "BIT", - "MONEY", - "SMALLMONEY", - "TINYINT", - "dialect", -) - -dialect: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi deleted file mode 100644 index 52533ce99..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/base.pyi +++ /dev/null @@ -1,135 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...engine import default, reflection -from ...sql import compiler, sqltypes -from ...sql.sqltypes import ( - BIGINT as BIGINT, - BINARY as BINARY, - CHAR as CHAR, - DATE as DATE, - DATETIME as DATETIME, - DECIMAL as DECIMAL, - FLOAT as FLOAT, - INT as INT, - INTEGER as INTEGER, - NCHAR as NCHAR, - NUMERIC as NUMERIC, - NVARCHAR as NVARCHAR, - REAL as REAL, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - VARBINARY as VARBINARY, - VARCHAR as VARCHAR, - Unicode as Unicode, -) - -RESERVED_WORDS: Any - -class _SybaseUnitypeMixin: - def result_processor(self, dialect, coltype): ... - -class UNICHAR(_SybaseUnitypeMixin, sqltypes.Unicode): - __visit_name__: str - -class UNIVARCHAR(_SybaseUnitypeMixin, sqltypes.Unicode): - __visit_name__: str - -class UNITEXT(_SybaseUnitypeMixin, sqltypes.UnicodeText): - __visit_name__: str - -class TINYINT(sqltypes.Integer): - __visit_name__: str - -class BIT(sqltypes.TypeEngine): - __visit_name__: str - -class MONEY(sqltypes.TypeEngine): - __visit_name__: str - -class SMALLMONEY(sqltypes.TypeEngine): - __visit_name__: str - -class UNIQUEIDENTIFIER(sqltypes.TypeEngine): - __visit_name__: str - -class IMAGE(sqltypes.LargeBinary): - __visit_name__: str - -class SybaseTypeCompiler(compiler.GenericTypeCompiler): - def visit_large_binary(self, type_, **kw): ... - def visit_boolean(self, type_, **kw): ... - def visit_unicode(self, type_, **kw): ... - def visit_UNICHAR(self, type_, **kw): ... - def visit_UNIVARCHAR(self, type_, **kw): ... - def visit_UNITEXT(self, type_, **kw): ... - def visit_TINYINT(self, type_, **kw): ... - def visit_IMAGE(self, type_, **kw): ... - def visit_BIT(self, type_, **kw): ... - def visit_MONEY(self, type_, **kw): ... - def visit_SMALLMONEY(self, type_, **kw): ... - def visit_UNIQUEIDENTIFIER(self, type_, **kw): ... - -ischema_names: Any - -class SybaseInspector(reflection.Inspector): - def __init__(self, conn) -> None: ... - def get_table_id(self, table_name, schema: Incomplete | None = None): ... - -class SybaseExecutionContext(default.DefaultExecutionContext): - def set_ddl_autocommit(self, connection, value) -> None: ... - def pre_exec(self) -> None: ... - def post_exec(self) -> None: ... - def get_lastrowid(self): ... - -class SybaseSQLCompiler(compiler.SQLCompiler): - ansi_bind_rules: bool - extract_map: Any - def get_from_hint_text(self, table, text): ... - def limit_clause(self, select, **kw): ... - def visit_extract(self, extract, **kw): ... - def visit_now_func(self, fn, **kw): ... - def for_update_clause(self, select): ... - def order_by_clause(self, select, **kw): ... - def delete_table_clause(self, delete_stmt, from_table, extra_froms): ... - def delete_extra_from_clause(self, delete_stmt, from_table, extra_froms, from_hints, **kw): ... - -class SybaseDDLCompiler(compiler.DDLCompiler): - def get_column_specification(self, column, **kwargs): ... - def visit_drop_index(self, drop): ... - -class SybaseIdentifierPreparer(compiler.IdentifierPreparer): - reserved_words: Any - -class SybaseDialect(default.DefaultDialect): - name: str - supports_unicode_statements: bool - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - supports_statement_cache: bool - supports_native_boolean: bool - supports_unicode_binds: bool - postfetch_lastrowid: bool - colspecs: Any - ischema_names: Any - type_compiler: Any - statement_compiler: Any - ddl_compiler: Any - preparer: Any - inspector: Any - construct_arguments: Any - def __init__(self, *args, **kwargs) -> None: ... - max_identifier_length: int - def initialize(self, connection) -> None: ... - def get_table_id(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw): ... - def get_schema_names(self, connection, **kw): ... - def get_table_names(self, connection, schema: Incomplete | None = None, **kw): ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw): ... - def get_view_names(self, connection, schema: Incomplete | None = None, **kw): ... - def has_table(self, connection, table_name, schema: Incomplete | None = None): ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/mxodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/mxodbc.pyi deleted file mode 100644 index 30ba517d2..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/mxodbc.pyi +++ /dev/null @@ -1,9 +0,0 @@ -from ...connectors.mxodbc import MxODBCConnector -from .base import SybaseDialect, SybaseExecutionContext - -class SybaseExecutionContext_mxodbc(SybaseExecutionContext): ... - -class SybaseDialect_mxodbc(MxODBCConnector, SybaseDialect): - supports_statement_cache: bool - -dialect = SybaseDialect_mxodbc diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pyodbc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pyodbc.pyi deleted file mode 100644 index 6678e90ea..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pyodbc.pyi +++ /dev/null @@ -1,19 +0,0 @@ -from typing import Any - -from ...connectors.pyodbc import PyODBCConnector -from ...sql import sqltypes -from .base import SybaseDialect, SybaseExecutionContext - -class _SybNumeric_pyodbc(sqltypes.Numeric): - def bind_processor(self, dialect): ... - -class SybaseExecutionContext_pyodbc(SybaseExecutionContext): - def set_ddl_autocommit(self, connection, value) -> None: ... - -class SybaseDialect_pyodbc(PyODBCConnector, SybaseDialect): - supports_statement_cache: bool - colspecs: Any - @classmethod - def dbapi(cls): ... - -dialect = SybaseDialect_pyodbc diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi deleted file mode 100644 index c57e68804..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/dialects/sybase/pysybase.pyi +++ /dev/null @@ -1,28 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...sql import sqltypes -from .base import SybaseDialect, SybaseExecutionContext, SybaseSQLCompiler - -class _SybNumeric(sqltypes.Numeric): - def result_processor(self, dialect, type_): ... - -class SybaseExecutionContext_pysybase(SybaseExecutionContext): - def set_ddl_autocommit(self, dbapi_connection, value) -> None: ... - def pre_exec(self) -> None: ... - -class SybaseSQLCompiler_pysybase(SybaseSQLCompiler): - def bindparam_string(self, name, **kw): ... - -class SybaseDialect_pysybase(SybaseDialect): - driver: str - statement_compiler: Any - supports_statement_cache: bool - colspecs: Any - @classmethod - def dbapi(cls): ... - def create_connect_args(self, url): ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def is_disconnect(self, e, connection, cursor): ... - -dialect = SybaseDialect_pysybase diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/__init__.pyi deleted file mode 100644 index 48d019b65..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/__init__.pyi +++ /dev/null @@ -1,46 +0,0 @@ -from ..sql import ddl as ddl -from . import events as events, util as util -from .base import ( - Connection as Connection, - Engine as Engine, - NestedTransaction as NestedTransaction, - RootTransaction as RootTransaction, - Transaction as Transaction, - TwoPhaseTransaction as TwoPhaseTransaction, -) -from .create import create_engine as create_engine, engine_from_config as engine_from_config -from .cursor import ( - BaseCursorResult as BaseCursorResult, - BufferedColumnResultProxy as BufferedColumnResultProxy, - BufferedColumnRow as BufferedColumnRow, - BufferedRowResultProxy as BufferedRowResultProxy, - CursorResult as CursorResult, - FullyBufferedResultProxy as FullyBufferedResultProxy, - LegacyCursorResult as LegacyCursorResult, - ResultProxy as ResultProxy, -) -from .interfaces import ( - AdaptedConnection as AdaptedConnection, - Compiled as Compiled, - Connectable as Connectable, - CreateEnginePlugin as CreateEnginePlugin, - Dialect as Dialect, - ExceptionContext as ExceptionContext, - ExecutionContext as ExecutionContext, - TypeCompiler as TypeCompiler, -) -from .mock import create_mock_engine as create_mock_engine -from .reflection import Inspector as Inspector -from .result import ( - ChunkedIteratorResult as ChunkedIteratorResult, - FrozenResult as FrozenResult, - IteratorResult as IteratorResult, - MappingResult as MappingResult, - MergedResult as MergedResult, - Result as Result, - ScalarResult as ScalarResult, - result_tuple as result_tuple, -) -from .row import BaseRow as BaseRow, LegacyRow as LegacyRow, Row as Row, RowMapping as RowMapping -from .url import URL as URL, make_url as make_url -from .util import connection_memoize as connection_memoize diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/base.pyi deleted file mode 100644 index 2b69e99d3..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/base.pyi +++ /dev/null @@ -1,215 +0,0 @@ -from _typeshed import Incomplete -from _typeshed.dbapi import DBAPIConnection -from abc import abstractmethod -from collections.abc import Callable, Mapping -from types import TracebackType -from typing import Any, TypeVar, overload -from typing_extensions import Concatenate, ParamSpec, Self, TypeAlias - -from ..log import Identified, _EchoFlag, echo_property -from ..pool import Pool -from ..sql.compiler import Compiled -from ..sql.ddl import DDLElement -from ..sql.elements import ClauseElement -from ..sql.functions import FunctionElement -from ..sql.schema import DefaultGenerator -from .cursor import CursorResult -from .interfaces import Connectable as Connectable, Dialect, ExceptionContext -from .url import URL -from .util import TransactionalContext - -_T = TypeVar("_T") -_P = ParamSpec("_P") - -_Executable: TypeAlias = ClauseElement | FunctionElement | DDLElement | DefaultGenerator | Compiled - -class Connection(Connectable): - engine: Engine - dialect: Dialect - should_close_with_result: bool - dispatch: Any - def __init__( - self, - engine: Engine, - connection: DBAPIConnection | None = None, - close_with_result: bool = False, - _branch_from: Incomplete | None = None, - _execution_options: Incomplete | None = None, - _dispatch: Incomplete | None = None, - _has_events: Incomplete | None = None, - _allow_revalidate: bool = True, - ) -> None: ... - def schema_for_object(self, obj) -> str | None: ... - def __enter__(self) -> Self: ... - def __exit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - def execution_options(self, **opt): ... - def get_execution_options(self): ... - @property - def closed(self) -> bool: ... - @property - def invalidated(self) -> bool: ... - @property - def connection(self) -> DBAPIConnection: ... - def get_isolation_level(self): ... - @property - def default_isolation_level(self): ... - @property - def info(self): ... - def connect(self, close_with_result: bool = False): ... # type: ignore[override] - def invalidate(self, exception: Exception | None = None) -> None: ... - def detach(self) -> None: ... - def begin(self) -> Transaction: ... - def begin_nested(self) -> Transaction | None: ... - def begin_twophase(self, xid: Incomplete | None = None) -> TwoPhaseTransaction: ... - def recover_twophase(self): ... - def rollback_prepared(self, xid, recover: bool = False) -> None: ... - def commit_prepared(self, xid, recover: bool = False) -> None: ... - def in_transaction(self) -> bool: ... - def in_nested_transaction(self) -> bool: ... - def get_transaction(self) -> Transaction | None: ... - def get_nested_transaction(self) -> Transaction | None: ... - def close(self) -> None: ... - @overload - def scalar(self, object_: _Executable, *multiparams: Mapping[str, Any], **params: Any) -> Any: ... - @overload - def scalar(self, object_: str, *multiparams: Any | tuple[Any, ...] | Mapping[str, Any], **params: Any) -> Any: ... - def scalars(self, object_, *multiparams, **params): ... - @overload # type: ignore[override] - def execute(self, statement: _Executable, *multiparams: Mapping[str, Any], **params) -> CursorResult: ... - @overload - def execute(self, statement: str, *multiparams: Any | tuple[Any, ...] | Mapping[str, Any], **params) -> CursorResult: ... - def exec_driver_sql( - self, statement: str, parameters: Incomplete | None = None, execution_options: Incomplete | None = None - ): ... - def transaction(self, callable_: Callable[Concatenate[Connection, _P], _T], *args: _P.args, **kwargs: _P.kwargs) -> _T: ... - def run_callable(self, callable_: Callable[Concatenate[Connection, _P], _T], *args: _P.args, **kwargs: _P.kwargs) -> _T: ... - -class ExceptionContextImpl(ExceptionContext): - engine: Any - connection: Any - sqlalchemy_exception: Any - original_exception: Any - execution_context: Any - statement: Any - parameters: Any - is_disconnect: Any - invalidate_pool_on_disconnect: Any - def __init__( - self, - exception, - sqlalchemy_exception, - engine, - connection, - cursor, - statement, - parameters, - context, - is_disconnect, - invalidate_pool_on_disconnect, - ) -> None: ... - -class Transaction(TransactionalContext): - def __init__(self, connection: Connection) -> None: ... - @property - def is_valid(self) -> bool: ... - def close(self) -> None: ... - def rollback(self) -> None: ... - def commit(self) -> None: ... - # The following field are technically not defined on Transaction, but on - # all sub-classes. - @property - @abstractmethod - def connection(self) -> Connection: ... - @property - @abstractmethod - def is_active(self) -> bool: ... - -class MarkerTransaction(Transaction): - connection: Connection - @property - def is_active(self) -> bool: ... - -class RootTransaction(Transaction): - connection: Connection - is_active: bool - -class NestedTransaction(Transaction): - connection: Connection - is_active: bool - -class TwoPhaseTransaction(RootTransaction): - xid: Any - def __init__(self, connection: Connection, xid) -> None: ... - def prepare(self) -> None: ... - -class Engine(Connectable, Identified): - pool: Pool - url: URL - dialect: Dialect - logging_name: str # only exists if not None during initialization - echo: echo_property - hide_parameters: bool - def __init__( - self, - pool: Pool, - dialect: Dialect, - url: str | URL, - logging_name: str | None = None, - echo: _EchoFlag = None, - query_cache_size: int = 500, - execution_options: Mapping[str, Any] | None = None, - hide_parameters: bool = False, - ) -> None: ... - @property - def engine(self) -> Engine: ... - def clear_compiled_cache(self) -> None: ... - def update_execution_options(self, **opt) -> None: ... - def execution_options(self, **opt): ... - def get_execution_options(self): ... - @property - def name(self) -> str: ... - @property - def driver(self): ... - def dispose(self, close: bool = True) -> None: ... - - class _trans_ctx: - conn: Connection - transaction: Transaction - close_with_result: bool - def __init__(self, conn: Connection, transaction: Transaction, close_with_result: bool) -> None: ... - def __enter__(self) -> Connection: ... - def __exit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - - def begin(self, close_with_result: bool = False) -> _trans_ctx: ... - def transaction( - self, callable_: Callable[Concatenate[Connection, _P], _T], *args: _P.args, **kwargs: _P.kwargs - ) -> _T | None: ... - def run_callable(self, callable_: Callable[Concatenate[Connection, _P], _T], *args: _P.args, **kwargs: _P.kwargs) -> _T: ... - @overload # type: ignore[override] - def execute(self, statement: _Executable, *multiparams: Mapping[str, Any], **params: Any) -> CursorResult: ... - @overload - def execute(self, statement: str, *multiparams: Any | tuple[Any, ...] | Mapping[str, Any], **params: Any) -> CursorResult: ... - @overload # type: ignore[override] - def scalar(self, statement: _Executable, *multiparams: Mapping[str, Any], **params: Any) -> Any: ... - @overload - def scalar(self, statement: str, *multiparams: Any | tuple[Any, ...] | Mapping[str, Any], **params: Any) -> Any: ... - def connect(self, close_with_result: bool = False) -> Connection: ... # type: ignore[override] - def table_names(self, schema: Incomplete | None = None, connection: Connection | None = None): ... - def has_table(self, table_name: str, schema: Incomplete | None = None) -> bool: ... - def raw_connection(self, _connection: Connection | None = None) -> DBAPIConnection: ... - -class OptionEngineMixin: - url: URL - dialect: Dialect - logging_name: str - echo: bool - hide_parameters: bool - dispatch: Any - def __init__(self, proxied, execution_options) -> None: ... - pool: Pool - -class OptionEngine(OptionEngineMixin, Engine): ... # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/characteristics.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/characteristics.pyi deleted file mode 100644 index 2833b4fd6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/characteristics.pyi +++ /dev/null @@ -1,16 +0,0 @@ -from abc import ABC, ABCMeta, abstractmethod - -class ConnectionCharacteristic(ABC, metaclass=ABCMeta): - transactional: bool - @abstractmethod - def reset_characteristic(self, dialect, dbapi_conn): ... - @abstractmethod - def set_characteristic(self, dialect, dbapi_conn, value): ... - @abstractmethod - def get_characteristic(self, dialect, dbapi_conn): ... - -class IsolationLevelCharacteristic(ConnectionCharacteristic): - transactional: bool - def reset_characteristic(self, dialect, dbapi_conn) -> None: ... - def set_characteristic(self, dialect, dbapi_conn, value) -> None: ... - def get_characteristic(self, dialect, dbapi_conn): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/create.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/create.pyi deleted file mode 100644 index ae20f2002..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/create.pyi +++ /dev/null @@ -1,22 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Mapping -from typing import Any, overload -from typing_extensions import Literal - -from ..future.engine import Engine as FutureEngine -from .base import Engine -from .mock import MockConnection -from .url import URL - -# Further kwargs are forwarded to the engine, dialect, or pool. -@overload -def create_engine(url: URL | str, *, strategy: Literal["mock"], **kwargs) -> MockConnection: ... # type: ignore[misc] -@overload -def create_engine( - url: URL | str, *, module: Incomplete | None = ..., enable_from_linting: bool = ..., future: Literal[True], **kwargs -) -> FutureEngine: ... -@overload -def create_engine( - url: URL | str, *, module: Incomplete | None = ..., enable_from_linting: bool = ..., future: Literal[False] = False, **kwargs -) -> Engine: ... -def engine_from_config(configuration: Mapping[str, Any], prefix: str = "sqlalchemy.", **kwargs) -> Engine: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi deleted file mode 100644 index c5e8f76fa..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/cursor.pyi +++ /dev/null @@ -1,133 +0,0 @@ -from _typeshed import Incomplete -from abc import ABCMeta -from typing import Any - -from ..sql.compiler import RM_NAME as RM_NAME, RM_OBJECTS as RM_OBJECTS, RM_RENDERED_NAME as RM_RENDERED_NAME, RM_TYPE as RM_TYPE -from ..util.langhelpers import memoized_property -from .result import Result, ResultMetaData -from .row import LegacyRow - -MD_INDEX: int -MD_RESULT_MAP_INDEX: int -MD_OBJECTS: int -MD_LOOKUP_KEY: int -MD_RENDERED_NAME: int -MD_PROCESSOR: int -MD_UNTRANSLATED: int - -class CursorResultMetaData(ResultMetaData): - returns_rows: bool - case_sensitive: Any - def __init__(self, parent, cursor_description) -> None: ... - -class LegacyCursorResultMetaData(CursorResultMetaData): ... - -class ResultFetchStrategy: - alternate_cursor_description: Any - def soft_close(self, result, dbapi_cursor) -> None: ... - def hard_close(self, result, dbapi_cursor) -> None: ... - def yield_per(self, result, dbapi_cursor, num) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = False) -> None: ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None) -> None: ... - def fetchall(self, result) -> None: ... - def handle_exception(self, result, dbapi_cursor, err) -> None: ... - -class NoCursorFetchStrategy(ResultFetchStrategy): - def soft_close(self, result, dbapi_cursor) -> None: ... - def hard_close(self, result, dbapi_cursor) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = False): ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None): ... - def fetchall(self, result, dbapi_cursor): ... - -class NoCursorDQLFetchStrategy(NoCursorFetchStrategy): ... -class NoCursorDMLFetchStrategy(NoCursorFetchStrategy): ... - -class CursorFetchStrategy(ResultFetchStrategy): - def soft_close(self, result, dbapi_cursor) -> None: ... - def hard_close(self, result, dbapi_cursor) -> None: ... - def handle_exception(self, result, dbapi_cursor, err) -> None: ... - def yield_per(self, result, dbapi_cursor, num) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = False): ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None): ... - def fetchall(self, result, dbapi_cursor): ... - -class BufferedRowCursorFetchStrategy(CursorFetchStrategy): - def __init__( - self, dbapi_cursor, execution_options, growth_factor: int = 5, initial_buffer: Incomplete | None = None - ) -> None: ... - @classmethod - def create(cls, result): ... - def yield_per(self, result, dbapi_cursor, num) -> None: ... - def soft_close(self, result, dbapi_cursor) -> None: ... - def hard_close(self, result, dbapi_cursor) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = False): ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None): ... - def fetchall(self, result, dbapi_cursor): ... - -class FullyBufferedCursorFetchStrategy(CursorFetchStrategy): - alternate_cursor_description: Any - def __init__( - self, dbapi_cursor, alternate_description: Incomplete | None = None, initial_buffer: Incomplete | None = None - ) -> None: ... - def yield_per(self, result, dbapi_cursor, num) -> None: ... - def soft_close(self, result, dbapi_cursor) -> None: ... - def hard_close(self, result, dbapi_cursor) -> None: ... - def fetchone(self, result, dbapi_cursor, hard_close: bool = False): ... - def fetchmany(self, result, dbapi_cursor, size: Incomplete | None = None): ... - def fetchall(self, result, dbapi_cursor): ... - -class _NoResultMetaData(ResultMetaData): - returns_rows: bool - @property - def keys(self) -> None: ... - -class _LegacyNoResultMetaData(_NoResultMetaData): - @property - def keys(self): ... - -class BaseCursorResult: - out_parameters: Any - closed: bool - context: Any - dialect: Any - cursor: Any - cursor_strategy: Any - connection: Any - def __init__(self, context, cursor_strategy, cursor_description): ... - @property - def inserted_primary_key_rows(self): ... - @property - def inserted_primary_key(self): ... - def last_updated_params(self): ... - def last_inserted_params(self): ... - @property - def returned_defaults_rows(self): ... - @property - def returned_defaults(self): ... - def lastrow_has_defaults(self): ... - def postfetch_cols(self): ... - def prefetch_cols(self): ... - def supports_sane_rowcount(self): ... - def supports_sane_multi_rowcount(self): ... - @memoized_property - def rowcount(self): ... - @property - def lastrowid(self): ... - @property - def returns_rows(self): ... - @property - def is_insert(self): ... - -class CursorResult(BaseCursorResult, Result): - def merge(self, *others): ... - def close(self) -> None: ... - -class LegacyCursorResult(CursorResult): - def close(self) -> None: ... - -ResultProxy = LegacyCursorResult - -class BufferedRowResultProxy(ResultProxy): ... -class FullyBufferedResultProxy(ResultProxy): ... -class BufferedColumnRow(LegacyRow, metaclass=ABCMeta): ... -class BufferedColumnResultProxy(ResultProxy): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi deleted file mode 100644 index 2bfb752ef..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/default.pyi +++ /dev/null @@ -1,222 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, ClassVar - -from ..sql import sqltypes -from ..util.langhelpers import memoized_property -from . import interfaces - -AUTOCOMMIT_REGEXP: Any -SERVER_SIDE_CURSOR_RE: Any -CACHE_HIT: Any -CACHE_MISS: Any -CACHING_DISABLED: Any -NO_CACHE_KEY: Any -NO_DIALECT_SUPPORT: Any - -class DefaultDialect(interfaces.Dialect): # type: ignore[misc] - execution_ctx_cls: ClassVar[type[interfaces.ExecutionContext]] - statement_compiler: Any - ddl_compiler: Any - type_compiler: Any - preparer: Any - supports_alter: bool - supports_comments: bool - inline_comments: bool - use_setinputsizes: bool - supports_statement_cache: bool - default_sequence_base: int - execute_sequence_format: Any - supports_schemas: bool - supports_views: bool - supports_sequences: bool - sequences_optional: bool - preexecute_autoincrement_sequences: bool - supports_identity_columns: bool - postfetch_lastrowid: bool - implicit_returning: bool - full_returning: bool - insert_executemany_returning: bool - cte_follows_insert: bool - supports_native_enum: bool - supports_native_boolean: bool - non_native_boolean_check_constraint: bool - supports_simple_order_by_label: bool - tuple_in_values: bool - connection_characteristics: Any - engine_config_types: Any - supports_native_decimal: bool - supports_unicode_statements: bool - supports_unicode_binds: bool - returns_unicode_strings: Any - description_encoding: Any - name: str - max_identifier_length: int - isolation_level: Any - max_index_name_length: Any - max_constraint_name_length: Any - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - colspecs: Any - default_paramstyle: str - supports_default_values: bool - supports_default_metavalue: bool - supports_empty_insert: bool - supports_multivalues_insert: bool - supports_is_distinct_from: bool - supports_server_side_cursors: bool - server_side_cursors: bool - supports_for_update_of: bool - server_version_info: Any - default_schema_name: Any - construct_arguments: Any - requires_name_normalize: bool - reflection_options: Any - dbapi_exception_translation_map: Any - is_async: bool - CACHE_HIT: Any - CACHE_MISS: Any - CACHING_DISABLED: Any - NO_CACHE_KEY: Any - NO_DIALECT_SUPPORT: Any - has_terminate: bool - convert_unicode: Any - encoding: Any - positional: bool - dbapi: Any - paramstyle: Any - identifier_preparer: Any - case_sensitive: Any - label_length: Any - compiler_linting: Any - def __init__( - self, - convert_unicode: bool = False, - encoding: str = "utf-8", - paramstyle: Incomplete | None = None, - dbapi: Incomplete | None = None, - implicit_returning: Incomplete | None = None, - case_sensitive: bool = True, - supports_native_boolean: Incomplete | None = None, - max_identifier_length: Incomplete | None = None, - label_length: Incomplete | None = None, - compiler_linting=0, - server_side_cursors: bool = False, - **kwargs, - ) -> None: ... - @property - def dialect_description(self): ... - @property - def supports_sane_rowcount_returning(self): ... - @classmethod - def get_pool_class(cls, url): ... - def get_dialect_pool_class(self, url): ... - @classmethod - def load_provisioning(cls) -> None: ... - default_isolation_level: Any - def initialize(self, connection) -> None: ... - def on_connect(self) -> None: ... - def get_default_isolation_level(self, dbapi_conn): ... - def type_descriptor(self, typeobj): ... - def has_index(self, connection, table_name, index_name, schema: Incomplete | None = None): ... - def validate_identifier(self, ident) -> None: ... - def connect(self, *cargs, **cparams): ... - def create_connect_args(self, url): ... - def set_engine_execution_options(self, engine, opts) -> None: ... - def set_connection_execution_options(self, connection, opts) -> None: ... - def do_begin(self, dbapi_connection) -> None: ... - def do_rollback(self, dbapi_connection) -> None: ... - def do_commit(self, dbapi_connection) -> None: ... - def do_close(self, dbapi_connection) -> None: ... - def do_ping(self, dbapi_connection): ... - def create_xid(self): ... - def do_savepoint(self, connection, name) -> None: ... - def do_rollback_to_savepoint(self, connection, name) -> None: ... - def do_release_savepoint(self, connection, name) -> None: ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def do_execute_no_params(self, cursor, statement, context: Incomplete | None = None) -> None: ... # type: ignore[override] - def is_disconnect(self, e, connection, cursor): ... - def reset_isolation_level(self, dbapi_conn) -> None: ... - def normalize_name(self, name): ... - def denormalize_name(self, name): ... - def get_driver_connection(self, connection): ... - -class _RendersLiteral: - def literal_processor(self, dialect): ... - -class _StrDateTime(_RendersLiteral, sqltypes.DateTime): ... -class _StrDate(_RendersLiteral, sqltypes.Date): ... -class _StrTime(_RendersLiteral, sqltypes.Time): ... - -class StrCompileDialect(DefaultDialect): # type: ignore[misc] - statement_compiler: Any - ddl_compiler: Any - type_compiler: Any - preparer: Any - supports_statement_cache: bool - supports_identity_columns: bool - supports_sequences: bool - sequences_optional: bool - preexecute_autoincrement_sequences: bool - implicit_returning: bool - supports_native_boolean: bool - supports_multivalues_insert: bool - supports_simple_order_by_label: bool - colspecs: Any - -class DefaultExecutionContext(interfaces.ExecutionContext): - isinsert: bool - isupdate: bool - isdelete: bool - is_crud: bool - is_text: bool - isddl: bool - executemany: bool - compiled: Any - statement: Any - result_column_struct: Any - returned_default_rows: Any - execution_options: Any - include_set_input_sizes: Any - exclude_set_input_sizes: Any - cursor_fetch_strategy: Any - cache_stats: Any - invoked_statement: Any - cache_hit: Any - @memoized_property - def identifier_preparer(self): ... - @memoized_property - def engine(self): ... - @memoized_property - def postfetch_cols(self): ... - @memoized_property - def prefetch_cols(self): ... - @memoized_property - def returning_cols(self) -> None: ... - @memoized_property - def no_parameters(self): ... - @memoized_property - def should_autocommit(self): ... - @property - def connection(self): ... - def should_autocommit_text(self, statement): ... - def create_cursor(self): ... - def create_default_cursor(self): ... - def create_server_side_cursor(self) -> None: ... - def pre_exec(self) -> None: ... - def get_out_parameter_values(self, names) -> None: ... - def post_exec(self) -> None: ... - def get_result_processor(self, type_, colname, coltype): ... - def get_lastrowid(self): ... - def handle_dbapi_exception(self, e) -> None: ... - @property - def rowcount(self): ... - def supports_sane_rowcount(self): ... - def supports_sane_multi_rowcount(self): ... - @memoized_property - def inserted_primary_key_rows(self): ... - def lastrow_has_defaults(self): ... - current_parameters: Any - def get_current_parameters(self, isolate_multiinsert_groups: bool = True): ... - def get_insert_default(self, column): ... - def get_update_default(self, column): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/events.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/events.pyi deleted file mode 100644 index 7cca8b27c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/events.pyi +++ /dev/null @@ -1,29 +0,0 @@ -from .. import event as event - -class ConnectionEvents(event.Events): - def before_execute(self, conn, clauseelement, multiparams, params, execution_options) -> None: ... - def after_execute(self, conn, clauseelement, multiparams, params, execution_options, result) -> None: ... - def before_cursor_execute(self, conn, cursor, statement, parameters, context, executemany) -> None: ... - def after_cursor_execute(self, conn, cursor, statement, parameters, context, executemany) -> None: ... - def handle_error(self, exception_context) -> None: ... - def engine_connect(self, conn, branch) -> None: ... - def set_connection_execution_options(self, conn, opts) -> None: ... - def set_engine_execution_options(self, engine, opts) -> None: ... - def engine_disposed(self, engine) -> None: ... - def begin(self, conn) -> None: ... - def rollback(self, conn) -> None: ... - def commit(self, conn) -> None: ... - def savepoint(self, conn, name) -> None: ... - def rollback_savepoint(self, conn, name, context) -> None: ... - def release_savepoint(self, conn, name, context) -> None: ... - def begin_twophase(self, conn, xid) -> None: ... - def prepare_twophase(self, conn, xid) -> None: ... - def rollback_twophase(self, conn, xid, is_prepared) -> None: ... - def commit_twophase(self, conn, xid, is_prepared) -> None: ... - -class DialectEvents(event.Events): - def do_connect(self, dialect, conn_rec, cargs, cparams) -> None: ... - def do_executemany(self, cursor, statement, parameters, context) -> None: ... - def do_execute_no_params(self, cursor, statement, context) -> None: ... - def do_execute(self, cursor, statement, parameters, context) -> None: ... - def do_setinputsizes(self, inputsizes, cursor, statement, parameters, context) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi deleted file mode 100644 index 714002b31..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/interfaces.pyi +++ /dev/null @@ -1,170 +0,0 @@ -from _typeshed import Incomplete -from _typeshed.dbapi import DBAPIConnection, DBAPICursor -from abc import abstractmethod -from collections.abc import Callable, Collection, Mapping -from typing import Any, ClassVar, overload - -from ..exc import StatementError -from ..sql.compiler import Compiled as Compiled, IdentifierPreparer, TypeCompiler as TypeCompiler -from ..sql.ddl import DDLElement -from ..sql.elements import ClauseElement -from ..sql.functions import FunctionElement -from ..sql.schema import DefaultGenerator -from .base import Connection, Engine -from .cursor import CursorResult -from .url import URL - -class Dialect: - # Sub-classes are required to have the following attributes: - name: str - driver: str - positional: bool - paramstyle: str - encoding: str - statement_compiler: Compiled - ddl_compiler: Compiled - server_version_info: tuple[Any, ...] - # Only available on supporting dialects: - # default_schema_name: str - execution_ctx_cls: ClassVar[type[ExecutionContext]] - execute_sequence_format: type[tuple[Any] | list[Any]] - preparer: IdentifierPreparer - supports_alter: bool - max_identifier_length: int - supports_sane_rowcount: bool - supports_sane_multi_rowcount: bool - preexecute_autoincrement_sequences: bool - implicit_returning: bool - colspecs: dict[Any, Any] - supports_default_values: bool - supports_sequences: bool - sequences_optional: bool - supports_native_enum: bool - supports_native_boolean: bool - dbapi_exception_translation_map: dict[Any, Any] - supports_statement_cache: bool - dispatch: Incomplete - @abstractmethod - def create_connect_args(self, url: URL) -> None: ... - def initialize(self, connection) -> None: ... - def on_connect_url(self, url) -> Callable[[DBAPIConnection], object] | None: ... - def on_connect(self) -> Callable[[DBAPIConnection], object] | None: ... - # The following methods all raise NotImplementedError, but not all - # dialects implement all methods, which is why they can't be marked - # as abstract. - @classmethod - def type_descriptor(cls, typeobj) -> None: ... - def get_columns(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... - def get_pk_constraint(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... - def get_foreign_keys(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... - def get_table_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... - def get_temp_table_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... - def get_view_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... - def get_sequence_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... - def get_temp_view_names(self, connection, schema: Incomplete | None = None, **kw) -> None: ... - def get_view_definition(self, connection, view_name, schema: Incomplete | None = None, **kw) -> None: ... - def get_indexes(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... - def get_unique_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... - def get_check_constraints(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... - def get_table_comment(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... - def normalize_name(self, name) -> None: ... - def denormalize_name(self, name) -> None: ... - def has_table(self, connection, table_name, schema: Incomplete | None = None, **kw) -> None: ... - def has_index(self, connection, table_name, index_name, schema: Incomplete | None = None) -> None: ... - def has_sequence(self, connection, sequence_name, schema: Incomplete | None = None, **kw) -> None: ... - def do_begin(self, dbapi_connection) -> None: ... - def do_rollback(self, dbapi_connection) -> None: ... - def do_commit(self, dbapi_connection) -> None: ... - def do_terminate(self, dbapi_connection) -> None: ... - def do_close(self, dbapi_connection) -> None: ... - def do_set_input_sizes(self, cursor, list_of_tuples, context) -> None: ... - def create_xid(self) -> None: ... - def do_savepoint(self, connection, name) -> None: ... - def do_rollback_to_savepoint(self, connection, name) -> None: ... - def do_release_savepoint(self, connection, name) -> None: ... - def do_begin_twophase(self, connection, xid) -> None: ... - def do_prepare_twophase(self, connection, xid) -> None: ... - def do_rollback_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_commit_twophase(self, connection, xid, is_prepared: bool = True, recover: bool = False) -> None: ... - def do_recover_twophase(self, connection) -> None: ... - def do_executemany(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def do_execute(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def do_execute_no_params(self, cursor, statement, parameters, context: Incomplete | None = None) -> None: ... - def is_disconnect(self, e, connection, cursor) -> None: ... - def connect(self, *cargs, **cparams) -> DBAPIConnection: ... - def reset_isolation_level(self, dbapi_conn) -> None: ... - def set_isolation_level(self, dbapi_conn, level) -> None: ... - def get_isolation_level(self, dbapi_conn) -> None: ... - def get_default_isolation_level(self, dbapi_conn) -> None: ... - @classmethod - def get_dialect_cls(cls, url): ... - @classmethod - def load_provisioning(cls) -> None: ... - @classmethod - def engine_created(cls, engine) -> None: ... - def get_driver_connection(self, connection) -> None: ... - -class CreateEnginePlugin: - url: URL - def __init__(self, url: URL, kwargs) -> None: ... - def update_url(self, url) -> None: ... - def handle_dialect_kwargs(self, dialect_cls, dialect_args) -> None: ... - def handle_pool_kwargs(self, pool_cls, pool_args) -> None: ... - def engine_created(self, engine) -> None: ... - -class ExecutionContext: - def create_cursor(self) -> None: ... - def pre_exec(self) -> None: ... - def get_out_parameter_values(self, out_param_names) -> None: ... - def post_exec(self) -> None: ... - def handle_dbapi_exception(self, e) -> None: ... - def should_autocommit_text(self, statement) -> None: ... - def lastrow_has_defaults(self) -> None: ... - def get_rowcount(self) -> None: ... - -class Connectable: - dispatch: Incomplete - @abstractmethod - def connect(self, **kwargs) -> Connection: ... - @property - def engine(self) -> Engine | None: ... - @abstractmethod - @overload - def execute( - self, - object_: ClauseElement | FunctionElement | DDLElement | DefaultGenerator | Compiled, - *multiparams: Mapping[str, Any], - **params: Any, - ) -> CursorResult: ... - @abstractmethod - @overload - def execute(self, object_: str, *multiparams: Any | tuple[Any, ...] | Mapping[str, Any], **params: Any) -> CursorResult: ... - @abstractmethod - @overload - def scalar( - self, - object_: ClauseElement | FunctionElement | DDLElement | DefaultGenerator | Compiled, - *multiparams: Mapping[str, Any], - **params: Any, - ) -> Any: ... - @abstractmethod - @overload - def scalar(self, object_: str, *multiparams: Any | tuple[Any, ...] | Mapping[str, Any], **params: Any) -> Any: ... - -class ExceptionContext: - connection: Connection | None - engine: Engine | None - cursor: DBAPICursor | None - statement: str | None - parameters: Collection[Any] | None - original_exception: BaseException | None - sqlalchemy_exception: StatementError | None - chained_exception: BaseException | None - execution_context: ExecutionContext | None - is_disconnect: bool | None - invalidate_pool_on_disconnect: bool - -class AdaptedConnection: - @property - def driver_connection(self): ... - def run_async(self, fn): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/mock.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/mock.pyi deleted file mode 100644 index bfd800725..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/mock.pyi +++ /dev/null @@ -1,32 +0,0 @@ -from abc import abstractmethod -from collections.abc import Mapping -from typing import Any, overload -from typing_extensions import Self - -from .base import _Executable -from .cursor import CursorResult -from .interfaces import Connectable, Dialect -from .url import URL - -class MockConnection(Connectable): - def __init__(self, dialect: Dialect, execute) -> None: ... - @property - def engine(self) -> Self: ... # type: ignore[override] - @property - def dialect(self) -> Dialect: ... - @property - def name(self) -> str: ... - def schema_for_object(self, obj): ... - def connect(self, **kwargs): ... - def execution_options(self, **kw): ... - def compiler(self, statement, parameters, **kwargs): ... - def create(self, entity, **kwargs) -> None: ... - def drop(self, entity, **kwargs) -> None: ... - @abstractmethod - @overload - def execute(self, object_: _Executable, *multiparams: Mapping[str, Any], **params: Any) -> CursorResult: ... - @abstractmethod - @overload - def execute(self, object_: str, *multiparams: Any | tuple[Any, ...] | Mapping[str, Any], **params: Any) -> CursorResult: ... - -def create_mock_engine(url: URL | str, executor, **kw) -> MockConnection: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/reflection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/reflection.pyi deleted file mode 100644 index 242cf7868..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/reflection.pyi +++ /dev/null @@ -1,32 +0,0 @@ -from _typeshed import Incomplete - -def cache(fn, self, con, *args, **kw): ... - -class Inspector: - def __init__(self, bind): ... - @classmethod - def from_engine(cls, bind): ... - @property - def default_schema_name(self): ... - def get_schema_names(self): ... - def get_table_names(self, schema: Incomplete | None = None): ... - def has_table(self, table_name, schema: Incomplete | None = None): ... - def has_sequence(self, sequence_name, schema: Incomplete | None = None): ... - def get_sorted_table_and_fkc_names(self, schema: Incomplete | None = None): ... - def get_temp_table_names(self): ... - def get_temp_view_names(self): ... - def get_table_options(self, table_name, schema: Incomplete | None = None, **kw): ... - def get_view_names(self, schema: Incomplete | None = None): ... - def get_sequence_names(self, schema: Incomplete | None = None): ... - def get_view_definition(self, view_name, schema: Incomplete | None = None): ... - def get_columns(self, table_name, schema: Incomplete | None = None, **kw): ... - def get_pk_constraint(self, table_name, schema: Incomplete | None = None, **kw): ... - def get_foreign_keys(self, table_name, schema: Incomplete | None = None, **kw): ... - def get_indexes(self, table_name, schema: Incomplete | None = None, **kw): ... - def get_unique_constraints(self, table_name, schema: Incomplete | None = None, **kw): ... - def get_table_comment(self, table_name, schema: Incomplete | None = None, **kw): ... - def get_check_constraints(self, table_name, schema: Incomplete | None = None, **kw): ... - def reflecttable(self, *args, **kwargs): ... - def reflect_table( - self, table, include_columns, exclude_columns=(), resolve_fks: bool = True, _extend_on: Incomplete | None = None - ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi deleted file mode 100644 index e684e8ba6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/result.pyi +++ /dev/null @@ -1,134 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Generator, KeysView -from typing import Any -from typing_extensions import Self - -from ..sql.base import InPlaceGenerative -from .row import Row - -class ResultMetaData: - @property - def keys(self): ... - -class RMKeyView(KeysView[Any]): - def __init__(self, parent) -> None: ... - def __len__(self) -> int: ... - def __iter__(self): ... - def __contains__(self, item): ... - def __eq__(self, other): ... - def __ne__(self, other): ... - -class SimpleResultMetaData(ResultMetaData): - def __init__( - self, - keys, - extra: Incomplete | None = None, - _processors: Incomplete | None = None, - _tuplefilter: Incomplete | None = None, - _translated_indexes: Incomplete | None = None, - _unique_filters: Incomplete | None = None, - ) -> None: ... - -def result_tuple(fields, extra: Incomplete | None = None): ... - -class ResultInternal(InPlaceGenerative): ... - -class _WithKeys: - def keys(self): ... - -class Result(_WithKeys, ResultInternal): - def __init__(self, cursor_metadata) -> None: ... - def close(self) -> None: ... - @property - def closed(self): ... - def yield_per(self, num: int) -> Self: ... - def unique(self, strategy: Incomplete | None = None) -> Self: ... - def columns(self, *col_expressions): ... - def scalars(self, index: int = 0) -> ScalarResult: ... - def mappings(self) -> MappingResult: ... - def __iter__(self): ... - def __next__(self): ... - def partitions(self, size: int | None = None) -> Generator[list[Row], None, None]: ... - def fetchall(self) -> list[Row]: ... - def fetchone(self) -> Row | None: ... - def fetchmany(self, size: int | None = None) -> list[Row]: ... - def all(self) -> list[Row]: ... - def first(self) -> Row | None: ... - def one_or_none(self) -> Row | None: ... - def scalar_one(self) -> Any: ... - def scalar_one_or_none(self) -> Any | None: ... - def one(self) -> Row: ... - def scalar(self) -> Any | None: ... - def freeze(self) -> FrozenResult: ... - def merge(self, *others) -> MergedResult: ... - -class FilterResult(ResultInternal): - def yield_per(self: Self, num) -> Self: ... - @property - def closed(self): ... - def close(self) -> None: ... - -class ScalarResult(FilterResult): - def __init__(self, real_result, index) -> None: ... - def unique(self, strategy: Incomplete | None = None): ... - def partitions(self, size: Incomplete | None = None) -> None: ... - def fetchall(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def all(self): ... - def __iter__(self): ... - def __next__(self): ... - def first(self): ... - def one_or_none(self): ... - def one(self): ... - -class MappingResult(_WithKeys, FilterResult): - def __init__(self, result) -> None: ... - def unique(self, strategy: Incomplete | None = None): ... - def columns(self, *col_expressions): ... - def partitions(self, size: Incomplete | None = None) -> None: ... - def fetchall(self): ... - def fetchone(self): ... - def fetchmany(self, size: Incomplete | None = None): ... - def all(self): ... - def __iter__(self): ... - def __next__(self): ... - def first(self): ... - def one_or_none(self): ... - def one(self): ... - -class FrozenResult: - metadata: Any - data: Any - def __init__(self, result) -> None: ... - def rewrite_rows(self): ... - def with_new_rows(self, tuple_data): ... - def __call__(self): ... - -class IteratorResult(Result): - iterator: Any - raw: Any - def __init__( - self, cursor_metadata, iterator, raw: Incomplete | None = None, _source_supports_scalars: bool = False - ) -> None: ... - @property - def closed(self): ... - -def null_result() -> IteratorResult: ... - -class ChunkedIteratorResult(IteratorResult): - chunks: Any - raw: Any - iterator: Any - dynamic_yield_per: Any - def __init__( - self, - cursor_metadata, - chunks, - source_supports_scalars: bool = False, - raw: Incomplete | None = None, - dynamic_yield_per: bool = False, - ) -> None: ... - -class MergedResult(IteratorResult): - closed: bool - def __init__(self, cursor_metadata, results) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/row.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/row.pyi deleted file mode 100644 index ccc6f336e..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/row.pyi +++ /dev/null @@ -1,63 +0,0 @@ -from abc import ABCMeta -from collections.abc import ItemsView, Iterator, KeysView, Mapping, Sequence, ValuesView -from typing import Any, Generic, TypeVar - -from ..cresultproxy import BaseRow as BaseRow - -_VT_co = TypeVar("_VT_co", covariant=True) - -MD_INDEX: int - -def rowproxy_reconstructor(cls, state): ... - -KEY_INTEGER_ONLY: int -KEY_OBJECTS_ONLY: int -KEY_OBJECTS_BUT_WARN: int -KEY_OBJECTS_NO_WARN: int - -class Row(BaseRow, Sequence[Any], metaclass=ABCMeta): - # The count and index methods are inherited from Sequence. - # If the result set contains columns with the same names, these - # fields contains their respective values, instead. We don't reflect - # this in the stubs. - __hash__ = BaseRow.__hash__ # type: ignore[assignment] - def __lt__(self, other: Row | tuple[Any, ...]) -> bool: ... - def __le__(self, other: Row | tuple[Any, ...]) -> bool: ... - def __ge__(self, other: Row | tuple[Any, ...]) -> bool: ... - def __gt__(self, other: Row | tuple[Any, ...]) -> bool: ... - def __eq__(self, other: object) -> bool: ... - def __ne__(self, other: object) -> bool: ... - def keys(self) -> list[str]: ... - def __contains__(self, key): ... - # The following methods are public, but have a leading underscore - # to prevent conflicts with column names. - @property - def _mapping(self) -> RowMapping: ... - @property - def _fields(self) -> tuple[str, ...]: ... - def _asdict(self) -> dict[str, Any]: ... - -class LegacyRow(Row, metaclass=ABCMeta): - def has_key(self, key: str) -> bool: ... - def items(self) -> list[tuple[str, Any]]: ... - def iterkeys(self) -> Iterator[str]: ... - def itervalues(self) -> Iterator[Any]: ... - def values(self) -> list[Any]: ... - -BaseRowProxy = BaseRow -RowProxy = Row - -class ROMappingView(KeysView[str], ValuesView[_VT_co], ItemsView[str, _VT_co], Generic[_VT_co]): # type: ignore[misc] - def __init__(self, mapping: RowMapping, items: list[_VT_co]) -> None: ... - def __len__(self) -> int: ... - def __iter__(self) -> Iterator[_VT_co]: ... # type: ignore[override] - def __eq__(self, other: ROMappingView[_VT_co]) -> bool: ... # type: ignore[override] - def __ne__(self, other: ROMappingView[_VT_co]) -> bool: ... # type: ignore[override] - -class RowMapping(BaseRow, Mapping[str, Row]): - __getitem__: Any - def __iter__(self) -> Iterator[str]: ... - def __len__(self) -> int: ... - def items(self) -> ROMappingView[tuple[str, Any]]: ... # type: ignore[override] - def keys(self) -> list[str]: ... # type: ignore[override] - def values(self) -> ROMappingView[Any]: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/strategies.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/strategies.pyi deleted file mode 100644 index 25239d17b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/strategies.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from typing import Any - -class MockEngineStrategy: - MockConnection: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi deleted file mode 100644 index 7a5b30789..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/url.pyi +++ /dev/null @@ -1,65 +0,0 @@ -from _typeshed import SupportsItems, Unused -from collections.abc import Iterable, Mapping, Sequence -from typing import Any, NamedTuple -from typing_extensions import Self, TypeAlias - -from ..util import immutabledict -from .interfaces import Dialect - -# object that produces a password when called with str() -_PasswordObject: TypeAlias = object - -# stub-only helper class -class _URLTuple(NamedTuple): - drivername: str - username: str | None - password: str | _PasswordObject | None - host: str | None - port: int | None - database: str | None - query: immutabledict[str, str | tuple[str, ...]] - -_Query: TypeAlias = Mapping[str, str | Sequence[str]] | Sequence[tuple[str, str | Sequence[str]]] - -class URL(_URLTuple): - def __new__(self, *arg, **kw) -> Self | URL: ... - @classmethod - def create( - cls, - drivername: str, - username: str | None = None, - password: str | _PasswordObject | None = None, - host: str | None = None, - port: int | None = None, - database: str | None = None, - query: _Query | None = ..., - ) -> URL: ... - def set( - self, - drivername: str | None = None, - username: str | None = None, - password: str | _PasswordObject | None = None, - host: str | None = None, - port: int | None = None, - database: str | None = None, - query: _Query | None = None, - ) -> Self: ... - def update_query_string(self, query_string: str, append: bool = False) -> Self: ... - def update_query_pairs(self, key_value_pairs: Iterable[tuple[str, str]], append: bool = False) -> Self: ... - def update_query_dict(self, query_parameters: SupportsItems[str, str | Sequence[str]], append: bool = False) -> Self: ... - def difference_update_query(self, names: Iterable[str]) -> URL: ... - @property - def normalized_query(self) -> immutabledict[str, tuple[str, ...]]: ... - def __to_string__(self, hide_password: bool = True) -> str: ... - def render_as_string(self, hide_password: bool = True) -> str: ... - def __copy__(self) -> Self: ... - def __deepcopy__(self, memo: Unused) -> Self: ... - def __hash__(self) -> int: ... - def __eq__(self, other: object) -> bool: ... - def __ne__(self, other: object) -> bool: ... - def get_backend_name(self) -> str: ... - def get_driver_name(self) -> str: ... - def get_dialect(self) -> type[Dialect]: ... - def translate_connect_args(self, names: list[str] | None = None, **kw: str) -> dict[str, Any]: ... - -def make_url(name_or_url: str | URL) -> URL: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/util.pyi deleted file mode 100644 index 0fdef7435..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/engine/util.pyi +++ /dev/null @@ -1,12 +0,0 @@ -from collections.abc import Callable -from types import TracebackType -from typing import Any -from typing_extensions import Self - -def connection_memoize(key: str) -> Callable[..., Any]: ... - -class TransactionalContext: - def __enter__(self) -> Self: ... - def __exit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/__init__.pyi deleted file mode 100644 index a0b0fcea8..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/__init__.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from .api import ( - CANCEL as CANCEL, - NO_RETVAL as NO_RETVAL, - contains as contains, - listen as listen, - listens_for as listens_for, - remove as remove, -) -from .attr import RefCollection as RefCollection -from .base import Events as Events, dispatcher as dispatcher diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/api.pyi deleted file mode 100644 index bea12af06..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/api.pyi +++ /dev/null @@ -1,9 +0,0 @@ -from typing import Any - -CANCEL: Any -NO_RETVAL: Any - -def listen(target, identifier, fn, *args, **kw) -> None: ... -def listens_for(target, identifier, *args, **kw): ... -def remove(target, identifier, fn) -> None: ... -def contains(target, identifier, fn): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/attr.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/attr.pyi deleted file mode 100644 index 5f03e16bc..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/attr.pyi +++ /dev/null @@ -1,85 +0,0 @@ -from typing import Any - -from .. import util - -class RefCollection(util.MemoizedSlots): - ref: Any - -class _empty_collection: - def append(self, element) -> None: ... - def extend(self, other) -> None: ... - def remove(self, element) -> None: ... - def __iter__(self): ... - def clear(self) -> None: ... - -class _ClsLevelDispatch(RefCollection): - name: Any - clsname: Any - arg_names: Any - has_kw: Any - legacy_signatures: Any - def __init__(self, parent_dispatch_cls, fn): ... - def insert(self, event_key, propagate) -> None: ... - def append(self, event_key, propagate) -> None: ... - def update_subclass(self, target) -> None: ... - def remove(self, event_key) -> None: ... - def clear(self) -> None: ... - def for_modify(self, obj): ... - -class _InstanceLevelDispatch(RefCollection): ... - -class _EmptyListener(_InstanceLevelDispatch): - propagate: Any - listeners: Any - parent: Any - parent_listeners: Any - name: Any - def __init__(self, parent, target_cls) -> None: ... - def for_modify(self, obj): ... - exec_once: Any - exec_once_unless_exception: Any - insert: Any - append: Any - remove: Any - clear: Any - def __call__(self, *args, **kw) -> None: ... - def __len__(self) -> int: ... - def __iter__(self): ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - -class _CompoundListener(_InstanceLevelDispatch): - def exec_once(self, *args, **kw) -> None: ... - def exec_once_unless_exception(self, *args, **kw) -> None: ... - def __call__(self, *args, **kw) -> None: ... - def __len__(self) -> int: ... - def __iter__(self): ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - -class _ListenerCollection(_CompoundListener): - parent_listeners: Any - parent: Any - name: Any - listeners: Any - propagate: Any - def __init__(self, parent, target_cls) -> None: ... - def for_modify(self, obj): ... - def insert(self, event_key, propagate) -> None: ... - def append(self, event_key, propagate) -> None: ... - def remove(self, event_key) -> None: ... - def clear(self) -> None: ... - -class _JoinedListener(_CompoundListener): - parent: Any - name: Any - local: Any - parent_listeners: Any - def __init__(self, parent, name, local) -> None: ... - @property - def listeners(self): ... - def for_modify(self, obj): ... - def insert(self, event_key, propagate) -> None: ... - def append(self, event_key, propagate) -> None: ... - def remove(self, event_key) -> None: ... - def clear(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi deleted file mode 100644 index d36703331..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/base.pyi +++ /dev/null @@ -1,31 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -class _UnpickleDispatch: - def __call__(self, _instance_cls): ... - -class _Dispatch: - def __init__(self, parent, instance_cls: Incomplete | None = None) -> None: ... - def __getattr__(self, name: str): ... - def __reduce__(self): ... - -class _EventMeta(type): - def __init__(cls, classname, bases, dict_) -> None: ... - -class Events(metaclass=_EventMeta): - dispatch: Any - -class _JoinedDispatcher: - local: Any - parent: Any - def __init__(self, local, parent) -> None: ... - def __getattr__(self, name: str): ... - -class dispatcher: - dispatch: Any - events: Any - def __init__(self, events) -> None: ... - def __get__(self, obj, cls): ... - -class slots_dispatcher(dispatcher): - def __get__(self, obj, cls): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/legacy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/legacy.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/registry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/registry.pyi deleted file mode 100644 index 616d3d784..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/event/registry.pyi +++ /dev/null @@ -1,27 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -class _EventKey: - target: Any - identifier: Any - fn: Any - fn_key: Any - fn_wrap: Any - dispatch_target: Any - def __init__(self, target, identifier, fn, dispatch_target, _fn_wrap: Incomplete | None = None) -> None: ... - def with_wrapper(self, fn_wrap): ... - def with_dispatch_target(self, dispatch_target): ... - def listen(self, *args, **kw) -> None: ... - def remove(self) -> None: ... - def contains(self): ... - def base_listen( - self, - propagate: bool = False, - insert: bool = False, - named: bool = False, - retval: Incomplete | None = None, - asyncio: bool = False, - ) -> None: ... - def append_to_list(self, owner, list_): ... - def remove_from_list(self, owner, list_) -> None: ... - def prepend_to_list(self, owner, list_): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/events.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/events.pyi deleted file mode 100644 index 8bbbfa58d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/events.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from .engine.events import ConnectionEvents as ConnectionEvents, DialectEvents as DialectEvents -from .pool.events import PoolEvents as PoolEvents -from .sql.base import SchemaEventTarget as SchemaEventTarget -from .sql.events import DDLEvents as DDLEvents diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/exc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/exc.pyi deleted file mode 100644 index 876de1270..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/exc.pyi +++ /dev/null @@ -1,147 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, ClassVar - -class HasDescriptionCode: - code: str | None - def __init__(self, *arg: Any, code: str | None = ..., **kw: Any) -> None: ... - -class SQLAlchemyError(HasDescriptionCode, Exception): - def __unicode__(self) -> str: ... - -class ArgumentError(SQLAlchemyError): ... - -class ObjectNotExecutableError(ArgumentError): - target: Any - def __init__(self, target) -> None: ... - def __reduce__(self): ... - -class NoSuchModuleError(ArgumentError): ... -class NoForeignKeysError(ArgumentError): ... -class AmbiguousForeignKeysError(ArgumentError): ... - -class CircularDependencyError(SQLAlchemyError): - cycles: Any - edges: Any - def __init__(self, message, cycles, edges, msg: Incomplete | None = None, code: Incomplete | None = None) -> None: ... - def __reduce__(self): ... - -class CompileError(SQLAlchemyError): ... - -class UnsupportedCompilationError(CompileError): - code: str - compiler: Any - element_type: Any - message: str | None - def __init__(self, compiler, element_type, message: str | None = None) -> None: ... - def __reduce__(self): ... - -class IdentifierError(SQLAlchemyError): ... - -class DisconnectionError(SQLAlchemyError): - invalidate_pool: bool - -class InvalidatePoolError(DisconnectionError): - invalidate_pool: bool - -class TimeoutError(SQLAlchemyError): ... -class InvalidRequestError(SQLAlchemyError): ... -class NoInspectionAvailable(InvalidRequestError): ... -class PendingRollbackError(InvalidRequestError): ... -class ResourceClosedError(InvalidRequestError): ... -class NoSuchColumnError(InvalidRequestError, KeyError): ... -class NoResultFound(InvalidRequestError): ... -class MultipleResultsFound(InvalidRequestError): ... -class NoReferenceError(InvalidRequestError): ... - -class AwaitRequired(InvalidRequestError): - code: str - -class MissingGreenlet(InvalidRequestError): - code: str - -class NoReferencedTableError(NoReferenceError): - table_name: Any - def __init__(self, message, tname) -> None: ... - def __reduce__(self): ... - -class NoReferencedColumnError(NoReferenceError): - table_name: Any - column_name: Any - def __init__(self, message, tname, cname) -> None: ... - def __reduce__(self): ... - -class NoSuchTableError(InvalidRequestError): ... -class UnreflectableTableError(InvalidRequestError): ... -class UnboundExecutionError(InvalidRequestError): ... -class DontWrapMixin: ... - -class StatementError(SQLAlchemyError): - statement: Any - params: Any - orig: Any - ismulti: Any - hide_parameters: Any - detail: Any - def __init__( - self, - message, - statement, - params, - orig, - hide_parameters: bool = False, - code: Incomplete | None = None, - ismulti: Incomplete | None = None, - ) -> None: ... - def add_detail(self, msg) -> None: ... - def __reduce__(self): ... - -class DBAPIError(StatementError): - code: str - @classmethod - def instance( - cls, - statement, - params, - orig, - dbapi_base_err, - hide_parameters: bool = False, - connection_invalidated: bool = False, - dialect: Incomplete | None = None, - ismulti: Incomplete | None = None, - ): ... - def __reduce__(self): ... - connection_invalidated: Any - def __init__( - self, - statement, - params, - orig, - hide_parameters: bool = False, - connection_invalidated: bool = False, - code: Incomplete | None = None, - ismulti: Incomplete | None = None, - ) -> None: ... - -class InterfaceError(DBAPIError): ... -class DatabaseError(DBAPIError): ... -class DataError(DatabaseError): ... -class OperationalError(DatabaseError): ... -class IntegrityError(DatabaseError): ... -class InternalError(DatabaseError): ... -class ProgrammingError(DatabaseError): ... -class NotSupportedError(DatabaseError): ... - -class SADeprecationWarning(HasDescriptionCode, DeprecationWarning): - deprecated_since: ClassVar[str | None] - -class Base20DeprecationWarning(SADeprecationWarning): - deprecated_since: ClassVar[str] - -class LegacyAPIWarning(Base20DeprecationWarning): ... -class RemovedIn20Warning(Base20DeprecationWarning): ... -class MovedIn20Warning(RemovedIn20Warning): ... - -class SAPendingDeprecationWarning(PendingDeprecationWarning): - deprecated_since: ClassVar[str | None] - -class SAWarning(HasDescriptionCode, RuntimeWarning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/__init__.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi deleted file mode 100644 index a0b57ebcb..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/associationproxy.pyi +++ /dev/null @@ -1,200 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..orm import interfaces -from ..sql.operators import ColumnOperators -from ..util.langhelpers import memoized_property - -def association_proxy(target_collection, attr, **kw): ... - -ASSOCIATION_PROXY: Any - -class AssociationProxy(interfaces.InspectionAttrInfo): - is_attribute: bool - extension_type: Any - target_collection: Any - value_attr: Any - creator: Any - getset_factory: Any - proxy_factory: Any - proxy_bulk_set: Any - cascade_scalar_deletes: Any - key: Any - info: Any - def __init__( - self, - target_collection, - attr, - creator: Incomplete | None = None, - getset_factory: Incomplete | None = None, - proxy_factory: Incomplete | None = None, - proxy_bulk_set: Incomplete | None = None, - info: Incomplete | None = None, - cascade_scalar_deletes: bool = False, - ) -> None: ... - def __get__(self, obj, class_): ... - def __set__(self, obj, values) -> None: ... - def __delete__(self, obj) -> None: ... - def for_class(self, class_, obj: Incomplete | None = None): ... - -class AssociationProxyInstance: - parent: Any - key: Any - owning_class: Any - target_collection: Any - collection_class: Any - target_class: Any - value_attr: Any - def __init__(self, parent, owning_class, target_class, value_attr) -> None: ... - @classmethod - def for_proxy(cls, parent, owning_class, parent_instance): ... - def __clause_element__(self) -> None: ... - @property - def remote_attr(self): ... - @property - def local_attr(self): ... - @property - def attr(self): ... - @memoized_property - def scalar(self): ... - @property - def info(self): ... - def get(self, obj): ... - def set(self, obj, values) -> None: ... - def delete(self, obj) -> None: ... - def any(self, criterion: Incomplete | None = None, **kwargs): ... - def has(self, criterion: Incomplete | None = None, **kwargs): ... - -class AmbiguousAssociationProxyInstance(AssociationProxyInstance): - def get(self, obj): ... - def __eq__(self, obj): ... - def __ne__(self, obj): ... - def any(self, criterion: Incomplete | None = None, **kwargs) -> None: ... - def has(self, criterion: Incomplete | None = None, **kwargs) -> None: ... - -class ObjectAssociationProxyInstance(AssociationProxyInstance): - def contains(self, obj): ... - def __eq__(self, obj): ... - def __ne__(self, obj): ... - -class ColumnAssociationProxyInstance(ColumnOperators[Any], AssociationProxyInstance): - def __eq__(self, other) -> ColumnOperators[Any]: ... # type: ignore[override] - def operate(self, op, *other, **kwargs): ... - -class _lazy_collection: - parent: Any - target: Any - def __init__(self, obj, target) -> None: ... - def __call__(self): ... - -class _AssociationCollection: - lazy_collection: Any - creator: Any - getter: Any - setter: Any - parent: Any - def __init__(self, lazy_collection, creator, getter, setter, parent) -> None: ... - @property - def col(self): ... - def __len__(self) -> int: ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - -class _AssociationList(_AssociationCollection): - def __getitem__(self, index): ... - def __setitem__(self, index, value) -> None: ... - def __delitem__(self, index) -> None: ... - def __contains__(self, value): ... - def __getslice__(self, start, end): ... - def __setslice__(self, start, end, values) -> None: ... - def __delslice__(self, start, end) -> None: ... - def __iter__(self): ... - def append(self, value) -> None: ... - def count(self, value): ... - def extend(self, values) -> None: ... - def insert(self, index, value) -> None: ... - def pop(self, index: int = -1): ... - def remove(self, value) -> None: ... - def reverse(self) -> None: ... - def sort(self) -> None: ... - def clear(self) -> None: ... - def __eq__(self, other): ... - def __ne__(self, other): ... - def __lt__(self, other): ... - def __le__(self, other): ... - def __gt__(self, other): ... - def __ge__(self, other): ... - def __cmp__(self, other): ... - def __add__(self, iterable): ... - def __radd__(self, iterable): ... - def __mul__(self, n): ... - __rmul__: Any - def __iadd__(self, iterable): ... - def __imul__(self, n): ... - def index(self, item, *args): ... - def copy(self): ... - def __hash__(self) -> int: ... - -class _AssociationDict(_AssociationCollection): - def __getitem__(self, key): ... - def __setitem__(self, key, value) -> None: ... - def __delitem__(self, key) -> None: ... - def __contains__(self, key): ... - def has_key(self, key): ... - def __iter__(self): ... - def clear(self) -> None: ... - def __eq__(self, other): ... - def __ne__(self, other): ... - def __lt__(self, other): ... - def __le__(self, other): ... - def __gt__(self, other): ... - def __ge__(self, other): ... - def __cmp__(self, other): ... - def get(self, key, default: Incomplete | None = None): ... - def setdefault(self, key, default: Incomplete | None = None): ... - def keys(self): ... - def items(self): ... - def values(self): ... - def pop(self, key, default=...): ... - def popitem(self): ... - def update(self, *a, **kw) -> None: ... - def copy(self): ... - def __hash__(self) -> int: ... - -class _AssociationSet(_AssociationCollection): - def __len__(self) -> int: ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - def __contains__(self, value): ... - def __iter__(self): ... - def add(self, value) -> None: ... - def discard(self, value) -> None: ... - def remove(self, value) -> None: ... - def pop(self): ... - def update(self, other) -> None: ... - def __ior__(self, other): ... # type: ignore[misc] - def union(self, other): ... - __or__: Any - def difference(self, other): ... - __sub__: Any - def difference_update(self, other) -> None: ... - def __isub__(self, other): ... # type: ignore[misc] - def intersection(self, other): ... - __and__: Any - def intersection_update(self, other) -> None: ... - def __iand__(self, other): ... # type: ignore[misc] - def symmetric_difference(self, other): ... - __xor__: Any - def symmetric_difference_update(self, other) -> None: ... - def __ixor__(self, other): ... # type: ignore[misc] - def issubset(self, other): ... - def issuperset(self, other): ... - def clear(self) -> None: ... - def copy(self): ... - def __eq__(self, other): ... - def __ne__(self, other): ... - def __lt__(self, other): ... - def __le__(self, other): ... - def __gt__(self, other): ... - def __ge__(self, other): ... - def __hash__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/__init__.pyi deleted file mode 100644 index e065d748f..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/__init__.pyi +++ /dev/null @@ -1,15 +0,0 @@ -from .engine import ( - AsyncConnection as AsyncConnection, - AsyncEngine as AsyncEngine, - AsyncTransaction as AsyncTransaction, - create_async_engine as create_async_engine, -) -from .events import AsyncConnectionEvents as AsyncConnectionEvents, AsyncSessionEvents as AsyncSessionEvents -from .result import AsyncMappingResult as AsyncMappingResult, AsyncResult as AsyncResult, AsyncScalarResult as AsyncScalarResult -from .scoping import async_scoped_session as async_scoped_session -from .session import ( - AsyncSession as AsyncSession, - AsyncSessionTransaction as AsyncSessionTransaction, - async_object_session as async_object_session, - async_session as async_session, -) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi deleted file mode 100644 index cfeb58e92..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/base.pyi +++ /dev/null @@ -1,19 +0,0 @@ -from abc import ABC, ABCMeta, abstractmethod -from types import TracebackType - -class ReversibleProxy: ... - -class StartableContext(ABC, metaclass=ABCMeta): - @abstractmethod - async def start(self, is_ctxmanager: bool = False): ... - def __await__(self): ... - async def __aenter__(self): ... - @abstractmethod - async def __aexit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - -class ProxyComparable(ReversibleProxy): - def __hash__(self) -> int: ... - def __eq__(self, other): ... - def __ne__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi deleted file mode 100644 index 9a389d559..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/engine.pyi +++ /dev/null @@ -1,103 +0,0 @@ -from _typeshed import Incomplete -from types import TracebackType -from typing import Any - -from .base import ProxyComparable, StartableContext - -def create_async_engine(*arg, **kw) -> AsyncEngine: ... -def async_engine_from_config(configuration, prefix: str = "sqlalchemy.", **kwargs) -> AsyncEngine: ... - -class AsyncConnectable: - dispatch: Incomplete - -class AsyncConnection(ProxyComparable, StartableContext, AsyncConnectable): - engine: Any - sync_engine: Any - sync_connection: Any - def __init__(self, async_engine, sync_connection: Incomplete | None = None) -> None: ... - async def start(self, is_ctxmanager: bool = False): ... - @property - def connection(self) -> None: ... - async def get_raw_connection(self): ... - @property - def info(self): ... - def begin(self): ... - def begin_nested(self): ... - async def invalidate(self, exception: Incomplete | None = None): ... - async def get_isolation_level(self): ... - async def set_isolation_level(self): ... - def in_transaction(self): ... - def in_nested_transaction(self): ... - def get_transaction(self): ... - def get_nested_transaction(self): ... - async def execution_options(self, **opt): ... - async def commit(self) -> None: ... - async def rollback(self) -> None: ... - async def close(self) -> None: ... - async def exec_driver_sql(self, statement, parameters: Incomplete | None = None, execution_options=...): ... - async def stream(self, statement, parameters: Incomplete | None = None, execution_options=...): ... - async def execute(self, statement, parameters: Incomplete | None = None, execution_options=...): ... - async def scalar(self, statement, parameters: Incomplete | None = None, execution_options=...): ... - async def scalars(self, statement, parameters: Incomplete | None = None, execution_options=...): ... - async def stream_scalars(self, statement, parameters: Incomplete | None = None, execution_options=...): ... - async def run_sync(self, fn, *arg, **kw): ... - def __await__(self): ... - async def __aexit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - # proxied from Connection - dialect: Any - @property - def closed(self): ... - @property - def invalidated(self): ... - @property - def default_isolation_level(self): ... - -class AsyncEngine(ProxyComparable, AsyncConnectable): - class _trans_ctx(StartableContext): - conn: Any - def __init__(self, conn) -> None: ... - transaction: Any - async def start(self, is_ctxmanager: bool = False): ... - async def __aexit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - sync_engine: Any - def __init__(self, sync_engine) -> None: ... - def begin(self): ... - def connect(self): ... - async def raw_connection(self): ... - def execution_options(self, **opt): ... - async def dispose(self): ... - # proxied from Engine - url: Any - pool: Any - dialect: Any - echo: Any - @property - def engine(self): ... - @property - def name(self): ... - @property - def driver(self): ... - def clear_compiled_cache(self) -> None: ... - def update_execution_options(self, **opt) -> None: ... - def get_execution_options(self): ... - -class AsyncTransaction(ProxyComparable, StartableContext): - connection: Any - sync_transaction: Any - nested: Any - def __init__(self, connection, nested: bool = False) -> None: ... - @property - def is_valid(self): ... - @property - def is_active(self): ... - async def close(self) -> None: ... - async def rollback(self) -> None: ... - async def commit(self) -> None: ... - async def start(self, is_ctxmanager: bool = False): ... - async def __aexit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/events.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/events.pyi deleted file mode 100644 index e9a8bf1a5..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/events.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from ...engine import events as engine_event -from ...orm import events as orm_event - -class AsyncConnectionEvents(engine_event.ConnectionEvents): ... -class AsyncSessionEvents(orm_event.SessionEvents): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/exc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/exc.pyi deleted file mode 100644 index 56f3b638a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/exc.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from ...exc import InvalidRequestError - -class AsyncMethodRequired(InvalidRequestError): ... -class AsyncContextNotStarted(InvalidRequestError): ... -class AsyncContextAlreadyStarted(InvalidRequestError): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi deleted file mode 100644 index 6afa6ed69..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/result.pyi +++ /dev/null @@ -1,56 +0,0 @@ -from _typeshed import Incomplete - -from ...engine.result import FilterResult - -class AsyncCommon(FilterResult): - async def close(self) -> None: ... # type: ignore[override] # supertype is not async - -class AsyncResult(AsyncCommon): - def __init__(self, real_result) -> None: ... - def keys(self): ... - def unique(self, strategy: Incomplete | None = None): ... - def columns(self, *col_expressions): ... - async def partitions(self, size: Incomplete | None = None) -> None: ... - async def fetchone(self): ... - async def fetchmany(self, size: Incomplete | None = None): ... - async def all(self): ... - def __aiter__(self): ... - async def __anext__(self): ... - async def first(self): ... - async def one_or_none(self): ... - async def scalar_one(self): ... - async def scalar_one_or_none(self): ... - async def one(self): ... - async def scalar(self): ... - async def freeze(self): ... - def scalars(self, index: int = 0): ... - def mappings(self): ... - -class AsyncScalarResult(AsyncCommon): - def __init__(self, real_result, index) -> None: ... - def unique(self, strategy: Incomplete | None = None): ... - async def partitions(self, size: Incomplete | None = None) -> None: ... - async def fetchall(self): ... - async def fetchmany(self, size: Incomplete | None = None): ... - async def all(self): ... - def __aiter__(self): ... - async def __anext__(self): ... - async def first(self): ... - async def one_or_none(self): ... - async def one(self): ... - -class AsyncMappingResult(AsyncCommon): - def __init__(self, result) -> None: ... - def keys(self): ... - def unique(self, strategy: Incomplete | None = None): ... - def columns(self, *col_expressions): ... - async def partitions(self, size: Incomplete | None = None) -> None: ... - async def fetchall(self): ... - async def fetchone(self): ... - async def fetchmany(self, size: Incomplete | None = None): ... - async def all(self): ... - def __aiter__(self): ... - async def __anext__(self): ... - async def first(self): ... - async def one_or_none(self): ... - async def one(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi deleted file mode 100644 index 3c203866c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/scoping.pyi +++ /dev/null @@ -1,80 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ...orm.scoping import ScopedSessionMixin -from ...util.langhelpers import memoized_property - -class async_scoped_session(ScopedSessionMixin): - session_factory: Any - registry: Any - def invalidate(self): ... - def __init__(self, session_factory, scopefunc) -> None: ... - async def remove(self) -> None: ... - # proxied from Session - @classmethod - async def close_all(cls): ... - @classmethod - def identity_key(cls, *args, **kwargs): ... - @classmethod - def object_session(cls, instance): ... - bind: Any - identity_map: Any - autoflush: Any - def __contains__(self, instance): ... - def __iter__(self): ... - def add(self, instance, _warn: bool = True) -> None: ... - def add_all(self, instances) -> None: ... - def begin(self, **kw): ... - def begin_nested(self, **kw): ... - async def close(self): ... - async def commit(self): ... - async def connection(self, **kw): ... - async def delete(self, instance): ... - async def execute( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - def expire(self, instance, attribute_names: Incomplete | None = None) -> None: ... - def expire_all(self) -> None: ... - def expunge(self, instance) -> None: ... - def expunge_all(self) -> None: ... - async def flush(self, objects: Incomplete | None = None) -> None: ... - async def get( - self, - entity, - ident, - options: Incomplete | None = None, - populate_existing: bool = False, - with_for_update: Incomplete | None = None, - identity_token: Incomplete | None = None, - ): ... - def get_bind( - self, mapper: Incomplete | None = None, clause: Incomplete | None = None, bind: Incomplete | None = None, **kw - ): ... - def is_modified(self, instance, include_collections: bool = True): ... - async def merge(self, instance, load: bool = True, options: Incomplete | None = None): ... - async def refresh(self, instance, attribute_names: Incomplete | None = None, with_for_update: Incomplete | None = None): ... - async def rollback(self): ... - async def scalar( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - async def scalars( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - async def stream( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - async def stream_scalars( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - @property - def dirty(self): ... - @property - def deleted(self): ... - @property - def new(self): ... - @property - def is_active(self): ... - @property - def no_autoflush(self) -> None: ... - @memoized_property - def info(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi deleted file mode 100644 index 6c9e95b43..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/asyncio/session.pyi +++ /dev/null @@ -1,120 +0,0 @@ -from _typeshed import Incomplete -from types import TracebackType -from typing import Any -from typing_extensions import Self - -from ...util.langhelpers import memoized_property -from .base import ReversibleProxy, StartableContext - -class AsyncSession(ReversibleProxy): - dispatch: Any - bind: Any - binds: Any - sync_session_class: Any - sync_session: Any - def __init__( - self, bind: Incomplete | None = None, binds: Incomplete | None = None, sync_session_class: Incomplete | None = None, **kw - ) -> None: ... - async def refresh(self, instance, attribute_names: Incomplete | None = None, with_for_update: Incomplete | None = None): ... - async def run_sync(self, fn, *arg, **kw): ... - async def execute( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - async def scalar( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - async def scalars( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - async def get( - self, - entity, - ident, - options: Incomplete | None = None, - populate_existing: bool = False, - with_for_update: Incomplete | None = None, - identity_token: Incomplete | None = None, - ): ... - async def stream( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - async def stream_scalars( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - async def delete(self, instance): ... - async def merge(self, instance, load: bool = True, options: Incomplete | None = None): ... - async def flush(self, objects: Incomplete | None = None) -> None: ... - def get_transaction(self): ... - def get_nested_transaction(self): ... - def get_bind( - self, mapper: Incomplete | None = None, clause: Incomplete | None = None, bind: Incomplete | None = None, **kw - ): ... - async def connection(self, **kw): ... - def begin(self, **kw): ... - def begin_nested(self, **kw): ... - async def rollback(self): ... - async def commit(self): ... - async def close(self): ... - async def invalidate(self): ... - @classmethod - async def close_all(cls): ... - async def __aenter__(self) -> Self: ... - async def __aexit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - # proxied from Session - identity_map: Any - autoflush: Any - @classmethod - def identity_key(cls, *args, **kwargs): ... - @classmethod - def object_session(cls, instance): ... - def __contains__(self, instance): ... - def __iter__(self): ... - def add(self, instance, _warn: bool = True) -> None: ... - def add_all(self, instances) -> None: ... - def expire(self, instance, attribute_names: Incomplete | None = None) -> None: ... - def expire_all(self) -> None: ... - def expunge(self, instance) -> None: ... - def expunge_all(self) -> None: ... - def is_modified(self, instance, include_collections: bool = True): ... - def in_transaction(self): ... - def in_nested_transaction(self): ... - @property - def no_autoflush(self) -> None: ... - @property - def is_active(self): ... - @property - def dirty(self): ... - @property - def deleted(self): ... - @property - def new(self): ... - @memoized_property - def info(self): ... - -class _AsyncSessionContextManager: - async_session: Any - def __init__(self, async_session) -> None: ... - trans: Any - async def __aenter__(self): ... - async def __aexit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - -class AsyncSessionTransaction(ReversibleProxy, StartableContext): - session: Any - nested: Any - sync_transaction: Any - def __init__(self, session, nested: bool = False) -> None: ... - @property - def is_active(self): ... - async def rollback(self) -> None: ... - async def commit(self) -> None: ... - async def start(self, is_ctxmanager: bool = False): ... - async def __aexit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - -def async_object_session(instance): ... -def async_session(session): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/automap.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/automap.pyi deleted file mode 100644 index 47a5793cb..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/automap.pyi +++ /dev/null @@ -1,27 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -def classname_for_table(base, tablename, table): ... -def name_for_scalar_relationship(base, local_cls, referred_cls, constraint): ... -def name_for_collection_relationship(base, local_cls, referred_cls, constraint): ... -def generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): ... - -class AutomapBase: - __abstract__: bool - classes: Any - @classmethod - def prepare( - cls, - autoload_with: Incomplete | None = None, - engine: Incomplete | None = None, - reflect: bool = False, - schema: Incomplete | None = None, - classname_for_table: Incomplete | None = None, - collection_class: Incomplete | None = None, - name_for_scalar_relationship: Incomplete | None = None, - name_for_collection_relationship: Incomplete | None = None, - generate_relationship: Incomplete | None = None, - reflection_options=..., - ) -> None: ... - -def automap_base(declarative_base: Incomplete | None = None, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi deleted file mode 100644 index 95ac4b0d6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/baked.pyi +++ /dev/null @@ -1,49 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..orm.strategy_options import Load, loader_option - -log: Any - -class Bakery: - cls: Any - cache: Any - def __init__(self, cls_, cache) -> None: ... - def __call__(self, initial_fn, *args): ... - -class BakedQuery: - steps: Any - def __init__(self, bakery, initial_fn, args=()) -> None: ... - @classmethod - def bakery(cls, size: int = 200, _size_alert: Incomplete | None = None): ... - def __iadd__(self, other): ... - def __add__(self, other): ... - def add_criteria(self, fn, *args): ... - def with_criteria(self, fn, *args): ... - def for_session(self, session): ... - def __call__(self, session): ... - def spoil(self, full: bool = False): ... - def to_query(self, query_or_session): ... - -class Result: - bq: Any - session: Any - def __init__(self, bq, session) -> None: ... - def params(self, *args, **kw): ... - def with_post_criteria(self, fn): ... - def __iter__(self): ... - def count(self): ... - def scalar(self): ... - def first(self): ... - def one(self): ... - def one_or_none(self): ... - def all(self): ... - def get(self, ident): ... - -def bake_lazy_loaders() -> None: ... -def unbake_lazy_loaders() -> None: ... -@loader_option() -def baked_lazyload(loadopt: Load, attr) -> loader_option: ... -def baked_lazyload_all(loadopt: Load, attr) -> loader_option: ... - -bakery = BakedQuery.bakery diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/compiler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/compiler.pyi deleted file mode 100644 index 79b29eea9..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/compiler.pyi +++ /dev/null @@ -1,8 +0,0 @@ -from typing import Any - -def compiles(class_, *specs): ... -def deregister(class_) -> None: ... - -class _dispatcher: - specs: Any - def __call__(self, element, compiler, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/declarative/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/declarative/__init__.pyi deleted file mode 100644 index 7eddf8603..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/declarative/__init__.pyi +++ /dev/null @@ -1,27 +0,0 @@ -from ...orm.decl_api import ( - DeclarativeMeta as DeclarativeMeta, - as_declarative as as_declarative, - declarative_base as declarative_base, - declared_attr as declared_attr, - has_inherited_table as has_inherited_table, - synonym_for as synonym_for, -) -from .extensions import ( - AbstractConcreteBase as AbstractConcreteBase, - ConcreteBase as ConcreteBase, - DeferredReflection as DeferredReflection, - instrument_declarative as instrument_declarative, -) - -__all__ = [ - "declarative_base", - "synonym_for", - "has_inherited_table", - "instrument_declarative", - "declared_attr", - "as_declarative", - "ConcreteBase", - "AbstractConcreteBase", - "DeclarativeMeta", - "DeferredReflection", -] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/declarative/extensions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/declarative/extensions.pyi deleted file mode 100644 index c4fbf0ff5..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/declarative/extensions.pyi +++ /dev/null @@ -1,14 +0,0 @@ -def instrument_declarative(cls, cls_registry, metadata) -> None: ... - -class ConcreteBase: - @classmethod - def __declare_first__(cls) -> None: ... - -class AbstractConcreteBase(ConcreteBase): - __no_table__: bool - @classmethod - def __declare_first__(cls) -> None: ... - -class DeferredReflection: - @classmethod - def prepare(cls, engine) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/horizontal_shard.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/horizontal_shard.pyi deleted file mode 100644 index b8355d51c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/horizontal_shard.pyi +++ /dev/null @@ -1,34 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, Generic, TypeVar - -from ..orm.query import Query -from ..orm.session import Session - -_T = TypeVar("_T") - -class ShardedQuery(Query[_T], Generic[_T]): - id_chooser: Any - query_chooser: Any - execute_chooser: Any - def __init__(self, *args, **kwargs) -> None: ... - def set_shard(self, shard_id): ... - -class ShardedSession(Session): - shard_chooser: Any - id_chooser: Any - execute_chooser: Any - query_chooser: Any - def __init__( - self, - shard_chooser, - id_chooser, - execute_chooser: Incomplete | None = None, - shards: Incomplete | None = None, - query_cls=..., - **kwargs, - ): ... - def connection_callable( - self, mapper: Incomplete | None = None, instance: Incomplete | None = None, shard_id: Incomplete | None = None, **kwargs - ): ... - def get_bind(self, mapper: Incomplete | None = None, shard_id: Incomplete | None = None, instance: Incomplete | None = None, clause: Incomplete | None = None, **kw): ... # type: ignore[override] - def bind_shard(self, shard_id, bind) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/hybrid.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/hybrid.pyi deleted file mode 100644 index d9d20108f..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/hybrid.pyi +++ /dev/null @@ -1,68 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..orm import interfaces - -HYBRID_METHOD: Any -HYBRID_PROPERTY: Any - -class hybrid_method(interfaces.InspectionAttrInfo): - is_attribute: bool - extension_type: Any - func: Any - def __init__(self, func, expr: Incomplete | None = None) -> None: ... - def __get__(self, instance, owner): ... - expr: Any - def expression(self, expr): ... - -class hybrid_property(interfaces.InspectionAttrInfo): - is_attribute: bool - extension_type: Any - fget: Any - fset: Any - fdel: Any - expr: Any - custom_comparator: Any - update_expr: Any - def __init__( - self, - fget, - fset: Incomplete | None = None, - fdel: Incomplete | None = None, - expr: Incomplete | None = None, - custom_comparator: Incomplete | None = None, - update_expr: Incomplete | None = None, - ) -> None: ... - def __get__(self, instance, owner): ... - def __set__(self, instance, value) -> None: ... - def __delete__(self, instance) -> None: ... - @property - def overrides(self): ... - def getter(self, fget): ... - def setter(self, fset): ... - def deleter(self, fdel): ... - def expression(self, expr): ... - def comparator(self, comparator): ... - def update_expression(self, meth): ... - -class Comparator(interfaces.PropComparator[Any]): - property: Any - expression: Any - def __init__(self, expression) -> None: ... - def __clause_element__(self): ... - def adapt_to_entity(self, adapt_to_entity): ... - -_property = property - -class ExprComparator(Comparator): - cls: Any - expression: Any - hybrid: Any - def __init__(self, cls, expression, hybrid) -> None: ... - def __getattr__(self, key: str): ... - @_property - def info(self): ... - @_property - def property(self): ... - def operate(self, op, *other, **kwargs): ... - def reverse_operate(self, op, other, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/indexable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/indexable.pyi deleted file mode 100644 index 8d34ff0db..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/indexable.pyi +++ /dev/null @@ -1,18 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..ext.hybrid import hybrid_property - -class index_property(hybrid_property): - attr_name: Any - index: Any - default: Any - datatype: Any - onebased: Any - def __init__( - self, attr_name, index, default=..., datatype: Incomplete | None = None, mutable: bool = True, onebased: bool = True - ): ... - def fget(self, instance): ... - def fset(self, instance, value) -> None: ... - def fdel(self, instance) -> None: ... - def expr(self, model): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/instrumentation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/instrumentation.pyi deleted file mode 100644 index d88af6e40..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/instrumentation.pyi +++ /dev/null @@ -1,55 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..orm.instrumentation import ClassManager, InstrumentationFactory - -INSTRUMENTATION_MANAGER: str - -def find_native_user_instrumentation_hook(cls): ... - -instrumentation_finders: Any - -class ExtendedInstrumentationRegistry(InstrumentationFactory): - def unregister(self, class_) -> None: ... - def manager_of_class(self, cls): ... - def state_of(self, instance): ... - def dict_of(self, instance): ... - -class InstrumentationManager: - def __init__(self, class_) -> None: ... - def manage(self, class_, manager) -> None: ... - def unregister(self, class_, manager) -> None: ... - def manager_getter(self, class_): ... - def instrument_attribute(self, class_, key, inst) -> None: ... - def post_configure_attribute(self, class_, key, inst) -> None: ... - def install_descriptor(self, class_, key, inst) -> None: ... - def uninstall_descriptor(self, class_, key) -> None: ... - def install_member(self, class_, key, implementation) -> None: ... - def uninstall_member(self, class_, key) -> None: ... - def instrument_collection_class(self, class_, key, collection_class): ... - def get_instance_dict(self, class_, instance): ... - def initialize_instance_dict(self, class_, instance) -> None: ... - def install_state(self, class_, instance, state) -> None: ... - def remove_state(self, class_, instance) -> None: ... - def state_getter(self, class_): ... - def dict_getter(self, class_): ... - -class _ClassInstrumentationAdapter(ClassManager): - def __init__(self, class_, override) -> None: ... - def manage(self) -> None: ... - def unregister(self) -> None: ... - def manager_getter(self): ... - def instrument_attribute(self, key, inst, propagated: bool = False) -> None: ... - def post_configure_attribute(self, key) -> None: ... - def install_descriptor(self, key, inst) -> None: ... - def uninstall_descriptor(self, key) -> None: ... - def install_member(self, key, implementation) -> None: ... - def uninstall_member(self, key) -> None: ... - def instrument_collection_class(self, key, collection_class): ... - def initialize_collection(self, key, state, factory): ... - def new_instance(self, state: Incomplete | None = None): ... - def setup_instance(self, instance, state: Incomplete | None = None): ... - def teardown_instance(self, instance) -> None: ... - def has_state(self, instance): ... - def state_getter(self): ... - def dict_getter(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/mutable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/mutable.pyi deleted file mode 100644 index c1e4be44b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/mutable.pyi +++ /dev/null @@ -1,64 +0,0 @@ -from typing import Any - -class MutableBase: - @classmethod - def coerce(cls, key, value) -> None: ... - -class Mutable(MutableBase): - def changed(self) -> None: ... - @classmethod - def associate_with_attribute(cls, attribute) -> None: ... - @classmethod - def associate_with(cls, sqltype) -> None: ... - @classmethod - def as_mutable(cls, sqltype): ... - -class MutableComposite(MutableBase): - def changed(self) -> None: ... - -class MutableDict(Mutable, dict[Any, Any]): - def __setitem__(self, key, value) -> None: ... - def setdefault(self, key, value): ... - def __delitem__(self, key) -> None: ... - def update(self, *a, **kw) -> None: ... - def pop(self, *arg): ... - def popitem(self): ... - def clear(self) -> None: ... - @classmethod - def coerce(cls, key, value): ... - -class MutableList(Mutable, list[Any]): - def __reduce_ex__(self, proto): ... - def __setitem__(self, index, value) -> None: ... - def __setslice__(self, start, end, value) -> None: ... - def __delitem__(self, index) -> None: ... - def __delslice__(self, start, end) -> None: ... - def pop(self, *arg): ... - def append(self, x) -> None: ... - def extend(self, x) -> None: ... - def __iadd__(self, x): ... # type: ignore[misc] - def insert(self, i, x) -> None: ... - def remove(self, i) -> None: ... - def clear(self) -> None: ... - def sort(self, **kw) -> None: ... - def reverse(self) -> None: ... - @classmethod - def coerce(cls, index, value): ... - -class MutableSet(Mutable, set[Any]): - def update(self, *arg) -> None: ... - def intersection_update(self, *arg) -> None: ... - def difference_update(self, *arg) -> None: ... - def symmetric_difference_update(self, *arg) -> None: ... - def __ior__(self, other): ... # type: ignore[misc] - def __iand__(self, other): ... # type: ignore[misc] - def __ixor__(self, other): ... # type: ignore[misc] - def __isub__(self, other): ... # type: ignore[misc] - def add(self, elem) -> None: ... - def remove(self, elem) -> None: ... - def discard(self, elem) -> None: ... - def pop(self, *arg): ... - def clear(self) -> None: ... - @classmethod - def coerce(cls, index, value): ... - def __reduce_ex__(self, proto): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/orderinglist.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/orderinglist.pyi deleted file mode 100644 index bebca695b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/orderinglist.pyi +++ /dev/null @@ -1,22 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -def ordering_list(attr, count_from: Incomplete | None = None, **kw): ... - -class OrderingList(list[Any]): - ordering_attr: Any - ordering_func: Any - reorder_on_append: Any - def __init__( - self, ordering_attr: Incomplete | None = None, ordering_func: Incomplete | None = None, reorder_on_append: bool = False - ) -> None: ... - def reorder(self) -> None: ... - def append(self, entity) -> None: ... - def insert(self, index, entity) -> None: ... - def remove(self, entity) -> None: ... - def pop(self, index: int = -1): ... # type: ignore[override] - def __setitem__(self, index, entity) -> None: ... - def __delitem__(self, index) -> None: ... - def __setslice__(self, start, end, values) -> None: ... - def __delslice__(self, start, end) -> None: ... - def __reduce__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/serializer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/serializer.pyi deleted file mode 100644 index 3584cf3eb..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/ext/serializer.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from _typeshed import Incomplete - -def Serializer(*args, **kw): ... -def Deserializer( - file, metadata: Incomplete | None = None, scoped_session: Incomplete | None = None, engine: Incomplete | None = None -): ... -def dumps(obj, protocol=5): ... -def loads( - data, metadata: Incomplete | None = None, scoped_session: Incomplete | None = None, engine: Incomplete | None = None -): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/__init__.pyi deleted file mode 100644 index 00f3a300b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/__init__.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from typing import Any - -from .engine import Connection as Connection, Engine as Engine, create_engine as create_engine - -select: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/engine.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/engine.pyi deleted file mode 100644 index 049185fd8..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/engine.pyi +++ /dev/null @@ -1,38 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, overload -from typing_extensions import Literal - -from ..engine import Connection as _LegacyConnection, Engine as _LegacyEngine -from ..engine.base import OptionEngineMixin -from ..engine.mock import MockConnection -from ..engine.url import URL - -NO_OPTIONS: Any - -@overload -def create_engine(url: URL | str, *, strategy: Literal["mock"], **kwargs) -> MockConnection: ... # type: ignore[misc] -@overload -def create_engine( - url: URL | str, *, module: Incomplete | None = ..., enable_from_linting: bool = ..., future: bool = ..., **kwargs -) -> Engine: ... - -class Connection(_LegacyConnection): - def begin(self): ... - def begin_nested(self): ... - def commit(self) -> None: ... - def rollback(self) -> None: ... - def close(self) -> None: ... - def execute(self, statement, parameters: Incomplete | None = None, execution_options: Incomplete | None = None): ... # type: ignore[override] - def scalar(self, statement, parameters: Incomplete | None = None, execution_options: Incomplete | None = None): ... # type: ignore[override] - -class Engine(_LegacyEngine): - transaction: Any - run_callable: Any - execute: Any - scalar: Any - table_names: Any - has_table: Any - def begin(self) -> None: ... # type: ignore[override] - def connect(self): ... - -class OptionEngine(OptionEngineMixin, Engine): ... # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/orm/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/future/orm/__init__.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/inspection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/inspection.pyi deleted file mode 100644 index 3e92030a6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/inspection.pyi +++ /dev/null @@ -1 +0,0 @@ -def inspect(subject, raiseerr: bool = True): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi deleted file mode 100644 index dbfccc809..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/log.pyi +++ /dev/null @@ -1,51 +0,0 @@ -import sys -from _typeshed import Unused -from logging import Logger -from typing import Any, TypeVar, overload -from typing_extensions import Final, Literal, Self, TypeAlias - -_ClsT = TypeVar("_ClsT", bound=type) -_EchoFlag: TypeAlias = bool | Literal["debug"] | None - -if sys.version_info >= (3, 8): - STACKLEVEL: Final = True - - if sys.version_info >= (3, 11): - STACKLEVEL_OFFSET: Final = 2 - else: - STACKLEVEL_OFFSET: Final = 1 -else: - STACKLEVEL: Final = False - STACKLEVEL_OFFSET: Final = 0 - -rootlogger: Any - -def class_logger(cls: _ClsT) -> _ClsT: ... - -class Identified: - logging_name: str | None - -class InstanceLogger: - echo: _EchoFlag - logger: Logger - def __init__(self, echo: _EchoFlag, name: str | None) -> None: ... - def debug(self, msg, *args, **kwargs) -> None: ... - def info(self, msg, *args, **kwargs) -> None: ... - def warning(self, msg, *args, **kwargs) -> None: ... - warn = warning - def error(self, msg, *args, **kwargs) -> None: ... - def exception(self, msg, *args, **kwargs) -> None: ... - def critical(self, msg, *args, **kwargs) -> None: ... - def log(self, level, msg, *args, **kwargs) -> None: ... - def isEnabledFor(self, level): ... - def getEffectiveLevel(self): ... - -def instance_logger(instance: Identified, echoflag: _EchoFlag = None) -> None: ... - -class echo_property: - __doc__: str - @overload - def __get__(self, instance: None, owner: Unused) -> Self: ... - @overload - def __get__(self, instance: Identified, owner: Unused) -> _EchoFlag: ... - def __set__(self, instance: Identified, value: _EchoFlag) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/__init__.pyi deleted file mode 100644 index a0ba4126d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/__init__.pyi +++ /dev/null @@ -1,126 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..util.langhelpers import public_factory as public_factory -from . import exc as exc, strategy_options as strategy_options -from .attributes import ( - AttributeEvent as AttributeEvent, - InstrumentedAttribute as InstrumentedAttribute, - Mapped as Mapped, - QueryableAttribute as QueryableAttribute, -) -from .context import QueryContext as QueryContext -from .decl_api import ( - DeclarativeMeta as DeclarativeMeta, - as_declarative as as_declarative, - declarative_base as declarative_base, - declarative_mixin as declarative_mixin, - declared_attr as declared_attr, - has_inherited_table as has_inherited_table, - registry as registry, - synonym_for as synonym_for, -) -from .descriptor_props import CompositeProperty as CompositeProperty, SynonymProperty as SynonymProperty -from .dynamic import AppenderQuery as AppenderQuery -from .events import ( - AttributeEvents as AttributeEvents, - InstanceEvents as InstanceEvents, - InstrumentationEvents as InstrumentationEvents, - MapperEvents as MapperEvents, - QueryEvents as QueryEvents, - SessionEvents as SessionEvents, -) -from .identity import IdentityMap as IdentityMap -from .instrumentation import ClassManager as ClassManager -from .interfaces import ( - EXT_CONTINUE as EXT_CONTINUE, - EXT_SKIP as EXT_SKIP, - EXT_STOP as EXT_STOP, - MANYTOMANY as MANYTOMANY, - MANYTOONE as MANYTOONE, - NOT_EXTENSION as NOT_EXTENSION, - ONETOMANY as ONETOMANY, - InspectionAttr as InspectionAttr, - InspectionAttrInfo as InspectionAttrInfo, - MapperProperty as MapperProperty, - PropComparator as PropComparator, - UserDefinedOption as UserDefinedOption, -) -from .loading import merge_frozen_result as merge_frozen_result, merge_result as merge_result -from .mapper import ( - Mapper as Mapper, - class_mapper as class_mapper, - configure_mappers as configure_mappers, - reconstructor as reconstructor, - validates as validates, -) -from .properties import ColumnProperty as ColumnProperty -from .query import AliasOption as AliasOption, FromStatement as FromStatement, Query as Query -from .relationships import RelationshipProperty as RelationshipProperty, foreign as foreign, remote as remote -from .scoping import scoped_session as scoped_session -from .session import ( - ORMExecuteState as ORMExecuteState, - Session as Session, - SessionTransaction as SessionTransaction, - close_all_sessions as close_all_sessions, - make_transient as make_transient, - make_transient_to_detached as make_transient_to_detached, - object_session as object_session, - sessionmaker as sessionmaker, -) -from .state import AttributeState as AttributeState, InstanceState as InstanceState -from .strategy_options import Load as Load -from .unitofwork import UOWTransaction as UOWTransaction -from .util import ( - Bundle as Bundle, - CascadeOptions as CascadeOptions, - LoaderCriteriaOption as LoaderCriteriaOption, - aliased as aliased, - join as join, - object_mapper as object_mapper, - outerjoin as outerjoin, - polymorphic_union as polymorphic_union, - was_deleted as was_deleted, - with_parent as with_parent, - with_polymorphic as with_polymorphic, -) - -def create_session(bind: Incomplete | None = None, **kwargs): ... - -with_loader_criteria: Any -relationship: Any - -def relation(*arg, **kw): ... -def dynamic_loader(argument, **kw): ... - -column_property: Any -composite: Any - -def backref(name, **kwargs): ... -def deferred(*columns, **kw): ... -def query_expression(default_expr=...): ... - -mapper: Any -synonym: Any - -def clear_mappers() -> None: ... - -joinedload: Any -contains_eager: Any -defer: Any -undefer: Any -undefer_group: Any -with_expression: Any -load_only: Any -lazyload: Any -subqueryload: Any -selectinload: Any -immediateload: Any -noload: Any -raiseload: Any -defaultload: Any -selectin_polymorphic: Any - -def eagerload(*args, **kwargs): ... - -contains_alias: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi deleted file mode 100644 index c5097d7c8..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/attributes.pyi +++ /dev/null @@ -1,286 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, Generic, NamedTuple, TypeVar - -from ..sql import base as sql_base, roles, traversals -from ..util.langhelpers import memoized_property -from . import interfaces -from .base import ( - ATTR_EMPTY as ATTR_EMPTY, - ATTR_WAS_SET as ATTR_WAS_SET, - CALLABLES_OK as CALLABLES_OK, - DEFERRED_HISTORY_LOAD as DEFERRED_HISTORY_LOAD, - INIT_OK as INIT_OK, - LOAD_AGAINST_COMMITTED as LOAD_AGAINST_COMMITTED, - NEVER_SET as NEVER_SET, - NO_AUTOFLUSH as NO_AUTOFLUSH, - NO_CHANGE as NO_CHANGE, - NO_RAISE as NO_RAISE, - NO_VALUE as NO_VALUE, - NON_PERSISTENT_OK as NON_PERSISTENT_OK, - PASSIVE_CLASS_MISMATCH as PASSIVE_CLASS_MISMATCH, - PASSIVE_NO_FETCH as PASSIVE_NO_FETCH, - PASSIVE_NO_FETCH_RELATED as PASSIVE_NO_FETCH_RELATED, - PASSIVE_NO_INITIALIZE as PASSIVE_NO_INITIALIZE, - PASSIVE_NO_RESULT as PASSIVE_NO_RESULT, - PASSIVE_OFF as PASSIVE_OFF, - PASSIVE_ONLY_PERSISTENT as PASSIVE_ONLY_PERSISTENT, - PASSIVE_RETURN_NO_VALUE as PASSIVE_RETURN_NO_VALUE, - RELATED_OBJECT_OK as RELATED_OBJECT_OK, - SQL_OK as SQL_OK, - instance_dict as instance_dict, - instance_state as instance_state, -) - -_T = TypeVar("_T") - -class NoKey(str): ... - -NO_KEY: Any - -class QueryableAttribute( - interfaces._MappedAttribute, - interfaces.InspectionAttr, - interfaces.PropComparator[Any], - traversals.HasCopyInternals, - roles.JoinTargetRole, - roles.OnClauseRole, - sql_base.Immutable, - sql_base.MemoizedHasCacheKey, -): - is_attribute: bool - __visit_name__: str - class_: Any - key: Any - impl: Any - comparator: Any - dispatch: Incomplete - def __init__( - self, - class_, - key, - parententity, - impl: Incomplete | None = None, - comparator: Incomplete | None = None, - of_type: Incomplete | None = None, - extra_criteria=(), - ) -> None: ... - def __reduce__(self): ... - def get_history(self, instance, passive=...): ... - @memoized_property - def info(self): ... - @memoized_property - def parent(self): ... - @memoized_property - def expression(self): ... - def __clause_element__(self): ... - def adapt_to_entity(self, adapt_to_entity): ... - def of_type(self, entity): ... - def and_(self, *other): ... - def label(self, name): ... - def operate(self, op, *other, **kwargs): ... - def reverse_operate(self, op, other, **kwargs): ... - def hasparent(self, state, optimistic: bool = False): ... - def __getattr__(self, key: str): ... - @memoized_property - def property(self): ... - -class Mapped(QueryableAttribute, Generic[_T]): - def __get__(self, instance, owner) -> None: ... - def __set__(self, instance, value) -> None: ... - def __delete__(self, instance) -> None: ... - -class InstrumentedAttribute(Mapped[Any]): - inherit_cache: bool - def __set__(self, instance, value) -> None: ... - def __delete__(self, instance) -> None: ... - def __get__(self, instance, owner): ... - -class _HasEntityNamespace(NamedTuple): - entity_namespace: Any - -class HasEntityNamespace(_HasEntityNamespace): - is_mapper: bool - is_aliased_class: bool - -def create_proxied_attribute(descriptor): ... - -OP_REMOVE: Any -OP_APPEND: Any -OP_REPLACE: Any -OP_BULK_REPLACE: Any -OP_MODIFIED: Any - -class AttributeEvent: - impl: Any - op: Any - parent_token: Any - def __init__(self, attribute_impl, op) -> None: ... - def __eq__(self, other): ... - @property - def key(self): ... - def hasparent(self, state): ... - -Event = AttributeEvent - -class AttributeImpl: - class_: Any - key: Any - callable_: Any - dispatch: Any - trackparent: Any - parent_token: Any - send_modified_events: Any - is_equal: Any - accepts_scalar_loader: Any - load_on_unexpire: Any - def __init__( - self, - class_, - key, - callable_, - dispatch, - trackparent: bool = False, - compare_function: Incomplete | None = None, - active_history: bool = False, - parent_token: Incomplete | None = None, - load_on_unexpire: bool = True, - send_modified_events: bool = True, - accepts_scalar_loader: Incomplete | None = None, - **kwargs, - ) -> None: ... - active_history: Any - def hasparent(self, state, optimistic: bool = False): ... - def sethasparent(self, state, parent_state, value) -> None: ... - def get_history(self, state, dict_, passive=...) -> None: ... - def get_all_pending(self, state, dict_, passive=...) -> None: ... - def get(self, state, dict_, passive=...): ... - def append(self, state, dict_, value, initiator, passive=...) -> None: ... - def remove(self, state, dict_, value, initiator, passive=...) -> None: ... - def pop(self, state, dict_, value, initiator, passive=...) -> None: ... - def set( - self, state, dict_, value, initiator, passive=..., check_old: Incomplete | None = None, pop: bool = False - ) -> None: ... - def get_committed_value(self, state, dict_, passive=...): ... - def set_committed_value(self, state, dict_, value): ... - -class ScalarAttributeImpl(AttributeImpl): - default_accepts_scalar_loader: bool - uses_objects: bool - supports_population: bool - collection: bool - dynamic: bool - def __init__(self, *arg, **kw) -> None: ... - def delete(self, state, dict_) -> None: ... - def get_history(self, state, dict_, passive=...): ... - def set( - self, state, dict_, value, initiator, passive=..., check_old: Incomplete | None = None, pop: bool = False - ) -> None: ... - def fire_replace_event(self, state, dict_, value, previous, initiator): ... - def fire_remove_event(self, state, dict_, value, initiator) -> None: ... - @property - def type(self) -> None: ... - -class ScalarObjectAttributeImpl(ScalarAttributeImpl): - default_accepts_scalar_loader: bool - uses_objects: bool - supports_population: bool - collection: bool - def delete(self, state, dict_) -> None: ... - def get_history(self, state, dict_, passive=...): ... - def get_all_pending(self, state, dict_, passive=...): ... - def set( - self, state, dict_, value, initiator, passive=..., check_old: Incomplete | None = None, pop: bool = False - ) -> None: ... - def fire_remove_event(self, state, dict_, value, initiator) -> None: ... - def fire_replace_event(self, state, dict_, value, previous, initiator): ... - -class CollectionAttributeImpl(AttributeImpl): - default_accepts_scalar_loader: bool - uses_objects: bool - supports_population: bool - collection: bool - dynamic: bool - copy: Any - collection_factory: Any - def __init__( - self, - class_, - key, - callable_, - dispatch, - typecallable: Incomplete | None = None, - trackparent: bool = False, - copy_function: Incomplete | None = None, - compare_function: Incomplete | None = None, - **kwargs, - ) -> None: ... - def get_history(self, state, dict_, passive=...): ... - def get_all_pending(self, state, dict_, passive=...): ... - def fire_append_event(self, state, dict_, value, initiator): ... - def fire_append_wo_mutation_event(self, state, dict_, value, initiator): ... - def fire_pre_remove_event(self, state, dict_, initiator) -> None: ... - def fire_remove_event(self, state, dict_, value, initiator) -> None: ... - def delete(self, state, dict_) -> None: ... - def append(self, state, dict_, value, initiator, passive=...) -> None: ... - def remove(self, state, dict_, value, initiator, passive=...) -> None: ... - def pop(self, state, dict_, value, initiator, passive=...) -> None: ... - def set( - self, - state, - dict_, - value, - initiator: Incomplete | None = None, - passive=..., - check_old: Incomplete | None = None, - pop: bool = False, - _adapt: bool = True, - ) -> None: ... - def set_committed_value(self, state, dict_, value): ... - def get_collection(self, state, dict_, user_data: Incomplete | None = None, passive=...): ... - -def backref_listeners(attribute, key, uselist): ... - -class History: - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - def empty(self): ... - def sum(self): ... - def non_deleted(self): ... - def non_added(self): ... - def has_changes(self): ... - def as_state(self): ... - @classmethod - def from_scalar_attribute(cls, attribute, state, current): ... - @classmethod - def from_object_attribute(cls, attribute, state, current, original=...): ... - @classmethod - def from_collection(cls, attribute, state, current): ... - -HISTORY_BLANK: Any - -def get_history(obj, key, passive=...): ... -def get_state_history(state, key, passive=...): ... -def has_parent(cls, obj, key, optimistic: bool = False): ... -def register_attribute(class_, key, **kw): ... -def register_attribute_impl( - class_, - key, - uselist: bool = False, - callable_: Incomplete | None = None, - useobject: bool = False, - impl_class: Incomplete | None = None, - backref: Incomplete | None = None, - **kw, -): ... -def register_descriptor( - class_, key, comparator: Incomplete | None = None, parententity: Incomplete | None = None, doc: Incomplete | None = None -): ... -def unregister_attribute(class_, key) -> None: ... -def init_collection(obj, key): ... -def init_state_collection(state, dict_, key): ... -def set_committed_value(instance, key, value) -> None: ... -def set_attribute(instance, key, value, initiator: Incomplete | None = None) -> None: ... -def get_attribute(instance, key): ... -def del_attribute(instance, key) -> None: ... -def flag_modified(instance, key) -> None: ... -def flag_dirty(instance) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi deleted file mode 100644 index f6e4a73b4..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/base.pyi +++ /dev/null @@ -1,76 +0,0 @@ -from typing import Any - -from ..util.langhelpers import memoized_property - -PASSIVE_NO_RESULT: Any -PASSIVE_CLASS_MISMATCH: Any -ATTR_WAS_SET: Any -ATTR_EMPTY: Any -NO_VALUE: Any -NEVER_SET: Any -NO_CHANGE: Any -CALLABLES_OK: Any -SQL_OK: Any -RELATED_OBJECT_OK: Any -INIT_OK: Any -NON_PERSISTENT_OK: Any -LOAD_AGAINST_COMMITTED: Any -NO_AUTOFLUSH: Any -NO_RAISE: Any -DEFERRED_HISTORY_LOAD: Any -PASSIVE_OFF: Any -PASSIVE_RETURN_NO_VALUE: Any -PASSIVE_NO_INITIALIZE: Any -PASSIVE_NO_FETCH: Any -PASSIVE_NO_FETCH_RELATED: Any -PASSIVE_ONLY_PERSISTENT: Any -PASSIVE_MERGE: Any -DEFAULT_MANAGER_ATTR: str -DEFAULT_STATE_ATTR: str -EXT_CONTINUE: Any -EXT_STOP: Any -EXT_SKIP: Any -ONETOMANY: Any -MANYTOONE: Any -MANYTOMANY: Any -NOT_EXTENSION: Any - -_never_set: frozenset[Any] -_none_set: frozenset[Any] - -def manager_of_class(cls): ... - -instance_state: Any -instance_dict: Any - -def instance_str(instance): ... -def state_str(state): ... -def state_class_str(state): ... -def attribute_str(instance, attribute): ... -def state_attribute_str(state, attribute): ... -def object_mapper(instance): ... -def object_state(instance): ... -def _class_to_mapper(class_or_mapper): ... -def _mapper_or_none(entity): ... -def _is_mapped_class(entity): ... - -_state_mapper: Any - -def class_mapper(class_, configure: bool = True): ... - -class InspectionAttr: - is_selectable: bool - is_aliased_class: bool - is_instance: bool - is_mapper: bool - is_bundle: bool - is_property: bool - is_attribute: bool - is_clause_element: bool - extension_type: Any - -class InspectionAttrInfo(InspectionAttr): - @memoized_property - def info(self): ... - -class _MappedAttribute: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/clsregistry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/clsregistry.pyi deleted file mode 100644 index 129b82fbb..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/clsregistry.pyi +++ /dev/null @@ -1,52 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -def add_class(classname, cls, decl_class_registry) -> None: ... -def remove_class(classname, cls, decl_class_registry) -> None: ... - -class _MultipleClassMarker: - on_remove: Any - contents: Any - def __init__(self, classes, on_remove: Incomplete | None = None) -> None: ... - def remove_item(self, cls) -> None: ... - def __iter__(self): ... - def attempt_get(self, path, key): ... - def add_item(self, item) -> None: ... - -class _ModuleMarker: - parent: Any - name: Any - contents: Any - mod_ns: Any - path: Any - def __init__(self, name, parent) -> None: ... - def __contains__(self, name): ... - def __getitem__(self, name): ... - def resolve_attr(self, key): ... - def get_module(self, name): ... - def add_class(self, name, cls): ... - def remove_class(self, name, cls) -> None: ... - -class _ModNS: - def __init__(self, parent) -> None: ... - def __getattr__(self, key: str): ... - -class _GetColumns: - cls: Any - def __init__(self, cls) -> None: ... - def __getattr__(self, key: str): ... - -class _GetTable: - key: Any - metadata: Any - def __init__(self, key, metadata) -> None: ... - def __getattr__(self, key: str): ... - -class _class_resolver: - cls: Any - prop: Any - arg: Any - fallback: Any - favor_tables: Any - def __init__(self, cls, prop, fallback, arg, favor_tables: bool = False) -> None: ... - def __call__(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi deleted file mode 100644 index 91d88b539..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/collections.pyi +++ /dev/null @@ -1,130 +0,0 @@ -from _typeshed import Incomplete, SupportsKeysAndGetItem -from collections.abc import Iterable -from typing import Any, TypeVar, overload -from typing_extensions import Literal, SupportsIndex - -from ..orm.attributes import Event -from ..util.langhelpers import _symbol, symbol - -_T = TypeVar("_T") -_KT = TypeVar("_KT") -_VT = TypeVar("_VT") - -class _PlainColumnGetter: - cols: Any - composite: Any - def __init__(self, cols) -> None: ... - def __reduce__(self): ... - def __call__(self, value): ... - -class _SerializableColumnGetter: - colkeys: Any - composite: Any - def __init__(self, colkeys) -> None: ... - def __reduce__(self): ... - def __call__(self, value): ... - -class _SerializableColumnGetterV2(_PlainColumnGetter): - colkeys: Any - composite: Any - def __init__(self, colkeys) -> None: ... - def __reduce__(self): ... - -def column_mapped_collection(mapping_spec): ... - -class _SerializableAttrGetter: - name: Any - getter: Any - def __init__(self, name) -> None: ... - def __call__(self, target): ... - def __reduce__(self): ... - -def attribute_mapped_collection(attr_name): ... -def mapped_collection(keyfunc): ... - -class collection: - @staticmethod - def appender(fn): ... - @staticmethod - def remover(fn): ... - @staticmethod - def iterator(fn): ... - @staticmethod - def internally_instrumented(fn): ... - @staticmethod - def converter(fn): ... - @staticmethod - def adds(arg): ... - @staticmethod - def replaces(arg): ... - @staticmethod - def removes(arg): ... - @staticmethod - def removes_return(): ... - -collection_adapter: Any - -class CollectionAdapter: - attr: Any - owner_state: Any - invalidated: bool - empty: bool - def __init__(self, attr, owner_state, data) -> None: ... - @property - def data(self): ... - def bulk_appender(self): ... - def append_with_event(self, item, initiator: Incomplete | None = None) -> None: ... - def append_without_event(self, item) -> None: ... - def append_multiple_without_event(self, items) -> None: ... - def bulk_remover(self): ... - def remove_with_event(self, item, initiator: Incomplete | None = None) -> None: ... - def remove_without_event(self, item) -> None: ... - def clear_with_event(self, initiator: Incomplete | None = None) -> None: ... - def clear_without_event(self) -> None: ... - def __iter__(self): ... - def __len__(self) -> int: ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - def fire_append_wo_mutation_event(self, item, initiator: Incomplete | None = None): ... - def fire_append_event(self, item, initiator: Incomplete | None = None): ... - def fire_remove_event(self, item, initiator: Incomplete | None = None) -> None: ... - def fire_pre_remove_event(self, initiator: Incomplete | None = None) -> None: ... - -class InstrumentedList(list[_T]): - def append(self, item, _sa_initiator: Event | Literal[False] | None = None) -> None: ... - def clear(self, index: SupportsIndex = -1) -> None: ... - def extend(self, iterable: Iterable[_T]) -> None: ... - def insert(self, index: SupportsIndex, value: _T) -> None: ... - def pop(self, index: SupportsIndex = -1) -> _T: ... - def remove(self, value: _T, _sa_initiator: Event | Literal[False] | None = None) -> None: ... - -class InstrumentedSet(set[_T]): - def add(self, value: _T, _sa_initiator: Event | Literal[False] | None = None) -> None: ... - def difference_update(self, value: Iterable[_T]) -> None: ... # type: ignore[override] - def discard(self, value: _T, _sa_initiator: Event | Literal[False] | None = None) -> None: ... - def intersection_update(self, other: Iterable[_T]) -> None: ... # type: ignore[override] - def remove(self, value: _T, _sa_initiator: Event | Literal[False] | None = None) -> None: ... - def symmetric_difference_update(self, other: Iterable[_T]) -> None: ... - def update(self, value: Iterable[_T]) -> None: ... # type: ignore[override] - -class InstrumentedDict(dict[_KT, _VT]): ... - -class MappedCollection(dict[_KT, _VT]): - keyfunc: Any - def __init__(self, keyfunc) -> None: ... - def set(self, value: _VT, _sa_initiator: Event | Literal[False] | None = None) -> None: ... - def remove(self, value: _VT, _sa_initiator: Event | Literal[False] | None = None) -> None: ... - def __delitem__(self, key: _KT, _sa_initiatorEvent: Event | Literal[False] | None = None) -> None: ... - def __setitem__(self, key: _KT, value: _VT, _sa_initiator: Event | Literal[False] | None = None) -> None: ... - @overload - def pop(self, key: _KT) -> _VT: ... - @overload - def pop(self, key: _KT, default: _VT | _T | _symbol | symbol = ...) -> _VT | _T: ... - @overload # type: ignore[override] - def setdefault(self, key: _KT, default: _T) -> _VT | _T: ... - @overload - def setdefault(self, key: _KT, default: None = None) -> _VT | None: ... - @overload - def update(self, __other: SupportsKeysAndGetItem[_KT, _VT] = ..., **kwargs: _VT) -> None: ... - @overload - def update(self, __other: Iterable[tuple[_KT, _VT]] = ..., **kwargs: _VT) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi deleted file mode 100644 index 1e3a3e618..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/context.pyi +++ /dev/null @@ -1,213 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..sql.base import CacheableOptions, CompileState, Options -from ..sql.selectable import SelectState - -LABEL_STYLE_LEGACY_ORM: Any - -class QueryContext: - class default_load_options(Options): ... - load_options: Any - execution_options: Any - bind_arguments: Any - compile_state: Any - query: Any - session: Any - loaders_require_buffering: bool - loaders_require_uniquing: bool - params: Any - create_eager_joins: Any - propagated_loader_options: Any - attributes: Any - runid: Any - partials: Any - post_load_paths: Any - autoflush: Any - populate_existing: Any - invoke_all_eagers: Any - version_check: Any - refresh_state: Any - yield_per: Any - identity_token: Any - def __init__( - self, - compile_state, - statement, - params, - session, - load_options, - execution_options: Incomplete | None = None, - bind_arguments: Incomplete | None = None, - ) -> None: ... - -class ORMCompileState(CompileState): - class default_compile_options(CacheableOptions): ... - current_path: Any - def __init__(self, *arg, **kw) -> None: ... - @classmethod - def create_for_statement(cls, statement_container, compiler, **kw) -> None: ... # type: ignore[override] - @classmethod - def get_column_descriptions(cls, statement): ... - @classmethod - def orm_pre_session_exec(cls, session, statement, params, execution_options, bind_arguments, is_reentrant_invoke): ... - @classmethod - def orm_setup_cursor_result(cls, session, statement, params, execution_options, bind_arguments, result): ... - -class ORMFromStatementCompileState(ORMCompileState): - multi_row_eager_loaders: bool - eager_adding_joins: bool - compound_eager_adapter: Any - extra_criteria_entities: Any - eager_joins: Any - use_legacy_query_style: Any - statement_container: Any - requested_statement: Any - dml_table: Any - compile_options: Any - statement: Any - current_path: Any - attributes: Any - global_attributes: Any - primary_columns: Any - secondary_columns: Any - dedupe_columns: Any - create_eager_joins: Any - order_by: Any - @classmethod - def create_for_statement(cls, statement_container, compiler, **kw): ... - -class ORMSelectCompileState(ORMCompileState, SelectState): - multi_row_eager_loaders: bool - eager_adding_joins: bool - compound_eager_adapter: Any - correlate: Any - correlate_except: Any - global_attributes: Any - select_statement: Any - for_statement: Any - use_legacy_query_style: Any - compile_options: Any - label_style: Any - current_path: Any - eager_order_by: Any - attributes: Any - primary_columns: Any - secondary_columns: Any - dedupe_columns: Any - eager_joins: Any - extra_criteria_entities: Any - create_eager_joins: Any - from_clauses: Any - @classmethod - def create_for_statement(cls, statement, compiler, **kw): ... - @classmethod - def determine_last_joined_entity(cls, statement): ... - @classmethod - def all_selected_columns(cls, statement) -> None: ... - @classmethod - def get_columns_clause_froms(cls, statement): ... - @classmethod - def from_statement(cls, statement, from_statement): ... - -class _QueryEntity: - use_id_for_hash: bool - @classmethod - def to_compile_state(cls, compile_state, entities, entities_collection, is_current_entities): ... - -class _MapperEntity(_QueryEntity): - expr: Any - mapper: Any - entity_zero: Any - is_aliased_class: Any - path: Any - selectable: Any - def __init__(self, compile_state, entity, entities_collection, is_current_entities) -> None: ... - supports_single_entity: bool - use_id_for_hash: bool - @property - def type(self): ... - @property - def entity_zero_or_selectable(self): ... - def corresponds_to(self, entity): ... - def row_processor(self, context, result): ... - def setup_compile_state(self, compile_state) -> None: ... - -class _BundleEntity(_QueryEntity): - bundle: Any - expr: Any - type: Any - supports_single_entity: Any - def __init__( - self, - compile_state, - expr, - entities_collection, - is_current_entities: bool, - setup_entities: bool = True, - parent_bundle: Incomplete | None = None, - ) -> None: ... - @property - def mapper(self): ... - @property - def entity_zero(self): ... - def corresponds_to(self, entity): ... - @property - def entity_zero_or_selectable(self): ... - def setup_compile_state(self, compile_state) -> None: ... - def row_processor(self, context, result): ... - -class _ColumnEntity(_QueryEntity): - raw_column_index: Any - translate_raw_column: Any - @property - def type(self): ... - def row_processor(self, context, result): ... - -class _RawColumnEntity(_ColumnEntity): - entity_zero: Any - mapper: Any - supports_single_entity: bool - expr: Any - raw_column_index: Any - translate_raw_column: Any - column: Any - entity_zero_or_selectable: Any - def __init__( - self, - compile_state, - column, - entities_collection, - raw_column_index, - is_current_entities: bool, - parent_bundle: Incomplete | None = None, - ) -> None: ... - def corresponds_to(self, entity): ... - def setup_compile_state(self, compile_state) -> None: ... - -class _ORMColumnEntity(_ColumnEntity): - supports_single_entity: bool - expr: Any - translate_raw_column: bool - raw_column_index: Any - entity_zero_or_selectable: Any - entity_zero: Any - mapper: Any - column: Any - def __init__( - self, - compile_state, - column, - entities_collection, - parententity, - raw_column_index, - is_current_entities: bool, - parent_bundle: Incomplete | None = None, - ) -> None: ... - def corresponds_to(self, entity): ... - def setup_compile_state(self, compile_state) -> None: ... - -class _IdentityTokenEntity(_ORMColumnEntity): - translate_raw_column: bool - def setup_compile_state(self, compile_state) -> None: ... - def row_processor(self, context, result): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi deleted file mode 100644 index 55ebd2b52..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_api.pyi +++ /dev/null @@ -1,146 +0,0 @@ -from _typeshed import Incomplete, Unused -from collections.abc import Callable -from typing import Any, ClassVar, TypeVar, overload -from typing_extensions import TypeAlias - -from ..engine.interfaces import Connectable -from ..sql.schema import MetaData -from ..util.langhelpers import hybridproperty -from . import interfaces - -_ClsT = TypeVar("_ClsT", bound=type[Any]) -_DeclT = TypeVar("_DeclT", bound=type[_DeclarativeBase]) - -# Dynamic class as created by registry.generate_base() via DeclarativeMeta -# or another metaclass. This class does not exist at runtime. -class _DeclarativeBase(Any): # type: ignore[misc] # super classes are dynamic - registry: ClassVar[registry] - metadata: ClassVar[MetaData] - __abstract__: ClassVar[bool] - # not always existing: - def __init__(self, *args: Any, **kwargs: Any) -> None: ... - __mapper_cls__: ClassVar[Any] - __class_getitem__: ClassVar[Any] - -# Meta class (or function) that creates a _DeclarativeBase class. -_DeclarativeBaseMeta: TypeAlias = Callable[[str, tuple[type[Any], ...], dict[str, Any]], _DeclT] - -def has_inherited_table(cls: type[Any]) -> bool: ... - -class DeclarativeMeta(type): - def __init__(cls, classname: str, bases: tuple[type[Any], ...], dict_: dict[str, Any], **kw: Unused) -> None: ... - def __setattr__(cls, key: str, value: Any) -> None: ... - def __delattr__(cls, key: str) -> None: ... - -def synonym_for(name, map_column: bool = False): ... - -class declared_attr(interfaces._MappedAttribute, property): - def __init__(self, fget, cascading: bool = False) -> None: ... - def __get__(self, self_, cls): ... - @hybridproperty - def cascading(self): ... - -class _stateful_declared_attr(declared_attr): - kw: Any - def __init__(self, **kw) -> None: ... - def __call__(self, fn): ... - -def declarative_mixin(cls: _ClsT) -> _ClsT: ... -@overload -def declarative_base( - bind: Connectable | None = None, - metadata: MetaData | None = None, - mapper: Incomplete | None = None, - cls: type[Any] | tuple[type[Any], ...] = ..., - name: str = "Base", - constructor: Callable[..., None] = ..., - class_registry: dict[str, type[Any]] | None = None, -) -> type[_DeclarativeBase]: ... -@overload -def declarative_base( - bind: Connectable | None = None, - metadata: MetaData | None = None, - mapper: Incomplete | None = None, - cls: type[Any] | tuple[type[Any], ...] = ..., - name: str = "Base", - constructor: Callable[..., None] = ..., - class_registry: dict[str, type[Any]] | None = None, - *, - metaclass: _DeclarativeBaseMeta[_DeclT], -) -> _DeclT: ... -@overload -def declarative_base( - bind: Connectable | None, - metadata: MetaData | None, - mapper: Incomplete | None, - cls: type[Any] | tuple[type[Any], ...], - name: str, - constructor: Callable[..., None], - class_registry: dict[str, type[Any]] | None, - metaclass: _DeclarativeBaseMeta[_DeclT], -) -> _DeclT: ... - -class registry: - metadata: MetaData - constructor: Callable[..., None] - def __init__( - self, - metadata: MetaData | None = None, - class_registry: dict[str, type[Any]] | None = None, - constructor: Callable[..., None] = ..., - _bind: Connectable | None = None, - ) -> None: ... - @property - def mappers(self) -> frozenset[Any]: ... - def configure(self, cascade: bool = False) -> None: ... - def dispose(self, cascade: bool = False) -> None: ... - @overload - def generate_base( - self, mapper: Incomplete | None = None, cls: type[Any] | tuple[type[Any], ...] = ..., name: str = "Base" - ) -> type[_DeclarativeBase]: ... - @overload - def generate_base( - self, - mapper: Incomplete | None = None, - cls: type[Any] | tuple[type[Any], ...] = ..., - name: str = "Base", - *, - metaclass: _DeclarativeBaseMeta[_DeclT], - ) -> _DeclT: ... - @overload - def generate_base( - self, - mapper: Incomplete | None, - cls: type[Any] | tuple[type[Any], ...], - name: str, - metaclass: _DeclarativeBaseMeta[_DeclT], - ) -> type[_DeclarativeBase]: ... - def mapped(self, cls: _ClsT) -> _ClsT: ... - # Return type of the callable is a _DeclarativeBase class with the passed in class as base. - # This could be better approximated with Intersection[PassedInClass, _DeclarativeBase]. - @overload - def as_declarative_base(self, *, mapper: Incomplete | None = ...) -> Callable[[_ClsT], _ClsT | DeclarativeMeta | Any]: ... - @overload - def as_declarative_base( - self, *, mapper: Incomplete | None = ..., metaclass: _DeclarativeBaseMeta[_DeclT] - ) -> Callable[[_ClsT], _ClsT | _DeclT | Any]: ... - def map_declaratively(self, cls): ... - def map_imperatively(self, class_, local_table: Incomplete | None = None, **kw): ... - -@overload -def as_declarative( - *, - bind: Connectable | None = ..., - metadata: MetaData | None = ..., - class_registry: dict[str, type[Any]] | None = ..., - mapper: Incomplete | None = ..., -) -> Callable[[_ClsT], _ClsT | DeclarativeMeta | Any]: ... -@overload -def as_declarative( - *, - bind: Connectable | None = ..., - metadata: MetaData | None = ..., - class_registry: dict[str, type[Any]] | None = ..., - mapper: Incomplete | None = ..., - metaclass: _DeclarativeBaseMeta[_DeclT], -) -> Callable[[_ClsT], _ClsT | _DeclT | Any]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_base.pyi deleted file mode 100644 index 7aab93cf9..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/decl_base.pyi +++ /dev/null @@ -1,47 +0,0 @@ -from typing import Any - -class _MapperConfig: - @classmethod - def setup_mapping(cls, registry, cls_, dict_, table, mapper_kw): ... - cls: Any - classname: Any - properties: Any - declared_attr_reg: Any - def __init__(self, registry, cls_, mapper_kw) -> None: ... - def set_cls_attribute(self, attrname, value): ... - -class _ImperativeMapperConfig(_MapperConfig): - dict_: Any - local_table: Any - inherits: Any - def __init__(self, registry, cls_, table, mapper_kw) -> None: ... - def map(self, mapper_kw=...): ... - -class _ClassScanMapperConfig(_MapperConfig): - dict_: Any - local_table: Any - persist_selectable: Any - declared_columns: Any - column_copies: Any - table_args: Any - tablename: Any - mapper_args: Any - mapper_args_fn: Any - inherits: Any - def __init__(self, registry, cls_, dict_, table, mapper_kw) -> None: ... - def map(self, mapper_kw=...): ... - -class _DeferredMapperConfig(_ClassScanMapperConfig): - @property - def cls(self): ... - @cls.setter - def cls(self, class_) -> None: ... - @classmethod - def has_cls(cls, class_): ... - @classmethod - def raise_unmapped_for_cls(cls, class_) -> None: ... - @classmethod - def config_for_cls(cls, class_): ... - @classmethod - def classes_for_base(cls, base_cls, sort: bool = True): ... - def map(self, mapper_kw=...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dependency.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dependency.pyi deleted file mode 100644 index 8fe92087d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dependency.pyi +++ /dev/null @@ -1,74 +0,0 @@ -from typing import Any - -class DependencyProcessor: - prop: Any - cascade: Any - mapper: Any - parent: Any - secondary: Any - direction: Any - post_update: Any - passive_deletes: Any - passive_updates: Any - enable_typechecks: Any - sort_key: Any - key: Any - def __init__(self, prop) -> None: ... - @classmethod - def from_relationship(cls, prop): ... - def hasparent(self, state): ... - def per_property_preprocessors(self, uow) -> None: ... - def per_property_flush_actions(self, uow) -> None: ... - def per_state_flush_actions(self, uow, states, isdelete) -> None: ... - def presort_deletes(self, uowcommit, states): ... - def presort_saves(self, uowcommit, states): ... - def process_deletes(self, uowcommit, states) -> None: ... - def process_saves(self, uowcommit, states) -> None: ... - def prop_has_changes(self, uowcommit, states, isdelete): ... - -class OneToManyDP(DependencyProcessor): - def per_property_dependencies( - self, uow, parent_saves, child_saves, parent_deletes, child_deletes, after_save, before_delete - ) -> None: ... - def per_state_dependencies( - self, uow, save_parent, delete_parent, child_action, after_save, before_delete, isdelete, childisdelete - ) -> None: ... - def presort_deletes(self, uowcommit, states) -> None: ... - def presort_saves(self, uowcommit, states) -> None: ... - def process_deletes(self, uowcommit, states) -> None: ... - def process_saves(self, uowcommit, states) -> None: ... - -class ManyToOneDP(DependencyProcessor): - def __init__(self, prop) -> None: ... - def per_property_dependencies( - self, uow, parent_saves, child_saves, parent_deletes, child_deletes, after_save, before_delete - ) -> None: ... - def per_state_dependencies( - self, uow, save_parent, delete_parent, child_action, after_save, before_delete, isdelete, childisdelete - ) -> None: ... - def presort_deletes(self, uowcommit, states) -> None: ... - def presort_saves(self, uowcommit, states) -> None: ... - def process_deletes(self, uowcommit, states) -> None: ... - def process_saves(self, uowcommit, states) -> None: ... - -class DetectKeySwitch(DependencyProcessor): - def per_property_preprocessors(self, uow) -> None: ... - def per_property_flush_actions(self, uow) -> None: ... - def per_state_flush_actions(self, uow, states, isdelete) -> None: ... - def presort_deletes(self, uowcommit, states) -> None: ... - def presort_saves(self, uow, states) -> None: ... - def prop_has_changes(self, uow, states, isdelete): ... - def process_deletes(self, uowcommit, states) -> None: ... - def process_saves(self, uowcommit, states) -> None: ... - -class ManyToManyDP(DependencyProcessor): - def per_property_dependencies( - self, uow, parent_saves, child_saves, parent_deletes, child_deletes, after_save, before_delete - ) -> None: ... - def per_state_dependencies( - self, uow, save_parent, delete_parent, child_action, after_save, before_delete, isdelete, childisdelete - ) -> None: ... - def presort_deletes(self, uowcommit, states) -> None: ... - def presort_saves(self, uowcommit, states) -> None: ... - def process_deletes(self, uowcommit, states) -> None: ... - def process_saves(self, uowcommit, states) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi deleted file mode 100644 index bf249bc25..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/descriptor_props.pyi +++ /dev/null @@ -1,74 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, ClassVar, Generic, TypeVar - -from ..sql.operators import ColumnOperators -from ..util.langhelpers import memoized_property -from . import util as orm_util -from .interfaces import MapperProperty, PropComparator - -_T = TypeVar("_T") - -class DescriptorProperty(MapperProperty): - doc: Any - uses_objects: bool - key: Any - descriptor: Any - def instrument_class(self, mapper): ... - -class CompositeProperty(DescriptorProperty): - attrs: Any - composite_class: Any - active_history: Any - deferred: Any - group: Any - comparator_factory: Any - info: Any - def __init__(self, class_, *attrs, **kwargs) -> None: ... - def instrument_class(self, mapper) -> None: ... - def do_init(self) -> None: ... - @memoized_property - def props(self): ... - @property - def columns(self): ... - def get_history(self, state, dict_, passive=...): ... - - class CompositeBundle(orm_util.Bundle): - property: Any - def __init__(self, property_, expr) -> None: ... - def create_row_processor(self, query, procs, labels): ... - - class Comparator(PropComparator[_T], Generic[_T]): - __hash__: ClassVar[None] # type: ignore[assignment] - @memoized_property - def clauses(self): ... - def __clause_element__(self): ... - @memoized_property - def expression(self): ... - def __eq__(self, other) -> ColumnOperators[_T]: ... # type: ignore[override] - def __ne__(self, other) -> ColumnOperators[_T]: ... # type: ignore[override] - -class ConcreteInheritedProperty(DescriptorProperty): - descriptor: Any - def __init__(self): ... - -class SynonymProperty(DescriptorProperty): - name: Any - map_column: Any - descriptor: Any - comparator_factory: Any - doc: Any - info: Any - def __init__( - self, - name, - map_column: Incomplete | None = None, - descriptor: Incomplete | None = None, - comparator_factory: Incomplete | None = None, - doc: Incomplete | None = None, - info: Incomplete | None = None, - ) -> None: ... - @property - def uses_objects(self): ... - def get_history(self, *arg, **kw): ... - parent: Any - def set_parent(self, parent, init) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dynamic.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dynamic.pyi deleted file mode 100644 index 6008d1d9f..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/dynamic.pyi +++ /dev/null @@ -1,85 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, Generic, TypeVar - -from . import attributes, strategies -from .query import Query - -_T = TypeVar("_T") - -class DynaLoader(strategies.AbstractRelationshipLoader): - logger: Any - is_class_level: bool - def init_class_attribute(self, mapper) -> None: ... - -class DynamicAttributeImpl(attributes.AttributeImpl): - uses_objects: bool - default_accepts_scalar_loader: bool - supports_population: bool - collection: bool - dynamic: bool - order_by: Any - target_mapper: Any - query_class: Any - def __init__( - self, class_, key, typecallable, dispatch, target_mapper, order_by, query_class: Incomplete | None = None, **kw - ) -> None: ... - def get(self, state, dict_, passive=...): ... - def get_collection(self, state, dict_, user_data: Incomplete | None = None, passive=...): ... - def fire_append_event(self, state, dict_, value, initiator, collection_history: Incomplete | None = None) -> None: ... - def fire_remove_event(self, state, dict_, value, initiator, collection_history: Incomplete | None = None) -> None: ... - def set( - self, - state, - dict_, - value, - initiator: Incomplete | None = None, - passive=..., - check_old: Incomplete | None = None, - pop: bool = False, - _adapt: bool = True, - ) -> None: ... - def delete(self, *args, **kwargs) -> None: ... - def set_committed_value(self, state, dict_, value) -> None: ... - def get_history(self, state, dict_, passive=...): ... - def get_all_pending(self, state, dict_, passive=...): ... - def append(self, state, dict_, value, initiator, passive=...) -> None: ... - def remove(self, state, dict_, value, initiator, passive=...) -> None: ... - def pop(self, state, dict_, value, initiator, passive=...) -> None: ... - -class DynamicCollectionAdapter: - data: Any - def __init__(self, data) -> None: ... - def __iter__(self): ... - def __len__(self) -> int: ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - -class AppenderMixin: - query_class: Any - instance: Any - attr: Any - def __init__(self, attr, state) -> None: ... - session: Any - def __getitem__(self, index): ... - def count(self): ... - def extend(self, iterator) -> None: ... - def append(self, item) -> None: ... - def remove(self, item) -> None: ... - -class AppenderQuery(AppenderMixin, Query[_T], Generic[_T]): ... - -def mixin_user_query(cls): ... - -class CollectionHistory: - unchanged_items: Any - added_items: Any - deleted_items: Any - def __init__(self, attr, state, apply_to: Incomplete | None = None) -> None: ... - @property - def added_plus_unchanged(self): ... - @property - def all_items(self): ... - def as_history(self): ... - def indexed(self, index): ... - def add_added(self, value) -> None: ... - def add_removed(self, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/evaluator.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/evaluator.pyi deleted file mode 100644 index 1e4cf1b01..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/evaluator.pyi +++ /dev/null @@ -1,25 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..sql import operators - -class UnevaluatableError(Exception): ... - -class _NoObject(operators.ColumnOperators[Any]): - def operate(self, *arg, **kw) -> None: ... - def reverse_operate(self, *arg, **kw) -> None: ... - -class EvaluatorCompiler: - target_cls: Any - def __init__(self, target_cls: Incomplete | None = None) -> None: ... - def process(self, *clauses): ... - def visit_grouping(self, clause): ... - def visit_null(self, clause): ... - def visit_false(self, clause): ... - def visit_true(self, clause): ... - def visit_column(self, clause): ... - def visit_tuple(self, clause): ... - def visit_clauselist(self, clause): ... - def visit_binary(self, clause): ... - def visit_unary(self, clause): ... - def visit_bindparam(self, clause): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/events.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/events.pyi deleted file mode 100644 index 36a6414fc..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/events.pyi +++ /dev/null @@ -1,104 +0,0 @@ -from typing import Any - -from .. import event - -class InstrumentationEvents(event.Events): - def class_instrument(self, cls) -> None: ... - def class_uninstrument(self, cls) -> None: ... - def attribute_instrument(self, cls, key, inst) -> None: ... - -class _InstrumentationEventsHold: - class_: Any - def __init__(self, class_) -> None: ... - dispatch: Any - -class InstanceEvents(event.Events): - def first_init(self, manager, cls) -> None: ... - def init(self, target, args, kwargs) -> None: ... - def init_failure(self, target, args, kwargs) -> None: ... - def load(self, target, context) -> None: ... - def refresh(self, target, context, attrs) -> None: ... - def refresh_flush(self, target, flush_context, attrs) -> None: ... - def expire(self, target, attrs) -> None: ... - def pickle(self, target, state_dict) -> None: ... - def unpickle(self, target, state_dict) -> None: ... - -class _EventsHold(event.RefCollection): - class_: Any - def __init__(self, class_) -> None: ... - - class HoldEvents: ... - - def remove(self, event_key) -> None: ... - @classmethod - def populate(cls, class_, subject) -> None: ... - -class _InstanceEventsHold(_EventsHold): - all_holds: Any - def resolve(self, class_): ... - - class HoldInstanceEvents(_EventsHold.HoldEvents, InstanceEvents): ... - dispatch: Any - -class MapperEvents(event.Events): - def instrument_class(self, mapper, class_) -> None: ... - def before_mapper_configured(self, mapper, class_) -> None: ... - def mapper_configured(self, mapper, class_) -> None: ... - def before_configured(self) -> None: ... - def after_configured(self) -> None: ... - def before_insert(self, mapper, connection, target) -> None: ... - def after_insert(self, mapper, connection, target) -> None: ... - def before_update(self, mapper, connection, target) -> None: ... - def after_update(self, mapper, connection, target) -> None: ... - def before_delete(self, mapper, connection, target) -> None: ... - def after_delete(self, mapper, connection, target) -> None: ... - -class _MapperEventsHold(_EventsHold): - all_holds: Any - def resolve(self, class_): ... - - class HoldMapperEvents(_EventsHold.HoldEvents, MapperEvents): ... - dispatch: Any - -class SessionEvents(event.Events): - def do_orm_execute(self, orm_execute_state) -> None: ... - def after_transaction_create(self, session, transaction) -> None: ... - def after_transaction_end(self, session, transaction) -> None: ... - def before_commit(self, session) -> None: ... - def after_commit(self, session) -> None: ... - def after_rollback(self, session) -> None: ... - def after_soft_rollback(self, session, previous_transaction) -> None: ... - def before_flush(self, session, flush_context, instances) -> None: ... - def after_flush(self, session, flush_context) -> None: ... - def after_flush_postexec(self, session, flush_context) -> None: ... - def after_begin(self, session, transaction, connection) -> None: ... - def before_attach(self, session, instance) -> None: ... - def after_attach(self, session, instance) -> None: ... - def after_bulk_update(self, update_context) -> None: ... - def after_bulk_delete(self, delete_context) -> None: ... - def transient_to_pending(self, session, instance) -> None: ... - def pending_to_transient(self, session, instance) -> None: ... - def persistent_to_transient(self, session, instance) -> None: ... - def pending_to_persistent(self, session, instance) -> None: ... - def detached_to_persistent(self, session, instance) -> None: ... - def loaded_as_persistent(self, session, instance) -> None: ... - def persistent_to_deleted(self, session, instance) -> None: ... - def deleted_to_persistent(self, session, instance) -> None: ... - def deleted_to_detached(self, session, instance) -> None: ... - def persistent_to_detached(self, session, instance) -> None: ... - -class AttributeEvents(event.Events): - def append(self, target, value, initiator) -> None: ... - def append_wo_mutation(self, target, value, initiator) -> None: ... - def bulk_replace(self, target, values, initiator) -> None: ... - def remove(self, target, value, initiator) -> None: ... - def set(self, target, value, oldvalue, initiator) -> None: ... - def init_scalar(self, target, value, dict_) -> None: ... - def init_collection(self, target, collection, collection_adapter) -> None: ... - def dispose_collection(self, target, collection, collection_adapter) -> None: ... - def modified(self, target, initiator) -> None: ... - -class QueryEvents(event.Events): - def before_compile(self, query) -> None: ... - def before_compile_update(self, query, update_context) -> None: ... - def before_compile_delete(self, query, delete_context) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi deleted file mode 100644 index b589abf2f..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/exc.pyi +++ /dev/null @@ -1,35 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from .. import exc as sa_exc -from ..exc import NoResultFound as NoResultFound - -NO_STATE: Any - -class StaleDataError(sa_exc.SQLAlchemyError): ... - -ConcurrentModificationError = StaleDataError - -class FlushError(sa_exc.SQLAlchemyError): ... -class UnmappedError(sa_exc.InvalidRequestError): ... -class ObjectDereferencedError(sa_exc.SQLAlchemyError): ... - -class DetachedInstanceError(sa_exc.SQLAlchemyError): - code: str - -class UnmappedInstanceError(UnmappedError): - def __init__(self, obj, msg: Incomplete | None = None) -> None: ... - def __reduce__(self): ... - -class UnmappedClassError(UnmappedError): - def __init__(self, cls, msg: Incomplete | None = None) -> None: ... - def __reduce__(self): ... - -class ObjectDeletedError(sa_exc.InvalidRequestError): - def __init__(self, state, msg: Incomplete | None = None) -> None: ... - def __reduce__(self): ... - -class UnmappedColumnError(sa_exc.InvalidRequestError): ... - -class LoaderStrategyException(sa_exc.InvalidRequestError): - def __init__(self, applied_to_property_type, requesting_property, applies_to, actual_strategy_type, strategy_key) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/identity.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/identity.pyi deleted file mode 100644 index 59f767906..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/identity.pyi +++ /dev/null @@ -1,31 +0,0 @@ -from _typeshed import Incomplete - -class IdentityMap: - def keys(self): ... - def replace(self, state) -> None: ... - def add(self, state) -> None: ... - def update(self, dict_) -> None: ... - def clear(self) -> None: ... - def check_modified(self): ... - def has_key(self, key): ... - def popitem(self) -> None: ... - def pop(self, key, *args) -> None: ... - def setdefault(self, key, default: Incomplete | None = None) -> None: ... - def __len__(self) -> int: ... - def copy(self) -> None: ... - def __setitem__(self, key, value) -> None: ... - def __delitem__(self, key) -> None: ... - -class WeakInstanceDict(IdentityMap): - def __getitem__(self, key): ... - def __contains__(self, key): ... - def contains_state(self, state): ... - def replace(self, state): ... - def add(self, state): ... - def get(self, key, default: Incomplete | None = None): ... - def items(self): ... - def values(self): ... - def __iter__(self): ... - def all_states(self): ... - def discard(self, state) -> None: ... - def safe_discard(self, state) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi deleted file mode 100644 index b808e3dd3..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/instrumentation.pyi +++ /dev/null @@ -1,92 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..util.langhelpers import HasMemoized, hybridmethod -from . import base - -DEL_ATTR: Any - -instrumentation_finders: Any - -class ClassManager(HasMemoized, dict[Any, Any]): - MANAGER_ATTR: Any - STATE_ATTR: Any - expired_attribute_loader: Any - init_method: Any - factory: Any - mapper: Any - declarative_scan: Any - registry: Any - @property - def deferred_scalar_loader(self): ... - @deferred_scalar_loader.setter - def deferred_scalar_loader(self, obj) -> None: ... - class_: Any - info: Any - new_init: Any - local_attrs: Any - originals: Any - dispatch: Incomplete - def __init__(self, class_) -> None: ... - def __hash__(self) -> int: ... # type: ignore[override] - def __eq__(self, other): ... - @property - def is_mapped(self): ... - # Will be overwritten when mapped - # def mapper(self) -> None: ... - def manage(self) -> None: ... - @hybridmethod - def manager_getter(self): ... - @hybridmethod - def state_getter(self): ... - @hybridmethod - def dict_getter(self): ... - def instrument_attribute(self, key, inst, propagated: bool = False) -> None: ... - def subclass_managers(self, recursive) -> None: ... - def post_configure_attribute(self, key) -> None: ... - def uninstrument_attribute(self, key, propagated: bool = False) -> None: ... - def unregister(self) -> None: ... - def install_descriptor(self, key, inst) -> None: ... - def uninstall_descriptor(self, key) -> None: ... - def install_member(self, key, implementation) -> None: ... - def uninstall_member(self, key) -> None: ... - def instrument_collection_class(self, key, collection_class): ... - def initialize_collection(self, key, state, factory): ... - def is_instrumented(self, key, search: bool = False): ... - def get_impl(self, key): ... - @property - def attributes(self): ... - def new_instance(self, state: Incomplete | None = None): ... - def setup_instance(self, instance, state: Incomplete | None = None) -> None: ... - def teardown_instance(self, instance) -> None: ... - def has_state(self, instance): ... - def has_parent(self, state, key, optimistic: bool = False): ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - -class _SerializeManager: - class_: Any - def __init__(self, state, d) -> None: ... - def __call__(self, state, inst, state_dict) -> None: ... - -class InstrumentationFactory: - dispatch: Incomplete - def create_manager_for_cls(self, class_): ... - def unregister(self, class_) -> None: ... - -instance_state: Any - -instance_dict: Any -manager_of_class = base.manager_of_class - -def register_class( - class_, - finalize: bool = True, - mapper: Incomplete | None = None, - registry: Incomplete | None = None, - declarative_scan: Incomplete | None = None, - expired_attribute_loader: Incomplete | None = None, - init_method: Incomplete | None = None, -): ... -def unregister_class(class_) -> None: ... -def is_instrumented(instance, key): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi deleted file mode 100644 index 8a3c2e298..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/interfaces.pyi +++ /dev/null @@ -1,133 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, Generic, TypeVar - -from .. import util -from ..sql import operators, roles -from ..sql.base import ExecutableOption -from ..sql.traversals import HasCacheKey -from .base import ( - EXT_CONTINUE as EXT_CONTINUE, - EXT_SKIP as EXT_SKIP, - EXT_STOP as EXT_STOP, - MANYTOMANY as MANYTOMANY, - MANYTOONE as MANYTOONE, - NOT_EXTENSION as NOT_EXTENSION, - ONETOMANY as ONETOMANY, - InspectionAttr as InspectionAttr, - InspectionAttrInfo as InspectionAttrInfo, - _MappedAttribute as _MappedAttribute, -) - -_T = TypeVar("_T") - -__all__ = ( - "EXT_CONTINUE", - "EXT_STOP", - "EXT_SKIP", - "ONETOMANY", - "MANYTOMANY", - "MANYTOONE", - "NOT_EXTENSION", - "LoaderStrategy", - "MapperOption", - "LoaderOption", - "MapperProperty", - "PropComparator", - "StrategizedProperty", -) - -class ORMStatementRole(roles.StatementRole): ... -class ORMColumnsClauseRole(roles.ColumnsClauseRole): ... -class ORMEntityColumnsClauseRole(ORMColumnsClauseRole): ... -class ORMFromClauseRole(roles.StrictFromClauseRole): ... - -class MapperProperty(HasCacheKey, _MappedAttribute, InspectionAttr, util.MemoizedSlots): - cascade: Any - is_property: bool - key: Incomplete - info: Incomplete - def setup(self, context, query_entity, path, adapter, **kwargs) -> None: ... - def create_row_processor(self, context, query_entity, path, mapper, result, adapter, populators) -> None: ... - def cascade_iterator(self, type_, state, dict_, visited_states, halt_on: Incomplete | None = None): ... - parent: Any - def set_parent(self, parent, init) -> None: ... - def instrument_class(self, mapper) -> None: ... - def __init__(self) -> None: ... - def init(self) -> None: ... - @property - def class_attribute(self): ... - def do_init(self) -> None: ... - def post_instrument_class(self, mapper) -> None: ... - def merge( - self, session, source_state, source_dict, dest_state, dest_dict, load, _recursive, _resolve_conflict_map - ) -> None: ... - -class PropComparator(operators.ColumnOperators[_T], Generic[_T]): - __visit_name__: str - prop: Any - property: Any - def __init__(self, prop, parentmapper, adapt_to_entity: Incomplete | None = None) -> None: ... - def __clause_element__(self) -> None: ... - def adapt_to_entity(self, adapt_to_entity): ... - @property - def adapter(self): ... - @property - def info(self): ... - @staticmethod - def any_op(a, b, **kwargs): ... - @staticmethod - def has_op(a, b, **kwargs): ... - @staticmethod - def of_type_op(a, class_): ... - def of_type(self, class_): ... - def and_(self, *criteria): ... - def any(self, criterion: Incomplete | None = None, **kwargs): ... - def has(self, criterion: Incomplete | None = None, **kwargs): ... - -class StrategizedProperty(MapperProperty): - inherit_cache: bool - strategy_wildcard_key: Any - def setup(self, context, query_entity, path, adapter, **kwargs) -> None: ... - def create_row_processor(self, context, query_entity, path, mapper, result, adapter, populators) -> None: ... - strategy: Any - def do_init(self) -> None: ... - def post_instrument_class(self, mapper) -> None: ... - @classmethod - def strategy_for(cls, **kw): ... - -class ORMOption(ExecutableOption): - propagate_to_loaders: bool - -class CompileStateOption(HasCacheKey, ORMOption): - def process_compile_state(self, compile_state) -> None: ... - def process_compile_state_replaced_entities(self, compile_state, mapper_entities) -> None: ... - -class LoaderOption(CompileStateOption): - def process_compile_state_replaced_entities(self, compile_state, mapper_entities) -> None: ... - def process_compile_state(self, compile_state) -> None: ... - -class CriteriaOption(CompileStateOption): - def process_compile_state(self, compile_state) -> None: ... - def get_global_criteria(self, attributes) -> None: ... - -class UserDefinedOption(ORMOption): - propagate_to_loaders: bool - payload: Any - def __init__(self, payload: Incomplete | None = None) -> None: ... - -class MapperOption(ORMOption): - propagate_to_loaders: bool - def process_query(self, query) -> None: ... - def process_query_conditionally(self, query) -> None: ... - -class LoaderStrategy: - parent_property: Any - is_class_level: bool - parent: Any - key: Any - strategy_key: Any - strategy_opts: Any - def __init__(self, parent, strategy_key) -> None: ... - def init_class_attribute(self, mapper) -> None: ... - def setup_query(self, compile_state, query_entity, path, loadopt, adapter, **kwargs) -> None: ... - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/loading.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/loading.pyi deleted file mode 100644 index 328b33ef1..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/loading.pyi +++ /dev/null @@ -1,47 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -def instances(cursor, context): ... -def merge_frozen_result(session, statement, frozen_result, load: bool = True): ... -def merge_result(query, iterator, load: bool = True): ... -def get_from_identity(session, mapper, key, passive): ... -def load_on_ident( - session, - statement, - key, - load_options: Incomplete | None = None, - refresh_state: Incomplete | None = None, - with_for_update: Incomplete | None = None, - only_load_props: Incomplete | None = None, - no_autoflush: bool = False, - bind_arguments=..., - execution_options=..., -): ... -def load_on_pk_identity( - session, - statement, - primary_key_identity, - load_options: Incomplete | None = None, - refresh_state: Incomplete | None = None, - with_for_update: Incomplete | None = None, - only_load_props: Incomplete | None = None, - identity_token: Incomplete | None = None, - no_autoflush: bool = False, - bind_arguments=..., - execution_options=..., -): ... - -class PostLoad: - loaders: Any - states: Any - load_keys: Any - def add_state(self, state, overwrite) -> None: ... - def invoke(self, context, path) -> None: ... - @classmethod - def for_context(cls, context, path, only_load_props): ... - @classmethod - def path_exists(cls, context, path, key): ... - @classmethod - def callable_for_path(cls, context, path, limit_to_mapper, token, loader_callable, *arg, **kw) -> None: ... - -def load_scalar_attributes(mapper, state, attribute_names, passive) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi deleted file mode 100644 index 7cc169c1c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/mapper.pyi +++ /dev/null @@ -1,145 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..sql import base as sql_base -from ..util.langhelpers import HasMemoized, memoized_property -from .base import ( - _class_to_mapper as _class_to_mapper, - _state_mapper as _state_mapper, - class_mapper as class_mapper, - state_str as state_str, -) -from .interfaces import InspectionAttr, ORMEntityColumnsClauseRole, ORMFromClauseRole - -NO_ATTRIBUTE: Any - -class Mapper(ORMFromClauseRole, ORMEntityColumnsClauseRole, sql_base.MemoizedHasCacheKey, InspectionAttr): - logger: Any - class_: Any - class_manager: Any - non_primary: Any - always_refresh: Any - version_id_prop: Any - version_id_col: Any - version_id_generator: bool - concrete: Any - single: bool - inherits: Any - local_table: Any - inherit_condition: Any - inherit_foreign_keys: Any - batch: Any - eager_defaults: Any - column_prefix: Any - polymorphic_on: Any - validators: Any - passive_updates: Any - passive_deletes: Any - legacy_is_orphan: Any - allow_partial_pks: Any - confirm_deleted_rows: bool - polymorphic_load: Any - polymorphic_identity: Any - polymorphic_map: Any - include_properties: Any - exclude_properties: Any - dispatch: Incomplete - def __init__( - self, - class_, - local_table: Incomplete | None = None, - properties: Incomplete | None = None, - primary_key: Incomplete | None = None, - non_primary: bool = False, - inherits: Incomplete | None = None, - inherit_condition: Incomplete | None = None, - inherit_foreign_keys: Incomplete | None = None, - always_refresh: bool = False, - version_id_col: Incomplete | None = None, - version_id_generator: Incomplete | None = None, - polymorphic_on: Incomplete | None = None, - _polymorphic_map: Incomplete | None = None, - polymorphic_identity: Incomplete | None = None, - concrete: bool = False, - with_polymorphic: Incomplete | None = None, - polymorphic_load: Incomplete | None = None, - allow_partial_pks: bool = True, - batch: bool = True, - column_prefix: Incomplete | None = None, - include_properties: Incomplete | None = None, - exclude_properties: Incomplete | None = None, - passive_updates: bool = True, - passive_deletes: bool = False, - confirm_deleted_rows: bool = True, - eager_defaults: bool = False, - legacy_is_orphan: bool = False, - _compiled_cache_size: int = 100, - ): ... - is_mapper: bool - represents_outer_join: bool - @property - def mapper(self): ... - @property - def entity(self): ... - persist_selectable: Any - configured: bool - tables: Any - primary_key: Any - base_mapper: Any - columns: Any - c: Any - @property - def mapped_table(self): ... - def add_properties(self, dict_of_properties) -> None: ... - def add_property(self, key, prop) -> None: ... - def has_property(self, key): ... - def get_property(self, key, _configure_mappers: bool = True): ... - def get_property_by_column(self, column): ... - @property - def iterate_properties(self): ... - with_polymorphic_mappers: Any - def __clause_element__(self): ... - @memoized_property - def select_identity_token(self): ... - @property - def selectable(self): ... - @HasMemoized.memoized_attribute - def attrs(self): ... - @HasMemoized.memoized_attribute - def all_orm_descriptors(self): ... - @HasMemoized.memoized_attribute - def synonyms(self): ... - @property - def entity_namespace(self): ... - @HasMemoized.memoized_attribute - def column_attrs(self): ... - @HasMemoized.memoized_attribute - def relationships(self): ... - @HasMemoized.memoized_attribute - def composites(self): ... - def common_parent(self, other): ... - def is_sibling(self, other): ... - def isa(self, other): ... - def iterate_to_root(self) -> None: ... - @HasMemoized.memoized_attribute - def self_and_descendants(self): ... - def polymorphic_iterator(self): ... - def primary_mapper(self): ... - @property - def primary_base_mapper(self): ... - def identity_key_from_row(self, row, identity_token: Incomplete | None = None, adapter: Incomplete | None = None): ... - def identity_key_from_primary_key(self, primary_key, identity_token: Incomplete | None = None): ... - def identity_key_from_instance(self, instance): ... - def primary_key_from_instance(self, instance): ... - def cascade_iterator(self, type_, state, halt_on: Incomplete | None = None) -> None: ... - -class _OptGetColumnsNotAvailable(Exception): ... - -def configure_mappers() -> None: ... -def reconstructor(fn): ... -def validates(*names, **kw): ... - -class _ColumnMapping(dict[Any, Any]): - mapper: Any - def __init__(self, mapper) -> None: ... - def __missing__(self, column) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi deleted file mode 100644 index 370731d64..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/path_registry.pyi +++ /dev/null @@ -1,107 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, ClassVar - -from ..sql.traversals import HasCacheKey -from ..util.langhelpers import memoized_property -from . import base as orm_base - -log: Any - -class PathRegistry(HasCacheKey): - root: ClassVar[RootRegistry] - is_token: bool - is_root: bool - def __eq__(self, other): ... - def __ne__(self, other): ... - def set(self, attributes, key, value) -> None: ... - def setdefault(self, attributes, key, value) -> None: ... - def get(self, attributes, key, value: Incomplete | None = None): ... - def __len__(self) -> int: ... - def __hash__(self) -> int: ... - @property - def length(self): ... - def pairs(self) -> None: ... - def contains_mapper(self, mapper): ... - def contains(self, attributes, key): ... - def __reduce__(self): ... - @classmethod - def serialize_context_dict(cls, dict_, tokens): ... - @classmethod - def deserialize_context_dict(cls, serialized): ... - def serialize(self): ... - @classmethod - def deserialize(cls, path): ... - @classmethod - def per_mapper(cls, mapper): ... - @classmethod - def coerce(cls, raw): ... - def token(self, token): ... - def __add__(self, other): ... - -class RootRegistry(PathRegistry): - inherit_cache: bool - path: Any - natural_path: Any - has_entity: bool - is_aliased_class: bool - is_root: bool - def __getitem__(self, entity): ... - -class PathToken(orm_base.InspectionAttr, HasCacheKey, str): - @classmethod - def intern(cls, strvalue): ... - -class TokenRegistry(PathRegistry): - inherit_cache: bool - token: Any - parent: Any - path: Any - natural_path: Any - def __init__(self, parent, token) -> None: ... - has_entity: bool - is_token: bool - def generate_for_superclasses(self) -> None: ... - def __getitem__(self, entity) -> None: ... - -class PropRegistry(PathRegistry): - is_unnatural: bool - inherit_cache: bool - prop: Any - parent: Any - path: Any - natural_path: Any - def __init__(self, parent, prop) -> None: ... - @memoized_property - def has_entity(self): ... - @memoized_property - def entity(self): ... - @property - def mapper(self): ... - @property - def entity_path(self): ... - def __getitem__(self, entity): ... - -class AbstractEntityRegistry(PathRegistry): - has_entity: bool - key: Any - parent: Any - is_aliased_class: Any - entity: Any - path: Any - natural_path: Any - def __init__(self, parent, entity) -> None: ... - @property - def entity_path(self): ... - @property - def mapper(self): ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - def __getitem__(self, entity): ... - -class SlotsEntityRegistry(AbstractEntityRegistry): - inherit_cache: bool - -class CachingEntityRegistry(AbstractEntityRegistry, dict[Incomplete, Incomplete]): # type: ignore[misc] - inherit_cache: bool - def __getitem__(self, entity): ... - def __missing__(self, key): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi deleted file mode 100644 index bf80b919d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/persistence.pyi +++ /dev/null @@ -1,40 +0,0 @@ -from typing import Any - -from ..sql.base import CompileState, Options -from ..sql.dml import DeleteDMLState, InsertDMLState, UpdateDMLState - -def save_obj(base_mapper, states, uowtransaction, single: bool = False) -> None: ... -def post_update(base_mapper, states, uowtransaction, post_update_cols) -> None: ... -def delete_obj(base_mapper, states, uowtransaction) -> None: ... - -class BulkUDCompileState(CompileState): - class default_update_options(Options): ... - - @classmethod - def orm_pre_session_exec(cls, session, statement, params, execution_options, bind_arguments, is_reentrant_invoke): ... - @classmethod - def orm_setup_cursor_result(cls, session, statement, params, execution_options, bind_arguments, result): ... - -class ORMDMLState: - @classmethod - def get_entity_description(cls, statement): ... - @classmethod - def get_returning_column_descriptions(cls, statement): ... - -class ORMInsert(ORMDMLState, InsertDMLState): - @classmethod - def orm_pre_session_exec(cls, session, statement, params, execution_options, bind_arguments, is_reentrant_invoke): ... - @classmethod - def orm_setup_cursor_result(cls, session, statement, params, execution_options, bind_arguments, result): ... - -class BulkORMUpdate(UpdateDMLState, BulkUDCompileState): - mapper: Any - extra_criteria_entities: Any - @classmethod - def create_for_statement(cls, statement, compiler, **kw): ... - -class BulkORMDelete(DeleteDMLState, BulkUDCompileState): - mapper: Any - extra_criteria_entities: Any - @classmethod - def create_for_statement(cls, statement, compiler, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/properties.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/properties.pyi deleted file mode 100644 index 21dd02861..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/properties.pyi +++ /dev/null @@ -1,45 +0,0 @@ -from typing import Any - -from .. import util -from .descriptor_props import ( - CompositeProperty as CompositeProperty, - ConcreteInheritedProperty as ConcreteInheritedProperty, - SynonymProperty as SynonymProperty, -) -from .interfaces import PropComparator, StrategizedProperty -from .relationships import RelationshipProperty as RelationshipProperty - -__all__ = ["ColumnProperty", "CompositeProperty", "ConcreteInheritedProperty", "RelationshipProperty", "SynonymProperty"] - -class ColumnProperty(StrategizedProperty): - logger: Any - strategy_wildcard_key: str - inherit_cache: bool - columns: Any - group: Any - deferred: Any - raiseload: Any - instrument: Any - comparator_factory: Any - descriptor: Any - active_history: Any - expire_on_flush: Any - info: Any - doc: Any - strategy_key: Any - def __init__(self, *columns, **kwargs) -> None: ... - def __clause_element__(self): ... - @property - def expression(self): ... - def instrument_class(self, mapper) -> None: ... - def do_init(self) -> None: ... - def copy(self): ... - def merge( - self, session, source_state, source_dict, dest_state, dest_dict, load, _recursive, _resolve_conflict_map - ) -> None: ... - - class Comparator(util.MemoizedSlots, PropComparator[Any]): - expressions: Any - def _memoized_method___clause_element__(self): ... - def operate(self, op, *other, **kwargs): ... - def reverse_operate(self, op, other, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi deleted file mode 100644 index c98765f8c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/query.pyi +++ /dev/null @@ -1,143 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Iterator -from typing import Any, Generic, TypeVar -from typing_extensions import Literal, Self, TypeAlias - -from ..sql.annotation import SupportsCloneAnnotations -from ..sql.base import Executable -from ..sql.selectable import GroupedElement, HasHints, HasPrefixes, HasSuffixes, SelectBase, _SelectFromElements -from . import interfaces -from .context import QueryContext as QueryContext -from .util import aliased as aliased - -__all__ = ["Query", "QueryContext", "aliased"] - -_T = TypeVar("_T") -_SynchronizeSessionArgument: TypeAlias = Literal[False, "evaluate", "fetch"] - -class Query(_SelectFromElements, SupportsCloneAnnotations, HasPrefixes, HasSuffixes, HasHints, Executable, Generic[_T]): - logger: Any - load_options: Any - session: Any - dispatch: Incomplete - def __init__(self, entities, session: Incomplete | None = None) -> None: ... - @property - def statement(self): ... - def subquery(self, name: str | None = None, with_labels: bool = False, reduce_columns: bool = False): ... - def cte(self, name: Incomplete | None = None, recursive: bool = False, nesting: bool = False): ... - def label(self, name): ... - def as_scalar(self): ... - def scalar_subquery(self): ... - @property - def selectable(self): ... - def __clause_element__(self): ... - def only_return_tuples(self, value) -> Self: ... - @property - def is_single_entity(self): ... - def enable_eagerloads(self, value) -> Self: ... - def with_labels(self): ... - apply_labels: Any - @property - def get_label_style(self): ... - def set_label_style(self, style): ... - def enable_assertions(self, value) -> Self: ... - @property - def whereclause(self): ... - def with_polymorphic( - self, cls_or_mappers, selectable: Incomplete | None = None, polymorphic_on: Incomplete | None = None - ) -> Self: ... - def yield_per(self, count) -> Self: ... - def get(self, ident): ... - @property - def lazy_loaded_from(self): ... - def correlate(self, *fromclauses) -> Self: ... - def autoflush(self, setting) -> Self: ... - def populate_existing(self) -> Self: ... - def with_parent(self, instance, property: Incomplete | None = None, from_entity: Incomplete | None = None): ... - def add_entity(self, entity, alias: Incomplete | None = None) -> Self: ... - def with_session(self, session) -> Self: ... - def from_self(self, *entities): ... - def values(self, *columns): ... - def value(self, column): ... - def with_entities(self, *entities) -> Self: ... - def add_columns(self, *column) -> Self: ... - def add_column(self, column): ... - def options(self, *args) -> Self: ... - def with_transformation(self, fn): ... - def get_execution_options(self): ... - def execution_options(self, **kwargs) -> Self: ... - def with_for_update( - self, - read: bool = False, - nowait: bool = False, - of: Incomplete | None = None, - skip_locked: bool = False, - key_share: bool = False, - ) -> Self: ... - def params(self, *args, **kwargs) -> Self: ... - def where(self, *criterion): ... - def filter(self, *criterion) -> Self: ... - def filter_by(self, **kwargs) -> Self: ... - def order_by(self, *clauses) -> Self: ... - def group_by(self, *clauses) -> Self: ... - def having(self, criterion) -> Self: ... - def union(self, *q): ... - def union_all(self, *q): ... - def intersect(self, *q): ... - def intersect_all(self, *q): ... - def except_(self, *q): ... - def except_all(self, *q): ... - def join(self, target, *props, **kwargs) -> Self: ... - def outerjoin(self, target, *props, **kwargs) -> Self: ... - def reset_joinpoint(self) -> Self: ... - def select_from(self, *from_obj) -> Self: ... - def select_entity_from(self, from_obj) -> Self: ... - def __getitem__(self, item): ... - def slice(self, start, stop) -> Self: ... - def limit(self, limit) -> Self: ... - def offset(self, offset) -> Self: ... - def distinct(self, *expr) -> Self: ... - def all(self) -> list[_T]: ... - def from_statement(self, statement) -> Self: ... - def first(self) -> _T | None: ... - def one_or_none(self): ... - def one(self): ... - def scalar(self) -> Any: ... # type: ignore[override] - def __iter__(self) -> Iterator[_T]: ... - @property - def column_descriptions(self): ... - def instances(self, result_proxy, context: Incomplete | None = None): ... - def merge_result(self, iterator, load: bool = True): ... - def exists(self): ... - def count(self) -> int: ... - def delete(self, synchronize_session: _SynchronizeSessionArgument = "evaluate") -> int: ... - def update( - self, values, synchronize_session: _SynchronizeSessionArgument = "evaluate", update_args: Incomplete | None = None - ): ... - -class FromStatement(GroupedElement, SelectBase, Executable): - __visit_name__: str - element: Any - def __init__(self, entities, element) -> None: ... - def get_label_style(self): ... - def set_label_style(self, label_style): ... - def get_children(self, **kw) -> None: ... # type: ignore[override] - -class AliasOption(interfaces.LoaderOption): - def __init__(self, alias) -> None: ... - inherit_cache: bool - def process_compile_state(self, compile_state) -> None: ... - -class BulkUD: - query: Any - mapper: Any - def __init__(self, query) -> None: ... - @property - def session(self): ... - -class BulkUpdate(BulkUD): - values: Any - update_kwargs: Any - def __init__(self, query, values, update_kwargs) -> None: ... - -class BulkDelete(BulkUD): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi deleted file mode 100644 index b4608d3b3..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/relationships.pyi +++ /dev/null @@ -1,187 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, ClassVar, Generic, TypeVar - -from ..sql.operators import ColumnOperators -from ..util.langhelpers import memoized_property -from .interfaces import PropComparator, StrategizedProperty - -_T = TypeVar("_T") - -def remote(expr): ... -def foreign(expr): ... - -class RelationshipProperty(StrategizedProperty): - logger: Any - strategy_wildcard_key: str - inherit_cache: bool - uselist: Any - argument: Any - secondary: Any - primaryjoin: Any - secondaryjoin: Any - post_update: Any - direction: Any - viewonly: Any - sync_backref: Any - lazy: Any - single_parent: Any - collection_class: Any - passive_deletes: Any - cascade_backrefs: Any - passive_updates: Any - remote_side: Any - enable_typechecks: Any - query_class: Any - innerjoin: Any - distinct_target_key: Any - doc: Any - active_history: Any - join_depth: Any - omit_join: Any - local_remote_pairs: Any - bake_queries: Any - load_on_pending: Any - comparator_factory: Any - comparator: Any - info: Any - strategy_key: Any - order_by: Any - back_populates: Any - backref: Any - def __init__( - self, - argument, - secondary: Incomplete | None = None, - primaryjoin: Incomplete | None = None, - secondaryjoin: Incomplete | None = None, - foreign_keys: Incomplete | None = None, - uselist: Incomplete | None = None, - order_by: bool = False, - backref: Incomplete | None = None, - back_populates: Incomplete | None = None, - overlaps: Incomplete | None = None, - post_update: bool = False, - cascade: bool = False, - viewonly: bool = False, - lazy: str = "select", - collection_class: Incomplete | None = None, - passive_deletes=False, - passive_updates=True, - remote_side: Incomplete | None = None, - enable_typechecks=True, - join_depth: Incomplete | None = None, - comparator_factory: Incomplete | None = None, - single_parent: bool = False, - innerjoin: bool = False, - distinct_target_key: Incomplete | None = None, - doc: Incomplete | None = None, - active_history=False, - cascade_backrefs=True, - load_on_pending: bool = False, - bake_queries: bool = True, - _local_remote_pairs: Incomplete | None = None, - query_class: Incomplete | None = None, - info: Incomplete | None = None, - omit_join: Incomplete | None = None, - sync_backref: Incomplete | None = None, - _legacy_inactive_history_style: bool = False, - ) -> None: ... - def instrument_class(self, mapper) -> None: ... - - class Comparator(PropComparator[_T], Generic[_T]): - prop: Any - def __init__( - self, - prop, - parentmapper, - adapt_to_entity: Incomplete | None = None, - of_type: Incomplete | None = None, - extra_criteria=(), - ) -> None: ... - def adapt_to_entity(self, adapt_to_entity): ... - @memoized_property - def entity(self): ... - @memoized_property - def mapper(self): ... - def __clause_element__(self): ... - def of_type(self, cls): ... - def and_(self, *other): ... - def in_(self, other) -> ColumnOperators[_T]: ... - __hash__: ClassVar[None] # type: ignore[assignment] - def __eq__(self, other): ... - def any(self, criterion: Incomplete | None = None, **kwargs): ... - def has(self, criterion: Incomplete | None = None, **kwargs): ... - def contains(self, other, **kwargs) -> ColumnOperators[_T]: ... - def __ne__(self, other) -> ColumnOperators[_T]: ... # type: ignore[override] - @memoized_property - def property(self): ... - - def merge( - self, session, source_state, source_dict, dest_state, dest_dict, load, _recursive, _resolve_conflict_map - ) -> None: ... - def cascade_iterator(self, type_, state, dict_, visited_states, halt_on: Incomplete | None = None) -> None: ... - @memoized_property - def entity(self): ... - @memoized_property - def mapper(self): ... - def do_init(self) -> None: ... - @property - def cascade(self): ... - @cascade.setter - def cascade(self, cascade) -> None: ... - -class JoinCondition: - parent_persist_selectable: Any - parent_local_selectable: Any - child_persist_selectable: Any - child_local_selectable: Any - parent_equivalents: Any - child_equivalents: Any - primaryjoin: Any - secondaryjoin: Any - secondary: Any - consider_as_foreign_keys: Any - prop: Any - self_referential: Any - support_sync: Any - can_be_synced_fn: Any - def __init__( - self, - parent_persist_selectable, - child_persist_selectable, - parent_local_selectable, - child_local_selectable, - primaryjoin: Incomplete | None = None, - secondary: Incomplete | None = None, - secondaryjoin: Incomplete | None = None, - parent_equivalents: Incomplete | None = None, - child_equivalents: Incomplete | None = None, - consider_as_foreign_keys: Incomplete | None = None, - local_remote_pairs: Incomplete | None = None, - remote_side: Incomplete | None = None, - self_referential: bool = False, - prop: Incomplete | None = None, - support_sync: bool = True, - can_be_synced_fn=..., - ): ... - @property - def primaryjoin_minus_local(self): ... - @property - def secondaryjoin_minus_local(self): ... - @memoized_property - def primaryjoin_reverse_remote(self): ... - @memoized_property - def remote_columns(self): ... - @memoized_property - def local_columns(self): ... - @memoized_property - def foreign_key_columns(self): ... - def join_targets( - self, source_selectable, dest_selectable, aliased, single_crit: Incomplete | None = None, extra_criteria=() - ): ... - def create_lazy_clause(self, reverse_direction: bool = False): ... - -class _ColInAnnotations: - name: Any - def __init__(self, name) -> None: ... - def __call__(self, c): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi deleted file mode 100644 index 4cb8f62cf..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/scoping.pyi +++ /dev/null @@ -1,105 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..util.langhelpers import memoized_property - -class ScopedSessionMixin: - def __call__(self, **kw): ... - def configure(self, **kwargs) -> None: ... - -class scoped_session(ScopedSessionMixin): - session_factory: Any - registry: Any - def __init__(self, session_factory, scopefunc: Incomplete | None = None) -> None: ... - def remove(self) -> None: ... - def query_property(self, query_cls: Incomplete | None = None): ... - # dynamically proxied from class Session - bind: Any - identity_map: Any - autoflush: Any - autocommit: bool - @property - def dirty(self): ... - @property - def deleted(self): ... - @property - def new(self): ... - @property - def is_active(self): ... - @property - def no_autoflush(self) -> None: ... - @memoized_property - def info(self): ... - @classmethod - def close_all(cls) -> None: ... - @classmethod - def identity_key(cls, *args, **kwargs): ... - @classmethod - def object_session(cls, instance): ... - def __contains__(self, instance): ... - def __iter__(self): ... - def add(self, instance, _warn: bool = True) -> None: ... - def add_all(self, instances) -> None: ... - def begin(self, subtransactions: bool = False, nested: bool = False, _subtrans: bool = False): ... - def begin_nested(self): ... - def close(self) -> None: ... - def commit(self) -> None: ... - def connection( - self, - bind_arguments: Incomplete | None = None, - close_with_result: bool = False, - execution_options: Incomplete | None = None, - **kw, - ): ... - def delete(self, instance) -> None: ... - def execute( - self, - statement, - params: Incomplete | None = None, - execution_options=..., - bind_arguments: Incomplete | None = None, - _parent_execute_state: Incomplete | None = None, - _add_event: Incomplete | None = None, - **kw, - ): ... - def expire(self, instance, attribute_names: Incomplete | None = None) -> None: ... - def expire_all(self) -> None: ... - def expunge(self, instance) -> None: ... - def expunge_all(self) -> None: ... - def flush(self, objects: Incomplete | None = None) -> None: ... - def get( - self, - entity, - ident, - options: Incomplete | None = None, - populate_existing: bool = False, - with_for_update: Incomplete | None = None, - identity_token: Incomplete | None = None, - execution_options: Incomplete | None = None, - ): ... - def get_bind( - self, - mapper: Incomplete | None = None, - clause: Incomplete | None = None, - bind: Incomplete | None = None, - _sa_skip_events: Incomplete | None = None, - _sa_skip_for_implicit_returning: bool = False, - ): ... - def is_modified(self, instance, include_collections: bool = True): ... - def bulk_save_objects( - self, objects, return_defaults: bool = False, update_changed_only: bool = True, preserve_order: bool = True - ): ... - def bulk_insert_mappings(self, mapper, mappings, return_defaults: bool = False, render_nulls: bool = False) -> None: ... - def bulk_update_mappings(self, mapper, mappings) -> None: ... - def merge(self, instance, load: bool = True, options: Incomplete | None = None): ... - def query(self, *entities, **kwargs): ... - def refresh(self, instance, attribute_names: Incomplete | None = None, with_for_update: Incomplete | None = None) -> None: ... - def rollback(self) -> None: ... - def scalar( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - def scalars( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - -ScopedSession = scoped_session diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi deleted file mode 100644 index 4b2148e7c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/session.pyi +++ /dev/null @@ -1,232 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Mapping -from types import TracebackType -from typing import Any, TypeVar, overload -from typing_extensions import Self - -from ..engine.base import Connection -from ..engine.result import Result -from ..engine.util import TransactionalContext -from ..sql.elements import ColumnElement -from ..sql.schema import Table -from ..util.langhelpers import MemoizedSlots, memoized_property -from .query import Query - -_T = TypeVar("_T") - -class _SessionClassMethods: - @classmethod - def close_all(cls) -> None: ... - @classmethod - def identity_key(cls, *args, **kwargs): ... - @classmethod - def object_session(cls, instance): ... - -class ORMExecuteState(MemoizedSlots): - session: Any - statement: Any - parameters: Any - local_execution_options: Any - execution_options: Any - bind_arguments: Any - def __init__( - self, session, statement, parameters, execution_options, bind_arguments, compile_state_cls, events_todo - ) -> None: ... - def invoke_statement( - self, - statement: Incomplete | None = None, - params: Incomplete | None = None, - execution_options: Incomplete | None = None, - bind_arguments: Incomplete | None = None, - ): ... - @property - def bind_mapper(self): ... - @property - def all_mappers(self): ... - @property - def is_orm_statement(self): ... - @property - def is_select(self): ... - @property - def is_insert(self): ... - @property - def is_update(self): ... - @property - def is_delete(self): ... - def update_execution_options(self, **opts) -> None: ... - @property - def lazy_loaded_from(self): ... - @property - def loader_strategy_path(self): ... - @property - def is_column_load(self): ... - @property - def is_relationship_load(self): ... - @property - def load_options(self): ... - @property - def update_delete_options(self): ... - @property - def user_defined_options(self): ... - -class SessionTransaction(TransactionalContext): - session: Any - nested: Any - def __init__(self, session, parent: Incomplete | None = None, nested: bool = False, autobegin: bool = False) -> None: ... - @property - def parent(self): ... - @property - def is_active(self): ... - def connection(self, bindkey, execution_options: Incomplete | None = None, **kwargs): ... - def prepare(self) -> None: ... - def commit(self, _to_root: bool = False): ... - def rollback(self, _capture_exception: bool = False, _to_root: bool = False): ... - def close(self, invalidate: bool = False) -> None: ... - -class Session(_SessionClassMethods): - identity_map: Any - bind: Any - future: Any - hash_key: Any - autoflush: Any - expire_on_commit: Any - enable_baked_queries: Any - autocommit: bool - twophase: Any - dispatch: Incomplete - def __init__( - self, - bind: Incomplete | None = None, - autoflush: bool = True, - future: bool = False, - expire_on_commit: bool = True, - autocommit: bool = False, - twophase: bool = False, - binds: Incomplete | None = None, - enable_baked_queries: bool = True, - info: Incomplete | None = None, - query_cls: Incomplete | None = None, - ) -> None: ... - connection_callable: Any - def __enter__(self) -> Self: ... - def __exit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - @property - def transaction(self): ... - def in_transaction(self): ... - def in_nested_transaction(self): ... - def get_transaction(self): ... - def get_nested_transaction(self): ... - @memoized_property - def info(self): ... - def begin(self, subtransactions: bool = False, nested: bool = False, _subtrans: bool = False): ... - def begin_nested(self): ... - def rollback(self) -> None: ... - def commit(self) -> None: ... - def prepare(self) -> None: ... - # TODO: bind_arguments could use a TypedDict - def connection( - self, - bind_arguments: Mapping[str, Any] | None = None, - close_with_result: bool = False, - execution_options: Mapping[str, Any] | None = None, - **kw: Any, - ) -> Connection: ... - def execute( - self, - statement, - params: Incomplete | None = None, - execution_options=..., - bind_arguments: Incomplete | None = None, - _parent_execute_state: Incomplete | None = None, - _add_event: Incomplete | None = None, - **kw, - ) -> Result: ... - def scalar( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - def scalars( - self, statement, params: Incomplete | None = None, execution_options=..., bind_arguments: Incomplete | None = None, **kw - ): ... - def close(self) -> None: ... - def invalidate(self) -> None: ... - def expunge_all(self) -> None: ... - def bind_mapper(self, mapper, bind) -> None: ... - def bind_table(self, table, bind) -> None: ... - def get_bind( - self, - mapper: Incomplete | None = None, - clause: Incomplete | None = None, - bind: Incomplete | None = None, - _sa_skip_events: Incomplete | None = None, - _sa_skip_for_implicit_returning: bool = False, - ): ... - @overload - def query(self, entities: Table, **kwargs: Any) -> Query[Any]: ... - @overload - def query(self, entities: ColumnElement[_T], **kwargs: Any) -> Query[tuple[_T]]: ... # type: ignore[misc] - @overload - def query(self, *entities: ColumnElement[_T], **kwargs: Any) -> Query[tuple[_T, ...]]: ... - @overload - def query(self, *entities: type[_T], **kwargs: Any) -> Query[_T]: ... - @property - def no_autoflush(self) -> None: ... - def refresh(self, instance, attribute_names: Incomplete | None = None, with_for_update: Incomplete | None = None) -> None: ... - def expire_all(self) -> None: ... - def expire(self, instance, attribute_names: Incomplete | None = None) -> None: ... - def expunge(self, instance) -> None: ... - def add(self, instance, _warn: bool = True) -> None: ... - def add_all(self, instances) -> None: ... - def delete(self, instance) -> None: ... - def get( - self, - entity, - ident, - options: Incomplete | None = None, - populate_existing: bool = False, - with_for_update: Incomplete | None = None, - identity_token: Incomplete | None = None, - execution_options: Incomplete | None = None, - ): ... - def merge(self, instance, load: bool = True, options: Incomplete | None = None): ... - def enable_relationship_loading(self, obj) -> None: ... - def __contains__(self, instance): ... - def __iter__(self): ... - def flush(self, objects: Incomplete | None = None) -> None: ... - def bulk_save_objects( - self, objects, return_defaults: bool = False, update_changed_only: bool = True, preserve_order: bool = True - ): ... - def bulk_insert_mappings(self, mapper, mappings, return_defaults: bool = False, render_nulls: bool = False) -> None: ... - def bulk_update_mappings(self, mapper, mappings) -> None: ... - def is_modified(self, instance, include_collections: bool = True): ... - @property - def is_active(self): ... - @property - def dirty(self): ... - @property - def deleted(self): ... - @property - def new(self): ... - -class sessionmaker(_SessionClassMethods): - kw: Any - class_: Any - def __init__( - self, - bind: Incomplete | None = None, - class_=..., - autoflush: bool = True, - autocommit: bool = False, - expire_on_commit: bool = True, - info: Incomplete | None = None, - **kw, - ) -> None: ... - def begin(self): ... - def __call__(self, **local_kw) -> Session: ... - def configure(self, **new_kw) -> None: ... - -def close_all_sessions() -> None: ... -def make_transient(instance) -> None: ... -def make_transient_to_detached(instance) -> None: ... -def object_session(instance): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/state.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/state.pyi deleted file mode 100644 index 14d83915b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/state.pyi +++ /dev/null @@ -1,82 +0,0 @@ -from typing import Any - -from ..util.langhelpers import memoized_property -from . import interfaces - -class InstanceState(interfaces.InspectionAttrInfo): - session_id: Any - key: Any - runid: Any - load_options: Any - load_path: Any - insert_order: Any - modified: bool - expired: bool - is_instance: bool - identity_token: Any - callables: Any - class_: Any - manager: Any - committed_state: Any - expired_attributes: Any - def __init__(self, obj, manager) -> None: ... - @memoized_property - def attrs(self): ... - @property - def transient(self): ... - @property - def pending(self): ... - @property - def deleted(self): ... - @property - def was_deleted(self): ... - @property - def persistent(self): ... - @property - def detached(self): ... - @property - def session(self): ... - @property - def async_session(self): ... - @property - def object(self): ... - @property - def identity(self): ... - @property - def identity_key(self): ... - @memoized_property - def parents(self): ... - @memoized_property - def mapper(self): ... - @property - def has_identity(self): ... - def obj(self) -> None: ... - @property - def dict(self): ... - def get_history(self, key, passive): ... - def get_impl(self, key): ... - @property - def unmodified(self): ... - def unmodified_intersection(self, keys): ... - @property - def unloaded(self): ... - @property - def unloaded_expirable(self): ... - -class AttributeState: - state: Any - key: Any - def __init__(self, state, key) -> None: ... - @property - def loaded_value(self): ... - @property - def value(self): ... - @property - def history(self): ... - def load_history(self): ... - -class PendingCollection: - deleted_items: Any - added_items: Any - def append(self, value) -> None: ... - def remove(self, value) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategies.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategies.pyi deleted file mode 100644 index 7ca4a1c2d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategies.pyi +++ /dev/null @@ -1,142 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, NamedTuple - -from .. import util -from .interfaces import LoaderStrategy - -class UninstrumentedColumnLoader(LoaderStrategy): - columns: Any - def __init__(self, parent, strategy_key) -> None: ... - def setup_query( - self, compile_state, query_entity, path, loadopt, adapter, column_collection: Incomplete | None = None, **kwargs - ) -> None: ... - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... - -class ColumnLoader(LoaderStrategy): - logger: Any - columns: Any - is_composite: Any - def __init__(self, parent, strategy_key) -> None: ... - def setup_query(self, compile_state, query_entity, path, loadopt, adapter, column_collection, memoized_populators, check_for_adapt: bool = False, **kwargs) -> None: ... # type: ignore[override] - is_class_level: bool - def init_class_attribute(self, mapper) -> None: ... - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... - -class ExpressionColumnLoader(ColumnLoader): - logger: Any - def __init__(self, parent, strategy_key) -> None: ... - def setup_query(self, compile_state, query_entity, path, loadopt, adapter, column_collection, memoized_populators, **kwargs) -> None: ... # type: ignore[override] - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... - is_class_level: bool - def init_class_attribute(self, mapper) -> None: ... - -class DeferredColumnLoader(LoaderStrategy): - logger: Any - raiseload: Any - columns: Any - group: Any - def __init__(self, parent, strategy_key) -> None: ... - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... - is_class_level: bool - def init_class_attribute(self, mapper) -> None: ... - def setup_query(self, compile_state, query_entity, path, loadopt, adapter, column_collection, memoized_populators, only_load_props: Incomplete | None = None, **kw) -> None: ... # type: ignore[override] - -class LoadDeferredColumns: - key: Any - raiseload: Any - def __init__(self, key, raiseload: bool = False) -> None: ... - def __call__(self, state, passive=...): ... - -class AbstractRelationshipLoader(LoaderStrategy): - mapper: Any - entity: Any - target: Any - uselist: Any - def __init__(self, parent, strategy_key) -> None: ... - -class DoNothingLoader(LoaderStrategy): - logger: Any - -class NoLoader(AbstractRelationshipLoader): - logger: Any - is_class_level: bool - def init_class_attribute(self, mapper) -> None: ... - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... - -class LazyLoader(AbstractRelationshipLoader, util.MemoizedSlots): - logger: Any - is_aliased_class: Any - use_get: Any - def __init__(self, parent, strategy_key) -> None: ... - is_class_level: bool - def init_class_attribute(self, mapper) -> None: ... - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... - -class LoadLazyAttribute: - key: Any - strategy_key: Any - loadopt: Any - extra_criteria: Any - def __init__(self, key, initiating_strategy, loadopt, extra_criteria) -> None: ... - def __call__(self, state, passive=...): ... - -class PostLoader(AbstractRelationshipLoader): ... - -class ImmediateLoader(PostLoader): - def init_class_attribute(self, mapper) -> None: ... - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... - -class SubqueryLoader(PostLoader): - logger: Any - join_depth: Any - def __init__(self, parent, strategy_key) -> None: ... - def init_class_attribute(self, mapper) -> None: ... - - class _SubqCollections: - session: Any - execution_options: Any - load_options: Any - params: Any - subq: Any - def __init__(self, context, subq) -> None: ... - def get(self, key, default): ... - def loader(self, state, dict_, row) -> None: ... - - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators): ... - -class JoinedLoader(AbstractRelationshipLoader): - logger: Any - join_depth: Any - def __init__(self, parent, strategy_key) -> None: ... - def init_class_attribute(self, mapper) -> None: ... - def setup_query( - self, - compile_state, - query_entity, - path, - loadopt, - adapter, - column_collection: Incomplete | None = None, - parentmapper: Incomplete | None = None, - chained_from_outerjoin: bool = False, - **kwargs, - ) -> None: ... - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators) -> None: ... - -class SelectInLoader(PostLoader, util.MemoizedSlots): - logger: Any - - class query_info(NamedTuple): - load_only_child: Any - load_with_join: Any - in_expr: Any - pk_cols: Any - zero_idx: Any - child_lookup_cols: Any - join_depth: Any - omit_join: Any - def __init__(self, parent, strategy_key) -> None: ... - def init_class_attribute(self, mapper) -> None: ... - def create_row_processor(self, context, query_entity, path, loadopt, mapper, result, adapter, populators): ... - -def single_parent_validator(desc, prop): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi deleted file mode 100644 index e4ee26f1d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/strategy_options.pyi +++ /dev/null @@ -1,86 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Callable -from typing import Any -from typing_extensions import Self - -from ..sql.base import Generative -from .interfaces import LoaderOption - -class Load(Generative, LoaderOption): - path: Any - context: Any - local_opts: Any - is_class_strategy: bool - def __init__(self, entity) -> None: ... - @classmethod - def for_existing_path(cls, path): ... - is_opts_only: bool - strategy: Any - propagate_to_loaders: bool - def process_compile_state_replaced_entities(self, compile_state, mapper_entities) -> None: ... - def process_compile_state(self, compile_state) -> None: ... - def options(self, *opts) -> Self: ... - def set_relationship_strategy(self, attr, strategy, propagate_to_loaders: bool = True) -> Self: ... - def set_column_strategy(self, attrs, strategy, opts: Incomplete | None = None, opts_only: bool = False) -> Self: ... - def set_generic_strategy(self, attrs, strategy) -> Self: ... - def set_class_strategy(self, strategy, opts) -> Self: ... - # Added dynamically at runtime - def contains_eager(loadopt, attr, alias: Incomplete | None = None) -> Self: ... - def load_only(loadopt, *attrs) -> Self: ... - def joinedload(loadopt, attr, innerjoin: Incomplete | None = None) -> Self: ... - def subqueryload(loadopt, attr) -> Self: ... - def selectinload(loadopt, attr) -> Self: ... - def lazyload(loadopt, attr) -> Self: ... - def immediateload(loadopt, attr) -> Self: ... - def noload(loadopt, attr) -> Self: ... - def raiseload(loadopt, attr, sql_only: bool = False) -> Self: ... - def defaultload(loadopt, attr) -> Self: ... - def defer(loadopt, key, raiseload: bool = False) -> Self: ... - def undefer(loadopt, key) -> Self: ... - def undefer_group(loadopt, name) -> Self: ... - def with_expression(loadopt, key, expression) -> Self: ... - def selectin_polymorphic(loadopt, classes) -> Self: ... - def baked_lazyload(loadopt, attr) -> Self: ... - -class _UnboundLoad(Load): - path: Any - local_opts: Any - def __init__(self) -> None: ... - -class loader_option: - name: str - # The first parameter of this Callable should always be `loadopt: Load` - fn: Callable[..., loader_option] - def __call__(self, fn: Callable[..., loader_option]) -> Self: ... - -# loader_option instances that can be used to dynamically add methods to Load at runtime -@loader_option() -def contains_eager(loadopt: Load, attr, alias: Incomplete | None = ...) -> loader_option: ... -@loader_option() -def load_only(loadopt: Load, *attrs) -> loader_option: ... -@loader_option() -def joinedload(loadopt, attr, innerjoin=None): ... -@loader_option() -def subqueryload(loadopt: Load, attr) -> loader_option: ... -@loader_option() -def selectinload(loadopt: Load, attr) -> loader_option: ... -@loader_option() -def lazyload(loadopt: Load, attr) -> loader_option: ... -@loader_option() -def immediateload(loadopt: Load, attr) -> loader_option: ... -@loader_option() -def noload(loadopt: Load, attr) -> loader_option: ... -@loader_option() -def raiseload(loadopt: Load, attr, sql_only: bool = ...) -> loader_option: ... -@loader_option() -def defaultload(loadopt: Load, attr) -> loader_option: ... -@loader_option() -def defer(loadopt: Load, key, raiseload: bool = ...) -> loader_option: ... -@loader_option() -def undefer(loadopt: Load, key) -> loader_option: ... -@loader_option() -def undefer_group(loadopt: Load, name) -> loader_option: ... -@loader_option() -def with_expression(loadopt: Load, key) -> loader_option: ... -@loader_option() -def selectin_polymorphic(loadopt: Load, classes) -> loader_option: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/sync.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/sync.pyi deleted file mode 100644 index 558c9c848..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/sync.pyi +++ /dev/null @@ -1,6 +0,0 @@ -def populate(source, source_mapper, dest, dest_mapper, synchronize_pairs, uowcommit, flag_cascaded_pks) -> None: ... -def bulk_populate_inherit_keys(source_dict, source_mapper, synchronize_pairs) -> None: ... -def clear(dest, dest_mapper, synchronize_pairs) -> None: ... -def update(source, source_mapper, dest, old_prefix, synchronize_pairs) -> None: ... -def populate_dict(source, source_mapper, dict_, synchronize_pairs) -> None: ... -def source_modified(uowcommit, source, source_mapper, synchronize_pairs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/unitofwork.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/unitofwork.pyi deleted file mode 100644 index 26b13e383..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/unitofwork.pyi +++ /dev/null @@ -1,109 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -def track_cascade_events(descriptor, prop): ... - -class UOWTransaction: - session: Any - attributes: Any - deps: Any - mappers: Any - presort_actions: Any - postsort_actions: Any - dependencies: Any - states: Any - post_update_states: Any - def __init__(self, session): ... - @property - def has_work(self): ... - def was_already_deleted(self, state): ... - def is_deleted(self, state): ... - def memo(self, key, callable_): ... - def remove_state_actions(self, state) -> None: ... - def get_attribute_history(self, state, key, passive=...): ... - def has_dep(self, processor): ... - def register_preprocessor(self, processor, fromparent) -> None: ... - def register_object( - self, - state, - isdelete: bool = False, - listonly: bool = False, - cancel_delete: bool = False, - operation: Incomplete | None = None, - prop: Incomplete | None = None, - ): ... - def register_post_update(self, state, post_update_cols) -> None: ... - def filter_states_for_dep(self, dep, states): ... - def states_for_mapper_hierarchy(self, mapper, isdelete, listonly) -> None: ... - def execute(self): ... - def finalize_flush_changes(self) -> None: ... - -class IterateMappersMixin: ... - -class Preprocess(IterateMappersMixin): - dependency_processor: Any - fromparent: Any - processed: Any - setup_flush_actions: bool - def __init__(self, dependency_processor, fromparent) -> None: ... - def execute(self, uow): ... - -class PostSortRec: - disabled: Any - # At runtime __new__ is defined, not __init__, - # But if we define __new__ here then all subclasses are identified by pyright - # as having __init__ methods that are inconsistent with their __new__ methods - def __init__(self, uow, *args) -> None: ... - def execute_aggregate(self, uow, recs) -> None: ... - -class ProcessAll(IterateMappersMixin, PostSortRec): - dependency_processor: Any - sort_key: Any - isdelete: Any - fromparent: Any - def __init__(self, uow, dependency_processor, isdelete, fromparent) -> None: ... - def execute(self, uow) -> None: ... - def per_state_flush_actions(self, uow): ... - -class PostUpdateAll(PostSortRec): - mapper: Any - isdelete: Any - sort_key: Any - def __init__(self, uow, mapper, isdelete) -> None: ... - def execute(self, uow) -> None: ... - -class SaveUpdateAll(PostSortRec): - mapper: Any - sort_key: Any - def __init__(self, uow, mapper) -> None: ... - def execute(self, uow) -> None: ... - def per_state_flush_actions(self, uow) -> None: ... - -class DeleteAll(PostSortRec): - mapper: Any - sort_key: Any - def __init__(self, uow, mapper) -> None: ... - def execute(self, uow) -> None: ... - def per_state_flush_actions(self, uow) -> None: ... - -class ProcessState(PostSortRec): - dependency_processor: Any - sort_key: Any - isdelete: Any - state: Any - def __init__(self, uow, dependency_processor, isdelete, state) -> None: ... - def execute_aggregate(self, uow, recs) -> None: ... - -class SaveUpdateState(PostSortRec): - state: Any - mapper: Any - sort_key: Any - def __init__(self, uow, state) -> None: ... - def execute_aggregate(self, uow, recs) -> None: ... - -class DeleteState(PostSortRec): - state: Any - mapper: Any - sort_key: Any - def __init__(self, uow, state) -> None: ... - def execute_aggregate(self, uow, recs) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/util.pyi deleted file mode 100644 index cb7e9f809..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/orm/util.pyi +++ /dev/null @@ -1,200 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..sql import base as sql_base, expression, util as sql_util -from ..sql.annotation import SupportsCloneAnnotations -from .base import ( - InspectionAttr as InspectionAttr, - _class_to_mapper as _class_to_mapper, - _never_set as _never_set, - _none_set as _none_set, - attribute_str as attribute_str, - class_mapper as class_mapper, - instance_str as instance_str, - object_mapper as object_mapper, - object_state as object_state, - state_attribute_str as state_attribute_str, - state_class_str as state_class_str, - state_str as state_str, -) -from .interfaces import CriteriaOption, ORMColumnsClauseRole, ORMEntityColumnsClauseRole, ORMFromClauseRole - -all_cascades: Any - -class CascadeOptions(frozenset[Any]): - save_update: Any - delete: Any - refresh_expire: Any - merge: Any - expunge: Any - delete_orphan: Any - def __new__(cls, value_list): ... - @classmethod - def from_string(cls, arg): ... - -def polymorphic_union(table_map, typecolname, aliasname: str = "p_union", cast_nulls: bool = True): ... -def identity_key(*args, **kwargs): ... - -class ORMAdapter(sql_util.ColumnAdapter): - mapper: Any - aliased_class: Any - def __init__( - self, - entity, - equivalents: Incomplete | None = None, - adapt_required: bool = False, - allow_label_resolve: bool = True, - anonymize_labels: bool = False, - ) -> None: ... - -class AliasedClass: - __name__: Any - def __init__( - self, - mapped_class_or_ac, - alias: Incomplete | None = None, - name: Incomplete | None = None, - flat: bool = False, - adapt_on_names: bool = False, - with_polymorphic_mappers=(), - with_polymorphic_discriminator: Incomplete | None = None, - base_alias: Incomplete | None = None, - use_mapper_path: bool = False, - represents_outer_join: bool = False, - ) -> None: ... - def __getattr__(self, key: str): ... - -class AliasedInsp(ORMEntityColumnsClauseRole, ORMFromClauseRole, sql_base.MemoizedHasCacheKey, InspectionAttr): - mapper: Any - selectable: Any - name: Any - polymorphic_on: Any - represents_outer_join: Any - with_polymorphic_mappers: Any - def __init__( - self, - entity, - inspected, - selectable, - name, - with_polymorphic_mappers, - polymorphic_on, - _base_alias, - _use_mapper_path, - adapt_on_names, - represents_outer_join, - nest_adapters: bool, # added in 1.4.30 - ) -> None: ... - @property - def entity(self): ... - is_aliased_class: bool - def __clause_element__(self): ... - @property - def entity_namespace(self): ... - @property - def class_(self): ... - -class _WrapUserEntity: - subject: Any - def __init__(self, subject) -> None: ... - def __getattribute__(self, name: str): ... - -class LoaderCriteriaOption(CriteriaOption): - root_entity: Any - entity: Any - deferred_where_criteria: bool - where_criteria: Any - include_aliases: Any - propagate_to_loaders: Any - def __init__( - self, - entity_or_base, - where_criteria, - loader_only: bool = False, - include_aliases: bool = False, - propagate_to_loaders: bool = True, - track_closure_variables: bool = True, - ) -> None: ... - def process_compile_state_replaced_entities(self, compile_state, mapper_entities): ... - def process_compile_state(self, compile_state) -> None: ... - def get_global_criteria(self, attributes) -> None: ... - -def aliased( - element, alias: Incomplete | None = None, name: Incomplete | None = None, flat: bool = False, adapt_on_names: bool = False -): ... -def with_polymorphic( - base, - classes, - selectable: bool = False, - flat: bool = False, - polymorphic_on: Incomplete | None = None, - aliased: bool = False, - adapt_on_names: bool = False, - innerjoin: bool = False, - _use_mapper_path: bool = False, - _existing_alias: Incomplete | None = None, -) -> AliasedClass: ... - -class Bundle(ORMColumnsClauseRole, SupportsCloneAnnotations, sql_base.MemoizedHasCacheKey, InspectionAttr): - single_entity: bool - is_clause_element: bool - is_mapper: bool - is_aliased_class: bool - is_bundle: bool - name: Any - exprs: Any - c: Any - def __init__(self, name, *exprs, **kw) -> None: ... - @property - def mapper(self): ... - @property - def entity(self): ... - @property - def entity_namespace(self): ... - columns: Any - def __clause_element__(self): ... - @property - def clauses(self): ... - def label(self, name): ... - def create_row_processor(self, query, procs, labels): ... - -class _ORMJoin(expression.Join): - __visit_name__: Any - inherit_cache: bool - onclause: Any - def __init__( - self, - left, - right, - onclause: Incomplete | None = None, - isouter: bool = False, - full: bool = False, - _left_memo: Incomplete | None = None, - _right_memo: Incomplete | None = None, - _extra_criteria=(), - ) -> None: ... - def join( - self, - right, - onclause: Incomplete | None = None, - isouter: bool = False, - full: bool = False, - join_to_left: Incomplete | None = None, - ): ... - def outerjoin( - self, right, onclause: Incomplete | None = None, full: bool = False, join_to_left: Incomplete | None = None - ): ... - -def join( - left, - right, - onclause: Incomplete | None = None, - isouter: bool = False, - full: bool = False, - join_to_left: Incomplete | None = None, -): ... -def outerjoin(left, right, onclause: Incomplete | None = None, full: bool = False, join_to_left: Incomplete | None = None): ... -def with_parent(instance, prop, from_entity: Incomplete | None = None): ... -def has_identity(object_): ... -def was_deleted(object_): ... -def randomize_unitofwork() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/__init__.pyi deleted file mode 100644 index 977c65ad9..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/__init__.pyi +++ /dev/null @@ -1,27 +0,0 @@ -from .base import Pool as Pool, reset_commit as reset_commit, reset_none as reset_none, reset_rollback as reset_rollback -from .dbapi_proxy import clear_managers as clear_managers, manage as manage -from .impl import ( - AssertionPool as AssertionPool, - AsyncAdaptedQueuePool as AsyncAdaptedQueuePool, - FallbackAsyncAdaptedQueuePool as FallbackAsyncAdaptedQueuePool, - NullPool as NullPool, - QueuePool as QueuePool, - SingletonThreadPool as SingletonThreadPool, - StaticPool as StaticPool, -) - -__all__ = [ - "Pool", - "reset_commit", - "reset_none", - "reset_rollback", - "clear_managers", - "manage", - "AssertionPool", - "NullPool", - "QueuePool", - "AsyncAdaptedQueuePool", - "FallbackAsyncAdaptedQueuePool", - "SingletonThreadPool", - "StaticPool", -] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi deleted file mode 100644 index 0941b0c6b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/base.pyi +++ /dev/null @@ -1,94 +0,0 @@ -from _typeshed import Incomplete -from _typeshed.dbapi import DBAPIConnection -from collections.abc import Callable -from typing import Any - -from .. import log -from ..util.langhelpers import memoized_property - -reset_rollback: Any -reset_commit: Any -reset_none: Any - -class _ConnDialect: - is_async: bool - has_terminate: bool - def do_rollback(self, dbapi_connection) -> None: ... - def do_commit(self, dbapi_connection) -> None: ... - def do_terminate(self, dbapi_connection) -> None: ... - def do_close(self, dbapi_connection) -> None: ... - def do_ping(self, dbapi_connection) -> None: ... - def get_driver_connection(self, connection): ... - -class _AsyncConnDialect(_ConnDialect): - is_async: bool - -class Pool(log.Identified): - logging_name: Any - echo: Any - dispatch: Incomplete - def __init__( - self, - creator: Callable[[], DBAPIConnection], - recycle: int = -1, - echo: Incomplete | None = None, - logging_name: Incomplete | None = None, - reset_on_return: bool = True, - events: Incomplete | None = None, - dialect: Incomplete | None = None, - pre_ping: bool = False, - _dispatch: Incomplete | None = None, - ) -> None: ... - def recreate(self) -> None: ... - def dispose(self) -> None: ... - def connect(self): ... - def status(self) -> None: ... - -class _ConnectionRecord: - finalize_callback: Any - def __init__(self, pool, connect: bool = True) -> None: ... - fresh: bool - fairy_ref: Any - starttime: Any - dbapi_connection: Any - @property - def driver_connection(self): ... - @property - def connection(self): ... - @connection.setter - def connection(self, value) -> None: ... - @memoized_property - def info(self): ... - @memoized_property - def record_info(self): ... - @classmethod - def checkout(cls, pool): ... - def checkin(self, _fairy_was_created: bool = True) -> None: ... - @property - def in_use(self): ... - @property - def last_connect_time(self): ... - def close(self) -> None: ... - def invalidate(self, e: Incomplete | None = None, soft: bool = False) -> None: ... - def get_connection(self): ... - -class _ConnectionFairy: - dbapi_connection: Any - def __init__(self, dbapi_connection, connection_record, echo) -> None: ... - @property - def driver_connection(self): ... - @property - def connection(self): ... - @connection.setter - def connection(self, value) -> None: ... - @property - def is_valid(self): ... - @memoized_property - def info(self): ... - @property - def record_info(self): ... - def invalidate(self, e: Incomplete | None = None, soft: bool = False) -> None: ... - def cursor(self, *args, **kwargs): ... - def __getattr__(self, key: str): ... - def detach(self) -> None: ... - def close(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/dbapi_proxy.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/dbapi_proxy.pyi deleted file mode 100644 index 6bfa8ae86..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/dbapi_proxy.pyi +++ /dev/null @@ -1,19 +0,0 @@ -from typing import Any - -proxies: Any - -def manage(module, **params): ... -def clear_managers() -> None: ... - -class _DBProxy: - module: Any - kw: Any - poolclass: Any - pools: Any - def __init__(self, module, poolclass=..., **kw) -> None: ... - def close(self) -> None: ... - def __del__(self) -> None: ... - def __getattr__(self, key: str): ... - def get_pool(self, *args, **kw): ... - def connect(self, *args, **kw): ... - def dispose(self, *args, **kw) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/events.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/events.pyi deleted file mode 100644 index 8a5dde542..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/events.pyi +++ /dev/null @@ -1,13 +0,0 @@ -from .. import event - -class PoolEvents(event.Events): - def connect(self, dbapi_connection, connection_record) -> None: ... - def first_connect(self, dbapi_connection, connection_record) -> None: ... - def checkout(self, dbapi_connection, connection_record, connection_proxy) -> None: ... - def checkin(self, dbapi_connection, connection_record) -> None: ... - def reset(self, dbapi_connection, connection_record) -> None: ... - def invalidate(self, dbapi_connection, connection_record, exception) -> None: ... - def soft_invalidate(self, dbapi_connection, connection_record, exception) -> None: ... - def close(self, dbapi_connection, connection_record) -> None: ... - def detach(self, dbapi_connection, connection_record) -> None: ... - def close_detached(self, dbapi_connection) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi deleted file mode 100644 index aee3c588a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/pool/impl.pyi +++ /dev/null @@ -1,46 +0,0 @@ -from typing import Any - -from ..util.langhelpers import memoized_property -from .base import Pool - -class QueuePool(Pool): - def __init__( - self, creator, pool_size: int = 5, max_overflow: int = 10, timeout: float = 30.0, use_lifo: bool = False, **kw - ) -> None: ... - def recreate(self): ... - def dispose(self) -> None: ... - def status(self): ... - def size(self): ... - def timeout(self): ... - def checkedin(self): ... - def overflow(self): ... - def checkedout(self): ... - -class AsyncAdaptedQueuePool(QueuePool): ... -class FallbackAsyncAdaptedQueuePool(AsyncAdaptedQueuePool): ... - -class NullPool(Pool): - def status(self): ... - def recreate(self): ... - def dispose(self) -> None: ... - -class SingletonThreadPool(Pool): - size: Any - def __init__(self, creator, pool_size: int = 5, **kw) -> None: ... - def recreate(self): ... - def dispose(self) -> None: ... - def status(self): ... - def connect(self): ... - -class StaticPool(Pool): - @memoized_property - def connection(self): ... - def status(self): ... - def dispose(self) -> None: ... - def recreate(self): ... - -class AssertionPool(Pool): - def __init__(self, *args, **kw) -> None: ... - def status(self): ... - def dispose(self) -> None: ... - def recreate(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/processors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/processors.pyi deleted file mode 100644 index 26ee40a7c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/processors.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from _typeshed import Incomplete - -def str_to_datetime_processor_factory(regexp, type_): ... -def py_fallback(): ... -def to_unicode_processor_factory(encoding, errors: Incomplete | None = None): ... -def to_conditional_unicode_processor_factory(encoding, errors: Incomplete | None = None): ... -def to_decimal_processor_factory(target_class, scale): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/schema.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/schema.pyi deleted file mode 100644 index ef2cc1ed9..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/schema.pyi +++ /dev/null @@ -1,51 +0,0 @@ -from .sql.base import SchemaVisitor as SchemaVisitor -from .sql.ddl import ( - DDL as DDL, - AddConstraint as AddConstraint, - CreateColumn as CreateColumn, - CreateIndex as CreateIndex, - CreateSchema as CreateSchema, - CreateSequence as CreateSequence, - CreateTable as CreateTable, - DDLBase as DDLBase, - DDLElement as DDLElement, - DropColumnComment as DropColumnComment, - DropConstraint as DropConstraint, - DropIndex as DropIndex, - DropSchema as DropSchema, - DropSequence as DropSequence, - DropTable as DropTable, - DropTableComment as DropTableComment, - SetColumnComment as SetColumnComment, - SetTableComment as SetTableComment, - _CreateDropBase as _CreateDropBase, - _DDLCompiles as _DDLCompiles, - _DropView as _DropView, - sort_tables as sort_tables, - sort_tables_and_constraints as sort_tables_and_constraints, -) -from .sql.naming import conv as conv -from .sql.schema import ( - BLANK_SCHEMA as BLANK_SCHEMA, - CheckConstraint as CheckConstraint, - Column as Column, - ColumnCollectionConstraint as ColumnCollectionConstraint, - ColumnCollectionMixin as ColumnCollectionMixin, - ColumnDefault as ColumnDefault, - Computed as Computed, - Constraint as Constraint, - DefaultClause as DefaultClause, - DefaultGenerator as DefaultGenerator, - FetchedValue as FetchedValue, - ForeignKey as ForeignKey, - ForeignKeyConstraint as ForeignKeyConstraint, - Identity as Identity, - Index as Index, - MetaData as MetaData, - PrimaryKeyConstraint as PrimaryKeyConstraint, - SchemaItem as SchemaItem, - Sequence as Sequence, - Table as Table, - ThreadLocalMetaData as ThreadLocalMetaData, - UniqueConstraint as UniqueConstraint, -) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/__init__.pyi deleted file mode 100644 index 625094b1e..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/__init__.pyi +++ /dev/null @@ -1,91 +0,0 @@ -from . import sqltypes as sqltypes -from .base import Executable as Executable -from .compiler import ( - COLLECT_CARTESIAN_PRODUCTS as COLLECT_CARTESIAN_PRODUCTS, - FROM_LINTING as FROM_LINTING, - NO_LINTING as NO_LINTING, - WARN_LINTING as WARN_LINTING, -) -from .expression import ( - LABEL_STYLE_DEFAULT as LABEL_STYLE_DEFAULT, - LABEL_STYLE_DISAMBIGUATE_ONLY as LABEL_STYLE_DISAMBIGUATE_ONLY, - LABEL_STYLE_NONE as LABEL_STYLE_NONE, - LABEL_STYLE_TABLENAME_PLUS_COL as LABEL_STYLE_TABLENAME_PLUS_COL, - Alias as Alias, - ClauseElement as ClauseElement, - ColumnCollection as ColumnCollection, - ColumnElement as ColumnElement, - CompoundSelect as CompoundSelect, - Delete as Delete, - False_ as False_, - FromClause as FromClause, - Insert as Insert, - Join as Join, - LambdaElement as LambdaElement, - Select as Select, - Selectable as Selectable, - StatementLambdaElement as StatementLambdaElement, - Subquery as Subquery, - TableClause as TableClause, - TableSample as TableSample, - True_ as True_, - Update as Update, - Values as Values, - alias as alias, - all_ as all_, - and_ as and_, - any_ as any_, - asc as asc, - between as between, - bindparam as bindparam, - case as case, - cast as cast, - collate as collate, - column as column, - cte as cte, - delete as delete, - desc as desc, - distinct as distinct, - except_ as except_, - except_all as except_all, - exists as exists, - extract as extract, - false as false, - func as func, - funcfilter as funcfilter, - insert as insert, - intersect as intersect, - intersect_all as intersect_all, - join as join, - label as label, - lambda_stmt as lambda_stmt, - lateral as lateral, - literal as literal, - literal_column as literal_column, - modifier as modifier, - not_ as not_, - null as null, - nulls_first as nulls_first, - nulls_last as nulls_last, - nullsfirst as nullsfirst, - nullslast as nullslast, - or_ as or_, - outerjoin as outerjoin, - outparam as outparam, - over as over, - quoted_name as quoted_name, - select as select, - subquery as subquery, - table as table, - tablesample as tablesample, - text as text, - true as true, - tuple_ as tuple_, - type_coerce as type_coerce, - union as union, - union_all as union_all, - update as update, - values as values, - within_group as within_group, -) -from .visitors import ClauseVisitor as ClauseVisitor diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/annotation.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/annotation.pyi deleted file mode 100644 index 38c963023..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/annotation.pyi +++ /dev/null @@ -1,206 +0,0 @@ -from _typeshed import Incomplete -from typing import TypeVar - -from ..schema import Table -from ..util import immutabledict -from .compiler import _CompileLabel -from .crud import _multiparam_column -from .elements import ( - AnnotatedColumnElement as _ElementsAnnotatedColumnElement, - AsBoolean, - BinaryExpression, - BindParameter, - BooleanClauseList, - Case, - Cast, - ClauseList, - CollationClause, - CollectionAggregate, - ColumnClause, - ColumnElement, - Extract, - False_, - FunctionFilter, - Grouping, - IndexExpression, - Label, - NamedColumn, - Null, - Over, - Slice, - TableValuedColumn, - True_, - Tuple, - TypeCoerce, - UnaryExpression, - WithinGroup, - _label_reference, - _textual_label_reference, -) -from .functions import ( - AnsiFunction, - Function, - FunctionAsBinary, - FunctionElement, - GenericFunction, - OrderedSetAgg, - ReturnTypeFromArgs, - ScalarFunctionColumn, - array_agg, - char_length, - coalesce, - concat, - count, - cube, - cume_dist, - current_date, - current_time, - current_timestamp, - current_user, - dense_rank, - grouping_sets, - localtime, - localtimestamp, - max, - min, - mode, - next_value, - now, - percent_rank, - percentile_cont, - percentile_disc, - random, - rank, - rollup, - session_user, - sum, - sysdate, - user, -) -from .schema import Column -from .selectable import ( - CTE, - Alias, - AliasedReturnsRows, - AnnotatedFromClause as _SelectableAnnotatedFromClause, - Exists, - FromClause, - FromGrouping, - Join, - Lateral, - ScalarSelect, - Subquery, - TableClause, - TableSample, - TableValuedAlias, - Values, - _OffsetLimitParam, -) - -_T = TypeVar("_T") - -EMPTY_ANNOTATIONS: immutabledict[Incomplete, Incomplete] - -class SupportsAnnotations: ... -class SupportsCloneAnnotations(SupportsAnnotations): ... -class SupportsWrappingAnnotations(SupportsAnnotations): ... - -class Annotated: - __dict__: dict[str, Incomplete] - def __init__(self, element, values) -> None: ... - def __reduce__(self): ... - def __hash__(self) -> int: ... - def __eq__(self, other): ... - @property - def entity_namespace(self): ... - -annotated_classes: dict[Incomplete, Incomplete] - -# Everything below is dynamically generated at runtime - -class AnnotatedFromClause(_SelectableAnnotatedFromClause, FromClause): ... -class AnnotatedAliasedReturnsRows(AnnotatedFromClause, AliasedReturnsRows): ... -class AnnotatedAlias(AnnotatedAliasedReturnsRows, Alias): ... -class AnnotatedColumnElement(_ElementsAnnotatedColumnElement, ColumnElement[_T]): ... -class AnnotatedFunctionElement(AnnotatedColumnElement[_T], FunctionElement): ... # type: ignore[misc] -class AnnotatedFunction(AnnotatedFunctionElement[_T], Function): ... # type: ignore[misc] -class AnnotatedGenericFunction(AnnotatedFunction[_T], GenericFunction): ... # type: ignore[misc] -class AnnotatedAnsiFunction(AnnotatedGenericFunction[_T], AnsiFunction): ... # type: ignore[misc] -class AnnotatedUnaryExpression(AnnotatedColumnElement[_T], UnaryExpression): ... -class AnnotatedAsBoolean(AnnotatedUnaryExpression[_T], AsBoolean): ... -class AnnotatedBinaryExpression(AnnotatedColumnElement[_T], BinaryExpression): ... -class AnnotatedBindParameter(AnnotatedColumnElement[_T], BindParameter[_T]): ... -class AnnotatedBooleanClauseList(AnnotatedColumnElement[_T], BooleanClauseList): ... -class AnnotatedCTE(AnnotatedAliasedReturnsRows, CTE): ... -class AnnotatedCase(AnnotatedColumnElement[_T], Case): ... -class AnnotatedCast(AnnotatedColumnElement[_T], Cast): ... -class AnnotatedClauseList(Annotated, ClauseList): ... -class AnnotatedCollationClause(AnnotatedColumnElement[_T], CollationClause): ... -class AnnotatedCollectionAggregate(AnnotatedUnaryExpression[_T], CollectionAggregate): ... -class AnnotatedNamedColumn(AnnotatedColumnElement[_T], NamedColumn): ... -class AnnotatedColumnClause(AnnotatedNamedColumn[_T], ColumnClause): ... -class AnnotatedColumn(AnnotatedColumnClause[_T], Column): ... -class AnnotatedExists(AnnotatedUnaryExpression[_T], Exists): ... -class AnnotatedExtract(AnnotatedColumnElement[_T], Extract): ... -class AnnotatedFalse_(AnnotatedColumnElement[_T], False_): ... -class AnnotatedFromGrouping(AnnotatedFromClause, FromGrouping): ... -class AnnotatedFunctionAsBinary(AnnotatedBinaryExpression[_T], FunctionAsBinary): ... -class AnnotatedFunctionFilter(AnnotatedColumnElement[_T], FunctionFilter): ... -class AnnotatedGrouping(AnnotatedColumnElement[_T], Grouping): ... -class AnnotatedIndexExpression(AnnotatedBinaryExpression[_T], IndexExpression): ... -class AnnotatedJoin(AnnotatedFromClause, Join): ... -class AnnotatedLabel(AnnotatedColumnElement[_T], Label): ... -class AnnotatedLateral(AnnotatedAliasedReturnsRows, Lateral): ... -class AnnotatedNull(AnnotatedColumnElement[_T], Null): ... -class AnnotatedOrderedSetAgg(AnnotatedGenericFunction[_T], OrderedSetAgg): ... # type: ignore[misc] -class AnnotatedOver(AnnotatedColumnElement[_T], Over): ... -class AnnotatedReturnTypeFromArgs(AnnotatedGenericFunction[_T], ReturnTypeFromArgs): ... # type: ignore[misc] -class AnnotatedScalarFunctionColumn(AnnotatedNamedColumn[_T], ScalarFunctionColumn): ... -class AnnotatedScalarSelect(AnnotatedGrouping[_T], ScalarSelect): ... -class AnnotatedSlice(AnnotatedColumnElement[_T], Slice): ... -class AnnotatedSubquery(AnnotatedAliasedReturnsRows, Subquery): ... -class AnnotatedTableClause(AnnotatedFromClause, TableClause): ... -class AnnotatedTable(AnnotatedTableClause, Table): ... -class AnnotatedTableSample(AnnotatedAliasedReturnsRows, TableSample): ... -class AnnotatedTableValuedAlias(AnnotatedAlias, TableValuedAlias): ... -class AnnotatedTableValuedColumn(AnnotatedNamedColumn[_T], TableValuedColumn): ... -class AnnotatedTrue_(AnnotatedColumnElement[_T], True_): ... -class AnnotatedTuple(AnnotatedColumnElement[_T], Tuple): ... -class AnnotatedTypeCoerce(AnnotatedColumnElement[_T], TypeCoerce): ... -class AnnotatedValues(AnnotatedFromClause, Values): ... -class AnnotatedWithinGroup(AnnotatedColumnElement[_T], WithinGroup): ... -class Annotated_CompileLabel(AnnotatedColumnElement[_T], _CompileLabel): ... -class Annotated_OffsetLimitParam(AnnotatedBindParameter[_T], _OffsetLimitParam): ... -class Annotated_label_reference(AnnotatedColumnElement[_T], _label_reference): ... -class Annotated_multiparam_column(AnnotatedColumnElement[_T], _multiparam_column[_T]): ... -class Annotated_textual_label_reference(AnnotatedColumnElement[_T], _textual_label_reference): ... -class Annotatedarray_agg(AnnotatedGenericFunction[_T], array_agg): ... # type: ignore[misc] -class Annotatedchar_length(AnnotatedGenericFunction[_T], char_length): ... # type: ignore[misc] -class Annotatedcoalesce(AnnotatedReturnTypeFromArgs[_T], coalesce): ... # type: ignore[misc] -class Annotatedconcat(AnnotatedGenericFunction[_T], concat): ... # type: ignore[misc] -class Annotatedcount(AnnotatedGenericFunction[_T], count): ... # type: ignore[misc] -class Annotatedcube(AnnotatedGenericFunction[_T], cube): ... # type: ignore[misc] -class Annotatedcume_dist(AnnotatedGenericFunction[_T], cume_dist): ... # type: ignore[misc] -class Annotatedcurrent_date(AnnotatedAnsiFunction[_T], current_date): ... # type: ignore[misc] -class Annotatedcurrent_time(AnnotatedAnsiFunction[_T], current_time): ... # type: ignore[misc] -class Annotatedcurrent_timestamp(AnnotatedAnsiFunction[_T], current_timestamp): ... # type: ignore[misc] -class Annotatedcurrent_user(AnnotatedAnsiFunction[_T], current_user): ... # type: ignore[misc] -class Annotateddense_rank(AnnotatedGenericFunction[_T], dense_rank): ... # type: ignore[misc] -class Annotatedgrouping_sets(AnnotatedGenericFunction[_T], grouping_sets): ... # type: ignore[misc] -class Annotatedlocaltime(AnnotatedAnsiFunction[_T], localtime): ... # type: ignore[misc] -class Annotatedlocaltimestamp(AnnotatedAnsiFunction[_T], localtimestamp): ... # type: ignore[misc] -class Annotatedmax(AnnotatedReturnTypeFromArgs[_T], max): ... # type: ignore[misc] -class Annotatedmin(AnnotatedReturnTypeFromArgs[_T], min): ... # type: ignore[misc] -class Annotatedmode(AnnotatedOrderedSetAgg[_T], mode): ... # type: ignore[misc] -class Annotatednext_value(AnnotatedGenericFunction[_T], next_value): ... # type: ignore[misc] -class Annotatednow(AnnotatedGenericFunction[_T], now): ... # type: ignore[misc] -class Annotatedpercent_rank(AnnotatedGenericFunction[_T], percent_rank): ... # type: ignore[misc] -class Annotatedpercentile_cont(AnnotatedOrderedSetAgg[_T], percentile_cont): ... # type: ignore[misc] -class Annotatedpercentile_disc(AnnotatedOrderedSetAgg[_T], percentile_disc): ... # type: ignore[misc] -class Annotatedrandom(AnnotatedGenericFunction[_T], random): ... # type: ignore[misc] -class Annotatedrank(AnnotatedGenericFunction[_T], rank): ... # type: ignore[misc] -class Annotatedrollup(AnnotatedGenericFunction[_T], rollup): ... # type: ignore[misc] -class Annotatedsession_user(AnnotatedAnsiFunction[_T], session_user): ... # type: ignore[misc] -class Annotatedsum(AnnotatedReturnTypeFromArgs[_T], sum): ... # type: ignore[misc] -class Annotatedsysdate(AnnotatedAnsiFunction[_T], sysdate): ... # type: ignore[misc] -class Annotateduser(AnnotatedAnsiFunction[_T], user): ... # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi deleted file mode 100644 index 9083c4f7f..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/base.pyi +++ /dev/null @@ -1,162 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import MutableMapping -from typing import Any, ClassVar -from typing_extensions import Self - -from .. import util -from ..util.langhelpers import HasMemoized, hybridmethod, memoized_property -from . import roles -from .elements import ColumnElement -from .traversals import ( - HasCacheKey as HasCacheKey, - HasCopyInternals as HasCopyInternals, - MemoizedHasCacheKey as MemoizedHasCacheKey, -) -from .visitors import ClauseVisitor - -coercions: Any -elements: Any -type_api: Any -PARSE_AUTOCOMMIT: Any -NO_ARG: Any - -class Immutable: - def unique_params(self, *optionaldict, **kwargs) -> None: ... - def params(self, *optionaldict, **kwargs) -> None: ... - -class SingletonConstant(Immutable): - def __new__(cls, *arg, **kw): ... - -class _DialectArgView(MutableMapping[Any, Any]): - obj: Any - def __init__(self, obj) -> None: ... - def __getitem__(self, key): ... - def __setitem__(self, key, value) -> None: ... - def __delitem__(self, key) -> None: ... - def __len__(self) -> int: ... - def __iter__(self): ... - -class _DialectArgDict(MutableMapping[Any, Any]): - def __init__(self) -> None: ... - def __len__(self) -> int: ... - def __iter__(self): ... - def __getitem__(self, key): ... - def __setitem__(self, key, value) -> None: ... - def __delitem__(self, key) -> None: ... - -class DialectKWArgs: - @classmethod - def argument_for(cls, dialect_name, argument_name, default) -> None: ... - @memoized_property - def dialect_kwargs(self): ... - @property - def kwargs(self): ... - @memoized_property - def dialect_options(self): ... - -class CompileState: - plugins: Any - @classmethod - def create_for_statement(cls, statement, compiler, **kw): ... - statement: Any - def __init__(self, statement, compiler, **kw) -> None: ... - @classmethod - def get_plugin_class(cls, statement): ... - @classmethod - def plugin_for(cls, plugin_name, visit_name): ... - -class Generative(HasMemoized): ... -class InPlaceGenerative(HasMemoized): ... -class HasCompileState(Generative): ... - -class _MetaOptions(type): - def __init__(cls, classname, bases, dict_) -> None: ... - def __add__(self, other): ... - -class Options(metaclass=_MetaOptions): - def __init__(self, **kw) -> None: ... - def __add__(self, other): ... - def __eq__(self, other): ... - @classmethod - def isinstance(cls, klass): ... - @hybridmethod - def add_to_element(self, name, value): ... - @classmethod - def safe_merge(cls, other): ... - @classmethod - def from_execution_options(cls, key, attrs, exec_options, statement_exec_options): ... - -class CacheableOptions(Options, HasCacheKey): ... - -class ExecutableOption(HasCopyInternals): - __visit_name__: str - -class Executable(roles.StatementRole, Generative): - supports_execution: bool - is_select: bool - is_update: bool - is_insert: bool - is_text: bool - is_delete: bool - is_dml: bool - def options(self, *options) -> Self: ... - def execution_options(self, **kw) -> Self: ... - def get_execution_options(self): ... - def execute(self, *multiparams, **params): ... - def scalar(self, *multiparams, **params): ... - @property - def bind(self): ... - -class prefix_anon_map(dict[Any, Any]): - def __missing__(self, key): ... - -class SchemaEventTarget: - dispatch: Incomplete - -class SchemaVisitor(ClauseVisitor): - __traverse_options__: Any - -class ColumnCollection: - def __init__(self, columns: Incomplete | None = None) -> None: ... - def keys(self): ... - def values(self): ... - def items(self): ... - def __bool__(self) -> bool: ... - def __len__(self) -> int: ... - def __iter__(self): ... - def __getitem__(self, key): ... - def __getattr__(self, key: str): ... - def __contains__(self, key): ... - def compare(self, other): ... - def __eq__(self, other): ... - def get(self, key, default: Incomplete | None = None): ... - def __setitem__(self, key, value) -> None: ... - def __delitem__(self, key) -> None: ... - def __setattr__(self, key: str, obj) -> None: ... - def clear(self) -> None: ... - def remove(self, column) -> None: ... - def update(self, iter_) -> None: ... - __hash__: ClassVar[None] # type: ignore[assignment] - def add(self, column, key: Incomplete | None = None) -> None: ... - def contains_column(self, col): ... - def as_immutable(self): ... - def corresponding_column(self, column, require_embedded: bool = False): ... - -class DedupeColumnCollection(ColumnCollection): - def add(self, column, key: Incomplete | None = None) -> None: ... - def extend(self, iter_) -> None: ... - def remove(self, column) -> None: ... - def replace(self, column) -> None: ... - -class ImmutableColumnCollection(util.ImmutableContainer, ColumnCollection): - def __init__(self, collection) -> None: ... - add: Any - extend: Any - remove: Any - -class ColumnSet(util.ordered_column_set[ColumnElement[Any]]): - def contains_column(self, col): ... - def extend(self, cols) -> None: ... - def __add__(self, other): ... - def __eq__(self, other): ... - def __hash__(self) -> int: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/coercions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/coercions.pyi deleted file mode 100644 index 605ed309a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/coercions.pyi +++ /dev/null @@ -1,74 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from . import roles - -elements: Any -lambdas: Any -schema: Any -selectable: Any -sqltypes: Any -traversals: Any - -def expect( - role, - element, - apply_propagate_attrs: Incomplete | None = None, - argname: Incomplete | None = None, - post_inspect: bool = False, - **kw, -): ... -def expect_as_key(role, element, **kw): ... -def expect_col_expression_collection(role, expressions) -> None: ... - -class RoleImpl: - name: Any - def __init__(self, role_class) -> None: ... - -class _Deannotate: ... -class _StringOnly: ... -class _ReturnsStringKey: ... -class _ColumnCoercions: ... -class _NoTextCoercion: ... -class _CoerceLiterals: ... -class LiteralValueImpl(RoleImpl): ... -class _SelectIsNotFrom: ... -class HasCacheKeyImpl(RoleImpl): ... -class ExecutableOptionImpl(RoleImpl): ... -class ExpressionElementImpl(_ColumnCoercions, RoleImpl): ... -class BinaryElementImpl(ExpressionElementImpl, RoleImpl): ... -class InElementImpl(RoleImpl): ... -class OnClauseImpl(_CoerceLiterals, _ColumnCoercions, RoleImpl): ... -class WhereHavingImpl(_CoerceLiterals, _ColumnCoercions, RoleImpl): ... -class StatementOptionImpl(_CoerceLiterals, RoleImpl): ... -class ColumnArgumentImpl(_NoTextCoercion, RoleImpl): ... -class ColumnArgumentOrKeyImpl(_ReturnsStringKey, RoleImpl): ... -class StrAsPlainColumnImpl(_CoerceLiterals, RoleImpl): ... -class ByOfImpl(_CoerceLiterals, _ColumnCoercions, RoleImpl, roles.ByOfRole): ... -class OrderByImpl(ByOfImpl, RoleImpl): ... -class GroupByImpl(ByOfImpl, RoleImpl): ... -class DMLColumnImpl(_ReturnsStringKey, RoleImpl): ... -class ConstExprImpl(RoleImpl): ... -class TruncatedLabelImpl(_StringOnly, RoleImpl): ... -class DDLExpressionImpl(_Deannotate, _CoerceLiterals, RoleImpl): ... -class DDLConstraintColumnImpl(_Deannotate, _ReturnsStringKey, RoleImpl): ... -class DDLReferredColumnImpl(DDLConstraintColumnImpl): ... -class LimitOffsetImpl(RoleImpl): ... -class LabeledColumnExprImpl(ExpressionElementImpl): ... -class ColumnsClauseImpl(_SelectIsNotFrom, _CoerceLiterals, RoleImpl): ... -class ReturnsRowsImpl(RoleImpl): ... -class StatementImpl(_CoerceLiterals, RoleImpl): ... -class SelectStatementImpl(_NoTextCoercion, RoleImpl): ... -class HasCTEImpl(ReturnsRowsImpl): ... -class IsCTEImpl(RoleImpl): ... -class JoinTargetImpl(RoleImpl): ... -class FromClauseImpl(_SelectIsNotFrom, _NoTextCoercion, RoleImpl): ... -class StrictFromClauseImpl(FromClauseImpl): ... -class AnonymizedFromClauseImpl(StrictFromClauseImpl): ... -class DMLTableImpl(_SelectIsNotFrom, _NoTextCoercion, RoleImpl): ... -class DMLSelectImpl(_NoTextCoercion, RoleImpl): ... -class CompoundElementImpl(_NoTextCoercion, RoleImpl): ... - -cls: Any -name: Any -impl: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi deleted file mode 100644 index 53762e3ac..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/compiler.pyi +++ /dev/null @@ -1,487 +0,0 @@ -from _typeshed import Incomplete -from typing import NamedTuple - -from ..util import EnsureKWArgType, memoized_property -from .base import CompileState -from .elements import ColumnElement - -RESERVED_WORDS: Incomplete -LEGAL_CHARACTERS: Incomplete -LEGAL_CHARACTERS_PLUS_SPACE: Incomplete -ILLEGAL_INITIAL_CHARACTERS: Incomplete -FK_ON_DELETE: Incomplete -FK_ON_UPDATE: Incomplete -FK_INITIALLY: Incomplete -BIND_PARAMS: Incomplete -BIND_PARAMS_ESC: Incomplete -BIND_TEMPLATES: Incomplete -OPERATORS: Incomplete -FUNCTIONS: Incomplete -EXTRACT_MAP: Incomplete -COMPOUND_KEYWORDS: Incomplete -RM_RENDERED_NAME: int -RM_NAME: int -RM_OBJECTS: int -RM_TYPE: int - -class ExpandedState(NamedTuple): - statement: Incomplete - additional_parameters: Incomplete - processors: Incomplete - positiontup: Incomplete - parameter_expansion: Incomplete - -NO_LINTING: Incomplete -COLLECT_CARTESIAN_PRODUCTS: Incomplete -WARN_LINTING: Incomplete -FROM_LINTING: Incomplete - -class FromLinter: - def lint(self, start: Incomplete | None = None): ... - def warn(self) -> None: ... - -class Compiled: - schema_translate_map: Incomplete - execution_options: Incomplete - compile_state: Incomplete - dml_compile_state: CompileState | None - cache_key: Incomplete - dialect: Incomplete - preparer: Incomplete - statement: Incomplete - can_execute: Incomplete - string: Incomplete - def __init__( - self, - dialect, - statement, - schema_translate_map: Incomplete | None = None, - render_schema_translate: bool = False, - compile_kwargs=..., - ) -> None: ... - def visit_unsupported_compilation(self, element, err) -> None: ... - @property - def sql_compiler(self) -> None: ... - def process(self, obj, **kwargs): ... - def construct_params( - self, params: Incomplete | None = None, extracted_parameters: Incomplete | None = None, escape_names: bool = True - ) -> None: ... - @property - def params(self): ... - -class TypeCompiler(metaclass=EnsureKWArgType): - ensure_kwarg: str - dialect: Incomplete - def __init__(self, dialect) -> None: ... - def process(self, type_, **kw): ... - def visit_unsupported_compilation(self, element, err, **kw) -> None: ... - -class _CompileLabel(ColumnElement[Incomplete]): - __visit_name__: str - element: Incomplete - name: Incomplete - def __init__(self, col, name, alt_names=()) -> None: ... - @property - def proxy_set(self): ... - @property - def type(self): ... - def self_group(self, **kw): ... - -class SQLCompiler(Compiled): - extract_map: Incomplete - compound_keywords: Incomplete - isdelete: bool - isinsert: bool - isupdate: bool - isplaintext: bool - returning: Incomplete - returning_precedes_values: bool - render_table_with_column_in_update_from: bool - ansi_bind_rules: bool - insert_single_values_expr: Incomplete - literal_execute_params: Incomplete - post_compile_params: Incomplete - escaped_bind_names: Incomplete - has_out_parameters: bool - insert_prefetch: Incomplete - update_prefetch: Incomplete - postfetch_lastrowid: bool - positiontup: Incomplete - positiontup_level: dict[str, int] | None - inline: bool - column_keys: Incomplete - cache_key: Incomplete - for_executemany: Incomplete - linting: Incomplete - binds: Incomplete - bind_names: Incomplete - stack: Incomplete - positional: Incomplete - bindtemplate: Incomplete - ctes: Incomplete - label_length: Incomplete - anon_map: Incomplete - truncated_names: Incomplete - def __init__( - self, - dialect, - statement, - cache_key: Incomplete | None = None, - column_keys: Incomplete | None = None, - for_executemany: bool = False, - linting=..., - **kwargs, - ) -> None: ... - @property - def current_executable(self): ... - @property - def prefetch(self): ... - def is_subquery(self): ... - @property - def sql_compiler(self): ... - def construct_params(self, params: Incomplete | None = None, _group_number: Incomplete | None = None, _check: bool = True, extracted_parameters: Incomplete | None = None, escape_names: bool = True): ... # type: ignore[override] - @property - def params(self): ... - def default_from(self): ... - def visit_grouping(self, grouping, asfrom: bool = False, **kwargs): ... - def visit_select_statement_grouping(self, grouping, **kwargs): ... - def visit_label_reference(self, element, within_columns_clause: bool = False, **kwargs): ... - def visit_textual_label_reference(self, element, within_columns_clause: bool = False, **kwargs): ... - def visit_label( - self, - label, - add_to_result_map: Incomplete | None = None, - within_label_clause: bool = False, - within_columns_clause: bool = False, - render_label_as_label: Incomplete | None = None, - result_map_targets=(), - **kw, - ): ... - def visit_lambda_element(self, element, **kw): ... - def visit_column( - self, column, add_to_result_map: Incomplete | None = None, include_table: bool = True, result_map_targets=(), **kwargs - ): ... - def visit_collation(self, element, **kw): ... - def visit_fromclause(self, fromclause, **kwargs): ... - def visit_index(self, index, **kwargs): ... - def visit_typeclause(self, typeclause, **kw): ... - def post_process_text(self, text): ... - def escape_literal_column(self, text): ... - def visit_textclause(self, textclause, add_to_result_map: Incomplete | None = None, **kw): ... - def visit_textual_select(self, taf, compound_index: Incomplete | None = None, asfrom: bool = False, **kw): ... - def visit_null(self, expr, **kw): ... - def visit_true(self, expr, **kw): ... - def visit_false(self, expr, **kw): ... - def visit_tuple(self, clauselist, **kw): ... - def visit_clauselist(self, clauselist, **kw): ... - def visit_case(self, clause, **kwargs): ... - def visit_type_coerce(self, type_coerce, **kw): ... - def visit_cast(self, cast, **kwargs): ... - def visit_over(self, over, **kwargs): ... - def visit_withingroup(self, withingroup, **kwargs): ... - def visit_funcfilter(self, funcfilter, **kwargs): ... - def visit_extract(self, extract, **kwargs): ... - def visit_scalar_function_column(self, element, **kw): ... - def visit_function(self, func, add_to_result_map: Incomplete | None = None, **kwargs): ... - def visit_next_value_func(self, next_value, **kw): ... - def visit_sequence(self, sequence, **kw) -> None: ... - def function_argspec(self, func, **kwargs): ... - compile_state: Incomplete - def visit_compound_select(self, cs, asfrom: bool = False, compound_index: Incomplete | None = None, **kwargs): ... - def visit_unary(self, unary, add_to_result_map: Incomplete | None = None, result_map_targets=(), **kw): ... - def visit_is_true_unary_operator(self, element, operator, **kw): ... - def visit_is_false_unary_operator(self, element, operator, **kw): ... - def visit_not_match_op_binary(self, binary, operator, **kw): ... - def visit_not_in_op_binary(self, binary, operator, **kw): ... - def visit_empty_set_op_expr(self, type_, expand_op): ... - def visit_empty_set_expr(self, element_types) -> None: ... - def visit_binary( - self, - binary, - override_operator: Incomplete | None = None, - eager_grouping: bool = False, - from_linter: Incomplete | None = None, - lateral_from_linter: Incomplete | None = None, - **kw, - ): ... - def visit_function_as_comparison_op_binary(self, element, operator, **kw): ... - def visit_mod_binary(self, binary, operator, **kw): ... - def visit_custom_op_binary(self, element, operator, **kw): ... - def visit_custom_op_unary_operator(self, element, operator, **kw): ... - def visit_custom_op_unary_modifier(self, element, operator, **kw): ... - def visit_contains_op_binary(self, binary, operator, **kw): ... - def visit_not_contains_op_binary(self, binary, operator, **kw): ... - def visit_startswith_op_binary(self, binary, operator, **kw): ... - def visit_not_startswith_op_binary(self, binary, operator, **kw): ... - def visit_endswith_op_binary(self, binary, operator, **kw): ... - def visit_not_endswith_op_binary(self, binary, operator, **kw): ... - def visit_like_op_binary(self, binary, operator, **kw): ... - def visit_not_like_op_binary(self, binary, operator, **kw): ... - def visit_ilike_op_binary(self, binary, operator, **kw): ... - def visit_not_ilike_op_binary(self, binary, operator, **kw): ... - def visit_between_op_binary(self, binary, operator, **kw): ... - def visit_not_between_op_binary(self, binary, operator, **kw): ... - def visit_regexp_match_op_binary(self, binary, operator, **kw) -> None: ... - def visit_not_regexp_match_op_binary(self, binary, operator, **kw) -> None: ... - def visit_regexp_replace_op_binary(self, binary, operator, **kw) -> None: ... - def visit_bindparam( - self, - bindparam, - within_columns_clause: bool = False, - literal_binds: bool = False, - skip_bind_expression: bool = False, - literal_execute: bool = False, - render_postcompile: bool = False, - **kwargs, - ): ... - def render_literal_bindparam( - self, bindparam, render_literal_value=..., bind_expression_template: Incomplete | None = None, **kw - ): ... - def render_literal_value(self, value, type_): ... - def bindparam_string( - self, - name, - positional_names: Incomplete | None = None, - post_compile: bool = False, - expanding: bool = False, - escaped_from: Incomplete | None = None, - **kw, - ): ... - execution_options: Incomplete - ctes_recursive: bool - def visit_cte( - self, - cte, - asfrom: bool = False, - ashint: bool = False, - fromhints: Incomplete | None = None, - visiting_cte: Incomplete | None = None, - from_linter: Incomplete | None = None, - **kwargs, - ): ... - def visit_table_valued_alias(self, element, **kw): ... - def visit_table_valued_column(self, element, **kw): ... - def visit_alias( - self, - alias, - asfrom: bool = False, - ashint: bool = False, - iscrud: bool = False, - fromhints: Incomplete | None = None, - subquery: bool = False, - lateral: bool = False, - enclosing_alias: Incomplete | None = None, - from_linter: Incomplete | None = None, - **kwargs, - ): ... - def visit_subquery(self, subquery, **kw): ... - def visit_lateral(self, lateral_, **kw): ... - def visit_tablesample(self, tablesample, asfrom: bool = False, **kw): ... - def visit_values(self, element, asfrom: bool = False, from_linter: Incomplete | None = None, **kw): ... - def get_render_as_alias_suffix(self, alias_name_text): ... - def format_from_hint_text(self, sqltext, table, hint, iscrud): ... - def get_select_hint_text(self, byfroms) -> None: ... - def get_from_hint_text(self, table, text) -> None: ... - def get_crud_hint_text(self, table, text) -> None: ... - def get_statement_hint_text(self, hint_texts): ... - translate_select_structure: Incomplete - def visit_select( - self, - select_stmt, - asfrom: bool = False, - insert_into: bool = False, - fromhints: Incomplete | None = None, - compound_index: Incomplete | None = None, - select_wraps_for: Incomplete | None = None, - lateral: bool = False, - from_linter: Incomplete | None = None, - **kwargs, - ): ... - def get_cte_preamble(self, recursive): ... - def get_select_precolumns(self, select, **kw): ... - def group_by_clause(self, select, **kw): ... - def order_by_clause(self, select, **kw): ... - def for_update_clause(self, select, **kw): ... - def returning_clause(self, stmt, returning_cols) -> None: ... - def limit_clause(self, select, **kw): ... - def fetch_clause(self, select, **kw): ... - def visit_table( - self, - table, - asfrom: bool = False, - iscrud: bool = False, - ashint: bool = False, - fromhints: Incomplete | None = None, - use_schema: bool = True, - from_linter: Incomplete | None = None, - **kwargs, - ): ... - def visit_join(self, join, asfrom: bool = False, from_linter: Incomplete | None = None, **kwargs): ... - def visit_insert(self, insert_stmt, **kw): ... - def update_limit_clause(self, update_stmt) -> None: ... - def update_tables_clause(self, update_stmt, from_table, extra_froms, **kw): ... - def update_from_clause(self, update_stmt, from_table, extra_froms, from_hints, **kw) -> None: ... - def visit_update(self, update_stmt, **kw): ... - def delete_extra_from_clause(self, update_stmt, from_table, extra_froms, from_hints, **kw) -> None: ... - def delete_table_clause(self, delete_stmt, from_table, extra_froms): ... - def visit_delete(self, delete_stmt, **kw): ... - def visit_savepoint(self, savepoint_stmt): ... - def visit_rollback_to_savepoint(self, savepoint_stmt): ... - def visit_release_savepoint(self, savepoint_stmt): ... - -class StrSQLCompiler(SQLCompiler): - def visit_unsupported_compilation(self, element, err, **kw): ... - def visit_getitem_binary(self, binary, operator, **kw): ... - def visit_json_getitem_op_binary(self, binary, operator, **kw): ... - def visit_json_path_getitem_op_binary(self, binary, operator, **kw): ... - def visit_sequence(self, seq, **kw): ... - def returning_clause(self, stmt, returning_cols): ... - def update_from_clause(self, update_stmt, from_table, extra_froms, from_hints, **kw): ... - def delete_extra_from_clause(self, update_stmt, from_table, extra_froms, from_hints, **kw): ... - def visit_empty_set_expr(self, type_): ... - def get_from_hint_text(self, table, text): ... - def visit_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_not_regexp_match_op_binary(self, binary, operator, **kw): ... - def visit_regexp_replace_op_binary(self, binary, operator, **kw): ... - -class DDLCompiler(Compiled): - @memoized_property - def sql_compiler(self): ... - @memoized_property - def type_compiler(self): ... - def construct_params( - self, params: Incomplete | None = None, extracted_parameters: Incomplete | None = None, escape_names: bool = True - ) -> None: ... - def visit_ddl(self, ddl, **kwargs): ... - def visit_create_schema(self, create, **kw): ... - def visit_drop_schema(self, drop, **kw): ... - def visit_create_table(self, create, **kw): ... - def visit_create_column(self, create, first_pk: bool = False, **kw): ... - def create_table_constraints(self, table, _include_foreign_key_constraints: Incomplete | None = None, **kw): ... - def visit_drop_table(self, drop, **kw): ... - def visit_drop_view(self, drop, **kw): ... - def visit_create_index(self, create, include_schema: bool = False, include_table_schema: bool = True, **kw): ... - def visit_drop_index(self, drop, **kw): ... - def visit_add_constraint(self, create, **kw): ... - def visit_set_table_comment(self, create, **kw): ... - def visit_drop_table_comment(self, drop, **kw): ... - def visit_set_column_comment(self, create, **kw): ... - def visit_drop_column_comment(self, drop, **kw): ... - def get_identity_options(self, identity_options): ... - def visit_create_sequence(self, create, prefix: Incomplete | None = None, **kw): ... - def visit_drop_sequence(self, drop, **kw): ... - def visit_drop_constraint(self, drop, **kw): ... - def get_column_specification(self, column, **kwargs): ... - def create_table_suffix(self, table): ... - def post_create_table(self, table): ... - def get_column_default_string(self, column): ... - def visit_table_or_column_check_constraint(self, constraint, **kw): ... - def visit_check_constraint(self, constraint, **kw): ... - def visit_column_check_constraint(self, constraint, **kw): ... - def visit_primary_key_constraint(self, constraint, **kw): ... - def visit_foreign_key_constraint(self, constraint, **kw): ... - def define_constraint_remote_table(self, constraint, table, preparer): ... - def visit_unique_constraint(self, constraint, **kw): ... - def define_constraint_cascades(self, constraint): ... - def define_constraint_deferrability(self, constraint): ... - def define_constraint_match(self, constraint): ... - def visit_computed_column(self, generated, **kw): ... - def visit_identity_column(self, identity, **kw): ... - -class GenericTypeCompiler(TypeCompiler): - def visit_FLOAT(self, type_, **kw): ... - def visit_REAL(self, type_, **kw): ... - def visit_NUMERIC(self, type_, **kw): ... - def visit_DECIMAL(self, type_, **kw): ... - def visit_INTEGER(self, type_, **kw): ... - def visit_SMALLINT(self, type_, **kw): ... - def visit_BIGINT(self, type_, **kw): ... - def visit_TIMESTAMP(self, type_, **kw): ... - def visit_DATETIME(self, type_, **kw): ... - def visit_DATE(self, type_, **kw): ... - def visit_TIME(self, type_, **kw): ... - def visit_CLOB(self, type_, **kw): ... - def visit_NCLOB(self, type_, **kw): ... - def visit_CHAR(self, type_, **kw): ... - def visit_NCHAR(self, type_, **kw): ... - def visit_VARCHAR(self, type_, **kw): ... - def visit_NVARCHAR(self, type_, **kw): ... - def visit_TEXT(self, type_, **kw): ... - def visit_BLOB(self, type_, **kw): ... - def visit_BINARY(self, type_, **kw): ... - def visit_VARBINARY(self, type_, **kw): ... - def visit_BOOLEAN(self, type_, **kw): ... - def visit_large_binary(self, type_, **kw): ... - def visit_boolean(self, type_, **kw): ... - def visit_time(self, type_, **kw): ... - def visit_datetime(self, type_, **kw): ... - def visit_date(self, type_, **kw): ... - def visit_big_integer(self, type_, **kw): ... - def visit_small_integer(self, type_, **kw): ... - def visit_integer(self, type_, **kw): ... - def visit_real(self, type_, **kw): ... - def visit_float(self, type_, **kw): ... - def visit_numeric(self, type_, **kw): ... - def visit_string(self, type_, **kw): ... - def visit_unicode(self, type_, **kw): ... - def visit_text(self, type_, **kw): ... - def visit_unicode_text(self, type_, **kw): ... - def visit_enum(self, type_, **kw): ... - def visit_null(self, type_, **kw) -> None: ... - def visit_type_decorator(self, type_, **kw): ... - def visit_user_defined(self, type_, **kw): ... - -class StrSQLTypeCompiler(GenericTypeCompiler): - def process(self, type_, **kw): ... - def __getattr__(self, key: str): ... - def visit_null(self, type_, **kw): ... - def visit_user_defined(self, type_, **kw): ... - -class IdentifierPreparer: - reserved_words: Incomplete - legal_characters: Incomplete - illegal_initial_characters: Incomplete - schema_for_object: Incomplete - dialect: Incomplete - initial_quote: Incomplete - final_quote: Incomplete - escape_quote: Incomplete - escape_to_quote: Incomplete - omit_schema: Incomplete - quote_case_sensitive_collations: Incomplete - def __init__( - self, - dialect, - initial_quote: str = '"', - final_quote: Incomplete | None = None, - escape_quote: str = '"', - quote_case_sensitive_collations: bool = True, - omit_schema: bool = False, - ) -> None: ... - def validate_sql_phrase(self, element, reg): ... - def quote_identifier(self, value): ... - def quote_schema(self, schema, force: Incomplete | None = None): ... - def quote(self, ident, force: Incomplete | None = None): ... - def format_collation(self, collation_name): ... - def format_sequence(self, sequence, use_schema: bool = True): ... - def format_label(self, label, name: Incomplete | None = None): ... - def format_alias(self, alias, name: Incomplete | None = None): ... - def format_savepoint(self, savepoint, name: Incomplete | None = None): ... - def format_constraint(self, constraint, _alembic_quote: bool = True): ... - def truncate_and_render_index_name(self, name, _alembic_quote: bool = True): ... - def truncate_and_render_constraint_name(self, name, _alembic_quote: bool = True): ... - def format_index(self, index): ... - def format_table(self, table, use_schema: bool = True, name: Incomplete | None = None): ... - def format_schema(self, name): ... - def format_label_name(self, name, anon_map: Incomplete | None = None): ... - def format_column( - self, - column, - use_table: bool = False, - name: Incomplete | None = None, - table_name: Incomplete | None = None, - use_schema: bool = False, - anon_map: Incomplete | None = None, - ): ... - def format_table_seq(self, table, use_schema: bool = True): ... - def unformat_identifiers(self, identifiers): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/crud.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/crud.pyi deleted file mode 100644 index a13be2f00..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/crud.pyi +++ /dev/null @@ -1,18 +0,0 @@ -from typing import Any, Generic, TypeVar - -from . import elements -from .operators import ColumnOperators - -_T = TypeVar("_T") - -REQUIRED: Any - -class _multiparam_column(elements.ColumnElement[_T], Generic[_T]): - index: Any - key: Any - original: Any - default: Any - type: Any - def __init__(self, original, index) -> None: ... - def compare(self, other, **kw) -> None: ... - def __eq__(self, other) -> ColumnOperators[_T]: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi deleted file mode 100644 index 4749fedd2..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/ddl.pyi +++ /dev/null @@ -1,155 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from . import roles -from .base import Executable, SchemaVisitor -from .elements import ClauseElement - -class _DDLCompiles(ClauseElement): ... - -class DDLElement(roles.DDLRole, Executable, _DDLCompiles): - target: Any - on: Any - dialect: Any - callable_: Any - def execute(self, bind: Incomplete | None = None, target: Incomplete | None = None): ... # type: ignore[override] - def against(self, target) -> None: ... - state: Any - def execute_if( - self, dialect: Incomplete | None = None, callable_: Incomplete | None = None, state: Incomplete | None = None - ) -> None: ... - def __call__(self, target, bind, **kw): ... - bind: Any - -class DDL(DDLElement): - __visit_name__: str - statement: Any - context: Any - def __init__(self, statement, context: Incomplete | None = None, bind: Incomplete | None = None) -> None: ... - -class _CreateDropBase(DDLElement): - element: Any - bind: Any - if_exists: Any - if_not_exists: Any - def __init__( - self, - element, - bind: Incomplete | None = None, - if_exists: bool = False, - if_not_exists: bool = False, - _legacy_bind: Incomplete | None = None, - ) -> None: ... - @property - def stringify_dialect(self): ... - -class CreateSchema(_CreateDropBase): - __visit_name__: str - quote: Any - def __init__(self, name, quote: Incomplete | None = None, **kw) -> None: ... - -class DropSchema(_CreateDropBase): - __visit_name__: str - quote: Any - cascade: Any - def __init__(self, name, quote: Incomplete | None = None, cascade: bool = False, **kw) -> None: ... - -class CreateTable(_CreateDropBase): - __visit_name__: str - columns: Any - include_foreign_key_constraints: Any - def __init__( - self, - element, - bind: Incomplete | None = None, - include_foreign_key_constraints: Incomplete | None = None, - if_not_exists: bool = False, - ) -> None: ... - -class _DropView(_CreateDropBase): - __visit_name__: str - -class CreateColumn(_DDLCompiles): - __visit_name__: str - element: Any - def __init__(self, element) -> None: ... - -class DropTable(_CreateDropBase): - __visit_name__: str - def __init__(self, element, bind: Incomplete | None = None, if_exists: bool = False) -> None: ... - -class CreateSequence(_CreateDropBase): - __visit_name__: str - -class DropSequence(_CreateDropBase): - __visit_name__: str - -class CreateIndex(_CreateDropBase): - __visit_name__: str - def __init__(self, element, bind: Incomplete | None = None, if_not_exists: bool = False) -> None: ... - -class DropIndex(_CreateDropBase): - __visit_name__: str - def __init__(self, element, bind: Incomplete | None = None, if_exists: bool = False) -> None: ... - -class AddConstraint(_CreateDropBase): - __visit_name__: str - def __init__(self, element, *args, **kw) -> None: ... - -class DropConstraint(_CreateDropBase): - __visit_name__: str - cascade: Any - def __init__(self, element, cascade: bool = False, **kw) -> None: ... - -class SetTableComment(_CreateDropBase): - __visit_name__: str - -class DropTableComment(_CreateDropBase): - __visit_name__: str - -class SetColumnComment(_CreateDropBase): - __visit_name__: str - -class DropColumnComment(_CreateDropBase): - __visit_name__: str - -class DDLBase(SchemaVisitor): - connection: Any - def __init__(self, connection) -> None: ... - -class SchemaGenerator(DDLBase): - checkfirst: Any - tables: Any - preparer: Any - dialect: Any - memo: Any - def __init__(self, dialect, connection, checkfirst: bool = False, tables: Incomplete | None = None, **kwargs) -> None: ... - def visit_metadata(self, metadata) -> None: ... - def visit_table( - self, - table, - create_ok: bool = False, - include_foreign_key_constraints: Incomplete | None = None, - _is_metadata_operation: bool = False, - ) -> None: ... - def visit_foreign_key_constraint(self, constraint) -> None: ... - def visit_sequence(self, sequence, create_ok: bool = False) -> None: ... - def visit_index(self, index, create_ok: bool = False) -> None: ... - -class SchemaDropper(DDLBase): - checkfirst: Any - tables: Any - preparer: Any - dialect: Any - memo: Any - def __init__(self, dialect, connection, checkfirst: bool = False, tables: Incomplete | None = None, **kwargs) -> None: ... - def visit_metadata(self, metadata): ... - def visit_index(self, index, drop_ok: bool = False) -> None: ... - def visit_table(self, table, drop_ok: bool = False, _is_metadata_operation: bool = False, _ignore_sequences=()) -> None: ... - def visit_foreign_key_constraint(self, constraint) -> None: ... - def visit_sequence(self, sequence, drop_ok: bool = False) -> None: ... - -def sort_tables(tables, skip_fn: Incomplete | None = None, extra_dependencies: Incomplete | None = None): ... -def sort_tables_and_constraints( - tables, filter_fn: Incomplete | None = None, extra_dependencies: Incomplete | None = None, _warn_for_cycles: bool = False -): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/default_comparator.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/default_comparator.pyi deleted file mode 100644 index ac514fdf0..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/default_comparator.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from typing import Any - -operator_lookup: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi deleted file mode 100644 index 518c88b84..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/dml.pyi +++ /dev/null @@ -1,120 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from . import roles -from .base import CompileState, DialectKWArgs, Executable, HasCompileState -from .elements import ClauseElement -from .selectable import HasCTE, HasPrefixes, ReturnsRows - -class DMLState(CompileState): - isupdate: bool - isdelete: bool - isinsert: bool - def __init__(self, statement, compiler, **kw) -> None: ... - @property - def dml_table(self): ... - @classmethod - def get_entity_description(cls, statement) -> dict[str, Incomplete]: ... - @classmethod - def get_returning_column_descriptions(cls, statement) -> list[dict[str, Incomplete]]: ... - -class InsertDMLState(DMLState): - isinsert: bool - include_table_with_column_exprs: bool - statement: Any - def __init__(self, statement, compiler, **kw) -> None: ... - -class UpdateDMLState(DMLState): - isupdate: bool - include_table_with_column_exprs: bool - statement: Any - is_multitable: Any - def __init__(self, statement, compiler, **kw) -> None: ... - -class DeleteDMLState(DMLState): - isdelete: bool - statement: Any - def __init__(self, statement, compiler, **kw) -> None: ... - -class UpdateBase(roles.DMLRole, HasCTE, HasCompileState, DialectKWArgs, HasPrefixes, ReturnsRows, Executable, ClauseElement): - __visit_name__: str - named_with_column: bool - is_dml: bool - def params(self, *arg, **kw) -> None: ... - def with_dialect_options(self, **opt) -> None: ... - bind: Any - def returning(self, *cols) -> None: ... - @property - def exported_columns(self): ... - def with_hint(self, text, selectable: Incomplete | None = None, dialect_name: str = "*") -> None: ... - @property - def entity_description(self): ... - @property - def returning_column_descriptions(self): ... - -class ValuesBase(UpdateBase): - __visit_name__: str - select: Any - table: Any - def __init__(self, table, values, prefixes) -> None: ... - def values(self, *args, **kwargs) -> None: ... - def return_defaults(self, *cols) -> None: ... - -class Insert(ValuesBase): - __visit_name__: str - select: Any - include_insert_from_select_defaults: bool - is_insert: bool - def __init__( - self, - table, - values: Incomplete | None = None, - inline: bool = False, - bind: Incomplete | None = None, - prefixes: Incomplete | None = None, - returning: Incomplete | None = None, - return_defaults: bool = False, - **dialect_kw, - ) -> None: ... - def inline(self) -> None: ... - def from_select(self, names, select, include_defaults: bool = True) -> None: ... - -class DMLWhereBase: - def where(self, *whereclause) -> None: ... - def filter(self, *criteria): ... - def filter_by(self, **kwargs): ... - @property - def whereclause(self): ... - -class Update(DMLWhereBase, ValuesBase): - __visit_name__: str - is_update: bool - def __init__( - self, - table, - whereclause: Incomplete | None = None, - values: Incomplete | None = None, - inline: bool = False, - bind: Incomplete | None = None, - prefixes: Incomplete | None = None, - returning: Incomplete | None = None, - return_defaults: bool = False, - preserve_parameter_order: bool = False, - **dialect_kw, - ) -> None: ... - def ordered_values(self, *args) -> None: ... - def inline(self) -> None: ... - -class Delete(DMLWhereBase, UpdateBase): - __visit_name__: str - is_delete: bool - table: Any - def __init__( - self, - table, - whereclause: Incomplete | None = None, - bind: Incomplete | None = None, - returning: Incomplete | None = None, - prefixes: Incomplete | None = None, - **dialect_kw, - ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi deleted file mode 100644 index 454f33396..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/elements.pyi +++ /dev/null @@ -1,473 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, Generic, TypeVar -from typing_extensions import Literal, Self - -from .. import util -from ..util.langhelpers import HasMemoized, memoized_property -from . import operators, roles -from .annotation import Annotated, SupportsWrappingAnnotations -from .base import Executable, Immutable, SingletonConstant -from .traversals import HasCopyInternals, MemoizedHasCacheKey -from .visitors import Traversible - -_T = TypeVar("_T") - -def collate(expression, collation): ... -def between(expr, lower_bound, upper_bound, symmetric: bool = False): ... -def literal(value, type_: Incomplete | None = None): ... -def outparam(key, type_: Incomplete | None = None): ... -def not_(clause): ... - -class ClauseElement(roles.SQLRole, SupportsWrappingAnnotations, MemoizedHasCacheKey, HasCopyInternals, Traversible): - __visit_name__: str - supports_execution: bool - stringify_dialect: str - bind: Any - description: Any - is_clause_element: bool - is_selectable: bool - @property - def entity_namespace(self) -> None: ... - def unique_params(self, *optionaldict, **kwargs): ... - def params(self, *optionaldict, **kwargs): ... - def compare(self, other, **kw): ... - def self_group(self, against: Incomplete | None = None): ... - def compile(self, bind: Incomplete | None = None, dialect: Incomplete | None = None, **kw): ... - def __invert__(self): ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - -class ColumnElement( - roles.ColumnArgumentOrKeyRole, - roles.StatementOptionRole, - roles.WhereHavingRole, - roles.BinaryElementRole, - roles.OrderByRole, - roles.ColumnsClauseRole, - roles.LimitOffsetRole, - roles.DMLColumnRole, - roles.DDLConstraintColumnRole, - roles.DDLExpressionRole, - operators.ColumnOperators[_T], - ClauseElement, - Generic[_T], -): - __visit_name__: str - primary_key: bool - foreign_keys: Any - key: Any - def self_group(self, against: Incomplete | None = None): ... - @memoized_property - def type(self): ... - @HasMemoized.memoized_attribute - def comparator(self): ... - def __getattr__(self, key: str): ... - def operate(self, op, *other, **kwargs): ... - def reverse_operate(self, op, other, **kwargs): ... - @property - def expression(self): ... - @memoized_property - def base_columns(self): ... - @memoized_property - def proxy_set(self): ... - def shares_lineage(self, othercolumn): ... - def cast(self, type_): ... - def label(self, name): ... - @property - def anon_label(self): ... - @property - def anon_key_label(self): ... - -class WrapsColumnExpression: - @property - def wrapped_column_expression(self) -> None: ... - -class BindParameter(roles.InElementRole, ColumnElement[_T], Generic[_T]): - __visit_name__: str - inherit_cache: bool - key: Any - unique: Any - value: Any - callable: Any - isoutparam: Any - required: Any - expanding: Any - expand_op: Any - literal_execute: Any - type: Any - def __init__( - self, - key, - value=..., - type_: Incomplete | None = None, - unique: bool = False, - required=..., - quote: Incomplete | None = None, - callable_: Incomplete | None = None, - expanding: bool = False, - isoutparam: bool = False, - literal_execute: bool = False, - _compared_to_operator: Incomplete | None = None, - _compared_to_type: Incomplete | None = None, - _is_crud: bool = False, - ) -> None: ... - @property - def effective_value(self): ... - def render_literal_execute(self): ... - -class TypeClause(ClauseElement): - __visit_name__: str - type: Any - def __init__(self, type_) -> None: ... - -class TextClause( - roles.DDLConstraintColumnRole, - roles.DDLExpressionRole, - roles.StatementOptionRole, - roles.WhereHavingRole, - roles.OrderByRole, - roles.FromClauseRole, - roles.SelectStatementRole, - roles.BinaryElementRole, - roles.InElementRole, - Executable, - ClauseElement, -): - __visit_name__: str - def __and__(self, other): ... - key: Any - text: Any - def __init__(self, text: str, bind: Incomplete | None = None) -> None: ... - def bindparams(self, *binds, **names_to_values) -> Self: ... - def columns(self, *cols, **types): ... - @property - def type(self): ... - @property - def comparator(self): ... - def self_group(self, against: Incomplete | None = None): ... - -class Null(SingletonConstant, roles.ConstExprRole, ColumnElement[None]): - __visit_name__: str - @memoized_property - def type(self): ... - -class False_(SingletonConstant, roles.ConstExprRole, ColumnElement[Literal[False]]): - __visit_name__: str - @memoized_property - def type(self): ... - -class True_(SingletonConstant, roles.ConstExprRole, ColumnElement[Literal[True]]): - __visit_name__: str - @memoized_property - def type(self): ... - -class ClauseList(roles.InElementRole, roles.OrderByRole, roles.ColumnsClauseRole, roles.DMLColumnRole, ClauseElement): - __visit_name__: str - operator: Any - group: Any - group_contents: Any - clauses: Any - def __init__(self, *clauses, **kwargs) -> None: ... - def __iter__(self): ... - def __len__(self) -> int: ... - def append(self, clause) -> None: ... - def self_group(self, against: Incomplete | None = None): ... - -class BooleanClauseList(ClauseList, ColumnElement[Any]): - __visit_name__: str - inherit_cache: bool - def __init__(self, *arg, **kw) -> None: ... - @classmethod - def and_(cls, *clauses): ... - @classmethod - def or_(cls, *clauses): ... - def self_group(self, against: Incomplete | None = None): ... - -and_: Any -or_: Any - -class Tuple(ClauseList, ColumnElement[Any]): - __visit_name__: str - type: Any - def __init__(self, *clauses, **kw) -> None: ... - def self_group(self, against: Incomplete | None = None): ... - -class Case(ColumnElement[Any]): - __visit_name__: str - value: Any - type: Any - whens: Any - else_: Any - def __init__(self, *whens, **kw) -> None: ... - -def literal_column(text, type_: Incomplete | None = None): ... - -class Cast(WrapsColumnExpression, ColumnElement[Any]): - __visit_name__: str - type: Any - clause: Any - typeclause: Any - def __init__(self, expression, type_) -> None: ... - @property - def wrapped_column_expression(self): ... - -class TypeCoerce(WrapsColumnExpression, ColumnElement[Any]): - __visit_name__: str - type: Any - clause: Any - def __init__(self, expression, type_) -> None: ... - @HasMemoized.memoized_attribute - def typed_expression(self): ... - @property - def wrapped_column_expression(self): ... - def self_group(self, against: Incomplete | None = None): ... - -class Extract(ColumnElement[Any]): - __visit_name__: str - type: Any - field: Any - expr: Any - def __init__(self, field, expr, **kwargs) -> None: ... - -class _label_reference(ColumnElement[Any]): - __visit_name__: str - element: Any - def __init__(self, element) -> None: ... - -class _textual_label_reference(ColumnElement[Any]): - __visit_name__: str - element: Any - def __init__(self, element) -> None: ... - -class UnaryExpression(ColumnElement[Any]): - __visit_name__: str - operator: Any - modifier: Any - element: Any - type: Any - wraps_column_expression: Any - def __init__( - self, - element, - operator: Incomplete | None = None, - modifier: Incomplete | None = None, - type_: Incomplete | None = None, - wraps_column_expression: bool = False, - ) -> None: ... - def self_group(self, against: Incomplete | None = None): ... - -class CollectionAggregate(UnaryExpression): - inherit_cache: bool - def operate(self, op, *other, **kwargs): ... - def reverse_operate(self, op, other, **kwargs) -> None: ... - -class AsBoolean(WrapsColumnExpression, UnaryExpression): - inherit_cache: bool - element: Any - type: Any - operator: Any - negate: Any - modifier: Any - wraps_column_expression: bool - def __init__(self, element, operator, negate) -> None: ... - @property - def wrapped_column_expression(self): ... - def self_group(self, against: Incomplete | None = None): ... - -class BinaryExpression(ColumnElement[Any]): - __visit_name__: str - left: Any - right: Any - operator: Any - type: Any - negate: Any - modifiers: Any - def __init__( - self, - left, - right, - operator, - type_: Incomplete | None = None, - negate: Incomplete | None = None, - modifiers: Incomplete | None = None, - ) -> None: ... - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - @property - def is_comparison(self): ... - def self_group(self, against: Incomplete | None = None): ... - -class Slice(ColumnElement[Any]): - __visit_name__: str - start: Any - stop: Any - step: Any - type: Any - def __init__(self, start, stop, step, _name: Incomplete | None = None) -> None: ... - def self_group(self, against: Incomplete | None = None): ... - -class IndexExpression(BinaryExpression): - inherit_cache: bool - -class GroupedElement(ClauseElement): - __visit_name__: str - def self_group(self, against: Incomplete | None = None): ... - -class Grouping(GroupedElement, ColumnElement[Any]): - element: Any - type: Any - def __init__(self, element) -> None: ... - def __getattr__(self, attr: str): ... - -RANGE_UNBOUNDED: Any -RANGE_CURRENT: Any - -class Over(ColumnElement[Any]): - __visit_name__: str - order_by: Any - partition_by: Any - element: Any - range_: Any - rows: Any - def __init__( - self, - element, - partition_by: Incomplete | None = None, - order_by: Incomplete | None = None, - range_: Incomplete | None = None, - rows: Incomplete | None = None, - ) -> None: ... - def __reduce__(self): ... - @memoized_property - def type(self): ... - -class WithinGroup(ColumnElement[Any]): - __visit_name__: str - order_by: Any - element: Any - def __init__(self, element, *order_by) -> None: ... - def __reduce__(self): ... - def over( - self, - partition_by: Incomplete | None = None, - order_by: Incomplete | None = None, - range_: Incomplete | None = None, - rows: Incomplete | None = None, - ): ... - @memoized_property - def type(self): ... - -class FunctionFilter(ColumnElement[Any]): - __visit_name__: str - criterion: Any - func: Any - def __init__(self, func, *criterion) -> None: ... - def filter(self, *criterion): ... - def over( - self, - partition_by: Incomplete | None = None, - order_by: Incomplete | None = None, - range_: Incomplete | None = None, - rows: Incomplete | None = None, - ): ... - def self_group(self, against: Incomplete | None = None): ... - @memoized_property - def type(self): ... - -class Label(roles.LabeledColumnExprRole, ColumnElement[Any]): - __visit_name__: str - name: Any - key: Any - def __init__(self, name, element, type_: Incomplete | None = None) -> None: ... - def __reduce__(self): ... - @memoized_property - def type(self): ... - @HasMemoized.memoized_attribute - def element(self): ... - def self_group(self, against: Incomplete | None = None): ... - @property - def primary_key(self): ... - @property - def foreign_keys(self): ... - -class NamedColumn(ColumnElement[Any]): - is_literal: bool - table: Any - @memoized_property - def description(self): ... - -class ColumnClause(roles.DDLReferredColumnRole, roles.LabeledColumnExprRole, roles.StrAsPlainColumnRole, Immutable, NamedColumn): - table: Any - is_literal: bool - __visit_name__: str - onupdate: Any - default: Any - server_default: Any - server_onupdate: Any - key: Any - type: Any - def __init__( - self, text, type_: Incomplete | None = None, is_literal: bool = False, _selectable: Incomplete | None = None - ) -> None: ... - def get_children(self, column_tables: bool = False, **kw): ... # type: ignore[override] - @property - def entity_namespace(self): ... - -class TableValuedColumn(NamedColumn): - __visit_name__: str - scalar_alias: Any - key: Any - type: Any - def __init__(self, scalar_alias, type_) -> None: ... - -class CollationClause(ColumnElement[Any]): - __visit_name__: str - collation: Any - def __init__(self, collation) -> None: ... - -class _IdentifiedClause(Executable, ClauseElement): - __visit_name__: str - ident: Any - def __init__(self, ident) -> None: ... - -class SavepointClause(_IdentifiedClause): - __visit_name__: str - inherit_cache: bool - -class RollbackToSavepointClause(_IdentifiedClause): - __visit_name__: str - inherit_cache: bool - -class ReleaseSavepointClause(_IdentifiedClause): - __visit_name__: str - inherit_cache: bool - -class quoted_name(util.MemoizedSlots, util.text_type): - quote: Any - def __new__(cls, value, quote): ... - def __reduce__(self): ... - -class AnnotatedColumnElement(Annotated): - def __init__(self, element, values) -> None: ... - @property # Should be @memoized_property, but that causes issues with regr_test - def name(self): ... - @property # Should be @memoized_property, but that causes issues with regr_test - def table(self): ... - @property # Should be @memoized_property, but that causes issues with regr_test - def key(self): ... - @property # Should be @memoized_property, but that causes issues with regr_test - def info(self): ... - -class _truncated_label(quoted_name): - def __new__(cls, value, quote: Incomplete | None = None): ... - def __reduce__(self): ... - def apply_map(self, map_): ... - -class conv(_truncated_label): ... - -class _anonymous_label(_truncated_label): - @classmethod - def safe_construct(cls, seed, body, enclosing_label: Incomplete | None = None, sanitize_key: bool = False): ... - def __add__(self, other): ... - def __radd__(self, other): ... - def apply_map(self, map_): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/events.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/events.pyi deleted file mode 100644 index 11765c6af..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/events.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from .. import event - -class DDLEvents(event.Events): - def before_create(self, target, connection, **kw) -> None: ... - def after_create(self, target, connection, **kw) -> None: ... - def before_drop(self, target, connection, **kw) -> None: ... - def after_drop(self, target, connection, **kw) -> None: ... - def before_parent_attach(self, target, parent) -> None: ... - def after_parent_attach(self, target, parent) -> None: ... - def column_reflect(self, inspector, table, column_info) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/expression.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/expression.pyi deleted file mode 100644 index 44ca4b6ed..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/expression.pyi +++ /dev/null @@ -1,203 +0,0 @@ -from _typeshed import Incomplete - -from .base import PARSE_AUTOCOMMIT as PARSE_AUTOCOMMIT, ColumnCollection as ColumnCollection, Executable as Executable -from .dml import Delete as Delete, Insert as Insert, Update as Update, UpdateBase as UpdateBase, ValuesBase as ValuesBase -from .elements import ( - BinaryExpression as BinaryExpression, - BindParameter as BindParameter, - BooleanClauseList as BooleanClauseList, - Case as Case, - Cast as Cast, - ClauseElement as ClauseElement, - ClauseList as ClauseList, - CollectionAggregate as CollectionAggregate, - ColumnClause as ColumnClause, - ColumnElement as ColumnElement, - Extract as Extract, - False_ as False_, - FunctionFilter as FunctionFilter, - Grouping as Grouping, - Label as Label, - Null as Null, - Over as Over, - ReleaseSavepointClause as ReleaseSavepointClause, - RollbackToSavepointClause as RollbackToSavepointClause, - SavepointClause as SavepointClause, - TextClause as TextClause, - True_ as True_, - Tuple as Tuple, - TypeClause as TypeClause, - TypeCoerce as TypeCoerce, - UnaryExpression as UnaryExpression, - WithinGroup as WithinGroup, - _truncated_label as _truncated_label, - between as between, - collate as collate, - literal as literal, - literal_column as literal_column, - not_ as not_, - outparam as outparam, - quoted_name as quoted_name, -) -from .functions import Function as Function, FunctionElement as FunctionElement, func as func, modifier as modifier -from .lambdas import LambdaElement as LambdaElement, StatementLambdaElement as StatementLambdaElement, lambda_stmt as lambda_stmt -from .operators import ColumnOperators as ColumnOperators, Operators as Operators, custom_op as custom_op -from .selectable import ( - CTE as CTE, - LABEL_STYLE_DEFAULT as LABEL_STYLE_DEFAULT, - LABEL_STYLE_DISAMBIGUATE_ONLY as LABEL_STYLE_DISAMBIGUATE_ONLY, - LABEL_STYLE_NONE as LABEL_STYLE_NONE, - LABEL_STYLE_TABLENAME_PLUS_COL as LABEL_STYLE_TABLENAME_PLUS_COL, - Alias as Alias, - AliasedReturnsRows as AliasedReturnsRows, - CompoundSelect as CompoundSelect, - Exists as Exists, - FromClause as FromClause, - FromGrouping as FromGrouping, - GenerativeSelect as GenerativeSelect, - HasCTE as HasCTE, - HasPrefixes as HasPrefixes, - HasSuffixes as HasSuffixes, - Join as Join, - Lateral as Lateral, - ReturnsRows as ReturnsRows, - ScalarSelect as ScalarSelect, - Select as Select, - Selectable as Selectable, - SelectBase as SelectBase, - Subquery as Subquery, - TableClause as TableClause, - TableSample as TableSample, - TableValuedAlias as TableValuedAlias, - TextAsFrom as TextAsFrom, - TextualSelect as TextualSelect, - Values as Values, - subquery as subquery, -) -from .traversals import CacheKey as CacheKey -from .visitors import Visitable as Visitable - -__all__ = [ - "Alias", - "AliasedReturnsRows", - "any_", - "all_", - "CacheKey", - "ClauseElement", - "ColumnCollection", - "ColumnElement", - "CompoundSelect", - "Delete", - "FromClause", - "Insert", - "Join", - "Lateral", - "LambdaElement", - "StatementLambdaElement", - "Select", - "Selectable", - "TableClause", - "TableValuedAlias", - "Update", - "Values", - "alias", - "and_", - "asc", - "between", - "bindparam", - "case", - "cast", - "column", - "custom_op", - "cte", - "delete", - "desc", - "distinct", - "except_", - "except_all", - "exists", - "extract", - "func", - "modifier", - "collate", - "insert", - "intersect", - "intersect_all", - "join", - "label", - "lateral", - "lambda_stmt", - "literal", - "literal_column", - "not_", - "null", - "nulls_first", - "nulls_last", - "or_", - "outparam", - "outerjoin", - "over", - "select", - "table", - "text", - "tuple_", - "type_coerce", - "quoted_name", - "union", - "union_all", - "update", - "quoted_name", - "within_group", - "Subquery", - "TableSample", - "tablesample", - "values", -] - -all_: Incomplete -any_: Incomplete -and_: Incomplete -alias: Incomplete -tablesample: Incomplete -lateral: Incomplete -or_: Incomplete -bindparam: Incomplete -select: Incomplete - -def text(text: str, bind: Incomplete | None = None) -> TextClause: ... - -table: Incomplete -column: Incomplete -over: Incomplete -within_group: Incomplete -label: Incomplete -case: Incomplete -cast: Incomplete -cte: Incomplete -values: Incomplete -extract: Incomplete -tuple_: Incomplete -except_: Incomplete -except_all: Incomplete -intersect: Incomplete -intersect_all: Incomplete -union: Incomplete -union_all: Incomplete -exists: Incomplete -nulls_first: Incomplete -nullsfirst: Incomplete -nulls_last: Incomplete -nullslast: Incomplete -asc: Incomplete -desc: Incomplete -distinct: Incomplete -type_coerce: Incomplete -true: Incomplete -false: Incomplete -null: Incomplete -join: Incomplete -outerjoin: Incomplete -insert: Incomplete -update: Incomplete -delete: Incomplete -funcfilter: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi deleted file mode 100644 index 0f5bf12ba..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/functions.pyi +++ /dev/null @@ -1,228 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..util.langhelpers import HasMemoized -from .base import Executable, Generative -from .elements import BinaryExpression, ColumnElement, NamedColumn -from .selectable import FromClause, TableValuedAlias -from .visitors import TraversibleType - -def register_function(identifier, fn, package: str = "_default") -> None: ... - -class FunctionElement(Executable, ColumnElement[Any], FromClause, Generative): # type: ignore[misc] - packagenames: Incomplete - clause_expr: Incomplete - def __init__(self, *clauses, **kwargs) -> None: ... - def scalar_table_valued(self, name, type_: Incomplete | None = None): ... - def table_valued(self, *expr, **kw): ... - def column_valued(self, name: str | None = None, joins_implicitly: bool = False): ... - @property - def columns(self): ... - @property - def exported_columns(self): ... - @HasMemoized.memoized_attribute - def clauses(self): ... - def over( - self, - partition_by: Incomplete | None = None, - order_by: Incomplete | None = None, - rows: Incomplete | None = None, - range_: Incomplete | None = None, - ): ... - def within_group(self, *order_by): ... - def filter(self, *criterion): ... - def as_comparison(self, left_index, right_index): ... - def within_group_type(self, within_group) -> None: ... - def alias(self, name: str | None = None, joins_implicitly: bool = False) -> TableValuedAlias: ... # type: ignore[override] - def select(self): ... - def scalar(self): ... - def execute(self): ... - def self_group(self, against: Incomplete | None = None): ... - @property - def entity_namespace(self): ... - -class FunctionAsBinary(BinaryExpression): - sql_function: Incomplete - left_index: Incomplete - right_index: Incomplete - operator: Incomplete - type: Incomplete - negate: Incomplete - modifiers: Incomplete - def __init__(self, fn, left_index, right_index) -> None: ... - @property - def left(self): ... - @left.setter - def left(self, value) -> None: ... - @property - def right(self): ... - @right.setter - def right(self, value) -> None: ... - -class ScalarFunctionColumn(NamedColumn): - __visit_name__: str - is_literal: bool - table: Incomplete - fn: Incomplete - name: Incomplete - type: Incomplete - def __init__(self, fn, name, type_: Incomplete | None = None) -> None: ... - -class _FunctionGenerator: - opts: Incomplete - def __init__(self, **opts) -> None: ... - def __getattr__(self, name: str): ... - def __call__(self, *c, **kwargs): ... - -func: Incomplete -modifier: Incomplete - -class Function(FunctionElement): - __visit_name__: str - type: Incomplete - packagenames: Incomplete - name: Incomplete - def __init__(self, name, *clauses, **kw) -> None: ... - -class _GenericMeta(TraversibleType): - def __init__(cls, clsname, bases, clsdict) -> None: ... - -class GenericFunction(Function, metaclass=_GenericMeta): - name: Incomplete - identifier: Incomplete - coerce_arguments: bool - inherit_cache: bool - packagenames: Incomplete - clause_expr: Incomplete - type: Incomplete - def __init__(self, *args, **kwargs) -> None: ... - -class next_value(GenericFunction): - type: Incomplete - name: str - sequence: Incomplete - def __init__(self, seq, **kw) -> None: ... - def compare(self, other, **kw): ... - -class AnsiFunction(GenericFunction): - inherit_cache: bool - def __init__(self, *args, **kwargs) -> None: ... - -class ReturnTypeFromArgs(GenericFunction): - inherit_cache: bool - def __init__(self, *args, **kwargs) -> None: ... - -class coalesce(ReturnTypeFromArgs): - inherit_cache: bool - -class max(ReturnTypeFromArgs): - inherit_cache: bool - -class min(ReturnTypeFromArgs): - inherit_cache: bool - -class sum(ReturnTypeFromArgs): - inherit_cache: bool - -class now(GenericFunction): - type: Incomplete - inherit_cache: bool - -class concat(GenericFunction): - type: Incomplete - inherit_cache: bool - -class char_length(GenericFunction): - type: Incomplete - inherit_cache: bool - def __init__(self, arg, **kwargs) -> None: ... - -class random(GenericFunction): - inherit_cache: bool - -class count(GenericFunction): - type: Incomplete - inherit_cache: bool - def __init__(self, expression: Incomplete | None = None, **kwargs) -> None: ... - -class current_date(AnsiFunction): - type: Incomplete - inherit_cache: bool - -class current_time(AnsiFunction): - type: Incomplete - inherit_cache: bool - -class current_timestamp(AnsiFunction): - type: Incomplete - inherit_cache: bool - -class current_user(AnsiFunction): - type: Incomplete - inherit_cache: bool - -class localtime(AnsiFunction): - type: Incomplete - inherit_cache: bool - -class localtimestamp(AnsiFunction): - type: Incomplete - inherit_cache: bool - -class session_user(AnsiFunction): - type: Incomplete - inherit_cache: bool - -class sysdate(AnsiFunction): - type: Incomplete - inherit_cache: bool - -class user(AnsiFunction): - type: Incomplete - inherit_cache: bool - -class array_agg(GenericFunction): - type: Incomplete - inherit_cache: bool - def __init__(self, *args, **kwargs) -> None: ... - -class OrderedSetAgg(GenericFunction): - array_for_multi_clause: bool - inherit_cache: bool - def within_group_type(self, within_group): ... - -class mode(OrderedSetAgg): - inherit_cache: bool - -class percentile_cont(OrderedSetAgg): - array_for_multi_clause: bool - inherit_cache: bool - -class percentile_disc(OrderedSetAgg): - array_for_multi_clause: bool - inherit_cache: bool - -class rank(GenericFunction): - type: Incomplete - inherit_cache: bool - -class dense_rank(GenericFunction): - type: Incomplete - inherit_cache: bool - -class percent_rank(GenericFunction): - type: Incomplete - inherit_cache: bool - -class cume_dist(GenericFunction): - type: Incomplete - inherit_cache: bool - -class cube(GenericFunction): - inherit_cache: bool - -class rollup(GenericFunction): - inherit_cache: bool - -class grouping_sets(GenericFunction): - inherit_cache: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/lambdas.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/lambdas.pyi deleted file mode 100644 index 49c91eefc..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/lambdas.pyi +++ /dev/null @@ -1,122 +0,0 @@ -from _typeshed import Incomplete -from typing import Generic, TypeVar - -from . import elements, roles -from .base import Options -from .operators import ColumnOperators - -_T = TypeVar("_T") - -class LambdaOptions(Options): - enable_tracking: bool - track_closure_variables: bool - track_on: Incomplete - global_track_bound_values: bool - track_bound_values: bool - lambda_cache: Incomplete - -def lambda_stmt( - lmb, - enable_tracking: bool = True, - track_closure_variables: bool = True, - track_on: Incomplete | None = None, - global_track_bound_values: bool = True, - track_bound_values: bool = True, - lambda_cache: Incomplete | None = None, -): ... - -class LambdaElement(elements.ClauseElement): - __visit_name__: str - parent_lambda: Incomplete - fn: Incomplete - role: Incomplete - tracker_key: Incomplete - opts: Incomplete - def __init__(self, fn, role, opts=..., apply_propagate_attrs: Incomplete | None = None) -> None: ... - def __getattr__(self, key: str): ... - -class DeferredLambdaElement(LambdaElement): - lambda_args: Incomplete - def __init__(self, fn, role, opts=..., lambda_args=()) -> None: ... - -class StatementLambdaElement(roles.AllowsLambdaRole, LambdaElement): - def __add__(self, other): ... - def add_criteria( - self, - other, - enable_tracking: bool = True, - track_on: Incomplete | None = None, - track_closure_variables: bool = True, - track_bound_values: bool = True, - ): ... - def spoil(self): ... - -class NullLambdaStatement(roles.AllowsLambdaRole, elements.ClauseElement): - __visit_name__: str - def __init__(self, statement) -> None: ... - def __getattr__(self, key: str): ... - def __add__(self, other): ... - def add_criteria(self, other, **kw): ... - -class LinkedLambdaElement(StatementLambdaElement): - role: Incomplete - opts: Incomplete - fn: Incomplete - parent_lambda: Incomplete - tracker_key: Incomplete - def __init__(self, fn, parent_lambda, opts) -> None: ... - -class AnalyzedCode: - @classmethod - def get(cls, fn, lambda_element, lambda_kw, **kw): ... - track_bound_values: Incomplete - track_closure_variables: Incomplete - bindparam_trackers: Incomplete - closure_trackers: Incomplete - build_py_wrappers: Incomplete - def __init__(self, fn, lambda_element, opts) -> None: ... - -class NonAnalyzedFunction: - closure_bindparams: Incomplete - bindparam_trackers: Incomplete - expr: Incomplete - def __init__(self, expr) -> None: ... - @property - def expected_expr(self): ... - -class AnalyzedFunction: - analyzed_code: Incomplete - fn: Incomplete - closure_pywrappers: Incomplete - tracker_instrumented_fn: Incomplete - expr: Incomplete - bindparam_trackers: Incomplete - expected_expr: Incomplete - is_sequence: Incomplete - propagate_attrs: Incomplete - closure_bindparams: Incomplete - def __init__(self, analyzed_code, lambda_element, apply_propagate_attrs, fn) -> None: ... - -class PyWrapper(ColumnOperators[_T], Generic[_T]): - fn: Incomplete - track_bound_values: Incomplete - def __init__( - self, - fn, - name, - to_evaluate, - closure_index: Incomplete | None = None, - getter: Incomplete | None = None, - track_bound_values: bool = True, - ) -> None: ... - def __call__(self, *arg, **kw): ... - def operate(self, op, *other, **kwargs): ... - def reverse_operate(self, op, other, **kwargs): ... - def __clause_element__(self): ... # Field not always present. - def __bool__(self) -> bool: ... - def __nonzero__(self) -> bool: ... - def __getattribute__(self, key: str): ... - def __iter__(self): ... - def __getitem__(self, key) -> ColumnOperators[_T]: ... - -def insp(lmb): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/naming.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/naming.pyi deleted file mode 100644 index 50bdacf72..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/naming.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from typing import Any - -from .elements import conv as conv - -class ConventionDict: - const: Any - table: Any - convention: Any - def __init__(self, const, table, convention) -> None: ... - def __getitem__(self, key): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/operators.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/operators.pyi deleted file mode 100644 index cb91ff535..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/operators.pyi +++ /dev/null @@ -1,194 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Container, Iterable -from operator import truediv -from typing import Any, Generic, TypeVar - -_T = TypeVar("_T") - -div = truediv - -class Operators: - def __and__(self, other): ... - def __or__(self, other): ... - def __invert__(self): ... - def op(self, opstring, precedence: int = 0, is_comparison: bool = False, return_type: Incomplete | None = None): ... - def bool_op(self, opstring, precedence: int = 0): ... - def operate(self, op, *other, **kwargs): ... - def reverse_operate(self, op, other, **kwargs): ... - -class custom_op: - __name__: str - opstring: Any - precedence: Any - is_comparison: Any - natural_self_precedent: Any - eager_grouping: Any - return_type: Any - def __init__( - self, - opstring, - precedence: int = 0, - is_comparison: bool = False, - return_type: Incomplete | None = None, - natural_self_precedent: bool = False, - eager_grouping: bool = False, - ) -> None: ... - def __eq__(self, other): ... - def __hash__(self) -> int: ... - def __call__(self, left, right, **kw): ... - -class ColumnOperators(Operators, Generic[_T]): - timetuple: Any - def __lt__(self, other: _T | ColumnOperators[_T] | None) -> ColumnOperators[_T]: ... - def __le__(self, other: _T | ColumnOperators[_T] | None) -> ColumnOperators[_T]: ... - def __hash__(self) -> int: ... - def __eq__(self, other: _T | ColumnOperators[_T] | None) -> ColumnOperators[_T]: ... # type: ignore[override] - def __ne__(self, other: _T | ColumnOperators[_T] | None) -> ColumnOperators[_T]: ... # type: ignore[override] - def is_distinct_from(self, other) -> ColumnOperators[_T]: ... - def is_not_distinct_from(self, other) -> ColumnOperators[_T]: ... - def isnot_distinct_from(self, other) -> ColumnOperators[_T]: ... - def __gt__(self, other: _T | ColumnOperators[_T] | None) -> ColumnOperators[_T]: ... - def __ge__(self, other: _T | ColumnOperators[_T] | None) -> ColumnOperators[_T]: ... - def __neg__(self) -> ColumnOperators[_T]: ... - def __contains__(self, other) -> ColumnOperators[_T]: ... - def __getitem__(self, index: int) -> ColumnOperators[_T]: ... - def __lshift__(self, other) -> ColumnOperators[_T]: ... - def __rshift__(self, other) -> ColumnOperators[_T]: ... - def concat(self, other: _T | ColumnOperators[_T] | None) -> ColumnOperators[_T]: ... - def like(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... - def ilike(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... - def in_(self, other: Container[_T] | Iterable[_T]) -> ColumnOperators[_T]: ... - def not_in(self, other: Container[_T] | Iterable[_T]) -> ColumnOperators[_T]: ... - def notin_(self, other: Container[_T] | Iterable[_T]) -> ColumnOperators[_T]: ... - def not_like(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... - def notlike(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... - def not_ilike(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... - def notilike(self, other: _T, escape: str | None = None) -> ColumnOperators[_T]: ... - def is_(self, other: _T) -> ColumnOperators[_T]: ... - def is_not(self, other: _T) -> ColumnOperators[_T]: ... - def isnot(self, other: _T) -> ColumnOperators[_T]: ... - def startswith(self, other: str, **kwargs) -> ColumnOperators[_T]: ... - def endswith(self, other: str, **kwargs) -> ColumnOperators[_T]: ... - def contains(self, other: str, **kwargs) -> ColumnOperators[_T]: ... - def match(self, other: str, **kwargs) -> ColumnOperators[_T]: ... - def regexp_match(self, pattern, flags: Incomplete | None = None) -> ColumnOperators[_T]: ... - def regexp_replace(self, pattern, replacement, flags: Incomplete | None = None) -> ColumnOperators[_T]: ... - def desc(self) -> ColumnOperators[_T]: ... - def asc(self) -> ColumnOperators[_T]: ... - def nulls_first(self) -> ColumnOperators[_T]: ... - def nullsfirst(self) -> ColumnOperators[_T]: ... - def nulls_last(self) -> ColumnOperators[_T]: ... - def nullslast(self) -> ColumnOperators[_T]: ... - def collate(self, collation) -> ColumnOperators[_T]: ... - def __radd__(self, other) -> ColumnOperators[_T]: ... - def __rsub__(self, other) -> ColumnOperators[_T]: ... - def __rmul__(self, other) -> ColumnOperators[_T]: ... - def __rdiv__(self, other) -> ColumnOperators[_T]: ... - def __rmod__(self, other) -> ColumnOperators[_T]: ... - def between(self, cleft, cright, symmetric: bool = False) -> ColumnOperators[_T]: ... - def distinct(self) -> ColumnOperators[_T]: ... - def any_(self) -> ColumnOperators[_T]: ... - def all_(self) -> ColumnOperators[_T]: ... - def __add__(self, other) -> ColumnOperators[_T]: ... - def __sub__(self, other) -> ColumnOperators[_T]: ... - def __mul__(self, other) -> ColumnOperators[_T]: ... - def __div__(self, other) -> ColumnOperators[_T]: ... - def __mod__(self, other) -> ColumnOperators[_T]: ... - def __truediv__(self, other) -> ColumnOperators[_T]: ... - def __rtruediv__(self, other) -> ColumnOperators[_T]: ... - -def commutative_op(fn): ... -def comparison_op(fn): ... -def from_() -> None: ... -def function_as_comparison_op() -> None: ... -def as_() -> None: ... -def exists() -> None: ... -def is_true(a) -> None: ... - -istrue = is_true - -def is_false(a) -> None: ... - -isfalse = is_false - -def is_distinct_from(a, b): ... -def is_not_distinct_from(a, b): ... - -isnot_distinct_from = is_not_distinct_from - -def is_(a, b): ... -def is_not(a, b): ... - -isnot = is_not - -def collate(a, b): ... -def op(a, opstring, b): ... -def like_op(a, b, escape: Incomplete | None = None): ... -def not_like_op(a, b, escape: Incomplete | None = None): ... - -notlike_op = not_like_op - -def ilike_op(a, b, escape: Incomplete | None = None): ... -def not_ilike_op(a, b, escape: Incomplete | None = None): ... - -notilike_op = not_ilike_op - -def between_op(a, b, c, symmetric: bool = False): ... -def not_between_op(a, b, c, symmetric: bool = False): ... - -notbetween_op = not_between_op - -def in_op(a, b): ... -def not_in_op(a, b): ... - -notin_op = not_in_op - -def distinct_op(a): ... -def any_op(a): ... -def all_op(a): ... -def startswith_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... -def not_startswith_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... - -notstartswith_op = not_startswith_op - -def endswith_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... -def not_endswith_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... - -notendswith_op = not_endswith_op - -def contains_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... -def not_contains_op(a, b, escape: Incomplete | None = None, autoescape: bool = False): ... - -notcontains_op = not_contains_op - -def match_op(a, b, **kw): ... -def regexp_match_op(a, b, flags: Incomplete | None = None): ... -def not_regexp_match_op(a, b, flags: Incomplete | None = None): ... -def regexp_replace_op(a, b, replacement, flags: Incomplete | None = None): ... -def not_match_op(a, b, **kw): ... - -notmatch_op = not_match_op - -def comma_op(a, b) -> None: ... -def filter_op(a, b) -> None: ... -def concat_op(a, b): ... -def desc_op(a): ... -def asc_op(a): ... -def nulls_first_op(a): ... - -nullsfirst_op = nulls_first_op - -def nulls_last_op(a): ... - -nullslast_op = nulls_last_op - -def json_getitem_op(a, b) -> None: ... -def json_path_getitem_op(a, b) -> None: ... -def is_comparison(op) -> bool: ... -def is_commutative(op) -> bool: ... -def is_ordering_modifier(op) -> bool: ... -def is_natural_self_precedent(op) -> bool: ... -def is_boolean(op) -> bool: ... -def mirror(op): ... -def is_associative(op) -> bool: ... -def is_precedent(operator, against) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/roles.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/roles.pyi deleted file mode 100644 index e7c290b14..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/roles.pyi +++ /dev/null @@ -1,57 +0,0 @@ -class SQLRole: - allows_lambda: bool - uses_inspection: bool - -class UsesInspection: - uses_inspection: bool - -class AllowsLambdaRole: - allows_lambda: bool - -class HasCacheKeyRole(SQLRole): ... -class ExecutableOptionRole(SQLRole): ... -class LiteralValueRole(SQLRole): ... -class ColumnArgumentRole(SQLRole): ... -class ColumnArgumentOrKeyRole(ColumnArgumentRole): ... -class StrAsPlainColumnRole(ColumnArgumentRole): ... -class ColumnListRole(SQLRole): ... -class TruncatedLabelRole(SQLRole): ... -class ColumnsClauseRole(AllowsLambdaRole, UsesInspection, ColumnListRole): ... -class LimitOffsetRole(SQLRole): ... -class ByOfRole(ColumnListRole): ... -class GroupByRole(AllowsLambdaRole, UsesInspection, ByOfRole): ... -class OrderByRole(AllowsLambdaRole, ByOfRole): ... -class StructuralRole(SQLRole): ... -class StatementOptionRole(StructuralRole): ... -class OnClauseRole(AllowsLambdaRole, StructuralRole): ... -class WhereHavingRole(OnClauseRole): ... -class ExpressionElementRole(SQLRole): ... -class ConstExprRole(ExpressionElementRole): ... -class LabeledColumnExprRole(ExpressionElementRole): ... -class BinaryElementRole(ExpressionElementRole): ... -class InElementRole(SQLRole): ... -class JoinTargetRole(AllowsLambdaRole, UsesInspection, StructuralRole): ... -class FromClauseRole(ColumnsClauseRole, JoinTargetRole): ... - -class StrictFromClauseRole(FromClauseRole): - @property - def description(self) -> None: ... - -class AnonymizedFromClauseRole(StrictFromClauseRole): ... -class ReturnsRowsRole(SQLRole): ... -class StatementRole(SQLRole): ... - -class SelectStatementRole(StatementRole, ReturnsRowsRole): - def subquery(self) -> None: ... - -class HasCTERole(ReturnsRowsRole): ... -class IsCTERole(SQLRole): ... -class CompoundElementRole(AllowsLambdaRole, SQLRole): ... -class DMLRole(StatementRole): ... -class DMLTableRole(FromClauseRole): ... -class DMLColumnRole(SQLRole): ... -class DMLSelectRole(SQLRole): ... -class DDLRole(StatementRole): ... -class DDLExpressionRole(StructuralRole): ... -class DDLConstraintColumnRole(SQLRole): ... -class DDLReferredColumnRole(DDLConstraintColumnRole): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi deleted file mode 100644 index 2b5dac32c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/schema.pyi +++ /dev/null @@ -1,378 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from ..util.langhelpers import memoized_property -from . import visitors -from .base import DialectKWArgs, Executable, SchemaEventTarget -from .elements import ColumnClause -from .selectable import TableClause - -RETAIN_SCHEMA: Any -BLANK_SCHEMA: Any -NULL_UNSPECIFIED: Any - -class SchemaItem(SchemaEventTarget, visitors.Visitable): - __visit_name__: str - create_drop_stringify_dialect: str - @property # Should be @memoized_property, but that causes issues with regr_test - def info(self): ... - -class Table(DialectKWArgs, SchemaItem, TableClause): - __visit_name__: str - constraints: Any - indexes: Any - def __new__(cls, *args, **kw): ... - def __init__(self, *args, **kw) -> None: ... - @property - def foreign_key_constraints(self): ... - @property - def key(self): ... - @property - def bind(self): ... - def add_is_dependent_on(self, table) -> None: ... - def append_column(self, column, replace_existing: bool = False) -> None: ... # type: ignore[override] - def append_constraint(self, constraint) -> None: ... - def exists(self, bind: Incomplete | None = None): ... - def create(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... - def drop(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... - def tometadata(self, metadata, schema=..., referred_schema_fn: Incomplete | None = None, name: Incomplete | None = None): ... - def to_metadata(self, metadata, schema=..., referred_schema_fn: Incomplete | None = None, name: Incomplete | None = None): ... - -class Column(DialectKWArgs, SchemaItem, ColumnClause): - __visit_name__: str - inherit_cache: bool - key: Any - primary_key: Any - nullable: Any - default: Any - server_default: Any - server_onupdate: Any - index: Any - unique: Any - system: Any - doc: Any - onupdate: Any - autoincrement: Any - constraints: Any - foreign_keys: Any - comment: Any - computed: Any - identity: Any - info: Any - def __init__(self, *args, **kwargs) -> None: ... - def references(self, column): ... - def append_foreign_key(self, fk) -> None: ... - def copy(self, **kw): ... - -class ForeignKey(DialectKWArgs, SchemaItem): - __visit_name__: str - constraint: Any - parent: Any - use_alter: Any - name: Any - onupdate: Any - ondelete: Any - deferrable: Any - initially: Any - link_to_name: Any - match: Any - info: Any - def __init__( - self, - column, - _constraint: Incomplete | None = None, - use_alter: bool = False, - name: Incomplete | None = None, - onupdate: Incomplete | None = None, - ondelete: Incomplete | None = None, - deferrable: Incomplete | None = None, - initially: Incomplete | None = None, - link_to_name: bool = False, - match: Incomplete | None = None, - info: Incomplete | None = None, - _unresolvable: bool = False, - **dialect_kw, - ) -> None: ... - def copy(self, schema: Incomplete | None = None, **kw): ... - @property - def target_fullname(self): ... - def references(self, table): ... - def get_referent(self, table): ... - @memoized_property - def column(self): ... - -class DefaultGenerator(Executable, SchemaItem): - __visit_name__: str - is_sequence: bool - is_server_default: bool - column: Any - for_update: Any - def __init__(self, for_update: bool = False) -> None: ... - def execute(self, bind: Incomplete | None = None): ... # type: ignore[override] - @property - def bind(self): ... - -class ColumnDefault(DefaultGenerator): - arg: Any - def __init__(self, arg, **kwargs) -> None: ... - @memoized_property - def is_callable(self): ... - @memoized_property - def is_clause_element(self): ... - @memoized_property - def is_scalar(self): ... - -class IdentityOptions: - start: Any - increment: Any - minvalue: Any - maxvalue: Any - nominvalue: Any - nomaxvalue: Any - cycle: Any - cache: Any - order: Any - def __init__( - self, - start: Incomplete | None = None, - increment: Incomplete | None = None, - minvalue: Incomplete | None = None, - maxvalue: Incomplete | None = None, - nominvalue: Incomplete | None = None, - nomaxvalue: Incomplete | None = None, - cycle: Incomplete | None = None, - cache: Incomplete | None = None, - order: Incomplete | None = None, - ) -> None: ... - -class Sequence(IdentityOptions, DefaultGenerator): - __visit_name__: str - is_sequence: bool - name: Any - optional: Any - schema: Any - metadata: Any - data_type: Any - def __init__( - self, - name, - start: Incomplete | None = None, - increment: Incomplete | None = None, - minvalue: Incomplete | None = None, - maxvalue: Incomplete | None = None, - nominvalue: Incomplete | None = None, - nomaxvalue: Incomplete | None = None, - cycle: Incomplete | None = None, - schema: Incomplete | None = None, - cache: Incomplete | None = None, - order: Incomplete | None = None, - data_type: Incomplete | None = None, - optional: bool = False, - quote: Incomplete | None = None, - metadata: Incomplete | None = None, - quote_schema: Incomplete | None = None, - for_update: bool = False, - ) -> None: ... - @memoized_property - def is_callable(self): ... - @memoized_property - def is_clause_element(self): ... - def next_value(self): ... - @property - def bind(self): ... - def create(self, bind: Incomplete | None = None, checkfirst: bool = True) -> None: ... - def drop(self, bind: Incomplete | None = None, checkfirst: bool = True) -> None: ... - -class FetchedValue(SchemaEventTarget): - is_server_default: bool - reflected: bool - has_argument: bool - is_clause_element: bool - for_update: Any - def __init__(self, for_update: bool = False) -> None: ... - -class DefaultClause(FetchedValue): - has_argument: bool - arg: Any - reflected: Any - def __init__(self, arg, for_update: bool = False, _reflected: bool = False) -> None: ... - -class Constraint(DialectKWArgs, SchemaItem): - __visit_name__: str - name: Any - deferrable: Any - initially: Any - info: Any - def __init__( - self, - name: Incomplete | None = None, - deferrable: Incomplete | None = None, - initially: Incomplete | None = None, - _create_rule: Incomplete | None = None, - info: Incomplete | None = None, - _type_bound: bool = False, - **dialect_kw, - ) -> None: ... - @property - def table(self): ... - def copy(self, **kw): ... - -class ColumnCollectionMixin: - columns: Any - def __init__(self, *columns, **kw) -> None: ... - -class ColumnCollectionConstraint(ColumnCollectionMixin, Constraint): - def __init__(self, *columns, **kw) -> None: ... - columns: Any - def __contains__(self, x): ... - def copy(self, target_table: Incomplete | None = None, **kw): ... - def contains_column(self, col): ... - def __iter__(self): ... - def __len__(self) -> int: ... - -class CheckConstraint(ColumnCollectionConstraint): - __visit_name__: str - sqltext: Any - def __init__( - self, - sqltext, - name: Incomplete | None = None, - deferrable: Incomplete | None = None, - initially: Incomplete | None = None, - table: Incomplete | None = None, - info: Incomplete | None = None, - _create_rule: Incomplete | None = None, - _autoattach: bool = True, - _type_bound: bool = False, - **kw, - ) -> None: ... - @property - def is_column_level(self): ... - def copy(self, target_table: Incomplete | None = None, **kw): ... - -class ForeignKeyConstraint(ColumnCollectionConstraint): - __visit_name__: str - onupdate: Any - ondelete: Any - link_to_name: Any - use_alter: Any - match: Any - elements: Any - def __init__( - self, - columns, - refcolumns, - name: Incomplete | None = None, - onupdate: Incomplete | None = None, - ondelete: Incomplete | None = None, - deferrable: Incomplete | None = None, - initially: Incomplete | None = None, - use_alter: bool = False, - link_to_name: bool = False, - match: Incomplete | None = None, - table: Incomplete | None = None, - info: Incomplete | None = None, - **dialect_kw, - ) -> None: ... - columns: Any - @property - def referred_table(self): ... - @property - def column_keys(self): ... - def copy(self, schema: Incomplete | None = None, target_table: Incomplete | None = None, **kw): ... # type: ignore[override] - -class PrimaryKeyConstraint(ColumnCollectionConstraint): - __visit_name__: str - def __init__(self, *columns, **kw) -> None: ... - @property - def columns_autoinc_first(self): ... - -class UniqueConstraint(ColumnCollectionConstraint): - __visit_name__: str - -class Index(DialectKWArgs, ColumnCollectionMixin, SchemaItem): - __visit_name__: str - table: Any - name: Any - unique: Any - info: Any - expressions: Any - def __init__(self, name, *expressions, **kw) -> None: ... - @property - def bind(self): ... - def create(self, bind: Incomplete | None = None, checkfirst: bool = False): ... - def drop(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... - -DEFAULT_NAMING_CONVENTION: Any - -class MetaData(SchemaItem): - __visit_name__: str - tables: Any - schema: Any - naming_convention: Any - info: Any - def __init__( - self, - bind: Incomplete | None = None, - schema: Incomplete | None = None, - quote_schema: Incomplete | None = None, - naming_convention: Incomplete | None = None, - info: Incomplete | None = None, - ) -> None: ... - def __contains__(self, table_or_key) -> bool: ... - def is_bound(self): ... - bind: Any - def clear(self) -> None: ... - def remove(self, table) -> None: ... - @property - def sorted_tables(self): ... - def reflect( - self, - bind: Incomplete | None = None, - schema: Incomplete | None = None, - views: bool = False, - only: Incomplete | None = None, - extend_existing: bool = False, - autoload_replace: bool = True, - resolve_fks: bool = True, - **dialect_kwargs, - ) -> None: ... - def create_all(self, bind: Incomplete | None = None, tables: Incomplete | None = None, checkfirst: bool = True) -> None: ... - def drop_all(self, bind: Incomplete | None = None, tables: Incomplete | None = None, checkfirst: bool = True) -> None: ... - -class ThreadLocalMetaData(MetaData): - __visit_name__: str - context: Any - def __init__(self) -> None: ... - bind: Any - def is_bound(self): ... - def dispose(self) -> None: ... - -class Computed(FetchedValue, SchemaItem): - __visit_name__: str - sqltext: Any - persisted: Any - column: Any - def __init__(self, sqltext, persisted: Incomplete | None = None) -> None: ... - def copy(self, target_table: Incomplete | None = None, **kw): ... - -class Identity(IdentityOptions, FetchedValue, SchemaItem): - __visit_name__: str - always: Any - on_null: Any - column: Any - def __init__( - self, - always: bool = False, - on_null: Incomplete | None = None, - start: Incomplete | None = None, - increment: Incomplete | None = None, - minvalue: Incomplete | None = None, - maxvalue: Incomplete | None = None, - nominvalue: Incomplete | None = None, - nomaxvalue: Incomplete | None = None, - cycle: Incomplete | None = None, - cache: Incomplete | None = None, - order: Incomplete | None = None, - ) -> None: ... - def copy(self, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi deleted file mode 100644 index fff056a84..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/selectable.pyi +++ /dev/null @@ -1,438 +0,0 @@ -from _typeshed import Incomplete -from typing import Any -from typing_extensions import Self - -from .. import util -from ..util.langhelpers import HasMemoized, memoized_property -from . import roles, traversals, visitors -from .annotation import Annotated, SupportsCloneAnnotations -from .base import CacheableOptions, CompileState, Executable, Generative, HasCompileState, Immutable -from .elements import ( - BindParameter as BindParameter, - BooleanClauseList as BooleanClauseList, - ClauseElement as ClauseElement, - ClauseList as ClauseList, - ColumnClause as ColumnClause, - GroupedElement as GroupedElement, - Grouping as Grouping, - TableValuedColumn as TableValuedColumn, - UnaryExpression as UnaryExpression, - literal_column as literal_column, -) - -class _OffsetLimitParam(BindParameter[Any]): - inherit_cache: bool - -def subquery(alias, *args, **kwargs): ... - -class ReturnsRows(roles.ReturnsRowsRole, ClauseElement): - @property - def selectable(self): ... - @property - def exported_columns(self) -> None: ... - -class Selectable(ReturnsRows): - __visit_name__: str - is_selectable: bool - def lateral(self, name: Incomplete | None = None): ... - def replace_selectable(self, old, alias): ... - def corresponding_column(self, column, require_embedded: bool = False): ... - -class HasPrefixes: - def prefix_with(self, *expr, **kw) -> Self: ... - -class HasSuffixes: - def suffix_with(self, *expr, **kw) -> Self: ... - -class HasHints: - def with_statement_hint(self, text, dialect_name: str = "*"): ... - def with_hint(self, selectable, text: str, dialect_name: str = "*") -> Self: ... - -class FromClause(roles.AnonymizedFromClauseRole, Selectable): - __visit_name__: str - named_with_column: bool - schema: Any - is_selectable: bool - def select(self, whereclause: Incomplete | None = None, **kwargs): ... - def join(self, right, onclause: Incomplete | None = None, isouter: bool = False, full: bool = False): ... - def outerjoin(self, right, onclause: Incomplete | None = None, full: bool = False): ... - def alias(self, name: Incomplete | None = None, flat: bool = False): ... - def table_valued(self): ... - def tablesample(self, sampling, name: Incomplete | None = None, seed: Incomplete | None = None): ... - def is_derived_from(self, fromclause): ... - @property - def description(self): ... - @property - def exported_columns(self): ... - @memoized_property - def columns(self): ... - @property - def entity_namespace(self): ... - @memoized_property - def primary_key(self): ... - @memoized_property - def foreign_keys(self): ... - @property - def c(self): ... - -LABEL_STYLE_NONE: Any -LABEL_STYLE_TABLENAME_PLUS_COL: Any -LABEL_STYLE_DISAMBIGUATE_ONLY: Any -LABEL_STYLE_DEFAULT: Any - -class Join(roles.DMLTableRole, FromClause): - __visit_name__: str - left: Any - right: Any - onclause: Any - isouter: Any - full: Any - def __init__(self, left, right, onclause: Incomplete | None = None, isouter: bool = False, full: bool = False) -> None: ... - @property - def description(self): ... - def is_derived_from(self, fromclause): ... - def self_group(self, against: Incomplete | None = None): ... - def select(self, whereclause: Incomplete | None = None, **kwargs): ... - @property - def bind(self): ... - def alias(self, name: Incomplete | None = None, flat: bool = False): ... - -class NoInit: - def __init__(self, *arg, **kw) -> None: ... - -class AliasedReturnsRows(NoInit, FromClause): - named_with_column: bool - @property - def description(self): ... - @property - def original(self): ... - def is_derived_from(self, fromclause): ... - @property - def bind(self): ... - -class Alias(roles.DMLTableRole, AliasedReturnsRows): - __visit_name__: str - inherit_cache: bool - -class TableValuedAlias(Alias): - __visit_name__: str - joins_implicitly: bool - def _init( - self, - selectable, - name: Incomplete | None = None, - table_value_type: Incomplete | None = None, - joins_implicitly: bool = False, - ) -> None: ... - @HasMemoized.memoized_attribute - def column(self): ... - def alias(self, name: Incomplete | None = None): ... # type: ignore[override] - def lateral(self, name: Incomplete | None = None): ... - def render_derived(self, name: Incomplete | None = None, with_types: bool = False): ... - -class Lateral(AliasedReturnsRows): - __visit_name__: str - inherit_cache: bool - -class TableSample(AliasedReturnsRows): - __visit_name__: str - -class CTE(roles.DMLTableRole, roles.IsCTERole, Generative, HasPrefixes, HasSuffixes, AliasedReturnsRows): - __visit_name__: str - def alias(self, name: Incomplete | None = None, flat: bool = False): ... - def union(self, *other): ... - def union_all(self, *other): ... - -class HasCTE(roles.HasCTERole): - def add_cte(self, cte) -> None: ... - def cte(self, name: Incomplete | None = None, recursive: bool = False, nesting: bool = False): ... - -class Subquery(AliasedReturnsRows): - __visit_name__: str - inherit_cache: bool - def as_scalar(self): ... - -class FromGrouping(GroupedElement, FromClause): - element: Any - def __init__(self, element) -> None: ... - @property - def columns(self): ... - @property - def primary_key(self): ... - @property - def foreign_keys(self): ... - def is_derived_from(self, element): ... - def alias(self, **kw): ... - -class TableClause(roles.DMLTableRole, Immutable, FromClause): - __visit_name__: str - named_with_column: bool - implicit_returning: bool - name: Any - primary_key: Any - foreign_keys: Any - schema: Any - fullname: Any - def __init__(self, name, *columns, **kw) -> None: ... - @memoized_property - def description(self): ... - def append_column(self, c, **kw) -> None: ... - def insert(self, values: Incomplete | None = None, inline: bool = False, **kwargs): ... - def update(self, whereclause: Incomplete | None = None, values: Incomplete | None = None, inline: bool = False, **kwargs): ... - def delete(self, whereclause: Incomplete | None = None, **kwargs): ... - -class ForUpdateArg(ClauseElement): - def __eq__(self, other): ... - def __ne__(self, other): ... - def __hash__(self) -> int: ... - nowait: Any - read: Any - skip_locked: Any - key_share: Any - of: Any - def __init__( - self, - nowait: bool = False, - read: bool = False, - of: Incomplete | None = None, - skip_locked: bool = False, - key_share: bool = False, - ) -> None: ... - -class Values(Generative, FromClause): - named_with_column: bool - __visit_name__: str - name: Any - literal_binds: Any - def __init__(self, *columns, **kw) -> None: ... - def alias(self, name: Incomplete | None, **kw) -> Self: ... # type: ignore[override] - def lateral(self, name: Incomplete | None = None) -> Self: ... - def data(self, values) -> Self: ... - -class SelectBase( - roles.SelectStatementRole, - roles.DMLSelectRole, - roles.CompoundElementRole, - roles.InElementRole, - HasCTE, - Executable, - SupportsCloneAnnotations, - Selectable, -): - is_select: bool - @property - def selected_columns(self) -> None: ... - @property - def exported_columns(self): ... - @property - def c(self): ... - @property - def columns(self): ... - def select(self, *arg, **kw): ... - def as_scalar(self): ... - def exists(self): ... - def scalar_subquery(self): ... - def label(self, name): ... - def lateral(self, name: Incomplete | None = None): ... - def subquery(self, name: Incomplete | None = None): ... - def alias(self, name: Incomplete | None = None, flat: bool = False): ... - -class SelectStatementGrouping(GroupedElement, SelectBase): - __visit_name__: str - element: Any - def __init__(self, element) -> None: ... - def get_label_style(self): ... - def set_label_style(self, label_style): ... - @property - def select_statement(self): ... - def self_group(self, against: Incomplete | None = None): ... - @property - def selected_columns(self): ... - -class DeprecatedSelectBaseGenerations: - def append_order_by(self, *clauses) -> None: ... - def append_group_by(self, *clauses) -> None: ... - -class GenerativeSelect(DeprecatedSelectBaseGenerations, SelectBase): - def __init__( - self, - _label_style=..., - use_labels: bool = False, - limit: Incomplete | None = None, - offset: Incomplete | None = None, - order_by: Incomplete | None = None, - group_by: Incomplete | None = None, - bind: Incomplete | None = None, - ) -> None: ... - def with_for_update( - self, - nowait: bool = False, - read: bool = False, - of: Incomplete | None = None, - skip_locked: bool = False, - key_share: bool = False, - ) -> Self: ... - def get_label_style(self): ... - def set_label_style(self, style): ... - def apply_labels(self): ... - def limit(self, limit: Incomplete | None) -> Self: ... - def fetch(self, count: Incomplete | None, with_ties: bool = False, percent: bool = False) -> Self: ... - def offset(self, offset: Incomplete | None) -> Self: ... - def slice(self, start: Incomplete | None, stop: Incomplete | None) -> Self: ... - def order_by(self, *clauses) -> Self: ... - def group_by(self, *clauses) -> Self: ... - -class CompoundSelectState(CompileState): ... - -class CompoundSelect(HasCompileState, GenerativeSelect): - __visit_name__: str - UNION: Any - UNION_ALL: Any - EXCEPT: Any - EXCEPT_ALL: Any - INTERSECT: Any - INTERSECT_ALL: Any - keyword: Any - selects: Any - def __init__(self, keyword, *selects, **kwargs) -> None: ... - def self_group(self, against: Incomplete | None = None): ... - def is_derived_from(self, fromclause): ... - @property - def selected_columns(self): ... - @property - def bind(self): ... - @bind.setter - def bind(self, bind) -> None: ... - -class DeprecatedSelectGenerations: - def append_correlation(self, fromclause) -> None: ... - def append_column(self, column) -> None: ... - def append_prefix(self, clause) -> None: ... - def append_whereclause(self, whereclause) -> None: ... - def append_having(self, having) -> None: ... - def append_from(self, fromclause) -> None: ... - -class SelectState(util.MemoizedSlots, CompileState): - class default_select_compile_options(CacheableOptions): ... - statement: Any - from_clauses: Any - froms: Any - columns_plus_names: Any - def __init__(self, statement, compiler, **kw) -> None: ... - @classmethod - def get_column_descriptions(cls, statement) -> None: ... - @classmethod - def from_statement(cls, statement, from_statement) -> None: ... - @classmethod - def get_columns_clause_froms(cls, statement): ... - @classmethod - def determine_last_joined_entity(cls, stmt): ... - @classmethod - def all_selected_columns(cls, statement): ... - -class _SelectFromElements: ... - -class _MemoizedSelectEntities(traversals.HasCacheKey, traversals.HasCopyInternals, visitors.Traversible): - __visit_name__: str - -class Select( - HasPrefixes, HasSuffixes, HasHints, HasCompileState, DeprecatedSelectGenerations, _SelectFromElements, GenerativeSelect -): - __visit_name__: str - @classmethod - def create_legacy_select( - cls, - columns: Incomplete | None = None, - whereclause: Incomplete | None = None, - from_obj: Incomplete | None = None, - distinct: bool = False, - having: Incomplete | None = None, - correlate: bool = True, - prefixes: Incomplete | None = None, - suffixes: Incomplete | None = None, - **kwargs, - ): ... - def __init__(self) -> None: ... - def filter(self, *criteria): ... - def filter_by(self, **kwargs): ... - @property - def column_descriptions(self): ... - def from_statement(self, statement): ... - def join(self, target, onclause: Incomplete | None = None, isouter: bool = False, full: bool = False) -> Self: ... - def outerjoin_from(self, from_, target, onclause: Incomplete | None = None, full: bool = False): ... - def join_from(self, from_, target, onclause: Incomplete | None = None, isouter: bool = False, full: bool = False) -> Self: ... - def outerjoin(self, target, onclause: Incomplete | None = None, full: bool = False): ... - def get_final_froms(self): ... - @property - def froms(self): ... - @property - def columns_clause_froms(self): ... - @property - def inner_columns(self): ... - def is_derived_from(self, fromclause): ... - def get_children(self, **kwargs): ... - def add_columns(self, *columns) -> Self: ... - def column(self, column): ... - def reduce_columns(self, only_synonyms: bool = True): ... - def with_only_columns(self, *columns, **kw) -> Self: ... - @property - def whereclause(self): ... - def where(self, *whereclause) -> Self: ... - def having(self, having) -> Self: ... - def distinct(self, *expr) -> Self: ... - def select_from(self, *froms) -> Self: ... - def correlate(self, *fromclauses) -> Self: ... - def correlate_except(self, *fromclauses) -> Self: ... - @HasMemoized.memoized_attribute - def selected_columns(self): ... - def self_group(self, against: Incomplete | None = None): ... - def union(self, *other, **kwargs): ... - def union_all(self, *other, **kwargs): ... - def except_(self, *other, **kwargs): ... - def except_all(self, *other, **kwargs): ... - def intersect(self, *other, **kwargs): ... - def intersect_all(self, *other, **kwargs): ... - @property - def bind(self): ... - @bind.setter - def bind(self, bind) -> None: ... - -class ScalarSelect(roles.InElementRole, Generative, Grouping): - inherit_cache: bool - element: Any - type: Any - def __init__(self, element) -> None: ... - @property - def columns(self) -> None: ... - @property - def c(self): ... - def where(self, crit) -> Self: ... - def self_group(self, **kwargs): ... - def correlate(self, *fromclauses) -> Self: ... - def correlate_except(self, *fromclauses) -> Self: ... - -class Exists(UnaryExpression): - inherit_cache: bool - def __init__(self, *args, **kwargs) -> None: ... - def select(self, whereclause: Incomplete | None = None, **kwargs): ... - def correlate(self, *fromclause): ... - def correlate_except(self, *fromclause): ... - def select_from(self, *froms): ... - def where(self, *clause): ... - -class TextualSelect(SelectBase): - __visit_name__: str - is_text: bool - is_select: bool - element: Any - column_args: Any - positional: Any - def __init__(self, text, columns, positional: bool = False) -> None: ... - @HasMemoized.memoized_attribute - def selected_columns(self): ... - def bindparams(self, *binds, **bind_as_values) -> Self: ... - -TextAsFrom = TextualSelect - -class AnnotatedFromClause(Annotated): - def __init__(self, element, values) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi deleted file mode 100644 index 2538111c3..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/sqltypes.pyi +++ /dev/null @@ -1,381 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, Generic, TypeVar - -from .base import SchemaEventTarget -from .operators import ColumnOperators -from .traversals import HasCacheKey -from .type_api import ( - Emulated as Emulated, - NativeForEmulated as NativeForEmulated, - TypeDecorator as TypeDecorator, - TypeEngine as TypeEngine, - Variant as Variant, - to_instance as to_instance, -) - -_T = TypeVar("_T") - -class _LookupExpressionAdapter: - class Comparator(TypeEngine.Comparator[Any]): ... - comparator_factory: Any - -class Concatenable: - class Comparator(TypeEngine.Comparator[_T], Generic[_T]): ... - comparator_factory: Any - -class Indexable: - class Comparator(TypeEngine.Comparator[_T], Generic[_T]): - def __getitem__(self, index) -> ColumnOperators[_T]: ... - comparator_factory: Any - -class String(Concatenable, TypeEngine): - __visit_name__: str - RETURNS_UNICODE: Any - RETURNS_BYTES: Any - RETURNS_CONDITIONAL: Any - RETURNS_UNKNOWN: Any - length: Any - collation: Any - def __init__( - self, - length: Incomplete | None = None, - collation: Incomplete | None = None, - convert_unicode: bool = False, - unicode_error: Incomplete | None = None, - _warn_on_bytestring: bool = False, - _expect_unicode: bool = False, - ) -> None: ... - def literal_processor(self, dialect): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - @property - def python_type(self): ... - def get_dbapi_type(self, dbapi): ... - -class Text(String): - __visit_name__: str - -class Unicode(String): - __visit_name__: str - def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... - -class UnicodeText(Text): - __visit_name__: str - def __init__(self, length: Incomplete | None = None, **kwargs) -> None: ... - -class Integer(_LookupExpressionAdapter, TypeEngine): - __visit_name__: str - def get_dbapi_type(self, dbapi): ... - @property - def python_type(self): ... - def literal_processor(self, dialect): ... - -class SmallInteger(Integer): - __visit_name__: str - -class BigInteger(Integer): - __visit_name__: str - -class Numeric(_LookupExpressionAdapter, TypeEngine): - __visit_name__: str - precision: Any - scale: Any - decimal_return_scale: Any - asdecimal: Any - def __init__( - self, - precision: Incomplete | None = None, - scale: Incomplete | None = None, - decimal_return_scale: Incomplete | None = None, - asdecimal: bool = True, - ) -> None: ... - def get_dbapi_type(self, dbapi): ... - def literal_processor(self, dialect): ... - @property - def python_type(self): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class Float(Numeric): - __visit_name__: str - scale: Any - precision: Any - asdecimal: Any - decimal_return_scale: Any - def __init__( - self, precision: Incomplete | None = None, asdecimal: bool = False, decimal_return_scale: Incomplete | None = None - ) -> None: ... - def result_processor(self, dialect, coltype): ... - -class DateTime(_LookupExpressionAdapter, TypeEngine): - __visit_name__: str - timezone: Any - def __init__(self, timezone: bool = False) -> None: ... - def get_dbapi_type(self, dbapi): ... - @property - def python_type(self): ... - -class Date(_LookupExpressionAdapter, TypeEngine): - __visit_name__: str - def get_dbapi_type(self, dbapi): ... - @property - def python_type(self): ... - -class Time(_LookupExpressionAdapter, TypeEngine): - __visit_name__: str - timezone: Any - def __init__(self, timezone: bool = False) -> None: ... - def get_dbapi_type(self, dbapi): ... - @property - def python_type(self): ... - -class _Binary(TypeEngine): - length: Any - def __init__(self, length: Incomplete | None = None) -> None: ... - def literal_processor(self, dialect): ... - @property - def python_type(self): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - def coerce_compared_value(self, op, value): ... - def get_dbapi_type(self, dbapi): ... - -class LargeBinary(_Binary): - __visit_name__: str - def __init__(self, length: Incomplete | None = None) -> None: ... - -class SchemaType(SchemaEventTarget): - name: Any - schema: Any - metadata: Any - inherit_schema: Any - def __init__( - self, - name: Incomplete | None = None, - schema: Incomplete | None = None, - metadata: Incomplete | None = None, - inherit_schema: bool = False, - quote: Incomplete | None = None, - _create_events: bool = True, - ) -> None: ... - def copy(self, **kw): ... - def adapt(self, impltype, **kw): ... - @property - def bind(self): ... - def create(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... - def drop(self, bind: Incomplete | None = None, checkfirst: bool = False) -> None: ... - -class Enum(Emulated, String, SchemaType): - __visit_name__: str - def __init__(self, *enums, **kw) -> None: ... - @property - def sort_key_function(self): ... - @property - def native(self): ... - - class Comparator(Concatenable.Comparator[Any]): ... - comparator_factory: Any - def as_generic(self, allow_nulltype: bool = False): ... - def adapt_to_emulated(self, impltype, **kw): ... - def adapt(self, impltype, **kw): ... - def literal_processor(self, dialect): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - def copy(self, **kw): ... - @property - def python_type(self): ... - -class PickleType(TypeDecorator): - impl: Any - cache_ok: bool - protocol: Any - pickler: Any - comparator: Any - def __init__( - self, protocol=5, pickler: Incomplete | None = None, comparator: Incomplete | None = None, impl: Incomplete | None = None - ) -> None: ... - def __reduce__(self): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - def compare_values(self, x, y): ... - -class Boolean(Emulated, TypeEngine, SchemaType): # type: ignore[misc] - __visit_name__: str - native: bool - create_constraint: Any - name: Any - def __init__(self, create_constraint: bool = False, name: Incomplete | None = None, _create_events: bool = True) -> None: ... - @property - def python_type(self): ... - def literal_processor(self, dialect): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class _AbstractInterval(_LookupExpressionAdapter, TypeEngine): - def coerce_compared_value(self, op, value): ... - -class Interval(Emulated, _AbstractInterval, TypeDecorator): # type: ignore[misc] - impl: Any - epoch: Any - cache_ok: bool - native: Any - second_precision: Any - day_precision: Any - def __init__( - self, native: bool = True, second_precision: Incomplete | None = None, day_precision: Incomplete | None = None - ) -> None: ... - @property - def python_type(self): ... - def adapt_to_emulated(self, impltype, **kw): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class JSON(Indexable, TypeEngine): - __visit_name__: str - hashable: bool - NULL: Any - none_as_null: Any - def __init__(self, none_as_null: bool = False) -> None: ... - - class JSONElementType(TypeEngine): - def string_bind_processor(self, dialect): ... - def string_literal_processor(self, dialect): ... - def bind_processor(self, dialect): ... - def literal_processor(self, dialect): ... - - class JSONIndexType(JSONElementType): ... - class JSONIntIndexType(JSONIndexType): ... - class JSONStrIndexType(JSONIndexType): ... - class JSONPathType(JSONElementType): ... - - class Comparator(Indexable.Comparator[Any], Concatenable.Comparator[Any]): - def as_boolean(self): ... - def as_string(self): ... - def as_integer(self): ... - def as_float(self): ... - def as_numeric(self, precision, scale, asdecimal: bool = True): ... - def as_json(self): ... - comparator_factory: Any - @property - def python_type(self): ... - @property # type: ignore[override] - def should_evaluate_none(self): ... - @should_evaluate_none.setter - def should_evaluate_none(self, value) -> None: ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - -class ARRAY(SchemaEventTarget, Indexable, Concatenable, TypeEngine): - __visit_name__: str - zero_indexes: bool - - class Comparator(Indexable.Comparator[_T], Concatenable.Comparator[_T], Generic[_T]): - def contains(self, *arg, **kw) -> ColumnOperators[_T]: ... - def any(self, other, operator: Incomplete | None = None): ... - def all(self, other, operator: Incomplete | None = None): ... - comparator_factory: Any - item_type: Any - as_tuple: Any - dimensions: Any - def __init__( - self, item_type, as_tuple: bool = False, dimensions: Incomplete | None = None, zero_indexes: bool = False - ) -> None: ... - @property - def hashable(self): ... - @property - def python_type(self): ... - def compare_values(self, x, y): ... - -class TupleType(TypeEngine): - types: Any - def __init__(self, *types) -> None: ... - def result_processor(self, dialect, coltype) -> None: ... - -class REAL(Float): - __visit_name__: str - -class FLOAT(Float): - __visit_name__: str - -class NUMERIC(Numeric): - __visit_name__: str - -class DECIMAL(Numeric): - __visit_name__: str - -class INTEGER(Integer): - __visit_name__: str - -INT = INTEGER - -class SMALLINT(SmallInteger): - __visit_name__: str - -class BIGINT(BigInteger): - __visit_name__: str - -class TIMESTAMP(DateTime): - __visit_name__: str - def __init__(self, timezone: bool = False) -> None: ... - def get_dbapi_type(self, dbapi): ... - -class DATETIME(DateTime): - __visit_name__: str - -class DATE(Date): - __visit_name__: str - -class TIME(Time): - __visit_name__: str - -class TEXT(Text): - __visit_name__: str - -class CLOB(Text): - __visit_name__: str - -class VARCHAR(String): - __visit_name__: str - -class NVARCHAR(Unicode): - __visit_name__: str - -class CHAR(String): - __visit_name__: str - -class NCHAR(Unicode): - __visit_name__: str - -class BLOB(LargeBinary): - __visit_name__: str - -class BINARY(_Binary): - __visit_name__: str - -class VARBINARY(_Binary): - __visit_name__: str - -class BOOLEAN(Boolean): - __visit_name__: str - -class NullType(TypeEngine): - __visit_name__: str - def literal_processor(self, dialect): ... - - class Comparator(TypeEngine.Comparator[Any]): ... - comparator_factory: Any - -class TableValueType(HasCacheKey, TypeEngine): - def __init__(self, *elements) -> None: ... - -class MatchType(Boolean): ... - -NULLTYPE: NullType -BOOLEANTYPE: Boolean -STRINGTYPE: String -INTEGERTYPE: Integer -NUMERICTYPE: Numeric -MATCHTYPE: MatchType -TABLEVALUE: TableValueType -DATETIME_TIMEZONE: DateTime -TIME_TIMEZONE: Time diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi deleted file mode 100644 index 391287e82..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/traversals.pyi +++ /dev/null @@ -1,157 +0,0 @@ -from typing import Any - -from ..util.langhelpers import HasMemoized, MemoizedSlots -from .visitors import ExtendedInternalTraversal, InternalTraversal - -SKIP_TRAVERSE: Any -COMPARE_FAILED: bool -COMPARE_SUCCEEDED: bool -NO_CACHE: Any -CACHE_IN_PLACE: Any -CALL_GEN_CACHE_KEY: Any -STATIC_CACHE_KEY: Any -PROPAGATE_ATTRS: Any -ANON_NAME: Any - -def compare(obj1, obj2, **kw): ... - -class HasCacheKey: - inherit_cache: Any - -class MemoizedHasCacheKey(HasCacheKey, HasMemoized): ... - -class CacheKey: - def __hash__(self) -> int: ... - def to_offline_string(self, statement_cache, statement, parameters): ... - def __eq__(self, other): ... - -class _CacheKey(ExtendedInternalTraversal): - visit_has_cache_key: Any - visit_clauseelement: Any - visit_clauseelement_list: Any - visit_annotations_key: Any - visit_clauseelement_tuple: Any - visit_memoized_select_entities: Any - visit_string: Any - visit_boolean: Any - visit_operator: Any - visit_plain_obj: Any - visit_statement_hint_list: Any - visit_type: Any - visit_anon_name: Any - visit_propagate_attrs: Any - def visit_with_context_options(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_inspectable(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_string_list(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_multi(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_multi_list(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_has_cache_key_tuples(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_has_cache_key_list(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_executable_options(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_inspectable_list(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_clauseelement_tuples(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_fromclause_ordered_set(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_clauseelement_unordered_set(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_named_ddl_element(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_prefix_sequence(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_setup_join_tuple(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_table_hint_list(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_plain_dict(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_dialect_options(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_string_clauseelement_dict(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_string_multi_dict(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_fromclause_canonical_column_collection(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_unknown_structure(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_dml_ordered_values(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_dml_values(self, attrname, obj, parent, anon_map, bindparams): ... - def visit_dml_multi_values(self, attrname, obj, parent, anon_map, bindparams): ... - -class HasCopyInternals: ... - -class _CopyInternals(InternalTraversal): - def visit_clauseelement(self, attrname, parent, element, clone=..., **kw): ... - def visit_clauseelement_list(self, attrname, parent, element, clone=..., **kw): ... - def visit_clauseelement_tuple(self, attrname, parent, element, clone=..., **kw): ... - def visit_executable_options(self, attrname, parent, element, clone=..., **kw): ... - def visit_clauseelement_unordered_set(self, attrname, parent, element, clone=..., **kw): ... - def visit_clauseelement_tuples(self, attrname, parent, element, clone=..., **kw): ... - def visit_string_clauseelement_dict(self, attrname, parent, element, clone=..., **kw): ... - def visit_setup_join_tuple(self, attrname, parent, element, clone=..., **kw): ... - def visit_memoized_select_entities(self, attrname, parent, element, **kw): ... - def visit_dml_ordered_values(self, attrname, parent, element, clone=..., **kw): ... - def visit_dml_values(self, attrname, parent, element, clone=..., **kw): ... - def visit_dml_multi_values(self, attrname, parent, element, clone=..., **kw): ... - def visit_propagate_attrs(self, attrname, parent, element, clone=..., **kw): ... - -class _GetChildren(InternalTraversal): - def visit_has_cache_key(self, element, **kw): ... - def visit_clauseelement(self, element, **kw): ... - def visit_clauseelement_list(self, element, **kw): ... - def visit_clauseelement_tuple(self, element, **kw): ... - def visit_clauseelement_tuples(self, element, **kw): ... - def visit_fromclause_canonical_column_collection(self, element, **kw): ... - def visit_string_clauseelement_dict(self, element, **kw): ... - def visit_fromclause_ordered_set(self, element, **kw): ... - def visit_clauseelement_unordered_set(self, element, **kw): ... - def visit_setup_join_tuple(self, element, **kw) -> None: ... - def visit_memoized_select_entities(self, element, **kw): ... - def visit_dml_ordered_values(self, element, **kw) -> None: ... - def visit_dml_values(self, element, **kw) -> None: ... - def visit_dml_multi_values(self, element, **kw): ... - def visit_propagate_attrs(self, element, **kw): ... - -class anon_map(dict[Any, Any]): - index: int - def __init__(self) -> None: ... - def __missing__(self, key): ... - -class TraversalComparatorStrategy(InternalTraversal, MemoizedSlots): - stack: Any - cache: Any - anon_map: Any - def __init__(self) -> None: ... - def compare(self, obj1, obj2, **kw): ... - def compare_inner(self, obj1, obj2, **kw): ... - def visit_has_cache_key(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_propagate_attrs(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_has_cache_key_list(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_executable_options(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_clauseelement(self, attrname, left_parent, left, right_parent, right, **kw) -> None: ... - def visit_fromclause_canonical_column_collection(self, attrname, left_parent, left, right_parent, right, **kw) -> None: ... - def visit_fromclause_derived_column_collection(self, attrname, left_parent, left, right_parent, right, **kw) -> None: ... - def visit_string_clauseelement_dict(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_clauseelement_tuples(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_clauseelement_list(self, attrname, left_parent, left, right_parent, right, **kw) -> None: ... - def visit_clauseelement_tuple(self, attrname, left_parent, left, right_parent, right, **kw) -> None: ... - def visit_clauseelement_unordered_set(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_fromclause_ordered_set(self, attrname, left_parent, left, right_parent, right, **kw) -> None: ... - def visit_string(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_string_list(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_anon_name(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_boolean(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_operator(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_type(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_plain_dict(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_dialect_options(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_annotations_key(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_with_context_options(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_plain_obj(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_named_ddl_element(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_prefix_sequence(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_setup_join_tuple(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_memoized_select_entities(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_table_hint_list(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_statement_hint_list(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_unknown_structure(self, attrname, left_parent, left, right_parent, right, **kw) -> None: ... - def visit_dml_ordered_values(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_dml_values(self, attrname, left_parent, left, right_parent, right, **kw): ... - def visit_dml_multi_values(self, attrname, left_parent, left, right_parent, right, **kw): ... - def compare_clauselist(self, left, right, **kw): ... - def compare_binary(self, left, right, **kw): ... - def compare_bindparam(self, left, right, **kw): ... - -class ColIdentityComparatorStrategy(TraversalComparatorStrategy): - def compare_column_element(self, left, right, use_proxies: bool = True, equivalents=(), **kw): ... - def compare_column(self, left, right, **kw): ... - def compare_label(self, left, right, **kw): ... - def compare_table(self, left, right, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi deleted file mode 100644 index 951f35774..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/type_api.pyi +++ /dev/null @@ -1,118 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, Generic, TypeVar - -from .. import util -from . import operators -from .base import SchemaEventTarget -from .sqltypes import Boolean -from .visitors import Traversible, TraversibleType - -_T = TypeVar("_T") - -BOOLEANTYPE: Any -INTEGERTYPE: Any -NULLTYPE: Any -NUMERICTYPE: Any -STRINGTYPE: Any -MATCHTYPE: Any -INDEXABLE: Any -TABLEVALUE: Any - -class TypeEngine(Traversible): - class Comparator(operators.ColumnOperators[_T], Generic[_T]): - default_comparator: Any - def __clause_element__(self): ... - expr: Any - type: Any - def __init__(self, expr) -> None: ... - def operate(self, op, *other, **kwargs): ... - def reverse_operate(self, op, other, **kwargs): ... - def __reduce__(self): ... - BOOLEANTYPE: Boolean - hashable: bool - comparator_factory: Any - sort_key_function: Any - should_evaluate_none: bool - def evaluates_none(self): ... - def copy(self, **kw): ... - def compare_against_backend(self, dialect, conn_type) -> None: ... - def copy_value(self, value): ... - def literal_processor(self, dialect) -> None: ... - def bind_processor(self, dialect) -> None: ... - def result_processor(self, dialect, coltype) -> None: ... - def column_expression(self, colexpr) -> None: ... - def bind_expression(self, bindvalue) -> None: ... - def compare_values(self, x, y): ... - def get_dbapi_type(self, dbapi) -> None: ... - @property - def python_type(self) -> None: ... - def with_variant(self, type_, dialect_name): ... - def as_generic(self, allow_nulltype: bool = False): ... - def dialect_impl(self, dialect): ... - def adapt(self, cls, **kw): ... - def coerce_compared_value(self, op, value): ... - def compile(self, dialect: Incomplete | None = None): ... - -class VisitableCheckKWArg(util.EnsureKWArgType, TraversibleType): ... - -class ExternalType: - cache_ok: Any - -class UserDefinedType(ExternalType, TypeEngine, metaclass=VisitableCheckKWArg): - __visit_name__: str - ensure_kwarg: str - def coerce_compared_value(self, op, value): ... - -class Emulated: - def adapt_to_emulated(self, impltype, **kw): ... - def adapt(self, impltype, **kw): ... - -class NativeForEmulated: - @classmethod - def adapt_native_to_emulated(cls, impl, **kw): ... - @classmethod - def adapt_emulated_to_native(cls, impl, **kw): ... - -class TypeDecorator(ExternalType, SchemaEventTarget, TypeEngine): - __visit_name__: str - impl: Any - def __init__(self, *args, **kwargs) -> None: ... - coerce_to_is_types: Any - - class Comparator(TypeEngine.Comparator[Any]): - def operate(self, op, *other, **kwargs): ... - def reverse_operate(self, op, other, **kwargs): ... - - @property - def comparator_factory(self): ... - def type_engine(self, dialect): ... - def load_dialect_impl(self, dialect): ... - def __getattr__(self, key: str): ... - def process_literal_param(self, value, dialect) -> None: ... - def process_bind_param(self, value, dialect) -> None: ... - def process_result_value(self, value, dialect) -> None: ... - def literal_processor(self, dialect): ... - def bind_processor(self, dialect): ... - def result_processor(self, dialect, coltype): ... - def bind_expression(self, bindparam): ... - def column_expression(self, column): ... - def coerce_compared_value(self, op, value): ... - def copy(self, **kw): ... - def get_dbapi_type(self, dbapi): ... - def compare_values(self, x, y): ... - @property - def sort_key_function(self): ... - -class Variant(TypeDecorator): - cache_ok: bool - impl: Any - mapping: Any - def __init__(self, base, mapping) -> None: ... - def coerce_compared_value(self, operator, value): ... - def load_dialect_impl(self, dialect): ... - def with_variant(self, type_, dialect_name): ... - @property - def comparator_factory(self): ... - -def to_instance(typeobj, *arg, **kw): ... -def adapt_type(typeobj, colspecs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/util.pyi deleted file mode 100644 index 50e9b145a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/util.pyi +++ /dev/null @@ -1,104 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from . import visitors - -join_condition: Any - -def find_join_source(clauses, join_to): ... -def find_left_clause_that_matches_given(clauses, join_from): ... -def find_left_clause_to_join_from(clauses, join_to, onclause): ... -def visit_binary_product(fn, expr) -> None: ... -def find_tables( - clause, - check_columns: bool = False, - include_aliases: bool = False, - include_joins: bool = False, - include_selects: bool = False, - include_crud: bool = False, -): ... -def unwrap_order_by(clause): ... -def unwrap_label_reference(element): ... -def expand_column_list_from_order_by(collist, order_by): ... -def clause_is_present(clause, search): ... -def tables_from_leftmost(clause) -> None: ... -def surface_selectables(clause) -> None: ... -def surface_selectables_only(clause) -> None: ... -def extract_first_column_annotation(column, annotation_name): ... -def selectables_overlap(left, right): ... -def bind_values(clause): ... - -class _repr_base: - max_chars: Any - def trunc(self, value): ... - -class _repr_row(_repr_base): - row: Any - max_chars: Any - def __init__(self, row, max_chars: int = 300) -> None: ... - -class _repr_params(_repr_base): - params: Any - ismulti: Any - batches: Any - max_chars: Any - def __init__(self, params, batches, max_chars: int = 300, ismulti: Incomplete | None = None) -> None: ... - -def adapt_criterion_to_null(crit, nulls): ... -def splice_joins(left, right, stop_on: Incomplete | None = None): ... -def reduce_columns(columns, *clauses, **kw): ... -def criterion_as_pairs( - expression, - consider_as_foreign_keys: Incomplete | None = None, - consider_as_referenced_keys: Incomplete | None = None, - any_operator: bool = False, -): ... - -class ClauseAdapter(visitors.ReplacingExternalTraversal): - __traverse_options__: Any - selectable: Any - include_fn: Any - exclude_fn: Any - equivalents: Any - adapt_on_names: Any - adapt_from_selectables: Any - def __init__( - self, - selectable, - equivalents: Incomplete | None = None, - include_fn: Incomplete | None = None, - exclude_fn: Incomplete | None = None, - adapt_on_names: bool = False, - anonymize_labels: bool = False, - adapt_from_selectables: Incomplete | None = None, - ) -> None: ... - def replace(self, col, _include_singleton_constants: bool = False): ... - -class ColumnAdapter(ClauseAdapter): - columns: Any - adapt_required: Any - allow_label_resolve: Any - def __init__( - self, - selectable, - equivalents: Incomplete | None = None, - adapt_required: bool = False, - include_fn: Incomplete | None = None, - exclude_fn: Incomplete | None = None, - adapt_on_names: bool = False, - allow_label_resolve: bool = True, - anonymize_labels: bool = False, - adapt_from_selectables: Incomplete | None = None, - ) -> None: ... - - class _IncludeExcludeMapping: - parent: Any - columns: Any - def __init__(self, parent, columns) -> None: ... - def __getitem__(self, key): ... - - def wrap(self, adapter): ... - def traverse(self, obj): ... - adapt_clause: Any - adapt_list: Any - def adapt_check_present(self, col): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi deleted file mode 100644 index e8378c67d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/sql/visitors.pyi +++ /dev/null @@ -1,86 +0,0 @@ -from typing import Any - -class TraversibleType(type): - def __init__(cls, clsname, bases, clsdict) -> None: ... - -class Traversible(metaclass=TraversibleType): - def __class_getitem__(cls, key): ... - def get_children(self, omit_attrs=(), **kw): ... - -class _InternalTraversalType(type): - def __init__(cls, clsname, bases, clsdict) -> None: ... - -class InternalTraversal(metaclass=_InternalTraversalType): - def dispatch(self, visit_symbol): ... - def run_generated_dispatch(self, target, internal_dispatch, generate_dispatcher_name): ... - def generate_dispatch(self, target_cls, internal_dispatch, generate_dispatcher_name): ... - dp_has_cache_key: Any - dp_has_cache_key_list: Any - dp_clauseelement: Any - dp_fromclause_canonical_column_collection: Any - dp_clauseelement_tuples: Any - dp_clauseelement_list: Any - dp_clauseelement_tuple: Any - dp_executable_options: Any - dp_with_context_options: Any - dp_fromclause_ordered_set: Any - dp_string: Any - dp_string_list: Any - dp_anon_name: Any - dp_boolean: Any - dp_operator: Any - dp_type: Any - dp_plain_dict: Any - dp_dialect_options: Any - dp_string_clauseelement_dict: Any - dp_string_multi_dict: Any - dp_annotations_key: Any - dp_plain_obj: Any - dp_named_ddl_element: Any - dp_prefix_sequence: Any - dp_table_hint_list: Any - dp_setup_join_tuple: Any - dp_memoized_select_entities: Any - dp_statement_hint_list: Any - dp_unknown_structure: Any - dp_dml_ordered_values: Any - dp_dml_values: Any - dp_dml_multi_values: Any - dp_propagate_attrs: Any - -class ExtendedInternalTraversal(InternalTraversal): - dp_ignore: Any - dp_inspectable: Any - dp_multi: Any - dp_multi_list: Any - dp_has_cache_key_tuples: Any - dp_inspectable_list: Any - -class ExternalTraversal: - __traverse_options__: Any - def traverse_single(self, obj, **kw): ... - def iterate(self, obj): ... - def traverse(self, obj): ... - @property - def visitor_iterator(self) -> None: ... - def chain(self, visitor): ... - -class CloningExternalTraversal(ExternalTraversal): - def copy_and_process(self, list_): ... - def traverse(self, obj): ... - -class ReplacingExternalTraversal(CloningExternalTraversal): - def replace(self, elem) -> None: ... - def traverse(self, obj): ... - -Visitable = Traversible -VisitableType = TraversibleType -ClauseVisitor = ExternalTraversal -CloningVisitor = CloningExternalTraversal -ReplacingCloningVisitor = ReplacingExternalTraversal - -def iterate(obj, opts=...) -> None: ... -def traverse_using(iterator, obj, visitors): ... -def traverse(obj, opts, visitors): ... -def cloned_traverse(obj, opts, visitors): ... -def replacement_traverse(obj, opts, replace): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/__init__.pyi deleted file mode 100644 index c03a2b53b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/__init__.pyi +++ /dev/null @@ -1,77 +0,0 @@ -from . import config as config, mock as mock -from .assertions import ( - AssertsCompiledSQL as AssertsCompiledSQL, - AssertsExecutionResults as AssertsExecutionResults, - ComparesTables as ComparesTables, - assert_raises as assert_raises, - assert_raises_context_ok as assert_raises_context_ok, - assert_raises_message as assert_raises_message, - assert_raises_message_context_ok as assert_raises_message_context_ok, - emits_warning as emits_warning, - emits_warning_on as emits_warning_on, - eq_ as eq_, - eq_ignore_whitespace as eq_ignore_whitespace, - eq_regex as eq_regex, - expect_deprecated as expect_deprecated, - expect_deprecated_20 as expect_deprecated_20, - expect_raises as expect_raises, - expect_raises_message as expect_raises_message, - expect_warnings as expect_warnings, - in_ as in_, - is_ as is_, - is_false as is_false, - is_instance_of as is_instance_of, - is_none as is_none, - is_not as is_not, - is_not_ as is_not_, - is_not_none as is_not_none, - is_true as is_true, - le_ as le_, - ne_ as ne_, - not_in as not_in, - not_in_ as not_in_, - startswith_ as startswith_, - uses_deprecated as uses_deprecated, -) -from .config import ( - async_test as async_test, - combinations as combinations, - combinations_list as combinations_list, - db as db, - fixture as fixture, - requirements, -) -from .exclusions import ( - db_spec as db_spec, - exclude as exclude, - fails as fails, - fails_if as fails_if, - fails_on as fails_on, - fails_on_everything_except as fails_on_everything_except, - future as future, - only_if as only_if, - only_on as only_on, - skip as skip, - skip_if as skip_if, -) -from .schema import eq_clause_element as eq_clause_element, eq_type_affinity as eq_type_affinity -from .util import ( - adict as adict, - fail as fail, - flag_combinations as flag_combinations, - force_drop_names as force_drop_names, - lambda_combinations as lambda_combinations, - metadata_fixture as metadata_fixture, - provide_metadata as provide_metadata, - resolve_lambda as resolve_lambda, - rowset as rowset, - run_as_contextmanager as run_as_contextmanager, - teardown_events as teardown_events, -) -from .warnings import assert_warnings as assert_warnings, warn_test_suite as warn_test_suite - -requires = requirements - -def against(*queries): ... - -crashes = skip diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi deleted file mode 100644 index e0e5f2bfa..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertions.pyi +++ /dev/null @@ -1,89 +0,0 @@ -from _typeshed import Incomplete - -def expect_warnings(*messages, **kw): ... -def expect_warnings_on(db, *messages, **kw) -> None: ... -def emits_warning(*messages): ... -def expect_deprecated(*messages, **kw): ... -def expect_deprecated_20(*messages, **kw): ... -def emits_warning_on(db, *messages): ... -def uses_deprecated(*messages): ... -def global_cleanup_assertions() -> None: ... -def int_within_variance(expected, received, variance) -> None: ... -def eq_regex(a, b, msg: Incomplete | None = None) -> None: ... -def eq_(a, b, msg: Incomplete | None = None) -> None: ... -def ne_(a, b, msg: Incomplete | None = None) -> None: ... -def le_(a, b, msg: Incomplete | None = None) -> None: ... -def is_instance_of(a, b, msg: Incomplete | None = None) -> None: ... -def is_none(a, msg: Incomplete | None = None) -> None: ... -def is_not_none(a, msg: Incomplete | None = None) -> None: ... -def is_true(a, msg: Incomplete | None = None) -> None: ... -def is_false(a, msg: Incomplete | None = None) -> None: ... -def is_(a, b, msg: Incomplete | None = None) -> None: ... -def is_not(a, b, msg: Incomplete | None = None) -> None: ... - -is_not_ = is_not - -def in_(a, b, msg: Incomplete | None = None) -> None: ... -def not_in(a, b, msg: Incomplete | None = None) -> None: ... - -not_in_ = not_in - -def startswith_(a, fragment, msg: Incomplete | None = None) -> None: ... -def eq_ignore_whitespace(a, b, msg: Incomplete | None = None) -> None: ... -def assert_raises(except_cls, callable_, *args, **kw): ... -def assert_raises_context_ok(except_cls, callable_, *args, **kw): ... -def assert_raises_message(except_cls, msg, callable_, *args, **kwargs): ... -def assert_warns(except_cls, callable_, *args, **kwargs): ... -def assert_warns_message(except_cls, msg, callable_, *args, **kwargs): ... -def assert_raises_message_context_ok(except_cls, msg, callable_, *args, **kwargs): ... - -class _ErrorContainer: - error: Incomplete - -def expect_raises(except_cls, check_context: bool = True): ... -def expect_raises_message(except_cls, msg, check_context: bool = True): ... - -class AssertsCompiledSQL: - test_statement: Incomplete - supports_execution: Incomplete - def assert_compile( - self, - clause, - result, - params: Incomplete | None = None, - checkparams: Incomplete | None = None, - for_executemany: bool = False, - check_literal_execute: Incomplete | None = None, - check_post_param: Incomplete | None = None, - dialect: Incomplete | None = None, - checkpositional: Incomplete | None = None, - check_prefetch: Incomplete | None = None, - use_default_dialect: bool = False, - allow_dialect_select: bool = False, - supports_default_values: bool = True, - supports_default_metavalue: bool = True, - literal_binds: bool = False, - render_postcompile: bool = False, - schema_translate_map: Incomplete | None = None, - render_schema_translate: bool = False, - default_schema_name: Incomplete | None = None, - from_linting: bool = False, - check_param_order: bool = True, - ) -> None: ... - -class ComparesTables: - def assert_tables_equal(self, table, reflected_table, strict_types: bool = False) -> None: ... - def assert_types_base(self, c1, c2) -> None: ... - -class AssertsExecutionResults: - def assert_result(self, result, class_, *objects) -> None: ... - def assert_list(self, result, class_, list_) -> None: ... - def assert_row(self, class_, rowobj, desc) -> None: ... - def assert_unordered_result(self, result, cls, *expected): ... - def sql_execution_asserter(self, db: Incomplete | None = None): ... - def assert_sql_execution(self, db, callable_, *rules): ... - def assert_sql(self, db, callable_, rules): ... - def assert_sql_count(self, db, callable_, count) -> None: ... - def assert_multiple_sql_count(self, dbs, callable_, counts): ... - def assert_execution(self, db, *rules) -> None: ... - def assert_statement_count(self, db, count): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertsql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertsql.pyi deleted file mode 100644 index c7534746d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/assertsql.pyi +++ /dev/null @@ -1,82 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -class AssertRule: - is_consumed: bool - errormessage: Any - consume_statement: bool - def process_statement(self, execute_observed) -> None: ... - def no_more_statements(self) -> None: ... - -class SQLMatchRule(AssertRule): ... - -class CursorSQL(SQLMatchRule): - statement: Any - params: Any - consume_statement: Any - def __init__(self, statement, params: Incomplete | None = None, consume_statement: bool = True) -> None: ... - errormessage: Any - is_consumed: bool - def process_statement(self, execute_observed) -> None: ... - -class CompiledSQL(SQLMatchRule): - statement: Any - params: Any - dialect: Any - def __init__(self, statement, params: Incomplete | None = None, dialect: str = "default") -> None: ... - is_consumed: bool - errormessage: Any - def process_statement(self, execute_observed) -> None: ... - -class RegexSQL(CompiledSQL): - regex: Any - orig_regex: Any - params: Any - dialect: Any - def __init__(self, regex, params: Incomplete | None = None, dialect: str = "default") -> None: ... - -class DialectSQL(CompiledSQL): ... - -class CountStatements(AssertRule): - count: Any - def __init__(self, count) -> None: ... - def process_statement(self, execute_observed) -> None: ... - def no_more_statements(self) -> None: ... - -class AllOf(AssertRule): - rules: Any - def __init__(self, *rules) -> None: ... - is_consumed: bool - errormessage: Any - def process_statement(self, execute_observed) -> None: ... - -class EachOf(AssertRule): - rules: Any - def __init__(self, *rules) -> None: ... - errormessage: Any - is_consumed: bool - def process_statement(self, execute_observed) -> None: ... - def no_more_statements(self) -> None: ... - -class Conditional(EachOf): - def __init__(self, condition, rules, else_rules) -> None: ... - -class Or(AllOf): - is_consumed: bool - errormessage: Any - def process_statement(self, execute_observed) -> None: ... - -class SQLExecuteObserved: - context: Any - clauseelement: Any - parameters: Any - statements: Any - def __init__(self, context, clauseelement, multiparams, params) -> None: ... - -class SQLCursorExecuteObserved: ... - -class SQLAsserter: - accumulated: Any - def assert_(self, *rules) -> None: ... - -def assert_engine(engine) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/asyncio.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/asyncio.pyi deleted file mode 100644 index 7455e47b8..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/asyncio.pyi +++ /dev/null @@ -1 +0,0 @@ -ENABLE_ASYNCIO: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi deleted file mode 100644 index 757a7ec36..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/config.pyi +++ /dev/null @@ -1,58 +0,0 @@ -from _typeshed import Incomplete -from typing import Any, Protocol - -requirements: Incomplete | None -db: Incomplete | None -db_url: Incomplete | None -db_opts: Incomplete | None -file_config: Incomplete | None -test_schema: str | None -test_schema_2: str | None -any_async: bool -ident: str - -def combinations(*comb, **kw): ... -def combinations_list(arg_iterable, **kw): ... -def variation(argname, cases): ... -def fixture(*arg, **kw): ... -def get_current_test_name(): ... -def mark_base_test_class(): ... - -# Matches the intersection of the config module and the Config class -class _ConfigProtocol(Protocol): # noqa: Y046 - db: Incomplete - db_opts: Incomplete - file_config: Incomplete - test_schema: Any # AnyOf[str, None] - test_schema_2: Any # AnyOf[str, None] - def skip_test(self, msg) -> None: ... - -class Config: - db: Incomplete - db_opts: Incomplete - options: Incomplete - file_config: Incomplete - test_schema: str - test_schema_2: str - is_async: Incomplete - def __init__(self, db, db_opts, options, file_config) -> None: ... - @classmethod - def register(cls, db, db_opts, options, file_config) -> Config: ... - @classmethod - def set_as_current(cls, config, namespace) -> None: ... - @classmethod - def push_engine(cls, db, namespace) -> None: ... - @classmethod - def push(cls, config, namespace) -> None: ... - @classmethod - def pop(cls, namespace) -> None: ... - @classmethod - def reset(cls, namespace) -> None: ... - @classmethod - def all_configs(cls): ... - @classmethod - def all_dbs(cls) -> None: ... - def skip_test(self, msg) -> None: ... - -def skip_test(msg) -> None: ... -def async_test(fn): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/engines.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/engines.pyi deleted file mode 100644 index 1ef8da6db..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/engines.pyi +++ /dev/null @@ -1,83 +0,0 @@ -from _typeshed import Incomplete -from collections.abc import Mapping -from typing import Any, overload -from typing_extensions import Literal - -from ..engine import Engine -from ..engine.url import URL -from ..ext.asyncio import AsyncEngine - -class ConnectionKiller: - proxy_refs: Any - testing_engines: Any - dbapi_connections: Any - def add_pool(self, pool) -> None: ... - def add_engine(self, engine, scope) -> None: ... - def rollback_all(self) -> None: ... - def checkin_all(self) -> None: ... - def close_all(self) -> None: ... - def prepare_for_drop_tables(self, connection) -> None: ... - def after_test(self) -> None: ... - def after_test_outside_fixtures(self, test) -> None: ... - def stop_test_class_inside_fixtures(self) -> None: ... - def stop_test_class_outside_fixtures(self) -> None: ... - def final_cleanup(self) -> None: ... - def assert_all_closed(self) -> None: ... - -testing_reaper: Any - -def assert_conns_closed(fn, *args, **kw) -> None: ... -def rollback_open_connections(fn, *args, **kw) -> None: ... -def close_first(fn, *args, **kw) -> None: ... -def close_open_connections(fn, *args, **kw) -> None: ... -def all_dialects(exclude: Incomplete | None = None) -> None: ... - -class ReconnectFixture: - dbapi: Any - connections: Any - is_stopped: bool - def __init__(self, dbapi) -> None: ... - def __getattr__(self, key: str): ... - def connect(self, *args, **kwargs): ... - def shutdown(self, stop: bool = False) -> None: ... - def restart(self) -> None: ... - -def reconnecting_engine(url: Incomplete | None = None, options: Incomplete | None = None): ... -@overload -def testing_engine( # type: ignore[misc] - url: URL | str | None = None, - options: Mapping[str, Any] | None = None, - future: bool | None = None, - asyncio: Literal[False] = False, - transfer_staticpool: bool = False, -) -> Engine: ... -@overload -def testing_engine( - url: URL | str | None = None, - options: Mapping[str, Any] | None = None, - future: bool | None = None, - asyncio: Literal[True] = True, - transfer_staticpool: bool = False, -) -> AsyncEngine: ... -def mock_engine(dialect_name: Incomplete | None = None): ... - -class DBAPIProxyCursor: - engine: Any - connection: Any - cursor: Any - def __init__(self, engine, conn, *args, **kwargs) -> None: ... - def execute(self, stmt, parameters: Incomplete | None = None, **kw): ... - def executemany(self, stmt, params, **kw): ... - def __iter__(self): ... - def __getattr__(self, key: str): ... - -class DBAPIProxyConnection: - conn: Any - engine: Any - cursor_cls: Any - def __init__(self, engine, cursor_cls) -> None: ... - def cursor(self, *args, **kwargs): ... - def close(self) -> None: ... - def __getattr__(self, key: str): ... - -def proxying_engine(conn_cls=..., cursor_cls=...): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/entities.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/entities.pyi deleted file mode 100644 index 514288954..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/entities.pyi +++ /dev/null @@ -1,9 +0,0 @@ -class BasicEntity: - def __init__(self, **kw) -> None: ... - -class ComparableMixin: - def __ne__(self, other): ... - def __eq__(self, other): ... - -class ComparableEntity(ComparableMixin, BasicEntity): - def __hash__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/exclusions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/exclusions.pyi deleted file mode 100644 index f9956ef44..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/exclusions.pyi +++ /dev/null @@ -1,80 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -def skip_if(predicate, reason: Incomplete | None = None): ... -def fails_if(predicate, reason: Incomplete | None = None): ... - -class compound: - fails: Any - skips: Any - tags: Any - def __add__(self, other): ... - def as_skips(self): ... - def add(self, *others): ... - def not_(self): ... - @property - def enabled(self): ... - def enabled_for_config(self, config): ... - def matching_config_reasons(self, config): ... - def include_test(self, include_tags, exclude_tags): ... - def __call__(self, fn): ... - def fail_if(self) -> None: ... - -def requires_tag(tagname): ... -def tags(tagnames): ... -def only_if(predicate, reason: Incomplete | None = None): ... -def succeeds_if(predicate, reason: Incomplete | None = None): ... - -class Predicate: - @classmethod - def as_predicate(cls, predicate, description: Incomplete | None = None): ... - -class BooleanPredicate(Predicate): - value: Any - description: Any - def __init__(self, value, description: Incomplete | None = None) -> None: ... - def __call__(self, config): ... - -class SpecPredicate(Predicate): - db: Any - op: Any - spec: Any - description: Any - def __init__( - self, db, op: Incomplete | None = None, spec: Incomplete | None = None, description: Incomplete | None = None - ) -> None: ... - def __call__(self, config): ... - -class LambdaPredicate(Predicate): - lambda_: Any - args: Any - kw: Any - description: Any - def __init__( - self, lambda_, description: Incomplete | None = None, args: Incomplete | None = None, kw: Incomplete | None = None - ): ... - def __call__(self, config): ... - -class NotPredicate(Predicate): - predicate: Any - description: Any - def __init__(self, predicate, description: Incomplete | None = None) -> None: ... - def __call__(self, config): ... - -class OrPredicate(Predicate): - predicates: Any - description: Any - def __init__(self, predicates, description: Incomplete | None = None) -> None: ... - def __call__(self, config): ... - -def db_spec(*dbs): ... -def open(): ... -def closed(): ... -def fails(reason: Incomplete | None = None): ... -def future(fn, *arg): ... -def fails_on(db, reason: Incomplete | None = None): ... -def fails_on_everything_except(*dbs): ... -def skip(db, reason: Incomplete | None = None): ... -def only_on(dbs, reason: Incomplete | None = None): ... -def exclude(db, op, spec, reason: Incomplete | None = None): ... -def against(config, *queries): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/fixtures.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/fixtures.pyi deleted file mode 100644 index 817046c91..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/fixtures.pyi +++ /dev/null @@ -1,84 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from . import assertions -from .entities import ComparableEntity as ComparableEntity - -class TestBase: - __requires__: Any - __unsupported_on__: Any - __only_on__: Any - __skip_if__: Any - __leave_connections_for_teardown__: bool - def assert_(self, val, msg: Incomplete | None = ...) -> None: ... - def connection_no_trans(self) -> None: ... - def connection(self) -> None: ... - def registry(self, metadata) -> None: ... - def future_connection(self, future_engine, connection) -> None: ... - def future_engine(self) -> None: ... - def testing_engine(self): ... - def async_testing_engine(self, testing_engine): ... - def metadata(self, request) -> None: ... - def trans_ctx_manager_fixture(self, request, metadata): ... - -class FutureEngineMixin: ... - -class TablesTest(TestBase): - run_setup_bind: str - run_define_tables: str - run_create_tables: str - run_inserts: str - run_deletes: str - run_dispose_bind: Any - bind: Any - tables: Any - other: Any - sequences: Any - @property - def tables_test_metadata(self): ... - @classmethod - def setup_bind(cls): ... - @classmethod - def dispose_bind(cls, bind) -> None: ... - @classmethod - def define_tables(cls, metadata) -> None: ... - @classmethod - def fixtures(cls): ... - @classmethod - def insert_data(cls, connection) -> None: ... - def sql_count_(self, count, fn) -> None: ... - def sql_eq_(self, callable_, statements) -> None: ... - -class NoCache: ... - -class RemovesEvents: - def event_listen(self, target, name, fn, **kw) -> None: ... - -def fixture_session(**kw): ... -def stop_test_class_inside_fixtures(cls) -> None: ... -def after_test() -> None: ... - -class ORMTest(TestBase): ... - -class MappedTest(TablesTest, assertions.AssertsExecutionResults): - run_setup_classes: str - run_setup_mappers: str - classes: Any - @classmethod - def setup_classes(cls) -> None: ... - @classmethod - def setup_mappers(cls) -> None: ... - -class DeclarativeMappedTest(MappedTest): - run_setup_classes: str - run_setup_mappers: str - -class ComputedReflectionFixtureTest(TablesTest): - run_inserts: Any - run_deletes: Any - __backend__: bool - __requires__: Any - regexp: Any - def normalize(self, text): ... - @classmethod - def define_tables(cls, metadata) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/mock.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/mock.pyi deleted file mode 100644 index b20ebabfd..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/mock.pyi +++ /dev/null @@ -1 +0,0 @@ -from unittest.mock import ANY as ANY, MagicMock as MagicMock, Mock as Mock, call as call, patch as patch diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/pickleable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/pickleable.pyi deleted file mode 100644 index a66684a80..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/pickleable.pyi +++ /dev/null @@ -1,63 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -from . import fixtures - -class User(fixtures.ComparableEntity): ... -class Order(fixtures.ComparableEntity): ... -class Dingaling(fixtures.ComparableEntity): ... -class EmailUser(User): ... -class Address(fixtures.ComparableEntity): ... -class Child1(fixtures.ComparableEntity): ... -class Child2(fixtures.ComparableEntity): ... -class Parent(fixtures.ComparableEntity): ... - -class Screen: - obj: Any - parent: Any - def __init__(self, obj, parent: Incomplete | None = ...) -> None: ... - -class Foo: - data: str - stuff: Any - moredata: Any - def __init__(self, moredata, stuff: str = ...) -> None: ... - __hash__ = object.__hash__ - def __eq__(self, other): ... - -class Bar: - x: Any - y: Any - def __init__(self, x, y) -> None: ... - __hash__ = object.__hash__ - def __eq__(self, other): ... - -class OldSchool: - x: Any - y: Any - def __init__(self, x, y) -> None: ... - def __eq__(self, other): ... - -class OldSchoolWithoutCompare: - x: Any - y: Any - def __init__(self, x, y) -> None: ... - -class BarWithoutCompare: - x: Any - y: Any - def __init__(self, x, y) -> None: ... - -class NotComparable: - data: Any - def __init__(self, data) -> None: ... - def __hash__(self) -> int: ... - def __eq__(self, other): ... - def __ne__(self, other): ... - -class BrokenComparable: - data: Any - def __init__(self, data) -> None: ... - def __hash__(self) -> int: ... - def __eq__(self, other): ... - def __ne__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/__init__.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/bootstrap.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/bootstrap.pyi deleted file mode 100644 index 5c554d0de..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/bootstrap.pyi +++ /dev/null @@ -1,6 +0,0 @@ -from typing import Any - -bootstrap_file: Any -to_bootstrap: Any - -def load_file_as_module(name): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/plugin_base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/plugin_base.pyi deleted file mode 100644 index 8bb1c05c6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/plugin_base.pyi +++ /dev/null @@ -1,62 +0,0 @@ -from abc import ABC as ABC, ABCMeta, abstractmethod -from typing import Any - -bootstrapped_as_sqlalchemy: bool -log: Any -py3k: Any - -fixtures: Any -engines: Any -exclusions: Any -warnings: Any -profiling: Any -provision: Any -assertions: Any -requirements: Any -config: Any -testing: Any -util: Any -file_config: Any -include_tags: Any -exclude_tags: Any -options: Any - -def setup_options(make_option) -> None: ... -def configure_follower(follower_ident) -> None: ... -def memoize_important_follower_config(dict_) -> None: ... -def restore_important_follower_config(dict_) -> None: ... -def read_config() -> None: ... -def pre_begin(opt) -> None: ... -def set_coverage_flag(value) -> None: ... -def post_begin() -> None: ... - -pre_configure: Any -post_configure: Any - -def pre(fn): ... -def post(fn): ... -def want_class(name, cls): ... -def want_method(cls, fn): ... -def generate_sub_tests(cls, module) -> None: ... -def start_test_class_outside_fixtures(cls) -> None: ... -def stop_test_class(cls) -> None: ... -def stop_test_class_outside_fixtures(cls) -> None: ... -def final_process_cleanup() -> None: ... -def before_test(test, test_module_name, test_class, test_name) -> None: ... -def after_test(test) -> None: ... -def after_test_fixtures(test) -> None: ... - -class FixtureFunctions(ABC, metaclass=ABCMeta): - @abstractmethod - def skip_test_exception(self, *arg, **kw): ... - @abstractmethod - def combinations(self, *args, **kw): ... - @abstractmethod - def param_ident(self, *args, **kw): ... - @abstractmethod - def fixture(self, *arg, **kw): ... - def get_current_test_name(self) -> None: ... - @abstractmethod - def mark_base_test_class(self): ... - -def set_fixture_functions(fixture_fn_class) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/pytestplugin.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/pytestplugin.pyi deleted file mode 100644 index 757a2a0e0..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/pytestplugin.pyi +++ /dev/null @@ -1,38 +0,0 @@ -from typing_extensions import Final - -from . import plugin_base - -py2k: Final = False - -def pytest_addoption(parser) -> None: ... -def pytest_configure(config) -> None: ... - -DUMP_PYANNOTATE: bool - -def collect_types_fixture() -> None: ... -def pytest_sessionstart(session) -> None: ... -def pytest_sessionfinish(session) -> None: ... -def pytest_collection_finish(session): ... - -class XDistHooks: - def pytest_configure_node(self, node) -> None: ... - def pytest_testnodedown(self, node, error) -> None: ... - -def pytest_collection_modifyitems(session, config, items): ... -def pytest_pycollect_makeitem(collector, name, obj): ... -def pytest_runtest_setup(item) -> None: ... -def pytest_runtest_teardown(item, nextitem) -> None: ... -def pytest_runtest_call(item) -> None: ... -def pytest_runtest_logreport(report) -> None: ... -def setup_class_methods(request) -> None: ... -def setup_test_methods(request) -> None: ... -def getargspec(fn): ... - -class PytestFixtureFunctions(plugin_base.FixtureFunctions): - def skip_test_exception(self, *arg, **kw): ... - def mark_base_test_class(self): ... - def combinations(self, *arg_sets, **kw): ... - def param_ident(self, *parameters): ... - def fixture(self, *arg, **kw): ... - def get_current_test_name(self): ... - def async_test(self, fn): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/reinvent_fixtures_py2k.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/reinvent_fixtures_py2k.pyi deleted file mode 100644 index 83f3da864..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/plugin/reinvent_fixtures_py2k.pyi +++ /dev/null @@ -1,6 +0,0 @@ -def add_fixture(fn, fixture) -> None: ... -def scan_for_fixtures_to_use_for_class(item) -> None: ... -def run_class_fixture_setup(request) -> None: ... -def run_class_fixture_teardown(request) -> None: ... -def run_fn_fixture_setup(request) -> None: ... -def run_fn_fixture_teardown(request) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/profiling.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/profiling.pyi deleted file mode 100644 index c2aa3d0d0..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/profiling.pyi +++ /dev/null @@ -1,21 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -class ProfileStatsFile: - force_write: Any - write: Any - fname: Any - short_fname: Any - data: Any - dump: Any - sort: Any - def __init__(self, filename, sort: str = "cumulative", dump: Incomplete | None = None): ... - @property - def platform_key(self): ... - def has_stats(self): ... - def result(self, callcount): ... - def reset_count(self) -> None: ... - def replace(self, callcount) -> None: ... - -def function_call_count(variance: float = 0.05, times: int = 1, warmup: int = 0): ... -def count_functions(variance: float = 0.05) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi deleted file mode 100644 index ca85efb20..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/provision.pyi +++ /dev/null @@ -1,62 +0,0 @@ -from _typeshed import Incomplete, Unused -from collections.abc import Callable -from logging import Logger -from typing import Any, Generic, NoReturn, TypeVar -from typing_extensions import Self - -from ..engine.interfaces import Connectable -from ..engine.url import URL -from .config import Config, _ConfigProtocol - -_S = TypeVar("_S", bound=str) -_U = TypeVar("_U", bound=URL) -_F = TypeVar("_F", bound=Callable[..., str | URL | None]) - -log: Logger -FOLLOWER_IDENT: Incomplete | None - -def create_follower_db(follower_ident) -> None: ... -def setup_config(db_url, options, file_config, follower_ident) -> Config: ... -def drop_follower_db(follower_ident) -> None: ... -def generate_db_urls(db_urls, extra_drivers) -> None: ... -def drop_all_schema_objects(cfg, eng) -> None: ... -def reap_dbs(idents_file) -> None: ... - -class register(Generic[_F]): - fns: dict[str, _F] - @classmethod - def init(cls, fn: _F) -> Self: ... - def for_db(self, *dbnames: str) -> Callable[[_F], Self]: ... - # Impossible to specify the args from the generic Callable in the current type system - def __call__(self, cfg: str | URL | _ConfigProtocol, *arg: Any) -> str | URL | None: ... # AnyOf[str | URL | None] - -@register.init -def generate_driver_url(url: _U, driver: str, query_str: str) -> _U | None: ... -@register.init -def drop_all_schema_objects_pre_tables(cfg: Unused, eng: Unused) -> None: ... -@register.init -def drop_all_schema_objects_post_tables(cfg: Unused, eng: Unused) -> None: ... -@register.init -def create_db(cfg: Unused, eng: Connectable, ident: Unused) -> NoReturn: ... -@register.init -def drop_db(cfg: Unused, eng: Connectable, ident: Unused) -> NoReturn: ... -@register.init -def update_db_opts(db_url: Unused, db_opts: Unused) -> None: ... -@register.init -def post_configure_engine(url: Unused, engine: Unused, follower_ident: Unused) -> None: ... -@register.init -def follower_url_from_main(url: _U, ident: str) -> _U: ... -@register.init -def configure_follower(cfg: Unused, ident: Unused) -> None: ... -@register.init -def run_reap_dbs(url: Unused, ident: Unused) -> None: ... -@register.init -def temp_table_keyword_args(cfg: Unused, eng: Connectable) -> NoReturn: ... -@register.init -def prepare_for_drop_tables(config: Unused, connection: Unused) -> None: ... -@register.init -def stop_test_class_outside_fixtures(config: Unused, db: Unused, testcls: Unused) -> None: ... -@register.init # type: ignore[type-var] # False-positive, _S is bound to str -def get_temp_table_name(cfg: Unused, eng: Unused, base_name: _S) -> _S: ... -@register.init -def set_default_schema_on_connection(cfg: _ConfigProtocol, dbapi_connection: Unused, schema_name: Unused) -> NoReturn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/requirements.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/requirements.pyi deleted file mode 100644 index a3e4c1d11..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/requirements.pyi +++ /dev/null @@ -1,399 +0,0 @@ -from ..testing.exclusions import compound - -class Requirements: ... - -class SuiteRequirements(Requirements): - @property - def create_table(self): ... - @property - def drop_table(self): ... - @property - def table_ddl_if_exists(self): ... - @property - def index_ddl_if_exists(self): ... - @property - def foreign_keys(self): ... - @property - def table_value_constructor(self): ... - @property - def standard_cursor_sql(self): ... - @property - def on_update_cascade(self): ... - @property - def non_updating_cascade(self): ... - @property - def deferrable_fks(self): ... - @property - def on_update_or_deferrable_fks(self): ... - @property - def queue_pool(self): ... - @property - def self_referential_foreign_keys(self): ... - @property - def foreign_key_ddl(self): ... - @property - def named_constraints(self): ... - @property - def implicitly_named_constraints(self): ... - @property - def unusual_column_name_characters(self) -> compound: ... - @property - def subqueries(self): ... - @property - def offset(self): ... - @property - def bound_limit_offset(self): ... - @property - def sql_expression_limit_offset(self): ... - @property - def parens_in_union_contained_select_w_limit_offset(self): ... - @property - def parens_in_union_contained_select_wo_limit_offset(self): ... - @property - def boolean_col_expressions(self): ... - @property - def nullable_booleans(self): ... - @property - def nullsordering(self): ... - @property - def standalone_binds(self): ... - @property - def standalone_null_binds_whereclause(self): ... - @property - def intersect(self): ... - @property - def except_(self): ... - @property - def window_functions(self): ... - @property - def ctes(self): ... - @property - def ctes_with_update_delete(self): ... - @property - def ctes_on_dml(self): ... - @property - def autoincrement_insert(self): ... - @property - def fetch_rows_post_commit(self): ... - @property - def group_by_complex_expression(self): ... - @property - def sane_rowcount(self): ... - @property - def sane_multi_rowcount(self): ... - @property - def sane_rowcount_w_returning(self): ... - @property - def empty_inserts(self): ... - @property - def empty_inserts_executemany(self): ... - @property - def insert_from_select(self): ... - @property - def full_returning(self): ... - @property - def insert_executemany_returning(self): ... - @property - def returning(self): ... - @property - def tuple_in(self): ... - @property - def tuple_in_w_empty(self): ... - @property - def duplicate_names_in_cursor_description(self): ... - @property - def denormalized_names(self): ... - @property - def multivalues_inserts(self): ... - @property - def implements_get_lastrowid(self): ... - @property - def emulated_lastrowid(self): ... - @property - def emulated_lastrowid_even_with_sequences(self): ... - @property - def dbapi_lastrowid(self): ... - @property - def views(self): ... - @property - def schemas(self): ... - @property - def cross_schema_fk_reflection(self): ... - @property - def foreign_key_constraint_name_reflection(self): ... - @property - def implicit_default_schema(self): ... - @property - def default_schema_name_switch(self): ... - @property - def server_side_cursors(self): ... - @property - def sequences(self): ... - @property - def no_sequences(self): ... - @property - def sequences_optional(self): ... - @property - def supports_lastrowid(self): ... - @property - def no_lastrowid_support(self): ... - @property - def reflects_pk_names(self): ... - @property - def table_reflection(self): ... - @property - def reflect_tables_no_columns(self): ... - @property - def comment_reflection(self): ... - @property - def view_column_reflection(self): ... - @property - def view_reflection(self): ... - @property - def schema_reflection(self): ... - @property - def primary_key_constraint_reflection(self): ... - @property - def foreign_key_constraint_reflection(self): ... - @property - def foreign_key_constraint_option_reflection_ondelete(self): ... - @property - def fk_constraint_option_reflection_ondelete_restrict(self): ... - @property - def fk_constraint_option_reflection_ondelete_noaction(self): ... - @property - def foreign_key_constraint_option_reflection_onupdate(self): ... - @property - def fk_constraint_option_reflection_onupdate_restrict(self): ... - @property - def temp_table_reflection(self): ... - @property - def temp_table_reflect_indexes(self): ... - @property - def temp_table_names(self): ... - @property - def has_temp_table(self) -> compound: ... - @property - def temporary_tables(self): ... - @property - def temporary_views(self): ... - @property - def index_reflection(self): ... - @property - def index_reflects_included_columns(self): ... - @property - def indexes_with_ascdesc(self): ... - @property - def indexes_with_expressions(self): ... - @property - def unique_constraint_reflection(self): ... - @property - def check_constraint_reflection(self): ... - @property - def duplicate_key_raises_integrity_error(self): ... - @property - def unbounded_varchar(self): ... - @property - def unicode_data(self): ... - @property - def unicode_ddl(self): ... - @property - def symbol_names_w_double_quote(self): ... - @property - def datetime_literals(self): ... - @property - def datetime(self): ... - @property - def datetime_timezone(self) -> compound: ... - @property - def time_timezone(self) -> compound: ... - @property - def datetime_implicit_bound(self) -> compound: ... - @property - def datetime_microseconds(self): ... - @property - def timestamp_microseconds(self): ... - @property - def timestamp_microseconds_implicit_bound(self) -> compound: ... - @property - def datetime_historic(self): ... - @property - def date(self): ... - @property - def date_coerces_from_datetime(self): ... - @property - def date_historic(self): ... - @property - def time(self): ... - @property - def time_microseconds(self): ... - @property - def binary_comparisons(self): ... - @property - def binary_literals(self): ... - @property - def autocommit(self): ... - @property - def isolation_level(self): ... - def get_isolation_levels(self, config) -> None: ... - @property - def json_type(self): ... - @property - def json_array_indexes(self): ... - @property - def json_index_supplementary_unicode_element(self): ... - @property - def legacy_unconditional_json_extract(self): ... - @property - def precision_numerics_general(self): ... - @property - def precision_numerics_enotation_small(self): ... - @property - def precision_numerics_enotation_large(self): ... - @property - def precision_numerics_many_significant_digits(self): ... - @property - def cast_precision_numerics_many_significant_digits(self): ... - @property - def implicit_decimal_binds(self): ... - @property - def nested_aggregates(self): ... - @property - def recursive_fk_cascade(self): ... - @property - def precision_numerics_retains_significant_digits(self): ... - @property - def infinity_floats(self): ... - @property - def precision_generic_float_type(self): ... - @property - def floats_to_four_decimals(self): ... - @property - def fetch_null_from_numeric(self): ... - @property - def text_type(self): ... - @property - def empty_strings_varchar(self): ... - @property - def empty_strings_text(self): ... - @property - def expressions_against_unbounded_text(self): ... - @property - def selectone(self): ... - @property - def savepoints(self): ... - @property - def two_phase_transactions(self): ... - @property - def update_from(self): ... - @property - def delete_from(self): ... - @property - def update_where_target_in_subquery(self): ... - @property - def mod_operator_as_percent_sign(self): ... - @property - def percent_schema_names(self): ... - @property - def order_by_col_from_union(self): ... - @property - def order_by_label_with_expression(self): ... - @property - def order_by_collation(self): ... - def get_order_by_collation(self, config) -> None: ... - @property - def unicode_connections(self): ... - @property - def graceful_disconnects(self): ... - @property - def independent_connections(self): ... - @property - def skip_mysql_on_windows(self): ... - @property - def ad_hoc_engines(self): ... - @property - def no_windows(self): ... - @property - def timing_intensive(self): ... - @property - def memory_intensive(self): ... - @property - def threading_with_mock(self): ... - @property - def sqlalchemy2_stubs(self): ... - @property - def python2(self): ... - @property - def python3(self): ... - @property - def pep520(self): ... - @property - def insert_order_dicts(self): ... - @property - def python36(self): ... - @property - def python37(self): ... - @property - def dataclasses(self): ... - @property - def python38(self): ... - @property - def cpython(self): ... - @property - def is64bit(self) -> compound: ... - @property - def patch_library(self): ... - @property - def non_broken_pickle(self): ... - @property - def predictable_gc(self): ... - @property - def no_coverage(self): ... - @property - def sqlite(self): ... - @property - def cextensions(self): ... - @property - def async_dialect(self): ... - @property - def asyncio(self) -> compound: ... - @property - def greenlet(self): ... - @property - def computed_columns(self): ... - @property - def computed_columns_stored(self): ... - @property - def computed_columns_virtual(self): ... - @property - def computed_columns_default_persisted(self): ... - @property - def computed_columns_reflect_persisted(self): ... - @property - def supports_distinct_on(self): ... - @property - def supports_is_distinct_from(self): ... - @property - def identity_columns(self): ... - @property - def identity_columns_standard(self): ... - @property - def regexp_match(self): ... - @property - def regexp_replace(self): ... - @property - def fetch_first(self): ... - @property - def fetch_percent(self): ... - @property - def fetch_ties(self): ... - @property - def fetch_no_order_by(self): ... - @property - def fetch_offset_with_options(self): ... - @property - def fetch_expression(self): ... - @property - def autoincrement_without_sequence(self): ... - @property - def generic_classes(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/schema.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/schema.pyi deleted file mode 100644 index dc8b62196..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/schema.pyi +++ /dev/null @@ -1,16 +0,0 @@ -from typing import Any - -def Table(*args, **kw): ... -def Column(*args, **kw): ... - -class eq_type_affinity: - target: Any - def __init__(self, target) -> None: ... - def __eq__(self, other): ... - def __ne__(self, other): ... - -class eq_clause_element: - target: Any - def __init__(self, target) -> None: ... - def __eq__(self, other): ... - def __ne__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi deleted file mode 100644 index 6e5ba05c8..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/util.pyi +++ /dev/null @@ -1,41 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -def non_refcount_gc_collect(*args) -> None: ... # only present on Python implementations with non-refcount gc -def gc_collect(generation: int = 2) -> None: ... -def lazy_gc() -> None: ... -def picklers(): ... -def random_choices(population, k: int = 1): ... -def round_decimal(value, prec): ... - -class RandomSet(set[Any]): - def __iter__(self): ... - def pop(self): ... - def union(self, other): ... - def difference(self, other): ... - def intersection(self, other): ... - def copy(self): ... - -def conforms_partial_ordering(tuples, sorted_elements): ... -def all_partial_orderings(tuples, elements): ... -def function_named(fn, name): ... -def run_as_contextmanager(ctx, fn, *arg, **kw): ... -def rowset(results): ... -def fail(msg) -> None: ... -def provide_metadata(fn, *args, **kw): ... -def flag_combinations(*combinations): ... -def lambda_combinations(lambda_arg_sets, **kw): ... -def resolve_lambda(__fn, **kw): ... -def metadata_fixture(ddl: str = "function"): ... -def force_drop_names(*names): ... - -class adict(dict[Any, Any]): - def __getattribute__(self, key: str): ... - def __call__(self, *keys): ... - get_all: Any - -def drop_all_tables_from_metadata(metadata, engine_or_connection) -> None: ... -def drop_all_tables(engine, inspector, schema: Incomplete | None = None, include_names: Incomplete | None = None) -> None: ... -def total_size(o) -> int: ... -def teardown_events(event_cls): ... -def count_cache_key_tuples(tup) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/warnings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/warnings.pyi deleted file mode 100644 index 7c72efd57..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/testing/warnings.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from .. import exc as sa_exc - -class SATestSuiteWarning(sa_exc.SAWarning): ... - -def warn_test_suite(message) -> None: ... -def setup_filters() -> None: ... -def assert_warnings(fn, warning_msgs, regex: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/types.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/types.pyi deleted file mode 100644 index ee455334d..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/types.pyi +++ /dev/null @@ -1,106 +0,0 @@ -from .sql.sqltypes import ( - ARRAY as ARRAY, - BIGINT as BIGINT, - BINARY as BINARY, - BLOB as BLOB, - BOOLEAN as BOOLEAN, - CHAR as CHAR, - CLOB as CLOB, - DATE as DATE, - DATETIME as DATETIME, - DECIMAL as DECIMAL, - FLOAT as FLOAT, - INT as INT, - INTEGER as INTEGER, - JSON as JSON, - NCHAR as NCHAR, - NUMERIC as NUMERIC, - NVARCHAR as NVARCHAR, - REAL as REAL, - SMALLINT as SMALLINT, - TEXT as TEXT, - TIME as TIME, - TIMESTAMP as TIMESTAMP, - VARBINARY as VARBINARY, - VARCHAR as VARCHAR, - BigInteger as BigInteger, - Boolean as Boolean, - Concatenable as Concatenable, - Date as Date, - DateTime as DateTime, - Enum as Enum, - Float as Float, - Indexable as Indexable, - Integer as Integer, - Interval as Interval, - LargeBinary as LargeBinary, - MatchType as MatchType, - NullType as NullType, - Numeric as Numeric, - PickleType as PickleType, - SmallInteger as SmallInteger, - String as String, - Text as Text, - Time as Time, - TupleType as TupleType, - Unicode as Unicode, - UnicodeText as UnicodeText, - _Binary as _Binary, -) -from .sql.type_api import ( - ExternalType as ExternalType, - TypeDecorator as TypeDecorator, - TypeEngine as TypeEngine, - UserDefinedType as UserDefinedType, -) - -__all__ = [ - "TypeEngine", - "TypeDecorator", - "UserDefinedType", - "ExternalType", - "INT", - "CHAR", - "VARCHAR", - "NCHAR", - "NVARCHAR", - "TEXT", - "Text", - "FLOAT", - "NUMERIC", - "REAL", - "DECIMAL", - "TIMESTAMP", - "DATETIME", - "CLOB", - "BLOB", - "BINARY", - "VARBINARY", - "BOOLEAN", - "BIGINT", - "SMALLINT", - "INTEGER", - "DATE", - "TIME", - "TupleType", - "String", - "Integer", - "SmallInteger", - "BigInteger", - "Numeric", - "Float", - "DateTime", - "Date", - "Time", - "LargeBinary", - "Boolean", - "Unicode", - "Concatenable", - "UnicodeText", - "PickleType", - "Interval", - "Enum", - "Indexable", - "ARRAY", - "JSON", -] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi deleted file mode 100644 index bcca02525..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/__init__.pyi +++ /dev/null @@ -1,173 +0,0 @@ -import asyncio as asyncio -import pickle as pickle -import threading as threading -from abc import ABC as ABC -from builtins import callable as callable, next as next -from collections import defaultdict as defaultdict, namedtuple as namedtuple # noqa: Y024 # Actual import -from contextlib import contextmanager as contextmanager -from datetime import timezone as timezone -from functools import partial as partial, reduce as reduce, update_wrapper as update_wrapper -from io import StringIO as StringIO -from itertools import zip_longest as zip_longest -from typing import TYPE_CHECKING as TYPE_CHECKING -from urllib.parse import parse_qsl as parse_qsl, quote_plus as quote_plus, unquote as unquote, unquote_plus as unquote_plus - -from ._collections import ( - EMPTY_DICT as EMPTY_DICT, - EMPTY_SET as EMPTY_SET, - FacadeDict as FacadeDict, - IdentitySet as IdentitySet, - ImmutableContainer as ImmutableContainer, - ImmutableProperties as ImmutableProperties, - LRUCache as LRUCache, - OrderedDict as OrderedDict, - OrderedIdentitySet as OrderedIdentitySet, - OrderedProperties as OrderedProperties, - OrderedSet as OrderedSet, - PopulateDict as PopulateDict, - Properties as Properties, - ScopedRegistry as ScopedRegistry, - ThreadLocalRegistry as ThreadLocalRegistry, - UniqueAppender as UniqueAppender, - WeakPopulateDict as WeakPopulateDict, - WeakSequence as WeakSequence, - coerce_generator_arg as coerce_generator_arg, - coerce_to_immutabledict as coerce_to_immutabledict, - collections_abc as collections_abc, - column_dict as column_dict, - column_set as column_set, - flatten_iterator as flatten_iterator, - has_dupes as has_dupes, - has_intersection as has_intersection, - immutabledict as immutabledict, - ordered_column_set as ordered_column_set, - sort_dictionary as sort_dictionary, - to_column_set as to_column_set, - to_list as to_list, - to_set as to_set, - unique_list as unique_list, - update_copy as update_copy, -) -from ._preloaded import preload_module as preload_module, preloaded as preloaded -from .compat import ( - arm as arm, - b as b, - b64decode as b64decode, - b64encode as b64encode, - binary_type as binary_type, - binary_types as binary_types, - byte_buffer as byte_buffer, - cmp as cmp, - cpython as cpython, - dataclass_fields as dataclass_fields, - decode_backslashreplace as decode_backslashreplace, - dottedgetter as dottedgetter, - has_refcount_gc as has_refcount_gc, - inspect_getfullargspec as inspect_getfullargspec, - int_types as int_types, - is64bit as is64bit, - iterbytes as iterbytes, - itertools_filter as itertools_filter, - itertools_filterfalse as itertools_filterfalse, - local_dataclass_fields as local_dataclass_fields, - nullcontext as nullcontext, - osx as osx, - perf_counter as perf_counter, - print_ as print_, - py2k as py2k, - py3k as py3k, - py37 as py37, - py38 as py38, - py39 as py39, - py310 as py310, - py311 as py311, - py312 as py312, - pypy as pypy, - quote as quote, - raise_ as raise_, - raise_from_cause as raise_from_cause, - reraise as reraise, - string_types as string_types, - text_type as text_type, - u as u, - ue as ue, - win32 as win32, - with_metaclass as with_metaclass, -) -from .concurrency import ( - await_fallback as await_fallback, - await_only as await_only, - greenlet_spawn as greenlet_spawn, - is_exit_exception as is_exit_exception, -) -from .deprecations import ( - SQLALCHEMY_WARN_20 as SQLALCHEMY_WARN_20, - deprecated as deprecated, - deprecated_20 as deprecated_20, - deprecated_20_cls as deprecated_20_cls, - deprecated_cls as deprecated_cls, - deprecated_params as deprecated_params, - inject_docstring_text as inject_docstring_text, - moved_20 as moved_20, - warn_deprecated as warn_deprecated, - warn_deprecated_20 as warn_deprecated_20, -) -from .langhelpers import ( - EnsureKWArgType as EnsureKWArgType, - HasMemoized as HasMemoized, - MemoizedSlots as MemoizedSlots, - NoneType as NoneType, - PluginLoader as PluginLoader, - add_parameter_text as add_parameter_text, - as_interface as as_interface, - asbool as asbool, - asint as asint, - assert_arg_type as assert_arg_type, - attrsetter as attrsetter, - bool_or_str as bool_or_str, - chop_traceback as chop_traceback, - class_hierarchy as class_hierarchy, - classproperty as classproperty, - clsname_as_plain_name as clsname_as_plain_name, - coerce_kw_type as coerce_kw_type, - constructor_copy as constructor_copy, - constructor_key as constructor_key, - counter as counter, - create_proxy_methods as create_proxy_methods, - decode_slice as decode_slice, - decorator as decorator, - dictlike_iteritems as dictlike_iteritems, - duck_type_collection as duck_type_collection, - ellipses_string as ellipses_string, - format_argspec_init as format_argspec_init, - format_argspec_plus as format_argspec_plus, - generic_repr as generic_repr, - get_callable_argspec as get_callable_argspec, - get_cls_kwargs as get_cls_kwargs, - get_func_kwargs as get_func_kwargs, - getargspec_init as getargspec_init, - has_compiled_ext as has_compiled_ext, - hybridmethod as hybridmethod, - hybridproperty as hybridproperty, - iterate_attributes as iterate_attributes, - map_bits as map_bits, - md5_hex as md5_hex, - memoized_instancemethod as memoized_instancemethod, - memoized_property as memoized_property, - method_is_overridden as method_is_overridden, - methods_equivalent as methods_equivalent, - monkeypatch_proxied_specials as monkeypatch_proxied_specials, - only_once as only_once, - portable_instancemethod as portable_instancemethod, - quoted_token_parser as quoted_token_parser, - safe_reraise as safe_reraise, - set_creation_order as set_creation_order, - string_or_unprintable as string_or_unprintable, - symbol as symbol, - unbound_method_to_callable as unbound_method_to_callable, - walk_subclasses as walk_subclasses, - warn as warn, - warn_exception as warn_exception, - warn_limited as warn_limited, - wrap_callable as wrap_callable, -) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi deleted file mode 100644 index e487b34a6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_collections.pyi +++ /dev/null @@ -1,219 +0,0 @@ -import collections.abc -from _typeshed import Incomplete, SupportsKeysAndGetItem, Unused -from collections.abc import Callable, Iterable, Iterator, Mapping -from typing import Any, Generic, NoReturn, TypeVar, overload -from typing_extensions import Self - -from ..cimmutabledict import immutabledict as immutabledict - -_KT = TypeVar("_KT") -_VT = TypeVar("_VT") -_S = TypeVar("_S") -_T = TypeVar("_T") - -collections_abc = collections.abc - -EMPTY_SET: frozenset[Any] - -class ImmutableContainer: - def __delitem__(self, *arg: Unused, **kw: Unused) -> NoReturn: ... - def __setitem__(self, *arg: Unused, **kw: Unused) -> NoReturn: ... - def __setattr__(self, *arg: Unused, **kw: Unused) -> NoReturn: ... - -@overload -def coerce_to_immutabledict(d: None) -> immutabledict[Any, Any]: ... -@overload -def coerce_to_immutabledict(d: Mapping[_KT, _VT]) -> immutabledict[_KT, _VT]: ... - -EMPTY_DICT: immutabledict[Any, Any] - -class FacadeDict(ImmutableContainer, dict[Any, Any]): - clear: Any - pop: Any - popitem: Any - setdefault: Any - update: Any - def __new__(cls, *args): ... - def copy(self) -> None: ... # type: ignore[override] - def __reduce__(self): ... - -class Properties(Generic[_T]): - def __init__(self, data: dict[str, _T]) -> None: ... - def __len__(self) -> int: ... - def __iter__(self) -> Iterator[_T]: ... - def __dir__(self) -> list[str]: ... - def __add__(self, other: Iterable[_S]) -> list[_S | _T]: ... - def __setitem__(self, key: str, obj: _T) -> None: ... - def __getitem__(self, key: str) -> _T: ... - def __delitem__(self, key: str) -> None: ... - def __setattr__(self, key: str, obj: _T) -> None: ... - def __getattr__(self, key: str) -> _T: ... - def __contains__(self, key: str) -> bool: ... - def as_immutable(self) -> ImmutableProperties[_T]: ... - def update(self, value: Iterable[tuple[str, _T]] | SupportsKeysAndGetItem[str, _T]) -> None: ... - @overload - def get(self, key: str) -> _T | None: ... - @overload - def get(self, key: str, default: _S) -> _T | _S: ... - def keys(self) -> list[str]: ... - def values(self) -> list[_T]: ... - def items(self) -> list[tuple[str, _T]]: ... - def has_key(self, key: str) -> bool: ... - def clear(self) -> None: ... - -class OrderedProperties(Properties[_T], Generic[_T]): - def __init__(self) -> None: ... - -class ImmutableProperties(ImmutableContainer, Properties[_T], Generic[_T]): ... - -OrderedDict = dict - -def sort_dictionary(d, key: Incomplete | None = None): ... - -class OrderedSet(set[_T], Generic[_T]): - @overload - def __init__(self, d: None = None) -> None: ... - @overload - def __init__(self, d: Iterable[_T]) -> None: ... - def add(self, element: _T) -> None: ... - def remove(self, element: _T) -> None: ... - def insert(self, pos: int, element: _T) -> None: ... - def discard(self, element: _T) -> None: ... - def clear(self) -> None: ... - def __getitem__(self, key: int) -> _T: ... - def __iter__(self) -> Iterator[_T]: ... - def __add__(self, other: Iterable[_S]) -> OrderedSet[_S | _T]: ... - def update(self, iterable: Iterable[_T]) -> Self: ... # type: ignore[override] - __ior__ = update # type: ignore[assignment] - def union(self, other: Iterable[_S]) -> OrderedSet[_S | _T]: ... # type: ignore[override] - __or__ = union # type: ignore[assignment] # pyright: ignore[reportGeneralTypeIssues] - def intersection(self, other: Iterable[Any]) -> Self: ... # type: ignore[override] - __and__ = intersection # type: ignore[assignment] - def symmetric_difference(self, other: Iterable[_S]) -> OrderedSet[_S | _T]: ... - __xor__ = symmetric_difference # type: ignore[assignment] # pyright: ignore[reportGeneralTypeIssues] - def difference(self, other: Iterable[Any]) -> Self: ... # type: ignore[override] - __sub__ = difference # type: ignore[assignment] - def intersection_update(self, other: Iterable[Any]) -> Self: ... # type: ignore[override] - __iand__ = intersection_update # type: ignore[assignment] - def symmetric_difference_update(self, other: Iterable[_T]) -> Self: ... # type: ignore[override] - __ixor__ = symmetric_difference_update # type: ignore[assignment] - def difference_update(self, other: Iterable[Any]) -> Self: ... # type: ignore[override] - __isub__ = difference_update # type: ignore[assignment] - -class IdentitySet: - def __init__(self, iterable: Incomplete | None = None) -> None: ... - def add(self, value) -> None: ... - def __contains__(self, value): ... - def remove(self, value) -> None: ... - def discard(self, value) -> None: ... - def pop(self): ... - def clear(self) -> None: ... - def __cmp__(self, other) -> None: ... - def __eq__(self, other): ... - def __ne__(self, other): ... - def issubset(self, iterable): ... - def __le__(self, other): ... - def __lt__(self, other): ... - def issuperset(self, iterable): ... - def __ge__(self, other): ... - def __gt__(self, other): ... - def union(self, iterable): ... - def __or__(self, other): ... - def update(self, iterable) -> None: ... - def __ior__(self, other): ... - def difference(self, iterable): ... - def __sub__(self, other): ... - def difference_update(self, iterable) -> None: ... - def __isub__(self, other): ... - def intersection(self, iterable): ... - def __and__(self, other): ... - def intersection_update(self, iterable) -> None: ... - def __iand__(self, other): ... - def symmetric_difference(self, iterable): ... - def __xor__(self, other): ... - def symmetric_difference_update(self, iterable) -> None: ... - def __ixor__(self, other): ... - def copy(self): ... - __copy__: Any - def __len__(self) -> int: ... - def __iter__(self): ... - def __hash__(self) -> int: ... - -class WeakSequence: - def __init__(self, _WeakSequence__elements: Iterable[Incomplete] = ()) -> None: ... - def append(self, item) -> None: ... - def __len__(self) -> int: ... - def __iter__(self): ... - def __getitem__(self, index): ... - -class OrderedIdentitySet(IdentitySet): - def __init__(self, iterable: Incomplete | None = None) -> None: ... - -class PopulateDict(dict[Any, Any]): - creator: Any - def __init__(self, creator) -> None: ... - def __missing__(self, key): ... - -class WeakPopulateDict(dict[Any, Any]): - creator: Any - weakself: Any - def __init__(self, creator_method) -> None: ... - def __missing__(self, key): ... - -column_set = set -column_dict = dict -# Ignore Y026, this isn't a type alias. -# We have to do `ordered_column_set = OrderedSet[_T] -# instead of `ordered_column_set = OrderedSet`, -# or pyright complains -ordered_column_set = OrderedSet[_T] # noqa: Y026 - -def unique_list(seq: Iterable[_T], hashfunc: Callable[[_T], Any] | None = None) -> list[_T]: ... - -class UniqueAppender: - data: Any - def __init__(self, data, via: Incomplete | None = None) -> None: ... - def append(self, item) -> None: ... - def __iter__(self): ... - -def coerce_generator_arg(arg): ... -def to_list(x, default: Incomplete | None = None): ... -def has_intersection(set_, iterable): ... -def to_set(x): ... -def to_column_set(x): ... -def update_copy(d, _new: Incomplete | None = None, **kw): ... -def flatten_iterator(x) -> None: ... - -class LRUCache(dict[Any, Any]): - capacity: Any - threshold: Any - size_alert: Any - def __init__(self, capacity: int = 100, threshold: float = 0.5, size_alert: Incomplete | None = None) -> None: ... - def get(self, key, default: Incomplete | None = None): ... - def __getitem__(self, key): ... - def values(self): ... - def setdefault(self, key, value): ... - def __setitem__(self, key, value) -> None: ... - @property - def size_threshold(self): ... - -class ScopedRegistry: - createfunc: Any - scopefunc: Any - registry: Any - def __init__(self, createfunc, scopefunc) -> None: ... - def __call__(self): ... - def has(self): ... - def set(self, obj) -> None: ... - def clear(self) -> None: ... - -class ThreadLocalRegistry(ScopedRegistry): - createfunc: Any - registry: Any - def __init__(self, createfunc) -> None: ... - def __call__(self): ... - def has(self): ... - def set(self, obj) -> None: ... - def clear(self) -> None: ... - -def has_dupes(sequence, target): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_compat_py3k.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_compat_py3k.pyi deleted file mode 100644 index 7f453b9db..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_compat_py3k.pyi +++ /dev/null @@ -1,13 +0,0 @@ -from types import TracebackType -from typing import Any - -class _AsyncGeneratorContextManager: - gen: Any - __doc__: Any - def __init__(self, func, args, kwds) -> None: ... - async def __aenter__(self): ... - async def __aexit__( - self, typ: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> bool | None: ... - -def asynccontextmanager(func): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_concurrency_py3k.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_concurrency_py3k.pyi deleted file mode 100644 index 4a8d24e50..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_concurrency_py3k.pyi +++ /dev/null @@ -1,19 +0,0 @@ -import asyncio as asyncio -from _typeshed import Unused -from collections.abc import Callable, Coroutine -from typing import Any - -from .langhelpers import memoized_property - -def is_exit_exception(e): ... -def await_only(awaitable: Coroutine[Any, Any, Any]) -> Any: ... -def await_fallback(awaitable: Coroutine[Any, Any, Any]) -> Any: ... -async def greenlet_spawn(fn: Callable[..., Any], *args, _require_await: bool = False, **kwargs) -> Any: ... - -class AsyncAdaptedLock: - @memoized_property - def mutex(self): ... - def __enter__(self): ... - def __exit__(self, *arg: Unused, **kw: Unused) -> None: ... - -def get_event_loop(): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_preloaded.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_preloaded.pyi deleted file mode 100644 index f1e73ecf3..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/_preloaded.pyi +++ /dev/null @@ -1,11 +0,0 @@ -from typing import Any - -class _ModuleRegistry: - module_registry: Any - prefix: Any - def __init__(self, prefix: str = "sqlalchemy.") -> None: ... - def preload_module(self, *deps): ... - def import_prefix(self, path) -> None: ... - -preloaded: Any -preload_module: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi deleted file mode 100644 index 02ce27adc..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/compat.pyi +++ /dev/null @@ -1,112 +0,0 @@ -import itertools -import operator -import pickle as pickle -import sys -import threading as threading -from _typeshed import Incomplete, Unused -from abc import ABC as ABC -from builtins import callable as callable, next as next -from collections import namedtuple as namedtuple # noqa: Y024 # Actual import -from contextlib import contextmanager as contextmanager -from datetime import timezone as timezone -from functools import reduce as reduce -from io import BytesIO, StringIO as StringIO -from itertools import zip_longest as zip_longest -from time import perf_counter as perf_counter -from typing import TYPE_CHECKING as TYPE_CHECKING, Any, NamedTuple -from typing_extensions import Final -from urllib.parse import ( - parse_qsl as parse_qsl, - quote as quote, - quote_plus as quote_plus, - unquote as unquote, - unquote_plus as unquote_plus, -) - -byte_buffer = BytesIO - -py312: bool -py311: bool -py310: bool -py39: bool -py38: bool -py37: bool -py3k: Final = True -py2k: Final = False -pypy: bool -cpython: bool -if sys.platform == "win32": - win32: Final = True -else: - win32: Final = False -if sys.platform == "darwin": - osx: Final = True -else: - osx: Final = False -arm: bool -is64bit: bool -has_refcount_gc: bool -dottedgetter = operator.attrgetter - -class FullArgSpec(NamedTuple): - args: Any - varargs: Any - varkw: Any - defaults: Any - kwonlyargs: Any - kwonlydefaults: Any - annotations: Any - -class nullcontext: - enter_result: Any - def __init__(self, enter_result: Incomplete | None = None) -> None: ... - def __enter__(self): ... - def __exit__(self, *excinfo: Unused) -> None: ... - -def inspect_getfullargspec(func): ... -def importlib_metadata_get(group): ... - -string_types: tuple[type, ...] -binary_types: tuple[type, ...] -binary_type = bytes -text_type = str -int_types: tuple[type, ...] -iterbytes = iter -long_type = int -itertools_filterfalse = itertools.filterfalse -itertools_filter = filter -itertools_imap = map -exec_: Any -import_: Any -print_: Any - -def b(s): ... -def b64decode(x): ... -def b64encode(x): ... -def decode_backslashreplace(text, encoding): ... -def cmp(a, b): ... -def raise_( - exception, with_traceback: Incomplete | None = None, replace_context: Incomplete | None = None, from_: bool = False -) -> None: ... -def u(s): ... -def ue(s): ... -def inspect_formatargspec( - args, - varargs: Incomplete | None = None, - varkw: Incomplete | None = None, - defaults: Incomplete | None = None, - kwonlyargs=(), - kwonlydefaults={}, - annotations={}, - formatarg=..., - formatvarargs=..., - formatvarkw=..., - formatvalue=..., - formatreturns=..., - formatannotation=..., -): ... -def dataclass_fields(cls): ... -def local_dataclass_fields(cls): ... -def raise_from_cause(exception, exc_info: Incomplete | None = None) -> None: ... -def reraise(tp, value, tb: Incomplete | None = None, cause: Incomplete | None = None) -> None: ... -def with_metaclass(meta, *bases, **kw): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/concurrency.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/concurrency.pyi deleted file mode 100644 index dce9ae586..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/concurrency.pyi +++ /dev/null @@ -1,13 +0,0 @@ -import asyncio as asyncio - -from ._compat_py3k import asynccontextmanager as asynccontextmanager -from ._concurrency_py3k import ( - AsyncAdaptedLock as AsyncAdaptedLock, - await_fallback as await_fallback, - await_only as await_only, - greenlet_spawn as greenlet_spawn, - is_exit_exception as is_exit_exception, -) - -have_greenlet: bool -greenlet_error: str | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi deleted file mode 100644 index e816883e2..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/deprecations.pyi +++ /dev/null @@ -1,28 +0,0 @@ -from _typeshed import Incomplete - -from .langhelpers import ( - decorator as decorator, - inject_docstring_text as inject_docstring_text, - inject_param_text as inject_param_text, -) - -SQLALCHEMY_WARN_20: bool -SILENCE_UBER_WARNING: bool - -def warn_deprecated(msg, version, stacklevel: int = 3, code: Incomplete | None = None) -> None: ... -def warn_deprecated_limited(msg, args, version, stacklevel: int = 3, code: Incomplete | None = None) -> None: ... -def warn_deprecated_20(msg, stacklevel: int = 3, code: Incomplete | None = None) -> None: ... -def deprecated_cls(version, message, constructor: str = "__init__"): ... -def deprecated_20_cls( - clsname, alternative: Incomplete | None = None, constructor: str = "__init__", becomes_legacy: bool = False -): ... -def deprecated( - version, - message: Incomplete | None = None, - add_deprecation_to_docstring: bool = True, - warning: Incomplete | None = None, - enable_warnings: bool = True, -): ... -def moved_20(message, **kw): ... -def deprecated_20(api_name, alternative: Incomplete | None = None, becomes_legacy: bool = False, **kw): ... -def deprecated_params(**specs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi deleted file mode 100644 index a18aa1a09..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/langhelpers.pyi +++ /dev/null @@ -1,176 +0,0 @@ -from _typeshed import Incomplete, Unused -from collections.abc import Callable -from types import TracebackType -from typing import Any, Generic, TypeVar, overload -from typing_extensions import Self - -from . import compat - -_R = TypeVar("_R") - -def md5_hex(x): ... - -class safe_reraise: - warn_only: Any - def __init__(self, warn_only: bool = False) -> None: ... - def __enter__(self) -> None: ... - def __exit__( - self, type_: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None - ) -> None: ... - -def walk_subclasses(cls) -> None: ... -def string_or_unprintable(element): ... -def clsname_as_plain_name(cls): ... -def method_is_overridden(instance_or_cls, against_method): ... -def decode_slice(slc): ... -def map_bits(fn, n) -> None: ... -def decorator(target): ... -def public_factory(target, location, class_location: Incomplete | None = None): ... - -class PluginLoader: - group: Any - impls: Any - auto_fn: Any - def __init__(self, group, auto_fn: Incomplete | None = None) -> None: ... - def clear(self) -> None: ... - def load(self, name): ... - def register(self, name, modulepath, objname) -> None: ... - -def get_cls_kwargs(cls, _set: Incomplete | None = None): ... -def get_func_kwargs(func): ... -def get_callable_argspec(fn, no_self: bool = False, _is_init: bool = False): ... -def format_argspec_plus(fn, grouped: bool = True): ... -def format_argspec_init(method, grouped: bool = True): ... -def create_proxy_methods( - target_cls, target_cls_sphinx_name, proxy_cls_sphinx_name, classmethods=(), methods=(), attributes=() -): ... -def getargspec_init(method): ... -def unbound_method_to_callable(func_or_cls): ... -def generic_repr(obj, additional_kw=(), to_inspect: Incomplete | None = None, omit_kwarg=()): ... - -class portable_instancemethod: - target: Any - name: Any - kwargs: Any - def __init__(self, meth, kwargs=()) -> None: ... - def __call__(self, *arg, **kw): ... - -def class_hierarchy(cls): ... -def iterate_attributes(cls) -> None: ... -def monkeypatch_proxied_specials( - into_cls, - from_cls, - skip: Incomplete | None = None, - only: Incomplete | None = None, - name: str = "self.proxy", - from_instance: Incomplete | None = None, -) -> None: ... -def methods_equivalent(meth1, meth2): ... -def as_interface(obj, cls: Incomplete | None = None, methods: Incomplete | None = None, required: Incomplete | None = None): ... - -class memoized_property(Generic[_R]): - fget: Callable[..., _R] - __doc__: str - __name__: str - def __init__(self, fget: Callable[..., _R], doc: str | None = None) -> None: ... - @overload - def __get__(self, obj: None, cls: Unused) -> Self: ... - @overload - def __get__(self, obj: object, cls: Unused) -> _R: ... - @classmethod - def reset(cls, obj: object, name: str) -> None: ... - -def memoized_instancemethod(fn): ... - -class HasMemoized: - class memoized_attribute(Generic[_R]): - fget: Callable[..., _R] - __doc__: str - __name__: str - def __init__(self, fget: Callable[..., _R], doc: str | None = None) -> None: ... - @overload - def __get__(self, obj: None, cls: Unused) -> Self: ... - @overload - def __get__(self, obj: object, cls: Unused) -> _R: ... - - @classmethod - def memoized_instancemethod(cls, fn): ... - -class MemoizedSlots: - def __getattr__(self, key: str): ... - -def asbool(obj): ... -def bool_or_str(*text): ... -def asint(value): ... -def coerce_kw_type(kw, key, type_, flexi_bool: bool = True, dest: Incomplete | None = None) -> None: ... -def constructor_key(obj, cls): ... -def constructor_copy(obj, cls, *args, **kw): ... -def counter(): ... -def duck_type_collection(specimen, default: Incomplete | None = None): ... -def assert_arg_type(arg, argtype, name): ... -def dictlike_iteritems(dictlike): ... - -class classproperty(property): - __doc__: Any - def __init__(self, fget, *arg, **kw) -> None: ... - def __get__(self, self_, cls): ... - -class hybridproperty(Generic[_R]): - func: Callable[..., _R] - clslevel: Callable[..., _R] - def __init__(self, func: Callable[..., _R]) -> None: ... - @overload - def __get__(self, instance: None, owner: Any) -> _R: ... - @overload - def __get__(self, instance: object, owner: object) -> _R: ... - def classlevel(self, func: Callable[..., _R]) -> Self: ... - -class hybridmethod: - func: Any - clslevel: Any - def __init__(self, func) -> None: ... - def __get__(self, instance, owner): ... - def classlevel(self, func): ... - -class _symbol(int): - def __new__( # noqa: Y034 # Explicitly instantiates _symbol - self, name, doc: Incomplete | None = None, canonical: Incomplete | None = None - ) -> _symbol: ... - def __reduce__(self): ... - -class symbol: - symbols: Any - def __new__( # type: ignore[misc] # Explicitly instantiates _symbol - cls, name, doc: Incomplete | None = None, canonical: Incomplete | None = None - ) -> _symbol: ... - @classmethod - def parse_user_argument(cls, arg, choices, name, resolve_symbol_names: bool = False): ... - -def set_creation_order(instance) -> None: ... -def warn_exception(func, *args, **kwargs): ... -def ellipses_string(value, len_: int = 25): ... - -class _hash_limit_string(compat.text_type): - def __new__(cls, value, num, args): ... - def __hash__(self) -> int: ... - def __eq__(self, other): ... - -def warn(msg, code: Incomplete | None = None) -> None: ... -def warn_limited(msg, args) -> None: ... -def only_once(fn, retry_on_exception): ... -def chop_traceback(tb, exclude_prefix=..., exclude_suffix=...): ... - -NoneType: Any - -def attrsetter(attrname): ... - -class EnsureKWArgType(type): - def __init__(cls, clsname, bases, clsdict) -> None: ... - -def wrap_callable(wrapper, fn): ... -def quoted_token_parser(value): ... -def add_parameter_text(params, text): ... -def inject_docstring_text(doctext, injecttext, pos): ... -def inject_param_text(doctext, inject_params): ... -def repr_tuple_names(names): ... -def has_compiled_ext(): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/queue.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/queue.pyi deleted file mode 100644 index 852018369..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/queue.pyi +++ /dev/null @@ -1,35 +0,0 @@ -from _typeshed import Incomplete -from typing import Any - -class Empty(Exception): ... -class Full(Exception): ... - -class Queue: - mutex: Any - not_empty: Any - not_full: Any - use_lifo: Any - def __init__(self, maxsize: int = 0, use_lifo: bool = False) -> None: ... - def qsize(self): ... - def empty(self): ... - def full(self): ... - def put(self, item, block: bool = True, timeout: Incomplete | None = None) -> None: ... - def put_nowait(self, item): ... - def get(self, block: bool = True, timeout: Incomplete | None = None): ... - def get_nowait(self): ... - -class AsyncAdaptedQueue: - await_: Any - use_lifo: Any - maxsize: Any - def __init__(self, maxsize: int = 0, use_lifo: bool = False) -> None: ... - def empty(self): ... - def full(self): ... - def qsize(self): ... - def put_nowait(self, item): ... - def put(self, item, block: bool = True, timeout: Incomplete | None = None): ... - def get_nowait(self): ... - def get(self, block: bool = True, timeout: Incomplete | None = None): ... - -class FallbackAsyncAdaptedQueue(AsyncAdaptedQueue): - await_: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/topological.pyi b/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/topological.pyi deleted file mode 100644 index 7f54e1a05..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/SQLAlchemy/sqlalchemy/util/topological.pyi +++ /dev/null @@ -1,3 +0,0 @@ -def sort_as_subsets(tuples, allitems) -> None: ... -def sort(tuples, allitems, deterministic_order: bool = True) -> None: ... -def find_cycles(tuples, allitems): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/multidict.pyi b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/multidict.pyi index 3486d6ae3..2d525a355 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/multidict.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/webob/multidict.pyi @@ -24,7 +24,7 @@ class MultiDict(MutableMapping[_KT, _VT]): def __setitem__(self, key: _KT, value: _VT) -> None: ... def add(self, key: _KT, value: _VT) -> None: ... @overload - def get(self, key: _KT) -> _VT: ... + def get(self, key: _KT) -> _VT | None: ... @overload def get(self, key: _KT, default: _T) -> _VT | _T: ... def getall(self, key: _KT) -> list[_VT]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/annoy/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/annoy/METADATA.toml deleted file mode 100644 index 74b2b8d57..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/annoy/METADATA.toml +++ /dev/null @@ -1,2 +0,0 @@ -version = "1.17.*" -requires = [] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/__init__.pyi deleted file mode 100644 index 8a1ced3e7..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/__init__.pyi +++ /dev/null @@ -1,5 +0,0 @@ -from typing_extensions import TypeAlias - -from .annoylib import Annoy - -AnnoyIndex: TypeAlias = Annoy diff --git a/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/annoylib.pyi b/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/annoylib.pyi deleted file mode 100644 index 5e63a1394..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/annoy/annoy/annoylib.pyi +++ /dev/null @@ -1,44 +0,0 @@ -from _typeshed import SupportsLenAndGetItem -from typing import overload -from typing_extensions import Literal, TypeAlias - -_Vector: TypeAlias = SupportsLenAndGetItem[float] - -class Annoy: - f: int - def __init__(self, f: int, metric: Literal["angular", "euclidean", "manhattan", "hamming", "dot"]) -> None: ... - def load(self, fn: str, prefault: bool = ...) -> Literal[True]: ... - def save(self, fn: str, prefault: bool = ...) -> Literal[True]: ... - @overload - def get_nns_by_item(self, i: int, n: int, search_k: int = ..., include_distances: Literal[False] = False) -> list[int]: ... - @overload - def get_nns_by_item( - self, i: int, n: int, search_k: int, include_distances: Literal[True] - ) -> tuple[list[int], list[float]]: ... - @overload - def get_nns_by_item( - self, i: int, n: int, search_k: int = ..., *, include_distances: Literal[True] - ) -> tuple[list[int], list[float]]: ... - @overload - def get_nns_by_vector( - self, vector: _Vector, n: int, search_k: int = ..., include_distances: Literal[False] = False - ) -> list[int]: ... - @overload - def get_nns_by_vector( - self, vector: _Vector, n: int, search_k: int, include_distances: Literal[True] - ) -> tuple[list[int], list[float]]: ... - @overload - def get_nns_by_vector( - self, vector: _Vector, n: int, search_k: int = ..., *, include_distances: Literal[True] - ) -> tuple[list[int], list[float]]: ... - def get_item_vector(self, __i: int) -> list[float]: ... - def add_item(self, i: int, vector: _Vector) -> None: ... - def on_disk_build(self, fn: str) -> Literal[True]: ... - def build(self, n_trees: int, n_jobs: int = ...) -> Literal[True]: ... - def unbuild(self) -> Literal[True]: ... - def unload(self) -> Literal[True]: ... - def get_distance(self, __i: int, __j: int) -> float: ... - def get_n_items(self) -> int: ... - def get_n_trees(self) -> int: ... - def verbose(self, __v: bool) -> Literal[True]: ... - def set_seed(self, __s: int) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml index ad13d437b..8fb64e259 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.20.*" +version = "4.21.*" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/contextvars/@tests/stubtest_allowlist.txt b/packages/pyright-internal/typeshed-fallback/stubs/contextvars/@tests/stubtest_allowlist.txt deleted file mode 100644 index 64f8aa01a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/contextvars/@tests/stubtest_allowlist.txt +++ /dev/null @@ -1,4 +0,0 @@ -contextvars.Context.__init__ -contextvars.Context.get -contextvars.ContextVar.reset -contextvars.ContextVar.set diff --git a/packages/pyright-internal/typeshed-fallback/stubs/contextvars/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/contextvars/METADATA.toml deleted file mode 100644 index ea07e8d31..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/contextvars/METADATA.toml +++ /dev/null @@ -1 +0,0 @@ -version = "2.4" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/contextvars/contextvars.pyi b/packages/pyright-internal/typeshed-fallback/stubs/contextvars/contextvars.pyi deleted file mode 100644 index 8ce52bdfe..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/contextvars/contextvars.pyi +++ /dev/null @@ -1,51 +0,0 @@ -import sys -from collections.abc import Callable, Iterator, Mapping -from typing import Any, ClassVar, Generic, TypeVar, overload -from typing_extensions import ParamSpec, final - -if sys.version_info >= (3, 9): - from types import GenericAlias - -_T = TypeVar("_T") -_D = TypeVar("_D") -_P = ParamSpec("_P") - -@final -class ContextVar(Generic[_T]): - @overload - def __init__(self, name: str) -> None: ... - @overload - def __init__(self, name: str, *, default: _T) -> None: ... - @property - def name(self) -> str: ... - @overload - def get(self) -> _T: ... - @overload - def get(self, default: _D | _T) -> _D | _T: ... - def set(self, value: _T) -> Token[_T]: ... - def reset(self, token: Token[_T]) -> None: ... - if sys.version_info >= (3, 9): - def __class_getitem__(cls, item: Any) -> GenericAlias: ... - -@final -class Token(Generic[_T]): - @property - def var(self) -> ContextVar[_T]: ... - @property - def old_value(self) -> Any: ... # returns either _T or MISSING, but that's hard to express - MISSING: ClassVar[object] - if sys.version_info >= (3, 9): - def __class_getitem__(cls, item: Any) -> GenericAlias: ... - -def copy_context() -> Context: ... - -# It doesn't make sense to make this generic, because for most Contexts each ContextVar will have -# a different value. -@final -class Context(Mapping[ContextVar[Any], Any]): - def __init__(self) -> None: ... - def run(self, callable: Callable[_P, _T], *args: _P.args, **kwargs: _P.kwargs) -> _T: ... - def copy(self) -> Context: ... - def __getitem__(self, __key: ContextVar[_T]) -> _T: ... - def __iter__(self) -> Iterator[ContextVar[Any]]: ... - def __len__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/croniter/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/croniter/METADATA.toml index 3ea18392d..6d3b92238 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/croniter/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/croniter/METADATA.toml @@ -1 +1 @@ -version = "1.3.*" +version = "1.4.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi b/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi index 5290be31f..4f0925703 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/croniter/croniter/croniter.pyi @@ -1,24 +1,28 @@ import datetime -from _typeshed import ReadableBuffer, Unused +from _typeshed import Unused from collections import OrderedDict from collections.abc import Iterator from re import Match, Pattern from typing import Any, overload -from typing_extensions import Final, Literal, Self, TypeAlias +from typing_extensions import Final, Literal, Never, Self, TypeAlias _RetType: TypeAlias = type[float | datetime.datetime] +_Expressions: TypeAlias = list[str] # fixed-length list of 5 or 6 strings -step_search_re: Pattern[str] -only_int_re: Pattern[str] -star_or_int_re: Pattern[str] -special_dow_re: Pattern[str] -hash_expression_re: Pattern[str] -VALID_LEN_EXPRESSION: Final[list[int]] -ALPHAS: Final[dict[str, int]] -DOW_ALPHAS: Final[dict[str, int]] -MONTHS: Final[str] M_ALPHAS: Final[dict[str, int]] +DOW_ALPHAS: Final[dict[str, int]] +ALPHAS: Final[dict[str, int]] +step_search_re: Final[Pattern[str]] +only_int_re: Final[Pattern[str]] + WEEKDAYS: Final[str] +MONTHS: Final[str] +star_or_int_re: Final[Pattern[str]] +special_dow_re: Final[Pattern[str]] +re_star: Final[Pattern[str]] +hash_expression_re: Final[Pattern[str]] +VALID_LEN_EXPRESSION: Final[list[int]] +EXPRESSIONS: dict[tuple[str, bytes], _Expressions] def timedelta_to_seconds(td: datetime.timedelta) -> float: ... @@ -32,32 +36,44 @@ class CroniterNotAlphaError(CroniterError): ... def datetime_to_timestamp(d: datetime.datetime) -> float: ... class croniter(Iterator[Any]): - MONTHS_IN_YEAR: Literal[12] - RANGES: tuple[tuple[int, int], ...] - DAYS: tuple[ - Literal[31], - Literal[28], - Literal[31], - Literal[30], - Literal[31], - Literal[30], - Literal[31], - Literal[31], - Literal[30], - Literal[31], - Literal[30], - Literal[31], + MONTHS_IN_YEAR: Final[Literal[12]] + RANGES: Final[tuple[tuple[int, int], tuple[int, int], tuple[int, int], tuple[int, int], tuple[int, int], tuple[int, int]]] + DAYS: Final[ + tuple[ + Literal[31], + Literal[28], + Literal[31], + Literal[30], + Literal[31], + Literal[30], + Literal[31], + Literal[31], + Literal[30], + Literal[31], + Literal[30], + Literal[31], + ] ] - ALPHACONV: tuple[dict[str, Any], ...] - LOWMAP: tuple[dict[int, Any], ...] - LEN_MEANS_ALL: tuple[int, ...] - bad_length: str + ALPHACONV: Final[ + tuple[dict[Never, Never], dict[Never, Never], dict[str, str], dict[str, int], dict[str, int], dict[Never, Never]] + ] + LOWMAP: Final[ + tuple[dict[Never, Never], dict[Never, Never], dict[int, int], dict[int, int], dict[int, int], dict[Never, Never]] + ] + LEN_MEANS_ALL: Final[tuple[int, int, int, int, int, int]] + bad_length: Final[str] + tzinfo: datetime.tzinfo | None - cur: float - expanded: list[list[str]] + + # Initialized to None, but immediately set to a float. start_time: float dst_start_time: float - nth_weekday_of_month: dict[str, Any] + cur: float + + expanded: list[list[str]] + nth_weekday_of_month: dict[str, set[int]] + expressions: _Expressions + def __init__( self, expr_format: str, @@ -67,6 +83,7 @@ class croniter(Iterator[Any]): max_years_between_matches: int | None = None, is_prev: bool = False, hash_id: str | bytes | None = None, + implement_cron_bug: bool = False, ) -> None: ... # Most return value depend on ret_type, which can be passed in both as a method argument and as # a constructor argument. @@ -84,9 +101,9 @@ class croniter(Iterator[Any]): def iter(self, ret_type: _RetType | None = ...) -> Iterator[Any]: ... def is_leap(self, year: int) -> bool: ... @classmethod - def expand(cls, expr_format: str, hash_id: str | bytes | None = None) -> tuple[list[list[str]], dict[str, Any]]: ... + def expand(cls, expr_format: str, hash_id: bytes | None = None) -> tuple[list[list[str]], dict[str, set[int]]]: ... @classmethod - def is_valid(cls, expression: str, hash_id: str | bytes | None = None) -> bool: ... + def is_valid(cls, expression: str, hash_id: bytes | None = None) -> bool: ... @classmethod def match(cls, cron_expression: str, testdate: float | datetime.datetime | None, day_or: bool = True) -> bool: ... @@ -114,25 +131,19 @@ class HashExpander: ) -> int: ... @overload def do( - self, idx: int, hash_type: str, hash_id: ReadableBuffer, range_end: int | None = None, range_begin: int | None = None + self, idx: int, hash_type: str, hash_id: bytes, range_end: int | None = None, range_begin: int | None = None ) -> int: ... @overload def do( - self, - idx: int, - hash_type: str = "h", - *, - hash_id: ReadableBuffer, - range_end: int | None = None, - range_begin: int | None = None, + self, idx: int, hash_type: str = "h", *, hash_id: bytes, range_end: int | None = None, range_begin: int | None = None ) -> int: ... - def match(self, efl: Unused, idx: Unused, expr: str, hash_id: Unused = None, **kw: Unused) -> Match[str] | None: ... + def match(self, efl: Unused, idx: Unused, expr: str, hash_id: bytes | None = None, **kw: Unused) -> Match[str] | None: ... def expand( self, efl: object, idx: int, expr: str, - hash_id: ReadableBuffer | None = None, + hash_id: bytes | None = None, match: Match[str] | None | Literal[""] = "", **kw: object, ) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml index 745fc1a4b..6266d1691 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.6.5" +version = "23.7.10" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml index 8e38e593b..eeb399599 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml @@ -1,5 +1,6 @@ version = "1.3.*" partial_stub = true +obsolete_since = "1.3.3" # Released on 2023-06-26 [tool.stubtest] ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/inifile/inifile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/inifile/inifile.pyi index ec8c93226..a4cf997e8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/inifile/inifile.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/inifile/inifile.pyi @@ -45,7 +45,7 @@ class Dialect: def linesep(self) -> str | None: ... def get_actual_linesep(self) -> str: ... def get_strippable_lineseps(self) -> str: ... - def kv_serialize(self, key, val: str | None) -> str | None: ... + def kv_serialize(self, key: str, val: str | None) -> str | None: ... def escape(self, value: str, quote: str | None = ...) -> str: ... def unescape(self, value: str) -> str: ... def to_string(self, value: bool | float | str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi index fb74c59eb..19dbf0ae1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi @@ -1,15 +1,16 @@ from _typeshed import Incomplete -from collections.abc import Callable, Coroutine, Mapping, Sequence +from collections.abc import Callable, Coroutine, Iterable, Mapping, Sequence from contextlib import AbstractContextManager from types import TracebackType from typing import Any, Generic, TypeVar, overload -from typing_extensions import Literal, Self +from typing_extensions import Literal, ParamSpec, Self _F = TypeVar("_F", bound=Callable[..., Any]) _AF = TypeVar("_AF", bound=Callable[..., Coroutine[Any, Any, Any]]) _T = TypeVar("_T") _TT = TypeVar("_TT", bound=type[Any]) _R = TypeVar("_R") +_P = ParamSpec("_P") __all__ = ( "Mock", @@ -189,7 +190,7 @@ class _patch(Generic[_T]): unsafe: bool = False, ) -> None: ... def copy(self) -> _patch[_T]: ... - def __call__(self, func: Callable[..., _R]) -> Callable[..., _R]: ... + def __call__(self, func: Callable[_P, _R]) -> Callable[_P, _R]: ... def decorate_class(self, klass: _TT) -> _TT: ... def decorate_callable(self, func: _F) -> _F: ... def decorate_async_callable(self, func: _AF) -> _AF: ... @@ -315,7 +316,7 @@ class AsyncMockMixin(Base): def assert_awaited_with(_mock_self, *args: Any, **kwargs: Any) -> None: ... def assert_awaited_once_with(_mock_self, *args: Any, **kwargs: Any) -> None: ... def assert_any_await(_mock_self, *args: Any, **kwargs: Any) -> None: ... - def assert_has_awaits(_mock_self, calls: _CallList, any_order: bool = False) -> None: ... + def assert_has_awaits(_mock_self, calls: Iterable[_Call], any_order: bool = False) -> None: ... def assert_not_awaited(_mock_self) -> None: ... def reset_mock(self, *args: Any, **kwargs: Any) -> None: ... await_count: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/METADATA.toml index acdc22b5d..7892149a1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/METADATA.toml @@ -1 +1,4 @@ -version = "2.1.*" +version = "2.2.*" + +[tool.stubtest] +apt_dependencies = ["libmariadb-dev"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/__init__.pyi index 87fbcf2b2..887b28de1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/__init__.pyi @@ -1,4 +1,4 @@ -from typing import Any +from _typeshed import Incomplete from MySQLdb import connections as connections, constants as constants, converters as converters, cursors as cursors from MySQLdb._mysql import ( @@ -33,17 +33,17 @@ threadsafety: int apilevel: str paramstyle: str -class DBAPISet(frozenset[Any]): +class DBAPISet(frozenset[Incomplete]): def __eq__(self, other): ... -STRING: Any -BINARY: Any -NUMBER: Any -DATE: Any -TIME: Any -TIMESTAMP: Any -DATETIME: Any -ROWID: Any +STRING: Incomplete +BINARY: Incomplete +NUMBER: Incomplete +DATE: Incomplete +TIME: Incomplete +TIMESTAMP: Incomplete +DATETIME: Incomplete +ROWID: Incomplete def Binary(x): ... def Connect(*args, **kwargs): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/_mysql.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/_mysql.pyi index b1dded226..4718cce16 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/_mysql.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/_mysql.pyi @@ -1,9 +1,9 @@ import builtins -from typing import Any +from _typeshed import Incomplete import MySQLdb._exceptions -version_info: tuple[Any, ...] +version_info: tuple[Incomplete, ...] class DataError(MySQLdb._exceptions.DatabaseError): ... class DatabaseError(MySQLdb._exceptions.Error): ... @@ -18,70 +18,72 @@ class ProgrammingError(MySQLdb._exceptions.DatabaseError): ... class Warning(builtins.Warning, MySQLdb._exceptions.MySQLError): ... class connection: - client_flag: Any - converter: Any - open: Any - port: Any - server_capabilities: Any + client_flag: Incomplete + converter: Incomplete + open: Incomplete + port: Incomplete + server_capabilities: Incomplete def __init__(self, *args, **kwargs) -> None: ... - def _get_native_connection(self, *args, **kwargs) -> Any: ... - def affected_rows(self, *args, **kwargs) -> Any: ... - def autocommit(self, on) -> Any: ... - def change_user(self, *args, **kwargs) -> Any: ... - def character_set_name(self, *args, **kwargs) -> Any: ... - def close(self, *args, **kwargs) -> Any: ... - def commit(self, *args, **kwargs) -> Any: ... - def dump_debug_info(self, *args, **kwargs) -> Any: ... - def errno(self, *args, **kwargs) -> Any: ... - def error(self, *args, **kwargs) -> Any: ... - def escape(self, obj, dict) -> Any: ... - def escape_string(self, s) -> Any: ... - def field_count(self, *args, **kwargs) -> Any: ... - def fileno(self, *args, **kwargs) -> Any: ... - def get_autocommit(self, *args, **kwargs) -> Any: ... - def get_character_set_info(self, *args, **kwargs) -> Any: ... - def get_host_info(self, *args, **kwargs) -> Any: ... - def get_proto_info(self, *args, **kwargs) -> Any: ... - def get_server_info(self, *args, **kwargs) -> Any: ... - def info(self, *args, **kwargs) -> Any: ... - def insert_id(self, *args, **kwargs) -> Any: ... - def kill(self, *args, **kwargs) -> Any: ... - def next_result(self) -> Any: ... - def ping(self) -> Any: ... - def query(self, query) -> Any: ... - def read_query_result(self, *args, **kwargs) -> Any: ... - def rollback(self, *args, **kwargs) -> Any: ... - def select_db(self, *args, **kwargs) -> Any: ... - def send_query(self, *args, **kwargs) -> Any: ... - def set_character_set(self, charset) -> Any: ... - def set_server_option(self, option) -> Any: ... - def shutdown(self, *args, **kwargs) -> Any: ... - def sqlstate(self, *args, **kwargs) -> Any: ... - def stat(self, *args, **kwargs) -> Any: ... - def store_result(self, *args, **kwargs) -> Any: ... - def string_literal(self, obj) -> Any: ... - def thread_id(self, *args, **kwargs) -> Any: ... - def use_result(self, *args, **kwargs) -> Any: ... - def warning_count(self, *args, **kwargs) -> Any: ... + def _get_native_connection(self, *args, **kwargs): ... + def affected_rows(self, *args, **kwargs): ... + def autocommit(self, on): ... + def change_user(self, *args, **kwargs): ... + def character_set_name(self, *args, **kwargs): ... + def close(self, *args, **kwargs): ... + def commit(self, *args, **kwargs): ... + def dump_debug_info(self, *args, **kwargs): ... + def errno(self, *args, **kwargs): ... + def error(self, *args, **kwargs): ... + def escape(self, obj, dict): ... + def escape_string(self, s): ... + def field_count(self, *args, **kwargs): ... + def fileno(self, *args, **kwargs): ... + def get_autocommit(self, *args, **kwargs): ... + def get_character_set_info(self, *args, **kwargs): ... + def get_host_info(self, *args, **kwargs): ... + def get_proto_info(self, *args, **kwargs): ... + def get_server_info(self, *args, **kwargs): ... + def info(self, *args, **kwargs): ... + def insert_id(self, *args, **kwargs): ... + def kill(self, *args, **kwargs): ... + def next_result(self): ... + def ping(self): ... + def query(self, query): ... + def read_query_result(self, *args, **kwargs): ... + def rollback(self, *args, **kwargs): ... + def select_db(self, *args, **kwargs): ... + def send_query(self, *args, **kwargs): ... + def set_character_set(self, charset: str) -> None: ... + def set_server_option(self, option): ... + def shutdown(self, *args, **kwargs): ... + def sqlstate(self, *args, **kwargs): ... + def stat(self, *args, **kwargs): ... + def store_result(self, *args, **kwargs): ... + def string_literal(self, obj): ... + def thread_id(self, *args, **kwargs): ... + def use_result(self, *args, **kwargs): ... + def discard_result(self) -> None: ... + def warning_count(self, *args, **kwargs): ... def __delattr__(self, __name: str) -> None: ... def __setattr__(self, __name: str, __value) -> None: ... class result: - converter: Any - has_next: Any + converter: Incomplete + has_next: Incomplete def __init__(self, *args, **kwargs) -> None: ... - def data_seek(self, n) -> Any: ... - def describe(self, *args, **kwargs) -> Any: ... - def fetch_row(self, *args, **kwargs) -> Any: ... - def field_flags(self, *args, **kwargs) -> Any: ... - def num_fields(self, *args, **kwargs) -> Any: ... - def num_rows(self, *args, **kwargs) -> Any: ... + def data_seek(self, n): ... + def describe(self, *args, **kwargs): ... + def fetch_row(self, *args, **kwargs): ... + def discard(self) -> None: ... + def field_flags(self, *args, **kwargs): ... + def num_fields(self, *args, **kwargs): ... + def num_rows(self, *args, **kwargs): ... def __delattr__(self, __name: str) -> None: ... def __setattr__(self, __name: str, __value) -> None: ... -def connect(*args, **kwargs) -> Any: ... -def debug(*args, **kwargs) -> Any: ... -def escape(obj, dict) -> Any: ... -def escape_string(s) -> Any: ... -def get_client_info() -> Any: ... -def string_literal(obj) -> Any: ... +def connect(*args, **kwargs): ... +def debug(*args, **kwargs): ... +def escape(obj, dict): ... +def escape_string(s): ... +def get_client_info(): ... +def string_literal(obj): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/connections.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/connections.pyi index 327e76137..0a4f8965f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/connections.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/connections.pyi @@ -1,6 +1,8 @@ +from _typeshed import Incomplete +from re import Pattern from types import TracebackType from typing import Any -from typing_extensions import Self +from typing_extensions import LiteralString, Self, TypeAlias from . import _mysql, cursors from ._exceptions import ( @@ -16,16 +18,21 @@ from ._exceptions import ( Warning as Warning, ) -re_numeric_part: Any +# Any kind of object that can be passed to Connection.literal(). +# The allowed types depend on the defined encoders, but the following +# types are always allowed. +_Literal: TypeAlias = str | bytearray | bytes | tuple[_Literal, ...] | list[_Literal] | Any + +re_numeric_part: Pattern[str] def numeric_part(s): ... class Connection(_mysql.connection): default_cursor: type[cursors.Cursor] cursorclass: type[cursors.BaseCursor] - encoders: Any + encoders: Incomplete encoding: str - messages: Any + messages: Incomplete def __init__(self, *args, **kwargs) -> None: ... def __enter__(self) -> Self: ... def __exit__( @@ -34,10 +41,10 @@ class Connection(_mysql.connection): def autocommit(self, on: bool) -> None: ... def cursor(self, cursorclass: type[cursors.BaseCursor] | None = None): ... def query(self, query) -> None: ... - def literal(self, o): ... + def literal(self, o: _Literal) -> bytes: ... def begin(self) -> None: ... def warning_count(self): ... - def set_character_set(self, charset) -> None: ... + def set_character_set(self, charset: LiteralString, collation: LiteralString | None = None) -> None: ... def set_sql_mode(self, sql_mode) -> None: ... def show_warnings(self): ... Warning: type[BaseException] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/converters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/converters.pyi index d350ee383..510e795cf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/converters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/converters.pyi @@ -1,5 +1,5 @@ import array -from typing import Any +from _typeshed import Incomplete from MySQLdb._exceptions import ProgrammingError as ProgrammingError from MySQLdb._mysql import string_literal as string_literal @@ -15,7 +15,7 @@ from MySQLdb.times import ( TimeDelta_or_None as TimeDelta_or_None, ) -NoneType: Any +NoneType: Incomplete ArrayType = array.array def Bool2Str(s, d): ... @@ -27,4 +27,4 @@ def Thing2Literal(o, d): ... def Decimal2Literal(o, d): ... def array2Str(o, d): ... -conversions: Any +conversions: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/cursors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/cursors.pyi index a739d1228..f572c38e1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/cursors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/MySQLdb/cursors.pyi @@ -1,7 +1,13 @@ from _typeshed import Incomplete -from typing import Any +from collections.abc import Iterable +from re import Pattern +from typing_extensions import LiteralString, TypeAlias -RE_INSERT_VALUES: Any +from .connections import _Literal + +_Arguments: TypeAlias = dict[str, _Literal] | dict[bytes, _Literal] | Iterable[_Literal] + +RE_INSERT_VALUES: Pattern[str] class BaseCursor: from ._exceptions import ( @@ -18,14 +24,14 @@ class BaseCursor: Warning as Warning, ) - max_stmt_length: Any - connection: Any - description: Any - description_flags: Any + max_stmt_length: Incomplete + connection: Incomplete + description: Incomplete + description_flags: Incomplete rowcount: int arraysize: int - lastrowid: Any - rownumber: Any + lastrowid: Incomplete + rownumber: Incomplete def __init__(self, connection) -> None: ... def close(self) -> None: ... def __enter__(self): ... @@ -34,12 +40,13 @@ class BaseCursor: def setinputsizes(self, *args) -> None: ... def setoutputsizes(self, *args) -> None: ... def execute(self, query, args: Incomplete | None = None): ... - def executemany(self, query: str, args: list[Any]) -> int: ... + def mogrify(self, query: str | bytes, args: _Arguments | None = None) -> str: ... + def executemany(self, query: LiteralString, args: Iterable[_Arguments]) -> int | None: ... def callproc(self, procname, args=()): ... def __iter__(self): ... class CursorStoreResultMixIn: - rownumber: Any + rownumber: Incomplete def fetchone(self): ... def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... @@ -47,13 +54,13 @@ class CursorStoreResultMixIn: def __iter__(self): ... class CursorUseResultMixIn: - rownumber: Any + rownumber: Incomplete def fetchone(self): ... def fetchmany(self, size: Incomplete | None = None): ... def fetchall(self): ... def __iter__(self): ... def next(self): ... - __next__: Any + __next__ = next class CursorTupleRowsMixIn: ... class CursorDictRowsMixIn: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi index 1360e48ed..6e62f1e88 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/base.pyi @@ -96,13 +96,13 @@ class Convertible(Typed[_T, _N]): # str | Blip @overload def __set__( - self: Convertible[str, bool] | Convertible[Blip, bool], + self: Convertible[str, _N] | Convertible[Blip, _N], instance: Serialisable | Strict, value: object, # Not[None] when _N = False ) -> None: ... # bool @overload - def __set__(self: Convertible[bool, bool], instance: Serialisable | Strict, value: _ConvertibleToBool) -> None: ... + def __set__(self: Convertible[bool, _N], instance: Serialisable | Strict, value: _ConvertibleToBool) -> None: ... # int @overload def __set__( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi index 7a68e909d..816ea570f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi @@ -74,14 +74,14 @@ class NestedValue(Nested[_T], Convertible[_T, _N]): # type: ignore[misc] # str | Blip @overload def __set__( - self: NestedValue[str, bool] | NestedValue[Blip, bool], + self: NestedValue[str, _N] | NestedValue[Blip, _N], instance: Serialisable | Strict, value: object, # Not[None] when _N = False ) -> None: ... # bool @overload def __set__( - self: NestedValue[bool, bool], + self: NestedValue[bool, _N], instance: Serialisable | Strict, value: _HasTagAndGet[_ConvertibleToBool] | _ConvertibleToBool, ) -> None: ... @@ -145,21 +145,21 @@ class NestedText(NestedValue[_T, _N]): # str @overload def __set__( # type: ignore[misc] # Incompatible return type because of NoReturn - self: NestedValue[str, bool], instance: Serialisable | Strict, value: object # Not[None] when _N = False + self: NestedText[str, _N], instance: Serialisable | Strict, value: object # Not[None] when _N = False ) -> None: ... # int @overload def __set__( - self: NestedValue[int, Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToInt | None + self: NestedText[int, Literal[True]], instance: Serialisable | Strict, value: _ConvertibleToInt | None ) -> None: ... @overload - def __set__(self: NestedValue[int, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToInt) -> None: ... + def __set__(self: NestedText[int, Literal[False]], instance: Serialisable | Strict, value: _ConvertibleToInt) -> None: ... # If expected type (_T) is not str, it's impossible to use an Element as the value @overload - def __set__(self: NestedValue[_T, Literal[True]], instance: Serialisable | Strict, value: _HasTagAndGet[Any]) -> NoReturn: ... + def __set__(self: NestedText[_T, Literal[True]], instance: Serialisable | Strict, value: _HasTagAndGet[Any]) -> NoReturn: ... # Anything else @overload - def __set__(self: NestedValue[_T, Literal[True]], instance: Serialisable | Strict, value: _T | int | Any | None) -> None: ... + def __set__(self: NestedText[_T, Literal[True]], instance: Serialisable | Strict, value: _T | int | Any | None) -> None: ... def from_tree(self, node: _HasTagAndText) -> str: ... # type: ignore[override] def to_tree(self, tagname: str | None = None, value: Incomplete | None = None, namespace: str | None = None) -> Element: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/METADATA.toml new file mode 100644 index 000000000..ef6637ec5 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/METADATA.toml @@ -0,0 +1 @@ +version = "4.8.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/ANSI.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/ANSI.pyi new file mode 100644 index 000000000..4185ba6fa --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/ANSI.pyi @@ -0,0 +1,43 @@ +from _typeshed import Incomplete + +from . import screen + +def DoEmit(fsm) -> None: ... +def DoStartNumber(fsm) -> None: ... +def DoBuildNumber(fsm) -> None: ... +def DoBackOne(fsm) -> None: ... +def DoBack(fsm) -> None: ... +def DoDownOne(fsm) -> None: ... +def DoDown(fsm) -> None: ... +def DoForwardOne(fsm) -> None: ... +def DoForward(fsm) -> None: ... +def DoUpReverse(fsm) -> None: ... +def DoUpOne(fsm) -> None: ... +def DoUp(fsm) -> None: ... +def DoHome(fsm) -> None: ... +def DoHomeOrigin(fsm) -> None: ... +def DoEraseDown(fsm) -> None: ... +def DoErase(fsm) -> None: ... +def DoEraseEndOfLine(fsm) -> None: ... +def DoEraseLine(fsm) -> None: ... +def DoEnableScroll(fsm) -> None: ... +def DoCursorSave(fsm) -> None: ... +def DoCursorRestore(fsm) -> None: ... +def DoScrollRegion(fsm) -> None: ... +def DoMode(fsm) -> None: ... +def DoLog(fsm) -> None: ... + +class term(screen.screen): + def __init__(self, r: int = 24, c: int = 80, *args, **kwargs) -> None: ... + +class ANSI(term): + state: Incomplete + def __init__(self, r: int = 24, c: int = 80, *args, **kwargs) -> None: ... + def process(self, c) -> None: ... + def process_list(self, l) -> None: ... + def write(self, s) -> None: ... + def flush(self) -> None: ... + def write_ch(self, ch) -> None: ... + def do_sgr(self, fsm) -> None: ... + def do_decsca(self, fsm) -> None: ... + def do_modecrap(self, fsm) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/FSM.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/FSM.pyi new file mode 100644 index 000000000..7a4a2d3ad --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/FSM.pyi @@ -0,0 +1,39 @@ +from _typeshed import Incomplete + +class ExceptionFSM(Exception): + value: Incomplete + def __init__(self, value) -> None: ... + +class FSM: + state_transitions: Incomplete + state_transitions_any: Incomplete + default_transition: Incomplete + input_symbol: Incomplete + initial_state: Incomplete + current_state: Incomplete + next_state: Incomplete + action: Incomplete + memory: Incomplete + def __init__(self, initial_state, memory: Incomplete | None = None) -> None: ... + def reset(self) -> None: ... + def add_transition( + self, input_symbol, state, action: Incomplete | None = None, next_state: Incomplete | None = None + ) -> None: ... + def add_transition_list( + self, list_input_symbols, state, action: Incomplete | None = None, next_state: Incomplete | None = None + ) -> None: ... + def add_transition_any(self, state, action: Incomplete | None = None, next_state: Incomplete | None = None) -> None: ... + def set_default_transition(self, action, next_state) -> None: ... + def get_transition(self, input_symbol, state): ... + def process(self, input_symbol) -> None: ... + def process_list(self, input_symbols) -> None: ... + +PY3: Incomplete + +def BeginBuildNumber(fsm) -> None: ... +def BuildNumber(fsm) -> None: ... +def EndBuildNumber(fsm) -> None: ... +def DoOperator(fsm) -> None: ... +def DoEqual(fsm) -> None: ... +def Error(fsm) -> None: ... +def main() -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/__init__.pyi new file mode 100644 index 000000000..bd7f1ddac --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/__init__.pyi @@ -0,0 +1,20 @@ +from .exceptions import EOF as EOF, TIMEOUT as TIMEOUT, ExceptionPexpect as ExceptionPexpect +from .pty_spawn import spawn as spawn, spawnu as spawnu +from .run import run as run, runu as runu +from .utils import split_command_line as split_command_line, which as which + +__version__: str +__revision__: str +__all__ = [ + "ExceptionPexpect", + "EOF", + "TIMEOUT", + "spawn", + "spawnu", + "run", + "runu", + "which", + "split_command_line", + "__version__", + "__revision__", +] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/_async.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/_async.pyi new file mode 100644 index 000000000..eb2d537cf --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/_async.pyi @@ -0,0 +1,17 @@ +import asyncio +from _typeshed import Incomplete + +async def expect_async(expecter, timeout: Incomplete | None = None): ... +async def repl_run_command_async(repl, cmdlines, timeout: int = -1): ... + +class PatternWaiter(asyncio.Protocol): + transport: Incomplete + expecter: Incomplete + fut: Incomplete + def set_expecter(self, expecter) -> None: ... + def found(self, result) -> None: ... + def error(self, exc) -> None: ... + def connection_made(self, transport) -> None: ... + def data_received(self, data) -> None: ... + def eof_received(self) -> None: ... + def connection_lost(self, exc) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/exceptions.pyi new file mode 100644 index 000000000..5dc1790c7 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/exceptions.pyi @@ -0,0 +1,6 @@ +class ExceptionPexpect(Exception): + def __init__(self, value: str) -> None: ... + def get_trace(self): ... + +class EOF(ExceptionPexpect): ... +class TIMEOUT(ExceptionPexpect): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/expect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/expect.pyi new file mode 100644 index 000000000..e7eeabf92 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/expect.pyi @@ -0,0 +1,38 @@ +from _typeshed import Incomplete +from io import BytesIO, StringIO + +from .exceptions import EOF, TIMEOUT +from .spawnbase import SpawnBase + +class searcher_string: + eof_index: int + timeout_index: int + longest_string: int + def __init__(self, strings) -> None: ... + match: Incomplete + start: Incomplete + end: Incomplete + def search(self, buffer, freshlen, searchwindowsize: Incomplete | None = None): ... + +class searcher_re: + eof_index: int + timeout_index: int + def __init__(self, patterns) -> None: ... + start: Incomplete + match: Incomplete + end: Incomplete + def search(self, buffer, freshlen: int, searchwindowsize: int | None = None): ... + +class Expecter: + spawn: BytesIO | StringIO + searcher: searcher_re | searcher_string + searchwindowsize: int | None + lookback: searcher_string | searcher_re | int | None + def __init__(self, spawn: SpawnBase, searcher: searcher_re | searcher_string, searchwindowsize: int = -1) -> None: ... + def do_search(self, window: str, freshlen: int): ... + def existing_data(self): ... + def new_data(self, data: Incomplete): ... + def eof(self, err: Incomplete | None = None) -> int | EOF: ... + def timeout(self, err: object | None = None) -> int | TIMEOUT: ... + def errored(self) -> None: ... + def expect_loop(self, timeout: int = -1): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/fdpexpect.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/fdpexpect.pyi new file mode 100644 index 000000000..6b2b25181 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/fdpexpect.pyi @@ -0,0 +1,32 @@ +from _typeshed import Incomplete + +from .spawnbase import SpawnBase + +class fdspawn(SpawnBase): + args: Incomplete + command: Incomplete + child_fd: Incomplete + own_fd: bool + closed: bool + name: Incomplete + use_poll: Incomplete + def __init__( + self, + fd, + args: Incomplete | None = None, + timeout: int = 30, + maxread: int = 2000, + searchwindowsize: Incomplete | None = None, + logfile: Incomplete | None = None, + encoding: Incomplete | None = None, + codec_errors: str = "strict", + use_poll: bool = False, + ) -> None: ... + def close(self) -> None: ... + def isalive(self) -> bool: ... + def terminate(self, force: bool = False) -> None: ... + def send(self, s: str | bytes) -> bytes: ... + def sendline(self, s: str | bytes) -> bytes: ... + def write(self, s) -> None: ... + def writelines(self, sequence) -> None: ... + def read_nonblocking(self, size: int = 1, timeout: int | None = -1) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/popen_spawn.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/popen_spawn.pyi new file mode 100644 index 000000000..6927a4e3c --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/popen_spawn.pyi @@ -0,0 +1,34 @@ +from _typeshed import Incomplete + +from .spawnbase import SpawnBase + +class PopenSpawn(SpawnBase): + crlf: Incomplete + proc: Incomplete + pid: Incomplete + closed: bool + def __init__( + self, + cmd, + timeout: int = 30, + maxread: int = 2000, + searchwindowsize: Incomplete | None = None, + logfile: Incomplete | None = None, + cwd: Incomplete | None = None, + env: Incomplete | None = None, + encoding: Incomplete | None = None, + codec_errors: str = "strict", + preexec_fn: Incomplete | None = None, + ) -> None: ... + flag_eof: bool + def read_nonblocking(self, size, timeout): ... + def write(self, s) -> None: ... + def writelines(self, sequence) -> None: ... + def send(self, s): ... + def sendline(self, s: str = ""): ... + exitstatus: Incomplete + signalstatus: Incomplete + terminated: bool + def wait(self): ... + def kill(self, sig) -> None: ... + def sendeof(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/pty_spawn.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/pty_spawn.pyi new file mode 100644 index 000000000..50e8f8541 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/pty_spawn.pyi @@ -0,0 +1,73 @@ +from _typeshed import Incomplete +from collections.abc import Callable +from io import TextIOWrapper +from os import _Environ + +from .spawnbase import SpawnBase + +PY3: Incomplete + +class spawn(SpawnBase): + use_native_pty_fork: bool + STDIN_FILENO: Incomplete + STDOUT_FILENO: Incomplete + STDERR_FILENO: Incomplete + str_last_chars: int + env: Incomplete + name: str + def __init__( + self, + command: str, + args: list[str] = [], + timeout: int = 30, + maxread: int = 2000, + searchwindowsize: int | None = None, + logfile: TextIOWrapper | None = None, + cwd: str | bytes | None = None, + env: _Environ[Incomplete] | None = None, + ignore_sighup: bool = False, + echo: bool = True, + preexec_fn: Callable[[Incomplete], Incomplete] | None = None, + encoding: str | None = None, + codec_errors: str = "strict", + dimensions: tuple[int, int] | None = None, + use_poll: bool = False, + ) -> None: ... + child_fd: int + closed: bool + def close(self, force: bool = True) -> None: ... + def isatty(self): ... + def waitnoecho(self, timeout: int = -1): ... + def getecho(self): ... + def setecho(self, state: bool): ... + def read_nonblocking(self, size: int = 1, timeout: int | None = -1) -> bytes: ... + def write(self, s: str | bytes) -> None: ... + def writelines(self, sequence: list[str | bytes]) -> None: ... + def send(self, s: str | bytes): ... + def sendline(self, s: str | bytes = ""): ... + def sendcontrol(self, char: str): ... + def sendeof(self) -> None: ... + def sendintr(self) -> None: ... + @property + def flag_eof(self) -> bool: ... + @flag_eof.setter + def flag_eof(self, value: bool) -> None: ... + def eof(self) -> bool: ... + def terminate(self, force: bool = False): ... + status: int | None + exitstatus: bool | None + signalstatus: int | None + terminated: bool + def wait(self) -> int: ... + def isalive(self) -> bool: ... + def kill(self, sig: int) -> None: ... + def getwinsize(self) -> tuple[int, int]: ... + def setwinsize(self, rows, cols) -> None: ... + def interact( + self, + escape_character="\x1d", + input_filter: Callable[[Incomplete], Incomplete] | None = None, + output_filter: Callable[[Incomplete], Incomplete] | None = None, + ) -> None: ... + +def spawnu(*args: str, **kwargs: str): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/pxssh.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/pxssh.pyi new file mode 100644 index 000000000..26d2721fd --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/pxssh.pyi @@ -0,0 +1,59 @@ +from _typeshed import Incomplete + +from pexpect import ExceptionPexpect, spawn + +class ExceptionPxssh(ExceptionPexpect): ... + +class pxssh(spawn): + name: str + UNIQUE_PROMPT: str + PROMPT: Incomplete + PROMPT_SET_SH: str + PROMPT_SET_CSH: str + SSH_OPTS: Incomplete + force_password: bool + debug_command_string: Incomplete + options: Incomplete + def __init__( + self, + timeout: int = 30, + maxread: int = 2000, + searchwindowsize: Incomplete | None = None, + logfile: Incomplete | None = None, + cwd: Incomplete | None = None, + env: Incomplete | None = None, + ignore_sighup: bool = True, + echo: bool = True, + options={}, + encoding: Incomplete | None = None, + codec_errors: str = "strict", + debug_command_string: bool = False, + use_poll: bool = False, + ) -> None: ... + def levenshtein_distance(self, a, b): ... + def try_read_prompt(self, timeout_multiplier): ... + def sync_original_prompt(self, sync_multiplier: float = 1.0): ... + def login( + self, + server, + username: Incomplete | None = None, + password: str = "", + terminal_type: str = "ansi", + original_prompt: str = "[#$]", + login_timeout: int = 10, + port: Incomplete | None = None, + auto_prompt_reset: bool = True, + ssh_key: Incomplete | None = None, + quiet: bool = True, + sync_multiplier: int = 1, + check_local_ip: bool = True, + password_regex: str = "(?i)(?:password:)|(?:passphrase for key)", + ssh_tunnels={}, + spawn_local_ssh: bool = True, + sync_original_prompt: bool = True, + ssh_config: Incomplete | None = None, + cmd: str = "ssh", + ): ... + def logout(self) -> None: ... + def prompt(self, timeout: int = -1): ... + def set_unique_prompt(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/replwrap.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/replwrap.pyi new file mode 100644 index 000000000..a4cadba3d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/replwrap.pyi @@ -0,0 +1,25 @@ +from _typeshed import Incomplete + +PY3: Incomplete +basestring = str +PEXPECT_PROMPT: str +PEXPECT_CONTINUATION_PROMPT: str + +class REPLWrapper: + child: Incomplete + prompt: Incomplete + continuation_prompt: Incomplete + def __init__( + self, + cmd_or_spawn, + orig_prompt, + prompt_change, + new_prompt="[PEXPECT_PROMPT>", + continuation_prompt="[PEXPECT_PROMPT+", + extra_init_cmd: Incomplete | None = None, + ) -> None: ... + def set_prompt(self, orig_prompt, prompt_change) -> None: ... + def run_command(self, command, timeout: int = -1, async_: bool = False): ... + +def python(command: str = "python"): ... +def bash(command: str = "bash"): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/run.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/run.pyi new file mode 100644 index 000000000..44b4c9cd3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/run.pyi @@ -0,0 +1,24 @@ +from _typeshed import Incomplete + +def run( + command, + timeout: int = 30, + withexitstatus: bool = False, + events: Incomplete | None = None, + extra_args: Incomplete | None = None, + logfile: Incomplete | None = None, + cwd: Incomplete | None = None, + env: Incomplete | None = None, + **kwargs, +): ... +def runu( + command, + timeout: int = 30, + withexitstatus: bool = False, + events: Incomplete | None = None, + extra_args: Incomplete | None = None, + logfile: Incomplete | None = None, + cwd: Incomplete | None = None, + env: Incomplete | None = None, + **kwargs, +): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/screen.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/screen.pyi new file mode 100644 index 000000000..dffc81008 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/screen.pyi @@ -0,0 +1,80 @@ +from _typeshed import Incomplete + +NUL: int +ENQ: int +BEL: int +BS: int +HT: int +LF: int +VT: int +FF: int +CR: int +SO: int +SI: int +XON: int +XOFF: int +CAN: int +SUB: int +ESC: int +DEL: int +SPACE: str +PY3: Incomplete +unicode = str + +def constrain(n, min, max): ... + +class screen: + rows: Incomplete + cols: Incomplete + encoding: Incomplete + encoding_errors: Incomplete + decoder: Incomplete + cur_r: int + cur_c: int + cur_saved_r: int + cur_saved_c: int + scroll_row_start: int + scroll_row_end: Incomplete + w: Incomplete + def __init__(self, r: int = 24, c: int = 80, encoding: str = "latin-1", encoding_errors: str = "replace") -> None: ... + def dump(self): ... + def pretty(self): ... + def fill(self, ch=" ") -> None: ... + def fill_region(self, rs, cs, re, ce, ch=" ") -> None: ... + def cr(self) -> None: ... + def lf(self) -> None: ... + def crlf(self) -> None: ... + def newline(self) -> None: ... + def put_abs(self, r, c, ch) -> None: ... + def put(self, ch) -> None: ... + def insert_abs(self, r, c, ch) -> None: ... + def insert(self, ch) -> None: ... + def get_abs(self, r, c): ... + def get(self) -> None: ... + def get_region(self, rs, cs, re, ce): ... + def cursor_constrain(self) -> None: ... + def cursor_home(self, r: int = 1, c: int = 1) -> None: ... + def cursor_back(self, count: int = 1) -> None: ... + def cursor_down(self, count: int = 1) -> None: ... + def cursor_forward(self, count: int = 1) -> None: ... + def cursor_up(self, count: int = 1) -> None: ... + def cursor_up_reverse(self) -> None: ... + def cursor_force_position(self, r, c) -> None: ... + def cursor_save(self) -> None: ... + def cursor_unsave(self) -> None: ... + def cursor_save_attrs(self) -> None: ... + def cursor_restore_attrs(self) -> None: ... + def scroll_constrain(self) -> None: ... + def scroll_screen(self) -> None: ... + def scroll_screen_rows(self, rs, re) -> None: ... + def scroll_down(self) -> None: ... + def scroll_up(self) -> None: ... + def erase_end_of_line(self) -> None: ... + def erase_start_of_line(self) -> None: ... + def erase_line(self) -> None: ... + def erase_down(self) -> None: ... + def erase_up(self) -> None: ... + def erase_screen(self) -> None: ... + def set_tab(self) -> None: ... + def clear_tab(self) -> None: ... + def clear_all_tabs(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/spawnbase.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/spawnbase.pyi new file mode 100644 index 000000000..0efeb591e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/spawnbase.pyi @@ -0,0 +1,79 @@ +from _typeshed import Incomplete +from collections.abc import Callable +from re import Pattern +from typing import AnyStr + +PY3: bool +text_type: Callable[[Incomplete], Incomplete] + +class _NullCoder: + @staticmethod + def encode(b: str, final: bool = False): ... + @staticmethod + def decode(b: str, final: bool = False): ... + +class SpawnBase: + encoding: Incomplete + pid: Incomplete + flag_eof: bool + stdin: Incomplete + stdout: Incomplete + stderr: Incomplete + searcher: Incomplete + ignorecase: bool + before: Incomplete + after: Incomplete + match: Incomplete + match_index: Incomplete + terminated: bool + exitstatus: Incomplete + signalstatus: Incomplete + status: Incomplete + child_fd: int + timeout: Incomplete + delimiter: Incomplete + logfile: Incomplete + logfile_read: Incomplete + logfile_send: Incomplete + maxread: Incomplete + searchwindowsize: Incomplete + delaybeforesend: float + delayafterclose: float + delayafterterminate: float + delayafterread: float + softspace: bool + name: Incomplete + closed: bool + codec_errors: Incomplete + string_type: Incomplete + buffer_type: Incomplete + crlf: bytes + allowed_string_types: Incomplete + linesep: Incomplete + write_to_stdout: Incomplete + async_pw_transport: Incomplete + def __init__( + self, + timeout: int = 30, + maxread: int = 2000, + searchwindowsize: Incomplete | None = None, + logfile: Incomplete | None = None, + encoding: Incomplete | None = None, + codec_errors: str = "strict", + ) -> None: ... + buffer: Incomplete + def read_nonblocking(self, size: int = 1, timeout: int | None = None) -> bytes: ... + def compile_pattern_list(self, patterns) -> list[Pattern[AnyStr]]: ... + def expect(self, pattern, timeout: int = -1, searchwindowsize: int = -1, async_: bool = False, **kw) -> int: ... + def expect_list(self, pattern_list, timeout: int = -1, searchwindowsize: int = -1, async_: bool = False, **kw) -> int: ... + def expect_exact(self, pattern_list, timeout: int = -1, searchwindowsize: int = -1, async_: bool = False, **kw) -> int: ... + def expect_loop(self, searcher, timeout: int = -1, searchwindowsize: int = -1) -> int: ... + def read(self, size: int = -1) -> bytes: ... + def readline(self, size: int = -1) -> bytes: ... + def __iter__(self): ... + def readlines(self, sizehint: int = -1) -> list[str]: ... + def fileno(self): ... + def flush(self) -> None: ... + def isatty(self): ... + def __enter__(self): ... + def __exit__(self, etype, evalue, tb) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/utils.pyi new file mode 100644 index 000000000..8394e1d23 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/pexpect/utils.pyi @@ -0,0 +1,9 @@ +from _typeshed import Incomplete + +string_types: Incomplete + +def is_executable_file(path): ... +def which(filename, env: Incomplete | None = None): ... +def split_command_line(command_line): ... +def select_ignore_interrupts(iwtd, owtd, ewtd, timeout: Incomplete | None = None): ... +def poll_ignore_interrupts(fds, timeout: Incomplete | None = None): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/crypto.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/crypto.pyi index d89bfa256..4482412ec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/crypto.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/OpenSSL/crypto.pyi @@ -16,6 +16,8 @@ FILETYPE_TEXT: int TYPE_RSA: int TYPE_DSA: int +TYPE_DH: int +TYPE_EC: int class _EllipticCurve: def __init__(self, lib: Incomplete | None, nid: int, name: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml index 0e0e0a47e..41fc4b3ec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml @@ -1,2 +1,2 @@ -version = "5.12.*" +version = "5.13.*" requires = ["types-setuptools"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/api.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/api.pyi index e6fe6cf8a..2a3dc4fc2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/api.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/api.pyi @@ -10,7 +10,7 @@ from typing_extensions import Final, Literal, TypeAlias from PyInstaller.building import _PyiBlockCipher from PyInstaller.building.build_main import Analysis -from PyInstaller.building.datastruct import TOC, Target, _TOCTuple +from PyInstaller.building.datastruct import Target, _TOCTuple from PyInstaller.building.splash import Splash from PyInstaller.utils.win32.versioninfo import VSVersionInfo from PyInstaller.utils.win32.winmanifest import Manifest @@ -51,14 +51,14 @@ class PYZ(Target): name: str cipher: _PyiBlockCipher dependencies: list[_TOCTuple] # type: ignore[assignment] - toc: TOC + toc: list[_TOCTuple] code_dict: dict[str, CodeType] - def __init__(self, *tocs: TOC, name: str | None = None, cipher: _PyiBlockCipher = None) -> None: ... + def __init__(self, *tocs: Iterable[_TOCTuple], name: str | None = None, cipher: _PyiBlockCipher = None) -> None: ... def assemble(self) -> None: ... class PKG(Target): xformdict: ClassVar[dict[str, str]] - toc: TOC + toc: list[_TOCTuple] cdict: Mapping[str, bool] name: str exclude_binaries: bool @@ -70,7 +70,7 @@ class PKG(Target): entitlements_file: FileDescriptorOrPath | None def __init__( self, - toc: TOC, + toc: Iterable[_TOCTuple], name: str | None = None, cdict: Mapping[str, bool] | None = None, exclude_binaries: bool = False, @@ -107,10 +107,10 @@ class EXE(Target): entitlements_file: FileDescriptorOrPath | None upx: bool pkgname: str - toc: TOC + toc: list[_TOCTuple] pkg: PKG - dependencies: TOC - exefiles: TOC + dependencies: list[_TOCTuple] + exefiles: list[_TOCTuple] def __init__( self, *args: Iterable[_TOCTuple] | PYZ | Splash, @@ -150,7 +150,7 @@ class COLLECT(Target): entitlements_file: FileDescriptorOrPath | None upx_binaries: bool name: str - toc: TOC + toc: list[_TOCTuple] def __init__( self, *args: Iterable[_TOCTuple] | EXE, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/build_main.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/build_main.pyi index b4a484a0a..914585926 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/build_main.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/build_main.pyi @@ -3,7 +3,7 @@ from collections.abc import Iterable from typing import Any from PyInstaller.building import _PyiBlockCipher -from PyInstaller.building.datastruct import TOC, Target +from PyInstaller.building.datastruct import Target, _TOCTuple # Referenced in: https://pyinstaller.org/en/stable/hooks.html#PyInstaller.utils.hooks.get_hook_config # Not to be imported during runtime, but is the type reference for hooks and analysis configuration @@ -14,21 +14,21 @@ class Analysis(Target): hooksconfig: dict[str, dict[str, object]] # https://pyinstaller.org/en/stable/spec-files.html#spec-file-operation # https://pyinstaller.org/en/stable/feature-notes.html - pure: TOC - zipped_data: TOC + pure: list[_TOCTuple] + zipped_data: list[_TOCTuple] # https://pyinstaller.org/en/stable/spec-files.html#giving-run-time-python-options # https://pyinstaller.org/en/stable/spec-files.html#the-splash-target - scripts: TOC + scripts: list[_TOCTuple] # https://pyinstaller.org/en/stable/feature-notes.html#practical-examples - binaries: TOC - zipfiles: TOC - datas: TOC + binaries: list[_TOCTuple] + zipfiles: list[_TOCTuple] + datas: list[_TOCTuple] def __init__( self, scripts: Iterable[StrPath], pathex: Incomplete | None = None, - binaries: Incomplete | None = None, - datas: Incomplete | None = None, + binaries: Iterable[tuple[StrPath, StrPath]] | None = None, + datas: Iterable[tuple[StrPath, StrPath]] | None = None, hiddenimports: Incomplete | None = None, hookspath: Incomplete | None = None, hooksconfig: dict[str, dict[str, Any]] | None = None, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi index 090a115e0..2adfb61e7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/datastruct.pyi @@ -24,11 +24,11 @@ class Target: invcnum: ClassVar[int] tocfilename: LiteralString tocbasename: LiteralString - dependencies: TOC + dependencies: list[_TOCTuple] def __init__(self) -> None: ... def __postinit__(self) -> None: ... -class Tree(Target, TOC): +class Tree(Target, list[_TOCTuple]): root: str | None prefix: str | None excludes: Sequence[str] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/splash.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/splash.pyi index e5cc63681..b28649cbc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/splash.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/building/splash.pyi @@ -1,7 +1,6 @@ from _typeshed import Incomplete, StrPath -from collections.abc import Iterable -from PyInstaller.building.datastruct import TOC, Target, _TOCTuple +from PyInstaller.building.datastruct import Target, _TOCTuple splash_requirements: list[str] @@ -24,8 +23,8 @@ class Splash(Target): uses_tkinter: Incomplete script: Incomplete splash_requirements: Incomplete - binaries: TOC - def __init__(self, image_file: StrPath, binaries: TOC, datas: Iterable[_TOCTuple], **kwargs: Incomplete) -> None: ... + binaries: list[_TOCTuple] + def __init__(self, image_file: StrPath, binaries: list[_TOCTuple], datas: list[_TOCTuple], **kwargs: Incomplete) -> None: ... def assemble(self) -> None: ... def test_tk_version(self) -> None: ... def generate_script(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/compat.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/compat.pyi index 664a9b2df..b06ad3bd0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/compat.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/PyInstaller/compat.pyi @@ -14,6 +14,7 @@ is_py38: Final[bool] is_py39: Final[bool] is_py310: Final[bool] is_py311: Final[bool] +is_py312: Final[bool] is_win: Final[bool] is_win_10: Final[bool] is_win_wine: Final[bool] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml index 423ba5838..81e550e9f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.5.5" +version = "4.6.0" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0", "types-pyOpenSSL"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi index 575e833dd..2c8b4235a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/client.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete, Unused -from collections.abc import AsyncIterator, Awaitable, Callable, Iterable, Mapping, MutableMapping, Sequence +from collections.abc import AsyncIterator, Awaitable, Callable, Generator, Iterable, Mapping, MutableMapping, Sequence from datetime import datetime, timedelta from types import TracebackType from typing import Any, ClassVar, Generic, NoReturn, Protocol, overload @@ -67,7 +67,7 @@ class Redis(AbstractRedis, RedisModuleCommands, AsyncCoreCommands[_StrType], Asy redis_connect_func: ConnectCallbackT | None = None, credential_provider: CredentialProvider | None = None, ) -> None: ... - def __await__(self): ... + def __await__(self) -> Generator[Any, None, Self]: ... async def initialize(self) -> Self: ... def set_response_callback(self, command: str, callback: ResponseCallbackT): ... def load_external_module(self, funcname, func) -> None: ... @@ -200,7 +200,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): async def __aexit__( self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None ) -> None: ... - def __await__(self): ... + def __await__(self) -> Generator[Any, None, Self]: ... def __len__(self) -> int: ... def __bool__(self) -> bool: ... async def reset(self) -> None: ... # type: ignore[override] @@ -588,7 +588,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): self, name, fields, - id: str = "*", + id: str | int | bytes | memoryview = "*", maxlen=None, approximate: bool = True, nomkstream: bool = False, @@ -827,7 +827,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> Any: ... - def zrank(self, name: _Key, value: _Value) -> Any: ... # type: ignore[override] + def zrank(self, name: _Key, value: _Value, withscore: bool = False) -> Any: ... # type: ignore[override] def zrem(self, name: _Key, *values: _Value) -> Any: ... # type: ignore[override] def zremrangebylex(self, name: _Key, min: _Value, max: _Value) -> Any: ... # type: ignore[override] def zremrangebyrank(self, name: _Key, min: int, max: int) -> Any: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi index 09c9ebe1d..441a64a56 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/connection.pyi @@ -42,7 +42,6 @@ ExceptionMappingT: TypeAlias = Mapping[str, type[Exception] | Mapping[str, type[ class BaseParser: EXCEPTION_CLASSES: ExceptionMappingT def __init__(self, socket_read_size: int) -> None: ... - def __del__(self) -> None: ... @classmethod def parse_error(cls, response: str) -> ResponseError: ... def on_disconnect(self) -> None: ... @@ -81,8 +80,8 @@ class Connection: username: Any client_name: Any password: Any - socket_timeout: Any - socket_connect_timeout: Any + socket_timeout: float | None + socket_connect_timeout: float | None socket_keepalive: Any socket_keepalive_options: Any socket_type: Any @@ -122,7 +121,6 @@ class Connection: credential_provider: CredentialProvider | None = None, ) -> None: ... def repr_pieces(self): ... - def __del__(self) -> None: ... @property def is_connected(self): ... def register_connect_callback(self, callback) -> None: ... @@ -196,8 +194,6 @@ class UnixDomainSocketConnection(Connection): username: Any client_name: Any password: Any - socket_timeout: Any - socket_connect_timeout: Any retry_on_timeout: Any retry_on_error: list[type[RedisError]] retry: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi index 78adae9a2..dd9a92114 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/asyncio/sentinel.pyi @@ -17,11 +17,13 @@ class SentinelManagedConnection(Connection): async def connect_to(self, address) -> None: ... async def connect(self): ... @overload # type: ignore[override] - async def read_response(self, *, timeout: float) -> Incomplete | None: ... + async def read_response(self, *, timeout: float, disconnect_on_error: bool = True) -> Incomplete | None: ... @overload - async def read_response(self, disable_decoding: bool, timeout: float) -> Incomplete | None: ... + async def read_response( + self, disable_decoding: bool, timeout: float, *, disconnect_on_error: bool = True + ) -> Incomplete | None: ... @overload - async def read_response(self, disable_decoding: bool = False, timeout: None = None): ... + async def read_response(self, disable_decoding: bool = False, timeout: None = None, *, disconnect_on_error: bool = True): ... class SentinelManagedSSLConnection(SentinelManagedConnection, SSLConnection): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi index e61515d02..b8079fa3d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/client.pyi @@ -681,7 +681,7 @@ class Pipeline(Redis[_StrType], Generic[_StrType]): withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> Pipeline[_StrType]: ... - def zrank(self, name: _Key, value: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] + def zrank(self, name: _Key, value: _Value, withscore: bool = False) -> Pipeline[_StrType]: ... # type: ignore[override] def zrem(self, name: _Key, *values: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def zremrangebylex(self, name: _Key, min: _Value, max: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] def zremrangebyrank(self, name: _Key, min: _Value, max: _Value) -> Pipeline[_StrType]: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi index 9e31fd302..9f96fe591 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/commands/core.pyi @@ -864,7 +864,7 @@ class StreamCommands: self, name, fields, - id: str = "*", + id: str | int | bytes | memoryview = "*", maxlen=None, approximate: bool = True, nomkstream: bool = False, @@ -930,7 +930,7 @@ class AsyncStreamCommands: self, name, fields, - id: str = "*", + id: str | int | bytes | memoryview = "*", maxlen=None, approximate: bool = True, nomkstream: bool = False, @@ -1178,7 +1178,7 @@ class SortedSetCommands(Generic[_StrType]): withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> list[_StrType]: ... - def zrank(self, name: _Key, value: _Value) -> int | None: ... + def zrank(self, name: _Key, value: _Value, withscore: bool = False) -> int | None: ... def zrem(self, name: _Key, *values: _Value) -> int: ... def zremrangebylex(self, name: _Key, min: _Value, max: _Value) -> int: ... def zremrangebyrank(self, name: _Key, min: int, max: int) -> int: ... @@ -1381,7 +1381,7 @@ class AsyncSortedSetCommands(Generic[_StrType]): withscores: bool = False, score_cast_func: Callable[[_StrType], Any] = ..., ) -> list[_StrType]: ... - async def zrank(self, name: _Key, value: _Value) -> int | None: ... + async def zrank(self, name: _Key, value: _Value, withscore: bool = False) -> int | None: ... async def zrem(self, name: _Key, *values: _Value) -> int: ... async def zremrangebylex(self, name: _Key, min: _Value, max: _Value) -> int: ... async def zremrangebyrank(self, name: _Key, min: int, max: int) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi index 8ede46969..5a8ae2195 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/connection.pyi @@ -89,6 +89,8 @@ class AbstractConnection: credential_provider: CredentialProvider | None password: str | None username: str | None + socket_timeout: float | None + socket_connect_timeout: float | None retry_on_timeout: bool retry_on_error: list[type[Exception]] retry: Retry @@ -101,6 +103,8 @@ class AbstractConnection: self, db: int = 0, password: str | None = None, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, retry_on_timeout: bool = False, retry_on_error: list[type[Exception]] = ..., encoding: str = "utf-8", @@ -137,8 +141,6 @@ class AbstractConnection: class Connection(AbstractConnection): host: str port: int - socket_timeout: float | None - socket_connect_timeout: float | None socket_keepalive: bool socket_keepalive_options: Mapping[str, int | str] socket_type: int @@ -146,14 +148,14 @@ class Connection(AbstractConnection): self, host: str = "localhost", port: int = 6379, - socket_timeout: float | None = None, - socket_connect_timeout: float | None = None, socket_keepalive: bool = False, socket_keepalive_options: Mapping[str, int | str] | None = None, socket_type: int = 0, *, db: int = 0, password: str | None = None, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, retry_on_timeout: bool = False, retry_on_error: list[type[Exception]] = ..., encoding: str = "utf-8", @@ -225,14 +227,14 @@ class SSLConnection(Connection): class UnixDomainSocketConnection(AbstractConnection): path: str - socket_timeout: float | None def __init__( self, path: str = "", - socket_timeout: float | None = None, *, db: int = 0, password: str | None = None, + socket_timeout: float | None = None, + socket_connect_timeout: float | None = None, retry_on_timeout: bool = False, retry_on_error: list[type[Exception]] = ..., encoding: str = "utf-8", diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi index 133f58763..3b51430ce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/redis/sentinel.pyi @@ -16,11 +16,11 @@ class SlaveNotFoundError(ConnectionError): ... class SentinelManagedConnection(Connection): connection_pool: SentinelConnectionPool - def __init__(self, **kwargs) -> None: ... + def __init__(self, *, connection_pool: SentinelConnectionPool, **kwargs) -> None: ... def connect_to(self, address: _AddressAndPort) -> None: ... def connect(self) -> None: ... # The result can be either `str | bytes` or `list[str | bytes]` - def read_response(self, disable_decoding: bool = False) -> Any: ... # type: ignore[override] + def read_response(self, disable_decoding: bool = False, *, disconnect_on_error: bool = False) -> Any: ... class SentinelManagedSSLConnection(SentinelManagedConnection, SSLConnection): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml index c3f5535f7..16bd13a4d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml @@ -1,4 +1,4 @@ -version = "67.8.*" +version = "68.0.*" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/archive_util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/archive_util.pyi new file mode 100644 index 000000000..38458fc0e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/archive_util.pyi @@ -0,0 +1,20 @@ +def make_archive( + base_name: str, + format: str, + root_dir: str | None = ..., + base_dir: str | None = ..., + verbose: int = ..., + dry_run: int = ..., + owner: str | None = ..., + group: str | None = ..., +) -> str: ... +def make_tarball( + base_name: str, + base_dir: str, + compress: str | None = ..., + verbose: int = ..., + dry_run: int = ..., + owner: str | None = ..., + group: str | None = ..., +) -> str: ... +def make_zipfile(base_name: str, base_dir: str, verbose: int = ..., dry_run: int = ...) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/ccompiler.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/ccompiler.pyi new file mode 100644 index 000000000..96a756bb2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/ccompiler.pyi @@ -0,0 +1,152 @@ +from collections.abc import Callable +from typing import Any +from typing_extensions import TypeAlias + +_Macro: TypeAlias = tuple[str] | tuple[str, str | None] + +def gen_lib_options( + compiler: CCompiler, library_dirs: list[str], runtime_library_dirs: list[str], libraries: list[str] +) -> list[str]: ... +def gen_preprocess_options(macros: list[_Macro], include_dirs: list[str]) -> list[str]: ... +def get_default_compiler(osname: str | None = ..., platform: str | None = ...) -> str: ... +def new_compiler( + plat: str | None = ..., compiler: str | None = ..., verbose: int = ..., dry_run: int = ..., force: int = ... +) -> CCompiler: ... +def show_compilers() -> None: ... + +class CCompiler: + dry_run: bool + force: bool + verbose: bool + output_dir: str | None + macros: list[_Macro] + include_dirs: list[str] + libraries: list[str] + library_dirs: list[str] + runtime_library_dirs: list[str] + objects: list[str] + def __init__(self, verbose: int = ..., dry_run: int = ..., force: int = ...) -> None: ... + def add_include_dir(self, dir: str) -> None: ... + def set_include_dirs(self, dirs: list[str]) -> None: ... + def add_library(self, libname: str) -> None: ... + def set_libraries(self, libnames: list[str]) -> None: ... + def add_library_dir(self, dir: str) -> None: ... + def set_library_dirs(self, dirs: list[str]) -> None: ... + def add_runtime_library_dir(self, dir: str) -> None: ... + def set_runtime_library_dirs(self, dirs: list[str]) -> None: ... + def define_macro(self, name: str, value: str | None = ...) -> None: ... + def undefine_macro(self, name: str) -> None: ... + def add_link_object(self, object: str) -> None: ... + def set_link_objects(self, objects: list[str]) -> None: ... + def detect_language(self, sources: str | list[str]) -> str | None: ... + def find_library_file(self, dirs: list[str], lib: str, debug: bool = ...) -> str | None: ... + def has_function( + self, + funcname: str, + includes: list[str] | None = ..., + include_dirs: list[str] | None = ..., + libraries: list[str] | None = ..., + library_dirs: list[str] | None = ..., + ) -> bool: ... + def library_dir_option(self, dir: str) -> str: ... + def library_option(self, lib: str) -> str: ... + def runtime_library_dir_option(self, dir: str) -> str: ... + def set_executables(self, **args: str) -> None: ... + def compile( + self, + sources: list[str], + output_dir: str | None = ..., + macros: _Macro | None = ..., + include_dirs: list[str] | None = ..., + debug: bool = ..., + extra_preargs: list[str] | None = ..., + extra_postargs: list[str] | None = ..., + depends: list[str] | None = ..., + ) -> list[str]: ... + def create_static_lib( + self, + objects: list[str], + output_libname: str, + output_dir: str | None = ..., + debug: bool = ..., + target_lang: str | None = ..., + ) -> None: ... + def link( + self, + target_desc: str, + objects: list[str], + output_filename: str, + output_dir: str | None = ..., + libraries: list[str] | None = ..., + library_dirs: list[str] | None = ..., + runtime_library_dirs: list[str] | None = ..., + export_symbols: list[str] | None = ..., + debug: bool = ..., + extra_preargs: list[str] | None = ..., + extra_postargs: list[str] | None = ..., + build_temp: str | None = ..., + target_lang: str | None = ..., + ) -> None: ... + def link_executable( + self, + objects: list[str], + output_progname: str, + output_dir: str | None = ..., + libraries: list[str] | None = ..., + library_dirs: list[str] | None = ..., + runtime_library_dirs: list[str] | None = ..., + debug: bool = ..., + extra_preargs: list[str] | None = ..., + extra_postargs: list[str] | None = ..., + target_lang: str | None = ..., + ) -> None: ... + def link_shared_lib( + self, + objects: list[str], + output_libname: str, + output_dir: str | None = ..., + libraries: list[str] | None = ..., + library_dirs: list[str] | None = ..., + runtime_library_dirs: list[str] | None = ..., + export_symbols: list[str] | None = ..., + debug: bool = ..., + extra_preargs: list[str] | None = ..., + extra_postargs: list[str] | None = ..., + build_temp: str | None = ..., + target_lang: str | None = ..., + ) -> None: ... + def link_shared_object( + self, + objects: list[str], + output_filename: str, + output_dir: str | None = ..., + libraries: list[str] | None = ..., + library_dirs: list[str] | None = ..., + runtime_library_dirs: list[str] | None = ..., + export_symbols: list[str] | None = ..., + debug: bool = ..., + extra_preargs: list[str] | None = ..., + extra_postargs: list[str] | None = ..., + build_temp: str | None = ..., + target_lang: str | None = ..., + ) -> None: ... + def preprocess( + self, + source: str, + output_file: str | None = ..., + macros: list[_Macro] | None = ..., + include_dirs: list[str] | None = ..., + extra_preargs: list[str] | None = ..., + extra_postargs: list[str] | None = ..., + ) -> None: ... + def executable_filename(self, basename: str, strip_dir: int = ..., output_dir: str = ...) -> str: ... + def library_filename(self, libname: str, lib_type: str = ..., strip_dir: int = ..., output_dir: str = ...) -> str: ... + def object_filenames(self, source_filenames: list[str], strip_dir: int = ..., output_dir: str = ...) -> list[str]: ... + def shared_object_filename(self, basename: str, strip_dir: int = ..., output_dir: str = ...) -> str: ... + def execute(self, func: Callable[..., object], args: tuple[Any, ...], msg: str | None = ..., level: int = ...) -> None: ... + def spawn(self, cmd: list[str]) -> None: ... + def mkpath(self, name: str, mode: int = ...) -> None: ... + def move_file(self, src: str, dst: str) -> str: ... + def announce(self, msg: str, level: int = ...) -> None: ... + def warn(self, msg: str) -> None: ... + def debug_print(self, msg: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/dep_util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/dep_util.pyi new file mode 100644 index 000000000..929d6ffd0 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/dep_util.pyi @@ -0,0 +1,3 @@ +def newer(source: str, target: str) -> bool: ... +def newer_pairwise(sources: list[str], targets: list[str]) -> list[tuple[str, str]]: ... +def newer_group(sources: list[str], target: str, missing: str = ...) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/sysconfig.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/sysconfig.pyi new file mode 100644 index 000000000..c82da4323 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/sysconfig.pyi @@ -0,0 +1,14 @@ +from collections.abc import Mapping + +from setuptools._distutils.ccompiler import CCompiler + +PREFIX: str +EXEC_PREFIX: str + +def get_config_var(name: str) -> int | str | None: ... +def get_config_vars(*args: str) -> Mapping[str, int | str]: ... +def get_config_h_filename() -> str: ... +def get_makefile_filename() -> str: ... +def get_python_inc(plat_specific: bool = ..., prefix: str | None = ...) -> str: ... +def get_python_lib(plat_specific: bool = ..., standard_lib: bool = ..., prefix: str | None = ...) -> str: ... +def customize_compiler(compiler: CCompiler) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/util.pyi new file mode 100644 index 000000000..6790712ff --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/_distutils/util.pyi @@ -0,0 +1,30 @@ +from collections.abc import Callable, Mapping +from typing import Any +from typing_extensions import Literal + +def get_host_platform() -> str: ... +def get_platform() -> str: ... +def get_macosx_target_ver_from_syscfg(): ... +def get_macosx_target_ver(): ... +def split_version(s: str) -> list[int]: ... +def convert_path(pathname: str) -> str: ... +def change_root(new_root: str, pathname: str) -> str: ... +def check_environ() -> None: ... +def subst_vars(s: str, local_vars: Mapping[str, str]) -> None: ... +def grok_environment_error(exc: object, prefix: str = ...) -> str: ... +def split_quoted(s: str) -> list[str]: ... +def execute( + func: Callable[..., object], args: tuple[Any, ...], msg: str | None = ..., verbose: bool = ..., dry_run: bool = ... +) -> None: ... +def strtobool(val: str) -> Literal[0, 1]: ... +def byte_compile( + py_files: list[str], + optimize: int = ..., + force: bool = ..., + prefix: str | None = ..., + base_dir: str | None = ..., + verbose: bool = ..., + dry_run: bool = ..., + direct: bool | None = ..., +) -> None: ... +def rfc822_escape(header: str) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi index 37c4eae99..b5a455a8b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/easy_install.pyi @@ -1,6 +1,7 @@ from _typeshed import Incomplete -from collections.abc import Iterator -from typing import Any +from collections.abc import Iterable, Iterator +from typing import ClassVar +from typing_extensions import Self, TypedDict from pkg_resources import Environment @@ -11,46 +12,46 @@ __all__ = ["easy_install", "PthDistributions", "extract_wininst_cfg", "get_exe_p class easy_install(Command): description: str command_consumes_arguments: bool - user_options: Any - boolean_options: Any - negative_opt: Any - create_index: Any + user_options: Incomplete + boolean_options: Incomplete + negative_opt: Incomplete + create_index: Incomplete user: int - zip_ok: Any - install_dir: Any - index_url: Any - find_links: Any - build_directory: Any - args: Any - optimize: Any - upgrade: Any - editable: Any - root: Any - version: Any - install_purelib: Any - install_platlib: Any - install_headers: Any - install_lib: Any - install_scripts: Any - install_data: Any - install_base: Any - install_platbase: Any - install_userbase: Any - install_usersite: Any - no_find_links: Any - package_index: Any - pth_file: Any - site_dirs: Any - installed_projects: Any - verbose: Any + zip_ok: Incomplete + install_dir: Incomplete + index_url: Incomplete + find_links: Incomplete + build_directory: Incomplete + args: Incomplete + optimize: Incomplete + upgrade: Incomplete + editable: Incomplete + root: Incomplete + version: Incomplete + install_purelib: Incomplete + install_platlib: Incomplete + install_headers: Incomplete + install_lib: Incomplete + install_scripts: Incomplete + install_data: Incomplete + install_base: Incomplete + install_platbase: Incomplete + install_userbase: Incomplete + install_usersite: Incomplete + no_find_links: Incomplete + package_index: Incomplete + pth_file: Incomplete + site_dirs: Incomplete + installed_projects: Incomplete + verbose: Incomplete def initialize_options(self) -> None: ... def delete_blockers(self, blockers) -> None: ... - config_vars: Any - script_dir: Any - all_site_dirs: Any - shadow_path: Any - local_index: Any - outputs: Any + config_vars: Incomplete + script_dir: Incomplete + all_site_dirs: Incomplete + shadow_path: Incomplete + local_index: Incomplete + outputs: Incomplete def finalize_options(self) -> None: ... def expand_basedirs(self) -> None: ... def expand_dirs(self) -> None: ... @@ -88,17 +89,17 @@ class easy_install(Command): def unpack_and_compile(self, egg_path, destination): ... def byte_compile(self, to_compile) -> None: ... def create_home_path(self) -> None: ... - INSTALL_SCHEMES: Any - DEFAULT_SCHEME: Any + INSTALL_SCHEMES: Incomplete + DEFAULT_SCHEME: Incomplete def extract_wininst_cfg(dist_filename): ... def get_exe_prefixes(exe_filename): ... class PthDistributions(Environment): dirty: bool - filename: Any - sitedirs: Any - basedir: Any + filename: Incomplete + sitedirs: Incomplete + basedir: Incomplete paths: list[str] def __init__(self, filename, sitedirs=()) -> None: ... def save(self) -> None: ... @@ -107,16 +108,20 @@ class PthDistributions(Environment): def make_relative(self, path): ... class RewritePthDistributions(PthDistributions): - prelude: Any - postlude: Any + prelude: Incomplete + postlude: Incomplete + +class _SplitArgs(TypedDict, total=False): + comments: bool + posix: bool class CommandSpec(list[str]): - options: Any - split_args: Any + options: list[Incomplete] + split_args: ClassVar[_SplitArgs] @classmethod def best(cls) -> type[CommandSpec]: ... @classmethod - def from_param(cls, param) -> CommandSpec: ... + def from_param(cls, param: str | Self | Iterable[str] | None) -> Self: ... @classmethod def from_environment(cls) -> CommandSpec: ... @classmethod @@ -124,31 +129,22 @@ class CommandSpec(list[str]): def install_options(self, script_text: str) -> None: ... def as_header(self) -> str: ... -class WindowsCommandSpec(CommandSpec): - split_args: Any +class WindowsCommandSpec(CommandSpec): ... class ScriptWriter: - template: Any - command_spec_class: Any - @classmethod - def get_script_args(cls, dist, executable: Incomplete | None = None, wininst: bool = False) -> Iterator[tuple[str, str]]: ... - @classmethod - def get_script_header(cls, script_text, executable: Incomplete | None = None, wininst: bool = False) -> str: ... + template: ClassVar[str] + command_spec_class: ClassVar[type[CommandSpec]] @classmethod def get_args(cls, dist, header: Incomplete | None = None) -> Iterator[tuple[str, str]]: ... @classmethod - def get_writer(cls, force_windows: bool) -> type[ScriptWriter]: ... - @classmethod def best(cls) -> type[ScriptWriter]: ... @classmethod - def get_header(cls, script_text: str = "", executable: Incomplete | None = None) -> str: ... + def get_header(cls, script_text: str = "", executable: str | CommandSpec | Iterable[str] | None = None) -> str: ... class WindowsScriptWriter(ScriptWriter): - command_spec_class: Any - @classmethod - def get_writer(cls): ... + command_spec_class: ClassVar[type[WindowsCommandSpec]] @classmethod - def best(cls): ... + def best(cls) -> type[WindowsScriptWriter]: ... class WindowsExecutableLauncherWriter(WindowsScriptWriter): ... class EasyInstallDeprecationWarning(SetuptoolsDeprecationWarning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi index 9685a9270..39d7499ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/setuptools/command/egg_info.pyi @@ -1,4 +1,4 @@ -from typing import Any +from _typeshed import Incomplete from typing_extensions import Final from .. import Command, SetuptoolsDeprecationWarning @@ -10,8 +10,8 @@ PY_MAJOR: Final[str] def translate_pattern(glob): ... class InfoCommon: - tag_build: Any - tag_date: Any + tag_build: Incomplete + tag_date: Incomplete @property def name(self): ... def tagged_version(self): ... @@ -21,13 +21,13 @@ class InfoCommon: class egg_info(InfoCommon, Command): description: str - user_options: Any - boolean_options: Any - negative_opt: Any - egg_base: Any - egg_name: Any - egg_info: Any - egg_version: Any + user_options: Incomplete + boolean_options: Incomplete + negative_opt: Incomplete + egg_base: Incomplete + egg_name: Incomplete + egg_info: Incomplete + egg_version: Incomplete broken_egg_info: bool def initialize_options(self) -> None: ... @property @@ -40,9 +40,8 @@ class egg_info(InfoCommon, Command): def write_file(self, what, filename, data) -> None: ... def delete_file(self, filename) -> None: ... def run(self) -> None: ... - filelist: Any + filelist: Incomplete def find_sources(self) -> None: ... - def check_broken_egg_info(self) -> None: ... class FileList(_FileList): def __init__(self, warn=None, debug_print=None, ignore_egg_info_dir: bool = False) -> None: ... @@ -66,7 +65,7 @@ class manifest_maker(sdist): force_manifest: int def initialize_options(self) -> None: ... def finalize_options(self) -> None: ... - filelist: Any + filelist: Incomplete def run(self) -> None: ... def write_manifest(self) -> None: ... def warn(self, msg) -> None: ... @@ -83,6 +82,5 @@ def write_toplevel_names(cmd, basename, filename) -> None: ... def overwrite_arg(cmd, basename, filename) -> None: ... def write_arg(cmd, basename, filename, force: bool = False) -> None: ... def write_entries(cmd, basename, filename) -> None: ... -def get_pkg_info_revision(): ... class EggInfoDeprecationWarning(SetuptoolsDeprecationWarning): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/METADATA.toml index 29511ee7d..fa7f7796a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/METADATA.toml @@ -1 +1,2 @@ version = "0.8.*" +obsolete_since = "0.9.0" # Released on 2023-06-22 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/__init__.pyi index f37d1806c..106d2efbc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/__init__.pyi @@ -62,6 +62,7 @@ from stripe.api_resources.review import Review as Review from stripe.api_resources.search_result_object import SearchResultObject as SearchResultObject from stripe.api_resources.setup_attempt import SetupAttempt as SetupAttempt from stripe.api_resources.setup_intent import SetupIntent as SetupIntent +from stripe.api_resources.shipping_rate import ShippingRate as ShippingRate from stripe.api_resources.sku import SKU as SKU from stripe.api_resources.source import Source as Source from stripe.api_resources.source_transaction import SourceTransaction as SourceTransaction diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/shipping_rate.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/shipping_rate.pyi new file mode 100644 index 000000000..d479b51b2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/shipping_rate.pyi @@ -0,0 +1,9 @@ +from stripe import api_requestor as api_requestor +from stripe.api_resources.abstract import ( + CreateableAPIResource as CreateableAPIResource, + ListableAPIResource as ListableAPIResource, + UpdateableAPIResource as UpdateableAPIResource, +) + +class ShippingRate(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): + OBJECT_NAME: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/METADATA.toml index 1de68d543..55fd0f338 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/METADATA.toml @@ -1,2 +1,2 @@ -version = "1.5.*" +version = "1.6.*" requires = ["types-tree-sitter"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/METADATA.toml deleted file mode 100644 index 97ceca8aa..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/METADATA.toml +++ /dev/null @@ -1 +0,0 @@ -version = "1.5.*" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/__init__.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast27.pyi b/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast27.pyi deleted file mode 100644 index 4d6fec1a6..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast27.pyi +++ /dev/null @@ -1,337 +0,0 @@ -from _typeshed import ReadableBuffer -from collections.abc import Iterator -from typing import Any -from typing_extensions import TypeAlias - -class NodeVisitor: - def visit(self, node: AST) -> Any: ... - def generic_visit(self, node: AST) -> None: ... - -class NodeTransformer(NodeVisitor): - def generic_visit(self, node: AST) -> None: ... - -def parse(source: str | ReadableBuffer, filename: str | ReadableBuffer = "", mode: str = "exec") -> AST: ... -def copy_location(new_node: AST, old_node: AST) -> AST: ... -def dump(node: AST, annotate_fields: bool = True, include_attributes: bool = False) -> str: ... -def fix_missing_locations(node: AST) -> AST: ... -def get_docstring(node: AST, clean: bool = True) -> str | bytes | None: ... -def increment_lineno(node: AST, n: int = 1) -> AST: ... -def iter_child_nodes(node: AST) -> Iterator[AST]: ... -def iter_fields(node: AST) -> Iterator[tuple[str, Any]]: ... -def literal_eval(node_or_string: str | AST) -> Any: ... -def walk(node: AST) -> Iterator[AST]: ... - -PyCF_ONLY_AST: int - -# ast classes - -_Identifier: TypeAlias = str - -class AST: - _attributes: tuple[str, ...] - _fields: tuple[str, ...] - def __init__(self, *args: Any, **kwargs: Any) -> None: ... - -class mod(AST): ... - -class Module(mod): - body: list[stmt] - type_ignores: list[TypeIgnore] - -class Interactive(mod): - body: list[stmt] - -class Expression(mod): - body: expr - -class FunctionType(mod): - argtypes: list[expr] - returns: expr - -class Suite(mod): - body: list[stmt] - -class stmt(AST): - lineno: int - col_offset: int - -class FunctionDef(stmt): - name: _Identifier - args: arguments - body: list[stmt] - decorator_list: list[expr] - type_comment: str | None - -class ClassDef(stmt): - name: _Identifier - bases: list[expr] - body: list[stmt] - decorator_list: list[expr] - -class Return(stmt): - value: expr | None - -class Delete(stmt): - targets: list[expr] - -class Assign(stmt): - targets: list[expr] - value: expr - type_comment: str | None - -class AugAssign(stmt): - target: expr - op: operator - value: expr - -class Print(stmt): - dest: expr | None - values: list[expr] - nl: bool - -class For(stmt): - target: expr - iter: expr - body: list[stmt] - orelse: list[stmt] - type_comment: str | None - -class While(stmt): - test: expr - body: list[stmt] - orelse: list[stmt] - -class If(stmt): - test: expr - body: list[stmt] - orelse: list[stmt] - -class With(stmt): - context_expr: expr - optional_vars: expr | None - body: list[stmt] - type_comment: str | None - -class Raise(stmt): - type: expr | None - inst: expr | None - tback: expr | None - -class TryExcept(stmt): - body: list[stmt] - handlers: list[ExceptHandler] - orelse: list[stmt] - -class TryFinally(stmt): - body: list[stmt] - finalbody: list[stmt] - -class Assert(stmt): - test: expr - msg: expr | None - -class Import(stmt): - names: list[alias] - -class ImportFrom(stmt): - module: _Identifier | None - names: list[alias] - level: int | None - -class Exec(stmt): - body: expr - globals: expr | None - locals: expr | None - -class Global(stmt): - names: list[_Identifier] - -class Expr(stmt): - value: expr - -class Pass(stmt): ... -class Break(stmt): ... -class Continue(stmt): ... -class slice(AST): ... - -_Slice: TypeAlias = slice # this lets us type the variable named 'slice' below - -class Slice(slice): - lower: expr | None - upper: expr | None - step: expr | None - -class ExtSlice(slice): - dims: list[slice] - -class Index(slice): - value: expr - -class Ellipsis(slice): ... - -class expr(AST): - lineno: int - col_offset: int - -class BoolOp(expr): - op: boolop - values: list[expr] - -class BinOp(expr): - left: expr - op: operator - right: expr - -class UnaryOp(expr): - op: unaryop - operand: expr - -class Lambda(expr): - args: arguments - body: expr - -class IfExp(expr): - test: expr - body: expr - orelse: expr - -class Dict(expr): - keys: list[expr] - values: list[expr] - -class Set(expr): - elts: list[expr] - -class ListComp(expr): - elt: expr - generators: list[comprehension] - -class SetComp(expr): - elt: expr - generators: list[comprehension] - -class DictComp(expr): - key: expr - value: expr - generators: list[comprehension] - -class GeneratorExp(expr): - elt: expr - generators: list[comprehension] - -class Yield(expr): - value: expr | None - -class Compare(expr): - left: expr - ops: list[cmpop] - comparators: list[expr] - -class Call(expr): - func: expr - args: list[expr] - keywords: list[keyword] - starargs: expr | None - kwargs: expr | None - -class Repr(expr): - value: expr - -class Num(expr): - n: int | float | complex - -class Str(expr): - s: str | bytes - kind: str - -class Attribute(expr): - value: expr - attr: _Identifier - ctx: expr_context - -class Subscript(expr): - value: expr - slice: _Slice - ctx: expr_context - -class Name(expr): - id: _Identifier - ctx: expr_context - -class List(expr): - elts: list[expr] - ctx: expr_context - -class Tuple(expr): - elts: list[expr] - ctx: expr_context - -class expr_context(AST): ... -class AugLoad(expr_context): ... -class AugStore(expr_context): ... -class Del(expr_context): ... -class Load(expr_context): ... -class Param(expr_context): ... -class Store(expr_context): ... -class boolop(AST): ... -class And(boolop): ... -class Or(boolop): ... -class operator(AST): ... -class Add(operator): ... -class BitAnd(operator): ... -class BitOr(operator): ... -class BitXor(operator): ... -class Div(operator): ... -class FloorDiv(operator): ... -class LShift(operator): ... -class Mod(operator): ... -class Mult(operator): ... -class Pow(operator): ... -class RShift(operator): ... -class Sub(operator): ... -class unaryop(AST): ... -class Invert(unaryop): ... -class Not(unaryop): ... -class UAdd(unaryop): ... -class USub(unaryop): ... -class cmpop(AST): ... -class Eq(cmpop): ... -class Gt(cmpop): ... -class GtE(cmpop): ... -class In(cmpop): ... -class Is(cmpop): ... -class IsNot(cmpop): ... -class Lt(cmpop): ... -class LtE(cmpop): ... -class NotEq(cmpop): ... -class NotIn(cmpop): ... - -class comprehension(AST): - target: expr - iter: expr - ifs: list[expr] - -class ExceptHandler(AST): - type: expr | None - name: expr | None - body: list[stmt] - lineno: int - col_offset: int - -class arguments(AST): - args: list[expr] - vararg: _Identifier | None - kwarg: _Identifier | None - defaults: list[expr] - type_comments: list[str | None] - -class keyword(AST): - arg: _Identifier - value: expr - -class alias(AST): - name: _Identifier - asname: _Identifier | None - -class TypeIgnore(AST): - lineno: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast3.pyi b/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast3.pyi deleted file mode 100644 index 5898482ca..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/ast3.pyi +++ /dev/null @@ -1,391 +0,0 @@ -from _typeshed import ReadableBuffer -from collections.abc import Iterator -from typing import Any -from typing_extensions import TypeAlias - -LATEST_MINOR_VERSION: int - -class NodeVisitor: - def visit(self, node: AST) -> Any: ... - def generic_visit(self, node: AST) -> None: ... - -class NodeTransformer(NodeVisitor): - def generic_visit(self, node: AST) -> None: ... - -def parse( - source: str | ReadableBuffer, filename: str | ReadableBuffer = "", mode: str = "exec", feature_version: int = 7 -) -> AST: ... -def copy_location(new_node: AST, old_node: AST) -> AST: ... -def dump(node: AST, annotate_fields: bool = True, include_attributes: bool = False) -> str: ... -def fix_missing_locations(node: AST) -> AST: ... -def get_docstring(node: AST, clean: bool = True) -> str | None: ... -def increment_lineno(node: AST, n: int = 1) -> AST: ... -def iter_child_nodes(node: AST) -> Iterator[AST]: ... -def iter_fields(node: AST) -> Iterator[tuple[str, Any]]: ... -def literal_eval(node_or_string: str | AST) -> Any: ... -def walk(node: AST) -> Iterator[AST]: ... - -PyCF_ONLY_AST: int - -# ast classes - -_Identifier: TypeAlias = str - -class AST: - _attributes: tuple[str, ...] - _fields: tuple[str, ...] - def __init__(self, *args: Any, **kwargs: Any) -> None: ... - -class mod(AST): ... - -class Module(mod): - body: list[stmt] - type_ignores: list[TypeIgnore] - -class Interactive(mod): - body: list[stmt] - -class Expression(mod): - body: expr - -class FunctionType(mod): - argtypes: list[expr] - returns: expr - -class Suite(mod): - body: list[stmt] - -class stmt(AST): - lineno: int - col_offset: int - -class FunctionDef(stmt): - name: _Identifier - args: arguments - body: list[stmt] - decorator_list: list[expr] - returns: expr | None - type_comment: str | None - -class AsyncFunctionDef(stmt): - name: _Identifier - args: arguments - body: list[stmt] - decorator_list: list[expr] - returns: expr | None - type_comment: str | None - -class ClassDef(stmt): - name: _Identifier - bases: list[expr] - keywords: list[keyword] - body: list[stmt] - decorator_list: list[expr] - -class Return(stmt): - value: expr | None - -class Delete(stmt): - targets: list[expr] - -class Assign(stmt): - targets: list[expr] - value: expr - type_comment: str | None - -class AugAssign(stmt): - target: expr - op: operator - value: expr - -class AnnAssign(stmt): - target: expr - annotation: expr - value: expr | None - simple: int - -class For(stmt): - target: expr - iter: expr - body: list[stmt] - orelse: list[stmt] - type_comment: str | None - -class AsyncFor(stmt): - target: expr - iter: expr - body: list[stmt] - orelse: list[stmt] - type_comment: str | None - -class While(stmt): - test: expr - body: list[stmt] - orelse: list[stmt] - -class If(stmt): - test: expr - body: list[stmt] - orelse: list[stmt] - -class With(stmt): - items: list[withitem] - body: list[stmt] - type_comment: str | None - -class AsyncWith(stmt): - items: list[withitem] - body: list[stmt] - type_comment: str | None - -class Raise(stmt): - exc: expr | None - cause: expr | None - -class Try(stmt): - body: list[stmt] - handlers: list[ExceptHandler] - orelse: list[stmt] - finalbody: list[stmt] - -class Assert(stmt): - test: expr - msg: expr | None - -class Import(stmt): - names: list[alias] - -class ImportFrom(stmt): - module: _Identifier | None - names: list[alias] - level: int | None - -class Global(stmt): - names: list[_Identifier] - -class Nonlocal(stmt): - names: list[_Identifier] - -class Expr(stmt): - value: expr - -class Pass(stmt): ... -class Break(stmt): ... -class Continue(stmt): ... -class slice(AST): ... - -_Slice: TypeAlias = slice # this lets us type the variable named 'slice' below - -class Slice(slice): - lower: expr | None - upper: expr | None - step: expr | None - -class ExtSlice(slice): - dims: list[slice] - -class Index(slice): - value: expr - -class expr(AST): - lineno: int - col_offset: int - -class BoolOp(expr): - op: boolop - values: list[expr] - -class BinOp(expr): - left: expr - op: operator - right: expr - -class UnaryOp(expr): - op: unaryop - operand: expr - -class Lambda(expr): - args: arguments - body: expr - -class IfExp(expr): - test: expr - body: expr - orelse: expr - -class Dict(expr): - keys: list[expr] - values: list[expr] - -class Set(expr): - elts: list[expr] - -class ListComp(expr): - elt: expr - generators: list[comprehension] - -class SetComp(expr): - elt: expr - generators: list[comprehension] - -class DictComp(expr): - key: expr - value: expr - generators: list[comprehension] - -class GeneratorExp(expr): - elt: expr - generators: list[comprehension] - -class Await(expr): - value: expr - -class Yield(expr): - value: expr | None - -class YieldFrom(expr): - value: expr - -class Compare(expr): - left: expr - ops: list[cmpop] - comparators: list[expr] - -class Call(expr): - func: expr - args: list[expr] - keywords: list[keyword] - -class Num(expr): - n: int | float | complex - -class Str(expr): - s: str - kind: str - -class FormattedValue(expr): - value: expr - conversion: int | None - format_spec: expr | None - -class JoinedStr(expr): - values: list[expr] - -class Bytes(expr): - s: bytes - -class NameConstant(expr): - value: Any - -class Ellipsis(expr): ... - -class Attribute(expr): - value: expr - attr: _Identifier - ctx: expr_context - -class Subscript(expr): - value: expr - slice: _Slice - ctx: expr_context - -class Starred(expr): - value: expr - ctx: expr_context - -class Name(expr): - id: _Identifier - ctx: expr_context - -class List(expr): - elts: list[expr] - ctx: expr_context - -class Tuple(expr): - elts: list[expr] - ctx: expr_context - -class expr_context(AST): ... -class AugLoad(expr_context): ... -class AugStore(expr_context): ... -class Del(expr_context): ... -class Load(expr_context): ... -class Param(expr_context): ... -class Store(expr_context): ... -class boolop(AST): ... -class And(boolop): ... -class Or(boolop): ... -class operator(AST): ... -class Add(operator): ... -class BitAnd(operator): ... -class BitOr(operator): ... -class BitXor(operator): ... -class Div(operator): ... -class FloorDiv(operator): ... -class LShift(operator): ... -class Mod(operator): ... -class Mult(operator): ... -class MatMult(operator): ... -class Pow(operator): ... -class RShift(operator): ... -class Sub(operator): ... -class unaryop(AST): ... -class Invert(unaryop): ... -class Not(unaryop): ... -class UAdd(unaryop): ... -class USub(unaryop): ... -class cmpop(AST): ... -class Eq(cmpop): ... -class Gt(cmpop): ... -class GtE(cmpop): ... -class In(cmpop): ... -class Is(cmpop): ... -class IsNot(cmpop): ... -class Lt(cmpop): ... -class LtE(cmpop): ... -class NotEq(cmpop): ... -class NotIn(cmpop): ... - -class comprehension(AST): - target: expr - iter: expr - ifs: list[expr] - is_async: int - -class ExceptHandler(AST): - type: expr | None - name: _Identifier | None - body: list[stmt] - lineno: int - col_offset: int - -class arguments(AST): - args: list[arg] - vararg: arg | None - kwonlyargs: list[arg] - kw_defaults: list[expr | None] - kwarg: arg | None - defaults: list[expr] - -class arg(AST): - arg: _Identifier - annotation: expr | None - lineno: int - col_offset: int - type_comment: str | None - -class keyword(AST): - arg: _Identifier | None - value: expr - -class alias(AST): - name: _Identifier - asname: _Identifier | None - -class withitem(AST): - context_expr: expr - optional_vars: expr | None - -class TypeIgnore(AST): - lineno: int - tag: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/conversions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/conversions.pyi deleted file mode 100644 index c7088ecc2..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/typed-ast/typed_ast/conversions.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from . import ast3, ast27 - -def py2to3(ast: ast27.AST) -> ast3.AST: ... From 2eee9558ae35a779bc47b35adbe437da94298c0c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 12 Jul 2023 14:33:46 +0200 Subject: [PATCH 382/525] Published 1.1.317 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index fe4c04ee9..2baa51078 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.316", + "version": "1.1.317", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index ddb2c4a17..fbfbe61e6 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.316", + "version": "1.1.317", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.316", + "version": "1.1.317", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index c320c2927..514cce688 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.316", + "version": "1.1.317", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 84a63ee4d..f7b426546 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.316", + "version": "1.1.317", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.316", + "version": "1.1.317", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 38704f402..7fc9f8ad7 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.316", + "version": "1.1.317", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 0422e28af..b683901a4 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.316", + "version": "1.1.317", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.316", + "version": "1.1.317", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 2737b2068..65aed108e 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.316", + "version": "1.1.317", "private": true, "license": "MIT", "author": { From 75b33afaf852c287d4ac74bf0722a26d566bcb43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 23:21:38 +0200 Subject: [PATCH 383/525] Bump semver from 5.7.1 to 5.7.2 in /packages/vscode-pyright (#5484) Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2) --- updated-dependencies: - dependency-name: semver dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/vscode-pyright/package-lock.json | 36 +++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index b683901a4..1ee359c42 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -2280,9 +2280,9 @@ } }, "node_modules/parse-semver/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -2778,9 +2778,9 @@ "dev": true }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3380,9 +3380,9 @@ } }, "node_modules/vsce/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -5318,9 +5318,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -5667,9 +5667,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" }, @@ -6093,9 +6093,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "supports-color": { From 752b24aa3b2d559520a345daea3c875b47e3fce6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 13 Jul 2023 12:30:03 +0200 Subject: [PATCH 384/525] Refactored "cast" call into its own function for readability. No functional change. --- .../src/analyzer/typeEvaluator.ts | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 17041d756..19f20bf0b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8841,27 +8841,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions case TypeCategory.OverloadedFunction: { // Handle the 'cast' call as a special case. if (expandedSubtype.overloads[0].details.builtInName === 'cast' && argList.length === 2) { - // Verify that the cast is necessary. - const castToType = getTypeOfArgumentExpectingType(argList[0]).type; - const castFromType = getTypeOfArgument(argList[1]).type; - if (TypeBase.isInstantiable(castToType) && !isUnknown(castToType)) { - if ( - isTypeSame(convertToInstance(castToType), castFromType, { - ignorePseudoGeneric: true, - }) - ) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportUnnecessaryCast, - DiagnosticRule.reportUnnecessaryCast, - Localizer.Diagnostic.unnecessaryCast().format({ - type: printType(castFromType), - }), - errorNode - ); - } - } - - return convertToInstance(castToType); + return evaluateCastCall(argList, errorNode); } const functionResult = validateOverloadedFunctionArguments( @@ -9300,6 +9280,32 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }; } + // Evaluates the type of the "cast" call. + function evaluateCastCall(argList: FunctionArgument[], errorNode: ExpressionNode) { + // Verify that the cast is necessary. + const castToType = getTypeOfArgumentExpectingType(argList[0]).type; + const castFromType = getTypeOfArgument(argList[1]).type; + + if (TypeBase.isInstantiable(castToType) && !isUnknown(castToType)) { + if ( + isTypeSame(convertToInstance(castToType), castFromType, { + ignorePseudoGeneric: true, + }) + ) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportUnnecessaryCast, + DiagnosticRule.reportUnnecessaryCast, + Localizer.Diagnostic.unnecessaryCast().format({ + type: printType(castFromType), + }), + errorNode + ); + } + } + + return convertToInstance(castToType); + } + // Expands any unpacked tuples within an argument list. function expandArgList(argList: FunctionArgument[]): FunctionArgument[] { const expandedArgList: FunctionArgument[] = []; From 1fa0a4f1cccd2d90a71eac5d43969605417a2e24 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 13 Jul 2023 17:37:00 +0200 Subject: [PATCH 385/525] Added code to handle pathological case in unannotated code that writes to the same variable hundreds of times with different types. This mitigates the performance problem reported in #5475. (#5493) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 19f20bf0b..babc7d3e0 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -6105,7 +6105,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // We limit type narrowing for index expressions to built-in types that are // known to have symmetric __getitem__ and __setitem__ methods (i.e. the value // passed to __setitem__ is the same type as the value returned by __getitem__). - let baseTypeSupportsIndexNarrowing = true; + let baseTypeSupportsIndexNarrowing = !isAny(baseTypeResult.type); mapSubtypesExpandTypeVars(baseTypeResult.type, /* conditionFilter */ undefined, (subtype) => { if ( !isClassInstance(subtype) || @@ -20236,6 +20236,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let typedDecls = symbol.getTypedDeclarations(); if (typedDecls.length === 0) { + // If the symbol has no type declaration but is assigned many times, + // treat it as though it has an explicit type annotation of "Unknown". + // This will avoid a pathological performance condition for unannotated + // code that reassigns the same variable hundreds of times. If the symbol + // effectively has an "Any" annotation, it won't be narrowed. + if (symbol.getDeclarations().length > maxDeclarationsToUseForInference) { + return { type: UnknownType.create() }; + } + // There was no declaration with a defined type. return { type: undefined }; } From bb6096632782dfabb90dd93b651e475f93ef6359 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 13 Jul 2023 17:39:33 +0200 Subject: [PATCH 386/525] Fixed a recent regression that resulted in unsolved type arguments when a "bare" generic class (like `dict`) is passed as an argument to a function that accepts a `type[T]`. This addresses #5392. (#5494) Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 10 ++++++-- .../src/tests/samples/solver27.py | 23 +++++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 +++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/solver27.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 951bf9823..15434d6c0 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -397,8 +397,14 @@ export function assignTypeToTypeVar( // If the source is a class that is missing type arguments, fill // in missing type arguments with Unknown. if ((flags & AssignTypeFlags.AllowUnspecifiedTypeArguments) === 0) { - if (isClass(adjSrcType) && adjSrcType.includeSubclasses) { - adjSrcType = specializeWithDefaultTypeArgs(adjSrcType); + if (isClass(adjSrcType)) { + // Skip this if the source is a concrete class and the dest is + // not a type[T]. This combination is used for class decorators + // such as dataclass_transform, and we need to retain the original + // unspecialized class in this case. + if (adjSrcType.includeSubclasses || TypeBase.isInstantiable(destType)) { + adjSrcType = specializeWithDefaultTypeArgs(adjSrcType); + } } } diff --git a/packages/pyright-internal/src/tests/samples/solver27.py b/packages/pyright-internal/src/tests/samples/solver27.py new file mode 100644 index 000000000..d0c8d2dfe --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/solver27.py @@ -0,0 +1,23 @@ +# This sample tests that the assignment of an instantiable generic class +# without supplied type arguments is given default type arguments (typically +# Unknown) when the TypeVar is solved. + +from typing import Any, TypeVar, reveal_type + +T = TypeVar("T") + + +def deco1(t: type[T], val: Any) -> T: + return val + + +v1 = deco1(dict, {"foo": "bar"}) +reveal_type(v1, expected_text="dict[Unknown, Unknown]") + + +def deco2(t: T, val: Any) -> T: + return val + + +v2 = deco2(dict, {"foo": "bar"}) +reveal_type(v2, expected_text="type[dict[Unknown, Unknown]]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 26fd93789..90709451d 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -653,6 +653,12 @@ test('Solver26', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Solver27', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver27.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('SolverScoring1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverScoring1.py']); From 6236155cb19824535f06bfee183909572689bf97 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 14 Jul 2023 04:53:53 +0000 Subject: [PATCH 387/525] Fixed a bug in type narrowing for pattern matching in the negative (fall-through) case when the subject type contains an `Any`. This addresses #5492. (#5499) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/patternMatching.ts | 3 ++- .../pyright-internal/src/tests/samples/matchSequence1.py | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index 31ec05676..a1914e8fe 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -61,6 +61,7 @@ import { import { addConditionToType, applySolvedTypeVars, + containsAnyOrUnknown, convertToInstance, doForEachSubtype, getTypeCondition, @@ -207,7 +208,7 @@ function narrowTypeBasedOnSequencePattern( } let isPlausibleMatch = true; - let isDefiniteMatch = true; + let isDefiniteMatch = !containsAnyOrUnknown(type, /* recurse */ false); const narrowedEntryTypes: Type[] = []; let canNarrowTuple = entry.isTuple; diff --git a/packages/pyright-internal/src/tests/samples/matchSequence1.py b/packages/pyright-internal/src/tests/samples/matchSequence1.py index 209c80b3b..4cae04a1d 100644 --- a/packages/pyright-internal/src/tests/samples/matchSequence1.py +++ b/packages/pyright-internal/src/tests/samples/matchSequence1.py @@ -32,6 +32,14 @@ def test_unknown(value_to_match): reveal_type(g1, expected_text="list[Unknown]") +def test_any(value_to_match: Any): + match value_to_match: + case [*a1]: + reveal_type(a1, expected_text="list[Any]") + case b1: + reveal_type(b1, expected_text="Any") + + def test_list(value_to_match: List[str]): match value_to_match: case a1, a2: From 844256cfb65eba8b2ff03787626d0a827aeff5ca Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 14 Jul 2023 01:25:54 -0700 Subject: [PATCH 388/525] Added additional special-case handling for `__init_subclass__` and `__class_getitem__` to treat them as implicit class methods even if they are not declared using a `def` statement. This addresses #5500. --- .../src/analyzer/typeEvaluator.ts | 9 ++++++ .../src/analyzer/typeUtils.ts | 2 +- .../src/tests/samples/initsubclass1.py | 32 +++++++++++++------ 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index babc7d3e0..015d94912 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -5405,6 +5405,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ) { setSymbolAccessed(AnalyzerNodeInfo.getFileInfo(errorNode), memberInfo.symbol, errorNode); } + + // Special-case `__init_subclass` and `__class_getitem__` because + // these are always treated as class methods even if they're not + // decorated as such. + if (memberName === '__init_subclass__' || memberName === '__class_getitem__') { + if (isFunction(type) && !FunctionType.isClassMethod(type)) { + type = FunctionType.cloneWithNewFlags(type, type.details.flags | FunctionTypeFlags.ClassMethod); + } + } } const descriptorResult = applyDescriptorAccessMethod( diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 1d2db9e86..c6ede59a6 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1411,7 +1411,7 @@ export function* getClassIterator(classType: Type, flags = ClassIteratorFlags.De let foundSkipMroClass = skipMroClass === undefined; for (const mroClass of classType.details.mro) { - // Are we still searching fro teh skipMroClass? + // Are we still searching for the skipMroClass? if (!foundSkipMroClass && skipMroClass) { if (!isClass(mroClass)) { foundSkipMroClass = true; diff --git a/packages/pyright-internal/src/tests/samples/initsubclass1.py b/packages/pyright-internal/src/tests/samples/initsubclass1.py index 7569aa22d..965b60ca9 100644 --- a/packages/pyright-internal/src/tests/samples/initsubclass1.py +++ b/packages/pyright-internal/src/tests/samples/initsubclass1.py @@ -6,7 +6,7 @@ from typing import Any, Optional, Type -class Foo: +class ClassA: def __init_subclass__( cls, *, param1: str, param2: float, param3: Optional[Any] = None ) -> None: @@ -15,32 +15,44 @@ def __init_subclass__( # This should generate an error because param1 is # the wrong type. -class Bar1(Foo, param1=0, param2=4): +class ClassB(ClassA, param1=0, param2=4): pass # This should generate an error because param2 is missing. -class Bar2(Foo, param1="0", param3=datetime.now()): +class ClassC(ClassA, param1="0", param3=datetime.now()): pass -class Bar3(Foo, param1="0", param2=5.0): +class ClassD(ClassA, param1="0", param2=5.0): pass -class Bar4: +class ClassE: def __init_subclass__(cls, *, arg: int) -> None: - func(cls, arg) + func1(cls, arg) - def __new__(cls) -> "Bar4": - func(cls, 9) + def __new__(cls) -> "ClassE": + func1(cls, 9) return super().__new__(cls) -def func(klass: Type[Bar4], arg: int): +def func1(klass: Type[ClassE], arg: int): pass -class Bar5(Foo, param1="hi", param2=3.4): +class ClassF(ClassA, param1="hi", param2=3.4): def __init_subclass__(cls, param_alt1: int): super().__init_subclass__(param1="yo", param2=param_alt1) + + +def func2(cls): + pass + + +class ClassG: + __init_subclass__ = func2 + + +class ClassH(ClassG): + pass From 3efc3f2b71fb5423a3b2a35e040606968b4005b8 Mon Sep 17 00:00:00 2001 From: Vasista Vovveti Date: Fri, 14 Jul 2023 21:36:32 +0530 Subject: [PATCH 389/525] Match CPython's __hash__ overriding behavior when __eq__ exists (#5501) --- .../src/analyzer/typeEvaluator.ts | 9 ++++ .../src/tests/samples/hash1.py | 18 ++++++++ .../src/tests/samples/hashability2.py | 44 +++++++++++++++++++ .../src/tests/typeEvaluator5.test.ts | 10 +++++ 4 files changed, 81 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/hash1.py create mode 100644 packages/pyright-internal/src/tests/samples/hashability2.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 015d94912..55a109561 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -15563,6 +15563,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ? new Map(innerScope.symbolTable) : new Map(); + // Determine whether the class should inherit __hash__. If a class defines + // __eq__ but doesn't define __hash__ then __hash__ is set to None. + if (classType.details.fields.has('__eq__') && !classType.details.fields.has('__hash__')) { + classType.details.fields.set( + '__hash__', + Symbol.createWithType(SymbolFlags.ClassMember | SymbolFlags.ClassVar, NoneType.createInstance()) + ); + } + // Determine whether the class's instance variables are constrained // to those defined by __slots__. We need to do this prior to dataclass // processing because dataclasses can implicitly add to the slots diff --git a/packages/pyright-internal/src/tests/samples/hash1.py b/packages/pyright-internal/src/tests/samples/hash1.py new file mode 100644 index 000000000..f8683657c --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/hash1.py @@ -0,0 +1,18 @@ +# This sample tests that __hash__ is set to None if +# __hash__isn't set but __eq__ is + + +class A: + ... + +# This shouldn't error +A().__hash__() + + +class B: + def __eq__(self, value: object) -> bool: + ... + ... + +# This should error because __hash__ is set to None by Python +B().__hash__() diff --git a/packages/pyright-internal/src/tests/samples/hashability2.py b/packages/pyright-internal/src/tests/samples/hashability2.py new file mode 100644 index 000000000..01f6ea6ae --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/hashability2.py @@ -0,0 +1,44 @@ +# This sample tests that unhashable user classes are detected as unhashable. + +class A: + ... + +s1 = {A()} +d1 = {A(): 100} + +class B: + def __eq__(self, other): + ... + +# Both of these should generate an error because a class that +# defines __eq__ but not __hash__ is not hashable +s2 = {B()} +d2 = {B(): 100} + +class C: + __hash__: None = None # type: None + +class D(B, C): + ... + +# Both of these should generate an error because B is unhashable. +s3 = {UnhashableSub()} +d3 = {UnhashableSub(): 100} + +class E: + def __hash__(self): + ... + +class F(D, E): + ... + +# Both of these should generate an error because D is unhashable. +s4 = {F()} +d4 = {F(): 100} + +class G(E, D): + ... + +# Both of these should NOT generate an error because E defines __hash__. +s5 = {G()} +d5 = {G(): 100} \ No newline at end of file diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index b7682e275..790f1d797 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -145,6 +145,16 @@ test('Hashability1', () => { TestUtils.validateResults(analysisResults, 10); }); +test('Hashability2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['hashability2.py']); + TestUtils.validateResults(analysisResults, 6); +}); + +test('Hash1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['hash1.py']); + TestUtils.validateResults(analysisResults, 1); +}); + test('Override1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['override1.py']); TestUtils.validateResults(analysisResults, 3); From 6a15a6dc6d774c894724c272fdb244b0019e3dde Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 14 Jul 2023 09:11:14 -0700 Subject: [PATCH 390/525] Minor code cleanup for consistency. --- .../src/tests/samples/hashability2.py | 19 +++++++++++++++---- .../samples/{hash1.py => hashability3.py} | 9 ++++++--- .../src/tests/typeEvaluator5.test.ts | 4 ++-- 3 files changed, 23 insertions(+), 9 deletions(-) rename packages/pyright-internal/src/tests/samples/{hash1.py => hashability3.py} (51%) diff --git a/packages/pyright-internal/src/tests/samples/hashability2.py b/packages/pyright-internal/src/tests/samples/hashability2.py index 01f6ea6ae..3c8c1a1ec 100644 --- a/packages/pyright-internal/src/tests/samples/hashability2.py +++ b/packages/pyright-internal/src/tests/samples/hashability2.py @@ -1,44 +1,55 @@ # This sample tests that unhashable user classes are detected as unhashable. + class A: ... + s1 = {A()} d1 = {A(): 100} + class B: def __eq__(self, other): ... + # Both of these should generate an error because a class that -# defines __eq__ but not __hash__ is not hashable +# defines __eq__ but not __hash__ is not hashable. s2 = {B()} d2 = {B(): 100} + class C: - __hash__: None = None # type: None + __hash__: None = None + class D(B, C): ... + # Both of these should generate an error because B is unhashable. s3 = {UnhashableSub()} d3 = {UnhashableSub(): 100} + class E: def __hash__(self): ... + class F(D, E): ... + # Both of these should generate an error because D is unhashable. s4 = {F()} d4 = {F(): 100} + class G(E, D): ... -# Both of these should NOT generate an error because E defines __hash__. + s5 = {G()} -d5 = {G(): 100} \ No newline at end of file +d5 = {G(): 100} diff --git a/packages/pyright-internal/src/tests/samples/hash1.py b/packages/pyright-internal/src/tests/samples/hashability3.py similarity index 51% rename from packages/pyright-internal/src/tests/samples/hash1.py rename to packages/pyright-internal/src/tests/samples/hashability3.py index f8683657c..cc69ed854 100644 --- a/packages/pyright-internal/src/tests/samples/hash1.py +++ b/packages/pyright-internal/src/tests/samples/hashability3.py @@ -1,18 +1,21 @@ # This sample tests that __hash__ is set to None if -# __hash__isn't set but __eq__ is +# __hash__ isn't set but __eq__ is. class A: ... -# This shouldn't error + A().__hash__() class B: def __eq__(self, value: object) -> bool: ... + ... -# This should error because __hash__ is set to None by Python + +# This should generate an error because __hash__ is implicitly set to None +# for a class that defines __eq__ but not __hash__. B().__hash__() diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 790f1d797..1eb1fb629 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -150,8 +150,8 @@ test('Hashability2', () => { TestUtils.validateResults(analysisResults, 6); }); -test('Hash1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['hash1.py']); +test('Hashability3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['hashability3.py']); TestUtils.validateResults(analysisResults, 1); }); From b865a45061b92a88688eadff7e6d99a331a264fa Mon Sep 17 00:00:00 2001 From: Rich Chiodo Date: Fri, 14 Jul 2023 10:17:10 -0700 Subject: [PATCH 391/525] Add capability for Pylance to override strings (#5497) --- .../src/localization/localize.ts | 12 +++++++++- .../src/tests/localizer.test.ts | 24 ++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 559be611b..d64ecc3da 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -50,7 +50,7 @@ type StringLookupMap = { [key: string]: string | StringLookupMap }; let localizedStrings: StringLookupMap | undefined = undefined; let defaultStrings: StringLookupMap = {}; -function getRawString(key: string): string { +function getRawStringDefault(key: string): string { if (localizedStrings === undefined) { localizedStrings = initialize(); } @@ -65,6 +65,16 @@ function getRawString(key: string): string { fail(`Missing localized string for key "${key}"`); } +let getRawString = getRawStringDefault; + +// Function allowing different strings to be used for messages. +// Returns the previous function used for getting messages. +export function setGetRawString(func: (key: string) => string): (key: string) => string { + const oldLookup = getRawString; + getRawString = func; + return oldLookup; +} + export function getRawStringFromMap(map: StringLookupMap, keyParts: string[]): string | undefined { let curObj: any = map; diff --git a/packages/pyright-internal/src/tests/localizer.test.ts b/packages/pyright-internal/src/tests/localizer.test.ts index 30184a0ba..90581cd15 100644 --- a/packages/pyright-internal/src/tests/localizer.test.ts +++ b/packages/pyright-internal/src/tests/localizer.test.ts @@ -9,7 +9,7 @@ import * as assert from 'assert'; -import { Localizer, ParameterizedString } from '../localization/localize'; +import { Localizer, ParameterizedString, setGetRawString } from '../localization/localize'; const namespaces = [Localizer.Diagnostic, Localizer.DiagnosticAddendum, Localizer.CodeAction]; @@ -45,3 +45,25 @@ test('Raw strings present', () => { }); }); }); + +test('Override a specific string', () => { + // eslint-disable-next-line prefer-const + let originalRawString: ((key: string) => string) | undefined; + function overrideImportResolve(key: string): string { + if (key === 'Diagnostic.importResolveFailure') { + return 'Import is {importName}'; + } + return originalRawString!(key); + } + originalRawString = setGetRawString(overrideImportResolve); + + const value = Localizer.Diagnostic.importResolveFailure().format({ importName: 'foo' }); + + try { + assert.equal(value, 'Import is foo'); + const nonMovedValue = Localizer.Diagnostic.abstractMethodInvocation().format({ method: 'foo' }); + assert.equal(nonMovedValue, 'Method "foo" cannot be called because it is abstract'); + } finally { + setGetRawString(originalRawString); + } +}); From 8e021d2ae844d9c876f31887c18ab9624cc903d4 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Fri, 14 Jul 2023 14:26:45 -0700 Subject: [PATCH 392/525] [PylanceBot] Pull Pylance with Pyright 1.1.317 (#5505) * pull-pylance-with-pyright-1.1.317 * Add missing types --------- Co-authored-by: rchiodo --- build/updateDeps.js | 1 + package-lock.json | 266 ++++--- package.json | 8 +- packages/pyright-internal/package-lock.json | 41 +- packages/pyright-internal/package.json | 3 +- .../src/analyzer/backgroundAnalysisProgram.ts | 8 +- .../src/analyzer/namedTuples.ts | 2 +- .../pyright-internal/src/analyzer/program.ts | 73 +- .../src/analyzer/sourceFile.ts | 60 +- .../src/backgroundAnalysisBase.ts | 20 +- .../pyright-internal/src/common/console.ts | 11 +- .../src/languageServerBase.ts | 68 +- .../src/languageService/codeActionProvider.ts | 13 + .../src/languageService/completionProvider.ts | 8 +- .../src/localization/package.nls.cs.json | 718 ++++++++++++++++++ .../src/localization/package.nls.de.json | 717 ++++++++++++++++- .../src/localization/package.nls.es.json | 717 ++++++++++++++++- .../src/localization/package.nls.fr.json | 717 ++++++++++++++++- .../src/localization/package.nls.it.json | 718 ++++++++++++++++++ .../src/localization/package.nls.ja.json | 717 ++++++++++++++++- .../src/localization/package.nls.ko.json | 718 ++++++++++++++++++ .../src/localization/package.nls.pl.json | 718 ++++++++++++++++++ .../src/localization/package.nls.pt-br.json | 718 ++++++++++++++++++ .../localization/package.nls.qps-ploc.json | 718 ++++++++++++++++++ .../src/localization/package.nls.ru.json | 717 ++++++++++++++++- .../src/localization/package.nls.tr.json | 718 ++++++++++++++++++ .../src/localization/package.nls.zh-cn.json | 717 ++++++++++++++++- .../src/localization/package.nls.zh-tw.json | 717 ++++++++++++++++- .../pyright-internal/src/parser/parser.ts | 4 + .../pyright-internal/src/parser/tokenizer.ts | 19 +- .../src/parser/tokenizerTypes.ts | 4 +- .../pyright-internal/src/pprof/profiler.ts | 63 ++ .../src/tests/harness/fourslash/testState.ts | 98 ++- .../src/tests/harness/vfs/factory.ts | 6 + .../src/tests/harness/vfs/filesystem.ts | 23 +- .../pyright-internal/src/workspaceFactory.ts | 10 +- packages/pyright/package-lock.json | 74 +- packages/pyright/package.json | 6 +- packages/vscode-pyright/package-lock.json | 76 +- packages/vscode-pyright/package.json | 8 +- 40 files changed, 10645 insertions(+), 373 deletions(-) create mode 100644 packages/pyright-internal/src/localization/package.nls.cs.json create mode 100644 packages/pyright-internal/src/localization/package.nls.it.json create mode 100644 packages/pyright-internal/src/localization/package.nls.ko.json create mode 100644 packages/pyright-internal/src/localization/package.nls.pl.json create mode 100644 packages/pyright-internal/src/localization/package.nls.pt-br.json create mode 100644 packages/pyright-internal/src/localization/package.nls.qps-ploc.json create mode 100644 packages/pyright-internal/src/localization/package.nls.tr.json create mode 100644 packages/pyright-internal/src/pprof/profiler.ts diff --git a/build/updateDeps.js b/build/updateDeps.js index 62d636e6e..f84e5eb34 100644 --- a/build/updateDeps.js +++ b/build/updateDeps.js @@ -19,6 +19,7 @@ async function main() { 'vscode-languageclient', 'vscode-languageserver', 'vscode-languageserver-protocol', + 'vscode-languageserver-textdocument', 'vscode-languageserver-types', // Minor version changes have breaks; require a manual update. 'typescript', diff --git a/package-lock.json b/package-lock.json index a9a8f108c..b6ff1c12a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,16 +10,16 @@ "@types/glob": "^7.2.0", "@types/node": "^17.0.45", "@types/yargs": "^16.0.5", - "@typescript-eslint/eslint-plugin": "^5.59.5", - "@typescript-eslint/parser": "^5.59.5", + "@typescript-eslint/eslint-plugin": "^5.60.1", + "@typescript-eslint/parser": "^5.60.1", "detect-indent": "^6.1.0", - "eslint": "^8.40.0", + "eslint": "^8.43.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-simple-import-sort": "^7.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", "lerna": "^6.6.2", - "npm-check-updates": "^16.10.12", + "npm-check-updates": "^16.10.13", "p-queue": "^6.6.2", "prettier": "2.8.8", "syncpack": "^9.8.6", @@ -191,9 +191,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", - "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", + "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -206,9 +206,9 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -2278,9 +2278,9 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, "node_modules/@types/minimatch": { @@ -2335,15 +2335,15 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz", - "integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz", + "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.5", - "@typescript-eslint/type-utils": "5.59.5", - "@typescript-eslint/utils": "5.59.5", + "@typescript-eslint/scope-manager": "5.60.1", + "@typescript-eslint/type-utils": "5.60.1", + "@typescript-eslint/utils": "5.60.1", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -2369,14 +2369,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz", - "integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.1.tgz", + "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.5", - "@typescript-eslint/types": "5.59.5", - "@typescript-eslint/typescript-estree": "5.59.5", + "@typescript-eslint/scope-manager": "5.60.1", + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/typescript-estree": "5.60.1", "debug": "^4.3.4" }, "engines": { @@ -2396,13 +2396,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", - "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", + "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.5", - "@typescript-eslint/visitor-keys": "5.59.5" + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/visitor-keys": "5.60.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2413,13 +2413,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz", - "integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz", + "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.5", - "@typescript-eslint/utils": "5.59.5", + "@typescript-eslint/typescript-estree": "5.60.1", + "@typescript-eslint/utils": "5.60.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -2440,9 +2440,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", - "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", + "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2453,13 +2453,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", - "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", + "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.5", - "@typescript-eslint/visitor-keys": "5.59.5", + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/visitor-keys": "5.60.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2480,17 +2480,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz", - "integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.1.tgz", + "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.5", - "@typescript-eslint/types": "5.59.5", - "@typescript-eslint/typescript-estree": "5.59.5", + "@typescript-eslint/scope-manager": "5.60.1", + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/typescript-estree": "5.60.1", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -2506,12 +2506,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", - "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", + "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/types": "5.60.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4206,16 +4206,16 @@ } }, "node_modules/eslint": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", - "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", + "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.40.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint/js": "8.43.0", + "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -4234,13 +4234,12 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -5169,6 +5168,12 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -5967,12 +5972,6 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, - "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7791,9 +7790,9 @@ } }, "node_modules/npm-check-updates": { - "version": "16.10.12", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.12.tgz", - "integrity": "sha512-js/Gg9+5RTyOQZnmFcPswLxf4sK/H5AE/8bl4tkleLJTC1gXhQqqELUFwXqppNvx488aXxN52ZY9k9MSSvEW2A==", + "version": "16.10.13", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.13.tgz", + "integrity": "sha512-ZsWrtHnaMkcxAaCtDFEr8i7jgM0Bz2AYsnsJlmxISgltG8ie43bWC6G9icxFKfYSLeJJtcj/Yw1Mq5f8GL2F3g==", "dev": true, "dependencies": { "chalk": "^5.2.0", @@ -12204,9 +12203,9 @@ } }, "@eslint/js": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", - "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", + "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", "dev": true }, "@gar/promisify": { @@ -12216,9 +12215,9 @@ "dev": true }, "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -13778,9 +13777,9 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, "@types/minimatch": { @@ -13835,15 +13834,15 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz", - "integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz", + "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.5", - "@typescript-eslint/type-utils": "5.59.5", - "@typescript-eslint/utils": "5.59.5", + "@typescript-eslint/scope-manager": "5.60.1", + "@typescript-eslint/type-utils": "5.60.1", + "@typescript-eslint/utils": "5.60.1", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -13853,53 +13852,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz", - "integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.1.tgz", + "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.59.5", - "@typescript-eslint/types": "5.59.5", - "@typescript-eslint/typescript-estree": "5.59.5", + "@typescript-eslint/scope-manager": "5.60.1", + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/typescript-estree": "5.60.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", - "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", + "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.5", - "@typescript-eslint/visitor-keys": "5.59.5" + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/visitor-keys": "5.60.1" } }, "@typescript-eslint/type-utils": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz", - "integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz", + "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.59.5", - "@typescript-eslint/utils": "5.59.5", + "@typescript-eslint/typescript-estree": "5.60.1", + "@typescript-eslint/utils": "5.60.1", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", - "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", + "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", - "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", + "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.5", - "@typescript-eslint/visitor-keys": "5.59.5", + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/visitor-keys": "5.60.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -13908,28 +13907,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz", - "integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.1.tgz", + "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.5", - "@typescript-eslint/types": "5.59.5", - "@typescript-eslint/typescript-estree": "5.59.5", + "@typescript-eslint/scope-manager": "5.60.1", + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/typescript-estree": "5.60.1", "eslint-scope": "^5.1.1", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.59.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", - "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", + "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/types": "5.60.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -15188,16 +15187,16 @@ "dev": true }, "eslint": { - "version": "8.40.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", - "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", + "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.40.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint/js": "8.43.0", + "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -15216,13 +15215,12 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -15920,6 +15918,12 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -16494,12 +16498,6 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, - "js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -17899,9 +17897,9 @@ } }, "npm-check-updates": { - "version": "16.10.12", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.12.tgz", - "integrity": "sha512-js/Gg9+5RTyOQZnmFcPswLxf4sK/H5AE/8bl4tkleLJTC1gXhQqqELUFwXqppNvx488aXxN52ZY9k9MSSvEW2A==", + "version": "16.10.13", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.13.tgz", + "integrity": "sha512-ZsWrtHnaMkcxAaCtDFEr8i7jgM0Bz2AYsnsJlmxISgltG8ie43bWC6G9icxFKfYSLeJJtcj/Yw1Mq5f8GL2F3g==", "dev": true, "requires": { "chalk": "^5.2.0", diff --git a/package.json b/package.json index 1554af7a1..cbce9ab82 100644 --- a/package.json +++ b/package.json @@ -23,16 +23,16 @@ "@types/glob": "^7.2.0", "@types/node": "^17.0.45", "@types/yargs": "^16.0.5", - "@typescript-eslint/eslint-plugin": "^5.59.5", - "@typescript-eslint/parser": "^5.59.5", + "@typescript-eslint/eslint-plugin": "^5.60.1", + "@typescript-eslint/parser": "^5.60.1", "detect-indent": "^6.1.0", - "eslint": "^8.40.0", + "eslint": "^8.43.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-simple-import-sort": "^7.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", "lerna": "^6.6.2", - "npm-check-updates": "^16.10.12", + "npm-check-updates": "^16.10.13", "p-queue": "^6.6.2", "prettier": "2.8.8", "syncpack": "^9.8.6", diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index fbfbe61e6..ea0a31a6d 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -21,12 +21,13 @@ "tmp": "^0.2.1", "vscode-jsonrpc": "8.1.0", "vscode-languageserver": "8.1.0", - "vscode-languageserver-textdocument": "^1.0.10", + "vscode-languageserver-textdocument": "1.0.10", "vscode-languageserver-types": "3.17.3", "vscode-uri": "^3.0.7" }, "devDependencies": { "@types/command-line-args": "^5.2.0", + "@types/fs-extra": "^11.0.1", "@types/jest": "^27.5.2", "@types/node": "^17.0.45", "@types/tmp": "^0.2.3", @@ -1119,6 +1120,16 @@ "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.6.tgz", "integrity": "sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==" }, + "node_modules/@types/fs-extra": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.1.tgz", + "integrity": "sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==", + "dev": true, + "dependencies": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, "node_modules/@types/graceful-fs": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", @@ -1194,6 +1205,15 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/@types/jsonfile": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", + "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/node": { "version": "17.0.45", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", @@ -5845,6 +5865,16 @@ "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.6.tgz", "integrity": "sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==" }, + "@types/fs-extra": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.1.tgz", + "integrity": "sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==", + "dev": true, + "requires": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, "@types/graceful-fs": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", @@ -5913,6 +5943,15 @@ } } }, + "@types/jsonfile": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", + "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/node": { "version": "17.0.45", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 514cce688..49601de03 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -27,12 +27,13 @@ "tmp": "^0.2.1", "vscode-jsonrpc": "8.1.0", "vscode-languageserver": "8.1.0", - "vscode-languageserver-textdocument": "^1.0.10", + "vscode-languageserver-textdocument": "1.0.10", "vscode-languageserver-types": "3.17.3", "vscode-uri": "^3.0.7" }, "devDependencies": { "@types/command-line-args": "^5.2.0", + "@types/fs-extra": "^11.0.1", "@types/jest": "^27.5.2", "@types/node": "^17.0.45", "@types/tmp": "^0.2.3", diff --git a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts index 9a5dc6634..550eebe75 100644 --- a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts +++ b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts @@ -18,7 +18,7 @@ import { Range } from '../common/textRange'; import { AnalysisCompleteCallback, analyzeProgram } from './analysis'; import { CacheManager } from './cacheManager'; import { ImportResolver } from './importResolver'; -import { MaxAnalysisTime, OpenFileOptions, Program } from './program'; +import { MaxAnalysisTime, OpenFileOptions, Program, SourceFileFactory } from './program'; export enum InvalidatedReason { Reanalyzed, @@ -41,13 +41,15 @@ export class BackgroundAnalysisProgram { private _backgroundAnalysis?: BackgroundAnalysisBase, private readonly _maxAnalysisTime?: MaxAnalysisTime, private readonly _disableChecker?: boolean, - cacheManager?: CacheManager + cacheManager?: CacheManager, + sourceFileFactory?: SourceFileFactory ) { this._program = new Program( this.importResolver, this.configOptions, this._console, undefined, + sourceFileFactory, this._disableChecker, cacheManager, serviceId @@ -151,7 +153,7 @@ export class BackgroundAnalysisProgram { startAnalysis(token: CancellationToken): boolean { if (this._backgroundAnalysis) { - this._backgroundAnalysis.startAnalysis(this.program, token); + this._backgroundAnalysis.startAnalysis(this, token); return false; } diff --git a/packages/pyright-internal/src/analyzer/namedTuples.ts b/packages/pyright-internal/src/analyzer/namedTuples.ts index 42cabcbd0..cbf4ac97e 100644 --- a/packages/pyright-internal/src/analyzer/namedTuples.ts +++ b/packages/pyright-internal/src/analyzer/namedTuples.ts @@ -452,7 +452,7 @@ function renameKeyword( index: number ): string { // Determine whether the name is a keyword in python. - const isKeyword = Tokenizer.isKeyword(name); + const isKeyword = Tokenizer.isPythonKeyword(name); if (!isKeyword) { // No rename necessary. diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 2c19d7751..4d2e36c54 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -53,6 +53,7 @@ import { createTypeEvaluatorWithTracker } from './typeEvaluatorWithTracker'; import { PrintTypeFlags } from './typePrinter'; import { TypeStubWriter } from './typeStubWriter'; import { Type } from './types'; +import { FileSystem } from '../common/fileSystem'; const _maxImportDepth = 256; @@ -113,6 +114,45 @@ interface UpdateImportInfo { export type PreCheckCallback = (parseResults: ParseResults, evaluator: TypeEvaluator) => void; +export type SourceFileFactory = ( + fs: FileSystem, + filePath: string, + moduleName: string, + isThirdPartyImport: boolean, + isThirdPartyPyTypedPresent: boolean, + editMode: boolean, + console?: ConsoleInterface, + logTracker?: LogTracker, + realFilePath?: string, + ipythonMode?: IPythonMode +) => SourceFile; + +function DefaultSourceFileFactory( + fs: FileSystem, + filePath: string, + moduleName: string, + isThirdPartyImport: boolean, + isThirdPartyPyTypedPresent: boolean, + editMode: boolean, + console?: ConsoleInterface, + logTracker?: LogTracker, + realFilePath?: string, + ipythonMode?: IPythonMode +) { + return new SourceFile( + fs, + filePath, + moduleName, + isThirdPartyImport, + isThirdPartyPyTypedPresent, + editMode, + console, + logTracker, + realFilePath, + ipythonMode + ); +} + export interface OpenFileOptions { isTracked: boolean; ipythonMode: IPythonMode; @@ -144,14 +184,15 @@ export class Program { private _parsedFileCount = 0; private _preCheckCallback: PreCheckCallback | undefined; - private _isEditMode = false; + private _sourceFileFactory: SourceFileFactory; constructor( initialImportResolver: ImportResolver, initialConfigOptions: ConfigOptions, console?: ConsoleInterface, logTracker?: LogTracker, + sourceFileFactory?: SourceFileFactory, private _disableChecker?: boolean, cacheManager?: CacheManager, id?: string @@ -160,6 +201,7 @@ export class Program { this._logTracker = logTracker ?? new LogTracker(console, 'FG'); this._importResolver = initialImportResolver; this._configOptions = initialConfigOptions; + this._sourceFileFactory = sourceFileFactory ?? DefaultSourceFileFactory; this._cacheManager = cacheManager ?? new CacheManager(); this._cacheManager.registerCacheOwner(this); @@ -333,7 +375,7 @@ export class Program { return sourceFileInfo.sourceFile; } - const sourceFile = new SourceFile( + const sourceFile = this._sourceFileFactory( this.fileSystem, filePath, importName, @@ -364,7 +406,7 @@ export class Program { let sourceFileInfo = this.getSourceFileInfo(filePath); if (!sourceFileInfo) { const importName = this._getImportNameForFile(filePath); - const sourceFile = new SourceFile( + const sourceFile = this._sourceFileFactory( this.fileSystem, filePath, importName, @@ -1546,7 +1588,7 @@ export class Program { private _createInterimFileInfo(filePath: string) { const importName = this._getImportNameForFile(filePath); - const sourceFile = new SourceFile( + const sourceFile = this._sourceFileFactory( this.fileSystem, filePath, importName, @@ -1852,7 +1894,11 @@ export class Program { return false; } - private _checkTypes(fileToCheck: SourceFileInfo, token: CancellationToken, chainedByList?: SourceFileInfo[]) { + private _checkTypes( + fileToCheck: SourceFileInfo, + token: CancellationToken, + chainedByList?: (SourceFileInfo | undefined)[] + ) { return this._logTracker.log(`analyzing: ${fileToCheck.sourceFile.getFilePath()}`, (logState) => { // If the file isn't needed because it was eliminated from the // transitive closure or deleted, skip the file rather than wasting @@ -1936,7 +1982,7 @@ export class Program { private _checkDependentFiles( fileToCheck: SourceFileInfo, - chainedByList: SourceFileInfo[] | undefined, + chainedByList: (SourceFileInfo | undefined)[] | undefined, token: CancellationToken ) { if (fileToCheck.sourceFile.getIPythonMode() !== IPythonMode.CellDocs) { @@ -1965,7 +2011,14 @@ export class Program { const handle = this._cacheManager.pauseTracking(); try { for (let i = chainedByList.length - 1; i >= startIndex; i--) { - this._checkTypes(chainedByList[i], token, chainedByList); + const file = chainedByList[i]; + if (!file) { + continue; + } + + if (!this._checkTypes(file, token, chainedByList)) { + chainedByList[i] = undefined; + } } } finally { handle.dispose(); @@ -1975,9 +2028,9 @@ export class Program { const dependentFiles = []; for (let i = startIndex; i < chainedByList.length; i++) { const file = chainedByList[i]; - - const parseResults = file.sourceFile.getParseResults(); - if (parseResults) { + const parseResults = file?.sourceFile.getParseResults(); + if (file && parseResults) { + assert(!file.sourceFile.isBindingRequired()); dependentFiles.push(parseResults); } } diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index b4587254b..cb233f6ae 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -28,7 +28,7 @@ import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; import { Localizer } from '../localization/localize'; import { ModuleNode } from '../parser/parseNodes'; -import { ModuleImport, ParseOptions, ParseResults, Parser } from '../parser/parser'; +import { IParser, ModuleImport, ParseOptions, Parser, ParseResults } from '../parser/parser'; import { IgnoreComment } from '../parser/tokenizer'; import { Token } from '../parser/tokenizerTypes'; import { AnalyzerFileInfo, ImportLookup } from './analyzerFileInfo'; @@ -202,7 +202,7 @@ export class SourceFile { console?: ConsoleInterface, logTracker?: LogTracker, realFilePath?: string, - ipythonMode = IPythonMode.None + ipythonMode?: IPythonMode ) { this.fileSystem = fs; this._console = console || new StandardConsole(); @@ -239,7 +239,7 @@ export class SourceFile { // 'FG' or 'BG' based on current thread. this._logTracker = logTracker ?? new LogTracker(console, isMainThread ? 'FG' : 'BG'); - this._ipythonMode = ipythonMode; + this._ipythonMode = ipythonMode ?? IPythonMode.None; } getRealFilePath(): string { @@ -405,6 +405,10 @@ export class SourceFile { } } + getFileContentsVersion() { + return this._writableData.fileContentsVersion; + } + getClientVersion() { return this._writableData.clientDocumentVersion; } @@ -574,7 +578,7 @@ export class SourceFile { try { // Parse the token stream, building the abstract syntax tree. - const parseResults = parseFile( + const parseResults = this._parseFile( configOptions, this._filePath, fileContents!, @@ -829,6 +833,10 @@ export class SourceFile { this._ipythonMode = enable ? IPythonMode.CellDocs : IPythonMode.None; } + protected createParser(): IParser { + return new Parser(); + } + // Computes an updated set of accumulated diagnostics for the file // based on the partial diagnostics from various analysis stages. private _recomputeDiagnostics(configOptions: ConfigOptions) { @@ -1296,28 +1304,28 @@ export class SourceFile { private _getPathForLogging(filepath: string) { return getPathForLogging(this.fileSystem, filepath); } -} -export function parseFile( - configOptions: ConfigOptions, - filePath: string, - fileContents: string, - ipythonMode: IPythonMode, - diagSink: DiagnosticSink -) { - // Use the configuration options to determine the environment in which - // this source file will be executed. - const execEnvironment = configOptions.findExecEnvironment(filePath); - - const parseOptions = new ParseOptions(); - parseOptions.ipythonMode = ipythonMode; - if (filePath.endsWith('pyi')) { - parseOptions.isStubFile = true; - } - parseOptions.pythonVersion = execEnvironment.pythonVersion; - parseOptions.skipFunctionAndClassBody = configOptions.indexGenerationMode ?? false; + private _parseFile( + configOptions: ConfigOptions, + filePath: string, + fileContents: string, + ipythonMode: IPythonMode, + diagSink: DiagnosticSink + ) { + // Use the configuration options to determine the environment in which + // this source file will be executed. + const execEnvironment = configOptions.findExecEnvironment(filePath); + + const parseOptions = new ParseOptions(); + parseOptions.ipythonMode = ipythonMode; + if (filePath.endsWith('pyi')) { + parseOptions.isStubFile = true; + } + parseOptions.pythonVersion = execEnvironment.pythonVersion; + parseOptions.skipFunctionAndClassBody = configOptions.indexGenerationMode ?? false; - // Parse the token stream, building the abstract syntax tree. - const parser = new Parser(); - return parser.parseSourceFile(fileContents, parseOptions, diagSink); + // Parse the token stream, building the abstract syntax tree. + const parser = this.createParser(); + return parser.parseSourceFile(fileContents, parseOptions, diagSink); + } } diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index c22ee3dc2..892f607a3 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -11,7 +11,7 @@ import { MessageChannel, MessagePort, Worker, parentPort, threadId, workerData } import { AnalysisCompleteCallback, AnalysisResults, analyzeProgram, nullCallback } from './analyzer/analysis'; import { ImportResolver } from './analyzer/importResolver'; -import { OpenFileOptions, Program } from './analyzer/program'; +import { OpenFileOptions, Program, SourceFileFactory } from './analyzer/program'; import { BackgroundThreadBase, InitializationData, @@ -36,7 +36,7 @@ import { FileSystem } from './common/fileSystem'; import { Host, HostKind } from './common/host'; import { LogTracker } from './common/logTracker'; import { Range } from './common/textRange'; -import { InvalidatedReason } from './analyzer/backgroundAnalysisProgram'; +import { BackgroundAnalysisProgram, InvalidatedReason } from './analyzer/backgroundAnalysisProgram'; export class BackgroundAnalysisBase { private _worker: Worker | undefined; @@ -103,7 +103,7 @@ export class BackgroundAnalysisBase { }); } - startAnalysis(program: Program, token: CancellationToken) { + startAnalysis(program: BackgroundAnalysisProgram, token: CancellationToken) { this._startOrResumeAnalysis('analyze', program, token); } @@ -209,7 +209,7 @@ export class BackgroundAnalysisBase { protected handleAnalysisResponse( msg: AnalysisResponse, - program: Program, + program: BackgroundAnalysisProgram, port1: MessagePort, port2: MessagePort, token: CancellationToken @@ -244,7 +244,7 @@ export class BackgroundAnalysisBase { private _startOrResumeAnalysis( requestType: 'analyze' | 'resumeAnalysis', - program: Program, + program: BackgroundAnalysisProgram, token: CancellationToken ) { const { port1, port2 } = new MessageChannel(); @@ -264,7 +264,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase protected importResolver: ImportResolver; protected logTracker: LogTracker; - protected constructor(fileSystem?: FileSystem) { + protected constructor(fileSystem?: FileSystem, sourceFileFactory?: SourceFileFactory) { super(workerData as InitializationData, fileSystem); // Stash the base directory into a global variable. @@ -277,7 +277,13 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase const console = this.getConsole(); this.logTracker = new LogTracker(console, `BG(${threadId})`); - this._program = new Program(this.importResolver, this._configOptions, console, this.logTracker); + this._program = new Program( + this.importResolver, + this._configOptions, + console, + this.logTracker, + sourceFileFactory + ); // Create the extensions bound to the program for this background thread Extensions.createProgramExtensions(this._program, { diff --git a/packages/pyright-internal/src/common/console.ts b/packages/pyright-internal/src/common/console.ts index 452c05f83..4c1b2db69 100644 --- a/packages/pyright-internal/src/common/console.ts +++ b/packages/pyright-internal/src/common/console.ts @@ -8,6 +8,7 @@ * methods. */ +import { Disposable } from 'vscode-jsonrpc'; import * as debug from './debug'; export enum LogLevel { @@ -125,8 +126,9 @@ export class StderrConsole implements ConsoleInterface { } } -export class ConsoleWithLogLevel implements ConsoleInterface { +export class ConsoleWithLogLevel implements ConsoleInterface, Disposable { private _maxLevel = 2; + private _disposed = false; constructor(private _console: ConsoleInterface, private _name = '') {} @@ -154,6 +156,10 @@ export class ConsoleWithLogLevel implements ConsoleInterface { this._maxLevel = maxLevel; } + dispose() { + this._disposed = true; + } + error(message: string) { this._log(LogLevel.Error, `${this._prefix}${message}`); } @@ -178,6 +184,9 @@ export class ConsoleWithLogLevel implements ConsoleInterface { if (this._getNumericalLevel(level) > this._maxLevel) { return; } + if (this._disposed) { + return; + } log(this._console, level, message); } diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 35b8af1e2..05e79d4f5 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -293,7 +293,7 @@ export namespace VSDiagnosticRank { export const Lowest = 500; } -export abstract class LanguageServerBase implements LanguageServerInterface { +export abstract class LanguageServerBase implements LanguageServerInterface, Disposable { // We support running only one "find all reference" at a time. private _pendingFindAllRefsCancellationSource: AbstractCancellationTokenSource | undefined; @@ -307,6 +307,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { private _lastFileWatcherRegistration: Disposable | undefined; private _initialized = false; + private _workspaceFoldersChangedDisposable: Disposable | undefined; // Global root path - the basis for all global settings. rootPath = ''; @@ -403,6 +404,12 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return this.client.hasDocumentChangeCapability && this.client.hasDocumentAnnotationCapability; } + dispose() { + this.workspaceFactory.clear(); + this.openFileMap.clear(); + this._workspaceFoldersChangedDisposable?.dispose(); + } + // Convert uri to path decodeTextDocumentUri(uriString: string): string { return this.uriParser.decodeTextDocumentUri(uriString); @@ -770,7 +777,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return; } - this.connection.workspace.onDidChangeWorkspaceFolders((event) => { + this._workspaceFoldersChangedDisposable = this.connection.workspace.onDidChangeWorkspaceFolders((event) => { this.workspaceFactory.handleWorkspaceFoldersChanged(event); this._setupFileWatcher(); }); @@ -871,7 +878,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { // VS Code doesn't support cancellation of "final all references". // We provide a progress bar a cancellation button so the user can cancel // any long-running actions. - const progress = await this._getProgressReporter( + const progress = await this.getProgressReporter( workDoneReporter, Localizer.CodeAction.findingReferences(), token @@ -1161,7 +1168,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { if (doc) { // We shouldn't get an open text document request for an already-opened doc. this.console.error(`Received redundant open text document command for ${filePath}`); - doc = TextDocument.update(doc, [{ text: params.textDocument.text }], params.textDocument.version); + TextDocument.update(doc, [{ text: params.textDocument.text }], params.textDocument.version); } else { doc = TextDocument.create(filePath, 'python', params.textDocument.version, params.textDocument.text); } @@ -1183,15 +1190,14 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return; } - let doc = this.openFileMap.get(filePath); + const doc = this.openFileMap.get(filePath); if (!doc) { // We shouldn't get a change text request for a closed doc. this.console.error(`Received change text document command for closed file ${filePath}`); return; } - doc = TextDocument.update(doc, params.contentChanges, params.textDocument.version); - this.openFileMap.set(filePath, doc); + TextDocument.update(doc, params.contentChanges, params.textDocument.version); const newContents = doc.getText(); // Send this change to all the workspaces that might contain this file. @@ -1255,7 +1261,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface { if (this.isLongRunningCommand(params.command)) { // Create a progress dialog for long-running commands. - const progress = await this._getProgressReporter(reporter, Localizer.CodeAction.executingCommand(), token); + const progress = await this.getProgressReporter(reporter, Localizer.CodeAction.executingCommand(), token); const source = progress.source; this._pendingCommandCancellationSource = source; @@ -1382,6 +1388,29 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return canNavigateToFile(fs, path); } + protected async getProgressReporter(reporter: WorkDoneProgressReporter, title: string, token: CancellationToken) { + // This is a bit ugly, but we need to determine whether the provided reporter + // is an actual client-side progress reporter or a dummy (null) progress reporter + // created by the LSP library. If it's the latter, we'll create a server-initiated + // progress reporter. + if (reporter.constructor !== nullProgressReporter.constructor) { + return { reporter: reporter, source: CancelAfter(this.serverOptions.cancellationProvider, token) }; + } + + const serverInitiatedReporter = await this.connection.window.createWorkDoneProgress(); + serverInitiatedReporter.begin( + title, + /* percentage */ undefined, + /* message */ undefined, + /* cancellable */ true + ); + + return { + reporter: serverInitiatedReporter, + source: CancelAfter(this.serverOptions.cancellationProvider, token, serverInitiatedReporter.token), + }; + } + private _setupFileWatcher() { if (!this.client.hasWatchFileCapability) { return; @@ -1443,29 +1472,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface { return MarkupKind.PlainText; } - private async _getProgressReporter(reporter: WorkDoneProgressReporter, title: string, token: CancellationToken) { - // This is a bit ugly, but we need to determine whether the provided reporter - // is an actual client-side progress reporter or a dummy (null) progress reporter - // created by the LSP library. If it's the latter, we'll create a server-initiated - // progress reporter. - if (reporter.constructor !== nullProgressReporter.constructor) { - return { reporter: reporter, source: CancelAfter(this.serverOptions.cancellationProvider, token) }; - } - - const serverInitiatedReporter = await this.connection.window.createWorkDoneProgress(); - serverInitiatedReporter.begin( - title, - /* percentage */ undefined, - /* message */ undefined, - /* cancellable */ true - ); - - return { - reporter: serverInitiatedReporter, - source: CancelAfter(this.serverOptions.cancellationProvider, token, serverInitiatedReporter.token), - }; - } - private _convertDiagnostics(fs: FileSystem, diags: AnalyzerDiagnostic[]): Diagnostic[] { const convertedDiags: Diagnostic[] = []; diff --git a/packages/pyright-internal/src/languageService/codeActionProvider.ts b/packages/pyright-internal/src/languageService/codeActionProvider.ts index 988dc6640..0a6973e3b 100644 --- a/packages/pyright-internal/src/languageService/codeActionProvider.ts +++ b/packages/pyright-internal/src/languageService/codeActionProvider.ts @@ -24,6 +24,14 @@ import { Localizer } from '../localization/localize'; import { Workspace } from '../workspaceFactory'; export class CodeActionProvider { + static mightSupport(kinds: CodeActionKind[] | undefined): boolean { + if (!kinds || kinds.length === 0) { + return true; + } + + // Only support quick fix actions + return kinds.some((s) => s.startsWith(CodeActionKind.QuickFix)); + } static async getCodeActionsForPosition( workspace: Workspace, filePath: string, @@ -35,6 +43,11 @@ export class CodeActionProvider { const codeActions: CodeAction[] = []; + if (!this.mightSupport(kinds)) { + // Early exit if code actions are going to be filtered anyway. + return []; + } + if (!workspace.disableLanguageServices) { const diags = await workspace.service.getDiagnosticsForRange(filePath, range, token); const typeStubDiag = diags.find((d) => { diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 9ed7406b2..a75c10cdb 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -501,7 +501,8 @@ export class CompletionProvider { classResults.classType, isDeclaredStaticMethod, isProperty, - decl + decl, + decl.node.isAsync ); text = `${methodSignature}:\n${methodBody}`; } @@ -527,7 +528,8 @@ export class CompletionProvider { classType: ClassType, isStaticMethod: boolean, isProperty: boolean, - decl: FunctionDeclaration + decl: FunctionDeclaration, + insertAwait?: boolean ) { let sb = this.parseResults.tokenizerOutput.predominantTabSequence; @@ -550,7 +552,7 @@ export class CompletionProvider { sb += 'return '; } - if (decl.node.isAsync) { + if (insertAwait) { sb += 'await '; } diff --git a/packages/pyright-internal/src/localization/package.nls.cs.json b/packages/pyright-internal/src/localization/package.nls.cs.json new file mode 100644 index 000000000..e7906451e --- /dev/null +++ b/packages/pyright-internal/src/localization/package.nls.cs.json @@ -0,0 +1,718 @@ +{ + "CodeAction": { + "addOptionalToAnnotation": "Přidat k typu nepovinnou poznámku", + "createTypeStub": "Vytvořit zástupná procedura typu", + "createTypeStubFor": "Vytvořit zástupnou proceduru typu pro modul {moduleName}", + "executingCommand": "Spouští se příkaz", + "filesToAnalyzeCount": "Počet souborů k analýze: {count}", + "filesToAnalyzeOne": "1 soubor k analýze", + "findingReferences": "Hledají se odkazy", + "organizeImports": "Uspořádat direktivy Import", + "renameShadowedFile": "Přejmenovat „{oldFile}“ na „{newFile}“" + }, + "Diagnostic": { + "abstractMethodInvocation": "Metodu {method} není možné volat, protože je abstraktní", + "annotatedParamCountMismatch": "Počet poznámek parametrů se neshoduje: očekával(o/y) se {expected}, ale přijal(o/y) se {received}.", + "annotatedTypeArgMissing": "Byl očekáván jeden argument typu a jedna nebo více poznámek pro Annotated", + "annotationFormatString": "Poznámky typu nemůžou používat formátovací řetězcové literály (f-strings)", + "annotationNotSupported": "Poznámka typu není pro tento příkaz podporována", + "annotationSpansStrings": "Poznámky typu nemůžou zahrnovat více řetězcových literálů", + "annotationStringEscape": "Poznámky typu nemůžou obsahovat řídicí znaky", + "argAssignment": "Argument typu {argType} není možné přiřadit k parametru typu {paramType}", + "argAssignmentFunction": "Argument typu {argType} není možné přiřadit k parametru typu {paramType} ve funkci {functionName}", + "argAssignmentParam": "Argument typu {argType} není možné přiřadit k parametru {paramName} typu {paramType}", + "argAssignmentParamFunction": "Argument typu {argType} není možné přiřadit k parametru {paramName} typu {paramType} ve funkci {functionName}", + "argMissingForParam": "Chybí argument pro parametr {name}", + "argMissingForParams": "Chybí argumenty pro parametry {names}", + "argMorePositionalExpectedCount": "Očekával se tento počet dalších pozičních argumentů: {expected}", + "argMorePositionalExpectedOne": "Očekával se 1 další poziční argument", + "argPositional": "Očekávaný poziční argument", + "argPositionalExpectedCount": "Očekávaný počet pozičních argumentů: {expected}", + "argPositionalExpectedOne": "Očekával se 1 poziční argument", + "argTypePartiallyUnknown": "Typ argumentu je částečně neznámý", + "argTypeUnknown": "Typ argumentu je neznámý", + "assertAlwaysTrue": "Výraz Assert se vždy vyhodnotí jako true", + "assertTypeArgs": "assert_type očekává dva poziční argumenty", + "assertTypeTypeMismatch": "Neshoda assert_type: očekávalo se {expected}, ale přijalo se {received}", + "assignmentExprComprehension": "Cíl výrazu přiřazení „{name}“ nemůže používat stejný název jako porozumění cíli", + "assignmentExprContext": "Výraz přiřazení musí být uvnitř modulu, funkce nebo výrazu lambda", + "assignmentExprInSubscript": "Výrazy přiřazení v dolním indexu se podporují jenom v Pythonu 3.10 a novějším", + "assignmentInProtocol": "Proměnné instance nebo třídy v rámci třídy Protocol musí být explicitně deklarovány v těle třídy", + "assignmentTargetExpr": "Výraz nemůže být cílem přiřazení", + "asyncNotInAsyncFunction": "Použití „async“ není povolené mimo funkci async", + "awaitIllegal": "Použití operátoru await vyžaduje Python 3.5 nebo novější", + "awaitNotInAsync": "Operátor await je povolený jenom v rámci asynchronní funkce", + "backticksIllegal": "V Pythonu 3.x nejsou podporovány výrazy obklopené zpětnými tečkami; místo toho použijte repr", + "baseClassCircular": "Třída se nemůže odvozovat od sebe sama", + "baseClassFinal": "Základní třída {type} je označená jako final a nemůže být podtřídou", + "baseClassInvalid": "Argument třídy musí být základní třída", + "baseClassMethodTypeIncompatible": "Základní třídy pro třídu {classType} definují metodu {name} nekompatibilním způsobem", + "baseClassUnknown": "Typ základní třídy je neznámý, co zakrývá typ odvozené třídy", + "baseClassVariableTypeIncompatible": "Základní třídy pro třídu {classType} definují proměnnou {name} nekompatibilním způsobem", + "bindTypeMismatch": "Nepovedlo se vytvořit vazbu metody „{methodName}“, protože „{type}“ nejde přiřadit k parametru „{paramName}“", + "breakOutsideLoop": "„break“ se dá použít jenom ve smyčce", + "callableExtraArgs": "Pro Callable se očekávaly pouze dva argumenty typu", + "callableFirstArg": "Očekával se seznam typů parametrů nebo ...", + "callableNotInstantiable": "Není možné vytvořit instanci typu {type}", + "callableSecondArg": "Očekával se návratový typ jako druhý argument typu pro Callable", + "casePatternIsIrrefutable": "Nevyvratitelný vzorec je povolený jenom pro poslední výraz velikosti písmen", + "classAlreadySpecialized": "Typ {type} je už specializovaný", + "classDecoratorTypeUnknown": "Dekoratér netypové třídy překrývá typ třídy. dekoratér se ignoruje", + "classDefinitionCycle": "Definice třídy pro „{name}“ závisí sama na sobě", + "classGetItemClsParam": "Přepsání __class_getitem__ by mělo mít parametr cls", + "classMethodClsParam": "Metody třídy by měly mít parametr „cls“", + "classNotRuntimeSubscriptable": "Dolní index pro třídu {name} vygeneruje výjimku modulu runtime; anotaci typu uzavřete do uvozovek", + "classPatternBuiltInArgCount": "Vzor třídy přijímá maximálně 1 poziční dílčí vzor", + "classPatternBuiltInArgPositional": "Vzor třídy přijímá pouze poziční dílčí vzor", + "classPatternTypeAlias": "Typ „{type}“ nelze použít ve vzorci třídy, protože se jedná o specializovaný alias typu", + "classTypeParametersIllegal": "Syntaxe parametru typu třídy vyžaduje Python 312 nebo novější", + "classVarFirstArgMissing": "Za ClassVar byl očekáván argument typu", + "classVarNotAllowed": "ClassVar se v tomto kontextu nepovoluje", + "classVarOverridesInstanceVar": "Proměnná třídy {name} přepíše proměnnou instance se stejným názvem ve třídě {className}", + "classVarTooManyArgs": "Za „ClassVar“ byl očekáván pouze jeden argument typu", + "classVarWithTypeVar": "Typ ClassVar nemůže obsahovat proměnné typu", + "clsSelfParamTypeMismatch": "Typ parametru „{name}“ musí být nadtyp třídy „{classType}“", + "codeTooComplexToAnalyze": "Kód je příliš složitý na analýzu; snižte složitost refaktorizací do podprogramů nebo redukcí podmíněných cest kódu", + "collectionAliasInstantiation": "Nelze vytvořit instanci typu „{type}“. Použijte místo toho „{alias}“", + "comparisonAlwaysFalse": "Podmínka se vždy vyhodnotí jako False, protože typy {leftType} a {rightType} se nepřekrývají", + "comparisonAlwaysTrue": "Podmínka se vždy vyhodnotí jako True, protože typy {leftType} a {rightType} se nepřekrývají", + "comprehensionInDict": "Porozumění není možné použít s jinými položkami slovníku", + "comprehensionInSet": "Porozumění nelze použít s jinými položkami sady", + "concatenateParamSpecMissing": "Poslední argument typu pro Concatenate musí být ParamSpec", + "concatenateTypeArgsMissing": "Možnost „Concatenate“ vyžaduje alespoň dva argumenty typu", + "conditionalOperandInvalid": "Neplatný podmíněný operand typu {type}", + "constantRedefinition": "„{name}“ je konstanta (protože je velkými písmeny) a nedá se předefinovat", + "constructorNoArgs": "Pro konstruktor {type} nebyly očekávány žádné argumenty", + "constructorParametersMismatch": "Neshoda mezi signaturou __new__ a __init__ ve třídě“ {classType}“", + "containmentAlwaysFalse": "Výraz se vždy vyhodnotí jako False, protože typy „{leftType}“ a „{rightType}“ se nepřekrývají", + "containmentAlwaysTrue": "Výraz se vždy vyhodnotí jako True, protože typy „{leftType}“ a „{rightType}“ se nepřekrývají.", + "continueInFinally": "continue není možné použít v klauzuli finally", + "continueOutsideLoop": "continue se dá použít jenom ve smyčce", + "dataClassBaseClassFrozen": "Nezablokovaná třída nemůže dědit z zmrazené třídy", + "dataClassBaseClassNotFrozen": "Zablokovaná třída nemůže dědit z třídy, která není zablokovaná", + "dataClassConverterFunction": "Argument typu {argType} není platný převaděč pro pole {fieldName} typu {fieldType}", + "dataClassConverterOverloads": "Žádná přetížení {funcName} nejsou platné převaděče pro pole {fieldName} typu {fieldType}", + "dataClassFieldWithDefault": "Pole bez výchozích hodnot se nemůžou zobrazit po polích s výchozími hodnotami", + "dataClassFieldWithPrivateName": "Pole datové třídy nemůže používat privátní název", + "dataClassFieldWithoutAnnotation": "Pole dataclass bez poznámky typu způsobí výjimku modulu runtime", + "dataClassPostInitParamCount": "Datová třída __post_init__ má nesprávný počet parametrů; počet polí InitVar je {expected}", + "dataClassPostInitType": "Neshoda typu parametru metody __post_init__ datové třídy pro pole {fieldName}", + "dataClassSlotsOverwrite": "__slots__ je už ve třídě definovaný", + "dataClassTransformExpectedBoolLiteral": "Očekával se výraz, který se staticky vyhodnotí jako True nebo False", + "dataClassTransformFieldSpecifier": "Očekávala se řazená kolekce členů tříd nebo funkcí, ale přijatý typ „{type}“", + "dataClassTransformPositionalParam": "Všechny argumenty dataclass_transform musí být argumenty klíčových slov", + "dataClassTransformUnknownArgument": "Argument {name} není v dataclass_transform podporován", + "declaredReturnTypePartiallyUnknown": "Deklarovaný návratový typ {returnType} je částečně neznámý", + "declaredReturnTypeUnknown": "Deklarovaný návratový typ je neznámý", + "defaultValueContainsCall": "Volání funkcí a měnitelné objekty nejsou povoleny ve výrazu výchozí hodnoty parametru", + "defaultValueNotAllowed": "Parametr s * nebo ** nemůže mít výchozí hodnotu", + "delTargetExpr": "Výraz se nedá odstranit", + "deprecatedClass": "Třída {name} je zastaralá", + "deprecatedConstructor": "Konstruktor pro třídu {name} je zastaralý", + "deprecatedFunction": "Tato funkce {name} je zastaralá", + "deprecatedType": "Tento typ je zastaralý jako Python {version}; místo toho použijte {replacement}", + "dictExpandIllegalInComprehension": "Rozšíření slovníku není v porozumění povoleno", + "dictInAnnotation": "Výraz slovníku není v poznámce typu povolený", + "dictKeyValuePairs": "Položky slovníku musí obsahovat páry klíč/hodnota", + "dictUnpackIsNotMapping": "Očekávalo se mapování pro operátor rozbalení slovníku", + "dunderAllSymbolNotPresent": "{name} je zadáno v __all__, ale v modulu se nenachází", + "duplicateArgsParam": "Je povolený jenom jeden parametr *", + "duplicateBaseClass": "Duplicitní základní třída není povolena", + "duplicateCapturePatternTarget": "Cíl zachytávání {name} se v rámci stejného vzoru nemůže vyskytovat více než jednou", + "duplicateCatchAll": "Je povolena pouze jedna klauzule catch-all except", + "duplicateEnumMember": "Člen výčtu {name} je už deklarovaný", + "duplicateGenericAndProtocolBase": "Je povolena pouze jedna základní třída Generic nebo Protocol**", + "duplicateImport": "Import {importName} je importován více než jednou", + "duplicateKeywordOnly": "Je povolený jenom jeden oddělovač *", + "duplicateKwargsParam": "Je povolený jenom jeden parametr **", + "duplicateParam": "duplicitní parametr {name}", + "duplicatePositionOnly": "Je povolený jenom jeden parametr „/“", + "duplicateStarPattern": "V sekvenci vzorů je povolený jenom jeden vzor „*“", + "duplicateStarStarPattern": "Je povolena pouze jedna položka „**“", + "duplicateUnpack": "V seznamu je povolena pouze jedna operace rozbalení", + "ellipsisContext": "„...“ není v tomto kontextu povoleno", + "ellipsisSecondArg": "... je povoleno pouze jako druhý ze dvou argumentů", + "enumClassOverride": "Třída výčtu {name} je konečná a nemůže být podtřídou", + "exceptionGroupIncompatible": "Syntaxe skupiny výjimek (except*) vyžaduje Python 3.11 nebo novější", + "exceptionTypeIncorrect": "„{type}“ se neodvozuje od BaseException", + "exceptionTypeNotClass": "{type} není platná třída výjimky", + "exceptionTypeNotInstantiable": "Konstruktor pro výjimku typu {type} vyžaduje jeden nebo více argumentů", + "expectedAfterDecorator": "Očekávaná deklarace funkce nebo třídy po dekoratéru", + "expectedArrow": "Byl očekáván znak -> následovaný anotací návratového typu", + "expectedAsAfterException": "Za typem výjimky byl očekáván znak „as“", + "expectedAssignRightHandExpr": "Byl očekáván výraz napravo od znaku =", + "expectedBinaryRightHandExpr": "Očekával se výraz napravo od operátoru", + "expectedBoolLiteral": "Očekávala se hodnota True nebo False", + "expectedCase": "Očekával se příkaz case", + "expectedClassName": "Očekával se název třídy", + "expectedCloseBrace": "{ nebyla uzavřena", + "expectedCloseBracket": "[ nebyla uzavřena", + "expectedCloseParen": "( nebyla uzavřena", + "expectedColon": "Očekával se znak :", + "expectedComplexNumberLiteral": "Očekával se komplexní číselný literál pro porovnávání vzorů", + "expectedDecoratorExpr": "Forma výrazu není podporována pro dekorátor před verzí Python 3.9", + "expectedDecoratorName": "Očekával se název dekoratéru", + "expectedDecoratorNewline": "Na konci dekoratéru byl očekáván nový řádek", + "expectedDelExpr": "Za del se očekával výraz", + "expectedElse": "Očekávalo se else", + "expectedEquals": "Očekával se znak =", + "expectedExceptionClass": "Neplatná třída nebo objekt výjimky", + "expectedExceptionObj": "Byl očekáván objekt výjimky, třída výjimky nebo None", + "expectedExpr": "Očekávaný výraz", + "expectedFunctionAfterAsync": "Očekávaná definice funkce po „async“", + "expectedFunctionName": "Za def se očekával název funkce", + "expectedIdentifier": "Očekávaný identifikátor", + "expectedImport": "Očekával se import", + "expectedImportAlias": "Za as byl očekáván symbol", + "expectedImportSymbols": "Po importu se očekával jeden nebo více názvů symbolů", + "expectedIn": "Očekávalo se in", + "expectedInExpr": "Za in byl očekáván výraz", + "expectedIndentedBlock": "Očekával se odsazený blok", + "expectedMemberName": "Za znakem . byl očekáván název člena", + "expectedModuleName": "Očekávaný název modulu", + "expectedNameAfterAs": "Za „as“ se očekával název symbolu", + "expectedNamedParameter": "Parametr klíčového slova musí následovat za znakem *", + "expectedNewline": "Očekával se nový řádek", + "expectedNewlineOrSemicolon": "Příkazy musí být oddělené novými řádky nebo středníky", + "expectedOpenParen": "Očekával se znak „(“", + "expectedParamName": "Očekával se název parametru", + "expectedPatternExpr": "Očekávaný výraz vzoru", + "expectedPatternSubjectExpr": "Očekávaný výraz předmětu vzoru", + "expectedPatternValue": "Očekávaný výraz hodnoty vzoru ve formátu a.b", + "expectedReturnExpr": "Za return se očekával výraz", + "expectedSliceIndex": "Očekávaný výraz indexu nebo řezu", + "expectedTypeNotString": "Očekával se typ, ale přijal se řetězcový literál", + "expectedTypeParameterName": "Očekávaný název parametru typu", + "expectedYieldExpr": "Očekávaný výraz v příkazu yield", + "finalClassIsAbstract": "Třída {type} je označená jako konečná a musí implementovat všechny abstraktní metody", + "finalContext": "V tomto kontextu se nepovoluje Final", + "finalMethodOverride": "Metoda {name} nemůže přepsat konečnou metodu definovanou ve třídě {className}", + "finalReassigned": "„{name}“ se deklaruje jako Final a nedá se znovu přiřadit", + "finalRedeclaration": "{name} se dříve deklarovalo jako Final", + "finalRedeclarationBySubclass": "{name} se nedá deklarovat znovu, protože nadřazená třída {className} ji deklaruje jako final", + "finalTooManyArgs": "Za Final byl očekáván jeden argument typu", + "finalUnassigned": "{name} se deklaruje jako final, ale hodnota není přiřazená", + "formatStringBrace": "Jednoduchá pravá složená závorka není v literálu f-string povolena. použijte dvojitou pravou složenou závorku", + "formatStringBytes": "Formátovací řetězcové literály (f-strings) nemůžou být binární", + "formatStringDebuggingIllegal": "Specifikátor ladění F-string „=“ vyžaduje Python 3.8 nebo novější", + "formatStringEscape": "Řídicí sekvence (zpětné lomítko) není povolená v části výrazu f-string před Python 3.12", + "formatStringExpectedConversion": "V řetězci f-string byl za znakem ! očekáván specifikátor převodu", + "formatStringIllegal": "Formátovací řetězcové literály (f-string) vyžadují Python 3.6 nebo novější", + "formatStringInPattern": "Formátovací řetězec není ve vzoru povolený", + "formatStringNestedFormatSpecifier": "Příliš hluboko vnořené výrazy v rámci specifikátoru formátovacího řetězce", + "formatStringNestedQuote": "Řetězce vnořené v řetězci f-string nemůžou používat stejný znak uvozovek jako řetězec f-string před Python 3.12", + "formatStringUnicode": "Formátovací řetězcové literály (f-strings) nemůžou být unicode", + "formatStringUnterminated": "Neukončený výraz v f-string; očekává se „}“", + "functionDecoratorTypeUnknown": "Dekorátor netypové funkce překrývá typ funkce; ignoruje se dekoratér", + "functionInConditionalExpression": "Podmíněný výraz odkazuje na funkci, která se vždy vyhodnotí jako True", + "functionTypeParametersIllegal": "Syntaxe parametru typu funkce vyžaduje Python 3.12 nebo novější", + "futureImportLocationNotAllowed": "Importy z __future__ musí být na začátku souboru", + "generatorAsyncReturnType": "Návratový typ funkce asynchronního generátoru musí být kompatibilní s typem AsyncGenerator[{yieldType}, Any]", + "generatorNotParenthesized": "Výrazy generátoru musí být v závorkách, pokud nejsou jediným argumentem", + "generatorSyncReturnType": "Návratový typ funkce generátoru musí být kompatibilní s Generator[{yieldType}, Any, Any]", + "genericBaseClassNotAllowed": "Základní třídu „Generic“ nejde použít se syntaxí parametru typu", + "genericClassAssigned": "Obecný typ třídy není možné přiřadit", + "genericClassDeleted": "Obecný typ třídy nelze odstranit", + "genericNotAllowed": "Generic není v tomto kontextu platný", + "genericTypeAliasBoundTypeVar": "Alias obecného typu v rámci třídy nemůže používat proměnné vázaného typu {names}", + "genericTypeArgMissing": "Generic vyžaduje alespoň jeden argument typu", + "genericTypeArgTypeVar": "Argument typu pro Generic musí být proměnná typu", + "genericTypeArgUnique": "Argumenty typu pro Generic musí být jedinečné", + "globalReassignment": "{name} je přiřazen před globální deklarací", + "globalRedefinition": "Název {name} už je deklarován jako globální", + "implicitStringConcat": "Implicitní zřetězení řetězců není povolené", + "importCycleDetected": "V řetězci importu byl zjištěn cyklus", + "importDepthExceeded": "Hloubka řetězu importu překročila {depth}", + "importResolveFailure": "Import {importName} se nepovedlo vyřešit", + "importSourceResolveFailure": "Import {importName} se nepovedlo přeložit ze zdroje", + "importSymbolUnknown": "{name} je neznámý symbol importu", + "incompatibleMethodOverride": "Metoda {name} přepisuje třídu {className} nekompatibilním způsobem", + "inconsistentIndent": "Množství zrušeného odsazení neodpovídá předchozímu odsazení", + "inconsistentTabs": "Nekonzistentní použití tabulátorů a mezer v odsazení", + "initMustReturnNone": "Návratový typ __init__ musí být None", + "initSubclassClsParam": "Přepsání __init_subclass__ by mělo mít parametr cls", + "instanceMethodSelfParam": "Metody instance by měly mít parametr self", + "instanceVarOverridesClassVar": "Proměnná instance „{name}“ přepíše proměnnou třídy se stejným názvem ve třídě „{className}“", + "instantiateAbstract": "Nelze vytvořit instanci abstraktní třídy „{type}“", + "instantiateProtocol": "Nelze vytvořit instanci třídy protokolu „{type}“", + "internalBindError": "Při vytváření vazby souboru {file} došlo k vnitřní chybě: {message}", + "internalParseError": "Při analýze souboru {file} došlo k vnitřní chybě: {message}", + "internalTypeCheckingError": "Při kontrole typu souboru {file} došlo k vnitřní chybě: {message}", + "invalidIdentifierChar": "Neplatný znak v identifikátoru", + "invalidStubStatement": "Příkaz je v souboru zástupné procedury typu bezvýznamný", + "invalidTokenChars": "Neplatný znak „{text}“ v tokenu", + "isInstanceInvalidType": "Druhý argument pro „isinstance“ musí být třída nebo řazená kolekce členů tříd", + "isSubclassInvalidType": "Druhý argument pro issubclass musí být třída nebo řazená kolekce členů tříd", + "keyValueInSet": "Páry klíč-hodnota nejsou v rámci sady povoleny", + "keywordArgInTypeArgument": "Argumenty klíčových slov nelze použít v seznamech argumentů typu", + "keywordOnlyAfterArgs": "Oddělovač argumentů jen pro klíčová slova není povolený za parametrem *", + "keywordParameterMissing": "Jeden nebo více parametrů klíčového slova musí následovat za parametrem „*“", + "keywordSubscriptIllegal": "Argumenty klíčových slov v dolních indexech nejsou podporovány", + "lambdaReturnTypePartiallyUnknown": "Návratový typ lambda {returnType} je částečně neznámý", + "lambdaReturnTypeUnknown": "Návratový typ výrazu lambda je neznámý", + "listAssignmentMismatch": "Výraz s typem {type} se nedá přiřadit k cílovému seznamu", + "listInAnnotation": "Výraz seznamu není v poznámce typu povolený", + "literalEmptyArgs": "Za literálem se očekával jeden nebo více argumentů typu", + "literalNotCallable": "Není možné vytvořit instanci typu literálu", + "literalUnsupportedType": "Argumenty typu pro Literal musí být None, hodnota literálu (int, bool, str nebo bytes) nebo hodnota výčtu", + "matchIncompatible": "Příkazy match vyžadují Python 3.10 nebo novější", + "matchIsNotExhaustive": "Případy v rámci příkazu match nezpracovávají kompletně všechny hodnoty", + "maxParseDepthExceeded": "Byla překročena maximální hloubka analýzy; rozdělte výraz na dílčí výrazy", + "memberAccess": "Není možné získat přístup ke členu {name} pro typ {type}", + "memberDelete": "Není možné odstranit člena {name} pro typ {type}", + "memberSet": "Nelze přiřadit člena „{name}“ pro typ „{type}“", + "metaclassConflict": "Metatřída odvozené třídy musí být podtřídou metatříd všech jejích základních tříd", + "metaclassDuplicate": "Je možné zadat pouze jednu metatřídu", + "metaclassIsGeneric": "Metatřída nemůže být obecná", + "methodNotDefined": "Metoda {name} není definována", + "methodNotDefinedOnType": "Metoda {name} není u typu {type} definována", + "methodOrdering": "Není možné vytvořit konzistentní řazení metod", + "methodOverridden": "„{name}“ přepisuje metodu se stejným názvem ve třídě „{className}“ s nekompatibilním typem {type}", + "methodReturnsNonObject": "Metoda {name} nevrací objekt", + "missingProtocolMembers": "Třída je odvozena od jedné nebo více tříd protokolu, ale neimplementuje všechny požadované členy", + "missingSuperCall": "Metoda {methodName} nevolá metodu se stejným názvem v nadřazené třídě", + "moduleAsType": "Modul nejde použít jako typ", + "moduleNotCallable": "Modul není volatelný", + "moduleUnknownMember": "Člen „{memberName}“ není známým členem modulu „{moduleName}“", + "namedExceptAfterCatchAll": "Za klauzulí catch-all except se nemůže objevit pojmenovaná klauzule except", + "namedParamAfterParamSpecArgs": "Parametr klíčového slova {name} se nemůže objevit v signatuře za parametrem argumentů ParamSpec", + "namedTupleEmptyName": "Názvy v pojmenované řazené kolekci členů nemůžou být prázdné.", + "namedTupleFirstArg": "Jako první argument byl očekáván název pojmenované třídy řazené kolekce členů", + "namedTupleMultipleInheritance": "Vícenásobná dědičnost s NamedTuple se nepodporuje", + "namedTupleNameType": "Očekávala se řazená kolekce členů se dvěma položkami určující název a typ položky", + "namedTupleNameUnique": "Názvy v pojmenované řazené kolekci členů musí být jedinečné", + "namedTupleNoTypes": "namedtuple neposkytuje žádné typy pro položky řazené kolekce členů; místo toho použijte NamedTuple", + "namedTupleSecondArg": "Jako druhý argument byl očekáván pojmenovaný seznam řazené kolekce členů", + "newClsParam": "Přepsání __new__ by mělo mít parametr cls", + "newTypeBadName": "Prvním argumentem pro NewType musí být řetězcový literál", + "newTypeLiteral": "Typ NewType není možné použít s typem Literal", + "newTypeNotAClass": "Očekávaná třída jako druhý argument pro NewType", + "newTypeParamCount": "NewType vyžaduje dva poziční argumenty", + "newTypeProtocolClass": "NewType neí možné použít s třídou protokolu", + "noOverload": "Zadaným argumentům neodpovídají žádná přetížení pro {name}", + "noReturnContainsReturn": "Funkce s deklarovaným návratovým typem NoReturn nemůže obsahovat příkaz return", + "noReturnContainsYield": "Funkce s deklarovaným návratovým typem NoReturn nemůže obsahovat příkaz yield", + "noReturnReturnsNone": "Funkce s deklarovaným typem NoReturn nemůže vrátit None", + "nonDefaultAfterDefault": "Nevýchozí argument následuje za výchozím argumentem", + "nonLocalInModule": "Nemístní deklarace není povolená na úrovni modulu", + "nonLocalNoBinding": "Nenašla se žádná vazba pro nemístní {name}", + "nonLocalReassignment": "{name} je přiřazeno před nemístní deklarací", + "nonLocalRedefinition": "{name} již bylo deklarováno jako nemístní", + "noneNotCallable": "Objekt typu „None“ nelze volat.", + "noneNotIterable": "Objekt typu None není možné použít jako iterovatelnou hodnotu", + "noneNotSubscriptable": "Objekt typu “None“ nelze zadat jako dolní index", + "noneNotUsableWith": "Objekt typu None není možné použít s with", + "noneOperator": "Operátor {operator} se pro None nepodporuje", + "noneUnknownMember": "{name} není známým členem None", + "notRequiredArgCount": "Za NotRequired byl očekáván jeden argument typu", + "notRequiredNotInTypedDict": "NotRequired není v tomto kontextu povolené", + "objectNotCallable": "Objekt typu {type} není možné volat", + "obscuredClassDeclaration": "Deklarace třídy {name} je zakrytá deklarací stejného jména", + "obscuredFunctionDeclaration": "Deklarace funkce {name} je zakrytá deklarací stejného názvu", + "obscuredMethodDeclaration": "Deklarace metody {name} je zakrytá deklarací stejného názvu", + "obscuredParameterDeclaration": "Deklarace parametru {name} je zakrytá deklarací stejného názvu", + "obscuredTypeAliasDeclaration": "Deklarace aliasu typu {name} je zakrytá deklarací stejného názvu", + "obscuredVariableDeclaration": "Deklarace {name} je zakrytá deklarací stejného názvu", + "operatorLessOrGreaterDeprecated": "Operátor <> se v Pythonu 3 nepodporuje; místo toho použijte !=", + "optionalExtraArgs": "Za nepovinnou hodnotou se očekával jeden argument typu", + "orPatternIrrefutable": "Nevratný vzor je povolený jenom jako poslední dílčí vzorec ve vzorci „or“", + "orPatternMissingName": "Všechny dílčí vzory v rámci vzoru or musí cílit na stejné názvy", + "overlappingOverload": "Přetížení {obscured} pro {name} se nikdy nepoužije, protože jeho parametry se překrývají s přetížením {obscuredBy}", + "overloadAbstractMismatch": "Přetížené metody musí být všechny abstraktní nebo ne", + "overloadImplementationMismatch": "Přetížená implementace není konzistentní se signaturou přetížení {index}", + "overloadReturnTypeMismatch": "Přetížení {prevIndex} pro {name} se překrývá s přetížením {newIndex} a vrací nekompatibilní typ", + "overloadWithImplementation": "{name} je označené jako přetížení, ale zahrnuje implementaci", + "overloadWithoutImplementation": "„{name}“ je označen(é/o) jako přetížení, ale není zadaná žádná implementace", + "overriddenMethodNotFound": "Metoda „{name}“ je označená jako přepsání, ale neexistuje žádná základní metoda se stejným názvem", + "overrideDecoratorMissing": "Metoda „{name}“ není označená jako přepsání, ale přepisuje metodu ve třídě „{className}“", + "paramAfterKwargsParam": "Parametr nemůže následovat za parametrem „**“", + "paramAlreadyAssigned": "Parametr {name} je už přiřazený", + "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}", + "paramSpecArgsKwargsUsage": "Členy argumentů args a kwargs parametru ParamSpec se musí vyskytovat v signatuře funkce", + "paramSpecArgsMissing": "Chybí argumenty pro parametr ParamSpec {type}", + "paramSpecArgsUsage": "Člen „args“ parametru ParamSpec je platný jenom v případě, že se používá s parametrem *args", + "paramSpecAssignedName": "Parametr ParamSpec musí být přiřazen proměnné s názvem {name}", + "paramSpecContext": "Rozbalení není v tomto kontextu povoleno", + "paramSpecDefaultNotTuple": "Očekávaly se tři tečky, výraz řazené kolekce členů nebo Parametr ParamSpec pro výchozí hodnotu ParamSpec", + "paramSpecFirstArg": "Očekával se název parametru ParamSpec jako první argument", + "paramSpecKwargsUsage": "Člen kwargs parametru ParamSpec je platný jenom v případě, že se používá s parametrem **kwargs", + "paramSpecNotBound": "Specifikace parametru {type} nemá žádnou vázanou hodnotu", + "paramSpecNotUsedByOuterScope": "Parametr ParamSpec {name} nemá v tomto kontextu žádný význam", + "paramSpecScopedToReturnType": "Parametr ParamSpec {name} je vymezený na volatelnou proměnnou v rámci návratového typu a nedá se na něj odkazovat v těle funkce jazyka", + "paramSpecUnknownArg": "Parametr ParamSpec nepodporuje více než jeden argument", + "paramSpecUnknownMember": "{name} není známý člen ParamSpec", + "paramSpecUnknownParam": "„{name}“ je neznámý parametr parametru ParamSpec", + "paramTypeCovariant": "Proměnnou kovariantní typu není možné použít v typu parametru", + "paramTypePartiallyUnknown": "Typ parametru {paramName} je částečně neznámý", + "paramTypeUnknown": "Typ parametru {paramName} je neznámý", + "parenthesizedContextManagerIllegal": "Závorky v příkazu with vyžadují Python 3.9 nebo novější", + "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", + "positionOnlyAfterArgs": "Oddělovač argumentů jen pro pozici není povolený za parametrem *", + "positionOnlyAfterKeywordOnly": "Parametr / se musí zobrazit před parametrem *", + "positionOnlyFirstParam": "Oddělovač argumentů jen pro pozici není povolený jako první parametr", + "positionOnlyIncompatible": "Oddělovač argumentů jen pro pozici vyžaduje Python 3.8 nebo novější", + "privateImportFromPyTypedModule": "{name} se neexportuje z modulu {module}", + "privateUsedOutsideOfClass": "{name} je privátní a používá se mimo třídu, ve které je deklarovaná", + "privateUsedOutsideOfModule": "{name} je privátní a používá se mimo modul, ve kterém je deklarován", + "propertyOverridden": "„{name}“ nesprávně přepíše vlastnost se stejným názvem ve třídě {className}", + "propertyStaticMethod": "Statické metody nejsou povoleny pro metodu getter, setter nebo deleter vlastnosti", + "protectedUsedOutsideOfClass": "„{name}“ je chráněn(ý/o/é) a používá se mimo třídu, ve které je deklarovaná", + "protocolBaseClass": "Třída protokolu „{classType}“ se nemůže odvozovat od třídy,která není protokolem „{baseType}“", + "protocolBaseClassWithTypeArgs": "Argumenty typu nejsou u třídy Protocol povoleny při použití syntaxe parametru typu", + "protocolIllegal": "Použití protokolu vyžaduje Python 3.7 nebo novější", + "protocolNotAllowedInTypeArgument": "Protocol není možné použít jako argument typu", + "protocolUsedInCall": "Ve volání {name} není možné použít třídu protokolu", + "protocolVarianceContravariant": "Proměnná typu „{variable}“ použitá v obecném protokolu „{class}“ by měla být kontravariantní", + "protocolVarianceCovariant": "Proměnná typu „{variable}“ použitá v obecném protokolu „{class}“ by měla být kovariantní", + "protocolVarianceInvariant": "Proměnná typu „{variable}“ použitá v obecném protokolu „{class}“ by měla být invariantní", + "pyrightCommentInvalidDiagnosticBoolValue": "Za direktivou komentářů Pyright musí následovat znak =a hodnota true nebo false", + "pyrightCommentInvalidDiagnosticSeverityValue": "Za direktivou komentářů Pyright musí následovat = a hodnota true, false, error, warning, information nebo none", + "pyrightCommentMissingDirective": "Za komentářem Pyright musí následovat direktiva (základní nebo striktní) nebo diagnostické pravidlo", + "pyrightCommentNotOnOwnLine": "Komentáře Pyright používané k řízení nastavení na úrovni souborů se musí zobrazovat na vlastním řádku", + "pyrightCommentUnknownDiagnosticRule": "{rule} je neznámé diagnostické pravidlo pro komentář pyright", + "pyrightCommentUnknownDiagnosticSeverityValue": "{value} je neplatná hodnota pro komentář pyright; očekávalo se true, false, error, warning, information nebo none", + "pyrightCommentUnknownDirective": "Direktiva {directive} je neznámá direktiva pro komentář pyright; očekávalo se strict nebo basic", + "readOnlyArgCount": "Za „ReadOnly“ se očekával jeden argument typu", + "readOnlyNotInTypedDict": "ReadOnly není v tomto kontextu povolené", + "recursiveDefinition": "Typ „{name}“ nelze určit, protože odkazuje sám na sebe", + "relativeImportNotAllowed": "Relativní importy se nedají použít s formulářem importu .a; místo toho použijte from . import a", + "requiredArgCount": "Za povinným argumentem se očekával jeden argument typu", + "requiredNotInTypedDict": "Required není v tomto kontextu povoleno", + "returnInAsyncGenerator": "Příkaz Return s hodnotou není v asynchronním generátoru povolený", + "returnMissing": "Funkce s deklarovaným typem „{returnType}“ musí vrátit hodnotu na všech cestách kódu.", + "returnOutsideFunction": "„return“ se dá použít jenom v rámci funkce", + "returnTypeContravariant": "Kontravariantní proměnnou typu nejde použít v návratovém typu", + "returnTypeMismatch": "Výraz typu {exprType} není možné přiřadit k návratového typu {returnType}", + "returnTypePartiallyUnknown": "Návratový typ {returnType} je částečně neznámý", + "returnTypeUnknown": "Návratový typ je neznámý", + "revealLocalsArgs": "Pro volání reveal_locals se neočekávaly žádné argumenty", + "revealLocalsNone": "V tomto oboru nejsou žádné místní hodnoty", + "revealTypeArgs": "Pro volání reveal_type byl očekáván jeden poziční argument", + "revealTypeExpectedTextArg": "Argument „expected_text“ pro funkci „reveal_type“ musí být hodnota literálu str", + "revealTypeExpectedTextMismatch": "Neshoda typu textu; očekávaný počet: {expected}, počet, který byl přijat: {received}", + "revealTypeExpectedTypeMismatch": "Neshoda typů; Očekával(o/y) se „{expected}“, ale přijal(o/y) se „{received}“", + "selfTypeContext": "Self není v tomto kontextu platné", + "selfTypeWithTypedSelfOrCls": "Self není možné použít ve funkci s parametrem self nebo cls, která má jinou poznámku typu než Self", + "setterGetterTypeMismatch": "Typ hodnoty metody setter vlastnosti není možné přiřadit návratového typu getter", + "singleOverload": "{name} je označené jako přetížení, ale chybí další přetížení", + "slotsAttributeError": "„{name}“ není zadaný v __slots__", + "slotsClassVarConflict": "{name} je v konfliktu s proměnnou instance deklarovanou v __slots__", + "starPatternInAsPattern": "Vzor hvězdy se nedá použít s cílem as", + "starPatternInOrPattern": "Vzor hvězdy nemůže být ORed v jiných vzorech", + "starStarWildcardNotAllowed": "** není možné použít se zástupným znakem _", + "staticClsSelfParam": "Statické metody by neměly přijímat parametr self nebo cls", + "stdlibModuleOverridden": "„{path}“ přepisuje modul stdlib „{name}“", + "strictTypeGuardReturnType": "Návratový typ StrictTypeGuard ({returnType}) se nedá přiřadit k typu parametru hodnoty ({type})", + "stringNonAsciiBytes": "Znak jiný než ASCII není povolený v bajtech řetězcového literálu", + "stringNotSubscriptable": "Řetězcový výraz není možné v poznámce typu zadat jako dolní index uzavření celé poznámky do uvozovek", + "stringUnsupportedEscape": "Nepodporovaná řídicí sekvence v řetězcovém literálu", + "stringUnterminated": "Řetězcový literál je neukončený", + "stubFileMissing": "Soubor zástupné procedury pro {importName} se nenašel", + "stubUsesGetAttr": "Soubor zástupné procedury typu je neúplný; __getattr__ zakrývá typové chyby pro modul", + "sublistParamsIncompatible": "Parametry podsestavy nejsou v Python 3.x podporované", + "superCallArgCount": "Pro volání „super“ se očekávaly maximálně dva argumenty", + "superCallFirstArg": "Jako první argument pro volání super se očekával typ třídy, ale přijal se {type}", + "superCallSecondArg": "Druhý argument volání super musí být objekt nebo třída odvozená z typu {type}", + "superCallZeroArgForm": "Forma nulového argumentu volání super je platná pouze v rámci třídy", + "symbolIsPossiblyUnbound": "{name} je pravděpodobně nevázané", + "symbolIsUnbound": "Název {name} je nevázaný", + "symbolIsUndefined": "{name} není definované", + "symbolOverridden": "{name} přepíše symbol stejného názvu ve třídě {className}", + "totalOrderingMissingMethod": "Třída musí definovat jednu z __lt__, __le__, __gt__ nebo __ge__, aby bylo možné používat total_ordering", + "trailingCommaInFromImport": "Koncová čárka není povolena bez okolních závorek", + "tryWithoutExcept": "Příkaz Try musí mít alespoň jednu klauzuli except nebo finally", + "tupleAssignmentMismatch": "Výraz s typem „{type}“ se nedá přiřadit cílové řazené kolekci členů", + "tupleInAnnotation": "Výraz řazené kolekce členů není v poznámce typu povolený", + "tupleIndexOutOfRange": "Index {index} je pro typ {type} mimo rozsah", + "typeAliasIllegalExpressionForm": "Neplatný formulář výrazu pro definici aliasu typu", + "typeAliasIsRecursiveDirect": "Alias typu „{name}“ nemůže ve své definici používat sám sebe", + "typeAliasNotInModuleOrClass": "Typ TypeAlias je možné definovat pouze v rámci oboru modulu nebo třídy", + "typeAliasRedeclared": "{name} se deklaruje jako TypAlias a dá se přiřadit jenom jednou", + "typeAliasStatementIllegal": "Příkaz alias typu vyžaduje Python 3.12 nebo novější", + "typeAliasTypeMustBeAssigned": "Typ TypeAliasType musí být přiřazen proměnné se stejným názvem jako alias typu", + "typeAliasTypeNameArg": "První argument typeAliasType musí být řetězcový literál představující název aliasu typu", + "typeAliasTypeNameMismatch": "Název aliasu typu se musí shodovat s názvem proměnné, ke které je přiřazená", + "typeAliasTypeParamInvalid": "Seznam parametrů typu musí být řazená kolekce členů obsahující pouze typeVar, TypeVarTuple nebo ParamSpec", + "typeAnnotationCall": "Neplatná poznámka typu: Výraz volání není povolený.", + "typeAnnotationVariable": "Neplatná poznámka typu: Proměnná není povolená, pokud se nejedná o alias typu", + "typeArgListExpected": "Očekával se parametr ParamSpec, tři tečky nebo seznam typů", + "typeArgListNotAllowed": "Výraz seznamu není pro tento argument typu povolený", + "typeArgsExpectingNone": "Pro třídu {name} se neočekávaly žádné argumenty typu", + "typeArgsMismatchOne": "Očekával se jeden argument typu, ale bylo přijato {received}", + "typeArgsMissingForAlias": "Pro alias obecného typu {name} se očekávaly argumenty typu", + "typeArgsMissingForClass": "Očekávané argumenty typu pro obecnou třídu „{name}“", + "typeArgsTooFew": "Pro {name} se zadalo příliš málo argumentů typu. Očekávalo se {expected}, ale přijalo se {received}", + "typeArgsTooMany": "Pro „{name}“ se zadalo příliš mnoho argumentů typu. Očekával(o/y) se {expected}, ale přijal(o/y) se {received}", + "typeAssignmentMismatch": "Výraz typu {sourceType} není možné přiřadit deklarovanému typu {destType}", + "typeCallNotAllowed": "Volání type() by se nemělo používat v poznámce typu", + "typeCommentDeprecated": "Použití komentářů typu je zastaralé místo toho použít anotaci typu", + "typeExpectedClass": "Očekával se výraz typu, ale přijal se {type}", + "typeGuardArgCount": "Za TypeGuard byl očekáván jeden argument typu", + "typeGuardParamCount": "Funkce a metody ochrany typů definované uživatelem musí mít alespoň jeden vstupní parametr", + "typeNotAwaitable": "„{type}“ se nedá očekávat.", + "typeNotCallable": "Výraz „{expression}“ má typ „{type}“ a nedá se volat", + "typeNotIntantiable": "Není možné vytvořit instanci {type}", + "typeNotIterable": "{type} není možné iterovat", + "typeNotSpecializable": "Nepovedlo se specializovat typ „{type}“", + "typeNotSubscriptable": "Objekt typu {type} není možné zadat jako dolní index", + "typeNotSupportBinaryOperator": "Operátor „{operator}“ se pro typy „{leftType}“ a „{rightType}“ nepodporuje", + "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}", + "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á", + "typeParameterNotDeclared": "Parametr typu {name} není zahrnutý v seznamu parametrů typu pro kontejner {container}", + "typeParametersMissing": "Musí být zadán alespoň jeden parametr typu", + "typePartiallyUnknown": "Typ {name} je částečně neznámý", + "typeUnknown": "Typ {name} je neznámý", + "typeVarAssignedName": "Typ TypeVar musí být přiřazen proměnné s názvem {name}", + "typeVarAssignmentMismatch": "Typ „{type}“ se nedá přiřadit proměnné typu „{name}“", + "typeVarBoundAndConstrained": "TypeVar nemůže být současně vázaný i omezený", + "typeVarBoundGeneric": "Vázaný typ TypeVar nemůže být obecný", + "typeVarConstraintGeneric": "Typ omezení TypeVar nemůže být obecný", + "typeVarDefaultBoundMismatch": "Výchozí typ TypeVar musí být podtyp vázaného typu", + "typeVarDefaultConstraintMismatch": "Výchozí typ TypeVar musí být jeden z omezených typů", + "typeVarDefaultIllegal": "Výchozí typy proměnných typů vyžadují Python 3.13 nebo novější", + "typeVarDefaultInvalidTypeVar": "Parametr typu {name} má výchozí typ, který odkazuje na jednu nebo více proměnných typu, které jsou mimo obor", + "typeVarFirstArg": "Očekával se název TypeVar jako první argument", + "typeVarNoMember": "TypeVar {type} nemá žádného člena {name}", + "typeVarNotSubscriptable": "TypeVar {type} není možné zadat jako dolní index", + "typeVarNotUsedByOuterScope": "Proměnná typu {name} nemá v tomto kontextu žádný význam", + "typeVarPossiblyUnsolvable": "Proměnná typu „{name}“ může být nevyřešená, pokud volající nezadá žádný argument pro parametr „{param}“", + "typeVarScopedToReturnType": "Proměnná typu „{name}“ je vymezená na volatelnou proměnnou v rámci návratového typu a nedá se na to odkazovat v těle funkce", + "typeVarSingleConstraint": "TypeVar musí mít alespoň dva omezené typy", + "typeVarTupleContext": "TypeVarTuple není v tomto kontextu povoleno", + "typeVarTupleDefaultNotUnpacked": "Výchozí typ TypeVarTuple musí být rozbalený řazená kolekce členů nebo TypeVarTuple", + "typeVarTupleMustBeUnpacked": "Pro hodnotu TypeVarTuple se vyžaduje operátor rozbalení", + "typeVarTupleUnknownParam": "{name} je neznámý parametr pro TypeVarTuple", + "typeVarUnknownParam": "„{name}“ je neznámý parametr pro TypeVar", + "typeVarUsedByOuterScope": "TypeVar „{name}“ se už používá ve vnějším oboru", + "typeVarUsedOnlyOnce": "TypeVar {name} se v signatuře obecné funkce zobrazuje jenom jednou", + "typeVarVariance": "TypeVar nemůže být kovariantní i kontravariantní", + "typeVarWithoutDefault": "„{name}“ se v seznamu parametrů typu nemůže zobrazit za „{other}“ , protože nemá žádný výchozí typ", + "typeVarsNotInGenericOrProtocol": "Generic[] nebo Protocol[] musí obsahovat všechny proměnné typu", + "typedDictAccess": "Nepovedlo se získat přístup k položce v TypedDict", + "typedDictBadVar": "Třídy TypedDict můžou obsahovat jenom poznámky typu", + "typedDictBaseClass": "Všechny základní třídy pro třídy TypedDict musí být také třídami TypedDict", + "typedDictBoolParam": "Očekávalo se, že parametr {name} bude mít hodnotu True nebo False", + "typedDictDelete": "Nepovedlo se odstranit položku v TypedDict", + "typedDictEmptyName": "Názvy v rámci TypedDict nemůžou být prázdné", + "typedDictEntryName": "Očekával se řetězcový literál pro název položky slovníku", + "typedDictEntryUnique": "Názvy ve slovníku musí být jedinečné", + "typedDictExtraArgs": "Nadbytečné argumenty TypedDict nejsou podporovány", + "typedDictFieldReadOnlyRedefinition": "Pole TypedDict {name} nejde předefinovat jako jen pro čtení", + "typedDictFieldTypeRedefinition": "Typ pole TypedDict {name} se nedá předefinovat", + "typedDictFirstArg": "Jako první argument byl očekáván název třídy TypedDict", + "typedDictSecondArgDict": "Jako druhý parametr se očekával parametr diktování nebo klíčového slova", + "typedDictSecondArgDictEntry": "Očekávaná jednoduchá položka slovníku", + "typedDictSet": "Nelze přiřadit položku v TypedDict", + "unaccessedClass": "Třída „{name}“ není přístupná", + "unaccessedFunction": "Funkce {name} není přístupná", + "unaccessedImport": "Import {name} není přístupný", + "unaccessedSymbol": "{name} není přístupné", + "unaccessedVariable": "Proměnná {name} není přístupná", + "unannotatedFunctionSkipped": "Analýza funkce „{name}“ se přeskočila, protože není označená", + "unexpectedAsyncToken": "Očekávalo se, že za async bude následovat def, with nebo for", + "unexpectedExprToken": "Neočekávaný token na konci výrazu", + "unexpectedIndent": "Neočekávané odsazení", + "unexpectedUnindent": "Neočekává se unindent", + "unhashableDictKey": "Klíč slovníku musí být hashovatelný", + "unhashableSetEntry": "Položka sady musí být hashovatelná", + "uninitializedAbstractVariables": "Proměnné definované v abstraktní základní třídě nejsou inicializovány v konečné třídě {classType}", + "uninitializedInstanceVariable": "Proměnná instance {name} není inicializována v těle třídy nebo v metodě __init__", + "unionForwardReferenceNotAllowed": "Syntaxi sjednocení není možné použít s operandem řetězce; použijte uvozovky kolem celého výrazu", + "unionSyntaxIllegal": "Alternativní syntaxe pro sjednocení vyžaduje Python 3.10 nebo novější", + "unionTypeArgCount": "Sjednocení vyžaduje dva nebo více argumentů typu", + "unmatchedEndregionComment": "#endregion chybí odpovídající #region", + "unmatchedRegionComment": "#region chybí odpovídající #endregion", + "unnecessaryCast": "Nepotřebné volání„přetypování“; Typ už je „{type}“.", + "unnecessaryIsInstanceAlways": "Zbytečné volání isinstance; {testType} je vždy instancí třídy {classType}", + "unnecessaryIsSubclassAlways": "Nepotřebné volání issubclass; „{testType}“ je vždy podtřídou třídy „{classType}“", + "unnecessaryPyrightIgnore": "Nepotřebný komentář „# pyright: ignore“", + "unnecessaryPyrightIgnoreRule": "Nepotřebné pravidlo # pyright: ignore: {name}", + "unnecessaryTypeIgnore": "Nepotřebný komentář „# type: ignore“", + "unpackArgCount": "Po rozbalení „Unpack“ se očekával jeden argument typu", + "unpackExpectedTypeVarTuple": "Jako argument typu pro rozbalení byl očekáván typ TypeVarTuple nebo řazená kolekce členů", + "unpackExpectedTypedDict": "Byl očekáván argument typu TypedDict pro rozbalení Unpack", + "unpackIllegalInComprehension": "Operace rozbalení není v porozumění povolená", + "unpackInAnnotation": "V poznámce typu není povolený operátor rozbalení", + "unpackInDict": "Operace rozbalení není ve slovnících povolena", + "unpackInSet": "Operátor rozbalení není v sadě povolený", + "unpackNotAllowed": "Rozbalení není v tomto kontextu povoleno", + "unpackOperatorNotAllowed": "Operace rozbalení není v tomto kontextu povolená", + "unpackTuplesIllegal": "Operace rozbalení není povolená v řazených kolekcích členů před Pythonem 3.8", + "unpackedArgInTypeArgument": "Rozbalené argumenty není možné použít v seznamech argumentů typu", + "unpackedArgWithVariadicParam": "Pro parametr TypeVarTuple nejde použít rozbalený argument", + "unpackedDictArgumentNotMapping": "Výraz argumentu za ** musí být mapování s typem klíče str", + "unpackedDictSubscriptIllegal": "Operátor rozbalení slovníku v dolním indexu není povolený", + "unpackedSubscriptIllegal": "Operátor rozbalení v dolním indexu vyžaduje Python 3.11 nebo novější", + "unpackedTypeVarTupleExpected": "Byl očekáván rozbalený typ TypeVarTuple; použijte Unpack[{name1}] nebo *{name2}", + "unpackedTypedDictArgument": "Nepovedlo se spárovat nebalený argument TypedDict s parametry", + "unreachableCode": "Kód je nedostupný", + "unreachableExcept": "Klauzule Except je nedosažitelná, protože výjimka je již zpracována", + "unsupportedDunderAllOperation": "Operace s __all__ se nepodporuje, takže exportovaný seznam symbolů nemusí být správný", + "unusedCallResult": "Výsledek výrazu volání je typu „{type}“ a nepoužívá se. přiřadit proměnné „_“, pokud je to záměrné", + "unusedCoroutine": "Výsledek volání asynchronní funkce se nepoužívá; použijte operátor await nebo přiřaďte výsledek proměnné", + "unusedExpression": "Hodnota výrazu se nepoužívá", + "varAnnotationIllegal": "Poznámky typu pro proměnné vyžadují Python 3.6 nebo novější; pro kompatibilitu s předchozími verzemi použijte komentáře typu", + "variableFinalOverride": "Proměnná {name} je označená jako final a přepíše proměnnou non-Final se stejným názvem ve třídě {className}", + "variadicTypeArgsTooMany": "Seznam argumentů typů může mít maximálně jeden rozbalený typ TypeVarTuple nebo řazenou kolekci členů", + "variadicTypeParamTooManyAlias": "Alias typu může mít maximálně jeden parametr typu TypeVarTuple, ale přijal několik ({names})", + "variadicTypeParamTooManyClass": "Obecná třída může mít maximálně jeden parametr typu TypeVarTuple, ale přijala více ({names})", + "walrusIllegal": "Operátor := vyžaduje Python 3.8 nebo novější", + "walrusNotAllowed": "Operátor := není v tomto kontextu povolen bez okolních závorek", + "wildcardInFunction": "Import se zástupnými znaky není v rámci třídy nebo funkce povolen", + "wildcardLibraryImport": "Import se zástupnými znaky z knihovny není povolený", + "wildcardPatternTypePartiallyUnknown": "Typ zachycený vzorem se zástupnými znaky je částečně neznámý", + "wildcardPatternTypeUnknown": "Typ zachycený vzorem se zástupnými znaky je neznámý", + "yieldFromIllegal": "Použití příkazu yield from vyžaduje Python 3.3 nebo novější", + "yieldFromOutsideAsync": "yield from není v asynchronní funkci povoleno", + "yieldOutsideFunction": "„yield“ není povoleno mimo funkci nebo lambdu", + "yieldWithinListCompr": "yield není povolen uvnitř seznamu porozumění", + "zeroCaseStatementsFound": "Výraz shody obsahovat alespoň jeden výraz velikosti písmen", + "zeroLengthTupleNotAllowed": "Řazená kolekce členů s nulovou délkou není v tomto kontextu povolená" + }, + "DiagnosticAddendum": { + "argParam": "Argument odpovídá parametru {paramName}", + "argParamFunction": "Argument odpovídá parametru {paramName} ve funkci {functionName}", + "argsParamMissing": "Parametr „*{paramName}“ nemá žádný odpovídající parametr", + "argsPositionOnly": "Neshoda parametrů pouze s pozicí; Očekával(o/y) se {expected}, ale přijal(o/y) se {received}", + "argumentType": "Typ argumentu je {type}", + "argumentTypes": "Typy argumentů: ({types})", + "assignToNone": "Typ není možné přiřadit typu None", + "asyncHelp": "Měli jste na mysli „async s“?", + "baseClassOverriddenType": "Základní třída {baseClass} poskytuje typ {type}, který je přepsán", + "baseClassOverridesType": "Základní třída „{baseClass}“ přepisuje typ „{type}“", + "conditionalRequiresBool": "Metoda __bool__ pro typ {operandType} vrací typ {boolReturnType} místo bool", + "dataClassFieldLocation": "Deklarace pole", + "dataClassFrozen": "{name} je zablokované", + "finalMethod": "Konečná metoda", + "functionParamDefaultMissing": "V parametru „{name}“ chybí výchozí argument", + "functionParamName": "Neshoda názvu parametru: {destName} a {srcName}", + "functionReturnTypeMismatch": "Návratový typ funkce „{sourceType}“ není kompatibilní s typem „{destType}“", + "functionTooFewParams": "Funkce přijímá příliš málo pozičních parametrů; očekávaný počet: {expected}, počet, který byl přijat: {received}", + "functionTooManyParams": "Funkce přijímá příliš mnoho pozičních parametrů; očekávaný počet: {expected}, počet, který byl přijat: {received}", + "incompatibleDeleter": "Metoda odstranění vlastnosti je nekompatibilní", + "incompatibleGetter": "Metoda getter vlastnosti je nekompatibilní", + "incompatibleSetter": "Metoda setter vlastnosti je nekompatibilní", + "initMethodLocation": "Metoda __init__ je definována ve třídě {type}", + "initMethodSignature": "Podpis __init__ je {type}", + "keyNotRequired": "„{name}! není v typu „{type}“ povinný klíč, takže přístup může vést k výjimce modulu runtime", + "keyReadOnly": "{name} je klíč jen pro čtení v {type}", + "keyRequiredDeleted": "{name} je povinný klíč a nedá se odstranit", + "keyUndefined": "{name} není definovaný klíč v typu {type}", + "kwargsParamMissing": "Parametr „**{paramName}“ nemá žádný odpovídající parametr", + "listAssignmentMismatch": "Typ {type} není kompatibilní s cílovým seznamem", + "literalAssignmentMismatch": "{sourceType} se nedá přiřadit k typu {destType}", + "matchIsNotExhaustiveHint": "Pokud není zamýšleno vyčerpávající zpracování, přidejte case _: pass", + "matchIsNotExhaustiveType": "Nezpracovaný typ: {type}", + "memberAssignment": "Výraz typu „{type}“ nelze přiřadit členu „{name}“ třídy „{classType}“", + "memberIsAbstract": "„{type}. {name}“ je abstraktní", + "memberIsAbstractMore": "a tento počet dalších: {count}...", + "memberIsFinalInProtocol": "{name} je v protokolu označený jako Final", + "memberIsInitVar": "Člen {name} je pole jen pro inicializaci", + "memberIsInvariant": "{name} je invariantní, protože je proměnlivé", + "memberIsNotFinalInProtocol": "„{name}“ není v protokolu označeno jako Final", + "memberSetClassVar": "Člen „{name}“ nelze přiřadit prostřednictvím instance třídy, protože se jedná o třídu ClassVar", + "memberTypeMismatch": "{name} je nekompatibilní typ", + "memberUnknown": "Člen {name} je neznámý", + "missingDeleter": "Chybí metoda odstranění vlastnosti", + "missingGetter": "Chybí metoda getter vlastnosti", + "missingProtocolMember": "Člen {name} je deklarován ve třídě protokolu {classType}", + "missingSetter": "Chybí metoda nastavovacího kódu vlastnosti", + "namedParamMissingInDest": "V cíli chybí parametr klíčového slova {name}", + "namedParamMissingInSource": "Ve zdroji chybí parametr klíčového slova „{name}“", + "namedParamTypeMismatch": "Parametr klíčového slova {name} typu {sourceType} není možné přiřadit typu {destType}", + "newMethodLocation": "Metoda __new__ je definována ve třídě {type}", + "newMethodSignature": "Podpis __new__ je {type}", + "noOverloadAssignable": "Typ {type} neodpovídá žádné přetížené funkci", + "orPatternMissingName": "Chybějící názvy: {name}", + "overloadNotAssignable": "Nejméně jedno přetížení {name} není možné přiřadit", + "overloadSignature": "Tady je definován podpis přetížení", + "overloadWithImplementation": "Tělo přetížení funkce by mělo být ...", + "overriddenMethod": "Přepsaná metoda", + "overriddenSymbol": "Přepsaný symbol", + "overrideNoOverloadMatches": "Signatura přetížení v přepsání není kompatibilní se základní metodou", + "overrideNotClassMethod": "Základní metoda je deklarována jako metoda classmethod, ale přepsání není", + "overrideNotInstanceMethod": "Základní metoda je deklarována jako instanční metoda, ale přepsání není", + "overrideNotStaticMethod": "Základní metoda je deklarována jako staticmethod, ale přepsání není", + "overrideOverloadNoMatch": "{index} přetížení není kompatibilní se základní metodou", + "overrideOverloadOrder": "Přetížení přepisované metody musí být ve stejném pořadí jako základní metoda", + "overrideParamKeywordNoDefault": "Neshoda parametru klíčového slova „{name}“: základní parametr má výchozí hodnotu argumentu, parametr pro přepsání ne", + "overrideParamKeywordType": "Neshoda typu parametru klíčového slova „{name}“: základní parametr je typu „{baseType}“, parametr přepsání je typu „{overrideType}“", + "overrideParamName": "Neshoda názvu parametru {index}: základní parametr má název „{baseName}“, parametr přepsání má název „{overrideName}“", + "overrideParamNameExtra": "V základu chybí parametr {name}", + "overrideParamNameMissing": "V přepsání chybí parametr „{name}“", + "overrideParamNamePositionOnly": "Neshoda názvu parametru {index}: základní parametr je pojmenován {baseName}, přepisující parametr je pouze pozice", + "overrideParamNoDefault": "Neshoda parametru {index}: Základní parametr má výchozí hodnotu argumentu, parametr přepsání se neshoduje.", + "overrideParamType": "Neshoda typu parametru {index}: Základní parametr je typu „{baseType}“, parametr přepsání je typu „{overrideType}“.", + "overridePositionalParamCount": "Neshoda počtu pozičních parametrů; Základní metoda má „{baseCount}“, ale přepsání má {overrideCount}", + "overrideReturnType": "Neshoda návratového typu: Základní metoda vrací typ {baseType}, přepsání vrací typ {overrideType}", + "overrideType": "Základní třída definuje typ jako {type}", + "paramAssignment": "Parametr {index}: Typ {sourceType} není možné přiřadit typu {destType}", + "paramSpecMissingInOverride": "V metodě přepsání chybí parametry ParamSpec", + "paramType": "Typ parametru je {paramType}", + "privateImportFromPyTypedSource": "Místo toho importovat z modulu {module}", + "propertyAccessFromProtocolClass": "Vlastnost definovaná v rámci třídy protokolu není přístupná jako proměnná třídy", + "propertyMethodIncompatible": "Metoda vlastnosti {name} není kompatibilní", + "propertyMethodMissing": "V přepsání chybí metoda vlastnosti „{name}“", + "propertyMissingDeleter": "Vlastnost {name} nemá definovaný odstraňovač", + "propertyMissingSetter": "Vlastnost {name} nemá definovanou metodu setter", + "protocolIncompatible": "{sourceType} není kompatibilní s protokolem {destType}", + "protocolMemberClassVar": "{name} není proměnná třídy", + "protocolMemberMissing": "{name} není k dispozici", + "protocolSourceIsNotConcrete": "„{sourceType}“ není konkrétní typ třídy a nedá se přiřadit k typu „{destType}“", + "pyrightCommentIgnoreTip": "Pokud chcete potlačit diagnostiku pro jeden řádek, použijte # pyright: ignore[]", + "readOnlyAttribute": "Atribut {name} je jen pro čtení", + "seeClassDeclaration": "Viz deklarace třídy", + "seeDeclaration": "Viz deklarace", + "seeFunctionDeclaration": "Viz deklarace funkce", + "seeMethodDeclaration": "Viz deklarace metody", + "seeParameterDeclaration": "Viz deklarace parametru", + "seeTypeAliasDeclaration": "Zobrazit deklaraci aliasu typu", + "seeVariableDeclaration": "Zobrazit deklaraci proměnné", + "tupleAssignmentMismatch": "Typ „{type}“ není kompatibilní s cílovou řazenou kolekcí členů", + "tupleEntryTypeMismatch": "Položka řazené kolekce členů {entry} je nesprávného typu", + "tupleSizeMismatch": "Neshoda velikosti elementu; očekávaný počet: {expected}, počet, který byl přijat: {received}", + "typeAssignmentMismatch": "Typ {sourceType} se nedá přiřadit k typu {destType}", + "typeBound": "Typ {sourceType} je nekompatibilní s vázaným typem {destType} pro proměnnou typu {name}", + "typeConstrainedTypeVar": "Typ {type} není kompatibilní s proměnnou omezeného typu {name}", + "typeIncompatible": "{sourceType} není kompatibilní s typem {destType}", + "typeNotCallable": "Typ {type} nejde volat", + "typeNotClass": "{type} není třída", + "typeNotStringLiteral": "„{type}“ není řetězcový literál", + "typeOfSymbol": "Typ „{name}“ je „{type}“", + "typeParamSpec": "Typ {type} není kompatibilní s parametrem ParamSpec {name}", + "typeUnsupported": "Typ {type} není podporován", + "typeVarDefaultOutOfScope": "Proměnná typu {name} není v oboru", + "typeVarIsContravariant": "TypeVar {name} je kontravariantní", + "typeVarIsCovariant": "TypeVar {name} je kovariantní", + "typeVarIsInvariant": "TypeVar {name} je invariantní", + "typeVarNotAllowed": "TypeVar nebo obecný typ s argumenty typu není povolený", + "typeVarTupleRequiresKnownLength": "Typ TypeVarTuple nemůže být vázaný na řazenou kolekci členů neznámé délky", + "typeVarUnsolvableRemedy": "Zadejte přetížení, které určuje návratový typ, pokud argument není zadán", + "typeVarsMissing": "Chybějící proměnné typu: {names}", + "typedDictFieldMissing": "V {type} chybí {name}", + "typedDictFieldNotReadOnly": "{name} není v {type} jen pro čtení", + "typedDictFieldNotRequired": "{name} se v typu {type} nevyžaduje", + "typedDictFieldRequired": "{name} se vyžaduje v {type}", + "typedDictFieldTypeMismatch": "Typ {type} se nedá přiřadit k poli {name}", + "typedDictFieldTypeRedefinition": "Typ v nadřazené třídě je {parentType} a typ v podřízené třídě je {childType}", + "typedDictFieldUndefined": "{name} je nedefinované pole v typu {type}", + "typedDictFinalMismatch": "{sourceType} není kompatibilní s {destType} z důvodu neshody @final", + "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": "Označte typ slovníku pomocí Dict[T1, T2]", + "useListInstead": "Použijte List[T] k označení typu seznamu nebo Union[T1, T2] k označení typu sjednocení", + "useTupleInstead": "Použijte Tuple[T1, ..., Tn] k označení typu řazené kolekce členů nebo Union[T1, T2] k označení typu sjednocení", + "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}“" + } +} diff --git a/packages/pyright-internal/src/localization/package.nls.de.json b/packages/pyright-internal/src/localization/package.nls.de.json index 0db3279e4..ef002ad7e 100644 --- a/packages/pyright-internal/src/localization/package.nls.de.json +++ b/packages/pyright-internal/src/localization/package.nls.de.json @@ -1,3 +1,718 @@ { - + "CodeAction": { + "addOptionalToAnnotation": "\"Optional\" zur Typanmerkung hinzufügen", + "createTypeStub": "Typstub erstellen", + "createTypeStubFor": "Typstub für \"{moduleName}\" erstellen", + "executingCommand": "Der Befehl wird ausgeführt.", + "filesToAnalyzeCount": "{count} Dateien zu analysieren", + "filesToAnalyzeOne": "1 zu analysierende Datei", + "findingReferences": "Verweise werden gesucht", + "organizeImports": "Import-Direktiven organisieren", + "renameShadowedFile": "\"{oldFile}\" in \"{newFile}\" umbenennen" + }, + "Diagnostic": { + "abstractMethodInvocation": "Die Methode \"{method}\" kann nicht aufgerufen werden, da sie abstrakt ist.", + "annotatedParamCountMismatch": "Nicht übereinstimmende Parameteranmerkungsanzahl: {expected} erwartet, aber {received} empfangen", + "annotatedTypeArgMissing": "Es wurde ein Typargument und mindestens eine Anmerkung für \"Annotated\" erwartet.", + "annotationFormatString": "Typanmerkungen können keine Formatzeichenfolgenliterale (f-strings) verwenden.", + "annotationNotSupported": "Typanmerkung wird für diese Anweisung nicht unterstützt.", + "annotationSpansStrings": "Typanmerkungen dürfen nicht mehrere Zeichenfolgenliterale umfassen.", + "annotationStringEscape": "Typanmerkungen dürfen keine Escapezeichen enthalten.", + "argAssignment": "Ein Argument vom Typ \"{argType}\" kann dem Parameter vom Typ \"{paramType}\" nicht zugewiesen werden.", + "argAssignmentFunction": "Ein Argument vom Typ \"{argType}\" kann dem Parameter vom Typ \"{paramType}\" in der Funktion \"{functionName}\" nicht zugewiesen werden.", + "argAssignmentParam": "Ein Argument vom Typ \"{argType}\" kann dem Parameter \"{paramName}\" vom Typ \"{paramType}\" nicht zugewiesen werden.", + "argAssignmentParamFunction": "Ein Argument vom Typ \"{argType}\" kann dem Parameter \"{paramName}\" vom Typ \"{paramType}\" in der Funktion \"{functionName}\" nicht zugewiesen werden.", + "argMissingForParam": "Für Parameter {name} fehlt ein Argument.", + "argMissingForParams": "Fehlende Argumente für die Parameter {names}", + "argMorePositionalExpectedCount": "Es wurden {expected} weitere Positionsargumente erwartet.", + "argMorePositionalExpectedOne": "Es wurde 1 weiteres Positionsargument erwartet.", + "argPositional": "Positionsargument erwartet", + "argPositionalExpectedCount": "Es wurden {expected} Positionsargumente erwartet.", + "argPositionalExpectedOne": "Es wurde 1 Positionsargument erwartet.", + "argTypePartiallyUnknown": "Der Argumenttyp ist teilweise unbekannt", + "argTypeUnknown": "Argumenttyp ist unbekannt", + "assertAlwaysTrue": "Assertausdruck wird immer als True ausgewertet.", + "assertTypeArgs": "\"assert_type\" erwartet zwei Positionsargumente.", + "assertTypeTypeMismatch": "\"assert_type\" Konflikt: \"{expected}\" erwartet, aber \"{received}\" empfangen", + "assignmentExprComprehension": "Ziel des Zuweisungsausdrucks \"{name}\" kann nicht denselben Namen wie das Verständnis für das Ziel verwenden.", + "assignmentExprContext": "Der Zuweisungsausdruck muss sich innerhalb des Moduls, der Funktion oder der Lambdafunktion befinden.", + "assignmentExprInSubscript": "Zuweisungsausdrücke innerhalb eines Tiefgestellten werden nur in Python 3.10 und höher unterstützt.", + "assignmentInProtocol": "Instanzen- oder Klassenvariablen innerhalb einer Protokollklasse müssen explizit innerhalb des Klassentexts deklariert werden.", + "assignmentTargetExpr": "Der Ausdruck kann kein Zuweisungsziel sein.", + "asyncNotInAsyncFunction": "Die Verwendung von \"async\" ist außerhalb einer asynchronen Funktion nicht zulässig.", + "awaitIllegal": "Die Verwendung von \"await\" erfordert Python 3.5 oder höher.", + "awaitNotInAsync": "\"await\" ist nur innerhalb einer asynchronen Funktion zulässig.", + "backticksIllegal": "Ausdrücke, die von Backticks umgeben sind, werden in Python 3.x nicht unterstützt; verwenden Sie stattdessen repr", + "baseClassCircular": "Die Klasse kann nicht von sich selbst abgeleitet werden.", + "baseClassFinal": "Die Basisklasse \"{type}\" ist als final gekennzeichnet und kann nicht als Unterklasse verwendet werden.", + "baseClassInvalid": "Das Argument für die Klasse muss eine Basisklasse sein.", + "baseClassMethodTypeIncompatible": "Basisklassen für die Klasse \"{classType}\" definieren die Methode \"{name}\" auf inkompatible Weise.", + "baseClassUnknown": "Der Basisklassentyp ist unbekannt, sodass der Typ der abgeleiteten Klasse verdeckt wird.", + "baseClassVariableTypeIncompatible": "Basisklassen für die Klasse \"{classType}\" definieren die Variable \"{name}\" auf inkompatible Weise.", + "bindTypeMismatch": "Die Methode \"{methodName}\" konnte nicht gebunden werden, da \"{type}\" dem Parameter \"{paramName}\" nicht zugewiesen werden kann.", + "breakOutsideLoop": "\"break\" kann nur innerhalb einer Schleife verwendet werden.", + "callableExtraArgs": "Es wurden nur zwei Typargumente für \"Callable\" erwartet.", + "callableFirstArg": "Parametertypliste oder \"...\" erwartet.", + "callableNotInstantiable": "Der Typ \"{type}\" kann nicht instanziiert werden.", + "callableSecondArg": "Rückgabetyp als zweites Typargument für \"Callable\" erwartet", + "casePatternIsIrrefutable": "Ein unwiderlegbares Muster ist nur für die letzte case-Anweisung zulässig.", + "classAlreadySpecialized": "Der Typ \"{type}\" ist bereits spezialisiert.", + "classDecoratorTypeUnknown": "Der nicht typisierte Klassendekorator verdeckt den Typ der Klasse; Decorator wird ignoriert.", + "classDefinitionCycle": "Die Klassendefinition für \"{name}\" hängt von sich selbst ab.", + "classGetItemClsParam": "__class_getitem__ Außerkraftsetzung sollte einen \"cls\"-Parameter annehmen.", + "classMethodClsParam": "Klassenmethoden sollten einen \"cls\"-Parameter verwenden.", + "classNotRuntimeSubscriptable": "Durch das Tiefstellungsskript für die Klasse \"{name}\" wird eine Laufzeitausnahme generiert; schließen Sie die Typanmerkung in Anführungszeichen ein", + "classPatternBuiltInArgCount": "Das Klassenmuster akzeptiert höchstens 1 positionsbezogenes Untermuster.", + "classPatternBuiltInArgPositional": "Das Klassenmuster akzeptiert nur positionsbezogenes Untermuster.", + "classPatternTypeAlias": "\"{type}\" kann nicht in einem Klassenmuster verwendet werden, da es sich um einen spezialisierten Typalias handelt.", + "classTypeParametersIllegal": "Die Syntax des Klassentypparameters erfordert Python 3.12 oder höher.", + "classVarFirstArgMissing": "Nach \"ClassVar\" wurde ein Typargument erwartet.", + "classVarNotAllowed": "\"ClassVar\" ist in diesem Kontext nicht zulässig.", + "classVarOverridesInstanceVar": "Die Klassenvariable \"{name}\" überschreibt die Instanzvariable desselben Namens in der Klasse \"{className}\"", + "classVarTooManyArgs": "Nach \"ClassVar\" wird ein Typargument erwartet.", + "classVarWithTypeVar": "Der Typ \"ClassVar\" darf keine Typvariablen enthalten.", + "clsSelfParamTypeMismatch": "Der Typ des Parameters \"{name}\" muss ein Obertyp seiner Klasse \"{classType}\" sein", + "codeTooComplexToAnalyze": "Der Code ist zu komplex für die Analyse; verringern Sie die Komplexität durch Refactoring in Unterroutinen oder durch Reduzieren bedingter Codepfade", + "collectionAliasInstantiation": "Der Typ \"{type}\" kann nicht instanziiert werden, verwenden Sie stattdessen \"{alias}\".", + "comparisonAlwaysFalse": "Die Bedingung wird immer als False ausgewertet, da die Typen \"{leftType}\" und \"{rightType}\" keine Überlappung aufweisen.", + "comparisonAlwaysTrue": "Die Bedingung wird immer als True ausgewertet, da die Typen \"{leftType}\" und \"{rightType}\" keine Überlappung aufweisen.", + "comprehensionInDict": "Verständnis kann nicht mit anderen Wörterbucheinträgen verwendet werden.", + "comprehensionInSet": "Verständnis kann nicht mit anderen Satzeinträgen verwendet werden.", + "concatenateParamSpecMissing": "Das letzte Typargument für \"Concatenate\" muss ein ParamSpec sein.", + "concatenateTypeArgsMissing": "\"Verketten\" erfordert mindestens zwei Typargumente.", + "conditionalOperandInvalid": "Ungültiger bedingter Operand vom Typ \"{type}\"", + "constantRedefinition": "\"{name}\" ist konstant (da es sich um Großbuchstaben handelt) und kann nicht neu definiert werden.", + "constructorNoArgs": "Es wurden keine Argumente für \"{type}\" Konstruktor erwartet.", + "constructorParametersMismatch": "Keine Übereinstimmung zwischen der Signatur von __new__ und __init__ in der Klasse \"{classType}\"", + "containmentAlwaysFalse": "Der Ausdruck wird immer als False ausgewertet, da die Typen \"{leftType}\" und \"{rightType}\" keine Überlappung aufweisen.", + "containmentAlwaysTrue": "Der Ausdruck wird immer als True ausgewertet, da die Typen \"{leftType}\" und \"{rightType}\" keine Überlappung aufweisen.", + "continueInFinally": "\"continue\" kann nicht innerhalb einer finally-Klausel verwendet werden.", + "continueOutsideLoop": "\"continue\" kann nur innerhalb einer Schleife verwendet werden.", + "dataClassBaseClassFrozen": "Eine nicht fixierte Klasse kann nicht von einer fixierten Klasse erben.", + "dataClassBaseClassNotFrozen": "Eine fixierte Klasse kann nicht von einer nicht fixierten Klasse erben.", + "dataClassConverterFunction": "Das Argument vom Typ \"{argType}\" ist kein gültiger Konverter für das Feld \"{fieldName}\" vom Typ \"{fieldType}\"", + "dataClassConverterOverloads": "Keine Überladungen von \"{funcName}\" sind gültige Konverter für das Feld \"{fieldName}\" vom Typ \"{fieldType}\"", + "dataClassFieldWithDefault": "Felder ohne Standardwerte dürfen nicht nach Feldern mit Standardwerten angezeigt werden.", + "dataClassFieldWithPrivateName": "Das Feld \"Dataclass\" kann keinen privaten Namen verwenden.", + "dataClassFieldWithoutAnnotation": "Datenklassenfeld ohne Typanmerkung verursacht eine Laufzeitausnahme", + "dataClassPostInitParamCount": "Dataclass __post_init__ falsche Parameteranzahl; Anzahl von InitVar-Feldern ist {expected}", + "dataClassPostInitType": "Dataclass __post_init__ Methodenparametertypkonflikt für Feld \"{fieldName}\"", + "dataClassSlotsOverwrite": "__slots__ ist bereits in der Klasse definiert.", + "dataClassTransformExpectedBoolLiteral": "Es wurde ein Ausdruck erwartet, der statisch als True oder False ausgewertet wird.", + "dataClassTransformFieldSpecifier": "Es wurde ein Tupel von Klassen oder Funktionen erwartet, es wurde jedoch der Typ \"{type}\" empfangen", + "dataClassTransformPositionalParam": "Alle Argumente für \"dataclass_transform\" müssen Schlüsselwortargumente sein.", + "dataClassTransformUnknownArgument": "Argument \"{name}\" wird von dataclass_transform nicht unterstützt.", + "declaredReturnTypePartiallyUnknown": "Der deklarierte Rückgabetyp \"{returnType}\" ist teilweise unbekannt.", + "declaredReturnTypeUnknown": "Unbekannter Rückgabetyp deklariert", + "defaultValueContainsCall": "Funktionsaufrufe und änderbare Objekte sind innerhalb des Parameterstandardwertausdrucks nicht zulässig.", + "defaultValueNotAllowed": "Ein Parameter mit \"*\" oder \"**\" darf keinen Standardwert aufweisen.", + "delTargetExpr": "Der Ausdruck kann nicht gelöscht werden", + "deprecatedClass": "Die Klasse \"{name}\" ist veraltet.", + "deprecatedConstructor": "Der Konstruktor für die Klasse \"{name}\" ist veraltet.", + "deprecatedFunction": "Die Funktion \"{name}\" ist veraltet.", + "deprecatedType": "Dieser Typ ist ab python-{version} veraltet; verwenden Sie stattdessen \"{replacement}\"", + "dictExpandIllegalInComprehension": "Wörterbucherweiterung ist im Verständnis nicht zulässig.", + "dictInAnnotation": "Ein Wörterbuchausdruck ist in der Typanmerkung nicht zulässig.", + "dictKeyValuePairs": "Wörterbucheinträge müssen Schlüssel-Wert-Paare enthalten.", + "dictUnpackIsNotMapping": "Es wird eine Zuordnung für den Operator zum Entpacken des Wörterbuchs erwartet.", + "dunderAllSymbolNotPresent": "\"{name}\" ist in __all__ angegeben, aber nicht im Modul vorhanden.", + "duplicateArgsParam": "Es ist nur ein \"*\"-Parameter zulässig.", + "duplicateBaseClass": "Doppelte Basisklasse nicht zulässig", + "duplicateCapturePatternTarget": "\"{name}\" des Erfassungsziels darf nicht mehrmals innerhalb desselben Musters vorkommen.", + "duplicateCatchAll": "Es ist nur eine catch-all except-Klausel zulässig.", + "duplicateEnumMember": "Der Enumerationsmember \"{name}\" wurde bereits deklariert.", + "duplicateGenericAndProtocolBase": "Es ist nur eine Generic[...]- oder ein Protocol[...]-Basisklasse zulässig.", + "duplicateImport": "\"{importName}\" wurde mehrmals importiert.", + "duplicateKeywordOnly": "Es ist nur ein \"*\"-Trennzeichen zulässig.", + "duplicateKwargsParam": "Es ist nur ein \"**\"-Parameter zulässig.", + "duplicateParam": "Doppelter Parameter \"{name}\"", + "duplicatePositionOnly": "Es ist nur ein \"/\"-Parameter zulässig.", + "duplicateStarPattern": "In einer Mustersequenz ist nur ein \"*\"-Muster zulässig.", + "duplicateStarStarPattern": "Es ist nur ein \"**\"-Eintrag zulässig.", + "duplicateUnpack": "In der Liste ist nur ein Vorgang zum Entpacken zulässig.", + "ellipsisContext": "\"...\" ist in diesem Kontext nicht zulässig.", + "ellipsisSecondArg": "\"...\" nur als zweites von zwei Argumenten zulässig", + "enumClassOverride": "Die Enumerationsklasse \"{name}\" ist final und kann nicht in eine Unterklasse aufgenommen werden.", + "exceptionGroupIncompatible": "Die Ausnahmegruppensyntax (\"except*\") erfordert Python 3.11 oder höher.", + "exceptionTypeIncorrect": "\"{type}\" ist nicht von BaseException abgeleitet.", + "exceptionTypeNotClass": "\"{type}\" ist keine gültige Ausnahmeklasse.", + "exceptionTypeNotInstantiable": "Der Konstruktor für den Ausnahmetyp \"{type}\" erfordert mindestens ein Argument.", + "expectedAfterDecorator": "Es wurde eine Funktions- oder Klassendeklaration nach dem Decorator erwartet.", + "expectedArrow": "\"->\" gefolgt von Rückgabetypanmerkung erwartet", + "expectedAsAfterException": "\"as\" nach Ausnahmetyp erwartet", + "expectedAssignRightHandExpr": "Ausdruck rechts von \"=\" erwartet", + "expectedBinaryRightHandExpr": "Ausdruck rechts vom Operator", + "expectedBoolLiteral": "\"True\" oder \"False\" erwartet", + "expectedCase": "\"case\"-Anweisung erwartet", + "expectedClassName": "Klassenname erwartet", + "expectedCloseBrace": "\"{\" wurde nicht geschlossen.", + "expectedCloseBracket": "\"[\" wurde nicht geschlossen.", + "expectedCloseParen": "\"(\" wurde nicht geschlossen.", + "expectedColon": "\":\" erwartet", + "expectedComplexNumberLiteral": "Für den Musterabgleich wurde ein komplexes Zahlenliteral erwartet.", + "expectedDecoratorExpr": "Das Ausdrucksformular wird für den Decorator vor Python 3.9 nicht unterstützt.", + "expectedDecoratorName": "Decoratorname erwartet", + "expectedDecoratorNewline": "Am Ende des Decorators wurde eine neue Zeile erwartet.", + "expectedDelExpr": "Ausdruck nach \"del\" erwartet", + "expectedElse": "Unerwartetes \"else\"", + "expectedEquals": "\"=\" erwartet", + "expectedExceptionClass": "Ungültige Ausnahmeklasse oder ungültiges Objekt.", + "expectedExceptionObj": "Ausnahmeobjekt, Ausnahmeklasse oder None erwartet", + "expectedExpr": "Ausdruck erwartet.", + "expectedFunctionAfterAsync": "Funktionsdefinition nach \"async\" erwartet", + "expectedFunctionName": "Funktionsname nach \"def\" erwartet", + "expectedIdentifier": "Bezeichner erwartet", + "expectedImport": "\"import\" erwartet", + "expectedImportAlias": "Symbol nach \"as\" erwartet", + "expectedImportSymbols": "Nach dem Import wurde mindestens ein Symbolname erwartet.", + "expectedIn": "\"in\" wurde erwartet.", + "expectedInExpr": "Ausdruck nach \"in\" erwartet", + "expectedIndentedBlock": "Eingerückter Block erwartet", + "expectedMemberName": "Membername nach \".\" erwartet", + "expectedModuleName": "Modulname erwartet", + "expectedNameAfterAs": "Symbolname nach \"as\" erwartet", + "expectedNamedParameter": "Der Schlüsselwortparameter muss auf \"*\" folgen.", + "expectedNewline": "Zeilenumbruch erwartet", + "expectedNewlineOrSemicolon": "Anweisungen müssen durch Zeilenumbrüche oder Semikolons getrennt werden.", + "expectedOpenParen": "\"(\" erwartet", + "expectedParamName": "Parametername erwartet", + "expectedPatternExpr": "Musterausdruck erwartet", + "expectedPatternSubjectExpr": "Musterbetreffausdruck erwartet", + "expectedPatternValue": "Es wurde ein Musterwertausdruck im Format \"a.b\" erwartet.", + "expectedReturnExpr": "Ausdruck nach \"return\" erwartet", + "expectedSliceIndex": "Index- oder Sliceausdruck erwartet", + "expectedTypeNotString": "Typ erwartet, aber Zeichenfolgenliteral empfangen", + "expectedTypeParameterName": "Name für Typparameter erwartet", + "expectedYieldExpr": "Ausdruck in yield-Anweisung erwartet", + "finalClassIsAbstract": "Die Klasse \"{type}\" ist als final gekennzeichnet und muss alle abstrakten Methoden implementieren.", + "finalContext": "\"Final\" ist in diesem Kontext nicht zulässig.", + "finalMethodOverride": "Die Methode \"{name}\" kann die in der Klasse definierte endgültige Methode \"{className}\" nicht überschreiben.", + "finalReassigned": "\"{name}\" ist als \"Final\" deklariert und kann nicht neu zugewiesen werden.", + "finalRedeclaration": "\"{name}\" wurde zuvor als \"Final\" deklariert.", + "finalRedeclarationBySubclass": "\"{name}\" kann nicht neu deklariert werden, da die übergeordnete Klasse \"{className}\" es als Final deklariert.", + "finalTooManyArgs": "Nach \"Final\" wurde ein einzelnes Typargument erwartet.", + "finalUnassigned": "\"{name}\" ist als Final deklariert, aber der Wert ist nicht zugewiesen.", + "formatStringBrace": "Eine einzelne schließende geschweifte Klammer ist innerhalb des f-string-Literals nicht zulässig; verwenden Sie doppelte schließende geschweifte Klammern.", + "formatStringBytes": "Formatzeichenfolgenliterale (f-strings) dürfen nicht binär sein.", + "formatStringDebuggingIllegal": "Der F-String-Debugspezifizierer \"=\" erfordert Python 3.8 oder höher.", + "formatStringEscape": "Escapesequenz (umgekehrter Schrägstrich) ist im Ausdrucksteil der f-Zeichenfolge vor Python 3.12 nicht zulässig.", + "formatStringExpectedConversion": "Nach \"!\" in f-string wurde ein Konvertierungsspezifizierer erwartet.", + "formatStringIllegal": "Formatzeichenfolgenliterale (f-strings) erfordern Python 3.6 oder höher.", + "formatStringInPattern": "Die Formatzeichenfolge ist im Muster nicht zulässig.", + "formatStringNestedFormatSpecifier": "Ausdrücke sind zu tief im Formatzeichenfolgenspezifizierer geschachtelt.", + "formatStringNestedQuote": "Zeichenfolgen, die in einer f-Zeichenfolge geschachtelt sind, dürfen nicht dasselbe Anführungszeichen wie die f-Zeichenfolge vor Python 3.12 verwenden.", + "formatStringUnicode": "Formatzeichenfolgenliterale (f-strings) dürfen nicht Unicode sein.", + "formatStringUnterminated": "Nicht abgeschlossener Ausdruck in f-string; \"}\" wird erwartet.", + "functionDecoratorTypeUnknown": "Ein nicht typisierter Funktionsdekorator verdeckt den Funktionstyp; Decorator wird ignoriert.", + "functionInConditionalExpression": "Bedingter Ausdruck verweist auf eine Funktion, die immer zu \"True\" ausgewertet wird.", + "functionTypeParametersIllegal": "Die Syntax des Funktionstypparameters erfordert Python 3.12 oder höher.", + "futureImportLocationNotAllowed": "Importe von __future__ müssen am Anfang der Datei auftreten", + "generatorAsyncReturnType": "Der Rückgabetyp der asynchronen Generatorfunktion muss mit \"AsyncGenerator[{yieldType}, Any]\" kompatibel sein.", + "generatorNotParenthesized": "Generatorausdrücke müssen in Klammern gesetzt werden, wenn sie nicht das einzige Argument sind.", + "generatorSyncReturnType": "Der Rückgabetyp der Generatorfunktion muss mit \"Generator[{yieldType}, Any, Any]\" kompatibel sein.", + "genericBaseClassNotAllowed": "Die Basisklasse \"Generic\" kann nicht mit der Typparametersyntax verwendet werden.", + "genericClassAssigned": "Der generische Klassentyp kann nicht zugewiesen werden.", + "genericClassDeleted": "Der generische Klassentyp kann nicht gelöscht werden.", + "genericNotAllowed": "\"Generic\" ist in diesem Kontext nicht gültig.", + "genericTypeAliasBoundTypeVar": "Der generische Typalias innerhalb der Klasse kann keine gebundenen Typvariablen {names} verwenden.", + "genericTypeArgMissing": "\"Generic\" erfordert mindestens ein Typargument.", + "genericTypeArgTypeVar": "Das Typargument für \"Generic\" muss eine Typvariable sein.", + "genericTypeArgUnique": "Typargumente für \"Generic\" müssen eindeutig sein.", + "globalReassignment": "\"{name}\" wird vor einer globalen Deklaration zugewiesen.", + "globalRedefinition": "\"{name}\" wurde bereits als global deklariert.", + "implicitStringConcat": "Implizite Zeichenfolgenverkettung nicht zulässig", + "importCycleDetected": "Zyklus in Importkette erkannt", + "importDepthExceeded": "Importkettentiefe überschritten {depth}", + "importResolveFailure": "Import \"{importName}\" konnte nicht aufgelöst werden.", + "importSourceResolveFailure": "Import \"{importName}\" konnte aus der Quelle nicht aufgelöst werden.", + "importSymbolUnknown": "\"{name}\" ist ein unbekanntes Importsymbol.", + "incompatibleMethodOverride": "Die Methode \"{name}\" überschreibt die Klasse \"{className}\" auf inkompatible Weise.", + "inconsistentIndent": "Der Betrag für Nichteinzug stimmt nicht mit dem vorherigen Einzug überein.", + "inconsistentTabs": "Inkonsistente Verwendung von Tabulatoren und Leerzeichen im Einzug.", + "initMustReturnNone": "Der Rückgabetyp von \"__init__\" muss \"None\" sein.", + "initSubclassClsParam": "__init_subclass__ Außerkraftsetzung sollte einen \"cls\"-Parameter annehmen.", + "instanceMethodSelfParam": "Instanzmethoden sollten einen \"self\"-Parameter verwenden.", + "instanceVarOverridesClassVar": "Die Instanzvariable \"{name}\" überschreibt die Klassenvariable desselben Namens in der Klasse \"{className}\"", + "instantiateAbstract": "Abstrakte Klasse \"{type}\" kann nicht erstellt werden.", + "instantiateProtocol": "Die Protokollklasse \"{type}\" kann nicht instanziiert werden.", + "internalBindError": "Interner Fehler beim Binden der Datei \"{file}\": {message}", + "internalParseError": "Interner Fehler beim Parsen der Datei \"{file}\": {message}", + "internalTypeCheckingError": "Interner Fehler bei der Typüberprüfung der Datei \"{file}\": {message}", + "invalidIdentifierChar": "Ungültiges Zeichen in Bezeichner", + "invalidStubStatement": "Die Anweisung ist innerhalb einer Typstubdatei bedeutungslos.", + "invalidTokenChars": "Ungültiges Zeichen \"{text}\" im Token", + "isInstanceInvalidType": "Das zweite Argument für \"isinstance\" muss eine Klasse oder ein Tupel von Klassen sein.", + "isSubclassInvalidType": "Das zweite Argument für \"issubclass\" muss eine Klasse oder ein Tupel von Klassen sein.", + "keyValueInSet": "Schlüssel-Wert-Paare sind innerhalb einer Menge nicht zulässig.", + "keywordArgInTypeArgument": "Schlüsselwortargumente können nicht in Typargumentlisten verwendet werden.", + "keywordOnlyAfterArgs": "Schlüsselworttrennzeichen ist nach dem Parameter \"*\" nicht zulässig.", + "keywordParameterMissing": "Mindestens ein Schlüsselwortparameter muss dem Parameter \"*\" folgen.", + "keywordSubscriptIllegal": "Schlüsselwortargumente innerhalb von Tiefskripts werden nicht unterstützt.", + "lambdaReturnTypePartiallyUnknown": "Der Rückgabetyp des Lambdaausdrucks \"{returnType}\" ist teilweise unbekannt.", + "lambdaReturnTypeUnknown": "Der Rückgabetyp der Lambdafunktion ist unbekannt.", + "listAssignmentMismatch": "Ein Ausdruck vom Typ \"{type}\" kann der Zielliste nicht zugewiesen werden.", + "listInAnnotation": "Ein Listenausdruck ist in der Typanmerkung nicht zulässig.", + "literalEmptyArgs": "Nach \"Literal\" wurde mindestens ein Typargument erwartet.", + "literalNotCallable": "Der Literaltyp kann nicht instanziiert werden.", + "literalUnsupportedType": "Typargumente für \"Literal\" müssen None, ein Literalwert (int, bool, str oder bytes) oder ein Enumerationswert sein.", + "matchIncompatible": "Übereinstimmungsanweisungen erfordern Python 3.10 oder höher", + "matchIsNotExhaustive": "Fälle innerhalb der match-Anweisung behandeln nicht umfassend alle Werte.", + "maxParseDepthExceeded": "Maximale Analysetiefe überschritten; brechen Sie den Ausdruck in kleinere Unterausdrücke um", + "memberAccess": "Auf Member \"{name}\" für Typ \"{type}\" kann nicht zugegriffen werden.", + "memberDelete": "Member \"{name}\" für Typ \"{type}\" kann nicht gelöscht werden.", + "memberSet": "Member \"{name}\" für Typ \"{type}\" kann nicht zugewiesen werden.", + "metaclassConflict": "Die Metaklasse einer abgeleiteten Klasse muss eine Unterklasse der Metaklassen aller ihrer Basisklassen sein.", + "metaclassDuplicate": "Es kann nur eine Metaklasse angegeben werden.", + "metaclassIsGeneric": "Metaklasse kann nicht generisch sein.", + "methodNotDefined": "\"{name}\" Methode nicht definiert", + "methodNotDefinedOnType": "Die Methode \"{name}\" ist für den Typ \"{type}\" nicht definiert.", + "methodOrdering": "Es kann keine konsistente Methodenreihenfolge erstellt werden.", + "methodOverridden": "\"{name}\" überschreibt die Methode mit demselben Namen in der Klasse \"{className}\" mit inkompatiblem Typ \"{type}\"", + "methodReturnsNonObject": "Die Methode \"{name}\" gibt kein Objekt zurück.", + "missingProtocolMembers": "Die Klasse ist von mindestens einer Protokollklasse abgeleitet, implementiert jedoch nicht alle erforderlichen Member.", + "missingSuperCall": "Die Methode \"{methodName}\" ruft nicht die Methode mit demselben Namen in der übergeordneten Klasse auf.", + "moduleAsType": "Das Modul kann nicht als Typ verwendet werden.", + "moduleNotCallable": "Das Modul kann nicht aufgerufen werden.", + "moduleUnknownMember": "\"{memberName}\" ist kein bekanntes Mitglied des Moduls \"{moduleName}\"", + "namedExceptAfterCatchAll": "Eine benannte except-Klausel darf nicht nach catch-all except-Klausel auftreten.", + "namedParamAfterParamSpecArgs": "Der Schlüsselwortparameter \"{name}\" kann nicht in der Signatur nach dem Parameter \"ParamSpec args\" verwendet werden.", + "namedTupleEmptyName": "Namen innerhalb eines benannten Tupels dürfen nicht leer sein.", + "namedTupleFirstArg": "Es wird ein benannter Tupelklassenname als erstes Argument erwartet.", + "namedTupleMultipleInheritance": "Mehrfachvererbung mit NamedTuple wird nicht unterstützt.", + "namedTupleNameType": "Es wurde ein Tupel mit zwei Einträgen unter Angabe von Eintragsname und -typ erwartet.", + "namedTupleNameUnique": "Namen innerhalb eines benannten Tupels müssen eindeutig sein.", + "namedTupleNoTypes": "\"namedtuple\" stellt keine Typen für Tupeleinträge bereit; verwenden Sie stattdessen \"NamedTuple\".", + "namedTupleSecondArg": "Benannte Tupeleintragsliste als zweites Argument erwartet", + "newClsParam": "__new__ Außerkraftsetzung sollte einen \"cls\"-Parameter annehmen.", + "newTypeBadName": "Das erste Argument für NewType muss ein Zeichenfolgenliteral sein.", + "newTypeLiteral": "\"NewType\" kann nicht mit dem Literaltyp verwendet werden.", + "newTypeNotAClass": "Klasse als zweites Argument für NewType erwartet", + "newTypeParamCount": "NewType erfordert zwei Positionsargumente.", + "newTypeProtocolClass": "NewType kann nicht mit Protokollklasse verwendet werden.", + "noOverload": "Keine Überladungen für \"{name}\" stimmen mit den angegebenen Argumenten überein.", + "noReturnContainsReturn": "Eine Funktion mit dem deklarierten Rückgabetyp \"NoReturn\" kann keine return-Anweisung enthalten.", + "noReturnContainsYield": "Eine Funktion mit dem deklarierten Rückgabetyp \"NoReturn\" kann keine yield-Anweisung enthalten.", + "noReturnReturnsNone": "Eine Funktion mit dem deklarierten Typ \"NoReturn\" kann nicht \"None\" zurückgeben.", + "nonDefaultAfterDefault": "Das nicht standardmäßige Argument folgt dem Standardargument.", + "nonLocalInModule": "Nichtlokale Deklaration auf Modulebene nicht zulässig", + "nonLocalNoBinding": "Es wurde keine Bindung für nichtlokale \"{name}\" gefunden.", + "nonLocalReassignment": "\"{name}\" wird vor einer nichtlokalen Deklaration zugewiesen.", + "nonLocalRedefinition": "\"{name}\" wurde bereits als nichtlokal deklariert.", + "noneNotCallable": "Ein Objekt vom Typ \"None\" kann nicht aufgerufen werden.", + "noneNotIterable": "Ein Objekt vom Typ \"None\" kann nicht als iterierbarer Wert verwendet werden.", + "noneNotSubscriptable": "Das Objekt vom Typ \"None\" kann nicht tiefgestellt werden.", + "noneNotUsableWith": "Ein Objekt vom Typ \"None\" kann nicht mit \"with\" verwendet werden.", + "noneOperator": "Der Operator \"{operator}\" wird für den \"{None}\" nicht unterstützt.", + "noneUnknownMember": "\"{name}\" ist kein bekanntes Element von \"None\".", + "notRequiredArgCount": "Nach \"NotRequired\" wurde ein einzelnes Typargument erwartet.", + "notRequiredNotInTypedDict": "\"NotRequired\" ist in diesem Kontext nicht zulässig.", + "objectNotCallable": "Das Objekt vom Typ \"{type}\" kann nicht aufgerufen werden.", + "obscuredClassDeclaration": "Die Klassendeklaration \"{name}\" wird durch eine Deklaration desselben Namens verdeckt.", + "obscuredFunctionDeclaration": "Die Funktionsdeklaration \"{name}\" wird durch eine Deklaration desselben Namens verdeckt.", + "obscuredMethodDeclaration": "Die Methodendeklaration \"{name}\" wird durch eine Deklaration desselben Namens verdeckt.", + "obscuredParameterDeclaration": "Die Parameterdeklaration \"{name}\" wird durch eine Deklaration desselben Namens verdeckt.", + "obscuredTypeAliasDeclaration": "Die Typaliasdeklaration \"{name}\" wird durch eine Deklaration desselben Namens verdeckt.", + "obscuredVariableDeclaration": "Die Deklaration \"{name}\" wird durch eine Deklaration desselben Namens verdeckt.", + "operatorLessOrGreaterDeprecated": "Der Operator \"<>\" wird in Python 3 nicht unterstützt; verwenden Sie stattdessen \"!=\".", + "optionalExtraArgs": "Nach \"Optional\" wurde ein Typargument erwartet.", + "orPatternIrrefutable": "Ein irrefutables Muster ist nur als letztes Unterpattern in einem \"or\"-Muster zulässig.", + "orPatternMissingName": "Alle Teilmuster innerhalb eines \"or\"-Musters müssen auf dieselben Namen zielen.", + "overlappingOverload": "Überladung {obscured} für \"{name}\" wird nie verwendet, da sich die Parameter überlappen, {obscuredBy}", + "overloadAbstractMismatch": "Überladene Methoden müssen alle abstrakt sein oder nicht.", + "overloadImplementationMismatch": "Die überladene Implementierung ist nicht konsistent mit der Signatur der Überladung {index}", + "overloadReturnTypeMismatch": "Überladung {prevIndex} für \"{name}\" überlappt {newIndex} und gibt einen inkompatiblen Typ zurück.", + "overloadWithImplementation": "\"{name}\" ist als Überladung markiert, enthält jedoch eine Implementierung.", + "overloadWithoutImplementation": "\"{name}\" ist als Überladen markiert, es wurde jedoch keine Implementierung bereitgestellt.", + "overriddenMethodNotFound": "Die Methode \"{name}\" ist als Überschreibung markiert, aber es ist keine Basismethode mit demselben Namen vorhanden.", + "overrideDecoratorMissing": "Die Methode \"{name}\" ist nicht als Überschreibung markiert, überschreibt jedoch eine Methode in der Klasse \"{className}\"", + "paramAfterKwargsParam": "Der Parameter kann nicht auf den Parameter \"**\" folgen.", + "paramAlreadyAssigned": "Der Parameter \"{name}\" ist bereits zugewiesen.", + "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}\"", + "paramSpecArgsKwargsUsage": "Die Member \"args\" und \"kwargs\" von ParamSpec müssen beide innerhalb einer Funktionssignatur auftreten.", + "paramSpecArgsMissing": "Argumente für ParamSpec \"{type}\" fehlen.", + "paramSpecArgsUsage": "Das \"args\"-Element von ParamSpec ist nur gültig, wenn es mit dem Parameter \"*args\" verwendet wird.", + "paramSpecAssignedName": "ParamSpec muss einer Variablen mit dem Namen \"{name}\" zugewiesen werden.", + "paramSpecContext": "ParamSpec ist in diesem Kontext nicht zulässig.", + "paramSpecDefaultNotTuple": "Es wurde ein Auslassungszeichen, ein Tupelausdruck oder ParamSpec für den Standardwert von ParamSpec erwartet.", + "paramSpecFirstArg": "Der Name von ParamSpec wurde als erstes Argument erwartet.", + "paramSpecKwargsUsage": "Das \"kwargs\"-Element von ParamSpec ist nur gültig, wenn es mit dem Parameter **kwargs verwendet wird.", + "paramSpecNotBound": "Die Parameterspezifikation \"{type}\" hat keinen gebundenen Wert.", + "paramSpecNotUsedByOuterScope": "ParamSpec \"{name}\" hat in diesem Kontext keine Bedeutung.", + "paramSpecScopedToReturnType": "ParamSpec \"{name}\" ist auf einen Aufruf innerhalb des Rückgabetyps beschränkt und kann im Funktionstext nicht referenziert werden.", + "paramSpecUnknownArg": "ParamSpec unterstützt nur ein Argument.", + "paramSpecUnknownMember": "\"{name}\" ist kein bekanntes Element von ParamSpec.", + "paramSpecUnknownParam": "\"{name}\" ist ein unbekannter Parameter für ParamSpec.", + "paramTypeCovariant": "Eine Variable vom Typ \"Covariant\" kann nicht im Parametertyp verwendet werden.", + "paramTypePartiallyUnknown": "Der Typ des Parameters \"{paramName}\" ist teilweise unbekannt.", + "paramTypeUnknown": "Der Typ des Parameters \"{paramName}\" ist unbekannt.", + "parenthesizedContextManagerIllegal": "Klammern innerhalb der with-Anweisung erfordern Python 3.9 oder höher.", + "patternNeverMatches": "Das Muster wird für den Antragstellertyp \"{type}\" nie abgeglichen", + "positionArgAfterNamedArg": "Ein Positionsargument darf nicht nach Schlüsselwortargumenten stehen.", + "positionOnlyAfterArgs": "Das Argumenttrennzeichen \"Nur Position\" ist nach dem Parameter \"*\" nicht zulässig.", + "positionOnlyAfterKeywordOnly": "Der Parameter \"/\" muss vor dem Parameter \"*\" stehen.", + "positionOnlyFirstParam": "Das Argumenttrennzeichen \"Nur Position\" ist als erster Parameter nicht zulässig.", + "positionOnlyIncompatible": "Für das Argumenttrennzeichen \"Nur Position\" ist Python 3.8 oder höher erforderlich.", + "privateImportFromPyTypedModule": "\"{name}\" wird nicht aus dem Modul \"{module}\" exportiert.", + "privateUsedOutsideOfClass": "\"{name}\" ist privat und wird außerhalb der Klasse verwendet, in dem es deklariert ist.", + "privateUsedOutsideOfModule": "\"{name}\" ist privat und wird außerhalb des Moduls verwendet, in dem es deklariert ist.", + "propertyOverridden": "\"{name}\" überschreibt die Eigenschaft desselben Namens in der Klasse \"{className}\" nicht ordnungsgemäß", + "propertyStaticMethod": "Statische Methoden sind für Eigenschaften-Getter, -Setter oder -Deleter nicht zulässig.", + "protectedUsedOutsideOfClass": "\"{name}\" ist geschützt und wird außerhalb der Klasse verwendet, in der es deklariert ist.", + "protocolBaseClass": "Die Protokollklasse \"{classType}\" kann nicht von einer Nichtprotokollklasse \"{baseType}\" abgeleitet werden", + "protocolBaseClassWithTypeArgs": "Typargumente sind mit der Protokollklasse nicht zulässig, wenn die Typparametersyntax verwendet wird.", + "protocolIllegal": "Die Verwendung von \"Protocol\" erfordert Python 3.7 oder höher.", + "protocolNotAllowedInTypeArgument": "\"Protocol\" kann nicht als Typargument verwendet werden.", + "protocolUsedInCall": "Die Protokollklasse kann nicht im Aufruf \"{name}\" verwendet werden.", + "protocolVarianceContravariant": "Die Typvariable \"{variable}\", die im generischen Protokoll \"{class}\" verwendet wird, muss \"contravariant\" sein.", + "protocolVarianceCovariant": "Die Typvariable \"{variable}\", die im generischen Protokoll \"{class}\" verwendet wird, muss \"covariant\" sein.", + "protocolVarianceInvariant": "Die Typvariable \"{variable}\", die im generischen Protokoll \"{class}\" verwendet wird, muss \"invariant\" sein.", + "pyrightCommentInvalidDiagnosticBoolValue": "Auf die Pyright-Kommentardirektive muss \"=\" und der Wert \"true\" oder \"false\" folgen.", + "pyrightCommentInvalidDiagnosticSeverityValue": "Auf die Pyright-Kommentardirektive muss \"=\" und der Wert \"true\", \"false\", \"error\", \"warning\", \"information\" oder \"none\" folgen.", + "pyrightCommentMissingDirective": "Auf einen Pyright-Kommentar muss eine Direktive (basic oder strict) oder eine Diagnoseregel folgen.", + "pyrightCommentNotOnOwnLine": "Pyright-Kommentare, die zum Steuern von Einstellungen auf Dateiebene verwendet werden, müssen in ihrer eigenen Zeile angezeigt werden.", + "pyrightCommentUnknownDiagnosticRule": "\"{rule}\" ist eine unbekannte Diagnoseregel für pyright-Kommentar.", + "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\" ist ein ungültiger Wert für den pyright-Kommentar; \"true\", \"false\", \"error\", \"warning\", \"information\" oder \"none\" erwartet.", + "pyrightCommentUnknownDirective": "\"{directive}\" ist eine unbekannte Direktive für pyright-Kommentar; \"strict\" oder \"basic\" erwartet", + "readOnlyArgCount": "Nach \"ReadOnly\" wurde ein einzelnes Typargument erwartet.", + "readOnlyNotInTypedDict": "\"ReadOnly\" ist in diesem Kontext nicht zulässig.", + "recursiveDefinition": "Der Typ von \"{name}\" konnte nicht bestimmt werden, da er sich auf selbst bezieht.", + "relativeImportNotAllowed": "Relative Importe können nicht mit dem Formular \"import .a\" verwendet werden; verwenden Sie stattdessen \"from . import a\"", + "requiredArgCount": "Nach \"Required\" wurde ein einzelnes Typargument erwartet.", + "requiredNotInTypedDict": "\"Required\" ist in diesem Kontext nicht zulässig.", + "returnInAsyncGenerator": "Eine Return-Anweisung mit einem Wert ist im asynchronen Generator nicht zulässig.", + "returnMissing": "Die Funktion mit dem deklarierten Typ \"{returnType}\" muss einen Wert für alle Codepfade zurückgeben.", + "returnOutsideFunction": "\"return\" kann nur innerhalb einer Funktion verwendet werden.", + "returnTypeContravariant": "Die Variable vom Typ \"contravariant\" kann nicht im Rückgabetyp verwendet werden.", + "returnTypeMismatch": "Ein Ausdruck vom Typ \"{exprType}\" kann dem Rückgabetyp \"{returnType}\" nicht zugewiesen werden.", + "returnTypePartiallyUnknown": "Der Rückgabetyp \"{returnType}\" ist teilweise unbekannt.", + "returnTypeUnknown": "Unbekannter Rückgabetyp", + "revealLocalsArgs": "Es wurden keine Argumente für den Aufruf \"reveal_locals\" erwartet.", + "revealLocalsNone": "Keine lokalen Elemente in diesem Bereich", + "revealTypeArgs": "Für den Aufruf \"reveal_type\" wurde ein einzelnes Positionsargument erwartet.", + "revealTypeExpectedTextArg": "Das Argument \"expected_text\" für die Funktion \"reveal_type\" muss ein str-Literalwert sein.", + "revealTypeExpectedTextMismatch": "Typentextkonflikt; \"{expected}\" erwartet, aber \"{received}\" empfangen", + "revealTypeExpectedTypeMismatch": "Typenkonflikt; \"{expected}\" erwartet, aber \"{received}\" empfangen", + "selfTypeContext": "\"Self\" ist in diesem Kontext ungültig.", + "selfTypeWithTypedSelfOrCls": "\"Self\" kann nicht in einer Funktion mit einem Parameter \"self\" oder \"cls\" verwendet werden, der eine andere Typanmerkung als \"Self\" aufweist.", + "setterGetterTypeMismatch": "Der Werttyp des Eigenschaftensetters kann dem Rückgabetyp des Getters nicht zugewiesen werden.", + "singleOverload": "\"{name}\" ist als Überladung markiert, aber es fehlen weitere Überladungen.", + "slotsAttributeError": "\"{name}\" ist in __slots__ nicht angegeben.", + "slotsClassVarConflict": "\"{name}\" steht in Konflikt mit Instanzvariablen, die in __slots__ deklariert sind.", + "starPatternInAsPattern": "Das Sternmuster kann nicht mit dem Ziel \"as\" verwendet werden.", + "starPatternInOrPattern": "Das Sternmuster kann in anderen Mustern nicht ORed sein.", + "starStarWildcardNotAllowed": "** kann nicht zusammen mit Platzhalter \"_\" verwendet werden", + "staticClsSelfParam": "Statische Methoden dürfen keinen \"self\"- oder \"cls\"-Parameter annehmen.", + "stdlibModuleOverridden": "\"{path}\" überschreibt das stdlib-Modul \"{name}\"", + "strictTypeGuardReturnType": "Der Rückgabetyp von StrictTypeGuard (\"{returnType}\") kann dem Wertparametertyp nicht zugewiesen werden (\"{type}\").", + "stringNonAsciiBytes": "Ein Nicht-ASCII-Zeichen ist im Zeichenfolgenliteral in Bytes nicht zulässig.", + "stringNotSubscriptable": "Der Zeichenfolgenausdruck kann nicht in der Typanmerkung tiefgestellt werden; schließen Sie die gesamte Anmerkung in Anführungszeichen ein", + "stringUnsupportedEscape": "Nicht unterstützte Escapesequenz im Zeichenfolgenliteral.", + "stringUnterminated": "Das Zeichenfolgenliteral ist nicht beendet.", + "stubFileMissing": "Die Stubdatei wurde für \"{importName}\" nicht gefunden.", + "stubUsesGetAttr": "Die Typ-Stub-Datei ist unvollständig; \"__getattr__\" verdeckt Typfehler für Modul", + "sublistParamsIncompatible": "Unterlistenparameter werden in Python 3.x nicht unterstützt.", + "superCallArgCount": "Es werden nicht mehr als zwei Argumente für den Superaufruf erwartet.", + "superCallFirstArg": "Klassentyp als erstes Argument für super-Aufruf erwartet, aber \"{type}\" empfangen", + "superCallSecondArg": "Das zweite Argument für den \"super\"-Aufruf muss ein Objekt oder eine Klasse sein, das bzw. die von \"{type}\" abgeleitet wird.", + "superCallZeroArgForm": "Die Nullargumentform des super-Aufrufs ist nur innerhalb einer Klasse gültig.", + "symbolIsPossiblyUnbound": "\"{name}\" ist möglicherweise ungebunden.", + "symbolIsUnbound": "\"{name}\" ist ungebunden.", + "symbolIsUndefined": "\"{name}\" ist nicht definiert.", + "symbolOverridden": "\"{name}\" überschreibt das Symbol desselben Namens in der Klasse \"{className}\"", + "totalOrderingMissingMethod": "Die Klasse muss \"__lt__\", \"__le__\", \"__gt__\" oder \"__ge__\" definieren, um total_ordering zu verwenden.", + "trailingCommaInFromImport": "Nachgestelltes Komma ist ohne umgebende Klammern nicht zulässig.", + "tryWithoutExcept": "Die try-Anweisung muss mindestens eine except- oder finally-Klausel aufweisen.", + "tupleAssignmentMismatch": "Ein Ausdruck vom Typ \"{type}\" kann dem Zieltupel nicht zugewiesen werden.", + "tupleInAnnotation": "Ein Tupelausdruck ist in der Typanmerkung nicht zulässig.", + "tupleIndexOutOfRange": "Der Index {index} liegt für den Typ {type} außerhalb des gültigen Bereichs.", + "typeAliasIllegalExpressionForm": "Ungültiges Ausdrucksformular für Typaliasdefinition", + "typeAliasIsRecursiveDirect": "Der Typalias \"{name}\" kann sich nicht selbst in seiner Definition verwenden.", + "typeAliasNotInModuleOrClass": "TypeAlias kann nur innerhalb eines Moduls oder Klassenbereichs definiert werden.", + "typeAliasRedeclared": "\"{name}\" ist als TypeAlias deklariert und kann nur einmal zugewiesen werden.", + "typeAliasStatementIllegal": "Die Typaliasanweisung erfordert Python 3.12 oder höher.", + "typeAliasTypeMustBeAssigned": "TypeAliasType muss einer Variablen mit dem gleichen Namen wie der Typalias zugewiesen werden.", + "typeAliasTypeNameArg": "Das erste Argument für TypeAliasType muss ein Zeichenfolgenliteral sein, das den Namen des Typalias darstellt.", + "typeAliasTypeNameMismatch": "Der Name des Typalias muss mit dem Namen der Variablen übereinstimmen, der er zugewiesen ist.", + "typeAliasTypeParamInvalid": "Die Typparameterliste muss ein Tupel sein, das nur TypeVar, TypeVarTuple oder ParamSpec enthält.", + "typeAnnotationCall": "Unzulässige Typanmerkung: Aufrufausdruck nicht zulässig", + "typeAnnotationVariable": "Unzulässige Typanmerkung: Die Variable ist nur zulässig, wenn es sich um einen Typalias handelt.", + "typeArgListExpected": "ParamSpec, Ellipse oder Liste der Typen erwartet", + "typeArgListNotAllowed": "Der Listenausdruck ist für dieses Typargument nicht zulässig.", + "typeArgsExpectingNone": "Für die Klasse \"{name}\" werden keine Typargumente erwartet.", + "typeArgsMismatchOne": "Es wurde ein Typargument erwartet, es wurde jedoch {received} empfangen.", + "typeArgsMissingForAlias": "Für den generischen Typalias \"{name}\" werden Typargumente erwartet.", + "typeArgsMissingForClass": "Für die generische Klasse \"{name}\" werden Typargumente erwartet.", + "typeArgsTooFew": "Für \"{name}\" wurden zu wenige Typargumente angegeben; {expected} erwartet, aber {received} empfangen", + "typeArgsTooMany": "Für \"{name}\" wurden zu viele Typargumente angegeben; {expected} erwartet, aber {received} empfangen", + "typeAssignmentMismatch": "Ein Ausdruck vom Typ \"{sourceType}\" kann nicht dem deklarierten Typ \"{destType}\" zugewiesen werden.", + "typeCallNotAllowed": "Der type()-Aufruf darf nicht in der Typanmerkung verwendet werden.", + "typeCommentDeprecated": "Die Verwendung von Typkommentaren ist veraltet; verwenden Sie stattdessen Typanmerkung", + "typeExpectedClass": "Typausdruck erwartet, aber \"{type}\" empfangen", + "typeGuardArgCount": "Nach \"TypeGuard\" wurde ein einzelnes Typargument erwartet.", + "typeGuardParamCount": "Benutzerdefinierte Typenschutzfunktionen und -methoden müssen mindestens einen Eingabeparameter aufweisen.", + "typeNotAwaitable": "\"{type}\" ist nicht awaitable.", + "typeNotCallable": "\"{expression}\" weist den Typ \"{type}\" auf und kann nicht aufgerufen werden.", + "typeNotIntantiable": "\"{type}\" kann nicht instanziiert werden.", + "typeNotIterable": "\"{type}\" ist nicht iterierbar.", + "typeNotSpecializable": "Der Typ \"{type}\" konnte nicht spezialisiert werden", + "typeNotSubscriptable": "Das Objekt vom Typ \"{type}\" kann nicht tiefgestellt werden.", + "typeNotSupportBinaryOperator": "Der Operator \"{operator}\" wird für Typen \"{leftType}\" und \"{rightType}\" nicht unterstützt.", + "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.", + "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.", + "typeParameterNotDeclared": "Der Typparameter \"{name}\" ist nicht in der Typparameterliste für \"{container}\" enthalten.", + "typeParametersMissing": "Es muss mindestens ein Typparameter angegeben werden.", + "typePartiallyUnknown": "Der Typ von \"{name}\" ist teilweise unbekannt.", + "typeUnknown": "Der Typ von \"{name}\" ist unbekannt.", + "typeVarAssignedName": "TypeVar muss einer Variablen mit dem Namen \"{name}\" zugewiesen werden.", + "typeVarAssignmentMismatch": "Der Typ \"{type}\" kann der Typvariablen \"{name}\" nicht zugewiesen werden.", + "typeVarBoundAndConstrained": "TypeVar kann nicht gleichzeitig gebunden und eingeschränkt sein.", + "typeVarBoundGeneric": "Der gebundene Typ \"TypeVar\" darf nicht generisch sein.", + "typeVarConstraintGeneric": "Der Typ der TypeVar-Einschränkung darf nicht generisch sein.", + "typeVarDefaultBoundMismatch": "Der Standardtyp \"TypeVar\" muss ein Untertyp des gebundenen Typs sein.", + "typeVarDefaultConstraintMismatch": "Der Standardtyp \"TypeVar\" muss einer der eingeschränkten Typen sein.", + "typeVarDefaultIllegal": "Für Standardtypen von Typvariablen ist Python 3.13 oder höher erforderlich.", + "typeVarDefaultInvalidTypeVar": "Der Typparameter \"{name}\" weist einen Standardtyp auf, der auf eine oder mehrere Typvariablen verweist, die außerhalb des Gültigkeitsbereichs liegen.", + "typeVarFirstArg": "Der Name von TypeVar wurde als erstes Argument erwartet.", + "typeVarNoMember": "TypeVar \"{type}\" hat kein Member \"{name}\"", + "typeVarNotSubscriptable": "TypeVar \"{type}\" kann nicht tiefgestellt werden.", + "typeVarNotUsedByOuterScope": "Die Typvariable \"{name}\" hat in diesem Kontext keine Bedeutung.", + "typeVarPossiblyUnsolvable": "Die Typvariable \"{name}\" wird möglicherweise nicht aufgelöst, wenn der Aufrufer kein Argument für Parameter \"{param}\" bereitstellt", + "typeVarScopedToReturnType": "Die Typvariable \"{name}\" ist auf einen Aufruf innerhalb des Rückgabetyps beschränkt und kann im Funktionstext nicht referenziert werden.", + "typeVarSingleConstraint": "TypeVar muss mindestens zwei eingeschränkte Typen aufweisen.", + "typeVarTupleContext": "TypeVarTuple ist in diesem Kontext nicht zulässig.", + "typeVarTupleDefaultNotUnpacked": "Der Standardtyp \"TypeVarTuple\" muss ein entpacktes Tupel oder ein TypeVarTuple sein.", + "typeVarTupleMustBeUnpacked": "Der Entpackungsoperator ist für den TypeVarTuple-Wert erforderlich.", + "typeVarTupleUnknownParam": "\"{name}\" ist ein unbekannter Parameter für TypeVar-Tuple.", + "typeVarUnknownParam": "\"{name}\" ist ein unbekannter Parameter für TypeVar.", + "typeVarUsedByOuterScope": "TypeVar \"{name}\" wird bereits von einem äußeren Bereich verwendet.", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" wird in der generischen Funktionssignatur nur einmal angezeigt.", + "typeVarVariance": "TypeVar darf nicht gleichzeitig \"covariant\" und \"contravariant\" sein.", + "typeVarWithoutDefault": "\"{name}\" kann nicht nach \"{other}\" in der Typparameterliste angezeigt werden, da es keinen Standardtyp aufweist.", + "typeVarsNotInGenericOrProtocol": "Generic[] oder Protocol[] müssen alle Typvariablen enthalten.", + "typedDictAccess": "Auf das Element in TypedDict konnte nicht zugegriffen werden.", + "typedDictBadVar": "TypedDict-Klassen dürfen nur Typanmerkungen enthalten.", + "typedDictBaseClass": "Alle Basisklassen für TypedDict-Klassen müssen auch TypedDict-Klassen sein.", + "typedDictBoolParam": "Es wird erwartet, dass \"{name}\" Parameter den Wert \"True\" oder \"False\" aufweist.", + "typedDictDelete": "Das Element in TypedDict konnte nicht gelöscht werden.", + "typedDictEmptyName": "Namen innerhalb eines TypedDict dürfen nicht leer sein.", + "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.", + "typedDictFieldReadOnlyRedefinition": "Das TypedDict-Feld \"{name}\" kann nicht als schreibgeschützt neu definiert werden.", + "typedDictFieldTypeRedefinition": "Der Typ des TypedDict-Felds \"{name}\" kann nicht neu definiert werden.", + "typedDictFirstArg": "Der Klassenname \"TypedDict\" wird als erstes Argument erwartet.", + "typedDictSecondArgDict": "Es wird ein dict- oder Schlüsselwortparameter als zweiter Parameter erwartet.", + "typedDictSecondArgDictEntry": "Einfacher Wörterbucheintrag erwartet", + "typedDictSet": "Element konnte in TypedDict nicht zugewiesen werden.", + "unaccessedClass": "Auf die Klasse \"{name}\" kann nicht zugegriffen werden.", + "unaccessedFunction": "Auf die Funktion \"{name}\" kann nicht zugegriffen werden.", + "unaccessedImport": "Auf den Import \"{name}\" kann nicht zugegriffen werden.", + "unaccessedSymbol": "Auf \"{name}\" kann nicht zugegriffen werden.", + "unaccessedVariable": "Auf die Variable \"{name}\" kann nicht zugegriffen werden.", + "unannotatedFunctionSkipped": "Die Analyse der Funktion \"{name}\" wird übersprungen, da sie nicht kommentiert wurde.", + "unexpectedAsyncToken": "Es wurde erwartet, dass \"def\", \"with\" oder \"for\" auf \"async\" folgt.", + "unexpectedExprToken": "Unerwartetes Token am Ende des Ausdrucks.", + "unexpectedIndent": "Unerwarteter Einzug", + "unexpectedUnindent": "\"Unindent\" nicht erwartet.", + "unhashableDictKey": "Der Wörterbuchschlüssel muss hashbar sein.", + "unhashableSetEntry": "Der Eintrag \"Set\" muss hashbar sein.", + "uninitializedAbstractVariables": "In der abstrakten Basisklasse definierte Variablen sind in der endgültigen Klasse \"{classType}\" nicht initialisiert", + "uninitializedInstanceVariable": "Die Instanzvariable \"{name}\" ist im Klassentext oder in der __init__ Methode nicht initialisiert.", + "unionForwardReferenceNotAllowed": "Die Unionsyntax kann nicht mit einem Zeichenfolgenoperanden verwendet werden; verwenden Sie Anführungszeichen um den gesamten Ausdruck", + "unionSyntaxIllegal": "Alternative Syntax für Unions erfordert Python 3.10 oder höher.", + "unionTypeArgCount": "Union erfordert mindestens zwei Typargumente.", + "unmatchedEndregionComment": "#endregion fehlt die entsprechende #region", + "unmatchedRegionComment": "#region fehlt die entsprechende #endregion", + "unnecessaryCast": "Nicht erforderlicher \"cast\"-Aufruf; der Typ ist bereits \"{type}\".", + "unnecessaryIsInstanceAlways": "Nicht erforderlicher isinstance-Aufruf; \"{testType}\" ist immer eine Instanz von \"{classType}\"", + "unnecessaryIsSubclassAlways": "Nicht erforderlicher issubclass-Aufruf; \"{testType}\" ist immer eine Unterklasse von \"{classType}\"", + "unnecessaryPyrightIgnore": "Unnötiger \"# pyright: ignore\"-Kommentar", + "unnecessaryPyrightIgnoreRule": "Unnötiger \"# pyright: ignore\"-Kommentar", + "unnecessaryTypeIgnore": "Nicht erforderlicher \"# type: ignore\"-Kommentar", + "unpackArgCount": "Nach \"Required\" wurde ein einzelnes Typargument erwartet.", + "unpackExpectedTypeVarTuple": "'TypeVarTuple' oder 'Tuple' wurde als Typargument für 'Unpack' erwartet.", + "unpackExpectedTypedDict": "TypedDict-Typargument für Unpack erwartet", + "unpackIllegalInComprehension": "Der Entpackvorgang ist in Verständnis nicht zulässig.", + "unpackInAnnotation": "Der Operator zum Entpacken ist in der Typanmerkung nicht zulässig.", + "unpackInDict": "Der Entpackvorgang ist in Wörterbüchern nicht zulässig.", + "unpackInSet": "Der Operator zum Entpacken ist innerhalb einer Menge nicht zulässig.", + "unpackNotAllowed": "Entpacken ist in diesem Kontext nicht zulässig.", + "unpackOperatorNotAllowed": "Der Entpackvorgang ist in diesem Kontext nicht zulässig.", + "unpackTuplesIllegal": "Der Entpackvorgang ist in Tupeln vor Python 3.8 nicht zulässig.", + "unpackedArgInTypeArgument": "Ungepackte Argumente können nicht in Typargumentlisten verwendet werden.", + "unpackedArgWithVariadicParam": "Das nicht gepackte Argument kann nicht für den Parameter \"TypeVarTuple\" verwendet werden.", + "unpackedDictArgumentNotMapping": "Der Argumentausdruck nach ** muss eine Zuordnung mit dem Schlüsseltyp \"str\" sein.", + "unpackedDictSubscriptIllegal": "Der Operator zum Entpacken des Wörterbuchs in tiefgestellten Zeichen ist nicht zulässig.", + "unpackedSubscriptIllegal": "Das Entpacken des Operators im Tiefstellungsskript erfordert Python 3.11 oder höher.", + "unpackedTypeVarTupleExpected": "Nicht gepackter TypeVarTuple erwartet; verwenden Sie Unpack[{name1}] oder *{name2}", + "unpackedTypedDictArgument": "Das entpackte TypedDict-Argument kann nicht mit Parametern abgelichen werden.", + "unreachableCode": "Der Code ist nicht erreichbar.", + "unreachableExcept": "Die except-Klausel ist nicht erreichbar, weil die Ausnahme bereits behandelt wird.", + "unsupportedDunderAllOperation": "Der Vorgang für \"__all__\" wird nicht unterstützt, daher ist die exportierte Symbolliste möglicherweise falsch.", + "unusedCallResult": "Das Ergebnis des Aufrufausdrucks ist vom Typ \"{type}\" und wird nicht verwendet; der Variablen \"_\" zuweisen, wenn dies beabsichtigt ist", + "unusedCoroutine": "Das Ergebnis eines asynchronen Funktionsaufrufs wird nicht verwendet; verwenden Sie \"await\", oder weisen Sie der Variablen ein Ergebnis zu.", + "unusedExpression": "Der Ausdruckswert wird nicht verwendet.", + "varAnnotationIllegal": "Typanmerkungen für Variablen erfordern Python 3.6 oder höher; verwenden Sie den Typkommentar für Kompatibilität mit früheren Versionen", + "variableFinalOverride": "Die Variable \"{name}\" ist als \"Final\" gekennzeichnet und überschreibt die Nicht-Final-Variable desselben Namens in der Klasse \"{className}\"", + "variadicTypeArgsTooMany": "Die Typargumentliste darf höchstens ein entpacktes TypeVarTuple oder Tuple aufweisen.", + "variadicTypeParamTooManyAlias": "Der Typalias darf höchstens einen TypeVarTuple-Typparameter aufweisen, es wurden jedoch mehrere ({names}) empfangen.", + "variadicTypeParamTooManyClass": "Die generische Klasse darf höchstens einen TypeVarTuple-Typparameter aufweisen, es wurden jedoch mehrere ({names}) empfangen.", + "walrusIllegal": "Der Operator \":=\" erfordert Python 3.8 oder höher.", + "walrusNotAllowed": "Der Operator \":=\" ist in diesem Kontext ohne umgebende Klammern nicht zulässig.", + "wildcardInFunction": "Der Platzhalterimport ist innerhalb einer Klasse oder Funktion nicht zulässig.", + "wildcardLibraryImport": "Der Platzhalterimport aus einer Bibliothek ist nicht zulässig.", + "wildcardPatternTypePartiallyUnknown": "Der durch das Platzhaltermuster erfasste Typ ist teilweise unbekannt.", + "wildcardPatternTypeUnknown": "Der durch das Platzhaltermuster erfasste Typ ist unbekannt.", + "yieldFromIllegal": "Die Verwendung von \"yield from\" erfordert Python 3.3 oder höher.", + "yieldFromOutsideAsync": "\"yield from\" ist in einer asynchronen Funktion nicht zulässig.", + "yieldOutsideFunction": "\"yield\" ist außerhalb einer Funktion oder eines Lambdas nicht zulässig.", + "yieldWithinListCompr": "\"yield\" ist innerhalb eines Listenverständnisses nicht zulässig.", + "zeroCaseStatementsFound": "Die match-Anweisung muss mindestens eine case-Anweisung enthalten", + "zeroLengthTupleNotAllowed": "Ein Tupel mit der Länge Null ist in diesem Kontext nicht zulässig." + }, + "DiagnosticAddendum": { + "argParam": "Argument entspricht Parameter \"{paramName}\"", + "argParamFunction": "Argument entspricht Parameter \"{paramName}\" in Funktion \"{functionName}\"", + "argsParamMissing": "Der Parameter \"*{paramName}\" weist keinen entsprechenden Parameter auf.", + "argsPositionOnly": "Nicht übereinstimmende Parameteranmerkungsanzahl: {expected} erwartet, aber {received} empfangen", + "argumentType": "Argumenttyp ist \"{type}\"", + "argumentTypes": "Argumenttypen: ({types})", + "assignToNone": "Der Typ kann nicht dem Typ \"None\" zugewiesen werden.", + "asyncHelp": "Meinten Sie \"asynchron mit\"?", + "baseClassOverriddenType": "Die Basisklasse \"{baseClass}\" stellt einen Typ \"{type}\" bereit, der überschrieben wird.", + "baseClassOverridesType": "Basisklasse \"{baseClass}\" überschreibt mit Typ \"{type}\"", + "conditionalRequiresBool": "Die Methode __bool__ für den Typ \"{operandType}\" gibt den Typ \"{boolReturnType}\" anstelle von \"bool\" zurück", + "dataClassFieldLocation": "Felddeklaration", + "dataClassFrozen": "\"{name}\" ist fixiert", + "finalMethod": "Endgültige Methode", + "functionParamDefaultMissing": "Standardargument für Parameter \"{name}\" fehlt.", + "functionParamName": "Parameternamen stimmen nicht überein: \"{destName}\" und \"{srcName}\"", + "functionReturnTypeMismatch": "Der Funktionsrückgabetyp \"{sourceType}\" ist nicht mit dem Typ \"{destType}\" kompatibel.", + "functionTooFewParams": "Die Funktion akzeptiert zu wenige Positionsparameter; {expected} erwartet, aber {received} empfangen", + "functionTooManyParams": "Die Funktion akzeptiert zu viele Positionsparameter; {expected} erwartet, aber {received} empfangen", + "incompatibleDeleter": "Die Deletermethode der Eigenschaft ist nicht kompatibel.", + "incompatibleGetter": "Die Gettermethode der Eigenschaft ist nicht kompatibel.", + "incompatibleSetter": "Die Settermethode der Eigenschaft ist nicht kompatibel.", + "initMethodLocation": "Die __init__ Methode ist in der Klasse \"{type}\" definiert.", + "initMethodSignature": "Die Signatur von __init__ ist \"{type}\".", + "keyNotRequired": "\"{name}\" ist kein erforderlicher Schlüssel in \"{type}\". Der Zugriff kann daher zu einer Laufzeitausnahme führen.", + "keyReadOnly": "\"{name}\" ist ein schreibgeschützter Schlüssel in \"{type}\"", + "keyRequiredDeleted": "\"{name}\" ist ein erforderlicher Schlüssel und kann nicht gelöscht werden.", + "keyUndefined": "\"{name}\" ist kein definierter Schlüssel in \"{type}\"", + "kwargsParamMissing": "Der Parameter \"**{paramName}\" weist keinen entsprechenden Parameter auf.", + "listAssignmentMismatch": "Der Typ \"{type}\" ist nicht mit der Zielliste kompatibel.", + "literalAssignmentMismatch": "\"{sourceType}\" kann dem Typ \"{destType}\" nicht zugewiesen werden.", + "matchIsNotExhaustiveHint": "Wenn keine ausführliche Behandlung beabsichtigt ist, fügen Sie \"case _: pass\" hinzu.", + "matchIsNotExhaustiveType": "Unbehandelter Typ: \"{type}\"", + "memberAssignment": "Ein Ausdruck vom Typ \"{type}\" kann dem Member \"{name}\" der Klasse \"{classType}\" nicht zugewiesen werden.", + "memberIsAbstract": "\"{type}.{name}\" ist abstrakt.", + "memberIsAbstractMore": "und {count} weitere...", + "memberIsFinalInProtocol": "\"{name}\" ist im Protokoll als \"Final\" gekennzeichnet.", + "memberIsInitVar": "Das Element \"{name}\" ist ein init-only-Feld.", + "memberIsInvariant": "\"{name}\" ist invariant, da es änderbar ist.", + "memberIsNotFinalInProtocol": "\"{name}\" ist im Protokoll nicht als \"Final\" gekennzeichnet.", + "memberSetClassVar": "Der Member \"{name}\" kann nicht über eine Klasseninstanz zugewiesen werden, da es sich um eine ClassVar handelt.", + "memberTypeMismatch": "\"{name}\" ist ein inkompatibler Typ.", + "memberUnknown": "Das Member \"{name}\" ist unbekannt.", + "missingDeleter": "Die Eigenschaft-Deleter-Methode fehlt.", + "missingGetter": "Die Eigenschaft-Getter-Methode fehlt.", + "missingProtocolMember": "Member \"{name}\" ist in Protokollklasse \"{classType}\" deklariert.", + "missingSetter": "Die Eigenschaft-Setter-Methode fehlt.", + "namedParamMissingInDest": "Der Schlüsselwortparameter \"{name}\" fehlt im Ziel.", + "namedParamMissingInSource": "Der Schlüsselwortparameter \"{name}\" fehlt in der Quelle.", + "namedParamTypeMismatch": "Der Stichwortparameter \"{name}\" vom Typ \"{sourceType}\" kann dem Typ \"{destType}\" nicht zugewiesen werden.", + "newMethodLocation": "Die __new__ Methode ist in der Klasse \"{type}\" definiert.", + "newMethodSignature": "Signatur von __new__ ist \"{type}\"", + "noOverloadAssignable": "Keine überladene Funktion stimmt mit dem Typ \"{type}\" überein.", + "orPatternMissingName": "Fehlende Namen: {name}", + "overloadNotAssignable": "Mindestens eine Überladung von \"{name}\" kann nicht zugewiesen werden.", + "overloadSignature": "Die Überladungssignatur ist hier definiert.", + "overloadWithImplementation": "Der Text einer Funktionsüberladung muss \"...\" sein.", + "overriddenMethod": "Überschriebene Methode", + "overriddenSymbol": "Außer Kraft gesetztes Symbol", + "overrideNoOverloadMatches": "Keine Überladungssignatur in Überschreibung ist mit der Basismethode kompatibel.", + "overrideNotClassMethod": "Die Basismethode ist als Klassenmethode deklariert, die Überschreibung jedoch nicht", + "overrideNotInstanceMethod": "Die Basismethode ist als Instanz deklariert, die Überschreibung jedoch nicht", + "overrideNotStaticMethod": "Die Basismethode ist als staticmethod deklariert, die Überschreibung jedoch nicht", + "overrideOverloadNoMatch": "Das Überladen von {index} ist nicht mit der Basismethode kompatibel.", + "overrideOverloadOrder": "Überladungen für die Überschreibungsmethode müssen in der gleichen Reihenfolge wie die Basismethode vorliegen.", + "overrideParamKeywordNoDefault": "Konflikt mit Schlüsselwortparameter \"{name}\": Der Basisparameter hat einen Standardargumentwert, der Außerkraftsetzungsparameter ist nicht identisch.", + "overrideParamKeywordType": "Schlüsselwortparameter \"{name}\" Typenkonflikt: Basisparameter ist Typ \"{baseType}\", Überschreibungsparameter ist Typ \"{overrideType}\"", + "overrideParamName": "Namenskonflikt mit Parameter {index}: Der Basisparameter hat den Namen \"{baseName}\", der Außerkraftsetzungsparameter ist \"{overrideName}\"", + "overrideParamNameExtra": "Der Parameter \"{name}\" fehlt in der Basis.", + "overrideParamNameMissing": "Der Parameter \"{name}\" fehlt in der Außerkraftsetzung.", + "overrideParamNamePositionOnly": "Namenskonflikt mit Parameter {index}: Der Basisparameter hat den Namen \"{baseName}\", der Außerkraftsetzungsparameter ist \"position-only\"", + "overrideParamNoDefault": "Konflikt mit Parameter {index}: Der Basisparameter hat einen Standardargumentwert, der Außerkraftsetzungsparameter ist nicht identisch.", + "overrideParamType": "Parameter {index} Typenkonflikt: Basisparameter ist Typ \"{baseType}\", Überschreibungsparameter ist Typ \"{overrideType}\"", + "overridePositionalParamCount": "Anzahl der Positionsparameter stimmt nicht überein; die Basismethode hat {baseCount}, aber die Überschreibung hat {overrideCount}", + "overrideReturnType": "Rückgabetypkonflikt: Basismethode gibt Typ \"{baseType}\" zurück, Überschreibung gibt Typ \"{overrideType}\" zurück", + "overrideType": "Die Basisklasse definiert den Typ als \"{type}\"", + "paramAssignment": "Parameter {index}: Der Typ \"{sourceType}\" kann dem Typ \"{destType}\" nicht zugewiesen werden.", + "paramSpecMissingInOverride": "Parameter \"ParamSpec\" fehlen in der Überschreibungsmethode.", + "paramType": "Parametertyp ist \"{paramType}\"", + "privateImportFromPyTypedSource": "Stattdessen aus \"{module}\" importieren", + "propertyAccessFromProtocolClass": "Auf eine in einer Protokollklasse definierte Eigenschaft kann nicht als Klassenvariable zugegriffen werden.", + "propertyMethodIncompatible": "Die Eigenschaftsmethode \"{name}\" ist inkompatibel.", + "propertyMethodMissing": "Die Eigenschaftsmethode \"{name}\" fehlt in der Überschreibung.", + "propertyMissingDeleter": "Die Eigenschaft \"{name}\" hat keinen definierten Deleter.", + "propertyMissingSetter": "Die Eigenschaft \"{name}\" hat keinen definierten Setter.", + "protocolIncompatible": "\"{sourceType}\" ist nicht mit dem Protokoll \"{destType}\" kompatibel.", + "protocolMemberClassVar": "\"{name}\" ist keine Klassenvariable.", + "protocolMemberMissing": "\"{name}\" ist nicht vorhanden.", + "protocolSourceIsNotConcrete": "\"{sourceType}\" ist kein konkreter Klassentyp und kann dem Typ \"{destType}\" nicht zugewiesen werden.", + "pyrightCommentIgnoreTip": "Verwenden Sie \"# pyright: ignore[]\", um die Diagnose für eine einzelne Zeile zu unterdrücken.", + "readOnlyAttribute": "Das Attribut \"{name}\" ist schreibgeschützt.", + "seeClassDeclaration": "Siehe Klassendeklaration", + "seeDeclaration": "Siehe Deklaration", + "seeFunctionDeclaration": "Siehe Funktionsdeklaration", + "seeMethodDeclaration": "Siehe Methodendeklaration", + "seeParameterDeclaration": "Siehe Parameterdeklaration", + "seeTypeAliasDeclaration": "Siehe Typaliasdeklaration", + "seeVariableDeclaration": "Siehe Variablendeklaration", + "tupleAssignmentMismatch": "Der Typ \"{type}\" ist nicht mit dem Zieltupel kompatibel.", + "tupleEntryTypeMismatch": "Der Tupeleintrag {entry} ist ein falscher Typ.", + "tupleSizeMismatch": "Elementgrößenkonflikt: {expected} erwartet, aber {received} empfangen", + "typeAssignmentMismatch": "Der Typ \"{sourceType}\" kann dem Typ \"{destType}\" nicht zugewiesen werden.", + "typeBound": "Der Typ \"{sourceType}\" ist nicht mit dem gebundenen Typ \"{destType}\" für die Typvariablen \"{name}\" kompatibel.", + "typeConstrainedTypeVar": "Der Typ \"{type}\" ist mit der eingeschränkten Typvariablen nicht kompatibel \"{name}\"", + "typeIncompatible": "\"{sourceType}\" ist nicht mit \"{destType}\" kompatibel.", + "typeNotCallable": "Der Typ \"{type}\" kann nicht aufgerufen werden.", + "typeNotClass": "\"{type}\" ist keine Klasse.", + "typeNotStringLiteral": "\"{type}\" ist kein Zeichenfolgenliteral.", + "typeOfSymbol": "Der Typ von \"{name}\" ist \"{type}\".", + "typeParamSpec": "Typ \"{type}\" ist nicht mit ParamSpec \"{name}\" kompatibel.", + "typeUnsupported": "Typ \"{type}\" wird nicht unterstützt.", + "typeVarDefaultOutOfScope": "Die Typvariable \"{name}\" befindet sich nicht im Bereich.", + "typeVarIsContravariant": "TypeVar \"{name}\" ist \"contravariant\".", + "typeVarIsCovariant": "TypeVar \"{name}\" ist covariant", + "typeVarIsInvariant": "TypeVar \"{name}\" ist invariant", + "typeVarNotAllowed": "TypeVar oder generischer Typ mit Typargumenten sind nicht zulässig.", + "typeVarTupleRequiresKnownLength": "TypeVarTuple kann nicht an ein Tupel unbekannter Länge gebunden werden.", + "typeVarUnsolvableRemedy": "Geben Sie eine Überladung an, die den Rückgabetyp angibt, wenn das Argument nicht angegeben ist.", + "typeVarsMissing": "Fehlende Typvariablen: {names}", + "typedDictFieldMissing": "\"{name}\" fehlt in \"{type}\"", + "typedDictFieldNotReadOnly": "\"{name}\" ist in \"{type}\" nicht schreibgeschützt.", + "typedDictFieldNotRequired": "\"{name}\" ist in \"{type}\" nicht erforderlich.", + "typedDictFieldRequired": "\"{name}\" ist in \"{type}\" erforderlich.", + "typedDictFieldTypeMismatch": "Der Typ \"{type}\" kann dem Feld \"{name}\" nicht zugewiesen werden.", + "typedDictFieldTypeRedefinition": "Der Typ in der übergeordneten Klasse ist \"{parentType}\", und der Typ in der untergeordneten Klasse ist \"{childType}\"", + "typedDictFieldUndefined": "\"{name}\" ist ein nicht definiertes Feld im Typ \"{type}\"", + "typedDictFinalMismatch": "\"{sourceType}\" ist aufgrund eines @final-Konflikts nicht mit \"{destType}\" kompatibel.", + "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": "Verwenden Sie Dict[T1, T2], um einen Wörterbuchtyp anzugeben.", + "useListInstead": "Verwenden Sie List[T], um einen Listentyp anzugeben, oder Union[T1, T2], um einen Vereinigungstyp anzugeben.", + "useTupleInstead": "Verwenden Sie Tuple[T1, ..., Tn], um einen Tupeltyp anzugeben, oder Union[T1, T2], um einen Vereinigungstyp anzugeben.", + "useTypeInstead": "Stattdessen Typ[T] verwenden", + "varianceMismatchForClass": "Die Varianz des Typarguments \"{typeVarName}\" ist nicht mit der Basisklasse \"{className}\" kompatibel", + "varianceMismatchForTypeAlias": "Die Varianz des Typarguments \"{typeVarName}\" ist nicht mit \"{typeAliasParam}\" kompatibel" + } } diff --git a/packages/pyright-internal/src/localization/package.nls.es.json b/packages/pyright-internal/src/localization/package.nls.es.json index 0db3279e4..c536ab464 100644 --- a/packages/pyright-internal/src/localization/package.nls.es.json +++ b/packages/pyright-internal/src/localization/package.nls.es.json @@ -1,3 +1,718 @@ { - + "CodeAction": { + "addOptionalToAnnotation": "Agregar \"Optional\" a la anotación de tipo", + "createTypeStub": "Crear Tipo Stub", + "createTypeStubFor": "Crear Tipo Stub Para \"{moduleName}\"", + "executingCommand": "Ejecutando el comando", + "filesToAnalyzeCount": "{count} archivos para analizar", + "filesToAnalyzeOne": "1 archivo para analizar", + "findingReferences": "Buscando referencias", + "organizeImports": "Organizar Importaciones", + "renameShadowedFile": "Cambie el nombre de \"{oldFile}\" a \"{newFile}\"" + }, + "Diagnostic": { + "abstractMethodInvocation": "El método \"{method}\" no puede ser llamado porque es abstracto", + "annotatedParamCountMismatch": "El recuento de anotaciones del parámetro no coincide: se esperaba {expected}, pero se recibió {received}", + "annotatedTypeArgMissing": "Se espera un argumento de tipo y una o más anotaciones para \"Anotado\".", + "annotationFormatString": "Las anotaciones de tipo no pueden utilizar literales de cadena de formato (cadenas f)", + "annotationNotSupported": "No se admite la anotación de tipo para esta declaración", + "annotationSpansStrings": "Las anotaciones de tipo no pueden abarcar varios literales de cadena", + "annotationStringEscape": "Las anotaciones de tipo no pueden contener caracteres de escape", + "argAssignment": "Argumento de tipo \"{argType}\" no puede ser asignado a parámetro de tipo \"{paramType}\"", + "argAssignmentFunction": "El argumento de tipo \"{argType}\" no puede ser asignado a parámetro de tipo \"{paramType}\" en función \"{functionName}\"", + "argAssignmentParam": "Argumento de tipo \"{argType}\" no puede ser asignado a parámetro \"{paramName}\" de tipo \"{paramType}\"", + "argAssignmentParamFunction": "Argumento de tipo \"{argType}\" no puede ser asignado a parámetro \"{paramName}\" de tipo \"{paramType}\" en función \"{functionName}\"", + "argMissingForParam": "Falta el argumento para el parámetro {name}", + "argMissingForParams": "Faltan argumentos para los parámetros {names}", + "argMorePositionalExpectedCount": "Más argumentos posicionales {expected} esperados", + "argMorePositionalExpectedOne": "Se espera 1 argumento posicional más", + "argPositional": "Argumento posicional esperado", + "argPositionalExpectedCount": "Argumentos posicionales esperados {expected}", + "argPositionalExpectedOne": "Se espera 1 argumento posicional", + "argTypePartiallyUnknown": "El tipo de argumento es parcialmente desconocido", + "argTypeUnknown": "Tipo de argumento desconocido", + "assertAlwaysTrue": "La expresión Assert siempre se evalúa como verdadero", + "assertTypeArgs": "\"assert_type\" espera dos argumentos posicionales", + "assertTypeTypeMismatch": "Error de coincidencia \"assert_type\": se esperaba \"{expected}\" pero se ha recibido \"{received}\"", + "assignmentExprComprehension": "El destino de la expresión de asignación \"{name}\" no puede usar el mismo nombre que la comprensión para el destino", + "assignmentExprContext": "La expresión de asignación debe estar dentro de un módulo, función o lambda", + "assignmentExprInSubscript": "Las expresiones de asignación dentro de un subíndice solo se admiten en Python 3.10 y versiones posteriores.", + "assignmentInProtocol": "Las variables de instancia o clase dentro de una clase Protocol deben declararse explícitamente en el cuerpo de la clase.", + "assignmentTargetExpr": "La expresión no puede ser objetivo de asignación", + "asyncNotInAsyncFunction": "No se permite el uso de \"async\" fuera de la función asincrónica", + "awaitIllegal": "El uso de \"await\" requiere Python 3.5 o posterior.", + "awaitNotInAsync": "\"await\" solo se permite dentro de una función async", + "backticksIllegal": "En Python 3.x no se admiten expresiones rodeadas de puntos suspensivos; utilice repr en su lugar.", + "baseClassCircular": "La clase no se puede derivar de sí misma", + "baseClassFinal": "La clase base \"{type}\" está marcada como final y no puede ser subclasificada", + "baseClassInvalid": "El argumento de la clase debe ser una clase base", + "baseClassMethodTypeIncompatible": "Las clases base para la clase \"{classType}\" definen el método \"{name}\" de forma incompatible", + "baseClassUnknown": "Se desconoce el tipo de la clase base, lo que oculta el tipo de la clase derivada.", + "baseClassVariableTypeIncompatible": "Las clases base para la clase \"{classType}\" definen la variable \"{name}\" de forma incompatible", + "bindTypeMismatch": "No se pudo enlazar el método \"{methodName}\" porque \"{type}\" no se puede asignar al parámetro \"{paramName}\"", + "breakOutsideLoop": "\"break\" solo se puede usar dentro de un bucle", + "callableExtraArgs": "Se esperaban solo dos argumentos de tipo para \"Exigible\".", + "callableFirstArg": "Lista de tipos de parámetros esperados o \"...\"", + "callableNotInstantiable": "No se puede instanciar el tipo \"{type}\"", + "callableSecondArg": "Tipo de retorno esperado como segundo argumento de tipo para \"Exigible\"", + "casePatternIsIrrefutable": "El patrón irrefutable solo se permite para la última instrucción case", + "classAlreadySpecialized": "El tipo \"{type}\" ya está especializado", + "classDecoratorTypeUnknown": "El decorador de clase sin tipo oculta el tipo de clase; omitiendo el elemento Decorator", + "classDefinitionCycle": "La definición de clase para \"{name}\" depende de sí misma.", + "classGetItemClsParam": "__class_getitem__ debe tomar un parámetro \"cls\"", + "classMethodClsParam": "Los métodos de clase deben tomar un parámetro \"cls\"", + "classNotRuntimeSubscriptable": "El subíndice para la clase \"{name}\" generará una excepción en tiempo de ejecución; encierre la anotación de tipo entre comillas", + "classPatternBuiltInArgCount": "El patrón de clase acepta como máximo 1 subpatrón posicional", + "classPatternBuiltInArgPositional": "El patrón de clase solo acepta subpatrones posicionales", + "classPatternTypeAlias": "\"{type}\" no se puede usar en un patrón de clase porque es un alias de tipo especializado", + "classTypeParametersIllegal": "La sintaxis de los parámetros de tipo de clase requiere Python 3.12 o posterior.", + "classVarFirstArgMissing": "Se esperaba un argumento de tipo después de \"ClassVar\"", + "classVarNotAllowed": "\"ClassVar\" no está permitido en este contexto", + "classVarOverridesInstanceVar": "La variable de clase \"{name}\" anula la variable de instancia del mismo nombre en la clase \"{className}\"", + "classVarTooManyArgs": "Solo se esperaba un argumento de tipo después de \"ClassVar\"", + "classVarWithTypeVar": "El tipo \"ClassVar\" no puede incluir variables de tipo", + "clsSelfParamTypeMismatch": "El tipo de parámetro \"{name}\" debe ser un supertipo de su clase \"{classType}\"", + "codeTooComplexToAnalyze": "El código es demasiado complejo para analizarlo; reduzca la complejidad refactorizándolo en subrutinas o reduciendo las rutas de código condicional.", + "collectionAliasInstantiation": "No se puede crear una instancia del tipo \"{type}\"; use \"{alias}\" en su lugar.", + "comparisonAlwaysFalse": "La condición siempre se evaluará como Falso, ya que los tipos \"{leftType}\" y \"{rightType}\" no se superponen.", + "comparisonAlwaysTrue": "La condición siempre se evaluará como Verdadero, ya que los tipos \"{leftType}\" y \"{rightType}\" no se superpone.", + "comprehensionInDict": "La comprensión no puede utilizarse con otras entradas del diccionario", + "comprehensionInSet": "La comprensión no se puede usar con otras entradas de conjunto", + "concatenateParamSpecMissing": "El último argumento de tipo para \"Concatenatar\" debe ser un ParamSpec", + "concatenateTypeArgsMissing": "\"Concatenar\" requiere al menos dos argumentos de tipo", + "conditionalOperandInvalid": "Operando condicional no válido de tipo \"{type}\"", + "constantRedefinition": "\"{name}\" es constante (porque está en mayúsculas) y no se puede volver a definir", + "constructorNoArgs": "No se esperaban argumentos para el constructor \"{type}\"", + "constructorParametersMismatch": "Error de coincidencia entre la firma de __new__ y __init__ en la clase \"{classType}\"", + "containmentAlwaysFalse": "La expresión siempre se evaluará como False, ya que los tipos \"{leftType}\" y \"{rightType}\" no tienen superposición", + "containmentAlwaysTrue": "La expresión siempre se evaluará como True, ya que los tipos \"{leftType}\" y \"{rightType}\" no tienen superposición", + "continueInFinally": "\"continue\" no puede utilizarse dentro de una cláusula finally", + "continueOutsideLoop": "\"continue\" solo puede utilizarse dentro de un bucle", + "dataClassBaseClassFrozen": "Una clase no inmovilizada no puede heredar de una clase inmovilizada", + "dataClassBaseClassNotFrozen": "Una clase congelada no puede heredar de una clase que no esté congelada", + "dataClassConverterFunction": "Argumento de tipo \"{argType}\" no es un convertidor válido para el campo \"{fieldName}\" de tipo \"{fieldType}\"", + "dataClassConverterOverloads": "No hay sobrecargas de \"{funcName}\" que sean convertidores válidos para el campo \"{fieldName}\" de tipo \"{fieldType}\"", + "dataClassFieldWithDefault": "Los campos sin valores predeterminados no pueden aparecer después de los campos con valores predeterminados", + "dataClassFieldWithPrivateName": "El campo Dataclass no puede utilizar un nombre privado", + "dataClassFieldWithoutAnnotation": "El campo Dataclass sin anotación de tipo provocará una excepción en tiempo de ejecución", + "dataClassPostInitParamCount": "Dataclass __post_init__ recuento de parámetros incorrecto; el número de campos InitVar es {esperado}.", + "dataClassPostInitType": "El tipo de parámetro del método __post_init__ de la clase de datos no coincide con el del campo \"{fieldName}\".", + "dataClassSlotsOverwrite": "__slots__ ya está definido en la clase", + "dataClassTransformExpectedBoolLiteral": "Expresión esperada que se evalúa estáticamente como True o False", + "dataClassTransformFieldSpecifier": "Se esperaba una tupla de clases o funciones, pero se recibió el tipo \"{type}\"", + "dataClassTransformPositionalParam": "Todos los argumentos de \"dataclass_transform\" deben ser argumentos de palabra clave", + "dataClassTransformUnknownArgument": "El argumento \"{name}\" no es compatible con dataclass_transform", + "declaredReturnTypePartiallyUnknown": "El tipo de retorno declarado, \"{returnType}\", es parcialmente desconocido", + "declaredReturnTypeUnknown": "El tipo de retorno declarado es desconocido", + "defaultValueContainsCall": "No se permiten llamadas de función y objetos mutables dentro de la expresión de valor predeterminado del parámetro", + "defaultValueNotAllowed": "Los parámetros con \"*\" o \"**\" no pueden tener valor por defecto", + "delTargetExpr": "No se puede eliminar la expresión", + "deprecatedClass": "La clase \"{name}\" está en desuso", + "deprecatedConstructor": "El constructor de la clase \"{name}\" está obsoleto", + "deprecatedFunction": "Esta función \"{name}\" está obsoleta", + "deprecatedType": "Este tipo está obsoleto a partir de la {version} de Python; utilice en su lugar \"{replacement}\".", + "dictExpandIllegalInComprehension": "No se permite la ampliación del diccionario en la comprensión", + "dictInAnnotation": "Expresión de diccionario no permitida en anotación de tipo", + "dictKeyValuePairs": "Las entradas del diccionario deben contener pares clave/valor", + "dictUnpackIsNotMapping": "Asignación esperada para el operador de desempaquetado del diccionario", + "dunderAllSymbolNotPresent": "\"{name}\" se especifica en __all__ pero no está presente en el módulo", + "duplicateArgsParam": "Solo se permite un parámetro \"*\".", + "duplicateBaseClass": "Clase base duplicada no permitida", + "duplicateCapturePatternTarget": "El destino de captura \"{name}\" no puede aparecer más de una vez dentro del mismo patrón", + "duplicateCatchAll": "Solo se permite una cláusula de excepción", + "duplicateEnumMember": "El miembro Enum \"{name}\" ya está declarado", + "duplicateGenericAndProtocolBase": "Solo se permite una clase base Genérica[...] o Protocolar[...].", + "duplicateImport": "\"{importName}\" se importa más de una vez", + "duplicateKeywordOnly": "Solo se permite un separador \"*\".", + "duplicateKwargsParam": "Solo se permite un parámetro \"**\".", + "duplicateParam": "Parámetro duplicado \"{name}\"", + "duplicatePositionOnly": "Solo se permite un parámetro \"/\"", + "duplicateStarPattern": "Solo se permite un patrón \"*\" en una secuencia de patrones", + "duplicateStarStarPattern": "Solo se permite una entrada \"**\"", + "duplicateUnpack": "Solo se permite una operación de desempaquetado en la lista", + "ellipsisContext": "\"...\" no está permitido en este contexto", + "ellipsisSecondArg": "\"...\" permitido sólo como el segundo de dos argumentos", + "enumClassOverride": "La clase Enum \"{name}\" es final y no puede ser subclasificada", + "exceptionGroupIncompatible": "La sintaxis de grupo de excepciones (\"except*\") requiere Python 3.11 o posterior.", + "exceptionTypeIncorrect": "\"{type}\" no se deriva de BaseException", + "exceptionTypeNotClass": "\"{type}\" no es una clase de excepción válida", + "exceptionTypeNotInstantiable": "El constructor para el tipo de excepción \"{type}\" requiere uno o más argumentos", + "expectedAfterDecorator": "Se esperaba una declaración de función o clase después del decorador", + "expectedArrow": "Se esperaba \"->\" seguido de una anotación de tipo de retorno", + "expectedAsAfterException": "Se esperaba \"as\" después del tipo de excepción", + "expectedAssignRightHandExpr": "Expresión esperada a la derecha de \"=\"", + "expectedBinaryRightHandExpr": "Expresión esperada a la derecha del operador", + "expectedBoolLiteral": "Se esperaba True o False", + "expectedCase": "Declaración \"case\" esperada", + "expectedClassName": "Nombre de clase esperado", + "expectedCloseBrace": "\"{\" no estaba cerrado", + "expectedCloseBracket": "\"[\" no estaba cerrado", + "expectedCloseParen": "\"(\" no estaba cerrado", + "expectedColon": "Se esperaba \":\"", + "expectedComplexNumberLiteral": "Número complejo literal esperado para la concordancia de patrones", + "expectedDecoratorExpr": "Forma de expresión no compatible con Decorator anterior a Python 3.9", + "expectedDecoratorName": "Nombre esperado del Decorator", + "expectedDecoratorNewline": "Nueva línea esperada al final de Decorator", + "expectedDelExpr": "Expresión esperada después de \"del\"", + "expectedElse": "Se espera \"else\"", + "expectedEquals": "Se esperaba \"=\"", + "expectedExceptionClass": "Clase o objeto de excepción no válido", + "expectedExceptionObj": "Objeto de excepción esperado, clase de excepción o Ninguno", + "expectedExpr": "Se esperaba una expresión", + "expectedFunctionAfterAsync": "Definición de función esperada después de \"async\"", + "expectedFunctionName": "Se esperaba nombre de la función luego de \"def\"", + "expectedIdentifier": "Identificador esperado", + "expectedImport": "Se espera \"import\"", + "expectedImportAlias": "Símbolo esperado después de \"como\"", + "expectedImportSymbols": "Se esperan uno o más nombres de símbolos tras la importación", + "expectedIn": "Se esperaba \"in\"", + "expectedInExpr": "Expresión esperada después de \"in\"", + "expectedIndentedBlock": "Bloque con sangría previsto", + "expectedMemberName": "Nombre de miembro esperado después de \".\"", + "expectedModuleName": "Nombre de módulo esperado", + "expectedNameAfterAs": "Se esperaba un nombre de símbolo después de \"as\"", + "expectedNamedParameter": "El parámetro de palabra clave debe ir después de \"*\".", + "expectedNewline": "Nueva línea esperada", + "expectedNewlineOrSemicolon": "Las declaraciones deben ir separadas por nuevas líneas o punto y coma", + "expectedOpenParen": "Se espera \"(\"", + "expectedParamName": "Nombre esperado del parámetro", + "expectedPatternExpr": "Expresión del patrón esperado", + "expectedPatternSubjectExpr": "Expresión de asunto de patrón esperada", + "expectedPatternValue": "Expresión de valor de patrón esperada de la forma \"a.b\"", + "expectedReturnExpr": "Expresión esperada después de \"return\"", + "expectedSliceIndex": "Expresión de índice o segmento esperada", + "expectedTypeNotString": "Se esperaba un tipo pero se ha recibido una cadena literal", + "expectedTypeParameterName": "Nombre de parámetro de tipo esperado", + "expectedYieldExpr": "Expresión esperada en la instrucción yield", + "finalClassIsAbstract": "La clase \"{type}\" está marcada como final y debe implementar todos los métodos abstractos", + "finalContext": "\"Final\" no está permitido en este contexto", + "finalMethodOverride": "El método \"{name}\" no puede anular el método final definido en la clase \" {className}\"", + "finalReassigned": "\"{name}\" se declara como Final y no se puede reasignar", + "finalRedeclaration": "\"{name}\" se declaró anteriormente como Final", + "finalRedeclarationBySubclass": "\"{name}\" no puede ser redeclarado porque la clase padre \"{className}\" lo declara como Final", + "finalTooManyArgs": "Se esperaba un único argumento de tipo después de \"Final\".", + "finalUnassigned": "\"{name}\" se declara Final, pero no se asigna valor", + "formatStringBrace": "No se permite una llave de cierre única dentro del literal de cadena f; usar llave de cierre doble", + "formatStringBytes": "Los literales de cadena de formato (f-strings) no pueden ser binarios", + "formatStringDebuggingIllegal": "El especificador de depuración de cadena F \"=\" requiere Python 3.8 o posterior", + "formatStringEscape": "Secuencia de escape (barra diagonal inversa) no permitida en la parte de expresión de f-string anterior a Python 3.12", + "formatStringExpectedConversion": "Se esperaba un especificador de conversión después de \"!\" en f-string", + "formatStringIllegal": "Los literales de cadena de formato (f-strings) requieren Python 3.6 o posterior", + "formatStringInPattern": "Cadena de formato no permitida en el patrón", + "formatStringNestedFormatSpecifier": "Expresiones anidadas demasiado profundamente dentro del especificador de cadena de formato", + "formatStringNestedQuote": "Las cadenas anidadas dentro de una cadena f no pueden usar el mismo carácter de comillas que la cadena f anterior a Python 3.12", + "formatStringUnicode": "Los literales de cadena de formato (cadenas f) no pueden ser unicode", + "formatStringUnterminated": "Expresión sin terminar en f-string; se esperaba \"}\"", + "functionDecoratorTypeUnknown": "Un decorator de función no tipificado oculta el tipo de función; ignorar el decorator", + "functionInConditionalExpression": "La expresión condicional hace referencia a una función que siempre se evalúa como Verdadero", + "functionTypeParametersIllegal": "La sintaxis del parámetro de tipo de función requiere Python 3.12 o posterior", + "futureImportLocationNotAllowed": "Las importaciones desde __future__ deben estar al principio del fichero", + "generatorAsyncReturnType": "El tipo de retorno de la función generadora asíncrona debe ser compatible con \"AsyncGenerator[{yieldType}, Any]\"", + "generatorNotParenthesized": "Las expresiones del generador deben ir entre paréntesis si no son el único argumento", + "generatorSyncReturnType": "El tipo de retorno de la función generadora debe ser compatible con \"Generator[{yieldType}, Any, Any]\"", + "genericBaseClassNotAllowed": "La clase base \"Generic\" no se puede usar con la sintaxis de parámetro de tipo", + "genericClassAssigned": "No se puede asignar un tipo de clase genérico", + "genericClassDeleted": "No se puede eliminar el tipo de clase genérica", + "genericNotAllowed": "\"Generic\" no es válido en este contexto", + "genericTypeAliasBoundTypeVar": "Los alias de tipo genérico dentro de una clase no pueden utilizar variables de tipo vinculadas {names}.", + "genericTypeArgMissing": "\"Generic\" requiere al menos un argumento de tipo", + "genericTypeArgTypeVar": "El argumento de tipo para \"Generic\" debe ser una variable de tipo", + "genericTypeArgUnique": "Los argumentos de tipo para \"Generic\" deben ser únicos", + "globalReassignment": "\"{name}\" se asigna antes de la declaración global", + "globalRedefinition": "\"{name}\" ya ha sido declarado global", + "implicitStringConcat": "No se permite la concatenación implícita de cadenas", + "importCycleDetected": "Ciclo detectado en la cadena de importación", + "importDepthExceeded": "La profundidad de la cadena de importación superó {depth}", + "importResolveFailure": "No se ha podido resolver la importación \"{importName}\".", + "importSourceResolveFailure": "La importación \"{importName}\" no se ha podido resolver desde el origen", + "importSymbolUnknown": "\"{name}\" es un símbolo de importación desconocido", + "incompatibleMethodOverride": "El método \"{name}\" sobrescribe la clase \"{className}\" de forma incompatible", + "inconsistentIndent": "La cantidad sin sangría no coincide con la sangría anterior", + "inconsistentTabs": "Uso incoherente de tabuladores y espacios en la sangría", + "initMustReturnNone": "El tipo de retorno de \"__init__\" debe ser None", + "initSubclassClsParam": "__init_subclass__ debe tomar un parámetro \"cls\"", + "instanceMethodSelfParam": "Los métodos de instancia deben tomar un parámetro \"auto\"", + "instanceVarOverridesClassVar": "La variable de instancia \"{name}\" invalida la variable de clase del mismo nombre en la clase \"{className}\"", + "instantiateAbstract": "No se puede instanciar la clase abstracta \"{tipo}\"", + "instantiateProtocol": "No se puede crear una instancia de la clase de protocolo \"{type}\"", + "internalBindError": "Se ha producido un error interno al vincular el archivo \"{file}\": {message}", + "internalParseError": "Se ha producido un error interno al procesar el archivo \"{file}\": {message}", + "internalTypeCheckingError": "Se ha producido un error interno al comprobar el tipo de archivo \"{file}\":{message}", + "invalidIdentifierChar": "Carácter no válido en el identificador", + "invalidStubStatement": "La declaración no tiene sentido dentro de un archivo de tipo stub", + "invalidTokenChars": "Carácter \"{text}\" no válido en el token", + "isInstanceInvalidType": "El segundo argumento de \"isinstance\" debe ser una clase o tupla de clases", + "isSubclassInvalidType": "El segundo argumento de \"issubclass\" debe ser una clase o tupla de clases", + "keyValueInSet": "No se permiten pares de clave/valor dentro de un conjunto", + "keywordArgInTypeArgument": "No se pueden usar argumentos de palabra clave en listas de argumentos de tipo", + "keywordOnlyAfterArgs": "No se permite el separador de argumentos por palabra clave después del parámetro \"*\".", + "keywordParameterMissing": "Uno o varios parámetros de palabra clave deben seguir el parámetro \"*\"", + "keywordSubscriptIllegal": "No se admiten argumentos de palabra clave dentro de subíndices", + "lambdaReturnTypePartiallyUnknown": "El tipo de retorno de la lambda \"{returnType}\" es parcialmente desconocido.", + "lambdaReturnTypeUnknown": "Se desconoce el tipo de retorno de la lambda", + "listAssignmentMismatch": "La expresión con el tipo \"{type}\" no puede asignarse a la lista de destino", + "listInAnnotation": "Expresión de lista no permitida en anotación de tipo", + "literalEmptyArgs": "Se esperaban uno o varios argumentos de tipo después de \"Literal\"", + "literalNotCallable": "El tipo literal no puede instanciarse", + "literalUnsupportedType": "Los argumentos de tipo para \"Literal\" deben ser None, un valor literal (int, bool, str, o bytes), o un valor enum", + "matchIncompatible": "Las declaraciones de coincidencia requieren Python 3.10 o posterior", + "matchIsNotExhaustive": "Los casos dentro de la declaración de coincidencia no tratan exhaustivamente todos los valores", + "maxParseDepthExceeded": "Se ha superado la profundidad máxima de análisis; divida la expresión en subexpresiones más pequeñas.", + "memberAccess": "No se puede acceder al miembro \"{name}\" para el tipo \" {type} \"", + "memberDelete": "No se puede eliminar el miembro \"{name}\" para el tipo \"{type}\"", + "memberSet": "No se puede asignar el miembro \"{name}\" para el tipo \"{type}\"", + "metaclassConflict": "La metaclase de una clase derivada debe ser una subclase de las metaclases de todas sus clases base", + "metaclassDuplicate": "Solo se puede proporcionar una metaclase", + "metaclassIsGeneric": "La metaclase no puede ser genérica", + "methodNotDefined": "Método \"{name}\" no definido", + "methodNotDefinedOnType": "Método \"{name}\" no definido en el tipo \"{type}\"", + "methodOrdering": "No se puede crear una ordenación coherente de los métodos", + "methodOverridden": "\"{name}\" invalida el método del mismo nombre en la clase \"{className}\" con el tipo incompatible \"{type}\"", + "methodReturnsNonObject": "El método \"{name}\" no devuelve un objeto", + "missingProtocolMembers": "La clase deriva de una o varias clases de protocolo, pero no implementa todos los miembros necesarios", + "missingSuperCall": "El método \"{methodName}\" no llama al método del mismo nombre en la clase principal.", + "moduleAsType": "El módulo no se puede usar como tipo.", + "moduleNotCallable": "No se puede llamar al módulo", + "moduleUnknownMember": "\"{memberName}\" no es un miembro conocido del módulo \"{moduleName}\"", + "namedExceptAfterCatchAll": "Una cláusula except con nombre no puede aparecer después de la cláusula catch-all except", + "namedParamAfterParamSpecArgs": "El parámetro de palabra clave \"{name}\" no puede aparecer en la firma después del parámetro ParamSpec args", + "namedTupleEmptyName": "Los nombres de una tupla con nombre no pueden estar vacíos", + "namedTupleFirstArg": "Nombre de clase de tupla como primer argumento", + "namedTupleMultipleInheritance": "No se admite la herencia múltiple con NamedTuple", + "namedTupleNameType": "Tupla de dos entradas esperada que especifica el nombre y el tipo de entrada", + "namedTupleNameUnique": "Los nombres dentro de una tupla con nombre deben ser únicos", + "namedTupleNoTypes": "\"namedtuple\" no proporciona tipos para las entradas de tupla; utilice en su lugar \"NamedTuple\".", + "namedTupleSecondArg": "Lista de entradas de tupla con nombre esperada como segundo argumento", + "newClsParam": "__new__ debe tomar un parámetro \"cls\"", + "newTypeBadName": "El primer argumento de NewType debe ser una cadena literal", + "newTypeLiteral": "NewType no se puede usar con el tipo Literal", + "newTypeNotAClass": "Clase esperada como segundo argumento de NewType", + "newTypeParamCount": "NewType requiere dos argumentos posicionales", + "newTypeProtocolClass": "NewType no puede utilizarse con la clase de protocolo", + "noOverload": "Ninguna sobrecarga para \"{name}\" coincide con los argumentos proporcionados", + "noReturnContainsReturn": "La función con tipo de retorno declarado \"NoReturn\" no puede incluir una sentencia volver", + "noReturnContainsYield": "La función con tipo de retorno declarado \"NoReturn\" no puede incluir una instrucción yield", + "noReturnReturnsNone": "Una función con el tipo declarado \"NoReturn\" no puede devolver \"None\".", + "nonDefaultAfterDefault": "El argumento no predeterminado sigue al argumento predeterminado", + "nonLocalInModule": "Declaración no local no permitida a nivel de módulo", + "nonLocalNoBinding": "No se ha encontrado ningún enlace para \"{name}\" no local.", + "nonLocalReassignment": "\"{name}\" se asigna antes de la declaración no local", + "nonLocalRedefinition": "\"{name}\" ya fue declarado no local", + "noneNotCallable": "No se puede llamar al objeto de tipo \"None\"", + "noneNotIterable": "No se puede utilizar un objeto de tipo \"Ninguno\" como valor iterable", + "noneNotSubscriptable": "El objeto de tipo \"None\" no se puede suscribir", + "noneNotUsableWith": "El objeto de tipo \"None\" no puede utilizarse con \"with\".", + "noneOperator": "El operador \"{operator}\" no es compatible con \"None\".", + "noneUnknownMember": "\"{name}\" no es un miembro conocido de \"None\"", + "notRequiredArgCount": "Se esperaba un único argumento de tipo después de \"NotRequired\".", + "notRequiredNotInTypedDict": "\"NotRequired\" no está permitido en este contexto", + "objectNotCallable": "El objeto de tipo \"{type}\" no es invocable", + "obscuredClassDeclaration": "La declaración de clase \"{name}\" queda oculta por una declaración del mismo nombre", + "obscuredFunctionDeclaration": "La declaración de función \"{name}\" queda oculta por una declaración del mismo nombre", + "obscuredMethodDeclaration": "La declaración de método \"{name}\" queda oculta por una declaración del mismo nombre", + "obscuredParameterDeclaration": "La declaración de parámetro \"{name}\" queda oculta por una declaración del mismo nombre", + "obscuredTypeAliasDeclaration": "La declaración de alias de tipo \"{name}\" queda oculta por una declaración del mismo nombre", + "obscuredVariableDeclaration": "La declaración \"{name}\" está oculta por una declaración del mismo nombre", + "operatorLessOrGreaterDeprecated": "El operador \"<>\" no es admitido en Python 3; utilice en su lugar \"!=\".", + "optionalExtraArgs": "Se esperaba un argumento de tipo después de \"Optional\"", + "orPatternIrrefutable": "El patrón irrefutable solo se permite como el último subpatrón en un patrón \"or\".", + "orPatternMissingName": "Todos los subpatrones de un patrón \"o\" deben tener los mismos nombres", + "overlappingOverload": "La sobrecarga {obscured} para \"{name}\" nunca se utilizará porque sus parámetros se superpone con la sobrecarga {obscuredBy}.", + "overloadAbstractMismatch": "Todos los métodos sobrecargados deben ser abstractos o no", + "overloadImplementationMismatch": "La implementación de la sobrecarga no es consistente con la firma de la sobrecarga {index}", + "overloadReturnTypeMismatch": "La sobrecarga {prevIndex} para \" {name}\" se superpone con la sobrecarga {newIndex} y devuelve un tipo incompatible", + "overloadWithImplementation": "\"{name}\" está marcado como sobrecarga, pero incluye una implementación", + "overloadWithoutImplementation": "\"{name}\" está marcado como sobrecarga, pero no se proporciona ninguna implementación.", + "overriddenMethodNotFound": "El método \"{name}\" está marcado como invalidación, pero no existe ningún método base con el mismo nombre", + "overrideDecoratorMissing": "El método \"{name}\" no está marcado como invalidación, pero está reemplazando un método de la clase \"{className}\"", + "paramAfterKwargsParam": "El parámetro no puede seguir el parámetro \"**\"", + "paramAlreadyAssigned": "El parámetro \"{name}\" ya está asignado", + "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}\"", + "paramSpecArgsKwargsUsage": "Los miembros \"args\" y \"kwargs\" de ParamSpec deben aparecer ambos dentro de una firma de función", + "paramSpecArgsMissing": "Faltan argumentos para ParamSpec \"{type}\".", + "paramSpecArgsUsage": "El miembro \"args\" de ParamSpec solo es válido cuando se usa con el parámetro *args.", + "paramSpecAssignedName": "ParamSpec debe asignarse a una variable llamada \"{name} \"", + "paramSpecContext": "ParamSpec no permitido en este contexto", + "paramSpecDefaultNotTuple": "Se esperaban puntos suspensivos, una expresión de tupla o ParamSpec para el valor predeterminado de ParamSpec", + "paramSpecFirstArg": "Se esperaba el nombre de ParamSpec como primer argumento", + "paramSpecKwargsUsage": "El miembro \"kwargs\" de ParamSpec solo es válido cuando se utiliza con el parámetro **kwargs", + "paramSpecNotBound": "La especificación de parámetro \"{type}\" no tiene valor vinculado", + "paramSpecNotUsedByOuterScope": "ParamSpec \"{name}\" no tiene significado en este contexto", + "paramSpecScopedToReturnType": "El ámbito de ParamSpec \"{name}\" es un ámbito al que se puede llamar dentro del tipo de valor devuelto y no se puede hacer referencia a él en el cuerpo de la función.", + "paramSpecUnknownArg": "ParamSpec no admite más de un argumento", + "paramSpecUnknownMember": "\"{name}\" no es un miembro conocido de ParamSpec", + "paramSpecUnknownParam": "\"{name}\" es un parámetro desconocido para ParamSpec", + "paramTypeCovariant": "La variable de tipo covariante no puede utilizarse en el tipo de parámetro", + "paramTypePartiallyUnknown": "El tipo de parámetro \"{paramName}\" es parcialmente desconocido", + "paramTypeUnknown": "Se desconoce el tipo del parámetro \"{paramName}\".", + "parenthesizedContextManagerIllegal": "Los paréntesis dentro de la instrucción \"with\" requieren Python 3.9 o posterior", + "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", + "positionOnlyAfterArgs": "No se permite el separador de argumentos por posición tras el parámetro \"*\".", + "positionOnlyAfterKeywordOnly": "El parámetro \"/\" debe aparecer antes del parámetro \"*\".", + "positionOnlyFirstParam": "Separador de argumentos de solo posición no permitido como primer parámetro", + "positionOnlyIncompatible": "El separador de argumentos por posición requiere Python 3.8 o posterior.", + "privateImportFromPyTypedModule": "\"{name}\" no se exporta desde el módulo \"{module}\"", + "privateUsedOutsideOfClass": "\"{name}\" es privado y se utiliza fuera de la clase en la que se declara", + "privateUsedOutsideOfModule": "\"{name}\" es privado y se utiliza fuera del módulo en el que se declara", + "propertyOverridden": "\"{name}\" invalida incorrectamente la propiedad del mismo nombre en la clase \"{className}\"", + "propertyStaticMethod": "Métodos estáticos no permitidos para los valores getter, setter o deleter de propiedades", + "protectedUsedOutsideOfClass": "\"{name}\" está protegido y se usa fuera de la clase en la que se declara", + "protocolBaseClass": "La clase de protocolo \"{classType}\" no se puede derivar de la clase que no es de protocolo \"{baseType}\"", + "protocolBaseClassWithTypeArgs": "No se permiten argumentos de tipo con la clase Protocol cuando se usa la sintaxis de parámetro de tipo", + "protocolIllegal": "El uso de \"Protocolo\" requiere Python 3.7 o posterior.", + "protocolNotAllowedInTypeArgument": "\"Protocol\" no puede utilizarse como argumento de tipo", + "protocolUsedInCall": "La clase de protocolo no puede utilizarse en la llamada \"{name}\".", + "protocolVarianceContravariant": "La variable de tipo \"{variable}\" usada en el protocolo genérico \"{class}\" debe ser contravariante.", + "protocolVarianceCovariant": "La variable de tipo \"{variable}\" usada en el protocolo genérico \"{class}\" debe ser covariante", + "protocolVarianceInvariant": "La variable de tipo \"{variable}\" usada en el protocolo genérico \"{class}\" debe ser invariable.", + "pyrightCommentInvalidDiagnosticBoolValue": "La directiva de comentario Pyright debe ir seguida de \"=\" y un valor de true o false", + "pyrightCommentInvalidDiagnosticSeverityValue": "La directiva de comentario Pyright debe ir seguida de \"=\" y un valor de verdadero, falso, error, advertencia, información o ninguno.", + "pyrightCommentMissingDirective": "El comentario de copyright debe ir seguido de una directiva (básica o estricta) o de una regla de diagnóstico", + "pyrightCommentNotOnOwnLine": "Los comentarios de copyright utilizados para controlar los ajustes a nivel de archivo deben aparecer en su propia línea", + "pyrightCommentUnknownDiagnosticRule": "\"{rule}\" es una regla de diagnóstico desconocida para el comentario pyright", + "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\" es un valor no válido para el comentario pyright; se espera verdadero, falso, error, advertencia, información o ninguno.", + "pyrightCommentUnknownDirective": "\"{directive}\" es una directiva desconocida para el comentario pyright; se esperaba \"strict\" o \"basic\".", + "readOnlyArgCount": "Se esperaba un único argumento de tipo después de \"ReadOnly\"", + "readOnlyNotInTypedDict": "\"ReadOnly\" no está permitido en este contexto", + "recursiveDefinition": "No se pudo determinar el tipo de \"{name}\" porque hace referencia a sí mismo.", + "relativeImportNotAllowed": "Las importaciones relativas no pueden utilizarse con la forma \"import .a\"; utilice en su lugar \"from . import a\"", + "requiredArgCount": "Se esperaba un único argumento de tipo después de \"Required\"", + "requiredNotInTypedDict": "\"Required\" no está permitido en este contexto", + "returnInAsyncGenerator": "No se permite la instrucción Return con valor en el generador asincrónico", + "returnMissing": "La función con el tipo declarado \"{returnType}\" debe devolver un valor en todas las rutas de acceso del código.", + "returnOutsideFunction": "\"return\" solo se puede usar dentro de una función", + "returnTypeContravariant": "La variable de tipo contravariante no se puede usar en el tipo de valor devuelto", + "returnTypeMismatch": "La expresión del tipo \"{exprType}\" no puede asignarse al tipo de retorno \"{returnType}\"", + "returnTypePartiallyUnknown": "El tipo de retorno, \"{returnType}\", es parcialmente desconocido", + "returnTypeUnknown": "Tipo de retorno desconocido", + "revealLocalsArgs": "No se esperaba ningún argumento para la llamada \"reveal_locals\"", + "revealLocalsNone": "No hay locales en este ámbito", + "revealTypeArgs": "Se esperaba un único argumento posicional para la llamada \"reveal_type\"", + "revealTypeExpectedTextArg": "El argumento \"expected_text\" de la función \"reveal_type\" debe ser un valor literal str.", + "revealTypeExpectedTextMismatch": "El tipo de texto no coincide; se esperaba \"{expected}\" pero se ha recibido \"{received}\".", + "revealTypeExpectedTypeMismatch": "Error de coincidencia de tipos; se esperaba \"{expected}\", pero se recibió \"{received}\"", + "selfTypeContext": "\"Self\" no es válido en este contexto", + "selfTypeWithTypedSelfOrCls": "\"Auto\" no puede utilizarse en una función con un parámetro `self` o `cls` que tenga una anotación de tipo distinta de \"Auto\".", + "setterGetterTypeMismatch": "El tipo de valor setter de propiedad no se puede asignar al tipo devuelto por el valor setter", + "singleOverload": "\"{name}\" está marcado como sobrecarga, pero faltan sobrecargas adicionales", + "slotsAttributeError": "\"{name}\" no se especificó en __slots__", + "slotsClassVarConflict": "\"{name}\" entra en conflicto con la variable de instancia declarada en __slots__", + "starPatternInAsPattern": "El patrón estrella no puede utilizarse con el objetivo \"as\"", + "starPatternInOrPattern": "El patrón de estrella no puede unirse a otros patrones", + "starStarWildcardNotAllowed": "** no puede utilizarse con el comodín \"_\".", + "staticClsSelfParam": "Los métodos estáticos no deben tomar un parámetro \"auto\" o \"cls\".", + "stdlibModuleOverridden": "\"{path}\" está reemplazando el módulo stdlib \"{name}\"", + "strictTypeGuardReturnType": "El tipo de retorno de StrictTypeGuard (\"{returnType}\") no es asignable al tipo de parámetro de valor (\"{type}\")", + "stringNonAsciiBytes": "Carácter no ASCII no permitido en el literal de cadena de bytes", + "stringNotSubscriptable": "La expresión de cadena no puede ir entre comillas en la anotación de tipo; encierre toda la anotación entre comillas.", + "stringUnsupportedEscape": "Secuencia de escape no admitida en el literal de cadena", + "stringUnterminated": "La cadena literal no está terminada", + "stubFileMissing": "Archivo Stub no encontrado para \"{importName}\"", + "stubUsesGetAttr": "El archivo stub de tipo está incompleto; \"__getattr__\" oculta errores de tipo para el módulo", + "sublistParamsIncompatible": "Los parámetros de sublista no están soportados en Python 3.x", + "superCallArgCount": "No se esperaban más de dos argumentos para la llamada \"super\"", + "superCallFirstArg": "Se esperaba el tipo de clase como primer argumento de la llamada a \"super\" pero se recibió \"{type}\"", + "superCallSecondArg": "El segundo argumento de la llamada a \"super\" debe ser un objeto o clase que derive de \"{type}\"", + "superCallZeroArgForm": "La forma sin argumentos de la llamada \"super\" sólo es válida dentro de una clase", + "symbolIsPossiblyUnbound": "\"{name}\" está posiblemente desvinculado", + "symbolIsUnbound": "\"{name}\" está sin consolidar", + "symbolIsUndefined": "\"{name}\" no está definido", + "symbolOverridden": "\"{name}\" anula el símbolo del mismo nombre en la clase \"{className}\"", + "totalOrderingMissingMethod": "La clase debe definir uno de \"__lt__\", \"__le__\", \"__gt__\", o \"__ge__\" para utilizar total_ordering", + "trailingCommaInFromImport": "No se permite la coma final sin paréntesis alrededor", + "tryWithoutExcept": "La instrucción Try debe tener al menos una cláusula except o finally", + "tupleAssignmentMismatch": "La expresión con el tipo \"{type}\" no se puede asignar a la tupla de destino", + "tupleInAnnotation": "No se permite la expresión de tupla en la anotación de tipo", + "tupleIndexOutOfRange": "El índice {index} está fuera de rango para el tipo {type}.", + "typeAliasIllegalExpressionForm": "Forma de expresión no válida para la definición de alias de tipo", + "typeAliasIsRecursiveDirect": "El alias de tipo \"{name}\" no puede usarse a sí mismo en su definición", + "typeAliasNotInModuleOrClass": "Un TypeAlias solo puede definirse en el ámbito de un módulo o de una clase", + "typeAliasRedeclared": "\"{name}\" se declara como TypeAlias y solo puede asignarse una vez", + "typeAliasStatementIllegal": "La sentencia Type alias requiere Python 3.12 o posterior", + "typeAliasTypeMustBeAssigned": "TypeAliasType debe asignarse a una variable con el mismo nombre que el alias de tipo", + "typeAliasTypeNameArg": "El primer argumento de TypeAliasType debe ser un literal de cadena que represente el nombre del alias de tipo", + "typeAliasTypeNameMismatch": "El nombre del alias de tipo debe coincidir con el nombre de la variable a la que se asigna", + "typeAliasTypeParamInvalid": "La lista de parámetros de tipo debe ser una tupla que contenga solo TypeVar, TypeVarTuple o ParamSpec.", + "typeAnnotationCall": "Anotación de tipo no válida: no se permite la expresión de llamada", + "typeAnnotationVariable": "Anotación de tipo ilegal: variable no permitida a menos que sea un alias de tipo", + "typeArgListExpected": "ParamSpec esperado, elipsis o lista de tipos", + "typeArgListNotAllowed": "Expresión de lista no permitida para este argumento de tipo", + "typeArgsExpectingNone": "No se esperaban argumentos de tipo para la clase \"{name}\"", + "typeArgsMismatchOne": "Se esperaba un argumento de tipo pero ha recibido {received}", + "typeArgsMissingForAlias": "Argumentos de tipo esperados para el alias de tipo genérico \"{name}\"", + "typeArgsMissingForClass": "Se esperaban argumentos de tipo para la clase genérica \"{name}\"", + "typeArgsTooFew": "Se han proporcionado muy pocos argumentos de tipo para \"{name}\"; se esperaba {expected} pero se ha recibido {received}.", + "typeArgsTooMany": "Se proporcionaron demasiados argumentos de tipo para \"{name}\"; se esperaba {expected}, pero se recibieron {received}", + "typeAssignmentMismatch": "La expresión del tipo \"{sourceType}\" no puede asignarse al tipo declarado \"{destType}\"", + "typeCallNotAllowed": "la llamada a type() no debe utilizarse en la anotación de tipo", + "typeCommentDeprecated": "El uso de comentarios de tipo está obsoleto; utilice en su lugar anotaciones de tipo.", + "typeExpectedClass": "Se esperaba una expresión de tipo pero se ha recibido \"{type}\"", + "typeGuardArgCount": "Se esperaba un único argumento de tipo después de \"TypeGuard\".", + "typeGuardParamCount": "Las funciones y métodos de protección de tipo definidos por el usuario deben tener al menos un parámetro de entrada", + "typeNotAwaitable": "\"{type}\" no se puede esperar", + "typeNotCallable": "\"{expression}\" tiene el tipo \"{type}\" y no se puede llamar", + "typeNotIntantiable": "\"{type}\" no puede crear instancias", + "typeNotIterable": "\"{type}\" no es iterable", + "typeNotSpecializable": "No se pudo especializar el tipo \"{type}\"", + "typeNotSubscriptable": "Objeto de tipo \"{type}\" no es subscriptible", + "typeNotSupportBinaryOperator": "El operador \"{operator}\" no se admite para los tipos \"{leftType}\" y \"{rightType}\"", + "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}.", + "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", + "typeParameterNotDeclared": "El parámetro de tipo \"{name}\" no está incluido en la lista de parámetros de tipo para \"{container}\"", + "typeParametersMissing": "Debe especificarse al menos un parámetro de tipo", + "typePartiallyUnknown": "El tipo de \"{name}\" es parcialmente desconocido", + "typeUnknown": "El tipo de \"{name} \" es desconocido", + "typeVarAssignedName": "TypeVar debe asignarse a una variable llamada \"{name}\"", + "typeVarAssignmentMismatch": "No se puede asignar el tipo \"{type}\" a la variable de tipo \"{name}\"", + "typeVarBoundAndConstrained": "TypeVar no puede estar ligado y restringido a la vez", + "typeVarBoundGeneric": "El tipo vinculado TypeVar no puede ser genérico", + "typeVarConstraintGeneric": "El tipo de restricción TypeVar no puede ser genérico", + "typeVarDefaultBoundMismatch": "El tipo predeterminado TypeVar debe ser un subtipo del tipo enlazado.", + "typeVarDefaultConstraintMismatch": "El tipo predeterminado TypeVar debe ser uno de los tipos restringidos.", + "typeVarDefaultIllegal": "Los tipos predeterminados de variable de tipo requieren Python 3.13 o posterior", + "typeVarDefaultInvalidTypeVar": "El parámetro de tipo \"{name}\" tiene un tipo por defecto que hace referencia a una o más variables de tipo que están fuera de ámbito.", + "typeVarFirstArg": "Nombre esperado de TypeVar como primer argumento", + "typeVarNoMember": "TypeVar \"{type}\" no tiene miembro \"{name}\"", + "typeVarNotSubscriptable": "TypeVar \"{type}\" no es subscribible", + "typeVarNotUsedByOuterScope": "La variable de tipo \"{name}\" no tiene ningún significado en este contexto", + "typeVarPossiblyUnsolvable": "La variable de tipo \"{name}\" puede quedar sin resolver si el autor de la llamada no proporciona ningún argumento para el parámetro \"{param}\"", + "typeVarScopedToReturnType": "La variable de tipo \"{name}\" tiene como ámbito una llamada dentro del tipo de valor devuelto y no se puede hacer referencia a ella en el cuerpo de la función.", + "typeVarSingleConstraint": "TypeVar debe tener al menos dos tipos restringidos", + "typeVarTupleContext": "TypeVarTuple no permitido en este contexto", + "typeVarTupleDefaultNotUnpacked": "El tipo predeterminado TypeVarTuple debe ser una tupla desempaquetada o TypeVarTuple", + "typeVarTupleMustBeUnpacked": "Se requiere el operador Unpack para el valor TypeVarTuple.", + "typeVarTupleUnknownParam": "\"{name}\" es un parámetro desconocido para TypeVarTuple", + "typeVarUnknownParam": "\"{name}\" es un parámetro desconocido para TypeVar", + "typeVarUsedByOuterScope": "TypeVar \"{name}\" ya está en uso por un ámbito externo", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" solo aparece una vez en la firma de la función genérica", + "typeVarVariance": "TypeVar no puede ser covariante y contravariante", + "typeVarWithoutDefault": "\"{name}\" no puede aparecer después de \"{other}\" en la lista de parámetros de tipo porque no tiene ningún tipo predeterminado", + "typeVarsNotInGenericOrProtocol": "Generic[] o Protocol[] deben incluir todas las variables de tipo", + "typedDictAccess": "No se ha podido acceder al elemento en TypedDict", + "typedDictBadVar": "Las clases TypedDict solo pueden contener anotaciones de tipo", + "typedDictBaseClass": "Todas las clases base de las clases TypedDict deben ser también clases TypedDict", + "typedDictBoolParam": "Se esperaba que el parámetro \"{name}\" tuviera un valor de Verdadero o Falso.", + "typedDictDelete": "No se puede eliminar un elemento en TypedDict", + "typedDictEmptyName": "Los nombres de un TypedDict no pueden estar vacíos", + "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", + "typedDictFieldReadOnlyRedefinition": "El campo TypedDict \"{name}\" no puede redefinirse como de solo lectura", + "typedDictFieldTypeRedefinition": "No se puede redefinir el tipo del campo TypedDict \"{name}\".", + "typedDictFirstArg": "Nombre de clase TypedDict esperado como primer argumento", + "typedDictSecondArgDict": "Parámetro dict o palabra clave esperado como segundo parámetro", + "typedDictSecondArgDictEntry": "Entrada de diccionario simple esperada", + "typedDictSet": "No se pudo asignar el elemento en TypedDict", + "unaccessedClass": "No se tiene acceso a la clase \"{name}\"", + "unaccessedFunction": "No se accede a la función \"{name}", + "unaccessedImport": "No se accede a la importación \"{name}", + "unaccessedSymbol": "No se puede acceder a \"{name}\"", + "unaccessedVariable": "No se accede a la variable \"{name} \".", + "unannotatedFunctionSkipped": "Se omite el análisis de la función \"{name}\" porque no está anotada", + "unexpectedAsyncToken": "Se esperaba que \"def\", \"with\" o \"for\" siguieran a \"async\".", + "unexpectedExprToken": "Token inesperado al final de la expresión", + "unexpectedIndent": "sangSangría inesperadaría inesperada", + "unexpectedUnindent": "No se espera sangría", + "unhashableDictKey": "La clave del diccionario debe ser hash", + "unhashableSetEntry": "La entrada del conjunto debe ser hashable", + "uninitializedAbstractVariables": "Las variables definidas en la clase base abstracta no se inicializan en la clase final \"{classType}\"", + "uninitializedInstanceVariable": "La variable de instancia \"{name}\" no está inicializada en el cuerpo de la clase o en el método __init__.", + "unionForwardReferenceNotAllowed": "Union syntax cannot be used with string operand; use quotes around entire expression", + "unionSyntaxIllegal": "La sintaxis alternativa para las uniones requiere Python 3.10 o posterior.", + "unionTypeArgCount": "La unión requiere dos o más argumentos de tipo", + "unmatchedEndregionComment": "A #endregion le falta la #region correspondiente", + "unmatchedRegionComment": "Falta la #región correspondiente #endregion", + "unnecessaryCast": "Llamada \"cast\" innecesaria; el tipo ya es \"{type}\"", + "unnecessaryIsInstanceAlways": "Llamada isinstance innecesaria; \"{testType}\" es siempre una instancia de \"{classType}\"", + "unnecessaryIsSubclassAlways": "Llamada de issubclass innecesaria; \"{testType}\" siempre es una subclase de \"{classType}\"", + "unnecessaryPyrightIgnore": "Comentario \"# pyright: ignore\" innecesario", + "unnecessaryPyrightIgnoreRule": "Regla innecesaria \"# pyright: ignore\": \"{name}\"", + "unnecessaryTypeIgnore": "Comentario \"# type: ignore\" innecesario", + "unpackArgCount": "Se esperaba un único argumento de tipo después de \"Desempaquetar\"", + "unpackExpectedTypeVarTuple": "Se esperaba TypeVarTuple o Tuple como argumento de tipo para desempaquetar", + "unpackExpectedTypedDict": "Se esperaba un argumento de tipo TypedDict para Unpack", + "unpackIllegalInComprehension": "Operación de desempaquetado no permitida en la comprensión", + "unpackInAnnotation": "No se permite el operador desempaquetado en la anotación de tipo", + "unpackInDict": "Operación de desempaquetado no permitida en diccionarios", + "unpackInSet": "No se permite el operador Unpack dentro de un conjunto", + "unpackNotAllowed": "Desembalaje no permitido en este contexto", + "unpackOperatorNotAllowed": "Operación de desempaquetado no permitida en este contexto", + "unpackTuplesIllegal": "Operación de desempaquetado no permitida en tuplas anteriores a Python 3.8", + "unpackedArgInTypeArgument": "Los argumentos sin empaquetar no pueden utilizarse en listas de argumentos de tipo", + "unpackedArgWithVariadicParam": "No se puede usar un argumento desempaquetado para el parámetro TypeVarTuple", + "unpackedDictArgumentNotMapping": "La expresión del argumento después de ** debe ser un mapeo con un tipo de clave \"str\".", + "unpackedDictSubscriptIllegal": "El operador de desempaquetado del diccionario en el subíndice no está permitido", + "unpackedSubscriptIllegal": "El operador de desempaquetado en el subíndice requiere Python 3.11 o posterior.", + "unpackedTypeVarTupleExpected": "Se espera un TypeVarTuple desempaquetado; use Unpack[{nombre1}] o *{name2}", + "unpackedTypedDictArgument": "No se puede emparejar el argumento TypedDict desempaquetado con los parámetros", + "unreachableCode": "El código es inalcanzable", + "unreachableExcept": "La cláusula Excepto es inalcanzable porque la excepción ya está administrada", + "unsupportedDunderAllOperation": "No se admite la operación en \"__all__\", por lo que la lista de símbolos exportada puede ser incorrecta.", + "unusedCallResult": "El resultado de la expresión de llamada es de tipo \"{type}\" y no se usa; asignar a la variable \"_\" si esto es intencionado", + "unusedCoroutine": "El resultado de la llamada a una función asíncrona no se utiliza; utilice \"await\" o asigne el resultado a una variable.", + "unusedExpression": "El valor de expresión no se usa", + "varAnnotationIllegal": "Las anotaciones de tipo para variables requieren Python 3.6 o posterior; utilice el comentario de tipo para la compatibilidad con versiones anteriores.", + "variableFinalOverride": "La variable \"{name}\" está marcada como Final y anula la variable no Final del mismo nombre en la clase \"{className}\".", + "variadicTypeArgsTooMany": "La lista de argumentos de tipo puede tener como máximo una TypeVarTuple o Tupla desempaquetada", + "variadicTypeParamTooManyAlias": "Los alias de tipo pueden tener como máximo un parámetro de tipo TypeVarTuple, pero reciben varios ({names})", + "variadicTypeParamTooManyClass": "La clase genérica puede tener como máximo un parámetro de tipo TypeVarTuple pero recibió múltiples ({names})", + "walrusIllegal": "El operador \":=\" requiere Python 3.8 o posterior", + "walrusNotAllowed": "El operador \":=\" no es permitido en este contexto sin paréntesis alrededor", + "wildcardInFunction": "No se permite la importación de comodines dentro de una clase o función", + "wildcardLibraryImport": "No se permite la importación de caracteres comodín desde una biblioteca", + "wildcardPatternTypePartiallyUnknown": "El tipo capturado por el patrón comodín es parcialmente desconocido", + "wildcardPatternTypeUnknown": "Se desconoce el tipo capturado por el patrón de caracteres comodín", + "yieldFromIllegal": "El uso de \"yield\" requiere Python 3.3 o posterior.", + "yieldFromOutsideAsync": "\"yield from\" no permitido en una función asincrónica", + "yieldOutsideFunction": "\"yield\" no se permite fuera de una función o lambda", + "yieldWithinListCompr": "\"yield\" no está permitido dentro de una comprensión de lista", + "zeroCaseStatementsFound": "La instrucción Match debe incluir al menos una instrucción case", + "zeroLengthTupleNotAllowed": "Tuple de longitud cero no permitida en este contexto" + }, + "DiagnosticAddendum": { + "argParam": "El argumento corresponde al parámetro \"{paramName}\"", + "argParamFunction": "El argumento corresponde al parámetro \"{paramName}\" en la función \"{functionName}\"", + "argsParamMissing": "El parámetro \"*{paramName}\" no tiene ningún parámetro correspondiente", + "argsPositionOnly": "Error de coincidencia del parámetro de solo posición; se esperaba {expected}, pero se recibieron {received}", + "argumentType": "El tipo de argumento es \"{type}\"", + "argumentTypes": "Tipos de argumento: ({types})", + "assignToNone": "El tipo no puede asignarse al tipo \"None\"", + "asyncHelp": "¿Quería decir \"async with\"?", + "baseClassOverriddenType": "La clase base \"{baseClass}\" proporciona el tipo \"{type}\", que se sobrescribe", + "baseClassOverridesType": "Invalidaciones de clase base \"{baseClass}\" con el tipo \"{type}\"", + "conditionalRequiresBool": "El método __bool__ para el tipo \"{operandType}\" devuelve el tipo \"{boolReturnType}\" en lugar de \"bool\"", + "dataClassFieldLocation": "en declaración de campo", + "dataClassFrozen": "\"{name}\" está congelado", + "finalMethod": "Método final", + "functionParamDefaultMissing": "Falta el argumento predeterminado en el parámetro \"{name}\"", + "functionParamName": "Nombre de parámetro no coincidente: \"{destName}\" frente a \"{srcName}\"", + "functionReturnTypeMismatch": "El tipo de valor devuelto de la función \"{sourceType}\" no es compatible con el tipo \"{destType}\"", + "functionTooFewParams": "La función acepta muy pocos parámetros posicionales; esperado {expected} pero recibido {received}", + "functionTooManyParams": "La función acepta demasiados parámetros posicionales; esperado {expected} pero recibido {received}", + "incompatibleDeleter": "El método de eliminación de propiedades no es compatible", + "incompatibleGetter": "El método captador de propiedad no es compatible", + "incompatibleSetter": "El método setter de la propiedad no es compatible", + "initMethodLocation": "El método __init__ se define en la clase \"{type}\"", + "initMethodSignature": "La firma de __init__ es \"{type}\"", + "keyNotRequired": "\"{name}\" no es una clave necesaria en \"{type}\", por lo que el acceso puede dar lugar a una excepción en tiempo de ejecución", + "keyReadOnly": "\"{name}\" es una clave de solo lectura en \"{type}\"", + "keyRequiredDeleted": "\"{name}\" es una clave necesaria y no se puede eliminar", + "keyUndefined": "\"{name}\" no es una clave definida en \"{type}\"", + "kwargsParamMissing": "El parámetro \"**{paramName}\" no tiene ningún parámetro correspondiente.", + "listAssignmentMismatch": "El tipo \"{type}\" es incompatible con la lista de objetivos", + "literalAssignmentMismatch": "\"{sourceType}\" no puede asignarse al tipo \"{tipoDest}\"", + "matchIsNotExhaustiveHint": "Si no se pretende un tratamiento exhaustivo, agregue \"case _: pass\"", + "matchIsNotExhaustiveType": "Tipo no manejado: \"{type}\"", + "memberAssignment": "La expresión de tipo \"{type}\" no se puede asignar al miembro \"{name}\" de la clase \"{classType}\"", + "memberIsAbstract": "\"{type}. {name}\" es abstracto", + "memberIsAbstractMore": "y {count} más", + "memberIsFinalInProtocol": "\"{name}\" está marcado como Final en el protocolo", + "memberIsInitVar": "El miembro \"{name}\" es un campo solo de inicialización", + "memberIsInvariant": "\"{name}\" es invariable porque es mutable", + "memberIsNotFinalInProtocol": "\"{name}\" no está marcado como Final en el protocolo", + "memberSetClassVar": "El miembro \"{name}\" no se puede asignar a través de una instancia de clase porque es un ClassVar.", + "memberTypeMismatch": "\"{name}\" es un tipo incompatible", + "memberUnknown": "El miembro \"{name}\" es desconocido", + "missingDeleter": "Falta el método de eliminación de propiedades", + "missingGetter": "Falta el método Getter de la propiedad", + "missingProtocolMember": "El miembro \"{name}\" está declarado en la clase de protocolo \"{classType}\"", + "missingSetter": "Falta el método establecedor de propiedades", + "namedParamMissingInDest": "Falta el parámetro de palabra clave \"{name}\" en el destino", + "namedParamMissingInSource": "Falta el parámetro de palabra clave \"{name}\" en el origen", + "namedParamTypeMismatch": "El parámetro de palabra clave \"{name}\" del tipo \"{sourceType}\" no puede asignarse al tipo \"{destType}\"", + "newMethodLocation": "El método __new__ está definido en la clase \"{type}\"", + "newMethodSignature": "La firma de __new__ es \"{type}\"", + "noOverloadAssignable": "Ninguna función sobrecargada coincide con el tipo \"{type}\"", + "orPatternMissingName": "Nombres que faltan: {name}", + "overloadNotAssignable": "Una o más sobrecargas de \"{name}\" no es asignable", + "overloadSignature": "Aquí se define la firma de la sobrecarga", + "overloadWithImplementation": "El cuerpo de una sobrecarga de función debe ser \"...\".", + "overriddenMethod": "Método reemplazado", + "overriddenSymbol": "Símbolo anulado", + "overrideNoOverloadMatches": "Ninguna firma de sobrecarga en anulación es compatible con el método base", + "overrideNotClassMethod": "El método base se declara como Método de clase pero el Reemplazar no", + "overrideNotInstanceMethod": "El método base se declara como método de instancia, pero la invalidación no", + "overrideNotStaticMethod": "El método base se declara como staticmethod pero el reemplazo no", + "overrideOverloadNoMatch": "La sobrecarga {index} no es compatible con el método base", + "overrideOverloadOrder": "Las sobrecargas para el método de anulación deben estar en el mismo orden que el método base", + "overrideParamKeywordNoDefault": "El parámetro de palabra clave \"{name}\" no coincide: el parámetro base tiene el valor de argumento predeterminado, el parámetro de invalidación no", + "overrideParamKeywordType": "El parámetro de palabra clave \"{name}\" no coincide: el parámetro base es de tipo \"{baseType}\", el parámetro de invalidación es de tipo \"{overrideType}\"", + "overrideParamName": "El nombre del parámetro {index} no coincide: el parámetro base se denomina \"{baseName}\", el parámetro de invalidación se denomina \"{overrideName}\"", + "overrideParamNameExtra": "Falta el parámetro \"{name}\" en la base", + "overrideParamNameMissing": "Falta el parámetro \"{name}\" en la invalidación", + "overrideParamNamePositionOnly": "El nombre del parámetro {index} no coincide: el parámetro base se llama \"{baseName}\", el parámetro de anulación es \"position-only\".", + "overrideParamNoDefault": "El parámetro {index} no coincide: el parámetro base tiene un valor de argumento predeterminado, el parámetro de invalidación no", + "overrideParamType": "El parámetro {index} no coincide: el parámetro base es de tipo \"{baseType}\", el parámetro de invalidación es de tipo \"{overrideType}\"", + "overridePositionalParamCount": "El recuento de parámetros posicionales no coincide; el método base tiene {baseCount}, pero la invalidación tiene {overrideCount}", + "overrideReturnType": "Error de tipo de retorno: el método base devuelve el tipo \"{baseType}\", el reemplazo devuelve el tipo \"{overrideType}\".", + "overrideType": "La clase base define el tipo como \"{type}\"", + "paramAssignment": "Parámetro {index}: el tipo \"{sourceType}\" no puede asignarse al tipo \"{destType}\"", + "paramSpecMissingInOverride": "Faltan parámetros ParamSpec en el método de invalidación", + "paramType": "El tipo de parámetro es \"{paramType}\"", + "privateImportFromPyTypedSource": "Importar desde \"{module}\" en su lugar", + "propertyAccessFromProtocolClass": "No se puede tener acceso a una propiedad definida dentro de una clase de protocolo como variable de clase", + "propertyMethodIncompatible": "El método de propiedad \"{name}\" no es compatible", + "propertyMethodMissing": "Falta el método de propiedad \"{name}\" en la invalidación", + "propertyMissingDeleter": "La propiedad \"{name}\" no tiene un supresor definido", + "propertyMissingSetter": "La propiedad \"{name}\" no tiene el valor setter definido", + "protocolIncompatible": "\"{sourceType}\" no es compatible con el protocolo \"{destType}\"", + "protocolMemberClassVar": "\"{name}\" no es una variable de clase", + "protocolMemberMissing": "\"{name}\" no está presente.", + "protocolSourceIsNotConcrete": "\"{sourceType}\" no es un tipo de clase concreto y no se puede asignar al tipo \"{destType}\"", + "pyrightCommentIgnoreTip": "Utilice \"# pyright: ignore[] para suprimir el diagnóstico de una sola línea", + "readOnlyAttribute": "El atributo \"{name}\" es de solo lectura", + "seeClassDeclaration": "Ver declaración de clase", + "seeDeclaration": "Ver declaración", + "seeFunctionDeclaration": "Ver declaración de función", + "seeMethodDeclaration": "Consulte la declaración del métodoa", + "seeParameterDeclaration": "Declaración de parámetro", + "seeTypeAliasDeclaration": "Véase la declaración de alias de tipo", + "seeVariableDeclaration": "declaración de variable out", + "tupleAssignmentMismatch": "El tipo \"{type}\" no es compatible con la tupla de destino", + "tupleEntryTypeMismatch": "La entrada {entry} de la tupla es de tipo incorrecto", + "tupleSizeMismatch": "Tamaño de elemento no coincidente; esperado {expected} pero recibido {received}", + "typeAssignmentMismatch": "El tipo \"{sourceType}\" no puede asignarse al tipo \"{destType}\"", + "typeBound": "El tipo \"{sourceType}\" es incompatible con el tipo \"{destType}\" vinculado para la variable de tipo \"{name}\"", + "typeConstrainedTypeVar": "El tipo \"{type}\" no es compatible con la variable de tipo restringido \"{name}\"", + "typeIncompatible": "\"{sourceType}\" no es compatible con \"{destType}\"", + "typeNotCallable": "No se puede llamar al tipo \"{type}\"", + "typeNotClass": "\"{type}\" no es una clase", + "typeNotStringLiteral": "\"{type}\" no es un literal de cadena", + "typeOfSymbol": "El tipo de \"{name}\" es \"{type}\"", + "typeParamSpec": "El tipo \"{type}\" no es compatible con ParamSpec \"{name}\"", + "typeUnsupported": "El tipo \"{type}\" no es compatible", + "typeVarDefaultOutOfScope": "La variable de tipo \"{name} \" no está en el ámbito de aplicación", + "typeVarIsContravariant": "TypeVar \"{name}\" es contravariante", + "typeVarIsCovariant": "TypeVar \"{name}\" es covariante", + "typeVarIsInvariant": "TypeVar \"{name}\" es invariante", + "typeVarNotAllowed": "TypeVar o tipo genérico con argumentos de tipo no permitidos", + "typeVarTupleRequiresKnownLength": "TypeVarTuple no se puede enlazar a una tupla de longitud desconocida", + "typeVarUnsolvableRemedy": "Proporciona una sobrecarga que especifica el tipo de retorno cuando no se proporciona el argumento", + "typeVarsMissing": "Faltan variables de tipo: {names}", + "typedDictFieldMissing": "\"{name}\" falta en \"{type}\"", + "typedDictFieldNotReadOnly": "\"{name}\" no es de solo lectura en \"{type}\"", + "typedDictFieldNotRequired": "\"{name}\" no es obligatorio en \"{type}\"", + "typedDictFieldRequired": "\"{name}\" es obligatorio en \"{type}\"", + "typedDictFieldTypeMismatch": "El tipo \"{type}\" no se puede asignar al campo \"{name}\"", + "typedDictFieldTypeRedefinition": "El tipo en la clase principal es \"{parentType}\" y el tipo en la clase secundaria es \"{childType}\".", + "typedDictFieldUndefined": "\"{name}\" es un campo no definido en el tipo \"{type}\"", + "typedDictFinalMismatch": "\"{sourceType}\" no es compatible con \"{destType}\" debido a una discrepancia @final", + "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": "Usar Dict[T1, T2] para indicar un tipo de diccionario", + "useListInstead": "Usar List[T] para indicar un tipo de lista o Union[T1, T2] para indicar un tipo de unión", + "useTupleInstead": "Utilice Tupla[T1, ..., Tn] para indicar un tipo de tupla o Union[T1, T2] para indicar un tipo de unión.", + "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}\"" + } } diff --git a/packages/pyright-internal/src/localization/package.nls.fr.json b/packages/pyright-internal/src/localization/package.nls.fr.json index 0db3279e4..178c6d9f3 100644 --- a/packages/pyright-internal/src/localization/package.nls.fr.json +++ b/packages/pyright-internal/src/localization/package.nls.fr.json @@ -1,3 +1,718 @@ { - + "CodeAction": { + "addOptionalToAnnotation": "Ajouter « Facultatif » à l’annotation de type", + "createTypeStub": "Créer un stub de type", + "createTypeStubFor": "Créer un stub de type pour « {moduleName} »", + "executingCommand": "Exécution de la commande", + "filesToAnalyzeCount": "{count} fichiers à analyser", + "filesToAnalyzeOne": "1 fichier à analyser", + "findingReferences": "Recherche de références", + "organizeImports": "Organiser les importations", + "renameShadowedFile": "Renommez \"{oldFile}\" en \"{newFile}\"" + }, + "Diagnostic": { + "abstractMethodInvocation": "Impossible d’appeler la méthode « {method} », car elle est abstraite", + "annotatedParamCountMismatch": "Non-concordance du nombre d'annotations de paramètre : attendu {expected} mais reçu {received}", + "annotatedTypeArgMissing": "Un argument de type et une ou plusieurs annotations sont attendus pour « Annotation »", + "annotationFormatString": "Les annotations de type ne peuvent pas utiliser de littéraux de chaîne de format (f-strings)", + "annotationNotSupported": "Annotation de type non prise en charge pour cette instruction", + "annotationSpansStrings": "Les annotations de type ne peuvent pas s'étendre sur plusieurs littéraux de chaîne", + "annotationStringEscape": "Les annotations de type ne peuvent pas contenir de caractères d'échappement", + "argAssignment": "Impossible d’affecter l’argument de type « {argType} » au paramètre de type « {paramType} »", + "argAssignmentFunction": "Impossible d’affecter l’argument de type « {argType} » au paramètre de type « {paramType} » dans la fonction « {functionName} »", + "argAssignmentParam": "Impossible d’affecter l’argument de type « {argType} » au paramètre « {paramName} » de type « {paramType} »", + "argAssignmentParamFunction": "Impossible d’affecter l’argument de type « {argType} » au paramètre « {paramName} » de type « {paramType} » dans la fonction « {functionName} »", + "argMissingForParam": "Argument manquant pour le paramètre {name}", + "argMissingForParams": "Arguments manquants pour les paramètres {names}", + "argMorePositionalExpectedCount": "{expected} arguments positionnels supplémentaires attendus", + "argMorePositionalExpectedOne": "1 argument positionnel supplémentaire attendu", + "argPositional": "Argument positionnel attendu", + "argPositionalExpectedCount": "Arguments positionnels {expected} attendus", + "argPositionalExpectedOne": "1 argument positionnel attendu", + "argTypePartiallyUnknown": "Le type d'argument est partiellement inconnu", + "argTypeUnknown": "Le type d’argument est inconnu", + "assertAlwaysTrue": "L’expression Assert prend toujours la valeur true", + "assertTypeArgs": "« assert_type » attend deux arguments positionnels", + "assertTypeTypeMismatch": "Non-concordance de « assert_type » : « {expected} » attendu, mais « {received} »", + "assignmentExprComprehension": "La cible d'expression d'affectation \"{name}\" ne peut pas utiliser le même nom que la compréhension pour la cible", + "assignmentExprContext": "L’expression d’assignation doit se trouver dans le module, la fonction ou l’expression lambda", + "assignmentExprInSubscript": "Les expressions d’assignation dans un indice sont prises en charge uniquement dans Python 3.10 et versions ultérieures", + "assignmentInProtocol": "Les variables d'instance ou de classe au sein d'une classe Protocol doivent être explicitement déclarées dans le corps de la classe", + "assignmentTargetExpr": "L’expression ne peut pas être une cible d’assignation", + "asyncNotInAsyncFunction": "L'utilisation de \"async\" n'est pas autorisée en dehors de la fonction async", + "awaitIllegal": "L’utilisation de « await » nécessite Python 3.5 ou version ultérieure", + "awaitNotInAsync": "« await » autorisé uniquement dans la fonction asynchrone", + "backticksIllegal": "Les expressions entourées de accents inverses ne sont pas prises en charge dans Python 3.x; utiliser repr à la place", + "baseClassCircular": "La classe ne peut pas dériver d'elle-même", + "baseClassFinal": "La classe de base « {type} » est marquée comme finale et ne peut pas être sous-classée", + "baseClassInvalid": "L’argument pour la classe doit être une classe de base", + "baseClassMethodTypeIncompatible": "Les classes de base de la classe « {classType} » définissent la méthode « {name} » de manière incompatible", + "baseClassUnknown": "Le type de classe de base est inconnu, ce qui masque le type de classe dérivée", + "baseClassVariableTypeIncompatible": "Les classes de base de la classe « {classType} » définissent la variable « {name} » de manière incompatible", + "bindTypeMismatch": "Impossible de lier la méthode \"{methodName}\" car \"{type}\" n'est pas attribuable au paramètre \"{paramName}\"", + "breakOutsideLoop": "\"break\" ne peut être utilisé qu'à l'intérieur d'une boucle", + "callableExtraArgs": "Seuls deux arguments de type sont attendus pour « Joignable »", + "callableFirstArg": "Liste de types de paramètres attendue ou « ... »", + "callableNotInstantiable": "Impossible d’instancier le type « {type} »", + "callableSecondArg": "Type de retour attendu en tant que deuxième argument de type pour « Joignable »", + "casePatternIsIrrefutable": "Le motif irréfutable n'est autorisé que pour la dernière instruction case", + "classAlreadySpecialized": "Le type « {type} » est déjà spécialisé", + "classDecoratorTypeUnknown": "Le décorateur de classe non typé masque le type de classe ; décorateur ignorant", + "classDefinitionCycle": "La définition de classe pour \"{name}\" dépend d'elle-même", + "classGetItemClsParam": "__class_getitem__ remplacement doit prendre un paramètre « cls »", + "classMethodClsParam": "Les méthodes de classe doivent prendre un paramètre \"cls\"", + "classNotRuntimeSubscriptable": "L’indice de la classe « {name} » génère une exception d’exécution ; placer l’annotation de type entre guillemets", + "classPatternBuiltInArgCount": "Le modèle de classe accepte au maximum 1 sous-modèle positionnel", + "classPatternBuiltInArgPositional": "Le modèle de classe accepte uniquement le sous-modèle positionnel", + "classPatternTypeAlias": "\"{type}\" ne peut pas être utilisé dans un modèle de classe car il s'agit d'un alias de type spécialisé", + "classTypeParametersIllegal": "La syntaxe du paramètre de type de classe nécessite Python 3.12 ou version ultérieure", + "classVarFirstArgMissing": "Attendu un argument de type après \"ClassVar\"", + "classVarNotAllowed": "« ClassVar » n’est pas autorisé dans ce contexte", + "classVarOverridesInstanceVar": "La variable de classe « {name} » remplace la variable d’instance du même nom dans la classe « {className} »", + "classVarTooManyArgs": "Attendu un seul argument de type après \"ClassVar\"", + "classVarWithTypeVar": "Le type \"ClassVar\" ne peut pas inclure de variables de type", + "clsSelfParamTypeMismatch": "Le type de paramètre \"{name}\" doit être un supertype de sa classe \"{classType}\"", + "codeTooComplexToAnalyze": "Le code est trop complexe à analyser ; réduire la complexité en refactorisant en sous-routines ou en réduisant les chemins de code conditionnels", + "collectionAliasInstantiation": "Le type \"{type}\" ne peut pas être instancié, utilisez \"{alias}\" à la place", + "comparisonAlwaysFalse": "La condition prend toujours la valeur False, car les types « {leftType} » et « {rightType} » ne se chevauchent pas", + "comparisonAlwaysTrue": "La condition prend toujours la valeur True, car les types « {leftType} » et « {rightType} » ne se chevauchent pas", + "comprehensionInDict": "La compréhension ne peut pas être utilisée avec d’autres entrées de dictionnaire", + "comprehensionInSet": "La compréhension ne peut pas être utilisée avec d'autres entrées définies", + "concatenateParamSpecMissing": "Le dernier argument de type pour « Concatenate » doit être un ParamSpec", + "concatenateTypeArgsMissing": "\"Concaténation\" nécessite au moins deux arguments de type", + "conditionalOperandInvalid": "Opérande conditionnel non valide de type \"{type}\"", + "constantRedefinition": "\"{nom}\" est constant (car il est en majuscule) et ne peut pas être redéfini", + "constructorNoArgs": "Aucun argument attendu pour le constructeur « {type} »", + "constructorParametersMismatch": "Non-concordance entre la signature de __new__ et __init__ dans la classe \"{classType}\"", + "containmentAlwaysFalse": "L'expression sera toujours évaluée à False car les types \"{leftType}\" et \"{rightType}\" ne se chevauchent pas", + "containmentAlwaysTrue": "L'expression sera toujours évaluée à True puisque les types \"{leftType}\" et \"{rightType}\" ne se chevauchent pas", + "continueInFinally": "« continuer » ne peut pas être utilisé dans une clause finally", + "continueOutsideLoop": "« continuer » ne peut être utilisé qu’au sein d’une boucle", + "dataClassBaseClassFrozen": "Une classe non gelée ne peut pas hériter d'une classe gelée", + "dataClassBaseClassNotFrozen": "Une classe figée ne peut pas hériter d’une classe qui n’est pas figée", + "dataClassConverterFunction": "L’argument de type « {argType} » n’est pas un convertisseur valide pour le champ « {fieldName} » de type « {fieldType} »", + "dataClassConverterOverloads": "Aucune surcharge de « {funcName} » n’est valide pour le champ « {fieldName} » de type « {fieldType} »", + "dataClassFieldWithDefault": "Les champs sans valeurs par défaut ne peuvent pas apparaître après les champs avec des valeurs par défaut", + "dataClassFieldWithPrivateName": "Le champ Dataclass ne peut pas utiliser de nom privé", + "dataClassFieldWithoutAnnotation": "Le champ Dataclass sans annotation de type provoquera une exception d'exécution", + "dataClassPostInitParamCount": "La classe de données __post_init__ nombre de paramètres incorrect ; le nombre de champs InitVar est {expected}", + "dataClassPostInitType": "Incompatibilité du type de paramètre de méthode __post_init__ Dataclass pour le champ « {fieldName} »", + "dataClassSlotsOverwrite": "__slots__ est déjà défini dans la classe", + "dataClassTransformExpectedBoolLiteral": "Expression attendue qui prend statiquement la valeur True ou False", + "dataClassTransformFieldSpecifier": "Tuple attendu de classes ou de fonctions mais type reçu \"{type}\"", + "dataClassTransformPositionalParam": "Tous les arguments de « dataclass_transform » doivent être des arguments de mot clé", + "dataClassTransformUnknownArgument": "L’argument « {name} » n’est pas pris en charge par dataclass_transform", + "declaredReturnTypePartiallyUnknown": "Le type de retour déclaré « {returnType} » est partiellement inconnu", + "declaredReturnTypeUnknown": "Le type de retour déclaré est inconnu", + "defaultValueContainsCall": "Les appels de fonction et les objets mutables ne sont pas autorisés dans l'expression de la valeur par défaut du paramètre", + "defaultValueNotAllowed": "Le paramètre avec « * » ou « ** » ne peut pas avoir de valeur par défaut", + "delTargetExpr": "L'expression ne peut pas être supprimée", + "deprecatedClass": "La classe \"{name}\" est obsolète", + "deprecatedConstructor": "Le constructeur de la classe « {name} » est déconseillé", + "deprecatedFunction": "Cette fonction « {name} » est déconseillée", + "deprecatedType": "Ce type est déconseillé à compter de Python {version}; utiliser « {replacement} » à la place", + "dictExpandIllegalInComprehension": "Expansion du dictionnaire non autorisée dans la compréhension", + "dictInAnnotation": "Expression de dictionnaire non autorisée dans l’annotation de type", + "dictKeyValuePairs": "Les entrées de dictionnaire doivent contenir des paires clé/valeur", + "dictUnpackIsNotMapping": "Mappage attendu pour l’opérateur de décompression de dictionnaire", + "dunderAllSymbolNotPresent": "« {name} » est spécifié dans __all__ mais n’est pas présent dans le module", + "duplicateArgsParam": "Un seul paramètre « * » est autorisé", + "duplicateBaseClass": "Classe de base en double non autorisée", + "duplicateCapturePatternTarget": "La cible Capture \"{name}\" ne peut pas apparaître plus d'une fois dans le même modèle", + "duplicateCatchAll": "Une seule clause catch-all sauf autorisée", + "duplicateEnumMember": "Le membre enum « {name} » est déjà déclaré", + "duplicateGenericAndProtocolBase": "Une seule classe de base Generic[...] ou Protocol[...] autorisée", + "duplicateImport": "« {importName} » est importé plusieurs fois", + "duplicateKeywordOnly": "Un seul séparateur « * » autorisé", + "duplicateKwargsParam": "Un seul paramètre « ** » est autorisé", + "duplicateParam": "Dupliquer le paramètre « {name} »", + "duplicatePositionOnly": "Un seul paramètre \"/\" autorisé", + "duplicateStarPattern": "Un seul motif \"*\" autorisé dans une séquence de motifs", + "duplicateStarStarPattern": "Une seule entrée \"**\" autorisée", + "duplicateUnpack": "Une seule opération de décompression autorisée dans la liste", + "ellipsisContext": "\"...\" non autorisé dans ce contexte", + "ellipsisSecondArg": "«...» autorisé uniquement en tant que deuxième des deux arguments", + "enumClassOverride": "La classe Enum « {name} » est finale et ne peut pas être sous-classée", + "exceptionGroupIncompatible": "La syntaxe du groupe d’exceptions (« except* ») nécessite Python 3.11 ou version ultérieure", + "exceptionTypeIncorrect": "\"{type}\" ne dérive pas de BaseException", + "exceptionTypeNotClass": "« {type} » n’est pas une classe d’exception valide", + "exceptionTypeNotInstantiable": "Le constructeur pour le type d’exception « {type} » requiert un ou plusieurs arguments", + "expectedAfterDecorator": "Fonction attendue ou déclaration de classe après le décorateur", + "expectedArrow": "« -> » attendu suivi d’une annotation de type de retour", + "expectedAsAfterException": "\"comme\" attendu après le type d'exception", + "expectedAssignRightHandExpr": "Expression attendue à droite de « = »", + "expectedBinaryRightHandExpr": "Expression attendue à droite de l’opérateur", + "expectedBoolLiteral": "Attendu vrai ou faux", + "expectedCase": "Instruction « case » attendue", + "expectedClassName": "Nom de classe attendu", + "expectedCloseBrace": "« { » n’a pas été fermé", + "expectedCloseBracket": "« [ » n’a pas été fermé", + "expectedCloseParen": "« ( » n’a pas été fermé", + "expectedColon": "« : » attendu", + "expectedComplexNumberLiteral": "Littéral de nombre complexe attendu pour la correspondance de modèle", + "expectedDecoratorExpr": "Formulaire d’expression non pris en charge pour l’élément décoratif antérieur à Python 3.9", + "expectedDecoratorName": "Nom de l’élément décoratif attendu", + "expectedDecoratorNewline": "Nouvelle ligne attendue à la fin de l’élément décoratif", + "expectedDelExpr": "Expression attendue après « del »", + "expectedElse": "« else » attendu", + "expectedEquals": "« = » attendu", + "expectedExceptionClass": "Classe ou objet d'exception non valide", + "expectedExceptionObj": "Objet d’exception attendu, classe d’exception ou Aucun", + "expectedExpr": "Expression attendue", + "expectedFunctionAfterAsync": "Définition de fonction attendue après \"async\"", + "expectedFunctionName": "Nom de fonction attendu après « def »", + "expectedIdentifier": "Identifiant attendu", + "expectedImport": "« importation » attendue", + "expectedImportAlias": "Symbole attendu après « as »", + "expectedImportSymbols": "Un ou plusieurs noms de symboles attendus après l’importation", + "expectedIn": "« in » attendu", + "expectedInExpr": "Expression attendue après « in »", + "expectedIndentedBlock": "Bloc en retrait attendu", + "expectedMemberName": "Nom de membre attendu après « . »", + "expectedModuleName": "Nom de module attendu", + "expectedNameAfterAs": "Nom de symbole attendu après \"as\"", + "expectedNamedParameter": "Le paramètre de mot clé doit suivre « * »", + "expectedNewline": "Nouvelle ligne attendue", + "expectedNewlineOrSemicolon": "Les instructions doivent être séparées par des nouvelles lignes ou des points-virgules", + "expectedOpenParen": "Attendu \"(\"", + "expectedParamName": "Nom du paramètre attendu", + "expectedPatternExpr": "Expression de modèle attendue", + "expectedPatternSubjectExpr": "Expression du sujet du modèle attendu", + "expectedPatternValue": "Expression de valeur de modèle attendue sous la forme « a.b »", + "expectedReturnExpr": "Expression attendue après « return »", + "expectedSliceIndex": "Expression d'index ou de tranche attendue", + "expectedTypeNotString": "Type attendu mais réception d’un littéral de chaîne", + "expectedTypeParameterName": "Nom de paramètre de type attendu", + "expectedYieldExpr": "Expression attendue dans l'instruction yield", + "finalClassIsAbstract": "La classe « {type} » est marquée comme finale et doit implémenter toutes les méthodes abstraites", + "finalContext": "« Final » non autorisé dans ce contexte", + "finalMethodOverride": "La méthode « {name} » ne peut pas remplacer la méthode finale définie dans la classe « {className} »", + "finalReassigned": "\"{name}\" est déclaré final et ne peut pas être réaffecté", + "finalRedeclaration": "« {name} » a été déclaré comme final", + "finalRedeclarationBySubclass": "« {name} » ne peut pas être redéclaré, car la classe parente « {className} » la déclare final", + "finalTooManyArgs": "Argument de type unique attendu après « Final »", + "finalUnassigned": "« {name} » est déclaré Final, mais la valeur n’est pas affectée", + "formatStringBrace": "Accolade fermante unique non autorisée dans le littéral f-string ; utiliser une double accolade fermée", + "formatStringBytes": "Les littéraux de chaîne de format (chaînes f) ne peuvent pas être binaires", + "formatStringDebuggingIllegal": "Le spécificateur de débogage de chaîne F \"=\" nécessite Python 3.8 ou une version plus récente", + "formatStringEscape": "Séquence d'échappement (barre oblique inverse) non autorisée dans la partie expression de la chaîne f avant Python 3.12", + "formatStringExpectedConversion": "Spécificateur de conversion attendu après « ! » dans f-string", + "formatStringIllegal": "Les littéraux de chaîne de format (chaînes f) nécessitent Python 3.6 ou une version plus récente", + "formatStringInPattern": "Chaîne de format non autorisée dans le modèle", + "formatStringNestedFormatSpecifier": "Expressions imbriqués trop profondément dans le spécificateur de chaîne de format", + "formatStringNestedQuote": "Les chaînes imbriquées dans une chaîne f ne peuvent pas utiliser le même guillemet que la chaîne f avant Python 3.12", + "formatStringUnicode": "Les littéraux de chaîne de format (f-strings) ne peuvent pas être unicode", + "formatStringUnterminated": "Expression non terminée dans f-string ; attendant \"}\"", + "functionDecoratorTypeUnknown": "Le décorateur de fonction non typé masque le type de fonction ; élément décoratif ignoré", + "functionInConditionalExpression": "L’expression conditionnelle fait référence à une fonction qui prend toujours la valeur True", + "functionTypeParametersIllegal": "La syntaxe des paramètres de type de fonction nécessite Python 3.12 ou une version plus récente", + "futureImportLocationNotAllowed": "Les importations à partir de __future__ doivent se trouver au début du fichier", + "generatorAsyncReturnType": "Le type de retour de la fonction de générateur asynchrone doit être compatible avec « AsyncGenerator[{yieldType}, Any] »", + "generatorNotParenthesized": "Les expressions de générateur doivent être entre parenthèses si elles ne sont pas uniquement des arguments", + "generatorSyncReturnType": "Le type de retour de la fonction de générateur doit être compatible avec « Generator[{yieldType}, Any, Any] »", + "genericBaseClassNotAllowed": "La classe de base \"générique\" ne peut pas être utilisée avec la syntaxe de paramètre de type", + "genericClassAssigned": "Impossible d’attribuer le type de classe générique", + "genericClassDeleted": "Le type de classe générique ne peut pas être supprimé", + "genericNotAllowed": "« Générique » n’est pas valide dans ce contexte", + "genericTypeAliasBoundTypeVar": "L’alias de type générique dans la classe ne peut pas utiliser les variables de type lié {names}", + "genericTypeArgMissing": "« Générique » nécessite au moins un argument de type", + "genericTypeArgTypeVar": "L’argument de type pour « Generic » doit être une variable de type", + "genericTypeArgUnique": "Les arguments de type pour « Generic » doivent être uniques", + "globalReassignment": "« {name} » est attribué avant la déclaration globale", + "globalRedefinition": "« {name} » a déjà été déclaré global", + "implicitStringConcat": "Concaténation implicite de chaînes non autorisée", + "importCycleDetected": "Cycle détecté dans la chaîne d'importation", + "importDepthExceeded": "La profondeur de la chaîne d'importation a dépassé {depth}", + "importResolveFailure": "Impossible de résoudre l’importation « {importName} »", + "importSourceResolveFailure": "Impossible de résoudre l’importation « {importName} » à partir de la source", + "importSymbolUnknown": "« {name} » est un symbole d’importation inconnu", + "incompatibleMethodOverride": "La méthode « {name} » remplace la classe « {className} » de manière incompatible", + "inconsistentIndent": "Le montant du retrait ne correspond pas au retrait précédent", + "inconsistentTabs": "Utilisation incohérente des onglets et des espaces dans la mise en retrait", + "initMustReturnNone": "Le type de retour de « __init__ » doit être None", + "initSubclassClsParam": "__init_subclass__ remplacement doit prendre un paramètre « cls »", + "instanceMethodSelfParam": "Les méthodes d’instance doivent prendre un paramètre « self »", + "instanceVarOverridesClassVar": "La variable d'instance \"{name}\" remplace la variable de classe du même nom dans la classe \"{className}\"", + "instantiateAbstract": "Impossible d'instancier la classe abstraite \"{type}\"", + "instantiateProtocol": "Impossible d'instancier la classe de protocole \"{type}\"", + "internalBindError": "Une erreur interne s’est produite lors de la liaison du fichier « {file} » : {message}", + "internalParseError": "Une erreur interne s’est produite lors de l’analyse du fichier « {file} » : {message}", + "internalTypeCheckingError": "Une erreur interne s’est produite lors de la vérification de type du fichier « {file} » : {message}", + "invalidIdentifierChar": "Caractère invalide dans l'identifiant", + "invalidStubStatement": "L’instruction n’a aucun sens dans un fichier stub de type", + "invalidTokenChars": "Caractère non valide \"{text}\" dans le jeton", + "isInstanceInvalidType": "Le deuxième argument de \"isinstance\" doit être une classe ou un tuple de classes", + "isSubclassInvalidType": "Le deuxième argument de « issubclass » doit être une classe ou un tuple de classes", + "keyValueInSet": "Les paires clé/valeur ne sont pas autorisées dans un ensemble", + "keywordArgInTypeArgument": "Les arguments de mot-clé ne peuvent pas être utilisés dans les listes d'arguments de type", + "keywordOnlyAfterArgs": "Séparateur d’arguments mot clé uniquement non autorisé après le paramètre « * »", + "keywordParameterMissing": "Un ou plusieurs paramètres de mot-clé doivent suivre le paramètre \"*\"", + "keywordSubscriptIllegal": "Les arguments de mot-clé dans les indices ne sont pas pris en charge", + "lambdaReturnTypePartiallyUnknown": "Le type de retour de lambda, « {returnType} », est partiellement inconnu", + "lambdaReturnTypeUnknown": "Le type de retour de lambda est inconnu", + "listAssignmentMismatch": "Impossible d’affecter l’expression de type « {type} » à la liste cible", + "listInAnnotation": "Expression de liste non autorisée dans l’annotation de type", + "literalEmptyArgs": "Attendu un ou plusieurs arguments de type après \"Literal\"", + "literalNotCallable": "Impossible d’instancier le type littéral", + "literalUnsupportedType": "Les arguments de type pour « Literal » doivent être None, une valeur littérale (int, bool, str ou bytes) ou une valeur enum", + "matchIncompatible": "Les instructions de correspondance nécessitent Python 3.10 ou version ultérieure", + "matchIsNotExhaustive": "Les cas dans l’instruction match ne gèrent pas toutes les valeurs de manière exhaustive", + "maxParseDepthExceeded": "Profondeur d’analyse maximale dépassée ; scinder l’expression en sous-expressions plus petites", + "memberAccess": "Impossible d’accéder au membre « {name} » pour le type « {type} »", + "memberDelete": "Impossible de supprimer le membre « {name} » pour le type « {type} »", + "memberSet": "Impossible d'affecter le membre \"{name}\" pour le type \"{type}\"", + "metaclassConflict": "La métaclasse d’une classe dérivée doit être une sous-classe des métaclasses de toutes ses classes de base", + "metaclassDuplicate": "Une seule métaclasse peut être fournie", + "metaclassIsGeneric": "La métaclasse ne peut pas être générique", + "methodNotDefined": "Méthode « {name} » non définie", + "methodNotDefinedOnType": "Méthode « {name} » non définie sur le type « {type} »", + "methodOrdering": "Impossible de créer un classement de méthode cohérent", + "methodOverridden": "\"{name}\" remplace la méthode du même nom dans la classe \"{className}\" avec un type incompatible \"{type}\"", + "methodReturnsNonObject": "La méthode « {name} » ne retourne pas d’objet", + "missingProtocolMembers": "La classe dérive d'une ou plusieurs classes de protocole mais n'implémente pas tous les membres requis", + "missingSuperCall": "La méthode « {methodName} » n’appelle pas la méthode du même nom dans la classe parente", + "moduleAsType": "Le module ne peut pas être utilisé comme type", + "moduleNotCallable": "Le module ne peut pas être appelé", + "moduleUnknownMember": "\"{memberName}\" n'est pas un membre connu du module \"{moduleName}\"", + "namedExceptAfterCatchAll": "Une clause except nommée ne peut pas apparaître après une clause except fourre-tout", + "namedParamAfterParamSpecArgs": "Le paramètre de mot clé « {name} » ne peut pas apparaître dans la signature après le paramètre ParamSpec args", + "namedTupleEmptyName": "Les noms dans un tuple nommé ne peuvent pas être vides", + "namedTupleFirstArg": "Nom de classe de tuple nommé attendu en tant que premier argument", + "namedTupleMultipleInheritance": "L’héritage multiple avec NamedTuple n’est pas pris en charge", + "namedTupleNameType": "Tuple à deux entrées attendu spécifiant le nom et le type de l’entrée", + "namedTupleNameUnique": "Les noms dans un tuple nommé doivent être uniques", + "namedTupleNoTypes": "« namedtuple » ne fournit aucun type pour les entrées de tuple ; utilisez « NamedTuple » à la place", + "namedTupleSecondArg": "Liste d’entrées de tuple nommée attendue en tant que deuxième argument", + "newClsParam": "__new__ remplacement doit prendre un paramètre « cls »", + "newTypeBadName": "Le premier argument de NewType doit être un littéral de chaîne", + "newTypeLiteral": "Impossible d’utiliser NewType avec le type Literal", + "newTypeNotAClass": "Classe attendue comme deuxième argument de NewType", + "newTypeParamCount": "NewType requiert deux arguments positionnels", + "newTypeProtocolClass": "Impossible d’utiliser NewType avec la classe de protocole", + "noOverload": "Aucune surcharge pour « {name} » ne correspond aux arguments fournis", + "noReturnContainsReturn": "La fonction avec le type de retour déclaré « NoReturn » ne peut pas inclure d’instruction de retour", + "noReturnContainsYield": "La fonction avec le type de retour déclaré « NoReturn » ne peut pas inclure d’instruction yield", + "noReturnReturnsNone": "La fonction avec le type déclaré « NoReturn » ne peut pas retourner « None »", + "nonDefaultAfterDefault": "L’argument autre que l’argument par défaut suit l’argument par défaut", + "nonLocalInModule": "Déclaration non locale non autorisée au niveau du module", + "nonLocalNoBinding": "Aucune liaison pour le « {name} » non local trouvé", + "nonLocalReassignment": "« {name} » est attribué avant la déclaration non locale", + "nonLocalRedefinition": "« {name} » a déjà été déclaré non local", + "noneNotCallable": "L'objet de type \"Aucun\" ne peut pas être appelé", + "noneNotIterable": "L’objet de type « None » ne peut pas être utilisé en tant que valeur itérable", + "noneNotSubscriptable": "L'objet de type \"Aucun\" n'est pas inscriptible", + "noneNotUsableWith": "L’objet de type « None » ne peut pas être utilisé avec « with »", + "noneOperator": "L’opérateur « {operator} » n’est pas pris en charge pour « None »", + "noneUnknownMember": "« {name} » n’est pas un membre connu de « None »", + "notRequiredArgCount": "Argument de type unique attendu après « NotRequired »", + "notRequiredNotInTypedDict": "« NotRequired » n’est pas autorisé dans ce contexte", + "objectNotCallable": "L’objet de type « {type} » n’est pas appelant", + "obscuredClassDeclaration": "La déclaration de classe « {name} » est masquée par une déclaration du même nom", + "obscuredFunctionDeclaration": "La déclaration de fonction « {name} » est masquée par une déclaration du même nom", + "obscuredMethodDeclaration": "La déclaration de méthode « {name} » est masquée par une déclaration du même nom", + "obscuredParameterDeclaration": "La déclaration de paramètre « {name} » est masquée par une déclaration du même nom", + "obscuredTypeAliasDeclaration": "La déclaration d’alias de type « {name} » est masquée par une déclaration du même nom", + "obscuredVariableDeclaration": "La déclaration « {name} » est masquée par une déclaration du même nom", + "operatorLessOrGreaterDeprecated": "L’opérateur « <> » n’est pas pris en charge dans Python 3 ; utilisez « != » à la place", + "optionalExtraArgs": "Attendu un argument de type après \"Facultatif\"", + "orPatternIrrefutable": "Modèle irréfutable autorisé uniquement en tant que dernier sous-modèle dans un modèle \"ou\"", + "orPatternMissingName": "Tous les sous-modèles d’un modèle « or » doivent cibler les mêmes noms", + "overlappingOverload": "La surcharge {obscured} pour « {name} » ne sera jamais utilisée, car ses paramètres chevauchent la surcharge {obscuredBy}", + "overloadAbstractMismatch": "Les méthodes surchargées doivent toutes être abstraites ou non", + "overloadImplementationMismatch": "L’implémentation surchargée n’est pas cohérente avec la signature de la surcharge {index}", + "overloadReturnTypeMismatch": "La surcharge {prevIndex} pour « {name} » chevauche la surcharge {newIndex} et retourne un type incompatible", + "overloadWithImplementation": "« {name} » est marqué comme surcharge, mais il inclut une implémentation", + "overloadWithoutImplementation": "\"{name}\" est marqué comme surcharge, mais aucune implémentation n'est fournie", + "overriddenMethodNotFound": "La méthode \"{name}\" est marquée comme prioritaire, mais aucune méthode de base du même nom n'est présente", + "overrideDecoratorMissing": "La méthode \"{name}\" n'est pas marquée comme override mais remplace une méthode dans la classe \"{className}\"", + "paramAfterKwargsParam": "Le paramètre ne peut pas suivre le paramètre \"**\"", + "paramAlreadyAssigned": "Le paramètre « {name} » est déjà affecté", + "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} »", + "paramSpecArgsKwargsUsage": "Les membres « 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": "Le membre \"args\" de ParamSpec n'est valide que lorsqu'il est utilisé avec le paramètre *args", + "paramSpecAssignedName": "ParamSpec doit être affecté à une variable nommée « {name} »", + "paramSpecContext": "ParamSpec non autorisé dans ce contexte", + "paramSpecDefaultNotTuple": "Points de suspension attendus, expression de tuple ou ParamSpec pour la valeur par défaut de ParamSpec", + "paramSpecFirstArg": "Nom attendu de ParamSpec comme premier argument", + "paramSpecKwargsUsage": "Le membre « configurrgs » de ParamSpec n’est valide qu’en cas d’utilisation avec le paramètre **rgs", + "paramSpecNotBound": "La spec de paramètre « {type} » n’a pas de valeur liée", + "paramSpecNotUsedByOuterScope": "ParamSpec « {name} » n’a aucune signification dans ce contexte", + "paramSpecScopedToReturnType": "ParamSpec \"{name}\" est limité à un appelable dans le type de retour et ne peut pas être référencé dans le corps de la fonction", + "paramSpecUnknownArg": "ParamSpec ne prend pas en charge plus d'un argument", + "paramSpecUnknownMember": "« {name} » n’est pas un membre connu de ParamSpec", + "paramSpecUnknownParam": "\"{name}\" est un paramètre inconnu pour ParamSpec", + "paramTypeCovariant": "Impossible d’utiliser la variable de type Covariant dans le type de paramètre", + "paramTypePartiallyUnknown": "Le type du paramètre « {paramName} » est partiellement inconnu", + "paramTypeUnknown": "Le type de paramètre « {paramName} » est inconnu", + "parenthesizedContextManagerIllegal": "Les parenthèses dans l'instruction \"with\" nécessitent Python 3.9 ou une version plus récente", + "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é", + "positionOnlyAfterArgs": "Séparateur d’arguments position seule non autorisé après le paramètre « * »", + "positionOnlyAfterKeywordOnly": "Le paramètre « / » doit apparaître avant le paramètre « * »", + "positionOnlyFirstParam": "Séparateur d'argument de position uniquement non autorisé en tant que premier paramètre", + "positionOnlyIncompatible": "Le séparateur d’arguments position seule requiert Python 3.8 ou version ultérieure", + "privateImportFromPyTypedModule": "« {name} » n’est pas exporté à partir du module « {module} »", + "privateUsedOutsideOfClass": "« {name} » est privé et utilisé en dehors de la classe dans laquelle il est déclaré", + "privateUsedOutsideOfModule": "« {name} » est privé et utilisé en dehors du module dans lequel il est déclaré", + "propertyOverridden": "\"{name}\" remplace à tort la propriété du même nom dans la classe \"{className}\"", + "propertyStaticMethod": "Méthodes statiques non autorisées pour la propriété getter, setter ou deleter", + "protectedUsedOutsideOfClass": "\"{name}\" est protégé et utilisé en dehors de la classe dans laquelle il est déclaré", + "protocolBaseClass": "La classe de protocole \"{classType}\" ne peut pas dériver de la classe non protocolaire \"{baseType}\"", + "protocolBaseClassWithTypeArgs": "Les arguments de type ne sont pas autorisés avec la classe Protocol lors de l'utilisation de la syntaxe des paramètres de type", + "protocolIllegal": "L’utilisation de « Protocole » nécessite Python 3.7 ou une version plus récente", + "protocolNotAllowedInTypeArgument": "« Protocol » ne peut pas être utilisé comme argument de type", + "protocolUsedInCall": "Impossible d’utiliser la classe de protocole dans l’appel « {name} »", + "protocolVarianceContravariant": "La variable de type \"{variable}\" utilisée dans le protocole générique \"{class}\" doit être contravariante", + "protocolVarianceCovariant": "La variable de type \"{variable}\" utilisée dans le protocole générique \"{class}\" doit être covariante", + "protocolVarianceInvariant": "La variable de type \"{variable}\" utilisée dans le protocole générique \"{class}\" doit être invariante", + "pyrightCommentInvalidDiagnosticBoolValue": "La directive de commentaire Deight doit être suivie de « = » et d’une valeur true ou false", + "pyrightCommentInvalidDiagnosticSeverityValue": "La directive de commentaire Deright doit être suivie de « = » et avoir la valeur true, false, error, warning, information ou none", + "pyrightCommentMissingDirective": "Le commentaire Pyright doit être suivi d’une directive (de base ou stricte) ou d’une règle de diagnostic", + "pyrightCommentNotOnOwnLine": "Les commentaires Ensight utilisés pour contrôler les paramètres au niveau du fichier doivent apparaître sur leur propre ligne", + "pyrightCommentUnknownDiagnosticRule": "« {rule} » est une règle de diagnostic inconnue pour le commentaire deight", + "pyrightCommentUnknownDiagnosticSeverityValue": "« {value} \" n’est pas valide pour le commentaire deight ; true, false, erreur, avertissement, informations ou aucun attendu", + "pyrightCommentUnknownDirective": "« {directive} » est une directive inconnue pour le commentaire deight; « strict » ou « de base » attendu", + "readOnlyArgCount": "Attendu un seul argument de type après \"ReadOnly\"", + "readOnlyNotInTypedDict": "« ReadOnly » n’est pas autorisé dans ce contexte", + "recursiveDefinition": "Le type de \"{name}\" n'a pas pu être déterminé car il fait référence à lui-même", + "relativeImportNotAllowed": "Les importations relatives ne peuvent pas être utilisées avec le formulaire « import .a » ; utiliser « à partir de . importer a » à la place", + "requiredArgCount": "Attendu un argument de type unique après \"Required\"", + "requiredNotInTypedDict": "« Obligatoire » n’est pas autorisé dans ce contexte", + "returnInAsyncGenerator": "L'instruction de retour avec valeur n'est pas autorisée dans le générateur asynchrone", + "returnMissing": "La fonction avec le type déclaré de \"{returnType}\" doit renvoyer une valeur sur tous les chemins de code", + "returnOutsideFunction": "\"return\" ne peut être utilisé que dans une fonction", + "returnTypeContravariant": "La variable de type contravariant ne peut pas être utilisée dans le type de retour", + "returnTypeMismatch": "Impossible d’affecter l’expression de type « {exprType} » pour retourner le type « {returnType} »", + "returnTypePartiallyUnknown": "Le type de retour « {returnType} » est partiellement inconnu", + "returnTypeUnknown": "Le type de retour est inconnu", + "revealLocalsArgs": "Aucun argument attendu pour l'appel \"reveal_locals\"", + "revealLocalsNone": "Aucun élément local dans cette étendue", + "revealTypeArgs": "Argument positionnel unique attendu pour l’appel « reveal_type »", + "revealTypeExpectedTextArg": "L'argument \"expected_text\" pour la fonction \"reveal_type\" doit être une valeur littérale str", + "revealTypeExpectedTextMismatch": "Incompatibilité de texte de type ; « {expected} » attendu, mais a reçu « {received} »", + "revealTypeExpectedTypeMismatch": "Incompatibilité de type; attendu \"{expected}\" mais reçu \"{received}\"", + "selfTypeContext": "« Self » n’est pas valide dans ce contexte", + "selfTypeWithTypedSelfOrCls": "« Self » ne peut pas être utilisé dans une fonction avec un paramètre « self » ou « cls » qui a une annotation de type autre que « Self »", + "setterGetterTypeMismatch": "Le type valeur setter de propriété n’est pas assignable au type de retour getter", + "singleOverload": "« {name} » est marqué comme surcharge, mais des surcharges supplémentaires sont manquantes", + "slotsAttributeError": "\"{name}\" n'est pas spécifié dans __slots__", + "slotsClassVarConflict": "\"{name}\" est en conflit avec la variable d'instance déclarée dans __slots__", + "starPatternInAsPattern": "Le modèle d’étoile ne peut pas être utilisé avec la cible « as »", + "starPatternInOrPattern": "Le modèle d’étoile ne peut pas être supprimé dans d’autres modèles", + "starStarWildcardNotAllowed": "** ne peut pas être utilisé avec le caractère générique « _ »", + "staticClsSelfParam": "Les méthodes statiques ne doivent pas prendre de paramètre « self » ou « cls »", + "stdlibModuleOverridden": "\"{path}\" remplace le module stdlib \"{name}\"", + "strictTypeGuardReturnType": "Le type de retour de StrictTypeGuard (« {returnType} ») n’est pas assignable au type de paramètre de valeur (« {type} »)", + "stringNonAsciiBytes": "Caractère non-ASCII non autorisé dans le littéral de chaîne d'octets", + "stringNotSubscriptable": "L’expression de chaîne ne peut pas être en indice dans l’annotation de type ; placer l’annotation entière entre guillemets", + "stringUnsupportedEscape": "Séquence d'échappement non prise en charge dans le littéral de chaîne", + "stringUnterminated": "Le littéral de chaîne n’est pas spécifié", + "stubFileMissing": "Fichier stub introuvable pour « {importName} »", + "stubUsesGetAttr": "Le fichier stub de type est incomplet ; « __getattr__ » masque les erreurs de type pour le module", + "sublistParamsIncompatible": "Les paramètres de sous-liste ne sont pas pris en charge dans Python 3.x", + "superCallArgCount": "Pas plus de deux arguments attendus pour l'appel \"super\"", + "superCallFirstArg": "Type de classe attendu en tant que premier argument de l’appel « super », mais « {type} » reçu", + "superCallSecondArg": "Le deuxième argument de l’appel « super » doit être un objet ou une classe dérivé de « {type} »", + "superCallZeroArgForm": "La forme d’argument zéro de l’appel « super » est valide uniquement dans une classe", + "symbolIsPossiblyUnbound": "« {name} » est peut-être indépendant", + "symbolIsUnbound": "« {name} » est indépendant", + "symbolIsUndefined": "« {name} » n’est pas défini", + "symbolOverridden": "« {name} » remplace le symbole du même nom dans la classe « {className} »", + "totalOrderingMissingMethod": "La classe doit définir « __lt__ », « __le__ », « __gt__ » ou « __ge__ » pour utiliser total_ordering", + "trailingCommaInFromImport": "Virgule de fin non autorisée sans parenthèses adjacentes", + "tryWithoutExcept": "L'instruction try doit avoir au moins une clause except ou finally", + "tupleAssignmentMismatch": "L'expression avec le type \"{type}\" ne peut pas être assignée au tuple cible", + "tupleInAnnotation": "Expression de tuple non autorisée dans l'annotation de type", + "tupleIndexOutOfRange": "L’index {index} est hors limites pour le type {type}", + "typeAliasIllegalExpressionForm": "Formulaire d’expression non valide pour la définition d’alias de type", + "typeAliasIsRecursiveDirect": "L'alias de type \"{name}\" ne peut pas s'utiliser lui-même dans sa définition", + "typeAliasNotInModuleOrClass": "Un TypeAlias ne peut être défini qu’au sein d’un module ou d’une étendue de classe", + "typeAliasRedeclared": "« {name} » est déclaré en tant que TypeAlias et ne peut être attribué qu’une seule fois", + "typeAliasStatementIllegal": "L’instruction d’alias de type nécessite Python 3.12 ou version ultérieure", + "typeAliasTypeMustBeAssigned": "TypeAliasType doit être affecté à une variable portant le même nom que l'alias de type", + "typeAliasTypeNameArg": "Le premier argument de TypeAliasType doit être un littéral de chaîne représentant le nom de l'alias de type", + "typeAliasTypeNameMismatch": "Le nom de l’alias de type doit correspondre au nom de la variable à laquelle il est affecté", + "typeAliasTypeParamInvalid": "La liste de paramètres de type doit être un tuple contenant uniquement TypeVar, TypeVarTuple ou ParamSpec", + "typeAnnotationCall": "Annotation de type illégale : expression d'appel non autorisée", + "typeAnnotationVariable": "Annotation de type non conforme : variable non autorisée, sauf s’il s’agit d’un alias de type", + "typeArgListExpected": "ParamSpec, ellipse ou liste de types attendue", + "typeArgListNotAllowed": "Expression de liste non autorisée pour cet argument de type", + "typeArgsExpectingNone": "Aucun argument de type attendu pour la classe « {name} »", + "typeArgsMismatchOne": "Argument de type attendu mais {received} reçu", + "typeArgsMissingForAlias": "Arguments de type attendus pour l’alias de type générique « {name} »", + "typeArgsMissingForClass": "Arguments de type attendus pour la classe générique \"{name}\"", + "typeArgsTooFew": "Trop peu d’arguments de type fournis pour « {name} » ; {expected} attendu, mais {received} reçu", + "typeArgsTooMany": "Trop d'arguments de type fournis pour \"{name}\" ; attendu {attendu} mais reçu {reçu}", + "typeAssignmentMismatch": "Impossible d’affecter l’expression de type « {sourceType} » au type déclaré « {destType} »", + "typeCallNotAllowed": "l’appel type() ne doit pas être utilisé dans l’annotation de type", + "typeCommentDeprecated": "L’utilisation de commentaires de type est déconseillée ; utiliser l’annotation de type à la place", + "typeExpectedClass": "Expression de type attendue mais « {type} » reçue", + "typeGuardArgCount": "Argument de type unique attendu après « TypeGuard »", + "typeGuardParamCount": "Les méthodes et fonctions de protection de type définies par l’utilisateur doivent avoir au moins un paramètre d’entrée", + "typeNotAwaitable": "\"{type}\" n'est pas attendu", + "typeNotCallable": "\"{expression}\" a le type \"{type}\" et n'est pas appelable", + "typeNotIntantiable": "« {type} » ne peut pas être instancié", + "typeNotIterable": "« {type} » n’est pas itérable", + "typeNotSpecializable": "Impossible de spécialiser le type \"{type}\"", + "typeNotSubscriptable": "L’objet de type « {type} » n’est pas sous-scriptible", + "typeNotSupportBinaryOperator": "Opérateur \"{operator}\" non pris en charge pour les types \"{leftType}\" et \"{rightType}\"", + "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}", + "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é", + "typeParameterNotDeclared": "Le paramètre de type « {name} » n’est pas inclus dans la liste des paramètres de type pour « {container} »", + "typeParametersMissing": "Au moins un paramètre de type doit être spécifié", + "typePartiallyUnknown": "Le type de « {name} » est partiellement inconnu", + "typeUnknown": "Le type de « {name} » est inconnu", + "typeVarAssignedName": "TypeVar doit être affecté à une variable nommée « {name} »", + "typeVarAssignmentMismatch": "Le type \"{type}\" ne peut pas être affecté à la variable de type \"{name}\"", + "typeVarBoundAndConstrained": "TypeVar ne peut pas être à la fois lié et contraint", + "typeVarBoundGeneric": "Le type lié TypeVar ne peut pas être générique", + "typeVarConstraintGeneric": "Le type de contrainte TypeVar ne peut pas être générique", + "typeVarDefaultBoundMismatch": "Le type par défaut TypeVar doit être un sous-type du type lié", + "typeVarDefaultConstraintMismatch": "Le type par défaut TypeVar doit être l'un des types contraints", + "typeVarDefaultIllegal": "Les types de variables de type par défaut nécessitent Python 3.13 ou une version plus récente", + "typeVarDefaultInvalidTypeVar": "Le paramètre de type « {name} » a un type par défaut qui fait référence à une ou plusieurs variables de type hors de portée", + "typeVarFirstArg": "Nom attendu de TypeVar comme premier argument", + "typeVarNoMember": "TypeVar « {type} » n’a pas de membre « {name} »", + "typeVarNotSubscriptable": "TypeVar « {type} » n’est pas subscriptible", + "typeVarNotUsedByOuterScope": "La variable de type « {name} » n’a aucune signification dans ce contexte", + "typeVarPossiblyUnsolvable": "La variable de type \"{name}\" peut rester non résolue si l'appelant ne fournit aucun argument pour le paramètre \"{param}\"", + "typeVarScopedToReturnType": "La variable de type \"{name}\" est limitée à un appelable dans le type de retour et ne peut pas être référencée dans le corps de la fonction", + "typeVarSingleConstraint": "TypeVar doit avoir au moins deux types contraints", + "typeVarTupleContext": "TypeVarTuple non autorisé dans ce contexte", + "typeVarTupleDefaultNotUnpacked": "Le type par défaut TypeVarTuple doit être un tuple décompressé ou TypeVarTuple", + "typeVarTupleMustBeUnpacked": "L'opérateur Unpack est requis pour la valeur TypeVarTuple", + "typeVarTupleUnknownParam": "« {name} » est un paramètre inconnu de TypeVarTuple", + "typeVarUnknownParam": "\"{name}\" est un paramètre inconnu pour TypeVar", + "typeVarUsedByOuterScope": "TypeVar \"{name}\" est déjà utilisé par une portée externe", + "typeVarUsedOnlyOnce": "TypeVar « {name} » n’apparaît qu’une seule fois dans la signature de fonction générique", + "typeVarVariance": "TypeVar ne peut pas être à la fois covariant et contravariant", + "typeVarWithoutDefault": "\"{name}\" ne peut pas apparaître après \"{other}\" dans la liste des paramètres de type car il n'a pas de type par défaut", + "typeVarsNotInGenericOrProtocol": "Generic[] ou Protocol[] doit inclure toutes les variables de type", + "typedDictAccess": "Impossible d’accéder à l’élément dans TypedDict", + "typedDictBadVar": "Les classes TypedDict ne peuvent contenir que des annotations de type", + "typedDictBaseClass": "Toutes les classes de base pour les classes TypedDict doivent également être des classes TypedDict", + "typedDictBoolParam": "Paramètre « {name} » attendu avec la valeur True ou False", + "typedDictDelete": "Impossible de supprimer l’élément dans TypedDict", + "typedDictEmptyName": "Les noms dans un TypedDict ne peuvent pas être vides", + "typedDictEntryName": "Littéral de chaîne attendu pour le nom d’entrée du dictionnaire", + "typedDictEntryUnique": "Les noms dans un dictionnaire doivent être uniques", + "typedDictExtraArgs": "Arguments TypedDict supplémentaires non pris en charge", + "typedDictFieldReadOnlyRedefinition": "Le champ TypedDict « {name} » ne peut pas être redéfini en lecture seule", + "typedDictFieldTypeRedefinition": "Impossible de redéfinir le type du champ TypedDict « {name} »", + "typedDictFirstArg": "Nom de classe TypedDict attendu comme premier argument", + "typedDictSecondArgDict": "Paramètre de mot clé ou de dict attendu en tant que deuxième paramètre", + "typedDictSecondArgDictEntry": "Entrée de dictionnaire simple attendue", + "typedDictSet": "Impossible d'attribuer l'élément dans TypedDict", + "unaccessedClass": "La classe \"{name}\" n'est pas accessible", + "unaccessedFunction": "La fonction « {name} » n’est pas accessible", + "unaccessedImport": "L’importation « {name} » n’est pas accessible", + "unaccessedSymbol": "« {name} » n’est pas accessible", + "unaccessedVariable": "La variable « {name} » n’est pas accessible", + "unannotatedFunctionSkipped": "L'analyse de la fonction \"{name}\" est ignorée car elle n'est pas annotée", + "unexpectedAsyncToken": "« def », « with » ou « for » attendu pour suivre « async »", + "unexpectedExprToken": "Jeton inattendu à la fin de l’expression", + "unexpectedIndent": "Retrait inattendu", + "unexpectedUnindent": "Unindent non attendu", + "unhashableDictKey": "La clé du dictionnaire doit être hachable", + "unhashableSetEntry": "L’entrée set doit être hachable", + "uninitializedAbstractVariables": "Les variables définies dans la classe de base abstraite ne sont pas initialisées dans la classe finale « {classType} »", + "uninitializedInstanceVariable": "La variable d’instance « {name} » n’est pas initialisée dans le corps de la classe ou dans la méthode __init__", + "unionForwardReferenceNotAllowed": "La syntaxe Union ne peut pas être utilisée avec l’opérande de chaîne ; utiliser des guillemets autour de l’expression entière", + "unionSyntaxIllegal": "Une autre syntaxe pour les unions nécessite Python 3.10 ou une version plus récente", + "unionTypeArgCount": "L’union requiert au moins deux arguments de type", + "unmatchedEndregionComment": "#endregion n’a pas de #region correspondante", + "unmatchedRegionComment": "#region n’a pas de #endregion correspondante", + "unnecessaryCast": "Appel \"cast\" inutile ; le type est déjà \"{type}\"", + "unnecessaryIsInstanceAlways": "Appel d’isinstance inutile ; « {testType} » est toujours une instance de « {classType} »", + "unnecessaryIsSubclassAlways": "Appel issubclass inutile ; \"{testType}\" est toujours une sous-classe de \"{classType}\"", + "unnecessaryPyrightIgnore": "Commentaire \"# pyright: ignore\" inutile", + "unnecessaryPyrightIgnoreRule": "Règle inutile « #ightight: ignore » : « {name} »", + "unnecessaryTypeIgnore": "Commentaire \"# type: ignore\" inutile", + "unpackArgCount": "Attendu un seul argument de type après \"Unpack\"", + "unpackExpectedTypeVarTuple": "TypeVarTuple ou Tuple attendu en tant qu’argument de type pour Unpack", + "unpackExpectedTypedDict": "Argument de type TypedDict attendu pour Unpack", + "unpackIllegalInComprehension": "Opération de décompression non autorisée dans la compréhension", + "unpackInAnnotation": "Opérateur de décompression non autorisé dans l’annotation de type", + "unpackInDict": "Opération de décompression non autorisée dans les dictionnaires", + "unpackInSet": "Opérateur de déballage non autorisé dans un ensemble", + "unpackNotAllowed": "Déballage non autorisé dans ce contexte", + "unpackOperatorNotAllowed": "Opération de décompression non autorisée dans ce contexte", + "unpackTuplesIllegal": "Opération de décompression non autorisée dans les tuples avant Python 3.8", + "unpackedArgInTypeArgument": "Les arguments décompressés ne peuvent pas être utilisés dans les listes d’arguments de type", + "unpackedArgWithVariadicParam": "L'argument décompressé ne peut pas être utilisé pour le paramètre TypeVarTuple", + "unpackedDictArgumentNotMapping": "L’expression d’argument après ** doit être un mappage avec un type de clé « str »", + "unpackedDictSubscriptIllegal": "L’opérateur de décompression de dictionnaire dans l’indice n’est pas autorisé", + "unpackedSubscriptIllegal": "L’opérateur de décompression en indice requiert Python 3.11 ou version ultérieure", + "unpackedTypeVarTupleExpected": "TypeVarTuple décompressé attendu ; utiliser Unpack[{name1}] ou *{name2}", + "unpackedTypedDictArgument": "Impossible de faire correspondre l’argument TypedDict décompressé aux paramètres", + "unreachableCode": "Le code est inaccessible", + "unreachableExcept": "La clause Except est inaccessible, car l’exception est déjà gérée", + "unsupportedDunderAllOperation": "L’opération sur « __all__ » n’est pas prise en charge. Par conséquent, la liste de symboles exportée peut être incorrecte", + "unusedCallResult": "Le résultat de l'expression d'appel est de type \"{type}\" et n'est pas utilisé ; affecter à la variable \"_\" si c'est intentionnel", + "unusedCoroutine": "Le résultat de l’appel de fonction asynchrone n’est pas utilisé ; utiliser « await » ou affecter le résultat à la variable", + "unusedExpression": "La valeur de l'expression n'est pas utilisée", + "varAnnotationIllegal": "Les annotations de type pour les variables nécessitent Python 3.6 ou une version ultérieure ; utiliser le commentaire de type pour la compatibilité avec les versions précédentes", + "variableFinalOverride": "La variable « {name} » est marquée comme finale et remplace la variable non finale du même nom dans la classe « {className} »", + "variadicTypeArgsTooMany": "La liste d’arguments de type peut avoir au plus un TypeVarTuple ou Tuple unpacked", + "variadicTypeParamTooManyAlias": "L’alias de type peut avoir au plus un paramètre de type TypeVarTuple, mais a reçu plusieurs ({names})", + "variadicTypeParamTooManyClass": "La classe générique peut avoir au plus un paramètre de type TypeVarTuple, mais en a reçu plusieurs ({names})", + "walrusIllegal": "L’opérateur « := » nécessite Python 3.8 ou version ultérieure", + "walrusNotAllowed": "L’opérateur « := » n’est pas autorisé dans ce contexte sans parenthèses adjacentes", + "wildcardInFunction": "Importation de caractères génériques non autorisée dans une classe ou une fonction", + "wildcardLibraryImport": "Importation de caractères génériques à partir d'une bibliothèque non autorisée", + "wildcardPatternTypePartiallyUnknown": "Le type capturé par le modèle générique est partiellement inconnu", + "wildcardPatternTypeUnknown": "Le type capturé par le modèle générique est inconnu", + "yieldFromIllegal": "L’utilisation de « yield from » nécessite Python 3.3 ou version ultérieure", + "yieldFromOutsideAsync": "« yield from » non autorisé dans une fonction asynchrone", + "yieldOutsideFunction": "\"rendement\" non autorisé en dehors d'une fonction ou d'un lambda", + "yieldWithinListCompr": "« yield » non autorisé dans une compréhension de liste", + "zeroCaseStatementsFound": "L'instruction de correspondance doit inclure au moins une instruction case", + "zeroLengthTupleNotAllowed": "Tuple de longueur nulle non autorisé dans ce contexte" + }, + "DiagnosticAddendum": { + "argParam": "L’argument correspond au paramètre « {paramName} »", + "argParamFunction": "L’argument correspond au paramètre « {paramName} » dans la fonction « {functionName} »", + "argsParamMissing": "Le paramètre \"*{paramName}\" n'a pas de paramètre correspondant", + "argsPositionOnly": "Non-concordance des paramètres de position uniquement ; attendu {attendu} mais reçu {reçu}", + "argumentType": "Le type d’argument est « {type} »", + "argumentTypes": "Types d'argument : ({types})", + "assignToNone": "Le type ne peut pas être affecté au type « None »", + "asyncHelp": "Vouliez-vous dire \"asynchrone avec\" ?", + "baseClassOverriddenType": "La classe de base « {baseClass} » fournit le type « {type} », qui est remplacé", + "baseClassOverridesType": "La classe de base \"{baseClass}\" remplace le type \"{type}\"", + "conditionalRequiresBool": "La méthode __bool__ pour le type « {operandType} » retourne le type « {boolReturnType} » plutôt que « bool »", + "dataClassFieldLocation": "Déclaration de champ", + "dataClassFrozen": "« {name} » est figé", + "finalMethod": "Méthode finale", + "functionParamDefaultMissing": "Le paramètre \"{name}\" n'a pas d'argument par défaut", + "functionParamName": "Incompatibilité de nom de paramètre : « {destName} » et « {srcName} »", + "functionReturnTypeMismatch": "Le type de retour de fonction \"{sourceType}\" est incompatible avec le type \"{destType}\"", + "functionTooFewParams": "La fonction accepte trop peu de paramètres positionnels ; {expected} attendu, mais {received} reçu", + "functionTooManyParams": "La fonction accepte trop de paramètres positionnels ; {expected} attendu, mais {received} reçu", + "incompatibleDeleter": "La méthode du deleter de propriété n’est pas compatible", + "incompatibleGetter": "La méthode de récupération de propriété est incompatible", + "incompatibleSetter": "La méthode setter de propriété n’est pas compatible", + "initMethodLocation": "La méthode __init__ est définie dans la classe « {type} »", + "initMethodSignature": "La signature de __init__ est « {type} »", + "keyNotRequired": "\"{name}\" n'est pas une clé requise dans \"{type}\", donc l'accès peut entraîner une exception d'exécution", + "keyReadOnly": "« {name} » est une clé en lecture seule dans « {type} »", + "keyRequiredDeleted": "« {name} » est une clé obligatoire et ne peut pas être supprimée", + "keyUndefined": "« {name} » n’est pas une clé définie dans « {type} »", + "kwargsParamMissing": "Le paramètre \"**{paramName}\" n'a pas de paramètre correspondant", + "listAssignmentMismatch": "Le type « {type} » n’est pas compatible avec la liste cible", + "literalAssignmentMismatch": "« {sourceType} » ne peut pas être affecté au type « {destType} »", + "matchIsNotExhaustiveHint": "Si la gestion exhaustive n’est pas prévue, ajoutez « case _: pass »", + "matchIsNotExhaustiveType": "Type non géré : « {type} »", + "memberAssignment": "L'expression de type \"{type}\" ne peut pas être attribuée au membre \"{name}\" de la classe \"{classType}\"", + "memberIsAbstract": "\"{type}.{nom}\" est abstrait", + "memberIsAbstractMore": "et {count} autres...", + "memberIsFinalInProtocol": "« {name} » est marqué final dans le protocole", + "memberIsInitVar": "Le membre « {name} » est un champ d’initialisation uniquement", + "memberIsInvariant": "« {name} » est invariant, car il est mutable", + "memberIsNotFinalInProtocol": "\"{name}\" n'est pas marqué Final dans le protocole", + "memberSetClassVar": "Le membre \"{name}\" ne peut pas être attribué via une instance de classe car il s'agit d'une ClassVar", + "memberTypeMismatch": "« {name} » est un type incompatible", + "memberUnknown": "Le membre « {name} » est inconnu", + "missingDeleter": "La méthode de suppression de propriétés est manquante", + "missingGetter": "La méthode getter de propriété est manquante", + "missingProtocolMember": "Le membre « {name} » est déclaré dans la classe de protocole « {classType} »", + "missingSetter": "La méthode de définition de propriété est manquante", + "namedParamMissingInDest": "Le paramètre de mot clé « {name} » est manquant dans la destination", + "namedParamMissingInSource": "Le paramètre de mot-clé \"{name}\" est manquant dans la source", + "namedParamTypeMismatch": "Impossible d’affecter le paramètre de mot clé « {name} » de type « {sourceType} » au type « {destType} »", + "newMethodLocation": "La méthode __new__ est définie dans la classe « {type} »", + "newMethodSignature": "La signature de __new__ est « {type} »", + "noOverloadAssignable": "Aucune fonction surchargée ne correspond au type « {type} »", + "orPatternMissingName": "Noms manquants : {name}", + "overloadNotAssignable": "Une ou plusieurs surcharges de « {name} » ne sont pas assignables", + "overloadSignature": "La signature de surcharge est définie ici", + "overloadWithImplementation": "Le corps d’une surcharge de fonction doit être « ... »", + "overriddenMethod": "Méthode substituée", + "overriddenSymbol": "Symbole substitué", + "overrideNoOverloadMatches": "Aucune signature de surcharge dans le remplacement n’est compatible avec la méthode de base", + "overrideNotClassMethod": "La méthode de base est déclarée en tant que classmethod, mais la substitution n’est pas", + "overrideNotInstanceMethod": "La méthode de base est déclarée en tant que méthode d'instance mais la substitution n'est pas", + "overrideNotStaticMethod": "La méthode de base est déclarée comme staticmethod, mais la substitution n’est pas", + "overrideOverloadNoMatch": "La surcharge {index} n'est pas compatible avec la méthode de base", + "overrideOverloadOrder": "Les surcharges pour la méthode de remplacement doivent être dans le même ordre que la méthode de base", + "overrideParamKeywordNoDefault": "Non-concordance du paramètre de mot-clé \"{name}\" : le paramètre de base a une valeur d'argument par défaut, le paramètre de remplacement n'en a pas", + "overrideParamKeywordType": "Incompatibilité de type du paramètre de mot clé \"{name}\" : le paramètre de base est de type \"{baseType}\", le paramètre de remplacement est de type \"{overrideType}\"", + "overrideParamName": "Incompatibilité de nom de paramètre {index} : le paramètre de base est nommé \"{baseName}\", le paramètre de remplacement est nommé \"{overrideName}\"", + "overrideParamNameExtra": "Le paramètre « {name} » est manquant dans la base", + "overrideParamNameMissing": "Le paramètre \"{name}\" est manquant dans le remplacement", + "overrideParamNamePositionOnly": "Incompatibilité de nom du paramètre {index} : le paramètre de base est nommé « {baseName} », le paramètre de remplacement est en position seule »", + "overrideParamNoDefault": "Non-concordance du paramètre {index} : le paramètre de base a une valeur d'argument par défaut, le paramètre de remplacement n'en a pas", + "overrideParamType": "Incompatibilité de type de paramètre {index} : le paramètre de base est de type \"{baseType}\", le paramètre de remplacement est de type \"{overrideType}\"", + "overridePositionalParamCount": "Non-concordance du nombre de paramètres positionnels ; la méthode de base a {baseCount}, mais la substitution a {overrideCount}", + "overrideReturnType": "Incompatibilité de type de retour : la méthode de base retourne le type « {baseType} », la substitution retourne le type « {overrideType} »", + "overrideType": "La classe de base définit le type comme « {type} »", + "paramAssignment": "Paramètre {index} : impossible d’affecter le type « {sourceType} » au type « {destType} »", + "paramSpecMissingInOverride": "Les paramètres ParamSpec sont manquants dans la méthode de remplacement", + "paramType": "Le type de paramètre est « {paramType} »", + "privateImportFromPyTypedSource": "Importer à partir de « {module} » à la place", + "propertyAccessFromProtocolClass": "Une propriété définie dans une classe de protocole n'est pas accessible en tant que variable de classe", + "propertyMethodIncompatible": "La méthode de propriété « {name} » n’est pas compatible", + "propertyMethodMissing": "La méthode de propriété \"{name}\" est manquante dans le remplacement", + "propertyMissingDeleter": "La propriété « {name} » n’a pas de deleter défini", + "propertyMissingSetter": "La propriété « {name} » n’a pas de méthode setter définie", + "protocolIncompatible": "\"{sourceType}\" est incompatible avec le protocole \"{destType}\"", + "protocolMemberClassVar": "« {name} » n’est pas une variable de classe", + "protocolMemberMissing": "« {name} » n’est pas présent", + "protocolSourceIsNotConcrete": "\"{sourceType}\" n'est pas un type de classe concret et ne peut pas être affecté au type \"{destType}\"", + "pyrightCommentIgnoreTip": "Utilisez « #ight: ignore[] pour supprimer les diagnostics pour une seule ligne", + "readOnlyAttribute": "L’attribut « {name} » est en lecture seule", + "seeClassDeclaration": "Voir la déclaration de classe", + "seeDeclaration": "Voir la déclaration", + "seeFunctionDeclaration": "Voir la déclaration de fonction", + "seeMethodDeclaration": "Voir la déclaration de méthode", + "seeParameterDeclaration": "Voir la déclaration des paramètres", + "seeTypeAliasDeclaration": "Voir la déclaration d’alias de type", + "seeVariableDeclaration": "Voir déclaration de variable", + "tupleAssignmentMismatch": "Le type \"{type}\" est incompatible avec le tuple cible", + "tupleEntryTypeMismatch": "Le type de l’entrée de tuple {entry} est incorrect", + "tupleSizeMismatch": "Incompatibilité de taille d’élément ; {expected} attendu, mais {received} reçu", + "typeAssignmentMismatch": "Impossible d’affecter le type « {sourceType} » au type « {destType} »", + "typeBound": "Le type « {sourceType} » n’est pas compatible avec le type lié « {destType} » pour la variable de type « {name} »", + "typeConstrainedTypeVar": "Le «{type}» de type n’est pas compatible avec les «{name}» de variable de type contrainte", + "typeIncompatible": "« {sourceType} » n’est pas compatible avec « {destType} »", + "typeNotCallable": "Le type \"{type}\" n'est pas appelable", + "typeNotClass": "« {type} » n’est pas une classe", + "typeNotStringLiteral": "\"{type}\" n'est pas un littéral de chaîne", + "typeOfSymbol": "Le type de \"{nom}\" est \"{type}\"", + "typeParamSpec": "Le type « {type} » n’est pas compatible avec ParamSpec « {name} »", + "typeUnsupported": "Le type « {type} » n’est pas pris en charge", + "typeVarDefaultOutOfScope": "La variable de type « {name} » n’est pas dans l’étendue", + "typeVarIsContravariant": "TypeVar « {name} » est contravariant", + "typeVarIsCovariant": "TypeVar « {name} » est covariant", + "typeVarIsInvariant": "TypeVar « {name} » est invariant", + "typeVarNotAllowed": "TypeVar ou type générique avec des arguments de type non autorisés", + "typeVarTupleRequiresKnownLength": "TypeVarTuple ne peut pas être lié à un tuple de longueur inconnue", + "typeVarUnsolvableRemedy": "Fournir une surcharge qui spécifie le type de retour lorsque l’argument n’est pas fourni", + "typeVarsMissing": "Variables de type manquantes : {names}", + "typedDictFieldMissing": "« {name} » est manquant dans « {type} »", + "typedDictFieldNotReadOnly": "« {name} » n’est pas en lecture seule dans « {type} »", + "typedDictFieldNotRequired": "« {name} » n’est pas obligatoire dans « {type} »", + "typedDictFieldRequired": "« {name} » est obligatoire dans « {type} »", + "typedDictFieldTypeMismatch": "Le type \"{type}\" n'est pas attribuable au champ \"{name}\"", + "typedDictFieldTypeRedefinition": "Le type dans la classe parente est « {parentType} » et le type dans la classe enfant est « {childType} »", + "typedDictFieldUndefined": "« {name} » est un champ non défini dans le type « {type} »", + "typedDictFinalMismatch": "« {sourceType} » n’est pas compatible avec « {destType} » en raison d’une incompatibilité de @final", + "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": "Utilisez Dict[T1, T2] pour indiquer un type de dictionnaire", + "useListInstead": "Utilisez List[T] pour indiquer un type de liste ou Union[T1, T2] pour indiquer un type d'union", + "useTupleInstead": "Utiliser tuple[T1, ..., Tn] pour indiquer un type de tuple ou Union[T1, T2] pour indiquer un type d’union", + "useTypeInstead": "Utiliser le 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}\"" + } } diff --git a/packages/pyright-internal/src/localization/package.nls.it.json b/packages/pyright-internal/src/localization/package.nls.it.json new file mode 100644 index 000000000..a8c1e0fe8 --- /dev/null +++ b/packages/pyright-internal/src/localization/package.nls.it.json @@ -0,0 +1,718 @@ +{ + "CodeAction": { + "addOptionalToAnnotation": "Aggiungere \"Facoltativo\" all'annotazione di tipo", + "createTypeStub": "Crea stub di tipo", + "createTypeStubFor": "Crea stub di tipo per \"{moduleName}\"", + "executingCommand": "Esecuzione del comando", + "filesToAnalyzeCount": "{count} file da analizzare", + "filesToAnalyzeOne": "1 file da analizzare", + "findingReferences": "Ricerca dei riferimenti in corso", + "organizeImports": "Organizza importazioni", + "renameShadowedFile": "Rinomina \"{oldFile}\" in \"{newFile}\"" + }, + "Diagnostic": { + "abstractMethodInvocation": "Impossibile chiamare il metodo \"{method}\" perché è astratto", + "annotatedParamCountMismatch": "Numero di annotazioni dei parametro non corrispondente: previsto {expected} ma ricevuto {received}", + "annotatedTypeArgMissing": "Previsto un argomento di tipo e una o più annotazioni per \"Annotato\"", + "annotationFormatString": "Le annotazioni di tipo non possono usare valori letterali stringa di formato (stringhe f)", + "annotationNotSupported": "Annotazione di tipo non supportata per questa istruzione", + "annotationSpansStrings": "Le annotazioni di tipo non possono estendersi su più valori letterali stringa", + "annotationStringEscape": "Le annotazioni di tipo non possono contenere caratteri di escape", + "argAssignment": "Non è possibile assegnare l'argomento di tipo \"{argType}\" al parametro di tipo \"{paramType}\"", + "argAssignmentFunction": "Non è possibile assegnare l'argomento di tipo \"{argType}\" al parametro di tipo \"{paramType}\" nella funzione \"{functionName}\"", + "argAssignmentParam": "Non è possibile assegnare l'argomento di tipo \"{argType}\" al parametro \"{paramName}\" di tipo \"{paramType}\"", + "argAssignmentParamFunction": "Non è possibile assegnare l'argomento di tipo \"{argType}\" al parametro \"{paramName}\" di tipo \"{paramType}\" nella funzione \"{functionName}\"", + "argMissingForParam": "Manca l'argomento per il parametro {name}", + "argMissingForParams": "Argomenti mancanti per i parametri {names}", + "argMorePositionalExpectedCount": "Sono previsti {expected} altri argomenti posizionali", + "argMorePositionalExpectedOne": "Previsto 1 altro argomento posizionale", + "argPositional": "Argomento posizionale previsto", + "argPositionalExpectedCount": "Sono previsti {expected} argomenti posizionali", + "argPositionalExpectedOne": "Previsto 1 argomento posizionale", + "argTypePartiallyUnknown": "Tipo di argomento parzialmente sconosciuto", + "argTypeUnknown": "Il tipo di argomento è sconosciuto", + "assertAlwaysTrue": "L'espressione assert restituisce sempre true", + "assertTypeArgs": "\"assert_type\" prevede due argomenti posizionali", + "assertTypeTypeMismatch": "\"assert_type\" non corrispondente: previsto \"{expected}\" ma ricevuto \"{received}\"", + "assignmentExprComprehension": "La destinazione dell'espressione di assegnazione \"{name}\" non può usare lo stesso nome della comprensione per la destinazione", + "assignmentExprContext": "L'espressione di assegnazione deve essere all'interno di modulo, funzione o lambda", + "assignmentExprInSubscript": "Le espressioni di assegnazione all'interno di un pedice sono supportate solo in Python 3.10 e versioni successive", + "assignmentInProtocol": "Le variabili di istanza o di classe all'interno di una classe Protocollo devono essere dichiarate esplicitamente nel corpo della classe", + "assignmentTargetExpr": "L'espressione non può essere una destinazione di assegnazione", + "asyncNotInAsyncFunction": "L'uso di \"async\" non è consentito al di fuori della funzione asincrona", + "awaitIllegal": "L'uso di \"await\" richiede Python 3.5 o versione successiva", + "awaitNotInAsync": "\"await\" consentito solo all'interno della funzione asincrona", + "backticksIllegal": "Le espressioni racchiuse tra backticks non sono supportate in Python 3.x; usare la reimpostazione", + "baseClassCircular": "La classe non può derivare da se stessa", + "baseClassFinal": "La classe di base \"{type}\" è contrassegnata come finale e non può essere sottoclassata", + "baseClassInvalid": "L'argomento della classe deve essere una classe base", + "baseClassMethodTypeIncompatible": "Le classi di base per la classe \"{classType}\" definiscono il metodo \"{name}\" in modo incompatibile", + "baseClassUnknown": "Il tipo della classe di base è sconosciuto. È in corso il tentativo di determinare il tipo della classe derivata", + "baseClassVariableTypeIncompatible": "Le classi di base per la classe \"{classType}\" definiscono la variabile \"{name}\" in modo incompatibile", + "bindTypeMismatch": "Non è stato possibile associare il metodo \"{methodName}\" perché non è possibile assegnare\"{type}\" al parametro \"{paramName}\"", + "breakOutsideLoop": "\"break\" può essere usato solo all'interno di un ciclo", + "callableExtraArgs": "Sono previsti solo due argomenti di tipo per \"Callable\"", + "callableFirstArg": "Previsto elenco dei tipi di parametro o \"...\"", + "callableNotInstantiable": "Non è possibile creare un'istanza del tipo \"{type}\"", + "callableSecondArg": "È previsto un tipo restituito come secondo argomento di tipo per \"Callable\"", + "casePatternIsIrrefutable": "Il criterio inconfutabile è consentito solo per l'ultima istruzione case", + "classAlreadySpecialized": "Il tipo \"{type}\" è già specializzato", + "classDecoratorTypeUnknown": "L'elemento Decorator di classe non tipizzato nasconde il tipo di classe. l'elemento Decorator verrà ignorato", + "classDefinitionCycle": "La definizione della classe per \"{name}\" dipende da se stessa", + "classGetItemClsParam": "__class_getitem__ override deve accettare un parametro \"cls\"", + "classMethodClsParam": "I metodi di classe devono accettare un parametro \"cls\"", + "classNotRuntimeSubscriptable": "Il pedice per la classe \"{name}\" genererà un'eccezione di runtime; racchiudere l'annotazione di tipo tra virgolette", + "classPatternBuiltInArgCount": "Il modello di classe accetta al massimo 1 sotto pattern posizionale", + "classPatternBuiltInArgPositional": "Il modello di classe accetta solo un sotto pattern posizionale", + "classPatternTypeAlias": "\"{type}\" non può essere usato in uno schema di classe, perché è un alias di tipo specializzato", + "classTypeParametersIllegal": "La sintassi del parametro del tipo di classe richiede Python 3.12 o versione successiva", + "classVarFirstArgMissing": "È previsto un argomento tipo dopo \"ClassVar\"", + "classVarNotAllowed": "\"ClassVar\" non consentito in questo contesto", + "classVarOverridesInstanceVar": "La variabile di classe \"{name}\" esegue l'override della variabile di istanza con lo stesso nome nella classe \"{className}\"", + "classVarTooManyArgs": "Previsto un solo argomento tipo dopo \"ClassVar\"", + "classVarWithTypeVar": "Il tipo \"ClassVar\" non può includere variabili di tipo", + "clsSelfParamTypeMismatch": "Il tipo di parametro \"{name}\" deve essere un supertipo della relativa classe \"{classType}\"", + "codeTooComplexToAnalyze": "Il codice è troppo complesso per l'analisi. ridurre la complessità eseguendo il refactoring in subroutine o riducendo i percorsi del codice condizionale", + "collectionAliasInstantiation": "Non è possibile creare un'istanza del tipo \"{type}\". In alternativa, usare \"{alias}\"", + "comparisonAlwaysFalse": "La condizione restituisce sempre False perché i tipi \"{leftType}\" e \"{rightType}\" non si sovrappongono", + "comparisonAlwaysTrue": "La condizione restituisce sempre True perché i tipi \"{leftType}\" e \"{rightType}\" non si sovrappongono", + "comprehensionInDict": "Non è possibile usare la comprensione con altre voci del dizionario", + "comprehensionInSet": "Non è possibile usare la comprensione con altre voci del set", + "concatenateParamSpecMissing": "L'ultimo argomento di tipo per \"Concatenate\" deve essere un ParamSpec", + "concatenateTypeArgsMissing": "\"Concatena\" richiede almeno due argomenti tipo", + "conditionalOperandInvalid": "Operando condizionale non valido di tipo \"{type}\"", + "constantRedefinition": "\"{name}\" è costante (perché è in maiuscolo) e non può essere ridefinita", + "constructorNoArgs": "Nessun argomento previsto per il costruttore \"{type}\"", + "constructorParametersMismatch": "Mancata corrispondenza tra firma di __new__ e __init__ nella classe \"{classType}\"", + "containmentAlwaysFalse": "L'espressione restituisce sempre False perché i tipi \"{leftType}\" e \"{rightType}\" non si sovrappongono", + "containmentAlwaysTrue": "L'espressione restituisce sempre True perché i tipi \"{leftType}\" e \"{rightType}\" non si sovrappongono", + "continueInFinally": "Non è possibile usare \"continue\" all'interno di una clausola finally", + "continueOutsideLoop": "\"continue\" può essere usato solo all'interno di un ciclo", + "dataClassBaseClassFrozen": "Una classe non bloccata non può ereditare da una classe bloccata", + "dataClassBaseClassNotFrozen": "Una classe bloccata non può ereditare da una classe non bloccata", + "dataClassConverterFunction": "L'argomento di tipo \"{argType}\" non è un convertitore valido per il campo \"{fieldName}\" di tipo \"{fieldType}\"", + "dataClassConverterOverloads": "Nessun overload di \"{funcName}\" è un convertitore valido per il campo \"{fieldName}\" di tipo \"{fieldType}\"", + "dataClassFieldWithDefault": "I campi senza valori predefiniti non possono essere visualizzati dopo i campi con valori predefiniti", + "dataClassFieldWithPrivateName": "Il campo dataclass non può usare un nome privato", + "dataClassFieldWithoutAnnotation": "Il campo dataclass senza annotazione del tipo causerà un'eccezione di runtime", + "dataClassPostInitParamCount": "Dataclass __post_init__ conteggio dei parametri non corretto; il numero di campi InitVar è {expected}", + "dataClassPostInitType": "Dataclass __post_init__ tipo di parametro del metodo non corrispondente per il campo \"{fieldName}\"", + "dataClassSlotsOverwrite": "__slots__ è già definito nella classe", + "dataClassTransformExpectedBoolLiteral": "Espressione prevista che restituisce in modo statico True o False", + "dataClassTransformFieldSpecifier": "È prevista una tupla di classi o funzioni ma è stato ricevuto il tipo \"{type}\"", + "dataClassTransformPositionalParam": "Tutti gli argomenti di \"dataclass_transform\" devono essere argomenti di parole chiave", + "dataClassTransformUnknownArgument": "Argomento \"{name}\" non supportato da dataclass_transform", + "declaredReturnTypePartiallyUnknown": "Il tipo restituito dichiarato \"{returnType}\" è parzialmente sconosciuto", + "declaredReturnTypeUnknown": "Il tipo restituito dichiarato è sconosciuto", + "defaultValueContainsCall": "Chiamate di funzione e oggetti modificabili non consentiti all'interno dell'espressione del valore predefinito del parametro", + "defaultValueNotAllowed": "Il parametro con \"*\" o \"**\" non può avere un valore predefinito", + "delTargetExpr": "Non è possibile eliminare l'espressione", + "deprecatedClass": "La classe \"{name}\" è deprecata", + "deprecatedConstructor": "Il costruttore per la classe \"{name}\" è deprecato", + "deprecatedFunction": "Questa funzione \"{name}\" è deprecata", + "deprecatedType": "Questo tipo è deprecato a partire da Python {version}; usa \"{replacement}\"", + "dictExpandIllegalInComprehension": "Espansione del dizionario non consentita nella comprensione", + "dictInAnnotation": "Espressione dizionario non consentita nell'annotazione di tipo", + "dictKeyValuePairs": "Le voci del dizionario devono contenere coppie chiave-valore", + "dictUnpackIsNotMapping": "Mapping previsto per l'operatore di decompressione del dizionario", + "dunderAllSymbolNotPresent": "\"{name}\" è specificato in __all__ ma non è presente nel modulo", + "duplicateArgsParam": "È consentito un solo parametro \"*\"", + "duplicateBaseClass": "Classe di base duplicata non consentita", + "duplicateCapturePatternTarget": "La destinazione di acquisizione \"{name}\" non può comparire più di una volta all'interno dello stesso schema", + "duplicateCatchAll": "È consentita una sola clausola catch-all tranne", + "duplicateEnumMember": "Il membro di enumerazione \"{name}\" è già dichiarato", + "duplicateGenericAndProtocolBase": "È consentita una sola classe di base Generic(...) o Protocol[...]", + "duplicateImport": "\"{importName}\" è stato importato più di una volta", + "duplicateKeywordOnly": "È consentito un solo separatore \"*\"", + "duplicateKwargsParam": "È consentito un solo parametro \"**\"", + "duplicateParam": "“{name}\" parametro duplicato", + "duplicatePositionOnly": "È consentito un solo parametro \"/\"", + "duplicateStarPattern": "In una sequenza di criteri è consentito un solo criterio \"*\"", + "duplicateStarStarPattern": "È consentita una sola voce \"**\"", + "duplicateUnpack": "Nell'elenco è consentita una sola operazione di decompressione", + "ellipsisContext": "\"...\" non consentito in questo contesto", + "ellipsisSecondArg": "\"...\" consentito solo come secondo di due argomenti", + "enumClassOverride": "La classe di enumerazione \"{name}\" è finale e non può essere sottoclassata", + "exceptionGroupIncompatible": "La sintassi del gruppo di eccezioni (\"except*\") richiede Python 3.11 o versione successiva", + "exceptionTypeIncorrect": "\"{type}\" non deriva da BaseException", + "exceptionTypeNotClass": "\"{type}\" non è una classe di eccezione valida", + "exceptionTypeNotInstantiable": "Il costruttore per il tipo di eccezione \"{type}\" richiede uno o più argomenti", + "expectedAfterDecorator": "Dichiarazione di funzione o classe prevista dopo l’elemento Decorator", + "expectedArrow": "Previsto \"->\" seguito da un'annotazione di tipo restituito", + "expectedAsAfterException": "Previsto \"as\" dopo il tipo di eccezione", + "expectedAssignRightHandExpr": "Espressione prevista a destra di \"=\"", + "expectedBinaryRightHandExpr": "Espressione prevista a destra dell'operatore", + "expectedBoolLiteral": "È previsto True o False", + "expectedCase": "Prevista istruzione \"case\"", + "expectedClassName": "Nome classe previsto", + "expectedCloseBrace": "\"{\" non è stato chiuso", + "expectedCloseBracket": "\"[\" non è stato chiuso", + "expectedCloseParen": "\"(\" non è stato chiuso", + "expectedColon": "Previsto \":\"", + "expectedComplexNumberLiteral": "È previsto un valore letterale di numero complesso per i criteri di ricerca", + "expectedDecoratorExpr": "Il modulo dell'espressione non è supportato per l'elemento Decorator precedente a Python 3.9", + "expectedDecoratorName": "È previsto un nome di elemento Decorator", + "expectedDecoratorNewline": "Prevista nuova riga alla fine dell'elemento Decorator", + "expectedDelExpr": "Espressione prevista dopo \"del\"", + "expectedElse": "Previsto \"else\"", + "expectedEquals": "Previsto \"=\"", + "expectedExceptionClass": "Classe od oggetto di eccezione non valido", + "expectedExceptionObj": "Previsto oggetto eccezione, classe eccezione o Nessuno", + "expectedExpr": "Espressione prevista", + "expectedFunctionAfterAsync": "Prevista definizione di funzione dopo \"async\"", + "expectedFunctionName": "È previsto un nome di funzione dopo \"def\"", + "expectedIdentifier": "Identificatore previsto", + "expectedImport": "Previsto \"import\"", + "expectedImportAlias": "Simbolo previsto dopo \"as\"", + "expectedImportSymbols": "Sono previsti uno o più nomi di simboli dopo l'importazione", + "expectedIn": "previsto 'in'", + "expectedInExpr": "Espressione prevista dopo \"in\"", + "expectedIndentedBlock": "Previsto un blocco rientrato", + "expectedMemberName": "È previsto un nome di membro dopo \".\"", + "expectedModuleName": "Nome del modulo previsto", + "expectedNameAfterAs": "È previsto il nome del simbolo dopo \"as\"", + "expectedNamedParameter": "Il parametro della parola chiave deve seguire \"*\"", + "expectedNewline": "Prevista nuova riga", + "expectedNewlineOrSemicolon": "Le istruzioni devono essere separate da nuove righe o punti e virgola", + "expectedOpenParen": "Previsto \"(\"", + "expectedParamName": "Nome del parametro previsto", + "expectedPatternExpr": "Espressione del criterio prevista", + "expectedPatternSubjectExpr": "Prevista espressione del soggetto del criterio", + "expectedPatternValue": "Espressione del valore del criterio prevista nel formato \"a.b\"", + "expectedReturnExpr": "Espressione prevista dopo \"return\"", + "expectedSliceIndex": "Prevista espressione di indice o sezione", + "expectedTypeNotString": "È previsto un tipo ma è stato ricevuto un valore letterale stringa", + "expectedTypeParameterName": "Nome del parametro del tipo previsto", + "expectedYieldExpr": "Espressione prevista nell'istruzione yield", + "finalClassIsAbstract": "La classe \"{type}\" è contrassegnata come finale e deve implementare tutti i metodi astratti", + "finalContext": "\"Final\" non consentito in questo contesto", + "finalMethodOverride": "Il metodo \"{name}\" non può eseguire l'override del metodo finale definito nella classe \"{className}\"", + "finalReassigned": "\"{name}\" è dichiarato come Finale e non può essere riassegnato", + "finalRedeclaration": "\"{name}\" è stato dichiarato in precedenza come Finale", + "finalRedeclarationBySubclass": "Non è possibile ridichiarare \"{name}\" perché la classe padre \"{className}\" la dichiara come Finale", + "finalTooManyArgs": "Previsto un singolo argomento tipo dopo \"Final\"", + "finalUnassigned": "\"{name}\" è dichiarato Final, ma il valore non è assegnato", + "formatStringBrace": "Parentesi graffa di chiusura singola non consentita all'interno del valore letterale f-string; usa parentesi graffa chiusa doppia", + "formatStringBytes": "I valori letterali stringa di formato (f-string) non possono essere binari", + "formatStringDebuggingIllegal": "L’identificatore di debug delle stringhe F \"=\" richiede Python 3.8 o versione successiva", + "formatStringEscape": "Sequenza di escape (barra rovesciata) non consentita nella porzione di espressione di f-string prima di Python 3.12", + "formatStringExpectedConversion": "È previsto un identificatore di conversione dopo \"!\" in f-string", + "formatStringIllegal": "I valori letterali stringa di formato (f-string) richiedono Python 3.6 o versione successiva", + "formatStringInPattern": "Stringa di formato non consentita nel criterio", + "formatStringNestedFormatSpecifier": "Espressioni annidate troppo in profondità nell'identificatore di stringa di formato", + "formatStringNestedQuote": "Le stringhe annidate all'interno di una stringa f non possono usare lo stesso carattere virgolette della stringa f prima di Python 3.12", + "formatStringUnicode": "I valori letterali stringa di formato (f-string) non possono essere unicode", + "formatStringUnterminated": "Espressione senza terminazione in f-string; previsto \"}\".", + "functionDecoratorTypeUnknown": "L'elemento Decorator della funzione non tipizzato nasconde il tipo di funzione; l'elemento Decorator verrà ignorato", + "functionInConditionalExpression": "L'espressione condizionale fa riferimento a una funzione che restituisce sempre True", + "functionTypeParametersIllegal": "La sintassi del parametro del tipo di funzione richiede Python 3.12 o versione successiva", + "futureImportLocationNotAllowed": "Le importazioni da __future__ devono trovarsi all'inizio del file", + "generatorAsyncReturnType": "Il tipo restituito della funzione del generatore asincrono deve essere compatibile con \"AsyncGenerator[{yieldType}, Any]\"", + "generatorNotParenthesized": "Le espressioni del generatore devono essere racchiuse tra parentesi se non è l'unico argomento", + "generatorSyncReturnType": "Il tipo restituito della funzione del generatore deve essere compatibile con \"Generator[{yieldType}, Any, Any]\"", + "genericBaseClassNotAllowed": "Non è possibile usare la classe di base \"Generic\" con la sintassi del parametro di tipo", + "genericClassAssigned": "Non è possibile assegnare il tipo di classe generico", + "genericClassDeleted": "Non è possibile eliminare il tipo di classe generico", + "genericNotAllowed": "\"Generic\" non valido in questo contesto", + "genericTypeAliasBoundTypeVar": "L'alias di tipo generico all'interno della classe non può usare variabili di tipo associate {names}", + "genericTypeArgMissing": "\"Generico\" richiede almeno un argomento di tipo", + "genericTypeArgTypeVar": "L'argomento di tipo per \"Generic\" deve essere una variabile di tipo", + "genericTypeArgUnique": "Gli argomenti di tipo per \"Generic\" devono essere univoci", + "globalReassignment": "\"{name}\" è assegnato prima della dichiarazione globale", + "globalRedefinition": "\"{name}\" è già stato dichiarato globale", + "implicitStringConcat": "Concatenazione implicita di stringhe non consentita", + "importCycleDetected": "Ciclo rilevato nella catena di importazione", + "importDepthExceeded": "La profondità della catena di importazione ha superato {depth}", + "importResolveFailure": "Non è stato possibile risolvere l'importazione \"{importName}\"", + "importSourceResolveFailure": "Non è stato possibile risolvere l'importazione \"{importName}\" dall’origine", + "importSymbolUnknown": "\"{name}\" è un simbolo di importazione sconosciuto", + "incompatibleMethodOverride": "Il metodo \"{name}\" esegue l'override della classe \"{className}\" in modo incompatibile", + "inconsistentIndent": "Il valore dell'annullamento del rientro non corrisponde al rientro precedente", + "inconsistentTabs": "Uso incoerente di tabulazioni e spazi nel rientro", + "initMustReturnNone": "Il tipo restituito di \"__init__\" deve essere None", + "initSubclassClsParam": "__init_subclass__ override deve accettare un parametro \"cls\"", + "instanceMethodSelfParam": "I metodi di istanza devono accettare un parametro \"self\"", + "instanceVarOverridesClassVar": "La variabile di istanza \"{name}\" esegue l'override della variabile di classe con lo stesso nome nella classe \"{className}\"", + "instantiateAbstract": "Non è possibile creare un'istanza di classe astratta \"{type}\"", + "instantiateProtocol": "Non è possibile creare un'istanza della classe di protocollo \"{type}\"", + "internalBindError": "Errore interno durante l'associazione del file \"{file}\": {message}", + "internalParseError": "Si è verificato un errore interno durante l'analisi del file \"{file}\": {message}", + "internalTypeCheckingError": "Errore interno durante il controllo del tipo del file \"{file}\": {message}", + "invalidIdentifierChar": "Carattere non valido nell'identificatore", + "invalidStubStatement": "L'istruzione non ha significato all'interno di un file stub di tipo", + "invalidTokenChars": "Carattere non valido \"{text}\" nel token", + "isInstanceInvalidType": "Il secondo argomento di \"isinstance\" deve essere una classe o una tupla di classi", + "isSubclassInvalidType": "Il secondo argomento di \"issubclass\" deve essere una classe o una tupla di classi", + "keyValueInSet": "Le coppie chiave-valore non sono consentite all'interno di un set", + "keywordArgInTypeArgument": "Gli argomenti delle parole chiave non possono essere usati negli elenchi di argomenti tipo", + "keywordOnlyAfterArgs": "Separatore di argomenti solo parola chiave non consentito dopo il parametro \"*\"", + "keywordParameterMissing": "Uno o più parametri di parole chiave devono seguire il parametro \"*\"", + "keywordSubscriptIllegal": "Gli argomenti delle parole chiave all'interno di pedici non sono supportati", + "lambdaReturnTypePartiallyUnknown": "Il tipo restituito dell'espressione lambda \"{returnType}\" è parzialmente sconosciuto", + "lambdaReturnTypeUnknown": "Il tipo restituito di lambda è sconosciuto", + "listAssignmentMismatch": "Non è possibile assegnare l'espressione con tipo \"{type}\" all'elenco di destinazione", + "listInAnnotation": "Espressione elenco non consentita nell'annotazione di tipo", + "literalEmptyArgs": "Previsto uno o più argomenti tipo dopo \"Valore letterale\"", + "literalNotCallable": "Non è possibile creare un'istanza del tipo letterale", + "literalUnsupportedType": "Gli argomenti di tipo per \"Literal\" devono essere None, un valore letterale (int, bool, str o bytes) o un valore di enumerazione", + "matchIncompatible": "Le istruzioni match richiedono Python 3.10 o versione successiva", + "matchIsNotExhaustive": "I case all'interno dell'istruzione match non gestiscono in modo completo tutti i valori", + "maxParseDepthExceeded": "È stata superata la profondità massima di analisi; suddividere l'espressione in sottoespressioni più piccole", + "memberAccess": "Non è possibile accedere al membro \"{name}\" per il tipo \"{type}\"", + "memberDelete": "Non è possibile eliminare il membro \"{name}\" per il tipo \"{type}\"", + "memberSet": "Non è possibile assegnare il membro \"{name}\" per il tipo \"{type}\"", + "metaclassConflict": "La metaclasse di una classe derivata deve essere una sottoclasse delle metaclassi di tutte le relative classi di base", + "metaclassDuplicate": "È possibile specificare una sola metaclasse", + "metaclassIsGeneric": "La metaclasse non può essere generica", + "methodNotDefined": "Metodo \"{name}\" non definito", + "methodNotDefinedOnType": "\"{name}\" metodo non definito nel tipo \"{type}\"", + "methodOrdering": "Non è possibile creare un ordinamento coerente del metodo", + "methodOverridden": "\"{name}\" esegue l'override del metodo con lo stesso nome nella classe \"{className}\" con un tipo non compatibile \"{type}\".", + "methodReturnsNonObject": "Il metodo \"{name}\" non restituisce un oggetto", + "missingProtocolMembers": "La classe deriva da una o più classi di protocollo ma non implementa tutti i membri obbligatori", + "missingSuperCall": "Il metodo \"{methodName}\" non chiama il metodo con lo stesso nome nella classe padre", + "moduleAsType": "Il modulo non può essere usato come tipo", + "moduleNotCallable": "Modulo non chiamabile", + "moduleUnknownMember": "\"{memberName}\" non è un membro noto del modulo \"{moduleName}\"", + "namedExceptAfterCatchAll": "Una clausola except denominata non può trovarsi dopo la clausola catch-all except", + "namedParamAfterParamSpecArgs": "Il parametro della parola chiave \"{name}\" non può essere visualizzato nella firma dopo il parametro ParamSpec args", + "namedTupleEmptyName": "I nomi all'interno di una tupla denominata non possono essere vuoti", + "namedTupleFirstArg": "Previsto nome della classe di tupla denominata come primo argomento", + "namedTupleMultipleInheritance": "L'ereditarietà multipla con NamedTuple non è supportata", + "namedTupleNameType": "Prevista tupla a due voci che specifica il nome e il tipo della voce", + "namedTupleNameUnique": "I nomi all'interno di una tupla denominata devono essere univoci", + "namedTupleNoTypes": "\"namedtuple\" non fornisce tipi per le voci di tupla; usare invece \"NamedTuple\"", + "namedTupleSecondArg": "È previsto un elenco di voci di tupla denominate come secondo argomento", + "newClsParam": "__new__ override deve accettare un parametro \"cls\"", + "newTypeBadName": "Il primo argomento di NewType deve essere un valore letterale stringa", + "newTypeLiteral": "Non è possibile usare NewType con il tipo Literal", + "newTypeNotAClass": "Classe prevista come secondo argomento di NewType", + "newTypeParamCount": "NewType richiede due argomenti posizionali", + "newTypeProtocolClass": "Impossibile utilizzare NewType con la classe di protocollo", + "noOverload": "Nessun overload per \"{name}\" corrisponde agli argomenti specificati", + "noReturnContainsReturn": "La funzione con tipo restituito dichiarato \"NoReturn\" non può includere un'istruzione return", + "noReturnContainsYield": "La funzione con il tipo restituito dichiarato \"NoReturn\" non può includere un'istruzione yield", + "noReturnReturnsNone": "La funzione con tipo dichiarato \"NoReturn\" non può restituire \"None\"", + "nonDefaultAfterDefault": "L'argomento non predefinito segue l'argomento predefinito", + "nonLocalInModule": "Dichiarazione non locale non consentita a livello di modulo", + "nonLocalNoBinding": "Non è stata trovata alcuna associazione per \"{name}\" non locale", + "nonLocalReassignment": "\"{name}\" è assegnato prima della dichiarazione non locale", + "nonLocalRedefinition": "\"{name}\" è già stato dichiarato non locale", + "noneNotCallable": "Non è possibile chiamare l'oggetto di tipo \"None\"", + "noneNotIterable": "Impossibile utilizzare l'oggetto di tipo \"None\" come valore iterabile", + "noneNotSubscriptable": "L'oggetto di tipo \"Nessuno\" non è sottoponibile a pedice", + "noneNotUsableWith": "Impossibile utilizzare l'oggetto di tipo \"None\" con \"with\"", + "noneOperator": "Operatore \"{operator}\" non supportato per \"None\"", + "noneUnknownMember": "\"{name}\" non è un membro noto di \"None\"", + "notRequiredArgCount": "Previsto un singolo argomento tipo dopo \"NotRequired\"", + "notRequiredNotInTypedDict": "\"NotRequired\" non è consentito in questo contesto", + "objectNotCallable": "L'oggetto di tipo \"{type}\" non è chiamabile", + "obscuredClassDeclaration": "La dichiarazione di classe \"{name}\" è oscurata da una dichiarazione con lo stesso nome", + "obscuredFunctionDeclaration": "La dichiarazione della funzione \"{name}\" è oscurata da una dichiarazione con lo stesso nome", + "obscuredMethodDeclaration": "La dichiarazione del metodo \"{name}\" è oscurata da una dichiarazione con lo stesso nome", + "obscuredParameterDeclaration": "La dichiarazione del parametro \"{name}\" è oscurata da una dichiarazione con lo stesso nome", + "obscuredTypeAliasDeclaration": "La dichiarazione dell'alias di tipo \"{name}\" è nascosta da una dichiarazione con lo stesso nome", + "obscuredVariableDeclaration": "La dichiarazione \"{name}\" è oscurata da una dichiarazione con lo stesso nome", + "operatorLessOrGreaterDeprecated": "L'operatore \"<>\" non è supportato in Python 3. Usare invece \"!=\"", + "optionalExtraArgs": "Previsto un argomento tipo dopo \"Facoltativo\"", + "orPatternIrrefutable": "Criterio inconfutabile consentito solo come ultimo criterio secondario in un criterio \"o\"", + "orPatternMissingName": "Tutti i criteri secondari all'interno di un criterio \"or\" devono avere come destinazione gli stessi nomi", + "overlappingOverload": "L'overload {obscured} per \"{name}\" non verrà mai usato perché i parametri si sovrappongono all'overload {obscuredBy}", + "overloadAbstractMismatch": "I metodi di overload devono essere tutti astratti o no", + "overloadImplementationMismatch": "L'implementazione di overload non è coerente con la firma dell'overload {index}", + "overloadReturnTypeMismatch": "L'overload {prevIndex} per \"{name}\" si sovrappone all'overload {newIndex} e restituisce un tipo incompatibile", + "overloadWithImplementation": "\"{name}\" è contrassegnato come overload, ma include un'implementazione", + "overloadWithoutImplementation": "\"{name}\" è contrassegnato come overload, ma non viene fornita alcuna implementazione", + "overriddenMethodNotFound": "Il metodo \"{name}\" è contrassegnato come override, ma non è presente alcun metodo di base con lo stesso nome", + "overrideDecoratorMissing": "Il metodo \"{name}\" non è contrassegnato come override, ma esegue l'override di un metodo nella classe \"{className}\"", + "paramAfterKwargsParam": "Il parametro non può seguire il parametro \"**\"", + "paramAlreadyAssigned": "Il parametro \"{name}\" è già assegnato", + "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}\"", + "paramSpecArgsKwargsUsage": "I membri \"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": "Il membro \"args\" di ParamSpec è valido solo se usato con il parametro *args", + "paramSpecAssignedName": "ParamSpec deve essere assegnato a una variabile denominata \"{name}\"", + "paramSpecContext": "ParamSpec non consentito in questo contesto", + "paramSpecDefaultNotTuple": "Sono previsti puntini di sospensione, un'espressione di tupla o ParamSpec per il valore predefinito di ParamSpec", + "paramSpecFirstArg": "Nome previsto di ParamSpec come primo argomento", + "paramSpecKwargsUsage": "Il membro \"kwargs\" di ParamSpec è valido solo se usato con il parametro **kwargs", + "paramSpecNotBound": "La specifica del parametro \"{type}\" non ha alcun valore associato", + "paramSpecNotUsedByOuterScope": "ParamSpec \"{name}\" non ha significato in questo contesto", + "paramSpecScopedToReturnType": "L’ambito ParamSpec \"{name}\" è un elemento richiamabile all'interno del tipo restituito e non può essere usato come riferimento nel corpo della funzione", + "paramSpecUnknownArg": "ParamSpec non supporta più di un argomento", + "paramSpecUnknownMember": "\"{name}\" non è un membro noto di ParamSpec", + "paramSpecUnknownParam": "\"{name}\" è un parametro sconosciuto per ParamSpec", + "paramTypeCovariant": "Non è possibile usare la variabile di tipo covariante nel tipo di parametro", + "paramTypePartiallyUnknown": "Tipo di parametro \"{paramName}\" parzialmente sconosciuto", + "paramTypeUnknown": "Tipo di parametro \"{paramName}\" sconosciuto", + "parenthesizedContextManagerIllegal": "Le parentesi all'interno dell'istruzione \"con\" richiedono Python 3.9 o versione successiva", + "patternNeverMatches": "Il criterio non verrà mai confrontato per il tipo di oggetto \"{type}\"", + "positionArgAfterNamedArg": "L'argomento posizionale non può essere visualizzato dopo gli argomenti della parola chiave", + "positionOnlyAfterArgs": "Separatore di argomenti di sola posizione non consentito dopo il parametro \"*\"", + "positionOnlyAfterKeywordOnly": "Il parametro \"/\" deve essere visualizzato prima del parametro \"*\"", + "positionOnlyFirstParam": "Separatore di argomenti di sola posizione non consentito come primo parametro", + "positionOnlyIncompatible": "Il separatore di argomenti di sola posizione richiede Python 3.8 o versione successiva", + "privateImportFromPyTypedModule": "\"{name}\" non è esportato dal modulo \"{module}\"", + "privateUsedOutsideOfClass": "\"{name}\" è privato e utilizzato all'esterno del modulo in cui è dichiarato", + "privateUsedOutsideOfModule": "\"{name}\" è privato e utilizzato all'esterno del modulo in cui è dichiarato", + "propertyOverridden": "\"{name}\" esegue erroneamente l’override di una proprietà con lo stesso nome nella classe \"{className}\"", + "propertyStaticMethod": "Metodi statici non consentiti per getter, setter o deleter di proprietà", + "protectedUsedOutsideOfClass": "\"{name}\" è protetto e usato al di fuori della classe in cui è dichiarato", + "protocolBaseClass": "La classe di protocollo \"{classType}\" non può derivare dalla classe non di protocollo \"{baseType}\".", + "protocolBaseClassWithTypeArgs": "Gli argomenti tipo non sono consentiti con la classe Protocollo quando si usa la sintassi dei parametri tipo", + "protocolIllegal": "L'uso del \"protocollo\" richiede Python 3.7 o versione successiva", + "protocolNotAllowedInTypeArgument": "Impossibile utilizzare \"Protocol\" come argomento di tipo", + "protocolUsedInCall": "Non è possibile usare la classe protocollo nella chiamata \"{name}\"", + "protocolVarianceContravariant": "La variabile di tipo \"{variable}\" usata nel protocollo generico \"{class}\" deve essere controvariante", + "protocolVarianceCovariant": "La variabile di tipo \"{variable}\" usata nel protocollo generico \"{class}\" deve essere covariante", + "protocolVarianceInvariant": "La variabile di tipo \"{variable}\" usata nel protocollo generico \"{class}\" deve essere invariabile", + "pyrightCommentInvalidDiagnosticBoolValue": "La direttiva di commento Pyright deve essere seguita da \"=\" e da un valore true o false", + "pyrightCommentInvalidDiagnosticSeverityValue": "La direttiva di commento Pyright deve essere seguita da \"=\" e da un valore true, false, error, warning, information o none", + "pyrightCommentMissingDirective": "Il commento pyright deve essere seguito da una direttiva (di base o restrittiva) o da una regola di diagnostica", + "pyrightCommentNotOnOwnLine": "I commenti Pyright usati per controllare le impostazioni a livello di file devono essere visualizzati nella propria riga", + "pyrightCommentUnknownDiagnosticRule": "\"{rule}\" è una regola di diagnostica sconosciuta per il commento pyright", + "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\" non è un valore valido per il commento pyright; previsto true, false, error, warning, information o none", + "pyrightCommentUnknownDirective": "\"{directive}\" è una direttiva sconosciuta per il commento pyright; previsto \"strict\" o \"basic\"", + "readOnlyArgCount": "Previsto un singolo argomento tipo dopo \"ReadOnly\"", + "readOnlyNotInTypedDict": "\"ReadOnly\" non consentito in questo contesto", + "recursiveDefinition": "Non è stato possibile determinare il tipo di \"{name}\" perché fa riferimento a se stesso", + "relativeImportNotAllowed": "Le importazioni relative non possono essere usate con il modulo \"import .a\". Usare invece \"from . import a\"", + "requiredArgCount": "Previsto un singolo argomento tipo dopo \"Obbligatorio\"", + "requiredNotInTypedDict": "\"Required\" non è consentito in questo contesto", + "returnInAsyncGenerator": "L’istruzione return con valore non è consentita nel generatore asincrono", + "returnMissing": "La funzione con tipo dichiarato \"{returnType}\" deve restituire un valore in tutti i percorsi di codice", + "returnOutsideFunction": "\"return\" può essere usata solo all'interno di una funzione.", + "returnTypeContravariant": "Non è possibile usare la variabile di tipo controvariante nel tipo restituito", + "returnTypeMismatch": "Non è possibile assegnare l'espressione di tipo \"{exprType}\" al tipo restituito \"{returnType}\"", + "returnTypePartiallyUnknown": "Il tipo restituito \"{returnType}\" è parzialmente sconosciuto", + "returnTypeUnknown": "Il tipo restituito è sconosciuto", + "revealLocalsArgs": "Non è previsto alcun argomento per la chiamata \"reveal_locals\"", + "revealLocalsNone": "Non sono presenti variabili locali in questo ambito", + "revealTypeArgs": "Previsto un singolo argomento posizionale per la chiamata \"reveal_type\"", + "revealTypeExpectedTextArg": "L'argomento \"expected_text\" per la funzione \"reveal_type\" deve essere un valore letterale str", + "revealTypeExpectedTextMismatch": "Testo di tipo non corrispondente; previsto \"{expected}\" ma ricevuto \"{received}\"", + "revealTypeExpectedTypeMismatch": "Tipo non corrispondente; previsto \"{expected}\" ma ricevuto \"{received}\"", + "selfTypeContext": "\"Self\" non è valido in questo contesto", + "selfTypeWithTypedSelfOrCls": "Non è possibile usare \"Self\" in una funzione con un parametro 'self' o 'cls' con un'annotazione di tipo diversa da \"Self\"", + "setterGetterTypeMismatch": "Il tipo di valore del setter di proprietà non è assegnabile al tipo restituito del getter", + "singleOverload": "\"{name}\" è contrassegnato come overload, ma mancano altri overload", + "slotsAttributeError": "\"{name}\" non è specificato in __slots__", + "slotsClassVarConflict": "\"{name}\" è in conflitto con la variabile di istanza dichiarata in __slots__", + "starPatternInAsPattern": "Il modello a stella non può essere usato con la destinazione \"as\"", + "starPatternInOrPattern": "Il modello a stella non può essere ORed all'interno di altri modelli", + "starStarWildcardNotAllowed": "** non può essere usato con il carattere jolly \"_\"", + "staticClsSelfParam": "I metodi statici non devono accettare un parametro \"self\" o \"cls\"", + "stdlibModuleOverridden": "\"{path}\" sta eseguendo l'override del modulo stdlib \"{name}\"", + "strictTypeGuardReturnType": "Il tipo restituito di StrictTypeGuard (\"{returnType}\") non è assegnabile al tipo di parametro di valore (\"{type}\")", + "stringNonAsciiBytes": "Carattere non ASCII non consentito nel valore letterale stringa dei byte", + "stringNotSubscriptable": "L'espressione stringa non può essere in pedice nell'annotazione di tipo. Racchiudere l'intera annotazione tra virgolette", + "stringUnsupportedEscape": "Sequenza di escape non supportata nel valore letterale stringa", + "stringUnterminated": "Il valore letterale stringa non è terminato", + "stubFileMissing": "File di stub non trovato per \"{importName}\"", + "stubUsesGetAttr": "Il file dello stub di tipo è incompleto; \"__getattr__\" nasconde gli errori di tipo per il modulo", + "sublistParamsIncompatible": "I parametri dell’elenco secondario non sono supportati in Python 3.x", + "superCallArgCount": "Non sono previsti più di due argomenti per la chiamata \"super\".", + "superCallFirstArg": "È previsto un tipo di classe come primo argomento della chiamata \"super\", ma è stato ricevuto \"{type}\"", + "superCallSecondArg": "Il secondo argomento della chiamata \"super\" deve essere un oggetto o una classe che deriva da \"{type}\"", + "superCallZeroArgForm": "La forma dell'argomento zero della chiamata \"super\" è valida solo all'interno di una classe", + "symbolIsPossiblyUnbound": "\"{name}\" potrebbe non essere associato", + "symbolIsUnbound": "\"{name}\" non associato", + "symbolIsUndefined": "\"{name}\" non è definito", + "symbolOverridden": "\"{name}\" esegue l'override del simbolo con lo stesso nome nella classe \"{className}\"", + "totalOrderingMissingMethod": "La classe deve definire uno dei valori di \"__lt__\", \"__le__\", \"__gt__\" o \"__ge__\" per usare total_ordering", + "trailingCommaInFromImport": "Virgola finale non consentita senza parentesi circostanti", + "tryWithoutExcept": "L'istruzione Try deve contenere almeno una clausola except or finally", + "tupleAssignmentMismatch": "Non è possibile assegnare l'espressione con tipo \"{type}\" alla tupla di destinazione", + "tupleInAnnotation": "Espressione di tupla non consentita nell'annotazione di tipo", + "tupleIndexOutOfRange": "L'indice {index} non è compreso nell'intervallo per il tipo {type}", + "typeAliasIllegalExpressionForm": "Modulo di espressione non valido per la definizione dell'alias di tipo", + "typeAliasIsRecursiveDirect": "L'alias di tipo \"{name}\" non può usare se stesso nella relativa definizione", + "typeAliasNotInModuleOrClass": "TypeAlias può essere definito solo all'interno di un modulo o di una classe", + "typeAliasRedeclared": "\"{name}\" è dichiarato come TypeAlias e può essere assegnato una sola volta", + "typeAliasStatementIllegal": "L'istruzione alias di tipo richiede Python 3.12 o versione successiva", + "typeAliasTypeMustBeAssigned": "TypeAliasType deve essere assegnato a una variabile con lo stesso nome dell'alias di tipo", + "typeAliasTypeNameArg": "Il primo argomento di TypeAliasType deve essere un valore letterale stringa che rappresenta il nome dell'alias di tipo", + "typeAliasTypeNameMismatch": "Il nome dell'alias di tipo deve corrispondere al nome della variabile a cui è assegnato", + "typeAliasTypeParamInvalid": "L'elenco dei parametri del tipo deve essere una tupla contenente solo TypeVar, TypeVarTuple o ParamSpec.", + "typeAnnotationCall": "Annotazione di tipo non valida: espressione di chiamata non consentita", + "typeAnnotationVariable": "Annotazione di tipo non valida: variabile non consentita a meno che non sia un alias di tipo", + "typeArgListExpected": "Previsto ParamSpec, puntini di sospensione o elenco di tipi", + "typeArgListNotAllowed": "Espressione di elenco non consentita per questo argomento tipo", + "typeArgsExpectingNone": "Non sono previsti argomenti di tipo per la classe \"{name}\"", + "typeArgsMismatchOne": "Previsto un argomento di tipo, ricevuto {received}", + "typeArgsMissingForAlias": "Sono previsti argomenti di tipo per l'alias di tipo generico \"{name}\"", + "typeArgsMissingForClass": "Argomenti tipo previsti per la classe generica \"{name}\"", + "typeArgsTooFew": "Troppo pochi argomenti tipo forniti per \"{name}\"; previsto {expected} ma ricevuto {received}", + "typeArgsTooMany": "Troppi argomenti tipo forniti per \"{name}\"; previsto {expected} ma ricevuto {received}", + "typeAssignmentMismatch": "Impossibile assegnare l'espressione di tipo \"{sourceType}\" al tipo dichiarato \"{destType}\"", + "typeCallNotAllowed": "la chiamata type() non deve essere usata nell'annotazione di tipo", + "typeCommentDeprecated": "L'uso dei commenti di tipo è deprecato. Usare l'annotazione di tipo", + "typeExpectedClass": "È prevista un'espressione di tipo ma è stato ricevuto \"{type}\"", + "typeGuardArgCount": "È previsto un singolo argomento di tipo dopo \"TypeGuard\"", + "typeGuardParamCount": "Le funzioni e i metodi di protezione dei tipi definiti dall'utente devono avere almeno un parametro di input", + "typeNotAwaitable": "\"{type}\" non è awaitable", + "typeNotCallable": "\"{expression}\" è di tipo \"{type}\" e non è richiamabile", + "typeNotIntantiable": "Non è possibile creare un'istanza di \"{type}\"", + "typeNotIterable": "\"{type}\" non è iterabile", + "typeNotSpecializable": "Non è stato possibile specializzare il tipo \"{type}\"", + "typeNotSubscriptable": "L'oggetto di tipo \"{type}\" non è sottoponibile a script", + "typeNotSupportBinaryOperator": "L'operatore \"{operator}\" non è supportato per i tipi \"{leftType}\" e \"{rightType}\".", + "typeNotSupportBinaryOperatorBidirectional": "L'operatore \"{operator}\" non è supportato per i tipi \"{leftType}\" e \"{rightType}\" quando il tipo previsto è \"{expectedType}\"", + "typeNotSupportUnaryOperator": "Operatore \"{operator}\" non supportato per il tipo \"{type}\"", + "typeNotSupportUnaryOperatorBidirectional": "L'operatore \"{operator}\" non è supportato per il tipo \"{type}\" quando il tipo previsto è \"{expectedType}\"", + "typeNotUsableWith": "Impossibile utilizzare l'oggetto di tipo \"{type}\" con \"with\" perché non implementa {method}", + "typeParameterBoundNotAllowed": "Il vincolo o il binding non possono essere usati con un parametro di tipo variadic o ParamSpec", + "typeParameterConstraintTuple": "Il vincolo del parametro di tipo deve essere una tupla di due o più tipi", + "typeParameterExistingTypeParameter": "Il parametro di tipo \"{name}\" è già in uso", + "typeParameterNotDeclared": "Il parametro di tipo \"{name}\" non è incluso nell'elenco dei parametri di tipo per \"{container}\"", + "typeParametersMissing": "È necessario specificare almeno un parametro di tipo", + "typePartiallyUnknown": "Tipo di \"{name}\" parzialmente sconosciuto", + "typeUnknown": "Il tipo di \"{name}\" è sconosciuto", + "typeVarAssignedName": "TypeVar deve essere assegnato a una variabile denominata \"{name}\"", + "typeVarAssignmentMismatch": "Non è possibile assegnare il tipo \"{type}\" alla variabile di tipo \"{name}\"", + "typeVarBoundAndConstrained": "TypeVar non può essere contemporaneamente associato e vincolato", + "typeVarBoundGeneric": "Il tipo associato a TypeVar non può essere generico", + "typeVarConstraintGeneric": "Il tipo di vincolo TypeVar non può essere generico", + "typeVarDefaultBoundMismatch": "Il tipo predefinito TypeVar deve essere un sottotipo del tipo associato", + "typeVarDefaultConstraintMismatch": "Il tipo predefinito TypeVar deve essere uno dei tipi vincolati", + "typeVarDefaultIllegal": "I tipi predefiniti delle variabili di tipo richiedono Python 3.13 o versione successiva", + "typeVarDefaultInvalidTypeVar": "Il parametro di tipo \"{name}\" ha un tipo predefinito che fa riferimento a una o più variabili di tipo non compreso nell'ambito", + "typeVarFirstArg": "Nome previsto di TypeVar come primo argomento", + "typeVarNoMember": "TypeVar \"{type}\" non ha membri \"{name}\"", + "typeVarNotSubscriptable": "TypeVar \"{type}\" non sottoponibile a script", + "typeVarNotUsedByOuterScope": "La variabile di tipo \"{name}\" non ha significato in questo contesto", + "typeVarPossiblyUnsolvable": "La variabile di tipo \"{name}\" potrebbe non essere risolta se il chiamante non fornisce alcun argomento per il parametro \"{param}\"", + "typeVarScopedToReturnType": "La variabile di tipo \"{name}\" ha come ambito un elemento richiamabile all'interno del tipo restituito e non può essere usato come riferimento nel corpo della funzione", + "typeVarSingleConstraint": "TypeVar deve contenere almeno due tipi vincolati", + "typeVarTupleContext": "TypeVarTuple non consentito in questo contesto", + "typeVarTupleDefaultNotUnpacked": "Il tipo predefinito TypeVarTuple deve essere una tupla non compressa o TypeVarTuple", + "typeVarTupleMustBeUnpacked": "L'operatore Decomprimi è obbligatorio per il valore TypeVarTuple", + "typeVarTupleUnknownParam": "\"{name}\" è un parametro sconosciuto per TypeVar", + "typeVarUnknownParam": "\"{name}\" è un parametro sconosciuto per TypeVar", + "typeVarUsedByOuterScope": "TypeVar \"{name}\" già in uso da un ambito esterno", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" viene visualizzato una sola volta nella firma della funzione generica", + "typeVarVariance": "TypeVar non può essere covariante e controvariante", + "typeVarWithoutDefault": "\"{name}\" non può essere visualizzato dopo \"{other}\" nell'elenco dei parametri del tipo, perché non ha un tipo predefinito", + "typeVarsNotInGenericOrProtocol": "Generic[] o Protocol[] deve includere tutte le variabili di tipo", + "typedDictAccess": "Non è stato possibile accedere all'elemento in TypedDict", + "typedDictBadVar": "Le classi TypedDict possono contenere solo annotazioni di tipo", + "typedDictBaseClass": "Anche tutte le classi di base per le classi TypedDict devono essere classi TypedDict", + "typedDictBoolParam": "È previsto che il parametro \"{name}\" abbia il valore True o False", + "typedDictDelete": "Non è stato possibile eliminare l'elemento in TypedDict", + "typedDictEmptyName": "I nomi all'interno di un TypedDict non possono essere vuoti", + "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", + "typedDictFieldReadOnlyRedefinition": "Non è possibile ridefinire il campo TypedDict \"{name}\" come di sola lettura", + "typedDictFieldTypeRedefinition": "Impossibile ridefinire il tipo di campo TypedDict \"{name}\"", + "typedDictFirstArg": "È previsto il nome della classe TypedDict come primo argomento", + "typedDictSecondArgDict": "Previsto parametro dict o keyword come secondo parametro", + "typedDictSecondArgDictEntry": "Voce di dizionario semplice prevista", + "typedDictSet": "Non è stato possibile assegnare l'elemento in TypedDict", + "unaccessedClass": "La classe \"{name}\" non è accessibile", + "unaccessedFunction": "La classe \"{name}\" non è accessibile", + "unaccessedImport": "Non è possibile accedere all'importazione \"{name}\"", + "unaccessedSymbol": "Non è possibile accedere a \"{name}\"", + "unaccessedVariable": "La variabile \"{name}\" non è accessibile", + "unannotatedFunctionSkipped": "L'analisi della funzione \"{name}\" è stata ignorata perché non è annotata", + "unexpectedAsyncToken": "È previsto che \"def\", \"with\" o \"for\" seguano \"async\"", + "unexpectedExprToken": "Token imprevisto alla fine dell'espressione", + "unexpectedIndent": "Rientro imprevisto", + "unexpectedUnindent": "Riduci rientro non previsto", + "unhashableDictKey": "La chiave del dizionario deve essere hashable", + "unhashableSetEntry": "La voce set deve essere hashable", + "uninitializedAbstractVariables": "Le variabili definite nella classe di base astratta non vengono inizializzate nella classe finale \"{classType}\"", + "uninitializedInstanceVariable": "La variabile di istanza \"{name}\" non è inizializzata nel corpo della classe o nel metodo __init__", + "unionForwardReferenceNotAllowed": "Impossibile utilizzare la sintassi di unione con l'operando stringa. Usare virgolette intorno all'intera espressione", + "unionSyntaxIllegal": "La sintassi alternativa per le unioni richiede Python 3.10 o versione successiva", + "unionTypeArgCount": "L'unione richiede due o più argomenti di tipo", + "unmatchedEndregionComment": "#endregion #region corrispondente mancante", + "unmatchedRegionComment": "#region #endregion corrispondente mancante", + "unnecessaryCast": "Chiamata \"cast\" non necessaria; il tipo è già \"{type}\"", + "unnecessaryIsInstanceAlways": "Chiamata isinstance non necessaria; \"{testType}\" è sempre un'istanza di \"{classType}\"", + "unnecessaryIsSubclassAlways": "Chiamata issubclass non necessaria; \"{testType}\" è sempre una sottoclasse di \"{classType}\"", + "unnecessaryPyrightIgnore": "Commento \"# pyright: ignore\" non necessario", + "unnecessaryPyrightIgnoreRule": "Regola \"# pyright: ignore\" non necessaria: \"{name}\"", + "unnecessaryTypeIgnore": "Commento \"# tipo: ignora\" non necessario", + "unpackArgCount": "Previsto un singolo argomento tipo dopo \"Decomprimi\"", + "unpackExpectedTypeVarTuple": "È previsto TypeVarTuple o Tuple come argomento di tipo per Unpack", + "unpackExpectedTypedDict": "Previsto argomento di tipo TypedDict per Decomprimi", + "unpackIllegalInComprehension": "Operazione di decompressione non consentita nella comprensione", + "unpackInAnnotation": "Operatore di decompressione non consentito nell'annotazione di tipo", + "unpackInDict": "Operazione di decompressione non consentita nei dizionari", + "unpackInSet": "Operatore di decompressione non consentito all’interno di un set", + "unpackNotAllowed": "Decompressione non consentita in questo contesto", + "unpackOperatorNotAllowed": "Operazione di decompressione non consentita in questo contesto", + "unpackTuplesIllegal": "L'operazione di decompressione non è consentita nelle tuple precedenti a Python 3.8", + "unpackedArgInTypeArgument": "Gli argomenti non compressi non possono essere usati negli elenchi di argomenti tipo", + "unpackedArgWithVariadicParam": "Non è possibile usare l'argomento decompresso per il parametro TypeVarTuple", + "unpackedDictArgumentNotMapping": "L'espressione dell'argomento dopo ** deve essere un mapping con un tipo di chiave \"str\"", + "unpackedDictSubscriptIllegal": "L'operatore di decompressione del dizionario nel pedice non è consentito", + "unpackedSubscriptIllegal": "L'operatore di decompressione nel pedice richiede Python 3.11 o versione successiva", + "unpackedTypeVarTupleExpected": "Previsto TypeVarTuple decompresso; usa Unpack[{name1}] o *{name2}", + "unpackedTypedDictArgument": "Impossibile trovare una corrispondenza tra l'argomento TypedDict non compresso e i parametri", + "unreachableCode": "Il codice non è raggiungibile", + "unreachableExcept": "La clausola Except non è raggiungibile perché l'eccezione è già gestita", + "unsupportedDunderAllOperation": "L'operazione su \"__all__\" non è supportata, di conseguenza l'elenco dei simboli esportati potrebbe non essere corretto", + "unusedCallResult": "Il risultato dell'espressione di chiamata è di tipo \"{type}\" e non è usato. Assegnare alla variabile \"_\" se è intenzionale", + "unusedCoroutine": "Il risultato della chiamata di funzione asincrona non viene usato. usare \"await\" o assegnare il risultato alla variabile", + "unusedExpression": "Il valore dell'espressione non è utilizzato", + "varAnnotationIllegal": "Le annotazioni di tipo per le variabili richiedono Python 3.6 o versione successiva. Usare il commento di tipo per compatibilità con le versioni precedenti", + "variableFinalOverride": "La variabile \"{name}\" è contrassegnata come Final ed esegue l'override della variabile non Final con lo stesso nome nella classe \"{className}\"", + "variadicTypeArgsTooMany": "L'elenco di argomenti di tipo può contenere al massimo una tupla o TypeVarTuple non compressa", + "variadicTypeParamTooManyAlias": "L'alias di tipo può avere al massimo un parametro di tipo TypeVarTuple, ma ne ha ricevuti più ({names})", + "variadicTypeParamTooManyClass": "La classe generica può avere al massimo un parametro di tipo TypeVarTuple, ma ne ha ricevuti più ({names})", + "walrusIllegal": "L'operatore \":=\" richiede Python 3.8 o versione successiva", + "walrusNotAllowed": "L'operatore \":=\" non è consentito in questo contesto senza parentesi circostanti", + "wildcardInFunction": "Importazione di caratteri jolly non consentita all'interno di una classe o di una funzione", + "wildcardLibraryImport": "Importazione di caratteri jolly da una libreria non consentita", + "wildcardPatternTypePartiallyUnknown": "Il tipo acquisito dal modello con caratteri jolly è parzialmente sconosciuto", + "wildcardPatternTypeUnknown": "Il tipo acquisito dal criterio con caratteri jolly è sconosciuto", + "yieldFromIllegal": "L'uso di \"yield from\" richiede Python 3.3 o versione successiva", + "yieldFromOutsideAsync": "\"yield from\" non consentito in una funzione asincrona", + "yieldOutsideFunction": "\"yield\" non consentito all'esterno di una funzione o di un'espressione lambda", + "yieldWithinListCompr": "\"yield\" non consentito all'interno di una comprensione di elenco", + "zeroCaseStatementsFound": "L’istruzione Match deve includere almeno un’istruzione case", + "zeroLengthTupleNotAllowed": "Tupla di lunghezza zero non consentita in questo contesto" + }, + "DiagnosticAddendum": { + "argParam": "L'argomento corrisponde al parametro \"{paramName}\"", + "argParamFunction": "L'argomento corrisponde al parametro \"{paramName}\" nella funzione \"{functionName}\"", + "argsParamMissing": "Il parametro \"*{paramName}\" non ha un parametro corrispondente", + "argsPositionOnly": "Parametro di sola posizione non corrispondente; previsto {expected} ma ricevuto {received}", + "argumentType": "Il tipo di argomento è \"{type}\"", + "argumentTypes": "Tipi di argomento: ({types})", + "assignToNone": "Non è possibile assegnare il tipo al tipo \"None\"", + "asyncHelp": "Intendevi \"async con\"?", + "baseClassOverriddenType": "La classe di base \"{baseClass}\" fornisce il tipo \"{type}\", di cui viene eseguito l'override", + "baseClassOverridesType": "Override della classe base \"{baseClass}\" con tipo \"{type}\"", + "conditionalRequiresBool": "Il metodo __bool__ per il tipo \"{operandType}\" restituisce il tipo \"{boolReturnType}\" anziché \"bool\"", + "dataClassFieldLocation": "Dichiarazione di campo", + "dataClassFrozen": "\"{name}\" è bloccato", + "finalMethod": "Metodo finale", + "functionParamDefaultMissing": "Nel parametro \"{name}\" manca un argomento predefinito", + "functionParamName": "Nome del parametro non corrispondente: \"{destName}\" rispetto a \"{srcName}\"", + "functionReturnTypeMismatch": "Il tipo restituito della funzione\"{sourceType}\" non è compatibile con il tipo \"{destType}\"", + "functionTooFewParams": "La funzione accetta un numero insufficiente di parametri posizionale. Previsto {expected} ma ricevuto {received}", + "functionTooManyParams": "La funzione accetta un numero eccessivo di parametri posizionale. Previsto {expected} ma ricevuto {received}", + "incompatibleDeleter": "Il metodo di eliminazione delle proprietà non è compatibile", + "incompatibleGetter": "Il metodo getter della proprietà non è compatibile", + "incompatibleSetter": "Il metodo setter di proprietà non è compatibile", + "initMethodLocation": "Il metodo __init__ è definito nella classe \"{type}\"", + "initMethodSignature": "Firma del __init__ \"{type}\"", + "keyNotRequired": "\"{name}\" non è una chiave obbligatoria in \"{type}\", quindi l'accesso potrebbe causare un'eccezione di runtime", + "keyReadOnly": "\"{name}\" è una chiave di sola lettura in \"{type}\"", + "keyRequiredDeleted": "\"{name}\" è una chiave obbligatoria e non può essere eliminata", + "keyUndefined": "\"{name}\" non è una chiave definita in \"{type}\"", + "kwargsParamMissing": "Il parametro \"**{paramName}\" non ha un parametro corrispondente", + "listAssignmentMismatch": "Il tipo \"{type}\" non è compatibile con l'elenco di destinazione", + "literalAssignmentMismatch": "impossibile assegnare \"{sourceType}\" al tipo \"{destType}\"", + "matchIsNotExhaustiveHint": "Se la gestione completa non è prevista, aggiungere \"case _: pass\"", + "matchIsNotExhaustiveType": "Tipo non gestito: \"{type}\"", + "memberAssignment": "L'espressione di tipo \"{type}\" non può essere assegnata al membro \"{name}\" della classe \"{classType}\".", + "memberIsAbstract": "\"{type}.{name}\" è astratto", + "memberIsAbstractMore": "e {{count}} altro...", + "memberIsFinalInProtocol": "\"{name}\" è contrassegnato come Finale nel protocollo", + "memberIsInitVar": "Il membro \"{name}\" è un campo solo init", + "memberIsInvariant": "\"{name}\" è invariante perché modificabile", + "memberIsNotFinalInProtocol": "\"{name}\" non è contrassegnato come Finale nel protocollo", + "memberSetClassVar": "Non è possibile assegnare il membro \"{name}\" tramite un'istanza di classe perché è una ClassVar", + "memberTypeMismatch": "\"{name}\" è un tipo non compatibile", + "memberUnknown": "Il membro \"{name}\" è sconosciuto", + "missingDeleter": "Manca il metodo di eliminazione delle proprietà", + "missingGetter": "Metodo getter proprietà mancante", + "missingProtocolMember": "Il \"{name}\" membro è dichiarato nella classe di protocollo \"{classType}\"", + "missingSetter": "Metodo setter proprietà mancante", + "namedParamMissingInDest": "Il parametro della parola chiave \"{name}\" non è presente nella destinazione", + "namedParamMissingInSource": "Parametro della parola chiave \"{name}\" mancante nell’origine", + "namedParamTypeMismatch": "Non è possibile assegnare il parametro di parola chiave \"{name}\" di tipo \"{sourceType}\" al tipo \"{destType}\"", + "newMethodLocation": "Il metodo __new__ è definito nella classe \"{type}\"", + "newMethodSignature": "La firma del __new__ è \"{type}\"", + "noOverloadAssignable": "Nessuna funzione di overload corrisponde al tipo \"{type}\"", + "orPatternMissingName": "Nomi mancanti: {name}", + "overloadNotAssignable": "Uno o più overload di \"{name}\" non sono assegnabili", + "overloadSignature": "La firma di overload è definita qui", + "overloadWithImplementation": "Il corpo di un overload di funzione deve essere \"...\"", + "overriddenMethod": "Metodo sottoposto a override", + "overriddenSymbol": "Simbolo sottoposto a override", + "overrideNoOverloadMatches": "Nessuna firma di overload nell'override è compatibile con il metodo di base", + "overrideNotClassMethod": "Il metodo di base è dichiarato come metodo di classe, ma l'override non è", + "overrideNotInstanceMethod": "Il metodo di base è dichiarato come metodo di istanza, ma l’override non lo è", + "overrideNotStaticMethod": "Il metodo di base è dichiarato come metodo statico, ma l'override non è", + "overrideOverloadNoMatch": "L’overload {index} non è compatibile con il metodo di base", + "overrideOverloadOrder": "Gli overload per il metodo di override devono essere nello stesso ordine del metodo di base", + "overrideParamKeywordNoDefault": "Parametro della parola chiave \"{name}\" non corrispondente: il parametro di base ha un valore di argomento predefinito, il parametro di override non è", + "overrideParamKeywordType": "Tipo del parametro della parola chiave \"{name}\" non corrispondente: il parametro di base è di tipo \"{baseType}\", il parametro di override è di tipo \"{overrideType}\"", + "overrideParamName": "Nome del parametro {index} non corrispondente: il parametro di base è denominato \"{baseName}\", il parametro di override è denominato \"{overrideName}\"", + "overrideParamNameExtra": "Parametro \"{name}\" mancante nella base", + "overrideParamNameMissing": "Parametro \"{name}\" mancante nell'override", + "overrideParamNamePositionOnly": "Nome del parametro {index} non corrispondente: il parametro di base è denominato \"{baseName}\", il parametro di override è denominato di sola posizione\"", + "overrideParamNoDefault": "Parametro \"{name}\" non corrispondente: il parametro di base ha un valore di argomento predefinito, il parametro di override non è", + "overrideParamType": "Tipo di parametro {index} non corrispondente: il parametro di base è di tipo \"{baseType}\", il parametro di override è di tipo \"{overrideType}\"", + "overridePositionalParamCount": "Numero di parametri posizionali non corrispondente. Il metodo di base ne ha {baseCount}, ma l'override ne ha {overrideCount}", + "overrideReturnType": "Tipo restituito non corrispondente: il metodo di base restituisce il tipo \"{baseType}\", l'override restituisce il tipo \"{overrideType}\"", + "overrideType": "La classe di base definisce il tipo come \"{type}\"", + "paramAssignment": "Impossibile assegnare il parametro {index}: il tipo \"{sourceType}\" al tipo \"{destType}\"", + "paramSpecMissingInOverride": "Parametri ParamSpec mancanti nel metodo di override", + "paramType": "Tipo di parametro \"{paramType}\"", + "privateImportFromPyTypedSource": "Importa da \"{module}\"", + "propertyAccessFromProtocolClass": "Non è possibile accedere a una proprietà definita all'interno di una classe di protocollo come variabile di classe", + "propertyMethodIncompatible": "Il metodo di proprietà \"{name}\" non è compatibile", + "propertyMethodMissing": "Metodo di proprietà \"{name}\" mancante nell'override", + "propertyMissingDeleter": "La proprietà \"{name}\" non ha un deleter definito", + "propertyMissingSetter": "La proprietà \"{name}\" non ha un setter definito", + "protocolIncompatible": "\"{sourceType}\" non è compatibile con il protocollo \"{destType}\"", + "protocolMemberClassVar": "\"{name}\" non è una variabile di classe", + "protocolMemberMissing": "\"{name}\" non è presente", + "protocolSourceIsNotConcrete": "\"{sourceType}\" non è un tipo di classe concreto e non può essere assegnato al tipo \"{destType}\"", + "pyrightCommentIgnoreTip": "Usare \"# pyright: ignore[] per eliminare la diagnostica per una singola riga", + "readOnlyAttribute": "L'attributo \"{name}\" è di sola lettura", + "seeClassDeclaration": "Vedere la dichiarazione di classe", + "seeDeclaration": "Vedere la dichiarazione", + "seeFunctionDeclaration": "Vedere la dichiarazione di funzione", + "seeMethodDeclaration": "Vedere la dichiarazione del metodo", + "seeParameterDeclaration": "Vedere la dichiarazione del parametro", + "seeTypeAliasDeclaration": "Vedere la dichiarazione di alias di tipo", + "seeVariableDeclaration": "Vedere la dichiarazione di variabile", + "tupleAssignmentMismatch": "Il tipo \"{type}\" non è compatibile con la tupla di destinazione", + "tupleEntryTypeMismatch": "Il tipo della voce di tupla {entry} non è corretto", + "tupleSizeMismatch": "Dimensioni dell'elemento non corrispondenti; previsto {expected} ma ricevuto {received}", + "typeAssignmentMismatch": "impossibile assegnare il tipo \"{sourceType}\" al tipo \"{destType}\"", + "typeBound": "Il tipo \"{sourceType}\" non è compatibile con il tipo associato \"{destType}\" per la variabile di tipo \"{name}\"", + "typeConstrainedTypeVar": "Il tipo \"{type}\" non è compatibile con la variabile di tipo vincolato \"{name}\"", + "typeIncompatible": "\"{sourceType}\" non è compatibile con \"{destType}\"", + "typeNotCallable": "Il tipo \"{type}\" non è richiamabile", + "typeNotClass": "\"{type}\" non è una classe", + "typeNotStringLiteral": "\"{type}\" non è un valore letterale stringa", + "typeOfSymbol": "Il tipo di \"{name}\" è \"{type}\"", + "typeParamSpec": "Il tipo \"{type}\" non è compatibile con il \"{name}\" ParamSpec", + "typeUnsupported": "Il tipo \"{type}\" non è supportato", + "typeVarDefaultOutOfScope": "La variabile di tipo \"{name}\" non è nell'ambito", + "typeVarIsContravariant": "Il \"{name}\" TypeVar è controvariante", + "typeVarIsCovariant": "Il \"{name}\" TypeVar è invariante", + "typeVarIsInvariant": "Il \"{name}\" TypeVar è invariante", + "typeVarNotAllowed": "TypeVar o tipo generico con argomenti tipo non consentiti", + "typeVarTupleRequiresKnownLength": "Non è possibile associare TypeVarTuple a una tupla di lunghezza sconosciuta", + "typeVarUnsolvableRemedy": "Specificare un overload che specifica il tipo restituito quando l'argomento non viene fornito", + "typeVarsMissing": "Variabili di tipo mancanti: {names}", + "typedDictFieldMissing": "\"{name}\" mancante nel \"{type}\"", + "typedDictFieldNotReadOnly": "\"{name}\" non è di sola lettura in \"{type}\"", + "typedDictFieldNotRequired": "\"{name}\" non è obbligatorio in \"{type}\"", + "typedDictFieldRequired": "\"{name}\" è obbligatorio in \"{type}\"", + "typedDictFieldTypeMismatch": "Il tipo \"{type}\" non può essere assegnato al campo \"{name}\"", + "typedDictFieldTypeRedefinition": "Il tipo nella classe padre è \"{parentType}\" e il tipo nella classe figlio è \"{childType}\"", + "typedDictFieldUndefined": "\"{name}\" è un campo non definito nel tipo \"{type}\"", + "typedDictFinalMismatch": "\"{sourceType}\" non è compatibile con \"{destType}\" a causa di una @final mancata corrispondenza", + "unhashableType": "Il tipo \"{type}\" non è hashable", + "uninitializedAbstractVariable": "La variabile di istanza \"{name}\" è definita nella classe di base astratta \"{classType}\" ma non è inizializzata", + "unreachableExcept": "\"{exceptionType}\" è una sottoclasse di \"{parentType}\"", + "useDictInstead": "Usare Dict[T1, T2] per indicare un tipo di dizionario", + "useListInstead": "Usare List[T] per indicare un tipo di elenco o Union[T1, T2] per indicare un tipo di unione", + "useTupleInstead": "Usare Tuple[T1, ..., Tn] per indicare un tipo di tupla o Union[T1, T2] per indicare un tipo di unione", + "useTypeInstead": "In alternativa, usare Type[T]", + "varianceMismatchForClass": "La varianza dell'argomento tipo \"{typeVarName}\" non è compatibile con la classe di base \"{className}\"", + "varianceMismatchForTypeAlias": "La varianza dell'argomento tipo \"{typeVarName}\" non è compatibile con \"{typeAliasParam}\"" + } +} diff --git a/packages/pyright-internal/src/localization/package.nls.ja.json b/packages/pyright-internal/src/localization/package.nls.ja.json index 0db3279e4..e09d59a36 100644 --- a/packages/pyright-internal/src/localization/package.nls.ja.json +++ b/packages/pyright-internal/src/localization/package.nls.ja.json @@ -1,3 +1,718 @@ { - + "CodeAction": { + "addOptionalToAnnotation": "型注釈に \"Optional\" を追加する", + "createTypeStub": "型スタブの作成", + "createTypeStubFor": "\"{moduleName}\" の型スタブを作成する", + "executingCommand": "コマンドの実行中", + "filesToAnalyzeCount": "分析する {count} 個のファイル", + "filesToAnalyzeOne": "分析する 1 つのファイル", + "findingReferences": "参照を検索しています", + "organizeImports": "インポートを整理", + "renameShadowedFile": "\"{oldFile}\" の名前を \"{newFile}\" に変更します" + }, + "Diagnostic": { + "abstractMethodInvocation": "メソッド \"{method}\" は抽象型であるため、呼び出すことができません", + "annotatedParamCountMismatch": "パラメーター注釈数の不一致: {expected} が必要ですが、{received} を受信しました", + "annotatedTypeArgMissing": "\"Annotationed\" には 1 つの型引数と 1 つ以上の注釈が必要です", + "annotationFormatString": "型注釈では、書式指定文字列リテラル (f 文字列) を使用できません", + "annotationNotSupported": "このステートメントでは型注釈はサポートされていません", + "annotationSpansStrings": "型注釈を複数の文字列リテラルにまたがることはできません", + "annotationStringEscape": "型注釈にエスケープ文字を含めることはできません", + "argAssignment": "型 \"{argType}\" の引数を型 \"{paramType}\" のパラメーターに割り当てることはできません", + "argAssignmentFunction": "型 \"{argType}\" の引数を関数 \"{functionName}\" の型 \"{paramType}\" のパラメーターに割り当てることはできません", + "argAssignmentParam": "型 \"{argType}\" の引数を型 \"{paramType}\" のパラメーター \"{paramName}\" に割り当てることはできません", + "argAssignmentParamFunction": "型 \"{argType}\" の引数を、関数 \"{functionName}\" の型 \"{paramType}\" のパラメーター \"{paramName}\" に割り当てることはできません", + "argMissingForParam": "パラメーター {name} に引数がありません", + "argMissingForParams": "パラメーター {names} に引数がありません", + "argMorePositionalExpectedCount": "さらに {expected} 個の位置引数が必要です", + "argMorePositionalExpectedOne": "さらに 1 つの位置引数が必要です", + "argPositional": "必要な位置引数", + "argPositionalExpectedCount": "{expected} 個の位置引数が必要です", + "argPositionalExpectedOne": "1 個の位置引数が必要です", + "argTypePartiallyUnknown": "引数の型が部分的に不明です", + "argTypeUnknown": "引数の型が不明です", + "assertAlwaysTrue": "Assert 式は常に true に評価されます", + "assertTypeArgs": "\"assert_type\" には 2 つの位置引数が必要です", + "assertTypeTypeMismatch": "\"assert_type\" の不一致: \"{expected}\" が必要ですが、\"{received}\" を受信しました", + "assignmentExprComprehension": "代入式のターゲット \"{name}\" は、ターゲットの理解と同じ名前を使用できません", + "assignmentExprContext": "代入式は、モジュール、関数、またはラムダ内に存在する必要があります", + "assignmentExprInSubscript": "下付き文字内の代入式は、Python 3.10 以降でのみサポートされます", + "assignmentInProtocol": "Protocol クラス内のインスタンス変数またはクラス変数は、クラス本体内で明示的に宣言する必要があります", + "assignmentTargetExpr": "式を代入先にすることはできません", + "asyncNotInAsyncFunction": "非同期関数の外部では \"async\" の使用は許可されていません", + "awaitIllegal": "\"await\" を使用するには Python 3.5 以降が必要です", + "awaitNotInAsync": "\"await\" は非同期関数内でのみ許可されます", + "backticksIllegal": "バッククォートで囲まれた式は、Python 3.x ではサポートされていません。代わりに repr を使用してください", + "baseClassCircular": "クラス自体から派生することはできません", + "baseClassFinal": "基底クラス \"{type}\" は final とマークされており、サブクラス化できません", + "baseClassInvalid": "クラスへの引数は基底クラスである必要があります", + "baseClassMethodTypeIncompatible": "\"{classType}\" の基底クラスは、互換性のない方法でメソッド \"{name}\" を定義します", + "baseClassUnknown": "基底クラスの型が不明で、派生クラスの型が不明です", + "baseClassVariableTypeIncompatible": "クラス \"{classType}\" の基底クラスは、互換性のない方法で変数 \"{name}\" を定義します", + "bindTypeMismatch": "\"{type}\" がパラメーター \"{paramName}\" に割り当てできないため、メソッド \"{methodName}\" をバインドできませんでした", + "breakOutsideLoop": "\"break\" はループ内でのみ使用できます", + "callableExtraArgs": "\"Callable\" に必要な型引数は 2 つだけです", + "callableFirstArg": "パラメーターの型リストまたは \"...\" が必要です。", + "callableNotInstantiable": "型 \"{type}\" をインスタンス化できません", + "callableSecondArg": "\"Callable\" の 2 番目の型引数として戻り値の型が必要です", + "casePatternIsIrrefutable": "参照不可能なパターンは、最後の case ステートメントに対してのみ許可されます", + "classAlreadySpecialized": "型 \"{type}\" は既に特殊化されています", + "classDecoratorTypeUnknown": "型指定されていないクラス デコレーターはクラスの型を隠します。デコレーターを無視する", + "classDefinitionCycle": "\"{name}\" のクラス定義は、それ自体に依存します", + "classGetItemClsParam": "__class_getitem__ override は \"cls\" パラメーターを受け取る必要があります", + "classMethodClsParam": "クラス メソッドは \"cls\" パラメーターを受け取る必要があります", + "classNotRuntimeSubscriptable": "クラス \"{name}\" の添字はランタイム例外を生成します。型の注釈を引用符で囲む", + "classPatternBuiltInArgCount": "クラス パターンは、最大 1 つの位置指定サブパターンを受け入れます", + "classPatternBuiltInArgPositional": "クラス パターンは位置指定サブパターンのみを受け入れます", + "classPatternTypeAlias": "\"{type}\" は特殊な型エイリアスであるため、クラス パターンでは使用できません", + "classTypeParametersIllegal": "クラス型パラメーターの構文には Python 3.12 以降が必要です", + "classVarFirstArgMissing": "\"ClassVar\" の後に型引数が必要です", + "classVarNotAllowed": "\"ClassVar\" はこのコンテキストでは許可されていません", + "classVarOverridesInstanceVar": "クラス変数 \"{name}\" は、クラス \"{className}\" の同じ名前のインスタンス変数をオーバーライドします", + "classVarTooManyArgs": "\"ClassVar\" の後に必要な型引数は 1 つだけです", + "classVarWithTypeVar": "\"ClassVar\" 型に型変数を含めることはできません", + "clsSelfParamTypeMismatch": "パラメーター \"{name}\" の型は、そのクラス \"{classType}\" のスーパータイプである必要があります", + "codeTooComplexToAnalyze": "コードが複雑すぎるため、分析できません。サブルーチンにリファクタリングするか、条件付きコード パスを減らすことで複雑さを軽減してください", + "collectionAliasInstantiation": "型 \"{type}\" はインスタンス化できません。代わりに \"{alias}\" を使用してください", + "comparisonAlwaysFalse": "型 \"{leftType}\" と \"{rightType}\" に重複がないため、条件は常に False に評価されます", + "comparisonAlwaysTrue": "型 \"{leftType}\" と \"{rightType}\" に重複がないため、条件は常に True に評価されます", + "comprehensionInDict": "他の辞書エントリと共に理解することはできません", + "comprehensionInSet": "他のセット エントリと共に理解を使用することはできません", + "concatenateParamSpecMissing": "\"Concatenate\" の最後の型引数は ParamSpec である必要があります", + "concatenateTypeArgsMissing": "\"連結\" には少なくとも 2 つの型引数が必要です", + "conditionalOperandInvalid": "型 \"{type}\" の条件オペランドが無効です", + "constantRedefinition": "\"{name}\" は定数であり (大文字であるため)、再定義できません", + "constructorNoArgs": "\"{type}\" コンストラクターに引数が必要ありません", + "constructorParametersMismatch": "クラス \"{classType}\" の__new__と__init__のシグネチャの不一致", + "containmentAlwaysFalse": "型 \"{leftType}\" と \"{rightType}\" に重複がないため、式は常に False に評価されます", + "containmentAlwaysTrue": "型 \"{leftType}\" と \"{rightType}\" に重複がないため、式は常に True に評価されます", + "continueInFinally": "finally 句内では \"continue\" を使用できません", + "continueOutsideLoop": "\"continue\" はループ内でのみ使用できます", + "dataClassBaseClassFrozen": "固定されていないクラスは、固定されているクラスから継承できません", + "dataClassBaseClassNotFrozen": "固定されたクラスは、固定されていないクラスから継承できません", + "dataClassConverterFunction": "型 \"{argType}\" の引数は、型 \"{fieldType}\" のフィールド \"{fieldName}\" の有効なコンバーターではありません", + "dataClassConverterOverloads": "{funcName}\" のオーバーロードは、型 \"{fieldType}\" のフィールド \"{fieldName}\" に対して有効なコンバーターではありません", + "dataClassFieldWithDefault": "既定値のないフィールドは、既定値を持つフィールドの後に表示できません", + "dataClassFieldWithPrivateName": "データクラス フィールドはプライベート名を使用できません", + "dataClassFieldWithoutAnnotation": "型注釈のないデータクラス フィールドが原因でランタイム例外が発生する", + "dataClassPostInitParamCount": "Dataclass __post_init__ パラメーター数が正しくありません。InitVar フィールドの数は {expected} です", + "dataClassPostInitType": "フィールド \"{fieldName}\" の Dataclass __post_init__ メソッド パラメーターの型が一致しません", + "dataClassSlotsOverwrite": "__slots__はクラスで既に定義されています", + "dataClassTransformExpectedBoolLiteral": "静的に True または False に評価される式が必要です", + "dataClassTransformFieldSpecifier": "クラスまたは関数のタプルが必要ですが、型 \"{type}\" を受け取りました", + "dataClassTransformPositionalParam": "\"dataclass_transform\" に対するすべての引数はキーワード引数である必要があります", + "dataClassTransformUnknownArgument": "引数 \"{name}\" はdataclass_transform でサポートされていません", + "declaredReturnTypePartiallyUnknown": "宣言された戻り値の型 \"{returnType}\" は部分的に不明です", + "declaredReturnTypeUnknown": "宣言された戻り値の型が不明です", + "defaultValueContainsCall": "パラメーターの既定値の式内では、関数呼び出しと変更可能なオブジェクトは許可されません", + "defaultValueNotAllowed": "\"*\" または \"**\" のパラメーターに既定値を指定することはできません", + "delTargetExpr": "式を削除できません", + "deprecatedClass": "クラス \"{name}\" は非推奨です", + "deprecatedConstructor": "クラス \"{name}\" のコンストラクターは非推奨です", + "deprecatedFunction": "この関数 \"{name}\" は非推奨です", + "deprecatedType": "この型は Python {version} では非推奨です。代わりに\"{replacement}\"を使用してください", + "dictExpandIllegalInComprehension": "辞書の展開は理解できません", + "dictInAnnotation": "辞書式は型注釈では使用できません", + "dictKeyValuePairs": "辞書エントリにはキー/値のペアが含まれている必要があります", + "dictUnpackIsNotMapping": "ディクショナリ アンパック演算子に必要なマッピング", + "dunderAllSymbolNotPresent": "\"{name}\" は __all__ で指定されていますが、モジュールには存在しません", + "duplicateArgsParam": "許可される \"*\" パラメーターは 1 つだけです", + "duplicateBaseClass": "重複する基底クラスは許可されていません", + "duplicateCapturePatternTarget": "Capture ターゲット \"{name}\" を同じパターン内に複数回出現させることはできません", + "duplicateCatchAll": "許可される catch-all except 句は 1 つだけです", + "duplicateEnumMember": "列挙型メンバー \"{name}\" は既に宣言されています", + "duplicateGenericAndProtocolBase": "許可される Generic[...] または Protocol[...] 基底クラスは 1 つだけです", + "duplicateImport": "\"{importName}\" が複数回インポートされています", + "duplicateKeywordOnly": "\"*\" 区切り記号を 1 つだけ使用できます", + "duplicateKwargsParam": "許可される \"**\" パラメーターは 1 つだけです", + "duplicateParam": "パラメーター \"{name}\" が重複しています", + "duplicatePositionOnly": "許可される \"/\" パラメーターは 1 つだけです", + "duplicateStarPattern": "パターン シーケンスで使用できる \"*\" パターンは 1 つだけです", + "duplicateStarStarPattern": "許可されている \"**\" エントリは 1 つだけです", + "duplicateUnpack": "リストで許可されているアンパック操作は 1 つだけです", + "ellipsisContext": "\"...\" はこのコンテキストでは許可されていません", + "ellipsisSecondArg": "\"...\" は2 つの引数の 2 番目の引数としてのみ使用できます", + "enumClassOverride": "列挙型クラス \"{name}\" は最終的なクラスであり、サブクラス化できません", + "exceptionGroupIncompatible": "例外グループの構文 (\"except*\") には Python 3.11 以降が必要です", + "exceptionTypeIncorrect": "\"{type}\" は BaseException から派生していません", + "exceptionTypeNotClass": "\"{type}\" は有効な例外クラスではありません", + "exceptionTypeNotInstantiable": "例外の種類 \"{type}\" のコンストラクターには 1 つ以上の引数が必要です", + "expectedAfterDecorator": "デコレーターの後に必要な関数またはクラス宣言", + "expectedArrow": "\"->\" の後に戻り値の型注釈が続く必要があります", + "expectedAsAfterException": "例外の種類の後に \"as\" が必要です", + "expectedAssignRightHandExpr": "\"=\" の右側に式が必要です", + "expectedBinaryRightHandExpr": "演算子の右側に式が必要です", + "expectedBoolLiteral": "True または False が必要です", + "expectedCase": "\"case\" ステートメントが必要です", + "expectedClassName": "必要なクラス名", + "expectedCloseBrace": "\"{\" は閉じられていません", + "expectedCloseBracket": "\"[\" は閉じられていません", + "expectedCloseParen": "\"(\" が閉じられませんでした", + "expectedColon": "\":\" が必要です", + "expectedComplexNumberLiteral": "パターン マッチングに必要な複素数リテラル", + "expectedDecoratorExpr": "Python 3.9 より前のデコレーターでは、式フォームはサポートされていません", + "expectedDecoratorName": "デコレーター名が必要です", + "expectedDecoratorNewline": "デコレーターの末尾に新しい行が必要です", + "expectedDelExpr": "\"del\" の後に式が必要です", + "expectedElse": "\"else\" が必要です", + "expectedEquals": "\"=\" が必要です", + "expectedExceptionClass": "例外クラスまたはオブジェクトが無効です", + "expectedExceptionObj": "例外オブジェクト、例外クラス、または None が必要です", + "expectedExpr": "式が必要です", + "expectedFunctionAfterAsync": "\"async\" の後に必要な関数定義", + "expectedFunctionName": "\"def\" の後に関数名が必要です", + "expectedIdentifier": "必要な識別子", + "expectedImport": "\"import\" が必要です", + "expectedImportAlias": "\"as\" の後にシンボルが必要です", + "expectedImportSymbols": "インポート後に 1 つ以上のシンボル名が必要です", + "expectedIn": "'in' が必要です", + "expectedInExpr": "\"in\" の後に式が必要です", + "expectedIndentedBlock": "インデントされたブロックが必要です", + "expectedMemberName": "\".\" の後にメンバー名が必要です。", + "expectedModuleName": "必要なモジュール名", + "expectedNameAfterAs": "\"as\" の後にシンボル名が必要です", + "expectedNamedParameter": "キーワード パラメーターは \"*\" の後に続く必要があります", + "expectedNewline": "改行が必要です", + "expectedNewlineOrSemicolon": "ステートメントは改行またはセミコロンで区切る必要があります", + "expectedOpenParen": "\"(\" が必要です", + "expectedParamName": "必要なパラメーター名", + "expectedPatternExpr": "必要なパターン式", + "expectedPatternSubjectExpr": "必要なパターンの件名の式", + "expectedPatternValue": "\"a.b\" 形式のパターン値式が必要です", + "expectedReturnExpr": "\"return\" の後に式が必要です", + "expectedSliceIndex": "インデックスまたはスライス式が必要です", + "expectedTypeNotString": "必要な型ですが、文字列リテラルを受け取りました", + "expectedTypeParameterName": "必要な型パラメーター名", + "expectedYieldExpr": "yield ステートメントで必要な式", + "finalClassIsAbstract": "クラス \"{type}\" は final とマークされており、すべての抽象メソッドを実装する必要があります", + "finalContext": "このコンテキストでは \"Final\" は許可されていません", + "finalMethodOverride": "メソッド \"{name}\" は、クラス \"{className}\" で定義されている最終的なメソッドをオーバーライドできません", + "finalReassigned": "\"{name}\" は Final として宣言されており、再割り当てできません", + "finalRedeclaration": "\"{name}\" は以前に Final として宣言されました", + "finalRedeclarationBySubclass": "親クラス \"{className}\" が Final として宣言しているため、\"{name}\" を再宣言できません", + "finalTooManyArgs": "\"Final\" の後に 1 つの型引数が必要です", + "finalUnassigned": "\"{name}\" は Final と宣言されていますが、値は割り当てされていません", + "formatStringBrace": "f-string リテラル内では、1 つの閉じかっこは使用できません。二重閉じかっこを使用してください", + "formatStringBytes": "書式指定文字列リテラル (f 文字列) をバイナリにすることはできません", + "formatStringDebuggingIllegal": "F-string デバッグ指定子 \"=\" には Python 3.8 以降が必要です", + "formatStringEscape": "Python 3.12 より前の f-string の式部分ではエスケープ シーケンス (バックスラッシュ) は使用できません", + "formatStringExpectedConversion": "f-string の \"!\" の後に変換指定子が必要です", + "formatStringIllegal": "書式文字列リテラル (f 文字列) には Python 3.6 以降が必要です", + "formatStringInPattern": "書式指定文字列はパターンでは使用できません", + "formatStringNestedFormatSpecifier": "書式指定子内で入れ子になった式が深すぎます", + "formatStringNestedQuote": "f-string 内で入れ子になった文字列は、Python 3.12 より前の f-string と同じ引用符文字を使用できません", + "formatStringUnicode": "書式指定文字列リテラル (f 文字列) を Unicode にすることはできません", + "formatStringUnterminated": "f-string の式が終了していません。\"}\" が必要です", + "functionDecoratorTypeUnknown": "型指定されていない関数デコレーターは、関数の型を隠します。デコレーターを無視しています", + "functionInConditionalExpression": "常に True に評価される条件式参照関数", + "functionTypeParametersIllegal": "関数型パラメーターの構文には Python 3.12 以降が必要です", + "futureImportLocationNotAllowed": "__future__ からのインポートは、ファイルの先頭にある必要があります", + "generatorAsyncReturnType": "非同期ジェネレーター関数の戻り値の型は、\"AsyncGenerator[{yieldType}, Any]\" と互換性がある必要があります", + "generatorNotParenthesized": "ジェネレーター式は、唯一の引数でない場合はかっこで囲む必要があります", + "generatorSyncReturnType": "ジェネレーター関数の戻り値の型は、\"Generator[{yieldType}, Any, Any]\" と互換性がある必要があります", + "genericBaseClassNotAllowed": "\"Generic\" 基底クラスを型パラメーター構文と共に使用することはできません", + "genericClassAssigned": "ジェネリック クラス型を割り当てることはできません", + "genericClassDeleted": "ジェネリック クラス型を削除できません", + "genericNotAllowed": "\"Generic\" はこのコンテキストでは無効です", + "genericTypeAliasBoundTypeVar": "クラス内のジェネリック型エイリアスはバインドされた型変数 {names} を使用できません", + "genericTypeArgMissing": "\"Generic\" には少なくとも 1 つの型引数が必要です", + "genericTypeArgTypeVar": "\"Generic\" の型引数は型変数である必要があります", + "genericTypeArgUnique": "\"Generic\" の型引数は一意である必要があります", + "globalReassignment": "\"{name}\" はグローバル宣言の前に割り当てられます", + "globalRedefinition": "\"{name}\" は既にグローバルに宣言されています", + "implicitStringConcat": "暗黙的な文字列連結は許可されていません", + "importCycleDetected": "インポート チェーンで循環が検出されました", + "importDepthExceeded": "インポート チェーンの深さが {depth} を超えました", + "importResolveFailure": "インポート \"{importName}\" を解決できませんでした", + "importSourceResolveFailure": "インポート \"{importName}\" をソースから解決できませんでした", + "importSymbolUnknown": "\"{name}\" は不明なインポート シンボルです", + "incompatibleMethodOverride": "メソッド \"{name}\" は互換性のない方法でクラス \"{className}\" をオーバーライドします", + "inconsistentIndent": "元のサイズが前のインデントと一致しません", + "inconsistentTabs": "インデントでのタブとスペースの一貫性のない使用", + "initMustReturnNone": "\"__init__\" の戻り値の型は None でなければなりません", + "initSubclassClsParam": "__class_getitem__ override は \"cls\" パラメーターを受け取る必要があります", + "instanceMethodSelfParam": "インスタンス メソッドは \"self\" パラメーターを受け取る必要があります", + "instanceVarOverridesClassVar": "インスタンス変数 \"{name}\" は、クラス \"{className}\" の同じ名前のクラス変数をオーバーライドします", + "instantiateAbstract": "抽象クラス \"{type}\" をインスタンス化できません", + "instantiateProtocol": "プロトコル クラス \"{type}\" をインスタンス化できません", + "internalBindError": "ファイル \"{file}\" のバインド中に内部エラーが発生しました: {message}", + "internalParseError": "ファイル \"{file}\" の解析中に内部エラーが発生しました: {message}", + "internalTypeCheckingError": "ファイル \"{file}\" の種類チェック中に内部エラーが発生しました: {message}", + "invalidIdentifierChar": "識別子の無効な文字", + "invalidStubStatement": "ステートメントは型スタブ ファイル内では意味がありません", + "invalidTokenChars": "トークン内の無効な文字 \"{text}\"", + "isInstanceInvalidType": "\"isinstance\" の 2 番目の引数は、クラスのクラスまたはタプルである必要があります", + "isSubclassInvalidType": "\"issubclass\" の 2 番目の引数は、クラスまたはクラスのタプルである必要があります", + "keyValueInSet": "キー/値のペアはセット内では使用できません", + "keywordArgInTypeArgument": "キーワード引数は型引数リストでは使用できません", + "keywordOnlyAfterArgs": "キーワードのみの引数の区切り記号は、\"*\" パラメーターの後には使用できません", + "keywordParameterMissing": "1 つ以上のキーワード パラメーターが \"*\" パラメーターの後に続く必要があります", + "keywordSubscriptIllegal": "添字内のキーワード引数はサポートされていません", + "lambdaReturnTypePartiallyUnknown": "ラムダの戻り値の型、\"{returnType}\" が部分的に不明です", + "lambdaReturnTypeUnknown": "ラムダの戻り値の型が不明です", + "listAssignmentMismatch": "型 \"{type}\" の式をターゲット リストに割り当てることはできません", + "listInAnnotation": "型注釈ではリスト式は使用できません", + "literalEmptyArgs": "\"Literal\" の後に 1 つ以上の型引数が必要です", + "literalNotCallable": "リテラル型をインスタンス化できません", + "literalUnsupportedType": "\"Literal\" の型引数は None、リテラル値 (int、bool、str、または bytes)、または列挙型の値である必要があります", + "matchIncompatible": "Match ステートメントには Python 3.10 以降が必要です", + "matchIsNotExhaustive": "match ステートメント内のケースでは、すべての値が完全に処理されるわけではありません", + "maxParseDepthExceeded": "解析の最大深さを超えました。式を小さい部分式に分割する", + "memberAccess": "型 \"{type}\" のメンバー \"{name}\" にアクセスできません", + "memberDelete": "型 \"{type}\" のメンバー \"{name}\" を削除できません", + "memberSet": "型 \"{type}\" にメンバー \"{name}\" を割り当てることができません", + "metaclassConflict": "派生クラスのメタクラスは、そのすべての基底クラスのメタクラスのサブクラスである必要があります", + "metaclassDuplicate": "指定できるメタクラスは 1 つだけです", + "metaclassIsGeneric": "メタクラスをジェネリックにすることはできません", + "methodNotDefined": "\"{name}\" メソッドが定義されていません", + "methodNotDefinedOnType": "型 \"{type}\" に \"{name}\" メソッドが定義されていません", + "methodOrdering": "一貫性のあるメソッドの順序を作成できません", + "methodOverridden": "\"{name}\" は、クラス \"{className}\" の同じ名前のメソッドを互換性のない型 \"{type}\" でオーバーライドします", + "methodReturnsNonObject": "\"{name}\" メソッドはオブジェクトを返しません", + "missingProtocolMembers": "クラスは 1 つ以上のプロトコル クラスから派生しますが、必要なメンバーをすべて実装するわけではありません", + "missingSuperCall": "メソッド \"{methodName}\" は親クラスで同じ名前のメソッドを呼び出しません", + "moduleAsType": "モジュールを型として使用することはできません", + "moduleNotCallable": "モジュールは呼び出し可能ではありません", + "moduleUnknownMember": "\"{memberName}\" はモジュール \"{moduleName}\" の既知のメンバーではありません", + "namedExceptAfterCatchAll": "名前付き except 句は、catch-all except 句の後には使用できません", + "namedParamAfterParamSpecArgs": "ParamSpec args パラメーターの後にキーワード パラメーター \"{name}\" をシグネチャに含めることはできません", + "namedTupleEmptyName": "名前付きタプル内の名前を空にすることはできません", + "namedTupleFirstArg": "最初の引数として名前付きタプル クラス名が必要です", + "namedTupleMultipleInheritance": "NamedTuple による複数の継承はサポートされていません", + "namedTupleNameType": "エントリ名と型を指定する 2 エントリタプルが必要です", + "namedTupleNameUnique": "名前付きタプル内の名前は一意である必要があります", + "namedTupleNoTypes": "\"namedtuple\" はタプル エントリに型を提供しません。代わりに \"NamedTuple\" を使用してください", + "namedTupleSecondArg": "2 番目の引数として名前付きタプル エントリ リストが必要です", + "newClsParam": "__new__ override は \"cls\" パラメーターを受け取る必要があります", + "newTypeBadName": "NewType の最初の引数は文字列リテラルである必要があります", + "newTypeLiteral": "NewType はリテラル型では使用できません", + "newTypeNotAClass": "NewType の 2 番目の引数としてクラスが必要です", + "newTypeParamCount": "NewType には 2 つの位置引数が必要です", + "newTypeProtocolClass": "NewType をプロトコル クラスと共に使用することはできません", + "noOverload": "指定された引数に一致する \"{name}\" のオーバーロードがありません", + "noReturnContainsReturn": "戻り値の型が \"NoReturn\" として宣言されている関数に return ステートメントを含めることはできません", + "noReturnContainsYield": "戻り値の型 \"NoReturn\" を宣言した関数に yield ステートメントを含めることはできません", + "noReturnReturnsNone": "宣言された型が \"NoReturn\" の関数は \"None\" を返すことができません", + "nonDefaultAfterDefault": "既定以外の引数は既定の引数の後に続きます", + "nonLocalInModule": "モジュール レベルでは非ローカル宣言は許可されません", + "nonLocalNoBinding": "非ローカル \"{name}\" のバインドが見つかりません", + "nonLocalReassignment": "\"{name}\" は非ローカル宣言の前に割り当てられます", + "nonLocalRedefinition": "\"{name}\" は既に非ローカルとして宣言されています", + "noneNotCallable": "\"None\" 型のオブジェクトを呼び出すことはできません", + "noneNotIterable": "型 \"None\" のオブジェクトを反復可能な値として使用することはできません", + "noneNotSubscriptable": "\"None\" 型のオブジェクトは添字可能ではありません", + "noneNotUsableWith": "\"None\" 型のオブジェクトを \"with\" と共に使用することはできません", + "noneOperator": "演算子 \"{operator}\" は \"None\" ではサポートされていません", + "noneUnknownMember": "\"{name}\" は \"None\" の既知のメンバーではありません", + "notRequiredArgCount": "\"NotRequired\" の後に 1 つの型引数が必要です", + "notRequiredNotInTypedDict": "\"NotRequired\" はこのコンテキストでは許可されていません", + "objectNotCallable": "型 \"{type}\" のオブジェクトは呼び出し可能ではありません", + "obscuredClassDeclaration": "クラス宣言 \"{name}\" は、同じ名前の宣言によって隠されています", + "obscuredFunctionDeclaration": "関数宣言 \"{name}\" は、同じ名前の宣言によって隠されています", + "obscuredMethodDeclaration": "メソッド宣言 \"{name}\" は、同じ名前の宣言によって隠されています", + "obscuredParameterDeclaration": "パラメーター宣言 \"{name}\" は、同じ名前の宣言によって隠されています", + "obscuredTypeAliasDeclaration": "型エイリアス宣言 \"{name}\" は、同じ名前の宣言によって隠されています", + "obscuredVariableDeclaration": "宣言 \"{name}\" は、同じ名前の宣言によって隠されています", + "operatorLessOrGreaterDeprecated": "演算子 \"<>\" は Python 3 ではサポートされていません。代わりに \"!=\" を使用してください", + "optionalExtraArgs": "\"Optional\" の後に 1 つの型引数が必要です", + "orPatternIrrefutable": "参照不可能なパターンは、\"or\" パターンの最後のサブパターンとしてのみ許可されます", + "orPatternMissingName": "\"or\" パターン内のすべてのサブパターンは、同じ名前をターゲットにする必要があります", + "overlappingOverload": "パラメーターがオーバーロード {obscuredBy} と重複しているため、\"{name}\" のオーバーロード {obscured} は使用されません", + "overloadAbstractMismatch": "オーバーロードされたメソッドはすべて抽象である必要があります。", + "overloadImplementationMismatch": "オーバーロードされた実装がオーバーロード {index} のシグネチャと一致しません", + "overloadReturnTypeMismatch": "\"{name}\" のオーバーロード {prevIndex} はオーバーロード {newIndex} と重複し、互換性のない型を返します", + "overloadWithImplementation": "\"{name}\" はオーバーロードとしてマークされていますが、実装が含まれています", + "overloadWithoutImplementation": "\"{name}\" はオーバーロードとしてマークされていますが、実装は提供されていません", + "overriddenMethodNotFound": "メソッド \"{name}\" はオーバーライドとしてマークされていますが、同じ名前の基本メソッドが存在しません", + "overrideDecoratorMissing": "メソッド \"{name}\" はオーバーライドとしてマークされていませんが、クラス \"{className}\" のメソッドをオーバーライドしています", + "paramAfterKwargsParam": "パラメーターは \"**\" パラメーターの後に続けることはできません", + "paramAlreadyAssigned": "パラメーター \"{name}\" は既に割り当て済みです", + "paramAnnotationMissing": "パラメーター \"{name}\" に型注釈がありません", + "paramAssignmentMismatch": "型 \"{sourceType}\" の式を型 \"{paramType}\" のパラメーターに割り当てることはできません", + "paramNameMissing": "\"{name}\" という名前のパラメーターがありません", + "paramSpecArgsKwargsUsage": "ParamSpec の \"args\" メンバーと \"kwargs\" メンバーの両方が関数シグネチャ内に含まれている必要があります", + "paramSpecArgsMissing": "ParamSpec \"{type}\" の引数がありません", + "paramSpecArgsUsage": "ParamSpec の \"args\" メンバーは、*args パラメーターと共に使用する場合にのみ有効です", + "paramSpecAssignedName": "ParamSpec は 、\"{name}\" という名前の変数に割り当てる必要があります", + "paramSpecContext": "ParamSpec はこのコンテキストでは許可されていません", + "paramSpecDefaultNotTuple": "ParamSpec の既定値には、省略記号、タプル式、または ParamSpec が必要です", + "paramSpecFirstArg": "最初の引数として ParamSpec の名前が必要です", + "paramSpecKwargsUsage": "ParamSpec の \"kwargs\" メンバーは、**kwargs パラメーターと共に使用する場合にのみ有効です", + "paramSpecNotBound": "パラメーター 仕様 \"{type}\" にバインドされた値がありません", + "paramSpecNotUsedByOuterScope": "ParamSpec \"{name}\" はこのコンテキストでは意味がありません", + "paramSpecScopedToReturnType": "ParamSpec \"{name}\" は、戻り値の型内の呼び出し可能なスコープであり、関数本体では参照できません", + "paramSpecUnknownArg": "ParamSpec は複数の引数をサポートしていません", + "paramSpecUnknownMember": "\"{name}\" は ParamSpec の既知のメンバーではありません", + "paramSpecUnknownParam": "\"{name}\" は ParamSpec に対する不明なパラメーターです", + "paramTypeCovariant": "共変の型変数はパラメーター型では使用できません", + "paramTypePartiallyUnknown": "パラメーター \"{paramName}\" の型が部分的に不明です", + "paramTypeUnknown": "パラメーター \"{paramName}\" の型が不明です", + "parenthesizedContextManagerIllegal": "\"with\" ステートメント内のかっこには Python 3.9 以降が必要です", + "patternNeverMatches": "サブジェクトの種類 \"{type}\" のパターンは一致しません", + "positionArgAfterNamedArg": "キーワード引数の後に位置引数を指定することはできません", + "positionOnlyAfterArgs": "\"*\" パラメーターの後に位置のみの引数の区切り文字を使用することはできません", + "positionOnlyAfterKeywordOnly": "\"/\" パラメーターは 、\"*\" パラメーターの前に指定する必要があります", + "positionOnlyFirstParam": "位置のみの引数の区切り記号を最初のパラメーターとして使用することはできません", + "positionOnlyIncompatible": "位置のみの引数の区切り記号には Python 3.8 以降が必要です", + "privateImportFromPyTypedModule": "\"{name}\" はモジュール \"{module}\" からエクスポートされていません", + "privateUsedOutsideOfClass": "\"{name}\" はプライベートであり、宣言されているクラスの外部で使用されます", + "privateUsedOutsideOfModule": "\"{name}\" はプライベートであり、それが宣言されているモジュールの外部で使用されています", + "propertyOverridden": "\"{name}\" は、クラス \"{className}\" の同じ名前のプロパティを誤ってオーバーライドします", + "propertyStaticMethod": "静的メソッドは、プロパティ getter、setter、または deleter では許可されていません", + "protectedUsedOutsideOfClass": "\"{name}\" は保護され、宣言されているクラスの外部で使用されます", + "protocolBaseClass": "プロトコル クラス \"{classType}\" は非プロトコル クラス \"{baseType}\" から派生できません", + "protocolBaseClassWithTypeArgs": "型パラメーター構文を使用する場合、Protocol クラスでは型引数を使用できません", + "protocolIllegal": "\"Protocol\" を使用するには Python 3.7 以降が必要です", + "protocolNotAllowedInTypeArgument": "\"Protocol\" は型引数として使用できません", + "protocolUsedInCall": "プロトコル クラスは \"{name}\" 呼び出しでは使用できません", + "protocolVarianceContravariant": "ジェネリック プロトコル \"{class}\" で使用される型変数 \"{variable}\" は反変である必要があります", + "protocolVarianceCovariant": "ジェネリック プロトコル \"{class}\" で使用される型変数 \"{variable}\" は共変である必要があります", + "protocolVarianceInvariant": "ジェネリック プロトコル \"{class}\" で使用される型変数 \"{variable}\" は不変である必要があります", + "pyrightCommentInvalidDiagnosticBoolValue": "Pyright コメント ディレクティブの後には \"=\" と値 true または false を指定する必要があります", + "pyrightCommentInvalidDiagnosticSeverityValue": "Pyright コメント ディレクティブの後に \"=\" を指定し、true、false、エラー、警告、情報、または none の値を指定する必要があります", + "pyrightCommentMissingDirective": "Pyright コメントの後にはディレクティブ (基本または厳格) または診断規則を指定する必要があります", + "pyrightCommentNotOnOwnLine": "ファイル レベルの設定を制御するために使用する Pyright コメントは、独自の行に表示する必要があります", + "pyrightCommentUnknownDiagnosticRule": "\"{rule}\" は、azureight コメントの不明な診断規則です", + "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\" は、pyright コメントに対して無効な値です。true、false、エラー、警告、情報、またはなしが必要です", + "pyrightCommentUnknownDirective": "\"{directive}\" は、pyright コメントの不明なディレクティブです。\"strict\" または \"basic\" が必要です", + "readOnlyArgCount": "\"ReadOnly\" の後に 1 つの型引数が必要です", + "readOnlyNotInTypedDict": "\"ReadOnly\" はこのコンテキストでは許可されていません", + "recursiveDefinition": "\"{name}\" の型は、それ自体を参照しているため、特定できませんでした", + "relativeImportNotAllowed": "相対インポートは、\"import .a\" フォームでは使用できません。代わりに \"from . import a\" を使用します。", + "requiredArgCount": "\"Required\" の後に 1 つの型引数が必要です", + "requiredNotInTypedDict": "このコンテキストでは\"必須\" は許可されていません", + "returnInAsyncGenerator": "値を持つ return ステートメントは、非同期ジェネレーターでは使用できません", + "returnMissing": "宣言された型が \"{returnType}\" の関数は、すべてのコード パスで値を返す必要があります", + "returnOutsideFunction": "\"return\" は関数内でのみ使用できます", + "returnTypeContravariant": "反変の型変数は戻り値の型では使用できません", + "returnTypeMismatch": "型 \"{exprType}\" の式を戻り値の型 \"{returnType}\" に割り当てることはできません", + "returnTypePartiallyUnknown": "戻り値の型 \"{returnType}\" は部分的に不明です", + "returnTypeUnknown": "戻り値の型が不明です", + "revealLocalsArgs": "\"reveal_locals\" 呼び出しに引数が必要ありません", + "revealLocalsNone": "このスコープにはローカルがありません", + "revealTypeArgs": "\"reveal_type\" 呼び出しに 1 つの位置引数が必要です", + "revealTypeExpectedTextArg": "関数 \"reveal_type\" の \"expected_text\" 引数は、str リテラル値である必要があります", + "revealTypeExpectedTextMismatch": "入力テキストの不一致;\"{expected}\" が必要ですが、\"{received}\" を受信しました", + "revealTypeExpectedTypeMismatch": "型が一致しません。\"{expected}\" が必要ですが、\"{received}\" を受信しました", + "selfTypeContext": "\"Self\" はこのコンテキストでは無効です", + "selfTypeWithTypedSelfOrCls": "\"Self\" は、\"Self\" 以外の型注釈を持つ 'self' または 'cls' パラメーターを持つ関数では使用できません", + "setterGetterTypeMismatch": "プロパティ セッター値の型は、getter の戻り値の型に割り当てできません", + "singleOverload": "\"{name}\" はオーバーロードとしてマークされていますが、追加のオーバーロードがありません", + "slotsAttributeError": "__slots__で \"{name}\" が指定されていません", + "slotsClassVarConflict": "\"{name}\" が __slots__ で宣言されたインスタンス変数と競合しています", + "starPatternInAsPattern": "スター パターンを \"as\" ターゲットと共に使用することはできません", + "starPatternInOrPattern": "スター パターンを他のパターン内で OR 化することはできません", + "starStarWildcardNotAllowed": "** はワイルドカード \"_\" と共に使用できません", + "staticClsSelfParam": "静的メソッドに \"self\" または \"cls\" パラメーターを指定することはできません", + "stdlibModuleOverridden": "\"{path}\" は stdlib モジュール \"{name}\" をオーバーライドしています", + "strictTypeGuardReturnType": "StrictTypeGuard (\"{returnType}\") の戻り値の型は、値パラメーター型 (\"{type}\") に割り当てできません", + "stringNonAsciiBytes": "非 ASCII 文字はバイト文字列リテラルでは使用できません", + "stringNotSubscriptable": "型注釈では文字列式を添字にすることはできません。注釈全体を引用符で囲んでください", + "stringUnsupportedEscape": "文字列リテラルでサポートされていないエスケープ シーケンス", + "stringUnterminated": "文字列リテラルが未終了です", + "stubFileMissing": "\"{importName}\" のスタブ ファイルが見つかりません", + "stubUsesGetAttr": "スタブ ファイルの種類が不完全です。\"__getattr__\" はモジュールの型エラーを隠します", + "sublistParamsIncompatible": "Python 3.x ではサブリスト パラメーターはサポートされていません", + "superCallArgCount": "\"super\" 呼び出しには 2 つ以下の引数が必要です", + "superCallFirstArg": "\"super\" 呼び出しの最初の引数としてクラス型が必要ですが、\"{type}\" を受け取りました", + "superCallSecondArg": "\"super\" 呼び出しの 2 番目の引数は、\"{type}\" から派生したオブジェクトまたはクラスである必要があります", + "superCallZeroArgForm": "\"super\" 呼び出しの 0 引数形式は、クラス内でのみ有効です", + "symbolIsPossiblyUnbound": "\"{name}\" はバインドされていない可能性があります", + "symbolIsUnbound": "\"{name}\" はバインドされていません", + "symbolIsUndefined": "\"{name}\" が定義されていません", + "symbolOverridden": "\"{name}\" はクラス \"{className}\" の同じ名前のシンボルをオーバーライドします", + "totalOrderingMissingMethod": "total_orderingを使用するには、クラスで \"__lt__\"、\"__le__\"、\"__gt__\"、または \"__ge__\" のいずれかを定義する必要があります", + "trailingCommaInFromImport": "末尾のコンマはかっこで囲まずには使用できません", + "tryWithoutExcept": "Try ステートメントには、少なくとも 1 つの except 句または finally 句が必要です", + "tupleAssignmentMismatch": "型 \"{type}\" の式をターゲット タプルに割り当てることはできません", + "tupleInAnnotation": "タプル式は型注釈では使用できません", + "tupleIndexOutOfRange": "インデックス {index} が型 {type} の範囲外です", + "typeAliasIllegalExpressionForm": "型エイリアス定義の式フォームが無効です", + "typeAliasIsRecursiveDirect": "型エイリアス \"{name}\" は、その定義でそれ自体を使用できません", + "typeAliasNotInModuleOrClass": "TypeAlias は、モジュールまたはクラススコープ内でのみ定義できます", + "typeAliasRedeclared": "\"{name}\" は TypeAlias として宣言されており、1 回だけ割り当てることができます", + "typeAliasStatementIllegal": "型エイリアス ステートメントには Python 3.12 以降が必要です", + "typeAliasTypeMustBeAssigned": "TypeAliasType は、型エイリアスと同じ名前の変数に割り当てる必要があります", + "typeAliasTypeNameArg": "TypeAliasType の最初の引数は、型エイリアスの名前を表す文字列リテラルである必要があります", + "typeAliasTypeNameMismatch": "型エイリアスの名前は、それが割り当てられている変数の名前と一致する必要があります", + "typeAliasTypeParamInvalid": "型パラメーター リストは、TypeVar、TypeVarTuple、または ParamSpec のみを含むタプルである必要があります", + "typeAnnotationCall": "無効な型注釈: 呼び出し式は許可されていません", + "typeAnnotationVariable": "無効な型注釈: 変数は型エイリアスでない限り許可されません", + "typeArgListExpected": "ParamSpec、省略記号、または型の一覧が必要です", + "typeArgListNotAllowed": "この型引数にはリスト式を使用できません", + "typeArgsExpectingNone": "クラス \"{name}\" に型引数が必要ありません", + "typeArgsMismatchOne": "1 つの型引数が必要ですが、{received} を受け取りました", + "typeArgsMissingForAlias": "ジェネリック型エイリアス \"{name}\" に必要な型引数", + "typeArgsMissingForClass": "ジェネリック クラス \"{name}\" に必要な型引数", + "typeArgsTooFew": "\"{name}\" に指定された型引数が少なすぎます。{expected} が必要ですが、{received} を受信しました", + "typeArgsTooMany": "\"{name}\" に指定された型引数が多すぎます。{expected} が必要ですが、{received} を受信しました", + "typeAssignmentMismatch": "型 \"{sourceType}\" の式を宣言された型 \"{destType}\" に割り当てることはできません", + "typeCallNotAllowed": "type() 呼び出しは型注釈で使用しないでください", + "typeCommentDeprecated": "型コメントの使用は非推奨です。代わりに型注釈を使用してください", + "typeExpectedClass": "型式が必要ですが、\"{type}\" を受け取りました", + "typeGuardArgCount": "\"TypeGuard\" の後に 1 つの型引数が必要です", + "typeGuardParamCount": "ユーザー定義型ガード関数とメソッドには、少なくとも 1 つの入力パラメーターが必要です", + "typeNotAwaitable": "\"{type}\" は待機できません", + "typeNotCallable": "\"{expression}\" は型 \"{type}\" を持ち、呼び出し可能ではありません", + "typeNotIntantiable": "\"{type}\" をインスタンス化できません", + "typeNotIterable": "\"{type}\" は反復できません", + "typeNotSpecializable": "型 \"{type}\" を特殊化できませんでした", + "typeNotSubscriptable": "型 \"{type}\" のオブジェクトは添字可能ではありません", + "typeNotSupportBinaryOperator": "演算子 \"{operator}\" は型 \"{leftType}\" と \"{rightType}\" ではサポートされていません", + "typeNotSupportBinaryOperatorBidirectional": "型 \"{leftType}\" と \"{rightType}\" に対して演算子 \"{operator}\" はサポートされていません。予期された型が \"{expectedType}\" の場合", + "typeNotSupportUnaryOperator": "演算子 \"{operator}\" は型 \"{type}\" ではサポートされていません", + "typeNotSupportUnaryOperatorBidirectional": "型 \"{type}\" が \"{expectedType}\" の場合、演算子 \"{operator}\" はサポートされていません", + "typeNotUsableWith": "型 \"{type}\" のオブジェクトは 、{method} を実装していないため、\"with\" と共に使用できません", + "typeParameterBoundNotAllowed": "バインドまたは制約を可変個引数型パラメーターまたは ParamSpec と共に使用することはできません", + "typeParameterConstraintTuple": "型パラメーター制約は、2 つ以上の型のタプルである必要があります", + "typeParameterExistingTypeParameter": "型パラメーター \"{name}\" は既に使用されています", + "typeParameterNotDeclared": "型パラメーター \"{name}\" は、\"{container}\" の型パラメーターリストに含まれていません", + "typeParametersMissing": "少なくとも 1 つの型パラメーターを指定する必要があります", + "typePartiallyUnknown": "\"{name}\" の種類が部分的に不明です", + "typeUnknown": "\"{name}\" の種類が不明です", + "typeVarAssignedName": "TypeVar は 、\"{name}\" という名前の変数に割り当てる必要があります", + "typeVarAssignmentMismatch": "型 \"{type}\" を型変数 \"{name}\" に割り当てることはできません", + "typeVarBoundAndConstrained": "TypeVar をバインドと制約の両方にすることはできません", + "typeVarBoundGeneric": "TypeVar バインド型をジェネリックにすることはできません", + "typeVarConstraintGeneric": "TypeVar 制約型をジェネリックにすることはできません", + "typeVarDefaultBoundMismatch": "TypeVar の既定の型はバインドされた型のサブタイプである必要があります", + "typeVarDefaultConstraintMismatch": "TypeVar の既定の型は、制約付き型のいずれかである必要があります", + "typeVarDefaultIllegal": "型変数の既定の型には Python 3.13 以降が必要です", + "typeVarDefaultInvalidTypeVar": "型パラメーター \"{name}\" には、スコープ外の 1 つ以上の型変数を参照する既定の型があります", + "typeVarFirstArg": "最初の引数として TypeVar の名前が必要です", + "typeVarNoMember": "TypeVar \"{type}\" にはメンバー \"{name}\" がありません", + "typeVarNotSubscriptable": "TypeVar \"{type}\" は添字可能ではありません", + "typeVarNotUsedByOuterScope": "型変数 \"{name}\" は、このコンテキストでは意味がありません", + "typeVarPossiblyUnsolvable": "呼び出し元がパラメーター \"{param}\" に引数を指定しない場合、型変数 \"{name}\" は解決されない可能性があります", + "typeVarScopedToReturnType": "型変数 \"{name}\" のスコープは戻り値の型内の呼び出し可能な変数であり、関数本体では参照できません", + "typeVarSingleConstraint": "TypeVar には少なくとも 2 つの制約付き型が必要です", + "typeVarTupleContext": "TypeVarTuple はこのコンテキストでは許可されていません", + "typeVarTupleDefaultNotUnpacked": "TypeVarTuple の既定の型は、アンパックされたタプルまたは TypeVarTuple である必要があります", + "typeVarTupleMustBeUnpacked": "TypeVarTuple 値にはアンパック演算子が必要です", + "typeVarTupleUnknownParam": "\"{name}\" は TypeVarTuple に対する不明なパラメーターです", + "typeVarUnknownParam": "\"{name}\" は TypeVar に対する不明なパラメーターです", + "typeVarUsedByOuterScope": "TypeVar \"{name}\" は外部スコープで既に使用されています", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" はジェネリック関数シグネチャに 1 回だけ出現します", + "typeVarVariance": "TypeVar を共変と反変の両方にすることはできません", + "typeVarWithoutDefault": "\"{name}\" は既定の型がないため、型パラメーター リストの \"{other}\" の後に表示できません", + "typeVarsNotInGenericOrProtocol": "Generic[] または Protocol[] には、すべての型変数を含める必要があります", + "typedDictAccess": "TypedDict の項目にアクセスできませんでした", + "typedDictBadVar": "TypedDict クラスには型注釈のみを含めることができます", + "typedDictBaseClass": "TypedDict クラスのすべての基底クラスも TypedDict クラスである必要があります", + "typedDictBoolParam": "\"{name}\" パラメーターの値は True または False である必要があります", + "typedDictDelete": "TypedDict の項目を削除できませんでした", + "typedDictEmptyName": "TypedDict 内の名前を空にすることはできません", + "typedDictEntryName": "辞書エントリ名に文字列リテラルが必要です", + "typedDictEntryUnique": "ディクショナリ内の名前は一意である必要があります", + "typedDictExtraArgs": "追加の TypedDict 引数はサポートされていません", + "typedDictFieldReadOnlyRedefinition": "TypedDict フィールド \"{name}\" を読み取り専用として再定義することはできません", + "typedDictFieldTypeRedefinition": "TypedDict フィールド \"{name}\" の型を再定義できません", + "typedDictFirstArg": "最初の引数として TypedDict クラス名が必要です", + "typedDictSecondArgDict": "2 番目のパラメーターとして dict パラメーターまたはキーワード パラメーターが必要です", + "typedDictSecondArgDictEntry": "単純な辞書エントリが必要です", + "typedDictSet": "TypedDict で項目を割り当てることができませんでした", + "unaccessedClass": "クラス \"{name}\" にアクセスできません", + "unaccessedFunction": "関数 \"{name}\" にアクセスできません", + "unaccessedImport": "インポート \"{name}\" にアクセスできません", + "unaccessedSymbol": "\"{name}\" にアクセスできません", + "unaccessedVariable": "変数 \"{name}\" にアクセスできません", + "unannotatedFunctionSkipped": "関数 \"{name}\" の分析は、表示されないためスキップされます", + "unexpectedAsyncToken": "\"def\"、\"with\"、または \"for\" が \"async\" の後に続く必要があります", + "unexpectedExprToken": "式の最後に予期しないトークンが含まれています", + "unexpectedIndent": "予期しないインデント", + "unexpectedUnindent": "インデント解除は予期されていません", + "unhashableDictKey": "辞書キーはハッシュ可能である必要があります", + "unhashableSetEntry": "設定エントリはハッシュ可能である必要があります", + "uninitializedAbstractVariables": "抽象基底クラスで定義された変数は、最終クラス \"{classType}\" で初期化されません", + "uninitializedInstanceVariable": "インスタンス変数 \"{name}\" は、クラス本体または__init__ メソッドで初期化されていません", + "unionForwardReferenceNotAllowed": "共用体構文を文字列オペランドと共に使用することはできません。式全体を引用符で囲んでください", + "unionSyntaxIllegal": "共用体の代替構文には Python 3.10 以降が必要です", + "unionTypeArgCount": "共用体には 2 つ以上の型引数が必要です", + "unmatchedEndregionComment": "#endregion対応する#regionがありません", + "unmatchedRegionComment": "#region に対応する #endregion がありません", + "unnecessaryCast": "不要な \"キャスト\" 呼び出し。型は既に \"{type}\" です", + "unnecessaryIsInstanceAlways": "不要な isinstance 呼び出し。\"{testType}\" は常に \"{classType}\" のインスタンスです", + "unnecessaryIsSubclassAlways": "不要な issubclass 呼び出し。\"{testType}\" は常に \"{classType}\" のサブクラスです", + "unnecessaryPyrightIgnore": "不要な \"#ight: ignore\" コメント", + "unnecessaryPyrightIgnoreRule": "不要な \"# pyright: ignore\" ルール: \"{name}\"", + "unnecessaryTypeIgnore": "不要な \"# type: ignore\" コメント", + "unpackArgCount": "\"Unpack\" の後に 1 つの型引数が必要です", + "unpackExpectedTypeVarTuple": "Unpack の型引数として TypeVarTuple または Tuple が必要です", + "unpackExpectedTypedDict": "Unpack に必要な TypedDict 型引数", + "unpackIllegalInComprehension": "アンパック操作は理解できません", + "unpackInAnnotation": "型注釈ではアンパック演算子は使用できません", + "unpackInDict": "アンパック操作はディクショナリで許可されていません", + "unpackInSet": "アンパック演算子はセット内では使用できません", + "unpackNotAllowed": "このコンテキストではアンパックは許可されていません", + "unpackOperatorNotAllowed": "このコンテキストではアンパック操作は許可されていません", + "unpackTuplesIllegal": "Python 3.8 より前のタプルではアンパック操作は許可されていません", + "unpackedArgInTypeArgument": "アンパックされた引数は、型引数リストでは使用できません", + "unpackedArgWithVariadicParam": "アンパックされた引数は TypeVarTuple パラメーターには使用できません", + "unpackedDictArgumentNotMapping": "** の後の引数式は、\"str\" キー型のマッピングである必要があります", + "unpackedDictSubscriptIllegal": "下付き文字の辞書アンパック演算子は使用できません", + "unpackedSubscriptIllegal": "下付き文字の Unpack 演算子には Python 3.11 以降が必要です", + "unpackedTypeVarTupleExpected": "アンパックされた TypeVarTuple が必要です。Unpack[{name1}] または *{name2} を使用してください", + "unpackedTypedDictArgument": "アンパックされた TypedDict 引数をパラメーターと一致させることはできません", + "unreachableCode": "コードに到達できません", + "unreachableExcept": "例外が既に処理されているため、Except 句に到達できません", + "unsupportedDunderAllOperation": "\"__all__\" に対する操作はサポートされていないため、エクスポートされたシンボル リストが正しくない可能性があります", + "unusedCallResult": "呼び出し式の結果は \"{type}\" 型であり、使用されません。これが意図的な場合は変数 \"_\" に代入する", + "unusedCoroutine": "非同期関数呼び出しの結果は使用されません。\"await\" を使用するか、結果を変数に代入してください", + "unusedExpression": "式の値が使用されていません", + "varAnnotationIllegal": "変数の型注釈には Python 3.6 以降が必要です。以前のバージョンとの互換性のために型コメントを使用する", + "variableFinalOverride": "変数 \"{name}\" は Final とマークされ、クラス \"{className}\" の同じ名前の Final 以外の変数をオーバーライドします", + "variadicTypeArgsTooMany": "型引数リストには、アンパックされた TypeVarTuple または Tuple を最大 1 つ含めることができます", + "variadicTypeParamTooManyAlias": "型エイリアスには TypeVarTuple 型パラメーターを最大 1 つ含めることができますが、複数の ({names}) を受け取りました", + "variadicTypeParamTooManyClass": "ジェネリック クラスには最大 1 つの TypeVarTuple 型パラメーターを指定できますが、複数の ({names}) を受け取りました", + "walrusIllegal": "演算子 \":=\" には Python 3.8 以降が必要です", + "walrusNotAllowed": "演算子 \":=\" は、かっこを囲まないこのコンテキストでは使用できません", + "wildcardInFunction": "ワイルドカードのインポートは、クラスまたは関数内では許可されていません", + "wildcardLibraryImport": "ライブラリからのワイルドカードインポートは許可されていません", + "wildcardPatternTypePartiallyUnknown": "ワイルドカード パターンによってキャプチャされた型は部分的に不明です", + "wildcardPatternTypeUnknown": "ワイルドカード パターンによってキャプチャされた型が不明です", + "yieldFromIllegal": "\"yield from\" を使用するには Python 3.3 以降が必要です", + "yieldFromOutsideAsync": "非同期関数では \"yield from\" は使用できません", + "yieldOutsideFunction": "関数またはラムダの外部では \"yield\" は許可されません", + "yieldWithinListCompr": "\"yield\" はリスト理解内では使用できません", + "zeroCaseStatementsFound": "Match ステートメントには、少なくとも 1 つの case ステートメントを含める必要があります", + "zeroLengthTupleNotAllowed": "このコンテキストでは長さ 0 のタプルは使用できません" + }, + "DiagnosticAddendum": { + "argParam": "引数はパラメーター \"{paramName}\" に対応します", + "argParamFunction": "引数は関数 \"{functionName}\" のパラメーター \"{paramName}\" に対応します", + "argsParamMissing": "パラメーター \"*{paramName}\" に対応するパラメーターがありません", + "argsPositionOnly": "位置のみのパラメーターの不一致。{expected} が必要ですが、{received} を受信しました", + "argumentType": "引数の型は \"{type}\" です", + "argumentTypes": "引数の型: ({types})", + "assignToNone": "型を \"None\" 型に割り当てることはできません", + "asyncHelp": "\"async with\" を意味しましたか?", + "baseClassOverriddenType": "基底クラス \"{baseClass}\" は、オーバーライドされる型 \"{type}\" を提供します", + "baseClassOverridesType": "基底クラス \"{baseClass}\" は型 \"{type}\" でオーバーライドします", + "conditionalRequiresBool": "型 \"{operandType}\" のメソッド __bool__は、\"bool\" ではなく型 \"{boolReturnType}\" を返します", + "dataClassFieldLocation": "フィールド宣言", + "dataClassFrozen": "\"{name}\" は固定されています", + "finalMethod": "最終的なメソッド", + "functionParamDefaultMissing": "パラメーター \"{name}\" に既定の引数がありません", + "functionParamName": "パラメーター名の不一致: \"{destName}\" と \"{srcName}\"", + "functionReturnTypeMismatch": "関数の戻り値の型 \"{sourceType}\" は型 \"{destType}\" と互換性がありません", + "functionTooFewParams": "関数が受け入れる位置指定パラメーターが少なすぎます。{expected} が必要ですが、{received} を受信しました", + "functionTooManyParams": "関数が受け入れる位置指定パラメーターが多すぎます。{expected} が必要ですが、{received} を受信しました", + "incompatibleDeleter": "プロパティ削除子メソッドに互換性がありません", + "incompatibleGetter": "プロパティ getter メソッドに互換性がありません", + "incompatibleSetter": "プロパティ セッター メソッドに互換性がありません", + "initMethodLocation": "__init__ メソッドはクラス \"{type}\" で定義されています", + "initMethodSignature": "__init__の署名は \"{type}\" です", + "keyNotRequired": "\"{name}\" は \"{type}\" の必須キーではないため、アクセスすると実行時例外が発生する可能性があります", + "keyReadOnly": "\"{name}\" は \"{type}\" の読み取り専用キーです", + "keyRequiredDeleted": "\"{name}\" は必須キーであり、削除できません", + "keyUndefined": "\"{name}\" は \"{type}\" で定義されたキーではありません", + "kwargsParamMissing": "パラメーター \"**{paramName}\" に対応するパラメーターがありません", + "listAssignmentMismatch": "型 \"{type}\" はターゲット リストと互換性がありません", + "literalAssignmentMismatch": "\"{sourceType}\" を型 \"{destType}\" に割り当てることはできません", + "matchIsNotExhaustiveHint": "完全な処理が意図されていない場合は、\"case _: pass\" を追加します", + "matchIsNotExhaustiveType": "ハンドルされない型: \"{type}\"", + "memberAssignment": "型 \"{type}\" の式をクラス \"{classType}\" のメンバー \"{name}\" に割り当てることはできません", + "memberIsAbstract": "\"{type.{name}\" は抽象です", + "memberIsAbstractMore": "その他 {count} 件...", + "memberIsFinalInProtocol": "\"{name}\" はプロトコルで Final とマークされています", + "memberIsInitVar": "メンバー \"{name}\" は init 専用フィールドです", + "memberIsInvariant": "\"{name}\" は変更可能であるため、不変です", + "memberIsNotFinalInProtocol": "\"{name}\" はプロトコルで Final としてマークされていません", + "memberSetClassVar": "メンバー \"{name}\" は ClassVar であるため、クラス インスタンスを介して割り当てることはできません", + "memberTypeMismatch": "\"{name}\" は互換性のない型です", + "memberUnknown": "メンバー \"{name}\" が不明です", + "missingDeleter": "プロパティ削除メソッドがありません", + "missingGetter": "プロパティ getter メソッドがありません", + "missingProtocolMember": "メンバー \"{name}\" はプロトコル クラス \"{classType}\" で宣言されています", + "missingSetter": "プロパティ セッター メソッドがありません", + "namedParamMissingInDest": "キーワード パラメーター \"{name}\" が変換先に見つかりません", + "namedParamMissingInSource": "キーワード パラメーター \"{name}\" がソースに見つかりません", + "namedParamTypeMismatch": "型 \"{sourceType}\" のキーワード パラメーター \"{name}\" を型 \"{destType}\" に割り当てることはできません", + "newMethodLocation": "__new__ メソッドはクラス \"{type}\" で定義されています", + "newMethodSignature": "__new__の署名は \"{type}\" です", + "noOverloadAssignable": "型 \"{type}\" に一致するオーバーロードされた関数はありません", + "orPatternMissingName": "名前がありません: {name}", + "overloadNotAssignable": "\"{name}\" の 1 つ以上のオーバーロードが割り当て可能ではありません", + "overloadSignature": "オーバーロードシグネチャはここで定義されています", + "overloadWithImplementation": "関数オーバーロードの本体は \"...\" である必要があります。", + "overriddenMethod": "オーバーライドされたメソッド", + "overriddenSymbol": "オーバーライドされたシンボル", + "overrideNoOverloadMatches": "オーバーライドのオーバーロード シグネチャが基本メソッドと互換性がありません", + "overrideNotClassMethod": "基本メソッドは classmethod として宣言されていますが、オーバーライドはされていません", + "overrideNotInstanceMethod": "基本メソッドはインスタンス メソッドとして宣言されていますが、オーバーライドは宣言されていません", + "overrideNotStaticMethod": "基本メソッドは staticmethod として宣言されていますが、オーバーライドは宣言されていません", + "overrideOverloadNoMatch": "オーバーロード {index} は基本メソッドと互換性がありません", + "overrideOverloadOrder": "オーバーライド メソッドのオーバーロードは、基本メソッドと同じ順序にする必要があります", + "overrideParamKeywordNoDefault": "キーワード パラメーター \"{name}\" の不一致: 基本パラメーターに既定の引数値があり、オーバーライド パラメーターにはありません", + "overrideParamKeywordType": "キーワード パラメーター \"{name}\" の型が一致しません: 基本パラメーターは型 \"{baseType}\"、オーバーライド パラメーターは型 \"{overrideType}\" です", + "overrideParamName": "パラメーター {index} 名が一致しません: ベース パラメーターの名前は \"{baseName}\"、オーバーライド パラメーターは \"{overrideName}\" です", + "overrideParamNameExtra": "パラメーター \"{name}\" が ベース に見つかりません", + "overrideParamNameMissing": "パラメーター \"{name}\" がオーバーライドに見つかりません", + "overrideParamNamePositionOnly": "パラメーター {index} 名の不一致: 基本パラメーターの名前は \"{baseName}\"、オーバーライド パラメーターは位置のみ\" です", + "overrideParamNoDefault": "パラメーター {index} の不一致: 基本パラメーターに既定の引数値があり、オーバーライド パラメーターが指定されていません", + "overrideParamType": "パラメーター {index} の型が一致しません: 基本パラメーターは型 \"{baseType}\"、オーバーライド パラメーターは型 \"{overrideType}\" です", + "overridePositionalParamCount": "位置指定パラメーター数が一致しません。基本メソッドには {baseCount} がありますが、オーバーライドには {overrideCount} があります", + "overrideReturnType": "戻り値の型の不一致: 基本メソッドは型 \"{baseType}\" を返し、オーバーライドは型 \"{overrideType}\" を返します", + "overrideType": "基底クラスは型を \"{type}\" として定義します", + "paramAssignment": "パラメーター {index}: 型 \"{sourceType}\" を型 \"{destType}\" に割り当てることはできません", + "paramSpecMissingInOverride": "ParamSpec パラメーターが override メソッドに見つかりません", + "paramType": "パラメーターの型は \"{paramType}\" です", + "privateImportFromPyTypedSource": "代わりに \"{module}\" からインポートする", + "propertyAccessFromProtocolClass": "プロトコル クラス内で定義されたプロパティにクラス変数としてアクセスできない", + "propertyMethodIncompatible": "プロパティ メソッド \"{name}\" は互換性がありません", + "propertyMethodMissing": "プロパティ メソッド \"{name}\" がオーバーライドに見つかりません", + "propertyMissingDeleter": "プロパティ \"{name}\" に定義済みの削除子がありません", + "propertyMissingSetter": "プロパティ \"{name}\" に定義済みのセッターがありません", + "protocolIncompatible": "\"{sourceType}\" はプロトコル \"{destType}\" と互換性がありません", + "protocolMemberClassVar": "\"{name}\" はクラス変数ではありません", + "protocolMemberMissing": "\"{name}\" が存在しません", + "protocolSourceIsNotConcrete": "\"{sourceType}\" は具象クラス型ではないため、型 \"{destType}\" に割り当てることはできません", + "pyrightCommentIgnoreTip": "\"#ight: ignore[] を使用して 1 行の診断を抑制する", + "readOnlyAttribute": "属性 \"{name}\" は読み取り専用です", + "seeClassDeclaration": "クラス宣言を参照してください", + "seeDeclaration": "宣言を参照してください", + "seeFunctionDeclaration": "関数の宣言を参照してください", + "seeMethodDeclaration": "メソッド宣言を参照してください", + "seeParameterDeclaration": "パラメーター宣言を参照してください", + "seeTypeAliasDeclaration": "型のエイリアス宣言を参照してください", + "seeVariableDeclaration": "変数宣言を参照してください", + "tupleAssignmentMismatch": "型 \"{type}\" はターゲット タプルと互換性がありません", + "tupleEntryTypeMismatch": "タプル エントリ {entry} の型が正しくありません", + "tupleSizeMismatch": "要素のサイズが一致しません。{expected} が必要ですが、{received} を受信しました", + "typeAssignmentMismatch": "型 \"{sourceType}\" を型 \"{destType}\" に割り当てることはできません", + "typeBound": "型 \"{sourceType}\" は、型変数 \"{name}\" のバインドされた型 \"{destType}\" と互換性がありません", + "typeConstrainedTypeVar": "型 \"{type}\" は制約付き型変数 \"{name}\" と互換性がありません", + "typeIncompatible": "\"{sourceType}\" は \"{destType}\" と互換性がありません", + "typeNotCallable": "型 \"{type}\" は呼び出し可能ではありません", + "typeNotClass": "\"{type}\" はクラスではありません", + "typeNotStringLiteral": "\"{type}\" は文字列リテラルではありません", + "typeOfSymbol": "\"{name}\" の型は \"{type}\" です", + "typeParamSpec": "型 \"{type}\" は ParamSpec \"{name}\" と互換性がありません", + "typeUnsupported": "型 \"{type}\" はサポートされていません", + "typeVarDefaultOutOfScope": "型変数 \"{name}\" はスコープ内にありません", + "typeVarIsContravariant": "TypeVar \"{name}\" は反変です", + "typeVarIsCovariant": "TypeVar \"{name}\" は共変です", + "typeVarIsInvariant": "TypeVar \"{name}\" は不変です", + "typeVarNotAllowed": "型引数を持つ TypeVar またはジェネリック型は使用できません", + "typeVarTupleRequiresKnownLength": "TypeVarTuple を不明な長さのタプルにバインドすることはできません", + "typeVarUnsolvableRemedy": "引数が指定されていない場合に戻り値の型を指定するオーバーロードを指定します", + "typeVarsMissing": "型変数がありません: {names}", + "typedDictFieldMissing": "\"{name}\" が \"{type}\" に見つかりません", + "typedDictFieldNotReadOnly": "\"{name}\" は \"{type}\" では読み取り専用ではありません", + "typedDictFieldNotRequired": "\"{name}\" は \"{type}\" には必要ありません", + "typedDictFieldRequired": "\"{name}\" は \"{type}\" に必要です", + "typedDictFieldTypeMismatch": "型 \"{type}\" はフィールド \"{name}\" に割り当てできません", + "typedDictFieldTypeRedefinition": "親クラスの型は \"{parentType}\" で、子クラスの型は \"{childType}\" です", + "typedDictFieldUndefined": "\"{name}\" は型 \"{type}\" の未定義のフィールドです", + "typedDictFinalMismatch": "@final が一致しないため、\"{sourceType}\" は \"{destType}\" と互換性がありません", + "unhashableType": "型 \"{type}\" はハッシュ可能ではありません", + "uninitializedAbstractVariable": "インスタンス変数 \"{name}\" は抽象基本クラス \"{classType}\" で定義されていますが、初期化されていません", + "unreachableExcept": "\"{exceptionType}\" は \"{parentType}\" のサブクラスです", + "useDictInstead": "辞書の種類を示すには、Dict[T1, T2] を使用します", + "useListInstead": "List[T] を使用してリストの種類を指定するか、Union[T1, T2] を使用して共用体の型を示す", + "useTupleInstead": "Tuple[T1, ..., Tn] を使用してタプル型を示すか、Union[T1, T2] を使用して共用体の型を示します", + "useTypeInstead": "代わりに Type[T] を使用する", + "varianceMismatchForClass": "型引数 \"{typeVarName}\" の分散は、基底クラス \"{className}\" と互換性がありません", + "varianceMismatchForTypeAlias": "型引数 \"{typeVarName}\" の分散は \"{typeAliasParam}\" と互換性がありません" + } } diff --git a/packages/pyright-internal/src/localization/package.nls.ko.json b/packages/pyright-internal/src/localization/package.nls.ko.json new file mode 100644 index 000000000..c1ad4d6b1 --- /dev/null +++ b/packages/pyright-internal/src/localization/package.nls.ko.json @@ -0,0 +1,718 @@ +{ + "CodeAction": { + "addOptionalToAnnotation": "형식 주석에 \"선택 사항\"을 추가합니다.", + "createTypeStub": "형식 스텁 만들기", + "createTypeStubFor": "\"{moduleName}\"에 대한 형식 스텁 만들기", + "executingCommand": "명령 실행", + "filesToAnalyzeCount": "분석할 파일 {count}개", + "filesToAnalyzeOne": "분석할 파일 1개", + "findingReferences": "참조 찾기", + "organizeImports": "가져오기 구성", + "renameShadowedFile": "‘{oldFile}’에서 ‘{newFile}’(으)로 이름 바꾸기" + }, + "Diagnostic": { + "abstractMethodInvocation": "\"{method}\" 메서드는 추상이므로 호출할 수 없습니다.", + "annotatedParamCountMismatch": "매개 변수 주석 개수가 일치하지 않습니다. {expected}이)(가) 필요하지만 {received}을(를) 받았습니다.", + "annotatedTypeArgMissing": "\"Annotated\"에 대해 하나의 형식 인수와 하나 이상의 주석이 필요합니다.", + "annotationFormatString": "형식 주석은 형식 문자열 리터럴(f-문자열)을 사용할 수 없습니다.", + "annotationNotSupported": "이 문에는 형식 주석이 지원되지 않습니다.", + "annotationSpansStrings": "형식 주석은 여러 문자열 리터럴에 걸쳐 있을 수 없습니다.", + "annotationStringEscape": "형식 주석에는 이스케이프 문자를 사용할 수 없습니다.", + "argAssignment": "\"{argType}\" 형식의 인수를 \"{paramType}\" 형식의 매개 변수에 할당할 수 없습니다.", + "argAssignmentFunction": "\"{argType}\" 형식의 인수를 \"{functionName}\" 함수의 \"{paramType}\" 형식의 매개 변수에 할당할 수 없습니다.", + "argAssignmentParam": "\"{argType}\" 형식의 인수를 \"{paramType}\" 형식의 \"{paramName}\" 매개 변수에 할당할 수 없습니다.", + "argAssignmentParamFunction": "\"{argType}\" 형식의 인수를 \"{functionName}\" 함수에서 \"{paramType}\" 형식의 \"{paramName}\" 매개 변수에 할당할 수 없습니다.", + "argMissingForParam": "매개 변수 {name}에 대한 인수가 없습니다.", + "argMissingForParams": "매개 변수 {names}에 대한 인수가 없습니다.", + "argMorePositionalExpectedCount": "{expected}개 이상의 위치 인수가 필요합니다.", + "argMorePositionalExpectedOne": "1개의 위치 인수가 더 필요합니다.", + "argPositional": "위치 인수가 필요합니다.", + "argPositionalExpectedCount": "{expected} 위치 인수가 필요합니다.", + "argPositionalExpectedOne": "1개의 위치 인수가 필요합니다.", + "argTypePartiallyUnknown": "인수 형식을 부분적으로 알 수 없습니다.", + "argTypeUnknown": "인수 형식을 알 수 없습니다.", + "assertAlwaysTrue": "어설션 식은 항상 true로 평가됩니다.", + "assertTypeArgs": "\"assert_type\"에는 두 개의 위치 인수가 필요합니다.", + "assertTypeTypeMismatch": "\"assert_type\" 불일치: \"{expected}\"이(가) 필요하지만 \"{received}\"을(를) 받았습니다.", + "assignmentExprComprehension": "‘{name}’ 할당 식 대상은 대상에 대한 이해력과 같은 이름을 사용할 수 없습니다.", + "assignmentExprContext": "할당 식은 모듈, 함수 또는 람다 내에 있어야 합니다.", + "assignmentExprInSubscript": "아래 첨자 내의 할당 식은 Python 3.10 이상에서만 지원됩니다.", + "assignmentInProtocol": "Protocol 클래스 내의 인스턴스 또는 클래스 변수는 클래스 본문 내에서 명시적으로 선언해야 합니다.", + "assignmentTargetExpr": "식은 할당 대상이 될 수 없습니다.", + "asyncNotInAsyncFunction": "비동기 함수 외부에서는 ‘async’가 허용되지 않습니다.", + "awaitIllegal": "\"await\"를 사용하려면 Python 3.5 이상이 필요합니다.", + "awaitNotInAsync": "비동기 함수 내에서만 \"await\"를 사용할 수 있습니다.", + "backticksIllegal": "백틱으로 묶인 식은 Python 3.x에서 지원되지 않습니다. 대신 repr 사용", + "baseClassCircular": "클래스는 스스로에서 파생될 수 없습니다.", + "baseClassFinal": "기본 클래스 \"{type}\"이(가) final로 표시되어 서브클래스할 수 없습니다.", + "baseClassInvalid": "클래스에 대한 인수는 기본 클래스여야 합니다.", + "baseClassMethodTypeIncompatible": "\"{classType}\" 클래스의 기본 클래스가 호환되지 않는 방식으로 \"{name}\" 메서드를 정의합니다.", + "baseClassUnknown": "기본 클래스 형식을 알 수 없으므로 파생 클래스의 형식이 모호합니다.", + "baseClassVariableTypeIncompatible": "\"{classType}\" 클래스의 기본 클래스가 \"{name}\" 변수를 호환되지 않는 방식으로 정의합니다.", + "bindTypeMismatch": "‘{type}’을(를) 매개 변수 ‘{paramName}’에 할당할 수 없으므로 ‘{methodName}’ 메서드를 바인딩할 수 없습니다.", + "breakOutsideLoop": "‘break’는 루프 내에서만 사용할 수 있습니다.", + "callableExtraArgs": "\"Callable\"에 두 개의 형식 인수만 필요합니다.", + "callableFirstArg": "매개 변수 형식 목록 또는 \"...\"가 필요합니다.", + "callableNotInstantiable": "\"{type}\" 형식을 인스턴스화할 수 없습니다.", + "callableSecondArg": "반환 형식이 \"Callable\"에 대한 두 번째 형식 인수로 필요합니다.", + "casePatternIsIrrefutable": "되돌릴 수 없는 패턴은 마지막 case 문에만 사용할 수 있습니다.", + "classAlreadySpecialized": "\"{type}\" 형식이 이미 특수화되어 있습니다.", + "classDecoratorTypeUnknown": "형식화되지 않은 클래스 데코레이터는 클래스 형식을 모호하게 합니다. 데코레이터를 무시합니다.", + "classDefinitionCycle": "‘{name}’에 대한 클래스 정의가 스스로에 종속됩니다.", + "classGetItemClsParam": "__class_getitem__ 재정의는 \"cls\" 매개 변수를 사용해야 합니다.", + "classMethodClsParam": "클래스 메서드는 ‘cls’ 매개 변수를 사용해야 합니다.", + "classNotRuntimeSubscriptable": "클래스 \"{name}\"에 대한 첨자는 런타임 예외를 생성합니다. 따옴표로 형식 주석 묶기", + "classPatternBuiltInArgCount": "클래스 패턴은 최대 1개의 위치 하위 패턴을 허용합니다.", + "classPatternBuiltInArgPositional": "클래스 패턴은 위치 하위 패턴만 허용합니다.", + "classPatternTypeAlias": "‘{type}’은(는) 특수 형식 별칭이므로 클래스 패턴에서 사용할 수 없습니다.", + "classTypeParametersIllegal": "클래스 형식 매개 변수 구문에는 Python 3.12 이상이 필요합니다.", + "classVarFirstArgMissing": "‘ClassVar’ 뒤에 형식 인수가 필요합니다.", + "classVarNotAllowed": "이 컨텍스트에서는 \"ClassVar\"를 사용할 수 없습니다.", + "classVarOverridesInstanceVar": "클래스 변수 \"{name}\"이(가) \"{className}\" 클래스에서 같은 이름의 인스턴스 변수를 재정의합니다.", + "classVarTooManyArgs": "‘ClassVar’ 뒤에는 형식 인수가 하나만 필요합니다.", + "classVarWithTypeVar": "‘ClassVar’ 형식에는 형식 변수를 포함할 수 없습니다.", + "clsSelfParamTypeMismatch": "‘{name}’ 매개 변수의 형식은 해당 ‘{classType}’ 클래스의 상위 형식이어야 합니다.", + "codeTooComplexToAnalyze": "코드가 너무 복잡하여 분석할 수 없습니다. 하위 경로로 리팩터링하거나 조건부 코드 경로를 줄여 복잡성 감소", + "collectionAliasInstantiation": "‘{type}’ 형식을 인스턴스화할 수 없습니다. 대신 ‘{alias}’을(를) 사용하세요.", + "comparisonAlwaysFalse": "\"{leftType}\" 및 \"{rightType}\" 형식이 겹치지 않으므로 조건은 항상 False로 평가됩니다.", + "comparisonAlwaysTrue": "\"{leftType}\" 및 \"{rightType}\" 형식이 겹치지 않으므로 조건은 항상 True로 평가됩니다.", + "comprehensionInDict": "이해력은 다른 사전 항목과 함께 사용할 수 없습니다.", + "comprehensionInSet": "이해력은 다른 집합 항목과 함께 사용할 수 없습니다.", + "concatenateParamSpecMissing": "\"Concatenate\"의 마지막 형식 인수는 ParamSpec이어야 합니다.", + "concatenateTypeArgsMissing": "‘연결’에는 적어도 두 개의 형식 인수가 필요합니다.", + "conditionalOperandInvalid": "’{type}’ 형식의 조건부 피연산자입니다.", + "constantRedefinition": "‘{name}’은(는) 대문자이므로 상수이고 다시 정의할 수 없습니다.", + "constructorNoArgs": "\"{type}\" 생성자에 인수가 필요하지 않습니다.", + "constructorParametersMismatch": "‘{classType}’ 클래스에서 __new__ 서명과 __init__가 불일치합니다.", + "containmentAlwaysFalse": "‘{leftType}’ 및 ‘{rightType}’ 형식이 겹치지 않으므로 식은 항상 False로 평가됩니다.", + "containmentAlwaysTrue": "‘{leftType}’ 및 ‘{rightType}’ 형식이 겹치지 않으므로 식은 항상 True로 평가됩니다.", + "continueInFinally": "finally 절 내에서는 \"continue\"를 사용할 수 없습니다.", + "continueOutsideLoop": "\"continue\"는 루프 내에서만 사용할 수 있습니다.", + "dataClassBaseClassFrozen": "고정되지 않은 클래스는 고정된 클래스에서 상속할 수 없습니다.", + "dataClassBaseClassNotFrozen": "고정 클래스는 고정되지 않은 클래스에서 상속할 수 없습니다.", + "dataClassConverterFunction": "\"{argType}\" 형식의 인수는 \"{fieldType}\" 형식의 \"{fieldName}\" 필드에 유효한 변환기가 아닙니다.", + "dataClassConverterOverloads": "\"{funcName}\"의 오버로드는 \"{fieldType}\" 형식의 \"{fieldName}\" 필드에 유효한 변환기가 아닙니다.", + "dataClassFieldWithDefault": "기본값이 없는 필드는 기본값이 있는 필드 뒤에 나타날 수 없습니다.", + "dataClassFieldWithPrivateName": "데이터 클래스 필드는 프라이빗 이름을 사용할 수 없습니다.", + "dataClassFieldWithoutAnnotation": "형식 주석이 없는 데이터 클래스 필드를 사용하면 런타임 예외가 발생합니다.", + "dataClassPostInitParamCount": "데이터 클래스 __post_init__의 잘못된 매개 변수 수입니다. InitVar 필드 수가 {expected}개입니다.", + "dataClassPostInitType": "데이터 클래스 __post_init__ 메서드 매개 변수 형식이 필드 \"{fieldName}\"에 대해 일치하지 않습니다.", + "dataClassSlotsOverwrite": "__slots__ 클래스에 이미 정의되어 있습니다.", + "dataClassTransformExpectedBoolLiteral": "정적으로 True 또는 False로 계산되는 식이 필요합니다.", + "dataClassTransformFieldSpecifier": "클래스 또는 함수의 튜플이 필요하지만 ‘{type}’ 형식을 받았습니다.", + "dataClassTransformPositionalParam": "\"dataclass_transform\"에 대한 모든 인수는 키워드 인수여야 합니다.", + "dataClassTransformUnknownArgument": "dataclass_transform은 \"{name}\" 인수를 지원하지 않습니다.", + "declaredReturnTypePartiallyUnknown": "선언된 반환 형식 \"{returnType}\"을(를) 부분적으로 알 수 없습니다.", + "declaredReturnTypeUnknown": "선언된 반환 형식을 알 수 없습니다.", + "defaultValueContainsCall": "매개 변수 기본값 식 내에서는 함수 호출 및 변경 가능한 개체를 사용할 수 없습니다.", + "defaultValueNotAllowed": "\"*\" 또는 \"**\"가 있는 매개 변수는 기본값을 가질 수 없습니다.", + "delTargetExpr": "식을 삭제할 수 없습니다.", + "deprecatedClass": "‘{name}’ 클래스는 사용되지 않습니다.", + "deprecatedConstructor": "클래스 \"{name}\"의 생성자는 더 이상 사용되지 않습니다.", + "deprecatedFunction": "이 함수 \"{name}\"은(는) 더 이상 사용되지 않습니다.", + "deprecatedType": "이 형식은 Python {version}부터 사용되지 않습니다. 대신 \"{replacement}\"을(를) 사용하세요.", + "dictExpandIllegalInComprehension": "사전 확장은 이해에 사용할 수 없습니다.", + "dictInAnnotation": "형식 주석에는 사전 식을 사용할 수 없습니다.", + "dictKeyValuePairs": "사전 항목은 키/값 쌍을 포함해야 합니다.", + "dictUnpackIsNotMapping": "사전 압축 풀기 연산자에 대한 매핑이 필요합니다.", + "dunderAllSymbolNotPresent": "\"{name}\"이(가) __all__에 지정되었지만 모듈에 없습니다.", + "duplicateArgsParam": "\"*\" 매개 변수 하나만 허용됨", + "duplicateBaseClass": "중복 기본 클래스는 허용되지 않습니다.", + "duplicateCapturePatternTarget": "‘{name}’ 캡처 대상이 동일한 패턴 내에 두 번 이상 나타날 수 없습니다.", + "duplicateCatchAll": "절을 제외한 하나의 catch-all만 허용됨", + "duplicateEnumMember": "열거형 멤버 \"{name}\"이(가) 이미 선언되었습니다.", + "duplicateGenericAndProtocolBase": "하나의 Generic[...] 또는 Protocol[...] 기본 클래스만 허용됩니다.", + "duplicateImport": "\"{importName}\"을(를) 두 번 이상 가져왔습니다.", + "duplicateKeywordOnly": "\"*\" 구분 기호는 하나만 사용할 수 있습니다.", + "duplicateKwargsParam": "\"**\" 매개 변수 하나만 허용됨", + "duplicateParam": "매개 변수 \"{name}\"이(가) 중복되었습니다.", + "duplicatePositionOnly": "‘/’ 매개 변수 하나민 허용됩니다.", + "duplicateStarPattern": "패턴 시퀀스에는 ‘*’ 패턴을 하나만 사용할 수 있습니다.", + "duplicateStarStarPattern": "‘**’ 항목 하나만 허용됩니다.", + "duplicateUnpack": "목록에서는 한 개의 압축 풀기 작업만 허용됩니다.", + "ellipsisContext": "이 컨텍스트에서는 ‘Final’이 허용되지 않습니다.", + "ellipsisSecondArg": "\"...\"는 두 인수 중 두 번째 인수로만 허용됩니다.", + "enumClassOverride": "열거형 클래스 \"{name}\"은(는) 최종 클래스이며 서브클래스할 수 없습니다.", + "exceptionGroupIncompatible": "예외 그룹 구문(\"except*\")에는 Python 3.11 이상이 필요합니다.", + "exceptionTypeIncorrect": "‘{type}’은 BaseException에서 파생되지 않습니다.", + "exceptionTypeNotClass": "\"{type}\"은(는) 올바른 예외 클래스가 아닙니다.", + "exceptionTypeNotInstantiable": "예외 형식 \"{type}\"에 대한 생성자에는 하나 이상의 인수가 필요합니다.", + "expectedAfterDecorator": "데코레이터 다음에 함수 또는 클래스 선언이 필요합니다.", + "expectedArrow": "\"->\" 다음에 반환 형식 주석이 와야 합니다.", + "expectedAsAfterException": "예외 형식 뒤에 ‘as’가 필요합니다.", + "expectedAssignRightHandExpr": "\"=\" 오른쪽에 식이 필요합니다.", + "expectedBinaryRightHandExpr": "연산자 오른쪽에 식이 필요합니다.", + "expectedBoolLiteral": "True 또는 False가 필요합니다.", + "expectedCase": "\"case\" 문이 필요합니다.", + "expectedClassName": "클래스 이름이 필요합니다.", + "expectedCloseBrace": "\"{\"가 닫혀 있지 않습니다.", + "expectedCloseBracket": "\"[{0}\"이(가) 닫혀 있지 않습니다.", + "expectedCloseParen": "\"(\"가 닫혀 있지 않음", + "expectedColon": "':'가 필요합니다.", + "expectedComplexNumberLiteral": "패턴 일치에 복소수 리터럴이 필요합니다.", + "expectedDecoratorExpr": "Python 3.9 이전의 데코레이터에는 식 형식이 지원되지 않습니다.", + "expectedDecoratorName": "데코레이터 이름이 필요합니다.", + "expectedDecoratorNewline": "데코레이터 끝에 새 줄이 필요합니다.", + "expectedDelExpr": "\"del\" 뒤에 식이 필요합니다.", + "expectedElse": "\"else\"가 필요합니다.", + "expectedEquals": "\"=\"가 필요합니다.", + "expectedExceptionClass": "잘못된 예외 클래스 또는 개체", + "expectedExceptionObj": "필요한 예외 개체, 예외 클래스 또는 없음", + "expectedExpr": "식이 필요합니다.", + "expectedFunctionAfterAsync": "‘async’ 다음에 함수 정의가 필요합니다.", + "expectedFunctionName": "\"def\" 뒤에 함수 이름이 필요합니다.", + "expectedIdentifier": "식별자가 필요합니다.", + "expectedImport": "\"import\"가 필요합니다.", + "expectedImportAlias": "\"as\" 뒤에 기호가 필요합니다.", + "expectedImportSymbols": "가져온 후 하나 이상의 기호 이름이 필요합니다.", + "expectedIn": "\"in\"이 필요합니다.", + "expectedInExpr": "\"in\" 뒤에 식이 필요합니다.", + "expectedIndentedBlock": "들여쓰기 블록이 필요합니다.", + "expectedMemberName": "\".\" 뒤에 멤버 이름이 필요합니다.", + "expectedModuleName": "필요한 모듈 이름", + "expectedNameAfterAs": "‘as’ 뒤에는 기호 이름이 와야 합니다.", + "expectedNamedParameter": "키워드 매개 변수는 \"*\"를 따라야 합니다.", + "expectedNewline": "줄 바꿈이 필요합니다.", + "expectedNewlineOrSemicolon": "문은 줄 바꿈 또는 세미콜론으로 구분해야 합니다.", + "expectedOpenParen": "’(‘가 필요합니다.", + "expectedParamName": "매개 변수 이름이 필요합니다.", + "expectedPatternExpr": "패턴 식이 필요합니다.", + "expectedPatternSubjectExpr": "패턴 제목 식이 필요합니다.", + "expectedPatternValue": "\"a.b\" 형식의 패턴 값 식이 필요합니다.", + "expectedReturnExpr": "\"return\" 뒤에 식이 필요합니다.", + "expectedSliceIndex": "인덱스 또는 조각 식이 필요합니다.", + "expectedTypeNotString": "형식이 필요하지만 문자열 리터럴을 받았습니다.", + "expectedTypeParameterName": "형식 매개 변수 이름이 필요합니다.", + "expectedYieldExpr": "yield 문에 식이 필요합니다.", + "finalClassIsAbstract": "클래스 \"{type}\"이(가) final로 표시되어 있으며 모든 추상 메서드를 구현해야 합니다.", + "finalContext": "이 컨텍스트에서는 \"Final\"을 사용할 수 없습니다.", + "finalMethodOverride": "\"{name}\" 메서드는 \"{className}\" 클래스에 정의된 최종 메서드를 재정의할 수 없습니다.", + "finalReassigned": "‘{name}’이 Final로 선언되었으므로 다시 할당할 수 없습니다.", + "finalRedeclaration": "\"{name}\"이(가) 이전에 Final로 선언되었습니다.", + "finalRedeclarationBySubclass": "부모 클래스 \"{className}\"이(가) Final로 선언하므로 \"{name}\"을(를) 다시 선언할 수 없습니다.", + "finalTooManyArgs": "\"Final\" 뒤에 단일 형식 인수가 필요합니다.", + "finalUnassigned": "\"{name}\"이(가) Final로 선언되었지만 값이 할당되지 않았습니다.", + "formatStringBrace": "f-string 리터럴 내에서는 단일 닫는 중괄호를 사용할 수 없습니다. 이중 닫는 중괄호를 사용하세요.", + "formatStringBytes": "형식 문자열 리터럴(f-strings)은 이진일 수 없습니다.", + "formatStringDebuggingIllegal": "F-string 디버깅 지정자인 ‘=’는 Python 3.8 이상이 필요합니다.", + "formatStringEscape": "Python 3.12 이전의 f-string의 식 부분에 이스케이프 시퀀스(백슬래시)를 사용할 수 없습니다.", + "formatStringExpectedConversion": "f-string에서 \"!\" 뒤에 변환 지정자가 필요합니다.", + "formatStringIllegal": "형식 문자열 리터럴(f-strings)은 Python 3.6 이상이 필요합니다.", + "formatStringInPattern": "패턴에서 형식 문자열을 사용할 수 없습니다.", + "formatStringNestedFormatSpecifier": "형식 문자열 지정자 내에 너무 깊게 중첩된 식", + "formatStringNestedQuote": "f-string 내에 중첩된 문자열은 Python 3.12 이전의 f-string과 같은 따옴표를 사용할 수 없습니다.", + "formatStringUnicode": "형식 문자열 리터럴(f-문자열)은 유니코드일 수 없습니다.", + "formatStringUnterminated": "f-string에 종결되지 않은 식이 있습니다. ‘}‘가 필요합니다.", + "functionDecoratorTypeUnknown": "형식화되지 않은 함수 데코레이터는 함수 형식을 모호하게 합니다. 데코레이터 무시", + "functionInConditionalExpression": "조건식은 항상 True로 평가되는 함수를 참조합니다.", + "functionTypeParametersIllegal": "함수 형식 매개 변수 구문에는 Python 3.12 이상이 필요합니다.", + "futureImportLocationNotAllowed": "__future__ 가져오기는 파일의 시작 부분에 있어야 합니다.", + "generatorAsyncReturnType": "비동기 생성기 함수의 반환 형식은 \"AsyncGenerator[{yieldType}, Any]\"와 호환되어야 합니다.", + "generatorNotParenthesized": "생성기 식은 단독 인수가 아닌 경우 괄호로 지정해야 합니다.", + "generatorSyncReturnType": "생성기 함수의 반환 형식은 \"Generator[{yieldType}, Any, Any]\"와 호환되어야 합니다.", + "genericBaseClassNotAllowed": "‘제네릭’ 기본 클래스는 형식 매개 변수 구문과 함께 사용할 수 없습니다.", + "genericClassAssigned": "제네릭 클래스 형식을 할당할 수 없습니다.", + "genericClassDeleted": "제네릭 클래스 형식을 삭제할 수 없습니다.", + "genericNotAllowed": "이 컨텍스트에서 \"Generic\"이 잘못되었습니다.", + "genericTypeAliasBoundTypeVar": "클래스 내의 제네릭 형식 별칭은 바인딩된 형식 변수 {names}을(를) 사용할 수 없습니다.", + "genericTypeArgMissing": "\"Generic\"에는 하나 이상의 형식 인수가 필요합니다.", + "genericTypeArgTypeVar": "\"Generic\"의 형식 인수는 형식 변수여야 합니다.", + "genericTypeArgUnique": "\"Generic\"의 형식 인수는 고유해야 합니다.", + "globalReassignment": "전역 선언 전에 \"{name}\"이(가) 할당되었습니다.", + "globalRedefinition": "\"{name}\"이(가) 이미 전역으로 선언되었습니다.", + "implicitStringConcat": "암시적 문자열 연결이 허용되지 않습니다.", + "importCycleDetected": "가져오기 체인에서 순환이 검색되었습니다.", + "importDepthExceeded": "가져오기 체인 깊이가 {depth}을(를) 초과했습니다.", + "importResolveFailure": "가져오기 \"{importName}\"을(를) 확인할 수 없습니다.", + "importSourceResolveFailure": "원본에서 가져오기 \"{importName}\"을(를) 확인할 수 없습니다.", + "importSymbolUnknown": "\"{name}\"은(는) 알 수 없는 가져오기 기호입니다.", + "incompatibleMethodOverride": "\"{name}\" 메서드가 호환되지 않는 방식으로 \"{className}\" 클래스를 재정의합니다.", + "inconsistentIndent": "들여쓰기하지 않은 양이 이전 들여쓰기와 일치하지 않습니다.", + "inconsistentTabs": "들여쓰기에서 탭 및 공백의 일관성 없는 사용", + "initMustReturnNone": "\"__init__\"의 반환 형식은 None이어야 합니다.", + "initSubclassClsParam": "__init_subclass__ 재정의는 \"cls\" 매개 변수를 사용해야 합니다.", + "instanceMethodSelfParam": "인스턴스 메서드는 \"self\" 매개 변수를 사용해야 합니다.", + "instanceVarOverridesClassVar": "‘{name}’ 인스턴스 변수가 ‘{className}’ 클래스에서 같은 이름의 클래스 변수를 재정의합니다.", + "instantiateAbstract": "'{type}' 추상 클래스를 인스턴스화할 수 없습니다.", + "instantiateProtocol": "‘{type}’ 프로토콜 클래스를 인스턴스화할 수 없습니다.", + "internalBindError": "파일 \"{file}\"을(를) 바인딩하는 동안 내부 오류가 발생했습니다. {message}", + "internalParseError": "파일 \"{file}\"을(를) 구문 분석하는 동안 내부 오류가 발생했습니다. {message}", + "internalTypeCheckingError": "파일 \"{file}\"의 형식을 확인하는 동안 내부 오류가 발생했습니다. {message}", + "invalidIdentifierChar": "식별자에 잘못된 문자가 있습니다.", + "invalidStubStatement": "형식 스텁 파일 내에서는 문이 의미가 없습니다.", + "invalidTokenChars": "토큰에 잘못된 문자 ‘{text}’이(가) 있습니다.", + "isInstanceInvalidType": "‘issubclass’에 대한 두 번째 인수는 클래스 또는 클래스의 튜플이어야 합니다.", + "isSubclassInvalidType": "\"issubclass\"에 대한 두 번째 인수는 클래스 또는 클래스의 튜플이어야 합니다.", + "keyValueInSet": "집합 내에서 키/값 쌍을 사용할 수 없습니다.", + "keywordArgInTypeArgument": "키워드 인수는 형식 인수 목록에서 사용할 수 없습니다.", + "keywordOnlyAfterArgs": "키워드 전용 인수 구분 기호는 \"*\" 매개 변수 뒤에 사용할 수 없습니다.", + "keywordParameterMissing": "하나 이상의 키워드 매개 변수는 ’*‘ 매개 변수 뒤에 와야 합니다.", + "keywordSubscriptIllegal": "아래 첨자 내의 키워드 인수는 지원되지 않습니다.", + "lambdaReturnTypePartiallyUnknown": "람다의 반환 형식 \"{returnType}\"을(를) 부분적으로 알 수 없습니다.", + "lambdaReturnTypeUnknown": "람다의 반환 형식을 알 수 없습니다.", + "listAssignmentMismatch": "형식이 \"{type}\"인 식을 대상 목록에 할당할 수 없습니다.", + "listInAnnotation": "형식 주석에는 목록 식을 사용할 수 없습니다.", + "literalEmptyArgs": "‘Literal’ 뒤에 하나 이상의 형식 인수가 필요합니다.", + "literalNotCallable": "리터럴 형식은 인스턴스화할 수 없습니다.", + "literalUnsupportedType": "\"Literal\"의 형식 인수는 None, 리터럴 값(int, bool, str 또는 bytes) 또는 열거형 값이어야 합니다.", + "matchIncompatible": "Match 문에는 Python 3.10 이상이 필요합니다.", + "matchIsNotExhaustive": "match 문 내의 사례는 모든 값을 완전히 처리하지 않습니다.", + "maxParseDepthExceeded": "최대 구문 분석 깊이를 초과했습니다. 식을 더 작은 하위 식으로 나누기", + "memberAccess": "\"{type}\" 형식의 멤버 \"{name}\"에 액세스할 수 없습니다.", + "memberDelete": "\"{type}\" 형식의 멤버 \"{name}\"을(를) 삭제할 수 없습니다.", + "memberSet": "‘{type}’ 형식의 ‘{name}’ 멤버에 액세스할 수 없습니다.", + "metaclassConflict": "파생 클래스의 메타클래스는 모든 기본 클래스의 메타클래스의 서브클래스여야 합니다.", + "metaclassDuplicate": "메타클래스를 하나만 제공할 수 있습니다.", + "metaclassIsGeneric": "메타클래스는 제네릭일 수 없습니다.", + "methodNotDefined": "\"{name}\" 메서드가 정의되지 않았습니다.", + "methodNotDefinedOnType": "\"{name}\" 메서드가 \"{type}\" 형식에 정의되지 않았습니다.", + "methodOrdering": "일관된 메서드 순서를 만들 수 없습니다.", + "methodOverridden": "‘{name}’은(는) ‘{className}’ 클래스에서 같은 이름의 메서드를 호환되지 않는 ‘{type}’ 형식으로 재정의합니다.", + "methodReturnsNonObject": "\"{name}\" 메서드가 개체를 반환하지 않습니다.", + "missingProtocolMembers": "클래스가 하나 이상의 프로토콜 클래스에서 파생되지만 필요한 모든 멤버를 구현하지는 않습니다.", + "missingSuperCall": "\"{methodName}\" 메서드가 부모 클래스에서 같은 이름의 메서드를 호출하지 않습니다.", + "moduleAsType": "모듈은 형식으로 사용할 수 없습니다.", + "moduleNotCallable": "모듈을 호출할 수 없습니다.", + "moduleUnknownMember": "‘{memberName}’은(는) ‘{moduleName}’ 모듈의 알려진 멤버가 아닙니다.", + "namedExceptAfterCatchAll": "명명된 except 절은 catch-all except 절 뒤에 나타날 수 없습니다.", + "namedParamAfterParamSpecArgs": "ParamSpec args 매개 변수 뒤에 키워드 매개 변수 \"{name}\"을(를) 시그니처에 표시할 수 없습니다.", + "namedTupleEmptyName": "명명된 튜플 내의 이름은 비워 둘 수 없습니다.", + "namedTupleFirstArg": "명명된 튜플 클래스 이름이 첫 번째 인수로 필요합니다.", + "namedTupleMultipleInheritance": "NamedTuple을 사용한 여러 상속은 지원되지 않습니다.", + "namedTupleNameType": "항목 이름 및 형식을 지정하는 2개 항목 튜플이 필요합니다.", + "namedTupleNameUnique": "명명된 튜플 내의 이름은 고유해야 합니다.", + "namedTupleNoTypes": "\"namedtuple\"은 튜플 항목에 대한 형식을 제공하지 않습니다. 대신 \"NamedTuple\" 사용", + "namedTupleSecondArg": "두 번째 인수로 명명된 튜플 항목 목록이 필요합니다.", + "newClsParam": "__new__ 재정의는 \"cls\" 매개 변수를 사용해야 합니다.", + "newTypeBadName": "NewType의 첫 번째 인수는 문자열 리터럴이어야 합니다.", + "newTypeLiteral": "NewType은 리터럴 형식과 함께 사용할 수 없습니다.", + "newTypeNotAClass": "NewType에 대한 두 번째 인수로 클래스가 필요합니다.", + "newTypeParamCount": "NewType에는 두 개의 위치 인수가 필요합니다.", + "newTypeProtocolClass": "NewType은 프로토콜 클래스와 함께 사용할 수 없습니다.", + "noOverload": "제공된 인수와 일치하는 \"{name}\"에 대한 오버로드가 없습니다.", + "noReturnContainsReturn": "선언된 반환 형식이 \"NoReturn\"인 함수는 return 문을 포함할 수 없습니다.", + "noReturnContainsYield": "선언된 반환 형식이 \"NoReturn\"인 함수는 yield 문을 포함할 수 없습니다.", + "noReturnReturnsNone": "선언된 형식이 \"NoReturn\"인 함수는 \"None\"을 반환할 수 없습니다.", + "nonDefaultAfterDefault": "기본값이 아닌 인수가 기본 인수를 따릅니다.", + "nonLocalInModule": "모듈 수준에서는 비로컬 선언을 사용할 수 없습니다.", + "nonLocalNoBinding": "비로컬 \"{name}\"에 대한 바인딩을 찾을 수 없습니다.", + "nonLocalReassignment": "비로컬 선언 전에 \"{name}\"이(가) 할당되었습니다.", + "nonLocalRedefinition": "\"{name}\"이(가) 이미 비로컬로 선언되었습니다.", + "noneNotCallable": "‘None’ 유형의 개체를 호출할 수 없습니다.", + "noneNotIterable": "\"None\" 형식의 개체는 반복 가능한 값으로 사용할 수 없습니다.", + "noneNotSubscriptable": "’None’ 유형의 개체는 아래 첨자를 사용할 수 없습니다.", + "noneNotUsableWith": "\"None\" 형식의 개체는 \"with\"와 함께 사용할 수 없습니다.", + "noneOperator": "\"None\"에 대해 연산자 \"{operator}\"이(가) 지원되지 않습니다.", + "noneUnknownMember": "\"{name}\"은(는) \"None\"의 알려진 멤버가 아닙니다.", + "notRequiredArgCount": "\"NotRequired\" 뒤에 단일 형식 인수가 필요합니다.", + "notRequiredNotInTypedDict": "이 컨텍스트에서는 \"NotRequired\"를 사용할 수 없습니다.", + "objectNotCallable": "\"{type}\" 형식의 개체를 호출할 수 없습니다.", + "obscuredClassDeclaration": "클래스 선언 \"{name}\"이(가) 같은 이름의 선언으로 가려져 있습니다.", + "obscuredFunctionDeclaration": "함수 선언 \"{name}\"이(가) 동일한 이름의 선언으로 가려집니다.", + "obscuredMethodDeclaration": "메서드 선언 \"{name}\"이(가) 동일한 이름의 선언으로 가려집니다.", + "obscuredParameterDeclaration": "매개 변수 선언 \"{name}\"이(가) 동일한 이름의 선언으로 가려집니다.", + "obscuredTypeAliasDeclaration": "형식 별칭 선언 \"{name}\"이(가) 동일한 이름의 선언으로 가려집니다.", + "obscuredVariableDeclaration": "\"{name}\" 선언이 같은 이름의 선언으로 가려집니다.", + "operatorLessOrGreaterDeprecated": "\"<>\" 연산자는 Python 3에서 지원되지 않습니다. 대신 \"!=\"를 사용하세요.", + "optionalExtraArgs": "‘선택 사항’ 뒤에 1개의 형식 인수가 필요합니다.", + "orPatternIrrefutable": "되돌릴 수 없는 패턴은 ‘or’ 패턴의 마지막 하위 페이지로만 허용됩니다.", + "orPatternMissingName": "\"or\" 패턴 내의 모든 하위 패턴은 동일한 이름을 대상으로 해야 합니다.", + "overlappingOverload": "매개 변수가 오버로드 {obscuredBy}과(와) 겹치므로 \"{name}\"에 대한 오버로드 {obscured}이(가) 사용되지 않습니다.", + "overloadAbstractMismatch": "오버로드된 메서드는 모두 추상이거나 모두 추상이 아니어야 합니다.", + "overloadImplementationMismatch": "오버로드된 구현이 오버로드 {index}의 시그니처와 일치하지 않습니다.", + "overloadReturnTypeMismatch": "\"{name}\"에 대한 {prevIndex} 오버로드가 오버로드 {newIndex}과(와) 겹치고 호환되지 않는 형식을 반환합니다.", + "overloadWithImplementation": "\"{name}\"이(가) 오버로드로 표시되었지만 구현이 포함되어 있습니다.", + "overloadWithoutImplementation": "‘{name}’이(가) 오버로드로 표시되어 있지만 구현이 제공되지 않았습니다.", + "overriddenMethodNotFound": "‘{name}’ 메서드가 재정의로 표시되어 있지만 이름이 같은 기본 메서드가 없습니다.", + "overrideDecoratorMissing": "‘{name}’ 메서드가 재정의로 표시되지 않았지만 ‘{className}’ 클래스에서 메서드를 재정의하고 있습니다.", + "paramAfterKwargsParam": "매개 변수는 ‘**’ 매개 변수 다음에 와야 합니다.", + "paramAlreadyAssigned": "매개 변수 \"{name}\"이(가) 이미 할당되었습니다.", + "paramAnnotationMissing": "‘{name}’ 매개 변수에 대한 형식 주석이 없습니다.", + "paramAssignmentMismatch": "‘{sourceType}’ 형식의 식을 ‘{paramType}’ 형식의 매개 변수에 할당할 수 없습니다.", + "paramNameMissing": "이름이 \"{name}\"인 매개 변수가 없습니다.", + "paramSpecArgsKwargsUsage": "ParamSpec의 \"args\" 및 \"kwargs\" 멤버는 모두 함수 서명 내에 나타나야 합니다.", + "paramSpecArgsMissing": "ParamSpec \"{type}\"에 대한 인수가 없습니다.", + "paramSpecArgsUsage": "ParamSpec의 ‘args’ 멤버는 *args 매개 변수와 함께 사용할 경우에만 유효합니다.", + "paramSpecAssignedName": "ParamSpec을 \"{name}\"이라는 변수에 할당해야 합니다.", + "paramSpecContext": "이 컨텍스트에서는 ParamSpec을 사용할 수 없습니다.", + "paramSpecDefaultNotTuple": "ParamSpec의 기본값에는 줄임표, 튜플 식 또는 ParamSpec이 필요합니다.", + "paramSpecFirstArg": "첫 번째 인수로 ParamSpec의 이름이 필요합니다.", + "paramSpecKwargsUsage": "ParamSpec의 \"kwargs\" 멤버는 **kwargs 매개 변수와 함께 사용할 때만 유효합니다.", + "paramSpecNotBound": "매개 변수 사양 \"{type}\"에 바인딩된 값이 없습니다.", + "paramSpecNotUsedByOuterScope": "ParamSpec \"{name}\"은(는) 이 컨텍스트에서 의미가 없습니다.", + "paramSpecScopedToReturnType": "ParamSpec ‘{name}’은 반환 형식 내에서 호출 가능으로 범위가 지정되며 함수 본문에서 참조할 수 없습니다.", + "paramSpecUnknownArg": "ParamSpec은 한 개 이상의 인수를 지원하지 않습니다.", + "paramSpecUnknownMember": "\"{name}\"은(는) ParamSpec의 알려진 멤버가 아닙니다.", + "paramSpecUnknownParam": "‘{name}’은(는) ParamSpec에 대한 알 수 없는 매개 변수입니다.", + "paramTypeCovariant": "공변(Covariant) 형식 변수는 매개 변수 형식에 사용할 수 없습니다.", + "paramTypePartiallyUnknown": "매개 변수 \"{paramName}\"의 형식을 부분적으로 알 수 없습니다.", + "paramTypeUnknown": "매개 변수 \"{paramName}\"의 형식을 알 수 없습니다.", + "parenthesizedContextManagerIllegal": "‘with’ 문 내의 괄호는 Python 3.9 이상이 필요합니다.", + "patternNeverMatches": "제목 형식 \"{type}\"에 대해 패턴이 일치하지 않습니다.", + "positionArgAfterNamedArg": "위치 인수는 키워드 인수 뒤에 나타날 수 없습니다.", + "positionOnlyAfterArgs": "위치 전용 인수 구분 기호는 \"*\" 매개 변수 뒤에 사용할 수 없습니다.", + "positionOnlyAfterKeywordOnly": "\"/\" 매개 변수는 \"*\" 매개 변수 앞에 나타나야 합니다.", + "positionOnlyFirstParam": "위치 전용 인수 구분 기호는 첫 번째 매개 변수로 허용되지 않습니다.", + "positionOnlyIncompatible": "위치 전용 인수 구분줄에는 Python 3.8 이상이 필요합니다.", + "privateImportFromPyTypedModule": "\"{name}\"은(는) \"{module}\" 모듈에서 내보내지지 않습니다.", + "privateUsedOutsideOfClass": "\"{name}\"은(는) 프라이빗이며 선언된 클래스 외부에서 사용됩니다.", + "privateUsedOutsideOfModule": "\"{name}\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.", + "propertyOverridden": "‘{name}’은(는) ‘{className}’ 클래스에서 같은 이름의 속성을 잘못 재정의합니다.", + "propertyStaticMethod": "속성 getter, setter 또는 deleter에는 정적 메서드를 사용할 수 없습니다.", + "protectedUsedOutsideOfClass": "‘{name}’은(는) 선언된 클래스 외부에서 보호되고 사용됩니다.", + "protocolBaseClass": "‘{classType}’ 프로토콜 클래스는 ‘{baseType}’ 비프로토콜 클래스에서 파생될 수 없습니다.", + "protocolBaseClassWithTypeArgs": "형식 매개 변수 구문을 사용할 때는 Protocol 클래스에 형식 인수가 허용되지 않습니다.", + "protocolIllegal": "\"프로토콜\"을 사용하려면 Python 3.7 이상이 필요합니다.", + "protocolNotAllowedInTypeArgument": "\"Protocol\"은 형식 인수로 사용할 수 없습니다.", + "protocolUsedInCall": "프로토콜 클래스는 \"{name}\" 호출에서 사용할 수 없습니다.", + "protocolVarianceContravariant": "‘{class}‘ 제네릭 프로토콜에서 사용되는 ’{variable}‘ 형식 변수는 반공변이어야 합니다.", + "protocolVarianceCovariant": "‘{class}‘ 제네릭 프로토콜에서 사용되는 ’{variable}‘ 형식 변수는 공변이어야 합니다", + "protocolVarianceInvariant": "‘{class}‘ 제네릭 프로토콜에서 사용되는 ’{variable}‘ 형식 변수는 고정 변수여야 합니다.", + "pyrightCommentInvalidDiagnosticBoolValue": "Pyright 주석 지시문 뒤에는 \"=\"와 true 또는 false 값이 와야 합니다.", + "pyrightCommentInvalidDiagnosticSeverityValue": "Pyright 주석 지시문 뒤에는 \"=\"와 true, false, error, warning, information 또는 none 값이 와야 합니다.", + "pyrightCommentMissingDirective": "Pyright 주석 뒤에는 지시문(기본 또는 엄격) 또는 진단 규칙이 있어야 합니다.", + "pyrightCommentNotOnOwnLine": "파일 수준 설정을 제어하는 데 사용되는Pyright 주석은 고유의 줄에 표시되어야 합니다.", + "pyrightCommentUnknownDiagnosticRule": "\"{rule}\"은(는) pyright 주석에 대한 알 수 없는 진단 규칙입니다.", + "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\"이(가) pyright 주석에 대해 잘못된 값입니다. true, false, error, warning, information 또는 none이 필요합니다.", + "pyrightCommentUnknownDirective": "\"{directive}\"은(는) pyright 주석에 대한 알 수 없는 지시문입니다. \"strict\" 또는 \"basic\"이 필요합니다.", + "readOnlyArgCount": "‘ReadOnly‘ 뒤에는 단일 형식 인수가 필요합니다.", + "readOnlyNotInTypedDict": "이 컨텍스트에서는 \"ReadOnly\"를 사용할 수 없습니다.", + "recursiveDefinition": "‘{name}’ 형식이 스스로를 참조하므로 확인할 수 없습니다.", + "relativeImportNotAllowed": "상대 가져오기는 \"import .a\" 양식과 함께 사용할 수 없습니다. 대신 \"from . import a\"을(를) 사용합니다.", + "requiredArgCount": "‘Required’ 뒤에 단일 형식 인수가 필요합니다.", + "requiredNotInTypedDict": "이 컨텍스트에서는 \"Required\"를 사용할 수 없습니다.", + "returnInAsyncGenerator": "값이 있는 Return 문은 비동기 생성기에서 사용할 수 없습니다.", + "returnMissing": "선언된 형식의 ‘{returnType}’이 있는 함수는 모든 코드 경로에서 값을 반환해야 합니다.", + "returnOutsideFunction": "‘return’은 함수 내에서만 사용할 수 있습니다.", + "returnTypeContravariant": "반공변 유형 변수는 반환 형식에 사용할 수 없습니다.", + "returnTypeMismatch": "\"{exprType}\" 형식의 식을 반환 형식 \"{returnType}\"에 할당할 수 없습니다.", + "returnTypePartiallyUnknown": "반환 형식 \"{returnType}\"을(를) 부분적으로 알 수 없습니다.", + "returnTypeUnknown": "반환 유형을 알 수 없습니다.", + "revealLocalsArgs": "‘reveal_locals’ 호출은 인수가 필요하지 않습니다.", + "revealLocalsNone": "이 범위에 로컬이 없습니다.", + "revealTypeArgs": "\"reveal_type\" 호출에는 단일 위치 인수가 필요합니다.", + "revealTypeExpectedTextArg": "‘reveal_type’ 함수의 ‘expected_text’ 인수는 str 리터럴 값이어야 합니다.", + "revealTypeExpectedTextMismatch": "텍스트 형식이 일치하지 않습니다. \"{expected}\"이(가) 필요하지만 \"{received}\"을(를) 받았습니다.", + "revealTypeExpectedTypeMismatch": "텍스트 형식이 일치하지 않습니다. ‘{expected}’이(가) 필요하지만 ‘{received}’을(를) 받았습니다.", + "selfTypeContext": "이 컨텍스트에서는 \"Self\"가 잘못되었습니다.", + "selfTypeWithTypedSelfOrCls": "\"Self\"는 \"Self\" 이외의 형식 주석이 있는 'self' 또는 'cls' 매개 변수가 있는 함수에서 사용할 수 없습니다.", + "setterGetterTypeMismatch": "속성 setter 값 형식을 getter 반환 형식에 할당할 수 없습니다.", + "singleOverload": "\"{name}\"이(가) 오버로드로 표시되었지만 추가 오버로드가 없습니다.", + "slotsAttributeError": "__slots__에서 ‘{name}’이(가) 지정되지 않았습니다.", + "slotsClassVarConflict": "‘{name}‘이(가) __slots__에 선언된 instance 변수와 충돌합니다.", + "starPatternInAsPattern": "별 무늬는 \"as\" 대상과 함께 사용할 수 없습니다.", + "starPatternInOrPattern": "별 무늬는 다른 패턴 내에서 ORed할 수 없습니다.", + "starStarWildcardNotAllowed": "**는 와일드카드 \"_\"와 함께 사용할 수 없습니다.", + "staticClsSelfParam": "정적 메서드는 \"self\" 또는 \"cls\" 매개 변수를 사용하면 안 됩니다.", + "stdlibModuleOverridden": "‘{path}’이(가) ‘{name}’ stdlib 모듈을 재정의하고 있습니다.", + "strictTypeGuardReturnType": "StrictTypeGuard의 반환 형식(\"{returnType}\")은 값 매개 변수 형식(\"{type}\")에 할당할 수 없습니다.", + "stringNonAsciiBytes": "ASCII가 아닌 문자는 바이트 문자열 리터럴에 허용되지 않습니다.", + "stringNotSubscriptable": "형식 주석에는 문자열 식을 첨자할 수 없습니다. 전체 주석을 따옴표로 묶습니다.", + "stringUnsupportedEscape": "문자열 리터럴에 지원되지 않는 이스케이프 시퀀스가 있습니다.", + "stringUnterminated": "문자열 리터럴이 종료되지 않았습니다.", + "stubFileMissing": "\"{importName}\"에 대한 스텁 파일을 찾을 수 없습니다.", + "stubUsesGetAttr": "형식 스텁 파일이 불완전합니다. \"__getattr__\"는 모듈에 대한 형식 오류를 모호하게 합니다.", + "sublistParamsIncompatible": "하위 목록 매개 변수는 Python 3.x에서 지원되지 않습니다.", + "superCallArgCount": "‘super’ 호출에는 인수가 2개 이하여야 합니다.", + "superCallFirstArg": "\"super\" 호출에 대한 첫 번째 인수로 클래스 형식이 필요하지만 \"{type}\"을(를) 받았습니다.", + "superCallSecondArg": "\"super\" 호출에 대한 두 번째 인수는 \"{type}\"에서 파생된 개체 또는 클래스여야 합니다.", + "superCallZeroArgForm": "\"super\" 호출의 인수가 0인 형식은 클래스 내에서만 유효합니다.", + "symbolIsPossiblyUnbound": "\"{name}\"은(는) 바인딩되지 않은 것일 수 있습니다.", + "symbolIsUnbound": "\"{name}\"의 바인딩이 해제되었습니다.", + "symbolIsUndefined": "\"{name}\"이(가) 정의되지 않았습니다.", + "symbolOverridden": "\"{name}\"이(가) 클래스 \"{className}\"에서 동일한 이름의 기호를 재정의합니다.", + "totalOrderingMissingMethod": "클래스는 total_ordering을 사용하려면 \"__lt__\", \"__le__\", \"__gt__\" 또는 \"__ge__\" 중 하나를 정의해야 합니다.", + "trailingCommaInFromImport": "주변 괄호 없이는 후행 쉼표를 사용할 수 없습니다.", + "tryWithoutExcept": "try 문에는 except 또는 finally 절이 하나 이상 있어야 합니다.", + "tupleAssignmentMismatch": "형식이 ‘{type}’인 식을 대상 목록에 할당할 수 없습니다.", + "tupleInAnnotation": "형식 주석에는 튜플 식을 사용할 수 없습니다.", + "tupleIndexOutOfRange": "{index} 인덱스가 {type} 형식의 범위를 벗어났습니다.", + "typeAliasIllegalExpressionForm": "형식 별칭 정의에 대한 식 양식이 잘못되었습니다.", + "typeAliasIsRecursiveDirect": "형식 별칭 ‘{name}’의 정의에서 스스로를 사용할 수 없습니다.", + "typeAliasNotInModuleOrClass": "TypeAlias는 모듈 또는 클래스 범위 내에서만 정의할 수 있습니다.", + "typeAliasRedeclared": "\"{name}\"은(는) TypeAlias로 선언되며 한 번만 할당할 수 있습니다.", + "typeAliasStatementIllegal": "형식 별칭 문에는 Python 3.12 이상이 필요합니다.", + "typeAliasTypeMustBeAssigned": "TypeAliasType은 형식 별칭과 이름이 같은 변수에 할당해야 합니다.", + "typeAliasTypeNameArg": "TypeAliasType의 첫 번째 인수는 형식 별칭의 이름을 나타내는 문자열 리터럴이어야 합니다.", + "typeAliasTypeNameMismatch": "형식 별칭의 이름은 할당된 변수의 이름과 일치해야 합니다.", + "typeAliasTypeParamInvalid": "형식 매개 변수 목록은 TypeVar, TypeVarTuple 또는 ParamSpec만 포함하는 튜플이어야 합니다.", + "typeAnnotationCall": "형식 주석이 잘못되었습니다. 호출 식이 허용되지 않습니다.", + "typeAnnotationVariable": "잘못된 형식 주석: 형식 별칭이 아니면 변수를 사용할 수 없습니다.", + "typeArgListExpected": "ParamSpec, 줄임표 또는 형식 목록이 필요합니다.", + "typeArgListNotAllowed": "이 형식 인수에는 목록 식을 사용할 수 없습니다.", + "typeArgsExpectingNone": "클래스 \"{name}\"에 형식 인수가 필요하지 않습니다.", + "typeArgsMismatchOne": "하나의 형식 인수가 필요하지만 {received}을(를) 받았습니다.", + "typeArgsMissingForAlias": "제네릭 형식 별칭 \"{name}\"에 대한 형식 인수가 필요합니다.", + "typeArgsMissingForClass": "‘{name}’ 제네릭 클래스에 대한 형식 인수가 필요합니다.", + "typeArgsTooFew": "\"{name}\"에 대해 제공된 형식 인수가 너무 적습니다. {expected}이(가) 필요하지만 {received}을(를) 받았습니다.", + "typeArgsTooMany": "‘{name}’에 대한 형식 인수가 너무 많습니다. {expected}이(가) 필요하지만 {received}을(를) 받았습니다.", + "typeAssignmentMismatch": "\"{sourceType}\" 형식의 식을 선언된 형식 \"{destType}\"에 할당할 수 없습니다.", + "typeCallNotAllowed": "type() 호출은 형식 주석에 사용하면 안 됩니다.", + "typeCommentDeprecated": "형식 주석의 사용은 더 이상 사용되지 않습니다. 대신 형식 주석 사용", + "typeExpectedClass": "형식 식이 필요하지만 \"{type}\"을(를) 받았습니다.", + "typeGuardArgCount": "\"TypeGuard\" 뒤에 단일 형식 인수가 필요합니다.", + "typeGuardParamCount": "사용자 정의 type guard 함수 및 메서드에는 하나 이상의 입력 매개 변수가 있어야 합니다.", + "typeNotAwaitable": "‘{type}’은(는) 대기할 수 없습니다.", + "typeNotCallable": "‘{expression}’은(는) ‘{type}’ 형식이며 호출할 수 없습니다.", + "typeNotIntantiable": "\"{type}\"을(를) 인스턴스화할 수 없습니다.", + "typeNotIterable": "\"{type}\" 반복할 수 없습니다.", + "typeNotSpecializable": "‘{type}’ 형식을 특수화할 수 없습니다.", + "typeNotSubscriptable": "\"{type}\" 형식의 개체를 첨자할 수 없습니다.", + "typeNotSupportBinaryOperator": "‘{operator}’ 연산자는 ‘{leftType}’ 및 ‘{rightType}’ 형식에 대해 지원되지 않습니다.", + "typeNotSupportBinaryOperatorBidirectional": "예상 형식이 ‘{expectedType}’인 경우 ‘{type}’ 형식에 대해 ‘{operator}’ 연산자가 지원되지 않습니다.", + "typeNotSupportUnaryOperator": "‘None‘에 대해 ’{operator}‘ 연산자가 지원되지 않습니다.", + "typeNotSupportUnaryOperatorBidirectional": "예상 형식이 \"{expectedType}\" 경우 형식 \"{type}\"에 대해 연산자 \"{operator}\"이(가) 지원되지 않습니다.", + "typeNotUsableWith": "\"{type}\" 형식의 개체는 {method}을(를) 구현하지 않으므로 \"with\"와 함께 사용할 수 없습니다.", + "typeParameterBoundNotAllowed": "바운드 또는 제약 조건은 가변 인자 형식 매개 변수 또는 ParamSpec와 함께 사용할 수 없습니다.", + "typeParameterConstraintTuple": "형식 매개 변수 제약 조건은 두 개 이상의 형식 튜플이어야 합니다.", + "typeParameterExistingTypeParameter": "형식 매개 변수 \"{name}\"이(가) 이미 사용 중입니다.", + "typeParameterNotDeclared": "형식 매개 변수 \"{name}\"이(가) \"{container}\"의 형식 매개 변수 목록에 포함되어 있지 않습니다.", + "typeParametersMissing": "하나 이상의 형식 매개 변수를 지정해야 합니다.", + "typePartiallyUnknown": "\"{name}\"의 형식을 부분적으로 알 수 없습니다.", + "typeUnknown": "\"{name}\" 유형을 알 수 없습니다.", + "typeVarAssignedName": "TypeVar을 \"{name}\"이라는 변수에 할당해야 합니다.", + "typeVarAssignmentMismatch": "‘{type}’ 형식을 ‘{name}’ 형식 변수에 할당할 수 없습니다.", + "typeVarBoundAndConstrained": "TypeVar는 바인딩되고 제한될 수 없습니다.", + "typeVarBoundGeneric": "TypeVar 바인딩 형식은 제네릭일 수 없습니다.", + "typeVarConstraintGeneric": "TypeVar 제약 조건 형식은 제네릭일 수 없습니다.", + "typeVarDefaultBoundMismatch": "TypeVar 기본 형식은 바인딩된 형식의 하위 형식이어야 합니다.", + "typeVarDefaultConstraintMismatch": "TypeVar 기본 형식은 제약이 있는 형식 중 하나여야 합니다.", + "typeVarDefaultIllegal": "형식 변수 기본 형식은 Python 3.13 이상이 필요합니다.", + "typeVarDefaultInvalidTypeVar": "형식 매개 변수 \"{name}\"에 범위를 벗어난 하나 이상의 형식 변수를 참조하는 기본 형식이 있습니다.", + "typeVarFirstArg": "TypeVar의 이름이 첫 번째 인수로 필요합니다.", + "typeVarNoMember": "TypeVar \"{type}\"에 멤버 \"{name}\"이(가) 없습니다.", + "typeVarNotSubscriptable": "TypeVar \"{type}\"을(를) 첨자할 수 없습니다.", + "typeVarNotUsedByOuterScope": "형식 변수 \"{name}\"은(는) 이 컨텍스트에서 의미가 없습니다.", + "typeVarPossiblyUnsolvable": "호출자가 ‘{param}’ 매개 변수에 대한 인수를 제공하지 않으면 ‘{name}’ 형식 변수가 확인되지 않을 수 있습니다.", + "typeVarScopedToReturnType": "‘{name}’ 형식 변수는 반환 형식 내에서 호출 가능으로 범위가 지정되며 함수 본문에서 참조할 수 없습니다.", + "typeVarSingleConstraint": "TypeVar에는 두 개 이상의 제한된 형식이 있어야 합니다.", + "typeVarTupleContext": "이 컨텍스트에서는 TypeVarTuple을 사용할 수 없습니다.", + "typeVarTupleDefaultNotUnpacked": "TypeVarTuple 기본 형식은 압축을 푼 튜플 또는 TypeVarTuple이어야 합니다.", + "typeVarTupleMustBeUnpacked": "TypeVarTuple 값에는 압축 풀기 연산자가 필요합니다.", + "typeVarTupleUnknownParam": "\"{name}\"은(는) TypeVarTuple에 대한 알 수 없는 매개 변수입니다.", + "typeVarUnknownParam": "‘{name}’은(는) TypeVar에 대한 알 수 없는 매개 변수입니다.", + "typeVarUsedByOuterScope": "TypeVar ‘{name}’은(는) 외부 범위에서 이미 사용 중입니다.", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\"이(가) 제네릭 함수 시그니처에 한 번만 나타납니다.", + "typeVarVariance": "TypeVar는 공변이면서 반공변일 수 없습니다.", + "typeVarWithoutDefault": "‘{name}’은 기본 형식이 없으므로 형식 매개 변수 목록에서 ‘{other}’ 뒤에 나타날 수 없습니다.", + "typeVarsNotInGenericOrProtocol": "Generic[] 또는 Protocol[]에는 모든 형식 변수가 포함되어야 합니다.", + "typedDictAccess": "TypedDict의 항목에 액세스할 수 없습니다.", + "typedDictBadVar": "TypedDict 클래스는 형식 주석만 포함할 수 있습니다.", + "typedDictBaseClass": "TypedDict 클래스의 모든 기본 클래스도 TypedDict 클래스여야 합니다.", + "typedDictBoolParam": "\"{name}\" 매개 변수에 True 또는 False 값이 있어야 합니다.", + "typedDictDelete": "TypedDict에서 항목을 삭제할 수 없습니다.", + "typedDictEmptyName": "TypedDict 내의 이름은 비워 둘 수 없습니다.", + "typedDictEntryName": "사전 항목 이름에 필요한 문자열 리터럴", + "typedDictEntryUnique": "사전 내의 이름은 고유해야 합니다.", + "typedDictExtraArgs": "추가 TypedDict 인수가 지원되지 않음", + "typedDictFieldReadOnlyRedefinition": "TypedDict 필드 \"{name}\"을(를) 읽기 전용으로 다시 정의할 수 없습니다.", + "typedDictFieldTypeRedefinition": "TypedDict 필드 \"{name}\"의 형식을 다시 정의할 수 없습니다.", + "typedDictFirstArg": "TypedDict 클래스 이름이 첫 번째 인수로 필요합니다.", + "typedDictSecondArgDict": "두 번째 매개 변수로 사전 또는 키워드 매개 변수가 필요합니다.", + "typedDictSecondArgDictEntry": "단순 사전 항목이 필요합니다.", + "typedDictSet": "TypedDict에서 항목을 할당할 수 없습니다.", + "unaccessedClass": "‘{name}’ 클래스에 액세스할 수 없습니다.", + "unaccessedFunction": "함수 \"{name}\"에 액세스할 수 없습니다.", + "unaccessedImport": "가져오기 \"{name}\"에 액세스할 수 없습니다.", + "unaccessedSymbol": "\"{name}\"에 액세스할 수 없습니다.", + "unaccessedVariable": "변수 \"{name}\"에 액세스할 수 없습니다.", + "unannotatedFunctionSkipped": "주석이 없으므로 ‘{name}’ 함수 분석을 건너뜁니다.", + "unexpectedAsyncToken": "\"async\"를 따르려면 \"def\", \"with\" 또는 \"for\"가 필요합니다.", + "unexpectedExprToken": "식 끝에 예기치 않은 토큰이 있습니다.", + "unexpectedIndent": "예기치 않은 들여쓰기", + "unexpectedUnindent": "들여쓰기가 필요 없음", + "unhashableDictKey": "사전 키는 해시 가능해야 합니다.", + "unhashableSetEntry": "집합 항목은 해시가 가능해야 합니다.", + "uninitializedAbstractVariables": "추상 기본 클래스에 정의된 변수가 최종 클래스 \"{classType}\"에서 초기화되지 않았습니다.", + "uninitializedInstanceVariable": "인스턴스 변수 \"{name}\"이(가) 클래스 본문 또는 __init__ 메서드에서 초기화되지 않았습니다.", + "unionForwardReferenceNotAllowed": "공용 구조체 구문은 문자열 피연산자에서 사용할 수 없습니다. 전체 식 주위에 따옴표 사용", + "unionSyntaxIllegal": "공용 구조체에 대한 대체 구문에는 Python 3.10 이상이 필요합니다.", + "unionTypeArgCount": "공용 구조체에는 둘 이상의 형식 인수가 필요합니다.", + "unmatchedEndregionComment": "#endregion에 해당하는 #region이 없습니다.", + "unmatchedRegionComment": "#endregion에 해당하는 #region이 없습니다.", + "unnecessaryCast": "불필요한 ‘캐스트’ 호출입니다. 형식이 이미 ‘{type}’입니다.", + "unnecessaryIsInstanceAlways": "불필요한 isinstance 호출입니다. \"{testType}\"은(는) 항상 \"{classType}\"의 인스턴스입니다.", + "unnecessaryIsSubclassAlways": "불필요한 issubclass 호출입니다. ’{testType}‘은(는) 항상 ’{classType}‘의 하위 클래스입니다.", + "unnecessaryPyrightIgnore": "불필요한 ‘# pyright: 무시’ 주석입니다.", + "unnecessaryPyrightIgnoreRule": "불필요한 \"#ight: ignore\" 규칙: \"{name}\"", + "unnecessaryTypeIgnore": "불필요한 ‘# 형식: 무시’ 주석입니다.", + "unpackArgCount": "‘Final’ 뒤에는 단일 형식 인수가 필요합니다.", + "unpackExpectedTypeVarTuple": "Unpack에 대한 형식 인수로 TypeVarTuple 또는 튜플이 필요합니다.", + "unpackExpectedTypedDict": "압축 풀기를 위해서는 TypedDict 형식 인수가 필요합니다.", + "unpackIllegalInComprehension": "압축 풀기 작업은 이해에서 사용할 수 없습니다.", + "unpackInAnnotation": "형식 주석에는 압축 풀기 연산자를 사용할 수 없습니다.", + "unpackInDict": "사전에서 압축 풀기 작업이 허용되지 않음", + "unpackInSet": "집합 내에서는 압축 풀기 연산자를 사용할 수 없습니다.", + "unpackNotAllowed": "이 컨텍스트에서는 압축 풀기를 사용할 수 없습니다.", + "unpackOperatorNotAllowed": "이 컨텍스트에서는 압축 풀기 작업이 허용되지 않습니다.", + "unpackTuplesIllegal": "Python 3.8 이전의 튜플에서는 압축 풀기 작업이 허용되지 않습니다.", + "unpackedArgInTypeArgument": "압축되지 않은 인수는 형식 인수 목록에 사용할 수 없습니다.", + "unpackedArgWithVariadicParam": "압축을 푼 인수는 TypeVarTuple 매개 변수에 사용할 수 없습니다.", + "unpackedDictArgumentNotMapping": "** 뒤의 인수 식은 \"str\" 키 형식의 매핑이어야 합니다.", + "unpackedDictSubscriptIllegal": "아래 첨자에서 사전 압축 풀기 연산자는 사용할 수 없습니다.", + "unpackedSubscriptIllegal": "아래 첨자의 압축 풀기 연산자에는 Python 3.11 이상이 필요합니다.", + "unpackedTypeVarTupleExpected": "압축 해제된 TypeVarTuple이 필요합니다. 압축 풀기[{name1}] 또는 *{name2} 사용", + "unpackedTypedDictArgument": "압축되지 않은 TypedDict 인수를 매개 변수와 일치시킬 수 없습니다.", + "unreachableCode": "코드에 접근할 수 없습니다.", + "unreachableExcept": "예외가 이미 처리되었으므로 Except 절에 연결할 수 없습니다.", + "unsupportedDunderAllOperation": "\"__all__\"에 대한 작업이 지원되지 않으므로 내보낸 기호 목록이 잘못되었을 수 있습니다.", + "unusedCallResult": "호출 식의 결과가 ‘{type}’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.", + "unusedCoroutine": "비동기 함수 호출의 결과가 사용되지 않습니다. \"await\"를 사용하거나 변수에 결과 할당", + "unusedExpression": "식 값은 사용되지 않습니다.", + "varAnnotationIllegal": "변수에 대한 형식 주석에는 Python 3.6 이상이 필요합니다. 이전 버전과의 호환성을 위해 형식 주석 사용", + "variableFinalOverride": "변수 \"{name}\"이(가) Final로 표시되고 \"{className}\" 클래스에서 이름이 같은 비-Final 변수를 재정의합니다.", + "variadicTypeArgsTooMany": "형식 인수 목록에는 압축을 풀고 있는 TypeVarTuple 또는 튜플이 하나만 있을 수 있습니다.", + "variadicTypeParamTooManyAlias": "형식 별칭에는 TypeVarTuple 형식 매개 변수가 최대 하나만 있을 수 있지만 여러 ({names})가 수신되었습니다.", + "variadicTypeParamTooManyClass": "제네릭 클래스에는 TypeVarTuple 형식 매개 변수가 하나만 있을 수 있지만 여러 ({names})을(를) 받았습니다.", + "walrusIllegal": "연산자 \":=\"에는 Python 3.8 이상이 필요합니다.", + "walrusNotAllowed": "주변 괄호 없이는 이 컨텍스트에서 \":=\" 연산자를 사용할 수 없습니다.", + "wildcardInFunction": "클래스 또는 함수 내에서 와일드카드 가져오기가 허용되지 않음", + "wildcardLibraryImport": "라이브러리에서 와일드카드를 가져오는 것은 허용되지 않습니다.", + "wildcardPatternTypePartiallyUnknown": "와일드카드 패턴으로 캡처된 형식을 부분적으로 알 수 없습니다.", + "wildcardPatternTypeUnknown": "와일드카드 패턴으로 캡처된 형식을 부분적으로 알 수 없습니다.", + "yieldFromIllegal": "\"yield from\"을 사용하려면 Python 3.3 이상이 필요합니다.", + "yieldFromOutsideAsync": "비동기 함수에서는 \"yield from\"을 사용할 수 없습니다.", + "yieldOutsideFunction": "함수 또는 람다 외부에서는 ‘yield’를 사용할 수 없습니다.", + "yieldWithinListCompr": "목록 이해 내에서는 \"yield\"를 사용할 수 없습니다.", + "zeroCaseStatementsFound": "Match 문에는 Case 문이 하나 이상 포함되어야 합니다.", + "zeroLengthTupleNotAllowed": "이 컨텍스트에서는 길이가 0인 튜플을 사용할 수 없습니다." + }, + "DiagnosticAddendum": { + "argParam": "인수가 \"{paramName}\" 매개 변수에 해당합니다.", + "argParamFunction": "인수가 \"{functionName}\" 함수의 \"{paramName}\" 매개 변수에 해당합니다.", + "argsParamMissing": "‘*{paramName}’ 매개 변수에 해당하는 매개 변수가 없습니다.", + "argsPositionOnly": "위치 전용 매개 변수가 일치하지 않습니다. {expected}이)(가) 필요하지만 {received}을(를) 받았습니다.", + "argumentType": "인수 형식이 \"{type}\"입니다.", + "argumentTypes": "인수 형식: ({types})", + "assignToNone": "\"None\" 형식에는 형식을 할당할 수 없습니다.", + "asyncHelp": "‘async with’를 사용하시겠습니까?", + "baseClassOverriddenType": "기본 클래스 \"{baseClass}\"이(가) 재정의된 \"{type}\" 형식을 제공합니다.", + "baseClassOverridesType": "‘{baseClass}’ 기본 클래스가 ‘{type}’ 형식을 재정의합니다.", + "conditionalRequiresBool": "\"{operandType}\" 형식에 대한 메서드 __bool__에서 \"bool\" 대신 \"{boolReturnType}\" 형식을 반환합니다.", + "dataClassFieldLocation": "필드 선언", + "dataClassFrozen": "\"{name}\"이(가) 고정되어 있습니다.", + "finalMethod": "최종 메서드", + "functionParamDefaultMissing": "‘{name}’ 매개 변수에 기본 인수가 없습니다.", + "functionParamName": "매개 변수 이름 불일치: \"{destName}\" 및 \"{srcName}\"", + "functionReturnTypeMismatch": "‘{sourceType}’ 함수 반환 형식은 ‘{destType}’ 형식과 호환되지 않습니다.", + "functionTooFewParams": "함수가 너무 적은 위치 매개 변수를 허용합니다. {expected}이(가) 필요하지만 {received}을(를) 받았습니다.", + "functionTooManyParams": "함수가 너무 많은 위치 매개 변수를 허용합니다. {expected}이(가) 필요하지만 {received}을(를) 받았습니다.", + "incompatibleDeleter": "속성 삭제자 메서드가 호환되지 않습니다.", + "incompatibleGetter": "속성 getter 메서드가 호환되지 않습니다.", + "incompatibleSetter": "속성 setter 메서드가 호환되지 않습니다.", + "initMethodLocation": "__init__ 메서드가 \"{type}\" 클래스에 정의되어 있습니다.", + "initMethodSignature": "__init__의 서명은 \"{type}\"입니다.", + "keyNotRequired": "‘{name}’은(는) ‘{type}’에서 필수 키가 아니므로 액세스로 인해 런타임 예외가 발생할 수 있습니다.", + "keyReadOnly": "\"{name}\"은(는) \"{type}\"의 읽기 전용 키입니다.", + "keyRequiredDeleted": "\"{name}\"은(는) 필수 키이므로 삭제할 수 없습니다.", + "keyUndefined": "\"{name}\"이 \"{type}\"에 정의된 키가 아닙니다.", + "kwargsParamMissing": "‘**{paramName}’ 매개 변수에 해당하는 매개 변수가 없습니다.", + "listAssignmentMismatch": "\"{type}\" 형식이 대상 목록과 호환되지 않습니다.", + "literalAssignmentMismatch": "\"{sourceType}\"을(를) \"{destType}\" 형식에 할당할 수 없습니다.", + "matchIsNotExhaustiveHint": "전체 처리가 의도되지 않은 경우 \"case _: pass\"를 추가합니다.", + "matchIsNotExhaustiveType": "처리되지 않은 형식: \"{type}\"", + "memberAssignment": "‘{type}’ 형식의 식을 ‘{classType}’ 클래스의 ‘{name}’ 멤버에 할당할 수 없습니다.", + "memberIsAbstract": "‘{type}.{name}’은(는) 추상입니다.", + "memberIsAbstractMore": "{count}개 더...", + "memberIsFinalInProtocol": "\"{name}\"이(가) 프로토콜에서 Final로 표시됨", + "memberIsInitVar": "멤버 \"{name}\"은(는) 초기화 전용 필드입니다.", + "memberIsInvariant": "\"{name}\"은(는) 변경 가능하므로 고정되지 않습니다.", + "memberIsNotFinalInProtocol": "‘{name}’이(가) 프로토콜에서 최종으로 표시되지 않았습니다.", + "memberSetClassVar": "‘{name}’ 멤버는 ClassVar이므로 클래스 인스턴스를 통해 할당할 수 없습니다.", + "memberTypeMismatch": "\"{name}\"은(는) 호환되지 않는 형식입니다.", + "memberUnknown": "멤버 \"{name}\"을(를) 알 수 없습니다.", + "missingDeleter": "속성 삭제자 메서드가 없습니다.", + "missingGetter": "속성 getter 메서드가 없습니다.", + "missingProtocolMember": "\"{name}\" 멤버가 프로토콜 클래스 \"{classType}\"로 선언되었습니다.", + "missingSetter": "속성 setter 메서드가 없습니다.", + "namedParamMissingInDest": "키워드 매개 변수 ‘{name}’이(가) 대상에 없습니다.", + "namedParamMissingInSource": "키워드 매개 변수 ‘{name}’이(가) 소스에 없습니다.", + "namedParamTypeMismatch": "\"{sourceType}\" 형식의 키워드 매개 변수 \"{name}\"을(를) \"{destType}\" 형식에 할당할 수 없습니다.", + "newMethodLocation": "__new__ 메서드가 \"{type}\" 클래스에 정의되어 있습니다.", + "newMethodSignature": "__new__ 의 서명은 \"{type}\"입니다.", + "noOverloadAssignable": "\"{type}\" 형식과 일치하는 오버로드된 함수가 없습니다.", + "orPatternMissingName": "누락된 이름: {name}", + "overloadNotAssignable": "\"{name}\"의 오버로드를 하나 이상 할당할 수 없습니다.", + "overloadSignature": "오버로드 서명은 여기에 정의되어 있습니다.", + "overloadWithImplementation": "함수 오버로드의 본문은 \"...\"이어야 합니다.", + "overriddenMethod": "재정의된 메서드", + "overriddenSymbol": "재정의된 기호", + "overrideNoOverloadMatches": "재정의의 오버로드 서명이 기본 메서드와 호환되지 않습니다.", + "overrideNotClassMethod": "기본 메서드가 classmethod로 선언되었지만 재정의는 그렇지 않은 경우", + "overrideNotInstanceMethod": "기본 메서드가 instance 메서드로 선언되었지만 재정의가", + "overrideNotStaticMethod": "기본 메서드가 staticmethod로 선언되었지만 재정의는 그렇지 않습니다.", + "overrideOverloadNoMatch": "오버로드 {index}은 기본 메서드와 호환되지 않습니다.", + "overrideOverloadOrder": "재정의 메서드에 대한 오버로드는 기본 메서드와 동일한 순서여야 합니다.", + "overrideParamKeywordNoDefault": "‘{name}’ 키워드 매개 변수가 불일치합니다. 기본 매개 변수에 기본 인수 값이 있습니다. 재정의 매개 변수에는 없습니다.", + "overrideParamKeywordType": "‘{name}’ 키워드 매개 변수 형식이 일치하지 않습니다. 기본 매개 변수는 형식이 ‘{baseType}’, 재정의 매개 변수는 형식이 ‘{overrideType}’입니다.", + "overrideParamName": "{index} 매개 변수 이름이 일치하지 않습니다. 기본 매개 변수는 이름이 ‘{baseName}’입니다. 재정의 매개 변수는 이름이 ‘{overrideName}’입니다.", + "overrideParamNameExtra": "기본에 매개 변수 \"{name}\"이(가) 없습니다.", + "overrideParamNameMissing": "재정의에 ‘{name}’ 매개 변수가 없습니다.", + "overrideParamNamePositionOnly": "매개 변수 {index} 이름 불일치: 기본 매개 변수의 이름이 \"{baseName}\"입니다. 재정의 매개 변수는 위치 전용입니다.\"", + "overrideParamNoDefault": "{index} 매개 변수가 불일치합니다. 기본 매개 변수에 기본 인수 값이 있습니다. 재정의 매개 변수에는 없습니다.", + "overrideParamType": "‘{name}’ 매개 변수 형식이 일치하지 않습니다. 기본 매개 변수는 형식이 ‘{baseType}’, 재정의 매개 변수는 형식이 ‘{overrideType}’입니다.", + "overridePositionalParamCount": "위치 매개 변수 개수가 일치하지 않습니다. 기본 메서드에 {baseCount}개가 있지만 재정의에는 {overrideCount}개가 있습니다.", + "overrideReturnType": "반환 형식 불일치: 기본 메서드는 \"{baseType}\" 형식을 반환하고 재정의는 \"{overrideType}\" 형식을 반환합니다.", + "overrideType": "기본 클래스는 형식을 \"{type}\"으로 정의합니다.", + "paramAssignment": "매개 변수 {index}: \"{sourceType}\" 형식을 \"{destType}\" 형식에 할당할 수 없습니다.", + "paramSpecMissingInOverride": "재정의 메서드에 ParamSpec 매개 변수가 없습니다.", + "paramType": "매개 변수 형식은 \"{paramType}\"입니다.", + "privateImportFromPyTypedSource": "대신 \"{module}\"에서 가져오기", + "propertyAccessFromProtocolClass": "프로토콜 클래스 내에 정의된 속성은 클래스 변수로 액세스할 수 없습니다.", + "propertyMethodIncompatible": "속성 메서드 \"{name}\"이(가) 호환되지 않습니다.", + "propertyMethodMissing": "재정의에 ‘{name}’ 속성 메서드가 없습니다.", + "propertyMissingDeleter": "\"{name}\" 속성에 정의된 삭제자가 없습니다.", + "propertyMissingSetter": "\"{name}\" 속성에 정의된 setter가 없습니다.", + "protocolIncompatible": "‘{sourceType}’은(는) ‘{destType}’ 프로토콜과 호환되지 않습니다.", + "protocolMemberClassVar": "\"{name}\"은(는) 클래스 변수가 아닙니다.", + "protocolMemberMissing": "\"{name}\"이(가) 없습니다.", + "protocolSourceIsNotConcrete": "‘{sourceType}’은(는) 구체적인 클래스 형식이 아니므로 ‘{destType}’ 형식에 할당할 수 없습니다.", + "pyrightCommentIgnoreTip": "\"# pyright: ignore[]을(를) 사용하여 한 줄에 대한 진단을 억제합니다.", + "readOnlyAttribute": "특성 \"{name}\"은(는) 읽기 전용입니다.", + "seeClassDeclaration": "클래스 선언 참조", + "seeDeclaration": "선언 참조", + "seeFunctionDeclaration": "함수 선언 참조", + "seeMethodDeclaration": "메서드 선언 참조", + "seeParameterDeclaration": "매개 변수 선언 보기", + "seeTypeAliasDeclaration": "형식 별칭 선언 참조", + "seeVariableDeclaration": "변수 선언 보기", + "tupleAssignmentMismatch": "‘{type}’ 형식이 대상 튜플과 호환되지 않습니다.", + "tupleEntryTypeMismatch": "튜플 항목 {entry}이(가) 잘못된 형식입니다.", + "tupleSizeMismatch": "요소 크기 불일치: {expected}이(가) 필요하지만 {received}을(를) 받았습니다.", + "typeAssignmentMismatch": "\"{sourceType}\" 형식은 \"{destType}\" 형식에 할당할 수 없습니다.", + "typeBound": "형식 변수 \"{name}\"에 대해 형식 \"{sourceType}\"이(가) 바인딩된 형식 \"{destType}\"과(와) 호환되지 않습니다.", + "typeConstrainedTypeVar": "\"{type}\" 형식이 제한된 형식 변수 \"{name}\"과(와) 호환되지 않습니다.", + "typeIncompatible": "\"{sourceType}\"이(가) \"{destType}\"과(와) 호환되지 않습니다.", + "typeNotCallable": "‘{type}’ 형식을 호출할 수 없습니다.", + "typeNotClass": "\"{type}\"이 클래스가 아닙니다.", + "typeNotStringLiteral": "‘{type}’은(는) 문자열 리터럴이 아닙니다.", + "typeOfSymbol": "‘{name}’의 유형이 ‘{type}’입니다.", + "typeParamSpec": "\"{type}\" 형식이 ParamSpec \"{name}\"과(와) 호환되지 않습니다.", + "typeUnsupported": "\"{type}\" 형식은 지원되지 않습니다.", + "typeVarDefaultOutOfScope": "형식 변수 \"{name}\"이(가) 범위에 없습니다.", + "typeVarIsContravariant": "TypeVar \"{name}\"은(는) 반공변(contravariant)입니다.", + "typeVarIsCovariant": "TypeVar \"{name}\"이(가) 공변(covariant)입니다.", + "typeVarIsInvariant": "TypeVar \"{name}\"이(가) 고정되어 있습니다.", + "typeVarNotAllowed": "형식 인수가 있는 TypeVar 또는 제네릭 형식은 허용되지 않습니다.", + "typeVarTupleRequiresKnownLength": "TypeVarTuple을 알 수 없는 길이의 튜플에 바인딩할 수 없습니다.", + "typeVarUnsolvableRemedy": "인수가 제공되지 않을 때 반환 형식을 지정하는 오버로드를 제공합니다.", + "typeVarsMissing": "누락된 형식 변수: {names}", + "typedDictFieldMissing": "\"{name}\"이(가) \"{type}\"에 없습니다.", + "typedDictFieldNotReadOnly": "\"{name}\"은(는) \"{type}\"에서 읽기 전용이 아닙니다.", + "typedDictFieldNotRequired": "\"{name}\"은(는) \"{type}\"에 필요하지 않습니다.", + "typedDictFieldRequired": "\"{type}\"에 \"{name}\"이(가) 필요합니다.", + "typedDictFieldTypeMismatch": "‘{type}’ 형식은 ‘{name}’ 필드에 할당할 수 없습니다.", + "typedDictFieldTypeRedefinition": "부모 클래스의 형식은 \"{parentType}\"이고 자녀 클래스의 형식은 \"{childType}\"입니다.", + "typedDictFieldUndefined": "\"{name}\"은(는) \"{type}\" 형식의 정의되지 않은 필드입니다.", + "typedDictFinalMismatch": "@final 불일치로 인해 \"{sourceType}\"이(가) \"{destType}\"과(와) 호환되지 않습니다.", + "unhashableType": "‘{type}’ 형식을 해시할 수 없습니다.", + "uninitializedAbstractVariable": "인스턴스 변수 \"{name}\"이(가) 추상 기본 클래스 \"{classType}\"에 정의되어 있지만 초기화되지 않았습니다.", + "unreachableExcept": "\"{exceptionType}\"은(는) \"{parentType}\"의 서브클래스입니다.", + "useDictInstead": "사전 형식을 나타내려면 Dict[T1, T2]를 사용하세요.", + "useListInstead": "List[T]를 사용하여 목록 형식을 나타내거나 Union[T1, T2]를 사용하여 공용 구조체 형식을 나타내세요.", + "useTupleInstead": "튜플[T1, ..., Tn]을 사용하여 튜플 형식을 나타내거나 Union[T1, T2]을 사용하여 공용 구조체 형식을 나타냅니다.", + "useTypeInstead": "대신 Type[T] 사용", + "varianceMismatchForClass": "‘{typeVarName}’ 형식 인수의 차이는 ‘{className}’ 기본 클래스와 호환되지 않습니다.", + "varianceMismatchForTypeAlias": "‘{typeVarName}’ 형식 인수의 차이는 ‘{typeAliasParam}’와(과) 호환되지 않습니다." + } +} diff --git a/packages/pyright-internal/src/localization/package.nls.pl.json b/packages/pyright-internal/src/localization/package.nls.pl.json new file mode 100644 index 000000000..34bc5f259 --- /dev/null +++ b/packages/pyright-internal/src/localization/package.nls.pl.json @@ -0,0 +1,718 @@ +{ + "CodeAction": { + "addOptionalToAnnotation": "Dodaj wartość „Optional” do adnotacji typu", + "createTypeStub": "Utwórz typ zastępczy", + "createTypeStubFor": "Utwórz typ zastępczy dla „{moduleName}”", + "executingCommand": "Wykonywanie polecenia", + "filesToAnalyzeCount": "Pliki do przeanalizowania: {count}", + "filesToAnalyzeOne": "1 plik do analizy", + "findingReferences": "Znajdowanie odwołań", + "organizeImports": "Organizuj dyrektywy Import", + "renameShadowedFile": "Zmień nazwę „{oldFile}” na „{newFile}”" + }, + "Diagnostic": { + "abstractMethodInvocation": "Nie można wywołać metody „{method}”, ponieważ jest abstrakcyjna", + "annotatedParamCountMismatch": "Niezgodność liczby adnotacji parametru; oczekiwano {expected}, a uzyskano {received}", + "annotatedTypeArgMissing": "Oczekiwano jednego argumentu typu i co najmniej jednej adnotacji dla wartości „Annotated”", + "annotationFormatString": "Adnotacje typu nie mogą używać literałów ciągów formatu (f-strings)", + "annotationNotSupported": "Adnotacja typu nie jest obsługiwana dla tej instrukcji", + "annotationSpansStrings": "Adnotacje typu nie mogą obejmować wielu literałów ciągów", + "annotationStringEscape": "Adnotacje typu nie mogą zawierać znaków ucieczki", + "argAssignment": "Argumentu typu „{argType}” nie można przypisać do parametru typu „{paramType}”", + "argAssignmentFunction": "Argumentu typu „{argType}” nie można przypisać do parametru typu „{paramType}” w funkcji „{functionName}”", + "argAssignmentParam": "Argumentu typu „{argType}” nie można przypisać do parametru „{paramName}” typu „{paramType}”", + "argAssignmentParamFunction": "Argumentu typu „{argType}” nie można przypisać do parametru „{paramName}” typu „{paramType}” w funkcji „{functionName}”", + "argMissingForParam": "Brak argumentu dla parametru {name}", + "argMissingForParams": "Brak argumentów dla parametrów {names}", + "argMorePositionalExpectedCount": "Oczekiwano większej liczby argumentów pozycyjnych: {expected}", + "argMorePositionalExpectedOne": "Oczekiwano jeszcze 1 argumentu pozycyjnego", + "argPositional": "Oczekiwano argumentu pozycyjnego", + "argPositionalExpectedCount": "Oczekiwano liczby argumentów pozycyjnych: {expected}", + "argPositionalExpectedOne": "Oczekiwano 1 argumentu pozycyjnego", + "argTypePartiallyUnknown": "Typ argumentu jest częściowo nieznany", + "argTypeUnknown": "Typ argumentu jest nieznany", + "assertAlwaysTrue": "Wyrażenie Assert zawsze ma wartość Prawda", + "assertTypeArgs": "Typ „assert_type” oczekuje dwóch argumentów pozycyjnych", + "assertTypeTypeMismatch": "Niezgodność „assert_type”; oczekiwano „{expected}”, ale otrzymano „{received}”", + "assignmentExprComprehension": "Element docelowy wyrażenia przypisania „{name}” nie może używać tej samej nazwy co zrozumienie dla elementu docelowego", + "assignmentExprContext": "Wyrażenie przypisania musi należeć do modułu, funkcji lub wyrażenia lambda", + "assignmentExprInSubscript": "Wyrażenia przypisania w indeksie dolnym są obsługiwane tylko w języku Python w wersji 3.10 i nowszej", + "assignmentInProtocol": "Zmienne wystąpienia lub klasy w klasie protokołu muszą być jawnie zadeklarowane w treści klasy", + "assignmentTargetExpr": "Wyrażenie nie może być elementem docelowym przypisania", + "asyncNotInAsyncFunction": "Użycie wartość „async” jest niedozwolone poza funkcją asynchroniczną", + "awaitIllegal": "Użycie „oczekiwania” wymaga języka Python w wersji 3.5 lub nowszej", + "awaitNotInAsync": "Wartość „await” jest dozwolona tylko w ramach funkcji asynchronicznej", + "backticksIllegal": "Wyrażenia otoczone znakami wstecznymi nie są obsługiwane w języku Python w wersji 3.x; zamiast tego użyj wyrażenia repr", + "baseClassCircular": "Klasa nie może pochodzić od samej siebie", + "baseClassFinal": "Klasa bazowa „{type}” jest oznaczona jako końcowa i nie można jej podzielić na podklasy", + "baseClassInvalid": "Argument klasy musi być klasą bazową", + "baseClassMethodTypeIncompatible": "Klasy bazowe dla klasy „{classType}” definiują metodę „{name}” w niezgodny sposób", + "baseClassUnknown": "Typ klasy bazowej jest nieznany, zasłaniając typ klasy pochodnej", + "baseClassVariableTypeIncompatible": "Klasy bazowe dla klasy „{classType}” definiują zmienną „{name}” w niezgodny sposób", + "bindTypeMismatch": "Nie można powiązać metody „{methodName}”, ponieważ nie można przypisać typu „{type}” do parametru „{paramName}”", + "breakOutsideLoop": "Wartość „break” może być używana tylko w pętli", + "callableExtraArgs": "Oczekiwano tylko dwóch argumentów typu „Callable”", + "callableFirstArg": "Oczekiwano listy typów parametrów lub znaków „...”", + "callableNotInstantiable": "Nie można utworzyć wystąpienia typu „{type}”", + "callableSecondArg": "Oczekiwano zwracanego typu jako drugiego argumentu typu dla elementu „Callable”", + "casePatternIsIrrefutable": "Niepodważalny wzorzec jest dozwolony tylko dla ostatniej instrukcji dotyczącej wielkości liter", + "classAlreadySpecialized": "Typ „{type}” jest już wyspecjalizowany", + "classDecoratorTypeUnknown": "Dekorator klasy bez typu przesłania typ klasy; ignorowanie dekoratora", + "classDefinitionCycle": "Definicja klasy dla „{name}” zależy od niej samej", + "classGetItemClsParam": "Przesłonięcie __class_getitem__ powinno przyjmować parametr „cls”.", + "classMethodClsParam": "Metody klasy powinny przyjmować parametr „cls”", + "classNotRuntimeSubscriptable": "Indeks dolny dla klasy „{name}” wygeneruje wyjątek czasu uruchamiania; umieść adnotację typu w cudzysłowie", + "classPatternBuiltInArgCount": "Wzorzec klasy akceptuje co najwyżej 1 podwzorzec pozycyjny", + "classPatternBuiltInArgPositional": "Wzorzec klasy akceptuje tylko podwzorzec pozycyjny", + "classPatternTypeAlias": "„{type}” nie może być używany we wzorcu klasy, ponieważ jest to alias typu specjalnego", + "classTypeParametersIllegal": "Składnia parametru typu klasy wymaga języka Python w wersji 3.12 lub nowszej", + "classVarFirstArgMissing": "Oczekiwano argumentu typu po wartości „ClassVar”", + "classVarNotAllowed": "Element „ClassVar” jest niedozwolony w tym kontekście", + "classVarOverridesInstanceVar": "Zmienna klasy „{name}” przesłania zmienną wystąpienia o tej samej nazwie w klasie „{className}”", + "classVarTooManyArgs": "Oczekiwano tylko jednego argumentu typu po wartości „ClassVar”", + "classVarWithTypeVar": "Typ „ClassVar” nie może zawierać zmiennych typu", + "clsSelfParamTypeMismatch": "Typ parametru „{name}” musi być nadtypem jego klasy „{classType}”", + "codeTooComplexToAnalyze": "Kod jest zbyt złożony, aby go analizować; zmniejsz złożoność przez refaktoryzację w podprocedury lub poprzez zmniejszenie ścieżek kodu warunkowego", + "collectionAliasInstantiation": "Nie można utworzyć wystąpienia typu „{type}”. Zamiast niego użyj „{alias}”", + "comparisonAlwaysFalse": "Warunek zawsze będzie miał wartość Fałsz, ponieważ typy „{leftType}” i „{rightType}” nie nakładają się", + "comparisonAlwaysTrue": "Warunek zawsze będzie miał wartość Prawda, ponieważ typy „{leftType}” i „{rightType}” nie nakładają się", + "comprehensionInDict": "Zrozumienia nie można używać z innymi wpisami słownika", + "comprehensionInSet": "Nie można używać rozumienia z innymi wpisami zestawu", + "concatenateParamSpecMissing": "Ostatni argument typu dla elementu „Concatenate” musi być parametrem ParamSpec", + "concatenateTypeArgsMissing": "Element „Concatenate” wymaga co najmniej dwóch argumentów typu", + "conditionalOperandInvalid": "Nieprawidłowy warunkowy argument operacji typu „{type}”", + "constantRedefinition": "Nazwa „{name}” jest stałą (ponieważ jest pisana wielkimi literami) i nie można jej ponownie zdefiniować", + "constructorNoArgs": "Oczekiwano braku argumentów do konstruktora „{type}”.", + "constructorParametersMismatch": "Niezgodność między sygnaturą „__new__” i „__init__” w klasie „{classType}”", + "containmentAlwaysFalse": "Warunek zawsze będzie miał wartość „Fałsz”, ponieważ typy „{leftType}” i „{rightType}” nie nakładają się na siebie", + "containmentAlwaysTrue": "Warunek zawsze będzie miał wartość „True”, ponieważ typy „{leftType}” i „{rightType}” nie nakładają się na siebie", + "continueInFinally": "Wartość „continue” nie może być używana w klauzuli finally", + "continueOutsideLoop": "Wartość „continue” może być używana tylko w pętli", + "dataClassBaseClassFrozen": "Klasa niezablokowana nie może dziedziczyć po klasie zablokowanej", + "dataClassBaseClassNotFrozen": "Zamrożona klasa nie może dziedziczyć po klasie niezamrożonej", + "dataClassConverterFunction": "Argument typu „{argType}” nie jest prawidłowym konwerterem pola „{fieldName}” typu „{fieldType}”", + "dataClassConverterOverloads": "Żadne przeciążenia „{funcName}” nie są prawidłowymi konwerterami dla pola „{fieldName}” typu „{fieldType}”", + "dataClassFieldWithDefault": "Pola bez wartości domyślnych nie mogą występować po polach z wartościami domyślnymi", + "dataClassFieldWithPrivateName": "Pole klasy danych nie może używać nazwy prywatnej", + "dataClassFieldWithoutAnnotation": "Pole klasy danych bez adnotacji typu spowoduje wyjątek środowiska uruchomieniowego", + "dataClassPostInitParamCount": "Klasa danych __post_init__ ma niepoprawną liczbę parametrów; oczekiwana liczba pól InitVar to: {expected}", + "dataClassPostInitType": "Klasa danych __post_init__ ma niezgodność typu parametru metody dla pola „{fieldName}”", + "dataClassSlotsOverwrite": "Element __slots__ jest już zdefiniowany w klasie", + "dataClassTransformExpectedBoolLiteral": "Oczekiwano wyrażenia, które statycznie daje w wyniku wartość True lub False", + "dataClassTransformFieldSpecifier": "Oczekiwano krotki klas lub funkcji, a uzyskano typ „{type}”", + "dataClassTransformPositionalParam": "Wszystkie argumenty elementu „dataclass_transform” muszą być argumentami słów kluczowych", + "dataClassTransformUnknownArgument": "Argument „{name}” nie jest obsługiwany przez dataclass_transform", + "declaredReturnTypePartiallyUnknown": "Zadeklarowany zwracany typ „{returnType}” jest częściowo nieznany", + "declaredReturnTypeUnknown": "Deklarowany zwracany typ jest nieznany", + "defaultValueContainsCall": "Wywołania funkcji i modyfikowalne obiekty są niedozwolone w wyrażeniu wartości domyślnej parametru", + "defaultValueNotAllowed": "Parametr o wartości „*” lub „**” nie może mieć wartości domyślnej", + "delTargetExpr": "Nie można usunąć wyrażenia", + "deprecatedClass": "Klasa „{name}” jest przestarzała", + "deprecatedConstructor": "Konstruktor klasy „{name}” jest przestarzały", + "deprecatedFunction": "Ta funkcja „{name}” jest przestarzała", + "deprecatedType": "Ten typ jest przestarzały dla języka Python w wersji {version}; zamiast tego użyj „{replacement}”.", + "dictExpandIllegalInComprehension": "Rozszerzanie słownika jest niedozwolone w rozumieniu", + "dictInAnnotation": "Wyrażenie słownikowe jest niedozwolone w adnotacji typu", + "dictKeyValuePairs": "Wpisy słownika muszą zawierać pary klucz/wartość", + "dictUnpackIsNotMapping": "Oczekiwano mapowania dla operatora rozpakowywania słownika", + "dunderAllSymbolNotPresent": "Nazwa „{name}” jest określona w wartości __all__, ale nie występuje w module", + "duplicateArgsParam": "Dozwolony tylko jeden parametr „*”", + "duplicateBaseClass": "Zduplikowana klasa bazowa jest niedozwolona", + "duplicateCapturePatternTarget": "Element docelowy przechwytywania „{name}” nie może występować więcej niż raz w obrębie tego samego wzorca", + "duplicateCatchAll": "Dozwolona jest tylko jedna klauzula typu catch-all z wyjątkiem klauzuli", + "duplicateEnumMember": "Składowa wyliczenia „{name}” jest już zadeklarowana", + "duplicateGenericAndProtocolBase": "Dozwolona jest tylko jedna klasa bazowa Generic[...] lub Protocol[...].", + "duplicateImport": "Nazwa „{importName}” została zaimportowana więcej niż raz", + "duplicateKeywordOnly": "Dozwolony tylko jeden separator „*”.", + "duplicateKwargsParam": "Dozwolony tylko jeden parametr „**”.", + "duplicateParam": "Duplikuj parametr „{name}”", + "duplicatePositionOnly": "Dozwolony tylko jeden parametr „/”", + "duplicateStarPattern": "W sekwencji wzorca dozwolony jest tylko jeden wzorzec „*”", + "duplicateStarStarPattern": "Dozwolony jest tylko jeden wpis „**”", + "duplicateUnpack": "Na liście dozwolona jest tylko jedna operacja rozpakowywania", + "ellipsisContext": "Wartość „...” jest niedozwolona w tym kontekście", + "ellipsisSecondArg": "Znaki „...” dozwolone tylko jako drugi z dwóch argumentów", + "enumClassOverride": "Klasa wyliczenia „{name}” jest ostateczna i nie można jej podzielić na podklasy", + "exceptionGroupIncompatible": "Składnia grupy wyjątków („except*”) wymaga języka Python w wersji 3.11 lub nowszej", + "exceptionTypeIncorrect": "Typ „{type}” nie pochodzi od parametru BaseException", + "exceptionTypeNotClass": "Typ „{type}” nie jest prawidłową klasą wyjątku", + "exceptionTypeNotInstantiable": "Konstruktor typu wyjątku „{type}” wymaga co najmniej jednego argumentu", + "expectedAfterDecorator": "Oczekiwano deklaracji funkcji lub klasy po dekoratorze", + "expectedArrow": "Oczekiwano wartości „->”, po której następuje adnotacja zwracanego typu", + "expectedAsAfterException": "Oczekiwano „jako” po typie wyjątku", + "expectedAssignRightHandExpr": "Oczekiwano wyrażenia po prawej stronie znaku „=”", + "expectedBinaryRightHandExpr": "Oczekiwano wyrażenia po prawej stronie operatora", + "expectedBoolLiteral": "Oczekiwano wartości True lub False", + "expectedCase": "Oczekiwano instrukcji „case”", + "expectedClassName": "Oczekiwano nazwy klasy", + "expectedCloseBrace": "Brak zamknięcia dla: „{”", + "expectedCloseBracket": "Brak zamknięcia dla: „[”", + "expectedCloseParen": "Brak zamknięcia dla: „(”", + "expectedColon": "Oczekiwano „:”", + "expectedComplexNumberLiteral": "Oczekiwano literału liczby zespolonej na potrzeby dopasowywania wzorca", + "expectedDecoratorExpr": "Formularz wyrażenia nie jest obsługiwany przez dekorator w wersji wcześniejszej niż Python 3.9", + "expectedDecoratorName": "Oczekiwano nazwy dekoratora", + "expectedDecoratorNewline": "Oczekiwano nowego wiersza na końcu dekoratora", + "expectedDelExpr": "Oczekiwano wyrażenia po „del”", + "expectedElse": "Oczekiwano elementu „innego”", + "expectedEquals": "Oczekiwano „=”", + "expectedExceptionClass": "Nieprawidłowa klasa lub obiekt wyjątku", + "expectedExceptionObj": "Oczekiwano obiektu wyjątku, klasy wyjątku lub wartości Brak", + "expectedExpr": "Oczekiwano wyrażenia", + "expectedFunctionAfterAsync": "Oczekiwano definicji funkcji po wartości „async”", + "expectedFunctionName": "Oczekiwano nazwy funkcji po wyrażeniu „def”", + "expectedIdentifier": "Oczekiwany identyfikator", + "expectedImport": "Oczekiwano wartości „import”", + "expectedImportAlias": "Oczekiwano symbolu po parametrze „as”", + "expectedImportSymbols": "Oczekiwano jednej lub więcej nazw symboli po zaimportowaniu", + "expectedIn": "Oczekiwano parametru „in”", + "expectedInExpr": "Oczekiwano wyrażenia po „in”", + "expectedIndentedBlock": "Oczekiwano wciętego bloku", + "expectedMemberName": "Oczekiwano nazwy składowej po znaku „.”", + "expectedModuleName": "Oczekiwana nazwa modułu", + "expectedNameAfterAs": "Oczekiwano nazwy symbolu po „jako”", + "expectedNamedParameter": "Parametr słowa kluczowego musi następować po znaku „*”", + "expectedNewline": "Oczekiwano nowego wiersza", + "expectedNewlineOrSemicolon": "Instrukcje muszą być oddzielone znakami nowych wierszy lub średnikami", + "expectedOpenParen": "Oczekiwano „(”", + "expectedParamName": "Oczekiwano nazwy parametru", + "expectedPatternExpr": "Oczekiwano wyrażenia wzorca", + "expectedPatternSubjectExpr": "Oczekiwano wyrażenia tematu wzorca", + "expectedPatternValue": "Oczekiwano wyrażenia wartości wzorca w postaci „a.b”", + "expectedReturnExpr": "Oczekiwano wyrażenia po „return”.", + "expectedSliceIndex": "Oczekiwano wyrażenia indeksu lub wycinka", + "expectedTypeNotString": "Oczekiwano typu, ale otrzymano literał ciągu", + "expectedTypeParameterName": "Oczekiwano nazwy parametru typu", + "expectedYieldExpr": "Oczekiwano wyrażenia w instrukcji wstrzymywania", + "finalClassIsAbstract": "Klasa „{type}” jest oznaczona jako końcowa i musi implementować wszystkie metody abstrakcyjne", + "finalContext": "Wartość „Final” jest niedozwolona w tym kontekście", + "finalMethodOverride": "Metoda „{name}” nie może przesłonić metody końcowej zdefiniowanej w klasie „{className}”", + "finalReassigned": "Element „{name}” jest zadeklarowany jako wersja ostateczna i nie można go ponownie przypisać", + "finalRedeclaration": "Nazwa „{name}” została wcześniej zadeklarowana jako końcowa", + "finalRedeclarationBySubclass": "Nie można ponownie zadeklarować nazwy „{name}”, ponieważ klasa nadrzędna „{className}” deklaruje ją jako końcową", + "finalTooManyArgs": "Oczekiwano jednego argumentu typu po wartości „Final”", + "finalUnassigned": "Nazwa „{name}” jest zadeklarowana jako końcowa, ale wartość nie jest przypisana", + "formatStringBrace": "Pojedynczy zamykający nawias klamrowy jest niedozwolony w literale ciągu f; użyj podwójnego zamykającego nawiasu klamrowego", + "formatStringBytes": "Literały ciągów formatu (ciągi f) nie mogą być binarne", + "formatStringDebuggingIllegal": "Specyfikator debugowania ciągu f „=” wymaga wersji języka Python 3.8 lub nowszej", + "formatStringEscape": "Sekwencja ucieczki (ukośnik odwrotny) jest niedozwolona w części wyrażenia ciągu f w wersji języka wcześniejszej niż Python 3.12", + "formatStringExpectedConversion": "Oczekiwano specyfikatora konwersji po znaku „!” w ciągu f-string", + "formatStringIllegal": "Literały ciągów formatu (ciągi f) wymagają wersji języka Python 3.6 lub nowszej", + "formatStringInPattern": "Ciąg formatu jest niedozwolony we wzorcu", + "formatStringNestedFormatSpecifier": "Wyrażenia zagnieżdżone zbyt głęboko w specyfikatorze ciągu formatu", + "formatStringNestedQuote": "Ciągi zagnieżdżone w ciągu f nie mogą używać tego samego znaku cudzysłowu co ciąg f w wersji języka wcześniejszej niż Python 3.12", + "formatStringUnicode": "Literały ciągu formatu (f-strings) nie mogą być formatu unicode", + "formatStringUnterminated": "Niezakończone wyrażenie w ciągu f; oczekiwano znaku „}”", + "functionDecoratorTypeUnknown": "Nietypowany dekorator funkcji zasłania typ funkcji; ignorując dekoratora", + "functionInConditionalExpression": "Wyrażenie warunkowe odwołuje się do funkcji, której wynikiem zawsze jest wartość Prawda", + "functionTypeParametersIllegal": "Składnia parametru typu klasy wymaga wersji języka Python 3.12 lub nowszej", + "futureImportLocationNotAllowed": "Importy z __future__ muszą znajdować się na początku pliku", + "generatorAsyncReturnType": "Zwracany typ funkcji generatora asynchronicznego musi być zgodny z elementem „AsyncGenerator[{yieldType}, Any]”", + "generatorNotParenthesized": "Wyrażenia generatora muszą być ujęte w nawiasy, jeśli nie są jedynym argumentem", + "generatorSyncReturnType": "Zwracany typ funkcji generatora musi być zgodny z elementem „Generator[{yieldType}, Any, Any]”", + "genericBaseClassNotAllowed": "Nie można użyć klasy bazowej „Generic” ze składnią parametru typu", + "genericClassAssigned": "Nie można przypisać ogólnego typu klasy", + "genericClassDeleted": "Nie można usunąć ogólnego typu klasy", + "genericNotAllowed": "Element „ogólny” jest nieprawidłowy w tym kontekście", + "genericTypeAliasBoundTypeVar": "Alias typu ogólnego w klasie nie może używać zmiennych typu powiązanego {names}", + "genericTypeArgMissing": "Wartość „Generic” wymaga co najmniej jednego argumentu typu", + "genericTypeArgTypeVar": "Argument typu dla wartości „Generic” musi być zmienną typu", + "genericTypeArgUnique": "Argumenty typu dla elementu „Generic” muszą być unikatowe", + "globalReassignment": "Nazwa „{name}” jest przypisywana przed deklaracją globalną", + "globalRedefinition": "Nazwa „{name}” została już zadeklarowana jako globalna", + "implicitStringConcat": "Niejawne łączenie ciągów jest niedozwolone", + "importCycleDetected": "Wykryto cykl w łańcuchu importu", + "importDepthExceeded": "Głębokość łańcucha importu przekroczyła {depth}", + "importResolveFailure": "Nie można rozpoznać importu „{importName}”.", + "importSourceResolveFailure": "Nie można rozpoznać importu „{importName}” ze źródła", + "importSymbolUnknown": "Nazwa „{name}” jest nieznanym symbolem importu", + "incompatibleMethodOverride": "Metoda „{name}” przesłania klasę „{className}” w niezgodny sposób", + "inconsistentIndent": "Wartość zmniejszenia wcięcia jest niezgodna z poprzednim wcięciem", + "inconsistentTabs": "Niespójne użycie tabulatorów i spacji we wcięciach", + "initMustReturnNone": "Zwracany typ „__init__” musi mieć wartość Brak", + "initSubclassClsParam": "Przesłonięcie __init_subclass__ powinno przyjmować parametr „cls”.", + "instanceMethodSelfParam": "Metody wystąpienia powinny przyjmować parametr „self”", + "instanceVarOverridesClassVar": "Zmienna wystąpienia „{name}” zastępuje zmienną klasy o tej samej nazwie w klasie „{className}”", + "instantiateAbstract": "Nie można utworzyć wystąpienia klasy abstrakcyjnej „{type}”", + "instantiateProtocol": "Nie można utworzyć wystąpienia klasy protokołu typu „{type}”", + "internalBindError": "Wystąpił błąd wewnętrzny podczas wiązania pliku „{plik}”: {message}", + "internalParseError": "Wystąpił błąd wewnętrzny podczas analizowania pliku „{plik}”: {message}", + "internalTypeCheckingError": "Wystąpił błąd wewnętrzny podczas sprawdzania typu pliku „{plik}”: {message}", + "invalidIdentifierChar": "Nieprawidłowy znak w identyfikatorze", + "invalidStubStatement": "Instrukcja nie ma znaczenia w pliku zastępczym typu", + "invalidTokenChars": "Nieprawidłowy znak „{text}” w tokenie", + "isInstanceInvalidType": "Drugi argument instrukcji „isinstance” musi być klasą lub krotką klas", + "isSubclassInvalidType": "Drugi argument „issubclass” musi być klasą lub krotką klas", + "keyValueInSet": "Pary klucz/wartość nie są dozwolone w zestawie", + "keywordArgInTypeArgument": "Argumentów słów kluczowych nie można używać na listach argumentów typu", + "keywordOnlyAfterArgs": "Separator argumentów tylko ze słowami kluczowymi jest niedozwolony po parametrze „*”", + "keywordParameterMissing": "Co najmniej jeden parametr słowa kluczowego musi występować po parametrze „*”", + "keywordSubscriptIllegal": "Argumenty słów kluczowych w indeksach podrzędnych nie są obsługiwane", + "lambdaReturnTypePartiallyUnknown": "Zwracany typ wyrażenia lambda „{returnType}” jest częściowo nieznany", + "lambdaReturnTypeUnknown": "Zwracany typ wyrażenia lambda jest nieznany", + "listAssignmentMismatch": "Wyrażenia typu „{type}” nie można przypisać do listy docelowej", + "listInAnnotation": "Wyrażenie listy jest niedozwolone w adnotacji typu", + "literalEmptyArgs": "Oczekiwano co najmniej jednego argumentu typu po wartości „Literal”", + "literalNotCallable": "Nie można utworzyć wystąpienia typu literału", + "literalUnsupportedType": "Argumenty typu dla elementu „Literal” muszą mieć wartość Brak, wartość literału (int, bool, str lub bytes) lub wartość wyliczenia", + "matchIncompatible": "Instrukcje dopasowania wymagają języka Python w wersji 3.10 lub nowszej", + "matchIsNotExhaustive": "Przypadki w instrukcji dopasowania nie obsługują wyczerpująco wszystkich wartości", + "maxParseDepthExceeded": "Przekroczono maksymalną głębokość analizy; podziel wyrażenie na mniejsze wyrażenia podrzędne", + "memberAccess": "Nie można uzyskać dostępu do składowej „{name}” dla typu „{type}”", + "memberDelete": "Nie można usunąć składowej „{name}” dla typu „{type}”", + "memberSet": "Nie można uzyskać przypisać składowej „{name}” dla typu „{type}”", + "metaclassConflict": "Metaklasa klasy pochodnej musi być podklasą metaklas wszystkich jej klas bazowych", + "metaclassDuplicate": "Można podać tylko jedną metaklasę", + "metaclassIsGeneric": "Metaklasa nie może być ogólna", + "methodNotDefined": "Nie zdefiniowano metody „{name}”.", + "methodNotDefinedOnType": "Metoda „{name}” nie została zdefiniowana dla typu „{type}”", + "methodOrdering": "Nie można utworzyć spójnej kolejności metod", + "methodOverridden": "„{name}” przesłania metodę o tej samej nazwie w klasie „{className}” o niezgodnym typie „{type}”", + "methodReturnsNonObject": "Metoda „{name}” nie zwraca obiektu", + "missingProtocolMembers": "Klasa pochodzi z co najmniej jednej klasy protokołu, ale nie implementuje wszystkich wymaganych składowych", + "missingSuperCall": "Metoda „{methodName}” nie wywołuje metody o tej samej nazwie w klasie nadrzędnej", + "moduleAsType": "Nie można użyć modułu jako typu", + "moduleNotCallable": "Moduł nie jest wywoływalny", + "moduleUnknownMember": "„{memberName}” nie jest znaną składową modułu „{moduleName}”", + "namedExceptAfterCatchAll": "Nazwana klauzula „except” nie może występować po klauzuli „catch-all except”", + "namedParamAfterParamSpecArgs": "Parametr słowa kluczowego \"{name}\" nie może występować w sygnaturze po parametrze argumentów ParamSpec", + "namedTupleEmptyName": "Nazwy w nazwanej krotce nie mogą być puste", + "namedTupleFirstArg": "Oczekiwano nazwanej nazwy klasy krotki jako pierwszego argumentu", + "namedTupleMultipleInheritance": "Wielokrotne dziedziczenie z kotki NamedTuple nie jest obsługiwane", + "namedTupleNameType": "Oczekiwano krotki z dwoma wpisami określającej nazwę i typ wpisu", + "namedTupleNameUnique": "Nazwy w nazwanej krotce muszą być unikatowe", + "namedTupleNoTypes": "Krotka „namedtuple” nie zapewnia typów wpisów krotki; zamiast tego użyj „NamedTuple”.", + "namedTupleSecondArg": "Oczekiwano nazwanej listy wpisów krotki jako drugiego argumentu", + "newClsParam": "Przesłonięcie __new__ powinno przyjmować parametr „cls”.", + "newTypeBadName": "Pierwszy argument elementu NewType musi być literałem ciągu", + "newTypeLiteral": "Typ NewType nie może być używany z typem Literał", + "newTypeNotAClass": "Oczekiwano klasy jako drugiego argumentu dla elementu NewType", + "newTypeParamCount": "Typ NewType wymaga dwóch argumentów pozycyjnych", + "newTypeProtocolClass": "Typ NewType nie może być używany z klasą protokołu", + "noOverload": "Żadne przeciążenia dla nazwy „{name}” nie pasują do podanych argumentów", + "noReturnContainsReturn": "Funkcja z zadeklarowanym zwracanym typem „NoReturn” nie może zawierać instrukcji Return", + "noReturnContainsYield": "Funkcja z zadeklarowanym zwracanym typem „NoReturn” nie może zawierać instrukcji Yield", + "noReturnReturnsNone": "Funkcja o zadeklarowanym typie „NoReturn” nie może zwrócić wartości „Brak”", + "nonDefaultAfterDefault": "Argument inny niż domyślny następuje po argumencie domyślnym", + "nonLocalInModule": "Deklaracja nielokalna nie jest dozwolona na poziomie modułu", + "nonLocalNoBinding": "Nie znaleziono powiązania dla nielokalnej nazwy „{name}”.", + "nonLocalReassignment": "Nazwa „{name}” jest przypisywana przed deklaracją nielokalną", + "nonLocalRedefinition": "Nazwa „{name}” została już zadeklarowana jako nielokalna", + "noneNotCallable": "Nie można wywołać obiektu typu „None”", + "noneNotIterable": "Obiekt typu „Brak” nie może być używany jako wartość iterowalna", + "noneNotSubscriptable": "Obiekt typu „None” nie może być użyty w indeksie dolnym", + "noneNotUsableWith": "Obiekt typu „Brak” nie może być używany z parametrem „with”", + "noneOperator": "Operator „{operator}” nie jest obsługiwany dla wartości „Brak”", + "noneUnknownMember": "Nazwa „{name}” nie jest znaną składową elementu „None”", + "notRequiredArgCount": "Oczekiwano jednego argumentu typu po wartości „NotRequired”", + "notRequiredNotInTypedDict": "Element „NotRequired” jest niedozwolony w tym kontekście", + "objectNotCallable": "Obiekt typu „{type}” nie jest wywoływalny", + "obscuredClassDeclaration": "Deklaracja klasy „{name}” jest zasłonięta przez deklarację o tej samej nazwie", + "obscuredFunctionDeclaration": "Deklaracja funkcji „{name}” jest zasłonięta przez deklarację o tej samej nazwie", + "obscuredMethodDeclaration": "Deklaracja metody „{name}” jest zasłonięta przez deklarację o tej samej nazwie", + "obscuredParameterDeclaration": "Deklaracja parametru „{name}” jest zasłonięta przez deklarację o tej samej nazwie", + "obscuredTypeAliasDeclaration": "Deklaracja aliasu typu „{name}” jest zasłonięta przez deklarację o tej samej nazwie", + "obscuredVariableDeclaration": "Deklaracja „{name}” jest zasłonięta przez deklarację o tej samej nazwie", + "operatorLessOrGreaterDeprecated": "Operator „<>” nie jest obsługiwany w języku Python w wersji 3; zamiast tego użyj „!=”.", + "optionalExtraArgs": "Oczekiwano jednego argumentu typu po parametrze „Optional”", + "orPatternIrrefutable": "Niepodważalny wzorzec jest dozwolony tylko jako ostatni podwzorzec we wzorcu „or”", + "orPatternMissingName": "Wszystkie wzorce podrzędne we wzorcu „or” muszą dotyczyć tych samych nazw", + "overlappingOverload": "Przeciążenie {obscured} dla nazwy „{name}” nigdy nie zostanie użyte, ponieważ jego parametry nakładają się na przeciążenie {obscuredBy}", + "overloadAbstractMismatch": "Przeciążone metody muszą być abstrakcyjne lub nieabstrakcyjne", + "overloadImplementationMismatch": "Przeciążone wdrożenie jest niespójne z sygnaturą przeciążenia {index}", + "overloadReturnTypeMismatch": "Przeciążenie {prevIndex} dla nazwy „{name}” nakłada się na przeciążenie {newIndex} i zwraca niezgodny typ", + "overloadWithImplementation": "Nazwa „{name}” jest oznaczona jako przeciążona, ale zawiera wdrożenie", + "overloadWithoutImplementation": "Element „{name}” jest oznaczony jako przeciążony, ale nie podano implementacji", + "overriddenMethodNotFound": "Metoda „{name}” jest oznaczona jako zastąpienie, ale nie istnieje metoda bazowa o tej samej nazwie", + "overrideDecoratorMissing": "Metoda „{name}” nie jest oznaczona jako zastąpienie, ale zastępuje metodę w klasie „{className}”", + "paramAfterKwargsParam": "Parametr nie może następować po parametrze „**”", + "paramAlreadyAssigned": "Parametr „{name}” jest już przypisany", + "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}”", + "paramSpecArgsKwargsUsage": "Składowe „args” i „kwargs” specyfikacji ParamSpec muszą znajdować się w sygnaturze funkcji", + "paramSpecArgsMissing": "Brak argumentów dla parametru ParamSpec „{type}”.", + "paramSpecArgsUsage": "Składowa „args” parametru ParamSpec jest ważna tylko wtedy, gdy jest używana z parametrem *args", + "paramSpecAssignedName": "Parametr ParamSpec musi być przypisany do zmiennej o nazwie „{name}”", + "paramSpecContext": "Specyfikacja ParamSpec nie jest dozwolona w tym kontekście", + "paramSpecDefaultNotTuple": "Oczekiwano wielokropka, wyrażenia krotki lub parametru ParamSpec dla domyślnej wartości ParamSpec", + "paramSpecFirstArg": "Oczekiwano nazwy parametru ParamSpec jako pierwszego argumentu", + "paramSpecKwargsUsage": "Składowa „kwargs” parametru ParamSpec jest ważna tylko wtedy, gdy jest używana z parametrem **kwargs", + "paramSpecNotBound": "Specyfikacja parametru „{type}” nie ma wartości powiązanej", + "paramSpecNotUsedByOuterScope": "Element ParamSpec „{name}” nie ma znaczenia w tym kontekście", + "paramSpecScopedToReturnType": "Parametr ParamSpec „{name}” jest objęty zakresem możliwości wywołania w ramach zwracanego typu i nie można odwoływać się do niego w treści funkcji", + "paramSpecUnknownArg": "Parametr ParamSpec nie obsługuje więcej niż jednego argumentu", + "paramSpecUnknownMember": "Nazwa „{name}” nie jest znaną składową parametru ParamSpec", + "paramSpecUnknownParam": "„{name}” jest nieznanym parametrem dla parametru ParamSpec", + "paramTypeCovariant": "Zmienna typu kowariantnego nie może być używana w typie parametru", + "paramTypePartiallyUnknown": "Typ parametru „{paramName}” jest częściowo nieznany", + "paramTypeUnknown": "Typ parametru „{paramName}” jest nieznany", + "parenthesizedContextManagerIllegal": "Nawiasy w instrukcji „with” wymagają wersji języka Python 3.9 lub nowszej", + "patternNeverMatches": "Wzorzec nigdy nie zostanie dopasowany do typu podmiotu „{type}”", + "positionArgAfterNamedArg": "Argument pozycyjny nie może występować po argumentach słów kluczowych", + "positionOnlyAfterArgs": "Separator argumentów tylko do pozycjonowania jest niedozwolony po parametrze „*”", + "positionOnlyAfterKeywordOnly": "Parametr „/” musi występować przed parametrem „*”.", + "positionOnlyFirstParam": "Separator argumentów tylko do pozycjonowania jest niedozwolony jako pierwszy parametr", + "positionOnlyIncompatible": "Separator argumentów tylko do pozycjonowania wymaga języka Python w wersji 3.8 lub nowszej", + "privateImportFromPyTypedModule": "Nazwa „{name}” nie jest eksportowana z modułu „{module}”", + "privateUsedOutsideOfClass": "Nazwa „{name}” jest prywatna i używana poza klasą, w której została zadeklarowana", + "privateUsedOutsideOfModule": "Nazwa „{name}” jest prywatna i używana poza modułem, w którym została zadeklarowana", + "propertyOverridden": "„{name}” nieprawidłowo zastępuje właściwość o tej samej nazwie w klasie „{className}”", + "propertyStaticMethod": "Metody statyczne nie są dozwolone w przypadku metod pobierających, ustawiających lub usuwających właściwości", + "protectedUsedOutsideOfClass": "Nazwa „{name}” jest chroniona i używana poza klasą, w której została zadeklarowana", + "protocolBaseClass": "Klasa protokołu typu „{classType}” nie może pochodzić od klasy niebędącej klasą protokołu typu „{baseType}”", + "protocolBaseClassWithTypeArgs": "Argumenty typu są niedozwolone w przypadku klasy protokołu, gdy jest używana składnia parametru typu", + "protocolIllegal": "Użycie elementu „Protocol” wymaga języka Python w wersji 3.7 lub nowszej", + "protocolNotAllowedInTypeArgument": "„Protokół” nie może być użyty jako argument typu", + "protocolUsedInCall": "Nie można użyć klasy protokołu w wywołaniu „{name}”.", + "protocolVarianceContravariant": "Zmienna typu „{variable}” używana w klasie protokołu ogólnego „{class}” powinna być kontrawariantna", + "protocolVarianceCovariant": "Zmienna typu „{variable}” używana w klasie protokołu ogólnego „{class}” powinna być kowariantna", + "protocolVarianceInvariant": "Zmienna typu „{variable}” używana w klasie protokołu ogólnego „{class}” powinna być niezmienna", + "pyrightCommentInvalidDiagnosticBoolValue": "Po dyrektywie komentarza Pyright musi następować znak „=” oraz wartość Prawda lub Fałsz", + "pyrightCommentInvalidDiagnosticSeverityValue": "Po dyrektywie komentarza Pyright musi następować znak „=” oraz wartość Prawda, Fałsz, Błąd, Ostrzeżenie, Informacja lub Brak", + "pyrightCommentMissingDirective": "Komentarz Pyright musi poprzedzać dyrektywę (bazową lub ścisłą) lub regułę diagnostyczną", + "pyrightCommentNotOnOwnLine": "Komentarze Pyright używane do kontrolowania ustawień na poziomie plików muszą pojawiać się w oddzielnych wierszach", + "pyrightCommentUnknownDiagnosticRule": "Reguła „{rule}” jest nieznaną regułą diagnostyczną dla komentarza Pyright", + "pyrightCommentUnknownDiagnosticSeverityValue": "Wartość „{value}” jest nieprawidłowa dla komentarza Pyright; oczekiwano wartości: Prawda, Fałsz, Błąd, Ostrzeżenie, Informacja lub Brak", + "pyrightCommentUnknownDirective": "Wartość „{directive}” jest nieznaną dyrektywą dla komentarza Pyright; oczekiwano wartości „strict” lub „basic”", + "readOnlyArgCount": "Oczekiwano jednego argumentu typu po wartości „ReadOnly”", + "readOnlyNotInTypedDict": "Element „ReadOnly” jest niedozwolony w tym kontekście", + "recursiveDefinition": "Nie można określić typu „{name}”, ponieważ odwołuje się on do samego siebie", + "relativeImportNotAllowed": "Importy względne nie mogą być używane z formularzem „import .a”; zamiast tego użyj „from . import a”.", + "requiredArgCount": "Oczekiwano jednego argumentu typu po wartości „Required”", + "requiredNotInTypedDict": "Element „Required” jest niedozwolony w tym kontekście", + "returnInAsyncGenerator": "Instrukcja „return” z wartością jest niedozwolona w generatorze asynchronicznym", + "returnMissing": "Funkcja z zadeklarowanym typem „{returnType}” musi zwracać wartość we wszystkich ścieżkach kodu", + "returnOutsideFunction": "Instrukcja „return” może być używana tylko w ramach funkcji", + "returnTypeContravariant": "Kontrawariantna zmienna typu nie może być używana w zwracanym typie", + "returnTypeMismatch": "Wyrażenia typu „{exprType}” nie można przypisać do zwracanego typu „{returnType}”", + "returnTypePartiallyUnknown": "Zwracany typ „{returnType}” jest częściowo nieznany", + "returnTypeUnknown": "Zwracany typ jest nieznany", + "revealLocalsArgs": "Oczekiwano braku argumentów dla wywołania „reveal_locals”", + "revealLocalsNone": "Brak elementów lokalnych w tym zakresie", + "revealTypeArgs": "Oczekiwano pojedynczego argumentu pozycyjnego dla wywołania „reveal_type”", + "revealTypeExpectedTextArg": "Argument „expected_text” dla funkcji „reveal_type” musi być wartością literału str", + "revealTypeExpectedTextMismatch": "Wpisz niezgodność tekstu; oczekiwano „{expected}”, ale otrzymano „{received}”", + "revealTypeExpectedTypeMismatch": "Niezgodność typu; oczekiwano wartości „{expected}”, a uzyskano „{received}”", + "selfTypeContext": "Wartość „Self” jest nieprawidłowa w tym kontekście", + "selfTypeWithTypedSelfOrCls": "Nie można użyć wartości „Self” w funkcji z parametrem „self” lub „cls”, która ma adnotację typu inną niż „Self”", + "setterGetterTypeMismatch": "Typu wartości metody ustawiającej właściwość nie można przypisać do zwracanego typu metody pobierającej", + "singleOverload": "Nazwa „{name}” jest oznaczona jako przeciążona, ale brakuje dodatkowych przeciążeń", + "slotsAttributeError": "Nie określono atrybutu „{name}” w elemencie __slots__", + "slotsClassVarConflict": "„{name}” powoduje konflikt ze zmienną wystąpienia zadeklarowaną w elemencie „__slots__”", + "starPatternInAsPattern": "Wzór gwiazdy nie może być użyty z miejscem docelowym parametru „as”.", + "starPatternInOrPattern": "Wzór gwiazdy nie może mieć wartości ORed w ramach innych wzorów", + "starStarWildcardNotAllowed": "Symbolu ** nie można używać z symbolem wieloznacznym „_”", + "staticClsSelfParam": "Metody statyczne nie powinny przyjmować parametru „self” ani „cls”.", + "stdlibModuleOverridden": "Ścieżka „{path}” zastępuje moduł stdlib „{name}”", + "strictTypeGuardReturnType": "Zwracanego typu StrictTypeGuard („{returnType}”) nie można przypisać do typu parametru wartości („{type}”)", + "stringNonAsciiBytes": "Znak inny niż ASCII jest niedozwolony w literale ciągu bajtów", + "stringNotSubscriptable": "Wyrażenie ciągu nie może być indeksowane w adnotacji typu; ujmij całą adnotację w cudzysłów", + "stringUnsupportedEscape": "Nieobsługiwana sekwencja ucieczki w literale ciągu", + "stringUnterminated": "Literał ciągu jest niezakończony", + "stubFileMissing": "Nie znaleziono pliku zastępczego dla „{importName}”", + "stubUsesGetAttr": "Typ pliku zastępczego jest niekompletny; element „__getattr__” przesłania błędy typu dla modułu", + "sublistParamsIncompatible": "Parametry podlisty nie są obsługiwane w wersji języka Python 3.x", + "superCallArgCount": "Oczekiwano nie więcej niż dwóch argumentów wywołania „super”", + "superCallFirstArg": "Oczekiwano typu klasy jako pierwszego argumentu wywołania „super”, ale otrzymano „{type}”", + "superCallSecondArg": "Drugi argument wywołania „super” musi być obiektem lub klasą wywodzącą się z typu „{type}”", + "superCallZeroArgForm": "Forma bez argumentów wywołania „super” jest prawidłowa tylko w obrębie klasy", + "symbolIsPossiblyUnbound": "Nazwa „{name}” jest prawdopodobnie niepowiązana", + "symbolIsUnbound": "Nazwa „{name}” jest niepowiązana", + "symbolIsUndefined": "Nazwa „{name}” nie jest zdefiniowana", + "symbolOverridden": "Nazwa „{name}” przesłania symbol o tej samej nazwie w klasie „{className}”", + "totalOrderingMissingMethod": "Klasa musi definiować jedną z następujących wartości: „__lt__”, „__le__”, „__gt__” lub „__ge__”, aby użyć parametru total_ordering", + "trailingCommaInFromImport": "Końcowy przecinek nie jest dozwolony bez otaczających nawiasów", + "tryWithoutExcept": "Instrukcja „Try” musi mieć co najmniej jedną klauzulę „except” lub „finally”", + "tupleAssignmentMismatch": "Wyrażenia typu „{type}” nie można przypisać do docelowej krotki", + "tupleInAnnotation": "Wyrażenie krotki jest niedozwolone w adnotacji typu", + "tupleIndexOutOfRange": "Indeks {index} jest poza zakresem dla typu {type}", + "typeAliasIllegalExpressionForm": "Nieprawidłowy formularz wyrażenia dla definicji aliasu typu", + "typeAliasIsRecursiveDirect": "Alias typu „{name}” nie może używać samego siebie w swojej definicji", + "typeAliasNotInModuleOrClass": "Typ TypeAlias można zdefiniować tylko w zakresie modułu lub klasy", + "typeAliasRedeclared": "Nazwa „{name}” jest zadeklarowana jako TypeAlias i może być przypisana tylko raz", + "typeAliasStatementIllegal": "Instrukcja typu alias wymaga języka Python w wersji 3.12 lub nowszej", + "typeAliasTypeMustBeAssigned": "Typ TypeAliasType musi być przypisany do zmiennej o takiej samej nazwie jak alias typu", + "typeAliasTypeNameArg": "Pierwszy argument dla typu typeAliasType musi być literałem ciągu reprezentującym nazwę aliasu typu", + "typeAliasTypeNameMismatch": "Nazwa aliasu typu musi być zgodna z nazwą zmiennej, do której jest przypisana", + "typeAliasTypeParamInvalid": "Lista parametrów typu musi być krotką zawierającą tylko parametry TypeVar, TypeVarTuple lub ParamSpec", + "typeAnnotationCall": "Niedozwolona adnotacja typu: wyrażenie wywołania jest niedozwolone", + "typeAnnotationVariable": "Adnotacja typu niedozwolonego: zmienna niedozwolona, chyba że jest aliasem typu", + "typeArgListExpected": "Oczekiwano parametru ParamSpec, wielokropka lub listy typów", + "typeArgListNotAllowed": "Wyrażenie listy jest niedozwolone dla tego argumentu typu", + "typeArgsExpectingNone": "Oczekiwano braku argumentów typu dla klasy „{name}”", + "typeArgsMismatchOne": "Oczekiwano jednego argumentu typu, ale otrzymano {received}", + "typeArgsMissingForAlias": "Oczekiwano argumentów typu dla aliasu typu ogólnego „{name}”", + "typeArgsMissingForClass": "Oczekiwano argumentów typu dla ogólnej klasy „{name}”", + "typeArgsTooFew": "Podano zbyt mało argumentów typu dla „{name}”; oczekiwano wartości {expected}, ale otrzymano {received}", + "typeArgsTooMany": "Podano zbyt wiele argumentów typu dla nazwy „{name}”; oczekiwano {expected}, a uzyskano {received}", + "typeAssignmentMismatch": "Wyrażenie typu „{sourceType}” nie może być przypisane do zadeklarowanego typu „{destType}”", + "typeCallNotAllowed": "Wywołanie type() nie powinno być używane w adnotacji typu", + "typeCommentDeprecated": "Używanie komentarzy typu jest przestarzałe; zamiast tego użyj adnotacji typu", + "typeExpectedClass": "Oczekiwano wyrażenia typu, ale otrzymano „{type}”", + "typeGuardArgCount": "Oczekiwano pojedynczego argumentu typu po „TypeGuard”", + "typeGuardParamCount": "Funkcje i metody zabezpieczające typu zdefiniowane przez użytkownika muszą mieć co najmniej jeden parametr wejściowy", + "typeNotAwaitable": "Nie można oczekiwać typu „{type}”", + "typeNotCallable": "Wyrażenie „{expression}” ma typ „{type}” i nie można go wywołać", + "typeNotIntantiable": "Nie można utworzyć wystąpienia „{type}”", + "typeNotIterable": "Typ „{type}” nie jest iterowalny", + "typeNotSpecializable": "Nie można specjalizować typu „{type}”", + "typeNotSubscriptable": "Obiekt typu „{type}” nie może być użyty w indeksie dolnym", + "typeNotSupportBinaryOperator": "Operator „{operator}” nieobsługiwany dla typów „{leftType}” i „{rightType}”", + "typeNotSupportBinaryOperatorBidirectional": "Operator „{operator}” nie jest obsługiwany dla typów „{leftType}” i „{rightType}”, gdy oczekiwanym typem jest „{expectedType}”", + "typeNotSupportUnaryOperator": "Operator „{operator}” nie jest obsługiwany dla typu „{type}”", + "typeNotSupportUnaryOperatorBidirectional": "Operator „{operator}” nie jest obsługiwany dla typu „{type}”, gdy oczekiwanym typem jest „{expectedType}”", + "typeNotUsableWith": "Obiekt typu „{type}” nie może być używany z parametrem „with”, ponieważ nie wdraża metody {method}", + "typeParameterBoundNotAllowed": "Powiązanie lub ograniczenie nie może być używane z parametrem typu ze zmienną liczbą argumentów lub parametrem ParamSpec", + "typeParameterConstraintTuple": "Ograniczenie parametru typu musi być krotką dwóch lub więcej typów", + "typeParameterExistingTypeParameter": "Parametr typu „{name}” jest już używany", + "typeParameterNotDeclared": "Parametr typu „{name}” nie znajduje się na liście parametrów typu dla „{container}”", + "typeParametersMissing": "Należy określić co najmniej jeden parametr typu", + "typePartiallyUnknown": "Typ „{name}” jest częściowo nieznany", + "typeUnknown": "Typ „{name}” jest nieznany", + "typeVarAssignedName": "Typ TypeVar musi być przypisany do zmiennej o nazwie „{name}”", + "typeVarAssignmentMismatch": "Nie można przypisać typu „{type}” do zmiennej typu „{name}”", + "typeVarBoundAndConstrained": "Typ TypeVar nie może być jednocześnie powiązany i ograniczony", + "typeVarBoundGeneric": "Typ powiązany TypeVar nie może być ogólny", + "typeVarConstraintGeneric": "Typ ograniczenia TypeVar nie może być ogólny", + "typeVarDefaultBoundMismatch": "Domyślny typ TypeVar musi być podtypem powiązanego typu", + "typeVarDefaultConstraintMismatch": "Typ domyślny TypeVar musi być jednym z typów z ograniczeniami", + "typeVarDefaultIllegal": "Typy domyślne zmiennych typów wymagają wersji języka Python 3.13 lub nowszej", + "typeVarDefaultInvalidTypeVar": "Parametr typu „{name}” ma typ domyślny, który odnosi się do co najmniej jednej zmiennej typu, która jest poza zakresem", + "typeVarFirstArg": "Oczekiwano nazwy TypeVar jako pierwszego argumentu", + "typeVarNoMember": "Typ TypeVar „{type}” nie ma składowej „{name}”", + "typeVarNotSubscriptable": "Typ TypeVar „{type}” nie może być subskrybowany", + "typeVarNotUsedByOuterScope": "Zmienna typu „{name}” nie ma w tym kontekście żadnego znaczenia", + "typeVarPossiblyUnsolvable": "Zmienna typu „{name}” może zostać nierozwiązana, jeśli obiekt wywołujący nie poda argumentu dla parametru „{param}”", + "typeVarScopedToReturnType": "Zmienna typu „{name}” jest objęta zakresem możliwości wywołania w typie zwracanym i nie można odwoływać się do niej w treści funkcji", + "typeVarSingleConstraint": "Typ TypeVar musi mieć co najmniej dwa typy ograniczone", + "typeVarTupleContext": "Typ TypeVarTuple nie jest dozwolony w tym kontekście", + "typeVarTupleDefaultNotUnpacked": "Typ domyślny TypeVarTuple musi być nierozpakowaną krotką lub parametrem TypeVarTuple", + "typeVarTupleMustBeUnpacked": "Operator rozpakowywania jest wymagany dla wartości parametru TypeVarTuple", + "typeVarTupleUnknownParam": "Nazwa „{name}” jest nieznanym parametrem typu TypeVarTuple", + "typeVarUnknownParam": "„{name}” jest nieznanym parametrem dla argumentu TypeVar", + "typeVarUsedByOuterScope": "Argument TypeVar „{name}” jest już używany przez zakres zewnętrzny", + "typeVarUsedOnlyOnce": "Typ TypeVar „{name}” pojawia się tylko raz w sygnaturze funkcji ogólnej", + "typeVarVariance": "Zmienna typu TypeVar nie może być jednocześnie kowariantna i kontrawariantna", + "typeVarWithoutDefault": "Element „{name}” nie może występować po elemencie „{other}” na liście parametrów typu, ponieważ nie ma typu domyślnego", + "typeVarsNotInGenericOrProtocol": "Elementy Generic[] lub Protocol[] muszą zawierać wszystkie zmienne typu", + "typedDictAccess": "Nie można uzyskać dostępu do elementu w TypedDict", + "typedDictBadVar": "Klasy TypedDict mogą zawierać tylko adnotacje typu", + "typedDictBaseClass": "Wszystkie klasy bazowe dla klas TypedDict muszą być również klasami TypedDict", + "typedDictBoolParam": "Oczekiwano, że parametr „{name}” będzie miał wartość Prawda lub Fałsz", + "typedDictDelete": "Nie można usunąć elementu w typie TypedDict", + "typedDictEmptyName": "Nazwy w elemencie TypedDict nie mogą być puste", + "typedDictEntryName": "Oczekiwano literału ciągu dla nazwy wpisu słownika", + "typedDictEntryUnique": "Nazwy w słowniku muszą być unikatowe", + "typedDictExtraArgs": "Dodatkowe argumenty TypedDict nie są obsługiwane", + "typedDictFieldReadOnlyRedefinition": "Nie można ponownie zdefiniować pola TypedDict „{name}” jako tylko do odczytu", + "typedDictFieldTypeRedefinition": "Nie można ponownie zdefiniować pola TypedDict „{name}”", + "typedDictFirstArg": "Oczekiwano nazwy klasy TypedDict jako pierwszego argumentu", + "typedDictSecondArgDict": "Oczekiwano parametru dict lub słowa kluczowego jako drugiego parametru", + "typedDictSecondArgDictEntry": "Oczekiwano prostego wpisu słownika", + "typedDictSet": "Nie można przypisać elementu w TypedDict", + "unaccessedClass": "Nie uzyskano dostępu do klasy „{name}”", + "unaccessedFunction": "Brak dostępu do funkcji „{name}”.", + "unaccessedImport": "Import „{name}” nie jest dostępny", + "unaccessedSymbol": "Brak dostępu do „{name}”.", + "unaccessedVariable": "Brak dostępu do zmiennej „{name}”.", + "unannotatedFunctionSkipped": "Analiza funkcji „{name}” została pominięta, ponieważ nie ma adnotacji", + "unexpectedAsyncToken": "Oczekiwano wartości „def”, „with” lub „for” po „async”", + "unexpectedExprToken": "Nieoczekiwany token na końcu wyrażenia", + "unexpectedIndent": "Nieoczekiwane wcięcie", + "unexpectedUnindent": "Nieoczekiwany brak wcięcia", + "unhashableDictKey": "Klucz słownika musi być wartością skrótu", + "unhashableSetEntry": "Ustawiany wpis musi być wartością skrótu", + "uninitializedAbstractVariables": "Zmienne zdefiniowane w abstrakcyjnej klasie bazowej nie są inicjowane w klasie końcowej „{classType}”", + "uninitializedInstanceVariable": "Zmienna wystąpienia „{name}” nie została zainicjowana w treści klasy ani w metodzie __init__", + "unionForwardReferenceNotAllowed": "Składnia unii nie może być używana z operandem ciągu; użyj cudzysłowów wokół całego wyrażenia", + "unionSyntaxIllegal": "Alternatywna składnia unii wymaga języka Python w wersji 3.10 lub nowszej", + "unionTypeArgCount": "Unia wymaga co najmniej dwóch argumentów typu", + "unmatchedEndregionComment": "W regionie #endregion brakuje odpowiedniego regionu #region", + "unmatchedRegionComment": "W regionie #region brakuje odpowiedniego regionu #endregion", + "unnecessaryCast": "Niepotrzebne wywołanie „cast”; typ jest już „{type}”", + "unnecessaryIsInstanceAlways": "Niepotrzebne wywołanie wystąpienia; „{testType}” jest zawsze wystąpieniem „{classType}”", + "unnecessaryIsSubclassAlways": "Niepotrzebne wywołanie „issubclass”; „{testType}” jest zawsze podklasą klasy „{classType}”", + "unnecessaryPyrightIgnore": "Niepotrzebny komentarz „# pyright: ignore”", + "unnecessaryPyrightIgnoreRule": "Niepotrzebna reguła „# pyright: ignore”: „{name}”", + "unnecessaryTypeIgnore": "Niepotrzebny komentarz „# type: ignore”", + "unpackArgCount": "Oczekiwano jednego argumentu typu po wartości „Unpack”", + "unpackExpectedTypeVarTuple": "Oczekiwano typu TypeVarTuple lub krotki jako argumentu typu dla rozpakowywania", + "unpackExpectedTypedDict": "Oczekiwano argumentu typu TypedDict dla rozpakowywania", + "unpackIllegalInComprehension": "Operacja rozpakowywania nie jest dozwolona w rozumieniu", + "unpackInAnnotation": "Operator rozpakowywania nie jest dozwolony w adnotacji typu", + "unpackInDict": "Operacja rozpakowywania nie jest dozwolona w słownikach", + "unpackInSet": "Rozpakowywanie operatora jest niedozwolone w zestawie", + "unpackNotAllowed": "Rozpakowywanie jest niedozwolone w tym kontekście", + "unpackOperatorNotAllowed": "Operacja rozpakowywania nie jest dozwolona w tym kontekście", + "unpackTuplesIllegal": "Operacja rozpakowywania nie jest dozwolona w krotkach przed językiem Python w wersji 3.8", + "unpackedArgInTypeArgument": "Rozpakowanych argumentów nie można używać na listach argumentów typu", + "unpackedArgWithVariadicParam": "Nie można użyć nierozpakowanego argumentu dla parametru TypeVarTuple", + "unpackedDictArgumentNotMapping": "Wyrażenie argumentu po znakach ** musi być mapowaniem z typem klucza „str”", + "unpackedDictSubscriptIllegal": "Operator rozpakowywania słownika w indeksie dolnym jest niedozwolony", + "unpackedSubscriptIllegal": "Operator rozpakowywania w indeksie dolnym wymaga języka Python w wersji 3.11 lub nowszej", + "unpackedTypeVarTupleExpected": "Oczekiwano nierozpakowanego typu TypeVarTuple; użyj Unpack[{name1}] lub *{name2}", + "unpackedTypedDictArgument": "Nie można dopasować nierozpakowanego argumentu TypedDict do parametrów", + "unreachableCode": "Kod jest nieosiągalny", + "unreachableExcept": "Klauzula wyjątku jest nieosiągalna, ponieważ wyjątek jest już obsługiwany", + "unsupportedDunderAllOperation": "Operacja na elemencie „__all__” nie jest obsługiwana, więc wyeksportowana lista symboli może być nieprawidłowa", + "unusedCallResult": "Wynik wyrażenia wywołania jest typu „{type}” i nie jest używany; przypisz do zmiennej „_”, jeśli jest to zamierzone", + "unusedCoroutine": "Wynik wywołania funkcji asynchronicznej nie jest używany; użyj wartości „await” lub przypisz wynik do zmiennej", + "unusedExpression": "Wartość wyrażenia jest nieużywana", + "varAnnotationIllegal": "Adnotacje typu dla zmiennych wymagają języka Python w wersji 3.6 lub nowszej; użyj komentarza typu, aby uzyskać zgodność z poprzednimi wersjami", + "variableFinalOverride": "Zmienna „{name}” jest oznaczona jako końcowa i zastępuje zmienną inną niż końcowa o tej samej nazwie w klasie „{className}”", + "variadicTypeArgsTooMany": "Lista argumentów typu może zawierać co najwyżej jeden nierozpakowany typ TypeVarTuple lub krotkę", + "variadicTypeParamTooManyAlias": "Alias typu może mieć co najwyżej jeden parametr typu TypeVarTuple, ale otrzymał wiele ({names})", + "variadicTypeParamTooManyClass": "Klasa ogólna może mieć co najwyżej jeden parametr typu TypeVarTuple, ale otrzymał wiele ({names})", + "walrusIllegal": "Operator „:=” wymaga języka Python w wersji 3.8 lub nowszej", + "walrusNotAllowed": "Operator \":=\" nie jest dozwolony w tym kontekście bez otaczających nawiasów", + "wildcardInFunction": "Importowanie symboli wieloznacznych jest niedozwolone w obrębie klasy lub funkcji", + "wildcardLibraryImport": "Importowanie symboli wieloznacznych z biblioteki jest niedozwolone", + "wildcardPatternTypePartiallyUnknown": "Typ przechwycony przez wzorzec symboli wieloznacznych jest częściowo nieznany", + "wildcardPatternTypeUnknown": "Typ przechwycony przez wzorzec symboli wieloznacznych jest nieznany", + "yieldFromIllegal": "Użycie wartości „yield from” wymaga języka Python w wersji 3.3 lub nowszej", + "yieldFromOutsideAsync": "Instrukcja „yield from” jest niedozwolona w funkcji asynchronicznej", + "yieldOutsideFunction": "Instrukcja „yield” jest niedozwolona poza funkcją lub wyrażeniem lambda", + "yieldWithinListCompr": "Instrukcja „yield” nie jest dozwolona w rozumieniu listy", + "zeroCaseStatementsFound": "Instrukcja dopasowania musi zawierać co najmniej jedną instrukcję dotyczącą wielkości liter", + "zeroLengthTupleNotAllowed": "Krotka o zerowej długości jest niedozwolona w tym kontekście" + }, + "DiagnosticAddendum": { + "argParam": "Argument odpowiada parametrowi „{paramName}”", + "argParamFunction": "Argument odpowiada parametrowi „{paramName}” w funkcji „{functionName}”", + "argsParamMissing": "Parametr „*{paramName}” nie ma odpowiadającego mu parametru", + "argsPositionOnly": "Niezgodność parametrów tylko dla pozycji; oczekiwano wartości „{expected}”, a uzyskano „{received}”", + "argumentType": "Typ argumentu to „{type}”", + "argumentTypes": "Typy argumentów: ({types})", + "assignToNone": "Nie można przypisać typu do typu „Brak”", + "asyncHelp": "Czy chodziło o wartość „async with”?", + "baseClassOverriddenType": "Klasa bazowa „{baseClass}” udostępnia typ „{type}”, który jest przesłonięty", + "baseClassOverridesType": "Zastąpienie klasy bazowej „{baseClass}” typem „{type}”", + "conditionalRequiresBool": "Metoda __bool__ dla typu „{operandType}” zwraca typ \"{boolReturnType}\" zamiast „bool”", + "dataClassFieldLocation": "Deklaracja pola", + "dataClassFrozen": "Nazwa „{name}” jest zamrożona", + "finalMethod": "Metoda końcowa", + "functionParamDefaultMissing": "Brak domyślnego argumentu dla parametru „{name}”", + "functionParamName": "Niezgodność nazw parametrów: „{destName}” a „{srcName}”", + "functionReturnTypeMismatch": "Typ zwracanego typu funkcji „{sourceType}” jest niezgodny z typem „{destType}”", + "functionTooFewParams": "Funkcja akceptuje zbyt mało parametrów pozycyjnych; oczekiwano {expected}, ale otrzymano {received}", + "functionTooManyParams": "Funkcja akceptuje zbyt wiele parametrów pozycyjnych; oczekiwano {expected}, ale otrzymano {received}", + "incompatibleDeleter": "Metoda usuwająca właściwości jest niezgodna", + "incompatibleGetter": "Metoda pobierająca właściwości jest niezgodna", + "incompatibleSetter": "Metoda ustawiająca właściwości jest niezgodna", + "initMethodLocation": "Metoda __init__ jest zdefiniowana w klasie „{type}”", + "initMethodSignature": "Sygnatura __init__ to typ „{type}”", + "keyNotRequired": "„{name}” nie jest wymaganym kluczem w typie „{type}”, więc dostęp może spowodować wyjątek środowiska uruchomieniowego", + "keyReadOnly": "Nazwa „{name}” jest kluczem tylko do odczytu w typie „{type}”", + "keyRequiredDeleted": "Nazwa „{name}” jest wymaganym kluczem i nie można go usunąć", + "keyUndefined": "Nazwa „{name}” nie jest zdefiniowanym kluczem w typie „{type}”", + "kwargsParamMissing": "Parametr „**{paramName}” nie ma odpowiadającego mu parametru", + "listAssignmentMismatch": "Typ „{type}” jest niezgodny z listą docelową", + "literalAssignmentMismatch": "Nie można przypisać typu „{sourceType}” do typu „{destType}”", + "matchIsNotExhaustiveHint": "Jeśli kompleksowa obsługa nie jest zamierzona, dodaj „case _: pass”", + "matchIsNotExhaustiveType": "Nieobsługiwany typ: „{type}”", + "memberAssignment": "Wyrażenia typu „{type}” nie można przypisać do składowej „{name}” klasy „{classType}”", + "memberIsAbstract": "Element „{type}.{name}” jest abstrakcyjny", + "memberIsAbstractMore": "i jeszcze {count}...", + "memberIsFinalInProtocol": "Nazwa „{name}” jest oznaczona jako końcowa w protokole", + "memberIsInitVar": "Składowa „{name}” jest polem tylko do operacji init", + "memberIsInvariant": "Nazwa „{name}” jest niezmienna, ponieważ jest modyfikowalna", + "memberIsNotFinalInProtocol": "Element „{name}” nie jest oznaczony jako wersja ostateczna w protokole", + "memberSetClassVar": "Nie można przypisać składowej „{name}” przez wystąpienie klasy, ponieważ jest to element ClassVar", + "memberTypeMismatch": "Nazwa „{name}” jest niezgodnym typem", + "memberUnknown": "Składowa „{name}” jest nieznana", + "missingDeleter": "Brak metody usuwania właściwości", + "missingGetter": "Brak metody pobierającej właściwości", + "missingProtocolMember": "Składowa „{name}” jest zadeklarowana w klasie protokołu „{classType}”", + "missingSetter": "Brak metody zestawu właściwości", + "namedParamMissingInDest": "W lokalizacji docelowej brakuje parametru słowa kluczowego „{name}”.", + "namedParamMissingInSource": "W źródle brakuje parametru słowa kluczowego „{name}”.", + "namedParamTypeMismatch": "Parametru słowa kluczowego „{name}” typu „{sourceType}” nie można przypisać do typu „{destType}”", + "newMethodLocation": "Metoda __new__ jest zdefiniowana w klasie „{type}”", + "newMethodSignature": "Sygnatura __new__ to typ „{type}”", + "noOverloadAssignable": "Żadna przeciążona funkcja nie pasuje do typu „{type}”", + "orPatternMissingName": "Brak nazw: {name}", + "overloadNotAssignable": "Nie można przypisać jednego lub więcej przeciążeń „{name}”.", + "overloadSignature": "Sygnatura przeciążenia jest zdefiniowana tutaj", + "overloadWithImplementation": "Treść przeciążenia funkcji powinna mieć postać „...”", + "overriddenMethod": "Przesłonięta metoda", + "overriddenSymbol": "Przesłonięty symbol", + "overrideNoOverloadMatches": "Żadna sygnatura przeciążenia w przesłonięciu nie jest zgodna z metodą bazową", + "overrideNotClassMethod": "Metoda bazowa jest zadeklarowana jako metoda classmethod, ale przesłonięcie nie", + "overrideNotInstanceMethod": "Metoda bazowa jest zadeklarowana jako metoda wystąpienia, ale zastąpienie nie jest", + "overrideNotStaticMethod": "Metoda bazowa jest zadeklarowana jako metoda statyczna, ale przesłonięcie nie", + "overrideOverloadNoMatch": "Przeciążenie {index} nie jest zgodne z metodą bazową", + "overrideOverloadOrder": "Przeciążenia dla metody przesłaniania muszą być w takiej samej kolejności, co metoda bazowa", + "overrideParamKeywordNoDefault": "Niezgodność parametru słowa kluczowego „{name}”: parametr bazowy ma domyślną wartość argumentu, parametr zastąpienia nie ma jej", + "overrideParamKeywordType": "Niezgodność typu parametru słowa kluczowego „{name}”: parametr bazowy jest typu „{baseType}”, a parametr zastąpienia jest typu „{overrideType}”", + "overrideParamName": "Niezgodność nazwy parametru {index}: parametr podstawowy nosi nazwę „{baseName}”, a parametr zastąpienia — „{overrideName}”", + "overrideParamNameExtra": "W bazie brakuje parametru „{name}”.", + "overrideParamNameMissing": "Brak parametru „{name}” w zastąpieniu", + "overrideParamNamePositionOnly": "Niezgodność nazwy parametru {index}: parametr podstawowy nosi nazwę „{baseName}”, parametr przesłaniania jest ustawiony tylko na pozycji\"", + "overrideParamNoDefault": "Niezgodność parametru {index}: parametr bazowy ma domyślną wartość argumentu, a parametr zastąpienia nie ma jej", + "overrideParamType": "Niezgodność typów parametru {index}: parametr bazowy jest typu „{baseType}”, parametr zastąpienia jest typu „{overrideType}”", + "overridePositionalParamCount": "Niezgodność liczby parametrów pozycyjnych; metoda podstawowa ma {baseCount}, a zastąpienie {overrideCount}", + "overrideReturnType": "Niezgodność zwracanego typu: metoda podstawowa zwraca typ „{baseType}”, przesłonięcie zwraca typ „{overrideType}”", + "overrideType": "Klasa bazowa definiuje typ jako „{type}”", + "paramAssignment": "Parametr {index}: typu „{sourceType}” nie można przypisać do typu „{destType}”", + "paramSpecMissingInOverride": "Brak parametrów ParamSpec w metodzie zastąpienia", + "paramType": "Typ parametru to „{paramType}”", + "privateImportFromPyTypedSource": "Zamiast tego importuj z modułu „{module}”.", + "propertyAccessFromProtocolClass": "Nie można uzyskać dostępu do właściwości zdefiniowanej w klasie protokołu jako zmiennej klasy", + "propertyMethodIncompatible": "Metoda właściwości „{name}” jest niezgodna", + "propertyMethodMissing": "Brak metody właściwości „{name}” w zastąpieniu", + "propertyMissingDeleter": "Właściwość „{name}” nie ma zdefiniowanego elementu usuwającego", + "propertyMissingSetter": "Właściwość „{name}” nie ma zdefiniowanej metody ustawiającej", + "protocolIncompatible": "Protokół „{sourceType}” jest niezgodny z protokołem „{destType}”", + "protocolMemberClassVar": "Nazwa „{name}” nie jest zmienną klasową", + "protocolMemberMissing": "Brak nazwy „{name}”.", + "protocolSourceIsNotConcrete": "„{sourceType}” nie jest typem specyficznej klasy i nie można go przypisać do typu „{destType}”", + "pyrightCommentIgnoreTip": "Użyj polecenia „# pyright: ignore[], aby pominąć diagnostykę przez jeden wiersz", + "readOnlyAttribute": "Atrybut „{name}” jest tylko do odczytu", + "seeClassDeclaration": "Zobacz deklarację klasy", + "seeDeclaration": "Zobacz deklarację", + "seeFunctionDeclaration": "Zobacz deklarację funkcji", + "seeMethodDeclaration": "Zobacz deklarację metody", + "seeParameterDeclaration": "Zobacz deklarację parametru", + "seeTypeAliasDeclaration": "Zobacz deklarację aliasu typu", + "seeVariableDeclaration": "Zobacz deklarację zmiennej", + "tupleAssignmentMismatch": "Typ „{type}” jest niezgodny z docelową krotką", + "tupleEntryTypeMismatch": "Wpis krotki {entry} jest nieprawidłowego typu", + "tupleSizeMismatch": "Niezgodność rozmiaru elementu; oczekiwano {expected}, ale otrzymano {received}", + "typeAssignmentMismatch": "Nie można przypisać typu „{sourceType}” do typu „{destType}”", + "typeBound": "Typ „{sourceType}” jest niezgodny z typem powiązanym „{destType}” dla zmiennej typu „{name}”", + "typeConstrainedTypeVar": "Typ „{type}” jest niezgodny ze zmienną typu ograniczonego „{name}”", + "typeIncompatible": "Typ „{sourceType}” jest niezgodny z „{destType}”", + "typeNotCallable": "Typ „{type}” nie jest wywoływalny", + "typeNotClass": "Typ „{type}” nie jest klasą", + "typeNotStringLiteral": "„{type}” nie jest literałem ciągu", + "typeOfSymbol": "Typ nazwy „{name}” jest to „{type}”", + "typeParamSpec": "Typ „{type}” jest niezgodny ze specyfikacją ParamSpec „{name}”", + "typeUnsupported": "Typ „{type}” nie jest obsługiwany", + "typeVarDefaultOutOfScope": "Zmienna typu „{name}” nie wchodzi w zakres", + "typeVarIsContravariant": "Typ TypeVar „{name}” jest kontrawariantny", + "typeVarIsCovariant": "Typ TypeVar „{name}” jest kowariantny", + "typeVarIsInvariant": "Typ TypeVar „{name}” jest niezmienny", + "typeVarNotAllowed": "Typ TypeVar lub typ ogólny z argumentami typu są niedozwolone", + "typeVarTupleRequiresKnownLength": "Nie można powiązać parametru TypeVarTuple z krotką o nieznanej długości", + "typeVarUnsolvableRemedy": "Podaj przeciążenie, które określa zwracany typ, gdy nie podano argumentu", + "typeVarsMissing": "Brak zmiennych typu: {names}", + "typedDictFieldMissing": "Brak nazwy „{name}” w „{type}”", + "typedDictFieldNotReadOnly": "Nazwa „{name}” nie jest tylko do odczytu w „{type}”", + "typedDictFieldNotRequired": "Nazwa „{name}” nie jest wymagana w typie „{type}”", + "typedDictFieldRequired": "Nazwa „{name}” jest wymagana w typie „{type}”", + "typedDictFieldTypeMismatch": "Nie można przypisać typu „{type}” do pola „{name}”", + "typedDictFieldTypeRedefinition": "Typ w klasie nadrzędnej to „{parentType}”, a typ w klasie podrzędnej to „{childType}”", + "typedDictFieldUndefined": "Nazwa „{name}” jest niezdefiniowanym polem typu „{type}”", + "typedDictFinalMismatch": "Typ „{sourceType}” jest niezgodny z typem „{destType}” z powodu niezgodności @final", + "unhashableType": "Typ „{type}” nie jest wartością skrótu", + "uninitializedAbstractVariable": "zmienna wystąpienia „{name}” jest zdefiniowana w abstrakcyjnej klasie bazowej „{classType}” ale nie została zainicjowana", + "unreachableExcept": "Typ „{exceptionType}” jest podklasą typu „{parentType}”", + "useDictInstead": "Użyj funkcji Dict[T1, T2], aby wskazać typ słownika", + "useListInstead": "Użyj funkcji List[T], aby wskazać typ listy, lub Union[T1, T2], aby wskazać typ unii", + "useTupleInstead": "Użyj Tuple[T1, ..., Tn], aby wskazać typ krotki lub Union[T1, T2], aby wskazać typ unii", + "useTypeInstead": "Zamiast tego użyj typu Type[T].", + "varianceMismatchForClass": "Wariancja argumentu typu „{typeVarName}” jest niezgodna z klasą bazową „{className}”", + "varianceMismatchForTypeAlias": "Wariancja argumentu typu „{typeVarName}” jest niezgodna z parametrem „{typeAliasParam}”" + } +} diff --git a/packages/pyright-internal/src/localization/package.nls.pt-br.json b/packages/pyright-internal/src/localization/package.nls.pt-br.json new file mode 100644 index 000000000..18b277f69 --- /dev/null +++ b/packages/pyright-internal/src/localization/package.nls.pt-br.json @@ -0,0 +1,718 @@ +{ + "CodeAction": { + "addOptionalToAnnotation": "Adicionar \"Opcional\" à Anotação de Tipo", + "createTypeStub": "Criar Stub de Tipo", + "createTypeStubFor": "Criar stub de tipo para \"{moduleName}\"", + "executingCommand": "Executando comando", + "filesToAnalyzeCount": "{count} arquivos a serem analisados", + "filesToAnalyzeOne": "1 arquivo a ser analisado", + "findingReferences": "Localizando referências", + "organizeImports": "Organizar as importações", + "renameShadowedFile": "Renomear \"{oldFile}\" para \"{newFile}\"" + }, + "Diagnostic": { + "abstractMethodInvocation": "O método \"{method}\" não pode ser chamado porque é abstrato", + "annotatedParamCountMismatch": "Incompatibilidade de contagem de anotações de parâmetro: esperado {expected}, mas recebido {received}", + "annotatedTypeArgMissing": "Esperava-se um argumento de tipo e uma ou mais anotações para \"Annotated\"", + "annotationFormatString": "As anotações de tipo não podem usar literais de cadeia de caracteres de formato (cadeias de caracteres f)", + "annotationNotSupported": "Anotação de tipo sem suporte para esta instrução", + "annotationSpansStrings": "Anotações de tipo não podem abranger vários literais de cadeia de caracteres", + "annotationStringEscape": "Anotações de tipo não podem conter caracteres de escape", + "argAssignment": "O argumento do tipo \"{argType}\" não pode ser atribuído ao parâmetro do tipo \"{paramType}\"", + "argAssignmentFunction": "O argumento do tipo \"{argType}\" não pode ser atribuído ao parâmetro do tipo \"{paramType}\" na função \"{functionName}\"", + "argAssignmentParam": "O argumento do tipo \"{argType}\" não pode ser atribuído ao parâmetro \"{paramName}\" do tipo \"{paramType}\"", + "argAssignmentParamFunction": "O argumento do tipo \"{argType}\" não pode ser atribuído ao parâmetro \"{paramName}\" do tipo \"{paramType}\" na função \"{functionName}\"", + "argMissingForParam": "Argumento ausente para o parâmetro {name}", + "argMissingForParams": "Argumentos ausentes para os parâmetros {names}", + "argMorePositionalExpectedCount": "Esperavam-se mais {expected} argumentos posicionais", + "argMorePositionalExpectedOne": "Espera-se mais um argumento posicional", + "argPositional": "Argumento posicional esperado", + "argPositionalExpectedCount": "{expected} argumentos posicionais esperados", + "argPositionalExpectedOne": "Argumento posicional esperado 1", + "argTypePartiallyUnknown": "O tipo de argumento é parcialmente desconhecido", + "argTypeUnknown": "O tipo de argumento é desconhecido", + "assertAlwaysTrue": "A expressão assert sempre é avaliada como true", + "assertTypeArgs": "\"assert_type\" espera dois argumentos posicionais", + "assertTypeTypeMismatch": "Incompatibilidade \"assert_type\": esperava-se \"{expected}\", mas recebeu \"{received}\"", + "assignmentExprComprehension": "O destino da expressão de atribuição \"{name}\" não pode usar o mesmo nome da compreensão para o destino", + "assignmentExprContext": "A expressão de atribuição deve estar dentro de módulo, função ou lambda", + "assignmentExprInSubscript": "Expressões de atribuição em um subscrito são compatíveis apenas no Python 3.10 e mais recente", + "assignmentInProtocol": "As variáveis de instância ou classe dentro de uma classe Protocol devem ser declaradas explicitamente dentro do corpo da classe", + "assignmentTargetExpr": "A expressão não pode ser o destino de atribuição", + "asyncNotInAsyncFunction": "Uso de \"async\" não permitido fora da função assíncrona", + "awaitIllegal": "O uso de \"await\" requer o Python 3.5 ou mais recente", + "awaitNotInAsync": "\"await\" permitido somente dentro da função assíncrona", + "backticksIllegal": "Não há suporte para expressões delimitadas por backticks no Python 3.x. Use repr em vez disso", + "baseClassCircular": "A classe não pode derivar de si mesma", + "baseClassFinal": "A classe base \"{type}\" está marcada como final e não pode ser subclasse", + "baseClassInvalid": "O argumento para a classe deve ser uma classe base", + "baseClassMethodTypeIncompatible": "Classes base para a classe \"{classType}\" definem o método \"{name}\" de maneira incompatível", + "baseClassUnknown": "O tipo de classe base é desconhecido, ocultando o tipo de classe derivada", + "baseClassVariableTypeIncompatible": "Classes base para a classe \"{classType}\" definem a variável \"{name}\" de maneira incompatível", + "bindTypeMismatch": "Não foi possível associar o método \"{methodName}\" porque \"{type}\" não é atribuível ao parâmetro \"{paramName}\"", + "breakOutsideLoop": "\"break\" só pode ser usado dentro de um loop", + "callableExtraArgs": "Esperava-se apenas dois argumentos de tipo para \"Callable\"", + "callableFirstArg": "Lista de tipos de parâmetro esperado ou \"...\"", + "callableNotInstantiable": "Não é possível criar uma instância do tipo \"{type}\"", + "callableSecondArg": "Tipo de retorno esperado como segundo argumento de tipo para \"Callable\"", + "casePatternIsIrrefutable": "O padrão irrefutável é permitido somente para a última instrução case", + "classAlreadySpecialized": "O tipo \"{type}\" já é especializado", + "classDecoratorTypeUnknown": "Um decorador de classe sem tipo obscurece o tipo de classe. Ignorando o decorador", + "classDefinitionCycle": "A definição de classe para \"{name}\" depende de si mesma", + "classGetItemClsParam": "A substituição__class_getitem__ deve usar um parâmetro \"cls\"", + "classMethodClsParam": "Os métodos de classe devem usar um parâmetro \"cls\"", + "classNotRuntimeSubscriptable": "O subscrito para a classe \"{name}\" gerará uma exceção de runtime. Coloque a anotação de tipo entre aspas", + "classPatternBuiltInArgCount": "O padrão de classe aceita no máximo 1 sub-padrão posicional", + "classPatternBuiltInArgPositional": "O padrão de classe aceita apenas sub-padrão posicional", + "classPatternTypeAlias": "\"{type}\" não pode ser usado em um padrão de classe porque é um alias de tipo especializado", + "classTypeParametersIllegal": "A sintaxe do parâmetro de tipo de classe requer o Python 3.12 ou mais recente", + "classVarFirstArgMissing": "Um argumento de tipo era esperado após \"ClassVar\"", + "classVarNotAllowed": "\"ClassVar\" não é permitido neste contexto", + "classVarOverridesInstanceVar": "A variável de classe \"{name}\" substitui a variável de instância do mesmo nome na classe \"{className}\"", + "classVarTooManyArgs": "Espera-se apenas um argumento de tipo após \"ClassVar\"", + "classVarWithTypeVar": "O tipo \"ClassVar\" não pode incluir variáveis de tipo", + "clsSelfParamTypeMismatch": "O tipo de parâmetro \"{name}\" deve ser um supertipo de sua classe \"{classType}\"", + "codeTooComplexToAnalyze": "O código é muito complexo para ser analisado. Reduza a complexidade refatorando em sub-rotinas ou reduzindo caminhos de código condicionais", + "collectionAliasInstantiation": "O tipo \"{type}\" não pode ser instanciado, use \"{alias}\" em vez disso", + "comparisonAlwaysFalse": "A condição sempre será avaliada como False, pois os tipos \"{leftType}\" e \"{rightType}\" não têm sobreposição", + "comparisonAlwaysTrue": "A condição sempre será avaliada como True, pois os tipos \"{leftType}\" e \"{rightType}\" não têm sobreposição", + "comprehensionInDict": "A compreensão não pode ser usada com outras entradas de dicionário", + "comprehensionInSet": "A compreensão não pode ser usada com outras entradas definidas", + "concatenateParamSpecMissing": "O último argumento de tipo para \"Concatenar\" deve ser um ParamSpec", + "concatenateTypeArgsMissing": "\"Concatenate\" requer pelo menos dois argumentos de tipo", + "conditionalOperandInvalid": "Operando condicional inválido do tipo \"{type}\"", + "constantRedefinition": "\"{name}\" é constante (porque está em maiúsculas) e não pode ser redefinido", + "constructorNoArgs": "Nenhum argumento esperado para o construtor \"{type}\"", + "constructorParametersMismatch": "Incompatibilidade entre a assinatura de __new__ e __init__ na classe \"{classType}\"", + "containmentAlwaysFalse": "A expressão sempre será avaliada como False, pois os tipos \"{leftType}\" e \"{rightType}\" não têm sobreposição", + "containmentAlwaysTrue": "A expressão sempre será avaliada como True, pois os tipos \"{leftType}\" e \"{rightType}\" não têm sobreposição", + "continueInFinally": "\"continue\" não pode ser usado em uma cláusula finally", + "continueOutsideLoop": "\"continue\" só pode ser usado dentro de um loop", + "dataClassBaseClassFrozen": "Uma classe não congelada não pode herdar de uma classe congelada", + "dataClassBaseClassNotFrozen": "Uma classe congelada não pode herdar de uma classe que não está congelada", + "dataClassConverterFunction": "O argumento do tipo \"{argType}\" não é um conversor válido para o campo \"{fieldName}\" do tipo \"{fieldType}\"", + "dataClassConverterOverloads": "Nenhuma sobrecarga de \"{funcName}\" são conversores válidos para o campo \"{fieldName}\" do tipo \"{fieldType}\"", + "dataClassFieldWithDefault": "Campos sem valores padrão não podem aparecer após campos com valores padrão", + "dataClassFieldWithPrivateName": "O campo Dataclass não pode usar o nome privado", + "dataClassFieldWithoutAnnotation": "O campo Dataclass sem anotação de tipo causará uma exceção de runtime", + "dataClassPostInitParamCount": "Contagem de parâmetros de dataclasse __post_init__ incorreta. O número de campos InitVar é {expected}", + "dataClassPostInitType": "Incompatibilidade de tipo de parâmetro de método de dataclasse __post_init__ para o campo \"{fieldName}\"", + "dataClassSlotsOverwrite": "__slots__ já está definido na classe", + "dataClassTransformExpectedBoolLiteral": "Expressão esperada que é avaliada estaticamente como True ou False", + "dataClassTransformFieldSpecifier": "Esperava-se tupla de classes ou funções, mas recebeu o tipo \"{type}\"", + "dataClassTransformPositionalParam": "Todos os argumentos para \"dataclass_transform\" devem ser argumentos de palavra-chave", + "dataClassTransformUnknownArgument": "O argumento \"{name}\" dataclass_transform não é compatível", + "declaredReturnTypePartiallyUnknown": "O tipo de retorno declarado, \"{returnType}\", é parcialmente desconhecido", + "declaredReturnTypeUnknown": "O tipo de retorno declarado é desconhecido", + "defaultValueContainsCall": "Chamadas de função e objetos mutáveis não permitidos na expressão de valor padrão do parâmetro", + "defaultValueNotAllowed": "O parâmetro com \"*\" ou \"**\" não pode ter valor padrão", + "delTargetExpr": "A expressão não pode ser excluída", + "deprecatedClass": "A classe \"{name}\" foi preterida", + "deprecatedConstructor": "O construtor da classe \"{name}\" foi preterido", + "deprecatedFunction": "A função \"{name}\" foi preterida", + "deprecatedType": "Este tipo foi preterido no Python {version}. Use \"{replacement}\" em vez disso", + "dictExpandIllegalInComprehension": "Expansão de dicionário não permitida na compreensão", + "dictInAnnotation": "Expressão de dicionário não permitida na anotação de tipo", + "dictKeyValuePairs": "Entradas de dicionário devem conter pares chave/valor", + "dictUnpackIsNotMapping": "Mapeamento esperado para o operador de desempacotamento de dicionário", + "dunderAllSymbolNotPresent": "\"{name}\" está especificado no __all__ mas não está presente no módulo", + "duplicateArgsParam": "Somente um parâmetro \"*\" permitido", + "duplicateBaseClass": "Classe base duplicada não permitida", + "duplicateCapturePatternTarget": "O destino de captura \"{name}\" não pode aparecer mais de uma vez dentro do mesmo padrão", + "duplicateCatchAll": "Somente uma cláusula de exceção catch-all é permitida", + "duplicateEnumMember": "O membro de enumeração \"{name}\" já está declarado", + "duplicateGenericAndProtocolBase": "Somente uma classe base Generic[...] ou Protocol[...] é permitida", + "duplicateImport": "\"{importName}\" foi importado mais de uma vez", + "duplicateKeywordOnly": "Somente um separador \"*\" permitido", + "duplicateKwargsParam": "Somente um parâmetro \"**\" é permitido", + "duplicateParam": "Nome de parâmetro \"{name}\" duplicado", + "duplicatePositionOnly": "Somente um parâmetro \"/\" permitido", + "duplicateStarPattern": "Somente um padrão \"*\" permitido em uma sequência de padrões", + "duplicateStarStarPattern": "Somente uma entrada \"**\" é permitida", + "duplicateUnpack": "Somente uma operação unpack é permitida na lista", + "ellipsisContext": "\"...\" não são permitidos nesse contexto", + "ellipsisSecondArg": "\"...\" permitido apenas como o segundo de dois argumentos", + "enumClassOverride": "A classe Enum \"{name}\" é final e não pode ser subclasse", + "exceptionGroupIncompatible": "A sintaxe do grupo de exceção (\"exceto*\") requer o Python 3.11 ou mais recente", + "exceptionTypeIncorrect": "\"{type}\" não deriva de BaseException", + "exceptionTypeNotClass": "\"{type}\" não é uma classe de exceção válida", + "exceptionTypeNotInstantiable": "O construtor para o tipo de exceção \"{type}\" requer um ou mais argumentos", + "expectedAfterDecorator": "Função ou declaração de classe esperada após o decorador", + "expectedArrow": "Esperava-se \"->\" seguido pela anotação de tipo de retorno", + "expectedAsAfterException": "Espera-se \"as\" após o tipo de exceção", + "expectedAssignRightHandExpr": "Expressão esperada à direita de \"=\"", + "expectedBinaryRightHandExpr": "Expressão esperada à direita do operador", + "expectedBoolLiteral": "Espera-se True ou False", + "expectedCase": "Instrução \"case\" esperada", + "expectedClassName": "Nome de classe esperado", + "expectedCloseBrace": "\"{\" não foi fechado", + "expectedCloseBracket": "\"[\" não foi fechado", + "expectedCloseParen": "\"(\" não foi fechado", + "expectedColon": "Esperava-se \":\"", + "expectedComplexNumberLiteral": "Literal de número complexo esperado para correspondência de padrões", + "expectedDecoratorExpr": "Formulário de expressão sem suporte para decorador antes do Python 3.9", + "expectedDecoratorName": "Nome do decorador esperado", + "expectedDecoratorNewline": "Nova linha esperada no final do decorador", + "expectedDelExpr": "Expressão esperada após \"del\"", + "expectedElse": "Esperava-se #else", + "expectedEquals": "Esperava-se \"=\"", + "expectedExceptionClass": "Classe ou objeto de exceção inválido", + "expectedExceptionObj": "Objeto de exceção esperado: classe de exceção ou None", + "expectedExpr": "Expressão esperada", + "expectedFunctionAfterAsync": "Definição de função esperada após \"assíncrona\"", + "expectedFunctionName": "Nome da função esperado após \"def\"", + "expectedIdentifier": "Identificador esperado", + "expectedImport": "\"importação\" esperada", + "expectedImportAlias": "Símbolo esperado após \"as\"", + "expectedImportSymbols": "Esperado um ou mais nomes de símbolo após a importação", + "expectedIn": "Esperava-se \"in\"", + "expectedInExpr": "Expressão esperada após \"in\"", + "expectedIndentedBlock": "Bloco recuado esperado", + "expectedMemberName": "Nome de membro esperado após \".\"", + "expectedModuleName": "Nome do módulo esperado", + "expectedNameAfterAs": "Nome de símbolo esperado após \"as\"", + "expectedNamedParameter": "O parâmetro de palavra-chave deve seguir \"*\"", + "expectedNewline": "Nova linha esperada", + "expectedNewlineOrSemicolon": "As instruções devem ser separadas por novas linhas ou ponto e vírgula", + "expectedOpenParen": "Esperava-se \"(\"", + "expectedParamName": "Nome do parâmetro esperado", + "expectedPatternExpr": "Expressão padrão esperada", + "expectedPatternSubjectExpr": "Expressão de assunto padrão esperada", + "expectedPatternValue": "Expressão de valor padrão esperada da forma \"a.b\"", + "expectedReturnExpr": "Expressão esperada após \"return\" ", + "expectedSliceIndex": "Expressão de índice ou fatia esperada", + "expectedTypeNotString": "Tipo esperado, mas recebeu um literal de cadeia de caracteres", + "expectedTypeParameterName": "Nome do parâmetro de tipo esperado", + "expectedYieldExpr": "Expressão esperada na instrução yield", + "finalClassIsAbstract": "A classe \"{type}\" está marcada como final e deve implementar todos os métodos abstratos", + "finalContext": "\"Final\" não permitido neste contexto", + "finalMethodOverride": "O método \"{name}\" não pode substituir o método final definido na classe \"{className}\"", + "finalReassigned": "\"{name}\" está declarado como Final e não pode ser reatribuído", + "finalRedeclaration": "\"{name}\" foi declarado anteriormente como Final", + "finalRedeclarationBySubclass": "\"{name}\" não pode ser redeclarado porque a classe pai \"{className}\" a declara como Final", + "finalTooManyArgs": "Argumento de tipo único esperado após \"Final\"", + "finalUnassigned": "\"{name}\" está declarado como Final, mas o valor não foi atribuído", + "formatStringBrace": "Chave de fechamento única não permitida no literal de cadeia de caracteres f. Usar chave de fechamento dupla", + "formatStringBytes": "Literais de cadeia de caracteres de formato (cadeia de caracteres f) não podem ser binárias", + "formatStringDebuggingIllegal": "O especificador de depuração de cadeia de caracteres f \"=\" requer o Python 3.8 ou mais recente", + "formatStringEscape": "Sequência de escape (barra invertida) não permitida na parte de expressão da cadeia de caracteres f em versões anteriores ao Python 3.12", + "formatStringExpectedConversion": "Esperava-se um especificador de conversão após \"!\" na cadeia de caracteres f", + "formatStringIllegal": "Literais de cadeia de caracteres de formato (cadeias de caracteres f) exigem Python 3.6 ou mais recente", + "formatStringInPattern": "Cadeia de caracteres de formato não permitida no padrão", + "formatStringNestedFormatSpecifier": "Expressões aninhadas muito profundamente dentro do especificador de cadeia de caracteres de formato", + "formatStringNestedQuote": "Cadeias de caracteres aninhadas em uma cadeia de caracteres f não podem usar o mesmo caractere de aspas que a cadeia de caracteres f antes do Python 3.12", + "formatStringUnicode": "As literais de cadeia de caracteres de formato (f-strings) não podem ser unicode", + "formatStringUnterminated": "Expressão não finalizada na cadeia de caracteres f. \"}\" era esperado", + "functionDecoratorTypeUnknown": "Um decorador de função sem tipo obscurece o tipo de função. Ignorando o decorador", + "functionInConditionalExpression": "Função de referências de expressão condicional que sempre é avaliada como True", + "functionTypeParametersIllegal": "A sintaxe do parâmetro de tipo de função requer o Python 3.12 ou mais recente", + "futureImportLocationNotAllowed": "As importações __future__ devem estar no início do arquivo", + "generatorAsyncReturnType": "O tipo de retorno da função geradora assíncrona deve ser compatível com \"AsyncGenerator[{yieldType}, Any]\"", + "generatorNotParenthesized": "As expressões de gerador devem estar entre parênteses se não forem argumentos exclusivos", + "generatorSyncReturnType": "O tipo de retorno da função de gerador deve ser compatível com \"Generator[{yieldType}, Any, Any]\"", + "genericBaseClassNotAllowed": "A classe base \"Generic\" não pode ser usada com sintaxe de parâmetro de tipo", + "genericClassAssigned": "O tipo de classe genérica não pode ser atribuído", + "genericClassDeleted": "O tipo de classe genérica não pode ser excluído", + "genericNotAllowed": "__arglist não é válido neste contexto", + "genericTypeAliasBoundTypeVar": "O alias de tipo genérico dentro da classe não pode usar variáveis de tipo associado {names}", + "genericTypeArgMissing": "\"Generic\" requer pelo menos um argumento de tipo", + "genericTypeArgTypeVar": "O argumento de tipo para \"Generic\" deve ser uma variável de tipo", + "genericTypeArgUnique": "Os argumentos de tipo para \"Genérico\" devem ser exclusivos", + "globalReassignment": "\"{name}\" é atribuído antes da declaração global", + "globalRedefinition": "\"{name}\" já foi declarado global", + "implicitStringConcat": "Concatenação de cadeia de caracteres implícita não permitida", + "importCycleDetected": "Ciclo detectado na cadeia de importação", + "importDepthExceeded": "A profundidade da cadeia de importação excedeu {depth}", + "importResolveFailure": "Não foi possível resolver a importação \"{importName}\"", + "importSourceResolveFailure": "Não foi possível resolver a importação \"{importName}\" da origem", + "importSymbolUnknown": "\"{name}\" é um símbolo de importação desconhecido", + "incompatibleMethodOverride": "O método \"{name}\" substitui a classe \"{className}\" de maneira incompatível", + "inconsistentIndent": "O valor de recuo não corresponde ao recuo anterior", + "inconsistentTabs": "Uso inconsistente de guias e espaços no recuo", + "initMustReturnNone": "O tipo de retorno de \"__init__\" deve ser None", + "initSubclassClsParam": "A substituição __init_subclass__ deve usar um parâmetro \"cls\"", + "instanceMethodSelfParam": "Os métodos de instância devem usar um parâmetro \"self\"", + "instanceVarOverridesClassVar": "A variável de instância \"{name}\" substitui a variável de classe de mesmo nome na classe \"{className}\"", + "instantiateAbstract": "Não é possível instanciar a classe abstrata \"{type}\"", + "instantiateProtocol": "Não é possível instanciar a classe de protocolo \"{type}\"", + "internalBindError": "Erro interno ao associar o arquivo de associação \"{file}\": {message}", + "internalParseError": "Ocorreu um erro interno ao analisar o arquivo \"{file}\": {message}", + "internalTypeCheckingError": "Erro interno ao digitar o arquivo de verificação \"{file}\": {message}", + "invalidIdentifierChar": "Caractere inválido no identificador", + "invalidStubStatement": "A instrução não faz sentido dentro de um arquivo stub de tipo", + "invalidTokenChars": "Caractere inválido \"{text}\" no token", + "isInstanceInvalidType": "O segundo argumento para \"instance\" deve ser uma classe ou tupla de classes", + "isSubclassInvalidType": "O segundo argumento para \"issubclass\" deve ser uma classe ou tupla de classes", + "keyValueInSet": "Pares chave/valor não são permitidos em um conjunto", + "keywordArgInTypeArgument": "Argumentos de palavra-chave não podem ser usados em listas de argumentos de tipo", + "keywordOnlyAfterArgs": "Separador de argumento somente palavra-chave não permitido após o parâmetro \"*\"", + "keywordParameterMissing": "Um ou mais parâmetros de palavra-chave devem seguir o parâmetro \"*\"", + "keywordSubscriptIllegal": "Não há suporte para argumentos de palavra-chave em subscritos", + "lambdaReturnTypePartiallyUnknown": "O tipo de retorno de lambda, \"{returnType}\", é parcialmente desconhecido", + "lambdaReturnTypeUnknown": "O tipo de retorno de lambda é desconhecido", + "listAssignmentMismatch": "A expressão com o tipo \"{type}\" não pode ser atribuída à lista de destino", + "listInAnnotation": "Expressão de lista não permitida na anotação de tipo", + "literalEmptyArgs": "Um ou mais argumentos de tipo esperados após \"Literal\"", + "literalNotCallable": "O tipo literal não pode ser instanciado", + "literalUnsupportedType": "Os argumentos de tipo para \"Literal\" devem ser None, um valor literal (int, bool, str ou bytes) ou um valor de enumeração", + "matchIncompatible": "As instruções de correspondência exigem Python 3.10 ou mais recente", + "matchIsNotExhaustive": "Os casos dentro da instrução match não lidam exaustivamente com todos os valores", + "maxParseDepthExceeded": "Profundidade máxima de análise excedida. Divida a expressão em subexpressões menores", + "memberAccess": "Não é possível acessar o membro \"{name}\" para o tipo \"{type}\"", + "memberDelete": "Não é possível excluir o membro \"{name}\" para o tipo \"{type}\"", + "memberSet": "Não é possível atribuir o membro \"{name}\" para o tipo \"{type}\"", + "metaclassConflict": "A metaclasse de uma classe derivada deve ser uma subclasse das metaclasses de todas as suas classes base", + "metaclassDuplicate": "Apenas uma metaclasse pode ser fornecida", + "metaclassIsGeneric": "A metaclasse não pode ser genérica", + "methodNotDefined": "Método \"{name}\" não definido", + "methodNotDefinedOnType": "Método \"{name}\" não definido no tipo \"{type}\"", + "methodOrdering": "Não é possível criar ordenação de método consistente", + "methodOverridden": "\"{name}\" substitui o método de mesmo nome na classe \"{className}\" pelo tipo incompatível \"{type}\"", + "methodReturnsNonObject": "O método \"{name}\" não retorna um objeto", + "missingProtocolMembers": "A classe deriva de uma ou mais classes de protocolo, mas não implementa todos os membros necessários", + "missingSuperCall": "O método \"{methodName}\" não chama o método do mesmo nome na classe pai", + "moduleAsType": "O módulo não pode ser usado como um tipo.", + "moduleNotCallable": "O módulo não pode ser chamado", + "moduleUnknownMember": "\"{memberName}\" não é um membro conhecido do módulo \"{moduleName}\"", + "namedExceptAfterCatchAll": "Uma cláusula except nomeada não pode aparecer após a cláusula catch-all except", + "namedParamAfterParamSpecArgs": "O parâmetro de palavra-chave \"{name}\" não pode aparecer na assinatura após o parâmetro args ParamSpec", + "namedTupleEmptyName": "Nomes dentro de uma tupla nomeada não podem ficar vazios", + "namedTupleFirstArg": "Nome de classe de tupla nomeado esperado como primeiro argumento", + "namedTupleMultipleInheritance": "Não há suporte para herança múltipla com NamedTuple", + "namedTupleNameType": "Tupla de duas entradas esperada especificando o nome e o tipo de entrada", + "namedTupleNameUnique": "Os nomes dentro de uma tupla nomeada devem ser exclusivos", + "namedTupleNoTypes": "\"namedtuple\" não fornece tipos para entradas de tupla. Em vez disso, use \"NamedTuple\"", + "namedTupleSecondArg": "Lista de entrada de tupla nomeada esperada como segundo argumento", + "newClsParam": "A substituição __new__ deve usar um parâmetro \"cls\"", + "newTypeBadName": "O primeiro argumento para NewType deve ser um literal de cadeia de caracteres", + "newTypeLiteral": "NewType não pode ser usado com o tipo Literal", + "newTypeNotAClass": "Classe esperada como segundo argumento para NewType", + "newTypeParamCount": "NewType requer dois argumentos posicionais", + "newTypeProtocolClass": "NewType não pode ser usado com classe de protocolo", + "noOverload": "Nenhuma sobrecarga para \"{name}\" corresponde aos argumentos fornecidos", + "noReturnContainsReturn": "A função com o tipo de retorno declarado \"NoReturn\" não pode incluir uma instrução return", + "noReturnContainsYield": "A função com o tipo de retorno declarado \"NoReturn\" não pode incluir uma instrução yield", + "noReturnReturnsNone": "A função com o tipo declarado de \"NoReturn\" não pode retornar \"None\"", + "nonDefaultAfterDefault": "O argumento não padrão segue o argumento padrão", + "nonLocalInModule": "Declaração não local não permitida no nível do módulo", + "nonLocalNoBinding": "Nenhuma associação para \"{name}\" não local encontrada", + "nonLocalReassignment": "\"{name}\" é atribuído antes da declaração não local", + "nonLocalRedefinition": "\"{name}\" já foi declarado não local", + "noneNotCallable": "O objeto do tipo \"None\" não pode ser chamado", + "noneNotIterable": "O objeto do tipo \"None\" não pode ser usado como valor iterável", + "noneNotSubscriptable": "O objeto do tipo \"None\" não é subscrito", + "noneNotUsableWith": "O objeto do tipo \"None\" não pode ser usado com \"with\"", + "noneOperator": "Operador \"{operator}\" incompatível com \"None\"", + "noneUnknownMember": "\"{name}\" não é um membro conhecido de \"None\"", + "notRequiredArgCount": "Argumento de tipo único esperado após \"NotRequired\"", + "notRequiredNotInTypedDict": "\"NotRequired\" não é permitido neste contexto", + "objectNotCallable": "O objeto do tipo \"{type}\" não pode ser chamado", + "obscuredClassDeclaration": "A declaração de classe \"{name}\" está obscurecida por uma declaração de mesmo nome", + "obscuredFunctionDeclaration": "A declaração de função \"{name}\" é obscurecida por uma declaração de mesmo nome", + "obscuredMethodDeclaration": "A declaração de método \"{name}\" é obscurecida por uma declaração de mesmo nome", + "obscuredParameterDeclaration": "A declaração de parâmetro \"{name}\" é obscurecida por uma declaração de mesmo nome", + "obscuredTypeAliasDeclaration": "A declaração de alias de tipo \"{name}\" é obscurecida por uma declaração de mesmo nome", + "obscuredVariableDeclaration": "A declaração \"{name}\" é obscurecida por uma declaração de mesmo nome", + "operatorLessOrGreaterDeprecated": "O operador \"<>\" não é compatível no Python 3. Use \"!=\" em vez disso", + "optionalExtraArgs": "Espera-se um argumento de tipo após \"Opcional\"", + "orPatternIrrefutable": "Padrão irrefutável permitido somente como o último subpadrão em um padrão \"or\"", + "orPatternMissingName": "Todos os subpadrões dentro de um padrão \"ou\" devem ter como destino os mesmos nomes", + "overlappingOverload": "A sobrecarga {obscured} para \"{name}\" nunca será usada porque seus parâmetros se sobrepõem à sobrecarga {obscuredBy}", + "overloadAbstractMismatch": "Os métodos sobrecarregados devem ser abstratos ou não", + "overloadImplementationMismatch": "A implementação sobrecarregada não é consistente com a assinatura da sobrecarga {index}", + "overloadReturnTypeMismatch": "A sobrecarga {prevIndex} para \"{name}\" sobrepõe a sobrecarga {newIndex} e retorna um tipo incompatível", + "overloadWithImplementation": "\"{name}\" está marcado como sobrecarga, mas inclui uma implementação", + "overloadWithoutImplementation": "\"{name}\" está marcado como sobrecarga, mas nenhuma implementação foi fornecida", + "overriddenMethodNotFound": "O método \"{name}\" está marcado como substituição, mas nenhum método base de mesmo nome está presente", + "overrideDecoratorMissing": "O método \"{name}\" não está marcado como substituição, mas está substituindo um método na classe \"{className}\"", + "paramAfterKwargsParam": "O parâmetro não pode seguir o parâmetro \"**\"", + "paramAlreadyAssigned": "O parâmetro \"{name}\" já está atribuído", + "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}\"", + "paramSpecArgsKwargsUsage": "Os membros \"args\" e \"kwargs\" de ParamSpec devem aparecer dentro de uma assinatura de função", + "paramSpecArgsMissing": "Argumentos para ParamSpec \"{type}\" estão ausentes", + "paramSpecArgsUsage": "O membro \"args\" de ParamSpec é válido somente quando usado com o parâmetro *args", + "paramSpecAssignedName": "ParamSpec deve ser atribuído a uma variável chamada \"{name}\"", + "paramSpecContext": "THREADS não são permitidos neste contexto", + "paramSpecDefaultNotTuple": "Reticências esperadas, uma expressão de tupla ou ParamSpec para o valor padrão de ParamSpec", + "paramSpecFirstArg": "Nome esperado de ParamSpec como primeiro argumento", + "paramSpecKwargsUsage": "O membro \"kwargs\" de ParamSpec é válido somente quando usado com o parâmetro **kwargs", + "paramSpecNotBound": "A especificação de parâmetro \"{type}\" não tem nenhum valor associado", + "paramSpecNotUsedByOuterScope": "O ParamSpec \"{name}\" não tem significado neste contexto", + "paramSpecScopedToReturnType": "ParamSpec \"{name}\" tem como escopo um chamador dentro do tipo de retorno e não pode ser referenciado no corpo da função", + "paramSpecUnknownArg": "ParamSpec não é compatível com mais de um argumento", + "paramSpecUnknownMember": "\"{name}\" não é um membro conhecido de ParamSpec", + "paramSpecUnknownParam": "\"{name}\" é um parâmetro desconhecido para ParamSpec", + "paramTypeCovariant": "Variável de tipo covariante não pode ser usada no tipo de parâmetro", + "paramTypePartiallyUnknown": "O tipo de parâmetro \"{paramName}\" é parcialmente desconhecido", + "paramTypeUnknown": "O tipo de parâmetro \"{paramName}\" é desconhecido", + "parenthesizedContextManagerIllegal": "Parênteses dentro da instrução \"with\" exigem Python 3.9 ou mais recente", + "patternNeverMatches": "O padrão nunca será correspondido para o tipo de assunto \"{type}\"", + "positionArgAfterNamedArg": "O argumento posicional não pode aparecer após argumentos de palavra-chave", + "positionOnlyAfterArgs": "Separador de argumento somente de posição não permitido após o parâmetro \"*\"", + "positionOnlyAfterKeywordOnly": "O parâmetro \"/\" deve aparecer antes do parâmetro \"*\"", + "positionOnlyFirstParam": "Separador de argumento somente de posição não permitido como primeiro parâmetro", + "positionOnlyIncompatible": "O separador de argumento somente de posição requer o Python 3.8 ou mais recente", + "privateImportFromPyTypedModule": "\"{name}\" não é exportado do módulo \"{module}\"", + "privateUsedOutsideOfClass": "\"{name}\" é privado e usado fora da classe na qual é declarado", + "privateUsedOutsideOfModule": "\"{name}\" é privado e usado fora do módulo no qual ele é declarado", + "propertyOverridden": "\"{name}\" substitui incorretamente a propriedade de mesmo nome na classe \"{className}\"", + "propertyStaticMethod": "Métodos estáticos não permitidos para as propriedades getter, setter ou deleter", + "protectedUsedOutsideOfClass": "\"{name}\" está protegido e usado fora da classe na qual está declarado", + "protocolBaseClass": "A classe de protocolo \"{classType}\" não pode derivar da classe \"{baseType}\" que não é de protocolo", + "protocolBaseClassWithTypeArgs": "Argumentos de tipo não são permitidos com a classe Protocol ao usar a sintaxe de parâmetro de tipo", + "protocolIllegal": "O uso de \"Protocol\" requer o Python 3.7 ou mais recente", + "protocolNotAllowedInTypeArgument": "\"Protocolo\" não pode ser usado como um argumento de tipo", + "protocolUsedInCall": "A classe de protocolo não pode ser usada na chamada \"{name}\"", + "protocolVarianceContravariant": "A variável de tipo \"{variable}\" usada no protocolo genérico \"{class}\" deve ser contravariante", + "protocolVarianceCovariant": "A variável de tipo \"{variable}\" usada no protocolo genérico \"{class}\" deve ser covariante", + "protocolVarianceInvariant": "A variável de tipo \"{variable}\" usada no protocolo genérico \"{class}\" deve ser invariável", + "pyrightCommentInvalidDiagnosticBoolValue": "A diretiva de comentário Pyright deve ser seguida por \"=\" e um valor true ou false", + "pyrightCommentInvalidDiagnosticSeverityValue": "A diretiva de comentário Pyright deve ser seguida por \"=\" e um valor de true, false, error, warning, information ou none", + "pyrightCommentMissingDirective": "O comentário pyright deve ser seguido por uma diretiva (básica ou estrita) ou uma regra de diagnóstico", + "pyrightCommentNotOnOwnLine": "Comentários pyright usados para controlar as configurações de nível de arquivo devem aparecer em sua própria linha", + "pyrightCommentUnknownDiagnosticRule": "\"{rule}\" é uma regra de diagnóstico desconhecida para o comentário pyright", + "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\" é um valor inválido para o comentário pyright. True, false, error, warning, information ou none esperados.", + "pyrightCommentUnknownDirective": "\"{directive}\" é uma diretiva desconhecida para o comentário pyright. Esperava-se \"estrito\" ou \"básico\"", + "readOnlyArgCount": "Argumento de tipo único esperado após \"ReadOnly\"", + "readOnlyNotInTypedDict": "\"ReadOnly\" não é permitido neste contexto", + "recursiveDefinition": "Não foi possível determinar o tipo de \"{name}\" porque ele refere-se a si mesmo", + "relativeImportNotAllowed": "Importações relativas não podem ser usadas com o formulário \"import. a\". Use \"from . import a\" em vez disso", + "requiredArgCount": "Argumento de tipo único esperado após \"Obrigatório\"", + "requiredNotInTypedDict": "\"Obrigatório\" não é permitido neste contexto", + "returnInAsyncGenerator": "A instrução return com valor não é permitida no gerador assíncrono", + "returnMissing": "A função com o tipo declarado de \"{returnType}\" deve retornar o valor em todos os caminhos de código", + "returnOutsideFunction": "\"return\" só pode ser usado dentro de uma função", + "returnTypeContravariant": "A variável de tipo contravariante não pode ser usada no tipo de retorno", + "returnTypeMismatch": "A expressão do tipo \"{exprType}\" não pode ser atribuída ao tipo de retorno \"{returnType}\"", + "returnTypePartiallyUnknown": "O tipo de retorno, \"{returnType}\", é parcialmente desconhecido", + "returnTypeUnknown": "O tipo de retorno é desconhecido", + "revealLocalsArgs": "Nenhum argumento esperado para a chamada \"reveal_locals\"", + "revealLocalsNone": "Nenhum local neste escopo", + "revealTypeArgs": "Esperava-se um único argumento posicional para a chamada \"reveal_type\"", + "revealTypeExpectedTextArg": "O argumento \"expected_text\" para a função \"reveal_type\" deve ser um valor literal str", + "revealTypeExpectedTextMismatch": "Tipo de incompatibilidade de texto. O esperado era \"{expected}\", mas recebeu \"{received}\"", + "revealTypeExpectedTypeMismatch": "Incompatibilidade de tipo. Esperava-se \"{expected}\", mas recebeu \"{received}\"", + "selfTypeContext": "\"Self\" não é válido neste contexto.", + "selfTypeWithTypedSelfOrCls": "\"Self\" não pode ser usado em uma função com um parâmetro `self` ou `cls que tenha uma anotação de tipo diferente de \"Self\"", + "setterGetterTypeMismatch": "O tipo de valor do setter da propriedade não é atribuível ao tipo de retorno getter", + "singleOverload": "\"{name}\" está marcado como sobrecarga, mas sobrecargas adicionais estão ausentes", + "slotsAttributeError": "\"{name}\" não está especificado em __slots__", + "slotsClassVarConflict": "\"{name}\" está em conflito com a variável de instância declarada __slots__", + "starPatternInAsPattern": "O padrão de estrela não pode ser usado com o destino \"as\"", + "starPatternInOrPattern": "O padrão de estrela não pode ser ORed em outros padrões", + "starStarWildcardNotAllowed": "** não pode ser usado com curinga \"_\"", + "staticClsSelfParam": "Os métodos estáticos não devem usar um parâmetro \"self\" ou \"cls\"", + "stdlibModuleOverridden": "\"{path}\" está substituindo o módulo stdlib \"{name}\"", + "strictTypeGuardReturnType": "O tipo de retorno strictTypeGuard (\"{returnType}\") não é atribuível ao tipo de parâmetro de valor (\"{type}\")", + "stringNonAsciiBytes": "Caractere não ASCII não permitido em literal de cadeia de caracteres de bytes", + "stringNotSubscriptable": "A expressão de cadeia de caracteres não pode ser subscrito na anotação de tipo. Coloque a anotação inteira entre aspas", + "stringUnsupportedEscape": "Sequência de escape sem suporte no literal de cadeia de caracteres", + "stringUnterminated": "Literal de cadeia de caracteres não finalizado", + "stubFileMissing": "Arquivo stub não encontrado para \"{importName}\"", + "stubUsesGetAttr": "O arquivo stub de tipo está incompleto. \"__getattr__\" obscurece erros de tipo para o módulo", + "sublistParamsIncompatible": "parâmetros de sublista não são suportados no Python 3.x", + "superCallArgCount": "Não mais que dois argumentos eram esperados para a chamada \"super\"", + "superCallFirstArg": "Tipo de classe esperado como o primeiro argumento para a chamada \"super\", mas recebeu \"{type}\"", + "superCallSecondArg": "O segundo argumento para a chamada \"super\" deve ser objeto ou classe que deriva de \"{type}\"", + "superCallZeroArgForm": "A forma de argumento zero de chamada \"super\" é válida somente dentro de uma classe", + "symbolIsPossiblyUnbound": "\"{name}\" possivelmente não está associado", + "symbolIsUnbound": "\"{name}\" não está associado", + "symbolIsUndefined": "\"{name}\" não está definido", + "symbolOverridden": "\"{name}\" substitui o símbolo de mesmo nome na classe \"{className}\"", + "totalOrderingMissingMethod": "A classe deve definir um dos \"__lt__\", \"__le__\", \"__gt__\" ou \"__ge__\" para usar total_ordering", + "trailingCommaInFromImport": "A vírgula à direita não é permitida sem parênteses ao redor", + "tryWithoutExcept": "A instrução Try deve ter pelo menos uma cláusula except ou finally", + "tupleAssignmentMismatch": "A expressão com o tipo \"{type}\" não pode ser atribuída à tupla de destino", + "tupleInAnnotation": "Expressão de tupla não permitida na anotação de tipo", + "tupleIndexOutOfRange": "O índice {index} está fora do intervalo para o tipo {type}", + "typeAliasIllegalExpressionForm": "Formulário de expressão inválido para definição de alias de tipo", + "typeAliasIsRecursiveDirect": "O alias de tipo \"{name}\" não pode usar a si mesmo em sua definição", + "typeAliasNotInModuleOrClass": "Um TypeAlias só pode ser definido dentro de um módulo ou escopo de classe", + "typeAliasRedeclared": "\"{name}\" é declarado como um TypeAlias e só pode ser atribuído uma vez", + "typeAliasStatementIllegal": "A instrução de alias de tipo requer o Python 3.12 ou mais recente", + "typeAliasTypeMustBeAssigned": "TypeAliasType deve ser atribuído a uma variável com o mesmo nome que o alias de tipo", + "typeAliasTypeNameArg": "O primeiro argumento para TypeAliasType deve ser um literal de cadeia de caracteres que representa o nome do alias de tipo", + "typeAliasTypeNameMismatch": "O nome do alias de tipo deve corresponder ao nome da variável à qual ela está atribuída", + "typeAliasTypeParamInvalid": "A lista de parâmetros de tipo deve ser uma tupla contendo apenas TypeVar, TypeVarTuple ou ParamSpec", + "typeAnnotationCall": "Anotação de tipo ilegal: expressão de chamada não permitida", + "typeAnnotationVariable": "Anotação de tipo ilegal: variável não permitida, a menos que seja um alias de tipo", + "typeArgListExpected": "ParamSpec, reticências ou lista de tipos esperados", + "typeArgListNotAllowed": "Expressão de lista não permitida para este argumento de tipo", + "typeArgsExpectingNone": "Nenhum argumento de tipo era esperado para a classe \"{name}\"", + "typeArgsMismatchOne": "Esperava-se um argumento de tipo, mas recebeu {received}", + "typeArgsMissingForAlias": "Argumentos de tipo esperados para o alias de tipo genérico \"{name}\"", + "typeArgsMissingForClass": "Argumentos de tipo esperados para a classe genérica \"{name}\"", + "typeArgsTooFew": "Poucos argumentos de tipo fornecidos para \"{name}\". Esperava-se {expected}, mas recebeu {received}", + "typeArgsTooMany": "Muitos argumentos de tipo fornecidos para \"{name}\". Esperava-se {expected}, mas recebeu {received}", + "typeAssignmentMismatch": "A expressão do tipo \"{sourceType}\" não pode ser atribuída ao tipo declarado \"{destType}\"", + "typeCallNotAllowed": "A chamada type() não deve ser usada na anotação de tipo", + "typeCommentDeprecated": "O uso de comentários de tipo foi preterido. Use anotação de tipo em vez disso", + "typeExpectedClass": "Expressão de tipo esperada, mas recebeu \"{type}\"", + "typeGuardArgCount": "Argumento de tipo único esperado após \"TypeGuard\"", + "typeGuardParamCount": "Funções e métodos de proteção de tipo definidos pelo usuário devem ter pelo menos um parâmetro de entrada", + "typeNotAwaitable": "\"{type}\" não é previsível", + "typeNotCallable": "\"{expression}\" tem o tipo \"{type}\" e não pode ser chamado", + "typeNotIntantiable": "\"{type}\" não pode ser instanciado", + "typeNotIterable": "\"{type}\" não é iterável", + "typeNotSpecializable": "Não foi possível especializar o tipo \"{type}\"", + "typeNotSubscriptable": "O objeto do tipo \"{type}\" não é subscrito", + "typeNotSupportBinaryOperator": "Operador \"{operator}\" sem suporte para os tipos \"{leftType}\" e \"{rightType}\"", + "typeNotSupportBinaryOperatorBidirectional": "O operador \"{operator}\" não tem suporte para os tipos \"{leftType}\" e \"{rightType}\" quando o tipo esperado é \"{expectedType}\"", + "typeNotSupportUnaryOperator": "Operador \"{operator}\" sem suporte para o tipo \"{type}\"", + "typeNotSupportUnaryOperatorBidirectional": "O operador \"{operator}\" não tem suporte para o tipo \"{type}\" quando o tipo esperado é \"{expectedType}\"", + "typeNotUsableWith": "O objeto do tipo \"{type}\" não pode ser usado com \"with\" porque não implementa {method}", + "typeParameterBoundNotAllowed": "Associação ou restrição não pode ser usada com um parâmetro de tipo variadic ou ParamSpec", + "typeParameterConstraintTuple": "A restrição de parâmetro de tipo deve ser uma tupla de dois ou mais tipos", + "typeParameterExistingTypeParameter": "O parâmetro de tipo \"{name}\" já está em uso", + "typeParameterNotDeclared": "O parâmetro de tipo \"{name}\" não está incluído na lista de parâmetros de tipo para \"{container}\"", + "typeParametersMissing": "Pelo menos um parâmetro de tipo deve ser especificado", + "typePartiallyUnknown": "O tipo de \"{name}\" é parcialmente desconhecido", + "typeUnknown": "O tipo de \"{name}\" é desconhecido", + "typeVarAssignedName": "TypeVar deve ser atribuído a uma variável chamada \"{name}\"", + "typeVarAssignmentMismatch": "O tipo \"{type}\" não pode ser atribuído à variável de tipo \"{name}\"", + "typeVarBoundAndConstrained": "TypeVar não pode ser associado e restrito", + "typeVarBoundGeneric": "O tipo associado TypeVar não pode ser genérico", + "typeVarConstraintGeneric": "O tipo de restrição TypeVar não pode ser genérico", + "typeVarDefaultBoundMismatch": "O tipo padrão TypeVar deve ser um subtipo do tipo associado", + "typeVarDefaultConstraintMismatch": "O tipo padrão TypeVar deve ser um dos tipos restritos", + "typeVarDefaultIllegal": "Tipos padrão de variável de tipo exigem Python 3.13 ou mais recente", + "typeVarDefaultInvalidTypeVar": "O parâmetro de tipo \"{name}\" tem um tipo padrão que se refere a uma ou mais variáveis de tipo que estão fora do escopo", + "typeVarFirstArg": "Nome esperado de TypeVar como primeiro argumento", + "typeVarNoMember": "TypeVar \"{type}\" não tem membro \"{name}\"", + "typeVarNotSubscriptable": "Não é possível subscrever TypeVar \"{type}\"", + "typeVarNotUsedByOuterScope": "A variável de tipo \"{name}\" não tem significado neste contexto", + "typeVarPossiblyUnsolvable": "A variável de tipo \"{name}\" pode ficar sem resolução se o chamador não fornecer nenhum argumento para o parâmetro \"{param}\"", + "typeVarScopedToReturnType": "A variável de tipo \"{name}\" tem como escopo um chamador dentro do tipo de retorno e não pode ser referenciada no corpo da função", + "typeVarSingleConstraint": "TypeVar deve ter pelo menos dois tipos restritos", + "typeVarTupleContext": "TypeVarTuple não permitido neste contexto", + "typeVarTupleDefaultNotUnpacked": "O tipo padrão TypeVarTuple deve ser uma tupla desempacotamento ou TypeVarTuple", + "typeVarTupleMustBeUnpacked": "O operador Unpack é necessário para o valor TypeVarTuple", + "typeVarTupleUnknownParam": "\"{name}\" é um parâmetro desconhecido para TypeVarTuple", + "typeVarUnknownParam": "\"{name}\" é um parâmetro desconhecido para TypeVar", + "typeVarUsedByOuterScope": "TypeVar \"{name}\" já está em uso por um escopo externo", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" aparece apenas uma vez na assinatura de função genérica", + "typeVarVariance": "TypeVar não pode ser covariante e contravariante", + "typeVarWithoutDefault": "\"{name}\" não pode aparecer após \"{other}\" na lista de parâmetros de tipo porque não tem nenhum tipo padrão", + "typeVarsNotInGenericOrProtocol": "Generic[] ou Protocol[] deve incluir todas as variáveis de tipo", + "typedDictAccess": "Não foi possível acessar o item em TypedDict", + "typedDictBadVar": "As classes TypedDict podem conter apenas anotações de tipo", + "typedDictBaseClass": "Todas as classes base para classes TypedDict também devem ser classes TypedDict", + "typedDictBoolParam": "Esperava-se que o parâmetro \"{name}\" tivesse um valor True ou False", + "typedDictDelete": "Não foi possível excluir o item em TypedDict", + "typedDictEmptyName": "Os nomes dentro de um TypedDict não podem estar vazios", + "typedDictEntryName": "Literal de cadeia de caracteres esperado para o nome da entrada do dicionário", + "typedDictEntryUnique": "Os nomes dentro de um dicionário devem ser exclusivos", + "typedDictExtraArgs": "Argumentos TypedDict extras são incompatíveis", + "typedDictFieldReadOnlyRedefinition": "O campo TypedDict \"{name}\" não pode ser redefinido como somente leitura", + "typedDictFieldTypeRedefinition": "O tipo de campo TypedDict \"{name}\" não pode ser redefinido", + "typedDictFirstArg": "Nome da classe TypedDict esperado como primeiro argumento", + "typedDictSecondArgDict": "Parâmetro dict ou de palavra-chave esperado como segundo parâmetro", + "typedDictSecondArgDictEntry": "Entrada de dicionário simples esperada", + "typedDictSet": "Não foi possível atribuir o item em TypedDict", + "unaccessedClass": "A classe \"{name}\" não foi acessada", + "unaccessedFunction": "A função \"{name}\" não foi acessada", + "unaccessedImport": "A importação \"{name}\" não foi acessada", + "unaccessedSymbol": "\"{name}\" não foi acessado", + "unaccessedVariable": "A variável \"{name}\" não foi acessada", + "unannotatedFunctionSkipped": "A análise da função \"{name}\" foi ignorada porque não foi anotada", + "unexpectedAsyncToken": "Esperado \"def\", \"with\" ou \"for\" para acompanhar \"async\"", + "unexpectedExprToken": "Token inesperado no final da expressão", + "unexpectedIndent": "Recuo inesperado", + "unexpectedUnindent": "Recuo não esperado", + "unhashableDictKey": "A chave do dicionário deve ser hash", + "unhashableSetEntry": "A entrada set deve ser permitir hash", + "uninitializedAbstractVariables": "As variáveis definidas na classe base abstrata não são inicializadas na classe final \"{classType}\"", + "uninitializedInstanceVariable": "A variável de instância \"{name}\" não foi inicializada no corpo da classe ou no método __init__", + "unionForwardReferenceNotAllowed": "A sintaxe de união não pode ser usada com operando de cadeia de caracteres. Use aspas em toda a expressão", + "unionSyntaxIllegal": "A sintaxe alternativa para uniões requer o Python 3.10 ou mais recente", + "unionTypeArgCount": "A união requer dois ou mais argumentos de tipo", + "unmatchedEndregionComment": "A #region está ausente em #endregion", + "unmatchedRegionComment": "A #endregion correspondente está ausente em #region", + "unnecessaryCast": "Chamada \"cast\" desnecessária. O tipo já é \"{type}\"", + "unnecessaryIsInstanceAlways": "Chamada de iinstância desnecessária. \"{testType}\" é sempre uma instância de \"{classType}\"", + "unnecessaryIsSubclassAlways": "Chamada issubclass desnecessária. \"{testType}\" é sempre uma subclasse de \"{classType}\"", + "unnecessaryPyrightIgnore": "Comentário desnecessário \"# pyright: ignore\"", + "unnecessaryPyrightIgnoreRule": "Regra desnecessária \"# pyright: ignore\": \"{name}\"", + "unnecessaryTypeIgnore": "Comentário \"# type: ignore\" desnecessário", + "unpackArgCount": "Argumento de tipo único esperado após \"Unpack\"", + "unpackExpectedTypeVarTuple": "TypeVarTuple ou Tuple esperados como argumento de tipo para Unpack", + "unpackExpectedTypedDict": "Argumento de tipo TypedDict esperado para Desempacotar", + "unpackIllegalInComprehension": "Operação de desempacotamento não permitida na compreensão", + "unpackInAnnotation": "Operador Desempacotar não permitido na anotação de tipo", + "unpackInDict": "Operação de desempacotamento não permitida em dicionários", + "unpackInSet": "Operador unpack não permitido em um conjunto", + "unpackNotAllowed": "Unpack não é permitido nesse contexto", + "unpackOperatorNotAllowed": "Operação de desempacotamento não permitida neste contexto", + "unpackTuplesIllegal": "Operação de desempacotamento não permitida em tuplas anteriores ao Python 3.8", + "unpackedArgInTypeArgument": "Argumentos desempacotamento não podem ser usados em listas de argumentos de tipo", + "unpackedArgWithVariadicParam": "O argumento desempacotado não pode ser usado para o parâmetro TypeVarTuple", + "unpackedDictArgumentNotMapping": "A expressão de argumento após ** deve ser um mapeamento com um tipo de chave \"str\"", + "unpackedDictSubscriptIllegal": "O operador de desempacotamento de dicionário no subscrito não é permitido", + "unpackedSubscriptIllegal": "O operador Unpack no subscrito requer o Python 3.11 ou mais recente", + "unpackedTypeVarTupleExpected": "Esperava-se TypeVarTuple desempacotada. Use Unpack[{name1}] ou *{name2}", + "unpackedTypedDictArgument": "Não é possível corresponder o argumento TypedDict desempacotado aos parâmetros", + "unreachableCode": "O código está inacessível.", + "unreachableExcept": "A cláusula Except está inacessível porque a exceção já foi tratada", + "unsupportedDunderAllOperation": "A operação em \"__all__\" não é compatível, portanto, a lista de símbolos exportada pode estar incorreta", + "unusedCallResult": "O resultado da expressão de chamada é do tipo \"{type}\" e não é usado. Atribua à variável \"_\" se isso for intencional", + "unusedCoroutine": "O resultado da chamada de função assíncrona não foi usado. Use \"await\" ou atribua o resultado à variável", + "unusedExpression": "O valor da expressão não é usado", + "varAnnotationIllegal": "As anotações de tipo para variáveis exigem Python 3.6 ou mais recente. Use comentário de tipo para compatibilidade com versões anteriores", + "variableFinalOverride": "A variável \"{name}\" está marcada como Final e substitui a variável não final de mesmo nome na classe \"{className}\"", + "variadicTypeArgsTooMany": "A lista de argumentos de tipo pode ter no máximo um TypeVarTuple ou Tuple desempacotados", + "variadicTypeParamTooManyAlias": "O alias de tipo pode ter no máximo um parâmetro de tipo TypeVarTuple, mas recebeu vários ({names})", + "variadicTypeParamTooManyClass": "A classe genérica pode ter no máximo um parâmetro de tipo TypeVarTuple, mas recebeu vários ({names})", + "walrusIllegal": "O operador \":=\" requer o Python 3.8 ou mais recente", + "walrusNotAllowed": "Operador \":=\" não permitido neste contexto sem parênteses ao redor", + "wildcardInFunction": "Importação de curinga não permitida em uma classe ou função", + "wildcardLibraryImport": "Importação de curinga de uma biblioteca não permitida", + "wildcardPatternTypePartiallyUnknown": "O tipo capturado pelo padrão curinga é parcialmente desconhecido", + "wildcardPatternTypeUnknown": "O tipo capturado pelo padrão curinga é desconhecido", + "yieldFromIllegal": "O uso de \"yield from\" requer o Python 3.3 ou mais recente", + "yieldFromOutsideAsync": "\"yield from\" não é permitido em uma função assíncrona", + "yieldOutsideFunction": "\"yield\" não permitido fora de uma função ou lambda", + "yieldWithinListCompr": "\"yield\" não é permitido dentro de uma compreensão de lista", + "zeroCaseStatementsFound": "A instrução Match deve incluir pelo menos uma instrução case", + "zeroLengthTupleNotAllowed": "Tupla de comprimento zero não permitida neste contexto" + }, + "DiagnosticAddendum": { + "argParam": "O argumento corresponde ao parâmetro \"{paramName}\"", + "argParamFunction": "O argumento corresponde ao parâmetro \"{paramName}\" na função \"{functionName}\"", + "argsParamMissing": "O parâmetro \"*{paramName}\" não tem nenhum parâmetro correspondente", + "argsPositionOnly": "Incompatibilidade de parâmetro somente de posição; esperava-se {expected}, mas recebeu {received}", + "argumentType": "O tipo de argumento é \"{type}\"", + "argumentTypes": "Tipos de argumento: ({types})", + "assignToNone": "O tipo não pode ser atribuído ao tipo \"None\"", + "asyncHelp": "Você quis dizer \"async with\"?", + "baseClassOverriddenType": "A classe base \"{baseClass}\" fornece o tipo \"{type}\", que é substituído", + "baseClassOverridesType": "A classe base \"{baseClass}\" substitui pelo tipo \"{type}\"", + "conditionalRequiresBool": "O método __bool__ para o tipo \"{operandType}\" retorna o tipo \"{boolReturnType}\" em vez de \"bool\"", + "dataClassFieldLocation": "Declaração de campo", + "dataClassFrozen": "\"{name}\" está congelado", + "finalMethod": "Método final", + "functionParamDefaultMissing": "O parâmetro \"{name}\" não tem um argumento padrão", + "functionParamName": "Incompatibilidade de nome de parâmetro: \"{destName}\" versus \"{srcName}\"", + "functionReturnTypeMismatch": "O tipo de retorno de função \"{sourceType}\" é incompatível com o tipo \"{destType}\"", + "functionTooFewParams": "A função aceita poucos parâmetros posicionais. Esperava-se {expected}, mas recebeu {received}", + "functionTooManyParams": "A função aceita muitos parâmetros posicionais. Esperava-se {expected}, mas recebeu {received}", + "incompatibleDeleter": "O método de exclusão de propriedade é incompatível", + "incompatibleGetter": "O método getter de propriedade é incompatível", + "incompatibleSetter": "O método setter de propriedade é incompatível", + "initMethodLocation": "O método __init__ é definido na classe \"{type}\"", + "initMethodSignature": "A assinatura de __init__ é \"{type}\"", + "keyNotRequired": "\"{name}\" não é uma chave necessária em \"{type}\", portanto, o acesso pode resultar em exceção de runtime", + "keyReadOnly": "\"{name}\" é uma chave somente leitura em \"{type}\"", + "keyRequiredDeleted": "\"{name}\" é uma chave obrigatória e não pode ser excluída", + "keyUndefined": "\"{name}\" não é uma chave definida em \"{type}\"", + "kwargsParamMissing": "O parâmetro \"**{paramName}\" não tem nenhum parâmetro correspondente", + "listAssignmentMismatch": "O tipo \"{type}\" é incompatível com a lista de destino", + "literalAssignmentMismatch": "\"{sourceType}\" não pode ser atribuído ao tipo \"{destType}\"", + "matchIsNotExhaustiveHint": "Se não pretende usar a manipulação exaustiva, adicione \"case _: pass\"", + "matchIsNotExhaustiveType": "Tipo sem tratamento: \"{type}\"", + "memberAssignment": "A expressão do tipo \"{type}\" não pode ser atribuída ao membro \"{name}\" da classe \"{classType}\"", + "memberIsAbstract": "\"{type}. {name}\" é abstrato", + "memberIsAbstractMore": "e mais {count}...", + "memberIsFinalInProtocol": "\"{name}\" está marcado como Final no protocolo", + "memberIsInitVar": "O membro \"{name}\" é um campo somente inicialização", + "memberIsInvariant": "\"{name}\" é invariável porque é mutável", + "memberIsNotFinalInProtocol": "\"{name}\" não está marcado como Final no protocolo", + "memberSetClassVar": "O membro \"{name}\" não pode ser atribuído por meio de uma instância de classe porque é um ClassVar", + "memberTypeMismatch": "\"{name}\" é um tipo incompatível", + "memberUnknown": "O membro \"{name}\" é desconhecido", + "missingDeleter": "O método de exclusão de propriedade está ausente", + "missingGetter": "O método getter da propriedade está ausente", + "missingProtocolMember": "O membro \"{name}\" está declarado na classe de protocolo \"{classType}\"", + "missingSetter": "O método setter da propriedade está ausente", + "namedParamMissingInDest": "O parâmetro de palavra-chave \"{name}\" está ausente no destino", + "namedParamMissingInSource": "O parâmetro de palavra-chave \"{name}\" está ausente na origem", + "namedParamTypeMismatch": "O parâmetro de palavra-chave \"{name}\" do tipo \"{sourceType}\" não pode ser atribuído ao tipo \"{destType}\"", + "newMethodLocation": "O método __new__ é definido na classe \"{type}\"", + "newMethodSignature": "A assinatura de__new__ é \"{type}\"", + "noOverloadAssignable": "Nenhuma função sobrecarregada corresponde ao tipo \"{type}\"", + "orPatternMissingName": "Nomes ausentes: {name}", + "overloadNotAssignable": "Uma ou mais sobrecargas de \"{name}\" não podem ser atribuídas", + "overloadSignature": "A assinatura de sobrecarga é definida aqui", + "overloadWithImplementation": "O corpo de uma sobrecarga de função deve ser \"...\"", + "overriddenMethod": "Método substituído", + "overriddenSymbol": "Símbolo substituído", + "overrideNoOverloadMatches": "Nenhuma assinatura de sobrecarga na substituição é compatível com o método base", + "overrideNotClassMethod": "O método base é declarado como um classmethod, mas a substituição não é", + "overrideNotInstanceMethod": "O método base é declarado como um método de instância, mas a substituição não é", + "overrideNotStaticMethod": "O método base é declarado como staticmethod, mas a substituição não é", + "overrideOverloadNoMatch": "A sobrecarga {index} não é compatível com o método base", + "overrideOverloadOrder": "As sobrecargas para o método de substituição devem estar na mesma ordem que o método base", + "overrideParamKeywordNoDefault": "Incompatibilidade de parâmetro de palavra-chave \"{name}\": o parâmetro base tem valor de argumento padrão, o parâmetro de substituição não", + "overrideParamKeywordType": "Incompatibilidade de tipo de parâmetro de palavra-chave \"{name}\": o parâmetro base é do tipo \"{baseType}\", o parâmetro de substituição é do tipo \"{overrideType}\"", + "overrideParamName": "Incompatibilidade de nome de parâmetro {index}: o parâmetro base é denominado \"{baseName}\", o parâmetro de substituição é denomidado \"{overrideName}\"", + "overrideParamNameExtra": "O parâmetro \"{name}\" está ausente na base", + "overrideParamNameMissing": "O parâmetro \"{name}\" está ausente na substituição", + "overrideParamNamePositionOnly": "Incompatibilidade de nome do parâmetro {index}: o parâmetro base é denominado \"{baseName}\", o parâmetro de substituição é somente posição\"", + "overrideParamNoDefault": "Parâmetro {index} incompatível: o parâmetro base tem valor de argumento padrão, o parâmetro de substituição não", + "overrideParamType": "Incompatibilidade de tipo de parâmetro {index}: o parâmetro base é do tipo \"{baseType}\", o parâmetro de substituição é do tipo \"{overrideType}\"", + "overridePositionalParamCount": "Incompatibilidade de contagem de parâmetros posicionais. O método base tem {baseCount}, mas a substituição tem {overrideCount}", + "overrideReturnType": "Incompatibilidade de tipo de retorno: o método base retorna o tipo \"{baseType}\", a substituição retorna o tipo \"{overrideType}\"", + "overrideType": "A classe base define o tipo como \"{type}\"", + "paramAssignment": "Parâmetro {index}: o tipo \"{sourceType}\" não pode ser atribuído ao tipo \"{destType}\"", + "paramSpecMissingInOverride": "Os parâmetros ParamSpec estão ausentes no método de substituição", + "paramType": "O tipo de parâmetro é \"{paramType}\"", + "privateImportFromPyTypedSource": "Em vez disso, importe de \"{module}\"", + "propertyAccessFromProtocolClass": "Uma propriedade definida dentro de uma classe de protocolo não pode ser acessada como uma variável de classe", + "propertyMethodIncompatible": "O método de propriedade \"{name}\" é incompatível", + "propertyMethodMissing": "O método de propriedade \"{name}\" está ausente na substituição", + "propertyMissingDeleter": "A propriedade \"{name}\" não tem nenhum excluidor definido", + "propertyMissingSetter": "A propriedade \"{name}\" não tem um setter definido", + "protocolIncompatible": "\"{sourceType}\" é incompatível com o protocolo \"{destType}\"", + "protocolMemberClassVar": "\"{name}\" não é uma variável de classe", + "protocolMemberMissing": "\"{name}\" não está presente", + "protocolSourceIsNotConcrete": "\"{sourceType}\" não é um tipo de classe concreta e não pode ser atribuído ao tipo \"{destType}\"", + "pyrightCommentIgnoreTip": "Use \"# pyright: ignore[] para suprimir o diagnóstico de uma única linha", + "readOnlyAttribute": "O atributo \"{name}\" é somente leitura", + "seeClassDeclaration": "Consulte a declaração de classe", + "seeDeclaration": "Consulte a declaração", + "seeFunctionDeclaration": "Ver declaração de função", + "seeMethodDeclaration": "Consulte a declaração de método", + "seeParameterDeclaration": "Consulte a declaração de parâmetro", + "seeTypeAliasDeclaration": "Ver declaração de alias de tipo", + "seeVariableDeclaration": "Consulte a declaração de variável", + "tupleAssignmentMismatch": "O tipo \"{type}\" é incompatível com a tupla de destino", + "tupleEntryTypeMismatch": "A entrada de tupla {entry} é do tipo incorreto", + "tupleSizeMismatch": "Incompatibilidade de tamanho do elemento. Esperava-se {expected}, mas recebeu {received}", + "typeAssignmentMismatch": "O tipo \"{sourceType}\" não pode ser atribuído ao tipo \"{destType}\"", + "typeBound": "O tipo \"{sourceType}\" é incompatível com o tipo associado \"{destType}\" para a variável de tipo \"{name}\"", + "typeConstrainedTypeVar": "O tipo \"{type}\" é incompatível com a variável de tipo restrita \"{name}\"", + "typeIncompatible": "\"{sourceType}\" é incompatível com \"{destType}\"", + "typeNotCallable": "O tipo \"{type}\" não pode ser chamado", + "typeNotClass": "\"{type}\" não é uma classe.", + "typeNotStringLiteral": "\"{type}\" não é um literal de cadeia de caracteres", + "typeOfSymbol": "O tipo de \"{name}\" é \"{type}\"", + "typeParamSpec": "O tipo \"{type}\" é incompatível com ParamSpec \"{name}\"", + "typeUnsupported": "O tipo \"{type}\" é incompatível", + "typeVarDefaultOutOfScope": "A variável de tipo \"{name}\" não está no escopo", + "typeVarIsContravariant": "TypeVar \"{name}\" é contravariante", + "typeVarIsCovariant": "TypeVar \"{name}\" é covariante", + "typeVarIsInvariant": "TypeVar \"{name}\" é invariável", + "typeVarNotAllowed": "TypeVar ou tipo genérico com argumentos de tipo não permitidos", + "typeVarTupleRequiresKnownLength": "TypeVarTuple não pode ser associado a uma tupla de comprimento desconhecido", + "typeVarUnsolvableRemedy": "Forneça uma sobrecarga que especifica o tipo de retorno quando o argumento não é fornecido", + "typeVarsMissing": "Variáveis de tipo ausentes: {names}", + "typedDictFieldMissing": "\"{name}\" está ausente de \"{type}\"", + "typedDictFieldNotReadOnly": "\"{name}\" não é somente leitura em \"{type}\"", + "typedDictFieldNotRequired": "\"{name}\" não é obrigatório em \"{type}\"", + "typedDictFieldRequired": "\"{name}\" é necessário em \"{type}\"", + "typedDictFieldTypeMismatch": "O tipo \"{type}\" não é atribuível ao campo \"{name}\"", + "typedDictFieldTypeRedefinition": "O tipo na classe pai é \"{parentType}\" e o tipo na classe filho é \"{childType}\"", + "typedDictFieldUndefined": "\"{name}\" é um campo indefinido no tipo \"{type}\"", + "typedDictFinalMismatch": "\"{sourceType}\" é incompatível com \"{destType}\" devido a uma @final incompatível", + "unhashableType": "O tipo \"{type}\" não é pode fazer hash", + "uninitializedAbstractVariable": "A variável de instância \"{name}\" está definida na classe base abstrata \"{classType}\", mas não foi inicializada", + "unreachableExcept": "\"{exceptionType}\" é uma subclasse de \"{parentType}\"", + "useDictInstead": "Use Dict[T1, T2] para indicar um tipo de dicionário", + "useListInstead": "Use List[T] para indicar um tipo de lista ou Union[T1, T2] para indicar um tipo de união", + "useTupleInstead": "Usar Tuple[T1, ..., Tn] para indicar um tipo de tupla ou Union[T1, T2] para indicar um tipo de união", + "useTypeInstead": "Use Type[T] em vez disso", + "varianceMismatchForClass": "A variação do argumento de tipo \"{typeVarName}\" é incompatível com a classe base \"{className}\"", + "varianceMismatchForTypeAlias": "A variação do argumento de tipo \"{typeVarName}\" é incompatível com \"{typeAliasParam}\"" + } +} diff --git a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json new file mode 100644 index 000000000..94e2825fa --- /dev/null +++ b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json @@ -0,0 +1,718 @@ +{ + "CodeAction": { + "addOptionalToAnnotation": "[hTkPH][นั้Æðð \"Øptïøñæl\" tø Tÿpë ÆññøtætïøñẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "createTypeStub": "[4i3uH][นั้Çrëætë Tÿpë §tµþẤğ倪İЂҰนั้ढूँ]", + "createTypeStubFor": "[oXYb0][นั้Çrëætë Tÿpë §tµþ Før \"{møðµlëÑæmë}\"Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", + "executingCommand": "[AxS1Z][นั้Ëxëçµtïñg çømmæñðẤğ倪İЂҰक्นั้ढूँ]", + "filesToAnalyzeCount": "[94Ml3][นั้{çøµñt} fïlës tø æñælÿzëẤğ倪İЂҰक्र्นั้ढूँ]", + "filesToAnalyzeOne": "[2zuMu][นั้1 fïlë tø æñælÿzëẤğ倪İЂҰक्นั้ढूँ]", + "findingReferences": "[0UmwS][นั้Fïñðïñg rëfërëñçësẤğ倪İЂҰक्นั้ढूँ]", + "organizeImports": "[KhOyl][นั้Ørgæñïzë ÏmpørtsẤğ倪İЂҰนั้ढूँ]", + "renameShadowedFile": "[E02Ab][นั้Rëñæmë \"{ølðFïlë}\" tø \"{ñëwFïlë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]" + }, + "Diagnostic": { + "abstractMethodInvocation": "[fE8MD][นั้Mëthøð \"{mëthøð}\" çæññøt þë çællëð þëçæµsë ït ïs æþstræçtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "annotatedParamCountMismatch": "[VZvZc][นั้Pæræmëtër æññøtætïøñ çøµñt mïsmætçh: ëxpëçtëð {ëxpëçtëð} þµt rëçëïvëð {rëçëïvëð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "annotatedTypeArgMissing": "[mTgtG][นั้Ëxpëçtëð øñë tÿpë ærgµmëñt æñð øñë ør mørë æññøtætïøñs før \"Æññøtætëð\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "annotationFormatString": "[zaI8H][นั้Tÿpë æññøtætïøñs çæññøt µsë førmæt strïñg lïtëræls (f-strïñgs)Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "annotationNotSupported": "[xYlM8][นั้Tÿpë æññøtætïøñ ñøt sµppørtëð før thïs stætëmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "annotationSpansStrings": "[6Gg9x][นั้Tÿpë æññøtætïøñs çæññøt spæñ mµltïplë strïñg lïtërælsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "annotationStringEscape": "[MQdsm][นั้Tÿpë æññøtætïøñs çæññøt çøñtæïñ ësçæpë çhæræçtërsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "argAssignment": "[7pdVt][นั้Ærgµmëñt øf tÿpë \"{ærgTÿpë}\" çæññøt þë æssïgñëð tø pæræmëtër øf tÿpë \"{pæræmTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "argAssignmentFunction": "[J08ms][นั้Ærgµmëñt øf tÿpë \"{ærgTÿpë}\" çæññøt þë æssïgñëð tø pæræmëtër øf tÿpë \"{pæræmTÿpë}\" ïñ fµñçtïøñ \"{fµñçtïøñÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "argAssignmentParam": "[hEBRl][นั้Ærgµmëñt øf tÿpë \"{ærgTÿpë}\" çæññøt þë æssïgñëð tø pæræmëtër \"{pæræmÑæmë}\" øf tÿpë \"{pæræmTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "argAssignmentParamFunction": "[0sIuD][นั้Ærgµmëñt øf tÿpë \"{ærgTÿpë}\" çæññøt þë æssïgñëð tø pæræmëtër \"{pæræmÑæmë}\" øf tÿpë \"{pæræmTÿpë}\" ïñ fµñçtïøñ \"{fµñçtïøñÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "argMissingForParam": "[1oqiG][นั้Ærgµmëñt mïssïñg før pæræmëtër {ñæmë}Ấğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "argMissingForParams": "[iAF8C][นั้Ærgµmëñts mïssïñg før pæræmëtërs {ñæmës}Ấğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "argMorePositionalExpectedCount": "[q3jgC][นั้Ëxpëçtëð {ëxpëçtëð} mørë pøsïtïøñæl ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "argMorePositionalExpectedOne": "[DNcCo][นั้Ëxpëçtëð 1 mørë pøsïtïøñæl ærgµmëñtẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "argPositional": "[XBHa9][นั้Ëxpëçtëð pøsïtïøñæl ærgµmëñtẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "argPositionalExpectedCount": "[F5Y6t][นั้Ëxpëçtëð {ëxpëçtëð} pøsïtïøñæl ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "argPositionalExpectedOne": "[XW4kV][นั้Ëxpëçtëð 1 pøsïtïøñæl ærgµmëñtẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "argTypePartiallyUnknown": "[Y02o3][นั้Ærgµmëñt tÿpë ïs pærtïællÿ µñkñøwñẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "argTypeUnknown": "[l0ccD][นั้Ærgµmëñt tÿpë ïs µñkñøwñẤğ倪İЂҰक्र्นั้ढूँ]", + "assertAlwaysTrue": "[5Weld][นั้Æssërt ëxprëssïøñ ælwæÿs ëvælµætës tø trµëẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "assertTypeArgs": "[QHRQ7][นั้\"æssërt_tÿpë\" ëxpëçts twø pøsïtïøñæl ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "assertTypeTypeMismatch": "[fc1Kk][นั้\"æssërt_tÿpë\" mïsmætçh: ëxpëçtëð \"{ëxpëçtëð}\" þµt rëçëïvëð \"{rëçëïvëð}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "assignmentExprComprehension": "[F5OTr][นั้Æssïgñmëñt ëxprëssïøñ tærgët \"{ñæmë}\" çæññøt µsë sæmë ñæmë æs çømprëhëñsïøñ før tærgëtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "assignmentExprContext": "[U4d41][นั้Æssïgñmëñt ëxprëssïøñ mµst þë wïthïñ møðµlë, fµñçtïøñ ør læmþðæẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "assignmentExprInSubscript": "[mnJzw][นั้Æssïgñmëñt ëxprëssïøñs wïthïñ æ sµþsçrïpt ærë sµppørtëð øñlÿ ïñ Pÿthøñ 3.10 æñð ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "assignmentInProtocol": "[vey5h][นั้Ïñstæñçë ør çlæss værïæþlës wïthïñ æ Prøtøçøl çlæss mµst þë ëxplïçïtlÿ ðëçlærëð wïthïñ thë çlæss þøðÿẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "assignmentTargetExpr": "[22xbu][นั้Ëxprëssïøñ çæññøt þë æssïgñmëñt tærgëtẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "asyncNotInAsyncFunction": "[u0Y7U][นั้Üsë øf \"æsÿñç\" ñøt ælløwëð øµtsïðë øf æsÿñç fµñçtïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "awaitIllegal": "[2Wa68][นั้Üsë øf \"æwæït\" rëqµïrës Pÿthøñ 3.5 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "awaitNotInAsync": "[qau2Q][นั้\"æwæït\" ælløwëð øñlÿ wïthïñ æsÿñç fµñçtïøñẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "backticksIllegal": "[V1LZI][นั้Ëxprëssïøñs sµrrøµñðëð þÿ þæçktïçks ærë ñøt sµppørtëð ïñ Pÿthøñ 3.x; µsë rëpr ïñstëæðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "baseClassCircular": "[frqWt][นั้Çlæss çæññøt ðërïvë frøm ïtsëlfẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "baseClassFinal": "[C9i92][นั้ßæsë çlæss \"{tÿpë}\" ïs mærkëð fïñæl æñð çæññøt þë sµþçlæssëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "baseClassInvalid": "[qULQr][นั้Ærgµmëñt tø çlæss mµst þë æ þæsë çlæssẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "baseClassMethodTypeIncompatible": "[2lM0z][นั้ßæsë çlæssës før çlæss \"{çlæssTÿpë}\" ðëfïñë mëthøð \"{ñæmë}\" ïñ ïñçømpætïþlë wæÿẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "baseClassUnknown": "[QQxIX][นั้ßæsë çlæss tÿpë ïs µñkñøwñ, øþsçµrïñg tÿpë øf ðërïvëð çlæssẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "baseClassVariableTypeIncompatible": "[YmxlD][นั้ßæsë çlæssës før çlæss \"{çlæssTÿpë}\" ðëfïñë værïæþlë \"{ñæmë}\" ïñ ïñçømpætïþlë wæÿẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "bindTypeMismatch": "[x4sbf][นั้Çøµlð ñøt þïñð mëthøð \"{mëthøðÑæmë}\" þëçæµsë \"{tÿpë}\" ïs ñøt æssïgñæþlë tø pæræmëtër \"{pæræmÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "breakOutsideLoop": "[Ca4Ip][นั้\"þrëæk\" çæñ þë µsëð øñlÿ wïthïñ æ løøpẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "callableExtraArgs": "[M3UIb][นั้Ëxpëçtëð øñlÿ twø tÿpë ærgµmëñts tø \"Çællæþlë\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "callableFirstArg": "[W1wTU][นั้Ëxpëçtëð pæræmëtër tÿpë lïst ør \"...\"Ấğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "callableNotInstantiable": "[sJ0Q8][นั้Çæññøt ïñstæñtïætë tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "callableSecondArg": "[9c1cS][นั้Ëxpëçtëð rëtµrñ tÿpë æs sëçøñð tÿpë ærgµmëñt før \"Çællæþlë\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "casePatternIsIrrefutable": "[NR6tj][นั้Ïrrëfµtæþlë pættërñ ïs ælløwëð øñlÿ før thë læst çæsë stætëmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "classAlreadySpecialized": "[Puetc][นั้Tÿpë \"{tÿpë}\" ïs ælrëæðÿ spëçïælïzëðẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "classDecoratorTypeUnknown": "[FhL8V][นั้Üñtÿpëð çlæss ðëçørætør øþsçµrës tÿpë øf çlæss; ïgñørïñg ðëçørætørẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "classDefinitionCycle": "[21Tlp][นั้Çlæss ðëfïñïtïøñ før \"{ñæmë}\" ðëpëñðs øñ ïtsëlfẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "classGetItemClsParam": "[A2iHF][นั้__çlæss_gëtïtëm__ øvërrïðë shøµlð tækë æ \"çls\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "classMethodClsParam": "[aWMN3][นั้Çlæss mëthøðs shøµlð tækë æ \"çls\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "classNotRuntimeSubscriptable": "[O9BL6][นั้§µþsçrïpt før çlæss \"{ñæmë}\" wïll gëñërætë rµñtïmë ëxçëptïøñ; ëñçløsë tÿpë æññøtætïøñ ïñ qµøtësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "classPatternBuiltInArgCount": "[moI4V][นั้Çlæss pættërñ æççëpts æt møst 1 pøsïtïøñæl sµþ-pættërñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "classPatternBuiltInArgPositional": "[DOfs5][นั้Çlæss pættërñ æççëpts øñlÿ pøsïtïøñæl sµþ-pættërñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "classPatternTypeAlias": "[AxDtv][นั้\"{tÿpë}\" çæññøt þë µsëð ïñ æ çlæss pættërñ þëçæµsë ït ïs æ spëçïælïzëð tÿpë ælïæsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "classTypeParametersIllegal": "[GybXD][นั้Çlæss tÿpë pæræmëtër sÿñtæx rëqµïrës Pÿthøñ 3.12 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "classVarFirstArgMissing": "[VtcEd][นั้Ëxpëçtëð æ tÿpë ærgµmëñt æftër \"ÇlæssVær\"Ấğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "classVarNotAllowed": "[BU07G][นั้\"ÇlæssVær\" ïs ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "classVarOverridesInstanceVar": "[UEaro][นั้Çlæss værïæþlë \"{ñæmë}\" øvërrïðës ïñstæñçë værïæþlë øf sæmë ñæmë ïñ çlæss \"{çlæssÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "classVarTooManyArgs": "[Mj1R5][นั้Ëxpëçtëð øñlÿ øñë tÿpë ærgµmëñt æftër \"ÇlæssVær\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "classVarWithTypeVar": "[6mnjY][นั้\"ÇlæssVær\" tÿpë çæññøt ïñçlµðë tÿpë værïæþlësẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "clsSelfParamTypeMismatch": "[MBrCQ][นั้Tÿpë øf pæræmëtër \"{ñæmë}\" mµst þë æ sµpërtÿpë øf ïts çlæss \"{çlæssTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "codeTooComplexToAnalyze": "[FNQd7][นั้Çøðë ïs tøø çømplëx tø æñælÿzë; rëðµçë çømplëxïtÿ þÿ rëfæçtørïñg ïñtø sµþrøµtïñës ør rëðµçïñg çøñðïtïøñæl çøðë pæthsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "collectionAliasInstantiation": "[rZb8i][นั้Tÿpë \"{tÿpë}\" çæññøt þë ïñstæñtïætëð, µsë \"{ælïæs}\" ïñstëæðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "comparisonAlwaysFalse": "[N16ve][นั้Çøñðïtïøñ wïll ælwæÿs ëvælµætë tø Fælsë sïñçë thë tÿpës \"{lëftTÿpë}\" æñð \"{rïghtTÿpë}\" hævë ñø øvërlæpẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "comparisonAlwaysTrue": "[0TOLo][นั้Çøñðïtïøñ wïll ælwæÿs ëvælµætë tø Trµë sïñçë thë tÿpës \"{lëftTÿpë}\" æñð \"{rïghtTÿpë}\" hævë ñø øvërlæpẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "comprehensionInDict": "[Orm2O][นั้Çømprëhëñsïøñ çæññøt þë µsëð wïth øthër ðïçtïøñærÿ ëñtrïësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "comprehensionInSet": "[YUnu9][นั้Çømprëhëñsïøñ çæññøt þë µsëð wïth øthër sët ëñtrïësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "concatenateParamSpecMissing": "[3s1CV][นั้£æst tÿpë ærgµmëñt før \"Çøñçætëñætë\" mµst þë æ Pæræm§pëçẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "concatenateTypeArgsMissing": "[aH5g8][นั้\"Çøñçætëñætë\" rëqµïrës æt lëæst twø tÿpë ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "conditionalOperandInvalid": "[HnbrG][นั้Ïñvælïð çøñðïtïøñæl øpëræñð øf tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "constantRedefinition": "[oRKBh][นั้\"{ñæmë}\" ïs çøñstæñt (þëçæµsë ït ïs µppërçæsë) æñð çæññøt þë rëðëfïñëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "constructorNoArgs": "[2g3jZ][นั้Ëxpëçtëð ñø ærgµmëñts tø \"{tÿpë}\" çøñstrµçtørẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "constructorParametersMismatch": "[WWloK][นั้Mïsmætçh þëtwëëñ sïgñætµrë øf __ñëw__ æñð __ïñït__ ïñ çlæss \"{çlæssTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "containmentAlwaysFalse": "[e6PIv][นั้Ëxprëssïøñ wïll ælwæÿs ëvælµætë tø Fælsë sïñçë thë tÿpës \"{lëftTÿpë}\" æñð \"{rïghtTÿpë}\" hævë ñø øvërlæpẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "containmentAlwaysTrue": "[8OhUO][นั้Ëxprëssïøñ wïll ælwæÿs ëvælµætë tø Trµë sïñçë thë tÿpës \"{lëftTÿpë}\" æñð \"{rïghtTÿpë}\" hævë ñø øvërlæpẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "continueInFinally": "[RZIyI][นั้\"çøñtïñµë\" çæññøt þë µsëð wïthïñ æ fïñællÿ çlæµsëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "continueOutsideLoop": "[6ACvd][นั้\"çøñtïñµë\" çæñ þë µsëð øñlÿ wïthïñ æ løøpẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "dataClassBaseClassFrozen": "[jjiw4][นั้Æ ñøñ-frøzëñ çlæss çæññøt ïñhërït frøm æ çlæss thæt ïs frøzëñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "dataClassBaseClassNotFrozen": "[KOz4K][นั้Æ frøzëñ çlæss çæññøt ïñhërït frøm æ çlæss thæt ïs ñøt frøzëñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "dataClassConverterFunction": "[FxD8r][นั้Ærgµmëñt øf tÿpë \"{ærgTÿpë}\" ïs ñøt æ vælïð çøñvërtër før fïëlð \"{fïëlðÑæmë}\" øf tÿpë \"{fïëlðTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "dataClassConverterOverloads": "[ZJ0SE][นั้Ñø øvërløæðs øf \"{fµñçÑæmë}\" ærë vælïð çøñvërtërs før fïëlð \"{fïëlðÑæmë}\" øf tÿpë \"{fïëlðTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "dataClassFieldWithDefault": "[iJuju][นั้Fïëlðs wïthøµt ðëfæµlt vælµës çæññøt æppëær æftër fïëlðs wïth ðëfæµlt vælµësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "dataClassFieldWithPrivateName": "[miQYb][นั้Ðætæçlæss fïëlð çæññøt µsë prïvætë ñæmëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "dataClassFieldWithoutAnnotation": "[zq5t5][นั้Ðætæçlæss fïëlð wïthøµt tÿpë æññøtætïøñ wïll çæµsë rµñtïmë ëxçëptïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "dataClassPostInitParamCount": "[yl0Bg][นั้Ðætæçlæss __pøst_ïñït__ ïñçørrëçt pæræmëtër çøµñt; ñµmþër øf ÏñïtVær fïëlðs ïs {ëxpëçtëð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "dataClassPostInitType": "[74TW4][นั้Ðætæçlæss __pøst_ïñït__ mëthøð pæræmëtër tÿpë mïsmætçh før fïëlð \"{fïëlðÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "dataClassSlotsOverwrite": "[D17er][นั้__sløts__ ïs ælrëæðÿ ðëfïñëð ïñ çlæssẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "dataClassTransformExpectedBoolLiteral": "[y2upJ][นั้Ëxpëçtëð ëxprëssïøñ thæt stætïçællÿ ëvælµætës tø Trµë ør FælsëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "dataClassTransformFieldSpecifier": "[xE1Cp][นั้Ëxpëçtëð tµplë øf çlæssës ør fµñçtïøñs þµt rëçëïvëð tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "dataClassTransformPositionalParam": "[Cu7w4][นั้Æll ærgµmëñts tø \"ðætæçlæss_træñsførm\" mµst þë këÿwørð ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "dataClassTransformUnknownArgument": "[hLQXL][นั้Ærgµmëñt \"{ñæmë}\" ïs ñøt sµppørtëð þÿ ðætæçlæss_træñsførmẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "declaredReturnTypePartiallyUnknown": "[pDeOu][นั้Ðëçlærëð rëtµrñ tÿpë, \"{rëtµrñTÿpë}\", ïs pærtïællÿ µñkñøwñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "declaredReturnTypeUnknown": "[XRFJs][นั้Ðëçlærëð rëtµrñ tÿpë ïs µñkñøwñẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "defaultValueContainsCall": "[G3smw][นั้Fµñçtïøñ çælls æñð mµtæþlë øþjëçts ñøt ælløwëð wïthïñ pæræmëtër ðëfæµlt vælµë ëxprëssïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "defaultValueNotAllowed": "[SuRpb][นั้Pæræmëtër wïth \"*\" ør \"**\" çæññøt hævë ðëfæµlt vælµëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "delTargetExpr": "[VLtXk][นั้Ëxprëssïøñ çæññøt þë ðëlëtëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "deprecatedClass": "[DIyRn][นั้Thë çlæss \"{ñæmë}\" ïs ðëprëçætëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "deprecatedConstructor": "[jq4aQ][นั้Thë çøñstrµçtør før çlæss \"{ñæmë}\" ïs ðëprëçætëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "deprecatedFunction": "[GdF0l][นั้Thïs fµñçtïøñ \"{ñæmë}\" ïs ðëprëçætëðẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "deprecatedType": "[IWdSs][นั้Thïs tÿpë ïs ðëprëçætëð æs øf Pÿthøñ {vërsïøñ}; µsë \"{rëplæçëmëñt}\" ïñstëæðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "dictExpandIllegalInComprehension": "[3B8LL][นั้Ðïçtïøñærÿ ëxpæñsïøñ ñøt ælløwëð ïñ çømprëhëñsïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "dictInAnnotation": "[0UcII][นั้Ðïçtïøñærÿ ëxprëssïøñ ñøt ælløwëð ïñ tÿpë æññøtætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "dictKeyValuePairs": "[Hnd6W][นั้Ðïçtïøñærÿ ëñtrïës mµst çøñtæïñ këÿ/vælµë pæïrsẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "dictUnpackIsNotMapping": "[RhO60][นั้Ëxpëçtëð mæppïñg før ðïçtïøñærÿ µñpæçk øpërætørẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "dunderAllSymbolNotPresent": "[mlrcI][นั้\"{ñæmë}\" ïs spëçïfïëð ïñ __æll__ þµt ïs ñøt prësëñt ïñ møðµlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "duplicateArgsParam": "[bt3Os][นั้Øñlÿ øñë \"*\" pæræmëtër ælløwëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "duplicateBaseClass": "[HIzyw][นั้еplïçætë þæsë çlæss ñøt ælløwëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "duplicateCapturePatternTarget": "[zq38Z][นั้Çæptµrë tærgët \"{ñæmë}\" çæññøt æppëær mørë thæñ øñçë wïthïñ thë sæmë pættërñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "duplicateCatchAll": "[6gO00][นั้Øñlÿ øñë çætçh-æll ëxçëpt çlæµsë ælløwëðẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "duplicateEnumMember": "[k9W8A][นั้Ëñµm mëmþër \"{ñæmë}\" ïs ælrëæðÿ ðëçlærëðẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "duplicateGenericAndProtocolBase": "[4EO4W][นั้Øñlÿ øñë Gëñërïç[...] ør Prøtøçøl[...] þæsë çlæss ælløwëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "duplicateImport": "[qgZGm][นั้\"{ïmpørtÑæmë}\" ïs ïmpørtëð mørë thæñ øñçëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "duplicateKeywordOnly": "[pbf3W][นั้Øñlÿ øñë \"*\" sëpærætør ælløwëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "duplicateKwargsParam": "[4QsUE][นั้Øñlÿ øñë \"**\" pæræmëtër ælløwëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "duplicateParam": "[s0XGf][นั้еplïçætë pæræmëtër \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "duplicatePositionOnly": "[9hzW4][นั้Øñlÿ øñë \"/\" pæræmëtër ælløwëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "duplicateStarPattern": "[8quwQ][นั้Øñlÿ øñë \"*\" pættërñ ælløwëð ïñ æ pættërñ sëqµëñçëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "duplicateStarStarPattern": "[wScoI][นั้Øñlÿ øñë \"**\" ëñtrÿ ælløwëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "duplicateUnpack": "[wjeOP][นั้Øñlÿ øñë µñpæçk øpërætïøñ ælløwëð ïñ lïstẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "ellipsisContext": "[Y4jK3][นั้\"...\" ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "ellipsisSecondArg": "[pvXJA][นั้\"...\" ælløwëð øñlÿ æs thë sëçøñð øf twø ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "enumClassOverride": "[2JsL1][นั้Ëñµm çlæss \"{ñæmë}\" ïs fïñæl æñð çæññøt þë sµþçlæssëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "exceptionGroupIncompatible": "[d0SLP][นั้Ëxçëptïøñ grøµp sÿñtæx (\"ëxçëpt*\") rëqµïrës Pÿthøñ 3.11 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "exceptionTypeIncorrect": "[G7AZt][นั้\"{tÿpë}\" ðøës ñøt ðërïvë frøm ßæsëËxçëptïøñẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "exceptionTypeNotClass": "[v1FmY][นั้\"{tÿpë}\" ïs ñøt æ vælïð ëxçëptïøñ çlæssẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "exceptionTypeNotInstantiable": "[PfdeG][นั้Çøñstrµçtør før ëxçëptïøñ tÿpë \"{tÿpë}\" rëqµïrës øñë ør mørë ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "expectedAfterDecorator": "[rzMVF][นั้Ëxpëçtëð fµñçtïøñ ør çlæss ðëçlærætïøñ æftër ðëçørætørẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "expectedArrow": "[DrZKr][นั้Ëxpëçtëð \"->\" følløwëð þÿ rëtµrñ tÿpë æññøtætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "expectedAsAfterException": "[FDdTe][นั้Ëxpëçtëð \"æs\" æftër ëxçëptïøñ tÿpëẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "expectedAssignRightHandExpr": "[mPzHP][นั้Ëxpëçtëð ëxprëssïøñ tø thë rïght øf \"=\"Ấğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "expectedBinaryRightHandExpr": "[MgqnF][นั้Ëxpëçtëð ëxprëssïøñ tø thë rïght øf øpërætørẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "expectedBoolLiteral": "[bhZAe][นั้Ëxpëçtëð Trµë ør FælsëẤğ倪İЂҰक्र्นั้ढूँ]", + "expectedCase": "[kQ1sa][นั้Ëxpëçtëð \"çæsë\" stætëmëñtẤğ倪İЂҰक्र्นั้ढूँ]", + "expectedClassName": "[f0XRc][นั้Ëxpëçtëð çlæss ñæmëẤğ倪İЂҰक्นั้ढूँ]", + "expectedCloseBrace": "[MQHKY][นั้\"{\" wæs ñøt çløsëðẤğ倪İЂҰक्นั้ढूँ]", + "expectedCloseBracket": "[YfM0n][นั้\"[\" wæs ñøt çløsëðẤğ倪İЂҰक्นั้ढूँ]", + "expectedCloseParen": "[tAuag][นั้\"(\" wæs ñøt çløsëðẤğ倪İЂҰक्นั้ढूँ]", + "expectedColon": "[KmzHa][นั้Ëxpëçtëð \":\"Ấğ倪İЂนั้ढूँ]", + "expectedComplexNumberLiteral": "[dc2rM][นั้Ëxpëçtëð çømplëx ñµmþër lïtëræl før pættërñ mætçhïñgẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "expectedDecoratorExpr": "[415JG][นั้Ëxprëssïøñ førm ñøt sµppørtëð før ðëçørætør prïør tø Pÿthøñ 3.9Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "expectedDecoratorName": "[IKO4m][นั้Ëxpëçtëð ðëçørætør ñæmëẤğ倪İЂҰक्र्นั้ढूँ]", + "expectedDecoratorNewline": "[Bsyx3][นั้Ëxpëçtëð ñëw lïñë æt ëñð øf ðëçørætørẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "expectedDelExpr": "[u8JgL][นั้Ëxpëçtëð ëxprëssïøñ æftër \"ðël\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "expectedElse": "[eROaU][นั้Ëxpëçtëð \"ëlsë\"Ấğ倪İЂҰนั้ढूँ]", + "expectedEquals": "[TXK4x][นั้Ëxpëçtëð \"=\"Ấğ倪İЂนั้ढूँ]", + "expectedExceptionClass": "[sYtUr][นั้Ïñvælïð ëxçëptïøñ çlæss ør øþjëçtẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "expectedExceptionObj": "[w4tAQ][นั้Ëxpëçtëð ëxçëptïøñ øþjëçt, ëxçëptïøñ çlæss ør ÑøñëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "expectedExpr": "[iKSsw][นั้Ëxpëçtëð ëxprëssïøñẤğ倪İЂҰक्นั้ढूँ]", + "expectedFunctionAfterAsync": "[fWBMb][นั้Ëxpëçtëð fµñçtïøñ ðëfïñïtïøñ æftër \"æsÿñç\"Ấğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "expectedFunctionName": "[cR036][นั้Ëxpëçtëð fµñçtïøñ ñæmë æftër \"ðëf\"Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", + "expectedIdentifier": "[Lj4l5][นั้Ëxpëçtëð ïðëñtïfïërẤğ倪İЂҰक्นั้ढूँ]", + "expectedImport": "[FNK2F][นั้Ëxpëçtëð \"ïmpørt\"Ấğ倪İЂҰक्นั้ढूँ]", + "expectedImportAlias": "[mb4fF][นั้Ëxpëçtëð sÿmþøl æftër \"æs\"Ấğ倪İЂҰक्र्นั้ढूँ]", + "expectedImportSymbols": "[QUZ7S][นั้Ëxpëçtëð øñë ør mørë sÿmþøl ñæmës æftër ïmpørtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "expectedIn": "[9XkiC][นั้Ëxpëçtëð \"ïñ\"Ấğ倪İЂนั้ढूँ]", + "expectedInExpr": "[RXryp][นั้Ëxpëçtëð ëxprëssïøñ æftër \"ïñ\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "expectedIndentedBlock": "[7ZvJC][นั้Ëxpëçtëð ïñðëñtëð þløçkẤğ倪İЂҰक्र्นั้ढूँ]", + "expectedMemberName": "[VvTAF][นั้Ëxpëçtëð mëmþër ñæmë æftër \".\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "expectedModuleName": "[Jky7g][นั้Ëxpëçtëð møðµlë ñæmëẤğ倪İЂҰक्นั้ढूँ]", + "expectedNameAfterAs": "[KnNbR][นั้Ëxpëçtëð sÿmþøl ñæmë æftër \"æs\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "expectedNamedParameter": "[ZsE8l][นั้Këÿwørð pæræmëtër mµst følløw \"*\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "expectedNewline": "[bW0cY][นั้Ëxpëçtëð ñëwlïñëẤğ倪İЂҰนั้ढूँ]", + "expectedNewlineOrSemicolon": "[av2Gz][นั้§tætëmëñts mµst þë sëpærætëð þÿ ñëwlïñës ør sëmïçøløñsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "expectedOpenParen": "[CLuzo][นั้Ëxpëçtëð \"(\"Ấğ倪İЂนั้ढूँ]", + "expectedParamName": "[b0il7][นั้Ëxpëçtëð pæræmëtër ñæmëẤğ倪İЂҰक्र्นั้ढूँ]", + "expectedPatternExpr": "[76AU4][นั้Ëxpëçtëð pættërñ ëxprëssïøñẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "expectedPatternSubjectExpr": "[GUw9q][นั้Ëxpëçtëð pættërñ sµþjëçt ëxprëssïøñẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "expectedPatternValue": "[Ah06c][นั้Ëxpëçtëð pættërñ vælµë ëxprëssïøñ øf thë førm \"æ.þ\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "expectedReturnExpr": "[nyeYf][นั้Ëxpëçtëð ëxprëssïøñ æftër \"rëtµrñ\"Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", + "expectedSliceIndex": "[0HjFA][นั้Ëxpëçtëð ïñðëx ør slïçë ëxprëssïøñẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "expectedTypeNotString": "[FXeAr][นั้Ëxpëçtëð tÿpë þµt rëçëïvëð æ strïñg lïtërælẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "expectedTypeParameterName": "[aHX5Q][นั้Ëxpëçtëð tÿpë pæræmëtër ñæmëẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "expectedYieldExpr": "[TrB0N][นั้Ëxpëçtëð ëxprëssïøñ ïñ ÿïëlð stætëmëñtẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "finalClassIsAbstract": "[qEcDN][นั้Çlæss \"{tÿpë}\" ïs mærkëð fïñæl æñð mµst ïmplëmëñt æll æþstræçt mëthøðsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "finalContext": "[KT2Ma][นั้\"Fïñæl\" ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "finalMethodOverride": "[rVyi2][นั้Mëthøð \"{ñæmë}\" çæññøt øvërrïðë fïñæl mëthøð ðëfïñëð ïñ çlæss \"{çlæssÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "finalReassigned": "[fgpqP][นั้\"{ñæmë}\" ïs ðëçlærëð æs Fïñæl æñð çæññøt þë rëæssïgñëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "finalRedeclaration": "[8jVSa][นั้\"{ñæmë}\" wæs prëvïøµslÿ ðëçlærëð æs FïñælẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "finalRedeclarationBySubclass": "[0VswQ][นั้\"{ñæmë}\" çæññøt þë rëðëçlærëð þëçæµsë pærëñt çlæss \"{çlæssÑæmë}\" ðëçlærës ït æs FïñælẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "finalTooManyArgs": "[9fleE][นั้Ëxpëçtëð æ sïñglë tÿpë ærgµmëñt æftër \"Fïñæl\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "finalUnassigned": "[PmdtN][นั้\"{ñæmë}\" ïs ðëçlærëð Fïñæl, þµt vælµë ïs ñøt æssïgñëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "formatStringBrace": "[j606J][นั้§ïñglë çløsë þræçë ñøt ælløwëð wïthïñ f-strïñg lïtëræl; µsë ðøµþlë çløsë þræçëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "formatStringBytes": "[1Xo44][นั้Førmæt strïñg lïtëræls (f-strïñgs) çæññøt þë þïñærÿẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "formatStringDebuggingIllegal": "[mQueA][นั้F-strïñg ðëþµggïñg spëçïfïër \"=\" rëqµïrës Pÿthøñ 3.8 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "formatStringEscape": "[lcP3H][นั้Ësçæpë sëqµëñçë (þæçkslæsh) ñøt ælløwëð ïñ ëxprëssïøñ pørtïøñ øf f-strïñg prïør tø Pÿthøñ 3.12Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "formatStringExpectedConversion": "[AjO2F][นั้Ëxpëçtëð æ çøñvërsïøñ spëçïfïër æftër \"!\" ïñ f-strïñgẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "formatStringIllegal": "[HhOeX][นั้Førmæt strïñg lïtëræls (f-strïñgs) rëqµïrë Pÿthøñ 3.6 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "formatStringInPattern": "[KqV2l][นั้Førmæt strïñg ñøt ælløwëð ïñ pættërñẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "formatStringNestedFormatSpecifier": "[OFqi6][นั้Ëxprëssïøñs ñëstëð tøø ðëëplÿ wïthïñ førmæt strïñg spëçïfïërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "formatStringNestedQuote": "[buq49][นั้§trïñgs ñëstëð wïthïñ æñ f-strïñg çæññøt µsë thë sæmë qµøtë çhæræçtër æs thë f-strïñg prïør tø Pÿthøñ 3.12Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "formatStringUnicode": "[RCCfD][นั้Førmæt strïñg lïtëræls (f-strïñgs) çæññøt þë µñïçøðëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "formatStringUnterminated": "[PnOZr][นั้Üñtërmïñætëð ëxprëssïøñ ïñ f-strïñg; ëxpëçtïñg \"}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "functionDecoratorTypeUnknown": "[Gv66U][นั้Üñtÿpëð fµñçtïøñ ðëçørætør øþsçµrës tÿpë øf fµñçtïøñ; ïgñørïñg ðëçørætørẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "functionInConditionalExpression": "[9A68n][นั้Çøñðïtïøñæl ëxprëssïøñ rëfërëñçës fµñçtïøñ whïçh ælwæÿs ëvælµætës tø TrµëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "functionTypeParametersIllegal": "[0JM96][นั้Fµñçtïøñ tÿpë pæræmëtër sÿñtæx rëqµïrës Pÿthøñ 3.12 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "futureImportLocationNotAllowed": "[IdoQY][นั้Ïmpørts frøm __fµtµrë__ mµst þë æt thë þëgïññïñg øf thë fïlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "generatorAsyncReturnType": "[dYKl9][นั้Rëtµrñ tÿpë øf æsÿñç gëñërætør fµñçtïøñ mµst þë çømpætïþlë wïth \"ÆsÿñçGëñërætør[{ÿïëlðTÿpë}, Æñÿ]\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "generatorNotParenthesized": "[WmWZM][นั้Gëñërætør ëxprëssïøñs mµst þë pærëñthësïzëð ïf ñøt sølë ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "generatorSyncReturnType": "[ASD1z][นั้Rëtµrñ tÿpë øf gëñërætør fµñçtïøñ mµst þë çømpætïþlë wïth \"Gëñërætør[{ÿïëlðTÿpë}, Æñÿ, Æñÿ]\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "genericBaseClassNotAllowed": "[fniUT][นั้\"Gëñërïç\" þæsë çlæss çæññøt þë µsëð wïth tÿpë pæræmëtër sÿñtæxẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "genericClassAssigned": "[iU1tH][นั้Gëñërïç çlæss tÿpë çæññøt þë æssïgñëðẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "genericClassDeleted": "[C942e][นั้Gëñërïç çlæss tÿpë çæññøt þë ðëlëtëðẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "genericNotAllowed": "[vnF07][นั้\"Gëñërïç\" ïs ñøt vælïð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "genericTypeAliasBoundTypeVar": "[S1NAS][นั้Gëñërïç tÿpë ælïæs wïthïñ çlæss çæññøt µsë þøµñð tÿpë værïæþlës {ñæmës}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "genericTypeArgMissing": "[OlCEv][นั้\"Gëñërïç\" rëqµïrës æt lëæst øñë tÿpë ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "genericTypeArgTypeVar": "[09E7H][นั้Tÿpë ærgµmëñt før \"Gëñërïç\" mµst þë æ tÿpë værïæþlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "genericTypeArgUnique": "[xHwpY][นั้Tÿpë ærgµmëñts før \"Gëñërïç\" mµst þë µñïqµëẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "globalReassignment": "[B2UyK][นั้\"{ñæmë}\" ïs æssïgñëð þëførë gløþæl ðëçlærætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "globalRedefinition": "[UZSMp][นั้\"{ñæmë}\" wæs ælrëæðÿ ðëçlærëð gløþælẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "implicitStringConcat": "[t0D1l][นั้Ïmplïçït strïñg çøñçætëñætïøñ ñøt ælløwëðẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "importCycleDetected": "[FFPSZ][นั้Çÿçlë ðëtëçtëð ïñ ïmpørt çhæïñẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "importDepthExceeded": "[8G4s1][นั้Ïmpørt çhæïñ ðëpth ëxçëëðëð {ðëpth}Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", + "importResolveFailure": "[oBYA4][นั้Ïmpørt \"{ïmpørtÑæmë}\" çøµlð ñøt þë rësølvëðẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "importSourceResolveFailure": "[hjHFa][นั้Ïmpørt \"{ïmpørtÑæmë}\" çøµlð ñøt þë rësølvëð frøm søµrçëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "importSymbolUnknown": "[jY9ZH][นั้\"{ñæmë}\" ïs µñkñøwñ ïmpørt sÿmþølẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "incompatibleMethodOverride": "[i45Ka][นั้Mëthøð \"{ñæmë}\" øvërrïðës çlæss \"{çlæssÑæmë}\" ïñ æñ ïñçømpætïþlë mæññërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "inconsistentIndent": "[gdrcy][นั้Üñïñðëñt æmøµñt ðøës ñøt mætçh prëvïøµs ïñðëñtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "inconsistentTabs": "[I3Z6K][นั้Ïñçøñsïstëñt µsë øf tæþs æñð spæçës ïñ ïñðëñtætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "initMustReturnNone": "[RlXyC][นั้Rëtµrñ tÿpë øf \"__ïñït__\" mµst þë ÑøñëẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "initSubclassClsParam": "[6CWuS][นั้__ïñït_sµþçlæss__ øvërrïðë shøµlð tækë æ \"çls\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "instanceMethodSelfParam": "[dPZPj][นั้Ïñstæñçë mëthøðs shøµlð tækë æ \"sëlf\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "instanceVarOverridesClassVar": "[cfYeg][นั้Ïñstæñçë værïæþlë \"{ñæmë}\" øvërrïðës çlæss værïæþlë øf sæmë ñæmë ïñ çlæss \"{çlæssÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "instantiateAbstract": "[IyeLb][นั้Çæññøt ïñstæñtïætë æþstræçt çlæss \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "instantiateProtocol": "[Xa6p2][นั้Çæññøt ïñstæñtïætë prøtøçøl çlæss \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "internalBindError": "[PnkgK][นั้Æñ ïñtërñæl ërrør øççµrrëð whïlë þïñðïñg fïlë \"{fïlë}\": {mëssægë}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "internalParseError": "[T91nL][นั้Æñ ïñtërñæl ërrør øççµrrëð whïlë pærsïñg fïlë \"{fïlë}\": {mëssægë}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "internalTypeCheckingError": "[9E5Bn][นั้Æñ ïñtërñæl ërrør øççµrrëð whïlë tÿpë çhëçkïñg fïlë \"{fïlë}\": {mëssægë}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "invalidIdentifierChar": "[Vpy5i][นั้Ïñvælïð çhæræçtër ïñ ïðëñtïfïërẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "invalidStubStatement": "[sxuu1][นั้§tætëmëñt ïs mëæñïñglëss wïthïñ æ tÿpë stµþ fïlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "invalidTokenChars": "[n9Jty][นั้Ïñvælïð çhæræçtër \"{tëxt}\" ïñ tøkëñẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "isInstanceInvalidType": "[Q3jK3][นั้§ëçøñð ærgµmëñt tø \"ïsïñstæñçë\" mµst þë æ çlæss ør tµplë øf çlæssësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "isSubclassInvalidType": "[6Q7qf][นั้§ëçøñð ærgµmëñt tø \"ïssµþçlæss\" mµst þë æ çlæss ør tµplë øf çlæssësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "keyValueInSet": "[tmmyt][นั้Këÿ/vælµë pæïrs ærë ñøt ælløwëð wïthïñ æ sëtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "keywordArgInTypeArgument": "[BzcKx][นั้Këÿwørð ærgµmëñts çæññøt þë µsëð ïñ tÿpë ærgµmëñt lïstsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "keywordOnlyAfterArgs": "[RLvT4][นั้Këÿwørð-øñlÿ ærgµmëñt sëpærætør ñøt ælløwëð æftër \"*\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "keywordParameterMissing": "[gTcAl][นั้Øñë ør mørë këÿwørð pæræmëtërs mµst følløw \"*\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "keywordSubscriptIllegal": "[khu47][นั้Këÿwørð ærgµmëñts wïthïñ sµþsçrïpts ærë ñøt sµppørtëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "lambdaReturnTypePartiallyUnknown": "[Z5ML1][นั้Rëtµrñ tÿpë øf læmþðæ, \"{rëtµrñTÿpë}\", ïs pærtïællÿ µñkñøwñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "lambdaReturnTypeUnknown": "[h4icY][นั้Rëtµrñ tÿpë øf læmþðæ ïs µñkñøwñẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "listAssignmentMismatch": "[DZh64][นั้Ëxprëssïøñ wïth tÿpë \"{tÿpë}\" çæññøt þë æssïgñëð tø tærgët lïstẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "listInAnnotation": "[i5U8t][นั้£ïst ëxprëssïøñ ñøt ælløwëð ïñ tÿpë æññøtætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "literalEmptyArgs": "[VkrFm][นั้Ëxpëçtëð øñë ør mørë tÿpë ærgµmëñts æftër \"£ïtëræl\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "literalNotCallable": "[C75sx][นั้£ïtëræl tÿpë çæññøt þë ïñstæñtïætëðẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "literalUnsupportedType": "[10Yse][นั้Tÿpë ærgµmëñts før \"£ïtëræl\" mµst þë Ñøñë, æ lïtëræl vælµë (ïñt, þøøl, str, ør þÿtës), ør æñ ëñµm vælµëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "matchIncompatible": "[9ljpM][นั้Mætçh stætëmëñts rëqµïrë Pÿthøñ 3.10 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "matchIsNotExhaustive": "[BJ8EI][นั้Çæsës wïthïñ mætçh stætëmëñt ðø ñøt ëxhæµstïvëlÿ hæñðlë æll vælµësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "maxParseDepthExceeded": "[5nAZx][นั้Mæxïmµm pærsë ðëpth ëxçëëðëð; þrëæk ëxprëssïøñ ïñtø smællër sµþ-ëxprëssïøñsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "memberAccess": "[YP5V0][นั้Çæññøt æççëss mëmþër \"{ñæmë}\" før tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "memberDelete": "[o47cn][นั้Çæññøt ðëlëtë mëmþër \"{ñæmë}\" før tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "memberSet": "[JCDqa][นั้Çæññøt æssïgñ mëmþër \"{ñæmë}\" før tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "metaclassConflict": "[XgAJj][นั้Thë mëtæçlæss øf æ ðërïvëð çlæss mµst þë æ sµþçlæss øf thë mëtæçlæssës øf æll ïts þæsë çlæssësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "metaclassDuplicate": "[wrGuH][นั้Øñlÿ øñë mëtæçlæss çæñ þë prøvïðëðẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "metaclassIsGeneric": "[K5fXC][นั้Mëtæçlæss çæññøt þë gëñërïçẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "methodNotDefined": "[ZuPf7][นั้\"{ñæmë}\" mëthøð ñøt ðëfïñëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "methodNotDefinedOnType": "[sEtO5][นั้\"{ñæmë}\" mëthøð ñøt ðëfïñëð øñ tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "methodOrdering": "[0M0tn][นั้Çæññøt çrëætë çøñsïstëñt mëthøð ørðërïñgẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "methodOverridden": "[2Bu15][นั้\"{ñæmë}\" øvërrïðës mëthøð øf sæmë ñæmë ïñ çlæss \"{çlæssÑæmë}\" wïth ïñçømpætïþlë tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "methodReturnsNonObject": "[9nnVb][นั้\"{ñæmë}\" mëthøð ðøës ñøt rëtµrñ æñ øþjëçtẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "missingProtocolMembers": "[7lzzk][นั้Çlæss ðërïvës frøm øñë ør mørë prøtøçøl çlæssës þµt ðøës ñøt ïmplëmëñt æll rëqµïrëð mëmþërsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "missingSuperCall": "[jNXGA][นั้Mëthøð \"{mëthøðÑæmë}\" ðøës ñøt çæll thë mëthøð øf thë sæmë ñæmë ïñ pærëñt çlæssẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "moduleAsType": "[p9N4B][นั้Møðµlë çæññøt þë µsëð æs æ tÿpëẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "moduleNotCallable": "[YY0Jq][นั้Møðµlë ïs ñøt çællæþlëẤğ倪İЂҰक्र्นั้ढूँ]", + "moduleUnknownMember": "[tegoa][นั้\"{mëmþërÑæmë}\" ïs ñøt æ kñøwñ mëmþër øf møðµlë \"{møðµlëÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "namedExceptAfterCatchAll": "[pMR1l][นั้Æ ñæmëð ëxçëpt çlæµsë çæññøt æppëær æftër çætçh-æll ëxçëpt çlæµsëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "namedParamAfterParamSpecArgs": "[sF38r][นั้Këÿwørð pæræmëtër \"{ñæmë}\" çæññøt æppëær ïñ sïgñætµrë æftër Pæræm§pëç ærgs pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "namedTupleEmptyName": "[vnXqF][นั้Ñæmës wïthïñ æ ñæmëð tµplë çæññøt þë ëmptÿẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "namedTupleFirstArg": "[L5ZXq][นั้Ëxpëçtëð ñæmëð tµplë çlæss ñæmë æs fïrst ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "namedTupleMultipleInheritance": "[KYJOA][นั้Mµltïplë ïñhërïtæñçë wïth ÑæmëðTµplë ïs ñøt sµppørtëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "namedTupleNameType": "[AxfdS][นั้Ëxpëçtëð twø-ëñtrÿ tµplë spëçïfÿïñg ëñtrÿ ñæmë æñð tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "namedTupleNameUnique": "[TQaej][นั้Ñæmës wïthïñ æ ñæmëð tµplë mµst þë µñïqµëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "namedTupleNoTypes": "[Fn6FF][นั้\"ñæmëðtµplë\" prøvïðës ñø tÿpës før tµplë ëñtrïës; µsë \"ÑæmëðTµplë\" ïñstëæðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "namedTupleSecondArg": "[SqoXY][นั้Ëxpëçtëð ñæmëð tµplë ëñtrÿ lïst æs sëçøñð ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "newClsParam": "[EUESX][นั้__ñëw__ øvërrïðë shøµlð tækë æ \"çls\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "newTypeBadName": "[cqWvO][นั้Thë fïrst ærgµmëñt tø ÑëwTÿpë mµst þë æ strïñg lïtërælẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "newTypeLiteral": "[4k8om][นั้ÑëwTÿpë çæññøt þë µsëð wïth £ïtëræl tÿpëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "newTypeNotAClass": "[ta6tZ][นั้Ëxpëçtëð çlæss æs sëçøñð ærgµmëñt tø ÑëwTÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "newTypeParamCount": "[6b2ro][นั้ÑëwTÿpë rëqµïrës twø pøsïtïøñæl ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "newTypeProtocolClass": "[1l02t][นั้ÑëwTÿpë çæññøt þë µsëð wïth prøtøçøl çlæssẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "noOverload": "[IcBNQ][นั้Ñø øvërløæðs før \"{ñæmë}\" mætçh thë prøvïðëð ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "noReturnContainsReturn": "[nBLDq][นั้Fµñçtïøñ wïth ðëçlærëð rëtµrñ tÿpë \"ÑøRëtµrñ\" çæññøt ïñçlµðë æ rëtµrñ stætëmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "noReturnContainsYield": "[V3G36][นั้Fµñçtïøñ wïth ðëçlærëð rëtµrñ tÿpë \"ÑøRëtµrñ\" çæññøt ïñçlµðë æ ÿïëlð stætëmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "noReturnReturnsNone": "[O3XA6][นั้Fµñçtïøñ wïth ðëçlærëð tÿpë øf \"ÑøRëtµrñ\" çæññøt rëtµrñ \"Ñøñë\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "nonDefaultAfterDefault": "[mFFgP][นั้Ñøñ-ðëfæµlt ærgµmëñt følløws ðëfæµlt ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "nonLocalInModule": "[kmLlv][นั้Ñøñløçæl ðëçlærætïøñ ñøt ælløwëð æt møðµlë lëvëlẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "nonLocalNoBinding": "[WTA2d][นั้Ñø þïñðïñg før ñøñløçæl \"{ñæmë}\" føµñðẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "nonLocalReassignment": "[T1M6J][นั้\"{ñæmë}\" ïs æssïgñëð þëførë ñøñløçæl ðëçlærætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "nonLocalRedefinition": "[gwh1h][นั้\"{ñæmë}\" wæs ælrëæðÿ ðëçlærëð ñøñløçælẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "noneNotCallable": "[sIZ5J][นั้Øþjëçt øf tÿpë \"Ñøñë\" çæññøt þë çællëðẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "noneNotIterable": "[spDD0][นั้Øþjëçt øf tÿpë \"Ñøñë\" çæññøt þë µsëð æs ïtëræþlë vælµëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "noneNotSubscriptable": "[Emzwj][นั้Øþjëçt øf tÿpë \"Ñøñë\" ïs ñøt sµþsçrïptæþlëẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "noneNotUsableWith": "[zlOOD][นั้Øþjëçt øf tÿpë \"Ñøñë\" çæññøt þë µsëð wïth \"wïth\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "noneOperator": "[3U0d3][นั้Øpërætør \"{øpërætør}\" ñøt sµppørtëð før \"Ñøñë\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "noneUnknownMember": "[4KvEX][นั้\"{ñæmë}\" ïs ñøt æ kñøwñ mëmþër øf \"Ñøñë\"Ấğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "notRequiredArgCount": "[uOeAb][นั้Ëxpëçtëð æ sïñglë tÿpë ærgµmëñt æftër \"ÑøtRëqµïrëð\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "notRequiredNotInTypedDict": "[Vl6XL][นั้\"ÑøtRëqµïrëð\" ïs ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "objectNotCallable": "[bzlKk][นั้Øþjëçt øf tÿpë \"{tÿpë}\" ïs ñøt çællæþlëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "obscuredClassDeclaration": "[ixjN9][นั้Çlæss ðëçlærætïøñ \"{ñæmë}\" ïs øþsçµrëð þÿ æ ðëçlærætïøñ øf thë sæmë ñæmëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "obscuredFunctionDeclaration": "[O71DX][นั้Fµñçtïøñ ðëçlærætïøñ \"{ñæmë}\" ïs øþsçµrëð þÿ æ ðëçlærætïøñ øf thë sæmë ñæmëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "obscuredMethodDeclaration": "[m04yf][นั้Mëthøð ðëçlærætïøñ \"{ñæmë}\" ïs øþsçµrëð þÿ æ ðëçlærætïøñ øf thë sæmë ñæmëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "obscuredParameterDeclaration": "[NaF76][นั้Pæræmëtër ðëçlærætïøñ \"{ñæmë}\" ïs øþsçµrëð þÿ æ ðëçlærætïøñ øf thë sæmë ñæmëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "obscuredTypeAliasDeclaration": "[0GZdR][นั้Tÿpë ælïæs ðëçlærætïøñ \"{ñæmë}\" ïs øþsçµrëð þÿ æ ðëçlærætïøñ øf thë sæmë ñæmëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "obscuredVariableDeclaration": "[HR10j][นั้Ðëçlærætïøñ \"{ñæmë}\" ïs øþsçµrëð þÿ æ ðëçlærætïøñ øf thë sæmë ñæmëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "operatorLessOrGreaterDeprecated": "[bNZp7][นั้Øpërætør \"<>\" ïs ñøt sµppørtëð ïñ Pÿthøñ 3; µsë \"!=\" ïñstëæðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "optionalExtraArgs": "[yW5W0][นั้Ëxpëçtëð øñë tÿpë ærgµmëñt æftër \"Øptïøñæl\"Ấğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "orPatternIrrefutable": "[peFRW][นั้Ïrrëfµtæþlë pættërñ ælløwëð øñlÿ æs thë læst sµþpættërñ ïñ æñ \"ør\" pættërñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "orPatternMissingName": "[OxMxP][นั้Æll sµþpættërñs wïthïñ æñ \"ør\" pættërñ mµst tærgët thë sæmë ñæmësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "overlappingOverload": "[SCQMv][นั้Øvërløæð {øþsçµrëð} før \"{ñæmë}\" wïll ñëvër þë µsëð þëçæµsë ïts pæræmëtërs øvërlæp øvërløæð {øþsçµrëðßÿ}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "overloadAbstractMismatch": "[54DCM][นั้Øvërløæðëð mëthøðs mµst æll þë æþstræçt ør ñøtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "overloadImplementationMismatch": "[dXlXE][นั้Øvërløæðëð ïmplëmëñtætïøñ ïs ñøt çøñsïstëñt wïth sïgñætµrë øf øvërløæð {ïñðëx}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "overloadReturnTypeMismatch": "[6BN74][นั้Øvërløæð {prëvÏñðëx} før \"{ñæmë}\" øvërlæps øvërløæð {ñëwÏñðëx} æñð rëtµrñs æñ ïñçømpætïþlë tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "overloadWithImplementation": "[jYBzA][นั้\"{ñæmë}\" ïs mærkëð æs øvërløæð, þµt ït ïñçlµðës æñ ïmplëmëñtætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "overloadWithoutImplementation": "[mn33a][นั้\"{ñæmë}\" ïs mærkëð æs øvërløæð, þµt ñø ïmplëmëñtætïøñ ïs prøvïðëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "overriddenMethodNotFound": "[YKdBy][นั้Mëthøð \"{ñæmë}\" ïs mærkëð æs øvërrïðë, þµt ñø þæsë mëthøð øf sæmë ñæmë ïs prësëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "overrideDecoratorMissing": "[2BnJq][นั้Mëthøð \"{ñæmë}\" ïs ñøt mærkëð æs øvërrïðë þµt ïs øvërrïðïñg æ mëthøð ïñ çlæss \"{çlæssÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "paramAfterKwargsParam": "[wJZkp][นั้Pæræmëtër çæññøt følløw \"**\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "paramAlreadyAssigned": "[srzhT][นั้Pæræmëtër \"{ñæmë}\" ïs ælrëæðÿ æssïgñëðẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "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ë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "paramSpecArgsKwargsUsage": "[oVRV0][นั้\"ærgs\" æñð \"kwærgs\" mëmþërs øf Pæræm§pëç mµst þøth æppëær wïthïñ æ fµñçtïøñ sïgñætµrëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "paramSpecArgsMissing": "[rd6zO][นั้Ærgµmëñts før Pæræm§pëç \"{tÿpë}\" ærë mïssïñgẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "paramSpecArgsUsage": "[2U9SN][นั้\"ærgs\" mëmþër øf Pæræm§pëç ïs vælïð øñlÿ whëñ µsëð wïth *ærgs pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "paramSpecAssignedName": "[ww5mM][นั้Pæræm§pëç mµst þë æssïgñëð tø æ værïæþlë ñæmëð \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "paramSpecContext": "[y6xyK][นั้Pæræm§pëç ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "paramSpecDefaultNotTuple": "[6Tdff][นั้Ëxpëçtëð ëllïpsïs, æ tµplë ëxprëssïøñ, ør Pæræm§pëç før ðëfæµlt vælµë øf Pæræm§pëçẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "paramSpecFirstArg": "[W2Y3X][นั้Ëxpëçtëð ñæmë øf Pæræm§pëç æs fïrst ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "paramSpecKwargsUsage": "[2UE71][นั้\"kwærgs\" mëmþër øf Pæræm§pëç ïs vælïð øñlÿ whëñ µsëð wïth **kwærgs pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "paramSpecNotBound": "[xnsuv][นั้Pæræm spëç \"{tÿpë}\" hæs ñø þøµñð vælµëẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "paramSpecNotUsedByOuterScope": "[5Pk7H][นั้Pæræm§pëç \"{ñæmë}\" hæs ñø mëæñïñg ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "paramSpecScopedToReturnType": "[vVuXS][นั้Pæræm§pëç \"{ñæmë}\" ïs sçøpëð tø æ çællæþlë wïthïñ thë rëtµrñ tÿpë æñð çæññøt þë rëfërëñçëð ïñ thë fµñçtïøñ þøðÿẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "paramSpecUnknownArg": "[6zeYc][นั้Pæræm§pëç ðøës ñøt sµppørt mørë thæñ øñë ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "paramSpecUnknownMember": "[GhhiY][นั้\"{ñæmë}\" ïs ñøt æ kñøwñ mëmþër øf Pæræm§pëçẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "paramSpecUnknownParam": "[YADLo][นั้\"{ñæmë}\" ïs µñkñøwñ pæræmëtër tø Pæræm§pëçẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "paramTypeCovariant": "[USAuF][นั้Çøværïæñt tÿpë værïæþlë çæññøt þë µsëð ïñ pæræmëtër tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "paramTypePartiallyUnknown": "[1ShLP][นั้Tÿpë øf pæræmëtër \"{pæræmÑæmë}\" ïs pærtïællÿ µñkñøwñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "paramTypeUnknown": "[fweDh][นั้Tÿpë øf pæræmëtër \"{pæræmÑæmë}\" ïs µñkñøwñẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "parenthesizedContextManagerIllegal": "[NBxCb][นั้Pærëñthësës wïthïñ \"wïth\" stætëmëñt rëqµïrës Pÿthøñ 3.9 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "patternNeverMatches": "[lyG7p][นั้Pættërñ wïll ñëvër þë mætçhëð før sµþjëçt tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "positionArgAfterNamedArg": "[szCz2][นั้Pøsïtïøñæl ærgµmëñt çæññøt æppëær æftër këÿwørð ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "positionOnlyAfterArgs": "[Vqb7c][นั้Pøsïtïøñ-øñlÿ ærgµmëñt sëpærætør ñøt ælløwëð æftër \"*\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "positionOnlyAfterKeywordOnly": "[z1FIK][นั้\"/\" pæræmëtër mµst æppëær þëførë \"*\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "positionOnlyFirstParam": "[bmnbs][นั้Pøsïtïøñ-øñlÿ ærgµmëñt sëpærætør ñøt ælløwëð æs fïrst pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "positionOnlyIncompatible": "[Ick28][นั้Pøsïtïøñ-øñlÿ ærgµmëñt sëpærætør rëqµïrës Pÿthøñ 3.8 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "privateImportFromPyTypedModule": "[VRdf4][นั้\"{ñæmë}\" ïs ñøt ëxpørtëð frøm møðµlë \"{møðµlë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "privateUsedOutsideOfClass": "[3YBNL][นั้\"{ñæmë}\" ïs prïvætë æñð µsëð øµtsïðë øf thë çlæss ïñ whïçh ït ïs ðëçlærëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "privateUsedOutsideOfModule": "[TgDgt][นั้\"{ñæmë}\" ïs prïvætë æñð µsëð øµtsïðë øf thë møðµlë ïñ whïçh ït ïs ðëçlærëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "propertyOverridden": "[mwp5C][นั้\"{ñæmë}\" ïñçørrëçtlÿ øvërrïðës prøpërtÿ øf sæmë ñæmë ïñ çlæss \"{çlæssÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "propertyStaticMethod": "[qs3pr][นั้§tætïç mëthøðs ñøt ælløwëð før prøpërtÿ gëttër, sëttër ør ðëlëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "protectedUsedOutsideOfClass": "[z2Y7X][นั้\"{ñæmë}\" ïs prøtëçtëð æñð µsëð øµtsïðë øf thë çlæss ïñ whïçh ït ïs ðëçlærëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "protocolBaseClass": "[lv3rP][นั้Prøtøçøl çlæss \"{çlæssTÿpë}\" çæññøt ðërïvë frøm ñøñ-prøtøçøl çlæss \"{þæsëTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "protocolBaseClassWithTypeArgs": "[tpYEx][นั้Tÿpë ærgµmëñts ærë ñøt ælløwëð wïth Prøtøçøl çlæss whëñ µsïñg tÿpë pæræmëtër sÿñtæxẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "protocolIllegal": "[jYjYe][นั้Üsë øf \"Prøtøçøl\" rëqµïrës Pÿthøñ 3.7 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "protocolNotAllowedInTypeArgument": "[W1e5W][นั้\"Prøtøçøl\" çæññøt þë µsëð æs æ tÿpë ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "protocolUsedInCall": "[0gPFH][นั้Prøtøçøl çlæss çæññøt þë µsëð ïñ \"{ñæmë}\" çællẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "protocolVarianceContravariant": "[B4htZ][นั้Tÿpë værïæþlë \"{værïæþlë}\" µsëð ïñ gëñërïç prøtøçøl \"{çlæss}\" shøµlð þë çøñtræværïæñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "protocolVarianceCovariant": "[Hcnn5][นั้Tÿpë værïæþlë \"{værïæþlë}\" µsëð ïñ gëñërïç prøtøçøl \"{çlæss}\" shøµlð þë çøværïæñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "protocolVarianceInvariant": "[o8oB7][นั้Tÿpë værïæþlë \"{værïæþlë}\" µsëð ïñ gëñërïç prøtøçøl \"{çlæss}\" shøµlð þë ïñværïæñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "pyrightCommentInvalidDiagnosticBoolValue": "[eaJY0][นั้Pÿrïght çømmëñt ðïrëçtïvë mµst þë følløwëð þÿ \"=\" æñð æ vælµë øf trµë ør fælsëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "pyrightCommentInvalidDiagnosticSeverityValue": "[2YA7K][นั้Pÿrïght çømmëñt ðïrëçtïvë mµst þë følløwëð þÿ \"=\" æñð æ vælµë øf trµë, fælsë, ërrør, wærñïñg, ïñførmætïøñ, ør ñøñëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "pyrightCommentMissingDirective": "[yy6rB][นั้Pÿrïght çømmëñt mµst þë følløwëð þÿ æ ðïrëçtïvë (þæsïç ør strïçt) ør æ ðïægñøstïç rµlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "pyrightCommentNotOnOwnLine": "[mM2bV][นั้Pÿrïght çømmëñts µsëð tø çøñtrøl fïlë-lëvël sëttïñgs mµst æppëær øñ thëïr øwñ lïñëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "pyrightCommentUnknownDiagnosticRule": "[DFAZp][นั้\"{rµlë}\" ïs æñ µñkñøwñ ðïægñøstïç rµlë før pÿrïght çømmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "pyrightCommentUnknownDiagnosticSeverityValue": "[Tgt0Y][นั้\"{vælµë}\" ïs ïñvælïð vælµë før pÿrïght çømmëñt; ëxpëçtëð trµë, fælsë, ërrør, wærñïñg, ïñførmætïøñ, ør ñøñëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "pyrightCommentUnknownDirective": "[HD6T4][นั้\"{ðïrëçtïvë}\" ïs æñ µñkñøwñ ðïrëçtïvë før pÿrïght çømmëñt; ëxpëçtëð \"strïçt\" ør \"þæsïç\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "readOnlyArgCount": "[B1Erm][นั้Ëxpëçtëð æ sïñglë tÿpë ærgµmëñt æftër \"RëæðØñlÿ\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "readOnlyNotInTypedDict": "[xJrLN][นั้\"RëæðØñlÿ\" ïs ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "recursiveDefinition": "[G3UUN][นั้Tÿpë øf \"{ñæmë}\" çøµlð ñøt þë ðëtërmïñëð þëçæµsë ït rëfërs tø ïtsëlfẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "relativeImportNotAllowed": "[JZqjC][นั้Rëlætïvë ïmpørts çæññøt þë µsëð wïth \"ïmpørt .æ\" førm; µsë \"frøm . ïmpørt æ\" ïñstëæðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "requiredArgCount": "[aZX4z][นั้Ëxpëçtëð æ sïñglë tÿpë ærgµmëñt æftër \"Rëqµïrëð\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "requiredNotInTypedDict": "[TArW6][นั้\"Rëqµïrëð\" ïs ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "returnInAsyncGenerator": "[qb5pt][นั้Rëtµrñ stætëmëñt wïth vælµë ïs ñøt ælløwëð ïñ æsÿñç gëñërætørẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "returnMissing": "[kPevK][นั้Fµñçtïøñ wïth ðëçlærëð tÿpë øf \"{rëtµrñTÿpë}\" mµst rëtµrñ vælµë øñ æll çøðë pæthsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "returnOutsideFunction": "[O4SJp][นั้\"rëtµrñ\" çæñ þë µsëð øñlÿ wïthïñ æ fµñçtïøñẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "returnTypeContravariant": "[KkMhh][นั้Çøñtræværïæñt tÿpë værïæþlë çæññøt þë µsëð ïñ rëtµrñ tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "returnTypeMismatch": "[QYqHy][นั้Ëxprëssïøñ øf tÿpë \"{ëxprTÿpë}\" çæññøt þë æssïgñëð tø rëtµrñ tÿpë \"{rëtµrñTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "returnTypePartiallyUnknown": "[261DZ][นั้Rëtµrñ tÿpë, \"{rëtµrñTÿpë}\", ïs pærtïællÿ µñkñøwñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "returnTypeUnknown": "[II3Ix][นั้Rëtµrñ tÿpë ïs µñkñøwñẤğ倪İЂҰक्र्นั้ढूँ]", + "revealLocalsArgs": "[qKEIL][นั้Ëxpëçtëð ñø ærgµmëñts før \"rëvëæl_løçæls\" çællẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "revealLocalsNone": "[xOTfI][นั้Ñø løçæls ïñ thïs sçøpëẤğ倪İЂҰक्र्นั้ढूँ]", + "revealTypeArgs": "[Sdo9V][นั้Ëxpëçtëð æ sïñglë pøsïtïøñæl ærgµmëñt før \"rëvëæl_tÿpë\" çællẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "revealTypeExpectedTextArg": "[6cFBk][นั้Thë \"ëxpëçtëð_tëxt\" ærgµmëñt før fµñçtïøñ \"rëvëæl_tÿpë\" mµst þë æ str lïtëræl vælµëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "revealTypeExpectedTextMismatch": "[ILnEV][นั้Tÿpë tëxt mïsmætçh; ëxpëçtëð \"{ëxpëçtëð}\" þµt rëçëïvëð \"{rëçëïvëð}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "revealTypeExpectedTypeMismatch": "[3XS8T][นั้Tÿpë mïsmætçh; ëxpëçtëð \"{ëxpëçtëð}\" þµt rëçëïvëð \"{rëçëïvëð}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "selfTypeContext": "[Hugyy][นั้\"§ëlf\" ïs ñøt vælïð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "selfTypeWithTypedSelfOrCls": "[sYgyY][นั้\"§ëlf\" çæññøt þë µsëð ïñ æ fµñçtïøñ wïth æ `sëlf` ør `çls` pæræmëtër thæt hæs æ tÿpë æññøtætïøñ øthër thæñ \"§ëlf\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "setterGetterTypeMismatch": "[8ZD1z][นั้Prøpërtÿ sëttër vælµë tÿpë ïs ñøt æssïgñæþlë tø thë gëttër rëtµrñ tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "singleOverload": "[YQVUc][นั้\"{ñæmë}\" ïs mærkëð æs øvërløæð, þµt æððïtïøñæl øvërløæðs ærë mïssïñgẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "slotsAttributeError": "[OF4rK][นั้\"{ñæmë}\" ïs ñøt spëçïfïëð ïñ __sløts__Ấğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "slotsClassVarConflict": "[tcS3q][นั้\"{ñæmë}\" çøñflïçts wïth ïñstæñçë værïæþlë ðëçlærëð ïñ __sløts__Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "starPatternInAsPattern": "[ZFdWe][นั้§tær pættërñ çæññøt þë µsëð wïth \"æs\" tærgëtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "starPatternInOrPattern": "[y9LX3][นั้§tær pættërñ çæññøt þë ØRëð wïthïñ øthër pættërñsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "starStarWildcardNotAllowed": "[Ll1UV][นั้** çæññøt þë µsëð wïth wïlðçærð \"_\"Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", + "staticClsSelfParam": "[mO4QU][นั้§tætïç mëthøðs shøµlð ñøt tækë æ \"sëlf\" ør \"çls\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "stdlibModuleOverridden": "[AV6K3][นั้\"{pæth}\" ïs øvërrïðïñg thë stðlïþ møðµlë \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "strictTypeGuardReturnType": "[Kn87D][นั้Rëtµrñ tÿpë øf §trïçtTÿpëGµærð (\"{rëtµrñTÿpë}\") ïs ñøt æssïgñæþlë tø vælµë pæræmëtër tÿpë (\"{tÿpë}\")Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "stringNonAsciiBytes": "[dFNRn][นั้Ñøñ-ƧÇÏÏ çhæræçtër ñøt ælløwëð ïñ þÿtës strïñg lïtërælẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "stringNotSubscriptable": "[hKZT7][นั้§trïñg ëxprëssïøñ çæññøt þë sµþsçrïptëð ïñ tÿpë æññøtætïøñ; ëñçløsë ëñtïrë æññøtætïøñ ïñ qµøtësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "stringUnsupportedEscape": "[K2WsY][นั้Üñsµppørtëð ësçæpë sëqµëñçë ïñ strïñg lïtërælẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "stringUnterminated": "[jUKYA][นั้§trïñg lïtëræl ïs µñtërmïñætëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "stubFileMissing": "[Ua5GT][นั้§tµþ fïlë ñøt føµñð før \"{ïmpørtÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "stubUsesGetAttr": "[KMBwK][นั้Tÿpë stµþ fïlë ïs ïñçømplëtë; \"__gëtættr__\" øþsçµrës tÿpë ërrørs før møðµlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "sublistParamsIncompatible": "[582LE][นั้§µþlïst pæræmëtërs ærë ñøt sµppørtëð ïñ Pÿthøñ 3.xẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "superCallArgCount": "[iLYq6][นั้Ëxpëçtëð ñø mørë thæñ twø ærgµmëñts tø \"sµpër\" çællẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "superCallFirstArg": "[HSEvD][นั้Ëxpëçtëð çlæss tÿpë æs fïrst ærgµmëñt tø \"sµpër\" çæll þµt rëçëïvëð \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "superCallSecondArg": "[dKoHi][นั้§ëçøñð ærgµmëñt tø \"sµpër\" çæll mµst þë øþjëçt ør çlæss thæt ðërïvës frøm \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "superCallZeroArgForm": "[0XO27][นั้Zërø-ærgµmëñt førm øf \"sµpër\" çæll ïs vælïð øñlÿ wïthïñ æ çlæssẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "symbolIsPossiblyUnbound": "[cUgue][นั้\"{ñæmë}\" ïs pøssïþlÿ µñþøµñðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "symbolIsUnbound": "[zhGl5][นั้\"{ñæmë}\" ïs µñþøµñðẤğ倪İЂҰक्นั้ढूँ]", + "symbolIsUndefined": "[qCm6F][นั้\"{ñæmë}\" ïs ñøt ðëfïñëðẤğ倪İЂҰक्र्นั้ढूँ]", + "symbolOverridden": "[JwRrv][นั้\"{ñæmë}\" øvërrïðës sÿmþøl øf sæmë ñæmë ïñ çlæss \"{çlæssÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "totalOrderingMissingMethod": "[eYfjn][นั้Çlæss mµst ðëfïñë øñë øf \"__lt__\", \"__lë__\", \"__gt__\", ør \"__gë__\" tø µsë tøtæl_ørðërïñgẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "trailingCommaInFromImport": "[NcaZY][นั้Træïlïñg çømmæ ñøt ælløwëð wïthøµt sµrrøµñðïñg pærëñthësësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "tryWithoutExcept": "[6z9oA][นั้Trÿ stætëmëñt mµst hævë æt lëæst øñë ëxçëpt ør fïñællÿ çlæµsëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "tupleAssignmentMismatch": "[xySRW][นั้Ëxprëssïøñ wïth tÿpë \"{tÿpë}\" çæññøt þë æssïgñëð tø tærgët tµplëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "tupleInAnnotation": "[j2RAZ][นั้Tµplë ëxprëssïøñ ñøt ælløwëð ïñ tÿpë æññøtætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "tupleIndexOutOfRange": "[aNqDv][นั้Ïñðëx {ïñðëx} ïs øµt øf ræñgë før tÿpë {tÿpë}Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeAliasIllegalExpressionForm": "[4u4ay][นั้Ïñvælïð ëxprëssïøñ førm før tÿpë ælïæs ðëfïñïtïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeAliasIsRecursiveDirect": "[r8PyZ][นั้Tÿpë ælïæs \"{ñæmë}\" çæññøt µsë ïtsëlf ïñ ïts ðëfïñïtïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeAliasNotInModuleOrClass": "[iQpDJ][นั้Æ TÿpëÆlïæs çæñ þë ðëfïñëð øñlÿ wïthïñ æ møðµlë ør çlæss sçøpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeAliasRedeclared": "[P036x][นั้\"{ñæmë}\" ïs ðëçlærëð æs æ TÿpëÆlïæs æñð çæñ þë æssïgñëð øñlÿ øñçëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeAliasStatementIllegal": "[2EW0Q][นั้Tÿpë ælïæs stætëmëñt rëqµïrës Pÿthøñ 3.12 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeAliasTypeMustBeAssigned": "[aV4Nn][นั้TÿpëÆlïæsTÿpë mµst þë æssïgñëð tø æ værïæþlë wïth thë sæmë ñæmë æs thë tÿpë ælïæsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeAliasTypeNameArg": "[dUUf1][นั้Fïrst ærgµmëñt tø TÿpëÆlïæsTÿpë mµst þë æ strïñg lïtëræl rëprësëñtïñg thë ñæmë øf thë tÿpë ælïæsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typeAliasTypeNameMismatch": "[jW1bQ][นั้Ñæmë øf tÿpë ælïæs mµst mætçh thë ñæmë øf thë værïæþlë tø whïçh ït ïs æssïgñëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "typeAliasTypeParamInvalid": "[RdHRE][นั้Tÿpë pæræmëtër lïst mµst þë æ tµplë çøñtæïñïñg øñlÿ TÿpëVær, TÿpëVærTµplë, ør Pæræm§pëçẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeAnnotationCall": "[7pNts][นั้Ïllëgæl tÿpë æññøtætïøñ: çæll ëxprëssïøñ ñøt ælløwëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeAnnotationVariable": "[GeXWQ][นั้Ïllëgæl tÿpë æññøtætïøñ: værïæþlë ñøt ælløwëð µñlëss ït ïs æ tÿpë ælïæsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typeArgListExpected": "[2efoA][นั้Ëxpëçtëð Pæræm§pëç, ëllïpsïs, ør lïst øf tÿpësẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeArgListNotAllowed": "[oV7JF][นั้£ïst ëxprëssïøñ ñøt ælløwëð før thïs tÿpë ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeArgsExpectingNone": "[faycH][นั้Ëxpëçtëð ñø tÿpë ærgµmëñts før çlæss \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeArgsMismatchOne": "[BBe1n][นั้Ëxpëçtëð øñë tÿpë ærgµmëñt þµt rëçëïvëð {rëçëïvëð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeArgsMissingForAlias": "[hk8aw][นั้Ëxpëçtëð tÿpë ærgµmëñts før gëñërïç tÿpë ælïæs \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeArgsMissingForClass": "[SkdfG][นั้Ëxpëçtëð tÿpë ærgµmëñts før gëñërïç çlæss \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeArgsTooFew": "[6PAb0][นั้Tøø fëw tÿpë ærgµmëñts prøvïðëð før \"{ñæmë}\"; ëxpëçtëð {ëxpëçtëð} þµt rëçëïvëð {rëçëïvëð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeArgsTooMany": "[NKF2Z][นั้Tøø mæñÿ tÿpë ærgµmëñts prøvïðëð før \"{ñæmë}\"; ëxpëçtëð {ëxpëçtëð} þµt rëçëïvëð {rëçëïvëð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeAssignmentMismatch": "[wwjSP][นั้Ëxprëssïøñ øf tÿpë \"{søµrçëTÿpë}\" çæññøt þë æssïgñëð tø ðëçlærëð tÿpë \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "typeCallNotAllowed": "[OGMmG][นั้tÿpë() çæll shøµlð ñøt þë µsëð ïñ tÿpë æññøtætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeCommentDeprecated": "[SRhVz][นั้Üsë øf tÿpë çømmëñts ïs ðëprëçætëð; µsë tÿpë æññøtætïøñ ïñstëæðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeExpectedClass": "[r0pdu][นั้Ëxpëçtëð tÿpë ëxprëssïøñ þµt rëçëïvëð \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeGuardArgCount": "[Zl47K][นั้Ëxpëçtëð æ sïñglë tÿpë ærgµmëñt æftër \"TÿpëGµærð\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeGuardParamCount": "[I3HUH][นั้Üsër-ðëfïñëð tÿpë gµærð fµñçtïøñs æñð mëthøðs mµst hævë æt lëæst øñë ïñpµt pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeNotAwaitable": "[NZ9Yu][นั้\"{tÿpë}\" ïs ñøt æwæïtæþlëẤğ倪İЂҰक्र्นั้ढूँ]", + "typeNotCallable": "[XcJFm][นั้\"{ëxprëssïøñ}\" hæs tÿpë \"{tÿpë}\" æñð ïs ñøt çællæþlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeNotIntantiable": "[f3xEe][นั้\"{tÿpë}\" çæññøt þë ïñstæñtïætëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeNotIterable": "[XMDzF][นั้\"{tÿpë}\" ïs ñøt ïtëræþlëẤğ倪İЂҰक्र्นั้ढूँ]", + "typeNotSpecializable": "[ZCsyD][นั้Çøµlð ñøt spëçïælïzë tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typeNotSubscriptable": "[fpefi][นั้Øþjëçt øf tÿpë \"{tÿpë}\" ïs ñøt sµþsçrïptæþlëẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeNotSupportBinaryOperator": "[C0OGX][นั้Øpërætør \"{øpërætør}\" ñøt sµppørtëð før tÿpës \"{lëftTÿpë}\" æñð \"{rïghtTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typeNotSupportBinaryOperatorBidirectional": "[25nah][นั้Øpërætør \"{øpërætør}\" ñøt sµppørtëð før tÿpës \"{lëftTÿpë}\" æñð \"{rïghtTÿpë}\" whëñ ëxpëçtëð tÿpë ïs \"{ëxpëçtëðTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeNotSupportUnaryOperator": "[f2pEG][นั้Øpërætør \"{øpërætør}\" ñøt sµppørtëð før tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeNotSupportUnaryOperatorBidirectional": "[Z51QN][นั้Øpërætør \"{øpërætør}\" ñøt sµppørtëð før tÿpë \"{tÿpë}\" whëñ ëxpëçtëð tÿpë ïs \"{ëxpëçtëðTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typeNotUsableWith": "[R7VpZ][นั้Øþjëçt øf tÿpë \"{tÿpë}\" çæññøt þë µsëð wïth \"wïth\" þëçæµsë ït ðøës ñøt ïmplëmëñt {mëthøð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeParameterBoundNotAllowed": "[iA0kz][นั้ßøµñð ør çøñstræïñt çæññøt þë µsëð wïth æ værïæðïç tÿpë pæræmëtër ør Pæræm§pëçẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "typeParameterConstraintTuple": "[8wa57][นั้Tÿpë pæræmëtër çøñstræïñt mµst þë æ tµplë øf twø ør mørë tÿpësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeParameterExistingTypeParameter": "[M2QXP][นั้Tÿpë pæræmëtër \"{ñæmë}\" ïs ælrëæðÿ ïñ µsëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typeParameterNotDeclared": "[WD9B6][นั้Tÿpë pæræmëtër \"{ñæmë}\" ïs ñøt ïñçlµðëð ïñ thë tÿpë pæræmëtër lïst før \"{çøñtæïñër}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeParametersMissing": "[7nPE2][นั้Æt lëæst øñë tÿpë pæræmëtër mµst þë spëçïfïëðẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typePartiallyUnknown": "[K72xm][นั้Tÿpë øf \"{ñæmë}\" ïs pærtïællÿ µñkñøwñẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "typeUnknown": "[flab2][นั้Tÿpë øf \"{ñæmë}\" ïs µñkñøwñẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeVarAssignedName": "[AnBke][นั้TÿpëVær mµst þë æssïgñëð tø æ værïæþlë ñæmëð \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeVarAssignmentMismatch": "[IYCuH][นั้Tÿpë \"{tÿpë}\" çæññøt þë æssïgñëð tø tÿpë værïæþlë \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typeVarBoundAndConstrained": "[nSFES][นั้TÿpëVær çæññøt þë þøth þøµñð æñð çøñstræïñëðẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeVarBoundGeneric": "[scFkM][นั้TÿpëVær þøµñð tÿpë çæññøt þë gëñërïçẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typeVarConstraintGeneric": "[k7N05][นั้TÿpëVær çøñstræïñt tÿpë çæññøt þë gëñërïçẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typeVarDefaultBoundMismatch": "[knxtI][นั้TÿpëVær ðëfæµlt tÿpë mµst þë æ sµþtÿpë øf thë þøµñð tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeVarDefaultConstraintMismatch": "[BlQvu][นั้TÿpëVær ðëfæµlt tÿpë mµst þë øñë øf thë çøñstræïñëð tÿpësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typeVarDefaultIllegal": "[Z5lrX][นั้Tÿpë værïæþlë ðëfæµlt tÿpës rëqµïrë Pÿthøñ 3.13 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeVarDefaultInvalidTypeVar": "[bOQ21][นั้Tÿpë pæræmëtër \"{ñæmë}\" hæs æ ðëfæµlt tÿpë thæt rëfërs tø øñë ør mørë tÿpë værïæþlës thæt ærë øµt øf sçøpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typeVarFirstArg": "[XBVgA][นั้Ëxpëçtëð ñæmë øf TÿpëVær æs fïrst ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "typeVarNoMember": "[Trelb][นั้TÿpëVær \"{tÿpë}\" hæs ñø mëmþër \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typeVarNotSubscriptable": "[3KoEm][นั้TÿpëVær \"{tÿpë}\" ïs ñøt sµþsçrïptæþlëẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "typeVarNotUsedByOuterScope": "[on7uQ][นั้Tÿpë værïæþlë \"{ñæmë}\" hæs ñø mëæñïñg ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeVarPossiblyUnsolvable": "[PP5xz][นั้Tÿpë værïæþlë \"{ñæmë}\" mæÿ gø µñsølvëð ïf çællër sµpplïës ñø ærgµmëñt før pæræmëtër \"{pæræm}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typeVarScopedToReturnType": "[AYNcY][นั้Tÿpë værïæþlë \"{ñæmë}\" ïs sçøpëð tø æ çællæþlë wïthïñ thë rëtµrñ tÿpë æñð çæññøt þë rëfërëñçëð ïñ thë fµñçtïøñ þøðÿẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeVarSingleConstraint": "[51MwX][นั้TÿpëVær mµst hævë æt lëæst twø çøñstræïñëð tÿpësẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "typeVarTupleContext": "[Q8vE2][นั้TÿpëVærTµplë ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typeVarTupleDefaultNotUnpacked": "[S2joz][นั้TÿpëVærTµplë ðëfæµlt tÿpë mµst þë æñ µñpæçkëð tµplë ør TÿpëVærTµplëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeVarTupleMustBeUnpacked": "[TA5HX][นั้Üñpæçk øpërætør ïs rëqµïrëð før TÿpëVærTµplë vælµëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeVarTupleUnknownParam": "[fOW23][นั้\"{ñæmë}\" ïs µñkñøwñ pæræmëtër tø TÿpëVærTµplëẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeVarUnknownParam": "[veXvU][นั้\"{ñæmë}\" ïs µñkñøwñ pæræmëtër tø TÿpëVærẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typeVarUsedByOuterScope": "[GJ5N3][นั้TÿpëVær \"{ñæmë}\" ïs ælrëæðÿ ïñ µsë þÿ æñ øµtër sçøpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeVarUsedOnlyOnce": "[vSn0W][นั้TÿpëVær \"{ñæmë}\" æppëærs øñlÿ øñçë ïñ gëñërïç fµñçtïøñ sïgñætµrëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeVarVariance": "[1Dxdn][นั้TÿpëVær çæññøt þë þøth çøværïæñt æñð çøñtræværïæñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeVarWithoutDefault": "[w630R][นั้\"{ñæmë}\" çæññøt æppëær æftër \"{øthër}\" ïñ tÿpë pæræmëtër lïst þëçæµsë ït hæs ñø ðëfæµlt tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typeVarsNotInGenericOrProtocol": "[ydmAV][นั้Gëñërïç[] ør Prøtøçøl[] mµst ïñçlµðë æll tÿpë værïæþlësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typedDictAccess": "[55CCf][นั้Çøµlð ñøt æççëss ïtëm ïñ TÿpëðÐïçtẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typedDictBadVar": "[OL8Ox][นั้TÿpëðÐïçt çlæssës çæñ çøñtæïñ øñlÿ tÿpë æññøtætïøñsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typedDictBaseClass": "[HxyA2][นั้Æll þæsë çlæssës før TÿpëðÐïçt çlæssës mµst ælsø þë TÿpëðÐïçt çlæssësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typedDictBoolParam": "[GALOD][นั้Ëxpëçtëð \"{ñæmë}\" pæræmëtër tø hævë æ vælµë øf Trµë ør FælsëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typedDictDelete": "[bdBu7][นั้Çøµlð ñøt ðëlëtë ïtëm ïñ TÿpëðÐïçtẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typedDictEmptyName": "[h45e7][นั้Ñæmës wïthïñ æ TÿpëðÐïçt çæññøt þë ëmptÿẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typedDictEntryName": "[NT4np][นั้Ëxpëçtëð strïñg lïtëræl før ðïçtïøñærÿ ëñtrÿ ñæmëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typedDictEntryUnique": "[nWy0L][นั้Ñæmës wïthïñ æ ðïçtïøñærÿ mµst þë µñïqµëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typedDictExtraArgs": "[0gX32][นั้Ëxtræ TÿpëðÐïçt ærgµmëñts ñøt sµppørtëðẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typedDictFieldReadOnlyRedefinition": "[8IFAz][นั้TÿpëðÐïçt fïëlð \"{ñæmë}\" çæññøt þë rëðëfïñëð æs rëæð-øñlÿẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typedDictFieldTypeRedefinition": "[mH6k6][นั้Tÿpë øf TÿpëðÐïçt fïëlð \"{ñæmë}\" çæññøt þë rëðëfïñëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typedDictFirstArg": "[OPlNk][นั้Ëxpëçtëð TÿpëðÐïçt çlæss ñæmë æs fïrst ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "typedDictSecondArgDict": "[mwrv7][นั้Ëxpëçtëð ðïçt ør këÿwørð pæræmëtër æs sëçøñð pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typedDictSecondArgDictEntry": "[oAT5Z][นั้Ëxpëçtëð sïmplë ðïçtïøñærÿ ëñtrÿẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typedDictSet": "[30hTC][นั้Çøµlð ñøt æssïgñ ïtëm ïñ TÿpëðÐïçtẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "unaccessedClass": "[dou8i][นั้Çlæss \"{ñæmë}\" ïs ñøt æççëssëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "unaccessedFunction": "[AdgDz][นั้Fµñçtïøñ \"{ñæmë}\" ïs ñøt æççëssëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "unaccessedImport": "[2a90g][นั้Ïmpørt \"{ñæmë}\" ïs ñøt æççëssëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "unaccessedSymbol": "[MmnM7][นั้\"{ñæmë}\" ïs ñøt æççëssëðẤğ倪İЂҰक्र्นั้ढूँ]", + "unaccessedVariable": "[n5l1e][นั้Værïæþlë \"{ñæmë}\" ïs ñøt æççëssëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "unannotatedFunctionSkipped": "[Ovgyl][นั้Æñælÿsïs øf fµñçtïøñ \"{ñæmë}\" ïs skïppëð þëçæµsë ït ïs µñæññøtætëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "unexpectedAsyncToken": "[fKSJb][นั้Ëxpëçtëð \"ðëf\", \"wïth\" ør \"før\" tø følløw \"æsÿñç\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "unexpectedExprToken": "[MtBsu][นั้Üñëxpëçtëð tøkëñ æt ëñð øf ëxprëssïøñẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "unexpectedIndent": "[uZUVS][นั้Üñëxpëçtëð ïñðëñtætïøñẤğ倪İЂҰक्र्นั้ढूँ]", + "unexpectedUnindent": "[yqwy4][นั้Üñïñðëñt ñøt ëxpëçtëðẤğ倪İЂҰक्นั้ढूँ]", + "unhashableDictKey": "[pIvHj][นั้Ðïçtïøñærÿ këÿ mµst þë hæshæþlëẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "unhashableSetEntry": "[rWf72][นั้§ët ëñtrÿ mµst þë hæshæþlëẤğ倪İЂҰक्र्นั้ढूँ]", + "uninitializedAbstractVariables": "[SpCPH][นั้Værïæþlës ðëfïñëð ïñ æþstræçt þæsë çlæss ærë ñøt ïñïtïælïzëð ïñ fïñæl çlæss \"{çlæssTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "uninitializedInstanceVariable": "[5pgFw][นั้Ïñstæñçë værïæþlë \"{ñæmë}\" ïs ñøt ïñïtïælïzëð ïñ thë çlæss þøðÿ ør __ïñït__ mëthøðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "unionForwardReferenceNotAllowed": "[MOLby][นั้Üñïøñ sÿñtæx çæññøt þë µsëð wïth strïñg øpëræñð; µsë qµøtës ærøµñð ëñtïrë ëxprëssïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "unionSyntaxIllegal": "[vbTDG][นั้Æltërñætïvë sÿñtæx før µñïøñs rëqµïrës Pÿthøñ 3.10 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "unionTypeArgCount": "[vc6vA][นั้Üñïøñ rëqµïrës twø ør mørë tÿpë ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "unmatchedEndregionComment": "[Fi24x][นั้#ëñðrëgïøñ ïs mïssïñg çørrëspøñðïñg #rëgïøñẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "unmatchedRegionComment": "[5D1GO][นั้#rëgïøñ ïs mïssïñg çørrëspøñðïñg #ëñðrëgïøñẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "unnecessaryCast": "[QgPoI][นั้Üññëçëssærÿ \"çæst\" çæll; tÿpë ïs ælrëæðÿ \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "unnecessaryIsInstanceAlways": "[gX4s7][นั้Üññëçëssærÿ ïsïñstæñçë çæll; \"{tëstTÿpë}\" ïs ælwæÿs æñ ïñstæñçë øf \"{çlæssTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "unnecessaryIsSubclassAlways": "[BzHtx][นั้Üññëçëssærÿ ïssµþçlæss çæll; \"{tëstTÿpë}\" ïs ælwæÿs æ sµþçlæss øf \"{çlæssTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "unnecessaryPyrightIgnore": "[7QhdX][นั้Üññëçëssærÿ \"# pÿrïght: ïgñørë\" çømmëñtẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "unnecessaryPyrightIgnoreRule": "[0ESoQ][นั้Üññëçëssærÿ \"# pÿrïght: ïgñørë\" rµlë: \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "unnecessaryTypeIgnore": "[IoWr9][นั้Üññëçëssærÿ \"# tÿpë: ïgñørë\" çømmëñtẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "unpackArgCount": "[bkAT1][นั้Ëxpëçtëð æ sïñglë tÿpë ærgµmëñt æftër \"Üñpæçk\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "unpackExpectedTypeVarTuple": "[CWX8o][นั้Ëxpëçtëð TÿpëVærTµplë ør Tµplë æs tÿpë ærgµmëñt før ÜñpæçkẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "unpackExpectedTypedDict": "[ha9qw][นั้Ëxpëçtëð TÿpëðÐïçt tÿpë ærgµmëñt før ÜñpæçkẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "unpackIllegalInComprehension": "[7a4pV][นั้Üñpæçk øpërætïøñ ñøt ælløwëð ïñ çømprëhëñsïøñẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "unpackInAnnotation": "[6gqFu][นั้Üñpæçk øpërætør ñøt ælløwëð ïñ tÿpë æññøtætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "unpackInDict": "[eKn69][นั้Üñpæçk øpërætïøñ ñøt ælløwëð ïñ ðïçtïøñærïësẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "unpackInSet": "[lKyO0][นั้Üñpæçk øpërætør ñøt ælløwëð wïthïñ æ sëtẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "unpackNotAllowed": "[MZq6e][นั้Üñpæçk ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "unpackOperatorNotAllowed": "[lMq2B][นั้Üñpæçk øpërætïøñ ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "unpackTuplesIllegal": "[RJvzW][นั้Üñpæçk øpërætïøñ ñøt ælløwëð ïñ tµplës prïør tø Pÿthøñ 3.8Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "unpackedArgInTypeArgument": "[skxlo][นั้Üñpæçkëð ærgµmëñts çæññøt þë µsëð ïñ tÿpë ærgµmëñt lïstsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "unpackedArgWithVariadicParam": "[ZP3kP][นั้Üñpæçkëð ærgµmëñt çæññøt þë µsëð før TÿpëVærTµplë pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "unpackedDictArgumentNotMapping": "[iSTnU][นั้Ærgµmëñt ëxprëssïøñ æftër ** mµst þë æ mæppïñg wïth æ \"str\" këÿ tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "unpackedDictSubscriptIllegal": "[slATr][นั้Ðïçtïøñærÿ µñpæçk øpërætør ïñ sµþsçrïpt ïs ñøt ælløwëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "unpackedSubscriptIllegal": "[2CpZz][นั้Üñpæçk øpërætør ïñ sµþsçrïpt rëqµïrës Pÿthøñ 3.11 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "unpackedTypeVarTupleExpected": "[tgdHs][นั้Ëxpëçtëð µñpæçkëð TÿpëVærTµplë; µsë Üñpæçk[{ñæmë1}] ør *{ñæmë2}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "unpackedTypedDictArgument": "[iCgjR][นั้Üñæþlë tø mætçh µñpæçkëð TÿpëðÐïçt ærgµmëñt tø pæræmëtërsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "unreachableCode": "[bpJSK][นั้Çøðë ïs µñrëæçhæþlëẤğ倪İЂҰक्นั้ढूँ]", + "unreachableExcept": "[zFMWg][นั้Ëxçëpt çlæµsë ïs µñrëæçhæþlë þëçæµsë ëxçëptïøñ ïs ælrëæðÿ hæñðlëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "unsupportedDunderAllOperation": "[KsX0f][นั้Øpërætïøñ øñ \"__æll__\" ïs ñøt sµppørtëð, sø ëxpørtëð sÿmþøl lïst mæÿ þë ïñçørrëçtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "unusedCallResult": "[9IsV5][นั้Rësµlt øf çæll ëxprëssïøñ ïs øf tÿpë \"{tÿpë}\" æñð ïs ñøt µsëð; æssïgñ tø værïæþlë \"_\" ïf thïs ïs ïñtëñtïøñælẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "unusedCoroutine": "[nQUJ2][นั้Rësµlt øf æsÿñç fµñçtïøñ çæll ïs ñøt µsëð; µsë \"æwæït\" ør æssïgñ rësµlt tø værïæþlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "unusedExpression": "[ghmaU][นั้Ëxprëssïøñ vælµë ïs µñµsëðẤğ倪İЂҰक्र्นั้ढूँ]", + "varAnnotationIllegal": "[v2cs9][นั้Tÿpë æññøtætïøñs før værïæþlës rëqµïrës Pÿthøñ 3.6 ør ñëwër; µsë tÿpë çømmëñt før çømpætïþïlïtÿ wïth prëvïøµs vërsïøñsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "variableFinalOverride": "[LcrNS][นั้Værïæþlë \"{ñæmë}\" ïs mærkëð Fïñæl æñð øvërrïðës ñøñ-Fïñæl værïæþlë øf sæmë ñæmë ïñ çlæss \"{çlæssÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "variadicTypeArgsTooMany": "[1QX0D][นั้Tÿpë ærgµmëñt lïst çæñ hævë æt møst øñë µñpæçkëð TÿpëVærTµplë ør TµplëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "variadicTypeParamTooManyAlias": "[43VIR][นั้Tÿpë ælïæs çæñ hævë æt møst øñë TÿpëVærTµplë tÿpë pæræmëtër þµt rëçëïvëð mµltïplë ({ñæmës})Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "variadicTypeParamTooManyClass": "[fboqC][นั้Gëñërïç çlæss çæñ hævë æt møst øñë TÿpëVærTµplë tÿpë pæræmëtër þµt rëçëïvëð mµltïplë ({ñæmës})Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "walrusIllegal": "[iR3y3][นั้Øpërætør \":=\" rëqµïrës Pÿthøñ 3.8 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "walrusNotAllowed": "[kdD5j][นั้Øpërætør \":=\" ñøt ælløwëð ïñ thïs çøñtëxt wïthøµt sµrrøµñðïñg pærëñthësësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "wildcardInFunction": "[NyGOv][นั้Wïlðçærð ïmpørt ñøt ælløwëð wïthïñ æ çlæss ør fµñçtïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "wildcardLibraryImport": "[Yk3ai][นั้Wïlðçærð ïmpørt frøm æ lïþrærÿ ñøt ælløwëðẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "wildcardPatternTypePartiallyUnknown": "[eRR5M][นั้Tÿpë çæptµrëð þÿ wïlðçærð pættërñ ïs pærtïællÿ µñkñøwñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "wildcardPatternTypeUnknown": "[Bo3gT][นั้Tÿpë çæptµrëð þÿ wïlðçærð pættërñ ïs µñkñøwñẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "yieldFromIllegal": "[DkXto][นั้Üsë øf \"ÿïëlð frøm\" rëqµïrës Pÿthøñ 3.3 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "yieldFromOutsideAsync": "[ZONEz][นั้\"ÿïëlð frøm\" ñøt ælløwëð ïñ æñ æsÿñç fµñçtïøñẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "yieldOutsideFunction": "[2lDBQ][นั้\"ÿïëlð\" ñøt ælløwëð øµtsïðë øf æ fµñçtïøñ ør læmþðæẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "yieldWithinListCompr": "[3Rv4s][นั้\"ÿïëlð\" ñøt ælløwëð ïñsïðë æ lïst çømprëhëñsïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "zeroCaseStatementsFound": "[ArU3j][นั้Mætçh stætëmëñt mµst ïñçlµðë æt lëæst øñë çæsë stætëmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "zeroLengthTupleNotAllowed": "[3gVpF][นั้Zërø-lëñgth tµplë ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]" + }, + "DiagnosticAddendum": { + "argParam": "[nmvvb][นั้Ærgµmëñt çørrëspøñðs tø pæræmëtër \"{pæræmÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "argParamFunction": "[7Xwg8][นั้Ærgµmëñt çørrëspøñðs tø pæræmëtër \"{pæræmÑæmë}\" ïñ fµñçtïøñ \"{fµñçtïøñÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "argsParamMissing": "[vg3b8][นั้Pæræmëtër \"*{pæræmÑæmë}\" hæs ñø çørrëspøñðïñg pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "argsPositionOnly": "[sNlU1][นั้Pøsïtïøñ-øñlÿ pæræmëtër mïsmætçh; ëxpëçtëð {ëxpëçtëð} þµt rëçëïvëð {rëçëïvëð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "argumentType": "[JJxeD][นั้Ærgµmëñt tÿpë ïs \"{tÿpë}\"Ấğ倪İЂҰक्र्นั้ढूँ]", + "argumentTypes": "[Omlwm][นั้Ærgµmëñt tÿpës: ({tÿpës})Ấğ倪İЂҰक्र्นั้ढूँ]", + "assignToNone": "[z249G][นั้Tÿpë çæññøt þë æssïgñëð tø tÿpë \"Ñøñë\"Ấğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "asyncHelp": "[2nasS][นั้Ðïð ÿøµ mëæñ \"æsÿñç wïth\"?Ấğ倪İЂҰक्र्นั้ढूँ]", + "baseClassOverriddenType": "[Hp8Sl][นั้ßæsë çlæss \"{þæsëÇlæss}\" prøvïðës tÿpë \"{tÿpë}\", whïçh ïs øvërrïððëñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "baseClassOverridesType": "[P7N4Y][นั้ßæsë çlæss \"{þæsëÇlæss}\" øvërrïðës wïth tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "conditionalRequiresBool": "[k1G9a][นั้Mëthøð __þøøl__ før tÿpë \"{øpëræñðTÿpë}\" rëtµrñs tÿpë \"{þøølRëtµrñTÿpë}\" ræthër thæñ \"þøøl\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "dataClassFieldLocation": "[vQxtf][นั้Fïëlð ðëçlærætïøñẤğ倪İЂҰक्นั้ढूँ]", + "dataClassFrozen": "[d4uiK][นั้\"{ñæmë}\" ïs frøzëñẤğ倪İЂҰक्นั้ढूँ]", + "finalMethod": "[zz1yN][นั้Fïñæl mëthøðẤğ倪İЂนั้ढूँ]", + "functionParamDefaultMissing": "[yWAIy][นั้Pæræmëtër \"{ñæmë}\" ïs mïssïñg ðëfæµlt ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "functionParamName": "[NrJqx][นั้Pæræmëtër ñæmë mïsmætçh: \"{ðëstÑæmë}\" vërsµs \"{srçÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "functionReturnTypeMismatch": "[x4qH0][นั้Fµñçtïøñ rëtµrñ tÿpë \"{søµrçëTÿpë}\" ïs ïñçømpætïþlë wïth tÿpë \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "functionTooFewParams": "[575uy][นั้Fµñçtïøñ æççëpts tøø fëw pøsïtïøñæl pæræmëtërs; ëxpëçtëð {ëxpëçtëð} þµt rëçëïvëð {rëçëïvëð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "functionTooManyParams": "[zj9vw][นั้Fµñçtïøñ æççëpts tøø mæñÿ pøsïtïøñæl pæræmëtërs; ëxpëçtëð {ëxpëçtëð} þµt rëçëïvëð {rëçëïvëð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "incompatibleDeleter": "[LCJuj][นั้Prøpërtÿ ðëlëtër mëthøð ïs ïñçømpætïþlëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "incompatibleGetter": "[yds2G][นั้Prøpërtÿ gëttër mëthøð ïs ïñçømpætïþlëẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "incompatibleSetter": "[GDoso][นั้Prøpërtÿ sëttër mëthøð ïs ïñçømpætïþlëẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "initMethodLocation": "[D4O2l][นั้Thë __ïñït__ mëthøð ïs ðëfïñëð ïñ çlæss \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "initMethodSignature": "[EULjB][นั้§ïgñætµrë øf __ïñït__ ïs \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "keyNotRequired": "[K1bDP][นั้\"{ñæmë}\" ïs ñøt æ rëqµïrëð këÿ ïñ \"{tÿpë}\", sø æççëss mæÿ rësµlt ïñ rµñtïmë ëxçëptïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "keyReadOnly": "[dhAH3][นั้\"{ñæmë}\" ïs æ rëæð-øñlÿ këÿ ïñ \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "keyRequiredDeleted": "[YeZa5][นั้\"{ñæmë}\" ïs æ rëqµïrëð këÿ æñð çæññøt þë ðëlëtëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "keyUndefined": "[6mQGu][นั้\"{ñæmë}\" ïs ñøt æ ðëfïñëð këÿ ïñ \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "kwargsParamMissing": "[KHgb2][นั้Pæræmëtër \"**{pæræmÑæmë}\" hæs ñø çørrëspøñðïñg pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "listAssignmentMismatch": "[fERKI][นั้Tÿpë \"{tÿpë}\" ïs ïñçømpætïþlë wïth tærgët lïstẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "literalAssignmentMismatch": "[17LiQ][นั้\"{søµrçëTÿpë}\" çæññøt þë æssïgñëð tø tÿpë \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "matchIsNotExhaustiveHint": "[3NR39][นั้Ïf ëxhæµstïvë hæñðlïñg ïs ñøt ïñtëñðëð, æðð \"çæsë _: pæss\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "matchIsNotExhaustiveType": "[9RN1P][นั้Üñhæñðlëð tÿpë: \"{tÿpë}\"Ấğ倪İЂҰक्र्นั้ढूँ]", + "memberAssignment": "[1WFCt][นั้Ëxprëssïøñ øf tÿpë \"{tÿpë}\" çæññøt þë æssïgñëð tø mëmþër \"{ñæmë}\" øf çlæss \"{çlæssTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "memberIsAbstract": "[l912U][นั้\"{tÿpë}.{ñæmë}\" ïs æþstræçtẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "memberIsAbstractMore": "[dgfwa][นั้æñð {çøµñt} mørë...Ấğ倪İЂҰक्นั้ढूँ]", + "memberIsFinalInProtocol": "[chVyJ][นั้\"{ñæmë}\" ïs mærkëð Fïñæl ïñ prøtøçølẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "memberIsInitVar": "[0SGIB][นั้Mëmþër \"{ñæmë}\" ïs æñ ïñït-øñlÿ fïëlðẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "memberIsInvariant": "[rBPX6][นั้\"{ñæmë}\" ïs ïñværïæñt þëçæµsë ït ïs mµtæþlëẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "memberIsNotFinalInProtocol": "[Mw2lB][นั้\"{ñæmë}\" ïs ñøt mærkëð Fïñæl ïñ prøtøçølẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "memberSetClassVar": "[2pVfQ][นั้Mëmþër \"{ñæmë}\" çæññøt þë æssïgñëð thrøµgh æ çlæss ïñstæñçë þëçæµsë ït ïs æ ÇlæssVærẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "memberTypeMismatch": "[IHN4x][นั้\"{ñæmë}\" ïs æñ ïñçømpætïþlë tÿpëẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "memberUnknown": "[7kDIF][นั้Mëmþër \"{ñæmë}\" ïs µñkñøwñẤğ倪İЂҰक्र्นั้ढूँ]", + "missingDeleter": "[5IVNI][นั้Prøpërtÿ ðëlëtër mëthøð ïs mïssïñgẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "missingGetter": "[Mzn4K][นั้Prøpërtÿ gëttër mëthøð ïs mïssïñgẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "missingProtocolMember": "[ZIqwL][นั้Mëmþër \"{ñæmë}\" ïs ðëçlærëð ïñ prøtøçøl çlæss \"{çlæssTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "missingSetter": "[goeIY][นั้Prøpërtÿ sëttër mëthøð ïs mïssïñgẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "namedParamMissingInDest": "[dc07X][นั้Këÿwørð pæræmëtër \"{ñæmë}\" ïs mïssïñg ïñ ðëstïñætïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "namedParamMissingInSource": "[N59fC][นั้Këÿwørð pæræmëtër \"{ñæmë}\" ïs mïssïñg ïñ søµrçëẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "namedParamTypeMismatch": "[9CAV6][นั้Këÿwørð pæræmëtër \"{ñæmë}\" øf tÿpë \"{søµrçëTÿpë}\" çæññøt þë æssïgñëð tø tÿpë \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "newMethodLocation": "[n0dxL][นั้Thë __ñëw__ mëthøð ïs ðëfïñëð ïñ çlæss \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "newMethodSignature": "[NeWKO][นั้§ïgñætµrë øf __ñëw__ ïs \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "noOverloadAssignable": "[FJ88c][นั้Ñø øvërløæðëð fµñçtïøñ mætçhës tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "orPatternMissingName": "[kgiPM][นั้Mïssïñg ñæmës: {ñæmë}Ấğ倪İЂҰक्นั้ढूँ]", + "overloadNotAssignable": "[BA2kK][นั้Øñë ør mørë øvërløæðs øf \"{ñæmë}\" ïs ñøt æssïgñæþlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "overloadSignature": "[NPzwf][นั้Øvërløæð sïgñætµrë ïs ðëfïñëð hërëẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "overloadWithImplementation": "[G5f4V][นั้Thë þøðÿ øf æ fµñçtïøñ øvërløæð shøµlð þë \"...\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "overriddenMethod": "[CcUB2][นั้Øvërrïððëñ mëthøðẤğ倪İЂҰक्นั้ढूँ]", + "overriddenSymbol": "[cvpXz][นั้Øvërrïððëñ sÿmþølẤğ倪İЂҰक्นั้ढूँ]", + "overrideNoOverloadMatches": "[vG14w][นั้Ñø øvërløæð sïgñætµrë ïñ øvërrïðë ïs çømpætïþlë wïth þæsë mëthøðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "overrideNotClassMethod": "[t5OaH][นั้ßæsë mëthøð ïs ðëçlærëð æs æ çlæssmëthøð þµt øvërrïðë ïs ñøtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "overrideNotInstanceMethod": "[e2Xo5][นั้ßæsë mëthøð ïs ðëçlærëð æs æñ ïñstæñçë mëthøð þµt øvërrïðë ïs ñøtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "overrideNotStaticMethod": "[Eu8Oy][นั้ßæsë mëthøð ïs ðëçlærëð æs æ stætïçmëthøð þµt øvërrïðë ïs ñøtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "overrideOverloadNoMatch": "[smVSW][นั้Øvërløæð {ïñðëx} ïs ñøt çømpætïþlë wïth þæsë mëthøðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "overrideOverloadOrder": "[HrUeN][นั้Øvërløæðs før øvërrïðë mëthøð mµst þë ïñ thë sæmë ørðër æs thë þæsë mëthøðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "overrideParamKeywordNoDefault": "[yIoa8][นั้Këÿwørð pæræmëtër \"{ñæmë}\" mïsmætçh: þæsë pæræmëtër hæs ðëfæµlt ærgµmëñt vælµë, øvërrïðë pæræmëtër ðøës ñøtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "overrideParamKeywordType": "[SAOAr][นั้Këÿwørð pæræmëtër \"{ñæmë}\" tÿpë mïsmætçh: þæsë pæræmëtër ïs tÿpë \"{þæsëTÿpë}\", øvërrïðë pæræmëtër ïs tÿpë \"{øvërrïðëTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "overrideParamName": "[fRWyy][นั้Pæræmëtër {ïñðëx} ñæmë mïsmætçh: þæsë pæræmëtër ïs ñæmëð \"{þæsëÑæmë}\", øvërrïðë pæræmëtër ïs ñæmëð \"{øvërrïðëÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "overrideParamNameExtra": "[HEG0d][นั้Pæræmëtër \"{ñæmë}\" ïs mïssïñg ïñ þæsëẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "overrideParamNameMissing": "[PN8Rl][นั้Pæræmëtër \"{ñæmë}\" ïs mïssïñg ïñ øvërrïðëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "overrideParamNamePositionOnly": "[3yVlj][นั้Pæræmëtër {ïñðëx} ñæmë mïsmætçh: þæsë pæræmëtër ïs ñæmëð \"{þæsëÑæmë}\", øvërrïðë pæræmëtër ïs pøsïtïøñ-øñlÿ\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "overrideParamNoDefault": "[azvZD][นั้Pæræmëtër {ïñðëx} mïsmætçh: þæsë pæræmëtër hæs ðëfæµlt ærgµmëñt vælµë, øvërrïðë pæræmëtër ðøës ñøtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "overrideParamType": "[FXBcO][นั้Pæræmëtër {ïñðëx} tÿpë mïsmætçh: þæsë pæræmëtër ïs tÿpë \"{þæsëTÿpë}\", øvërrïðë pæræmëtër ïs tÿpë \"{øvërrïðëTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "overridePositionalParamCount": "[jJZNP][นั้Pøsïtïøñæl pæræmëtër çøµñt mïsmætçh; þæsë mëthøð hæs {þæsëÇøµñt}, þµt øvërrïðë hæs {øvërrïðëÇøµñt}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "overrideReturnType": "[mdPwX][นั้Rëtµrñ tÿpë mïsmætçh: þæsë mëthøð rëtµrñs tÿpë \"{þæsëTÿpë}\", øvërrïðë rëtµrñs tÿpë \"{øvërrïðëTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "overrideType": "[ryAgb][นั้ßæsë çlæss ðëfïñës tÿpë æs \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", + "paramAssignment": "[HGg7D][นั้Pæræmëtër {ïñðëx}: tÿpë \"{søµrçëTÿpë}\" çæññøt þë æssïgñëð tø tÿpë \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "paramSpecMissingInOverride": "[AUge7][นั้Pæræm§pëç pæræmëtërs ærë mïssïñg ïñ øvërrïðë mëthøðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "paramType": "[hHLAX][นั้Pæræmëtër tÿpë ïs \"{pæræmTÿpë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "privateImportFromPyTypedSource": "[8gX6u][นั้Ïmpørt frøm \"{møðµlë}\" ïñstëæðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "propertyAccessFromProtocolClass": "[h75EJ][นั้Æ prøpërtÿ ðëfïñëð wïthïñ æ prøtøçøl çlæss çæññøt þë æççëssëð æs æ çlæss værïæþlëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "propertyMethodIncompatible": "[dWDwG][นั้Prøpërtÿ mëthøð \"{ñæmë}\" ïs ïñçømpætïþlëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "propertyMethodMissing": "[xWlRK][นั้Prøpërtÿ mëthøð \"{ñæmë}\" ïs mïssïñg ïñ øvërrïðëẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "propertyMissingDeleter": "[r2oGK][นั้Prøpërtÿ \"{ñæmë}\" hæs ñø ðëfïñëð ðëlëtërẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "propertyMissingSetter": "[Sr1R9][นั้Prøpërtÿ \"{ñæmë}\" hæs ñø ðëfïñëð sëttërẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "protocolIncompatible": "[4uTqc][นั้\"{søµrçëTÿpë}\" ïs ïñçømpætïþlë wïth prøtøçøl \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "protocolMemberClassVar": "[8CFai][นั้\"{ñæmë}\" ïs ñøt æ çlæss værïæþlëẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "protocolMemberMissing": "[Ad9PZ][นั้\"{ñæmë}\" ïs ñøt prësëñtẤğ倪İЂҰक्र्นั้ढूँ]", + "protocolSourceIsNotConcrete": "[DnLrN][นั้\"{søµrçëTÿpë}\" ïs ñøt æ çøñçrëtë çlæss tÿpë æñð çæññøt þë æssïgñëð tø tÿpë \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "pyrightCommentIgnoreTip": "[raFZN][นั้Üsë \"# pÿrïght: ïgñørë[<ðïægñøstïç rµlës>] tø sµpprëss ðïægñøstïçs før æ sïñglë lïñëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "readOnlyAttribute": "[k9waY][นั้Ættrïþµtë \"{ñæmë}\" ïs rëæð-øñlÿẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "seeClassDeclaration": "[8sx7n][นั้§ëë çlæss ðëçlærætïøñẤğ倪İЂҰक्นั้ढूँ]", + "seeDeclaration": "[K0X6p][นั้§ëë ðëçlærætïøñẤğ倪İЂҰนั้ढूँ]", + "seeFunctionDeclaration": "[1N6ig][นั้§ëë fµñçtïøñ ðëçlærætïøñẤğ倪İЂҰक्र्นั้ढूँ]", + "seeMethodDeclaration": "[eJSye][นั้§ëë mëthøð ðëçlærætïøñẤğ倪İЂҰक्र्นั้ढूँ]", + "seeParameterDeclaration": "[mBEpT][นั้§ëë pæræmëtër ðëçlærætïøñẤğ倪İЂҰक्र्นั้ढूँ]", + "seeTypeAliasDeclaration": "[Pjnb8][นั้§ëë tÿpë ælïæs ðëçlærætïøñẤğ倪İЂҰक्र्นั้ढूँ]", + "seeVariableDeclaration": "[M3EiY][นั้§ëë værïæþlë ðëçlærætïøñẤğ倪İЂҰक्र्นั้ढूँ]", + "tupleAssignmentMismatch": "[aLGep][นั้Tÿpë \"{tÿpë}\" ïs ïñçømpætïþlë wïth tærgët tµplëẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "tupleEntryTypeMismatch": "[ny8Sn][นั้Tµplë ëñtrÿ {ëñtrÿ} ïs ïñçørrëçt tÿpëẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "tupleSizeMismatch": "[F2Yc7][นั้Ëlëmëñt sïzë mïsmætçh; ëxpëçtëð {ëxpëçtëð} þµt rëçëïvëð {rëçëïvëð}Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeAssignmentMismatch": "[VF9B4][นั้Tÿpë \"{søµrçëTÿpë}\" çæññøt þë æssïgñëð tø tÿpë \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typeBound": "[AIZri][นั้Tÿpë \"{søµrçëTÿpë}\" ïs ïñçømpætïþlë wïth þøµñð tÿpë \"{ðëstTÿpë}\" før tÿpë værïæþlë \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeConstrainedTypeVar": "[qHztb][นั้Tÿpë \"{tÿpë}\" ïs ïñçømpætïþlë wïth çøñstræïñëð tÿpë værïæþlë \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typeIncompatible": "[L3llJ][นั้\"{søµrçëTÿpë}\" ïs ïñçømpætïþlë wïth \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "typeNotCallable": "[MqBps][นั้Tÿpë \"{tÿpë}\" ïs ñøt çællæþlëẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeNotClass": "[DTm1E][นั้\"{tÿpë}\" ïs ñøt æ çlæssẤğ倪İЂҰक्र्นั้ढूँ]", + "typeNotStringLiteral": "[D7UY3][นั้\"{tÿpë}\" ïs ñøt æ strïñg lïtërælẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeOfSymbol": "[qlRHN][นั้Tÿpë øf \"{ñæmë}\" ïs \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeParamSpec": "[m23b5][นั้Tÿpë \"{tÿpë}\" ïs ïñçømpætïþlë wïth Pæræm§pëç \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeUnsupported": "[Dx3Cx][นั้Tÿpë \"{tÿpë}\" ïs µñsµppørtëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeVarDefaultOutOfScope": "[05ALy][นั้Tÿpë værïæþlë \"{ñæmë}\" ïs ñøt ïñ sçøpëẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "typeVarIsContravariant": "[kup2Y][นั้TÿpëVær \"{ñæmë}\" ïs çøñtræværïæñtẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeVarIsCovariant": "[EeRng][นั้TÿpëVær \"{ñæmë}\" ïs çøværïæñtẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeVarIsInvariant": "[WLZaN][นั้TÿpëVær \"{ñæmë}\" ïs ïñværïæñtẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeVarNotAllowed": "[37OGF][นั้TÿpëVær ør gëñërïç tÿpë wïth tÿpë ærgµmëñts ñøt ælløwëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeVarTupleRequiresKnownLength": "[GGttd][นั้TÿpëVærTµplë çæññøt þë þøµñð tø æ tµplë øf µñkñøwñ lëñgthẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typeVarUnsolvableRemedy": "[PaRa7][นั้Prøvïðë æñ øvërløæð thæt spëçïfïës thë rëtµrñ tÿpë whëñ thë ærgµmëñt ïs ñøt sµpplïëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typeVarsMissing": "[R1SEV][นั้Mïssïñg tÿpë værïæþlës: {ñæmës}Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "typedDictFieldMissing": "[rNzn7][นั้\"{ñæmë}\" ïs mïssïñg frøm \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "typedDictFieldNotReadOnly": "[BJy1V][นั้\"{ñæmë}\" ïs ñøt rëæð-øñlÿ ïñ \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤนั้ढूँ]", + "typedDictFieldNotRequired": "[eqatW][นั้\"{ñæmë}\" ïs ñøt rëqµïrëð ïñ \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typedDictFieldRequired": "[ckyH4][นั้\"{ñæmë}\" ïs rëqµïrëð ïñ \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "typedDictFieldTypeMismatch": "[XYIBH][นั้Tÿpë \"{tÿpë}\" ïs ñøt æssïgñæþlë tø fïëlð \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "typedDictFieldTypeRedefinition": "[bWjit][นั้Tÿpë ïñ pærëñt çlæss ïs \"{pærëñtTÿpë}\" æñð tÿpë ïñ çhïlð çlæss ïs \"{çhïlðTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typedDictFieldUndefined": "[UsDC9][นั้\"{ñæmë}\" ïs æñ µñðëfïñëð fïëlð ïñ tÿpë \"{tÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", + "typedDictFinalMismatch": "[tFb04][นั้\"{søµrçëTÿpë}\" ïs ïñçømpætïþlë wïth \"{ðëstTÿpë}\" þëçæµsë øf æ @fïñæl mïsmætçhẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "unhashableType": "[IJEeq][นั้Tÿpë \"{tÿpë}\" ïs ñøt hæshæþlëẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "uninitializedAbstractVariable": "[uDuHt][นั้Ïñstæñçë værïæþlë \"{ñæmë}\" ïs ðëfïñëð ïñ æþstræçt þæsë çlæss \"{çlæssTÿpë}\" þµt ñøt ïñïtïælïzëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "unreachableExcept": "[3CSUL][นั้\"{ëxçëptïøñTÿpë}\" ïs æ sµþçlæss øf \"{pærëñtTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "useDictInstead": "[LReB5][นั้Üsë Ðïçt[T1, T2] tø ïñðïçætë æ ðïçtïøñærÿ tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "useListInstead": "[RPu0E][นั้Üsë £ïst[T] tø ïñðïçætë æ lïst tÿpë ør Üñïøñ[T1, T2] tø ïñðïçætë æ µñïøñ tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", + "useTupleInstead": "[jaFqC][นั้Üsë Tµplë[T1, ..., Tñ] tø ïñðïçætë æ tµplë tÿpë ør Üñïøñ[T1, T2] tø ïñðïçætë æ µñïøñ tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "useTypeInstead": "[Zig8D][นั้Üsë Tÿpë[T] ïñstëæðẤğ倪İЂҰक्นั้ढूँ]", + "varianceMismatchForClass": "[fqhIl][นั้Værïæñçë øf tÿpë ærgµmëñt \"{tÿpëVærÑæmë}\" ïs ïñçømpætïþlë wïth þæsë çlæss \"{çlæssÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "varianceMismatchForTypeAlias": "[YSiVx][นั้Værïæñçë øf tÿpë ærgµmëñt \"{tÿpëVærÑæmë}\" ïs ïñçømpætïþlë wïth \"{tÿpëÆlïæsPæræm}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]" + } +} diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index 0db3279e4..f6c376b4f 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -1,3 +1,718 @@ { - + "CodeAction": { + "addOptionalToAnnotation": "Добавьте ключевое слово \"Optional\" в заметку типа", + "createTypeStub": "Создать заглушку типа", + "createTypeStubFor": "Создать заглушку типа для \"{moduleName}\"", + "executingCommand": "Производится выполнение команды", + "filesToAnalyzeCount": "{count} файлов для анализа", + "filesToAnalyzeOne": "1 файл для анализа", + "findingReferences": "Производится поиск ссылок", + "organizeImports": "Упорядочение импорта", + "renameShadowedFile": "Переименовать \"{oldFile}\" в \"{newFile}\"" + }, + "Diagnostic": { + "abstractMethodInvocation": "Метод \"{method}\" не может быть вызван, так как является абстрактным", + "annotatedParamCountMismatch": "Несоответствие числа аннотаций параметра: ожидается {expected}, но получено {received}", + "annotatedTypeArgMissing": "Для \"Annotated\" ожидается один аргумент типа и одна или несколько заметок типа", + "annotationFormatString": "В заметках типа не могут использоваться строковые литералы формата (f-строки)", + "annotationNotSupported": "Заметка типа не поддерживается для этой инструкции", + "annotationSpansStrings": "Заметки с типом не могут охватывать несколько строковых литералов", + "annotationStringEscape": "Заметки с типом не могут содержать escape-символы", + "argAssignment": "Аргумент типа \"{argType}\" нельзя присвоить параметру типа \"{paramType}\"", + "argAssignmentFunction": "Аргумент типа \"{argType}\" нельзя присвоить параметру типа \"{paramType}\" в функции \"{functionName}\"", + "argAssignmentParam": "Аргумент типа \"{argType}\" нельзя присвоить параметру \"{paramName}\" типа \"{paramType}\"", + "argAssignmentParamFunction": "Аргумент типа \"{argType}\" нельзя присвоить параметру \"{paramName}\" типа \"{paramType}\" в функции \"{functionName}\"", + "argMissingForParam": "Отсутствует аргумент для параметра {name}", + "argMissingForParams": "Отсутствуют аргументы для параметров {names}", + "argMorePositionalExpectedCount": "Ожидаются еще позиционные аргументы: {expected}", + "argMorePositionalExpectedOne": "Ожидается еще 1 позиционный аргумент", + "argPositional": "Ожидается позиционный аргумент", + "argPositionalExpectedCount": "Ожидаемые позиционные аргументы: {expected}", + "argPositionalExpectedOne": "Ожидается 1 позиционный аргумент", + "argTypePartiallyUnknown": "Тип аргумента частично неизвестен", + "argTypeUnknown": "Тип аргумента неизвестен", + "assertAlwaysTrue": "Выражение assert всегда вычисляется как true", + "assertTypeArgs": "Для \"assert_type\" ожидается два позиционных аргумента", + "assertTypeTypeMismatch": "Несоответствие типов \"assert_type\": ожидается \"{expected}\", но получено \"{received}\"", + "assignmentExprComprehension": "Цель выражения назначения \"{name}\" не может использовать то же имя, что и понимание для целевого объекта", + "assignmentExprContext": "Выражение присваивания должно находиться в модуле, функции или лямбде", + "assignmentExprInSubscript": "Выражения назначения внутри оператора получения подстроки можно использовать в Python версии не ниже 3.10", + "assignmentInProtocol": "Переменные экземпляра или класса в классе Protocol должны быть явно объявлены в тексте класса", + "assignmentTargetExpr": "Выражение не может быть целевым объектом присваивания", + "asyncNotInAsyncFunction": "Использование \"async\" не разрешено вне асинхронной функции", + "awaitIllegal": "Инструкцию \"await\" можно использовать в Python версии не ранее 3.5", + "awaitNotInAsync": "Ключевое слово \"await\" допускается только в асинхронной функции", + "backticksIllegal": "Выражения, окруженные одиночными обратными кавычками, не поддерживаются в Python 3.x; используйте вместо этого функцию repr", + "baseClassCircular": "Класс не может быть производным от себя", + "baseClassFinal": "Базовый класс \"{type}\" помечен как окончательный, и от него нельзя создать производный класс", + "baseClassInvalid": "Аргумент класса должен быть базовым классом", + "baseClassMethodTypeIncompatible": "Базовые классы класса \"{classType}\" определяют метод \"{name}\" несовместимым способом", + "baseClassUnknown": "Неизвестный тип базового класса скрывает тип производного класса", + "baseClassVariableTypeIncompatible": "Базовые классы класса \"{classType}\" определяют переменную \"{name}\" несовместимым способом", + "bindTypeMismatch": "Не удалось привязать метод \"{methodName}\", \"{type}\" не может быть назначен параметру \"{paramName}\"", + "breakOutsideLoop": "\"break\" можно использовать только внутри цикла", + "callableExtraArgs": "В \"Callable\" ожидается только два аргумента типа", + "callableFirstArg": "Ожидается список типов параметров или \"...\"", + "callableNotInstantiable": "Невозможно создать экземпляр типа \"{type}\"", + "callableSecondArg": "В качестве аргумента второго типа для \"Callable\" ожидается возвращаемый тип", + "casePatternIsIrrefutable": "Неопровержимый шаблон допускается только для последнего оператора case", + "classAlreadySpecialized": "Тип \"{type}\" уже специализирован", + "classDecoratorTypeUnknown": "Нетипизированный декоратор класса скрывает тип класса. Игнорирование декоратора", + "classDefinitionCycle": "Определение класса для \"{name}\" зависит от себя", + "classGetItemClsParam": "Переопределение метода __class_getitem__ должно принимать параметр \"cls\"", + "classMethodClsParam": "Методы класса должны принимать параметр cls", + "classNotRuntimeSubscriptable": "Операция взятия подстроки для класса \"{name}\" создаст исключение среды выполнения; заключите заметку типа в кавычки", + "classPatternBuiltInArgCount": "Шаблон класса принимает не более одного позиционного вложенного шаблона", + "classPatternBuiltInArgPositional": "Шаблон класса принимает только позиционный вложенный шаблон", + "classPatternTypeAlias": "\"{type}\" нельзя использовать в шаблоне класса, поскольку это псевдоним специализированного типа", + "classTypeParametersIllegal": "Синтаксис параметра типа класса может использоваться в Python версии не ниже 3.12.", + "classVarFirstArgMissing": "Ожидается аргумент типа после \"ClassVar\"", + "classVarNotAllowed": "Использование \"ClassVar\" в этом контексте не допускается", + "classVarOverridesInstanceVar": "Переменная класса \"{name}\" переопределяет переменную экземпляра с тем же именем в классе \"{className}\"", + "classVarTooManyArgs": "Ожидается только один аргумент типа после \"ClassVar\"", + "classVarWithTypeVar": "Тип \"ClassVar\" не может включать переменные типа", + "clsSelfParamTypeMismatch": "Тип параметра \"{name}\" должен быть супертипом своего класса \"{classType}\"", + "codeTooComplexToAnalyze": "Код слишком сложен для анализа; уменьшите сложность, разбив его на фрагменты (вложенные процедуры) или сократите количество условных конструкций", + "collectionAliasInstantiation": "Тип \"{type}\" не может быть создан, вместо этого используйте \"{alias}\"", + "comparisonAlwaysFalse": "Условие всегда будет оцениваться как ЛОЖЬ, поскольку типы \"{leftType}\" и \"{rightType}\" не перекрываются", + "comparisonAlwaysTrue": "Выражение всегда будет возвращать значение True, поскольку типы \"{leftType}\" и \"{rightType}\" не перекрываются", + "comprehensionInDict": "Понимание не может использоваться с другими записями словаря", + "comprehensionInSet": "Понимание не может использоваться с другими записями набора", + "concatenateParamSpecMissing": "Последний аргумент типа для \"Concatenate\" должен быть ParamSpec", + "concatenateTypeArgsMissing": "Для \"Concatenate\" требуется по крайней мере два аргумента типа", + "conditionalOperandInvalid": "Недопустимый условный операнд типа \"{type}\"", + "constantRedefinition": "\"{name}\" является константой (поскольку оно в верхнем регистре) и не может быть переопределено.", + "constructorNoArgs": "Для конструктора \"{type}\" не ожидается аргументов", + "constructorParametersMismatch": "Несоответствие подписи __new__ и __init__ в классе \"{classType}\"", + "containmentAlwaysFalse": "Выражение всегда будет оцениваться как ЛОЖЬ, так как типы \"{leftType}\" и \"{rightType}\" не перекрываются", + "containmentAlwaysTrue": "Выражение всегда будет оцениваться как ИСТИНА, так как типы \"{leftType}\" и \"{rightType}\" не перекрываются", + "continueInFinally": "Невозможно использовать \"continue\" в предложении finally", + "continueOutsideLoop": "Ключевое слово \"continue\" можно использовать только внутри цикла", + "dataClassBaseClassFrozen": "Незафиксированный класс не может наследоваться от зафиксированного класса", + "dataClassBaseClassNotFrozen": "Незафиксированный класс не может наследоваться от зафиксированного класса", + "dataClassConverterFunction": "Аргумент типа \"{argType}\" не является допустимым преобразователем для поля \"{fieldName}\" типа \"{fieldType}\"", + "dataClassConverterOverloads": "Ни одна перегрузка \"{funcName}\" не является допустимым преобразователем поля \"{fieldName}\" типа \"{fieldType}\"", + "dataClassFieldWithDefault": "Поля без значений по умолчанию не могут отображаться после полей со значениями по умолчанию.", + "dataClassFieldWithPrivateName": "Поле класса данных не может использовать закрытое имя", + "dataClassFieldWithoutAnnotation": "Поле dataclass без заметки с типом вызовет исключение среды выполнения", + "dataClassPostInitParamCount": "Неверное число параметров в методе __post_init__ класса данных; ожидается число, соответствующее числу полей InitVar {expected}", + "dataClassPostInitType": "Тип параметра метода __post_init__ в классе данных не соответствует типу поля \"{fieldName}\"", + "dataClassSlotsOverwrite": "__slots__ уже определен в классе", + "dataClassTransformExpectedBoolLiteral": "Ожидается выражение, статически оцениваемое как ИСТИНА или ЛОЖЬ", + "dataClassTransformFieldSpecifier": "Ожидается кортеж классов или функций, но получен тип \"{type}\"", + "dataClassTransformPositionalParam": "Все аргументы \"dataclass_transform\" должны быть аргументами типа \"ключевое слово\"", + "dataClassTransformUnknownArgument": "Аргумент \"{name}\" не поддерживается в dataclass_transform", + "declaredReturnTypePartiallyUnknown": "Объявленный тип возвращаемого значения \"{returnType}\" частично неизвестен", + "declaredReturnTypeUnknown": "Объявленный тип возвращаемого значения неизвестен", + "defaultValueContainsCall": "Вызовы функций и изменяемые объекты не разрешены в выражении значения параметра по умолчанию", + "defaultValueNotAllowed": "Параметр с \"*\" или \"**\" не может иметь значение по умолчанию", + "delTargetExpr": "Не удается удалить выражение", + "deprecatedClass": "Класс \"{name}\" является нерекомендуемым", + "deprecatedConstructor": "Конструктор для класса \"{name}\" больше не рекомендуется к использованию", + "deprecatedFunction": "Функция \"{name}\" больше не рекомендуется к использованию", + "deprecatedType": "Этот тип больше не рекомендуется к использованию начиная с версии Python {version}; используйте вместо него \"{replacement}\"", + "dictExpandIllegalInComprehension": "Расширение словаря в понимании не допускается", + "dictInAnnotation": "Словарные выражения не разрешены в заметках типа", + "dictKeyValuePairs": "Записи словаря должны содержать пары \"ключ-значение\"", + "dictUnpackIsNotMapping": "Ожидается сопоставление для оператора распаковки словаря", + "dunderAllSymbolNotPresent": "\"{name}\" указано в методе __all__, но отсутствует в модуле", + "duplicateArgsParam": "Разрешен только один параметр \"*\"", + "duplicateBaseClass": "Дублирование базового класса не допускается", + "duplicateCapturePatternTarget": "Целевой объект захвата \"{name}\" не может появляться более одного раза в одном шаблоне", + "duplicateCatchAll": "В блоке except допускается только одно предложение catch-all", + "duplicateEnumMember": "Элемент перечислимого типа \"{name}\" уже объявлен", + "duplicateGenericAndProtocolBase": "Допускается только один базовый класс Generic[...] или Protocol[...]", + "duplicateImport": "\"{importName}\" импортируется несколько раз", + "duplicateKeywordOnly": "Разрешен только один разделитель \"*\"", + "duplicateKwargsParam": "Разрешен только один параметр \"**\"", + "duplicateParam": "Параметр \"{name}\" повторяется", + "duplicatePositionOnly": "Разрешен только один параметр \"/\"", + "duplicateStarPattern": "В последовательности шаблонов допускается только один шаблон \"*\"", + "duplicateStarStarPattern": "Допускается только одна запись \"**\"", + "duplicateUnpack": "В списке разрешена только одна операция распаковки", + "ellipsisContext": "\"...\" не допускается в данном контексте", + "ellipsisSecondArg": "\"...\" разрешается только в качестве второго из двух аргументов", + "enumClassOverride": "Перечислимый класс \"{name}\" является окончательным и не может иметь производных классов", + "exceptionGroupIncompatible": "Синтаксис группы исключений (\"except*\") можно использовать в Python версии не ранее 3.11", + "exceptionTypeIncorrect": "\"{type}\" не является производным от BaseException", + "exceptionTypeNotClass": "\"{type}\" не является допустимым классом исключений", + "exceptionTypeNotInstantiable": "Конструктору типа исключения \"{type}\" требуется один или несколько аргументов", + "expectedAfterDecorator": "Ожидаемая функция или объявление класса после декоратора", + "expectedArrow": "Ожидается \"->\", за которым следует заметка типа к возвращаемому типу", + "expectedAsAfterException": "Ожидается \"as\" после типа исключения", + "expectedAssignRightHandExpr": "Справа от \"=\" ожидается выражение", + "expectedBinaryRightHandExpr": "Справа от оператора ожидается выражение", + "expectedBoolLiteral": "Ожидается ИСТИНА или ЛОЖЬ", + "expectedCase": "Ожидается оператор case", + "expectedClassName": "Ожидается имя класса", + "expectedCloseBrace": "Для скобки \"{\" отсутствует закрывающая скобка", + "expectedCloseBracket": "Для скобки \"[\" отсутствует закрывающая скобка", + "expectedCloseParen": "Для скобки \"(\" отсутствует закрывающая скобка", + "expectedColon": "Ожидается \":\"", + "expectedComplexNumberLiteral": "Для сопоставления шаблонов ожидается сложный числовой литерал", + "expectedDecoratorExpr": "Форму выражения для декоратора можно использовать в Python версии не ниже 3.9", + "expectedDecoratorName": "Ожидается имя декоратора", + "expectedDecoratorNewline": "В конце декоратора ожидается символ перехода на новую строку", + "expectedDelExpr": "После \"del\" ожидается выражение", + "expectedElse": "Ожидается ключевое слово \"else\"", + "expectedEquals": "Ожидается \"=\"", + "expectedExceptionClass": "Недопустимый класс или объект исключения", + "expectedExceptionObj": "Ожидается объект исключения, класс исключения или значение None", + "expectedExpr": "Ожидается выражение", + "expectedFunctionAfterAsync": "Ожидается определение функции после \"async\"", + "expectedFunctionName": "После ключевого слова \"def\" ожидается имя функции", + "expectedIdentifier": "Ожидается идентификатор", + "expectedImport": "Ожидается \"import\"", + "expectedImportAlias": "После \"as\" ожидается символ", + "expectedImportSymbols": "После операторов импорта ожидается одно или несколько имен символов", + "expectedIn": "Ожидается \"in\"", + "expectedInExpr": "После ключевого слова \"in\" ожидается выражение", + "expectedIndentedBlock": "Ожидается блок с отступом", + "expectedMemberName": "После \".\" ожидается имя элемента", + "expectedModuleName": "Ожидаемое имя модуля", + "expectedNameAfterAs": "Ожидается имя символа после \"as\"", + "expectedNamedParameter": "За \"*\" должен следовать параметр типа \"ключевое слово\"", + "expectedNewline": "Ожидается новая строка", + "expectedNewlineOrSemicolon": "Операторы должны быть разделены символами перевода строки или точками с запятой", + "expectedOpenParen": "Ожидается \"(\"", + "expectedParamName": "Ожидается имя параметра", + "expectedPatternExpr": "Ожидается выражение шаблона", + "expectedPatternSubjectExpr": "Ожидаемое выражение субъекта шаблона", + "expectedPatternValue": "Ожидается выражение значения шаблона в форме \"a.b\"", + "expectedReturnExpr": "После \"return\" ожидается выражение", + "expectedSliceIndex": "Ожидается выражение индекса или среза", + "expectedTypeNotString": "Ожидался тип, но получен строковый литерал", + "expectedTypeParameterName": "Ожидаемое имя параметра типа", + "expectedYieldExpr": "Ожидаемое выражение в операторе yield", + "finalClassIsAbstract": "Класс \"{type}\" помечен как final (окончательный) и должен реализовать все абстрактные методы", + "finalContext": "Ключевое слово \"final\" в этом контексте не допускается", + "finalMethodOverride": "Метод \"{name}\" не может переопределять окончательный метод, определенный в классе \"{className}\"", + "finalReassigned": "\"{name}\" объявляется окончательным и не может быть переназначено", + "finalRedeclaration": "\"{name}\" ранее объявлено как Final", + "finalRedeclarationBySubclass": "\"{name}\" невозможно повторно объявить, поскольку в родительском классе \"{className}\" он объявлен как final", + "finalTooManyArgs": "После \"Final\" ожидается один аргумент типа", + "finalUnassigned": "\"{name}\" объявлен как Final, но ему не присвоено значение", + "formatStringBrace": "Одиночная закрывающая скобка не допускается в литерале f-строки. Используйте двойную закрывающую скобку", + "formatStringBytes": "Строковые литералы формата (f-строки) не могут быть двоичными", + "formatStringDebuggingIllegal": "Для описателя отладки F-строки \"=\" требуется версия Python 3.8 или более новая", + "formatStringEscape": "Escape-последовательность (обратная косая черта) не разрешена в части выражения f-строки до версии Python 3.12", + "formatStringExpectedConversion": "После \"!\" в f-строке ожидался спецификатор преобразования", + "formatStringIllegal": "Для строковых литералов формата (f-строки) требуется версия Python 3.6 или более новая", + "formatStringInPattern": "Строка формата не разрешена в шаблоне", + "formatStringNestedFormatSpecifier": "В строке спецификации формата слишком высок уровень вложенности выражений", + "formatStringNestedQuote": "Строки, вложенные в f-строку, не могут использовать тот же символ кавычка, что и f-строка до Python 3.12", + "formatStringUnicode": "Строковые литералы формата (f-строки) не могут быть в кодировке Unicode", + "formatStringUnterminated": "Незавершенное выражение в f-строке; ожидается \"}\"", + "functionDecoratorTypeUnknown": "Нетипизированный декоратор функции скрывает тип функции; декоратор будет игнорирован", + "functionInConditionalExpression": "Условное выражение ссылается на функцию, которая всегда возвращает значение True", + "functionTypeParametersIllegal": "Для синтаксиса параметра типа функции требуется версия Python 3.12 или более новая", + "futureImportLocationNotAllowed": "Операторы импорта из __future__ должны находиться в начале файла", + "generatorAsyncReturnType": "Возвращаемый тип функции асинхронного генератора должен быть совместим с \"AsyncGenerator[{yieldType}, Any]\"", + "generatorNotParenthesized": "Выражения генератора следует взять в скобки, если аргументов больше одного", + "generatorSyncReturnType": "Возвращаемый тип функции генератора должен быть совместим с \"Generator[{yieldType}, Any, Any]\"", + "genericBaseClassNotAllowed": "Базовый класс \"Generic\" нельзя использовать с синтаксисом параметра типа", + "genericClassAssigned": "Универсальный тип класса невозможно присвоить", + "genericClassDeleted": "Не удается удалить универсальный тип класса", + "genericNotAllowed": "Ключевое слово \"Generic\" недопустимо в этом контексте", + "genericTypeAliasBoundTypeVar": "Псевдоним универсального типа в классе не может использовать переменные привязанного типа {names}", + "genericTypeArgMissing": "Для \"Generic\" требуется по крайней мере один аргумент типа", + "genericTypeArgTypeVar": "Аргумент типа для \"Generic\" должен быть переменной типа", + "genericTypeArgUnique": "Аргументы типа для \"Generic\" должны быть уникальными", + "globalReassignment": "Присвоение \"{name}\" происходит раньше глобального объявления", + "globalRedefinition": "Имя \"{name}\" уже объявлено ранее как глобальное", + "implicitStringConcat": "Неявное объединение строк не разрешено", + "importCycleDetected": "Обнаружен цикл в цепочке импорта", + "importDepthExceeded": "Глубина цепочки импорта превысила {depth}", + "importResolveFailure": "Не удается разрешить импорт \"{importName}\"", + "importSourceResolveFailure": "Не удается разрешить импорт \"{importName}\" из источника", + "importSymbolUnknown": "\"{name}\" — неизвестный символ импорта", + "incompatibleMethodOverride": "Метод \"{name}\" переопределяет класс \"{className}\" несовместимым образом", + "inconsistentIndent": "Сумма отступа не соответствует предыдущему отступу", + "inconsistentTabs": "Непоследовательное использование вкладок и пробелов в отступах", + "initMustReturnNone": "Метод \"__init__\" должен возвращать тип None", + "initSubclassClsParam": "Переопределение метода __init_subclass__ должно принимать параметр \"cls\"", + "instanceMethodSelfParam": "Методы экземпляра должны принимать параметр \"self\"", + "instanceVarOverridesClassVar": "Переменная экземпляра \"{name}\" переопределяет переменную класса с тем же именем в классе \"{className}\"", + "instantiateAbstract": "Не удается создать экземпляр абстрактного класса \"{type}\"", + "instantiateProtocol": "Не удается создать экземпляр класса протокола \"{type}\"", + "internalBindError": "При привязке файла \"{file}\" произошла внутренняя ошибка: {message}", + "internalParseError": "При разборе файла \"{file}\" произошла внутренняя ошибка: {message}", + "internalTypeCheckingError": "При проверке файла \"{file}\" произошла внутренняя ошибка: {message}", + "invalidIdentifierChar": "Недопустимый символ в идентификаторе", + "invalidStubStatement": "Инструкция не имеет смысла в файле-заглушке типа", + "invalidTokenChars": "Недопустимый символ \"{text}\" в маркере", + "isInstanceInvalidType": "Второй аргумент \"isinstance\" должен быть классом или кортежем классов", + "isSubclassInvalidType": "Второй аргумент в \"issubclass\" должен быть классом или кортежем классов", + "keyValueInSet": "Пары \"ключ-значение\" не допускаются в наборе", + "keywordArgInTypeArgument": "Аргументы ключевых слов нельзя использовать в списках аргументов типа", + "keywordOnlyAfterArgs": "Разделитель аргументов типа \"только ключевое слово\" не разрешен после параметра \"*\"", + "keywordParameterMissing": "За параметром \"*\" должен следовать один или несколько параметров ключевого слова.", + "keywordSubscriptIllegal": "Аргументы ключевых слов в нижних индексах не поддерживаются", + "lambdaReturnTypePartiallyUnknown": "Тип возвращаемого лямбдой значения \"{returnType}\" частично неизвестен", + "lambdaReturnTypeUnknown": "Тип значения, возвращаемого лямбдой, неизвестен", + "listAssignmentMismatch": "Выражение с типом \"{type}\" нельзя присвоить целевому списку", + "listInAnnotation": "Списочное выражение не разрешено в заметке типа", + "literalEmptyArgs": "Ожидается один или несколько аргументов типа после \"Literal\"", + "literalNotCallable": "Не удается создать экземпляр типа литерала", + "literalUnsupportedType": "Аргументы типа для \"Literal\" должны иметь значение None, литеральное значение (int, bool, str или bytes) или значение перечислимого типа", + "matchIncompatible": "Операторы соответствия могут использоваться в Python версии не ниже 3.10", + "matchIsNotExhaustive": "Блоки case в операторе match обрабатывают не все множество возможных значений", + "maxParseDepthExceeded": "Превышена максимальная глубина разбора; разбейте выражение на составляющие выражения меньшего размера", + "memberAccess": "Не удается получить доступ к элементу \"{name}\" типа \"{type}\"", + "memberDelete": "Не удается удалить элемент \"{name}\" типа \"{type}\"", + "memberSet": "Не удается назначить элемент \"{name}\" для типа \"{type}\"", + "metaclassConflict": "Метакласс производного класса должен быть производным классом метаклассов всех его базовых классов", + "metaclassDuplicate": "Можно указать только один метакласс", + "metaclassIsGeneric": "Метакласс не может быть универсальным", + "methodNotDefined": "Метод \"{name}\" не определен", + "methodNotDefinedOnType": "Метод \"{name}\" не определен для типа \"{type}\"", + "methodOrdering": "Не удается создать согласованный порядок методов", + "methodOverridden": "\"{name}\" переопределяет метод с тем же именем в классе \"{className}\" с несовместимым типом \"{type}\"", + "methodReturnsNonObject": "Метод \"{name}\" не возвращает объект", + "missingProtocolMembers": "Класс является производным от одного или нескольких классов протокола, но не реализует все необходимые элементы", + "missingSuperCall": "Метод \"{methodName}\" не вызывает метод с тем же именем в родительском классе", + "moduleAsType": "Модуль не может использоваться в качестве типа", + "moduleNotCallable": "Модуль не является вызываемым", + "moduleUnknownMember": "\"{memberName}\" не является известным элементом модуля \"{moduleName}\"", + "namedExceptAfterCatchAll": "Именованное предложение исключения не может стоять после предложения catch-all except", + "namedParamAfterParamSpecArgs": "Параметр ключевого слова \"{name}\" не может размещаться в сигнатуре после параметра аргументов ParamSpec", + "namedTupleEmptyName": "Имена в именованном кортеже не могут быть пустыми", + "namedTupleFirstArg": "В качестве первого аргумента ожидалось имя именованного класса кортежа", + "namedTupleMultipleInheritance": "Множественное наследование для NamedTuple не поддерживается", + "namedTupleNameType": "Ожидается двухфакторный кортеж с указанием имени и типа записи", + "namedTupleNameUnique": "Имена внутри именованного кортежа должны быть уникальными", + "namedTupleNoTypes": "\"namedtuple\" не предоставляет типов для записей кортежа; используйте вместо него \"NamedTuple\"", + "namedTupleSecondArg": "В качестве второго аргумента ожидается список записей именованного кортежа", + "newClsParam": "Переопределение метода __new__ должно принимать параметр \"cls\"", + "newTypeBadName": "Первый аргумент NewType должен быть строковым литералом", + "newTypeLiteral": "NewType нельзя использовать с типом литерала", + "newTypeNotAClass": "В NewType в качестве второго аргумента ожидается класс", + "newTypeParamCount": "Для NewType требуются два позиционных аргумента", + "newTypeProtocolClass": "NewType нельзя использовать с классом протокола", + "noOverload": "Не существует перегрузок для \"{name}\", соответствующих указанным аргументам", + "noReturnContainsReturn": "Функция с объявленным типом возвращаемого значения \"NoReturn\" не может содержать оператор return", + "noReturnContainsYield": "Функция с объявленным типом возвращаемого значения \"NoReturn\" не может содержать инструкцию yield", + "noReturnReturnsNone": "Функция с объявленным типом \"NoReturn\" не может возвращать \"None\"", + "nonDefaultAfterDefault": "Аргумент, отличный от аргумента по умолчанию, следует за аргументом по умолчанию", + "nonLocalInModule": "Нелокальные объявления на уровне модулей не разрешены", + "nonLocalNoBinding": "Привязка для нелокального элемента \"{name}\" не найдена", + "nonLocalReassignment": "Назначение \"{name}\" происходит раньше нелокального объявления", + "nonLocalRedefinition": "\"{name}\" уже объявлено ранее как нелокальное", + "noneNotCallable": "Объект типа \"None\" не может быть вызван", + "noneNotIterable": "Объект типа \"None\" не может использоваться в качестве итерируемого значения", + "noneNotSubscriptable": "Объект типа \"None\" не подлежит подписке", + "noneNotUsableWith": "Объект типа \"None\" нельзя использовать с ключевым словом \"with\"", + "noneOperator": "Оператор \"{operator}\" не поддерживается для \"None\"", + "noneUnknownMember": "\"{name}\" не является известным элементом \"None\"", + "notRequiredArgCount": "После \"NotRequired\" ожидается один аргумент типа", + "notRequiredNotInTypedDict": "Использование \"NotRequired\" в этом контексте не допускается", + "objectNotCallable": "Объект типа \"{type}\" не является вызываемым", + "obscuredClassDeclaration": "Объявление класса \"{name}\" скрывается объявлением с тем же именем", + "obscuredFunctionDeclaration": "Объявление функции \"{name}\" скрывается объявлением с тем же именем", + "obscuredMethodDeclaration": "Объявление метода \"{name}\" скрывается объявлением с тем же именем", + "obscuredParameterDeclaration": "Объявление параметра \"{name}\" скрывается объявлением с тем же именем", + "obscuredTypeAliasDeclaration": "Объявление псевдонима типа \"{name}\" скрывается объявлением с тем же именем", + "obscuredVariableDeclaration": "Объявление \"{name}\" скрывается объявлением с тем же именем", + "operatorLessOrGreaterDeprecated": "Оператор \"<>\" не поддерживается в Python 3; используйте вместо него \"!=\"", + "optionalExtraArgs": "Ожидается один аргумент типа после \"Optional\"", + "orPatternIrrefutable": "Неопровержимый шаблон допускается только в качестве последнего вложенного шаблона в шаблоне \"or\"", + "orPatternMissingName": "Все вложенные шаблоны в шаблоне \"or\" должны быть привязаны к одним и тем же именам", + "overlappingOverload": "Перегрузка {obscured} для \"{name}\" никогда не будет использоваться, так как ее параметры перекрывают перегрузку {obscuredBy}", + "overloadAbstractMismatch": "Все перегруженные методы должны быть абстрактными или не абстрактными", + "overloadImplementationMismatch": "Перегруженная реализация не согласована с сигнатурой перегрузки {index}", + "overloadReturnTypeMismatch": "Перегрузка {prevIndex} для \"{name}\" перекрывает перегрузку {newIndex} и возвращает несовместимый тип", + "overloadWithImplementation": "\"{name}\" помечен как перегруженный, но содержит реализацию", + "overloadWithoutImplementation": "\"{name}\" помечен как перегруженный, но реализация не предоставлена", + "overriddenMethodNotFound": "Метод \"{name}\" помечен как переопределение, но базового метода с таким же именем нет.", + "overrideDecoratorMissing": "Метод \"{name}\" не помечен в качестве переопределения, но переопределяет метод в классе \"{className}\"", + "paramAfterKwargsParam": "Параметр не может следовать за параметром \"**\"", + "paramAlreadyAssigned": "Параметр \"{name}\" уже назначен.", + "paramAnnotationMissing": "Отсутствует заметка с типом для параметра \"{name}\"", + "paramAssignmentMismatch": "Выражение типа \"{sourceType}\" не может быть назначено параметру типа \"{paramType}\"", + "paramNameMissing": "Параметра с именем \"{name}\" не существует", + "paramSpecArgsKwargsUsage": "Элементы ParamSpec \"args\" и \"kwargs\" должны одновременно присутствовать в сигнатуре функции", + "paramSpecArgsMissing": "Отсутствуют аргументы для \"{type}\" ParamSpec", + "paramSpecArgsUsage": "Элемент \"args\" ParamSpec допустим только при использовании с параметром *args.", + "paramSpecAssignedName": "ParamSpec необходимо присвоить переменной с именем \"{name}\"", + "paramSpecContext": "ParamSpec не может использоваться в этом контексте", + "paramSpecDefaultNotTuple": "Для значения ParamSpec по умолчанию ожидается многоточие, выражение кортежа или ParamSpec", + "paramSpecFirstArg": "Ожидается имя ParamSpec в качестве первого аргумента", + "paramSpecKwargsUsage": "Элемент \"kwargs\" ParamSpec допустим только при использовании с параметром **kwargs.", + "paramSpecNotBound": "Спецификация параметра \"{type}\" не имеет привязанного значения", + "paramSpecNotUsedByOuterScope": "ParamSpec \"{name}\" не имеет смысла в этом контексте", + "paramSpecScopedToReturnType": "ParamSpec \"{name}\" относится к области вызываемого объекта в возвращаемом типе, и на него нельзя ссылаться в тексте функции.", + "paramSpecUnknownArg": "ParamSpec не поддерживает более одного аргумента", + "paramSpecUnknownMember": "\"{name}\" не является известным элементом ParamSpec", + "paramSpecUnknownParam": "\"{name}\" является неизвестным параметром для ParamSpec", + "paramTypeCovariant": "Переменную ковариантного типа нельзя использовать в типе параметра", + "paramTypePartiallyUnknown": "Тип параметра \"{paramName}\" частично неизвестен", + "paramTypeUnknown": "Тип параметра \"{paramName}\" неизвестен", + "parenthesizedContextManagerIllegal": "Для скобок в операторе \"with\" требуется версия Python 3.9 или более новая", + "patternNeverMatches": "Шаблон никогда не будет совпадать для типа субъекта \"{type}\"", + "positionArgAfterNamedArg": "Позиционный аргумент не может стоять после аргументов типа \"ключевое слово\"", + "positionOnlyAfterArgs": "Разделитель чисто позиционных аргументов после параметра \"*\" не разрешен", + "positionOnlyAfterKeywordOnly": "Параметр \"/\" должен располагаться перед параметром \"*\"", + "positionOnlyFirstParam": "Разделитель аргументов только для позиции не допускается в качестве первого параметра", + "positionOnlyIncompatible": "Разделитель чисто позиционных аргументов можно использовать в Python версии не ниже 3.8", + "privateImportFromPyTypedModule": "\"{name}\" не экспортируется из модуля \"{module}\"", + "privateUsedOutsideOfClass": "Элемент \"{name}\" является закрытым, но используется вне класса, в котором объявлен", + "privateUsedOutsideOfModule": "\"{name}\" является закрытым, но используется вне модуля, в котором объявлен", + "propertyOverridden": "\"{name}\" неправильно переопределяет свойство с таким же именем в классе \"{className}\"", + "propertyStaticMethod": "Статические методы не разрешены в методах получения, задания и удаления свойств", + "protectedUsedOutsideOfClass": "\"{name}\" защищено и используется вне класса, в котором оно объявлено", + "protocolBaseClass": "Класс протокола \"{classType}\" не может быть производным от непротокольного класса \"{baseType}\"", + "protocolBaseClassWithTypeArgs": "Аргументы типа не допускаются с классом протокола при использовании синтаксиса параметра типа", + "protocolIllegal": "Ключевое слово \"Protocol\" можно использовать в Python версии не ниже 3.7", + "protocolNotAllowedInTypeArgument": "\"Protocol\" не может использоваться в качестве аргумента типа", + "protocolUsedInCall": "Класс протокола нельзя использовать в вызове \"{name}\"", + "protocolVarianceContravariant": "Переменная типа \"{variable}\", используемая в универсальном протоколе \"{class}\", должна быть контравариантной.", + "protocolVarianceCovariant": "Переменная типа \"{variable}\", используемая в универсальном протоколе \"{class}\", должна быть ковариантной", + "protocolVarianceInvariant": "Переменная типа \"{variable}\", используемая в универсальном протоколе \"{class}\", должна быть инвариантной", + "pyrightCommentInvalidDiagnosticBoolValue": "За директивой комментария Pyright должно следовать \"=\" и значение true или false", + "pyrightCommentInvalidDiagnosticSeverityValue": "За директивой комментария pyright должно следовать \"=\" и одно из следующих значений: true, false, error, warning, information или none", + "pyrightCommentMissingDirective": "После комментария pyright должна следовать директива (обычная или строгая) или правило диагностики", + "pyrightCommentNotOnOwnLine": "Комментарии Pyright, используемые для управления параметрами на уровне файлов, должны располагаться в отдельной строке", + "pyrightCommentUnknownDiagnosticRule": "Правило диагностики \"{rule}\" для комментария pyright неизвестно", + "pyrightCommentUnknownDiagnosticSeverityValue": "Значение \"{value}\" недопустимо для комментария pyright; ожидается одно из значений true, false, error, warning, information или none", + "pyrightCommentUnknownDirective": "\"{directive}\" является неизвестной директивой для комментария pyright; ожидается \"strict\" или \"basic\"", + "readOnlyArgCount": "Ожидается один аргумент типа после \"ReadOnly\"", + "readOnlyNotInTypedDict": "Использование \"ReadOnly\" в этом контексте не допускается", + "recursiveDefinition": "Не удалось определить тип \"{name}\", так как он ссылается на себя", + "relativeImportNotAllowed": "Операции импорта с относительным путем нельзя использовать с формой \"import .a\"; используйте вместо этого \"from . import a\"", + "requiredArgCount": "Ожидается один аргумент типа после \"Required\"", + "requiredNotInTypedDict": "Использование \"Required\" в этом контексте не допускается", + "returnInAsyncGenerator": "Оператор return со значением не допускается в асинхронном генераторе", + "returnMissing": "Функция с объявленным типом \"{returnType}\" должна возвращать значение во всех путях кода", + "returnOutsideFunction": "\"return\" можно использовать только внутри функции", + "returnTypeContravariant": "Переменная контравариантного типа не может использоваться в возвращаемом типе", + "returnTypeMismatch": "Выражение типа \"{exprType}\" не может быть назначено возвращаемому типу \"{returnType}\"", + "returnTypePartiallyUnknown": "Тип возвращаемого значения \"{returnType}\" частично неизвестен", + "returnTypeUnknown": "Тип возвращаемого значения неизвестен", + "revealLocalsArgs": "Не ожидаются аргументы для вызова \"reveal_locals\"", + "revealLocalsNone": "В этой области нет локальных элементов", + "revealTypeArgs": "Для вызова \"reveal_type\" ожидается один позиционный аргумент", + "revealTypeExpectedTextArg": "Аргумент \"expected_text\" для функции \"reveal_type\" должен быть значением литерала str", + "revealTypeExpectedTextMismatch": "Несоответствие текста в типе; ожидалось \"{expected}\", но получено \"{received}\"", + "revealTypeExpectedTypeMismatch": "Несоответствие типов; ожидается \"{expected}\", но получено \"{received}\"", + "selfTypeContext": "'В этом контексте ключевое слово \"Self\" недопустимо", + "selfTypeWithTypedSelfOrCls": "Ключевое слово \"Self\" нельзя использовать в функции с параметром \"self\" или \"cls\" с заметкой типа, отличной от \"Self\".", + "setterGetterTypeMismatch": "Тип значения метода задания свойства нельзя присвоить типу возвращаемого значения метода получения", + "singleOverload": "Элемент \"{name}\" помечен как перегруженный, но дополнительные перегрузки отсутствуют", + "slotsAttributeError": "\"{name}\" не указано в __slots__", + "slotsClassVarConflict": "\"{name}\" конфликтует с переменной экземпляра, объявленной в __slots__", + "starPatternInAsPattern": "Шаблон \"звездочка\" не может использоваться с целевым объектом \"as\"", + "starPatternInOrPattern": "Шаблон \"звездочка\" не может быть аргументом операции OR в других шаблонах", + "starStarWildcardNotAllowed": "** нельзя использовать с символом подстановки \"_\"", + "staticClsSelfParam": "Статические методы не принимают в качестве параметра \"self\" и \"cls\"", + "stdlibModuleOverridden": "\"{path}\" переопределяет модуль stdlib \"{name}\"", + "strictTypeGuardReturnType": "Тип значения, возвращаемого StrictTypeGuard (\"{returnType}\"), нельзя присвоить типу параметра значения (\"{type}\")", + "stringNonAsciiBytes": "Символы, отличные от ASCII, не допускаются в строковом литерале байтов", + "stringNotSubscriptable": "От строкового выражения нельзя взять подстроку в заметке типа; заключите всю заметку в кавычки", + "stringUnsupportedEscape": "Неподдерживаемая escape-последовательность в строковом литерале", + "stringUnterminated": "В строковом литерале отсутствует символ конца строки", + "stubFileMissing": "Файл-заглушка для \"{importName}\" не найден", + "stubUsesGetAttr": "Файл-заглушка типа неполон; \"__getattr__\" скрывает ошибки типа для модуля", + "sublistParamsIncompatible": "Параметры вложенного списка не поддерживаются в Python 3.x", + "superCallArgCount": "Ожидается не более двух аргументов для вызова \"super\"", + "superCallFirstArg": "В качестве первого аргумента для вызова \"super\" ожидался тип класса, но получен \"{type}\"", + "superCallSecondArg": "Второй аргумент для вызова \"super\" должен быть объектом или классом, производным от \"{type}\"", + "superCallZeroArgForm": "Форма вызова \"super\" с нулевым аргументом допустима только внутри класса", + "symbolIsPossiblyUnbound": "Элемент \"{name}\", возможно, не привязан", + "symbolIsUnbound": "Элемент \"{name}\" не привязан", + "symbolIsUndefined": "\"{name}\" не определено", + "symbolOverridden": "\"{name}\" переопределяет символ с тем же именем в классе \"{className}\"", + "totalOrderingMissingMethod": "Чтобы можно было использовать total_ordering, в классе должен быть определен один из операторов: \"__lt__\", \"__le__\", \"__gt__\" или \"__ge__\"", + "trailingCommaInFromImport": "Конечные запятые можно использовать только при заключении в скобки", + "tryWithoutExcept": "В операторе try должно быть хотя бы одно предложение exclude или finally.", + "tupleAssignmentMismatch": "Выражение с типом \"{type}\" не может быть назначено целевому кортежу", + "tupleInAnnotation": "Выражение кортежа не разрешено в заметке с типом", + "tupleIndexOutOfRange": "Индекс {index} выходит за пределы допустимого диапазона для типа {type}", + "typeAliasIllegalExpressionForm": "Недопустимая форма выражения для определения псевдонима типа", + "typeAliasIsRecursiveDirect": "Псевдоним типа \"{name}\" не может использовать себя в своем определении", + "typeAliasNotInModuleOrClass": "TypeAlias можно определить только внутри области модуля или класса", + "typeAliasRedeclared": "\"{name}\" объявлен как TypeAlias и может быть присвоен только один раз", + "typeAliasStatementIllegal": "Оператор псевдонима типа можно использовать в Python версии не ниже 3.12", + "typeAliasTypeMustBeAssigned": "TypeAliasType должен быть назначен переменной с тем же именем, что и псевдоним типа", + "typeAliasTypeNameArg": "Первый аргумент TypeAliasType должен быть строковым литералом, представляющим имя псевдонима типа", + "typeAliasTypeNameMismatch": "Имя псевдонима типа должно соответствовать имени переменной, которой оно назначено", + "typeAliasTypeParamInvalid": "Список параметров типа должен быть кортежем, содержащим только TypeVar, TypeVarTuple или ParamSpec", + "typeAnnotationCall": "Недопустимая заметка с типом: выражение вызова не разрешено", + "typeAnnotationVariable": "Недопустимая заметка типа: допустима только переменная, которая является псевдонимом типа", + "typeArgListExpected": "Ожидается ParamSpec, многоточие или список типов", + "typeArgListNotAllowed": "Выражение списка не разрешено для аргумента этого типа", + "typeArgsExpectingNone": "Для класса \"{name}\" не ожидается аргументов типа", + "typeArgsMismatchOne": "Ожидается один аргумент типа, но получено {received}", + "typeArgsMissingForAlias": "Для псевдонима универсального типа \"{name}\" ожидаются аргументы типа", + "typeArgsMissingForClass": "Ожидаются аргументы типа для универсального класса \"{name}\"", + "typeArgsTooFew": "Указано слишком мало аргументов типа для \"{name}\"; ожидалось {expected}, но получено {received}", + "typeArgsTooMany": "Для \"{name}\" предоставлено слишком много аргументов типа. Ожидается {expected}, но получено {received}", + "typeAssignmentMismatch": "Выражение типа \"{sourceType}\" нельзя присвоить объявленному типу \"{destType}\"", + "typeCallNotAllowed": "Вызов type() не разрешен в заметках типа", + "typeCommentDeprecated": "Комментарии типа больше не рекомендуются к использованию; вместо них используйте заметки типа", + "typeExpectedClass": "Ожидалось выражение типа, но получено \"{type}\"", + "typeGuardArgCount": "После \"TypeGuard\" ожидается один аргумент типа", + "typeGuardParamCount": "Определяемые пользователем функции и методы защиты типов должны иметь по крайней мере один входной параметр", + "typeNotAwaitable": "\"{type}\" не является ожидаемым", + "typeNotCallable": "\"{expression}\" содержит тип \"{type}\" и не является вызываемым", + "typeNotIntantiable": "Не удается создать экземпляр \"{type}\"", + "typeNotIterable": "\"{type}\" не является итерируемым", + "typeNotSpecializable": "Не удалось специализировать тип \"{type}\"", + "typeNotSubscriptable": "Объект типа \"{type}\" не поддерживает операцию получения подстроки", + "typeNotSupportBinaryOperator": "Оператор \"{operator}\" не поддерживается для типов \"{leftType}\" и \"{rightType}\"", + "typeNotSupportBinaryOperatorBidirectional": "Оператор \"{operator}\" не поддерживается для типов \"{leftType}\" и \"{rightType}\", если ожидаемый тип является \"{expectedType}\"", + "typeNotSupportUnaryOperator": "Оператор \"{operator}\" не поддерживается для типа \"{type}\"", + "typeNotSupportUnaryOperatorBidirectional": "Оператор \"{operator}\" не поддерживается для типа \"{type}\", если ожидается тип \"{expectedType}\"", + "typeNotUsableWith": "Объект типа \"{type}\" нельзя использовать с ключевым словом \"with\", так как он не реализует метод {method}", + "typeParameterBoundNotAllowed": "Привязку или ограничение нельзя использовать с параметром типа variadic или ParamSpec", + "typeParameterConstraintTuple": "Ограничение параметра типа должно быть кортежем двух или более типов", + "typeParameterExistingTypeParameter": "Параметр типа \"{name}\" уже используется", + "typeParameterNotDeclared": "Параметр типа \"{name}\" не включен в список параметров типа для контейнера \"{container}\"", + "typeParametersMissing": "Необходимо указать хотя бы один параметр типа", + "typePartiallyUnknown": "Тип \"{name}\" частично неизвестен", + "typeUnknown": "Тип \"{name}\" неизвестен", + "typeVarAssignedName": "TypeVar необходимо присвоить переменной с именем \"{name}\"", + "typeVarAssignmentMismatch": "Тип \"{type}\" не может быть присвоен переменной типа \"{name}\"", + "typeVarBoundAndConstrained": "TypeVar не может быть одновременно привязанным и ограниченным", + "typeVarBoundGeneric": "Тип привязки TypeVar не может быть универсальным", + "typeVarConstraintGeneric": "Тип ограничения TypeVar не может быть универсальным", + "typeVarDefaultBoundMismatch": "Тип по умолчанию TypeVar должен быть подтипом привязанного типа", + "typeVarDefaultConstraintMismatch": "Тип по умолчанию TypeVar должен быть одним из ограниченных типов", + "typeVarDefaultIllegal": "Для типов переменных по умолчанию требуется версия Python 3.13 или более новая", + "typeVarDefaultInvalidTypeVar": "Параметр типа \"{name}\" имеет тип по умолчанию, который ссылается на одну или несколько переменных типа, находящихся вне области", + "typeVarFirstArg": "В качестве первого аргумента ожидалось имя TypeVar", + "typeVarNoMember": "У \"{type}\" TypeVar нет элемента \"{name}\"", + "typeVarNotSubscriptable": "Невозможно взять подстроку от \"{type}\" TypeVar", + "typeVarNotUsedByOuterScope": "Переменная типа \"{name}\" не имеет смысла в этом контексте", + "typeVarPossiblyUnsolvable": "Переменная типа \"{name}\" может остаться нерешенной, если вызывающая сторона не указывает аргумент для параметра \"{param}\"", + "typeVarScopedToReturnType": "Переменная типа \"{name}\" относится к вызываемому объекту в возвращаемом типе, и на нее нельзя ссылаться в тексте функции.", + "typeVarSingleConstraint": "TypeVar должен иметь не менее двух ограниченных типов", + "typeVarTupleContext": "TypeVarTuple не допускается в этом контексте", + "typeVarTupleDefaultNotUnpacked": "Тип по умолчанию TypeVarTuple должен быть распакованным кортежем или TypeVarTuple.", + "typeVarTupleMustBeUnpacked": "Для значения TypeVarTuple требуется оператор распаковки", + "typeVarTupleUnknownParam": "\"{name}\" является неизвестным параметром для TypeVarTuple", + "typeVarUnknownParam": "\"{name}\" является неизвестным параметром для TypeVar", + "typeVarUsedByOuterScope": "TypeVar \"{name}\" уже используется внешней областью", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" появляется в сигнатуре универсальной функции только один раз", + "typeVarVariance": "TypeVar не может быть одновременно ковариантным и контравариантным", + "typeVarWithoutDefault": "\"{name}\" не может появиться после \"{other}\" в списке параметров типа, так как у него нет типа по умолчанию", + "typeVarsNotInGenericOrProtocol": "Generic[] и Protocol[] должны включать все переменные типа", + "typedDictAccess": "Не удалось получить доступ к элементу в TypedDict", + "typedDictBadVar": "Классы TypedDict могут содержать только заметки с типом", + "typedDictBaseClass": "Все базовые классы для классов TypedDict также должны быть классами TypedDict", + "typedDictBoolParam": "От параметра \"{name}\" ожидается значение True или False", + "typedDictDelete": "Не удалось удалить элемент в TypedDict", + "typedDictEmptyName": "Имена в TypedDict не могут быть пустыми", + "typedDictEntryName": "Для имени записи словаря ожидается строковый литерал", + "typedDictEntryUnique": "Имена в словаре должны быть уникальными", + "typedDictExtraArgs": "Дополнительные аргументы TypedDict не поддерживаются", + "typedDictFieldReadOnlyRedefinition": "Поле TypedDict \"{name}\" нельзя переопределить как доступное только для чтения", + "typedDictFieldTypeRedefinition": "Поле типа TypedDict \"{name}\" нельзя переопределить", + "typedDictFirstArg": "В качестве первого аргумента ожидается имя класса TypedDict", + "typedDictSecondArgDict": "В качестве второго параметра ожидается словарь или ключевое слово", + "typedDictSecondArgDictEntry": "Ожидается простая запись словаря", + "typedDictSet": "Не удалось назначить элемент в TypedDict", + "unaccessedClass": "Нет доступа к классу \"{name}\"", + "unaccessedFunction": "Доступ к функции \"{name}\" не производится", + "unaccessedImport": "Доступ к импорту \"{name}\" не производится", + "unaccessedSymbol": "Доступ к \"{name}\" не осуществляется", + "unaccessedVariable": "Доступ к переменной \"{name}\" не производится", + "unannotatedFunctionSkipped": "Анализ функции \"{name}\" пропущен, так как она не аннотирована.", + "unexpectedAsyncToken": "После \"async\" ожидается \"def\", \"with\" или \"for\"", + "unexpectedExprToken": "Непредвиденный токен в конце выражения", + "unexpectedIndent": "Непредвиденный отступ", + "unexpectedUnindent": "Отступ не ожидается", + "unhashableDictKey": "Ключ словаря должен быть хэшируемым", + "unhashableSetEntry": "Запись набора должна быть хэшируемой", + "uninitializedAbstractVariables": "Переменные, определенные в абстрактном базовом классе, не инициализированы в окончательном классе \"{classType}\"", + "uninitializedInstanceVariable": "Переменная экземпляра \"{name}\" не инициализирована ни в тексте класса, ни в методе __init__", + "unionForwardReferenceNotAllowed": "Синтаксис объединения не может использоваться со строковым операндом; заключите всё выражение в кавычки", + "unionSyntaxIllegal": "Альтернативный синтаксис объединений можно использовать в версии Python не ниже 3.10", + "unionTypeArgCount": "Для объединения требуется два или более аргумента типа", + "unmatchedEndregionComment": "Для #endregion отсутствует соответствующий #region", + "unmatchedRegionComment": "Для #endregion отсутствует соответствующий #endregion", + "unnecessaryCast": "Ненужный вызов \"cast\"; тип уже является \"{type}\"", + "unnecessaryIsInstanceAlways": "Ненужный вызов isinstance; \"{testType}\" всегда является экземпляром \"{classType}\"", + "unnecessaryIsSubclassAlways": "Ненужный вызов issubclass. \"{testType}\" всегда является подклассом \"{classType}\"", + "unnecessaryPyrightIgnore": "Ненужный комментарий \"# pyright: ignore\"", + "unnecessaryPyrightIgnoreRule": "Ненужное правило \"# pyright: ignore\": \"{name}\"", + "unnecessaryTypeIgnore": "Ненужный комментарий \"# type: ignore\"", + "unpackArgCount": "Ожидается один аргумент типа после \"Unpack\"", + "unpackExpectedTypeVarTuple": "В качестве аргумента типа для распаковки ожидается TypeVarTuple или Tuple", + "unpackExpectedTypedDict": "Ожидается аргумент типа TypedDict для распаковки", + "unpackIllegalInComprehension": "Операция распаковки в понимании не разрешена", + "unpackInAnnotation": "Оператор распаковки нельзя использовать в заметке типа", + "unpackInDict": "Операция распаковки в словарях не разрешена", + "unpackInSet": "Оператор распаковки не разрешен в наборе", + "unpackNotAllowed": "Распаковка не разрешена в этом контексте", + "unpackOperatorNotAllowed": "Операция распаковки в этом контексте не разрешена", + "unpackTuplesIllegal": "Операцию распаковки в кортежах можно использовать в Python версии не ниже 3.8", + "unpackedArgInTypeArgument": "Неупакованные аргументы нельзя использовать в списках аргументов типа", + "unpackedArgWithVariadicParam": "Невозможно использовать распакованный аргумент для параметра TypeVarTuple", + "unpackedDictArgumentNotMapping": "Выражение аргумента после ** должно быть сопоставлением с типом ключа \"str\".", + "unpackedDictSubscriptIllegal": "Оператор распаковки словаря не допускается внутри операции взятия подстроки", + "unpackedSubscriptIllegal": "Оператор распаковки в операции взятия подстроки можно использовать в Python версии не ниже 3.11", + "unpackedTypeVarTupleExpected": "Ожидается распакованный TypeVarTuple; используйте Unpack[{name1}] или *{name2}", + "unpackedTypedDictArgument": "Не удалось сопоставить распакованный аргумент TypedDict с параметрами", + "unreachableCode": "Код недоступен", + "unreachableExcept": "Предложение Except недоступно, так как исключение уже обработано", + "unsupportedDunderAllOperation": "Операция на \"__all__\" не поддерживается, поэтому список экспортируемых символов может быть неправильным", + "unusedCallResult": "Результат выражения вызова принадлежит к типу \"{type}\" и не используется. Назначьте переменной \"_\", если это сделано намеренно", + "unusedCoroutine": "Результат вызова асинхронной функции не используется; добавьте ключевое слово \"await\" или присвойте результат переменной", + "unusedExpression": "Значение выражения не используется", + "varAnnotationIllegal": "Заметки типа для переменных можно использовать в Python версии не ниже 3.6. Для совместимости с более ранними версиями используйте комментарий к типу.", + "variableFinalOverride": "Переменная \"{name}\" помечена как Final и переопределяет неокончательную переменную с тем же именем в классе \"{className}\"", + "variadicTypeArgsTooMany": "Список аргументов типа может содержать не более одного распакованного TypeVarTuple или Tuple", + "variadicTypeParamTooManyAlias": "Псевдоним типа может иметь не более одного параметра типа TypeVarTuple, но получил несколько ({names})", + "variadicTypeParamTooManyClass": "Универсальный класс может иметь не более одного параметра типа TypeVarTuple, но получил несколько ({names})", + "walrusIllegal": "Оператор \":=\" может использоваться в Python версии не ниже 3.8", + "walrusNotAllowed": "Оператор \":=\" в этом контексте можно использовать только взятым в скобки", + "wildcardInFunction": "Импорт с подстановочными знаками в классе или функции запрещен", + "wildcardLibraryImport": "Импорт подстановочных знаков из библиотеки запрещен", + "wildcardPatternTypePartiallyUnknown": "Тип, захваченный шаблоном подстановки, частично неизвестен", + "wildcardPatternTypeUnknown": "Тип, захваченный шаблоном подстановки, неизвестен", + "yieldFromIllegal": "\"Yield from\" можно использовать в Python версии не ниже 3.3", + "yieldFromOutsideAsync": "\"yield from\" не допускается в асинхронной функции", + "yieldOutsideFunction": "\"yield\" не допускается за пределами функции или лямбда-выражении", + "yieldWithinListCompr": "\"yield\" не допускается внутри понимания списка", + "zeroCaseStatementsFound": "Операторе match должен включать по крайней мере один оператор case", + "zeroLengthTupleNotAllowed": "Кортеж нулевой длины не разрешен в этом контексте" + }, + "DiagnosticAddendum": { + "argParam": "Аргумент соответствует параметру \"{paramName}\"", + "argParamFunction": "Аргумент соответствует параметру \"{paramName}\" функции \"{functionName}\"", + "argsParamMissing": "У параметра \"*{paramName}\" нет соответствующего параметра", + "argsPositionOnly": "Несоответствие параметров только положения. Ожидается {expected}, но получено {received}", + "argumentType": "Аргумент принадлежит к типу \"{type}\"", + "argumentTypes": "Типы аргументов: ({types})", + "assignToNone": "Этот тип нельзя присвоить типу \"None\"", + "asyncHelp": "Вы имели в виду \"async with\"?", + "baseClassOverriddenType": "Базовый класс \"{baseClass}\" предоставляет тип \"{type}\", который переопределен", + "baseClassOverridesType": "Базовый класс \"{baseClass}\" переопределяет тип \"{type}\"", + "conditionalRequiresBool": "Метод __bool__ для типа \"{operandType}\" возвращает тип \"{boolReturnType}\", а не \"bool\"", + "dataClassFieldLocation": "Объявление поля", + "dataClassFrozen": "Элемент \"{name}\" зафиксирован", + "finalMethod": "Окончательный метод", + "functionParamDefaultMissing": "В параметре \"{name}\" отсутствует аргумент по умолчанию.", + "functionParamName": "Несоответствие имени параметра: \"{destName}\" и \"{srcName}\"", + "functionReturnTypeMismatch": "Тип возвращаемого значения функции \"{sourceType}\" несовместим с типом \"{destType}\"", + "functionTooFewParams": "Функция принимает слишком мало позиционных параметров; ожидалось {expected}, но получено {received}", + "functionTooManyParams": "Функция принимает слишком много позиционных параметров; ожидалось {expected}, но получено {received}", + "incompatibleDeleter": "Метод удаления свойства является несовместимым", + "incompatibleGetter": "Несовместимый метод получения свойств", + "incompatibleSetter": "Метод задания свойства является несовместимым", + "initMethodLocation": "Метод __init__ определен в классе \"{type}\"", + "initMethodSignature": "Сигнатура __init__ — \"{type}\"", + "keyNotRequired": "\"{name}\" не является обязательным ключом в \"{type}\", поэтому доступ может вызвать исключение во время выполнения", + "keyReadOnly": "\"{name}\" является ключом только для чтения в \"{type}\"", + "keyRequiredDeleted": "\"{name}\" является обязательным ключом и не подлежит удалению", + "keyUndefined": "\"{name}\" не является определенным ключом в \"{type}\"", + "kwargsParamMissing": "У параметра \"**{paramName}\" нет соответствующего параметра", + "listAssignmentMismatch": "Тип \"{type}\" несовместим с целевым списком", + "literalAssignmentMismatch": "\"{sourceType}\" нельзя присвоить типу \"{destType}\"", + "matchIsNotExhaustiveHint": "Если не предполагается исчерпывающая обработка, добавьте \"case _: pass\"", + "matchIsNotExhaustiveType": "Тип \"{type}\" не обрабатывается", + "memberAssignment": "Выражение типа \"{type}\" не может быть назначено элементу \"{name}\" класса \"{classType}\"", + "memberIsAbstract": "\"{type}.{name}\" является абстрактным", + "memberIsAbstractMore": "и еще {{count}}", + "memberIsFinalInProtocol": "\"{name}\" помечено в протоколе как Final", + "memberIsInitVar": "Элемент \"{name}\" является полем только для инициализации", + "memberIsInvariant": "Элемент \"{name}\" инвариантен, поскольку помечен как mutable", + "memberIsNotFinalInProtocol": "\"{name}\" не помечен как окончательный в протоколе", + "memberSetClassVar": "Элемент \"{name}\" не может быть назначен через экземпляр класса, так как это ClassVar", + "memberTypeMismatch": "\"{name}\" является несовместимым типом", + "memberUnknown": "Элемент \"{name}\" неизвестен", + "missingDeleter": "Отсутствует метод удаления свойства", + "missingGetter": "Отсутствует метод получения свойства", + "missingProtocolMember": "Элемент \"{name}\" объявлен в классе протокола \"{classType}\"", + "missingSetter": "Отсутствует метод установки свойств", + "namedParamMissingInDest": "В целевом объекте отсутствует параметр ключевого слова \"{name}\"", + "namedParamMissingInSource": "В источнике нет параметра ключевого слова \"{name}\"", + "namedParamTypeMismatch": "Параметр ключевого слова {index} типа \"{sourceType}\" нельзя присвоить типу \"{destType}\"", + "newMethodLocation": "Метод __new__ определен в классе \"{type}\"", + "newMethodSignature": "Сигнатура метода __new__ требует \"{type}\"", + "noOverloadAssignable": "Нет перегруженной функции, соответствующей типу \"{type}\"", + "orPatternMissingName": "Отсутствуют имена: {name}", + "overloadNotAssignable": "Одна или несколько перегрузок \"{name}\" не подлежат присвоению", + "overloadSignature": "Здесь определена сигнатура перегрузки", + "overloadWithImplementation": "Тело перегрузки функции должно представлять собой \"...\"", + "overriddenMethod": "Переопределенный метод", + "overriddenSymbol": "Переопределенный символ", + "overrideNoOverloadMatches": "В переопределении нет сигнатуры перегрузки, совместимой с базовым методом", + "overrideNotClassMethod": "Базовый метод объявлен как classmethod, а его переопределение — нет", + "overrideNotInstanceMethod": "Базовый метод объявлен как метод экземпляра, а его переопределение — нет", + "overrideNotStaticMethod": "Базовый метод объявлен как статический, а его переопределение — нет", + "overrideOverloadNoMatch": "Перегрузка {index} несовместима с базовым методом.", + "overrideOverloadOrder": "Перегрузки в методе переопределения должны располагаться в том же порядке, что и в базовом методе", + "overrideParamKeywordNoDefault": "Несоответствие параметра ключевого слова \"{name}\": базовый параметр содержит значение аргумента по умолчанию, параметр переопределения — нет", + "overrideParamKeywordType": "Несоответствие типа параметра ключевого слова \"{name}\": базовый параметр имеет тип \"{baseType}\", параметр переопределения имеет тип \"{overrideType}\"", + "overrideParamName": "Несоответствие имени параметра {index}: базовый параметр называется \"{baseName}\", параметр переопределения называется \"{overrideName}\"", + "overrideParamNameExtra": "Параметр \"{name}\" отсутствует в базовом классе", + "overrideParamNameMissing": "Параметр \"{name}\" отсутствует в переопределении", + "overrideParamNamePositionOnly": "Несоответствие имени параметра {index}: базовый параметр является именованным (\"{baseName}\"), а переопределяющий параметр – чисто позиционным.", + "overrideParamNoDefault": "Несоответствие параметра {index}: базовый параметр содержит значение аргумента по умолчанию, параметр переопределения — нет", + "overrideParamType": "Несоответствие типа параметра {index}: базовый параметр имеет тип \"{baseType}\", параметр переопределения имеет тип \"{overrideType}\"", + "overridePositionalParamCount": "Несоответствие позиционного подсчета параметров. Базовый метод содержит {baseCount}, но переопределение содержит {overrideCount}", + "overrideReturnType": "Несоответствие типа возвращаемого значения: базовый метод возвращает тип \"{baseType}\", а переопределение — \"{overrideType}\"", + "overrideType": "Базовый класс определяет тип как \"{type}\"", + "paramAssignment": "Параметр {index}: тип \"{sourceType}\" нельзя присвоить типу \"{destType}\"", + "paramSpecMissingInOverride": "В методе переопределения отсутствуют параметры ParamSpec.", + "paramType": "Параметр принадлежит к типу \"{paramType}\"", + "privateImportFromPyTypedSource": "Вместо этого используйте импорт из \"{module}\"", + "propertyAccessFromProtocolClass": "Свойство, определенное в классе протокола, не может быть доступно как переменная класса.", + "propertyMethodIncompatible": "Метод свойства \"{name}\" несовместим", + "propertyMethodMissing": "Метод свойства \"{name}\" отсутствует в переопределении", + "propertyMissingDeleter": "Для свойства \"{name}\" не определен метод удаления", + "propertyMissingSetter": "Для свойства \"{name}\" не определен метод задания", + "protocolIncompatible": "\"{sourceType}\" несовместим с протоколом \"{destType}\"", + "protocolMemberClassVar": "\"{name}\" не является переменной класса", + "protocolMemberMissing": "\"{name}\" отсутствует.", + "protocolSourceIsNotConcrete": "\"{sourceType}\" не является конкретным типом класса и не может быть присвоен типу \"{destType}\"", + "pyrightCommentIgnoreTip": "Для подавления диагностики в одной строке используйте конструкцию \"# pyright: ignore[<правила диагностики>]", + "readOnlyAttribute": "Атрибут \"{name}\" доступен только для чтения", + "seeClassDeclaration": "См. объявление класса", + "seeDeclaration": "См. объявление", + "seeFunctionDeclaration": "См. объявление функции", + "seeMethodDeclaration": "См. объявление метода", + "seeParameterDeclaration": "Просмотреть объявление параметра", + "seeTypeAliasDeclaration": "Просмотреть объявление псевдонима типа", + "seeVariableDeclaration": "Просмотреть объявление переменной", + "tupleAssignmentMismatch": "Тип \"{type}\" несовместим с целевым кортежем", + "tupleEntryTypeMismatch": "Запись кортежа {entry} имеет неверный тип", + "tupleSizeMismatch": "Несоответствие размеров элемента: ожидается \"{expected}\", но получено \"{received}\"", + "typeAssignmentMismatch": "Тип \"{sourceType}\" нельзя присвоить типу \"{destType}\"", + "typeBound": "Тип \"{sourceType}\" несовместим с привязанным типом \"{destType}\" для переменной типа \"{name}\"", + "typeConstrainedTypeVar": "Тип \"{type}\" несовместим с переменной ограниченного типа \"{name}\"", + "typeIncompatible": "\"{sourceType}\" несовместим с \"{destType}\"", + "typeNotCallable": "Тип \"{type}\" не является вызываемым", + "typeNotClass": "\"{type}\" не является классом.", + "typeNotStringLiteral": "\"{type}\" не является строковым литералом", + "typeOfSymbol": "Тип \"{name}\" является \"{type}\"", + "typeParamSpec": "Тип \"{type}\" несовместим с ParamSpec \"{name}\"", + "typeUnsupported": "Тип \"{type}\" не поддерживается", + "typeVarDefaultOutOfScope": "Переменная типа \"{name}\" лежит за пределами области", + "typeVarIsContravariant": "TypeVar \"{name}\" является контравариантным", + "typeVarIsCovariant": "TypeVar \"{name}\" является ковариантным", + "typeVarIsInvariant": "TypeVar \"{name}\" является инвариантным", + "typeVarNotAllowed": "TypeVar или универсальный тип с аргументами типа не разрешены", + "typeVarTupleRequiresKnownLength": "TypeVarTuple не может граничить с кортежем неизвестной длины", + "typeVarUnsolvableRemedy": "Укажите перегрузку, которая указывает тип возвращаемого значения, если аргумент не передается", + "typeVarsMissing": "Отсутствуют переменные типа: {names}", + "typedDictFieldMissing": "\"{name}\" отсутствует в \"{type}\"", + "typedDictFieldNotReadOnly": "\"{name}\" не является элементом \"{type}\" только для чтения", + "typedDictFieldNotRequired": "\"{name}\" не является обязательным в \"{type}\"", + "typedDictFieldRequired": "\"{name}\" является обязательным в \"{type}\"", + "typedDictFieldTypeMismatch": "Тип \"{type}\" нельзя присвоить полю \"{name}\"", + "typedDictFieldTypeRedefinition": "Тип в родительском классе — \"{parentType}\", а в дочернем — \"{childType}\"", + "typedDictFieldUndefined": "Поле \"{name}\" в типе \"{type}\" является неопределенным", + "typedDictFinalMismatch": "\"{sourceType}\" несовместим с \"{destType}\" из-за несоответствия окончательности", + "unhashableType": "Тип \"{type}\" не является хэшируемым", + "uninitializedAbstractVariable": "Переменная экземпляра \"{name}\" определена в абстрактном базовом классе \"{classType}\", но не инициализирована", + "unreachableExcept": "\"{exceptionType}\" является подклассом \"{parentType}\"", + "useDictInstead": "Используйте Dict[T1, T2] для указания типа словаря", + "useListInstead": "Используйте List[T] для указания типа списка или Union[T1, T2] для указания типа объединения", + "useTupleInstead": "Используйте конструкцию Tuple[T1, ..., Tn], чтобы указать тип кортежа, или Union[T1, T2], чтобы указать тип объединения", + "useTypeInstead": "Используйте вместо этого Type[T]", + "varianceMismatchForClass": "Вариант аргумента типа \"{typeVarName}\" несовместим с базовым классом \"{className}\"", + "varianceMismatchForTypeAlias": "Отклонение аргумента типа \"{typeVarName}\" несовместимо с \"{typeAliasParam}\"" + } } diff --git a/packages/pyright-internal/src/localization/package.nls.tr.json b/packages/pyright-internal/src/localization/package.nls.tr.json new file mode 100644 index 000000000..7dd2203e9 --- /dev/null +++ b/packages/pyright-internal/src/localization/package.nls.tr.json @@ -0,0 +1,718 @@ +{ + "CodeAction": { + "addOptionalToAnnotation": "Tür Ek Açıklamasına \"Optional\" ekleyin", + "createTypeStub": "Tür Saplaması Oluştur", + "createTypeStubFor": "\"{moduleName}\" için Tür Saplaması Oluştur", + "executingCommand": "Komut yürütülüyor", + "filesToAnalyzeCount": "analiz edilecek {count} dosya var", + "filesToAnalyzeOne": "Analiz edilecek 1 dosya", + "findingReferences": "Başvurular bulunuyor", + "organizeImports": "İçeri Aktarmaları Düzenle", + "renameShadowedFile": "\"{oldFile}\" dosyasını \"{newFile}\" olarak yeniden adlandır" + }, + "Diagnostic": { + "abstractMethodInvocation": "\"{method}\" metodu soyut olduğundan çağrılamaz", + "annotatedParamCountMismatch": "Parametre ek açıklama sayısı uyuşmazlığı: {expected} bekleniyordu ancak {received} alındı", + "annotatedTypeArgMissing": "\"Annotated\" için bir tür bağımsız değişkeni ve bir veya daha fazla ek açıklama bekleniyordu", + "annotationFormatString": "Tür ek açıklamaları biçim dizesi sabit değerlerini (f-strings) kullanamaz", + "annotationNotSupported": "Tür ek açıklaması bu deyim için desteklenmiyor", + "annotationSpansStrings": "Tür ek açıklamaları birden çok dize sabit değerine yayılamaz", + "annotationStringEscape": "Tür ek açıklamaları kaçış karakterleri içeremez", + "argAssignment": "\"{argType}\" türünde bağımsız değişken, \"{paramName}\" türündeki parametreye atanamaz", + "argAssignmentFunction": "\"{argType}\" türünde bağımsız değişken, \"{functionName}\" işlevi içinde \"{paramName}\" türündeki parametreye atanamaz", + "argAssignmentParam": "\"{argType}\" türünde bağımsız değişken, \"{paramName}\" türündeki \"{paramType}\" parametresine atanamaz", + "argAssignmentParamFunction": "\"{argType}\" türünde bağımsız değişken, \"{functionName}\" işlevi içinde \"{paramName}\" türündeki \"{paramType}\" parametresine atanamaz", + "argMissingForParam": "{name} parametresi için bağımsız değişken eksik", + "argMissingForParams": "{names} parametrelerinin bağımsız değişkenleri eksik", + "argMorePositionalExpectedCount": "{expected} tane daha konumsal bağımsız değişken bekleniyordu", + "argMorePositionalExpectedOne": "1 tane daha konumsal bağımsız değişken bekleniyordu", + "argPositional": "Konumsal bağımsız değişken bekleniyordu", + "argPositionalExpectedCount": "{expected} konumsal bağımsız değişken bekleniyordu", + "argPositionalExpectedOne": "1 konumsal bağımsız değişken bekleniyordu", + "argTypePartiallyUnknown": "Bağımsız değişken türü kısmen bilinmiyor", + "argTypeUnknown": "Bağımsız değişken türü bilinmiyor", + "assertAlwaysTrue": "Assert ifadesi her zaman true olarak değerlendirilir", + "assertTypeArgs": "\"assert_type\" iki konumsal bağımsız değişken bekliyor", + "assertTypeTypeMismatch": "\"assert_type\" uyuşmuyor; \"{expected}\" bekleniyordu ancak \"{received}\" alındı", + "assignmentExprComprehension": "\"{name}\" atama ifadesi hedefi, hedef için anlama ile aynı adı kullanamaz", + "assignmentExprContext": "Atama ifadesi modül, işlev veya lambda içinde olmalıdır", + "assignmentExprInSubscript": "Bir alt simge içindeki atama ifadeleri yalnızca Python 3.10 ve daha yeni sürümlerinde desteklenir", + "assignmentInProtocol": "Protokol sınıfı içindeki örnek veya sınıf değişkenleri sınıf gövdesi içinde açıkça bildirilmelidir", + "assignmentTargetExpr": "İfade, atama hedefi olamaz", + "asyncNotInAsyncFunction": "Zaman uyumsuz işlevin dışında \"async\" kullanımına izin verilmez", + "awaitIllegal": "\"await\" kullanımı için Python 3.5 veya daha yeni bir sürümü gerekiyor", + "awaitNotInAsync": "\"await\" öğesi yalnızca zaman uyumsuz işlev içinde kullanılabilir", + "backticksIllegal": "Eski kesme işaretleri arasında yer almayan ifadeler Python3.x’de desteklenmiyor; bunun yerine repr kullanın", + "baseClassCircular": "Sınıf kendi türevi olamaz", + "baseClassFinal": "\"{type}\" temel sınıfı final olarak işaretlendi ve alt sınıf olamaz", + "baseClassInvalid": "Sınıfın bağımsız değişkeni bir temel sınıf olmalıdır", + "baseClassMethodTypeIncompatible": "\"{classType}\" sınıfına ait temel sınıflar, \"{name}\" metodunu uyumsuz bir şekilde tanımlıyor", + "baseClassUnknown": "Temel sınıf türü bilinmiyor, türetilmiş sınıfı gizliyor", + "baseClassVariableTypeIncompatible": "\"{classType}\" sınıfı için temel sınıflar, \"{name}\" değişkenini uyumsuz bir şekilde tanımlıyor", + "bindTypeMismatch": "\"{type}\", \"{paramName}\" parametresine atanamadığından \"{methodName}\" metodu bağlanamadı", + "breakOutsideLoop": "\"break\" yalnızca bir döngü içinde kullanılabilir", + "callableExtraArgs": "\"Callable\" için yalnızca iki tür bağımsız değişkeni bekleniyordu", + "callableFirstArg": "Parametre türü listesi veya \"...\" bekleniyordu", + "callableNotInstantiable": "\"{type}\" türünün örneği oluşturulamıyor", + "callableSecondArg": "\"Callable\" için ikinci tür bağımsız değişkeni olarak dönüş türü bekleniyordu", + "casePatternIsIrrefutable": "Reddedilemez desene yalnızca son case deyimi için izin verilir", + "classAlreadySpecialized": "\"{type}\" türü zaten özelleştirilmiş", + "classDecoratorTypeUnknown": "Türü belirtilmemiş sınıf dekoratörü sınıf türünü gizliyor; dekoratör yoksayılıyor", + "classDefinitionCycle": "\"{name}\" için sınıf tanımı kendisine bağımlı", + "classGetItemClsParam": "__class_getitem__ geçersiz kılması bir \"cls\" parametresi almalı", + "classMethodClsParam": "Sınıf metotları bir \"cls\" parametresi almalıdır", + "classNotRuntimeSubscriptable": "\"{name}\" sınıfına ait alt simge çalışma zamanı özel durumunu oluşturur; tür ek açıklamalarını tırnak içine alın", + "classPatternBuiltInArgCount": "Sınıf deseni en fazla 1 konumsal alt deseni kabul eder", + "classPatternBuiltInArgPositional": "Sınıf deseni yalnızca konumsal alt desen kabul eder", + "classPatternTypeAlias": "\"{type}\" özel bir tür diğer adı olduğundan sınıf deseninde kullanılamaz", + "classTypeParametersIllegal": "Sınıf türü parametresi söz dizimi için Python 3.12 veya daha yeni bir sürümü gerekiyor", + "classVarFirstArgMissing": "\"ClassVar\" sonrasında tür bağımsız değişkeni bekleniyordu", + "classVarNotAllowed": "Bu bağlamda \"ClassVar\" kullanımına izin verilmiyor", + "classVarOverridesInstanceVar": "\"{name}\" sınıf değişkeni \"{className}\" sınıfındaki aynı ada sahip örnek değişkenini geçersiz kılıyor", + "classVarTooManyArgs": "\"ClassVar\" sonrasında yalnızca bir tür bağımsız değişkeni bekleniyordu", + "classVarWithTypeVar": "\"ClassVar\" türü tür değişkenleri içeremez", + "clsSelfParamTypeMismatch": "\"{name}\" parametre türü, \"{classType}\" sınıfının üst türü olmalıdır", + "codeTooComplexToAnalyze": "Kod analiz edilemeyecek kadar karmaşık; alt yordamlara ayırarak yeniden düzenleyip veya koşullu kod yollarını azaltarak karmaşıklığı azaltın", + "collectionAliasInstantiation": "\"{type}\" türündeki örnek oluşturulamıyor, bunun yerine \"{alias}\" kullanın", + "comparisonAlwaysFalse": "\"{leftType}\" türleri ve \"{rightType}\" türleri çakışmadığından koşul her zaman False olarak değerlendirilir", + "comparisonAlwaysTrue": "\"{leftType}\" ve \"{rightType}\" türleri çakışmadığından ifade her zaman True olarak değerlendirilir", + "comprehensionInDict": "Anlama diğer küme girdileri ile kullanılamaz", + "comprehensionInSet": "Anlama diğer küme girdileri ile kullanılamaz", + "concatenateParamSpecMissing": "\"Concatenate\" için son tür bağımsız değişkeni bir ParamSpec olmalıdır", + "concatenateTypeArgsMissing": "\"Birleştirme\" en az iki tür bağımsız değişken gerektirir", + "conditionalOperandInvalid": "\"{type}\" türündeki koşullu işlenen geçersiz", + "constantRedefinition": "\"{name}\" sabit (büyük harf olduğundan) ve yeniden tanımlanamaz", + "constructorNoArgs": "\"{type}\" oluşturucusu için bağımsız değişken beklenmiyordu", + "constructorParametersMismatch": "\"{classType}\" sınıfındaki __new__ ve __init__ imzaları arasında uyuşmazlık var", + "containmentAlwaysFalse": "\"{leftType}\" türleri ve \"{rightType}\" türleri çakışmadığından ifade her zaman False olarak değerlendirilir", + "containmentAlwaysTrue": "\"{leftType}\" türleri ve \"{rightType}\" türleri çakışmadığından ifade her zaman True olarak değerlendirilir", + "continueInFinally": "\"continue\" finally yan tümcesi içinde kullanılamaz", + "continueOutsideLoop": "\"continue\" yalnızca bir döngü içinde kullanılabilir", + "dataClassBaseClassFrozen": "Dondurulmuş olmayan bir sınıf dondurulmuş bir sınıftan devralamaz", + "dataClassBaseClassNotFrozen": "Dondurulmuş sınıf, dondurulmuş olmayan bir sınıftan devralamaz", + "dataClassConverterFunction": "\"{argType}\" türündeki bağımsız değişken, \"{fieldName}\" türündeki \"{fieldType}\" alanı için geçerli bir dönüştürücü değil", + "dataClassConverterOverloads": "\"{funcName}\" işlevinin aşırı yüklemelerinden hiçbiri \"{fieldType}\" türündeki \"{fieldName}\" alanı için geçerli dönüştürücüler değil", + "dataClassFieldWithDefault": "Varsayılan değerleri olmayan alanlar, varsayılan değerleri olan alanlardan sonra gelemez", + "dataClassFieldWithPrivateName": "Veri sınıfı alanı özel ad kullanamıyor", + "dataClassFieldWithoutAnnotation": "Tür ek açıklaması olmayan veri sınıfı alanı çalışma zamanı özel durumuna neden olur", + "dataClassPostInitParamCount": "Veri sınıfı __post_init__ parametre sayısı yanlış; InitVar alanlarının sayısı {expected}", + "dataClassPostInitType": "Veri sınıfı __post_init__ metodu parametre türü ile \"{fieldName}\" alanı uyuşmuyor", + "dataClassSlotsOverwrite": "__slots__ zaten sınıfta tanımlı", + "dataClassTransformExpectedBoolLiteral": "Statik olarak True veya False olarak değerlendirilen ifade bekleniyordu", + "dataClassTransformFieldSpecifier": "Sınıfların veya işlevlerin demeti bekleniyordu ancak \"{type}\" türü alındı", + "dataClassTransformPositionalParam": "\"dataclass_transform\" için tüm bağımsız değişkenlerin anahtar sözcük bağımsız değişkenleri olması gerekiyor", + "dataClassTransformUnknownArgument": "\"{name}\" bağımsız değişkeni, dataclass_transform tarafından desteklenmiyor", + "declaredReturnTypePartiallyUnknown": "Bildirilen \"{returnType}\" dönüş türü kısmen bilinmiyor", + "declaredReturnTypeUnknown": "Bildirilen dönüş türü bilinmiyor", + "defaultValueContainsCall": "Parametre varsayılan değer ifadesinde işlev çağrılarına ve değiştirilebilir nesnelere izin verilmez", + "defaultValueNotAllowed": "\"*\" veya \"**\" olan parametre varsayılan değere sahip olamaz", + "delTargetExpr": "İfade silinemiyor", + "deprecatedClass": "\"{name}\" sınıfı kullanım dışı", + "deprecatedConstructor": "\"{name}\" sınıfının oluşturucusu kullanım dışı", + "deprecatedFunction": "Bu \"{name}\" işlevi kullanım dışı", + "deprecatedType": "Bu tür Python {version} sürümünden itibaren kullanım dışı; bunun yerine \"{replacement}\" kullanın", + "dictExpandIllegalInComprehension": "Sözlük genişletmeye anlamada izin verilmiyor", + "dictInAnnotation": "Tür ek açıklamasında sözlük ifadesi kullanılamaz", + "dictKeyValuePairs": "Sözlük girdileri anahtar/değer çiftleri içermelidir", + "dictUnpackIsNotMapping": "Sözlük açma işleci için eşleme bekleniyordu", + "dunderAllSymbolNotPresent": "\"{name}\" __all__ ile belirtildi ancak modülde yok", + "duplicateArgsParam": "Yalnızca bir \"*\" parametresi kullanılabilir", + "duplicateBaseClass": "Yinelenen temel sınıfa izin verilmiyor", + "duplicateCapturePatternTarget": "\"{name}\" yakalama hedefi, aynı desen içinde birden çok kez bulunamaz", + "duplicateCatchAll": "Yalnızca bir catch-all except yan tümcesine izin verilir", + "duplicateEnumMember": "\"{name}\" sabit listesi üyesi zaten bildirildi", + "duplicateGenericAndProtocolBase": "Yalnızca bir Genel[...] veya Protocol[...] temel sınıfı kullanılabilir", + "duplicateImport": "\"{importName}\" birden çok kez içeri aktarıldı", + "duplicateKeywordOnly": "Yalnızca bir \"*\" ayırıcısı kullanılabilir", + "duplicateKwargsParam": "Yalnızca bir \"**\" parametresine izin verilir", + "duplicateParam": "\"{name}\" yinelenen parametresi", + "duplicatePositionOnly": "Yalnızca bir \"/\" parametresine izin verilir", + "duplicateStarPattern": "Desen dizisinde yalnızca bir \"*\" desenine izin verilir", + "duplicateStarStarPattern": "Yalnızca bir \"**\" girdisine izin verilir", + "duplicateUnpack": "Listede yalnızca bir paket açma işlemine izin veriliyor", + "ellipsisContext": "\"...\" kullanımına bu bağlamda izin verilmiyor", + "ellipsisSecondArg": "\"...\" yalnızca iki bağımsız değişkenin ikincisi olarak kullanılabilir", + "enumClassOverride": "\"{name}\" sabit listesi sınıfı final niteliğinde ve alt sınıf olamaz", + "exceptionGroupIncompatible": "Özel durum grubu söz dizimi (\"except*\") için Python 3.11 veya daha yeni bir sürümü gerekiyor", + "exceptionTypeIncorrect": "\"{type}\", BaseException türevi değil", + "exceptionTypeNotClass": "\"{type}\" geçerli bir özel durum sınıfı değil", + "exceptionTypeNotInstantiable": "\"{type}\" özel durum türü oluşturucusu bir veya daha fazla bağımsız değişken gerektiriyor", + "expectedAfterDecorator": "Dekoratörden sonra işlev veya sınıf bildirimi bekleniyordu", + "expectedArrow": "Dönüş türü ek açıklaması sonrasında \"->\" bekleniyordu", + "expectedAsAfterException": "Özel durum türünden sonra \"as\" bekleniyordu", + "expectedAssignRightHandExpr": "\"=\" öğesinin sağ tarafında ifade bekleniyordu", + "expectedBinaryRightHandExpr": "İşlecin sağında ifade bekleniyordu", + "expectedBoolLiteral": "True veya False bekleniyor", + "expectedCase": "\"case\" deyimi bekleniyordu", + "expectedClassName": "Sınıf adı bekleniyordu", + "expectedCloseBrace": "\"{\" kapatılmadı", + "expectedCloseBracket": "\"[\" kapatılmadı", + "expectedCloseParen": "\"(\" kapatılmadı", + "expectedColon": "\":\" bekleniyordu", + "expectedComplexNumberLiteral": "Desen eşleme için karmaşık sayı sabit değeri bekleniyordu", + "expectedDecoratorExpr": "İfade formu Python 3.9'dan önceki dekoratör için desteklenmiyor", + "expectedDecoratorName": "Dekoratör adı bekleniyordu", + "expectedDecoratorNewline": "Dekoratör sonunda yeni satır bekleniyordu", + "expectedDelExpr": "\"del\" sonrasında ifade bekleniyordu", + "expectedElse": "\"else\" bekleniyordu", + "expectedEquals": "\"=\" bekleniyordu", + "expectedExceptionClass": "Geçersiz özel durum sınıfı veya nesnesi", + "expectedExceptionObj": "Özel durum nesnesi, özel durum sınıfı veya None bekleniyordu", + "expectedExpr": "İfade bekleniyor", + "expectedFunctionAfterAsync": "\"async\" sonrasında işlev tanımı bekleniyordu", + "expectedFunctionName": "\"def\" sonrasında işlev adı bekleniyordu", + "expectedIdentifier": "Tanımlayıcı bekleniyordu", + "expectedImport": "\"import\" bekleniyordu", + "expectedImportAlias": "\"as\" sonrasında sembol bekleniyordu", + "expectedImportSymbols": "İçeri aktarmadan sonra bir veya daha fazla sembol adı bekleniyordu", + "expectedIn": "\"in\" bekleniyordu", + "expectedInExpr": "\"in\" sonrasında ifade bekleniyordu", + "expectedIndentedBlock": "Girintili blok bekleniyordu", + "expectedMemberName": "\".\" sonrasında üye adı bekleniyordu", + "expectedModuleName": "Modül adı bekleniyordu", + "expectedNameAfterAs": "\"as\" sonrasında sembol adı bekleniyordu", + "expectedNamedParameter": "Anahtar sözcük parametresi, \"*\" sonrasında gelmelidir", + "expectedNewline": "Yeni satır bekleniyordu", + "expectedNewlineOrSemicolon": "Deyimler yeni satırlarla veya noktalı virgüllerle ayrılarak belirtilmelidir", + "expectedOpenParen": "\"(\" bekleniyordu", + "expectedParamName": "Parametre adı bekleniyordu", + "expectedPatternExpr": "Desen ifadesi bekleniyordu", + "expectedPatternSubjectExpr": "Beklenen desen konusu ifadesi", + "expectedPatternValue": "\"a.b\" biçiminde bir desen değeri ifadesi bekleniyordu", + "expectedReturnExpr": "\"return\" sonrasında ifade bekleniyordu", + "expectedSliceIndex": "Dizin veya dilim ifadesi bekleniyordu", + "expectedTypeNotString": "Tür bekleniyordu ancak sabit değerli dize alındı", + "expectedTypeParameterName": "Beklenen tür parametresi adı", + "expectedYieldExpr": "Yield deyiminde ifade bekleniyordu", + "finalClassIsAbstract": "\"{type}\" sınıfı final olarak işaretlendi ve tüm soyut metotları uygulaması gerekiyor", + "finalContext": "Bu bağlamda \"Final\" kullanılamaz", + "finalMethodOverride": "\"{name}\" yöntemi \"{className}\" sınıfı içinde tanımlanan final metodu geçersiz kılamaz", + "finalReassigned": "\"{name}\" Son olarak bildirildi ve yeniden atanamaz", + "finalRedeclaration": "\"{name}\" daha önce Final olarak bildirildi", + "finalRedeclarationBySubclass": "\"{name}\", \"{className}\" sınıf adı bu adı Final olarak bildirdiğinden yeniden bildirilemez", + "finalTooManyArgs": "\"Final\" sonrasında tek bir tür bağımsız değişken bekleniyordu", + "finalUnassigned": "\"{name}\" Final olarak bildirildi, ancak değer atanmadı", + "formatStringBrace": "f dizesi sabit değerinde tek bir kapatma küme ayracı kullanılamaz; çift sağ ayraç kullanın", + "formatStringBytes": "Biçim dizesi sabit değerleri (f-strings) ikili olamaz", + "formatStringDebuggingIllegal": "F dizesi hata ayıklama belirticisi \"=\", Python 3.8 veya daha yeni bir sürüm gerektirir", + "formatStringEscape": "Python 3.12 öncesinde f dizesinin ifade bölümünde kaçış sırasına (ters eğik çizgi) izin verilmez", + "formatStringExpectedConversion": "f-string'de \"!\" öğesinden sonra bir dönüştürme tanımlayıcısı bekleniyordu", + "formatStringIllegal": "Biçim dizesi sabit değerleri (f dizeleri) Python 3.6 veya daha yeni bir sürüm gerektirir", + "formatStringInPattern": "Desende biçim dizesine izin verilmiyor", + "formatStringNestedFormatSpecifier": "İfadeler biçim dizesi belirticisi içinde çok derin iç içe geçmiş", + "formatStringNestedQuote": "F dizesi içinde iç içe geçmiş dizeler Python 3.12'den önceki f dizesiyle aynı tırnak karakterini kullanamaz", + "formatStringUnicode": "Biçim dizesi sabit değerleri (f-strings) unicode olamaz", + "formatStringUnterminated": "F dizesi içinde sonlandırılmamış ifade; \"}\" bekleniyor", + "functionDecoratorTypeUnknown": "Türü belirsiz işlev dekoratörü işlevin türünü gizler; dekoratör yoksayılıyor", + "functionInConditionalExpression": "Koşullu ifade, her zaman True olarak değerlendirilen işleve başvurur", + "functionTypeParametersIllegal": "İşlev türü parametre sözdizimi Python 3.12 veya daha yeni bir sürüm gerektirir", + "futureImportLocationNotAllowed": "__future__ içeri aktarmaları dosyanın başında olmalıdır", + "generatorAsyncReturnType": "Zaman uyumsuz oluşturucu işlevinin dönüş türü \"AsyncGenerator[{yieldType}, Any]\" ile uyumlu olmalıdır", + "generatorNotParenthesized": "Tek bağımsız değişken olmadıklarında oluşturucu ifadeleri ayraç içine alınmalıdır", + "generatorSyncReturnType": "Oluşturucu işlevinin dönüş türü \"Generator[{yieldType}, Any, Any]\" ile uyumlu olmalıdır", + "genericBaseClassNotAllowed": "\"Generic\" temel sınıfı, tür parametresi sözdizimiyle kullanılamaz", + "genericClassAssigned": "Genel sınıf türü atanamıyor", + "genericClassDeleted": "Genel sınıf türü silinemiyor", + "genericNotAllowed": "\"Generic\" bu bağlamda geçerli değil", + "genericTypeAliasBoundTypeVar": "Sınıf içindeki genel tür diğer adı {names} bağlı tür değişkenlerini kullanamıyor", + "genericTypeArgMissing": "\"Generic\" en az bir tür bağımsız değişkeni gerektirir", + "genericTypeArgTypeVar": "\"Generic\" için tür bağımsız değişkeni bir tür değişkeni olmalıdır", + "genericTypeArgUnique": "\"Generic\" için tür bağımsız değişkenleri benzersiz olmalıdır", + "globalReassignment": "\"{name}\" genel bildirimden önce atanmış", + "globalRedefinition": "\"{name}\" zaten genel olarak bildirildi", + "implicitStringConcat": "Örtük dize birleştirmesine izin verilmiyor", + "importCycleDetected": "İçeri aktarma zincirinde döngü algılandı", + "importDepthExceeded": "İçeri aktarma zinciri derinliği {depth} sınırını aştı", + "importResolveFailure": "\"{importName}\" adlı içeri aktarma çözümlenemedi", + "importSourceResolveFailure": "\"{importName}\" adlı içeri aktarma kaynaktan çözümlenemedi", + "importSymbolUnknown": "\"{name}\" alma simgesi bilinmiyor", + "incompatibleMethodOverride": "\"{name}\" metodu \"{className}\" sınıfını uyumsuz bir şekilde geçersiz kılıyor", + "inconsistentIndent": "Girintisiz miktar önceki girintiyle eşleşmiyor", + "inconsistentTabs": "Girinti içinde sekmelerin ve boşlukların kullanımı tutarsız", + "initMustReturnNone": "\"__init__\" dönüş türü None olmalıdır", + "initSubclassClsParam": "__init_subclass__ geçersiz kılması bir \"cls\" parametresi almalı", + "instanceMethodSelfParam": "Örnek metotları bir \"self\" parametresi almalıdır", + "instanceVarOverridesClassVar": "\"{name}\" örnek değişkeni \"{className}\" sınıfındaki aynı ada sahip sınıf değişkenini geçersiz kılıyor", + "instantiateAbstract": "\"{type}\" soyut sınıfı örneği oluşturulamıyor", + "instantiateProtocol": "\"{type}\" protokol sınıfının örneği oluşturulamıyor", + "internalBindError": "\"{file}\" dosyası bağlanırken dahili bir hata oluştu: {message}", + "internalParseError": "\"{file}\" dosyası ayrıştırılırken dahili bir hata oluştu: {message}", + "internalTypeCheckingError": "\"{file}\" dosyası tür denetimi gerçekleştirilirken dahili bir hata oluştu: {message}", + "invalidIdentifierChar": "Tanımlayıcıda geçersiz karakter", + "invalidStubStatement": "Deyim, bir tür saplama dosyası içinde anlamsız", + "invalidTokenChars": "Belirteçte geçersiz \"{text}\" karakteri var", + "isInstanceInvalidType": "\"isinstance\" için ikinci bağımsız değişken bir sınıf veya sınıf demeti olmalıdır", + "isSubclassInvalidType": "\"issubclass\" için ikinci bağımsız değişken bir sınıf veya sınıflar demeti olmalıdır", + "keyValueInSet": "Küme içinde anahtar/değer çiftlerine izin verilmiyor", + "keywordArgInTypeArgument": "Anahtar sözcük bağımsız değişkenleri tür bağımsız değişken listelerinde kullanılamaz", + "keywordOnlyAfterArgs": "\"*\" parametresinden sonra keyword-only bağımsız değişken ayırıcısı kullanılamaz", + "keywordParameterMissing": "Bir veya daha fazla anahtar sözcük parametresi \"*\" parametresini izlemeli", + "keywordSubscriptIllegal": "Alt simge içindeki anahtar sözcük bağımsız değişkenleri desteklenmiyor", + "lambdaReturnTypePartiallyUnknown": "Lambdanın \"{returnType}\" dönüş türü kısmen bilinmiyor", + "lambdaReturnTypeUnknown": "Lambdanın dönüş türü bilinmiyor", + "listAssignmentMismatch": "\"{type}\" türündeki ifade hedef listesine atanamaz", + "listInAnnotation": "Tür ek açıklamasında liste ifadesi kullanılamaz", + "literalEmptyArgs": "\"Literal\" sonrasında bir veya daha fazla tür bağımsız değişkeni bekleniyordu", + "literalNotCallable": "Değişmez tür örneği oluşturulamıyor", + "literalUnsupportedType": "\"Literal\" için tür bağımsız değişkenleri None, bir sabit değer (int, bool, str veya bytes) veya bir sabit listesi değeri olmalıdır", + "matchIncompatible": "Eşleme deyimleri için Python 3.10 veya daha yeni bir sürümü gerekiyor", + "matchIsNotExhaustive": "Eşleme deyimindeki durumlar değerlerin tümünü karşılayamıyor", + "maxParseDepthExceeded": "Maksimum ayrıştırma derinliği aşıldı; ifadeyi daha küçük alt ifadelere bölün", + "memberAccess": "\"{type}\" türü için \"{name}\" üyesine erişilemiyor", + "memberDelete": "\"{type}\" türü için \"{name}\" üyesi silinemiyor", + "memberSet": "\"{type}\" türü için \"{name}\" üyesi atanamıyor", + "metaclassConflict": "Türetilmiş sınıfın meta sınıfı, tüm temel sınıflarının meta sınıflarının bir alt sınıfı olmalıdır", + "metaclassDuplicate": "Yalnızca bir meta sınıfı sağlanmalıdır", + "metaclassIsGeneric": "Meta sınıfı genel olamaz", + "methodNotDefined": "\"{name}\" metodu tanımlanmadı", + "methodNotDefinedOnType": "\"{name}\" metodu \"{type}\" türü üzerinde tanımlanmadı", + "methodOrdering": "Tutarlı metot sıralaması oluşturulamıyor", + "methodOverridden": "\"{name}\", uyumsuz \"{type}\" türüne sahip \"{className}\" sınıfında aynı ad metodunu geçersiz kılar", + "methodReturnsNonObject": "\"{name}\" metodu bir nesne döndürmez", + "missingProtocolMembers": "Sınıf bir veya daha fazla protokol sınıfından türüyor, ancak gerekli tüm üyeleri uygulamıyor", + "missingSuperCall": "\"{methodName}\" metodu üst sınıftaki aynı ada sahip metodu çağıramaz", + "moduleAsType": "Modül tür olarak kullanılamaz", + "moduleNotCallable": "Modül çağrılabilir değil", + "moduleUnknownMember": "\"{memberName}\", \"{moduleName}\" modülünün bilinen bir üyesi değil", + "namedExceptAfterCatchAll": "Adlandırılmış except yan tümcesi, catch-all except yan tümcesinden sonra gelemez", + "namedParamAfterParamSpecArgs": "\"{name}\" anahtar sözcük parametresi ParamSpec args parametresinden sonra imzada yer alamaz", + "namedTupleEmptyName": "Adlandırılmış demet içindeki adlar boş olamaz", + "namedTupleFirstArg": "İlk bağımsız değişken olarak adlandırılmış demet sınıf adı bekleniyordu", + "namedTupleMultipleInheritance": "NamedTuple bulunan birden çok devralma desteklenmiyor", + "namedTupleNameType": "Girdi adını ve türünü belirten iki girdili demet bekleniyordu", + "namedTupleNameUnique": "Adlandırılmış demet içindeki adlar benzersiz olmalıdır", + "namedTupleNoTypes": "\"namedtuple\" demet girdileri için tür sağlamaz; bunun yerine \"NamedTuple\" kullanın", + "namedTupleSecondArg": "İkinci bağımsız değişken olarak adlandırılmış demet girdi listesi bekleniyordu", + "newClsParam": "__new__ geçersiz kılması bir \"cls\" parametresi almalı", + "newTypeBadName": "NewType için ilk bağımsız değişken bir sabit değerli dize olmalıdır", + "newTypeLiteral": "NewType Literal türüyle kullanılamaz", + "newTypeNotAClass": "NewType için ikinci bağımsız değişken olarak sınıf bekleniyordu", + "newTypeParamCount": "NewType için iki konumsal bağımsız değişken gerekiyor", + "newTypeProtocolClass": "NewType protokol sınıfıyla kullanılamaz", + "noOverload": "\"{name}\" için aşırı yüklemelerin hiçbiri sağlanan bağımsız değişkenlerle eşleşmiyor", + "noReturnContainsReturn": "Bildirilen dönüş türü \"NoReturn\" olan işlev bir return deyimi içeremez", + "noReturnContainsYield": "Bildirilen dönüş türü \"NoReturn\" olan işlev bir yield deyimi içeremez", + "noReturnReturnsNone": "Bildirilen \"NoReturn\" türüne sahip işlev \"None\" döndüremez", + "nonDefaultAfterDefault": "Varsayılan olmayan bağımsız değişken varsayılan bağımsız değişkeni izler", + "nonLocalInModule": "Modül düzeyinde yerel olmayan bildirim kullanılamaz", + "nonLocalNoBinding": "Yerel olmayan \"{name}\" öğesi için bağlama bulunamadı", + "nonLocalReassignment": "\"{name}\" yerel olmayan bildirimden önce atanmış", + "nonLocalRedefinition": "\"{name}\" zaten yerel olmayan olarak bildirildi", + "noneNotCallable": "\"None\" türündeki nesne çağrılamaz", + "noneNotIterable": "\"None\" türündeki nesne, yeniden kullanılabilir değer olarak kullanılamaz", + "noneNotSubscriptable": "\"None\" türündeki nesne alt simgeleştirilebilir değil", + "noneNotUsableWith": "\"None\" türündeki nesne \"with\" ile kullanılamaz", + "noneOperator": "\"{operator}\" işleci \"None\" için desteklenmiyor", + "noneUnknownMember": "\"{name}\" bilinen bir \"None\" üyesi değil", + "notRequiredArgCount": "\"NotRequired\" sonrasında tek bir tür bağımsız değişken bekleniyordu", + "notRequiredNotInTypedDict": "Bu bağlamda \"NotRequired\" kullanımına izin verilmiyor", + "objectNotCallable": "\"{type}\" türündeki nesne çağrılamaz", + "obscuredClassDeclaration": "\"{name}\" sınıf bildirimi aynı ada sahip bir bildirim tarafından gizlendi", + "obscuredFunctionDeclaration": "\"{name}\" işlev bildirimi aynı ada sahip bir bildirim tarafından gizlendi", + "obscuredMethodDeclaration": "\"{name}\" metot bildirimi aynı ada sahip bir bildirim tarafından gizlendi", + "obscuredParameterDeclaration": "\"{name}\" parametre bildirimi aynı ada sahip bir bildirim tarafından gizlendi", + "obscuredTypeAliasDeclaration": "\"{name}\" tür diğer ad bildirimi aynı ada sahip bir bildirim tarafından etkisiz kılındı", + "obscuredVariableDeclaration": "\"{name}\" bildirimi aynı ada sahip bir bildirim tarafından gizlendi", + "operatorLessOrGreaterDeprecated": "\"<>\" işleci Python 3'de desteklenmiyor; bunun yerine \"!=\" kullanın", + "optionalExtraArgs": "\"optional\" sonrasında bir tür bağımsız değişkeni bekleniyordu", + "orPatternIrrefutable": "Reddedilemez desene yalnızca \"or\" deseninde son alt desen olarak izin verilir", + "orPatternMissingName": "Bir \"or\" deseni içindeki tüm alt desenlerde aynı adlar hedeflenmeli", + "overlappingOverload": "Parametreleri {obscuredBy} aşırı yüklemesi ile çakıştığından \"{name}\" {obscured} aşırı yüklemesi hiçbir zaman kullanılmayacak", + "overloadAbstractMismatch": "Aşırı yüklenmiş metotların tümü soyut olmalı veya tümü olmamalıdır", + "overloadImplementationMismatch": "Aşırı yüklenmiş uygulama, {index} aşırı yükleme imzası ile tutarlı değil", + "overloadReturnTypeMismatch": "\"{name}\" için {prevIndex} aşırı yüklemesi {newIndex} aşırı yüklemesi ile çakışıyor ve uyumsuz bir tür döndürüyor", + "overloadWithImplementation": "\"{name}\" aşırı yükleme olarak işaretlenmiş, ancak bir uygulama içeriyor", + "overloadWithoutImplementation": "\"{name}\" aşırı yük olarak işaretlendi, ancak uygulama sağlanmadı", + "overriddenMethodNotFound": "\"{name}\" metodu geçersiz kılma olarak işaretlendi, ancak aynı ada sahip bir temel metot yok", + "overrideDecoratorMissing": "\"{name}\" metodu geçersiz kılma olarak işaretlenmedi ancak \"{className}\" sınıfındaki bir metodu geçersiz kılıyor", + "paramAfterKwargsParam": "Parametre \"**\" parametresini izleyemez", + "paramAlreadyAssigned": "\"{name}\" parametresi zaten atanmış", + "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", + "paramSpecArgsKwargsUsage": "ParamSpec'in \"args\" ve \"kwargs\" üyeleri bir işlev imzasında görünmelidir", + "paramSpecArgsMissing": "ParamSpec \"{type}\" bağımsız değişkenleri eksik", + "paramSpecArgsUsage": "ParamSpec'in \"args\" üyesi yalnızca *args parametresiyle kullanıldığında geçerlidir", + "paramSpecAssignedName": "ParamSpec, \"{name}\" adlı bir değişkene atanmalı", + "paramSpecContext": "ParamSpec bu bağlamda kullanılamaz", + "paramSpecDefaultNotTuple": "ParamSpec varsayılan değeri için üç nokta, demet ifadesi veya ParamSpec bekleniyordu", + "paramSpecFirstArg": "İlk bağımsız değişken olarak ParamSpec adı bekleniyordu", + "paramSpecKwargsUsage": "ParamSpec'in \"kwargs\" üyesi yalnızca *kwargs parametresiyle kullanıldığında geçerlidir", + "paramSpecNotBound": "\"{type}\" parametre belirtimi bağlı bir değere sahip değil", + "paramSpecNotUsedByOuterScope": "\"{name}\" adlı ParamSpec bu bağlamda bir anlam ifade etmiyor", + "paramSpecScopedToReturnType": "ParamSpec \"{name}\" dönüş türü içinde çağrılabilir kapsamına alındı ve işlev gövdesinde başvurulamaz", + "paramSpecUnknownArg": "ParamSpec birden fazla bağımsız değişkeni desteklemiyor", + "paramSpecUnknownMember": "\"{name}\", ParamSpec’ın bilinen bir üyesi değil", + "paramSpecUnknownParam": "\"{name}\", ParamSpec için bilinmeyen bir parametre", + "paramTypeCovariant": "Kovaryant türü değişkeni parametre türünde kullanılamaz", + "paramTypePartiallyUnknown": "\"{paramName}\" parametresinin türü kısmen bilinmiyor", + "paramTypeUnknown": "\"{paramName}\" parametresinin türü bilinmiyor", + "parenthesizedContextManagerIllegal": "\"with\" deyimindeki parantezler Python 3.9 veya daha yeni bir sürüm gerektirir", + "patternNeverMatches": "Desen, \"{type}\" konu türü ile hiçbir zaman eşleşmez", + "positionArgAfterNamedArg": "Konumsal bağımsız değişken anahtar sözcük bağımsız değişkenlerden sonra gelemez", + "positionOnlyAfterArgs": "\"*\" parametresinden sonra position-only bağımsız değişken ayırıcısı kullanılamaz", + "positionOnlyAfterKeywordOnly": "\"/\" parametresi \"*\" parametresinden önce gelmelidir", + "positionOnlyFirstParam": "İlk parametre olarak yalnızca konum bağımsız değişken ayırıcısına izin verilmiyor", + "positionOnlyIncompatible": "Position-only bağımsız değişken ayırıcısı için Python 3.8 veya daha yeni bir sürümü gerekiyor", + "privateImportFromPyTypedModule": "\"{name}\" \"{module}\" modülünden dışarı aktarılamadı", + "privateUsedOutsideOfClass": "\"{name}\" özeldir ve bildirildiği sınıfın dışında kullanılır", + "privateUsedOutsideOfModule": "\"{name}\" özeldir ve bildirildiği modülün dışında kullanılır", + "propertyOverridden": "\"{name}\", \"{className}\" sınıfında aynı ad özelliğini geçersiz kılar", + "propertyStaticMethod": "Static metotlar özellik alıcı, ayarlayıcı veya silici için kullanılamaz", + "protectedUsedOutsideOfClass": "\"{name}\" korumalıdır ve içinde bildirildiği sınıfın dışında kullanılır", + "protocolBaseClass": "Protokol sınıfı \"{classType}\", protokol olmayan \"{baseType}\" sınıfı türevi olamaz", + "protocolBaseClassWithTypeArgs": "Tür parametresi söz dizimi kullanılırken, tür bağımsız değişkenlerinin Protokol sınıfıyla kullanılmasına izin verilmez", + "protocolIllegal": "\"Protocol\" kullanımı için Python 3.7 veya daha yeni bir sürümü gerekiyor", + "protocolNotAllowedInTypeArgument": "\"Protocol\" tür bağımsız değişkeni olarak kullanılamaz", + "protocolUsedInCall": "Protokol sınıfı \"{name}\" çağrısında kullanılamaz", + "protocolVarianceContravariant": "\"{class}\" genel protokolünde kullanılan \"{variable}\" tür değişkeni, değişken karşıtı olmalıdır", + "protocolVarianceCovariant": "\"{class}\" genel protokolünde kullanılan \"{variable}\" tür değişkeni birlikte değişen olmalıdır", + "protocolVarianceInvariant": "\"{class}\" genel protokolünde kullanılan \"{variable}\" tür değişkeni sabit olmalıdır", + "pyrightCommentInvalidDiagnosticBoolValue": "Pyright açıklama yönergesinden sonra \"=\" ve true veya false değeri olmalıdır", + "pyrightCommentInvalidDiagnosticSeverityValue": "Pyright açıklama yönergesinden sonra \"=\" ve true, false, error, warning, information veya none değeri girilmelidir", + "pyrightCommentMissingDirective": "Pyright açıklaması sonrasında bir yönerge (temel veya katı) veya tanılama kuralı gelmelidir", + "pyrightCommentNotOnOwnLine": "Dosya düzeyi ayarları kontrol etmek için kullanılan pyright açıklamaları kendi satırlarında görünmelidir", + "pyrightCommentUnknownDiagnosticRule": "\"{rule}\", pyright açıklaması için bilinmeyen bir tanılama kuralı", + "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\" pyright açıklaması için geçersiz değer; true, false, error, warning, information veya none bekleniyordu", + "pyrightCommentUnknownDirective": "\"{directive}\", pyright açıklaması için bilinmeyen bir yönergedir; \"strict\" veya \"basic\" bekleniyordu", + "readOnlyArgCount": "\"ReadOnly\" sonrasında tek bir tür bağımsız değişken bekleniyordu", + "readOnlyNotInTypedDict": "Bu bağlamda \"ReadOnly\" kullanımına izin verilmiyor", + "recursiveDefinition": "Kendine başvurduğundan \"{name}\" türü belirlenemedi", + "relativeImportNotAllowed": "Göreli içeri aktarmalar \"import .a\" formuyla kullanılamaz; bunun yerine \"from . import a\" kullanın", + "requiredArgCount": "\"Required\" sonrasında tek bir tür bağımsız değişken bekleniyordu", + "requiredNotInTypedDict": "Bu bağlamda \"Required\" kullanımına izin verilmiyor", + "returnInAsyncGenerator": "Zaman uyumsuz oluşturucuda değer içeren dönüş deyimine izin verilmez", + "returnMissing": "Bildirilen \"{returnType}\" türüne sahip işlev, tüm kod yollarında değer döndürmelidir", + "returnOutsideFunction": "\"return\" yalnızca bir işlev içinde kullanılabilir", + "returnTypeContravariant": "Değişken karşıtı tür değişkeni dönüş türünde kullanılamaz", + "returnTypeMismatch": "\"{exprType}\" türündeki ifade \"{returnType}\" dönüş türüne atanamaz", + "returnTypePartiallyUnknown": "\"{returnType}\" dönüş türü kısmen bilinmiyor", + "returnTypeUnknown": "Dönüş türü bilinmiyor", + "revealLocalsArgs": "\"reveal_locals\" çağrısı için bağımsız değişken beklenmiyordu", + "revealLocalsNone": "Bu kapsamda yerel öğe yok", + "revealTypeArgs": "\"reveal_type\" çağrısı için tek bir konumsal bağımsız değişken bekleniyordu", + "revealTypeExpectedTextArg": "\"reveal_type\" bağımsız değişkeni için \"expected_text\" argümanı bir str sabit değeri olmalıdır", + "revealTypeExpectedTextMismatch": "Tür uyuşmazlığı; \"{expected}\" bekleniyordu ancak \"{received}\" alındı", + "revealTypeExpectedTypeMismatch": "Tür uyuşmazlığı; \"{expected}\" bekleniyordu ancak \"{received}\" alındı", + "selfTypeContext": "\"Self\" bu bağlamda geçerli değil", + "selfTypeWithTypedSelfOrCls": "\"Self\", \"Self\" dışında bir tür ek açıklamasına sahip bir `self` veya `cls` parametresine sahip bir işlevde kullanılamaz", + "setterGetterTypeMismatch": "Özellik ayarlayıcısı değer türü alıcı dönüş türüne atanamaz", + "singleOverload": "\"{name}\" aşırı yükleme olarak işaretlenmiş, ancak ek aşırı yüklemeler eksik", + "slotsAttributeError": "\"{name}\", __slots__ içinde belirtilmedi", + "slotsClassVarConflict": "\"{name}\", __slots__ içinde bildirilen örnek değişkenle çakışıyor", + "starPatternInAsPattern": "Yıldız deseni \"as\" hedefiyle kullanılamaz", + "starPatternInOrPattern": "Yıldız deseni diğer desenlerde ORed olamaz", + "starStarWildcardNotAllowed": "\"_\" joker karakteriyle ** kullanılamaz", + "staticClsSelfParam": "Static metotları \"self\" veya \"cls\" parametresi almamalıdır", + "stdlibModuleOverridden": "\"{path}\", \"{name}\" stdlib modülünü geçersiz kılıyor", + "strictTypeGuardReturnType": "StrictTypeGuard’ın dönüş türü (\"{returnType}\") değer parametresi türüne (\"{type}\") atanamaz", + "stringNonAsciiBytes": "ASCII olmayan karaktere bayt sabit değerli dizesinde izin verilmez", + "stringNotSubscriptable": "Tür ek açıklamasında dize ifadesi alt simge olarak belirtilemez; ek açıklamanın tamamını tırnak içine alın", + "stringUnsupportedEscape": "Dize sabit değerinde desteklenmeyen kaçış dizisi", + "stringUnterminated": "Sabit değerli dize sonlandırılmamış", + "stubFileMissing": "\"{importName}\" için saplama dosyası bulunamadı", + "stubUsesGetAttr": "Tür saplama dosyası eksik; \"__getattr__\" modül için tür hatalarını gizliyor", + "sublistParamsIncompatible": "Alt liste parametreleri Python 3.x'te desteklenmez", + "superCallArgCount": "\"super\" çağrısı için ikiden fazla bağımsız değişken beklenmiyordu", + "superCallFirstArg": "\"super\" çağrısının ilk bağımsız değişkeni olarak sınıf türü bekleniyordu ancak \"{type}\" alındı", + "superCallSecondArg": "\"super\" çağrısının ikinci bağımsız değişkeni, \"{type}\" türünden türetilen nesne veya sınıf olmalıdır", + "superCallZeroArgForm": "\"super\" çağrısının zero-argument biçimi yalnızca bir sınıf içinde geçerlidir", + "symbolIsPossiblyUnbound": "\"{name}\" büyük olasılıkla bağlı değil", + "symbolIsUnbound": "\"{name}\" bağlı değil", + "symbolIsUndefined": "\"{name}\" tanımlanmadı", + "symbolOverridden": "\"{name}\", \"{className}\" sınıfında aynı ada sahip sembolü geçersiz kılar", + "totalOrderingMissingMethod": "total_ordering kullanmak için sınıfta \"__lt__\", \"__le__\", \"__gt__\" veya \"__ge__\" metotlarından biri tanımlanmalıdır", + "trailingCommaInFromImport": "Çevreleyen parantezler olmadan sondaki virgüle izin verilmez", + "tryWithoutExcept": "Try deyimi en az bir except veya finally yan tümcesi içermelidir", + "tupleAssignmentMismatch": "\"{type}\" türündeki ifade hedef demetine atanamaz", + "tupleInAnnotation": "Tür ek açıklamasında demet ifadesine izin verilmiyor", + "tupleIndexOutOfRange": "{index} dizini {type} türü için aralık dışında", + "typeAliasIllegalExpressionForm": "Tür diğer ad tanımı için geçersiz ifade form", + "typeAliasIsRecursiveDirect": "Tür diğer adı \"{name}\", tanımında kendisini kullanamaz", + "typeAliasNotInModuleOrClass": "TypeAlias yalnızca bir modül veya sınıf kapsamında tanımlanabilir", + "typeAliasRedeclared": "\"{name}\" bir TypeAlias olarak bildirilmiş ve yalnızca bir kez atanabilir", + "typeAliasStatementIllegal": "Tür diğer adı deyimi için Python 3.12 veya daha yeni bir sürümü gerekiyor", + "typeAliasTypeMustBeAssigned": "TypeAliasType, tür diğer adıyla aynı ada sahip bir değişkene atanmalıdır", + "typeAliasTypeNameArg": "TypeAliasType için ilk bağımsız değişken, tür diğer adının adını temsil eden bir sabit değerli dize olmalıdır", + "typeAliasTypeNameMismatch": "Tür diğer adının atandığı değişkenin adıyla eşleşmesi gerekiyor", + "typeAliasTypeParamInvalid": "Tür parametresi listesi yalnızca TypeVar, TypeVarTuple veya ParamSpec içeren bir demet olmalıdır", + "typeAnnotationCall": "Geçersiz tür ek açıklaması: çağrı ifadesine izin verilmiyor", + "typeAnnotationVariable": "Geçersiz tür ek açıklaması: tür diğer adı olmadığı sürece değişkene izin verilmez", + "typeArgListExpected": "ParamSpec, üç nokta veya tür listesi bekleniyordu", + "typeArgListNotAllowed": "Bu tür bağımsız değişkeni için liste ifadesine izin verilmiyor", + "typeArgsExpectingNone": "\"{name}\" sınıfı için tür bağımsız değişkeni beklenmiyordu", + "typeArgsMismatchOne": "Bir tane tür bağımsız değişkeni bekleniyordu ancak {received} alındı", + "typeArgsMissingForAlias": "\"{name}\" genel tür diğer adı için tür bağımsız değişkenleri bekleniyordu", + "typeArgsMissingForClass": "\"{name}\" genel sınıf adı için tür bağımsız değişkenleri bekleniyordu", + "typeArgsTooFew": "\"{name}\" için çok az tür bağımsız değişkeni sağlandı; {expected} bekleniyordu ancak {received} alındı", + "typeArgsTooMany": "\"{name}\" için çok fazla tür bağımsız değişkeni sağlandı; {expected} bekleniyordu ancak {received} alındı", + "typeAssignmentMismatch": "\"{sourceType}\" türündeki ifade, \"{destType}\" bildirilen türüne atanamaz", + "typeCallNotAllowed": "Tür ek açıklamasında type() çağrısı kullanılmamalıdır", + "typeCommentDeprecated": "Tür açıklamalarının kullanımı kullanım dışı; bunun yerine tür ek açıklaması kullanın", + "typeExpectedClass": "Tür ifadesi bekleniyordu ancak \"{type}\" alındı", + "typeGuardArgCount": "\"TypeGuard\" sonrasında tek bir tür bağımsız değişken bekleniyordu", + "typeGuardParamCount": "Kullanıcı tanımlı tür koruma işlevleri ve metotlarında en az bir giriş parametresi olmalıdır", + "typeNotAwaitable": "\"{type}\" beklenemez", + "typeNotCallable": "\"{expression}\", \"{type}\" türüne sahip ve çağrılamaz", + "typeNotIntantiable": "\"{type}\" örneği oluşturulamıyor", + "typeNotIterable": "\"{type}\" yeniden kullanılamaz", + "typeNotSpecializable": "\"{type}\" türü özelleştirilemedi", + "typeNotSubscriptable": "\"{type}\" türündeki nesne alt simgeleştirilebilir değil", + "typeNotSupportBinaryOperator": "İşleç \"{operator}\", \"{leftType}\" ve \"{rightType}\" türleri için desteklenmiyor", + "typeNotSupportBinaryOperatorBidirectional": "\"{operator}\" işleci, beklenen tür \"{expectedType}\" olduğunda \"{leftType}\" ve \"{rightType}\" türleri için desteklenmez", + "typeNotSupportUnaryOperator": "\"{operator}\" işleci \"{type}\" türü için desteklenmiyor", + "typeNotSupportUnaryOperatorBidirectional": "\"{operator}\" işleci, beklenen tür \"{expectedType}\" olduğunda \"{type}\" türü için desteklenmiyor", + "typeNotUsableWith": "{method} metodunu uygulamadığından \"{type}\" türündeki nesne \"with\" ile kullanılamaz", + "typeParameterBoundNotAllowed": "Sınır veya kısıtlama, değişen tür parametresi veya ParamSpec ile kullanılamaz", + "typeParameterConstraintTuple": "Tür parametresi kısıtlaması iki veya daha fazla türde bir demet olmalıdır", + "typeParameterExistingTypeParameter": "\"{name}\" tür parametresi zaten kullanılıyor", + "typeParameterNotDeclared": "\"{name}\" tür parametresi \"{container}\" öğesine ait tür parametreleri listesinde yok", + "typeParametersMissing": "En az bir tür parametresi belirtilmelidir", + "typePartiallyUnknown": "\"{name}\" türü kısmen bilinmiyor", + "typeUnknown": "\"{name}\" türü bilinmiyor", + "typeVarAssignedName": "TypeVar, \"{name}\" adlı bir değişkene atanmalı", + "typeVarAssignmentMismatch": "\"{type}\" türü \"{name}\" tür değişkenine atanamaz", + "typeVarBoundAndConstrained": "TypeVar hem bağlı hem de kısıtlanmış olamaz", + "typeVarBoundGeneric": "TypeVar bağlı türü genel olamaz", + "typeVarConstraintGeneric": "TypeVar kısıtlama türü genel olamaz", + "typeVarDefaultBoundMismatch": "TypeVar varsayılan türü, bağlı türün bir alt türü olmalıdır", + "typeVarDefaultConstraintMismatch": "TypeVar varsayılan türü kısıtlanmış türlerden biri olmalıdır", + "typeVarDefaultIllegal": "Tür değişkeni varsayılan türleri Python 3.13 veya daha yeni bir sürüm gerektirir", + "typeVarDefaultInvalidTypeVar": "\"{name}\" tür parametresi, kapsam dışı bir veya daha fazla tür değişkenine başvuran varsayılan bir türe sahip", + "typeVarFirstArg": "İlk bağımsız değişken olarak TypeVar adı bekleniyordu", + "typeVarNoMember": "TypeVar \"{type}\" \"{name}\" adlı üyesine sahip değil", + "typeVarNotSubscriptable": "TypeVar \"{type}\" alt yazılabilir değil", + "typeVarNotUsedByOuterScope": "\"{name}\" tür değişkeni bu bağlamda bir anlam ifade etmiyor", + "typeVarPossiblyUnsolvable": "\"{name}\" tür değişkeni, çağıran \"{param}\" parametresi için bağımsız değişken sağlamazsa çözümlenemeyebilir", + "typeVarScopedToReturnType": "\"{name}\" tür değişkeni, dönüş türü içinde çağrılabilir kapsamına alındı ve işlev gövdesinde başvurulamaz", + "typeVarSingleConstraint": "TypeVar en az iki kısıtlanmış türe sahip olmalıdır", + "typeVarTupleContext": "TypeVarTuple bu bağlamda kullanılamaz", + "typeVarTupleDefaultNotUnpacked": "TypeVarTuple varsayılan türü, paketlenmemiş bir demet veya TypeVarTuple olmalıdır", + "typeVarTupleMustBeUnpacked": "TypeVarTuple değeri için Paket açma işleci gereklidir", + "typeVarTupleUnknownParam": "\"{name}\", TypeVar için bilinmeyen bir parametre", + "typeVarUnknownParam": "\"{name}\", TypeVar için bilinmeyen bir parametre", + "typeVarUsedByOuterScope": "TypeVar \"{name}\" zaten bir dış kapsam tarafından kullanılıyor", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" genel işlev imzasında yalnızca bir kez görünür", + "typeVarVariance": "TypeVar hem birlikte değişken hem de değişken karşıtı olamaz", + "typeVarWithoutDefault": "\"{name}\" varsayılan türe sahip olmadığından tür parametresi listesinde \"{other}\" sonrasında bulunamaz", + "typeVarsNotInGenericOrProtocol": "Generic[] veya Protocol[] tüm tür değişkenlerini içermeli", + "typedDictAccess": "TypedDict'da öğeye erişilemedi", + "typedDictBadVar": "TypedDict sınıfları yalnızca tür ek açıklamaları içerebilir", + "typedDictBaseClass": "TypedDict sınıfları için tüm temel sınıflar da TypedDict sınıfları olmalıdır", + "typedDictBoolParam": "True veya False değeri olması için \"{name}\" parametresi bekleniyordu", + "typedDictDelete": "TypedDict'da öğe silinemedi", + "typedDictEmptyName": "TypedDict içindeki adlar boş olamaz", + "typedDictEntryName": "Sözlük girdisi adı için sabit değerli dize bekleniyordu", + "typedDictEntryUnique": "Sözlük içindeki adlar benzersiz olmalıdır", + "typedDictExtraArgs": "Ekstra TypedDict bağımsız değişkenleri desteklenmiyor", + "typedDictFieldReadOnlyRedefinition": "\"{name}\" TypedDict alanı salt okunur olarak yeniden tanımlanamaz", + "typedDictFieldTypeRedefinition": "\"{name}\" TypedDict alanı türü yeniden tanımlanamaz", + "typedDictFirstArg": "Birinci bağımsız değişken olarak TypedDict sınıf adı bekleniyordu", + "typedDictSecondArgDict": "İkinci parametre olarak sözlük veya anahtar sözcük parametresi bekleniyordu", + "typedDictSecondArgDictEntry": "Basit sözlük girişi bekleniyordu", + "typedDictSet": "TypedDict içinde öğe atanamadı", + "unaccessedClass": "\"{name}\" sınıfına erişilemiyor", + "unaccessedFunction": "\"{name}\" işlevine erişilemiyor", + "unaccessedImport": "\"{name}\" içeri aktarma işlemine erişilemiyor", + "unaccessedSymbol": "\"{name}\" öğesine erişilemiyor", + "unaccessedVariable": "\"{name}\" değişkenine erişilemiyor", + "unannotatedFunctionSkipped": "\"{name}\" işlevinin analizi, açıklanmadığından atlandı", + "unexpectedAsyncToken": "\"async\" öğesinin ardından \"def\", \"with\" veya \"for\" bekleniyordu", + "unexpectedExprToken": "İfadenin sonunda beklenmeyen belirteç", + "unexpectedIndent": "Beklenmeyen girinti", + "unexpectedUnindent": "Girintiyi kaldırma beklenmiyordu", + "unhashableDictKey": "Sözlük anahtarı karmalanabilir olmalıdır", + "unhashableSetEntry": "Küme girdisi karmalanabilir olmalıdır", + "uninitializedAbstractVariables": "Soyut temel sınıfta tanımlanan değişkenler \"{classType}\" final sınıfında başlatılmaz", + "uninitializedInstanceVariable": "\"{name}\" örnek değişkeni sınıf gövdesinde veya __init__ metodunda başlatılmadı", + "unionForwardReferenceNotAllowed": "Union söz dizimi dize işleneni ile kullanılamaz; ifadenin tamamını tırnak içine alın", + "unionSyntaxIllegal": "Union işlemlerinde alternatif söz dizimi kullanılabilmesi için Python 3.10 veya daha yeni bir sürümü gerekiyor", + "unionTypeArgCount": "Union için iki veya daha fazla tür bağımsız değişkeni gerekiyor", + "unmatchedEndregionComment": "#endregion için karşılık gelen bir #region yok", + "unmatchedRegionComment": "#region için karşılık gelen bir #endregion yok", + "unnecessaryCast": "Gereksiz \"cast\" çağrısı; tür zaten \"{type}\"", + "unnecessaryIsInstanceAlways": "Gereksiz isinstance çağrısı; \"{testType}\" her zaman bir \"{classType}\" örneğidir", + "unnecessaryIsSubclassAlways": "Gereksiz issubclass çağrısı; \"{testType}\" her zaman \"{classType}\" sınıf türünün bir alt sınıfıdır", + "unnecessaryPyrightIgnore": "Gereksiz \"# pyright: ignore\" açıklaması", + "unnecessaryPyrightIgnoreRule": "\"# pyright: ignore\" rule: \"{name}\" gereksiz", + "unnecessaryTypeIgnore": "Gereksiz \"# type: yoksay\" açıklaması", + "unpackArgCount": "\"Unpack\" sonrasında tek bir tür bağımsız değişken bekleniyordu", + "unpackExpectedTypeVarTuple": "Unpack için tür bağımsız değişkeni olarak TypeVarTuple veya Tuple bekleniyordu", + "unpackExpectedTypedDict": "Unpack için TypedDict tür bağımsız değişkeni bekleniyordu", + "unpackIllegalInComprehension": "Anlamada paket açma işlemi kullanılamaz", + "unpackInAnnotation": "Tür ek açıklamasında paket açma işlecine izin verilmiyor", + "unpackInDict": "Sözlüklerde paket açma işlemi kullanılamaz", + "unpackInSet": "Paket açma işlecine küme içinde izin verilmiyor", + "unpackNotAllowed": "Bu bağlamda paketi açmaya izin verilmiyor", + "unpackOperatorNotAllowed": "Bu bağlamda paket açma işlemi kullanılamaz", + "unpackTuplesIllegal": "Python 3.8'den önceki demetler içinde paket açma işlemi kullanılamıyor", + "unpackedArgInTypeArgument": "Paketlenmemiş bağımsız değişkenler tür bağımsız değişkeni listelerinde kullanılamaz", + "unpackedArgWithVariadicParam": "Paketlenmemiş bağımsız değişken, TypeVarTuple parametresi için kullanılamaz", + "unpackedDictArgumentNotMapping": "** sonrasındaki bağımsız değişken ifadesi \"str\" anahtar türüne sahip bir eşleme olmalıdır", + "unpackedDictSubscriptIllegal": "Alt simgede sözlük açma işlecine izin verilmiyor", + "unpackedSubscriptIllegal": "Alt simgede açma işleci için Python 3.11 veya daha yeni bir sürümü gerekiyor", + "unpackedTypeVarTupleExpected": "Paketlenmemiş TypeVarTuple bekleniyordu; Unpack[{name1}] veya *{name2} kullanın", + "unpackedTypedDictArgument": "Paketlenmemiş TypedDict bağımsız değişkeni parametrelerle eşlenemiyor", + "unreachableCode": "Koda ulaşılamıyor", + "unreachableExcept": "Özel durum zaten işlenmiş olduğundan özel durum yan tümcesi erişilebilir değil", + "unsupportedDunderAllOperation": "\"__all__\" üzerinde işlem desteklenmiyor, bu nedenle dışarı aktarılan sembol listesi yanlış olabilir", + "unusedCallResult": "Çağrı ifadesinin sonucu \"{type}\" türünde ve kullanılmıyor; bilerek yapıldıysa \"_\" değişkenine atayın", + "unusedCoroutine": "Zaman uyumsuz işlev çağrısının sonucu kullanılmıyor; \"await\" kullanın veya sonucu değişkene atayın", + "unusedExpression": "İfade değeri kullanılmadı", + "varAnnotationIllegal": "Değişkenler için tür ek açıklamaları Python 3.6 veya daha yeni bir sürümünü gerektiriyor; önceki sürümlerle uyumluluk için tür açıklaması kullanın", + "variableFinalOverride": "\"{name}\" değişkeni Final olarak işaretlendi ve \"{className}\" sınıfı içinde aynı ada sahip Final olmayan değişkeni geçersiz kılıyor", + "variadicTypeArgsTooMany": "Tür bağımsız değişken listesinde en fazla bir paketlenmemiş TypeVarTuple veya Tuple olabilir", + "variadicTypeParamTooManyAlias": "Tür diğer adı en fazla bir TypeVarTuple tür parametresine sahip olabilir ancak birden fazlası {names}) alındı", + "variadicTypeParamTooManyClass": "Genel sınıf en fazla bir TypeVarTuple tür parametresine sahip olabilir ancak birden fazlası {names}) alındı", + "walrusIllegal": "\":=\" işleci için Python 3.8 veya daha yeni bir sürümü gerekiyor", + "walrusNotAllowed": "Çevreleyen parantezler olmadan bu bağlamda \":=\" işlecine izin verilmez", + "wildcardInFunction": "Bir sınıf veya işlev içinde joker karakteri içeri aktarmaya izin verilmiyor", + "wildcardLibraryImport": "Kitaplıktan joker karakter aktarmaya izin verilmiyor", + "wildcardPatternTypePartiallyUnknown": "Joker karakter deseni tarafından yakalanan tür kısmen bilinmiyor", + "wildcardPatternTypeUnknown": "Joker karakter deseni tarafından yakalanan tür bilinmiyor", + "yieldFromIllegal": "\"yield from\" kullanımı için Python 3.3 veya daha yeni bir sürümü gerekiyor", + "yieldFromOutsideAsync": "Zaman uyumsuz bir işlevde \"yield from\" öğesine izin verilmez", + "yieldOutsideFunction": "\"yield\", işlev veya lambda dışında kullanılamaz", + "yieldWithinListCompr": "Liste anlama içinde \"yield\" kullanılamaz", + "zeroCaseStatementsFound": "Match deyimi en az bir case deyimi içermeli", + "zeroLengthTupleNotAllowed": "Bu bağlamda sıfır uzunluklu demete izin verilmiyor" + }, + "DiagnosticAddendum": { + "argParam": "Bağımsız değişken \"{paramName}\" parametresine karşılık gelir", + "argParamFunction": "Bağımsız değişken, \"{functionName}\" işlevinde \"{paramName}\" parametresine karşılık gelir", + "argsParamMissing": "\"*{paramName}\" parametresine karşılık gelen bir parametre yok", + "argsPositionOnly": "Yalnızca konum parametresi uyuşmazlığı; {expected} bekleniyordu ancak {received} alındı", + "argumentType": "Bağımsız değişken türü \"{type}\"", + "argumentTypes": "Bağımsız değişken türleri: ({types})", + "assignToNone": "\"None\" türüne tür atanamaz", + "asyncHelp": "\"async with\" mi demek istediniz?", + "baseClassOverriddenType": "\"{baseClass}\" temel sınıfı geçersiz kılınan \"{type}\" türünü sağlar", + "baseClassOverridesType": "Temel sınıf \"{baseClass}\", \"{type}\" türünü geçersiz kılıyor", + "conditionalRequiresBool": "\"{operandType}\" türü için __bool__ metodu \"bool\" yerine \"{boolReturnType}\" türü döndürür", + "dataClassFieldLocation": "Alan bildirimi", + "dataClassFrozen": "\"{name}\" donduruldu", + "finalMethod": "Final metodu", + "functionParamDefaultMissing": "\"{name}\" parametresinde varsayılan bağımsız değişken eksik", + "functionParamName": "Parametre adı uyuşmazlığı: \"{destName}\" ve \"{srcName}\"", + "functionReturnTypeMismatch": "\"{sourceType}\" işlev dönüş türü, \"{destType}\" türüyle uyumsuz", + "functionTooFewParams": "İşlev çok az konumsal parametre kabul ediyor; {expected} bekleniyordu ancak {received} alındı", + "functionTooManyParams": "İşlev çok fazla konumsal parametre kabul ediyor; {expected} bekleniyordu ancak {received} alındı", + "incompatibleDeleter": "Özellik silici metodu uyumsuz", + "incompatibleGetter": "Özellik alıcısı metodu uyumsuz", + "incompatibleSetter": "Özellik ayarlayıcı metodu uyumsuz", + "initMethodLocation": "\"{type}\" sınıfı içinde __init__ metodu tanımlandı", + "initMethodSignature": "__init__ imzası \"{type}\"", + "keyNotRequired": "\"{name}\", \"{type}\" türünde gerekli bir anahtar olmadığından çalışma zamanı özel durumuna neden olabilir", + "keyReadOnly": "\"{name}\", \"{type}\" içinde salt okunur", + "keyRequiredDeleted": "\"{name}\" gerekli bir anahtar olduğundan silinemez", + "keyUndefined": "\"{name}\", \"{type}\" içinde tanımlı bir anahtar değil", + "kwargsParamMissing": "\"**{paramName}\" parametresine karşılık gelen bir parametre yok", + "listAssignmentMismatch": "\"{type}\" türü hedef listeyle uyumsuz", + "literalAssignmentMismatch": "\"{sourceType}\" \"{destType}\" türüne atanamaz", + "matchIsNotExhaustiveHint": "Tümlemeli işleme amaçlanmadıysa \"case _: pass\" ekleyin", + "matchIsNotExhaustiveType": "\"{type}\" türü işlenmemiş", + "memberAssignment": "\"{type}\" türündeki ifade, \"{classType}\" sınıfının \"{name}\" üyesine atanamaz", + "memberIsAbstract": "\"{type}.{name}\" soyut", + "memberIsAbstractMore": "ve +{count} tane daha...", + "memberIsFinalInProtocol": "\"{name}\" protokolde Final olarak işaretlendi", + "memberIsInitVar": "\"{name}\" üyesi bir init-only alanıdır", + "memberIsInvariant": "\"{name}\" değiştirilebilir olduğundan sabit ayarlanır", + "memberIsNotFinalInProtocol": "\"{name}\", protokolde Final olarak işaretlenmedi", + "memberSetClassVar": "\"{name}\" üyesi bir ClassVar olduğundan sınıf örneği aracılığıyla atanamaz", + "memberTypeMismatch": "\"{name}\" uyumsuz bir tür", + "memberUnknown": "\"{name}\" üyesi bilinmiyor", + "missingDeleter": "Özellik silici metodu eksik", + "missingGetter": "Özellik alıcı metodu eksik", + "missingProtocolMember": "\"{name}\" üyesi \"{classType}\" protokol sınıfında bildirildi", + "missingSetter": "Özellik ayarlayıcı metodu eksik", + "namedParamMissingInDest": "Hedefte \"{name}\" anahtar sözcük parametresi eksik", + "namedParamMissingInSource": "Kaynakta \"{name}\" anahtar sözcük parametresi eksik", + "namedParamTypeMismatch": "\"{sourceType}\" türündeki \"{name}\" anahtar sözcük parametresi, \"{destType}\" türüne atanamıyor", + "newMethodLocation": "\"{type}\" sınıfı içinde __new__ metodu tanımlandı", + "newMethodSignature": "__new__ imzası \"{type}\"", + "noOverloadAssignable": "Aşırı yüklenmiş işlevlerden hiçbiri \"{type}\" türüyle uyuşmuyor", + "orPatternMissingName": "Eksik adlar: {name}", + "overloadNotAssignable": "Bir veya daha fazla \"{name}\" aşırı yüklemesi atanabilir değil", + "overloadSignature": "Aşırı yükleme imzası burada tanımlı", + "overloadWithImplementation": "İşlev aşırı yüklemesinin gövdesi \"...\" olmalıdır", + "overriddenMethod": "Geçersiz kılınan metot", + "overriddenSymbol": "Geçersiz kılınan simge", + "overrideNoOverloadMatches": "Geçersiz kılmadaki hiçbir aşırı yükleme imzası temel metotla uyumlu değil", + "overrideNotClassMethod": "Temel metot bir örnek metodu olarak bildirilir, ancak geçersiz kılma bu şekilde bildirilmez", + "overrideNotInstanceMethod": "Temel metot bir örnek metodu olarak bildirilir, ancak geçersiz kılma bu şekilde bildirilmez", + "overrideNotStaticMethod": "Temel metot bir staticmethod olarak bildirilir, ancak geçersiz kılma bu şekilde bildirilmez", + "overrideOverloadNoMatch": "{index} aşırı yüklemesi, temel metotla uyumlu değil", + "overrideOverloadOrder": "Geçersiz kılma metoduna ait aşırı yüklemeler temel metotla aynı sırada olmalıdır", + "overrideParamKeywordNoDefault": "\"{name}\" anahtar sözcük parametresi eşleşmiyor: Temel parametrede varsayılan bağımsız değişken değer var, geçersiz kılma parametresinde yok", + "overrideParamKeywordType": "\"{name}\" anahtar sözcük parametresi tür uyuşmazlığı: temel parametre \"{baseType}\" türünde, geçersiz kılma parametresi \"{overrideType}\" türünde", + "overrideParamName": "{index} parametresi ad uyuşmazlığı: temel parametre adı \"{baseName}\", geçersiz kılma parametresinin adı \"{overrideName}\"", + "overrideParamNameExtra": "Temelde \"{name}\" parametresi eksik", + "overrideParamNameMissing": "Geçersiz kılmada \"{name}\" parametresi eksik", + "overrideParamNamePositionOnly": "{index} parametresi adı eşleşmiyor: temel parametre adı \"{baseName}\", geçersiz kılma parametresi position-only\"", + "overrideParamNoDefault": "{index} parametresi eşleşmiyor: Temel parametrede varsayılan bağımsız değişken değer var, geçersiz kılma parametresinde yok", + "overrideParamType": "\"{index}\" parametresi tür uyuşmazlığı: temel parametre \"{baseType}\" türünde, geçersiz kılma parametresi \"{overrideType}\" türünde", + "overridePositionalParamCount": "Konumsal parametre sayısı uyuşmazlığı; temel metotta {baseCount} var, ancak geçersiz kılmada {overrideCount} var", + "overrideReturnType": "Dönüş türü uyuşmazlığı: temel metot tür \"{baseType}\" türü döndürür, geçersiz kılma ise \"{overrideType}\" türü döndürür", + "overrideType": "Temel sınıf, türü \"{type}\" olarak tanımlar", + "paramAssignment": "Parametre {index}: tür \"{sourceType}\", \"{destType}\" türüne atanamıyor", + "paramSpecMissingInOverride": "Geçersiz kılma metodunda ParamSpec parametreleri eksik", + "paramType": "Parametre türü \"{paramType}\"", + "privateImportFromPyTypedSource": "Bunun yerine \"{module}\" üzerinden içeri aktarın", + "propertyAccessFromProtocolClass": "Protokol sınıfı içinde tanımlanan bir özelliğe sınıf değişkeni olarak erişilemez", + "propertyMethodIncompatible": "\"{name}\" özellik metodu uyumsuz", + "propertyMethodMissing": "Geçersiz kılmada \"{name}\" özellik metodu eksik", + "propertyMissingDeleter": "\"{name}\" özelliği tanımlı bir siliciye sahip değil", + "propertyMissingSetter": "\"{name}\" özelliği tanımlı bir ayarlayıcıya sahip değil", + "protocolIncompatible": "\"{sourceType}\", \"{destType}\" protokol ayarlarıyla uyumsuz", + "protocolMemberClassVar": "\"{name}\" bir sınıf değişkeni değil", + "protocolMemberMissing": "\"{name}\" yok", + "protocolSourceIsNotConcrete": "\"{sourceType}\" somut bir sınıf türü değil ve \"{destType}\" türüne atanamaz", + "pyrightCommentIgnoreTip": "Tek bir satır için tanılamayı durdurmak için \"# pyright: ignore[] kullanın", + "readOnlyAttribute": "\"{name}\" özniteliği salt okunur", + "seeClassDeclaration": "Sınıf bildirimine bakın", + "seeDeclaration": "Bildirime bakın", + "seeFunctionDeclaration": "İşlev bildirimine bakın", + "seeMethodDeclaration": "Metot bildirimine bakın", + "seeParameterDeclaration": "Parametre bildirimine bakın", + "seeTypeAliasDeclaration": "Tür diğer adı bildirimine bakın", + "seeVariableDeclaration": "Değişken bildirimine bakın", + "tupleAssignmentMismatch": "\"{type}\" türü hedef demet ile uyumsuz", + "tupleEntryTypeMismatch": "{entry} demet girdisi doğru türde değil", + "tupleSizeMismatch": "Öğe boyutu uyuşmuyor; \"{expected}\" bekleniyordu ancak \"{received}\" alındı", + "typeAssignmentMismatch": "\"{sourceType}\" türü \"{destType}\" türüne atanamaz", + "typeBound": "\"{sourceType}\" türü, \"{name}\" tür değişkeni için \"{destType}\" bağlı türü ile uyumlu değil", + "typeConstrainedTypeVar": "\"{type}\" türü, \"{name}\" kısıtlanmış tür değişkeni değişkeniyle uyumlu değil", + "typeIncompatible": "\"{sourceType}\", \"{destType}\" ile uyumlu değil", + "typeNotCallable": "\"{type}\" türü çağrılabilir değil", + "typeNotClass": "\"{type}\" bir sınıf değil", + "typeNotStringLiteral": "\"{type}\" bir sabit değeri dize değil", + "typeOfSymbol": "\"{name}\" türü \"{type}\"", + "typeParamSpec": "\"{type}\" türü \"{name}\" ParamSpec ile uyumlu değil", + "typeUnsupported": "\"{type}\" türü desteklenmiyor", + "typeVarDefaultOutOfScope": "\"{name}\" tür değişkeni kapsamda değil", + "typeVarIsContravariant": "\"{name}\" adlı TypeVar değişken karşıtı", + "typeVarIsCovariant": "TypeVar \"{name}\" birlikte değişen", + "typeVarIsInvariant": "TypeVar \"{name}\" sabit", + "typeVarNotAllowed": "Tür bağımsız değişkenlerine sahip TypeVar veya genel türe izin verilmiyor", + "typeVarTupleRequiresKnownLength": "TypeVarTuple, uzunluğu bilinmeyen bir demete bağlanamaz", + "typeVarUnsolvableRemedy": "Bağımsız değişken sağlanmamışken dönüş türünü belirten bir aşırı yükleme belirtin", + "typeVarsMissing": "Eksik tür değişkenleri: {names}", + "typedDictFieldMissing": "\"{type}\" için \"{name}\" eksik", + "typedDictFieldNotReadOnly": "\"{name}\", \"{type}\" içinde salt okunur değil", + "typedDictFieldNotRequired": "\"{type}\" içinde \"{name}\" gerekli değil", + "typedDictFieldRequired": "\"{type}\" içinde \"{name}\" gerekiyor", + "typedDictFieldTypeMismatch": "\"{type}\" türü \"{name}\" alanına atanamaz", + "typedDictFieldTypeRedefinition": "Üst sınıftaki tür \"{parentType}\" ve alt sınıftaki tür \"{childType}\"", + "typedDictFieldUndefined": "\"{name}\", \"{type}\" türü içinde tanımsız bir alan", + "typedDictFinalMismatch": "\"{sourceType}\" @final uyumsuzluğu nedeniyle \"{destType}\" ile uyumsuz", + "unhashableType": "\"{type}\" türü karmalanabilir değil", + "uninitializedAbstractVariable": "\"{name}\" örnek değişkeni, \"{classType}\" soyut temel sınıfında tanımlandı ancak başlatılmadı", + "unreachableExcept": "\"{exceptionType}\", \"{parentType}\" üst öğesinin bir alt sınıfı", + "useDictInstead": "Sözlük türünü belirtmek için Dict[T1, T2] kullanın", + "useListInstead": "Liste türü belirtmek için List[T] veya birleşim türü belirtmek için Union[T1, T2] kullanın", + "useTupleInstead": "Demet türünü belirtmek için Tuple[T1, ..., Tn] veya birleşim türünü belirtmek için Union[T1, T2] kullanın", + "useTypeInstead": "Bunun yerine Type[T] kullanın", + "varianceMismatchForClass": "\"{typeVarName}\" tür bağımsız değişkeni \"{className}\" taban sınıfıyla uyumsuz", + "varianceMismatchForTypeAlias": "\"{typeVarName}\" tür bağımsız değişkeninin varyansı, \"{typeAliasParam}\" ile uyumsuz" + } +} 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 0db3279e4..b8d9889c6 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-cn.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-cn.json @@ -1,3 +1,718 @@ { - + "CodeAction": { + "addOptionalToAnnotation": "将 \"Optional\" 添加到类型批注", + "createTypeStub": "创建类型存根", + "createTypeStubFor": "为“{moduleName}”创建类型存根", + "executingCommand": "正在执行命令", + "filesToAnalyzeCount": "要分析的 {count} 个文件", + "filesToAnalyzeOne": "1 个要分析的文件", + "findingReferences": "正在查找引用", + "organizeImports": "整理 Import", + "renameShadowedFile": "将“{oldFile}”重命名为“{newFile}”" + }, + "Diagnostic": { + "abstractMethodInvocation": "无法调用方法\"{method}\",因为它是抽象的", + "annotatedParamCountMismatch": "参数批注计数不匹配: 应为 {expected},但收到 {received}", + "annotatedTypeArgMissing": "“Annotated”应为一个类型参数和一个或多个批注", + "annotationFormatString": "类型批注不能使用格式字符串文本 (f 字符串)", + "annotationNotSupported": "此语句不支持类型批注", + "annotationSpansStrings": "类型批注不能跨越多个字符串文本", + "annotationStringEscape": "类型批注不能包含转义字符", + "argAssignment": "无法将“{argType}”类型的参数分配给“{paramType}”类型的参数", + "argAssignmentFunction": "无法将\"{argType}\"类型的参数分配给函数\"{functionName}\"中的\"{paramType}\"类型参数", + "argAssignmentParam": "无法将“{argType}”类型的参数分配给“{paramType}”类型的参数“{paramName}”", + "argAssignmentParamFunction": "无法将“{argType}”类型的参数分配给函数“{functionName}”中类型为“{paramType}”的参数“{paramName}”", + "argMissingForParam": "参数 {name} 缺少参数", + "argMissingForParams": "参数 {names} 缺少参数", + "argMorePositionalExpectedCount": "预期还有 {expected} 个位置参数", + "argMorePositionalExpectedOne": "应为 1 个以上位置参数", + "argPositional": "应为位置参数", + "argPositionalExpectedCount": "应为 {expected} 个位置参数", + "argPositionalExpectedOne": "应为 1 个位置参数", + "argTypePartiallyUnknown": "参数类型部分未知", + "argTypeUnknown": "参数类型未知", + "assertAlwaysTrue": "断言表达式的计算结果始终为 true", + "assertTypeArgs": "“assert_type”需要两个位置参数", + "assertTypeTypeMismatch": "“assert_type”不匹配:应为“{expected}”,但收到“{received}”", + "assignmentExprComprehension": "赋值表达式目标“{name}”不能使用与目标理解相同的名称", + "assignmentExprContext": "赋值表达式必须在模块、函数或 lambda 中", + "assignmentExprInSubscript": "仅在 Python 3.10 和更高版本中支持下标中的赋值表达式", + "assignmentInProtocol": "协议类中的实例或类变量必须在类主体内显式声明", + "assignmentTargetExpr": "表达式不能是赋值目标", + "asyncNotInAsyncFunction": "异步函数之外不允许使用“async”", + "awaitIllegal": "使用 “await” 需要 Python 3.5 或更高版本", + "awaitNotInAsync": "仅允许在异步函数内使用“await”", + "backticksIllegal": "Python 3.x 中不支持由反引号环绕的表达式;请改用 repr", + "baseClassCircular": "类不能从自身派生", + "baseClassFinal": "基类“{type}”被标记为最终类,不能为子类", + "baseClassInvalid": "类的参数必须是基类", + "baseClassMethodTypeIncompatible": "类“{classType}”的基类以不兼容的方式定义方法“{name}”", + "baseClassUnknown": "基类类型未知,隐蔽派生类的类型", + "baseClassVariableTypeIncompatible": "类“{classType}”的基类以不兼容的方式定义变量“{name}”", + "bindTypeMismatch": "无法绑定方法“{methodName}”,因为“{type}”不能分配给参数“{paramName}”", + "breakOutsideLoop": "“break”只能在循环中使用", + "callableExtraArgs": "\"Callable\"应只有两个类型参数", + "callableFirstArg": "应为参数类型列表或“...”", + "callableNotInstantiable": "无法实例化类型“{type}”", + "callableSecondArg": "返回类型应为\"Callable\"的第二个类型参数", + "casePatternIsIrrefutable": "仅最后一个 case 语句允许使用无可辩驳的模式", + "classAlreadySpecialized": "类型\"{type}\"已专用化", + "classDecoratorTypeUnknown": "非类型化类修饰器遮盖类类型;忽略修饰器", + "classDefinitionCycle": "“{name}”的类定义取决于自身", + "classGetItemClsParam": "__class_getitem__替代应采用“cls”参数", + "classMethodClsParam": "类方法应采用“cls”参数", + "classNotRuntimeSubscriptable": "类“{name}”的下标将生成运行时异常;将类型批注括在引号中", + "classPatternBuiltInArgCount": "类模式最多接受 1 个位置子模式", + "classPatternBuiltInArgPositional": "类模式仅接受位置子模式", + "classPatternTypeAlias": "无法在类模式中使用“{type}”,因为它是专用类型别名", + "classTypeParametersIllegal": "类类型参数语法需要 Python 3.12 或更高版本", + "classVarFirstArgMissing": "\"ClassVar\"后应为类型参数", + "classVarNotAllowed": "此上下文中不允许使用“ClassVar”", + "classVarOverridesInstanceVar": "类变量\"{name}\"替代类\"{className}\"中的同名实例变量", + "classVarTooManyArgs": "“ClassVar”后应只有一个类型参数", + "classVarWithTypeVar": "“ClassVar”类型不能包含类型变量", + "clsSelfParamTypeMismatch": "参数“{name}”的类型必须是类“{classType}”的超类型", + "codeTooComplexToAnalyze": "代码太复杂,无法分析;通过重构为子例程或减少条件代码路径来降低复杂性", + "collectionAliasInstantiation": "无法实例化类型“{type}”,请改用“{alias}”", + "comparisonAlwaysFalse": "条件的计算结果始终为 False,因为类型“{leftType}”和“{rightType}”没有重叠", + "comparisonAlwaysTrue": "条件的计算结果始终为 True,因为类型“{leftType}”和“{rightType}”没有重叠", + "comprehensionInDict": "理解不能与其他字典条目一起使用", + "comprehensionInSet": "理解不能与其他集条目一起使用", + "concatenateParamSpecMissing": "“Concatenate”的最后一个类型参数必须是 ParamSpec", + "concatenateTypeArgsMissing": "“Concatenate” 至少需要两个类型参数", + "conditionalOperandInvalid": "类型“{type}”的条件操作数无效", + "constantRedefinition": "“{name}”是常量 (因为它是大写)且无法重新定义", + "constructorNoArgs": "\"{type}\"构造函数不应有参数", + "constructorParametersMismatch": "类“{classType}”中__new__和__init__的签名不匹配", + "containmentAlwaysFalse": "表达式的计算结果始终为 False,因为类型“{leftType}”和“{rightType}”没有重叠", + "containmentAlwaysTrue": "表达式的计算结果始终为 True,因为类型“{leftType}”和“{rightType}”没有重叠", + "continueInFinally": "“continue”不能在 finally 子句中使用", + "continueOutsideLoop": "“continue”只能在循环中使用", + "dataClassBaseClassFrozen": "非冻结类不能从已冻结类继承", + "dataClassBaseClassNotFrozen": "冻结类不能从未冻结的类继承", + "dataClassConverterFunction": "类型“{argType}”的参数不是类型为“{fieldType}”的字段“{fieldName}”的有效转换器", + "dataClassConverterOverloads": "“{funcName}”的重载不是类型为“{fieldType}”的字段“{fieldName}”的有效转换器", + "dataClassFieldWithDefault": "没有默认值的字段不能出现在具有默认值的字段之后", + "dataClassFieldWithPrivateName": "数据类字段不能使用专用名称", + "dataClassFieldWithoutAnnotation": "不带类型批注的数据类字段将导致运行时异常", + "dataClassPostInitParamCount": "数据类__post_init__参数计数不正确;InitVar 字段数为 {expected}", + "dataClassPostInitType": "数据类__post_init__方法参数类型不匹配 \"{fieldName}\"字段", + "dataClassSlotsOverwrite": "__slots__已在类中定义", + "dataClassTransformExpectedBoolLiteral": "静态计算结果为 True 或 False 的预期表达式", + "dataClassTransformFieldSpecifier": "应为类或函数的元组,但收到的类型\"{type}\"", + "dataClassTransformPositionalParam": "“dataclass_transform”的所有参数都必须是关键字参数", + "dataClassTransformUnknownArgument": "dataclass_transform不支持参数“{name}”", + "declaredReturnTypePartiallyUnknown": "声明的返回类型“{returnType}”部分未知", + "declaredReturnTypeUnknown": "声明的返回类型未知", + "defaultValueContainsCall": "参数默认值表达式中不允许函数调用和可变对象", + "defaultValueNotAllowed": "“*”或“**”的参数不能有默认值", + "delTargetExpr": "无法删除表达式", + "deprecatedClass": "类\"{name}\"已弃用", + "deprecatedConstructor": "类\"{name}\"的构造函数已弃用", + "deprecatedFunction": "此函数“{name}”已弃用", + "deprecatedType": "自 Python {version} 起,此类型已弃用;请改用“{replacement}”", + "dictExpandIllegalInComprehension": "理解中不允许字典扩展", + "dictInAnnotation": "类型批注中不允许使用字典表达式", + "dictKeyValuePairs": "字典条目必须包含键/值对", + "dictUnpackIsNotMapping": "字典解包运算符的预期映射", + "dunderAllSymbolNotPresent": "\"{name}\"已在__all__中指定,但在模块中不存在", + "duplicateArgsParam": "只允许一个 \"*\" 参数", + "duplicateBaseClass": "不允许重复的基类", + "duplicateCapturePatternTarget": "捕获目标“{name}”不能在同一模式中出现多次", + "duplicateCatchAll": "仅允许一个 catch-all except 子句", + "duplicateEnumMember": "枚举成员\"{name}\"已声明", + "duplicateGenericAndProtocolBase": "只允许一个泛型[...]或协议[...]基类", + "duplicateImport": "已多次导入“{importName}”", + "duplicateKeywordOnly": "只允许一个“*”分隔符", + "duplicateKwargsParam": "仅允许一个 “**” 参数", + "duplicateParam": "参数“{name}”重复", + "duplicatePositionOnly": "只允许一个“/”参数", + "duplicateStarPattern": "模式序列中只允许一个“*”模式", + "duplicateStarStarPattern": "只允许一个“**”条目", + "duplicateUnpack": "列表中仅允许一个解包操作", + "ellipsisContext": "\"...\"不允许在此上下文中使用", + "ellipsisSecondArg": "\"...\" 仅允许作为两个参数中的第二个参数", + "enumClassOverride": "枚举类“{name}”是最终类,不能为子类", + "exceptionGroupIncompatible": "异常组语法 (\"except*\") 需要 Python 3.11 或更高版本", + "exceptionTypeIncorrect": "\"{type}\" 不是派生自 BaseException", + "exceptionTypeNotClass": "“{type}”不是有效的异常类", + "exceptionTypeNotInstantiable": "异常类型\"{type}\"的构造函数需要一个或多个参数", + "expectedAfterDecorator": "修饰器后应有函数或类声明", + "expectedArrow": "应为“->”,后跟返回类型批注", + "expectedAsAfterException": "异常类型后应为“as”", + "expectedAssignRightHandExpr": "应为 “=” 右侧的表达式", + "expectedBinaryRightHandExpr": "应为运算符右侧的表达式", + "expectedBoolLiteral": "应为 True 或 False", + "expectedCase": "应为 “case” 语句", + "expectedClassName": "预期的类名", + "expectedCloseBrace": "\"{\" 未关闭", + "expectedCloseBracket": "“[”未关闭", + "expectedCloseParen": "\"(\" 未关闭", + "expectedColon": "应为 \":\"", + "expectedComplexNumberLiteral": "模式匹配的预期复数文本", + "expectedDecoratorExpr": "Python 3.9 之前的修饰器不支持表达式窗体", + "expectedDecoratorName": "预期的修饰器名称", + "expectedDecoratorNewline": "修饰器末尾应有新行", + "expectedDelExpr": "\"del\"后应为表达式", + "expectedElse": "应为 \"else\"", + "expectedEquals": "应为 \"=\"", + "expectedExceptionClass": "异常类或对象无效", + "expectedExceptionObj": "应为异常对象、异常类或 None", + "expectedExpr": "应为表达式", + "expectedFunctionAfterAsync": "\"async\"后面应有函数定义", + "expectedFunctionName": "“def”后应为函数名称", + "expectedIdentifier": "预期标识符", + "expectedImport": "应为 \"import\"", + "expectedImportAlias": "应为 “as” 后面的符号", + "expectedImportSymbols": "导入后应有一个或多个符号名称", + "expectedIn": "应为 \"in\"", + "expectedInExpr": "\"in\"后应为表达式", + "expectedIndentedBlock": "应为缩进块", + "expectedMemberName": "应为“.”后的成员名称。", + "expectedModuleName": "预期模块名称", + "expectedNameAfterAs": "\"as\" 后应有符号名", + "expectedNamedParameter": "关键字参数必须跟在 “*” 之后", + "expectedNewline": "需要换行符", + "expectedNewlineOrSemicolon": "语句必须用换行符或分号分隔", + "expectedOpenParen": "应为 \"(\"", + "expectedParamName": "应为参数名称", + "expectedPatternExpr": "预期的模式表达式", + "expectedPatternSubjectExpr": "预期的模式主题表达式", + "expectedPatternValue": "应为 “a.b”形式的模式值表达式", + "expectedReturnExpr": "“return” 后应有表达式", + "expectedSliceIndex": "预期索引或切片表达式", + "expectedTypeNotString": "应为类型,但收到字符串文本", + "expectedTypeParameterName": "应为类型参数名称", + "expectedYieldExpr": "yield 语句中的预期表达式", + "finalClassIsAbstract": "类\"{type}\"被标记为 final,并且必须实现所有抽象方法", + "finalContext": "此上下文中不允许使用\"Final\"", + "finalMethodOverride": "方法\"{name}\"无法替代在类\"{className}\"中定义的最终方法", + "finalReassigned": "\"{name}\"声明为 Final,无法重新分配", + "finalRedeclaration": "\"{name}\"以前声明为 Final", + "finalRedeclarationBySubclass": "无法重新声明“{name}”,因为父类“{className}”将其声明为 Final", + "finalTooManyArgs": "“Final”后应为单个类型参数", + "finalUnassigned": "“{name}”声明为“最终”,但未分配值", + "formatStringBrace": "f 字符串文本中不允许使用单个右大括号;使用双右大括号", + "formatStringBytes": "格式字符串文本(f 字符串)不能为二进制", + "formatStringDebuggingIllegal": "F 字符串调试说明符“=”需要 Python 3.8 或更高版本", + "formatStringEscape": "Python 3.12 之前 f 字符串的表达式部分中不允许使用转义序列(反斜杠)", + "formatStringExpectedConversion": "在 f 字符串中应为 \"!\" 之后的转换说明符", + "formatStringIllegal": "格式化字符串文本(f 字符串)需要 Python 3.6 或更高版本", + "formatStringInPattern": "模式中不允许使用格式字符串", + "formatStringNestedFormatSpecifier": "表达式嵌套在格式字符串说明符内太深", + "formatStringNestedQuote": "嵌套在 f 字符串中的字符串不能使用与 Python 3.12 之前的 f 字符串相同的引号字符", + "formatStringUnicode": "格式字符串文本(f 字符串)不能为 unicode", + "formatStringUnterminated": "f 字符串中未终止的表达式;应为 \"}\"", + "functionDecoratorTypeUnknown": "非类型化函数修饰器遮盖函数类型;忽略修饰器", + "functionInConditionalExpression": "始终计算结果为 True 的条件表达式引用函数", + "functionTypeParametersIllegal": "函数类型参数语法需要 Python 3.12 或更高版本", + "futureImportLocationNotAllowed": "从__future__导入必须位于文件的开头", + "generatorAsyncReturnType": "异步生成器函数的返回类型必须与 \"AsyncGenerator[{yieldType}, Any]\" 兼容", + "generatorNotParenthesized": "如果不是唯一参数,生成器表达式必须带圆括号", + "generatorSyncReturnType": "生成器函数的返回类型必须与 \"Generator[{yieldType}, Any, Any]\"兼容", + "genericBaseClassNotAllowed": "“Generic” 基类不能与类型参数语法一起使用", + "genericClassAssigned": "无法分配泛型类类型", + "genericClassDeleted": "无法删除泛型类类型", + "genericNotAllowed": "\"Generic\" 在此上下文中无效", + "genericTypeAliasBoundTypeVar": "类中的泛型类型别名不能使用绑定类型变量 {names}", + "genericTypeArgMissing": "“Generic”至少需要一个类型参数", + "genericTypeArgTypeVar": "“Generic”的类型参数必须是类型变量", + "genericTypeArgUnique": "“Generic”的类型参数必须是唯一", + "globalReassignment": "在全局声明之前分配了“{name}”", + "globalRedefinition": "“{name}”已声明为全局", + "implicitStringConcat": "不允许隐式字符串串联", + "importCycleDetected": "在导入链中检测到的周期数", + "importDepthExceeded": "导入链深度超过 {depth}", + "importResolveFailure": "无法解析导入“{importName}”", + "importSourceResolveFailure": "无法从源解析导入“{importName}”", + "importSymbolUnknown": "“{name}”是未知的导入符号", + "incompatibleMethodOverride": "方法“{name}”以不兼容的方式替代类“{className}”", + "inconsistentIndent": "取消缩进量与以前的缩进不匹配", + "inconsistentTabs": "缩进中制表符和空格的使用不一致", + "initMustReturnNone": "“__init__”的返回类型必须为 None", + "initSubclassClsParam": "__init_subclass__替代应采用“cls”参数", + "instanceMethodSelfParam": "实例方法应采用 “self” 参数", + "instanceVarOverridesClassVar": "实例变量\"{name}\"替代类\"{className}\"中的同名类变量", + "instantiateAbstract": "无法实例化抽象类“{type}”", + "instantiateProtocol": "无法实例化协议类“{type}”", + "internalBindError": "绑定文件“{file}”时发生内部错误:{message}", + "internalParseError": "分析文件“{file}”时发生内部错误:{message}", + "internalTypeCheckingError": "类型检查文件“{file}”时发生内部错误:{message}", + "invalidIdentifierChar": "标识符中的字符无效", + "invalidStubStatement": "语句在类型存根文件中无意义", + "invalidTokenChars": "令牌中的字符\"{text}\"无效", + "isInstanceInvalidType": "“isinstance” 的第二个参数必须是类的类或元组", + "isSubclassInvalidType": "“issubclass”的第二个参数必须是类的类或元组", + "keyValueInSet": "不允许在集内使用键/值对", + "keywordArgInTypeArgument": "关键字参数不能在类型参数列表中使用", + "keywordOnlyAfterArgs": "“*”参数后不允许使用仅限关键字的参数分隔符", + "keywordParameterMissing": "一个或多个关键字参数必须遵循 \"*\"参数", + "keywordSubscriptIllegal": "不支持下标中的关键字参数", + "lambdaReturnTypePartiallyUnknown": "lambda 的返回类型“{returnType}”部分未知", + "lambdaReturnTypeUnknown": "lambda 的返回类型未知", + "listAssignmentMismatch": "无法将 \"{type}\" 类型的表达式分配给目标列表", + "listInAnnotation": "类型批注中不允许使用列表表达式", + "literalEmptyArgs": "“Literal”后应有一个或多个类型参数", + "literalNotCallable": "无法实例化文本类型", + "literalUnsupportedType": "“Literal” 的类型参数必须是 None、int、bool、str 或 bytes)(文本值,或者是枚举值", + "matchIncompatible": "匹配语句需要 Python 3.10 或更高版本", + "matchIsNotExhaustive": "match 语句中的事例不会彻底处理所有值", + "maxParseDepthExceeded": "超出最大分析深度;将表达式分解为较小的子表达式", + "memberAccess": "无法存取类型“{type}”的成员“{name}”", + "memberDelete": "无法删除类型\"{type}\"的成员\"{name}\"", + "memberSet": "无法为类型“{type}”分配成员“{name}”", + "metaclassConflict": "派生类的元类必须是其所有基类的元类的子类", + "metaclassDuplicate": "只能提供一个元类", + "metaclassIsGeneric": "元类不能是泛型", + "methodNotDefined": "未定义“{name}”方法", + "methodNotDefinedOnType": "未在类型\"{type}\"上定义\"{name}\"方法", + "methodOrdering": "无法创建一致的方法排序", + "methodOverridden": "“{name}”在类型“{type}”不兼容的类“{className}”中替代同名的方法", + "methodReturnsNonObject": "“{name}”方法不返回对象", + "missingProtocolMembers": "类派生自一个或多个协议类,但不实现所有必需的成员", + "missingSuperCall": "方法“{methodName}”在父类中不调用同名方法", + "moduleAsType": "模块不能用作类型", + "moduleNotCallable": "模块不可调用", + "moduleUnknownMember": "“{memberName}”不是模块“{moduleName}”的已知成员", + "namedExceptAfterCatchAll": "在 catch-all(除子句外)后不能出现命名的 except 子句", + "namedParamAfterParamSpecArgs": "关键字参数“{name}”不能出现在 ParamSpec args 参数之后的签名中", + "namedTupleEmptyName": "命名元组中的名称不能为空", + "namedTupleFirstArg": "应将命名元组类名称作为第一个参数", + "namedTupleMultipleInheritance": "不支持使用 NamedTuple 进行多个继承", + "namedTupleNameType": "应为指定条目名称和类型的双条目元组", + "namedTupleNameUnique": "命名元组中的名称必须唯一", + "namedTupleNoTypes": "“namedtuple”不提供元组条目的类型;请改用“NamedTuple”", + "namedTupleSecondArg": "应将命名元组条目列表作为第二个参数", + "newClsParam": "__new__替代应采用“cls”参数", + "newTypeBadName": "NewType 的第一个参数必须是字符串文本", + "newTypeLiteral": "NewType 不能与文本类型一起使用", + "newTypeNotAClass": "应为 NewType 的第二个参数的类", + "newTypeParamCount": "NewType 需要两个位置参数", + "newTypeProtocolClass": "NewType 不能与协议类一起使用", + "noOverload": "“{name}”的重载与提供的参数不匹配", + "noReturnContainsReturn": "声明返回类型为“NoReturn”的函数不能包含 return 语句", + "noReturnContainsYield": "声明的返回类型为 “NoReturn” 的函数不能包含 yield 语句", + "noReturnReturnsNone": "声明类型为“NoReturn”的函数无法返回“None”", + "nonDefaultAfterDefault": "非默认参数遵循默认参数", + "nonLocalInModule": "模块级别不允许使用非本地声明", + "nonLocalNoBinding": "找不到非本地“{name}”的绑定", + "nonLocalReassignment": "在非本地声明之前分配了“{name}”", + "nonLocalRedefinition": "\"{name}\"已声明为非本地", + "noneNotCallable": "无法调用类型为“None”的对象", + "noneNotIterable": "类型为“None”的对象不能用作可迭代值", + "noneNotSubscriptable": "类型为“None”的对象不可下标", + "noneNotUsableWith": "类型为“None”的对象不能与“with”一起使用", + "noneOperator": "“None”不支持运算符\"{operator}\"", + "noneUnknownMember": "“{name}”不是“None”的已知成员", + "notRequiredArgCount": "“NotRequired” 之后应为单个类型参数", + "notRequiredNotInTypedDict": "此上下文中不允许使用“NotRequired”", + "objectNotCallable": "类型为“{type}”的对象不可调用", + "obscuredClassDeclaration": "类声明\"{name}\"被同名的声明遮蔽", + "obscuredFunctionDeclaration": "函数声明“{name}”被同名声明遮盖", + "obscuredMethodDeclaration": "方法声明“{name}”被同名声明遮盖", + "obscuredParameterDeclaration": "参数声明“{name}”被同名声明遮盖", + "obscuredTypeAliasDeclaration": "类型别名声明“{name}”被同名声明遮盖", + "obscuredVariableDeclaration": "声明“{name}”被同名声明遮盖", + "operatorLessOrGreaterDeprecated": "Python 3 不支持运算符“<>”;请改用 \"!=\"", + "optionalExtraArgs": "\"Optional\"后面应有一个类型参数", + "orPatternIrrefutable": "无可辩驳的模式仅允许作为 \"or\"模式中的最后一个子模式", + "orPatternMissingName": "“or”模式中的所有子节点必须以相同的名称为目标", + "overlappingOverload": "永远不会使用“{name}”的重载 {obscured},因为其参数与重载 {obscuredBy} 重叠", + "overloadAbstractMismatch": "重载的方法必须全部为抽象方法或不为抽象方法", + "overloadImplementationMismatch": "重载实现与重载 {index} 的签名不一致", + "overloadReturnTypeMismatch": "“{name}”的重载 {prevIndex} 与重载 {newIndex} 重叠,并返回不兼容的类型", + "overloadWithImplementation": "“{name}”被标记为重载,但它包含一个实现", + "overloadWithoutImplementation": "\"{name}\"标记为重载,但未提供实现", + "overriddenMethodNotFound": "方法\"{name}\"标记为替代,但不存在同名的基方法", + "overrideDecoratorMissing": "方法\"{name}\"未标记为替代,但正在替代类\"{className}\"中的方法", + "paramAfterKwargsParam": "参数不能跟随“**”参数", + "paramAlreadyAssigned": "已分配参数“{name}”", + "paramAnnotationMissing": "参数“{name}”缺少类型批注", + "paramAssignmentMismatch": "无法将\"{sourceType}\"类型的表达式分配给\"{paramType}\"类型的参数", + "paramNameMissing": "没有名为“{name}”的参数", + "paramSpecArgsKwargsUsage": "ParamSpec 的“args”和“kwargs”成员必须同时出现在函数签名中", + "paramSpecArgsMissing": "缺少 ParamSpec“{type}”的参数", + "paramSpecArgsUsage": "ParamSpec 的 “args” 成员仅在与 *args 参数一起使用时有效", + "paramSpecAssignedName": "必须将 ParamSpec 分配给名为“{name}”的变量", + "paramSpecContext": "此上下文中不允许使用 ParamSpec", + "paramSpecDefaultNotTuple": "ParamSpec 的默认值应为省略号、元组表达式或 ParamSpec", + "paramSpecFirstArg": "ParamSpec 作为第一个参数的预期名称", + "paramSpecKwargsUsage": "ParamSpec 的“kwargs”成员仅在与 **kwargs 参数一起使用时有效", + "paramSpecNotBound": "参数规范“{type}”没有绑定值", + "paramSpecNotUsedByOuterScope": "ParamSpec“{name}”在此上下文中没有意义", + "paramSpecScopedToReturnType": "ParamSpec \"{name}\"在返回类型内的作用域为可调用,不能在函数体中引用", + "paramSpecUnknownArg": "ParamSpec 不支持多个参数", + "paramSpecUnknownMember": "“{name}”不是 ParamSpec 的已知成员", + "paramSpecUnknownParam": "“{name}”是 ParamSpec 的未知参数", + "paramTypeCovariant": "不能在参数类型中使用协变类型变量", + "paramTypePartiallyUnknown": "参数\"{paramName}\"的类型部分未知", + "paramTypeUnknown": "参数“{paramName}”的类型未知", + "parenthesizedContextManagerIllegal": "“with”语句中的括号需要 Python 3.9 或更高版本", + "patternNeverMatches": "主题类型“{type}”的模式永远不会匹配", + "positionArgAfterNamedArg": "位置参数不能出现在关键字参数之后", + "positionOnlyAfterArgs": "“*”参数后不允许使用仅位置参数分隔符", + "positionOnlyAfterKeywordOnly": "“/”参数必须出现在“*”参数之前", + "positionOnlyFirstParam": "不允许将仅位置参数分隔符用作第一个参数", + "positionOnlyIncompatible": "仅位置参数分隔符需要 Python 3.8 或更高版本", + "privateImportFromPyTypedModule": "未从模块“{module}”导出“{name}”", + "privateUsedOutsideOfClass": "\"{name}\"是专用的,在声明它的类之外使用", + "privateUsedOutsideOfModule": "“{name}”是专用的,在声明它的模块外部使用", + "propertyOverridden": "“{name}”错误地替代类“{className}”中同名的属性", + "propertyStaticMethod": "属性 getter、setter 或 deleter 不允许使用静态方法", + "protectedUsedOutsideOfClass": "“{name}”在声明它的类之外受到保护并被使用", + "protocolBaseClass": "协议类“{classType}”不能派生自非协议类“{baseType}”", + "protocolBaseClassWithTypeArgs": "使用类型参数语法时,协议类不允许使用类型参数", + "protocolIllegal": "使用 \"Protocol\" 需要 Python 3.7 或更高版本", + "protocolNotAllowedInTypeArgument": "\"Protocol\"不能用作类型参数", + "protocolUsedInCall": "协议类不能在“{name}”调用中使用", + "protocolVarianceContravariant": "泛型协议“{class}”中使用的类型变量“{variable}”应为逆变", + "protocolVarianceCovariant": "泛型协议“{class}”中使用的类型变量“{variable}”应为协变", + "protocolVarianceInvariant": "泛型协议“{class}”中使用的类型变量“{variable}”应为固定变量", + "pyrightCommentInvalidDiagnosticBoolValue": "Pyright 注释指令后面必须跟有“=”和 true 或 false 值", + "pyrightCommentInvalidDiagnosticSeverityValue": "Pyright 注释指令后面必须跟有“=”,并且值为 true、false、error、warning、information 或 none", + "pyrightCommentMissingDirective": "Pyright 注释后面必须是指令(基本或严格)或诊断规则", + "pyrightCommentNotOnOwnLine": "用于控制文件级设置的 Pyright 注释必须显示在其自己的行上", + "pyrightCommentUnknownDiagnosticRule": "“{rule}”是 pyright 注释的未知诊断规则", + "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\"是 pyright 注释的无效值;应为 true、false、error、warning、information 或 none", + "pyrightCommentUnknownDirective": "\"{directive}\"是 pyright 注释的未知指令;应为 “strict” 或 “basic”", + "readOnlyArgCount": "“ReadOnly”后应为单个类型参数", + "readOnlyNotInTypedDict": "此上下文中不允许使用“ReadOnly”", + "recursiveDefinition": "无法确定“{name}”的类型,因为它引用其自身", + "relativeImportNotAllowed": "相对导入不能与“import .a”窗体一起使用;改用 \"from . import a\"", + "requiredArgCount": "\"Required\"后应为单个类型参数", + "requiredNotInTypedDict": "此上下文中不允许使用\"Required\"", + "returnInAsyncGenerator": "异步生成器中不允许返回值为值的语句", + "returnMissing": "声明类型为“{returnType}”的函数必须在所有代码路径上返回值", + "returnOutsideFunction": "“return”只能在函数中使用", + "returnTypeContravariant": "逆变类型变量不能用于返回类型", + "returnTypeMismatch": "无法将类型“{exprType}”的表达式分配给返回类型“{returnType}”", + "returnTypePartiallyUnknown": "返回类型“{returnType}”部分未知", + "returnTypeUnknown": "返回类型未知", + "revealLocalsArgs": "“reveal_locals”调用应没有参数", + "revealLocalsNone": "此范围内没有局部变量", + "revealTypeArgs": "“reveal_type”调用应为单个位置参数", + "revealTypeExpectedTextArg": "函数“reveal_type”的“expected_text”参数必须是 str 文本值", + "revealTypeExpectedTextMismatch": "类型文本不匹配;应为\"{expected}\"但收到\"{received}\"", + "revealTypeExpectedTypeMismatch": "类型不匹配;应为“{expected}”,但收到“{received}”", + "selfTypeContext": "“Self”在此上下文中无效", + "selfTypeWithTypedSelfOrCls": "“Self”不能在具有“self”或“cls”参数的函数中使用,该参数的类型批注不是“Self”", + "setterGetterTypeMismatch": "属性资源库值类型不可分配给 getter 返回类型", + "singleOverload": "“{name}”被标记为重载,但缺少其他重载", + "slotsAttributeError": "未在__slots__中指定“{name}”", + "slotsClassVarConflict": "\"{name}\"与__slots__中声明的实例变量冲突", + "starPatternInAsPattern": "星形模式不能与“as”目标一起使用", + "starPatternInOrPattern": "在其他模式中,星形图案不能为 ORed", + "starStarWildcardNotAllowed": "** 不能与通配符“_”一起使用", + "staticClsSelfParam": "静态方法不应采用“self”或“cls”参数", + "stdlibModuleOverridden": "\"{path}\"正在替代 stdlib 模块\"{name}\"", + "strictTypeGuardReturnType": "StrictTypeGuard(\"{returnType}\")的返回类型不可分配给值参数类型 (\"{type}\")", + "stringNonAsciiBytes": "不允许使用非 ASCII 字符(以字节为单位)字符串文本", + "stringNotSubscriptable": "字符串表达式不能在类型批注中下标;将整个批注括在引号中", + "stringUnsupportedEscape": "字符串文本中不受支持的转义序列", + "stringUnterminated": "字符串文本未终止", + "stubFileMissing": "找不到“{importName}”的存根文件", + "stubUsesGetAttr": "类型存根文件不完整;“__getattr__”会遮盖模块的类型错误", + "sublistParamsIncompatible": "Python 3.x 不支持子列表参数", + "superCallArgCount": "“super” 调用应不超过两个参数", + "superCallFirstArg": "应将类类型作为“super”调用的第一个参数,但收到“{type}”", + "superCallSecondArg": "“super”调用的第二个参数必须是派生自“{type}”的对象或类", + "superCallZeroArgForm": "“super”调用的零参数形式仅在类中有效", + "symbolIsPossiblyUnbound": "“{name}”可能未绑定", + "symbolIsUnbound": "“{name}”未绑定", + "symbolIsUndefined": "未定义“{name}”", + "symbolOverridden": "“{name}”替代类“{className}”中的同名符号", + "totalOrderingMissingMethod": "类必须定义“__lt__”、“__le__”、“__gt__”或“__ge__”之一才能使用total_ordering", + "trailingCommaInFromImport": "不允许使用尾随逗号,没有括号", + "tryWithoutExcept": "Try 语句必须至少有一个 except 或 finally 子句", + "tupleAssignmentMismatch": "无法将类型为“{type}”的表达式分配给目标元组", + "tupleInAnnotation": "类型批注中不允许元组表达式", + "tupleIndexOutOfRange": "类型 {type} 的索引 {index} 超出范围", + "typeAliasIllegalExpressionForm": "类型别名定义的表达式形式无效", + "typeAliasIsRecursiveDirect": "类型别名“{name}”不能在其定义中使用自身", + "typeAliasNotInModuleOrClass": "TypeAlias 只能在模块或类范围内定义", + "typeAliasRedeclared": "“{name}”声明为 TypeAlias,只能分配一次", + "typeAliasStatementIllegal": "类型别名语句需要 Python 3.12 或更高版本", + "typeAliasTypeMustBeAssigned": "必须将 TypeAliasType 分配给与类型别名同名的变量", + "typeAliasTypeNameArg": "TypeAliasType 的第一个参数必须是表示类型别名名称的字符串文本", + "typeAliasTypeNameMismatch": "类型别名的名称必须与分配到的变量的名称匹配", + "typeAliasTypeParamInvalid": "类型参数列表必须是仅包含 TypeVar、TypeVarTuple 或 ParamSpec 的元组", + "typeAnnotationCall": "非法类型批注: 不允许调用表达式", + "typeAnnotationVariable": "非法类型批注:不允许变量,除非它是类型别名", + "typeArgListExpected": "应为 ParamSpec、省略号或类型列表", + "typeArgListNotAllowed": "不允许此类型参数使用列表表达式", + "typeArgsExpectingNone": "类“{name}”不应有类型参数", + "typeArgsMismatchOne": "应为一个类型参数,但收到 {received}", + "typeArgsMissingForAlias": "泛型类型别名“{name}”的预期类型参数", + "typeArgsMissingForClass": "泛型类“{name}”的预期类型参数", + "typeArgsTooFew": "为“{name}”提供的类型参数太少;应为 {expected},但收到 {received}", + "typeArgsTooMany": "为“{name}”提供的类型参数太多;应为 {expected},但收到 {received}", + "typeAssignmentMismatch": "无法将类型“{sourceType}”的表达式分配给声明的类型“{destType}”", + "typeCallNotAllowed": "type() 调用不应用于类型批注", + "typeCommentDeprecated": "已弃用类型注释;请改用类型批注", + "typeExpectedClass": "应为类型表达式,但收到“{type}”", + "typeGuardArgCount": "“TypeGuard”后应为单个类型参数", + "typeGuardParamCount": "用户定义的类型防护函数和方法必须至少有一个输入参数", + "typeNotAwaitable": "“{type}”不可等待", + "typeNotCallable": "“{expression}”的类型为“{type}”且不可调用", + "typeNotIntantiable": "无法实例化\"{type}\"", + "typeNotIterable": "“{type}”不可迭代", + "typeNotSpecializable": "无法专用化类型“{type}”", + "typeNotSubscriptable": "类型为“{type}”的对象不可下标", + "typeNotSupportBinaryOperator": "类型“{leftType}”和“{rightType}”不支持运算符“{operator}”", + "typeNotSupportBinaryOperatorBidirectional": "预期类型为 \"{expectedType}\"时,类型\"{type}\"不支持运算符\"{operator}\"", + "typeNotSupportUnaryOperator": "类型“{type}”不支持运算符“{operator}”", + "typeNotSupportUnaryOperatorBidirectional": "预期类型为 \"{expectedType}\"时,类型\"{type}\"不支持运算符\"{operator}\"", + "typeNotUsableWith": "\"{type}\"类型的对象不能与 “with” 一起使用,因为它未实现{method}", + "typeParameterBoundNotAllowed": "绑定或约束不能与 variadic 类型参数或 ParamSpec 一起使用", + "typeParameterConstraintTuple": "类型参数约束必须是两个或更多类型的元组", + "typeParameterExistingTypeParameter": "类型参数\"{name}\"已在使用中", + "typeParameterNotDeclared": "类型参数“{name}”未包含在“{container}”的类型参数列表中", + "typeParametersMissing": "必须至少指定一个类型参数", + "typePartiallyUnknown": "“{name}”的类型部分未知", + "typeUnknown": "\"{name}\"类型未知", + "typeVarAssignedName": "必须将 TypeVar 分配给名为“{name}”的变量", + "typeVarAssignmentMismatch": "无法将类型\"{type}\"分配给类型变量\"{name}\"", + "typeVarBoundAndConstrained": "TypeVar 不能同时绑定和约束", + "typeVarBoundGeneric": "TypeVar 绑定类型不能是泛型", + "typeVarConstraintGeneric": "TypeVar 约束类型不能是泛型", + "typeVarDefaultBoundMismatch": "TypeVar 默认类型必须是绑定类型的子类型", + "typeVarDefaultConstraintMismatch": "TypeVar 默认类型必须是受约束类型之一", + "typeVarDefaultIllegal": "类型变量默认类型需要 Python 3.13 或更高版本", + "typeVarDefaultInvalidTypeVar": "类型参数“{name}”的默认类型是指超出范围的一个或多个类型变量", + "typeVarFirstArg": "TypeVar 作为第一个参数的预期名称", + "typeVarNoMember": "TypeVar \"{type}\"没有成员\"{name}\"", + "typeVarNotSubscriptable": "TypeVar“{type}”不可下标", + "typeVarNotUsedByOuterScope": "类型变量“{name}”在此上下文中没有意义", + "typeVarPossiblyUnsolvable": "如果调用方没有为参数提供参数\"{param}\",则类型变量\"{name}\"可能无法解析", + "typeVarScopedToReturnType": "类型变量\"{name}\"在返回类型内的作用域为可调用,不能在函数体中引用", + "typeVarSingleConstraint": "TypeVar 必须至少有两种约束类型", + "typeVarTupleContext": "此上下文中不允许使用 TypeVarTuple", + "typeVarTupleDefaultNotUnpacked": "TypeVarTuple 默认类型必须是未打包的元组或 TypeVarTuple", + "typeVarTupleMustBeUnpacked": "TypeVarTuple 值需要解包运算符", + "typeVarTupleUnknownParam": "“{name}”是 TypeVarTuple 的未知参数", + "typeVarUnknownParam": "typeVar 的\"{name}\"是未知参数", + "typeVarUsedByOuterScope": "TypeVar“{name}”已被外部作用域使用", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" 在泛型函数签名中仅显示一次", + "typeVarVariance": "TypeVar 不能同时为协变和逆变", + "typeVarWithoutDefault": "“{name}”不能出现在类型参数列表的“{other}”后面,因为它没有默认类型", + "typeVarsNotInGenericOrProtocol": "Generic[] 或 Protocol[] 必须包括所有类型变量", + "typedDictAccess": "无法存取 TypedDict 中的项", + "typedDictBadVar": "TypedDict 类只能包含类型批注", + "typedDictBaseClass": "TypedDict 类的所有基类也必须是 TypedDict 类", + "typedDictBoolParam": "预期“{name}”参数的值为 True 或 False", + "typedDictDelete": "无法删除 TypedDict 中的项", + "typedDictEmptyName": "TypedDict 中的名称不能为空", + "typedDictEntryName": "字典条目名称的预期字符串文本", + "typedDictEntryUnique": "字典中的名称必须唯一", + "typedDictExtraArgs": "不支持额外的 TypedDict 参数", + "typedDictFieldReadOnlyRedefinition": "TypedDict 字段\"{name}\"不能重新定义为只读", + "typedDictFieldTypeRedefinition": "无法重新定义 TypedDict 字段“{name}”的类型", + "typedDictFirstArg": "应将 TypedDict 类名作为第一个参数", + "typedDictSecondArgDict": "预期的 dict 或关键字参数作为第二个参数", + "typedDictSecondArgDictEntry": "应为简单字典条目", + "typedDictSet": "无法在 TypedDict 中分配项", + "unaccessedClass": "未存取类“{name}”", + "unaccessedFunction": "无法存取函数\"{name}\"", + "unaccessedImport": "未存取导入“{name}”", + "unaccessedSymbol": "未存取“{name}”", + "unaccessedVariable": "无法存取变量“{name}”", + "unannotatedFunctionSkipped": "已跳过对函数“{name}”的分析,因为它未被批注", + "unexpectedAsyncToken": "“def”、“with” 或 “for” 应跟随 “async”", + "unexpectedExprToken": "表达式末尾出现意外标记", + "unexpectedIndent": "意外缩进", + "unexpectedUnindent": "不应取消缩进", + "unhashableDictKey": "字典密钥必须可哈希", + "unhashableSetEntry": "设置条目必须是可哈希", + "uninitializedAbstractVariables": "抽象基类中定义的变量未在最终类“{classType}”中初始化", + "uninitializedInstanceVariable": "未在类体或__init__方法中初始化实例变量“{name}”", + "unionForwardReferenceNotAllowed": "联合语法不能与字符串操作数一起使用;在整个表达式周围使用引号", + "unionSyntaxIllegal": "联合的替代语法需要 Python 3.10 或更高版本", + "unionTypeArgCount": "联合需要两个或更多类型参数", + "unmatchedEndregionComment": "#endregion 缺少相应的 #region", + "unmatchedRegionComment": "#region 缺少相应的 #endregion", + "unnecessaryCast": "不必要的 \"cast\" 调用;类型已为“{type}”", + "unnecessaryIsInstanceAlways": "不必要的 isinstance 调用;“{testType}”始终是“{classType}”的实例", + "unnecessaryIsSubclassAlways": "不必要的 issubclass 调用;“{testType}”始终是“{classType}”的子类", + "unnecessaryPyrightIgnore": "不必要的 \"# pyright: ignore\" 注释", + "unnecessaryPyrightIgnoreRule": "不必要的 \"# pyright: ignore\"规则: \"{name}\"", + "unnecessaryTypeIgnore": "不必要的 \"# type: ignore\" 注释", + "unpackArgCount": "\"Unpack\"后应为单个类型参数", + "unpackExpectedTypeVarTuple": "需要 TypeVarTuple 或 Tuple 作为 Unpack 的类型参数", + "unpackExpectedTypedDict": "解包的预期 TypedDict 类型参数", + "unpackIllegalInComprehension": "在理解中不允许解包操作", + "unpackInAnnotation": "类型批注中不允许解压缩运算符", + "unpackInDict": "字典中不允许解压缩操作", + "unpackInSet": "集内不允许解包运算符", + "unpackNotAllowed": "在此上下文中不允许解包", + "unpackOperatorNotAllowed": "此上下文中不允许解压缩操作", + "unpackTuplesIllegal": "Python 3.8 之前的元组中不允许解包操作", + "unpackedArgInTypeArgument": "无法在类型参数列表中使用未打包的参数", + "unpackedArgWithVariadicParam": "未打包的参数不能用于 TypeVarTuple 参数", + "unpackedDictArgumentNotMapping": "** 后面的参数表达式必须是具有“str”键类型的映射", + "unpackedDictSubscriptIllegal": "不允许在下标中使用字典解包运算符", + "unpackedSubscriptIllegal": "下标中的解包运算符需要 Python 3.11 或更高版本", + "unpackedTypeVarTupleExpected": "应为未打包的 TypeVarTuple;使用 Unpack[{name1}] 或 *{name2}", + "unpackedTypedDictArgument": "无法将解压缩的 TypedDict 参数与参数匹配", + "unreachableCode": "代码无法访问", + "unreachableExcept": "无法访问 Except 子句,因为已处理异常", + "unsupportedDunderAllOperation": "不支持对“__all__”执行操作,因此导出的符号列表可能不正确", + "unusedCallResult": "调用表达式的结果类型为 \"{type}\" 且未使用;如果这是有意为之,则分配给变量 “_”", + "unusedCoroutine": "未使用异步函数调用的结果;使用 “await” 或将结果分配给变量", + "unusedExpression": "表达式值未使用", + "varAnnotationIllegal": "变量的类型批注需要 Python 3.6 或更高版本;使用类型注释与以前的版本兼容", + "variableFinalOverride": "变量\"{name}\"被标记为 Final,并替代类\"{className}\"中同名的非 Final 变量", + "variadicTypeArgsTooMany": "类型参数列表最多可以有一个未打包的 TypeVarTuple 或 Tuple", + "variadicTypeParamTooManyAlias": "类型别名最多可以有一个 TypeVarTuple 类型参数,但收到多个 ({names})", + "variadicTypeParamTooManyClass": "泛型类最多可以有一个 TypeVarTuple 类型参数,但收到多个 ({names})", + "walrusIllegal": "运算符 \":=\" 需要 Python 3.8 或更高版本", + "walrusNotAllowed": "在此上下文中不允许使用运算符 \":=\",且不带括号", + "wildcardInFunction": "类或函数中不允许使用通配符导入", + "wildcardLibraryImport": "不允许从库中导入通配符", + "wildcardPatternTypePartiallyUnknown": "通配符模式捕获的类型部分未知", + "wildcardPatternTypeUnknown": "通配符模式捕获的类型未知", + "yieldFromIllegal": "使用“yield from”需要 Python 3.3 或更高版本", + "yieldFromOutsideAsync": "异步函数中不允许使用“yield from”", + "yieldOutsideFunction": "不允许在函数或 lambda 之外使用“yield”", + "yieldWithinListCompr": "不允许在列表理解中使用“yield”", + "zeroCaseStatementsFound": "Match 语句必须至少包含一个 case 语句", + "zeroLengthTupleNotAllowed": "此上下文中不允许使用零长度元组" + }, + "DiagnosticAddendum": { + "argParam": "参数对应于参数“{paramName}”", + "argParamFunction": "参数对应于函数“{functionName}”中的参数“{paramName}”", + "argsParamMissing": "参数“*{paramName}”没有相应的参数", + "argsPositionOnly": "仅位置参数不匹配;应为 {expected},但收到 {received}", + "argumentType": "参数类型为“{type}”", + "argumentTypes": "参数类型:({types})", + "assignToNone": "无法将类型分配给类型“None”", + "asyncHelp": "是否表示“async with”?", + "baseClassOverriddenType": "基类\"{baseClass}\"提供被替代的类型\"{type}\"", + "baseClassOverridesType": "基类“{baseClass}”替代类型{type}”", + "conditionalRequiresBool": "类型“{operandType}”的方法__bool__返回类型“{boolReturnType}”而不是“bool”", + "dataClassFieldLocation": "字段声明", + "dataClassFrozen": "\"{name}\"已冻结", + "finalMethod": "Final 方法", + "functionParamDefaultMissing": "参数“{name}”缺少默认参数", + "functionParamName": "参数名称不匹配: \"{destName}\" versus \"{srcName}\"", + "functionReturnTypeMismatch": "函数返回类型\"{sourceType}\"与类型\"{destType}\"不兼容", + "functionTooFewParams": "函数接受的位置参数太少;应为 {expected},但收到 {received}", + "functionTooManyParams": "函数接受太多位置参数;应为 {expected},但收到 {received}", + "incompatibleDeleter": "属性deleter 方法不兼容", + "incompatibleGetter": "属性 getter 方法不兼容", + "incompatibleSetter": "属性 setter 方法不兼容", + "initMethodLocation": "__init__方法已在类“{type}”中定义", + "initMethodSignature": "__init__的签名为“{type}”", + "keyNotRequired": "“{type}”中“{name}”不是必需的密钥,因此访问可能会导致运行时异常", + "keyReadOnly": "“{name}”是“{type}”中的只读密钥", + "keyRequiredDeleted": "“{name}”是必需的密钥,无法删除", + "keyUndefined": "“{name}”不是“{type}”中定义的密钥", + "kwargsParamMissing": "参数“**{paramName}”没有相应的参数", + "listAssignmentMismatch": "类型“{type}”与目标列表不兼容", + "literalAssignmentMismatch": "无法将“{sourceType}”分配给类型“{destType}”", + "matchIsNotExhaustiveHint": "如果未进行详尽处理,请添加\"case _: pass\"", + "matchIsNotExhaustiveType": "未处理的类型: \"{type}\"", + "memberAssignment": "无法将\"{type}\"类型的表达式分配给类\"{classType}\"的成员\"{name}\"", + "memberIsAbstract": "\"{type}.{name}\"是抽象的", + "memberIsAbstractMore": "还有 {count} 个...", + "memberIsFinalInProtocol": "\"{name}\"在协议中标记为 Final", + "memberIsInitVar": "成员“{name}”是仅初始字段", + "memberIsInvariant": "“{name}”是固定的,因为它是可变的", + "memberIsNotFinalInProtocol": "“{name}”未在协议中标记为 Final", + "memberSetClassVar": "无法通过类实例分配成员“{name}”,因为它是 ClassVar", + "memberTypeMismatch": "\"{name}\"是不兼容的类型", + "memberUnknown": "成员\"{name}\"未知", + "missingDeleter": "缺少属性 deleter方法", + "missingGetter": "缺少属性 getter 方法", + "missingProtocolMember": "成员\"{name}\"已在协议类\"{classType}\"中声明", + "missingSetter": "缺少属性 setter 方法", + "namedParamMissingInDest": "源中缺少关键字参数 \"{name}\"", + "namedParamMissingInSource": "源中缺少关键字参数“{name}”", + "namedParamTypeMismatch": "无法将\"{sourceType}\"类型的关键字参数\"{name}\"分配给类型\"{destType}\"", + "newMethodLocation": "__new__方法已在类“{type}”中定义", + "newMethodSignature": "__new__的签名为“{type}”", + "noOverloadAssignable": "没有重载函数与类型“{type}”匹配", + "orPatternMissingName": "缺少名称: {name}", + "overloadNotAssignable": "无法分配“{name}”的一个或多个重载", + "overloadSignature": "此处定义了重载签名", + "overloadWithImplementation": "函数重载的正文应为 “...”", + "overriddenMethod": "替代的方法", + "overriddenSymbol": "替代符号", + "overrideNoOverloadMatches": "替代中没有与基本方法兼容的重载签名", + "overrideNotClassMethod": "基方法声明为 classmethod,但替代不是", + "overrideNotInstanceMethod": "基方法声明为实例方法,但替代不是", + "overrideNotStaticMethod": "基方法声明为 staticmethod,但替代不是", + "overrideOverloadNoMatch": "重载 {index} 与基方法不兼容", + "overrideOverloadOrder": "替代方法的重载必须与基方法的顺序相同", + "overrideParamKeywordNoDefault": "关键字参数\"{name}\"不匹配: 基参数具有默认参数值,替代参数不匹配", + "overrideParamKeywordType": "关键字参数“{name}”类型不匹配: 基参数是类型“{baseType}”,替代参数为类型“{overrideType}”", + "overrideParamName": "参数{index}名称不匹配: 基参数命名为 \"{baseName}\",替代参数命名为 \"{overrideName}\"", + "overrideParamNameExtra": "基数中缺少参数“{name}”", + "overrideParamNameMissing": "替代中缺少参数“{name}”", + "overrideParamNamePositionOnly": "参数 {index} 名称不匹配:基参数命名为 \"{baseName}\",替代参数为仅位置\"", + "overrideParamNoDefault": "参数 {index} 不匹配: 基参数具有默认参数值,替代参数不匹配", + "overrideParamType": "参数 {index} 类型不匹配: 基参数为类型“{baseType}”,替代参数为类型“{overrideType}”", + "overridePositionalParamCount": "位置参数计数不匹配;基方法具有 {baseCount},但替代具有 {overrideCount}", + "overrideReturnType": "返回类型不匹配:基方法返回类型\"{baseType}\",替代返回类型\"{overrideType}\"", + "overrideType": "基类将类型定义为\"{type}\"", + "paramAssignment": "参数 {index}: 无法将类型“{sourceType}”分配给类型“{destType}”", + "paramSpecMissingInOverride": "替代方法中缺少 ParamSpec 参数", + "paramType": "参数类型为“{paramType}”", + "privateImportFromPyTypedSource": "改为从\"{module}\"导入", + "propertyAccessFromProtocolClass": "不能以类变量形式存取协议类中定义的属性", + "propertyMethodIncompatible": "属性方法\"{name}\"不兼容", + "propertyMethodMissing": "替代中缺少属性方法“{name}”", + "propertyMissingDeleter": "属性“{name}”没有定义的删除程序", + "propertyMissingSetter": "属性“{name}”没有定义的资源库", + "protocolIncompatible": "“{sourceType}”与协议“{destType}”不兼容", + "protocolMemberClassVar": "“{name}”不是类变量", + "protocolMemberMissing": "“{name}”不存在", + "protocolSourceIsNotConcrete": "“{sourceType}”不是具体类类型,无法分配给类型“{destType}”", + "pyrightCommentIgnoreTip": "使用 \"# pyright: ignore[] 取消单行诊断", + "readOnlyAttribute": "属性“{name}”为只读", + "seeClassDeclaration": "查看类声明", + "seeDeclaration": "参见声明", + "seeFunctionDeclaration": "请参阅函数声明", + "seeMethodDeclaration": "请参阅方法声明", + "seeParameterDeclaration": "请参阅参数声明", + "seeTypeAliasDeclaration": "请参阅类型别名声明", + "seeVariableDeclaration": "查看变量声明", + "tupleAssignmentMismatch": "类型\"{type}\"与目标元组不兼容", + "tupleEntryTypeMismatch": "元组条目 {entry} 的类型不正确", + "tupleSizeMismatch": "元素大小不匹配;应为 {expected},但收到 {received}", + "typeAssignmentMismatch": "无法将类型“{sourceType}”分配给类型“{destType}”", + "typeBound": "类型\"{sourceType}\"与类型变量\"{destType}\"的绑定类型\"{name}\"不兼容", + "typeConstrainedTypeVar": "类型\"{type}\"与受约束的类型变量\"{name}\"不兼容", + "typeIncompatible": "“{sourceType}”与“{destType}”不兼容", + "typeNotCallable": "类型\"{type}\"不可调用", + "typeNotClass": "“{type}”不是类", + "typeNotStringLiteral": "“{type}”不是字符串文本", + "typeOfSymbol": "“{name}”的类型为“{type}”", + "typeParamSpec": "类型“{type}”与 ParamSpec“{name}”不兼容", + "typeUnsupported": "类型“{type}”不受支持", + "typeVarDefaultOutOfScope": "类型变量“{name}”不在范围内", + "typeVarIsContravariant": "TypeVar“{name}”为逆变", + "typeVarIsCovariant": "TypeVar“{name}”是协变", + "typeVarIsInvariant": "TypeVar“{name}”是固定的", + "typeVarNotAllowed": "不允许使用类型参数的 TypeVar 或泛型类型", + "typeVarTupleRequiresKnownLength": "TypeVarTuple 不能绑定到长度未知的元组", + "typeVarUnsolvableRemedy": "提供一个重载,该重载指定未提供参数时的返回类型", + "typeVarsMissing": "缺少类型变量: {names}", + "typedDictFieldMissing": "\"{type}\"中缺少\"{name}\"", + "typedDictFieldNotReadOnly": "\"{name}\"在\"{type}\"中不是只读的", + "typedDictFieldNotRequired": "“{type}”中不需要“{name}”", + "typedDictFieldRequired": "\"{type}\"中需要\"{name}\"", + "typedDictFieldTypeMismatch": "类型\"{type}\"不可分配给字段\"{name}\"", + "typedDictFieldTypeRedefinition": "父类中的类型为“{parentType}”,子类中的类型为“{childType}”", + "typedDictFieldUndefined": "“{name}”是类型“{type}”中的未定义字段", + "typedDictFinalMismatch": "\"{sourceType}\"与\"{destType}\"不兼容,因为@final不匹配", + "unhashableType": "类型“{type}”不可哈希", + "uninitializedAbstractVariable": "实例变量“{name}”在抽象基类“{classType}”中定义,但未初始化", + "unreachableExcept": "“{exceptionType}”是“{parentType}”的子类", + "useDictInstead": "使用 Dict[T1, T2] 指示字典类型", + "useListInstead": "使用 List[T] 指示列表类型或 Union[T1, T2] 以指示联合类型", + "useTupleInstead": "使用 Tuple[T1, ..., Tn] 指示元组类型或使用 Union[T1, T2] 指示联合类型", + "useTypeInstead": "改用类型[T]", + "varianceMismatchForClass": "类型参数\"{typeVarName}\"的差异与基类\"{className}\"不兼容", + "varianceMismatchForTypeAlias": "类型参数\"{typeVarName}\"的差异与\"{typeAliasParam}\"不兼容" + } } 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 0db3279e4..fb350cdca 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-tw.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-tw.json @@ -1,3 +1,718 @@ { - + "CodeAction": { + "addOptionalToAnnotation": "新增 \"Optional\" 至類型註釋", + "createTypeStub": "建立類型虛設常式", + "createTypeStubFor": "建立 \"{moduleName}\" 的類型虛設常式", + "executingCommand": "執行命令", + "filesToAnalyzeCount": "要分析的 {count} 個檔案", + "filesToAnalyzeOne": "1 個要分析的檔案", + "findingReferences": "尋找參考", + "organizeImports": "整理匯入", + "renameShadowedFile": "將 \"{oldFile}\" 重新命名為 \"{newFile}\"" + }, + "Diagnostic": { + "abstractMethodInvocation": "不能呼叫方法 \"{method}\",因為它是抽象", + "annotatedParamCountMismatch": "參數註釋計數不符: 應為 {expected},但收到 {received}", + "annotatedTypeArgMissing": "預期 \"Annotated\" 有一個類型引數和一或多個註釋", + "annotationFormatString": "類型註釋不能使用格式字串常值 (f-strings)", + "annotationNotSupported": "此陳述式不支援類型註釋", + "annotationSpansStrings": "型別註釋無法跨越多個字串常值", + "annotationStringEscape": "型別註釋不可包含逸出字元", + "argAssignment": "類型 \"{argType}\" 的引數不能指派至類型 \"{paramType}\" 的參數", + "argAssignmentFunction": "類型 \"{argType}\" 的引數不能指派至函式 \"{functionName}\" 中類型 \"{paramType}\" 的參數", + "argAssignmentParam": "類型 \"{argType}\" 的引數不能指派至類型 \"{paramType}\" 的參數 \"{paramName}\"", + "argAssignmentParamFunction": "類型 \"{argType}\" 的引數不能指派至函式 \"{functionName}\" 中類型 \"{paramType}\" 的參數 \"{paramName}\"", + "argMissingForParam": "參數 {name} 遺漏引數", + "argMissingForParams": "參數 {names} 的引數遺失", + "argMorePositionalExpectedCount": "預期有另 {expected} 個位置引數", + "argMorePositionalExpectedOne": "預期有另 1 個位置引數", + "argPositional": "預期為位置引數", + "argPositionalExpectedCount": "預期有 {expected} 個位置引數", + "argPositionalExpectedOne": "預期為 1 個位置引數", + "argTypePartiallyUnknown": "引數型別為部分未知", + "argTypeUnknown": "引數類型未知", + "assertAlwaysTrue": "Assert 運算式一律會評估為 true", + "assertTypeArgs": "\"assert_type\" 需要兩個位置引數", + "assertTypeTypeMismatch": "\"assert_type\" 不符: 預期為 \"{expected}\",但收到 \"{received}\"", + "assignmentExprComprehension": "指派運算式目標 \"{name}\" 不能使用與目標 comprehension 相同的名稱", + "assignmentExprContext": "Assignment 運算式必須在模組、函式或 Lambda 內", + "assignmentExprInSubscript": "下標內的 Assignment 運算式僅在 Python 3.10 和更新版本中支援", + "assignmentInProtocol": "必須在類別主體內明確宣告通訊協定類別內的執行個體或類別變數", + "assignmentTargetExpr": "運算式不能是指派目標", + "asyncNotInAsyncFunction": "不允許在非同步函式之外使用 \"async\"", + "awaitIllegal": "使用 \"await\" 需要 Python 3.5 或更新版本", + "awaitNotInAsync": "只在非同步函式內允許 \"await\"", + "backticksIllegal": "Python 3.x 中不支援以反引號括住的運算式; 請改為使用 repr", + "baseClassCircular": "類別無法從本身衍生", + "baseClassFinal": "基底類別 \"{type}\" 標示為 Final,且不能設為子類別", + "baseClassInvalid": "類別的引數必須是基底類別", + "baseClassMethodTypeIncompatible": "類別 \"{classType}\" 的基底類別以不相容的方式定義方法 \"{name}\"", + "baseClassUnknown": "基底類別類型未知,遮蔽衍生類別的類型", + "baseClassVariableTypeIncompatible": "類別 \"{classType}\" 的基底類別以不相容的方式定義變數 \"{name}\"", + "bindTypeMismatch": "無法繫結方法 \"{methodName}\",因為 \"{type}\" 無法指派給參數 \"{paramName}\"", + "breakOutsideLoop": "\"break\" 只能在迴圈內使用", + "callableExtraArgs": "預期 \"Callable\" 只有兩個類型引數", + "callableFirstArg": "預期為參數類型清單或 \"...\"", + "callableNotInstantiable": "不能具現化類型 \"{type}\"", + "callableSecondArg": "預期為傳回類型作為 \"Callable\" 的第二個類型引數", + "casePatternIsIrrefutable": "僅允許最後一個案例陳述式使用無法推翻的模式", + "classAlreadySpecialized": "類型 \"{type}\" 已特殊化", + "classDecoratorTypeUnknown": "不具型別的類別裝飾項目會掩蓋類別的型別; 略過裝飾項目", + "classDefinitionCycle": "\"{name}\" 的類別定義視其本身而定", + "classGetItemClsParam": "__class_getitem__ 覆寫應接受 \"cls\" 參數", + "classMethodClsParam": "類別方法應採用 \"cls\" 參數", + "classNotRuntimeSubscriptable": "類別 \"{name}\" 的下標會產生執行階段例外; 以引號括住類型註釋", + "classPatternBuiltInArgCount": "類別模式最多接受 1 個位置子模式", + "classPatternBuiltInArgPositional": "類別模式僅接受位置子模式", + "classPatternTypeAlias": "無法在類別模式中使用 \"{type}\",因為它是特殊的型別別名", + "classTypeParametersIllegal": "類別類型參數語法需要 Python 3.12 或更新版本", + "classVarFirstArgMissing": "\"ClassVar\" 後面應有一個型別引數", + "classVarNotAllowed": "此內容中不允許 \"ClassVar\"", + "classVarOverridesInstanceVar": "類別變數 \"{name}\" 會覆寫類別 \"{className}\" 中相同名稱的執行個體變數", + "classVarTooManyArgs": "\"ClassVar\" 後面應只能有一個型別引數", + "classVarWithTypeVar": "\"ClassVar\" 型別不能包含型別變數", + "clsSelfParamTypeMismatch": "參數 \"{name}\" 的型別必須是其類別 \"{classType}\" 的超級型別", + "codeTooComplexToAnalyze": "程式碼太複雜而無法分析; 重構為副常式或減少條件式程式碼路徑,以降低複雜性", + "collectionAliasInstantiation": "無法將型別 \"{type}\" 具現化,請改用 \"{alias}\"", + "comparisonAlwaysFalse": "條件一律會評估為 False,因為類型 \"{leftType}\" 和 \"{rightType}\" 沒有重疊", + "comparisonAlwaysTrue": "條件一律會評估為 True,因為類型 \"{leftType}\" 和 \"{rightType}\" 沒有重疊", + "comprehensionInDict": "理解不能與其他字典項目搭配使用", + "comprehensionInSet": "Comprehension 無法與其他集合輸入項目一起使用", + "concatenateParamSpecMissing": "\"Concatenate\" 的最後一個類型引數必須是 ParamSpec", + "concatenateTypeArgsMissing": "\"Concatenate\" 至少需要兩個型別引數", + "conditionalOperandInvalid": "型別 \"{type}\" 的條件運算元無效", + "constantRedefinition": "\"{name}\" 是常數 (因為它是大寫) 且無法重新定義", + "constructorNoArgs": "預期 \"{type}\" 建構函式沒有引數", + "constructorParametersMismatch": "類別 \"{classType}\" 中__new__與__init__的簽章不相符", + "containmentAlwaysFalse": "運算式一律會評估為 False,因為型別 \"{leftType}\" 和 \"{rightType}\" 沒有重疊", + "containmentAlwaysTrue": "運算式一律會評估為 True,因為型別 \"{leftType}\" 和 \"{rightType}\" 沒有重疊", + "continueInFinally": "\"continue\" 不能在 finally 子句內使用", + "continueOutsideLoop": "\"continue\" 只能在 loop 內使用", + "dataClassBaseClassFrozen": "未凍結的類別無法繼承已凍結的類別", + "dataClassBaseClassNotFrozen": "凍結的類別不能從未凍結的類別繼承", + "dataClassConverterFunction": "類型 \"{argType}\" 的引數不是類型 \"{fieldType}\" 欄位 \"{fieldName}\" 的有效轉換程式", + "dataClassConverterOverloads": "\"{funcName}\" 沒有任何多載是類型 \"{fieldType}\" 欄位 \"{fieldName}\" 的有效轉換程式", + "dataClassFieldWithDefault": "沒有預設值的欄位無法出現在具有預設值的欄位後面", + "dataClassFieldWithPrivateName": "Dataclass 欄位不能使用私人名稱", + "dataClassFieldWithoutAnnotation": "沒有型別註釋的 Dataclass 欄位會造成執行階段例外狀況", + "dataClassPostInitParamCount": "Dataclass __post_init__ 不正確的參數計數; InitVar 欄位數目為 {expected}", + "dataClassPostInitType": "欄位 \"{fieldName}\" 的 Dataclass __post_init__ 方法參數類型不符", + "dataClassSlotsOverwrite": "__slots__已定義在類別中", + "dataClassTransformExpectedBoolLiteral": "應為靜態評估為 True 或 False 的運算式", + "dataClassTransformFieldSpecifier": "應為類別或函式的元組,但收到的型別為 \"{type}\"", + "dataClassTransformPositionalParam": "\"dataclass_transform\" 的所有引數都必須是關鍵字引數", + "dataClassTransformUnknownArgument": "dataclass_transform 不支援引數 \"{name}\"", + "declaredReturnTypePartiallyUnknown": "宣告的傳回類型 \"{returnType}\" 部分未知", + "declaredReturnTypeUnknown": "宣告的傳回類型未知", + "defaultValueContainsCall": "參數預設值運算式內不允許函式呼叫和可變物件", + "defaultValueNotAllowed": "具有 \"*\" 或 \"**\" 的參數不能有預設值", + "delTargetExpr": "無法刪除運算式", + "deprecatedClass": "類別 \"{name}\" 已淘汰", + "deprecatedConstructor": "類別 \"{name}\" 的建構函式已取代", + "deprecatedFunction": "此函式 \"{name}\" 已取代", + "deprecatedType": "此類型已隨著 Python {version} 取代; 請改為使用 \"{replacement}\"", + "dictExpandIllegalInComprehension": "理解中不允許字典擴充", + "dictInAnnotation": "類型註釋中不允許字典運算式", + "dictKeyValuePairs": "字典項目必須包含金鑰/值組", + "dictUnpackIsNotMapping": "預期為字典解壓縮運算子的對應", + "dunderAllSymbolNotPresent": "\"{name}\" 已在 __all__ 中指定,但在模組中不存在", + "duplicateArgsParam": "只允許一個 \"*\" 參數", + "duplicateBaseClass": "不允許重複的基底類別", + "duplicateCapturePatternTarget": "擷取目標 \"{name}\" 不能在相同模式中出現一次以上", + "duplicateCatchAll": "只允許一個 catch-all 例外子句", + "duplicateEnumMember": "已宣告列舉成員 \"{name}\"", + "duplicateGenericAndProtocolBase": "只允許一個 Generic[...] 或 Protocol[...] 基底類別", + "duplicateImport": "\"{importName}\" 已匯入多次", + "duplicateKeywordOnly": "只允許一個 \"*\" 分隔符號", + "duplicateKwargsParam": "只允許一個 \"**\" 參數", + "duplicateParam": "重複的參數 \"{name}\"", + "duplicatePositionOnly": "僅允許一個 \"/\" 參數", + "duplicateStarPattern": "模式序列中僅允許一個 \"*\" 模式", + "duplicateStarStarPattern": "僅允許輸入一個 \"**\"", + "duplicateUnpack": "清單中僅允許一個解除封裝作業", + "ellipsisContext": "此內容中不允許 \"...\"", + "ellipsisSecondArg": "\"...\" 只允許做為兩個引數的第二個", + "enumClassOverride": "列舉類別 \"{name}\" 為 Final,且不能設為子類別", + "exceptionGroupIncompatible": "例外群組語法 (\"except*\") 需要 Python 3.11 或更新版本", + "exceptionTypeIncorrect": "\"{type}\" 不是衍生自 BaseException", + "exceptionTypeNotClass": "\"{type}\" 不是有效的例外類別", + "exceptionTypeNotInstantiable": "例外類型 \"{type}\" 的建構函式需要一或多個引數", + "expectedAfterDecorator": "裝飾項目後面應有函式或類別宣告", + "expectedArrow": "預期為 \"->\",後面接著傳回類型註釋", + "expectedAsAfterException": "例外狀況型別後面應有 \"as\"", + "expectedAssignRightHandExpr": "\"=\" 右側預期為運算式", + "expectedBinaryRightHandExpr": "運算子右側預期為運算式", + "expectedBoolLiteral": "應為 True 或 False", + "expectedCase": "預期為 \"case\" 陳述式", + "expectedClassName": "預期為類別名稱", + "expectedCloseBrace": "\"{\" 未關閉", + "expectedCloseBracket": "\"[\" 未關閉", + "expectedCloseParen": "\"(\" 未關閉", + "expectedColon": "預期為 \":\"", + "expectedComplexNumberLiteral": "模式比對預期為複數常值", + "expectedDecoratorExpr": "Python 3.9 之前的裝飾項目不支援運算式格式", + "expectedDecoratorName": "預期為裝飾項目名稱", + "expectedDecoratorNewline": "預期裝飾項目結尾為換行符號", + "expectedDelExpr": "\"del\" 後預期為運算式", + "expectedElse": "預期為 \"else\"", + "expectedEquals": "預期為 \"=\"", + "expectedExceptionClass": "不正確的例外狀況類別或物件", + "expectedExceptionObj": "預期為例外物件、例外類別或 None", + "expectedExpr": "應為運算式", + "expectedFunctionAfterAsync": "\"async\" 後面應有函式定義", + "expectedFunctionName": "\"def\" 後預期為函式名稱", + "expectedIdentifier": "應為識別碼", + "expectedImport": "預期為 \"import\"", + "expectedImportAlias": "\"as\" 之後預期為符號", + "expectedImportSymbols": "預期匯入後為一或多個符號名稱", + "expectedIn": "預期為 \"in\"", + "expectedInExpr": "\"in\" 後預期為運算式", + "expectedIndentedBlock": "預期為縮排區塊", + "expectedMemberName": "\".\" 後預期為成員名稱。", + "expectedModuleName": "應為模組名稱", + "expectedNameAfterAs": "\"as\" 後面應有符號名稱", + "expectedNamedParameter": "關鍵字參數必須接著 \"*\"", + "expectedNewline": "預期為換行符號", + "expectedNewlineOrSemicolon": "陳述式必須以換行符號或分號分隔", + "expectedOpenParen": "應為 \"(\"", + "expectedParamName": "預期為參數名稱", + "expectedPatternExpr": "預期為模式運算式", + "expectedPatternSubjectExpr": "應為模式主體運算式", + "expectedPatternValue": "預期為格式 \"a.b\" 的模式值運算式", + "expectedReturnExpr": "\"return\" 後預期為運算式", + "expectedSliceIndex": "應為索引或切片運算式", + "expectedTypeNotString": "預期為類型,但收到字串常值", + "expectedTypeParameterName": "應為型別參數名稱", + "expectedYieldExpr": "yield 陳述式中應有運算式", + "finalClassIsAbstract": "類別 \"{type}\" 標示為 Final,且必須實作所有抽象方法", + "finalContext": "此內容中不允許 \"Final\"", + "finalMethodOverride": "方法 \"{name}\" 不能覆寫類別 \"{className}\" 中定義的 Final 方法", + "finalReassigned": "\"{name}\" 已宣告為 Final,因此無法重新指派", + "finalRedeclaration": "\"{name}\" 先前已宣告為 Final", + "finalRedeclarationBySubclass": "不能重新宣告 \"{name}\",因為父類別 \"{className}\" 將其宣告為 Final", + "finalTooManyArgs": "預期 \"Final\" 之後為單一類型引數", + "finalUnassigned": "\"{name}\" 宣告為 Final,但未指派值", + "formatStringBrace": "F 字串常值內不允許單一右大括弧; 請使用雙右大括弧", + "formatStringBytes": "格式字串常值 (f-strings) 不可為二進位", + "formatStringDebuggingIllegal": "F 字串偵錯指定名稱 \"=\" 需要 Python 3.8 或較新的版本", + "formatStringEscape": "Python 3.12 之前的 f 字串運算式部分不允許逸出序列 (反斜線)", + "formatStringExpectedConversion": "預期 f-string 中的 \"!\" 後為轉換指定元", + "formatStringIllegal": "格式字串常值 (f-strings) 需要 Python 3.6 或較新的版本", + "formatStringInPattern": "模式中不允許格式字串", + "formatStringNestedFormatSpecifier": "運算式在格式字串指定元內巢狀太深", + "formatStringNestedQuote": "f 字串內的巢狀字串無法使用與 Python 3.12 之前的 f 字串相同的引號字元", + "formatStringUnicode": "格式字串常值 (f-strings) 不能是 Unicode", + "formatStringUnterminated": "f 字串中有未結束的運算式; 應有 \"}\"", + "functionDecoratorTypeUnknown": "非類型化函式修飾項目會遮蔽函式的類型; 忽略裝飾項目", + "functionInConditionalExpression": "條件運算式參考函式,一律評估為 True", + "functionTypeParametersIllegal": "函式型別參數語法需要 Python 3.12 或較新的版本", + "futureImportLocationNotAllowed": "來自 __future__ 的匯入必須位於檔案的開頭", + "generatorAsyncReturnType": "非同步產生器函式的傳回類型必須與 \"AsyncGenerator[{yieldType}, Any]\" 相容", + "generatorNotParenthesized": "如果不是唯一引數,則必須將產生器運算式用括弧括住", + "generatorSyncReturnType": "產生器函式的傳回類型必須與 \"Generator[{yieldType}, Any, Any]\" 相容", + "genericBaseClassNotAllowed": "\"Generic\" 基底類別不能與型別參數語法一起使用", + "genericClassAssigned": "不能指派一般類別類型", + "genericClassDeleted": "無法刪除一般類別型別", + "genericNotAllowed": "\"Generic\" 在此內容中無效", + "genericTypeAliasBoundTypeVar": "類別內的一般類型別名不能使用繫結類型變數 {names}", + "genericTypeArgMissing": "\"Generic\" 至少需要一個類型引數", + "genericTypeArgTypeVar": "\"Generic\" 的類型引數必須是類型變數", + "genericTypeArgUnique": "\"Generic\" 的類型引數必須是唯一的", + "globalReassignment": "\"{name}\" 在 global 宣告之前指派", + "globalRedefinition": "\"{name}\" 已宣告為 global", + "implicitStringConcat": "不允許隱含字串串連", + "importCycleDetected": "在匯入鏈結中偵測到迴圈", + "importDepthExceeded": "匯入鏈結深度超過 {depth}", + "importResolveFailure": "無法解析匯入 \"{importName}\"", + "importSourceResolveFailure": "無法從來源解析匯入 \"{importName}\"", + "importSymbolUnknown": "\"{name}\" 是未知的匯入符號", + "incompatibleMethodOverride": "方法 \"{name}\" 會以不相容的方式覆寫類別 \"{className}\"", + "inconsistentIndent": "取消縮排量與先前縮排不符", + "inconsistentTabs": "在縮排中使用 Tab 字元和空格不一致", + "initMustReturnNone": "\"__init__\" 的傳回類型必須為 None", + "initSubclassClsParam": "__init_subclass__ 覆寫應接受 \"cls\" 參數", + "instanceMethodSelfParam": "執行個體方法應該採用 \"self\" 參數", + "instanceVarOverridesClassVar": "執行個體變數 \"{name}\" 覆寫類別 \"{className}\" 中相同名稱的類別變數", + "instantiateAbstract": "無法將抽象類別 \"{type}\" 具現化", + "instantiateProtocol": "無法將通訊協定類別 \"{type}\" 具現化", + "internalBindError": "繫結檔案 \"{file}\" 時發生內部錯誤: {message}", + "internalParseError": "剖析檔案 \"{file}\" 時發生內部錯誤: {message}", + "internalTypeCheckingError": "類型檢查檔案 \"{file}\" 時發生內部錯誤: {message}", + "invalidIdentifierChar": "識別碼中的字元無效", + "invalidStubStatement": "陳述式在類型虛設常式檔案內沒有意義", + "invalidTokenChars": "權杖中的字元 \"{text}\" 無效", + "isInstanceInvalidType": "\"isinstance\" 的第二個引數必須是類別或類別的元組", + "isSubclassInvalidType": "\"issubclass\" 的第二個引數必須是類別的類別或 Tuple", + "keyValueInSet": "組合內不允許金鑰/值組", + "keywordArgInTypeArgument": "關鍵字引數無法用於型別引數清單", + "keywordOnlyAfterArgs": "\"*\" 參數之後不允許僅限關鍵字的引數分隔符號", + "keywordParameterMissing": "一或多個關鍵字參數必須接在 \"*\" 參數後面", + "keywordSubscriptIllegal": "不支援下標內的關鍵字引數", + "lambdaReturnTypePartiallyUnknown": "Lambda 的傳回類型 \"{returnType}\" 部分未知", + "lambdaReturnTypeUnknown": "Lambda 的傳回類型未知", + "listAssignmentMismatch": "類型 \"{type}\" 的運算式不能指派至目標清單", + "listInAnnotation": "類型註釋中不允許清單運算式", + "literalEmptyArgs": "\"Literal\" 後面應有一或多個型別引數", + "literalNotCallable": "常值類型不能具現化", + "literalUnsupportedType": "\"Literal\" 的類型引數必須是 None、常值 (int、bool、str 或 bytes) 或列舉值", + "matchIncompatible": "比對陳述式需要 Python 3.10 或更新版本", + "matchIsNotExhaustive": "match 陳述式內的案例並未完整處理所有值", + "maxParseDepthExceeded": "超過剖析深度上限; 將運算式分成較小的子運算式", + "memberAccess": "不能存取類型 \"{type}\" 的成員 \"{name}\"", + "memberDelete": "不能刪除類型 \"{type}\" 的成員 \"{name}\"", + "memberSet": "無法指派型別 \"{type}\" 的成員 \"{name}\"", + "metaclassConflict": "衍生類別的變換類型必須是其所有基底類別的變換類型的子類別", + "metaclassDuplicate": "只能提供一個變換類型", + "metaclassIsGeneric": "變換類型不能是一般", + "methodNotDefined": "\"{name}\" 方法未定義", + "methodNotDefinedOnType": "類型 \"{type}\" 上未定義 \"{name}\" 方法", + "methodOrdering": "不能建立一致的方法順序", + "methodOverridden": "\"{name}\" 以不相容型別 \"{type}\" 覆寫類別 \"{className}\" 中具有相同名稱的方法", + "methodReturnsNonObject": "\"{name}\" 方法未傳回物件", + "missingProtocolMembers": "類別衍生自一或多個通訊協定類別,但未實作所有必要的成員", + "missingSuperCall": "方法 \"{methodName}\" 未呼叫父類別中相同名稱的方法", + "moduleAsType": "模組不能當作型別來使用", + "moduleNotCallable": "模組無法呼叫", + "moduleUnknownMember": "\"{memberName}\" 不是模組 \"{moduleName}\" 的已知成員", + "namedExceptAfterCatchAll": "catch-all except 子句後面不能出現具名 except 子句", + "namedParamAfterParamSpecArgs": "關鍵字參數 \"{name}\" 不能在簽章中出現在 ParamSpec args 參數之後", + "namedTupleEmptyName": "具名元組內的名稱不可為空白", + "namedTupleFirstArg": "預期為具名 Tuple 類別名稱作為第一個引數", + "namedTupleMultipleInheritance": "不支援使用 NamedTuple 的多重繼承", + "namedTupleNameType": "指定項目名稱和類型預期有兩個項目 Tuple", + "namedTupleNameUnique": "具名 Tuple 內的名稱必須是唯一的", + "namedTupleNoTypes": "\"namedtuple\" 未提供 Tuple 項目的類型; 請改為使用 \"NamedTuple\"", + "namedTupleSecondArg": "預期為具名 Tuple 項目清單作為第二個引數", + "newClsParam": "__new__ 覆寫應接受 \"cls\" 參數", + "newTypeBadName": "NewType 的第一個引數必須是字串常值", + "newTypeLiteral": "NewType 不能與常值類型搭配使用", + "newTypeNotAClass": "預期類別為 NewType 的第二個引數", + "newTypeParamCount": "NewType 需要兩個位置引數", + "newTypeProtocolClass": "NewType 不能與通訊協定類別搭配使用", + "noOverload": "\"{name}\" 沒有任何多載符合提供的引數", + "noReturnContainsReturn": "宣告傳回類型為 \"NoReturn\" 的函式不能包含 return 陳述式", + "noReturnContainsYield": "宣告傳回類型為 \"NoReturn\" 的函式不能包含 yield 陳述式", + "noReturnReturnsNone": "宣告類型為 \"NoReturn\" 的函式不能傳回 \"None\"", + "nonDefaultAfterDefault": "非預設引數遵循預設引數", + "nonLocalInModule": "模組層級不允許 nonlocal 宣告", + "nonLocalNoBinding": "找不到 nonlocal \"{name}\" 的繫結", + "nonLocalReassignment": "\"{name}\" 在 nonlocal 宣告之前指派", + "nonLocalRedefinition": "\"{name}\" 已宣告為 nonlocal", + "noneNotCallable": "無法呼叫型別 \"None\" 的物件", + "noneNotIterable": "類型 \"None\" 的物件不能作為可疊代的值", + "noneNotSubscriptable": "型別 \"None\" 的物件不能下標", + "noneNotUsableWith": "類型 \"None\" 的物件不能與 \"with\" 搭配使用", + "noneOperator": "\"None\" 不支援運算子 \"{operator}\"", + "noneUnknownMember": "\"{name}\" 不是 \"None\" 的已知成員", + "notRequiredArgCount": "預期 \"NotRequired\" 之後為單一類型引數", + "notRequiredNotInTypedDict": "此內容中不允許 \"NotRequired\"", + "objectNotCallable": "類型 \"{type}\" 的物件無法呼叫", + "obscuredClassDeclaration": "類別宣告 \"{name}\" 已被相同名稱的宣告遮蔽", + "obscuredFunctionDeclaration": "函式宣告 \"{name}\" 被相同名稱的宣告遮蔽", + "obscuredMethodDeclaration": "方法宣告 \"{name}\" 被相同名稱的宣告遮蔽", + "obscuredParameterDeclaration": "參數宣告 \"{name}\" 被相同名稱的宣告遮蔽", + "obscuredTypeAliasDeclaration": "類型別名宣告 \"{name}\" 被相同名稱的宣告遮蔽", + "obscuredVariableDeclaration": "宣告 \"{name}\" 被相同名稱的宣告遮蔽", + "operatorLessOrGreaterDeprecated": "Python 3 中不支援運算子 \"<>\"; 請改為使用 \"!=\"", + "optionalExtraArgs": "\"Optional\" 後面應有一個型別引數", + "orPatternIrrefutable": "無法推翻的模式僅允許作為 \"or\" 模式中的最後一個子模式", + "orPatternMissingName": "\"or\" 模式內的所有子模式都必須以相同的名稱為目標", + "overlappingOverload": "\"{name}\" 的多載 {obscured} 將永遠不會使用,因為它的參數與多載 {obscuredBy} 重疊", + "overloadAbstractMismatch": "多載方法必須全為抽象或不抽象", + "overloadImplementationMismatch": "多載的實作與多載 {index} 的簽章不一致", + "overloadReturnTypeMismatch": "\"{name}\" 的多載 {prevIndex} 與多載 {newIndex} 重疊,並傳回不相容的類型", + "overloadWithImplementation": "\"{name}\" 標示為多載,但包含實作", + "overloadWithoutImplementation": "\"{name}\" 標示為多載,但未提供實作", + "overriddenMethodNotFound": "方法 \"{name}\" 已標示為覆寫,但不存在相同名稱的基底方法", + "overrideDecoratorMissing": "方法 \"{name}\" 未標示為覆寫,但正在覆寫類別 \"{className}\" 中的方法", + "paramAfterKwargsParam": "參數無法接在 \"**\" 參數後面", + "paramAlreadyAssigned": "已指派參數 \"{name}\"", + "paramAnnotationMissing": "參數 \"{name}\" 遺漏了型別註釋", + "paramAssignmentMismatch": "無法將型別 \"{sourceType}\" 的運算式指派給型別 \"{paramType}\" 的參數", + "paramNameMissing": "沒有名為 \"{name}\" 的參數", + "paramSpecArgsKwargsUsage": "ParamSpec 的 \"args\" 和 \"kwargs\" 成員都必須出現在函式簽章內", + "paramSpecArgsMissing": "ParamSpec \"{type}\" 的引數遺失", + "paramSpecArgsUsage": "只有搭配 *args 參數使用時,ParamSpec 的 \"args\" 成員才有效", + "paramSpecAssignedName": "ParamSpec 必須指派至名為 \"{name}\" 的變數", + "paramSpecContext": "此內容中不允許 ParamSpec", + "paramSpecDefaultNotTuple": "ParamSpec 的預設值必須是省略符號、元組運算式或 ParamSpec", + "paramSpecFirstArg": "應以 ParamSpec 的名稱作為第一個引數", + "paramSpecKwargsUsage": "ParamSpec 的 \"kwargs\" 成員只有在與 **kwargs 參數搭配使用時有效", + "paramSpecNotBound": "參數規格 \"{type}\" 沒有繫結值", + "paramSpecNotUsedByOuterScope": "ParamSpec \"{name}\" 在此內容中沒有意義", + "paramSpecScopedToReturnType": "ParamSpec \"{name}\" 的範圍為傳回型別內的可呼叫項目,無法在函式主體中參考", + "paramSpecUnknownArg": "ParamSpec 不支援一個以上的引數", + "paramSpecUnknownMember": "\"{name}\" 不是 ParamSpec 的已知成員", + "paramSpecUnknownParam": "\"{name}\" 對 ParamSpec 是未知的參數", + "paramTypeCovariant": "不能在參數類型中使用共變數類型變數", + "paramTypePartiallyUnknown": "參數 \"{paramName}\" 的類型部分未知", + "paramTypeUnknown": "參數 \"{paramName}\" 的類型未知", + "parenthesizedContextManagerIllegal": "\"with\" 陳述式內的括弧需要 Python 3.9 或較新的版本", + "patternNeverMatches": "模式永遠不會符合主體類型 \"{type}\"", + "positionArgAfterNamedArg": "位置引數不能出現在關鍵字引數之後", + "positionOnlyAfterArgs": "\"*\" 參數之後不允許 Position-only 引數分隔符號", + "positionOnlyAfterKeywordOnly": "\"/\" 參數必須出現在 \"*\" 參數之前", + "positionOnlyFirstParam": "不允許僅限位置的引數分隔符號作為第一個參數", + "positionOnlyIncompatible": "Position-only 引數分隔符號需要 Python 3.8 或更新版本", + "privateImportFromPyTypedModule": "\"{name}\" 未從模組 \"{module}\" 匯出", + "privateUsedOutsideOfClass": "\"{name}\" 為私人,並用於宣告其所在的類別之外", + "privateUsedOutsideOfModule": "\"{name}\" 為私人,並用於宣告其所在的模組之外", + "propertyOverridden": "\"{name}\" 不正確地覆寫了類別 \"{className}\" 中相同名稱的屬性", + "propertyStaticMethod": "屬性 getter、setter 或 deleter 不允許靜態方法", + "protectedUsedOutsideOfClass": "\"{name}\" 受到保護,並用於其宣告所在的類別之外", + "protocolBaseClass": "通訊協定類別 \"{classType}\" 不能衍生自非通訊協定類別 \"{baseType}\"", + "protocolBaseClassWithTypeArgs": "使用型別參數語法時,通訊協定類別不允許使用型別引數", + "protocolIllegal": "使用 \"Protocol\" 需要 Python 3.7 或更新版本", + "protocolNotAllowedInTypeArgument": "\"Protocol\" 不能作為類型引數使用", + "protocolUsedInCall": "通訊協定類別不能用於 \"{name}\" 呼叫", + "protocolVarianceContravariant": "一般通訊協定 \"{class}\" 中使用的型別變數 \"{variable}\" 必須為逆變數", + "protocolVarianceCovariant": "一般通訊協定 \"{class}\" 中使用的型別變數 \"{variable}\" 必須為共變數", + "protocolVarianceInvariant": "一般通訊協定 \"{class}\" 中使用的型別變數 \"{variable}\" 必須為不變數", + "pyrightCommentInvalidDiagnosticBoolValue": "Pyright 註解指示詞後面必須接著 \"=\",且值為 true 或 false", + "pyrightCommentInvalidDiagnosticSeverityValue": "Pyright 註解指示詞後面必須接著 \"=\",且值為 true、false、error、warning、information 或 none", + "pyrightCommentMissingDirective": "Pyright 註解後面必須接著指示詞 (basic 或 strict) 或診斷規則", + "pyrightCommentNotOnOwnLine": "用來控制檔案層級設定的 Pyright 註解必須出現在自己的行上", + "pyrightCommentUnknownDiagnosticRule": "\"{rule}\" 是 pyright 註解未知的診斷規則", + "pyrightCommentUnknownDiagnosticSeverityValue": "\"{value}\" 是 pyright 註解無效的值; 預期為 true、false、error、warning、information 或 none", + "pyrightCommentUnknownDirective": "\"{directive}\" 是 pyright 註解未知的指示詞; 預期為 \"strict\" 或 \"basic\"", + "readOnlyArgCount": "\"ReadOnly\" 後面應有單一型別引數", + "readOnlyNotInTypedDict": "此內容中不允許 \"ReadOnly\"", + "recursiveDefinition": "無法判斷 \"{name}\" 型別,因為它參照了自己", + "relativeImportNotAllowed": "相對匯入不能與 \"import .a\" 格式搭配使用; 請改為使用 \"from . import a\"", + "requiredArgCount": "\"Required\" 後面應有單一型別引數", + "requiredNotInTypedDict": "此內容中不允許 \"Required\"", + "returnInAsyncGenerator": "非同步產生器中不允許具有值的 return 陳述式", + "returnMissing": "具有宣告 \"{returnType}\" 型別的函式必須在所有程式碼路徑上傳回值", + "returnOutsideFunction": "\"return\" 只能在函式內使用", + "returnTypeContravariant": "逆變數型別變數不能用在傳回型別中", + "returnTypeMismatch": "類型 \"{exprType}\" 的運算式不能指派至傳回類型 \"{returnType}\"", + "returnTypePartiallyUnknown": "傳回類型 \"{returnType}\" 部分未知", + "returnTypeUnknown": "傳回類型未知", + "revealLocalsArgs": "\"reveal_locals\" 呼叫不應有任何引數", + "revealLocalsNone": "此範圍中沒有任何 locals", + "revealTypeArgs": "\"reveal_type\" 呼叫預期為單一位置引數", + "revealTypeExpectedTextArg": "函式 \"reveal_type\" 的 \"expected_text\" 引數必須是 str 常值", + "revealTypeExpectedTextMismatch": "類型文字不符; 預期為 \"{expected}\",但收到 \"{received}\"", + "revealTypeExpectedTypeMismatch": "型別不符; 應為 \"{expected}\",但收到 \"{received}\"", + "selfTypeContext": "\"Self\" 在此內容中無效", + "selfTypeWithTypedSelfOrCls": "\"Self\" 不能用在具有 `self` 或 `cls` 參數的函式中,其類型註釋不是 \"Self\"", + "setterGetterTypeMismatch": "屬性 setter 數值類型不能指派至 getter 傳回類型", + "singleOverload": "\"{name}\" 標示為多載,但遺失其他多載", + "slotsAttributeError": "未在__slots__中指定 \"{name}\"", + "slotsClassVarConflict": "\"{name}\" 與在 __slots__ 中宣告的執行個體變數衝突", + "starPatternInAsPattern": "星形模式不能與 \"as\" 目標搭配使用", + "starPatternInOrPattern": "星形模式不能在其他模式內使用 OR", + "starStarWildcardNotAllowed": "** 不能與萬用字元 \"_\" 搭配使用", + "staticClsSelfParam": "靜態方法不應採用 \"self\" 或 \"cls\" 參數", + "stdlibModuleOverridden": "\"{path}\" 正在覆寫 stdlib 模組 \"{name}\"", + "strictTypeGuardReturnType": "StrictTypeGuard 的傳回類型 (\"{returnType}\") 不能指派至數值參數類型 (\"{type}\")", + "stringNonAsciiBytes": "位元組字串常值中不允許非 ASCII 字元", + "stringNotSubscriptable": "字串運算式不能在類型註釋中下標; 以引號括住整個註釋", + "stringUnsupportedEscape": "字串常值中不支援的逸出序列", + "stringUnterminated": "字串常值未結束", + "stubFileMissing": "找不到 \"{importName}\" 的虛設常式檔案", + "stubUsesGetAttr": "類型虛設常式檔案不完整; \"__getattr__\" 會遮蔽模組的類型錯誤", + "sublistParamsIncompatible": "Python 3.x 不支援子清單參數", + "superCallArgCount": "\"super\" 呼叫不應有兩個以上的引數", + "superCallFirstArg": "預期的類別類型為 \"super\" 呼叫的第一個引數,但收到 \"{type}\"", + "superCallSecondArg": "\"super\" 呼叫的第二個引數必須是衍生自 \"{type}\" 的物件或類別", + "superCallZeroArgForm": "\"super\" 呼叫的零引數形式只在類別內有效", + "symbolIsPossiblyUnbound": "\"{name}\" 可能未繫結", + "symbolIsUnbound": "\"{name}\" 未繫結", + "symbolIsUndefined": "\"{name}\" 未定義", + "symbolOverridden": "\"{name}\" 會覆寫類別 \"{className}\" 中相同名稱的符號", + "totalOrderingMissingMethod": "類別必須定義 \"__lt__\"、\"__le__\"、\"__gt__\" 或 \"__ge__\" 其中一個,才能使用 total_ordering", + "trailingCommaInFromImport": "後置逗號不允許未使用括弧", + "tryWithoutExcept": "Try 陳述式必須至少有一個 except 或 finally 子句", + "tupleAssignmentMismatch": "無法將型別 \"{type}\" 的運算式指派至目標元組", + "tupleInAnnotation": "型別註釋中不允許元組運算式", + "tupleIndexOutOfRange": "索引 {index} 超過類型 {type} 的範圍", + "typeAliasIllegalExpressionForm": "類型別名定義無效的運算式格式", + "typeAliasIsRecursiveDirect": "型別別名 \"{name}\" 無法在其定義中使用它自己", + "typeAliasNotInModuleOrClass": "TypeAlias 只能在模組或類別範圍內定義", + "typeAliasRedeclared": "\"{name}\" 宣告為 TypeAlias,且只能指派一次", + "typeAliasStatementIllegal": "類型別名陳述式需要 Python 3.12 或更新版本", + "typeAliasTypeMustBeAssigned": "TypeAliasType 必須指派給與型別別名相同的變數", + "typeAliasTypeNameArg": "TypeAliasType 的第一個引數必須是代表型別別名名稱的字串常值", + "typeAliasTypeNameMismatch": "類型別名的名稱必須與指派它的變數名稱相符", + "typeAliasTypeParamInvalid": "型別參數清單必須是只包含 TypeVar、TypeVarTuple 或 ParamSpec 的元組", + "typeAnnotationCall": "不合法的型別註釋: 不允許呼叫運算式", + "typeAnnotationVariable": "不合法的類型註釋: 不允許變數,除非它是類型別名", + "typeArgListExpected": "預期為 ParamSpec、省略符號或類型清單", + "typeArgListNotAllowed": "此型別引數不允許清單運算式", + "typeArgsExpectingNone": "預期類別 \"{name}\" 沒有類型引數", + "typeArgsMismatchOne": "預期為一個類型引數,但收到 {received}", + "typeArgsMissingForAlias": "預期為一般類型別名 \"{name}\" 的類型引數", + "typeArgsMissingForClass": "應為一般類別 \"{name}\" 的型別引數", + "typeArgsTooFew": "為 \"{name}\" 提供太少類型引數; 預期為 {expected} 但收到 {received}", + "typeArgsTooMany": "已為 \"{name}\" 提供太多型別引數; 應為 {expected} 但收到 {received}", + "typeAssignmentMismatch": "類型 \"{sourceType}\" 的運算式不能指派至宣告的類型 \"{destType}\"", + "typeCallNotAllowed": "不應在類型註釋中使用 type() 呼叫", + "typeCommentDeprecated": "使用類型註解已取代; 請改為使用類型註釋", + "typeExpectedClass": "預期為類型運算式,但收到 \"{type}\"", + "typeGuardArgCount": "預期 \"TypeGuard\" 之後為單一類型引數", + "typeGuardParamCount": "使用者定義的類型防護函式和方法至少必須有一個輸入參數", + "typeNotAwaitable": "\"{type}\" 不可等候", + "typeNotCallable": "\"{expression}\" 具有型別 \"{type}\" 且無法呼叫", + "typeNotIntantiable": "\"{type}\" 不能具現化", + "typeNotIterable": "\"{type}\" 無法疊代", + "typeNotSpecializable": "無法將型別 \"{type}\" 特殊化", + "typeNotSubscriptable": "類型 \"{type}\" 的物件不能下標", + "typeNotSupportBinaryOperator": "型別 \"{leftType}\" 和 \"{rightType}\" 不支援運算子 \"{operator}\"", + "typeNotSupportBinaryOperatorBidirectional": "當預期的型別為 \"{expectedType}\" 時,型別 \"{leftType}\" 和 \"{rightType}\" 不支援運算子 \"{operator}\"", + "typeNotSupportUnaryOperator": "型別 \"{type}\" 不支援運算子 \"{operator}\"", + "typeNotSupportUnaryOperatorBidirectional": "預期的類型為 \"{expectedType}\" 時,類型 \"{type}\" 不支援運算子 \"{operator}\"", + "typeNotUsableWith": "類型 \"{type}\" 的物件不能與 \"with\" 搭配使用,因為它未實作 {method}", + "typeParameterBoundNotAllowed": "界限或條件約束不能與 variadic 型別參數或 ParamSpec 一起使用", + "typeParameterConstraintTuple": "類型參數限制式必須是兩個或兩個以上類型的 Tuple", + "typeParameterExistingTypeParameter": "類型參數 \"{name}\" 已在使用中", + "typeParameterNotDeclared": "類型參數 \"{name}\" 未包含在 \"{container}\" 的類型參數清單中", + "typeParametersMissing": "至少必須指定一個類型參數", + "typePartiallyUnknown": "\"{name}\" 的類型部分未知", + "typeUnknown": "\"{name}\" 的類型未知", + "typeVarAssignedName": "TypeVar 必須指派至名為 \"{name}\" 的變數", + "typeVarAssignmentMismatch": "無法將型別 \"{type}\" 指派給型別變數 \"{name}\"", + "typeVarBoundAndConstrained": "TypeVar 不能同時繫結和限制", + "typeVarBoundGeneric": "TypeVar 繫結類型不能是一般", + "typeVarConstraintGeneric": "TypeVar 限制式類型不能是一般", + "typeVarDefaultBoundMismatch": "TypeVar 預設型別必須是繫結型別的子型別", + "typeVarDefaultConstraintMismatch": "TypeVar 預設型別必須是其中一個限制型別", + "typeVarDefaultIllegal": "型別變數預設型別需要 Python 3.13 或較新的版本", + "typeVarDefaultInvalidTypeVar": "類型參數 \"{name}\" 的預設類型參考不在範圍的一或多個類型變數", + "typeVarFirstArg": "預期為 TypeVar 的名稱作為第一個引數", + "typeVarNoMember": "TypeVar \"{type}\" 沒有成員 \"{name}\"", + "typeVarNotSubscriptable": "TypeVar \"{type}\" 不能下標", + "typeVarNotUsedByOuterScope": "類型變數 \"{name}\" 在此內容中沒有意義", + "typeVarPossiblyUnsolvable": "如果呼叫者未提供參數 \"{param}\" 的引數,則型別變數 \"{name}\" 可能無法解析", + "typeVarScopedToReturnType": "型別變數 \"{name}\" 的範圍為傳回型別內的可呼叫項目,無法在函式主體中參考", + "typeVarSingleConstraint": "TypeVar 至少必須有兩個限制類型", + "typeVarTupleContext": "此內容中不允許 TypeVarTuple", + "typeVarTupleDefaultNotUnpacked": "TypeVarTuple 預設型別必須是未封裝的元組或 TypeVarTuple", + "typeVarTupleMustBeUnpacked": "TypeVarTuple 值需要解除封裝運算子", + "typeVarTupleUnknownParam": "\"{name}\" 是 TypeVarTuple 的未知參數", + "typeVarUnknownParam": "\"{name}\" 對 TypeVar 是未知的參數", + "typeVarUsedByOuterScope": "外部領域已在使用 TypeVar \"{name}\"", + "typeVarUsedOnlyOnce": "TypeVar \"{name}\" 只會在一般函式簽章中出現一次", + "typeVarVariance": "TypeVar 不能同時為共變數和逆變數", + "typeVarWithoutDefault": "\"{name}\" 無法出現在型別參數清單中的 \"{other}\" 後面,因為它沒有預設型別", + "typeVarsNotInGenericOrProtocol": "Generic[] 或 Protocol[] 必須包含所有類型變數", + "typedDictAccess": "無法存取 TypedDict 中的項目", + "typedDictBadVar": "TypedDict 類別只能包含型別註釋", + "typedDictBaseClass": "TypedDict 類別的所有基底類別也必須是 TypedDict 類別", + "typedDictBoolParam": "預期 \"{name}\" 參數的值為 True 或 False", + "typedDictDelete": "無法刪除 TypedDict 中的項目", + "typedDictEmptyName": "TypedDict 內的名稱不可為空白", + "typedDictEntryName": "字典項目名稱預期為字串常值", + "typedDictEntryUnique": "字典內的名稱必須是唯一的", + "typedDictExtraArgs": "不支援額外的 TypedDict 引數", + "typedDictFieldReadOnlyRedefinition": "TypedDict 欄位 \"{name}\" 不能重新定義為唯讀", + "typedDictFieldTypeRedefinition": "TypedDict 欄位 \"{name}\" 的類型不能重新定義", + "typedDictFirstArg": "預期 TypedDict 類別名稱作為第一個引數", + "typedDictSecondArgDict": "預期為字典或關鍵字參數作為第二個參數", + "typedDictSecondArgDictEntry": "應為簡單字典輸入項目", + "typedDictSet": "無法在 TypedDict 中指派項目", + "unaccessedClass": "未存取類別 \"{name}\"", + "unaccessedFunction": "未存取函式 \"{name}\"", + "unaccessedImport": "未存取匯入 \"{name}\"", + "unaccessedSymbol": "未存取 \"{name}\"", + "unaccessedVariable": "未存取變數 \"{name}\"", + "unannotatedFunctionSkipped": "因為未標註函式 \"{name}\",所以略過其分析", + "unexpectedAsyncToken": "預期為 \"def\"、\"with\" 或 \"for\" 來追蹤 \"async\"", + "unexpectedExprToken": "運算式結尾未預期的權杖", + "unexpectedIndent": "未預期的縮排", + "unexpectedUnindent": "取消縮排未預期", + "unhashableDictKey": "字典索引鍵必須是可雜湊的", + "unhashableSetEntry": "設定項目必須是可雜湊", + "uninitializedAbstractVariables": "抽象基底類別中定義的變數未在 Final 類別 \"{classType}\" 中初始化", + "uninitializedInstanceVariable": "執行個體變數 \"{name}\" 未在類別本文或 __init__ 方法上初始化", + "unionForwardReferenceNotAllowed": "聯集語法不能與字串運算元搭配使用; 使用引號括住整個運算式", + "unionSyntaxIllegal": "聯集的替代語法需要 Python 3.10 或更新版本", + "unionTypeArgCount": "聯集需要兩個或多個類型引數", + "unmatchedEndregionComment": "#endregion 遺失對應的 #region", + "unmatchedRegionComment": "#region 遺失對應的 #endregion", + "unnecessaryCast": "不必要的 \"cast\" 呼叫; 型別已是 \"{type}\"", + "unnecessaryIsInstanceAlways": "不必要的 isinstance 呼叫; \"{testType}\" 一律是 \"{classType}\" 的執行個體", + "unnecessaryIsSubclassAlways": "不必要的 issubclass 呼叫; \"{testType}\"永遠是 \"{classType}\" 的子類別", + "unnecessaryPyrightIgnore": "不必要的 \"# pyright: ignore\" 註解", + "unnecessaryPyrightIgnoreRule": "不必要的 \"# pyright: ignore\" 規則: \"{name}\"", + "unnecessaryTypeIgnore": "不必要的 \"# type: ignore\" 註解", + "unpackArgCount": "\"Unpack\" 後面應為單一型別引數", + "unpackExpectedTypeVarTuple": "預期 TypeVarTuple 或 Tuple 作為 Unpack 的類型引數", + "unpackExpectedTypedDict": "應為解除封裝的 TypedDict 型別引數", + "unpackIllegalInComprehension": "理解中不允許解壓縮作業", + "unpackInAnnotation": "類型註釋中不允許解壓縮運算子", + "unpackInDict": "字典中不允許解壓縮作業", + "unpackInSet": "集合內不允許將運算子解除封裝", + "unpackNotAllowed": "此內容中不允許解除封裝", + "unpackOperatorNotAllowed": "此內容中不允許解壓縮作業", + "unpackTuplesIllegal": "Python 3.8 之前的 Tuple 中不允許解壓縮作業", + "unpackedArgInTypeArgument": "解壓縮的引數不能用於類型引數清單", + "unpackedArgWithVariadicParam": "未封裝的引數無法用於 TypeVarTuple 參數", + "unpackedDictArgumentNotMapping": "** 後的引數運算式必須是具有 \"str\" 金鑰類型的對應", + "unpackedDictSubscriptIllegal": "字典解壓縮運算子在下標中不被允許", + "unpackedSubscriptIllegal": "下標中的解壓縮運算子需要 Python 3.11 或更新版本", + "unpackedTypeVarTupleExpected": "預期為解壓縮的 TypeVarTuple; 使用 Unpack[{name1}] 或 *{name2}", + "unpackedTypedDictArgument": "無法比對解壓縮的 TypedDict 引數與參數", + "unreachableCode": "無法連線到程式碼", + "unreachableExcept": "無法連接 Except 子句,因為例外已處理", + "unsupportedDunderAllOperation": "不支援 \"__all__\" 上的作業,因此匯出的符號清單可能不正確", + "unusedCallResult": "呼叫運算式的結果是 \"{type}\" 型別,而且未使用; 如果這是刻意的,則指派給變數 \"_\"", + "unusedCoroutine": "未使用非同步函式呼叫的結果; 使用 \"await\" 或指派結果至變數", + "unusedExpression": "未使用運算式值", + "varAnnotationIllegal": "變數的類型註釋需要 Python 3.6 或更新版本; 使用類型註解以獲得與先前版本的相容性", + "variableFinalOverride": "變數 \"{name}\" 標示為 Final,且會覆寫類別 \"{className}\" 中相同名稱的非 Final 變數", + "variadicTypeArgsTooMany": "類型引數清單最多只能有一個解壓縮的 TypeVarTuple 或 Tuple", + "variadicTypeParamTooManyAlias": "類型別名最多只能有一個 TypeVarTuple 類型參數,但收到多個 ({names})", + "variadicTypeParamTooManyClass": "一般類別最多只能有一個 TypeVarTuple 類型參數,但收到多個 ({names})", + "walrusIllegal": "運算子 \":=\" 需要 Python 3.8 或更新版本", + "walrusNotAllowed": "此內容中不允許未使用括弧括住運算子 \":=\"", + "wildcardInFunction": "類別或函式內不允許萬用字元匯入", + "wildcardLibraryImport": "不允許從程式庫匯入萬用字元", + "wildcardPatternTypePartiallyUnknown": "萬用字元模式擷取的類型部分未知", + "wildcardPatternTypeUnknown": "萬用字元模式擷取的型別不明", + "yieldFromIllegal": "使用 \"yield from\" 需要 Python 3.3 或更新版本", + "yieldFromOutsideAsync": "非同步函式中不允許 \"yield from\"", + "yieldOutsideFunction": "在函式或 lambda 外部不允許 \"yield\"", + "yieldWithinListCompr": "清單理解內不允許 \"yield\"", + "zeroCaseStatementsFound": "Match 陳述式必須至少包含一個 case 陳述式", + "zeroLengthTupleNotAllowed": "此內容中不允許零長度 Tuple" + }, + "DiagnosticAddendum": { + "argParam": "引數對應至參數 \"{paramName}\"", + "argParamFunction": "引數對應至函式 \"{functionName}\" 中的參數 \"{paramName}\"", + "argsParamMissing": "參數 \"*{paramName}\" 沒有對應的參數", + "argsPositionOnly": "僅限位置的參數不符; 應為 {expected},但收到 {received}", + "argumentType": "引數類型為 \"{type}\"", + "argumentTypes": "引數型別: ({types})", + "assignToNone": "類型不能指派至類型 \"None\"", + "asyncHelp": "您是指 \"async with\" 嗎?", + "baseClassOverriddenType": "基底類別 \"{baseClass}\" 提供類型 \"{type}\",其已覆寫", + "baseClassOverridesType": "基底類別 \"{baseClass}\" 以型別 \"{type}\" 來覆寫", + "conditionalRequiresBool": "類型 \"{operandType}\" 的方法 __bool__ 傳回類型 \"{boolReturnType}\" 而非 \"bool\"", + "dataClassFieldLocation": "欄位宣告", + "dataClassFrozen": "\"{name}\" 已凍結", + "finalMethod": "最終方法", + "functionParamDefaultMissing": "參數 \"{name}\" 遺漏了預設引數", + "functionParamName": "參數名稱不符: \"{destName}\" 與 \"{srcName}\"", + "functionReturnTypeMismatch": "函式傳回型別 \"{sourceType}\" 與型別 \"{destType}\" 不相容", + "functionTooFewParams": "函式接受太少位置參數; 預期 {expected},但收到 {received}", + "functionTooManyParams": "函式接受太多位置參數; 預期 {expected},但收到 {received}", + "incompatibleDeleter": "屬性 deleter 方法不相容", + "incompatibleGetter": "屬性 getter 方法不相容", + "incompatibleSetter": "屬性 setter 方法不相容", + "initMethodLocation": "__init__ 方法於類別 \"{type}\" 中定義", + "initMethodSignature": "__init__ 的簽章為 \"{type}\"", + "keyNotRequired": "\"{name}\" 在 \"{type}\" 中不是必要的索引鍵,因此存取可能會導致執行階段例外狀況", + "keyReadOnly": "\"{name}\" 是 \"{type}\" 中的唯讀金鑰", + "keyRequiredDeleted": "\"{name}\" 是必要的金鑰,因此不能刪除", + "keyUndefined": "\"{name}\" 不是 \"{type}\" 中定義的金鑰", + "kwargsParamMissing": "參數 \"**{paramName}\" 沒有對應的參數", + "listAssignmentMismatch": "類型 \"{type}\" 與目標清單不相容", + "literalAssignmentMismatch": "\"{sourceType}\" 不能指派至類型 \"{destType}\"", + "matchIsNotExhaustiveHint": "如果不需要徹底處理,請新增 \"case _: pass\"", + "matchIsNotExhaustiveType": "未處理的類型: \"{type}\"", + "memberAssignment": "無法將型別 \"{type}\" 的運算式指派給類別 \"{classType}\" 的成員 \"{name}\"", + "memberIsAbstract": "\"{type}.{name}\" 為抽象", + "memberIsAbstractMore": "和其他 {count} 人...", + "memberIsFinalInProtocol": "\"{name}\" 在通訊協定中標示為 Final", + "memberIsInitVar": "成員 \"{name}\" 是僅限初始化的欄位", + "memberIsInvariant": "\"{name}\" 為不變數,因為它可變動", + "memberIsNotFinalInProtocol": "\"{name}\" 未在通訊協定中標示為 Final", + "memberSetClassVar": "無法透過類別執行個體指派成員 \"{name}\",因為它是 ClassVar", + "memberTypeMismatch": "\"{name}\" 是不相容的類型", + "memberUnknown": "成員 \"{name}\" 未知", + "missingDeleter": "屬性 deleter 方法遺失", + "missingGetter": "屬性 getter 方法遺失", + "missingProtocolMember": "成員 \"{name}\" 已在通訊協定類別 \"{classType}\" 中宣告", + "missingSetter": "遺漏了屬性 setter 方法", + "namedParamMissingInDest": "目的地中遺失關鍵字參數 \"{name}\"", + "namedParamMissingInSource": "來源中遺漏了關鍵字參數 \"{name}\"", + "namedParamTypeMismatch": "類型 \"{sourceType}\" 的關鍵字參數 \"{name}\" 不能指派至類型 \"{destType}\"", + "newMethodLocation": "__new__ 方法於類別 \"{type}\" 中定義", + "newMethodSignature": "__new__ 的簽章為 \"{type}\"", + "noOverloadAssignable": "沒有任何多載函式符合類型 \"{type}\"", + "orPatternMissingName": "遺失名稱: {name}", + "overloadNotAssignable": "\"{name}\" 的一或多個多載無法指派", + "overloadSignature": "多載簽章在這裡定義", + "overloadWithImplementation": "函式多載的本文應為 \"...\"", + "overriddenMethod": "覆寫方法", + "overriddenSymbol": "覆寫的符號", + "overrideNoOverloadMatches": "覆寫中沒有任何多載簽章與基底方法相容", + "overrideNotClassMethod": "基底方法宣告為 classmethod,但無法覆寫", + "overrideNotInstanceMethod": "基底方法已宣告為執行個體方法,但無法覆寫", + "overrideNotStaticMethod": "基底方法宣告為 staticmethod,但無法覆寫", + "overrideOverloadNoMatch": "多載 {index} 與基底方法不相容", + "overrideOverloadOrder": "覆寫方法的多載必須與基底方法的順序相同", + "overrideParamKeywordNoDefault": "關鍵字參數 \"{name}\" 不相符: 基底參數有預設引數值,覆寫參數則否", + "overrideParamKeywordType": "關鍵字參數 \"{name}\" 型別不符: 基底參數為型別 \"{baseType}\",覆寫參數為型別 \"{overrideType}\"", + "overrideParamName": "參數 {index} 名稱不符: 基底參數名為 \"{baseName}\",覆寫參數名為 \"{overrideName}\"", + "overrideParamNameExtra": "基底中遺失參數 \"{name}\"", + "overrideParamNameMissing": "覆寫中遺漏了參數 \"{name}\"", + "overrideParamNamePositionOnly": "參數 {index} 名稱不符: 基底參數名為 \"{baseName}\",覆寫參數為 \"position-only\"", + "overrideParamNoDefault": "參數 {index} 不相符: 基底參數有預設引數值,覆寫參數則否", + "overrideParamType": "參數 \"{index}\" 型別不符: 基底參數為型別 \"{baseType}\",覆寫參數為型別 \"{overrideType}\"", + "overridePositionalParamCount": "位置參數計數不相符; 基底方法有 {baseCount} 個,但覆寫有 {overrideCount} 個", + "overrideReturnType": "傳回類型不符: 基底方法會傳回類型 \"{baseType}\",覆寫會傳回類型 \"{overrideType}\"", + "overrideType": "基底類別會將類型定義為 \"{type}\"", + "paramAssignment": "參數 {index}: 類型 \"{sourceType}\" 不能指派至類型 \"{destType}\"", + "paramSpecMissingInOverride": "覆寫方法中遺漏了 ParamSpec 參數", + "paramType": "參數類型為 \"{paramType}\"", + "privateImportFromPyTypedSource": "改為從 \"{module}\" 匯入", + "propertyAccessFromProtocolClass": "通訊協定類別中定義的屬性無法存取為類別變數", + "propertyMethodIncompatible": "屬性方法 \"{name}\" 不相容", + "propertyMethodMissing": "覆寫中遺漏了屬性方法 \"{name}\"", + "propertyMissingDeleter": "屬性 \"{name}\" 沒有定義的 deleter", + "propertyMissingSetter": "屬性 \"{name}\" 沒有定義的 setter", + "protocolIncompatible": "\"{sourceType}\" 與通訊協定 \"{destType}\" 不相容", + "protocolMemberClassVar": "\"{name}\" 不是類別變數", + "protocolMemberMissing": "\"{name}\" 不存在", + "protocolSourceIsNotConcrete": "\"{sourceType}\" 不是實體類別型別,因此無法指派給型別 \"{destType}\"", + "pyrightCommentIgnoreTip": "使用 \"# pyright: ignore[]\" 來隱藏單行的診斷", + "readOnlyAttribute": "屬性 \"{name}\" 為唯讀", + "seeClassDeclaration": "請參閱類別宣告", + "seeDeclaration": "請參閱宣告", + "seeFunctionDeclaration": "請參閱函式宣告", + "seeMethodDeclaration": "請參閱方法宣告", + "seeParameterDeclaration": "請參閱參數宣告", + "seeTypeAliasDeclaration": "請參閱類型別名宣告", + "seeVariableDeclaration": "請參閱變數宣告", + "tupleAssignmentMismatch": "型別 \"{type}\" 與目標元組不相容", + "tupleEntryTypeMismatch": "Tuple 項目 {entry} 的類型不正確", + "tupleSizeMismatch": "元素大小不符; 預期為 {expected} 但收到 {received}", + "typeAssignmentMismatch": "類型 \"{sourceType}\" 不能指派至類型 \"{destType}\"", + "typeBound": "類型 \"{sourceType}\" 與類型變數 \"{name}\" 的繫結類型 \"{destType}\" 不相容", + "typeConstrainedTypeVar": "類型 \"{type}\" 與限制類型變數 \"{name}\" 不相容", + "typeIncompatible": "\"{sourceType}\" 與 \"{destType}\" 不相容", + "typeNotCallable": "型別 \"{type}\" 無法呼叫", + "typeNotClass": "\"{type}\" 不是類別", + "typeNotStringLiteral": "\"{type}\" 不是字串常值", + "typeOfSymbol": "\"{name}\" 的型別為 \"{type}\"", + "typeParamSpec": "類型 \"{type}\" 與 ParamSpec \"{name}\" 不相容", + "typeUnsupported": "類型 \"{type}\" 不受支援", + "typeVarDefaultOutOfScope": "類型變數 \"{name}\" 不在範圍內", + "typeVarIsContravariant": "TypeVar \"{name}\" 為逆變數", + "typeVarIsCovariant": "TypeVar \"{name}\" 為共變數", + "typeVarIsInvariant": "TypeVar \"{name}\" 為不變數", + "typeVarNotAllowed": "不允許 TypeVar 或具有型別引數的一般型別", + "typeVarTupleRequiresKnownLength": "TypeVarTuple 無法繫結至長度不明的元組", + "typeVarUnsolvableRemedy": "提供多載,其指定未提供引數時的傳回類型", + "typeVarsMissing": "遺失類型變數: {names}", + "typedDictFieldMissing": "\"{type}\" 遺失 \"{name}\"", + "typedDictFieldNotReadOnly": "\"{name}\" 在 \"{type}\" 中不是唯讀", + "typedDictFieldNotRequired": "\"{type}\" 中不需要 \"{name}\"", + "typedDictFieldRequired": "\"{type}\" 中需要 \"{name}\"", + "typedDictFieldTypeMismatch": "型別 \"{type}\" 無法指派給欄位 \"{name}\"", + "typedDictFieldTypeRedefinition": "父類別中的類型為 \"{parentType}\",而子類別的類型為 \"{childType}\"", + "typedDictFieldUndefined": "\"{name}\" 是類型 \"{type}\" 中未定義的欄位", + "typedDictFinalMismatch": "\"{sourceType}\" 與 \"{destType}\" 不相容,因為@final 不符", + "unhashableType": "型別 \"{type}\" 無法雜湊", + "uninitializedAbstractVariable": "執行個體變數 \"{name}\" 在抽象基底類別 \"{classType}\" 中定義,但未初始化", + "unreachableExcept": "\"{exceptionType}\" 是 \"{parentType}\" 的子類別", + "useDictInstead": "使用 Dict[T1,T2] 來表示字典型別", + "useListInstead": "使用 List[T] 來表示清單型別,或使用 Union [T1, T2] 來表示等位型別", + "useTupleInstead": "使用 Tuple[T1, ..., Tn] 來指出 Tuple 類型或 Union[T1, T2] 來指出聯集類型", + "useTypeInstead": "改為使用 Type[T]", + "varianceMismatchForClass": "型別引數 \"{typeVarName}\" 的變異數與基底類別 \"{className}\" 不相容", + "varianceMismatchForTypeAlias": "型別引數 \"{typeVarName}\" 的變異數與 \"{typeAliasParam}\" 不相容" + } } diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index 341a6d10d..d17737087 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -206,6 +206,10 @@ const enum ParseTextMode { // Limit the max child node depth to prevent stack overflows. const maxChildNodeDepth = 256; +export interface IParser { + parseSourceFile(fileContents: string, parseOptions: ParseOptions, diagSink: DiagnosticSink): ParseResults; +} + export class Parser { private _fileContents?: string; private _tokenizerOutput?: TokenizerOutput; diff --git a/packages/pyright-internal/src/parser/tokenizer.ts b/packages/pyright-internal/src/parser/tokenizer.ts index ecac34fd8..1f8be6934 100644 --- a/packages/pyright-internal/src/parser/tokenizer.ts +++ b/packages/pyright-internal/src/parser/tokenizer.ts @@ -49,7 +49,7 @@ import { } from './tokenizerTypes'; // This must be a Map, as operations like {}["constructor"] succeed. -const _keywords: Map = new Map([ +const PythonKeywords: Map = new Map([ ['and', KeywordType.And], ['as', KeywordType.As], ['assert', KeywordType.Assert], @@ -205,7 +205,7 @@ interface FStringContext { activeReplacementField?: FStringReplacementFieldContext; } -export class Tokenizer { +export class Tokenizer { private _cs = new CharacterStream(''); private _tokens: Token[] = []; private _prevLineStart = 0; @@ -244,6 +244,8 @@ export class Tokenizer { // ipython mode private _ipythonMode = IPythonMode.None; + constructor(private readonly _keywords: Map | Map = PythonKeywords) {} + tokenize( text: string, start?: number, @@ -366,8 +368,8 @@ export class Tokenizer { return _operatorInfo[operatorType]; } - static isKeyword(name: string, includeSoftKeywords = false): boolean { - const keyword = _keywords.get(name); + static isPythonKeyword(name: string, includeSoftKeywords = false): boolean { + const keyword = PythonKeywords.get(name); if (!keyword) { return false; } @@ -853,9 +855,14 @@ export class Tokenizer { if (this._cs.position > start) { const value = this._cs.getText().substring(start, this._cs.position); - if (_keywords.has(value)) { + if (this._keywords.has(value)) { this._tokens.push( - KeywordToken.create(start, this._cs.position - start, _keywords.get(value)!, this._getComments()) + KeywordToken.create( + start, + this._cs.position - start, + this._keywords.get(value)!, + this._getComments() + ) ); } else { this._tokens.push(IdentifierToken.create(start, this._cs.position - start, value, this._getComments())); diff --git a/packages/pyright-internal/src/parser/tokenizerTypes.ts b/packages/pyright-internal/src/parser/tokenizerTypes.ts index 353204701..a9252bbbb 100644 --- a/packages/pyright-internal/src/parser/tokenizerTypes.ts +++ b/packages/pyright-internal/src/parser/tokenizerTypes.ts @@ -304,11 +304,11 @@ export namespace NewLineToken { export interface KeywordToken extends Token { readonly type: TokenType.Keyword; - readonly keywordType: KeywordType; + readonly keywordType: number; } export namespace KeywordToken { - export function create(start: number, length: number, keywordType: KeywordType, comments: Comment[] | undefined) { + export function create(start: number, length: number, keywordType: number, comments: Comment[] | undefined) { const token: KeywordToken = { start, length, diff --git a/packages/pyright-internal/src/pprof/profiler.ts b/packages/pyright-internal/src/pprof/profiler.ts new file mode 100644 index 000000000..941b547b6 --- /dev/null +++ b/packages/pyright-internal/src/pprof/profiler.ts @@ -0,0 +1,63 @@ +/** + * Functions used for running pyright with pprof. + * + * Steps taken to get this to work: + * - Install VC++ Desktop C++ workload with at least one Windows SDK + - Git clone DataDog/pprof-nodejs: pprof support for Node.js (github.com) + ○ Going to use this to generate an electron.node file for loading the profiler + - Switch to packages\vscode-pylance + - Npm install --save-dev node-abi@latest + ○ this is so electron-rebuild can find the right ABI + - Npm install --save-dev @electron/rebuild + - Electron rebuild the git cloned datadog/pprof-nodejs based on the version in VS code + ○ .\node_modules\.bin\electron-rebuild -v -m + - Npm install --save-dev @datadog/pprof + - Copy the build output from the electron-rebuild of the datadog git repository to the node_modules datadog + ○ It should be named something like bin\win32-x64-110\pprof-nodejs.node + ○ Copy it to the node_modules\@datadog\pprof\prebuilds\win32-x64 + ○ Rename it to electron-110.node (or whatever ABI version it is using) + - Modify pylance to use pprof around problem location using the pyright\packages\pyright-internal\pprof\profiler.ts + ○ startProfile before + ○ finishProfile after, passing it a file name + - Rebuild Pylance + - Make sure to turn off background analysis + - Launch the CPU profiling profile + - Reproduce the problem + - Install Go (Get Started - The Go Programming Language) + - Install Graphviz + ○ Choco install graphviz + - Install the pprof cli + ○ go install github.com/google/pprof@latest + - Run pprof -http to look at results. + ○ Profile should be in same directory as vscode-pylance output. + ○ Example pprof -http=: + */ + +declare const __webpack_require__: typeof require; +declare const __non_webpack_require__: typeof require; + +function getRequire(path: string) { + const r = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require; + try { + return r(`../node_modules/${path}`); + } catch (err) { + console.log(err); + } +} + +let counter = 1; + +export function startProfile(): void { + const pprof = getRequire('@datadog/pprof'); + pprof?.time.start({}); + console.log(`Starting profile : ${counter}`); +} +export function finishProfile(outputFile: string): void { + const pprof = getRequire('@datadog/pprof'); + const profile = pprof?.time.stop(); + if (profile) { + const fs = getRequire('fs-extra') as typeof import('fs-extra'); + const buffer = pprof?.encodeSync(profile); + fs.writeFileSync(`${counter++}${outputFile}`, buffer); + } +} diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 165e26b1a..623c13396 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -119,7 +119,8 @@ const testAccessHost = new TestAccessHost(vfs.MODULE_PATH, [libFolder, distlibFo export class TestState { private readonly _cancellationToken: TestCancellationToken; - private readonly _files: string[] = []; + private readonly _vfsFiles: vfs.FileSet; + protected readonly files: string[] = []; private readonly _hostSpecificFeatures: HostSpecificFeatures; readonly testFS: vfs.TestFileSystem; @@ -143,9 +144,14 @@ export class TestState { public testData: FourSlashData, mountPaths?: Map, hostSpecificFeatures?: HostSpecificFeatures, - testFS?: vfs.TestFileSystem + testFS?: vfs.TestFileSystem, + // Setting delayFileInitialization to true enables derived class constructors to execute + // before any files are opened. When set to true, initializeFiles() must be called separately + // after construction completes. + delayFileInitialization = false ) { const vfsInfo = createVfsInfoFromFourSlashData(projectRoot, testData); + this._vfsFiles = vfsInfo.files; this.testFS = testFS ?? @@ -161,7 +167,7 @@ export class TestState { this._hostSpecificFeatures = hostSpecificFeatures ?? new TestFeatures(); this.fs = new PyrightFileSystem(this.testFS); - this._files = vfsInfo.sourceFileNames; + this.files = vfsInfo.sourceFileNames; this.rawConfigJson = vfsInfo.rawConfigJson; const configOptions = this._convertGlobalOptionsToConfigOptions(vfsInfo.projectRoot, mountPaths); @@ -201,16 +207,8 @@ export class TestState { this._hostSpecificFeatures.runIndexer(this.workspace, indexerWithoutStdLib, indexerOptions); } - if (this._files.length > 0) { - // Open the first file by default - this.openFile(this._files[0]); - } - - for (const filePath of this._files) { - const file = vfsInfo.files[filePath] as vfs.File; - if (file.meta?.[MetadataOptionNames.ipythonMode]) { - this.program.getSourceFile(filePath)?.test_enableIPythonMode(true); - } + if (!delayFileInitialization) { + this.initializeFiles(); } } @@ -226,6 +224,20 @@ export class TestState { return this.workspace.service.test_program; } + initializeFiles() { + if (this.files.length > 0) { + // Open the first file by default + this.openFile(this.files[0]); + } + + for (const filePath of this.files) { + const file = this._vfsFiles[filePath] as vfs.File; + if (file.meta?.[MetadataOptionNames.ipythonMode]) { + this.program.getSourceFile(filePath)?.test_enableIPythonMode(true); + } + } + } + dispose() { this.workspace.service.dispose(); } @@ -423,12 +435,14 @@ export class TestState { } // Opens a file given its 0-based index or fileName - openFile(indexOrName: number | string): void { - const fileToOpen: FourSlashFile = this._findFile(indexOrName); + openFile(indexOrName: number | string): FourSlashFile { + const fileToOpen: FourSlashFile = this.findFile(indexOrName); fileToOpen.fileName = normalizeSlashes(fileToOpen.fileName); this.activeFile = fileToOpen; this.program.setFileOpened(this.activeFile.fileName, 1, fileToOpen.content); + + return fileToOpen; } openFiles(indexOrNames: (number | string)[]): void { @@ -1425,6 +1439,29 @@ export class TestState { } } + protected findFile(indexOrName: string | number): FourSlashFile { + if (typeof indexOrName === 'number') { + const index = indexOrName; + if (index >= this.testData.files.length) { + throw new Error( + `File index (${index}) in openFile was out of range. There are only ${this.testData.files.length} files in this test.` + ); + } else { + return this.testData.files[index]; + } + } else if (isString(indexOrName)) { + const { file, availableNames } = this._tryFindFileWorker(indexOrName); + if (!file) { + throw new Error( + `No test file named "${indexOrName}" exists. Available file names are: ${availableNames.join(', ')}` + ); + } + return file; + } else { + return debug.assertNever(indexOrName); + } + } + protected getCompletionResults( state: TestState, marker: Marker, @@ -1583,7 +1620,7 @@ export class TestState { } private _getTextRangeCollection(fileName: string): TextRangeCollection { - if (fileName in this._files) { + if (fileName in this.files) { return this._getParseResult(fileName).tokenizerOutput.lines; } @@ -1692,29 +1729,6 @@ export class TestState { ); } - private _findFile(indexOrName: string | number): FourSlashFile { - if (typeof indexOrName === 'number') { - const index = indexOrName; - if (index >= this.testData.files.length) { - throw new Error( - `File index (${index}) in openFile was out of range. There are only ${this.testData.files.length} files in this test.` - ); - } else { - return this.testData.files[index]; - } - } else if (isString(indexOrName)) { - const { file, availableNames } = this._tryFindFileWorker(indexOrName); - if (!file) { - throw new Error( - `No test file named "${indexOrName}" exists. Available file names are: ${availableNames.join(', ')}` - ); - } - return file; - } else { - return debug.assertNever(indexOrName); - } - } - private _tryFindFileWorker(name: string): { readonly file: FourSlashFile | undefined; readonly availableNames: readonly string[]; @@ -1778,7 +1792,7 @@ export class TestState { } private _getDiagnosticsPerFile() { - const sourceFiles = this._files.map((f) => this.program.getSourceFile(f)); + const sourceFiles = this.files.map((f) => this.program.getSourceFile(f)); const results = sourceFiles.map((sourceFile, index) => { if (sourceFile) { const diagnostics = sourceFile.getDiagnostics(this.configOptions) || []; @@ -1793,7 +1807,7 @@ export class TestState { }; return [filePath, value] as [string, typeof value]; } else { - this.raiseError(`Source file not found for ${this._files[index]}`); + this.raiseError(`Source file not found for ${this.files[index]}`); } }); @@ -1818,7 +1832,7 @@ export class TestState { // directly set files to track rather than using fileSpec from config // to discover those files from file system service.test_program.setTrackedFiles( - this._files + this.files .filter((path) => { const fileExtension = getFileExtension(path).toLowerCase(); return fileExtension === '.py' || fileExtension === '.pyi'; diff --git a/packages/pyright-internal/src/tests/harness/vfs/factory.ts b/packages/pyright-internal/src/tests/harness/vfs/factory.ts index 91e53c436..da65e7763 100644 --- a/packages/pyright-internal/src/tests/harness/vfs/factory.ts +++ b/packages/pyright-internal/src/tests/harness/vfs/factory.ts @@ -115,6 +115,12 @@ let cacheKey: { host: TestHost; mountPaths: Map } | undefined; let localCIFSCache: TestFileSystem | undefined; let localCSFSCache: TestFileSystem | undefined; +export function clearCache() { + cacheKey = undefined; + localCIFSCache = undefined; + localCSFSCache = undefined; +} + function getBuiltLocal( host: TestHost, ignoreCase: boolean, diff --git a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts index aac36d0de..0c2d6dfe4 100644 --- a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts +++ b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts @@ -459,8 +459,15 @@ export class TestFileSystem implements FileSystem { } } - getFileListing(): string { + getFileListing(filter?: (p: string) => boolean): string { let result = ''; + + const addToResult = (path: string, add: string) => { + if (!filter || filter(path)) { + result += add; + } + }; + const printLinks = (dirname: string | undefined, links: SortedMap) => { const iterator = getIterator(links); try { @@ -469,16 +476,16 @@ export class TestFileSystem implements FileSystem { const path = dirname ? pathUtil.combinePaths(dirname, name) : name; const marker = pathUtil.comparePaths(this._cwd, path, this.ignoreCase) === 0 ? '*' : ' '; if (result) { - result += '\n'; + addToResult(path, '\n'); } - result += marker; + addToResult(path, marker); if (isDirectory(node)) { - result += pathUtil.ensureTrailingDirectorySeparator(path); + addToResult(path, pathUtil.ensureTrailingDirectorySeparator(path)); printLinks(path, this._getLinks(node)); } else if (isFile(node)) { - result += path; + addToResult(path, path); } else if (isSymlink(node)) { - result += `${path} -> ${node.symlink}`; + addToResult(path, `${path} -> ${node.symlink}`); } } } finally { @@ -492,8 +499,8 @@ export class TestFileSystem implements FileSystem { /** * Print diagnostic information about the structure of the file system to the console. */ - debugPrint(): void { - console.log(this.getFileListing()); + debugPrint(filter?: (p: string) => boolean): void { + console.log(this.getFileListing(filter)); } // POSIX API (aligns with NodeJS "fs" module API) diff --git a/packages/pyright-internal/src/workspaceFactory.ts b/packages/pyright-internal/src/workspaceFactory.ts index d15d7a58f..6ef961593 100644 --- a/packages/pyright-internal/src/workspaceFactory.ts +++ b/packages/pyright-internal/src/workspaceFactory.ts @@ -387,7 +387,7 @@ export class WorkspaceFactory { pythonPathKind: WorkspacePythonPathKind, kinds: string[] ) { - // Update the kind based of the uri is local or not + // Update the kind based if the uri is local or not if (!kinds.includes(WellKnownWorkspaceKinds.Default) && (!this._uriParser.isLocal(rootUri) || this._isWeb)) { // Web based workspace should be limited. kinds = [...kinds, WellKnownWorkspaceKinds.Limited]; @@ -408,9 +408,6 @@ export class WorkspaceFactory { searchPathsToWatch: [], }; - // Tell our owner we added something - this._onWorkspaceCreated(result); - // Stick in our map const key = this._getWorkspaceKey(result); @@ -419,6 +416,11 @@ export class WorkspaceFactory { this._console.log(`WorkspaceFactory ${this._id} add ${key}`); this._map.set(key, result); + // Tell our owner we added something. Order matters here as we + // don't want to fire the workspace created while the old copy of this + // workspace is still in the map. + this._onWorkspaceCreated(result); + return result; } diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index f7b426546..dc4863f47 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -18,10 +18,10 @@ "copy-webpack-plugin": "^11.0.0", "esbuild-loader": "^3.0.1", "shx": "^0.3.4", - "ts-loader": "^9.4.3", + "ts-loader": "^9.4.4", "typescript": "~4.4.4", - "webpack": "^5.85.0", - "webpack-cli": "^5.1.1" + "webpack": "^5.88.1", + "webpack-cli": "^5.1.4" }, "engines": { "node": ">=12.0.0" @@ -1113,9 +1113,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", - "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -2307,9 +2307,9 @@ } }, "node_modules/ts-loader": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.3.tgz", - "integrity": "sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -2391,9 +2391,9 @@ } }, "node_modules/webpack": { - "version": "5.85.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", - "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -2405,7 +2405,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -2415,7 +2415,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -2438,9 +2438,9 @@ } }, "node_modules/webpack-cli": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.3.tgz", - "integrity": "sha512-MTuk7NUMvEHQUSXCpvUrF1q2p0FJS40dPFfqQvG3jTWcgv/8plBNz2Kv2HXZiLGPnfmSAA5uCtCILO1JBmmkfw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", @@ -2527,9 +2527,9 @@ } }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -3313,9 +3313,9 @@ "dev": true }, "enhanced-resolve": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", - "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -4175,9 +4175,9 @@ } }, "ts-loader": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.3.tgz", - "integrity": "sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -4222,9 +4222,9 @@ } }, "webpack": { - "version": "5.85.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", - "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -4236,7 +4236,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -4246,7 +4246,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -4254,9 +4254,9 @@ }, "dependencies": { "schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -4273,9 +4273,9 @@ } }, "webpack-cli": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.3.tgz", - "integrity": "sha512-MTuk7NUMvEHQUSXCpvUrF1q2p0FJS40dPFfqQvG3jTWcgv/8plBNz2Kv2HXZiLGPnfmSAA5uCtCILO1JBmmkfw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 7fc9f8ad7..d3ec097e2 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -28,10 +28,10 @@ "copy-webpack-plugin": "^11.0.0", "esbuild-loader": "^3.0.1", "shx": "^0.3.4", - "ts-loader": "^9.4.3", + "ts-loader": "^9.4.4", "typescript": "~4.4.4", - "webpack": "^5.85.0", - "webpack-cli": "^5.1.1" + "webpack": "^5.88.1", + "webpack-cli": "^5.1.4" }, "files": [ "/dist", diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 1ee359c42..2cafc21b2 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", - "vscode-languageclient": "^8.1.0", + "vscode-languageclient": "8.1.0", "vscode-languageserver": "8.1.0", "vscode-languageserver-protocol": "3.17.3" }, @@ -22,11 +22,11 @@ "detect-indent": "^6.1.0", "esbuild-loader": "^3.0.1", "shx": "^0.3.4", - "ts-loader": "^9.4.3", + "ts-loader": "^9.4.4", "typescript": "~4.4.4", "vsce": "^2.7.0", - "webpack": "^5.85.0", - "webpack-cli": "^5.1.1" + "webpack": "^5.88.1", + "webpack-cli": "^5.1.4" }, "engines": { "vscode": "^1.78.0" @@ -1406,9 +1406,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", - "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -3126,9 +3126,9 @@ } }, "node_modules/ts-loader": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.3.tgz", - "integrity": "sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -3491,9 +3491,9 @@ } }, "node_modules/webpack": { - "version": "5.85.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", - "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -3505,7 +3505,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -3515,7 +3515,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -3538,9 +3538,9 @@ } }, "node_modules/webpack-cli": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.3.tgz", - "integrity": "sha512-MTuk7NUMvEHQUSXCpvUrF1q2p0FJS40dPFfqQvG3jTWcgv/8plBNz2Kv2HXZiLGPnfmSAA5uCtCILO1JBmmkfw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", @@ -3627,9 +3627,9 @@ } }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -4652,9 +4652,9 @@ } }, "enhanced-resolve": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", - "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -5907,9 +5907,9 @@ } }, "ts-loader": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.3.tgz", - "integrity": "sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -6184,9 +6184,9 @@ } }, "webpack": { - "version": "5.85.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.85.1.tgz", - "integrity": "sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==", + "version": "5.88.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", + "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -6198,7 +6198,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -6208,7 +6208,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -6216,9 +6216,9 @@ }, "dependencies": { "schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -6235,9 +6235,9 @@ } }, "webpack-cli": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.3.tgz", - "integrity": "sha512-MTuk7NUMvEHQUSXCpvUrF1q2p0FJS40dPFfqQvG3jTWcgv/8plBNz2Kv2HXZiLGPnfmSAA5uCtCILO1JBmmkfw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 65aed108e..a84f8f7f0 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -951,7 +951,7 @@ }, "dependencies": { "vscode-jsonrpc": "8.1.0", - "vscode-languageclient": "^8.1.0", + "vscode-languageclient": "8.1.0", "vscode-languageserver": "8.1.0", "vscode-languageserver-protocol": "3.17.3" }, @@ -963,10 +963,10 @@ "detect-indent": "^6.1.0", "esbuild-loader": "^3.0.1", "shx": "^0.3.4", - "ts-loader": "^9.4.3", + "ts-loader": "^9.4.4", "typescript": "~4.4.4", "vsce": "^2.7.0", - "webpack": "^5.85.0", - "webpack-cli": "^5.1.1" + "webpack": "^5.88.1", + "webpack-cli": "^5.1.4" } } From bf158567f9f0730b62a03dc9b63782d7bed2a98e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 14 Jul 2023 18:39:53 -0700 Subject: [PATCH 393/525] Eliminated the need to apply narrowing twice when evaluating the types of pattern targets in a match statement. This is a perf improvement but does not affect type evaluation. --- .../src/analyzer/patternMatching.ts | 74 +++++++++++-------- .../src/analyzer/typeEvaluator.ts | 12 +-- 2 files changed, 45 insertions(+), 41 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index a1914e8fe..f04e72732 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -98,7 +98,7 @@ const classPatternSpecialCases = [ interface SequencePatternInfo { subtype: Type; - definiteNoMatch: boolean; + isDefiniteNoMatch: boolean; entryTypes: Type[]; isIndeterminateLength?: boolean; isTuple?: boolean; @@ -195,11 +195,11 @@ function narrowTypeBasedOnSequencePattern( isPositiveTest: boolean ): Type { type = transformPossibleRecursiveTypeAlias(type); - let sequenceInfo = getSequencePatternInfo(evaluator, type, pattern.entries.length, pattern.starEntryIndex); + let sequenceInfo = getSequencePatternInfo(evaluator, pattern, type); // Further narrow based on pattern entry types. sequenceInfo = sequenceInfo.filter((entry) => { - if (entry.definiteNoMatch) { + if (entry.isDefiniteNoMatch) { if (isPositiveTest) { return false; } else { @@ -1099,10 +1099,11 @@ function getMappingPatternInfo(evaluator: TypeEvaluator, type: Type): MappingPat // sufficient length, it sets definiteNoMatch to true. function getSequencePatternInfo( evaluator: TypeEvaluator, - type: Type, - entryCount: number, - starEntryIndex: number | undefined + pattern: PatternSequenceNode, + type: Type ): SequencePatternInfo[] { + const entryCount = pattern.entries.length; + const starEntryIndex = pattern.starEntryIndex; const sequenceInfo: SequencePatternInfo[] = []; const minEntryCount = starEntryIndex === undefined ? entryCount : entryCount - 1; @@ -1116,7 +1117,7 @@ function getSequencePatternInfo( subtype, entryTypes: [concreteSubtype], isIndeterminateLength: true, - definiteNoMatch: false, + isDefiniteNoMatch: false, }); return; } @@ -1128,7 +1129,7 @@ function getSequencePatternInfo( entryTypes: [convertToInstance(concreteSubtype)], isIndeterminateLength: true, isObject: true, - definiteNoMatch: false, + isDefiniteNoMatch: false, }); return; } @@ -1169,7 +1170,7 @@ function getSequencePatternInfo( entryTypes: [combineTypes(specializedSequence.tupleTypeArguments.map((t) => t.type))], isIndeterminateLength: true, isTuple: true, - definiteNoMatch: false, + isDefiniteNoMatch: false, }); pushedEntry = true; } else { @@ -1183,7 +1184,7 @@ function getSequencePatternInfo( entryTypes: specializedSequence.tupleTypeArguments.map((t) => t.type), isIndeterminateLength: false, isTuple: true, - definiteNoMatch: false, + isDefiniteNoMatch: false, }); pushedEntry = true; } @@ -1198,7 +1199,7 @@ function getSequencePatternInfo( : UnknownType.create(), ], isIndeterminateLength: true, - definiteNoMatch: false, + isDefiniteNoMatch: false, }); pushedEntry = true; } @@ -1211,7 +1212,7 @@ function getSequencePatternInfo( subtype, entryTypes: [], isIndeterminateLength: true, - definiteNoMatch: true, + isDefiniteNoMatch: true, }); } }); @@ -1278,25 +1279,22 @@ function getTypeOfPatternSequenceEntry( } // Recursively assigns the specified type to the pattern and any capture -// nodes within it +// nodes within it. It returns the narrowed type, as dictated by the pattern. export function assignTypeToPatternTargets( evaluator: TypeEvaluator, type: Type, isTypeIncomplete: boolean, isSubjectObject: boolean, pattern: PatternAtomNode -) { +): Type { // Further narrow the type based on this pattern. - type = narrowTypeBasedOnPattern(evaluator, type, pattern, /* positiveTest */ true); + const narrowedType = narrowTypeBasedOnPattern(evaluator, type, pattern, /* positiveTest */ true); switch (pattern.nodeType) { case ParseNodeType.PatternSequence: { - const sequenceInfo = getSequencePatternInfo( - evaluator, - type, - pattern.entries.length, - pattern.starEntryIndex - ).filter((seqInfo) => !seqInfo.definiteNoMatch); + const sequenceInfo = getSequencePatternInfo(evaluator, pattern, narrowedType).filter( + (seqInfo) => !seqInfo.isDefiniteNoMatch + ); pattern.entries.forEach((entry, index) => { const entryType = combineTypes( @@ -1321,15 +1319,27 @@ export function assignTypeToPatternTargets( case ParseNodeType.PatternAs: { if (pattern.target) { - evaluator.assignTypeToExpression(pattern.target, type, isTypeIncomplete, pattern.target); + evaluator.assignTypeToExpression(pattern.target, narrowedType, isTypeIncomplete, pattern.target); } + let runningNarrowedType = narrowedType; pattern.orPatterns.forEach((orPattern) => { - assignTypeToPatternTargets(evaluator, type, isTypeIncomplete, isSubjectObject, orPattern); + assignTypeToPatternTargets( + evaluator, + runningNarrowedType, + isTypeIncomplete, + isSubjectObject, + orPattern + ); // OR patterns are evaluated left to right, so we can narrow // the type as we go. - type = narrowTypeBasedOnPattern(evaluator, type, orPattern, /* positiveTest */ false); + runningNarrowedType = narrowTypeBasedOnPattern( + evaluator, + runningNarrowedType, + orPattern, + /* positiveTest */ false + ); }); break; } @@ -1338,19 +1348,19 @@ export function assignTypeToPatternTargets( if (pattern.isWildcard) { if (!isTypeIncomplete) { const fileInfo = getFileInfo(pattern); - if (isUnknown(type)) { + if (isUnknown(narrowedType)) { evaluator.addDiagnostic( fileInfo.diagnosticRuleSet.reportUnknownVariableType, DiagnosticRule.reportUnknownVariableType, Localizer.Diagnostic.wildcardPatternTypeUnknown(), pattern.target ); - } else if (isPartlyUnknown(type)) { + } else if (isPartlyUnknown(narrowedType)) { const diagAddendum = new DiagnosticAddendum(); diagAddendum.addMessage( Localizer.DiagnosticAddendum.typeOfSymbol().format({ name: '_', - type: evaluator.printType(type, { expandTypeAlias: true }), + type: evaluator.printType(narrowedType, { expandTypeAlias: true }), }) ); evaluator.addDiagnostic( @@ -1362,13 +1372,13 @@ export function assignTypeToPatternTargets( } } } else { - evaluator.assignTypeToExpression(pattern.target, type, isTypeIncomplete, pattern.target); + evaluator.assignTypeToExpression(pattern.target, narrowedType, isTypeIncomplete, pattern.target); } break; } case ParseNodeType.PatternMapping: { - const mappingInfo = getMappingPatternInfo(evaluator, type); + const mappingInfo = getMappingPatternInfo(evaluator, narrowedType); pattern.entries.forEach((mappingEntry) => { const keyTypes: Type[] = []; @@ -1474,9 +1484,9 @@ export function assignTypeToPatternTargets( case ParseNodeType.PatternClass: { const argTypes: Type[][] = pattern.arguments.map((arg) => []); - evaluator.mapSubtypesExpandTypeVars(type, /* conditionFilter */ undefined, (expandedSubtype) => { + evaluator.mapSubtypesExpandTypeVars(narrowedType, /* conditionFilter */ undefined, (expandedSubtype) => { if (isClassInstance(expandedSubtype)) { - doForEachSubtype(type, (subjectSubtype) => { + doForEachSubtype(narrowedType, (subjectSubtype) => { const concreteSubtype = evaluator.makeTopLevelTypeVarsConcrete(subjectSubtype); if (isAnyOrUnknown(concreteSubtype)) { @@ -1535,6 +1545,8 @@ export function assignTypeToPatternTargets( break; } } + + return narrowedType; } function wrapTypeInList(evaluator: TypeEvaluator, node: ParseNode, type: Type): Type { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 55a109561..4743ecade 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -17635,15 +17635,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } }); - // Apply positive narrowing for the current case statement. - subjectType = narrowTypeBasedOnPattern( - evaluatorInterface, - subjectType, - node.pattern, - /* isPositiveTest */ true - ); - - assignTypeToPatternTargets( + const narrowedSubjectType = assignTypeToPatternTargets( evaluatorInterface, subjectType, !!subjectTypeResult.isIncomplete, @@ -17653,7 +17645,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions writeTypeCache( node, - { type: subjectType, isIncomplete: !!subjectTypeResult.isIncomplete }, + { type: narrowedSubjectType, isIncomplete: !!subjectTypeResult.isIncomplete }, EvaluatorFlags.None ); } From 01f40f0e98f4182c53c8e3b1e1861ec8f5b89a53 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Jul 2023 02:12:58 +0000 Subject: [PATCH 394/525] Fixed bugs that resulted in incorrect or incomplete types when narrowing for sequence patterns in the negative case and the subject expression is a super-type of `Sequence` (such as `object` or `Reversible`). (#5507) Co-authored-by: Eric Traut --- .../src/analyzer/patternMatching.ts | 162 +++++++++--------- .../src/analyzer/typeEvaluator.ts | 9 - .../src/tests/samples/matchLiteral1.py | 8 +- .../src/tests/samples/matchSequence1.py | 117 ++++++++----- 4 files changed, 165 insertions(+), 131 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index f04e72732..f1a93319a 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -31,7 +31,7 @@ import { import { getFileInfo } from './analyzerNodeInfo'; import { CodeFlowReferenceExpressionNode } from './codeFlowTypes'; import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver'; -import { isMatchingExpression } from './parseTreeUtils'; +import { getTypeVarScopesForNode, isMatchingExpression } from './parseTreeUtils'; import { getTypedDictMembersForClass } from './typedDicts'; import { EvaluatorFlags, TypeEvaluator, TypeResult } from './typeEvaluatorTypes'; import { @@ -99,10 +99,10 @@ const classPatternSpecialCases = [ interface SequencePatternInfo { subtype: Type; isDefiniteNoMatch: boolean; + isPotentialNoMatch?: boolean; entryTypes: Type[]; isIndeterminateLength?: boolean; isTuple?: boolean; - isObject?: boolean; } interface MappingPatternInfo { @@ -208,7 +208,7 @@ function narrowTypeBasedOnSequencePattern( } let isPlausibleMatch = true; - let isDefiniteMatch = !containsAnyOrUnknown(type, /* recurse */ false); + let isDefiniteMatch = true; const narrowedEntryTypes: Type[] = []; let canNarrowTuple = entry.isTuple; @@ -236,8 +236,7 @@ function narrowTypeBasedOnSequencePattern( index, pattern.entries.length, pattern.starEntryIndex, - /* unpackStarEntry */ true, - /* isSubjectObject */ false + /* unpackStarEntry */ true ); const narrowedEntryType = narrowTypeBasedOnPattern(evaluator, entryType, sequenceEntry, isPositiveTest); @@ -266,6 +265,10 @@ function narrowTypeBasedOnSequencePattern( } } } else { + if (entry.isPotentialNoMatch) { + isDefiniteMatch = false; + } + if (!isNever(narrowedEntryType)) { isDefiniteMatch = false; @@ -327,16 +330,18 @@ function narrowTypeBasedOnSequencePattern( } } - // If this is an object, we can narrow it to a specific Sequence type. - if (entry.isObject) { + // If this is a supertype of Sequence, we can narrow it to a Sequence type. + if (entry.isPotentialNoMatch) { const sequenceType = evaluator.getTypingType(pattern, 'Sequence'); if (sequenceType && isInstantiableClass(sequenceType)) { + let typeArgType = evaluator.stripLiteralValue(combineTypes(narrowedEntryTypes)); + + // If the type is a union that contains Any or Unknown, remove the other types + // before wrapping it in a Sequence. + typeArgType = containsAnyOrUnknown(typeArgType, /* recurse */ false) ?? typeArgType; + entry.subtype = ClassType.cloneAsInstance( - ClassType.cloneForSpecialization( - sequenceType, - [evaluator.stripLiteralValue(combineTypes(narrowedEntryTypes))], - /* isTypeArgumentExplicit */ true - ) + ClassType.cloneForSpecialization(sequenceType, [typeArgType], /* isTypeArgumentExplicit */ true) ); } } @@ -1112,28 +1117,7 @@ function getSequencePatternInfo( let mroClassToSpecialize: ClassType | undefined; let pushedEntry = false; - if (isAnyOrUnknown(concreteSubtype)) { - sequenceInfo.push({ - subtype, - entryTypes: [concreteSubtype], - isIndeterminateLength: true, - isDefiniteNoMatch: false, - }); - return; - } - if (isClassInstance(concreteSubtype)) { - if (ClassType.isBuiltIn(concreteSubtype, 'object')) { - sequenceInfo.push({ - subtype, - entryTypes: [convertToInstance(concreteSubtype)], - isIndeterminateLength: true, - isObject: true, - isDefiniteNoMatch: false, - }); - return; - } - for (const mroClass of concreteSubtype.details.mro) { if (!isInstantiableClass(mroClass)) { break; @@ -1145,7 +1129,7 @@ function getSequencePatternInfo( ClassType.isBuiltIn(mroClass, 'bytes') || ClassType.isBuiltIn(mroClass, 'bytearray') ) { - break; + return; } if (ClassType.isBuiltIn(mroClass, 'Sequence')) { @@ -1206,8 +1190,61 @@ function getSequencePatternInfo( } } - // Push an entry that indicates that this is definitely not a match. if (!pushedEntry) { + // If it wasn't a subtype of Sequence, see if it's a supertype. + const sequenceType = evaluator.getTypingType(pattern, 'Sequence'); + + if (sequenceType && isInstantiableClass(sequenceType)) { + const sequenceTypeVarContext = new TypeVarContext(getTypeVarScopeId(sequenceType)); + if ( + populateTypeVarContextBasedOnExpectedType( + evaluator, + ClassType.cloneAsInstance(sequenceType), + subtype, + sequenceTypeVarContext, + getTypeVarScopesForNode(pattern), + pattern.start + ) + ) { + const specializedSequence = applySolvedTypeVars( + ClassType.cloneAsInstantiable(sequenceType), + sequenceTypeVarContext + ) as ClassType; + + if (specializedSequence.typeArguments && specializedSequence.typeArguments.length > 0) { + sequenceInfo.push({ + subtype, + entryTypes: [specializedSequence.typeArguments[0]], + isIndeterminateLength: true, + isDefiniteNoMatch: false, + isPotentialNoMatch: true, + }); + return; + } + } + + if ( + evaluator.assignType( + subtype, + ClassType.cloneForSpecialization( + ClassType.cloneAsInstance(sequenceType), + [UnknownType.create()], + /* isTypeArgumentExplicit */ true + ) + ) + ) { + sequenceInfo.push({ + subtype, + entryTypes: [UnknownType.create()], + isIndeterminateLength: true, + isDefiniteNoMatch: false, + isPotentialNoMatch: true, + }); + return; + } + } + + // Push an entry that indicates that this is definitely not a match. sequenceInfo.push({ subtype, entryTypes: [], @@ -1227,22 +1264,11 @@ function getTypeOfPatternSequenceEntry( entryIndex: number, entryCount: number, starEntryIndex: number | undefined, - unpackStarEntry: boolean, - isSubjectObject: boolean + unpackStarEntry: boolean ): Type { if (sequenceInfo.isIndeterminateLength) { let entryType = sequenceInfo.entryTypes[0]; - // If the subject is typed as an "object", then the star entry - // is simply a list[object]. Without this special case, the list - // will be typed based on the union of all elements in the sequence. - if (isSubjectObject) { - const objectType = evaluator.getBuiltInObject(node, 'object'); - if (objectType && isClassInstance(objectType)) { - entryType = objectType; - } - } - if (!unpackStarEntry && entryIndex === starEntryIndex && !isNever(entryType)) { entryType = wrapTypeInList(evaluator, node, entryType); } @@ -1284,7 +1310,6 @@ export function assignTypeToPatternTargets( evaluator: TypeEvaluator, type: Type, isTypeIncomplete: boolean, - isSubjectObject: boolean, pattern: PatternAtomNode ): Type { // Further narrow the type based on this pattern. @@ -1306,13 +1331,12 @@ export function assignTypeToPatternTargets( index, pattern.entries.length, pattern.starEntryIndex, - /* unpackStarEntry */ false, - isSubjectObject + /* unpackStarEntry */ false ) ) ); - assignTypeToPatternTargets(evaluator, entryType, isTypeIncomplete, /* isSubjectObject */ false, entry); + assignTypeToPatternTargets(evaluator, entryType, isTypeIncomplete, entry); }); break; } @@ -1324,13 +1348,7 @@ export function assignTypeToPatternTargets( let runningNarrowedType = narrowedType; pattern.orPatterns.forEach((orPattern) => { - assignTypeToPatternTargets( - evaluator, - runningNarrowedType, - isTypeIncomplete, - isSubjectObject, - orPattern - ); + assignTypeToPatternTargets(evaluator, runningNarrowedType, isTypeIncomplete, orPattern); // OR patterns are evaluated left to right, so we can narrow // the type as we go. @@ -1443,20 +1461,8 @@ export function assignTypeToPatternTargets( const valueType = combineTypes(valueTypes); if (mappingEntry.nodeType === ParseNodeType.PatternMappingKeyEntry) { - assignTypeToPatternTargets( - evaluator, - keyType, - isTypeIncomplete, - /* isSubjectObject */ false, - mappingEntry.keyPattern - ); - assignTypeToPatternTargets( - evaluator, - valueType, - isTypeIncomplete, - /* isSubjectObject */ false, - mappingEntry.valuePattern - ); + assignTypeToPatternTargets(evaluator, keyType, isTypeIncomplete, mappingEntry.keyPattern); + assignTypeToPatternTargets(evaluator, valueType, isTypeIncomplete, mappingEntry.valuePattern); } else if (mappingEntry.nodeType === ParseNodeType.PatternMappingExpandEntry) { const dictClass = evaluator.getBuiltInType(pattern, 'dict'); const strType = evaluator.getBuiltInObject(pattern, 'str'); @@ -1527,13 +1533,7 @@ export function assignTypeToPatternTargets( }); pattern.arguments.forEach((arg, index) => { - assignTypeToPatternTargets( - evaluator, - combineTypes(argTypes[index]), - isTypeIncomplete, - /* isSubjectObject */ false, - arg.pattern - ); + assignTypeToPatternTargets(evaluator, combineTypes(argTypes[index]), isTypeIncomplete, arg.pattern); }); break; } @@ -1556,6 +1556,10 @@ function wrapTypeInList(evaluator: TypeEvaluator, node: ParseNode, type: Type): const listObjectType = convertToInstance(evaluator.getBuiltInObject(node, 'list')); if (listObjectType && isClassInstance(listObjectType)) { + // If the type is a union that contains an Any or Unknown, eliminate the other + // types before wrapping it in a list. + type = containsAnyOrUnknown(type, /* recurse */ false) ?? type; + return ClassType.cloneForSpecialization(listObjectType, [type], /* isTypeArgumentExplicit */ true); } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 4743ecade..abb13df2e 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -17627,19 +17627,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - // Determine if the pre-narrowed subject type contains an object. - let subjectIsObject = false; - doForEachSubtype(makeTopLevelTypeVarsConcrete(subjectType), (subtype) => { - if (isClassInstance(subtype) && ClassType.isBuiltIn(subtype, 'object')) { - subjectIsObject = true; - } - }); - const narrowedSubjectType = assignTypeToPatternTargets( evaluatorInterface, subjectType, !!subjectTypeResult.isIncomplete, - subjectIsObject, node.pattern ); diff --git a/packages/pyright-internal/src/tests/samples/matchLiteral1.py b/packages/pyright-internal/src/tests/samples/matchLiteral1.py index 356e76949..0979a3ccd 100644 --- a/packages/pyright-internal/src/tests/samples/matchLiteral1.py +++ b/packages/pyright-internal/src/tests/samples/matchLiteral1.py @@ -7,22 +7,22 @@ def test_unknown(value_to_match): case 3 as a1, -3 as a2: reveal_type(a1, expected_text="Literal[3]") reveal_type(a2, expected_text="Literal[-3]") - reveal_type(value_to_match, expected_text="Unknown") + reveal_type(value_to_match, expected_text="Sequence[int]") case 3j as b1, -3 + 5j as b2: reveal_type(b1, expected_text="complex") reveal_type(b2, expected_text="complex") - reveal_type(value_to_match, expected_text="Unknown") + reveal_type(value_to_match, expected_text="Sequence[complex]") case "hi" as c1, None as c2: reveal_type(c1, expected_text="Literal['hi']") reveal_type(c2, expected_text="None") - reveal_type(value_to_match, expected_text="Unknown") + reveal_type(value_to_match, expected_text="Sequence[str | None]") case True as d1, False as d2: reveal_type(d1, expected_text="Literal[True]") reveal_type(d2, expected_text="Literal[False]") - reveal_type(value_to_match, expected_text="Unknown") + reveal_type(value_to_match, expected_text="Sequence[bool]") def test_tuple(value_to_match: tuple[int | float | str | complex, ...]): diff --git a/packages/pyright-internal/src/tests/samples/matchSequence1.py b/packages/pyright-internal/src/tests/samples/matchSequence1.py index 4cae04a1d..388b063da 100644 --- a/packages/pyright-internal/src/tests/samples/matchSequence1.py +++ b/packages/pyright-internal/src/tests/samples/matchSequence1.py @@ -1,7 +1,7 @@ # This sample tests type checking for match statements (as # described in PEP 634) that contain sequence patterns. -from typing import Any, Generic, List, Literal, Protocol, Tuple, TypeVar, Union +from typing import Any, Generic, Iterator, List, Literal, Protocol, Reversible, Sequence, Tuple, TypeVar, Union def test_unknown(value_to_match): match value_to_match: @@ -40,6 +40,28 @@ def test_any(value_to_match: Any): reveal_type(b1, expected_text="Any") +def test_reversible(value_to_match: Reversible[int]): + match value_to_match: + case [*a1]: + reveal_type(a1, expected_text="list[int]") + case b1: + reveal_type(b1, expected_text="Reversible[int]") + + +_T_co = TypeVar("_T_co", covariant=True) + +class SeqProto(Protocol[_T_co]): + def __reversed__(self) -> Iterator[_T_co]: ... + +def test_protocol(value_to_match: SeqProto[str]): + match value_to_match: + case [*a1]: + reveal_type(a1, expected_text="list[str]") + case b1: + reveal_type(b1, expected_text="SeqProto[str]") + + + def test_list(value_to_match: List[str]): match value_to_match: case a1, a2: @@ -159,39 +181,39 @@ def test_union(value_to_match: Union[Tuple[complex, complex], Tuple[int, str, fl reveal_type(a2, expected_text="str | float | Any") reveal_type(a3, expected_text="float | str | Any") reveal_type(a4, expected_text="complex | str | float | Any") - reveal_type(value_to_match, expected_text="tuple[int, str, float, complex] | List[str] | tuple[float, float, float, float] | Any") + reveal_type(value_to_match, expected_text="tuple[int, str, float, complex] | List[str] | tuple[float, float, float, float] | Sequence[Any]") case *b1, b2 if value_to_match[0] == 0: reveal_type(b1, expected_text="list[complex] | list[int | str | float] | list[str] | list[float] | list[Any]") reveal_type(b2, expected_text="complex | str | float | Any") - reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") + reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Sequence[Any]") case c1, *c2 if value_to_match[0] == 0: reveal_type(c1, expected_text="complex | int | str | float | Any") reveal_type(c2, expected_text="list[complex] | list[str | float | complex] | list[str] | list[float] | list[Any]") - reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") + reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Sequence[Any]") case d1, *d2, d3 if value_to_match[0] == 0: reveal_type(d1, expected_text="complex | int | str | float | Any") reveal_type(d2, expected_text="list[str | float] | list[str] | list[float] | list[Any]") reveal_type(d3, expected_text="complex | str | float | Any") - reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Any") + reveal_type(value_to_match, expected_text="Tuple[complex, complex] | Tuple[int, str, float, complex] | List[str] | Tuple[float, ...] | Sequence[Any]") case 3, e1: reveal_type(e1, expected_text="complex | float | Any") - reveal_type(value_to_match, expected_text="tuple[Literal[3], complex] | tuple[Literal[3], float] | Any") + reveal_type(value_to_match, expected_text="tuple[Literal[3], complex] | tuple[Literal[3], float] | Sequence[Any]") case "hi", *f1: reveal_type(f1, expected_text="list[str] | list[Any]") - reveal_type(value_to_match, expected_text="List[str] | Any") + reveal_type(value_to_match, expected_text="List[str] | Sequence[Any]") case *g1, 3j: reveal_type(g1, expected_text="list[complex] | list[int | str | float] | list[Any]") - reveal_type(value_to_match, expected_text="tuple[complex, complex] | Tuple[int, str, float, complex] | Any") + reveal_type(value_to_match, expected_text="tuple[complex, complex] | Tuple[int, str, float, complex] | Sequence[Any]") case *h1, "hi": reveal_type(h1, expected_text="list[str] | list[Any]") - reveal_type(value_to_match, expected_text="List[str] | Any") + reveal_type(value_to_match, expected_text="List[str] | Sequence[Any]") class SupportsLessThan(Protocol): @@ -238,56 +260,73 @@ def test_exceptions(seq: Union[str, bytes, bytearray]): reveal_type(y, expected_text="Never") return seq -def test_object(seq: object): +def test_object1(seq: object): match seq: case (a1, a2) as a3: - reveal_type(a1, expected_text="object") - reveal_type(a2, expected_text="object") - reveal_type(a3, expected_text="Sequence[object]") - reveal_type(seq, expected_text="Sequence[object]") + reveal_type(a1, expected_text="Unknown") + reveal_type(a2, expected_text="Unknown") + reveal_type(a3, expected_text="Sequence[Unknown]") + reveal_type(seq, expected_text="Sequence[Unknown]") case (*b1, b2) as b3: - reveal_type(b1, expected_text="list[object]") - reveal_type(b2, expected_text="object") - reveal_type(b3, expected_text="Sequence[object]") - reveal_type(seq, expected_text="Sequence[object]") + reveal_type(b1, expected_text="list[Unknown]") + reveal_type(b2, expected_text="Unknown") + reveal_type(b3, expected_text="Sequence[Unknown]") + reveal_type(seq, expected_text="Sequence[Unknown]") case (c1, *c2) as c3: - reveal_type(c1, expected_text="object") - reveal_type(c2, expected_text="list[object]") - reveal_type(c3, expected_text="Sequence[object]") - reveal_type(seq, expected_text="Sequence[object]") + reveal_type(c1, expected_text="Unknown") + reveal_type(c2, expected_text="list[Unknown]") + reveal_type(c3, expected_text="Sequence[Unknown]") + reveal_type(seq, expected_text="Sequence[Unknown]") case (d1, *d2, d3) as d4: - reveal_type(d1, expected_text="object") - reveal_type(d2, expected_text="list[object]") - reveal_type(d3, expected_text="object") - reveal_type(d4, expected_text="Sequence[object]") - reveal_type(seq, expected_text="Sequence[object]") + reveal_type(d1, expected_text="Unknown") + reveal_type(d2, expected_text="list[Unknown]") + reveal_type(d3, expected_text="Unknown") + reveal_type(d4, expected_text="Sequence[Unknown]") + reveal_type(seq, expected_text="Sequence[Unknown]") case (3, *e1) as e2: - reveal_type(e1, expected_text="list[object]") - reveal_type(e2, expected_text="Sequence[object | int]") - reveal_type(seq, expected_text="Sequence[object | int]") + reveal_type(e1, expected_text="list[Unknown]") + reveal_type(e2, expected_text="Sequence[Unknown]") + reveal_type(seq, expected_text="Sequence[Unknown]") case ("hi", *f1) as f2: - reveal_type(f1, expected_text="list[object]") - reveal_type(f2, expected_text="Sequence[object | str]") - reveal_type(seq, expected_text="Sequence[object | str]") + reveal_type(f1, expected_text="list[Unknown]") + reveal_type(f2, expected_text="Sequence[Unknown]") + reveal_type(seq, expected_text="Sequence[Unknown]") case (*g1, "hi") as g2: - reveal_type(g1, expected_text="list[object]") - reveal_type(g2, expected_text="Sequence[object | str]") - reveal_type(seq, expected_text="Sequence[object | str]") + reveal_type(g1, expected_text="list[Unknown]") + reveal_type(g2, expected_text="Sequence[Unknown]") + reveal_type(seq, expected_text="Sequence[Unknown]") case [1, "hi", True] as h1: reveal_type(h1, expected_text="Sequence[int | str | bool]") reveal_type(seq, expected_text="Sequence[int | str | bool]") case [1, i1] as i2: - reveal_type(i1, expected_text="object") - reveal_type(i2, expected_text="Sequence[object | int]") - reveal_type(seq, expected_text="Sequence[object | int]") + reveal_type(i1, expected_text="Unknown") + reveal_type(i2, expected_text="Sequence[Unknown]") + reveal_type(seq, expected_text="Sequence[Unknown]") + +def test_object2(value_to_match: object): + match value_to_match: + case [*a1]: + reveal_type(a1, expected_text="list[Unknown]") + case b1: + reveal_type(b1, expected_text="object") + + +def test_sequence(value_to_match: Sequence[Any]): + match value_to_match: + case [*a1]: + reveal_type(a1, expected_text="list[Any]") + case b1: + reveal_type(b1, expected_text="Never") + + _T = TypeVar('_T') From 92f4e6bcf34533dd0d3588e5c82a9d10af43d436 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Jul 2023 05:16:51 -0700 Subject: [PATCH 395/525] Modified `is None` type guard logic to eliminate `Any` or `Unknown` in the positive narrowing case. This addresses #5508. (#5509) Co-authored-by: Eric Traut --- .../src/analyzer/typeGuards.ts | 17 ++++++++++- .../src/tests/samples/typeNarrowingIsNone1.py | 28 ++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 579a2f63c..57d4cfd04 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -997,7 +997,9 @@ function narrowTypeForIsNone(evaluator: TypeEvaluator, type: Type, isPositiveTes return transformPossibleRecursiveTypeAlias(subtype); }); - return evaluator.mapSubtypesExpandTypeVars( + let resultIncludesNoneSubtype = false; + + const result = evaluator.mapSubtypesExpandTypeVars( expandedType, /* conditionFilter */ undefined, (subtype, unexpandedSubtype) => { @@ -1017,6 +1019,7 @@ function narrowTypeForIsNone(evaluator: TypeEvaluator, type: Type, isPositiveTes // See if it's a match for object. if (isClassInstance(subtype) && ClassType.isBuiltIn(subtype, 'object')) { + resultIncludesNoneSubtype = true; return isPositiveTest ? addConditionToType(NoneType.createInstance(), subtype.condition) : adjustedSubtype; @@ -1024,12 +1027,24 @@ function narrowTypeForIsNone(evaluator: TypeEvaluator, type: Type, isPositiveTes // See if it's a match for None. if (isNoneInstance(subtype) === isPositiveTest) { + resultIncludesNoneSubtype = true; return subtype; } return undefined; } ); + + // If this is a positive test and the result is a union that includes None, + // we can eliminate all the non-None subtypes include Any or Unknown. If some + // of the subtypes are None types with conditions, retain those. + if (isPositiveTest && resultIncludesNoneSubtype) { + return mapSubtypes(result, (subtype) => { + return isNoneInstance(subtype) ? subtype : undefined; + }); + } + + return result; } // Handle type narrowing for expressions of the form "x is ..." and "x is not ...". diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsNone1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsNone1.py index 12b382ccd..183b13c87 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsNone1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsNone1.py @@ -4,7 +4,7 @@ # pyright: strict, reportUnusedVariable=false -from typing import TypeVar +from typing import Any, Literal, Protocol, TypeVar def func1(x: int | None): @@ -54,3 +54,29 @@ def func4(x: _T2) -> _T2: else: reveal_type(x, expected_text="_T2@func4") return x + + +def func5(x: Any | None): + if x is None: + reveal_type(x, expected_text="None") + else: + reveal_type(x, expected_text="Any") + + +def func6(x: Any | object | None): + if x is None: + reveal_type(x, expected_text="None") + else: + reveal_type(x, expected_text="Any | object") + + +class NoneProto(Protocol): + def __bool__(self) -> Literal[False]: + ... + + +def func7(x: NoneProto | None): + if x is None: + reveal_type(x, expected_text="None") + else: + reveal_type(x, expected_text="NoneProto") From 132e7edeaba54eb3d25b0034ca975a46fd22b8b0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Jul 2023 06:32:59 -0700 Subject: [PATCH 396/525] Fixed bug that resulted in a false positive `reportOverlappingOverload` error when overload contained the use of a constrained TypeVar. This addresses #5511. (#5512) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/checker.ts | 4 +--- .../src/tests/samples/overload5.py | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index bacc304a9..d20cd95de 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -2500,9 +2500,7 @@ export class Checker extends ParseTreeWalker { /* diag */ undefined, new TypeVarContext(getTypeVarScopeId(functionType)), /* srcTypeVarContext */ undefined, - AssignTypeFlags.SkipSolveTypeVars | - AssignTypeFlags.SkipFunctionReturnTypeCheck | - AssignTypeFlags.OverloadOverlapCheck + AssignTypeFlags.SkipFunctionReturnTypeCheck | AssignTypeFlags.OverloadOverlapCheck ); } diff --git a/packages/pyright-internal/src/tests/samples/overload5.py b/packages/pyright-internal/src/tests/samples/overload5.py index e7b44a249..1675995e6 100644 --- a/packages/pyright-internal/src/tests/samples/overload5.py +++ b/packages/pyright-internal/src/tests/samples/overload5.py @@ -1,7 +1,7 @@ # This sample tests the type checker's detection of overlapping # overload declarations. -from typing import Any, Generic, Literal, Protocol, Sequence, TypeVar, overload +from typing import Any, AnyStr, Generic, Literal, Protocol, Sequence, TypeVar, overload @overload @@ -348,3 +348,20 @@ def func19(a: Any, b: DProto1) -> Any: def func19(a: Any, b: Any) -> Any: return a + b + + +AllStr = bytes | str + + +@overload +def func20(choices: AnyStr) -> AnyStr: + ... + + +@overload +def func20(choices: AllStr) -> AllStr: + ... + + +def func20(choices: AllStr) -> AllStr: + ... From 2a096860c11dff7bbda92f92efb0216e2580c2c6 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Jul 2023 09:23:42 -0700 Subject: [PATCH 397/525] Reverted the change for #5446 because it's causing false positive errors. --- .../src/analyzer/typeEvaluator.ts | 9 --- .../src/tests/samples/hashability2.py | 55 ------------------- .../src/tests/samples/hashability3.py | 21 ------- .../src/tests/typeEvaluator5.test.ts | 10 ---- 4 files changed, 95 deletions(-) delete mode 100644 packages/pyright-internal/src/tests/samples/hashability2.py delete mode 100644 packages/pyright-internal/src/tests/samples/hashability3.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index abb13df2e..bc97c45f2 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -15563,15 +15563,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ? new Map(innerScope.symbolTable) : new Map(); - // Determine whether the class should inherit __hash__. If a class defines - // __eq__ but doesn't define __hash__ then __hash__ is set to None. - if (classType.details.fields.has('__eq__') && !classType.details.fields.has('__hash__')) { - classType.details.fields.set( - '__hash__', - Symbol.createWithType(SymbolFlags.ClassMember | SymbolFlags.ClassVar, NoneType.createInstance()) - ); - } - // Determine whether the class's instance variables are constrained // to those defined by __slots__. We need to do this prior to dataclass // processing because dataclasses can implicitly add to the slots diff --git a/packages/pyright-internal/src/tests/samples/hashability2.py b/packages/pyright-internal/src/tests/samples/hashability2.py deleted file mode 100644 index 3c8c1a1ec..000000000 --- a/packages/pyright-internal/src/tests/samples/hashability2.py +++ /dev/null @@ -1,55 +0,0 @@ -# This sample tests that unhashable user classes are detected as unhashable. - - -class A: - ... - - -s1 = {A()} -d1 = {A(): 100} - - -class B: - def __eq__(self, other): - ... - - -# Both of these should generate an error because a class that -# defines __eq__ but not __hash__ is not hashable. -s2 = {B()} -d2 = {B(): 100} - - -class C: - __hash__: None = None - - -class D(B, C): - ... - - -# Both of these should generate an error because B is unhashable. -s3 = {UnhashableSub()} -d3 = {UnhashableSub(): 100} - - -class E: - def __hash__(self): - ... - - -class F(D, E): - ... - - -# Both of these should generate an error because D is unhashable. -s4 = {F()} -d4 = {F(): 100} - - -class G(E, D): - ... - - -s5 = {G()} -d5 = {G(): 100} diff --git a/packages/pyright-internal/src/tests/samples/hashability3.py b/packages/pyright-internal/src/tests/samples/hashability3.py deleted file mode 100644 index cc69ed854..000000000 --- a/packages/pyright-internal/src/tests/samples/hashability3.py +++ /dev/null @@ -1,21 +0,0 @@ -# This sample tests that __hash__ is set to None if -# __hash__ isn't set but __eq__ is. - - -class A: - ... - - -A().__hash__() - - -class B: - def __eq__(self, value: object) -> bool: - ... - - ... - - -# This should generate an error because __hash__ is implicitly set to None -# for a class that defines __eq__ but not __hash__. -B().__hash__() diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 1eb1fb629..b7682e275 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -145,16 +145,6 @@ test('Hashability1', () => { TestUtils.validateResults(analysisResults, 10); }); -test('Hashability2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['hashability2.py']); - TestUtils.validateResults(analysisResults, 6); -}); - -test('Hashability3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['hashability3.py']); - TestUtils.validateResults(analysisResults, 1); -}); - test('Override1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['override1.py']); TestUtils.validateResults(analysisResults, 3); From cc924295aedc9c757e1a460bb57014ac554b2930 Mon Sep 17 00:00:00 2001 From: Adam Pauls Date: Sat, 15 Jul 2023 17:01:00 -0700 Subject: [PATCH 398/525] Add fsevents as optional dependency to public package (#5503) --- packages/pyright/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/pyright/package.json b/packages/pyright/package.json index d3ec097e2..05f2b1733 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -22,6 +22,9 @@ "prepack": "npm run clean && shx cp ../../README.md . && shx cp ../../LICENSE.txt . && npm run build", "webpack": "webpack --mode development --progress" }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, "devDependencies": { "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", From 88bff7e67f8f70af04f93466886e65ff70ea3a27 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 15 Jul 2023 17:03:23 -0700 Subject: [PATCH 399/525] Added fsevents to lock file. --- packages/pyright/package-lock.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index dc4863f47..6ff2d3220 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -25,6 +25,9 @@ }, "engines": { "node": ">=12.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, "node_modules/@discoveryjs/json-ext": { @@ -1335,6 +1338,19 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -3487,6 +3503,12 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", From bfe2128ee9e4c675b36db10c4a7643ac3a2c72de Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 16 Jul 2023 15:18:12 -0700 Subject: [PATCH 400/525] Improved the error message for incompatible type arguments. Many users are confused about variance (in particular invariant type parameters). This change should help eliminate some of that confusion. This addresses #4583. --- .../pyright-internal/src/analyzer/checker.ts | 64 ++++----- .../src/analyzer/typeEvaluator.ts | 130 +++++++----------- .../src/localization/localize.ts | 12 +- .../src/localization/package.nls.en-us.json | 6 +- 4 files changed, 82 insertions(+), 130 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index d20cd95de..5b4a2078c 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -4317,38 +4317,16 @@ export class Checker extends ParseTreeWalker { let declaredReturnType = functionType.details.declaredReturnType; if (declaredReturnType) { - if (isUnknown(declaredReturnType)) { - this._evaluator.addDiagnostic( - this._fileInfo.diagnosticRuleSet.reportUnknownVariableType, - DiagnosticRule.reportUnknownVariableType, - Localizer.Diagnostic.declaredReturnTypeUnknown(), - returnAnnotation - ); - } else if (isPartlyUnknown(declaredReturnType)) { - this._evaluator.addDiagnostic( - this._fileInfo.diagnosticRuleSet.reportUnknownVariableType, - DiagnosticRule.reportUnknownVariableType, - Localizer.Diagnostic.declaredReturnTypePartiallyUnknown().format({ - returnType: this._evaluator.printType(declaredReturnType, { expandTypeAlias: true }), - }), - returnAnnotation - ); - } + this._reportUnknownReturnResult(node, declaredReturnType); - const diag = new DiagnosticAddendum(); if ( isTypeVar(declaredReturnType) && declaredReturnType.details.declaredVariance === Variance.Contravariant ) { - diag.addMessage( - Localizer.DiagnosticAddendum.typeVarIsContravariant().format({ - name: TypeVarType.getReadableName(declaredReturnType), - }) - ); this._evaluator.addDiagnostic( this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.returnTypeContravariant() + diag.getString(), + Localizer.Diagnostic.returnTypeContravariant(), returnAnnotation ); } @@ -4400,23 +4378,27 @@ export class Checker extends ParseTreeWalker { } } else { const inferredReturnType = this._evaluator.getFunctionInferredReturnType(functionType); - if (isUnknown(inferredReturnType)) { - this._evaluator.addDiagnostic( - this._fileInfo.diagnosticRuleSet.reportUnknownParameterType, - DiagnosticRule.reportUnknownParameterType, - Localizer.Diagnostic.returnTypeUnknown(), - node.name - ); - } else if (isPartlyUnknown(inferredReturnType)) { - this._evaluator.addDiagnostic( - this._fileInfo.diagnosticRuleSet.reportUnknownParameterType, - DiagnosticRule.reportUnknownParameterType, - Localizer.Diagnostic.returnTypePartiallyUnknown().format({ - returnType: this._evaluator.printType(inferredReturnType, { expandTypeAlias: true }), - }), - node.name - ); - } + this._reportUnknownReturnResult(node, inferredReturnType); + } + } + + private _reportUnknownReturnResult(node: FunctionNode, returnType: Type) { + if (isUnknown(returnType)) { + this._evaluator.addDiagnostic( + this._fileInfo.diagnosticRuleSet.reportUnknownParameterType, + DiagnosticRule.reportUnknownParameterType, + Localizer.Diagnostic.returnTypeUnknown(), + node.name + ); + } else if (isPartlyUnknown(returnType)) { + this._evaluator.addDiagnostic( + this._fileInfo.diagnosticRuleSet.reportUnknownParameterType, + DiagnosticRule.reportUnknownParameterType, + Localizer.Diagnostic.returnTypePartiallyUnknown().format({ + returnType: this._evaluator.printType(returnType, { expandTypeAlias: true }), + }), + node.name + ); } } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bc97c45f2..4960c0e83 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21256,98 +21256,62 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let isCompatible = true; - if (srcTypeArgs) { - for (let srcArgIndex = 0; srcArgIndex < srcTypeArgs.length; srcArgIndex++) { - const srcTypeArg = srcTypeArgs[srcArgIndex]; - - // In most cases, the number of type args should match the number - // of type arguments, but there are a few special cases where this - // isn't true (e.g. assigning a Tuple[X, Y, Z] to a tuple[W]). - const destArgIndex = srcArgIndex >= destTypeArgs.length ? destTypeArgs.length - 1 : srcArgIndex; - const destTypeArg = destArgIndex >= 0 ? destTypeArgs[destArgIndex] : UnknownType.create(); - const destTypeParam = destArgIndex < destTypeParams.length ? destTypeParams[destArgIndex] : undefined; - const assignmentDiag = new DiagnosticAddendum(); - - if (!destTypeParam || TypeVarType.getVariance(destTypeParam) === Variance.Covariant) { - if ( - !assignType( - destTypeArg, - srcTypeArg, - assignmentDiag, - destTypeVarContext, - srcTypeVarContext, - flags | AssignTypeFlags.RetainLiteralsForTypeVar, - recursionCount - ) - ) { - if (diag) { - if (destTypeParam) { - const childDiag = diag.createAddendum(); - childDiag.addMessage( - Localizer.DiagnosticAddendum.typeVarIsCovariant().format({ - name: TypeVarType.getReadableName(destTypeParam), - }) - ); - childDiag.addAddendum(assignmentDiag); - } else { - diag.addAddendum(assignmentDiag); - } - } - isCompatible = false; - } - } else if (TypeVarType.getVariance(destTypeParam) === Variance.Contravariant) { - if ( - !assignType( - srcTypeArg, - destTypeArg, - assignmentDiag, - srcTypeVarContext, - destTypeVarContext, - (flags ^ AssignTypeFlags.ReverseTypeVarMatching) | AssignTypeFlags.RetainLiteralsForTypeVar, - recursionCount - ) - ) { - if (diag) { + srcTypeArgs?.forEach((srcTypeArg, srcArgIndex) => { + // In most cases, the number of type args should match the number + // of type arguments, but there are a few special cases where this + // isn't true (e.g. assigning a Tuple[X, Y, Z] to a tuple[W]). + const destArgIndex = srcArgIndex >= destTypeArgs.length ? destTypeArgs.length - 1 : srcArgIndex; + const destTypeArg = destArgIndex >= 0 ? destTypeArgs[destArgIndex] : UnknownType.create(); + const destTypeParam = destArgIndex < destTypeParams.length ? destTypeParams[destArgIndex] : undefined; + const assignmentDiag = new DiagnosticAddendum(); + const variance = destTypeParam ? TypeVarType.getVariance(destTypeParam) : Variance.Covariant; + let effectiveFlags: AssignTypeFlags; + let errorSource: () => ParameterizedString<{ name: string; sourceType: string; destType: string }>; + + if (variance === Variance.Covariant) { + effectiveFlags = flags | AssignTypeFlags.RetainLiteralsForTypeVar; + errorSource = Localizer.DiagnosticAddendum.typeVarIsCovariant; + } else if (variance === Variance.Contravariant) { + effectiveFlags = + (flags ^ AssignTypeFlags.ReverseTypeVarMatching) | AssignTypeFlags.RetainLiteralsForTypeVar; + errorSource = Localizer.DiagnosticAddendum.typeVarIsContravariant; + } else { + effectiveFlags = flags | AssignTypeFlags.EnforceInvariance | AssignTypeFlags.RetainLiteralsForTypeVar; + errorSource = Localizer.DiagnosticAddendum.typeVarIsInvariant; + } + + if ( + !assignType( + variance === Variance.Contravariant ? srcTypeArg : destTypeArg, + variance === Variance.Contravariant ? destTypeArg : srcTypeArg, + assignmentDiag, + variance === Variance.Contravariant ? srcTypeVarContext : destTypeVarContext, + variance === Variance.Contravariant ? destTypeVarContext : srcTypeVarContext, + effectiveFlags, + recursionCount + ) + ) { + // Don't report errors with type variables in "pseudo-random" + // classes since these type variables are not real. + if (!ClassType.isPseudoGenericClass(destType)) { + if (diag) { + if (destTypeParam) { const childDiag = diag.createAddendum(); + childDiag.addMessage( - Localizer.DiagnosticAddendum.typeVarIsContravariant().format({ + errorSource().format({ name: TypeVarType.getReadableName(destTypeParam), + ...printSrcDestTypes(srcTypeArg, destTypeArg), }) ); - childDiag.addAddendum(assignmentDiag); - } - isCompatible = false; - } - } else { - if ( - !assignType( - destTypeArg, - srcTypeArg, - assignmentDiag, - destTypeVarContext, - srcTypeVarContext, - flags | AssignTypeFlags.EnforceInvariance | AssignTypeFlags.RetainLiteralsForTypeVar, - recursionCount - ) - ) { - // Don't report errors with type variables in "pseudo-random" - // classes since these type variables are not real. - if (!ClassType.isPseudoGenericClass(destType)) { - if (diag) { - const childDiag = diag.createAddendum(); - childDiag.addMessage( - Localizer.DiagnosticAddendum.typeVarIsInvariant().format({ - name: TypeVarType.getReadableName(destTypeParam), - }) - ); - childDiag.addAddendum(assignmentDiag); - } - isCompatible = false; + } else { + diag.addAddendum(assignmentDiag); } } + isCompatible = false; } } - } + }); return isCompatible; } diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index d64ecc3da..3dae8d3d0 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -1367,11 +1367,17 @@ export namespace Localizer { export const typeVarDefaultOutOfScope = () => new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.typeVarDefaultOutOfScope')); export const typeVarIsContravariant = () => - new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.typeVarIsContravariant')); + new ParameterizedString<{ name: string; sourceType: string; destType: string }>( + getRawString('DiagnosticAddendum.typeVarIsContravariant') + ); export const typeVarIsCovariant = () => - new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.typeVarIsCovariant')); + new ParameterizedString<{ name: string; sourceType: string; destType: string }>( + getRawString('DiagnosticAddendum.typeVarIsCovariant') + ); export const typeVarIsInvariant = () => - new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.typeVarIsInvariant')); + new ParameterizedString<{ name: string; sourceType: string; destType: string }>( + getRawString('DiagnosticAddendum.typeVarIsInvariant') + ); export const typeVarsMissing = () => new ParameterizedString<{ names: string }>(getRawString('DiagnosticAddendum.typeVarsMissing')); export const typeVarNotAllowed = () => getRawString('DiagnosticAddendum.typeVarNotAllowed'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 561feb3c4..53df2c99b 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -688,9 +688,9 @@ "typeOfSymbol": "Type of \"{name}\" is \"{type}\"", "typeUnsupported": "Type \"{type}\" is unsupported", "typeVarDefaultOutOfScope": "Type variable \"{name}\" is not in scope", - "typeVarIsContravariant": "TypeVar \"{name}\" is contravariant", - "typeVarIsCovariant": "TypeVar \"{name}\" is covariant", - "typeVarIsInvariant": "TypeVar \"{name}\" is invariant", + "typeVarIsContravariant": "Type parameter \"{name}\" is contravariant, but \"{sourceType}\" is not a supertype of \"{destType}\"", + "typeVarIsCovariant": "Type parameter \"{name}\" is covariant, but \"{sourceType}\" is not a subtype of \"{destType}\"", + "typeVarIsInvariant": "Type parameter \"{name}\" is invariant, but \"{sourceType}\" is not the same as \"{destType}\"", "typeVarNotAllowed": "TypeVar or generic type with type arguments not allowed", "typeVarUnsolvableRemedy": "Provide an overload that specifies the return type when the argument is not supplied", "typeVarsMissing": "Missing type variables: {names}", From 7fcdc9232098a929b0235277ee359e945f05fc60 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 16 Jul 2023 17:42:06 -0700 Subject: [PATCH 401/525] Fixed a bug that resulted in a false negative when assigning a `T | None` type to `object | None` in an invariant context. This same bug led to issues with the validation of TypeVar variance within a Protocol. This addresses https://github.com/microsoft/pylance-release/issues/4613. (#5518) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 70 ++++++++++--------- .../src/tests/samples/protocol17.py | 4 ++ 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 4960c0e83..a19a37e46 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -20904,6 +20904,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } }); + if (!isAssignable) { + return false; + } + // Now handle generic base classes. destType.details.baseClasses.forEach((baseClass) => { if ( @@ -21652,42 +21656,40 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (isUnion(destType)) { + // If both the source and dest are unions, use assignFromUnionType which has + // special-case logic to handle this case. if (isUnion(srcType)) { - if ( - assignFromUnionType( - destType, - srcType, - /* diag */ undefined, - destTypeVarContext, - srcTypeVarContext, - originalFlags, - recursionCount - ) - ) { - return true; + return assignFromUnionType( + destType, + srcType, + /* diag */ undefined, + destTypeVarContext, + srcTypeVarContext, + originalFlags, + recursionCount + ); + } + + const clonedDestTypeVarContext = destTypeVarContext?.clone(); + const clonedSrcTypeVarContext = srcTypeVarContext?.clone(); + if ( + assignToUnionType( + destType, + srcType, + /* diag */ undefined, + clonedDestTypeVarContext, + clonedSrcTypeVarContext, + originalFlags, + recursionCount + ) + ) { + if (destTypeVarContext && clonedDestTypeVarContext) { + destTypeVarContext.copyFromClone(clonedDestTypeVarContext); } - } else { - const clonedDestTypeVarContext = destTypeVarContext?.clone(); - const clonedSrcTypeVarContext = srcTypeVarContext?.clone(); - if ( - assignToUnionType( - destType, - srcType, - /* diag */ undefined, - clonedDestTypeVarContext, - clonedSrcTypeVarContext, - originalFlags, - recursionCount - ) - ) { - if (destTypeVarContext && clonedDestTypeVarContext) { - destTypeVarContext.copyFromClone(clonedDestTypeVarContext); - } - if (srcTypeVarContext && clonedSrcTypeVarContext) { - srcTypeVarContext.copyFromClone(clonedSrcTypeVarContext); - } - return true; + if (srcTypeVarContext && clonedSrcTypeVarContext) { + srcTypeVarContext.copyFromClone(clonedSrcTypeVarContext); } + return true; } } @@ -22429,7 +22431,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions !isSubtypeSubsumed && !assignType( destType, - concreteSubtype, + subtype, diag?.createAddendum(), destTypeVarContext, srcTypeVarContext, diff --git a/packages/pyright-internal/src/tests/samples/protocol17.py b/packages/pyright-internal/src/tests/samples/protocol17.py index e18936697..db4bf874b 100644 --- a/packages/pyright-internal/src/tests/samples/protocol17.py +++ b/packages/pyright-internal/src/tests/samples/protocol17.py @@ -97,3 +97,7 @@ def prop1(self) -> _T1_co: class Protocol10(Protocol[_T1_co]): def m1(self) -> type[_T1_co]: ... + + +class Protocol11(Protocol[_T1]): + x: _T1 | None From 8e8b6c31a27d37b903f19b7fa4ae2f169099c5ec Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 16 Jul 2023 22:25:47 -0700 Subject: [PATCH 402/525] Fixed recent regression that resulted in a false positive error when using bidirectional type inference for an assignment to a class-scoped variable where the annotated type is a descriptor. This addresses #5455. (#5519) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 5 +++- .../src/tests/samples/descriptor3.py | 25 +++++++++++++++++++ .../src/tests/typeEvaluator1.test.ts | 6 +++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/descriptor3.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index a19a37e46..9f66e8773 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -2170,6 +2170,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let classOrObjectBase: ClassType | undefined; let memberAccessClass: Type | undefined; let bindFunction = true; + let useDescriptorSetterType = false; switch (expression.nodeType) { case ParseNodeType.Name: { @@ -2228,6 +2229,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (classMemberInfo?.isInstanceMember) { bindFunction = false; } + + useDescriptorSetterType = true; } else if (isInstantiableClass(baseType)) { classMemberInfo = lookUpClassMember( baseType, @@ -2291,7 +2294,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let declaredType = getDeclaredTypeOfSymbol(symbol)?.type; if (declaredType) { // If it's a descriptor, we need to get the setter type. - if (isClassInstance(declaredType)) { + if (useDescriptorSetterType && isClassInstance(declaredType)) { const setterInfo = lookUpClassMember(declaredType, '__set__'); const setter = setterInfo ? getTypeOfMember(setterInfo) : undefined; if (setterInfo && setter && isFunction(setter) && setter.details.parameters.length >= 3) { diff --git a/packages/pyright-internal/src/tests/samples/descriptor3.py b/packages/pyright-internal/src/tests/samples/descriptor3.py new file mode 100644 index 000000000..08dd3f3bd --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/descriptor3.py @@ -0,0 +1,25 @@ +# This sample tests that bidirectional type inference works when +# assigning to a class-scoped variable that is annotated with a +# descriptor. The setter type should not be used in this case. + + +from typing import Callable, Generic, TypeVar + + +T = TypeVar("T") + + +class Desc1(Generic[T]): + def __get__(self, instance: object | None, owner: type | None = None) -> list[T]: + ... + + def __set__(self, instance: object, value: list[T]) -> None: + ... + + +def func1(factory: Callable[[], list[T]]) -> Desc1[T]: + ... + + +class ClassA: + not_working: Desc1[int] = func1(list) diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 48818b696..41b7f5712 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1482,6 +1482,12 @@ test('Descriptor2', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Descriptor3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['descriptor3.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Partial1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['partial1.py']); From 6169e0fb3cc966e530578b98fe24a395ed67e8e4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 16 Jul 2023 23:59:10 -0700 Subject: [PATCH 403/525] Improved checks for illegal use of a variable within a type expression. Added enforcement of these same rules for the first argument to a `cast` call. This addresses https://github.com/microsoft/pyright/issues/5429. (#5520) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 13 ++++--- .../src/analyzer/typeEvaluatorTypes.ts | 1 + .../pyright-internal/src/analyzer/types.ts | 6 +++- .../src/localization/package.nls.en-us.json | 4 +-- .../src/tests/samples/annotations1.py | 36 +++++++++++++------ .../src/tests/typeEvaluator1.test.ts | 2 +- 6 files changed, 44 insertions(+), 18 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 9f66e8773..010d64d52 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -4209,7 +4209,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Verify that the name does not refer to a (non type alias) variable. if (effectiveTypeInfo.includesVariableDecl && !type.typeAliasInfo) { let isAllowedTypeForVariable = isTypeVar(type) || isTypeAliasPlaceholder(type); - if (isClass(type) && !type.includeSubclasses) { + + if (isClass(type) && !type.includeSubclasses && !symbol.hasTypedDeclarations()) { // This check exempts class types that are created by calling // NewType, NamedTuple, and by invoking a metaclass directly. isAllowedTypeForVariable = true; @@ -9295,7 +9296,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Evaluates the type of the "cast" call. function evaluateCastCall(argList: FunctionArgument[], errorNode: ExpressionNode) { // Verify that the cast is necessary. - const castToType = getTypeOfArgumentExpectingType(argList[0]).type; + const castToType = getTypeOfArgumentExpectingType(argList[0], { enforceTypeAnnotationRules: true }).type; const castFromType = getTypeOfArgument(argList[1]).type; if (TypeBase.isInstantiable(castToType) && !isUnknown(castToType)) { @@ -18816,14 +18817,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // used in cases where the argument is expected to be a type // and therefore follows the normal rules of types (e.g. they // can be forward-declared in stubs, etc.). - function getTypeOfArgumentExpectingType(arg: FunctionArgument): TypeResult { + function getTypeOfArgumentExpectingType(arg: FunctionArgument, options?: ExpectedTypeOptions): TypeResult { if (arg.typeResult) { return { type: arg.typeResult.type, isIncomplete: arg.typeResult.isIncomplete }; } // If there was no defined type provided, there should always // be a value expression from which we can retrieve the type. - return getTypeOfExpressionExpectingType(arg.valueExpression!); + return getTypeOfExpressionExpectingType(arg.valueExpression!, options); } function getTypeOfExpressionExpectingType(node: ExpressionNode, options?: ExpectedTypeOptions): TypeResult { @@ -18861,6 +18862,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions flags |= EvaluatorFlags.DisallowParamSpec; } + if (options?.enforceTypeAnnotationRules) { + flags |= EvaluatorFlags.ExpectingTypeAnnotation; + } + return getTypeOfExpression(node, flags); } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 4e93f9341..3a0ec36ed 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -292,6 +292,7 @@ export interface ExpectedTypeOptions { allowParamSpec?: boolean; allowForwardReference?: boolean; allowTypeVarsWithoutScopeId?: boolean; + enforceTypeAnnotationRules?: boolean; } export interface ExpectedTypeResult { diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 7f3b9f84f..cae7e761f 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -734,7 +734,11 @@ export namespace ClassType { return type.cached.typeBaseInstantiableType as ClassType; } - return TypeBase.cloneTypeAsInstantiable(type, /* cache */ true); + const newInstance = TypeBase.cloneTypeAsInstantiable(type, /* cache */ true); + newInstance.flags &= ~TypeFlags.SpecialForm; + newInstance.includeSubclasses = true; + + return newInstance; } export function cloneForSpecialization( diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 53df2c99b..388899dfc 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -427,8 +427,8 @@ "typeAliasTypeNameMismatch": "Name of type alias must match the name of the variable to which it is assigned", "typeAliasTypeParamInvalid": "Type parameter list must be a tuple containing only TypeVar, TypeVarTuple, or ParamSpec", "typeArgListExpected": "Expected ParamSpec, ellipsis, or list of types", - "typeAnnotationCall": "Illegal type annotation: call expression not allowed", - "typeAnnotationVariable": "Illegal type annotation: variable not allowed unless it is a type alias", + "typeAnnotationCall": "Call expression not allowed in type expression", + "typeAnnotationVariable": "Variable not allowed in type expression", "typeArgListNotAllowed": "List expression not allowed for this type argument", "typeArgsExpectingNone": "Expected no type arguments for class \"{name}\"", "typeArgsMismatchOne": "Expected one type argument but received {received}", diff --git a/packages/pyright-internal/src/tests/samples/annotations1.py b/packages/pyright-internal/src/tests/samples/annotations1.py index 6f5fb65a7..c85277563 100644 --- a/packages/pyright-internal/src/tests/samples/annotations1.py +++ b/packages/pyright-internal/src/tests/samples/annotations1.py @@ -1,7 +1,7 @@ # This sample tests the handling of type annotations within a # python source file (as opposed to a stub file). -from typing import Optional, Type, Union +from typing import TypeVar, Union import uuid from datetime import datetime @@ -9,7 +9,7 @@ class ClassA: # This should generate an error because ClassA # is not yet defined at the time it's used. - def func0(self) -> Optional[ClassA]: + def func0(self) -> ClassA | None: return None @@ -20,18 +20,16 @@ def func1(self) -> ClassA: # This should generate an error because ClassC # is a forward reference, which is not allowed # in a python source file. - def func2(self) -> Optional[ClassC]: + def func2(self) -> ClassC | None: return None - def func3(self) -> "Optional[ClassC]": + def func3(self) -> "ClassC | None": return None - def func4(self) -> Optional["ClassC"]: + def func4(self) -> "ClassC | None": return None - # This should generate an error for Python versions 3.9 - # and earlier. - def func5(self) -> "Optional"[int]: + def func5(self) -> "int | None": return None @@ -100,12 +98,12 @@ def f(x: str) -> t: f("") -def func12(x: Type[int]): +def func12(x: type[int]): # These should not generate an error because they are used # in a location that is not considered a type annotation, so the # normal annotation limitations do not apply here. print(Union[x, x]) - print(Optional[x]) + print(x | None) # This should generate an error because foo isn't defined. @@ -114,3 +112,21 @@ def func12(x: Type[int]): class ClassJ: datetime: datetime + + +T = TypeVar("T") + + +def func13(x: type[T]) -> type[T]: + return x + + +v1 = func13(int) + +# This should generate an error because variables are not allowed +# in a type annotation. +v2: v1 = 1 + +# This should generate an error because variables are not allowed +# in a type annotation. +v3: list[v1] = [1] diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 41b7f5712..ce80b4731 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -878,7 +878,7 @@ test('FunctionMember2', () => { test('Annotations1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['annotations1.py']); - TestUtils.validateResults(analysisResults, 11); + TestUtils.validateResults(analysisResults, 13); }); test('Annotations2', () => { From 6a25a7bf0b5cb3721a06d0e0d6245b2ebfbf053b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 17 Jul 2023 08:01:52 -0700 Subject: [PATCH 404/525] Removed the requirement that a `TypedDict` be marked `@final` for it to be considered for type narrowing as part of a `S in D` type guard pattern. This requirement wasn't sound because TypedDict is a structural type (i.e. a protocol), so `@final` doesn't have any real meaning. --- docs/type-concepts-advanced.md | 2 +- .../pyright-internal/src/analyzer/typeGuards.ts | 6 +----- .../tests/samples/typeNarrowingTypedDict1.py | 17 +---------------- 3 files changed, 3 insertions(+), 22 deletions(-) diff --git a/docs/type-concepts-advanced.md b/docs/type-concepts-advanced.md index cd7a9c395..0c7b2a7ac 100644 --- a/docs/type-concepts-advanced.md +++ b/docs/type-concepts-advanced.md @@ -72,7 +72,7 @@ In addition to assignment-based type narrowing, Pyright supports the following t * `x[I] is None` and `x[I] is not None` (where I is a literal expression and x is a known-length tuple that is distinguished by the index indicated by I) * `len(x) == L` and `len(x) != L` (where x is tuple and L is a literal integer) * `x in y` or `x not in y` (where y is instance of list, set, frozenset, deque, tuple, dict, defaultdict, or OrderedDict) -* `S in D` and `S not in D` (where S is a string literal and D is a final TypedDict) +* `S in D` and `S not in D` (where S is a string literal and D is a TypedDict) * `isinstance(x, T)` (where T is a type or a tuple of types) * `issubclass(x, T)` (where T is a type or a tuple of types) * `callable(x)` diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 57d4cfd04..3ab508cfb 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -1816,11 +1816,7 @@ function narrowTypeForTypedDictKey( if (isPositiveTest) { if (!tdEntry) { - // If the class is final, we can say with certainty that if - // the TypedDict doesn't define this entry, it is not this type. - // If it's not final, we can't say this because it could be a - // subclass of this TypedDict that adds more fields. - return ClassType.isFinal(subtype) ? undefined : subtype; + return undefined; } // If the entry is currently not required and not marked provided, we can mark diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict1.py index 9d6fbe5bf..30f477f9a 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingTypedDict1.py @@ -1,32 +1,24 @@ # This sample tests type narrowing for TypedDict types based # on whether a key is in or not in the dict. -from typing import TypedDict, final +from typing import TypedDict -@final class TD1(TypedDict): a: str b: int -@final class TD2(TypedDict): a: int c: str -@final class TD3(TypedDict, total=False): a: int d: str -class TD4(TypedDict): - a: int - c: str - - def f1(p: TD1 | TD2): if "b" in p: reveal_type(p, expected_text="TD1") @@ -91,10 +83,3 @@ def f7(p: TD3): def f8(p: TD3): if "a" in p: f7(p) - - -def f9(p: TD1 | TD4): - if "b" in p: - reveal_type(p, expected_text="TD1 | TD4") - else: - reveal_type(p, expected_text="TD4") From 77dd71ff10056b725f7a42049da3647ac39757e8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 17 Jul 2023 08:06:16 -0700 Subject: [PATCH 405/525] Updated typeshed stubs to the latest version. --- .../typeshed-fallback/commit.txt | 2 +- .../stdlib/_collections_abc.pyi | 2 + .../typeshed-fallback/stdlib/_weakref.pyi | 3 + .../typeshed-fallback/stdlib/array.pyi | 1 + .../stdlib/asyncio/taskgroups.pyi | 8 ++- .../typeshed-fallback/stdlib/builtins.pyi | 12 ++++ .../stdlib/collections/__init__.pyi | 3 + .../typeshed-fallback/stdlib/contextvars.pyi | 2 + .../typeshed-fallback/stdlib/datetime.pyi | 6 ++ .../stdlib/email/charset.pyi | 4 +- .../typeshed-fallback/stdlib/email/policy.pyi | 8 +-- .../typeshed-fallback/stdlib/enum.pyi | 1 + .../stdlib/importlib/machinery.pyi | 1 + .../stdlib/importlib/metadata/__init__.pyi | 3 + .../typeshed-fallback/stdlib/inspect.pyi | 2 + .../typeshed-fallback/stdlib/ipaddress.pyi | 13 +++- .../stdlib/json/__init__.pyi | 9 --- .../typeshed-fallback/stdlib/linecache.pyi | 6 +- .../typeshed-fallback/stdlib/pydoc.pyi | 2 + .../typeshed-fallback/stdlib/re.pyi | 2 + .../stdlib/sqlite3/dbapi2.pyi | 32 ++++++++- .../typeshed-fallback/stdlib/ssl.pyi | 1 + .../stdlib/tkinter/__init__.pyi | 4 +- .../typeshed-fallback/stdlib/tkinter/ttk.pyi | 4 +- .../typeshed-fallback/stdlib/tracemalloc.pyi | 5 ++ .../typeshed-fallback/stdlib/types.pyi | 13 ++++ .../typeshed-fallback/stdlib/typing.pyi | 3 + .../stdlib/unittest/case.pyi | 3 + .../stdlib/unittest/mock.pyi | 27 ++++++-- .../typeshed-fallback/stdlib/uuid.pyi | 1 + .../typeshed-fallback/stdlib/weakref.pyi | 1 + .../typeshed-fallback/stdlib/winreg.pyi | 1 + .../stdlib/xml/etree/ElementTree.pyi | 1 + .../stubs/Pillow/PIL/Image.pyi | 9 ++- .../jsonschema/_legacy_validators.pyi | 4 +- .../stubs/jsonschema/jsonschema/_utils.pyi | 15 +++-- .../stubs/jsonschema/jsonschema/cli.pyi | 4 +- .../jsonschema/jsonschema/exceptions.pyi | 27 ++++---- .../stubs/jsonschema/jsonschema/protocols.pyi | 16 +++-- .../jsonschema/jsonschema/validators.pyi | 28 ++++---- .../setuptools/pkg_resources/__init__.pyi | 16 ++--- .../_vendor/packaging/__init__.pyi | 8 +++ .../_vendor/packaging/markers.pyi | 13 ++++ .../_vendor/packaging/requirements.pyi | 14 ++++ .../_vendor/packaging/specifiers.pyi | 66 +++++++++++++++++++ .../_vendor/packaging/version.pyi | 49 ++++++++++++++ .../stripe/stripe/api_resources/__init__.pyi | 1 + .../stripe/api_resources/payment_link.pyi | 24 +++++++ 48 files changed, 388 insertions(+), 92 deletions(-) create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/markers.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/requirements.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/specifiers.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/version.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_link.pyi diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index bffd613de..06ef1b728 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -f28a4a1774eecca1d6e5e8699fb08c28951e7ea5 +03b4bb9ccecbabff7ebd7f98bd5c5239f2a33b97 diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi index ba2f638d8..2b57f157a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_collections_abc.pyi @@ -69,6 +69,7 @@ _VT_co = TypeVar("_VT_co", covariant=True) # Value type covariant containers. @final class dict_keys(KeysView[_KT_co], Generic[_KT_co, _VT_co]): # undocumented + def __eq__(self, __value: object) -> bool: ... if sys.version_info >= (3, 10): @property def mapping(self) -> MappingProxyType[_KT_co, _VT_co]: ... @@ -81,6 +82,7 @@ class dict_values(ValuesView[_VT_co], Generic[_KT_co, _VT_co]): # undocumented @final class dict_items(ItemsView[_KT_co, _VT_co], Generic[_KT_co, _VT_co]): # undocumented + def __eq__(self, __value: object) -> bool: ... if sys.version_info >= (3, 10): @property def mapping(self) -> MappingProxyType[_KT_co, _VT_co]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/_weakref.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/_weakref.pyi index 2402d0bfe..ce0f68124 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/_weakref.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/_weakref.pyi @@ -11,17 +11,20 @@ _T = TypeVar("_T") @final class CallableProxyType(Generic[_C]): # "weakcallableproxy" + def __eq__(self, __value: object) -> bool: ... def __getattr__(self, attr: str) -> Any: ... __call__: _C @final class ProxyType(Generic[_T]): # "weakproxy" + def __eq__(self, __value: object) -> bool: ... def __getattr__(self, attr: str) -> Any: ... class ReferenceType(Generic[_T]): __callback__: Callable[[ReferenceType[_T]], Any] def __new__(cls, __o: _T, __callback: Callable[[ReferenceType[_T]], Any] | None = ...) -> Self: ... def __call__(self) -> _T | None: ... + def __eq__(self, __value: object) -> bool: ... def __hash__(self) -> int: ... if sys.version_info >= (3, 9): def __class_getitem__(cls, item: Any) -> GenericAlias: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi index 8b003503b..982767fdf 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi @@ -70,6 +70,7 @@ class array(MutableSequence[_T], Generic[_T]): def __setitem__(self, __key: slice, __value: array[_T]) -> None: ... def __delitem__(self, __key: SupportsIndex | slice) -> None: ... def __add__(self, __value: array[_T]) -> array[_T]: ... + def __eq__(self, __value: object) -> bool: ... def __ge__(self, __value: array[_T]) -> bool: ... def __gt__(self, __value: array[_T]) -> bool: ... def __iadd__(self, __value: array[_T]) -> Self: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/taskgroups.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/taskgroups.pyi index 08ea8f665..47d9bb2f6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/taskgroups.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/taskgroups.pyi @@ -1,5 +1,4 @@ -# This only exists in 3.11+. See VERSIONS. - +import sys from contextvars import Context from types import TracebackType from typing import TypeVar @@ -8,7 +7,10 @@ from typing_extensions import Self from . import _CoroutineLike from .tasks import Task -__all__ = ["TaskGroup"] +if sys.version_info >= (3, 12): + __all__ = ("TaskGroup",) +else: + __all__ = ["TaskGroup"] _T = TypeVar("_T") diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index ea917bddb..510a754ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -874,6 +874,8 @@ class memoryview(Sequence[int]): def __contains__(self, __x: object) -> bool: ... def __iter__(self) -> Iterator[int]: ... def __len__(self) -> int: ... + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... @overload def __setitem__(self, __key: slice, __value: ReadableBuffer) -> None: ... @overload @@ -941,6 +943,7 @@ class slice: def __init__(self, __stop: Any) -> None: ... @overload def __init__(self, __start: Any, __stop: Any, __step: Any = ...) -> None: ... + def __eq__(self, __value: object) -> bool: ... __hash__: ClassVar[None] # type: ignore[assignment] def indices(self, __len: SupportsIndex) -> tuple[int, int, int]: ... @@ -957,6 +960,8 @@ class tuple(Sequence[_T_co], Generic[_T_co]): def __le__(self, __value: tuple[_T_co, ...]) -> bool: ... def __gt__(self, __value: tuple[_T_co, ...]) -> bool: ... def __ge__(self, __value: tuple[_T_co, ...]) -> bool: ... + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... @overload def __add__(self, __value: tuple[_T_co, ...]) -> tuple[_T_co, ...]: ... @overload @@ -1045,6 +1050,7 @@ class list(MutableSequence[_T], Generic[_T]): def __ge__(self, __value: list[_T]) -> bool: ... def __lt__(self, __value: list[_T]) -> bool: ... def __le__(self, __value: list[_T]) -> bool: ... + def __eq__(self, __value: object) -> bool: ... if sys.version_info >= (3, 9): def __class_getitem__(cls, __item: Any) -> GenericAlias: ... @@ -1097,6 +1103,7 @@ class dict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): def __setitem__(self, __key: _KT, __value: _VT) -> None: ... def __delitem__(self, __key: _KT) -> None: ... def __iter__(self) -> Iterator[_KT]: ... + def __eq__(self, __value: object) -> bool: ... if sys.version_info >= (3, 8): def __reversed__(self) -> Iterator[_KT]: ... __hash__: ClassVar[None] # type: ignore[assignment] @@ -1151,6 +1158,7 @@ class set(MutableSet[_T], Generic[_T]): def __lt__(self, __value: AbstractSet[object]) -> bool: ... def __ge__(self, __value: AbstractSet[object]) -> bool: ... def __gt__(self, __value: AbstractSet[object]) -> bool: ... + def __eq__(self, __value: object) -> bool: ... __hash__: ClassVar[None] # type: ignore[assignment] if sys.version_info >= (3, 9): def __class_getitem__(cls, __item: Any) -> GenericAlias: ... @@ -1179,6 +1187,8 @@ class frozenset(AbstractSet[_T_co], Generic[_T_co]): def __lt__(self, __value: AbstractSet[object]) -> bool: ... def __ge__(self, __value: AbstractSet[object]) -> bool: ... def __gt__(self, __value: AbstractSet[object]) -> bool: ... + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... if sys.version_info >= (3, 9): def __class_getitem__(cls, __item: Any) -> GenericAlias: ... @@ -1204,6 +1214,8 @@ class range(Sequence[int]): def count(self, __value: int) -> int: ... def index(self, __value: int) -> int: ... # type: ignore[override] def __len__(self) -> int: ... + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... def __contains__(self, __key: object) -> bool: ... def __iter__(self) -> Iterator[int]: ... @overload diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi index 36d791019..ec526e67a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi @@ -153,6 +153,7 @@ class UserString(Sequence[UserString]): def __gt__(self, string: str | UserString) -> bool: ... def __ge__(self, string: str | UserString) -> bool: ... def __eq__(self, string: object) -> bool: ... + def __hash__(self) -> int: ... def __contains__(self, char: object) -> bool: ... def __len__(self) -> int: ... def __getitem__(self, index: SupportsIndex | slice) -> Self: ... @@ -257,6 +258,7 @@ class deque(MutableSequence[_T], Generic[_T]): def __le__(self, __value: deque[_T]) -> bool: ... def __gt__(self, __value: deque[_T]) -> bool: ... def __ge__(self, __value: deque[_T]) -> bool: ... + def __eq__(self, __value: object) -> bool: ... if sys.version_info >= (3, 9): def __class_getitem__(cls, __item: Any) -> GenericAlias: ... @@ -365,6 +367,7 @@ class OrderedDict(dict[_KT, _VT], Reversible[_KT], Generic[_KT, _VT]): def setdefault(self: OrderedDict[_KT, _T | None], key: _KT, default: None = None) -> _T | None: ... @overload def setdefault(self, key: _KT, default: _VT) -> _VT: ... + def __eq__(self, __value: object) -> bool: ... class defaultdict(dict[_KT, _VT], Generic[_KT, _VT]): default_factory: Callable[[], _VT] | None diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/contextvars.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/contextvars.pyi index ef6e2700e..1b0e8be30 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/contextvars.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/contextvars.pyi @@ -18,6 +18,7 @@ class ContextVar(Generic[_T]): def __init__(self, name: str) -> None: ... @overload def __init__(self, name: str, *, default: _T) -> None: ... + def __hash__(self) -> int: ... @property def name(self) -> str: ... @overload @@ -60,3 +61,4 @@ class Context(Mapping[ContextVar[Any], Any]): def __getitem__(self, __key: ContextVar[_T]) -> _T: ... def __iter__(self) -> Iterator[ContextVar[Any]]: ... def __len__(self) -> int: ... + def __eq__(self, __value: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi index 00d511915..36577c5b7 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/datetime.pyi @@ -36,6 +36,7 @@ class timezone(tzinfo): def utcoffset(self, __dt: datetime | None) -> timedelta: ... def dst(self, __dt: datetime | None) -> None: ... def __hash__(self) -> int: ... + def __eq__(self, __value: object) -> bool: ... if sys.version_info >= (3, 11): UTC: timezone @@ -87,6 +88,7 @@ class date: def __lt__(self, __value: date) -> bool: ... def __ge__(self, __value: date) -> bool: ... def __gt__(self, __value: date) -> bool: ... + def __eq__(self, __value: object) -> bool: ... if sys.version_info >= (3, 8): def __add__(self, __value: timedelta) -> Self: ... def __radd__(self, __value: timedelta) -> Self: ... @@ -145,6 +147,7 @@ class time: def __lt__(self, __value: time) -> bool: ... def __ge__(self, __value: time) -> bool: ... def __gt__(self, __value: time) -> bool: ... + def __eq__(self, __value: object) -> bool: ... def __hash__(self) -> int: ... def isoformat(self, timespec: str = ...) -> str: ... @classmethod @@ -219,6 +222,7 @@ class timedelta: def __lt__(self, __value: timedelta) -> bool: ... def __ge__(self, __value: timedelta) -> bool: ... def __gt__(self, __value: timedelta) -> bool: ... + def __eq__(self, __value: object) -> bool: ... def __bool__(self) -> bool: ... def __hash__(self) -> int: ... @@ -310,6 +314,8 @@ class datetime(date): def __lt__(self, __value: datetime) -> bool: ... # type: ignore[override] def __ge__(self, __value: datetime) -> bool: ... # type: ignore[override] def __gt__(self, __value: datetime) -> bool: ... # type: ignore[override] + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... if sys.version_info >= (3, 8): @overload # type: ignore[override] def __sub__(self, __value: timedelta) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/email/charset.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/email/charset.pyi index d61950a26..f8de016ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/email/charset.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/email/charset.pyi @@ -19,11 +19,11 @@ class Charset: def get_body_encoding(self) -> str | Callable[[Message], None]: ... def get_output_charset(self) -> str | None: ... def header_encode(self, string: str) -> str: ... - def header_encode_lines(self, string: str, maxlengths: Iterator[int]) -> list[str]: ... + def header_encode_lines(self, string: str, maxlengths: Iterator[int]) -> list[str | None]: ... @overload def body_encode(self, string: None) -> None: ... @overload - def body_encode(self, string: str) -> str: ... + def body_encode(self, string: str | bytes) -> str: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, __value: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/email/policy.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/email/policy.pyi index dc7f18489..804044031 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/email/policy.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/email/policy.pyi @@ -53,7 +53,7 @@ compat32: Compat32 class EmailPolicy(Policy): utf8: bool refold_source: str - header_factory: Callable[[str, str], str] + header_factory: Callable[[str, Any], Any] content_manager: ContentManager def __init__( self, @@ -70,9 +70,9 @@ class EmailPolicy(Policy): content_manager: ContentManager = ..., ) -> None: ... def header_source_parse(self, sourcelines: list[str]) -> tuple[str, str]: ... - def header_store_parse(self, name: str, value: str) -> tuple[str, str]: ... - def header_fetch_parse(self, name: str, value: str) -> str: ... - def fold(self, name: str, value: str) -> str: ... + def header_store_parse(self, name: str, value: Any) -> tuple[str, Any]: ... + def header_fetch_parse(self, name: str, value: str) -> Any: ... + def fold(self, name: str, value: str) -> Any: ... def fold_binary(self, name: str, value: str) -> bytes: ... default: EmailPolicy diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi index 96a96dbce..60cc27215 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi @@ -190,6 +190,7 @@ class Enum(metaclass=EnumMeta): # and in practice using `object` here has the same effect as using `Any`. def __new__(cls, value: object) -> Self: ... def __dir__(self) -> list[str]: ... + def __hash__(self) -> int: ... def __format__(self, format_spec: str) -> str: ... def __reduce_ex__(self, proto: Unused) -> tuple[Any, ...]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/importlib/machinery.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/importlib/machinery.pyi index 5aaefce87..f5037da00 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/importlib/machinery.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/importlib/machinery.pyi @@ -148,3 +148,4 @@ class ExtensionFileLoader(importlib.abc.ExecutionLoader): def exec_module(self, module: types.ModuleType) -> None: ... def get_code(self, fullname: str) -> None: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/importlib/metadata/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/importlib/metadata/__init__.pyi index 083453cd3..0af33bc87 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/importlib/metadata/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/importlib/metadata/__init__.pyi @@ -66,6 +66,9 @@ class EntryPoint(_EntryPointBase): extras: list[str] = ..., ) -> bool: ... # undocumented + def __hash__(self) -> int: ... + def __eq__(self, other: object) -> bool: ... + if sys.version_info >= (3, 10): class EntryPoints(list[EntryPoint]): # use as list is deprecated since 3.10 # int argument is deprecated since 3.10 diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi index 9af4c39ba..601d23e78 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/inspect.pyi @@ -354,6 +354,7 @@ class Signature: def from_callable(cls, obj: _IntrospectableCallable, *, follow_wrapped: bool = True) -> Self: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... if sys.version_info >= (3, 10): def get_annotations( @@ -413,6 +414,7 @@ class Parameter: annotation: Any = ..., ) -> Self: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... class BoundArguments: arguments: OrderedDict[str, Any] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ipaddress.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ipaddress.pyi index fc42cf03e..945e8bcbb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ipaddress.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ipaddress.pyi @@ -78,6 +78,7 @@ class _BaseNetwork(_IPAddressBase, Container[_A], Iterable[_A], Generic[_A]): def __getitem__(self, n: int) -> _A: ... def __iter__(self) -> Iterator[_A]: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... def __lt__(self, other: Self) -> bool: ... if sys.version_info >= (3, 11): def __ge__(self, other: Self) -> bool: ... @@ -148,7 +149,10 @@ class _BaseV4: class IPv4Address(_BaseV4, _BaseAddress): ... class IPv4Network(_BaseV4, _BaseNetwork[IPv4Address]): ... -class IPv4Interface(IPv4Address, _BaseInterface[IPv4Address, IPv4Network]): ... + +class IPv4Interface(IPv4Address, _BaseInterface[IPv4Address, IPv4Network]): + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... class _BaseV6: @property @@ -169,11 +173,16 @@ class IPv6Address(_BaseV6, _BaseAddress): @property def scope_id(self) -> str | None: ... + def __hash__(self) -> int: ... + def __eq__(self, other: object) -> bool: ... + class IPv6Network(_BaseV6, _BaseNetwork[IPv6Address]): @property def is_site_local(self) -> bool: ... -class IPv6Interface(IPv6Address, _BaseInterface[IPv6Address, IPv6Network]): ... +class IPv6Interface(IPv6Address, _BaseInterface[IPv6Address, IPv6Network]): + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... def v4_int_to_packed(address: int) -> bytes: ... def v6_int_to_packed(address: int) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi index dc0cdff92..63e9718ee 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/json/__init__.pyi @@ -1,4 +1,3 @@ -import sys from _typeshed import SupportsRead, SupportsWrite from collections.abc import Callable from typing import Any @@ -7,8 +6,6 @@ from .decoder import JSONDecodeError as JSONDecodeError, JSONDecoder as JSONDeco from .encoder import JSONEncoder as JSONEncoder __all__ = ["dump", "dumps", "load", "loads", "JSONDecoder", "JSONDecodeError", "JSONEncoder"] -if sys.version_info >= (3, 12): - __all__ += ["AttrDict"] def dumps( obj: Any, @@ -62,9 +59,3 @@ def load( **kwds: Any, ) -> Any: ... def detect_encoding(b: bytes | bytearray) -> str: ... # undocumented - -if sys.version_info >= (3, 12): - class AttrDict(dict[str, Any]): - def __getattr__(self, name: str) -> Any: ... - def __setattr__(self, name: str, value: Any) -> None: ... - def __delattr__(self, name: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/linecache.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/linecache.pyi index 8e317dd38..2e050e13b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/linecache.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/linecache.pyi @@ -1,5 +1,6 @@ import sys -from typing import Any, Protocol +from collections.abc import Callable +from typing import Any from typing_extensions import TypeAlias if sys.version_info >= (3, 9): @@ -10,8 +11,7 @@ else: _ModuleGlobals: TypeAlias = dict[str, Any] _ModuleMetadata: TypeAlias = tuple[int, float | None, list[str], str] -class _SourceLoader(Protocol): - def __call__(self) -> str | None: ... +_SourceLoader: TypeAlias = tuple[Callable[[], str | None]] cache: dict[str, _SourceLoader | _ModuleMetadata] # undocumented diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi index c993af390..7791c977a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pydoc.pyi @@ -61,6 +61,7 @@ class Doc: def getdocloc(self, object: object, basedir: str = ...) -> str | None: ... class HTMLRepr(Repr): + def __init__(self) -> None: ... def escape(self, text: str) -> str: ... def repr(self, object: object) -> str: ... def repr1(self, x: object, level: complex) -> str: ... @@ -148,6 +149,7 @@ class HTMLDoc(Doc): def filelink(self, url: str, path: str) -> str: ... class TextRepr(Repr): + def __init__(self) -> None: ... def repr1(self, x: object, level: complex) -> str: ... def repr_string(self, x: str, level: complex) -> str: ... def repr_str(self, x: str, level: complex) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/re.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/re.pyi index 4e53141ad..29ee8b668 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/re.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/re.pyi @@ -175,6 +175,8 @@ class Pattern(Generic[AnyStr]): def subn(self, repl: AnyStr | Callable[[Match[AnyStr]], AnyStr], string: AnyStr, count: int = 0) -> tuple[AnyStr, int]: ... def __copy__(self) -> Pattern[AnyStr]: ... def __deepcopy__(self, __memo: Any) -> Pattern[AnyStr]: ... + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... if sys.version_info >= (3, 9): def __class_getitem__(cls, item: Any) -> GenericAlias: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi index 21301c51f..41f731e21 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sqlite3/dbapi2.pyi @@ -196,6 +196,25 @@ if sys.version_info >= (3, 11): SQLITE_WARNING: int SQLITE_WARNING_AUTOINDEX: int +if sys.version_info >= (3, 12): + LEGACY_TRANSACTION_CONTROL: int + SQLITE_DBCONFIG_DEFENSIVE: int + SQLITE_DBCONFIG_DQS_DDL: int + SQLITE_DBCONFIG_DQS_DML: int + SQLITE_DBCONFIG_ENABLE_FKEY: int + SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER: int + SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: int + SQLITE_DBCONFIG_ENABLE_QPSG: int + SQLITE_DBCONFIG_ENABLE_TRIGGER: int + SQLITE_DBCONFIG_ENABLE_VIEW: int + SQLITE_DBCONFIG_LEGACY_ALTER_TABLE: int + SQLITE_DBCONFIG_LEGACY_FILE_FORMAT: int + SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE: int + SQLITE_DBCONFIG_RESET_DATABASE: int + SQLITE_DBCONFIG_TRIGGER_EQP: int + SQLITE_DBCONFIG_TRUSTED_SCHEMA: int + SQLITE_DBCONFIG_WRITABLE_SCHEMA: int + # Can take or return anything depending on what's in the registry. @overload def adapt(__obj: Any, __proto: Any) -> Any: ... @@ -214,8 +233,9 @@ def connect( ) -> Connection: ... def enable_callback_tracebacks(__enable: bool) -> None: ... -# takes a pos-or-keyword argument because there is a C wrapper -def enable_shared_cache(enable: int) -> None: ... +if sys.version_info < (3, 12): + # takes a pos-or-keyword argument because there is a C wrapper + def enable_shared_cache(enable: int) -> None: ... if sys.version_info >= (3, 10): def register_adapter(__type: type[_T], __adapter: _Adapter[_T]) -> None: ... @@ -279,6 +299,11 @@ class Connection: isolation_level: str | None # one of '', 'DEFERRED', 'IMMEDIATE' or 'EXCLUSIVE' @property def total_changes(self) -> int: ... + if sys.version_info >= (3, 12): + @property + def autocommit(self) -> int: ... + @autocommit.setter + def autocommit(self, val: int) -> None: ... row_factory: Any text_factory: Any def __init__( @@ -356,6 +381,9 @@ class Connection: def getlimit(self, __category: int) -> int: ... def serialize(self, *, name: str = "main") -> bytes: ... def deserialize(self, __data: ReadableBuffer, *, name: str = "main") -> None: ... + if sys.version_info >= (3, 12): + def getconfig(self, __op: int) -> bool: ... + def setconfig(self, __op: int, __enable: bool = True) -> bool: ... def __call__(self, __sql: str) -> _Statement: ... def __enter__(self) -> Self: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ssl.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ssl.pyi index 20b8802bd..446bbf8d1 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ssl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ssl.pyi @@ -485,6 +485,7 @@ class SSLSession: def time(self) -> int: ... @property def timeout(self) -> int: ... + def __eq__(self, __value: object) -> bool: ... class SSLErrorNumber(enum.IntEnum): SSL_ERROR_EOF: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi index ca6434a85..a03c48c03 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/__init__.pyi @@ -500,7 +500,7 @@ class Misc: bbox = grid_bbox def grid_columnconfigure( self, - index: _GridIndex, + index: _GridIndex | list[int] | tuple[int, ...], cnf: _GridIndexInfo = {}, *, minsize: _ScreenUnits = ..., @@ -510,7 +510,7 @@ class Misc: ) -> _GridIndexInfo | Any: ... # can be None but annoying to check def grid_rowconfigure( self, - index: _GridIndex, + index: _GridIndex | list[int] | tuple[int, ...], cnf: _GridIndexInfo = {}, *, minsize: _ScreenUnits = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi index 009fdf51a..d73566fc0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi @@ -961,7 +961,7 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): master: tkinter.Misc | None = None, *, class_: str = ..., - columns: str | list[str] | tuple[str, ...] = ..., + columns: str | list[str] | list[int] | list[str | int] | tuple[str | int, ...] = ..., cursor: tkinter._Cursor = ..., displaycolumns: str | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ..., height: int = ..., @@ -983,7 +983,7 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): self, cnf: dict[str, Any] | None = None, *, - columns: str | list[str] | tuple[str, ...] = ..., + columns: str | list[str] | list[int] | list[str | int] | tuple[str | int, ...] = ..., cursor: tkinter._Cursor = ..., displaycolumns: str | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ..., height: int = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tracemalloc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tracemalloc.pyi index 3dc8b8603..6448a16ce 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tracemalloc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tracemalloc.pyi @@ -37,6 +37,7 @@ class Statistic: traceback: Traceback def __init__(self, traceback: Traceback, size: int, count: int) -> None: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... class StatisticDiff: count: int @@ -46,6 +47,7 @@ class StatisticDiff: traceback: Traceback def __init__(self, traceback: Traceback, size: int, size_diff: int, count: int, count_diff: int) -> None: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... _FrameTuple: TypeAlias = tuple[str, int] @@ -56,6 +58,7 @@ class Frame: def lineno(self) -> int: ... def __init__(self, frame: _FrameTuple) -> None: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... def __lt__(self, other: Frame) -> bool: ... if sys.version_info >= (3, 11): def __gt__(self, other: Frame) -> bool: ... @@ -80,6 +83,7 @@ class Trace: def traceback(self) -> Traceback: ... def __init__(self, trace: _TraceTuple) -> None: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... class Traceback(Sequence[Frame]): if sys.version_info >= (3, 9): @@ -97,6 +101,7 @@ class Traceback(Sequence[Frame]): def __contains__(self, frame: Frame) -> bool: ... # type: ignore[override] def __len__(self) -> int: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... def __lt__(self, other: Traceback) -> bool: ... if sys.version_info >= (3, 11): def __gt__(self, other: Traceback) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi index e5468ce4e..2f4bd1a88 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/types.pyi @@ -71,6 +71,7 @@ class _Cell: if sys.version_info >= (3, 8): def __init__(self, __contents: object = ...) -> None: ... + def __eq__(self, __value: object) -> bool: ... __hash__: ClassVar[None] # type: ignore[assignment] cell_contents: Any @@ -113,6 +114,8 @@ LambdaType = FunctionType @final class CodeType: + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... @property def co_argcount(self) -> int: ... if sys.version_info >= (3, 8): @@ -326,6 +329,7 @@ class MappingProxyType(Mapping[_KT, _VT_co], Generic[_KT, _VT_co]): class SimpleNamespace: __hash__: ClassVar[None] # type: ignore[assignment] def __init__(self, **kwargs: Any) -> None: ... + def __eq__(self, __value: object) -> bool: ... def __getattribute__(self, __name: str) -> Any: ... def __setattr__(self, __name: str, __value: Any) -> None: ... def __delattr__(self, __name: str) -> None: ... @@ -442,6 +446,8 @@ class MethodType: def __qualname__(self) -> str: ... # inherited from the added function def __init__(self, __func: Callable[..., Any], __obj: object) -> None: ... def __call__(self, *args: Any, **kwargs: Any) -> Any: ... + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... @final class BuiltinFunctionType: @@ -452,6 +458,8 @@ class BuiltinFunctionType: @property def __qualname__(self) -> str: ... def __call__(self, *args: Any, **kwargs: Any) -> Any: ... + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... BuiltinMethodType = BuiltinFunctionType @@ -479,6 +487,7 @@ class MethodWrapperType: def __call__(self, *args: Any, **kwargs: Any) -> Any: ... def __eq__(self, __value: object) -> bool: ... def __ne__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... @final class MethodDescriptorType: @@ -603,6 +612,8 @@ if sys.version_info >= (3, 9): def __parameters__(self) -> tuple[Any, ...]: ... def __init__(self, origin: type, args: Any) -> None: ... def __getitem__(self, __typeargs: Any) -> GenericAlias: ... + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... if sys.version_info >= (3, 11): @property def __unpacked__(self) -> bool: ... @@ -626,3 +637,5 @@ if sys.version_info >= (3, 10): def __args__(self) -> tuple[Any, ...]: ... def __or__(self, __value: Any) -> UnionType: ... def __ror__(self, __value: Any) -> UnionType: ... + def __eq__(self, __value: object) -> bool: ... + def __hash__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi index 7496a0920..6c37f3222 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi @@ -226,12 +226,14 @@ if sys.version_info >= (3, 10): @property def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... + def __eq__(self, other: object) -> bool: ... @_final class ParamSpecKwargs: @property def __origin__(self) -> ParamSpec: ... def __init__(self, origin: ParamSpec) -> None: ... + def __eq__(self, other: object) -> bool: ... @_final class ParamSpec: @@ -563,6 +565,7 @@ class AbstractSet(Collection[_T_co], Generic[_T_co]): def __or__(self, other: AbstractSet[_T]) -> AbstractSet[_T_co | _T]: ... def __sub__(self, other: AbstractSet[Any]) -> AbstractSet[_T_co]: ... def __xor__(self, other: AbstractSet[_T]) -> AbstractSet[_T_co | _T]: ... + def __eq__(self, other: object) -> bool: ... def isdisjoint(self, other: Iterable[Any]) -> bool: ... class MutableSet(AbstractSet[_T], Generic[_T]): diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/case.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/case.pyi index 45c39e3f3..1f58f266e 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/case.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/case.pyi @@ -86,6 +86,7 @@ class TestCase: _testMethodDoc: str def __init__(self, methodName: str = "runTest") -> None: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... def setUp(self) -> None: ... def tearDown(self) -> None: ... @classmethod @@ -304,6 +305,8 @@ class FunctionTestCase(TestCase): description: str | None = None, ) -> None: ... def runTest(self) -> None: ... + def __hash__(self) -> int: ... + def __eq__(self, other: object) -> bool: ... class _AssertRaisesContext(Generic[_E]): exception: _E diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi index 0ed0701cc..db1cc7d9b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi @@ -234,6 +234,8 @@ class _patch(Generic[_T]): def copy(self) -> _patch[_T]: ... @overload def __call__(self, func: _TT) -> _TT: ... + # If new==DEFAULT, this should add a MagicMock parameter to the function + # arguments. See the _patch_default_new class below for this functionality. @overload def __call__(self, func: Callable[_P, _R]) -> Callable[_P, _R]: ... if sys.version_info >= (3, 8): @@ -257,6 +259,22 @@ class _patch(Generic[_T]): def start(self) -> _T: ... def stop(self) -> None: ... +if sys.version_info >= (3, 8): + _Mock: TypeAlias = MagicMock | AsyncMock +else: + _Mock: TypeAlias = MagicMock + +# This class does not exist at runtime, it's a hack to make this work: +# @patch("foo") +# def bar(..., mock: MagicMock) -> None: ... +class _patch_default_new(_patch[_Mock]): + @overload + def __call__(self, func: _TT) -> _TT: ... + # Can't use the following as ParamSpec is only allowed as last parameter: + # def __call__(self, func: Callable[_P, _R]) -> Callable[Concatenate[_P, MagicMock], _R]: ... + @overload + def __call__(self, func: Callable[..., _R]) -> Callable[..., _R]: ... + class _patch_dict: in_dict: Any values: Any @@ -273,11 +291,8 @@ class _patch_dict: start: Any stop: Any -if sys.version_info >= (3, 8): - _Mock: TypeAlias = MagicMock | AsyncMock -else: - _Mock: TypeAlias = MagicMock - +# This class does not exist at runtime, it's a hack to add methods to the +# patch() function. class _patcher: TEST_PREFIX: str dict: type[_patch_dict] @@ -307,7 +322,7 @@ class _patcher: autospec: Any | None = ..., new_callable: Any | None = ..., **kwargs: Any, - ) -> _patch[_Mock]: ... + ) -> _patch_default_new: ... @overload @staticmethod def object( # type: ignore[misc] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi index fd8764653..e1ea424f9 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/uuid.pyi @@ -63,6 +63,7 @@ class UUID: def __le__(self, other: UUID) -> bool: ... def __gt__(self, other: UUID) -> bool: ... def __ge__(self, other: UUID) -> bool: ... + def __hash__(self) -> builtins.int: ... if sys.version_info >= (3, 9): def getnode() -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi index 13f48fe85..c61f731b6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi @@ -45,6 +45,7 @@ class WeakMethod(ref[_CallableT], Generic[_CallableT]): def __call__(self) -> _CallableT | None: ... def __eq__(self, other: object) -> bool: ... def __ne__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... class WeakValueDictionary(MutableMapping[_KT, _VT]): @overload diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/winreg.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/winreg.pyi index 70ea6a1ce..337bd9706 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/winreg.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/winreg.pyi @@ -98,3 +98,4 @@ if sys.platform == "win32": ) -> bool | None: ... def Close(self) -> None: ... def Detach(self) -> int: ... + def __hash__(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/xml/etree/ElementTree.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/xml/etree/ElementTree.pyi index 2cf8dbbe7..d8ff2f5b6 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/xml/etree/ElementTree.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/xml/etree/ElementTree.pyi @@ -142,6 +142,7 @@ class QName: def __gt__(self, other: QName | str) -> bool: ... def __ge__(self, other: QName | str) -> bool: ... def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... class ElementTree: def __init__(self, element: Element | None = None, file: _FileRead | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi index 9aeabdb06..14c95dad8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/PIL/Image.pyi @@ -3,7 +3,7 @@ from collections.abc import Callable, Iterable, Iterator, MutableMapping, Sequen from enum import IntEnum from pathlib import Path from typing import Any, ClassVar, Protocol, SupportsBytes -from typing_extensions import Final, Literal, Self, TypeAlias, TypeGuard +from typing_extensions import Literal, Self, TypeAlias, TypeGuard from PIL.PyAccess import PyAccess @@ -39,7 +39,12 @@ class _Writeable(SupportsWrite[bytes], Protocol): class DecompressionBombWarning(RuntimeWarning): ... class DecompressionBombError(Exception): ... -MAX_IMAGE_PIXELS: Final[int] +# Despite the ALL_CAPS spelling, Pillow's docs mention that this threshold can +# be altered at runtime. See +# https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.open +# or the permalink +# https://github.com/python-pillow/Pillow/blob/10.0.0/docs/reference/Image.rst?plain=1#L54-L55 +MAX_IMAGE_PIXELS: int | None USE_CFFI_ACCESS: bool diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_legacy_validators.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_legacy_validators.pyi index 783d3e5b3..335525093 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_legacy_validators.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_legacy_validators.pyi @@ -1,7 +1,7 @@ +from _typeshed import Incomplete from collections.abc import ItemsView -from typing import Any -def ignore_ref_siblings(schema) -> list[tuple[str, Any]] | ItemsView[str, Any]: ... +def ignore_ref_siblings(schema) -> list[tuple[str, Incomplete]] | ItemsView[str, Incomplete]: ... def dependencies_draft3(validator, dependencies, instance, schema) -> None: ... def dependencies_draft4_draft6_draft7(validator, dependencies, instance, schema) -> None: ... def disallow_draft3(validator, disallow, instance, schema) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_utils.pyi index 7e5720e70..e00eb7c25 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/_utils.pyi @@ -1,6 +1,5 @@ -from _typeshed import SupportsKeysAndGetItem +from _typeshed import Incomplete, SupportsKeysAndGetItem from collections.abc import Generator, Iterable, Iterator, Mapping, MutableMapping, Sized -from typing import Any class URIDict(MutableMapping[str, str]): def normalize(self, uri: str) -> str: ... @@ -16,11 +15,13 @@ class Unset: ... def load_schema(name): ... def format_as_index(container: str, indices) -> str: ... -def find_additional_properties(instance: Iterable[Any], schema: Mapping[Any, Any]) -> Generator[Any, None, None]: ... -def extras_msg(extras: Iterable[Any] | Sized) -> str: ... -def ensure_list(thing) -> list[Any]: ... +def find_additional_properties( + instance: Iterable[Incomplete], schema: Mapping[Incomplete, Incomplete] +) -> Generator[Incomplete, None, None]: ... +def extras_msg(extras: Iterable[Incomplete] | Sized) -> str: ... +def ensure_list(thing) -> list[Incomplete]: ... def equal(one, two) -> bool: ... def unbool(element, true=..., false=...): ... def uniq(container) -> bool: ... -def find_evaluated_item_indexes_by_schema(validator, instance, schema) -> list[Any]: ... -def find_evaluated_property_keys_by_schema(validator, instance, schema) -> list[Any]: ... +def find_evaluated_item_indexes_by_schema(validator, instance, schema) -> list[Incomplete]: ... +def find_evaluated_property_keys_by_schema(validator, instance, schema) -> list[Incomplete]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/cli.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/cli.pyi index 85c3bd71d..01ef4137d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/cli.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/cli.pyi @@ -1,4 +1,4 @@ -from typing import Any +from _typeshed import Incomplete class _CannotLoadFile(Exception): ... @@ -25,7 +25,7 @@ class _PlainFormatter: def validation_error(self, instance_path, error): ... def validation_success(self, instance_path): ... -parser: Any +parser: Incomplete def parse_args(args): ... def main(args=...) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/exceptions.pyi index 0086a63b1..646a67895 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/exceptions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/exceptions.pyi @@ -1,7 +1,6 @@ from _typeshed import Incomplete, SupportsRichComparison from collections import deque from collections.abc import Callable, Container, Iterable, Sequence -from typing import Any from typing_extensions import Self, TypeAlias from jsonschema import _utils, protocols @@ -21,9 +20,9 @@ class _Error(Exception): context: list[ValidationError] | None cause: Exception | None validator: protocols.Validator | None - validator_value: Any - instance: Any - schema: Any + validator_value: Incomplete + instance: Incomplete + schema: Incomplete parent: _Error | None def __init__( self, @@ -33,8 +32,8 @@ class _Error(Exception): cause: Incomplete | None = None, context: Sequence[ValidationError] = (), validator_value=..., - instance: Any = ..., - schema: Any = ..., + instance: Incomplete = ..., + schema: Incomplete = ..., schema_path: Sequence[str | int] = (), parent: _Error | None = None, type_checker: _utils.Unset | TypeChecker = ..., @@ -49,7 +48,7 @@ class _Error(Exception): def json_path(self) -> str: ... # TODO: this type could be made more precise using TypedDict to # enumerate the types of the members - def _contents(self) -> dict[str, Any]: ... + def _contents(self) -> dict[str, Incomplete]: ... class ValidationError(_Error): ... class SchemaError(_Error): ... @@ -58,22 +57,22 @@ class RefResolutionError(Exception): def __init__(self, cause: str) -> None: ... class UndefinedTypeCheck(Exception): - type: Any + type: Incomplete def __init__(self, type) -> None: ... class UnknownType(Exception): - type: Any - instance: Any - schema: Any + type: Incomplete + instance: Incomplete + schema: Incomplete def __init__(self, type, instance, schema) -> None: ... class FormatError(Exception): - message: Any - cause: Any + message: Incomplete + cause: Incomplete def __init__(self, message, cause: Incomplete | None = None) -> None: ... class ErrorTree: - errors: Any + errors: Incomplete def __init__(self, errors=()) -> None: ... def __contains__(self, index): ... def __getitem__(self, index): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/protocols.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/protocols.pyi index 21ce62bc4..1bde7a46c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/protocols.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/protocols.pyi @@ -1,5 +1,6 @@ +from _typeshed import Incomplete from collections.abc import Iterator, Mapping, Sequence -from typing import Any, ClassVar, Protocol +from typing import ClassVar, Protocol from typing_extensions import TypeAlias from jsonschema._format import FormatChecker @@ -10,16 +11,19 @@ from jsonschema.validators import RefResolver _JsonParameter: TypeAlias = str | int | float | bool | None | Mapping[str, _JsonParameter] | Sequence[_JsonParameter] class Validator(Protocol): - META_SCHEMA: ClassVar[dict[Any, Any]] - VALIDATORS: ClassVar[dict[Any, Any]] + META_SCHEMA: ClassVar[dict[Incomplete, Incomplete]] + VALIDATORS: ClassVar[dict[Incomplete, Incomplete]] TYPE_CHECKER: ClassVar[TypeChecker] FORMAT_CHECKER: ClassVar[FormatChecker] - schema: dict[Any, Any] | bool + schema: dict[Incomplete, Incomplete] | bool def __init__( - self, schema: dict[Any, Any] | bool, resolver: RefResolver | None = None, format_checker: FormatChecker | None = None + self, + schema: dict[Incomplete, Incomplete] | bool, + resolver: RefResolver | None = None, + format_checker: FormatChecker | None = None, ) -> None: ... @classmethod - def check_schema(cls, schema: dict[Any, Any]) -> None: ... + def check_schema(cls, schema: dict[Incomplete, Incomplete]) -> None: ... def is_type(self, instance: _JsonParameter, type: str) -> bool: ... def is_valid(self, instance: _JsonParameter) -> bool: ... def iter_errors(self, instance: _JsonParameter) -> Iterator[ValidationError]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/validators.pyi b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/validators.pyi index 2e9afa99a..47ace89da 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/validators.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/jsonschema/validators.pyi @@ -19,28 +19,28 @@ _Schema: TypeAlias = Mapping[str, Any] # This class does not exist at runtime. Compatible classes are created at # runtime by create(). class _Validator: - VALIDATORS: ClassVar[dict[Any, Any]] - META_SCHEMA: ClassVar[dict[Any, Any]] - TYPE_CHECKER: ClassVar[Any] - FORMAT_CHECKER: ClassVar[Any] + VALIDATORS: ClassVar[dict[Incomplete, Incomplete]] + META_SCHEMA: ClassVar[dict[Incomplete, Incomplete]] + TYPE_CHECKER: ClassVar[Incomplete] + FORMAT_CHECKER: ClassVar[Incomplete] @staticmethod def ID_OF(schema: _Schema) -> str: ... schema: _Schema - resolver: Any - format_checker: Any - evolve: Any + resolver: Incomplete + format_checker: Incomplete + evolve: Incomplete def __init__(self, schema: _Schema, resolver: Incomplete | None = ..., format_checker: Incomplete | None = ...) -> None: ... @classmethod def check_schema(cls, schema: _Schema, format_checker: FormatChecker | Unset = ...) -> None: ... - def iter_errors(self, instance, _schema: _Schema | None = ...) -> Generator[Any, None, None]: ... + def iter_errors(self, instance, _schema: _Schema | None = ...) -> Generator[Incomplete, None, None]: ... def descend( self, instance, schema: _Schema, path: Incomplete | None = ..., schema_path: Incomplete | None = ... - ) -> Generator[Any, None, None]: ... + ) -> Generator[Incomplete, None, None]: ... def validate(self, *args, **kwargs) -> None: ... def is_type(self, instance, type): ... def is_valid(self, instance, _schema: _Schema | None = ...) -> bool: ... -def validates(version: str) -> Callable[..., Any]: ... +def validates(version: str) -> Callable[..., Incomplete]: ... def create( meta_schema: _Schema, validators: Mapping[str, _ValidatorCallback] | tuple[()] = (), @@ -66,17 +66,17 @@ class Draft7Validator(_Validator): ... class Draft201909Validator(_Validator): ... class Draft202012Validator(_Validator): ... -_Handler: TypeAlias = Callable[[str], Any] +_Handler: TypeAlias = Callable[[str], Incomplete] class RefResolver: - referrer: dict[str, Any] - cache_remote: Any + referrer: dict[str, Incomplete] + cache_remote: Incomplete handlers: dict[str, _Handler] store: URIDict def __init__( self, base_uri: str, - referrer: dict[str, Any], + referrer: dict[str, Incomplete], store: SupportsKeysAndGetItem[str, str] | Iterable[tuple[str, str]] = ..., cache_remote: bool = True, handlers: SupportsKeysAndGetItem[str, _Handler] | Iterable[tuple[str, _Handler]] = (), diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi index 05d970c9f..f32c849b1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/__init__.pyi @@ -9,7 +9,7 @@ from re import Pattern from typing import IO, Any, ClassVar, Protocol, TypeVar, overload, type_check_only from typing_extensions import Literal, Self, TypeAlias -_Version: TypeAlias = Incomplete # from packaging.version +from ._vendor.packaging import requirements as packaging_requirements, version as packaging_version _T = TypeVar("_T") _D = TypeVar("_D", bound=Distribution) @@ -83,16 +83,14 @@ class Environment: def parse_requirements(strs: str | Iterable[str]) -> Generator[Requirement, None, None]: ... -class Requirement: +class RequirementParseError(packaging_requirements.InvalidRequirement): ... + +class Requirement(packaging_requirements.Requirement): unsafe_name: str project_name: str key: str - extras: tuple[str, ...] + extras: tuple[str, ...] # type: ignore[assignment] # incompatible override of attribute on base class specs: list[tuple[str, str]] - url: str | None - # TODO: change this to packaging.markers.Marker | None once we can import - # packaging.markers - marker: Incomplete | None def __init__(self, requirement_string: str) -> None: ... @staticmethod def parse(s: str | Iterable[str]) -> Requirement: ... @@ -268,7 +266,7 @@ class Distribution(NullProvider): @property def version(self) -> str: ... @property - def parsed_version(self) -> tuple[str, ...]: ... + def parsed_version(self) -> packaging_version.Version: ... py_version: str platform: str | None precedence: int @@ -339,7 +337,7 @@ class FileMetadata(EmptyProvider): class PEP440Warning(RuntimeWarning): ... -parse_version = _Version +parse_version = packaging_version.Version def yield_lines(iterable: _NestedStr) -> Generator[str, None, None]: ... def split_sections(s: _NestedStr) -> Generator[tuple[str | None, list[str]], None, None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/__init__.pyi new file mode 100644 index 000000000..1981f2d9b --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/__init__.pyi @@ -0,0 +1,8 @@ +__title__: str +__summary__: str +__uri__: str +__version__: str +__author__: str +__email__: str +__license__: str +__copyright__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/markers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/markers.pyi new file mode 100644 index 000000000..0a7acbbf3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/markers.pyi @@ -0,0 +1,13 @@ +__all__ = ["InvalidMarker", "UndefinedComparison", "UndefinedEnvironmentName", "Marker", "default_environment"] + +class InvalidMarker(ValueError): ... +class UndefinedComparison(ValueError): ... +class UndefinedEnvironmentName(ValueError): ... + +def default_environment() -> dict[str, str]: ... + +class Marker: + def __init__(self, marker: str) -> None: ... + def __hash__(self) -> int: ... + def __eq__(self, other: object) -> bool: ... + def evaluate(self, environment: dict[str, str] | None = None) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/requirements.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/requirements.pyi new file mode 100644 index 000000000..4f909fa75 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/requirements.pyi @@ -0,0 +1,14 @@ +from .markers import Marker +from .specifiers import SpecifierSet + +class InvalidRequirement(ValueError): ... + +class Requirement: + name: str + url: str | None + extras: set[str] + specifier: SpecifierSet + marker: Marker | None + def __init__(self, requirement_str: str) -> None: ... + def __hash__(self) -> int: ... + def __eq__(self, other: object) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/specifiers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/specifiers.pyi new file mode 100644 index 000000000..ec86ea306 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/specifiers.pyi @@ -0,0 +1,66 @@ +import abc +from collections.abc import Iterable, Iterator +from typing import TypeVar +from typing_extensions import TypeAlias + +from .version import Version + +# These exist at runtime, hence the public names +UnparsedVersion: TypeAlias = Version | str +UnparsedVersionVar = TypeVar("UnparsedVersionVar", bound=UnparsedVersion) # noqa: Y001 + +class InvalidSpecifier(ValueError): ... + +class BaseSpecifier(metaclass=abc.ABCMeta): + @abc.abstractmethod + def __str__(self) -> str: ... + @abc.abstractmethod + def __hash__(self) -> int: ... + @abc.abstractmethod + def __eq__(self, other: object) -> bool: ... + @property + @abc.abstractmethod + def prereleases(self) -> bool | None: ... + @prereleases.setter + def prereleases(self, value: bool) -> None: ... + @abc.abstractmethod + def contains(self, item: str, prereleases: bool | None = None) -> bool: ... + @abc.abstractmethod + def filter(self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None) -> Iterator[UnparsedVersionVar]: ... + +class Specifier(BaseSpecifier): + def __init__(self, spec: str = "", prereleases: bool | None = None) -> None: ... + @property # type: ignore[override] + def prereleases(self) -> bool: ... + @prereleases.setter + def prereleases(self, value: bool) -> None: ... + @property + def operator(self) -> str: ... + @property + def version(self) -> str: ... + def __str__(self) -> str: ... # noqa: Y029 # needed as it's abstract on the superclass + def __hash__(self) -> int: ... + def __eq__(self, other: object) -> bool: ... + def __contains__(self, item: Version | str) -> bool: ... + def contains(self, item: UnparsedVersion, prereleases: bool | None = None) -> bool: ... + def filter(self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None) -> Iterator[UnparsedVersionVar]: ... + +class SpecifierSet(BaseSpecifier): + def __init__(self, spec: str = "", prereleases: bool | None = None) -> None: ... + @property + def prereleases(self) -> bool | None: ... + @prereleases.setter + def prereleases(self, value: bool) -> None: ... + @property + def operator(self) -> str: ... + @property + def version(self) -> str: ... + def __str__(self) -> str: ... # noqa: Y029 # needed as it's abstract on the superclass + def __hash__(self) -> int: ... + def __and__(self, other: SpecifierSet | str) -> SpecifierSet: ... + def __len__(self) -> int: ... + def __iter__(self) -> Iterator[Specifier]: ... + def __eq__(self, other: object) -> bool: ... + def __contains__(self, item: UnparsedVersion) -> bool: ... + def contains(self, item: UnparsedVersion, prereleases: bool | None = None, installed: bool | None = None) -> bool: ... + def filter(self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None) -> Iterator[UnparsedVersionVar]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/version.pyi b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/version.pyi new file mode 100644 index 000000000..e05866730 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/pkg_resources/_vendor/packaging/version.pyi @@ -0,0 +1,49 @@ +from typing_extensions import Final + +__all__ = ["VERSION_PATTERN", "parse", "Version", "InvalidVersion"] + +def parse(version: str) -> Version: ... + +class InvalidVersion(ValueError): ... + +VERSION_PATTERN: Final[str] + +class _BaseVersion: + def __hash__(self) -> int: ... + def __lt__(self, other: _BaseVersion) -> bool: ... + def __le__(self, other: _BaseVersion) -> bool: ... + def __ge__(self, other: _BaseVersion) -> bool: ... + def __gt__(self, other: _BaseVersion) -> bool: ... + def __eq__(self, other: object) -> bool: ... + def __ne__(self, other: object) -> bool: ... + +class Version(_BaseVersion): + def __init__(self, version: str) -> None: ... + @property + def epoch(self) -> int: ... + @property + def release(self) -> tuple[int, ...]: ... + @property + def pre(self) -> tuple[str, int] | None: ... + @property + def post(self) -> int | None: ... + @property + def dev(self) -> int | None: ... + @property + def local(self) -> str | None: ... + @property + def public(self) -> str: ... + @property + def base_version(self) -> str: ... + @property + def is_prerelease(self) -> bool: ... + @property + def is_postrelease(self) -> bool: ... + @property + def is_devrelease(self) -> bool: ... + @property + def major(self) -> int: ... + @property + def minor(self) -> int: ... + @property + def micro(self) -> int: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/__init__.pyi index 106d2efbc..743e6ed0d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/__init__.pyi @@ -46,6 +46,7 @@ from stripe.api_resources.login_link import LoginLink as LoginLink from stripe.api_resources.mandate import Mandate as Mandate from stripe.api_resources.order import Order as Order from stripe.api_resources.payment_intent import PaymentIntent as PaymentIntent +from stripe.api_resources.payment_link import PaymentLink as PaymentLink from stripe.api_resources.payment_method import PaymentMethod as PaymentMethod from stripe.api_resources.payout import Payout as Payout from stripe.api_resources.person import Person as Person diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_link.pyi b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_link.pyi new file mode 100644 index 000000000..4cdc9c3b1 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/stripe/api_resources/payment_link.pyi @@ -0,0 +1,24 @@ +from typing import overload + +from stripe.api_resources.abstract import ( + CreateableAPIResource as CreateableAPIResource, + ListableAPIResource as ListableAPIResource, + UpdateableAPIResource as UpdateableAPIResource, +) + +class PaymentLink(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): + OBJECT_NAME: str + + @overload + @classmethod + def list_line_items( + cls, + payment_link: str, + api_key: str | None = None, + stripe_version: str | None = None, + stripe_account: str | None = None, + **params, + ): ... + @overload + @classmethod + def list_line_items(cls, idempotency_key: str | None = None, **params): ... From 6311bfb4f4662d69eb7bee06935fab84366ef376 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 17 Jul 2023 13:59:36 -0700 Subject: [PATCH 406/525] Fixed bug that caused an error to go undetected when the LHS of a call expression is a union that includes an abstract static or class method. --- .../src/analyzer/typeEvaluator.ts | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 010d64d52..5ea65e9bd 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -7647,30 +7647,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions addError(Localizer.Diagnostic.revealLocalsArgs(), node); } } else { - // Check for an attempt to invoke an abstract static or class method. - if ( - isFunction(baseTypeResult.type) && - baseTypeResult.type.boundToType && - isInstantiableClass(baseTypeResult.type.boundToType) && - !baseTypeResult.type.boundToType.includeSubclasses - ) { - if (FunctionType.isAbstractMethod(baseTypeResult.type)) { - if ( - FunctionType.isStaticMethod(baseTypeResult.type) || - FunctionType.isClassMethod(baseTypeResult.type) - ) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.abstractMethodInvocation().format({ - method: baseTypeResult.type.details.name, - }), - node.leftExpression - ); - } - } - } - const callResult = validateCallArguments( node, argList, @@ -8763,6 +8739,30 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return undefined; } + // Check for an attempt to invoke an abstract static or class method. + if ( + expandedSubtype.boundToType && + isInstantiableClass(expandedSubtype.boundToType) && + !expandedSubtype.boundToType.includeSubclasses + ) { + if (FunctionType.isAbstractMethod(expandedSubtype)) { + if ( + FunctionType.isStaticMethod(expandedSubtype) || + FunctionType.isClassMethod(expandedSubtype) + ) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet + .reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.abstractMethodInvocation().format({ + method: expandedSubtype.details.name, + }), + errorNode.nodeType === ParseNodeType.Call ? errorNode.leftExpression : errorNode + ); + } + } + } + // The stdlib collections/__init__.pyi stub file defines namedtuple // as a function rather than a class, so we need to check for it here. if (expandedSubtype.details.builtInName === 'namedtuple') { From 7924640f959086e36ae1a0c4642a3b04051c62ca Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 17 Jul 2023 14:55:49 -0700 Subject: [PATCH 407/525] Refactored logic to break up the validateCallArguments function in the type evaluator. It was getting very unwieldy. No functional change. --- .../src/analyzer/constructors.ts | 16 +- .../src/analyzer/typeEvaluator.ts | 608 ++++++++++-------- .../src/analyzer/typeEvaluatorTypes.ts | 4 +- 3 files changed, 333 insertions(+), 295 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index da8b4e2e5..94c357a4e 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -140,7 +140,7 @@ export function validateConstructorArguments( validatedArgExpressions = true; } else if (returnResult.returnType) { const transformed = applyConstructorTransform(evaluator, errorNode, argList, type, { - argumentErrors: returnResult.argumentErrors, + argumentErrors: !!returnResult.argumentErrors, returnType: returnResult.returnType, isTypeIncomplete: !!returnResult.isTypeIncomplete, }); @@ -206,7 +206,7 @@ function validateNewAndInitMethods( if (newCallResult.argumentErrors) { argumentErrors = true; } else { - appendArray(overloadsUsedForCall, newCallResult.overloadsUsedForCall); + appendArray(overloadsUsedForCall, newCallResult.overloadsUsedForCall ?? []); } if (newCallResult.isTypeIncomplete) { @@ -272,7 +272,7 @@ function validateNewAndInitMethods( if (initCallResult.argumentErrors) { argumentErrors = true; - } else { + } else if (initCallResult.overloadsUsedForCall) { overloadsUsedForCall.push(...initCallResult.overloadsUsedForCall); } @@ -313,7 +313,7 @@ function validateNewAndInitMethods( if (callResult.argumentErrors) { argumentErrors = true; - } else { + } else if (callResult.overloadsUsedForCall) { appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); } @@ -375,7 +375,7 @@ function validateNewMethod( } else { newReturnType = callResult.returnType; - if (overloadsUsedForCall.length === 0) { + if (overloadsUsedForCall.length === 0 && callResult.overloadsUsedForCall) { overloadsUsedForCall.push(...callResult.overloadsUsedForCall); } } @@ -478,7 +478,9 @@ function validateInitMethod( argumentErrors = true; } - appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); + if (callResult.overloadsUsedForCall) { + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); + } return applyExpectedSubtypeForConstructor(evaluator, type, expectedSubType, typeVarContext); } @@ -528,7 +530,7 @@ function validateInitMethod( if (callResult.argumentErrors) { argumentErrors = true; - } else { + } else if (callResult.overloadsUsedForCall) { overloadsUsedForCall.push(...callResult.overloadsUsedForCall); } } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 5ea65e9bd..a6609253b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8812,7 +8812,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isTypeIncomplete = true; } - appendArray(overloadsUsedForCall, functionResult.overloadsUsedForCall); + if (functionResult.overloadsUsedForCall) { + appendArray(overloadsUsedForCall, functionResult.overloadsUsedForCall); + } if (functionResult.argumentErrors) { argumentErrors = true; @@ -8826,7 +8828,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions argList, expandedSubtype, { - argumentErrors: functionResult.argumentErrors, + argumentErrors: !!functionResult.argumentErrors, returnType: functionResult.returnType ?? UnknownType.create(isTypeIncomplete), isTypeIncomplete, } @@ -8857,7 +8859,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return evaluateCastCall(argList, errorNode); } - const functionResult = validateOverloadedFunctionArguments( + const callResult = validateOverloadedFunctionArguments( errorNode, argList, { type: expandedSubtype, isIncomplete: callTypeResult.isIncomplete }, @@ -8866,16 +8868,18 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferenceContext ); - appendArray(overloadsUsedForCall, functionResult.overloadsUsedForCall); + if (callResult.overloadsUsedForCall) { + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); + } - if (functionResult.isTypeIncomplete) { + if (callResult.isTypeIncomplete) { isTypeIncomplete = true; } - if (functionResult.argumentErrors) { + if (callResult.argumentErrors) { argumentErrors = true; } else { - specializedInitSelfType = functionResult.specializedInitSelfType; + specializedInitSelfType = callResult.specializedInitSelfType; // Call the function transform logic to handle special-cased functions. const transformed = applyFunctionTransform( @@ -8884,13 +8888,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions argList, expandedSubtype, { - argumentErrors: functionResult.argumentErrors, - returnType: functionResult.returnType ?? UnknownType.create(isTypeIncomplete), + argumentErrors: !!callResult.argumentErrors, + returnType: callResult.returnType ?? UnknownType.create(isTypeIncomplete), isTypeIncomplete, } ); - functionResult.returnType = transformed.returnType; + callResult.returnType = transformed.returnType; if (transformed.isTypeIncomplete) { isTypeIncomplete = true; } @@ -8899,307 +8903,85 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - return functionResult.returnType ?? UnknownType.create(); + return callResult.returnType ?? UnknownType.create(); } case TypeCategory.Class: { if (TypeBase.isInstantiable(expandedSubtype)) { - if (expandedSubtype.literalValue !== undefined) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.literalNotCallable(), - errorNode - ); - argumentErrors = true; - return UnknownType.create(); - } - - if (ClassType.isBuiltIn(expandedSubtype)) { - const className = expandedSubtype.aliasName || expandedSubtype.details.name; - - if (className === 'type') { - // Validate the constructor arguments. - validateConstructorArguments( - evaluatorInterface, - errorNode, - argList, - expandedSubtype, - skipUnknownArgCheck, - inferenceContext - ); - - // Handle the 'type' call specially. - if (argList.length === 1) { - // The one-parameter form of "type" returns the class - // for the specified object. - const argType = getTypeOfArgument(argList[0]).type; - return mapSubtypes(argType, (subtype) => { - if ( - isClassInstance(subtype) || - (isTypeVar(subtype) && TypeBase.isInstance(subtype)) || - isNoneInstance(subtype) - ) { - return convertToInstantiable(stripLiteralValue(subtype)); - } else if (isFunction(subtype) && TypeBase.isInstance(subtype)) { - return FunctionType.cloneAsInstantiable(subtype); - } - - return AnyType.create(); - }); - } else if (argList.length >= 2) { - // The two-parameter form of "type" returns a new class type - // built from the specified base types. - return createType(errorNode, argList) || AnyType.create(); - } - - // If the parameter to type() is not statically known, - // fall back to Any. - return AnyType.create(); - } - - if (className === 'TypeVar') { - return createTypeVarType(errorNode, expandedSubtype, argList); - } - - if (className === 'TypeVarTuple') { - return createTypeVarTupleType(errorNode, expandedSubtype, argList); - } - - if (className === 'ParamSpec') { - return createParamSpecType(errorNode, expandedSubtype, argList); - } - - if (className === 'TypeAliasType') { - const newTypeAlias = createTypeAliasType(errorNode, argList); - if (newTypeAlias) { - return newTypeAlias; - } - } - - if (className === 'NamedTuple') { - return createNamedTupleType( - evaluatorInterface, - errorNode, - argList, - /* includesTypes */ true - ); - } - - if (className === 'NewType') { - return createNewType(errorNode, argList); - } - - if ( - className === 'Protocol' || - className === 'Generic' || - className === 'Callable' || - className === 'Concatenate' || - className === 'Type' - ) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); - addDiagnostic( - fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.typeNotIntantiable().format({ type: className }), - errorNode - ); - return AnyType.create(); - } - - if (isClass(unexpandedSubtype) && isKnownEnumType(className)) { - return ( - createEnumType(evaluatorInterface, errorNode, expandedSubtype, argList) ?? - UnknownType.create() - ); - } - - if (className === 'TypedDict') { - return createTypedDictType(evaluatorInterface, errorNode, expandedSubtype, argList); - } - - if (className === 'auto' && argList.length === 0) { - return getEnumAutoValueType(evaluatorInterface, errorNode); - } - } - - if (ClassType.supportsAbstractMethods(expandedSubtype)) { - const abstractMethods = getAbstractMethods(expandedSubtype); - if ( - abstractMethods.length > 0 && - !expandedSubtype.includeSubclasses && - !isTypeVar(unexpandedSubtype) - ) { - // If the class is abstract, it can't be instantiated. - const diagAddendum = new DiagnosticAddendum(); - const errorsToDisplay = 2; - - abstractMethods.forEach((abstractMethod, index) => { - if (index === errorsToDisplay) { - diagAddendum.addMessage( - Localizer.DiagnosticAddendum.memberIsAbstractMore().format({ - count: abstractMethods.length - errorsToDisplay, - }) - ); - } else if (index < errorsToDisplay) { - if (isInstantiableClass(abstractMethod.classType)) { - const className = abstractMethod.classType.details.name; - diagAddendum.addMessage( - Localizer.DiagnosticAddendum.memberIsAbstract().format({ - type: className, - name: abstractMethod.symbolName, - }) - ); - } - } - }); - - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet - .reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.instantiateAbstract().format({ - type: expandedSubtype.details.name, - }) + diagAddendum.getString(), - errorNode - ); - } - } - - if (ClassType.isProtocolClass(expandedSubtype) && !expandedSubtype.includeSubclasses) { - // If the class is a protocol, it can't be instantiated. - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.instantiateProtocol().format({ - type: expandedSubtype.details.name, - }), - errorNode - ); - } - - // Assume this is a call to the constructor. - const constructorResult = validateConstructorArguments( - evaluatorInterface, + const callResult = validateInstantiableClassCall( errorNode, argList, expandedSubtype, + unexpandedSubtype, skipUnknownArgCheck, inferenceContext ); - appendArray(overloadsUsedForCall, constructorResult.overloadsUsedForCall); - - if (constructorResult.argumentErrors) { + if (callResult.argumentErrors) { argumentErrors = true; + } else if (callResult.overloadsUsedForCall) { + overloadsUsedForCall.push(...callResult.overloadsUsedForCall); } - if (constructorResult.isTypeIncomplete) { + if (callResult.isTypeIncomplete) { isTypeIncomplete = true; } - let returnType = constructorResult.returnType; + return callResult.returnType; + } + + const memberType = getTypeOfObjectMember( + errorNode, + expandedSubtype, + '__call__', + /* usage */ undefined, + /* diag */ undefined, + MemberAccessFlags.SkipAttributeAccessOverride + )?.type; + + if (memberType) { + const callResult = validateCallArguments( + errorNode, + argList, + { type: memberType }, + typeVarContext, + skipUnknownArgCheck, + inferenceContext, + recursionCount + ); - // If the expandedSubtype originated from a TypeVar, convert - // the constructed type back to the TypeVar. For example, if - // we have `cls: Type[_T]` followed by `_T()`. - if (isTypeVar(unexpandedSubtype)) { - returnType = convertToInstance(unexpandedSubtype); + if (callResult.argumentErrors) { + argumentErrors = true; + } else if (callResult.overloadsUsedForCall) { + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); } - // If we instantiated a type, transform it into a class. - // This can happen if someone directly instantiates a metaclass - // deriving from type. if ( - returnType && - isClassInstance(returnType) && - returnType.details.mro.some( - (baseClass) => - isInstantiableClass(baseClass) && ClassType.isBuiltIn(baseClass, 'type') - ) + isTypeVar(unexpandedSubtype) && + TypeBase.isInstantiable(unexpandedSubtype) && + isClass(expandedSubtype) && + ClassType.isBuiltIn(expandedSubtype, 'type') ) { - let newClassName = '__class_' + returnType.details.name; - if (argList.length === 3) { - const firstArgType = getTypeOfArgument(argList[0]).type; - if ( - isClassInstance(firstArgType) && - ClassType.isBuiltIn(firstArgType, 'str') && - typeof firstArgType.literalValue === 'string' - ) { - newClassName = firstArgType.literalValue; - } - } - - const newClassType = ClassType.createInstantiable( - newClassName, - '', - '', - AnalyzerNodeInfo.getFileInfo(errorNode).filePath, - ClassTypeFlags.None, - ParseTreeUtils.getTypeSourceId(errorNode), - ClassType.cloneAsInstantiable(returnType), - ClassType.cloneAsInstantiable(returnType) - ); - newClassType.details.baseClasses.push(getBuiltInType(errorNode, 'object')); - newClassType.details.effectiveMetaclass = expandedSubtype; - computeMroLinearization(newClassType); - return newClassType; + // Handle the case where a Type[T] is being called. We presume this + // will instantiate an object of type T. + return convertToInstance(unexpandedSubtype); } - return returnType; - } else { - const memberType = getTypeOfObjectMember( - errorNode, - expandedSubtype, - '__call__', - /* usage */ undefined, - /* diag */ undefined, - MemberAccessFlags.SkipAttributeAccessOverride - )?.type; - - if (memberType) { - const functionResult = validateCallArguments( - errorNode, - argList, - { type: memberType }, - typeVarContext, - skipUnknownArgCheck, - inferenceContext, - recursionCount - ); - - appendArray(overloadsUsedForCall, functionResult.overloadsUsedForCall); - - if (functionResult.argumentErrors) { - argumentErrors = true; - } - - if ( - isTypeVar(unexpandedSubtype) && - TypeBase.isInstantiable(unexpandedSubtype) && - isClass(expandedSubtype) && - ClassType.isBuiltIn(expandedSubtype, 'type') - ) { - // Handle the case where a Type[T] is being called. We presume this - // will instantiate an object of type T. - return convertToInstance(unexpandedSubtype); - } - - return functionResult.returnType ?? UnknownType.create(); - } + return callResult.returnType ?? UnknownType.create(); + } - if (!memberType || !isAnyOrUnknown(memberType)) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.objectNotCallable().format({ - type: printType(expandedSubtype), - }), - errorNode - ); - } - return UnknownType.create(); + if (!memberType || !isAnyOrUnknown(memberType)) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.objectNotCallable().format({ + type: printType(expandedSubtype), + }), + errorNode + ); } + + return UnknownType.create(); } case TypeCategory.None: { @@ -9233,6 +9015,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions Localizer.Diagnostic.noneNotCallable(), errorNode ); + return undefined; } @@ -9253,7 +9036,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions recursionCount ); - appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); + if (callResult.overloadsUsedForCall) { + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); + } if (callResult.argumentErrors) { argumentErrors = true; @@ -9269,6 +9054,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions Localizer.Diagnostic.moduleNotCallable(), errorNode ); + return undefined; } } @@ -9293,6 +9079,256 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }; } + function validateInstantiableClassCall( + errorNode: ExpressionNode, + argList: FunctionArgument[], + expandedCallType: ClassType, + unexpandedCallType: Type, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined + ): CallResult { + if (expandedCallType.literalValue !== undefined) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.literalNotCallable(), + errorNode + ); + + return { returnType: UnknownType.create(), argumentErrors: true }; + } + + if (ClassType.isBuiltIn(expandedCallType)) { + const className = expandedCallType.aliasName || expandedCallType.details.name; + + if (className === 'type') { + // Validate the constructor arguments. + validateConstructorArguments( + evaluatorInterface, + errorNode, + argList, + expandedCallType, + skipUnknownArgCheck, + inferenceContext + ); + + // Handle the 'type' call specially. + if (argList.length === 1) { + // The one-parameter form of "type" returns the class + // for the specified object. + const argType = getTypeOfArgument(argList[0]).type; + const returnType = mapSubtypes(argType, (subtype) => { + if ( + isClassInstance(subtype) || + (isTypeVar(subtype) && TypeBase.isInstance(subtype)) || + isNoneInstance(subtype) + ) { + return convertToInstantiable(stripLiteralValue(subtype)); + } else if (isFunction(subtype) && TypeBase.isInstance(subtype)) { + return FunctionType.cloneAsInstantiable(subtype); + } + + return AnyType.create(); + }); + + return { returnType }; + } + + if (argList.length >= 2) { + // The two-parameter form of "type" returns a new class type + // built from the specified base types. + return { returnType: createType(errorNode, argList) || AnyType.create() }; + } + + // If the parameter to type() is not statically known, + // fall back to Any. + return { returnType: AnyType.create() }; + } + + if (className === 'TypeVar') { + return { + returnType: createTypeVarType(errorNode, expandedCallType, argList), + }; + } + + if (className === 'TypeVarTuple') { + return { + returnType: createTypeVarTupleType(errorNode, expandedCallType, argList), + }; + } + + if (className === 'ParamSpec') { + return { + returnType: createParamSpecType(errorNode, expandedCallType, argList), + }; + } + + if (className === 'TypeAliasType') { + const newTypeAlias = createTypeAliasType(errorNode, argList); + if (newTypeAlias) { + return { returnType: newTypeAlias }; + } + } + + if (className === 'NamedTuple') { + return { + returnType: createNamedTupleType(evaluatorInterface, errorNode, argList, /* includesTypes */ true), + }; + } + + if (className === 'NewType') { + return { returnType: createNewType(errorNode, argList) }; + } + + if ( + className === 'Protocol' || + className === 'Generic' || + className === 'Callable' || + className === 'Concatenate' || + className === 'Type' + ) { + const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typeNotIntantiable().format({ type: className }), + errorNode + ); + + return { returnType: AnyType.create() }; + } + + if (isClass(unexpandedCallType) && isKnownEnumType(className)) { + return { + returnType: + createEnumType(evaluatorInterface, errorNode, expandedCallType, argList) ?? + UnknownType.create(), + }; + } + + if (className === 'TypedDict') { + return { returnType: createTypedDictType(evaluatorInterface, errorNode, expandedCallType, argList) }; + } + + if (className === 'auto' && argList.length === 0) { + return { returnType: getEnumAutoValueType(evaluatorInterface, errorNode) }; + } + } + + if (ClassType.supportsAbstractMethods(expandedCallType)) { + const abstractMethods = getAbstractMethods(expandedCallType); + if (abstractMethods.length > 0 && !expandedCallType.includeSubclasses && !isTypeVar(unexpandedCallType)) { + // If the class is abstract, it can't be instantiated. + const diagAddendum = new DiagnosticAddendum(); + const errorsToDisplay = 2; + + abstractMethods.forEach((abstractMethod, index) => { + if (index === errorsToDisplay) { + diagAddendum.addMessage( + Localizer.DiagnosticAddendum.memberIsAbstractMore().format({ + count: abstractMethods.length - errorsToDisplay, + }) + ); + } else if (index < errorsToDisplay) { + if (isInstantiableClass(abstractMethod.classType)) { + const className = abstractMethod.classType.details.name; + diagAddendum.addMessage( + Localizer.DiagnosticAddendum.memberIsAbstract().format({ + type: className, + name: abstractMethod.symbolName, + }) + ); + } + } + }); + + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.instantiateAbstract().format({ + type: expandedCallType.details.name, + }) + diagAddendum.getString(), + errorNode + ); + } + } + + if (ClassType.isProtocolClass(expandedCallType) && !expandedCallType.includeSubclasses) { + // If the class is a protocol, it can't be instantiated. + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.instantiateProtocol().format({ + type: expandedCallType.details.name, + }), + errorNode + ); + } + + // Assume this is a call to the constructor. + const constructorResult = validateConstructorArguments( + evaluatorInterface, + errorNode, + argList, + expandedCallType, + skipUnknownArgCheck, + inferenceContext + ); + + const overloadsUsedForCall = constructorResult.overloadsUsedForCall; + const argumentErrors = constructorResult.argumentErrors; + const isTypeIncomplete = constructorResult.isTypeIncomplete; + + let returnType = constructorResult.returnType; + + // If the expandedCallType originated from a TypeVar, convert + // the constructed type back to the TypeVar. For example, if + // we have `cls: Type[_T]` followed by `_T()`. + if (isTypeVar(unexpandedCallType)) { + returnType = convertToInstance(unexpandedCallType); + } + + // If we instantiated a type, transform it into a class. + // This can happen if someone directly instantiates a metaclass + // deriving from type. + if ( + returnType && + isClassInstance(returnType) && + returnType.details.mro.some( + (baseClass) => isInstantiableClass(baseClass) && ClassType.isBuiltIn(baseClass, 'type') + ) + ) { + let newClassName = '__class_' + returnType.details.name; + if (argList.length === 3) { + const firstArgType = getTypeOfArgument(argList[0]).type; + if ( + isClassInstance(firstArgType) && + ClassType.isBuiltIn(firstArgType, 'str') && + typeof firstArgType.literalValue === 'string' + ) { + newClassName = firstArgType.literalValue; + } + } + + const newClassType = ClassType.createInstantiable( + newClassName, + '', + '', + AnalyzerNodeInfo.getFileInfo(errorNode).filePath, + ClassTypeFlags.None, + ParseTreeUtils.getTypeSourceId(errorNode), + ClassType.cloneAsInstantiable(returnType), + ClassType.cloneAsInstantiable(returnType) + ); + newClassType.details.baseClasses.push(getBuiltInType(errorNode, 'object')); + newClassType.details.effectiveMetaclass = expandedCallType; + computeMroLinearization(newClassType); + returnType = newClassType; + } + + return { returnType, overloadsUsedForCall, argumentErrors, isTypeIncomplete }; + } + // Evaluates the type of the "cast" call. function evaluateCastCall(argList: FunctionArgument[], errorNode: ExpressionNode) { // Verify that the cast is necessary. diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 3a0ec36ed..cd45716ed 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -323,7 +323,7 @@ export interface CallResult { isTypeIncomplete?: boolean | undefined; // Were any errors discovered when evaluating argument types? - argumentErrors: boolean; + argumentErrors?: boolean; // Did one or more arguments evaluated to Any or Unknown? anyOrUnknownArgument?: UnknownType | AnyType; @@ -341,7 +341,7 @@ export interface CallResult { // The overload or overloads used to satisfy the call. There can // be multiple overloads in the case where the call type is a union // or we have used union expansion for arguments. - overloadsUsedForCall: FunctionType[]; + overloadsUsedForCall?: FunctionType[]; // Types of individual arguments. argResults?: ArgResult[]; From dc81efff28798d50041bfa59b2ee32ccb7ee3d97 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Jul 2023 07:37:34 -0700 Subject: [PATCH 408/525] Fixed a bug that resulted in incorrect evaluation of a type alias defined with `typing.TypeAlias` and consisting of a single (naked) type variable. (#5527) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 9 +++------ .../pyright-internal/src/tests/samples/typeAlias10.py | 7 +++++++ .../pyright-internal/src/tests/typeEvaluator3.test.ts | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index a6609253b..83b9f54b0 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -14592,12 +14592,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // with this type alias. typeParameters = []; - // Skip this for a simple TypeVar (one that's not part of a union). - if (!isTypeVar(type) || TypeBase.isAnnotated(type)) { - doForEachSubtype(type, (subtype) => { - addTypeVarsToListIfUnique(typeParameters!, getTypeVarArgumentsRecursive(subtype)); - }); - } + doForEachSubtype(type, (subtype) => { + addTypeVarsToListIfUnique(typeParameters!, getTypeVarArgumentsRecursive(subtype)); + }); // Don't include any synthesized type variables. typeParameters = typeParameters.filter((typeVar) => !typeVar.details.isSynthesized); diff --git a/packages/pyright-internal/src/tests/samples/typeAlias10.py b/packages/pyright-internal/src/tests/samples/typeAlias10.py index 93bbec90c..06d3a00e4 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias10.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias10.py @@ -43,3 +43,10 @@ def __getitem__(self, key: Any) -> int: item = d[0] x: int = D_Alias[Any]()[0] + +E: TypeAlias = _T + +e1: E[int] = 3 + +# This should generate an error if reportMissingTypeArgument is enabled. +e2: E = 3 diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 4def4a621..e751eedae 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -571,7 +571,7 @@ test('TypeAlias9', () => { test('TypeAlias10', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAlias10.py']); - TestUtils.validateResults(analysisResults, 4); + TestUtils.validateResults(analysisResults, 5); }); test('TypeAlias11', () => { From 5be5852603a2809d930ff0e2ea68b7e50e1a2793 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Jul 2023 10:22:25 -0700 Subject: [PATCH 409/525] Further refactored the internal implementation of `validateCallArguments` into subroutines so it is easier to maintain. Fixed a few small bugs that I discovered along the way. (#5529) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 677 ++++++++++-------- 1 file changed, 362 insertions(+), 315 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 83b9f54b0..9bc3c5f14 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8708,378 +8708,364 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions callTypeResult.type, /* conditionFilter */ undefined, (expandedSubtype, unexpandedSubtype) => { - switch (expandedSubtype.category) { - case TypeCategory.Unknown: - case TypeCategory.Any: { - // Touch all of the args so they're marked accessed. Don't bother - // doing this if the call type is incomplete because this will need - // to be done again once it is complete. - if (!callTypeResult.isIncomplete) { - argList.forEach((arg) => { - if (arg.valueExpression && !isSpeculativeModeInUse(arg.valueExpression)) { - getTypeOfArgument(arg); - } - }); - } + const callResult = validateCallArgumentsForSubtype( + errorNode, + argList, + expandedSubtype, + unexpandedSubtype, + !!callTypeResult.isIncomplete, + typeVarContext, + skipUnknownArgCheck, + inferenceContext, + recursionCount + ); - return expandedSubtype; - } + if (callResult.argumentErrors) { + argumentErrors = true; + } - case TypeCategory.Function: { - if (TypeBase.isInstantiable(expandedSubtype)) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.callableNotInstantiable().format({ - type: printType(expandedSubtype), - }), - errorNode - ); - argumentErrors = true; - return undefined; - } + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } - // Check for an attempt to invoke an abstract static or class method. - if ( - expandedSubtype.boundToType && - isInstantiableClass(expandedSubtype.boundToType) && - !expandedSubtype.boundToType.includeSubclasses - ) { - if (FunctionType.isAbstractMethod(expandedSubtype)) { - if ( - FunctionType.isStaticMethod(expandedSubtype) || - FunctionType.isClassMethod(expandedSubtype) - ) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet - .reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.abstractMethodInvocation().format({ - method: expandedSubtype.details.name, - }), - errorNode.nodeType === ParseNodeType.Call ? errorNode.leftExpression : errorNode - ); - } - } - } + if (callResult.overloadsUsedForCall) { + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); + } - // The stdlib collections/__init__.pyi stub file defines namedtuple - // as a function rather than a class, so we need to check for it here. - if (expandedSubtype.details.builtInName === 'namedtuple') { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportUntypedNamedTuple, - DiagnosticRule.reportUntypedNamedTuple, - Localizer.Diagnostic.namedTupleNoTypes(), - errorNode - ); - return createNamedTupleType( - evaluatorInterface, - errorNode, - argList, - /* includesTypes */ false - ); - } + specializedInitSelfType = callResult.specializedInitSelfType; - // Handle the NewType specially, replacing the normal return type. - if (expandedSubtype.details.builtInName === 'NewType') { - return createNewType(errorNode, argList); - } - - let effectiveTypeVarContext = typeVarContext; - if (!effectiveTypeVarContext) { - // If a typeVarContext wasn't provided by the caller, allocate one here. - effectiveTypeVarContext = new TypeVarContext(getTypeVarScopeIds(expandedSubtype)); - - // There are certain cases, such as with super().__new__(cls) calls where - // the call is a constructor but the proper TypeVar scope has been lost. - // We'll add a wildcard TypeVar scope here. This is a bit of a hack and - // we may need to revisit this in the future. - if (FunctionType.isConstructorMethod(expandedSubtype)) { - effectiveTypeVarContext.addSolveForScope(WildcardTypeVarScopeId); - } - } + return callResult.returnType; + } + ); - const functionResult = validateFunctionArguments( - errorNode, - argList, - { type: expandedSubtype, isIncomplete: callTypeResult.isIncomplete }, - effectiveTypeVarContext, - skipUnknownArgCheck, - inferenceContext - ); + // If we ended up with a "Never" type because all code paths returned + // undefined due to argument errors, transform the result into an Unknown + // to avoid subsequent false positives. + if (argumentErrors && isNever(returnType) && !returnType.isNoReturn) { + returnType = UnknownType.create(); + } - if (functionResult.isTypeIncomplete) { - isTypeIncomplete = true; - } + return { + argumentErrors, + returnType, + isTypeIncomplete, + specializedInitSelfType, + overloadsUsedForCall, + }; + } - if (functionResult.overloadsUsedForCall) { - appendArray(overloadsUsedForCall, functionResult.overloadsUsedForCall); + function validateCallArgumentsForSubtype( + errorNode: ExpressionNode, + argList: FunctionArgument[], + expandedCallType: Type, + unexpandedCallType: Type, + isCallTypeIncomplete: boolean, + typeVarContext: TypeVarContext | undefined, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined, + recursionCount: number + ): CallResult { + switch (expandedCallType.category) { + case TypeCategory.Never: + case TypeCategory.Unknown: + case TypeCategory.Any: { + // Touch all of the args so they're marked accessed. Don't bother + // doing this if the call type is incomplete because this will need + // to be done again once it is complete. + if (!isCallTypeIncomplete) { + argList.forEach((arg) => { + if (arg.valueExpression && !isSpeculativeModeInUse(arg.valueExpression)) { + getTypeOfArgument(arg); } + }); + } - if (functionResult.argumentErrors) { - argumentErrors = true; - } else { - specializedInitSelfType = functionResult.specializedInitSelfType; - - // Call the function transform logic to handle special-cased functions. - const transformed = applyFunctionTransform( - evaluatorInterface, - errorNode, - argList, - expandedSubtype, - { - argumentErrors: !!functionResult.argumentErrors, - returnType: functionResult.returnType ?? UnknownType.create(isTypeIncomplete), - isTypeIncomplete, - } - ); + return { returnType: expandedCallType }; + } - functionResult.returnType = transformed.returnType; - if (transformed.isTypeIncomplete) { - isTypeIncomplete = true; - } - if (transformed.argumentErrors) { - argumentErrors = true; - } - } + case TypeCategory.Function: { + return validateCallForFunction( + errorNode, + argList, + expandedCallType, + isCallTypeIncomplete, + typeVarContext, + skipUnknownArgCheck, + inferenceContext + ); + } - if (expandedSubtype.details.builtInName === '__import__') { - // For the special __import__ type, we'll override the return type to be "Any". - // This is required because we don't know what module was imported, and we don't - // want to fail type checks when accessing members of the resulting module type. - return AnyType.create(); - } + case TypeCategory.OverloadedFunction: { + return validateCallForOverloadedFunction( + errorNode, + argList, + expandedCallType, + isCallTypeIncomplete, + typeVarContext, + skipUnknownArgCheck, + inferenceContext + ); + } - return functionResult.returnType; - } + case TypeCategory.Class: { + if (TypeBase.isInstantiable(expandedCallType)) { + return validateCallForInstantiableClass( + errorNode, + argList, + expandedCallType, + unexpandedCallType, + skipUnknownArgCheck, + inferenceContext + ); + } - case TypeCategory.OverloadedFunction: { - // Handle the 'cast' call as a special case. - if (expandedSubtype.overloads[0].details.builtInName === 'cast' && argList.length === 2) { - return evaluateCastCall(argList, errorNode); - } + return validateCallForClassInstance( + errorNode, + argList, + expandedCallType, + unexpandedCallType, + typeVarContext, + skipUnknownArgCheck, + inferenceContext, + recursionCount + ); + } - const callResult = validateOverloadedFunctionArguments( + case TypeCategory.None: { + if (TypeBase.isInstantiable(expandedCallType)) { + if (noneType && isInstantiableClass(noneType)) { + const callResult = validateCallForInstantiableClass( errorNode, argList, - { type: expandedSubtype, isIncomplete: callTypeResult.isIncomplete }, - typeVarContext, + noneType, + noneType, skipUnknownArgCheck, inferenceContext ); - if (callResult.overloadsUsedForCall) { - appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); - } - - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } - - if (callResult.argumentErrors) { - argumentErrors = true; - } else { - specializedInitSelfType = callResult.specializedInitSelfType; - - // Call the function transform logic to handle special-cased functions. - const transformed = applyFunctionTransform( - evaluatorInterface, - errorNode, - argList, - expandedSubtype, - { - argumentErrors: !!callResult.argumentErrors, - returnType: callResult.returnType ?? UnknownType.create(isTypeIncomplete), - isTypeIncomplete, - } - ); - - callResult.returnType = transformed.returnType; - if (transformed.isTypeIncomplete) { - isTypeIncomplete = true; - } - if (transformed.argumentErrors) { - argumentErrors = true; - } - } - - return callResult.returnType ?? UnknownType.create(); + return { ...callResult, returnType: NoneType.createInstance() }; } - case TypeCategory.Class: { - if (TypeBase.isInstantiable(expandedSubtype)) { - const callResult = validateInstantiableClassCall( - errorNode, - argList, - expandedSubtype, - unexpandedSubtype, - skipUnknownArgCheck, - inferenceContext - ); + return { returnType: NoneType.createInstance() }; + } - if (callResult.argumentErrors) { - argumentErrors = true; - } else if (callResult.overloadsUsedForCall) { - overloadsUsedForCall.push(...callResult.overloadsUsedForCall); - } + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportOptionalCall, + DiagnosticRule.reportOptionalCall, + Localizer.Diagnostic.noneNotCallable(), + errorNode + ); - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } + return { argumentErrors: true }; + } - return callResult.returnType; - } + // TypeVars should have been expanded in most cases, + // but we still need to handle the case of Type[T] where + // T is a constrained type that contains a union. We also + // need to handle recursive type aliases. + case TypeCategory.TypeVar: { + return validateCallArguments( + errorNode, + argList, + { type: transformPossibleRecursiveTypeAlias(expandedCallType), isIncomplete: isCallTypeIncomplete }, + typeVarContext, + skipUnknownArgCheck, + inferenceContext, + recursionCount + ); + } - const memberType = getTypeOfObjectMember( - errorNode, - expandedSubtype, - '__call__', - /* usage */ undefined, - /* diag */ undefined, - MemberAccessFlags.SkipAttributeAccessOverride - )?.type; + case TypeCategory.Module: { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.moduleNotCallable(), + errorNode + ); - if (memberType) { - const callResult = validateCallArguments( - errorNode, - argList, - { type: memberType }, - typeVarContext, - skipUnknownArgCheck, - inferenceContext, - recursionCount - ); + return { argumentErrors: true }; + } + } - if (callResult.argumentErrors) { - argumentErrors = true; - } else if (callResult.overloadsUsedForCall) { - appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); - } + return { argumentErrors: true }; + } - if ( - isTypeVar(unexpandedSubtype) && - TypeBase.isInstantiable(unexpandedSubtype) && - isClass(expandedSubtype) && - ClassType.isBuiltIn(expandedSubtype, 'type') - ) { - // Handle the case where a Type[T] is being called. We presume this - // will instantiate an object of type T. - return convertToInstance(unexpandedSubtype); - } + function validateCallForFunction( + errorNode: ExpressionNode, + argList: FunctionArgument[], + expandedCallType: FunctionType, + isCallTypeIncomplete: boolean, + typeVarContext: TypeVarContext | undefined, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined + ): CallResult { + if (TypeBase.isInstantiable(expandedCallType)) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.callableNotInstantiable().format({ + type: printType(expandedCallType), + }), + errorNode + ); + return { returnType: undefined, argumentErrors: true }; + } - return callResult.returnType ?? UnknownType.create(); - } + // Check for an attempt to invoke an abstract static or class method. + if ( + expandedCallType.boundToType && + isInstantiableClass(expandedCallType.boundToType) && + !expandedCallType.boundToType.includeSubclasses + ) { + if (FunctionType.isAbstractMethod(expandedCallType)) { + if (FunctionType.isStaticMethod(expandedCallType) || FunctionType.isClassMethod(expandedCallType)) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.abstractMethodInvocation().format({ + method: expandedCallType.details.name, + }), + errorNode.nodeType === ParseNodeType.Call ? errorNode.leftExpression : errorNode + ); + } + } + } - if (!memberType || !isAnyOrUnknown(memberType)) { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.objectNotCallable().format({ - type: printType(expandedSubtype), - }), - errorNode - ); - } + // The stdlib collections/__init__.pyi stub file defines namedtuple + // as a function rather than a class, so we need to check for it here. + if (expandedCallType.details.builtInName === 'namedtuple') { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportUntypedNamedTuple, + DiagnosticRule.reportUntypedNamedTuple, + Localizer.Diagnostic.namedTupleNoTypes(), + errorNode + ); - return UnknownType.create(); - } + return { + returnType: createNamedTupleType(evaluatorInterface, errorNode, argList, /* includesTypes */ false), + }; + } - case TypeCategory.None: { - if (TypeBase.isInstantiable(expandedSubtype)) { - if (noneType && isInstantiableClass(noneType)) { - const functionResult = validateCallArguments( - errorNode, - argList, - { type: noneType }, - typeVarContext, - skipUnknownArgCheck, - inferenceContext, - recursionCount - ); + // Handle the NewType specially, replacing the normal return type. + if (expandedCallType.details.builtInName === 'NewType') { + return { returnType: createNewType(errorNode, argList) }; + } - if (functionResult.isTypeIncomplete) { - isTypeIncomplete = true; - } + let effectiveTypeVarContext = typeVarContext; + if (!effectiveTypeVarContext) { + // If a typeVarContext wasn't provided by the caller, allocate one here. + effectiveTypeVarContext = new TypeVarContext(getTypeVarScopeIds(expandedCallType)); - if (functionResult.argumentErrors) { - argumentErrors = true; - } - } + // There are certain cases, such as with super().__new__(cls) calls where + // the call is a constructor but the proper TypeVar scope has been lost. + // We'll add a wildcard TypeVar scope here. This is a bit of a hack and + // we may need to revisit this in the future. + if (FunctionType.isConstructorMethod(expandedCallType)) { + effectiveTypeVarContext.addSolveForScope(WildcardTypeVarScopeId); + } + } - return NoneType.createInstance(); - } + const functionResult = validateFunctionArguments( + errorNode, + argList, + { type: expandedCallType, isIncomplete: isCallTypeIncomplete }, + effectiveTypeVarContext, + skipUnknownArgCheck, + inferenceContext + ); - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportOptionalCall, - DiagnosticRule.reportOptionalCall, - Localizer.Diagnostic.noneNotCallable(), - errorNode - ); + let isTypeIncomplete = !!functionResult.isTypeIncomplete; + let returnType = functionResult.returnType; - return undefined; - } + let argumentErrors = !!functionResult.argumentErrors; + if (!argumentErrors) { + // Call the function transform logic to handle special-cased functions. + const transformed = applyFunctionTransform(evaluatorInterface, errorNode, argList, expandedCallType, { + argumentErrors: !!functionResult.argumentErrors, + returnType: functionResult.returnType ?? UnknownType.create(isTypeIncomplete), + isTypeIncomplete, + }); - // TypeVars should have been expanded in most cases, - // but we still need to handle the case of Type[T] where - // T is a constrained type that contains a union. We also - // need to handle recursive type aliases. - case TypeCategory.TypeVar: { - expandedSubtype = transformPossibleRecursiveTypeAlias(expandedSubtype); + returnType = transformed.returnType; + if (transformed.isTypeIncomplete) { + isTypeIncomplete = true; + } + if (transformed.argumentErrors) { + argumentErrors = true; + } + } - const callResult = validateCallArguments( - errorNode, - argList, - { type: expandedSubtype }, - typeVarContext, - skipUnknownArgCheck, - inferenceContext, - recursionCount - ); + if (expandedCallType.details.builtInName === '__import__') { + // For the special __import__ type, we'll override the return type to be "Any". + // This is required because we don't know what module was imported, and we don't + // want to fail type checks when accessing members of the resulting module type. + returnType = AnyType.create(); + } - if (callResult.overloadsUsedForCall) { - appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); - } + return { + returnType, + isTypeIncomplete, + argumentErrors, + overloadsUsedForCall: functionResult.overloadsUsedForCall, + specializedInitSelfType: functionResult.specializedInitSelfType, + }; + } - if (callResult.argumentErrors) { - argumentErrors = true; - } + function validateCallForOverloadedFunction( + errorNode: ExpressionNode, + argList: FunctionArgument[], + expandedCallType: OverloadedFunctionType, + isCallTypeIncomplete: boolean, + typeVarContext: TypeVarContext | undefined, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined + ): CallResult { + // Handle the 'cast' call as a special case. + if (expandedCallType.overloads[0].details.builtInName === 'cast' && argList.length === 2) { + return { returnType: evaluateCastCall(argList, errorNode) }; + } - return callResult.returnType ?? UnknownType.create(); - } + const callResult = validateOverloadedFunctionArguments( + errorNode, + argList, + { type: expandedCallType, isIncomplete: isCallTypeIncomplete }, + typeVarContext, + skipUnknownArgCheck, + inferenceContext + ); - case TypeCategory.Module: { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.moduleNotCallable(), - errorNode - ); + let returnType = callResult.returnType ?? UnknownType.create(); + let isTypeIncomplete = !!callResult.isTypeIncomplete; + let argumentErrors = !!callResult.argumentErrors; - return undefined; - } - } + if (!argumentErrors) { + // Call the function transform logic to handle special-cased functions. + const transformed = applyFunctionTransform(evaluatorInterface, errorNode, argList, expandedCallType, { + argumentErrors: !!callResult.argumentErrors, + returnType: callResult.returnType ?? UnknownType.create(isTypeIncomplete), + isTypeIncomplete, + }); - return undefined; + returnType = transformed.returnType; + if (transformed.isTypeIncomplete) { + isTypeIncomplete = true; } - ); - // If we ended up with a "Never" type because all code paths returned - // undefined due to argument errors, transform the result into an Unknown - // to avoid subsequent false positives. - if (argumentErrors && isNever(returnType) && !returnType.isNoReturn) { - returnType = UnknownType.create(); + if (transformed.argumentErrors) { + argumentErrors = true; + } } return { - argumentErrors, returnType, isTypeIncomplete, - specializedInitSelfType, - overloadsUsedForCall, + argumentErrors, + overloadsUsedForCall: callResult.overloadsUsedForCall, + specializedInitSelfType: callResult.specializedInitSelfType, }; } - function validateInstantiableClassCall( + function validateCallForInstantiableClass( errorNode: ExpressionNode, argList: FunctionArgument[], expandedCallType: ClassType, @@ -9329,6 +9315,67 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { returnType, overloadsUsedForCall, argumentErrors, isTypeIncomplete }; } + function validateCallForClassInstance( + errorNode: ExpressionNode, + argList: FunctionArgument[], + expandedCallType: ClassType, + unexpandedCallType: Type, + typeVarContext: TypeVarContext | undefined, + skipUnknownArgCheck: boolean, + inferenceContext: InferenceContext | undefined, + recursionCount: number + ): CallResult { + const memberType = getTypeOfObjectMember( + errorNode, + expandedCallType, + '__call__', + /* usage */ undefined, + /* diag */ undefined, + MemberAccessFlags.SkipAttributeAccessOverride + )?.type; + + if (!memberType) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.objectNotCallable().format({ + type: printType(expandedCallType), + }), + errorNode + ); + + return { returnType: UnknownType.create(), argumentErrors: true }; + } + + const callResult = validateCallArguments( + errorNode, + argList, + { type: memberType }, + typeVarContext, + skipUnknownArgCheck, + inferenceContext, + recursionCount + ); + + let returnType = callResult.returnType ?? UnknownType.create(); + if ( + isTypeVar(unexpandedCallType) && + TypeBase.isInstantiable(unexpandedCallType) && + isClass(expandedCallType) && + ClassType.isBuiltIn(expandedCallType, 'type') + ) { + // Handle the case where a Type[T] is being called. We presume this + // will instantiate an object of type T. + returnType = convertToInstance(unexpandedCallType); + } + + return { + returnType, + argumentErrors: callResult.argumentErrors, + overloadsUsedForCall: callResult.overloadsUsedForCall, + }; + } + // Evaluates the type of the "cast" call. function evaluateCastCall(argList: FunctionArgument[], errorNode: ExpressionNode) { // Verify that the cast is necessary. From d7b0a85f1d7d6f828d934ea135227f72620e8862 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Jul 2023 13:20:17 -0700 Subject: [PATCH 410/525] Fixed a bug that resulted in a false positive when an expression of type `type[Self]` was used as the base type for a member access expression that was then used to call an instance method on that class. This addresses #5530. (#5532) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 18 ++++++++++++++++-- .../src/tests/samples/memberAccess22.py | 15 +++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 5 +++++ 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/memberAccess22.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 9bc3c5f14..552b38ff4 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -5602,7 +5602,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions type: ClassType.isClassProperty(lookupClass) ? baseTypeClass : isAccessedThroughObject - ? bindToType || ClassType.cloneAsInstance(baseTypeClass) + ? bindToType ?? ClassType.cloneAsInstance(baseTypeClass) : NoneType.createInstance(), }, }, @@ -5801,6 +5801,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If this function is an instance member (e.g. a lambda that was // assigned to an instance variable), don't perform any binding. if (!isAccessedThroughObject || (memberInfo && !memberInfo.isInstanceMember)) { + let effectiveBindToType = bindToType; + + if (bindToType && !isInstantiableMetaclass(baseTypeClass)) { + // If bindToType is an instantiable class or TypeVar but we're targeting + // an instance method (in a non-metaclass), we need to convert + // the bindToType to an instance. + const targetMethod = isFunction(concreteSubtype) + ? concreteSubtype + : concreteSubtype.overloads[0]; + if (FunctionType.isInstanceMethod(targetMethod) && !TypeBase.isInstance(bindToType)) { + effectiveBindToType = convertToInstance(bindToType) as ClassType | TypeVarType; + } + } + return bindFunctionToClassOrObject( isAccessedThroughObject ? ClassType.cloneAsInstance(baseTypeClass) : baseTypeClass, concreteSubtype, @@ -5808,7 +5822,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions errorNode, /* recursionCount */ undefined, treatConstructorAsClassMember, - bindToType + effectiveBindToType ); } } diff --git a/packages/pyright-internal/src/tests/samples/memberAccess22.py b/packages/pyright-internal/src/tests/samples/memberAccess22.py new file mode 100644 index 000000000..ad9289f21 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/memberAccess22.py @@ -0,0 +1,15 @@ +# This sample tests the case where a `type[T]` or `type[Self]` typevar is +# used as the base for a member access but is then used to call an +# instance method on the resulting class. + +from contextlib import contextmanager + + +class A: + @classmethod + def method1(cls) -> None: + cls.method2 + + @contextmanager + def method2(self): + yield diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 0c3da0d7c..56aa30bd1 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -525,6 +525,11 @@ test('MemberAccess21', () => { TestUtils.validateResults(analysisResults, 1); }); +test('MemberAccess22', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['memberAccess22.py']); + TestUtils.validateResults(analysisResults, 0); +}); + test('DataClassNamedTuple1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['dataclassNamedTuple1.py']); From 9855dc9c7f18d15ffa47b9a9167ca3a6c50a9b22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 14:05:03 -0700 Subject: [PATCH 411/525] Bump word-wrap from 1.2.3 to 1.2.4 (#5533) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ packages/pyright-internal/package-lock.json | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6ff1c12a..1082b91bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11825,9 +11825,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -20924,9 +20924,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true }, "wordwrap": { diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index ea0a31a6d..cc11521e6 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -4889,9 +4889,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8718,9 +8718,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true }, "wrap-ansi": { From 5569939ee6d205309d6ce586f837179c0c4248f4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Jul 2023 15:51:27 -0700 Subject: [PATCH 412/525] Fixed a bug that led to a false negative when determining type compatibility between two unions in an invariant context. This addresses #5534. (#5536) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 58 +++++++++++++------ .../src/tests/samples/genericType45.py | 49 ++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++ 3 files changed, 96 insertions(+), 17 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/genericType45.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 552b38ff4..1c6fb4d93 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21717,10 +21717,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } - diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format(printSrcDestTypes(srcType, destType)) - ); - return false; + if (!isUnion(destType)) { + diag?.addMessage( + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + printSrcDestTypes(srcType, destType) + ) + ); + return false; + } } } @@ -22379,6 +22383,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // whose primary type matches. remainingSrcSubtypes.forEach((srcSubtype) => { const destTypeIndex = remainingDestSubtypes.findIndex((destSubtype) => { + if (isTypeSame(destSubtype, srcSubtype)) { + return true; + } + if ( isClass(srcSubtype) && isClass(destSubtype) && @@ -22420,6 +22428,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If there is are remaining dest subtypes and they're all type variables, // attempt to assign the remaining source subtypes to them. if (canUseFastPath && (remainingDestSubtypes.length !== 0 || remainingSrcSubtypes.length !== 0)) { + if ((flags & AssignTypeFlags.EnforceInvariance) !== 0) { + // If we have no src subtypes remaining but not all dest types have been subsumed + // by other dest types, then the types are not compatible if we're enforcing invariance. + if (remainingSrcSubtypes.length === 0) { + return remainingDestSubtypes.every((destSubtype) => + isTypeSubsumedByOtherType(destSubtype, destType.subtypes, recursionCount) + ); + } + } + const isReversed = (flags & AssignTypeFlags.ReverseTypeVarMatching) !== 0; const effectiveDestSubtypes = isReversed ? remainingSrcSubtypes : remainingDestSubtypes; @@ -22512,21 +22530,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions recursionCount ) ) { - const concreteSubtype = makeTopLevelTypeVarsConcrete(subtype); - // Determine if the current subtype is subsumed by another subtype // in the same union. If so, we can ignore this. - let isSubtypeSubsumed = false; - srcType.subtypes.forEach((innerSubtype) => { - if ( - !isSubtypeSubsumed && - !isTypeSame(innerSubtype, subtype) && - !isAnyOrUnknown(innerSubtype) && - isProperSubtype(innerSubtype, concreteSubtype, recursionCount) - ) { - isSubtypeSubsumed = true; - } - }); + const isSubtypeSubsumed = isTypeSubsumedByOtherType(subtype, srcType.subtypes, recursionCount); // Try again with a concrete version of the subtype. if ( @@ -22556,6 +22562,24 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } + // Determines whether a type is "subsumed by" (i.e. is a proper subtype of) one + // of the other types in a list. + function isTypeSubsumedByOtherType(type: Type, otherTypes: Type[], recursionCount = 0) { + const concreteType = makeTopLevelTypeVarsConcrete(type); + + for (const otherType of otherTypes) { + if (isTypeSame(otherType, type)) { + continue; + } + + if (!isAnyOrUnknown(otherType) && isProperSubtype(otherType, concreteType, recursionCount)) { + return true; + } + } + + return false; + } + // Determines whether the srcType is a subtype of destType but the converse // is not true. It's important that we check both directions to avoid // matches for types like `tuple[Any]` and `tuple[int]` from being considered diff --git a/packages/pyright-internal/src/tests/samples/genericType45.py b/packages/pyright-internal/src/tests/samples/genericType45.py new file mode 100644 index 000000000..514a3f024 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/genericType45.py @@ -0,0 +1,49 @@ +# This sample tests that invariance is properly enforced when appropriate. + +from typing import Any, TypeVar + +T = TypeVar("T") + + +def func1(v: list[float | str]): + # This should generate an error. + x1: list[float] = v + + x2: list[str | float] = v + + # This should generate an error. + x3: list[float | str | None] = v + + x4: list[Any | str] = v + + # This should generate an error. + x5: list[int | str] = v + + x6: list[float | int | str] = v + + +def func2(v: list[T]) -> T: + x1: list[T] = v + + x2: list[Any | T] = v + + # This should generate an error. + x3: list[int | T] = v + + return v[0] + + +def func3(v: list[float | T]) -> float | T: + # This should generate an error. + x1: list[T] = v + + x2: list[Any | T] = v + + x3: list[T | float] = v + + # This should generate an error. + x4: list[T | int] = v + + x5: list[float | int | T] = v + + return v[0] diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 90709451d..2ddd1a075 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1013,6 +1013,12 @@ test('GenericType44', () => { TestUtils.validateResults(analysisResults, 0); }); +test('GenericType45', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['genericType45.py']); + + TestUtils.validateResults(analysisResults, 6); +}); + test('Protocol1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol1.py']); From ed295ddcafda061b17248825d0af4407f84da817 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Jul 2023 19:51:12 -0700 Subject: [PATCH 413/525] Fixed bug that resulted in the incorrect variance inference of an "auto variance" type parameter (as introduced in PEP 695). --- packages/pyright-internal/src/analyzer/types.ts | 6 ++++++ .../pyright-internal/src/tests/samples/autoVariance1.py | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index cae7e761f..02b3e9885 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -2520,6 +2520,12 @@ export namespace TypeVarType { // By this point, the variance should have been inferred. assert(variance !== Variance.Auto, 'Expected variance to be inferred'); + // If we're in the process of computing variance, it will still be + // unknown. Default to covariant in this case. + if (variance === Variance.Unknown) { + return Variance.Covariant; + } + return variance; } diff --git a/packages/pyright-internal/src/tests/samples/autoVariance1.py b/packages/pyright-internal/src/tests/samples/autoVariance1.py index e8dadf96c..6b2cb023c 100644 --- a/packages/pyright-internal/src/tests/samples/autoVariance1.py +++ b/packages/pyright-internal/src/tests/samples/autoVariance1.py @@ -24,6 +24,13 @@ class ShouldBeCovariant2[T](Sequence[T]): vco2_2: ShouldBeCovariant2[int] = ShouldBeCovariant2[float]() +class ShouldBeCovariant3[T]: + def method1(self) -> "ShouldBeCovariant2[T]": + ... + + +vco3_1: ShouldBeCovariant3[float] = ShouldBeCovariant3[int]() + class ShouldBeInvariant1[T]: def __init__(self, value: T) -> None: From c34857f44644837fb035b58bfb64c27d37c49ee4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Jul 2023 20:09:45 -0700 Subject: [PATCH 414/525] Fixed regression in recent (unpublished) change. --- .../src/analyzer/typeEvaluator.ts | 22 +++++++++++++++---- .../src/tests/samples/genericType45.py | 8 +++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1c6fb4d93..35a268313 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -22433,7 +22433,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // by other dest types, then the types are not compatible if we're enforcing invariance. if (remainingSrcSubtypes.length === 0) { return remainingDestSubtypes.every((destSubtype) => - isTypeSubsumedByOtherType(destSubtype, destType.subtypes, recursionCount) + isTypeSubsumedByOtherType( + destSubtype, + destType.subtypes, + /* allowAnyToSubsume */ true, + recursionCount + ) ); } } @@ -22532,7 +22537,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ) { // Determine if the current subtype is subsumed by another subtype // in the same union. If so, we can ignore this. - const isSubtypeSubsumed = isTypeSubsumedByOtherType(subtype, srcType.subtypes, recursionCount); + const isSubtypeSubsumed = isTypeSubsumedByOtherType( + subtype, + srcType.subtypes, + /* allowAnyToSubsume */ false, + recursionCount + ); // Try again with a concrete version of the subtype. if ( @@ -22564,7 +22574,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Determines whether a type is "subsumed by" (i.e. is a proper subtype of) one // of the other types in a list. - function isTypeSubsumedByOtherType(type: Type, otherTypes: Type[], recursionCount = 0) { + function isTypeSubsumedByOtherType(type: Type, otherTypes: Type[], allowAnyToSubsume: boolean, recursionCount = 0) { const concreteType = makeTopLevelTypeVarsConcrete(type); for (const otherType of otherTypes) { @@ -22572,7 +22582,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions continue; } - if (!isAnyOrUnknown(otherType) && isProperSubtype(otherType, concreteType, recursionCount)) { + if (isAnyOrUnknown(otherType)) { + if (allowAnyToSubsume) { + return true; + } + } else if (isProperSubtype(otherType, concreteType, recursionCount)) { return true; } } diff --git a/packages/pyright-internal/src/tests/samples/genericType45.py b/packages/pyright-internal/src/tests/samples/genericType45.py index 514a3f024..ce033c552 100644 --- a/packages/pyright-internal/src/tests/samples/genericType45.py +++ b/packages/pyright-internal/src/tests/samples/genericType45.py @@ -47,3 +47,11 @@ def func3(v: list[float | T]) -> float | T: x5: list[float | int | T] = v return v[0] + + +def func4(v: list[Any | int | str]): + x1: list[Any | int] = v + + x2: list[Any | list[str]] = v + + x3: list[Any | int | str | list[str]] = v From 1d558e07fc1e9760d54ac740125376dba6ddf693 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 18 Jul 2023 20:10:06 -0700 Subject: [PATCH 415/525] Published 1.1.318 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 2baa51078..41b53c494 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.317", + "version": "1.1.318", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index cc11521e6..663672882 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.317", + "version": "1.1.318", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.317", + "version": "1.1.318", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 49601de03..e491f8dd0 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.317", + "version": "1.1.318", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 6ff2d3220..7d526217d 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.317", + "version": "1.1.318", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.317", + "version": "1.1.318", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 05f2b1733..15d04b49d 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.317", + "version": "1.1.318", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 2cafc21b2..d2d7837a9 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.317", + "version": "1.1.318", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.317", + "version": "1.1.318", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index a84f8f7f0..b5452e6b1 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.317", + "version": "1.1.318", "private": true, "license": "MIT", "author": { From b953f7922805fa49b59f9811a7db5578dd2737a8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 19 Jul 2023 07:03:50 -0700 Subject: [PATCH 416/525] Fixed a bug that results in a crash when attempting to use a member access expression where the LHS is a TypeVarTuple. This addresses https://github.com/microsoft/pylance-release/issues/4630. --- .../src/analyzer/typeEvaluator.ts | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 35a268313..b3ac45fc1 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -4876,7 +4876,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - const getTypeOfNoneBase = (subtype: NoneType) => { + function getTypeOfNoneBase(subtype: NoneType) { if (noneType && isInstantiableClass(noneType)) { if (TypeBase.isInstance(subtype)) { return getTypeOfObjectMember( @@ -4891,7 +4891,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } return undefined; - }; + } if (isParamSpec(baseType) && baseType.paramSpecAccess) { baseType = makeTopLevelTypeVarsConcrete(baseType); @@ -4956,16 +4956,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type: UnknownType.create(/* isIncomplete */ true), isIncomplete: true }; } - return getTypeOfMemberAccessWithBaseType( - node, - { - type: makeTopLevelTypeVarsConcrete(baseType), - bindToType: baseType, - isIncomplete, - }, - usage, - EvaluatorFlags.None - ); + if (!baseType.details.isVariadic) { + return getTypeOfMemberAccessWithBaseType( + node, + { + type: makeTopLevelTypeVarsConcrete(baseType), + bindToType: baseType, + isIncomplete, + }, + usage, + EvaluatorFlags.None + ); + } + + break; } case TypeCategory.Class: { From 312667173c2cc07f5cc77cd74e9c2f8e6ea6c7a3 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 19 Jul 2023 07:58:15 -0700 Subject: [PATCH 417/525] Fixed a bug that led to a false negative when analyzing code with an async context manager that swallows exceptions. --- .../src/analyzer/codeFlowEngine.ts | 17 ++++++++++++++++- .../pyright-internal/src/tests/checker.test.ts | 2 +- .../pyright-internal/src/tests/samples/with3.py | 9 ++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index 745feb98a..4b0664e35 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -1686,7 +1686,22 @@ export function getCodeFlowEngine( const exitType = evaluator.getTypeOfObjectMember(node, cmType, exitMethodName)?.type; if (exitType && isFunction(exitType) && exitType.details.declaredReturnType) { - const returnType = exitType.details.declaredReturnType; + let returnType = exitType.details.declaredReturnType; + + // If it's an __aexit__ method, its return type will typically be wrapped + // in a Coroutine, so we need to extract the return type from the third + // type argument. + if (isAsync && FunctionType.isAsync(exitType)) { + if ( + isClassInstance(returnType) && + ClassType.isBuiltIn(returnType, 'Coroutine') && + returnType.typeArguments && + returnType.typeArguments.length >= 3 + ) { + returnType = returnType.typeArguments[2]; + } + } + cmSwallowsExceptions = false; if (isClassInstance(returnType) && ClassType.isBuiltIn(returnType, 'bool')) { if (returnType.literalValue === undefined || returnType.literalValue === true) { diff --git a/packages/pyright-internal/src/tests/checker.test.ts b/packages/pyright-internal/src/tests/checker.test.ts index f420585e9..5a0b62568 100644 --- a/packages/pyright-internal/src/tests/checker.test.ts +++ b/packages/pyright-internal/src/tests/checker.test.ts @@ -164,7 +164,7 @@ test('With2', () => { test('With3', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['with3.py']); - TestUtils.validateResults(analysisResults, 4); + TestUtils.validateResults(analysisResults, 5); }); test('With4', () => { diff --git a/packages/pyright-internal/src/tests/samples/with3.py b/packages/pyright-internal/src/tests/samples/with3.py index 39be41d52..fe02d56ff 100644 --- a/packages/pyright-internal/src/tests/samples/with3.py +++ b/packages/pyright-internal/src/tests/samples/with3.py @@ -2,7 +2,7 @@ # that suppress exceptions, as indicated by a return type of "bool" # for the __exit__ or __aexit__ method. -from contextlib import suppress +from contextlib import suppress, AsyncExitStack def test1() -> None: @@ -64,3 +64,10 @@ def test4() -> None: # This should generate an error because the # code is reachable. return 1 + + +# This should generate an error because AsyncExitStack +# may swallow exceptions. +async def test5() -> str: + async with AsyncExitStack(): + return "from exit stack" From 455830ed4282c9f0de7b73c78186355d3bd7e251 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 19 Jul 2023 11:51:39 -0700 Subject: [PATCH 418/525] Improved error messages for situations where a call expression targets an overloaded function or method and there are no matches. Added some heuristics to pick the "best" overload function for the error message. Previously, pyright used the last overload, but this sometimes led to confusing errors. This addresses #5525. (#5541) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 47 ++++++++++++++----- .../src/tests/typeEvaluator2.test.ts | 2 +- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index b3ac45fc1..c081f30d3 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -339,6 +339,12 @@ interface MatchArgsToParamsResult { // A higher relevance means that it should be considered // first, before lower relevance overloads. relevance: number; + + // A score that indicates how well the overload matches with + // supplied arguments. Used to pick the "best" for purposes + // of error reporting when no matches are found. The higher + // the score, the worse the match. + argumentMatchScore: number; } export interface MemberAccessTypeResult { @@ -8239,7 +8245,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If there were multiple possible matches, evaluate the type as // Unknown, but include the "possible types" to allow for completion // suggestions. - if (!isDefinitiveMatchFound) { + if (!isDefinitiveMatchFound && possibleMatchResults.length > 0) { possibleMatchResults = filterOverloadMatchesForAnyArgs(possibleMatchResults); // Did the filtering produce a single result? If so, we're done. @@ -8532,22 +8538,26 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { argumentErrors: true, isTypeIncomplete: false, overloadsUsedForCall: [] }; } - // Create a helper function that evaluates the overload that matches - // the arg/param lists. - function evaluateUsingLastMatchingOverload(skipUnknownArgCheck: boolean) { - // Find the match with the largest overload index (i.e. the last overload - // that was in the overload list). - const lastMatch = filteredMatchResults.reduce((previous, current) => { - return current.overloadIndex > previous.overloadIndex ? current : previous; + // Create a helper function that evaluates the overload that best + // matches the arg/param lists. + function evaluateUsingBestMatchingOverload(skipUnknownArgCheck: boolean) { + // Find the match with the smallest argument match score. If there + // are more than one with the same score, use the one with the + // largest index. Later overloads tend to be more general. + const bestMatch = filteredMatchResults.reduce((previous, current) => { + if (current.argumentMatchScore === previous.argumentMatchScore) { + return current.overloadIndex > previous.overloadIndex ? current : previous; + } + return current.argumentMatchScore < previous.argumentMatchScore ? current : previous; }); const effectiveTypeVarContext = typeVarContext ?? new TypeVarContext(); - effectiveTypeVarContext.addSolveForScope(getTypeVarScopeIds(lastMatch.overload)); + effectiveTypeVarContext.addSolveForScope(getTypeVarScopeIds(bestMatch.overload)); effectiveTypeVarContext.unlock(); return validateFunctionArgumentTypesWithContext( errorNode, - lastMatch, + bestMatch, effectiveTypeVarContext, skipUnknownArgCheck, inferenceContext @@ -8558,7 +8568,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // use the normal type matching mechanism because it is faster and // will provide a clearer error message. if (filteredMatchResults.length === 1) { - return evaluateUsingLastMatchingOverload(/* skipUnknownArgCheck */ false); + return evaluateUsingBestMatchingOverload(/* skipUnknownArgCheck */ false); } let expandedArgTypes: (Type | undefined)[][] | undefined = [argList.map((arg) => undefined)]; @@ -8618,7 +8628,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // in speculative mode because it's very expensive, and we're going to // suppress the diagnostic anyway. if (!isDiagnosticSuppressedForNode(errorNode) && !isTypeIncomplete) { - const result = evaluateUsingLastMatchingOverload(/* skipUnknownArgCheck */ true); + const result = evaluateUsingBestMatchingOverload(/* skipUnknownArgCheck */ true); // Replace the result with an unknown type since we don't know // what overload should have been used. @@ -10477,6 +10487,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions paramSpecArgList, activeParam, relevance, + argumentMatchScore: 0, }; } @@ -10651,6 +10662,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const type = matchResults.overload; let isTypeIncomplete = matchResults.isTypeIncomplete; let argumentErrors = false; + let argumentMatchScore = 0; let specializedInitSelfType: Type | undefined; let anyOrUnknownArgument: UnknownType | AnyType | undefined; const typeCondition = getTypeCondition(type); @@ -10775,7 +10787,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let condition: TypeCondition[] = []; const argResults: ArgResult[] = []; - matchResults.argParams.forEach((argParam) => { + matchResults.argParams.forEach((argParam, argParamIndex) => { const argResult = validateArgType( argParam, typeVarContext, @@ -10791,6 +10803,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (!argResult.isCompatible) { argumentErrors = true; + + // Add the inverse index so earlier parameters represent larger errors. + // This will help the heuristics in the overload error paths to pick the + // most likely intended overload if none of them match. + argumentMatchScore += 1 + (matchResults.argParams.length - argParamIndex); } if (argResult.isTypeIncomplete) { @@ -10834,6 +10851,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ) ) { argumentErrors = true; + argumentMatchScore += 1; } } else if (type.details.paramSpec) { if (!sawParamSpecArgs || !sawParamSpecKwargs) { @@ -10846,6 +10864,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } argumentErrors = true; + argumentMatchScore += 1; } } @@ -10956,6 +10975,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions specializedInitSelfType = applySolvedTypeVars(specializedInitSelfType, typeVarContext); } + matchResults.argumentMatchScore = argumentMatchScore; + return { argumentErrors, argResults, diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 2ddd1a075..7aebf6319 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -75,7 +75,7 @@ test('Assignment1', () => { test('Assignment2', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['assignment2.py']); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 2); }); test('Assignment3', () => { From b917b7a5e02e26b6b13af3f70615bbc53afdc0bf Mon Sep 17 00:00:00 2001 From: Erik De Bonte Date: Wed, 19 Jul 2023 12:46:11 -0700 Subject: [PATCH 419/525] Push pylance changes to pyright (#5542) --- package-lock.json | 2894 ++++--- package.json | 15 +- packages/pyright-internal/package-lock.json | 6792 ++++++++--------- packages/pyright-internal/package.json | 13 +- .../src/backgroundThreadBase.ts | 2 +- .../languageService/callHierarchyProvider.ts | 25 +- .../src/languageService/completionProvider.ts | 9 +- .../src/localization/localize.ts | 17 +- .../src/localization/package.nls.cs.json | 1 + .../src/localization/package.nls.de.json | 1 + .../src/localization/package.nls.es.json | 1 + .../src/localization/package.nls.fr.json | 1 + .../src/localization/package.nls.it.json | 1 + .../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/completions.test.ts | 46 + .../pyright-internal/src/tests/config.test.ts | 15 + ...omingCalls.overriddenFunction.fourslash.ts | 41 + 25 files changed, 5412 insertions(+), 4471 deletions(-) create mode 100644 packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.ts diff --git a/package-lock.json b/package-lock.json index 1082b91bb..020bf84d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,23 +10,33 @@ "@types/glob": "^7.2.0", "@types/node": "^17.0.45", "@types/yargs": "^16.0.5", - "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", "detect-indent": "^6.1.0", - "eslint": "^8.43.0", + "eslint": "^8.45.0", "eslint-config-prettier": "^8.8.0", - "eslint-plugin-simple-import-sort": "^7.0.0", + "eslint-plugin-simple-import-sort": "^10.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", "lerna": "^6.6.2", - "npm-check-updates": "^16.10.13", - "p-queue": "^6.6.2", + "npm-check-updates": "^16.10.16", + "p-queue": "^7.3.4", "prettier": "2.8.8", - "syncpack": "^9.8.6", + "syncpack": "^10.7.3", "typescript": "~4.4.4", + "word-wrap": "1.2.4", "yargs": "^16.2.0" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -143,6 +153,62 @@ "node": ">=0.1.90" } }, + "node_modules/@effect/data": { + "version": "0.12.9", + "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.9.tgz", + "integrity": "sha512-nuzFo+2LK4yG9H16WRv51MDhUAIuUGhmKYkuSrgCApwwLy2eUATaioQEbbR2rHOTprOiYpbIYKwvPsylEm/Fdw==", + "dev": true + }, + "node_modules/@effect/io": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.27.0.tgz", + "integrity": "sha512-3ZUaf6B+aH83HPJ84KTthd4glgrRk6DXj9M915OB9G4cMbbJAwE/709tgamzD2IxcfSlqPowtvx73Cs4N7Ywrw==", + "dev": true, + "dependencies": { + "@effect/data": "~0.12.6" + } + }, + "node_modules/@effect/match": { + "version": "0.24.5", + "resolved": "https://registry.npmjs.org/@effect/match/-/match-0.24.5.tgz", + "integrity": "sha512-mMoQLGt8s0AmXQR1yUTdBCbdzNIn8d5Ujf1o0T4mldiap4/eq3pf8cvyQm8dHK1Y8KyT4dA2ukJq56rSMIBZXA==", + "dev": true, + "dependencies": { + "@effect/data": "^0.12.9", + "@effect/schema": "^0.20.2" + } + }, + "node_modules/@effect/match/node_modules/@effect/io": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.26.2.tgz", + "integrity": "sha512-PdqtgmfEw88kX1UKZZvK42dpMZPSCPmdWAAzN17yCzfEsA3HoPjjxo9jLyzfjtUcU+tWO0tF/GY7pcDVLcJZAg==", + "dev": true, + "dependencies": { + "@effect/data": "~0.12.6" + } + }, + "node_modules/@effect/match/node_modules/@effect/schema": { + "version": "0.20.3", + "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.20.3.tgz", + "integrity": "sha512-pjJW9QkHZd2/fq7Bhd6pAOidMJ0OUODOeUlesPDK0jpo62AaU9g+IGXt3v5NU8rXSX77igZgfK08XhmofwHn0A==", + "dev": true, + "dependencies": { + "@effect/data": "^0.12.7", + "@effect/io": "^0.26.0", + "fast-check": "^3.10.0" + } + }, + "node_modules/@effect/schema": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.21.0.tgz", + "integrity": "sha512-IFB6hnwuTzHKaMGrAuzp0LBIIkPtW8gaXXQAik/h7ZnPpE8sOkSWKyDHuD4lpOqgsFp1G55NobVKpJUPcL8Onw==", + "dev": true, + "dependencies": { + "@effect/data": "^0.12.9", + "@effect/io": "^0.27.0", + "fast-check": "^3.10.0" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -168,14 +234,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -191,9 +257,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -247,6 +313,102 @@ "node": ">=6.9.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", @@ -492,16 +654,16 @@ } }, "node_modules/@lerna/legacy-package-management/node_modules/glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -535,9 +697,9 @@ } }, "node_modules/@lerna/legacy-package-management/node_modules/glob/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -550,12 +712,12 @@ } }, "node_modules/@lerna/legacy-package-management/node_modules/glob/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/@lerna/legacy-package-management/node_modules/inquirer": { @@ -727,6 +889,34 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@lerna/legacy-package-management/node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@lerna/legacy-package-management/node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@lerna/legacy-package-management/node_modules/proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -1004,16 +1194,16 @@ } }, "node_modules/@npmcli/arborist/node_modules/glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -1026,9 +1216,9 @@ } }, "node_modules/@npmcli/arborist/node_modules/glob/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -1372,16 +1562,16 @@ } }, "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -1394,9 +1584,9 @@ } }, "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -1409,12 +1599,12 @@ } }, "node_modules/@npmcli/map-workspaces/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/@npmcli/metavuln-calculator": { @@ -1489,16 +1679,16 @@ } }, "node_modules/@npmcli/metavuln-calculator/node_modules/glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -1520,9 +1710,9 @@ } }, "node_modules/@npmcli/metavuln-calculator/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -2335,32 +2525,34 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz", - "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz", + "integrity": "sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/type-utils": "5.60.1", - "@typescript-eslint/utils": "5.60.1", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/type-utils": "6.1.0", + "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -2368,26 +2560,54 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.1.tgz", - "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.1.0.tgz", + "integrity": "sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -2396,16 +2616,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", - "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", + "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1" + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -2413,25 +2633,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz", - "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz", + "integrity": "sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.60.1", - "@typescript-eslint/utils": "5.60.1", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/utils": "6.1.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -2440,12 +2660,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", - "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", + "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -2453,21 +2673,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", - "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", + "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -2479,43 +2699,96 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.1.tgz", - "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.1.0.tgz", + "integrity": "sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", - "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", + "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.1", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.1.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -2594,9 +2867,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4206,15 +4479,15 @@ } }, "node_modules/eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -4226,7 +4499,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -4236,7 +4509,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -4246,9 +4518,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -4274,31 +4545,18 @@ } }, "node_modules/eslint-plugin-simple-import-sort": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", - "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", + "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", "dev": true, "peerDependencies": { "eslint": ">=5.0.0" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4333,12 +4591,12 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -4404,15 +4662,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4483,6 +4732,28 @@ "node": ">=4" } }, + "node_modules/fast-check": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.11.0.tgz", + "integrity": "sha512-H2tctb7AGfFQfz+DEr3UWhJ3s47LXsGp5g3jeJr5tHjnf4xUvpArIqiwcDmL2EXiv+auLHIpF5MqaIpIKvpxiA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "dependencies": { + "pure-rand": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4712,9 +4983,9 @@ } }, "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", - "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true, "engines": { "node": ">=14" @@ -5162,12 +5433,6 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -5364,9 +5629,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -5835,12 +6100,12 @@ } }, "node_modules/jackspeak": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.1.4.tgz", - "integrity": "sha512-7CGd4ZQu5M/FgQLlcgcsY858wf+ukg1ma5M95FACSfC54+88vm594Nv6C3NqWfk8wyK1u+E3SzvVsxr7bwONmg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", "dev": true, "dependencies": { - "cliui": "github:isaacs/cliui#isaacs/esm-cjs-consistency" + "@isaacs/cliui": "^8.0.2" }, "engines": { "node": ">=14" @@ -5852,102 +6117,6 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jackspeak/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/jackspeak/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jackspeak/node_modules/cliui": { - "version": "8.0.1", - "resolved": "git+ssh://git@github.com/isaacs/cliui.git#9f97090165675fdda63a79c29bc36bb1033506b0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jackspeak/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/jackspeak/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jackspeak/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/jackspeak/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -6347,16 +6516,16 @@ } }, "node_modules/lerna/node_modules/glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -6390,9 +6559,9 @@ } }, "node_modules/lerna/node_modules/glob/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -6525,6 +6694,34 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/lerna/node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lerna/node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lerna/node_modules/proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -6782,16 +6979,16 @@ } }, "node_modules/libnpmpublish/node_modules/glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -6830,9 +7027,9 @@ } }, "node_modules/libnpmpublish/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -7790,12 +7987,12 @@ } }, "node_modules/npm-check-updates": { - "version": "16.10.13", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.13.tgz", - "integrity": "sha512-ZsWrtHnaMkcxAaCtDFEr8i7jgM0Bz2AYsnsJlmxISgltG8ie43bWC6G9icxFKfYSLeJJtcj/Yw1Mq5f8GL2F3g==", + "version": "16.10.16", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.16.tgz", + "integrity": "sha512-d8mNYce/l8o5RHPE5ZUp2P1zj9poI7KWQCh5AsTIP3EhicONEhc63mLQQv4/nkCsMb3wCrikx6YOo4BOwN4+1w==", "dev": true, "dependencies": { - "chalk": "^5.2.0", + "chalk": "^5.3.0", "cli-table3": "^0.6.3", "commander": "^10.0.0", "fast-memoize": "^2.5.2", @@ -7804,25 +8001,25 @@ "get-stdin": "^8.0.0", "globby": "^11.0.4", "hosted-git-info": "^5.1.0", - "ini": "^4.0.0", + "ini": "^4.1.1", "js-yaml": "^4.1.0", "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^9.0.0", + "minimatch": "^9.0.3", "p-map": "^4.0.0", - "pacote": "15.1.1", + "pacote": "15.2.0", "parse-github-url": "^1.0.2", "progress": "^2.0.3", "prompts-ncu": "^3.0.0", - "rc-config-loader": "^4.1.2", + "rc-config-loader": "^4.1.3", "remote-git-tags": "^3.0.0", - "rimraf": "^5.0.0", - "semver": "^7.4.0", + "rimraf": "^5.0.1", + "semver": "^7.5.3", "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^2.0.1", - "strip-json-comments": "^5.0.0", + "strip-json-comments": "^5.0.1", "untildify": "^4.0.0", "update-notifier": "^6.0.2" }, @@ -7834,6 +8031,46 @@ "node": ">=14.14" } }, + "node_modules/npm-check-updates/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm-check-updates/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -7843,10 +8080,33 @@ "balanced-match": "^1.0.0" } }, + "node_modules/npm-check-updates/node_modules/cacache": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", + "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm-check-updates/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -7855,17 +8115,29 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/npm-check-updates/node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm-check-updates/node_modules/glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -7889,28 +8161,75 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-check-updates/node_modules/ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "dev": true, + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm-check-updates/node_modules/ini": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.0.tgz", - "integrity": "sha512-HLR38RSF2iulAzc3I/sma4CoYxQP844rPYCNfzGDOHqa/YqVlwuuZgBx6M50/X8dKgzk0cm1qRg3+47mK2N+cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "node_modules/npm-check-updates/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm-check-updates/node_modules/minipass": { @@ -7922,13 +8241,170 @@ "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/rimraf": { + "node_modules/npm-check-updates/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm-check-updates/node_modules/normalize-package-data": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.0.tgz", - "integrity": "sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/pacote": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "dev": true, + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/read-package-json": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", "dev": true, "dependencies": { - "glob": "^10.0.0" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/rimraf": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "dev": true, + "dependencies": { + "glob": "^10.2.5" }, "bin": { "rimraf": "dist/cjs/src/bin.js" @@ -7941,9 +8417,9 @@ } }, "node_modules/npm-check-updates/node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -7967,10 +8443,22 @@ "node": ">=10" } }, + "node_modules/npm-check-updates/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm-check-updates/node_modules/strip-json-comments": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", - "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", + "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", "dev": true, "engines": { "node": ">=14.16" @@ -7979,6 +8467,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm-check-updates/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm-install-checks": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", @@ -8521,17 +9060,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -8654,16 +9193,16 @@ } }, "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz", + "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==", "dev": true, "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" + "eventemitter3": "^4.0.7", + "p-timeout": "^5.0.2" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8679,15 +9218,15 @@ } }, "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -8867,16 +9406,16 @@ } }, "node_modules/pacote/node_modules/glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -8889,12 +9428,12 @@ } }, "node_modules/pacote/node_modules/glob/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/pacote/node_modules/ignore-walk": { @@ -8954,9 +9493,9 @@ } }, "node_modules/pacote/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -9285,13 +9824,13 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", - "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "dependencies": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -9548,6 +10087,19 @@ "node": ">=10" } }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/prompts-ncu": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", @@ -9561,6 +10113,15 @@ "node": ">= 14" } }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/promzard": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", @@ -9612,6 +10173,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -9667,9 +10244,9 @@ } }, "node_modules/rc-config-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz", - "integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -10879,33 +11456,43 @@ } }, "node_modules/syncpack": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-9.8.6.tgz", - "integrity": "sha512-4S4cUoKK9WenA/Wdk9GvlekzPR9PxC7sqcsUIsK4ypsa/pIYv8Ju1vxGNvp6Y1yI2S9EdCk0QJsB3/wRB8XYVw==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-10.7.3.tgz", + "integrity": "sha512-nhsiOHR1zebKRn4eZn5zUjbSJm4D8GgqiraY45MsaOClPbhVJny/jWhWrjSOuwwupdwv8EYH+GA9sqCEn4DCnA==", "dev": true, "dependencies": { + "@effect/data": "0.12.9", + "@effect/io": "0.27.0", + "@effect/match": "0.24.5", + "@effect/schema": "0.21.0", "chalk": "4.1.2", - "commander": "10.0.1", - "cosmiconfig": "8.1.3", + "commander": "11.0.0", + "cosmiconfig": "8.2.0", + "enquirer": "2.3.6", "fs-extra": "11.1.1", - "glob": "8.1.0", - "minimatch": "6.2.0", + "globby": "11.1.0", + "minimatch": "9.0.2", + "ora": "5.4.1", + "prompts": "2.4.2", "read-yaml-file": "2.1.0", - "semver": "7.5.0", + "semver": "7.5.3", "tightrope": "0.1.0", - "zod": "3.21.4" + "ts-toolbelt": "9.6.0" }, "bin": { "syncpack": "dist/bin.js", "syncpack-fix-mismatches": "dist/bin-fix-mismatches/index.js", "syncpack-format": "dist/bin-format/index.js", + "syncpack-lint": "dist/bin-lint/index.js", "syncpack-lint-semver-ranges": "dist/bin-lint-semver-ranges/index.js", "syncpack-list": "dist/bin-list/index.js", "syncpack-list-mismatches": "dist/bin-list-mismatches/index.js", - "syncpack-set-semver-ranges": "dist/bin-set-semver-ranges/index.js" + "syncpack-prompt": "dist/bin-prompt/index.js", + "syncpack-set-semver-ranges": "dist/bin-set-semver-ranges/index.js", + "syncpack-update": "dist/bin-update/index.js" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/syncpack/node_modules/brace-expansion": { @@ -10917,10 +11504,19 @@ "balanced-match": "^1.0.0" } }, + "node_modules/syncpack/node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, "node_modules/syncpack/node_modules/cosmiconfig": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", - "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", "dev": true, "dependencies": { "import-fresh": "^3.2.1", @@ -10949,37 +11545,6 @@ "node": ">=14.14" } }, - "node_modules/syncpack/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/syncpack/node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/syncpack/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -10993,24 +11558,24 @@ } }, "node_modules/syncpack/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", + "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/syncpack/node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11212,6 +11777,24 @@ "node": ">=8" } }, + "node_modules/ts-api-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", + "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "dev": true + }, "node_modules/tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -11241,27 +11824,6 @@ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/tuf-js": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.4.tgz", @@ -11332,16 +11894,16 @@ } }, "node_modules/tuf-js/node_modules/glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -11380,9 +11942,9 @@ } }, "node_modules/tuf-js/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -12067,18 +12629,15 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -12158,17 +12717,75 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^3.0.0" + } + } + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, + "@effect/data": { + "version": "0.12.9", + "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.9.tgz", + "integrity": "sha512-nuzFo+2LK4yG9H16WRv51MDhUAIuUGhmKYkuSrgCApwwLy2eUATaioQEbbR2rHOTprOiYpbIYKwvPsylEm/Fdw==", + "dev": true + }, + "@effect/io": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.27.0.tgz", + "integrity": "sha512-3ZUaf6B+aH83HPJ84KTthd4glgrRk6DXj9M915OB9G4cMbbJAwE/709tgamzD2IxcfSlqPowtvx73Cs4N7Ywrw==", + "dev": true, + "requires": { + "@effect/data": "~0.12.6" + } + }, + "@effect/match": { + "version": "0.24.5", + "resolved": "https://registry.npmjs.org/@effect/match/-/match-0.24.5.tgz", + "integrity": "sha512-mMoQLGt8s0AmXQR1yUTdBCbdzNIn8d5Ujf1o0T4mldiap4/eq3pf8cvyQm8dHK1Y8KyT4dA2ukJq56rSMIBZXA==", + "dev": true, + "requires": { + "@effect/data": "^0.12.9", + "@effect/schema": "^0.20.2" + }, + "dependencies": { + "@effect/io": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.26.2.tgz", + "integrity": "sha512-PdqtgmfEw88kX1UKZZvK42dpMZPSCPmdWAAzN17yCzfEsA3HoPjjxo9jLyzfjtUcU+tWO0tF/GY7pcDVLcJZAg==", + "dev": true, + "requires": { + "@effect/data": "~0.12.6" + } + }, + "@effect/schema": { + "version": "0.20.3", + "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.20.3.tgz", + "integrity": "sha512-pjJW9QkHZd2/fq7Bhd6pAOidMJ0OUODOeUlesPDK0jpo62AaU9g+IGXt3v5NU8rXSX77igZgfK08XhmofwHn0A==", + "dev": true, + "requires": { + "@effect/data": "^0.12.7", + "@effect/io": "^0.26.0", + "fast-check": "^3.10.0" } } } }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "@effect/schema": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.21.0.tgz", + "integrity": "sha512-IFB6hnwuTzHKaMGrAuzp0LBIIkPtW8gaXXQAik/h7ZnPpE8sOkSWKyDHuD4lpOqgsFp1G55NobVKpJUPcL8Onw==", "dev": true, - "optional": true + "requires": { + "@effect/data": "^0.12.9", + "@effect/io": "^0.27.0", + "fast-check": "^3.10.0" + } }, "@eslint-community/eslint-utils": { "version": "4.4.0", @@ -12186,14 +12803,14 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -12203,9 +12820,9 @@ } }, "@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true }, "@gar/promisify": { @@ -12243,6 +12860,71 @@ "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@isaacs/string-locale-compare": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", @@ -12450,16 +13132,16 @@ "dev": true }, "glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "dependencies": { "brace-expansion": { @@ -12472,18 +13154,18 @@ } }, "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", "dev": true } } @@ -12636,6 +13318,25 @@ } } }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, "proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -12850,22 +13551,22 @@ } }, "glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "dependencies": { "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -13123,31 +13824,31 @@ } }, "glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" } }, "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", "dev": true } } @@ -13212,16 +13913,16 @@ } }, "glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" } }, "json-parse-even-better-errors": { @@ -13231,9 +13932,9 @@ "dev": true }, "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -13834,102 +14535,164 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz", - "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz", + "integrity": "sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==", "dev": true, "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/type-utils": "5.60.1", - "@typescript-eslint/utils": "5.60.1", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/type-utils": "6.1.0", + "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@typescript-eslint/parser": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.1.tgz", - "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.1.0.tgz", + "integrity": "sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", - "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", + "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1" + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0" } }, "@typescript-eslint/type-utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz", - "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz", + "integrity": "sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.60.1", - "@typescript-eslint/utils": "5.60.1", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/utils": "6.1.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/types": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", - "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", + "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", - "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", + "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@typescript-eslint/utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.1.tgz", - "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.1.0.tgz", + "integrity": "sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==", "dev": true, "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "semver": "^7.5.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@typescript-eslint/visitor-keys": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", - "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", + "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.60.1", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.1.0", + "eslint-visitor-keys": "^3.4.1" } }, "@yarnpkg/lockfile": { @@ -13994,9 +14757,9 @@ } }, "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-jsx": { @@ -15187,15 +15950,15 @@ "dev": true }, "eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -15207,7 +15970,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -15217,7 +15980,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -15227,9 +15989,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { @@ -15259,22 +16020,12 @@ "requires": {} }, "eslint-plugin-simple-import-sort": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", - "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", + "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", "dev": true, "requires": {} }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, "eslint-visitor-keys": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", @@ -15282,12 +16033,12 @@ "dev": true }, "espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } @@ -15332,12 +16083,6 @@ } } }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -15390,6 +16135,15 @@ "tmp": "^0.0.33" } }, + "fast-check": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.11.0.tgz", + "integrity": "sha512-H2tctb7AGfFQfz+DEr3UWhJ3s47LXsGp5g3jeJr5tHjnf4xUvpArIqiwcDmL2EXiv+auLHIpF5MqaIpIKvpxiA==", + "dev": true, + "requires": { + "pure-rand": "^6.0.0" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -15566,9 +16320,9 @@ }, "dependencies": { "signal-exit": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", - "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true } } @@ -15912,12 +16666,6 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -16055,9 +16803,9 @@ "dev": true }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "ignore-walk": { @@ -16386,98 +17134,34 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.0.tgz", "integrity": "sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "jackspeak": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.1.4.tgz", - "integrity": "sha512-7CGd4ZQu5M/FgQLlcgcsY858wf+ukg1ma5M95FACSfC54+88vm594Nv6C3NqWfk8wyK1u+E3SzvVsxr7bwONmg==", - "dev": true, - "requires": { - "@pkgjs/parseargs": "^0.11.0", - "cliui": "github:isaacs/cliui#isaacs/esm-cjs-consistency" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "cliui": { - "version": "git+ssh://git@github.com/isaacs/cliui.git#9f97090165675fdda63a79c29bc36bb1033506b0", - "dev": true, - "from": "cliui@github:isaacs/cliui#isaacs/esm-cjs-consistency", - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - } - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" } }, "jake": { @@ -16810,16 +17494,16 @@ "dev": true }, "glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "dependencies": { "brace-expansion": { @@ -16832,9 +17516,9 @@ } }, "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -16950,6 +17634,25 @@ } } }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, "proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -17144,16 +17847,16 @@ } }, "glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" } }, "make-fetch-happen": { @@ -17180,9 +17883,9 @@ } }, "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -17870,141 +18573,365 @@ "lru-cache": "^6.0.0" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true + }, + "npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^3.0.0" + } + }, + "npm-check-updates": { + "version": "16.10.16", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.16.tgz", + "integrity": "sha512-d8mNYce/l8o5RHPE5ZUp2P1zj9poI7KWQCh5AsTIP3EhicONEhc63mLQQv4/nkCsMb3wCrikx6YOo4BOwN4+1w==", + "dev": true, + "requires": { + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "commander": "^10.0.0", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.3", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^5.1.0", + "ini": "^4.1.1", + "js-yaml": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "lodash": "^4.17.21", + "minimatch": "^9.0.3", + "p-map": "^4.0.0", + "pacote": "15.2.0", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts-ncu": "^3.0.0", + "rc-config-loader": "^4.1.3", + "remote-git-tags": "^3.0.0", + "rimraf": "^5.0.1", + "semver": "^7.5.3", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^2.0.1", + "strip-json-comments": "^5.0.1", + "untildify": "^4.0.0", + "update-notifier": "^6.0.2" + }, + "dependencies": { + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "requires": { + "which": "^3.0.0" + } + }, + "@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", + "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + } + }, + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + }, + "fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, + "glob": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "dev": true, + "requires": { + "minimatch": "^9.0.0" + } + }, + "ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + }, + "make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "dependencies": { + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + } + } + }, + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "requires": { - "yallist": "^4.0.0" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + } } - } - } - }, - "normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "dev": true - }, - "npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^3.0.0" - } - }, - "npm-check-updates": { - "version": "16.10.13", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.13.tgz", - "integrity": "sha512-ZsWrtHnaMkcxAaCtDFEr8i7jgM0Bz2AYsnsJlmxISgltG8ie43bWC6G9icxFKfYSLeJJtcj/Yw1Mq5f8GL2F3g==", - "dev": true, - "requires": { - "chalk": "^5.2.0", - "cli-table3": "^0.6.3", - "commander": "^10.0.0", - "fast-memoize": "^2.5.2", - "find-up": "5.0.0", - "fp-and-or": "^0.1.3", - "get-stdin": "^8.0.0", - "globby": "^11.0.4", - "hosted-git-info": "^5.1.0", - "ini": "^4.0.0", - "js-yaml": "^4.1.0", - "json-parse-helpfulerror": "^1.0.3", - "jsonlines": "^0.1.1", - "lodash": "^4.17.21", - "minimatch": "^9.0.0", - "p-map": "^4.0.0", - "pacote": "15.1.1", - "parse-github-url": "^1.0.2", - "progress": "^2.0.3", - "prompts-ncu": "^3.0.0", - "rc-config-loader": "^4.1.2", - "remote-git-tags": "^3.0.0", - "rimraf": "^5.0.0", - "semver": "^7.4.0", - "semver-utils": "^1.1.4", - "source-map-support": "^0.5.21", - "spawn-please": "^2.0.1", - "strip-json-comments": "^5.0.0", - "untildify": "^4.0.0", - "update-notifier": "^6.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + }, + "npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, "requires": { - "balanced-match": "^1.0.0" + "ignore-walk": "^6.0.0" } }, - "chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true - }, - "glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", + "make-fetch-happen": "^11.0.0", "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" } }, - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "pacote": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", "dev": true, "requires": { - "lru-cache": "^7.5.1" + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" } }, - "ini": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.0.tgz", - "integrity": "sha512-HLR38RSF2iulAzc3I/sma4CoYxQP844rPYCNfzGDOHqa/YqVlwuuZgBx6M50/X8dKgzk0cm1qRg3+47mK2N+cQ==", + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true }, - "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "read-package-json": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" } }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, "rimraf": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.0.tgz", - "integrity": "sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", "dev": true, "requires": { - "glob": "^10.0.0" + "glob": "^10.2.5" } }, "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -18021,11 +18948,56 @@ } } }, + "ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, "strip-json-comments": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", - "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", + "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", "dev": true + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -18457,17 +19429,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "ora": { @@ -18545,13 +19517,13 @@ "dev": true }, "p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz", + "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==", "dev": true, "requires": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" + "eventemitter3": "^4.0.7", + "p-timeout": "^5.0.2" } }, "p-reduce": { @@ -18561,13 +19533,10 @@ "dev": true }, "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true }, "p-try": { "version": "2.2.0", @@ -18708,22 +19677,22 @@ } }, "glob": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", - "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "dependencies": { "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", "dev": true } } @@ -18775,9 +19744,9 @@ } }, "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -19027,13 +19996,13 @@ "dev": true }, "path-scurry": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", - "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "requires": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "dependencies": { "lru-cache": { @@ -19209,6 +20178,24 @@ "retry": "^0.12.0" } }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + } + } + }, "prompts-ncu": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", @@ -19261,6 +20248,12 @@ "escape-goat": "^4.0.0" } }, + "pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -19300,9 +20293,9 @@ } }, "rc-config-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz", - "integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", "dev": true, "requires": { "debug": "^4.3.4", @@ -20209,21 +21202,28 @@ "dev": true }, "syncpack": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-9.8.6.tgz", - "integrity": "sha512-4S4cUoKK9WenA/Wdk9GvlekzPR9PxC7sqcsUIsK4ypsa/pIYv8Ju1vxGNvp6Y1yI2S9EdCk0QJsB3/wRB8XYVw==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-10.7.3.tgz", + "integrity": "sha512-nhsiOHR1zebKRn4eZn5zUjbSJm4D8GgqiraY45MsaOClPbhVJny/jWhWrjSOuwwupdwv8EYH+GA9sqCEn4DCnA==", "dev": true, "requires": { + "@effect/data": "0.12.9", + "@effect/io": "0.27.0", + "@effect/match": "0.24.5", + "@effect/schema": "0.21.0", "chalk": "4.1.2", - "commander": "10.0.1", - "cosmiconfig": "8.1.3", + "commander": "11.0.0", + "cosmiconfig": "8.2.0", + "enquirer": "2.3.6", "fs-extra": "11.1.1", - "glob": "8.1.0", - "minimatch": "6.2.0", + "globby": "11.1.0", + "minimatch": "9.0.2", + "ora": "5.4.1", + "prompts": "2.4.2", "read-yaml-file": "2.1.0", - "semver": "7.5.0", + "semver": "7.5.3", "tightrope": "0.1.0", - "zod": "3.21.4" + "ts-toolbelt": "9.6.0" }, "dependencies": { "brace-expansion": { @@ -20235,10 +21235,16 @@ "balanced-match": "^1.0.0" } }, + "commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true + }, "cosmiconfig": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", - "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", "dev": true, "requires": { "import-fresh": "^3.2.1", @@ -20258,30 +21264,6 @@ "universalify": "^2.0.0" } }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "dependencies": { - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -20292,18 +21274,18 @@ } }, "minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", + "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -20455,6 +21437,19 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "ts-api-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", + "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "dev": true, + "requires": {} + }, + "ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "dev": true + }, "tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -20480,23 +21475,6 @@ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, "tuf-js": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.4.tgz", @@ -20555,16 +21533,16 @@ } }, "glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" } }, "make-fetch-happen": { @@ -20591,9 +21569,9 @@ } }, "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -21103,12 +22081,6 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true - }, - "zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "dev": true } } } diff --git a/package.json b/package.json index cbce9ab82..4780b9cd9 100644 --- a/package.json +++ b/package.json @@ -23,20 +23,21 @@ "@types/glob": "^7.2.0", "@types/node": "^17.0.45", "@types/yargs": "^16.0.5", - "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", "detect-indent": "^6.1.0", - "eslint": "^8.43.0", + "eslint": "^8.45.0", "eslint-config-prettier": "^8.8.0", - "eslint-plugin-simple-import-sort": "^7.0.0", + "eslint-plugin-simple-import-sort": "^10.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", "lerna": "^6.6.2", - "npm-check-updates": "^16.10.13", - "p-queue": "^6.6.2", + "npm-check-updates": "^16.10.16", + "p-queue": "^7.3.4", "prettier": "2.8.8", - "syncpack": "^9.8.6", + "syncpack": "^10.7.3", "typescript": "~4.4.4", + "word-wrap": "1.2.4", "yargs": "^16.2.0" } } diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 663672882..673c880c5 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -12,7 +12,7 @@ "@iarna/toml": "2.2.5", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", - "chalk": "^4.1.2", + "chalk": "^5.3.0", "chokidar": "^3.5.3", "command-line-args": "^5.2.1", "jsonc-parser": "^3.2.0", @@ -28,14 +28,15 @@ "devDependencies": { "@types/command-line-args": "^5.2.0", "@types/fs-extra": "^11.0.1", - "@types/jest": "^27.5.2", + "@types/jest": "^29.5.3", "@types/node": "^17.0.45", "@types/tmp": "^0.2.3", - "jest": "^27.5.1", - "jest-junit": "^13.2.0", + "jest": "^29.6.1", + "jest-junit": "^16.0.0", "shx": "^0.3.4", - "ts-jest": "^27.1.5", - "typescript": "~4.4.4" + "ts-jest": "^29.1.1", + "typescript": "~4.4.4", + "word-wrap": "1.2.4" } }, "node_modules/@ampproject/remapping": { @@ -52,47 +53,47 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz", - "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz", - "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.22.0", - "@babel/helper-compilation-targets": "^7.22.1", - "@babel/helper-module-transforms": "^7.22.1", - "@babel/helpers": "^7.22.0", - "@babel/parser": "^7.22.0", - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.2", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -102,22 +103,19 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/@babel/generator": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz", - "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.3", + "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -127,16 +125,16 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz", - "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.0", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -145,176 +143,152 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz", - "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "dependencies": { - "@babel/types": "^7.21.4" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz", - "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.1", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-simple-access": "^7.21.5", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.0" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", - "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", - "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { - "@babel/types": "^7.21.5" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", - "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz", - "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dev": true, "dependencies": { - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.3" + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -348,21 +322,6 @@ "node": ">=4" } }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -394,9 +353,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", - "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -465,6 +424,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -553,12 +527,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", - "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -568,33 +542,33 @@ } }, "node_modules/@babel/template": { - "version": "7.21.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", - "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/parser": "^7.21.9", - "@babel/types": "^7.21.5" + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.4.tgz", - "integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.22.3", - "@babel/helper-environment-visitor": "^7.22.1", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.22.4", - "@babel/types": "^7.22.4", + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -602,23 +576,14 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz", - "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -652,152 +617,118 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/@jest/console": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.1.tgz", + "integrity": "sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@jest/types": "^29.6.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.6.1", + "jest-util": "^29.6.1", + "slash": "^3.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.1.tgz", + "integrity": "sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.6.1", + "@jest/reporters": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.6.1", + "jest-haste-map": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.1", + "jest-resolve-dependencies": "^29.6.1", + "jest-runner": "^29.6.1", + "jest-runtime": "^29.6.1", + "jest-snapshot": "^29.6.1", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", + "jest-watcher": "^29.6.1", "micromatch": "^4.0.4", - "rimraf": "^3.0.0", + "pretty-format": "^29.6.1", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -808,86 +739,160 @@ } } }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.1.tgz", + "integrity": "sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/fake-timers": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^27.5.1" + "jest-mock": "^29.6.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.1.tgz", + "integrity": "sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg==", + "dev": true, + "dependencies": { + "expect": "^29.6.1", + "jest-snapshot": "^29.6.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.1.tgz", + "integrity": "sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.1.tgz", + "integrity": "sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^29.6.1", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-message-util": "^29.6.1", + "jest-mock": "^29.6.1", + "jest-util": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.1.tgz", + "integrity": "sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@jest/environment": "^29.6.1", + "@jest/expect": "^29.6.1", + "@jest/types": "^29.6.1", + "jest-mock": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.1.tgz", + "integrity": "sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-message-util": "^29.6.1", + "jest-util": "^29.6.1", + "jest-worker": "^29.6.1", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -898,104 +903,252 @@ } } }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz", + "integrity": "sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.1.tgz", + "integrity": "sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw==", + "dev": true, + "dependencies": { + "@jest/console": "^29.6.1", + "@jest/types": "^29.6.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.1.tgz", + "integrity": "sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.6.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.1.tgz", + "integrity": "sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/transform/node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", "dev": true, "dependencies": { + "@jest/schemas": "^29.6.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -1050,22 +1203,28 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/@types/babel__core": { @@ -1164,47 +1323,15 @@ } }, "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", - "dev": true, - "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.5.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", + "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, "node_modules/@types/jsonfile": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", @@ -1239,9 +1366,9 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -1287,67 +1414,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -1363,18 +1429,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1385,14 +1439,12 @@ } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -1410,6 +1462,15 @@ "node": ">= 8" } }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/array-back": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", @@ -1418,77 +1479,119 @@ "node": ">=6" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.1.tgz", + "integrity": "sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==", "dev": true, "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/transform": "^29.6.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", + "babel-preset-jest": "^29.5.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "@babel/core": "^7.8.0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.8.3", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", @@ -1501,16 +1604,16 @@ } }, "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", + "babel-plugin-jest-hoist": "^29.5.0", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -1549,16 +1652,10 @@ "node": ">=8" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "node_modules/browserslist": { - "version": "4.21.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", - "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "dev": true, "funding": [ { @@ -1575,8 +1672,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001489", - "electron-to-chromium": "^1.4.411", + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", "node-releases": "^2.0.12", "update-browserslist-db": "^1.0.11" }, @@ -1632,9 +1729,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001495", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", - "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", + "version": "1.0.30001516", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz", + "integrity": "sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==", "dev": true, "funding": [ { @@ -1652,15 +1749,11 @@ ] }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" @@ -1712,21 +1805,39 @@ "node": ">= 6" } }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/co": { @@ -1740,38 +1851,25 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/command-line-args": { "version": "5.2.1", @@ -1793,9 +1891,9 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "node_modules/cross-spawn": { @@ -1812,79 +1910,6 @@ "node": ">= 8" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1902,24 +1927,12 @@ } } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -1929,15 +1942,6 @@ "node": ">=0.10.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -1948,48 +1952,27 @@ } }, "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/electron-to-chromium": { - "version": "1.4.421", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.421.tgz", - "integrity": "sha512-wZOyn3s/aQOtLGAwXMZfteQPN68kgls2wDAnYOA8kCjBvKVrW5RwmWVspxJYTqrcN7Y263XJVsC66VCIGzDO3g==", + "version": "1.4.462", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.462.tgz", + "integrity": "sha512-ux2LqN9JKRBDKXMT+78jtiBLPiXf+rLtYlsrOg5Qn7uv6Cbg7+9JyIalE3wcqkOdB2wPCUYNWAuL7suKRMHe9w==", "dev": true }, "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sindresorhus/emittery?sponsor=1" @@ -2019,86 +2002,13 @@ "node": ">=6" } }, - "node_modules/escodegen": { + "node_modules/escape-string-regexp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, "node_modules/esprima": { @@ -2114,19 +2024,10 @@ "node": ">=4" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -2156,18 +2057,20 @@ } }, "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.1.tgz", + "integrity": "sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^29.6.1", + "@types/node": "*", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-util": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/fast-json-stable-stringify": { @@ -2176,12 +2079,6 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -2213,6 +2110,19 @@ "node": ">=4.0.0" } }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2295,10 +2205,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/has": { @@ -2317,41 +2236,17 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -2361,18 +2256,6 @@ "node": ">=10.17.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -2498,27 +2381,18 @@ "node": ">=0.12.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2550,15 +2424,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", @@ -2601,20 +2466,21 @@ } }, "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.1.tgz", + "integrity": "sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw==", "dev": true, "dependencies": { - "@jest/core": "^27.5.1", + "@jest/core": "^29.6.1", + "@jest/types": "^29.6.1", "import-local": "^3.0.2", - "jest-cli": "^27.5.1" + "jest-cli": "^29.6.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -2626,105 +2492,122 @@ } }, "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", "execa": "^5.0.0", - "throat": "^6.0.1" + "p-limit": "^3.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.1.tgz", + "integrity": "sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.6.1", + "@jest/expect": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", + "jest-each": "^29.6.1", + "jest-matcher-utils": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-runtime": "^29.6.1", + "jest-snapshot": "^29.6.1", + "jest-util": "^29.6.1", + "p-limit": "^3.1.0", + "pretty-format": "^29.6.1", + "pure-rand": "^6.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.1.tgz", + "integrity": "sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing==", "dev": true, "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/core": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/types": "^29.6.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-config": "^29.6.1", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", "prompts": "^2.0.1", - "yargs": "^16.2.0" + "yargs": "^17.3.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -2735,337 +2618,345 @@ } } }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.1.tgz", + "integrity": "sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ==", "dev": true, "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.6.1", + "@jest/types": "^29.6.1", + "babel-jest": "^29.6.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-circus": "^29.6.1", + "jest-environment-node": "^29.6.1", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.1", + "jest-runner": "^29.6.1", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", + "pretty-format": "^29.6.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { + "@types/node": "*", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, "ts-node": { "optional": true } } }, "node_modules/jest-config/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-config/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz", + "integrity": "sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-diff/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-diff/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.1.tgz", + "integrity": "sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.1", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^29.4.3", + "jest-util": "^29.6.1", + "pretty-format": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.1.tgz", + "integrity": "sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.6.1", + "@jest/fake-timers": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-mock": "^29.6.1", + "jest-util": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.1.tgz", + "integrity": "sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^29.6.1", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.1", + "jest-worker": "^29.6.1", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "optionalDependencies": { "fsevents": "^2.3.2" } }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, "node_modules/jest-junit": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz", - "integrity": "sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-16.0.0.tgz", + "integrity": "sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==", "dev": true, "dependencies": { "mkdirp": "^1.0.4", @@ -3078,160 +2969,163 @@ } }, "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz", + "integrity": "sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ==", "dev": true, "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-matcher-utils": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz", + "integrity": "sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "chalk": "^4.0.0", + "jest-diff": "^29.6.1", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.1.tgz", + "integrity": "sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "pretty-format": "^29.6.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.1.tgz", + "integrity": "sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" + "@jest/types": "^29.6.1", + "@types/node": "*", + "jest-util": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-pnp-resolver": { @@ -3252,248 +3146,476 @@ } }, "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.1.tgz", + "integrity": "sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", + "jest-haste-map": "^29.6.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.1.tgz", + "integrity": "sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.6.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.1.tgz", + "integrity": "sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.6.1", + "@jest/environment": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.6.1", + "jest-haste-map": "^29.6.1", + "jest-leak-detector": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-resolve": "^29.6.1", + "jest-runtime": "^29.6.1", + "jest-util": "^29.6.1", + "jest-watcher": "^29.6.1", + "jest-worker": "^29.6.1", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.1.tgz", + "integrity": "sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.6.1", + "@jest/fake-timers": "^29.6.1", + "@jest/globals": "^29.6.1", + "@jest/source-map": "^29.6.0", + "@jest/test-result": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", + "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-mock": "^29.6.1", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.1", + "jest-snapshot": "^29.6.1", + "jest-util": "^29.6.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.1.tgz", + "integrity": "sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A==", "dev": true, "dependencies": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.5.1", + "expect": "^29.6.1", "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-diff": "^29.6.1", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-util": "^29.6.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^29.6.1", + "semver": "^7.5.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz", + "integrity": "sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-util/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz", + "integrity": "sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", + "jest-get-type": "^29.4.3", "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "pretty-format": "^29.6.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -3511,195 +3633,155 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.1.tgz", + "integrity": "sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==", "dev": true, "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/test-result": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.5.1", + "emittery": "^0.13.1", + "jest-util": "^29.6.1", "string-length": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 10.13.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jsdom/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/jsdom/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz", + "integrity": "sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==", "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "@types/node": "*", + "jest-util": "^29.6.1", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jsdom/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "punycode": "^2.1.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/jsesc": { @@ -3737,6 +3819,15 @@ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -3751,11 +3842,17 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -3768,6 +3865,15 @@ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -3783,15 +3889,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -3826,27 +3923,6 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -3907,9 +3983,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "node_modules/normalize-path": { @@ -3932,27 +4008,63 @@ "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz", - "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "p-try": "^2.0.0" }, "engines": { "node": ">=6" @@ -3988,12 +4100,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4044,9 +4150,9 @@ } }, "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, "engines": { "node": ">= 6" @@ -4064,56 +4170,18 @@ "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/pretty-format": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz", + "integrity": "sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@jest/schemas": "^29.6.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/prompts": { @@ -4129,34 +4197,26 @@ "node": ">= 6" } }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", "dev": true, - "engines": { - "node": ">=6" - } + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "node_modules/readdirp": { @@ -4191,12 +4251,6 @@ "node": ">=0.10.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -4226,7 +4280,7 @@ "node": ">=8" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { + "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -4236,9 +4290,9 @@ } }, "node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, "engines": { "node": ">=10" @@ -4258,49 +4312,13 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" } }, "node_modules/shebang-command": { @@ -4413,15 +4431,6 @@ "node": ">=10" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -4495,21 +4504,9 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" @@ -4527,28 +4524,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -4563,12 +4538,6 @@ "node": ">=8" } }, - "node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true - }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -4606,63 +4575,39 @@ "node": ">=8.0" } }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" }, "bin": { "ts-jest": "cli.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" }, "peerDependenciesMeta": { "@babel/core": { "optional": true }, - "@types/jest": { + "@jest/types": { "optional": true }, "babel-jest": { @@ -4673,6 +4618,39 @@ } } }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -4682,13 +4660,16 @@ "node": ">=4" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typescript": { @@ -4742,16 +4723,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -4762,27 +4733,24 @@ } }, "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^1.6.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/vscode-jsonrpc": { "version": "8.1.0", @@ -4827,28 +4795,6 @@ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz", "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==" }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -4858,21 +4804,6 @@ "makeerror": "1.0.12" } }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4908,36 +4839,61 @@ "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/xml": { @@ -4946,18 +4902,6 @@ "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -4968,36 +4912,48 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } }, @@ -5013,209 +4969,183 @@ } }, "@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.5" } }, "@babel/compat-data": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz", - "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", "dev": true }, "@babel/core": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz", - "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.22.0", - "@babel/helper-compilation-targets": "^7.22.1", - "@babel/helper-module-transforms": "^7.22.1", - "@babel/helpers": "^7.22.0", - "@babel/parser": "^7.22.0", - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.2", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true } } }, "@babel/generator": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz", - "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", "dev": true, "requires": { - "@babel/types": "^7.22.3", + "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" } }, "@babel/helper-compilation-targets": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz", - "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.0", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } + "semver": "^6.3.1" } }, "@babel/helper-environment-visitor": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz", - "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true }, "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "requires": { - "@babel/types": "^7.21.4" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-transforms": { - "version": "7.22.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz", - "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==", + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.1", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-simple-access": "^7.21.5", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.0" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" } }, "@babel/helper-plugin-utils": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", - "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true }, "@babel/helper-simple-access": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", - "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "requires": { - "@babel/types": "^7.21.5" + "@babel/types": "^7.22.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", - "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true }, "@babel/helpers": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz", - "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dev": true, "requires": { - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.3" + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -5240,21 +5170,6 @@ "supports-color": "^5.3.0" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -5279,9 +5194,9 @@ } }, "@babel/parser": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", - "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -5329,6 +5244,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -5393,59 +5317,51 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", - "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/template": { - "version": "7.21.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", - "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, "requires": { - "@babel/code-frame": "^7.21.4", - "@babel/parser": "^7.21.9", - "@babel/types": "^7.21.5" + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" } }, "@babel/traverse": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.4.tgz", - "integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.22.3", - "@babel/helper-environment-visitor": "^7.22.1", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.22.4", - "@babel/types": "^7.22.4", + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } } }, "@babel/types": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz", - "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" } }, @@ -5471,281 +5387,412 @@ "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.1.tgz", + "integrity": "sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q==", + "dev": true, + "requires": { + "@jest/types": "^29.6.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.6.1", + "jest-util": "^29.6.1", + "slash": "^3.0.0" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "color-convert": "^2.0.1" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "color-name": "~1.1.4" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "@jest/core": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.1.tgz", + "integrity": "sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ==", + "dev": true, + "requires": { + "@jest/console": "^29.6.1", + "@jest/reporters": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.6.1", + "jest-haste-map": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.1", + "jest-resolve-dependencies": "^29.6.1", + "jest-runner": "^29.6.1", + "jest-runtime": "^29.6.1", + "jest-snapshot": "^29.6.1", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", + "jest-watcher": "^29.6.1", + "micromatch": "^4.0.4", + "pretty-format": "^29.6.1", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "color-convert": "^2.0.1" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "p-try": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "color-name": "~1.1.4" } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "@jest/environment": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.1.tgz", + "integrity": "sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/fake-timers": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" + "jest-mock": "^29.6.1" } }, - "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "@jest/expect": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.1.tgz", + "integrity": "sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "expect": "^29.6.1", + "jest-snapshot": "^29.6.1" } }, - "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "@jest/expect-utils": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.1.tgz", + "integrity": "sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==", "dev": true, "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" + "jest-get-type": "^29.4.3" } }, "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.1.tgz", + "integrity": "sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^29.6.1", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-message-util": "^29.6.1", + "jest-mock": "^29.6.1", + "jest-util": "^29.6.1" } }, "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.1.tgz", + "integrity": "sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@jest/environment": "^29.6.1", + "@jest/expect": "^29.6.1", + "@jest/types": "^29.6.1", + "jest-mock": "^29.6.1" } }, "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.1.tgz", + "integrity": "sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-message-util": "^29.6.1", + "jest-util": "^29.6.1", + "jest-worker": "^29.6.1", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" } }, "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz", + "integrity": "sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" } }, "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.1.tgz", + "integrity": "sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.6.1", + "@jest/types": "^29.6.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.1.tgz", + "integrity": "sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg==", "dev": true, "requires": { - "@jest/test-result": "^27.5.1", + "@jest/test-result": "^29.6.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "jest-haste-map": "^29.6.1", + "slash": "^3.0.0" } }, "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.1.tgz", + "integrity": "sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^29.6.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.2" }, "dependencies": { - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "color-name": "~1.1.4" } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true } } }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", "dev": true, "requires": { + "@jest/schemas": "^29.6.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "@jridgewell/gen-mapping": { @@ -5795,22 +5842,28 @@ } } }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, "@types/babel__core": { @@ -5909,38 +5962,13 @@ } }, "@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "29.5.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", + "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", "dev": true, "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - } + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, "@types/jsonfile": { @@ -5977,9 +6005,9 @@ "dev": true }, "@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -6019,53 +6047,8 @@ "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "ansi-escapes": { @@ -6075,14 +6058,6 @@ "dev": true, "requires": { "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } } }, "ansi-regex": { @@ -6092,12 +6067,10 @@ "dev": true }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "anymatch": { "version": "3.1.3", @@ -6108,31 +6081,69 @@ "picomatch": "^2.0.4" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "array-back": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.1.tgz", + "integrity": "sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==", "dev": true, "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/transform": "^29.6.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", + "babel-preset-jest": "^29.5.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "babel-plugin-istanbul": { @@ -6149,14 +6160,14 @@ } }, "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", "dev": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" } }, @@ -6181,12 +6192,12 @@ } }, "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.5.1", + "babel-plugin-jest-hoist": "^29.5.0", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -6217,20 +6228,14 @@ "fill-range": "^7.0.1" } }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "browserslist": { - "version": "4.21.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", - "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001489", - "electron-to-chromium": "^1.4.411", + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", "node-releases": "^2.0.12", "update-browserslist-db": "^1.0.11" } @@ -6271,19 +6276,15 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001495", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", - "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", + "version": "1.0.30001516", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz", + "integrity": "sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==", "dev": true }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==" }, "char-regex": { "version": "1.0.2", @@ -6316,20 +6317,26 @@ } } }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, @@ -6340,32 +6347,25 @@ "dev": true }, "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "command-line-args": { "version": "5.2.1", @@ -6384,9 +6384,9 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "cross-spawn": { @@ -6400,68 +6400,6 @@ "which": "^2.0.1" } }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "dependencies": { - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } - } - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -6471,36 +6409,18 @@ "ms": "2.1.2" } }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, "deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -6508,38 +6428,21 @@ "dev": true }, "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, "electron-to-chromium": { - "version": "1.4.421", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.421.tgz", - "integrity": "sha512-wZOyn3s/aQOtLGAwXMZfteQPN68kgls2wDAnYOA8kCjBvKVrW5RwmWVspxJYTqrcN7Y263XJVsC66VCIGzDO3g==", + "version": "1.4.462", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.462.tgz", + "integrity": "sha512-ux2LqN9JKRBDKXMT+78jtiBLPiXf+rLtYlsrOg5Qn7uv6Cbg7+9JyIalE3wcqkOdB2wPCUYNWAuL7suKRMHe9w==", "dev": true }, "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true }, "emoji-regex": { @@ -6563,65 +6466,11 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "escodegen": { + "escape-string-regexp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true }, "esprima": { "version": "4.0.1", @@ -6629,16 +6478,10 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, "execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -6659,15 +6502,17 @@ "dev": true }, "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.1.tgz", + "integrity": "sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^29.6.1", + "@types/node": "*", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-util": "^29.6.1" } }, "fast-json-stable-stringify": { @@ -6676,12 +6521,6 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, "fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -6707,6 +6546,16 @@ "array-back": "^3.0.1" } }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -6761,10 +6610,16 @@ "path-is-absolute": "^1.0.0" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "has": { @@ -6779,16 +6634,8 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "html-escaper": { "version": "2.0.2", @@ -6796,31 +6643,12 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -6910,22 +6738,10 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "isexe": { @@ -6951,14 +6767,6 @@ "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "istanbul-lib-report": { @@ -6994,356 +6802,363 @@ } }, "jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.1.tgz", + "integrity": "sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw==", "dev": true, "requires": { - "@jest/core": "^27.5.1", + "@jest/core": "^29.6.1", + "@jest/types": "^29.6.1", "import-local": "^3.0.2", - "jest-cli": "^27.5.1" + "jest-cli": "^29.6.1" } }, "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", "dev": true, "requires": { - "@jest/types": "^27.5.1", "execa": "^5.0.0", - "throat": "^6.0.1" + "p-limit": "^3.1.0" } }, "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.1.tgz", + "integrity": "sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.6.1", + "@jest/expect": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", + "jest-each": "^29.6.1", + "jest-matcher-utils": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-runtime": "^29.6.1", + "jest-snapshot": "^29.6.1", + "jest-util": "^29.6.1", + "p-limit": "^3.1.0", + "pretty-format": "^29.6.1", + "pure-rand": "^6.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.1.tgz", + "integrity": "sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing==", "dev": true, "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/core": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/types": "^29.6.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-config": "^29.6.1", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", "prompts": "^2.0.1", - "yargs": "^16.2.0" + "yargs": "^17.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.1.tgz", + "integrity": "sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ==", "dev": true, "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.6.1", + "@jest/types": "^29.6.1", + "babel-jest": "^29.6.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-circus": "^29.6.1", + "jest-environment-node": "^29.6.1", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.1", + "jest-runner": "^29.6.1", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", + "pretty-format": "^29.6.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz", + "integrity": "sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.1.tgz", + "integrity": "sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.1", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^29.4.3", + "jest-util": "^29.6.1", + "pretty-format": "^29.6.1" }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, - "jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - } - }, "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.1.tgz", + "integrity": "sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.6.1", + "@jest/fake-timers": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-mock": "^29.6.1", + "jest-util": "^29.6.1" } }, "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.1.tgz", + "integrity": "sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^29.6.1", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.1", + "jest-worker": "^29.6.1", "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - } + "walker": "^1.0.8" } }, "jest-junit": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz", - "integrity": "sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-16.0.0.tgz", + "integrity": "sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==", "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -7353,127 +7168,125 @@ } }, "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz", + "integrity": "sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ==", "dev": true, "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - } + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" } }, "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz", + "integrity": "sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-diff": "^29.6.1", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.1.tgz", + "integrity": "sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "pretty-format": "^29.6.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.1.tgz", + "integrity": "sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*" + "@jest/types": "^29.6.1", + "@types/node": "*", + "jest-util": "^29.6.1" } }, "jest-pnp-resolver": { @@ -7484,171 +7297,311 @@ "requires": {} }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", "dev": true }, "jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.1.tgz", + "integrity": "sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==", "dev": true, "requires": { - "@jest/types": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", + "jest-haste-map": "^29.6.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-util": "^29.6.1", + "jest-validate": "^29.6.1", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.1.tgz", + "integrity": "sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.6.1" } }, "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.1.tgz", + "integrity": "sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.6.1", + "@jest/environment": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.6.1", + "jest-haste-map": "^29.6.1", + "jest-leak-detector": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-resolve": "^29.6.1", + "jest-runtime": "^29.6.1", + "jest-util": "^29.6.1", + "jest-watcher": "^29.6.1", + "jest-worker": "^29.6.1", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } } }, "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.1.tgz", + "integrity": "sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.6.1", + "@jest/fake-timers": "^29.6.1", + "@jest/globals": "^29.6.1", + "@jest/source-map": "^29.6.0", + "@jest/test-result": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", + "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-mock": "^29.6.1", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.1", + "jest-snapshot": "^29.6.1", + "jest-util": "^29.6.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" - } - }, - "jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.1.tgz", + "integrity": "sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A==", "dev": true, "requires": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.5.1", + "expect": "^29.6.1", "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-diff": "^29.6.1", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-util": "^29.6.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^29.6.1", + "semver": "^7.5.3" }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "lru-cache": "^6.0.0" } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz", + "integrity": "sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -7656,33 +7609,64 @@ "picomatch": "^2.2.3" }, "dependencies": { - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz", + "integrity": "sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", + "jest-get-type": "^29.4.3", "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "pretty-format": "^29.6.1" }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, "camelcase": { "version": "6.3.0", @@ -7690,47 +7674,93 @@ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.1.tgz", + "integrity": "sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==", "dev": true, "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/test-result": "^29.6.1", + "@jest/types": "^29.6.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.5.1", + "emittery": "^0.13.1", + "jest-util": "^29.6.1", "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz", + "integrity": "sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==", "dev": true, "requires": { "@types/node": "*", + "jest-util": "^29.6.1", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -7752,95 +7782,14 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsesc": { @@ -7866,6 +7815,12 @@ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -7877,11 +7832,14 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } }, "lodash.camelcase": { "version": "4.3.0", @@ -7894,6 +7852,15 @@ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -7901,14 +7868,6 @@ "dev": true, "requires": { "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "make-error": { @@ -7942,21 +7901,6 @@ "picomatch": "^2.3.1" } }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -8002,9 +7946,9 @@ "dev": true }, "node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "normalize-path": { @@ -8021,12 +7965,6 @@ "path-key": "^3.0.0" } }, - "nwsapi": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz", - "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8044,6 +7982,35 @@ "mimic-fn": "^2.1.0" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -8062,12 +8029,6 @@ "lines-and-columns": "^1.1.6" } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -8103,9 +8064,9 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true }, "pkg-dir": { @@ -8115,45 +8076,17 @@ "dev": true, "requires": { "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } + } + }, + "pretty-format": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz", + "integrity": "sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" } }, "prompts": { @@ -8164,32 +8097,18 @@ "requires": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" - }, - "dependencies": { - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - } } }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", "dev": true }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "readdirp": { @@ -8215,12 +8134,6 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, "resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -8239,20 +8152,18 @@ "dev": true, "requires": { "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } } }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true }, "rimraf": { @@ -8263,40 +8174,11 @@ "glob": "^7.1.3" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true }, "shebang-command": { "version": "2.0.0", @@ -8379,14 +8261,6 @@ "dev": true, "requires": { "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } } }, "string-length": { @@ -8441,18 +8315,9 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "has-flag": "^4.0.0" } }, "supports-preserve-symlinks-flag": { @@ -8461,22 +8326,6 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -8488,12 +8337,6 @@ "minimatch": "^3.0.4" } }, - "throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true - }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -8522,40 +8365,46 @@ "is-number": "^7.0.0" } }, - "tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "dependencies": { - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - } - } - }, "ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, "requires": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "type-detect": { @@ -8564,14 +8413,11 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true }, "typescript": { "version": "4.4.4", @@ -8594,16 +8440,6 @@ "picocolors": "^1.0.0" } }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -8611,20 +8447,20 @@ "dev": true }, "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^1.6.0" }, "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true } } @@ -8666,24 +8502,6 @@ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz", "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==" }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -8693,21 +8511,6 @@ "makeerror": "1.0.12" } }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -8732,6 +8535,32 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "wrappy": { @@ -8739,12 +8568,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "requires": {} + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } }, "xml": { "version": "1.0.1", @@ -8752,18 +8584,6 @@ "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -8771,30 +8591,36 @@ "dev": true }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index e491f8dd0..dac30e140 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -18,7 +18,7 @@ "@iarna/toml": "2.2.5", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", - "chalk": "^4.1.2", + "chalk": "^5.3.0", "chokidar": "^3.5.3", "command-line-args": "^5.2.1", "jsonc-parser": "^3.2.0", @@ -34,13 +34,14 @@ "devDependencies": { "@types/command-line-args": "^5.2.0", "@types/fs-extra": "^11.0.1", - "@types/jest": "^27.5.2", + "@types/jest": "^29.5.3", "@types/node": "^17.0.45", "@types/tmp": "^0.2.3", - "jest": "^27.5.1", - "jest-junit": "^13.2.0", + "jest": "^29.6.1", + "jest-junit": "^16.0.0", "shx": "^0.3.4", - "ts-jest": "^27.1.5", - "typescript": "~4.4.4" + "ts-jest": "^29.1.1", + "typescript": "~4.4.4", + "word-wrap": "1.2.4" } } diff --git a/packages/pyright-internal/src/backgroundThreadBase.ts b/packages/pyright-internal/src/backgroundThreadBase.ts index 66c48ab0d..e518dd945 100644 --- a/packages/pyright-internal/src/backgroundThreadBase.ts +++ b/packages/pyright-internal/src/backgroundThreadBase.ts @@ -73,7 +73,7 @@ export function createConfigOptionsFrom(jsonObject: any): ConfigOptions { const getFileSpec = (fileSpec: any): FileSpec => { return { wildcardRoot: fileSpec.wildcardRoot, - regExp: new RegExp(fileSpec.regExp.source), + regExp: new RegExp(fileSpec.regExp.source, fileSpec.regExp.flags), hasDirectoryWildcard: fileSpec.hasDirectoryWildcard, }; }; diff --git a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts index 3cee35945..f1857cd62 100644 --- a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts +++ b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts @@ -35,7 +35,7 @@ import { Position, rangesAreEqual } from '../common/textRange'; import { ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; import { CallNode, MemberAccessNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; -import { DocumentSymbolCollectorUseCase } from './documentSymbolCollector'; +import { DocumentSymbolCollector, DocumentSymbolCollectorUseCase } from './documentSymbolCollector'; import { canNavigateToFile } from './navigationUtils'; export class CallHierarchyProvider { @@ -285,7 +285,8 @@ export class CallHierarchyProvider { declaration, parseResults, this._evaluator, - this._token + this._token, + this._program ); const incomingCalls = callFinder.findCalls(); @@ -445,7 +446,8 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { private _declaration: Declaration, private _parseResults: ParseResults, private _evaluator: TypeEvaluator, - private _cancellationToken: CancellationToken + private _cancellationToken: CancellationToken, + private _program: ProgramView ) { super(); } @@ -468,14 +470,15 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { // Don't bother doing any more work if the name doesn't match. if (nameNode && nameNode.value === this._symbolName) { - const declarations = this._evaluator.getDeclarationsForNameNode(nameNode); + const declarations = DocumentSymbolCollector.getDeclarationsForNode( + this._program, + nameNode, + /* resolveLocalName */ true, + DocumentSymbolCollectorUseCase.Reference, + this._cancellationToken + ); if (declarations) { - const resolvedDecls = declarations - .map((decl) => { - return this._evaluator.resolveAliasDeclaration(decl, /* resolveLocalNames */ true); - }) - .filter((decl) => decl !== undefined); if (this._declaration.type === DeclarationType.Alias) { const resolvedCurDecls = this._evaluator.resolveAliasDeclaration( this._declaration, @@ -483,12 +486,12 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { ); if ( resolvedCurDecls && - resolvedDecls.some((decl) => DeclarationUtils.areDeclarationsSame(decl!, resolvedCurDecls)) + declarations.some((decl) => DeclarationUtils.areDeclarationsSame(decl!, resolvedCurDecls)) ) { this._addIncomingCallForDeclaration(nameNode!); } } else if ( - resolvedDecls.some((decl) => DeclarationUtils.areDeclarationsSame(decl!, this._declaration)) + declarations.some((decl) => DeclarationUtils.areDeclarationsSame(decl!, this._declaration)) ) { this._addIncomingCallForDeclaration(nameNode!); } diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index a75c10cdb..27b1ee910 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -757,7 +757,14 @@ export class CompletionProvider { subtype = this.evaluator.makeTopLevelTypeVarsConcrete(subtype); if (isClass(subtype)) { - getMembersForClass(subtype, symbolTable, /* includeInstanceVars */ TypeBase.isInstance(subtype)); + const instance = TypeBase.isInstance(subtype); + if (ClassType.isEnumClass(subtype) && instance) { + // We don't add members for instances of enum members. + // ex) 'MyEnum.member.' <= here + return; + } + + getMembersForClass(subtype, symbolTable, instance); } else if (isModule(subtype)) { getMembersForModule(subtype, symbolTable); } else if (isFunction(subtype) || isOverloadedFunction(subtype)) { diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 3dae8d3d0..17aa08ca7 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -9,12 +9,19 @@ import { fail } from '../common/debug'; -import enUsStrings = require('./package.nls.en-us.json'); +import csStrings = require('./package.nls.cs.json'); import deStrings = require('./package.nls.de.json'); +import enUsStrings = require('./package.nls.en-us.json'); import esStrings = require('./package.nls.es.json'); import frStrings = require('./package.nls.fr.json'); +import itStrings = require('./package.nls.it.json'); import jaStrings = require('./package.nls.ja.json'); +import koStrings = require('./package.nls.ko.json'); +import plStrings = require('./package.nls.pl.json'); +import ptBrStrings = require('./package.nls.pt-br.json'); +import qpsPlocStrings = require('./package.nls.qps-ploc.json'); import ruStrings = require('./package.nls.ru.json'); +import trStrings = require('./package.nls.tr.json'); import zhCnStrings = require('./package.nls.zh-cn.json'); import zhTwStrings = require('./package.nls.zh-tw.json'); @@ -36,12 +43,20 @@ export class ParameterizedString { const defaultLocale = 'en-us'; const stringMapsByLocale: Map = new Map([ + ['cs', csStrings], ['de', deStrings], ['en-us', enUsStrings], + ['en', enUsStrings], ['es', esStrings], ['fr', frStrings], + ['it', itStrings], ['ja', jaStrings], + ['ko', koStrings], + ['pl', plStrings], + ['pt-br', ptBrStrings], + ['qps-ploc', qpsPlocStrings], ['ru', ruStrings], + ['tr', trStrings], ['zh-cn', zhCnStrings], ['zh-tw', zhTwStrings], ]); diff --git a/packages/pyright-internal/src/localization/package.nls.cs.json b/packages/pyright-internal/src/localization/package.nls.cs.json index e7906451e..e25969465 100644 --- a/packages/pyright-internal/src/localization/package.nls.cs.json +++ b/packages/pyright-internal/src/localization/package.nls.cs.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "Názvy v pojmenované řazené kolekci členů nemůžou být prázdné.", "namedTupleFirstArg": "Jako první argument byl očekáván název pojmenované třídy řazené kolekce členů", "namedTupleMultipleInheritance": "Vícenásobná dědičnost s NamedTuple se nepodporuje", + "namedTupleNameKeyword": "Názvy polí nemůžou být klíčové slovo.", "namedTupleNameType": "Očekávala se řazená kolekce členů se dvěma položkami určující název a typ položky", "namedTupleNameUnique": "Názvy v pojmenované řazené kolekci členů musí být jedinečné", "namedTupleNoTypes": "namedtuple neposkytuje žádné typy pro položky řazené kolekce členů; místo toho použijte NamedTuple", diff --git a/packages/pyright-internal/src/localization/package.nls.de.json b/packages/pyright-internal/src/localization/package.nls.de.json index ef002ad7e..606b8e43c 100644 --- a/packages/pyright-internal/src/localization/package.nls.de.json +++ b/packages/pyright-internal/src/localization/package.nls.de.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "Namen innerhalb eines benannten Tupels dürfen nicht leer sein.", "namedTupleFirstArg": "Es wird ein benannter Tupelklassenname als erstes Argument erwartet.", "namedTupleMultipleInheritance": "Mehrfachvererbung mit NamedTuple wird nicht unterstützt.", + "namedTupleNameKeyword": "Feldnamen dürfen kein Schlüsselwort sein.", "namedTupleNameType": "Es wurde ein Tupel mit zwei Einträgen unter Angabe von Eintragsname und -typ erwartet.", "namedTupleNameUnique": "Namen innerhalb eines benannten Tupels müssen eindeutig sein.", "namedTupleNoTypes": "\"namedtuple\" stellt keine Typen für Tupeleinträge bereit; verwenden Sie stattdessen \"NamedTuple\".", diff --git a/packages/pyright-internal/src/localization/package.nls.es.json b/packages/pyright-internal/src/localization/package.nls.es.json index c536ab464..93d3257ce 100644 --- a/packages/pyright-internal/src/localization/package.nls.es.json +++ b/packages/pyright-internal/src/localization/package.nls.es.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "Los nombres de una tupla con nombre no pueden estar vacíos", "namedTupleFirstArg": "Nombre de clase de tupla como primer argumento", "namedTupleMultipleInheritance": "No se admite la herencia múltiple con NamedTuple", + "namedTupleNameKeyword": "Los nombres de campo no pueden ser una palabra clave", "namedTupleNameType": "Tupla de dos entradas esperada que especifica el nombre y el tipo de entrada", "namedTupleNameUnique": "Los nombres dentro de una tupla con nombre deben ser únicos", "namedTupleNoTypes": "\"namedtuple\" no proporciona tipos para las entradas de tupla; utilice en su lugar \"NamedTuple\".", diff --git a/packages/pyright-internal/src/localization/package.nls.fr.json b/packages/pyright-internal/src/localization/package.nls.fr.json index 178c6d9f3..361e5f737 100644 --- a/packages/pyright-internal/src/localization/package.nls.fr.json +++ b/packages/pyright-internal/src/localization/package.nls.fr.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "Les noms dans un tuple nommé ne peuvent pas être vides", "namedTupleFirstArg": "Nom de classe de tuple nommé attendu en tant que premier argument", "namedTupleMultipleInheritance": "L’héritage multiple avec NamedTuple n’est pas pris en charge", + "namedTupleNameKeyword": "Les noms de champs ne peuvent pas être un mot-clé", "namedTupleNameType": "Tuple à deux entrées attendu spécifiant le nom et le type de l’entrée", "namedTupleNameUnique": "Les noms dans un tuple nommé doivent être uniques", "namedTupleNoTypes": "« namedtuple » ne fournit aucun type pour les entrées de tuple ; utilisez « NamedTuple » à la place", diff --git a/packages/pyright-internal/src/localization/package.nls.it.json b/packages/pyright-internal/src/localization/package.nls.it.json index a8c1e0fe8..4144609e2 100644 --- a/packages/pyright-internal/src/localization/package.nls.it.json +++ b/packages/pyright-internal/src/localization/package.nls.it.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "I nomi all'interno di una tupla denominata non possono essere vuoti", "namedTupleFirstArg": "Previsto nome della classe di tupla denominata come primo argomento", "namedTupleMultipleInheritance": "L'ereditarietà multipla con NamedTuple non è supportata", + "namedTupleNameKeyword": "I nomi dei campi non possono essere una parola chiave", "namedTupleNameType": "Prevista tupla a due voci che specifica il nome e il tipo della voce", "namedTupleNameUnique": "I nomi all'interno di una tupla denominata devono essere univoci", "namedTupleNoTypes": "\"namedtuple\" non fornisce tipi per le voci di tupla; usare invece \"NamedTuple\"", diff --git a/packages/pyright-internal/src/localization/package.nls.ja.json b/packages/pyright-internal/src/localization/package.nls.ja.json index e09d59a36..48b06f79f 100644 --- a/packages/pyright-internal/src/localization/package.nls.ja.json +++ b/packages/pyright-internal/src/localization/package.nls.ja.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "名前付きタプル内の名前を空にすることはできません", "namedTupleFirstArg": "最初の引数として名前付きタプル クラス名が必要です", "namedTupleMultipleInheritance": "NamedTuple による複数の継承はサポートされていません", + "namedTupleNameKeyword": "フィールド名をキーワードにすることはできません", "namedTupleNameType": "エントリ名と型を指定する 2 エントリタプルが必要です", "namedTupleNameUnique": "名前付きタプル内の名前は一意である必要があります", "namedTupleNoTypes": "\"namedtuple\" はタプル エントリに型を提供しません。代わりに \"NamedTuple\" を使用してください", diff --git a/packages/pyright-internal/src/localization/package.nls.ko.json b/packages/pyright-internal/src/localization/package.nls.ko.json index c1ad4d6b1..4d640cc0d 100644 --- a/packages/pyright-internal/src/localization/package.nls.ko.json +++ b/packages/pyright-internal/src/localization/package.nls.ko.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "명명된 튜플 내의 이름은 비워 둘 수 없습니다.", "namedTupleFirstArg": "명명된 튜플 클래스 이름이 첫 번째 인수로 필요합니다.", "namedTupleMultipleInheritance": "NamedTuple을 사용한 여러 상속은 지원되지 않습니다.", + "namedTupleNameKeyword": "필드 이름은 키워드일 수 없습니다.", "namedTupleNameType": "항목 이름 및 형식을 지정하는 2개 항목 튜플이 필요합니다.", "namedTupleNameUnique": "명명된 튜플 내의 이름은 고유해야 합니다.", "namedTupleNoTypes": "\"namedtuple\"은 튜플 항목에 대한 형식을 제공하지 않습니다. 대신 \"NamedTuple\" 사용", diff --git a/packages/pyright-internal/src/localization/package.nls.pl.json b/packages/pyright-internal/src/localization/package.nls.pl.json index 34bc5f259..03bf1c9d0 100644 --- a/packages/pyright-internal/src/localization/package.nls.pl.json +++ b/packages/pyright-internal/src/localization/package.nls.pl.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "Nazwy w nazwanej krotce nie mogą być puste", "namedTupleFirstArg": "Oczekiwano nazwanej nazwy klasy krotki jako pierwszego argumentu", "namedTupleMultipleInheritance": "Wielokrotne dziedziczenie z kotki NamedTuple nie jest obsługiwane", + "namedTupleNameKeyword": "Nazwy pól nie mogą być słowem kluczowym", "namedTupleNameType": "Oczekiwano krotki z dwoma wpisami określającej nazwę i typ wpisu", "namedTupleNameUnique": "Nazwy w nazwanej krotce muszą być unikatowe", "namedTupleNoTypes": "Krotka „namedtuple” nie zapewnia typów wpisów krotki; zamiast tego użyj „NamedTuple”.", 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 18b277f69..6330f1836 100644 --- a/packages/pyright-internal/src/localization/package.nls.pt-br.json +++ b/packages/pyright-internal/src/localization/package.nls.pt-br.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "Nomes dentro de uma tupla nomeada não podem ficar vazios", "namedTupleFirstArg": "Nome de classe de tupla nomeado esperado como primeiro argumento", "namedTupleMultipleInheritance": "Não há suporte para herança múltipla com NamedTuple", + "namedTupleNameKeyword": "Os nomes dos campos não podem ser uma palavra-chave", "namedTupleNameType": "Tupla de duas entradas esperada especificando o nome e o tipo de entrada", "namedTupleNameUnique": "Os nomes dentro de uma tupla nomeada devem ser exclusivos", "namedTupleNoTypes": "\"namedtuple\" não fornece tipos para entradas de tupla. Em vez disso, use \"NamedTuple\"", 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 94e2825fa..5ed233b3d 100644 --- a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json +++ b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "[vnXqF][นั้Ñæmës wïthïñ æ ñæmëð tµplë çæññøt þë ëmptÿẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", "namedTupleFirstArg": "[L5ZXq][นั้Ëxpëçtëð ñæmëð tµplë çlæss ñæmë æs fïrst ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", "namedTupleMultipleInheritance": "[KYJOA][นั้Mµltïplë ïñhërïtæñçë wïth ÑæmëðTµplë ïs ñøt sµppørtëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "namedTupleNameKeyword": "[g6NTa][นั้Fïëlð ñæmës çæññøt þë æ këÿwørðẤğ倪İЂҰक्र्तिृนั้ढूँ]", "namedTupleNameType": "[AxfdS][นั้Ëxpëçtëð twø-ëñtrÿ tµplë spëçïfÿïñg ëñtrÿ ñæmë æñð tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "namedTupleNameUnique": "[TQaej][นั้Ñæmës wïthïñ æ ñæmëð tµplë mµst þë µñïqµëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", "namedTupleNoTypes": "[Fn6FF][นั้\"ñæmëðtµplë\" prøvïðës ñø tÿpës før tµplë ëñtrïës; µsë \"ÑæmëðTµplë\" ïñstëæðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index f6c376b4f..d1f02d1a6 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "Имена в именованном кортеже не могут быть пустыми", "namedTupleFirstArg": "В качестве первого аргумента ожидалось имя именованного класса кортежа", "namedTupleMultipleInheritance": "Множественное наследование для NamedTuple не поддерживается", + "namedTupleNameKeyword": "Имена полей не могут быть ключевыми словами", "namedTupleNameType": "Ожидается двухфакторный кортеж с указанием имени и типа записи", "namedTupleNameUnique": "Имена внутри именованного кортежа должны быть уникальными", "namedTupleNoTypes": "\"namedtuple\" не предоставляет типов для записей кортежа; используйте вместо него \"NamedTuple\"", diff --git a/packages/pyright-internal/src/localization/package.nls.tr.json b/packages/pyright-internal/src/localization/package.nls.tr.json index 7dd2203e9..e031f888a 100644 --- a/packages/pyright-internal/src/localization/package.nls.tr.json +++ b/packages/pyright-internal/src/localization/package.nls.tr.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "Adlandırılmış demet içindeki adlar boş olamaz", "namedTupleFirstArg": "İlk bağımsız değişken olarak adlandırılmış demet sınıf adı bekleniyordu", "namedTupleMultipleInheritance": "NamedTuple bulunan birden çok devralma desteklenmiyor", + "namedTupleNameKeyword": "Alan adları anahtar sözcük olamaz", "namedTupleNameType": "Girdi adını ve türünü belirten iki girdili demet bekleniyordu", "namedTupleNameUnique": "Adlandırılmış demet içindeki adlar benzersiz olmalıdır", "namedTupleNoTypes": "\"namedtuple\" demet girdileri için tür sağlamaz; bunun yerine \"NamedTuple\" kullanın", 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 b8d9889c6..d24b70b7a 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-cn.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-cn.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "命名元组中的名称不能为空", "namedTupleFirstArg": "应将命名元组类名称作为第一个参数", "namedTupleMultipleInheritance": "不支持使用 NamedTuple 进行多个继承", + "namedTupleNameKeyword": "字段名称不能是关键字", "namedTupleNameType": "应为指定条目名称和类型的双条目元组", "namedTupleNameUnique": "命名元组中的名称必须唯一", "namedTupleNoTypes": "“namedtuple”不提供元组条目的类型;请改用“NamedTuple”", 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 fb350cdca..78d15a3e9 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-tw.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-tw.json @@ -279,6 +279,7 @@ "namedTupleEmptyName": "具名元組內的名稱不可為空白", "namedTupleFirstArg": "預期為具名 Tuple 類別名稱作為第一個引數", "namedTupleMultipleInheritance": "不支援使用 NamedTuple 的多重繼承", + "namedTupleNameKeyword": "欄位名稱不能是關鍵字", "namedTupleNameType": "指定項目名稱和類型預期有兩個項目 Tuple", "namedTupleNameUnique": "具名 Tuple 內的名稱必須是唯一的", "namedTupleNoTypes": "\"namedtuple\" 未提供 Tuple 項目的類型; 請改為使用 \"NamedTuple\"", diff --git a/packages/pyright-internal/src/tests/completions.test.ts b/packages/pyright-internal/src/tests/completions.test.ts index 5f787d8cf..6ab37534f 100644 --- a/packages/pyright-internal/src/tests/completions.test.ts +++ b/packages/pyright-internal/src/tests/completions.test.ts @@ -1126,3 +1126,49 @@ test('Complex type arguments', async () => { }, }); }); + +test('Enum member', async () => { + const code = ` +// @filename: test.py +//// from enum import Enum +//// +//// class MyEnum(Enum): +//// this = 1 +//// that = 2 +//// +//// print(MyEnum.[|/*marker*/|]) + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', 'markdown', { + ['marker']: { + completions: [ + { + label: 'this', + kind: CompletionItemKind.EnumMember, + documentation: '```python\nthis: Literal[MyEnum.this]\n```', + }, + ], + }, + }); +}); + +test('no member of Enum member', async () => { + const code = ` +// @filename: test.py +//// from enum import Enum +//// +//// class MyEnum(Enum): +//// this = 1 +//// that = 2 +//// +//// print(MyEnum.this.[|/*marker*/|]) + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('exact', 'markdown', { + ['marker']: { completions: [] }, + }); +}); diff --git a/packages/pyright-internal/src/tests/config.test.ts b/packages/pyright-internal/src/tests/config.test.ts index e668519af..f829e096a 100644 --- a/packages/pyright-internal/src/tests/config.test.ts +++ b/packages/pyright-internal/src/tests/config.test.ts @@ -18,6 +18,8 @@ import { combinePaths, getBaseFileName, normalizePath, normalizeSlashes } from ' import { PythonVersion } from '../common/pythonVersion'; import { createFromRealFileSystem } from '../common/realFileSystem'; import { TestFileSystem } from './harness/vfs/filesystem'; +import { createConfigOptionsFrom } from '../backgroundThreadBase'; +import { TestAccessHost } from './harness/testAccessHost'; const options = { console: new NullConsole() }; @@ -305,3 +307,16 @@ test('FindFilesInMemoryOnly', () => { const fileList = service.test_getFileNamesFromFileSpecs(); assert(fileList.filter((f) => f === untitled)); }); + +test('verify config fileSpecs after cloning', () => { + const fs = new TestFileSystem(/* ignoreCase */ true); + const configFile = { + ignore: ['**/node_modules/**'], + }; + + const config = new ConfigOptions(process.cwd()); + config.initializeFromJson(configFile, undefined, new NullConsole(), fs, new TestAccessHost()); + const cloned = createConfigOptionsFrom(config); + + assert.deepEqual(config.ignore, cloned.ignore); +}); diff --git a/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.ts new file mode 100644 index 000000000..ddaa50e32 --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/showcallhierarchy.incomingCalls.overriddenFunction.fourslash.ts @@ -0,0 +1,41 @@ +/// + +// @filename: callHierarchy.py +//// import abc +//// +//// class Base(abc.ABC): +//// @abc.abstractmethod +//// def method(self): +//// pass +//// +//// class Derived(Base): +//// def method(self): +//// pass +//// +//// class BaseConsumer: +//// def [|consumer_base|](self, base: Base): +//// base./*marker1*/method() +//// +//// class DerivedConsumer: +//// def [|consumer_derived|](self, derived: Derived): +//// derived./*marker2*/method() + +{ + const ranges = helper.getRanges(); + const references = ranges.map((range) => { + return { path: range.fileName, range: helper.convertPositionRange(range) }; + }); + const itemList = [ + { filePath: references[0].path, range: references[0].range, name: 'consumer_base' }, + { filePath: references[1].path, range: references[1].range, name: 'consumer_derived' }, + ]; + + helper.verifyShowCallHierarchyGetIncomingCalls({ + marker1: { + items: itemList, + }, + marker2: { + items: itemList, + }, + }); +} From 98fcba13dd0dda843f7c9b35d353947a503fe4e4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 19 Jul 2023 20:28:55 -0700 Subject: [PATCH 420/525] Added support for the `X is C` and `X is not C` type guard pattern (where `C` is a class). This addresses #5490. (#5544) Co-authored-by: Eric Traut --- docs/type-concepts-advanced.md | 1 + .../src/analyzer/typeGuards.ts | 62 ++++++++++++++++++- .../tests/samples/typeNarrowingIsClass1.py | 58 +++++++++++++++++ .../src/tests/typeEvaluator1.test.ts | 6 ++ 4 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/typeNarrowingIsClass1.py diff --git a/docs/type-concepts-advanced.md b/docs/type-concepts-advanced.md index 0c7b2a7ac..19c3097aa 100644 --- a/docs/type-concepts-advanced.md +++ b/docs/type-concepts-advanced.md @@ -62,6 +62,7 @@ In addition to assignment-based type narrowing, Pyright supports the following t * `type(x) is T` and `type(x) is not T` * `type(x) == T` and `type(x) != T` * `x is E` and `x is not E` (where E is a literal enum or bool) +* `x is C` and `x is not C` (where C is a class) * `x == L` and `x != L` (where L is an expression that evaluates to a literal type) * `x.y is None` and `x.y is not None` (where x is a type that is distinguished by a field with a None) * `x.y is E` and `x.y is not E` (where E is a literal enum or bool and x is a type that is distinguished by a field with a literal type) diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 3ab508cfb..6919fe08d 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -222,12 +222,12 @@ export function getTypeNarrowingCallback( } } - // Look for "X is Y" or "X is not Y" where Y is a an enum or bool literal. if (isOrIsNotOperator) { if (ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression)) { const rightTypeResult = evaluator.getTypeOfExpression(testExpression.rightExpression); const rightType = rightTypeResult.type; + // Look for "X is Y" or "X is not Y" where Y is a an enum or bool literal. if ( isClassInstance(rightType) && (ClassType.isEnumClass(rightType) || ClassType.isBuiltIn(rightType, 'bool')) && @@ -246,9 +246,19 @@ export function getTypeNarrowingCallback( }; }; } + + // Look for X is or X is not . + if (isInstantiableClass(rightType)) { + return (type: Type) => { + return { + type: narrowTypeForClassComparison(evaluator, type, rightType, adjIsPositiveTest), + isIncomplete: !!rightTypeResult.isIncomplete, + }; + }; + } } - // Look for X[] is or X[] is not + // Look for X[] is or X[] is not . if ( testExpression.leftExpression.nodeType === ParseNodeType.Index && testExpression.leftExpression.items.length === 1 && @@ -2078,6 +2088,54 @@ function narrowTypeForTypeIs(evaluator: TypeEvaluator, type: Type, classType: Cl ); } +// Attempts to narrow a type based on a comparison with a class using "is" or +// "is not". This pattern is sometimes used for sentinels. +function narrowTypeForClassComparison( + evaluator: TypeEvaluator, + referenceType: Type, + classType: ClassType, + isPositiveTest: boolean +): Type { + return mapSubtypes(referenceType, (subtype) => { + const concreteSubtype = evaluator.makeTopLevelTypeVarsConcrete(subtype); + + if (isPositiveTest) { + if (isNoneInstance(concreteSubtype)) { + return undefined; + } + + if (isClassInstance(concreteSubtype) && TypeBase.isInstance(subtype)) { + return undefined; + } + + if (isInstantiableClass(concreteSubtype) && ClassType.isFinal(concreteSubtype)) { + if ( + !ClassType.isSameGenericClass(concreteSubtype, classType) && + !isIsinstanceFilterSuperclass( + evaluator, + concreteSubtype, + classType, + classType, + /* isInstanceCheck */ false + ) + ) { + return undefined; + } + } + } else { + if ( + isInstantiableClass(concreteSubtype) && + ClassType.isSameGenericClass(classType, concreteSubtype) && + ClassType.isFinal(classType) + ) { + return undefined; + } + } + + return subtype; + }); +} + // Attempts to narrow a type (make it more constrained) based on a comparison // (equal or not equal) to a literal value. It also handles "is" or "is not" // operators if isIsOperator is true. diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsClass1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsClass1.py new file mode 100644 index 000000000..22c299f09 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsClass1.py @@ -0,0 +1,58 @@ +# This sample tests type narrowing for conditional +# statements of the form X is or X is not . + +from typing import Any, TypeVar, final + + +@final +class A: + ... + + +@final +class B: + ... + + +class C: + ... + + +def func1(x: type[A] | type[B] | None | int): + if x is A: + reveal_type(x, expected_text="type[A]") + else: + reveal_type(x, expected_text="type[B] | int | None") + + +def func2(x: type[A] | type[B] | None | int, y: type[A]): + if x is not y: + reveal_type(x, expected_text="type[B] | int | None") + else: + reveal_type(x, expected_text="type[A]") + + +def func3(x: type[A] | type[B] | Any): + if x is A: + reveal_type(x, expected_text="type[A] | Any") + else: + reveal_type(x, expected_text="type[B] | Any") + + +def func4(x: type[A] | type[B] | type[C]): + if x is C: + reveal_type(x, expected_text="type[C]") + else: + reveal_type(x, expected_text="type[A] | type[B] | type[C]") + + +T = TypeVar("T") + + +def func5(x: type[A] | type[B] | type[T]) -> type[A] | type[B] | type[T]: + if x is A: + reveal_type(x, expected_text="type[A] | type[T@func5]") + else: + reveal_type(x, expected_text="type[B] | type[T@func5]") + + return x diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index ce80b4731..6e02bf4cc 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -315,6 +315,12 @@ test('TypeNarrowingIsNone2', () => { TestUtils.validateResults(analysisResults, 0); }); +test('TypeNarrowingIsClass1', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsClass1.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('TypeNarrowingIsNoneTuple1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeNarrowingIsNoneTuple1.py']); From 9aa29e4e3051f706ce62547d8e897f36d7683865 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 20 Jul 2023 09:54:08 -0700 Subject: [PATCH 421/525] Fixed an issue in type evaluation of call expressions where the callable subexpression evaluates to a union, and the callable subtypes have different signatures. Pyright was previously caching the types from the first subtype, so it didn't re-evaluate using the second subtype (which may require bidirectional type inference). This addresses #5428. (#5547) Co-authored-by: Eric Traut --- .../src/analyzer/typeCacheUtils.ts | 30 +++++-- .../src/analyzer/typeEvaluator.ts | 90 +++++++++++-------- .../src/tests/samples/call11.py | 44 +++++++++ .../src/tests/typeEvaluator1.test.ts | 6 ++ 4 files changed, 127 insertions(+), 43 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/call11.py diff --git a/packages/pyright-internal/src/analyzer/typeCacheUtils.ts b/packages/pyright-internal/src/analyzer/typeCacheUtils.ts index 208207dc4..e6b26a0c1 100644 --- a/packages/pyright-internal/src/analyzer/typeCacheUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeCacheUtils.ts @@ -23,6 +23,7 @@ interface SpeculativeContext { speculativeRootNode: ParseNode; entriesToUndo: SpeculativeEntry[]; dependentType: Type | undefined; + allowDiagnostics?: boolean; } interface DependentType { @@ -42,6 +43,17 @@ export interface SpeculativeTypeEntry { dependentTypes?: DependentType[]; } +export interface SpeculativeModeOptions { + // If specified, the type cached speculative result depends on + // this dependent type. + dependentType?: Type; + + // Normally, diagnostics are suppressed for nodes under + // a speculative root, but this can be overridden by specifying + // this option. + allowDiagnostics?: boolean; +} + // This class maintains a stack of "speculative type contexts". When // a context is popped off the stack, all of the speculative type cache // entries that were created within that context are removed from the @@ -58,20 +70,21 @@ export class SpeculativeTypeTracker { private _speculativeTypeCache = new Map(); private _activeDependentTypes: DependentType[] = []; - enterSpeculativeContext(speculativeRootNode: ParseNode, dependentType: Type | undefined) { + enterSpeculativeContext(speculativeRootNode: ParseNode, options?: SpeculativeModeOptions) { this._speculativeContextStack.push({ speculativeRootNode, entriesToUndo: [], - dependentType, + dependentType: options?.dependentType, + allowDiagnostics: options?.allowDiagnostics, }); // Retain a list of active dependent types. This information is already // contained within the speculative context stack, but we retain a copy // in this alternate form for performance reasons. - if (dependentType) { + if (options?.dependentType) { this._activeDependentTypes.push({ speculativeRootNode, - dependentType, + dependentType: options.dependentType, }); } } @@ -92,7 +105,7 @@ export class SpeculativeTypeTracker { }); } - isSpeculative(node: ParseNode | undefined) { + isSpeculative(node: ParseNode | undefined, ignoreIfDiagnosticsAllowed = false) { if (this._speculativeContextStack.length === 0) { return false; } @@ -102,8 +115,11 @@ export class SpeculativeTypeTracker { } for (let i = this._speculativeContextStack.length - 1; i >= 0; i--) { - if (ParseTreeUtils.isNodeContainedWithin(node, this._speculativeContextStack[i].speculativeRootNode)) { - return true; + const stackEntry = this._speculativeContextStack[i]; + if (ParseTreeUtils.isNodeContainedWithin(node, stackEntry.speculativeRootNode)) { + if (!ignoreIfDiagnosticsAllowed || !stackEntry.allowDiagnostics) { + return true; + } } } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index c081f30d3..680e2a4e5 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -147,7 +147,7 @@ import { evaluateStaticBoolExpression } from './staticExpressions'; import { Symbol, SymbolFlags, indeterminateSymbolId } from './symbol'; import { isConstantName, isPrivateName, isPrivateOrProtectedName } from './symbolNameUtils'; import { getLastTypedDeclaredForSymbol } from './symbolUtils'; -import { SpeculativeTypeTracker } from './typeCacheUtils'; +import { SpeculativeModeOptions, SpeculativeTypeTracker } from './typeCacheUtils'; import { AbstractMethod, AnnotationTypeOptions, @@ -2877,7 +2877,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function isDiagnosticSuppressedForNode(node: ParseNode) { return ( suppressedNodeStack.some((suppressedNode) => ParseTreeUtils.isNodeContainedWithin(node, suppressedNode)) || - isSpeculativeModeInUse(node) + speculativeTypeTracker.isSpeculative(node, /* ignoreIfDiagnosticsAllowed */ true) ); } @@ -3607,24 +3607,28 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function mapSubtypesExpandTypeVars( type: Type, conditionFilter: TypeCondition[] | undefined, - callback: (expandedSubtype: Type, unexpandedSubtype: Type) => Type | undefined + callback: (expandedSubtype: Type, unexpandedSubtype: Type, isLastIteration: boolean) => Type | undefined ): Type { const newSubtypes: Type[] = []; let typeChanged = false; - const expandSubtype = (unexpandedType: Type) => { + function expandSubtype(unexpandedType: Type, isLastSubtype: boolean) { let expandedType = isUnion(unexpandedType) ? unexpandedType : makeTopLevelTypeVarsConcrete(unexpandedType); expandedType = transformPossibleRecursiveTypeAlias(expandedType); - doForEachSubtype(expandedType, (subtype) => { + doForEachSubtype(expandedType, (subtype, index, allSubtypes) => { if (conditionFilter) { if (!TypeCondition.isCompatible(getTypeCondition(subtype), conditionFilter)) { return undefined; } } - let transformedType = callback(subtype, unexpandedType); + let transformedType = callback( + subtype, + unexpandedType, + isLastSubtype && index === allSubtypes.length - 1 + ); if (transformedType !== unexpandedType) { typeChanged = true; } @@ -3633,6 +3637,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const typeCondition = getTypeCondition(subtype)?.filter( (condition) => condition.isConstrainedTypeVar ); + if (typeCondition && typeCondition.length > 0) { transformedType = addConditionToType(transformedType, typeCondition); } @@ -3641,14 +3646,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } return undefined; }); - }; + } if (isUnion(type)) { - type.subtypes.forEach((subtype) => { - expandSubtype(subtype); + type.subtypes.forEach((subtype, index) => { + expandSubtype(subtype, index === type.subtypes.length - 1); }); } else { - expandSubtype(type); + expandSubtype(type, /* isLastSubtype */ true); } if (!typeChanged) { @@ -7594,6 +7599,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ): TypeResult { let baseTypeResult: TypeResult | undefined; + // Check for the use of `type(x)` within a type annotation. This isn't + // allowed, and it's a common mistake, so we want to emit a diagnostic + // that guides the user to the right solution. if ( (flags & EvaluatorFlags.ExpectingTypeAnnotation) !== 0 && node.leftExpression.nodeType === ParseNodeType.Name && @@ -8735,34 +8743,42 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let returnType = mapSubtypesExpandTypeVars( callTypeResult.type, /* conditionFilter */ undefined, - (expandedSubtype, unexpandedSubtype) => { - const callResult = validateCallArgumentsForSubtype( - errorNode, - argList, - expandedSubtype, - unexpandedSubtype, - !!callTypeResult.isIncomplete, - typeVarContext, - skipUnknownArgCheck, - inferenceContext, - recursionCount - ); + (expandedSubtype, unexpandedSubtype, isLastIteration) => { + return useSpeculativeMode( + isLastIteration ? undefined : errorNode, + () => { + const callResult = validateCallArgumentsForSubtype( + errorNode, + argList, + expandedSubtype, + unexpandedSubtype, + !!callTypeResult.isIncomplete, + typeVarContext, + skipUnknownArgCheck, + inferenceContext, + recursionCount + ); - if (callResult.argumentErrors) { - argumentErrors = true; - } + if (callResult.argumentErrors) { + argumentErrors = true; + } - if (callResult.isTypeIncomplete) { - isTypeIncomplete = true; - } + if (callResult.isTypeIncomplete) { + isTypeIncomplete = true; + } - if (callResult.overloadsUsedForCall) { - appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); - } + if (callResult.overloadsUsedForCall) { + appendArray(overloadsUsedForCall, callResult.overloadsUsedForCall); + } - specializedInitSelfType = callResult.specializedInitSelfType; + specializedInitSelfType = callResult.specializedInitSelfType; - return callResult.returnType; + return callResult.returnType; + }, + { + allowDiagnostics: true, + } + ); } ); @@ -13478,7 +13494,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isIncomplete = true; } }, - inferenceContext?.expectedType + { + dependentType: inferenceContext?.expectedType, + } ); // Mark the function type as no longer being evaluated. @@ -19157,13 +19175,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function useSpeculativeMode( speculativeNode: ParseNode | undefined, callback: () => T, - dependentType?: Type | undefined + options?: SpeculativeModeOptions ) { if (!speculativeNode) { return callback(); } - speculativeTypeTracker.enterSpeculativeContext(speculativeNode, dependentType); + speculativeTypeTracker.enterSpeculativeContext(speculativeNode, options); try { const result = callback(); diff --git a/packages/pyright-internal/src/tests/samples/call11.py b/packages/pyright-internal/src/tests/samples/call11.py new file mode 100644 index 000000000..c1af3c803 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/call11.py @@ -0,0 +1,44 @@ +# This sample tests the case where a call expression involves a union +# on the LHS where the subtypes of the union have different signatures. + +# pyright: strict + +from __future__ import annotations +from typing import Any, Callable, Generic, Self, TypeAlias, TypeVar + +T = TypeVar("T") +E = TypeVar("E") +U = TypeVar("U") +F = TypeVar("F") + +Either: TypeAlias = "Left[T]" | "Right[E]" + + +class Left(Generic[T]): + def __init__(self, value: T) -> None: + self.value = value + + def map_left(self, fn: Callable[[T], U]) -> Left[U]: + return Left(fn(self.value)) + + def map_right(self, fn: Callable[[Any], Any]) -> Self: + return self + + +class Right(Generic[E]): + def __init__(self, value: E) -> None: + self.value = value + + def map_left(self, fn: Callable[[Any], Any]) -> Self: + return self + + def map_right(self, fn: Callable[[E], F]) -> Right[F]: + return Right(fn(self.value)) + + +def func() -> Either[int, str]: + raise NotImplementedError + + +result = func().map_left(lambda lv: lv + 1).map_right(lambda rv: rv + "a") +reveal_type(result, expected_text="Left[int] | Right[str]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 6e02bf4cc..4e9675062 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -797,6 +797,12 @@ test('Call10', () => { TestUtils.validateResults(analysisResults, 3); }); +test('Call11', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['call11.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('Function1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function1.py']); From 97160a03505be061e75818ec10e044b850fd8b1e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 20 Jul 2023 10:30:17 -0700 Subject: [PATCH 422/525] Fixed bug in hover text where it was not producing the correct text output for an instantiable callable. --- .../src/languageService/tooltipUtils.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/languageService/tooltipUtils.ts b/packages/pyright-internal/src/languageService/tooltipUtils.ts index 4d45bac90..cd2ffc4ad 100644 --- a/packages/pyright-internal/src/languageService/tooltipUtils.ts +++ b/packages/pyright-internal/src/languageService/tooltipUtils.ts @@ -28,6 +28,7 @@ import { FunctionType, OverloadedFunctionType, Type, + TypeBase, TypeCategory, UnknownType, combineTypes, @@ -115,10 +116,15 @@ export function getFunctionTooltip( const indentStr = functionSignatureDisplay === SignatureDisplayType.formatted ? '\n' + ' '.repeat(functionParamIndentOffset) : ''; const funcParts = evaluator.printFunctionParts(type); - const paramSignature = formatSignature(funcParts, indentStr, functionSignatureDisplay); + const paramSignature = `${formatSignature(funcParts, indentStr, functionSignatureDisplay)} -> ${funcParts[1]}`; + + if (TypeBase.isInstantiable(type)) { + return `${labelFormatted}${functionName}: type[${paramSignature}]`; + } + const sep = isProperty ? ': ' : ''; const defKeyword = isProperty ? '' : 'def '; - return `${labelFormatted}${defKeyword}${functionName}${sep}${paramSignature} -> ${funcParts[1]}`; + return `${labelFormatted}${defKeyword}${functionName}${sep}${paramSignature}`; } export function getConstructorTooltip( From c6e0f563f278c0500e15c5b336aa464006d77aaa Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 20 Jul 2023 12:00:10 -0700 Subject: [PATCH 423/525] Added detection and reporting of illegal use of `type[Callable]` within a type annotation. This addresses https://github.com/microsoft/pyright/issues/5546. (#5549) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 22 +++++++++++--- .../src/localization/localize.ts | 1 + .../src/localization/package.nls.en-us.json | 1 + .../src/tests/samples/annotations1.py | 30 +++++++++++++------ .../src/tests/samples/solverHigherOrder5.py | 4 +-- .../src/tests/typeEvaluator1.test.ts | 2 +- 6 files changed, 44 insertions(+), 16 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 680e2a4e5..c03808073 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -18626,10 +18626,24 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Handle "type" specially, since it needs to act like "Type" // in Python 3.9 and newer. if (ClassType.isBuiltIn(classType, 'type') && typeArgs) { - // PEP 484 says that type[Any] should be considered - // equivalent to type. - if (typeArgs.length === 1 && isAnyOrUnknown(typeArgs[0].type)) { - return { type: classType }; + if (typeArgs.length >= 1) { + // PEP 484 says that type[Any] should be considered + // equivalent to type. + if (isAnyOrUnknown(typeArgs[0].type)) { + return { type: classType }; + } + + // Treat type[function] as illegal. + if (isFunction(typeArgs[0].type) || isOverloadedFunction(typeArgs[0].type)) { + addDiagnostic( + fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typeAnnotationWithCallable(), + typeArgs[0].node + ); + + return { type: UnknownType.create() }; + } } const typeClass = getTypingType(errorNode, 'Type'); diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 17aa08ca7..9fbf5d8c7 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -869,6 +869,7 @@ export namespace Localizer { export const typeAliasTypeParamInvalid = () => getRawString('Diagnostic.typeAliasTypeParamInvalid'); export const typeAnnotationCall = () => getRawString('Diagnostic.typeAnnotationCall'); export const typeAnnotationVariable = () => getRawString('Diagnostic.typeAnnotationVariable'); + export const typeAnnotationWithCallable = () => getRawString('Diagnostic.typeAnnotationWithCallable'); export const typeArgListExpected = () => getRawString('Diagnostic.typeArgListExpected'); export const typeArgListNotAllowed = () => getRawString('Diagnostic.typeArgListNotAllowed'); export const typeArgsExpectingNone = () => diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 388899dfc..1bf9e9312 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -429,6 +429,7 @@ "typeArgListExpected": "Expected ParamSpec, ellipsis, or list of types", "typeAnnotationCall": "Call expression not allowed in type expression", "typeAnnotationVariable": "Variable not allowed in type expression", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListNotAllowed": "List expression not allowed for this type argument", "typeArgsExpectingNone": "Expected no type arguments for class \"{name}\"", "typeArgsMismatchOne": "Expected one type argument but received {received}", diff --git a/packages/pyright-internal/src/tests/samples/annotations1.py b/packages/pyright-internal/src/tests/samples/annotations1.py index c85277563..5e0920bdd 100644 --- a/packages/pyright-internal/src/tests/samples/annotations1.py +++ b/packages/pyright-internal/src/tests/samples/annotations1.py @@ -1,7 +1,7 @@ # This sample tests the handling of type annotations within a # python source file (as opposed to a stub file). -from typing import TypeVar, Union +from typing import Any, Callable, TypeVar, Union import uuid from datetime import datetime @@ -43,9 +43,9 @@ def func10(): # This should generate an error because function calls # are not allowed within a type annotation. -x: func10() +x1: func10() -y: """ +x2: """ Union[ int, str @@ -76,7 +76,7 @@ def int(self): # This should generate an error because modules are not allowed in # type annotations. -z: typing +x3: typing class ClassG: @@ -106,8 +106,8 @@ def func12(x: type[int]): print(x | None) -# This should generate an error because foo isn't defined. -foo: int = foo +# This should generate an error because x4 isn't defined. +x4: int = x4 class ClassJ: @@ -121,12 +121,24 @@ def func13(x: type[T]) -> type[T]: return x -v1 = func13(int) +x5 = func13(int) # This should generate an error because variables are not allowed # in a type annotation. -v2: v1 = 1 +x6: x5 = 1 # This should generate an error because variables are not allowed # in a type annotation. -v3: list[v1] = [1] +x7: list[x5] = [1] + +# This should generate an error because a Callable isn't allowed +# in a "type". +x8: type[Callable] + +# This should generate an error because a Callable isn't allowed +# in a "type". +x9: type[func11] + +# This should generate an error because a Callable isn't allowed +# in a "type". +x10: type[Callable[..., Any]] diff --git a/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py index b39f6a041..9c3996d78 100644 --- a/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py +++ b/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py @@ -117,7 +117,7 @@ def test_4(pair: Pair[Pair[Pair[A, B], C], D]) -> Pair[Pair[Pair[A, B], C], D]: @overload def test_5( - a: type[Callable[P, type[T]]], *, b: Literal[False, None] = ... + a: Callable[P, type[T]], *, b: Literal[False, None] = ... ) -> type[list[type[T]]]: ... @@ -145,5 +145,5 @@ def test_5(a: Any, *args: int, b: Any = ...) -> Any: val4 = test_5(test_5, b=True) reveal_type( val4, - expected_text="type[list[Overload[(a: type[(**P(1)@test_5) -> type[T(1)@test_5]], *, b: Literal[False] | None = ...) -> type[list[type[T(1)@test_5]]], (a: T(1)@test_5, *args: int, b: Literal[False] | None = ...) -> type[list[T(1)@test_5]], (a: T(1)@test_5, *args: int, b: Literal[True] = ...) -> type[list[T(1)@test_5]], (a: Any, *args: int, b: Any = ...) -> Any]]]", + expected_text="type[list[Overload[(a: (**P(1)@test_5) -> type[T(1)@test_5], *, b: Literal[False] | None = ...) -> type[list[type[T(1)@test_5]]], (a: T(1)@test_5, *args: int, b: Literal[False] | None = ...) -> type[list[T(1)@test_5]], (a: T(1)@test_5, *args: int, b: Literal[True] = ...) -> type[list[T(1)@test_5]], (a: Any, *args: int, b: Any = ...) -> Any]]]", ) diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 4e9675062..977dba700 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -890,7 +890,7 @@ test('FunctionMember2', () => { test('Annotations1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['annotations1.py']); - TestUtils.validateResults(analysisResults, 13); + TestUtils.validateResults(analysisResults, 16); }); test('Annotations2', () => { From a65b45ed45d2fc6d5bb52c44586eb88ec78e9c09 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 20 Jul 2023 15:25:05 -0700 Subject: [PATCH 424/525] Fixed a bug that resulted in a false positive error when bidirectional type inference was used with a class that defines a `__new__` method within a generic class that returns an instance of the class whose type arguments do not match the type parameters. This addresses https://github.com/microsoft/pyright/issues/5404. --- .../src/analyzer/typeEvaluator.ts | 4 +- .../src/analyzer/typeUtils.ts | 13 +++++++ .../src/tests/samples/constructor27.py | 39 +++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/constructor27.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index c03808073..33bb231c5 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10635,7 +10635,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions /* isTypeArgumentExplicit */ false ); - effectiveExpectedType = applySolvedTypeVars(genericReturnType, tempTypeVarContext); + effectiveExpectedType = applySolvedTypeVars(genericReturnType, tempTypeVarContext, { + unknownIfNotFound: true, + }); } } else if (isFunction(effectiveReturnType)) { // If the return type is a callable and the expected type is a union that diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index c6ede59a6..fddff0ebd 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3667,6 +3667,19 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { if (typeVar.scopeId && this._typeVarContext.hasSolveForScope(typeVar.scopeId)) { let replacement = signatureContext.getTypeVarType(typeVar, !!this._options.useNarrowBoundOnly); + // If the type is unknown, see if there's a known wide bound that we can use. + if ( + replacement && + isUnknown(replacement) && + !this._options.useNarrowBoundOnly && + this._options.unknownIfNotFound + ) { + const entry = signatureContext.getTypeVar(typeVar); + if (entry?.wideBound) { + replacement = entry?.wideBound; + } + } + // If there was no narrow bound but there is a wide bound that // contains literals or a TypeVar, we'll use the wide bound even if // "useNarrowBoundOnly" is specified. diff --git a/packages/pyright-internal/src/tests/samples/constructor27.py b/packages/pyright-internal/src/tests/samples/constructor27.py new file mode 100644 index 000000000..31552441d --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/constructor27.py @@ -0,0 +1,39 @@ +# This sample tests a case where a __new__ method in a generic class +# returns an instance of the class but with different type arguments +# than expected. This is arguably an error case, but pyright needs +# to handle it gracefully. + +from __future__ import annotations +from typing import Generic, TypeVar + + +T = TypeVar("T", contravariant=True) +S = TypeVar("S", contravariant=True) + + +class ClassA(Generic[T]): + ... + + +class ClassB(Generic[S, T], ClassA[T]): + ... + + +class ClassC(ClassB[S, T]): + def __new__(cls, subcon: ClassA[S]) -> ClassC[S, list[S]]: + ... + + +class ClassD(ClassB[S, T]): + def __new__(cls, subcon: ClassA[S]) -> ClassD[S, list[S]]: + ... + + +c = ClassA[int]() + +intermediate = ClassC(c) +v1 = ClassD(intermediate) +reveal_type(v1, expected_text="ClassD[list[int], list[list[int]]]") + +v2 = ClassD(ClassC(c)) +reveal_type(v2, expected_text="ClassD[list[int], list[list[int]]]") From 19194dd089f5bb3d1d3fd748887e3d4cc7880560 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 20 Jul 2023 21:08:53 -0700 Subject: [PATCH 425/525] Fixed an inconsistency in reporting of unbound variables when the variable is captured by an inner scope. The new behavior correctly identifies unbound (or potentially unbound) variables in cases where the captured variable is narrowed. This happens when there are no assignments to the variable after it is captured. This addresses #5548. (#5551) Fixed a bug in type narrowing for captured variables. Captured variables that are modified in other scopes using a `nonlocal` or `global` binding should be ineligible for type narrowing. Co-authored-by: Eric Traut --- docs/type-concepts-advanced.md | 19 ++++++++++ .../src/analyzer/typeEvaluator.ts | 35 ++++++++++++++----- .../src/tests/samples/capturedVariable1.py | 15 ++++++++ .../src/tests/samples/unbound5.py | 31 ++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++ 5 files changed, 97 insertions(+), 9 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/unbound5.py diff --git a/docs/type-concepts-advanced.md b/docs/type-concepts-advanced.md index 19c3097aa..ba7bd8963 100644 --- a/docs/type-concepts-advanced.md +++ b/docs/type-concepts-advanced.md @@ -155,6 +155,7 @@ def func4(x: str | None): ``` ### Narrowing for Implied Else + When an “if” or “elif” clause is used without a corresponding “else”, Pyright will generally assume that the code can “fall through” without executing the “if” or “elif” block. However, there are cases where the analyzer can determine that a fall-through is not possible because the “if” or “elif” is guaranteed to be executed based on type analysis. ```python @@ -222,6 +223,24 @@ b = c reveal_type(b) # list[Any] ``` +### Narrowing for Captured Variables + +If a variable’s type is narrowed in an outer scope and the variable is subsequently captured by an inner-scoped function or lambda, Pyright retains the narrowed type if it can determine that the value of the captured variable is not modified on any code path after the inner-scope function or lambda is defined and is not modified in another scope via a `nonlocal` or `global` binding. + +```python +def func(val: int | None): + if val is not None: + + def inner_1() -> None: + reveal_type(val) # int + print(val + 1) + + inner_2 = lambda: reveal_type(val) + 1 # int + + inner_1() + inner_2() +``` + ### Constrained Type Variables When a TypeVar is defined, it can be constrained to two or more types. diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 33bb231c5..3a3b701b3 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -4329,15 +4329,27 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ): FlowNodeTypeResult | undefined { // This function applies only to variables, parameters, and imports, not to other // types of symbols. + const decls = symbolWithScope.symbol.getDeclarations(); if ( - !symbolWithScope.symbol - .getDeclarations() - .every( - (decl) => - decl.type === DeclarationType.Variable || - decl.type === DeclarationType.Parameter || - decl.type === DeclarationType.Alias - ) + !decls.every( + (decl) => + decl.type === DeclarationType.Variable || + decl.type === DeclarationType.Parameter || + decl.type === DeclarationType.Alias + ) + ) { + return undefined; + } + + // If the symbol is modified in scopes other than the one in which it is + // declared (e.g. through a nonlocal or global binding), it is not eligible + // for code flow analysis. + if ( + !decls.every( + (decl) => + decl.type === DeclarationType.Parameter || + ScopeUtils.getScopeForNode(decl.node) === symbolWithScope.scope + ) ) { return undefined; } @@ -4390,7 +4402,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); }) ) { - return getFlowTypeOfReference(node, symbolWithScope.symbol.id, effectiveType, innerScopeNode); + let typeAtStart = effectiveType; + if (symbolWithScope.symbol.isInitiallyUnbound()) { + typeAtStart = UnboundType.create(); + } + + return getFlowTypeOfReference(node, symbolWithScope.symbol.id, typeAtStart, innerScopeNode); } } } diff --git a/packages/pyright-internal/src/tests/samples/capturedVariable1.py b/packages/pyright-internal/src/tests/samples/capturedVariable1.py index 1f025f3a5..768a31c45 100644 --- a/packages/pyright-internal/src/tests/samples/capturedVariable1.py +++ b/packages/pyright-internal/src/tests/samples/capturedVariable1.py @@ -104,3 +104,18 @@ def foo() -> str: return x.upper() return x.upper() + + +def func10(cond: bool, val: str): + x: str | None = val if cond else None + y: str | None = val if cond else None + + def inner1(): + nonlocal x + x = None + + if x is not None and y is not None: + + def inner2(): + reveal_type(x, expected_text="str | None") + reveal_type(y, expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/unbound5.py b/packages/pyright-internal/src/tests/samples/unbound5.py new file mode 100644 index 000000000..0a9c245a5 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/unbound5.py @@ -0,0 +1,31 @@ +# This sample tests the interplay between unbound symbol detection and +# the code that handles conditional narrowing of captured variables. + +from random import random + + +if random() > 0.5: + from datetime import datetime + from math import cos + +# The following should generate an error because datetime +# is "narrowed" across execution scopes. +test0 = lambda: datetime + + +def test1(): + # The following should generate an error because datetime + # is "narrowed" across execution scopes. + return datetime + + +test2 = lambda: cos + + +def test2(): + return cos + + +# This modification means that cos will not be narrowed +# across execution scopes. +cos = None diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 7aebf6319..4f74c992f 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -322,6 +322,12 @@ test('Unbound4', () => { TestUtils.validateResults(analysisResults, 2); }); +test('Unbound5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['unbound5.py']); + + TestUtils.validateResults(analysisResults, 2); +}); + test('Assert1', () => { const configOptions = new ConfigOptions('.'); From 39e355df2440b0397746346b9fac2a67968bdced Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Jul 2023 09:57:31 -0700 Subject: [PATCH 426/525] Fixed a bug that led to a false positive when a constrained type variable was used as a type argument in an annotation for an argument passed to a method that's bound to the same type variable. This addresses #5556. (#5557) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 62 ++++++++++++++++++- .../src/tests/samples/constrainedTypeVar15.py | 6 +- 2 files changed, 65 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 3a3b701b3..187c74c64 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -3607,7 +3607,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function mapSubtypesExpandTypeVars( type: Type, conditionFilter: TypeCondition[] | undefined, - callback: (expandedSubtype: Type, unexpandedSubtype: Type, isLastIteration: boolean) => Type | undefined + callback: (expandedSubtype: Type, unexpandedSubtype: Type, isLastIteration: boolean) => Type | undefined, + recursionCount = 0 ): Type { const newSubtypes: Type[] = []; let typeChanged = false; @@ -3619,9 +3620,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions doForEachSubtype(expandedType, (subtype, index, allSubtypes) => { if (conditionFilter) { - if (!TypeCondition.isCompatible(getTypeCondition(subtype), conditionFilter)) { + const filteredType = applyConditionFilterToType(subtype, conditionFilter, recursionCount); + if (!filteredType) { return undefined; } + + subtype = filteredType; } let transformedType = callback( @@ -3669,6 +3673,60 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return newType; } + function applyConditionFilterToType( + type: Type, + conditionFilter: TypeCondition[], + recursionCount: number + ): Type | undefined { + if (recursionCount > maxTypeRecursionCount) { + return type; + } + recursionCount++; + + // If the type has a condition associated with it, make sure it's compatible. + if (!TypeCondition.isCompatible(getTypeCondition(type), conditionFilter)) { + return undefined; + } + + // If the type is generic, see if any of its type arguments should be filtered. + // This is possible only in cases where the type parameter is covariant. + + // TODO - handle functions and tuples + if (isClass(type) && type.typeArguments && !type.tupleTypeArguments) { + inferTypeParameterVarianceForClass(type); + + let typeWasTransformed = false; + + const filteredTypeArgs = type.typeArguments.map((typeArg, index) => { + const variance = TypeVarType.getVariance(type.details.typeParameters[index]); + if (variance !== Variance.Covariant) { + return typeArg; + } + + const filteredTypeArg = mapSubtypesExpandTypeVars( + typeArg, + conditionFilter, + (expandedSubtype) => { + return expandedSubtype; + }, + recursionCount + ); + + if (filteredTypeArg !== typeArg) { + typeWasTransformed = true; + } + + return filteredTypeArg; + }); + + if (typeWasTransformed) { + return ClassType.cloneForSpecialization(type, filteredTypeArgs, /* isTypeArgumentExplicit */ true); + } + } + + return type; + } + function markNamesAccessed(node: ParseNode, names: string[]) { const fileInfo = AnalyzerNodeInfo.getFileInfo(node); const scope = ScopeUtils.getScopeForNode(node); diff --git a/packages/pyright-internal/src/tests/samples/constrainedTypeVar15.py b/packages/pyright-internal/src/tests/samples/constrainedTypeVar15.py index 1a64682df..f47ea2283 100644 --- a/packages/pyright-internal/src/tests/samples/constrainedTypeVar15.py +++ b/packages/pyright-internal/src/tests/samples/constrainedTypeVar15.py @@ -1,7 +1,7 @@ # This sample tests the case where a constrained TypeVar is used # as an argument for a constructor or function call. -from typing import TypeVar, Generic +from typing import AnyStr, Iterable, TypeVar, Generic from dataclasses import dataclass @@ -26,3 +26,7 @@ def func1(a: Data[_T]) -> _T: reveal_type(value, expected_text="ClassA*") return value + + +def func2(val: AnyStr, objs: Iterable[AnyStr]) -> AnyStr: + return val.join(objs) From bf1ebd679400d457342634a29be3e49f3602a245 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Jul 2023 10:53:52 -0700 Subject: [PATCH 427/525] Improved robustness of handling of circular dependencies for class evaluations. This addresses #5554. (#5558) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 73 +++++++++++++------ 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 187c74c64..ccc3b37d5 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -518,13 +518,13 @@ export interface EvaluatorOptions { verifyTypeCacheEvaluatorFlags: boolean; } -// Describes a "callback hook" that is called when a class type is +// Describes a "deferred class completion" that is run when a class type is // fully created and the "PartiallyEvaluated" flag has just been cleared. // This allows us to properly compute information like the MRO which // depends on a full understanding of base classes. -interface ClassTypeHook { - dependency: ClassType; - callback: () => void; +interface DeferredClassCompletion { + dependsUpon: ClassType; + classesToComplete: ClassNode[]; } interface TypeCacheEntry { @@ -544,7 +544,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let typeCache = new Map(); let effectiveTypeCache = new Map>(); let expectedTypeCache = new Map(); - let classTypeHooks: ClassTypeHook[] = []; + let deferredClassCompletions: DeferredClassCompletion[] = []; let cancellationToken: CancellationToken | undefined; let isBasicTypesInitialized = false; let noneType: Type | undefined; @@ -15492,10 +15492,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If the base class is partially evaluated, install a callback // so we can fix up this class (e.g. compute the MRO) when the // dependent class is completed. - classTypeHooks.push({ - dependency: argType, - callback: () => completeClassTypeDeferred(classType, node, node.name), - }); + registerDeferredClassCompletion(node, argType); } if (ClassType.isBuiltIn(argType, 'Protocol')) { @@ -15942,8 +15939,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } - // Run any class hooks that depend on this class. - runClassTypeHooks(classType); + // Run any deferred class completions that depend on this class. + runDeferredClassCompletions(classType); + + // If there are any outstanding deferred class completions registered that + // were not removed by the call to runDeferredClassCompletions, assume that + // the current class may depend on them and register for deferred completion. + registerDeferredClassCompletion(node, /* dependsUpon */ undefined); // Synthesize TypedDict methods. if (ClassType.isTypedDictClass(classType)) { @@ -16268,23 +16270,52 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - // Runs any registered "callback hooks" that depend on the specified class type. - // This allows us to complete any work that requires dependent classes to be - // completed. - function runClassTypeHooks(type: ClassType) { - classTypeHooks.forEach((hook) => { - if (ClassType.isSameGenericClass(hook.dependency, type)) { - hook.callback(); + // Records the fact that the specified class requires "deferred completion" because + // one of its base classes has not yet been fully evaluated. If the caller passes + // undefined for "dependsUpon", then the class is added to all outstanding deferred + // completions. + function registerDeferredClassCompletion(classToComplete: ClassNode, dependsUpon: ClassType | undefined) { + if (dependsUpon) { + // See if there is an existing entry for this dependency. + const entry = deferredClassCompletions.find((e) => + ClassType.isSameGenericClass(e.dependsUpon, dependsUpon) + ); + if (entry) { + entry.classesToComplete.push(classToComplete); + } else { + deferredClassCompletions.push({ dependsUpon, classesToComplete: [classToComplete] }); + } + } else { + deferredClassCompletions.forEach((e) => { + e.classesToComplete.push(classToComplete); + }); + } + } + + // Runs any registered "deferred class completions" that depend on the specified + // class type. This allows us to complete any work that requires dependent classes + // to be completed. + function runDeferredClassCompletions(type: ClassType) { + deferredClassCompletions.forEach((e) => { + if (ClassType.isSameGenericClass(e.dependsUpon, type)) { + e.classesToComplete.forEach((classNode) => { + const classType = readTypeCache(classNode.name, EvaluatorFlags.None); + if (classType) { + completeClassTypeDeferred(classType as ClassType, classNode.name); + } + }); } }); - // Remove any hooks that depend on this type. - classTypeHooks = classTypeHooks.filter((hook) => !ClassType.isSameGenericClass(hook.dependency, type)); + // Remove any completions that depend on this type. + deferredClassCompletions = deferredClassCompletions.filter( + (e) => !ClassType.isSameGenericClass(e.dependsUpon, type) + ); } // Recomputes the MRO and effective metaclass for the class after dependent // classes have been fully constructed. - function completeClassTypeDeferred(type: ClassType, node: ClassNode, errorNode: ParseNode) { + function completeClassTypeDeferred(type: ClassType, errorNode: ParseNode) { // Recompute the MRO linearization. if (!computeMroLinearization(type)) { addError(Localizer.Diagnostic.methodOrdering(), errorNode); From 5162e0fbd65b974e94fe947a7bb3c05f43f637cf Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Jul 2023 12:52:23 -0700 Subject: [PATCH 428/525] Enhanced support for `functools.partial` so it supports classes (constructors) when passed as the first argument. This addresses #5559. --- .../src/analyzer/constructorTransform.ts | 16 ++++++++- .../src/tests/samples/partial5.py | 34 +++++++++++++++++++ .../src/tests/typeEvaluator1.test.ts | 6 ++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 packages/pyright-internal/src/tests/samples/partial5.py diff --git a/packages/pyright-internal/src/analyzer/constructorTransform.ts b/packages/pyright-internal/src/analyzer/constructorTransform.ts index bf78f0afa..fe7988f2d 100644 --- a/packages/pyright-internal/src/analyzer/constructorTransform.ts +++ b/packages/pyright-internal/src/analyzer/constructorTransform.ts @@ -16,6 +16,7 @@ import { DiagnosticRule } from '../common/diagnosticRules'; import { Localizer } from '../localization/localize'; import { ArgumentCategory, ExpressionNode, ParameterCategory } from '../parser/parseNodes'; import { getFileInfo } from './analyzerNodeInfo'; +import { createFunctionFromConstructor } from './constructors'; import { getParameterListDetails, ParameterSource } from './parameterUtils'; import { Symbol, SymbolFlags } from './symbol'; import { FunctionArgument, FunctionResult, TypeEvaluator } from './typeEvaluatorTypes'; @@ -26,8 +27,10 @@ import { FunctionTypeFlags, isClassInstance, isFunction, + isInstantiableClass, isOverloadedFunction, isTypeSame, + isTypeVar, OverloadedFunctionType, Type, } from './types'; @@ -90,7 +93,18 @@ function applyPartialTransform( } const origFunctionTypeResult = evaluator.getTypeOfArgument(argList[0]); - const origFunctionType = origFunctionTypeResult.type; + let origFunctionType = origFunctionTypeResult.type; + + if (isTypeVar(origFunctionType)) { + origFunctionType = evaluator.makeTopLevelTypeVarsConcrete(origFunctionType); + } + + if (isInstantiableClass(origFunctionType)) { + const constructor = createFunctionFromConstructor(evaluator, origFunctionType); + if (constructor) { + origFunctionType = constructor; + } + } // Evaluate the inferred return type if necessary. evaluator.inferReturnTypeIfNecessary(origFunctionType); diff --git a/packages/pyright-internal/src/tests/samples/partial5.py b/packages/pyright-internal/src/tests/samples/partial5.py new file mode 100644 index 000000000..56dee9012 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/partial5.py @@ -0,0 +1,34 @@ +# This sample tests the case where a class is passed as the first argument +# to functools.partial. + +from functools import partial +from typing import TypeVar + + +class A: + def __init__(self, x: int, y: int) -> None: + ... + + +# This should generate an error because "y" has the wrong type. +v1 = partial(A, x=1, y="a") + +v2 = partial(A, x=1, y=2) +reveal_type(v2, expected_text="partial[A]") +v2() +v2(x=2) + + +T = TypeVar("T", bound=A) + + +def func1(x: type[T]): + # This should generate an error because "z" is not a valid parameter. + v1 = partial(x, x=1, z="a") + + v2 = partial(x, y=1) + + # This should generate an error because it's missing "x". + v2() + + v2(x=1) diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 977dba700..13c5562d5 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -1524,6 +1524,12 @@ test('Partial4', () => { TestUtils.validateResults(analysisResults, 3); }); +test('Partial5', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['partial5.py']); + + TestUtils.validateResults(analysisResults, 3); +}); + test('TotalOrdering1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['totalOrdering1.py']); From 6e3404a1cea7c28e360a0c5b1910514945b6ed16 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Jul 2023 13:35:27 -0700 Subject: [PATCH 429/525] Improved comment for createCallableType. No functional change. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index ccc3b37d5..8170aaf4b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -13881,13 +13881,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } - // Converts the type parameters for a Callable type. It should - // have zero to two parameters. The first parameter, if present, should be - // either an ellipsis or a list of parameter types. The second parameter, if - // present, should specify the return type. + // Evaluates the type arguments for a Callable type. It should have zero + // to two arguments.The first argument, if present, should be an ellipsis, + // a ParamSpec, a Concatenate, or a list of positional parameter types. + // The second argument, if present, should specify the return type. function createCallableType(typeArgs: TypeResultWithNode[] | undefined, errorNode: ParseNode): FunctionType { - // Create a new function that is marked as "static" so there is later - // no attempt to bind it as though it's an instance or class method. const functionType = FunctionType.createInstantiable(FunctionTypeFlags.None); TypeBase.setSpecialForm(functionType); functionType.details.declaredReturnType = UnknownType.create(); From 37f814940760ef597b62c564b0a84199a0ca11d0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Jul 2023 14:06:03 -0700 Subject: [PATCH 430/525] Fixed formatting of test case. No functional change. --- .../src/tests/samples/typeVar12.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/tests/samples/typeVar12.py b/packages/pyright-internal/src/tests/samples/typeVar12.py index 69699fe2f..f4fb6d9ad 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar12.py +++ b/packages/pyright-internal/src/tests/samples/typeVar12.py @@ -5,38 +5,46 @@ from typing import Callable, Generic, Optional, ParamSpec, TypeVar -S = TypeVar('S') -T = TypeVar('T') -P = ParamSpec('P') +S = TypeVar("S") +T = TypeVar("T") +P = ParamSpec("P") CallableAlias1 = Callable[[T], T] CallableAlias2 = Callable[[T], T] | T + def func1() -> Callable[[T], T] | None: # This should generate an error. x: Optional[T] = None + def func2() -> Callable[[T], T] | list[T] | None: x: Optional[T] = None + def func3() -> CallableAlias1[T] | None: # This should generate an error. x: Optional[T] = None + def func4() -> CallableAlias2[T] | None: x: Optional[T] = None + def func5() -> Callable[[list[T]], set[T]] | None: # This should generate an error. x: Optional[T] = None + def func6() -> Callable[[list[T]], set[T]] | Callable[[set[T]], set[T]] | None: x: Optional[T] = None + def func7() -> Callable[P, None] | None: # This should generate two errors, once for each P reference. def inner(*args: P.args, **kwargs: P.kwargs) -> None: pass + return @@ -44,8 +52,8 @@ class A(Generic[T]): def method1(self) -> Callable[[T], T] | None: x: Optional[T] = None + class B(Generic[S]): def method1(self) -> Callable[[T], T] | None: # This should generate an error. x: Optional[T] = None - From 2b420cf3a64444c130fe0c87729099121dfbf564 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Jul 2023 14:32:18 -0700 Subject: [PATCH 431/525] Removed fragile hack that was previously added to handle type var scoping for the synthesized constructor in a named tuple. (#5560) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/namedTuples.ts | 1 + packages/pyright-internal/src/analyzer/typeEvaluator.ts | 8 -------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/namedTuples.ts b/packages/pyright-internal/src/analyzer/namedTuples.ts index cbf4ac97e..f237e953e 100644 --- a/packages/pyright-internal/src/analyzer/namedTuples.ts +++ b/packages/pyright-internal/src/analyzer/namedTuples.ts @@ -136,6 +136,7 @@ export function createNamedTupleType( if (ParseTreeUtils.isAssignmentToDefaultsFollowingNamedTuple(errorNode)) { constructorType.details.flags |= FunctionTypeFlags.DisableDefaultChecks; } + constructorType.details.typeVarScopeId = classType.details.typeVarScopeId; FunctionType.addParameter(constructorType, { category: ParameterCategory.Simple, name: 'cls', diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 8170aaf4b..5f448c66f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9074,14 +9074,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (!effectiveTypeVarContext) { // If a typeVarContext wasn't provided by the caller, allocate one here. effectiveTypeVarContext = new TypeVarContext(getTypeVarScopeIds(expandedCallType)); - - // There are certain cases, such as with super().__new__(cls) calls where - // the call is a constructor but the proper TypeVar scope has been lost. - // We'll add a wildcard TypeVar scope here. This is a bit of a hack and - // we may need to revisit this in the future. - if (FunctionType.isConstructorMethod(expandedCallType)) { - effectiveTypeVarContext.addSolveForScope(WildcardTypeVarScopeId); - } } const functionResult = validateFunctionArguments( From b11e16cb3e05857062e2452d215acf2ce9fdb378 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 21 Jul 2023 21:39:02 -0700 Subject: [PATCH 432/525] Fixed a bug that led to a false positive error when using bidirectional type inference for a dictionary expression when the expected type is a protocol. This addresses #5552. (#5562) Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 32 +++++++++++++++++-- .../src/analyzer/typeEvaluator.ts | 13 +++++--- .../src/tests/samples/protocol44.py | 25 +++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++ 4 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/protocol44.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 15434d6c0..e545f6626 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -939,7 +939,7 @@ export function populateTypeVarContextBasedOnExpectedType( typeVar.details.isSynthesized = true; typeVar.details.synthesizedIndex = index; typeVar.details.isExemptFromBoundCheck = true; - return typeVar; + return TypeVarType.cloneAsInScopePlaceholder(typeVar); }); const specializedType = ClassType.cloneForSpecialization(type, typeArgs, /* isTypeArgumentExplicit */ true); @@ -957,7 +957,31 @@ export function populateTypeVarContextBasedOnExpectedType( let isResultValid = true; synthExpectedTypeArgs.forEach((typeVar, index) => { - const synthTypeVar = syntheticTypeVarContext.getPrimarySignature().getTypeVarType(typeVar); + let synthTypeVar = syntheticTypeVarContext.getPrimarySignature().getTypeVarType(typeVar); + const otherSubtypes: Type[] = []; + + // If the resulting type is a union, try to find a matching type var and move + // the remaining subtypes to the "otherSubtypes" array. + if (synthTypeVar && isUnion(synthTypeVar)) { + let foundSynthTypeVar: TypeVarType | undefined; + + synthTypeVar.subtypes.forEach((subtype) => { + if ( + isTypeVar(subtype) && + subtype.details.isSynthesized && + subtype.details.synthesizedIndex !== undefined && + !foundSynthTypeVar + ) { + foundSynthTypeVar = subtype; + } else { + otherSubtypes.push(subtype); + } + }); + + if (foundSynthTypeVar) { + synthTypeVar = foundSynthTypeVar; + } + } // Is this one of the synthesized type vars we allocated above? If so, // the type arg that corresponds to this type var maps back to the target type. @@ -972,6 +996,10 @@ export function populateTypeVarContextBasedOnExpectedType( if (index < expectedTypeArgs.length) { let typeArgValue: Type | undefined = transformPossibleRecursiveTypeAlias(expectedTypeArgs[index]); + if (otherSubtypes.length > 0) { + typeArgValue = combineTypes([typeArgValue, ...otherSubtypes]); + } + if (liveTypeVarScopes) { typeArgValue = transformExpectedType(typeArgValue, liveTypeVarScopes, usageOffset); } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 5f448c66f..af5cdc1e5 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -12682,10 +12682,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Dict and MutableMapping types have invariant value types, so they // cannot be narrowed further. Other super-types like Mapping, Collection, // and Iterable use covariant value types, so they can be narrowed. - const isValueTypeInvariant = - isClassInstance(inferenceContext.expectedType) && - (ClassType.isBuiltIn(inferenceContext.expectedType, 'dict') || - ClassType.isBuiltIn(inferenceContext.expectedType, 'MutableMapping')); + let isValueTypeInvariant = false; + if (isClassInstance(inferenceContext.expectedType)) { + if (inferenceContext.expectedType.details.typeParameters.length >= 2) { + const valueTypeParam = inferenceContext.expectedType.details.typeParameters[1]; + if (TypeVarType.getVariance(valueTypeParam) === Variance.Invariant) { + isValueTypeInvariant = true; + } + } + } // Infer the key and value types if possible. if ( diff --git a/packages/pyright-internal/src/tests/samples/protocol44.py b/packages/pyright-internal/src/tests/samples/protocol44.py new file mode 100644 index 000000000..5fae0c728 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/protocol44.py @@ -0,0 +1,25 @@ +# This sample tests the case where protocol matching requires that the type +# parameter for the concrete class map to a union of types in the protocol. + +from typing import Iterable, Protocol, TypeVar + +K = TypeVar("K") +V = TypeVar("V") + + +class SpecialDict(Protocol[K, V]): + def items(self) -> Iterable[tuple[K, V | int]]: + ... + + def __getitem__(self, __key: K) -> V | int: + ... + + def __setitem__(self, __key: K, __value: V | int) -> None: + ... + + +def func1(k: K, v: V) -> SpecialDict[K, V]: + x1: SpecialDict[K, V] = {k: v} + x2: SpecialDict[K, V] = {k: v, k: 1} + x3: SpecialDict[K, V] = {k: 0} + return {} diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 4f74c992f..3a04da720 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1287,6 +1287,12 @@ test('Protocol43', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Protocol44', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol44.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('TypedDict1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDict1.py']); From 99dfe982a10b572c9103da86c3ef6605265d11a9 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 22 Jul 2023 07:23:43 -0700 Subject: [PATCH 433/525] Added documentation about overloads and ParamSpec. --- docs/mypy-comparison.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/mypy-comparison.md b/docs/mypy-comparison.md index 8a5634201..600c6cd3e 100644 --- a/docs/mypy-comparison.md +++ b/docs/mypy-comparison.md @@ -372,6 +372,20 @@ reveal_type(v2) # mypy: T, pyright: str ``` +### Constraint Solver: Overloads and ParamSpec + +If a function accepts a `Callable` parameterized with a `ParamSpec`, pyright allows you to pass an overloaded function as an argument. The constraint solver solves the type variables for each overload signature independently and then “unions” the results. Mypy uses only the first overload in this case and ignores all subsequent overloads. + +```python +def wrap(func: Callable[P, T]) -> Callable[P, T]: + ... + +# 'max' is an overloaded built-in function +max2 = wrap(max) +reveal_type(max2) # Mypy includes only the first overload, pyright includes all +``` + + ### Constrained Type Variables When mypy analyzes a class or function that has in-scope constrained TypeVars, it analyzes the class or function multiple times, once for each constraint. This can produce multiple errors. From a40ed76fa79ad4ae3680d6d49fecbe162e901fbd Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 22 Jul 2023 07:40:18 -0700 Subject: [PATCH 434/525] Simplified the bug and feature request templates and fixed a few typos in them. --- .github/ISSUE_TEMPLATE/bug_report.md | 15 +++------------ .github/ISSUE_TEMPLATE/feature_request.md | 8 +++----- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 086e0d143..612921d41 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -12,16 +12,10 @@ Note: if you are reporting a wrong signature of a function or a class in the sta If you have a question about typing or a behavior that you’re seeing in Pyright (as opposed to a bug report or enhancement request), consider posting to the [Pyright discussion forum](https://github.com/microsoft/pyright/discussions). **Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior. - -**Expected behavior** -A clear and concise description of what you expected to happen. +A clear and concise description of the behavior you are seeing and the expected behavior along with steps to reproduce it. **Code or Screenshots** -If possible, provide a minimal, self-contained code sample (surrounded by triple back ticks) to demonstrate the issue. The code should define or imports all referenced symbols. +If possible, provide a minimal, self-contained code sample (surrounded by triple back ticks) to demonstrate the issue. The code should define or import all referenced symbols. ```python def foo(self) -> str: @@ -31,7 +25,4 @@ def foo(self) -> str: If your code relies on symbols that are imported from a third-party library, include the associated import statements and specify which versions of those libraries you have installed. **VS Code extension or command-line** -Are you running pyright as a VS Code extension, a language server in another editor, or the command-line tool? Which version? - -**Additional context** -Add any other context about the problem here. +Are you running pyright as a VS Code extension, a language server in another editor, integrated into Pylance, or the command-line tool? Which version? diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 34c06b0be..ace410343 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -7,13 +7,11 @@ assignees: '' --- -If you have a question about a behavior that you’re seeing in Pyright, consider posting to the [Pyright discussion forum](https://github.com/microsoft/pyright/discussions). +If you have a question about a behavior that you’re seeing in pyright, consider posting to the [Pyright discussion forum](https://github.com/microsoft/pyright/discussions). **Is your feature request related to a problem? Please describe.** A clear and concise description of the problem. -**Describe the solution you'd like** -A clear and concise description of what you want to happen. +**Describe the solution you’d like** +A clear and concise description of the solution you would like to see. -**Additional context** -Add any other context or screenshots about the feature request here. From a34eb58fc9fe71a6f4f367f82676b805f515f98a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 22 Jul 2023 08:25:37 -0700 Subject: [PATCH 435/525] Added section on plugins to the comparison with mypy. --- docs/mypy-comparison.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/mypy-comparison.md b/docs/mypy-comparison.md index 600c6cd3e..3c0d103c1 100644 --- a/docs/mypy-comparison.md +++ b/docs/mypy-comparison.md @@ -503,3 +503,9 @@ y: float x, y = (3, 4) ``` +### Plugins + +Mypy supports a plug-in mechanism, whereas pyright does not. Mypy plugins allow developers to extend mypy’s capabilities to accommodate libraries that rely on behaviors that cannot be described using the standard type checking mechanisms. + +Pyright maintainers have made the decision not to support plug-ins because of their many downsides: discoverability, maintainability, cost of development for the plug-in author, cost of maintenance for the plug-in object model and API, security, performance (especially latency — which is critical for language servers), and robustness. Instead, we have taken the approach of working with the typing community and library authors to extend the type system so it can accommodate more use cases. An example of this is [PEP 681](https://peps.python.org/pep-0681/), which introduced `dataclass_transform`. + From 914863edbac354671186c4db315573180636d59d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 22 Jul 2023 09:05:48 -0700 Subject: [PATCH 436/525] Updated typeshed stubs to the latest version. (#5563) Co-authored-by: Eric Traut --- .../src/tests/checker.test.ts | 2 +- .../src/tests/samples/paramSpec41.py | 1 + .../src/tests/samples/paramType1.py | 2 + .../src/tests/typeEvaluator4.test.ts | 2 +- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/abc.pyi | 2 +- .../typeshed-fallback/stdlib/argparse.pyi | 8 +- .../typeshed-fallback/stdlib/array.pyi | 5 + .../typeshed-fallback/stdlib/builtins.pyi | 12 +- .../typeshed-fallback/stdlib/ftplib.pyi | 2 +- .../typeshed-fallback/stdlib/http/client.pyi | 4 + .../typeshed-fallback/stdlib/pdb.pyi | 3 + .../typeshed-fallback/stdlib/tkinter/ttk.pyi | 106 +- .../typeshed-fallback/stdlib/traceback.pyi | 7 +- .../typeshed-fallback/stdlib/typing.pyi | 4 + .../stdlib/typing_extensions.pyi | 90 +- .../stdlib/unittest/mock.pyi | 6 +- .../stdlib/urllib/request.pyi | 8 +- .../stubs/DateTimeRange/METADATA.toml | 1 + .../stubs/Deprecated/METADATA.toml | 1 + .../stubs/ExifRead/METADATA.toml | 1 + .../stubs/Flask-Cors/METADATA.toml | 1 + .../stubs/Flask-Migrate/METADATA.toml | 1 + .../stubs/Markdown/METADATA.toml | 1 + .../stubs/Pillow/METADATA.toml | 1 + .../stubs/PyAutoGUI/METADATA.toml | 1 + .../stubs/PyMySQL/METADATA.toml | 1 + .../stubs/PyScreeze/METADATA.toml | 1 + .../stubs/PyYAML/METADATA.toml | 1 + .../stubs/Pygments/METADATA.toml | 1 + .../stubs/Send2Trash/METADATA.toml | 1 + .../stubs/aiofiles/METADATA.toml | 1 + .../stubs/aws-xray-sdk/METADATA.toml | 1 + .../stubs/babel/METADATA.toml | 1 + .../stubs/bleach/METADATA.toml | 1 + .../stubs/boltons/METADATA.toml | 1 + .../stubs/boto/METADATA.toml | 1 + .../stubs/cachetools/METADATA.toml | 1 + .../stubs/caldav/METADATA.toml | 3 +- .../stubs/caldav/caldav/davclient.pyi | 5 +- .../stubs/caldav/caldav/objects.pyi | 19 +- .../stubs/chevron/METADATA.toml | 1 + .../stubs/click-spinner/METADATA.toml | 1 + .../stubs/colorama/METADATA.toml | 1 + .../stubs/commonmark/METADATA.toml | 1 + .../stubs/console-menu/METADATA.toml | 1 + .../stubs/croniter/METADATA.toml | 1 + .../stubs/dateparser/METADATA.toml | 1 + .../stubs/decorator/METADATA.toml | 1 + .../stubs/dj-database-url/METADATA.toml | 1 + .../stubs/dockerfile-parse/METADATA.toml | 1 + .../stubs/editdistance/METADATA.toml | 1 + .../stubs/entrypoints/METADATA.toml | 1 + .../stubs/first/METADATA.toml | 1 + .../stubs/flake8-2020/METADATA.toml | 1 + .../stubs/flake8-bugbear/METADATA.toml | 1 + .../stubs/flake8-builtins/METADATA.toml | 1 + .../stubs/flake8-docstrings/METADATA.toml | 1 + .../stubs/flake8-plugin-utils/METADATA.toml | 1 + .../stubs/flake8-rst-docstrings/METADATA.toml | 1 + .../stubs/flake8-simplify/METADATA.toml | 1 + .../stubs/flake8-typing-imports/METADATA.toml | 1 + .../stubs/fpdf2/METADATA.toml | 1 + .../stubs/google-cloud-ndb/METADATA.toml | 1 + .../stubs/html5lib/METADATA.toml | 1 + .../stubs/httplib2/METADATA.toml | 1 + .../stubs/influxdb-client/METADATA.toml | 1 + .../stubs/invoke/METADATA.toml | 1 + .../stubs/jmespath/METADATA.toml | 1 + .../stubs/jsonschema/METADATA.toml | 1 + .../stubs/keyboard/METADATA.toml | 1 + .../stubs/ldap3/METADATA.toml | 1 + .../stubs/mock/METADATA.toml | 3 +- .../stubs/mock/mock/__init__.pyi | 21 + .../stubs/mock/mock/mock.pyi | 24 +- .../stubs/mypy-extensions/METADATA.toml | 1 + .../stubs/mysqlclient/METADATA.toml | 1 + .../stubs/netaddr/METADATA.toml | 1 + .../stubs/oauthlib/METADATA.toml | 1 + .../stubs/openpyxl/METADATA.toml | 1 + .../stubs/openpyxl/openpyxl/chart/_3d.pyi | 4 +- .../openpyxl/openpyxl/chart/area_chart.pyi | 3 +- .../stubs/openpyxl/openpyxl/chart/axis.pyi | 3 +- .../openpyxl/openpyxl/chart/bar_chart.pyi | 3 +- .../openpyxl/openpyxl/chart/bubble_chart.pyi | 3 +- .../openpyxl/openpyxl/chart/chartspace.pyi | 4 +- .../openpyxl/openpyxl/chart/data_source.pyi | 4 +- .../openpyxl/openpyxl/chart/error_bar.pyi | 4 +- .../stubs/openpyxl/openpyxl/chart/label.pyi | 4 +- .../stubs/openpyxl/openpyxl/chart/layout.pyi | 4 +- .../stubs/openpyxl/openpyxl/chart/legend.pyi | 4 +- .../openpyxl/openpyxl/chart/line_chart.pyi | 3 +- .../stubs/openpyxl/openpyxl/chart/marker.pyi | 4 +- .../stubs/openpyxl/openpyxl/chart/picture.pyi | 4 +- .../openpyxl/openpyxl/chart/pie_chart.pyi | 11 +- .../stubs/openpyxl/openpyxl/chart/pivot.pyi | 4 +- .../openpyxl/openpyxl/chart/plotarea.pyi | 4 +- .../openpyxl/openpyxl/chart/radar_chart.pyi | 3 +- .../openpyxl/openpyxl/chart/scatter_chart.pyi | 3 +- .../stubs/openpyxl/openpyxl/chart/series.pyi | 4 +- .../stubs/openpyxl/openpyxl/chart/shapes.pyi | 4 +- .../openpyxl/openpyxl/chart/surface_chart.pyi | 3 +- .../stubs/openpyxl/openpyxl/chart/title.pyi | 4 +- .../openpyxl/openpyxl/chart/trendline.pyi | 4 +- .../openpyxl/comments/shape_writer.pyi | 13 +- .../openpyxl/openpyxl/descriptors/nested.pyi | 16 +- .../openpyxl/descriptors/serialisable.pyi | 4 +- .../openpyxl/openpyxl/descriptors/slots.pyi | 2 +- .../openpyxl/openpyxl/drawing/colors.pyi | 4 +- .../stubs/openpyxl/openpyxl/drawing/fill.pyi | 4 +- .../stubs/openpyxl/openpyxl/drawing/line.pyi | 4 +- .../stubs/openpyxl/openpyxl/drawing/text.pyi | 4 +- .../stubs/openpyxl/openpyxl/pivot/cache.pyi | 4 +- .../stubs/openpyxl/openpyxl/styles/fonts.pyi | 3 +- .../openpyxl/openpyxl/worksheet/_writer.pyi | 17 +- .../stubs/openpyxl/openpyxl/xml/__init__.pyi | 8 +- .../openpyxl/xml/_functions_overloads.pyi | 117 + .../stubs/openpyxl/openpyxl/xml/functions.pyi | 26 +- .../stubs/opentracing/METADATA.toml | 1 + .../stubs/paramiko/METADATA.toml | 1 + .../stubs/parsimonious/METADATA.toml | 1 + .../stubs/passpy/METADATA.toml | 1 + .../stubs/peewee/METADATA.toml | 1 + .../stubs/pep8-naming/METADATA.toml | 1 + .../stubs/pika/METADATA.toml | 1 + .../stubs/playsound/METADATA.toml | 1 + .../stubs/pluggy/METADATA.toml | 2 + .../stubs/pluggy/pluggy/__init__.pyi | 5 + .../stubs/pluggy/pluggy/_hooks.pyi | 116 + .../stubs/pluggy/pluggy/_manager.pyi | 65 + .../stubs/pluggy/pluggy/_result.pyi | 19 + .../stubs/pluggy/pluggy/_tracing.pyi | 20 + .../stubs/polib/METADATA.toml | 1 + .../protobuf/internal/enum_type_wrapper.pyi | 5 +- .../stubs/psutil/METADATA.toml | 1 + .../stubs/psycopg2/METADATA.toml | 1 + .../stubs/pyOpenSSL/METADATA.toml | 1 + .../stubs/pyRFC3339/METADATA.toml | 1 + .../stubs/pyasn1/METADATA.toml | 1 + .../stubs/pycocotools/METADATA.toml | 1 + .../stubs/pyfarmhash/METADATA.toml | 1 + .../stubs/pyflakes/METADATA.toml | 1 + .../stubs/pyinstaller/METADATA.toml | 1 + .../stubs/pynput/METADATA.toml | 1 + .../stubs/pyserial/METADATA.toml | 1 + .../stubs/pysftp/METADATA.toml | 1 + .../stubs/pytest-lazy-fixture/METADATA.toml | 1 + .../stubs/python-crontab/METADATA.toml | 3 +- .../stubs/python-crontab/crontab.pyi | 48 +- .../stubs/python-datemath/METADATA.toml | 1 + .../stubs/python-dateutil/METADATA.toml | 1 + .../stubs/python-gflags/METADATA.toml | 1 + .../stubs/python-jose/METADATA.toml | 1 + .../stubs/python-slugify/METADATA.toml | 1 + .../stubs/python-xlib/METADATA.toml | 1 + .../stubs/pyvmomi/METADATA.toml | 1 + .../stubs/pywin32/METADATA.toml | 1 + .../stubs/qrcode/METADATA.toml | 5 + .../stubs/qrcode/qrcode/LUT.pyi | 3 + .../stubs/qrcode/qrcode/__init__.pyi | 10 + .../stubs/qrcode/qrcode/base.pyi | 25 + .../stubs/qrcode/qrcode/console_scripts.pyi | 12 + .../stubs/qrcode/qrcode/constants.pyi | 4 + .../stubs/qrcode/qrcode/exceptions.pyi | 1 + .../stubs/qrcode/qrcode/image/__init__.pyi | 0 .../stubs/qrcode/qrcode/image/base.pyi | 50 + .../stubs/qrcode/qrcode/image/pil.pyi | 11 + .../stubs/qrcode/qrcode/image/pure.pyi | 16 + .../stubs/qrcode/qrcode/image/styledpil.pyi | 22 + .../qrcode/qrcode/image/styles/__init__.pyi | 0 .../qrcode/qrcode/image/styles/colormasks.pyi | 65 + .../image/styles/moduledrawers/__init__.pyi | 8 + .../image/styles/moduledrawers/base.pyi | 12 + .../qrcode/image/styles/moduledrawers/pil.pyi | 69 + .../qrcode/image/styles/moduledrawers/svg.pyi | 59 + .../stubs/qrcode/qrcode/image/svg.pyi | 42 + .../stubs/qrcode/qrcode/main.pyi | 70 + .../stubs/qrcode/qrcode/release.pyi | 1 + .../stubs/qrcode/qrcode/util.pyi | 54 + .../stubs/redis/METADATA.toml | 1 + .../stubs/regex/METADATA.toml | 1 + .../stubs/requests/METADATA.toml | 1 + .../stubs/retry/METADATA.toml | 1 + .../stubs/s2clientprotocol/METADATA.toml | 2 + .../s2clientprotocol/build.pyi | 5 + .../s2clientprotocol/common_pb2.pyi | 199 ++ .../s2clientprotocol/data_pb2.pyi | 396 ++++ .../s2clientprotocol/debug_pb2.pyi | 448 ++++ .../s2clientprotocol/error_pb2.pyi | 455 ++++ .../s2clientprotocol/query_pb2.pyi | 199 ++ .../s2clientprotocol/raw_pb2.pyi | 662 ++++++ .../s2clientprotocol/sc2api_pb2.pyi | 2069 +++++++++++++++++ .../s2clientprotocol/score_pb2.pyi | 256 ++ .../s2clientprotocol/spatial_pb2.pyi | 436 ++++ .../s2clientprotocol/ui_pb2.pyi | 523 +++++ .../stubs/setuptools/METADATA.toml | 1 + .../stubs/simplejson/METADATA.toml | 1 + .../stubs/singledispatch/METADATA.toml | 1 + .../typeshed-fallback/stubs/six/METADATA.toml | 1 + .../stubs/slumber/METADATA.toml | 1 + .../stubs/stdlib-list/METADATA.toml | 1 + .../stubs/stripe/METADATA.toml | 1 + .../stubs/tabulate/METADATA.toml | 1 + .../stubs/toml/METADATA.toml | 1 + .../stubs/toposort/METADATA.toml | 1 + .../stubs/tqdm/METADATA.toml | 1 + .../stubs/translationstring/METADATA.toml | 1 + .../stubs/tree-sitter-languages/METADATA.toml | 3 +- .../stubs/tree-sitter/METADATA.toml | 1 + .../stubs/ttkthemes/METADATA.toml | 1 + .../stubs/tzlocal/METADATA.toml | 1 + .../stubs/ujson/METADATA.toml | 1 + .../stubs/urllib3/METADATA.toml | 1 + .../stubs/vobject/METADATA.toml | 1 + .../stubs/waitress/METADATA.toml | 1 + .../stubs/whatthepatch/METADATA.toml | 1 + .../stubs/xmltodict/METADATA.toml | 1 + .../stubs/zstd/METADATA.toml | 1 + .../stubs/zxcvbn/METADATA.toml | 1 + 219 files changed, 7094 insertions(+), 156 deletions(-) create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/_functions_overloads.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pluggy/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_hooks.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_manager.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_result.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_tracing.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/LUT.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/base.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/console_scripts.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/constants.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/exceptions.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/base.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/pil.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/pure.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styledpil.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/colormasks.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/base.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/pil.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/svg.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/svg.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/main.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/release.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/util.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/build.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/common_pb2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/data_pb2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/debug_pb2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/error_pb2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/query_pb2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/raw_pb2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/sc2api_pb2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/score_pb2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/spatial_pb2.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/ui_pb2.pyi diff --git a/packages/pyright-internal/src/tests/checker.test.ts b/packages/pyright-internal/src/tests/checker.test.ts index 5a0b62568..05046e502 100644 --- a/packages/pyright-internal/src/tests/checker.test.ts +++ b/packages/pyright-internal/src/tests/checker.test.ts @@ -389,7 +389,7 @@ test('ParamNames1', () => { test('ParamType1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['paramType1.py']); - TestUtils.validateResults(analysisResults, 7); + TestUtils.validateResults(analysisResults, 9); }); test('Python2', () => { diff --git a/packages/pyright-internal/src/tests/samples/paramSpec41.py b/packages/pyright-internal/src/tests/samples/paramSpec41.py index 28dda3bf4..8226a4224 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec41.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec41.py @@ -10,6 +10,7 @@ class A: def __init__(self, x: int, y: int, z: str) -> None: self.a = x + # This should generate an error. @classmethod def f(cls: Callable[P, Self], *args: P.args, **kwargs: P.kwargs) -> int: return cls(*args, **kwargs).a diff --git a/packages/pyright-internal/src/tests/samples/paramType1.py b/packages/pyright-internal/src/tests/samples/paramType1.py index 476237511..725344a0e 100644 --- a/packages/pyright-internal/src/tests/samples/paramType1.py +++ b/packages/pyright-internal/src/tests/samples/paramType1.py @@ -42,6 +42,7 @@ def __new__(cls: "Child1"): def cm1(cls: type["Child1"]): ... + # This should generate an error. @classmethod # This should generate an error. def cm2(cls: "Child1"): @@ -56,6 +57,7 @@ def cm3(cls: type[Parent]): def cm4(cls: type[_TChild1]) -> _TChild1: ... + # This should generate an error. @classmethod # This should generate an error. def cm5(cls: _TChild1) -> _TChild1: diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 56aa30bd1..0f0791e78 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -1020,7 +1020,7 @@ test('ParamSpec40', () => { test('ParamSpec41', () => { const results = TestUtils.typeAnalyzeSampleFiles(['paramSpec41.py']); - TestUtils.validateResults(results, 0); + TestUtils.validateResults(results, 1); }); test('ParamSpec42', () => { diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index 06ef1b728..b6fad8649 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -03b4bb9ccecbabff7ebd7f98bd5c5239f2a33b97 +53a893279713c8abcc970a578d6f28e97efdd68f diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/abc.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/abc.pyi index ec04d8f85..43893a298 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/abc.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/abc.pyi @@ -31,7 +31,7 @@ def abstractmethod(funcobj: _FuncT) -> _FuncT: ... class abstractclassmethod(classmethod[_T, _P, _R_co]): __isabstractmethod__: Literal[True] - def __init__(self, callable: Callable[Concatenate[_T, _P], _R_co]) -> None: ... + def __init__(self, callable: Callable[Concatenate[type[_T], _P], _R_co]) -> None: ... class abstractstaticmethod(staticmethod[_P, _R_co]): __isabstractmethod__: Literal[True] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi index e41048516..182f96bd0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi @@ -171,7 +171,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): ) -> None: ... @overload - def parse_args(self, args: Sequence[str] | None = None, namespace: Namespace | None = None) -> Namespace: ... # type: ignore[misc] + def parse_args(self, args: Sequence[str] | None = None, namespace: None = None) -> Namespace: ... # type: ignore[misc] @overload def parse_args(self, args: Sequence[str] | None, namespace: _N) -> _N: ... @overload @@ -210,7 +210,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): def format_usage(self) -> str: ... def format_help(self) -> str: ... @overload - def parse_known_args(self, args: Sequence[str] | None = None, namespace: Namespace | None = None) -> tuple[Namespace, list[str]]: ... # type: ignore[misc] + def parse_known_args(self, args: Sequence[str] | None = None, namespace: None = None) -> tuple[Namespace, list[str]]: ... # type: ignore[misc] @overload def parse_known_args(self, args: Sequence[str] | None, namespace: _N) -> tuple[_N, list[str]]: ... @overload @@ -219,13 +219,13 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): def exit(self, status: int = 0, message: str | None = None) -> NoReturn: ... def error(self, message: str) -> NoReturn: ... @overload - def parse_intermixed_args(self, args: Sequence[str] | None = None, namespace: Namespace | None = None) -> Namespace: ... # type: ignore[misc] + def parse_intermixed_args(self, args: Sequence[str] | None = None, namespace: None = None) -> Namespace: ... # type: ignore[misc] @overload def parse_intermixed_args(self, args: Sequence[str] | None, namespace: _N) -> _N: ... @overload def parse_intermixed_args(self, *, namespace: _N) -> _N: ... @overload - def parse_known_intermixed_args(self, args: Sequence[str] | None = None, namespace: Namespace | None = None) -> tuple[Namespace, list[str]]: ... # type: ignore[misc] + def parse_known_intermixed_args(self, args: Sequence[str] | None = None, namespace: None = None) -> tuple[Namespace, list[str]]: ... # type: ignore[misc] @overload def parse_known_intermixed_args(self, args: Sequence[str] | None, namespace: _N) -> tuple[_N, list[str]]: ... @overload diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi index 982767fdf..b533f9240 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/array.pyi @@ -6,6 +6,9 @@ from collections.abc import Iterable from typing import Any, Generic, MutableSequence, TypeVar, overload # noqa: Y022 from typing_extensions import Literal, Self, SupportsIndex, TypeAlias +if sys.version_info >= (3, 12): + from types import GenericAlias + _IntTypeCode: TypeAlias = Literal["b", "B", "h", "H", "i", "I", "l", "L", "q", "Q"] _FloatTypeCode: TypeAlias = Literal["f", "d"] _UnicodeTypeCode: TypeAlias = Literal["u"] @@ -83,5 +86,7 @@ class array(MutableSequence[_T], Generic[_T]): def __deepcopy__(self, __unused: Any) -> array[_T]: ... def __buffer__(self, __flags: int) -> memoryview: ... def __release_buffer__(self, __buffer: memoryview) -> None: ... + if sys.version_info >= (3, 12): + def __class_getitem__(cls, item: Any) -> GenericAlias: ... ArrayType = array diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index 510a754ba..4a0194498 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -132,6 +132,9 @@ class staticmethod(Generic[_P, _R_co]): @property def __isabstractmethod__(self) -> bool: ... def __init__(self, __f: Callable[_P, _R_co]) -> None: ... + @overload + def __get__(self, __instance: None, __owner: type) -> Callable[_P, _R_co]: ... + @overload def __get__(self, __instance: _T, __owner: type[_T] | None = None) -> Callable[_P, _R_co]: ... if sys.version_info >= (3, 10): __name__: str @@ -142,16 +145,19 @@ class staticmethod(Generic[_P, _R_co]): class classmethod(Generic[_T, _P, _R_co]): @property - def __func__(self) -> Callable[Concatenate[_T, _P], _R_co]: ... + def __func__(self) -> Callable[Concatenate[type[_T], _P], _R_co]: ... @property def __isabstractmethod__(self) -> bool: ... - def __init__(self, __f: Callable[Concatenate[_T, _P], _R_co]) -> None: ... + def __init__(self, __f: Callable[Concatenate[type[_T], _P], _R_co]) -> None: ... + @overload def __get__(self, __instance: _T, __owner: type[_T] | None = None) -> Callable[_P, _R_co]: ... + @overload + def __get__(self, __instance: None, __owner: type[_T]) -> Callable[_P, _R_co]: ... if sys.version_info >= (3, 10): __name__: str __qualname__: str @property - def __wrapped__(self) -> Callable[Concatenate[_T, _P], _R_co]: ... + def __wrapped__(self) -> Callable[Concatenate[type[_T], _P], _R_co]: ... class type: @property diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi index f24d14fbf..2d2ffa9af 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ftplib.pyi @@ -87,7 +87,7 @@ class FTP: def makepasv(self) -> tuple[str, int]: ... def login(self, user: str = "", passwd: str = "", acct: str = "") -> str: ... # In practice, `rest` rest can actually be anything whose str() is an integer sequence, so to make it simple we allow integers. - def ntransfercmd(self, cmd: str, rest: int | str | None = None) -> tuple[socket, int]: ... + def ntransfercmd(self, cmd: str, rest: int | str | None = None) -> tuple[socket, int | None]: ... def transfercmd(self, cmd: str, rest: int | str | None = None) -> socket: ... def retrbinary( self, cmd: str, callback: Callable[[bytes], object], blocksize: int = 8192, rest: int | str | None = None diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi index 41ece1b05..4b5ed3d8b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/http/client.pyi @@ -115,6 +115,10 @@ class HTTPResponse(io.BufferedIOBase, BinaryIO): # type: ignore[misc] # incomp chunk_left: int | None length: int | None will_close: bool + # url is set on instances of the class in urllib.request.AbstractHTTPHandler.do_open + # to match urllib.response.addinfourl's interface. + # It's not set in HTTPResponse.__init__ or any other method on the class + url: str def __init__(self, sock: socket, debuglevel: int = 0, method: str | None = None, url: str | None = None) -> None: ... def peek(self, n: int = -1) -> bytes: ... def read(self, amt: int | None = None) -> bytes: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi index e0d69e7d3..4cc708d9d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/pdb.pyi @@ -125,6 +125,9 @@ class Pdb(Bdb, Cmd): def sigint_handler(self, signum: signal.Signals, frame: FrameType) -> None: ... def message(self, msg: str) -> None: ... def error(self, msg: str) -> None: ... + if sys.version_info >= (3, 12): + def set_convenience_variable(self, frame: FrameType, name: str, value: Any) -> None: ... + def _select_frame(self, number: int) -> None: ... def _getval_except(self, arg: str, frame: FrameType | None = None) -> object: ... def _print_lines( diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi index d73566fc0..bb416717a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/tkinter/ttk.pyi @@ -953,8 +953,6 @@ class _TreeviewColumnDict(TypedDict): anchor: tkinter._Anchor id: str -_TreeviewColumnId: TypeAlias = int | str # manual page: "COLUMN IDENTIFIERS" - class Treeview(Widget, tkinter.XView, tkinter.YView): def __init__( self, @@ -963,7 +961,7 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): class_: str = ..., columns: str | list[str] | list[int] | list[str | int] | tuple[str | int, ...] = ..., cursor: tkinter._Cursor = ..., - displaycolumns: str | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ..., + displaycolumns: str | int | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ..., height: int = ..., name: str = ..., padding: _Padding = ..., @@ -985,7 +983,7 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): *, columns: str | list[str] | list[int] | list[str | int] | tuple[str | int, ...] = ..., cursor: tkinter._Cursor = ..., - displaycolumns: str | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ..., + displaycolumns: str | int | list[str] | tuple[str, ...] | list[int] | tuple[int, ...] = ..., height: int = ..., padding: _Padding = ..., selectmode: Literal["extended", "browse", "none"] = ..., @@ -998,23 +996,23 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): @overload def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ... config = configure - def bbox(self, item, column: _TreeviewColumnId | None = None) -> tuple[int, int, int, int] | Literal[""]: ... # type: ignore[override] - def get_children(self, item: str | None = None) -> tuple[str, ...]: ... - def set_children(self, item: str, *newchildren: str) -> None: ... + def bbox(self, item: str | int, column: str | int | None = None) -> tuple[int, int, int, int] | Literal[""]: ... # type: ignore[override] + def get_children(self, item: str | int | None = None) -> tuple[str, ...]: ... + def set_children(self, item: str | int, *newchildren: str | int) -> None: ... @overload - def column(self, column: _TreeviewColumnId, option: Literal["width", "minwidth"]) -> int: ... + def column(self, column: str | int, option: Literal["width", "minwidth"]) -> int: ... @overload - def column(self, column: _TreeviewColumnId, option: Literal["stretch"]) -> bool: ... # actually 0 or 1 + def column(self, column: str | int, option: Literal["stretch"]) -> bool: ... # actually 0 or 1 @overload - def column(self, column: _TreeviewColumnId, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ... + def column(self, column: str | int, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ... @overload - def column(self, column: _TreeviewColumnId, option: Literal["id"]) -> str: ... + def column(self, column: str | int, option: Literal["id"]) -> str: ... @overload - def column(self, column: _TreeviewColumnId, option: str) -> Any: ... + def column(self, column: str | int, option: str) -> Any: ... @overload def column( self, - column: _TreeviewColumnId, + column: str | int, option: None = None, *, width: int = ..., @@ -1023,29 +1021,29 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): anchor: tkinter._Anchor = ..., # id is read-only ) -> _TreeviewColumnDict | None: ... - def delete(self, *items: str) -> None: ... - def detach(self, *items: str) -> None: ... - def exists(self, item: str) -> bool: ... + def delete(self, *items: str | int) -> None: ... + def detach(self, *items: str | int) -> None: ... + def exists(self, item: str | int) -> bool: ... @overload # type: ignore[override] def focus(self, item: None = None) -> str: ... # can return empty string @overload - def focus(self, item: str) -> Literal[""]: ... + def focus(self, item: str | int) -> Literal[""]: ... @overload - def heading(self, column: _TreeviewColumnId, option: Literal["text"]) -> str: ... + def heading(self, column: str | int, option: Literal["text"]) -> str: ... @overload - def heading(self, column: _TreeviewColumnId, option: Literal["image"]) -> tuple[str] | str: ... + def heading(self, column: str | int, option: Literal["image"]) -> tuple[str] | str: ... @overload - def heading(self, column: _TreeviewColumnId, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ... + def heading(self, column: str | int, option: Literal["anchor"]) -> _tkinter.Tcl_Obj: ... @overload - def heading(self, column: _TreeviewColumnId, option: Literal["command"]) -> str: ... + def heading(self, column: str | int, option: Literal["command"]) -> str: ... @overload - def heading(self, column: _TreeviewColumnId, option: str) -> Any: ... + def heading(self, column: str | int, option: str) -> Any: ... @overload - def heading(self, column: _TreeviewColumnId, option: None = None) -> _TreeviewHeaderDict: ... # type: ignore[misc] + def heading(self, column: str | int, option: None = None) -> _TreeviewHeaderDict: ... # type: ignore[misc] @overload def heading( self, - column: _TreeviewColumnId, + column: str | int, option: None = None, *, text: str = ..., @@ -1058,14 +1056,14 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): def identify_column(self, x: int) -> str: ... def identify_region(self, x: int, y: int) -> Literal["heading", "separator", "tree", "cell", "nothing"]: ... def identify_element(self, x: int, y: int) -> str: ... # don't know what possible return values are - def index(self, item: str) -> int: ... + def index(self, item: str | int) -> int: ... def insert( self, parent: str, index: int | Literal["end"], - iid: str | None = None, + iid: str | int | None = None, *, - id: str = ..., # same as iid + id: str | int = ..., # same as iid text: str = ..., image: tkinter._ImageSpec = ..., values: list[Any] | tuple[Any, ...] = ..., @@ -1073,23 +1071,23 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): tags: str | list[str] | tuple[str, ...] = ..., ) -> str: ... @overload - def item(self, item: str, option: Literal["text"]) -> str: ... + def item(self, item: str | int, option: Literal["text"]) -> str: ... @overload - def item(self, item: str, option: Literal["image"]) -> tuple[str] | Literal[""]: ... + def item(self, item: str | int, option: Literal["image"]) -> tuple[str] | Literal[""]: ... @overload - def item(self, item: str, option: Literal["values"]) -> tuple[Any, ...] | Literal[""]: ... + def item(self, item: str | int, option: Literal["values"]) -> tuple[Any, ...] | Literal[""]: ... @overload - def item(self, item: str, option: Literal["open"]) -> bool: ... # actually 0 or 1 + def item(self, item: str | int, option: Literal["open"]) -> bool: ... # actually 0 or 1 @overload - def item(self, item: str, option: Literal["tags"]) -> tuple[str, ...] | Literal[""]: ... + def item(self, item: str | int, option: Literal["tags"]) -> tuple[str, ...] | Literal[""]: ... @overload - def item(self, item: str, option: str) -> Any: ... + def item(self, item: str | int, option: str) -> Any: ... @overload - def item(self, item: str, option: None = None) -> _TreeviewItemDict: ... # type: ignore[misc] + def item(self, item: str | int, option: None = None) -> _TreeviewItemDict: ... # type: ignore[misc] @overload def item( self, - item: str, + item: str | int, option: None = None, *, text: str = ..., @@ -1098,27 +1096,39 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): open: bool = ..., tags: str | list[str] | tuple[str, ...] = ..., ) -> None: ... - def move(self, item: str, parent: str, index: int) -> None: ... + def move(self, item: str | int, parent: str, index: int) -> None: ... reattach = move - def next(self, item: str) -> str: ... # returning empty string means last item - def parent(self, item: str) -> str: ... - def prev(self, item: str) -> str: ... # returning empty string means first item - def see(self, item: str) -> None: ... + def next(self, item: str | int) -> str: ... # returning empty string means last item + def parent(self, item: str | int) -> str: ... + def prev(self, item: str | int) -> str: ... # returning empty string means first item + def see(self, item: str | int) -> None: ... if sys.version_info >= (3, 8): def selection(self) -> tuple[str, ...]: ... else: def selection(self, selop: Incomplete | None = ..., items: Incomplete | None = None) -> tuple[str, ...]: ... - def selection_set(self, items: str | list[str] | tuple[str, ...]) -> None: ... - def selection_add(self, items: str | list[str] | tuple[str, ...]) -> None: ... - def selection_remove(self, items: str | list[str] | tuple[str, ...]) -> None: ... - def selection_toggle(self, items: str | list[str] | tuple[str, ...]) -> None: ... @overload - def set(self, item: str, column: None = None, value: None = None) -> dict[str, Any]: ... + def selection_set(self, __items: list[str] | tuple[str, ...] | list[int] | tuple[int, ...]) -> None: ... + @overload + def selection_set(self, *items: str | int) -> None: ... + @overload + def selection_add(self, __items: list[str] | tuple[str, ...] | list[int] | tuple[int, ...]) -> None: ... + @overload + def selection_add(self, *items: str | int) -> None: ... + @overload + def selection_remove(self, __items: list[str] | tuple[str, ...] | list[int] | tuple[int, ...]) -> None: ... + @overload + def selection_remove(self, *items: str | int) -> None: ... + @overload + def selection_toggle(self, __items: list[str] | tuple[str, ...] | list[int] | tuple[int, ...]) -> None: ... + @overload + def selection_toggle(self, *items: str | int) -> None: ... + @overload + def set(self, item: str | int, column: None = None, value: None = None) -> dict[str, Any]: ... @overload - def set(self, item: str, column: _TreeviewColumnId, value: None = None) -> Any: ... + def set(self, item: str | int, column: str | int, value: None = None) -> Any: ... @overload - def set(self, item: str, column: _TreeviewColumnId, value: Any) -> Literal[""]: ... + def set(self, item: str | int, column: str | int, value: Any) -> Literal[""]: ... # There's no tag_unbind() or 'add' argument for whatever reason. # Also, it's 'callback' instead of 'func' here. @overload @@ -1150,7 +1160,7 @@ class Treeview(Widget, tkinter.XView, tkinter.YView): @overload def tag_has(self, tagname: str, item: None = None) -> tuple[str, ...]: ... @overload - def tag_has(self, tagname: str, item: str) -> bool: ... + def tag_has(self, tagname: str, item: str | int) -> bool: ... class LabeledScale(Frame): label: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/traceback.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/traceback.pyi index a6d6d3e16..47449dfe8 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/traceback.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/traceback.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import SupportsWrite +from _typeshed import SupportsWrite, Unused from collections.abc import Generator, Iterable, Iterator, Mapping from types import FrameType, TracebackType from typing import Any, overload @@ -84,7 +84,10 @@ def format_list(extracted_list: list[FrameSummary]) -> list[str]: ... def print_list(extracted_list: list[FrameSummary], file: SupportsWrite[str] | None = None) -> None: ... if sys.version_info >= (3, 10): - def format_exception_only(__exc: type[BaseException] | None, value: BaseException | None = ...) -> list[str]: ... + @overload + def format_exception_only(__exc: BaseException | None) -> list[str]: ... + @overload + def format_exception_only(__exc: Unused, value: BaseException | None) -> list[str]: ... else: def format_exception_only(etype: type[BaseException] | None, value: BaseException | None) -> list[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi index 6c37f3222..81cf3817f 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi @@ -956,3 +956,7 @@ if sys.version_info >= (3, 12): if sys.version_info >= (3, 10): def __or__(self, right: Any) -> _SpecialForm: ... def __ror__(self, left: Any) -> _SpecialForm: ... + +if sys.version_info >= (3, 13): + def is_protocol(__tp: type) -> bool: ... + def get_protocol_members(__tp: type) -> frozenset[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi index c96171542..907ff4eeb 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi @@ -4,26 +4,52 @@ import sys import typing from _collections_abc import dict_items, dict_keys, dict_values from _typeshed import IdentityFunction, Incomplete -from collections.abc import Iterable -from typing import ( # noqa: Y022,Y039 +from typing import ( # noqa: Y022,Y037,Y038,Y039 + IO as IO, TYPE_CHECKING as TYPE_CHECKING, + AbstractSet as AbstractSet, Any as Any, + AnyStr as AnyStr, AsyncContextManager as AsyncContextManager, AsyncGenerator as AsyncGenerator, AsyncIterable as AsyncIterable, AsyncIterator as AsyncIterator, Awaitable as Awaitable, - Callable, + BinaryIO as BinaryIO, + Callable as Callable, ChainMap as ChainMap, ClassVar as ClassVar, + Collection as Collection, + Container as Container, ContextManager as ContextManager, Coroutine as Coroutine, Counter as Counter, DefaultDict as DefaultDict, Deque as Deque, - Mapping, + Dict as Dict, + ForwardRef as ForwardRef, + FrozenSet as FrozenSet, + Generator as Generator, + Generic as Generic, + Hashable as Hashable, + ItemsView as ItemsView, + Iterable as Iterable, + Iterator as Iterator, + KeysView as KeysView, + List as List, + Mapping as Mapping, + MappingView as MappingView, + Match as Match, + MutableMapping as MutableMapping, + MutableSequence as MutableSequence, + MutableSet as MutableSet, NoReturn as NoReturn, - Sequence, + Optional as Optional, + Pattern as Pattern, + Reversible as Reversible, + Sequence as Sequence, + Set as Set, + Sized as Sized, SupportsAbs as SupportsAbs, SupportsBytes as SupportsBytes, SupportsComplex as SupportsComplex, @@ -31,8 +57,15 @@ from typing import ( # noqa: Y022,Y039 SupportsInt as SupportsInt, SupportsRound as SupportsRound, Text as Text, + TextIO as TextIO, + Tuple as Tuple, Type as Type, + Union as Union, + ValuesView as ValuesView, _Alias, + cast as cast, + no_type_check as no_type_check, + no_type_check_decorator as no_type_check_decorator, overload as overload, type_check_only, ) @@ -109,11 +142,50 @@ __all__ = [ "get_original_bases", "get_overloads", "get_type_hints", + "AbstractSet", + "AnyStr", + "BinaryIO", + "Callable", + "Collection", + "Container", + "Dict", + "ForwardRef", + "FrozenSet", + "Generator", + "Generic", + "Hashable", + "IO", + "ItemsView", + "Iterable", + "Iterator", + "KeysView", + "List", + "Mapping", + "MappingView", + "Match", + "MutableMapping", + "MutableSequence", + "MutableSet", + "Optional", + "Pattern", + "Reversible", + "Sequence", + "Set", + "Sized", + "TextIO", + "Tuple", + "Union", + "ValuesView", + "cast", + "get_protocol_members", + "is_protocol", + "no_type_check", + "no_type_check_decorator", ] _T = typing.TypeVar("_T") _F = typing.TypeVar("_F", bound=Callable[..., Any]) -_TC = typing.TypeVar("_TC", bound=Type[object]) +_TC = typing.TypeVar("_TC", bound=type[object]) # unfortunately we have to duplicate this class definition from typing.pyi or we break pytype class _SpecialForm: @@ -404,6 +476,12 @@ else: # https://github.com/python/typeshed/issues/10224 for why we're defining it this way def __buffer__(self, __flags: int) -> memoryview: ... +if sys.version_info >= (3, 13): + from typing import get_protocol_members as get_protocol_members, is_protocol as is_protocol +else: + def is_protocol(__tp: type) -> bool: ... + def get_protocol_members(__tp: type) -> frozenset[str]: ... + # PEP 705 ReadOnly: _SpecialForm diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi index db1cc7d9b..66120197b 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/unittest/mock.pyi @@ -389,7 +389,11 @@ if sys.version_info >= (3, 8): class AsyncMagicMixin(MagicMixin): def __init__(self, *args: Any, **kw: Any) -> None: ... - class AsyncMock(AsyncMockMixin, AsyncMagicMixin, Mock): ... + class AsyncMock(AsyncMockMixin, AsyncMagicMixin, Mock): + # Improving the `reset_mock` signature. + # It is defined on `AsyncMockMixin` with `*args, **kwargs`, which is not ideal. + # But, `NonCallableMock` super-class has the better version. + def reset_mock(self, visited: Any = None, *, return_value: bool = False, side_effect: bool = False) -> None: ... class MagicProxy: name: str diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/urllib/request.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/urllib/request.pyi index 8f99c5837..079c97555 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/urllib/request.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/urllib/request.pyi @@ -173,7 +173,7 @@ class HTTPPasswordMgr: def add_password(self, realm: str, uri: str | Sequence[str], user: str, passwd: str) -> None: ... def find_user_password(self, realm: str, authuri: str) -> tuple[str | None, str | None]: ... def is_suburi(self, base: str, test: str) -> bool: ... # undocumented - def reduce_uri(self, uri: str, default_port: bool = True) -> str: ... # undocumented + def reduce_uri(self, uri: str, default_port: bool = True) -> tuple[str, str]: ... # undocumented class HTTPPasswordMgrWithDefaultRealm(HTTPPasswordMgr): def add_password(self, realm: str | None, uri: str | Sequence[str], user: str, passwd: str) -> None: ... @@ -184,7 +184,7 @@ class HTTPPasswordMgrWithPriorAuth(HTTPPasswordMgrWithDefaultRealm): self, realm: str | None, uri: str | Sequence[str], user: str, passwd: str, is_authenticated: bool = False ) -> None: ... def update_authenticated(self, uri: str | Sequence[str], is_authenticated: bool = False) -> None: ... - def is_authenticated(self, authuri: str) -> bool: ... + def is_authenticated(self, authuri: str) -> bool | None: ... class AbstractBasicAuthHandler: rx: ClassVar[Pattern[str]] # undocumented @@ -212,7 +212,7 @@ class AbstractDigestAuthHandler: def http_error_auth_reqed(self, auth_header: str, host: str, req: Request, headers: HTTPMessage) -> None: ... def retry_http_digest_auth(self, req: Request, auth: str) -> _UrlopenRet | None: ... def get_cnonce(self, nonce: str) -> str: ... - def get_authorization(self, req: Request, chal: Mapping[str, str]) -> str: ... + def get_authorization(self, req: Request, chal: Mapping[str, str]) -> str | None: ... def get_algorithm_impls(self, algorithm: str) -> tuple[Callable[[str], str], Callable[[str, str], str]]: ... def get_entity_digest(self, data: ReadableBuffer | None, chal: Mapping[str, str]) -> str | None: ... @@ -269,7 +269,7 @@ class ftpwrapper: # undocumented def file_close(self) -> None: ... def init(self) -> None: ... def real_close(self) -> None: ... - def retrfile(self, file: str, type: str) -> tuple[addclosehook, int]: ... + def retrfile(self, file: str, type: str) -> tuple[addclosehook, int | None]: ... class FTPHandler(BaseHandler): def ftp_open(self, req: Request) -> addinfourl: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/METADATA.toml index 47a9b6f7c..4c818b93c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/METADATA.toml @@ -1,3 +1,4 @@ version = "2.0.*" +upstream_repository = "https://github.com/thombashi/DateTimeRange" requires = ["types-python-dateutil"] obsolete_since = "2.1.0" # Released on 2023-02-19 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/METADATA.toml index 3d4d518df..b491184ae 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Deprecated/METADATA.toml @@ -1,2 +1,3 @@ version = "1.2.*" +upstream_repository = "https://github.com/tantale/deprecated" requires = [] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/METADATA.toml index 4a8e90c0c..bf04067ad 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/ExifRead/METADATA.toml @@ -1 +1,2 @@ version = "3.0.*" +upstream_repository = "https://github.com/ianare/exif-py" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml index 4c491c27e..268976f68 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Cors/METADATA.toml @@ -1,4 +1,5 @@ version = "4.0.*" +upstream_repository = "https://github.com/corydolphin/flask-cors" # Requires a version of flask with a `py.typed` file requires = ["Flask>=2.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml index 7bbc03e43..7b8e26c3c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Flask-Migrate/METADATA.toml @@ -1,4 +1,5 @@ version = "4.0.*" +upstream_repository = "https://github.com/miguelgrinberg/flask-migrate" # Requires versions of flask and Flask-SQLAlchemy with `py.typed` files requires = ["Flask>=2.0.0", "Flask-SQLAlchemy>=3.0.1"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/METADATA.toml index 1756f1f53..baa9a2192 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Markdown/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Markdown/METADATA.toml @@ -1,4 +1,5 @@ version = "3.4.*" +upstream_repository = "https://github.com/Python-Markdown/markdown" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml index 7d5605c92..9dc403e84 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pillow/METADATA.toml @@ -1,4 +1,5 @@ version = "10.0.*" +upstream_repository = "https://github.com/python-pillow/Pillow" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/METADATA.toml index db0b3838d..11402b62e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyAutoGUI/METADATA.toml @@ -1,2 +1,3 @@ version = "0.9.*" +upstream_repository = "https://github.com/asweigart/pyautogui" requires = ["types-Pillow", "types-PyScreeze"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml index b4f31a779..8e4adf72f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyMySQL/METADATA.toml @@ -1,4 +1,5 @@ version = "1.1.*" +upstream_repository = "https://github.com/PyMySQL/PyMySQL" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/METADATA.toml index 52120c0be..6ed8c06b6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyScreeze/METADATA.toml @@ -1,2 +1,3 @@ version = "0.1.*" +upstream_repository = "https://github.com/asweigart/pyscreeze" requires = ["types-Pillow"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/METADATA.toml index 39a61569b..c31b588e6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/PyYAML/METADATA.toml @@ -1 +1,2 @@ version = "6.0.*" +upstream_repository = "https://github.com/yaml/pyyaml" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml index ed69afcdb..f8fb89d88 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml @@ -1,4 +1,5 @@ version = "2.15.*" +upstream_repository = "https://github.com/pygments/pygments" requires = ["types-docutils", "types-setuptools"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml index 8a1eb1a6d..e4eb2fd4c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml @@ -1,4 +1,5 @@ version = "1.8.*" +upstream_repository = "https://github.com/arsenetar/send2trash" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/METADATA.toml index 156974ce2..f9b51ecc6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/aiofiles/METADATA.toml @@ -1,4 +1,5 @@ version = "23.1.*" +upstream_repository = "https://github.com/Tinche/aiofiles" [tool.stubtest] # linux and darwin are equivalent diff --git a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml index dc525a938..792d4b475 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/aws-xray-sdk/METADATA.toml @@ -1,4 +1,5 @@ version = "2.12.*" +upstream_repository = "https://github.com/aws/aws-xray-sdk-python" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml index a80fc97a8..ac50477bb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml @@ -1,4 +1,5 @@ version = "2.11.*" +upstream_repository = "https://github.com/python-babel/babel" requires = ["types-pytz", "types-setuptools"] obsolete_since = "2.12.1" # Released on 2023-02-28 partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/bleach/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/bleach/METADATA.toml index 276fbcfb4..58f084566 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/bleach/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/bleach/METADATA.toml @@ -1,4 +1,5 @@ version = "6.0.*" +upstream_repository = "https://github.com/mozilla/bleach" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boltons/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/boltons/METADATA.toml index 0243ddf54..520e591d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boltons/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/boltons/METADATA.toml @@ -1,4 +1,5 @@ version = "23.0.*" +upstream_repository = "https://github.com/mahmoud/boltons" [tool.stubtest] ignore_missing_stub = false diff --git a/packages/pyright-internal/typeshed-fallback/stubs/boto/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/boto/METADATA.toml index d6d7bfb95..56aaba050 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/boto/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/boto/METADATA.toml @@ -1,4 +1,5 @@ version = "2.49.*" +upstream_repository = "https://github.com/boto/boto" requires = [] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cachetools/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/cachetools/METADATA.toml index d7cde2e5e..3507d45d8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cachetools/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/cachetools/METADATA.toml @@ -1 +1,2 @@ version = "5.3.*" +upstream_repository = "https://github.com/tkem/cachetools" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/caldav/METADATA.toml index 047218cc5..b25dcd0fe 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/METADATA.toml @@ -1,4 +1,5 @@ -version = "1.2.*" +version = "1.3.*" +upstream_repository = "https://github.com/python-caldav/caldav" # also types-lxml and types-icalendar when those stubs are added requires = ["types-requests", "types-vobject"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/davclient.pyi b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/davclient.pyi index 8cc3c5bc2..23d392319 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/davclient.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/davclient.pyi @@ -20,7 +20,8 @@ class DAVResponse: status: int headers: CaseInsensitiveDict[str] objects: dict[str, dict[str, str]] # only defined after call to find_objects_and_props() - def __init__(self, response: Response) -> None: ... + huge_tree: bool + def __init__(self, response: Response, davclient: DAVClient | None = None) -> None: ... @property def raw(self) -> str: ... def validate_status(self, status: str) -> None: ... @@ -39,6 +40,7 @@ class DAVClient: timeout: _Timeout | None ssl_verify_cert: bool | str ssl_cert: str | tuple[str, str] | None + huge_tree: bool def __init__( self, url: str, @@ -50,6 +52,7 @@ class DAVClient: ssl_verify_cert: bool | str = True, ssl_cert: str | tuple[str, str] | None = None, headers: dict[str, str] = {}, + huge_tree: bool = False, ) -> None: ... def __enter__(self) -> Self: ... def __exit__( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/objects.pyi b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/objects.pyi index 524fec9f9..a00de57f1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/objects.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/caldav/caldav/objects.pyi @@ -1,14 +1,15 @@ import datetime from _typeshed import Incomplete -from collections.abc import Iterable, Iterator, Mapping, Sequence -from typing import TypeVar, overload +from collections import defaultdict +from collections.abc import Callable, Container, Iterable, Iterator, Mapping, Sequence +from typing import Any, TypeVar, overload from typing_extensions import Literal, Self, TypeAlias from urllib.parse import ParseResult, SplitResult from vobject.base import VBase from .davclient import DAVClient -from .elements.cdav import CalendarQuery, CompFilter, ScheduleInboxURL, ScheduleOutboxURL +from .elements.cdav import CalendarData, CalendarQuery, CompFilter, ScheduleInboxURL, ScheduleOutboxURL from .lib.url import URL _CC = TypeVar("_CC", bound=CalendarObjectResource) @@ -125,6 +126,7 @@ class Calendar(DAVObject): include_completed: bool = False, sort_keys: Sequence[str] = (), split_expanded: bool = True, + props: list[CalendarData] | None = None, **kwargs, ) -> list[CalendarObjectResource]: ... @overload @@ -136,6 +138,7 @@ class Calendar(DAVObject): include_completed: bool = False, sort_keys: Sequence[str] = (), split_expanded: bool = True, + props: list[CalendarData] | None = None, **kwargs, ) -> list[_CC]: ... @overload @@ -147,6 +150,7 @@ class Calendar(DAVObject): include_completed: bool = False, sort_keys: Sequence[str] = (), split_expanded: bool = True, + props: list[CalendarData] | None = None, **kwargs, ) -> list[_CC]: ... def build_search_xml_query( @@ -161,6 +165,7 @@ class Calendar(DAVObject): expand: bool | None = None, start: datetime.datetime | None = None, end: datetime.datetime | None = None, + props: list[CalendarData] | None = None, *, uid=..., summary=..., @@ -168,6 +173,7 @@ class Calendar(DAVObject): description=..., location=..., status=..., + **kwargs: str, ) -> tuple[CalendarQuery, _CompClass]: ... def freebusy_request(self, start: datetime.datetime, end: datetime.datetime) -> FreeBusy: ... def todos( @@ -221,6 +227,13 @@ class CalendarObjectResource(DAVObject): def add_organizer(self) -> None: ... def split_expanded(self) -> list[Self]: ... def expand_rrule(self, start: datetime.datetime, end: datetime.datetime) -> None: ... + def get_relatives( + self, + reltypes: Container[str] | None = None, + relfilter: Callable[[Any], bool] | None = None, + fetch_objects: bool = True, + ignore_missing: bool = True, + ) -> defaultdict[str, set[str]]: ... def add_attendee(self, attendee, no_default_parameters: bool = False, **parameters) -> None: ... def is_invite_request(self) -> bool: ... def accept_invite(self, calendar: Incomplete | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/chevron/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/chevron/METADATA.toml index 48faa3822..10bcb5ccb 100755 --- a/packages/pyright-internal/typeshed-fallback/stubs/chevron/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/chevron/METADATA.toml @@ -1,3 +1,4 @@ version = "0.14.*" +upstream_repository = "https://github.com/noahmorrison/chevron" [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/click-spinner/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/click-spinner/METADATA.toml index 37dc09b10..7360ba2d2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/click-spinner/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/click-spinner/METADATA.toml @@ -1 +1,2 @@ version = "0.1.*" +upstream_repository = "https://github.com/click-contrib/click-spinner" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/colorama/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/colorama/METADATA.toml index 34da26594..40a45767b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/colorama/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/colorama/METADATA.toml @@ -1,4 +1,5 @@ version = "0.4.*" +upstream_repository = "https://github.com/tartley/colorama" [tool.stubtest] platforms = ["linux", "win32"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/commonmark/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/commonmark/METADATA.toml index e711a71bf..e085ecf45 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/commonmark/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/commonmark/METADATA.toml @@ -1,4 +1,5 @@ version = "0.9.*" +upstream_repository = "https://github.com/rtfd/commonmark.py" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/METADATA.toml index 29511ee7d..857d25a71 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/console-menu/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/console-menu/METADATA.toml @@ -1 +1,2 @@ version = "0.8.*" +upstream_repository = "https://github.com/aegirhall/console-menu" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/croniter/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/croniter/METADATA.toml index 6d3b92238..e2699fe30 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/croniter/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/croniter/METADATA.toml @@ -1 +1,2 @@ version = "1.4.*" +upstream_repository = "https://github.com/kiorky/croniter" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/METADATA.toml index ced11fa3e..0fe2c42e9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dateparser/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/dateparser/METADATA.toml @@ -1,4 +1,5 @@ version = "1.1.*" +upstream_repository = "https://github.com/scrapinghub/dateparser" [tool.stubtest] extras = ["fasttext", "langdetect"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/decorator/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/decorator/METADATA.toml index 2c151642b..507ad3d19 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/decorator/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/decorator/METADATA.toml @@ -1 +1,2 @@ version = "5.1.*" +upstream_repository = "https://github.com/micheles/decorator" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml index 6c6e91faf..7064924e3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/dj-database-url/METADATA.toml @@ -1,2 +1,3 @@ version = "1.3.*" +upstream_repository = "https://github.com/jazzband/dj-database-url" obsolete_since = "2.0.0" # Released on 2023-04-27 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/METADATA.toml index 58bc38349..a252e11f2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/dockerfile-parse/METADATA.toml @@ -1 +1,2 @@ version = "2.0.*" +upstream_repository = "https://github.com/containerbuildsystem/dockerfile-parse" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/editdistance/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/editdistance/METADATA.toml index 03031f1e9..67d467b51 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/editdistance/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/editdistance/METADATA.toml @@ -1 +1,2 @@ version = "0.6.*" +upstream_repository = "https://github.com/roy-ht/editdistance" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/entrypoints/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/entrypoints/METADATA.toml index 582104d3a..a1a81ef24 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/entrypoints/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/entrypoints/METADATA.toml @@ -1 +1,2 @@ version = "0.4.*" +upstream_repository = "https://github.com/takluyver/entrypoints" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/first/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/first/METADATA.toml index 58bc38349..89a41730f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/first/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/first/METADATA.toml @@ -1 +1,2 @@ version = "2.0.*" +upstream_repository = "https://github.com/hynek/first" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-2020/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-2020/METADATA.toml index 690242a33..27b352770 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-2020/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-2020/METADATA.toml @@ -1 +1,2 @@ version = "1.8.*" +upstream_repository = "https://github.com/asottile/flake8-2020" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml index 6266d1691..ccc105020 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-bugbear/METADATA.toml @@ -1,4 +1,5 @@ version = "23.7.10" +upstream_repository = "https://github.com/PyCQA/flake8-bugbear" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-builtins/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-builtins/METADATA.toml index 437b55a26..58507b4be 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-builtins/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-builtins/METADATA.toml @@ -1,4 +1,5 @@ version = "2.1.*" +upstream_repository = "https://github.com/gforcada/flake8-builtins" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-docstrings/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-docstrings/METADATA.toml index 4ec4b2b4c..10586ebd1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-docstrings/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-docstrings/METADATA.toml @@ -1,4 +1,5 @@ version = "1.7.*" +upstream_repository = "https://github.com/pycqa/flake8-docstrings" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml index eeb399599..4874bcd4d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-plugin-utils/METADATA.toml @@ -1,4 +1,5 @@ version = "1.3.*" +upstream_repository = "https://github.com/afonasev/flake8-plugin-utils" partial_stub = true obsolete_since = "1.3.3" # Released on 2023-06-26 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-rst-docstrings/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-rst-docstrings/METADATA.toml index a116b6d71..2b76dde36 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-rst-docstrings/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-rst-docstrings/METADATA.toml @@ -1,4 +1,5 @@ version = "0.3.*" +upstream_repository = "https://github.com/peterjc/flake8-rst-docstrings" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml index 647482d55..1971ff585 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-simplify/METADATA.toml @@ -1,4 +1,5 @@ version = "0.20.*" +upstream_repository = "https://github.com/MartinThoma/flake8-simplify" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/flake8-typing-imports/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/flake8-typing-imports/METADATA.toml index ebd7f83a2..6ac5c40b7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/flake8-typing-imports/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/flake8-typing-imports/METADATA.toml @@ -1,4 +1,5 @@ version = "1.14.*" +upstream_repository = "https://github.com/asottile/flake8-typing-imports" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/METADATA.toml index 78c0762f0..a47fe4aef 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/fpdf2/METADATA.toml @@ -1,4 +1,5 @@ version = "2.7.4" +upstream_repository = "https://github.com/PyFPDF/fpdf2" requires = ["types-Pillow>=9.2.0"] [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml index 10e0f7f8d..2337e58a1 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml @@ -1,4 +1,5 @@ version = "2.1.*" +upstream_repository = "https://github.com/googleapis/python-ndb" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/METADATA.toml index 80bcc75dc..b1fa786da 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/html5lib/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/html5lib/METADATA.toml @@ -1,4 +1,5 @@ version = "1.1.*" +upstream_repository = "https://github.com/html5lib/html5lib-python" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/httplib2/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/METADATA.toml index 035554b96..7aeadb496 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/httplib2/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/httplib2/METADATA.toml @@ -1 +1,2 @@ version = "0.22.*" +upstream_repository = "https://github.com/httplib2/httplib2" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/METADATA.toml index bf082ace4..6bc16f3e5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/influxdb-client/METADATA.toml @@ -1,4 +1,5 @@ version = "1.36.*" +upstream_repository = "https://github.com/influxdata/influxdb-client-python" requires = ["types-urllib3"] [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/invoke/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/invoke/METADATA.toml index 0b2ff5be2..1569bee2b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/invoke/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/invoke/METADATA.toml @@ -1,4 +1,5 @@ version = "2.0.*" +upstream_repository = "https://github.com/pyinvoke/invoke" obsolete_since = "2.1.2" # Released on 2023-05-15 partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/METADATA.toml index f3e83f9c4..df1266d7f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jmespath/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/jmespath/METADATA.toml @@ -1 +1,2 @@ version = "1.0.*" +upstream_repository = "https://github.com/jmespath/jmespath.py" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/METADATA.toml index b4f510c3d..8586b7fa0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/jsonschema/METADATA.toml @@ -1,4 +1,5 @@ version = "4.17.*" +upstream_repository = "https://github.com/python-jsonschema/jsonschema" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/METADATA.toml index dd6660878..c9280f44f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/keyboard/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/keyboard/METADATA.toml @@ -1,4 +1,5 @@ version = "0.13.*" +upstream_repository = "https://github.com/boppreh/keyboard" # [tool.stubtest] # While the stubs slightly differ on Windows vs Linux. diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/METADATA.toml index 3c34f864a..76740bed3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ldap3/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/ldap3/METADATA.toml @@ -1,4 +1,5 @@ version = "2.9.*" +upstream_repository = "https://github.com/cannatag/ldap3" requires = ["types-pyasn1"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mock/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/mock/METADATA.toml index c98db6304..e6a45ed45 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mock/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/mock/METADATA.toml @@ -1 +1,2 @@ -version = "5.0.*" +version = "5.1.*" +upstream_repository = "https://github.com/testing-cabal/mock" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/__init__.pyi index 9b47e2207..4fc3625d6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/__init__.pyi @@ -1,3 +1,24 @@ from .mock import * +__all__ = ( + "__version__", + "version_info", + "Mock", + "MagicMock", + "patch", + "sentinel", + "DEFAULT", + "ANY", + "call", + "create_autospec", + "AsyncMock", + "ThreadingMock", + "FILTER_DIR", + "NonCallableMock", + "NonCallableMagicMock", + "mock_open", + "PropertyMock", + "seal", +) +__version__: str version_info: tuple[int, int, int] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi index 19dbf0ae1..0479bde4c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mock/mock/mock.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from collections.abc import Callable, Coroutine, Iterable, Mapping, Sequence from contextlib import AbstractContextManager from types import TracebackType -from typing import Any, Generic, TypeVar, overload +from typing import Any, ClassVar, Generic, TypeVar, overload from typing_extensions import Literal, ParamSpec, Self _F = TypeVar("_F", bound=Callable[..., Any]) @@ -22,6 +22,7 @@ __all__ = ( "call", "create_autospec", "AsyncMock", + "ThreadingMock", "FILTER_DIR", "NonCallableMock", "NonCallableMagicMock", @@ -328,7 +329,12 @@ class AsyncMockMixin(Base): __annotations__: dict[str, Any] | None # type: ignore[assignment] class AsyncMagicMixin(MagicMixin): ... -class AsyncMock(AsyncMockMixin, AsyncMagicMixin, Mock): ... + +class AsyncMock(AsyncMockMixin, AsyncMagicMixin, Mock): + # Improving the `reset_mock` signature. + # It is defined on `AsyncMockMixin` with `*args, **kwargs`, which is not ideal. + # But, `NonCallableMock` super-class has the better version. + def reset_mock(self, visited: Any = None, *, return_value: bool = False, side_effect: bool = False) -> None: ... class MagicProxy(Base): name: str @@ -378,3 +384,17 @@ class PropertyMock(Mock): def __set__(self, obj: Any, value: Any) -> None: ... def seal(mock: Any) -> None: ... + +class ThreadingMixin(Base): + DEFAULT_TIMEOUT: ClassVar[float | None] + + def __init__(self, *args: Any, timeout: float | None = ..., **kwargs: Any) -> None: ... + def reset_mock(self, *args: Any, **kwargs: Any) -> None: ... + def wait_until_called(self, *, timeout: float | None = ...) -> None: ... + def wait_until_any_call_with(self, *args: Any, **kwargs: Any) -> None: ... + +class ThreadingMock(ThreadingMixin, MagicMixin, Mock): + # Improving the `reset_mock` signature. + # It is defined on `ThreadingMixin` with `*args, **kwargs`, which is not ideal. + # But, `NonCallableMock` super-class has the better version. + def reset_mock(self, visited: Any = None, *, return_value: bool = False, side_effect: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/METADATA.toml index f3e83f9c4..b0da8c5ae 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/METADATA.toml @@ -1 +1,2 @@ version = "1.0.*" +upstream_repository = "https://github.com/python/mypy_extensions" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/METADATA.toml index 7892149a1..f3c466ea9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/mysqlclient/METADATA.toml @@ -1,4 +1,5 @@ version = "2.2.*" +upstream_repository = "https://github.com/PyMySQL/mysqlclient" [tool.stubtest] apt_dependencies = ["libmariadb-dev"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/METADATA.toml index 29511ee7d..b4cfb9f54 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/netaddr/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/netaddr/METADATA.toml @@ -1 +1,2 @@ version = "0.8.*" +upstream_repository = "https://github.com/drkjam/netaddr" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/METADATA.toml index 67c8b5c62..04672bf34 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/oauthlib/METADATA.toml @@ -1,4 +1,5 @@ version = "3.2.*" +upstream_repository = "https://github.com/oauthlib/oauthlib" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml index 3d4e5c5a3..af3b0230e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml @@ -1,4 +1,5 @@ version = "3.1.*" +upstream_repository = "https://foss.heptapod.net/openpyxl/openpyxl" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi index 86a4d9829..52f5008f7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/_3d.pyi @@ -6,9 +6,11 @@ from openpyxl.chart.picture import PictureOptions from openpyxl.chart.shapes import GraphicalProperties from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedMinMax, _HasTagAndGet +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedMinMax from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + class View3D(Serialisable): tagname: ClassVar[str] rotX: NestedMinMax[float, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi index a6b5e3ee1..862739f2d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/area_chart.pyi @@ -6,8 +6,9 @@ from openpyxl.chart.axis import ChartLines, NumericAxis, SeriesAxis, TextAxis from openpyxl.chart.label import DataLabelList from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedSet, _HasTagAndGet +from openpyxl.descriptors.nested import NestedBool, NestedSet +from ..xml._functions_overloads import _HasTagAndGet from ._chart import ChartBase _AreaChartBaseGrouping: TypeAlias = Literal["percentStacked", "standard", "stacked"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi index 76d938aee..96bdb711c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/axis.pyi @@ -14,11 +14,12 @@ from openpyxl.descriptors.nested import ( NestedMinMax, NestedNoneSet, NestedSet, - _HasTagAndGet, _NestedNoneSetParam, ) from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _ScalingOrientation: TypeAlias = Literal["maxMin", "minMax"] _BaseAxisAxPos: TypeAlias = Literal["b", "l", "r", "t"] _BaseAxisTickMark: TypeAlias = Literal["cross", "in", "out"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi index 2233b5b81..416d58031 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bar_chart.pyi @@ -6,8 +6,9 @@ from openpyxl.chart.axis import ChartLines, NumericAxis, SeriesAxis, TextAxis from openpyxl.chart.label import DataLabelList from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedNoneSet, NestedSet, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedBool, NestedNoneSet, NestedSet, _NestedNoneSetParam +from ..xml._functions_overloads import _HasTagAndGet from ._3d import _3DBase from ._chart import ChartBase diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi index 87868815b..200e6e785 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/bubble_chart.pyi @@ -6,8 +6,9 @@ from openpyxl.chart.axis import NumericAxis from openpyxl.chart.label import DataLabelList from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedMinMax, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedBool, NestedMinMax, NestedNoneSet, _NestedNoneSetParam +from ..xml._functions_overloads import _HasTagAndGet from ._chart import ChartBase _BubbleChartSizeRepresents: TypeAlias = Literal["area", "w"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi index fdc79e6f5..1d8505dce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi @@ -11,10 +11,12 @@ from openpyxl.chart.text import RichText from openpyxl.chart.title import Title from openpyxl.descriptors.base import Alias, String, Typed, _ConvertibleToBool, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedMinMax, NestedNoneSet, NestedString, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedBool, NestedMinMax, NestedNoneSet, NestedString, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.colors import ColorMapping +from ..xml._functions_overloads import _HasTagAndGet + _ChartContainerDispBlanksAs: TypeAlias = Literal["span", "gap", "zero"] class ChartContainer(Serialisable): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi index 791f97e7a..7ff2a1631 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/data_source.pyi @@ -5,9 +5,11 @@ from typing_extensions import Literal from openpyxl.descriptors import Strict from openpyxl.descriptors.base import Alias, Bool, Integer, String, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedInteger, NestedText, _HasTagAndGet +from openpyxl.descriptors.nested import NestedInteger, NestedText from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + class NumFmt(Serialisable): formatCode: String[Literal[False]] sourceLinked: Bool[Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi index 4f2804bc0..5d603d797 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/error_bar.pyi @@ -6,9 +6,11 @@ from openpyxl.chart.data_source import NumDataSource from openpyxl.chart.shapes import GraphicalProperties from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedNoneSet, NestedSet, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedNoneSet, NestedSet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _ErrorBarsErrBarType: TypeAlias = Literal["both", "minus", "plus"] _ErrorBarsErrValType: TypeAlias = Literal["cust", "fixedVal", "percentage", "stdDev", "stdErr"] _ErrorBarsErrDir: TypeAlias = Literal["x", "y"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi index e7396adcc..492be13e5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/label.pyi @@ -6,9 +6,11 @@ from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedNoneSet, NestedString, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedNoneSet, NestedString, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable as Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _DataLabelBaseDLblPos: TypeAlias = Literal["bestFit", "b", "ctr", "inBase", "inEnd", "l", "outEnd", "r", "t"] class _DataLabelBase(Serialisable): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi index 8d5337afc..b0d95f4cc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/layout.pyi @@ -4,9 +4,11 @@ from typing_extensions import Literal, TypeAlias from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedMinMax, NestedNoneSet, NestedSet, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedMinMax, NestedNoneSet, NestedSet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _ManualLayoutMode: TypeAlias = Literal["edge", "factor"] _ManualLayoutLayoutTarget: TypeAlias = Literal["inner", "outer"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi index 6ce837c98..02b441d3e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/legend.pyi @@ -7,9 +7,11 @@ from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedSet, _HasTagAndGet +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedSet from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _LegendLegendPos: TypeAlias = Literal["b", "tr", "l", "r", "t"] class LegendEntry(Serialisable): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi index 344250cfe..0e45dd0a4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/line_chart.pyi @@ -7,8 +7,9 @@ from openpyxl.chart.label import DataLabelList from openpyxl.chart.updown_bars import UpDownBars from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedSet, _HasTagAndGet +from openpyxl.descriptors.nested import NestedBool, NestedSet +from ..xml._functions_overloads import _HasTagAndGet from ._chart import ChartBase _LineChartBaseGrouping: TypeAlias = Literal["percentStacked", "standard", "stacked"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi index e4a158e0d..e3bc7c272 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/marker.pyi @@ -6,9 +6,11 @@ from openpyxl.chart.picture import PictureOptions from openpyxl.chart.shapes import GraphicalProperties from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedMinMax, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedMinMax, NestedNoneSet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _MarkerSymbol: TypeAlias = Literal[ "circle", "dash", "diamond", "dot", "picture", "plus", "square", "star", "triangle", "x", "auto" ] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi index 0de58c404..7720d7515 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/picture.pyi @@ -2,9 +2,11 @@ from typing import ClassVar from typing_extensions import Literal, TypeAlias from openpyxl.descriptors.base import _ConvertibleToBool, _ConvertibleToFloat -from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedNoneSet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _PictureOptionsPictureFormat: TypeAlias = Literal["stretch", "stack", "stackScale"] class PictureOptions(Serialisable): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi index 8d2338cd4..dedc0f826 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pie_chart.pyi @@ -6,17 +6,10 @@ from openpyxl.chart.axis import ChartLines from openpyxl.chart.label import DataLabelList from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToFloat from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import ( - NestedBool, - NestedFloat, - NestedMinMax, - NestedNoneSet, - NestedSet, - _HasTagAndGet, - _NestedNoneSetParam, -) +from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedMinMax, NestedNoneSet, NestedSet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet from ._chart import ChartBase _ProjectedPieChartOfPieType: TypeAlias = Literal["pie", "bar"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi index fd7baf8d6..65245580f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/pivot.pyi @@ -8,9 +8,11 @@ from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedInteger, NestedText, _HasTagAndGet +from openpyxl.descriptors.nested import NestedInteger, NestedText from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + class PivotSource(Serialisable): tagname: ClassVar[str] name: NestedText[str, Literal[False]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi index 539c03fc5..caaa62a0d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/plotarea.pyi @@ -7,9 +7,11 @@ from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, _HasTagAndGet +from openpyxl.descriptors.nested import NestedBool from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + class DataTable(Serialisable): tagname: ClassVar[str] showHorzBorder: NestedBool[Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi index 68d53d622..7e7a1c760 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/radar_chart.pyi @@ -6,8 +6,9 @@ from openpyxl.chart.axis import NumericAxis, TextAxis from openpyxl.chart.label import DataLabelList from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedSet, _HasTagAndGet +from openpyxl.descriptors.nested import NestedBool, NestedSet +from ..xml._functions_overloads import _HasTagAndGet from ._chart import ChartBase _RadarChartRadarStyle: TypeAlias = Literal["standard", "marker", "filled"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi index 59d92ba27..31c88d3be 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/scatter_chart.pyi @@ -6,8 +6,9 @@ from openpyxl.chart.axis import NumericAxis, TextAxis from openpyxl.chart.label import DataLabelList from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedBool, NestedNoneSet, _NestedNoneSetParam +from ..xml._functions_overloads import _HasTagAndGet from ._chart import ChartBase as ChartBase _ScatterChartScatterStyle: TypeAlias = Literal["line", "lineMarker", "marker", "smooth", "smoothMarker"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi index b87eac1d9..1e26d34ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/series.pyi @@ -11,9 +11,11 @@ from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.trendline import Trendline from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedNoneSet, NestedText, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedBool, NestedInteger, NestedNoneSet, NestedText, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _SeriesShape: TypeAlias = Literal["cone", "coneToMax", "box", "cylinder", "pyramid", "pyramidToMax"] attribute_mapping: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi index f973f3004..94da38a6b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/shapes.pyi @@ -3,12 +3,14 @@ from typing import ClassVar from typing_extensions import Literal, TypeAlias from openpyxl.descriptors.base import Alias, NoneSet, Typed, _ConvertibleToBool -from openpyxl.descriptors.nested import EmptyTag, _HasTagAndGet +from openpyxl.descriptors.nested import EmptyTag from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.fill import GradientFillProperties, PatternFillProperties from openpyxl.drawing.geometry import CustomGeometry2D, PresetGeometry2D, Scene3D, Shape3D, Transform2D from openpyxl.drawing.line import LineProperties +from ..xml._functions_overloads import _HasTagAndGet + _GraphicalPropertiesBwMode: TypeAlias = Literal[ "clr", "auto", "gray", "ltGray", "invGray", "grayWhite", "blackGray", "blackWhite", "black", "white", "hidden" ] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi index 4178fcf21..8653f0033 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/surface_chart.pyi @@ -6,9 +6,10 @@ from openpyxl.chart.axis import NumericAxis, SeriesAxis, TextAxis from openpyxl.chart.shapes import GraphicalProperties from openpyxl.descriptors.base import Alias, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedInteger, _HasTagAndGet +from openpyxl.descriptors.nested import NestedBool, NestedInteger from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet from ._3d import _3DBase from ._chart import ChartBase diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi index 5159ccb32..0ba2a1f9b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/title.pyi @@ -8,9 +8,11 @@ from openpyxl.chart.text import RichText, Text from openpyxl.descriptors import Strict, Typed from openpyxl.descriptors.base import Alias, _ConvertibleToBool from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, _HasTagAndGet +from openpyxl.descriptors.nested import NestedBool from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + class Title(Serialisable): tagname: ClassVar[str] tx: Typed[Text, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi index 409b34b25..3372a514b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/trendline.pyi @@ -8,9 +8,11 @@ from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText, Text from openpyxl.descriptors.base import Alias, String, Typed, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedInteger, NestedSet, _HasTagAndGet +from openpyxl.descriptors.nested import NestedBool, NestedFloat, NestedInteger, NestedSet from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _TrendlineTrendlineType: TypeAlias = Literal["exp", "linear", "log", "movingAvg", "poly", "power"] class TrendlineLabel(Serialisable): diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/shape_writer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/shape_writer.pyi index df71fe9d3..22ac968ef 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/shape_writer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/comments/shape_writer.pyi @@ -1,4 +1,10 @@ from _typeshed import Incomplete +from typing import Any +from typing_extensions import TypeAlias + +from ..xml._functions_overloads import _lxml_Element, _ParentElement + +_RootElement: TypeAlias = _ParentElement[Any] | _lxml_Element vmlns: str officens: str @@ -9,6 +15,7 @@ class ShapeWriter: vml_path: Incomplete comments: Incomplete def __init__(self, comments) -> None: ... - def add_comment_shapetype(self, root) -> None: ... - def add_comment_shape(self, root, idx, coord, height, width) -> None: ... - def write(self, root): ... + def add_comment_shapetype(self, root: _RootElement) -> None: ... + def add_comment_shape(self, root: _RootElement, idx, coord, height, width) -> None: ... + # Any object missing "findall" is replaced by an Element + def write(self, root: _RootElement | None) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi index 816ea570f..caabf89d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/nested.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete, Unused -from collections.abc import Callable, Iterable -from typing import Any, ClassVar, NoReturn, Protocol, TypeVar, overload +from collections.abc import Iterable +from typing import Any, ClassVar, NoReturn, overload from typing_extensions import Literal, TypeAlias from openpyxl.descriptors import Strict @@ -9,19 +9,9 @@ from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.fill import Blip from openpyxl.xml.functions import Element +from ..xml._functions_overloads import _HasTagAndGet, _HasTagAndText from .base import _M, _N, _T, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt, _ExpectedTypeParam -_T_co = TypeVar("_T_co", covariant=True) - -# Usually an Element() from either lxml or xml.etree (has a 'tag' element) -class _HasTagAndGet(Protocol[_T_co]): - tag: Any # str | None | Callable[..., Any] - def get(self, __value: str) -> _T_co | None: ... - -class _HasTagAndText(Protocol): - tag: str | Callable[..., Any] - text: str - _NestedNoneSetParam: TypeAlias = _HasTagAndGet[_T | Literal["none"] | None] | _T | Literal["none"] | None # NOTE: type: ignore[misc]: Class does not reimplement the relevant methods, so runtime also has incompatible supertypes diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi index 6f4158756..d2ecf72e0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi @@ -4,6 +4,8 @@ from typing_extensions import Final from openpyxl.descriptors import MetaSerialisable +from ..xml._functions_overloads import _HasTagAndTextAndAttrib + KEYWORDS: Final[frozenset[str]] seq_types: Final[tuple[type[list[Any]], type[tuple[Any, ...]]]] @@ -19,7 +21,7 @@ class Serialisable(metaclass=MetaSerialisable): def tagname(self) -> str | NoReturn: ... namespace: ClassVar[str | None] @classmethod - def from_tree(cls, node): ... + def from_tree(cls, node: _HasTagAndTextAndAttrib): ... def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None, namespace: str | None = None): ... def __iter__(self): ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/slots.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/slots.pyi index 87f6a0755..ebfc3090e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/slots.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/slots.pyi @@ -1,2 +1,2 @@ class AutoSlotProperties(type): - def __new__(cls, classname, bases, dictionary): ... + def __new__(mcl, classname, bases, dictionary): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi index 3ce090a39..889d7de2a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/colors.pyi @@ -5,9 +5,11 @@ from typing_extensions import Final, Literal, TypeAlias from openpyxl.descriptors import Strict, Typed from openpyxl.descriptors.base import Alias, Integer, MinMax, Set, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import EmptyTag, NestedInteger, NestedNoneSet, NestedValue, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import EmptyTag, NestedInteger, NestedNoneSet, NestedValue, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _ColorSetType: TypeAlias = Literal[ "dk1", "lt1", "dk2", "lt2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hlink", "folHlink" ] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi index f41624831..826d0d104 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/fill.pyi @@ -15,7 +15,7 @@ from openpyxl.descriptors.base import ( _ConvertibleToInt, ) from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedNoneSet, NestedValue, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import NestedNoneSet, NestedValue, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.colors import ColorChoice, HSLColor, RGBPercent as _RGBPercent, SchemeColor, SystemColor, _PresetColors from openpyxl.drawing.effect import ( @@ -38,6 +38,8 @@ from openpyxl.drawing.effect import ( TintEffect, ) +from ..xml._functions_overloads import _HasTagAndGet + _PatternFillPropertiesPrst: TypeAlias = Literal[ "pct5", "pct10", diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi index 325f59930..8a7aba534 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/line.pyi @@ -13,10 +13,12 @@ from openpyxl.descriptors.base import ( _ConvertibleToInt, ) from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import EmptyTag, NestedInteger, NestedNoneSet, _HasTagAndGet, _NestedNoneSetParam +from openpyxl.descriptors.nested import EmptyTag, NestedInteger, NestedNoneSet, _NestedNoneSetParam from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.fill import GradientFillProperties, PatternFillProperties +from ..xml._functions_overloads import _HasTagAndGet + _LineEndPropertiesType: TypeAlias = Literal["none", "triangle", "stealth", "diamond", "oval", "arrow"] _LineEndPropertiesWLen: TypeAlias = Literal["sm", "med", "lg"] _LinePropertiesCap: TypeAlias = Literal["rnd", "sq", "flat"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi index c14018576..672b0d26f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/drawing/text.pyi @@ -16,13 +16,15 @@ from openpyxl.descriptors.base import ( _ConvertibleToInt, ) from openpyxl.descriptors.excel import Coordinate, ExtensionList -from openpyxl.descriptors.nested import EmptyTag, NestedBool, NestedInteger, NestedText, NestedValue, _HasTagAndGet +from openpyxl.descriptors.nested import EmptyTag, NestedBool, NestedInteger, NestedText, NestedValue from openpyxl.descriptors.serialisable import Serialisable from openpyxl.drawing.effect import Color, EffectContainer, EffectList from openpyxl.drawing.fill import Blip, BlipFillProperties, GradientFillProperties, PatternFillProperties from openpyxl.drawing.geometry import Scene3D from openpyxl.drawing.line import LineProperties +from ..xml._functions_overloads import _HasTagAndGet + _CharacterPropertiesU: TypeAlias = Literal[ "words", "sng", diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi index 635b93a5b..c900dbf96 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/cache.pyi @@ -16,11 +16,13 @@ from openpyxl.descriptors.base import ( _ConvertibleToInt, ) from openpyxl.descriptors.excel import ExtensionList -from openpyxl.descriptors.nested import NestedInteger, _HasTagAndGet +from openpyxl.descriptors.nested import NestedInteger from openpyxl.descriptors.serialisable import Serialisable from openpyxl.pivot.fields import Error, Missing, Number, Text, TupleList from openpyxl.pivot.table import PivotArea +from ..xml._functions_overloads import _HasTagAndGet + _RangePrGroupBy: TypeAlias = Literal["range", "seconds", "minutes", "hours", "days", "months", "quarters", "years"] _CacheSourceType: TypeAlias = Literal["worksheet", "external", "consolidation", "scenario"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi index b6dbd7859..923d8a850 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/styles/fonts.pyi @@ -10,11 +10,12 @@ from openpyxl.descriptors.nested import ( NestedMinMax, NestedNoneSet, NestedString, - _HasTagAndGet, _NestedNoneSetParam, ) from openpyxl.descriptors.serialisable import Serialisable +from ..xml._functions_overloads import _HasTagAndGet + _FontU: TypeAlias = Literal["single", "double", "singleAccounting", "doubleAccounting"] _FontVertAlign: TypeAlias = Literal["superscript", "subscript", "baseline"] _FontScheme: TypeAlias = Literal["major", "minor"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi index a76d960d6..841132661 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_writer.pyi @@ -1,5 +1,16 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, ReadableBuffer, StrPath, Unused from collections.abc import Generator +from typing import Protocol +from typing_extensions import TypeAlias + +# WorksheetWriter.read has an explicit BytesIO branch. Let's make sure this protocol is viable for BytesIO too. +class _SupportsCloseAndWrite(Protocol): + def write(self, __buffer: ReadableBuffer) -> Unused: ... + def close(self) -> Unused: ... + +# et_xmlfile.xmlfile accepts a str | _SupportsCloseAndWrite +# lxml.etree.xmlfile should accept a StrPath | _SupportsClose https://lxml.de/api/lxml.etree.xmlfile-class.html +_OutType: TypeAlias = _SupportsCloseAndWrite | StrPath ALL_TEMP_FILES: list[str] @@ -7,9 +18,9 @@ def create_temporary_file(suffix: str = ""): ... class WorksheetWriter: ws: Incomplete - out: Incomplete + out: _OutType xf: Incomplete - def __init__(self, ws, out: Incomplete | None = None) -> None: ... + def __init__(self, ws, out: _OutType | None = None) -> None: ... def write_properties(self) -> None: ... def write_dimensions(self) -> None: ... def write_format(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/__init__.pyi index 517f09dd4..df18f5d1f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/__init__.pyi @@ -1,11 +1,11 @@ from typing_extensions import Final -def lxml_available(): ... -def lxml_env_set(): ... +def lxml_available() -> bool: ... +def lxml_env_set() -> bool: ... LXML: Final[bool] -def defusedxml_available(): ... -def defusedxml_env_set(): ... +def defusedxml_available() -> bool: ... +def defusedxml_env_set() -> bool: ... DEFUSEDXML: Final[bool] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/_functions_overloads.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/_functions_overloads.pyi new file mode 100644 index 000000000..be1fb7a04 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/_functions_overloads.pyi @@ -0,0 +1,117 @@ +# This file does not exist at runtime. It is a helper file to overload imported functions in openpyxl.xml.functions + +import sys +from _typeshed import Incomplete, ReadableBuffer +from collections.abc import Iterable, Iterator, Mapping, Sequence +from typing import Any, Protocol, TypeVar, overload +from typing_extensions import TypeAlias +from xml.etree.ElementTree import Element, ElementTree, QName, XMLParser, _FileRead + +_T = TypeVar("_T") +_T_co = TypeVar("_T_co", covariant=True) + +# Useful protocols, see import comment in openpyxl/xml/functions.pyi + +# Comment from openpyxl.cell.rich_text.py +# Usually an Element() from either lxml or xml.etree (has a 'tag' element) +class _HasTag(Protocol): + tag: Any # AnyOf[str, None, Callable[..., AnyOf[str, None]]] + +class _HasText(Protocol): + text: str + +class _HasTagAndGet(_HasTag, Protocol[_T_co]): + def get(self, __value: str) -> _T_co | None: ... + +class _HasTagAndText(_HasTag, _HasText, Protocol): ... # noqa: Y046 + +class _HasTagAndTextAndAttrib(_HasTag, _HasText, Protocol): # noqa: Y046 + attrib: Iterable[Any] # AnyOf[dict[str, str], Iterable[tuple[str, str]]] + +class _ParentElement(Protocol[_T]): + def makeelement(self, __tag: str, __attrib: dict[str, str]) -> _T: ... + def append(self, __element: _T) -> object: ... + +# from lxml.etree import _Element +_lxml_Element: TypeAlias = Element # noqa: Y042 +# from lxml.etree import _ElementTree +_lxml_ElementTree: TypeAlias = ElementTree # noqa: Y042 +# from lxml.etree import QName +_lxml_QName: TypeAlias = QName # noqa: Y042 + +# from xml.etree import fromstring +@overload +def SubElement(parent: _ParentElement[_T], tag: str, attrib: dict[str, str] = ..., **extra: str) -> _T: ... + +# from lxml.etree import fromstring +@overload +def SubElement( + _parent: _lxml_Element, # This would be preferable as a protocol, but it's a C-Extension + _tag: str | bytes | _lxml_QName, + attrib: dict[str, str] | dict[bytes, bytes] | None = ..., + nsmap: Mapping[str, str] | None = ..., + **extra: str | bytes, +) -> _lxml_ElementTree: ... + +# from xml.etree.ElementTree import fromstring +@overload +def fromstring(text: str | ReadableBuffer, parser: XMLParser | None = None) -> Element: ... + +# from lxml.etree import fromstring +# But made partial, removing parser arg +@overload +def fromstring(text: str | bytes, *, base_url: str | bytes = ...) -> _lxml_Element: ... # type: ignore[misc] # Overlap with incompatible return types + +# from defusedxml.ElementTree import fromstring +@overload +def fromstring(text: str, forbid_dtd: bool = False, forbid_entities: bool = True, forbid_external: bool = True) -> int: ... + +# from xml.etree.ElementTree import tostring +# But made partial, removing encoding arg +if sys.version_info >= (3, 8): + @overload + def tostring( + element: Element, + method: str | None = "xml", + *, + xml_declaration: bool | None = None, + default_namespace: str | None = ..., + short_empty_elements: bool = ..., + ) -> str: ... + +else: + @overload + def tostring(element: Element, method: str | None = ..., *, short_empty_elements: bool = ...) -> str: ... + +# from lxml.etree import Element +# But made partial, removing encoding arg +@overload +def tostring( + element_or_tree: _lxml_Element | _lxml_ElementTree, + method: str = ..., + xml_declaration: bool = ..., + pretty_print: bool = ..., + with_tail: bool = ..., + standalone: bool = ..., + doctype: str = ..., + exclusive: bool = ..., + with_comments: bool = ..., + inclusive_ns_prefixes: Incomplete = ..., +) -> bytes: ... + +# from xml.etree.ElementTree import iterparse +@overload +def iterparse( + source: _FileRead, events: Sequence[str] | None = None, parser: XMLParser | None = None +) -> Iterator[tuple[str, Any]]: ... + +# from defusedxml.ElementTree import iterparse +@overload +def iterparse( + source: _FileRead, + events: Sequence[str] | None = None, + parser: XMLParser | None = None, + forbid_dtd: bool = False, + forbid_entities: bool = True, + forbid_external: bool = True, +) -> Iterator[tuple[str, Any]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi index 6abacd8af..8b6089eb9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/functions.pyi @@ -1,8 +1,28 @@ +from _typeshed import Incomplete from re import Pattern from typing_extensions import Final -from xml.etree.ElementTree import Element as Element # possibly also imported from lxml + +# Can actually be imported from a mix of xml, lxml, et_xmlfile as defusedxml +# But et_xmlfile is untyped. openpyxl does not directly depend on lxml/lxml-stubs. +# And forcing a dependency on defusedxml felt overkill as it just wraps xml +# So for typing purposes, let's pretend xml is the only dependency. +# Prefer using protocols over these for parameters. +from xml.etree.ElementTree import Element as Element, QName as QName + +from ._functions_overloads import ( + SubElement as SubElement, + _HasTag, + _HasText, + fromstring as fromstring, + iterparse as iterparse, + tostring as tostring, +) + +# from lxml.etree import xmlfile +# from et_xmlfile import xmlfile +xmlfile: Incomplete NS_REGEX: Final[Pattern[str]] -def localname(node): ... -def whitespace(node) -> None: ... +def localname(node: _HasTag) -> str: ... +def whitespace(node: _HasText) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/METADATA.toml index 43c0d301d..70555adff 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/opentracing/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/opentracing/METADATA.toml @@ -1,4 +1,5 @@ version = "2.4.*" +upstream_repository = "https://github.com/opentracing/opentracing-python" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml index 20ba790a4..5379b3f6e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml @@ -1,4 +1,5 @@ version = "3.2.*" +upstream_repository = "https://github.com/paramiko/paramiko" # Requires a version of cryptography where cryptography.hazmat.primitives.ciphers.Cipher is generic requires = ["cryptography>=37.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/METADATA.toml index 5c7ed21e8..698a927e8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/parsimonious/METADATA.toml @@ -1 +1,2 @@ version = "0.10.*" +upstream_repository = "https://github.com/erikrose/parsimonious" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passpy/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/passpy/METADATA.toml index f3e83f9c4..106c6bf5e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passpy/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/passpy/METADATA.toml @@ -1 +1,2 @@ version = "1.0.*" +upstream_repository = "https://github.com/bfrascher/passpy" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/peewee/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/peewee/METADATA.toml index c1f03f2c7..5adfe58b8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/peewee/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/peewee/METADATA.toml @@ -1 +1,2 @@ version = "3.16.*" +upstream_repository = "https://github.com/coleifer/peewee" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/METADATA.toml index 361474831..6e0374aed 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pep8-naming/METADATA.toml @@ -1,4 +1,5 @@ version = "0.13.*" +upstream_repository = "https://github.com/PyCQA/pep8-naming" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pika/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pika/METADATA.toml index d1d388dbd..e3b0e6a04 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pika/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pika/METADATA.toml @@ -1,4 +1,5 @@ version = "1.3.*" +upstream_repository = "https://github.com/pika/pika" stub_distribution = "types-pika-ts" # https://github.com/python/typeshed/issues/9246 extra_description = """\ The `types-pika` package contains alternate, more complete type stubs, that \ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/playsound/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/playsound/METADATA.toml index 3ea18392d..14175f7d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/playsound/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/playsound/METADATA.toml @@ -1 +1,2 @@ version = "1.3.*" +upstream_repository = "https://github.com/TaylorSMarks/playsound" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pluggy/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/METADATA.toml new file mode 100644 index 000000000..29b734085 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/METADATA.toml @@ -0,0 +1,2 @@ +version = "1.2.0" +upstream_repository = "https://github.com/pytest-dev/pluggy" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/__init__.pyi new file mode 100644 index 000000000..5a4d250a5 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/__init__.pyi @@ -0,0 +1,5 @@ +from ._hooks import HookimplMarker as HookimplMarker, HookspecMarker as HookspecMarker +from ._manager import PluginManager as PluginManager, PluginValidationError as PluginValidationError +from ._result import HookCallError as HookCallError + +__version__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_hooks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_hooks.pyi new file mode 100644 index 000000000..5d8596a06 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_hooks.pyi @@ -0,0 +1,116 @@ +from collections.abc import Callable, Generator, Mapping, Sequence +from types import ModuleType +from typing import Any, TypeVar, overload +from typing_extensions import TypeAlias, TypedDict + +from ._result import _Result + +_T = TypeVar("_T") +_F = TypeVar("_F", bound=Callable[..., object]) +_Namespace: TypeAlias = ModuleType | type +_Plugin: TypeAlias = object +_HookExec: TypeAlias = Callable[[str, Sequence[HookImpl], Mapping[str, object], bool], object | list[object]] +_HookImplFunction: TypeAlias = Callable[..., _T | Generator[None, _Result[_T], None]] + +class _HookSpecOpts(TypedDict): + firstresult: bool + historic: bool + warn_on_impl: Warning | None + +class _HookImplOpts(TypedDict): + wrapper: bool + hookwrapper: bool + optionalhook: bool + tryfirst: bool + trylast: bool + specname: str | None + +class HookspecMarker: + project_name: str + def __init__(self, project_name: str) -> None: ... + @overload + def __call__( + self, function: _F, firstresult: bool = False, historic: bool = False, warn_on_impl: Warning | None = None + ) -> _F: ... + @overload + def __call__( + self, function: None = None, firstresult: bool = False, historic: bool = False, warn_on_impl: Warning | None = None + ) -> Callable[[_F], _F]: ... + +class HookimplMarker: + project_name: str + def __init__(self, project_name: str) -> None: ... + @overload + def __call__( + self, + function: _F, + hookwrapper: bool = False, + optionalhook: bool = False, + tryfirst: bool = False, + trylast: bool = False, + specname: str | None = None, + wrapper: bool = False, + ) -> _F: ... + @overload + def __call__( + self, + function: None = None, + hookwrapper: bool = False, + optionalhook: bool = False, + tryfirst: bool = False, + trylast: bool = False, + specname: str | None = None, + wrapper: bool = False, + ) -> Callable[[_F], _F]: ... + +def normalize_hookimpl_opts(opts: _HookImplOpts) -> None: ... +def varnames(func: object) -> tuple[tuple[str, ...], tuple[str, ...]]: ... + +class _HookRelay: + def __getattr__(self, name: str) -> _HookCaller: ... + +class _HookCaller: + name: str + spec: HookSpec | None + def __init__( + self, + name: str, + hook_execute: _HookExec, + specmodule_or_class: _Namespace | None = None, + spec_opts: _HookSpecOpts | None = None, + ) -> None: ... + def has_spec(self) -> bool: ... + def set_specification(self, specmodule_or_class: _Namespace, spec_opts: _HookSpecOpts) -> None: ... + def is_historic(self) -> bool: ... + def get_hookimpls(self) -> list[HookImpl]: ... + def __call__(self, **kwargs: object) -> Any: ... + def call_historic( + self, result_callback: Callable[[Any], None] | None = None, kwargs: Mapping[str, object] | None = None + ) -> None: ... + def call_extra(self, methods: Sequence[Callable[..., object]], kwargs: Mapping[str, object]) -> Any: ... + +class HookImpl: + function: _HookImplFunction[object] + plugin: _Plugin + opts: _HookImplOpts + plugin_name: str + wrapper: bool + hookwrapper: bool + optionalhook: bool + tryfirst: bool + trylast: bool + argnames: tuple[str, ...] + kwargnames: tuple[str, ...] + def __init__( + self, plugin: _Plugin, plugin_name: str, function: _HookImplFunction[object], hook_impl_opts: _HookImplOpts + ) -> None: ... + +class HookSpec: + namespace: _Namespace + function: Callable[..., object] + name: str + opts: _HookSpecOpts + warn_on_impl: Warning | None + argnames: tuple[str, ...] + kwargnames: tuple[str, ...] + def __init__(self, namespace: _Namespace, name: str, opts: _HookSpecOpts) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_manager.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_manager.pyi new file mode 100644 index 000000000..7bb775202 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_manager.pyi @@ -0,0 +1,65 @@ +import sys +from _typeshed import Incomplete +from collections.abc import Callable, Iterable, Mapping, Sequence +from typing import Any +from typing_extensions import TypeAlias + +from ._hooks import ( + HookImpl as HookImpl, + HookSpec as HookSpec, + _HookCaller, + _HookImplOpts, + _HookRelay, + _HookSpecOpts, + _Namespace, + _Plugin, + normalize_hookimpl_opts as normalize_hookimpl_opts, +) +from ._result import _Result as _Result +from ._tracing import TagTracerSub + +if sys.version_info >= (3, 8): + from importlib.metadata import Distribution +else: + Distribution: TypeAlias = Any + +_BeforeTrace: TypeAlias = Callable[[str, Sequence[HookImpl], Mapping[str, Any]], None] +_AfterTrace: TypeAlias = Callable[[_Result[Any], str, Sequence[HookImpl], Mapping[str, Any]], None] + +class PluginValidationError(Exception): + plugin: _Plugin + def __init__(self, plugin: _Plugin, message: str) -> None: ... + +class DistFacade: + def __init__(self, dist: Distribution) -> None: ... + @property + def project_name(self) -> str: ... + def __getattr__(self, attr: str, default: Incomplete | None = None) -> Any: ... + def __dir__(self) -> list[str]: ... + +class PluginManager: + project_name: str + trace: TagTracerSub + hook: _HookRelay + def __init__(self, project_name: str) -> None: ... + def register(self, plugin: _Plugin, name: str | None = None) -> str | None: ... + def parse_hookimpl_opts(self, plugin: _Plugin, name: str) -> _HookImplOpts | None: ... + def unregister(self, plugin: _Plugin | None = None, name: str | None = None) -> _Plugin: ... + def set_blocked(self, name: str) -> None: ... + def is_blocked(self, name: str) -> bool: ... + def add_hookspecs(self, module_or_class: _Namespace) -> None: ... + def parse_hookspec_opts(self, module_or_class: _Namespace, name: str) -> _HookSpecOpts | None: ... + def get_plugins(self) -> set[Any]: ... + def is_registered(self, plugin: _Plugin) -> bool: ... + def get_canonical_name(self, plugin: _Plugin) -> str: ... + def get_plugin(self, name: str) -> Any | None: ... + def has_plugin(self, name: str) -> bool: ... + def get_name(self, plugin: _Plugin) -> str | None: ... + def check_pending(self) -> None: ... + def load_setuptools_entrypoints(self, group: str, name: str | None = None) -> int: ... + def list_plugin_distinfo(self) -> list[tuple[_Plugin, DistFacade]]: ... + def list_name_plugin(self) -> list[tuple[str, _Plugin]]: ... + def get_hookcallers(self, plugin: _Plugin) -> list[_HookCaller] | None: ... + def add_hookcall_monitoring(self, before: _BeforeTrace, after: _AfterTrace) -> Callable[[], None]: ... + def enable_tracing(self) -> Callable[[], None]: ... + def subset_hook_caller(self, name: str, remove_plugins: Iterable[_Plugin]) -> _HookCaller: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_result.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_result.pyi new file mode 100644 index 000000000..d92990612 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_result.pyi @@ -0,0 +1,19 @@ +from _typeshed import ExcInfo +from collections.abc import Callable +from typing import Generic, TypeVar + +_T = TypeVar("_T") + +class HookCallError(Exception): ... + +class _Result(Generic[_T]): + def __init__(self, result: _T | None, exception: BaseException | None) -> None: ... + @property + def excinfo(self) -> ExcInfo | None: ... + @property + def exception(self) -> BaseException | None: ... + @classmethod + def from_call(cls, func: Callable[[], _T]) -> _Result[_T]: ... + def force_result(self, result: _T) -> None: ... + def force_exception(self, exception: BaseException) -> None: ... + def get_result(self) -> _T: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_tracing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_tracing.pyi new file mode 100644 index 000000000..8f441007b --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/pluggy/pluggy/_tracing.pyi @@ -0,0 +1,20 @@ +from collections.abc import Callable +from typing import Any +from typing_extensions import TypeAlias + +_Writer: TypeAlias = Callable[[str], object] +_Processor: TypeAlias = Callable[[tuple[str, ...], tuple[Any, ...]], None] + +class TagTracer: + indent: int + def __init__(self) -> None: ... + def get(self, name: str) -> TagTracerSub: ... + def setwriter(self, writer: _Writer | None) -> None: ... + def setprocessor(self, tags: str | tuple[str, ...], processor: _Processor) -> None: ... + +class TagTracerSub: + root: TagTracer + tags: tuple[str, ...] + def __init__(self, root: TagTracer, tags: tuple[str, ...]) -> None: ... + def __call__(self, *args: object) -> None: ... + def get(self, name: str) -> TagTracerSub: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/polib/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/polib/METADATA.toml index 249b0a7c0..5b7355447 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/polib/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/polib/METADATA.toml @@ -1 +1,2 @@ version = "1.2.*" +upstream_repository = "https://github.com/izimobil/polib" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/enum_type_wrapper.pyi b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/enum_type_wrapper.pyi index 18da7c230..95b5b4bb2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/enum_type_wrapper.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/internal/enum_type_wrapper.pyi @@ -6,7 +6,10 @@ _V = TypeVar("_V", bound=int) # Expose a generic version so that those using mypy-protobuf # can get autogenerated NewType wrapper around the int values -class _EnumTypeWrapper(Generic[_V]): +# NOTE: this doesn't actually inherit from type, +# but mypy doesn't support metaclasses that don't inherit from type, +# so we pretend it does in the stubs... +class _EnumTypeWrapper(type, Generic[_V]): DESCRIPTOR: EnumDescriptor def __init__(self, enum_type: EnumDescriptor) -> None: ... def Name(self, number: _V) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psutil/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/psutil/METADATA.toml index 8d29ce528..9cd22571b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psutil/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/psutil/METADATA.toml @@ -1,4 +1,5 @@ version = "5.9.*" +upstream_repository = "https://github.com/giampaolo/psutil" [tool.stubtest] platforms = ["darwin", "linux", "win32"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/METADATA.toml index 4a249abf8..d5b778dd3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/psycopg2/METADATA.toml @@ -1,4 +1,5 @@ version = "2.9.*" +upstream_repository = "https://github.com/psycopg/psycopg2" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml index 02e6421bb..46979c185 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyOpenSSL/METADATA.toml @@ -1,4 +1,5 @@ version = "23.2.*" +upstream_repository = "https://github.com/pyca/pyopenssl" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/METADATA.toml index bad265e4f..e182e92b7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyRFC3339/METADATA.toml @@ -1 +1,2 @@ version = "1.1" +upstream_repository = "https://github.com/kurtraschke/pyRFC3339" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/METADATA.toml index 582104d3a..3effa864a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyasn1/METADATA.toml @@ -1 +1,2 @@ version = "0.4.*" +upstream_repository = "https://github.com/pyasn1/pyasn1" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/METADATA.toml index 58bc38349..3dd212383 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pycocotools/METADATA.toml @@ -1 +1,2 @@ version = "2.0.*" +upstream_repository = "https://github.com/ppwwyyxx/cocoapi" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyfarmhash/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyfarmhash/METADATA.toml index d25c8f7d6..c488b9db5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyfarmhash/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyfarmhash/METADATA.toml @@ -1 +1,2 @@ version = "0.3.*" +upstream_repository = "https://github.com/veelion/python-farmhash" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml index c3490c9bb..7e4226433 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml @@ -1,4 +1,5 @@ version = "3.0.*" +upstream_repository = "https://github.com/PyCQA/pyflakes" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml index 41fc4b3ec..66f637e9c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyinstaller/METADATA.toml @@ -1,2 +1,3 @@ version = "5.13.*" +upstream_repository = "https://github.com/pyinstaller/pyinstaller" requires = ["types-setuptools"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pynput/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pynput/METADATA.toml index c1e49ec2b..82b6146bc 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pynput/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pynput/METADATA.toml @@ -1,4 +1,5 @@ version = "1.7.*" +upstream_repository = "https://github.com/moses-palmer/pynput" [tool.stubtest] platforms = ["darwin", "linux", "win32"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/METADATA.toml index 1e5d0af9f..77a573699 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyserial/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyserial/METADATA.toml @@ -1,4 +1,5 @@ version = "3.5.*" +upstream_repository = "https://github.com/pyserial/pyserial" [tool.stubtest] platforms = ["darwin", "linux", "win32"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pysftp/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pysftp/METADATA.toml index 26d6d1cac..926abe3cd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pysftp/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pysftp/METADATA.toml @@ -1,2 +1,3 @@ version = "0.2.*" +upstream_repository = "https://bitbucket.org/dundeemt/pysftp" requires = ["types-paramiko"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pytest-lazy-fixture/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pytest-lazy-fixture/METADATA.toml index 03031f1e9..68ac0cb52 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pytest-lazy-fixture/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pytest-lazy-fixture/METADATA.toml @@ -1 +1,2 @@ version = "0.6.*" +upstream_repository = "https://github.com/tvorog/pytest-lazy-fixture" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/METADATA.toml index 5952f2b17..2accac2d5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/METADATA.toml @@ -1 +1,2 @@ -version = "2.7.*" +version = "3.0.*" +upstream_repository = "https://gitlab.com/doctormo/python-crontab" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/crontab.pyi b/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/crontab.pyi index 7dbeb53eb..edf4ebf30 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/crontab.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-crontab/crontab.pyi @@ -1,13 +1,13 @@ import re import subprocess -from _typeshed import Incomplete, Unused +from _typeshed import Incomplete from builtins import range as _range from collections import OrderedDict from collections.abc import Callable, Generator, Iterable, Iterator from datetime import datetime from logging import Logger from types import TracebackType -from typing import Any +from typing import Any, overload from typing_extensions import Self, SupportsIndex, TypeAlias from cronlog import CronLog @@ -32,7 +32,18 @@ CRON_COMMAND: str SHELL: str current_user: Callable[[], str | None] -def open_pipe(cmd: str, *args: str, **flags: str) -> subprocess.Popen[Any]: ... +class Process: + env: subprocess._ENV | None + args: tuple[str, ...] + has_run: bool + stdout: str | None + stderr: str | None + returncode: int | None + # `posix` and `env` are known special kwargs: + def __init__(self, cmd: str, *args: str, posix: bool = ..., env: subprocess._ENV | None = None, **flags: object) -> None: ... + def run(self) -> Self: ... + def __int__(self) -> int: ... # technically, it can return `None` before `run` is called + def __eq__(self, other: object) -> bool: ... class CronTab: lines: list[str | CronItem] | None @@ -69,8 +80,7 @@ class CronTab: # Usually `kwargs` are just `now: datetime | None`, but technically this can # work for `CronItem` subclasses, which might define other kwargs. def run_pending(self, **kwargs: Any) -> Iterator[str]: ... - # There are two known kwargs and others are unused: - def run_scheduler(self, timeout: int = ..., *, warp: object = ..., cadence: int = ..., **kwargs: Unused) -> Iterator[str]: ... + def run_scheduler(self, timeout: int = -1, cadence: int = 60, warp: bool = False) -> Iterator[str]: ... def render(self, errors: bool = ..., specials: bool | None = ...) -> str: ... def new( self, @@ -132,6 +142,19 @@ class CronItem: def frequency_per_year(self, year: int | None = ...) -> int: ... def frequency_per_day(self) -> int: ... def frequency_per_hour(self) -> int: ... + def frequency_at_year(self, year: int | None = None) -> int: ... + @overload + def frequency_at_month(self, year: int, month: int) -> int: ... + @overload + def frequency_at_month(self, year: None = None, month: None = None) -> int: ... + @overload + def frequency_at_day(self, year: int, month: int, day: int) -> int: ... + @overload + def frequency_at_day(self, year: None = None, month: None = None, day: None = None) -> int: ... + @overload + def frequency_at_hour(self, year: int, month: int, day: int, hour: int) -> int: ... + @overload + def frequency_at_hour(self, year: None = None, month: None = None, day: None = None, hour: None = None) -> int: ... def run_pending(self, now: datetime | None = ...) -> int | str: ... def run(self) -> str: ... # TODO: use types from `croniter` module here: @@ -185,6 +208,19 @@ class CronSlices(list[CronSlice]): def frequency_per_year(self, year: int | None = ...) -> int: ... def frequency_per_day(self) -> int: ... def frequency_per_hour(self) -> int: ... + def frequency_at_year(self, year: int | None = None) -> int: ... + @overload + def frequency_at_month(self, year: int, month: int) -> int: ... + @overload + def frequency_at_month(self, year: None = None, month: None = None) -> int: ... + @overload + def frequency_at_day(self, year: int, month: int, day: int) -> int: ... + @overload + def frequency_at_day(self, year: None = None, month: None = None, day: None = None) -> int: ... + @overload + def frequency_at_hour(self, year: int, month: int, day: int, hour: int) -> int: ... + @overload + def frequency_at_hour(self, year: None = None, month: None = None, day: None = None, hour: None = None) -> int: ... def __eq__(self, arg: object) -> bool: ... class SundayError(KeyError): ... @@ -209,7 +245,7 @@ class CronSlice: def __init__(self, info: int | dict[str, Any], value: str | None = ...) -> None: ... def __hash__(self) -> int: ... def parse(self, value: str | None) -> None: ... - def render(self, resolve: bool = ..., specials: bool = ...) -> str: ... + def render(self, resolve: bool = False) -> str: ... def __eq__(self, arg: object) -> bool: ... def every(self, n_value: int, also: bool = ...) -> _Part: ... # The only known kwarg, others are unused, diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/METADATA.toml index 744a8cd91..e31cadf8b 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-datemath/METADATA.toml @@ -1,4 +1,5 @@ version = "1.5.*" +upstream_repository = "https://github.com/nickmaccarthy/python-datemath" # Requires a version of arrow with a `py.typed` file requires = ["arrow>=1.0.1"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/METADATA.toml index 175f394fa..799397d98 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-dateutil/METADATA.toml @@ -1,4 +1,5 @@ version = "2.8.*" +upstream_repository = "https://github.com/dateutil/dateutil" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-gflags/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-gflags/METADATA.toml index 84307529a..885945de4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-gflags/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-gflags/METADATA.toml @@ -1 +1,2 @@ version = "3.1.*" +upstream_repository = "https://github.com/google/python-gflags" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/METADATA.toml index 5cc80a931..5b4b5fa79 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-jose/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-jose/METADATA.toml @@ -1,2 +1,3 @@ version = "3.3.*" +upstream_repository = "https://github.com/mpdavis/python-jose" requires = ["types-pyasn1"] # excluding pyrsa, cryptography until typing is available diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/METADATA.toml index 629f910b2..85b3cff80 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-slugify/METADATA.toml @@ -1 +1,2 @@ version = "8.0.*" +upstream_repository = "https://github.com/un33k/python-slugify" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/METADATA.toml index 86e974f53..cf9a82a78 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-xlib/METADATA.toml @@ -1,2 +1,3 @@ version = "0.33.*" +upstream_repository = "https://github.com/python-xlib/python-xlib" requires = ["types-Pillow"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml index e47e40f17..6e2e92edd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyvmomi/METADATA.toml @@ -1,4 +1,5 @@ version = "8.0.0.*" +upstream_repository = "https://github.com/vmware/pyvmomi" partial_stub = true obsolete_since = "8.0.1.0.1" # Released on 2023-05-25 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/METADATA.toml index 0f4aa7161..70aee5df3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/METADATA.toml @@ -1,4 +1,5 @@ version = "306.*" +upstream_repository = "https://github.com/mhammond/pywin32" [tool.stubtest] platforms = ["win32"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/METADATA.toml new file mode 100644 index 000000000..e6451e017 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/METADATA.toml @@ -0,0 +1,5 @@ +version = "7.4.*" +upstream_repository = "https://github.com/lincolnloop/python-qrcode" + +[tool.stubtest] +extras = ["lxml"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/LUT.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/LUT.pyi new file mode 100644 index 000000000..8d6b33556 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/LUT.pyi @@ -0,0 +1,3 @@ +from _typeshed import Incomplete + +rsPoly_LUT: Incomplete diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/__init__.pyi new file mode 100644 index 000000000..7022363a9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/__init__.pyi @@ -0,0 +1,10 @@ +from qrcode import image as image +from qrcode.constants import ( + ERROR_CORRECT_H as ERROR_CORRECT_H, + ERROR_CORRECT_L as ERROR_CORRECT_L, + ERROR_CORRECT_M as ERROR_CORRECT_M, + ERROR_CORRECT_Q as ERROR_CORRECT_Q, +) +from qrcode.main import make as make + +def run_example(data: str = "http://www.lincolnloop.com", *args, **kwargs) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/base.pyi new file mode 100644 index 000000000..04785f4a2 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/base.pyi @@ -0,0 +1,25 @@ +from _typeshed import Incomplete +from typing import NamedTuple + +EXP_TABLE: Incomplete +LOG_TABLE: Incomplete +RS_BLOCK_OFFSET: Incomplete +RS_BLOCK_TABLE: Incomplete + +def glog(n): ... +def gexp(n): ... + +class Polynomial: + num: Incomplete + def __init__(self, num, shift) -> None: ... + def __getitem__(self, index): ... + def __iter__(self): ... + def __len__(self) -> int: ... + def __mul__(self, other): ... + def __mod__(self, other): ... + +class RSBlock(NamedTuple): + total_count: int + data_count: int + +def rs_blocks(version, error_correction): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/console_scripts.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/console_scripts.pyi new file mode 100644 index 000000000..ace65bac1 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/console_scripts.pyi @@ -0,0 +1,12 @@ +from _typeshed import Incomplete +from collections.abc import Iterable + +from qrcode.image.base import BaseImage, DrawerAliases as DrawerAliases + +default_factories: Incomplete +error_correction: Incomplete + +def main(args: Incomplete | None = None) -> None: ... +def get_factory(module: str) -> type[BaseImage]: ... +def get_drawer_help() -> str: ... +def commas(items: Iterable[str], joiner: str = "or") -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/constants.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/constants.pyi new file mode 100644 index 000000000..31bdcb3a6 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/constants.pyi @@ -0,0 +1,4 @@ +ERROR_CORRECT_L: int +ERROR_CORRECT_M: int +ERROR_CORRECT_Q: int +ERROR_CORRECT_H: int diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/exceptions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/exceptions.pyi new file mode 100644 index 000000000..982223889 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/exceptions.pyi @@ -0,0 +1 @@ +class DataOverflowError(Exception): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/base.pyi new file mode 100644 index 000000000..8fc2a6259 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/base.pyi @@ -0,0 +1,50 @@ +import abc +from _typeshed import Incomplete +from typing import Any +from typing_extensions import TypeAlias + +from qrcode.image.styles.moduledrawers.base import QRModuleDrawer +from qrcode.main import QRCode + +DrawerAliases: TypeAlias = dict[str, tuple[type[QRModuleDrawer], dict[str, Any]]] + +class BaseImage(metaclass=abc.ABCMeta): + kind: str | None + allowed_kinds: tuple[str] | None + needs_context: bool + needs_processing: bool + needs_drawrect: bool + border: Incomplete + width: Incomplete + box_size: Incomplete + pixel_size: Incomplete + modules: Incomplete + def __init__(self, border, width, box_size, *args, **kwargs) -> None: ... + @abc.abstractmethod + def drawrect(self, row, col): ... + def drawrect_context(self, row: int, col: int, qr: QRCode[Incomplete]): ... + def process(self) -> None: ... + @abc.abstractmethod + def save(self, stream, kind: Incomplete | None = None): ... + def pixel_box(self, row, col): ... + @abc.abstractmethod + def new_image(self, **kwargs) -> Any: ... + def init_new_image(self) -> None: ... + def get_image(self, **kwargs): ... + def check_kind(self, kind, transform: Incomplete | None = None): ... + def is_eye(self, row: int, col: int): ... + +class BaseImageWithDrawer(BaseImage, metaclass=abc.ABCMeta): + default_drawer_class: type[QRModuleDrawer] + drawer_aliases: DrawerAliases + def get_default_module_drawer(self) -> QRModuleDrawer: ... + def get_default_eye_drawer(self) -> QRModuleDrawer: ... + needs_context: bool + module_drawer: QRModuleDrawer + eye_drawer: QRModuleDrawer + def __init__( + self, *args, module_drawer: QRModuleDrawer | str | None = None, eye_drawer: QRModuleDrawer | str | None = None, **kwargs + ) -> None: ... + def get_drawer(self, drawer: QRModuleDrawer | str | None) -> QRModuleDrawer | None: ... + def init_new_image(self): ... + def drawrect_context(self, row: int, col: int, qr: QRCode[Incomplete]): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/pil.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/pil.pyi new file mode 100644 index 000000000..3ae1e00cc --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/pil.pyi @@ -0,0 +1,11 @@ +from _typeshed import Incomplete + +import qrcode.image.base + +class PilImage(qrcode.image.base.BaseImage): + kind: str + fill_color: Incomplete + def new_image(self, **kwargs): ... + def drawrect(self, row, col) -> None: ... + def save(self, stream, format: Incomplete | None = None, **kwargs) -> None: ... # type: ignore[override] + def __getattr__(self, name): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/pure.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/pure.pyi new file mode 100644 index 000000000..36177abe1 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/pure.pyi @@ -0,0 +1,16 @@ +from _typeshed import Incomplete +from collections.abc import Generator + +import qrcode.image.base + +class PyPNGImage(qrcode.image.base.BaseImage): + kind: str + allowed_kinds: Incomplete + needs_drawrect: bool + def new_image(self, **kwargs): ... + def drawrect(self, row, col) -> None: ... + def save(self, stream, kind: Incomplete | None = None) -> None: ... + def rows_iter(self) -> Generator[Incomplete, Incomplete, None]: ... + def border_rows_iter(self) -> Generator[Incomplete, None, None]: ... + +PymagingImage = PyPNGImage diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styledpil.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styledpil.pyi new file mode 100644 index 000000000..1d2ed26be --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styledpil.pyi @@ -0,0 +1,22 @@ +import abc +from _typeshed import Incomplete + +import qrcode.image.base +from qrcode.image.styles.colormasks import QRColorMask +from qrcode.image.styles.moduledrawers import SquareModuleDrawer + +class StyledPilImage(qrcode.image.base.BaseImageWithDrawer, metaclass=abc.ABCMeta): + kind: str + needs_processing: bool + color_mask: QRColorMask + default_drawer_class = SquareModuleDrawer + embeded_image: Incomplete + embeded_image_resample: Incomplete + paint_color: Incomplete + def __init__(self, *args, **kwargs) -> None: ... + def new_image(self, **kwargs): ... + def init_new_image(self) -> None: ... + def process(self) -> None: ... + def draw_embeded_image(self) -> None: ... + def save(self, stream, format: Incomplete | None = None, **kwargs) -> None: ... # type: ignore[override] + def __getattr__(self, name): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/colormasks.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/colormasks.pyi new file mode 100644 index 000000000..12ad28879 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/colormasks.pyi @@ -0,0 +1,65 @@ +from _typeshed import Incomplete + +class QRColorMask: + back_color: Incomplete + has_transparency: bool + paint_color = back_color + def initialize(self, styledPilImage, image) -> None: ... + def apply_mask(self, image) -> None: ... + def get_fg_pixel(self, image, x, y) -> None: ... + def get_bg_pixel(self, image, x, y): ... + def interp_num(self, n1, n2, norm): ... + def interp_color(self, col1, col2, norm): ... + def extrap_num(self, n1, n2, interped_num): ... + def extrap_color(self, col1, col2, interped_color): ... + +class SolidFillColorMask(QRColorMask): + back_color: Incomplete + front_color: Incomplete + has_transparency: Incomplete + def __init__(self, back_color=(255, 255, 255), front_color=(0, 0, 0)) -> None: ... + def apply_mask(self, image) -> None: ... + def get_fg_pixel(self, image, x, y): ... + +class RadialGradiantColorMask(QRColorMask): + back_color: Incomplete + center_color: Incomplete + edge_color: Incomplete + has_transparency: Incomplete + def __init__(self, back_color=(255, 255, 255), center_color=(0, 0, 0), edge_color=(0, 0, 255)) -> None: ... + def get_fg_pixel(self, image, x, y): ... + +class SquareGradiantColorMask(QRColorMask): + back_color: Incomplete + center_color: Incomplete + edge_color: Incomplete + has_transparency: Incomplete + def __init__(self, back_color=(255, 255, 255), center_color=(0, 0, 0), edge_color=(0, 0, 255)) -> None: ... + def get_fg_pixel(self, image, x, y): ... + +class HorizontalGradiantColorMask(QRColorMask): + back_color: Incomplete + left_color: Incomplete + right_color: Incomplete + has_transparency: Incomplete + def __init__(self, back_color=(255, 255, 255), left_color=(0, 0, 0), right_color=(0, 0, 255)) -> None: ... + def get_fg_pixel(self, image, x, y): ... + +class VerticalGradiantColorMask(QRColorMask): + back_color: Incomplete + top_color: Incomplete + bottom_color: Incomplete + has_transparency: Incomplete + def __init__(self, back_color=(255, 255, 255), top_color=(0, 0, 0), bottom_color=(0, 0, 255)) -> None: ... + def get_fg_pixel(self, image, x, y): ... + +class ImageColorMask(QRColorMask): + back_color: Incomplete + color_img: Incomplete + has_transparency: Incomplete + def __init__( + self, back_color=(255, 255, 255), color_mask_path: Incomplete | None = None, color_mask_image: Incomplete | None = None + ) -> None: ... + paint_color: Incomplete + def initialize(self, styledPilImage, image) -> None: ... + def get_fg_pixel(self, image, x, y): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/__init__.pyi new file mode 100644 index 000000000..f51cacc61 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/__init__.pyi @@ -0,0 +1,8 @@ +from .pil import ( + CircleModuleDrawer as CircleModuleDrawer, + GappedSquareModuleDrawer as GappedSquareModuleDrawer, + HorizontalBarsDrawer as HorizontalBarsDrawer, + RoundedModuleDrawer as RoundedModuleDrawer, + SquareModuleDrawer as SquareModuleDrawer, + VerticalBarsDrawer as VerticalBarsDrawer, +) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/base.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/base.pyi new file mode 100644 index 000000000..917c1ac41 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/base.pyi @@ -0,0 +1,12 @@ +import abc +from _typeshed import Incomplete + +from qrcode.image.base import BaseImage + +class QRModuleDrawer(abc.ABC, metaclass=abc.ABCMeta): + needs_neighbors: bool + def __init__(self, **kwargs) -> None: ... + img: Incomplete + def initialize(self, img: BaseImage) -> None: ... + @abc.abstractmethod + def drawrect(self, box, is_active) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/pil.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/pil.pyi new file mode 100644 index 000000000..e5c4e94b7 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/pil.pyi @@ -0,0 +1,69 @@ +import abc +from _typeshed import Incomplete + +from qrcode.image.styledpil import StyledPilImage +from qrcode.image.styles.moduledrawers.base import QRModuleDrawer +from qrcode.main import ActiveWithNeighbors + +ANTIALIASING_FACTOR: int + +class StyledPilQRModuleDrawer(QRModuleDrawer, metaclass=abc.ABCMeta): + img: StyledPilImage + +class SquareModuleDrawer(StyledPilQRModuleDrawer): + imgDraw: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + def drawrect(self, box, is_active: bool): ... + +class GappedSquareModuleDrawer(StyledPilQRModuleDrawer): + size_ratio: Incomplete + def __init__(self, size_ratio: float = 0.8) -> None: ... + imgDraw: Incomplete + delta: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + def drawrect(self, box, is_active: bool): ... + +class CircleModuleDrawer(StyledPilQRModuleDrawer): + circle: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + def drawrect(self, box, is_active: bool): ... + +class RoundedModuleDrawer(StyledPilQRModuleDrawer): + needs_neighbors: bool + radius_ratio: Incomplete + def __init__(self, radius_ratio: int = 1) -> None: ... + corner_width: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + SQUARE: Incomplete + NW_ROUND: Incomplete + SW_ROUND: Incomplete + SE_ROUND: Incomplete + NE_ROUND: Incomplete + def setup_corners(self) -> None: ... + def drawrect(self, box: list[list[int]], is_active: ActiveWithNeighbors): ... + +class VerticalBarsDrawer(StyledPilQRModuleDrawer): + needs_neighbors: bool + horizontal_shrink: Incomplete + def __init__(self, horizontal_shrink: float = 0.8) -> None: ... + half_height: Incomplete + delta: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + SQUARE: Incomplete + ROUND_TOP: Incomplete + ROUND_BOTTOM: Incomplete + def setup_edges(self) -> None: ... + def drawrect(self, box, is_active: ActiveWithNeighbors): ... + +class HorizontalBarsDrawer(StyledPilQRModuleDrawer): + needs_neighbors: bool + vertical_shrink: Incomplete + def __init__(self, vertical_shrink: float = 0.8) -> None: ... + half_width: Incomplete + delta: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + SQUARE: Incomplete + ROUND_LEFT: Incomplete + ROUND_RIGHT: Incomplete + def setup_edges(self) -> None: ... + def drawrect(self, box, is_active: ActiveWithNeighbors): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/svg.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/svg.pyi new file mode 100644 index 000000000..8ff91c13e --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/styles/moduledrawers/svg.pyi @@ -0,0 +1,59 @@ +import abc +from _typeshed import Incomplete +from decimal import Decimal +from typing import NamedTuple + +from qrcode.image.styles.moduledrawers.base import QRModuleDrawer +from qrcode.image.svg import SvgFragmentImage, SvgPathImage + +ANTIALIASING_FACTOR: int + +class Coords(NamedTuple): + x0: Decimal + y0: Decimal + x1: Decimal + y1: Decimal + xh: Decimal + yh: Decimal + +class BaseSvgQRModuleDrawer(QRModuleDrawer, metaclass=abc.ABCMeta): + img: SvgFragmentImage + size_ratio: Incomplete + def __init__(self, *, size_ratio: Decimal = ..., **kwargs) -> None: ... + box_delta: Incomplete + box_size: Incomplete + box_half: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + def coords(self, box) -> Coords: ... + +class SvgQRModuleDrawer(BaseSvgQRModuleDrawer, metaclass=abc.ABCMeta): + tag: str + tag_qname: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + def drawrect(self, box, is_active: bool): ... + @abc.abstractmethod + def el(self, box): ... + +class SvgSquareDrawer(SvgQRModuleDrawer): + unit_size: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + def el(self, box): ... + +class SvgCircleDrawer(SvgQRModuleDrawer): + tag: str + radius: Incomplete + def initialize(self, *args, **kwargs) -> None: ... + def el(self, box): ... + +class SvgPathQRModuleDrawer(BaseSvgQRModuleDrawer, metaclass=abc.ABCMeta): + img: SvgPathImage + def drawrect(self, box, is_active: bool): ... + @abc.abstractmethod + def subpath(self, box) -> str: ... + +class SvgPathSquareDrawer(SvgPathQRModuleDrawer): + def subpath(self, box) -> str: ... + +class SvgPathCircleDrawer(SvgPathQRModuleDrawer): + def initialize(self, *args, **kwargs) -> None: ... + def subpath(self, box) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/svg.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/svg.pyi new file mode 100644 index 000000000..f582783c9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/image/svg.pyi @@ -0,0 +1,42 @@ +import abc +from _typeshed import Incomplete +from decimal import Decimal +from typing import overload +from typing_extensions import Literal +from xml.etree.ElementTree import Element + +import qrcode.image.base +from qrcode.image.styles.moduledrawers.base import QRModuleDrawer + +class SvgFragmentImage(qrcode.image.base.BaseImageWithDrawer, metaclass=abc.ABCMeta): + kind: str + allowed_kinds: Incomplete + default_drawer_class: type[QRModuleDrawer] + unit_size: Incomplete + def __init__(self, *args, **kwargs) -> None: ... + @overload + def units(self, pixels: int | Decimal, text: Literal[False]) -> Decimal: ... + @overload + def units(self, pixels: int | Decimal, text: Literal[True] = True) -> str: ... + def save(self, stream, kind: Incomplete | None = None) -> None: ... + def to_string(self, **kwargs): ... + def new_image(self, **kwargs): ... + +class SvgImage(SvgFragmentImage, metaclass=abc.ABCMeta): + background: str | None + drawer_aliases: qrcode.image.base.DrawerAliases + +class SvgPathImage(SvgImage, metaclass=abc.ABCMeta): + QR_PATH_STYLE: Incomplete + needs_processing: bool + path: Element | None + default_drawer_class: type[QRModuleDrawer] + drawer_aliases: Incomplete + def __init__(self, *args, **kwargs) -> None: ... + def process(self) -> None: ... + +class SvgFillImage(SvgImage, metaclass=abc.ABCMeta): + background: str + +class SvgPathFillImage(SvgPathImage, metaclass=abc.ABCMeta): + background: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/main.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/main.pyi new file mode 100644 index 000000000..df9e11c29 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/main.pyi @@ -0,0 +1,70 @@ +from _typeshed import Incomplete +from typing import Generic, NamedTuple, TypeVar, overload +from typing_extensions import Literal, TypeAlias + +from qrcode.image.base import BaseImage + +ModulesType: TypeAlias = list[list[bool | None]] +precomputed_qr_blanks: dict[int, ModulesType] + +def make(data: Incomplete | None = None, **kwargs): ... +def copy_2d_array(x): ... + +class ActiveWithNeighbors(NamedTuple): + NW: bool + N: bool + NE: bool + W: bool + me: bool + E: bool + SW: bool + S: bool + SE: bool + def __bool__(self) -> bool: ... + +GenericImage = TypeVar("GenericImage", bound=BaseImage) # noqa: Y001 +GenericImageLocal = TypeVar("GenericImageLocal", bound=BaseImage) # noqa: Y001 + +class QRCode(Generic[GenericImage]): + modules: ModulesType + error_correction: Incomplete + box_size: Incomplete + border: Incomplete + image_factory: Incomplete + def __init__( + self, + version: Incomplete | None = None, + error_correction=0, + box_size: int = 10, + border: int = 4, + image_factory: type[GenericImage] | None = None, + mask_pattern: Incomplete | None = None, + ) -> None: ... + @property + def version(self) -> int: ... + @property + def mask_pattern(self): ... + modules_count: int + data_cache: Incomplete + data_list: Incomplete + def clear(self) -> None: ... + def add_data(self, data, optimize: int = 20) -> None: ... + def make(self, fit: bool = True) -> None: ... + def makeImpl(self, test, mask_pattern) -> None: ... + def setup_position_probe_pattern(self, row, col) -> None: ... + def best_fit(self, start: Incomplete | None = None): ... + def best_mask_pattern(self): ... + def print_tty(self, out: Incomplete | None = None) -> None: ... + def print_ascii(self, out: Incomplete | None = None, tty: bool = False, invert: bool = False): ... + @overload + def make_image(self, image_factory: Literal[None] = None, **kwargs) -> GenericImage: ... + @overload + def make_image(self, image_factory: type[GenericImageLocal] | None = None, **kwargs) -> GenericImageLocal: ... + def is_constrained(self, row: int, col: int) -> bool: ... + def setup_timing_pattern(self) -> None: ... + def setup_position_adjust_pattern(self) -> None: ... + def setup_type_number(self, test) -> None: ... + def setup_type_info(self, test, mask_pattern) -> None: ... + def map_data(self, data, mask_pattern) -> None: ... + def get_matrix(self): ... + def active_with_neighbors(self, row: int, col: int) -> ActiveWithNeighbors: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/release.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/release.pyi new file mode 100644 index 000000000..eac4d5241 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/release.pyi @@ -0,0 +1 @@ +def update_manpage(data) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/util.pyi new file mode 100644 index 000000000..be5b02144 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/qrcode/qrcode/util.pyi @@ -0,0 +1,54 @@ +from _typeshed import Incomplete +from collections.abc import Generator + +from qrcode.base import RSBlock as RSBlock + +MODE_NUMBER: Incomplete +MODE_ALPHA_NUM: Incomplete +MODE_8BIT_BYTE: Incomplete +MODE_KANJI: Incomplete +MODE_SIZE_SMALL: Incomplete +MODE_SIZE_MEDIUM: Incomplete +MODE_SIZE_LARGE: Incomplete +ALPHA_NUM: bytes +RE_ALPHA_NUM: Incomplete +NUMBER_LENGTH: Incomplete +PATTERN_POSITION_TABLE: Incomplete +G15: Incomplete +G18: Incomplete +G15_MASK: Incomplete +PAD0: int +PAD1: int +BIT_LIMIT_TABLE: Incomplete + +def BCH_type_info(data): ... +def BCH_type_number(data): ... +def BCH_digit(data): ... +def pattern_position(version): ... +def mask_func(pattern): ... +def mode_sizes_for_version(version): ... +def length_in_bits(mode, version): ... +def check_version(version) -> None: ... +def lost_point(modules): ... +def optimal_data_chunks(data, minimum: int = 4) -> Generator[Incomplete, None, None]: ... +def to_bytestring(data): ... +def optimal_mode(data): ... + +class QRData: + mode: Incomplete + data: Incomplete + def __init__(self, data, mode: Incomplete | None = None, check_data: bool = True) -> None: ... + def __len__(self) -> int: ... + def write(self, buffer) -> None: ... + +class BitBuffer: + buffer: Incomplete + length: int + def __init__(self) -> None: ... + def get(self, index): ... + def put(self, num, length) -> None: ... + def __len__(self) -> int: ... + def put_bit(self, bit) -> None: ... + +def create_bytes(buffer: BitBuffer, rs_blocks: list[RSBlock]): ... +def create_data(version, error_correction, data_list): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml index 81e550e9f..b5fa5bc9e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/redis/METADATA.toml @@ -1,4 +1,5 @@ version = "4.6.0" +upstream_repository = "https://github.com/redis/redis-py" # Requires a version of cryptography with a `py.typed` file requires = ["cryptography>=35.0.0", "types-pyOpenSSL"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml index f7972b352..d0a5aacf9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml @@ -1 +1,2 @@ version = "2023.6.3" +upstream_repository = "https://github.com/mrabarnett/mrab-regex" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml index f0410f316..39371b90e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/requests/METADATA.toml @@ -1,4 +1,5 @@ version = "2.31.*" +upstream_repository = "https://github.com/psf/requests" requires = ["types-urllib3"] [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/retry/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/retry/METADATA.toml index 51e869b47..a2623b57d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/retry/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/retry/METADATA.toml @@ -1 +1,2 @@ version = "0.9.*" +upstream_repository = "https://github.com/invl/retry" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/METADATA.toml new file mode 100644 index 000000000..1fd4f42eb --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/METADATA.toml @@ -0,0 +1,2 @@ +version = "5.*" +requires = ["types-protobuf"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/build.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/build.pyi new file mode 100644 index 000000000..53949f461 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/build.pyi @@ -0,0 +1,5 @@ +from subprocess import _CMD + +def game_version() -> str: ... +def git_commit_hash() -> str: ... +def read_command_output(cmd: _CMD) -> list[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/common_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/common_pb2.pyi new file mode 100644 index 000000000..36e5f70c9 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/common_pb2.pyi @@ -0,0 +1,199 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _Race: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _RaceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Race.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + NoRace: _Race.ValueType # 0 + Terran: _Race.ValueType # 1 + Zerg: _Race.ValueType # 2 + Protoss: _Race.ValueType # 3 + Random: _Race.ValueType # 4 + +class Race(_Race, metaclass=_RaceEnumTypeWrapper): ... + +NoRace: Race.ValueType # 0 +Terran: Race.ValueType # 1 +Zerg: Race.ValueType # 2 +Protoss: Race.ValueType # 3 +Random: Race.ValueType # 4 +global___Race = Race + +@typing_extensions.final +class AvailableAbility(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITY_ID_FIELD_NUMBER: builtins.int + REQUIRES_POINT_FIELD_NUMBER: builtins.int + ability_id: builtins.int + requires_point: builtins.bool + def __init__( + self, + *, + ability_id: builtins.int | None = ..., + requires_point: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "requires_point", b"requires_point"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "requires_point", b"requires_point"]) -> None: ... + +global___AvailableAbility = AvailableAbility + +@typing_extensions.final +class ImageData(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + BITS_PER_PIXEL_FIELD_NUMBER: builtins.int + SIZE_FIELD_NUMBER: builtins.int + DATA_FIELD_NUMBER: builtins.int + bits_per_pixel: builtins.int + """Number of bits per pixel; 8 bits for a byte etc.""" + @property + def size(self) -> global___Size2DI: + """Dimension in pixels.""" + data: builtins.bytes + """Binary data; the size of this buffer in bytes is width * height * bits_per_pixel / 8.""" + def __init__( + self, + *, + bits_per_pixel: builtins.int | None = ..., + size: global___Size2DI | None = ..., + data: builtins.bytes | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["bits_per_pixel", b"bits_per_pixel", "data", b"data", "size", b"size"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["bits_per_pixel", b"bits_per_pixel", "data", b"data", "size", b"size"]) -> None: ... + +global___ImageData = ImageData + +@typing_extensions.final +class PointI(google.protobuf.message.Message): + """Point on the screen/minimap (e.g., 0..64). + Note: bottom left of the screen is 0, 0. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + X_FIELD_NUMBER: builtins.int + Y_FIELD_NUMBER: builtins.int + x: builtins.int + y: builtins.int + def __init__( + self, + *, + x: builtins.int | None = ..., + y: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["x", b"x", "y", b"y"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["x", b"x", "y", b"y"]) -> None: ... + +global___PointI = PointI + +@typing_extensions.final +class RectangleI(google.protobuf.message.Message): + """Screen space rectangular area.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + P0_FIELD_NUMBER: builtins.int + P1_FIELD_NUMBER: builtins.int + @property + def p0(self) -> global___PointI: ... + @property + def p1(self) -> global___PointI: ... + def __init__( + self, + *, + p0: global___PointI | None = ..., + p1: global___PointI | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["p0", b"p0", "p1", b"p1"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["p0", b"p0", "p1", b"p1"]) -> None: ... + +global___RectangleI = RectangleI + +@typing_extensions.final +class Point2D(google.protobuf.message.Message): + """Point on the game board, 0..255. + Note: bottom left of the screen is 0, 0. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + X_FIELD_NUMBER: builtins.int + Y_FIELD_NUMBER: builtins.int + x: builtins.float + y: builtins.float + def __init__( + self, + *, + x: builtins.float | None = ..., + y: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["x", b"x", "y", b"y"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["x", b"x", "y", b"y"]) -> None: ... + +global___Point2D = Point2D + +@typing_extensions.final +class Point(google.protobuf.message.Message): + """Point on the game board, 0..255. + Note: bottom left of the screen is 0, 0. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + X_FIELD_NUMBER: builtins.int + Y_FIELD_NUMBER: builtins.int + Z_FIELD_NUMBER: builtins.int + x: builtins.float + y: builtins.float + z: builtins.float + def __init__( + self, + *, + x: builtins.float | None = ..., + y: builtins.float | None = ..., + z: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["x", b"x", "y", b"y", "z", b"z"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["x", b"x", "y", b"y", "z", b"z"]) -> None: ... + +global___Point = Point + +@typing_extensions.final +class Size2DI(google.protobuf.message.Message): + """Screen dimensions.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + X_FIELD_NUMBER: builtins.int + Y_FIELD_NUMBER: builtins.int + x: builtins.int + y: builtins.int + def __init__( + self, + *, + x: builtins.int | None = ..., + y: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["x", b"x", "y", b"y"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["x", b"x", "y", b"y"]) -> None: ... + +global___Size2DI = Size2DI diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/data_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/data_pb2.pyi new file mode 100644 index 000000000..cd9ded47d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/data_pb2.pyi @@ -0,0 +1,396 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import s2clientprotocol.common_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _Attribute: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _AttributeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Attribute.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Light: _Attribute.ValueType # 1 + Armored: _Attribute.ValueType # 2 + Biological: _Attribute.ValueType # 3 + Mechanical: _Attribute.ValueType # 4 + Robotic: _Attribute.ValueType # 5 + Psionic: _Attribute.ValueType # 6 + Massive: _Attribute.ValueType # 7 + Structure: _Attribute.ValueType # 8 + Hover: _Attribute.ValueType # 9 + Heroic: _Attribute.ValueType # 10 + Summoned: _Attribute.ValueType # 11 + +class Attribute(_Attribute, metaclass=_AttributeEnumTypeWrapper): ... + +Light: Attribute.ValueType # 1 +Armored: Attribute.ValueType # 2 +Biological: Attribute.ValueType # 3 +Mechanical: Attribute.ValueType # 4 +Robotic: Attribute.ValueType # 5 +Psionic: Attribute.ValueType # 6 +Massive: Attribute.ValueType # 7 +Structure: Attribute.ValueType # 8 +Hover: Attribute.ValueType # 9 +Heroic: Attribute.ValueType # 10 +Summoned: Attribute.ValueType # 11 +global___Attribute = Attribute + +@typing_extensions.final +class AbilityData(google.protobuf.message.Message): + """May not relevant: queueable (everything is queueable). + May not be important: AbilSetId - marine stim, marauder stim. + Stuff omitted: transient. + Stuff that may be important: cost, range, Alignment, targetfilters. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Target: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _TargetEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AbilityData._Target.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Point: AbilityData._Target.ValueType # 2 + """Requires a target position.""" + Unit: AbilityData._Target.ValueType # 3 + """Requires a unit to target. Given by position using feature layers.""" + PointOrUnit: AbilityData._Target.ValueType # 4 + """Requires either a target point or target unit.""" + PointOrNone: AbilityData._Target.ValueType # 5 + """Requires either a target point or no target. (eg. building add-ons)""" + + class Target(_Target, metaclass=_TargetEnumTypeWrapper): ... + Point: AbilityData.Target.ValueType # 2 + """Requires a target position.""" + Unit: AbilityData.Target.ValueType # 3 + """Requires a unit to target. Given by position using feature layers.""" + PointOrUnit: AbilityData.Target.ValueType # 4 + """Requires either a target point or target unit.""" + PointOrNone: AbilityData.Target.ValueType # 5 + """Requires either a target point or no target. (eg. building add-ons)""" + + ABILITY_ID_FIELD_NUMBER: builtins.int + LINK_NAME_FIELD_NUMBER: builtins.int + LINK_INDEX_FIELD_NUMBER: builtins.int + BUTTON_NAME_FIELD_NUMBER: builtins.int + FRIENDLY_NAME_FIELD_NUMBER: builtins.int + HOTKEY_FIELD_NUMBER: builtins.int + REMAPS_TO_ABILITY_ID_FIELD_NUMBER: builtins.int + AVAILABLE_FIELD_NUMBER: builtins.int + TARGET_FIELD_NUMBER: builtins.int + ALLOW_MINIMAP_FIELD_NUMBER: builtins.int + ALLOW_AUTOCAST_FIELD_NUMBER: builtins.int + IS_BUILDING_FIELD_NUMBER: builtins.int + FOOTPRINT_RADIUS_FIELD_NUMBER: builtins.int + IS_INSTANT_PLACEMENT_FIELD_NUMBER: builtins.int + CAST_RANGE_FIELD_NUMBER: builtins.int + ability_id: builtins.int + """Stable ID.""" + link_name: builtins.str + """Catalog name of the ability.""" + link_index: builtins.int + """Catalog index of the ability.""" + button_name: builtins.str + """Name used for the command card. May not always be set.""" + friendly_name: builtins.str + """A human friendly name when the button name or link name isn't descriptive.""" + hotkey: builtins.str + """Hotkey. May not always be set.""" + remaps_to_ability_id: builtins.int + """This ability id may be represented by the given more generic id.""" + available: builtins.bool + """If true, the ability may be used by this set of mods/map.""" + target: global___AbilityData.Target.ValueType + """Determines if a point is optional or required.""" + allow_minimap: builtins.bool + """Can be cast in the minimap.""" + allow_autocast: builtins.bool + """Autocast can be set.""" + is_building: builtins.bool + """Requires placement to construct a building.""" + footprint_radius: builtins.float + """Estimation of the footprint size. Need a better footprint.""" + is_instant_placement: builtins.bool + """Placement next to an existing structure, e.g., an add-on like a Tech Lab.""" + cast_range: builtins.float + """Range unit can cast ability without needing to approach target.""" + def __init__( + self, + *, + ability_id: builtins.int | None = ..., + link_name: builtins.str | None = ..., + link_index: builtins.int | None = ..., + button_name: builtins.str | None = ..., + friendly_name: builtins.str | None = ..., + hotkey: builtins.str | None = ..., + remaps_to_ability_id: builtins.int | None = ..., + available: builtins.bool | None = ..., + target: global___AbilityData.Target.ValueType | None = ..., + allow_minimap: builtins.bool | None = ..., + allow_autocast: builtins.bool | None = ..., + is_building: builtins.bool | None = ..., + footprint_radius: builtins.float | None = ..., + is_instant_placement: builtins.bool | None = ..., + cast_range: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "allow_autocast", b"allow_autocast", "allow_minimap", b"allow_minimap", "available", b"available", "button_name", b"button_name", "cast_range", b"cast_range", "footprint_radius", b"footprint_radius", "friendly_name", b"friendly_name", "hotkey", b"hotkey", "is_building", b"is_building", "is_instant_placement", b"is_instant_placement", "link_index", b"link_index", "link_name", b"link_name", "remaps_to_ability_id", b"remaps_to_ability_id", "target", b"target"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "allow_autocast", b"allow_autocast", "allow_minimap", b"allow_minimap", "available", b"available", "button_name", b"button_name", "cast_range", b"cast_range", "footprint_radius", b"footprint_radius", "friendly_name", b"friendly_name", "hotkey", b"hotkey", "is_building", b"is_building", "is_instant_placement", b"is_instant_placement", "link_index", b"link_index", "link_name", b"link_name", "remaps_to_ability_id", b"remaps_to_ability_id", "target", b"target"]) -> None: ... + +global___AbilityData = AbilityData + +@typing_extensions.final +class DamageBonus(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ATTRIBUTE_FIELD_NUMBER: builtins.int + BONUS_FIELD_NUMBER: builtins.int + attribute: global___Attribute.ValueType + bonus: builtins.float + def __init__( + self, + *, + attribute: global___Attribute.ValueType | None = ..., + bonus: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["attribute", b"attribute", "bonus", b"bonus"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["attribute", b"attribute", "bonus", b"bonus"]) -> None: ... + +global___DamageBonus = DamageBonus + +@typing_extensions.final +class Weapon(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _TargetType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _TargetTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Weapon._TargetType.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Ground: Weapon._TargetType.ValueType # 1 + Air: Weapon._TargetType.ValueType # 2 + Any: Weapon._TargetType.ValueType # 3 + + class TargetType(_TargetType, metaclass=_TargetTypeEnumTypeWrapper): ... + Ground: Weapon.TargetType.ValueType # 1 + Air: Weapon.TargetType.ValueType # 2 + Any: Weapon.TargetType.ValueType # 3 + + TYPE_FIELD_NUMBER: builtins.int + DAMAGE_FIELD_NUMBER: builtins.int + DAMAGE_BONUS_FIELD_NUMBER: builtins.int + ATTACKS_FIELD_NUMBER: builtins.int + RANGE_FIELD_NUMBER: builtins.int + SPEED_FIELD_NUMBER: builtins.int + type: global___Weapon.TargetType.ValueType + damage: builtins.float + @property + def damage_bonus(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DamageBonus]: ... + attacks: builtins.int + """Number of hits per attack. (eg. Colossus has 2 beams)""" + range: builtins.float + speed: builtins.float + """Time between attacks.""" + def __init__( + self, + *, + type: global___Weapon.TargetType.ValueType | None = ..., + damage: builtins.float | None = ..., + damage_bonus: collections.abc.Iterable[global___DamageBonus] | None = ..., + attacks: builtins.int | None = ..., + range: builtins.float | None = ..., + speed: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["attacks", b"attacks", "damage", b"damage", "range", b"range", "speed", b"speed", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["attacks", b"attacks", "damage", b"damage", "damage_bonus", b"damage_bonus", "range", b"range", "speed", b"speed", "type", b"type"]) -> None: ... + +global___Weapon = Weapon + +@typing_extensions.final +class UnitTypeData(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_ID_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + AVAILABLE_FIELD_NUMBER: builtins.int + CARGO_SIZE_FIELD_NUMBER: builtins.int + MINERAL_COST_FIELD_NUMBER: builtins.int + VESPENE_COST_FIELD_NUMBER: builtins.int + FOOD_REQUIRED_FIELD_NUMBER: builtins.int + FOOD_PROVIDED_FIELD_NUMBER: builtins.int + ABILITY_ID_FIELD_NUMBER: builtins.int + RACE_FIELD_NUMBER: builtins.int + BUILD_TIME_FIELD_NUMBER: builtins.int + HAS_VESPENE_FIELD_NUMBER: builtins.int + HAS_MINERALS_FIELD_NUMBER: builtins.int + SIGHT_RANGE_FIELD_NUMBER: builtins.int + TECH_ALIAS_FIELD_NUMBER: builtins.int + UNIT_ALIAS_FIELD_NUMBER: builtins.int + TECH_REQUIREMENT_FIELD_NUMBER: builtins.int + REQUIRE_ATTACHED_FIELD_NUMBER: builtins.int + ATTRIBUTES_FIELD_NUMBER: builtins.int + MOVEMENT_SPEED_FIELD_NUMBER: builtins.int + ARMOR_FIELD_NUMBER: builtins.int + WEAPONS_FIELD_NUMBER: builtins.int + unit_id: builtins.int + """Stable ID.""" + name: builtins.str + """Catalog name of the unit.""" + available: builtins.bool + """If true, the ability may be used by this set of mods/map.""" + cargo_size: builtins.int + """Number of cargo slots it occupies in transports.""" + mineral_cost: builtins.int + vespene_cost: builtins.int + food_required: builtins.float + food_provided: builtins.float + ability_id: builtins.int + """The ability that builds this unit.""" + race: s2clientprotocol.common_pb2.Race.ValueType + build_time: builtins.float + has_vespene: builtins.bool + has_minerals: builtins.bool + sight_range: builtins.float + """Range unit reveals vision.""" + @property + def tech_alias(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + """Other units that satisfy the same tech requirement.""" + unit_alias: builtins.int + """The morphed variant of this unit.""" + tech_requirement: builtins.int + """Structure required to build this unit. (Or any with the same tech_alias)""" + require_attached: builtins.bool + """Whether tech_requirement is an add-on.""" + @property + def attributes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___Attribute.ValueType]: + """Values include changes from upgrades""" + movement_speed: builtins.float + armor: builtins.float + @property + def weapons(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Weapon]: ... + def __init__( + self, + *, + unit_id: builtins.int | None = ..., + name: builtins.str | None = ..., + available: builtins.bool | None = ..., + cargo_size: builtins.int | None = ..., + mineral_cost: builtins.int | None = ..., + vespene_cost: builtins.int | None = ..., + food_required: builtins.float | None = ..., + food_provided: builtins.float | None = ..., + ability_id: builtins.int | None = ..., + race: s2clientprotocol.common_pb2.Race.ValueType | None = ..., + build_time: builtins.float | None = ..., + has_vespene: builtins.bool | None = ..., + has_minerals: builtins.bool | None = ..., + sight_range: builtins.float | None = ..., + tech_alias: collections.abc.Iterable[builtins.int] | None = ..., + unit_alias: builtins.int | None = ..., + tech_requirement: builtins.int | None = ..., + require_attached: builtins.bool | None = ..., + attributes: collections.abc.Iterable[global___Attribute.ValueType] | None = ..., + movement_speed: builtins.float | None = ..., + armor: builtins.float | None = ..., + weapons: collections.abc.Iterable[global___Weapon] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "armor", b"armor", "available", b"available", "build_time", b"build_time", "cargo_size", b"cargo_size", "food_provided", b"food_provided", "food_required", b"food_required", "has_minerals", b"has_minerals", "has_vespene", b"has_vespene", "mineral_cost", b"mineral_cost", "movement_speed", b"movement_speed", "name", b"name", "race", b"race", "require_attached", b"require_attached", "sight_range", b"sight_range", "tech_requirement", b"tech_requirement", "unit_alias", b"unit_alias", "unit_id", b"unit_id", "vespene_cost", b"vespene_cost"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "armor", b"armor", "attributes", b"attributes", "available", b"available", "build_time", b"build_time", "cargo_size", b"cargo_size", "food_provided", b"food_provided", "food_required", b"food_required", "has_minerals", b"has_minerals", "has_vespene", b"has_vespene", "mineral_cost", b"mineral_cost", "movement_speed", b"movement_speed", "name", b"name", "race", b"race", "require_attached", b"require_attached", "sight_range", b"sight_range", "tech_alias", b"tech_alias", "tech_requirement", b"tech_requirement", "unit_alias", b"unit_alias", "unit_id", b"unit_id", "vespene_cost", b"vespene_cost", "weapons", b"weapons"]) -> None: ... + +global___UnitTypeData = UnitTypeData + +@typing_extensions.final +class UpgradeData(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UPGRADE_ID_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + MINERAL_COST_FIELD_NUMBER: builtins.int + VESPENE_COST_FIELD_NUMBER: builtins.int + RESEARCH_TIME_FIELD_NUMBER: builtins.int + ABILITY_ID_FIELD_NUMBER: builtins.int + upgrade_id: builtins.int + """Stable ID.""" + name: builtins.str + mineral_cost: builtins.int + vespene_cost: builtins.int + research_time: builtins.float + ability_id: builtins.int + def __init__( + self, + *, + upgrade_id: builtins.int | None = ..., + name: builtins.str | None = ..., + mineral_cost: builtins.int | None = ..., + vespene_cost: builtins.int | None = ..., + research_time: builtins.float | None = ..., + ability_id: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "mineral_cost", b"mineral_cost", "name", b"name", "research_time", b"research_time", "upgrade_id", b"upgrade_id", "vespene_cost", b"vespene_cost"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "mineral_cost", b"mineral_cost", "name", b"name", "research_time", b"research_time", "upgrade_id", b"upgrade_id", "vespene_cost", b"vespene_cost"]) -> None: ... + +global___UpgradeData = UpgradeData + +@typing_extensions.final +class BuffData(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + BUFF_ID_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + buff_id: builtins.int + """Stable ID.""" + name: builtins.str + def __init__( + self, + *, + buff_id: builtins.int | None = ..., + name: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["buff_id", b"buff_id", "name", b"name"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["buff_id", b"buff_id", "name", b"name"]) -> None: ... + +global___BuffData = BuffData + +@typing_extensions.final +class EffectData(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EFFECT_ID_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + FRIENDLY_NAME_FIELD_NUMBER: builtins.int + RADIUS_FIELD_NUMBER: builtins.int + effect_id: builtins.int + """Stable ID.""" + name: builtins.str + friendly_name: builtins.str + radius: builtins.float + def __init__( + self, + *, + effect_id: builtins.int | None = ..., + name: builtins.str | None = ..., + friendly_name: builtins.str | None = ..., + radius: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["effect_id", b"effect_id", "friendly_name", b"friendly_name", "name", b"name", "radius", b"radius"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["effect_id", b"effect_id", "friendly_name", b"friendly_name", "name", b"name", "radius", b"radius"]) -> None: ... + +global___EffectData = EffectData diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/debug_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/debug_pb2.pyi new file mode 100644 index 000000000..77441ec37 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/debug_pb2.pyi @@ -0,0 +1,448 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import s2clientprotocol.common_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _DebugGameState: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _DebugGameStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DebugGameState.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + show_map: _DebugGameState.ValueType # 1 + control_enemy: _DebugGameState.ValueType # 2 + food: _DebugGameState.ValueType # 3 + free: _DebugGameState.ValueType # 4 + all_resources: _DebugGameState.ValueType # 5 + god: _DebugGameState.ValueType # 6 + minerals: _DebugGameState.ValueType # 7 + gas: _DebugGameState.ValueType # 8 + cooldown: _DebugGameState.ValueType # 9 + tech_tree: _DebugGameState.ValueType # 10 + upgrade: _DebugGameState.ValueType # 11 + fast_build: _DebugGameState.ValueType # 12 + +class DebugGameState(_DebugGameState, metaclass=_DebugGameStateEnumTypeWrapper): ... + +show_map: DebugGameState.ValueType # 1 +control_enemy: DebugGameState.ValueType # 2 +food: DebugGameState.ValueType # 3 +free: DebugGameState.ValueType # 4 +all_resources: DebugGameState.ValueType # 5 +god: DebugGameState.ValueType # 6 +minerals: DebugGameState.ValueType # 7 +gas: DebugGameState.ValueType # 8 +cooldown: DebugGameState.ValueType # 9 +tech_tree: DebugGameState.ValueType # 10 +upgrade: DebugGameState.ValueType # 11 +fast_build: DebugGameState.ValueType # 12 +global___DebugGameState = DebugGameState + +@typing_extensions.final +class DebugCommand(google.protobuf.message.Message): + """Issue various useful commands to the game engine.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DRAW_FIELD_NUMBER: builtins.int + GAME_STATE_FIELD_NUMBER: builtins.int + CREATE_UNIT_FIELD_NUMBER: builtins.int + KILL_UNIT_FIELD_NUMBER: builtins.int + TEST_PROCESS_FIELD_NUMBER: builtins.int + SCORE_FIELD_NUMBER: builtins.int + END_GAME_FIELD_NUMBER: builtins.int + UNIT_VALUE_FIELD_NUMBER: builtins.int + @property + def draw(self) -> global___DebugDraw: ... + game_state: global___DebugGameState.ValueType + @property + def create_unit(self) -> global___DebugCreateUnit: ... + @property + def kill_unit(self) -> global___DebugKillUnit: ... + @property + def test_process(self) -> global___DebugTestProcess: ... + @property + def score(self) -> global___DebugSetScore: + """Useful only for single-player "curriculum" maps.""" + @property + def end_game(self) -> global___DebugEndGame: ... + @property + def unit_value(self) -> global___DebugSetUnitValue: ... + def __init__( + self, + *, + draw: global___DebugDraw | None = ..., + game_state: global___DebugGameState.ValueType | None = ..., + create_unit: global___DebugCreateUnit | None = ..., + kill_unit: global___DebugKillUnit | None = ..., + test_process: global___DebugTestProcess | None = ..., + score: global___DebugSetScore | None = ..., + end_game: global___DebugEndGame | None = ..., + unit_value: global___DebugSetUnitValue | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["command", b"command", "create_unit", b"create_unit", "draw", b"draw", "end_game", b"end_game", "game_state", b"game_state", "kill_unit", b"kill_unit", "score", b"score", "test_process", b"test_process", "unit_value", b"unit_value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["command", b"command", "create_unit", b"create_unit", "draw", b"draw", "end_game", b"end_game", "game_state", b"game_state", "kill_unit", b"kill_unit", "score", b"score", "test_process", b"test_process", "unit_value", b"unit_value"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["command", b"command"]) -> typing_extensions.Literal["draw", "game_state", "create_unit", "kill_unit", "test_process", "score", "end_game", "unit_value"] | None: ... + +global___DebugCommand = DebugCommand + +@typing_extensions.final +class DebugDraw(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TEXT_FIELD_NUMBER: builtins.int + LINES_FIELD_NUMBER: builtins.int + BOXES_FIELD_NUMBER: builtins.int + SPHERES_FIELD_NUMBER: builtins.int + @property + def text(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DebugText]: ... + @property + def lines(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DebugLine]: ... + @property + def boxes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DebugBox]: ... + @property + def spheres(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DebugSphere]: ... + def __init__( + self, + *, + text: collections.abc.Iterable[global___DebugText] | None = ..., + lines: collections.abc.Iterable[global___DebugLine] | None = ..., + boxes: collections.abc.Iterable[global___DebugBox] | None = ..., + spheres: collections.abc.Iterable[global___DebugSphere] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["boxes", b"boxes", "lines", b"lines", "spheres", b"spheres", "text", b"text"]) -> None: ... + +global___DebugDraw = DebugDraw + +@typing_extensions.final +class Line(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + P0_FIELD_NUMBER: builtins.int + P1_FIELD_NUMBER: builtins.int + @property + def p0(self) -> s2clientprotocol.common_pb2.Point: ... + @property + def p1(self) -> s2clientprotocol.common_pb2.Point: ... + def __init__( + self, + *, + p0: s2clientprotocol.common_pb2.Point | None = ..., + p1: s2clientprotocol.common_pb2.Point | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["p0", b"p0", "p1", b"p1"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["p0", b"p0", "p1", b"p1"]) -> None: ... + +global___Line = Line + +@typing_extensions.final +class Color(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + R_FIELD_NUMBER: builtins.int + G_FIELD_NUMBER: builtins.int + B_FIELD_NUMBER: builtins.int + r: builtins.int + g: builtins.int + b: builtins.int + def __init__( + self, + *, + r: builtins.int | None = ..., + g: builtins.int | None = ..., + b: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["b", b"b", "g", b"g", "r", b"r"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["b", b"b", "g", b"g", "r", b"r"]) -> None: ... + +global___Color = Color + +@typing_extensions.final +class DebugText(google.protobuf.message.Message): + """Display debug text on screen.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COLOR_FIELD_NUMBER: builtins.int + TEXT_FIELD_NUMBER: builtins.int + VIRTUAL_POS_FIELD_NUMBER: builtins.int + WORLD_POS_FIELD_NUMBER: builtins.int + SIZE_FIELD_NUMBER: builtins.int + @property + def color(self) -> global___Color: ... + text: builtins.str + """Text to display.""" + @property + def virtual_pos(self) -> s2clientprotocol.common_pb2.Point: + """Virtualized position in 2D (the screen is 0..1, 0..1 for any resolution).""" + @property + def world_pos(self) -> s2clientprotocol.common_pb2.Point: + """Position in the world.""" + size: builtins.int + """Pixel height of the text. Defaults to 8px.""" + def __init__( + self, + *, + color: global___Color | None = ..., + text: builtins.str | None = ..., + virtual_pos: s2clientprotocol.common_pb2.Point | None = ..., + world_pos: s2clientprotocol.common_pb2.Point | None = ..., + size: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["color", b"color", "size", b"size", "text", b"text", "virtual_pos", b"virtual_pos", "world_pos", b"world_pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["color", b"color", "size", b"size", "text", b"text", "virtual_pos", b"virtual_pos", "world_pos", b"world_pos"]) -> None: ... + +global___DebugText = DebugText + +@typing_extensions.final +class DebugLine(google.protobuf.message.Message): + """Display debug lines on screen.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COLOR_FIELD_NUMBER: builtins.int + LINE_FIELD_NUMBER: builtins.int + @property + def color(self) -> global___Color: ... + @property + def line(self) -> global___Line: + """World space line.""" + def __init__( + self, + *, + color: global___Color | None = ..., + line: global___Line | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["color", b"color", "line", b"line"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["color", b"color", "line", b"line"]) -> None: ... + +global___DebugLine = DebugLine + +@typing_extensions.final +class DebugBox(google.protobuf.message.Message): + """Display debug boxes on screen.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COLOR_FIELD_NUMBER: builtins.int + MIN_FIELD_NUMBER: builtins.int + MAX_FIELD_NUMBER: builtins.int + @property + def color(self) -> global___Color: ... + @property + def min(self) -> s2clientprotocol.common_pb2.Point: ... + @property + def max(self) -> s2clientprotocol.common_pb2.Point: ... + def __init__( + self, + *, + color: global___Color | None = ..., + min: s2clientprotocol.common_pb2.Point | None = ..., + max: s2clientprotocol.common_pb2.Point | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["color", b"color", "max", b"max", "min", b"min"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["color", b"color", "max", b"max", "min", b"min"]) -> None: ... + +global___DebugBox = DebugBox + +@typing_extensions.final +class DebugSphere(google.protobuf.message.Message): + """Display debug spheres on screen.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COLOR_FIELD_NUMBER: builtins.int + P_FIELD_NUMBER: builtins.int + R_FIELD_NUMBER: builtins.int + @property + def color(self) -> global___Color: ... + @property + def p(self) -> s2clientprotocol.common_pb2.Point: ... + r: builtins.float + def __init__( + self, + *, + color: global___Color | None = ..., + p: s2clientprotocol.common_pb2.Point | None = ..., + r: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["color", b"color", "p", b"p", "r", b"r"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["color", b"color", "p", b"p", "r", b"r"]) -> None: ... + +global___DebugSphere = DebugSphere + +@typing_extensions.final +class DebugCreateUnit(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_TYPE_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + POS_FIELD_NUMBER: builtins.int + QUANTITY_FIELD_NUMBER: builtins.int + unit_type: builtins.int + owner: builtins.int + @property + def pos(self) -> s2clientprotocol.common_pb2.Point2D: ... + quantity: builtins.int + def __init__( + self, + *, + unit_type: builtins.int | None = ..., + owner: builtins.int | None = ..., + pos: s2clientprotocol.common_pb2.Point2D | None = ..., + quantity: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["owner", b"owner", "pos", b"pos", "quantity", b"quantity", "unit_type", b"unit_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["owner", b"owner", "pos", b"pos", "quantity", b"quantity", "unit_type", b"unit_type"]) -> None: ... + +global___DebugCreateUnit = DebugCreateUnit + +@typing_extensions.final +class DebugKillUnit(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TAG_FIELD_NUMBER: builtins.int + @property + def tag(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def __init__( + self, + *, + tag: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["tag", b"tag"]) -> None: ... + +global___DebugKillUnit = DebugKillUnit + +@typing_extensions.final +class DebugTestProcess(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Test: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _TestEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DebugTestProcess._Test.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + hang: DebugTestProcess._Test.ValueType # 1 + crash: DebugTestProcess._Test.ValueType # 2 + exit: DebugTestProcess._Test.ValueType # 3 + + class Test(_Test, metaclass=_TestEnumTypeWrapper): ... + hang: DebugTestProcess.Test.ValueType # 1 + crash: DebugTestProcess.Test.ValueType # 2 + exit: DebugTestProcess.Test.ValueType # 3 + + TEST_FIELD_NUMBER: builtins.int + DELAY_MS_FIELD_NUMBER: builtins.int + test: global___DebugTestProcess.Test.ValueType + delay_ms: builtins.int + def __init__( + self, + *, + test: global___DebugTestProcess.Test.ValueType | None = ..., + delay_ms: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["delay_ms", b"delay_ms", "test", b"test"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["delay_ms", b"delay_ms", "test", b"test"]) -> None: ... + +global___DebugTestProcess = DebugTestProcess + +@typing_extensions.final +class DebugSetScore(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SCORE_FIELD_NUMBER: builtins.int + score: builtins.float + def __init__( + self, + *, + score: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["score", b"score"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["score", b"score"]) -> None: ... + +global___DebugSetScore = DebugSetScore + +@typing_extensions.final +class DebugEndGame(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _EndResult: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _EndResultEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DebugEndGame._EndResult.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Surrender: DebugEndGame._EndResult.ValueType # 1 + """Default if nothing is set. The current player admits defeat.""" + DeclareVictory: DebugEndGame._EndResult.ValueType # 2 + + class EndResult(_EndResult, metaclass=_EndResultEnumTypeWrapper): ... + Surrender: DebugEndGame.EndResult.ValueType # 1 + """Default if nothing is set. The current player admits defeat.""" + DeclareVictory: DebugEndGame.EndResult.ValueType # 2 + + END_RESULT_FIELD_NUMBER: builtins.int + end_result: global___DebugEndGame.EndResult.ValueType + def __init__( + self, + *, + end_result: global___DebugEndGame.EndResult.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["end_result", b"end_result"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["end_result", b"end_result"]) -> None: ... + +global___DebugEndGame = DebugEndGame + +@typing_extensions.final +class DebugSetUnitValue(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _UnitValue: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _UnitValueEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DebugSetUnitValue._UnitValue.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Energy: DebugSetUnitValue._UnitValue.ValueType # 1 + Life: DebugSetUnitValue._UnitValue.ValueType # 2 + Shields: DebugSetUnitValue._UnitValue.ValueType # 3 + + class UnitValue(_UnitValue, metaclass=_UnitValueEnumTypeWrapper): ... + Energy: DebugSetUnitValue.UnitValue.ValueType # 1 + Life: DebugSetUnitValue.UnitValue.ValueType # 2 + Shields: DebugSetUnitValue.UnitValue.ValueType # 3 + + UNIT_VALUE_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + UNIT_TAG_FIELD_NUMBER: builtins.int + unit_value: global___DebugSetUnitValue.UnitValue.ValueType + value: builtins.float + unit_tag: builtins.int + def __init__( + self, + *, + unit_value: global___DebugSetUnitValue.UnitValue.ValueType | None = ..., + value: builtins.float | None = ..., + unit_tag: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["unit_tag", b"unit_tag", "unit_value", b"unit_value", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["unit_tag", b"unit_tag", "unit_value", b"unit_value", "value", b"value"]) -> None: ... + +global___DebugSetUnitValue = DebugSetUnitValue diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/error_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/error_pb2.pyi new file mode 100644 index 000000000..dce11d14b --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/error_pb2.pyi @@ -0,0 +1,455 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _ActionResult: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _ActionResultEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ActionResult.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Success: _ActionResult.ValueType # 1 + NotSupported: _ActionResult.ValueType # 2 + Error: _ActionResult.ValueType # 3 + CantQueueThatOrder: _ActionResult.ValueType # 4 + Retry: _ActionResult.ValueType # 5 + Cooldown: _ActionResult.ValueType # 6 + QueueIsFull: _ActionResult.ValueType # 7 + RallyQueueIsFull: _ActionResult.ValueType # 8 + NotEnoughMinerals: _ActionResult.ValueType # 9 + NotEnoughVespene: _ActionResult.ValueType # 10 + NotEnoughTerrazine: _ActionResult.ValueType # 11 + NotEnoughCustom: _ActionResult.ValueType # 12 + NotEnoughFood: _ActionResult.ValueType # 13 + FoodUsageImpossible: _ActionResult.ValueType # 14 + NotEnoughLife: _ActionResult.ValueType # 15 + NotEnoughShields: _ActionResult.ValueType # 16 + NotEnoughEnergy: _ActionResult.ValueType # 17 + LifeSuppressed: _ActionResult.ValueType # 18 + ShieldsSuppressed: _ActionResult.ValueType # 19 + EnergySuppressed: _ActionResult.ValueType # 20 + NotEnoughCharges: _ActionResult.ValueType # 21 + CantAddMoreCharges: _ActionResult.ValueType # 22 + TooMuchMinerals: _ActionResult.ValueType # 23 + TooMuchVespene: _ActionResult.ValueType # 24 + TooMuchTerrazine: _ActionResult.ValueType # 25 + TooMuchCustom: _ActionResult.ValueType # 26 + TooMuchFood: _ActionResult.ValueType # 27 + TooMuchLife: _ActionResult.ValueType # 28 + TooMuchShields: _ActionResult.ValueType # 29 + TooMuchEnergy: _ActionResult.ValueType # 30 + MustTargetUnitWithLife: _ActionResult.ValueType # 31 + MustTargetUnitWithShields: _ActionResult.ValueType # 32 + MustTargetUnitWithEnergy: _ActionResult.ValueType # 33 + CantTrade: _ActionResult.ValueType # 34 + CantSpend: _ActionResult.ValueType # 35 + CantTargetThatUnit: _ActionResult.ValueType # 36 + CouldntAllocateUnit: _ActionResult.ValueType # 37 + UnitCantMove: _ActionResult.ValueType # 38 + TransportIsHoldingPosition: _ActionResult.ValueType # 39 + BuildTechRequirementsNotMet: _ActionResult.ValueType # 40 + CantFindPlacementLocation: _ActionResult.ValueType # 41 + CantBuildOnThat: _ActionResult.ValueType # 42 + CantBuildTooCloseToDropOff: _ActionResult.ValueType # 43 + CantBuildLocationInvalid: _ActionResult.ValueType # 44 + CantSeeBuildLocation: _ActionResult.ValueType # 45 + CantBuildTooCloseToCreepSource: _ActionResult.ValueType # 46 + CantBuildTooCloseToResources: _ActionResult.ValueType # 47 + CantBuildTooFarFromWater: _ActionResult.ValueType # 48 + CantBuildTooFarFromCreepSource: _ActionResult.ValueType # 49 + CantBuildTooFarFromBuildPowerSource: _ActionResult.ValueType # 50 + CantBuildOnDenseTerrain: _ActionResult.ValueType # 51 + CantTrainTooFarFromTrainPowerSource: _ActionResult.ValueType # 52 + CantLandLocationInvalid: _ActionResult.ValueType # 53 + CantSeeLandLocation: _ActionResult.ValueType # 54 + CantLandTooCloseToCreepSource: _ActionResult.ValueType # 55 + CantLandTooCloseToResources: _ActionResult.ValueType # 56 + CantLandTooFarFromWater: _ActionResult.ValueType # 57 + CantLandTooFarFromCreepSource: _ActionResult.ValueType # 58 + CantLandTooFarFromBuildPowerSource: _ActionResult.ValueType # 59 + CantLandTooFarFromTrainPowerSource: _ActionResult.ValueType # 60 + CantLandOnDenseTerrain: _ActionResult.ValueType # 61 + AddOnTooFarFromBuilding: _ActionResult.ValueType # 62 + MustBuildRefineryFirst: _ActionResult.ValueType # 63 + BuildingIsUnderConstruction: _ActionResult.ValueType # 64 + CantFindDropOff: _ActionResult.ValueType # 65 + CantLoadOtherPlayersUnits: _ActionResult.ValueType # 66 + NotEnoughRoomToLoadUnit: _ActionResult.ValueType # 67 + CantUnloadUnitsThere: _ActionResult.ValueType # 68 + CantWarpInUnitsThere: _ActionResult.ValueType # 69 + CantLoadImmobileUnits: _ActionResult.ValueType # 70 + CantRechargeImmobileUnits: _ActionResult.ValueType # 71 + CantRechargeUnderConstructionUnits: _ActionResult.ValueType # 72 + CantLoadThatUnit: _ActionResult.ValueType # 73 + NoCargoToUnload: _ActionResult.ValueType # 74 + LoadAllNoTargetsFound: _ActionResult.ValueType # 75 + NotWhileOccupied: _ActionResult.ValueType # 76 + CantAttackWithoutAmmo: _ActionResult.ValueType # 77 + CantHoldAnyMoreAmmo: _ActionResult.ValueType # 78 + TechRequirementsNotMet: _ActionResult.ValueType # 79 + MustLockdownUnitFirst: _ActionResult.ValueType # 80 + MustTargetUnit: _ActionResult.ValueType # 81 + MustTargetInventory: _ActionResult.ValueType # 82 + MustTargetVisibleUnit: _ActionResult.ValueType # 83 + MustTargetVisibleLocation: _ActionResult.ValueType # 84 + MustTargetWalkableLocation: _ActionResult.ValueType # 85 + MustTargetPawnableUnit: _ActionResult.ValueType # 86 + YouCantControlThatUnit: _ActionResult.ValueType # 87 + YouCantIssueCommandsToThatUnit: _ActionResult.ValueType # 88 + MustTargetResources: _ActionResult.ValueType # 89 + RequiresHealTarget: _ActionResult.ValueType # 90 + RequiresRepairTarget: _ActionResult.ValueType # 91 + NoItemsToDrop: _ActionResult.ValueType # 92 + CantHoldAnyMoreItems: _ActionResult.ValueType # 93 + CantHoldThat: _ActionResult.ValueType # 94 + TargetHasNoInventory: _ActionResult.ValueType # 95 + CantDropThisItem: _ActionResult.ValueType # 96 + CantMoveThisItem: _ActionResult.ValueType # 97 + CantPawnThisUnit: _ActionResult.ValueType # 98 + MustTargetCaster: _ActionResult.ValueType # 99 + CantTargetCaster: _ActionResult.ValueType # 100 + MustTargetOuter: _ActionResult.ValueType # 101 + CantTargetOuter: _ActionResult.ValueType # 102 + MustTargetYourOwnUnits: _ActionResult.ValueType # 103 + CantTargetYourOwnUnits: _ActionResult.ValueType # 104 + MustTargetFriendlyUnits: _ActionResult.ValueType # 105 + CantTargetFriendlyUnits: _ActionResult.ValueType # 106 + MustTargetNeutralUnits: _ActionResult.ValueType # 107 + CantTargetNeutralUnits: _ActionResult.ValueType # 108 + MustTargetEnemyUnits: _ActionResult.ValueType # 109 + CantTargetEnemyUnits: _ActionResult.ValueType # 110 + MustTargetAirUnits: _ActionResult.ValueType # 111 + CantTargetAirUnits: _ActionResult.ValueType # 112 + MustTargetGroundUnits: _ActionResult.ValueType # 113 + CantTargetGroundUnits: _ActionResult.ValueType # 114 + MustTargetStructures: _ActionResult.ValueType # 115 + CantTargetStructures: _ActionResult.ValueType # 116 + MustTargetLightUnits: _ActionResult.ValueType # 117 + CantTargetLightUnits: _ActionResult.ValueType # 118 + MustTargetArmoredUnits: _ActionResult.ValueType # 119 + CantTargetArmoredUnits: _ActionResult.ValueType # 120 + MustTargetBiologicalUnits: _ActionResult.ValueType # 121 + CantTargetBiologicalUnits: _ActionResult.ValueType # 122 + MustTargetHeroicUnits: _ActionResult.ValueType # 123 + CantTargetHeroicUnits: _ActionResult.ValueType # 124 + MustTargetRoboticUnits: _ActionResult.ValueType # 125 + CantTargetRoboticUnits: _ActionResult.ValueType # 126 + MustTargetMechanicalUnits: _ActionResult.ValueType # 127 + CantTargetMechanicalUnits: _ActionResult.ValueType # 128 + MustTargetPsionicUnits: _ActionResult.ValueType # 129 + CantTargetPsionicUnits: _ActionResult.ValueType # 130 + MustTargetMassiveUnits: _ActionResult.ValueType # 131 + CantTargetMassiveUnits: _ActionResult.ValueType # 132 + MustTargetMissile: _ActionResult.ValueType # 133 + CantTargetMissile: _ActionResult.ValueType # 134 + MustTargetWorkerUnits: _ActionResult.ValueType # 135 + CantTargetWorkerUnits: _ActionResult.ValueType # 136 + MustTargetEnergyCapableUnits: _ActionResult.ValueType # 137 + CantTargetEnergyCapableUnits: _ActionResult.ValueType # 138 + MustTargetShieldCapableUnits: _ActionResult.ValueType # 139 + CantTargetShieldCapableUnits: _ActionResult.ValueType # 140 + MustTargetFlyers: _ActionResult.ValueType # 141 + CantTargetFlyers: _ActionResult.ValueType # 142 + MustTargetBuriedUnits: _ActionResult.ValueType # 143 + CantTargetBuriedUnits: _ActionResult.ValueType # 144 + MustTargetCloakedUnits: _ActionResult.ValueType # 145 + CantTargetCloakedUnits: _ActionResult.ValueType # 146 + MustTargetUnitsInAStasisField: _ActionResult.ValueType # 147 + CantTargetUnitsInAStasisField: _ActionResult.ValueType # 148 + MustTargetUnderConstructionUnits: _ActionResult.ValueType # 149 + CantTargetUnderConstructionUnits: _ActionResult.ValueType # 150 + MustTargetDeadUnits: _ActionResult.ValueType # 151 + CantTargetDeadUnits: _ActionResult.ValueType # 152 + MustTargetRevivableUnits: _ActionResult.ValueType # 153 + CantTargetRevivableUnits: _ActionResult.ValueType # 154 + MustTargetHiddenUnits: _ActionResult.ValueType # 155 + CantTargetHiddenUnits: _ActionResult.ValueType # 156 + CantRechargeOtherPlayersUnits: _ActionResult.ValueType # 157 + MustTargetHallucinations: _ActionResult.ValueType # 158 + CantTargetHallucinations: _ActionResult.ValueType # 159 + MustTargetInvulnerableUnits: _ActionResult.ValueType # 160 + CantTargetInvulnerableUnits: _ActionResult.ValueType # 161 + MustTargetDetectedUnits: _ActionResult.ValueType # 162 + CantTargetDetectedUnits: _ActionResult.ValueType # 163 + CantTargetUnitWithEnergy: _ActionResult.ValueType # 164 + CantTargetUnitWithShields: _ActionResult.ValueType # 165 + MustTargetUncommandableUnits: _ActionResult.ValueType # 166 + CantTargetUncommandableUnits: _ActionResult.ValueType # 167 + MustTargetPreventDefeatUnits: _ActionResult.ValueType # 168 + CantTargetPreventDefeatUnits: _ActionResult.ValueType # 169 + MustTargetPreventRevealUnits: _ActionResult.ValueType # 170 + CantTargetPreventRevealUnits: _ActionResult.ValueType # 171 + MustTargetPassiveUnits: _ActionResult.ValueType # 172 + CantTargetPassiveUnits: _ActionResult.ValueType # 173 + MustTargetStunnedUnits: _ActionResult.ValueType # 174 + CantTargetStunnedUnits: _ActionResult.ValueType # 175 + MustTargetSummonedUnits: _ActionResult.ValueType # 176 + CantTargetSummonedUnits: _ActionResult.ValueType # 177 + MustTargetUser1: _ActionResult.ValueType # 178 + CantTargetUser1: _ActionResult.ValueType # 179 + MustTargetUnstoppableUnits: _ActionResult.ValueType # 180 + CantTargetUnstoppableUnits: _ActionResult.ValueType # 181 + MustTargetResistantUnits: _ActionResult.ValueType # 182 + CantTargetResistantUnits: _ActionResult.ValueType # 183 + MustTargetDazedUnits: _ActionResult.ValueType # 184 + CantTargetDazedUnits: _ActionResult.ValueType # 185 + CantLockdown: _ActionResult.ValueType # 186 + CantMindControl: _ActionResult.ValueType # 187 + MustTargetDestructibles: _ActionResult.ValueType # 188 + CantTargetDestructibles: _ActionResult.ValueType # 189 + MustTargetItems: _ActionResult.ValueType # 190 + CantTargetItems: _ActionResult.ValueType # 191 + NoCalldownAvailable: _ActionResult.ValueType # 192 + WaypointListFull: _ActionResult.ValueType # 193 + MustTargetRace: _ActionResult.ValueType # 194 + CantTargetRace: _ActionResult.ValueType # 195 + MustTargetSimilarUnits: _ActionResult.ValueType # 196 + CantTargetSimilarUnits: _ActionResult.ValueType # 197 + CantFindEnoughTargets: _ActionResult.ValueType # 198 + AlreadySpawningLarva: _ActionResult.ValueType # 199 + CantTargetExhaustedResources: _ActionResult.ValueType # 200 + CantUseMinimap: _ActionResult.ValueType # 201 + CantUseInfoPanel: _ActionResult.ValueType # 202 + OrderQueueIsFull: _ActionResult.ValueType # 203 + CantHarvestThatResource: _ActionResult.ValueType # 204 + HarvestersNotRequired: _ActionResult.ValueType # 205 + AlreadyTargeted: _ActionResult.ValueType # 206 + CantAttackWeaponsDisabled: _ActionResult.ValueType # 207 + CouldntReachTarget: _ActionResult.ValueType # 208 + TargetIsOutOfRange: _ActionResult.ValueType # 209 + TargetIsTooClose: _ActionResult.ValueType # 210 + TargetIsOutOfArc: _ActionResult.ValueType # 211 + CantFindTeleportLocation: _ActionResult.ValueType # 212 + InvalidItemClass: _ActionResult.ValueType # 213 + CantFindCancelOrder: _ActionResult.ValueType # 214 + +class ActionResult(_ActionResult, metaclass=_ActionResultEnumTypeWrapper): ... + +Success: ActionResult.ValueType # 1 +NotSupported: ActionResult.ValueType # 2 +Error: ActionResult.ValueType # 3 +CantQueueThatOrder: ActionResult.ValueType # 4 +Retry: ActionResult.ValueType # 5 +Cooldown: ActionResult.ValueType # 6 +QueueIsFull: ActionResult.ValueType # 7 +RallyQueueIsFull: ActionResult.ValueType # 8 +NotEnoughMinerals: ActionResult.ValueType # 9 +NotEnoughVespene: ActionResult.ValueType # 10 +NotEnoughTerrazine: ActionResult.ValueType # 11 +NotEnoughCustom: ActionResult.ValueType # 12 +NotEnoughFood: ActionResult.ValueType # 13 +FoodUsageImpossible: ActionResult.ValueType # 14 +NotEnoughLife: ActionResult.ValueType # 15 +NotEnoughShields: ActionResult.ValueType # 16 +NotEnoughEnergy: ActionResult.ValueType # 17 +LifeSuppressed: ActionResult.ValueType # 18 +ShieldsSuppressed: ActionResult.ValueType # 19 +EnergySuppressed: ActionResult.ValueType # 20 +NotEnoughCharges: ActionResult.ValueType # 21 +CantAddMoreCharges: ActionResult.ValueType # 22 +TooMuchMinerals: ActionResult.ValueType # 23 +TooMuchVespene: ActionResult.ValueType # 24 +TooMuchTerrazine: ActionResult.ValueType # 25 +TooMuchCustom: ActionResult.ValueType # 26 +TooMuchFood: ActionResult.ValueType # 27 +TooMuchLife: ActionResult.ValueType # 28 +TooMuchShields: ActionResult.ValueType # 29 +TooMuchEnergy: ActionResult.ValueType # 30 +MustTargetUnitWithLife: ActionResult.ValueType # 31 +MustTargetUnitWithShields: ActionResult.ValueType # 32 +MustTargetUnitWithEnergy: ActionResult.ValueType # 33 +CantTrade: ActionResult.ValueType # 34 +CantSpend: ActionResult.ValueType # 35 +CantTargetThatUnit: ActionResult.ValueType # 36 +CouldntAllocateUnit: ActionResult.ValueType # 37 +UnitCantMove: ActionResult.ValueType # 38 +TransportIsHoldingPosition: ActionResult.ValueType # 39 +BuildTechRequirementsNotMet: ActionResult.ValueType # 40 +CantFindPlacementLocation: ActionResult.ValueType # 41 +CantBuildOnThat: ActionResult.ValueType # 42 +CantBuildTooCloseToDropOff: ActionResult.ValueType # 43 +CantBuildLocationInvalid: ActionResult.ValueType # 44 +CantSeeBuildLocation: ActionResult.ValueType # 45 +CantBuildTooCloseToCreepSource: ActionResult.ValueType # 46 +CantBuildTooCloseToResources: ActionResult.ValueType # 47 +CantBuildTooFarFromWater: ActionResult.ValueType # 48 +CantBuildTooFarFromCreepSource: ActionResult.ValueType # 49 +CantBuildTooFarFromBuildPowerSource: ActionResult.ValueType # 50 +CantBuildOnDenseTerrain: ActionResult.ValueType # 51 +CantTrainTooFarFromTrainPowerSource: ActionResult.ValueType # 52 +CantLandLocationInvalid: ActionResult.ValueType # 53 +CantSeeLandLocation: ActionResult.ValueType # 54 +CantLandTooCloseToCreepSource: ActionResult.ValueType # 55 +CantLandTooCloseToResources: ActionResult.ValueType # 56 +CantLandTooFarFromWater: ActionResult.ValueType # 57 +CantLandTooFarFromCreepSource: ActionResult.ValueType # 58 +CantLandTooFarFromBuildPowerSource: ActionResult.ValueType # 59 +CantLandTooFarFromTrainPowerSource: ActionResult.ValueType # 60 +CantLandOnDenseTerrain: ActionResult.ValueType # 61 +AddOnTooFarFromBuilding: ActionResult.ValueType # 62 +MustBuildRefineryFirst: ActionResult.ValueType # 63 +BuildingIsUnderConstruction: ActionResult.ValueType # 64 +CantFindDropOff: ActionResult.ValueType # 65 +CantLoadOtherPlayersUnits: ActionResult.ValueType # 66 +NotEnoughRoomToLoadUnit: ActionResult.ValueType # 67 +CantUnloadUnitsThere: ActionResult.ValueType # 68 +CantWarpInUnitsThere: ActionResult.ValueType # 69 +CantLoadImmobileUnits: ActionResult.ValueType # 70 +CantRechargeImmobileUnits: ActionResult.ValueType # 71 +CantRechargeUnderConstructionUnits: ActionResult.ValueType # 72 +CantLoadThatUnit: ActionResult.ValueType # 73 +NoCargoToUnload: ActionResult.ValueType # 74 +LoadAllNoTargetsFound: ActionResult.ValueType # 75 +NotWhileOccupied: ActionResult.ValueType # 76 +CantAttackWithoutAmmo: ActionResult.ValueType # 77 +CantHoldAnyMoreAmmo: ActionResult.ValueType # 78 +TechRequirementsNotMet: ActionResult.ValueType # 79 +MustLockdownUnitFirst: ActionResult.ValueType # 80 +MustTargetUnit: ActionResult.ValueType # 81 +MustTargetInventory: ActionResult.ValueType # 82 +MustTargetVisibleUnit: ActionResult.ValueType # 83 +MustTargetVisibleLocation: ActionResult.ValueType # 84 +MustTargetWalkableLocation: ActionResult.ValueType # 85 +MustTargetPawnableUnit: ActionResult.ValueType # 86 +YouCantControlThatUnit: ActionResult.ValueType # 87 +YouCantIssueCommandsToThatUnit: ActionResult.ValueType # 88 +MustTargetResources: ActionResult.ValueType # 89 +RequiresHealTarget: ActionResult.ValueType # 90 +RequiresRepairTarget: ActionResult.ValueType # 91 +NoItemsToDrop: ActionResult.ValueType # 92 +CantHoldAnyMoreItems: ActionResult.ValueType # 93 +CantHoldThat: ActionResult.ValueType # 94 +TargetHasNoInventory: ActionResult.ValueType # 95 +CantDropThisItem: ActionResult.ValueType # 96 +CantMoveThisItem: ActionResult.ValueType # 97 +CantPawnThisUnit: ActionResult.ValueType # 98 +MustTargetCaster: ActionResult.ValueType # 99 +CantTargetCaster: ActionResult.ValueType # 100 +MustTargetOuter: ActionResult.ValueType # 101 +CantTargetOuter: ActionResult.ValueType # 102 +MustTargetYourOwnUnits: ActionResult.ValueType # 103 +CantTargetYourOwnUnits: ActionResult.ValueType # 104 +MustTargetFriendlyUnits: ActionResult.ValueType # 105 +CantTargetFriendlyUnits: ActionResult.ValueType # 106 +MustTargetNeutralUnits: ActionResult.ValueType # 107 +CantTargetNeutralUnits: ActionResult.ValueType # 108 +MustTargetEnemyUnits: ActionResult.ValueType # 109 +CantTargetEnemyUnits: ActionResult.ValueType # 110 +MustTargetAirUnits: ActionResult.ValueType # 111 +CantTargetAirUnits: ActionResult.ValueType # 112 +MustTargetGroundUnits: ActionResult.ValueType # 113 +CantTargetGroundUnits: ActionResult.ValueType # 114 +MustTargetStructures: ActionResult.ValueType # 115 +CantTargetStructures: ActionResult.ValueType # 116 +MustTargetLightUnits: ActionResult.ValueType # 117 +CantTargetLightUnits: ActionResult.ValueType # 118 +MustTargetArmoredUnits: ActionResult.ValueType # 119 +CantTargetArmoredUnits: ActionResult.ValueType # 120 +MustTargetBiologicalUnits: ActionResult.ValueType # 121 +CantTargetBiologicalUnits: ActionResult.ValueType # 122 +MustTargetHeroicUnits: ActionResult.ValueType # 123 +CantTargetHeroicUnits: ActionResult.ValueType # 124 +MustTargetRoboticUnits: ActionResult.ValueType # 125 +CantTargetRoboticUnits: ActionResult.ValueType # 126 +MustTargetMechanicalUnits: ActionResult.ValueType # 127 +CantTargetMechanicalUnits: ActionResult.ValueType # 128 +MustTargetPsionicUnits: ActionResult.ValueType # 129 +CantTargetPsionicUnits: ActionResult.ValueType # 130 +MustTargetMassiveUnits: ActionResult.ValueType # 131 +CantTargetMassiveUnits: ActionResult.ValueType # 132 +MustTargetMissile: ActionResult.ValueType # 133 +CantTargetMissile: ActionResult.ValueType # 134 +MustTargetWorkerUnits: ActionResult.ValueType # 135 +CantTargetWorkerUnits: ActionResult.ValueType # 136 +MustTargetEnergyCapableUnits: ActionResult.ValueType # 137 +CantTargetEnergyCapableUnits: ActionResult.ValueType # 138 +MustTargetShieldCapableUnits: ActionResult.ValueType # 139 +CantTargetShieldCapableUnits: ActionResult.ValueType # 140 +MustTargetFlyers: ActionResult.ValueType # 141 +CantTargetFlyers: ActionResult.ValueType # 142 +MustTargetBuriedUnits: ActionResult.ValueType # 143 +CantTargetBuriedUnits: ActionResult.ValueType # 144 +MustTargetCloakedUnits: ActionResult.ValueType # 145 +CantTargetCloakedUnits: ActionResult.ValueType # 146 +MustTargetUnitsInAStasisField: ActionResult.ValueType # 147 +CantTargetUnitsInAStasisField: ActionResult.ValueType # 148 +MustTargetUnderConstructionUnits: ActionResult.ValueType # 149 +CantTargetUnderConstructionUnits: ActionResult.ValueType # 150 +MustTargetDeadUnits: ActionResult.ValueType # 151 +CantTargetDeadUnits: ActionResult.ValueType # 152 +MustTargetRevivableUnits: ActionResult.ValueType # 153 +CantTargetRevivableUnits: ActionResult.ValueType # 154 +MustTargetHiddenUnits: ActionResult.ValueType # 155 +CantTargetHiddenUnits: ActionResult.ValueType # 156 +CantRechargeOtherPlayersUnits: ActionResult.ValueType # 157 +MustTargetHallucinations: ActionResult.ValueType # 158 +CantTargetHallucinations: ActionResult.ValueType # 159 +MustTargetInvulnerableUnits: ActionResult.ValueType # 160 +CantTargetInvulnerableUnits: ActionResult.ValueType # 161 +MustTargetDetectedUnits: ActionResult.ValueType # 162 +CantTargetDetectedUnits: ActionResult.ValueType # 163 +CantTargetUnitWithEnergy: ActionResult.ValueType # 164 +CantTargetUnitWithShields: ActionResult.ValueType # 165 +MustTargetUncommandableUnits: ActionResult.ValueType # 166 +CantTargetUncommandableUnits: ActionResult.ValueType # 167 +MustTargetPreventDefeatUnits: ActionResult.ValueType # 168 +CantTargetPreventDefeatUnits: ActionResult.ValueType # 169 +MustTargetPreventRevealUnits: ActionResult.ValueType # 170 +CantTargetPreventRevealUnits: ActionResult.ValueType # 171 +MustTargetPassiveUnits: ActionResult.ValueType # 172 +CantTargetPassiveUnits: ActionResult.ValueType # 173 +MustTargetStunnedUnits: ActionResult.ValueType # 174 +CantTargetStunnedUnits: ActionResult.ValueType # 175 +MustTargetSummonedUnits: ActionResult.ValueType # 176 +CantTargetSummonedUnits: ActionResult.ValueType # 177 +MustTargetUser1: ActionResult.ValueType # 178 +CantTargetUser1: ActionResult.ValueType # 179 +MustTargetUnstoppableUnits: ActionResult.ValueType # 180 +CantTargetUnstoppableUnits: ActionResult.ValueType # 181 +MustTargetResistantUnits: ActionResult.ValueType # 182 +CantTargetResistantUnits: ActionResult.ValueType # 183 +MustTargetDazedUnits: ActionResult.ValueType # 184 +CantTargetDazedUnits: ActionResult.ValueType # 185 +CantLockdown: ActionResult.ValueType # 186 +CantMindControl: ActionResult.ValueType # 187 +MustTargetDestructibles: ActionResult.ValueType # 188 +CantTargetDestructibles: ActionResult.ValueType # 189 +MustTargetItems: ActionResult.ValueType # 190 +CantTargetItems: ActionResult.ValueType # 191 +NoCalldownAvailable: ActionResult.ValueType # 192 +WaypointListFull: ActionResult.ValueType # 193 +MustTargetRace: ActionResult.ValueType # 194 +CantTargetRace: ActionResult.ValueType # 195 +MustTargetSimilarUnits: ActionResult.ValueType # 196 +CantTargetSimilarUnits: ActionResult.ValueType # 197 +CantFindEnoughTargets: ActionResult.ValueType # 198 +AlreadySpawningLarva: ActionResult.ValueType # 199 +CantTargetExhaustedResources: ActionResult.ValueType # 200 +CantUseMinimap: ActionResult.ValueType # 201 +CantUseInfoPanel: ActionResult.ValueType # 202 +OrderQueueIsFull: ActionResult.ValueType # 203 +CantHarvestThatResource: ActionResult.ValueType # 204 +HarvestersNotRequired: ActionResult.ValueType # 205 +AlreadyTargeted: ActionResult.ValueType # 206 +CantAttackWeaponsDisabled: ActionResult.ValueType # 207 +CouldntReachTarget: ActionResult.ValueType # 208 +TargetIsOutOfRange: ActionResult.ValueType # 209 +TargetIsTooClose: ActionResult.ValueType # 210 +TargetIsOutOfArc: ActionResult.ValueType # 211 +CantFindTeleportLocation: ActionResult.ValueType # 212 +InvalidItemClass: ActionResult.ValueType # 213 +CantFindCancelOrder: ActionResult.ValueType # 214 +global___ActionResult = ActionResult diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/query_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/query_pb2.pyi new file mode 100644 index 000000000..2077427a1 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/query_pb2.pyi @@ -0,0 +1,199 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +import s2clientprotocol.common_pb2 +import s2clientprotocol.error_pb2 +import sys + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing_extensions.final +class RequestQuery(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PATHING_FIELD_NUMBER: builtins.int + ABILITIES_FIELD_NUMBER: builtins.int + PLACEMENTS_FIELD_NUMBER: builtins.int + IGNORE_RESOURCE_REQUIREMENTS_FIELD_NUMBER: builtins.int + @property + def pathing(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RequestQueryPathing]: ... + @property + def abilities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RequestQueryAvailableAbilities]: ... + @property + def placements(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RequestQueryBuildingPlacement]: ... + ignore_resource_requirements: builtins.bool + """Ignores requirements like food, minerals and so on.""" + def __init__( + self, + *, + pathing: collections.abc.Iterable[global___RequestQueryPathing] | None = ..., + abilities: collections.abc.Iterable[global___RequestQueryAvailableAbilities] | None = ..., + placements: collections.abc.Iterable[global___RequestQueryBuildingPlacement] | None = ..., + ignore_resource_requirements: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ignore_resource_requirements", b"ignore_resource_requirements"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["abilities", b"abilities", "ignore_resource_requirements", b"ignore_resource_requirements", "pathing", b"pathing", "placements", b"placements"]) -> None: ... + +global___RequestQuery = RequestQuery + +@typing_extensions.final +class ResponseQuery(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PATHING_FIELD_NUMBER: builtins.int + ABILITIES_FIELD_NUMBER: builtins.int + PLACEMENTS_FIELD_NUMBER: builtins.int + @property + def pathing(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResponseQueryPathing]: ... + @property + def abilities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResponseQueryAvailableAbilities]: ... + @property + def placements(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResponseQueryBuildingPlacement]: ... + def __init__( + self, + *, + pathing: collections.abc.Iterable[global___ResponseQueryPathing] | None = ..., + abilities: collections.abc.Iterable[global___ResponseQueryAvailableAbilities] | None = ..., + placements: collections.abc.Iterable[global___ResponseQueryBuildingPlacement] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["abilities", b"abilities", "pathing", b"pathing", "placements", b"placements"]) -> None: ... + +global___ResponseQuery = ResponseQuery + +@typing_extensions.final +class RequestQueryPathing(google.protobuf.message.Message): + """--------------------------------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + START_POS_FIELD_NUMBER: builtins.int + UNIT_TAG_FIELD_NUMBER: builtins.int + END_POS_FIELD_NUMBER: builtins.int + @property + def start_pos(self) -> s2clientprotocol.common_pb2.Point2D: ... + unit_tag: builtins.int + @property + def end_pos(self) -> s2clientprotocol.common_pb2.Point2D: ... + def __init__( + self, + *, + start_pos: s2clientprotocol.common_pb2.Point2D | None = ..., + unit_tag: builtins.int | None = ..., + end_pos: s2clientprotocol.common_pb2.Point2D | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["end_pos", b"end_pos", "start", b"start", "start_pos", b"start_pos", "unit_tag", b"unit_tag"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["end_pos", b"end_pos", "start", b"start", "start_pos", b"start_pos", "unit_tag", b"unit_tag"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["start", b"start"]) -> typing_extensions.Literal["start_pos", "unit_tag"] | None: ... + +global___RequestQueryPathing = RequestQueryPathing + +@typing_extensions.final +class ResponseQueryPathing(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DISTANCE_FIELD_NUMBER: builtins.int + distance: builtins.float + """0 if no path exists""" + def __init__( + self, + *, + distance: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["distance", b"distance"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["distance", b"distance"]) -> None: ... + +global___ResponseQueryPathing = ResponseQueryPathing + +@typing_extensions.final +class RequestQueryAvailableAbilities(google.protobuf.message.Message): + """--------------------------------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_TAG_FIELD_NUMBER: builtins.int + unit_tag: builtins.int + def __init__( + self, + *, + unit_tag: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["unit_tag", b"unit_tag"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["unit_tag", b"unit_tag"]) -> None: ... + +global___RequestQueryAvailableAbilities = RequestQueryAvailableAbilities + +@typing_extensions.final +class ResponseQueryAvailableAbilities(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITIES_FIELD_NUMBER: builtins.int + UNIT_TAG_FIELD_NUMBER: builtins.int + UNIT_TYPE_ID_FIELD_NUMBER: builtins.int + @property + def abilities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.common_pb2.AvailableAbility]: ... + unit_tag: builtins.int + unit_type_id: builtins.int + def __init__( + self, + *, + abilities: collections.abc.Iterable[s2clientprotocol.common_pb2.AvailableAbility] | None = ..., + unit_tag: builtins.int | None = ..., + unit_type_id: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["unit_tag", b"unit_tag", "unit_type_id", b"unit_type_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["abilities", b"abilities", "unit_tag", b"unit_tag", "unit_type_id", b"unit_type_id"]) -> None: ... + +global___ResponseQueryAvailableAbilities = ResponseQueryAvailableAbilities + +@typing_extensions.final +class RequestQueryBuildingPlacement(google.protobuf.message.Message): + """--------------------------------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITY_ID_FIELD_NUMBER: builtins.int + TARGET_POS_FIELD_NUMBER: builtins.int + PLACING_UNIT_TAG_FIELD_NUMBER: builtins.int + ability_id: builtins.int + @property + def target_pos(self) -> s2clientprotocol.common_pb2.Point2D: ... + placing_unit_tag: builtins.int + """Not required""" + def __init__( + self, + *, + ability_id: builtins.int | None = ..., + target_pos: s2clientprotocol.common_pb2.Point2D | None = ..., + placing_unit_tag: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "placing_unit_tag", b"placing_unit_tag", "target_pos", b"target_pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "placing_unit_tag", b"placing_unit_tag", "target_pos", b"target_pos"]) -> None: ... + +global___RequestQueryBuildingPlacement = RequestQueryBuildingPlacement + +@typing_extensions.final +class ResponseQueryBuildingPlacement(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RESULT_FIELD_NUMBER: builtins.int + result: s2clientprotocol.error_pb2.ActionResult.ValueType + def __init__( + self, + *, + result: s2clientprotocol.error_pb2.ActionResult.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["result", b"result"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["result", b"result"]) -> None: ... + +global___ResponseQueryBuildingPlacement = ResponseQueryBuildingPlacement diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/raw_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/raw_pb2.pyi new file mode 100644 index 000000000..9a0c9aea4 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/raw_pb2.pyi @@ -0,0 +1,662 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import s2clientprotocol.common_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _DisplayType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _DisplayTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DisplayType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Visible: _DisplayType.ValueType # 1 + """Fully visible""" + Snapshot: _DisplayType.ValueType # 2 + """Dimmed version of unit left behind after entering fog of war""" + Hidden: _DisplayType.ValueType # 3 + """Fully hidden""" + Placeholder: _DisplayType.ValueType # 4 + """Building that hasn't started construction.""" + +class DisplayType(_DisplayType, metaclass=_DisplayTypeEnumTypeWrapper): ... + +Visible: DisplayType.ValueType # 1 +"""Fully visible""" +Snapshot: DisplayType.ValueType # 2 +"""Dimmed version of unit left behind after entering fog of war""" +Hidden: DisplayType.ValueType # 3 +"""Fully hidden""" +Placeholder: DisplayType.ValueType # 4 +"""Building that hasn't started construction.""" +global___DisplayType = DisplayType + +class _Alliance: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _AllianceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Alliance.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Self: _Alliance.ValueType # 1 + Ally: _Alliance.ValueType # 2 + Neutral: _Alliance.ValueType # 3 + Enemy: _Alliance.ValueType # 4 + +class Alliance(_Alliance, metaclass=_AllianceEnumTypeWrapper): ... + +Self: Alliance.ValueType # 1 +Ally: Alliance.ValueType # 2 +Neutral: Alliance.ValueType # 3 +Enemy: Alliance.ValueType # 4 +global___Alliance = Alliance + +class _CloakState: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _CloakStateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CloakState.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + CloakedUnknown: _CloakState.ValueType # 0 + """Under the fog, so unknown whether it's cloaked or not.""" + Cloaked: _CloakState.ValueType # 1 + CloakedDetected: _CloakState.ValueType # 2 + NotCloaked: _CloakState.ValueType # 3 + CloakedAllied: _CloakState.ValueType # 4 + +class CloakState(_CloakState, metaclass=_CloakStateEnumTypeWrapper): ... + +CloakedUnknown: CloakState.ValueType # 0 +"""Under the fog, so unknown whether it's cloaked or not.""" +Cloaked: CloakState.ValueType # 1 +CloakedDetected: CloakState.ValueType # 2 +NotCloaked: CloakState.ValueType # 3 +CloakedAllied: CloakState.ValueType # 4 +global___CloakState = CloakState + +@typing_extensions.final +class StartRaw(google.protobuf.message.Message): + """ + Start + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MAP_SIZE_FIELD_NUMBER: builtins.int + PATHING_GRID_FIELD_NUMBER: builtins.int + TERRAIN_HEIGHT_FIELD_NUMBER: builtins.int + PLACEMENT_GRID_FIELD_NUMBER: builtins.int + PLAYABLE_AREA_FIELD_NUMBER: builtins.int + START_LOCATIONS_FIELD_NUMBER: builtins.int + @property + def map_size(self) -> s2clientprotocol.common_pb2.Size2DI: + """Width and height of the map.""" + @property + def pathing_grid(self) -> s2clientprotocol.common_pb2.ImageData: + """1 bit bitmap of the pathing grid.""" + @property + def terrain_height(self) -> s2clientprotocol.common_pb2.ImageData: + """1 byte bitmap of the terrain height.""" + @property + def placement_grid(self) -> s2clientprotocol.common_pb2.ImageData: + """1 bit bitmap of the building placement grid.""" + @property + def playable_area(self) -> s2clientprotocol.common_pb2.RectangleI: + """The playable cells.""" + @property + def start_locations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.common_pb2.Point2D]: + """Possible start locations for players.""" + def __init__( + self, + *, + map_size: s2clientprotocol.common_pb2.Size2DI | None = ..., + pathing_grid: s2clientprotocol.common_pb2.ImageData | None = ..., + terrain_height: s2clientprotocol.common_pb2.ImageData | None = ..., + placement_grid: s2clientprotocol.common_pb2.ImageData | None = ..., + playable_area: s2clientprotocol.common_pb2.RectangleI | None = ..., + start_locations: collections.abc.Iterable[s2clientprotocol.common_pb2.Point2D] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["map_size", b"map_size", "pathing_grid", b"pathing_grid", "placement_grid", b"placement_grid", "playable_area", b"playable_area", "terrain_height", b"terrain_height"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["map_size", b"map_size", "pathing_grid", b"pathing_grid", "placement_grid", b"placement_grid", "playable_area", b"playable_area", "start_locations", b"start_locations", "terrain_height", b"terrain_height"]) -> None: ... + +global___StartRaw = StartRaw + +@typing_extensions.final +class ObservationRaw(google.protobuf.message.Message): + """ + Observation + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PLAYER_FIELD_NUMBER: builtins.int + UNITS_FIELD_NUMBER: builtins.int + MAP_STATE_FIELD_NUMBER: builtins.int + EVENT_FIELD_NUMBER: builtins.int + EFFECTS_FIELD_NUMBER: builtins.int + RADAR_FIELD_NUMBER: builtins.int + @property + def player(self) -> global___PlayerRaw: ... + @property + def units(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Unit]: ... + @property + def map_state(self) -> global___MapState: + """Fog of war, creep and so on. Board stuff that changes per frame.""" + @property + def event(self) -> global___Event: ... + @property + def effects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Effect]: ... + @property + def radar(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RadarRing]: ... + def __init__( + self, + *, + player: global___PlayerRaw | None = ..., + units: collections.abc.Iterable[global___Unit] | None = ..., + map_state: global___MapState | None = ..., + event: global___Event | None = ..., + effects: collections.abc.Iterable[global___Effect] | None = ..., + radar: collections.abc.Iterable[global___RadarRing] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["event", b"event", "map_state", b"map_state", "player", b"player"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["effects", b"effects", "event", b"event", "map_state", b"map_state", "player", b"player", "radar", b"radar", "units", b"units"]) -> None: ... + +global___ObservationRaw = ObservationRaw + +@typing_extensions.final +class RadarRing(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + RADIUS_FIELD_NUMBER: builtins.int + @property + def pos(self) -> s2clientprotocol.common_pb2.Point: ... + radius: builtins.float + def __init__( + self, + *, + pos: s2clientprotocol.common_pb2.Point | None = ..., + radius: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["pos", b"pos", "radius", b"radius"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["pos", b"pos", "radius", b"radius"]) -> None: ... + +global___RadarRing = RadarRing + +@typing_extensions.final +class PowerSource(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POS_FIELD_NUMBER: builtins.int + RADIUS_FIELD_NUMBER: builtins.int + TAG_FIELD_NUMBER: builtins.int + @property + def pos(self) -> s2clientprotocol.common_pb2.Point: ... + radius: builtins.float + tag: builtins.int + def __init__( + self, + *, + pos: s2clientprotocol.common_pb2.Point | None = ..., + radius: builtins.float | None = ..., + tag: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["pos", b"pos", "radius", b"radius", "tag", b"tag"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["pos", b"pos", "radius", b"radius", "tag", b"tag"]) -> None: ... + +global___PowerSource = PowerSource + +@typing_extensions.final +class PlayerRaw(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POWER_SOURCES_FIELD_NUMBER: builtins.int + CAMERA_FIELD_NUMBER: builtins.int + UPGRADE_IDS_FIELD_NUMBER: builtins.int + @property + def power_sources(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PowerSource]: ... + @property + def camera(self) -> s2clientprotocol.common_pb2.Point: ... + @property + def upgrade_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + """TODO: Add to UI observation?""" + def __init__( + self, + *, + power_sources: collections.abc.Iterable[global___PowerSource] | None = ..., + camera: s2clientprotocol.common_pb2.Point | None = ..., + upgrade_ids: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["camera", b"camera"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["camera", b"camera", "power_sources", b"power_sources", "upgrade_ids", b"upgrade_ids"]) -> None: ... + +global___PlayerRaw = PlayerRaw + +@typing_extensions.final +class UnitOrder(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITY_ID_FIELD_NUMBER: builtins.int + TARGET_WORLD_SPACE_POS_FIELD_NUMBER: builtins.int + TARGET_UNIT_TAG_FIELD_NUMBER: builtins.int + PROGRESS_FIELD_NUMBER: builtins.int + ability_id: builtins.int + @property + def target_world_space_pos(self) -> s2clientprotocol.common_pb2.Point: ... + target_unit_tag: builtins.int + progress: builtins.float + """Progress of train abilities. Range: [0.0, 1.0]""" + def __init__( + self, + *, + ability_id: builtins.int | None = ..., + target_world_space_pos: s2clientprotocol.common_pb2.Point | None = ..., + target_unit_tag: builtins.int | None = ..., + progress: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "progress", b"progress", "target", b"target", "target_unit_tag", b"target_unit_tag", "target_world_space_pos", b"target_world_space_pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "progress", b"progress", "target", b"target", "target_unit_tag", b"target_unit_tag", "target_world_space_pos", b"target_world_space_pos"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["target", b"target"]) -> typing_extensions.Literal["target_world_space_pos", "target_unit_tag"] | None: ... + +global___UnitOrder = UnitOrder + +@typing_extensions.final +class PassengerUnit(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TAG_FIELD_NUMBER: builtins.int + HEALTH_FIELD_NUMBER: builtins.int + HEALTH_MAX_FIELD_NUMBER: builtins.int + SHIELD_FIELD_NUMBER: builtins.int + SHIELD_MAX_FIELD_NUMBER: builtins.int + ENERGY_FIELD_NUMBER: builtins.int + ENERGY_MAX_FIELD_NUMBER: builtins.int + UNIT_TYPE_FIELD_NUMBER: builtins.int + tag: builtins.int + health: builtins.float + health_max: builtins.float + shield: builtins.float + shield_max: builtins.float + energy: builtins.float + energy_max: builtins.float + unit_type: builtins.int + def __init__( + self, + *, + tag: builtins.int | None = ..., + health: builtins.float | None = ..., + health_max: builtins.float | None = ..., + shield: builtins.float | None = ..., + shield_max: builtins.float | None = ..., + energy: builtins.float | None = ..., + energy_max: builtins.float | None = ..., + unit_type: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["energy", b"energy", "energy_max", b"energy_max", "health", b"health", "health_max", b"health_max", "shield", b"shield", "shield_max", b"shield_max", "tag", b"tag", "unit_type", b"unit_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["energy", b"energy", "energy_max", b"energy_max", "health", b"health", "health_max", b"health_max", "shield", b"shield", "shield_max", b"shield_max", "tag", b"tag", "unit_type", b"unit_type"]) -> None: ... + +global___PassengerUnit = PassengerUnit + +@typing_extensions.final +class RallyTarget(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POINT_FIELD_NUMBER: builtins.int + TAG_FIELD_NUMBER: builtins.int + @property + def point(self) -> s2clientprotocol.common_pb2.Point: + """Will always be filled.""" + tag: builtins.int + """Only if it's targeting a unit.""" + def __init__( + self, + *, + point: s2clientprotocol.common_pb2.Point | None = ..., + tag: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["point", b"point", "tag", b"tag"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["point", b"point", "tag", b"tag"]) -> None: ... + +global___RallyTarget = RallyTarget + +@typing_extensions.final +class Unit(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DISPLAY_TYPE_FIELD_NUMBER: builtins.int + ALLIANCE_FIELD_NUMBER: builtins.int + TAG_FIELD_NUMBER: builtins.int + UNIT_TYPE_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + POS_FIELD_NUMBER: builtins.int + FACING_FIELD_NUMBER: builtins.int + RADIUS_FIELD_NUMBER: builtins.int + BUILD_PROGRESS_FIELD_NUMBER: builtins.int + CLOAK_FIELD_NUMBER: builtins.int + BUFF_IDS_FIELD_NUMBER: builtins.int + DETECT_RANGE_FIELD_NUMBER: builtins.int + RADAR_RANGE_FIELD_NUMBER: builtins.int + IS_SELECTED_FIELD_NUMBER: builtins.int + IS_ON_SCREEN_FIELD_NUMBER: builtins.int + IS_BLIP_FIELD_NUMBER: builtins.int + IS_POWERED_FIELD_NUMBER: builtins.int + IS_ACTIVE_FIELD_NUMBER: builtins.int + ATTACK_UPGRADE_LEVEL_FIELD_NUMBER: builtins.int + ARMOR_UPGRADE_LEVEL_FIELD_NUMBER: builtins.int + SHIELD_UPGRADE_LEVEL_FIELD_NUMBER: builtins.int + HEALTH_FIELD_NUMBER: builtins.int + HEALTH_MAX_FIELD_NUMBER: builtins.int + SHIELD_FIELD_NUMBER: builtins.int + SHIELD_MAX_FIELD_NUMBER: builtins.int + ENERGY_FIELD_NUMBER: builtins.int + ENERGY_MAX_FIELD_NUMBER: builtins.int + MINERAL_CONTENTS_FIELD_NUMBER: builtins.int + VESPENE_CONTENTS_FIELD_NUMBER: builtins.int + IS_FLYING_FIELD_NUMBER: builtins.int + IS_BURROWED_FIELD_NUMBER: builtins.int + IS_HALLUCINATION_FIELD_NUMBER: builtins.int + ORDERS_FIELD_NUMBER: builtins.int + ADD_ON_TAG_FIELD_NUMBER: builtins.int + PASSENGERS_FIELD_NUMBER: builtins.int + CARGO_SPACE_TAKEN_FIELD_NUMBER: builtins.int + CARGO_SPACE_MAX_FIELD_NUMBER: builtins.int + ASSIGNED_HARVESTERS_FIELD_NUMBER: builtins.int + IDEAL_HARVESTERS_FIELD_NUMBER: builtins.int + WEAPON_COOLDOWN_FIELD_NUMBER: builtins.int + ENGAGED_TARGET_TAG_FIELD_NUMBER: builtins.int + BUFF_DURATION_REMAIN_FIELD_NUMBER: builtins.int + BUFF_DURATION_MAX_FIELD_NUMBER: builtins.int + RALLY_TARGETS_FIELD_NUMBER: builtins.int + display_type: global___DisplayType.ValueType + """Fields are populated based on type/alliance""" + alliance: global___Alliance.ValueType + tag: builtins.int + """Unique identifier for a unit""" + unit_type: builtins.int + owner: builtins.int + @property + def pos(self) -> s2clientprotocol.common_pb2.Point: ... + facing: builtins.float + radius: builtins.float + build_progress: builtins.float + """Range: [0.0, 1.0]""" + cloak: global___CloakState.ValueType + @property + def buff_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + detect_range: builtins.float + radar_range: builtins.float + is_selected: builtins.bool + is_on_screen: builtins.bool + """Visible and within the camera frustrum.""" + is_blip: builtins.bool + """Detected by sensor tower""" + is_powered: builtins.bool + is_active: builtins.bool + """Building is training/researching (ie animated).""" + attack_upgrade_level: builtins.int + armor_upgrade_level: builtins.int + shield_upgrade_level: builtins.int + health: builtins.float + """Not populated for snapshots""" + health_max: builtins.float + shield: builtins.float + shield_max: builtins.float + energy: builtins.float + energy_max: builtins.float + mineral_contents: builtins.int + vespene_contents: builtins.int + is_flying: builtins.bool + is_burrowed: builtins.bool + is_hallucination: builtins.bool + """Unit is your own or detected as a hallucination.""" + @property + def orders(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UnitOrder]: + """Not populated for enemies""" + add_on_tag: builtins.int + @property + def passengers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PassengerUnit]: ... + cargo_space_taken: builtins.int + cargo_space_max: builtins.int + assigned_harvesters: builtins.int + ideal_harvesters: builtins.int + weapon_cooldown: builtins.float + engaged_target_tag: builtins.int + buff_duration_remain: builtins.int + """How long a buff or unit is still around (eg mule, broodling, chronoboost).""" + buff_duration_max: builtins.int + """How long the buff or unit is still around (eg mule, broodling, chronoboost).""" + @property + def rally_targets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RallyTarget]: ... + def __init__( + self, + *, + display_type: global___DisplayType.ValueType | None = ..., + alliance: global___Alliance.ValueType | None = ..., + tag: builtins.int | None = ..., + unit_type: builtins.int | None = ..., + owner: builtins.int | None = ..., + pos: s2clientprotocol.common_pb2.Point | None = ..., + facing: builtins.float | None = ..., + radius: builtins.float | None = ..., + build_progress: builtins.float | None = ..., + cloak: global___CloakState.ValueType | None = ..., + buff_ids: collections.abc.Iterable[builtins.int] | None = ..., + detect_range: builtins.float | None = ..., + radar_range: builtins.float | None = ..., + is_selected: builtins.bool | None = ..., + is_on_screen: builtins.bool | None = ..., + is_blip: builtins.bool | None = ..., + is_powered: builtins.bool | None = ..., + is_active: builtins.bool | None = ..., + attack_upgrade_level: builtins.int | None = ..., + armor_upgrade_level: builtins.int | None = ..., + shield_upgrade_level: builtins.int | None = ..., + health: builtins.float | None = ..., + health_max: builtins.float | None = ..., + shield: builtins.float | None = ..., + shield_max: builtins.float | None = ..., + energy: builtins.float | None = ..., + energy_max: builtins.float | None = ..., + mineral_contents: builtins.int | None = ..., + vespene_contents: builtins.int | None = ..., + is_flying: builtins.bool | None = ..., + is_burrowed: builtins.bool | None = ..., + is_hallucination: builtins.bool | None = ..., + orders: collections.abc.Iterable[global___UnitOrder] | None = ..., + add_on_tag: builtins.int | None = ..., + passengers: collections.abc.Iterable[global___PassengerUnit] | None = ..., + cargo_space_taken: builtins.int | None = ..., + cargo_space_max: builtins.int | None = ..., + assigned_harvesters: builtins.int | None = ..., + ideal_harvesters: builtins.int | None = ..., + weapon_cooldown: builtins.float | None = ..., + engaged_target_tag: builtins.int | None = ..., + buff_duration_remain: builtins.int | None = ..., + buff_duration_max: builtins.int | None = ..., + rally_targets: collections.abc.Iterable[global___RallyTarget] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["add_on_tag", b"add_on_tag", "alliance", b"alliance", "armor_upgrade_level", b"armor_upgrade_level", "assigned_harvesters", b"assigned_harvesters", "attack_upgrade_level", b"attack_upgrade_level", "buff_duration_max", b"buff_duration_max", "buff_duration_remain", b"buff_duration_remain", "build_progress", b"build_progress", "cargo_space_max", b"cargo_space_max", "cargo_space_taken", b"cargo_space_taken", "cloak", b"cloak", "detect_range", b"detect_range", "display_type", b"display_type", "energy", b"energy", "energy_max", b"energy_max", "engaged_target_tag", b"engaged_target_tag", "facing", b"facing", "health", b"health", "health_max", b"health_max", "ideal_harvesters", b"ideal_harvesters", "is_active", b"is_active", "is_blip", b"is_blip", "is_burrowed", b"is_burrowed", "is_flying", b"is_flying", "is_hallucination", b"is_hallucination", "is_on_screen", b"is_on_screen", "is_powered", b"is_powered", "is_selected", b"is_selected", "mineral_contents", b"mineral_contents", "owner", b"owner", "pos", b"pos", "radar_range", b"radar_range", "radius", b"radius", "shield", b"shield", "shield_max", b"shield_max", "shield_upgrade_level", b"shield_upgrade_level", "tag", b"tag", "unit_type", b"unit_type", "vespene_contents", b"vespene_contents", "weapon_cooldown", b"weapon_cooldown"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["add_on_tag", b"add_on_tag", "alliance", b"alliance", "armor_upgrade_level", b"armor_upgrade_level", "assigned_harvesters", b"assigned_harvesters", "attack_upgrade_level", b"attack_upgrade_level", "buff_duration_max", b"buff_duration_max", "buff_duration_remain", b"buff_duration_remain", "buff_ids", b"buff_ids", "build_progress", b"build_progress", "cargo_space_max", b"cargo_space_max", "cargo_space_taken", b"cargo_space_taken", "cloak", b"cloak", "detect_range", b"detect_range", "display_type", b"display_type", "energy", b"energy", "energy_max", b"energy_max", "engaged_target_tag", b"engaged_target_tag", "facing", b"facing", "health", b"health", "health_max", b"health_max", "ideal_harvesters", b"ideal_harvesters", "is_active", b"is_active", "is_blip", b"is_blip", "is_burrowed", b"is_burrowed", "is_flying", b"is_flying", "is_hallucination", b"is_hallucination", "is_on_screen", b"is_on_screen", "is_powered", b"is_powered", "is_selected", b"is_selected", "mineral_contents", b"mineral_contents", "orders", b"orders", "owner", b"owner", "passengers", b"passengers", "pos", b"pos", "radar_range", b"radar_range", "radius", b"radius", "rally_targets", b"rally_targets", "shield", b"shield", "shield_max", b"shield_max", "shield_upgrade_level", b"shield_upgrade_level", "tag", b"tag", "unit_type", b"unit_type", "vespene_contents", b"vespene_contents", "weapon_cooldown", b"weapon_cooldown"]) -> None: ... + +global___Unit = Unit + +@typing_extensions.final +class MapState(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VISIBILITY_FIELD_NUMBER: builtins.int + CREEP_FIELD_NUMBER: builtins.int + @property + def visibility(self) -> s2clientprotocol.common_pb2.ImageData: + """1 byte visibility layer.""" + @property + def creep(self) -> s2clientprotocol.common_pb2.ImageData: + """1 bit creep layer.""" + def __init__( + self, + *, + visibility: s2clientprotocol.common_pb2.ImageData | None = ..., + creep: s2clientprotocol.common_pb2.ImageData | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["creep", b"creep", "visibility", b"visibility"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["creep", b"creep", "visibility", b"visibility"]) -> None: ... + +global___MapState = MapState + +@typing_extensions.final +class Event(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEAD_UNITS_FIELD_NUMBER: builtins.int + @property + def dead_units(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def __init__( + self, + *, + dead_units: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["dead_units", b"dead_units"]) -> None: ... + +global___Event = Event + +@typing_extensions.final +class Effect(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EFFECT_ID_FIELD_NUMBER: builtins.int + POS_FIELD_NUMBER: builtins.int + ALLIANCE_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + RADIUS_FIELD_NUMBER: builtins.int + effect_id: builtins.int + @property + def pos(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.common_pb2.Point2D]: + """Effect may impact multiple locations. (eg. Lurker attack)""" + alliance: global___Alliance.ValueType + owner: builtins.int + radius: builtins.float + def __init__( + self, + *, + effect_id: builtins.int | None = ..., + pos: collections.abc.Iterable[s2clientprotocol.common_pb2.Point2D] | None = ..., + alliance: global___Alliance.ValueType | None = ..., + owner: builtins.int | None = ..., + radius: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["alliance", b"alliance", "effect_id", b"effect_id", "owner", b"owner", "radius", b"radius"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["alliance", b"alliance", "effect_id", b"effect_id", "owner", b"owner", "pos", b"pos", "radius", b"radius"]) -> None: ... + +global___Effect = Effect + +@typing_extensions.final +class ActionRaw(google.protobuf.message.Message): + """ + Action + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_COMMAND_FIELD_NUMBER: builtins.int + CAMERA_MOVE_FIELD_NUMBER: builtins.int + TOGGLE_AUTOCAST_FIELD_NUMBER: builtins.int + @property + def unit_command(self) -> global___ActionRawUnitCommand: ... + @property + def camera_move(self) -> global___ActionRawCameraMove: ... + @property + def toggle_autocast(self) -> global___ActionRawToggleAutocast: ... + def __init__( + self, + *, + unit_command: global___ActionRawUnitCommand | None = ..., + camera_move: global___ActionRawCameraMove | None = ..., + toggle_autocast: global___ActionRawToggleAutocast | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["action", b"action", "camera_move", b"camera_move", "toggle_autocast", b"toggle_autocast", "unit_command", b"unit_command"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["action", b"action", "camera_move", b"camera_move", "toggle_autocast", b"toggle_autocast", "unit_command", b"unit_command"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["action", b"action"]) -> typing_extensions.Literal["unit_command", "camera_move", "toggle_autocast"] | None: ... + +global___ActionRaw = ActionRaw + +@typing_extensions.final +class ActionRawUnitCommand(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITY_ID_FIELD_NUMBER: builtins.int + TARGET_WORLD_SPACE_POS_FIELD_NUMBER: builtins.int + TARGET_UNIT_TAG_FIELD_NUMBER: builtins.int + UNIT_TAGS_FIELD_NUMBER: builtins.int + QUEUE_COMMAND_FIELD_NUMBER: builtins.int + ability_id: builtins.int + @property + def target_world_space_pos(self) -> s2clientprotocol.common_pb2.Point2D: ... + target_unit_tag: builtins.int + @property + def unit_tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + queue_command: builtins.bool + def __init__( + self, + *, + ability_id: builtins.int | None = ..., + target_world_space_pos: s2clientprotocol.common_pb2.Point2D | None = ..., + target_unit_tag: builtins.int | None = ..., + unit_tags: collections.abc.Iterable[builtins.int] | None = ..., + queue_command: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "queue_command", b"queue_command", "target", b"target", "target_unit_tag", b"target_unit_tag", "target_world_space_pos", b"target_world_space_pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "queue_command", b"queue_command", "target", b"target", "target_unit_tag", b"target_unit_tag", "target_world_space_pos", b"target_world_space_pos", "unit_tags", b"unit_tags"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["target", b"target"]) -> typing_extensions.Literal["target_world_space_pos", "target_unit_tag"] | None: ... + +global___ActionRawUnitCommand = ActionRawUnitCommand + +@typing_extensions.final +class ActionRawCameraMove(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CENTER_WORLD_SPACE_FIELD_NUMBER: builtins.int + @property + def center_world_space(self) -> s2clientprotocol.common_pb2.Point: ... + def __init__( + self, + *, + center_world_space: s2clientprotocol.common_pb2.Point | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["center_world_space", b"center_world_space"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["center_world_space", b"center_world_space"]) -> None: ... + +global___ActionRawCameraMove = ActionRawCameraMove + +@typing_extensions.final +class ActionRawToggleAutocast(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITY_ID_FIELD_NUMBER: builtins.int + UNIT_TAGS_FIELD_NUMBER: builtins.int + ability_id: builtins.int + @property + def unit_tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def __init__( + self, + *, + ability_id: builtins.int | None = ..., + unit_tags: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "unit_tags", b"unit_tags"]) -> None: ... + +global___ActionRawToggleAutocast = ActionRawToggleAutocast diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/sc2api_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/sc2api_pb2.pyi new file mode 100644 index 000000000..23c69ca1f --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/sc2api_pb2.pyi @@ -0,0 +1,2069 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import s2clientprotocol.common_pb2 +import s2clientprotocol.data_pb2 +import s2clientprotocol.debug_pb2 +import s2clientprotocol.error_pb2 +import s2clientprotocol.query_pb2 +import s2clientprotocol.raw_pb2 +import s2clientprotocol.score_pb2 +import s2clientprotocol.spatial_pb2 +import s2clientprotocol.ui_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _Status: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _StatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Status.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + launched: _Status.ValueType # 1 + """Game has been launch and is not yet doing anything.""" + init_game: _Status.ValueType # 2 + """Create game has been called, and the host is awaiting players.""" + in_game: _Status.ValueType # 3 + """In a single or multiplayer game.""" + in_replay: _Status.ValueType # 4 + """In a replay.""" + ended: _Status.ValueType # 5 + """Game has ended, can still request game info, but ready for a new game.""" + quit: _Status.ValueType # 6 + """Application is shutting down.""" + unknown: _Status.ValueType # 99 + """Should not happen, but indicates an error if it occurs.""" + +class Status(_Status, metaclass=_StatusEnumTypeWrapper): ... + +launched: Status.ValueType # 1 +"""Game has been launch and is not yet doing anything.""" +init_game: Status.ValueType # 2 +"""Create game has been called, and the host is awaiting players.""" +in_game: Status.ValueType # 3 +"""In a single or multiplayer game.""" +in_replay: Status.ValueType # 4 +"""In a replay.""" +ended: Status.ValueType # 5 +"""Game has ended, can still request game info, but ready for a new game.""" +quit: Status.ValueType # 6 +"""Application is shutting down.""" +unknown: Status.ValueType # 99 +"""Should not happen, but indicates an error if it occurs.""" +global___Status = Status + +class _Difficulty: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _DifficultyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Difficulty.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + VeryEasy: _Difficulty.ValueType # 1 + Easy: _Difficulty.ValueType # 2 + Medium: _Difficulty.ValueType # 3 + MediumHard: _Difficulty.ValueType # 4 + Hard: _Difficulty.ValueType # 5 + Harder: _Difficulty.ValueType # 6 + VeryHard: _Difficulty.ValueType # 7 + CheatVision: _Difficulty.ValueType # 8 + CheatMoney: _Difficulty.ValueType # 9 + CheatInsane: _Difficulty.ValueType # 10 + +class Difficulty(_Difficulty, metaclass=_DifficultyEnumTypeWrapper): + """ + Game Setup + """ + +VeryEasy: Difficulty.ValueType # 1 +Easy: Difficulty.ValueType # 2 +Medium: Difficulty.ValueType # 3 +MediumHard: Difficulty.ValueType # 4 +Hard: Difficulty.ValueType # 5 +Harder: Difficulty.ValueType # 6 +VeryHard: Difficulty.ValueType # 7 +CheatVision: Difficulty.ValueType # 8 +CheatMoney: Difficulty.ValueType # 9 +CheatInsane: Difficulty.ValueType # 10 +global___Difficulty = Difficulty + +class _PlayerType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _PlayerTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PlayerType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Participant: _PlayerType.ValueType # 1 + Computer: _PlayerType.ValueType # 2 + Observer: _PlayerType.ValueType # 3 + +class PlayerType(_PlayerType, metaclass=_PlayerTypeEnumTypeWrapper): ... + +Participant: PlayerType.ValueType # 1 +Computer: PlayerType.ValueType # 2 +Observer: PlayerType.ValueType # 3 +global___PlayerType = PlayerType + +class _AIBuild: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _AIBuildEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AIBuild.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + RandomBuild: _AIBuild.ValueType # 1 + Rush: _AIBuild.ValueType # 2 + Timing: _AIBuild.ValueType # 3 + Power: _AIBuild.ValueType # 4 + Macro: _AIBuild.ValueType # 5 + Air: _AIBuild.ValueType # 6 + +class AIBuild(_AIBuild, metaclass=_AIBuildEnumTypeWrapper): ... + +RandomBuild: AIBuild.ValueType # 1 +Rush: AIBuild.ValueType # 2 +Timing: AIBuild.ValueType # 3 +Power: AIBuild.ValueType # 4 +Macro: AIBuild.ValueType # 5 +Air: AIBuild.ValueType # 6 +global___AIBuild = AIBuild + +class _Alert: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _AlertEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Alert.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + AlertError: _Alert.ValueType # 3 + AddOnComplete: _Alert.ValueType # 4 + BuildingComplete: _Alert.ValueType # 5 + BuildingUnderAttack: _Alert.ValueType # 6 + LarvaHatched: _Alert.ValueType # 7 + MergeComplete: _Alert.ValueType # 8 + MineralsExhausted: _Alert.ValueType # 9 + MorphComplete: _Alert.ValueType # 10 + MothershipComplete: _Alert.ValueType # 11 + MULEExpired: _Alert.ValueType # 12 + NuclearLaunchDetected: _Alert.ValueType # 1 + NukeComplete: _Alert.ValueType # 13 + NydusWormDetected: _Alert.ValueType # 2 + ResearchComplete: _Alert.ValueType # 14 + TrainError: _Alert.ValueType # 15 + TrainUnitComplete: _Alert.ValueType # 16 + TrainWorkerComplete: _Alert.ValueType # 17 + TransformationComplete: _Alert.ValueType # 18 + UnitUnderAttack: _Alert.ValueType # 19 + UpgradeComplete: _Alert.ValueType # 20 + VespeneExhausted: _Alert.ValueType # 21 + WarpInComplete: _Alert.ValueType # 22 + +class Alert(_Alert, metaclass=_AlertEnumTypeWrapper): ... + +AlertError: Alert.ValueType # 3 +AddOnComplete: Alert.ValueType # 4 +BuildingComplete: Alert.ValueType # 5 +BuildingUnderAttack: Alert.ValueType # 6 +LarvaHatched: Alert.ValueType # 7 +MergeComplete: Alert.ValueType # 8 +MineralsExhausted: Alert.ValueType # 9 +MorphComplete: Alert.ValueType # 10 +MothershipComplete: Alert.ValueType # 11 +MULEExpired: Alert.ValueType # 12 +NuclearLaunchDetected: Alert.ValueType # 1 +NukeComplete: Alert.ValueType # 13 +NydusWormDetected: Alert.ValueType # 2 +ResearchComplete: Alert.ValueType # 14 +TrainError: Alert.ValueType # 15 +TrainUnitComplete: Alert.ValueType # 16 +TrainWorkerComplete: Alert.ValueType # 17 +TransformationComplete: Alert.ValueType # 18 +UnitUnderAttack: Alert.ValueType # 19 +UpgradeComplete: Alert.ValueType # 20 +VespeneExhausted: Alert.ValueType # 21 +WarpInComplete: Alert.ValueType # 22 +global___Alert = Alert + +class _Result: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _ResultEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Result.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Victory: _Result.ValueType # 1 + Defeat: _Result.ValueType # 2 + Tie: _Result.ValueType # 3 + Undecided: _Result.ValueType # 4 + +class Result(_Result, metaclass=_ResultEnumTypeWrapper): ... + +Victory: Result.ValueType # 1 +Defeat: Result.ValueType # 2 +Tie: Result.ValueType # 3 +Undecided: Result.ValueType # 4 +global___Result = Result + +@typing_extensions.final +class Request(google.protobuf.message.Message): + """ + Request/Response + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATE_GAME_FIELD_NUMBER: builtins.int + JOIN_GAME_FIELD_NUMBER: builtins.int + RESTART_GAME_FIELD_NUMBER: builtins.int + START_REPLAY_FIELD_NUMBER: builtins.int + LEAVE_GAME_FIELD_NUMBER: builtins.int + QUICK_SAVE_FIELD_NUMBER: builtins.int + QUICK_LOAD_FIELD_NUMBER: builtins.int + QUIT_FIELD_NUMBER: builtins.int + GAME_INFO_FIELD_NUMBER: builtins.int + OBSERVATION_FIELD_NUMBER: builtins.int + ACTION_FIELD_NUMBER: builtins.int + OBS_ACTION_FIELD_NUMBER: builtins.int + STEP_FIELD_NUMBER: builtins.int + DATA_FIELD_NUMBER: builtins.int + QUERY_FIELD_NUMBER: builtins.int + SAVE_REPLAY_FIELD_NUMBER: builtins.int + MAP_COMMAND_FIELD_NUMBER: builtins.int + REPLAY_INFO_FIELD_NUMBER: builtins.int + AVAILABLE_MAPS_FIELD_NUMBER: builtins.int + SAVE_MAP_FIELD_NUMBER: builtins.int + PING_FIELD_NUMBER: builtins.int + DEBUG_FIELD_NUMBER: builtins.int + ID_FIELD_NUMBER: builtins.int + @property + def create_game(self) -> global___RequestCreateGame: + """Game Setup + Send to host to initialize game. + """ + @property + def join_game(self) -> global___RequestJoinGame: + """Send to host and all clients for game to begin.""" + @property + def restart_game(self) -> global___RequestRestartGame: + """Single player only. Reinitializes the game with the same player setup.""" + @property + def start_replay(self) -> global___RequestStartReplay: + """Start playing a replay.""" + @property + def leave_game(self) -> global___RequestLeaveGame: + """Multiplayer only. Disconnects from a multiplayer game, equivalent to surrender.""" + @property + def quick_save(self) -> global___RequestQuickSave: + """Saves game to an in-memory bookmark.""" + @property + def quick_load(self) -> global___RequestQuickLoad: + """Loads from an in-memory bookmark.""" + @property + def quit(self) -> global___RequestQuit: + """Terminates the application.""" + @property + def game_info(self) -> global___RequestGameInfo: + """During Game + Static data about the current game and map. + """ + @property + def observation(self) -> global___RequestObservation: + """Snapshot of the current game state.""" + @property + def action(self) -> global___RequestAction: + """Executes an action for a participant.""" + @property + def obs_action(self) -> global___RequestObserverAction: + """Executes an action for an observer.""" + @property + def step(self) -> global___RequestStep: + """Advances the game simulation.""" + @property + def data(self) -> global___RequestData: + """Data about different gameplay elements. May be different for different games.""" + @property + def query(self) -> s2clientprotocol.query_pb2.RequestQuery: + """Additional methods for inspecting game state.""" + @property + def save_replay(self) -> global___RequestSaveReplay: + """Generates a replay.""" + @property + def map_command(self) -> global___RequestMapCommand: + """Execute a particular trigger through a string interface""" + @property + def replay_info(self) -> global___RequestReplayInfo: + """Other. + Returns metadata about a replay file. Does not load the replay. + """ + @property + def available_maps(self) -> global___RequestAvailableMaps: + """Returns directory of maps that can be played on.""" + @property + def save_map(self) -> global___RequestSaveMap: + """Saves binary map data to the local temp directory.""" + @property + def ping(self) -> global___RequestPing: + """Debugging + Network ping for testing connection. + """ + @property + def debug(self) -> global___RequestDebug: + """Display debug information and execute debug actions.""" + id: builtins.int + def __init__( + self, + *, + create_game: global___RequestCreateGame | None = ..., + join_game: global___RequestJoinGame | None = ..., + restart_game: global___RequestRestartGame | None = ..., + start_replay: global___RequestStartReplay | None = ..., + leave_game: global___RequestLeaveGame | None = ..., + quick_save: global___RequestQuickSave | None = ..., + quick_load: global___RequestQuickLoad | None = ..., + quit: global___RequestQuit | None = ..., + game_info: global___RequestGameInfo | None = ..., + observation: global___RequestObservation | None = ..., + action: global___RequestAction | None = ..., + obs_action: global___RequestObserverAction | None = ..., + step: global___RequestStep | None = ..., + data: global___RequestData | None = ..., + query: s2clientprotocol.query_pb2.RequestQuery | None = ..., + save_replay: global___RequestSaveReplay | None = ..., + map_command: global___RequestMapCommand | None = ..., + replay_info: global___RequestReplayInfo | None = ..., + available_maps: global___RequestAvailableMaps | None = ..., + save_map: global___RequestSaveMap | None = ..., + ping: global___RequestPing | None = ..., + debug: global___RequestDebug | None = ..., + id: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["action", b"action", "available_maps", b"available_maps", "create_game", b"create_game", "data", b"data", "debug", b"debug", "game_info", b"game_info", "id", b"id", "join_game", b"join_game", "leave_game", b"leave_game", "map_command", b"map_command", "obs_action", b"obs_action", "observation", b"observation", "ping", b"ping", "query", b"query", "quick_load", b"quick_load", "quick_save", b"quick_save", "quit", b"quit", "replay_info", b"replay_info", "request", b"request", "restart_game", b"restart_game", "save_map", b"save_map", "save_replay", b"save_replay", "start_replay", b"start_replay", "step", b"step"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["action", b"action", "available_maps", b"available_maps", "create_game", b"create_game", "data", b"data", "debug", b"debug", "game_info", b"game_info", "id", b"id", "join_game", b"join_game", "leave_game", b"leave_game", "map_command", b"map_command", "obs_action", b"obs_action", "observation", b"observation", "ping", b"ping", "query", b"query", "quick_load", b"quick_load", "quick_save", b"quick_save", "quit", b"quit", "replay_info", b"replay_info", "request", b"request", "restart_game", b"restart_game", "save_map", b"save_map", "save_replay", b"save_replay", "start_replay", b"start_replay", "step", b"step"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["request", b"request"]) -> typing_extensions.Literal["create_game", "join_game", "restart_game", "start_replay", "leave_game", "quick_save", "quick_load", "quit", "game_info", "observation", "action", "obs_action", "step", "data", "query", "save_replay", "map_command", "replay_info", "available_maps", "save_map", "ping", "debug"] | None: ... + +global___Request = Request + +@typing_extensions.final +class Response(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATE_GAME_FIELD_NUMBER: builtins.int + JOIN_GAME_FIELD_NUMBER: builtins.int + RESTART_GAME_FIELD_NUMBER: builtins.int + START_REPLAY_FIELD_NUMBER: builtins.int + LEAVE_GAME_FIELD_NUMBER: builtins.int + QUICK_SAVE_FIELD_NUMBER: builtins.int + QUICK_LOAD_FIELD_NUMBER: builtins.int + QUIT_FIELD_NUMBER: builtins.int + GAME_INFO_FIELD_NUMBER: builtins.int + OBSERVATION_FIELD_NUMBER: builtins.int + ACTION_FIELD_NUMBER: builtins.int + OBS_ACTION_FIELD_NUMBER: builtins.int + STEP_FIELD_NUMBER: builtins.int + DATA_FIELD_NUMBER: builtins.int + QUERY_FIELD_NUMBER: builtins.int + SAVE_REPLAY_FIELD_NUMBER: builtins.int + REPLAY_INFO_FIELD_NUMBER: builtins.int + AVAILABLE_MAPS_FIELD_NUMBER: builtins.int + SAVE_MAP_FIELD_NUMBER: builtins.int + MAP_COMMAND_FIELD_NUMBER: builtins.int + PING_FIELD_NUMBER: builtins.int + DEBUG_FIELD_NUMBER: builtins.int + ID_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + STATUS_FIELD_NUMBER: builtins.int + @property + def create_game(self) -> global___ResponseCreateGame: ... + @property + def join_game(self) -> global___ResponseJoinGame: ... + @property + def restart_game(self) -> global___ResponseRestartGame: ... + @property + def start_replay(self) -> global___ResponseStartReplay: ... + @property + def leave_game(self) -> global___ResponseLeaveGame: ... + @property + def quick_save(self) -> global___ResponseQuickSave: ... + @property + def quick_load(self) -> global___ResponseQuickLoad: ... + @property + def quit(self) -> global___ResponseQuit: ... + @property + def game_info(self) -> global___ResponseGameInfo: ... + @property + def observation(self) -> global___ResponseObservation: ... + @property + def action(self) -> global___ResponseAction: ... + @property + def obs_action(self) -> global___ResponseObserverAction: ... + @property + def step(self) -> global___ResponseStep: ... + @property + def data(self) -> global___ResponseData: ... + @property + def query(self) -> s2clientprotocol.query_pb2.ResponseQuery: ... + @property + def save_replay(self) -> global___ResponseSaveReplay: ... + @property + def replay_info(self) -> global___ResponseReplayInfo: ... + @property + def available_maps(self) -> global___ResponseAvailableMaps: ... + @property + def save_map(self) -> global___ResponseSaveMap: ... + @property + def map_command(self) -> global___ResponseMapCommand: ... + @property + def ping(self) -> global___ResponsePing: + """Debugging""" + @property + def debug(self) -> global___ResponseDebug: ... + id: builtins.int + @property + def error(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """If command is missing, this will contain the error. Otherwise this will contain any warnings.""" + status: global___Status.ValueType + """Should be sent back with all responses.""" + def __init__( + self, + *, + create_game: global___ResponseCreateGame | None = ..., + join_game: global___ResponseJoinGame | None = ..., + restart_game: global___ResponseRestartGame | None = ..., + start_replay: global___ResponseStartReplay | None = ..., + leave_game: global___ResponseLeaveGame | None = ..., + quick_save: global___ResponseQuickSave | None = ..., + quick_load: global___ResponseQuickLoad | None = ..., + quit: global___ResponseQuit | None = ..., + game_info: global___ResponseGameInfo | None = ..., + observation: global___ResponseObservation | None = ..., + action: global___ResponseAction | None = ..., + obs_action: global___ResponseObserverAction | None = ..., + step: global___ResponseStep | None = ..., + data: global___ResponseData | None = ..., + query: s2clientprotocol.query_pb2.ResponseQuery | None = ..., + save_replay: global___ResponseSaveReplay | None = ..., + replay_info: global___ResponseReplayInfo | None = ..., + available_maps: global___ResponseAvailableMaps | None = ..., + save_map: global___ResponseSaveMap | None = ..., + map_command: global___ResponseMapCommand | None = ..., + ping: global___ResponsePing | None = ..., + debug: global___ResponseDebug | None = ..., + id: builtins.int | None = ..., + error: collections.abc.Iterable[builtins.str] | None = ..., + status: global___Status.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["action", b"action", "available_maps", b"available_maps", "create_game", b"create_game", "data", b"data", "debug", b"debug", "game_info", b"game_info", "id", b"id", "join_game", b"join_game", "leave_game", b"leave_game", "map_command", b"map_command", "obs_action", b"obs_action", "observation", b"observation", "ping", b"ping", "query", b"query", "quick_load", b"quick_load", "quick_save", b"quick_save", "quit", b"quit", "replay_info", b"replay_info", "response", b"response", "restart_game", b"restart_game", "save_map", b"save_map", "save_replay", b"save_replay", "start_replay", b"start_replay", "status", b"status", "step", b"step"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["action", b"action", "available_maps", b"available_maps", "create_game", b"create_game", "data", b"data", "debug", b"debug", "error", b"error", "game_info", b"game_info", "id", b"id", "join_game", b"join_game", "leave_game", b"leave_game", "map_command", b"map_command", "obs_action", b"obs_action", "observation", b"observation", "ping", b"ping", "query", b"query", "quick_load", b"quick_load", "quick_save", b"quick_save", "quit", b"quit", "replay_info", b"replay_info", "response", b"response", "restart_game", b"restart_game", "save_map", b"save_map", "save_replay", b"save_replay", "start_replay", b"start_replay", "status", b"status", "step", b"step"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["response", b"response"]) -> typing_extensions.Literal["create_game", "join_game", "restart_game", "start_replay", "leave_game", "quick_save", "quick_load", "quit", "game_info", "observation", "action", "obs_action", "step", "data", "query", "save_replay", "replay_info", "available_maps", "save_map", "map_command", "ping", "debug"] | None: ... + +global___Response = Response + +@typing_extensions.final +class RequestCreateGame(google.protobuf.message.Message): + """----------------------------------------------------------------------------- + If successful, puts the game into the status: init_game. + The next expected request should be RequestJoinGame. Can also quit (exit). + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LOCAL_MAP_FIELD_NUMBER: builtins.int + BATTLENET_MAP_NAME_FIELD_NUMBER: builtins.int + PLAYER_SETUP_FIELD_NUMBER: builtins.int + DISABLE_FOG_FIELD_NUMBER: builtins.int + RANDOM_SEED_FIELD_NUMBER: builtins.int + REALTIME_FIELD_NUMBER: builtins.int + @property + def local_map(self) -> global___LocalMap: + """Local .SC2Map file""" + battlenet_map_name: builtins.str + """Map published to BattleNet""" + @property + def player_setup(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PlayerSetup]: ... + disable_fog: builtins.bool + random_seed: builtins.int + """Sets the pseudo-random seed for the game.""" + realtime: builtins.bool + """If set, the game plays in real time.""" + def __init__( + self, + *, + local_map: global___LocalMap | None = ..., + battlenet_map_name: builtins.str | None = ..., + player_setup: collections.abc.Iterable[global___PlayerSetup] | None = ..., + disable_fog: builtins.bool | None = ..., + random_seed: builtins.int | None = ..., + realtime: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["Map", b"Map", "battlenet_map_name", b"battlenet_map_name", "disable_fog", b"disable_fog", "local_map", b"local_map", "random_seed", b"random_seed", "realtime", b"realtime"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["Map", b"Map", "battlenet_map_name", b"battlenet_map_name", "disable_fog", b"disable_fog", "local_map", b"local_map", "player_setup", b"player_setup", "random_seed", b"random_seed", "realtime", b"realtime"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["Map", b"Map"]) -> typing_extensions.Literal["local_map", "battlenet_map_name"] | None: ... + +global___RequestCreateGame = RequestCreateGame + +@typing_extensions.final +class LocalMap(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MAP_PATH_FIELD_NUMBER: builtins.int + MAP_DATA_FIELD_NUMBER: builtins.int + map_path: builtins.str + """A map can be specified either by a file path or the data of the .SC2Map file. + If you provide both, it will play the game using map_data and store map_path + into the replay. (260 character max) + """ + map_data: builtins.bytes + def __init__( + self, + *, + map_path: builtins.str | None = ..., + map_data: builtins.bytes | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["map_data", b"map_data", "map_path", b"map_path"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["map_data", b"map_data", "map_path", b"map_path"]) -> None: ... + +global___LocalMap = LocalMap + +@typing_extensions.final +class ResponseCreateGame(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Error: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ResponseCreateGame._Error.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + MissingMap: ResponseCreateGame._Error.ValueType # 1 + InvalidMapPath: ResponseCreateGame._Error.ValueType # 2 + InvalidMapData: ResponseCreateGame._Error.ValueType # 3 + InvalidMapName: ResponseCreateGame._Error.ValueType # 4 + InvalidMapHandle: ResponseCreateGame._Error.ValueType # 5 + MissingPlayerSetup: ResponseCreateGame._Error.ValueType # 6 + InvalidPlayerSetup: ResponseCreateGame._Error.ValueType # 7 + MultiplayerUnsupported: ResponseCreateGame._Error.ValueType # 8 + """Multiplayer is not supported in the current build.""" + + class Error(_Error, metaclass=_ErrorEnumTypeWrapper): ... + MissingMap: ResponseCreateGame.Error.ValueType # 1 + InvalidMapPath: ResponseCreateGame.Error.ValueType # 2 + InvalidMapData: ResponseCreateGame.Error.ValueType # 3 + InvalidMapName: ResponseCreateGame.Error.ValueType # 4 + InvalidMapHandle: ResponseCreateGame.Error.ValueType # 5 + MissingPlayerSetup: ResponseCreateGame.Error.ValueType # 6 + InvalidPlayerSetup: ResponseCreateGame.Error.ValueType # 7 + MultiplayerUnsupported: ResponseCreateGame.Error.ValueType # 8 + """Multiplayer is not supported in the current build.""" + + ERROR_FIELD_NUMBER: builtins.int + ERROR_DETAILS_FIELD_NUMBER: builtins.int + error: global___ResponseCreateGame.Error.ValueType + error_details: builtins.str + def __init__( + self, + *, + error: global___ResponseCreateGame.Error.ValueType | None = ..., + error_details: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details"]) -> None: ... + +global___ResponseCreateGame = ResponseCreateGame + +@typing_extensions.final +class RequestJoinGame(google.protobuf.message.Message): + """----------------------------------------------------------------------------- + If successful, puts the game into the status: in_game. Will be able to + request actions, observations and step the game. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RACE_FIELD_NUMBER: builtins.int + OBSERVED_PLAYER_ID_FIELD_NUMBER: builtins.int + OPTIONS_FIELD_NUMBER: builtins.int + SERVER_PORTS_FIELD_NUMBER: builtins.int + CLIENT_PORTS_FIELD_NUMBER: builtins.int + SHARED_PORT_FIELD_NUMBER: builtins.int + PLAYER_NAME_FIELD_NUMBER: builtins.int + HOST_IP_FIELD_NUMBER: builtins.int + race: s2clientprotocol.common_pb2.Race.ValueType + """Join as participant""" + observed_player_id: builtins.int + """Join as observer""" + @property + def options(self) -> global___InterfaceOptions: + """This is limited to what is specified in RequestCreateGame, but you can request less information if you want.""" + @property + def server_ports(self) -> global___PortSet: + """Do not set in the single-player case. This is the port a server will use.""" + @property + def client_ports(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PortSet]: + """Do not set in the single-player case. These are the ports clients will use to initialize communication.""" + shared_port: builtins.int + """Currently only a singe client is supported. + deprecated + """ + player_name: builtins.str + """Use this to set the player's name to something other than autogenerated name.""" + host_ip: builtins.str + """Both game creator and joiner should provide the ip address of the game creator in order to play remotely. Defaults to localhost.""" + def __init__( + self, + *, + race: s2clientprotocol.common_pb2.Race.ValueType | None = ..., + observed_player_id: builtins.int | None = ..., + options: global___InterfaceOptions | None = ..., + server_ports: global___PortSet | None = ..., + client_ports: collections.abc.Iterable[global___PortSet] | None = ..., + shared_port: builtins.int | None = ..., + player_name: builtins.str | None = ..., + host_ip: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["host_ip", b"host_ip", "observed_player_id", b"observed_player_id", "options", b"options", "participation", b"participation", "player_name", b"player_name", "race", b"race", "server_ports", b"server_ports", "shared_port", b"shared_port"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["client_ports", b"client_ports", "host_ip", b"host_ip", "observed_player_id", b"observed_player_id", "options", b"options", "participation", b"participation", "player_name", b"player_name", "race", b"race", "server_ports", b"server_ports", "shared_port", b"shared_port"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["participation", b"participation"]) -> typing_extensions.Literal["race", "observed_player_id"] | None: ... + +global___RequestJoinGame = RequestJoinGame + +@typing_extensions.final +class PortSet(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GAME_PORT_FIELD_NUMBER: builtins.int + BASE_PORT_FIELD_NUMBER: builtins.int + game_port: builtins.int + """Game right now needs two internal ports to establish a multiplay game on the local host.""" + base_port: builtins.int + def __init__( + self, + *, + game_port: builtins.int | None = ..., + base_port: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["base_port", b"base_port", "game_port", b"game_port"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["base_port", b"base_port", "game_port", b"game_port"]) -> None: ... + +global___PortSet = PortSet + +@typing_extensions.final +class ResponseJoinGame(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Error: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ResponseJoinGame._Error.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + MissingParticipation: ResponseJoinGame._Error.ValueType # 1 + InvalidObservedPlayerId: ResponseJoinGame._Error.ValueType # 2 + MissingOptions: ResponseJoinGame._Error.ValueType # 3 + MissingPorts: ResponseJoinGame._Error.ValueType # 4 + GameFull: ResponseJoinGame._Error.ValueType # 5 + LaunchError: ResponseJoinGame._Error.ValueType # 6 + FeatureUnsupported: ResponseJoinGame._Error.ValueType # 7 + """Multiplayer specific. + Multiplayer is not supported in the current build for the requested features. + """ + NoSpaceForUser: ResponseJoinGame._Error.ValueType # 8 + MapDoesNotExist: ResponseJoinGame._Error.ValueType # 9 + CannotOpenMap: ResponseJoinGame._Error.ValueType # 10 + ChecksumError: ResponseJoinGame._Error.ValueType # 11 + NetworkError: ResponseJoinGame._Error.ValueType # 12 + OtherError: ResponseJoinGame._Error.ValueType # 13 + + class Error(_Error, metaclass=_ErrorEnumTypeWrapper): ... + MissingParticipation: ResponseJoinGame.Error.ValueType # 1 + InvalidObservedPlayerId: ResponseJoinGame.Error.ValueType # 2 + MissingOptions: ResponseJoinGame.Error.ValueType # 3 + MissingPorts: ResponseJoinGame.Error.ValueType # 4 + GameFull: ResponseJoinGame.Error.ValueType # 5 + LaunchError: ResponseJoinGame.Error.ValueType # 6 + FeatureUnsupported: ResponseJoinGame.Error.ValueType # 7 + """Multiplayer specific. + Multiplayer is not supported in the current build for the requested features. + """ + NoSpaceForUser: ResponseJoinGame.Error.ValueType # 8 + MapDoesNotExist: ResponseJoinGame.Error.ValueType # 9 + CannotOpenMap: ResponseJoinGame.Error.ValueType # 10 + ChecksumError: ResponseJoinGame.Error.ValueType # 11 + NetworkError: ResponseJoinGame.Error.ValueType # 12 + OtherError: ResponseJoinGame.Error.ValueType # 13 + + PLAYER_ID_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + ERROR_DETAILS_FIELD_NUMBER: builtins.int + player_id: builtins.int + error: global___ResponseJoinGame.Error.ValueType + error_details: builtins.str + def __init__( + self, + *, + player_id: builtins.int | None = ..., + error: global___ResponseJoinGame.Error.ValueType | None = ..., + error_details: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details", "player_id", b"player_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details", "player_id", b"player_id"]) -> None: ... + +global___ResponseJoinGame = ResponseJoinGame + +@typing_extensions.final +class RequestRestartGame(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RequestRestartGame = RequestRestartGame + +@typing_extensions.final +class ResponseRestartGame(google.protobuf.message.Message): + """The defaultRestartGameLoops is specified to be (1<<18) by default""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Error: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ResponseRestartGame._Error.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + LaunchError: ResponseRestartGame._Error.ValueType # 1 + + class Error(_Error, metaclass=_ErrorEnumTypeWrapper): ... + LaunchError: ResponseRestartGame.Error.ValueType # 1 + + ERROR_FIELD_NUMBER: builtins.int + ERROR_DETAILS_FIELD_NUMBER: builtins.int + NEED_HARD_RESET_FIELD_NUMBER: builtins.int + error: global___ResponseRestartGame.Error.ValueType + error_details: builtins.str + need_hard_reset: builtins.bool + """This will occur once the simulation_loop is greater then defaultRestartGameLoops""" + def __init__( + self, + *, + error: global___ResponseRestartGame.Error.ValueType | None = ..., + error_details: builtins.str | None = ..., + need_hard_reset: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details", "need_hard_reset", b"need_hard_reset"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details", "need_hard_reset", b"need_hard_reset"]) -> None: ... + +global___ResponseRestartGame = ResponseRestartGame + +@typing_extensions.final +class RequestStartReplay(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REPLAY_PATH_FIELD_NUMBER: builtins.int + REPLAY_DATA_FIELD_NUMBER: builtins.int + MAP_DATA_FIELD_NUMBER: builtins.int + OBSERVED_PLAYER_ID_FIELD_NUMBER: builtins.int + OPTIONS_FIELD_NUMBER: builtins.int + DISABLE_FOG_FIELD_NUMBER: builtins.int + REALTIME_FIELD_NUMBER: builtins.int + RECORD_REPLAY_FIELD_NUMBER: builtins.int + replay_path: builtins.str + replay_data: builtins.bytes + map_data: builtins.bytes + """Overrides the map path stored in the replay.""" + observed_player_id: builtins.int + @property + def options(self) -> global___InterfaceOptions: ... + disable_fog: builtins.bool + realtime: builtins.bool + record_replay: builtins.bool + """Allow RequestSaveReplay from a replay. Useful for truncating a replay, or restoring tracker.events.""" + def __init__( + self, + *, + replay_path: builtins.str | None = ..., + replay_data: builtins.bytes | None = ..., + map_data: builtins.bytes | None = ..., + observed_player_id: builtins.int | None = ..., + options: global___InterfaceOptions | None = ..., + disable_fog: builtins.bool | None = ..., + realtime: builtins.bool | None = ..., + record_replay: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["disable_fog", b"disable_fog", "map_data", b"map_data", "observed_player_id", b"observed_player_id", "options", b"options", "realtime", b"realtime", "record_replay", b"record_replay", "replay", b"replay", "replay_data", b"replay_data", "replay_path", b"replay_path"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["disable_fog", b"disable_fog", "map_data", b"map_data", "observed_player_id", b"observed_player_id", "options", b"options", "realtime", b"realtime", "record_replay", b"record_replay", "replay", b"replay", "replay_data", b"replay_data", "replay_path", b"replay_path"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["replay", b"replay"]) -> typing_extensions.Literal["replay_path", "replay_data"] | None: ... + +global___RequestStartReplay = RequestStartReplay + +@typing_extensions.final +class ResponseStartReplay(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Error: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ResponseStartReplay._Error.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + MissingReplay: ResponseStartReplay._Error.ValueType # 1 + InvalidReplayPath: ResponseStartReplay._Error.ValueType # 2 + InvalidReplayData: ResponseStartReplay._Error.ValueType # 3 + InvalidMapData: ResponseStartReplay._Error.ValueType # 4 + InvalidObservedPlayerId: ResponseStartReplay._Error.ValueType # 5 + MissingOptions: ResponseStartReplay._Error.ValueType # 6 + LaunchError: ResponseStartReplay._Error.ValueType # 7 + + class Error(_Error, metaclass=_ErrorEnumTypeWrapper): ... + MissingReplay: ResponseStartReplay.Error.ValueType # 1 + InvalidReplayPath: ResponseStartReplay.Error.ValueType # 2 + InvalidReplayData: ResponseStartReplay.Error.ValueType # 3 + InvalidMapData: ResponseStartReplay.Error.ValueType # 4 + InvalidObservedPlayerId: ResponseStartReplay.Error.ValueType # 5 + MissingOptions: ResponseStartReplay.Error.ValueType # 6 + LaunchError: ResponseStartReplay.Error.ValueType # 7 + + ERROR_FIELD_NUMBER: builtins.int + ERROR_DETAILS_FIELD_NUMBER: builtins.int + error: global___ResponseStartReplay.Error.ValueType + error_details: builtins.str + def __init__( + self, + *, + error: global___ResponseStartReplay.Error.ValueType | None = ..., + error_details: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details"]) -> None: ... + +global___ResponseStartReplay = ResponseStartReplay + +@typing_extensions.final +class RequestMapCommand(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TRIGGER_CMD_FIELD_NUMBER: builtins.int + trigger_cmd: builtins.str + def __init__( + self, + *, + trigger_cmd: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["trigger_cmd", b"trigger_cmd"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["trigger_cmd", b"trigger_cmd"]) -> None: ... + +global___RequestMapCommand = RequestMapCommand + +@typing_extensions.final +class ResponseMapCommand(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Error: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ResponseMapCommand._Error.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + NoTriggerError: ResponseMapCommand._Error.ValueType # 1 + + class Error(_Error, metaclass=_ErrorEnumTypeWrapper): ... + NoTriggerError: ResponseMapCommand.Error.ValueType # 1 + + ERROR_FIELD_NUMBER: builtins.int + ERROR_DETAILS_FIELD_NUMBER: builtins.int + error: global___ResponseMapCommand.Error.ValueType + error_details: builtins.str + def __init__( + self, + *, + error: global___ResponseMapCommand.Error.ValueType | None = ..., + error_details: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["error", b"error", "error_details", b"error_details"]) -> None: ... + +global___ResponseMapCommand = ResponseMapCommand + +@typing_extensions.final +class RequestLeaveGame(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RequestLeaveGame = RequestLeaveGame + +@typing_extensions.final +class ResponseLeaveGame(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___ResponseLeaveGame = ResponseLeaveGame + +@typing_extensions.final +class RequestQuickSave(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RequestQuickSave = RequestQuickSave + +@typing_extensions.final +class ResponseQuickSave(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___ResponseQuickSave = ResponseQuickSave + +@typing_extensions.final +class RequestQuickLoad(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RequestQuickLoad = RequestQuickLoad + +@typing_extensions.final +class ResponseQuickLoad(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___ResponseQuickLoad = ResponseQuickLoad + +@typing_extensions.final +class RequestQuit(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RequestQuit = RequestQuit + +@typing_extensions.final +class ResponseQuit(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___ResponseQuit = ResponseQuit + +@typing_extensions.final +class RequestGameInfo(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RequestGameInfo = RequestGameInfo + +@typing_extensions.final +class ResponseGameInfo(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MAP_NAME_FIELD_NUMBER: builtins.int + MOD_NAMES_FIELD_NUMBER: builtins.int + LOCAL_MAP_PATH_FIELD_NUMBER: builtins.int + PLAYER_INFO_FIELD_NUMBER: builtins.int + START_RAW_FIELD_NUMBER: builtins.int + OPTIONS_FIELD_NUMBER: builtins.int + map_name: builtins.str + @property + def mod_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + local_map_path: builtins.str + @property + def player_info(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PlayerInfo]: ... + @property + def start_raw(self) -> s2clientprotocol.raw_pb2.StartRaw: + """Populated if Raw interface is enabled.""" + @property + def options(self) -> global___InterfaceOptions: ... + def __init__( + self, + *, + map_name: builtins.str | None = ..., + mod_names: collections.abc.Iterable[builtins.str] | None = ..., + local_map_path: builtins.str | None = ..., + player_info: collections.abc.Iterable[global___PlayerInfo] | None = ..., + start_raw: s2clientprotocol.raw_pb2.StartRaw | None = ..., + options: global___InterfaceOptions | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["local_map_path", b"local_map_path", "map_name", b"map_name", "options", b"options", "start_raw", b"start_raw"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["local_map_path", b"local_map_path", "map_name", b"map_name", "mod_names", b"mod_names", "options", b"options", "player_info", b"player_info", "start_raw", b"start_raw"]) -> None: ... + +global___ResponseGameInfo = ResponseGameInfo + +@typing_extensions.final +class RequestObservation(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DISABLE_FOG_FIELD_NUMBER: builtins.int + GAME_LOOP_FIELD_NUMBER: builtins.int + disable_fog: builtins.bool + game_loop: builtins.int + """In realtime the request will only return once the simulation game loop has reached this value. When not realtime this value is ignored.""" + def __init__( + self, + *, + disable_fog: builtins.bool | None = ..., + game_loop: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["disable_fog", b"disable_fog", "game_loop", b"game_loop"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["disable_fog", b"disable_fog", "game_loop", b"game_loop"]) -> None: ... + +global___RequestObservation = RequestObservation + +@typing_extensions.final +class ResponseObservation(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ACTIONS_FIELD_NUMBER: builtins.int + ACTION_ERRORS_FIELD_NUMBER: builtins.int + OBSERVATION_FIELD_NUMBER: builtins.int + PLAYER_RESULT_FIELD_NUMBER: builtins.int + CHAT_FIELD_NUMBER: builtins.int + @property + def actions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Action]: + """Actions this player did since the last Observation.""" + @property + def action_errors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ActionError]: + """Equivalent of UI "red text" errors.""" + @property + def observation(self) -> global___Observation: ... + @property + def player_result(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PlayerResult]: + """Only populated if the game ended during this step.""" + @property + def chat(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ChatReceived]: ... + def __init__( + self, + *, + actions: collections.abc.Iterable[global___Action] | None = ..., + action_errors: collections.abc.Iterable[global___ActionError] | None = ..., + observation: global___Observation | None = ..., + player_result: collections.abc.Iterable[global___PlayerResult] | None = ..., + chat: collections.abc.Iterable[global___ChatReceived] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["observation", b"observation"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["action_errors", b"action_errors", "actions", b"actions", "chat", b"chat", "observation", b"observation", "player_result", b"player_result"]) -> None: ... + +global___ResponseObservation = ResponseObservation + +@typing_extensions.final +class ChatReceived(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PLAYER_ID_FIELD_NUMBER: builtins.int + MESSAGE_FIELD_NUMBER: builtins.int + player_id: builtins.int + message: builtins.str + def __init__( + self, + *, + player_id: builtins.int | None = ..., + message: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["message", b"message", "player_id", b"player_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["message", b"message", "player_id", b"player_id"]) -> None: ... + +global___ChatReceived = ChatReceived + +@typing_extensions.final +class RequestAction(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ACTIONS_FIELD_NUMBER: builtins.int + @property + def actions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Action]: ... + def __init__( + self, + *, + actions: collections.abc.Iterable[global___Action] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["actions", b"actions"]) -> None: ... + +global___RequestAction = RequestAction + +@typing_extensions.final +class ResponseAction(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RESULT_FIELD_NUMBER: builtins.int + @property + def result(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[s2clientprotocol.error_pb2.ActionResult.ValueType]: ... + def __init__( + self, + *, + result: collections.abc.Iterable[s2clientprotocol.error_pb2.ActionResult.ValueType] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["result", b"result"]) -> None: ... + +global___ResponseAction = ResponseAction + +@typing_extensions.final +class RequestObserverAction(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ACTIONS_FIELD_NUMBER: builtins.int + @property + def actions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ObserverAction]: ... + def __init__( + self, + *, + actions: collections.abc.Iterable[global___ObserverAction] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["actions", b"actions"]) -> None: ... + +global___RequestObserverAction = RequestObserverAction + +@typing_extensions.final +class ResponseObserverAction(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___ResponseObserverAction = ResponseObserverAction + +@typing_extensions.final +class RequestStep(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COUNT_FIELD_NUMBER: builtins.int + count: builtins.int + """Number of game loops to simulate for the next frame.""" + def __init__( + self, + *, + count: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["count", b"count"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["count", b"count"]) -> None: ... + +global___RequestStep = RequestStep + +@typing_extensions.final +class ResponseStep(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SIMULATION_LOOP_FIELD_NUMBER: builtins.int + simulation_loop: builtins.int + """ Max simulation_loop is (1<<19) before "end of time" will occur + The "end of time" is classified as the maximum number of game loops or absolute game time + representable as a positive fixed point number. + When we reach the "end of time", permanently pause the game and end the game for all. + """ + def __init__( + self, + *, + simulation_loop: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["simulation_loop", b"simulation_loop"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["simulation_loop", b"simulation_loop"]) -> None: ... + +global___ResponseStep = ResponseStep + +@typing_extensions.final +class RequestData(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITY_ID_FIELD_NUMBER: builtins.int + UNIT_TYPE_ID_FIELD_NUMBER: builtins.int + UPGRADE_ID_FIELD_NUMBER: builtins.int + BUFF_ID_FIELD_NUMBER: builtins.int + EFFECT_ID_FIELD_NUMBER: builtins.int + ability_id: builtins.bool + unit_type_id: builtins.bool + upgrade_id: builtins.bool + buff_id: builtins.bool + effect_id: builtins.bool + def __init__( + self, + *, + ability_id: builtins.bool | None = ..., + unit_type_id: builtins.bool | None = ..., + upgrade_id: builtins.bool | None = ..., + buff_id: builtins.bool | None = ..., + effect_id: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "buff_id", b"buff_id", "effect_id", b"effect_id", "unit_type_id", b"unit_type_id", "upgrade_id", b"upgrade_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "buff_id", b"buff_id", "effect_id", b"effect_id", "unit_type_id", b"unit_type_id", "upgrade_id", b"upgrade_id"]) -> None: ... + +global___RequestData = RequestData + +@typing_extensions.final +class ResponseData(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITIES_FIELD_NUMBER: builtins.int + UNITS_FIELD_NUMBER: builtins.int + UPGRADES_FIELD_NUMBER: builtins.int + BUFFS_FIELD_NUMBER: builtins.int + EFFECTS_FIELD_NUMBER: builtins.int + @property + def abilities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.data_pb2.AbilityData]: ... + @property + def units(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.data_pb2.UnitTypeData]: ... + @property + def upgrades(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.data_pb2.UpgradeData]: ... + @property + def buffs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.data_pb2.BuffData]: ... + @property + def effects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.data_pb2.EffectData]: ... + def __init__( + self, + *, + abilities: collections.abc.Iterable[s2clientprotocol.data_pb2.AbilityData] | None = ..., + units: collections.abc.Iterable[s2clientprotocol.data_pb2.UnitTypeData] | None = ..., + upgrades: collections.abc.Iterable[s2clientprotocol.data_pb2.UpgradeData] | None = ..., + buffs: collections.abc.Iterable[s2clientprotocol.data_pb2.BuffData] | None = ..., + effects: collections.abc.Iterable[s2clientprotocol.data_pb2.EffectData] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["abilities", b"abilities", "buffs", b"buffs", "effects", b"effects", "units", b"units", "upgrades", b"upgrades"]) -> None: ... + +global___ResponseData = ResponseData + +@typing_extensions.final +class RequestSaveReplay(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RequestSaveReplay = RequestSaveReplay + +@typing_extensions.final +class ResponseSaveReplay(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DATA_FIELD_NUMBER: builtins.int + data: builtins.bytes + def __init__( + self, + *, + data: builtins.bytes | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["data", b"data"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["data", b"data"]) -> None: ... + +global___ResponseSaveReplay = ResponseSaveReplay + +@typing_extensions.final +class RequestReplayInfo(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REPLAY_PATH_FIELD_NUMBER: builtins.int + REPLAY_DATA_FIELD_NUMBER: builtins.int + DOWNLOAD_DATA_FIELD_NUMBER: builtins.int + replay_path: builtins.str + """Limitation: might fail if the replay file is currently loaded.""" + replay_data: builtins.bytes + download_data: builtins.bool + """Ensure the data and binary are downloaded if this is an old version replay.""" + def __init__( + self, + *, + replay_path: builtins.str | None = ..., + replay_data: builtins.bytes | None = ..., + download_data: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["download_data", b"download_data", "replay", b"replay", "replay_data", b"replay_data", "replay_path", b"replay_path"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["download_data", b"download_data", "replay", b"replay", "replay_data", b"replay_data", "replay_path", b"replay_path"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["replay", b"replay"]) -> typing_extensions.Literal["replay_path", "replay_data"] | None: ... + +global___RequestReplayInfo = RequestReplayInfo + +@typing_extensions.final +class PlayerInfoExtra(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PLAYER_INFO_FIELD_NUMBER: builtins.int + PLAYER_RESULT_FIELD_NUMBER: builtins.int + PLAYER_MMR_FIELD_NUMBER: builtins.int + PLAYER_APM_FIELD_NUMBER: builtins.int + @property + def player_info(self) -> global___PlayerInfo: ... + @property + def player_result(self) -> global___PlayerResult: ... + player_mmr: builtins.int + player_apm: builtins.int + def __init__( + self, + *, + player_info: global___PlayerInfo | None = ..., + player_result: global___PlayerResult | None = ..., + player_mmr: builtins.int | None = ..., + player_apm: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["player_apm", b"player_apm", "player_info", b"player_info", "player_mmr", b"player_mmr", "player_result", b"player_result"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["player_apm", b"player_apm", "player_info", b"player_info", "player_mmr", b"player_mmr", "player_result", b"player_result"]) -> None: ... + +global___PlayerInfoExtra = PlayerInfoExtra + +@typing_extensions.final +class ResponseReplayInfo(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Error: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ResponseReplayInfo._Error.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + MissingReplay: ResponseReplayInfo._Error.ValueType # 1 + InvalidReplayPath: ResponseReplayInfo._Error.ValueType # 2 + InvalidReplayData: ResponseReplayInfo._Error.ValueType # 3 + ParsingError: ResponseReplayInfo._Error.ValueType # 4 + DownloadError: ResponseReplayInfo._Error.ValueType # 5 + + class Error(_Error, metaclass=_ErrorEnumTypeWrapper): ... + MissingReplay: ResponseReplayInfo.Error.ValueType # 1 + InvalidReplayPath: ResponseReplayInfo.Error.ValueType # 2 + InvalidReplayData: ResponseReplayInfo.Error.ValueType # 3 + ParsingError: ResponseReplayInfo.Error.ValueType # 4 + DownloadError: ResponseReplayInfo.Error.ValueType # 5 + + MAP_NAME_FIELD_NUMBER: builtins.int + LOCAL_MAP_PATH_FIELD_NUMBER: builtins.int + PLAYER_INFO_FIELD_NUMBER: builtins.int + GAME_DURATION_LOOPS_FIELD_NUMBER: builtins.int + GAME_DURATION_SECONDS_FIELD_NUMBER: builtins.int + GAME_VERSION_FIELD_NUMBER: builtins.int + DATA_VERSION_FIELD_NUMBER: builtins.int + DATA_BUILD_FIELD_NUMBER: builtins.int + BASE_BUILD_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + ERROR_DETAILS_FIELD_NUMBER: builtins.int + map_name: builtins.str + local_map_path: builtins.str + @property + def player_info(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PlayerInfoExtra]: ... + game_duration_loops: builtins.int + game_duration_seconds: builtins.float + game_version: builtins.str + data_version: builtins.str + data_build: builtins.int + base_build: builtins.int + error: global___ResponseReplayInfo.Error.ValueType + error_details: builtins.str + def __init__( + self, + *, + map_name: builtins.str | None = ..., + local_map_path: builtins.str | None = ..., + player_info: collections.abc.Iterable[global___PlayerInfoExtra] | None = ..., + game_duration_loops: builtins.int | None = ..., + game_duration_seconds: builtins.float | None = ..., + game_version: builtins.str | None = ..., + data_version: builtins.str | None = ..., + data_build: builtins.int | None = ..., + base_build: builtins.int | None = ..., + error: global___ResponseReplayInfo.Error.ValueType | None = ..., + error_details: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["base_build", b"base_build", "data_build", b"data_build", "data_version", b"data_version", "error", b"error", "error_details", b"error_details", "game_duration_loops", b"game_duration_loops", "game_duration_seconds", b"game_duration_seconds", "game_version", b"game_version", "local_map_path", b"local_map_path", "map_name", b"map_name"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["base_build", b"base_build", "data_build", b"data_build", "data_version", b"data_version", "error", b"error", "error_details", b"error_details", "game_duration_loops", b"game_duration_loops", "game_duration_seconds", b"game_duration_seconds", "game_version", b"game_version", "local_map_path", b"local_map_path", "map_name", b"map_name", "player_info", b"player_info"]) -> None: ... + +global___ResponseReplayInfo = ResponseReplayInfo + +@typing_extensions.final +class RequestAvailableMaps(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RequestAvailableMaps = RequestAvailableMaps + +@typing_extensions.final +class ResponseAvailableMaps(google.protobuf.message.Message): + """This will only contain locally cached BattleNet maps. + To download all ladder maps, log in and queue into a ladder match. + To download any other map, play a custom game on that map. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LOCAL_MAP_PATHS_FIELD_NUMBER: builtins.int + BATTLENET_MAP_NAMES_FIELD_NUMBER: builtins.int + @property + def local_map_paths(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """All the maps in the "Maps/" directory.""" + @property + def battlenet_map_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """All the maps in the BattleNet cache.""" + def __init__( + self, + *, + local_map_paths: collections.abc.Iterable[builtins.str] | None = ..., + battlenet_map_names: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["battlenet_map_names", b"battlenet_map_names", "local_map_paths", b"local_map_paths"]) -> None: ... + +global___ResponseAvailableMaps = ResponseAvailableMaps + +@typing_extensions.final +class RequestSaveMap(google.protobuf.message.Message): + """----------------------------------------------------------------------------- + Copies map data into the path specified. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MAP_PATH_FIELD_NUMBER: builtins.int + MAP_DATA_FIELD_NUMBER: builtins.int + map_path: builtins.str + """Path the game process will write to, relative to the temp directory. (260 character max)""" + map_data: builtins.bytes + """Binary map data of a .SC2Map.""" + def __init__( + self, + *, + map_path: builtins.str | None = ..., + map_data: builtins.bytes | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["map_data", b"map_data", "map_path", b"map_path"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["map_data", b"map_data", "map_path", b"map_path"]) -> None: ... + +global___RequestSaveMap = RequestSaveMap + +@typing_extensions.final +class ResponseSaveMap(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Error: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ResponseSaveMap._Error.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + InvalidMapData: ResponseSaveMap._Error.ValueType # 1 + + class Error(_Error, metaclass=_ErrorEnumTypeWrapper): ... + InvalidMapData: ResponseSaveMap.Error.ValueType # 1 + + ERROR_FIELD_NUMBER: builtins.int + error: global___ResponseSaveMap.Error.ValueType + def __init__( + self, + *, + error: global___ResponseSaveMap.Error.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["error", b"error"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["error", b"error"]) -> None: ... + +global___ResponseSaveMap = ResponseSaveMap + +@typing_extensions.final +class RequestPing(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RequestPing = RequestPing + +@typing_extensions.final +class ResponsePing(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GAME_VERSION_FIELD_NUMBER: builtins.int + DATA_VERSION_FIELD_NUMBER: builtins.int + DATA_BUILD_FIELD_NUMBER: builtins.int + BASE_BUILD_FIELD_NUMBER: builtins.int + game_version: builtins.str + data_version: builtins.str + data_build: builtins.int + base_build: builtins.int + def __init__( + self, + *, + game_version: builtins.str | None = ..., + data_version: builtins.str | None = ..., + data_build: builtins.int | None = ..., + base_build: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["base_build", b"base_build", "data_build", b"data_build", "data_version", b"data_version", "game_version", b"game_version"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["base_build", b"base_build", "data_build", b"data_build", "data_version", b"data_version", "game_version", b"game_version"]) -> None: ... + +global___ResponsePing = ResponsePing + +@typing_extensions.final +class RequestDebug(google.protobuf.message.Message): + """-----------------------------------------------------------------------------""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEBUG_FIELD_NUMBER: builtins.int + @property + def debug(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.debug_pb2.DebugCommand]: ... + def __init__( + self, + *, + debug: collections.abc.Iterable[s2clientprotocol.debug_pb2.DebugCommand] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["debug", b"debug"]) -> None: ... + +global___RequestDebug = RequestDebug + +@typing_extensions.final +class ResponseDebug(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___ResponseDebug = ResponseDebug + +@typing_extensions.final +class PlayerSetup(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TYPE_FIELD_NUMBER: builtins.int + RACE_FIELD_NUMBER: builtins.int + DIFFICULTY_FIELD_NUMBER: builtins.int + PLAYER_NAME_FIELD_NUMBER: builtins.int + AI_BUILD_FIELD_NUMBER: builtins.int + type: global___PlayerType.ValueType + race: s2clientprotocol.common_pb2.Race.ValueType + """Only used for a computer player.""" + difficulty: global___Difficulty.ValueType + player_name: builtins.str + ai_build: global___AIBuild.ValueType + def __init__( + self, + *, + type: global___PlayerType.ValueType | None = ..., + race: s2clientprotocol.common_pb2.Race.ValueType | None = ..., + difficulty: global___Difficulty.ValueType | None = ..., + player_name: builtins.str | None = ..., + ai_build: global___AIBuild.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ai_build", b"ai_build", "difficulty", b"difficulty", "player_name", b"player_name", "race", b"race", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ai_build", b"ai_build", "difficulty", b"difficulty", "player_name", b"player_name", "race", b"race", "type", b"type"]) -> None: ... + +global___PlayerSetup = PlayerSetup + +@typing_extensions.final +class SpatialCameraSetup(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RESOLUTION_FIELD_NUMBER: builtins.int + MINIMAP_RESOLUTION_FIELD_NUMBER: builtins.int + WIDTH_FIELD_NUMBER: builtins.int + CROP_TO_PLAYABLE_AREA_FIELD_NUMBER: builtins.int + ALLOW_CHEATING_LAYERS_FIELD_NUMBER: builtins.int + @property + def resolution(self) -> s2clientprotocol.common_pb2.Size2DI: ... + @property + def minimap_resolution(self) -> s2clientprotocol.common_pb2.Size2DI: ... + width: builtins.float + """Below are only relevant for feature layers. + Set the screen camera width in world units. + """ + crop_to_playable_area: builtins.bool + """Crop minimap to the playable area.""" + allow_cheating_layers: builtins.bool + """Return unit_type on the minimap, and potentially other cheating layers.""" + def __init__( + self, + *, + resolution: s2clientprotocol.common_pb2.Size2DI | None = ..., + minimap_resolution: s2clientprotocol.common_pb2.Size2DI | None = ..., + width: builtins.float | None = ..., + crop_to_playable_area: builtins.bool | None = ..., + allow_cheating_layers: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["allow_cheating_layers", b"allow_cheating_layers", "crop_to_playable_area", b"crop_to_playable_area", "minimap_resolution", b"minimap_resolution", "resolution", b"resolution", "width", b"width"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cheating_layers", b"allow_cheating_layers", "crop_to_playable_area", b"crop_to_playable_area", "minimap_resolution", b"minimap_resolution", "resolution", b"resolution", "width", b"width"]) -> None: ... + +global___SpatialCameraSetup = SpatialCameraSetup + +@typing_extensions.final +class InterfaceOptions(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RAW_FIELD_NUMBER: builtins.int + SCORE_FIELD_NUMBER: builtins.int + FEATURE_LAYER_FIELD_NUMBER: builtins.int + RENDER_FIELD_NUMBER: builtins.int + SHOW_CLOAKED_FIELD_NUMBER: builtins.int + SHOW_BURROWED_SHADOWS_FIELD_NUMBER: builtins.int + SHOW_PLACEHOLDERS_FIELD_NUMBER: builtins.int + RAW_AFFECTS_SELECTION_FIELD_NUMBER: builtins.int + RAW_CROP_TO_PLAYABLE_AREA_FIELD_NUMBER: builtins.int + raw: builtins.bool + """Interface options""" + score: builtins.bool + @property + def feature_layer(self) -> global___SpatialCameraSetup: + """Omit to disable.""" + @property + def render(self) -> global___SpatialCameraSetup: + """Omit to disable.""" + show_cloaked: builtins.bool + """By default cloaked units are completely hidden. This shows some details.""" + show_burrowed_shadows: builtins.bool + """By default burrowed units are completely hidden. This shows some details for those that produce a shadow.""" + show_placeholders: builtins.bool + """Return placeholder units (buildings to be constructed), both for raw and feature layers.""" + raw_affects_selection: builtins.bool + """By default raw actions select, act and revert the selection. This is useful + if you're playing simultaneously with the agent so it doesn't steal your + selection. This inflates APM (due to deselect) and makes the actions hard + to follow in a replay. Setting this to true will cause raw actions to do + select, act, but not revert the selection. + """ + raw_crop_to_playable_area: builtins.bool + """Changes the coordinates in raw.proto to be relative to the playable area. + The map_size and playable_area will be the diagonal of the real playable area. + """ + def __init__( + self, + *, + raw: builtins.bool | None = ..., + score: builtins.bool | None = ..., + feature_layer: global___SpatialCameraSetup | None = ..., + render: global___SpatialCameraSetup | None = ..., + show_cloaked: builtins.bool | None = ..., + show_burrowed_shadows: builtins.bool | None = ..., + show_placeholders: builtins.bool | None = ..., + raw_affects_selection: builtins.bool | None = ..., + raw_crop_to_playable_area: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["feature_layer", b"feature_layer", "raw", b"raw", "raw_affects_selection", b"raw_affects_selection", "raw_crop_to_playable_area", b"raw_crop_to_playable_area", "render", b"render", "score", b"score", "show_burrowed_shadows", b"show_burrowed_shadows", "show_cloaked", b"show_cloaked", "show_placeholders", b"show_placeholders"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["feature_layer", b"feature_layer", "raw", b"raw", "raw_affects_selection", b"raw_affects_selection", "raw_crop_to_playable_area", b"raw_crop_to_playable_area", "render", b"render", "score", b"score", "show_burrowed_shadows", b"show_burrowed_shadows", "show_cloaked", b"show_cloaked", "show_placeholders", b"show_placeholders"]) -> None: ... + +global___InterfaceOptions = InterfaceOptions + +@typing_extensions.final +class PlayerInfo(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PLAYER_ID_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + RACE_REQUESTED_FIELD_NUMBER: builtins.int + RACE_ACTUAL_FIELD_NUMBER: builtins.int + DIFFICULTY_FIELD_NUMBER: builtins.int + AI_BUILD_FIELD_NUMBER: builtins.int + PLAYER_NAME_FIELD_NUMBER: builtins.int + player_id: builtins.int + """Identifier that will be used to reference this player. + SC2 will always assign playerIds starting from 1 in standard Melee maps. This may not be true in custom maps. + """ + type: global___PlayerType.ValueType + race_requested: s2clientprotocol.common_pb2.Race.ValueType + race_actual: s2clientprotocol.common_pb2.Race.ValueType + """Only populated for your player or when watching replay""" + difficulty: global___Difficulty.ValueType + ai_build: global___AIBuild.ValueType + player_name: builtins.str + def __init__( + self, + *, + player_id: builtins.int | None = ..., + type: global___PlayerType.ValueType | None = ..., + race_requested: s2clientprotocol.common_pb2.Race.ValueType | None = ..., + race_actual: s2clientprotocol.common_pb2.Race.ValueType | None = ..., + difficulty: global___Difficulty.ValueType | None = ..., + ai_build: global___AIBuild.ValueType | None = ..., + player_name: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ai_build", b"ai_build", "difficulty", b"difficulty", "player_id", b"player_id", "player_name", b"player_name", "race_actual", b"race_actual", "race_requested", b"race_requested", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ai_build", b"ai_build", "difficulty", b"difficulty", "player_id", b"player_id", "player_name", b"player_name", "race_actual", b"race_actual", "race_requested", b"race_requested", "type", b"type"]) -> None: ... + +global___PlayerInfo = PlayerInfo + +@typing_extensions.final +class PlayerCommon(google.protobuf.message.Message): + """ + During Game + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PLAYER_ID_FIELD_NUMBER: builtins.int + MINERALS_FIELD_NUMBER: builtins.int + VESPENE_FIELD_NUMBER: builtins.int + FOOD_CAP_FIELD_NUMBER: builtins.int + FOOD_USED_FIELD_NUMBER: builtins.int + FOOD_ARMY_FIELD_NUMBER: builtins.int + FOOD_WORKERS_FIELD_NUMBER: builtins.int + IDLE_WORKER_COUNT_FIELD_NUMBER: builtins.int + ARMY_COUNT_FIELD_NUMBER: builtins.int + WARP_GATE_COUNT_FIELD_NUMBER: builtins.int + LARVA_COUNT_FIELD_NUMBER: builtins.int + player_id: builtins.int + minerals: builtins.int + vespene: builtins.int + food_cap: builtins.int + food_used: builtins.int + food_army: builtins.int + food_workers: builtins.int + idle_worker_count: builtins.int + army_count: builtins.int + warp_gate_count: builtins.int + larva_count: builtins.int + def __init__( + self, + *, + player_id: builtins.int | None = ..., + minerals: builtins.int | None = ..., + vespene: builtins.int | None = ..., + food_cap: builtins.int | None = ..., + food_used: builtins.int | None = ..., + food_army: builtins.int | None = ..., + food_workers: builtins.int | None = ..., + idle_worker_count: builtins.int | None = ..., + army_count: builtins.int | None = ..., + warp_gate_count: builtins.int | None = ..., + larva_count: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["army_count", b"army_count", "food_army", b"food_army", "food_cap", b"food_cap", "food_used", b"food_used", "food_workers", b"food_workers", "idle_worker_count", b"idle_worker_count", "larva_count", b"larva_count", "minerals", b"minerals", "player_id", b"player_id", "vespene", b"vespene", "warp_gate_count", b"warp_gate_count"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["army_count", b"army_count", "food_army", b"food_army", "food_cap", b"food_cap", "food_used", b"food_used", "food_workers", b"food_workers", "idle_worker_count", b"idle_worker_count", "larva_count", b"larva_count", "minerals", b"minerals", "player_id", b"player_id", "vespene", b"vespene", "warp_gate_count", b"warp_gate_count"]) -> None: ... + +global___PlayerCommon = PlayerCommon + +@typing_extensions.final +class Observation(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GAME_LOOP_FIELD_NUMBER: builtins.int + PLAYER_COMMON_FIELD_NUMBER: builtins.int + ALERTS_FIELD_NUMBER: builtins.int + ABILITIES_FIELD_NUMBER: builtins.int + SCORE_FIELD_NUMBER: builtins.int + RAW_DATA_FIELD_NUMBER: builtins.int + FEATURE_LAYER_DATA_FIELD_NUMBER: builtins.int + RENDER_DATA_FIELD_NUMBER: builtins.int + UI_DATA_FIELD_NUMBER: builtins.int + game_loop: builtins.int + @property + def player_common(self) -> global___PlayerCommon: ... + @property + def alerts(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___Alert.ValueType]: ... + @property + def abilities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.common_pb2.AvailableAbility]: + """Abilities available in the selection. Enabled if in this list, disabled otherwise.""" + @property + def score(self) -> s2clientprotocol.score_pb2.Score: ... + @property + def raw_data(self) -> s2clientprotocol.raw_pb2.ObservationRaw: + """Populated if Raw interface is enabled.""" + @property + def feature_layer_data(self) -> s2clientprotocol.spatial_pb2.ObservationFeatureLayer: + """Populated if Feature Layer interface is enabled.""" + @property + def render_data(self) -> s2clientprotocol.spatial_pb2.ObservationRender: + """Populated if Render interface is enabled.""" + @property + def ui_data(self) -> s2clientprotocol.ui_pb2.ObservationUI: + """Populated if Feature Layer or Render interface is enabled.""" + def __init__( + self, + *, + game_loop: builtins.int | None = ..., + player_common: global___PlayerCommon | None = ..., + alerts: collections.abc.Iterable[global___Alert.ValueType] | None = ..., + abilities: collections.abc.Iterable[s2clientprotocol.common_pb2.AvailableAbility] | None = ..., + score: s2clientprotocol.score_pb2.Score | None = ..., + raw_data: s2clientprotocol.raw_pb2.ObservationRaw | None = ..., + feature_layer_data: s2clientprotocol.spatial_pb2.ObservationFeatureLayer | None = ..., + render_data: s2clientprotocol.spatial_pb2.ObservationRender | None = ..., + ui_data: s2clientprotocol.ui_pb2.ObservationUI | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["feature_layer_data", b"feature_layer_data", "game_loop", b"game_loop", "player_common", b"player_common", "raw_data", b"raw_data", "render_data", b"render_data", "score", b"score", "ui_data", b"ui_data"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["abilities", b"abilities", "alerts", b"alerts", "feature_layer_data", b"feature_layer_data", "game_loop", b"game_loop", "player_common", b"player_common", "raw_data", b"raw_data", "render_data", b"render_data", "score", b"score", "ui_data", b"ui_data"]) -> None: ... + +global___Observation = Observation + +@typing_extensions.final +class Action(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ACTION_RAW_FIELD_NUMBER: builtins.int + ACTION_FEATURE_LAYER_FIELD_NUMBER: builtins.int + ACTION_RENDER_FIELD_NUMBER: builtins.int + ACTION_UI_FIELD_NUMBER: builtins.int + ACTION_CHAT_FIELD_NUMBER: builtins.int + GAME_LOOP_FIELD_NUMBER: builtins.int + @property + def action_raw(self) -> s2clientprotocol.raw_pb2.ActionRaw: + """Populated if Raw interface is enabled.""" + @property + def action_feature_layer(self) -> s2clientprotocol.spatial_pb2.ActionSpatial: + """Populated if Feature Layer interface is enabled.""" + @property + def action_render(self) -> s2clientprotocol.spatial_pb2.ActionSpatial: + """Not implemented. Populated if Render interface is enabled.""" + @property + def action_ui(self) -> s2clientprotocol.ui_pb2.ActionUI: + """Populated if Feature Layer or Render interface is enabled.""" + @property + def action_chat(self) -> global___ActionChat: + """Chat messages as a player typing into the chat channel.""" + game_loop: builtins.int + """Populated for actions in ResponseObservation. The game loop on which the action was executed.""" + def __init__( + self, + *, + action_raw: s2clientprotocol.raw_pb2.ActionRaw | None = ..., + action_feature_layer: s2clientprotocol.spatial_pb2.ActionSpatial | None = ..., + action_render: s2clientprotocol.spatial_pb2.ActionSpatial | None = ..., + action_ui: s2clientprotocol.ui_pb2.ActionUI | None = ..., + action_chat: global___ActionChat | None = ..., + game_loop: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["action_chat", b"action_chat", "action_feature_layer", b"action_feature_layer", "action_raw", b"action_raw", "action_render", b"action_render", "action_ui", b"action_ui", "game_loop", b"game_loop"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["action_chat", b"action_chat", "action_feature_layer", b"action_feature_layer", "action_raw", b"action_raw", "action_render", b"action_render", "action_ui", b"action_ui", "game_loop", b"game_loop"]) -> None: ... + +global___Action = Action + +@typing_extensions.final +class ActionChat(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Channel: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ChannelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ActionChat._Channel.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Broadcast: ActionChat._Channel.ValueType # 1 + Team: ActionChat._Channel.ValueType # 2 + + class Channel(_Channel, metaclass=_ChannelEnumTypeWrapper): ... + Broadcast: ActionChat.Channel.ValueType # 1 + Team: ActionChat.Channel.ValueType # 2 + + CHANNEL_FIELD_NUMBER: builtins.int + MESSAGE_FIELD_NUMBER: builtins.int + channel: global___ActionChat.Channel.ValueType + message: builtins.str + def __init__( + self, + *, + channel: global___ActionChat.Channel.ValueType | None = ..., + message: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["channel", b"channel", "message", b"message"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "message", b"message"]) -> None: ... + +global___ActionChat = ActionChat + +@typing_extensions.final +class ActionError(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_TAG_FIELD_NUMBER: builtins.int + ABILITY_ID_FIELD_NUMBER: builtins.int + RESULT_FIELD_NUMBER: builtins.int + unit_tag: builtins.int + """Only populated when using raw interface.""" + ability_id: builtins.int + result: s2clientprotocol.error_pb2.ActionResult.ValueType + def __init__( + self, + *, + unit_tag: builtins.int | None = ..., + ability_id: builtins.int | None = ..., + result: s2clientprotocol.error_pb2.ActionResult.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "result", b"result", "unit_tag", b"unit_tag"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "result", b"result", "unit_tag", b"unit_tag"]) -> None: ... + +global___ActionError = ActionError + +@typing_extensions.final +class ObserverAction(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PLAYER_PERSPECTIVE_FIELD_NUMBER: builtins.int + CAMERA_MOVE_FIELD_NUMBER: builtins.int + CAMERA_FOLLOW_PLAYER_FIELD_NUMBER: builtins.int + CAMERA_FOLLOW_UNITS_FIELD_NUMBER: builtins.int + @property + def player_perspective(self) -> global___ActionObserverPlayerPerspective: + """Not implemented""" + @property + def camera_move(self) -> global___ActionObserverCameraMove: ... + @property + def camera_follow_player(self) -> global___ActionObserverCameraFollowPlayer: ... + @property + def camera_follow_units(self) -> global___ActionObserverCameraFollowUnits: + """Not implemented""" + def __init__( + self, + *, + player_perspective: global___ActionObserverPlayerPerspective | None = ..., + camera_move: global___ActionObserverCameraMove | None = ..., + camera_follow_player: global___ActionObserverCameraFollowPlayer | None = ..., + camera_follow_units: global___ActionObserverCameraFollowUnits | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["action", b"action", "camera_follow_player", b"camera_follow_player", "camera_follow_units", b"camera_follow_units", "camera_move", b"camera_move", "player_perspective", b"player_perspective"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["action", b"action", "camera_follow_player", b"camera_follow_player", "camera_follow_units", b"camera_follow_units", "camera_move", b"camera_move", "player_perspective", b"player_perspective"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["action", b"action"]) -> typing_extensions.Literal["player_perspective", "camera_move", "camera_follow_player", "camera_follow_units"] | None: ... + +global___ObserverAction = ObserverAction + +@typing_extensions.final +class ActionObserverPlayerPerspective(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PLAYER_ID_FIELD_NUMBER: builtins.int + player_id: builtins.int + """0 to observe "Everyone" """ + def __init__( + self, + *, + player_id: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["player_id", b"player_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["player_id", b"player_id"]) -> None: ... + +global___ActionObserverPlayerPerspective = ActionObserverPlayerPerspective + +@typing_extensions.final +class ActionObserverCameraMove(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + WORLD_POS_FIELD_NUMBER: builtins.int + DISTANCE_FIELD_NUMBER: builtins.int + @property + def world_pos(self) -> s2clientprotocol.common_pb2.Point2D: ... + distance: builtins.float + """Distance between camera and terrain. Larger value zooms out camera. + Defaults to standard camera distance if set to 0. + """ + def __init__( + self, + *, + world_pos: s2clientprotocol.common_pb2.Point2D | None = ..., + distance: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["distance", b"distance", "world_pos", b"world_pos"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["distance", b"distance", "world_pos", b"world_pos"]) -> None: ... + +global___ActionObserverCameraMove = ActionObserverCameraMove + +@typing_extensions.final +class ActionObserverCameraFollowPlayer(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PLAYER_ID_FIELD_NUMBER: builtins.int + player_id: builtins.int + """Not implemented. Value must be [1, 15]""" + def __init__( + self, + *, + player_id: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["player_id", b"player_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["player_id", b"player_id"]) -> None: ... + +global___ActionObserverCameraFollowPlayer = ActionObserverCameraFollowPlayer + +@typing_extensions.final +class ActionObserverCameraFollowUnits(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_TAGS_FIELD_NUMBER: builtins.int + @property + def unit_tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def __init__( + self, + *, + unit_tags: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["unit_tags", b"unit_tags"]) -> None: ... + +global___ActionObserverCameraFollowUnits = ActionObserverCameraFollowUnits + +@typing_extensions.final +class PlayerResult(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PLAYER_ID_FIELD_NUMBER: builtins.int + RESULT_FIELD_NUMBER: builtins.int + player_id: builtins.int + result: global___Result.ValueType + def __init__( + self, + *, + player_id: builtins.int | None = ..., + result: global___Result.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["player_id", b"player_id", "result", b"result"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["player_id", b"player_id", "result", b"result"]) -> None: ... + +global___PlayerResult = PlayerResult diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/score_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/score_pb2.pyi new file mode 100644 index 000000000..78549038d --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/score_pb2.pyi @@ -0,0 +1,256 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing_extensions.final +class Score(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _ScoreType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ScoreTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Score._ScoreType.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Curriculum: Score._ScoreType.ValueType # 1 + """map generated score (from curriculum maps with special scoring)""" + Melee: Score._ScoreType.ValueType # 2 + """summation of in-progress and current units/buildings value + minerals + vespene""" + + class ScoreType(_ScoreType, metaclass=_ScoreTypeEnumTypeWrapper): ... + Curriculum: Score.ScoreType.ValueType # 1 + """map generated score (from curriculum maps with special scoring)""" + Melee: Score.ScoreType.ValueType # 2 + """summation of in-progress and current units/buildings value + minerals + vespene""" + + SCORE_TYPE_FIELD_NUMBER: builtins.int + SCORE_FIELD_NUMBER: builtins.int + SCORE_DETAILS_FIELD_NUMBER: builtins.int + score_type: global___Score.ScoreType.ValueType + score: builtins.int + """Note: check score_type to know whether this is a melee score or curriculum score""" + @property + def score_details(self) -> global___ScoreDetails: ... + def __init__( + self, + *, + score_type: global___Score.ScoreType.ValueType | None = ..., + score: builtins.int | None = ..., + score_details: global___ScoreDetails | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["score", b"score", "score_details", b"score_details", "score_type", b"score_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["score", b"score", "score_details", b"score_details", "score_type", b"score_type"]) -> None: ... + +global___Score = Score + +@typing_extensions.final +class CategoryScoreDetails(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NONE_FIELD_NUMBER: builtins.int + ARMY_FIELD_NUMBER: builtins.int + ECONOMY_FIELD_NUMBER: builtins.int + TECHNOLOGY_FIELD_NUMBER: builtins.int + UPGRADE_FIELD_NUMBER: builtins.int + none: builtins.float + """Used when no other category is configured in game data""" + army: builtins.float + economy: builtins.float + technology: builtins.float + upgrade: builtins.float + def __init__( + self, + *, + none: builtins.float | None = ..., + army: builtins.float | None = ..., + economy: builtins.float | None = ..., + technology: builtins.float | None = ..., + upgrade: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["army", b"army", "economy", b"economy", "none", b"none", "technology", b"technology", "upgrade", b"upgrade"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["army", b"army", "economy", b"economy", "none", b"none", "technology", b"technology", "upgrade", b"upgrade"]) -> None: ... + +global___CategoryScoreDetails = CategoryScoreDetails + +@typing_extensions.final +class VitalScoreDetails(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LIFE_FIELD_NUMBER: builtins.int + SHIELDS_FIELD_NUMBER: builtins.int + ENERGY_FIELD_NUMBER: builtins.int + life: builtins.float + shields: builtins.float + energy: builtins.float + def __init__( + self, + *, + life: builtins.float | None = ..., + shields: builtins.float | None = ..., + energy: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["energy", b"energy", "life", b"life", "shields", b"shields"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["energy", b"energy", "life", b"life", "shields", b"shields"]) -> None: ... + +global___VitalScoreDetails = VitalScoreDetails + +@typing_extensions.final +class ScoreDetails(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + IDLE_PRODUCTION_TIME_FIELD_NUMBER: builtins.int + IDLE_WORKER_TIME_FIELD_NUMBER: builtins.int + TOTAL_VALUE_UNITS_FIELD_NUMBER: builtins.int + TOTAL_VALUE_STRUCTURES_FIELD_NUMBER: builtins.int + KILLED_VALUE_UNITS_FIELD_NUMBER: builtins.int + KILLED_VALUE_STRUCTURES_FIELD_NUMBER: builtins.int + COLLECTED_MINERALS_FIELD_NUMBER: builtins.int + COLLECTED_VESPENE_FIELD_NUMBER: builtins.int + COLLECTION_RATE_MINERALS_FIELD_NUMBER: builtins.int + COLLECTION_RATE_VESPENE_FIELD_NUMBER: builtins.int + SPENT_MINERALS_FIELD_NUMBER: builtins.int + SPENT_VESPENE_FIELD_NUMBER: builtins.int + FOOD_USED_FIELD_NUMBER: builtins.int + KILLED_MINERALS_FIELD_NUMBER: builtins.int + KILLED_VESPENE_FIELD_NUMBER: builtins.int + LOST_MINERALS_FIELD_NUMBER: builtins.int + LOST_VESPENE_FIELD_NUMBER: builtins.int + FRIENDLY_FIRE_MINERALS_FIELD_NUMBER: builtins.int + FRIENDLY_FIRE_VESPENE_FIELD_NUMBER: builtins.int + USED_MINERALS_FIELD_NUMBER: builtins.int + USED_VESPENE_FIELD_NUMBER: builtins.int + TOTAL_USED_MINERALS_FIELD_NUMBER: builtins.int + TOTAL_USED_VESPENE_FIELD_NUMBER: builtins.int + TOTAL_DAMAGE_DEALT_FIELD_NUMBER: builtins.int + TOTAL_DAMAGE_TAKEN_FIELD_NUMBER: builtins.int + TOTAL_HEALED_FIELD_NUMBER: builtins.int + CURRENT_APM_FIELD_NUMBER: builtins.int + CURRENT_EFFECTIVE_APM_FIELD_NUMBER: builtins.int + idle_production_time: builtins.float + """Sum of time any available structure able to produce a unit is not. The time stacks, as in, three idle barracks will increase idle_production_time three times quicker than just one.""" + idle_worker_time: builtins.float + """Sum of time any worker is not mining. Note a worker building is not idle and three idle workers will increase this value three times quicker than just one.""" + total_value_units: builtins.float + """Sum of minerals and vespene spent on completed units.""" + total_value_structures: builtins.float + """Sum of minerals and vespene spent on completed structures.""" + killed_value_units: builtins.float + """Sum of minerals and vespene of units, belonging to the opponent, that the player has destroyed.""" + killed_value_structures: builtins.float + """Sum of minerals and vespene of structures, belonging to the opponent, that the player has destroyed.""" + collected_minerals: builtins.float + """Sum of minerals collected by the player.""" + collected_vespene: builtins.float + """Sum of vespene collected by the player.""" + collection_rate_minerals: builtins.float + """Estimated income of minerals over the next minute based on the players current income. The unit is minerals per minute.""" + collection_rate_vespene: builtins.float + """Estimated income of vespene over the next minute based on the players current income. The unit is vespene per minute.""" + spent_minerals: builtins.float + """Sum of spent minerals at the moment it is spent. For example, this number is incremented by 50 the moment an scv is queued in a command center. It is decremented by 50 if that unit is canceled.""" + spent_vespene: builtins.float + """Sum of spent vespene at the moment it is spent. For example, this number is incremented by 50 when a reaper is queued but decremented by 50 if it is canceled.""" + @property + def food_used(self) -> global___CategoryScoreDetails: + """The following entries contains floating point values for the following catgories: + none - There is no category defined in game data. + army - This category includes all military units but not workers. + economy - This category contains town halls, supply structures, vespene buildings and workers. + technology - This category is any structure that produces units or upgrades, Barracks and Engineering Bays both fall in this category, for example. + upgrade - This category is upgrades such as warp gate or weapons upgrades. + + Sum of food, or supply, utilized in the categories above. + """ + @property + def killed_minerals(self) -> global___CategoryScoreDetails: + """Sum of enemies catagories destroyed in minerals.""" + @property + def killed_vespene(self) -> global___CategoryScoreDetails: + """Sum of enemies catagories destroyed in vespene.""" + @property + def lost_minerals(self) -> global___CategoryScoreDetails: + """ Sum of lost minerals for the player in each category.""" + @property + def lost_vespene(self) -> global___CategoryScoreDetails: + """Sum of lost vespene for the player in each category.""" + @property + def friendly_fire_minerals(self) -> global___CategoryScoreDetails: + """Sum of the lost minerals via destroying the players own units/buildings.""" + @property + def friendly_fire_vespene(self) -> global___CategoryScoreDetails: + """Sum of the lost vespene via destroying the players own units/buildings.""" + @property + def used_minerals(self) -> global___CategoryScoreDetails: + """Sum of used minerals for the player in each category for each existing unit or upgrade. Therefore if a unit died worth 50 mierals this number will be decremented by 50.""" + @property + def used_vespene(self) -> global___CategoryScoreDetails: + """Sum of used vespene for the player in each category. Therefore if a unit died worth 50 vespene this number will be decremented by 50.""" + @property + def total_used_minerals(self) -> global___CategoryScoreDetails: + """Sum of used minerals throughout the entire game for each category. Unliked used_minerals, this value is never decremented.""" + @property + def total_used_vespene(self) -> global___CategoryScoreDetails: + """Sum of used vespene throughout the entire game for each category. Unliked used_vespene, this value is never decremented.""" + @property + def total_damage_dealt(self) -> global___VitalScoreDetails: + """Sum of damage dealt to the player's opponent for each category.""" + @property + def total_damage_taken(self) -> global___VitalScoreDetails: + """Sum of damage taken by the player for each category.""" + @property + def total_healed(self) -> global___VitalScoreDetails: + """Sum of health healed by the player. Note that technology can be healed (by queens) or repaired (by scvs).""" + current_apm: builtins.float + """Recent raw APM.""" + current_effective_apm: builtins.float + """Recent effective APM.""" + def __init__( + self, + *, + idle_production_time: builtins.float | None = ..., + idle_worker_time: builtins.float | None = ..., + total_value_units: builtins.float | None = ..., + total_value_structures: builtins.float | None = ..., + killed_value_units: builtins.float | None = ..., + killed_value_structures: builtins.float | None = ..., + collected_minerals: builtins.float | None = ..., + collected_vespene: builtins.float | None = ..., + collection_rate_minerals: builtins.float | None = ..., + collection_rate_vespene: builtins.float | None = ..., + spent_minerals: builtins.float | None = ..., + spent_vespene: builtins.float | None = ..., + food_used: global___CategoryScoreDetails | None = ..., + killed_minerals: global___CategoryScoreDetails | None = ..., + killed_vespene: global___CategoryScoreDetails | None = ..., + lost_minerals: global___CategoryScoreDetails | None = ..., + lost_vespene: global___CategoryScoreDetails | None = ..., + friendly_fire_minerals: global___CategoryScoreDetails | None = ..., + friendly_fire_vespene: global___CategoryScoreDetails | None = ..., + used_minerals: global___CategoryScoreDetails | None = ..., + used_vespene: global___CategoryScoreDetails | None = ..., + total_used_minerals: global___CategoryScoreDetails | None = ..., + total_used_vespene: global___CategoryScoreDetails | None = ..., + total_damage_dealt: global___VitalScoreDetails | None = ..., + total_damage_taken: global___VitalScoreDetails | None = ..., + total_healed: global___VitalScoreDetails | None = ..., + current_apm: builtins.float | None = ..., + current_effective_apm: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["collected_minerals", b"collected_minerals", "collected_vespene", b"collected_vespene", "collection_rate_minerals", b"collection_rate_minerals", "collection_rate_vespene", b"collection_rate_vespene", "current_apm", b"current_apm", "current_effective_apm", b"current_effective_apm", "food_used", b"food_used", "friendly_fire_minerals", b"friendly_fire_minerals", "friendly_fire_vespene", b"friendly_fire_vespene", "idle_production_time", b"idle_production_time", "idle_worker_time", b"idle_worker_time", "killed_minerals", b"killed_minerals", "killed_value_structures", b"killed_value_structures", "killed_value_units", b"killed_value_units", "killed_vespene", b"killed_vespene", "lost_minerals", b"lost_minerals", "lost_vespene", b"lost_vespene", "spent_minerals", b"spent_minerals", "spent_vespene", b"spent_vespene", "total_damage_dealt", b"total_damage_dealt", "total_damage_taken", b"total_damage_taken", "total_healed", b"total_healed", "total_used_minerals", b"total_used_minerals", "total_used_vespene", b"total_used_vespene", "total_value_structures", b"total_value_structures", "total_value_units", b"total_value_units", "used_minerals", b"used_minerals", "used_vespene", b"used_vespene"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["collected_minerals", b"collected_minerals", "collected_vespene", b"collected_vespene", "collection_rate_minerals", b"collection_rate_minerals", "collection_rate_vespene", b"collection_rate_vespene", "current_apm", b"current_apm", "current_effective_apm", b"current_effective_apm", "food_used", b"food_used", "friendly_fire_minerals", b"friendly_fire_minerals", "friendly_fire_vespene", b"friendly_fire_vespene", "idle_production_time", b"idle_production_time", "idle_worker_time", b"idle_worker_time", "killed_minerals", b"killed_minerals", "killed_value_structures", b"killed_value_structures", "killed_value_units", b"killed_value_units", "killed_vespene", b"killed_vespene", "lost_minerals", b"lost_minerals", "lost_vespene", b"lost_vespene", "spent_minerals", b"spent_minerals", "spent_vespene", b"spent_vespene", "total_damage_dealt", b"total_damage_dealt", "total_damage_taken", b"total_damage_taken", "total_healed", b"total_healed", "total_used_minerals", b"total_used_minerals", "total_used_vespene", b"total_used_vespene", "total_value_structures", b"total_value_structures", "total_value_units", b"total_value_units", "used_minerals", b"used_minerals", "used_vespene", b"used_vespene"]) -> None: ... + +global___ScoreDetails = ScoreDetails diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/spatial_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/spatial_pb2.pyi new file mode 100644 index 000000000..1e2559038 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/spatial_pb2.pyi @@ -0,0 +1,436 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import s2clientprotocol.common_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing_extensions.final +class ObservationFeatureLayer(google.protobuf.message.Message): + """ + Observation - Feature Layer + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RENDERS_FIELD_NUMBER: builtins.int + MINIMAP_RENDERS_FIELD_NUMBER: builtins.int + @property + def renders(self) -> global___FeatureLayers: ... + @property + def minimap_renders(self) -> global___FeatureLayersMinimap: ... + def __init__( + self, + *, + renders: global___FeatureLayers | None = ..., + minimap_renders: global___FeatureLayersMinimap | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["minimap_renders", b"minimap_renders", "renders", b"renders"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["minimap_renders", b"minimap_renders", "renders", b"renders"]) -> None: ... + +global___ObservationFeatureLayer = ObservationFeatureLayer + +@typing_extensions.final +class FeatureLayers(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + HEIGHT_MAP_FIELD_NUMBER: builtins.int + VISIBILITY_MAP_FIELD_NUMBER: builtins.int + CREEP_FIELD_NUMBER: builtins.int + POWER_FIELD_NUMBER: builtins.int + PLAYER_ID_FIELD_NUMBER: builtins.int + UNIT_TYPE_FIELD_NUMBER: builtins.int + SELECTED_FIELD_NUMBER: builtins.int + UNIT_HIT_POINTS_FIELD_NUMBER: builtins.int + UNIT_HIT_POINTS_RATIO_FIELD_NUMBER: builtins.int + UNIT_ENERGY_FIELD_NUMBER: builtins.int + UNIT_ENERGY_RATIO_FIELD_NUMBER: builtins.int + UNIT_SHIELDS_FIELD_NUMBER: builtins.int + UNIT_SHIELDS_RATIO_FIELD_NUMBER: builtins.int + PLAYER_RELATIVE_FIELD_NUMBER: builtins.int + UNIT_DENSITY_AA_FIELD_NUMBER: builtins.int + UNIT_DENSITY_FIELD_NUMBER: builtins.int + EFFECTS_FIELD_NUMBER: builtins.int + HALLUCINATIONS_FIELD_NUMBER: builtins.int + CLOAKED_FIELD_NUMBER: builtins.int + BLIP_FIELD_NUMBER: builtins.int + BUFFS_FIELD_NUMBER: builtins.int + BUFF_DURATION_FIELD_NUMBER: builtins.int + ACTIVE_FIELD_NUMBER: builtins.int + BUILD_PROGRESS_FIELD_NUMBER: builtins.int + BUILDABLE_FIELD_NUMBER: builtins.int + PATHABLE_FIELD_NUMBER: builtins.int + PLACEHOLDER_FIELD_NUMBER: builtins.int + @property + def height_map(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Terrain height. World space units of [-200, 200] encoded into [0, 255].""" + @property + def visibility_map(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. 0=Hidden, 1=Fogged, 2=Visible, 3=FullHidden""" + @property + def creep(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Zerg creep.""" + @property + def power(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Protoss power.""" + @property + def player_id(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Participants: [1, 15] Neutral: 16""" + @property + def unit_type(self) -> s2clientprotocol.common_pb2.ImageData: + """int32. Unique identifier for type of unit.""" + @property + def selected(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Selected units.""" + @property + def unit_hit_points(self) -> s2clientprotocol.common_pb2.ImageData: + """int32.""" + @property + def unit_hit_points_ratio(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Ratio of current health to max health. [0%, 100%] encoded into [0, 255].""" + @property + def unit_energy(self) -> s2clientprotocol.common_pb2.ImageData: + """int32.""" + @property + def unit_energy_ratio(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Ratio of current energy to max energy. [0%, 100%] encoded into [0, 255].""" + @property + def unit_shields(self) -> s2clientprotocol.common_pb2.ImageData: + """int32.""" + @property + def unit_shields_ratio(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Ratio of current shields to max shields. [0%, 100%] encoded into [0, 255].""" + @property + def player_relative(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. See "Alliance" enum in raw.proto. Range: [1, 4]""" + @property + def unit_density_aa(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Density of units overlapping a pixel, anti-aliased. [0.0, 16.0f] encoded into [0, 255].""" + @property + def unit_density(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Count of units overlapping a pixel.""" + @property + def effects(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Visuals of persistent abilities. (eg. Psistorm)""" + @property + def hallucinations(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Whether the unit here is a hallucination.""" + @property + def cloaked(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Whether the unit here is cloaked. Hidden units will show up too, but with less details in other layers.""" + @property + def blip(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Whether the unit here is a blip.""" + @property + def buffs(self) -> s2clientprotocol.common_pb2.ImageData: + """int32. One of the buffs applied to this unit. Extras are ignored.""" + @property + def buff_duration(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Ratio of buff remaining. [0%, 100%] encoded into [0, 255].""" + @property + def active(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Whether the unit here is active.""" + @property + def build_progress(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. How far along the building is building something. [0%, 100%] encoded into [0, 255].""" + @property + def buildable(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Whether a building can be built here.""" + @property + def pathable(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Whether a unit can walk here.""" + @property + def placeholder(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Whether the unit here is a placeholder building to be constructed.""" + def __init__( + self, + *, + height_map: s2clientprotocol.common_pb2.ImageData | None = ..., + visibility_map: s2clientprotocol.common_pb2.ImageData | None = ..., + creep: s2clientprotocol.common_pb2.ImageData | None = ..., + power: s2clientprotocol.common_pb2.ImageData | None = ..., + player_id: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_type: s2clientprotocol.common_pb2.ImageData | None = ..., + selected: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_hit_points: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_hit_points_ratio: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_energy: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_energy_ratio: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_shields: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_shields_ratio: s2clientprotocol.common_pb2.ImageData | None = ..., + player_relative: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_density_aa: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_density: s2clientprotocol.common_pb2.ImageData | None = ..., + effects: s2clientprotocol.common_pb2.ImageData | None = ..., + hallucinations: s2clientprotocol.common_pb2.ImageData | None = ..., + cloaked: s2clientprotocol.common_pb2.ImageData | None = ..., + blip: s2clientprotocol.common_pb2.ImageData | None = ..., + buffs: s2clientprotocol.common_pb2.ImageData | None = ..., + buff_duration: s2clientprotocol.common_pb2.ImageData | None = ..., + active: s2clientprotocol.common_pb2.ImageData | None = ..., + build_progress: s2clientprotocol.common_pb2.ImageData | None = ..., + buildable: s2clientprotocol.common_pb2.ImageData | None = ..., + pathable: s2clientprotocol.common_pb2.ImageData | None = ..., + placeholder: s2clientprotocol.common_pb2.ImageData | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["active", b"active", "blip", b"blip", "buff_duration", b"buff_duration", "buffs", b"buffs", "build_progress", b"build_progress", "buildable", b"buildable", "cloaked", b"cloaked", "creep", b"creep", "effects", b"effects", "hallucinations", b"hallucinations", "height_map", b"height_map", "pathable", b"pathable", "placeholder", b"placeholder", "player_id", b"player_id", "player_relative", b"player_relative", "power", b"power", "selected", b"selected", "unit_density", b"unit_density", "unit_density_aa", b"unit_density_aa", "unit_energy", b"unit_energy", "unit_energy_ratio", b"unit_energy_ratio", "unit_hit_points", b"unit_hit_points", "unit_hit_points_ratio", b"unit_hit_points_ratio", "unit_shields", b"unit_shields", "unit_shields_ratio", b"unit_shields_ratio", "unit_type", b"unit_type", "visibility_map", b"visibility_map"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["active", b"active", "blip", b"blip", "buff_duration", b"buff_duration", "buffs", b"buffs", "build_progress", b"build_progress", "buildable", b"buildable", "cloaked", b"cloaked", "creep", b"creep", "effects", b"effects", "hallucinations", b"hallucinations", "height_map", b"height_map", "pathable", b"pathable", "placeholder", b"placeholder", "player_id", b"player_id", "player_relative", b"player_relative", "power", b"power", "selected", b"selected", "unit_density", b"unit_density", "unit_density_aa", b"unit_density_aa", "unit_energy", b"unit_energy", "unit_energy_ratio", b"unit_energy_ratio", "unit_hit_points", b"unit_hit_points", "unit_hit_points_ratio", b"unit_hit_points_ratio", "unit_shields", b"unit_shields", "unit_shields_ratio", b"unit_shields_ratio", "unit_type", b"unit_type", "visibility_map", b"visibility_map"]) -> None: ... + +global___FeatureLayers = FeatureLayers + +@typing_extensions.final +class FeatureLayersMinimap(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + HEIGHT_MAP_FIELD_NUMBER: builtins.int + VISIBILITY_MAP_FIELD_NUMBER: builtins.int + CREEP_FIELD_NUMBER: builtins.int + CAMERA_FIELD_NUMBER: builtins.int + PLAYER_ID_FIELD_NUMBER: builtins.int + PLAYER_RELATIVE_FIELD_NUMBER: builtins.int + SELECTED_FIELD_NUMBER: builtins.int + ALERTS_FIELD_NUMBER: builtins.int + BUILDABLE_FIELD_NUMBER: builtins.int + PATHABLE_FIELD_NUMBER: builtins.int + UNIT_TYPE_FIELD_NUMBER: builtins.int + @property + def height_map(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Terrain height. World space units of [-200, 200] encoded into [0, 255].""" + @property + def visibility_map(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. 0=Hidden, 1=Fogged, 2=Visible, 3=FullHidden""" + @property + def creep(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Zerg creep.""" + @property + def camera(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Area covered by the camera.""" + @property + def player_id(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. Participants: [1, 15] Neutral: 16""" + @property + def player_relative(self) -> s2clientprotocol.common_pb2.ImageData: + """uint8. See "Alliance" enum in raw.proto. Range: [1, 4]""" + @property + def selected(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Selected units.""" + @property + def alerts(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Shows 'UnitAttacked' alert location.""" + @property + def buildable(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Whether a building can be built here.""" + @property + def pathable(self) -> s2clientprotocol.common_pb2.ImageData: + """1-bit. Whether a unit can walk here.""" + @property + def unit_type(self) -> s2clientprotocol.common_pb2.ImageData: + """Cheat layers, enable with SpatialCameraSetup.allow_cheating_layers. + int32. Unique identifier for type of unit. + """ + def __init__( + self, + *, + height_map: s2clientprotocol.common_pb2.ImageData | None = ..., + visibility_map: s2clientprotocol.common_pb2.ImageData | None = ..., + creep: s2clientprotocol.common_pb2.ImageData | None = ..., + camera: s2clientprotocol.common_pb2.ImageData | None = ..., + player_id: s2clientprotocol.common_pb2.ImageData | None = ..., + player_relative: s2clientprotocol.common_pb2.ImageData | None = ..., + selected: s2clientprotocol.common_pb2.ImageData | None = ..., + alerts: s2clientprotocol.common_pb2.ImageData | None = ..., + buildable: s2clientprotocol.common_pb2.ImageData | None = ..., + pathable: s2clientprotocol.common_pb2.ImageData | None = ..., + unit_type: s2clientprotocol.common_pb2.ImageData | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["alerts", b"alerts", "buildable", b"buildable", "camera", b"camera", "creep", b"creep", "height_map", b"height_map", "pathable", b"pathable", "player_id", b"player_id", "player_relative", b"player_relative", "selected", b"selected", "unit_type", b"unit_type", "visibility_map", b"visibility_map"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["alerts", b"alerts", "buildable", b"buildable", "camera", b"camera", "creep", b"creep", "height_map", b"height_map", "pathable", b"pathable", "player_id", b"player_id", "player_relative", b"player_relative", "selected", b"selected", "unit_type", b"unit_type", "visibility_map", b"visibility_map"]) -> None: ... + +global___FeatureLayersMinimap = FeatureLayersMinimap + +@typing_extensions.final +class ObservationRender(google.protobuf.message.Message): + """ + Observation - Rendered + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MAP_FIELD_NUMBER: builtins.int + MINIMAP_FIELD_NUMBER: builtins.int + @property + def map(self) -> s2clientprotocol.common_pb2.ImageData: ... + @property + def minimap(self) -> s2clientprotocol.common_pb2.ImageData: ... + def __init__( + self, + *, + map: s2clientprotocol.common_pb2.ImageData | None = ..., + minimap: s2clientprotocol.common_pb2.ImageData | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["map", b"map", "minimap", b"minimap"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["map", b"map", "minimap", b"minimap"]) -> None: ... + +global___ObservationRender = ObservationRender + +@typing_extensions.final +class ActionSpatial(google.protobuf.message.Message): + """ + Action + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_COMMAND_FIELD_NUMBER: builtins.int + CAMERA_MOVE_FIELD_NUMBER: builtins.int + UNIT_SELECTION_POINT_FIELD_NUMBER: builtins.int + UNIT_SELECTION_RECT_FIELD_NUMBER: builtins.int + @property + def unit_command(self) -> global___ActionSpatialUnitCommand: ... + @property + def camera_move(self) -> global___ActionSpatialCameraMove: ... + @property + def unit_selection_point(self) -> global___ActionSpatialUnitSelectionPoint: ... + @property + def unit_selection_rect(self) -> global___ActionSpatialUnitSelectionRect: ... + def __init__( + self, + *, + unit_command: global___ActionSpatialUnitCommand | None = ..., + camera_move: global___ActionSpatialCameraMove | None = ..., + unit_selection_point: global___ActionSpatialUnitSelectionPoint | None = ..., + unit_selection_rect: global___ActionSpatialUnitSelectionRect | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["action", b"action", "camera_move", b"camera_move", "unit_command", b"unit_command", "unit_selection_point", b"unit_selection_point", "unit_selection_rect", b"unit_selection_rect"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["action", b"action", "camera_move", b"camera_move", "unit_command", b"unit_command", "unit_selection_point", b"unit_selection_point", "unit_selection_rect", b"unit_selection_rect"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["action", b"action"]) -> typing_extensions.Literal["unit_command", "camera_move", "unit_selection_point", "unit_selection_rect"] | None: ... + +global___ActionSpatial = ActionSpatial + +@typing_extensions.final +class ActionSpatialUnitCommand(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITY_ID_FIELD_NUMBER: builtins.int + TARGET_SCREEN_COORD_FIELD_NUMBER: builtins.int + TARGET_MINIMAP_COORD_FIELD_NUMBER: builtins.int + QUEUE_COMMAND_FIELD_NUMBER: builtins.int + ability_id: builtins.int + @property + def target_screen_coord(self) -> s2clientprotocol.common_pb2.PointI: ... + @property + def target_minimap_coord(self) -> s2clientprotocol.common_pb2.PointI: ... + queue_command: builtins.bool + """Equivalent to shift+command.""" + def __init__( + self, + *, + ability_id: builtins.int | None = ..., + target_screen_coord: s2clientprotocol.common_pb2.PointI | None = ..., + target_minimap_coord: s2clientprotocol.common_pb2.PointI | None = ..., + queue_command: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "queue_command", b"queue_command", "target", b"target", "target_minimap_coord", b"target_minimap_coord", "target_screen_coord", b"target_screen_coord"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "queue_command", b"queue_command", "target", b"target", "target_minimap_coord", b"target_minimap_coord", "target_screen_coord", b"target_screen_coord"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["target", b"target"]) -> typing_extensions.Literal["target_screen_coord", "target_minimap_coord"] | None: ... + +global___ActionSpatialUnitCommand = ActionSpatialUnitCommand + +@typing_extensions.final +class ActionSpatialCameraMove(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CENTER_MINIMAP_FIELD_NUMBER: builtins.int + @property + def center_minimap(self) -> s2clientprotocol.common_pb2.PointI: + """Simulates a click on the minimap to move the camera.""" + def __init__( + self, + *, + center_minimap: s2clientprotocol.common_pb2.PointI | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["center_minimap", b"center_minimap"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["center_minimap", b"center_minimap"]) -> None: ... + +global___ActionSpatialCameraMove = ActionSpatialCameraMove + +@typing_extensions.final +class ActionSpatialUnitSelectionPoint(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Type: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ActionSpatialUnitSelectionPoint._Type.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Select: ActionSpatialUnitSelectionPoint._Type.ValueType # 1 + """Equivalent to normal click. Changes selection to unit.""" + Toggle: ActionSpatialUnitSelectionPoint._Type.ValueType # 2 + """Equivalent to shift+click. Toggle selection of unit.""" + AllType: ActionSpatialUnitSelectionPoint._Type.ValueType # 3 + """Equivalent to control+click. Selects all units of a given type.""" + AddAllType: ActionSpatialUnitSelectionPoint._Type.ValueType # 4 + """Equivalent to shift+control+click. Selects all units of a given type.""" + + class Type(_Type, metaclass=_TypeEnumTypeWrapper): ... + Select: ActionSpatialUnitSelectionPoint.Type.ValueType # 1 + """Equivalent to normal click. Changes selection to unit.""" + Toggle: ActionSpatialUnitSelectionPoint.Type.ValueType # 2 + """Equivalent to shift+click. Toggle selection of unit.""" + AllType: ActionSpatialUnitSelectionPoint.Type.ValueType # 3 + """Equivalent to control+click. Selects all units of a given type.""" + AddAllType: ActionSpatialUnitSelectionPoint.Type.ValueType # 4 + """Equivalent to shift+control+click. Selects all units of a given type.""" + + SELECTION_SCREEN_COORD_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + @property + def selection_screen_coord(self) -> s2clientprotocol.common_pb2.PointI: ... + type: global___ActionSpatialUnitSelectionPoint.Type.ValueType + def __init__( + self, + *, + selection_screen_coord: s2clientprotocol.common_pb2.PointI | None = ..., + type: global___ActionSpatialUnitSelectionPoint.Type.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["selection_screen_coord", b"selection_screen_coord", "type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["selection_screen_coord", b"selection_screen_coord", "type", b"type"]) -> None: ... + +global___ActionSpatialUnitSelectionPoint = ActionSpatialUnitSelectionPoint + +@typing_extensions.final +class ActionSpatialUnitSelectionRect(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SELECTION_SCREEN_COORD_FIELD_NUMBER: builtins.int + SELECTION_ADD_FIELD_NUMBER: builtins.int + @property + def selection_screen_coord(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[s2clientprotocol.common_pb2.RectangleI]: + """Eventually this should not be an array, but a single field (multiple would be cheating).""" + selection_add: builtins.bool + """Equivalent to shift+drag. Adds units to selection.""" + def __init__( + self, + *, + selection_screen_coord: collections.abc.Iterable[s2clientprotocol.common_pb2.RectangleI] | None = ..., + selection_add: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["selection_add", b"selection_add"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["selection_add", b"selection_add", "selection_screen_coord", b"selection_screen_coord"]) -> None: ... + +global___ActionSpatialUnitSelectionRect = ActionSpatialUnitSelectionRect diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/ui_pb2.pyi b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/ui_pb2.pyi new file mode 100644 index 000000000..9490cde97 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/s2clientprotocol/ui_pb2.pyi @@ -0,0 +1,523 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing_extensions.final +class ObservationUI(google.protobuf.message.Message): + """ + Observation + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GROUPS_FIELD_NUMBER: builtins.int + SINGLE_FIELD_NUMBER: builtins.int + MULTI_FIELD_NUMBER: builtins.int + CARGO_FIELD_NUMBER: builtins.int + PRODUCTION_FIELD_NUMBER: builtins.int + @property + def groups(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ControlGroup]: ... + @property + def single(self) -> global___SinglePanel: ... + @property + def multi(self) -> global___MultiPanel: ... + @property + def cargo(self) -> global___CargoPanel: ... + @property + def production(self) -> global___ProductionPanel: ... + def __init__( + self, + *, + groups: collections.abc.Iterable[global___ControlGroup] | None = ..., + single: global___SinglePanel | None = ..., + multi: global___MultiPanel | None = ..., + cargo: global___CargoPanel | None = ..., + production: global___ProductionPanel | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["cargo", b"cargo", "multi", b"multi", "panel", b"panel", "production", b"production", "single", b"single"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["cargo", b"cargo", "groups", b"groups", "multi", b"multi", "panel", b"panel", "production", b"production", "single", b"single"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["panel", b"panel"]) -> typing_extensions.Literal["single", "multi", "cargo", "production"] | None: ... + +global___ObservationUI = ObservationUI + +@typing_extensions.final +class ControlGroup(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CONTROL_GROUP_INDEX_FIELD_NUMBER: builtins.int + LEADER_UNIT_TYPE_FIELD_NUMBER: builtins.int + COUNT_FIELD_NUMBER: builtins.int + control_group_index: builtins.int + leader_unit_type: builtins.int + count: builtins.int + def __init__( + self, + *, + control_group_index: builtins.int | None = ..., + leader_unit_type: builtins.int | None = ..., + count: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["control_group_index", b"control_group_index", "count", b"count", "leader_unit_type", b"leader_unit_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["control_group_index", b"control_group_index", "count", b"count", "leader_unit_type", b"leader_unit_type"]) -> None: ... + +global___ControlGroup = ControlGroup + +@typing_extensions.final +class UnitInfo(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_TYPE_FIELD_NUMBER: builtins.int + PLAYER_RELATIVE_FIELD_NUMBER: builtins.int + HEALTH_FIELD_NUMBER: builtins.int + SHIELDS_FIELD_NUMBER: builtins.int + ENERGY_FIELD_NUMBER: builtins.int + TRANSPORT_SLOTS_TAKEN_FIELD_NUMBER: builtins.int + BUILD_PROGRESS_FIELD_NUMBER: builtins.int + ADD_ON_FIELD_NUMBER: builtins.int + MAX_HEALTH_FIELD_NUMBER: builtins.int + MAX_SHIELDS_FIELD_NUMBER: builtins.int + MAX_ENERGY_FIELD_NUMBER: builtins.int + unit_type: builtins.int + player_relative: builtins.int + health: builtins.int + shields: builtins.int + energy: builtins.int + transport_slots_taken: builtins.int + build_progress: builtins.float + """Range: [0.0, 1.0]""" + @property + def add_on(self) -> global___UnitInfo: ... + max_health: builtins.int + max_shields: builtins.int + max_energy: builtins.int + def __init__( + self, + *, + unit_type: builtins.int | None = ..., + player_relative: builtins.int | None = ..., + health: builtins.int | None = ..., + shields: builtins.int | None = ..., + energy: builtins.int | None = ..., + transport_slots_taken: builtins.int | None = ..., + build_progress: builtins.float | None = ..., + add_on: global___UnitInfo | None = ..., + max_health: builtins.int | None = ..., + max_shields: builtins.int | None = ..., + max_energy: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["add_on", b"add_on", "build_progress", b"build_progress", "energy", b"energy", "health", b"health", "max_energy", b"max_energy", "max_health", b"max_health", "max_shields", b"max_shields", "player_relative", b"player_relative", "shields", b"shields", "transport_slots_taken", b"transport_slots_taken", "unit_type", b"unit_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["add_on", b"add_on", "build_progress", b"build_progress", "energy", b"energy", "health", b"health", "max_energy", b"max_energy", "max_health", b"max_health", "max_shields", b"max_shields", "player_relative", b"player_relative", "shields", b"shields", "transport_slots_taken", b"transport_slots_taken", "unit_type", b"unit_type"]) -> None: ... + +global___UnitInfo = UnitInfo + +@typing_extensions.final +class SinglePanel(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_FIELD_NUMBER: builtins.int + ATTACK_UPGRADE_LEVEL_FIELD_NUMBER: builtins.int + ARMOR_UPGRADE_LEVEL_FIELD_NUMBER: builtins.int + SHIELD_UPGRADE_LEVEL_FIELD_NUMBER: builtins.int + BUFFS_FIELD_NUMBER: builtins.int + @property + def unit(self) -> global___UnitInfo: ... + attack_upgrade_level: builtins.int + armor_upgrade_level: builtins.int + shield_upgrade_level: builtins.int + @property + def buffs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def __init__( + self, + *, + unit: global___UnitInfo | None = ..., + attack_upgrade_level: builtins.int | None = ..., + armor_upgrade_level: builtins.int | None = ..., + shield_upgrade_level: builtins.int | None = ..., + buffs: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["armor_upgrade_level", b"armor_upgrade_level", "attack_upgrade_level", b"attack_upgrade_level", "shield_upgrade_level", b"shield_upgrade_level", "unit", b"unit"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["armor_upgrade_level", b"armor_upgrade_level", "attack_upgrade_level", b"attack_upgrade_level", "buffs", b"buffs", "shield_upgrade_level", b"shield_upgrade_level", "unit", b"unit"]) -> None: ... + +global___SinglePanel = SinglePanel + +@typing_extensions.final +class MultiPanel(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNITS_FIELD_NUMBER: builtins.int + @property + def units(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UnitInfo]: ... + def __init__( + self, + *, + units: collections.abc.Iterable[global___UnitInfo] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["units", b"units"]) -> None: ... + +global___MultiPanel = MultiPanel + +@typing_extensions.final +class CargoPanel(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_FIELD_NUMBER: builtins.int + PASSENGERS_FIELD_NUMBER: builtins.int + SLOTS_AVAILABLE_FIELD_NUMBER: builtins.int + @property + def unit(self) -> global___UnitInfo: ... + @property + def passengers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UnitInfo]: ... + slots_available: builtins.int + """TODO: Change to cargo size""" + def __init__( + self, + *, + unit: global___UnitInfo | None = ..., + passengers: collections.abc.Iterable[global___UnitInfo] | None = ..., + slots_available: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["slots_available", b"slots_available", "unit", b"unit"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["passengers", b"passengers", "slots_available", b"slots_available", "unit", b"unit"]) -> None: ... + +global___CargoPanel = CargoPanel + +@typing_extensions.final +class BuildItem(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITY_ID_FIELD_NUMBER: builtins.int + BUILD_PROGRESS_FIELD_NUMBER: builtins.int + ability_id: builtins.int + build_progress: builtins.float + """Range: [0.0, 1.0]""" + def __init__( + self, + *, + ability_id: builtins.int | None = ..., + build_progress: builtins.float | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "build_progress", b"build_progress"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id", "build_progress", b"build_progress"]) -> None: ... + +global___BuildItem = BuildItem + +@typing_extensions.final +class ProductionPanel(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_FIELD_NUMBER: builtins.int + BUILD_QUEUE_FIELD_NUMBER: builtins.int + PRODUCTION_QUEUE_FIELD_NUMBER: builtins.int + @property + def unit(self) -> global___UnitInfo: ... + @property + def build_queue(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UnitInfo]: + """build_queue ONLY gives information about units that are being produced. + Use production_queue instead to see both units being trained as well as research in the queue. + """ + @property + def production_queue(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BuildItem]: ... + def __init__( + self, + *, + unit: global___UnitInfo | None = ..., + build_queue: collections.abc.Iterable[global___UnitInfo] | None = ..., + production_queue: collections.abc.Iterable[global___BuildItem] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["unit", b"unit"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["build_queue", b"build_queue", "production_queue", b"production_queue", "unit", b"unit"]) -> None: ... + +global___ProductionPanel = ProductionPanel + +@typing_extensions.final +class ActionUI(google.protobuf.message.Message): + """ + Action + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CONTROL_GROUP_FIELD_NUMBER: builtins.int + SELECT_ARMY_FIELD_NUMBER: builtins.int + SELECT_WARP_GATES_FIELD_NUMBER: builtins.int + SELECT_LARVA_FIELD_NUMBER: builtins.int + SELECT_IDLE_WORKER_FIELD_NUMBER: builtins.int + MULTI_PANEL_FIELD_NUMBER: builtins.int + CARGO_PANEL_FIELD_NUMBER: builtins.int + PRODUCTION_PANEL_FIELD_NUMBER: builtins.int + TOGGLE_AUTOCAST_FIELD_NUMBER: builtins.int + @property + def control_group(self) -> global___ActionControlGroup: ... + @property + def select_army(self) -> global___ActionSelectArmy: ... + @property + def select_warp_gates(self) -> global___ActionSelectWarpGates: ... + @property + def select_larva(self) -> global___ActionSelectLarva: ... + @property + def select_idle_worker(self) -> global___ActionSelectIdleWorker: ... + @property + def multi_panel(self) -> global___ActionMultiPanel: ... + @property + def cargo_panel(self) -> global___ActionCargoPanelUnload: ... + @property + def production_panel(self) -> global___ActionProductionPanelRemoveFromQueue: ... + @property + def toggle_autocast(self) -> global___ActionToggleAutocast: ... + def __init__( + self, + *, + control_group: global___ActionControlGroup | None = ..., + select_army: global___ActionSelectArmy | None = ..., + select_warp_gates: global___ActionSelectWarpGates | None = ..., + select_larva: global___ActionSelectLarva | None = ..., + select_idle_worker: global___ActionSelectIdleWorker | None = ..., + multi_panel: global___ActionMultiPanel | None = ..., + cargo_panel: global___ActionCargoPanelUnload | None = ..., + production_panel: global___ActionProductionPanelRemoveFromQueue | None = ..., + toggle_autocast: global___ActionToggleAutocast | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["action", b"action", "cargo_panel", b"cargo_panel", "control_group", b"control_group", "multi_panel", b"multi_panel", "production_panel", b"production_panel", "select_army", b"select_army", "select_idle_worker", b"select_idle_worker", "select_larva", b"select_larva", "select_warp_gates", b"select_warp_gates", "toggle_autocast", b"toggle_autocast"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["action", b"action", "cargo_panel", b"cargo_panel", "control_group", b"control_group", "multi_panel", b"multi_panel", "production_panel", b"production_panel", "select_army", b"select_army", "select_idle_worker", b"select_idle_worker", "select_larva", b"select_larva", "select_warp_gates", b"select_warp_gates", "toggle_autocast", b"toggle_autocast"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["action", b"action"]) -> typing_extensions.Literal["control_group", "select_army", "select_warp_gates", "select_larva", "select_idle_worker", "multi_panel", "cargo_panel", "production_panel", "toggle_autocast"] | None: ... + +global___ActionUI = ActionUI + +@typing_extensions.final +class ActionControlGroup(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _ControlGroupAction: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ControlGroupActionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ActionControlGroup._ControlGroupAction.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Recall: ActionControlGroup._ControlGroupAction.ValueType # 1 + """Equivalent to number hotkey. Replaces current selection with control group.""" + Set: ActionControlGroup._ControlGroupAction.ValueType # 2 + """Equivalent to Control + number hotkey. Sets control group to current selection.""" + Append: ActionControlGroup._ControlGroupAction.ValueType # 3 + """Equivalent to Shift + number hotkey. Adds current selection into control group.""" + SetAndSteal: ActionControlGroup._ControlGroupAction.ValueType # 4 + """Equivalent to Control + Alt + number hotkey. Sets control group to current selection. Units are removed from other control groups.""" + AppendAndSteal: ActionControlGroup._ControlGroupAction.ValueType # 5 + """Equivalent to Shift + Alt + number hotkey. Adds current selection into control group. Units are removed from other control groups.""" + + class ControlGroupAction(_ControlGroupAction, metaclass=_ControlGroupActionEnumTypeWrapper): ... + Recall: ActionControlGroup.ControlGroupAction.ValueType # 1 + """Equivalent to number hotkey. Replaces current selection with control group.""" + Set: ActionControlGroup.ControlGroupAction.ValueType # 2 + """Equivalent to Control + number hotkey. Sets control group to current selection.""" + Append: ActionControlGroup.ControlGroupAction.ValueType # 3 + """Equivalent to Shift + number hotkey. Adds current selection into control group.""" + SetAndSteal: ActionControlGroup.ControlGroupAction.ValueType # 4 + """Equivalent to Control + Alt + number hotkey. Sets control group to current selection. Units are removed from other control groups.""" + AppendAndSteal: ActionControlGroup.ControlGroupAction.ValueType # 5 + """Equivalent to Shift + Alt + number hotkey. Adds current selection into control group. Units are removed from other control groups.""" + + ACTION_FIELD_NUMBER: builtins.int + CONTROL_GROUP_INDEX_FIELD_NUMBER: builtins.int + action: global___ActionControlGroup.ControlGroupAction.ValueType + control_group_index: builtins.int + def __init__( + self, + *, + action: global___ActionControlGroup.ControlGroupAction.ValueType | None = ..., + control_group_index: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["action", b"action", "control_group_index", b"control_group_index"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["action", b"action", "control_group_index", b"control_group_index"]) -> None: ... + +global___ActionControlGroup = ActionControlGroup + +@typing_extensions.final +class ActionSelectArmy(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SELECTION_ADD_FIELD_NUMBER: builtins.int + selection_add: builtins.bool + def __init__( + self, + *, + selection_add: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["selection_add", b"selection_add"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["selection_add", b"selection_add"]) -> None: ... + +global___ActionSelectArmy = ActionSelectArmy + +@typing_extensions.final +class ActionSelectWarpGates(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SELECTION_ADD_FIELD_NUMBER: builtins.int + selection_add: builtins.bool + def __init__( + self, + *, + selection_add: builtins.bool | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["selection_add", b"selection_add"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["selection_add", b"selection_add"]) -> None: ... + +global___ActionSelectWarpGates = ActionSelectWarpGates + +@typing_extensions.final +class ActionSelectLarva(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___ActionSelectLarva = ActionSelectLarva + +@typing_extensions.final +class ActionSelectIdleWorker(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Type: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ActionSelectIdleWorker._Type.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Set: ActionSelectIdleWorker._Type.ValueType # 1 + """Equivalent to click with no modifiers. Replaces selection with single idle worker.""" + Add: ActionSelectIdleWorker._Type.ValueType # 2 + """Equivalent to shift+click. Adds single idle worker to current selection.""" + All: ActionSelectIdleWorker._Type.ValueType # 3 + """Equivalent to control+click. Selects all idle workers.""" + AddAll: ActionSelectIdleWorker._Type.ValueType # 4 + """Equivalent to shift+control+click. Adds all idle workers to current selection.""" + + class Type(_Type, metaclass=_TypeEnumTypeWrapper): ... + Set: ActionSelectIdleWorker.Type.ValueType # 1 + """Equivalent to click with no modifiers. Replaces selection with single idle worker.""" + Add: ActionSelectIdleWorker.Type.ValueType # 2 + """Equivalent to shift+click. Adds single idle worker to current selection.""" + All: ActionSelectIdleWorker.Type.ValueType # 3 + """Equivalent to control+click. Selects all idle workers.""" + AddAll: ActionSelectIdleWorker.Type.ValueType # 4 + """Equivalent to shift+control+click. Adds all idle workers to current selection.""" + + TYPE_FIELD_NUMBER: builtins.int + type: global___ActionSelectIdleWorker.Type.ValueType + def __init__( + self, + *, + type: global___ActionSelectIdleWorker.Type.ValueType | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["type", b"type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["type", b"type"]) -> None: ... + +global___ActionSelectIdleWorker = ActionSelectIdleWorker + +@typing_extensions.final +class ActionMultiPanel(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Type: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ActionMultiPanel._Type.ValueType], builtins.type): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + SingleSelect: ActionMultiPanel._Type.ValueType # 1 + """Click on icon""" + DeselectUnit: ActionMultiPanel._Type.ValueType # 2 + """Shift Click on icon""" + SelectAllOfType: ActionMultiPanel._Type.ValueType # 3 + """Control Click on icon.""" + DeselectAllOfType: ActionMultiPanel._Type.ValueType # 4 + """Control+Shift Click on icon.""" + + class Type(_Type, metaclass=_TypeEnumTypeWrapper): ... + SingleSelect: ActionMultiPanel.Type.ValueType # 1 + """Click on icon""" + DeselectUnit: ActionMultiPanel.Type.ValueType # 2 + """Shift Click on icon""" + SelectAllOfType: ActionMultiPanel.Type.ValueType # 3 + """Control Click on icon.""" + DeselectAllOfType: ActionMultiPanel.Type.ValueType # 4 + """Control+Shift Click on icon.""" + + TYPE_FIELD_NUMBER: builtins.int + UNIT_INDEX_FIELD_NUMBER: builtins.int + type: global___ActionMultiPanel.Type.ValueType + unit_index: builtins.int + def __init__( + self, + *, + type: global___ActionMultiPanel.Type.ValueType | None = ..., + unit_index: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["type", b"type", "unit_index", b"unit_index"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["type", b"type", "unit_index", b"unit_index"]) -> None: ... + +global___ActionMultiPanel = ActionMultiPanel + +@typing_extensions.final +class ActionCargoPanelUnload(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_INDEX_FIELD_NUMBER: builtins.int + unit_index: builtins.int + def __init__( + self, + *, + unit_index: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["unit_index", b"unit_index"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["unit_index", b"unit_index"]) -> None: ... + +global___ActionCargoPanelUnload = ActionCargoPanelUnload + +@typing_extensions.final +class ActionProductionPanelRemoveFromQueue(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + UNIT_INDEX_FIELD_NUMBER: builtins.int + unit_index: builtins.int + def __init__( + self, + *, + unit_index: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["unit_index", b"unit_index"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["unit_index", b"unit_index"]) -> None: ... + +global___ActionProductionPanelRemoveFromQueue = ActionProductionPanelRemoveFromQueue + +@typing_extensions.final +class ActionToggleAutocast(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ABILITY_ID_FIELD_NUMBER: builtins.int + ability_id: builtins.int + def __init__( + self, + *, + ability_id: builtins.int | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["ability_id", b"ability_id"]) -> None: ... + +global___ActionToggleAutocast = ActionToggleAutocast diff --git a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml index 16bd13a4d..55fe528c0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/setuptools/METADATA.toml @@ -1,4 +1,5 @@ version = "68.0.*" +upstream_repository = "https://github.com/pypa/setuptools" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml index 2f8d0e659..23fe62d9e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/simplejson/METADATA.toml @@ -1,4 +1,5 @@ version = "3.19.*" +upstream_repository = "https://github.com/simplejson/simplejson" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/singledispatch/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/singledispatch/METADATA.toml index 3188e8fc2..8cbdb9a79 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/singledispatch/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/singledispatch/METADATA.toml @@ -1 +1,2 @@ version = "4.0.*" +upstream_repository = "https://github.com/jaraco/singledispatch" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/six/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/six/METADATA.toml index 7aac80450..1e209ddf8 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/six/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/six/METADATA.toml @@ -1 +1,2 @@ version = "1.16.*" +upstream_repository = "https://github.com/benjaminp/six" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/slumber/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/slumber/METADATA.toml index 55019ecce..e408f2381 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/slumber/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/slumber/METADATA.toml @@ -1,2 +1,3 @@ version = "0.7.*" +upstream_repository = "https://github.com/samgiles/slumber" requires = ["types-requests"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/METADATA.toml index fa7f7796a..4d6dcf39d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/stdlib-list/METADATA.toml @@ -1,2 +1,3 @@ version = "0.8.*" +upstream_repository = "https://github.com/pypi/stdlib-list" obsolete_since = "0.9.0" # Released on 2023-06-22 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/stripe/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/stripe/METADATA.toml index 045114fe5..b0a9497ad 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/stripe/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/stripe/METADATA.toml @@ -1,4 +1,5 @@ version = "3.5.*" +upstream_repository = "https://github.com/stripe/stripe-python" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tabulate/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/tabulate/METADATA.toml index 51e869b47..c90013533 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tabulate/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/tabulate/METADATA.toml @@ -1 +1,2 @@ version = "0.9.*" +upstream_repository = "https://github.com/astanin/python-tabulate" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/toml/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/toml/METADATA.toml index 5c7ed21e8..13a5562b3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/toml/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/toml/METADATA.toml @@ -1 +1,2 @@ version = "0.10.*" +upstream_repository = "https://github.com/uiri/toml" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/toposort/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/toposort/METADATA.toml index 5e0301ec6..598e8d0d5 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/toposort/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/toposort/METADATA.toml @@ -1 +1,2 @@ version = "1.10" +upstream_repository = "https://gitlab.com/ericvsmith/toposort" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/METADATA.toml index 987d23754..3c8564d17 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/METADATA.toml @@ -1,4 +1,5 @@ version = "4.65.*" +upstream_repository = "https://github.com/tqdm/tqdm" [tool.stubtest] extras = ["slack", "telegram"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/translationstring/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/translationstring/METADATA.toml index 6d3b92238..3c910d4fd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/translationstring/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/translationstring/METADATA.toml @@ -1 +1,2 @@ version = "1.4.*" +upstream_repository = "https://github.com/Pylons/translationstring" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/METADATA.toml index 55fd0f338..6b15f4dee 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter-languages/METADATA.toml @@ -1,2 +1,3 @@ -version = "1.6.*" +version = "1.7.*" +upstream_repository = "https://github.com/grantjenks/py-tree-sitter-languages" requires = ["types-tree-sitter"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/METADATA.toml index ae1fb69ff..85770bf0f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/tree-sitter/METADATA.toml @@ -1 +1,2 @@ version = "0.20.*" +upstream_repository = "https://github.com/tree-sitter/py-tree-sitter" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/METADATA.toml index 38c94680a..edbe27fbb 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/ttkthemes/METADATA.toml @@ -1 +1,2 @@ version = "3.2.*" +upstream_repository = "https://github.com/RedFantom/ttkthemes" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/METADATA.toml index 4849fa5ea..8f421a002 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/tzlocal/METADATA.toml @@ -1,2 +1,3 @@ version = "5.0.1" +upstream_repository = "https://github.com/regebro/tzlocal" requires = ["types-pytz"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ujson/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/ujson/METADATA.toml index 295659a16..106b24f04 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ujson/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/ujson/METADATA.toml @@ -1 +1,2 @@ version = "5.8.*" +upstream_repository = "https://github.com/ultrajson/ultrajson" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml index 344c34462..39f0246a6 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/urllib3/METADATA.toml @@ -1,4 +1,5 @@ version = "1.26.*" +upstream_repository = "https://github.com/urllib3/urllib3" obsolete_since = "2.0.0" # Released on 2023-04-26 partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/vobject/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/vobject/METADATA.toml index 51e869b47..9f14a75bf 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/vobject/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/vobject/METADATA.toml @@ -1 +1,2 @@ version = "0.9.*" +upstream_repository = "https://github.com/eventable/vobject" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/waitress/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/waitress/METADATA.toml index be1838d9f..48c7151c4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/waitress/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/waitress/METADATA.toml @@ -1,4 +1,5 @@ version = "2.1.*" +upstream_repository = "https://github.com/Pylons/waitress" requires = [] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/METADATA.toml index f3e83f9c4..ff3378e56 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/whatthepatch/METADATA.toml @@ -1 +1,2 @@ version = "1.0.*" +upstream_repository = "https://github.com/cscorley/whatthepatch" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/xmltodict/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/xmltodict/METADATA.toml index 9f7bb49c0..01d8351c2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/xmltodict/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/xmltodict/METADATA.toml @@ -1 +1,2 @@ version = "0.13.*" +upstream_repository = "https://github.com/martinblech/xmltodict" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/zstd/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/zstd/METADATA.toml index 97ceca8aa..c1f77cd44 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/zstd/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/zstd/METADATA.toml @@ -1 +1,2 @@ version = "1.5.*" +upstream_repository = "https://github.com/sergey-dryabzhinsky/python-zstd" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/METADATA.toml index 2e800d80f..3d7f4f91d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/zxcvbn/METADATA.toml @@ -1 +1,2 @@ version = "4.4.*" +upstream_repository = "https://github.com/dwolfhub/zxcvbn-python" From c925ea5dde21fb95bba2cb47b07ae188ab3540ba Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 22 Jul 2023 16:28:10 -0700 Subject: [PATCH 437/525] Fixed a bug that led to a hang and eventual crash (due to memory exhaustion) under certain circumstances where a function returns a generic `Callable` whose type parameters are not used in the input parameters for the function. This addresses #5540. (#5565) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 13 ++++++++++++- packages/pyright-internal/src/analyzer/types.ts | 7 ++++++- .../pyright-internal/src/tests/samples/typeVar12.py | 11 +++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index af5cdc1e5..f856075cb 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11115,7 +11115,18 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // specific use case. We may need to make this more sophisticated in // the future. if (isFunction(returnType) && !returnType.details.name) { - return FunctionType.cloneWithNewTypeVarScopeId(returnType, WildcardTypeVarScopeId); + const typeVarsInReturnType = getTypeVarArgumentsRecursive(returnType); + + // If there are no unsolved type variables, we're done. If there are + // unsolved type parameters, treat them as though they are rescoped + // to the callable. + if (typeVarsInReturnType.length > 0) { + return FunctionType.cloneWithNewTypeVarScopeId( + returnType, + WildcardTypeVarScopeId, + typeVarsInReturnType + ); + } } return returnType; diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 02b3e9885..aba5cfadc 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1648,12 +1648,17 @@ export namespace FunctionType { return newFunction; } - export function cloneWithNewTypeVarScopeId(type: FunctionType, newScopeId: TypeVarScopeId): FunctionType { + export function cloneWithNewTypeVarScopeId( + type: FunctionType, + newScopeId: TypeVarScopeId, + typeParameters: TypeVarType[] + ): FunctionType { const newFunction = TypeBase.cloneType(type); // Make a shallow clone of the details. newFunction.details = { ...type.details }; newFunction.details.typeVarScopeId = newScopeId; + newFunction.details.typeParameters = typeParameters; return newFunction; } diff --git a/packages/pyright-internal/src/tests/samples/typeVar12.py b/packages/pyright-internal/src/tests/samples/typeVar12.py index f4fb6d9ad..d392d675d 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar12.py +++ b/packages/pyright-internal/src/tests/samples/typeVar12.py @@ -48,6 +48,17 @@ def inner(*args: P.args, **kwargs: P.kwargs) -> None: return +def func8() -> Callable[[T], T]: + ... + + +func9 = func8() +v1 = func9(func9) +reveal_type(v1, expected_text="(T(1)@func8) -> T(1)@func8") +v2 = func9(func9(func9)) +reveal_type(v2, expected_text="(T(2)(1)@func8) -> T(2)(1)@func8") + + class A(Generic[T]): def method1(self) -> Callable[[T], T] | None: x: Optional[T] = None From deab6932dfbaa9fe588cb0fe46a7999fa30ac205 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 23 Jul 2023 08:49:06 -0700 Subject: [PATCH 438/525] Modified the heuristics used for narrowing on assignment when the assigned type contains an `Any`. If the target's declared type does not contain `Any`, the assignment shouldn't produce an `Any` within the resulting type. This addresses #5413. (#5566) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 25 +++++++++++------ .../src/analyzer/typeUtils.ts | 16 +++++++++++ .../src/tests/samples/assignment10.py | 27 ++++++++++++++++++- .../src/tests/samples/expression6.py | 4 +-- 4 files changed, 61 insertions(+), 11 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index f856075cb..9b2bf1ea6 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -193,6 +193,7 @@ import { combineVariances, computeMroLinearization, containsAnyOrUnknown, + containsAnyRecursive, containsLiteralType, convertParamSpecValueToType, convertToInstance, @@ -24075,7 +24076,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const expectedTypeArgType = typeVarContext.getPrimarySignature().getTypeVarType(typeParam); if (expectedTypeArgType) { - if (isAny(expectedTypeArgType) || isAnyOrUnknown(typeArg)) { + if (containsAnyRecursive(expectedTypeArgType) || isAnyOrUnknown(typeArg)) { replacedTypeArg = true; return expectedTypeArgType; } else if (isClassInstance(expectedTypeArgType) && isClassInstance(typeArg)) { @@ -24110,13 +24111,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const narrowedType = mapSubtypes(assignedType, (assignedSubtype) => { const narrowedSubtype = mapSubtypes(declaredType, (declaredSubtype) => { // We can't narrow "Any". - if (isAnyOrUnknown(declaredType)) { - return declaredType; + if (isAnyOrUnknown(declaredSubtype)) { + return declaredSubtype; } if (assignType(declaredSubtype, assignedSubtype)) { // If the source is generic and has unspecified type arguments, - // see if we can determine then based on the declared type. + // see if we can determine them based on the declared type. if (isInstantiableClass(declaredSubtype) && isInstantiableClass(assignedSubtype)) { const result = replaceTypeArgsWithAny(node, declaredSubtype, assignedSubtype); if (result) { @@ -24137,6 +24138,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return declaredSubtype; } + // If the assigned subtype is Any, stick with the declared type. + if (isAny(assignedSubtype)) { + return declaredSubtype; + } + + // If the declared type doesn't contain any `Any` but the assigned + // type does, stick with the declared type. + if (containsAnyRecursive(assignedSubtype) && !containsAnyRecursive(declaredSubtype)) { + return declaredSubtype; + } + return assignedSubtype; } @@ -24152,15 +24164,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return narrowedSubtype; }); - // If the result of narrowing is Any, stick with the declared (unnarrowed) type. // If the result of narrowing is an Unknown that is incomplete, propagate the // incomplete type for the benefit of code flow analysis. // If the result of narrowing is a complete Unknown, combine the Unknown type // with the declared type. In strict mode, this will retain the "unknown type" // diagnostics while still providing reasonable completion suggestions. - if (isAny(narrowedType)) { - return declaredType; - } else if (isIncompleteUnknown(narrowedType)) { + if (isIncompleteUnknown(narrowedType)) { return narrowedType; } else if (isUnknown(narrowedType)) { return combineTypes([narrowedType, declaredType]); diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index fddff0ebd..1fe44a04b 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2166,6 +2166,22 @@ export function getMembersForModule(moduleType: ModuleType, symbolTable: SymbolT }); } +// Determines if the type contains an Any recursively. +export function containsAnyRecursive(type: Type): boolean { + class AnyWalker extends TypeWalker { + foundAny = false; + + override visitAny(type: AnyType) { + this.foundAny = true; + this.cancelWalk(); + } + } + + const walker = new AnyWalker(); + walker.walk(type); + return walker.foundAny; +} + // Determines if the type contains an Any or Unknown type. If so, // it returns the Any or Unknown type. Unknowns are preferred over // Any if both are present. If recurse is true, it will recurse diff --git a/packages/pyright-internal/src/tests/samples/assignment10.py b/packages/pyright-internal/src/tests/samples/assignment10.py index 44620bdb6..fa41c9695 100644 --- a/packages/pyright-internal/src/tests/samples/assignment10.py +++ b/packages/pyright-internal/src/tests/samples/assignment10.py @@ -1,4 +1,7 @@ -# This sample tests some cases where types are narrowed on assignment. +# This sample tests some cases where types are narrowed on assignment, +# including some cases that involve "Any". + +from typing import Any class A: @@ -12,3 +15,25 @@ def method1(cls) -> bool: if cls.instance is None: cls.instance = cls() return cls.instance.foo + + +def func1(v1: list[Any | None], v2: list[int | str]): + x1: list[int | None] = v1 + reveal_type(x1, expected_text="list[int | None]") + + x2: list[Any] = v2 + reveal_type(x2, expected_text="list[Any]") + + x3: list[Any | str] = v2 + reveal_type(x3, expected_text="list[Any | str]") + + +def func2(v1: dict[int, Any | None], v2: dict[int, int | str]): + x1: dict[int, int | None] = v1 + reveal_type(x1, expected_text="dict[int, int | None]") + + x2: dict[Any, Any] = v2 + reveal_type(x2, expected_text="dict[Any, Any]") + + x3: dict[Any, Any | str] = v2 + reveal_type(x3, expected_text="dict[Any, Any | str]") diff --git a/packages/pyright-internal/src/tests/samples/expression6.py b/packages/pyright-internal/src/tests/samples/expression6.py index 90bfbb510..9889eed92 100644 --- a/packages/pyright-internal/src/tests/samples/expression6.py +++ b/packages/pyright-internal/src/tests/samples/expression6.py @@ -5,10 +5,10 @@ def func_or(a: dict[str, Any] | None): - a = a or dict() + a = a or {"": 0} reveal_type(a, expected_text="dict[str, Any]") def func_and(): - a: dict[str, Any] | None = True and dict() + a: dict[str, Any] | None = True and {"": 0} reveal_type(a, expected_text="dict[str, Any]") From ff61d75fd60b07319d70aeecd53a6d25554d6ff0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 23 Jul 2023 11:14:17 -0700 Subject: [PATCH 439/525] Added support within the constraint solver for higher-order functions that accept a callable parameterized with a ParamSpec where the passed callable is generic. This addresses #5495. (#5567) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 299 ++++++++++-------- .../src/tests/samples/solverHigherOrder9.py | 30 ++ .../src/tests/typeEvaluator2.test.ts | 6 + 3 files changed, 210 insertions(+), 125 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/solverHigherOrder9.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 9b2bf1ea6..e3c54f26f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -436,6 +436,11 @@ interface ReturnTypeInferenceContext { codeFlowAnalyzer: CodeFlowAnalyzer; } +interface ParamSpecArgResult { + argumentErrors: boolean; + typeVarContexts: (TypeVarContext | undefined)[]; +} + // How many levels deep should we attempt to infer return // types based on call-site argument types? The deeper we go, // the more types we may be able to infer, but the worse the @@ -10925,20 +10930,24 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } }); + let paramSpecTypeVarContext: (TypeVarContext | undefined)[] = []; + // Handle the assignment of additional arguments that map to a param spec. if (matchResults.paramSpecArgList && matchResults.paramSpecTarget) { - if ( - !validateFunctionArgumentsForParamSpec( - errorNode, - matchResults.paramSpecArgList, - matchResults.paramSpecTarget, - typeVarContext, - typeCondition - ) - ) { + const paramSpecArgResult = validateFunctionArgumentsForParamSpec( + errorNode, + matchResults.paramSpecArgList, + matchResults.paramSpecTarget, + typeVarContext, + typeCondition + ); + + if (paramSpecArgResult.argumentErrors) { argumentErrors = true; argumentMatchScore += 1; } + + paramSpecTypeVarContext = paramSpecArgResult.typeVarContexts; } else if (type.details.paramSpec) { if (!sawParamSpecArgs || !sawParamSpecKwargs) { if (!isTypeIncomplete) { @@ -11009,6 +11018,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }); specializedReturnType = addConditionToType(specializedReturnType, typeCondition); + // If the function includes a ParamSpec and the captured signature(s) includes + // generic types, we may need to apply those solved TypeVars. + if (paramSpecTypeVarContext.length > 0) { + paramSpecTypeVarContext.forEach((paramSpecTypeVarContext) => { + if (paramSpecTypeVarContext) { + specializedReturnType = applySolvedTypeVars(specializedReturnType, paramSpecTypeVarContext); + } + }); + } + // If the final return type is an unpacked tuple, turn it into a normal (unpacked) tuple. if (isUnpackedClass(specializedReturnType)) { specializedReturnType = ClassType.cloneForUnpacked(specializedReturnType, /* isUnpackedTuple */ false); @@ -11186,7 +11205,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions paramSpec: TypeVarType, destTypeVarContext: TypeVarContext, conditionFilter: TypeCondition[] | undefined - ): boolean { + ): ParamSpecArgResult { const signatureContexts = destTypeVarContext.getSignatureContexts(); // Handle the common case where there is only one signature context. @@ -11201,20 +11220,24 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } const filteredSignatureContexts: TypeVarSignatureContext[] = []; + const typeVarContexts: (TypeVarContext | undefined)[] = []; + signatureContexts.forEach((context) => { // Use speculative mode to avoid emitting errors or caching types. useSpeculativeMode(errorNode, () => { - if ( - validateFunctionArgumentsForParamSpecSignature( - errorNode, - argList, - paramSpec, - context, - conditionFilter - ) - ) { + const paramSpecArgResult = validateFunctionArgumentsForParamSpecSignature( + errorNode, + argList, + paramSpec, + context, + conditionFilter + ); + + if (!paramSpecArgResult.argumentErrors) { filteredSignatureContexts.push(context); } + + appendArray(typeVarContexts, paramSpecArgResult.typeVarContexts); }); }); @@ -11224,13 +11247,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } // Evaluate non-speculatively to produce a final result and cache types. - return validateFunctionArgumentsForParamSpecSignature( + const paramSpecArgResult = validateFunctionArgumentsForParamSpecSignature( errorNode, argList, paramSpec, filteredSignatureContexts.length > 0 ? filteredSignatureContexts[0] : signatureContexts[0], conditionFilter ); + + return { argumentErrors: paramSpecArgResult.argumentErrors, typeVarContexts }; } function validateFunctionArgumentsForParamSpecSignature( @@ -11239,7 +11264,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions paramSpec: TypeVarType, typeVarContext: TypeVarSignatureContext, conditionFilter: TypeCondition[] | undefined - ): boolean { + ): ParamSpecArgResult { const paramSpecType = typeVarContext.getParamSpecType(paramSpec); if (!paramSpecType) { addDiagnostic( @@ -11248,7 +11273,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions Localizer.Diagnostic.paramSpecNotBound().format({ type: printType(paramSpec) }), argList[0]?.valueExpression || errorNode ); - return false; + return { argumentErrors: true, typeVarContexts: [undefined] }; } const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); @@ -11256,117 +11281,138 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const srcTypeVarContext = new TypeVarContext(getTypeVarScopeIds(paramSpecType)); let reportedArgError = false; - // Build a map of all named parameters. - const paramMap = new Map(); - const paramSpecParams = paramSpecType.details.parameters; - paramSpecParams.forEach((param) => { - if (param.name) { - paramMap.set(param.name, param); - } - }); - - let positionalIndex = 0; - let positionalIndexLimit = paramSpecParams.findIndex( - (paramInfo) => paramInfo.category !== ParameterCategory.Simple - ); - if (positionalIndexLimit < 0) { - positionalIndexLimit = paramSpecParams.length; - } - const argsParam = paramSpecParams.find((paramInfo) => paramInfo.category === ParameterCategory.ArgsList); - const kwargsParam = paramSpecParams.find((paramInfo) => paramInfo.category === ParameterCategory.KwargsDict); - - const signatureTracker = new UniqueSignatureTracker(); let sawUnpackedListArgument = false; let sawUnpackedDictArgument = false; - - argList.forEach((arg) => { - if (arg.argumentCategory === ArgumentCategory.Simple) { - let paramType: Type | undefined; - - if (arg.name) { - const paramInfo = paramMap.get(arg.name.value); - if (paramInfo) { - paramType = paramInfo.type; - paramMap.delete(arg.name.value); - } else if (kwargsParam) { - paramType = kwargsParam.type; - } else { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.paramNameMissing().format({ name: arg.name.value }), - arg.name || errorNode - ); - reportedArgError = true; - } - } else { - if (positionalIndex < positionalIndexLimit) { - const paramInfo = paramSpecParams[positionalIndex]; - paramType = paramInfo.type; - if (paramInfo.name) { - paramMap.delete(paramInfo.name); - } - } else if (argsParam) { - paramType = argsParam.type; - } else { - addDiagnostic( - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - paramSpecParams.length === 1 - ? Localizer.Diagnostic.argPositionalExpectedOne() - : Localizer.Diagnostic.argPositionalExpectedCount().format({ - expected: paramSpecParams.length, - }), - arg.valueExpression ?? errorNode - ); - reportedArgError = true; + let paramMap = new Map(); + + // We'll use two passes in case there are type variables that depend + // on later arguments. + const passCount = 2; + for (let i = 0; i < passCount; i++) { + // Unless we're on the last pass, use speculative mode to suppress + // any diagnostics. + useSpeculativeMode(i < passCount - 1 ? errorNode : undefined, () => { + // Build a map of all named parameters. + paramMap = new Map(); + const paramSpecParams = paramSpecType.details.parameters; + paramSpecParams.forEach((param) => { + if (param.name) { + paramMap.set(param.name, param); } + }); - positionalIndex++; + let positionalIndex = 0; + let positionalIndexLimit = paramSpecParams.findIndex( + (paramInfo) => paramInfo.category !== ParameterCategory.Simple + ); + if (positionalIndexLimit < 0) { + positionalIndexLimit = paramSpecParams.length; } + const argsParam = paramSpecParams.find( + (paramInfo) => paramInfo.category === ParameterCategory.ArgsList + ); + const kwargsParam = paramSpecParams.find( + (paramInfo) => paramInfo.category === ParameterCategory.KwargsDict + ); - if (paramType) { - const argResult = validateArgType( - { - paramCategory: ParameterCategory.Simple, - paramType: transformExpectedType(paramType, liveTypeVarScopes, /* usageOffset */ undefined), - requiresTypeVarMatching: false, - argument: arg, - errorNode: arg.valueExpression || errorNode, - }, - srcTypeVarContext, - signatureTracker, - /* functionType */ undefined, - { conditionFilter } - ); + const signatureTracker = new UniqueSignatureTracker(); - if (!argResult.isCompatible) { - reportedArgError = true; - } - } - } else if (arg.argumentCategory === ArgumentCategory.UnpackedList) { - sawUnpackedListArgument = true; + argList.forEach((arg) => { + if (arg.argumentCategory === ArgumentCategory.Simple) { + let paramType: Type | undefined; - // See if there is an *args parameter. - const argsParam = paramSpecParams.find( - (param) => param.category === ParameterCategory.ArgsList && param.name - ); - if (argsParam && paramMap.has(argsParam.name!)) { - // TODO - validate args type - paramMap.delete(argsParam.name!); - } - } else { - sawUnpackedDictArgument = true; - assert(arg.argumentCategory === ArgumentCategory.UnpackedDictionary); + if (arg.name) { + const paramInfo = paramMap.get(arg.name.value); + if (paramInfo) { + paramType = paramInfo.type; + paramMap.delete(arg.name.value); + } else if (kwargsParam) { + paramType = kwargsParam.type; + } else { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.paramNameMissing().format({ name: arg.name.value }), + arg.name || errorNode + ); + reportedArgError = true; + } + } else { + if (positionalIndex < positionalIndexLimit) { + const paramInfo = paramSpecParams[positionalIndex]; + paramType = paramInfo.type; + if (paramInfo.name) { + paramMap.delete(paramInfo.name); + } + } else if (argsParam) { + paramType = argsParam.type; + } else { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + paramSpecParams.length === 1 + ? Localizer.Diagnostic.argPositionalExpectedOne() + : Localizer.Diagnostic.argPositionalExpectedCount().format({ + expected: paramSpecParams.length, + }), + arg.valueExpression ?? errorNode + ); + reportedArgError = true; + } - // See if there is an *kwargs parameter. - const kwargsParam = paramSpecParams.find((param) => param.category === ParameterCategory.KwargsDict); - if (kwargsParam && paramMap.has(kwargsParam.name!)) { - // TODO - validate kwargs type - paramMap.delete(kwargsParam.name!); - } - } - }); + positionalIndex++; + } + + if (paramType) { + const argResult = validateArgType( + { + paramCategory: ParameterCategory.Simple, + paramType: transformExpectedType( + paramType, + liveTypeVarScopes, + /* usageOffset */ undefined + ), + requiresTypeVarMatching: false, + argument: arg, + errorNode: arg.valueExpression || errorNode, + }, + srcTypeVarContext, + signatureTracker, + /* functionType */ undefined, + { conditionFilter } + ); + + if (!argResult.isCompatible) { + reportedArgError = true; + } + } + } else if (arg.argumentCategory === ArgumentCategory.UnpackedList) { + sawUnpackedListArgument = true; + + // See if there is an *args parameter. + const argsParam = paramSpecParams.find( + (param) => param.category === ParameterCategory.ArgsList && param.name + ); + if (argsParam && paramMap.has(argsParam.name!)) { + // TODO - validate args type + paramMap.delete(argsParam.name!); + } + } else { + sawUnpackedDictArgument = true; + assert(arg.argumentCategory === ArgumentCategory.UnpackedDictionary); + + // See if there is an *kwargs parameter. + const kwargsParam = paramSpecParams.find( + (param) => param.category === ParameterCategory.KwargsDict + ); + if (kwargsParam && paramMap.has(kwargsParam.name!)) { + // TODO - validate kwargs type + paramMap.delete(kwargsParam.name!); + } + } + }); + }); + } // Report any missing parameters. if (!reportedArgError) { @@ -11401,7 +11447,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions applySourceContextTypeVarsToSignature(typeVarContext, srcTypeVarContext); } - return !reportedArgError; + return { + argumentErrors: reportedArgError, + typeVarContexts: [reportedArgError ? srcTypeVarContext : undefined], + }; } function validateArgType( diff --git a/packages/pyright-internal/src/tests/samples/solverHigherOrder9.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder9.py new file mode 100644 index 000000000..f10da17e3 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/solverHigherOrder9.py @@ -0,0 +1,30 @@ +# This sample tests the case where a higher-order function accepts +# a callable parameterized by a ParamSpec and a generic function +# is passed to it. + +from typing import Callable, TypeVar, ParamSpec + + +P = ParamSpec("P") +S = TypeVar("S") +T = TypeVar("T") + + +def deco1(func: Callable[P, T], *args: P.args, **kwargs: P.kwargs) -> T: + ... + + +def func1(val1: T, val2: S, val3: S) -> T: + ... + + +reveal_type(deco1(func1, val1=1, val2=3, val3="s"), expected_text="int") +reveal_type(deco1(func1, 1, 3, "s"), expected_text="int") + + +def func2(val1: T, val2: S) -> T | list[S]: + ... + + +reveal_type(deco1(func2, val1=1, val2="s"), expected_text="int | list[str]") +reveal_type(deco1(func2, 1, "s"), expected_text="int | list[str]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 3a04da720..0f21f43c5 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -737,6 +737,12 @@ test('SolverHigherOrder8', () => { TestUtils.validateResults(analysisResults, 0); }); +test('SolverHigherOrder9', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverHigherOrder9.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('SolverLiteral1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverLiteral1.py']); From e8250ba18f4a3d61e7ca26c6d2ccd396615acf3c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 23 Jul 2023 16:49:25 -0700 Subject: [PATCH 440/525] Fixed a bug that resulted in the incorrect inferred variance for a type variable used within a frozen dataclass. This addresses #5568. --- .../src/analyzer/typeEvaluator.ts | 18 ++++++++++++------ .../src/tests/samples/autoVariance1.py | 18 ++++++++++++++++++ .../src/tests/typeEvaluator5.test.ts | 2 +- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index e3c54f26f..eeb6323c6 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21204,12 +21204,18 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } else { const primaryDecl = symbol.getDeclarations()[0]; - // Class and instance variables that are mutable need to - // enforce invariance. - const flags = - primaryDecl?.type === DeclarationType.Variable && !isFinalVariableDeclaration(primaryDecl) - ? AssignTypeFlags.EnforceInvariance - : AssignTypeFlags.Default; + + let flags = AssignTypeFlags.Default; + if ( + primaryDecl?.type === DeclarationType.Variable && + !isFinalVariableDeclaration(primaryDecl) && + !ClassType.isFrozenDataClass(destType) + ) { + // Class and instance variables that are mutable need to + // enforce invariance. + flags |= AssignTypeFlags.EnforceInvariance; + } + if ( !assignType( destMemberType, diff --git a/packages/pyright-internal/src/tests/samples/autoVariance1.py b/packages/pyright-internal/src/tests/samples/autoVariance1.py index 6b2cb023c..c41531264 100644 --- a/packages/pyright-internal/src/tests/samples/autoVariance1.py +++ b/packages/pyright-internal/src/tests/samples/autoVariance1.py @@ -1,6 +1,7 @@ # This sample tests variance inference for type variables that use # autovariance. +from dataclasses import dataclass from typing import Iterator, Sequence @@ -32,6 +33,14 @@ def method1(self) -> "ShouldBeCovariant2[T]": vco3_1: ShouldBeCovariant3[float] = ShouldBeCovariant3[int]() +@dataclass(frozen=True) +class ShouldBeCovariant4[T]: + x: T + +vo4_1: ShouldBeCovariant4[int] = ShouldBeCovariant4(1) +vo4_2: ShouldBeCovariant4[float] = vo4_1 + + class ShouldBeInvariant1[T]: def __init__(self, value: T) -> None: self._value = value @@ -83,6 +92,15 @@ class ShouldBeInvariant3[K, V](dict[K, V]): # This should generate an error based on variance vinv3_4: ShouldBeInvariant3[str, int] = ShouldBeInvariant3[str, float]() +@dataclass +class ShouldBeInvariant4[T]: + x: T + +vinv4_1: ShouldBeInvariant4[int] = ShouldBeInvariant4(1) + +# This should generate an error based on variance +vinv4_2: ShouldBeInvariant4[float] = vinv4_1 + class ShouldBeContravariant1[T]: def __init__(self, value: T) -> None: diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index b7682e275..033b4c9cb 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -77,7 +77,7 @@ test('AutoVariance1', () => { configOptions.defaultPythonVersion = PythonVersion.V3_12; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['autoVariance1.py'], configOptions); - TestUtils.validateResults(analysisResults, 11); + TestUtils.validateResults(analysisResults, 12); }); test('AutoVariance2', () => { From 12e9c311879b1f6aed759fcfe79307ac194c7eaa Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Jul 2023 11:03:46 -0700 Subject: [PATCH 441/525] Fixed a theoretical bug in the code that detects unique type signatures. It wasn't correctly handling constructor methods. --- packages/pyright-internal/src/analyzer/typeUtils.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 1fe44a04b..addba6a5c 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -240,9 +240,9 @@ export class UniqueSignatureTracker { }); } - addSignature(signature: FunctionType, offset: number) { + addSignature(signature: FunctionType | OverloadedFunctionType, offset: number) { // If this function is part of a broader overload, use the overload instead. - const effectiveSignature = signature.overloaded ?? signature; + const effectiveSignature = isFunction(signature) ? signature.overloaded ?? signature : signature; const existingSignature = this.findSignature(effectiveSignature); if (existingSignature) { @@ -3627,8 +3627,6 @@ class UniqueFunctionSignatureTransformer extends TypeVarTransformer { let updatedSourceType: Type = sourceType; const existingSignature = this._signatureTracker.findSignature(sourceType); if (existingSignature) { - const typeVarContext = new TypeVarContext(getTypeVarScopeId(sourceType)); - let offsetIndex = existingSignature.expressionOffsets.findIndex( (offset) => offset === this._expressionOffset ); @@ -3637,6 +3635,8 @@ class UniqueFunctionSignatureTransformer extends TypeVarTransformer { } if (offsetIndex > 0) { + const typeVarContext = new TypeVarContext(getTypeVarScopeIds(sourceType)); + // Create new type variables with the same scope but with // different (unique) names. sourceType.details.typeParameters.forEach((typeParam) => { From 1da8c18fcf7169dfd385948bfa9dce914210a3b9 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Jul 2023 11:35:19 -0700 Subject: [PATCH 442/525] Added support for type narrowing of a class pattern when the specified class is `type()` or a subtype thereof and the subject contains a `type[X]` whose metaclass potentially matches the pattern. This addresses https://github.com/microsoft/pyright/issues/5573. (#5576) Co-authored-by: Eric Traut --- .../src/analyzer/patternMatching.ts | 31 ++++++++++++ .../src/tests/samples/matchClass4.py | 47 +++++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 8 ++++ 3 files changed, 86 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/matchClass4.py diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index f1a93319a..a683fe45b 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -67,6 +67,7 @@ import { getTypeCondition, getTypeVarScopeId, isLiteralType, + isMetaclassInstance, isPartlyUnknown, isTupleClass, isUnboundedTupleClass, @@ -672,10 +673,23 @@ function narrowTypeBasedOnClassPattern( } const classInstance = convertToInstance(classType); + const isPatternMetaclass = isMetaclassInstance(classInstance); + return evaluator.mapSubtypesExpandTypeVars( type, /* conditionFilter */ undefined, (subjectSubtypeExpanded, subjectSubtypeUnexpanded) => { + // Handle the case where the class pattern references type() or a subtype thereof + // and the subject type is an instantiable class itself. + if (isPatternMetaclass && isInstantiableClass(subjectSubtypeExpanded)) { + const metaclass = subjectSubtypeExpanded.details.effectiveMetaclass ?? UnknownType.create(); + if (isInstantiableClass(classType) && evaluator.assignType(classType, metaclass)) { + return undefined; + } + + return subjectSubtypeExpanded; + } + if (!isNoneInstance(subjectSubtypeExpanded) && !isClassInstance(subjectSubtypeExpanded)) { return subjectSubtypeUnexpanded; } @@ -764,6 +778,9 @@ function narrowTypeBasedOnClassPattern( } if (isInstantiableClass(expandedSubtype)) { + const expandedSubtypeInstance = convertToInstance(expandedSubtype); + const isPatternMetaclass = isMetaclassInstance(expandedSubtypeInstance); + return evaluator.mapSubtypesExpandTypeVars( type, /* conditionFilter */ undefined, @@ -772,6 +789,20 @@ function narrowTypeBasedOnClassPattern( return convertToInstance(unexpandedSubtype); } + // Handle the case where the class pattern references type() or a subtype thereof + // and the subject type is a class itself. + if (isPatternMetaclass && isInstantiableClass(subjectSubtypeExpanded)) { + const metaclass = subjectSubtypeExpanded.details.effectiveMetaclass ?? UnknownType.create(); + if ( + evaluator.assignType(expandedSubtype, metaclass) || + evaluator.assignType(metaclass, expandedSubtype) + ) { + return subjectSubtypeExpanded; + } + + return undefined; + } + if ( isNoneInstance(subjectSubtypeExpanded) && isInstantiableClass(expandedSubtype) && diff --git a/packages/pyright-internal/src/tests/samples/matchClass4.py b/packages/pyright-internal/src/tests/samples/matchClass4.py new file mode 100644 index 000000000..423a29f33 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/matchClass4.py @@ -0,0 +1,47 @@ +# This sample tests the case where a subject is narrowed against a +# class pattern that includes a type() or subclass thereof and +# the subject contains a type[T]. + + +class MyMeta(type): + pass + + +class A: + pass + + +class B(A, metaclass=MyMeta): + pass + + +def func1(subj: type[A]): + match subj: + case type(): + reveal_type(subj, expected_text="type[A]") + case _: + reveal_type(subj, expected_text="Never") + + +def func2(subj: type[A]): + match subj: + case MyMeta(): + reveal_type(subj, expected_text="type[A]") + case _: + reveal_type(subj, expected_text="type[A]") + + +def func3(subj: type[B]): + match subj: + case MyMeta(): + reveal_type(subj, expected_text="type[B]") + case _: + reveal_type(subj, expected_text="Never") + + +def func4(subj: type[B] | type[int]): + match subj: + case MyMeta(): + reveal_type(subj, expected_text="type[B] | type[int]") + case _: + reveal_type(subj, expected_text="type[int]") diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index e751eedae..d78c3575e 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1222,6 +1222,14 @@ test('MatchClass3', () => { TestUtils.validateResults(analysisResults, 0); }); +test('MatchClass4', () => { + const configOptions = new ConfigOptions('.'); + + configOptions.defaultPythonVersion = PythonVersion.V3_10; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['matchClass4.py'], configOptions); + TestUtils.validateResults(analysisResults, 0); +}); + test('MatchValue1', () => { const configOptions = new ConfigOptions('.'); From 98a679202e6e3e5cb4c99a17f7859317318a1fd2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 25 Jul 2023 20:01:48 -0700 Subject: [PATCH 443/525] Published 1.1.319 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 41b53c494..d30a32749 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.318", + "version": "1.1.319", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 673c880c5..a36aaac3d 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.318", + "version": "1.1.319", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.318", + "version": "1.1.319", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index dac30e140..5efa16abf 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.318", + "version": "1.1.319", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 7d526217d..017808e63 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.318", + "version": "1.1.319", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.318", + "version": "1.1.319", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 15d04b49d..cf61ee51a 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.318", + "version": "1.1.319", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index d2d7837a9..3ee7ddc5e 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.318", + "version": "1.1.319", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.318", + "version": "1.1.319", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index b5452e6b1..85db959d1 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.318", + "version": "1.1.319", "private": true, "license": "MIT", "author": { From 932e542d9f88b20daccd6202727b883900d66413 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:30:40 -0700 Subject: [PATCH 444/525] pull-pylance-with-pyright-1.1.319 (#5584) --- .github/workflows/validation.yml | 6 +- build/checkLockIndent.js | 45 - package-lock.json | 19316 +++++----------- package.json | 17 +- packages/pyright-internal/jest.config.js | 24 +- packages/pyright-internal/package-lock.json | 19 - .../src/analyzer/backgroundAnalysisProgram.ts | 4 +- .../pyright-internal/src/analyzer/program.ts | 140 +- .../src/analyzer/sourceFile.ts | 20 +- .../src/backgroundAnalysisBase.ts | 18 +- .../src/languageService/completionProvider.ts | 4 +- .../src/localization/package.nls.cs.json | 10 +- .../src/localization/package.nls.de.json | 10 +- .../src/localization/package.nls.es.json | 10 +- .../src/localization/package.nls.fr.json | 10 +- .../src/localization/package.nls.it.json | 10 +- .../src/localization/package.nls.ja.json | 10 +- .../src/localization/package.nls.ko.json | 10 +- .../src/localization/package.nls.pl.json | 10 +- .../src/localization/package.nls.pt-br.json | 10 +- .../localization/package.nls.qps-ploc.json | 10 +- .../src/localization/package.nls.ru.json | 10 +- .../src/localization/package.nls.tr.json | 10 +- .../src/localization/package.nls.zh-cn.json | 10 +- .../src/localization/package.nls.zh-tw.json | 10 +- packages/pyright/package-lock.json | 503 - packages/pyright/package.json | 1 - packages/vscode-pyright/package-lock.json | 503 - packages/vscode-pyright/package.json | 1 - 29 files changed, 6300 insertions(+), 14461 deletions(-) delete mode 100644 build/checkLockIndent.js diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 17d073c69..68ecc401d 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -35,7 +35,7 @@ jobs: restore-keys: | ${{ runner.os }}-node- - - run: npm install + - run: npm run install:all - run: npx lerna exec --stream --no-bail -- tsc --noEmit @@ -101,7 +101,7 @@ jobs: restore-keys: | ${{ runner.os }}-node- - - run: npm install + - run: npm run install:all - name: npm test (pyright-internal) run: npm test @@ -130,7 +130,7 @@ jobs: restore-keys: | ${{ runner.os }}-node- - - run: npm install + - run: npm run install:all - run: npm publish --dry-run working-directory: packages/pyright diff --git a/build/checkLockIndent.js b/build/checkLockIndent.js deleted file mode 100644 index 74175bf12..000000000 --- a/build/checkLockIndent.js +++ /dev/null @@ -1,45 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -//@ts-check - -// Lerna doesn't do a good job preserving the indentation in lock files. -// Check that the lock files are still indented correctly, otherwise -// the change will cause problems with merging and the updateDeps script. - -const detectIndent = require('detect-indent'); -const { promises: fsAsync } = require('fs'); -const util = require('util'); -const glob = util.promisify(require('glob')); - -async function findPackageLocks() { - const lernaFile = await fsAsync.readFile('lerna.json', 'utf-8'); - - /** @type {{ packages: string[] }} */ - const lernaConfig = JSON.parse(lernaFile); - - const matches = await Promise.all(lernaConfig.packages.map((pattern) => glob(pattern + '/package-lock.json'))); - return ['package-lock.json'].concat(...matches); -} - -async function main() { - const locks = await findPackageLocks(); - - let ok = true; - - for (const filepath of locks) { - const input = await fsAsync.readFile(filepath, 'utf-8'); - const indent = detectIndent(input); - - if (indent.indent !== ' ') { - ok = false; - console.error(`${filepath} has invalid indent "${indent.indent}"`); - } - } - - if (!ok) { - console.error('Lerna may have modified package-lock.json during bootstrap.'); - console.error('You may need to revert any package-lock changes and rerun install:all.'); - process.exit(1); - } -} - -main(); diff --git a/package-lock.json b/package-lock.json index 020bf84d0..401440ff1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,17 +12,19 @@ "@types/yargs": "^16.0.5", "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^6.1.0", + "cross-env": "^7.0.3", "detect-indent": "^6.1.0", "eslint": "^8.45.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-simple-import-sort": "^10.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", - "lerna": "^6.6.2", + "lerna": "^7.1.4", "npm-check-updates": "^16.10.16", + "nx": "^16.5.3", "p-queue": "^7.3.4", "prettier": "2.8.8", - "syncpack": "^10.7.3", + "syncpack": "~10.6.1", "typescript": "~4.4.4", "word-wrap": "1.2.4", "yargs": "^16.2.0" @@ -30,18 +32,16 @@ }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/@babel/code-frame": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.18.6" }, @@ -51,18 +51,16 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -74,9 +72,8 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -86,9 +83,8 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -100,42 +96,37 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -145,49 +136,45 @@ }, "node_modules/@colors/colors": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@effect/data": { - "version": "0.12.9", - "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.9.tgz", - "integrity": "sha512-nuzFo+2LK4yG9H16WRv51MDhUAIuUGhmKYkuSrgCApwwLy2eUATaioQEbbR2rHOTprOiYpbIYKwvPsylEm/Fdw==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.5.tgz", + "integrity": "sha512-gmHSsG4earpIWufwCNT1R1pZ5BIe7z0bMmexnAFOT9csc8bwTSzk1e5QAd/65/vyczf/cMMrXgjpasdxlJ5POA==", "dev": true }, "node_modules/@effect/io": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.27.0.tgz", - "integrity": "sha512-3ZUaf6B+aH83HPJ84KTthd4glgrRk6DXj9M915OB9G4cMbbJAwE/709tgamzD2IxcfSlqPowtvx73Cs4N7Ywrw==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.26.0.tgz", + "integrity": "sha512-umwZ/sRoV7zb/8WwoiK7xWoypqvY6C1EXWEGORpViAFUTx3/bXc9i7JtdttTWVokXb3qogrxGX2SHopB20I4vQ==", "dev": true, "dependencies": { - "@effect/data": "~0.12.6" + "@effect/data": "~0.12.2" } }, "node_modules/@effect/match": { - "version": "0.24.5", - "resolved": "https://registry.npmjs.org/@effect/match/-/match-0.24.5.tgz", - "integrity": "sha512-mMoQLGt8s0AmXQR1yUTdBCbdzNIn8d5Ujf1o0T4mldiap4/eq3pf8cvyQm8dHK1Y8KyT4dA2ukJq56rSMIBZXA==", + "version": "0.24.4", + "resolved": "https://registry.npmjs.org/@effect/match/-/match-0.24.4.tgz", + "integrity": "sha512-oo0uzazHhlDm4shxiMQep5osHsEZmBX6uhB9GM2RXseDahwsKrOp5Q3cMr/J4ZfhruH/0/o7GEhLLHxpwhEtuA==", "dev": true, "dependencies": { - "@effect/data": "^0.12.9", - "@effect/schema": "^0.20.2" + "@effect/data": "^0.12.6", + "@effect/schema": "^0.20.1" } }, - "node_modules/@effect/match/node_modules/@effect/io": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.26.2.tgz", - "integrity": "sha512-PdqtgmfEw88kX1UKZZvK42dpMZPSCPmdWAAzN17yCzfEsA3HoPjjxo9jLyzfjtUcU+tWO0tF/GY7pcDVLcJZAg==", - "dev": true, - "dependencies": { - "@effect/data": "~0.12.6" - } + "node_modules/@effect/match/node_modules/@effect/data": { + "version": "0.12.10", + "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.10.tgz", + "integrity": "sha512-zIz/DgumH2LgGdr1Wc9ChET5JSG0k/G5kDc8rn4a6yIJ0v2d5rfnbRWIJO2fWmdFvc+128JyaBvYguIyz9JaAQ==", + "dev": true }, - "node_modules/@effect/match/node_modules/@effect/schema": { + "node_modules/@effect/schema": { "version": "0.20.3", "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.20.3.tgz", "integrity": "sha512-pjJW9QkHZd2/fq7Bhd6pAOidMJ0OUODOeUlesPDK0jpo62AaU9g+IGXt3v5NU8rXSX77igZgfK08XhmofwHn0A==", @@ -198,22 +185,16 @@ "fast-check": "^3.10.0" } }, - "node_modules/@effect/schema": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.21.0.tgz", - "integrity": "sha512-IFB6hnwuTzHKaMGrAuzp0LBIIkPtW8gaXXQAik/h7ZnPpE8sOkSWKyDHuD4lpOqgsFp1G55NobVKpJUPcL8Onw==", - "dev": true, - "dependencies": { - "@effect/data": "^0.12.9", - "@effect/io": "^0.27.0", - "fast-check": "^3.10.0" - } + "node_modules/@effect/schema/node_modules/@effect/data": { + "version": "0.12.10", + "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.10.tgz", + "integrity": "sha512-zIz/DgumH2LgGdr1Wc9ChET5JSG0k/G5kDc8rn4a6yIJ0v2d5rfnbRWIJO2fWmdFvc+128JyaBvYguIyz9JaAQ==", + "dev": true }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -226,18 +207,16 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -258,24 +237,21 @@ }, "node_modules/@eslint/js": { "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@gar/promisify": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -287,9 +263,8 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -300,24 +275,21 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=6.9.0" } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -332,9 +304,8 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -344,9 +315,8 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -356,15 +326,13 @@ }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -379,9 +347,8 @@ }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -394,9 +361,8 @@ }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -409,29 +375,21 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", - "dev": true - }, "node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "version": "29.6.0", "dev": true, + "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@lerna/child-process": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.2.tgz", - "integrity": "sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag==", + "version": "7.1.4", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "execa": "^5.0.0", @@ -442,2550 +400,2094 @@ } }, "node_modules/@lerna/create": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.2.tgz", - "integrity": "sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ==", + "version": "7.1.4", "dev": true, + "license": "MIT", "dependencies": { - "@lerna/child-process": "6.6.2", - "dedent": "^0.7.0", - "fs-extra": "^9.1.0", - "init-package-json": "^3.0.2", + "@lerna/child-process": "7.1.4", + "dedent": "0.7.0", + "fs-extra": "^11.1.1", + "init-package-json": "5.0.0", "npm-package-arg": "8.1.1", "p-reduce": "^2.1.0", - "pacote": "15.1.1", - "pify": "^5.0.0", + "pacote": "^15.2.0", + "pify": "5.0.0", "semver": "^7.3.4", "slash": "^3.0.0", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0", + "validate-npm-package-name": "5.0.0", "yargs-parser": "20.2.4" }, "engines": { "node": "^14.17.0 || >=16.0.0" } }, - "node_modules/@lerna/legacy-package-management": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.2.tgz", - "integrity": "sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/arborist": "6.2.3", - "@npmcli/run-script": "4.1.7", - "@nrwl/devkit": ">=15.5.2 < 16", - "@octokit/rest": "19.0.3", - "byte-size": "7.0.0", - "chalk": "4.1.0", - "clone-deep": "4.0.1", - "cmd-shim": "5.0.0", - "columnify": "1.6.0", - "config-chain": "1.1.12", - "conventional-changelog-core": "4.2.4", - "conventional-recommended-bump": "6.1.0", - "cosmiconfig": "7.0.0", - "dedent": "0.7.0", - "dot-prop": "6.0.1", - "execa": "5.0.0", - "file-url": "3.0.0", - "find-up": "5.0.0", - "fs-extra": "9.1.0", - "get-port": "5.1.1", - "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", - "globby": "11.1.0", - "graceful-fs": "4.2.10", - "has-unicode": "2.0.1", - "inquirer": "8.2.4", - "is-ci": "2.0.0", - "is-stream": "2.0.0", - "libnpmpublish": "7.1.4", - "load-json-file": "6.2.0", - "make-dir": "3.1.0", - "minimatch": "3.0.5", - "multimatch": "5.0.0", - "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "14.0.3", - "npmlog": "6.0.2", - "p-map": "4.0.0", - "p-map-series": "2.1.0", - "p-queue": "6.6.2", - "p-waterfall": "2.1.1", - "pacote": "15.1.1", - "pify": "5.0.0", - "pretty-format": "29.4.3", - "read-cmd-shim": "3.0.0", - "read-package-json": "5.0.1", - "resolve-from": "5.0.0", - "semver": "7.3.8", - "signal-exit": "3.0.7", - "slash": "3.0.0", - "ssri": "9.0.1", - "strong-log-transformer": "2.1.0", - "tar": "6.1.11", - "temp-dir": "1.0.0", - "tempy": "1.0.0", - "upath": "2.0.1", - "uuid": "8.3.2", - "write-file-atomic": "4.0.1", - "write-pkg": "4.0.0", - "yargs": "16.2.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^14.17.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/@lerna/legacy-package-management/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/@lerna/legacy-package-management/node_modules/cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/@lerna/legacy-package-management/node_modules/cacache/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/@npmcli/fs": { + "version": "2.1.2", "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/cacache/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "node_modules/@npmcli/git": { + "version": "4.0.4", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", "dev": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "node-which": "bin/which.js" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", "dev": true, + "license": "ISC", "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "node_modules/@npmcli/move-file": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^5.0.0" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/fs-minipass/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", "dev": true, - "engines": { - "node": ">=10" + "license": "ISC", + "dependencies": { + "which": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", "dev": true, + "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "isexe": "^2.0.0" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "node-which": "bin/which.js" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@npmcli/run-script": { + "version": "6.0.2", "dev": true, + "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.1", "dev": true, + "license": "ISC", "dependencies": { - "balanced-match": "^1.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@nrwl/devkit": { + "version": "16.5.3", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@nx/devkit": "16.5.3" } }, - "node_modules/@lerna/legacy-package-management/node_modules/glob/node_modules/minipass": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", - "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", + "node_modules/@nrwl/tao": { + "version": "16.5.3", "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" + "license": "MIT", + "dependencies": { + "nx": "16.5.3" + }, + "bin": { + "tao": "index.js" } }, - "node_modules/@lerna/legacy-package-management/node_modules/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "node_modules/@nx/devkit": { + "version": "16.5.3", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "@nrwl/devkit": "16.5.3", + "ejs": "^3.1.7", + "ignore": "^5.0.4", + "semver": "7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0" }, - "engines": { - "node": ">=12.0.0" + "peerDependencies": { + "nx": ">= 15 <= 17" } }, - "node_modules/@lerna/legacy-package-management/node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@nx/devkit/node_modules/tmp": { + "version": "0.2.1", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "rimraf": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8.17.0" } }, - "node_modules/@lerna/legacy-package-management/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.5.3.tgz", + "integrity": "sha512-HS3R/vRVFwOjZ0l1y3h1UMSd7Zfh4NQ2qDe1FSOfA38AXNftyWNCnZ1kkOikVjJKCpwKXls56XcPDu+2hbqSDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/make-fetch-happen/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/@nx/nx-darwin-x64": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.5.3.tgz", + "integrity": "sha512-3QEZkliJy+rk5UrcBsMnExBIAXmjqd4dHBDGH1eo0w85/3Bih3Z9QxU/n+3tEewvUCCx4o4kg+bya/hVz23V6g==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/make-fetch-happen/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "node_modules/@nx/nx-freebsd-x64": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.5.3.tgz", + "integrity": "sha512-FyJ2xUBPifO0y9LoVuS0CjwN+GGsYSy+O1y541eh8j4Y86/xcPx0j+fhHhh3MDnKA9ftjbq+vrqgs84NHmIAAw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "minipass": "^5.0.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.5.3.tgz", + "integrity": "sha512-Zn343k/satXGWEJjh56+Y/Uxtsl1aCyUtq0OPxznwx/ZGG+Sw2wN/ZEnePEh0OB1/yZ2uWAFRHVSA2fYPrmdhQ==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.5.3.tgz", + "integrity": "sha512-ACUhKWHe7C7IopyIwXAoHx/phaZudBOu+pZwzVDaRy2xn78tdzJQrOySsQ7YmBGoGSXEAd5+3pVVXnXcRNJ2aA==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.5.3.tgz", + "integrity": "sha512-eNrVa1Oaf42kEiCoJu01NlmGs6hQMzDhHiQ/DBKxMePW1bh4O5FEQUtYp1K/AKPcHH5270VNz0eAl164+fMqpQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/minipass-fetch/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.3.tgz", + "integrity": "sha512-ZAW+Oar+WEwbmu8KFw80qDpT9y3qmWZdVD5wNRX5CMByuVJ3ly7MJbtD/rEDtvAUOgSMJikuGsK0jQ6acm+X/A==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/npm-registry-fetch": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", - "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", + "node_modules/@nx/nx-linux-x64-musl": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.3.tgz", + "integrity": "sha512-jM2igA26dd0YVj9w/Pv2x3ZUUziVP4H3rFzYDAd80sQqLYWqELr6Fljyvj/2C+o+mOfVcw85+yfessjlPz8K8Q==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/npm-registry-fetch/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.3.tgz", + "integrity": "sha512-gEP6ekFXLfvRWezSvQoHxV+vhKavuA/Lhz/AifYAIgdJEmKUPqVdnUtdkYwU0Ygn/a11KqbFh8J4TikXIkVxYw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "16.5.3", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10" } }, - "node_modules/@lerna/legacy-package-management/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "node_modules/@octokit/auth-token": { + "version": "3.0.4", "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/@lerna/legacy-package-management/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "node_modules/@octokit/core": { + "version": "4.2.4", "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/@lerna/legacy-package-management/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/@octokit/endpoint": { + "version": "7.0.6", "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/@lerna/legacy-package-management/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "node_modules/@octokit/graphql": { + "version": "5.0.6", "dev": true, + "license": "MIT", "dependencies": { - "unique-slug": "^4.0.0" + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/@lerna/legacy-package-management/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/@octokit/openapi-types": { + "version": "18.0.0", "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "6.1.2", + "dev": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4" + "@octokit/tsconfig": "^1.0.2", + "@octokit/types": "^9.2.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" } }, - "node_modules/@lerna/legacy-package-management/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", "dev": true, + "license": "MIT", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "7.2.3", + "dev": true, + "license": "MIT", "dependencies": { - "builtins": "^5.0.0" + "@octokit/types": "^10.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "10.0.0", "dev": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" + "@octokit/openapi-types": "^18.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@octokit/request": { + "version": "6.2.8", "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, "engines": { - "node": ">= 8" + "node": ">= 14" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@octokit/request-error": { + "version": "3.0.3", "dev": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@octokit/types": "^9.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" }, "engines": { - "node": ">= 8" + "node": ">= 14" } }, - "node_modules/@npmcli/arborist": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-6.2.3.tgz", - "integrity": "sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA==", + "node_modules/@octokit/rest": { + "version": "19.0.11", "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.0", - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^5.0.0", - "@npmcli/name-from-folder": "^2.0.0", - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^3.0.0", - "@npmcli/query": "^3.0.0", - "@npmcli/run-script": "^6.0.0", - "bin-links": "^4.0.1", - "cacache": "^17.0.4", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^6.1.1", - "json-parse-even-better-errors": "^3.0.0", - "json-stringify-nice": "^1.1.4", - "minimatch": "^6.1.6", - "nopt": "^7.0.0", - "npm-install-checks": "^6.0.0", - "npm-package-arg": "^10.1.0", - "npm-pick-manifest": "^8.0.1", - "npm-registry-fetch": "^14.0.3", - "npmlog": "^7.0.1", - "pacote": "^15.0.8", - "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^10.0.1", - "treeverse": "^3.0.0", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" + "@octokit/core": "^4.2.1", + "@octokit/plugin-paginate-rest": "^6.1.2", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^7.1.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/@npmcli/arborist/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "node_modules/@octokit/tsconfig": { + "version": "1.0.2", "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@npmcli/arborist/node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "node_modules/@octokit/types": { + "version": "9.3.2", "dev": true, + "license": "MIT", "dependencies": { - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "@octokit/openapi-types": "^18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "node_modules/@parcel/watcher": { + "version": "2.0.4", "dev": true, + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/are-we-there-yet": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz", - "integrity": "sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" + "node": ">= 10.0.0" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@npmcli/arborist/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" } }, - "node_modules/@npmcli/arborist/node_modules/cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "graceful-fs": "4.2.10" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12.22.0" } }, - "node_modules/@npmcli/arborist/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "node_modules/@pnpm/npm-conf": { + "version": "1.0.5", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^5.0.0" + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@npmcli/arborist/node_modules/gauge": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", - "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", + "node_modules/@sigstore/protobuf-specs": { + "version": "0.1.0", "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, + "license": "Apache-2.0", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "5.3.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@npmcli/arborist/node_modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=14.16" } }, - "node_modules/@npmcli/arborist/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "node_modules/@tootallnate/once": { + "version": "2.0.0", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@npmcli/arborist/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "node_modules/@tufjs/models": { + "version": "1.0.3", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^7.4.6" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "7.4.6", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" }, - "optionalDependencies": { - "encoding": "^0.1.13" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "node_modules/@types/glob": { + "version": "7.2.0", "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/@npmcli/arborist/node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", "dev": true, - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@npmcli/arborist/node_modules/npmlog": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", - "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", + "node_modules/@types/json-schema": { + "version": "7.0.12", "dev": true, - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@npmcli/arborist/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "node_modules/@types/minimatch": { + "version": "5.1.2", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@npmcli/arborist/node_modules/readable-stream": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.0.tgz", - "integrity": "sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==", + "node_modules/@types/minimist": { + "version": "1.2.2", "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } + "license": "MIT" }, - "node_modules/@npmcli/arborist/node_modules/signal-exit": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", - "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", + "node_modules/@types/node": { + "version": "17.0.45", "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT" }, - "node_modules/@npmcli/arborist/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", "dev": true, - "dependencies": { - "minipass": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@npmcli/arborist/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "node_modules/@types/semver": { + "version": "7.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "16.0.5", "dev": true, + "license": "MIT", "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "@types/yargs-parser": "*" } }, - "node_modules/@npmcli/arborist/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/@types/yargs-parser": { + "version": "21.0.0", "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/type-utils": "6.1.0", + "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@npmcli/arborist/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", "dev": true, + "license": "ISC", "dependencies": { - "builtins": "^5.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@npmcli/arborist/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", "dev": true, + "license": "ISC", "dependencies": { - "isexe": "^2.0.0" + "lru-cache": "^6.0.0" }, "bin": { - "node-which": "bin/which.js" + "semver": "bin/semver.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "node_modules/@typescript-eslint/parser": { + "version": "6.1.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", + "debug": "^4.3.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@npmcli/git": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", - "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@npmcli/git/node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "node_modules/@typescript-eslint/type-utils": { + "version": "6.1.0", "dev": true, + "license": "MIT", "dependencies": { - "which": "^3.0.0" + "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/utils": "6.1.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "node_modules/@typescript-eslint/types": { + "version": "6.1.0", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.1.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "isexe": "^2.0.0" + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/visitor-keys": "6.1.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, - "bin": { - "node-which": "bin/which.js" + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", "dev": true, + "license": "ISC", "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "lru-cache": "^6.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "semver": "bin/semver.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", - "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", + "node_modules/@typescript-eslint/utils": { + "version": "6.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/typescript-estree": "6.1.0", + "semver": "^7.5.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", "dev": true, + "license": "ISC", "dependencies": { - "balanced-match": "^1.0.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", "dev": true, + "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "lru-cache": "^6.0.0" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "semver": "bin/semver.js" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.1.0", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@typescript-eslint/types": "6.1.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@npmcli/map-workspaces/node_modules/minipass": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", - "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } + "license": "BSD-2-Clause" }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz", - "integrity": "sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==", + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.46", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "cacache": "^17.0.0", - "json-parse-even-better-errors": "^3.0.0", - "pacote": "^15.0.0", - "semver": "^7.3.5" + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.15.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.1", "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "node_modules/@zkochan/js-yaml": { + "version": "0.0.6", "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "node_modules/abbrev": { + "version": "1.1.1", "dev": true, - "dependencies": { - "minipass": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "ISC" }, - "node_modules/@npmcli/metavuln-calculator/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "node_modules/acorn": { + "version": "8.10.0", "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, + "license": "MIT", "bin": { - "glob": "dist/cjs/src/bin.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.4.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "node_modules/acorn-jsx": { + "version": "5.3.2", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/add-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "6.0.2", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "debug": "4" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 6.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/agentkeepalive": { + "version": "4.2.1", "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, "engines": { - "node": ">=8" + "node": ">= 8.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "node_modules/aggregate-error": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^5.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "node_modules/ajv": { + "version": "6.12.6", "dev": true, + "license": "MIT", "dependencies": { - "unique-slug": "^4.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/ansi-align": { + "version": "3.0.1", "dev": true, + "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4" - }, + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "node_modules/ansi-escapes": { + "version": "4.3.2", "dev": true, + "license": "MIT", "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "type-fest": "^0.21.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", - "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "node_modules/ansi-regex": { + "version": "5.0.1", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@npmcli/package-json": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-3.0.0.tgz", - "integrity": "sha512-NnuPuM97xfiCpbTEJYtEuKz6CFbpUHtaT0+5via5pQeI25omvQDFbp1GcGJ/c4zvL/WX0qbde6YiLgfZbWFgvg==", + "node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "license": "MIT", "dependencies": { - "json-parse-even-better-errors": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "node_modules/aproba": { + "version": "2.0.0", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "ISC" }, - "node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "node_modules/are-we-there-yet": { + "version": "3.0.1", "dev": true, + "license": "ISC", "dependencies": { - "infer-owner": "^1.0.4" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/query": { + "node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-differ": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.0.tgz", - "integrity": "sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA==", "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@npmcli/run-script": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", - "integrity": "sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==", + "node_modules/array-ify": { + "version": "1.0.0", "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "license": "MIT" }, - "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "node_modules/array-union": { + "version": "2.1.0", "dev": true, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@npmcli/run-script/node_modules/npm-normalize-package-bin": { + "node_modules/arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "node_modules/@npmcli/run-script/node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/@nrwl/cli": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.4.tgz", - "integrity": "sha512-FoiGFCLpb/r4HXCM3KYqT0xteP+MRV6bIHjz3bdPHIDLmBNQQnRRaV2K47jtJ6zjh1eOU5UHKyDtDDYf80Idpw==", + "node_modules/async": { + "version": "3.2.4", "dev": true, - "dependencies": { - "nx": "15.9.4" - } + "license": "MIT" }, - "node_modules/@nrwl/devkit": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.4.tgz", - "integrity": "sha512-mUX1kXTuPMdTzFxIzH+MsSNvdppOmstPDOEtiGFZJTuJ625ki0HhNJILO3N2mJ7MeMrLqIlAiNdvelQaObxYsQ==", + "node_modules/asynckit": { + "version": "0.4.0", "dev": true, - "dependencies": { - "ejs": "^3.1.7", - "ignore": "^5.0.4", - "semver": "7.3.4", - "tmp": "~0.2.1", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "nx": ">= 14.1 <= 16" - } + "license": "MIT" }, - "node_modules/@nrwl/devkit/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/axios": { + "version": "1.4.0", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/@nrwl/devkit/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nrwl/devkit/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/balanced-match": { + "version": "1.0.2", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } + "license": "MIT" }, - "node_modules/@nrwl/nx-darwin-arm64": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.4.tgz", - "integrity": "sha512-XnvrnT9BJsgThY/4xUcYtE077ERq/img8CkRj7MOOBNOh0/nVcR4LGbBKDHtwE3HPk0ikyS/SxRyNa9msvi3QQ==", - "cpu": [ - "arm64" - ], + "node_modules/base64-js": { + "version": "1.5.1", "dev": true, - "optional": true, - "os": [ - "darwin" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], - "engines": { - "node": ">= 10" - } + "license": "MIT" }, - "node_modules/@nrwl/nx-darwin-x64": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.4.tgz", - "integrity": "sha512-WKSfSlpVMLchpXkax0geeUNyhvNxwO7qUz/s0/HJWBekt8fizwKDwDj1gP7fOu+YWb/tHiSscbR1km8PtdjhQw==", - "cpu": [ - "x64" - ], + "node_modules/before-after-hook": { + "version": "2.2.3", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } + "license": "Apache-2.0" }, - "node_modules/@nrwl/nx-linux-arm-gnueabihf": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.4.tgz", - "integrity": "sha512-a/b4PP7lP/Cgrh0LjC4O2YTt5pyf4DQTGtuE8qlo8o486UiofCtk4QGJX72q80s23L0ejCaKY2ULKx/3zMLjuA==", - "cpu": [ - "arm" - ], + "node_modules/bl": { + "version": "4.1.0", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/@nrwl/nx-linux-arm64-gnu": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.4.tgz", - "integrity": "sha512-ibBV8fMhSfLVd/2WzcDuUm32BoZsattuKkvMmOoyU6Pzoznc3AqyDjJR4xCIoAn5Rf+Nu1oeQONr5FAtb1Ugow==", - "cpu": [ - "arm64" - ], + "node_modules/boxen": { + "version": "7.0.0", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.0", + "chalk": "^5.0.1", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, "engines": { - "node": ">= 10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nrwl/nx-linux-arm64-musl": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.4.tgz", - "integrity": "sha512-iIjvVYd7+uM4jVD461+PvU5XTALgSvJOODUaMRGOoDl0KlMuTe6pQZlw0eXjl5rcTd6paKaVFWT5j6awr8kj7w==", - "cpu": [ - "arm64" - ], + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@nrwl/nx-linux-x64-gnu": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.4.tgz", - "integrity": "sha512-q4OyH72mdrE4KellBWtwpr5EwfxHKNoFP9//7FAILO68ROh0rpMd7YQMlTB7T04UEUHjKEEsFGTlVXIee3Viwg==", - "cpu": [ - "x64" - ], + "node_modules/boxen/node_modules/ansi-styles": { + "version": "6.2.1", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nrwl/nx-linux-x64-musl": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.4.tgz", - "integrity": "sha512-67+/XNMR1CgLPyeGX8jqSG6l8yYD0iiwUgcu1Vaxq6N05WwnqVisIW8XzLSRUtKt4WyVQgOWk3aspImpMVOG3Q==", - "cpu": [ - "x64" - ], + "node_modules/boxen/node_modules/camelcase": { + "version": "7.0.0", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nrwl/nx-win32-arm64-msvc": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.4.tgz", - "integrity": "sha512-2rEsq3eOGVCYpYJn2tTJkOGNJm/U8rP/FmqtZXYa6VJv/00XP3Gl00IXFEDaYV6rZo7SWqLxtEPUbjK5LwPzZA==", - "cpu": [ - "arm64" - ], + "node_modules/boxen/node_modules/chalk": { + "version": "5.1.2", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", "engines": { - "node": ">= 10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nrwl/nx-win32-x64-msvc": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.4.tgz", - "integrity": "sha512-bogVju4Z/hy1jbppqaTNbmV1R4Kg0R5fKxXAXC2LaL7FL0dup31wPumdV+mXttXBNOBDjV8V/Oz1ZqdmxpOJUw==", - "cpu": [ - "x64" - ], + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } + "license": "MIT" }, - "node_modules/@nrwl/tao": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.4.tgz", - "integrity": "sha512-m90iz8UsXx1rgPm1dxsBQjSrCViWYZIrp8bpwjSCW24j3kifyilYSXGuKaRwZwUn7eNmH/kZcI9/8qeGIPF4Sg==", + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", "dev": true, + "license": "MIT", "dependencies": { - "nx": "15.9.4" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, - "bin": { - "tao": "index.js" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@octokit/auth-token": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", - "integrity": "sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==", + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^9.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@octokit/core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz", - "integrity": "sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==", + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", "dev": true, - "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 14" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@octokit/endpoint": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", - "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "8.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@octokit/graphql": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.5.tgz", - "integrity": "sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==", + "node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@octokit/openapi-types": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.1.1.tgz", - "integrity": "sha512-/X7Gh/qWiWaooJmUnYD48SYy72fyrk2ceisOSe89JojK7r0j8YrTwYpDi76kI+c6QiqX1KSgdoBTMJvktsDkYw==", - "dev": true - }, - "node_modules/@octokit/plugin-enterprise-rest": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", - "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", - "dev": true - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz", - "integrity": "sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==", + "node_modules/braces": { + "version": "3.0.2", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^6.41.0" + "fill-range": "^7.0.1" }, "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=4" - } - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "dev": true - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "dependencies": { - "@octokit/openapi-types": "^12.11.0" + "node": ">=8" } }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz", - "integrity": "sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==", + "node_modules/buffer": { + "version": "5.7.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "dependencies": { - "@octokit/types": "^8.1.1", - "deprecation": "^2.3.1" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=3" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", - "dev": true - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", - "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "node_modules/buffer-from": { + "version": "1.1.2", "dev": true, - "dependencies": { - "@octokit/openapi-types": "^14.0.0" - } + "license": "MIT" }, - "node_modules/@octokit/request": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", - "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "node_modules/builtins": { + "version": "5.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" + "semver": "^7.0.0" } }, - "node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "node_modules/byte-size": { + "version": "8.1.1", "dev": true, - "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, + "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=12.17" } }, - "node_modules/@octokit/rest": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.3.tgz", - "integrity": "sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==", + "node_modules/cacache": { + "version": "16.1.3", "dev": true, + "license": "ISC", "dependencies": { - "@octokit/core": "^4.0.0", - "@octokit/plugin-paginate-rest": "^3.0.0", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^6.0.0" + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" }, "engines": { - "node": ">= 14" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@octokit/types": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.2.1.tgz", - "integrity": "sha512-Vx4keMiD/CAiwVFasLcH0xBSVbKIHebIZke9i7ZbUWGNN4vJFWSYH6Nvga7UY9NIJCGa6x3QG849XTbi5wYmkA==", + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^17.1.1" + "balanced-match": "^1.0.0" } }, - "node_modules/@parcel/watcher": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", - "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "node_modules/cacache/node_modules/glob": { + "version": "8.0.3", "dev": true, - "hasInstallScript": true, + "license": "ISC", "dependencies": { - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">= 10.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.0", "dev": true, - "optional": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=14" + "node": ">=10" } }, - "node_modules/@pnpm/network.ca-file": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", - "integrity": "sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==", + "node_modules/cacheable-lookup": { + "version": "7.0.0", "dev": true, - "dependencies": { - "graceful-fs": "4.2.10" - }, + "license": "MIT", "engines": { - "node": ">=12.22.0" + "node": ">=14.16" } }, - "node_modules/@pnpm/npm-conf": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", - "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", + "node_modules/cacheable-request": { + "version": "10.2.7", "dev": true, + "license": "MIT", "dependencies": { - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.16" } }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz", - "integrity": "sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==", + "node_modules/callsites": { + "version": "3.1.0", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true + "node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/@sindresorhus/is": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", - "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", + "node_modules/camelcase-keys": { + "version": "6.2.2", "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, "engines": { - "node": ">=14.16" + "node": ">=8" }, "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "node_modules/chalk": { + "version": "4.1.2", "dev": true, + "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=14.16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@tootallnate/once": { + "node_modules/chardet": { + "version": "0.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/chownr": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, + "license": "ISC", "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/@tufjs/canonical-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", - "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "node_modules/ci-info": { + "version": "3.8.0", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@tufjs/models": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.3.tgz", - "integrity": "sha512-mkFEqqRisi13DmR5pX4x+Zk97EiU8djTtpNW1GeuX410y/raAsq/T3ZCjwoRIZ8/cIBfW0olK/sywlAiWevDVw==", + "node_modules/clean-stack": { + "version": "2.2.0", "dev": true, - "dependencies": { - "@tufjs/canonical-json": "1.0.0", - "minimatch": "^7.4.6" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/cli-boxes": { + "version": "3.0.0", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "node_modules/cli-cursor": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "node_modules/cli-table3": { + "version": "0.6.3", "dev": true, + "license": "MIT", "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "node_modules/cli-width": { + "version": "3.0.0", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "license": "ISC", + "engines": { + "node": ">= 10" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz", - "integrity": "sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==", + "node_modules/cliui": { + "version": "7.0.4", "dev": true, + "license": "ISC", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/type-utils": "6.1.0", - "@typescript-eslint/utils": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/clone": { + "version": "1.0.4", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.8" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/clone-deep": { + "version": "4.0.1", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/@typescript-eslint/parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.1.0.tgz", - "integrity": "sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==", + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/typescript-estree": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", - "debug": "^4.3.4" + "isobject": "^3.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", - "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", + "node_modules/cmd-shim": { + "version": "6.0.1", "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0" - }, + "license": "ISC", "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz", - "integrity": "sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==", + "node_modules/color-convert": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "6.1.0", - "@typescript-eslint/utils": "6.1.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=7.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", - "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", + "node_modules/color-name": { + "version": "1.1.4", "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", - "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", + "node_modules/columnify": { + "version": "1.6.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/combined-stream": { + "version": "1.0.8", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/commander": { + "version": "10.0.1", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" } }, - "node_modules/@typescript-eslint/utils": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.1.0.tgz", - "integrity": "sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==", + "node_modules/compare-func": { + "version": "2.0.0", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/typescript-estree": "6.1.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/compare-func/node_modules/dot-prop": { + "version": "5.3.0", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/concat-map": { + "version": "0.0.1", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", - "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", + "node_modules/concat-stream": { + "version": "2.0.0", "dev": true, + "engines": [ + "node >= 6.0" + ], + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.1.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true + "node_modules/config-chain": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } }, - "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.43", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.43.tgz", - "integrity": "sha512-AhFF3mIDfA+jEwQv2WMHmiYhOvmdbh2qhUkDVQfiqzQtUwS4BgoWwom5NpSPg4Ix5vOul+w1690Bt21CkVLpgg==", + "node_modules/configstore": { + "version": "6.0.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" }, "engines": { - "node": ">=14.15.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" } }, - "node_modules/@yarnpkg/parsers/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/configstore/node_modules/write-file-atomic": { + "version": "3.0.3", "dev": true, + "license": "ISC", "dependencies": { - "sprintf-js": "~1.0.2" + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-changelog-angular": { + "version": "6.0.0", "dev": true, + "license": "ISC", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "compare-func": "^2.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=14" } }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", - "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "node_modules/conventional-changelog-core": { + "version": "5.0.1", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^6.0.0", + "conventional-commits-parser": "^4.0.0", + "dateformat": "^3.0.3", + "get-pkg-repo": "^4.2.1", + "git-raw-commits": "^3.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^5.0.0", + "normalize-package-data": "^3.0.3", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=14" } }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/abort-controller": { + "node_modules/conventional-changelog-preset-loader": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": ">=6.5" + "node": ">=14" } }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "node_modules/conventional-changelog-writer": { + "version": "6.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^3.0.0", + "dateformat": "^3.0.3", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^8.1.2", + "semver": "^7.0.0", + "split": "^1.0.1" + }, "bin": { - "acorn": "bin/acorn" + "conventional-changelog-writer": "cli.js" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=14" } }, - "node_modules/add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", - "dev": true - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/conventional-commits-filter": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "debug": "4" + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.1" }, "engines": { - "node": ">= 6.0.0" + "node": ">=14" } }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "node_modules/conventional-commits-parser": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "is-text-path": "^1.0.1", + "JSONStream": "^1.3.5", + "meow": "^8.1.2", + "split2": "^3.2.2" + }, + "bin": { + "conventional-commits-parser": "cli.js" }, "engines": { - "node": ">= 8.0.0" + "node": ">=14" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/conventional-recommended-bump": { + "version": "7.0.1", "dev": true, + "license": "MIT", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^3.0.0", + "conventional-commits-filter": "^3.0.0", + "conventional-commits-parser": "^4.0.0", + "git-raw-commits": "^3.0.0", + "git-semver-tags": "^5.0.0", + "meow": "^8.1.2" + }, + "bin": { + "conventional-recommended-bump": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/core-util-is": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.2.0", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/d-fischer" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "dependencies": { - "string-width": "^4.1.0" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "node_modules/cross-spawn": { + "version": "7.0.3", "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/crypto-random-string": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "type-fest": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2993,1178 +2495,956 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/dargs": { + "version": "7.0.0", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/dateformat": { + "version": "3.0.3", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "*" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "node_modules/debug": { + "version": "4.3.4", "dev": true, + "license": "MIT", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "ms": "2.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "node_modules/decamelize": { + "version": "1.2.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/arrify": { + "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "node_modules/decompress-response": { + "version": "6.0.0", "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, "engines": { - "node": ">= 4.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", "dev": true, - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true - }, - "node_modules/bin-links": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz", - "integrity": "sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==", + "node_modules/dedent": { + "version": "0.7.0", "dev": true, - "dependencies": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/bin-links/node_modules/cmd-shim": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", - "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", + "node_modules/deep-extend": { + "version": "0.6.0", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4.0.0" } }, - "node_modules/bin-links/node_modules/read-cmd-shim": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", - "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", + "node_modules/deep-is": { + "version": "0.1.4", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/bin-links/node_modules/signal-exit": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", - "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", + "node_modules/defaults": { + "version": "1.0.4", "dev": true, - "engines": { - "node": ">=14" + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "node_modules/defer-to-connect": { + "version": "2.0.1", "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/boxen": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", - "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", + "node_modules/delayed-stream": { + "version": "1.0.0", "dev": true, - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.0", - "chalk": "^5.0.1", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.0.1" - }, + "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/delegates": { + "version": "1.0.0", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } + "license": "MIT" }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/depd": { + "version": "1.1.2", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/boxen/node_modules/camelcase": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", - "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", + "node_modules/deprecation": { + "version": "2.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/detect-indent": { + "version": "6.1.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", - "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", + "node_modules/diff-sequences": { + "version": "29.4.3", "dev": true, + "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/dir-glob": { + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "path-type": "^4.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/doctrine": { + "version": "3.0.0", "dev": true, + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^6.0.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=6.0.0" } }, - "node_modules/boxen/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/dot-prop": { + "version": "6.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", - "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", + "node_modules/dotenv": { + "version": "10.0.0", "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=10" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/duplexer": { + "version": "0.1.2", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "license": "MIT" }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.9", "dev": true, + "license": "Apache-2.0", "dependencies": { - "fill-range": "^7.0.1" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/emoji-regex": { + "version": "8.0.0", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "license": "MIT" }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "node_modules/encoding": { + "version": "0.1.13", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/byte-size": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz", - "integrity": "sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==", - "dev": true, - "engines": { - "node": ">=10" + "iconv-lite": "^0.6.2" } }, - "node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/end-of-stream": { + "version": "1.4.4", "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "once": "^1.4.0" } }, - "node_modules/cacache/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "node_modules/enquirer": { + "version": "2.3.6", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8.6" } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "node_modules/env-paths": { + "version": "2.2.1", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "node_modules/envinfo": { + "version": "7.8.1", "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, "engines": { - "node": ">=14.16" + "node": ">=4" } }, - "node_modules/cacheable-request": { - "version": "10.2.7", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.7.tgz", - "integrity": "sha512-I4SA6mKgDxcxVbSt/UmIkb9Ny8qSkg6ReBHtAAXnZHk7KOSx5g3DTiAOaYzcHCs6oOdHn+bip9T48E6tMvK9hw==", + "node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.2", "dev": true, + "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "^4.0.1", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.2", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" + "is-arrayish": "^0.2.1" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/escalade": { + "version": "3.1.1", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/escape-goat": { + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/eslint": { + "version": "8.45.0", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.6.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/eslint-config-prettier": { + "version": "8.8.0", "dev": true, - "engines": { - "node": ">=10" + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/eslint-plugin-simple-import-sort": { + "version": "10.0.0", "dev": true, - "engines": { - "node": ">=6" + "license": "MIT", + "peerDependencies": { + "eslint": ">=5.0.0" } }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "restore-cursor": "^3.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "node_modules/espree": { + "version": "9.6.1", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "string-width": "^4.2.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "10.* || >= 12.*" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/esprima": { + "version": "4.0.1", "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">= 10" + "node": ">=4" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/esquery": { + "version": "1.5.0", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=0.8" + "node": ">=4.0" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/esrecurse": { + "version": "4.3.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" + "node": ">=4.0" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/cmd-shim": { + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", - "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", "dev": true, + "license": "MIT", "dependencies": { - "mkdirp-infer-owner": "^2.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/external-editor": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" + "node": ">=4" } }, - "node_modules/columnify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "node_modules/fast-check": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.11.0.tgz", + "integrity": "sha512-H2tctb7AGfFQfz+DEr3UWhJ3s47LXsGp5g3jeJr5tHjnf4xUvpArIqiwcDmL2EXiv+auLHIpF5MqaIpIKvpxiA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" + "pure-rand": "^6.0.0" }, "engines": { "node": ">=8.0.0" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.2.12", "dev": true, + "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">= 0.8" + "node": ">=8.6.0" } }, - "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=14" + "node": ">= 6" } }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "dev": true + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.13.0", "dev": true, + "license": "ISC", "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "reusify": "^1.0.4" } }, - "node_modules/compare-func/node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/figures": { + "version": "3.2.0", "dev": true, + "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "escape-string-regexp": "^1.0.5" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, - "engines": [ - "node >= 6.0" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "license": "MIT", + "engines": { + "node": ">=0.8.0" } }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "node_modules/file-entry-cache": { + "version": "6.0.1", "dev": true, + "license": "MIT", "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/configstore": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "node_modules/filelist": { + "version": "1.0.4", "dev": true, + "license": "Apache-2.0", "dependencies": { - "dot-prop": "^6.0.1", - "graceful-fs": "^4.2.6", - "unique-string": "^3.0.0", - "write-file-atomic": "^3.0.3", - "xdg-basedir": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/yeoman/configstore?sponsor=1" + "minimatch": "^5.0.1" } }, - "node_modules/configstore/node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "balanced-match": "^1.0.0" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", - "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", "dev": true, + "license": "ISC", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "node_modules/fill-range": { + "version": "7.0.1", "dev": true, + "license": "MIT", "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "node_modules/find-up": { + "version": "5.0.0", "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", - "dev": true, - "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/flat": { + "version": "5.0.2", "dev": true, + "license": "BSD-3-Clause", "bin": { - "semver": "bin/semver.js" + "flat": "cli.js" } }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "node_modules/flat-cache": { + "version": "3.0.4", "dev": true, + "license": "MIT", "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=10" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "node_modules/flatted": { + "version": "3.2.7", "dev": true, - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/conventional-recommended-bump": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", - "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "node_modules/foreground-child": { + "version": "3.1.1", "dev": true, + "license": "ISC", "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.3.4", - "conventional-commits-filter": "^2.0.7", - "conventional-commits-parser": "^3.2.0", - "git-raw-commits": "^2.0.8", - "git-semver-tags": "^4.1.1", - "meow": "^8.0.0", - "q": "^1.5.1" - }, - "bin": { - "conventional-recommended-bump": "cli.js" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.0.2", "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/form-data": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 8" + "node": ">= 6" } }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "node_modules/form-data-encoder": { + "version": "2.1.3", "dev": true, - "dependencies": { - "type-fest": "^1.0.1" - }, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14.17" } }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/fp-and-or": { + "version": "0.1.3", "dev": true, + "license": "ISC", "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/fs-constants": { + "version": "1.0.0", "dev": true, - "bin": { - "cssesc": "bin/cssesc" + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=14.14" } }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "node_modules/fs-minipass": { + "version": "2.1.0", "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "node_modules/fs.realpath": { + "version": "1.0.0", "dev": true, - "engines": { - "node": "*" - } + "license": "ISC" }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/function-bind": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/gauge": { + "version": "4.0.4", "dev": true, + "license": "ISC", "dependencies": { - "ms": "2.1.2" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/get-caller-file": { + "version": "2.0.5", "dev": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "node_modules/get-pkg-repo": { + "version": "4.2.1", "dev": true, + "license": "MIT", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "get-pkg-repo": "src/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "node_modules/get-pkg-repo/node_modules/hosted-git-info": { + "version": "4.1.0", "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/decompress-response": { + "node_modules/get-pkg-repo/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, + "license": "ISC", "dependencies": { - "mimic-response": "^3.1.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" + } + }, + "node_modules/get-port": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/get-stdin": { + "version": "8.0.0", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4172,149 +3452,129 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/get-stream": { + "version": "6.0.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/git-raw-commits": { + "version": "3.0.0", "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "meow": "^8.1.2", + "split2": "^3.2.2" + }, + "bin": { + "git-raw-commits": "cli.js" + }, "engines": { - "node": ">=10" + "node": ">=14" } }, - "node_modules/define-lazy-prop": { + "node_modules/git-remote-origin-url": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, + "license": "MIT", + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/git-semver-tags": { + "version": "5.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^8.1.2", + "semver": "^7.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, "engines": { - "node": ">=0.4.0" + "node": ">=14" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/git-up": { + "version": "7.0.0", "dev": true, - "engines": { - "node": ">= 0.6" + "license": "MIT", + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true + "node_modules/git-url-parse": { + "version": "13.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "git-up": "^7.0.0" + } }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "node_modules/gitconfiglocal": { + "version": "1.0.0", "dev": true, - "engines": { - "node": ">=8" + "license": "BSD", + "dependencies": { + "ini": "^1.3.2" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/glob": { + "version": "7.2.3", "dev": true, + "license": "ISC", "dependencies": { - "path-type": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/glob-parent": { + "version": "6.0.2", "dev": true, + "license": "ISC", "dependencies": { - "esutils": "^2.0.2" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=6.0.0" + "node": ">=10.13.0" } }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "node_modules/global-dirs": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "ini": "2.0.0" }, "engines": { "node": ">=10" @@ -4323,505 +3583,467 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "node_modules/globals": { + "version": "13.20.0", "dev": true, + "license": "MIT", "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "node_modules/globby": { + "version": "11.1.0", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "iconv-lite": "^0.6.2" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/got": { + "version": "12.5.2", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.1", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/graceful-fs": { + "version": "4.2.10", "dev": true, - "dependencies": { - "once": "^1.4.0" - } + "license": "ISC" }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/graphemer": { + "version": "1.4.0", "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.7", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1" + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=8.6" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/hard-rejection": { + "version": "2.1.0", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "node_modules/has": { + "version": "1.0.3", "dev": true, - "bin": { - "envinfo": "dist/cli.js" + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4.0" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/has-flag": { + "version": "4.0.0", "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/has-unicode": { + "version": "2.0.1", "dev": true, - "engines": { - "node": ">=6" - } + "license": "ISC" }, - "node_modules/escape-goat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", - "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "node_modules/has-yarn": { + "version": "3.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/hosted-git-info": { + "version": "6.1.1", "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 6" } }, - "node_modules/eslint": { - "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "node_modules/http2-wrapper": { + "version": "2.1.11", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10.19.0" + } + }, + "node_modules/http2-wrapper/node_modules/quick-lru": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": ">= 6" } }, - "node_modules/eslint-plugin-simple-import-sort": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", - "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", + "node_modules/human-signals": { + "version": "2.1.0", "dev": true, - "peerDependencies": { - "eslint": ">=5.0.0" + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "node_modules/humanize-ms": { + "version": "1.2.1", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "node_modules/iconv-lite": { + "version": "0.4.24", "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.4", "dev": true, + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">= 4" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/ignore-walk": { + "version": "5.0.1", "dev": true, + "license": "ISC", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "minimatch": "^5.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/import-fresh": { + "version": "3.3.0", "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/import-lazy": { + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/import-local": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=4.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/imurmurhash": { + "version": "0.1.4", "dev": true, + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=0.8.19" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/indent-string": { + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/infer-owner": { + "version": "1.0.4", "dev": true, - "engines": { - "node": ">=6" + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/ini": { + "version": "1.3.8", "dev": true, - "engines": { - "node": ">=0.8.x" - } + "license": "ISC" }, - "node_modules/execa": { + "node_modules/init-package-json": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "npm-package-arg": "^10.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/init-package-json/node_modules/npm-package-arg": { + "version": "10.1.0", "dev": true, + "license": "ISC", "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/fast-check": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.11.0.tgz", - "integrity": "sha512-H2tctb7AGfFQfz+DEr3UWhJ3s47LXsGp5g3jeJr5tHjnf4xUvpArIqiwcDmL2EXiv+auLHIpF5MqaIpIKvpxiA==", + "node_modules/inquirer": { + "version": "8.2.5", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], + "license": "MIT", "dependencies": { - "pure-rand": "^6.0.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "node_modules/ip": { + "version": "2.0.0", + "dev": true, + "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "node_modules/is-arrayish": { + "version": "0.2.1", "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } + "license": "MIT" }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/is-ci": { + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "ci-info": "^3.2.0" }, - "engines": { - "node": ">= 6" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/is-core-module": { + "version": "2.12.1", "dev": true, + "license": "MIT", "dependencies": { - "reusify": "^1.0.4" + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/is-docker": { + "version": "2.2.1", "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" + "license": "MIT", + "bin": { + "is-docker": "cli.js" }, "engines": { "node": ">=8" @@ -4830,882 +4052,838 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/is-extglob": { + "version": "2.1.1", "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, + "license": "MIT", "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/file-url": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", - "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/is-glob": { + "version": "4.0.3", "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/is-installed-globally": { + "version": "0.4.0", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/is-interactive": { + "version": "1.0.0", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/is-lambda": { + "version": "1.0.1", "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, + "license": "MIT" + }, + "node_modules/is-npm": { + "version": "6.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/is-number": { + "version": "7.0.0", "dev": true, - "bin": { - "flat": "cli.js" + "license": "MIT", + "engines": { + "node": ">=0.12.0" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/is-obj": { + "version": "2.0.0", "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8" } }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "node_modules/is-path-inside": { + "version": "3.0.3", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "license": "MIT", "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node": ">=8" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "node_modules/is-plain-obj": { + "version": "1.1.0", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "node_modules/is-plain-object": { + "version": "5.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/is-ssh": { + "version": "1.4.0", "dev": true, + "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "protocols": "^2.0.1" } }, - "node_modules/form-data-encoder": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.3.tgz", - "integrity": "sha512-KqU0nnPMgIJcCOFTNJFEA8epcseEaoox4XZffTgy8jlI6pL/5EFyR54NRG7CnCJN0biY7q52DO3MH6/sJ/TKlQ==", + "node_modules/is-stream": { + "version": "2.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">= 14.17" + "node": ">=8" } }, - "node_modules/fp-and-or": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", - "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", + "node_modules/is-text-path": { + "version": "1.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" + }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/fs-constants": { + "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/is-wsl": { + "version": "2.2.0", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/fs.realpath": { + "node_modules/is-yarn-global": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "node_modules/isobject": { + "version": "3.0.1", "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/jackspeak": { + "version": "2.2.1", "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "node_modules/jake": { + "version": "10.8.7", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" }, "bin": { - "get-pkg-repo": "src/cli.js" + "jake": "bin/cli.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=10" } }, - "node_modules/get-pkg-repo/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/jest-diff": { + "version": "29.6.1", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/get-pkg-repo/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/jest-get-type": { + "version": "29.4.3", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/jju": { + "version": "1.4.0", "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "license": "MIT" }, - "node_modules/get-pkg-repo/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" }, - "node_modules/get-pkg-repo/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/js-yaml": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/get-pkg-repo/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", "dev": true, + "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "jju": "^1.1.0" } }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "node_modules/json-schema-traverse": { + "version": "0.4.1", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/json-stringify-safe": { + "version": "5.0.1", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "ISC" }, - "node_modules/git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "node_modules/json5": { + "version": "2.2.3", "dev": true, - "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, + "license": "MIT", "bin": { - "git-raw-commits": "cli.js" + "json5": "lib/cli.js" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "node_modules/jsonc-parser": { + "version": "3.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", "dev": true, + "license": "MIT", "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=4" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/git-remote-origin-url/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/jsonlines": { + "version": "0.1.1", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", "dev": true, + "license": "(MIT OR Apache-2.0)", "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" }, "bin": { - "git-semver-tags": "cli.js" + "JSONStream": "bin.js" }, "engines": { - "node": ">=10" - } - }, - "node_modules/git-semver-tags/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": "*" } }, - "node_modules/git-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", - "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "node_modules/keyv": { + "version": "4.5.2", "dev": true, + "license": "MIT", "dependencies": { - "is-ssh": "^1.4.0", - "parse-url": "^8.1.0" + "json-buffer": "3.0.1" } }, - "node_modules/git-url-parse": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", - "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "node_modules/kind-of": { + "version": "6.0.3", "dev": true, - "dependencies": { - "git-up": "^7.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "node_modules/kleur": { + "version": "4.1.5", "dev": true, - "dependencies": { - "ini": "^1.3.2" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/latest-version": { + "version": "7.0.0", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "package-json": "^8.1.0" }, "engines": { - "node": "*" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/lerna": { + "version": "7.1.4", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "@lerna/child-process": "7.1.4", + "@lerna/create": "7.1.4", + "@npmcli/run-script": "6.0.2", + "@nx/devkit": ">=16.5.1 < 17", + "@octokit/plugin-enterprise-rest": "6.0.1", + "@octokit/rest": "19.0.11", + "byte-size": "8.1.1", + "chalk": "4.1.0", + "clone-deep": "4.0.1", + "cmd-shim": "6.0.1", + "columnify": "1.6.0", + "conventional-changelog-angular": "6.0.0", + "conventional-changelog-core": "5.0.1", + "conventional-recommended-bump": "7.0.1", + "cosmiconfig": "^8.2.0", + "dedent": "0.7.0", + "envinfo": "7.8.1", + "execa": "5.0.0", + "fs-extra": "^11.1.1", + "get-port": "5.1.1", + "get-stream": "6.0.0", + "git-url-parse": "13.1.0", + "glob-parent": "5.1.2", + "globby": "11.1.0", + "graceful-fs": "4.2.11", + "has-unicode": "2.0.1", + "import-local": "3.1.0", + "ini": "^1.3.8", + "init-package-json": "5.0.0", + "inquirer": "^8.2.4", + "is-ci": "3.0.1", + "is-stream": "2.0.0", + "jest-diff": ">=29.4.3 < 30", + "js-yaml": "4.1.0", + "libnpmaccess": "7.0.2", + "libnpmpublish": "7.3.0", + "load-json-file": "6.2.0", + "lodash": "^4.17.21", + "make-dir": "3.1.0", + "minimatch": "3.0.5", + "multimatch": "5.0.0", + "node-fetch": "2.6.7", + "npm-package-arg": "8.1.1", + "npm-packlist": "5.1.1", + "npm-registry-fetch": "^14.0.5", + "npmlog": "^6.0.2", + "nx": ">=16.5.1 < 17", + "p-map": "4.0.0", + "p-map-series": "2.1.0", + "p-pipe": "3.1.0", + "p-queue": "6.6.2", + "p-reduce": "2.1.0", + "p-waterfall": "2.1.1", + "pacote": "^15.2.0", + "pify": "5.0.0", + "read-cmd-shim": "4.0.0", + "read-package-json": "6.0.4", + "resolve-from": "5.0.0", + "rimraf": "^4.4.1", + "semver": "^7.3.8", + "signal-exit": "3.0.7", + "slash": "3.0.0", + "ssri": "^9.0.1", + "strong-log-transformer": "2.1.0", + "tar": "6.1.11", + "temp-dir": "1.0.0", + "typescript": ">=3 < 6", + "upath": "2.0.1", + "uuid": "^9.0.0", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "5.0.0", + "write-file-atomic": "5.0.1", + "write-pkg": "4.0.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4" + }, + "bin": { + "lerna": "dist/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": "^14.17.0 || >=16.0.0" } }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "node_modules/lerna/node_modules/chalk": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "ini": "2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "node_modules/lerna/node_modules/get-stream": { + "version": "6.0.0", "dev": true, + "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/lerna/node_modules/glob-parent": { + "version": "5.1.2", "dev": true, + "license": "ISC", "dependencies": { - "type-fest": "^0.20.2" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=8" + "node": ">= 6" + } + }, + "node_modules/lerna/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "license": "ISC" + }, + "node_modules/lerna/node_modules/minimatch": { + "version": "3.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "*" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/lerna/node_modules/p-queue": { + "version": "6.6.2", "dev": true, + "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/got": { - "version": "12.5.2", - "resolved": "https://registry.npmjs.org/got/-/got-12.5.2.tgz", - "integrity": "sha512-guHGMSEcsA5m1oPRweXUJnug0vuvlkX9wx5hzOka+ZBrBUOJHU0Z1JcNu3QE5IPGnA5aXUsQHdWOD4eJg9/v3A==", + "node_modules/lerna/node_modules/p-timeout": { + "version": "3.2.0", "dev": true, + "license": "MIT", "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.1", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" + "p-finally": "^1.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "node": ">=8" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "node_modules/lerna/node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "node_modules/lerna/node_modules/rimraf": { + "version": "4.4.1", "dev": true, + "license": "ISC", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" + "glob": "^9.2.0" }, "bin": { - "handlebars": "bin/handlebars" + "rimraf": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=0.4.7" + "node": ">=14" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/lerna/node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/lerna/node_modules/rimraf/node_modules/glob": { + "version": "9.3.5", "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, "engines": { - "node": ">=6" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/lerna/node_modules/rimraf/node_modules/minimatch": { + "version": "8.0.4", "dev": true, + "license": "ISC", "dependencies": { - "function-bind": "^1.1.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.4.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/lerna/node_modules/rimraf/node_modules/minipass": { + "version": "4.2.8", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "node_modules/has-yarn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", - "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "node_modules/levn": { + "version": "0.4.1", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "node_modules/libnpmaccess": { + "version": "7.0.2", "dev": true, + "license": "ISC", "dependencies": { - "lru-cache": "^7.5.1" + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/libnpmaccess/node_modules/npm-package-arg": { + "version": "10.1.0", "dev": true, + "license": "ISC", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">= 6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/http2-wrapper": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", - "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", + "node_modules/libnpmpublish": { + "version": "7.3.0", "dev": true, + "license": "ISC", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", + "semver": "^7.3.7", + "sigstore": "^1.4.0", + "ssri": "^10.0.1" }, "engines": { - "node": ">=10.19.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/http2-wrapper/node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "node_modules/libnpmpublish/node_modules/minipass": { + "version": "5.0.0", "dev": true, + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/libnpmpublish/node_modules/normalize-package-data": { + "version": "5.0.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "agent-base": "6", - "debug": "4" + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">= 6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/libnpmpublish/node_modules/npm-package-arg": { + "version": "10.1.0", "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, "engines": { - "node": ">=10.17.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "node_modules/libnpmpublish/node_modules/ssri": { + "version": "10.0.4", "dev": true, + "license": "ISC", "dependencies": { - "ms": "^2.0.0" + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/load-json-file": { + "version": "6.2.0", "dev": true, + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.6.0", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "node_modules/locate-path": { + "version": "6.0.0", "dev": true, + "license": "MIT", "dependencies": { - "minimatch": "^5.0.1" + "p-locate": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/lodash": { + "version": "4.17.21", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } + "license": "MIT" }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/lowercase-keys": { + "version": "3.0.0", "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "node_modules/lru-cache": { + "version": "7.14.0", "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/import-local": { + "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, + "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "semver": "^6.0.0" }, "engines": { "node": ">=8" @@ -5714,166 +4892,150 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, "engines": { - "node": ">=0.8.19" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/map-obj": { + "version": "4.3.0", "dev": true, + "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/meow": { + "version": "8.1.2", "dev": true, + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/init-package-json": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", - "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/init-package-json/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "dev": true, + "license": "ISC" + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^7.5.1" + "p-locate": "^4.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/init-package-json/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inquirer": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=8" } }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", "dev": true, + "license": "MIT", "dependencies": { - "ci-info": "^2.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { "node": ">=8" @@ -5882,45 +5044,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/meow/node_modules/semver": { + "version": "5.7.2", "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -5928,399 +5090,395 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "node_modules/is-npm": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", - "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "node_modules/micromatch": { + "version": "4.0.5", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8.6" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/mime-db": { + "version": "1.52.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">= 0.6" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/mime-types": { + "version": "2.1.35", "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/mimic-fn": { + "version": "2.1.0", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/mimic-response": { + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "node_modules/min-indent": { + "version": "1.0.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/minimatch": { + "version": "3.1.2", "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/is-ssh": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", - "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "node_modules/minimist": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "protocols": "^2.0.1" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "node_modules/minipass": { + "version": "3.3.4", "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "node_modules/minipass-collect": { + "version": "1.0.2", "dev": true, + "license": "ISC", "dependencies": { - "text-extensions": "^1.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/minipass-fetch": { + "version": "2.1.2", "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/minipass-flush": { + "version": "1.0.5", "dev": true, + "license": "ISC", "dependencies": { - "is-docker": "^2.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/is-yarn-global": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.0.tgz", - "integrity": "sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA==", + "node_modules/minipass-json-stream": { + "version": "1.0.1", "dev": true, - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/minipass-pipeline": { + "version": "1.2.4", "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "node_modules/minipass-sized": { + "version": "1.0.3", "dev": true, + "license": "ISC", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "minipass": "^3.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node": ">=8" } }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "node_modules/minizlib": { + "version": "2.1.2", "dev": true, + "license": "MIT", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true + "node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "node_modules/modify-values": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/multimatch": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "node_modules/multimatch/node_modules/@types/minimatch": { + "version": "3.0.5", + "dev": true, + "license": "MIT" }, - "node_modules/json-parse-helpfulerror": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", - "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", + "node_modules/multimatch/node_modules/arrify": { + "version": "2.0.1", "dev": true, - "dependencies": { - "jju": "^1.1.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/mute-stream": { + "version": "0.0.8", + "dev": true, + "license": "ISC" }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" }, - "node_modules/json-stringify-nice": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", - "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "node_modules/natural-compare-lite": { + "version": "1.4.0", "dev": true, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/node-addon-api": { + "version": "3.2.1", "dev": true, - "bin": { - "json5": "lib/cli.js" + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=6" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/node-gyp": { + "version": "9.3.0", "dev": true, + "license": "MIT", "dependencies": { - "universalify": "^2.0.0" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" } }, - "node_modules/jsonlines": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", - "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==", - "dev": true - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "node_modules/node-gyp-build": { + "version": "4.6.0", "dev": true, - "engines": [ - "node >= 0.2.0" - ] + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", "dev": true, + "license": "ISC", "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "abbrev": "^1.0.0" }, "bin": { - "JSONStream": "bin.js" + "nopt": "bin/nopt.js" }, "engines": { - "node": "*" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/just-diff": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", - "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==", - "dev": true - }, - "node_modules/just-diff-apply": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", - "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "node_modules/normalize-package-data": { + "version": "3.0.3", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "json-buffer": "3.0.1" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "4.1.0", "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/latest-version": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", - "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "node_modules/normalize-url": { + "version": "8.0.0", "dev": true, - "dependencies": { - "package-json": "^8.1.0" - }, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -6328,198 +5486,84 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lerna": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz", - "integrity": "sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg==", + "node_modules/npm-bundled": { + "version": "3.0.0", "dev": true, + "license": "ISC", "dependencies": { - "@lerna/child-process": "6.6.2", - "@lerna/create": "6.6.2", - "@lerna/legacy-package-management": "6.6.2", - "@npmcli/arborist": "6.2.3", - "@npmcli/run-script": "4.1.7", - "@nrwl/devkit": ">=15.5.2 < 16", - "@octokit/plugin-enterprise-rest": "6.0.1", - "@octokit/rest": "19.0.3", - "byte-size": "7.0.0", - "chalk": "4.1.0", - "clone-deep": "4.0.1", - "cmd-shim": "5.0.0", - "columnify": "1.6.0", - "config-chain": "1.1.12", - "conventional-changelog-angular": "5.0.12", - "conventional-changelog-core": "4.2.4", - "conventional-recommended-bump": "6.1.0", - "cosmiconfig": "7.0.0", - "dedent": "0.7.0", - "dot-prop": "6.0.1", - "envinfo": "^7.7.4", - "execa": "5.0.0", - "fs-extra": "9.1.0", - "get-port": "5.1.1", - "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", - "globby": "11.1.0", - "graceful-fs": "4.2.10", - "has-unicode": "2.0.1", - "import-local": "^3.0.2", - "init-package-json": "3.0.2", - "inquirer": "^8.2.4", - "is-ci": "2.0.0", - "is-stream": "2.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates": { + "version": "16.10.16", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "commander": "^10.0.0", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.3", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^5.1.0", + "ini": "^4.1.1", "js-yaml": "^4.1.0", - "libnpmaccess": "^6.0.3", - "libnpmpublish": "7.1.4", - "load-json-file": "6.2.0", - "make-dir": "3.1.0", - "minimatch": "3.0.5", - "multimatch": "5.0.0", - "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "^14.0.3", - "npmlog": "^6.0.2", - "nx": ">=15.5.2 < 16", - "p-map": "4.0.0", - "p-map-series": "2.1.0", - "p-pipe": "3.1.0", - "p-queue": "6.6.2", - "p-reduce": "2.1.0", - "p-waterfall": "2.1.1", - "pacote": "15.1.1", - "pify": "5.0.0", - "read-cmd-shim": "3.0.0", - "read-package-json": "5.0.1", - "resolve-from": "5.0.0", - "rimraf": "^4.4.1", - "semver": "^7.3.8", - "signal-exit": "3.0.7", - "slash": "3.0.0", - "ssri": "9.0.1", - "strong-log-transformer": "2.1.0", - "tar": "6.1.11", - "temp-dir": "1.0.0", - "typescript": "^3 || ^4", - "upath": "^2.0.1", - "uuid": "8.3.2", - "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "4.0.0", - "write-file-atomic": "4.0.1", - "write-pkg": "4.0.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4" + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "lodash": "^4.17.21", + "minimatch": "^9.0.3", + "p-map": "^4.0.0", + "pacote": "15.2.0", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts-ncu": "^3.0.0", + "rc-config-loader": "^4.1.3", + "remote-git-tags": "^3.0.0", + "rimraf": "^5.0.1", + "semver": "^7.5.3", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^2.0.1", + "strip-json-comments": "^5.0.1", + "untildify": "^4.0.0", + "update-notifier": "^6.0.2" }, "bin": { - "lerna": "dist/cli.js" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - } - }, - "node_modules/lerna/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/lerna/node_modules/cacache": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "ncu": "build/src/bin/cli.js", + "npm-check-updates": "build/src/bin/cli.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.14" } }, - "node_modules/lerna/node_modules/cacache/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "node_modules/npm-check-updates/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/lerna/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/npm-check-updates/node_modules/chalk": { + "version": "5.3.0", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/lerna/node_modules/config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/lerna/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", - "dev": true, - "dependencies": { - "minipass": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/lerna/node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lerna/node_modules/glob": { + "node_modules/npm-check-updates/node_modules/glob": { "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", @@ -6537,32 +5581,29 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lerna/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/npm-check-updates/node_modules/hosted-git-info": { + "version": "5.2.1", "dev": true, + "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">= 6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/lerna/node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/npm-check-updates/node_modules/ini": { + "version": "4.1.1", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/lerna/node_modules/glob/node_modules/minimatch": { + "node_modules/npm-check-updates/node_modules/minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6573,345 +5614,250 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lerna/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "node_modules/npm-check-updates/node_modules/minipass": { + "version": "5.0.0", "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, + "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/lerna/node_modules/make-fetch-happen/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "node_modules/npm-check-updates/node_modules/rimraf": { + "version": "5.0.1", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "glob": "^10.2.5" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lerna/node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "node_modules/npm-check-updates/node_modules/semver": { + "version": "7.5.4", "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/lerna/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/npm-check-updates/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/lerna/node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "node_modules/npm-check-updates/node_modules/strip-json-comments": { + "version": "5.0.1", "dev": true, - "dependencies": { - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.16" }, - "optionalDependencies": { - "encoding": "^0.1.13" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lerna/node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "node_modules/npm-install-checks": { + "version": "6.1.1", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" + "semver": "^7.1.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/lerna/node_modules/npm-registry-fetch/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "node_modules/npm-normalize-package-bin": { + "version": "3.0.0", "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/lerna/node_modules/npm-registry-fetch/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "node_modules/npm-package-arg": { + "version": "8.1.1", "dev": true, + "license": "ISC", "dependencies": { - "builtins": "^5.0.0" + "hosted-git-info": "^3.0.6", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/lerna/node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "node_modules/npm-package-arg/node_modules/builtins": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "3.0.8", "dev": true, + "license": "ISC", "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/lerna/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "6.0.0", "dev": true, + "license": "ISC", "dependencies": { - "p-finally": "^1.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/lerna/node_modules/proc-log": { + "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/lerna/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "engines": { - "node": ">=8" + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" } }, - "node_modules/lerna/node_modules/rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "node_modules/npm-packlist": { + "version": "5.1.1", "dev": true, + "license": "ISC", "dependencies": { - "glob": "^9.2.0" + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^1.1.2", + "npm-normalize-package-bin": "^1.0.1" }, "bin": { - "rimraf": "dist/cjs/src/bin.js" + "npm-packlist": "bin/index.js" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/lerna/node_modules/rimraf/node_modules/brace-expansion": { + "node_modules/npm-packlist/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/lerna/node_modules/rimraf/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "node_modules/npm-packlist/node_modules/glob": { + "version": "8.1.0", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lerna/node_modules/rimraf/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "node_modules/npm-packlist/node_modules/minimatch": { + "version": "5.1.6", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/lerna/node_modules/rimraf/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lerna/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/lerna/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/npm-packlist/node_modules/npm-bundled": { + "version": "1.1.2", "dev": true, + "license": "ISC", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" + "npm-normalize-package-bin": "^1.0.1" } }, - "node_modules/libnpmaccess": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.3.tgz", - "integrity": "sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==", + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", "dev": true, - "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "license": "ISC" }, - "node_modules/libnpmaccess/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/npm-pick-manifest": { + "version": "8.0.1", "dev": true, + "license": "ISC", "dependencies": { - "lru-cache": "^7.5.1" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmaccess/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { + "version": "10.1.0", "dev": true, + "license": "ISC", "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.1.4.tgz", - "integrity": "sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg==", + "node_modules/npm-registry-fetch": { + "version": "14.0.5", "dev": true, + "license": "ISC", "dependencies": { - "ci-info": "^3.6.1", - "normalize-package-data": "^5.0.0", - "npm-package-arg": "^10.1.0", - "npm-registry-fetch": "^14.0.3", - "proc-log": "^3.0.0", - "semver": "^7.3.7", - "sigstore": "^1.4.0", - "ssri": "^10.0.1" + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/@npmcli/fs": { + "node_modules/npm-registry-fetch/node_modules/@npmcli/fs": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -6919,20 +5865,18 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/brace-expansion": { + "node_modules/npm-registry-fetch/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/libnpmpublish/node_modules/cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "node_modules/npm-registry-fetch/node_modules/cacache": { + "version": "17.1.3", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -6951,26 +5895,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/libnpmpublish/node_modules/fs-minipass": { + "node_modules/npm-registry-fetch/node_modules/fs-minipass": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^5.0.0" }, @@ -6978,11 +5906,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/glob": { + "node_modules/npm-registry-fetch/node_modules/glob": { "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", @@ -7000,11 +5927,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/libnpmpublish/node_modules/make-fetch-happen": { + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -7026,11 +5952,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/minimatch": { + "node_modules/npm-registry-fetch/node_modules/minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7041,20 +5966,18 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/libnpmpublish/node_modules/minipass": { + "node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } }, - "node_modules/libnpmpublish/node_modules/minipass-fetch": { + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^5.0.0", "minipass-sized": "^1.0.3", @@ -7067,26 +5990,10 @@ "encoding": "^0.1.13" } }, - "node_modules/libnpmpublish/node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/libnpmpublish/node_modules/npm-package-arg": { + "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, + "license": "ISC", "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -7097,38 +6004,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/libnpmpublish/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/libnpmpublish/node_modules/ssri": { + "node_modules/npm-registry-fetch/node_modules/ssri": { "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^5.0.0" }, @@ -7136,11 +6015,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/unique-filename": { + "node_modules/npm-registry-fetch/node_modules/unique-filename": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^4.0.0" }, @@ -7148,11 +6026,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/unique-slug": { + "node_modules/npm-registry-fetch/node_modules/unique-slug": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -7160,244 +6037,224 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", - "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "node_modules/npm-run-path": { + "version": "4.0.1", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^5.0.0", - "strip-bom": "^4.0.0", - "type-fest": "^0.6.0" + "path-key": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/load-json-file/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/npmlog": { + "version": "6.0.2", "dev": true, + "license": "ISC", "dependencies": { - "p-locate": "^5.0.0" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/nx": { + "version": "16.5.3", "dev": true, + "hasInstallScript": true, + "license": "MIT", "dependencies": { + "@nrwl/tao": "16.5.3", + "@parcel/watcher": "2.0.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.0-rc.46", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.0.0", "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^7.0.2", + "dotenv": "~10.0.0", + "enquirer": "~2.3.6", + "fast-glob": "3.2.7", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^11.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "js-yaml": "4.1.0", + "jsonc-parser": "3.2.0", + "lines-and-columns": "~2.0.3", + "minimatch": "3.0.5", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "semver": "7.5.3", + "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "v8-compile-cache": "2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "nx": "bin/nx.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "16.5.3", + "@nx/nx-darwin-x64": "16.5.3", + "@nx/nx-freebsd-x64": "16.5.3", + "@nx/nx-linux-arm-gnueabihf": "16.5.3", + "@nx/nx-linux-arm64-gnu": "16.5.3", + "@nx/nx-linux-arm64-musl": "16.5.3", + "@nx/nx-linux-x64-gnu": "16.5.3", + "@nx/nx-linux-x64-musl": "16.5.3", + "@nx/nx-win32-arm64-msvc": "16.5.3", + "@nx/nx-win32-x64-msvc": "16.5.3" + }, + "peerDependencies": { + "@swc-node/register": "^1.4.2", + "@swc/core": "^1.2.173" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } } }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "node_modules/nx/node_modules/fast-glob": { + "version": "3.2.7", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "node_modules/nx/node_modules/glob": { + "version": "7.1.4", "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/nx/node_modules/glob-parent": { + "version": "5.1.2", "dev": true, + "license": "ISC", "dependencies": { - "semver": "^6.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/nx/node_modules/lines-and-columns": { + "version": "2.0.3", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "node_modules/nx/node_modules/minimatch": { + "version": "3.0.5", "dev": true, + "license": "ISC", "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "node_modules/nx/node_modules/tmp": { + "version": "0.2.1", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "rimraf": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8.17.0" } }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/nx/node_modules/yargs": { + "version": "17.7.2", "dev": true, + "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/meow/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/nx/node_modules/yargs-parser": { + "version": "21.1.1", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/nx/node_modules/yargs/node_modules/cliui": { + "version": "8.0.1", "dev": true, + "license": "ISC", "dependencies": { - "p-locate": "^4.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/once": { + "version": "1.4.0", "dev": true, + "license": "ISC", "dependencies": { - "p-try": "^2.0.0" + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" }, "engines": { "node": ">=6" @@ -7406,94 +6263,91 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/open": { + "version": "8.4.2", "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/optionator": { + "version": "0.9.3", "dev": true, + "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/ora": { + "version": "5.4.1", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/os-tmpdir": { + "version": "1.0.2", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/p-cancelable": { + "version": "3.0.0", "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "license": "MIT", + "engines": { + "node": ">=12.20" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/p-finally": { + "version": "1.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">=4" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/p-limit": { + "version": "3.1.0", "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { "node": ">=10" }, @@ -7501,893 +6355,773 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/p-locate": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/p-map": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-fn": { + "node_modules/p-map-series": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "node_modules/p-pipe": { + "version": "3.1.0", "dev": true, + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/p-queue": { + "version": "7.3.4", "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.7", + "p-timeout": "^5.0.2" + }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/p-reduce": { + "version": "2.1.0", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "node_modules/p-timeout": { + "version": "5.1.0", "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/p-try": { + "version": "2.2.0", "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "node_modules/p-waterfall": { + "version": "2.1.1", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "p-reduce": "^2.0.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "node_modules/package-json": { + "version": "8.1.0", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" }, "engines": { - "node": ">= 8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "node_modules/pacote": { + "version": "15.2.0", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "bin": { + "pacote": "lib/bin.js" }, - "optionalDependencies": { - "encoding": "^0.1.13" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "node_modules/pacote/node_modules/@npmcli/fs": { + "version": "3.1.0", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "semver": "^7.3.5" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "node_modules/pacote/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/pacote/node_modules/cacache": { + "version": "17.1.3", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "node_modules/pacote/node_modules/fs-minipass": { + "version": "3.0.2", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "minipass": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/pacote/node_modules/glob": { + "version": "10.3.3", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">= 8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/pacote/node_modules/ignore-walk": { + "version": "6.0.3", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "node_modules/pacote/node_modules/minimatch": { + "version": "9.0.3", "dev": true, + "license": "ISC", "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "node_modules/pacote/node_modules/minipass": { + "version": "5.0.0", "dev": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multimatch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", - "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "node_modules/pacote/node_modules/npm-package-arg": { + "version": "10.1.0", "dev": true, + "license": "ISC", "dependencies": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/multimatch/node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/multimatch/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "node_modules/pacote/node_modules/npm-packlist": { + "version": "7.0.4", "dev": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/pacote/node_modules/ssri": { + "version": "10.0.4", "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^5.0.0" + }, "engines": { - "node": ">= 0.6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/pacote/node_modules/unique-filename": { + "version": "3.0.0", "dev": true, + "license": "ISC", "dependencies": { - "whatwg-url": "^5.0.0" + "unique-slug": "^4.0.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/node-gyp": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", - "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", + "node_modules/pacote/node_modules/unique-slug": { + "version": "4.0.0", "dev": true, + "license": "ISC", "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "imurmurhash": "^0.1.4" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "node_modules/parent-module": { + "version": "1.0.1", "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "node_modules/parse-github-url": { + "version": "1.0.2", "dev": true, - "dependencies": { - "abbrev": "^1.0.0" - }, + "license": "MIT", "bin": { - "nopt": "bin/nopt.js" + "parse-github-url": "cli.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/nopt": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.1.0.tgz", - "integrity": "sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q==", + "node_modules/parse-json": { + "version": "5.2.0", "dev": true, + "license": "MIT", "dependencies": { - "abbrev": "^2.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, - "bin": { - "nopt": "bin/nopt.js" + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-path": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-path": "^7.0.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/nopt/node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "node_modules/path-is-absolute": { + "version": "1.0.1", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/path-key": { + "version": "3.1.1", "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.10.1", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^6.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "9.1.1", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": "14 || >=16.14" } }, - "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "node_modules/path-scurry/node_modules/minipass": { + "version": "5.0.0", "dev": true, + "license": "ISC", "engines": { - "node": ">=14.16" + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "node_modules/pkg-dir": { + "version": "4.2.0", "dev": true, + "license": "MIT", "dependencies": { - "npm-normalize-package-bin": "^3.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/npm-check-updates": { - "version": "16.10.16", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.16.tgz", - "integrity": "sha512-d8mNYce/l8o5RHPE5ZUp2P1zj9poI7KWQCh5AsTIP3EhicONEhc63mLQQv4/nkCsMb3wCrikx6YOo4BOwN4+1w==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^5.3.0", - "cli-table3": "^0.6.3", - "commander": "^10.0.0", - "fast-memoize": "^2.5.2", - "find-up": "5.0.0", - "fp-and-or": "^0.1.3", - "get-stdin": "^8.0.0", - "globby": "^11.0.4", - "hosted-git-info": "^5.1.0", - "ini": "^4.1.1", - "js-yaml": "^4.1.0", - "json-parse-helpfulerror": "^1.0.3", - "jsonlines": "^0.1.1", - "lodash": "^4.17.21", - "minimatch": "^9.0.3", - "p-map": "^4.0.0", - "pacote": "15.2.0", - "parse-github-url": "^1.0.2", - "progress": "^2.0.3", - "prompts-ncu": "^3.0.0", - "rc-config-loader": "^4.1.3", - "remote-git-tags": "^3.0.0", - "rimraf": "^5.0.1", - "semver": "^7.5.3", - "semver-utils": "^1.1.4", - "source-map-support": "^0.5.21", - "spawn-please": "^2.0.1", - "strip-json-comments": "^5.0.1", - "untildify": "^4.0.0", - "update-notifier": "^6.0.2" - }, - "bin": { - "ncu": "build/src/bin/cli.js", - "npm-check-updates": "build/src/bin/cli.js" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=14.14" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^7.3.5" + "p-locate": "^4.1.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", "dev": true, + "license": "MIT", "dependencies": { - "which": "^3.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/cacache": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", - "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "node_modules/prelude-ls": { + "version": "1.2.1", "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.8.0" } }, - "node_modules/npm-check-updates/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/prettier": { + "version": "2.8.8", "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/npm-check-updates/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "node_modules/pretty-format": { + "version": "29.6.1", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^5.0.0" + "@jest/schemas": "^29.6.0", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm-check-updates/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/proc-log": { + "version": "3.0.0", "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, + "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "node_modules/process-nextick-args": { + "version": "2.0.1", "dev": true, - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/npm-check-updates/node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "node_modules/progress": { + "version": "2.0.3", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.4.0" } }, - "node_modules/npm-check-updates/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "node_modules/promise-inflight": { + "version": "1.0.1", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "ISC" }, - "node_modules/npm-check-updates/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "node_modules/promise-retry": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/prompts-ncu": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-check-updates/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/npm-check-updates/node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "node_modules/promzard": { + "version": "1.0.0", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "read": "^2.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" } }, - "node_modules/npm-check-updates/node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "node_modules/proto-list": { + "version": "1.2.4", "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "ISC" }, - "node_modules/npm-check-updates/node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "node_modules/protocols": { + "version": "2.0.1", "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/npm-check-updates/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "node_modules/proxy-from-env": { + "version": "1.1.0", "dev": true, - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/npm-check-updates/node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "node_modules/punycode": { + "version": "2.3.0", "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/npm-check-updates/node_modules/npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "node_modules/pupa": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "ignore-walk": "^6.0.0" + "escape-goat": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check-updates/node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "node_modules/pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", "dev": true, - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/npm-check-updates/node_modules/pacote": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", - "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "node_modules/rc": { + "version": "1.2.8", "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "bin": { - "pacote": "lib/bin.js" + "rc": "cli.js" + } + }, + "node_modules/rc-config-loader": { + "version": "4.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/read": { + "version": "2.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~1.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "node_modules/read-cmd-shim": { + "version": "4.0.0", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/read-package-json": { + "node_modules/read-package-json": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", - "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^10.2.2", "json-parse-even-better-errors": "^3.0.0", @@ -8398,916 +7132,627 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "node_modules/read-package-json-fast": { + "version": "3.0.2", "dev": true, + "license": "ISC", "dependencies": { - "glob": "^10.2.5" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "balanced-match": "^1.0.0" } }, - "node_modules/npm-check-updates/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "node_modules/read-package-json/node_modules/glob": { + "version": "10.3.3", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/strip-json-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", - "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", - "dev": true, - "engines": { - "node": ">=14.16" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm-check-updates/node_modules/unique-filename": { + "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-check-updates/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.3", "dev": true, + "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm-check-updates/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "node_modules/read-package-json/node_modules/minipass": { + "version": "7.0.2", "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/npm-check-updates/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "node_modules/read-package-json/node_modules/normalize-package-data": { + "version": "5.0.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-install-checks": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", - "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", + "node_modules/read-pkg": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^7.1.1" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/npm-normalize-package-bin": { + "node_modules/read-pkg-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/npm-package-arg": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", - "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^3.0.6", - "semver": "^7.0.0", - "validate-npm-package-name": "^3.0.0" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/npm-package-arg/node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "dev": true - }, - "node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/npm-package-arg/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "p-try": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", "dev": true, + "license": "MIT", "dependencies": { - "builtins": "^1.0.3" + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", "dev": true, - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/npm-packlist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/npm-packlist/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "ISC" }, - "node_modules/npm-packlist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/read-pkg/node_modules/load-json-file": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/npm-packlist/node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "node_modules/npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "node_modules/read-pkg/node_modules/parse-json": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", - "semver": "^7.3.5" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "pify": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/npm-pick-manifest/node_modules/proc-log": { + "node_modules/read-pkg/node_modules/pify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/npm-pick-manifest/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/npm-registry-fetch": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz", - "integrity": "sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg==", + "node_modules/read-yaml-file": { + "version": "2.1.0", "dev": true, + "license": "MIT", "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "js-yaml": "^4.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10.13" } }, - "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/read/node_modules/mute-stream": { + "version": "1.0.0", "dev": true, - "dependencies": { - "lru-cache": "^7.5.1" - }, + "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "node_modules/readable-stream": { + "version": "3.6.0", "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 6" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/redent": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "node_modules/registry-auth-token": { + "version": "5.0.1", "dev": true, + "license": "MIT", "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "@pnpm/npm-conf": "^1.0.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14" } }, - "node_modules/nx": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/nx/-/nx-15.9.4.tgz", - "integrity": "sha512-P1G4t59UvE/lkHyruLeSOB5ZuNyh01IwU0tTUOi8f9s/NbP7+OQ8MYVwDV74JHTr6mQgjlS+n+4Eox8tVm9itA==", + "node_modules/registry-url": { + "version": "6.0.1", "dev": true, - "hasInstallScript": true, + "license": "MIT", "dependencies": { - "@nrwl/cli": "15.9.4", - "@nrwl/tao": "15.9.4", - "@parcel/watcher": "2.0.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "^3.0.0-rc.18", - "@zkochan/js-yaml": "0.0.6", - "axios": "^1.0.0", - "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^7.0.2", - "dotenv": "~10.0.0", - "enquirer": "~2.3.6", - "fast-glob": "3.2.7", - "figures": "3.2.0", - "flat": "^5.0.2", - "fs-extra": "^11.1.0", - "glob": "7.1.4", - "ignore": "^5.0.4", - "js-yaml": "4.1.0", - "jsonc-parser": "3.2.0", - "lines-and-columns": "~2.0.3", - "minimatch": "3.0.5", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "semver": "7.3.4", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", - "v8-compile-cache": "2.3.0", - "yargs": "^17.6.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "bin/nx.js" - }, - "optionalDependencies": { - "@nrwl/nx-darwin-arm64": "15.9.4", - "@nrwl/nx-darwin-x64": "15.9.4", - "@nrwl/nx-linux-arm-gnueabihf": "15.9.4", - "@nrwl/nx-linux-arm64-gnu": "15.9.4", - "@nrwl/nx-linux-arm64-musl": "15.9.4", - "@nrwl/nx-linux-x64-gnu": "15.9.4", - "@nrwl/nx-linux-x64-musl": "15.9.4", - "@nrwl/nx-win32-arm64-msvc": "15.9.4", - "@nrwl/nx-win32-x64-msvc": "15.9.4" + "rc": "1.2.8" }, - "peerDependencies": { - "@swc-node/register": "^1.4.2", - "@swc/core": "^1.2.173" + "engines": { + "node": ">=12" }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "node_modules/remote-git-tags": { + "version": "3.0.0", "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/nx/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "node_modules/require-directory": { + "version": "2.1.1", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=14.14" + "node": ">=0.10.0" } }, - "node_modules/nx/node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "node_modules/require-from-string": { + "version": "2.0.2", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/nx/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/resolve": { + "version": "1.22.2", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">= 6" + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nx/node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "node_modules/resolve-alpn": { + "version": "1.2.1", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } + "license": "MIT" }, - "node_modules/nx/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/resolve-cwd": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/nx/node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/nx/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "node_modules/resolve-from": { + "version": "4.0.0", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/nx/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/responselike": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "rimraf": "^3.0.0" + "lowercase-keys": "^3.0.0" }, "engines": { - "node": ">=8.17.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/restore-cursor": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/nx/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "node_modules/retry": { + "version": "0.12.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 4" } }, - "node_modules/nx/node_modules/yargs/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/reusify": { + "version": "1.0.4", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, + "license": "MIT", "engines": { - "node": ">=12" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/rimraf": { + "version": "3.0.2", "dev": true, + "license": "ISC", "dependencies": { - "mimic-fn": "^2.1.0" + "glob": "^7.1.3" }, - "engines": { - "node": ">=6" + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/run-async": { + "version": "2.4.1", "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.12.0" } }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "node_modules/run-parallel": { + "version": "1.2.0", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" + "queue-microtask": "^1.2.2" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "node_modules/rxjs": { + "version": "7.8.0", "dev": true, + "license": "Apache-2.0", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "tslib": "^2.1.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/safe-buffer": { + "version": "5.2.1", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "node_modules/safer-buffer": { + "version": "2.1.2", "dev": true, - "engines": { - "node": ">=12.20" - } + "license": "MIT" }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "node_modules/semver": { + "version": "7.5.3", "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/semver-diff": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/semver-utils": { + "version": "1.1.4", + "dev": true, + "license": "APACHEv2" + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", "dev": true, + "license": "ISC", "dependencies": { - "p-limit": "^3.0.2" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" + "kind-of": "^6.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/p-map-series": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", - "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", + "node_modules/shebang-command": { + "version": "2.0.0", "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/p-pipe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "node_modules/shebang-regex": { + "version": "3.0.0", "dev": true, + "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-queue": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz", - "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==", + "node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/sigstore": { + "version": "1.4.0", "dev": true, + "license": "Apache-2.0", "dependencies": { - "eventemitter3": "^4.0.7", - "p-timeout": "^5.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-waterfall": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", - "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", - "dev": true, - "dependencies": { - "p-reduce": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", - "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", - "dev": true, - "dependencies": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pacote": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", - "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", - "dev": true, - "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^4.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" + "@sigstore/protobuf-specs": "^0.1.0", + "make-fetch-happen": "^11.0.1", + "tuf-js": "^1.1.3" }, "bin": { - "pacote": "lib/bin.js" + "sigstore": "bin/sigstore.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/@npmcli/fs": { + "node_modules/sigstore/node_modules/@npmcli/fs": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -9315,58 +7760,29 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "dependencies": { - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/brace-expansion": { + "node_modules/sigstore/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/pacote/node_modules/cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "node_modules/sigstore/node_modules/cacache": { + "version": "17.0.4", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", - "glob": "^10.2.2", + "glob": "^8.0.1", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^4.0.0", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", "ssri": "^10.0.0", "tar": "^6.1.11", "unique-filename": "^3.0.0" @@ -9375,93 +7791,39 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/cacache/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pacote/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "node_modules/sigstore/node_modules/fs-minipass": { + "version": "3.0.1", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^4.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/fs-minipass/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pacote/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "node_modules/sigstore/node_modules/glob": { + "version": "8.1.0", "dev": true, + "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/pacote/node_modules/glob/node_modules/minipass": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", - "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/pacote/node_modules/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", - "dev": true, - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "node_modules/sigstore/node_modules/make-fetch-happen": { + "version": "11.0.3", "dev": true, + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -9470,7 +7832,7 @@ "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^4.0.0", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", @@ -9483,46 +7845,31 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/make-fetch-happen/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pacote/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/sigstore/node_modules/minimatch": { + "version": "5.1.6", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/pacote/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "node_modules/sigstore/node_modules/minipass": { + "version": "4.2.4", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } }, - "node_modules/pacote/node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "node_modules/sigstore/node_modules/minipass-fetch": { + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^5.0.0", + "minipass": "^4.0.0", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, @@ -9533,1112 +7880,1070 @@ "encoding": "^0.1.13" } }, - "node_modules/pacote/node_modules/minipass-fetch/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pacote/node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "node_modules/sigstore/node_modules/ssri": { + "version": "10.0.1", "dev": true, + "license": "ISC", "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "minipass": "^4.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "node_modules/sigstore/node_modules/unique-filename": { + "version": "3.0.0", "dev": true, + "license": "ISC", "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "unique-slug": "^4.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "node_modules/sigstore/node_modules/unique-slug": { + "version": "4.0.0", "dev": true, + "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.0" + "imurmurhash": "^0.1.4" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "node_modules/sisteransi": { + "version": "1.0.5", "dev": true, - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/pacote/node_modules/npm-registry-fetch/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/slash": { + "version": "3.0.0", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/pacote/node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "node_modules/smart-buffer": { + "version": "4.2.0", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/pacote/node_modules/read-package-json": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.3.tgz", - "integrity": "sha512-4QbpReW4kxFgeBQ0vPAqh2y8sXEB3D4t3jsXbJKIhBiF80KT6XRo45reqwtftju5J6ru1ax06A2Gb/wM1qCOEQ==", + "node_modules/socks": { + "version": "2.7.1", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10.13.0", + "npm": ">= 3.0.0" } }, - "node_modules/pacote/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "node_modules/socks-proxy-agent": { + "version": "7.0.0", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^5.0.0" + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/ssri/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/pacote/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "node_modules/sort-keys": { + "version": "2.0.0", "dev": true, + "license": "MIT", "dependencies": { - "unique-slug": "^4.0.0" + "is-plain-obj": "^1.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/pacote/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/source-map": { + "version": "0.6.1", "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, + "license": "BSD-3-Clause", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/pacote/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "node_modules/source-map-support": { + "version": "0.5.21", "dev": true, + "license": "MIT", "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/pacote/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "node_modules/spawn-please": { + "version": "2.0.1", "dev": true, + "license": "ISC", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" + "cross-spawn": "^7.0.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/spdx-correct": { + "version": "3.1.1", "dev": true, + "license": "Apache-2.0", "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/parse-conflict-json": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", - "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", + "node_modules/spdx-exceptions": { + "version": "2.3.0", "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "just-diff": "^6.0.0", - "just-diff-apply": "^5.2.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "CC-BY-3.0" }, - "node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "node_modules/spdx-expression-parse": { + "version": "3.0.1", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "node_modules/spdx-license-ids": { + "version": "3.0.12", "dev": true, - "bin": { - "parse-github-url": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "CC0-1.0" }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/split": { + "version": "1.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "through": "2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/parse-path": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", - "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "node_modules/split2": { + "version": "3.2.2", "dev": true, + "license": "ISC", "dependencies": { - "protocols": "^2.0.0" + "readable-stream": "^3.0.0" } }, - "node_modules/parse-url": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", - "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", + "node_modules/sprintf-js": { + "version": "1.0.3", "dev": true, - "dependencies": { - "parse-path": "^7.0.0" - } + "license": "BSD-3-Clause" }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/ssri": { + "version": "9.0.1", "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/string_decoder": { + "version": "1.3.0", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/string-width": { + "version": "4.2.3", "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": "14 || >=16.14" + "node": ">=8" } }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/path-type": { + "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/strip-final-newline": { + "version": "2.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=8" } }, - "node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "node_modules/strip-json-comments": { + "version": "3.1.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/strong-log-transformer": { + "version": "2.1.0", "dev": true, + "license": "Apache-2.0", "dependencies": { - "find-up": "^4.0.0" + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/supports-color": { + "version": "7.2.0", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/syncpack": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-10.6.1.tgz", + "integrity": "sha512-mnBo6PYffon2TKxzJmOy3V7srv1GRX9wdmi+FHiqkOw0r2mQMgu1nmM/covETqZzB2px//cSaYpcPW+rniT/0Q==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "@effect/data": "0.12.5", + "@effect/io": "0.26.0", + "@effect/match": "0.24.4", + "chalk": "4.1.2", + "commander": "11.0.0", + "cosmiconfig": "8.2.0", + "enquirer": "2.3.6", + "fs-extra": "11.1.1", + "globby": "11.1.0", + "minimatch": "9.0.1", + "read-yaml-file": "2.1.0", + "semver": "7.5.2", + "tightrope": "0.1.0", + "ts-toolbelt": "9.6.0" }, - "engines": { - "node": ">=6" + "bin": { + "syncpack": "dist/bin.js", + "syncpack-fix-mismatches": "dist/bin-fix-mismatches/index.js", + "syncpack-format": "dist/bin-format/index.js", + "syncpack-lint": "dist/bin-lint/index.js", + "syncpack-lint-semver-ranges": "dist/bin-lint-semver-ranges/index.js", + "syncpack-list": "dist/bin-list/index.js", + "syncpack-list-mismatches": "dist/bin-list-mismatches/index.js", + "syncpack-prompt": "dist/bin-prompt/index.js", + "syncpack-set-semver-ranges": "dist/bin-set-semver-ranges/index.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=14" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/syncpack/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" - }, + "balanced-match": "^1.0.0" + } + }, + "node_modules/syncpack/node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz", - "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==", + "node_modules/syncpack/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "yallist": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/syncpack/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "node_modules/syncpack/node_modules/semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "prettier": "bin-prettier.js" + "semver": "bin/semver.js" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": ">=10" } }, - "node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "node_modules/tar": { + "version": "6.1.11", "dev": true, + "license": "ISC", "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/tar-stream": { + "version": "2.2.0", "dev": true, - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=6" } }, - "node_modules/proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "node_modules/temp-dir": { + "version": "1.0.0", "dev": true, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "node_modules/text-extensions": { + "version": "1.9.0", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6.0" + "node": ">=0.10" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/through": { + "version": "2.3.8", "dev": true, - "engines": { - "node": ">=0.4.0" - } + "license": "MIT" }, - "node_modules/promise-all-reject-late": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", - "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "node_modules/through2": { + "version": "2.0.5", "dev": true, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/promise-call-limit": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", - "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==", + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", "dev": true, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", "dev": true, + "license": "MIT", "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, + "safe-buffer": "~5.1.0" + } + }, + "node_modules/tightrope": { + "version": "0.1.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/tmp": { + "version": "0.0.33", "dev": true, + "license": "MIT", "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">= 6" + "node": ">=0.6.0" } }, - "node_modules/prompts-ncu": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", - "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", + "node_modules/to-regex-range": { + "version": "5.0.1", "dev": true, + "license": "MIT", "dependencies": { - "kleur": "^4.0.1", - "sisteransi": "^1.0.5" + "is-number": "^7.0.0" }, "engines": { - "node": ">= 14" + "node": ">=8.0" } }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "node_modules/tr46": { + "version": "0.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/trim-newlines": { + "version": "3.0.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/promzard": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", + "node_modules/ts-api-utils": { + "version": "1.0.1", "dev": true, - "dependencies": { - "read": "1" + "license": "MIT", + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "node_modules/ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", "dev": true }, - "node_modules/protocols": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", - "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", - "dev": true + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/tslib": { + "version": "2.5.0", + "dev": true, + "license": "0BSD" + }, + "node_modules/tuf-js": { + "version": "1.1.4", "dev": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "1.0.3", + "make-fetch-happen": "^11.0.1" + }, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pupa": { + "node_modules/tuf-js/node_modules/@npmcli/fs": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dev": true, + "license": "ISC", "dependencies": { - "escape-goat": "^4.0.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "node_modules/tuf-js/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "node_modules/tuf-js/node_modules/cacache": { + "version": "17.0.7", "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "node_modules/tuf-js/node_modules/fs-minipass": { + "version": "3.0.2", "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "node_modules/tuf-js/node_modules/glob": { + "version": "10.3.3", "dev": true, + "license": "ISC", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { - "rc": "cli.js" + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rc-config-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", - "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", + "node_modules/tuf-js/node_modules/make-fetch-happen": { + "version": "11.1.1", "dev": true, + "license": "ISC", "dependencies": { - "debug": "^4.3.4", - "js-yaml": "^4.1.0", - "json5": "^2.2.2", - "require-from-string": "^2.0.2" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "node_modules/tuf-js/node_modules/minimatch": { + "version": "9.0.3", "dev": true, + "license": "ISC", "dependencies": { - "mute-stream": "~0.0.4" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/read-cmd-shim": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz", - "integrity": "sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==", + "node_modules/tuf-js/node_modules/minipass": { + "version": "5.0.0", "dev": true, + "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "node_modules/tuf-js/node_modules/minipass-fetch": { + "version": "3.0.3", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "node_modules/tuf-js/node_modules/ssri": { + "version": "10.0.4", "dev": true, + "license": "ISC", "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "minipass": "^5.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "node_modules/tuf-js/node_modules/unique-filename": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/tuf-js/node_modules/unique-slug": { + "version": "4.0.0", "dev": true, + "license": "ISC", "dependencies": { - "balanced-match": "^1.0.0" + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/type-check": { + "version": "0.4.0", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">=12" + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-json/node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "node_modules/typedarray": { + "version": "0.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^7.5.1" + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.4.4", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4.2.0" } }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/uglify-js": { + "version": "3.17.4", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" }, "engines": { - "node": ">=10" + "node": ">=0.8.0" } }, - "node_modules/read-package-json/node_modules/normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "node_modules/unique-filename": { + "version": "2.0.1", "dev": true, + "license": "ISC", "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "unique-slug": "^3.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "node_modules/read-pkg": { + "node_modules/unique-slug": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, + "license": "ISC", "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "imurmurhash": "^0.1.4" }, "engines": { - "node": ">=4" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/read-pkg-up": { + "node_modules/unique-string": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "crypto-random-string": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "node_modules/universal-user-agent": { + "version": "6.0.0", "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, + "license": "ISC" + }, + "node_modules/universalify": { + "version": "2.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 10.0.0" } }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/untildify": { + "version": "4.0.0", "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/upath": { + "version": "2.0.1", "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=4", + "yarn": "*" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/update-notifier": { + "version": "6.0.2", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "p-limit": "^1.1.0" + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.1.2", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/uri-js": { + "version": "4.4.1", "dev": true, - "engines": { - "node": ">=4" + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" } }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" }, - "node_modules/read-pkg/node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "node_modules/uuid": { + "version": "9.0.0", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/v8-compile-cache": { + "version": "2.3.0", "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } + "license": "MIT" }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", "dev": true, + "license": "Apache-2.0", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/validate-npm-package-name": { + "version": "5.0.0", "dev": true, + "license": "ISC", "dependencies": { - "pify": "^3.0.0" + "builtins": "^5.0.0" }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/wcwidth": { + "version": "1.0.1", "dev": true, - "engines": { - "node": ">=4" + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" } }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/webidl-conversions": { + "version": "3.0.1", "dev": true, - "bin": { - "semver": "bin/semver" - } + "license": "BSD-2-Clause" }, - "node_modules/read-pkg/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/whatwg-url": { + "version": "5.0.0", "dev": true, - "engines": { - "node": ">=4" + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/read-yaml-file": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", - "integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==", + "node_modules/which": { + "version": "2.0.2", "dev": true, + "license": "ISC", "dependencies": { - "js-yaml": "^4.0.0", - "strip-bom": "^4.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=10.13" + "node": ">= 8" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/wide-align": { + "version": "1.1.5", "dev": true, + "license": "ISC", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/widest-line": { + "version": "4.0.1", "dev": true, + "license": "MIT", "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "string-width": "^5.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/registry-auth-token": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", - "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, - "dependencies": { - "@pnpm/npm-conf": "^1.0.4" - }, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/registry-url": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", - "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", "dev": true, + "license": "MIT", "dependencies": { - "rc": "1.2.8" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" @@ -10647,238 +8952,182 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/remote-git-tags": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", - "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "7.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/word-wrap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/wordwrap": { + "version": "1.0.0", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "node_modules/wrap-ansi": { + "version": "7.0.0", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", "dev": true, + "license": "MIT", "dependencies": { - "resolve-from": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/wrappy": { + "version": "1.0.2", "dev": true, - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/write-file-atomic": { + "version": "5.0.1", "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "4.0.2", "dev": true, - "dependencies": { - "lowercase-keys": "^3.0.0" - }, + "license": "ISC", "engines": { - "node": ">=14.16" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/write-json-file": { + "version": "3.2.0", "dev": true, + "license": "MIT", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" }, "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" + "node": ">=6" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/write-json-file/node_modules/detect-indent": { + "version": "5.0.0", "dev": true, + "license": "MIT", "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/write-json-file/node_modules/make-dir": { + "version": "2.1.0", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "pify": "^4.0.1", + "semver": "^5.6.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=6" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/write-json-file/node_modules/pify": { + "version": "4.0.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=6" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/write-json-file/node_modules/semver": { + "version": "5.7.2", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "node_modules/write-json-file/node_modules/write-file-atomic": { + "version": "2.4.3", "dev": true, + "license": "ISC", "dependencies": { - "tslib": "^2.1.0" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/write-pkg": { + "version": "4.0.0", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "node_modules/write-pkg/node_modules/type-fest": { + "version": "0.4.1", "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -10886,2864 +9135,353 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver-utils": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", - "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", - "dev": true + "node_modules/xtend": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/y18n": { + "version": "5.0.8", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/yargs": { + "version": "16.2.0", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.2" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/yargs-parser": { + "version": "20.2.4", "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/yocto-queue": { + "version": "0.1.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", "dev": true }, - "node_modules/sigstore": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.4.0.tgz", - "integrity": "sha512-N7TRpSbFjY/TrFDg6yGAQSYBrQ5s6qmPiq4pD6fkv1LoyfMsLG0NwZWG2s5q+uttLHgyVyTa0Rogx2P78rN8kQ==", + "@babel/code-frame": { + "version": "7.18.6", "dev": true, - "dependencies": { - "@sigstore/protobuf-specs": "^0.1.0", - "make-fetch-happen": "^11.0.1", - "tuf-js": "^1.1.3" - }, - "bin": { - "sigstore": "bin/sigstore.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "requires": { + "@babel/highlight": "^7.18.6" } }, - "node_modules/sigstore/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "dev": true }, - "node_modules/sigstore/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "@babel/highlight": { + "version": "7.18.6", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sigstore/node_modules/cacache": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", - "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^8.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/fs-minipass": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", - "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", - "dev": true, - "dependencies": { - "minipass": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sigstore/node_modules/make-fetch-happen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", - "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sigstore/node_modules/minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sigstore/node_modules/minipass-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", - "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", - "dev": true, - "dependencies": { - "minipass": "^4.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/sigstore/node_modules/ssri": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", - "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", - "dev": true, - "dependencies": { - "minipass": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spawn-please": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.1.tgz", - "integrity": "sha512-W+cFbZR2q2mMTfjz5ZGvhBAiX+e/zczFCNlbS9mxiSdYswBXwUuBUT+a0urH+xZZa8f/bs0mXHyZsZHR9hKogA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strong-log-transformer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", - "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.1", - "minimist": "^1.2.0", - "through": "^2.3.4" - }, - "bin": { - "sl-log-transformer": "bin/sl-log-transformer.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/syncpack": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-10.7.3.tgz", - "integrity": "sha512-nhsiOHR1zebKRn4eZn5zUjbSJm4D8GgqiraY45MsaOClPbhVJny/jWhWrjSOuwwupdwv8EYH+GA9sqCEn4DCnA==", - "dev": true, - "dependencies": { - "@effect/data": "0.12.9", - "@effect/io": "0.27.0", - "@effect/match": "0.24.5", - "@effect/schema": "0.21.0", - "chalk": "4.1.2", - "commander": "11.0.0", - "cosmiconfig": "8.2.0", - "enquirer": "2.3.6", - "fs-extra": "11.1.1", - "globby": "11.1.0", - "minimatch": "9.0.2", - "ora": "5.4.1", - "prompts": "2.4.2", - "read-yaml-file": "2.1.0", - "semver": "7.5.3", - "tightrope": "0.1.0", - "ts-toolbelt": "9.6.0" - }, - "bin": { - "syncpack": "dist/bin.js", - "syncpack-fix-mismatches": "dist/bin-fix-mismatches/index.js", - "syncpack-format": "dist/bin-format/index.js", - "syncpack-lint": "dist/bin-lint/index.js", - "syncpack-lint-semver-ranges": "dist/bin-lint-semver-ranges/index.js", - "syncpack-list": "dist/bin-list/index.js", - "syncpack-list-mismatches": "dist/bin-list-mismatches/index.js", - "syncpack-prompt": "dist/bin-prompt/index.js", - "syncpack-set-semver-ranges": "dist/bin-set-semver-ranges/index.js", - "syncpack-update": "dist/bin-update/index.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/syncpack/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/syncpack/node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/syncpack/node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", - "dev": true, - "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/syncpack/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/syncpack/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/syncpack/node_modules/minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/syncpack/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tempy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.0.tgz", - "integrity": "sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w==", - "dev": true, - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy/node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/tightrope": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tightrope/-/tightrope-0.1.0.tgz", - "integrity": "sha512-HHHNYdCAIYwl1jOslQBT455zQpdeSo8/A346xpIb/uuqhSg+tCvYNsP5f11QW+z9VZ3vSX8YIfzTApjjuGH63w==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/treeverse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", - "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-api-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", - "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", - "dev": true, - "engines": { - "node": ">=16.13.0" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/ts-toolbelt": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", - "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", - "dev": true - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/tuf-js": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.4.tgz", - "integrity": "sha512-Lw2JRM3HTYhEtQJM2Th3aNCPbnXirtWMl065BawwmM2pX6XStH/ZO9e8T2hh0zk/HUa+1i6j+Lv6eDitKTau6A==", - "dev": true, - "dependencies": { - "@tufjs/models": "1.0.3", - "make-fetch-happen": "^11.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/tuf-js/node_modules/cacache": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", - "dev": true, - "dependencies": { - "minipass": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tuf-js/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tuf-js/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tuf-js/node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "dependencies": { - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/tuf-js/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, - "dependencies": { - "minipass": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dev": true, - "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/upath": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", - "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-notifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", - "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", - "dev": true, - "dependencies": { - "boxen": "^7.0.0", - "chalk": "^5.0.1", - "configstore": "^6.0.0", - "has-yarn": "^3.0.0", - "import-lazy": "^4.0.0", - "is-ci": "^3.0.1", - "is-installed-globally": "^0.4.0", - "is-npm": "^6.0.0", - "is-yarn-global": "^0.4.0", - "latest-version": "^7.0.0", - "pupa": "^3.1.0", - "semver": "^7.3.7", - "semver-diff": "^4.0.0", - "xdg-basedir": "^5.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", - "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ci-info": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", - "dev": true - }, - "node_modules/update-notifier/node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/walk-up-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", - "dev": true - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dev": true, - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/write-json-file": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", - "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", - "dev": true, - "dependencies": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.15", - "make-dir": "^2.1.0", - "pify": "^4.0.1", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.4.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/write-json-file/node_modules/detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/write-json-file/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/write-json-file/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/write-json-file/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/write-json-file/node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/write-pkg": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", - "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", - "dev": true, - "dependencies": { - "sort-keys": "^2.0.0", - "type-fest": "^0.4.1", - "write-json-file": "^3.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/write-pkg/node_modules/type-fest": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", - "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/xdg-basedir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true - }, - "@effect/data": { - "version": "0.12.9", - "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.9.tgz", - "integrity": "sha512-nuzFo+2LK4yG9H16WRv51MDhUAIuUGhmKYkuSrgCApwwLy2eUATaioQEbbR2rHOTprOiYpbIYKwvPsylEm/Fdw==", - "dev": true - }, - "@effect/io": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.27.0.tgz", - "integrity": "sha512-3ZUaf6B+aH83HPJ84KTthd4glgrRk6DXj9M915OB9G4cMbbJAwE/709tgamzD2IxcfSlqPowtvx73Cs4N7Ywrw==", - "dev": true, - "requires": { - "@effect/data": "~0.12.6" - } - }, - "@effect/match": { - "version": "0.24.5", - "resolved": "https://registry.npmjs.org/@effect/match/-/match-0.24.5.tgz", - "integrity": "sha512-mMoQLGt8s0AmXQR1yUTdBCbdzNIn8d5Ujf1o0T4mldiap4/eq3pf8cvyQm8dHK1Y8KyT4dA2ukJq56rSMIBZXA==", - "dev": true, - "requires": { - "@effect/data": "^0.12.9", - "@effect/schema": "^0.20.2" - }, - "dependencies": { - "@effect/io": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.26.2.tgz", - "integrity": "sha512-PdqtgmfEw88kX1UKZZvK42dpMZPSCPmdWAAzN17yCzfEsA3HoPjjxo9jLyzfjtUcU+tWO0tF/GY7pcDVLcJZAg==", - "dev": true, - "requires": { - "@effect/data": "~0.12.6" - } - }, - "@effect/schema": { - "version": "0.20.3", - "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.20.3.tgz", - "integrity": "sha512-pjJW9QkHZd2/fq7Bhd6pAOidMJ0OUODOeUlesPDK0jpo62AaU9g+IGXt3v5NU8rXSX77igZgfK08XhmofwHn0A==", - "dev": true, - "requires": { - "@effect/data": "^0.12.7", - "@effect/io": "^0.26.0", - "fast-check": "^3.10.0" - } - } - } - }, - "@effect/schema": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.21.0.tgz", - "integrity": "sha512-IFB6hnwuTzHKaMGrAuzp0LBIIkPtW8gaXXQAik/h7ZnPpE8sOkSWKyDHuD4lpOqgsFp1G55NobVKpJUPcL8Onw==", - "dev": true, - "requires": { - "@effect/data": "^0.12.9", - "@effect/io": "^0.27.0", - "fast-check": "^3.10.0" - } - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", - "dev": true - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "dev": true - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, - "@isaacs/string-locale-compare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", - "dev": true - }, - "@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.25.16" - } - }, - "@lerna/child-process": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.2.tgz", - "integrity": "sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "execa": "^5.0.0", - "strong-log-transformer": "^2.1.0" - } - }, - "@lerna/create": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.2.tgz", - "integrity": "sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ==", - "dev": true, - "requires": { - "@lerna/child-process": "6.6.2", - "dedent": "^0.7.0", - "fs-extra": "^9.1.0", - "init-package-json": "^3.0.2", - "npm-package-arg": "8.1.1", - "p-reduce": "^2.1.0", - "pacote": "15.1.1", - "pify": "^5.0.0", - "semver": "^7.3.4", - "slash": "^3.0.0", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0", - "yargs-parser": "20.2.4" - } - }, - "@lerna/legacy-package-management": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.2.tgz", - "integrity": "sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg==", - "dev": true, - "requires": { - "@npmcli/arborist": "6.2.3", - "@npmcli/run-script": "4.1.7", - "@nrwl/devkit": ">=15.5.2 < 16", - "@octokit/rest": "19.0.3", - "byte-size": "7.0.0", - "chalk": "4.1.0", - "clone-deep": "4.0.1", - "cmd-shim": "5.0.0", - "columnify": "1.6.0", - "config-chain": "1.1.12", - "conventional-changelog-core": "4.2.4", - "conventional-recommended-bump": "6.1.0", - "cosmiconfig": "7.0.0", - "dedent": "0.7.0", - "dot-prop": "6.0.1", - "execa": "5.0.0", - "file-url": "3.0.0", - "find-up": "5.0.0", - "fs-extra": "9.1.0", - "get-port": "5.1.1", - "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", - "globby": "11.1.0", - "graceful-fs": "4.2.10", - "has-unicode": "2.0.1", - "inquirer": "8.2.4", - "is-ci": "2.0.0", - "is-stream": "2.0.0", - "libnpmpublish": "7.1.4", - "load-json-file": "6.2.0", - "make-dir": "3.1.0", - "minimatch": "3.0.5", - "multimatch": "5.0.0", - "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "14.0.3", - "npmlog": "6.0.2", - "p-map": "4.0.0", - "p-map-series": "2.1.0", - "p-queue": "6.6.2", - "p-waterfall": "2.1.1", - "pacote": "15.1.1", - "pify": "5.0.0", - "pretty-format": "29.4.3", - "read-cmd-shim": "3.0.0", - "read-package-json": "5.0.1", - "resolve-from": "5.0.0", - "semver": "7.3.8", - "signal-exit": "3.0.7", - "slash": "3.0.0", - "ssri": "9.0.1", - "strong-log-transformer": "2.1.0", - "tar": "6.1.11", - "temp-dir": "1.0.0", - "tempy": "1.0.0", - "upath": "2.0.1", - "uuid": "8.3.2", - "write-file-atomic": "4.0.1", - "write-pkg": "4.0.0", - "yargs": "16.2.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - } - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } - } - }, - "get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true - }, - "glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", - "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", - "dev": true - } - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - } - } - }, - "minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true - }, - "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } - } - }, - "npm-registry-fetch": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", - "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", - "dev": true, - "requires": { - "make-fetch-happen": "^11.0.0", - "minipass": "^4.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "dependencies": { - "npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dev": true, - "requires": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - } - } - } - }, - "p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - } - }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/arborist": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-6.2.3.tgz", - "integrity": "sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA==", - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.0", - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^5.0.0", - "@npmcli/name-from-folder": "^2.0.0", - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^3.0.0", - "@npmcli/query": "^3.0.0", - "@npmcli/run-script": "^6.0.0", - "bin-links": "^4.0.1", - "cacache": "^17.0.4", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^6.1.1", - "json-parse-even-better-errors": "^3.0.0", - "json-stringify-nice": "^1.1.4", - "minimatch": "^6.1.6", - "nopt": "^7.0.0", - "npm-install-checks": "^6.0.0", - "npm-package-arg": "^10.1.0", - "npm-pick-manifest": "^8.0.1", - "npm-registry-fetch": "^14.0.3", - "npmlog": "^7.0.1", - "pacote": "^15.0.8", - "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^10.0.1", - "treeverse": "^3.0.0", - "walk-up-path": "^1.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "requires": { - "which": "^3.0.0" - } - }, - "@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - } - }, - "are-we-there-yet": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz", - "integrity": "sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - } - }, - "fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - }, - "gauge": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", - "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "dependencies": { - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true - }, - "make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - } - }, - "minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "color-convert": "^1.9.0" } }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "chalk": { + "version": "2.4.2", "dev": true, "requires": { - "encoding": "^0.1.13", - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "color-convert": { + "version": "1.9.3", "dev": true, "requires": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "color-name": "1.1.3" } }, - "npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dev": true, - "requires": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - } + "color-name": { + "version": "1.1.3", + "dev": true }, - "npmlog": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", - "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", - "dev": true, - "requires": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - } + "escape-string-regexp": { + "version": "1.0.5", + "dev": true }, - "proc-log": { + "has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true }, - "readable-stream": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.0.tgz", - "integrity": "sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==", + "supports-color": { + "version": "5.5.0", "dev": true, "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" + "has-flag": "^3.0.0" } - }, - "signal-exit": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", - "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", + } + } + }, + "@colors/colors": { + "version": "1.5.0", + "dev": true, + "optional": true + }, + "@effect/data": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.5.tgz", + "integrity": "sha512-gmHSsG4earpIWufwCNT1R1pZ5BIe7z0bMmexnAFOT9csc8bwTSzk1e5QAd/65/vyczf/cMMrXgjpasdxlJ5POA==", + "dev": true + }, + "@effect/io": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.26.0.tgz", + "integrity": "sha512-umwZ/sRoV7zb/8WwoiK7xWoypqvY6C1EXWEGORpViAFUTx3/bXc9i7JtdttTWVokXb3qogrxGX2SHopB20I4vQ==", + "dev": true, + "requires": { + "@effect/data": "~0.12.2" + } + }, + "@effect/match": { + "version": "0.24.4", + "resolved": "https://registry.npmjs.org/@effect/match/-/match-0.24.4.tgz", + "integrity": "sha512-oo0uzazHhlDm4shxiMQep5osHsEZmBX6uhB9GM2RXseDahwsKrOp5Q3cMr/J4ZfhruH/0/o7GEhLLHxpwhEtuA==", + "dev": true, + "requires": { + "@effect/data": "^0.12.6", + "@effect/schema": "^0.20.1" + }, + "dependencies": { + "@effect/data": { + "version": "0.12.10", + "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.10.tgz", + "integrity": "sha512-zIz/DgumH2LgGdr1Wc9ChET5JSG0k/G5kDc8rn4a6yIJ0v2d5rfnbRWIJO2fWmdFvc+128JyaBvYguIyz9JaAQ==", + "dev": true + } + } + }, + "@effect/schema": { + "version": "0.20.3", + "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.20.3.tgz", + "integrity": "sha512-pjJW9QkHZd2/fq7Bhd6pAOidMJ0OUODOeUlesPDK0jpo62AaU9g+IGXt3v5NU8rXSX77igZgfK08XhmofwHn0A==", + "dev": true, + "requires": { + "@effect/data": "^0.12.7", + "@effect/io": "^0.26.0", + "fast-check": "^3.10.0" + }, + "dependencies": { + "@effect/data": { + "version": "0.12.10", + "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.10.tgz", + "integrity": "sha512-zIz/DgumH2LgGdr1Wc9ChET5JSG0k/G5kDc8rn4a6yIJ0v2d5rfnbRWIJO2fWmdFvc+128JyaBvYguIyz9JaAQ==", + "dev": true + } + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.1", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.0", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.44.0", + "dev": true + }, + "@gar/promisify": { + "version": "1.1.3", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.10", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "dev": true + }, + "@hutson/parse-repository-url": { + "version": "3.0.2", + "dev": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", "dev": true }, - "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } + "ansi-styles": { + "version": "6.2.1", + "dev": true }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "requires": { - "unique-slug": "^4.0.0" - } + "emoji-regex": { + "version": "9.2.2", + "dev": true }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "string-width": { + "version": "5.1.2", "dev": true, "requires": { - "imurmurhash": "^0.1.4" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" } }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "strip-ansi": { + "version": "7.1.0", "dev": true, "requires": { - "builtins": "^5.0.0" + "ansi-regex": "^6.0.1" } }, - "which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "wrap-ansi": { + "version": "8.1.0", "dev": true, "requires": { - "isexe": "^2.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" } } } }, + "@jest/schemas": { + "version": "29.6.0", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@lerna/child-process": { + "version": "7.1.4", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "execa": "^5.0.0", + "strong-log-transformer": "^2.1.0" + } + }, + "@lerna/create": { + "version": "7.1.4", + "dev": true, + "requires": { + "@lerna/child-process": "7.1.4", + "dedent": "0.7.0", + "fs-extra": "^11.1.1", + "init-package-json": "5.0.0", + "npm-package-arg": "8.1.1", + "p-reduce": "^2.1.0", + "pacote": "^15.2.0", + "pify": "5.0.0", + "semver": "^7.3.4", + "slash": "^3.0.0", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "5.0.0", + "yargs-parser": "20.2.4" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@npmcli/fs": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "requires": { "@gar/promisify": "^1.1.3", @@ -13752,8 +9490,6 @@ }, "@npmcli/git": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", - "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", "dev": true, "requires": { "@npmcli/promise-spawn": "^6.0.0", @@ -13766,25 +9502,8 @@ "which": "^3.0.0" }, "dependencies": { - "@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "requires": { - "which": "^3.0.0" - } - }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true - }, "which": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -13794,325 +9513,88 @@ }, "@npmcli/installed-package-contents": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", "dev": true, "requires": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" } }, - "@npmcli/map-workspaces": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", - "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", - "dev": true, - "requires": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", - "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", - "dev": true - } - } - }, - "@npmcli/metavuln-calculator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz", - "integrity": "sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==", - "dev": true, - "requires": { - "cacache": "^17.0.0", - "json-parse-even-better-errors": "^3.0.0", - "pacote": "^15.0.0", - "semver": "^7.3.5" - }, - "dependencies": { - "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - } - }, - "fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - }, - "glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - } - } - }, "@npmcli/move-file": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "requires": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" } }, - "@npmcli/name-from-folder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", - "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", - "dev": true - }, "@npmcli/node-gyp": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true }, - "@npmcli/package-json": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-3.0.0.tgz", - "integrity": "sha512-NnuPuM97xfiCpbTEJYtEuKz6CFbpUHtaT0+5via5pQeI25omvQDFbp1GcGJ/c4zvL/WX0qbde6YiLgfZbWFgvg==", + "@npmcli/promise-spawn": { + "version": "6.0.2", "dev": true, "requires": { - "json-parse-even-better-errors": "^3.0.0" + "which": "^3.0.0" }, "dependencies": { - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true + "which": { + "version": "3.0.1", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, - "@npmcli/promise-spawn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.0.tgz", - "integrity": "sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, "@npmcli/run-script": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", - "integrity": "sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==", + "version": "6.0.2", "dev": true, "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" }, "dependencies": { - "@npmcli/node-gyp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", - "dev": true - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "which": { + "version": "3.0.1", "dev": true, "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "isexe": "^2.0.0" } } } }, - "@nrwl/cli": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.4.tgz", - "integrity": "sha512-FoiGFCLpb/r4HXCM3KYqT0xteP+MRV6bIHjz3bdPHIDLmBNQQnRRaV2K47jtJ6zjh1eOU5UHKyDtDDYf80Idpw==", + "@nrwl/devkit": { + "version": "16.5.3", + "dev": true, + "requires": { + "@nx/devkit": "16.5.3" + } + }, + "@nrwl/tao": { + "version": "16.5.3", "dev": true, "requires": { - "nx": "15.9.4" + "nx": "16.5.3" } }, - "@nrwl/devkit": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.4.tgz", - "integrity": "sha512-mUX1kXTuPMdTzFxIzH+MsSNvdppOmstPDOEtiGFZJTuJ625ki0HhNJILO3N2mJ7MeMrLqIlAiNdvelQaObxYsQ==", + "@nx/devkit": { + "version": "16.5.3", "dev": true, "requires": { + "@nrwl/devkit": "16.5.3", "ejs": "^3.1.7", "ignore": "^5.0.4", - "semver": "7.3.4", + "semver": "7.5.3", "tmp": "~0.2.1", "tslib": "^2.3.0" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "tmp": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "requires": { "rimraf": "^3.0.0" @@ -14120,91 +9602,80 @@ } } }, - "@nrwl/nx-darwin-arm64": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.4.tgz", - "integrity": "sha512-XnvrnT9BJsgThY/4xUcYtE077ERq/img8CkRj7MOOBNOh0/nVcR4LGbBKDHtwE3HPk0ikyS/SxRyNa9msvi3QQ==", + "@nx/nx-darwin-arm64": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.5.3.tgz", + "integrity": "sha512-HS3R/vRVFwOjZ0l1y3h1UMSd7Zfh4NQ2qDe1FSOfA38AXNftyWNCnZ1kkOikVjJKCpwKXls56XcPDu+2hbqSDA==", "dev": true, "optional": true }, - "@nrwl/nx-darwin-x64": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.4.tgz", - "integrity": "sha512-WKSfSlpVMLchpXkax0geeUNyhvNxwO7qUz/s0/HJWBekt8fizwKDwDj1gP7fOu+YWb/tHiSscbR1km8PtdjhQw==", + "@nx/nx-darwin-x64": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.5.3.tgz", + "integrity": "sha512-3QEZkliJy+rk5UrcBsMnExBIAXmjqd4dHBDGH1eo0w85/3Bih3Z9QxU/n+3tEewvUCCx4o4kg+bya/hVz23V6g==", "dev": true, "optional": true }, - "@nrwl/nx-linux-arm-gnueabihf": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.4.tgz", - "integrity": "sha512-a/b4PP7lP/Cgrh0LjC4O2YTt5pyf4DQTGtuE8qlo8o486UiofCtk4QGJX72q80s23L0ejCaKY2ULKx/3zMLjuA==", + "@nx/nx-freebsd-x64": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.5.3.tgz", + "integrity": "sha512-FyJ2xUBPifO0y9LoVuS0CjwN+GGsYSy+O1y541eh8j4Y86/xcPx0j+fhHhh3MDnKA9ftjbq+vrqgs84NHmIAAw==", "dev": true, "optional": true }, - "@nrwl/nx-linux-arm64-gnu": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.4.tgz", - "integrity": "sha512-ibBV8fMhSfLVd/2WzcDuUm32BoZsattuKkvMmOoyU6Pzoznc3AqyDjJR4xCIoAn5Rf+Nu1oeQONr5FAtb1Ugow==", + "@nx/nx-linux-arm-gnueabihf": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.5.3.tgz", + "integrity": "sha512-Zn343k/satXGWEJjh56+Y/Uxtsl1aCyUtq0OPxznwx/ZGG+Sw2wN/ZEnePEh0OB1/yZ2uWAFRHVSA2fYPrmdhQ==", "dev": true, "optional": true }, - "@nrwl/nx-linux-arm64-musl": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.4.tgz", - "integrity": "sha512-iIjvVYd7+uM4jVD461+PvU5XTALgSvJOODUaMRGOoDl0KlMuTe6pQZlw0eXjl5rcTd6paKaVFWT5j6awr8kj7w==", + "@nx/nx-linux-arm64-gnu": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.5.3.tgz", + "integrity": "sha512-ACUhKWHe7C7IopyIwXAoHx/phaZudBOu+pZwzVDaRy2xn78tdzJQrOySsQ7YmBGoGSXEAd5+3pVVXnXcRNJ2aA==", "dev": true, "optional": true }, - "@nrwl/nx-linux-x64-gnu": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.4.tgz", - "integrity": "sha512-q4OyH72mdrE4KellBWtwpr5EwfxHKNoFP9//7FAILO68ROh0rpMd7YQMlTB7T04UEUHjKEEsFGTlVXIee3Viwg==", + "@nx/nx-linux-arm64-musl": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.5.3.tgz", + "integrity": "sha512-eNrVa1Oaf42kEiCoJu01NlmGs6hQMzDhHiQ/DBKxMePW1bh4O5FEQUtYp1K/AKPcHH5270VNz0eAl164+fMqpQ==", "dev": true, "optional": true }, - "@nrwl/nx-linux-x64-musl": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.4.tgz", - "integrity": "sha512-67+/XNMR1CgLPyeGX8jqSG6l8yYD0iiwUgcu1Vaxq6N05WwnqVisIW8XzLSRUtKt4WyVQgOWk3aspImpMVOG3Q==", + "@nx/nx-linux-x64-gnu": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.3.tgz", + "integrity": "sha512-ZAW+Oar+WEwbmu8KFw80qDpT9y3qmWZdVD5wNRX5CMByuVJ3ly7MJbtD/rEDtvAUOgSMJikuGsK0jQ6acm+X/A==", "dev": true, "optional": true }, - "@nrwl/nx-win32-arm64-msvc": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.4.tgz", - "integrity": "sha512-2rEsq3eOGVCYpYJn2tTJkOGNJm/U8rP/FmqtZXYa6VJv/00XP3Gl00IXFEDaYV6rZo7SWqLxtEPUbjK5LwPzZA==", + "@nx/nx-linux-x64-musl": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.3.tgz", + "integrity": "sha512-jM2igA26dd0YVj9w/Pv2x3ZUUziVP4H3rFzYDAd80sQqLYWqELr6Fljyvj/2C+o+mOfVcw85+yfessjlPz8K8Q==", "dev": true, "optional": true }, - "@nrwl/nx-win32-x64-msvc": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.4.tgz", - "integrity": "sha512-bogVju4Z/hy1jbppqaTNbmV1R4Kg0R5fKxXAXC2LaL7FL0dup31wPumdV+mXttXBNOBDjV8V/Oz1ZqdmxpOJUw==", + "@nx/nx-win32-arm64-msvc": { + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.3.tgz", + "integrity": "sha512-gEP6ekFXLfvRWezSvQoHxV+vhKavuA/Lhz/AifYAIgdJEmKUPqVdnUtdkYwU0Ygn/a11KqbFh8J4TikXIkVxYw==", "dev": true, "optional": true }, - "@nrwl/tao": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.4.tgz", - "integrity": "sha512-m90iz8UsXx1rgPm1dxsBQjSrCViWYZIrp8bpwjSCW24j3kifyilYSXGuKaRwZwUn7eNmH/kZcI9/8qeGIPF4Sg==", + "@nx/nx-win32-x64-msvc": { + "version": "16.5.3", "dev": true, - "requires": { - "nx": "15.9.4" - } + "optional": true }, "@octokit/auth-token": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", - "integrity": "sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==", - "dev": true, - "requires": { - "@octokit/types": "^9.0.0" - } + "version": "3.0.4", + "dev": true }, "@octokit/core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz", - "integrity": "sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==", + "version": "4.2.4", "dev": true, "requires": { "@octokit/auth-token": "^3.0.0", @@ -14217,9 +9688,7 @@ } }, "@octokit/endpoint": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", - "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "version": "7.0.6", "dev": true, "requires": { "@octokit/types": "^9.0.0", @@ -14228,9 +9697,7 @@ } }, "@octokit/graphql": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.5.tgz", - "integrity": "sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==", + "version": "5.0.6", "dev": true, "requires": { "@octokit/request": "^6.0.0", @@ -14239,81 +9706,44 @@ } }, "@octokit/openapi-types": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.1.1.tgz", - "integrity": "sha512-/X7Gh/qWiWaooJmUnYD48SYy72fyrk2ceisOSe89JojK7r0j8YrTwYpDi76kI+c6QiqX1KSgdoBTMJvktsDkYw==", + "version": "18.0.0", "dev": true }, "@octokit/plugin-enterprise-rest": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", - "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", "dev": true }, "@octokit/plugin-paginate-rest": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz", - "integrity": "sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==", + "version": "6.1.2", "dev": true, "requires": { - "@octokit/types": "^6.41.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "dev": true - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } + "@octokit/tsconfig": "^1.0.2", + "@octokit/types": "^9.2.3" } }, "@octokit/plugin-request-log": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, "requires": {} }, "@octokit/plugin-rest-endpoint-methods": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz", - "integrity": "sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==", + "version": "7.2.3", "dev": true, "requires": { - "@octokit/types": "^8.1.1", - "deprecation": "^2.3.1" + "@octokit/types": "^10.0.0" }, "dependencies": { - "@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", - "dev": true - }, "@octokit/types": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", - "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "version": "10.0.0", "dev": true, "requires": { - "@octokit/openapi-types": "^14.0.0" + "@octokit/openapi-types": "^18.0.0" } } } }, "@octokit/request": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", - "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", + "version": "6.2.8", "dev": true, "requires": { "@octokit/endpoint": "^7.0.0", @@ -14326,8 +9756,6 @@ }, "@octokit/request-error": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, "requires": { "@octokit/types": "^9.0.0", @@ -14336,30 +9764,28 @@ } }, "@octokit/rest": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.3.tgz", - "integrity": "sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==", + "version": "19.0.11", "dev": true, "requires": { - "@octokit/core": "^4.0.0", - "@octokit/plugin-paginate-rest": "^3.0.0", + "@octokit/core": "^4.2.1", + "@octokit/plugin-paginate-rest": "^6.1.2", "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^6.0.0" + "@octokit/plugin-rest-endpoint-methods": "^7.1.2" } }, + "@octokit/tsconfig": { + "version": "1.0.2", + "dev": true + }, "@octokit/types": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.2.1.tgz", - "integrity": "sha512-Vx4keMiD/CAiwVFasLcH0xBSVbKIHebIZke9i7ZbUWGNN4vJFWSYH6Nvga7UY9NIJCGa6x3QG849XTbi5wYmkA==", + "version": "9.3.2", "dev": true, "requires": { - "@octokit/openapi-types": "^17.1.1" + "@octokit/openapi-types": "^18.0.0" } }, "@parcel/watcher": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", - "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", "dev": true, "requires": { "node-addon-api": "^3.2.1", @@ -14368,15 +9794,11 @@ }, "@pkgjs/parseargs": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "optional": true }, "@pnpm/network.ca-file": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz", - "integrity": "sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA==", "dev": true, "requires": { "graceful-fs": "4.2.10" @@ -14384,8 +9806,6 @@ }, "@pnpm/npm-conf": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", - "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", "dev": true, "requires": { "@pnpm/network.ca-file": "^1.0.1", @@ -14394,26 +9814,18 @@ }, "@sigstore/protobuf-specs": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz", - "integrity": "sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==", "dev": true }, "@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "version": "0.27.8", "dev": true }, "@sindresorhus/is": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", - "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", "dev": true }, "@szmarczak/http-timer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, "requires": { "defer-to-connect": "^2.0.1" @@ -14421,20 +9833,14 @@ }, "@tootallnate/once": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, "@tufjs/canonical-json": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", - "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", "dev": true }, "@tufjs/models": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.3.tgz", - "integrity": "sha512-mkFEqqRisi13DmR5pX4x+Zk97EiU8djTtpNW1GeuX410y/raAsq/T3ZCjwoRIZ8/cIBfW0olK/sywlAiWevDVw==", "dev": true, "requires": { "@tufjs/canonical-json": "1.0.0", @@ -14443,8 +9849,6 @@ "dependencies": { "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -14452,8 +9856,6 @@ }, "minimatch": { "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -14463,8 +9865,6 @@ }, "@types/glob": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "requires": { "@types/minimatch": "*", @@ -14473,56 +9873,34 @@ }, "@types/http-cache-semantics": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, "@types/json-schema": { "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, "@types/minimatch": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true }, "@types/minimist": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, "@types/node": { "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true }, "@types/normalize-package-data": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, "@types/semver": { "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, "@types/yargs": { "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -14530,14 +9908,10 @@ }, "@types/yargs-parser": { "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, "@typescript-eslint/eslint-plugin": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz", - "integrity": "sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.5.1", @@ -14556,8 +9930,6 @@ "dependencies": { "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -14565,8 +9937,6 @@ }, "semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -14576,8 +9946,6 @@ }, "@typescript-eslint/parser": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.1.0.tgz", - "integrity": "sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==", "dev": true, "requires": { "@typescript-eslint/scope-manager": "6.1.0", @@ -14589,8 +9957,6 @@ }, "@typescript-eslint/scope-manager": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz", - "integrity": "sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==", "dev": true, "requires": { "@typescript-eslint/types": "6.1.0", @@ -14599,8 +9965,6 @@ }, "@typescript-eslint/type-utils": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz", - "integrity": "sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==", "dev": true, "requires": { "@typescript-eslint/typescript-estree": "6.1.0", @@ -14611,14 +9975,10 @@ }, "@typescript-eslint/types": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.1.0.tgz", - "integrity": "sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz", - "integrity": "sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==", "dev": true, "requires": { "@typescript-eslint/types": "6.1.0", @@ -14632,8 +9992,6 @@ "dependencies": { "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -14641,8 +9999,6 @@ }, "semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -14652,8 +10008,6 @@ }, "@typescript-eslint/utils": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.1.0.tgz", - "integrity": "sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", @@ -14667,8 +10021,6 @@ "dependencies": { "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -14676,8 +10028,6 @@ }, "semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -14687,8 +10037,6 @@ }, "@typescript-eslint/visitor-keys": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz", - "integrity": "sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==", "dev": true, "requires": { "@typescript-eslint/types": "6.1.0", @@ -14697,14 +10045,10 @@ }, "@yarnpkg/lockfile": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, "@yarnpkg/parsers": { - "version": "3.0.0-rc.43", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.43.tgz", - "integrity": "sha512-AhFF3mIDfA+jEwQv2WMHmiYhOvmdbh2qhUkDVQfiqzQtUwS4BgoWwom5NpSPg4Ix5vOul+w1690Bt21CkVLpgg==", + "version": "3.0.0-rc.46", "dev": true, "requires": { "js-yaml": "^3.10.0", @@ -14713,8 +10057,6 @@ "dependencies": { "argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" @@ -14722,8 +10064,6 @@ }, "js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -14734,8 +10074,6 @@ }, "@zkochan/js-yaml": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", - "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -14743,42 +10081,23 @@ }, "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, "acorn": { "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, "add-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", "dev": true }, "agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { "debug": "4" @@ -14786,8 +10105,6 @@ }, "agentkeepalive": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -14797,8 +10114,6 @@ }, "aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", @@ -14807,8 +10122,6 @@ }, "ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -14819,8 +10132,6 @@ }, "ansi-align": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "requires": { "string-width": "^4.1.0" @@ -14828,14 +10139,10 @@ }, "ansi-colors": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true }, "ansi-escapes": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { "type-fest": "^0.21.3" @@ -14843,22 +10150,16 @@ "dependencies": { "type-fest": { "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true } } }, "ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -14866,14 +10167,10 @@ }, "aproba": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, "are-we-there-yet": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "requires": { "delegates": "^1.0.0", @@ -14882,56 +10179,34 @@ }, "argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, "array-differ": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true }, "array-ify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true }, "array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, "arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "async": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, "asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, "axios": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -14941,68 +10216,18 @@ }, "balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, "before-after-hook": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true }, - "bin-links": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz", - "integrity": "sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==", - "dev": true, - "requires": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" - }, - "dependencies": { - "cmd-shim": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", - "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", - "dev": true - }, - "read-cmd-shim": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", - "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", - "dev": true - }, - "signal-exit": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", - "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", - "dev": true - }, - "write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - } - } - } - }, "bl": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "requires": { "buffer": "^5.5.0", @@ -15012,8 +10237,6 @@ }, "boxen": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", - "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", "dev": true, "requires": { "ansi-align": "^3.0.1", @@ -15028,38 +10251,26 @@ "dependencies": { "ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, "ansi-styles": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true }, "camelcase": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz", - "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==", "dev": true }, "chalk": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", - "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", "dev": true }, "emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, "string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "requires": { "eastasianwidth": "^0.2.0", @@ -15069,8 +10280,6 @@ }, "strip-ansi": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "requires": { "ansi-regex": "^6.0.1" @@ -15078,14 +10287,10 @@ }, "type-fest": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true }, "wrap-ansi": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", - "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", "dev": true, "requires": { "ansi-styles": "^6.1.0", @@ -15097,8 +10302,6 @@ }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -15107,8 +10310,6 @@ }, "braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -15116,8 +10317,6 @@ }, "buffer": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "requires": { "base64-js": "^1.3.1", @@ -15126,29 +10325,21 @@ }, "buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "builtins": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "requires": { "semver": "^7.0.0" } }, "byte-size": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz", - "integrity": "sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==", + "version": "8.1.1", "dev": true }, "cacache": { "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, "requires": { "@npmcli/fs": "^2.1.0", @@ -15173,8 +10364,6 @@ "dependencies": { "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -15182,8 +10371,6 @@ }, "glob": { "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -15195,8 +10382,6 @@ }, "minimatch": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -15206,14 +10391,10 @@ }, "cacheable-lookup": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "dev": true }, "cacheable-request": { "version": "10.2.7", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.7.tgz", - "integrity": "sha512-I4SA6mKgDxcxVbSt/UmIkb9Ny8qSkg6ReBHtAAXnZHk7KOSx5g3DTiAOaYzcHCs6oOdHn+bip9T48E6tMvK9hw==", "dev": true, "requires": { "@types/http-cache-semantics": "^4.0.1", @@ -15227,20 +10408,14 @@ }, "callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "camelcase-keys": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -15250,8 +10425,6 @@ }, "chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -15260,38 +10433,26 @@ }, "chardet": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, "chownr": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "3.8.0", "dev": true }, "clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cli-boxes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true }, "cli-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { "restore-cursor": "^3.1.0" @@ -15299,14 +10460,10 @@ }, "cli-spinners": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true }, "cli-table3": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "dev": true, "requires": { "@colors/colors": "1.5.0", @@ -15315,14 +10472,10 @@ }, "cli-width": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, "cliui": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -15332,14 +10485,10 @@ }, "clone": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true }, "clone-deep": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "requires": { "is-plain-object": "^2.0.4", @@ -15349,8 +10498,6 @@ "dependencies": { "is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -15359,18 +10506,11 @@ } }, "cmd-shim": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", - "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } + "version": "6.0.1", + "dev": true }, "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -15378,20 +10518,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "color-support": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, "columnify": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, "requires": { "strip-ansi": "^6.0.1", @@ -15400,8 +10534,6 @@ }, "combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -15409,20 +10541,10 @@ }, "commander": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true - }, - "common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", "dev": true }, "compare-func": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, "requires": { "array-ify": "^1.0.0", @@ -15431,8 +10553,6 @@ "dependencies": { "dot-prop": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { "is-obj": "^2.0.0" @@ -15442,14 +10562,10 @@ }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "concat-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -15460,8 +10576,6 @@ }, "config-chain": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, "requires": { "ini": "^1.3.4", @@ -15470,8 +10584,6 @@ }, "configstore": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", "dev": true, "requires": { "dot-prop": "^6.0.1", @@ -15483,8 +10595,6 @@ "dependencies": { "write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -15497,136 +10607,105 @@ }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, "conventional-changelog-angular": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", - "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", + "version": "6.0.0", "dev": true, "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "compare-func": "^2.0.0" } }, "conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "version": "5.0.1", "dev": true, "requires": { "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", + "conventional-changelog-writer": "^6.0.0", + "conventional-commits-parser": "^4.0.0", + "dateformat": "^3.0.3", + "get-pkg-repo": "^4.2.1", + "git-raw-commits": "^3.0.0", "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", + "git-semver-tags": "^5.0.0", + "normalize-package-data": "^3.0.3", "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" + "read-pkg-up": "^3.0.0" } }, "conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "version": "3.0.0", "dev": true }, "conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "version": "6.0.1", "dev": true, "requires": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", + "conventional-commits-filter": "^3.0.0", + "dateformat": "^3.0.3", "handlebars": "^4.7.7", "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "meow": "^8.1.2", + "semver": "^7.0.0", + "split": "^1.0.1" } }, "conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "version": "3.0.0", "dev": true, "requires": { "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" + "modify-values": "^1.0.1" } }, "conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "version": "4.0.0", "dev": true, "requires": { "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" + "JSONStream": "^1.3.5", + "meow": "^8.1.2", + "split2": "^3.2.2" } }, "conventional-recommended-bump": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", - "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "version": "7.0.1", "dev": true, "requires": { "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.3.4", - "conventional-commits-filter": "^2.0.7", - "conventional-commits-parser": "^3.2.0", - "git-raw-commits": "^2.0.8", - "git-semver-tags": "^4.1.1", - "meow": "^8.0.0", - "q": "^1.5.1" + "conventional-changelog-preset-loader": "^3.0.0", + "conventional-commits-filter": "^3.0.0", + "conventional-commits-parser": "^4.0.0", + "git-raw-commits": "^3.0.0", + "git-semver-tags": "^5.0.0", + "meow": "^8.1.2" } }, "core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "version": "8.2.0", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "path-type": "^4.0.0" + } + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" } }, "cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -15636,8 +10715,6 @@ }, "crypto-random-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, "requires": { "type-fest": "^1.0.1" @@ -15645,34 +10722,20 @@ "dependencies": { "type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true } } }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, "dargs": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, "dateformat": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true }, "debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -15680,14 +10743,10 @@ }, "decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "decamelize-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, "requires": { "decamelize": "^1.1.0", @@ -15696,16 +10755,12 @@ "dependencies": { "map-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true } } }, "decompress-response": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "requires": { "mimic-response": "^3.1.0" @@ -15713,34 +10768,24 @@ "dependencies": { "mimic-response": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true } } }, "dedent": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, "deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "defaults": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" @@ -15748,66 +10793,38 @@ }, "defer-to-connect": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true }, "define-lazy-prop": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, - "del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, "delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, "depd": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "deprecation": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, "detect-indent": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "diff-sequences": { + "version": "29.4.3", "dev": true }, "dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { "path-type": "^4.0.0" @@ -15815,8 +10832,6 @@ }, "doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -15824,8 +10839,6 @@ }, "dot-prop": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dev": true, "requires": { "is-obj": "^2.0.0" @@ -15833,26 +10846,18 @@ }, "dotenv": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true }, "duplexer": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, "eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, "ejs": { "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "requires": { "jake": "^10.8.5" @@ -15860,14 +10865,10 @@ }, "emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "optional": true, "requires": { @@ -15876,8 +10877,6 @@ "dependencies": { "iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "optional": true, "requires": { @@ -15888,8 +10887,6 @@ }, "end-of-stream": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" @@ -15897,8 +10894,6 @@ }, "enquirer": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -15906,26 +10901,18 @@ }, "env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, "envinfo": { "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true }, "err-code": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, "error-ex": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -15933,26 +10920,18 @@ }, "escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-goat": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", - "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "dev": true }, "escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "eslint": { "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", @@ -15996,8 +10975,6 @@ "dependencies": { "eslint-scope": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -16006,36 +10983,26 @@ }, "estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "eslint-config-prettier": { "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, "requires": {} }, "eslint-plugin-simple-import-sort": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", - "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", "dev": true, "requires": {} }, "eslint-visitor-keys": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true }, "espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { "acorn": "^8.9.0", @@ -16045,14 +11012,10 @@ }, "esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -16060,16 +11023,12 @@ "dependencies": { "estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { "estraverse": "^5.2.0" @@ -16077,40 +11036,20 @@ "dependencies": { "estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true }, "eventemitter3": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "execa": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -16126,8 +11065,6 @@ }, "external-editor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -16146,14 +11083,10 @@ }, "fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-glob": { "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -16165,8 +11098,6 @@ "dependencies": { "glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -16176,26 +11107,18 @@ }, "fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fast-memoize": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", "dev": true }, "fastq": { "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -16203,8 +11126,6 @@ }, "figures": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -16212,31 +11133,19 @@ "dependencies": { "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true } } }, "file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" } }, - "file-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", - "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", - "dev": true - }, "filelist": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "requires": { "minimatch": "^5.0.1" @@ -16244,8 +11153,6 @@ "dependencies": { "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -16253,8 +11160,6 @@ }, "minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -16264,8 +11169,6 @@ }, "fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -16273,8 +11176,6 @@ }, "find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { "locate-path": "^6.0.0", @@ -16283,14 +11184,10 @@ }, "flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true }, "flat-cache": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { "flatted": "^3.1.0", @@ -16299,20 +11196,14 @@ }, "flatted": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "follow-redirects": { "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, "foreground-child": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -16321,16 +11212,12 @@ "dependencies": { "signal-exit": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true } } }, "form-data": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "requires": { "asynckit": "^0.4.0", @@ -16340,29 +11227,20 @@ }, "form-data-encoder": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.3.tgz", - "integrity": "sha512-KqU0nnPMgIJcCOFTNJFEA8epcseEaoox4XZffTgy8jlI6pL/5EFyR54NRG7CnCJN0biY7q52DO3MH6/sJ/TKlQ==", "dev": true }, "fp-and-or": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.3.tgz", - "integrity": "sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==", "dev": true }, "fs-constants": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "11.1.1", "dev": true, "requires": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" @@ -16370,8 +11248,6 @@ }, "fs-minipass": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -16379,20 +11255,14 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "gauge": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "requires": { "aproba": "^1.0.3 || ^2.0.0", @@ -16407,14 +11277,10 @@ }, "get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-pkg-repo": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, "requires": { "@hutson/parse-repository-url": "^3.0.0", @@ -16425,8 +11291,6 @@ "dependencies": { "hosted-git-info": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -16434,90 +11298,36 @@ }, "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" } - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } } } }, "get-port": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true }, "get-stdin": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true }, "get-stream": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, "git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "version": "3.0.0", "dev": true, "requires": { "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" + "meow": "^8.1.2", + "split2": "^3.2.2" } }, "git-remote-origin-url": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, "requires": { "gitconfiglocal": "^1.0.0", @@ -16526,34 +11336,20 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true } } }, "git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "version": "5.0.1", "dev": true, "requires": { - "meow": "^8.0.0", - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "meow": "^8.1.2", + "semver": "^7.0.0" } }, "git-up": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", - "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", "dev": true, "requires": { "is-ssh": "^1.4.0", @@ -16562,8 +11358,6 @@ }, "git-url-parse": { "version": "13.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", - "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", "dev": true, "requires": { "git-up": "^7.0.0" @@ -16571,8 +11365,6 @@ }, "gitconfiglocal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, "requires": { "ini": "^1.3.2" @@ -16580,8 +11372,6 @@ }, "glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -16594,8 +11384,6 @@ }, "glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { "is-glob": "^4.0.3" @@ -16603,8 +11391,6 @@ }, "global-dirs": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "dev": true, "requires": { "ini": "2.0.0" @@ -16612,16 +11398,12 @@ "dependencies": { "ini": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true } } }, "globals": { "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -16629,8 +11411,6 @@ }, "globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -16643,8 +11423,6 @@ }, "got": { "version": "12.5.2", - "resolved": "https://registry.npmjs.org/got/-/got-12.5.2.tgz", - "integrity": "sha512-guHGMSEcsA5m1oPRweXUJnug0vuvlkX9wx5hzOka+ZBrBUOJHU0Z1JcNu3QE5IPGnA5aXUsQHdWOD4eJg9/v3A==", "dev": true, "requires": { "@sindresorhus/is": "^5.2.0", @@ -16662,20 +11440,14 @@ }, "graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "handlebars": { "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "requires": { "minimist": "^1.2.5", @@ -16687,14 +11459,10 @@ }, "hard-rejection": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, "has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -16702,26 +11470,18 @@ }, "has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, "has-yarn": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", - "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", "dev": true }, "hosted-git-info": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, "requires": { "lru-cache": "^7.5.1" @@ -16729,14 +11489,10 @@ }, "http-cache-semantics": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "http-proxy-agent": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "requires": { "@tootallnate/once": "2", @@ -16746,8 +11502,6 @@ }, "http2-wrapper": { "version": "2.1.11", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", - "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", "dev": true, "requires": { "quick-lru": "^5.1.1", @@ -16756,16 +11510,12 @@ "dependencies": { "quick-lru": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true } } }, "https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -16774,14 +11524,10 @@ }, "human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "humanize-ms": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "requires": { "ms": "^2.0.0" @@ -16789,8 +11535,6 @@ }, "iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -16798,20 +11542,14 @@ }, "ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, "ignore": { "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "ignore-walk": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, "requires": { "minimatch": "^5.0.1" @@ -16819,8 +11557,6 @@ "dependencies": { "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -16828,8 +11564,6 @@ }, "minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -16839,8 +11573,6 @@ }, "import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -16849,14 +11581,10 @@ }, "import-lazy": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true }, "import-local": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -16865,26 +11593,18 @@ }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "infer-owner": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -16893,58 +11613,39 @@ }, "inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "init-package-json": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", - "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", + "version": "5.0.0", "dev": true, "requires": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", + "npm-package-arg": "^10.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-name": "^5.0.0" }, "dependencies": { - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, "npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "version": "10.1.0", "dev": true, "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-name": "^5.0.0" } } } }, "inquirer": { "version": "8.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -16966,29 +11667,21 @@ }, "ip": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.1", "dev": true, "requires": { - "ci-info": "^2.0.0" + "ci-info": "^3.2.0" } }, "is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "version": "2.12.1", "dev": true, "requires": { "has": "^1.0.3" @@ -16996,26 +11689,18 @@ }, "is-docker": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -17023,8 +11708,6 @@ }, "is-installed-globally": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "requires": { "global-dirs": "^3.0.0", @@ -17033,62 +11716,38 @@ }, "is-interactive": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, "is-lambda": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, "is-npm": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", - "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "dev": true }, "is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-obj": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true }, "is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-plain-obj": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true }, "is-plain-object": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, "is-ssh": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", - "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", "dev": true, "requires": { "protocols": "^2.0.1" @@ -17096,14 +11755,10 @@ }, "is-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, "is-text-path": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, "requires": { "text-extensions": "^1.0.0" @@ -17111,20 +11766,14 @@ }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, "is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { "is-docker": "^2.0.0" @@ -17132,32 +11781,22 @@ }, "is-yarn-global": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.0.tgz", - "integrity": "sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA==", "dev": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, "jackspeak": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", "dev": true, "requires": { "@isaacs/cliui": "^8.0.2", @@ -17165,33 +11804,39 @@ } }, "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "version": "10.8.7", "dev": true, "requires": { "async": "^3.2.3", "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + } + }, + "jest-diff": { + "version": "29.6.1", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" } }, + "jest-get-type": { + "version": "29.4.3", + "dev": true + }, "jju": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, "js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -17199,26 +11844,18 @@ }, "json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "json-parse-better-errors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "json-parse-helpfulerror": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", - "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", "dev": true, "requires": { "jju": "^1.1.0" @@ -17226,44 +11863,26 @@ }, "json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json-stringify-nice": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", - "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", "dev": true }, "json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonc-parser": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, "jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { "graceful-fs": "^4.1.6", @@ -17272,42 +11891,22 @@ }, "jsonlines": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", - "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==", "dev": true }, "jsonparse": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true }, "JSONStream": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" } }, - "just-diff": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", - "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==", - "dev": true - }, - "just-diff-apply": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", - "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", - "dev": true - }, "keyv": { "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "dev": true, "requires": { "json-buffer": "3.0.1" @@ -17315,329 +11914,132 @@ }, "kind-of": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "kleur": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true }, "latest-version": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", - "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dev": true, "requires": { "package-json": "^8.1.0" } }, "lerna": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz", - "integrity": "sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg==", + "version": "7.1.4", "dev": true, "requires": { - "@lerna/child-process": "6.6.2", - "@lerna/create": "6.6.2", - "@lerna/legacy-package-management": "6.6.2", - "@npmcli/arborist": "6.2.3", - "@npmcli/run-script": "4.1.7", - "@nrwl/devkit": ">=15.5.2 < 16", + "@lerna/child-process": "7.1.4", + "@lerna/create": "7.1.4", + "@npmcli/run-script": "6.0.2", + "@nx/devkit": ">=16.5.1 < 17", "@octokit/plugin-enterprise-rest": "6.0.1", - "@octokit/rest": "19.0.3", - "byte-size": "7.0.0", + "@octokit/rest": "19.0.11", + "byte-size": "8.1.1", "chalk": "4.1.0", "clone-deep": "4.0.1", - "cmd-shim": "5.0.0", + "cmd-shim": "6.0.1", "columnify": "1.6.0", - "config-chain": "1.1.12", - "conventional-changelog-angular": "5.0.12", - "conventional-changelog-core": "4.2.4", - "conventional-recommended-bump": "6.1.0", - "cosmiconfig": "7.0.0", + "conventional-changelog-angular": "6.0.0", + "conventional-changelog-core": "5.0.1", + "conventional-recommended-bump": "7.0.1", + "cosmiconfig": "^8.2.0", "dedent": "0.7.0", - "dot-prop": "6.0.1", - "envinfo": "^7.7.4", + "envinfo": "7.8.1", "execa": "5.0.0", - "fs-extra": "9.1.0", + "fs-extra": "^11.1.1", "get-port": "5.1.1", "get-stream": "6.0.0", "git-url-parse": "13.1.0", "glob-parent": "5.1.2", "globby": "11.1.0", - "graceful-fs": "4.2.10", + "graceful-fs": "4.2.11", "has-unicode": "2.0.1", - "import-local": "^3.0.2", - "init-package-json": "3.0.2", + "import-local": "3.1.0", + "ini": "^1.3.8", + "init-package-json": "5.0.0", "inquirer": "^8.2.4", - "is-ci": "2.0.0", + "is-ci": "3.0.1", "is-stream": "2.0.0", - "js-yaml": "^4.1.0", - "libnpmaccess": "^6.0.3", - "libnpmpublish": "7.1.4", + "jest-diff": ">=29.4.3 < 30", + "js-yaml": "4.1.0", + "libnpmaccess": "7.0.2", + "libnpmpublish": "7.3.0", "load-json-file": "6.2.0", + "lodash": "^4.17.21", "make-dir": "3.1.0", "minimatch": "3.0.5", "multimatch": "5.0.0", "node-fetch": "2.6.7", "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "^14.0.3", - "npmlog": "^6.0.2", - "nx": ">=15.5.2 < 16", - "p-map": "4.0.0", - "p-map-series": "2.1.0", - "p-pipe": "3.1.0", - "p-queue": "6.6.2", - "p-reduce": "2.1.0", - "p-waterfall": "2.1.1", - "pacote": "15.1.1", - "pify": "5.0.0", - "read-cmd-shim": "3.0.0", - "read-package-json": "5.0.1", - "resolve-from": "5.0.0", - "rimraf": "^4.4.1", - "semver": "^7.3.8", - "signal-exit": "3.0.7", - "slash": "3.0.0", - "ssri": "9.0.1", - "strong-log-transformer": "2.1.0", - "tar": "6.1.11", - "temp-dir": "1.0.0", - "typescript": "^3 || ^4", - "upath": "^2.0.1", - "uuid": "8.3.2", - "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "4.0.0", - "write-file-atomic": "4.0.1", - "write-pkg": "4.0.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4" - }, - "dependencies": { - "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "cacache": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "dependencies": { - "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - } - } - }, + "npm-packlist": "5.1.1", + "npm-registry-fetch": "^14.0.5", + "npmlog": "^6.0.2", + "nx": ">=16.5.1 < 17", + "p-map": "4.0.0", + "p-map-series": "2.1.0", + "p-pipe": "3.1.0", + "p-queue": "6.6.2", + "p-reduce": "2.1.0", + "p-waterfall": "2.1.1", + "pacote": "^15.2.0", + "pify": "5.0.0", + "read-cmd-shim": "4.0.0", + "read-package-json": "6.0.4", + "resolve-from": "5.0.0", + "rimraf": "^4.4.1", + "semver": "^7.3.8", + "signal-exit": "3.0.7", + "slash": "3.0.0", + "ssri": "^9.0.1", + "strong-log-transformer": "2.1.0", + "tar": "6.1.11", + "temp-dir": "1.0.0", + "typescript": ">=3 < 6", + "upath": "2.0.1", + "uuid": "^9.0.0", + "validate-npm-package-license": "3.0.4", + "validate-npm-package-name": "5.0.0", + "write-file-atomic": "5.0.1", + "write-pkg": "4.0.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4" + }, + "dependencies": { "chalk": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - }, "get-stream": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true }, - "glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, "glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, - "make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "dependencies": { - "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - } - } + "graceful-fs": { + "version": "4.2.11", + "dev": true }, "minimatch": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dev": true, - "requires": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "dependencies": { - "npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dev": true, - "requires": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - } - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - } - } - }, "p-queue": { "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "dev": true, "requires": { "eventemitter3": "^4.0.4", @@ -17646,29 +12048,17 @@ }, "p-timeout": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dev": true, "requires": { "p-finally": "^1.0.0" } }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true - }, "resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "rimraf": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, "requires": { "glob": "^9.2.0" @@ -17676,8 +12066,6 @@ "dependencies": { "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -17685,8 +12073,6 @@ }, "glob": { "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -17697,8 +12083,6 @@ }, "minimatch": { "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -17706,213 +12090,60 @@ }, "minipass": { "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true - } - } - }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - } - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "libnpmaccess": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.3.tgz", - "integrity": "sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==", - "dev": true, - "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - } - } - }, - "libnpmpublish": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.1.4.tgz", - "integrity": "sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg==", - "dev": true, - "requires": { - "ci-info": "^3.6.1", - "normalize-package-data": "^5.0.0", - "npm-package-arg": "^10.1.0", - "npm-registry-fetch": "^14.0.3", - "proc-log": "^3.0.0", - "semver": "^7.3.7", - "sigstore": "^1.4.0", - "ssri": "^10.0.1" - }, - "dependencies": { - "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - } - }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - }, - "glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" + "dev": true + } } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + } + } + }, + "levn": { + "version": "0.4.1", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "libnpmaccess": { + "version": "7.0.2", + "dev": true, + "requires": { + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" + }, + "dependencies": { + "npm-package-arg": { + "version": "10.1.0", "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" } - }, + } + } + }, + "libnpmpublish": { + "version": "7.3.0", + "dev": true, + "requires": { + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", + "semver": "^7.3.7", + "sigstore": "^1.4.0", + "ssri": "^10.0.1" + }, + "dependencies": { "minipass": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true }, - "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, "normalize-package-data": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dev": true, "requires": { "hosted-git-info": "^6.0.0", @@ -17923,8 +12154,6 @@ }, "npm-package-arg": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "requires": { "hosted-git-info": "^6.0.0", @@ -17933,75 +12162,21 @@ "validate-npm-package-name": "^5.0.0" } }, - "npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dev": true, - "requires": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - } - }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true - }, "ssri": { "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "requires": { "minipass": "^5.0.0" } - }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } } } }, "lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "load-json-file": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", - "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", "dev": true, "requires": { "graceful-fs": "^4.1.15", @@ -18012,16 +12187,12 @@ "dependencies": { "type-fest": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true } } }, "locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { "p-locate": "^5.0.0" @@ -18029,26 +12200,18 @@ }, "lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.ismatch": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", "dev": true }, "lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, "log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -18057,37 +12220,27 @@ }, "lowercase-keys": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true }, "lru-cache": { "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", "dev": true }, "make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", "dev": true } } }, "make-fetch-happen": { "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -18110,14 +12263,10 @@ }, "map-obj": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true }, "meow": { "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "requires": { "@types/minimist": "^1.2.0", @@ -18135,8 +12284,6 @@ "dependencies": { "find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -18145,14 +12292,10 @@ }, "hosted-git-info": { "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" @@ -18160,8 +12303,6 @@ }, "p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -18169,8 +12310,6 @@ }, "p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -18178,8 +12317,6 @@ }, "read-pkg": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { "@types/normalize-package-data": "^2.4.0", @@ -18190,8 +12327,6 @@ "dependencies": { "normalize-package-data": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -18202,16 +12337,12 @@ }, "type-fest": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true } } }, "read-pkg-up": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { "find-up": "^4.1.0", @@ -18221,42 +12352,30 @@ "dependencies": { "type-fest": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true } } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", "dev": true }, "type-fest": { "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true } } }, "merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "micromatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { "braces": "^3.0.2", @@ -18265,14 +12384,10 @@ }, "mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { "mime-db": "1.52.0" @@ -18280,26 +12395,18 @@ }, "mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "mimic-response": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "dev": true }, "min-indent": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true }, "minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -18307,14 +12414,10 @@ }, "minimist": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "minimist-options": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, "requires": { "arrify": "^1.0.1", @@ -18324,8 +12427,6 @@ }, "minipass": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -18333,8 +12434,6 @@ }, "minipass-collect": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -18342,8 +12441,6 @@ }, "minipass-fetch": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "requires": { "encoding": "^0.1.13", @@ -18354,8 +12451,6 @@ }, "minipass-flush": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -18363,8 +12458,6 @@ }, "minipass-json-stream": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, "requires": { "jsonparse": "^1.3.1", @@ -18373,8 +12466,6 @@ }, "minipass-pipeline": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -18382,8 +12473,6 @@ }, "minipass-sized": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -18391,8 +12480,6 @@ }, "minizlib": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "requires": { "minipass": "^3.0.0", @@ -18401,37 +12488,18 @@ }, "mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, "modify-values": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true }, "ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "multimatch": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", - "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", "dev": true, "requires": { "@types/minimatch": "^3.0.3", @@ -18443,58 +12511,40 @@ "dependencies": { "@types/minimatch": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, "arrify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true } } }, "mute-stream": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "natural-compare-lite": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, "negotiator": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, "neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "node-addon-api": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true }, "node-fetch": { "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -18502,8 +12552,6 @@ }, "node-gyp": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", - "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", "dev": true, "requires": { "env-paths": "^2.2.0", @@ -18520,8 +12568,6 @@ "dependencies": { "nopt": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "requires": { "abbrev": "^1.0.0" @@ -18531,31 +12577,10 @@ }, "node-gyp-build": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", "dev": true }, - "nopt": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.1.0.tgz", - "integrity": "sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q==", - "dev": true, - "requires": { - "abbrev": "^2.0.0" - }, - "dependencies": { - "abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true - } - } - }, "normalize-package-data": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "requires": { "hosted-git-info": "^4.0.1", @@ -18566,8 +12591,6 @@ "dependencies": { "hosted-git-info": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -18575,8 +12598,6 @@ }, "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -18586,14 +12607,10 @@ }, "normalize-url": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "dev": true }, "npm-bundled": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "dev": true, "requires": { "npm-normalize-package-bin": "^3.0.0" @@ -18601,8 +12618,6 @@ }, "npm-check-updates": { "version": "16.10.16", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.16.tgz", - "integrity": "sha512-d8mNYce/l8o5RHPE5ZUp2P1zj9poI7KWQCh5AsTIP3EhicONEhc63mLQQv4/nkCsMb3wCrikx6YOo4BOwN4+1w==", "dev": true, "requires": { "chalk": "^5.3.0", @@ -18637,85 +12652,19 @@ "update-notifier": "^6.0.2" }, "dependencies": { - "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "requires": { - "which": "^3.0.0" - } - }, - "@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - } - }, "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" } }, - "cacache": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", - "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - } - }, "chalk": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true }, - "fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - }, "glob": { "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", @@ -18727,202 +12676,28 @@ }, "hosted-git-info": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "requires": { "lru-cache": "^7.5.1" } }, - "ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", - "dev": true, - "requires": { - "minimatch": "^9.0.0" - } - }, "ini": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true }, - "make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - } - }, "minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, - "requires": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "dependencies": { - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - } - } - }, - "npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dev": true, - "requires": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - } - } - }, - "npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", - "dev": true, - "requires": { - "ignore-walk": "^6.0.0" - } - }, - "npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dev": true, - "requires": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - } - }, - "pacote": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", - "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", - "dev": true, - "requires": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - } - }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true - }, - "read-package-json": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", - "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", - "dev": true, - "requires": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - } - }, + "minipass": { + "version": "5.0.0", + "dev": true + }, "rimraf": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", "dev": true, "requires": { "glob": "^10.2.5" @@ -18930,8 +12705,6 @@ }, "semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -18939,8 +12712,6 @@ "dependencies": { "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -18948,63 +12719,14 @@ } } }, - "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, - "requires": { - "minipass": "^5.0.0" - } - }, "strip-json-comments": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", - "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", "dev": true - }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, "npm-install-checks": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", - "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", "dev": true, "requires": { "semver": "^7.1.1" @@ -19012,14 +12734,10 @@ }, "npm-normalize-package-bin": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", "dev": true }, "npm-package-arg": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", - "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", "dev": true, "requires": { "hosted-git-info": "^3.0.6", @@ -19029,14 +12747,10 @@ "dependencies": { "builtins": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", "dev": true }, "hosted-git-info": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -19044,8 +12758,6 @@ }, "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -19053,8 +12765,6 @@ }, "validate-npm-package-name": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, "requires": { "builtins": "^1.0.3" @@ -19064,8 +12774,6 @@ }, "npm-packlist": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", "dev": true, "requires": { "glob": "^8.0.1", @@ -19076,8 +12784,6 @@ "dependencies": { "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -19085,8 +12791,6 @@ }, "glob": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -19098,8 +12802,6 @@ }, "minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -19107,8 +12809,6 @@ }, "npm-bundled": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, "requires": { "npm-normalize-package-bin": "^1.0.1" @@ -19116,16 +12816,12 @@ }, "npm-normalize-package-bin": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true } } }, "npm-pick-manifest": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", "dev": true, "requires": { "npm-install-checks": "^6.0.0", @@ -19136,8 +12832,6 @@ "dependencies": { "npm-package-arg": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "requires": { "hosted-git-info": "^6.0.0", @@ -19145,66 +12839,149 @@ "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" } - }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } } } }, "npm-registry-fetch": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz", - "integrity": "sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg==", + "version": "14.0.5", "dev": true, "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "dependencies": { - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "@npmcli/fs": { + "version": "3.1.0", "dev": true, "requires": { - "lru-cache": "^7.5.1" + "semver": "^7.3.5" + } + }, + "brace-expansion": { + "version": "2.0.1", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "17.1.3", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + } + }, + "fs-minipass": { + "version": "3.0.2", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, + "glob": { + "version": "10.3.3", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "make-fetch-happen": { + "version": "11.1.1", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "5.0.0", + "dev": true + }, + "minipass-fetch": { + "version": "3.0.3", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" } }, "npm-package-arg": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", - "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", + "version": "10.1.0", "dev": true, "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-name": "^5.0.0" + } + }, + "ssri": { + "version": "10.0.4", + "dev": true, + "requires": { + "minipass": "^5.0.0" + } + }, + "unique-filename": { + "version": "3.0.0", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" } } } }, "npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { "path-key": "^3.0.0" @@ -19212,8 +12989,6 @@ }, "npmlog": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "requires": { "are-we-there-yet": "^3.0.0", @@ -19223,25 +12998,23 @@ } }, "nx": { - "version": "15.9.4", - "resolved": "https://registry.npmjs.org/nx/-/nx-15.9.4.tgz", - "integrity": "sha512-P1G4t59UvE/lkHyruLeSOB5ZuNyh01IwU0tTUOi8f9s/NbP7+OQ8MYVwDV74JHTr6mQgjlS+n+4Eox8tVm9itA==", - "dev": true, - "requires": { - "@nrwl/cli": "15.9.4", - "@nrwl/nx-darwin-arm64": "15.9.4", - "@nrwl/nx-darwin-x64": "15.9.4", - "@nrwl/nx-linux-arm-gnueabihf": "15.9.4", - "@nrwl/nx-linux-arm64-gnu": "15.9.4", - "@nrwl/nx-linux-arm64-musl": "15.9.4", - "@nrwl/nx-linux-x64-gnu": "15.9.4", - "@nrwl/nx-linux-x64-musl": "15.9.4", - "@nrwl/nx-win32-arm64-msvc": "15.9.4", - "@nrwl/nx-win32-x64-msvc": "15.9.4", - "@nrwl/tao": "15.9.4", + "version": "16.5.3", + "dev": true, + "requires": { + "@nrwl/tao": "16.5.3", + "@nx/nx-darwin-arm64": "16.5.3", + "@nx/nx-darwin-x64": "16.5.3", + "@nx/nx-freebsd-x64": "16.5.3", + "@nx/nx-linux-arm-gnueabihf": "16.5.3", + "@nx/nx-linux-arm64-gnu": "16.5.3", + "@nx/nx-linux-arm64-musl": "16.5.3", + "@nx/nx-linux-x64-gnu": "16.5.3", + "@nx/nx-linux-x64-musl": "16.5.3", + "@nx/nx-win32-arm64-msvc": "16.5.3", + "@nx/nx-win32-x64-msvc": "16.5.3", "@parcel/watcher": "2.0.4", "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "^3.0.0-rc.18", + "@yarnpkg/parsers": "3.0.0-rc.46", "@zkochan/js-yaml": "0.0.6", "axios": "^1.0.0", "chalk": "^4.1.0", @@ -19262,7 +13035,7 @@ "minimatch": "3.0.5", "npm-run-path": "^4.0.1", "open": "^8.4.0", - "semver": "7.3.4", + "semver": "7.5.3", "string-width": "^4.2.3", "strong-log-transformer": "^2.1.0", "tar-stream": "~2.2.0", @@ -19276,8 +13049,6 @@ "dependencies": { "fast-glob": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -19287,21 +13058,8 @@ "micromatch": "^4.0.4" } }, - "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, "glob": { "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -19314,8 +13072,6 @@ }, "glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -19323,41 +13079,17 @@ }, "lines-and-columns": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "minimatch": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "tmp": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "requires": { "rimraf": "^3.0.0" @@ -19365,8 +13097,6 @@ }, "yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { "cliui": "^8.0.1", @@ -19380,8 +13110,6 @@ "dependencies": { "cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", @@ -19393,16 +13121,12 @@ }, "yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true } } }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -19410,8 +13134,6 @@ }, "onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -19419,8 +13141,6 @@ }, "open": { "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -19430,8 +13150,6 @@ }, "optionator": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { "@aashutoshrathi/word-wrap": "^1.2.3", @@ -19444,8 +13162,6 @@ }, "ora": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "requires": { "bl": "^4.1.0", @@ -19461,26 +13177,18 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "p-cancelable": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true }, "p-finally": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true }, "p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { "yocto-queue": "^0.1.0" @@ -19488,8 +13196,6 @@ }, "p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { "p-limit": "^3.0.2" @@ -19497,8 +13203,6 @@ }, "p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { "aggregate-error": "^3.0.0" @@ -19506,20 +13210,14 @@ }, "p-map-series": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", - "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", "dev": true }, "p-pipe": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", "dev": true }, "p-queue": { "version": "7.3.4", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz", - "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==", "dev": true, "requires": { "eventemitter3": "^4.0.7", @@ -19528,26 +13226,18 @@ }, "p-reduce": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true }, "p-timeout": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", "dev": true }, "p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "p-waterfall": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", - "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", "dev": true, "requires": { "p-reduce": "^2.0.0" @@ -19555,8 +13245,6 @@ }, "package-json": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", - "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", "dev": true, "requires": { "got": "^12.1.0", @@ -19566,9 +13254,7 @@ } }, "pacote": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", - "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", + "version": "15.2.0", "dev": true, "requires": { "@npmcli/git": "^4.0.0", @@ -19577,7 +13263,7 @@ "@npmcli/run-script": "^6.0.0", "cacache": "^17.0.0", "fs-minipass": "^3.0.0", - "minipass": "^4.0.0", + "minipass": "^5.0.0", "npm-package-arg": "^10.0.0", "npm-packlist": "^7.0.0", "npm-pick-manifest": "^8.0.0", @@ -19586,55 +13272,27 @@ "promise-retry": "^2.0.1", "read-package-json": "^6.0.0", "read-package-json-fast": "^3.0.0", - "sigstore": "^1.0.0", + "sigstore": "^1.3.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "dependencies": { "@npmcli/fs": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, "requires": { "semver": "^7.3.5" } }, - "@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "requires": { - "which": "^3.0.0" - } - }, - "@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - } - }, "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" } }, "cacache": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", - "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "version": "17.1.3", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", @@ -19649,37 +13307,17 @@ "ssri": "^10.0.0", "tar": "^6.1.11", "unique-filename": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } } }, "fs-minipass": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, "requires": { "minipass": "^5.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } } }, "glob": { "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", @@ -19687,113 +13325,28 @@ "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" - }, - "dependencies": { - "minipass": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", - "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", - "dev": true - } } }, "ignore-walk": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", "dev": true, "requires": { "minimatch": "^9.0.0" } }, - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true - }, - "make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } - } - }, "minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true - }, - "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } - } - }, - "normalize-package-data": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dev": true, - "requires": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - } + "dev": true }, "npm-package-arg": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, "requires": { "hosted-git-info": "^6.0.0", @@ -19804,75 +13357,20 @@ }, "npm-packlist": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, "requires": { "ignore-walk": "^6.0.0" } }, - "npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dev": true, - "requires": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } - } - }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true - }, - "read-package-json": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.3.tgz", - "integrity": "sha512-4QbpReW4kxFgeBQ0vPAqh2y8sXEB3D4t3jsXbJKIhBiF80KT6XRo45reqwtftju5J6ru1ax06A2Gb/wM1qCOEQ==", - "dev": true, - "requires": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - } - }, "ssri": { "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "requires": { "minipass": "^5.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } } }, "unique-filename": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, "requires": { "unique-slug": "^4.0.0" @@ -19880,71 +13378,26 @@ }, "unique-slug": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "requires": { "imurmurhash": "^0.1.4" } - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, "parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" } }, - "parse-conflict-json": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", - "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^3.0.0", - "just-diff": "^6.0.0", - "just-diff-apply": "^5.2.0" - }, - "dependencies": { - "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true - } - } - }, "parse-github-url": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", "dev": true }, "parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -19955,8 +13408,6 @@ }, "parse-path": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", - "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", "dev": true, "requires": { "protocols": "^2.0.0" @@ -19964,8 +13415,6 @@ }, "parse-url": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", - "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", "dev": true, "requires": { "parse-path": "^7.0.0" @@ -19973,32 +13422,22 @@ }, "path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-scurry": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "requires": { "lru-cache": "^9.1.1 || ^10.0.0", @@ -20007,40 +13446,28 @@ "dependencies": { "lru-cache": { "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", "dev": true }, "minipass": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true } } }, "path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, "picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "dev": true }, "pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" @@ -20048,8 +13475,6 @@ "dependencies": { "find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -20058,8 +13483,6 @@ }, "locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" @@ -20067,8 +13490,6 @@ }, "p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -20076,8 +13497,6 @@ }, "p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -20085,121 +13504,55 @@ } } }, - "postcss-selector-parser": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz", - "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, "prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prettier": { "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true }, "pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.6.1", "dev": true, "requires": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true } } }, "proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "version": "3.0.0", "dev": true }, "process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-all-reject-late": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", - "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", - "dev": true - }, - "promise-call-limit": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", - "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==", "dev": true }, "promise-inflight": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "promise-retry": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "requires": { "err-code": "^2.0.2", "retry": "^0.12.0" } }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "dependencies": { - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - } - } - }, "prompts-ncu": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", - "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", "dev": true, "requires": { "kleur": "^4.0.1", @@ -20207,42 +13560,30 @@ } }, "promzard": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", + "version": "1.0.0", "dev": true, "requires": { - "read": "1" + "read": "^2.0.0" } }, "proto-list": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, "protocols": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", - "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", "dev": true }, "proxy-from-env": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, "punycode": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "pupa": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dev": true, "requires": { "escape-goat": "^4.0.0" @@ -20254,28 +13595,16 @@ "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", "dev": true }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true - }, "queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "quick-lru": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, "rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { "deep-extend": "^0.6.0", @@ -20286,16 +13615,12 @@ "dependencies": { "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true } } }, "rc-config-loader": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", - "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", "dev": true, "requires": { "debug": "^4.3.4", @@ -20306,101 +13631,82 @@ }, "react-is": { "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "version": "2.1.0", "dev": true, "requires": { - "mute-stream": "~0.0.4" + "mute-stream": "~1.0.0" + }, + "dependencies": { + "mute-stream": { + "version": "1.0.0", + "dev": true + } } }, "read-cmd-shim": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz", - "integrity": "sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==", + "version": "4.0.0", "dev": true }, "read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "version": "6.0.4", "dev": true, "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "dependencies": { "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" } }, "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "10.3.3", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" } }, - "hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } + "json-parse-even-better-errors": { + "version": "3.0.0", + "dev": true }, "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "9.0.3", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, + "minipass": { + "version": "7.0.2", + "dev": true + }, "normalize-package-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", - "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "version": "5.0.0", "dev": true, "requires": { - "hosted-git-info": "^5.0.0", + "hosted-git-info": "^6.0.0", "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true } } }, "read-package-json-fast": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dev": true, "requires": { "json-parse-even-better-errors": "^3.0.0", @@ -20409,16 +13715,12 @@ "dependencies": { "json-parse-even-better-errors": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true } } }, "read-pkg": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "requires": { "load-json-file": "^4.0.0", @@ -20428,14 +13730,10 @@ "dependencies": { "hosted-git-info": { "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "load-json-file": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -20446,8 +13744,6 @@ }, "normalize-package-data": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -20458,8 +13754,6 @@ }, "parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "requires": { "error-ex": "^1.3.1", @@ -20468,8 +13762,6 @@ }, "path-type": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { "pify": "^3.0.0" @@ -20477,28 +13769,20 @@ }, "pify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", "dev": true }, "strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true } } }, "read-pkg-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, "requires": { "find-up": "^2.0.0", @@ -20507,8 +13791,6 @@ "dependencies": { "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -20516,8 +13798,6 @@ }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -20526,8 +13806,6 @@ }, "p-limit": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -20535,8 +13813,6 @@ }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -20544,22 +13820,16 @@ }, "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true } } }, "read-yaml-file": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", - "integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==", "dev": true, "requires": { "js-yaml": "^4.0.0", @@ -20568,8 +13838,6 @@ }, "readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -20579,8 +13847,6 @@ }, "redent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, "requires": { "indent-string": "^4.0.0", @@ -20589,8 +13855,6 @@ }, "registry-auth-token": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", - "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", "dev": true, "requires": { "@pnpm/npm-conf": "^1.0.4" @@ -20598,8 +13862,6 @@ }, "registry-url": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", - "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, "requires": { "rc": "1.2.8" @@ -20607,26 +13869,18 @@ }, "remote-git-tags": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", - "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", "dev": true }, "require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, "resolve": { "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "requires": { "is-core-module": "^2.11.0", @@ -20636,14 +13890,10 @@ }, "resolve-alpn": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true }, "resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "requires": { "resolve-from": "^5.0.0" @@ -20651,22 +13901,16 @@ "dependencies": { "resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } }, "resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "responselike": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dev": true, "requires": { "lowercase-keys": "^3.0.0" @@ -20674,8 +13918,6 @@ }, "restore-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { "onetime": "^5.1.0", @@ -20684,20 +13926,14 @@ }, "retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true }, "reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, "rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -20705,14 +13941,10 @@ }, "run-async": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true }, "run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { "queue-microtask": "^1.2.2" @@ -20720,8 +13952,6 @@ }, "rxjs": { "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "requires": { "tslib": "^2.1.0" @@ -20729,20 +13959,14 @@ }, "safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.3", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -20750,8 +13974,6 @@ "dependencies": { "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -20761,8 +13983,6 @@ }, "semver-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, "requires": { "semver": "^7.3.5" @@ -20770,20 +13990,14 @@ }, "semver-utils": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", - "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "shallow-clone": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { "kind-of": "^6.0.2" @@ -20791,8 +14005,6 @@ }, "shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { "shebang-regex": "^3.0.0" @@ -20800,20 +14012,14 @@ }, "shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "sigstore": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.4.0.tgz", - "integrity": "sha512-N7TRpSbFjY/TrFDg6yGAQSYBrQ5s6qmPiq4pD6fkv1LoyfMsLG0NwZWG2s5q+uttLHgyVyTa0Rogx2P78rN8kQ==", "dev": true, "requires": { "@sigstore/protobuf-specs": "^0.1.0", @@ -20823,8 +14029,6 @@ "dependencies": { "@npmcli/fs": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, "requires": { "semver": "^7.3.5" @@ -20832,8 +14036,6 @@ }, "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -20841,8 +14043,6 @@ }, "cacache": { "version": "17.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", - "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", @@ -20862,8 +14062,6 @@ }, "fs-minipass": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.1.tgz", - "integrity": "sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw==", "dev": true, "requires": { "minipass": "^4.0.0" @@ -20871,8 +14069,6 @@ }, "glob": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -20884,8 +14080,6 @@ }, "make-fetch-happen": { "version": "11.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.0.3.tgz", - "integrity": "sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -20907,8 +14101,6 @@ }, "minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -20916,14 +14108,10 @@ }, "minipass": { "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", "dev": true }, "minipass-fetch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.1.tgz", - "integrity": "sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==", "dev": true, "requires": { "encoding": "^0.1.13", @@ -20934,8 +14122,6 @@ }, "ssri": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.1.tgz", - "integrity": "sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==", "dev": true, "requires": { "minipass": "^4.0.0" @@ -20943,8 +14129,6 @@ }, "unique-filename": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, "requires": { "unique-slug": "^4.0.0" @@ -20952,8 +14136,6 @@ }, "unique-slug": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -20963,26 +14145,18 @@ }, "sisteransi": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, "slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, "socks": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "requires": { "ip": "^2.0.0", @@ -20991,8 +14165,6 @@ }, "socks-proxy-agent": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "requires": { "agent-base": "^6.0.2", @@ -21002,8 +14174,6 @@ }, "sort-keys": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", "dev": true, "requires": { "is-plain-obj": "^1.0.0" @@ -21011,14 +14181,10 @@ }, "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -21027,8 +14193,6 @@ }, "spawn-please": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.1.tgz", - "integrity": "sha512-W+cFbZR2q2mMTfjz5ZGvhBAiX+e/zczFCNlbS9mxiSdYswBXwUuBUT+a0urH+xZZa8f/bs0mXHyZsZHR9hKogA==", "dev": true, "requires": { "cross-spawn": "^7.0.3" @@ -21036,8 +14200,6 @@ }, "spdx-correct": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -21046,14 +14208,10 @@ }, "spdx-exceptions": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -21062,14 +14220,10 @@ }, "spdx-license-ids": { "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "split": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" @@ -21077,8 +14231,6 @@ }, "split2": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, "requires": { "readable-stream": "^3.0.0" @@ -21086,14 +14238,10 @@ }, "sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "ssri": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, "requires": { "minipass": "^3.1.1" @@ -21101,8 +14249,6 @@ }, "string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { "safe-buffer": "~5.2.0" @@ -21110,8 +14256,6 @@ }, "string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -21121,8 +14265,6 @@ }, "string-width-cjs": { "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -21132,8 +14274,6 @@ }, "strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { "ansi-regex": "^5.0.1" @@ -21141,8 +14281,6 @@ }, "strip-ansi-cjs": { "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { "ansi-regex": "^5.0.1" @@ -21150,20 +14288,14 @@ }, "strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, "strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "strip-indent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "requires": { "min-indent": "^1.0.0" @@ -21171,14 +14303,10 @@ }, "strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "strong-log-transformer": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", - "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", "dev": true, "requires": { "duplexer": "^0.1.1", @@ -21188,8 +14316,6 @@ }, "supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -21197,31 +14323,26 @@ }, "supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, "syncpack": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-10.7.3.tgz", - "integrity": "sha512-nhsiOHR1zebKRn4eZn5zUjbSJm4D8GgqiraY45MsaOClPbhVJny/jWhWrjSOuwwupdwv8EYH+GA9sqCEn4DCnA==", + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-10.6.1.tgz", + "integrity": "sha512-mnBo6PYffon2TKxzJmOy3V7srv1GRX9wdmi+FHiqkOw0r2mQMgu1nmM/covETqZzB2px//cSaYpcPW+rniT/0Q==", "dev": true, "requires": { - "@effect/data": "0.12.9", - "@effect/io": "0.27.0", - "@effect/match": "0.24.5", - "@effect/schema": "0.21.0", + "@effect/data": "0.12.5", + "@effect/io": "0.26.0", + "@effect/match": "0.24.4", "chalk": "4.1.2", "commander": "11.0.0", "cosmiconfig": "8.2.0", "enquirer": "2.3.6", "fs-extra": "11.1.1", "globby": "11.1.0", - "minimatch": "9.0.2", - "ora": "5.4.1", - "prompts": "2.4.2", + "minimatch": "9.0.1", "read-yaml-file": "2.1.0", - "semver": "7.5.3", + "semver": "7.5.2", "tightrope": "0.1.0", "ts-toolbelt": "9.6.0" }, @@ -21241,29 +14362,6 @@ "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "dev": true }, - "cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", - "dev": true, - "requires": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - } - }, - "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -21274,18 +14372,18 @@ } }, "minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -21295,8 +14393,6 @@ }, "tar": { "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -21309,8 +14405,6 @@ }, "tar-stream": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "requires": { "bl": "^4.0.3", @@ -21322,89 +14416,60 @@ }, "temp-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true }, - "tempy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.0.tgz", - "integrity": "sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w==", - "dev": true, - "requires": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "dependencies": { - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true - }, - "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - } - } - }, "text-extensions": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true }, "text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "version": "2.0.5", "dev": true, "requires": { - "readable-stream": "3" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "tightrope": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tightrope/-/tightrope-0.1.0.tgz", - "integrity": "sha512-HHHNYdCAIYwl1jOslQBT455zQpdeSo8/A346xpIb/uuqhSg+tCvYNsP5f11QW+z9VZ3vSX8YIfzTApjjuGH63w==", "dev": true }, "tmp": { "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { "os-tmpdir": "~1.0.2" @@ -21412,8 +14477,6 @@ }, "to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" @@ -21421,26 +14484,14 @@ }, "tr46": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "treeverse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", - "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==", "dev": true }, "trim-newlines": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, "ts-api-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", - "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", "dev": true, "requires": {} }, @@ -21452,8 +14503,6 @@ }, "tsconfig-paths": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "requires": { "json5": "^2.2.2", @@ -21463,22 +14512,16 @@ "dependencies": { "strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true } } }, "tslib": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, "tuf-js": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.4.tgz", - "integrity": "sha512-Lw2JRM3HTYhEtQJM2Th3aNCPbnXirtWMl065BawwmM2pX6XStH/ZO9e8T2hh0zk/HUa+1i6j+Lv6eDitKTau6A==", "dev": true, "requires": { "@tufjs/models": "1.0.3", @@ -21487,8 +14530,6 @@ "dependencies": { "@npmcli/fs": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, "requires": { "semver": "^7.3.5" @@ -21496,8 +14537,6 @@ }, "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -21505,8 +14544,6 @@ }, "cacache": { "version": "17.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.7.tgz", - "integrity": "sha512-2GdqQs7hl20V50cB+JEuGeR6YtcNsf1Y9+SP8YXjmGlZz4hM5Ds9s6mKo7e27r6sfF/6MhN4DKRrGldidJJWow==", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", @@ -21525,8 +14562,6 @@ }, "fs-minipass": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, "requires": { "minipass": "^5.0.0" @@ -21534,8 +14569,6 @@ }, "glob": { "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "requires": { "foreground-child": "^3.1.0", @@ -21547,8 +14580,6 @@ }, "make-fetch-happen": { "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -21570,8 +14601,6 @@ }, "minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -21579,14 +14608,10 @@ }, "minipass": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true }, "minipass-fetch": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, "requires": { "encoding": "^0.1.13", @@ -21597,8 +14622,6 @@ }, "ssri": { "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, "requires": { "minipass": "^5.0.0" @@ -21606,8 +14629,6 @@ }, "unique-filename": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, "requires": { "unique-slug": "^4.0.0" @@ -21615,8 +14636,6 @@ }, "unique-slug": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -21626,8 +14645,6 @@ }, "type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -21635,20 +14652,14 @@ }, "type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "typedarray": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { "is-typedarray": "^1.0.0" @@ -21656,21 +14667,15 @@ }, "typescript": { "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true }, "uglify-js": { "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, "optional": true }, "unique-filename": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, "requires": { "unique-slug": "^3.0.0" @@ -21678,8 +14683,6 @@ }, "unique-slug": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -21687,8 +14690,6 @@ }, "unique-string": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "requires": { "crypto-random-string": "^4.0.0" @@ -21696,32 +14697,22 @@ }, "universal-user-agent": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", "dev": true }, "universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "untildify": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, "upath": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", - "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", "dev": true }, "update-notifier": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", - "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", "dev": true, "requires": { "boxen": "^7.0.0", @@ -21742,31 +14733,12 @@ "dependencies": { "chalk": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", - "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", - "dev": true - }, - "ci-info": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", "dev": true - }, - "is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "requires": { - "ci-info": "^3.2.0" - } } } }, "uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -21774,26 +14746,18 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.0", "dev": true }, "v8-compile-cache": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -21801,24 +14765,14 @@ } }, "validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "version": "5.0.0", "dev": true, "requires": { "builtins": "^5.0.0" } }, - "walk-up-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", - "dev": true - }, "wcwidth": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "requires": { "defaults": "^1.0.3" @@ -21826,14 +14780,10 @@ }, "webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "whatwg-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -21842,8 +14792,6 @@ }, "which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -21851,8 +14799,6 @@ }, "wide-align": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "requires": { "string-width": "^1.0.2 || 2 || 3 || 4" @@ -21860,8 +14806,6 @@ }, "widest-line": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, "requires": { "string-width": "^5.0.1" @@ -21869,20 +14813,14 @@ "dependencies": { "ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, "emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, "string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "requires": { "eastasianwidth": "^0.2.0", @@ -21892,8 +14830,6 @@ }, "strip-ansi": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "requires": { "ansi-regex": "^6.0.1" @@ -21909,14 +14845,10 @@ }, "wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -21926,8 +14858,6 @@ }, "wrap-ansi-cjs": { "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -21937,24 +14867,24 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "version": "5.0.1", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.0.2", + "dev": true + } } }, "write-json-file": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", - "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", "dev": true, "requires": { "detect-indent": "^5.0.0", @@ -21967,14 +14897,10 @@ "dependencies": { "detect-indent": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", "dev": true }, "make-dir": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { "pify": "^4.0.1", @@ -21983,20 +14909,14 @@ }, "pify": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", "dev": true }, "write-file-atomic": { "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -22008,8 +14928,6 @@ }, "write-pkg": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", - "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", "dev": true, "requires": { "sort-keys": "^2.0.0", @@ -22019,46 +14937,28 @@ "dependencies": { "type-fest": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", - "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", "dev": true } } }, "xdg-basedir": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true }, "xtend": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, "yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -22072,14 +14972,10 @@ }, "yargs-parser": { "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true }, "yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index 4780b9cd9..cc7cbe793 100644 --- a/package.json +++ b/package.json @@ -2,22 +2,21 @@ "name": "pyright-root", "private": true, "scripts": { - "postinstall": "npm run bootstrap", - "bootstrap": "node ./build/skipBootstrap.js || lerna bootstrap", + "postinstall": "node ./build/skipBootstrap.js || npm run install:others", "clean": "lerna run --no-bail --stream clean", - "install:all": "npm install && lerna exec --no-bail npm install", + "install:all": "npm install", + "install:others": "cross-env SKIP_LERNA_BOOTSTRAP=yes lerna exec --no-bail npm install", "update:all": "node ./build/updateDeps.js", "build:extension:dev": "cd packages/vscode-pyright && npm run webpack", "build:cli:dev": "cd packages/pyright && npm run webpack", "watch:extension": "cd packages/vscode-pyright && npm run webpack-dev", - "check": "npm run check:syncpack && npm run check:eslint && npm run check:prettier && npm run check:lockindent", + "check": "npm run check:syncpack && npm run check:eslint && npm run check:prettier", "check:syncpack": "syncpack list-mismatches", "fix:syncpack": "syncpack fix-mismatches --indent \" \" && npm run install:all", "check:eslint": "eslint .", "fix:eslint": "eslint --fix .", "check:prettier": "prettier -c .", - "fix:prettier": "prettier --write .", - "check:lockindent": "node ./build/checkLockIndent.js" + "fix:prettier": "prettier --write ." }, "devDependencies": { "@types/glob": "^7.2.0", @@ -25,17 +24,19 @@ "@types/yargs": "^16.0.5", "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^6.1.0", + "cross-env": "^7.0.3", "detect-indent": "^6.1.0", "eslint": "^8.45.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-simple-import-sort": "^10.0.0", "glob": "^7.2.3", "jsonc-parser": "^3.2.0", - "lerna": "^6.6.2", + "lerna": "^7.1.4", + "nx": "^16.5.3", "npm-check-updates": "^16.10.16", "p-queue": "^7.3.4", "prettier": "2.8.8", - "syncpack": "^10.7.3", + "syncpack": "~10.6.1", "typescript": "~4.4.4", "word-wrap": "1.2.4", "yargs": "^16.2.0" diff --git a/packages/pyright-internal/jest.config.js b/packages/pyright-internal/jest.config.js index 54e4e6f18..22177fee9 100644 --- a/packages/pyright-internal/jest.config.js +++ b/packages/pyright-internal/jest.config.js @@ -8,19 +8,19 @@ module.exports = { testEnvironment: 'node', roots: ['/src/tests'], transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], - globals: { - 'ts-jest': { - tsconfig: { - target: 'es6', + '^.+\\.tsx?$': [ + 'ts-jest', + { + tsconfig: { + target: 'es6', - // Needed because jest calls tsc in a way that doesn't - // inline const enums. - preserveConstEnums: false, + // Needed because jest calls tsc in a way that doesn't + // inline const enums. + preserveConstEnums: false, + }, }, - }, + ], }, + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], }; diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index a36aaac3d..1083909ac 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -2128,19 +2128,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -6561,12 +6548,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", diff --git a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts index 550eebe75..6da09c278 100644 --- a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts +++ b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts @@ -18,7 +18,7 @@ import { Range } from '../common/textRange'; import { AnalysisCompleteCallback, analyzeProgram } from './analysis'; import { CacheManager } from './cacheManager'; import { ImportResolver } from './importResolver'; -import { MaxAnalysisTime, OpenFileOptions, Program, SourceFileFactory } from './program'; +import { MaxAnalysisTime, OpenFileOptions, Program, ISourceFileFactory } from './program'; export enum InvalidatedReason { Reanalyzed, @@ -42,7 +42,7 @@ export class BackgroundAnalysisProgram { private readonly _maxAnalysisTime?: MaxAnalysisTime, private readonly _disableChecker?: boolean, cacheManager?: CacheManager, - sourceFileFactory?: SourceFileFactory + sourceFileFactory?: ISourceFileFactory ) { this._program = new Program( this.importResolver, diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index 4d2e36c54..c95808354 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -114,45 +114,49 @@ interface UpdateImportInfo { export type PreCheckCallback = (parseResults: ParseResults, evaluator: TypeEvaluator) => void; -export type SourceFileFactory = ( - fs: FileSystem, - filePath: string, - moduleName: string, - isThirdPartyImport: boolean, - isThirdPartyPyTypedPresent: boolean, - editMode: boolean, - console?: ConsoleInterface, - logTracker?: LogTracker, - realFilePath?: string, - ipythonMode?: IPythonMode -) => SourceFile; - -function DefaultSourceFileFactory( - fs: FileSystem, - filePath: string, - moduleName: string, - isThirdPartyImport: boolean, - isThirdPartyPyTypedPresent: boolean, - editMode: boolean, - console?: ConsoleInterface, - logTracker?: LogTracker, - realFilePath?: string, - ipythonMode?: IPythonMode -) { - return new SourceFile( - fs, - filePath, - moduleName, - isThirdPartyImport, - isThirdPartyPyTypedPresent, - editMode, - console, - logTracker, - realFilePath, - ipythonMode - ); +export interface ISourceFileFactory { + createSourceFile( + fs: FileSystem, + filePath: string, + moduleName: string, + isThirdPartyImport: boolean, + isThirdPartyPyTypedPresent: boolean, + editMode: boolean, + console?: ConsoleInterface, + logTracker?: LogTracker, + realFilePath?: string, + ipythonMode?: IPythonMode + ): SourceFile; } +const DefaultSourceFileFactory: ISourceFileFactory = { + createSourceFile( + fs: FileSystem, + filePath: string, + moduleName: string, + isThirdPartyImport: boolean, + isThirdPartyPyTypedPresent: boolean, + editMode: boolean, + console?: ConsoleInterface, + logTracker?: LogTracker, + realFilePath?: string, + ipythonMode?: IPythonMode + ) { + return new SourceFile( + fs, + filePath, + moduleName, + isThirdPartyImport, + isThirdPartyPyTypedPresent, + editMode, + console, + logTracker, + realFilePath, + ipythonMode + ); + }, +}; + export interface OpenFileOptions { isTracked: boolean; ipythonMode: IPythonMode; @@ -185,14 +189,14 @@ export class Program { private _parsedFileCount = 0; private _preCheckCallback: PreCheckCallback | undefined; private _isEditMode = false; - private _sourceFileFactory: SourceFileFactory; + private _sourceFileFactory: ISourceFileFactory; constructor( initialImportResolver: ImportResolver, initialConfigOptions: ConfigOptions, console?: ConsoleInterface, logTracker?: LogTracker, - sourceFileFactory?: SourceFileFactory, + sourceFileFactory?: ISourceFileFactory, private _disableChecker?: boolean, cacheManager?: CacheManager, id?: string @@ -375,7 +379,7 @@ export class Program { return sourceFileInfo.sourceFile; } - const sourceFile = this._sourceFileFactory( + const sourceFile = this._sourceFileFactory.createSourceFile( this.fileSystem, filePath, importName, @@ -406,7 +410,7 @@ export class Program { let sourceFileInfo = this.getSourceFileInfo(filePath); if (!sourceFileInfo) { const importName = this._getImportNameForFile(filePath); - const sourceFile = this._sourceFileFactory( + const sourceFile = this._sourceFileFactory.createSourceFile( this.fileSystem, filePath, importName, @@ -1079,11 +1083,14 @@ export class Program { for (let i = 0; i < this._sourceFileList.length; ) { const fileInfo = this._sourceFileList[i]; if (!this._isFileNeeded(fileInfo)) { - fileDiagnostics.push({ - filePath: fileInfo.sourceFile.getFilePath(), - version: fileInfo.sourceFile.getClientVersion(), - diagnostics: [], - }); + // Clear only if there are any errors for this file. + if (fileInfo.diagnosticsVersion !== undefined) { + fileDiagnostics.push({ + filePath: fileInfo.sourceFile.getFilePath(), + version: fileInfo.sourceFile.getClientVersion(), + diagnostics: [], + }); + } fileInfo.sourceFile.prepareForClose(); this._removeSourceFileFromListAndMap(fileInfo.sourceFile.getFilePath(), i); @@ -1104,11 +1111,14 @@ export class Program { if (!this._isFileNeeded(importedFile)) { const indexToRemove = this._sourceFileList.findIndex((fi) => fi === importedFile); if (indexToRemove >= 0 && indexToRemove < i) { - fileDiagnostics.push({ - filePath: importedFile.sourceFile.getFilePath(), - version: importedFile.sourceFile.getClientVersion(), - diagnostics: [], - }); + // Clear if there are any errors for this import. + if (importedFile.diagnosticsVersion !== undefined) { + fileDiagnostics.push({ + filePath: importedFile.sourceFile.getFilePath(), + version: importedFile.sourceFile.getClientVersion(), + diagnostics: [], + }); + } importedFile.sourceFile.prepareForClose(); this._removeSourceFileFromListAndMap(importedFile.sourceFile.getFilePath(), indexToRemove); @@ -1588,7 +1598,7 @@ export class Program { private _createInterimFileInfo(filePath: string) { const importName = this._getImportNameForFile(filePath); - const sourceFile = this._sourceFileFactory( + const sourceFile = this._sourceFileFactory.createSourceFile( this.fileSystem, filePath, importName, @@ -1894,11 +1904,7 @@ export class Program { return false; } - private _checkTypes( - fileToCheck: SourceFileInfo, - token: CancellationToken, - chainedByList?: (SourceFileInfo | undefined)[] - ) { + private _checkTypes(fileToCheck: SourceFileInfo, token: CancellationToken, chainedByList?: SourceFileInfo[]) { return this._logTracker.log(`analyzing: ${fileToCheck.sourceFile.getFilePath()}`, (logState) => { // If the file isn't needed because it was eliminated from the // transitive closure or deleted, skip the file rather than wasting @@ -1982,7 +1988,7 @@ export class Program { private _checkDependentFiles( fileToCheck: SourceFileInfo, - chainedByList: (SourceFileInfo | undefined)[] | undefined, + chainedByList: SourceFileInfo[] | undefined, token: CancellationToken ) { if (fileToCheck.sourceFile.getIPythonMode() !== IPythonMode.CellDocs) { @@ -2011,14 +2017,7 @@ export class Program { const handle = this._cacheManager.pauseTracking(); try { for (let i = chainedByList.length - 1; i >= startIndex; i--) { - const file = chainedByList[i]; - if (!file) { - continue; - } - - if (!this._checkTypes(file, token, chainedByList)) { - chainedByList[i] = undefined; - } + this._checkTypes(chainedByList[i], token, chainedByList); } } finally { handle.dispose(); @@ -2029,8 +2028,13 @@ export class Program { for (let i = startIndex; i < chainedByList.length; i++) { const file = chainedByList[i]; const parseResults = file?.sourceFile.getParseResults(); - if (file && parseResults) { - assert(!file.sourceFile.isBindingRequired()); + if (!parseResults) { + continue; + } + + // We might not have the file info if binding failed for whatever reasons. + const fileInfo = AnalyzerNodeInfo.getFileInfo(parseResults.parseTree); + if (fileInfo && fileInfo.accessedSymbolSet) { dependentFiles.push(parseResults); } } diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index cb233f6ae..a12088bd3 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -549,7 +549,7 @@ export class SourceFile { return false; } - const diagSink = new DiagnosticSink(); + const diagSink = this.createDiagnosticSink(); let fileContents = this.getOpenFileContents(); if (fileContents === undefined) { try { @@ -669,7 +669,7 @@ export class SourceFile { this._writableData.builtinsImport = undefined; this._writableData.ipythonDisplayImport = undefined; - const diagSink = new DiagnosticSink(); + const diagSink = this.createDiagnosticSink(); diagSink.addError( Localizer.Diagnostic.internalParseError().format({ file: this.getFilePath(), message }), getEmptyRange() @@ -743,7 +743,7 @@ export class SourceFile { Localizer.Diagnostic.internalBindError().format({ file: this.getFilePath(), message }) ); - const diagSink = new DiagnosticSink(); + const diagSink = this.createDiagnosticSink(); diagSink.addError( Localizer.Diagnostic.internalBindError().format({ file: this.getFilePath(), message }), getEmptyRange() @@ -805,7 +805,7 @@ export class SourceFile { this._console.error( Localizer.Diagnostic.internalTypeCheckingError().format({ file: this.getFilePath(), message }) ); - const diagSink = new DiagnosticSink(); + const diagSink = this.createDiagnosticSink(); diagSink.addError( Localizer.Diagnostic.internalTypeCheckingError().format({ file: this.getFilePath(), message }), getEmptyRange() @@ -837,6 +837,14 @@ export class SourceFile { return new Parser(); } + protected createDiagnosticSink(): DiagnosticSink { + return new DiagnosticSink(); + } + + protected createTextRangeDiagnosticSink(lines: TextRangeCollection): TextRangeDiagnosticSink { + return new TextRangeDiagnosticSink(lines); + } + // Computes an updated set of accumulated diagnostics for the file // based on the partial diagnostics from various analysis stages. private _recomputeDiagnostics(configOptions: ConfigOptions) { @@ -1186,7 +1194,9 @@ export class SourceFile { futureImports: Set ) { assert(this._writableData.parseResults !== undefined, 'Parse results not available'); - const analysisDiagnostics = new TextRangeDiagnosticSink(this._writableData.parseResults!.tokenizerOutput.lines); + const analysisDiagnostics = this.createTextRangeDiagnosticSink( + this._writableData.parseResults!.tokenizerOutput.lines + ); const fileInfo: AnalyzerFileInfo = { importLookup, diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index 892f607a3..9131139ff 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -11,7 +11,7 @@ import { MessageChannel, MessagePort, Worker, parentPort, threadId, workerData } import { AnalysisCompleteCallback, AnalysisResults, analyzeProgram, nullCallback } from './analyzer/analysis'; import { ImportResolver } from './analyzer/importResolver'; -import { OpenFileOptions, Program, SourceFileFactory } from './analyzer/program'; +import { OpenFileOptions, Program, ISourceFileFactory } from './analyzer/program'; import { BackgroundThreadBase, InitializationData, @@ -264,7 +264,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase protected importResolver: ImportResolver; protected logTracker: LogTracker; - protected constructor(fileSystem?: FileSystem, sourceFileFactory?: SourceFileFactory) { + protected constructor(fileSystem?: FileSystem, sourceFileFactory?: ISourceFileFactory) { super(workerData as InitializationData, fileSystem); // Stash the base directory into a global variable. @@ -457,7 +457,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase // Report files to analyze first. const filesLeftToAnalyze = this.program.getFilesToAnalyzeCount(); - this._onAnalysisCompletion(port, { + this.onAnalysisCompletion(port, { diagnostics: [], filesInProgram: this.program.getFileCount(), filesRequiringAnalysis: filesLeftToAnalyze, @@ -477,7 +477,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase this.program, maxTime, this._configOptions, - (result) => this._onAnalysisCompletion(port, result), + (result) => this.onAnalysisCompletion(port, result), this.getConsole(), token ); @@ -598,6 +598,10 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase port.postMessage({ requestType: 'analysisDone', data: cancellationId }); } + protected onAnalysisCompletion(port: MessagePort, result: AnalysisResults) { + port.postMessage({ requestType: 'analysisResult', data: result }); + } + private _onMessageWrapper(msg: AnalysisRequest) { try { return this.onMessage(msg); @@ -619,7 +623,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase private _reportDiagnostics(diagnostics: FileDiagnostics[], filesLeftToAnalyze: number, elapsedTime: number) { if (parentPort) { - this._onAnalysisCompletion(parentPort, { + this.onAnalysisCompletion(parentPort, { diagnostics, filesInProgram: this.program.getFileCount(), filesRequiringAnalysis: filesLeftToAnalyze, @@ -631,10 +635,6 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase } } - private _onAnalysisCompletion(port: MessagePort, result: AnalysisResults) { - port.postMessage({ requestType: 'analysisResult', data: result }); - } - private _analysisPaused(port: MessagePort, cancellationId: string) { port.postMessage({ requestType: 'analysisPaused', data: cancellationId }); } diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 27b1ee910..19ae9c566 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -2748,8 +2748,8 @@ export class CompletionProvider { return true; } - // If an argument then show parens for classes. - if (node.parent?.nodeType === ParseNodeType.Argument) { + // If an argument then show parens for classes if not a class argument. + if (node.parent?.nodeType === ParseNodeType.Argument && node.parent.parent?.nodeType !== ParseNodeType.Class) { return true; } diff --git a/packages/pyright-internal/src/localization/package.nls.cs.json b/packages/pyright-internal/src/localization/package.nls.cs.json index e25969465..17943062c 100644 --- a/packages/pyright-internal/src/localization/package.nls.cs.json +++ b/packages/pyright-internal/src/localization/package.nls.cs.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "První argument typeAliasType musí být řetězcový literál představující název aliasu typu", "typeAliasTypeNameMismatch": "Název aliasu typu se musí shodovat s názvem proměnné, ke které je přiřazená", "typeAliasTypeParamInvalid": "Seznam parametrů typu musí být řazená kolekce členů obsahující pouze typeVar, TypeVarTuple nebo ParamSpec", - "typeAnnotationCall": "Neplatná poznámka typu: Výraz volání není povolený.", - "typeAnnotationVariable": "Neplatná poznámka typu: Proměnná není povolená, pokud se nejedná o alias typu", + "typeAnnotationCall": "Výraz volání není ve výrazu typu povolený", + "typeAnnotationVariable": "Proměnná není ve výrazu typu povolená", "typeArgListExpected": "Očekával se parametr ParamSpec, tři tečky nebo seznam typů", "typeArgListNotAllowed": "Výraz seznamu není pro tento argument typu povolený", "typeArgsExpectingNone": "Pro třídu {name} se neočekávaly žádné argumenty typu", @@ -691,9 +691,9 @@ "typeParamSpec": "Typ {type} není kompatibilní s parametrem ParamSpec {name}", "typeUnsupported": "Typ {type} není podporován", "typeVarDefaultOutOfScope": "Proměnná typu {name} není v oboru", - "typeVarIsContravariant": "TypeVar {name} je kontravariantní", - "typeVarIsCovariant": "TypeVar {name} je kovariantní", - "typeVarIsInvariant": "TypeVar {name} je invariantní", + "typeVarIsContravariant": "Parametr typu „{name}“ je kontravariantní, ale „{sourceType}“ není nadtyp „{destType}“.", + "typeVarIsCovariant": "Parametr typu „{name}“ je kovariantní, ale „{sourceType}“ není podtyp „{destType}“.", + "typeVarIsInvariant": "Parametr typu „{name}“ je invariantní, ale „{sourceType}“ není stejný jako „{destType}“.", "typeVarNotAllowed": "TypeVar nebo obecný typ s argumenty typu není povolený", "typeVarTupleRequiresKnownLength": "Typ TypeVarTuple nemůže být vázaný na řazenou kolekci členů neznámé délky", "typeVarUnsolvableRemedy": "Zadejte přetížení, které určuje návratový typ, pokud argument není zadán", diff --git a/packages/pyright-internal/src/localization/package.nls.de.json b/packages/pyright-internal/src/localization/package.nls.de.json index 606b8e43c..f71f47e71 100644 --- a/packages/pyright-internal/src/localization/package.nls.de.json +++ b/packages/pyright-internal/src/localization/package.nls.de.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "Das erste Argument für TypeAliasType muss ein Zeichenfolgenliteral sein, das den Namen des Typalias darstellt.", "typeAliasTypeNameMismatch": "Der Name des Typalias muss mit dem Namen der Variablen übereinstimmen, der er zugewiesen ist.", "typeAliasTypeParamInvalid": "Die Typparameterliste muss ein Tupel sein, das nur TypeVar, TypeVarTuple oder ParamSpec enthält.", - "typeAnnotationCall": "Unzulässige Typanmerkung: Aufrufausdruck nicht zulässig", - "typeAnnotationVariable": "Unzulässige Typanmerkung: Die Variable ist nur zulässig, wenn es sich um einen Typalias handelt.", + "typeAnnotationCall": "Der Aufrufausdruck ist im Typausdruck nicht zulässig", + "typeAnnotationVariable": "Variable im Typausdruck nicht zulässig", "typeArgListExpected": "ParamSpec, Ellipse oder Liste der Typen erwartet", "typeArgListNotAllowed": "Der Listenausdruck ist für dieses Typargument nicht zulässig.", "typeArgsExpectingNone": "Für die Klasse \"{name}\" werden keine Typargumente erwartet.", @@ -691,9 +691,9 @@ "typeParamSpec": "Typ \"{type}\" ist nicht mit ParamSpec \"{name}\" kompatibel.", "typeUnsupported": "Typ \"{type}\" wird nicht unterstützt.", "typeVarDefaultOutOfScope": "Die Typvariable \"{name}\" befindet sich nicht im Bereich.", - "typeVarIsContravariant": "TypeVar \"{name}\" ist \"contravariant\".", - "typeVarIsCovariant": "TypeVar \"{name}\" ist covariant", - "typeVarIsInvariant": "TypeVar \"{name}\" ist invariant", + "typeVarIsContravariant": "Der Typparameter \"{name}\" ist kontravariant, aber \"{sourceType}\" ist kein Supertyp von \"{destType}\"", + "typeVarIsCovariant": "Der Typparameter \"{name}\" ist kovariant, aber \"{sourceType}\" ist kein Untertyp von \"{destType}\"", + "typeVarIsInvariant": "Der Typparameter \"{name}\" ist invariant, \"{sourceType}\" ist jedoch nicht identisch mit \"{destType}\"", "typeVarNotAllowed": "TypeVar oder generischer Typ mit Typargumenten sind nicht zulässig.", "typeVarTupleRequiresKnownLength": "TypeVarTuple kann nicht an ein Tupel unbekannter Länge gebunden werden.", "typeVarUnsolvableRemedy": "Geben Sie eine Überladung an, die den Rückgabetyp angibt, wenn das Argument nicht angegeben ist.", diff --git a/packages/pyright-internal/src/localization/package.nls.es.json b/packages/pyright-internal/src/localization/package.nls.es.json index 93d3257ce..19dc93aae 100644 --- a/packages/pyright-internal/src/localization/package.nls.es.json +++ b/packages/pyright-internal/src/localization/package.nls.es.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "El primer argumento de TypeAliasType debe ser un literal de cadena que represente el nombre del alias de tipo", "typeAliasTypeNameMismatch": "El nombre del alias de tipo debe coincidir con el nombre de la variable a la que se asigna", "typeAliasTypeParamInvalid": "La lista de parámetros de tipo debe ser una tupla que contenga solo TypeVar, TypeVarTuple o ParamSpec.", - "typeAnnotationCall": "Anotación de tipo no válida: no se permite la expresión de llamada", - "typeAnnotationVariable": "Anotación de tipo ilegal: variable no permitida a menos que sea un alias de tipo", + "typeAnnotationCall": "No se permite la expresión de llamada en la expresión de tipo", + "typeAnnotationVariable": "Variable no permitida en la expresión de tipo", "typeArgListExpected": "ParamSpec esperado, elipsis o lista de tipos", "typeArgListNotAllowed": "Expresión de lista no permitida para este argumento de tipo", "typeArgsExpectingNone": "No se esperaban argumentos de tipo para la clase \"{name}\"", @@ -691,9 +691,9 @@ "typeParamSpec": "El tipo \"{type}\" no es compatible con ParamSpec \"{name}\"", "typeUnsupported": "El tipo \"{type}\" no es compatible", "typeVarDefaultOutOfScope": "La variable de tipo \"{name} \" no está en el ámbito de aplicación", - "typeVarIsContravariant": "TypeVar \"{name}\" es contravariante", - "typeVarIsCovariant": "TypeVar \"{name}\" es covariante", - "typeVarIsInvariant": "TypeVar \"{name}\" es invariante", + "typeVarIsContravariant": "El parámetro de tipo \"{name}\" es contravariante, pero \"{sourceType}\" no es un supertipo de \"{destType}\"", + "typeVarIsCovariant": "El parámetro de tipo \"{name}\" es covariante, pero \"{sourceType}\" no es un subtipo de \"{destType}\"", + "typeVarIsInvariant": "El parámetro de tipo \"{name}\" es invariable, pero \"{sourceType}\" no es el mismo que \"{destType}\"", "typeVarNotAllowed": "TypeVar o tipo genérico con argumentos de tipo no permitidos", "typeVarTupleRequiresKnownLength": "TypeVarTuple no se puede enlazar a una tupla de longitud desconocida", "typeVarUnsolvableRemedy": "Proporciona una sobrecarga que especifica el tipo de retorno cuando no se proporciona el argumento", diff --git a/packages/pyright-internal/src/localization/package.nls.fr.json b/packages/pyright-internal/src/localization/package.nls.fr.json index 361e5f737..eb87c1726 100644 --- a/packages/pyright-internal/src/localization/package.nls.fr.json +++ b/packages/pyright-internal/src/localization/package.nls.fr.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "Le premier argument de TypeAliasType doit être un littéral de chaîne représentant le nom de l'alias de type", "typeAliasTypeNameMismatch": "Le nom de l’alias de type doit correspondre au nom de la variable à laquelle il est affecté", "typeAliasTypeParamInvalid": "La liste de paramètres de type doit être un tuple contenant uniquement TypeVar, TypeVarTuple ou ParamSpec", - "typeAnnotationCall": "Annotation de type illégale : expression d'appel non autorisée", - "typeAnnotationVariable": "Annotation de type non conforme : variable non autorisée, sauf s’il s’agit d’un alias de type", + "typeAnnotationCall": "Expression d'appel non autorisée dans l'expression de type", + "typeAnnotationVariable": "Variable non autorisée dans l'expression de type", "typeArgListExpected": "ParamSpec, ellipse ou liste de types attendue", "typeArgListNotAllowed": "Expression de liste non autorisée pour cet argument de type", "typeArgsExpectingNone": "Aucun argument de type attendu pour la classe « {name} »", @@ -691,9 +691,9 @@ "typeParamSpec": "Le type « {type} » n’est pas compatible avec ParamSpec « {name} »", "typeUnsupported": "Le type « {type} » n’est pas pris en charge", "typeVarDefaultOutOfScope": "La variable de type « {name} » n’est pas dans l’étendue", - "typeVarIsContravariant": "TypeVar « {name} » est contravariant", - "typeVarIsCovariant": "TypeVar « {name} » est covariant", - "typeVarIsInvariant": "TypeVar « {name} » est invariant", + "typeVarIsContravariant": "Le paramètre de type \"{name}\" est contravariant, mais \"{sourceType}\" n'est pas un supertype de \"{destType}\"", + "typeVarIsCovariant": "Le paramètre de type \"{name}\" est covariant, mais \"{sourceType}\" n'est pas un sous-type de \"{destType}\"", + "typeVarIsInvariant": "Le paramètre de type \"{name}\" est invariant, mais \"{sourceType}\" n'est pas le même que \"{destType}\"", "typeVarNotAllowed": "TypeVar ou type générique avec des arguments de type non autorisés", "typeVarTupleRequiresKnownLength": "TypeVarTuple ne peut pas être lié à un tuple de longueur inconnue", "typeVarUnsolvableRemedy": "Fournir une surcharge qui spécifie le type de retour lorsque l’argument n’est pas fourni", diff --git a/packages/pyright-internal/src/localization/package.nls.it.json b/packages/pyright-internal/src/localization/package.nls.it.json index 4144609e2..193cb426d 100644 --- a/packages/pyright-internal/src/localization/package.nls.it.json +++ b/packages/pyright-internal/src/localization/package.nls.it.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "Il primo argomento di TypeAliasType deve essere un valore letterale stringa che rappresenta il nome dell'alias di tipo", "typeAliasTypeNameMismatch": "Il nome dell'alias di tipo deve corrispondere al nome della variabile a cui è assegnato", "typeAliasTypeParamInvalid": "L'elenco dei parametri del tipo deve essere una tupla contenente solo TypeVar, TypeVarTuple o ParamSpec.", - "typeAnnotationCall": "Annotazione di tipo non valida: espressione di chiamata non consentita", - "typeAnnotationVariable": "Annotazione di tipo non valida: variabile non consentita a meno che non sia un alias di tipo", + "typeAnnotationCall": "Espressione di chiamata non consentita nell'espressione di tipo", + "typeAnnotationVariable": "Variabile non consentita nell'espressione di tipo", "typeArgListExpected": "Previsto ParamSpec, puntini di sospensione o elenco di tipi", "typeArgListNotAllowed": "Espressione di elenco non consentita per questo argomento tipo", "typeArgsExpectingNone": "Non sono previsti argomenti di tipo per la classe \"{name}\"", @@ -691,9 +691,9 @@ "typeParamSpec": "Il tipo \"{type}\" non è compatibile con il \"{name}\" ParamSpec", "typeUnsupported": "Il tipo \"{type}\" non è supportato", "typeVarDefaultOutOfScope": "La variabile di tipo \"{name}\" non è nell'ambito", - "typeVarIsContravariant": "Il \"{name}\" TypeVar è controvariante", - "typeVarIsCovariant": "Il \"{name}\" TypeVar è invariante", - "typeVarIsInvariant": "Il \"{name}\" TypeVar è invariante", + "typeVarIsContravariant": "Il parametro di tipo \"{name}\" è controvariante, ma \"{sourceType}\" non è un supertipo di \"{destType}\"", + "typeVarIsCovariant": "Il parametro di tipo \"{name}\" è covariante, ma \"{sourceType}\" non è un sottotipo di \"{destType}\"", + "typeVarIsInvariant": "Il parametro di tipo \"{name}\" è invariante, ma \"{sourceType}\" non è uguale a \"{destType}\"", "typeVarNotAllowed": "TypeVar o tipo generico con argomenti tipo non consentiti", "typeVarTupleRequiresKnownLength": "Non è possibile associare TypeVarTuple a una tupla di lunghezza sconosciuta", "typeVarUnsolvableRemedy": "Specificare un overload che specifica il tipo restituito quando l'argomento non viene fornito", diff --git a/packages/pyright-internal/src/localization/package.nls.ja.json b/packages/pyright-internal/src/localization/package.nls.ja.json index 48b06f79f..2c11f665c 100644 --- a/packages/pyright-internal/src/localization/package.nls.ja.json +++ b/packages/pyright-internal/src/localization/package.nls.ja.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "TypeAliasType の最初の引数は、型エイリアスの名前を表す文字列リテラルである必要があります", "typeAliasTypeNameMismatch": "型エイリアスの名前は、それが割り当てられている変数の名前と一致する必要があります", "typeAliasTypeParamInvalid": "型パラメーター リストは、TypeVar、TypeVarTuple、または ParamSpec のみを含むタプルである必要があります", - "typeAnnotationCall": "無効な型注釈: 呼び出し式は許可されていません", - "typeAnnotationVariable": "無効な型注釈: 変数は型エイリアスでない限り許可されません", + "typeAnnotationCall": "型式では呼び出し式を使用できません", + "typeAnnotationVariable": "型式では変数を使用できません", "typeArgListExpected": "ParamSpec、省略記号、または型の一覧が必要です", "typeArgListNotAllowed": "この型引数にはリスト式を使用できません", "typeArgsExpectingNone": "クラス \"{name}\" に型引数が必要ありません", @@ -691,9 +691,9 @@ "typeParamSpec": "型 \"{type}\" は ParamSpec \"{name}\" と互換性がありません", "typeUnsupported": "型 \"{type}\" はサポートされていません", "typeVarDefaultOutOfScope": "型変数 \"{name}\" はスコープ内にありません", - "typeVarIsContravariant": "TypeVar \"{name}\" は反変です", - "typeVarIsCovariant": "TypeVar \"{name}\" は共変です", - "typeVarIsInvariant": "TypeVar \"{name}\" は不変です", + "typeVarIsContravariant": "型パラメーター \"{name}\" は反変ですが、\"{sourceType}\" は \"{destType}\" のスーパータイプではありません", + "typeVarIsCovariant": "型パラメーター \"{name}\" は共変ですが、\"{sourceType}\" は \"{destType}\" のサブタイプではありません", + "typeVarIsInvariant": "型パラメーター \"{name}\" は不変ですが、\"{sourceType}\" は \"{destType}\" と同じではありません", "typeVarNotAllowed": "型引数を持つ TypeVar またはジェネリック型は使用できません", "typeVarTupleRequiresKnownLength": "TypeVarTuple を不明な長さのタプルにバインドすることはできません", "typeVarUnsolvableRemedy": "引数が指定されていない場合に戻り値の型を指定するオーバーロードを指定します", diff --git a/packages/pyright-internal/src/localization/package.nls.ko.json b/packages/pyright-internal/src/localization/package.nls.ko.json index 4d640cc0d..634f64466 100644 --- a/packages/pyright-internal/src/localization/package.nls.ko.json +++ b/packages/pyright-internal/src/localization/package.nls.ko.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "TypeAliasType의 첫 번째 인수는 형식 별칭의 이름을 나타내는 문자열 리터럴이어야 합니다.", "typeAliasTypeNameMismatch": "형식 별칭의 이름은 할당된 변수의 이름과 일치해야 합니다.", "typeAliasTypeParamInvalid": "형식 매개 변수 목록은 TypeVar, TypeVarTuple 또는 ParamSpec만 포함하는 튜플이어야 합니다.", - "typeAnnotationCall": "형식 주석이 잘못되었습니다. 호출 식이 허용되지 않습니다.", - "typeAnnotationVariable": "잘못된 형식 주석: 형식 별칭이 아니면 변수를 사용할 수 없습니다.", + "typeAnnotationCall": "형식 식에는 호출 식을 사용할 수 없습니다.", + "typeAnnotationVariable": "형식 식에는 변수를 사용할 수 없습니다.", "typeArgListExpected": "ParamSpec, 줄임표 또는 형식 목록이 필요합니다.", "typeArgListNotAllowed": "이 형식 인수에는 목록 식을 사용할 수 없습니다.", "typeArgsExpectingNone": "클래스 \"{name}\"에 형식 인수가 필요하지 않습니다.", @@ -691,9 +691,9 @@ "typeParamSpec": "\"{type}\" 형식이 ParamSpec \"{name}\"과(와) 호환되지 않습니다.", "typeUnsupported": "\"{type}\" 형식은 지원되지 않습니다.", "typeVarDefaultOutOfScope": "형식 변수 \"{name}\"이(가) 범위에 없습니다.", - "typeVarIsContravariant": "TypeVar \"{name}\"은(는) 반공변(contravariant)입니다.", - "typeVarIsCovariant": "TypeVar \"{name}\"이(가) 공변(covariant)입니다.", - "typeVarIsInvariant": "TypeVar \"{name}\"이(가) 고정되어 있습니다.", + "typeVarIsContravariant": "\"{name}\" 형식 매개 변수는 반공변형식 매개 변수)이지만 \"{sourceType}\"은(는) \"{destType}\"의 상위 형식이 아닙니다.", + "typeVarIsCovariant": "\"{name}\" 형식 매개 변수는 공변(covariant)이지만 \"{sourceType}\"은(는) \"{destType}\"의 하위 형식이 아닙니다.", + "typeVarIsInvariant": "\"{name}\" 형식 매개 변수는 고정이지만 \"{sourceType}\"은(는) \"{destType}\"와 같지 않습니다.", "typeVarNotAllowed": "형식 인수가 있는 TypeVar 또는 제네릭 형식은 허용되지 않습니다.", "typeVarTupleRequiresKnownLength": "TypeVarTuple을 알 수 없는 길이의 튜플에 바인딩할 수 없습니다.", "typeVarUnsolvableRemedy": "인수가 제공되지 않을 때 반환 형식을 지정하는 오버로드를 제공합니다.", diff --git a/packages/pyright-internal/src/localization/package.nls.pl.json b/packages/pyright-internal/src/localization/package.nls.pl.json index 03bf1c9d0..c109d4912 100644 --- a/packages/pyright-internal/src/localization/package.nls.pl.json +++ b/packages/pyright-internal/src/localization/package.nls.pl.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "Pierwszy argument dla typu typeAliasType musi być literałem ciągu reprezentującym nazwę aliasu typu", "typeAliasTypeNameMismatch": "Nazwa aliasu typu musi być zgodna z nazwą zmiennej, do której jest przypisana", "typeAliasTypeParamInvalid": "Lista parametrów typu musi być krotką zawierającą tylko parametry TypeVar, TypeVarTuple lub ParamSpec", - "typeAnnotationCall": "Niedozwolona adnotacja typu: wyrażenie wywołania jest niedozwolone", - "typeAnnotationVariable": "Adnotacja typu niedozwolonego: zmienna niedozwolona, chyba że jest aliasem typu", + "typeAnnotationCall": "Wyrażenie wywołania jest niedozwolone w wyrażeniu typu", + "typeAnnotationVariable": "Zmienna niedozwolona w wyrażeniu typu", "typeArgListExpected": "Oczekiwano parametru ParamSpec, wielokropka lub listy typów", "typeArgListNotAllowed": "Wyrażenie listy jest niedozwolone dla tego argumentu typu", "typeArgsExpectingNone": "Oczekiwano braku argumentów typu dla klasy „{name}”", @@ -691,9 +691,9 @@ "typeParamSpec": "Typ „{type}” jest niezgodny ze specyfikacją ParamSpec „{name}”", "typeUnsupported": "Typ „{type}” nie jest obsługiwany", "typeVarDefaultOutOfScope": "Zmienna typu „{name}” nie wchodzi w zakres", - "typeVarIsContravariant": "Typ TypeVar „{name}” jest kontrawariantny", - "typeVarIsCovariant": "Typ TypeVar „{name}” jest kowariantny", - "typeVarIsInvariant": "Typ TypeVar „{name}” jest niezmienny", + "typeVarIsContravariant": "Parametr typu „{name}” jest kontrawariantny, ale „{sourceType}” nie jest nadtypem „{destType}”", + "typeVarIsCovariant": "Parametr typu „{name}” jest kowariantny, ale „{sourceType}” nie jest podtypem „{destType}”", + "typeVarIsInvariant": "Parametr typu „{name}” jest niezmienny, ale „{sourceType}” nie jest taki sam jak „{destType}”", "typeVarNotAllowed": "Typ TypeVar lub typ ogólny z argumentami typu są niedozwolone", "typeVarTupleRequiresKnownLength": "Nie można powiązać parametru TypeVarTuple z krotką o nieznanej długości", "typeVarUnsolvableRemedy": "Podaj przeciążenie, które określa zwracany typ, gdy nie podano argumentu", 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 6330f1836..e18844b4a 100644 --- a/packages/pyright-internal/src/localization/package.nls.pt-br.json +++ b/packages/pyright-internal/src/localization/package.nls.pt-br.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "O primeiro argumento para TypeAliasType deve ser um literal de cadeia de caracteres que representa o nome do alias de tipo", "typeAliasTypeNameMismatch": "O nome do alias de tipo deve corresponder ao nome da variável à qual ela está atribuída", "typeAliasTypeParamInvalid": "A lista de parâmetros de tipo deve ser uma tupla contendo apenas TypeVar, TypeVarTuple ou ParamSpec", - "typeAnnotationCall": "Anotação de tipo ilegal: expressão de chamada não permitida", - "typeAnnotationVariable": "Anotação de tipo ilegal: variável não permitida, a menos que seja um alias de tipo", + "typeAnnotationCall": "Expressão de chamada não permitida na expressão de tipo", + "typeAnnotationVariable": "Variável não permitida na expressão de tipo", "typeArgListExpected": "ParamSpec, reticências ou lista de tipos esperados", "typeArgListNotAllowed": "Expressão de lista não permitida para este argumento de tipo", "typeArgsExpectingNone": "Nenhum argumento de tipo era esperado para a classe \"{name}\"", @@ -691,9 +691,9 @@ "typeParamSpec": "O tipo \"{type}\" é incompatível com ParamSpec \"{name}\"", "typeUnsupported": "O tipo \"{type}\" é incompatível", "typeVarDefaultOutOfScope": "A variável de tipo \"{name}\" não está no escopo", - "typeVarIsContravariant": "TypeVar \"{name}\" é contravariante", - "typeVarIsCovariant": "TypeVar \"{name}\" é covariante", - "typeVarIsInvariant": "TypeVar \"{name}\" é invariável", + "typeVarIsContravariant": "O parâmetro de tipo \"{name}\" é contravariante, mas \"{sourceType}\" não é um supertipo de \"{destType}\"", + "typeVarIsCovariant": "O parâmetro de tipo \"{name}\" é covariante, mas \"{sourceType}\" não é um subtipo de \"{destType}\"", + "typeVarIsInvariant": "O parâmetro de tipo \"{name}\" é invariável, mas \"{sourceType}\" não é o mesmo que \"{destType}\"", "typeVarNotAllowed": "TypeVar ou tipo genérico com argumentos de tipo não permitidos", "typeVarTupleRequiresKnownLength": "TypeVarTuple não pode ser associado a uma tupla de comprimento desconhecido", "typeVarUnsolvableRemedy": "Forneça uma sobrecarga que especifica o tipo de retorno quando o argumento não é fornecido", 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 5ed233b3d..93218f106 100644 --- a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json +++ b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "[dUUf1][นั้Fïrst ærgµmëñt tø TÿpëÆlïæsTÿpë mµst þë æ strïñg lïtëræl rëprësëñtïñg thë ñæmë øf thë tÿpë ælïæsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", "typeAliasTypeNameMismatch": "[jW1bQ][นั้Ñæmë øf tÿpë ælïæs mµst mætçh thë ñæmë øf thë værïæþlë tø whïçh ït ïs æssïgñëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", "typeAliasTypeParamInvalid": "[RdHRE][นั้Tÿpë pæræmëtër lïst mµst þë æ tµplë çøñtæïñïñg øñlÿ TÿpëVær, TÿpëVærTµplë, ør Pæræm§pëçẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", - "typeAnnotationCall": "[7pNts][นั้Ïllëgæl tÿpë æññøtætïøñ: çæll ëxprëssïøñ ñøt ælløwëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", - "typeAnnotationVariable": "[GeXWQ][นั้Ïllëgæl tÿpë æññøtætïøñ: værïæþlë ñøt ælløwëð µñlëss ït ïs æ tÿpë ælïæsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", + "typeAnnotationCall": "[7pNts][นั้Çæll ëxprëssïøñ ñøt ælløwëð ïñ tÿpë ëxprëssïøñẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "typeAnnotationVariable": "[GeXWQ][นั้Værïæþlë ñøt ælløwëð ïñ tÿpë ëxprëssïøñẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", "typeArgListExpected": "[2efoA][นั้Ëxpëçtëð Pæræm§pëç, ëllïpsïs, ør lïst øf tÿpësẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "typeArgListNotAllowed": "[oV7JF][นั้£ïst ëxprëssïøñ ñøt ælløwëð før thïs tÿpë ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", "typeArgsExpectingNone": "[faycH][นั้Ëxpëçtëð ñø tÿpë ærgµmëñts før çlæss \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", @@ -691,9 +691,9 @@ "typeParamSpec": "[m23b5][นั้Tÿpë \"{tÿpë}\" ïs ïñçømpætïþlë wïth Pæræm§pëç \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "typeUnsupported": "[Dx3Cx][นั้Tÿpë \"{tÿpë}\" ïs µñsµppørtëðẤğ倪İЂҰक्र्तिृนั้ढूँ]", "typeVarDefaultOutOfScope": "[05ALy][นั้Tÿpë værïæþlë \"{ñæmë}\" ïs ñøt ïñ sçøpëẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", - "typeVarIsContravariant": "[kup2Y][นั้TÿpëVær \"{ñæmë}\" ïs çøñtræværïæñtẤğ倪İЂҰक्र्तिृนั้ढूँ]", - "typeVarIsCovariant": "[EeRng][นั้TÿpëVær \"{ñæmë}\" ïs çøværïæñtẤğ倪İЂҰक्र्तिृนั้ढूँ]", - "typeVarIsInvariant": "[WLZaN][นั้TÿpëVær \"{ñæmë}\" ïs ïñværïæñtẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "typeVarIsContravariant": "[kup2Y][นั้Tÿpë pæræmëtër \"{ñæmë}\" ïs çøñtræværïæñt, þµt \"{søµrçëTÿpë}\" ïs ñøt æ sµpërtÿpë øf \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "typeVarIsCovariant": "[EeRng][นั้Tÿpë pæræmëtër \"{ñæmë}\" ïs çøværïæñt, þµt \"{søµrçëTÿpë}\" ïs ñøt æ sµþtÿpë øf \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeVarIsInvariant": "[WLZaN][นั้Tÿpë pæræmëtër \"{ñæmë}\" ïs ïñværïæñt, þµt \"{søµrçëTÿpë}\" ïs ñøt thë sæmë æs \"{ðëstTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "typeVarNotAllowed": "[37OGF][นั้TÿpëVær ør gëñërïç tÿpë wïth tÿpë ærgµmëñts ñøt ælløwëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "typeVarTupleRequiresKnownLength": "[GGttd][นั้TÿpëVærTµplë çæññøt þë þøµñð tø æ tµplë øf µñkñøwñ lëñgthẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", "typeVarUnsolvableRemedy": "[PaRa7][นั้Prøvïðë æñ øvërløæð thæt spëçïfïës thë rëtµrñ tÿpë whëñ thë ærgµmëñt ïs ñøt sµpplïëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index d1f02d1a6..c2a23b5c6 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "Первый аргумент TypeAliasType должен быть строковым литералом, представляющим имя псевдонима типа", "typeAliasTypeNameMismatch": "Имя псевдонима типа должно соответствовать имени переменной, которой оно назначено", "typeAliasTypeParamInvalid": "Список параметров типа должен быть кортежем, содержащим только TypeVar, TypeVarTuple или ParamSpec", - "typeAnnotationCall": "Недопустимая заметка с типом: выражение вызова не разрешено", - "typeAnnotationVariable": "Недопустимая заметка типа: допустима только переменная, которая является псевдонимом типа", + "typeAnnotationCall": "Выражение вызова не разрешено в выражении типа", + "typeAnnotationVariable": "Переменная не разрешена в выражении типа", "typeArgListExpected": "Ожидается ParamSpec, многоточие или список типов", "typeArgListNotAllowed": "Выражение списка не разрешено для аргумента этого типа", "typeArgsExpectingNone": "Для класса \"{name}\" не ожидается аргументов типа", @@ -691,9 +691,9 @@ "typeParamSpec": "Тип \"{type}\" несовместим с ParamSpec \"{name}\"", "typeUnsupported": "Тип \"{type}\" не поддерживается", "typeVarDefaultOutOfScope": "Переменная типа \"{name}\" лежит за пределами области", - "typeVarIsContravariant": "TypeVar \"{name}\" является контравариантным", - "typeVarIsCovariant": "TypeVar \"{name}\" является ковариантным", - "typeVarIsInvariant": "TypeVar \"{name}\" является инвариантным", + "typeVarIsContravariant": "Параметр типа \"{name}\" является контравариантным, но \"{sourceType}\" не является супертипом \"{destType}\"", + "typeVarIsCovariant": "Параметр типа \"{name}\" является ковариантным, но \"{sourceType}\" не является подтипом \"{destType}\"", + "typeVarIsInvariant": "Параметр типа \"{name}\" является инвариантным, но \"{sourceType}\" не совпадает с \"{destType}\"", "typeVarNotAllowed": "TypeVar или универсальный тип с аргументами типа не разрешены", "typeVarTupleRequiresKnownLength": "TypeVarTuple не может граничить с кортежем неизвестной длины", "typeVarUnsolvableRemedy": "Укажите перегрузку, которая указывает тип возвращаемого значения, если аргумент не передается", diff --git a/packages/pyright-internal/src/localization/package.nls.tr.json b/packages/pyright-internal/src/localization/package.nls.tr.json index e031f888a..590666557 100644 --- a/packages/pyright-internal/src/localization/package.nls.tr.json +++ b/packages/pyright-internal/src/localization/package.nls.tr.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "TypeAliasType için ilk bağımsız değişken, tür diğer adının adını temsil eden bir sabit değerli dize olmalıdır", "typeAliasTypeNameMismatch": "Tür diğer adının atandığı değişkenin adıyla eşleşmesi gerekiyor", "typeAliasTypeParamInvalid": "Tür parametresi listesi yalnızca TypeVar, TypeVarTuple veya ParamSpec içeren bir demet olmalıdır", - "typeAnnotationCall": "Geçersiz tür ek açıklaması: çağrı ifadesine izin verilmiyor", - "typeAnnotationVariable": "Geçersiz tür ek açıklaması: tür diğer adı olmadığı sürece değişkene izin verilmez", + "typeAnnotationCall": "Tür ifadesinde çağrı ifadesine izin verilmiyor", + "typeAnnotationVariable": "Tür ifadesinde değişkene izin verilmiyor", "typeArgListExpected": "ParamSpec, üç nokta veya tür listesi bekleniyordu", "typeArgListNotAllowed": "Bu tür bağımsız değişkeni için liste ifadesine izin verilmiyor", "typeArgsExpectingNone": "\"{name}\" sınıfı için tür bağımsız değişkeni beklenmiyordu", @@ -691,9 +691,9 @@ "typeParamSpec": "\"{type}\" türü \"{name}\" ParamSpec ile uyumlu değil", "typeUnsupported": "\"{type}\" türü desteklenmiyor", "typeVarDefaultOutOfScope": "\"{name}\" tür değişkeni kapsamda değil", - "typeVarIsContravariant": "\"{name}\" adlı TypeVar değişken karşıtı", - "typeVarIsCovariant": "TypeVar \"{name}\" birlikte değişen", - "typeVarIsInvariant": "TypeVar \"{name}\" sabit", + "typeVarIsContravariant": "\"{name}\" tür parametresi bir karşıt değişken ancak \"{sourceType}\", \"{destType}\" öğesinin bir üst türü değil", + "typeVarIsCovariant": "\"{name}\" tür parametresi bir eşdeğişken ancak \"{sourceType}\", \"{destType}\" öğesinin bir alt türü değil", + "typeVarIsInvariant": "\"{name}\" tür parametresi bir değişmez değer ancak \"{sourceType}\", \"{destType}\" ile aynı değil", "typeVarNotAllowed": "Tür bağımsız değişkenlerine sahip TypeVar veya genel türe izin verilmiyor", "typeVarTupleRequiresKnownLength": "TypeVarTuple, uzunluğu bilinmeyen bir demete bağlanamaz", "typeVarUnsolvableRemedy": "Bağımsız değişken sağlanmamışken dönüş türünü belirten bir aşırı yükleme belirtin", 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 d24b70b7a..45df9ab6c 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-cn.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-cn.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "TypeAliasType 的第一个参数必须是表示类型别名名称的字符串文本", "typeAliasTypeNameMismatch": "类型别名的名称必须与分配到的变量的名称匹配", "typeAliasTypeParamInvalid": "类型参数列表必须是仅包含 TypeVar、TypeVarTuple 或 ParamSpec 的元组", - "typeAnnotationCall": "非法类型批注: 不允许调用表达式", - "typeAnnotationVariable": "非法类型批注:不允许变量,除非它是类型别名", + "typeAnnotationCall": "类型表达式中不允许使用调用表达式", + "typeAnnotationVariable": "类型表达式中不允许使用变量", "typeArgListExpected": "应为 ParamSpec、省略号或类型列表", "typeArgListNotAllowed": "不允许此类型参数使用列表表达式", "typeArgsExpectingNone": "类“{name}”不应有类型参数", @@ -691,9 +691,9 @@ "typeParamSpec": "类型“{type}”与 ParamSpec“{name}”不兼容", "typeUnsupported": "类型“{type}”不受支持", "typeVarDefaultOutOfScope": "类型变量“{name}”不在范围内", - "typeVarIsContravariant": "TypeVar“{name}”为逆变", - "typeVarIsCovariant": "TypeVar“{name}”是协变", - "typeVarIsInvariant": "TypeVar“{name}”是固定的", + "typeVarIsContravariant": "类型参数 \"{name}\" 是逆变的,但 \"{sourceType}\" 不是 \"{destType}\" 的超类型", + "typeVarIsCovariant": "类型参数 \"{name}\" 是协变的,但 \"{sourceType}\" 不是 \"{destType}\" 的子类型", + "typeVarIsInvariant": "类型参数 \"{name}\" 是固定的,但 \"{sourceType}\" 与 \"{destType}\" 不同", "typeVarNotAllowed": "不允许使用类型参数的 TypeVar 或泛型类型", "typeVarTupleRequiresKnownLength": "TypeVarTuple 不能绑定到长度未知的元组", "typeVarUnsolvableRemedy": "提供一个重载,该重载指定未提供参数时的返回类型", 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 78d15a3e9..e07b078a1 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-tw.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-tw.json @@ -437,8 +437,8 @@ "typeAliasTypeNameArg": "TypeAliasType 的第一個引數必須是代表型別別名名稱的字串常值", "typeAliasTypeNameMismatch": "類型別名的名稱必須與指派它的變數名稱相符", "typeAliasTypeParamInvalid": "型別參數清單必須是只包含 TypeVar、TypeVarTuple 或 ParamSpec 的元組", - "typeAnnotationCall": "不合法的型別註釋: 不允許呼叫運算式", - "typeAnnotationVariable": "不合法的類型註釋: 不允許變數,除非它是類型別名", + "typeAnnotationCall": "型別運算式中不允許呼叫運算式", + "typeAnnotationVariable": "型別運算式中不允許變數", "typeArgListExpected": "預期為 ParamSpec、省略符號或類型清單", "typeArgListNotAllowed": "此型別引數不允許清單運算式", "typeArgsExpectingNone": "預期類別 \"{name}\" 沒有類型引數", @@ -691,9 +691,9 @@ "typeParamSpec": "類型 \"{type}\" 與 ParamSpec \"{name}\" 不相容", "typeUnsupported": "類型 \"{type}\" 不受支援", "typeVarDefaultOutOfScope": "類型變數 \"{name}\" 不在範圍內", - "typeVarIsContravariant": "TypeVar \"{name}\" 為逆變數", - "typeVarIsCovariant": "TypeVar \"{name}\" 為共變數", - "typeVarIsInvariant": "TypeVar \"{name}\" 為不變數", + "typeVarIsContravariant": "型別參數 \"{name}\" 具有反變性,但 \"{sourceType}\" 不是 \"{destType}\" 的超型別", + "typeVarIsCovariant": "型別參數 \"{name}\" 具有共變性,但 \"{sourceType}\" 不是 \"{destType}\" 的子型別", + "typeVarIsInvariant": "型別參數 \"{name}\" 具有不變性,但 \"{sourceType}\" 與 \"{destType}\" 不同", "typeVarNotAllowed": "不允許 TypeVar 或具有型別引數的一般型別", "typeVarTupleRequiresKnownLength": "TypeVarTuple 無法繫結至長度不明的元組", "typeVarUnsolvableRemedy": "提供多載,其指定未提供引數時的傳回類型", diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 017808e63..9aa6af991 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -13,7 +13,6 @@ "pyright-langserver": "langserver.index.js" }, "devDependencies": { - "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", "copy-webpack-plugin": "^11.0.0", "esbuild-loader": "^3.0.1", @@ -39,342 +38,6 @@ "node": ">=10.0.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/win32-x64": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", @@ -484,16 +147,6 @@ "node": ">= 8" } }, - "node_modules/@types/copy-webpack-plugin": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@types/copy-webpack-plugin/-/copy-webpack-plugin-10.1.0.tgz", - "integrity": "sha512-Dk0NUW3X6hVQdkH2n9R7NejjPNCocZBiv8XF8Ac5su2d6EKzCcG/yWDwnWGrEsAWvogoADJyUKULwncx0G9Jkg==", - "deprecated": "This is a stub types definition. copy-webpack-plugin provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "copy-webpack-plugin": "*" - } - }, "node_modules/@types/eslint": { "version": "8.40.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", @@ -2610,153 +2263,6 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, - "@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "dev": true, - "optional": true - }, "@esbuild/win32-x64": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", @@ -2839,15 +2345,6 @@ "fastq": "^1.6.0" } }, - "@types/copy-webpack-plugin": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@types/copy-webpack-plugin/-/copy-webpack-plugin-10.1.0.tgz", - "integrity": "sha512-Dk0NUW3X6hVQdkH2n9R7NejjPNCocZBiv8XF8Ac5su2d6EKzCcG/yWDwnWGrEsAWvogoADJyUKULwncx0G9Jkg==", - "dev": true, - "requires": { - "copy-webpack-plugin": "*" - } - }, "@types/eslint": { "version": "8.40.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index cf61ee51a..f80073fb5 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -26,7 +26,6 @@ "fsevents": "~2.3.2" }, "devDependencies": { - "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", "copy-webpack-plugin": "^11.0.0", "esbuild-loader": "^3.0.1", diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 3ee7ddc5e..9ebcabc1b 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -15,7 +15,6 @@ "vscode-languageserver-protocol": "3.17.3" }, "devDependencies": { - "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", "@types/vscode": "^1.78.0", "copy-webpack-plugin": "^11.0.0", @@ -41,342 +40,6 @@ "node": ">=10.0.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/win32-x64": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", @@ -486,16 +149,6 @@ "node": ">= 8" } }, - "node_modules/@types/copy-webpack-plugin": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@types/copy-webpack-plugin/-/copy-webpack-plugin-10.1.0.tgz", - "integrity": "sha512-Dk0NUW3X6hVQdkH2n9R7NejjPNCocZBiv8XF8Ac5su2d6EKzCcG/yWDwnWGrEsAWvogoADJyUKULwncx0G9Jkg==", - "deprecated": "This is a stub types definition. copy-webpack-plugin provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "copy-webpack-plugin": "*" - } - }, "node_modules/@types/eslint": { "version": "8.40.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", @@ -3734,153 +3387,6 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, - "@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "dev": true, - "optional": true - }, "@esbuild/win32-x64": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", @@ -3963,15 +3469,6 @@ "fastq": "^1.6.0" } }, - "@types/copy-webpack-plugin": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@types/copy-webpack-plugin/-/copy-webpack-plugin-10.1.0.tgz", - "integrity": "sha512-Dk0NUW3X6hVQdkH2n9R7NejjPNCocZBiv8XF8Ac5su2d6EKzCcG/yWDwnWGrEsAWvogoADJyUKULwncx0G9Jkg==", - "dev": true, - "requires": { - "copy-webpack-plugin": "*" - } - }, "@types/eslint": { "version": "8.40.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 85db959d1..375f33f90 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -956,7 +956,6 @@ "vscode-languageserver-protocol": "3.17.3" }, "devDependencies": { - "@types/copy-webpack-plugin": "^10.1.0", "@types/node": "^17.0.45", "@types/vscode": "^1.78.0", "copy-webpack-plugin": "^11.0.0", From 9fd63fea86e763ba1663adf06f67d2d2562cb035 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 26 Jul 2023 21:57:51 -0600 Subject: [PATCH 445/525] Fixed small typo in documentation. --- docs/mypy-comparison.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/mypy-comparison.md b/docs/mypy-comparison.md index 3c0d103c1..fc25c8b0e 100644 --- a/docs/mypy-comparison.md +++ b/docs/mypy-comparison.md @@ -372,7 +372,7 @@ reveal_type(v2) # mypy: T, pyright: str ``` -### Constraint Solver: Overloads and ParamSpec +#### Constraint Solver: Overloads and ParamSpec If a function accepts a `Callable` parameterized with a `ParamSpec`, pyright allows you to pass an overloaded function as an argument. The constraint solver solves the type variables for each overload signature independently and then “unions” the results. Mypy uses only the first overload in this case and ignores all subsequent overloads. From 0265e6532f9f855a2c2aa09c9fba2a94c890e2ba Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 27 Jul 2023 00:53:30 -0600 Subject: [PATCH 446/525] Reverted version of `chalk` library. The newer version is not compatible with node v12. This addresses https://github.com/microsoft/pyright/issues/5582. --- packages/pyright-internal/package-lock.json | 2061 ++----------------- packages/pyright-internal/package.json | 2 +- 2 files changed, 213 insertions(+), 1850 deletions(-) diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 1083909ac..454c74013 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -12,7 +12,7 @@ "@iarna/toml": "2.2.5", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", - "chalk": "^5.3.0", + "chalk": "^4.1.2", "chokidar": "^3.5.3", "command-line-args": "^5.2.1", "jsonc-parser": "^3.2.0", @@ -643,55 +643,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/@jest/core": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.1.tgz", @@ -739,55 +690,6 @@ } } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/@jest/environment": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.1.tgz", @@ -903,55 +805,6 @@ } } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/@jest/schemas": { "version": "29.6.0", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", @@ -1034,55 +887,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/@jest/types": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", @@ -1100,55 +904,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -1500,81 +1255,32 @@ "@babel/core": "^7.8.0" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -1749,16 +1455,50 @@ ] }, "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/chalk/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -2223,7 +1963,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2522,55 +2261,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/jest-cli": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.1.tgz", @@ -2605,55 +2295,6 @@ } } }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/jest-config": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.1.tgz", @@ -2699,217 +2340,70 @@ } } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-diff": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz", + "integrity": "sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-diff": { + "node_modules/jest-each": { "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz", - "integrity": "sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.1.tgz", + "integrity": "sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==", "dev": true, "dependencies": { + "@jest/types": "^29.6.1", "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", "jest-get-type": "^29.4.3", + "jest-util": "^29.6.1", "pretty-format": "^29.6.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-environment-node": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.1.tgz", + "integrity": "sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@jest/environment": "^29.6.1", + "@jest/fake-timers": "^29.6.1", + "@jest/types": "^29.6.1", + "@types/node": "*", + "jest-mock": "^29.6.1", + "jest-util": "^29.6.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.1.tgz", - "integrity": "sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.1", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.6.1", - "pretty-format": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-environment-node": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.1.tgz", - "integrity": "sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.6.1", - "@jest/fake-timers": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "jest-mock": "^29.6.1", - "jest-util": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "node_modules/jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2983,55 +2477,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/jest-message-util": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.1.tgz", @@ -3052,55 +2497,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/jest-mock": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.1.tgz", @@ -3174,140 +2570,42 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-runner": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.1.tgz", + "integrity": "sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@jest/console": "^29.6.1", + "@jest/environment": "^29.6.1", + "@jest/test-result": "^29.6.1", + "@jest/transform": "^29.6.1", + "@jest/types": "^29.6.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.6.1", + "jest-haste-map": "^29.6.1", + "jest-leak-detector": "^29.6.1", + "jest-message-util": "^29.6.1", + "jest-resolve": "^29.6.1", + "jest-runtime": "^29.6.1", + "jest-util": "^29.6.1", + "jest-watcher": "^29.6.1", + "jest-worker": "^29.6.1", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runner": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.1.tgz", - "integrity": "sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.6.1", - "@jest/environment": "^29.6.1", - "@jest/test-result": "^29.6.1", - "@jest/transform": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.6.1", - "jest-haste-map": "^29.6.1", - "jest-leak-detector": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-resolve": "^29.6.1", - "jest-runtime": "^29.6.1", - "jest-util": "^29.6.1", - "jest-watcher": "^29.6.1", - "jest-worker": "^29.6.1", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -3347,55 +2645,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/jest-snapshot": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.1.tgz", @@ -3428,55 +2677,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/jest-snapshot/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -3527,55 +2727,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/jest-validate": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz", @@ -3586,142 +2737,44 @@ "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-watcher": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.1.tgz", - "integrity": "sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.6.1", - "@jest/types": "^29.6.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.6.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "leven": "^3.1.0", + "pretty-format": "^29.6.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-watcher": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.1.tgz", + "integrity": "sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@jest/test-result": "^29.6.1", + "@jest/types": "^29.6.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.6.1", + "string-length": "^4.0.1" }, "engines": { - "node": ">=7.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/jest-worker": { "version": "29.6.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz", @@ -4491,7 +3544,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5394,42 +4446,6 @@ "jest-message-util": "^29.6.1", "jest-util": "^29.6.1", "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "@jest/core": { @@ -5466,42 +4482,6 @@ "pretty-format": "^29.6.1", "slash": "^3.0.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "@jest/environment": { @@ -5591,42 +4571,6 @@ "string-length": "^4.0.1", "strip-ansi": "^6.0.0", "v8-to-istanbul": "^9.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "@jest/schemas": { @@ -5694,42 +4638,6 @@ "pirates": "^4.0.4", "slash": "^3.0.0", "write-file-atomic": "^4.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "@jest/types": { @@ -5744,42 +4652,6 @@ "@types/node": "*", "@types/yargs": "^17.0.8", "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "@jridgewell/gen-mapping": { @@ -6069,68 +4941,32 @@ } }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" - }, - "babel-jest": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.1.tgz", - "integrity": "sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==", - "dev": true, - "requires": { - "@jest/transform": "^29.6.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" + }, + "babel-jest": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.1.tgz", + "integrity": "sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==", + "dev": true, + "requires": { + "@jest/transform": "^29.6.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" } }, "babel-plugin-istanbul": { @@ -6269,9 +5105,36 @@ "dev": true }, "chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==" + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } }, "char-regex": { "version": "1.0.2", @@ -6615,8 +5478,7 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "html-escaper": { "version": "2.0.2", @@ -6830,42 +5692,6 @@ "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-cli": { @@ -6886,42 +5712,6 @@ "jest-validate": "^29.6.1", "prompts": "^2.0.1", "yargs": "^17.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-config": { @@ -6952,42 +5742,6 @@ "pretty-format": "^29.6.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-diff": { @@ -7000,42 +5754,6 @@ "diff-sequences": "^29.4.3", "jest-get-type": "^29.4.3", "pretty-format": "^29.6.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-docblock": { @@ -7058,42 +5776,6 @@ "jest-get-type": "^29.4.3", "jest-util": "^29.6.1", "pretty-format": "^29.6.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-environment-node": { @@ -7155,55 +5837,19 @@ "dev": true, "requires": { "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.1" - } - }, - "jest-matcher-utils": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz", - "integrity": "sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.6.1", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "pretty-format": "^29.6.1" + } + }, + "jest-matcher-utils": { + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz", + "integrity": "sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.6.1", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.1" } }, "jest-message-util": { @@ -7221,42 +5867,6 @@ "pretty-format": "^29.6.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-mock": { @@ -7298,42 +5908,6 @@ "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-resolve-dependencies": { @@ -7375,40 +5949,6 @@ "source-map-support": "0.5.13" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", @@ -7449,42 +5989,6 @@ "jest-util": "^29.6.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-snapshot": { @@ -7516,40 +6020,6 @@ "semver": "^7.5.3" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -7588,42 +6058,6 @@ "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-validate": { @@ -7640,45 +6074,11 @@ "pretty-format": "^29.6.1" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true } } }, @@ -7696,42 +6096,6 @@ "emittery": "^0.13.1", "jest-util": "^29.6.1", "string-length": "^4.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "jest-worker": { @@ -8296,7 +6660,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 5efa16abf..f2b2d374f 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -18,7 +18,7 @@ "@iarna/toml": "2.2.5", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", - "chalk": "^5.3.0", + "chalk": "^4.1.2", "chokidar": "^3.5.3", "command-line-args": "^5.2.1", "jsonc-parser": "^3.2.0", From 54b3591992d92f4006691fb87764241c79390190 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 27 Jul 2023 13:06:21 -0700 Subject: [PATCH 447/525] Fixed a bug that resulted in a false positive error when attempting to assign a TypeVar `T` that has a bound of `type` to an expression `type[S]`. This addresses #5581. (#5591) Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 19 +++++++++++++------ .../src/analyzer/typeEvaluator.ts | 2 +- .../src/analyzer/typeUtils.ts | 16 +++++++++++----- .../src/tests/samples/solver28.py | 17 +++++++++++++++++ .../src/tests/typeEvaluator2.test.ts | 6 ++++++ 5 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/solver28.py diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index e545f6626..0c411d021 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -412,12 +412,19 @@ export function assignTypeToTypeVar( if (isEffectivelyInstantiable(adjSrcType)) { adjSrcType = convertToInstance(adjSrcType, /* includeSubclasses */ false); } else { - diag?.addMessage( - Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( - evaluator.printSrcDestTypes(srcType, destType) - ) - ); - return false; + // Handle the case of a TypeVar that has a bound of `type`. + const concreteAdjSrcType = evaluator.makeTopLevelTypeVarsConcrete(adjSrcType); + + if (isEffectivelyInstantiable(concreteAdjSrcType)) { + adjSrcType = convertToInstance(concreteAdjSrcType); + } else { + diag?.addMessage( + Localizer.DiagnosticAddendum.typeAssignmentMismatch().format( + evaluator.printSrcDestTypes(srcType, destType) + ) + ); + return false; + } } } else if ( isTypeVar(srcType) && diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index eeb6323c6..abaf7d67d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -5636,7 +5636,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // a descriptor protocol, only 'get' operations are allowed. If it's accessed // through the object, all access methods are supported. if (isAccessedThroughObject || usage.method === 'get') { - lookupClass = convertToInstance(concreteSubtype.details.effectiveMetaclass) as ClassType; + lookupClass = ClassType.cloneAsInstance(concreteSubtype.details.effectiveMetaclass); isAccessedThroughMetaclass = true; } else { lookupClass = undefined; diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index addba6a5c..9489b9ccf 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1988,12 +1988,18 @@ export function convertToInstance(type: Type, includeSubclasses = true): Type { let result = mapSubtypes(type, (subtype) => { switch (subtype.category) { case TypeCategory.Class: { - // Handle Type[x] as a special case. - if (ClassType.isBuiltIn(subtype, 'Type')) { - if (!subtype.typeArguments || subtype.typeArguments.length < 1) { - return UnknownType.create(); + // Handle type[x] as a special case. + if (ClassType.isBuiltIn(subtype, 'type')) { + if (TypeBase.isInstance(subtype)) { + if (!subtype.typeArguments || subtype.typeArguments.length < 1) { + return UnknownType.create(); + } else { + return subtype.typeArguments[0]; + } } else { - return convertToInstantiable(subtype.typeArguments[0]); + if (subtype.typeArguments && subtype.typeArguments.length > 0) { + return convertToInstantiable(subtype.typeArguments[0]); + } } } diff --git a/packages/pyright-internal/src/tests/samples/solver28.py b/packages/pyright-internal/src/tests/samples/solver28.py new file mode 100644 index 000000000..c5c6d9699 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/solver28.py @@ -0,0 +1,17 @@ +# This sample tests the case where a TypeVar has a bound of `type` and +# is assigned to a `type[T]`. + +from typing import TypeVar + +T = TypeVar("T") +S = TypeVar("S", bound=type) + + +def func1(x: type[T]) -> type[T]: + return x + + +def func2(x: S) -> S: + v1 = func1(x) + reveal_type(v1, expected_text="Unknown") + return v1 diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 0f21f43c5..47ac81f05 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -665,6 +665,12 @@ test('Solver27', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Solver28', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solver28.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + test('SolverScoring1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['solverScoring1.py']); From d81ffb7b5c6a4ac78c87a49c6a6748a47b8d3b4f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 28 Jul 2023 22:22:08 -0600 Subject: [PATCH 448/525] Added a new configuration options flag called `enableExperimentalFeatures` that controls whether certain experimental features are enabled. Currently there are three features under this flag: `StrictTypeGuard`, `ReadOnly` fields for typed dicts, and inlined `TypedDict` definitions. This addresses https://github.com/microsoft/pyright/issues/5598. --- docs/configuration.md | 9 +++-- .../src/analyzer/typeEvaluator.ts | 33 ++++++++++++++++--- .../src/common/configOptions.ts | 10 +++++- .../src/common/diagnosticRules.ts | 1 + .../src/tests/typeEvaluator2.test.ts | 4 ++- .../src/tests/typeEvaluator3.test.ts | 8 +++-- .../src/tests/typeEvaluator5.test.ts | 10 ++++-- .../schemas/pyrightconfig.schema.json | 6 ++++ 8 files changed, 67 insertions(+), 14 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index f0a7d68b9..b2e7d3ebd 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -56,6 +56,8 @@ The following settings control pyright’s diagnostic output (warnings or errors **enableTypeIgnoreComments** [boolean]: PEP 484 defines support for "# type: ignore" comments. This switch enables or disables support for these comments. The default value for this setting is `true`. This does not affect "# pyright: ignore" comments. + **enableExperimentalFeatures** [boolean]: Enables a set of experimental (mostly undocumented) features that correspond to proposed or exploratory changes to the Python typing standard. These features will likely change or be removed, so they should not be used except for experimentation purposes. + **reportGeneralTypeIssues** [boolean or string, optional]: Generate or suppress diagnostics for general type inconsistencies, unsupported operations, argument/parameter mismatches, etc. This covers all of the basic type-checking rules not covered by other rules. It does not include syntax errors. The default value for this setting is `"error"`. **reportPropertyTypeMismatch** [boolean or string, optional]: Generate or suppress diagnostics for properties where the type of the value passed to the setter is not assignable to the value returned by the getter. Such mismatches violate the intended use of properties, which are meant to act like variables. The default value for this setting is `"none"`. @@ -296,12 +298,13 @@ The following table lists the default severity levels for each diagnostic rule w | Diagnostic Rule | Off | Basic | Strict | | :---------------------------------------- | :--------- | :--------- | :--------- | -| strictListInference | false | false | true | -| strictDictionaryInference | false | false | true | -| strictSetInference | false | false | true | | analyzeUnannotatedFunctions | true | true | true | | strictParameterNoneValue | true | true | true | | enableTypeIgnoreComments | true | true | true | +| strictListInference | false | false | true | +| strictDictionaryInference | false | false | true | +| strictSetInference | false | false | true | +| enableExperimentalFeatures | false | false | false | | reportMissingModuleSource | "warning" | "warning" | "warning" | | reportMissingImports | "warning" | "error" | "error" | | reportUndefinedVariable | "warning" | "error" | "error" | diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index abaf7d67d..e182ea449 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -6769,7 +6769,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isInstantiableClass(concreteSubtype) && ClassType.isBuiltIn(concreteSubtype, 'ClassVar'); // Inlined TypedDicts are supported only for 'dict' (and not for 'Dict'). + // This feature is currently experimental. const supportsTypedDictTypeArg = + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.enableExperimentalFeatures && isInstantiableClass(concreteSubtype) && ClassType.isBuiltIn(concreteSubtype, 'dict') && !concreteSubtype.aliasName; @@ -14985,7 +14987,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ['ReadOnly', { alias: '', module: 'builtins' }], ]); - const aliasMapEntry = specialTypes.get(assignedName); + let aliasMapEntry = specialTypes.get(assignedName); + + // Support ReadOnly only as an experimental feature. + if ( + assignedName === 'ReadOnly' && + !AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.enableExperimentalFeatures + ) { + aliasMapEntry = undefined; + } + if (aliasMapEntry) { const cachedType = readTypeCache(node, EvaluatorFlags.None); if (cachedType) { @@ -18755,21 +18766,33 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type: createConcatenateType(errorNode, classType, typeArgs) }; } - case 'TypeGuard': - case 'StrictTypeGuard': { + case 'TypeGuard': { return { type: createTypeGuardType(errorNode, classType, typeArgs, flags) }; } + case 'StrictTypeGuard': { + if (AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.enableExperimentalFeatures) { + return { type: createTypeGuardType(errorNode, classType, typeArgs, flags) }; + } + break; + } + case 'Unpack': { return { type: createUnpackType(classType, errorNode, typeArgs, flags) }; } case 'Required': - case 'NotRequired': - case 'ReadOnly': { + case 'NotRequired': { return createRequiredOrReadOnlyType(classType, errorNode, typeArgs, flags); } + case 'ReadOnly': { + if (AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.enableExperimentalFeatures) { + return createRequiredOrReadOnlyType(classType, errorNode, typeArgs, flags); + } + break; + } + case 'Self': { return { type: createSelfType(classType, errorNode, typeArgs) }; } diff --git a/packages/pyright-internal/src/common/configOptions.ts b/packages/pyright-internal/src/common/configOptions.ts index 23414a769..6349a1773 100644 --- a/packages/pyright-internal/src/common/configOptions.ts +++ b/packages/pyright-internal/src/common/configOptions.ts @@ -104,6 +104,10 @@ export interface DiagnosticRuleSet { // Use strict type rules for parameters assigned default of None? strictParameterNoneValue: boolean; + // Enable experimental features that are not yet part of the + // official Python typing spec? + enableExperimentalFeatures: boolean; + // Enable support for type: ignore comments? enableTypeIgnoreComments: boolean; @@ -332,10 +336,11 @@ export function getBooleanDiagnosticRules(includeNonOverridable = false) { ]; if (includeNonOverridable) { - // Do not include this this one because we don't + // Do not include this these because we don't // want to override it in strict mode or support // it within pyright comments. boolRules.push(DiagnosticRule.enableTypeIgnoreComments); + boolRules.push(DiagnosticRule.enableExperimentalFeatures); } return boolRules; @@ -430,6 +435,7 @@ export function getOffDiagnosticRuleSet(): DiagnosticRuleSet { strictDictionaryInference: false, analyzeUnannotatedFunctions: true, strictParameterNoneValue: true, + enableExperimentalFeatures: false, enableTypeIgnoreComments: true, reportGeneralTypeIssues: 'none', reportPropertyTypeMismatch: 'none', @@ -512,6 +518,7 @@ export function getBasicDiagnosticRuleSet(): DiagnosticRuleSet { strictDictionaryInference: false, analyzeUnannotatedFunctions: true, strictParameterNoneValue: true, + enableExperimentalFeatures: false, enableTypeIgnoreComments: true, reportGeneralTypeIssues: 'error', reportPropertyTypeMismatch: 'none', @@ -594,6 +601,7 @@ export function getStrictDiagnosticRuleSet(): DiagnosticRuleSet { strictDictionaryInference: true, analyzeUnannotatedFunctions: true, strictParameterNoneValue: true, + enableExperimentalFeatures: false, // Not overridden by strict mode enableTypeIgnoreComments: true, // Not overridden by strict mode reportGeneralTypeIssues: 'error', reportPropertyTypeMismatch: 'none', diff --git a/packages/pyright-internal/src/common/diagnosticRules.ts b/packages/pyright-internal/src/common/diagnosticRules.ts index 0da7d6926..4bcfe825f 100644 --- a/packages/pyright-internal/src/common/diagnosticRules.ts +++ b/packages/pyright-internal/src/common/diagnosticRules.ts @@ -16,6 +16,7 @@ export enum DiagnosticRule { strictDictionaryInference = 'strictDictionaryInference', analyzeUnannotatedFunctions = 'analyzeUnannotatedFunctions', strictParameterNoneValue = 'strictParameterNoneValue', + enableExperimentalFeatures = 'enableExperimentalFeatures', enableTypeIgnoreComments = 'enableTypeIgnoreComments', reportGeneralTypeIssues = 'reportGeneralTypeIssues', diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 47ac81f05..d327307b7 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1438,7 +1438,9 @@ test('TypedDict22', () => { }); test('TypedDictInline1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictInline1.py']); + const configOptions = new ConfigOptions('.'); + configOptions.diagnosticRuleSet.enableExperimentalFeatures = true; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictInline1.py'], configOptions); TestUtils.validateResults(analysisResults, 8); }); diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index d78c3575e..b9ec7a061 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -935,14 +935,18 @@ test('TypeGuard2', () => { }); test('TypeGuard3', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeGuard3.py']); + const configOptions = new ConfigOptions('.'); + configOptions.diagnosticRuleSet.enableExperimentalFeatures = true; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeGuard3.py'], configOptions); TestUtils.validateResults(analysisResults, 1); }); test('TypeGuard4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeGuard4.py']); + const configOptions = new ConfigOptions('.'); + configOptions.diagnosticRuleSet.enableExperimentalFeatures = true; + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeGuard4.py'], configOptions); TestUtils.validateResults(analysisResults, 0); }); diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 033b4c9cb..76d95a0fc 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -293,11 +293,17 @@ test('TypeAliasType2', () => { }); test('TypedDictReadOnly1', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictReadOnly1.py']); + const configOptions = new ConfigOptions('.'); + configOptions.diagnosticRuleSet.enableExperimentalFeatures = true; + + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictReadOnly1.py'], configOptions); TestUtils.validateResults(analysisResults, 5); }); test('TypedDictReadOnly2', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictReadOnly2.py']); + const configOptions = new ConfigOptions('.'); + configOptions.diagnosticRuleSet.enableExperimentalFeatures = true; + + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictReadOnly2.py'], configOptions); TestUtils.validateResults(analysisResults, 9); }); diff --git a/packages/vscode-pyright/schemas/pyrightconfig.schema.json b/packages/vscode-pyright/schemas/pyrightconfig.schema.json index 91ec0fe8d..2f72013f1 100644 --- a/packages/vscode-pyright/schemas/pyrightconfig.schema.json +++ b/packages/vscode-pyright/schemas/pyrightconfig.schema.json @@ -142,6 +142,12 @@ "title": "Allow implicit Optional when default parameter value is None", "default": true }, + "enableExperimentalFeatures": { + "$id": "#/properties/enableExperimentalFeatures", + "type": "boolean", + "title": "Enable the use of experimental features that are not part of the Python typing spec", + "default": true + }, "enableTypeIgnoreComments": { "$id": "#/properties/enableTypeIgnoreComments", "type": "boolean", From 9a5af798d726bd0612cebee7223676c39cf0b9b0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 28 Jul 2023 23:47:54 -0600 Subject: [PATCH 449/525] Removed support for experimental `StrictTypeGuard` and replaced it with an experimental variant of `TypeGuard` that applies strict semantics if certain conditions are met. This addresses #5601. (#5603) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/binder.ts | 1 - .../pyright-internal/src/analyzer/checker.ts | 36 +------------- .../src/analyzer/typeEvaluator.ts | 47 +++++++++++-------- .../src/analyzer/typeGuards.ts | 2 +- .../src/analyzer/typeUtils.ts | 1 - .../src/localization/localize.ts | 5 -- .../src/localization/package.nls.cs.json | 1 - .../src/localization/package.nls.de.json | 1 - .../src/localization/package.nls.en-us.json | 1 - .../src/localization/package.nls.es.json | 1 - .../src/localization/package.nls.fr.json | 1 - .../src/localization/package.nls.it.json | 1 - .../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/samples/typeGuard3.py | 23 ++++----- .../src/tests/samples/typeGuard4.py | 23 ++------- .../src/tests/typeEvaluator3.test.ts | 2 +- .../stdlib/typing_extensions.pyi | 3 -- 25 files changed, 42 insertions(+), 116 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index 336d53ba6..81ab124ff 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -4055,7 +4055,6 @@ export class Binder extends ParseTreeWalker { 'OrderedDict', 'Concatenate', 'TypeGuard', - 'StrictTypeGuard', 'Unpack', 'Self', 'NoReturn', diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 5b4a2078c..83fc489e6 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -656,7 +656,7 @@ export class Checker extends ParseTreeWalker { // Verify common dunder signatures. this._validateDunderSignatures(node, functionTypeResult.functionType, containingClassNode !== undefined); - // Verify TypeGuard or StrictTypeGuard functions. + // Verify TypeGuard functions. this._validateTypeGuardFunction(node, functionTypeResult.functionType, containingClassNode !== undefined); this._validateFunctionTypeVarUsage(node, functionTypeResult); @@ -4209,10 +4209,7 @@ export class Checker extends ParseTreeWalker { return; } - const isNormalTypeGuard = ClassType.isBuiltIn(returnType, 'TypeGuard'); - const isStrictTypeGuard = ClassType.isBuiltIn(returnType, 'StrictTypeGuard'); - - if (!isNormalTypeGuard && !isStrictTypeGuard) { + if (!ClassType.isBuiltIn(returnType, 'TypeGuard')) { return; } @@ -4236,35 +4233,6 @@ export class Checker extends ParseTreeWalker { node.name ); } - - if (isStrictTypeGuard) { - const typeGuardType = returnType.typeArguments[0]; - - // Determine the type of the first parameter. - const paramIndex = isMethod && !FunctionType.isStaticMethod(functionType) ? 1 : 0; - if (paramIndex >= functionType.details.parameters.length) { - return; - } - - const paramType = FunctionType.getEffectiveParameterType(functionType, paramIndex); - - // Verify that the typeGuardType is a narrower type than the paramType. - if (!this._evaluator.assignType(paramType, typeGuardType)) { - const returnAnnotation = - node.returnTypeAnnotation || node.functionAnnotationComment?.returnTypeAnnotation; - if (returnAnnotation) { - this._evaluator.addDiagnostic( - this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.strictTypeGuardReturnType().format({ - type: this._evaluator.printType(paramType), - returnType: this._evaluator.printType(typeGuardType), - }), - returnAnnotation - ); - } - } - } } private _validateDunderSignatures(node: FunctionNode, functionType: FunctionType, isMethod: boolean) { diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index e182ea449..f02b2fde5 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11035,14 +11035,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions specializedReturnType = ClassType.cloneForUnpacked(specializedReturnType, /* isUnpackedTuple */ false); } - // Handle 'TypeGuard' and 'StrictTypeGuard' specially. We'll transform the - // return type into a 'bool' object with a type argument that reflects the - // narrowed type. + // Handle 'TypeGuard' specially. We'll transform the return type into a 'bool' + // object with a type argument that reflects the narrowed type. if ( isClassInstance(specializedReturnType) && - ClassType.isBuiltIn(specializedReturnType, ['TypeGuard', 'StrictTypeGuard']) && + ClassType.isBuiltIn(specializedReturnType, 'TypeGuard') && specializedReturnType.typeArguments && - specializedReturnType.typeArguments.length > 0 + specializedReturnType.typeArguments.length > 0 && + isClassInstance(returnType) && + returnType.typeArguments && + returnType.typeArguments.length > 0 ) { if (boolClassType && isInstantiableClass(boolClassType)) { let typeGuardType = specializedReturnType.typeArguments[0]; @@ -11066,12 +11068,25 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + let useStrictTypeGuardSemantics = false; + + if (AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.enableExperimentalFeatures) { + // Determine the type of the first parameter. + const paramIndex = type.boundToType ? 1 : 0; + if (paramIndex < type.details.parameters.length) { + const paramType = FunctionType.getEffectiveParameterType(type, paramIndex); + + // If the type guard meets the requirements that the first parameter + // type is a proper subtype of the return type, we can use strict + // type guard semantics. + if (assignType(paramType, returnType.typeArguments[0])) { + useStrictTypeGuardSemantics = true; + } + } + } + specializedReturnType = ClassType.cloneAsInstance( - ClassType.cloneForTypeGuard( - boolClassType, - typeGuardType, - ClassType.isBuiltIn(specializedReturnType, 'StrictTypeGuard') - ) + ClassType.cloneForTypeGuard(boolClassType, typeGuardType, useStrictTypeGuardSemantics) ); } } @@ -14976,7 +14991,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ['TypeAlias', { alias: '', module: 'builtins' }], ['Concatenate', { alias: '', module: 'builtins' }], ['TypeGuard', { alias: '', module: 'builtins' }], - ['StrictTypeGuard', { alias: '', module: 'builtins' }], ['Unpack', { alias: '', module: 'builtins' }], ['Required', { alias: '', module: 'builtins' }], ['NotRequired', { alias: '', module: 'builtins' }], @@ -18770,13 +18784,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { type: createTypeGuardType(errorNode, classType, typeArgs, flags) }; } - case 'StrictTypeGuard': { - if (AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.enableExperimentalFeatures) { - return { type: createTypeGuardType(errorNode, classType, typeArgs, flags) }; - } - break; - } - case 'Unpack': { return { type: createUnpackType(classType, errorNode, typeArgs, flags) }; } @@ -22210,7 +22217,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const isLiteral = isClass(srcType) && srcType.literalValue !== undefined; return !isLiteral; } - } else if (ClassType.isBuiltIn(destType, ['TypeGuard', 'StrictTypeGuard'])) { + } else if (ClassType.isBuiltIn(destType, 'TypeGuard')) { // All the source to be a "bool". if ((originalFlags & AssignTypeFlags.AllowBoolTypeGuard) !== 0) { if (isClassInstance(srcType) && ClassType.isBuiltIn(srcType, 'bool')) { @@ -24067,7 +24074,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // This should also act as a bool, since that's its type at runtime. if ( isClassInstance(srcReturnType) && - ClassType.isBuiltIn(srcReturnType, ['TypeGuard', 'StrictTypeGuard']) && + ClassType.isBuiltIn(srcReturnType, 'TypeGuard') && boolClassType && isInstantiableClass(boolClassType) ) { diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 6919fe08d..1396b1d30 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -695,7 +695,7 @@ export function getTypeNarrowingCallback( return ( type.details.declaredReturnType && isClassInstance(type.details.declaredReturnType) && - ClassType.isBuiltIn(type.details.declaredReturnType, ['TypeGuard', 'StrictTypeGuard']) + ClassType.isBuiltIn(type.details.declaredReturnType, 'TypeGuard') ); }; diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 9489b9ccf..ea2d3862c 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2527,7 +2527,6 @@ export function requiresTypeArguments(classType: ClassType) { 'Literal', 'Annotated', 'TypeGuard', - 'StrictTypeGuard', ]; if (specialClasses.some((t) => t === (classType.aliasName || classType.details.name))) { diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 9fbf5d8c7..2802a6603 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -821,11 +821,6 @@ export namespace Localizer { export const staticClsSelfParam = () => getRawString('Diagnostic.staticClsSelfParam'); export const stdlibModuleOverridden = () => new ParameterizedString<{ name: string; path: string }>(getRawString('Diagnostic.stdlibModuleOverridden')); - - export const strictTypeGuardReturnType = () => - new ParameterizedString<{ type: string; returnType: string }>( - getRawString('Diagnostic.strictTypeGuardReturnType') - ); export const stringNonAsciiBytes = () => getRawString('Diagnostic.stringNonAsciiBytes'); export const stringNotSubscriptable = () => getRawString('Diagnostic.stringNotSubscriptable'); export const stringUnsupportedEscape = () => getRawString('Diagnostic.stringUnsupportedEscape'); diff --git a/packages/pyright-internal/src/localization/package.nls.cs.json b/packages/pyright-internal/src/localization/package.nls.cs.json index 17943062c..84be82427 100644 --- a/packages/pyright-internal/src/localization/package.nls.cs.json +++ b/packages/pyright-internal/src/localization/package.nls.cs.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** není možné použít se zástupným znakem _", "staticClsSelfParam": "Statické metody by neměly přijímat parametr self nebo cls", "stdlibModuleOverridden": "„{path}“ přepisuje modul stdlib „{name}“", - "strictTypeGuardReturnType": "Návratový typ StrictTypeGuard ({returnType}) se nedá přiřadit k typu parametru hodnoty ({type})", "stringNonAsciiBytes": "Znak jiný než ASCII není povolený v bajtech řetězcového literálu", "stringNotSubscriptable": "Řetězcový výraz není možné v poznámce typu zadat jako dolní index uzavření celé poznámky do uvozovek", "stringUnsupportedEscape": "Nepodporovaná řídicí sekvence v řetězcovém literálu", diff --git a/packages/pyright-internal/src/localization/package.nls.de.json b/packages/pyright-internal/src/localization/package.nls.de.json index f71f47e71..e420b902c 100644 --- a/packages/pyright-internal/src/localization/package.nls.de.json +++ b/packages/pyright-internal/src/localization/package.nls.de.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** kann nicht zusammen mit Platzhalter \"_\" verwendet werden", "staticClsSelfParam": "Statische Methoden dürfen keinen \"self\"- oder \"cls\"-Parameter annehmen.", "stdlibModuleOverridden": "\"{path}\" überschreibt das stdlib-Modul \"{name}\"", - "strictTypeGuardReturnType": "Der Rückgabetyp von StrictTypeGuard (\"{returnType}\") kann dem Wertparametertyp nicht zugewiesen werden (\"{type}\").", "stringNonAsciiBytes": "Ein Nicht-ASCII-Zeichen ist im Zeichenfolgenliteral in Bytes nicht zulässig.", "stringNotSubscriptable": "Der Zeichenfolgenausdruck kann nicht in der Typanmerkung tiefgestellt werden; schließen Sie die gesamte Anmerkung in Anführungszeichen ein", "stringUnsupportedEscape": "Nicht unterstützte Escapesequenz im Zeichenfolgenliteral.", diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 1bf9e9312..f3a942640 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -395,7 +395,6 @@ "starStarWildcardNotAllowed": "** cannot be used with wildcard \"_\"", "staticClsSelfParam": "Static methods should not take a \"self\" or \"cls\" parameter", "stdlibModuleOverridden": "\"{path}\" is overriding the stdlib module \"{name}\"", - "strictTypeGuardReturnType": "Return type of StrictTypeGuard (\"{returnType}\") is not assignable to value parameter type (\"{type}\")", "stringNonAsciiBytes": "Non-ASCII character not allowed in bytes string literal", "stringNotSubscriptable": "String expression cannot be subscripted in type annotation; enclose entire annotation in quotes", "stringUnsupportedEscape": "Unsupported escape sequence in string literal", diff --git a/packages/pyright-internal/src/localization/package.nls.es.json b/packages/pyright-internal/src/localization/package.nls.es.json index 19dc93aae..9e8f626b2 100644 --- a/packages/pyright-internal/src/localization/package.nls.es.json +++ b/packages/pyright-internal/src/localization/package.nls.es.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** no puede utilizarse con el comodín \"_\".", "staticClsSelfParam": "Los métodos estáticos no deben tomar un parámetro \"auto\" o \"cls\".", "stdlibModuleOverridden": "\"{path}\" está reemplazando el módulo stdlib \"{name}\"", - "strictTypeGuardReturnType": "El tipo de retorno de StrictTypeGuard (\"{returnType}\") no es asignable al tipo de parámetro de valor (\"{type}\")", "stringNonAsciiBytes": "Carácter no ASCII no permitido en el literal de cadena de bytes", "stringNotSubscriptable": "La expresión de cadena no puede ir entre comillas en la anotación de tipo; encierre toda la anotación entre comillas.", "stringUnsupportedEscape": "Secuencia de escape no admitida en el literal de cadena", diff --git a/packages/pyright-internal/src/localization/package.nls.fr.json b/packages/pyright-internal/src/localization/package.nls.fr.json index eb87c1726..defad1ae8 100644 --- a/packages/pyright-internal/src/localization/package.nls.fr.json +++ b/packages/pyright-internal/src/localization/package.nls.fr.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** ne peut pas être utilisé avec le caractère générique « _ »", "staticClsSelfParam": "Les méthodes statiques ne doivent pas prendre de paramètre « self » ou « cls »", "stdlibModuleOverridden": "\"{path}\" remplace le module stdlib \"{name}\"", - "strictTypeGuardReturnType": "Le type de retour de StrictTypeGuard (« {returnType} ») n’est pas assignable au type de paramètre de valeur (« {type} »)", "stringNonAsciiBytes": "Caractère non-ASCII non autorisé dans le littéral de chaîne d'octets", "stringNotSubscriptable": "L’expression de chaîne ne peut pas être en indice dans l’annotation de type ; placer l’annotation entière entre guillemets", "stringUnsupportedEscape": "Séquence d'échappement non prise en charge dans le littéral de chaîne", diff --git a/packages/pyright-internal/src/localization/package.nls.it.json b/packages/pyright-internal/src/localization/package.nls.it.json index 193cb426d..78ef59ea6 100644 --- a/packages/pyright-internal/src/localization/package.nls.it.json +++ b/packages/pyright-internal/src/localization/package.nls.it.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** non può essere usato con il carattere jolly \"_\"", "staticClsSelfParam": "I metodi statici non devono accettare un parametro \"self\" o \"cls\"", "stdlibModuleOverridden": "\"{path}\" sta eseguendo l'override del modulo stdlib \"{name}\"", - "strictTypeGuardReturnType": "Il tipo restituito di StrictTypeGuard (\"{returnType}\") non è assegnabile al tipo di parametro di valore (\"{type}\")", "stringNonAsciiBytes": "Carattere non ASCII non consentito nel valore letterale stringa dei byte", "stringNotSubscriptable": "L'espressione stringa non può essere in pedice nell'annotazione di tipo. Racchiudere l'intera annotazione tra virgolette", "stringUnsupportedEscape": "Sequenza di escape non supportata nel valore letterale stringa", diff --git a/packages/pyright-internal/src/localization/package.nls.ja.json b/packages/pyright-internal/src/localization/package.nls.ja.json index 2c11f665c..775f90b98 100644 --- a/packages/pyright-internal/src/localization/package.nls.ja.json +++ b/packages/pyright-internal/src/localization/package.nls.ja.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** はワイルドカード \"_\" と共に使用できません", "staticClsSelfParam": "静的メソッドに \"self\" または \"cls\" パラメーターを指定することはできません", "stdlibModuleOverridden": "\"{path}\" は stdlib モジュール \"{name}\" をオーバーライドしています", - "strictTypeGuardReturnType": "StrictTypeGuard (\"{returnType}\") の戻り値の型は、値パラメーター型 (\"{type}\") に割り当てできません", "stringNonAsciiBytes": "非 ASCII 文字はバイト文字列リテラルでは使用できません", "stringNotSubscriptable": "型注釈では文字列式を添字にすることはできません。注釈全体を引用符で囲んでください", "stringUnsupportedEscape": "文字列リテラルでサポートされていないエスケープ シーケンス", diff --git a/packages/pyright-internal/src/localization/package.nls.ko.json b/packages/pyright-internal/src/localization/package.nls.ko.json index 634f64466..3b9cfbf4b 100644 --- a/packages/pyright-internal/src/localization/package.nls.ko.json +++ b/packages/pyright-internal/src/localization/package.nls.ko.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "**는 와일드카드 \"_\"와 함께 사용할 수 없습니다.", "staticClsSelfParam": "정적 메서드는 \"self\" 또는 \"cls\" 매개 변수를 사용하면 안 됩니다.", "stdlibModuleOverridden": "‘{path}’이(가) ‘{name}’ stdlib 모듈을 재정의하고 있습니다.", - "strictTypeGuardReturnType": "StrictTypeGuard의 반환 형식(\"{returnType}\")은 값 매개 변수 형식(\"{type}\")에 할당할 수 없습니다.", "stringNonAsciiBytes": "ASCII가 아닌 문자는 바이트 문자열 리터럴에 허용되지 않습니다.", "stringNotSubscriptable": "형식 주석에는 문자열 식을 첨자할 수 없습니다. 전체 주석을 따옴표로 묶습니다.", "stringUnsupportedEscape": "문자열 리터럴에 지원되지 않는 이스케이프 시퀀스가 있습니다.", diff --git a/packages/pyright-internal/src/localization/package.nls.pl.json b/packages/pyright-internal/src/localization/package.nls.pl.json index c109d4912..0215a23c2 100644 --- a/packages/pyright-internal/src/localization/package.nls.pl.json +++ b/packages/pyright-internal/src/localization/package.nls.pl.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "Symbolu ** nie można używać z symbolem wieloznacznym „_”", "staticClsSelfParam": "Metody statyczne nie powinny przyjmować parametru „self” ani „cls”.", "stdlibModuleOverridden": "Ścieżka „{path}” zastępuje moduł stdlib „{name}”", - "strictTypeGuardReturnType": "Zwracanego typu StrictTypeGuard („{returnType}”) nie można przypisać do typu parametru wartości („{type}”)", "stringNonAsciiBytes": "Znak inny niż ASCII jest niedozwolony w literale ciągu bajtów", "stringNotSubscriptable": "Wyrażenie ciągu nie może być indeksowane w adnotacji typu; ujmij całą adnotację w cudzysłów", "stringUnsupportedEscape": "Nieobsługiwana sekwencja ucieczki w literale ciągu", 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 e18844b4a..7200d6a7b 100644 --- a/packages/pyright-internal/src/localization/package.nls.pt-br.json +++ b/packages/pyright-internal/src/localization/package.nls.pt-br.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** não pode ser usado com curinga \"_\"", "staticClsSelfParam": "Os métodos estáticos não devem usar um parâmetro \"self\" ou \"cls\"", "stdlibModuleOverridden": "\"{path}\" está substituindo o módulo stdlib \"{name}\"", - "strictTypeGuardReturnType": "O tipo de retorno strictTypeGuard (\"{returnType}\") não é atribuível ao tipo de parâmetro de valor (\"{type}\")", "stringNonAsciiBytes": "Caractere não ASCII não permitido em literal de cadeia de caracteres de bytes", "stringNotSubscriptable": "A expressão de cadeia de caracteres não pode ser subscrito na anotação de tipo. Coloque a anotação inteira entre aspas", "stringUnsupportedEscape": "Sequência de escape sem suporte no literal de cadeia de caracteres", 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 93218f106..20613a571 100644 --- a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json +++ b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "[Ll1UV][นั้** çæññøt þë µsëð wïth wïlðçærð \"_\"Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", "staticClsSelfParam": "[mO4QU][นั้§tætïç mëthøðs shøµlð ñøt tækë æ \"sëlf\" ør \"çls\" pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", "stdlibModuleOverridden": "[AV6K3][นั้\"{pæth}\" ïs øvërrïðïñg thë stðlïþ møðµlë \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", - "strictTypeGuardReturnType": "[Kn87D][นั้Rëtµrñ tÿpë øf §trïçtTÿpëGµærð (\"{rëtµrñTÿpë}\") ïs ñøt æssïgñæþlë tø vælµë pæræmëtër tÿpë (\"{tÿpë}\")Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", "stringNonAsciiBytes": "[dFNRn][นั้Ñøñ-ƧÇÏÏ çhæræçtër ñøt ælløwëð ïñ þÿtës strïñg lïtërælẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "stringNotSubscriptable": "[hKZT7][นั้§trïñg ëxprëssïøñ çæññøt þë sµþsçrïptëð ïñ tÿpë æññøtætïøñ; ëñçløsë ëñtïrë æññøtætïøñ ïñ qµøtësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", "stringUnsupportedEscape": "[K2WsY][นั้Üñsµppørtëð ësçæpë sëqµëñçë ïñ strïñg lïtërælẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index c2a23b5c6..310b3e7b0 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** нельзя использовать с символом подстановки \"_\"", "staticClsSelfParam": "Статические методы не принимают в качестве параметра \"self\" и \"cls\"", "stdlibModuleOverridden": "\"{path}\" переопределяет модуль stdlib \"{name}\"", - "strictTypeGuardReturnType": "Тип значения, возвращаемого StrictTypeGuard (\"{returnType}\"), нельзя присвоить типу параметра значения (\"{type}\")", "stringNonAsciiBytes": "Символы, отличные от ASCII, не допускаются в строковом литерале байтов", "stringNotSubscriptable": "От строкового выражения нельзя взять подстроку в заметке типа; заключите всю заметку в кавычки", "stringUnsupportedEscape": "Неподдерживаемая escape-последовательность в строковом литерале", diff --git a/packages/pyright-internal/src/localization/package.nls.tr.json b/packages/pyright-internal/src/localization/package.nls.tr.json index 590666557..afc3d3442 100644 --- a/packages/pyright-internal/src/localization/package.nls.tr.json +++ b/packages/pyright-internal/src/localization/package.nls.tr.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "\"_\" joker karakteriyle ** kullanılamaz", "staticClsSelfParam": "Static metotları \"self\" veya \"cls\" parametresi almamalıdır", "stdlibModuleOverridden": "\"{path}\", \"{name}\" stdlib modülünü geçersiz kılıyor", - "strictTypeGuardReturnType": "StrictTypeGuard’ın dönüş türü (\"{returnType}\") değer parametresi türüne (\"{type}\") atanamaz", "stringNonAsciiBytes": "ASCII olmayan karaktere bayt sabit değerli dizesinde izin verilmez", "stringNotSubscriptable": "Tür ek açıklamasında dize ifadesi alt simge olarak belirtilemez; ek açıklamanın tamamını tırnak içine alın", "stringUnsupportedEscape": "Dize sabit değerinde desteklenmeyen kaçış dizisi", 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 45df9ab6c..26526efc3 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-cn.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-cn.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** 不能与通配符“_”一起使用", "staticClsSelfParam": "静态方法不应采用“self”或“cls”参数", "stdlibModuleOverridden": "\"{path}\"正在替代 stdlib 模块\"{name}\"", - "strictTypeGuardReturnType": "StrictTypeGuard(\"{returnType}\")的返回类型不可分配给值参数类型 (\"{type}\")", "stringNonAsciiBytes": "不允许使用非 ASCII 字符(以字节为单位)字符串文本", "stringNotSubscriptable": "字符串表达式不能在类型批注中下标;将整个批注括在引号中", "stringUnsupportedEscape": "字符串文本中不受支持的转义序列", 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 e07b078a1..5af219ff1 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-tw.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-tw.json @@ -406,7 +406,6 @@ "starStarWildcardNotAllowed": "** 不能與萬用字元 \"_\" 搭配使用", "staticClsSelfParam": "靜態方法不應採用 \"self\" 或 \"cls\" 參數", "stdlibModuleOverridden": "\"{path}\" 正在覆寫 stdlib 模組 \"{name}\"", - "strictTypeGuardReturnType": "StrictTypeGuard 的傳回類型 (\"{returnType}\") 不能指派至數值參數類型 (\"{type}\")", "stringNonAsciiBytes": "位元組字串常值中不允許非 ASCII 字元", "stringNotSubscriptable": "字串運算式不能在類型註釋中下標; 以引號括住整個註釋", "stringUnsupportedEscape": "字串常值中不支援的逸出序列", diff --git a/packages/pyright-internal/src/tests/samples/typeGuard3.py b/packages/pyright-internal/src/tests/samples/typeGuard3.py index 581473631..cbe8f1ca5 100644 --- a/packages/pyright-internal/src/tests/samples/typeGuard3.py +++ b/packages/pyright-internal/src/tests/samples/typeGuard3.py @@ -1,10 +1,10 @@ -# This sample tests the StrictTypeGuard form. +# This sample tests the TypeGuard using "strict" semantics. from typing import Any, Literal, Mapping, Sequence, TypeVar, Union -from typing_extensions import StrictTypeGuard +from typing_extensions import TypeGuard -def is_str1(val: Union[str, int]) -> StrictTypeGuard[str]: +def is_str1(val: Union[str, int]) -> TypeGuard[str]: return isinstance(val, str) @@ -15,7 +15,7 @@ def func1(val: Union[str, int]): reveal_type(val, expected_text="int") -def is_true(o: object) -> StrictTypeGuard[Literal[True]]: +def is_true(o: object) -> TypeGuard[Literal[True]]: ... @@ -28,7 +28,7 @@ def func2(val: bool): reveal_type(val, expected_text="bool") -def is_list(val: object) -> StrictTypeGuard[list[Any]]: +def is_list(val: object) -> TypeGuard[list[Any]]: return isinstance(val, list) @@ -50,7 +50,7 @@ def func4(val: dict[str, str] | list[str] | list[int] | tuple[int]): _V = TypeVar("_V") -def is_dict(val: Mapping[_K, _V]) -> StrictTypeGuard[dict[_K, _V]]: +def is_dict(val: Mapping[_K, _V]) -> TypeGuard[dict[_K, _V]]: return isinstance(val, dict) @@ -61,7 +61,7 @@ def func5(val: dict[_K, _V] | Mapping[_K, _V]): reveal_type(val, expected_text="dict[_K@func5, _V@func5]") -def is_cardinal_direction(val: str) -> StrictTypeGuard[Literal["N", "S", "E", "W"]]: +def is_cardinal_direction(val: str) -> TypeGuard[Literal["N", "S", "E", "W"]]: return val in ("N", "S", "E", "W") @@ -87,12 +87,5 @@ class Koala(Animal): T = TypeVar("T") -def is_marsupial(val: Animal) -> StrictTypeGuard[Kangaroo | Koala]: +def is_marsupial(val: Animal) -> TypeGuard[Kangaroo | Koala]: return isinstance(val, Kangaroo | Koala) - - -# This should generate an error because list[T] isn't assignable to list[T | None]. -def has_no_nones( - val: list[T | None], -) -> StrictTypeGuard[list[T]]: - return None not in val diff --git a/packages/pyright-internal/src/tests/samples/typeGuard4.py b/packages/pyright-internal/src/tests/samples/typeGuard4.py index 31938564c..e90594257 100644 --- a/packages/pyright-internal/src/tests/samples/typeGuard4.py +++ b/packages/pyright-internal/src/tests/samples/typeGuard4.py @@ -1,15 +1,14 @@ -# This sample tests that user-defined TypeGuard and StrictTypeGuard can +# This sample tests that user-defined TypeGuard can # be used in an overloaded function. from enum import Enum from typing import Literal, overload -from typing_extensions import StrictTypeGuard, TypeGuard +from typing_extensions import TypeGuard class TypeGuardMode(Enum): NoTypeGuard = 0 TypeGuard = 1 - StrictTypeGuard = 2 @overload @@ -22,16 +21,7 @@ def is_int(obj: object, mode: Literal[TypeGuardMode.TypeGuard]) -> TypeGuard[int ... -@overload -def is_int( - obj: object, mode: Literal[TypeGuardMode.StrictTypeGuard] -) -> StrictTypeGuard[int]: - ... - - -def is_int( - obj: object, mode: TypeGuardMode -) -> bool | TypeGuard[int] | StrictTypeGuard[int]: +def is_int(obj: object, mode: TypeGuardMode) -> bool | TypeGuard[int]: ... @@ -45,12 +35,5 @@ def func_no_typeguard(val: int | str): def func_typeguard(val: int | str): if is_int(val, TypeGuardMode.TypeGuard): reveal_type(val, expected_text="int") - else: - reveal_type(val, expected_text="int | str") - - -def func_stricttypeguard(val: int | str): - if is_int(val, TypeGuardMode.StrictTypeGuard): - reveal_type(val, expected_text="int") else: reveal_type(val, expected_text="str") diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index b9ec7a061..39c807230 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -939,7 +939,7 @@ test('TypeGuard3', () => { configOptions.diagnosticRuleSet.enableExperimentalFeatures = true; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeGuard3.py'], configOptions); - TestUtils.validateResults(analysisResults, 1); + TestUtils.validateResults(analysisResults, 0); }); test('TypeGuard4', () => { diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi index 907ff4eeb..a3ffe0e7a 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi @@ -485,6 +485,3 @@ else: # PEP 705 ReadOnly: _SpecialForm - -# Proposed extension to PEP 647 -StrictTypeGuard: _SpecialForm = ... From e82f5df89346c5f32996f38ff0fd59c0d2a37fbd Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 29 Jul 2023 07:05:00 -0600 Subject: [PATCH 450/525] Fixed a bug that led to incorrect variance inference when a value annotated with a class-scoped TypeVar was assigned to an instance variable. This addresses https://github.com/microsoft/pyright/discussions/5568#discussioncomment-6581557. --- .../src/analyzer/typeEvaluator.ts | 98 +++++++++---------- .../src/tests/samples/autoVariance1.py | 14 ++- .../src/tests/samples/autoVariance3.py | 25 ++++- .../src/tests/typeEvaluator5.test.ts | 4 +- 4 files changed, 85 insertions(+), 56 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index f02b2fde5..1a4aac167 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21193,7 +21193,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions let isAssignable = true; destType.details.fields.forEach((symbol, name) => { - if (!isAssignable || !symbol.isClassMember() || symbol.isIgnoredForProtocolMatch()) { + if (!isAssignable || symbol.isIgnoredForProtocolMatch()) { return; } @@ -21205,60 +21205,58 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const memberInfo = lookUpClassMember(srcType, name); assert(memberInfo !== undefined); - let destMemberType = getDeclaredTypeOfSymbol(symbol)?.type; - if (destMemberType) { - const srcMemberType = getTypeOfMember(memberInfo!); - destMemberType = partiallySpecializeType(destMemberType, destType); + let destMemberType = getEffectiveTypeOfSymbol(symbol); + const srcMemberType = getTypeOfMember(memberInfo!); + destMemberType = partiallySpecializeType(destMemberType, destType); - // Properties require special processing. + // Properties require special processing. + if ( + isClassInstance(destMemberType) && + ClassType.isPropertyClass(destMemberType) && + isClassInstance(srcMemberType) && + ClassType.isPropertyClass(srcMemberType) + ) { if ( - isClassInstance(destMemberType) && - ClassType.isPropertyClass(destMemberType) && - isClassInstance(srcMemberType) && - ClassType.isPropertyClass(srcMemberType) + !assignProperty( + evaluatorInterface, + ClassType.cloneAsInstantiable(destMemberType), + ClassType.cloneAsInstantiable(srcMemberType), + destType, + srcType, + diag, + typeVarContext, + /* selfTypeVarContext */ undefined, + recursionCount + ) ) { - if ( - !assignProperty( - evaluatorInterface, - ClassType.cloneAsInstantiable(destMemberType), - ClassType.cloneAsInstantiable(srcMemberType), - destType, - srcType, - diag, - typeVarContext, - /* selfTypeVarContext */ undefined, - recursionCount - ) - ) { - isAssignable = false; - } - } else { - const primaryDecl = symbol.getDeclarations()[0]; + isAssignable = false; + } + } else { + const primaryDecl = symbol.getDeclarations()[0]; - let flags = AssignTypeFlags.Default; - if ( - primaryDecl?.type === DeclarationType.Variable && - !isFinalVariableDeclaration(primaryDecl) && - !ClassType.isFrozenDataClass(destType) - ) { - // Class and instance variables that are mutable need to - // enforce invariance. - flags |= AssignTypeFlags.EnforceInvariance; - } + let flags = AssignTypeFlags.Default; + if ( + primaryDecl?.type === DeclarationType.Variable && + !isFinalVariableDeclaration(primaryDecl) && + !ClassType.isFrozenDataClass(destType) + ) { + // Class and instance variables that are mutable need to + // enforce invariance. + flags |= AssignTypeFlags.EnforceInvariance; + } - if ( - !assignType( - destMemberType, - srcMemberType, - diag, - typeVarContext, - /* srcTypeVarContext */ undefined, - flags, - recursionCount - ) - ) { - isAssignable = false; - } + if ( + !assignType( + destMemberType, + srcMemberType, + diag, + typeVarContext, + /* srcTypeVarContext */ undefined, + flags, + recursionCount + ) + ) { + isAssignable = false; } } }); diff --git a/packages/pyright-internal/src/tests/samples/autoVariance1.py b/packages/pyright-internal/src/tests/samples/autoVariance1.py index c41531264..bf454e1e5 100644 --- a/packages/pyright-internal/src/tests/samples/autoVariance1.py +++ b/packages/pyright-internal/src/tests/samples/autoVariance1.py @@ -102,12 +102,22 @@ class ShouldBeInvariant4[T]: vinv4_2: ShouldBeInvariant4[float] = vinv4_1 +class ShouldBeInvariant5[T]: + def __init__(self, x: T) -> None: + self.x = x + +vinv5_1: ShouldBeInvariant5[int] = ShouldBeInvariant5(1) + +# This should generate an error based on variance +vinv5_2: ShouldBeInvariant5[float] = vinv5_1 + + class ShouldBeContravariant1[T]: def __init__(self, value: T) -> None: - self._value = value + pass def set_value(self, value: T) -> None: - self._value = value + pass # This should generate an error based on variance diff --git a/packages/pyright-internal/src/tests/samples/autoVariance3.py b/packages/pyright-internal/src/tests/samples/autoVariance3.py index 808ce11ab..f7daee716 100644 --- a/packages/pyright-internal/src/tests/samples/autoVariance3.py +++ b/packages/pyright-internal/src/tests/samples/autoVariance3.py @@ -2,6 +2,7 @@ from typing import Generic, Iterator, Sequence from typing_extensions import TypeVar +from dataclasses import dataclass T = TypeVar("T", infer_variance=True) K = TypeVar("K", infer_variance=True) @@ -95,12 +96,32 @@ class ShouldBeInvariant3(dict[K, V]): vinv3_4: ShouldBeInvariant3[str, int] = ShouldBeInvariant3[str, float]() +@dataclass +class ShouldBeInvariant4[T]: + x: T + +vinv4_1: ShouldBeInvariant4[int] = ShouldBeInvariant4(1) + +# This should generate an error based on variance +vinv4_2: ShouldBeInvariant4[float] = vinv4_1 + + +class ShouldBeInvariant5[T]: + def __init__(self, x: T) -> None: + self.x = x + +vinv5_1: ShouldBeInvariant5[int] = ShouldBeInvariant5(1) + +# This should generate an error based on variance +vinv5_2: ShouldBeInvariant5[float] = vinv5_1 + + class ShouldBeContravariant1(Generic[T]): def __init__(self, value: T) -> None: - self._value = value + pass def set_value(self, value: T): - self._value = value + pass # This should generate an error based on variance diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 76d95a0fc..e4777c489 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -77,7 +77,7 @@ test('AutoVariance1', () => { configOptions.defaultPythonVersion = PythonVersion.V3_12; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['autoVariance1.py'], configOptions); - TestUtils.validateResults(analysisResults, 12); + TestUtils.validateResults(analysisResults, 13); }); test('AutoVariance2', () => { @@ -93,7 +93,7 @@ test('AutoVariance3', () => { configOptions.defaultPythonVersion = PythonVersion.V3_12; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['autoVariance3.py'], configOptions); - TestUtils.validateResults(analysisResults, 13); + TestUtils.validateResults(analysisResults, 15); }); test('AutoVariance4', () => { From 394ad8dcb075ee42695be6ec56ae785441404de7 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 29 Jul 2023 09:14:52 -0600 Subject: [PATCH 451/525] Updated heuristics for how to handle custom metaclass `__call__` methods based on feedback. Previously, if a metaclass `__call__` method was present, pyright assumed that `__new__` and `__init__` may not be called, so it ignored them. The new heuristic assumes that if the metaclass `__call__` returns a type that is consistent with the expected return type of `type.__call__` that it is probably mirroring the behavior of `type.__call__` and calling the class' `__new__` and `__init__` methods. This addresses https://github.com/microsoft/pyright/issues/5586. (#5605) Co-authored-by: Eric Traut --- .../src/analyzer/constructors.ts | 31 +++++++++++--- .../src/tests/samples/metaclass7.py | 40 +++++++++++-------- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 94c357a4e..f7adfb8f5 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -74,9 +74,6 @@ export function validateConstructorArguments( skipUnknownArgCheck: boolean, inferenceContext: InferenceContext | undefined ): CallResult { - // If there a custom `__call__` method on the metaclass, assume that it - // overrides the normal `type.__call__` logic and don't perform the usual - // __new__ and __init__ validation. const metaclassResult = validateMetaclassCall( evaluator, errorNode, @@ -85,8 +82,17 @@ export function validateConstructorArguments( skipUnknownArgCheck, inferenceContext ); + if (metaclassResult) { - return metaclassResult; + const metaclassReturnType = metaclassResult.returnType ?? UnknownType.create(); + + // If there a custom `__call__` method on the metaclass that returns + // something other than Any or an instance of the class, assume that it + // overrides the normal `type.__call__` logic and don't perform the usual + // __new__ and __init__ validation. + if (metaclassResult.argumentErrors || !evaluator.assignType(convertToInstance(type), metaclassReturnType)) { + return metaclassResult; + } } // Determine whether the class overrides the object.__new__ method. @@ -107,7 +113,7 @@ export function validateConstructorArguments( // If there is a constructor transform, evaluate all arguments speculatively // so we can later re-evaluate them in the context of the transform. - const returnResult = evaluator.useSpeculativeMode(useConstructorTransform ? errorNode : undefined, () => { + let returnResult = evaluator.useSpeculativeMode(useConstructorTransform ? errorNode : undefined, () => { return validateNewAndInitMethods( evaluator, errorNode, @@ -169,6 +175,21 @@ export function validateConstructorArguments( }); } + // Reconcile the metaclass __call__ return type and the __new__ return type. + // This is a heuristic because we have no way of knowing how these actually + // interact based on the method signatures alone. + if (metaclassResult?.returnType) { + // If the __new__ and __init__ methods returned `Any` or `Unknown` or `NoReturn`, + // use the metaclass return type instead. + if (!returnResult.returnType || isAnyOrUnknown(returnResult.returnType)) { + if (!isAnyOrUnknown(metaclassResult.returnType)) { + returnResult = { ...returnResult, returnType: metaclassResult.returnType }; + } + } else if (returnResult.returnType && isNever(returnResult.returnType)) { + returnResult = { ...returnResult, returnType: metaclassResult.returnType }; + } + } + return returnResult; } diff --git a/packages/pyright-internal/src/tests/samples/metaclass7.py b/packages/pyright-internal/src/tests/samples/metaclass7.py index e3f7489ff..2a4a6d0cc 100644 --- a/packages/pyright-internal/src/tests/samples/metaclass7.py +++ b/packages/pyright-internal/src/tests/samples/metaclass7.py @@ -3,36 +3,42 @@ # that are created from it. -class FactoryMetaClass1(type): +class MetaClass1(type): def __call__(cls, **kwargs): - return cls() + return object.__new__(**kwargs) -class BaseFactory1: +class Class1(metaclass=MetaClass1): def __new__(cls, *args, **kwargs): - raise RuntimeError("You cannot instantiate BaseFactory") + raise RuntimeError("Cannot instantiate directly") -class Factory1(BaseFactory1, metaclass=FactoryMetaClass1): - ... +v1 = Class1() +reveal_type(v1, expected_text="Class1") -v1 = Factory1() -reveal_type(v1, expected_text="Factory1") +class MetaClass2(type): + pass -class FactoryMetaClass2(type): - ... +class Class2(metaclass=MetaClass2): + def __new__(cls, *args, **kwargs): + raise RuntimeError("Cannot instantiate directly") -class BaseFactory2: - def __new__(cls, *args, **kwargs): - raise RuntimeError("You cannot instantiate BaseFactory") +v2 = Class2() +reveal_type(v2, expected_text="NoReturn") -class Factory2(BaseFactory2, metaclass=FactoryMetaClass2): - ... +class MetaClass3(type): + def __call__(cls, *args, **kwargs): + return super().__call__(*args, **kwargs) -v2 = Factory2() -reveal_type(v2, expected_text="NoReturn") +class Class3(metaclass=MetaClass3): + def __new__(cls, *args, **kwargs): + raise RuntimeError("You cannot instantiate BaseFactory") + + +v3 = Class3() +reveal_type(v3, expected_text="Any") From 10b7fd3d13c8195e9c6a60efe766be8e635d91f2 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 29 Jul 2023 10:07:22 -0600 Subject: [PATCH 452/525] Changed auto-variance algorithm to exempt class and instance variables that are named as protected or private. This addresses https://github.com/microsoft/pyright/discussions/5568#discussioncomment-6582748. --- .../src/analyzer/typeEvaluator.ts | 8 ++- .../src/tests/samples/autoVariance1.py | 52 +++++++++------ .../src/tests/samples/autoVariance3.py | 66 +++++++++++++------ .../src/tests/typeEvaluator5.test.ts | 4 +- 4 files changed, 85 insertions(+), 45 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1a4aac167..eeedabe49 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -21241,8 +21241,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions !ClassType.isFrozenDataClass(destType) ) { // Class and instance variables that are mutable need to - // enforce invariance. - flags |= AssignTypeFlags.EnforceInvariance; + // enforce invariance. We will exempt variables that are + // private or protected, since these are presumably + // not modifiable outside of the class. + if (!isPrivateOrProtectedName(name)) { + flags |= AssignTypeFlags.EnforceInvariance; + } } if ( diff --git a/packages/pyright-internal/src/tests/samples/autoVariance1.py b/packages/pyright-internal/src/tests/samples/autoVariance1.py index bf454e1e5..4850c5b72 100644 --- a/packages/pyright-internal/src/tests/samples/autoVariance1.py +++ b/packages/pyright-internal/src/tests/samples/autoVariance1.py @@ -12,7 +12,7 @@ def __iter__(self) -> Iterator[T]: ... vco1_1: ShouldBeCovariant1[float] = ShouldBeCovariant1[int]() -# This should generate an error based on variance +# This should generate an error based on variance. vco1_2: ShouldBeCovariant1[int] = ShouldBeCovariant1[float]() @@ -20,8 +20,7 @@ class ShouldBeCovariant2[T](Sequence[T]): pass vco2_1: ShouldBeCovariant2[float] = ShouldBeCovariant2[int]() - -# This should generate an error based on variance +# This should generate an error based on variance. vco2_2: ShouldBeCovariant2[int] = ShouldBeCovariant2[float]() @@ -29,16 +28,31 @@ class ShouldBeCovariant3[T]: def method1(self) -> "ShouldBeCovariant2[T]": ... - vco3_1: ShouldBeCovariant3[float] = ShouldBeCovariant3[int]() +# This should generate an error based on variance. +vco3_2: ShouldBeCovariant3[int] = ShouldBeCovariant3[float]() @dataclass(frozen=True) class ShouldBeCovariant4[T]: x: T -vo4_1: ShouldBeCovariant4[int] = ShouldBeCovariant4(1) -vo4_2: ShouldBeCovariant4[float] = vo4_1 +vo4_1: ShouldBeCovariant4[float] = ShouldBeCovariant4[int](1) +# This should generate an error based on variance. +vo4_2: ShouldBeCovariant4[int] = ShouldBeCovariant4[float](1) + + +class ShouldBeCovariant5[T]: + def __init__(self, x: T) -> None: + self._x = x + + @property + def x(self) -> T: + return self._x + +vo5_1: ShouldBeCovariant5[float] = ShouldBeCovariant5[int](1) +# This should generate an error based on variance. +vo5_2: ShouldBeCovariant5[int] = ShouldBeCovariant5[float](1) class ShouldBeInvariant1[T]: @@ -53,10 +67,10 @@ def value(self): def value(self, value: T): self._value = value -# This should generate an error based on variance +# This should generate an error based on variance. vinv1_1: ShouldBeInvariant1[float] = ShouldBeInvariant1[int](1) -# This should generate an error based on variance +# This should generate an error based on variance. vinv1_2: ShouldBeInvariant1[int] = ShouldBeInvariant1[float](1.1) @@ -70,7 +84,7 @@ def get_value(self) ->T: def set_value(self, value: T): self._value = value -# This should generate an error based on variance +# This should generate an error based on variance. vinv2_1: ShouldBeInvariant2[float] = ShouldBeInvariant2[int](1) # This should generate an error based on variance @@ -80,36 +94,32 @@ def set_value(self, value: T): class ShouldBeInvariant3[K, V](dict[K, V]): pass -# This should generate an error based on variance +# This should generate an error based on variance. vinv3_1: ShouldBeInvariant3[float, str] = ShouldBeInvariant3[int, str]() -# This should generate an error based on variance +# This should generate an error based on variance. vinv3_2: ShouldBeInvariant3[int, str] = ShouldBeInvariant3[float, str]() -# This should generate an error based on variance +# This should generate an error based on variance. vinv3_3: ShouldBeInvariant3[str, float] = ShouldBeInvariant3[str, int]() -# This should generate an error based on variance +# This should generate an error based on variance. vinv3_4: ShouldBeInvariant3[str, int] = ShouldBeInvariant3[str, float]() @dataclass class ShouldBeInvariant4[T]: x: T -vinv4_1: ShouldBeInvariant4[int] = ShouldBeInvariant4(1) - # This should generate an error based on variance -vinv4_2: ShouldBeInvariant4[float] = vinv4_1 +vinv4_1: ShouldBeInvariant4[float] = ShouldBeInvariant4[int](1) class ShouldBeInvariant5[T]: def __init__(self, x: T) -> None: self.x = x -vinv5_1: ShouldBeInvariant5[int] = ShouldBeInvariant5(1) - -# This should generate an error based on variance -vinv5_2: ShouldBeInvariant5[float] = vinv5_1 +# This should generate an error based on variance. +vinv5_1: ShouldBeInvariant5[float] = ShouldBeInvariant5[int](1) class ShouldBeContravariant1[T]: @@ -120,7 +130,7 @@ def set_value(self, value: T) -> None: pass -# This should generate an error based on variance +# This should generate an error based on variance. vcontra1_1: ShouldBeContravariant1[float] = ShouldBeContravariant1[int](1) vcontra1_2: ShouldBeContravariant1[int] = ShouldBeContravariant1[float](1.2) diff --git a/packages/pyright-internal/src/tests/samples/autoVariance3.py b/packages/pyright-internal/src/tests/samples/autoVariance3.py index f7daee716..fc2bd689f 100644 --- a/packages/pyright-internal/src/tests/samples/autoVariance3.py +++ b/packages/pyright-internal/src/tests/samples/autoVariance3.py @@ -27,7 +27,7 @@ def __iter__(self) -> Iterator[T]: vco1_1: ShouldBeCovariant1[float] = ShouldBeCovariant1[int]() -# This should generate an error based on variance +# This should generate an error based on variance. vco1_2: ShouldBeCovariant1[int] = ShouldBeCovariant1[float]() @@ -36,11 +36,41 @@ class ShouldBeCovariant2(Sequence[T]): vco2_1: ShouldBeCovariant2[float] = ShouldBeCovariant2[int]() - -# This should generate an error based on variance +# This should generate an error based on variance. vco2_2: ShouldBeCovariant2[int] = ShouldBeCovariant2[float]() +class ShouldBeCovariant3(Generic[T]): + def method1(self) -> "ShouldBeCovariant2[T]": + ... + +vco3_1: ShouldBeCovariant3[float] = ShouldBeCovariant3[int]() +# This should generate an error based on variance. +vco3_2: ShouldBeCovariant3[int] = ShouldBeCovariant3[float]() + + +@dataclass(frozen=True) +class ShouldBeCovariant4(Generic[T]): + x: T + +vo4_1: ShouldBeCovariant4[float] = ShouldBeCovariant4[int](1) +# This should generate an error based on variance. +vo4_4: ShouldBeCovariant4[int] = ShouldBeCovariant4[float](1.0) + + +class ShouldBeCovariant5(Generic[T]): + def __init__(self, x: T) -> None: + self._x = x + + @property + def x(self) -> T: + return self._x + +vo5_1: ShouldBeCovariant5[float] = ShouldBeCovariant5[int](1) +# This should generate an error based on variance. +vo5_2: ShouldBeCovariant5[int] = ShouldBeCovariant5[float](1.0) + + class ShouldBeInvariant1(Generic[T]): def __init__(self, value: T) -> None: self._value = value @@ -54,10 +84,10 @@ def value(self, value: T): self._value = value -# This should generate an error based on variance +# This should generate an error based on variance. vinv1_1: ShouldBeInvariant1[float] = ShouldBeInvariant1[int](1) -# This should generate an error based on variance +# This should generate an error based on variance. vinv1_2: ShouldBeInvariant1[int] = ShouldBeInvariant1[float](1.1) @@ -72,10 +102,10 @@ def set_value(self, value: T): self._value = value -# This should generate an error based on variance +# This should generate an error based on variance. vinv2_1: ShouldBeInvariant2[float] = ShouldBeInvariant2[int](1) -# This should generate an error based on variance +# This should generate an error based on variance. vinv2_2: ShouldBeInvariant2[int] = ShouldBeInvariant2[float](1.1) @@ -83,16 +113,16 @@ class ShouldBeInvariant3(dict[K, V]): pass -# This should generate an error based on variance +# This should generate an error based on variance. vinv3_1: ShouldBeInvariant3[float, str] = ShouldBeInvariant3[int, str]() -# This should generate an error based on variance +# This should generate an error based on variance. vinv3_2: ShouldBeInvariant3[int, str] = ShouldBeInvariant3[float, str]() -# This should generate an error based on variance +# This should generate an error based on variance. vinv3_3: ShouldBeInvariant3[str, float] = ShouldBeInvariant3[str, int]() -# This should generate an error based on variance +# This should generate an error based on variance. vinv3_4: ShouldBeInvariant3[str, int] = ShouldBeInvariant3[str, float]() @@ -100,20 +130,16 @@ class ShouldBeInvariant3(dict[K, V]): class ShouldBeInvariant4[T]: x: T -vinv4_1: ShouldBeInvariant4[int] = ShouldBeInvariant4(1) - -# This should generate an error based on variance -vinv4_2: ShouldBeInvariant4[float] = vinv4_1 +# This should generate an error based on variance. +vinv4_1: ShouldBeInvariant4[float] = ShouldBeInvariant4[int](1) class ShouldBeInvariant5[T]: def __init__(self, x: T) -> None: self.x = x -vinv5_1: ShouldBeInvariant5[int] = ShouldBeInvariant5(1) - -# This should generate an error based on variance -vinv5_2: ShouldBeInvariant5[float] = vinv5_1 +# This should generate an error based on variance. +vinv5_1: ShouldBeInvariant5[float] = ShouldBeInvariant5[int](1) class ShouldBeContravariant1(Generic[T]): @@ -124,7 +150,7 @@ def set_value(self, value: T): pass -# This should generate an error based on variance +# This should generate an error based on variance. vcontra1_1: ShouldBeContravariant1[float] = ShouldBeContravariant1[int](1) vcontra1_2: ShouldBeContravariant1[int] = ShouldBeContravariant1[float](1.2) diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index e4777c489..36364dc81 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -77,7 +77,7 @@ test('AutoVariance1', () => { configOptions.defaultPythonVersion = PythonVersion.V3_12; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['autoVariance1.py'], configOptions); - TestUtils.validateResults(analysisResults, 13); + TestUtils.validateResults(analysisResults, 16); }); test('AutoVariance2', () => { @@ -93,7 +93,7 @@ test('AutoVariance3', () => { configOptions.defaultPythonVersion = PythonVersion.V3_12; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['autoVariance3.py'], configOptions); - TestUtils.validateResults(analysisResults, 15); + TestUtils.validateResults(analysisResults, 18); }); test('AutoVariance4', () => { From d22b655fdbf0447db7c432acf255715b2eccfbe1 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 29 Jul 2023 11:54:34 -0600 Subject: [PATCH 453/525] Fixed a regression that caused class decorators of generic classes to no longer be specializable. This addresses https://github.com/microsoft/pyright/issues/5579. (#5606) Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 10 ++---- .../src/analyzer/typeUtils.ts | 22 ++++++++++--- .../pyright-internal/src/analyzer/types.ts | 10 +++--- .../src/tests/samples/annotations1.py | 6 +--- .../src/tests/samples/solver27.py | 33 ++++++++++++++++++- 5 files changed, 59 insertions(+), 22 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 0c411d021..56e645cf1 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -397,14 +397,8 @@ export function assignTypeToTypeVar( // If the source is a class that is missing type arguments, fill // in missing type arguments with Unknown. if ((flags & AssignTypeFlags.AllowUnspecifiedTypeArguments) === 0) { - if (isClass(adjSrcType)) { - // Skip this if the source is a concrete class and the dest is - // not a type[T]. This combination is used for class decorators - // such as dataclass_transform, and we need to retain the original - // unspecialized class in this case. - if (adjSrcType.includeSubclasses || TypeBase.isInstantiable(destType)) { - adjSrcType = specializeWithDefaultTypeArgs(adjSrcType); - } + if (isClass(adjSrcType) && adjSrcType.includeSubclasses) { + adjSrcType = specializeWithDefaultTypeArgs(adjSrcType); } } diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index ea2d3862c..3657a2efc 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -790,7 +790,7 @@ export function specializeWithDefaultTypeArgs(type: ClassType): ClassType { type, type.details.typeParameters.map((param) => param.details.defaultType ?? UnknownType.create()), /* isTypeArgumentExplicit */ false, - !!type.includeSubclasses + /* includeSubclasses */ true ); } @@ -2056,7 +2056,7 @@ export function convertToInstance(type: Type, includeSubclasses = true): Type { return result; } -export function convertToInstantiable(type: Type): Type { +export function convertToInstantiable(type: Type, includeSubclasses = true): Type { // See if we've already performed this conversion and cached it. if (type.cached?.instantiableType) { return type.cached.instantiableType; @@ -2065,7 +2065,7 @@ export function convertToInstantiable(type: Type): Type { let result = mapSubtypes(type, (subtype) => { switch (subtype.category) { case TypeCategory.Class: { - return ClassType.cloneAsInstantiable(subtype); + return ClassType.cloneAsInstantiable(subtype, includeSubclasses); } case TypeCategory.None: { @@ -3726,7 +3726,21 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { /* isTypeArgumentExplicit */ true ); } else { - replacement = convertToInstantiable(replacement); + replacement = convertToInstantiable(replacement, /* includeSubclasses */ false); + } + } else { + // If the TypeVar is not instantiable (i.e. not a type[T]), then + // it represents an instance of a type. If the replacement includes + // a generic class that has not been specialized, specialize it + // now with default type arguments. + if (this._options.unknownIfNotFound) { + replacement = mapSubtypes(replacement, (subtype) => { + if (isClassInstance(subtype) && !subtype.includeSubclasses) { + return specializeWithDefaultTypeArgs(subtype); + } + + return subtype; + }); } } diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index aba5cfadc..dcb1577ca 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -729,14 +729,16 @@ export namespace ClassType { return newInstance; } - export function cloneAsInstantiable(type: ClassType): ClassType { - if (type.cached?.typeBaseInstantiableType) { + export function cloneAsInstantiable(type: ClassType, includeSubclasses = true): ClassType { + if (includeSubclasses && type.cached?.typeBaseInstantiableType) { return type.cached.typeBaseInstantiableType as ClassType; } - const newInstance = TypeBase.cloneTypeAsInstantiable(type, /* cache */ true); + const newInstance = TypeBase.cloneTypeAsInstantiable(type, includeSubclasses); newInstance.flags &= ~TypeFlags.SpecialForm; - newInstance.includeSubclasses = true; + if (includeSubclasses) { + newInstance.includeSubclasses = true; + } return newInstance; } diff --git a/packages/pyright-internal/src/tests/samples/annotations1.py b/packages/pyright-internal/src/tests/samples/annotations1.py index 5e0920bdd..115fe57c6 100644 --- a/packages/pyright-internal/src/tests/samples/annotations1.py +++ b/packages/pyright-internal/src/tests/samples/annotations1.py @@ -117,11 +117,7 @@ class ClassJ: T = TypeVar("T") -def func13(x: type[T]) -> type[T]: - return x - - -x5 = func13(int) +x5: type[int] = int # This should generate an error because variables are not allowed # in a type annotation. diff --git a/packages/pyright-internal/src/tests/samples/solver27.py b/packages/pyright-internal/src/tests/samples/solver27.py index d0c8d2dfe..323a307e8 100644 --- a/packages/pyright-internal/src/tests/samples/solver27.py +++ b/packages/pyright-internal/src/tests/samples/solver27.py @@ -2,7 +2,7 @@ # without supplied type arguments is given default type arguments (typically # Unknown) when the TypeVar is solved. -from typing import Any, TypeVar, reveal_type +from typing import Any, Callable, Generic, Iterable, TypeVar, reveal_type T = TypeVar("T") @@ -21,3 +21,34 @@ def deco2(t: T, val: Any) -> T: v2 = deco2(dict, {"foo": "bar"}) reveal_type(v2, expected_text="type[dict[Unknown, Unknown]]") + + +def deco3(t: type[T]) -> type[T]: + return t + + +@deco3 +class ClassA(Generic[T]): + pass + + +reveal_type(ClassA[int], expected_text="type[ClassA[int]]") + + +def deco4() -> Callable[[type[T]], type[T]]: + ... + + +@deco4() +class ClassB: + def get_features(self) -> list[str]: + ... + + +def func1(specs: Iterable[str] | ClassB) -> None: + if isinstance(specs, ClassB): + features = specs.get_features() + else: + features = specs + + set(features) From 7df17e1c87d81ed6fe73d5b06d3b67b511a71942 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 29 Jul 2023 15:08:21 -0600 Subject: [PATCH 454/525] Fixed a bug that resulted in an apparent hang within the type printing logic. This was triggered by a pathological case involving a deeply recursive type. This addresses https://github.com/microsoft/pyright/issues/5594. --- packages/pyright-internal/src/analyzer/types.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index dcb1577ca..c35f614d2 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -103,7 +103,12 @@ export class EnumLiteral { export type LiteralValue = number | bigint | boolean | string | EnumLiteral; export type TypeSourceId = number; -export const maxTypeRecursionCount = 32; + +// This constant controls the maximum number of nested types (i.e. types +// used as type arguments or parameter types in other types) before we +// give up. This constant was previously set to 32, but there were certain +// pathological recursive types where this resulted in a hang. +export const maxTypeRecursionCount = 10; export type InheritanceChain = (ClassType | UnknownType)[]; From a5b5b706fe0c5fd0fe54049b7fae440bd964404e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 29 Jul 2023 16:09:07 -0600 Subject: [PATCH 455/525] Removed old and misleading comment in a test case. No functional change. --- .../pyright-internal/src/tests/samples/solverHigherOrder1.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/pyright-internal/src/tests/samples/solverHigherOrder1.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder1.py index a6bb146b0..475f876c4 100644 --- a/packages/pyright-internal/src/tests/samples/solverHigherOrder1.py +++ b/packages/pyright-internal/src/tests/samples/solverHigherOrder1.py @@ -3,9 +3,6 @@ # pass a generic function "identity" to another generic # function "fmap". -# NOTE: This test is no longer working. It previously worked -# because of the looser handling of TypeVars. - from typing import TypeVar, Callable T1 = TypeVar("T1") From 501681295b13b8b088c192fac6b62011a791c690 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 29 Jul 2023 22:45:10 -0600 Subject: [PATCH 456/525] Modified type inference logic so methods that raise an exception whose type derives from `NotImplementedError` is not inferred to return `NoReturn`. Previously, only `NotImplementedError` was exempted, not subclasses. This addresses https://github.com/microsoft/pyright/issues/5608. (#5609) Co-authored-by: Eric Traut --- docs/type-inference.md | 2 +- docs/typed-libraries.md | 2 +- .../src/analyzer/codeFlowEngine.ts | 16 ++++----- .../src/analyzer/typeEvaluator.ts | 9 ++--- .../src/analyzer/typeUtils.ts | 4 +++ .../src/tests/samples/inferredTypes1.py | 2 +- .../src/tests/samples/inferredTypes3.py | 33 +++++++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 5 +++ 8 files changed, 57 insertions(+), 16 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/inferredTypes3.py diff --git a/docs/type-inference.md b/docs/type-inference.md index 59f50585d..a374c69c5 100644 --- a/docs/type-inference.md +++ b/docs/type-inference.md @@ -142,7 +142,7 @@ def func1(val: int): #### NoReturn return type -If there is no code path that returns from a function (e.g. all code paths raise an exception), Pyright infers a return type of `NoReturn`. As an exception to this rule, if the function is decorated with `@abstractmethod`, the return type is not inferred as `NoReturn` even if there is no return. This accommodates a common practice where an abstract method is implemented with a `raise NotImplementedError()` statement. +If there is no code path that returns from a function (e.g. all code paths raise an exception), Pyright infers a return type of `NoReturn`. As an exception to this rule, if the function is decorated with `@abstractmethod`, the return type is not inferred as `NoReturn` even if there is no return. This accommodates a common practice where an abstract method is implemented with a `raise` statement that raises an exception of type `NotImplementedError`. ```python class Foo: diff --git a/docs/typed-libraries.md b/docs/typed-libraries.md index 6f86b510c..5cd85849a 100644 --- a/docs/typed-libraries.md +++ b/docs/typed-libraries.md @@ -311,7 +311,7 @@ StrOrInt: TypeAlias = str | int ``` #### Abstract Classes and Methods -Classes that must be subclassed should derive from `ABC`, and methods or properties that must be overridden should be decorated with the `@abstractmethod` decorator. This allows type checkers to validate that the required methods have been overridden and provide developers with useful error messages when they are not. It is customary to implement an abstract method by raising a `NotImplementedError` exception. +Classes that must be subclassed should derive from `ABC`, and methods or properties that must be overridden should be decorated with the `@abstractmethod` decorator. This allows type checkers to validate that the required methods have been overridden and provide developers with useful error messages when they are not. It is customary to implement an abstract method by raising a `NotImplementedError` exception or subclass thereof. ```python from abc import ABC, abstractmethod diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index 4b0664e35..79e635bd0 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -65,6 +65,7 @@ import { } from './types'; import { ClassMemberLookupFlags, + derivesFromStdlibClass, doForEachSubtype, isIncompleteUnknown, isTypeAliasPlaceholder, @@ -1620,16 +1621,13 @@ export function getCodeFlowEngine( } if (simpleStatement.nodeType === ParseNodeType.Raise && simpleStatement.typeExpression) { - // Check for "raise NotImplementedError" or "raise NotImplementedError()" - const isNotImplementedName = (node: ParseNode) => { - return node?.nodeType === ParseNodeType.Name && node.value === 'NotImplementedError'; - }; + // Check for a raising about 'NotImplementedError' or a subtype thereof. + const exceptionType = evaluator.getType(simpleStatement.typeExpression); - if (isNotImplementedName(simpleStatement.typeExpression)) { - foundRaiseNotImplemented = true; - } else if ( - simpleStatement.typeExpression.nodeType === ParseNodeType.Call && - isNotImplementedName(simpleStatement.typeExpression.leftExpression) + if ( + exceptionType && + isClass(exceptionType) && + derivesFromStdlibClass(exceptionType, 'NotImplementedError') ) { foundRaiseNotImplemented = true; } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index eeedabe49..19fcfabbc 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -200,6 +200,7 @@ import { convertToInstantiable, convertTypeToParamSpecValue, derivesFromClassRecursive, + derivesFromStdlibClass, doForEachSubtype, ensureFunctionSignaturesAreUnique, explodeGenericClass, @@ -17540,9 +17541,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return inferredReturnType ? { type: inferredReturnType, isIncomplete } : undefined; } - // Determines whether the function consists only of a "raise" statement - // and the exception type raised is a NotImplementedError. This is commonly - // used for abstract methods that + // Determines whether the method consists only of a "raise" statement + // and the exception type raised is a NotImplementedError or a subclass + // thereof. This is commonly used for abstract methods. function methodAlwaysRaisesNotImplemented(functionDecl?: FunctionDeclaration): boolean { if ( !functionDecl || @@ -17564,7 +17565,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions : isClassInstance(raiseType) ? raiseType : undefined; - if (!classType || !ClassType.isBuiltIn(classType, 'NotImplementedError')) { + if (!classType || !derivesFromStdlibClass(classType, 'NotImplementedError')) { return false; } } diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 3657a2efc..787be5c1f 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1856,6 +1856,10 @@ export function specializeForBaseClass(srcType: ClassType, baseClass: ClassType) return specializedType as ClassType; } +export function derivesFromStdlibClass(classType: ClassType, className: string) { + return classType.details.mro.some((mroClass) => isClass(mroClass) && ClassType.isBuiltIn(mroClass, className)); +} + // If ignoreUnknown is true, an unknown base class is ignored when // checking for derivation. If ignoreUnknown is false, a return value // of true is assumed. diff --git a/packages/pyright-internal/src/tests/samples/inferredTypes1.py b/packages/pyright-internal/src/tests/samples/inferredTypes1.py index c5b4ac22e..7a5193aa0 100644 --- a/packages/pyright-internal/src/tests/samples/inferredTypes1.py +++ b/packages/pyright-internal/src/tests/samples/inferredTypes1.py @@ -12,7 +12,7 @@ def make_api_request(auth: str) -> str: return "meow" -def testfunc() -> None: +def func1() -> None: resp = open("test") auth = resp.read() diff --git a/packages/pyright-internal/src/tests/samples/inferredTypes3.py b/packages/pyright-internal/src/tests/samples/inferredTypes3.py new file mode 100644 index 000000000..3cd9f4905 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/inferredTypes3.py @@ -0,0 +1,33 @@ +# This sample tests return type annotations for functions that +# do not return. + +from abc import ABC, abstractmethod + + +class OtherError(NotImplementedError): + ... + + +class A(ABC): + def func1(self): + raise Exception("test") + + def func2(self): + raise NotImplementedError() + + def func3(self): + raise OtherError + + @abstractmethod + def func4(self): + raise Exception() + + +def func1(a: A): + reveal_type(a.func1(), expected_text="NoReturn") + + reveal_type(a.func2(), expected_text="Unknown") + + reveal_type(a.func3(), expected_text="Unknown") + + reveal_type(a.func4(), expected_text="Unknown") diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 0f0791e78..2cb5faa24 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -374,6 +374,11 @@ test('InferredTypes2', () => { TestUtils.validateResults(analysisResults, 0); }); +test('InferredTypes3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['inferredTypes3.py']); + TestUtils.validateResults(analysisResults, 0); +}); + test('CallSite2', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['callSite2.py']); TestUtils.validateResults(analysisResults, 0); From 3f7c20213d2748762469f47f7ed5b2c2cf79aceb Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 30 Jul 2023 10:41:23 -0600 Subject: [PATCH 457/525] Documented the difference between mypy's and pyright's handling of `None` return type. --- docs/mypy-comparison.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/mypy-comparison.md b/docs/mypy-comparison.md index fc25c8b0e..fb4fdb2d6 100644 --- a/docs/mypy-comparison.md +++ b/docs/mypy-comparison.md @@ -289,6 +289,13 @@ When pyright evaluates a call to a constructor, it attempts to follow the runtim By comparison, mypy first evaluates the `__init__` method if present, and it ignores the annotated return type of the `__new__` method. +### `None` Return Type + +If the return type of a function is declared as `None`, an attempt to call that function and consume the returned value is flagged as an error by mypy. The justification is that this is a common source of bugs. + +Pyright does not special-case `None` in this manner because there are legitimate use cases, and in our experience, this class of bug is rare. + + ### Constraint Solver Behaviors When evaluating a call expression that invokes a generic class constructor or a generic function, a type checker performs a process called “constraint solving” to solve the type variables found within the target function signature. The solved type variables are then applied to the return type of that function to determine the final type of the call expression. This process is called “constraint solving” because it takes into account various constraints that are specified for each type variable. These constraints include variance rules and type variable bounds. From cd156e7f9d139166712ee78b8756ee802dac2a94 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 31 Jul 2023 08:52:29 -0600 Subject: [PATCH 458/525] Removed old code that looks for a `typeshed` override in the standard python search paths. This works around an issue with the `inject` library, which installs a bogus `typeshed` directory into `site-packages`. This addresses https://github.com/microsoft/pyright/issues/5611. --- packages/pyright-internal/src/analyzer/importResolver.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 5428895a6..13960d7b7 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -2097,15 +2097,6 @@ export class ImportResolver { if (this.dirExistsCached(customTypeshedPath)) { typeshedPath = customTypeshedPath; } - } else { - const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo); - for (const searchPath of pythonSearchPaths) { - const possibleTypeshedPath = combinePaths(searchPath, 'typeshed'); - if (this.dirExistsCached(possibleTypeshedPath)) { - typeshedPath = possibleTypeshedPath; - break; - } - } } // If typeshed directory wasn't found in other locations, use the fallback. From 9d2647c6998dfc568118e56bba842be00437e29f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 31 Jul 2023 13:47:49 -0600 Subject: [PATCH 459/525] Fixed a bug that results in unsolved type variables in a call return if the target function's return type is a callable that has type variables that are scoped to that callable. --- .../src/analyzer/typeEvaluator.ts | 15 ++++++++++----- .../src/tests/samples/solverHigherOrder5.py | 11 +++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 19fcfabbc..0f0d73abe 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -11007,10 +11007,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } // We'll leave TypeVars unsolved if the call is a recursive - // call to a generic function. - const unknownIfNotFound = !ParseTreeUtils.getTypeVarScopesForNode(errorNode).some((typeVarScope) => - typeVarContext.hasSolveForScope(typeVarScope) - ); + // call to a generic function or if this isn't a callable + // return with type parameters that are rescoped from the original + // function to the returned callable. + const unknownIfNotFound = + !ParseTreeUtils.getTypeVarScopesForNode(errorNode).some((typeVarScope) => + typeVarContext.hasSolveForScope(typeVarScope) + ) && !type.details.rescopedTypeParameters; let specializedReturnType = applySolvedTypeVars(returnType, typeVarContext, { unknownIfNotFound, @@ -17064,7 +17067,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Note that the type parameters have been rescoped so they are not // considered valid for the body of this function. - functionType.details.rescopedTypeParameters = rescopedTypeVars; + if (rescopedTypeVars.length > 0) { + functionType.details.rescopedTypeParameters = rescopedTypeVars; + } } function adjustParameterAnnotatedType(param: ParameterNode, type: Type): Type { diff --git a/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py index 9c3996d78..3b93fe696 100644 --- a/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py +++ b/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py @@ -147,3 +147,14 @@ def test_5(a: Any, *args: int, b: Any = ...) -> Any: val4, expected_text="type[list[Overload[(a: (**P(1)@test_5) -> type[T(1)@test_5], *, b: Literal[False] | None = ...) -> type[list[type[T(1)@test_5]]], (a: T(1)@test_5, *args: int, b: Literal[False] | None = ...) -> type[list[T(1)@test_5]], (a: T(1)@test_5, *args: int, b: Literal[True] = ...) -> type[list[T(1)@test_5]], (a: Any, *args: int, b: Any = ...) -> Any]]]", ) + + +def test_6(g: Callable[[B], C]) -> Callable[[Callable[[A], B]], Callable[[A], C]]: + ... + + +val5 = test_6(test_6) +reveal_type( + val5, + expected_text="((A@test_6) -> ((B(1)@test_6) -> C(1)@test_6)) -> ((A@test_6) -> ((((A(1)@test_6) -> B(1)@test_6)) -> ((A(1)@test_6) -> C(1)@test_6)))", +) From 567bbc2528d4f179c64624e734365b62ae3890c0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 31 Jul 2023 14:50:25 -0600 Subject: [PATCH 460/525] Fixed a bug that resulted in incorrect type evaluation when a generic function that returns a callable is passed itself as an argument and the resulting callable is then called and passed that same function as an argument. This addresses https://github.com/microsoft/pyright/issues/5510. --- .../src/analyzer/typeEvaluator.ts | 28 +++++++++++------ .../src/analyzer/typeUtils.ts | 30 +++++++++++++------ .../pyright-internal/src/analyzer/types.ts | 15 +++++++++- .../src/tests/samples/solverHigherOrder5.py | 11 +++++++ 4 files changed, 65 insertions(+), 19 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 0f0d73abe..3644840be 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -276,6 +276,7 @@ import { NeverType, NoneType, OverloadedFunctionType, + SignatureWithOffsets, TupleTypeArgument, Type, TypeBase, @@ -11095,7 +11096,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - specializedReturnType = adjustCallableReturnType(specializedReturnType); + specializedReturnType = adjustCallableReturnType( + specializedReturnType, + signatureTracker.getTrackedSignatures() + ); if (specializedInitSelfType) { specializedInitSelfType = applySolvedTypeVars(specializedInitSelfType, typeVarContext); @@ -11149,12 +11153,17 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return []; } - function adjustCallableReturnType(returnType: Type): Type { - // If the return type includes a generic Callable type, set the type var - // scope to a wildcard to allow these type vars to be solved. This won't - // work with overloads or unions of callables. It's intended for a - // specific use case. We may need to make this more sophisticated in - // the future. + // If the return type includes a generic Callable type, set the type var + // scope to a wildcard to allow these type vars to be solved. This won't + // work with overloads or unions of callables. It's intended for a + // specific use case. We may need to make this more sophisticated in + // the future. + // The trackedSignatures parameter supplies a list of function signatures + // that were used for the function and the arguments passed to it. This is + // important because the callable return value may be called again with + // one of these signatures, so we may need to "uniquify" the type parameters + // to avoid conflicts. + function adjustCallableReturnType(returnType: Type, trackedSignatures?: SignatureWithOffsets[]): Type { if (isFunction(returnType) && !returnType.details.name) { const typeVarsInReturnType = getTypeVarArgumentsRecursive(returnType); @@ -11165,7 +11174,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return FunctionType.cloneWithNewTypeVarScopeId( returnType, WildcardTypeVarScopeId, - typeVarsInReturnType + typeVarsInReturnType, + trackedSignatures ); } } @@ -20692,7 +20702,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ) { const specializedReturnType = FunctionType.getSpecializedReturnType(type); if (specializedReturnType) { - return adjustCallableReturnType(specializedReturnType); + return adjustCallableReturnType(specializedReturnType, /* trackedSignatures */ undefined); } if (inferTypeIfNeeded) { diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 787be5c1f..4091ebd6e 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -46,6 +46,7 @@ import { NeverType, NoneType, OverloadedFunctionType, + SignatureWithOffsets, SpecializedFunctionTypes, TupleTypeArgument, Type, @@ -210,11 +211,6 @@ export interface InferenceContext { signatureTracker?: UniqueSignatureTracker; } -export interface SignatureWithOffsets { - type: FunctionType | OverloadedFunctionType; - expressionOffsets: number[]; -} - // Tracks whether a function signature has been seen before within // an expression. For example, in the expression "foo(foo, foo)", the // signature for "foo" will be seen three times at three different @@ -222,10 +218,22 @@ export interface SignatureWithOffsets { // type variables for each instance because they are independent of // each other. export class UniqueSignatureTracker { - private _signaturesSeen: SignatureWithOffsets[]; + private _trackedSignatures: SignatureWithOffsets[]; constructor() { - this._signaturesSeen = []; + this._trackedSignatures = []; + } + + getTrackedSignatures() { + return this._trackedSignatures; + } + + addTrackedSignatures(signatures: SignatureWithOffsets[]) { + signatures.forEach((s) => { + s.expressionOffsets.forEach((offset) => { + this.addSignature(s.type, offset); + }); + }); } findSignature(signature: FunctionType | OverloadedFunctionType): SignatureWithOffsets | undefined { @@ -235,7 +243,7 @@ export class UniqueSignatureTracker { effectiveSignature = signature.overloaded; } - return this._signaturesSeen.find((s) => { + return this._trackedSignatures.find((s) => { return isTypeSame(effectiveSignature, s.type); }); } @@ -250,7 +258,7 @@ export class UniqueSignatureTracker { existingSignature.expressionOffsets.push(offset); } } else { - this._signaturesSeen.push({ type: effectiveSignature, expressionOffsets: [offset] }); + this._trackedSignatures.push({ type: effectiveSignature, expressionOffsets: [offset] }); } } } @@ -3628,6 +3636,10 @@ class UniqueFunctionSignatureTransformer extends TypeVarTransformer { sourceType: FunctionType, recursionCount: number ): FunctionType | OverloadedFunctionType { + if (sourceType.trackedSignatures) { + this._signatureTracker.addTrackedSignatures(sourceType.trackedSignatures); + } + // If this function is not generic, there's no need to check for uniqueness. if (sourceType.details.typeParameters.length === 0) { return super.transformTypeVarsInFunctionType(sourceType, recursionCount); diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index c35f614d2..4ef482e08 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1374,6 +1374,11 @@ export interface CallSiteInferenceTypeCacheEntry { returnType: Type; } +export interface SignatureWithOffsets { + type: FunctionType | OverloadedFunctionType; + expressionOffsets: number[]; +} + export interface FunctionType extends TypeBase { category: TypeCategory.Function; @@ -1408,6 +1413,12 @@ export interface FunctionType extends TypeBase { // If this function is part of an overloaded function, this // refers back to the overloaded function type. overloaded?: OverloadedFunctionType; + + // If this function is a callable that was returned by another + // function call, the signatures of the function that was used + // for that call and any other signatures that were passed as + // arguments to it. + trackedSignatures?: SignatureWithOffsets[]; } export namespace FunctionType { @@ -1658,7 +1669,8 @@ export namespace FunctionType { export function cloneWithNewTypeVarScopeId( type: FunctionType, newScopeId: TypeVarScopeId, - typeParameters: TypeVarType[] + typeParameters: TypeVarType[], + trackedSignatures?: SignatureWithOffsets[] ): FunctionType { const newFunction = TypeBase.cloneType(type); @@ -1666,6 +1678,7 @@ export namespace FunctionType { newFunction.details = { ...type.details }; newFunction.details.typeVarScopeId = newScopeId; newFunction.details.typeParameters = typeParameters; + newFunction.trackedSignatures = trackedSignatures; return newFunction; } diff --git a/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py b/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py index 3b93fe696..af4ddb250 100644 --- a/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py +++ b/packages/pyright-internal/src/tests/samples/solverHigherOrder5.py @@ -158,3 +158,14 @@ def test_6(g: Callable[[B], C]) -> Callable[[Callable[[A], B]], Callable[[A], C] val5, expected_text="((A@test_6) -> ((B(1)@test_6) -> C(1)@test_6)) -> ((A@test_6) -> ((((A(1)@test_6) -> B(1)@test_6)) -> ((A(1)@test_6) -> C(1)@test_6)))", ) + + +def test_7( + g: Callable[[C], D] +) -> Callable[[Callable[[A], Callable[[B], C]]], Callable[[A], Callable[[B], D]]]: + val6 = test_6(test_6)(test_6)(g) + reveal_type( + val6, + expected_text="((A(1)@test_6) -> ((A(2)@test_6) -> C@test_7)) -> ((A(1)@test_6) -> ((A(2)@test_6) -> D@test_7))", + ) + return val6 From 050a3c6ceaeffbce4181e006bb9626fbcd59e028 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 31 Jul 2023 23:27:45 -0600 Subject: [PATCH 461/525] Fixed a bug in the command-line version of pyright where it did not enable "auto search paths", so it didn't automatically add "src" as an extra path. This addresses https://github.com/microsoft/pyright/issues/4771. --- docs/import-resolution.md | 2 +- packages/pyright-internal/src/analyzer/service.ts | 2 +- packages/pyright-internal/src/pyright.ts | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/import-resolution.md b/docs/import-resolution.md index 5e0ccfa91..e118b4122 100644 --- a/docs/import-resolution.md +++ b/docs/import-resolution.md @@ -13,7 +13,7 @@ For absolute (non-relative) imports, Pyright employs the following resolution or * Try to resolve using any of the **extra paths** defined for the execution environment in the config file. If no execution environment applies, use the `python.analysis.extraPaths` setting. Extra paths are searched in the order in which they are provided in the config file or setting. - * If no execution environment or extraPaths are configured, try to resolve using the **local directory `src`**. It is common for Python projects to place local source files within a directory of this name. + * If no execution environment is configured, try to resolve using the **local directory `src`**. It is common for Python projects to place local source files within a directory of this name. 3. Try to resolve using **stubs or inlined types found within installed packages**. Pyright uses the configured Python environment to determine whether a package has been installed. For more details about how to configure your Python environment for Pyright, see below. If a Python environment is configured, Pyright looks in the `lib/site-packages`, `Lib/site-packages`, or `python*/site-packages` subdirectory. If no site-packages directory can be found, Pyright attempts to run the configured Python interpreter and ask it for its search paths. If no Python environment is configured, Pyright will use the default Python interpreter by invoking `python`. diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 1b6b967eb..7ba622dbd 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -592,7 +592,7 @@ export class AnalyzerService { configOptions.defaultPythonVersion = commandLineOptions.pythonVersion; configOptions.ensureDefaultExtraPaths( this.fs, - commandLineOptions.autoSearchPaths || false, + commandLineOptions.autoSearchPaths ?? false, commandLineOptions.extraPaths ); diff --git a/packages/pyright-internal/src/pyright.ts b/packages/pyright-internal/src/pyright.ts index 6bd27dd04..772e5bb29 100644 --- a/packages/pyright-internal/src/pyright.ts +++ b/packages/pyright-internal/src/pyright.ts @@ -310,6 +310,9 @@ async function processArgs(): Promise { options.verboseOutput = true; } + // Always enable autoSearchPaths when using the command line. + options.autoSearchPaths = true; + if (args.lib) { console.warn(`The --lib option is deprecated. Pyright now defaults to using library code to infer types.`); } From fb56dccde02874f2db2c0bbe64fa76fc469fd690 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 31 Jul 2023 23:40:17 -0600 Subject: [PATCH 462/525] Fixed a bug that led to a false negative when determining whether two base classes that are combined using multiple inheritance implement the same method in an incompatible way. The bug caused the check to be skipped if the child class also implemented the same method as the two base classes. This addresses https://github.com/python/mypy/issues/15790. (#5617) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/checker.ts | 2 +- packages/pyright-internal/src/analyzer/typeUtils.ts | 6 +++++- .../pyright-internal/src/tests/samples/methodOverride3.py | 6 +++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 83fc489e6..6ed2e64d2 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -5177,7 +5177,7 @@ export class Checker extends ParseTreeWalker { return getClassFieldsRecursive(specializedBaseClass); }); - const childClassSymbolMap = getClassFieldsRecursive(classType); + const childClassSymbolMap = getClassFieldsRecursive(classType, /* skipInitialClass */ true); for (let symbolMapBaseIndex = 1; symbolMapBaseIndex < baseClassSymbolMaps.length; symbolMapBaseIndex++) { const baseSymbolMap = baseClassSymbolMaps[symbolMapBaseIndex]; diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 4091ebd6e..f80921b93 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1464,11 +1464,15 @@ export function* getClassIterator(classType: Type, flags = ClassIteratorFlags.De return undefined; } -export function getClassFieldsRecursive(classType: ClassType): Map { +export function getClassFieldsRecursive(classType: ClassType, skipInitialClass = false): Map { const memberMap = new Map(); // Evaluate the types of members from the end of the MRO to the beginning. ClassType.getReverseMro(classType).forEach((mroClass) => { + if (skipInitialClass && isClass(mroClass) && ClassType.isSameGenericClass(mroClass, classType)) { + return; + } + const specializedMroClass = partiallySpecializeType(mroClass, classType); if (isClass(specializedMroClass)) { diff --git a/packages/pyright-internal/src/tests/samples/methodOverride3.py b/packages/pyright-internal/src/tests/samples/methodOverride3.py index 64d768789..bdb013471 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride3.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride3.py @@ -2,8 +2,7 @@ # This functionality is controlled by the reportIncompatibleMethodOverride # diagnostic rule. - -from typing import Generic, Iterable, ParamSpec, TypeVar +from typing import Any, Generic, Iterable, ParamSpec, TypeVar class A1: @@ -18,7 +17,8 @@ def func1(self, a: int, b: int = 3) -> str: # This should generate an error because func1 is incompatible. class ASub(A1, A2): - ... + def func1(self, *args: Any, **kwargs: Any) -> str: + ... class B1: From 66281f58d854997903491956f8f3fc7ce5141e2a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 1 Aug 2023 12:29:04 -0600 Subject: [PATCH 463/525] Fixed a bug that resulted in a false positive error when using an unpack operator within a call to an overloaded function. This addresses https://github.com/microsoft/pyright/issues/5620. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 1 + packages/pyright-internal/src/tests/samples/unpack4.py | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 3644840be..9cf2c2e68 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1327,6 +1327,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions }; typeResult = { type: iteratorTypeResult.type, + typeErrors: iterTypeResult.typeErrors, unpackedType: iterType, isIncomplete: iteratorTypeResult.isIncomplete, }; diff --git a/packages/pyright-internal/src/tests/samples/unpack4.py b/packages/pyright-internal/src/tests/samples/unpack4.py index 225d57c15..aa008647f 100644 --- a/packages/pyright-internal/src/tests/samples/unpack4.py +++ b/packages/pyright-internal/src/tests/samples/unpack4.py @@ -12,7 +12,8 @@ print(c) # This should always generate an error. -*a, *b = ( - 1, - 2, -) +*a, *b = (1, 2) + + +def func1(x: str): + "".join([*sorted([x])]) From 76ea0f8aa5bdcbf09a64e378b964ba40287d1369 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 1 Aug 2023 13:16:08 -0600 Subject: [PATCH 464/525] Fixed a bug that resulted in a false positive error when a captured variable within an inner scope (function or lambda) is imported from another module using an import statement that comes after the function or lambda. This addresses https://github.com/microsoft/pyright/issues/5618. (#5623) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/binder.ts | 6 ++++++ packages/pyright-internal/src/analyzer/typeEvaluator.ts | 5 ----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index 81ab124ff..6b4dcb185 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -1732,6 +1732,8 @@ export class Binder extends ParseTreeWalker { const dataclassesSymbolsOfInterest = ['InitVar']; const importInfo = AnalyzerNodeInfo.getImportInfo(node.module); + AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + let resolvedPath = ''; if (importInfo && importInfo.isImportFound && !importInfo.isNativeLib) { resolvedPath = importInfo.resolvedPaths[importInfo.resolvedPaths.length - 1]; @@ -1874,6 +1876,8 @@ export class Binder extends ParseTreeWalker { const importedName = importSymbolNode.name.value; const nameNode = importSymbolNode.alias || importSymbolNode.name; + AnalyzerNodeInfo.setFlowNode(importSymbolNode, this._currentFlowNode!); + const symbol = this._bindNameToScope(this._currentScope, nameNode); if (symbol) { @@ -2487,6 +2491,8 @@ export class Binder extends ParseTreeWalker { ) { const firstNamePartValue = node.module.nameParts[0].value; + AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + // See if there's already a matching alias declaration for this import. // if so, we'll update it rather than creating a new one. This is required // to handle cases where multiple import statements target the same diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 9cf2c2e68..365067d6d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -4452,11 +4452,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return true; } - // Assume alias declarations are also always safe to narrow. - if (decl.type === DeclarationType.Alias) { - return true; - } - const declCodeFlowNode = AnalyzerNodeInfo.getFlowNode(decl.node); if (!declCodeFlowNode) { return false; From f064f0fed38133746cf2c47836a25d9a746d9893 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 1 Aug 2023 15:50:09 -0600 Subject: [PATCH 465/525] Fixed bug that led to incorrect type evaluation when accessing the `name` attribute on an enum. This addresses https://github.com/microsoft/pyright/issues/5625. --- packages/pyright-internal/src/analyzer/enums.ts | 2 +- packages/pyright-internal/src/tests/samples/enum1.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index 7724609ae..ce9d407af 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -411,7 +411,7 @@ export function getTypeOfEnumMember( // The type wasn't associated with a particular enum literal, so return // a union of all possible enum literals. const literalValues = enumerateLiteralsForType(evaluator, classType); - if (literalValues) { + if (literalValues && literalValues.length > 0) { return { type: combineTypes( literalValues.map((literalClass) => { diff --git a/packages/pyright-internal/src/tests/samples/enum1.py b/packages/pyright-internal/src/tests/samples/enum1.py index 98f8ed996..244f41be0 100644 --- a/packages/pyright-internal/src/tests/samples/enum1.py +++ b/packages/pyright-internal/src/tests/samples/enum1.py @@ -164,6 +164,9 @@ def func2(e: type[Enum]): values = {v.value for v in e} reveal_type(values, expected_text="set[Any]") + names = {v.name for v in e} + reveal_type(names, expected_text="set[str]") + class TestEnum11(Enum): (A, B, C) = range(3) From e0c05cfb008b1d9c8a676b65aa52ec9a7834eee0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 1 Aug 2023 20:36:43 -0600 Subject: [PATCH 466/525] Published 1.1.320 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index d30a32749..7dfafe536 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.319", + "version": "1.1.320", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 454c74013..4e1f3da53 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.319", + "version": "1.1.320", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.319", + "version": "1.1.320", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index f2b2d374f..87b8a2c51 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.319", + "version": "1.1.320", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 9aa6af991..4b1f0691b 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.319", + "version": "1.1.320", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.319", + "version": "1.1.320", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index f80073fb5..d9de3b16e 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.319", + "version": "1.1.320", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 9ebcabc1b..454e00793 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.319", + "version": "1.1.320", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.319", + "version": "1.1.320", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 375f33f90..f90ad4de5 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.319", + "version": "1.1.320", "private": true, "license": "MIT", "author": { From d2c67d1a56f780b66a9dbd9a4521121d39073892 Mon Sep 17 00:00:00 2001 From: Rich Chiodo Date: Wed, 2 Aug 2023 09:08:03 -0700 Subject: [PATCH 467/525] Filter import suggestions when py.typed is available (#5627) --- .../src/analyzer/importResolver.ts | 24 +++++++++++--- ...etions.importPrivateNoPytyped.fourslash.ts | 32 +++++++++++++++++++ .../completions.importPytyped.fourslash.ts | 32 +++++++++++++++++++ ...ompletions.importPytypedLocal.fourslash.ts | 32 +++++++++++++++++++ 4 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 packages/pyright-internal/src/tests/fourslash/completions.importPrivateNoPytyped.fourslash.ts create mode 100644 packages/pyright-internal/src/tests/fourslash/completions.importPytyped.fourslash.ts create mode 100644 packages/pyright-internal/src/tests/fourslash/completions.importPytypedLocal.fourslash.ts diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 13960d7b7..002096b51 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -46,8 +46,9 @@ import { SupportPartialStubs } from '../pyrightFileSystem'; import { ImplicitImport, ImportResult, ImportType } from './importResult'; import { getDirectoryLeadingDotsPointsTo } from './importStatementUtils'; import { ImportPath, ParentDirectoryCache } from './parentDirectoryCache'; +import { PyTypedInfo, getPyTypedInfo } from './pyTypedUtils'; import * as PythonPathUtils from './pythonPathUtils'; -import { getPyTypedInfo, PyTypedInfo } from './pyTypedUtils'; +import * as SymbolNameUtils from './symbolNameUtils'; import { isDunderName } from './symbolNameUtils'; export interface ImportedModuleDescriptor { @@ -2401,15 +2402,30 @@ export class ImportResolver { }; // Make sure we don't use parent folder resolution when checking whether the given name is resolvable. + let importResult: ImportResult | undefined; if (strictOnly) { const importName = this.formatImportName(moduleDescriptor); const importFailureInfo: string[] = []; - return this._resolveImportStrict(importName, sourceFilePath, execEnv, moduleDescriptor, importFailureInfo) - .isImportFound; + importResult = this._resolveImportStrict( + importName, + sourceFilePath, + execEnv, + moduleDescriptor, + importFailureInfo + ); + } else { + importResult = this.resolveImportInternal(sourceFilePath, execEnv, moduleDescriptor); } - return this.resolveImportInternal(sourceFilePath, execEnv, moduleDescriptor).isImportFound; + if (importResult && importResult.isImportFound) { + // Check the import isn't for a private or protected module. If it is, then + // only allow it if there's no py.typed file. + if (!SymbolNameUtils.isPrivateOrProtectedName(name) || importResult.pyTypedInfo === undefined) { + return true; + } + } + return false; } private _isUniqueValidSuggestion(suggestionToAdd: string, suggestions: Map) { diff --git a/packages/pyright-internal/src/tests/fourslash/completions.importPrivateNoPytyped.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.importPrivateNoPytyped.fourslash.ts new file mode 100644 index 000000000..727b8aec7 --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/completions.importPrivateNoPytyped.fourslash.ts @@ -0,0 +1,32 @@ +// @filename: test_private_completions.py +//// import testLib.[|/*marker*/|] + +// @filename: testLib/__init__.py +// @library: true +//// # empty + +// @filename: testLib/__privateclass.py +// @library: true +//// class PrivateClass(): +//// pass + +// @filename: testLib/publicclass.py +// @library: true +//// class PublicClass(): +//// pass + +// @ts-ignore +await helper.verifyCompletion('exact', 'markdown', { + marker: { + completions: [ + { + label: 'publicclass', + kind: Consts.CompletionItemKind.Module, + }, + { + label: '__privateclass', + kind: Consts.CompletionItemKind.Module, + }, + ], + }, +}); diff --git a/packages/pyright-internal/src/tests/fourslash/completions.importPytyped.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.importPytyped.fourslash.ts new file mode 100644 index 000000000..cf0c1b5b5 --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/completions.importPytyped.fourslash.ts @@ -0,0 +1,32 @@ +// @filename: test_no_private_completions.py +//// import testLib.[|/*marker*/|] + +// @filename: testLib/__init__.py +// @library: true +//// # empty + +// @filename: testLib/__privateclass.py +// @library: true +//// class PrivateClass(): +//// pass + +// @filename: testLib/publicclass.py +// @library: true +//// class PublicClass(): +//// pass + +// @filename: testLib/py.typed +// @library: true +//// # has to contain something for file to be written + +// @ts-ignore +await helper.verifyCompletion('exact', 'markdown', { + marker: { + completions: [ + { + label: 'publicclass', + kind: Consts.CompletionItemKind.Module, + }, + ], + }, +}); diff --git a/packages/pyright-internal/src/tests/fourslash/completions.importPytypedLocal.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.importPytypedLocal.fourslash.ts new file mode 100644 index 000000000..2df02231b --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/completions.importPytypedLocal.fourslash.ts @@ -0,0 +1,32 @@ +// @filename: test_no_private_completions.py +//// import testLib.[|/*marker*/|] + +// @filename: testLib/__init__.py +//// # empty + +// @filename: testLib/__privateclass.py +//// class PrivateClass(): +//// pass + +// @filename: testLib/publicclass.py +//// class PublicClass(): +//// pass + +// @filename: testLib/py.typed +//// # has to contain something for file to be written + +// @ts-ignore +await helper.verifyCompletion('exact', 'markdown', { + marker: { + completions: [ + { + label: 'publicclass', + kind: Consts.CompletionItemKind.Module, + }, + { + label: '__privateclass', + kind: Consts.CompletionItemKind.Module, + }, + ], + }, +}); From fcee52c73b46b34aa8440e376bf9f1f7c0671ad2 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 2 Aug 2023 11:34:19 -0700 Subject: [PATCH 468/525] pull-pylance-with-pyright-1.1.320 (#5634) --- .../src/analyzer/docStringConversion.ts | 15 ++- .../pyright-internal/src/analyzer/service.ts | 3 +- .../src/backgroundAnalysisBase.ts | 3 +- .../src/backgroundThreadBase.ts | 4 +- .../src/common/chokidarFileWatcherProvider.ts | 2 +- .../src/common/extensibility.ts | 36 ++---- .../pyright-internal/src/common/fileSystem.ts | 49 +-------- .../src/common/fileWatcher.ts | 56 ++++++++++ .../src/common/realFileSystem.ts | 16 ++- .../src/languageServerBase.ts | 43 +++++--- .../src/languageService/hoverProvider.ts | 11 +- .../src/localization/package.nls.cs.json | 1 + .../src/localization/package.nls.de.json | 1 + .../src/localization/package.nls.es.json | 1 + .../src/localization/package.nls.fr.json | 1 + .../src/localization/package.nls.it.json | 1 + .../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/readonlyAugmentedFileSystem.ts | 11 +- packages/pyright-internal/src/server.ts | 3 +- .../src/tests/docStringConversion.test.ts | 104 ++++++++++++++++++ .../src/tests/harness/vfs/filesystem.ts | 10 +- 29 files changed, 244 insertions(+), 136 deletions(-) create mode 100644 packages/pyright-internal/src/common/fileWatcher.ts diff --git a/packages/pyright-internal/src/analyzer/docStringConversion.ts b/packages/pyright-internal/src/analyzer/docStringConversion.ts index d51c250ef..6b040c351 100644 --- a/packages/pyright-internal/src/analyzer/docStringConversion.ts +++ b/packages/pyright-internal/src/analyzer/docStringConversion.ts @@ -80,8 +80,8 @@ const PlusRegExp = /\+/g; const UnescapedMarkdownCharsRegExp = /(?`{3}(?!`)|~{3}(?!~))(\w*)/; +const CodeBlockEndRegExp = /^\s*(?`{3}(?!`)|~{3}(?!~))/; const HtmlEscapes: RegExpReplacement[] = [ { exp: / void; clearCache?: () => void; } @@ -189,27 +187,6 @@ export interface DeclarationProviderExtension { ): Declaration[]; } -export interface TypeProviderExtension { - tryGetParameterNodeType( - node: ParameterNode, - evaluator: TypeEvaluator, - token: CancellationToken, - context?: {} - ): Type | undefined; - tryGetFunctionNodeType(node: FunctionNode, evaluator: TypeEvaluator, token: CancellationToken): Type | undefined; -} - -export interface CodeActionExtension { - addCodeActions( - evaluator: TypeEvaluator, - filePath: string, - range: Range, - parseResults: ParseResults, - codeActions: CodeAction[], - token: CancellationToken - ): void; -} - interface OwnedProgramExtension extends ProgramExtension { readonly view: ProgramView; } @@ -294,13 +271,18 @@ export namespace Extensions { const filePath = typeof nodeOrFilePath === 'string' ? nodeOrFilePath.toString() : getFileInfo(nodeOrFilePath).filePath; const bestProgram = getBestProgram(filePath); - return programExtensions.filter((s) => s.view === bestProgram) as ProgramExtension[]; + + return getProgramExtensionsForView(bestProgram); } export function getLanguageServiceExtensions() { return languageServiceExtensions as LanguageServiceExtension[]; } + export function getProgramExtensionsForView(view: ProgramView) { + return programExtensions.filter((s) => s.view === view) as ProgramExtension[]; + } + export function unregister() { programExtensions.splice(0, programExtensions.length); languageServiceExtensions.splice(0, languageServiceExtensions.length); diff --git a/packages/pyright-internal/src/common/fileSystem.ts b/packages/pyright-internal/src/common/fileSystem.ts index 1285753fa..fe8755f63 100644 --- a/packages/pyright-internal/src/common/fileSystem.ts +++ b/packages/pyright-internal/src/common/fileSystem.ts @@ -10,21 +10,7 @@ // * NOTE * except tests, this should be only file that import "fs" import type * as fs from 'fs'; - -export type FileWatcherEventType = 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir'; -export type FileWatcherEventHandler = (eventName: FileWatcherEventType, path: string, stats?: Stats) => void; - -export interface FileWatcher { - close(): void; -} - -export interface FileWatcherHandler { - onFileChange(eventType: FileWatcherEventType, path: string): void; -} - -export interface FileWatcherProvider { - createFileWatcher(paths: string[], listener: FileWatcherEventHandler): FileWatcher; -} +import { FileWatcher, FileWatcherEventHandler } from './fileWatcher'; export interface Stats { size: number; @@ -101,39 +87,6 @@ export interface FileSystem extends ReadOnlyFileSystem { dispose(): void; } -// File watchers can give "changed" event even for a file open. but for those cases, -// it will give relative path rather than absolute path. To get rid of such cases, -// we will drop any event with relative paths. this trick is copied from VS Code -// (https://github.com/microsoft/vscode/blob/main/src/vs/platform/files/node/watcher/unix/chokidarWatcherService.ts) -export function ignoredWatchEventFunction(paths: string[]) { - const normalizedPaths = paths.map((p) => p.toLowerCase()); - return (path: string): boolean => { - if (!path || path.indexOf('__pycache__') >= 0) { - return true; - } - const normalizedPath = path.toLowerCase(); - return normalizedPaths.every((p) => normalizedPath.indexOf(p) < 0); - }; -} - -const nullFileWatcher: FileWatcher = { - close() { - // empty; - }, -}; - -export const nullFileWatcherHandler: FileWatcherHandler = { - onFileChange(_1: FileWatcherEventType, _2: string): void { - // do nothing - }, -}; - -export const nullFileWatcherProvider: FileWatcherProvider = { - createFileWatcher(_1: string[], _2: FileWatcherEventHandler): FileWatcher { - return nullFileWatcher; - }, -}; - export class VirtualDirent implements fs.Dirent { constructor(public name: string, private _file: boolean) {} diff --git a/packages/pyright-internal/src/common/fileWatcher.ts b/packages/pyright-internal/src/common/fileWatcher.ts new file mode 100644 index 000000000..bc635904e --- /dev/null +++ b/packages/pyright-internal/src/common/fileWatcher.ts @@ -0,0 +1,56 @@ +/* + * fileWatcher.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * file watcher related functionality. + */ +import { Stats } from './fileSystem'; + +export type FileWatcherEventType = 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir'; +export type FileWatcherEventHandler = (eventName: FileWatcherEventType, path: string, stats?: Stats) => void; + +export interface FileWatcher { + close(): void; +} + +export interface FileWatcherHandler { + onFileChange(eventType: FileWatcherEventType, path: string): void; +} + +export interface FileWatcherProvider { + createFileWatcher(paths: string[], listener: FileWatcherEventHandler): FileWatcher; +} + +export const nullFileWatcherHandler: FileWatcherHandler = { + onFileChange(_1: FileWatcherEventType, _2: string): void { + // do nothing + }, +}; + +export const nullFileWatcherProvider: FileWatcherProvider = { + createFileWatcher(_1: string[], _2: FileWatcherEventHandler): FileWatcher { + return nullFileWatcher; + }, +}; + +// File watchers can give "changed" event even for a file open. but for those cases, +// it will give relative path rather than absolute path. To get rid of such cases, +// we will drop any event with relative paths. this trick is copied from VS Code +// (https://github.com/microsoft/vscode/blob/main/src/vs/platform/files/node/watcher/unix/chokidarWatcherService.ts) +export function ignoredWatchEventFunction(paths: string[]) { + const normalizedPaths = paths.map((p) => p.toLowerCase()); + return (path: string): boolean => { + if (!path || path.indexOf('__pycache__') >= 0) { + return true; + } + const normalizedPath = path.toLowerCase(); + return normalizedPaths.every((p) => normalizedPath.indexOf(p) < 0); + }; +} + +const nullFileWatcher: FileWatcher = { + close() { + // empty; + }, +}; diff --git a/packages/pyright-internal/src/common/realFileSystem.ts b/packages/pyright-internal/src/common/realFileSystem.ts index ef6374407..88a05c999 100644 --- a/packages/pyright-internal/src/common/realFileSystem.ts +++ b/packages/pyright-internal/src/common/realFileSystem.ts @@ -12,18 +12,16 @@ import { URI } from 'vscode-uri'; import { isMainThread } from 'worker_threads'; import { ConsoleInterface, NullConsole } from './console'; +import { FileSystem, MkDirOptions, TmpfileOptions } from './fileSystem'; +import { getRootLength } from './pathUtils'; import { - FileSystem, - FileWatcher, - FileWatcherEventHandler, - FileWatcherEventType, - FileWatcherHandler, FileWatcherProvider, - MkDirOptions, nullFileWatcherProvider, - TmpfileOptions, -} from './fileSystem'; -import { getRootLength } from './pathUtils'; + FileWatcherEventHandler, + FileWatcherHandler, + FileWatcherEventType, + FileWatcher, +} from './fileWatcher'; // Automatically remove files created by tmp at process exit. tmp.setGracefulCleanup(); diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index 05e79d4f5..ed5861aa7 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -100,7 +100,8 @@ import { import { DiagnosticRule } from './common/diagnosticRules'; import { FileDiagnostics } from './common/diagnosticSink'; import { Extensions } from './common/extensibility'; -import { FileSystem, FileWatcherEventType, FileWatcherHandler } from './common/fileSystem'; +import { FileSystem } from './common/fileSystem'; +import { FileWatcherEventType, FileWatcherHandler } from './common/fileWatcher'; import { Host } from './common/host'; import { fromLSPAny } from './common/lspUtils'; import { convertPathToUri, deduplicateFolders, getDirectoryPath, getFileName, isFile } from './common/pathUtils'; @@ -118,7 +119,7 @@ import { canNavigateToFile } from './languageService/navigationUtils'; import { ReferencesProvider } from './languageService/referencesProvider'; import { SignatureHelpProvider } from './languageService/signatureHelpProvider'; import { Localizer, setLocaleOverride } from './localization/localize'; -import { PyrightFileSystem } from './pyrightFileSystem'; +import { PyrightFileSystem, SupportUriToPathMapping } from './pyrightFileSystem'; import { InitStatus, WellKnownWorkspaceKinds, Workspace, WorkspaceFactory } from './workspaceFactory'; import { RenameProvider } from './languageService/renameProvider'; import { WorkspaceSymbolProvider } from './languageService/workspaceSymbolProvider'; @@ -187,7 +188,7 @@ export interface ServerOptions { rootDirectory: string; version: string; cancellationProvider: CancellationProvider; - fileSystem: FileSystem; + fileSystem: PyrightFileSystem; fileWatcherHandler: FileWatcherHandler; maxAnalysisTimeInForeground?: MaxAnalysisTime; disableChecker?: boolean; @@ -340,7 +341,10 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis protected workspaceFactory: WorkspaceFactory; protected openFileMap = new Map(); protected cacheManager: CacheManager; - protected fs: PyrightFileSystem; + + protected uriMapper: SupportUriToPathMapping; + protected fs: FileSystem; + protected uriParser: UriParser; constructor( @@ -363,7 +367,9 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis this.cacheManager = new CacheManager(); - this.fs = new PyrightFileSystem(this.serverOptions.fileSystem); + this.uriMapper = this.serverOptions.fileSystem; + this.fs = this.serverOptions.fileSystem; + this.uriParser = uriParserFactory(this.fs); this.workspaceFactory = new WorkspaceFactory( @@ -1159,7 +1165,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis protected async onDidOpenTextDocument(params: DidOpenTextDocumentParams, ipythonMode = IPythonMode.None) { const filePath = this.uriParser.decodeTextDocumentUri(params.textDocument.uri); - if (!this.fs.addUriMap(params.textDocument.uri, filePath)) { + if (!this.uriMapper.addUriMap(params.textDocument.uri, filePath)) { // We do not support opening 1 file with 2 different uri. return; } @@ -1185,7 +1191,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis this.recordUserInteractionTime(); const filePath = this.uriParser.decodeTextDocumentUri(params.textDocument.uri); - if (!this.fs.hasUriMapEntry(params.textDocument.uri, filePath)) { + if (!this.uriMapper.hasUriMapEntry(params.textDocument.uri, filePath)) { // We do not support opening 1 file with 2 different uri. return; } @@ -1209,7 +1215,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis protected async onDidCloseTextDocument(params: DidCloseTextDocumentParams) { const filePath = this.uriParser.decodeTextDocumentUri(params.textDocument.uri); - if (!this.fs.removeUriMap(params.textDocument.uri, filePath)) { + if (!this.uriMapper.removeUriMap(params.textDocument.uri, filePath)) { // We do not support opening 1 file with 2 different uri. return; } @@ -1299,6 +1305,10 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis ]; } + protected getDiagCode(_diag: AnalyzerDiagnostic, rule: string | undefined): string | undefined { + return rule; + } + protected onAnalysisCompletedHandler(fs: FileSystem, results: AnalysisResults): void { // Send the computed diagnostics to the client. results.diagnostics.forEach((fileDiag) => { @@ -1307,7 +1317,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis } this._sendDiagnostics(this.convertDiagnostics(fs, fileDiag)); - this.fs.pendingRequest(fileDiag.filePath, fileDiag.diagnostics.length > 0); + this.uriMapper.pendingRequest(fileDiag.filePath, fileDiag.diagnostics.length > 0); }); if (!this._progressReporter.isEnabled(results)) { @@ -1377,9 +1387,13 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis }); } - protected getDocumentationUrlForDiagnosticRule(rule: string): string | undefined { - // Configuration.md is configured to have a link for every rule name. - return `https://github.com/microsoft/pyright/blob/main/docs/configuration.md#${rule}`; + protected getDocumentationUrlForDiagnostic(diag: AnalyzerDiagnostic): string | undefined { + const rule = diag.getRule(); + if (rule) { + // Configuration.md is configured to have a link for every rule name. + return `https://github.com/microsoft/pyright/blob/main/docs/configuration.md#${rule}`; + } + return undefined; } protected abstract createProgressReporter(): ProgressReporter; @@ -1478,7 +1492,8 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis diags.forEach((diag) => { const severity = convertCategoryToSeverity(diag.category); const rule = diag.getRule(); - const vsDiag = Diagnostic.create(diag.range, diag.message, severity, rule, this.serverOptions.productName); + const code = this.getDiagCode(diag, rule); + const vsDiag = Diagnostic.create(diag.range, diag.message, severity, code, this.serverOptions.productName); if ( diag.category === DiagnosticCategory.UnusedCode || @@ -1527,7 +1542,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis } if (rule) { - const ruleDocUrl = this.getDocumentationUrlForDiagnosticRule(rule); + const ruleDocUrl = this.getDocumentationUrlForDiagnostic(diag); if (ruleDocUrl) { vsDiag.codeDescription = { href: ruleDocUrl, diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index b921e0c2f..cf0264e55 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -409,16 +409,7 @@ export class HoverProvider { } let type = this._getType(node); - const resolvedType = - Extensions.getProgramExtensions(resolvedDecl.node) - .map((e) => - e.typeProviderExtension?.tryGetFunctionNodeType( - resolvedDecl.node, - this._evaluator, - this._token - ) - ) - .find((t) => !!t) || this._getType(resolvedDecl.node.name); + const resolvedType = this._getType(resolvedDecl.node.name); type = isAnyOrUnknown(type) ? resolvedType : type; const signatureString = getToolTipForType( type, diff --git a/packages/pyright-internal/src/localization/package.nls.cs.json b/packages/pyright-internal/src/localization/package.nls.cs.json index 84be82427..a12a33219 100644 --- a/packages/pyright-internal/src/localization/package.nls.cs.json +++ b/packages/pyright-internal/src/localization/package.nls.cs.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "Seznam parametrů typu musí být řazená kolekce členů obsahující pouze typeVar, TypeVarTuple nebo ParamSpec", "typeAnnotationCall": "Výraz volání není ve výrazu typu povolený", "typeAnnotationVariable": "Proměnná není ve výrazu typu povolená", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "Očekával se parametr ParamSpec, tři tečky nebo seznam typů", "typeArgListNotAllowed": "Výraz seznamu není pro tento argument typu povolený", "typeArgsExpectingNone": "Pro třídu {name} se neočekávaly žádné argumenty typu", diff --git a/packages/pyright-internal/src/localization/package.nls.de.json b/packages/pyright-internal/src/localization/package.nls.de.json index e420b902c..4dc2e419a 100644 --- a/packages/pyright-internal/src/localization/package.nls.de.json +++ b/packages/pyright-internal/src/localization/package.nls.de.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "Die Typparameterliste muss ein Tupel sein, das nur TypeVar, TypeVarTuple oder ParamSpec enthält.", "typeAnnotationCall": "Der Aufrufausdruck ist im Typausdruck nicht zulässig", "typeAnnotationVariable": "Variable im Typausdruck nicht zulässig", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "ParamSpec, Ellipse oder Liste der Typen erwartet", "typeArgListNotAllowed": "Der Listenausdruck ist für dieses Typargument nicht zulässig.", "typeArgsExpectingNone": "Für die Klasse \"{name}\" werden keine Typargumente erwartet.", diff --git a/packages/pyright-internal/src/localization/package.nls.es.json b/packages/pyright-internal/src/localization/package.nls.es.json index 9e8f626b2..54e3797ea 100644 --- a/packages/pyright-internal/src/localization/package.nls.es.json +++ b/packages/pyright-internal/src/localization/package.nls.es.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "La lista de parámetros de tipo debe ser una tupla que contenga solo TypeVar, TypeVarTuple o ParamSpec.", "typeAnnotationCall": "No se permite la expresión de llamada en la expresión de tipo", "typeAnnotationVariable": "Variable no permitida en la expresión de tipo", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "ParamSpec esperado, elipsis o lista de tipos", "typeArgListNotAllowed": "Expresión de lista no permitida para este argumento de tipo", "typeArgsExpectingNone": "No se esperaban argumentos de tipo para la clase \"{name}\"", diff --git a/packages/pyright-internal/src/localization/package.nls.fr.json b/packages/pyright-internal/src/localization/package.nls.fr.json index defad1ae8..44da35563 100644 --- a/packages/pyright-internal/src/localization/package.nls.fr.json +++ b/packages/pyright-internal/src/localization/package.nls.fr.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "La liste de paramètres de type doit être un tuple contenant uniquement TypeVar, TypeVarTuple ou ParamSpec", "typeAnnotationCall": "Expression d'appel non autorisée dans l'expression de type", "typeAnnotationVariable": "Variable non autorisée dans l'expression de type", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "ParamSpec, ellipse ou liste de types attendue", "typeArgListNotAllowed": "Expression de liste non autorisée pour cet argument de type", "typeArgsExpectingNone": "Aucun argument de type attendu pour la classe « {name} »", diff --git a/packages/pyright-internal/src/localization/package.nls.it.json b/packages/pyright-internal/src/localization/package.nls.it.json index 78ef59ea6..349cc3d9d 100644 --- a/packages/pyright-internal/src/localization/package.nls.it.json +++ b/packages/pyright-internal/src/localization/package.nls.it.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "L'elenco dei parametri del tipo deve essere una tupla contenente solo TypeVar, TypeVarTuple o ParamSpec.", "typeAnnotationCall": "Espressione di chiamata non consentita nell'espressione di tipo", "typeAnnotationVariable": "Variabile non consentita nell'espressione di tipo", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "Previsto ParamSpec, puntini di sospensione o elenco di tipi", "typeArgListNotAllowed": "Espressione di elenco non consentita per questo argomento tipo", "typeArgsExpectingNone": "Non sono previsti argomenti di tipo per la classe \"{name}\"", diff --git a/packages/pyright-internal/src/localization/package.nls.ja.json b/packages/pyright-internal/src/localization/package.nls.ja.json index 775f90b98..89d2e0ab4 100644 --- a/packages/pyright-internal/src/localization/package.nls.ja.json +++ b/packages/pyright-internal/src/localization/package.nls.ja.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "型パラメーター リストは、TypeVar、TypeVarTuple、または ParamSpec のみを含むタプルである必要があります", "typeAnnotationCall": "型式では呼び出し式を使用できません", "typeAnnotationVariable": "型式では変数を使用できません", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "ParamSpec、省略記号、または型の一覧が必要です", "typeArgListNotAllowed": "この型引数にはリスト式を使用できません", "typeArgsExpectingNone": "クラス \"{name}\" に型引数が必要ありません", diff --git a/packages/pyright-internal/src/localization/package.nls.ko.json b/packages/pyright-internal/src/localization/package.nls.ko.json index 3b9cfbf4b..25488ea0b 100644 --- a/packages/pyright-internal/src/localization/package.nls.ko.json +++ b/packages/pyright-internal/src/localization/package.nls.ko.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "형식 매개 변수 목록은 TypeVar, TypeVarTuple 또는 ParamSpec만 포함하는 튜플이어야 합니다.", "typeAnnotationCall": "형식 식에는 호출 식을 사용할 수 없습니다.", "typeAnnotationVariable": "형식 식에는 변수를 사용할 수 없습니다.", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "ParamSpec, 줄임표 또는 형식 목록이 필요합니다.", "typeArgListNotAllowed": "이 형식 인수에는 목록 식을 사용할 수 없습니다.", "typeArgsExpectingNone": "클래스 \"{name}\"에 형식 인수가 필요하지 않습니다.", diff --git a/packages/pyright-internal/src/localization/package.nls.pl.json b/packages/pyright-internal/src/localization/package.nls.pl.json index 0215a23c2..aeb6f5ac1 100644 --- a/packages/pyright-internal/src/localization/package.nls.pl.json +++ b/packages/pyright-internal/src/localization/package.nls.pl.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "Lista parametrów typu musi być krotką zawierającą tylko parametry TypeVar, TypeVarTuple lub ParamSpec", "typeAnnotationCall": "Wyrażenie wywołania jest niedozwolone w wyrażeniu typu", "typeAnnotationVariable": "Zmienna niedozwolona w wyrażeniu typu", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "Oczekiwano parametru ParamSpec, wielokropka lub listy typów", "typeArgListNotAllowed": "Wyrażenie listy jest niedozwolone dla tego argumentu typu", "typeArgsExpectingNone": "Oczekiwano braku argumentów typu dla klasy „{name}”", 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 7200d6a7b..558d5072e 100644 --- a/packages/pyright-internal/src/localization/package.nls.pt-br.json +++ b/packages/pyright-internal/src/localization/package.nls.pt-br.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "A lista de parâmetros de tipo deve ser uma tupla contendo apenas TypeVar, TypeVarTuple ou ParamSpec", "typeAnnotationCall": "Expressão de chamada não permitida na expressão de tipo", "typeAnnotationVariable": "Variável não permitida na expressão de tipo", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "ParamSpec, reticências ou lista de tipos esperados", "typeArgListNotAllowed": "Expressão de lista não permitida para este argumento de tipo", "typeArgsExpectingNone": "Nenhum argumento de tipo era esperado para a classe \"{name}\"", 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 20613a571..a6bd7353a 100644 --- a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json +++ b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "[RdHRE][นั้Tÿpë pæræmëtër lïst mµst þë æ tµplë çøñtæïñïñg øñlÿ TÿpëVær, TÿpëVærTµplë, ør Pæræm§pëçẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "typeAnnotationCall": "[7pNts][นั้Çæll ëxprëssïøñ ñøt ælløwëð ïñ tÿpë ëxprëssïøñẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "typeAnnotationVariable": "[GeXWQ][นั้Værïæþlë ñøt ælløwëð ïñ tÿpë ëxprëssïøñẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", + "typeAnnotationWithCallable": "[JJENJ][นั้Tÿpë ærgµmëñt før \"tÿpë\" mµst þë æ çlæss; çællæþlës ærë ñøt sµppørtëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまนั้ढूँ]", "typeArgListExpected": "[2efoA][นั้Ëxpëçtëð Pæræm§pëç, ëllïpsïs, ør lïst øf tÿpësẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "typeArgListNotAllowed": "[oV7JF][นั้£ïst ëxprëssïøñ ñøt ælløwëð før thïs tÿpë ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", "typeArgsExpectingNone": "[faycH][นั้Ëxpëçtëð ñø tÿpë ærgµmëñts før çlæss \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index 310b3e7b0..f939b3db7 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "Список параметров типа должен быть кортежем, содержащим только TypeVar, TypeVarTuple или ParamSpec", "typeAnnotationCall": "Выражение вызова не разрешено в выражении типа", "typeAnnotationVariable": "Переменная не разрешена в выражении типа", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "Ожидается ParamSpec, многоточие или список типов", "typeArgListNotAllowed": "Выражение списка не разрешено для аргумента этого типа", "typeArgsExpectingNone": "Для класса \"{name}\" не ожидается аргументов типа", diff --git a/packages/pyright-internal/src/localization/package.nls.tr.json b/packages/pyright-internal/src/localization/package.nls.tr.json index afc3d3442..20114440e 100644 --- a/packages/pyright-internal/src/localization/package.nls.tr.json +++ b/packages/pyright-internal/src/localization/package.nls.tr.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "Tür parametresi listesi yalnızca TypeVar, TypeVarTuple veya ParamSpec içeren bir demet olmalıdır", "typeAnnotationCall": "Tür ifadesinde çağrı ifadesine izin verilmiyor", "typeAnnotationVariable": "Tür ifadesinde değişkene izin verilmiyor", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "ParamSpec, üç nokta veya tür listesi bekleniyordu", "typeArgListNotAllowed": "Bu tür bağımsız değişkeni için liste ifadesine izin verilmiyor", "typeArgsExpectingNone": "\"{name}\" sınıfı için tür bağımsız değişkeni beklenmiyordu", 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 26526efc3..f7bf05975 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-cn.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-cn.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "类型参数列表必须是仅包含 TypeVar、TypeVarTuple 或 ParamSpec 的元组", "typeAnnotationCall": "类型表达式中不允许使用调用表达式", "typeAnnotationVariable": "类型表达式中不允许使用变量", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "应为 ParamSpec、省略号或类型列表", "typeArgListNotAllowed": "不允许此类型参数使用列表表达式", "typeArgsExpectingNone": "类“{name}”不应有类型参数", 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 5af219ff1..ab489e6d8 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-tw.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-tw.json @@ -438,6 +438,7 @@ "typeAliasTypeParamInvalid": "型別參數清單必須是只包含 TypeVar、TypeVarTuple 或 ParamSpec 的元組", "typeAnnotationCall": "型別運算式中不允許呼叫運算式", "typeAnnotationVariable": "型別運算式中不允許變數", + "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", "typeArgListExpected": "預期為 ParamSpec、省略符號或類型清單", "typeArgListNotAllowed": "此型別引數不允許清單運算式", "typeArgsExpectingNone": "預期類別 \"{name}\" 沒有類型引數", diff --git a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts index 2b20d8b12..a7d066dd6 100644 --- a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts +++ b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts @@ -10,16 +10,9 @@ import type * as fs from 'fs'; import { appendArray, getOrAdd } from './common/collectionUtils'; -import { - FileSystem, - FileWatcher, - FileWatcherEventHandler, - MkDirOptions, - Stats, - TmpfileOptions, - VirtualDirent, -} from './common/fileSystem'; +import { FileSystem, MkDirOptions, Stats, TmpfileOptions, VirtualDirent } from './common/fileSystem'; import { combinePaths, ensureTrailingDirectorySeparator, getDirectoryPath, getFileName } from './common/pathUtils'; +import { FileWatcher, FileWatcherEventHandler } from './common/fileWatcher'; export class ReadOnlyAugmentedFileSystem implements FileSystem { // Mapped file to original file map diff --git a/packages/pyright-internal/src/server.ts b/packages/pyright-internal/src/server.ts index a3f6c9418..d27367b9f 100644 --- a/packages/pyright-internal/src/server.ts +++ b/packages/pyright-internal/src/server.ts @@ -36,6 +36,7 @@ import { WorkspaceFileWatcherProvider, createFromRealFileSystem } from './common import { LanguageServerBase, ServerSettings } from './languageServerBase'; import { CodeActionProvider } from './languageService/codeActionProvider'; import { Workspace } from './workspaceFactory'; +import { PyrightFileSystem } from './pyrightFileSystem'; const maxAnalysisTimeInForeground = { openFilesTimeInMs: 50, noOpenFilesTimeInMs: 200 }; @@ -60,7 +61,7 @@ export class PyrightServer extends LanguageServerBase { productName: 'Pyright', rootDirectory, version, - fileSystem, + fileSystem: new PyrightFileSystem(fileSystem), fileWatcherHandler: fileWatcherProvider, cancellationProvider: new FileBasedCancellationProvider('bg'), maxAnalysisTimeInForeground, diff --git a/packages/pyright-internal/src/tests/docStringConversion.test.ts b/packages/pyright-internal/src/tests/docStringConversion.test.ts index ce1b747d0..e69608915 100644 --- a/packages/pyright-internal/src/tests/docStringConversion.test.ts +++ b/packages/pyright-internal/src/tests/docStringConversion.test.ts @@ -14,6 +14,7 @@ import { convertDocStringToMarkdown, convertDocStringToPlainText } from '../anal const singleTick = '`'; const doubleTick = '``'; const tripleTick = '```'; +const tripleTilda = '~~~'; test('PlaintextIndention', () => { const all: string[][] = [ @@ -270,6 +271,34 @@ And some text after. _testConvertToMarkdown(docstring, markdown); }); +test('MarkdownStyleTildaBlock', () => { + const docstring = `Backtick block: + +${tripleTilda} +print(foo_bar) + +if True: + print(bar_foo) +${tripleTilda} + +And some text after. +`; + + const markdown = `Backtick block: + +${tripleTilda} +print(foo_bar) + +if True: + print(bar_foo) +${tripleTilda} + +And some text after. +`; + + _testConvertToMarkdown(docstring, markdown); +}); + test('RestLiteralBlock', () => { const docstring = ` Take a look at this code:: @@ -425,6 +454,14 @@ test('UnfinishedBacktickBlock', () => { _testConvertToMarkdown(docstring, markdown); }); +test('UnfinishedTildaBlock', () => { + const docstring = '~~~\nsomething\n'; + + const markdown = '~~~\nsomething\n~~~\n'; + + _testConvertToMarkdown(docstring, markdown); +}); + test('UnfinishedInlineLiteral', () => { const docstring = '`oops\n'; @@ -858,6 +895,73 @@ ${tripleTick} _testConvertToMarkdown(docstring, markdown); }); +test('IndentedCodeBlockTilda', () => { + const docstring = ` +Expected: + ${tripleTilda}python + def some_fn(): + """ + Backticks on a different indentation level don't close the code block. + ${tripleTilda} + """ + ${tripleTilda} +`; + + const markdown = ` +Expected: +${tripleTilda}python + def some_fn(): + """ + Backticks on a different indentation level don't close the code block. + ${tripleTilda} + """ +${tripleTilda} +`; + _testConvertToMarkdown(docstring, markdown); +}); + +test('MixedCodeBlockBacktick', () => { + const docstring = ` +Expected: + ${tripleTick}python + def some_fn(): + """ + Backticks on a different indentation level don't close the code block. + ${tripleTick} + """ + ${tripleTick} +Expected: + ${tripleTilda}python + def some_fn(): + """ + Backticks on a different indentation level don't close the code block. + ${tripleTick} + """ + ${tripleTilda} +`; + + const markdown = ` +Expected: +${tripleTick}python + def some_fn(): + """ + Backticks on a different indentation level don't close the code block. + ${tripleTick} + """ +${tripleTick} + +Expected: +${tripleTilda}python + def some_fn(): + """ + Backticks on a different indentation level don't close the code block. + ${tripleTick} + """ +${tripleTilda} +`; + _testConvertToMarkdown(docstring, markdown); +}); + test('RestTableWithHeader', () => { const docstring = ` =============== ========================================================= diff --git a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts index 0c2d6dfe4..c07472e94 100644 --- a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts +++ b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts @@ -10,18 +10,12 @@ import { Dirent, ReadStream, WriteStream } from 'fs'; import { URI } from 'vscode-uri'; -import { - FileSystem, - FileWatcher, - FileWatcherEventHandler, - FileWatcherEventType, - MkDirOptions, - TmpfileOptions, -} from '../../../common/fileSystem'; +import { FileSystem, MkDirOptions, TmpfileOptions } from '../../../common/fileSystem'; import * as pathUtil from '../../../common/pathUtils'; import { bufferFrom, createIOError } from '../utils'; import { Metadata, SortedMap, closeIterator, getIterator, nextResult } from './../utils'; import { ValidationFlags, validate } from './pathValidation'; +import { FileWatcher, FileWatcherEventHandler, FileWatcherEventType } from '../../../common/fileWatcher'; export const MODULE_PATH = pathUtil.normalizeSlashes('/'); From 1a415e409b392fd722469f3588b0105a34d9061e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 2 Aug 2023 17:39:57 -0600 Subject: [PATCH 469/525] Fixed a bug that led to a false positive in certain cases where a ParamSpec captures an overloaded function signature. This addresses https://github.com/microsoft/pyright/issues/5631. --- .../src/analyzer/typeUtils.ts | 1 + .../src/tests/samples/overload15.py | 27 +++++++++++++++++++ .../src/tests/typeEvaluator4.test.ts | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index f80921b93..f77b2fd4a 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -3958,6 +3958,7 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer { const filteredOverloads: FunctionType[] = []; doForEachSubtype(combineTypes(overloadTypes), (subtype) => { assert(isFunction(subtype)); + subtype = FunctionType.cloneWithNewFlags(subtype, subtype.details.flags | FunctionTypeFlags.Overloaded); filteredOverloads.push(subtype); }); diff --git a/packages/pyright-internal/src/tests/samples/overload15.py b/packages/pyright-internal/src/tests/samples/overload15.py index 686d9613d..ed8df7767 100644 --- a/packages/pyright-internal/src/tests/samples/overload15.py +++ b/packages/pyright-internal/src/tests/samples/overload15.py @@ -119,3 +119,30 @@ def callable4(func: Callable[P, R], *args: P.args, **kwargs: P.kwargs) -> R: # This should generate an error. callable4(func3, y=1) + + +@overload +def func4(x: str) -> str: + ... + + +@overload +def func4(x: int) -> int: + ... + + +def func4(x: str | int): + return x + + +# This will generate a warning because "R" is not used +# in an explicit return type. +def callable5(f: Callable[P, R]): + def inner(*args: P.args, **kwargs: P.kwargs) -> list[R]: + return [f(*args, **kwargs)] + + return inner + + +callable5(func4)(0) +callable5(func4)("") diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 2cb5faa24..ff411f6f4 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -336,7 +336,7 @@ test('Overload14', () => { test('Overload15', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['overload15.py']); - TestUtils.validateResults(analysisResults, 9); + TestUtils.validateResults(analysisResults, 9, 1); }); test('Final1', () => { From 70f6088a06da8ebf80c5dc7b7b223ffa0427f19b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 2 Aug 2023 19:30:37 -0600 Subject: [PATCH 470/525] Fixed a bug that resulted in a type evaluation error when using bidirectional type inference with a non-generic protocol. This addresses https://github.com/microsoft/pyright/issues/5635. (#5637) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 365067d6d..5e02a7167 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -10693,24 +10693,26 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isClassInstance(effectiveExpectedType) && !isTypeSame(effectiveReturnType, effectiveExpectedType)) { const tempTypeVarContext = new TypeVarContext(getTypeVarScopeId(effectiveReturnType)); - populateTypeVarContextBasedOnExpectedType( - evaluatorInterface, - effectiveReturnType, - effectiveExpectedType, - tempTypeVarContext, - liveTypeVarScopes, - errorNode.start - ); - - const genericReturnType = ClassType.cloneForSpecialization( - effectiveReturnType, - /* typeArguments */ undefined, - /* isTypeArgumentExplicit */ false - ); + if ( + populateTypeVarContextBasedOnExpectedType( + evaluatorInterface, + effectiveReturnType, + effectiveExpectedType, + tempTypeVarContext, + liveTypeVarScopes, + errorNode.start + ) + ) { + const genericReturnType = ClassType.cloneForSpecialization( + effectiveReturnType, + /* typeArguments */ undefined, + /* isTypeArgumentExplicit */ false + ); - effectiveExpectedType = applySolvedTypeVars(genericReturnType, tempTypeVarContext, { - unknownIfNotFound: true, - }); + effectiveExpectedType = applySolvedTypeVars(genericReturnType, tempTypeVarContext, { + unknownIfNotFound: true, + }); + } } } else if (isFunction(effectiveReturnType)) { // If the return type is a callable and the expected type is a union that From 5392340c357214d3204fc761883b42d35f97a3ee Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 4 Aug 2023 08:13:42 -0700 Subject: [PATCH 471/525] Fixed a bug that resulted in an off-by-one error in an error message when reporting the index of a mismatched overload. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 5e02a7167..cf321ae4b 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24362,7 +24362,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (matchIndex < 0) { diag.addMessage( - Localizer.DiagnosticAddendum.overrideOverloadNoMatch().format({ index: overrideOverloadIndex }) + Localizer.DiagnosticAddendum.overrideOverloadNoMatch().format({ index: overrideOverloadIndex + 1 }) ); return false; } From 52dc6a54032f3379329eec2c97e1c49c2b449ce7 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 4 Aug 2023 08:14:44 -0700 Subject: [PATCH 472/525] Fixed a bug that resulted in a false positive `reportIncompatibleMethodOverride` diagnostic when the base method used a double underscore to indicate position-only parameters but the override used the newer `/` separator. --- packages/pyright-internal/src/analyzer/parameterUtils.ts | 7 ++++++- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 5 ++++- .../pyright-internal/src/tests/samples/methodOverride1.py | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/parameterUtils.ts b/packages/pyright-internal/src/analyzer/parameterUtils.ts index ba18dcc67..1e5258699 100644 --- a/packages/pyright-internal/src/analyzer/parameterUtils.ts +++ b/packages/pyright-internal/src/analyzer/parameterUtils.ts @@ -93,7 +93,12 @@ export function getParameterListDetails(type: FunctionType): ParameterListDetail } if (isDunderName(p.name) || !p.name.startsWith('__')) { - break; + // We exempt "self" and "cls" in class and instance methods. + if (i > 0 || FunctionType.isStaticMethod(type)) { + break; + } + + continue; } positionOnlyIndex = i + 1; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index cf321ae4b..1a948d8fd 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24579,7 +24579,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions i < overrideParamDetails.positionOnlyParamCount && i >= baseParamDetails.positionOnlyParamCount ) { - if (!baseParam.isNameSynthesized) { + if ( + !baseParam.isNameSynthesized && + baseParamDetails.params[i].source !== ParameterSource.PositionOnly + ) { diag?.addMessage( Localizer.DiagnosticAddendum.overrideParamNamePositionOnly().format({ index: i + 1, diff --git a/packages/pyright-internal/src/tests/samples/methodOverride1.py b/packages/pyright-internal/src/tests/samples/methodOverride1.py index 7846cf09b..371869556 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride1.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride1.py @@ -166,6 +166,9 @@ def my_method42(self, a: int, b: int, c: str) -> None: def my_method44(self, *args: Any, **kwargs: Any) -> None: ... + def my_method45(self, __i: int) -> None: + ... + T_ChildClass = TypeVar("T_ChildClass", bound="ChildClass") @@ -350,6 +353,9 @@ def my_method43(self, a: int, b: str, c: str) -> None: def my_method44(self, *args) -> None: ... + def my_method45(self, i: int, /) -> None: + ... + class A: def test(self, t: Sequence[int]) -> Sequence[str]: From 62f0b202f3a8c8f2d1c6c675d85a2ff038c60ff5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 4 Aug 2023 08:18:26 -0700 Subject: [PATCH 473/525] Revert "Fixed a bug that led to a false negative when determining whether two base classes that are combined using multiple inheritance implement the same method in an incompatible way. The bug caused the check to be skipped if the child class also implemented the same method as the two base classes. This addresses https://github.com/python/mypy/issues/15790. (#5617)" This reverts commit fb56dccde02874f2db2c0bbe64fa76fc469fd690. --- packages/pyright-internal/src/analyzer/checker.ts | 2 +- packages/pyright-internal/src/analyzer/typeUtils.ts | 6 +----- .../pyright-internal/src/tests/samples/methodOverride3.py | 6 +++--- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 6ed2e64d2..83fc489e6 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -5177,7 +5177,7 @@ export class Checker extends ParseTreeWalker { return getClassFieldsRecursive(specializedBaseClass); }); - const childClassSymbolMap = getClassFieldsRecursive(classType, /* skipInitialClass */ true); + const childClassSymbolMap = getClassFieldsRecursive(classType); for (let symbolMapBaseIndex = 1; symbolMapBaseIndex < baseClassSymbolMaps.length; symbolMapBaseIndex++) { const baseSymbolMap = baseClassSymbolMaps[symbolMapBaseIndex]; diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index f77b2fd4a..ce34b5634 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1464,15 +1464,11 @@ export function* getClassIterator(classType: Type, flags = ClassIteratorFlags.De return undefined; } -export function getClassFieldsRecursive(classType: ClassType, skipInitialClass = false): Map { +export function getClassFieldsRecursive(classType: ClassType): Map { const memberMap = new Map(); // Evaluate the types of members from the end of the MRO to the beginning. ClassType.getReverseMro(classType).forEach((mroClass) => { - if (skipInitialClass && isClass(mroClass) && ClassType.isSameGenericClass(mroClass, classType)) { - return; - } - const specializedMroClass = partiallySpecializeType(mroClass, classType); if (isClass(specializedMroClass)) { diff --git a/packages/pyright-internal/src/tests/samples/methodOverride3.py b/packages/pyright-internal/src/tests/samples/methodOverride3.py index bdb013471..64d768789 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride3.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride3.py @@ -2,7 +2,8 @@ # This functionality is controlled by the reportIncompatibleMethodOverride # diagnostic rule. -from typing import Any, Generic, Iterable, ParamSpec, TypeVar + +from typing import Generic, Iterable, ParamSpec, TypeVar class A1: @@ -17,8 +18,7 @@ def func1(self, a: int, b: int = 3) -> str: # This should generate an error because func1 is incompatible. class ASub(A1, A2): - def func1(self, *args: Any, **kwargs: Any) -> str: - ... + ... class B1: From 14f60c78ae19e9603a4a1d11b5eae49562f98809 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 4 Aug 2023 15:23:52 -0600 Subject: [PATCH 474/525] Fixed a bug that resulted in an incorrect hover type (and inlay hint) for the inferred return type of an `async` function or method. This addresses #5639. (#5647) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/checker.ts | 6 ++- .../src/analyzer/codeFlowEngine.ts | 2 +- .../src/analyzer/typeEvaluator.ts | 44 +++++++------------ .../src/analyzer/typeUtils.ts | 16 ++++++- .../pyright-internal/src/analyzer/types.ts | 7 --- .../src/commands/dumpFileDebugInfoCommand.ts | 1 - .../src/languageService/tooltipUtils.ts | 10 ++++- .../src/localization/package.nls.en-us.json | 4 +- .../tests/fourslash/hover.async.fourslash.ts | 11 +++++ 9 files changed, 58 insertions(+), 43 deletions(-) create mode 100644 packages/pyright-internal/src/tests/fourslash/hover.async.fourslash.ts diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 83fc489e6..17256ea6a 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -4313,7 +4313,11 @@ export class Checker extends ParseTreeWalker { // If the function consists entirely of "...", assume that it's // an abstract method or a protocol method and don't require that // the return type matches. This check can also be skipped for an overload. - if (!ParseTreeUtils.isSuiteEmpty(node.suite) && !FunctionType.isOverloaded(functionType)) { + if ( + !ParseTreeUtils.isSuiteEmpty(node.suite) && + !FunctionType.isOverloaded(functionType) && + !FunctionType.isAsync(functionType) + ) { this._evaluator.addDiagnostic( this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, DiagnosticRule.reportGeneralTypeIssues, diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index 79e635bd0..6b20e46c6 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -1689,7 +1689,7 @@ export function getCodeFlowEngine( // If it's an __aexit__ method, its return type will typically be wrapped // in a Coroutine, so we need to extract the return type from the third // type argument. - if (isAsync && FunctionType.isAsync(exitType)) { + if (isAsync) { if ( isClassInstance(returnType) && ClassType.isBuiltIn(returnType, 'Coroutine') && diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 1a948d8fd..9d0dd4eb7 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -5472,7 +5472,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // to leave the Self type generic (not specialized). We'll also // skip this for __new__ methods because they are not bound // to the class but rather assume the type of the cls argument. - const selfClass = bindToType || memberName === '__new__' ? undefined : classType; + const selfClass = !!bindToType || memberName === '__new__' ? undefined : classType; const typeResult = getTypeOfMemberInternal(memberInfo, selfClass); @@ -12520,8 +12520,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions magicMethodName, /* usage */ undefined, /* diag */ undefined, - MemberAccessFlags.SkipAttributeAccessOverride | MemberAccessFlags.AccessClassMembersOnly, - subtype + MemberAccessFlags.SkipAttributeAccessOverride | MemberAccessFlags.AccessClassMembersOnly )?.type; } else if (isInstantiableClass(concreteSubtype)) { magicMethodType = getTypeOfClassMember( @@ -17279,9 +17278,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } function createAsyncFunction(node: FunctionNode, functionType: FunctionType): FunctionType { + assert(FunctionType.isAsync(functionType)); + // Clone the original function and replace its return type with an - // Awaitable[]. - const awaitableFunctionType = FunctionType.clone(functionType); + // Awaitable[]. Mark the new function as no longer async. + const awaitableFunctionType = FunctionType.cloneWithNewFlags( + functionType, + functionType.details.flags & ~FunctionTypeFlags.Async + ); if (functionType.details.declaredReturnType) { awaitableFunctionType.details.declaredReturnType = createAwaitableReturnType( @@ -17289,13 +17293,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions functionType.details.declaredReturnType, FunctionType.isGenerator(functionType) ); + } else { + awaitableFunctionType.inferredReturnType = createAwaitableReturnType( + node, + getFunctionInferredReturnType(functionType), + FunctionType.isGenerator(functionType) + ); } - // Note that the inferred type, once lazily computed, needs to wrap the - // resulting type in an awaitable. - functionType.details.flags |= FunctionTypeFlags.WrapReturnTypeInAwait; - awaitableFunctionType.details.flags |= FunctionTypeFlags.WrapReturnTypeInAwait; - return awaitableFunctionType; } @@ -20766,15 +20771,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (returnTypeResult?.isIncomplete) { isIncomplete = true; } - - // Do we need to wrap this in an awaitable? - if (returnType && FunctionType.isWrapReturnTypeInAwait(type)) { - returnType = createAwaitableReturnType( - functionNode, - returnType, - !!type.details.declaration?.isGenerator - ); - } } } } @@ -20799,7 +20795,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions FunctionType.hasUnannotatedParams(type) && !FunctionType.isStubDefinition(type) && !FunctionType.isPyTypedDefinition(type) && - !FunctionType.isWrapReturnTypeInAwait(type) && args ) { const contextualReturnType = getFunctionInferredReturnTypeUsingArguments(type, args); @@ -20946,15 +20941,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (contextualReturnType) { contextualReturnType = removeUnbound(contextualReturnType); - // Do we need to wrap this in an awaitable? - if (FunctionType.isWrapReturnTypeInAwait(type) && !isNever(contextualReturnType)) { - contextualReturnType = createAwaitableReturnType( - functionNode, - contextualReturnType, - !!type.details.declaration?.isGenerator - ); - } - if (!isResultFromCache) { // Cache the resulting type. if (!functionType.functionType.callSiteReturnTypeCache) { diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index ce34b5634..1fb60bc57 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -1022,7 +1022,21 @@ export function populateTypeVarContextForSelfType( selfClass: ClassType ) { const synthesizedSelfTypeVar = synthesizeTypeVarForSelfCls(contextClassType, /* isClsParam */ false); - typeVarContext.setTypeVarType(synthesizedSelfTypeVar, convertToInstance(selfClass)); + const selfInstance = convertToInstance(selfClass); + + // We can't call stripLiteralValue here because that method requires the type evaluator. + // Instead, we'll do a simplified version of it here. + const selfWithoutLiteral = mapSubtypes(selfInstance, (subtype) => { + if (isClass(subtype)) { + if (subtype.literalValue !== undefined) { + return ClassType.cloneWithLiteral(subtype, /* value */ undefined); + } + } + + return subtype; + }); + + typeVarContext.setTypeVarType(synthesizedSelfTypeVar, selfInstance, selfWithoutLiteral); } // Looks for duplicate function types within the type and ensures that diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 4ef482e08..76a5db45a 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1281,9 +1281,6 @@ export const enum FunctionTypeFlags { // Function is declared with async keyword Async = 1 << 9, - // Indicates that return type should be wrapped in an awaitable type - WrapReturnTypeInAwait = 1 << 10, - // Function is declared within a type stub fille StubDefinition = 1 << 11, @@ -1898,10 +1895,6 @@ export namespace FunctionType { return (type.details.flags & FunctionTypeFlags.Async) !== 0; } - export function isWrapReturnTypeInAwait(type: FunctionType) { - return (type.details.flags & FunctionTypeFlags.WrapReturnTypeInAwait) !== 0; - } - export function isStubDefinition(type: FunctionType) { return (type.details.flags & FunctionTypeFlags.StubDefinition) !== 0; } diff --git a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts index 608b2de77..3c417dc7a 100644 --- a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts +++ b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts @@ -459,7 +459,6 @@ const FunctionTypeFlagsToString: [FunctionTypeFlags, string][] = [ [FunctionTypeFlags.StubDefinition, 'StubDefinition'], [FunctionTypeFlags.SynthesizedMethod, 'SynthesizedMethod'], [FunctionTypeFlags.UnannotatedParams, 'UnannotatedParams'], - [FunctionTypeFlags.WrapReturnTypeInAwait, 'WrapReturnTypeInAwait'], ]; function getFunctionTypeFlagsString(flags: FunctionTypeFlags) { diff --git a/packages/pyright-internal/src/languageService/tooltipUtils.ts b/packages/pyright-internal/src/languageService/tooltipUtils.ts index cd2ffc4ad..fcd5bf1b1 100644 --- a/packages/pyright-internal/src/languageService/tooltipUtils.ts +++ b/packages/pyright-internal/src/languageService/tooltipUtils.ts @@ -123,7 +123,15 @@ export function getFunctionTooltip( } const sep = isProperty ? ': ' : ''; - const defKeyword = isProperty ? '' : 'def '; + let defKeyword = ''; + if (!isProperty) { + defKeyword = 'def '; + + if (FunctionType.isAsync(type)) { + defKeyword = 'async ' + defKeyword; + } + } + return `${labelFormatted}${defKeyword}${functionName}${sep}${paramSignature}`; } diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index f3a942640..1ef1799a4 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -293,7 +293,7 @@ "noOverload": "No overloads for \"{name}\" match the provided arguments", "noReturnContainsReturn": "Function with declared return type \"NoReturn\" cannot include a return statement", "noReturnContainsYield": "Function with declared return type \"NoReturn\" cannot include a yield statement", - "noReturnReturnsNone": "Function with declared type of \"NoReturn\" cannot return \"None\"", + "noReturnReturnsNone": "Function with declared return type \"NoReturn\" cannot return \"None\"", "notRequiredArgCount": "Expected a single type argument after \"NotRequired\"", "notRequiredNotInTypedDict": "\"NotRequired\" is not allowed in this context", "objectNotCallable": "Object of type \"{type}\" is not callable", @@ -373,7 +373,7 @@ "requiredNotInTypedDict": "\"Required\" is not allowed in this context", "returnInAsyncGenerator": "Return statement with value is not allowed in async generator", "returnOutsideFunction": "\"return\" can be used only within a function", - "returnMissing": "Function with declared type of \"{returnType}\" must return value on all code paths", + "returnMissing": "Function with declared return type \"{returnType}\" must return value on all code paths", "returnTypeContravariant": "Contravariant type variable cannot be used in return type", "returnTypeMismatch": "Expression of type \"{exprType}\" cannot be assigned to return type \"{returnType}\"", "returnTypeUnknown": "Return type is unknown", diff --git a/packages/pyright-internal/src/tests/fourslash/hover.async.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/hover.async.fourslash.ts new file mode 100644 index 000000000..6b26a1e34 --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/hover.async.fourslash.ts @@ -0,0 +1,11 @@ +/// + +// @filename: test.py +//// async def [|/*marker1*/test|](): +//// pass +//// +//// y = [|/*marker2*/test|] +helper.verifyHover('markdown', { + marker1: '```python\n(function) async def test() -> None\n```', + marker2: '```python\n(function) def test() -> Coroutine[Any, Any, None]\n```', +}); From 44706adbb24bd637ab41e5b361cb73b3c84d0fab Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 4 Aug 2023 16:35:40 -0700 Subject: [PATCH 475/525] Added more complete logging for assertion failure that shows up in telemetry. This is related to #5622. --- packages/pyright-internal/src/analyzer/codeFlowEngine.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index 6b20e46c6..4e9bdb6ca 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -270,7 +270,13 @@ export function getCodeFlowEngine( ) { const cachedEntry = flowNodeTypeCache.cache.get(flowNode.id); if (cachedEntry === undefined || !isIncompleteType(cachedEntry)) { - fail('setIncompleteSubtype can be called only on a valid incomplete cache entry'); + fail( + 'setIncompleteSubtype can be called only on a valid incomplete cache entry: ' + + `prev cache entry?: ${!cachedEntry} ` + + `index=${index} ` + + `isPending=${isPending}` + + `evaluationCount=${evaluationCount}` + ); } const incompleteEntries = cachedEntry.incompleteSubtypes; From 7444078896661005ae78d24fda660d86347ada18 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 6 Aug 2023 10:29:45 -0700 Subject: [PATCH 476/525] Addressed a performance regression introduced in 1.1.314 due to a switch from ts-loader to esbuild-loader in our build pipeline. This change resulted in a 7-9% performance degradation, so I'm reverting it for now. --- packages/pyright/webpack.config.js | 4 ++-- packages/vscode-pyright/webpack.config.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pyright/webpack.config.js b/packages/pyright/webpack.config.js index 01df5fb16..636401cca 100644 --- a/packages/pyright/webpack.config.js +++ b/packages/pyright/webpack.config.js @@ -46,9 +46,9 @@ module.exports = (_, { mode }) => { rules: [ { test: /\.ts$/, - loader: 'esbuild-loader', + loader: 'ts-loader', options: { - tsconfig: 'tsconfig.json', + configFile: 'tsconfig.json', }, }, { diff --git a/packages/vscode-pyright/webpack.config.js b/packages/vscode-pyright/webpack.config.js index 4c2607f06..5900873df 100644 --- a/packages/vscode-pyright/webpack.config.js +++ b/packages/vscode-pyright/webpack.config.js @@ -48,9 +48,9 @@ module.exports = (_, { mode }) => { rules: [ { test: /\.ts$/, - loader: 'esbuild-loader', + loader: 'ts-loader', options: { - tsconfig: 'tsconfig.json', + configFile: 'tsconfig.json', }, }, ], From cbe583af056aca61a8980b95190634f5fa63d517 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 6 Aug 2023 12:52:57 -0700 Subject: [PATCH 477/525] Implemented small performance enhancement that reduces memory allocations in hot path. --- .../src/analyzer/typeUtils.ts | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 1fb60bc57..89aa9b463 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -340,37 +340,43 @@ export function makeInferenceContext( } // Calls a callback for each subtype and combines the results -// into a final type. +// into a final type. It performs no memory allocations if the +// transformed type is the same as the original. export function mapSubtypes(type: Type, callback: (type: Type) => Type | undefined): Type { if (isUnion(type)) { - const newSubtypes: Type[] = []; - let typeChanged = false; - - type.subtypes.forEach((subtype) => { + for (let i = 0; i < type.subtypes.length; i++) { + const subtype = type.subtypes[i]; const transformedType = callback(subtype); - if (transformedType) { - if (transformedType !== subtype) { - newSubtypes.push(addConditionToType(transformedType, getTypeCondition(type))); - typeChanged = true; - } else { - newSubtypes.push(subtype); + + // Avoid doing any memory allocations until a change is detected. + if (subtype !== transformedType) { + const typesToCombine: Type[] = type.subtypes.slice(0, i); + + // Create a helper lambda that accumulates transformed subtypes. + const accumulateSubtype = (newSubtype: Type | undefined) => { + if (newSubtype) { + typesToCombine.push(addConditionToType(newSubtype, getTypeCondition(type))); + } + }; + + accumulateSubtype(transformedType); + + for (i++; i < type.subtypes.length; i++) { + accumulateSubtype(callback(type.subtypes[i])); } - } else { - typeChanged = true; - } - }); - if (!typeChanged) { - return type; - } + const newType = combineTypes(typesToCombine); - const newType = combineTypes(newSubtypes); + // Do our best to retain type aliases. + if (newType.category === TypeCategory.Union) { + UnionType.addTypeAliasSource(newType, type); + } - // Do our best to retain type aliases. - if (newType.category === TypeCategory.Union) { - UnionType.addTypeAliasSource(newType, type); + return newType; + } } - return newType; + + return type; } const transformedSubtype = callback(type); From 1825809a6d0bc9635a6c01defdf887f9c9f52202 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 7 Aug 2023 16:06:24 -0700 Subject: [PATCH 478/525] Added check for improper use of a type alias defined using the `type` statement introduced in PEP 695. This addresses #5662. (#5663) Co-authored-by: Eric Traut --- .../src/analyzer/codeFlowEngine.ts | 2 +- .../src/analyzer/dataClasses.ts | 4 +- .../src/analyzer/decorators.ts | 16 +-- .../src/analyzer/patternMatching.ts | 6 +- .../src/analyzer/typeEvaluator.ts | 108 +++++++++++++----- .../src/analyzer/typeEvaluatorTypes.ts | 12 ++ .../src/analyzer/typeGuards.ts | 12 +- .../src/analyzer/typeUtils.ts | 5 + .../pyright-internal/src/analyzer/types.ts | 7 ++ .../src/localization/localize.ts | 2 + .../src/localization/package.nls.en-us.json | 1 + .../src/tests/samples/typeAliasStatement1.py | 17 +++ .../src/tests/typeEvaluator5.test.ts | 2 +- 13 files changed, 145 insertions(+), 49 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index 4e9bdb6ca..e60c7c530 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -1452,7 +1452,7 @@ export function getCodeFlowEngine( let subtypeCount = 0; // Evaluate the call base type. - const callTypeResult = evaluator.getTypeOfExpression(node.leftExpression, EvaluatorFlags.DoNotSpecialize); + const callTypeResult = evaluator.getTypeOfExpression(node.leftExpression, EvaluatorFlags.CallBaseDefaults); const callType = callTypeResult.type; doForEachSubtype(callType, (callSubtype) => { diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index 0ed2710d6..e684ccb4c 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -201,7 +201,7 @@ export function synthesizeDataClassMethods( if (statement.rightExpression.nodeType === ParseNodeType.Call) { const callTypeResult = evaluator.getTypeOfExpression( statement.rightExpression.leftExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ); const callType = callTypeResult.type; @@ -461,7 +461,7 @@ export function synthesizeDataClassMethods( if (statement.rightExpression.nodeType === ParseNodeType.Call) { const callType = evaluator.getTypeOfExpression( statement.rightExpression.leftExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ).type; if ( diff --git a/packages/pyright-internal/src/analyzer/decorators.ts b/packages/pyright-internal/src/analyzer/decorators.ts index d9027dd2a..83b725ebc 100644 --- a/packages/pyright-internal/src/analyzer/decorators.ts +++ b/packages/pyright-internal/src/analyzer/decorators.ts @@ -74,7 +74,7 @@ export function getFunctionFlagsFromDecorators(evaluator: TypeEvaluator, node: F // Some stub files (e.g. builtins.pyi) rely on forward declarations of decorators. let evaluatorFlags = fileInfo.isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; if (decoratorNode.expression.nodeType !== ParseNodeType.Call) { - evaluatorFlags |= EvaluatorFlags.DoNotSpecialize; + evaluatorFlags |= EvaluatorFlags.CallBaseDefaults; } const decoratorTypeResult = evaluator.getTypeOfExpression(decoratorNode.expression, evaluatorFlags); @@ -120,7 +120,7 @@ export function applyFunctionDecorator( // Some stub files (e.g. builtins.pyi) rely on forward declarations of decorators. let evaluatorFlags = fileInfo.isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; if (decoratorNode.expression.nodeType !== ParseNodeType.Call) { - evaluatorFlags |= EvaluatorFlags.DoNotSpecialize; + evaluatorFlags |= EvaluatorFlags.CallBaseDefaults; } const decoratorTypeResult = evaluator.getTypeOfExpression(decoratorNode.expression, evaluatorFlags); @@ -142,7 +142,7 @@ export function applyFunctionDecorator( if (decoratorNode.expression.nodeType === ParseNodeType.Call) { const decoratorCallType = evaluator.getTypeOfExpression( decoratorNode.expression.leftExpression, - evaluatorFlags | EvaluatorFlags.DoNotSpecialize + evaluatorFlags | EvaluatorFlags.CallBaseDefaults ).type; if (isFunction(decoratorCallType)) { @@ -191,7 +191,7 @@ export function applyFunctionDecorator( if (decoratorNode.expression.nodeType === ParseNodeType.MemberAccess) { const baseType = evaluator.getTypeOfExpression( decoratorNode.expression.leftExpression, - evaluatorFlags | EvaluatorFlags.DoNotSpecialize + evaluatorFlags | EvaluatorFlags.MemberAccessBaseDefaults ).type; if (isProperty(baseType)) { @@ -290,14 +290,14 @@ export function applyClassDecorator( const fileInfo = getFileInfo(decoratorNode); let flags = fileInfo.isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; if (decoratorNode.expression.nodeType !== ParseNodeType.Call) { - flags |= EvaluatorFlags.DoNotSpecialize; + flags |= EvaluatorFlags.CallBaseDefaults; } const decoratorType = evaluator.getTypeOfExpression(decoratorNode.expression, flags).type; if (decoratorNode.expression.nodeType === ParseNodeType.Call) { const decoratorCallType = evaluator.getTypeOfExpression( decoratorNode.expression.leftExpression, - flags | EvaluatorFlags.DoNotSpecialize + flags | EvaluatorFlags.CallBaseDefaults ).type; if (isFunction(decoratorCallType)) { @@ -375,7 +375,7 @@ export function applyClassDecorator( callNode = decoratorNode.expression; const decoratorCallType = evaluator.getTypeOfExpression( callNode.leftExpression, - flags | EvaluatorFlags.DoNotSpecialize + flags | EvaluatorFlags.CallBaseDefaults ).type; dataclassBehaviors = getDataclassDecoratorBehaviors(decoratorCallType); } else { @@ -396,7 +396,7 @@ function getTypeOfDecorator(evaluator: TypeEvaluator, node: DecoratorNode, funct // Evaluate the type of the decorator expression. let flags = getFileInfo(node).isStubFile ? EvaluatorFlags.AllowForwardReferences : EvaluatorFlags.None; if (node.expression.nodeType !== ParseNodeType.Call) { - flags |= EvaluatorFlags.DoNotSpecialize; + flags |= EvaluatorFlags.CallBaseDefaults; } const decoratorTypeResult = evaluator.getTypeOfExpression(node.expression, flags); diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index a683fe45b..780ca6c69 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -648,7 +648,7 @@ function narrowTypeBasedOnClassPattern( pattern: PatternClassNode, isPositiveTest: boolean ): Type { - let exprType = evaluator.getTypeOfExpression(pattern.className, EvaluatorFlags.DoNotSpecialize).type; + let exprType = evaluator.getTypeOfExpression(pattern.className, EvaluatorFlags.CallBaseDefaults).type; // If this is a class (but not a type alias that refers to a class), // specialize it with Unknown type arguments. @@ -1598,7 +1598,7 @@ function wrapTypeInList(evaluator: TypeEvaluator, node: ParseNode, type: Type): } export function validateClassPattern(evaluator: TypeEvaluator, pattern: PatternClassNode) { - const exprType = evaluator.getTypeOfExpression(pattern.className, EvaluatorFlags.DoNotSpecialize).type; + const exprType = evaluator.getTypeOfExpression(pattern.className, EvaluatorFlags.CallBaseDefaults).type; if (isAnyOrUnknown(exprType)) { return; @@ -1675,7 +1675,7 @@ export function getPatternSubtypeNarrowingCallback( if (ClassType.isBuiltIn(indexType, ['int', 'str'])) { const unnarrowedReferenceTypeResult = evaluator.getTypeOfExpression( subjectExpression.baseExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ); const unnarrowedReferenceType = unnarrowedReferenceTypeResult.type; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 9d0dd4eb7..d084abf7a 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -507,7 +507,7 @@ const maxRecursiveTypeAliasRecursionCount = 10; // This switch enables a special debug mode that attempts to catch // bugs due to inconsistent evaluation flags used when reading types // from the type cache. -const verifyTypeCacheEvaluatorFlags = false; +const verifyTypeCacheEvaluatorFlags = true; // This debugging option prints each expression and its evaluated type. const printExpressionTypes = false; @@ -1224,6 +1224,22 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return typeResult; } + function reportInvalidUseOfPep695TypeAlias(type: Type, node: ExpressionNode): boolean { + // PEP 695 type aliases cannot be used as instantiable classes. + if (type.typeAliasInfo?.name && type.typeAliasInfo.isPep695Syntax) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typeAliasNotAllowed().format({ name: type.typeAliasInfo.name }), + node + ); + + return true; + } + + return false; + } + function validateTypeIsInstantiable(typeResult: TypeResult, flags: EvaluatorFlags, node: ExpressionNode) { // If the type is incomplete, don't log any diagnostics yet. if (typeResult.isIncomplete) { @@ -2226,7 +2242,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions case ParseNodeType.MemberAccess: { const baseType = makeTopLevelTypeVarsConcrete( - getTypeOfExpression(expression.leftExpression, EvaluatorFlags.DoNotSpecialize).type + getTypeOfExpression(expression.leftExpression, EvaluatorFlags.MemberAccessBaseDefaults).type ); let classMemberInfo: ClassMember | undefined; @@ -2264,7 +2280,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions case ParseNodeType.Index: { const baseType = makeTopLevelTypeVarsConcrete( - getTypeOfExpression(expression.baseExpression, EvaluatorFlags.DoNotSpecialize).type + getTypeOfExpression(expression.baseExpression, EvaluatorFlags.IndexBaseDefaults).type ); if (baseType && isClassInstance(baseType)) { @@ -3095,7 +3111,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions srcExpr?: ExpressionNode, expectedTypeDiagAddendum?: DiagnosticAddendum ) { - const baseTypeResult = getTypeOfExpression(target.leftExpression, EvaluatorFlags.DoNotSpecialize); + const baseTypeResult = getTypeOfExpression(target.leftExpression, EvaluatorFlags.MemberAccessBaseDefaults); const baseType = makeTopLevelTypeVarsConcrete(baseTypeResult.type); // Handle member accesses (e.g. self.x or cls.y). @@ -3762,7 +3778,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Is the source expression a TypeVar() call? if (isTypeVar(type)) { if (srcExpr && srcExpr.nodeType === ParseNodeType.Call) { - const callType = getTypeOfExpression(srcExpr.leftExpression, EvaluatorFlags.DoNotSpecialize).type; + const callType = getTypeOfExpression(srcExpr.leftExpression, EvaluatorFlags.CallBaseDefaults).type; if ( isInstantiableClass(callType) && (ClassType.isBuiltIn(callType, 'TypeVar') || @@ -3810,7 +3826,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case ParseNodeType.Index: { - const baseTypeResult = getTypeOfExpression(target.baseExpression, EvaluatorFlags.DoNotSpecialize); + const baseTypeResult = getTypeOfExpression(target.baseExpression, EvaluatorFlags.IndexBaseDefaults); getTypeOfIndexWithBaseType( target, @@ -4002,7 +4018,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case ParseNodeType.MemberAccess: { - const baseTypeResult = getTypeOfExpression(node.leftExpression, EvaluatorFlags.DoNotSpecialize); + const baseTypeResult = getTypeOfExpression( + node.leftExpression, + EvaluatorFlags.MemberAccessBaseDefaults + ); const memberType = getTypeOfMemberAccessWithBaseType( node, baseTypeResult, @@ -4015,7 +4034,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } case ParseNodeType.Index: { - const baseTypeResult = getTypeOfExpression(node.baseExpression, EvaluatorFlags.DoNotSpecialize); + const baseTypeResult = getTypeOfExpression(node.baseExpression, EvaluatorFlags.IndexBaseDefaults); getTypeOfIndexWithBaseType(node, baseTypeResult, { method: 'del' }, EvaluatorFlags.None); writeTypeCache(node, { type: UnboundType.create() }, EvaluatorFlags.None); break; @@ -4367,6 +4386,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + if ((flags & EvaluatorFlags.DisallowPep695TypeAlias) !== 0) { + if (reportInvalidUseOfPep695TypeAlias(type, node)) { + type = UnknownType.create(); + } + } + if ((flags & EvaluatorFlags.ExpectingInstantiableType) !== 0) { if ((flags & EvaluatorFlags.AllowGenericClassType) === 0) { if (isInstantiableClass(type) && ClassType.isBuiltIn(type, 'Generic')) { @@ -4707,6 +4732,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions type.typeAliasInfo.name, type.typeAliasInfo.fullName, type.typeAliasInfo.typeVarScopeId, + type.typeAliasInfo.isPep695Syntax, type.typeAliasInfo.typeParameters, defaultTypeArgs ); @@ -4844,7 +4870,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getTypeOfMemberAccess(node: MemberAccessNode, flags: EvaluatorFlags): TypeResult { const baseTypeFlags = - EvaluatorFlags.DoNotSpecialize | + EvaluatorFlags.MemberAccessBaseDefaults | (flags & (EvaluatorFlags.ExpectingTypeAnnotation | EvaluatorFlags.VariableTypeAnnotation | @@ -6169,7 +6195,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } function getTypeOfIndex(node: IndexNode, flags = EvaluatorFlags.None): TypeResult { - const baseTypeResult = getTypeOfExpression(node.baseExpression, flags | EvaluatorFlags.DoNotSpecialize); + const baseTypeResult = getTypeOfExpression(node.baseExpression, flags | EvaluatorFlags.IndexBaseDefaults); // If this is meant to be a type and the base expression is a string expression, // emit an error because this will generate a runtime exception in Python versions @@ -6609,6 +6635,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions baseType.typeAliasInfo.name, baseType.typeAliasInfo.fullName, baseType.typeAliasInfo.typeVarScopeId, + baseType.typeAliasInfo.isPep695Syntax, baseType.typeAliasInfo.typeParameters, aliasTypeArgs ); @@ -6635,6 +6662,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions baseTypeResult.type.details.recursiveTypeAliasName!, '', baseTypeResult.type.details.recursiveTypeAliasScopeId!, + baseTypeResult.type.details.recursiveTypeAliasIsPep695Syntax!, baseTypeResult.type.details.recursiveTypeParameters, typeArgTypes ); @@ -7704,7 +7732,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } else { baseTypeResult = getTypeOfExpression( node.leftExpression, - EvaluatorFlags.DoNotSpecialize | (flags & EvaluatorFlags.AllowForwardReferences) + EvaluatorFlags.CallBaseDefaults | (flags & EvaluatorFlags.AllowForwardReferences) ); } @@ -7874,7 +7902,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function getLambdaType() { return getTypeOfExpression( node.leftExpression, - EvaluatorFlags.DoNotSpecialize, + EvaluatorFlags.CallBaseDefaults, makeInferenceContext(expectedType) ); } @@ -7889,7 +7917,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // If bidirectional type inference failed, use normal type inference instead. if (typeResult.typeErrors) { - typeResult = getTypeOfExpression(node.leftExpression, EvaluatorFlags.DoNotSpecialize); + typeResult = getTypeOfExpression(node.leftExpression, EvaluatorFlags.CallBaseDefaults); } return typeResult; @@ -11536,7 +11564,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ? EvaluatorFlags.AllowMissingTypeArgs | EvaluatorFlags.EvaluateStringLiteralAsType | EvaluatorFlags.DisallowParamSpec | - EvaluatorFlags.DisallowTypeVarTuple + EvaluatorFlags.DisallowTypeVarTuple | + EvaluatorFlags.DisallowPep695TypeAlias : EvaluatorFlags.DoNotSpecialize; const exprTypeResult = getTypeOfExpression( argParam.argument.valueExpression, @@ -12282,6 +12311,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions nameNode, nameNode, valueExpr, + /* isPep695Syntax */ false, /* typeParamNodes */ undefined, () => typeParameters ?? [] ); @@ -14839,6 +14869,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions type: Type, name: NameNode, errorNode: ExpressionNode, + isPep695Syntax: boolean, typeParameters?: TypeVarType[], typeParamNodes?: TypeParameterNode[] ): Type { @@ -14913,6 +14944,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions name.value, ParseTreeUtils.getClassFullName(name, fileInfo.moduleName, name.value), typeAliasScopeId, + isPep695Syntax, typeParameters.length > 0 ? typeParameters : undefined ); } @@ -15182,6 +15214,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeAliasTypeVar.details.recursiveTypeAliasName = typeAliasNameNode.value; const scopeId = ParseTreeUtils.getScopeIdForNode(typeAliasNameNode); typeAliasTypeVar.details.recursiveTypeAliasScopeId = scopeId; + typeAliasTypeVar.details.recursiveTypeAliasIsPep695Syntax = false; typeAliasTypeVar.scopeId = scopeId; // Write the type back to the type cache. It will be replaced below. @@ -15253,7 +15286,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions rightHandType = transformTypeForTypeAlias( rightHandType, typeAliasNameNode, - node.rightExpression + node.rightExpression, + /* isPep695Syntax */ false ); if (isTypeAliasRecursive(typeAliasTypeVar!, rightHandType)) { @@ -15318,7 +15352,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ) { // See if this is a call to TypedDict. We want to support // recursive type references in a TypedDict call. - const callType = getTypeOfExpression(callLeftNode, EvaluatorFlags.DoNotSpecialize).type; + const callType = getTypeOfExpression(callLeftNode, EvaluatorFlags.CallBaseDefaults).type; if (isInstantiableClass(callType) && ClassType.isBuiltIn(callType, 'TypedDict')) { return true; @@ -15333,13 +15367,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // path does not handle traditional type aliases, which are treated as // variables since they use normal variable assignment syntax. function getTypeOfTypeAlias(node: TypeAliasNode): Type { - return getTypeOfTypeAliasCommon(node, node.name, node.expression, node.typeParameters?.parameters, () => { - let typeParameters: TypeVarType[] = []; - if (node.typeParameters) { - typeParameters = evaluateTypeParameterList(node.typeParameters); + return getTypeOfTypeAliasCommon( + node, + node.name, + node.expression, + /* isPep695Syntax */ true, + node.typeParameters?.parameters, + () => { + let typeParameters: TypeVarType[] = []; + if (node.typeParameters) { + typeParameters = evaluateTypeParameterList(node.typeParameters); + } + return typeParameters; } - return typeParameters; - }); + ); } // This function is common to the handling of "type" statements and explicit @@ -15348,6 +15389,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions declNode: ParseNode, nameNode: NameNode, valueNode: ExpressionNode, + isPep695Syntax: boolean, typeParamNodes: TypeParameterNode[] | undefined, getTypeParamCallback: () => TypeVarType[] | undefined ) { @@ -15363,6 +15405,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeAliasTypeVar.details.recursiveTypeAliasName = nameNode.value; const scopeId = ParseTreeUtils.getScopeIdForNode(nameNode); typeAliasTypeVar.details.recursiveTypeAliasScopeId = scopeId; + typeAliasTypeVar.details.recursiveTypeAliasIsPep695Syntax = isPep695Syntax; typeAliasTypeVar.scopeId = scopeId; // Write the type to the type cache. It will be replaced below. @@ -15395,7 +15438,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isIncomplete = true; } - aliasType = transformTypeForTypeAlias(aliasType, nameNode, valueNode, typeParameters, typeParamNodes); + aliasType = transformTypeForTypeAlias( + aliasType, + nameNode, + valueNode, + isPep695Syntax, + typeParameters, + typeParamNodes + ); if (isTypeAliasRecursive(typeAliasTypeVar, aliasType)) { addDiagnostic( @@ -15530,7 +15580,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions EvaluatorFlags.DisallowNakedGeneric | EvaluatorFlags.DisallowTypeVarsWithScopeId | EvaluatorFlags.AssociateTypeVarsWithCurrentScope | - EvaluatorFlags.EnforceTypeVarVarianceConsistency; + EvaluatorFlags.EnforceTypeVarVarianceConsistency | + EvaluatorFlags.DisallowPep695TypeAlias; if (fileInfo.isStubFile) { exprFlags |= EvaluatorFlags.AllowForwardReferences; } @@ -18277,13 +18328,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions continue; } - flags = EvaluatorFlags.DoNotSpecialize; + flags = EvaluatorFlags.CallBaseDefaults; break; } } else if (parent.nodeType === ParseNodeType.Index) { // The base expression of an index expression is not contextual. if (nodeToEvaluate === parent.baseExpression) { - flags = EvaluatorFlags.DoNotSpecialize; + flags = EvaluatorFlags.IndexBaseDefaults; break; } } else if (parent.nodeType === ParseNodeType.StringList && nodeToEvaluate === parent.typeAnnotation) { @@ -20115,7 +20166,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (resolvedDecl.inferredTypeSource?.nodeType === ParseNodeType.Call) { const baseTypeResult = getTypeOfExpression( resolvedDecl.inferredTypeSource.leftExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ); const callType = baseTypeResult.type; @@ -20188,7 +20239,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions inferredType = transformTypeForTypeAlias( inferredType, resolvedDecl.typeAliasName, - resolvedDecl.node + resolvedDecl.node, + /* isPep695Syntax */ false ); isUnambiguousType = true; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index cd45716ed..cbb7b5940 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -140,6 +140,18 @@ export const enum EvaluatorFlags { // Allow Unpack annotation for TypedDict. AllowUnpackedTypedDict = 1 << 23, + + // Disallow a type alias defined with a "type" statement. + DisallowPep695TypeAlias = 1 << 24, + + // Defaults used for evaluating the LHS of a call expression. + CallBaseDefaults = DoNotSpecialize | DisallowPep695TypeAlias, + + // Defaults used for evaluating the LHS of a member access expression. + IndexBaseDefaults = DoNotSpecialize, + + // Defaults used for evaluating the LHS of a member access expression. + MemberAccessBaseDefaults = DoNotSpecialize | DisallowPep695TypeAlias, } export interface TypeResult { diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 1396b1d30..e5a260cd3 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -202,7 +202,7 @@ export function getTypeNarrowingCallback( if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) { const callType = evaluator.getTypeOfExpression( testExpression.leftExpression.leftExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ).type; if (isInstantiableClass(callType) && ClassType.isBuiltIn(callType, 'type')) { @@ -410,7 +410,7 @@ export function getTypeNarrowingCallback( if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) { const callTypeResult = evaluator.getTypeOfExpression( testExpression.leftExpression.leftExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ); const callType = callTypeResult.type; @@ -561,7 +561,7 @@ export function getTypeNarrowingCallback( if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) { const callTypeResult = evaluator.getTypeOfExpression( testExpression.leftExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ); const callType = callTypeResult.type; @@ -634,7 +634,7 @@ export function getTypeNarrowingCallback( if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) { const callTypeResult = evaluator.getTypeOfExpression( testExpression.leftExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ); const callType = callTypeResult.type; @@ -669,7 +669,7 @@ export function getTypeNarrowingCallback( if (ParseTreeUtils.isMatchingExpression(reference, testExpression.arguments[0].valueExpression)) { const callTypeResult = evaluator.getTypeOfExpression( testExpression.leftExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ); const callType = callTypeResult.type; @@ -701,7 +701,7 @@ export function getTypeNarrowingCallback( const callTypeResult = evaluator.getTypeOfExpression( testExpression.leftExpression, - EvaluatorFlags.DoNotSpecialize + EvaluatorFlags.CallBaseDefaults ); const callType = callTypeResult.type; diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 89aa9b463..524c1212a 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -741,6 +741,7 @@ export function transformPossibleRecursiveTypeAlias(type: Type | undefined): Typ type.typeAliasInfo.name, type.typeAliasInfo.fullName, type.typeAliasInfo.typeVarScopeId, + type.typeAliasInfo.isPep695Syntax, type.typeAliasInfo.typeParameters, type.typeAliasInfo.typeArguments ); @@ -2072,6 +2073,7 @@ export function convertToInstance(type: Type, includeSubclasses = true): Type { type.typeAliasInfo.name, type.typeAliasInfo.fullName, type.typeAliasInfo.typeVarScopeId, + type.typeAliasInfo.isPep695Syntax, type.typeAliasInfo.typeParameters, type.typeAliasInfo.typeArguments ); @@ -2123,6 +2125,7 @@ export function convertToInstantiable(type: Type, includeSubclasses = true): Typ type.typeAliasInfo.name, type.typeAliasInfo.fullName, type.typeAliasInfo.typeVarScopeId, + type.typeAliasInfo.isPep695Syntax, type.typeAliasInfo.typeParameters, type.typeAliasInfo.typeArguments ); @@ -3097,6 +3100,7 @@ class TypeVarTransformer { type.typeAliasInfo.name, type.typeAliasInfo.fullName, type.typeAliasInfo.typeVarScopeId, + type.typeAliasInfo.isPep695Syntax, type.typeAliasInfo.typeParameters, typeArgs ); @@ -3258,6 +3262,7 @@ class TypeVarTransformer { type.typeAliasInfo.name, type.typeAliasInfo.fullName, type.typeAliasInfo.typeVarScopeId, + type.typeAliasInfo.isPep695Syntax, type.typeAliasInfo.typeParameters, newTypeArgs ) diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 76a5db45a..0316a8af5 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -124,6 +124,10 @@ export interface TypeAliasInfo { fullName: string; typeVarScopeId: TypeVarScopeId; + // Indicates whether the type alias was declared with the + // "type" syntax introduced in PEP 695. + isPep695Syntax: boolean; + // Type parameters, if type alias is generic typeParameters?: TypeVarType[] | undefined; @@ -260,6 +264,7 @@ export namespace TypeBase { name: string, fullName: string, typeVarScopeId: TypeVarScopeId, + isPep695Syntax: boolean, typeParams?: TypeVarType[], typeArgs?: Type[] ): Type { @@ -271,6 +276,7 @@ export namespace TypeBase { typeParameters: typeParams, typeArguments: typeArgs, typeVarScopeId, + isPep695Syntax, }; return typeClone; @@ -2309,6 +2315,7 @@ export interface TypeVarDetails { // Used for recursive type aliases. recursiveTypeAliasName?: string | undefined; recursiveTypeAliasScopeId?: TypeVarScopeId | undefined; + recursiveTypeAliasIsPep695Syntax?: boolean; // Type parameters for a recursive type alias. recursiveTypeParameters?: TypeVarType[] | undefined; diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 2802a6603..a9daf6604 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -854,6 +854,8 @@ export namespace Localizer { export const typeAliasIllegalExpressionForm = () => getRawString('Diagnostic.typeAliasIllegalExpressionForm'); export const typeAliasIsRecursiveDirect = () => new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typeAliasIsRecursiveDirect')); + export const typeAliasNotAllowed = () => + new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typeAliasNotAllowed')); export const typeAliasNotInModuleOrClass = () => getRawString('Diagnostic.typeAliasNotInModuleOrClass'); export const typeAliasRedeclared = () => new ParameterizedString<{ name: string }>(getRawString('Diagnostic.typeAliasRedeclared')); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 1ef1799a4..4bf8066bc 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -418,6 +418,7 @@ "tupleIndexOutOfRange": "Index {index} is out of range for type {type}", "typeAliasIllegalExpressionForm": "Invalid expression form for type alias definition", "typeAliasIsRecursiveDirect": "Type alias \"{name}\" cannot use itself in its definition", + "typeAliasNotAllowed": "Type alias \"{name}\" cannot be used in this context", "typeAliasNotInModuleOrClass": "A TypeAlias can be defined only within a module or class scope", "typeAliasRedeclared": "\"{name}\" is declared as a TypeAlias and can be assigned only once", "typeAliasStatementIllegal": "Type alias statement requires Python 3.12 or newer", diff --git a/packages/pyright-internal/src/tests/samples/typeAliasStatement1.py b/packages/pyright-internal/src/tests/samples/typeAliasStatement1.py index 72cdfa1ad..6d3ac3d10 100644 --- a/packages/pyright-internal/src/tests/samples/typeAliasStatement1.py +++ b/packages/pyright-internal/src/tests/samples/typeAliasStatement1.py @@ -46,3 +46,20 @@ def func1() -> type[int]: # allowed in a type alias definition. type TA9 = (int, str, str)[0] + +type TA10 = int + +# This should generate an error. +TA10.bit_count(1) + +# This should generate an error. +TA10(0) + +# This should generate an error. +class DerivedInt(TA10): pass + +def func2(x: object): + # This should generate an error. + if isinstance(x, TA10): + reveal_type(x) + diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 36364dc81..a8a01b576 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -109,7 +109,7 @@ test('TypeAliasStatement1', () => { configOptions.defaultPythonVersion = PythonVersion.V3_12; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeAliasStatement1.py'], configOptions); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 7); }); test('TypeAliasStatement2', () => { From f5af5bb73136b29288ea1633b8d8e676441b3017 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 7 Aug 2023 18:49:24 -0700 Subject: [PATCH 479/525] Fixed bug that led to a false positive error in certain cases when using bidirectional type inference when the expected type includes a protocol that is specialized with a literal type argument. This addresses https://github.com/microsoft/pyright/issues/5636. (#5665) Co-authored-by: Eric Traut --- .../src/analyzer/constraintSolver.ts | 72 ++++++++++++------- .../src/analyzer/protocols.ts | 65 +++++++++-------- .../src/tests/samples/protocol38.py | 14 +++- 3 files changed, 97 insertions(+), 54 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index 56e645cf1..c1aa9c7bb 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -365,7 +365,7 @@ export function assignTypeToTypeVar( ) ) { if (!typeVarContext.isLocked() && isTypeVarInScope) { - typeVarContext.setTypeVarType(destType, constrainedType); + updateTypeVarType(evaluator, typeVarContext, destType, constrainedType, curWideTypeBound); } } else { diag?.addMessage( @@ -380,7 +380,7 @@ export function assignTypeToTypeVar( } else { // Assign the type to the type var. if (!typeVarContext.isLocked() && isTypeVarInScope) { - typeVarContext.setTypeVarType(destType, constrainedType); + updateTypeVarType(evaluator, typeVarContext, destType, constrainedType, curWideTypeBound); } } @@ -708,29 +708,49 @@ export function assignTypeToTypeVar( } if (!typeVarContext.isLocked() && isTypeVarInScope) { - let newNarrowTypeBoundNoLiterals: Type | undefined; + updateTypeVarType( + evaluator, + typeVarContext, + destType, + newNarrowTypeBound, + newWideTypeBound, + (flags & (AssignTypeFlags.PopulatingExpectedType | AssignTypeFlags.RetainLiteralsForTypeVar)) !== 0 + ); + } - if ( - newNarrowTypeBound && - (flags & (AssignTypeFlags.PopulatingExpectedType | AssignTypeFlags.RetainLiteralsForTypeVar)) === 0 - ) { - const strippedLiteral = isVariadicTypeVar(destType) - ? stripLiteralValueForUnpackedTuple(evaluator, newNarrowTypeBound) - : evaluator.stripLiteralValue(newNarrowTypeBound); - - // Strip the literals from the narrow type bound and see if it is still - // narrower than the wide bound. - if (strippedLiteral !== newNarrowTypeBound) { - if (!newWideTypeBound || evaluator.assignType(newWideTypeBound, strippedLiteral)) { - newNarrowTypeBoundNoLiterals = strippedLiteral; - } + return true; +} + +// Updates the narrow and wide type bounds for a type variable. It also calculates the +// narrowTypeBoundNoLiterals, which is a variant of the narrow type bound that has +// literals stripped. By default, the constraint solver always uses the "no literals" +// type in its solutions unless the version with literals is required to satisfy +// the wide type bound. +export function updateTypeVarType( + evaluator: TypeEvaluator, + typeVarContext: TypeVarContext, + destType: TypeVarType, + narrowTypeBound: Type | undefined, + wideTypeBound: Type | undefined, + forceRetainLiterals = false +) { + let narrowTypeBoundNoLiterals: Type | undefined; + + if (narrowTypeBound && !forceRetainLiterals) { + const strippedLiteral = isVariadicTypeVar(destType) + ? stripLiteralValueForUnpackedTuple(evaluator, narrowTypeBound) + : evaluator.stripLiteralValue(narrowTypeBound); + + // Strip the literals from the narrow type bound and see if it is still + // narrower than the wide bound. + if (strippedLiteral !== narrowTypeBound) { + if (!wideTypeBound || evaluator.assignType(wideTypeBound, strippedLiteral)) { + narrowTypeBoundNoLiterals = strippedLiteral; } } - - typeVarContext.setTypeVarType(destType, newNarrowTypeBound, newNarrowTypeBoundNoLiterals, newWideTypeBound); } - return true; + typeVarContext.setTypeVarType(destType, narrowTypeBound, narrowTypeBoundNoLiterals, wideTypeBound); } function assignTypeToParamSpec( @@ -846,7 +866,7 @@ export function populateTypeVarContextBasedOnExpectedType( ): boolean { if (isAny(expectedType)) { type.details.typeParameters.forEach((typeParam) => { - typeVarContext.setTypeVarType(typeParam, expectedType); + updateTypeVarType(evaluator, typeVarContext, typeParam, expectedType, expectedType); }); return true; } @@ -891,10 +911,11 @@ export function populateTypeVarContextBasedOnExpectedType( if (typeArgValue) { const variance = TypeVarType.getVariance(entry.typeVar); - typeVarContext.setTypeVarType( + updateTypeVarType( + evaluator, + typeVarContext, entry.typeVar, variance === Variance.Covariant ? undefined : typeArgValue, - /* narrowBoundNoLiterals */ undefined, variance === Variance.Contravariant ? undefined : typeArgValue ); @@ -1016,10 +1037,11 @@ export function populateTypeVarContextBasedOnExpectedType( typeArgValue = UnknownType.create(); } - typeVarContext.setTypeVarType( + updateTypeVarType( + evaluator, + typeVarContext, targetTypeVar, variance === Variance.Covariant ? undefined : typeArgValue, - /* narrowBoundNoLiterals */ undefined, variance === Variance.Contravariant ? undefined : typeArgValue ); } else { diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index d49e19c90..9cda03b26 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -10,6 +10,7 @@ import { DiagnosticAddendum } from '../common/diagnostic'; import { Localizer } from '../localization/localize'; +import { assignTypeToTypeVar } from './constraintSolver'; import { DeclarationType } from './declaration'; import { assignProperty } from './properties'; import { TypeEvaluator } from './typeEvaluatorTypes'; @@ -24,9 +25,7 @@ import { ModuleType, ProtocolCompatibility, Type, - TypeVarType, UnknownType, - Variance, } from './types'; import { applySolvedTypeVars, @@ -642,41 +641,51 @@ export function assignModuleToProtocol( return typesAreConsistent; } +// Given a (possibly-specialized) destType and an optional typeVarContext, creates +// a new typeVarContext that combines the constraints from both the destType and +// the destTypeVarContext. function createProtocolTypeVarContext( evaluator: TypeEvaluator, destType: ClassType, destTypeVarContext: TypeVarContext | undefined -) { +): TypeVarContext { const protocolTypeVarContext = new TypeVarContext(getTypeVarScopeId(destType)); - if (destType?.typeArguments) { - // Infer the type parameter variance because we need it below. - evaluator.inferTypeParameterVarianceForClass(destType); - let specializedDestType = destType; - if (destTypeVarContext) { - specializedDestType = applySolvedTypeVars(destType, destTypeVarContext, { - useNarrowBoundOnly: true, - }) as ClassType; - } + let specializedDestType = destType; + if (destTypeVarContext) { + specializedDestType = applySolvedTypeVars(destType, destTypeVarContext, { + useNarrowBoundOnly: true, + }) as ClassType; + } - // Populate the typeVarContext with any concrete constraints that - // have already been solved. - destType.details.typeParameters.forEach((typeParam, index) => { - if (index < specializedDestType.typeArguments!.length) { - const typeArg = specializedDestType.typeArguments![index]; + destType.details.typeParameters.forEach((typeParam, index) => { + if (specializedDestType.typeArguments && index < specializedDestType.typeArguments.length) { + const typeArg = specializedDestType.typeArguments[index]; - if (!requiresSpecialization(typeArg)) { - const typeParamVariance = TypeVarType.getVariance(typeParam); - protocolTypeVarContext.setTypeVarType( - typeParam, - typeParamVariance !== Variance.Contravariant ? typeArg : undefined, - /* narrowBoundNoLiterals */ undefined, - typeParamVariance !== Variance.Covariant ? typeArg : undefined - ); - } + if (!requiresSpecialization(typeArg)) { + assignTypeToTypeVar( + evaluator, + typeParam, + typeArg, + /* diag */ undefined, + protocolTypeVarContext, + AssignTypeFlags.PopulatingExpectedType + ); } - }); - } + } + + if (destTypeVarContext) { + const entry = destTypeVarContext.getPrimarySignature().getTypeVar(typeParam); + if (entry) { + protocolTypeVarContext.setTypeVarType( + typeParam, + entry.narrowBound, + entry.narrowBoundNoLiterals, + entry.wideBound + ); + } + } + }); return protocolTypeVarContext; } diff --git a/packages/pyright-internal/src/tests/samples/protocol38.py b/packages/pyright-internal/src/tests/samples/protocol38.py index d300d85bc..fda5e87e0 100644 --- a/packages/pyright-internal/src/tests/samples/protocol38.py +++ b/packages/pyright-internal/src/tests/samples/protocol38.py @@ -1,7 +1,7 @@ # This sample tests the case where a protocol is specialized with # a literal type. -from typing import Literal, Protocol, Self +from typing import Any, Literal, Protocol, Self, TypeVar class Negatable(Protocol): @@ -18,3 +18,15 @@ def func1(x: Negatable) -> None: def func2(val: Literal[0, 1]): func1(val) + + +T = TypeVar("T", covariant=True) + + +class SupportsGetItem(Protocol[T]): + def __getitem__(self, __k: int) -> T: + ... + + +def func3(a: tuple[Any, ...]): + x: SupportsGetItem[Literal["a"]] = a From 889e8c98574f7366dcc3a9875230821a52baf38a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 7 Aug 2023 19:49:59 -0700 Subject: [PATCH 480/525] Added internal propagation of constructorTypeVarScopeId for ParamSpec captures. --- packages/pyright-internal/src/analyzer/constraintSolver.ts | 1 + packages/pyright-internal/src/analyzer/typeEvaluator.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/constraintSolver.ts b/packages/pyright-internal/src/analyzer/constraintSolver.ts index c1aa9c7bb..b70d984b7 100644 --- a/packages/pyright-internal/src/analyzer/constraintSolver.ts +++ b/packages/pyright-internal/src/analyzer/constraintSolver.ts @@ -826,6 +826,7 @@ function assignTypeToParamSpec( FunctionType.addParameter(newFunction, param); }); newFunction.details.typeVarScopeId = srcType.details.typeVarScopeId; + newFunction.details.constructorTypeVarScopeId = srcType.details.constructorTypeVarScopeId; newFunction.details.paramSpecTypeVarScopeId = srcType.details.paramSpecTypeVarScopeId; newFunction.details.docString = srcType.details.docString; newFunction.details.paramSpec = srcType.details.paramSpec; diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d084abf7a..eac215aae 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24047,6 +24047,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions effectiveSrcType.details.docString ); remainingFunction.details.typeVarScopeId = effectiveSrcType.details.typeVarScopeId; + remainingFunction.details.constructorTypeVarScopeId = + effectiveSrcType.details.constructorTypeVarScopeId; remainingParams.forEach((param) => { FunctionType.addParameter(remainingFunction, param); }); From eb9702d037c60182d449a7f915ed6962993f80fa Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 8 Aug 2023 11:39:29 -0700 Subject: [PATCH 481/525] Fixed a bug that led to incorrect type narrowing on assignment in certain cases where the declared type includes a type argument with an `Any` and the assigned type does not. This addresses #5628. (#5671) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 17 +++++++++- .../src/tests/samples/assignment10.py | 31 ++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index eac215aae..6514f8038 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24217,7 +24217,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const expectedTypeArgType = typeVarContext.getPrimarySignature().getTypeVarType(typeParam); if (expectedTypeArgType) { - if (containsAnyRecursive(expectedTypeArgType) || isAnyOrUnknown(typeArg)) { + if (isAnyOrUnknown(expectedTypeArgType) || isAnyOrUnknown(typeArg)) { replacedTypeArg = true; return expectedTypeArgType; } else if (isClassInstance(expectedTypeArgType) && isClassInstance(typeArg)) { @@ -24232,6 +24232,21 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions replacedTypeArg = true; return recursiveReplacement; } + } else if (containsAnyRecursive(expectedTypeArgType)) { + // If the expected type arg contains an Any, we can replace it with + // a version that doesn't contain Any if the replacement doesn't violate + // the variance of the type parameter. + const variance = TypeVarType.getVariance(typeParam); + const isSubtype = assignType(expectedTypeArgType, typeArg); + const isSupertype = assignType(typeArg, expectedTypeArgType); + + if ( + (variance === Variance.Contravariant || isSubtype) && + (variance === Variance.Covariant || isSupertype) + ) { + replacedTypeArg = true; + return expectedTypeArgType; + } } } diff --git a/packages/pyright-internal/src/tests/samples/assignment10.py b/packages/pyright-internal/src/tests/samples/assignment10.py index fa41c9695..4b732e1f7 100644 --- a/packages/pyright-internal/src/tests/samples/assignment10.py +++ b/packages/pyright-internal/src/tests/samples/assignment10.py @@ -1,7 +1,7 @@ # This sample tests some cases where types are narrowed on assignment, # including some cases that involve "Any". -from typing import Any +from typing import Any, Generic, Iterable, TypeVar class A: @@ -17,6 +17,13 @@ def method1(cls) -> bool: return cls.instance.foo +T = TypeVar("T") + + +class B(Generic[T]): + ... + + def func1(v1: list[Any | None], v2: list[int | str]): x1: list[int | None] = v1 reveal_type(x1, expected_text="list[int | None]") @@ -37,3 +44,25 @@ def func2(v1: dict[int, Any | None], v2: dict[int, int | str]): x3: dict[Any, Any | str] = v2 reveal_type(x3, expected_text="dict[Any, Any | str]") + + +def func3(y: list[int]): + x1: Iterable[int | B[Any]] = y + reveal_type(x1, expected_text="list[int]") + + x2: Iterable[Any | B[Any]] = y + reveal_type(x2, expected_text="list[int]") + + x3: Iterable[Any] = y + reveal_type(x3, expected_text="list[Any]") + + +def func4(y: list[Any]): + x1: Iterable[int | B[Any]] = y + reveal_type(x1, expected_text="list[int | B[Any]]") + + x2: Iterable[Any | B[Any]] = y + reveal_type(x2, expected_text="list[Any | B[Any]]") + + x3: Iterable[Any] = y + reveal_type(x3, expected_text="list[Any]") From 4b088a8975bb8dba4a4834fb6db55f58622f59d3 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 8 Aug 2023 19:21:00 -0700 Subject: [PATCH 482/525] Published 1.1.321 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 7dfafe536..f923acd51 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.320", + "version": "1.1.321", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index 4e1f3da53..d2983a833 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.320", + "version": "1.1.321", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.320", + "version": "1.1.321", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 87b8a2c51..1002b1500 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.320", + "version": "1.1.321", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 4b1f0691b..8884ed1eb 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.320", + "version": "1.1.321", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.320", + "version": "1.1.321", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index d9de3b16e..ec2f53767 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.320", + "version": "1.1.321", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 454e00793..c3a264077 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.320", + "version": "1.1.321", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.320", + "version": "1.1.321", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index f90ad4de5..e738e025f 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.320", + "version": "1.1.321", "private": true, "license": "MIT", "author": { From 444f331b97a351149a590546a694ea8e03e5b73d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 9 Aug 2023 10:17:29 -0700 Subject: [PATCH 483/525] Fixed recent regression that led to a false positive when assigning a union of types that use invariant type parameters to a protocol that uses a covariant type parameter. This addresses #5673. (#5675) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/protocols.ts | 7 ++++++- .../pyright-internal/src/tests/samples/protocol38.py | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index 9cda03b26..c0f2c99ca 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -663,13 +663,18 @@ function createProtocolTypeVarContext( const typeArg = specializedDestType.typeArguments[index]; if (!requiresSpecialization(typeArg)) { + // If the caller hasn't provided a destTypeVarContext, assume that + // the destType represents an "expected type" and populate the + // typeVarContext accordingly. For example, if the destType is + // MyProto[Literal[0]], we want to constrain the type argument to be + // no wider than Literal[0] if the type param is not contravariant. assignTypeToTypeVar( evaluator, typeParam, typeArg, /* diag */ undefined, protocolTypeVarContext, - AssignTypeFlags.PopulatingExpectedType + destTypeVarContext ? AssignTypeFlags.Default : AssignTypeFlags.PopulatingExpectedType ); } } diff --git a/packages/pyright-internal/src/tests/samples/protocol38.py b/packages/pyright-internal/src/tests/samples/protocol38.py index fda5e87e0..bac691430 100644 --- a/packages/pyright-internal/src/tests/samples/protocol38.py +++ b/packages/pyright-internal/src/tests/samples/protocol38.py @@ -30,3 +30,12 @@ def __getitem__(self, __k: int) -> T: def func3(a: tuple[Any, ...]): x: SupportsGetItem[Literal["a"]] = a + + +def func4(x: SupportsGetItem[T]) -> T: + return x[0] + + +def func5(x: list[int] | list[str]) -> None: + y = func4(x) + reveal_type(y, expected_text="int | str") From 634c80742f34812e8fabce6259d8241b659f5388 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 9 Aug 2023 10:45:50 -0700 Subject: [PATCH 484/525] pull-pylance-with-pyright-1.1.321 (#5676) --- .../src/analyzer/backgroundAnalysisProgram.ts | 19 ++-- .../src/analyzer/packageTypeVerifier.ts | 6 +- .../pyright-internal/src/analyzer/program.ts | 42 ++----- .../pyright-internal/src/analyzer/service.ts | 52 ++++++++- .../src/analyzer/typePrinter.ts | 2 +- .../src/backgroundAnalysis.ts | 5 +- .../src/backgroundAnalysisBase.ts | 16 +-- .../src/backgroundThreadBase.ts | 31 ++++-- .../pyright-internal/src/common/console.ts | 1 - .../src/common/extensibility.ts | 39 +------ .../pyright-internal/src/common/pathUtils.ts | 22 +++- .../src/common/serviceProvider.ts | 38 +++++++ .../src/common/serviceProviderExtensions.ts | 67 +++++++++++ .../src/languageServerBase.ts | 13 ++- .../src/localization/package.nls.cs.json | 2 +- .../src/localization/package.nls.de.json | 2 +- .../src/localization/package.nls.es.json | 2 +- .../src/localization/package.nls.fr.json | 2 +- .../src/localization/package.nls.it.json | 2 +- .../src/localization/package.nls.ja.json | 2 +- .../src/localization/package.nls.ko.json | 2 +- .../src/localization/package.nls.pl.json | 2 +- .../src/localization/package.nls.pt-br.json | 2 +- .../src/localization/package.nls.ru.json | 2 +- .../src/localization/package.nls.tr.json | 2 +- .../src/localization/package.nls.zh-cn.json | 2 +- .../src/localization/package.nls.zh-tw.json | 2 +- packages/pyright-internal/src/nodeMain.ts | 3 +- .../pyright-internal/src/pyrightFileSystem.ts | 7 +- packages/pyright-internal/src/server.ts | 8 +- .../src/tests/harness/fourslash/runner.ts | 2 +- .../harness/fourslash/testLanguageService.ts | 5 +- .../src/tests/harness/fourslash/testState.ts | 14 ++- .../src/tests/service.test.ts | 105 ++++++++++++++++++ .../pyright-internal/src/tests/testUtils.ts | 8 +- 35 files changed, 388 insertions(+), 143 deletions(-) create mode 100644 packages/pyright-internal/src/common/serviceProvider.ts create mode 100644 packages/pyright-internal/src/common/serviceProviderExtensions.ts diff --git a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts index 6da09c278..a43d5ac10 100644 --- a/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts +++ b/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts @@ -11,14 +11,15 @@ import { CancellationToken } from 'vscode-languageserver'; import { BackgroundAnalysisBase } from '../backgroundAnalysisBase'; import { ConfigOptions, ExecutionEnvironment } from '../common/configOptions'; -import { ConsoleInterface } from '../common/console'; import { Diagnostic } from '../common/diagnostic'; import { FileDiagnostics } from '../common/diagnosticSink'; import { Range } from '../common/textRange'; import { AnalysisCompleteCallback, analyzeProgram } from './analysis'; import { CacheManager } from './cacheManager'; import { ImportResolver } from './importResolver'; -import { MaxAnalysisTime, OpenFileOptions, Program, ISourceFileFactory } from './program'; +import { MaxAnalysisTime, OpenFileOptions, Program } from './program'; +import { ServiceProvider } from '../common/serviceProvider'; +import '../common/serviceProviderExtensions'; export enum InvalidatedReason { Reanalyzed, @@ -35,21 +36,19 @@ export class BackgroundAnalysisProgram { constructor( protected readonly serviceId: string, - private readonly _console: ConsoleInterface, + private readonly _serviceProvider: ServiceProvider, private _configOptions: ConfigOptions, private _importResolver: ImportResolver, private _backgroundAnalysis?: BackgroundAnalysisBase, private readonly _maxAnalysisTime?: MaxAnalysisTime, private readonly _disableChecker?: boolean, - cacheManager?: CacheManager, - sourceFileFactory?: ISourceFileFactory + cacheManager?: CacheManager ) { this._program = new Program( this.importResolver, this.configOptions, - this._console, + this._serviceProvider, undefined, - sourceFileFactory, this._disableChecker, cacheManager, serviceId @@ -162,7 +161,7 @@ export class BackgroundAnalysisProgram { this._maxAnalysisTime, this._configOptions, this._onAnalysisCompletion, - this._console, + this._serviceProvider.console(), token ); } @@ -198,7 +197,7 @@ export class BackgroundAnalysisProgram { /* maxTime */ undefined, this._configOptions, this._onAnalysisCompletion, - this._console, + this._serviceProvider.console(), token ); return this._program.writeTypeStub(targetImportPath, targetIsSingleFile, stubPath, token); @@ -273,7 +272,7 @@ export class BackgroundAnalysisProgram { export type BackgroundAnalysisProgramFactory = ( serviceId: string, - console: ConsoleInterface, + serviceProvider: ServiceProvider, configOptions: ConfigOptions, importResolver: ImportResolver, backgroundAnalysis?: BackgroundAnalysisBase, diff --git a/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts b/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts index 92935d33b..fc1675b6f 100644 --- a/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts +++ b/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts @@ -23,6 +23,8 @@ import { stripFileExtension, tryStat, } from '../common/pathUtils'; +import { ServiceProvider } from '../common/serviceProvider'; +import { ServiceKeys } from '../common/serviceProviderExtensions'; import { getEmptyRange, Range } from '../common/textRange'; import { DeclarationType, FunctionDeclaration, VariableDeclaration } from './declaration'; import { createImportedModuleDescriptor, ImportResolver } from './importResolver'; @@ -105,7 +107,9 @@ export class PackageTypeVerifier { this._configOptions, new FullAccessHost(this._fileSystem) ); - this._program = new Program(this._importResolver, this._configOptions); + const serviceProvider = new ServiceProvider([{ key: ServiceKeys.console, value: console }]); + + this._program = new Program(this._importResolver, this._configOptions, serviceProvider); } verify(): PackageTypeReport { diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index c95808354..edb7e23a7 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -54,6 +54,9 @@ import { PrintTypeFlags } from './typePrinter'; import { TypeStubWriter } from './typeStubWriter'; import { Type } from './types'; import { FileSystem } from '../common/fileSystem'; +import { ServiceProvider } from '../common/serviceProvider'; +import '../common/serviceProviderExtensions'; +import { ServiceKeys } from '../common/serviceProviderExtensions'; const _maxImportDepth = 256; @@ -129,34 +132,6 @@ export interface ISourceFileFactory { ): SourceFile; } -const DefaultSourceFileFactory: ISourceFileFactory = { - createSourceFile( - fs: FileSystem, - filePath: string, - moduleName: string, - isThirdPartyImport: boolean, - isThirdPartyPyTypedPresent: boolean, - editMode: boolean, - console?: ConsoleInterface, - logTracker?: LogTracker, - realFilePath?: string, - ipythonMode?: IPythonMode - ) { - return new SourceFile( - fs, - filePath, - moduleName, - isThirdPartyImport, - isThirdPartyPyTypedPresent, - editMode, - console, - logTracker, - realFilePath, - ipythonMode - ); - }, -}; - export interface OpenFileOptions { isTracked: boolean; ipythonMode: IPythonMode; @@ -194,18 +169,17 @@ export class Program { constructor( initialImportResolver: ImportResolver, initialConfigOptions: ConfigOptions, - console?: ConsoleInterface, + private _serviceProvider: ServiceProvider, logTracker?: LogTracker, - sourceFileFactory?: ISourceFileFactory, private _disableChecker?: boolean, cacheManager?: CacheManager, id?: string ) { - this._console = console || new StandardConsole(); - this._logTracker = logTracker ?? new LogTracker(console, 'FG'); + this._console = _serviceProvider.tryGet(ServiceKeys.console) || new StandardConsole(); + this._logTracker = logTracker ?? new LogTracker(this._console, 'FG'); this._importResolver = initialImportResolver; this._configOptions = initialConfigOptions; - this._sourceFileFactory = sourceFileFactory ?? DefaultSourceFileFactory; + this._sourceFileFactory = _serviceProvider.sourceFileFactory(); this._cacheManager = cacheManager ?? new CacheManager(); this._cacheManager.registerCacheOwner(this); @@ -968,7 +942,7 @@ export class Program { const program = new Program( this._importResolver, this._configOptions, - this._console, + this._serviceProvider, new LogTracker(this._console, 'Cloned') ); diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index aee0cb33d..7bf09d301 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -28,15 +28,18 @@ import { FileSpec, combinePaths, comparePaths, + containsPath, forEachAncestorDirectory, getDirectoryPath, getFileExtension, getFileName, getFileSpec, getFileSystemEntries, + getPathComponents, hasPythonExtension, isDirectory, isFile, + isFileSystemCaseSensitive, makeDirectories, normalizePath, normalizeSlashes, @@ -63,6 +66,8 @@ import { MaxAnalysisTime, Program } from './program'; import { findPythonSearchPaths } from './pythonPathUtils'; import { IPythonMode } from './sourceFile'; import { TypeEvaluator } from './typeEvaluatorTypes'; +import { ServiceProvider } from '../common/serviceProvider'; +import { ServiceKeys } from '../common/serviceProviderExtensions'; export const configFileNames = ['pyrightconfig.json']; export const pyprojectTomlName = 'pyproject.toml'; @@ -118,6 +123,7 @@ export class AnalyzerService { private _backgroundAnalysisCancellationSource: AbstractCancellationTokenSource | undefined; private _disposed = false; private _pendingLibraryChanges: RefreshOptions = { changesOnly: true }; + private _serviceProvider = new ServiceProvider(); constructor(instanceName: string, fs: FileSystem, options: AnalyzerServiceOptions) { this._instanceName = instanceName; @@ -127,6 +133,7 @@ export class AnalyzerService { this._options.serviceId = this._options.serviceId ?? getNextServiceId(instanceName); this._options.console = options.console || new StandardConsole(); + this._serviceProvider.add(ServiceKeys.console, this._options.console); this._options.importResolverFactory = options.importResolverFactory ?? AnalyzerService.createImportResolver; this._options.cancellationProvider = options.cancellationProvider ?? new DefaultCancellationProvider(); this._options.hostFactory = options.hostFactory ?? (() => new NoAccessHost()); @@ -142,7 +149,7 @@ export class AnalyzerService { this._options.backgroundAnalysisProgramFactory !== undefined ? this._options.backgroundAnalysisProgramFactory( this._options.serviceId, - this._options.console, + this._serviceProvider, this._options.configOptions, importResolver, this._options.backgroundAnalysis, @@ -151,7 +158,7 @@ export class AnalyzerService { ) : new BackgroundAnalysisProgram( this._options.serviceId, - this._options.console, + this._serviceProvider, this._options.configOptions, importResolver, this._options.backgroundAnalysis, @@ -434,6 +441,10 @@ export class AnalyzerService { return this._shouldHandleSourceFileWatchChanges(path, isFile); } + test_shouldHandleLibraryFileWatchChanges(path: string, libSearchPaths: string[]) { + return this._shouldHandleLibraryFileWatchChanges(path, libSearchPaths); + } + writeTypeStub(token: CancellationToken): void { const typingsSubdirPath = this._getTypeStubFolder(); @@ -1418,6 +1429,10 @@ export class AnalyzerService { return; } + if (!this._shouldHandleLibraryFileWatchChanges(path, watchList)) { + return; + } + // If file doesn't exist, it is delete. const isChange = event === 'change' && this.fs.existsSync(path); this._scheduleLibraryAnalysis(isChange); @@ -1428,6 +1443,39 @@ export class AnalyzerService { } } + private _shouldHandleLibraryFileWatchChanges(path: string, libSearchPaths: string[]) { + if (this._program.getSourceFileInfo(path)) { + return true; + } + + // find the innermost matching search path + let matchingSearchPath; + const ignoreCase = !isFileSystemCaseSensitive(this.fs); + for (const libSearchPath of libSearchPaths) { + if ( + containsPath(libSearchPath, path, ignoreCase) && + (!matchingSearchPath || matchingSearchPath.length < libSearchPath.length) + ) { + matchingSearchPath = libSearchPath; + } + } + + if (!matchingSearchPath) { + return true; + } + + const parentComponents = getPathComponents(matchingSearchPath); + const childComponents = getPathComponents(path); + + for (let i = parentComponents.length; i < childComponents.length; i++) { + if (childComponents[i].startsWith('.')) { + return false; + } + } + + return true; + } + private _clearLibraryReanalysisTimer() { if (this._libraryReanalysisTimer) { clearTimeout(this._libraryReanalysisTimer); diff --git a/packages/pyright-internal/src/analyzer/typePrinter.ts b/packages/pyright-internal/src/analyzer/typePrinter.ts index 9ef3eff16..962454801 100644 --- a/packages/pyright-internal/src/analyzer/typePrinter.ts +++ b/packages/pyright-internal/src/analyzer/typePrinter.ts @@ -169,7 +169,7 @@ export function printLiteralValue(type: ClassType, quotation = "'"): string { literalStr = `'${literalStr .substring(1, literalStr.length - 1) .replace(escapedDoubleQuoteRegEx, '"') - .replace(singleTickRegEx, "\\'")}'`; + .replace(singleTickRegEx, "\\'")}'`; // CodeQL [SM02383] Code ql is just wrong here. We don't need to replace backslashes. } } } else if (typeof literalValue === 'boolean') { diff --git a/packages/pyright-internal/src/backgroundAnalysis.ts b/packages/pyright-internal/src/backgroundAnalysis.ts index d444fe835..fb60fe73c 100644 --- a/packages/pyright-internal/src/backgroundAnalysis.ts +++ b/packages/pyright-internal/src/backgroundAnalysis.ts @@ -17,6 +17,7 @@ import { ConsoleInterface } from './common/console'; import { FileSystem } from './common/fileSystem'; import { FullAccessHost } from './common/fullAccessHost'; import { Host } from './common/host'; +import { ServiceProvider } from './common/serviceProvider'; export class BackgroundAnalysis extends BackgroundAnalysisBase { constructor(console: ConsoleInterface) { @@ -35,8 +36,8 @@ export class BackgroundAnalysis extends BackgroundAnalysisBase { } export class BackgroundAnalysisRunner extends BackgroundAnalysisRunnerBase { - constructor() { - super(); + constructor(serviceProvider: ServiceProvider) { + super(serviceProvider); } protected override createHost(): Host { diff --git a/packages/pyright-internal/src/backgroundAnalysisBase.ts b/packages/pyright-internal/src/backgroundAnalysisBase.ts index 199bddc35..4ef358022 100644 --- a/packages/pyright-internal/src/backgroundAnalysisBase.ts +++ b/packages/pyright-internal/src/backgroundAnalysisBase.ts @@ -11,7 +11,7 @@ import { MessageChannel, MessagePort, Worker, parentPort, threadId, workerData } import { AnalysisCompleteCallback, AnalysisResults, analyzeProgram, nullCallback } from './analyzer/analysis'; import { ImportResolver } from './analyzer/importResolver'; -import { OpenFileOptions, Program, ISourceFileFactory } from './analyzer/program'; +import { OpenFileOptions, Program } from './analyzer/program'; import { BackgroundThreadBase, InitializationData, @@ -37,7 +37,7 @@ import { Host, HostKind } from './common/host'; import { LogTracker } from './common/logTracker'; import { Range } from './common/textRange'; import { BackgroundAnalysisProgram, InvalidatedReason } from './analyzer/backgroundAnalysisProgram'; -import { PyrightFileSystem } from './pyrightFileSystem'; +import { ServiceProvider } from './common/serviceProvider'; export class BackgroundAnalysisBase { private _worker: Worker | undefined; @@ -265,8 +265,8 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase protected importResolver: ImportResolver; protected logTracker: LogTracker; - protected constructor(fileSystem?: PyrightFileSystem, sourceFileFactory?: ISourceFileFactory) { - super(workerData as InitializationData, fileSystem); + protected constructor(serviceProvider: ServiceProvider) { + super(workerData as InitializationData, serviceProvider); // Stash the base directory into a global variable. const data = workerData as InitializationData; @@ -278,13 +278,7 @@ export abstract class BackgroundAnalysisRunnerBase extends BackgroundThreadBase const console = this.getConsole(); this.logTracker = new LogTracker(console, `BG(${threadId})`); - this._program = new Program( - this.importResolver, - this._configOptions, - console, - this.logTracker, - sourceFileFactory - ); + this._program = new Program(this.importResolver, this._configOptions, serviceProvider, this.logTracker); // Create the extensions bound to the program for this background thread Extensions.createProgramExtensions(this._program, { diff --git a/packages/pyright-internal/src/backgroundThreadBase.ts b/packages/pyright-internal/src/backgroundThreadBase.ts index 039267800..185498506 100644 --- a/packages/pyright-internal/src/backgroundThreadBase.ts +++ b/packages/pyright-internal/src/backgroundThreadBase.ts @@ -12,10 +12,11 @@ import { OperationCanceledException, setCancellationFolderName } from './common/ import { ConfigOptions } from './common/configOptions'; import { ConsoleInterface, LogLevel } from './common/console'; import * as debug from './common/debug'; -import { FileSystem } from './common/fileSystem'; import { FileSpec } from './common/pathUtils'; import { createFromRealFileSystem } from './common/realFileSystem'; -import { PyrightFileSystem } from './pyrightFileSystem'; +import { ServiceProvider } from './common/serviceProvider'; +import './common/serviceProviderExtensions'; +import { ServiceKeys } from './common/serviceProviderExtensions'; export class BackgroundConsole implements ConsoleInterface { // We always generate logs in the background. For the foreground, @@ -42,24 +43,38 @@ export class BackgroundConsole implements ConsoleInterface { } export class BackgroundThreadBase { - private _console = new BackgroundConsole(); - protected fs: FileSystem; + private readonly _serviceProvider: ServiceProvider; - protected constructor(data: InitializationData, fileSystem?: PyrightFileSystem) { + protected constructor(data: InitializationData, serviceProvider?: ServiceProvider) { setCancellationFolderName(data.cancellationFolderName); // Stash the base directory into a global variable. (global as any).__rootDirectory = data.rootDirectory; - this.fs = fileSystem ?? new PyrightFileSystem(createFromRealFileSystem(this.getConsole())); + // Make sure there's a file system and a console interface. + this._serviceProvider = serviceProvider ?? new ServiceProvider(); + if (!this._serviceProvider.tryGet(ServiceKeys.console)) { + this._serviceProvider.add(ServiceKeys.console, new BackgroundConsole()); + } + if (!this._serviceProvider.tryGet(ServiceKeys.fs)) { + this._serviceProvider.add(ServiceKeys.fs, createFromRealFileSystem(this.getConsole())); + } + } + + protected get fs() { + return this._serviceProvider.fs(); } protected log(level: LogLevel, msg: string) { - parentPort?.postMessage({ requestType: 'log', data: { level: level, message: msg } }); + //parentPort?.postMessage({ requestType: 'log', data: { level: level, message: msg } }); } protected getConsole() { - return this._console; + return this._serviceProvider.console(); + } + + protected getServiceProvider() { + return this._serviceProvider; } protected handleShutdown() { diff --git a/packages/pyright-internal/src/common/console.ts b/packages/pyright-internal/src/common/console.ts index 4c1b2db69..9b7e4f36a 100644 --- a/packages/pyright-internal/src/common/console.ts +++ b/packages/pyright-internal/src/common/console.ts @@ -17,7 +17,6 @@ export enum LogLevel { Info = 'info', Log = 'log', } - export interface ConsoleInterface { error: (message: string) => void; warn: (message: string) => void; diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index 580025074..2632846ef 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -6,7 +6,7 @@ * Language service extensibility. */ -import { CancellationToken, CompletionList, ExecuteCommandParams } from 'vscode-languageserver'; +import { CancellationToken } from 'vscode-languageserver'; import { getFileInfo } from '../analyzer/analyzerNodeInfo'; import { Declaration } from '../analyzer/declaration'; @@ -15,10 +15,9 @@ import * as prog from '../analyzer/program'; import { SourceMapper } from '../analyzer/sourceMapper'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { LanguageServerBase, LanguageServerInterface } from '../languageServerBase'; -import { CompletionOptions } from '../languageService/completionProvider'; import { ParseNode } from '../parser/parseNodes'; import { ParseResults } from '../parser/parser'; -import { ConfigOptions, SignatureDisplayType } from './configOptions'; +import { ConfigOptions } from './configOptions'; import { ConsoleInterface } from './console'; import { ReadOnlyFileSystem } from './fileSystem'; import { Range } from './textRange'; @@ -27,11 +26,10 @@ import { Diagnostic } from '../common/diagnostic'; import { IPythonMode } from '../analyzer/sourceFile'; export interface LanguageServiceExtension { - readonly commandExtension?: CommandExtension; + // empty } export interface ProgramExtension { - readonly completionListExtension?: CompletionListExtension; readonly declarationProviderExtension?: DeclarationProviderExtension; fileDirty?: (filePath: string) => void; @@ -140,37 +138,6 @@ export interface ExtensionFactory { createLanguageServiceExtension?: (languageserver: LanguageServerInterface) => LanguageServiceExtension; } -export interface CommandExtension { - // Prefix to tell extension commands from others. - // For example, 'myextension'. Command name then - // should be 'myextension.command'. - readonly commandPrefix: string; - - // Extension executes command - executeCommand(params: ExecuteCommandParams, token: CancellationToken): Promise; -} - -export interface ExtensionInfo { - readonly correlationId: string; - readonly selectedItemTelemetryTimeInMS: number; - readonly itemTelemetryTimeInMS: number; - readonly totalTimeInMS: number; -} - -export interface CompletionListExtension { - // Extension updates completion list provided by the application. - updateCompletionResults( - evaluator: TypeEvaluator, - sourceMapper: SourceMapper, - options: CompletionOptions, - completionResults: CompletionList | null, - parseResults: ParseResults, - position: number, - functionSignatureDisplay: SignatureDisplayType, - token: CancellationToken - ): Promise; -} - export enum DeclarationUseCase { Definition, Rename, diff --git a/packages/pyright-internal/src/common/pathUtils.ts b/packages/pyright-internal/src/common/pathUtils.ts index a88f762b5..780c1874b 100644 --- a/packages/pyright-internal/src/common/pathUtils.ts +++ b/packages/pyright-internal/src/common/pathUtils.ts @@ -26,6 +26,7 @@ import { } from './stringUtils'; let _fsCaseSensitivity: boolean | undefined = undefined; +let _underTest: boolean = false; export interface FileSpec { // File specs can contain wildcard characters (**, *, ?). This @@ -975,13 +976,22 @@ export function normalizePathCase(fs: FileSystem, path: string) { return path.toLowerCase(); } +export function setTestingMode(underTest: boolean) { + _underTest = underTest; +} + +const isFileSystemCaseSensitiveMap = new WeakMap(); + export function isFileSystemCaseSensitive(fs: FileSystem) { - if (_fsCaseSensitivity !== undefined) { + if (!_underTest && _fsCaseSensitivity !== undefined) { return _fsCaseSensitivity; } - _fsCaseSensitivity = isFileSystemCaseSensitiveInternal(fs); - return _fsCaseSensitivity; + if (!isFileSystemCaseSensitiveMap.has(fs)) { + _fsCaseSensitivity = isFileSystemCaseSensitiveInternal(fs); + isFileSystemCaseSensitiveMap.set(fs, _fsCaseSensitivity); + } + return !!isFileSystemCaseSensitiveMap.get(fs); } export function isFileSystemCaseSensitiveInternal(fs: FileSystem) { @@ -1005,7 +1015,11 @@ export function isFileSystemCaseSensitiveInternal(fs: FileSystem) { } finally { if (filePath) { // remove temp file created - fs.unlinkSync(filePath); + try { + fs.unlinkSync(filePath); + } catch (e: any) { + /* ignored */ + } } } } diff --git a/packages/pyright-internal/src/common/serviceProvider.ts b/packages/pyright-internal/src/common/serviceProvider.ts new file mode 100644 index 000000000..bce0bb184 --- /dev/null +++ b/packages/pyright-internal/src/common/serviceProvider.ts @@ -0,0 +1,38 @@ +/* + * serviceProvider.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Container for different services used within the application. + */ + +export interface IServiceKey {} + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export class ServiceKey implements IServiceKey {} + +export class ServiceProvider { + private _container: Map = new Map(); + + constructor(initialServices: { key: IServiceKey; value: any }[] = []) { + initialServices.forEach((entry) => { + this.add(entry.key, entry.value); + }); + } + + add(key: ServiceKey, value: T) { + this._container.set(key, value); + } + + tryGet(key: ServiceKey): T | undefined { + return this._container.get(key); + } + + get(key: ServiceKey): T { + const value = this.tryGet(key); + if (value === undefined) { + throw new Error(`Global service provider not initialized for ${key.toString()}`); + } + return value; + } +} diff --git a/packages/pyright-internal/src/common/serviceProviderExtensions.ts b/packages/pyright-internal/src/common/serviceProviderExtensions.ts new file mode 100644 index 000000000..c77082cd8 --- /dev/null +++ b/packages/pyright-internal/src/common/serviceProviderExtensions.ts @@ -0,0 +1,67 @@ +/* + * serviceProviderExtensions.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Shortcuts to common services. + */ +import { ISourceFileFactory } from '../analyzer/program'; +import { IPythonMode, SourceFile } from '../analyzer/sourceFile'; +import { IPyrightFileSystem } from '../pyrightFileSystem'; +import { ConsoleInterface } from './console'; +import { FileSystem } from './fileSystem'; +import { LogTracker } from './logTracker'; +import { ServiceKey, ServiceProvider } from './serviceProvider'; + +declare module './serviceProvider' { + interface ServiceProvider { + fs(): IPyrightFileSystem; + console(): ConsoleInterface; + sourceFileFactory(): ISourceFileFactory; + } +} + +export namespace ServiceKeys { + export const fs = new ServiceKey(); + export const console = new ServiceKey(); + export const sourceFileFactory = new ServiceKey(); +} + +ServiceProvider.prototype.fs = function () { + return this.get(ServiceKeys.fs); +}; +ServiceProvider.prototype.console = function () { + return this.get(ServiceKeys.console); +}; +ServiceProvider.prototype.sourceFileFactory = function () { + const result = this.tryGet(ServiceKeys.sourceFileFactory); + return result || DefaultSourceFileFactory; +}; + +const DefaultSourceFileFactory: ISourceFileFactory = { + createSourceFile( + fs: FileSystem, + filePath: string, + moduleName: string, + isThirdPartyImport: boolean, + isThirdPartyPyTypedPresent: boolean, + editMode: boolean, + console?: ConsoleInterface, + logTracker?: LogTracker, + realFilePath?: string, + ipythonMode?: IPythonMode + ) { + return new SourceFile( + fs, + filePath, + moduleName, + isThirdPartyImport, + isThirdPartyPyTypedPresent, + editMode, + console, + logTracker, + realFilePath, + ipythonMode + ); + }, +}; diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index ed5861aa7..e42207c41 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -119,10 +119,11 @@ import { canNavigateToFile } from './languageService/navigationUtils'; import { ReferencesProvider } from './languageService/referencesProvider'; import { SignatureHelpProvider } from './languageService/signatureHelpProvider'; import { Localizer, setLocaleOverride } from './localization/localize'; -import { PyrightFileSystem, SupportUriToPathMapping } from './pyrightFileSystem'; +import { SupportUriToPathMapping } from './pyrightFileSystem'; import { InitStatus, WellKnownWorkspaceKinds, Workspace, WorkspaceFactory } from './workspaceFactory'; import { RenameProvider } from './languageService/renameProvider'; import { WorkspaceSymbolProvider } from './languageService/workspaceSymbolProvider'; +import { ServiceProvider } from './common/serviceProvider'; export interface ServerSettings { venvPath?: string | undefined; @@ -188,7 +189,7 @@ export interface ServerOptions { rootDirectory: string; version: string; cancellationProvider: CancellationProvider; - fileSystem: PyrightFileSystem; + serviceProvider: ServiceProvider; fileWatcherHandler: FileWatcherHandler; maxAnalysisTimeInForeground?: MaxAnalysisTime; disableChecker?: boolean; @@ -367,8 +368,8 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis this.cacheManager = new CacheManager(); - this.uriMapper = this.serverOptions.fileSystem; - this.fs = this.serverOptions.fileSystem; + this.uriMapper = this.serverOptions.serviceProvider.fs(); + this.fs = this.serverOptions.serviceProvider.fs(); this.uriParser = uriParserFactory(this.fs); @@ -595,7 +596,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis protected createBackgroundAnalysisProgram( serviceId: string, - console: ConsoleInterface, + serviceProvider: ServiceProvider, configOptions: ConfigOptions, importResolver: ImportResolver, backgroundAnalysis?: BackgroundAnalysisBase, @@ -604,7 +605,7 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis ): BackgroundAnalysisProgram { return new BackgroundAnalysisProgram( serviceId, - console, + serviceProvider, configOptions, importResolver, backgroundAnalysis, diff --git a/packages/pyright-internal/src/localization/package.nls.cs.json b/packages/pyright-internal/src/localization/package.nls.cs.json index a12a33219..d58cb301c 100644 --- a/packages/pyright-internal/src/localization/package.nls.cs.json +++ b/packages/pyright-internal/src/localization/package.nls.cs.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "Seznam parametrů typu musí být řazená kolekce členů obsahující pouze typeVar, TypeVarTuple nebo ParamSpec", "typeAnnotationCall": "Výraz volání není ve výrazu typu povolený", "typeAnnotationVariable": "Proměnná není ve výrazu typu povolená", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "Argument typu pro „type“ musí být třída; volatelné objekty se nepodporují.", "typeArgListExpected": "Očekával se parametr ParamSpec, tři tečky nebo seznam typů", "typeArgListNotAllowed": "Výraz seznamu není pro tento argument typu povolený", "typeArgsExpectingNone": "Pro třídu {name} se neočekávaly žádné argumenty typu", diff --git a/packages/pyright-internal/src/localization/package.nls.de.json b/packages/pyright-internal/src/localization/package.nls.de.json index 4dc2e419a..4dabbab40 100644 --- a/packages/pyright-internal/src/localization/package.nls.de.json +++ b/packages/pyright-internal/src/localization/package.nls.de.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "Die Typparameterliste muss ein Tupel sein, das nur TypeVar, TypeVarTuple oder ParamSpec enthält.", "typeAnnotationCall": "Der Aufrufausdruck ist im Typausdruck nicht zulässig", "typeAnnotationVariable": "Variable im Typausdruck nicht zulässig", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "Das Typargument für \"type\" muss eine Klasse sein. Aufrufbare Elemente werden nicht unterstützt.", "typeArgListExpected": "ParamSpec, Ellipse oder Liste der Typen erwartet", "typeArgListNotAllowed": "Der Listenausdruck ist für dieses Typargument nicht zulässig.", "typeArgsExpectingNone": "Für die Klasse \"{name}\" werden keine Typargumente erwartet.", diff --git a/packages/pyright-internal/src/localization/package.nls.es.json b/packages/pyright-internal/src/localization/package.nls.es.json index 54e3797ea..67bb45ff9 100644 --- a/packages/pyright-internal/src/localization/package.nls.es.json +++ b/packages/pyright-internal/src/localization/package.nls.es.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "La lista de parámetros de tipo debe ser una tupla que contenga solo TypeVar, TypeVarTuple o ParamSpec.", "typeAnnotationCall": "No se permite la expresión de llamada en la expresión de tipo", "typeAnnotationVariable": "Variable no permitida en la expresión de tipo", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "El argumento de tipo para \"type\" debe ser una clase; no se admiten invocables", "typeArgListExpected": "ParamSpec esperado, elipsis o lista de tipos", "typeArgListNotAllowed": "Expresión de lista no permitida para este argumento de tipo", "typeArgsExpectingNone": "No se esperaban argumentos de tipo para la clase \"{name}\"", diff --git a/packages/pyright-internal/src/localization/package.nls.fr.json b/packages/pyright-internal/src/localization/package.nls.fr.json index 44da35563..21aa27137 100644 --- a/packages/pyright-internal/src/localization/package.nls.fr.json +++ b/packages/pyright-internal/src/localization/package.nls.fr.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "La liste de paramètres de type doit être un tuple contenant uniquement TypeVar, TypeVarTuple ou ParamSpec", "typeAnnotationCall": "Expression d'appel non autorisée dans l'expression de type", "typeAnnotationVariable": "Variable non autorisée dans l'expression de type", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "L'argument de type pour \"type\" doit être une classe ; les callables ne sont pas pris en charge", "typeArgListExpected": "ParamSpec, ellipse ou liste de types attendue", "typeArgListNotAllowed": "Expression de liste non autorisée pour cet argument de type", "typeArgsExpectingNone": "Aucun argument de type attendu pour la classe « {name} »", diff --git a/packages/pyright-internal/src/localization/package.nls.it.json b/packages/pyright-internal/src/localization/package.nls.it.json index 349cc3d9d..a194b3bfe 100644 --- a/packages/pyright-internal/src/localization/package.nls.it.json +++ b/packages/pyright-internal/src/localization/package.nls.it.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "L'elenco dei parametri del tipo deve essere una tupla contenente solo TypeVar, TypeVarTuple o ParamSpec.", "typeAnnotationCall": "Espressione di chiamata non consentita nell'espressione di tipo", "typeAnnotationVariable": "Variabile non consentita nell'espressione di tipo", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "L'argomento di tipo per \"type\" deve essere una classe. I callable non sono supportati", "typeArgListExpected": "Previsto ParamSpec, puntini di sospensione o elenco di tipi", "typeArgListNotAllowed": "Espressione di elenco non consentita per questo argomento tipo", "typeArgsExpectingNone": "Non sono previsti argomenti di tipo per la classe \"{name}\"", diff --git a/packages/pyright-internal/src/localization/package.nls.ja.json b/packages/pyright-internal/src/localization/package.nls.ja.json index 89d2e0ab4..b0d83243f 100644 --- a/packages/pyright-internal/src/localization/package.nls.ja.json +++ b/packages/pyright-internal/src/localization/package.nls.ja.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "型パラメーター リストは、TypeVar、TypeVarTuple、または ParamSpec のみを含むタプルである必要があります", "typeAnnotationCall": "型式では呼び出し式を使用できません", "typeAnnotationVariable": "型式では変数を使用できません", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "\"type\" の型引数はクラスである必要があります。呼び出し可能関数はサポートされていません", "typeArgListExpected": "ParamSpec、省略記号、または型の一覧が必要です", "typeArgListNotAllowed": "この型引数にはリスト式を使用できません", "typeArgsExpectingNone": "クラス \"{name}\" に型引数が必要ありません", diff --git a/packages/pyright-internal/src/localization/package.nls.ko.json b/packages/pyright-internal/src/localization/package.nls.ko.json index 25488ea0b..44b1d4c03 100644 --- a/packages/pyright-internal/src/localization/package.nls.ko.json +++ b/packages/pyright-internal/src/localization/package.nls.ko.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "형식 매개 변수 목록은 TypeVar, TypeVarTuple 또는 ParamSpec만 포함하는 튜플이어야 합니다.", "typeAnnotationCall": "형식 식에는 호출 식을 사용할 수 없습니다.", "typeAnnotationVariable": "형식 식에는 변수를 사용할 수 없습니다.", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "\"type\"에 대한 형식 인수는 클래스여야 합니다. 콜러블은 지원되지 않습니다.", "typeArgListExpected": "ParamSpec, 줄임표 또는 형식 목록이 필요합니다.", "typeArgListNotAllowed": "이 형식 인수에는 목록 식을 사용할 수 없습니다.", "typeArgsExpectingNone": "클래스 \"{name}\"에 형식 인수가 필요하지 않습니다.", diff --git a/packages/pyright-internal/src/localization/package.nls.pl.json b/packages/pyright-internal/src/localization/package.nls.pl.json index aeb6f5ac1..327b5b1c0 100644 --- a/packages/pyright-internal/src/localization/package.nls.pl.json +++ b/packages/pyright-internal/src/localization/package.nls.pl.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "Lista parametrów typu musi być krotką zawierającą tylko parametry TypeVar, TypeVarTuple lub ParamSpec", "typeAnnotationCall": "Wyrażenie wywołania jest niedozwolone w wyrażeniu typu", "typeAnnotationVariable": "Zmienna niedozwolona w wyrażeniu typu", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "Argument typu „type” musi być klasą; elementy wywoływane nie są obsługiwane", "typeArgListExpected": "Oczekiwano parametru ParamSpec, wielokropka lub listy typów", "typeArgListNotAllowed": "Wyrażenie listy jest niedozwolone dla tego argumentu typu", "typeArgsExpectingNone": "Oczekiwano braku argumentów typu dla klasy „{name}”", 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 558d5072e..7175cdefe 100644 --- a/packages/pyright-internal/src/localization/package.nls.pt-br.json +++ b/packages/pyright-internal/src/localization/package.nls.pt-br.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "A lista de parâmetros de tipo deve ser uma tupla contendo apenas TypeVar, TypeVarTuple ou ParamSpec", "typeAnnotationCall": "Expressão de chamada não permitida na expressão de tipo", "typeAnnotationVariable": "Variável não permitida na expressão de tipo", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "O argumento de tipo para \"type\" deve ser uma classe; não há suporte para callables", "typeArgListExpected": "ParamSpec, reticências ou lista de tipos esperados", "typeArgListNotAllowed": "Expressão de lista não permitida para este argumento de tipo", "typeArgsExpectingNone": "Nenhum argumento de tipo era esperado para a classe \"{name}\"", diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index f939b3db7..6ea3cb8bd 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "Список параметров типа должен быть кортежем, содержащим только TypeVar, TypeVarTuple или ParamSpec", "typeAnnotationCall": "Выражение вызова не разрешено в выражении типа", "typeAnnotationVariable": "Переменная не разрешена в выражении типа", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "Аргумент типа для \"type\" должен быть классом. Вызываемые объекты не поддерживаются", "typeArgListExpected": "Ожидается ParamSpec, многоточие или список типов", "typeArgListNotAllowed": "Выражение списка не разрешено для аргумента этого типа", "typeArgsExpectingNone": "Для класса \"{name}\" не ожидается аргументов типа", diff --git a/packages/pyright-internal/src/localization/package.nls.tr.json b/packages/pyright-internal/src/localization/package.nls.tr.json index 20114440e..6912a79cf 100644 --- a/packages/pyright-internal/src/localization/package.nls.tr.json +++ b/packages/pyright-internal/src/localization/package.nls.tr.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "Tür parametresi listesi yalnızca TypeVar, TypeVarTuple veya ParamSpec içeren bir demet olmalıdır", "typeAnnotationCall": "Tür ifadesinde çağrı ifadesine izin verilmiyor", "typeAnnotationVariable": "Tür ifadesinde değişkene izin verilmiyor", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "“Tür” için tür bağımsız değişkeni bir sınıf olmalıdır; çağrılabilir öğeler desteklenmiyor", "typeArgListExpected": "ParamSpec, üç nokta veya tür listesi bekleniyordu", "typeArgListNotAllowed": "Bu tür bağımsız değişkeni için liste ifadesine izin verilmiyor", "typeArgsExpectingNone": "\"{name}\" sınıfı için tür bağımsız değişkeni beklenmiyordu", 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 f7bf05975..1433b6e3d 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-cn.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-cn.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "类型参数列表必须是仅包含 TypeVar、TypeVarTuple 或 ParamSpec 的元组", "typeAnnotationCall": "类型表达式中不允许使用调用表达式", "typeAnnotationVariable": "类型表达式中不允许使用变量", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "“type”的类型参数必须为类; 不支持可调用项", "typeArgListExpected": "应为 ParamSpec、省略号或类型列表", "typeArgListNotAllowed": "不允许此类型参数使用列表表达式", "typeArgsExpectingNone": "类“{name}”不应有类型参数", 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 ab489e6d8..531d5290b 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-tw.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-tw.json @@ -438,7 +438,7 @@ "typeAliasTypeParamInvalid": "型別參數清單必須是只包含 TypeVar、TypeVarTuple 或 ParamSpec 的元組", "typeAnnotationCall": "型別運算式中不允許呼叫運算式", "typeAnnotationVariable": "型別運算式中不允許變數", - "typeAnnotationWithCallable": "Type argument for \"type\" must be a class; callables are not supported", + "typeAnnotationWithCallable": "\"type\" 的類型引數必須是類別; 不支援可呼叫項目", "typeArgListExpected": "預期為 ParamSpec、省略符號或類型清單", "typeArgListNotAllowed": "此型別引數不允許清單運算式", "typeArgsExpectingNone": "預期類別 \"{name}\" 沒有類型引數", diff --git a/packages/pyright-internal/src/nodeMain.ts b/packages/pyright-internal/src/nodeMain.ts index a58ddabc4..2996b8112 100644 --- a/packages/pyright-internal/src/nodeMain.ts +++ b/packages/pyright-internal/src/nodeMain.ts @@ -7,6 +7,7 @@ */ import { BackgroundAnalysisRunner } from './backgroundAnalysis'; +import { ServiceProvider } from './common/serviceProvider'; import { run } from './nodeServer'; import { PyrightServer } from './server'; @@ -14,7 +15,7 @@ export function main() { run( (conn) => new PyrightServer(conn), () => { - const runner = new BackgroundAnalysisRunner(); + const runner = new BackgroundAnalysisRunner(new ServiceProvider()); runner.start(); } ); diff --git a/packages/pyright-internal/src/pyrightFileSystem.ts b/packages/pyright-internal/src/pyrightFileSystem.ts index a1cd69a46..a3c8bc442 100644 --- a/packages/pyright-internal/src/pyrightFileSystem.ts +++ b/packages/pyright-internal/src/pyrightFileSystem.ts @@ -49,10 +49,9 @@ export namespace SupportUriToPathMapping { } } -export class PyrightFileSystem - extends ReadOnlyAugmentedFileSystem - implements SupportPartialStubs, SupportUriToPathMapping -{ +export interface IPyrightFileSystem extends FileSystem, SupportPartialStubs, SupportUriToPathMapping {} + +export class PyrightFileSystem extends ReadOnlyAugmentedFileSystem implements IPyrightFileSystem { // Root paths processed private readonly _rootSearched = new Set(); diff --git a/packages/pyright-internal/src/server.ts b/packages/pyright-internal/src/server.ts index d27367b9f..a172a7471 100644 --- a/packages/pyright-internal/src/server.ts +++ b/packages/pyright-internal/src/server.ts @@ -37,6 +37,8 @@ import { LanguageServerBase, ServerSettings } from './languageServerBase'; import { CodeActionProvider } from './languageService/codeActionProvider'; import { Workspace } from './workspaceFactory'; import { PyrightFileSystem } from './pyrightFileSystem'; +import { ServiceProvider } from './common/serviceProvider'; +import { ServiceKeys } from './common/serviceProviderExtensions'; const maxAnalysisTimeInForeground = { openFilesTimeInMs: 50, noOpenFilesTimeInMs: 200 }; @@ -55,13 +57,17 @@ export class PyrightServer extends LanguageServerBase { const console = new ConsoleWithLogLevel(connection.console); const fileWatcherProvider = new WorkspaceFileWatcherProvider(); const fileSystem = createFromRealFileSystem(console, fileWatcherProvider); + const serviceProvider = new ServiceProvider([ + { key: ServiceKeys.fs, value: new PyrightFileSystem(fileSystem) }, + { key: ServiceKeys.console, value: console }, + ]); super( { productName: 'Pyright', rootDirectory, version, - fileSystem: new PyrightFileSystem(fileSystem), + serviceProvider, fileWatcherHandler: fileWatcherProvider, cancellationProvider: new FileBasedCancellationProvider('bg'), maxAnalysisTimeInForeground, diff --git a/packages/pyright-internal/src/tests/harness/fourslash/runner.ts b/packages/pyright-internal/src/tests/harness/fourslash/runner.ts index 0e52fd312..12ceaadcf 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/runner.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/runner.ts @@ -84,7 +84,7 @@ async function runCode(code: string, state: TestState, cb?: jest.DoneCallback) { const wrappedCode = `(async function(helper, Consts) { ${code} })`; - const f = eval(wrappedCode); + const f = eval(wrappedCode); // CodeQL [SM01632] test code that doesn't need to be secure. await f(state, Consts); markDone(); } catch (ex) { diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts b/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts index 081fe1d63..e134708b3 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testLanguageService.ts @@ -35,12 +35,13 @@ import { } from '../../../workspaceFactory'; import { TestAccessHost } from '../testAccessHost'; import { HostSpecificFeatures } from './testState'; +import { ServiceProvider } from '../../../common/serviceProvider'; export class TestFeatures implements HostSpecificFeatures { importResolverFactory: ImportResolverFactory = AnalyzerService.createImportResolver; backgroundAnalysisProgramFactory: BackgroundAnalysisProgramFactory = ( serviceId: string, - console: ConsoleInterface, + serviceProvider: ServiceProvider, configOptions: ConfigOptions, importResolver: ImportResolver, backgroundAnalysis?: BackgroundAnalysisBase, @@ -49,7 +50,7 @@ export class TestFeatures implements HostSpecificFeatures { ) => new BackgroundAnalysisProgram( serviceId, - console, + serviceProvider, configOptions, importResolver, backgroundAnalysis, diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 623c13396..94f0adf61 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -46,6 +46,7 @@ import { getFileSpec, normalizePath, normalizeSlashes, + setTestingMode, } from '../../../common/pathUtils'; import { convertOffsetToPosition, convertPositionToOffset } from '../../../common/positionUtils'; import { DocumentRange, Position, Range as PositionRange, TextRange, rangesAreEqual } from '../../../common/textRange'; @@ -210,6 +211,8 @@ export class TestState { if (!delayFileInitialization) { this.initializeFiles(); } + + setTestingMode(true); } get importResolver(): ImportResolver { @@ -951,7 +954,7 @@ export class TestState { const expectedCompletions = map[markerName].completions; const provider = this.getCompletionResults(this, marker, docFormat, abbrMap); - const results = provider.getCompletions(); + const results = await provider.getCompletions(); if (results) { if (verifyMode === 'exact') { if (results.items.length !== expectedCompletions.length) { @@ -1472,7 +1475,7 @@ export class TestState { readonly importName: string; }; } - ): { getCompletions(): CompletionList | null; resolveCompletionItem(item: CompletionItem): void } { + ): { getCompletions(): Promise; resolveCompletionItem(item: CompletionItem): void } { const filePath = marker.fileName; const completionPosition = this.convertOffsetToPosition(filePath, marker.position); @@ -1482,7 +1485,7 @@ export class TestState { lazyEdit: false, }; - return new CompletionProvider( + const provider = new CompletionProvider( this.program, this.workspace.rootPath, filePath, @@ -1490,6 +1493,11 @@ export class TestState { options, CancellationToken.None ); + + return { + getCompletions: () => Promise.resolve(provider.getCompletions()), + resolveCompletionItem: (i) => provider.resolveCompletionItem(i), + }; } protected getFileContent(fileName: string): string { diff --git a/packages/pyright-internal/src/tests/service.test.ts b/packages/pyright-internal/src/tests/service.test.ts index 0191df601..d793be697 100644 --- a/packages/pyright-internal/src/tests/service.test.ts +++ b/packages/pyright-internal/src/tests/service.test.ts @@ -9,6 +9,111 @@ import assert from 'assert'; import { getDirectoryPath } from '../common/pathUtils'; import { parseAndGetTestState } from './harness/fourslash/testState'; +test('random library file changed', () => { + const state = parseAndGetTestState('', '/projectRoot').state; + + assert.strictEqual( + state.workspace.service.test_shouldHandleLibraryFileWatchChanges('/site-packages/test.py', ['/site-packages']), + true + ); +}); + +test('random library file starting with . changed', () => { + const state = parseAndGetTestState('', '/projectRoot').state; + + assert.strictEqual( + state.workspace.service.test_shouldHandleLibraryFileWatchChanges('/site-packages/.test.py', ['/site-packages']), + false + ); +}); + +test('random library file changed, nested search paths', () => { + const state = parseAndGetTestState('', '/projectRoot').state; + + assert.strictEqual( + state.workspace.service.test_shouldHandleLibraryFileWatchChanges('/lib/.venv/site-packages/myFile.py', [ + '/lib', + '/lib/.venv/site-packages', + ]), + true + ); +}); + +test('random library file changed, nested search paths, fs is not case sensitive', () => { + const code = ` +// global options +// @ignoreCase: true + `; + const state = parseAndGetTestState(code, '/projectRoot').state; + + assert.strictEqual( + state.workspace.service.test_shouldHandleLibraryFileWatchChanges('/lib/.venv/site-packages/myFile.py', [ + '/lib', + '/LIB/.venv/site-packages', + ]), + true + ); +}); + +test('random library file changed, nested search paths, fs is case sensitive', () => { + const code = ` +// global options +// @ignoreCase: false + `; + const state = parseAndGetTestState(code, '/projectRoot').state; + + assert.strictEqual( + state.workspace.service.test_shouldHandleLibraryFileWatchChanges('/lib/.venv/site-packages/myFile.py', [ + '/lib', + '/LIB/.venv/site-packages', + ]), + false + ); +}); + +test('random library file starting with . changed, fs is not case sensitive', () => { + const code = ` +// global options +// @ignoreCase: true + `; + const state = parseAndGetTestState(code, '/projectRoot').state; + + assert.strictEqual( + state.workspace.service.test_shouldHandleLibraryFileWatchChanges('/lib/.test.py', [ + '/LIB', + '/lib/site-packages', + ]), + false + ); +}); + +test('random library file starting with . changed, fs is case sensitive', () => { + const code = ` +// global options +// @ignoreCase: false + `; + const state = parseAndGetTestState(code, '/projectRoot').state; + + assert.strictEqual( + state.workspace.service.test_shouldHandleLibraryFileWatchChanges('/lib/.test.py', [ + '/LIB', + '/lib/site-packages', + ]), + true + ); +}); + +test('random library file under a folder starting with . changed', () => { + const state = parseAndGetTestState('', '/projectRoot').state; + + assert.strictEqual( + state.workspace.service.test_shouldHandleLibraryFileWatchChanges('/site-packages/.testFolder/test.py', [ + '/site-packages', + ]), + false + ); +}); + test('basic file change', () => { const code = ` // @filename: test.py diff --git a/packages/pyright-internal/src/tests/testUtils.ts b/packages/pyright-internal/src/tests/testUtils.ts index d5c7d1520..04020564c 100644 --- a/packages/pyright-internal/src/tests/testUtils.ts +++ b/packages/pyright-internal/src/tests/testUtils.ts @@ -19,13 +19,15 @@ import { IPythonMode } from '../analyzer/sourceFile'; import { NameTypeWalker } from '../analyzer/testWalker'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { cloneDiagnosticRuleSet, ConfigOptions, ExecutionEnvironment } from '../common/configOptions'; -import { ConsoleWithLogLevel } from '../common/console'; +import { ConsoleWithLogLevel, NullConsole } from '../common/console'; import { fail } from '../common/debug'; import { Diagnostic, DiagnosticCategory } from '../common/diagnostic'; import { DiagnosticSink, TextRangeDiagnosticSink } from '../common/diagnosticSink'; import { FullAccessHost } from '../common/fullAccessHost'; import { createFromRealFileSystem } from '../common/realFileSystem'; import { ParseOptions, Parser, ParseResults } from '../parser/parser'; +import { ServiceProvider } from '../common/serviceProvider'; +import { ServiceKeys } from '../common/serviceProviderExtensions'; // This is a bit gross, but it's necessary to allow the fallback typeshed // directory to be located when running within the jest environment. This @@ -161,8 +163,10 @@ export function typeAnalyzeSampleFiles( const fs = createFromRealFileSystem(); const importResolver = new ImportResolver(fs, configOptions, new FullAccessHost(fs)); + const serviceProvider = new ServiceProvider(); + serviceProvider.add(ServiceKeys.console, console || new NullConsole()); - const program = new Program(importResolver, configOptions, console); + const program = new Program(importResolver, configOptions, serviceProvider); const filePaths = fileNames.map((name) => resolveSampleFilePath(name)); program.setTrackedFiles(filePaths); From fb78629e77d7f45aa7f02c4a0c5d218ef03c544d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 9 Aug 2023 17:00:06 -0700 Subject: [PATCH 485/525] Fixed a bug that led to a spurious "Unknown" type when an assignment to a variable with a type annotation was used within a loop. This addresses https://github.com/microsoft/pylance-release/issues/4706. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 6514f8038..d7bb41577 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -3881,7 +3881,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions assignTypeToExpression( target.valueExpression, type, - /* isIncomplete */ false, + isTypeIncomplete, srcExpr, ignoreEmptyContainers, allowAssignmentToFinalVar, From ef300491cf027b7f70cc19d9a0606efb22005d5c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 10 Aug 2023 21:13:56 -0700 Subject: [PATCH 486/525] Fixed false positive error when an empty tuple was used in an `except` statement. This addresses #5684. --- packages/pyright-internal/src/analyzer/checker.ts | 4 ++-- packages/pyright-internal/src/tests/samples/tryExcept8.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 17256ea6a..5a2e8dcc1 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -2714,7 +2714,7 @@ export class Checker extends ParseTreeWalker { UnknownType.create(); resultingExceptionType = mapSubtypes(iterableType, (subtype) => { - if (isAnyOrUnknown(subtype)) { + if (isAnyOrUnknown(subtype) || isNever(subtype)) { return subtype; } @@ -6319,7 +6319,7 @@ export class Checker extends ParseTreeWalker { }); // Were all of the exception types overridden? - if (typesOfThisExcept.length === overriddenExceptionCount) { + if (typesOfThisExcept.length > 0 && typesOfThisExcept.length === overriddenExceptionCount) { this._evaluator.addDiagnostic( this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, DiagnosticRule.reportGeneralTypeIssues, diff --git a/packages/pyright-internal/src/tests/samples/tryExcept8.py b/packages/pyright-internal/src/tests/samples/tryExcept8.py index ae755bc0b..6ad77b0a7 100644 --- a/packages/pyright-internal/src/tests/samples/tryExcept8.py +++ b/packages/pyright-internal/src/tests/samples/tryExcept8.py @@ -15,6 +15,8 @@ def func2(): pass except Exception: pass + except (): + pass # This should generate an error. except PermissionError: pass From 7d68470de675ba2596105693c67ce905d836c4f4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 11 Aug 2023 09:30:38 -0700 Subject: [PATCH 487/525] Published 1.1.322 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index f923acd51..3dc036a7a 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.321", + "version": "1.1.322", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index d2983a833..d86b76a43 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.321", + "version": "1.1.322", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.321", + "version": "1.1.322", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 1002b1500..90cadeef7 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.321", + "version": "1.1.322", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index 8884ed1eb..d5412b397 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.321", + "version": "1.1.322", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.321", + "version": "1.1.322", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index ec2f53767..397137769 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.321", + "version": "1.1.322", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index c3a264077..17946df07 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.321", + "version": "1.1.322", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.321", + "version": "1.1.322", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index e738e025f..928e028b0 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.321", + "version": "1.1.322", "private": true, "license": "MIT", "author": { From bf4749809e2a2f580184a1cacd44bc2c37e52b4f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 11 Aug 2023 16:44:49 -0700 Subject: [PATCH 488/525] Fixed a condition in the code flow engine that corrupted internal state and led to a crash. This addresses #5622. (#5702) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/codeFlowEngine.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index e60c7c530..44d564898 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -274,7 +274,7 @@ export function getCodeFlowEngine( 'setIncompleteSubtype can be called only on a valid incomplete cache entry: ' + `prev cache entry?: ${!cachedEntry} ` + `index=${index} ` + - `isPending=${isPending}` + + `isPending=${isPending} ` + `evaluationCount=${evaluationCount}` ); } @@ -956,16 +956,16 @@ export function getCodeFlowEngine( ? UnknownType.create(/* isIncomplete */ true) : NeverType.createNever()), flowTypeResult.isIncomplete, - /* isPending */ false, + /* isPending */ firstAntecedentTypeIsPending, entryEvaluationCount + 1 ); } catch (e) { - setIncompleteSubtype( + cacheEntry = setIncompleteSubtype( loopNode, index, UnknownType.create(/* isIncomplete */ true), /* isIncomplete */ true, - /* isPending */ false, + /* isPending */ firstAntecedentTypeIsPending, entryEvaluationCount + 1 ); throw e; From 91f5d40f3d19f0a2cf0e6a927326ba7a25ba86b9 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 12 Aug 2023 09:00:49 -0700 Subject: [PATCH 489/525] Fixed bug that resulted in incorrect type evaluation for an async function that has no type annotations. It was using call-site return type inference but failing to wrap the result in a `Coroutine`. This addresses #5705. --- .../src/analyzer/typeEvaluator.ts | 22 ++++++++++++++++--- .../src/tests/samples/callSite1.py | 19 ++++++++++++++++ .../src/tests/samples/callSite2.py | 16 +++++++++----- 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index d7bb41577..bc2062e66 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -20849,9 +20849,25 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions !FunctionType.isPyTypedDefinition(type) && args ) { - const contextualReturnType = getFunctionInferredReturnTypeUsingArguments(type, args); - if (contextualReturnType) { - returnType = contextualReturnType; + let hasDecorators = false; + let isAsync = false; + const declNode = type.details.declaration?.node; + if (declNode) { + if (declNode.decorators.length > 0) { + hasDecorators = true; + } + if (declNode.isAsync) { + isAsync = true; + } + } + + // We can't use this technique if decorators or async are used because they + // would need to be applied to the inferred return type. + if (!hasDecorators && !isAsync) { + const contextualReturnType = getFunctionInferredReturnTypeUsingArguments(type, args); + if (contextualReturnType) { + returnType = contextualReturnType; + } } } diff --git a/packages/pyright-internal/src/tests/samples/callSite1.py b/packages/pyright-internal/src/tests/samples/callSite1.py index 663366f2a..9a791f81a 100644 --- a/packages/pyright-internal/src/tests/samples/callSite1.py +++ b/packages/pyright-internal/src/tests/samples/callSite1.py @@ -3,5 +3,24 @@ # This function has no type annotations +from typing import TypeVar + + def add(a, b): return a + b + + +async def async_call(x): + return x + + +T = TypeVar("T") + + +def deco1(f: T) -> T: + return f + + +@deco1 +def add2(a, b): + return a + b diff --git a/packages/pyright-internal/src/tests/samples/callSite2.py b/packages/pyright-internal/src/tests/samples/callSite2.py index 0242d7712..55f35c66f 100644 --- a/packages/pyright-internal/src/tests/samples/callSite2.py +++ b/packages/pyright-internal/src/tests/samples/callSite2.py @@ -1,12 +1,16 @@ # This sample tests pyright's ability to perform return type # analysis of functions based on call-site arguments. -# pyright: strict +from .callSite1 import add, add2, async_call -from .callSite1 import add # pyright: ignore[reportUnknownVariableType] +v1 = add(1, 2) +reveal_type(v1, expected_text="Literal[3]") -must_be_int = add(1, 2) -result1: int = must_be_int +v2 = add("hi", "there") +reveal_type(v2, expected_text="Literal['hithere']") -must_be_str = add("hi", "there") -result2: str = must_be_str +v3 = add2(1, 2) +reveal_type(v3, expected_text="Unknown") + +v4 = async_call(1) +reveal_type(v4, expected_text="Coroutine[Any, Any, Unknown]") From 8166344dc0ba7d183a0496493fd05f419cf352d1 Mon Sep 17 00:00:00 2001 From: Erik De Bonte Date: Sat, 12 Aug 2023 14:30:12 -0700 Subject: [PATCH 490/525] Support zip imports from `.jar` files (#5644) * Support zip imports from .jar extensions * Remove extra line * Remove OrEgg from ZipOrEgg functions --------- Co-authored-by: Eric Traut --- .../pyright-internal/src/common/fileSystem.ts | 2 +- .../src/common/realFileSystem.ts | 28 ++++++++++-------- .../src/languageService/navigationUtils.ts | 2 +- .../src/readonlyAugmentedFileSystem.ts | 6 ++-- .../src/tests/harness/vfs/filesystem.ts | 4 +-- .../src/tests/samples/zipfs/bad.jar | 1 + .../src/tests/samples/zipfs/basic.jar | Bin 0 -> 3338 bytes .../src/tests/samples/zipfs/corrupt.jar | Bin 0 -> 36 bytes .../pyright-internal/src/tests/zipfs.test.ts | 13 ++++---- 9 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/zipfs/bad.jar create mode 100644 packages/pyright-internal/src/tests/samples/zipfs/basic.jar create mode 100644 packages/pyright-internal/src/tests/samples/zipfs/corrupt.jar diff --git a/packages/pyright-internal/src/common/fileSystem.ts b/packages/pyright-internal/src/common/fileSystem.ts index fe8755f63..6d868a32e 100644 --- a/packages/pyright-internal/src/common/fileSystem.ts +++ b/packages/pyright-internal/src/common/fileSystem.ts @@ -66,7 +66,7 @@ export interface ReadOnlyFileSystem { getUri(path: string): string; - isInZipOrEgg(path: string): boolean; + isInZip(path: string): boolean; } export interface FileSystem extends ReadOnlyFileSystem { diff --git a/packages/pyright-internal/src/common/realFileSystem.ts b/packages/pyright-internal/src/common/realFileSystem.ts index 88a05c999..e821f5ff9 100644 --- a/packages/pyright-internal/src/common/realFileSystem.ts +++ b/packages/pyright-internal/src/common/realFileSystem.ts @@ -13,15 +13,15 @@ import { isMainThread } from 'worker_threads'; import { ConsoleInterface, NullConsole } from './console'; import { FileSystem, MkDirOptions, TmpfileOptions } from './fileSystem'; -import { getRootLength } from './pathUtils'; import { - FileWatcherProvider, - nullFileWatcherProvider, + FileWatcher, FileWatcherEventHandler, - FileWatcherHandler, FileWatcherEventType, - FileWatcher, + FileWatcherHandler, + FileWatcherProvider, + nullFileWatcherProvider, } from './fileWatcher'; +import { getRootLength } from './pathUtils'; // Automatically remove files created by tmp at process exit. tmp.setGracefulCleanup(); @@ -38,6 +38,7 @@ export function createFromRealFileSystem( const DOT_ZIP = `.zip`; const DOT_EGG = `.egg`; +const DOT_JAR = `.jar`; // Exactly the same as ZipOpenFS's getArchivePart, but supporting .egg files. // https://github.com/yarnpkg/berry/blob/64a16b3603ef2ccb741d3c44f109c9cfc14ba8dd/packages/yarnpkg-fslib/sources/ZipOpenFS.ts#L23 @@ -46,7 +47,10 @@ function getArchivePart(path: string) { if (idx <= 0) { idx = path.indexOf(DOT_EGG); if (idx <= 0) { - return null; + idx = path.indexOf(DOT_JAR); + if (idx <= 0) { + return null; + } } } @@ -61,8 +65,8 @@ function getArchivePart(path: string) { return path.slice(0, nextCharIdx) as PortablePath; } -function hasZipOrEggExtension(p: string): boolean { - return p.endsWith(DOT_ZIP) || p.endsWith(DOT_EGG); +function hasZipExtension(p: string): boolean { + return p.endsWith(DOT_ZIP) || p.endsWith(DOT_EGG) || p.endsWith(DOT_JAR); } // "Magic" values for the zip file type. https://en.wikipedia.org/wiki/List_of_file_signatures @@ -237,7 +241,7 @@ class RealFileSystem implements FileSystem { return yarnFS.readdirSync(path, { withFileTypes: true }).map((entry): fs.Dirent => { // Treat zip/egg files as directories. // See: https://github.com/yarnpkg/berry/blob/master/packages/vscode-zipfs/sources/ZipFSProvider.ts - if (hasZipOrEggExtension(entry.name)) { + if (hasZipExtension(entry.name)) { if (entry.isFile() && yarnFS.isZip(path)) { return { name: entry.name, @@ -273,7 +277,7 @@ class RealFileSystem implements FileSystem { const stat = yarnFS.statSync(path); // Treat zip/egg files as directories. // See: https://github.com/yarnpkg/berry/blob/master/packages/vscode-zipfs/sources/ZipFSProvider.ts - if (hasZipOrEggExtension(path)) { + if (hasZipExtension(path)) { if (stat.isFile() && yarnFS.isZip(path)) { return { ...stat, @@ -393,8 +397,8 @@ class RealFileSystem implements FileSystem { return URI.file(path).toString(); } - isInZipOrEgg(path: string): boolean { - return /[^\\/]\.(?:egg|zip)[\\/]/.test(path) && yarnFS.isZip(path); + isInZip(path: string): boolean { + return /[^\\/]\.(?:egg|zip|jar)[\\/]/.test(path) && yarnFS.isZip(path); } dispose(): void { diff --git a/packages/pyright-internal/src/languageService/navigationUtils.ts b/packages/pyright-internal/src/languageService/navigationUtils.ts index a6960e4cd..bb76eb830 100644 --- a/packages/pyright-internal/src/languageService/navigationUtils.ts +++ b/packages/pyright-internal/src/languageService/navigationUtils.ts @@ -11,7 +11,7 @@ import { convertPathToUri } from '../common/pathUtils'; import { DocumentRange } from '../common/textRange'; export function canNavigateToFile(fs: ReadOnlyFileSystem, path: string): boolean { - return !fs.isInZipOrEgg(path); + return !fs.isInZip(path); } export function convertDocumentRangesToLocation(fs: ReadOnlyFileSystem, ranges: DocumentRange[]): Location[] { diff --git a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts index a7d066dd6..275ffba00 100644 --- a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts +++ b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts @@ -11,8 +11,8 @@ import type * as fs from 'fs'; import { appendArray, getOrAdd } from './common/collectionUtils'; import { FileSystem, MkDirOptions, Stats, TmpfileOptions, VirtualDirent } from './common/fileSystem'; -import { combinePaths, ensureTrailingDirectorySeparator, getDirectoryPath, getFileName } from './common/pathUtils'; import { FileWatcher, FileWatcherEventHandler } from './common/fileWatcher'; +import { combinePaths, ensureTrailingDirectorySeparator, getDirectoryPath, getFileName } from './common/pathUtils'; export class ReadOnlyAugmentedFileSystem implements FileSystem { // Mapped file to original file map @@ -166,8 +166,8 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { return this._reverseEntryMap.get(mappedFilePath) ?? mappedFilePath; } - isInZipOrEgg(path: string): boolean { - return this.realFS.isInZipOrEgg(path); + isInZip(path: string): boolean { + return this.realFS.isInZip(path); } dispose(): void { diff --git a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts index c07472e94..8383a5bc9 100644 --- a/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts +++ b/packages/pyright-internal/src/tests/harness/vfs/filesystem.ts @@ -11,11 +11,11 @@ import { Dirent, ReadStream, WriteStream } from 'fs'; import { URI } from 'vscode-uri'; import { FileSystem, MkDirOptions, TmpfileOptions } from '../../../common/fileSystem'; +import { FileWatcher, FileWatcherEventHandler, FileWatcherEventType } from '../../../common/fileWatcher'; import * as pathUtil from '../../../common/pathUtils'; import { bufferFrom, createIOError } from '../utils'; import { Metadata, SortedMap, closeIterator, getIterator, nextResult } from './../utils'; import { ValidationFlags, validate } from './pathValidation'; -import { FileWatcher, FileWatcherEventHandler, FileWatcherEventType } from '../../../common/fileWatcher'; export const MODULE_PATH = pathUtil.normalizeSlashes('/'); @@ -900,7 +900,7 @@ export class TestFileSystem implements FileSystem { return TestFileSystem._rootDiff(differences, changed, base, options) ? differences : undefined; } - isInZipOrEgg(path: string): boolean { + isInZip(path: string): boolean { return false; } diff --git a/packages/pyright-internal/src/tests/samples/zipfs/bad.jar b/packages/pyright-internal/src/tests/samples/zipfs/bad.jar new file mode 100644 index 000000000..da55f3751 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/zipfs/bad.jar @@ -0,0 +1 @@ +This file isn't a zip. diff --git a/packages/pyright-internal/src/tests/samples/zipfs/basic.jar b/packages/pyright-internal/src/tests/samples/zipfs/basic.jar new file mode 100644 index 0000000000000000000000000000000000000000..2ae9babc1274238f04d9b3b68fe20c6d2ac843e0 GIT binary patch literal 3338 zcmbuB3pAAL8pp?VMkFM1x?xK+W{8B{4&~O2VO*jjGnt!f(-@N)huXvz(QUh=q*BY! zvE6l}#I`44la@mYX~wuj*>siEd1v<4e7UT|6cA2irNSS z0)?2O>JUE+zUey%KHUbT3ChLI4TJM^C7OG=|M|yj4-AfgGsAT)cE_x5Z|kV?vFNfI z6ivIgdDQrr;4s+dqQutaqk7Y9rJUhmV;#Q$)1;5w*_o8tDK>X#r0|7~Q6bMT)h;`m zHl!Pj8Z8_)W(@1A%+ic`!^^%K=io4&*cLMrxu+=I#m(S4t>!H*TJi|51uoH-8@~hr zcNaj3y?=G-OZ4+`a`DA-4sp<)7*otcbkWdyV5;-v$&R*Gv(%F*sz!~waTeL6@Yvf- z1}Wg~;U90*mhvv1cR0r?KN5PXDx#c(b5S`*z=v-QC*i|MY#B13_VhEJL1;Dr6tJ)+KNCT4{E{FiVb67qJtT9p$IB@K+z$Bm6GM+cMVV+dNjwJ zOb%m)amZvWi>m;+w+S#1RiF3SnuB#efKr)X9}E_{x8uyP{;X<&4UJ>{y5awHEdIu=%<>(l0%!s#lX*Cq%;HjmsiAZ- zS^99OEG{Q>KNDkR11?LA7KlU?L}E!#RE7S>4GLO&6)8x4EJIGqRINenT>4?OUYcVg zN|5946UOkw6MXQDs8kY{kK&87`V7P(pC{h{e0i2%tv`U zHlJ$m(BBMct=Q<5{b_V{Fya?L8OSmkj9ut(AF;yoR|}1rr8dr*%e3kd?#h-1g(&ak zk1O@FO<3%I7N%v|p0eFm{wT{~5cy$kS=)ujXKi`KU6KUqbE|CdX_`z#*`eZH?MY0n7_M5Ox13+tL&={Y1t{y#p~TMKVhGi)x6I3 z^31*IT#@DQrqHahz&nFNti6E$a;bCk_KvFkhUoA8w$zkve)#M`ojKZUcvp-u7xOl^ zWJ*xy)k+WE5wa-vhx*;m@gWtje^QuiFpK&neNPf1pnK6hSHyv%@uC+_Kjx79g~!R^ z)RTy--5I9~BRR;2t0O%oyaq#O6B^>0oa{N3hkkya@z|n2?=B~e95TIT;ST2ag_6_< znrQfU&7{DZ>2bmV@3d8e|GsRy{-{c13F)-9q5oFr*^QK?`S$PZsFmftS^e?H?jZj_ zknW-PMZ8oh$;(igIyz~iU=?T8Bb+*RdZ2#ItB#_>6-Uktq1oRX^lhLuC&Z%$^#{7P zU2;}p^BwyuU2O_jzUqd<1|Qw-W()>C>ss!DaBYqIj5~HfL!|D&o7=mpdduTXo_RO1 z?H}0oz&+Tf>83a4-pte#J?VaHv}wkBscvj?douUR@oIbBTy~#Y+F^FX5WDLDfA*Be z^#)$)Q}UeCT*=DzZaL+Y9QON?z4xbe7q+I&>+KlwuQ@Z4HD{8qGknyxxHma!^gqxw zIE4DFtm$(W-z3l=s@8(`6#SZBwK9Qr<$-c%_pIJ$xi62d`*+9qw;Lm4SqhVPdV6zw zZ{$?%Hng4Snd{dZ=Y7z%7bbSDu?SMtQjFlA--()LI=^t3n6Rh$6d<&c527>6#>PZKgX;xLC*F;Ba>ACEs%N*e9ER2uMDrXz+6Acld5F$j8=!S$ z*=H}lke?Y|vp(a+@7sHY#~1Grn7tdg`N=wfR+?FLe7Se4tHBe+imv3!o!Pmm+uX`$?uFVXEa&6%J#R-e@n4UPMfXg-Bz%@%*hoX- z{Q&Wd8G~l7{kukP_-4+CV9wO|BW2o`M^*Y-0(W^e`Du2>+XxElKAzoFp-u>)F;)u( zsE6drHU{oYT*smh_ZB2f<~W`)zqR`0d%fR!M&<zrz4k)x+xQDFC|t2VQR)YRuzF9=k<`)`jLZ^gYE+d?LjcCGM!^+$Zkr=wSmet8wdgF&};4 za(D{)Q;a}dPbh@SA(;eDfCmRD!5TcXuLfkr2sjF!BBZEjC~85bfHUB6LdqzGGUmet zR4yx8NafFg93C{FYFR-;s@4SYMxqwS4ya64l90+m=4Iks0hP(h2~yd;dD&m70jiW0 z2BgYmAOlK#ieJRh04kMr)Jvu8dFlUf@WZL_b6HAV0kWaQ5R?i(rQtaE$t1;vf`s}F z4t`F-aq!(-iaV+-11ILgb|g3vzO6}#Z6HQ}V^I7L_$KG&t^_WQKr8{jDxgW@DDkKN E0Kunj2LJ#7 literal 0 HcmV?d00001 diff --git a/packages/pyright-internal/src/tests/samples/zipfs/corrupt.jar b/packages/pyright-internal/src/tests/samples/zipfs/corrupt.jar new file mode 100644 index 0000000000000000000000000000000000000000..bbb00f435f3b6d3e44c46369ae8ce32cc8663cbd GIT binary patch literal 36 pcmWIWW@Zs#U|`^22+7DSRsf { - assert.strictEqual(fs.isInZipOrEgg(combinePaths(zipRoot, 'EGG-INFO', 'top_level.txt')), true); - assert.strictEqual(fs.isInZipOrEgg(module.filename), false); + test('isInZip', () => { + assert.strictEqual(fs.isInZip(combinePaths(zipRoot, 'EGG-INFO', 'top_level.txt')), true); + assert.strictEqual(fs.isInZip(module.filename), false); }); } describe('zip', () => runTests('./samples/zipfs/basic.zip')); describe('egg', () => runTests('./samples/zipfs/basic.egg')); +describe('jar', () => runTests('./samples/zipfs/basic.jar')); function runBadTests(p: string): void { const zipRoot = path.resolve(path.dirname(module.filename), p); @@ -104,13 +105,15 @@ function runBadTests(p: string): void { assert.strictEqual(stats.isFile(), true); }); - test('isInZipOrEgg', () => { - assert.strictEqual(fs.isInZipOrEgg(combinePaths(zipRoot, 'EGG-INFO', 'top_level.txt')), false); + test('isInZip', () => { + assert.strictEqual(fs.isInZip(combinePaths(zipRoot, 'EGG-INFO', 'top_level.txt')), false); }); } describe('corrupt zip', () => runBadTests('./samples/zipfs/bad.zip')); describe('corrupt egg', () => runBadTests('./samples/zipfs/bad.egg')); +describe('corrupt jar', () => runBadTests('./samples/zipfs/bad.jar')); describe('corrupt zip with magic', () => runBadTests('./samples/zipfs/corrupt.zip')); describe('corrupt egg with magic', () => runBadTests('./samples/zipfs/corrupt.egg')); +describe('corrupt jar with magic', () => runBadTests('./samples/zipfs/corrupt.jar')); From 792dc97c63563c2d6deaa60e7b0b9bfb5baff6e8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sat, 12 Aug 2023 16:52:20 -0700 Subject: [PATCH 491/525] Fixed bug that led to false negative when assignment expression (walrus operator) is used in a `yield` or `yield from` statement without a parenthesis. This addresses https://github.com/microsoft/pyright/issues/5709. --- packages/pyright-internal/src/parser/parser.ts | 4 ++-- .../src/tests/samples/assignmentExpr1.py | 2 +- .../src/tests/samples/assignmentExpr2.py | 15 ++++++++++++--- .../src/tests/typeEvaluator4.test.ts | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index d17737087..e5c5b3058 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -2758,13 +2758,13 @@ export class Parser { if (this._getLanguageVersion() < PythonVersion.V3_3) { this._addError(Localizer.Diagnostic.yieldFromIllegal(), nextToken); } - return YieldFromNode.create(yieldToken, this._parseTestExpression(/* allowAssignmentExpression */ true)); + return YieldFromNode.create(yieldToken, this._parseTestExpression(/* allowAssignmentExpression */ false)); } let exprList: ExpressionNode | undefined; if (!this._isNextTokenNeverExpression()) { exprList = this._parseTestOrStarListAsExpression( - /* allowAssignmentExpression */ true, + /* allowAssignmentExpression */ false, /* allowMultipleUnpack */ true, ErrorExpressionCategory.MissingExpression, () => Localizer.Diagnostic.expectedYieldExpr() diff --git a/packages/pyright-internal/src/tests/samples/assignmentExpr1.py b/packages/pyright-internal/src/tests/samples/assignmentExpr1.py index 9c66707c5..7e917ce2f 100644 --- a/packages/pyright-internal/src/tests/samples/assignmentExpr1.py +++ b/packages/pyright-internal/src/tests/samples/assignmentExpr1.py @@ -23,4 +23,4 @@ def func1(): val2 if (val2 := 1 + 2) else None # This should generate an error because parens are not allowed in asserts. -assert e := 1 \ No newline at end of file +assert e := 1 diff --git a/packages/pyright-internal/src/tests/samples/assignmentExpr2.py b/packages/pyright-internal/src/tests/samples/assignmentExpr2.py index ab917596c..27b4f6fd6 100644 --- a/packages/pyright-internal/src/tests/samples/assignmentExpr2.py +++ b/packages/pyright-internal/src/tests/samples/assignmentExpr2.py @@ -5,7 +5,7 @@ import re -def foo(x: float): +def func1(x: float): ... def pep572_examples(): @@ -37,10 +37,19 @@ def f(x: float): y0 = (y1 := f(25)) # Valid, though discouraged # This should generate an error. - foo(x = y := f(25)) # INVALID - foo(x=(y := f(25))) # Valid, though probably confusing + func1(x = y := f(25)) # INVALID + func1(x=(y := f(25))) # Valid, though probably confusing # This should generate an error. [y for x in [0, 1] if y := x - 1] [y for x in [0, 1] if (y := x - 1)] + + +def func2(): + # This should generate an error. + yield y := 1 + +def func3(): + # This should generate an error. + yield from y := [1] diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index ff411f6f4..d68ac8870 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -98,7 +98,7 @@ test('AssignmentExpr1', () => { test('AssignmentExpr2', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['assignmentExpr2.py']); - TestUtils.validateResults(analysisResults, 4); + TestUtils.validateResults(analysisResults, 6); }); test('AssignmentExpr3', () => { From a0225ed23dbec4cd8ab60ec7fb453ba3488f133f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 13 Aug 2023 09:35:50 -0700 Subject: [PATCH 492/525] Fixed a bug that resulted in incorrect type evaluation (and a false positive error) when a binary operator overload method was annotated to return `NoReturn`. This addresses #5711. (#5712) Co-authored-by: Eric Traut --- packages/pyright-internal/src/analyzer/operations.ts | 6 +++--- .../pyright-internal/src/tests/samples/operator1.py | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/operations.ts b/packages/pyright-internal/src/analyzer/operations.ts index 2435df059..2cc53e973 100644 --- a/packages/pyright-internal/src/analyzer/operations.ts +++ b/packages/pyright-internal/src/analyzer/operations.ts @@ -111,7 +111,7 @@ export function validateBinaryOperation( inferenceContext: InferenceContext | undefined, diag: DiagnosticAddendum, options: BinaryOperationOptions -): Type | undefined { +): Type { const leftType = leftTypeResult.type; const rightType = rightTypeResult.type; let type: Type | undefined; @@ -481,7 +481,7 @@ export function validateBinaryOperation( } } - return type && isNever(type) ? undefined : type; + return type ?? UnknownType.create(); } export function getTypeOfBinaryOperation( @@ -714,7 +714,7 @@ export function getTypeOfBinaryOperation( { isLiteralMathAllowed, isTupleAddAllowed } ); - if (!diag.isEmpty() || !type) { + if (!diag.isEmpty()) { typeErrors = true; if (!isIncomplete) { diff --git a/packages/pyright-internal/src/tests/samples/operator1.py b/packages/pyright-internal/src/tests/samples/operator1.py index b3fc33383..80c7e9797 100644 --- a/packages/pyright-internal/src/tests/samples/operator1.py +++ b/packages/pyright-internal/src/tests/samples/operator1.py @@ -2,6 +2,9 @@ # custom operator overrides. +from typing import NoReturn + + class A: def __eq__(self, Foo): return "equal" @@ -97,3 +100,12 @@ def __init__(self): e = E() _ = e + e + + +class F: + def __add__(self, other: object) -> NoReturn: + ... + + +f = F() + "" +reveal_type(f, expected_text="NoReturn") From eefc0f48f6cf624a4f471fd45ff25b9db19a5191 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Sun, 13 Aug 2023 10:03:42 -0700 Subject: [PATCH 493/525] Improved error reporting for a couple of diagnostic checks by using the declaration name node rather than the full declaration node. --- packages/pyright-internal/src/analyzer/checker.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 5a2e8dcc1..743a77b33 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -94,6 +94,7 @@ import { OperatorType, StringTokenFlags, TokenType } from '../parser/tokenizerTy import { AnalyzerFileInfo } from './analyzerFileInfo'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { Declaration, DeclarationType, isAliasDeclaration } from './declaration'; +import { getNameNodeForDeclaration } from './declarationUtils'; import { ImportResolver, ImportedModuleDescriptor, createImportedModuleDescriptor } from './importResolver'; import { ImportResult, ImportType } from './importResult'; import { getRelativeModuleName, getTopLevelImports } from './importStatementUtils'; @@ -5778,7 +5779,7 @@ export class Checker extends ParseTreeWalker { name: memberName, className: baseClassAndSymbol.classType.details.name, }) + diagAddendum.getString(), - lastDecl.node + getNameNodeForDeclaration(lastDecl) ?? lastDecl.node ); const origDecl = getLastTypedDeclaredForSymbol(baseClassAndSymbol.symbol); @@ -5849,7 +5850,7 @@ export class Checker extends ParseTreeWalker { name: memberName, className: baseClassAndSymbol.classType.details.name, }), - lastDecl.node + getNameNodeForDeclaration(lastDecl) ?? lastDecl.node ); const origDecl = getLastTypedDeclaredForSymbol(baseClassAndSymbol.symbol); From 2260cced076887595a0ebadcaca261e61e8e057e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 14 Aug 2023 17:24:24 -0700 Subject: [PATCH 494/525] Updated typeshed to the latest. This update includes some changes to the two-parameter form of the `get` method for `dict` and `TypedDict` that may result in visible type evaluation changes in some code bases. --- .../src/tests/samples/function4.py | 22 -- .../src/tests/samples/typedDictReadOnly2.py | 1 - .../src/tests/typeEvaluator1.test.ts | 6 - .../src/tests/typeEvaluator5.test.ts | 2 +- .../typeshed-fallback/commit.txt | 2 +- .../typeshed-fallback/stdlib/argparse.pyi | 2 +- .../stdlib/asyncio/base_events.pyi | 47 +++- .../stdlib/asyncio/constants.pyi | 2 + .../stdlib/asyncio/events.pyi | 2 + .../stdlib/asyncio/futures.pyi | 2 +- .../stdlib/asyncio/streams.pyi | 11 +- .../stdlib/asyncio/tasks.pyi | 23 +- .../typeshed-fallback/stdlib/builtins.pyi | 10 +- .../stdlib/collections/__init__.pyi | 4 +- .../typeshed-fallback/stdlib/contextvars.pyi | 12 +- .../typeshed-fallback/stdlib/enum.pyi | 10 +- .../stdlib/importlib/metadata/__init__.pyi | 1 + .../stdlib/logging/__init__.pyi | 18 +- .../stdlib/multiprocessing/managers.pyi | 10 +- .../typeshed-fallback/stdlib/shelve.pyi | 4 +- .../typeshed-fallback/stdlib/socket.pyi | 1 + .../typeshed-fallback/stdlib/sre_parse.pyi | 24 +- .../typeshed-fallback/stdlib/ssl.pyi | 41 ++- .../typeshed-fallback/stdlib/turtle.pyi | 7 + .../typeshed-fallback/stdlib/typing.pyi | 14 +- .../stdlib/typing_extensions.pyi | 10 +- .../typeshed-fallback/stdlib/weakref.pyi | 8 +- .../stubs/DateTimeRange/METADATA.toml | 4 - .../DateTimeRange/datetimerange/__init__.pyi | 65 ----- .../datetimerange/__version__.pyi | 6 - .../stubs/JACK-Client/METADATA.toml | 1 + .../stubs/Pygments/METADATA.toml | 2 +- .../Pygments/pygments/formatters/img.pyi | 2 + .../stubs/Send2Trash/METADATA.toml | 4 - .../stubs/Send2Trash/send2trash/__init__.pyi | 5 +- .../stubs/Send2Trash/send2trash/__main__.pyi | 3 + .../stubs/Send2Trash/send2trash/compat.pyi | 7 - .../stubs/WebOb/METADATA.toml | 1 + .../stubs/babel/METADATA.toml | 8 - .../stubs/babel/babel/__init__.pyi | 8 - .../stubs/babel/babel/core.pyi | 149 ----------- .../stubs/babel/babel/dates.pyi | 182 ------------- .../stubs/babel/babel/languages.pyi | 2 - .../stubs/babel/babel/lists.pyi | 12 - .../stubs/babel/babel/localedata.pyi | 25 -- .../stubs/babel/babel/localtime/__init__.pyi | 17 -- .../stubs/babel/babel/localtime/_unix.pyi | 0 .../stubs/babel/babel/localtime/_win32.pyi | 6 - .../stubs/babel/babel/messages/__init__.pyi | 1 - .../stubs/babel/babel/messages/catalog.pyi | 130 ---------- .../stubs/babel/babel/messages/checkers.pyi | 8 - .../stubs/babel/babel/messages/extract.pyi | 85 ------- .../stubs/babel/babel/messages/frontend.pyi | 120 --------- .../stubs/babel/babel/messages/jslexer.pyi | 26 -- .../stubs/babel/babel/messages/mofile.pyi | 9 - .../stubs/babel/babel/messages/plurals.pyi | 13 - .../stubs/babel/babel/messages/pofile.pyi | 76 ------ .../stubs/babel/babel/numbers.pyi | 127 --------- .../stubs/babel/babel/plural.pyi | 99 -------- .../stubs/babel/babel/support.pyi | 106 -------- .../stubs/babel/babel/units.pyi | 27 -- .../stubs/babel/babel/util.pyi | 46 ---- .../stubs/beautifulsoup4/METADATA.toml | 1 + .../stubs/braintree/METADATA.toml | 1 + .../stubs/cffi/METADATA.toml | 1 + .../stubs/click-default-group/METADATA.toml | 4 + .../click_default_group.pyi | 41 +++ .../stubs/docopt/METADATA.toml | 1 + .../stubs/docutils/METADATA.toml | 1 + .../typeshed-fallback/stubs/gdb/METADATA.toml | 3 + .../stubs/google-cloud-ndb/METADATA.toml | 2 +- .../google/cloud/ndb/client.pyi | 2 + .../google-cloud-ndb/google/cloud/ndb/key.pyi | 1 + .../google/cloud/ndb/model.pyi | 2 + .../google/cloud/ndb/query.pyi | 2 + .../stubs/greenlet/METADATA.toml | 2 + .../stubs/greenlet/greenlet/__init__.pyi | 9 + .../stubs/greenlet/greenlet/_greenlet.pyi | 74 ++++++ .../stubs/hdbcli/METADATA.toml | 1 + .../stubs/humanfriendly/METADATA.toml | 1 + .../stubs/ibm-db/METADATA.toml | 1 + .../stubs/inifile/METADATA.toml | 1 + .../stubs/mypy-extensions/mypy_extensions.pyi | 12 +- .../stubs/openpyxl/METADATA.toml | 4 - .../stubs/openpyxl/openpyxl/__init__.pyi | 1 + .../openpyxl/openpyxl/cell/rich_text.pyi | 3 +- .../openpyxl/openpyxl/chart/chartspace.pyi | 2 +- .../openpyxl/openpyxl/descriptors/excel.pyi | 6 +- .../openpyxl/descriptors/sequence.pyi | 7 +- .../openpyxl/descriptors/serialisable.pyi | 18 +- .../stubs/openpyxl/openpyxl/pivot/table.pyi | 3 + .../stubs/openpyxl/openpyxl/reader/excel.pyi | 1 + .../openpyxl/openpyxl/reader/strings.pyi | 7 +- .../openpyxl/openpyxl/utils/formulas.pyi | 2 + .../openpyxl/openpyxl/worksheet/_reader.pyi | 5 + .../openpyxl/worksheet/cell_range.pyi | 1 + .../openpyxl/openpyxl/worksheet/filters.pyi | 17 ++ .../openpyxl/xml/_functions_overloads.pyi | 7 +- .../stubs/paho-mqtt/METADATA.toml | 1 + .../stubs/paramiko/METADATA.toml | 2 +- .../stubs/paramiko/paramiko/sftp_client.pyi | 16 +- .../stubs/paramiko/paramiko/sftp_file.pyi | 6 +- .../stubs/passlib/METADATA.toml | 1 + .../stubs/pexpect/METADATA.toml | 1 + .../stubs/protobuf/METADATA.toml | 5 +- .../google/protobuf/descriptor_pool.pyi | 1 - .../google/protobuf/message_factory.pyi | 2 + .../stubs/pyaudio/METADATA.toml | 2 + .../stubs/pycurl/METADATA.toml | 1 + .../stubs/pyflakes/METADATA.toml | 2 +- .../stubs/pyflakes/pyflakes/checker.pyi | 25 +- .../stubs/pyflakes/pyflakes/messages.pyi | 1 - .../stubs/python-nmap/METADATA.toml | 1 + .../stubs/pytz/METADATA.toml | 2 + .../stubs/pywin32/_win32typing.pyi | 24 +- .../stubs/pywin32/win32/win32wnet.pyi | 6 +- .../stubs/regex/METADATA.toml | 2 +- .../stubs/s2clientprotocol/METADATA.toml | 1 + .../stubs/tqdm/METADATA.toml | 2 +- .../stubs/tqdm/tqdm/utils.pyi | 5 +- .../stubs/uWSGI/METADATA.toml | 15 ++ .../typeshed-fallback/stubs/uWSGI/uwsgi.pyi | 240 ++++++++++++++++++ .../stubs/uWSGI/uwsgidecorators.pyi | 180 +++++++++++++ .../stubs/untangle/METADATA.toml | 1 + 124 files changed, 953 insertions(+), 1517 deletions(-) delete mode 100644 packages/pyright-internal/src/tests/samples/function4.py delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__version__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/__main__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/compat.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/core.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/dates.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/languages.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/lists.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localedata.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/_unix.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/_win32.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/__init__.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/catalog.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/checkers.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/extract.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/jslexer.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/mofile.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/plurals.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/pofile.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/numbers.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/plural.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/support.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/units.pyi delete mode 100644 packages/pyright-internal/typeshed-fallback/stubs/babel/babel/util.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/click-default-group/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/click-default-group/click_default_group.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/greenlet/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/greenlet/greenlet/__init__.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/greenlet/greenlet/_greenlet.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/uWSGI/METADATA.toml create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/uWSGI/uwsgi.pyi create mode 100644 packages/pyright-internal/typeshed-fallback/stubs/uWSGI/uwsgidecorators.pyi diff --git a/packages/pyright-internal/src/tests/samples/function4.py b/packages/pyright-internal/src/tests/samples/function4.py deleted file mode 100644 index 5e0be52b1..000000000 --- a/packages/pyright-internal/src/tests/samples/function4.py +++ /dev/null @@ -1,22 +0,0 @@ -# This sample tests the case where a generic function return type -# is handled correctly when its result is assigned to a LHS with -# an expected type that is a union (in this case, "msg" has a type -# of Union[str, None] and "get" returns the type Union[_VT_co, _T]. - - -def func1(key: str, msg: str | None): - if msg is None: - my_dict = {"a": "b"} - msg = my_dict.get(key, "c") - - # Without bidirectional type inference, the - # revealed type will be "str", but since "msg" - # has a declared type, it will be used in this - # case to inform the type "str | None", which - # is a valid solution for the constraint solver. - # Unfortunately, it's probably not the answer - # the user expects in this case. - reveal_type(msg, expected_text="str | None") - - x = my_dict.get(key, "c") - reveal_type(x, expected_text="str") diff --git a/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py b/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py index 57f65ebac..138419a65 100644 --- a/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py +++ b/packages/pyright-internal/src/tests/samples/typedDictReadOnly2.py @@ -61,7 +61,6 @@ class TD4(TypedDict, total=True): # This should generate an error. td4.update({}) -# This should generate an error. td5 = td3 | td4 # This should generate an error. diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 13c5562d5..182149e79 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -821,12 +821,6 @@ test('Function3', () => { TestUtils.validateResults(analysisResults, 1); }); -test('Function4', () => { - const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function4.py']); - - TestUtils.validateResults(analysisResults, 0); -}); - test('Function5', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['function5.py']); diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index a8a01b576..029118784 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -305,5 +305,5 @@ test('TypedDictReadOnly2', () => { configOptions.diagnosticRuleSet.enableExperimentalFeatures = true; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDictReadOnly2.py'], configOptions); - TestUtils.validateResults(analysisResults, 9); + TestUtils.validateResults(analysisResults, 8); }); diff --git a/packages/pyright-internal/typeshed-fallback/commit.txt b/packages/pyright-internal/typeshed-fallback/commit.txt index b6fad8649..c5e7ab513 100644 --- a/packages/pyright-internal/typeshed-fallback/commit.txt +++ b/packages/pyright-internal/typeshed-fallback/commit.txt @@ -1 +1 @@ -53a893279713c8abcc970a578d6f28e97efdd68f +74aac1aa891cbb568b124c955010b19d40f9fda7 diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi index 182f96bd0..b59dd56ab 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/argparse.pyi @@ -85,7 +85,7 @@ class _ActionsContainer: self, *name_or_flags: str, action: _ActionStr | type[Action] = ..., - nargs: int | _NArgsStr | _SUPPRESS_T = ..., + nargs: int | _NArgsStr | _SUPPRESS_T | None = None, const: Any = ..., default: Any = ..., type: Callable[[str], _T] | FileType = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi index 9924f728f..e2b55da8c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/base_events.pyi @@ -107,7 +107,48 @@ class BaseEventLoop(AbstractEventLoop): flags: int = 0, ) -> list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]]: ... async def getnameinfo(self, sockaddr: tuple[str, int] | tuple[str, int, int, int], flags: int = 0) -> tuple[str, str]: ... - if sys.version_info >= (3, 11): + if sys.version_info >= (3, 12): + @overload + async def create_connection( + self, + protocol_factory: Callable[[], _ProtocolT], + host: str = ..., + port: int = ..., + *, + ssl: _SSLContext = None, + family: int = 0, + proto: int = 0, + flags: int = 0, + sock: None = None, + local_addr: tuple[str, int] | None = None, + server_hostname: str | None = None, + ssl_handshake_timeout: float | None = None, + ssl_shutdown_timeout: float | None = None, + happy_eyeballs_delay: float | None = None, + interleave: int | None = None, + all_errors: bool = False, + ) -> tuple[Transport, _ProtocolT]: ... + @overload + async def create_connection( + self, + protocol_factory: Callable[[], _ProtocolT], + host: None = None, + port: None = None, + *, + ssl: _SSLContext = None, + family: int = 0, + proto: int = 0, + flags: int = 0, + sock: socket, + local_addr: None = None, + server_hostname: str | None = None, + ssl_handshake_timeout: float | None = None, + ssl_shutdown_timeout: float | None = None, + happy_eyeballs_delay: float | None = None, + interleave: int | None = None, + all_errors: bool = False, + ) -> tuple[Transport, _ProtocolT]: ... + elif sys.version_info >= (3, 11): @overload async def create_connection( self, @@ -426,5 +467,7 @@ class BaseEventLoop(AbstractEventLoop): # Debug flag management. def get_debug(self) -> bool: ... def set_debug(self, enabled: bool) -> None: ... - if sys.version_info >= (3, 9): + if sys.version_info >= (3, 12): + async def shutdown_default_executor(self, timeout: float | None = None) -> None: ... + elif sys.version_info >= (3, 9): async def shutdown_default_executor(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/constants.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/constants.pyi index af209fa9e..60d852920 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/constants.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/constants.pyi @@ -11,6 +11,8 @@ if sys.version_info >= (3, 11): SSL_SHUTDOWN_TIMEOUT: float FLOW_CONTROL_HIGH_WATER_SSL_READ: Literal[256] FLOW_CONTROL_HIGH_WATER_SSL_WRITE: Literal[512] +if sys.version_info >= (3, 12): + THREAD_JOIN_TIMEOUT: Literal[300] class _SendfileMode(enum.Enum): UNSUPPORTED: int diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi index b1b0fcfa5..cde63b279 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/events.pyi @@ -76,6 +76,8 @@ class Handle: def cancel(self) -> None: ... def _run(self) -> None: ... def cancelled(self) -> bool: ... + if sys.version_info >= (3, 12): + def get_context(self) -> Context: ... class TimerHandle(Handle): def __init__( diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/futures.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/futures.pyi index 79209f5ed..af05425d0 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/futures.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/futures.pyi @@ -31,7 +31,7 @@ def isfuture(obj: object) -> TypeGuard[Future[Any]]: ... class Future(Awaitable[_T], Iterable[_T]): _state: str @property - def _exception(self) -> BaseException: ... + def _exception(self) -> BaseException | None: ... _blocking: bool @property def _log_traceback(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/streams.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/streams.pyi index f30c57305..804be1ca5 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/streams.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/streams.pyi @@ -148,7 +148,16 @@ class StreamWriter: async def wait_closed(self) -> None: ... def get_extra_info(self, name: str, default: Any = None) -> Any: ... async def drain(self) -> None: ... - if sys.version_info >= (3, 11): + if sys.version_info >= (3, 12): + async def start_tls( + self, + sslcontext: ssl.SSLContext, + *, + server_hostname: str | None = None, + ssl_handshake_timeout: float | None = None, + ssl_shutdown_timeout: float | None = None, + ) -> None: ... + elif sys.version_info >= (3, 11): async def start_tls( self, sslcontext: ssl.SSLContext, *, server_hostname: str | None = None, ssl_handshake_timeout: float | None = None ) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/tasks.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/tasks.pyi index d8c101f28..5ea30d379 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/tasks.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/asyncio/tasks.pyi @@ -285,7 +285,26 @@ else: # since the only reason why `asyncio.Future` is invariant is the `set_result()` method, # and `asyncio.Task.set_result()` always raises. class Task(Future[_T_co], Generic[_T_co]): # type: ignore[type-var] # pyright: ignore[reportGeneralTypeIssues] - if sys.version_info >= (3, 8): + if sys.version_info >= (3, 12): + def __init__( + self, + coro: _TaskCompatibleCoro[_T_co], + *, + loop: AbstractEventLoop = ..., + name: str | None, + context: Context | None = None, + eager_start: bool = False, + ) -> None: ... + elif sys.version_info >= (3, 11): + def __init__( + self, + coro: _TaskCompatibleCoro[_T_co], + *, + loop: AbstractEventLoop = ..., + name: str | None, + context: Context | None = None, + ) -> None: ... + elif sys.version_info >= (3, 8): def __init__( self, coro: _TaskCompatibleCoro[_T_co], *, loop: AbstractEventLoop = ..., name: str | None = ... ) -> None: ... @@ -295,6 +314,8 @@ class Task(Future[_T_co], Generic[_T_co]): # type: ignore[type-var] # pyright: def get_coro(self) -> _TaskCompatibleCoro[_T_co]: ... def get_name(self) -> str: ... def set_name(self, __value: object) -> None: ... + if sys.version_info >= (3, 12): + def get_context(self) -> Context: ... def get_stack(self, *, limit: int | None = None) -> list[FrameType]: ... def print_stack(self, *, limit: int | None = None, file: TextIO | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index 4a0194498..71cccee16 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -1096,14 +1096,18 @@ class dict(MutableMapping[_KT, _VT], Generic[_KT, _VT]): @overload def fromkeys(cls, __iterable: Iterable[_T], __value: _S) -> dict[_T, _S]: ... # Positional-only in dict, but not in MutableMapping - @overload + @overload # type: ignore[override] def get(self, __key: _KT) -> _VT | None: ... @overload - def get(self, __key: _KT, __default: _VT | _T) -> _VT | _T: ... + def get(self, __key: _KT, __default: _VT) -> _VT: ... + @overload + def get(self, __key: _KT, __default: _T) -> _VT | _T: ... @overload def pop(self, __key: _KT) -> _VT: ... @overload - def pop(self, __key: _KT, __default: _VT | _T) -> _VT | _T: ... + def pop(self, __key: _KT, __default: _VT) -> _VT: ... + @overload + def pop(self, __key: _KT, __default: _T) -> _VT | _T: ... def __len__(self) -> int: ... def __getitem__(self, __key: _KT) -> _VT: ... def __setitem__(self, __key: _KT, __value: _VT) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi index ec526e67a..8ceecd1f3 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/collections/__init__.pyi @@ -432,7 +432,9 @@ class ChainMap(MutableMapping[_KT, _VT], Generic[_KT, _VT]): @overload def pop(self, key: _KT) -> _VT: ... @overload - def pop(self, key: _KT, default: _VT | _T) -> _VT | _T: ... + def pop(self, key: _KT, default: _VT) -> _VT: ... + @overload + def pop(self, key: _KT, default: _T) -> _VT | _T: ... def copy(self) -> Self: ... __copy__ = copy # All arguments to `fromkeys` are passed to `dict.fromkeys` at runtime, so the signature should be kept in line with `dict.fromkeys`. diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/contextvars.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/contextvars.pyi index 1b0e8be30..63b5f80ae 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/contextvars.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/contextvars.pyi @@ -25,10 +25,14 @@ class ContextVar(Generic[_T]): def get(self) -> _T: ... if sys.version_info >= (3, 8): @overload - def get(self, default: _D | _T) -> _D | _T: ... + def get(self, default: _T) -> _T: ... + @overload + def get(self, default: _D) -> _D | _T: ... else: @overload - def get(self, __default: _D | _T) -> _D | _T: ... + def get(self, __default: _T) -> _T: ... + @overload + def get(self, __default: _D) -> _D | _T: ... def set(self, __value: _T) -> Token[_T]: ... def reset(self, __token: Token[_T]) -> None: ... @@ -53,7 +57,9 @@ def copy_context() -> Context: ... class Context(Mapping[ContextVar[Any], Any]): def __init__(self) -> None: ... @overload - def get(self, __key: ContextVar[_T]) -> _T | None: ... + def get(self, __key: ContextVar[_T], __default: None = None) -> _T | None: ... # type: ignore[misc] # overlapping overloads + @overload + def get(self, __key: ContextVar[_T], __default: _T) -> _T: ... @overload def get(self, __key: ContextVar[_T], __default: _D) -> _T | _D: ... def run(self, callable: Callable[_P, _T], *args: _P.args, **kwargs: _P.kwargs) -> _T: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi index 60cc27215..a8ba7bf15 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/enum.pyi @@ -2,7 +2,6 @@ import _typeshed import sys import types from _typeshed import SupportsKeysAndGetItem, Unused -from abc import ABCMeta from builtins import property as _builtins_property from collections.abc import Callable, Iterable, Iterator, Mapping from typing import Any, Generic, TypeVar, overload @@ -76,12 +75,8 @@ class _EnumDict(dict[str, Any]): @overload def update(self, members: Iterable[tuple[str, Any]], **more_members: Any) -> None: ... -# Note: EnumMeta actually subclasses type directly, not ABCMeta. -# This is a temporary workaround to allow multiple creation of enums with builtins -# such as str as mixins, which due to the handling of ABCs of builtin types, cause -# spurious inconsistent metaclass structure. See #1595. # Structurally: Iterable[T], Reversible[T], Container[T] where T is the enum itself -class EnumMeta(ABCMeta): +class EnumMeta(type): if sys.version_info >= (3, 11): def __new__( metacls: type[_typeshed.Self], @@ -193,6 +188,9 @@ class Enum(metaclass=EnumMeta): def __hash__(self) -> int: ... def __format__(self, format_spec: str) -> str: ... def __reduce_ex__(self, proto: Unused) -> tuple[Any, ...]: ... + if sys.version_info >= (3, 12): + def __copy__(self) -> Self: ... + def __deepcopy__(self, memo: Any) -> Self: ... if sys.version_info >= (3, 11): class ReprEnum(Enum): ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/importlib/metadata/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/importlib/metadata/__init__.pyi index 0af33bc87..0f8a6f56c 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/importlib/metadata/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/importlib/metadata/__init__.pyi @@ -180,6 +180,7 @@ class MetadataPathFinder(DistributionFinder): def invalidate_caches(cls) -> None: ... class PathDistribution(Distribution): + _path: Path def __init__(self, path: Path) -> None: ... def read_text(self, filename: StrPath) -> str: ... def locate_file(self, path: StrPath) -> PathLike[str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi index 6ebd305aa..db797d418 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/logging/__init__.pyi @@ -60,6 +60,8 @@ __all__ = [ if sys.version_info >= (3, 11): __all__ += ["getLevelNamesMapping"] +if sys.version_info >= (3, 12): + __all__ += ["getHandlerByName", "getHandlerNames"] _SysExcInfoType: TypeAlias = tuple[type[BaseException], BaseException, TracebackType | None] | tuple[None, None, None] _ExcInfoType: TypeAlias = None | bool | _SysExcInfoType | BaseException @@ -83,7 +85,10 @@ class Filterer: filters: list[_FilterType] def addFilter(self, filter: _FilterType) -> None: ... def removeFilter(self, filter: _FilterType) -> None: ... - def filter(self, record: LogRecord) -> bool: ... + if sys.version_info >= (3, 12): + def filter(self, record: LogRecord) -> bool | LogRecord: ... + else: + def filter(self, record: LogRecord) -> bool: ... class Manager: # undocumented root: RootLogger @@ -111,6 +116,8 @@ class Logger(Filterer): def isEnabledFor(self, level: int) -> bool: ... def getEffectiveLevel(self) -> int: ... def getChild(self, suffix: str) -> Self: ... # see python/typing#980 + if sys.version_info >= (3, 12): + def getChildren(self) -> set[Logger]: ... if sys.version_info >= (3, 8): def debug( self, @@ -324,6 +331,10 @@ class Handler(Filterer): def format(self, record: LogRecord) -> str: ... def emit(self, record: LogRecord) -> None: ... +if sys.version_info >= (3, 12): + def getHandlerByName(name: str) -> Handler | None: ... + def getHandlerNames() -> frozenset[str]: ... + class Formatter: converter: Callable[[float | None], struct_time] _fmt: str | None # undocumented @@ -370,7 +381,10 @@ class Filter: name: str # undocumented nlen: int # undocumented def __init__(self, name: str = "") -> None: ... - def filter(self, record: LogRecord) -> bool: ... + if sys.version_info >= (3, 12): + def filter(self, record: LogRecord) -> bool | LogRecord: ... + else: + def filter(self, record: LogRecord) -> bool: ... class LogRecord: # args can be set to None by logging.handlers.QueueHandler diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi index 27a903fb9..9cfc1ebbd 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/multiprocessing/managers.pyi @@ -73,14 +73,18 @@ class DictProxy(BaseProxy, MutableMapping[_KT, _VT]): def __delitem__(self, __key: _KT) -> None: ... def __iter__(self) -> Iterator[_KT]: ... def copy(self) -> dict[_KT, _VT]: ... - @overload + @overload # type: ignore[override] def get(self, __key: _KT) -> _VT | None: ... @overload - def get(self, __key: _KT, __default: _VT | _T) -> _VT | _T: ... + def get(self, __key: _KT, __default: _VT) -> _VT: ... + @overload + def get(self, __key: _KT, __default: _T) -> _VT | _T: ... @overload def pop(self, __key: _KT) -> _VT: ... @overload - def pop(self, __key: _KT, __default: _VT | _T) -> _VT | _T: ... + def pop(self, __key: _KT, __default: _VT) -> _VT: ... + @overload + def pop(self, __key: _KT, __default: _T) -> _VT | _T: ... def keys(self) -> list[_KT]: ... # type: ignore[override] def items(self) -> list[tuple[_KT, _VT]]: ... # type: ignore[override] def values(self) -> list[_VT]: ... # type: ignore[override] diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/shelve.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/shelve.pyi index 82d0b03f4..b162b3a85 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/shelve.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/shelve.pyi @@ -15,8 +15,10 @@ class Shelf(MutableMapping[str, _VT]): ) -> None: ... def __iter__(self) -> Iterator[str]: ... def __len__(self) -> int: ... + @overload # type: ignore[override] + def get(self, key: str, default: None = None) -> _VT | None: ... # type: ignore[misc] # overlapping overloads @overload - def get(self, key: str) -> _VT | None: ... + def get(self, key: str, default: _VT) -> _VT: ... @overload def get(self, key: str, default: _T) -> _VT | _T: ... def __getitem__(self, key: str) -> _VT: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi index 5dd92ec8e..da06ce2c2 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/socket.pyi @@ -201,6 +201,7 @@ if sys.platform != "win32" and sys.platform != "darwin": TCP_LINGER2 as TCP_LINGER2, TCP_QUICKACK as TCP_QUICKACK, TCP_SYNCNT as TCP_SYNCNT, + TCP_USER_TIMEOUT as TCP_USER_TIMEOUT, TCP_WINDOW_CLAMP as TCP_WINDOW_CLAMP, ) if sys.platform != "win32": diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/sre_parse.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/sre_parse.pyi index 56f10bb41..8ef65223d 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/sre_parse.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/sre_parse.pyi @@ -87,25 +87,39 @@ class Tokenizer: def seek(self, index: int) -> None: ... def error(self, msg: str, offset: int = 0) -> _Error: ... - if sys.version_info >= (3, 11): + if sys.version_info >= (3, 12): + def checkgroupname(self, name: str, offset: int) -> None: ... + elif sys.version_info >= (3, 11): def checkgroupname(self, name: str, offset: int, nested: int) -> None: ... def fix_flags(src: str | bytes, flags: int) -> int: ... _TemplateType: TypeAlias = tuple[list[tuple[int, int]], list[str | None]] _TemplateByteType: TypeAlias = tuple[list[tuple[int, int]], list[bytes | None]] -if sys.version_info >= (3, 8): - def parse(str: str, flags: int = 0, state: State | None = None) -> SubPattern: ... + +if sys.version_info >= (3, 12): + @overload + def parse_template(source: str, pattern: _Pattern[Any]) -> _TemplateType: ... + @overload + def parse_template(source: bytes, pattern: _Pattern[Any]) -> _TemplateByteType: ... + +elif sys.version_info >= (3, 8): @overload def parse_template(source: str, state: _Pattern[Any]) -> _TemplateType: ... @overload def parse_template(source: bytes, state: _Pattern[Any]) -> _TemplateByteType: ... else: - def parse(str: str, flags: int = 0, pattern: Pattern | None = None) -> SubPattern: ... @overload def parse_template(source: str, pattern: _Pattern[Any]) -> _TemplateType: ... @overload def parse_template(source: bytes, pattern: _Pattern[Any]) -> _TemplateByteType: ... -def expand_template(template: _TemplateType, match: Match[Any]) -> str: ... +if sys.version_info >= (3, 8): + def parse(str: str, flags: int = 0, state: State | None = None) -> SubPattern: ... + +else: + def parse(str: str, flags: int = 0, pattern: Pattern | None = None) -> SubPattern: ... + +if sys.version_info < (3, 12): + def expand_template(template: _TemplateType, match: Match[Any]) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/ssl.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/ssl.pyi index 446bbf8d1..dd7285196 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/ssl.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/ssl.pyi @@ -44,18 +44,20 @@ class SSLCertVerificationError(SSLError, ValueError): CertificateError = SSLCertVerificationError -def wrap_socket( - sock: socket.socket, - keyfile: StrOrBytesPath | None = None, - certfile: StrOrBytesPath | None = None, - server_side: bool = False, - cert_reqs: int = ..., - ssl_version: int = ..., - ca_certs: str | None = None, - do_handshake_on_connect: bool = True, - suppress_ragged_eofs: bool = True, - ciphers: str | None = None, -) -> SSLSocket: ... +if sys.version_info < (3, 12): + def wrap_socket( + sock: socket.socket, + keyfile: StrOrBytesPath | None = None, + certfile: StrOrBytesPath | None = None, + server_side: bool = False, + cert_reqs: int = ..., + ssl_version: int = ..., + ca_certs: str | None = None, + do_handshake_on_connect: bool = True, + suppress_ragged_eofs: bool = True, + ciphers: str | None = None, + ) -> SSLSocket: ... + def create_default_context( purpose: Purpose = ..., *, @@ -95,7 +97,10 @@ else: _create_default_https_context: Callable[..., SSLContext] def RAND_bytes(__n: int) -> bytes: ... -def RAND_pseudo_bytes(__n: int) -> tuple[bytes, bool]: ... + +if sys.version_info < (3, 12): + def RAND_pseudo_bytes(__n: int) -> tuple[bytes, bool]: ... + def RAND_status() -> bool: ... def RAND_egd(path: str) -> None: ... def RAND_add(__string: str | ReadableBuffer, __entropy: float) -> None: ... @@ -198,6 +203,11 @@ class Options(enum.IntFlag): OP_ENABLE_MIDDLEBOX_COMPAT: int if sys.platform == "linux": OP_IGNORE_UNEXPECTED_EOF: int + if sys.version_info >= (3, 12): + OP_LEGACY_SERVER_CONNECT: int + if sys.version_info >= (3, 12) and sys.platform != "linux": + OP_ENABLE_KTLS: int + OP_IGNORE_UNEXPECTED_EOF: int OP_ALL: Options OP_NO_SSLv2: Options @@ -216,6 +226,11 @@ if sys.version_info >= (3, 8): OP_ENABLE_MIDDLEBOX_COMPAT: Options if sys.platform == "linux": OP_IGNORE_UNEXPECTED_EOF: Options +if sys.version_info >= (3, 12): + OP_LEGACY_SERVER_CONNECT: Options +if sys.version_info >= (3, 12) and sys.platform != "linux": + OP_ENABLE_KTLS: Options + OP_IGNORE_UNEXPECTED_EOF: Options HAS_NEVER_CHECK_COMMON_NAME: bool HAS_SSLv2: bool diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/turtle.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/turtle.pyi index 5df3e4b90..80ea40879 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/turtle.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/turtle.pyi @@ -1,3 +1,4 @@ +import sys from collections.abc import Callable, Sequence from tkinter import Canvas, Frame, Misc, PhotoImage, Scrollbar from typing import Any, ClassVar, overload @@ -249,6 +250,9 @@ class TNavigator: def reset(self) -> None: ... def degrees(self, fullcircle: float = 360.0) -> None: ... def radians(self) -> None: ... + if sys.version_info >= (3, 12): + def teleport(self, x: float | None = None, y: float | None = None, *, fill_gap: bool = False) -> None: ... + def forward(self, distance: float) -> None: ... def back(self, distance: float) -> None: ... def right(self, angle: float) -> None: ... @@ -321,6 +325,9 @@ class TPen: def color(self, r: float, g: float, b: float) -> None: ... @overload def color(self, color1: _Color, color2: _Color) -> None: ... + if sys.version_info >= (3, 12): + def teleport(self, x: float | None = None, y: float | None = None, *, fill_gap: bool = False) -> None: ... + def showturtle(self) -> None: ... def hideturtle(self) -> None: ... def isvisible(self) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi index 81cf3817f..a9bffdf52 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing.pyi @@ -650,7 +650,9 @@ class MutableMapping(Mapping[_KT, _VT], Generic[_KT, _VT]): @overload def pop(self, __key: _KT) -> _VT: ... @overload - def pop(self, __key: _KT, default: _VT | _T) -> _VT | _T: ... + def pop(self, __key: _KT, default: _VT) -> _VT: ... + @overload + def pop(self, __key: _KT, default: _T) -> _VT | _T: ... def popitem(self) -> tuple[_KT, _VT]: ... # This overload should be allowed only if the value type is compatible with None. # @@ -898,8 +900,16 @@ class _TypedDict(Mapping[str, object], metaclass=ABCMeta): def keys(self) -> dict_keys[str, object]: ... def values(self) -> dict_values[str, object]: ... if sys.version_info >= (3, 9): + @overload def __or__(self, __value: typing_extensions.Self) -> typing_extensions.Self: ... - def __ior__(self, __value: typing_extensions.Self) -> typing_extensions.Self: ... + @overload + def __or__(self, __value: dict[str, Any]) -> dict[str, object]: ... + @overload + def __ror__(self, __value: typing_extensions.Self) -> typing_extensions.Self: ... + @overload + def __ror__(self, __value: dict[str, Any]) -> dict[str, object]: ... + # supposedly incompatible definitions of __or__ and __ior__ + def __ior__(self, __value: typing_extensions.Self) -> typing_extensions.Self: ... # type: ignore[misc] @_final class ForwardRef: diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi index a3ffe0e7a..32be3c030 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/typing_extensions.pyi @@ -233,8 +233,16 @@ class _TypedDict(Mapping[str, object], metaclass=abc.ABCMeta): def values(self) -> dict_values[str, object]: ... def __delitem__(self, k: Never) -> None: ... if sys.version_info >= (3, 9): + @overload def __or__(self, __value: Self) -> Self: ... - def __ior__(self, __value: Self) -> Self: ... + @overload + def __or__(self, __value: dict[str, Any]) -> dict[str, object]: ... + @overload + def __ror__(self, __value: Self) -> Self: ... + @overload + def __ror__(self, __value: dict[str, Any]) -> dict[str, object]: ... + # supposedly incompatible definitions of `__ior__` and `__or__`: + def __ior__(self, __value: Self) -> Self: ... # type: ignore[misc] # TypedDict is a (non-subscriptable) special form. TypedDict: object diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi index c61f731b6..ecb98d426 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/weakref.pyi @@ -75,7 +75,9 @@ class WeakValueDictionary(MutableMapping[_KT, _VT]): @overload def pop(self, key: _KT) -> _VT: ... @overload - def pop(self, key: _KT, default: _VT | _T = ...) -> _VT | _T: ... + def pop(self, key: _KT, default: _VT) -> _VT: ... + @overload + def pop(self, key: _KT, default: _T) -> _VT | _T: ... if sys.version_info >= (3, 9): def __or__(self, other: Mapping[_T1, _T2]) -> WeakValueDictionary[_KT | _T1, _VT | _T2]: ... def __ror__(self, other: Mapping[_T1, _T2]) -> WeakValueDictionary[_KT | _T1, _VT | _T2]: ... @@ -118,7 +120,9 @@ class WeakKeyDictionary(MutableMapping[_KT, _VT]): @overload def pop(self, key: _KT) -> _VT: ... @overload - def pop(self, key: _KT, default: _VT | _T = ...) -> _VT | _T: ... + def pop(self, key: _KT, default: _VT) -> _VT: ... + @overload + def pop(self, key: _KT, default: _T) -> _VT | _T: ... if sys.version_info >= (3, 9): def __or__(self, other: Mapping[_T1, _T2]) -> WeakKeyDictionary[_KT | _T1, _VT | _T2]: ... def __ror__(self, other: Mapping[_T1, _T2]) -> WeakKeyDictionary[_KT | _T1, _VT | _T2]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/METADATA.toml deleted file mode 100644 index 4c818b93c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/METADATA.toml +++ /dev/null @@ -1,4 +0,0 @@ -version = "2.0.*" -upstream_repository = "https://github.com/thombashi/DateTimeRange" -requires = ["types-python-dateutil"] -obsolete_since = "2.1.0" # Released on 2023-02-19 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__init__.pyi deleted file mode 100644 index d5bc25cc9..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__init__.pyi +++ /dev/null @@ -1,65 +0,0 @@ -import datetime -from collections.abc import Iterable -from typing import ClassVar -from typing_extensions import Self - -from dateutil.relativedelta import relativedelta - -from .__version__ import ( - __author__ as __author__, - __copyright__ as __copyright__, - __email__ as __email__, - __license__ as __license__, - __version__ as __version__, -) - -class DateTimeRange: - NOT_A_TIME_STR: ClassVar[str] - start_time_format: str - end_time_format: str - is_output_elapse: bool - separator: str - def __init__( - self, - start_datetime: datetime.datetime | str | None = None, - end_datetime: datetime.datetime | str | None = None, - start_time_format: str = "%Y-%m-%dT%H:%M:%S%z", - end_time_format: str = "%Y-%m-%dT%H:%M:%S%z", - ) -> None: ... - @classmethod - def from_range_text( - cls, - range_text: str, - separator: str = "\\s+\\-\\s+", - start_time_format: str | None = None, - end_time_format: str | None = None, - ) -> DateTimeRange: ... - def __eq__(self, other: object) -> bool: ... - def __ne__(self, other: object) -> bool: ... - def __add__(self, other: datetime.timedelta) -> DateTimeRange: ... - def __iadd__(self, other: datetime.timedelta) -> Self: ... - def __sub__(self, other: datetime.timedelta) -> DateTimeRange: ... - def __isub__(self, other: datetime.timedelta) -> Self: ... - def __contains__(self, x: datetime.timedelta | datetime.datetime | DateTimeRange | str) -> bool: ... - @property - def start_datetime(self) -> datetime.datetime: ... - @property - def end_datetime(self) -> datetime.datetime: ... - @property - def timedelta(self) -> datetime.timedelta: ... - def is_set(self) -> bool: ... - def validate_time_inversion(self) -> None: ... - def is_valid_timerange(self) -> bool: ... - def is_intersection(self, x: DateTimeRange, intersection_threshold: datetime.timedelta | None = None) -> bool: ... - def get_start_time_str(self) -> str: ... - def get_end_time_str(self) -> str: ... - def get_timedelta_second(self) -> float: ... - def set_start_datetime(self, value: datetime.datetime | str | None, timezone: str | None = None) -> None: ... - def set_end_datetime(self, value: datetime.datetime | str | None, timezone: str | None = None) -> None: ... - def set_time_range(self, start: datetime.datetime | str | None, end: datetime.datetime | str | None) -> None: ... - def range(self, step: datetime.timedelta | relativedelta) -> Iterable[datetime.datetime]: ... - def intersection(self, x: DateTimeRange, intersection_threshold: datetime.timedelta | None = None) -> DateTimeRange: ... - def encompass(self, x: DateTimeRange) -> DateTimeRange: ... - def truncate(self, percentage: float) -> None: ... - def split(self, separator: str | datetime.datetime) -> list[DateTimeRange]: ... - def subtract(self, x: DateTimeRange) -> DateTimeRange: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__version__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__version__.pyi deleted file mode 100644 index 37e897a65..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/DateTimeRange/datetimerange/__version__.pyi +++ /dev/null @@ -1,6 +0,0 @@ -__author__: str -__copyright__: str -__license__: str -__version__: str -__maintainer__ = __author__ -__email__: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/JACK-Client/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/JACK-Client/METADATA.toml index 9bc819273..f18e0144f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/JACK-Client/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/JACK-Client/METADATA.toml @@ -1,4 +1,5 @@ version = "0.5.*" +upstream_repository = "https://github.com/spatialaudio/jackclient-python" # Requires a version of numpy with a `py.typed` file requires = ["numpy>=1.20", "types-cffi"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml index f8fb89d88..c5330dbb0 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.15.*" +version = "2.16.*" upstream_repository = "https://github.com/pygments/pygments" requires = ["types-docutils", "types-setuptools"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/img.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/img.pyi index 66b29e852..67310cfd2 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/img.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Pygments/pygments/formatters/img.pyi @@ -12,10 +12,12 @@ class FontManager: font_size: Any fonts: Any encoding: Any + variable: bool def __init__(self, font_name, font_size: int = 14) -> None: ... def get_char_size(self): ... def get_text_size(self, text): ... def get_font(self, bold, oblique): ... + def get_style(self, style): ... class ImageFormatter(Formatter[_T]): name: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml index e4eb2fd4c..8ff27a720 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/METADATA.toml @@ -1,6 +1,2 @@ version = "1.8.*" upstream_repository = "https://github.com/arsenetar/send2trash" -partial_stub = true - -[tool.stubtest] -ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/__init__.pyi index 9ff00ba71..8c2e74a7a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/__init__.pyi @@ -1,10 +1,7 @@ -from _typeshed import Incomplete, StrOrBytesPath +from _typeshed import StrOrBytesPath from typing import Any from .exceptions import TrashPermissionError as TrashPermissionError # The list should be list[StrOrBytesPath] but that doesn't work because invariance def send2trash(paths: list[Any] | StrOrBytesPath) -> None: ... - -# Marked as incomplete because there are platform-specific plat_foo modules -def __getattr__(name: str) -> Incomplete: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/__main__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/__main__.pyi new file mode 100644 index 000000000..b75b3a4b3 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/__main__.pyi @@ -0,0 +1,3 @@ +from collections.abc import Iterable + +def main(args: Iterable[str] | None = None) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/compat.pyi b/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/compat.pyi deleted file mode 100644 index e148e3523..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/Send2Trash/send2trash/compat.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from typing import Any -from typing_extensions import Literal - -PY3: Literal[True] -text_type = str -binary_type = bytes -environb: Any diff --git a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/METADATA.toml index 690242a33..b3a8d04df 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/WebOb/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/WebOb/METADATA.toml @@ -1 +1,2 @@ version = "1.8.*" +upstream_repository = "https://github.com/Pylons/webob" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml deleted file mode 100644 index ac50477bb..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/METADATA.toml +++ /dev/null @@ -1,8 +0,0 @@ -version = "2.11.*" -upstream_repository = "https://github.com/python-babel/babel" -requires = ["types-pytz", "types-setuptools"] -obsolete_since = "2.12.1" # Released on 2023-02-28 -partial_stub = true - -[tool.stubtest] -ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/__init__.pyi deleted file mode 100644 index c046a8c08..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/__init__.pyi +++ /dev/null @@ -1,8 +0,0 @@ -from babel.core import ( - Locale as Locale, - UnknownLocaleError as UnknownLocaleError, - default_locale as default_locale, - get_locale_identifier as get_locale_identifier, - negotiate_locale as negotiate_locale, - parse_locale as parse_locale, -) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/core.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/core.pyi deleted file mode 100644 index cdca12ff1..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/core.pyi +++ /dev/null @@ -1,149 +0,0 @@ -from collections.abc import Iterable, Mapping -from typing import Any, overload -from typing_extensions import Literal, TypeAlias - -from babel.localedata import LocaleDataDict -from babel.plural import PluralRule - -class UnknownLocaleError(Exception): - identifier: str - def __init__(self, identifier: str) -> None: ... - -class Locale: - language: str - territory: str | None - script: str | None - variant: str | None - def __init__( - self, language: str, territory: str | None = None, script: str | None = None, variant: str | None = None - ) -> None: ... - @classmethod - def default(cls, category: str | None = None, aliases: Mapping[str, str] = ...) -> Locale: ... - @classmethod - def negotiate( - cls, preferred: Iterable[str], available: Iterable[str], sep: str = "_", aliases: Mapping[str, str] = ... - ) -> Locale | None: ... - @overload - @classmethod - def parse(cls, identifier: None, sep: str = "_", resolve_likely_subtags: bool = True) -> None: ... - @overload - @classmethod - def parse(cls, identifier: str | Locale, sep: str = "_", resolve_likely_subtags: bool = True) -> Locale: ... - def __eq__(self, other: object) -> bool: ... - def __ne__(self, other: object) -> bool: ... - def __hash__(self) -> int: ... - def get_display_name(self, locale: Locale | str | None = None) -> str | None: ... - @property - def display_name(self) -> str | None: ... - def get_language_name(self, locale: Locale | str | None = None) -> str | None: ... - @property - def language_name(self) -> str | None: ... - def get_territory_name(self, locale: Locale | str | None = None) -> str | None: ... - @property - def territory_name(self) -> str | None: ... - def get_script_name(self, locale: Locale | str | None = None) -> str | None: ... - @property - def script_name(self) -> str | None: ... - @property - def english_name(self) -> str | None: ... - @property - def languages(self) -> LocaleDataDict: ... - @property - def scripts(self) -> LocaleDataDict: ... - @property - def territories(self) -> LocaleDataDict: ... - @property - def variants(self) -> LocaleDataDict: ... - @property - def currencies(self) -> LocaleDataDict: ... - @property - def currency_symbols(self) -> LocaleDataDict: ... - @property - def number_symbols(self) -> LocaleDataDict: ... - @property - def decimal_formats(self) -> LocaleDataDict: ... - @property - def compact_decimal_formats(self) -> LocaleDataDict: ... - @property - def currency_formats(self) -> LocaleDataDict: ... - @property - def percent_formats(self) -> LocaleDataDict: ... - @property - def scientific_formats(self) -> LocaleDataDict: ... - @property - def periods(self) -> LocaleDataDict: ... - @property - def day_periods(self) -> LocaleDataDict: ... - @property - def day_period_rules(self) -> LocaleDataDict: ... - @property - def days(self) -> LocaleDataDict: ... - @property - def months(self) -> LocaleDataDict: ... - @property - def quarters(self) -> LocaleDataDict: ... - @property - def eras(self) -> LocaleDataDict: ... - @property - def time_zones(self) -> LocaleDataDict: ... - @property - def meta_zones(self) -> LocaleDataDict: ... - @property - def zone_formats(self) -> LocaleDataDict: ... - @property - def first_week_day(self) -> int: ... - @property - def weekend_start(self) -> int: ... - @property - def weekend_end(self) -> int: ... - @property - def min_week_days(self) -> int: ... - @property - def date_formats(self) -> LocaleDataDict: ... - @property - def time_formats(self) -> LocaleDataDict: ... - @property - def datetime_formats(self) -> LocaleDataDict: ... - @property - def datetime_skeletons(self) -> LocaleDataDict: ... - @property - def interval_formats(self) -> LocaleDataDict: ... - @property - def plural_form(self) -> PluralRule: ... - @property - def list_patterns(self) -> LocaleDataDict: ... - @property - def ordinal_form(self) -> PluralRule: ... - @property - def measurement_systems(self) -> LocaleDataDict: ... - @property - def character_order(self) -> str: ... - @property - def text_direction(self) -> str: ... - @property - def unit_display_names(self) -> LocaleDataDict: ... - -def default_locale(category: str | None = None, aliases: Mapping[str, str] = ...) -> str | None: ... -def negotiate_locale( - preferred: Iterable[str], available: Iterable[str], sep: str = "_", aliases: Mapping[str, str] = ... -) -> str | None: ... -def parse_locale(identifier: str, sep: str = "_") -> tuple[str, str | None, str | None, str | None]: ... -def get_locale_identifier(tup: tuple[str, str | None, str | None, str | None], sep: str = "_") -> str: ... -def get_global(key: _GLOBAL_KEY) -> Mapping[str, Any]: ... - -_GLOBAL_KEY: TypeAlias = Literal[ - "all_currencies", - "currency_fractions", - "language_aliases", - "likely_subtags", - "parent_exceptions", - "script_aliases", - "territory_aliases", - "territory_currencies", - "territory_languages", - "territory_zones", - "variant_aliases", - "windows_zone_mapping", - "zone_aliases", - "zone_territories", -] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/dates.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/dates.pyi deleted file mode 100644 index 8a679a445..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/dates.pyi +++ /dev/null @@ -1,182 +0,0 @@ -from collections.abc import Iterable -from datetime import date, datetime, time, timedelta, tzinfo -from typing import SupportsInt, overload -from typing_extensions import Literal, TypeAlias - -from babel.core import Locale -from babel.localedata import LocaleDataDict -from babel.util import LOCALTZ as LOCALTZ, UTC as UTC -from pytz import BaseTzInfo - -# The module contents here are organized the same way they are in the API documentation at -# http://babel.pocoo.org/en/latest/api/dates.html - -# Date and Time Formatting -_Instant: TypeAlias = date | time | float | None -_PredefinedTimeFormat: TypeAlias = Literal["full", "long", "medium", "short"] -_Context: TypeAlias = Literal["format", "stand-alone"] - -def format_datetime( - datetime: _Instant = None, - format: _PredefinedTimeFormat | str = "medium", - tzinfo: tzinfo | None = None, - locale: Locale | str | None = ..., -) -> str: ... -def format_date( - date: date | None = None, format: _PredefinedTimeFormat | str = "medium", locale: Locale | str | None = ... -) -> str: ... -def format_time( - time: time | datetime | float | None = None, - format: _PredefinedTimeFormat | str = "medium", - tzinfo: tzinfo | None = None, - locale: Locale | str | None = ..., -) -> str: ... -def format_timedelta( - delta: timedelta | int, - granularity: Literal["year", "month", "week", "day", "hour", "minute", "second"] = "second", - threshold: float = 0.85, - add_direction: bool = False, - format: Literal["narrow", "short", "medium", "long"] = "long", - locale: Locale | str | None = ..., -) -> str: ... -def format_skeleton( - skeleton: str, datetime: _Instant = None, tzinfo: tzinfo | None = None, fuzzy: bool = True, locale: Locale | str | None = ... -) -> str: ... -def format_interval( - start: _Instant, - end: _Instant, - skeleton: str | None = None, - tzinfo: tzinfo | None = None, - fuzzy: bool = True, - locale: Locale | str | None = ..., -) -> str: ... - -# Timezone Functionality -@overload -def get_timezone(zone: str | BaseTzInfo | None = None) -> BaseTzInfo: ... -@overload -def get_timezone(zone: tzinfo) -> tzinfo: ... -def get_timezone_gmt( - datetime: _Instant = None, - width: Literal["long", "short", "iso8601", "iso8601_short"] = "long", - locale: Locale | str | None = ..., - return_z: bool = False, -) -> str: ... - -_DtOrTzinfo: TypeAlias = datetime | tzinfo | str | int | time | None - -def get_timezone_location( - dt_or_tzinfo: _DtOrTzinfo = None, locale: Locale | str | None = ..., return_city: bool = False -) -> str: ... -def get_timezone_name( - dt_or_tzinfo: _DtOrTzinfo = None, - width: Literal["long", "short"] = "long", - uncommon: bool = False, - locale: Locale | str | None = ..., - zone_variant: Literal["generic", "daylight", "standard"] | None = None, - return_zone: bool = False, -) -> str: ... - -# Note: While Babel accepts any tzinfo for the most part, the get_next_timeout_transition() -# function requires a tzinfo that is produced by get_timezone()/pytz AND has DST info. -# The typing here will help you with the first requirement, but will not protect against -# pytz tzinfo's without DST info, like what you get from get_timezone("UTC") for instance. -def get_next_timezone_transition(zone: BaseTzInfo | None = None, dt: _Instant = None) -> TimezoneTransition: ... - -class TimezoneTransition: - # This class itself is not included in the documentation, yet it is mentioned by name. - # See https://github.com/python-babel/babel/issues/823 - activates: datetime - from_tzinfo: tzinfo - to_tzinfo: tzinfo - reference_date: datetime | None - def __init__( - self, activates: datetime, from_tzinfo: tzinfo, to_tzinfo: tzinfo, reference_date: datetime | None = None - ) -> None: ... - @property - def from_tz(self) -> str: ... - @property - def to_tz(self) -> str: ... - @property - def from_offset(self) -> int: ... - @property - def to_offset(self) -> int: ... - -# Data Access -def get_period_names( - width: Literal["abbreviated", "narrow", "wide"] = "wide", context: _Context = "stand-alone", locale: Locale | str | None = ... -) -> LocaleDataDict: ... -def get_day_names( - width: Literal["abbreviated", "narrow", "short", "wide"] = "wide", - context: _Context = "format", - locale: Locale | str | None = ..., -) -> LocaleDataDict: ... -def get_month_names( - width: Literal["abbreviated", "narrow", "wide"] = "wide", context: _Context = "format", locale: Locale | str | None = ... -) -> LocaleDataDict: ... -def get_quarter_names( - width: Literal["abbreviated", "narrow", "wide"] = "wide", context: _Context = "format", locale: Locale | str | None = ... -) -> LocaleDataDict: ... -def get_era_names( - width: Literal["abbreviated", "narrow", "wide"] = "wide", locale: Locale | str | None = ... -) -> LocaleDataDict: ... -def get_date_format(format: _PredefinedTimeFormat = "medium", locale: Locale | str | None = ...) -> DateTimePattern: ... -def get_datetime_format(format: _PredefinedTimeFormat = "medium", locale: Locale | str | None = ...) -> DateTimePattern: ... -def get_time_format(format: _PredefinedTimeFormat = "medium", locale: Locale | str | None = ...) -> DateTimePattern: ... - -class ParseError(ValueError): ... - -# Basic Parsing -def parse_date(string: str, locale: Locale | str | None = ..., format: _PredefinedTimeFormat = "medium") -> date: ... -def parse_time(string: str, locale: Locale | str | None = ..., format: _PredefinedTimeFormat = "medium") -> time: ... -def parse_pattern(pattern: str) -> DateTimePattern: ... - -# Undocumented -NO_INHERITANCE_MARKER: str -LC_TIME: str | None -date_ = date -datetime_ = datetime -time_ = time - -TIMEDELTA_UNITS: tuple[tuple[str, int], ...] - -def get_period_id( - time: _Instant, tzinfo: BaseTzInfo | None = None, type: Literal["selection"] | None = None, locale: Locale | str | None = ... -): ... - -class DateTimePattern: - pattern: str - format: DateTimeFormat - def __init__(self, pattern: str, format: DateTimeFormat) -> None: ... - def __mod__(self, other: DateTimeFormat) -> str: ... - def apply(self, datetime: _Instant, locale: Locale | str | None) -> str: ... - -class DateTimeFormat: - value: date | time - locale: Locale - def __init__(self, value: date | time, locale: Locale | str) -> None: ... - def __getitem__(self, name: str) -> str: ... - def extract(self, char: str) -> int: ... - def format_era(self, char: str, num: int) -> str: ... - def format_year(self, char: str, num: int) -> str: ... - def format_quarter(self, char: str, num: int) -> str: ... - def format_month(self, char: str, num: int) -> str: ... - def format_week(self, char: str, num: int) -> str: ... - def format_weekday(self, char: str = "E", num: int = 4) -> str: ... - def format_day_of_year(self, num: int) -> str: ... - def format_day_of_week_in_month(self) -> str: ... - def format_period(self, char: str, num: int) -> str: ... - def format_frac_seconds(self, num: int) -> str: ... - def format_milliseconds_in_day(self, num: int) -> str: ... - def format_timezone(self, char: str, num: int) -> str: ... - def format(self, value: SupportsInt, length: int) -> str: ... - def get_day_of_year(self, date: date | None = None) -> int: ... - def get_week_number(self, day_of_period: int, day_of_week: int | None = None) -> int: ... - -PATTERN_CHARS: dict[str, list[int] | None] -PATTERN_CHAR_ORDER: str - -def tokenize_pattern(pattern: str) -> list[tuple[str, str | tuple[str, int]]]: ... -def untokenize_pattern(tokens: Iterable[tuple[str, str | tuple[str, int]]]) -> str: ... -def split_interval_pattern(pattern: str) -> list[str]: ... -def match_skeleton(skeleton: str, options: Iterable[str], allow_different_fields: bool = False) -> str | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/languages.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/languages.pyi deleted file mode 100644 index d3b75c3e3..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/languages.pyi +++ /dev/null @@ -1,2 +0,0 @@ -def get_official_languages(territory: str, regional: bool = False, de_facto: bool = False) -> tuple[str, ...]: ... -def get_territory_language_info(territory: str) -> dict[str, dict[str, float | str | None]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/lists.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/lists.pyi deleted file mode 100644 index 8465f20eb..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/lists.pyi +++ /dev/null @@ -1,12 +0,0 @@ -from collections.abc import Iterable -from typing_extensions import Literal - -from babel.core import Locale - -DEFAULT_LOCALE: str | None - -def format_list( - lst: Iterable[str], - style: Literal["standard", "standard-short", "or", "or-short", "unit", "unit-short", "unit-narrow"] = "standard", - locale: Locale | str | None = ..., -) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localedata.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localedata.pyi deleted file mode 100644 index 67dc0716a..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localedata.pyi +++ /dev/null @@ -1,25 +0,0 @@ -from collections.abc import Iterable, Iterator, Mapping, MutableMapping -from os import PathLike -from typing import Any - -def normalize_locale(name: str) -> str | None: ... -def resolve_locale_filename(name: PathLike[str] | str) -> str: ... -def exists(name: str) -> bool: ... -def locale_identifiers() -> list[str]: ... -def load(name: PathLike[str] | str, merge_inherited: bool = True) -> dict[str, Any]: ... -def merge(dict1: MutableMapping[Any, Any], dict2: Mapping[Any, Any]) -> None: ... - -class Alias: - keys: tuple[str, ...] - def __init__(self, keys: Iterable[str]) -> None: ... - def resolve(self, data: Mapping[str, Any]) -> Mapping[str, Any]: ... - -class LocaleDataDict(MutableMapping[Any, Any]): - base: Mapping[str, Any] - def __init__(self, data: Mapping[str | int | None, Any], base: Mapping[str | int | None, Any] | None = None) -> None: ... - def __len__(self) -> int: ... - def __iter__(self) -> Iterator[str | int | None]: ... - def __getitem__(self, key: str | int | None) -> Any: ... - def __setitem__(self, key: str | int | None, value: Any) -> None: ... - def __delitem__(self, key: str | int | None) -> None: ... - def copy(self) -> LocaleDataDict: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/__init__.pyi deleted file mode 100644 index e3b772256..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/__init__.pyi +++ /dev/null @@ -1,17 +0,0 @@ -from datetime import datetime, timedelta, tzinfo - -from pytz import BaseTzInfo - -STDOFFSET: timedelta -DSTOFFSET: timedelta -DSTDIFF: timedelta -ZERO: timedelta - -class _FallbackLocalTimezone(tzinfo): - def utcoffset(self, dt: datetime | None) -> timedelta: ... - def dst(self, dt: datetime | None) -> timedelta: ... - def tzname(self, dt: datetime | None) -> str: ... - -def get_localzone() -> BaseTzInfo: ... - -LOCALTZ: BaseTzInfo | _FallbackLocalTimezone diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/_unix.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/_unix.pyi deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/_win32.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/_win32.pyi deleted file mode 100644 index 013330c9b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/localtime/_win32.pyi +++ /dev/null @@ -1,6 +0,0 @@ -from typing import Any - -tz_names: dict[str, str] - -def valuestodict(key) -> dict[str, Any]: ... -def get_localzone_name() -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/__init__.pyi deleted file mode 100644 index 71d6cecf5..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/__init__.pyi +++ /dev/null @@ -1 +0,0 @@ -from babel.messages.catalog import * diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/catalog.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/catalog.pyi deleted file mode 100644 index 3a156b3e0..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/catalog.pyi +++ /dev/null @@ -1,130 +0,0 @@ -import datetime -from collections import OrderedDict -from collections.abc import Generator, Iterable, Iterator -from typing_extensions import TypeAlias - -from babel.core import Locale - -__all__ = ["Message", "Catalog", "TranslationError"] - -_MessageID: TypeAlias = str | tuple[str, ...] | list[str] - -class Message: - id: _MessageID - string: _MessageID - locations: list[tuple[str, int]] - flags: set[str] - auto_comments: list[str] - user_comments: list[str] - previous_id: list[str] - lineno: int | None - context: str | None - def __init__( - self, - id: str, - string: str = "", - locations: Iterable[tuple[str, int]] = (), - flags: Iterable[str] = (), - auto_comments: Iterable[str] = (), - user_comments: Iterable[str] = (), - previous_id: _MessageID = (), - lineno: int | None = None, - context: str | None = None, - ) -> None: ... - def __cmp__(self, other: Message) -> int: ... - def __gt__(self, other: Message) -> bool: ... - def __lt__(self, other: Message) -> bool: ... - def __ge__(self, other: Message) -> bool: ... - def __le__(self, other: Message) -> bool: ... - def __eq__(self, other: object) -> bool: ... - def __ne__(self, other: object) -> bool: ... - def is_identical(self, other: Message) -> bool: ... - def clone(self) -> Message: ... - def check(self, catalog: Catalog | None = None) -> list[TranslationError]: ... - @property - def fuzzy(self) -> bool: ... - @property - def pluralizable(self) -> bool: ... - @property - def python_format(self) -> bool: ... - -class TranslationError(Exception): ... - -class Catalog: - domain: str | None - project: str - version: str - copyright_holder: str - msgid_bugs_address: str - last_translator: str - language_team: str - charset: str - creation_date: datetime.datetime | str - revision_date: datetime.datetime | datetime.time | float | str - fuzzy: bool - obsolete: OrderedDict[str | tuple[str, str], Message] - def __init__( - self, - locale: str | Locale | None = None, - domain: str | None = None, - header_comment: str | None = ..., - project: str | None = None, - version: str | None = None, - copyright_holder: str | None = None, - msgid_bugs_address: str | None = None, - creation_date: datetime.datetime | str | None = None, - revision_date: datetime.datetime | datetime.time | float | str | None = None, - last_translator: str | None = None, - language_team: str | None = None, - charset: str | None = None, - fuzzy: bool = True, - ) -> None: ... - @property - def locale(self) -> Locale | None: ... - @locale.setter # Assigning a string looks up the right Locale object. - def locale(self, value: Locale | str | None) -> None: ... - @property - def locale_identifier(self) -> str | None: ... - @property - def header_comment(self) -> str: ... - @header_comment.setter - def header_comment(self, value: str) -> None: ... - @property - def mime_headers(self) -> list[tuple[str, str]]: ... - @mime_headers.setter - def mime_headers(self, value: Iterable[tuple[str | bytes, str | bytes]]) -> None: ... - @property - def num_plurals(self) -> int: ... - @property - def plural_expr(self) -> str: ... - @property - def plural_forms(self) -> str: ... - def __contains__(self, id: _MessageID) -> bool: ... - def __len__(self) -> int: ... - def __iter__(self) -> Iterator[Message]: ... - def __delitem__(self, id: _MessageID) -> None: ... - def __getitem__(self, id: _MessageID) -> Message: ... - def __setitem__(self, id: _MessageID, message: Message) -> None: ... - def add( - self, - id: _MessageID, - string: _MessageID | None = None, - locations: Iterable[tuple[str, int]] = (), - flags: Iterable[str] = (), - auto_comments: Iterable[str] = (), - user_comments: Iterable[str] = (), - previous_id: _MessageID = (), - lineno: int | None = None, - context: str | None = None, - ) -> Message: ... - def check(self) -> Generator[tuple[Message, list[TranslationError]], None, None]: ... - def get(self, id: _MessageID, context: str | None = None): ... - def delete(self, id, context: str | None = None) -> None: ... - def update( - self, - template: Catalog, - no_fuzzy_matching: bool = False, - update_header_comment: bool = False, - keep_user_comments: bool = True, - ) -> None: ... - def is_identical(self, other: Catalog) -> bool: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/checkers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/checkers.pyi deleted file mode 100644 index f115ecb3c..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/checkers.pyi +++ /dev/null @@ -1,8 +0,0 @@ -from collections.abc import Callable - -from babel.messages.catalog import Catalog, Message - -def num_plurals(catalog: Catalog | None, message: Message) -> None: ... -def python_format(catalog: Catalog | None, message: Message) -> None: ... - -checkers: list[Callable[[Catalog | None, Message], object]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/extract.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/extract.pyi deleted file mode 100644 index 7c8bcb423..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/extract.pyi +++ /dev/null @@ -1,85 +0,0 @@ -from _typeshed import Incomplete, SupportsItems, SupportsRead, SupportsReadline -from collections.abc import Callable, Collection, Generator, Iterable, Mapping -from os import PathLike -from typing import Any, AnyStr, Protocol, overload -from typing_extensions import TypeAlias, TypedDict - -_Keyword: TypeAlias = tuple[int | tuple[int, int] | tuple[int, str], ...] | None - -GROUP_NAME: str -DEFAULT_KEYWORDS: dict[str, _Keyword] -DEFAULT_MAPPING: list[tuple[str, str]] -empty_msgid_warning: str - -@overload -def extract_from_dir( - dirname: AnyStr | PathLike[AnyStr], - method_map: Iterable[tuple[str, str]] = ..., - options_map: SupportsItems[str, dict[str, Any]] | None = None, - keywords: Mapping[str, _Keyword] = ..., - comment_tags: Collection[str] = (), - callback: Callable[[AnyStr, str, dict[str, Any]], object] | None = None, - strip_comment_tags: bool = False, - directory_filter: Callable[[str], bool] | None = None, -) -> Generator[tuple[AnyStr, int, str | tuple[str, ...], list[str], str | None], None, None]: ... -@overload -def extract_from_dir( - dirname: None = None, # No dirname causes os.getcwd() to be used, producing str. - method_map: Iterable[tuple[str, str]] = ..., - options_map: SupportsItems[str, dict[str, Any]] | None = None, - keywords: Mapping[str, _Keyword] = ..., - comment_tags: Collection[str] = (), - callback: Callable[[str, str, dict[str, Any]], object] | None = None, - strip_comment_tags: bool = False, - directory_filter: Callable[[str], bool] | None = None, -) -> Generator[tuple[str, int, str | tuple[str, ...], list[str], str | None], None, None]: ... -def check_and_call_extract_file( - filepath: AnyStr | PathLike[AnyStr], - method_map: Iterable[tuple[str, str]], - options_map: SupportsItems[str, dict[str, Any]], - callback: Callable[[AnyStr, str, dict[str, Any]], object] | None, - keywords: Mapping[str, _Keyword], - comment_tags: Collection[str], - strip_comment_tags, - dirpath: Incomplete | None = None, -) -> Generator[tuple[AnyStr, int, str | tuple[str, ...], list[str], str | None], None, None]: ... -def extract_from_file( - method, - filename: AnyStr | PathLike[AnyStr], - keywords: Mapping[str, _Keyword] = ..., - comment_tags: Collection[str] = (), - options: dict[str, Any] | None = None, - strip_comment_tags: bool = False, -) -> list[tuple[AnyStr, int, str | tuple[str, ...], list[str], str | None]]: ... - -class _FileObj(SupportsRead[bytes], SupportsReadline[bytes], Protocol): - def seek(self, __offset: int, __whence: int = ...) -> int: ... - def tell(self) -> int: ... - -def extract( - method, - fileobj: _FileObj, - keywords: Mapping[str, _Keyword] = ..., - comment_tags: Collection[str] = (), - options: dict[str, Any] | None = None, - strip_comment_tags: bool = False, -) -> Iterable[tuple[int, str | tuple[str, ...], list[str], str | None]]: ... -def extract_nothing( - fileobj: _FileObj, keywords: Mapping[str, _Keyword], comment_tags: Collection[str], options: dict[str, Any] -) -> Iterable[tuple[int, str | tuple[str, ...], list[str], str | None]]: ... - -class _PyOptions(TypedDict, total=False): - encoding: str - -def extract_python( - fileobj: _FileObj, keywords: Mapping[str, _Keyword], comment_tags: Collection[str], options: _PyOptions -) -> Iterable[tuple[int, str | tuple[str, ...], list[str], str | None]]: ... - -class _JSOptions(TypedDict, total=False): - encoding: str - jsx: bool - template_string: bool - -def extract_javascript( - fileobj: _FileObj, keywords: Mapping[str, _Keyword], comment_tags: Collection[str], options: _JSOptions -) -> Iterable[tuple[int, str | tuple[str, ...], list[str], str | None]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi deleted file mode 100644 index c20579b48..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/frontend.pyi +++ /dev/null @@ -1,120 +0,0 @@ -import abc -from _typeshed import Incomplete -from typing import Any - -from setuptools._distutils.cmd import Command as _Command - -def listify_value(arg, split: Incomplete | None = None): ... - -class Command(_Command, metaclass=abc.ABCMeta): - as_args: Any - multiple_value_options: Any - boolean_options: Any - option_aliases: Any - option_choices: Any - log: Any - distribution: Any - verbose: bool - force: Any - help: int - finalized: int - def __init__(self, dist: Incomplete | None = None) -> None: ... - -class compile_catalog(Command): - description: str - user_options: Any - boolean_options: Any - domain: str - directory: Any - input_file: Any - output_file: Any - locale: Any - use_fuzzy: bool - statistics: bool - def initialize_options(self) -> None: ... - def finalize_options(self) -> None: ... - def run(self): ... - -class extract_messages(Command): - description: str - user_options: Any - boolean_options: Any - as_args: str - multiple_value_options: Any - option_aliases: Any - option_choices: Any - charset: str - keywords: Any - no_default_keywords: bool - mapping_file: Any - no_location: bool - add_location: Any - omit_header: bool - output_file: Any - input_dirs: Any - input_paths: Any - width: Any - no_wrap: bool - sort_output: bool - sort_by_file: bool - msgid_bugs_address: Any - copyright_holder: Any - project: Any - version: Any - add_comments: Any - strip_comments: bool - include_lineno: bool - def initialize_options(self) -> None: ... - def finalize_options(self) -> None: ... - def run(self) -> None: ... - -def check_message_extractors(dist, name, value) -> None: ... - -class init_catalog(Command): - description: str - user_options: Any - boolean_options: Any - output_dir: Any - output_file: Any - input_file: Any - locale: Any - domain: str - no_wrap: bool - width: Any - def initialize_options(self) -> None: ... - def finalize_options(self) -> None: ... - def run(self) -> None: ... - -class update_catalog(Command): - description: str - user_options: Any - boolean_options: Any - domain: str - input_file: Any - output_dir: Any - output_file: Any - omit_header: bool - locale: Any - width: Any - no_wrap: bool - ignore_obsolete: bool - init_missing: bool - no_fuzzy_matching: bool - update_header_comment: bool - previous: bool - def initialize_options(self) -> None: ... - def finalize_options(self) -> None: ... - def run(self) -> None: ... - -class CommandLineInterface: - usage: str - version: Any - commands: Any - command_classes: Any - log: Any - parser: Any - def run(self, argv: Incomplete | None = None): ... - -def main(): ... -def parse_mapping(fileobj, filename: Incomplete | None = None): ... -def parse_keywords(strings=[]): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/jslexer.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/jslexer.pyi deleted file mode 100644 index 76628a084..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/jslexer.pyi +++ /dev/null @@ -1,26 +0,0 @@ -from collections.abc import Generator, Sequence -from re import Pattern -from typing import NamedTuple - -operators: Sequence[str] -escapes: dict[str, str] -name_re: Pattern[str] -dotted_name_re: Pattern[str] -division_re: Pattern[str] -regex_re: Pattern[str] -line_re: Pattern[str] -line_join_re: Pattern[str] -uni_escape_re: Pattern[str] - -class Token(NamedTuple): - type: str - value: str - lineno: int - -# Documented as private -def get_rules(jsx: bool, dotted: bool, template_string: bool) -> list[tuple[str | None, Pattern[str]]]: ... # undocumented -def indicates_division(token: Token) -> bool: ... -def unquote_string(string: str) -> str: ... -def tokenize( - source: str, jsx: bool = True, dotted: bool = True, template_string: bool = True -) -> Generator[Token, None, None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/mofile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/mofile.pyi deleted file mode 100644 index c58705f4e..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/mofile.pyi +++ /dev/null @@ -1,9 +0,0 @@ -from _typeshed import SupportsRead, SupportsWrite - -from babel.messages.catalog import Catalog - -LE_MAGIC: int -BE_MAGIC: int - -def read_mo(fileobj: SupportsRead[bytes]) -> Catalog: ... -def write_mo(fileobj: SupportsWrite[bytes], catalog: Catalog, use_fuzzy: bool = False) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/plurals.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/plurals.pyi deleted file mode 100644 index 4a5a87c69..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/plurals.pyi +++ /dev/null @@ -1,13 +0,0 @@ -LC_CTYPE: str -PLURALS: dict[str, tuple[int, str]] -DEFAULT_PLURAL: tuple[int, str] - -class _PluralTuple(tuple[int, str]): - @property - def num_plurals(self) -> int: ... - @property - def plural_expr(self) -> str: ... - @property - def plural_forms(self) -> str: ... - -def get_plural(locale: str | None = ...) -> _PluralTuple: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/pofile.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/pofile.pyi deleted file mode 100644 index 960021fcd..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/messages/pofile.pyi +++ /dev/null @@ -1,76 +0,0 @@ -from _typeshed import SupportsWrite -from collections.abc import Iterable -from re import Pattern - -from babel.core import Locale -from babel.messages.catalog import Catalog - -def unescape(string: str) -> str: ... -def denormalize(string: str) -> str: ... - -class PoFileError(Exception): - catalog: Catalog - line: str - lineno: int - def __init__(self, message: str, catalog: Catalog, line: str, lineno: int) -> None: ... - -class _NormalizedString: - def __init__(self, *args: str) -> None: ... - def append(self, s: str) -> None: ... - def denormalize(self) -> str: ... - def __bool__(self) -> bool: ... - def __cmp__(self, other: object) -> int: ... - def __gt__(self, other: object) -> bool: ... - def __lt__(self, other: object) -> bool: ... - def __ge__(self, other: object) -> bool: ... - def __le__(self, other: object) -> bool: ... - def __eq__(self, other: object) -> bool: ... - def __ne__(self, other: object) -> bool: ... - -class PoFileParser: - catalog: Catalog - ignore_obsolete: bool - counter: int - offset: int - abort_invalid: bool - # Internal variables: - messages: list[_NormalizedString] - # [index, string] lists - translations: list[list[int | _NormalizedString]] - locations: list[tuple[str, int | None]] - flags: list[str] - user_comments: list[str] - auto_comments: list[str] - context: str | None - obsolete: bool - in_msgid: bool - in_msgstr: bool - in_msgctxt: bool - def __init__(self, catalog, ignore_obsolete: bool = False, abort_invalid: bool = False) -> None: ... - def parse(self, fileobj: Iterable[str | bytes]) -> None: ... - -def read_po( - fileobj: Iterable[str | bytes], - locale: str | Locale | None = None, - domain: str | None = None, - ignore_obsolete: bool = False, - charset: str | None = None, - abort_invalid: bool = False, -) -> Catalog: ... - -WORD_SEP: Pattern[str] - -def escape(string: str) -> str: ... -def normalize(string: str, prefix: str = "", width: int = 76) -> str: ... -def write_po( - fileobj: SupportsWrite[bytes], - catalog: Catalog, - width: int | None = 76, - no_location: bool = False, - omit_header: bool = False, - sort_output: bool = False, - sort_by_file: bool = False, - ignore_obsolete: bool = False, - include_previous: bool = False, - include_lineno: bool = True, -) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/numbers.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/numbers.pyi deleted file mode 100644 index 5bc5c2136..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/numbers.pyi +++ /dev/null @@ -1,127 +0,0 @@ -import decimal -from datetime import date -from re import Pattern -from typing_extensions import Literal - -from babel.core import Locale - -long = int -LC_NUMERIC: str | None - -class UnknownCurrencyError(Exception): - identifier: str - def __init__(self, identifier: str) -> None: ... - -def list_currencies(locale: Locale | str | None = ...) -> set[str]: ... -def validate_currency(currency: str, locale: Locale | str | None = ...) -> None: ... -def is_currency(currency: str, locale: Locale | str | None = ...) -> bool: ... -def normalize_currency(currency: str, locale: Locale | str | None = ...) -> str | None: ... -def get_currency_name(currency: str, count: float | decimal.Decimal | None = None, locale: Locale | str | None = ...) -> str: ... -def get_currency_symbol(currency: str, locale: Locale | str | None = ...) -> str: ... -def get_currency_precision(currency: str) -> int: ... -def get_currency_unit_pattern(currency: str, count: float | None = None, locale: Locale | str | None = ...) -> str: ... -def get_territory_currencies( - territory: str, - start_date: date | None = None, - end_date: date | None = None, - tender: bool = True, - non_tender: bool = False, - include_details: bool = False, -) -> list[str]: ... -def get_decimal_symbol(locale: Locale | str | None = ...) -> str: ... -def get_plus_sign_symbol(locale: Locale | str | None = ...) -> str: ... -def get_minus_sign_symbol(locale: Locale | str | None = ...) -> str: ... -def get_exponential_symbol(locale: Locale | str | None = ...) -> str: ... -def get_group_symbol(locale: Locale | str | None = ...) -> str: ... -def format_number(number: float | decimal.Decimal | str, locale: Locale | str | None = ...) -> str: ... -def get_decimal_precision(number: decimal.Decimal) -> int: ... -def get_decimal_quantum(precision: int | decimal.Decimal) -> decimal.Decimal: ... -def format_decimal( - number: float | decimal.Decimal | str, - format: str | None = None, - locale: Locale | str | None = ..., - decimal_quantization: bool = True, - group_separator: bool = True, -): ... -def format_compact_decimal( - number: float, *, format_type: Literal["short", "long"] = "short", locale: Locale | str | None = ..., fraction_digits: int = 0 -) -> str: ... - -class UnknownCurrencyFormatError(KeyError): ... - -def format_currency( - number: float | decimal.Decimal | str, - currency: str, - format: str | None = None, - locale: Locale | str | None = ..., - currency_digits: bool = True, - format_type: Literal["name", "standard", "accounting"] = "standard", - decimal_quantization: bool = True, - group_separator: bool = True, -) -> str: ... -def format_percent( - number: float | decimal.Decimal | str, - format: str | None = None, - locale: Locale | str | None = ..., - decimal_quantization: bool = True, - group_separator: bool = True, -) -> str: ... -def format_scientific( - number: float | decimal.Decimal | str, - format: str | None = None, - locale: Locale | str | None = ..., - decimal_quantization: bool = True, -) -> str: ... - -class NumberFormatError(ValueError): - suggestions: str | None - def __init__(self, message: str, suggestions: str | None = None) -> None: ... - -def parse_number(string: str, locale: Locale | str | None = ...) -> int: ... -def parse_decimal(string: str, locale: Locale | str | None = ..., strict: bool = False) -> decimal.Decimal: ... - -PREFIX_END: str -NUMBER_TOKEN: str -PREFIX_PATTERN: str -NUMBER_PATTERN: str -SUFFIX_PATTERN: str -number_re: Pattern[str] - -def parse_grouping(p: str) -> tuple[int, int]: ... -def parse_pattern(pattern: NumberPattern | str) -> NumberPattern: ... - -class NumberPattern: - pattern: str - prefix: tuple[str, str] - suffix: tuple[str, str] - grouping: tuple[int, int] - int_prec: tuple[int, int] - frac_prec: tuple[int, int] - exp_prec: tuple[int, int] | None - exp_plus: bool | None - scale: Literal[0, 2, 3] - def __init__( - self, - pattern: str, - prefix: tuple[str, str], - suffix: tuple[str, str], - grouping: tuple[int, int], - int_prec: tuple[int, int], - frac_prec: tuple[int, int], - exp_prec: tuple[int, int] | None, - exp_plus: bool | None, - ) -> None: ... - def compute_scale(self) -> Literal[0, 2, 3]: ... - def scientific_notation_elements( - self, value: decimal.Decimal, locale: Locale | str | None - ) -> tuple[decimal.Decimal, int, str]: ... - def apply( - self, - value: float | decimal.Decimal, - locale: Locale | str | None, - currency: str | None = None, - currency_digits: bool = True, - decimal_quantization: bool = True, - force_frac: int | None = None, - group_separator: bool = True, - ) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/plural.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/plural.pyi deleted file mode 100644 index 1060597bd..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/plural.pyi +++ /dev/null @@ -1,99 +0,0 @@ -import decimal -from _typeshed import Incomplete -from collections.abc import Iterable, Mapping -from typing import Any - -def extract_operands(source: float | decimal.Decimal) -> tuple[decimal.Decimal, int, int, int, int, int, int, int]: ... - -class PluralRule: - abstract: list[Any] - def __init__(self, rules: Mapping[str, str] | Iterable[tuple[str, str]]) -> None: ... - @classmethod - def parse(cls, rules: Mapping[str, str] | Iterable[tuple[str, str]] | PluralRule) -> PluralRule: ... - @property - def rules(self) -> Mapping[str, str]: ... - @property - def tags(self) -> frozenset[str]: ... - def __call__(self, n: float | decimal.Decimal) -> str: ... - -def to_javascript(rule): ... -def to_python(rule): ... -def to_gettext(rule): ... -def in_range_list(num, range_list): ... -def within_range_list(num, range_list): ... -def cldr_modulo(a, b): ... - -class RuleError(Exception): ... - -def tokenize_rule(s): ... -def test_next_token(tokens, type_, value: Incomplete | None = None): ... -def skip_token(tokens, type_, value: Incomplete | None = None): ... -def value_node(value): ... -def ident_node(name): ... -def range_list_node(range_list): ... -def negate(rv): ... - -class _Parser: - tokens: Any - ast: Any - def __init__(self, string) -> None: ... - def expect(self, type_, value: Incomplete | None = None, term: Incomplete | None = None): ... - def condition(self): ... - def and_condition(self): ... - def relation(self): ... - def newfangled_relation(self, left): ... - def range_or_value(self): ... - def range_list(self): ... - def expr(self): ... - def value(self): ... - -compile_zero: Any - -class _Compiler: - def compile(self, arg): ... - compile_n: Any - compile_i: Any - compile_v: Any - compile_w: Any - compile_f: Any - compile_t: Any - compile_value: Any - compile_and: Any - compile_or: Any - compile_not: Any - compile_mod: Any - compile_is: Any - compile_isnot: Any - def compile_relation(self, method, expr, range_list) -> None: ... - -class _PythonCompiler(_Compiler): - compile_and: Any - compile_or: Any - compile_not: Any - compile_mod: Any - def compile_relation(self, method, expr, range_list): ... - -class _GettextCompiler(_Compiler): - compile_i: Any - compile_v: Any - compile_w: Any - compile_f: Any - compile_t: Any - def compile_relation(self, method, expr, range_list): ... - -class _JavaScriptCompiler(_GettextCompiler): - compile_i: Any - compile_v: Any - compile_w: Any - compile_f: Any - compile_t: Any - def compile_relation(self, method, expr, range_list): ... - -class _UnicodeCompiler(_Compiler): - compile_is: Any - compile_isnot: Any - compile_and: Any - compile_or: Any - compile_mod: Any - def compile_not(self, relation): ... - def compile_relation(self, method, expr, range_list, negated: bool = False): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/support.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/support.pyi deleted file mode 100644 index 14b027d14..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/support.pyi +++ /dev/null @@ -1,106 +0,0 @@ -import gettext -from _typeshed import Incomplete -from datetime import date as _date, datetime as _datetime, time as _time, timedelta as _timedelta -from decimal import Decimal -from typing import Any -from typing_extensions import Literal - -from babel.core import Locale -from pytz import BaseTzInfo - -from .dates import _PredefinedTimeFormat - -class Format: - locale: Locale - tzinfo: BaseTzInfo | None - def __init__(self, locale: Locale | str, tzinfo: BaseTzInfo | None = None) -> None: ... - def date(self, date: _date | None = None, format: _PredefinedTimeFormat | str = "medium") -> str: ... - def datetime(self, datetime: _date | None = None, format: _PredefinedTimeFormat | str = "medium") -> str: ... - def time(self, time: _time | _datetime | None = None, format: _PredefinedTimeFormat | str = "medium") -> str: ... - def timedelta( - self, - delta: _timedelta | int, - granularity: Literal["year", "month", "week", "day", "hour", "minute", "second"] = "second", - threshold: float = 0.85, - format: _PredefinedTimeFormat = "long", - add_direction: bool = False, - ) -> str: ... - def number(self, number: float | Decimal | str) -> str: ... - def decimal(self, number: float | Decimal | str, format: str | None = None) -> str: ... - def currency(self, number: float | Decimal | str, currency: str) -> str: ... - def percent(self, number: float | Decimal | str, format: str | None = None) -> str: ... - def scientific(self, number: float | Decimal | str) -> str: ... - -class LazyProxy: - def __init__(self, func, *args, **kwargs) -> None: ... - @property - def value(self): ... - def __contains__(self, key): ... - def __bool__(self) -> bool: ... - def __dir__(self): ... - def __iter__(self): ... - def __len__(self) -> int: ... - def __add__(self, other): ... - def __radd__(self, other): ... - def __mod__(self, other): ... - def __rmod__(self, other): ... - def __mul__(self, other): ... - def __rmul__(self, other): ... - def __call__(self, *args, **kwargs): ... - def __lt__(self, other): ... - def __le__(self, other): ... - def __eq__(self, other): ... - def __ne__(self, other): ... - def __gt__(self, other): ... - def __ge__(self, other): ... - def __delattr__(self, name: str) -> None: ... - def __getattr__(self, name: str): ... - def __setattr__(self, name: str, value) -> None: ... - def __delitem__(self, key) -> None: ... - def __getitem__(self, key): ... - def __setitem__(self, key, value) -> None: ... - def __copy__(self) -> LazyProxy: ... - def __deepcopy__(self, memo: Any) -> LazyProxy: ... - -class NullTranslations(gettext.NullTranslations): - DEFAULT_DOMAIN: Any - plural: Any - files: Any - domain: Any - def __init__(self, fp: Incomplete | None = None): ... - def dgettext(self, domain, message): ... - def ldgettext(self, domain, message): ... - def udgettext(self, domain, message): ... - dugettext: Any - def dngettext(self, domain, singular, plural, num): ... - def ldngettext(self, domain, singular, plural, num): ... - def udngettext(self, domain, singular, plural, num): ... - dungettext: Any - CONTEXT_ENCODING: str - def pgettext(self, context, message): ... - def lpgettext(self, context, message): ... - def npgettext(self, context, singular, plural, num): ... - def lnpgettext(self, context, singular, plural, num): ... - def upgettext(self, context, message): ... - def unpgettext(self, context, singular, plural, num): ... - def dpgettext(self, domain, context, message): ... - def udpgettext(self, domain, context, message): ... - dupgettext: Any - def ldpgettext(self, domain, context, message): ... - def dnpgettext(self, domain, context, singular, plural, num): ... - def udnpgettext(self, domain, context, singular, plural, num): ... - dunpgettext: Any - def ldnpgettext(self, domain, context, singular, plural, num): ... - ugettext: Any - ungettext: Any - -class Translations(NullTranslations, gettext.GNUTranslations): - DEFAULT_DOMAIN: str - domain: Any - def __init__(self, fp: Incomplete | None = None, domain: Incomplete | None = None) -> None: ... - ugettext: Any - ungettext: Any - @classmethod - def load(cls, dirname: Incomplete | None = None, locales: Incomplete | None = None, domain: Incomplete | None = None): ... - def add(self, translations, merge: bool = True): ... - def merge(self, translations): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/units.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/units.pyi deleted file mode 100644 index dfb4f7d1b..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/units.pyi +++ /dev/null @@ -1,27 +0,0 @@ -import decimal -from typing_extensions import Literal - -from babel.core import Locale - -class UnknownUnitError(ValueError): - def __init__(self, unit: str, locale: Locale) -> None: ... - -def get_unit_name( - measurement_unit: str, length: Literal["short", "long", "narrow"] = "long", locale: Locale | str | None = ... -) -> str: ... -def format_unit( - value: float | decimal.Decimal, - measurement_unit: str, - length: Literal["short", "long", "narrow"] = "long", - format: str | None = None, - locale: Locale | str | None = ..., -) -> str: ... -def format_compound_unit( - numerator_value: float | decimal.Decimal, - numerator_unit: str | None = None, - denominator_value: float | decimal.Decimal = 1, - denominator_unit: str | None = None, - length: Literal["short", "long", "narrow"] = "long", - format: str | None = None, - locale: Locale | str | None = ..., -) -> str | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/util.pyi b/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/util.pyi deleted file mode 100644 index ea7994c31..000000000 --- a/packages/pyright-internal/typeshed-fallback/stubs/babel/babel/util.pyi +++ /dev/null @@ -1,46 +0,0 @@ -import collections -import textwrap -from collections.abc import Generator, Iterable -from datetime import timedelta, tzinfo -from re import Pattern -from typing import IO, Any, TypeVar - -from babel import localtime as localtime -from pytz import BaseTzInfo - -missing: object - -_T = TypeVar("_T") - -def distinct(iterable: Iterable[_T]) -> Generator[_T, None, None]: ... - -PYTHON_MAGIC_COMMENT_re: Pattern[bytes] - -def parse_encoding(fp: IO[bytes]) -> str | None: ... - -PYTHON_FUTURE_IMPORT_re: Pattern[str] - -def parse_future_flags(fp: IO[bytes], encoding: str = "latin-1") -> int: ... -def pathmatch(pattern: str, filename: str) -> bool: ... - -class TextWrapper(textwrap.TextWrapper): - wordsep_re: Pattern[str] - -def wraptext(text, width: int = 70, initial_indent: str = "", subsequent_indent: str = ""): ... - -odict = collections.OrderedDict - -class FixedOffsetTimezone(tzinfo): - zone: str - def __init__(self, offset: float, name: str | None = None) -> None: ... - def utcoffset(self, dt: Any) -> timedelta: ... - def tzname(self, dt: Any) -> str: ... - def dst(self, dt: Any) -> timedelta: ... - -UTC: BaseTzInfo -LOCALTZ: BaseTzInfo -get_localzone = localtime.get_localzone -STDOFFSET: timedelta -DSTOFFSET: timedelta -DSTDIFF: timedelta -ZERO: timedelta diff --git a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml index 9be859b59..bfa9247a7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/beautifulsoup4/METADATA.toml @@ -1,4 +1,5 @@ version = "4.12.*" +upstream_repository = "https://git.launchpad.net/beautifulsoup/tree" requires = ["types-html5lib"] partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml index 8fb64e259..b5cad7abd 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/braintree/METADATA.toml @@ -1,4 +1,5 @@ version = "4.21.*" +upstream_repository = "https://github.com/braintree/braintree_python" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml index 3a9cb22e1..6bd875a85 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/cffi/METADATA.toml @@ -1,4 +1,5 @@ version = "1.15.*" +upstream_repository = "https://foss.heptapod.net/pypy/cffi" requires = ["types-setuptools"] [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/click-default-group/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/click-default-group/METADATA.toml new file mode 100644 index 000000000..6475e9bc7 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/click-default-group/METADATA.toml @@ -0,0 +1,4 @@ +version = "1.2.*" +# requires a version of click with a py.typed +requires = ["click>=8.0.0"] +upstream_repository = "https://github.com/click-contrib/click-default-group" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/click-default-group/click_default_group.pyi b/packages/pyright-internal/typeshed-fallback/stubs/click-default-group/click_default_group.pyi new file mode 100644 index 000000000..992f3b43f --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/click-default-group/click_default_group.pyi @@ -0,0 +1,41 @@ +import typing as t +from _typeshed import Incomplete + +import click + +__version__: str + +class DefaultGroup(click.Group): + ignore_unknown_options: bool + default_cmd_name: str | None + default_if_no_args: bool + def __init__(self, *args, **kwargs) -> None: ... + def set_default_command(self, command: click.Command) -> None: ... + def parse_args(self, ctx: click.Context, args: list[str]) -> list[str]: ... + def get_command(self, ctx: click.Context, cmd_name: str) -> click.Command | None: ... + def resolve_command(self, ctx: click.Context, args: list[str]) -> tuple[str | None, click.Command | None, list[str]]: ... + def format_commands(self, ctx: click.Context, formatter: click.HelpFormatter) -> None: ... + def command(self, *args, **kwargs) -> click.Command: ... # incomplete + +class DefaultCommandFormatter: + group: click.Group + formatter: click.HelpFormatter + mark: str + def __init__(self, group: click.Group, formatter: click.HelpFormatter, mark: str = ...) -> None: ... + def write_dl(self, rows: t.Sequence[tuple[str, str]], col_max: int = 30, col_spacing: int = -2) -> None: ... + def __getattr__(self, attr: str) -> Incomplete: ... + # __getattr__ used to ala-derive from click.HelpFormatter: + # indent_increment: int + # width: int | None + # current_indent: int + # buffer: t.List[str] + # def write(self, string: str) -> None: ... + # def indent(self) -> None: ... + # def dedent(self) -> None: ... + # def write_usage(self, prog: str, args: str = ..., prefix: str | None = ...) -> None: ... + # def write_heading(self, heading: str) -> None: ... + # def write_paragraph(self) -> None: ... + # def write_text(self, text: str) -> None: ... + # def section(self, name: str) -> t.Iterator[None]: ... + # def indentation(self) -> t.Iterator[None]: ... + # def getvalue(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docopt/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/docopt/METADATA.toml index 03031f1e9..275fa883d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docopt/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/docopt/METADATA.toml @@ -1 +1,2 @@ version = "0.6.*" +upstream_repository = "https://github.com/docopt/docopt" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/docutils/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/docutils/METADATA.toml index 647482d55..03effc9d7 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/docutils/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/docutils/METADATA.toml @@ -1,4 +1,5 @@ version = "0.20.*" +upstream_repository = "https://sourceforge.net/p/docutils/code" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/gdb/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/gdb/METADATA.toml index a0d8f2902..dc8b117e3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/gdb/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/gdb/METADATA.toml @@ -1,4 +1,7 @@ version = "12.1.*" +# This is the official web portal for GDB, +# see https://sourceware.org/gdb/current/ for other ways of obtaining the source code. +upstream_repository = "https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree" extra_description = """\ Type hints for GDB's \ [Python API](https://sourceware.org/gdb/onlinedocs/gdb/Python-API.html). \ diff --git a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml index 2337e58a1..715653337 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.1.*" +version = "2.2.*" upstream_repository = "https://github.com/googleapis/python-ndb" partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/client.pyi index 09812a7ff..8b7e65d98 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/client.pyi @@ -14,12 +14,14 @@ class Client: client_info: Incomplete secure: bool stub: Incomplete + database: str | None def __init__( self, project: str | None = ..., namespace: str | None = ..., credentials: Incomplete | None = ..., client_options: Incomplete | None = ..., + database: str | None = None, ) -> None: ... @contextmanager def context( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/key.pyi b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/key.pyi index 5139ae1b7..292e5dd9d 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/key.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/key.pyi @@ -18,6 +18,7 @@ class Key: def namespace(self): ... def project(self): ... app: Any + def database(self) -> str | None: ... def id(self): ... def string_id(self): ... def integer_id(self): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/model.pyi b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/model.pyi index 1d272f020..38b2eeeca 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/model.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/model.pyi @@ -320,6 +320,7 @@ class Model(_NotEqualMixin, metaclass=MetaModel): max_memcache_items: int | None = ..., force_writes: bool | None = ..., _options=..., + database: str | None = None, ) -> Model | None: ... @classmethod def get_by_id_async( @@ -344,6 +345,7 @@ class Model(_NotEqualMixin, metaclass=MetaModel): max_memcache_items: int | None = ..., force_writes: bool | None = ..., _options=..., + database: str | None = None, ) -> tasklets_module.Future: ... @classmethod def get_or_insert( diff --git a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/query.pyi b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/query.pyi index 12da5f4f1..74748626c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/query.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/google-cloud-ndb/google/cloud/ndb/query.pyi @@ -91,6 +91,7 @@ OR = DisjunctionNode class QueryOptions(_options.ReadOptions): project: Any namespace: Any + database: str | None def __init__(self, config: Incomplete | None = ..., context: Incomplete | None = ..., **kwargs) -> None: ... class Query: @@ -106,6 +107,7 @@ class Query: keys_only: Any projection: Any distinct_on: Any + database: str | None def __init__( self, kind: Incomplete | None = ..., diff --git a/packages/pyright-internal/typeshed-fallback/stubs/greenlet/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/greenlet/METADATA.toml new file mode 100644 index 000000000..3e0cb4f94 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/greenlet/METADATA.toml @@ -0,0 +1,2 @@ +version = "2.0.*" +upstream_repository = "https://github.com/python-greenlet/greenlet" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/greenlet/greenlet/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/greenlet/greenlet/__init__.pyi new file mode 100644 index 000000000..8fe0be636 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/greenlet/greenlet/__init__.pyi @@ -0,0 +1,9 @@ +from ._greenlet import ( + _C_API as _C_API, + GreenletExit as GreenletExit, + error as error, + getcurrent as getcurrent, + gettrace as gettrace, + greenlet as greenlet, + settrace as settrace, +) diff --git a/packages/pyright-internal/typeshed-fallback/stubs/greenlet/greenlet/_greenlet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/greenlet/greenlet/_greenlet.pyi new file mode 100644 index 000000000..e3ec8a53c --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/greenlet/greenlet/_greenlet.pyi @@ -0,0 +1,74 @@ +from collections.abc import Callable +from contextvars import Context +from types import FrameType, TracebackType +from typing import Any, Protocol, overload +from typing_extensions import Literal, TypeAlias + +_TraceEvent: TypeAlias = Literal["switch", "throw"] +_TraceCallback: TypeAlias = Callable[[_TraceEvent, tuple[greenlet, greenlet]], object] + +CLOCKS_PER_SEC: int +GREENLET_USE_CONTEXT_VARS: bool +GREENLET_USE_GC: bool +GREENLET_USE_STANDARD_THREADING: bool +GREENLET_USE_TRACING: bool +# this is a PyCapsule, it may be used to pass the gevent C-API to another C-extension +# there isn't a runtime type for this, since it's only an opaque wrapper around void* +# but it's probably still better than pretending it doesn't exist, so people that need +# to pass this around, can still pass it around without having to ignore type errors... +_C_API: object + +class _ParentDescriptor(Protocol): + def __get__(self, obj: greenlet, owner: type[greenlet] | None = None) -> greenlet | None: ... + def __set__(self, obj: greenlet, value: greenlet) -> None: ... + +class GreenletExit(BaseException): ... +class error(Exception): ... + +class greenlet: + @property + def dead(self) -> bool: ... + @property + def gr_context(self) -> Context | None: ... + @gr_context.setter + def gr_context(self, value: Context | None) -> None: ... + @property + def gr_frame(self) -> FrameType | None: ... + # the parent attribute is a bit special, since it can't be set to `None` manually, but + # it can be `None` for the master greenlet which will always be around, regardless of + # how many greenlets have been spawned explicitly. Since there can only be one such + # greenlet per thread, there is no way to create another one manually. + parent: _ParentDescriptor + @property + def run(self) -> Callable[..., Any]: ... + @run.setter + def run(self, value: Callable[..., Any]) -> None: ... + def __init__(self, run: Callable[..., Any] | None = None, parent: greenlet | None = None) -> None: ... + def switch(self, *args: Any, **kwargs: Any) -> Any: ... + @overload + def throw( + self, __typ: type[BaseException] = ..., __val: BaseException | object = None, __tb: TracebackType | None = None + ) -> Any: ... + @overload + def throw(self, __typ: BaseException = ..., __val: None = None, __tb: TracebackType | None = None) -> Any: ... + def __bool__(self) -> bool: ... + + # aliases for some module attributes/methods + GreenletExit: type[GreenletExit] + error: type[error] + @staticmethod + def getcurrent() -> greenlet: ... + @staticmethod + def gettrace() -> _TraceCallback | None: ... + @staticmethod + def settrace(__callback: _TraceCallback | None) -> _TraceCallback | None: ... + +def enable_optional_cleanup(__enabled: bool) -> None: ... +def get_clocks_used_doing_optional_cleanup() -> int: ... +def get_pending_cleanup_count() -> int: ... +def get_total_main_greenlets() -> int: ... +def get_tstate_trash_delete_nesting() -> int: ... +def getcurrent() -> greenlet: ... +def gettrace() -> _TraceCallback | None: ... +def set_thread_local(__key: object, __value: object) -> None: ... +def settrace(__callback: _TraceCallback | None) -> _TraceCallback | None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml index f37098fcf..84c775a54 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/hdbcli/METADATA.toml @@ -1 +1,2 @@ version = "2.17.*" +# upstream_repository = closed-source diff --git a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/METADATA.toml index 21700a749..c8518e705 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/humanfriendly/METADATA.toml @@ -1,4 +1,5 @@ version = "10.0.*" +upstream_repository = "https://github.com/xolox/python-humanfriendly" [tool.stubtest] stubtest_requirements = ["docutils", "mock"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/ibm-db/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/ibm-db/METADATA.toml index 84307529a..e02e23ad3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/ibm-db/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/ibm-db/METADATA.toml @@ -1 +1,2 @@ version = "3.1.*" +upstream_repository = "https://github.com/ibmdb/python-ibmdb" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/inifile/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/inifile/METADATA.toml index 582104d3a..ff2e16bd4 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/inifile/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/inifile/METADATA.toml @@ -1 +1,2 @@ version = "0.4.*" +upstream_repository = "https://github.com/mitsuhiko/python-inifile" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/mypy_extensions.pyi b/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/mypy_extensions.pyi index 8565793c2..ab0e3cf84 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/mypy_extensions.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/mypy-extensions/mypy_extensions.pyi @@ -28,8 +28,16 @@ class _TypedDict(Mapping[str, object], metaclass=abc.ABCMeta): def values(self) -> dict_values[str, object]: ... def __delitem__(self, k: Never) -> None: ... if sys.version_info >= (3, 9): - def __or__(self, __other: Self) -> Self: ... - def __ior__(self, __other: Self) -> Self: ... + @overload + def __or__(self, __value: Self) -> Self: ... + @overload + def __or__(self, __value: dict[str, Any]) -> dict[str, object]: ... + @overload + def __ror__(self, __value: Self) -> Self: ... + @overload + def __ror__(self, __value: dict[str, Any]) -> dict[str, object]: ... + # supposedly incompatible definitions of `__or__` and `__ior__`: + def __ior__(self, __value: Self) -> Self: ... # type: ignore[misc] def TypedDict(typename: str, fields: dict[str, type[Any]], total: bool = ...) -> type[dict[str, Any]]: ... @overload diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml index af3b0230e..cb4138c9f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/METADATA.toml @@ -1,6 +1,2 @@ version = "3.1.*" upstream_repository = "https://foss.heptapod.net/openpyxl/openpyxl" -partial_stub = true - -[tool.stubtest] -ignore_missing_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/__init__.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/__init__.pyi index c252e6d9c..e72969903 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/__init__.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/__init__.pyi @@ -12,4 +12,5 @@ from ._constants import ( __version__ as __version__, ) +DEBUG: bool open = load_workbook diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi index 0100282c0..0732bccea 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/cell/rich_text.pyi @@ -4,6 +4,7 @@ from typing_extensions import Literal, Self from openpyxl.cell.text import InlineFont from openpyxl.descriptors import Strict, String, Typed +from openpyxl.descriptors.serialisable import _ChildSerialisableTreeElement class TextBlock(Strict): font: Typed[InlineFont, Literal[False]] @@ -18,7 +19,7 @@ class CellRichText(list[str | TextBlock]): @overload def __init__(self, *args: str | TextBlock) -> None: ... @classmethod - def from_tree(cls, node) -> Self: ... + def from_tree(cls, node: _ChildSerialisableTreeElement) -> Self: ... def __add__(self, arg: Iterable[str | TextBlock]) -> CellRichText: ... # type: ignore[override] def append(self, arg: str | TextBlock) -> None: ... def extend(self, arg: Iterable[str | TextBlock]) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi index 1d8505dce..a95939182 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/chart/chartspace.pyi @@ -91,7 +91,7 @@ class ChartSpace(Serialisable): protection: Typed[Protection, Literal[True]] chart: Typed[ChartContainer, Literal[False]] spPr: Typed[GraphicalProperties, Literal[True]] - graphicalProperties: Alias + graphical_properties: Alias txPr: Typed[RichText, Literal[True]] textProperties: Alias externalData: Typed[ExternalData, Literal[True]] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi index 7bf24ad9d..fc4dcdaf3 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/excel.pyi @@ -1,13 +1,11 @@ from _typeshed import Incomplete -from typing import ClassVar, TypeVar +from typing import ClassVar from typing_extensions import Literal from . import Integer, MatchPattern, MinMax, Strict, String +from .base import _M, _N from .serialisable import Serialisable -_N = TypeVar("_N", bound=bool) -_M = TypeVar("_M", int, float) - class HexBinary(MatchPattern[str, Incomplete]): pattern: str diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi index 333a592a2..ff2176f25 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/sequence.pyi @@ -9,12 +9,17 @@ from .base import Alias, Descriptor class Sequence(Descriptor[Incomplete]): expected_type: type[Incomplete] - seq_types: Incomplete + seq_types: tuple[type, ...] idx_base: int unique: bool + container: type def __set__(self, instance: Serialisable | Strict, seq) -> None: ... def to_tree(self, tagname, obj, namespace: str | None = None) -> Generator[Incomplete, None, None]: ... +class UniqueSequence(Sequence): + seq_types: tuple[type, ...] + container: type + class ValueSequence(Sequence): attribute: str def to_tree(self, tagname, obj, namespace: str | None = None) -> Generator[Incomplete, None, None]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi index d2ecf72e0..3afff355f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi @@ -1,10 +1,16 @@ -from _typeshed import Incomplete -from typing import Any, ClassVar, NoReturn +from _typeshed import Incomplete, SupportsIter +from typing import Any, ClassVar, NoReturn, Protocol from typing_extensions import Final from openpyxl.descriptors import MetaSerialisable -from ..xml._functions_overloads import _HasTagAndTextAndAttrib +from ..xml._functions_overloads import _HasAttrib, _HasTagAndGet, _HasText + +# For any override directly re-using Serialisable.from_tree +class _ChildSerialisableTreeElement(_HasAttrib, _HasText, SupportsIter[Incomplete], Protocol): ... + +class _SerialisableTreeElement(_HasTagAndGet[Incomplete], _ChildSerialisableTreeElement, Protocol): + def find(self, __path: str) -> Incomplete | None: ... KEYWORDS: Final[frozenset[str]] seq_types: Final[tuple[type[list[Any]], type[tuple[Any, ...]]]] @@ -20,8 +26,12 @@ class Serialisable(metaclass=MetaSerialisable): @property def tagname(self) -> str | NoReturn: ... namespace: ClassVar[str | None] + # Note: To respect the Liskov substitution principle, the protocol for node includes all child class requirements + # See comment in xml/functions.pyi as to why use a protocol instead of Element + # Child classes should be more precise than _SerialisableTreeElement ! + # Use _ChildSerialisableTreeElement instead for child classes that reuse Serialisable.from_tree directly. @classmethod - def from_tree(cls, node: _HasTagAndTextAndAttrib): ... + def from_tree(cls, node: _SerialisableTreeElement): ... def to_tree(self, tagname: str | None = None, idx: Incomplete | None = None, namespace: str | None = None): ... def __iter__(self): ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi index 59af9e6eb..6f27a7a32 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/pivot/table.pyi @@ -953,3 +953,6 @@ class TableDefinition(Serialisable): def to_tree(self): ... @property def path(self): ... + def formatted_fields(self) -> dict[Incomplete, list[Incomplete]]: ... + @property + def summary(self) -> str: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/excel.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/excel.pyi index 4747182a4..7464059aa 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/excel.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/excel.pyi @@ -37,6 +37,7 @@ class ExcelReader: def read_strings(self) -> None: ... def read_workbook(self) -> None: ... def read_properties(self) -> None: ... + def read_custom(self) -> None: ... def read_theme(self) -> None: ... def read_chartsheet(self, sheet: Chartsheet, rel: Relationship) -> None: ... def read_worksheets(self) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/strings.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/strings.pyi index 932a8b6f3..3d6b247de 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/strings.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/reader/strings.pyi @@ -1 +1,6 @@ -def read_string_table(xml_source): ... +from xml.etree.ElementTree import _FileRead + +from openpyxl.cell.rich_text import CellRichText + +def read_string_table(xml_source: _FileRead) -> list[str]: ... +def read_rich_text(xml_source: _FileRead) -> list[CellRichText | str]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/formulas.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/formulas.pyi index 6d16169b1..af0607318 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/formulas.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/utils/formulas.pyi @@ -1,3 +1,5 @@ from typing_extensions import Final FORMULAE: Final[frozenset[str]] + +def validate(formula: str) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_reader.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_reader.pyi index 840801abb..4d3cf8f0c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_reader.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/_reader.pyi @@ -3,6 +3,9 @@ from _typeshed import Incomplete from collections.abc import Container, Generator from typing_extensions import Final +from openpyxl.cell.rich_text import CellRichText +from openpyxl.descriptors.serialisable import _ChildSerialisableTreeElement + from .hyperlink import HyperlinkList from .pagebreak import ColBreak, RowBreak from .protection import SheetProtection @@ -37,6 +40,8 @@ DATA_TAG: Final[str] DIMENSION_TAG: Final[str] CUSTOM_VIEWS_TAG: Final[str] +def parse_richtext_string(element: _ChildSerialisableTreeElement) -> CellRichText | str: ... + class WorkSheetParser: min_row: Incomplete | None min_col: Incomplete | None diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi index 1c6e0f61d..68e7bfbd9 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/cell_range.pyi @@ -79,6 +79,7 @@ class MultiCellRange(Strict): ranges: Incomplete def __init__(self, ranges=...) -> None: ... def __contains__(self, coord): ... + def sorted(self) -> list[CellRange]: ... def add(self, coord) -> None: ... def __iadd__(self, coord): ... def __eq__(self, other): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi index a53c503f1..96489745c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/worksheet/filters.pyi @@ -1,11 +1,14 @@ from _typeshed import Incomplete, Unused from datetime import datetime +from re import Pattern from typing import ClassVar, overload from typing_extensions import Literal, TypeAlias +from openpyxl.descriptors import Strict from openpyxl.descriptors.base import ( Alias, Bool, + Convertible, DateTime, Float, Integer, @@ -21,6 +24,8 @@ from openpyxl.descriptors.base import ( from openpyxl.descriptors.excel import ExtensionList from openpyxl.descriptors.serialisable import Serialisable +from ..descriptors.base import _N + _SortConditionSortBy: TypeAlias = Literal["value", "cellColor", "fontColor", "icon"] _IconSet: TypeAlias = Literal[ "3Arrows", @@ -167,6 +172,18 @@ class DynamicFilter(Serialisable): maxValIso: datetime | str | None = None, ) -> None: ... +class CustomFilterValueDescriptor(Convertible[float | str, _N]): + pattern: Pattern[str] + expected_type: type[float | str] + @overload # type:ignore[override] # Different restrictions + def __set__( + self: CustomFilterValueDescriptor[Literal[True]], instance: Serialisable | Strict, value: str | _ConvertibleToFloat | None + ) -> None: ... + @overload + def __set__( + self: CustomFilterValueDescriptor[Literal[False]], instance: Serialisable | Strict, value: str | _ConvertibleToFloat + ) -> None: ... + class CustomFilter(Serialisable): tagname: ClassVar[str] operator: NoneSet[_CustomFilterOperator] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/_functions_overloads.pyi b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/_functions_overloads.pyi index be1fb7a04..06437d35f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/_functions_overloads.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/openpyxl/openpyxl/xml/_functions_overloads.pyi @@ -20,13 +20,14 @@ class _HasTag(Protocol): class _HasText(Protocol): text: str +class _HasAttrib(Protocol): + attrib: Iterable[Any] # AnyOf[dict[str, str], Iterable[tuple[str, str]]] + class _HasTagAndGet(_HasTag, Protocol[_T_co]): def get(self, __value: str) -> _T_co | None: ... class _HasTagAndText(_HasTag, _HasText, Protocol): ... # noqa: Y046 - -class _HasTagAndTextAndAttrib(_HasTag, _HasText, Protocol): # noqa: Y046 - attrib: Iterable[Any] # AnyOf[dict[str, str], Iterable[tuple[str, str]]] +class _HasTagAndTextAndAttrib(_HasTag, _HasText, _HasAttrib, Protocol): ... # noqa: Y046 class _ParentElement(Protocol[_T]): def makeelement(self, __tag: str, __attrib: dict[str, str]) -> _T: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/METADATA.toml index 6cf9fae44..11a8c8820 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/paho-mqtt/METADATA.toml @@ -1 +1,2 @@ version = "1.6.*" +upstream_repository = "https://github.com/eclipse/paho.mqtt.python" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml index 5379b3f6e..5c20bdcce 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/METADATA.toml @@ -1,4 +1,4 @@ -version = "3.2.*" +version = "3.3.*" upstream_repository = "https://github.com/paramiko/paramiko" # Requires a version of cryptography where cryptography.hazmat.primitives.ciphers.Cipher is generic requires = ["cryptography>=37.0.0"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi index 460c37c05..ae59ad2ec 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_client.pyi @@ -53,9 +53,21 @@ class SFTPClient(BaseSFTP, ClosingContextManager): def put( self, localpath: StrOrBytesPath, remotepath: bytes | str, callback: _Callback | None = None, confirm: bool = True ) -> SFTPAttributes: ... - def getfo(self, remotepath: bytes | str, fl: IO[bytes], callback: _Callback | None = None, prefetch: bool = True) -> int: ... + def getfo( + self, + remotepath: bytes | str, + fl: IO[bytes], + callback: _Callback | None = None, + prefetch: bool = True, + max_concurrent_prefetch_requests: int | None = None, + ) -> int: ... def get( - self, remotepath: bytes | str, localpath: StrOrBytesPath, callback: _Callback | None = None, prefetch: bool = True + self, + remotepath: bytes | str, + localpath: StrOrBytesPath, + callback: _Callback | None = None, + prefetch: bool = True, + max_concurrent_prefetch_requests: int | None = None, ) -> None: ... class SFTP(SFTPClient): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi index afe4bfd47..56a740e06 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/paramiko/paramiko/sftp_file.pyi @@ -27,5 +27,7 @@ class SFTPFile(BufferedFile[Any]): def truncate(self, size: int) -> None: ... def check(self, hash_algorithm: str, offset: int = 0, length: int = 0, block_size: int = 0) -> bytes: ... def set_pipelined(self, pipelined: bool = True) -> None: ... - def prefetch(self, file_size: int | None = None) -> None: ... - def readv(self, chunks: Sequence[tuple[int, int]]) -> Iterator[bytes]: ... + def prefetch(self, file_size: int | None = None, max_concurrent_requests: int | None = None) -> None: ... + def readv( + self, chunks: Sequence[tuple[int, int]], max_concurrent_prefetch_requests: int | None = None + ) -> Iterator[bytes]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/passlib/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/passlib/METADATA.toml index ef7966007..c1eabfd07 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/passlib/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/passlib/METADATA.toml @@ -1 +1,2 @@ version = "1.7.*" +upstream_repository = "https://foss.heptapod.net/python-libs/passlib" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/METADATA.toml index ef6637ec5..c484c720f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pexpect/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pexpect/METADATA.toml @@ -1 +1,2 @@ version = "4.8.*" +upstream_repository = "https://github.com/pexpect/pexpect" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/METADATA.toml index 28d94736f..01c72968f 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/METADATA.toml @@ -1,5 +1,6 @@ -version = "4.23.*" -extra_description = "Generated with aid from mypy-protobuf v3.4.0" +version = "4.24.*" +upstream_repository = "https://github.com/protocolbuffers/protobuf" +extra_description = "Generated with aid from [mypy-protobuf](https://github.com/nipunn1313/mypy-protobuf) v3.4.0" partial_stub = true [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/descriptor_pool.pyi b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/descriptor_pool.pyi index 25939e479..00be66656 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/descriptor_pool.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/descriptor_pool.pyi @@ -8,7 +8,6 @@ class DescriptorPool: def Add(self, file_desc_proto): ... def AddSerializedFile(self, serialized_file_desc_proto): ... def AddDescriptor(self, desc): ... - def AddEnumDescriptor(self, enum_desc): ... def AddServiceDescriptor(self, service_desc): ... def AddExtensionDescriptor(self, extension): ... def AddFileDescriptor(self, file_desc): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/message_factory.pyi b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/message_factory.pyi index 4368ce132..e9009393a 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/message_factory.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/protobuf/google/protobuf/message_factory.pyi @@ -12,4 +12,6 @@ class MessageFactory: def GetPrototype(self, descriptor: Descriptor) -> type[Message]: ... def GetMessages(self, files: Iterable[str]) -> dict[str, type[Message]]: ... +def GetMessageClass(descriptor: Descriptor) -> type[Message]: ... +def GetMessageClassesForFiles(files: Iterable[str], pool: DescriptorPool) -> dict[str, type[Message]]: ... def GetMessages(file_protos: Iterable[FileDescriptorProto], pool: DescriptorPool | None = ...) -> dict[str, type[Message]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyaudio/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyaudio/METADATA.toml index 477c39829..68f013087 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyaudio/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyaudio/METADATA.toml @@ -1,4 +1,6 @@ version = "0.2.*" +# There is no web portal for the source, this is the official source link: +# upstream_repository = "https://people.csail.mit.edu/hubert/pyaudio/#sources" [tool.stubtest] # linux and win32 are equivalent diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pycurl/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pycurl/METADATA.toml index 6a7699667..a50bf4154 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pycurl/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pycurl/METADATA.toml @@ -1,4 +1,5 @@ version = "7.45.2" +upstream_repository = "https://github.com/pycurl/pycurl" [tool.stubtest] # Install on Windows requires building PycURL from source diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml index 7e4226433..4e2e82587 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/METADATA.toml @@ -1,4 +1,4 @@ -version = "3.0.*" +version = "3.1.*" upstream_repository = "https://github.com/PyCQA/pyflakes" partial_stub = true diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/checker.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/checker.pyi index 4bf58bc5b..11262b692 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/checker.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/checker.pyi @@ -1,6 +1,7 @@ import ast import sys from collections.abc import Callable, Iterable, Iterator +from contextlib import contextmanager from re import Pattern from typing import Any, ClassVar, TypeVar, overload from typing_extensions import Literal, ParamSpec, TypeAlias @@ -12,7 +13,6 @@ _F = TypeVar("_F", bound=_AnyFunction) _P = ParamSpec("_P") _T = TypeVar("_T") -PY38_PLUS: bool PYPY: bool def getAlternatives(n: ast.If | ast.Try) -> list[ast.AST]: ... @@ -120,6 +120,7 @@ class FunctionScope(Scope): def unused_assignments(self) -> Iterator[tuple[str, Binding]]: ... def unused_annotations(self) -> Iterator[tuple[str, Annotation]]: ... +class TypeScope(Scope): ... class GeneratorScope(Scope): ... class ModuleScope(Scope): ... class DoctestScope(ModuleScope): ... @@ -169,6 +170,13 @@ else: _MatchAs: TypeAlias = Any _MatchOr: TypeAlias = Any +if sys.version_info >= (3, 12): + _TypeVar: TypeAlias = ast.TypeVar + _TypeAlias: TypeAlias = ast.TypeAlias +else: + _TypeVar: TypeAlias = Any + _TypeAlias: TypeAlias = Any + class Checker: nodeDepth: int offset: tuple[int, int] | None @@ -189,8 +197,6 @@ class Checker: file_tokens: tuple[Any, ...] = (), ) -> None: ... def deferFunction(self, callable: _AnyFunction) -> None: ... - def deferAssignment(self, callable: _AnyFunction) -> None: ... - def runDeferred(self, deferred: _AnyFunction) -> None: ... @property def futuresAllowed(self) -> bool: ... @futuresAllowed.setter @@ -201,9 +207,9 @@ class Checker: def annotationsFutureEnabled(self, value: Literal[True]) -> None: ... @property def scope(self) -> Scope: ... - def popScope(self) -> None: ... + @contextmanager + def in_scope(self, cls: Callable[[], Scope]) -> Iterator[None]: ... def checkDeadScopes(self) -> None: ... - def pushScope(self, scopeClass: type[Scope] = ...) -> None: ... def report(self, messageClass: Callable[_P, Message], *args: _P.args, **kwargs: _P.kwargs) -> None: ... def getParent(self, node: ast.AST) -> ast.AST: ... def getCommonAncestor(self, lnode: ast.AST, rnode: ast.AST, stop: ast.AST) -> ast.AST: ... @@ -222,6 +228,7 @@ class Checker: def handleNode(self, node: ast.AST | None, parent) -> None: ... def handleDoctests(self, node: ast.AST) -> None: ... def handleStringAnnotation(self, s: str, node: ast.AST, ref_lineno: int, ref_col_offset: int, err: type[Message]) -> None: ... + def handle_annotation_always_deferred(self, annotation: ast.AST, parent: ast.AST) -> None: ... def handleAnnotation(self, annotation: ast.AST, node: ast.AST) -> None: ... def ignore(self, node: ast.AST) -> None: ... def DELETE(self, tree: ast.Delete, omit: _OmitType = None) -> None: ... @@ -245,12 +252,6 @@ class Checker: def CALL(self, node: ast.Call) -> None: ... def BINOP(self, node: ast.BinOp) -> None: ... def CONSTANT(self, node: ast.Constant) -> None: ... - if sys.version_info < (3, 8): - def NUM(self, node: ast.Num) -> None: ... - def BYTES(self, node: ast.Bytes) -> None: ... - def ELLIPSIS(self, node: ast.Ellipsis) -> None: ... - - def STR(self, node: ast.Str) -> None: ... def SLICE(self, tree: ast.Slice, omit: _OmitType = None) -> None: ... def EXTSLICE(self, tree: ast.ExtSlice, omit: _OmitType = None) -> None: ... def INDEX(self, tree: ast.Index, omit: _OmitType = None) -> None: ... @@ -336,3 +337,5 @@ class Checker: def MATCHAS(self, node: _MatchAs) -> None: ... def MATCHMAPPING(self, node: _MatchMapping) -> None: ... def MATCHSTAR(self, node: _MatchStar) -> None: ... + def TYPEVAR(self, node: _TypeVar) -> None: ... + def TYPEALIAS(self, node: _TypeAlias) -> None: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/messages.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/messages.pyi index c0b3b0d65..07371e582 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/messages.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pyflakes/pyflakes/messages.pyi @@ -83,7 +83,6 @@ class ReturnOutsideFunction(Message): ... class YieldOutsideFunction(Message): ... class ContinueOutsideLoop(Message): ... class BreakOutsideLoop(Message): ... -class ContinueInFinally(Message): ... class DefaultExceptNotLast(Message): ... class TwoStarredExpressions(Message): ... class TooManyExpressionsInStarredAssignment(Message): ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/METADATA.toml index 7431acfe0..03ac98d97 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/python-nmap/METADATA.toml @@ -1 +1,2 @@ version = "0.7.*" +upstream_repository = "https://bitbucket.org/xael/python-nmap" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pytz/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/pytz/METADATA.toml index 7c6bf92b0..334d21947 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pytz/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/pytz/METADATA.toml @@ -1 +1,3 @@ version = "2023.3" +# This is a mirror of https://git.launchpad.net/pytz/tree, see https://pythonhosted.org/pytz/#latest-versions +upstream_repository = "https://github.com/stub42/pytz" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/_win32typing.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/_win32typing.pyi index 9d730bbd4..c36b758ba 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/_win32typing.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/_win32typing.pyi @@ -1173,22 +1173,14 @@ class PyMSG: ... @final class PyNETRESOURCE: - @property - def dwScope(self) -> int: ... - @property - def dwType(self) -> int: ... - @property - def dwDisplayType(self) -> int: ... - @property - def dwUsage(self) -> int: ... - @property - def lpComment(self): ... - @property - def lpLocalName(self): ... - @property - def lpProvider(self): ... - @property - def lpRemoteName(self): ... + dwScope: int + dwType: int + dwDisplayType: int + dwUsage: int + lpComment: str | None + lpLocalName: str | None + lpProvider: str | None + lpRemoteName: str | None class PyNET_VALIDATE_AUTHENTICATION_INPUT_ARG: ... class PyNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32wnet.pyi b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32wnet.pyi index 320fac3a2..799284d64 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32wnet.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/pywin32/win32/win32wnet.pyi @@ -12,7 +12,7 @@ def WNetAddConnection2( Flags: int = ..., ) -> None: ... def WNetAddConnection3( - HwndParent: int, + HwndParent: int | _win32typing.PyHANDLE, NetResource: _win32typing.PyNETRESOURCE, Password: Incomplete | None = ..., UserName: Incomplete | None = ..., @@ -20,8 +20,8 @@ def WNetAddConnection3( ) -> None: ... def WNetCancelConnection2(name: str, flags, force) -> None: ... def WNetOpenEnum(scope, _type, usage, resource: _win32typing.PyNETRESOURCE) -> int: ... -def WNetCloseEnum(handle: int) -> None: ... -def WNetEnumResource(handle: int, maxExtries: int = ...) -> list[_win32typing.PyNETRESOURCE]: ... +def WNetCloseEnum(handle: _win32typing.PyHANDLE) -> None: ... +def WNetEnumResource(handle: _win32typing.PyHANDLE, maxExtries: int = ...) -> list[_win32typing.PyNETRESOURCE]: ... def WNetGetUser(connection: str | None = ...) -> str: ... def WNetGetUniversalName(localPath: str, infoLevel) -> str: ... def WNetGetResourceInformation(NetResource: _win32typing.PyNETRESOURCE) -> tuple[_win32typing.PyNETRESOURCE, Incomplete]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml index d0a5aacf9..9f95df0df 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/regex/METADATA.toml @@ -1,2 +1,2 @@ -version = "2023.6.3" +version = "2023.8.8" upstream_repository = "https://github.com/mrabarnett/mrab-regex" diff --git a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/METADATA.toml index 1fd4f42eb..7df358b65 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/s2clientprotocol/METADATA.toml @@ -1,2 +1,3 @@ version = "5.*" +upstream_repository = "https://github.com/Blizzard/s2client-proto" requires = ["types-protobuf"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/METADATA.toml index 3c8564d17..b24cf310c 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.65.*" +version = "4.66.*" upstream_repository = "https://github.com/tqdm/tqdm" [tool.stubtest] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/utils.pyi b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/utils.pyi index 4ddc65781..f18408e60 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/utils.pyi +++ b/packages/pyright-internal/typeshed-fallback/stubs/tqdm/tqdm/utils.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete -from collections.abc import Callable +from collections.abc import Callable, Mapping from re import Pattern from typing import Protocol, TypeVar from typing_extensions import ParamSpec @@ -53,3 +53,6 @@ class CallbackIOWrapper(ObjectWrapper): def disp_len(data: str) -> int: ... def disp_trim(data: str, length: int) -> str: ... +def envwrap( + prefix: str, types: Mapping[str, Callable[[Incomplete], Incomplete]] | None = None, is_method: bool = False +) -> Callable[[Callable[_P, _R]], Callable[_P, _R]]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/uWSGI/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/uWSGI/METADATA.toml new file mode 100644 index 000000000..9807d0b14 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/uWSGI/METADATA.toml @@ -0,0 +1,15 @@ +version = "2.0.*" +upstream_repository = "https://github.com/unbit/uwsgi" +extra_description = """\ + Type hints for uWSGI's \ + [Python API](https://uwsgi-docs.readthedocs.io/en/latest/PythonModule.html). \ + Note that this API is available only when running Python code inside a uWSGI process \ + and some parts of the API are only present when corresponding configuration options \ + have been enabled. +""" + +[tool.stubtest] +# Run stubtest on MacOS as well, to check that the +# uWSGI-specific parts of stubtest_third_party.py +# also work there +platforms = ["linux", "darwin"] diff --git a/packages/pyright-internal/typeshed-fallback/stubs/uWSGI/uwsgi.pyi b/packages/pyright-internal/typeshed-fallback/stubs/uWSGI/uwsgi.pyi new file mode 100644 index 000000000..7a7bd2dca --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/uWSGI/uwsgi.pyi @@ -0,0 +1,240 @@ +from _typeshed import HasFileno, OptExcInfo, ReadOnlyBuffer +from _typeshed.wsgi import WSGIApplication +from collections.abc import Callable +from types import ModuleType +from typing import Any, Protocol, overload +from typing_extensions import Literal, Self, TypeAlias, final + +import uwsgidecorators + +_TrueOrNone: TypeAlias = Literal[True] | None + +class _RPCCallable(Protocol): + def __call__(self, *args: bytes) -> bytes | None: ... + +# FIXME: Technically we know the exact layout of _AppsDict and _WorkerDict +# but TypedDict does not support bytes keys, so for now we use type +# aliases to a more generic dict +_WorkerDict: TypeAlias = dict[bytes, Any] + +SPOOL_IGNORE: Literal[0] +SPOOL_OK: Literal[-2] +SPOOL_RETRY: Literal[-1] +applications: dict[str, WSGIApplication | str] | None +buffer_size: int +cores: int +has_threads: int +hostname: bytes +is_a_reload: bool +loop: bytes | None +magic_table: dict[bytes, bytes] +numproc: int +opt: dict[str, bytes | Literal[True] | list[bytes | Literal[True]]] +sockets: list[int] +started_on: int +unbit: _TrueOrNone +version: bytes +version_info: tuple[int, int, int, int, bytes] +spoolers: tuple[bytes, ...] +queue_size: int + +decorators = uwsgidecorators +spooler = uwsgidecorators.manage_spool_request +post_fork_hook = uwsgidecorators.postfork_chain_hook + +@final +class SymbolsImporter: + def find_module(self, __fullname: str) -> Self | None: ... + def load_module(self, __fullname: str) -> ModuleType | None: ... + +@final +class SymbolsZipImporter: + def __init__(self, __name: str) -> None: ... + def find_module(self, __fullname: str) -> Self | None: ... + def load_module(self, __fullname: str) -> ModuleType | None: ... + +@final +class ZipImporter: + def __init__(self, __name: str) -> None: ... + def find_module(self, __fullname: str) -> Self | None: ... + def load_module(self, __fullname: str) -> ModuleType | None: ... + +def accepting(__accepting: bool = True) -> None: ... +def add_cron(__signum: int, __minute: int, __hour: int, __day: int, __month: int, __weekday: int) -> Literal[True]: ... +def add_file_monitor(__signum: int, __filename: str) -> None: ... +def add_rb_timer(__signum: int, __seconds: int, __iterations: int = 0) -> None: ... +def add_timer(__signum: int, __seconds: int) -> None: ... +def add_var(__key: bytes | str, __val: bytes | str) -> Literal[True]: ... +def alarm(__alarm: str, __msg: bytes | ReadOnlyBuffer | str) -> None: ... +def async_connect(__socket_name: str) -> int: ... +def async_sleep(__timeout: float) -> Literal[b""]: ... +def cache_clear(__cache_name: str = ...) -> _TrueOrNone: ... +def cache_dec(__key: str | bytes, __decrement: int = 1, __expires: int = 0, __cache_name: str = ...) -> _TrueOrNone: ... +def cache_del(__key: str | bytes, __cache_name: str = ...) -> _TrueOrNone: ... +def cache_div(__key: str | bytes, __divisor: int = 2, __expires: int = 0, __cache_name: str = ...) -> _TrueOrNone: ... +def cache_exists(__key: str | bytes, __cache_name: str = ...) -> _TrueOrNone: ... +def cache_get(__key: str | bytes, __cache_name: str = ...) -> bytes | None: ... +def cache_inc(__key: str | bytes, __increment: int = 1, __expires: int = 0, __cache_name: str = ...) -> _TrueOrNone: ... +def cache_keys(__cache_name: str = ...) -> list[bytes]: ... +def cache_mul(__key: str | bytes, __factor: int = 2, __expires: int = 0, __cache_name: str = ...) -> _TrueOrNone: ... +def cache_num(__key: str | bytes, __cache_name: str = ...) -> int: ... +def cache_set( + __key: str | bytes, __value: str | bytes | ReadOnlyBuffer, __expires: int = 0, __cache_name: str = ... +) -> _TrueOrNone: ... +def cache_update( + __key: str | bytes, __value: str | bytes | ReadOnlyBuffer, __expires: int = 0, __cache_name: str = ... +) -> _TrueOrNone: ... +def queue_get(__index: int) -> bytes | None: ... +def queue_set(__index: int, __message: str | bytes | ReadOnlyBuffer) -> _TrueOrNone: ... +@overload +def queue_last(__num: Literal[0] = 0) -> bytes | None: ... # type:ignore[misc] +@overload +def queue_last(__num: int) -> list[bytes | None]: ... +def queue_push(__message: str | bytes | ReadOnlyBuffer) -> _TrueOrNone: ... +def queue_pull() -> bytes | None: ... +def queue_pop() -> bytes | None: ... +def queue_slot() -> int: ... +def queue_pull_slot() -> int: ... +def snmp_set_community(__snmp_community: str) -> Literal[True]: ... +def snmp_set_counter32(__oid_num: int, __value: int) -> _TrueOrNone: ... +def snmp_set_counter64(__oid_num: int, __value: int) -> _TrueOrNone: ... +def snmp_set_gauge(__oid_num: int, __value: int) -> _TrueOrNone: ... +def snmp_incr_counter32(__oid_num: int, __increment: int) -> _TrueOrNone: ... +def snmp_incr_counter64(__oid_num: int, __increment: int) -> _TrueOrNone: ... +def snmp_incr_gauge(__oid_num: int, __increment: int) -> _TrueOrNone: ... +def snmp_decr_counter32(__oid_num: int, __decrement: int) -> _TrueOrNone: ... +def snmp_decr_counter64(__oid_num: int, __decrement: int) -> _TrueOrNone: ... +def snmp_decr_gauge(__oid_num: int, __decrement: int) -> _TrueOrNone: ... +@overload +def send_to_spooler(__mesage_dict: dict[bytes, bytes]) -> bytes | None: ... +@overload +def send_to_spooler( + *, spooler: bytes = ..., priority: bytes = ..., at: bytes = ..., body: bytes = ..., **kwargs: bytes +) -> bytes | None: ... + +spool = send_to_spooler + +def set_spooler_frequency(__frequency: int) -> Literal[True]: ... +def spooler_jobs() -> list[bytes]: ... +def spooler_pid() -> int: ... +def spooler_pids() -> list[int]: ... +def spooler_get_task(__task_path: str) -> dict[bytes, bytes] | None: ... +def call(__rpc_name: str, *args: bytes) -> bytes | None: ... +def chunked_read(__timeout: int = 0) -> bytes: ... +def chunked_read_nb() -> bytes: ... +def cl() -> int: ... +def close(__fd: int) -> None: ... +def connect(__socket_name: str, timeout: int = 0) -> int: ... +def connection_fd() -> int: ... +def disconnect() -> None: ... +def embedded_data(__name: str) -> bytes: ... +def extract(__name: str) -> bytes | None: ... +def farm_get_msg() -> bytes | None: ... +def farm_msg(__farm_name: str, __message: str | bytes | ReadOnlyBuffer) -> None: ... +def get_logvar(__key: str | bytes) -> bytes | None: ... +def green_schedule() -> Literal[True]: ... +def i_am_the_lord(__legion_name: str) -> bool: ... +def i_am_the_spooler() -> _TrueOrNone: ... +def in_farm(__farm_name: str = ...) -> _TrueOrNone: ... +def is_connected(__fd: int) -> bool: ... +def is_locked(__lock_num: int = 0) -> bool: ... +def listen_queue(__id: int = 0) -> int: ... +def lock(__lock_num: int = 0) -> None: ... +def log(__logline: str) -> Literal[True]: ... +def log_this_request() -> None: ... +def logsize() -> int: ... +def lord_scroll(__legion_name: str) -> bytes | None: ... +def masterpid() -> int: ... +def mem() -> tuple[int, int]: ... +def metric_dec(__key: str, __decrement: int = 1) -> _TrueOrNone: ... +def metric_div(__key: str, __divisor: int = 1) -> _TrueOrNone: ... +def metric_get(__key: str) -> int: ... +def metric_inc(__key: str, __increment: int = 1) -> _TrueOrNone: ... +def metric_mul(__key: str, __factor: int = 1) -> _TrueOrNone: ... +def metric_set(__key: str, __value: int = 1) -> _TrueOrNone: ... +def metric_set_max(__key: str, __value: int = 1) -> _TrueOrNone: ... +def metric_set_min(__key: str, __value: int = 1) -> _TrueOrNone: ... +def micros() -> int: ... +def mule_get_msg(signals: bool = True, farms: bool = True, buffer_size: int = 65536, timeout: int = -1) -> bytes: ... +def mule_id() -> int: ... +@overload +def mule_msg(__mesage: str | bytes | ReadOnlyBuffer) -> bool: ... +@overload +def mule_msg(__mesage: str | bytes | ReadOnlyBuffer, __mule_id: int) -> bool: ... +@overload +def mule_msg(__mesage: str | bytes | ReadOnlyBuffer, __farm_name: str) -> bool: ... +def offload(__filename: str, __len: int = 0) -> Literal[b""]: ... +def parsefile(__filename: str) -> dict[bytes, bytes] | None: ... +def ready() -> _TrueOrNone: ... +def ready_fd() -> int: ... +def recv(__fd: int, __max_size: int = 4096) -> bytes | None: ... +@overload +def register_rpc(__name: str, __func: Callable[[], bytes | None]) -> Literal[True]: ... +@overload +def register_rpc(__name: str, __func: Callable[[bytes], bytes | None], arg_count: Literal[1]) -> Literal[True]: ... +@overload +def register_rpc(__name: str, __func: Callable[[bytes, bytes], bytes | None], arg_count: Literal[2]) -> Literal[True]: ... +@overload +def register_rpc(__name: str, __func: _RPCCallable, arg_count: int) -> Literal[True]: ... +def register_signal(__signum: int, __who: str, __handler: Callable[[int], Any]) -> None: ... +def reload() -> _TrueOrNone: ... +def request_id() -> int: ... +def route(__router_name: str, __router_args: str) -> int: ... +def rpc(__node: str | bytes, __rpc_name: bytes, *rpc_args: bytes) -> bytes | None: ... +def rpc_list() -> tuple[bytes, ...]: ... +def scrolls(__legion_name: str) -> list[bytes] | None: ... +@overload +def send(__data: bytes) -> _TrueOrNone: ... +@overload +def send(__fd: int, __data: bytes) -> _TrueOrNone: ... +def sendfile( + __filename_or_fd: str | bytes | int | HasFileno, __chunk: int = 0, __pos: int = 0, filesize: int = 0 +) -> _TrueOrNone: ... +def set_logvar(__key: str | bytes, __val: str | bytes) -> None: ... +def set_user_harakiri(__seconds: int) -> None: ... +def set_warning_message(__message: str) -> Literal[True]: ... +def setprocname(__name: str) -> None: ... +def signal(__signum: int = ..., __node: str = ...) -> None: ... +def signal_received() -> int: ... +def signal_registered(__signum: int) -> _TrueOrNone: ... +def signal_wait(__signum: int = ...) -> Literal[b""]: ... +def start_response( + __status: str, __headers: list[tuple[str, str]], __exc_info: OptExcInfo | None = ... +) -> Callable[[bytes], None]: ... +def stop() -> _TrueOrNone: ... +def suspend() -> Literal[True]: ... +def total_requests() -> int: ... +def unlock(__lock_num: int = 0) -> None: ... +def wait_fd_read(__fd: int, __timeout: int = 0) -> Literal[b""]: ... +def wait_fd_write(__fd: int, __timeout: int = 0) -> Literal[b""]: ... +def websocket_handshake(__key: str | bytes = ..., __origin: str | bytes = ..., __proto: str | bytes = ...) -> None: ... +def websocket_recv() -> bytes: ... +def websocket_recv_nb() -> bytes: ... +def websocket_send(message: str | bytes | ReadOnlyBuffer) -> None: ... +def websocket_send_binary(message: str | bytes | ReadOnlyBuffer) -> None: ... +def worker_id() -> int: ... +def workers() -> tuple[_WorkerDict, ...] | None: ... +def sharedarea_read(__id: int, __position: int, __length: int) -> bytes: ... +def sharedarea_write(__id: int, __position: int, __value: str | bytes | ReadOnlyBuffer) -> None: ... +def sharedarea_readbyte(__id: int, __position: int) -> int: ... +def sharedarea_writebyte(__id: int, __position: int, __value: int) -> None: ... +def sharedarea_read8(__id: int, __position: int) -> int: ... +def sharedarea_write8(__id: int, __position: int, __value: int) -> None: ... +def sharedarea_readlong(__id: int, __position: int) -> int: ... +def sharedarea_writelong(__id: int, __position: int, __value: int) -> None: ... +def sharedarea_read64(__id: int, __position: int) -> int: ... +def sharedarea_write64(__id: int, __position: int, __value: int) -> None: ... +def sharedarea_read32(__id: int, __position: int) -> int: ... +def sharedarea_write32(__id: int, __position: int, __value: int) -> None: ... +def sharedarea_read16(__id: int, __position: int) -> int: ... +def sharedarea_write16(__id: int, __position: int, __value: int) -> None: ... +def sharedarea_inclong(__id: int, __position: int, __increment: int = 1) -> None: ... +def sharedarea_inc64(__id: int, __position: int, __increment: int = 1) -> None: ... +def sharedarea_inc32(__id: int, __position: int, __increment: int = 1) -> None: ... +def sharedarea_dec64(__id: int, __position: int, __decrement: int = 1) -> None: ... +def sharedarea_dec32(__id: int, __position: int, __decrement: int = 1) -> None: ... +def sharedarea_rlock(__id: int) -> None: ... +def sharedarea_wlock(__id: int) -> None: ... +def sharedarea_unlock(__id: int) -> None: ... +def sharedarea_object(__id: int) -> bytearray: ... +def sharedarea_memoryview(__id: int) -> memoryview: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/uWSGI/uwsgidecorators.pyi b/packages/pyright-internal/typeshed-fallback/stubs/uWSGI/uwsgidecorators.pyi new file mode 100644 index 000000000..4936f57e0 --- /dev/null +++ b/packages/pyright-internal/typeshed-fallback/stubs/uWSGI/uwsgidecorators.pyi @@ -0,0 +1,180 @@ +from collections.abc import Callable +from typing import Any, Generic, TypeVar, overload +from typing_extensions import Literal, ParamSpec + +from uwsgi import _RPCCallable + +_T = TypeVar("_T") +_T2 = TypeVar("_T2") +_SR = TypeVar("_SR", bound=Literal[0, -1, -2] | None) +_SignalCallbackT = TypeVar("_SignalCallbackT", bound=Callable[[int], Any]) +_RPCCallableT = TypeVar("_RPCCallableT", bound=_RPCCallable) +_P = ParamSpec("_P") +_P2 = ParamSpec("_P2") + +spooler_functions: dict[str, Callable[..., Literal[0, -1, -2] | None]] +mule_functions: dict[str, Callable[..., Any]] +postfork_chain: list[Callable[[], None]] + +def get_free_signal() -> int: ... +def manage_spool_request(vars: dict[bytes, Any]) -> Literal[0, -1, -2]: ... +def postfork_chain_hook() -> None: ... + +class postfork(Generic[_P, _T]): + wid: int + f: Callable[_P, _T] | None + @overload + def __init__(self: postfork[..., Any], f: int) -> None: ... + @overload + def __init__(self: postfork[_P, _T], f: Callable[_P, _T]) -> None: ... + @overload + def __call__(self, __f: Callable[_P2, _T2]) -> postfork[_P2, _T2]: ... + @overload + def __call__(self, *args: _P.args, **kwargs: _P.kwargs) -> _T: ... + +class _spoolraw(Generic[_P, _SR]): + f: Callable[_P, _SR] + pass_arguments: bool + base_dict: dict[str, Any] + def __init__(self, f: Callable[_P, _SR], pass_arguments: bool) -> None: ... + def __call__(self, *args: _P.args, **kwargs: _P.kwargs) -> _SR: ... + def spool(self, *args: _P.args, **kwargs: _P.kwargs) -> _SR: ... + +class _spool(_spoolraw[_P, _SR]): ... +class _spoolforever(_spoolraw[_P, _SR]): ... + +@overload +def spool_decorate( + f: Callable[_P, _SR], pass_arguments: bool = False, _class: type[_spoolraw[_P, _SR]] = ... +) -> _spoolraw[_P, _SR]: ... +@overload +def spool_decorate( + f: None = None, pass_arguments: bool = False, _class: type[_spoolraw[..., Any]] = ... +) -> Callable[[Callable[_P, _SR]], _spoolraw[_P, _SR]]: ... +@overload +def spoolraw(f: Callable[_P, _SR], pass_arguments: bool = False) -> _spoolraw[_P, _SR]: ... +@overload +def spoolraw(f: None = None, pass_arguments: bool = False) -> Callable[[Callable[_P, _SR]], _spoolraw[_P, _SR]]: ... +@overload +def spool(f: Callable[_P, _SR], pass_arguments: bool = False) -> _spool[_P, _SR]: ... +@overload +def spool(f: None = None, pass_arguments: bool = False) -> Callable[[Callable[_P, _SR]], _spool[_P, _SR]]: ... +@overload +def spoolforever(f: Callable[_P, _SR], pass_arguments: bool = False) -> _spoolforever[_P, _SR]: ... +@overload +def spoolforever(f: None = None, pass_arguments: bool = False) -> Callable[[Callable[_P, _SR]], _spoolforever[_P, _SR]]: ... + +class mulefunc(Generic[_P, _T]): + fname: str | None + mule: int + @overload + def __init__(self: mulefunc[..., Any], f: int) -> None: ... + @overload + def __init__(self: mulefunc[_P, _T], f: Callable[_P, _T]) -> None: ... + def real_call(self, *args: _P.args, **kwargs: _P.kwargs) -> None: ... + @overload + def __call__(self, __f: Callable[_P2, _T2]) -> mulefunc[_P2, _T2]: ... + @overload + def __call__(self, *args: _P.args, **kwargs: _P.kwargs) -> _T: ... + +def mule_msg_dispatcher(message: bytes) -> Any: ... + +class rpc: + name: str + def __init__(self, name: str) -> None: ... + def __call__(self, f: _RPCCallableT) -> _RPCCallableT: ... + +class farm_loop: + f: Callable[[bytes], Any] + farm: str | None + def __init__(self, f: Callable[[bytes], Any], farm: str | None) -> None: ... + def __call__(self) -> None: ... + +class farm: + name: str + def __init__(self, name: str | None = None, **kwargs: Any) -> None: ... + def __call__(self, f: Callable[[bytes], Any]) -> None: ... + +class mule_brain: + f: Callable[[], Any] + num: int + def __init__(self, f: Callable[[], Any], num: int) -> None: ... + def __call__(self) -> None: ... + +class mule_brainloop(mule_brain): ... + +class mule: + num: int + def __init__(self, num: int) -> None: ... + def __call__(self, f: Callable[[], Any]) -> None: ... + +class muleloop(mule): ... + +class mulemsg_loop: + f: Callable[[bytes], Any] + num: int + def __init__(self, f: Callable[[bytes], Any], num: int) -> None: ... + def __call__(self) -> None: ... + +class mulemsg: + num: int + def __init__(self, num: int) -> None: ... + def __call__(self, f: Callable[[bytes], Any]) -> None: ... + +class signal: + num: int + target: str + def __init__(self, num: int, *, target: str = "", **kwargs: Any) -> None: ... + def __call__(self, f: _SignalCallbackT) -> _SignalCallbackT: ... + +class timer: + num: int + secs: int + target: str + def __init__(self, secs: int, *, signum: int = ..., target: str = "", **kwargs: Any) -> None: ... + def __call__(self, f: _SignalCallbackT) -> _SignalCallbackT: ... + +class cron: + num: int + minute: int + hour: int + day: int + month: int + dayweek: int + target: str + def __init__( + self, minute: int, hour: int, day: int, month: int, dayweek: int, *, signum: int = ..., target: str = "", **kwargs: Any + ) -> None: ... + def __call__(self, f: _SignalCallbackT) -> _SignalCallbackT: ... + +class rbtimer: + num: int + secs: int + target: str + def __init__(self, secs: int, *, signum: int = ..., target: str = "", **kwargs: Any) -> None: ... + def __call__(self, f: _SignalCallbackT) -> _SignalCallbackT: ... + +class filemon: + num: int + fsobj: str + target: str + def __init__(self, fsobj: str, *, signum: int = ..., target: str = "", **kwargs: Any) -> None: ... + def __call__(self, f: _SignalCallbackT) -> _SignalCallbackT: ... + +class lock(Generic[_P, _T]): + f: Callable[_P, _T] + def __init__(self, f: Callable[_P, _T]) -> None: ... + def __call__(self, *args: _P.args, **kwargs: _P.kwargs) -> _T: ... + +# FIXME: Technically this only allows positional arguments, but there is not really +# an adequate way yet to express this, once bound on ParamSpec does something +# we could probably enforce this +class thread(Generic[_P, _T]): + f: Callable[_P, _T] + def __init__(self, f: Callable[_P, _T]) -> None: ... + def __call__(self, *args: _P.args, **kwargs: _P.kwargs) -> Callable[_P, _T]: ... + +class harakiri: + s: int + def __init__(self, seconds: int) -> None: ... + def __call__(self, f: Callable[_P, _T]) -> Callable[_P, _T]: ... diff --git a/packages/pyright-internal/typeshed-fallback/stubs/untangle/METADATA.toml b/packages/pyright-internal/typeshed-fallback/stubs/untangle/METADATA.toml index 249b0a7c0..7510b283e 100644 --- a/packages/pyright-internal/typeshed-fallback/stubs/untangle/METADATA.toml +++ b/packages/pyright-internal/typeshed-fallback/stubs/untangle/METADATA.toml @@ -1 +1,2 @@ version = "1.2.*" +upstream_repository = "https://github.com/stchris/untangle" From 5f5ade4111a1be40f243c55e0264dd85d4e40555 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 14 Aug 2023 17:42:35 -0700 Subject: [PATCH 495/525] Revert "Reverted the change for #5446 because it's causing false positive errors." (#5723) This reverts commit 2a096860c11dff7bbda92f92efb0216e2580c2c6. Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 9 +++ .../src/tests/samples/hashability2.py | 55 +++++++++++++++++++ .../src/tests/samples/hashability3.py | 21 +++++++ .../src/tests/typeEvaluator5.test.ts | 10 ++++ 4 files changed, 95 insertions(+) create mode 100644 packages/pyright-internal/src/tests/samples/hashability2.py create mode 100644 packages/pyright-internal/src/tests/samples/hashability3.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bc2062e66..661c009c3 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -15921,6 +15921,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ? new Map(innerScope.symbolTable) : new Map(); + // Determine whether the class should inherit __hash__. If a class defines + // __eq__ but doesn't define __hash__ then __hash__ is set to None. + if (classType.details.fields.has('__eq__') && !classType.details.fields.has('__hash__')) { + classType.details.fields.set( + '__hash__', + Symbol.createWithType(SymbolFlags.ClassMember | SymbolFlags.ClassVar, NoneType.createInstance()) + ); + } + // Determine whether the class's instance variables are constrained // to those defined by __slots__. We need to do this prior to dataclass // processing because dataclasses can implicitly add to the slots diff --git a/packages/pyright-internal/src/tests/samples/hashability2.py b/packages/pyright-internal/src/tests/samples/hashability2.py new file mode 100644 index 000000000..3c8c1a1ec --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/hashability2.py @@ -0,0 +1,55 @@ +# This sample tests that unhashable user classes are detected as unhashable. + + +class A: + ... + + +s1 = {A()} +d1 = {A(): 100} + + +class B: + def __eq__(self, other): + ... + + +# Both of these should generate an error because a class that +# defines __eq__ but not __hash__ is not hashable. +s2 = {B()} +d2 = {B(): 100} + + +class C: + __hash__: None = None + + +class D(B, C): + ... + + +# Both of these should generate an error because B is unhashable. +s3 = {UnhashableSub()} +d3 = {UnhashableSub(): 100} + + +class E: + def __hash__(self): + ... + + +class F(D, E): + ... + + +# Both of these should generate an error because D is unhashable. +s4 = {F()} +d4 = {F(): 100} + + +class G(E, D): + ... + + +s5 = {G()} +d5 = {G(): 100} diff --git a/packages/pyright-internal/src/tests/samples/hashability3.py b/packages/pyright-internal/src/tests/samples/hashability3.py new file mode 100644 index 000000000..cc69ed854 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/hashability3.py @@ -0,0 +1,21 @@ +# This sample tests that __hash__ is set to None if +# __hash__ isn't set but __eq__ is. + + +class A: + ... + + +A().__hash__() + + +class B: + def __eq__(self, value: object) -> bool: + ... + + ... + + +# This should generate an error because __hash__ is implicitly set to None +# for a class that defines __eq__ but not __hash__. +B().__hash__() diff --git a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts index 029118784..1266696be 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator5.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator5.test.ts @@ -145,6 +145,16 @@ test('Hashability1', () => { TestUtils.validateResults(analysisResults, 10); }); +test('Hashability2', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['hashability2.py']); + TestUtils.validateResults(analysisResults, 6); +}); + +test('Hashability3', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['hashability3.py']); + TestUtils.validateResults(analysisResults, 1); +}); + test('Override1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['override1.py']); TestUtils.validateResults(analysisResults, 3); From 85483beeb44ddfa4bb6d1a6fa4ea642fc34e15cb Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 14 Aug 2023 17:45:36 -0700 Subject: [PATCH 496/525] Fixed a bug that resulted in a false positive `reportUnnecessaryComparison` error when the subject of a `match `statement was mutated in a loop. This addresses https://github.com/microsoft/pyright/issues/5717. --- .../src/analyzer/typeEvaluator.ts | 4 +++- .../src/tests/samples/matchUnnecessary1.py | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 661c009c3..06545d3d2 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -18012,7 +18012,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions for (const caseStatement of node.parent.cases) { if (caseStatement === node) { if (fileInfo.diagnosticRuleSet.reportUnnecessaryComparison !== 'none') { - checkForUnusedPattern(evaluatorInterface, node.pattern, subjectType); + if (!subjectTypeResult.isIncomplete) { + checkForUnusedPattern(evaluatorInterface, node.pattern, subjectType); + } } break; } diff --git a/packages/pyright-internal/src/tests/samples/matchUnnecessary1.py b/packages/pyright-internal/src/tests/samples/matchUnnecessary1.py index 56eccb9f6..2399f88e5 100644 --- a/packages/pyright-internal/src/tests/samples/matchUnnecessary1.py +++ b/packages/pyright-internal/src/tests/samples/matchUnnecessary1.py @@ -63,3 +63,24 @@ def func3(json_object: JsonObject) -> None: } }: pass + + +TA1 = tuple[Literal["a", "b", "c"], int] + + +def func4(vals: list[str]) -> TA1: + x: TA1 = ("c", 0) + + for val in vals: + match x[0]: + case "b": + if val.startswith("x"): + x = ("a", 1) + continue + case "c": + if val.startswith("y"): + x = ("b", 2) + continue + case _: + pass + return x From e1cade2f5e34fb3435b1dc789d6a5415a489bf88 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 14 Aug 2023 21:10:21 -0700 Subject: [PATCH 497/525] Added special-case handling of enum fields that are callables, which are apparently not treated as enumerated types. This addresses https://github.com/microsoft/pyright/issues/5721. --- packages/pyright-internal/src/analyzer/enums.ts | 8 ++++++++ .../pyright-internal/src/tests/samples/enum1.py | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index ce9d407af..83bcf78b7 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -38,10 +38,12 @@ import { Type, UnknownType, combineTypes, + findSubtype, isClass, isClassInstance, isFunction, isInstantiableClass, + isOverloadedFunction, } from './types'; export function isKnownEnumType(className: string) { @@ -352,6 +354,12 @@ export function transformTypeForPossibleEnumClass( isMemberOfEnumeration = false; } + // The enum spec doesn't explicitly specify this, but it + // appears that callables are excluded. + if (!findSubtype(valueType, (subtype) => !isFunction(subtype) && !isOverloadedFunction(subtype))) { + isMemberOfEnumeration = false; + } + if (isMemberOfEnumeration) { const enumLiteral = new EnumLiteral( enumClassInfo.classType.details.fullName, diff --git a/packages/pyright-internal/src/tests/samples/enum1.py b/packages/pyright-internal/src/tests/samples/enum1.py index 244f41be0..ddae6a622 100644 --- a/packages/pyright-internal/src/tests/samples/enum1.py +++ b/packages/pyright-internal/src/tests/samples/enum1.py @@ -175,3 +175,18 @@ class TestEnum11(Enum): te11_A = TestEnum11.A reveal_type(te11_A, expected_text="Literal[TestEnum11.A]") reveal_type(te11_A.value, expected_text="int") + + +def func3() -> None: + pass + + +class TestEnum12(Enum): + a = 1 + b = lambda: None + c = func3 + + +reveal_type(TestEnum12.a, expected_text="Literal[TestEnum12.a]") +reveal_type(TestEnum12.b, expected_text="() -> None") +reveal_type(TestEnum12.c, expected_text="() -> None") From 9d21b77d6eef593677aa9a6554ad04265d62f24c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 14 Aug 2023 21:45:16 -0700 Subject: [PATCH 498/525] Added check to enforce a generator's "send type" in a `yield from` statement. This addresses https://github.com/microsoft/pyright/issues/5716. (#5724) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/checker.ts | 9 ++++++--- .../src/tests/samples/generator11.py | 2 +- .../src/tests/samples/generator2.py | 16 ++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 743a77b33..a139e85f5 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -1040,6 +1040,7 @@ export class Checker extends ParseTreeWalker { override visitYieldFrom(node: YieldFromNode) { const yieldFromType = this._evaluator.getType(node.expression) || UnknownType.create(); let yieldType: Type | undefined; + let sendType: Type | undefined; if (isClassInstance(yieldFromType) && ClassType.isBuiltIn(yieldFromType, 'Coroutine')) { // Handle the case of old-style (pre-await) coroutines. @@ -1055,6 +1056,7 @@ export class Checker extends ParseTreeWalker { const generatorTypeArgs = getGeneratorTypeArgs(yieldType); if (generatorTypeArgs) { yieldType = generatorTypeArgs.length >= 1 ? generatorTypeArgs[0] : UnknownType.create(); + sendType = generatorTypeArgs.length >= 2 ? generatorTypeArgs[1] : undefined; } else { yieldType = this._evaluator.getTypeOfIterator({ type: yieldFromType }, /* isAsync */ false, node)?.type ?? @@ -1062,7 +1064,7 @@ export class Checker extends ParseTreeWalker { } } - this._validateYieldType(node, yieldType); + this._validateYieldType(node, yieldType, sendType); return true; } @@ -6177,7 +6179,7 @@ export class Checker extends ParseTreeWalker { // Determines whether a yield or yield from node is compatible with the // return type annotation of the containing function. - private _validateYieldType(node: YieldNode | YieldFromNode, yieldType: Type) { + private _validateYieldType(node: YieldNode | YieldFromNode, yieldType: Type, sendType?: Type) { const enclosingFunctionNode = ParseTreeUtils.getEnclosingFunction(node); if (!enclosingFunctionNode || !enclosingFunctionNode.returnTypeAnnotation) { return; @@ -6227,8 +6229,9 @@ export class Checker extends ParseTreeWalker { return; } + const generatorTypeArgs = [yieldType, sendType ?? UnknownType.create(), UnknownType.create()]; const specializedGenerator = ClassType.cloneAsInstance( - ClassType.cloneForSpecialization(generatorType, [yieldType], /* isTypeArgumentExplicit */ true) + ClassType.cloneForSpecialization(generatorType, generatorTypeArgs, /* isTypeArgumentExplicit */ true) ); const diagAddendum = new DiagnosticAddendum(); diff --git a/packages/pyright-internal/src/tests/samples/generator11.py b/packages/pyright-internal/src/tests/samples/generator11.py index 01f024809..49f55a837 100644 --- a/packages/pyright-internal/src/tests/samples/generator11.py +++ b/packages/pyright-internal/src/tests/samples/generator11.py @@ -3,7 +3,7 @@ from typing import Generator -def func1() -> Generator[int, None, str]: +def func1() -> Generator[int, int, str]: yield 1 return "done" diff --git a/packages/pyright-internal/src/tests/samples/generator2.py b/packages/pyright-internal/src/tests/samples/generator2.py index a56bd4c28..8bca7e346 100644 --- a/packages/pyright-internal/src/tests/samples/generator2.py +++ b/packages/pyright-internal/src/tests/samples/generator2.py @@ -47,3 +47,19 @@ def generator4( x = yield from arg reveal_type(x, expected_text="int | str") return x + + +def generator5() -> Generator[None, float, None]: + x: float = yield + + +def generator6() -> Generator[None, int, None]: + yield from generator5() + +def generator7() -> Generator[None, int, None]: + x: float = yield + + +def generator8() -> Generator[None, float, None]: + # This should generate an error because of the send type. + yield from generator7() diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 39c807230..41a466514 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -39,7 +39,7 @@ test('Generator1', () => { test('Generator2', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['generator2.py']); - TestUtils.validateResults(analysisResults, 2); + TestUtils.validateResults(analysisResults, 3); }); test('Generator3', () => { From 968187fd577f01c535d7e10a6253d536d9377f72 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 14 Aug 2023 21:51:07 -0700 Subject: [PATCH 499/525] Added special-case logic for fields with the name `__hash__` within a dataclass. This addresses https://github.com/microsoft/pyright/issues/5707. (#5725) Co-authored-by: Eric Traut --- .../src/analyzer/dataClasses.ts | 604 +++++++++--------- .../src/tests/samples/dataclass1.py | 1 + 2 files changed, 305 insertions(+), 300 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index e684ccb4c..bd5947e8d 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -128,355 +128,359 @@ export function synthesizeDataClassMethods( const localEntryTypeEvaluator: { entry: DataClassEntry; evaluator: EntryTypeEvaluator }[] = []; let sawKeywordOnlySeparator = false; - classType.details.fields.forEach((symbol) => { - if (!symbol.isIgnoredForProtocolMatch()) { - // Only variables (not functions, classes, etc.) are considered. - const classVarDecl = symbol.getTypedDeclarations().find((decl) => { - if (decl.type !== DeclarationType.Variable) { - return false; - } + classType.details.fields.forEach((symbol, name) => { + if (symbol.isIgnoredForProtocolMatch()) { + return; + } - const container = getEnclosingClassOrFunction(decl.node); - if (!container || container.nodeType !== ParseNodeType.Class) { - return false; - } + // Apparently, `__hash__` is special-cased in a dataclass. I can't find + // this in the spec, but the runtime seems to treat is specially. + if (name === '__hash__') { + return; + } - return true; - }); + // Only variables (not functions, classes, etc.) are considered. + const classVarDecl = symbol.getTypedDeclarations().find((decl) => { + if (decl.type !== DeclarationType.Variable) { + return false; + } - if (classVarDecl) { - let statement: ParseNode | undefined = classVarDecl.node; + const container = getEnclosingClassOrFunction(decl.node); + if (!container || container.nodeType !== ParseNodeType.Class) { + return false; + } - while (statement) { - if (statement.nodeType === ParseNodeType.Assignment) { - break; - } + return true; + }); - if (statement.nodeType === ParseNodeType.TypeAnnotation) { - if (statement.parent?.nodeType === ParseNodeType.Assignment) { - statement = statement.parent; - } - break; - } + if (classVarDecl) { + let statement: ParseNode | undefined = classVarDecl.node; - statement = statement.parent; + while (statement) { + if (statement.nodeType === ParseNodeType.Assignment) { + break; } - if (!statement) { - return; + if (statement.nodeType === ParseNodeType.TypeAnnotation) { + if (statement.parent?.nodeType === ParseNodeType.Assignment) { + statement = statement.parent; + } + break; } - let variableNameNode: NameNode | undefined; - let aliasName: string | undefined; - let variableTypeEvaluator: EntryTypeEvaluator | undefined; - let hasDefaultValue = false; - let isKeywordOnly = ClassType.isDataClassKeywordOnlyParams(classType) || sawKeywordOnlySeparator; - let defaultValueExpression: ExpressionNode | undefined; - let includeInInit = true; - let converter: ArgumentNode | undefined; + statement = statement.parent; + } - if (statement.nodeType === ParseNodeType.Assignment) { - if ( - statement.leftExpression.nodeType === ParseNodeType.TypeAnnotation && - statement.leftExpression.valueExpression.nodeType === ParseNodeType.Name - ) { - variableNameNode = statement.leftExpression.valueExpression; - const assignmentStatement = statement; - variableTypeEvaluator = () => - evaluator.getTypeOfAnnotation( - (assignmentStatement.leftExpression as TypeAnnotationNode).typeAnnotation, - { - isVariableAnnotation: true, - allowFinal: true, - allowClassVar: true, - } - ); - } + if (!statement) { + return; + } - hasDefaultValue = true; - defaultValueExpression = statement.rightExpression; + let variableNameNode: NameNode | undefined; + let aliasName: string | undefined; + let variableTypeEvaluator: EntryTypeEvaluator | undefined; + let hasDefaultValue = false; + let isKeywordOnly = ClassType.isDataClassKeywordOnlyParams(classType) || sawKeywordOnlySeparator; + let defaultValueExpression: ExpressionNode | undefined; + let includeInInit = true; + let converter: ArgumentNode | undefined; - // If the RHS of the assignment is assigning a field instance where the - // "init" parameter is set to false, do not include it in the init method. - if (statement.rightExpression.nodeType === ParseNodeType.Call) { - const callTypeResult = evaluator.getTypeOfExpression( - statement.rightExpression.leftExpression, - EvaluatorFlags.CallBaseDefaults + if (statement.nodeType === ParseNodeType.Assignment) { + if ( + statement.leftExpression.nodeType === ParseNodeType.TypeAnnotation && + statement.leftExpression.valueExpression.nodeType === ParseNodeType.Name + ) { + variableNameNode = statement.leftExpression.valueExpression; + const assignmentStatement = statement; + variableTypeEvaluator = () => + evaluator.getTypeOfAnnotation( + (assignmentStatement.leftExpression as TypeAnnotationNode).typeAnnotation, + { + isVariableAnnotation: true, + allowFinal: true, + allowClassVar: true, + } ); - const callType = callTypeResult.type; + } - if ( - isDataclassFieldConstructor( - callType, - classType.details.dataClassBehaviors?.fieldDescriptorNames || [] - ) - ) { - const initArg = statement.rightExpression.arguments.find( - (arg) => arg.name?.value === 'init' + hasDefaultValue = true; + defaultValueExpression = statement.rightExpression; + + // If the RHS of the assignment is assigning a field instance where the + // "init" parameter is set to false, do not include it in the init method. + if (statement.rightExpression.nodeType === ParseNodeType.Call) { + const callTypeResult = evaluator.getTypeOfExpression( + statement.rightExpression.leftExpression, + EvaluatorFlags.CallBaseDefaults + ); + const callType = callTypeResult.type; + + if ( + isDataclassFieldConstructor( + callType, + classType.details.dataClassBehaviors?.fieldDescriptorNames || [] + ) + ) { + const initArg = statement.rightExpression.arguments.find((arg) => arg.name?.value === 'init'); + if (initArg && initArg.valueExpression) { + const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const value = evaluateStaticBoolExpression( + initArg.valueExpression, + fileInfo.executionEnvironment, + fileInfo.definedConstants ); - if (initArg && initArg.valueExpression) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - const value = evaluateStaticBoolExpression( - initArg.valueExpression, - fileInfo.executionEnvironment, - fileInfo.definedConstants + if (value === false) { + includeInInit = false; + } + } else { + // See if the field constructor has an `init` parameter with + // a default value. + let callTarget: FunctionType | undefined; + if (isFunction(callType)) { + callTarget = callType; + } else if (isOverloadedFunction(callType)) { + callTarget = evaluator.getBestOverloadForArguments( + statement.rightExpression, + { type: callType, isIncomplete: callTypeResult.isIncomplete }, + statement.rightExpression.arguments ); - if (value === false) { - includeInInit = false; - } - } else { - // See if the field constructor has an `init` parameter with - // a default value. - let callTarget: FunctionType | undefined; - if (isFunction(callType)) { - callTarget = callType; - } else if (isOverloadedFunction(callType)) { - callTarget = evaluator.getBestOverloadForArguments( - statement.rightExpression, - { type: callType, isIncomplete: callTypeResult.isIncomplete }, - statement.rightExpression.arguments - ); - } else if (isInstantiableClass(callType)) { - const initCall = evaluator.getBoundMethod(callType, '__init__'); - if (initCall) { - if (isFunction(initCall)) { - callTarget = initCall; - } else if (isOverloadedFunction(initCall)) { - callTarget = evaluator.getBestOverloadForArguments( - statement.rightExpression, - { type: initCall }, - statement.rightExpression.arguments - ); - } + } else if (isInstantiableClass(callType)) { + const initCall = evaluator.getBoundMethod(callType, '__init__'); + if (initCall) { + if (isFunction(initCall)) { + callTarget = initCall; + } else if (isOverloadedFunction(initCall)) { + callTarget = evaluator.getBestOverloadForArguments( + statement.rightExpression, + { type: initCall }, + statement.rightExpression.arguments + ); } } + } - if (callTarget) { - const initParam = callTarget.details.parameters.find((p) => p.name === 'init'); - if (initParam && initParam.defaultValueExpression && initParam.hasDeclaredType) { - if ( - isClass(initParam.type) && - ClassType.isBuiltIn(initParam.type, 'bool') && - isLiteralType(initParam.type) - ) { - if (initParam.type.literalValue === false) { - includeInInit = false; - } + if (callTarget) { + const initParam = callTarget.details.parameters.find((p) => p.name === 'init'); + if (initParam && initParam.defaultValueExpression && initParam.hasDeclaredType) { + if ( + isClass(initParam.type) && + ClassType.isBuiltIn(initParam.type, 'bool') && + isLiteralType(initParam.type) + ) { + if (initParam.type.literalValue === false) { + includeInInit = false; } } } } + } - const kwOnlyArg = statement.rightExpression.arguments.find( - (arg) => arg.name?.value === 'kw_only' + const kwOnlyArg = statement.rightExpression.arguments.find( + (arg) => arg.name?.value === 'kw_only' + ); + if (kwOnlyArg && kwOnlyArg.valueExpression) { + const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const value = evaluateStaticBoolExpression( + kwOnlyArg.valueExpression, + fileInfo.executionEnvironment, + fileInfo.definedConstants ); - if (kwOnlyArg && kwOnlyArg.valueExpression) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - const value = evaluateStaticBoolExpression( - kwOnlyArg.valueExpression, - fileInfo.executionEnvironment, - fileInfo.definedConstants - ); - if (value === false) { - isKeywordOnly = false; - } else if (value === true) { - isKeywordOnly = true; - } + if (value === false) { + isKeywordOnly = false; + } else if (value === true) { + isKeywordOnly = true; } + } - const defaultArg = statement.rightExpression.arguments.find( - (arg) => - arg.name?.value === 'default' || - arg.name?.value === 'default_factory' || - arg.name?.value === 'factory' - ); + const defaultArg = statement.rightExpression.arguments.find( + (arg) => + arg.name?.value === 'default' || + arg.name?.value === 'default_factory' || + arg.name?.value === 'factory' + ); - hasDefaultValue = !!defaultArg; - if (defaultArg?.valueExpression) { - defaultValueExpression = defaultArg.valueExpression; - } + hasDefaultValue = !!defaultArg; + if (defaultArg?.valueExpression) { + defaultValueExpression = defaultArg.valueExpression; + } - const aliasArg = statement.rightExpression.arguments.find( - (arg) => arg.name?.value === 'alias' - ); - if (aliasArg) { - const valueType = evaluator.getTypeOfExpression(aliasArg.valueExpression).type; - if ( - isClassInstance(valueType) && - ClassType.isBuiltIn(valueType, 'str') && - isLiteralType(valueType) - ) { - aliasName = valueType.literalValue as string; - } + const aliasArg = statement.rightExpression.arguments.find((arg) => arg.name?.value === 'alias'); + if (aliasArg) { + const valueType = evaluator.getTypeOfExpression(aliasArg.valueExpression).type; + if ( + isClassInstance(valueType) && + ClassType.isBuiltIn(valueType, 'str') && + isLiteralType(valueType) + ) { + aliasName = valueType.literalValue as string; } + } - const converterArg = statement.rightExpression.arguments.find( - (arg) => arg.name?.value === 'converter' - ); - if (converterArg && converterArg.valueExpression) { - converter = converterArg; - } + const converterArg = statement.rightExpression.arguments.find( + (arg) => arg.name?.value === 'converter' + ); + if (converterArg && converterArg.valueExpression) { + converter = converterArg; } } - } else if (statement.nodeType === ParseNodeType.TypeAnnotation) { - if (statement.valueExpression.nodeType === ParseNodeType.Name) { - variableNameNode = statement.valueExpression; - const annotationStatement = statement; - variableTypeEvaluator = () => - evaluator.getTypeOfAnnotation(annotationStatement.typeAnnotation, { - isVariableAnnotation: true, - allowFinal: true, - allowClassVar: true, - }); - - // Is this a KW_ONLY separator introduced in Python 3.10? - if (statement.valueExpression.value === '_') { - const annotatedType = variableTypeEvaluator(); - - if (isClassInstance(annotatedType) && ClassType.isBuiltIn(annotatedType, 'KW_ONLY')) { - sawKeywordOnlySeparator = true; - variableNameNode = undefined; - variableTypeEvaluator = undefined; - } + } + } else if (statement.nodeType === ParseNodeType.TypeAnnotation) { + if (statement.valueExpression.nodeType === ParseNodeType.Name) { + variableNameNode = statement.valueExpression; + const annotationStatement = statement; + variableTypeEvaluator = () => + evaluator.getTypeOfAnnotation(annotationStatement.typeAnnotation, { + isVariableAnnotation: true, + allowFinal: true, + allowClassVar: true, + }); + + // Is this a KW_ONLY separator introduced in Python 3.10? + if (statement.valueExpression.value === '_') { + const annotatedType = variableTypeEvaluator(); + + if (isClassInstance(annotatedType) && ClassType.isBuiltIn(annotatedType, 'KW_ONLY')) { + sawKeywordOnlySeparator = true; + variableNameNode = undefined; + variableTypeEvaluator = undefined; } } } + } - if (variableNameNode && variableTypeEvaluator) { - const variableName = variableNameNode.value; - - // Don't include class vars. PEP 557 indicates that they shouldn't - // be considered data class entries. - const variableSymbol = classType.details.fields.get(variableName); - const isFinal = variableSymbol - ?.getDeclarations() - .some((decl) => decl.type === DeclarationType.Variable && decl.isFinal); - - if (variableSymbol?.isClassVar() && !isFinal) { - // If an ancestor class declared an instance variable but this dataclass - // declares a ClassVar, delete the older one from the full data class entries. - // We exclude final variables here because a Final type annotation is implicitly - // considered a ClassVar by the binder, but dataclass rules are different. - const index = fullDataClassEntries.findIndex((p) => p.name === variableName); - if (index >= 0) { - fullDataClassEntries.splice(index, 1); - } - const dataClassEntry: DataClassEntry = { - name: variableName, - classType, - alias: aliasName, - isKeywordOnly: false, - hasDefault: hasDefaultValue, - defaultValueExpression, - includeInInit, - nameNode: variableNameNode, - type: UnknownType.create(), - isClassVar: true, - converter, - }; - localDataClassEntries.push(dataClassEntry); - } else { - // Create a new data class entry, but defer evaluation of the type until - // we've compiled the full list of data class entries for this class. This - // allows us to handle circular references in types. - const dataClassEntry: DataClassEntry = { - name: variableName, - classType, - alias: aliasName, - isKeywordOnly, - hasDefault: hasDefaultValue, - defaultValueExpression, - includeInInit, - nameNode: variableNameNode, - type: UnknownType.create(), - isClassVar: false, - converter, - }; - localEntryTypeEvaluator.push({ entry: dataClassEntry, evaluator: variableTypeEvaluator }); - - // Add the new entry to the local entry list. - let insertIndex = localDataClassEntries.findIndex((e) => e.name === variableName); - if (insertIndex >= 0) { - localDataClassEntries[insertIndex] = dataClassEntry; - } else { - localDataClassEntries.push(dataClassEntry); - } + if (variableNameNode && variableTypeEvaluator) { + const variableName = variableNameNode.value; + + // Don't include class vars. PEP 557 indicates that they shouldn't + // be considered data class entries. + const variableSymbol = classType.details.fields.get(variableName); + const isFinal = variableSymbol + ?.getDeclarations() + .some((decl) => decl.type === DeclarationType.Variable && decl.isFinal); + + if (variableSymbol?.isClassVar() && !isFinal) { + // If an ancestor class declared an instance variable but this dataclass + // declares a ClassVar, delete the older one from the full data class entries. + // We exclude final variables here because a Final type annotation is implicitly + // considered a ClassVar by the binder, but dataclass rules are different. + const index = fullDataClassEntries.findIndex((p) => p.name === variableName); + if (index >= 0) { + fullDataClassEntries.splice(index, 1); + } + const dataClassEntry: DataClassEntry = { + name: variableName, + classType, + alias: aliasName, + isKeywordOnly: false, + hasDefault: hasDefaultValue, + defaultValueExpression, + includeInInit, + nameNode: variableNameNode, + type: UnknownType.create(), + isClassVar: true, + converter, + }; + localDataClassEntries.push(dataClassEntry); + } else { + // Create a new data class entry, but defer evaluation of the type until + // we've compiled the full list of data class entries for this class. This + // allows us to handle circular references in types. + const dataClassEntry: DataClassEntry = { + name: variableName, + classType, + alias: aliasName, + isKeywordOnly, + hasDefault: hasDefaultValue, + defaultValueExpression, + includeInInit, + nameNode: variableNameNode, + type: UnknownType.create(), + isClassVar: false, + converter, + }; + localEntryTypeEvaluator.push({ entry: dataClassEntry, evaluator: variableTypeEvaluator }); - // Add the new entry to the full entry list. - insertIndex = fullDataClassEntries.findIndex((p) => p.name === variableName); - if (insertIndex >= 0) { - const oldEntry = fullDataClassEntries[insertIndex]; - - // While this isn't documented behavior, it appears that the dataclass implementation - // causes overridden variables to "inherit" default values from parent classes. - if (!dataClassEntry.hasDefault && oldEntry.hasDefault && oldEntry.includeInInit) { - dataClassEntry.hasDefault = true; - dataClassEntry.defaultValueExpression = oldEntry.defaultValueExpression; - hasDefaultValue = true; - } + // Add the new entry to the local entry list. + let insertIndex = localDataClassEntries.findIndex((e) => e.name === variableName); + if (insertIndex >= 0) { + localDataClassEntries[insertIndex] = dataClassEntry; + } else { + localDataClassEntries.push(dataClassEntry); + } - fullDataClassEntries[insertIndex] = dataClassEntry; - } else { - fullDataClassEntries.push(dataClassEntry); - insertIndex = fullDataClassEntries.length - 1; + // Add the new entry to the full entry list. + insertIndex = fullDataClassEntries.findIndex((p) => p.name === variableName); + if (insertIndex >= 0) { + const oldEntry = fullDataClassEntries[insertIndex]; + + // While this isn't documented behavior, it appears that the dataclass implementation + // causes overridden variables to "inherit" default values from parent classes. + if (!dataClassEntry.hasDefault && oldEntry.hasDefault && oldEntry.includeInInit) { + dataClassEntry.hasDefault = true; + dataClassEntry.defaultValueExpression = oldEntry.defaultValueExpression; + hasDefaultValue = true; } - // If we've already seen a entry with a default value defined, - // all subsequent entries must also have default values. - if (!isKeywordOnly && includeInInit && !skipSynthesizeInit && !hasDefaultValue) { - const firstDefaultValueIndex = fullDataClassEntries.findIndex( - (p) => p.hasDefault && p.includeInInit && !p.isKeywordOnly + fullDataClassEntries[insertIndex] = dataClassEntry; + } else { + fullDataClassEntries.push(dataClassEntry); + insertIndex = fullDataClassEntries.length - 1; + } + + // If we've already seen a entry with a default value defined, + // all subsequent entries must also have default values. + if (!isKeywordOnly && includeInInit && !skipSynthesizeInit && !hasDefaultValue) { + const firstDefaultValueIndex = fullDataClassEntries.findIndex( + (p) => p.hasDefault && p.includeInInit && !p.isKeywordOnly + ); + if (firstDefaultValueIndex >= 0 && firstDefaultValueIndex < insertIndex) { + evaluator.addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.dataClassFieldWithDefault(), + variableNameNode ); - if (firstDefaultValueIndex >= 0 && firstDefaultValueIndex < insertIndex) { - evaluator.addDiagnostic( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.dataClassFieldWithDefault(), - variableNameNode - ); - } } } } - } else { - // The symbol had no declared type, so it is (mostly) ignored by dataclasses. - // However, if it is assigned a field descriptor, it will result in a - // runtime exception. - const declarations = symbol.getDeclarations(); - if (declarations.length === 0) { - return; - } - const lastDecl = declarations[declarations.length - 1]; - if (lastDecl.type !== DeclarationType.Variable) { - return; - } + } + } else { + // The symbol had no declared type, so it is (mostly) ignored by dataclasses. + // However, if it is assigned a field descriptor, it will result in a + // runtime exception. + const declarations = symbol.getDeclarations(); + if (declarations.length === 0) { + return; + } + const lastDecl = declarations[declarations.length - 1]; + if (lastDecl.type !== DeclarationType.Variable) { + return; + } - const statement = lastDecl.node.parent; - if (!statement || statement.nodeType !== ParseNodeType.Assignment) { - return; - } + const statement = lastDecl.node.parent; + if (!statement || statement.nodeType !== ParseNodeType.Assignment) { + return; + } - // If the RHS of the assignment is assigning a field instance where the - // "init" parameter is set to false, do not include it in the init method. - if (statement.rightExpression.nodeType === ParseNodeType.Call) { - const callType = evaluator.getTypeOfExpression( - statement.rightExpression.leftExpression, - EvaluatorFlags.CallBaseDefaults - ).type; + // If the RHS of the assignment is assigning a field instance where the + // "init" parameter is set to false, do not include it in the init method. + if (statement.rightExpression.nodeType === ParseNodeType.Call) { + const callType = evaluator.getTypeOfExpression( + statement.rightExpression.leftExpression, + EvaluatorFlags.CallBaseDefaults + ).type; - if ( - isDataclassFieldConstructor( - callType, - classType.details.dataClassBehaviors?.fieldDescriptorNames || [] - ) - ) { - evaluator.addDiagnostic( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, - DiagnosticRule.reportGeneralTypeIssues, - Localizer.Diagnostic.dataClassFieldWithoutAnnotation(), - statement.rightExpression - ); - } + if ( + isDataclassFieldConstructor( + callType, + classType.details.dataClassBehaviors?.fieldDescriptorNames || [] + ) + ) { + evaluator.addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.dataClassFieldWithoutAnnotation(), + statement.rightExpression + ); } } } diff --git a/packages/pyright-internal/src/tests/samples/dataclass1.py b/packages/pyright-internal/src/tests/samples/dataclass1.py index 960701213..f7b52ae1d 100644 --- a/packages/pyright-internal/src/tests/samples/dataclass1.py +++ b/packages/pyright-internal/src/tests/samples/dataclass1.py @@ -8,6 +8,7 @@ class Bar: bbb: int ccc: str aaa: str = "string" + __hash__: None bar1 = Bar(bbb=5, ccc="hello") From a324a0589eb22759b63547fcbd9f23cc84be40b5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 14 Aug 2023 22:13:03 -0700 Subject: [PATCH 500/525] Fixed import ordering. No functional change. --- packages/pyright-internal/src/analyzer/service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index 7bf09d301..83b4e94e9 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -47,6 +47,8 @@ import { tryRealpath, tryStat, } from '../common/pathUtils'; +import { ServiceProvider } from '../common/serviceProvider'; +import { ServiceKeys } from '../common/serviceProviderExtensions'; import { Range } from '../common/textRange'; import { timingStats } from '../common/timing'; import { AnalysisCompleteCallback } from './analysis'; @@ -66,8 +68,6 @@ import { MaxAnalysisTime, Program } from './program'; import { findPythonSearchPaths } from './pythonPathUtils'; import { IPythonMode } from './sourceFile'; import { TypeEvaluator } from './typeEvaluatorTypes'; -import { ServiceProvider } from '../common/serviceProvider'; -import { ServiceKeys } from '../common/serviceProviderExtensions'; export const configFileNames = ['pyrightconfig.json']; export const pyprojectTomlName = 'pyproject.toml'; From a8bc6927e8e737889f42a795dea082bc11acc34a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 14 Aug 2023 23:03:35 -0700 Subject: [PATCH 501/525] Added support for `...` in the last type argument of `Concatenate`. After much discussion (see https://github.com/python/cpython/pull/30969), it has been decided to support this even though a strict reading of PEP 612 seems to exclude it. This addresses https://github.com/microsoft/pyright/issues/5715. --- .../src/analyzer/typeEvaluator.ts | 16 +++++++- .../src/localization/package.nls.en-us.json | 2 +- .../src/tests/samples/ellipsis1.pyi | 3 +- .../src/tests/samples/paramSpec46.py | 40 +++++++++++++++++++ .../src/tests/typeEvaluator3.test.ts | 2 +- .../src/tests/typeEvaluator4.test.ts | 5 +++ 6 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/paramSpec46.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 06545d3d2..7b12e8ca7 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -6531,6 +6531,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isParamSpec(typeArg)) { functionType.details.paramSpec = typeArg; + } else if (isEllipsisType(typeArg)) { + FunctionType.addDefaultParameters(functionType); + functionType.details.flags |= FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck; } } else { FunctionType.addParameter(functionType, { @@ -14078,6 +14081,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (isParamSpec(typeArg)) { functionType.details.paramSpec = typeArg; + } else if (isEllipsisType(typeArg)) { + FunctionType.addDefaultParameters(functionType); + functionType.details.flags |= FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck; } } else { FunctionType.addParameter(functionType, { @@ -14606,7 +14612,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } else { typeArgs.forEach((typeArg, index) => { if (index === typeArgs.length - 1) { - if (!isParamSpec(typeArg.type)) { + if (!isParamSpec(typeArg.type) && !isEllipsisType(typeArg.type)) { addError(Localizer.Diagnostic.concatenateParamSpecMissing(), typeArg.node); } } else { @@ -14673,7 +14679,9 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeArgs.forEach((typeArg, index) => { if (isEllipsisType(typeArg.type)) { if (!isTupleTypeParam) { - addError(Localizer.Diagnostic.ellipsisContext(), typeArg.node); + if (!allowParamSpec) { + addError(Localizer.Diagnostic.ellipsisContext(), typeArg.node); + } } else if (typeArgs!.length !== 2 || index !== 1) { addError(Localizer.Diagnostic.ellipsisSecondArg(), typeArg.node); } else { @@ -19136,6 +19144,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (index === concatTypeArgs.length - 1) { if (isParamSpec(typeArg)) { functionType.details.paramSpec = typeArg; + } else if (isEllipsisType(typeArg)) { + FunctionType.addDefaultParameters(functionType); + functionType.details.flags |= + FunctionTypeFlags.SkipArgsKwargsCompatibilityCheck; } } else { FunctionType.addParameter(functionType, { diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 4bf8066bc..887d06d13 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -67,7 +67,7 @@ "comparisonAlwaysTrue": "Condition will always evaluate to True since the types \"{leftType}\" and \"{rightType}\" have no overlap", "comprehensionInDict": "Comprehension cannot be used with other dictionary entries", "comprehensionInSet": "Comprehension cannot be used with other set entries", - "concatenateParamSpecMissing": "Last type argument for \"Concatenate\" must be a ParamSpec", + "concatenateParamSpecMissing": "Last type argument for \"Concatenate\" must be a ParamSpec or \"...\"", "concatenateTypeArgsMissing": "\"Concatenate\" requires at least two type arguments", "conditionalOperandInvalid": "Invalid conditional operand of type \"{type}\"", "constantRedefinition": "\"{name}\" is constant (because it is uppercase) and cannot be redefined", diff --git a/packages/pyright-internal/src/tests/samples/ellipsis1.pyi b/packages/pyright-internal/src/tests/samples/ellipsis1.pyi index e7ef65ca7..8cab1cd15 100644 --- a/packages/pyright-internal/src/tests/samples/ellipsis1.pyi +++ b/packages/pyright-internal/src/tests/samples/ellipsis1.pyi @@ -8,8 +8,7 @@ _T1 = TypeVar("_T1") class MyGenericClass1(Generic[_T1]): pass -# This should generate two errors because ... cannot be used -# in a Generic list and it's not a type variable. +# This should generate an error because ... is not a type variable. class MyGenericClass2(Generic[_T1, ...]): pass diff --git a/packages/pyright-internal/src/tests/samples/paramSpec46.py b/packages/pyright-internal/src/tests/samples/paramSpec46.py new file mode 100644 index 000000000..88b713e5b --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/paramSpec46.py @@ -0,0 +1,40 @@ +# This sample tests support for Concatenate with a ... type argument. + +from typing import Callable, Concatenate + +TA1 = Callable[Concatenate[int, ...], None] + + +def func1(cb: Callable[Concatenate[int, str, ...], None]): + ... + + +def func2(cb: TA1): + ... + + +def cb1(x: int, y: str, z: str) -> None: + ... + + +func1(cb1) +func2(cb1) + + +def cb2(x: int, y: str, *args: int, **kwargs: str) -> None: + ... + + +func1(cb2) +func2(cb2) + + +def cb3(x: str, y: str) -> None: + ... + + +# This should generate an error. +func1(cb3) + +# This should generate an error. +func2(cb3) diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 41a466514..1c0a9ee2a 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -27,7 +27,7 @@ test('Module2', () => { test('Ellipsis1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['ellipsis1.pyi']); - TestUtils.validateResults(analysisResults, 11); + TestUtils.validateResults(analysisResults, 10); }); test('Generator1', () => { diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index d68ac8870..414024ff3 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -1048,6 +1048,11 @@ test('ParamSpec45', () => { TestUtils.validateResults(results, 0); }); +test('ParamSpec46', () => { + const results = TestUtils.typeAnalyzeSampleFiles(['paramSpec46.py']); + TestUtils.validateResults(results, 2); +}); + test('ClassVar1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['classVar1.py']); From 99825fbc16e9ef4027b5a6f09ecbbf029f191f6a Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Mon, 14 Aug 2023 23:03:52 -0700 Subject: [PATCH 502/525] Tweaked some error messages to improve consistency. --- .../src/localization/package.nls.en-us.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 887d06d13..d3f58cbe0 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -119,8 +119,8 @@ "duplicateStarStarPattern": "Only one \"**\" entry allowed", "duplicatePositionOnly": "Only one \"/\" parameter allowed", "duplicateUnpack": "Only one unpack operation allowed in list", - "ellipsisContext": "\"...\" not allowed in this context", - "ellipsisSecondArg": "\"...\" allowed only as the second of two arguments", + "ellipsisContext": "\"...\" is not allowed in this context", + "ellipsisSecondArg": "\"...\" is allowed only as the second of two arguments", "enumClassOverride": "Enum class \"{name}\" is final and cannot be subclassed", "exceptionGroupIncompatible": "Exception group syntax (\"except*\") requires Python 3.11 or newer", "exceptionTypeIncorrect": "\"{type}\" does not derive from BaseException", @@ -174,7 +174,7 @@ "expectedTypeParameterName": "Expected type parameter name", "expectedYieldExpr": "Expected expression in yield statement", "finalClassIsAbstract": "Class \"{type}\" is marked final and must implement all abstract methods", - "finalContext": "\"Final\" not allowed in this context", + "finalContext": "\"Final\" is not allowed in this context", "finalMethodOverride": "Method \"{name}\" cannot override final method defined in class \"{className}\"", "finalReassigned": "\"{name}\" is declared as Final and cannot be reassigned", "finalRedeclaration": "\"{name}\" was previously declared as Final", @@ -323,7 +323,7 @@ "paramSpecArgsMissing": "Arguments for ParamSpec \"{type}\" are missing", "paramSpecArgsUsage": "\"args\" member of ParamSpec is valid only when used with *args parameter", "paramSpecAssignedName": "ParamSpec must be assigned to a variable named \"{name}\"", - "paramSpecContext": "ParamSpec not allowed in this context", + "paramSpecContext": "ParamSpec is not allowed in this context", "paramSpecDefaultNotTuple": "Expected ellipsis, a tuple expression, or ParamSpec for default value of ParamSpec", "paramSpecFirstArg": "Expected name of ParamSpec as first argument", "paramSpecKwargsUsage": "\"kwargs\" member of ParamSpec is valid only when used with **kwargs parameter", @@ -493,7 +493,7 @@ "typeVarScopedToReturnType": "Type variable \"{name}\" is scoped to a callable within the return type and cannot be referenced in the function body", "typeVarSingleConstraint": "TypeVar must have at least two constrained types", "typeVarsNotInGenericOrProtocol": "Generic[] or Protocol[] must include all type variables", - "typeVarTupleContext": "TypeVarTuple not allowed in this context", + "typeVarTupleContext": "TypeVarTuple is not allowed in this context", "typeVarTupleDefaultNotUnpacked": "TypeVarTuple default type must be an unpacked tuple or TypeVarTuple", "typeVarTupleMustBeUnpacked": "Unpack operator is required for TypeVarTuple value", "typeVarTupleUnknownParam": "\"{name}\" is unknown parameter to TypeVarTuple", @@ -541,8 +541,8 @@ "unpackInAnnotation": "Unpack operator not allowed in type annotation", "unpackInDict": "Unpack operation not allowed in dictionaries", "unpackInSet": "Unpack operator not allowed within a set", - "unpackNotAllowed": "Unpack not allowed in this context", - "unpackOperatorNotAllowed": "Unpack operation not allowed in this context", + "unpackNotAllowed": "Unpack is not allowed in this context", + "unpackOperatorNotAllowed": "Unpack operation is not allowed in this context", "unpackTuplesIllegal": "Unpack operation not allowed in tuples prior to Python 3.8", "unreachableCode": "Code is unreachable", "unreachableExcept": "Except clause is unreachable because exception is already handled", @@ -556,7 +556,7 @@ "variadicTypeParamTooManyAlias": "Type alias can have at most one TypeVarTuple type parameter but received multiple ({names})", "variadicTypeParamTooManyClass": "Generic class can have at most one TypeVarTuple type parameter but received multiple ({names})", "walrusIllegal": "Operator \":=\" requires Python 3.8 or newer", - "walrusNotAllowed": "Operator \":=\" not allowed in this context without surrounding parentheses", + "walrusNotAllowed": "Operator \":=\" is not allowed in this context without surrounding parentheses", "wildcardInFunction": "Wildcard import not allowed within a class or function", "wildcardPatternTypeUnknown": "Type captured by wildcard pattern is unknown", "wildcardPatternTypePartiallyUnknown": "Type captured by wildcard pattern is partially unknown", @@ -566,7 +566,7 @@ "yieldOutsideFunction": "\"yield\" not allowed outside of a function or lambda", "yieldWithinListCompr": "\"yield\" not allowed inside a list comprehension", "zeroCaseStatementsFound": "Match statement must include at least one case statement", - "zeroLengthTupleNotAllowed": "Zero-length tuple not allowed in this context" + "zeroLengthTupleNotAllowed": "Zero-length tuple is not allowed in this context" }, "DiagnosticAddendum": { "argParam": "Argument corresponds to parameter \"{paramName}\"", From 215fc47d367a5b9bb6b0e29311a9e83411b5fb2d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 08:57:21 -0700 Subject: [PATCH 503/525] Fixed a bug that led to a false negative when assigning a dictionary literal expression to a TypeVar bound to a TypedDict. This addresses https://github.com/microsoft/pyright/issues/5708. --- .../src/analyzer/typeEvaluator.ts | 36 ++++++++++--------- .../src/tests/samples/typedDict24.py | 18 ++++++++++ .../src/tests/typeEvaluator2.test.ts | 12 +++++++ 3 files changed, 49 insertions(+), 17 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/typedDict24.py diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 7b12e8ca7..15873dd7f 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -12719,7 +12719,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions expectedDiagAddendum?: DiagnosticAddendum ): TypeResult | undefined { inferenceContext.expectedType = transformPossibleRecursiveTypeAlias(inferenceContext.expectedType); - const concreteExpectedType = makeTopLevelTypeVarsConcrete(inferenceContext.expectedType); + let concreteExpectedType = makeTopLevelTypeVarsConcrete(inferenceContext.expectedType); if (!isClassInstance(concreteExpectedType)) { return undefined; @@ -12731,6 +12731,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Handle TypedDict's as a special case. if (ClassType.isTypedDictClass(concreteExpectedType)) { + // Remove any conditions associated with the type so the resulting type isn't + // considered compatible with a bound TypeVar. + concreteExpectedType = TypeBase.cloneForCondition(concreteExpectedType, undefined); + const expectedTypedDictEntries = getTypedDictMembersForClass(evaluatorInterface, concreteExpectedType); // Infer the key and value types if possible. @@ -12750,22 +12754,20 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isIncomplete = true; } - if (ClassType.isTypedDictClass(concreteExpectedType)) { - const resultTypedDict = assignToTypedDict( - evaluatorInterface, - concreteExpectedType, - keyTypes, - valueTypes, - // Don't overwrite existing expectedDiagAddendum messages if they were - // already provided by getKeyValueTypesFromDictionary. - expectedDiagAddendum?.isEmpty() ? expectedDiagAddendum : undefined - ); - if (resultTypedDict) { - return { - type: resultTypedDict, - isIncomplete, - }; - } + const resultTypedDict = assignToTypedDict( + evaluatorInterface, + concreteExpectedType, + keyTypes, + valueTypes, + // Don't overwrite existing expectedDiagAddendum messages if they were + // already provided by getKeyValueTypesFromDictionary. + expectedDiagAddendum?.isEmpty() ? expectedDiagAddendum : undefined + ); + if (resultTypedDict) { + return { + type: resultTypedDict, + isIncomplete, + }; } return undefined; diff --git a/packages/pyright-internal/src/tests/samples/typedDict24.py b/packages/pyright-internal/src/tests/samples/typedDict24.py new file mode 100644 index 000000000..1f8243b61 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/typedDict24.py @@ -0,0 +1,18 @@ +# This sample tests the handling of a TypedDict used as a bound +# for a TypeVar. + + +from typing import Generic, TypeVar, TypedDict + + +class TD1(TypedDict): + a: str + + +T1 = TypeVar("T1", bound=TD1) + + +class A(Generic[T1]): + def method1(self) -> T1: + # This should generate an error. + return {"a": ""} diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index d327307b7..37c1656a9 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1437,6 +1437,18 @@ test('TypedDict22', () => { TestUtils.validateResults(analysisResults, 0); }); +test('TypedDict23', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDict23.py']); + + TestUtils.validateResults(analysisResults, 0); +}); + +test('TypedDict24', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typedDict24.py']); + + TestUtils.validateResults(analysisResults, 1); +}); + test('TypedDictInline1', () => { const configOptions = new ConfigOptions('.'); configOptions.diagnosticRuleSet.enableExperimentalFeatures = true; From 7fcf314787586f3d08dcc68c9569bbf9f48311cf Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 10:59:29 -0700 Subject: [PATCH 504/525] Fixed a bug that led to a false negative when a TypeVar was used inappropriately in certain cases. This addresses #5710. (#5727) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 15 ++++++++------- .../src/analyzer/typeEvaluatorTypes.ts | 4 ++-- .../src/tests/samples/typeAlias3.py | 2 +- .../src/tests/samples/typeVar3.py | 4 ++++ .../src/tests/typeEvaluator4.test.ts | 2 +- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 15873dd7f..f055dc6e0 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -1584,8 +1584,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions if (options?.associateTypeVarsWithScope) { evaluatorFlags |= EvaluatorFlags.AssociateTypeVarsWithCurrentScope; - } else { - evaluatorFlags |= EvaluatorFlags.DisallowTypeVarsWithoutScopeId; } if (options?.allowUnpackedTypedDict) { @@ -4621,7 +4619,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } } - } else if ((flags & EvaluatorFlags.DisallowTypeVarsWithoutScopeId) !== 0) { + } else if ((flags & EvaluatorFlags.AllowTypeVarsWithoutScopeId) === 0) { if ( (type.scopeId === undefined || scopedTypeVarInfo.foundInterveningClass) && !type.details.isSynthesized @@ -4877,7 +4875,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions EvaluatorFlags.AllowForwardReferences | EvaluatorFlags.NotParsedByInterpreter | EvaluatorFlags.DisallowTypeVarsWithScopeId | - EvaluatorFlags.DisallowTypeVarsWithoutScopeId | EvaluatorFlags.AssociateTypeVarsWithCurrentScope)); const baseTypeResult = getTypeOfExpression(node.leftExpression, baseTypeFlags); @@ -12285,7 +12282,11 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions typeParameters = []; let isTypeParamListValid = true; typeParamsExpr.expressions.map((expr) => { - let entryType = getTypeOfExpression(expr, EvaluatorFlags.ExpectingInstantiableType).type; + let entryType = getTypeOfExpression( + expr, + EvaluatorFlags.ExpectingInstantiableType | EvaluatorFlags.AllowTypeVarsWithoutScopeId + ).type; + if (isTypeVar(entryType)) { if (entryType.scopeId) { isTypeParamListValid = false; @@ -19273,8 +19274,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions EvaluatorFlags.EvaluateStringLiteralAsType | EvaluatorFlags.DisallowClassVar; - if (!options?.allowTypeVarsWithoutScopeId) { - flags |= EvaluatorFlags.DisallowTypeVarsWithoutScopeId; + if (options?.allowTypeVarsWithoutScopeId) { + flags |= EvaluatorFlags.AllowTypeVarsWithoutScopeId; } const fileInfo = AnalyzerNodeInfo.getFileInfo(node); diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index cbb7b5940..e1e302465 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -100,9 +100,9 @@ export const enum EvaluatorFlags { // used in an outer scope. DisallowTypeVarsWithScopeId = 1 << 11, - // TypeVars within this expression must refer to type vars + // TypeVars within this expression do not need to refer to type vars // used in an outer scope. - DisallowTypeVarsWithoutScopeId = 1 << 12, + AllowTypeVarsWithoutScopeId = 1 << 12, // TypeVars within this expression that are otherwise not // associated with an outer scope should be associated with diff --git a/packages/pyright-internal/src/tests/samples/typeAlias3.py b/packages/pyright-internal/src/tests/samples/typeAlias3.py index 0061606f4..b66e9cc9d 100644 --- a/packages/pyright-internal/src/tests/samples/typeAlias3.py +++ b/packages/pyright-internal/src/tests/samples/typeAlias3.py @@ -32,4 +32,4 @@ def __new__(cls, value: T) -> "ClassA[T]": Func = Callable[P, T] AnyFunc = Func[P, int] -AnyFunc[P] +AnyFunc[...] diff --git a/packages/pyright-internal/src/tests/samples/typeVar3.py b/packages/pyright-internal/src/tests/samples/typeVar3.py index 6cc3805e3..b768c69c3 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar3.py +++ b/packages/pyright-internal/src/tests/samples/typeVar3.py @@ -70,3 +70,7 @@ def inner(v: T) -> T: return v return inner + + +# This should generate an error. +list[T]() diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 414024ff3..69a70eed6 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -1092,7 +1092,7 @@ test('TypeVar2', () => { test('TypeVar3', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['typeVar3.py']); - TestUtils.validateResults(analysisResults, 11); + TestUtils.validateResults(analysisResults, 12); }); test('TypeVar4', () => { From 15588f9bf8dbdd5f861ae515a48f909e8bb16c4f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 11:37:43 -0700 Subject: [PATCH 505/525] Fixed bug in protocol matching that led to an incorrect protocol match with a NamedTuple. Fields in a NamedTuple are implicitly read-only, so a writable protocol should not match. This addresses #5683. --- .../src/analyzer/protocols.ts | 19 +++++++++++++ .../src/localization/localize.ts | 2 ++ .../src/localization/package.nls.en-us.json | 1 + .../src/tests/samples/protocol3.py | 28 ++++++++++++++++++- .../src/tests/typeEvaluator2.test.ts | 2 +- 5 files changed, 50 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/protocols.ts b/packages/pyright-internal/src/analyzer/protocols.ts index c0f2c99ca..d9359be20 100644 --- a/packages/pyright-internal/src/analyzer/protocols.ts +++ b/packages/pyright-internal/src/analyzer/protocols.ts @@ -13,6 +13,7 @@ import { Localizer } from '../localization/localize'; import { assignTypeToTypeVar } from './constraintSolver'; import { DeclarationType } from './declaration'; import { assignProperty } from './properties'; +import { getLastTypedDeclaredForSymbol } from './symbolUtils'; import { TypeEvaluator } from './typeEvaluatorTypes'; import { ClassType, @@ -480,6 +481,24 @@ function assignClassToProtocolInternal( } typesAreConsistent = false; } + + const destPrimaryDecl = getLastTypedDeclaredForSymbol(symbol); + const srcPrimaryDecl = getLastTypedDeclaredForSymbol(srcMemberInfo.symbol); + + if ( + destPrimaryDecl?.type === DeclarationType.Variable && + srcPrimaryDecl?.type === DeclarationType.Variable + ) { + const isDestConst = !!destPrimaryDecl.isConstant; + const isSrcConst = ClassType.isReadOnlyInstanceVariables(srcType) || !!srcPrimaryDecl.isConstant; + + if (!isDestConst && isSrcConst) { + if (subDiag) { + subDiag.addMessage(Localizer.DiagnosticAddendum.memberIsWritableInProtocol().format({ name })); + } + typesAreConsistent = false; + } + } }); }); diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index a9daf6604..0c31ab7e1 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -1190,6 +1190,8 @@ export namespace Localizer { new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.memberIsInvariant')); export const memberIsNotFinalInProtocol = () => new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.memberIsNotFinalInProtocol')); + export const memberIsWritableInProtocol = () => + new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.memberIsWritableInProtocol')); export const memberSetClassVar = () => new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.memberSetClassVar')); export const memberTypeMismatch = () => diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index d3f58cbe0..8360cb45c 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -610,6 +610,7 @@ "memberIsInitVar": "Member \"{name}\" is an init-only field", "memberIsInvariant": "\"{name}\" is invariant because it is mutable", "memberIsNotFinalInProtocol": "\"{name}\" is not marked Final in protocol", + "memberIsWritableInProtocol": "\"{name}\" is writable in protocol", "memberTypeMismatch": "\"{name}\" is an incompatible type", "memberUnknown": "Member \"{name}\" is unknown", "missingProtocolMember": "Member \"{name}\" is declared in protocol class \"{classType}\"", diff --git a/packages/pyright-internal/src/tests/samples/protocol3.py b/packages/pyright-internal/src/tests/samples/protocol3.py index 466bbce75..3a17e6dad 100644 --- a/packages/pyright-internal/src/tests/samples/protocol3.py +++ b/packages/pyright-internal/src/tests/samples/protocol3.py @@ -1,7 +1,7 @@ # This sample tests the assignment of protocols that # include property declarations. -from typing import ContextManager, Protocol, TypeVar +from typing import ContextManager, NamedTuple, Protocol, TypeVar class Class1(Protocol): @@ -132,3 +132,29 @@ def bar(self: C6) -> ContextManager[C6]: i: MockClass6 = Class6() + + +class Proto7(Protocol): + x: str + + +class Class7(NamedTuple): + x: str + + +# This should generate an error because the protocol +# indicates that 'a' must be writable. +a: Proto7 = Class7("") + + +class Proto8(Protocol): + @property + def x(self) -> str: + ... + + +class Class8(NamedTuple): + x: str + + +b: Proto8 = Class8("") diff --git a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts index 37c1656a9..cbe78ab34 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator2.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator2.test.ts @@ -1052,7 +1052,7 @@ test('Protocol2', () => { test('Protocol3', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['protocol3.py']); - TestUtils.validateResults(analysisResults, 3); + TestUtils.validateResults(analysisResults, 4); }); test('Protocol4', () => { From c55294799981dc8b8640f43ca089f607b80797ee Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 12:59:56 -0700 Subject: [PATCH 506/525] Added type compatibility enforcement for symbols imported via a wildcard import. This addresses #5704. (#5728) Co-authored-by: Eric Traut --- .../pyright-internal/src/analyzer/checker.ts | 3 + .../src/analyzer/typeEvaluator.ts | 81 +++++++++++++++---- .../src/localization/localize.ts | 4 + .../src/localization/package.nls.en-us.json | 1 + .../src/tests/samples/import17.py | 5 ++ .../src/tests/samples/import18.py | 8 ++ .../src/tests/samples/import7.py | 4 +- .../src/tests/typeEvaluator4.test.ts | 5 ++ 8 files changed, 93 insertions(+), 18 deletions(-) create mode 100644 packages/pyright-internal/src/tests/samples/import17.py create mode 100644 packages/pyright-internal/src/tests/samples/import18.py diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index a139e85f5..c5d2abf2a 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -1495,11 +1495,14 @@ export class Checker extends ParseTreeWalker { } this._conditionallyReportShadowedImport(node); + if (!node.isWildcardImport) { node.imports.forEach((importAs) => { this._evaluator.evaluateTypesForStatement(importAs); }); } else { + this._evaluator.evaluateTypesForStatement(node); + const importInfo = AnalyzerNodeInfo.getImportInfo(node.module); if ( importInfo && diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index f055dc6e0..b58308033 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -83,7 +83,9 @@ import * as AnalyzerNodeInfo from './analyzerNodeInfo'; import { CodeFlowAnalyzer, FlowNodeTypeOptions, FlowNodeTypeResult, getCodeFlowEngine } from './codeFlowEngine'; import { CodeFlowReferenceExpressionNode, + FlowFlags, FlowNode, + FlowWildcardImport, createKeyForReference, isCodeFlowSupportedForReference, wildcardImportReferenceKey, @@ -18059,27 +18061,74 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return; } - // Use the first element of the name parts as the symbol. - const symbolNameNode = node.module.nameParts[0]; + if (node.isWildcardImport) { + // Write back a dummy type so we don't evaluate this node again. + writeTypeCache(node, { type: AnyType.create() }, EvaluatorFlags.None); - // Look up the symbol to find the alias declaration. - let symbolType = getAliasedSymbolTypeForName(node, symbolNameNode.value); - if (!symbolType) { - return; - } + const flowNode = AnalyzerNodeInfo.getFlowNode(node); + if (flowNode && (flowNode.flags & FlowFlags.WildcardImport) !== 0) { + const wildcardFlowNode = flowNode as FlowWildcardImport; + wildcardFlowNode.names.forEach((name) => { + const importedSymbolType = getAliasedSymbolTypeForName(node, name); - // Is there a cached module type associated with this node? If so, use - // it instead of the type we just created. - const cachedModuleType = readTypeCache(node, EvaluatorFlags.None) as ModuleType; - if (cachedModuleType && isModule(cachedModuleType) && symbolType) { - if (isTypeSame(symbolType, cachedModuleType)) { - symbolType = cachedModuleType; + if (!importedSymbolType) { + return; + } + + const symbolWithScope = lookUpSymbolRecursive(node, name, /* honorCodeFlow */ false); + if (!symbolWithScope) { + return; + } + + const declaredType = getDeclaredTypeOfSymbol(symbolWithScope.symbol)?.type; + if (!declaredType) { + return; + } + + const diagAddendum = new DiagnosticAddendum(); + + if (!assignType(declaredType, importedSymbolType, diagAddendum)) { + addDiagnostic( + AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, + DiagnosticRule.reportGeneralTypeIssues, + Localizer.Diagnostic.typeAssignmentMismatchWildcard().format({ + ...printSrcDestTypes(importedSymbolType, declaredType), + name, + }) + diagAddendum.getString(), + node, + node.wildcardToken ?? node + ); + } + }); } - } + } else { + // Use the first element of the name parts as the symbol. + const symbolNameNode = node.module.nameParts[0]; - assignTypeToNameNode(symbolNameNode, symbolType, /* isIncomplete */ false, /* ignoreEmptyContainers */ false); + // Look up the symbol to find the alias declaration. + let symbolType = getAliasedSymbolTypeForName(node, symbolNameNode.value); + if (!symbolType) { + return; + } - writeTypeCache(node, { type: symbolType }, EvaluatorFlags.None); + // Is there a cached module type associated with this node? If so, use + // it instead of the type we just created. + const cachedModuleType = readTypeCache(node, EvaluatorFlags.None) as ModuleType; + if (cachedModuleType && isModule(cachedModuleType) && symbolType) { + if (isTypeSame(symbolType, cachedModuleType)) { + symbolType = cachedModuleType; + } + } + + assignTypeToNameNode( + symbolNameNode, + symbolType, + /* isIncomplete */ false, + /* ignoreEmptyContainers */ false + ); + + writeTypeCache(node, { type: symbolType }, EvaluatorFlags.None); + } } function evaluateTypesForTypeAnnotationNode(node: TypeAnnotationNode) { diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 0c31ab7e1..50a6080e6 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -889,6 +889,10 @@ export namespace Localizer { new ParameterizedString<{ sourceType: string; destType: string }>( getRawString('Diagnostic.typeAssignmentMismatch') ); + export const typeAssignmentMismatchWildcard = () => + new ParameterizedString<{ name: string; sourceType: string; destType: string }>( + getRawString('Diagnostic.typeAssignmentMismatchWildcard') + ); export const typeCallNotAllowed = () => getRawString('Diagnostic.typeCallNotAllowed'); export const typeCommentDeprecated = () => getRawString('Diagnostic.typeCommentDeprecated'); export const typedDictAccess = () => getRawString('Diagnostic.typedDictAccess'); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 8360cb45c..b22ed36b6 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -438,6 +438,7 @@ "typeArgsTooFew": "Too few type arguments provided for \"{name}\"; expected {expected} but received {received}", "typeArgsTooMany": "Too many type arguments provided for \"{name}\"; expected {expected} but received {received}", "typeAssignmentMismatch": "Expression of type \"{sourceType}\" cannot be assigned to declared type \"{destType}\"", + "typeAssignmentMismatchWildcard": "Import symbol \"{name}\" has type \"{sourceType}\", which cannot be assigned to declared type \"{destType}\"", "typeCallNotAllowed": "type() call should not be used in type annotation", "typeCommentDeprecated": "Use of type comments is deprecated; use type annotation instead", "typedDictAccess": "Could not access item in TypedDict", diff --git a/packages/pyright-internal/src/tests/samples/import17.py b/packages/pyright-internal/src/tests/samples/import17.py new file mode 100644 index 000000000..ee365f082 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/import17.py @@ -0,0 +1,5 @@ +# This sample is used by import18.py. + +a: str = "hi" +b: float = 1.0 +c: int diff --git a/packages/pyright-internal/src/tests/samples/import18.py b/packages/pyright-internal/src/tests/samples/import18.py new file mode 100644 index 000000000..747710c0e --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/import18.py @@ -0,0 +1,8 @@ +# This should generate two errors because b and c overwrite declared +# types in an incompatible manner. +from .import17 import * + +a: str +b: str +c: str +d: str diff --git a/packages/pyright-internal/src/tests/samples/import7.py b/packages/pyright-internal/src/tests/samples/import7.py index 8215918c3..0d5388d3e 100644 --- a/packages/pyright-internal/src/tests/samples/import7.py +++ b/packages/pyright-internal/src/tests/samples/import7.py @@ -4,11 +4,11 @@ from .import5 import * -class Foo: +class A: # This should generate an error. from .import5 import * -def bar(): +def func1(): # This should generate an error. from .import5 import * diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index 69a70eed6..185dc40ce 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -212,6 +212,11 @@ test('Import16', () => { TestUtils.validateResults(analysisResults, 0); }); +test('Import18', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['import18.py']); + TestUtils.validateResults(analysisResults, 2); +}); + test('DunderAll1', () => { const configOptions = new ConfigOptions('.'); From 682961d7ecf387baba74757f0db8d4408002d5ef Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 14:30:43 -0700 Subject: [PATCH 507/525] Added support for indexing into tuples of indeterminate length as long as the index is positive and falls within a determinate portion. This addresses #5726. (#5729) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 18 +++++++++------ .../src/analyzer/typeUtils.ts | 23 +++++++++++++++++++ .../src/tests/samples/tuple1.py | 15 +++++++++--- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index b58308033..bdcdafcf4 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -228,6 +228,7 @@ import { isPartlyUnknown, isProperty, isTupleClass, + isTupleIndexUnambiguous, isTypeAliasPlaceholder, isTypeAliasRecursive, isTypeVarLimitedToCallable, @@ -7093,13 +7094,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const indexValue = valueType.literalValue; const tupleType = getSpecializedTupleType(baseType); - if (tupleType && tupleType.tupleTypeArguments && !isUnboundedTupleClass(tupleType)) { - if (indexValue >= 0 && indexValue < tupleType.tupleTypeArguments.length) { - return { type: tupleType.tupleTypeArguments[indexValue].type }; - } else if (indexValue < 0 && tupleType.tupleTypeArguments.length + indexValue >= 0) { - return { - type: tupleType.tupleTypeArguments[tupleType.tupleTypeArguments.length + indexValue].type, - }; + if (tupleType && tupleType.tupleTypeArguments) { + if (isTupleIndexUnambiguous(tupleType, indexValue)) { + if (indexValue >= 0 && indexValue < tupleType.tupleTypeArguments.length) { + return { type: tupleType.tupleTypeArguments[indexValue].type }; + } else if (indexValue < 0 && tupleType.tupleTypeArguments.length + indexValue >= 0) { + return { + type: tupleType.tupleTypeArguments[tupleType.tupleTypeArguments.length + indexValue] + .type, + }; + } } } } else if (isClassInstance(valueType) && ClassType.isBuiltIn(valueType, 'slice')) { diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 524c1212a..bcc20955a 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -998,6 +998,29 @@ export function isUnboundedTupleClass(type: ClassType) { ); } +// Indicates whether the specified index is within range and its type is unambiguous +// in that it doesn't involve any element ranges that are of indeterminate length. +export function isTupleIndexUnambiguous(type: ClassType, index: number) { + if (!type.tupleTypeArguments) { + return false; + } + + if (index < 0) { + if (isUnboundedTupleClass(type) || type.tupleTypeArguments.length + index < 0) { + return false; + } + } + + let unambiguousIndexLimit = type.tupleTypeArguments.findIndex( + (t) => t.isUnbounded || isUnpackedVariadicTypeVar(t.type) + ); + if (unambiguousIndexLimit < 0) { + unambiguousIndexLimit = type.tupleTypeArguments.length; + } + + return index < unambiguousIndexLimit; +} + // Partially specializes a type within the context of a specified // (presumably specialized) class. Optionally specializes the `Self` // type variables, replacing them with selfClass. diff --git a/packages/pyright-internal/src/tests/samples/tuple1.py b/packages/pyright-internal/src/tests/samples/tuple1.py index 9acc8ec96..70ea69c8b 100644 --- a/packages/pyright-internal/src/tests/samples/tuple1.py +++ b/packages/pyright-internal/src/tests/samples/tuple1.py @@ -185,10 +185,19 @@ def func13( v13[0] v14 = e[0] - reveal_type(v14, expected_text="int | str | float") + reveal_type(v14, expected_text="int") - v15 = f[0] - reveal_type(v15, expected_text="int | Union[*Ts@func13] | float") + v15 = e[1] + reveal_type(v15, expected_text="int | str | float") + + v16 = f[0] + reveal_type(v16, expected_text="int") + + v17 = f[1] + reveal_type(v17, expected_text="int | Union[*Ts@func13] | float") + + v18 = f[-1] + reveal_type(v18, expected_text="int | Union[*Ts@func13] | float") def func14(): From 97e432a99ea004a79a353ea897f5cd502e4fd703 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 14:42:06 -0700 Subject: [PATCH 508/525] Fixed type narrowing bug that affected the `A is B` type narrowing pattern when `A` has the type `type`. This addresses #5714. --- packages/pyright-internal/src/analyzer/typeGuards.ts | 4 ++++ .../src/tests/samples/typeNarrowingIsClass1.py | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index e5a260cd3..41c1c6eae 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -2105,6 +2105,10 @@ function narrowTypeForClassComparison( } if (isClassInstance(concreteSubtype) && TypeBase.isInstance(subtype)) { + if (ClassType.isBuiltIn(concreteSubtype, 'type')) { + return classType; + } + return undefined; } diff --git a/packages/pyright-internal/src/tests/samples/typeNarrowingIsClass1.py b/packages/pyright-internal/src/tests/samples/typeNarrowingIsClass1.py index 22c299f09..96fca0de4 100644 --- a/packages/pyright-internal/src/tests/samples/typeNarrowingIsClass1.py +++ b/packages/pyright-internal/src/tests/samples/typeNarrowingIsClass1.py @@ -56,3 +56,10 @@ def func5(x: type[A] | type[B] | type[T]) -> type[A] | type[B] | type[T]: reveal_type(x, expected_text="type[B] | type[T@func5]") return x + + +def func6(x: type): + if x is str: + reveal_type(x, expected_text="type[str]") + else: + reveal_type(x, expected_text="type") From 88c3b750b017bf3619b4121da310286f208ca378 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 15:11:11 -0700 Subject: [PATCH 509/525] Fixed false positive where an inner function within a method uses a TypeVar to annotate its parameter. The variance of the TypeVar shouldn't be checked in this case, whereas it should be for the method. This addresses #5687. --- packages/pyright-internal/src/analyzer/checker.ts | 2 ++ packages/pyright-internal/src/tests/samples/typeVar4.py | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index c5d2abf2a..e29a99075 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -579,6 +579,7 @@ export class Checker extends ParseTreeWalker { this.walk(param.typeAnnotationComment); } + // Look for method parameters that are typed with TypeVars that have the wrong variance. if (functionTypeResult) { const annotationNode = param.typeAnnotation || param.typeAnnotationComment; if (annotationNode && index < functionTypeResult.functionType.details.parameters.length) { @@ -586,6 +587,7 @@ export class Checker extends ParseTreeWalker { const exemptMethods = ['__init__', '__new__']; if ( + containingClassNode && isTypeVar(paramType) && paramType.details.declaredVariance === Variance.Covariant && !paramType.details.isSynthesized && diff --git a/packages/pyright-internal/src/tests/samples/typeVar4.py b/packages/pyright-internal/src/tests/samples/typeVar4.py index afe2b1f20..459cc4c34 100644 --- a/packages/pyright-internal/src/tests/samples/typeVar4.py +++ b/packages/pyright-internal/src/tests/samples/typeVar4.py @@ -16,7 +16,10 @@ def func1(self, a: _T): # This should generate an error because covariant # TypeVars are not allowed for input parameters. def func2(self, a: _T_co): - pass + def inner(b: _T_co) -> None: + pass + + return inner def func3(self, a: int | _T_co): pass From 50a930a09bad27a6f946515b9cdeb148f0435f15 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 15:34:13 -0700 Subject: [PATCH 510/525] Fixed a bug that led to a false positive when accessing a `cached_property` defined on an enum. This addresses #5696. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bdcdafcf4..2aa9ef261 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -5729,10 +5729,16 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ]; if (usage.method === 'get') { - // Provide "objtype" argument. + // Provide "owner" argument. + // Use Any rather than None for the owner argument if accessing through an object. + // None is more correct, but it doesn't really matter, and many descriptor classes + // incorrectly annotate the owner parameter. Rather than create a bunch of noise, + // we'll use Any here. argList.push({ argumentCategory: ArgumentCategory.Simple, - typeResult: { type: baseTypeClass }, + typeResult: { + type: isAccessedThroughObject ? AnyType.create() : baseTypeClass, + }, }); } else if (usage.method === 'set') { // Provide "value" argument. From 32ef0a2c90b52f18f0842df2126af07cb5930f40 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 18:02:40 -0700 Subject: [PATCH 511/525] Fixed a bug in import resolver that caused a site-packages module to be preferred over a local module if the site-packages package is "py.typed". This addresses #5719. --- packages/pyright-internal/src/analyzer/importResolver.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 002096b51..7904ff5dc 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -1700,7 +1700,9 @@ export class ImportResolver { if (bestImportSoFar.pyTypedInfo && !newImport.pyTypedInfo) { return bestImportSoFar; } else if (!bestImportSoFar.pyTypedInfo && newImport.pyTypedInfo) { - return newImport; + if (bestImportSoFar.importType === newImport.importType) { + return newImport; + } } // Prefer pyi over py. From e728500dce4129c3c15569d2678ae62ec61a5d8c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 20:03:33 -0700 Subject: [PATCH 512/525] Fixed bug that led to a false positive when a two-argument form of a `super` call used `type` as the first argument. This addresses #5685. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 5 ++++- packages/pyright-internal/src/tests/samples/super2.py | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 2aa9ef261..7028ea2f2 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -8152,7 +8152,10 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions bindToType = secondArgType; } else if (isInstantiableClass(secondArgType)) { if (isInstantiableClass(targetClassType)) { - if (!derivesFromClassRecursive(secondArgType, targetClassType, /* ignoreUnknown */ true)) { + if ( + !ClassType.isBuiltIn(targetClassType, 'type') && + !derivesFromClassRecursive(secondArgType, targetClassType, /* ignoreUnknown */ true) + ) { reportError = true; } } diff --git a/packages/pyright-internal/src/tests/samples/super2.py b/packages/pyright-internal/src/tests/samples/super2.py index 95835661b..478ea53d4 100644 --- a/packages/pyright-internal/src/tests/samples/super2.py +++ b/packages/pyright-internal/src/tests/samples/super2.py @@ -62,3 +62,8 @@ def __init__(self) -> None: d1 = DChild1("", 1) d2 = DChild2("") d3 = DChild3() + + +class E: + def __new__(cls) -> "E": + return super(type, cls).__new__(cls) From 8b83caaedafeb8d08c68d12fc0fbd88633d23f6c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Tue, 15 Aug 2023 20:43:54 -0700 Subject: [PATCH 513/525] Published 1.1.323 --- lerna.json | 2 +- packages/pyright-internal/package-lock.json | 4 ++-- packages/pyright-internal/package.json | 2 +- packages/pyright/package-lock.json | 4 ++-- packages/pyright/package.json | 2 +- packages/vscode-pyright/package-lock.json | 4 ++-- packages/vscode-pyright/package.json | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lerna.json b/lerna.json index 3dc036a7a..e11c778aa 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "1.1.322", + "version": "1.1.323", "command": { "version": { "push": false, diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index d86b76a43..a173a6fbf 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright-internal", - "version": "1.1.322", + "version": "1.1.323", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright-internal", - "version": "1.1.322", + "version": "1.1.323", "license": "MIT", "dependencies": { "@iarna/toml": "2.2.5", diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 90cadeef7..81fec2745 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -2,7 +2,7 @@ "name": "pyright-internal", "displayName": "pyright", "description": "Type checker for the Python language", - "version": "1.1.322", + "version": "1.1.323", "license": "MIT", "private": true, "files": [ diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json index d5412b397..c3921fa5c 100644 --- a/packages/pyright/package-lock.json +++ b/packages/pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "pyright", - "version": "1.1.322", + "version": "1.1.323", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pyright", - "version": "1.1.322", + "version": "1.1.323", "license": "MIT", "bin": { "pyright": "index.js", diff --git a/packages/pyright/package.json b/packages/pyright/package.json index 397137769..4136bdb6b 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -2,7 +2,7 @@ "name": "pyright", "displayName": "Pyright", "description": "Type checker for the Python language", - "version": "1.1.322", + "version": "1.1.323", "license": "MIT", "author": { "name": "Microsoft Corporation" diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json index 17946df07..f1614619e 100644 --- a/packages/vscode-pyright/package-lock.json +++ b/packages/vscode-pyright/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-pyright", - "version": "1.1.322", + "version": "1.1.323", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-pyright", - "version": "1.1.322", + "version": "1.1.323", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index 928e028b0..e11d8e02d 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -2,7 +2,7 @@ "name": "vscode-pyright", "displayName": "Pyright", "description": "VS Code static type checking for Python", - "version": "1.1.322", + "version": "1.1.323", "private": true, "license": "MIT", "author": { From 03f79a819f954666593779f21a4c54e7e651d326 Mon Sep 17 00:00:00 2001 From: PylanceBot <99766470+PylanceBot@users.noreply.github.com> Date: Wed, 16 Aug 2023 10:14:35 -0700 Subject: [PATCH 514/525] pull-pylance-with-pyright-1.1.323 (#5736) --- packages/pyright-internal/src/common/serviceProvider.ts | 8 ++++---- packages/pyright-internal/src/languageServerBase.ts | 5 ++++- .../pyright-internal/src/localization/package.nls.cs.json | 5 +++-- .../pyright-internal/src/localization/package.nls.de.json | 5 +++-- .../pyright-internal/src/localization/package.nls.es.json | 5 +++-- .../pyright-internal/src/localization/package.nls.fr.json | 5 +++-- .../pyright-internal/src/localization/package.nls.it.json | 5 +++-- .../pyright-internal/src/localization/package.nls.ja.json | 5 +++-- .../pyright-internal/src/localization/package.nls.ko.json | 5 +++-- .../pyright-internal/src/localization/package.nls.pl.json | 5 +++-- .../src/localization/package.nls.pt-br.json | 5 +++-- .../src/localization/package.nls.qps-ploc.json | 5 +++-- .../pyright-internal/src/localization/package.nls.ru.json | 5 +++-- .../pyright-internal/src/localization/package.nls.tr.json | 5 +++-- .../src/localization/package.nls.zh-cn.json | 5 +++-- .../src/localization/package.nls.zh-tw.json | 3 ++- packages/pyright-internal/src/server.ts | 4 ++-- .../src/tests/harness/fourslash/testState.ts | 6 +++--- 18 files changed, 54 insertions(+), 37 deletions(-) diff --git a/packages/pyright-internal/src/common/serviceProvider.ts b/packages/pyright-internal/src/common/serviceProvider.ts index bce0bb184..c5017245f 100644 --- a/packages/pyright-internal/src/common/serviceProvider.ts +++ b/packages/pyright-internal/src/common/serviceProvider.ts @@ -6,15 +6,15 @@ * Container for different services used within the application. */ -export interface IServiceKey {} +interface InternalKey {} // eslint-disable-next-line @typescript-eslint/no-unused-vars -export class ServiceKey implements IServiceKey {} +export class ServiceKey implements InternalKey {} export class ServiceProvider { - private _container: Map = new Map(); + private _container: Map = new Map(); - constructor(initialServices: { key: IServiceKey; value: any }[] = []) { + constructor(initialServices: { key: InternalKey; value: any }[] = []) { initialServices.forEach((entry) => { this.add(entry.key, entry.value); }); diff --git a/packages/pyright-internal/src/languageServerBase.ts b/packages/pyright-internal/src/languageServerBase.ts index e42207c41..9bfb9f4b5 100644 --- a/packages/pyright-internal/src/languageServerBase.ts +++ b/packages/pyright-internal/src/languageServerBase.ts @@ -351,7 +351,6 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis constructor( protected serverOptions: ServerOptions, protected connection: Connection, - readonly console: ConsoleInterface, uriParserFactory = (fs: FileSystem) => new UriParser(fs) ) { // Stash the base directory into a global variable. @@ -402,6 +401,10 @@ export abstract class LanguageServerBase implements LanguageServerInterface, Dis Extensions.createLanguageServiceExtensions(this); } + get console(): ConsoleInterface { + return this.serverOptions.serviceProvider.console(); + } + // Provides access to the client's window. get window(): RemoteWindow { return this.connection.window; diff --git a/packages/pyright-internal/src/localization/package.nls.cs.json b/packages/pyright-internal/src/localization/package.nls.cs.json index d58cb301c..7063ef5da 100644 --- a/packages/pyright-internal/src/localization/package.nls.cs.json +++ b/packages/pyright-internal/src/localization/package.nls.cs.json @@ -293,7 +293,7 @@ "noOverload": "Zadaným argumentům neodpovídají žádná přetížení pro {name}", "noReturnContainsReturn": "Funkce s deklarovaným návratovým typem NoReturn nemůže obsahovat příkaz return", "noReturnContainsYield": "Funkce s deklarovaným návratovým typem NoReturn nemůže obsahovat příkaz yield", - "noReturnReturnsNone": "Funkce s deklarovaným typem NoReturn nemůže vrátit None", + "noReturnReturnsNone": "Funkce s deklarovaným návratovým typem „NoReturn“ nemůže vrátit „None“.", "nonDefaultAfterDefault": "Nevýchozí argument následuje za výchozím argumentem", "nonLocalInModule": "Nemístní deklarace není povolená na úrovni modulu", "nonLocalNoBinding": "Nenašla se žádná vazba pro nemístní {name}", @@ -383,7 +383,7 @@ "requiredArgCount": "Za povinným argumentem se očekával jeden argument typu", "requiredNotInTypedDict": "Required není v tomto kontextu povoleno", "returnInAsyncGenerator": "Příkaz Return s hodnotou není v asynchronním generátoru povolený", - "returnMissing": "Funkce s deklarovaným typem „{returnType}“ musí vrátit hodnotu na všech cestách kódu.", + "returnMissing": "Funkce s deklarovaným návratovým typem „{returnType}“ musí vracet hodnotu na všech cestách kódu", "returnOutsideFunction": "„return“ se dá použít jenom v rámci funkce", "returnTypeContravariant": "Kontravariantní proměnnou typu nejde použít v návratovém typu", "returnTypeMismatch": "Výraz typu {exprType} není možné přiřadit k návratového typu {returnType}", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "Index {index} je pro typ {type} mimo rozsah", "typeAliasIllegalExpressionForm": "Neplatný formulář výrazu pro definici aliasu typu", "typeAliasIsRecursiveDirect": "Alias typu „{name}“ nemůže ve své definici používat sám sebe", + "typeAliasNotAllowed": "Alias typu „{name}“ se v tomto kontextu nedá použít", "typeAliasNotInModuleOrClass": "Typ TypeAlias je možné definovat pouze v rámci oboru modulu nebo třídy", "typeAliasRedeclared": "{name} se deklaruje jako TypAlias a dá se přiřadit jenom jednou", "typeAliasStatementIllegal": "Příkaz alias typu vyžaduje Python 3.12 nebo novější", diff --git a/packages/pyright-internal/src/localization/package.nls.de.json b/packages/pyright-internal/src/localization/package.nls.de.json index 4dabbab40..da261b119 100644 --- a/packages/pyright-internal/src/localization/package.nls.de.json +++ b/packages/pyright-internal/src/localization/package.nls.de.json @@ -293,7 +293,7 @@ "noOverload": "Keine Überladungen für \"{name}\" stimmen mit den angegebenen Argumenten überein.", "noReturnContainsReturn": "Eine Funktion mit dem deklarierten Rückgabetyp \"NoReturn\" kann keine return-Anweisung enthalten.", "noReturnContainsYield": "Eine Funktion mit dem deklarierten Rückgabetyp \"NoReturn\" kann keine yield-Anweisung enthalten.", - "noReturnReturnsNone": "Eine Funktion mit dem deklarierten Typ \"NoReturn\" kann nicht \"None\" zurückgeben.", + "noReturnReturnsNone": "Eine Funktion mit dem deklarierten Rückgabetyp \"NoReturn\" kann nicht \"None\" zurückgeben.", "nonDefaultAfterDefault": "Das nicht standardmäßige Argument folgt dem Standardargument.", "nonLocalInModule": "Nichtlokale Deklaration auf Modulebene nicht zulässig", "nonLocalNoBinding": "Es wurde keine Bindung für nichtlokale \"{name}\" gefunden.", @@ -383,7 +383,7 @@ "requiredArgCount": "Nach \"Required\" wurde ein einzelnes Typargument erwartet.", "requiredNotInTypedDict": "\"Required\" ist in diesem Kontext nicht zulässig.", "returnInAsyncGenerator": "Eine Return-Anweisung mit einem Wert ist im asynchronen Generator nicht zulässig.", - "returnMissing": "Die Funktion mit dem deklarierten Typ \"{returnType}\" muss einen Wert für alle Codepfade zurückgeben.", + "returnMissing": "Die Funktion mit dem deklarierten Rückgabetyp \"{returnType}\" muss einen Wert für alle Codepfade zurückgeben.", "returnOutsideFunction": "\"return\" kann nur innerhalb einer Funktion verwendet werden.", "returnTypeContravariant": "Die Variable vom Typ \"contravariant\" kann nicht im Rückgabetyp verwendet werden.", "returnTypeMismatch": "Ein Ausdruck vom Typ \"{exprType}\" kann dem Rückgabetyp \"{returnType}\" nicht zugewiesen werden.", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "Der Index {index} liegt für den Typ {type} außerhalb des gültigen Bereichs.", "typeAliasIllegalExpressionForm": "Ungültiges Ausdrucksformular für Typaliasdefinition", "typeAliasIsRecursiveDirect": "Der Typalias \"{name}\" kann sich nicht selbst in seiner Definition verwenden.", + "typeAliasNotAllowed": "Der Typalias \"{name}\" kann in diesem Kontext nicht verwendet werden.", "typeAliasNotInModuleOrClass": "TypeAlias kann nur innerhalb eines Moduls oder Klassenbereichs definiert werden.", "typeAliasRedeclared": "\"{name}\" ist als TypeAlias deklariert und kann nur einmal zugewiesen werden.", "typeAliasStatementIllegal": "Die Typaliasanweisung erfordert Python 3.12 oder höher.", diff --git a/packages/pyright-internal/src/localization/package.nls.es.json b/packages/pyright-internal/src/localization/package.nls.es.json index 67bb45ff9..09c44f20f 100644 --- a/packages/pyright-internal/src/localization/package.nls.es.json +++ b/packages/pyright-internal/src/localization/package.nls.es.json @@ -293,7 +293,7 @@ "noOverload": "Ninguna sobrecarga para \"{name}\" coincide con los argumentos proporcionados", "noReturnContainsReturn": "La función con tipo de retorno declarado \"NoReturn\" no puede incluir una sentencia volver", "noReturnContainsYield": "La función con tipo de retorno declarado \"NoReturn\" no puede incluir una instrucción yield", - "noReturnReturnsNone": "Una función con el tipo declarado \"NoReturn\" no puede devolver \"None\".", + "noReturnReturnsNone": "La función con el tipo de valor devuelto declarado \"NoReturn\" no puede devolver \"None\"", "nonDefaultAfterDefault": "El argumento no predeterminado sigue al argumento predeterminado", "nonLocalInModule": "Declaración no local no permitida a nivel de módulo", "nonLocalNoBinding": "No se ha encontrado ningún enlace para \"{name}\" no local.", @@ -383,7 +383,7 @@ "requiredArgCount": "Se esperaba un único argumento de tipo después de \"Required\"", "requiredNotInTypedDict": "\"Required\" no está permitido en este contexto", "returnInAsyncGenerator": "No se permite la instrucción Return con valor en el generador asincrónico", - "returnMissing": "La función con el tipo declarado \"{returnType}\" debe devolver un valor en todas las rutas de acceso del código.", + "returnMissing": "La función con el tipo de valor devuelto declarado \"{returnType}\" debe devolver un valor en todas las rutas de acceso del código.", "returnOutsideFunction": "\"return\" solo se puede usar dentro de una función", "returnTypeContravariant": "La variable de tipo contravariante no se puede usar en el tipo de valor devuelto", "returnTypeMismatch": "La expresión del tipo \"{exprType}\" no puede asignarse al tipo de retorno \"{returnType}\"", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "El índice {index} está fuera de rango para el tipo {type}.", "typeAliasIllegalExpressionForm": "Forma de expresión no válida para la definición de alias de tipo", "typeAliasIsRecursiveDirect": "El alias de tipo \"{name}\" no puede usarse a sí mismo en su definición", + "typeAliasNotAllowed": "El alias de tipo \"{name}\" no se puede usar en este contexto", "typeAliasNotInModuleOrClass": "Un TypeAlias solo puede definirse en el ámbito de un módulo o de una clase", "typeAliasRedeclared": "\"{name}\" se declara como TypeAlias y solo puede asignarse una vez", "typeAliasStatementIllegal": "La sentencia Type alias requiere Python 3.12 o posterior", diff --git a/packages/pyright-internal/src/localization/package.nls.fr.json b/packages/pyright-internal/src/localization/package.nls.fr.json index 21aa27137..128d82f86 100644 --- a/packages/pyright-internal/src/localization/package.nls.fr.json +++ b/packages/pyright-internal/src/localization/package.nls.fr.json @@ -293,7 +293,7 @@ "noOverload": "Aucune surcharge pour « {name} » ne correspond aux arguments fournis", "noReturnContainsReturn": "La fonction avec le type de retour déclaré « NoReturn » ne peut pas inclure d’instruction de retour", "noReturnContainsYield": "La fonction avec le type de retour déclaré « NoReturn » ne peut pas inclure d’instruction yield", - "noReturnReturnsNone": "La fonction avec le type déclaré « NoReturn » ne peut pas retourner « None »", + "noReturnReturnsNone": "La fonction avec le type de retour déclaré \"NoReturn\" ne peut pas renvoyer \"None\"", "nonDefaultAfterDefault": "L’argument autre que l’argument par défaut suit l’argument par défaut", "nonLocalInModule": "Déclaration non locale non autorisée au niveau du module", "nonLocalNoBinding": "Aucune liaison pour le « {name} » non local trouvé", @@ -383,7 +383,7 @@ "requiredArgCount": "Attendu un argument de type unique après \"Required\"", "requiredNotInTypedDict": "« Obligatoire » n’est pas autorisé dans ce contexte", "returnInAsyncGenerator": "L'instruction de retour avec valeur n'est pas autorisée dans le générateur asynchrone", - "returnMissing": "La fonction avec le type déclaré de \"{returnType}\" doit renvoyer une valeur sur tous les chemins de code", + "returnMissing": "La fonction avec le type de retour déclaré \"{returnType}\" doit renvoyer une valeur sur tous les chemins de code", "returnOutsideFunction": "\"return\" ne peut être utilisé que dans une fonction", "returnTypeContravariant": "La variable de type contravariant ne peut pas être utilisée dans le type de retour", "returnTypeMismatch": "Impossible d’affecter l’expression de type « {exprType} » pour retourner le type « {returnType} »", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "L’index {index} est hors limites pour le type {type}", "typeAliasIllegalExpressionForm": "Formulaire d’expression non valide pour la définition d’alias de type", "typeAliasIsRecursiveDirect": "L'alias de type \"{name}\" ne peut pas s'utiliser lui-même dans sa définition", + "typeAliasNotAllowed": "L'alias de type \"{name}\" ne peut pas être utilisé dans ce contexte", "typeAliasNotInModuleOrClass": "Un TypeAlias ne peut être défini qu’au sein d’un module ou d’une étendue de classe", "typeAliasRedeclared": "« {name} » est déclaré en tant que TypeAlias et ne peut être attribué qu’une seule fois", "typeAliasStatementIllegal": "L’instruction d’alias de type nécessite Python 3.12 ou version ultérieure", diff --git a/packages/pyright-internal/src/localization/package.nls.it.json b/packages/pyright-internal/src/localization/package.nls.it.json index a194b3bfe..26dc7ae1a 100644 --- a/packages/pyright-internal/src/localization/package.nls.it.json +++ b/packages/pyright-internal/src/localization/package.nls.it.json @@ -293,7 +293,7 @@ "noOverload": "Nessun overload per \"{name}\" corrisponde agli argomenti specificati", "noReturnContainsReturn": "La funzione con tipo restituito dichiarato \"NoReturn\" non può includere un'istruzione return", "noReturnContainsYield": "La funzione con il tipo restituito dichiarato \"NoReturn\" non può includere un'istruzione yield", - "noReturnReturnsNone": "La funzione con tipo dichiarato \"NoReturn\" non può restituire \"None\"", + "noReturnReturnsNone": "La funzione con tipo restituito dichiarato \"NoReturn\" non può restituire \"None\"", "nonDefaultAfterDefault": "L'argomento non predefinito segue l'argomento predefinito", "nonLocalInModule": "Dichiarazione non locale non consentita a livello di modulo", "nonLocalNoBinding": "Non è stata trovata alcuna associazione per \"{name}\" non locale", @@ -383,7 +383,7 @@ "requiredArgCount": "Previsto un singolo argomento tipo dopo \"Obbligatorio\"", "requiredNotInTypedDict": "\"Required\" non è consentito in questo contesto", "returnInAsyncGenerator": "L’istruzione return con valore non è consentita nel generatore asincrono", - "returnMissing": "La funzione con tipo dichiarato \"{returnType}\" deve restituire un valore in tutti i percorsi di codice", + "returnMissing": "La funzione con tipo restituito dichiarato \"{returnType}\" deve restituire un valore in tutti i percorsi di codice", "returnOutsideFunction": "\"return\" può essere usata solo all'interno di una funzione.", "returnTypeContravariant": "Non è possibile usare la variabile di tipo controvariante nel tipo restituito", "returnTypeMismatch": "Non è possibile assegnare l'espressione di tipo \"{exprType}\" al tipo restituito \"{returnType}\"", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "L'indice {index} non è compreso nell'intervallo per il tipo {type}", "typeAliasIllegalExpressionForm": "Modulo di espressione non valido per la definizione dell'alias di tipo", "typeAliasIsRecursiveDirect": "L'alias di tipo \"{name}\" non può usare se stesso nella relativa definizione", + "typeAliasNotAllowed": "L'alias di tipo \"{name}\" non può essere usato in questo contesto", "typeAliasNotInModuleOrClass": "TypeAlias può essere definito solo all'interno di un modulo o di una classe", "typeAliasRedeclared": "\"{name}\" è dichiarato come TypeAlias e può essere assegnato una sola volta", "typeAliasStatementIllegal": "L'istruzione alias di tipo richiede Python 3.12 o versione successiva", diff --git a/packages/pyright-internal/src/localization/package.nls.ja.json b/packages/pyright-internal/src/localization/package.nls.ja.json index b0d83243f..c690115e5 100644 --- a/packages/pyright-internal/src/localization/package.nls.ja.json +++ b/packages/pyright-internal/src/localization/package.nls.ja.json @@ -293,7 +293,7 @@ "noOverload": "指定された引数に一致する \"{name}\" のオーバーロードがありません", "noReturnContainsReturn": "戻り値の型が \"NoReturn\" として宣言されている関数に return ステートメントを含めることはできません", "noReturnContainsYield": "戻り値の型 \"NoReturn\" を宣言した関数に yield ステートメントを含めることはできません", - "noReturnReturnsNone": "宣言された型が \"NoReturn\" の関数は \"None\" を返すことができません", + "noReturnReturnsNone": "戻り値の型が \"NoReturn\" として宣言されている関数は \"None\" を返すことができません", "nonDefaultAfterDefault": "既定以外の引数は既定の引数の後に続きます", "nonLocalInModule": "モジュール レベルでは非ローカル宣言は許可されません", "nonLocalNoBinding": "非ローカル \"{name}\" のバインドが見つかりません", @@ -383,7 +383,7 @@ "requiredArgCount": "\"Required\" の後に 1 つの型引数が必要です", "requiredNotInTypedDict": "このコンテキストでは\"必須\" は許可されていません", "returnInAsyncGenerator": "値を持つ return ステートメントは、非同期ジェネレーターでは使用できません", - "returnMissing": "宣言された型が \"{returnType}\" の関数は、すべてのコード パスで値を返す必要があります", + "returnMissing": "戻り値の型が \"{returnType}\" として宣言されている関数は、すべてのコード パスで値を返す必要があります", "returnOutsideFunction": "\"return\" は関数内でのみ使用できます", "returnTypeContravariant": "反変の型変数は戻り値の型では使用できません", "returnTypeMismatch": "型 \"{exprType}\" の式を戻り値の型 \"{returnType}\" に割り当てることはできません", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "インデックス {index} が型 {type} の範囲外です", "typeAliasIllegalExpressionForm": "型エイリアス定義の式フォームが無効です", "typeAliasIsRecursiveDirect": "型エイリアス \"{name}\" は、その定義でそれ自体を使用できません", + "typeAliasNotAllowed": "型のエイリアス \"{name}\" は、このコンテキストでは使用できません", "typeAliasNotInModuleOrClass": "TypeAlias は、モジュールまたはクラススコープ内でのみ定義できます", "typeAliasRedeclared": "\"{name}\" は TypeAlias として宣言されており、1 回だけ割り当てることができます", "typeAliasStatementIllegal": "型エイリアス ステートメントには Python 3.12 以降が必要です", diff --git a/packages/pyright-internal/src/localization/package.nls.ko.json b/packages/pyright-internal/src/localization/package.nls.ko.json index 44b1d4c03..1efd009e9 100644 --- a/packages/pyright-internal/src/localization/package.nls.ko.json +++ b/packages/pyright-internal/src/localization/package.nls.ko.json @@ -293,7 +293,7 @@ "noOverload": "제공된 인수와 일치하는 \"{name}\"에 대한 오버로드가 없습니다.", "noReturnContainsReturn": "선언된 반환 형식이 \"NoReturn\"인 함수는 return 문을 포함할 수 없습니다.", "noReturnContainsYield": "선언된 반환 형식이 \"NoReturn\"인 함수는 yield 문을 포함할 수 없습니다.", - "noReturnReturnsNone": "선언된 형식이 \"NoReturn\"인 함수는 \"None\"을 반환할 수 없습니다.", + "noReturnReturnsNone": "선언된 반환 형식이 \"NoReturn\"인 함수는 \"None\"을 반환할 수 없습니다.", "nonDefaultAfterDefault": "기본값이 아닌 인수가 기본 인수를 따릅니다.", "nonLocalInModule": "모듈 수준에서는 비로컬 선언을 사용할 수 없습니다.", "nonLocalNoBinding": "비로컬 \"{name}\"에 대한 바인딩을 찾을 수 없습니다.", @@ -383,7 +383,7 @@ "requiredArgCount": "‘Required’ 뒤에 단일 형식 인수가 필요합니다.", "requiredNotInTypedDict": "이 컨텍스트에서는 \"Required\"를 사용할 수 없습니다.", "returnInAsyncGenerator": "값이 있는 Return 문은 비동기 생성기에서 사용할 수 없습니다.", - "returnMissing": "선언된 형식의 ‘{returnType}’이 있는 함수는 모든 코드 경로에서 값을 반환해야 합니다.", + "returnMissing": "선언된 반환 형식이 \"{returnType}\"인 함수는 모든 코드 경로에서 값을 반환해야 합니다.", "returnOutsideFunction": "‘return’은 함수 내에서만 사용할 수 있습니다.", "returnTypeContravariant": "반공변 유형 변수는 반환 형식에 사용할 수 없습니다.", "returnTypeMismatch": "\"{exprType}\" 형식의 식을 반환 형식 \"{returnType}\"에 할당할 수 없습니다.", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "{index} 인덱스가 {type} 형식의 범위를 벗어났습니다.", "typeAliasIllegalExpressionForm": "형식 별칭 정의에 대한 식 양식이 잘못되었습니다.", "typeAliasIsRecursiveDirect": "형식 별칭 ‘{name}’의 정의에서 스스로를 사용할 수 없습니다.", + "typeAliasNotAllowed": "이 컨텍스트에서 형식 별칭 \"{name}\"을(를) 사용할 수 없습니다.", "typeAliasNotInModuleOrClass": "TypeAlias는 모듈 또는 클래스 범위 내에서만 정의할 수 있습니다.", "typeAliasRedeclared": "\"{name}\"은(는) TypeAlias로 선언되며 한 번만 할당할 수 있습니다.", "typeAliasStatementIllegal": "형식 별칭 문에는 Python 3.12 이상이 필요합니다.", diff --git a/packages/pyright-internal/src/localization/package.nls.pl.json b/packages/pyright-internal/src/localization/package.nls.pl.json index 327b5b1c0..403a74d14 100644 --- a/packages/pyright-internal/src/localization/package.nls.pl.json +++ b/packages/pyright-internal/src/localization/package.nls.pl.json @@ -293,7 +293,7 @@ "noOverload": "Żadne przeciążenia dla nazwy „{name}” nie pasują do podanych argumentów", "noReturnContainsReturn": "Funkcja z zadeklarowanym zwracanym typem „NoReturn” nie może zawierać instrukcji Return", "noReturnContainsYield": "Funkcja z zadeklarowanym zwracanym typem „NoReturn” nie może zawierać instrukcji Yield", - "noReturnReturnsNone": "Funkcja o zadeklarowanym typie „NoReturn” nie może zwrócić wartości „Brak”", + "noReturnReturnsNone": "Funkcja z zadeklarowanym typem zwracanym „NoReturn” nie może zwracać wartości „None”", "nonDefaultAfterDefault": "Argument inny niż domyślny następuje po argumencie domyślnym", "nonLocalInModule": "Deklaracja nielokalna nie jest dozwolona na poziomie modułu", "nonLocalNoBinding": "Nie znaleziono powiązania dla nielokalnej nazwy „{name}”.", @@ -383,7 +383,7 @@ "requiredArgCount": "Oczekiwano jednego argumentu typu po wartości „Required”", "requiredNotInTypedDict": "Element „Required” jest niedozwolony w tym kontekście", "returnInAsyncGenerator": "Instrukcja „return” z wartością jest niedozwolona w generatorze asynchronicznym", - "returnMissing": "Funkcja z zadeklarowanym typem „{returnType}” musi zwracać wartość we wszystkich ścieżkach kodu", + "returnMissing": "Funkcja z zadeklarowanym typem zwracanym „{returnType}” musi zwracać wartość we wszystkich ścieżkach kodu", "returnOutsideFunction": "Instrukcja „return” może być używana tylko w ramach funkcji", "returnTypeContravariant": "Kontrawariantna zmienna typu nie może być używana w zwracanym typie", "returnTypeMismatch": "Wyrażenia typu „{exprType}” nie można przypisać do zwracanego typu „{returnType}”", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "Indeks {index} jest poza zakresem dla typu {type}", "typeAliasIllegalExpressionForm": "Nieprawidłowy formularz wyrażenia dla definicji aliasu typu", "typeAliasIsRecursiveDirect": "Alias typu „{name}” nie może używać samego siebie w swojej definicji", + "typeAliasNotAllowed": "Alias typu „{name}” nie może być używany w tym kontekście", "typeAliasNotInModuleOrClass": "Typ TypeAlias można zdefiniować tylko w zakresie modułu lub klasy", "typeAliasRedeclared": "Nazwa „{name}” jest zadeklarowana jako TypeAlias i może być przypisana tylko raz", "typeAliasStatementIllegal": "Instrukcja typu alias wymaga języka Python w wersji 3.12 lub nowszej", 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 7175cdefe..c9d68ac07 100644 --- a/packages/pyright-internal/src/localization/package.nls.pt-br.json +++ b/packages/pyright-internal/src/localization/package.nls.pt-br.json @@ -293,7 +293,7 @@ "noOverload": "Nenhuma sobrecarga para \"{name}\" corresponde aos argumentos fornecidos", "noReturnContainsReturn": "A função com o tipo de retorno declarado \"NoReturn\" não pode incluir uma instrução return", "noReturnContainsYield": "A função com o tipo de retorno declarado \"NoReturn\" não pode incluir uma instrução yield", - "noReturnReturnsNone": "A função com o tipo declarado de \"NoReturn\" não pode retornar \"None\"", + "noReturnReturnsNone": "Função com tipo de retorno declarado \"NoReturn\" não pode retornar \"None\"", "nonDefaultAfterDefault": "O argumento não padrão segue o argumento padrão", "nonLocalInModule": "Declaração não local não permitida no nível do módulo", "nonLocalNoBinding": "Nenhuma associação para \"{name}\" não local encontrada", @@ -383,7 +383,7 @@ "requiredArgCount": "Argumento de tipo único esperado após \"Obrigatório\"", "requiredNotInTypedDict": "\"Obrigatório\" não é permitido neste contexto", "returnInAsyncGenerator": "A instrução return com valor não é permitida no gerador assíncrono", - "returnMissing": "A função com o tipo declarado de \"{returnType}\" deve retornar o valor em todos os caminhos de código", + "returnMissing": "Função com tipo de retorno declarado \"{returnType}\" deve retornar valor em todos os caminhos de código", "returnOutsideFunction": "\"return\" só pode ser usado dentro de uma função", "returnTypeContravariant": "A variável de tipo contravariante não pode ser usada no tipo de retorno", "returnTypeMismatch": "A expressão do tipo \"{exprType}\" não pode ser atribuída ao tipo de retorno \"{returnType}\"", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "O índice {index} está fora do intervalo para o tipo {type}", "typeAliasIllegalExpressionForm": "Formulário de expressão inválido para definição de alias de tipo", "typeAliasIsRecursiveDirect": "O alias de tipo \"{name}\" não pode usar a si mesmo em sua definição", + "typeAliasNotAllowed": "O alias de tipo \"{name}\" não pode ser usado neste contexto", "typeAliasNotInModuleOrClass": "Um TypeAlias só pode ser definido dentro de um módulo ou escopo de classe", "typeAliasRedeclared": "\"{name}\" é declarado como um TypeAlias e só pode ser atribuído uma vez", "typeAliasStatementIllegal": "A instrução de alias de tipo requer o Python 3.12 ou mais recente", 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 a6bd7353a..689c96221 100644 --- a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json +++ b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json @@ -293,7 +293,7 @@ "noOverload": "[IcBNQ][นั้Ñø øvërløæðs før \"{ñæmë}\" mætçh thë prøvïðëð ærgµmëñtsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "noReturnContainsReturn": "[nBLDq][นั้Fµñçtïøñ wïth ðëçlærëð rëtµrñ tÿpë \"ÑøRëtµrñ\" çæññøt ïñçlµðë æ rëtµrñ stætëmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "noReturnContainsYield": "[V3G36][นั้Fµñçtïøñ wïth ðëçlærëð rëtµrñ tÿpë \"ÑøRëtµrñ\" çæññøt ïñçlµðë æ ÿïëlð stætëmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", - "noReturnReturnsNone": "[O3XA6][นั้Fµñçtïøñ wïth ðëçlærëð tÿpë øf \"ÑøRëtµrñ\" çæññøt rëtµrñ \"Ñøñë\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "noReturnReturnsNone": "[O3XA6][นั้Fµñçtïøñ wïth ðëçlærëð rëtµrñ tÿpë \"ÑøRëtµrñ\" çæññøt rëtµrñ \"Ñøñë\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", "nonDefaultAfterDefault": "[mFFgP][นั้Ñøñ-ðëfæµlt ærgµmëñt følløws ðëfæµlt ærgµmëñtẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "nonLocalInModule": "[kmLlv][นั้Ñøñløçæl ðëçlærætïøñ ñøt ælløwëð æt møðµlë lëvëlẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", "nonLocalNoBinding": "[WTA2d][นั้Ñø þïñðïñg før ñøñløçæl \"{ñæmë}\" føµñðẤğ倪İЂҰक्र्तिृまẤนั้ढूँ]", @@ -383,7 +383,7 @@ "requiredArgCount": "[aZX4z][นั้Ëxpëçtëð æ sïñglë tÿpë ærgµmëñt æftër \"Rëqµïrëð\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]", "requiredNotInTypedDict": "[TArW6][นั้\"Rëqµïrëð\" ïs ñøt ælløwëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", "returnInAsyncGenerator": "[qb5pt][นั้Rëtµrñ stætëmëñt wïth vælµë ïs ñøt ælløwëð ïñ æsÿñç gëñërætørẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", - "returnMissing": "[kPevK][นั้Fµñçtïøñ wïth ðëçlærëð tÿpë øf \"{rëtµrñTÿpë}\" mµst rëtµrñ vælµë øñ æll çøðë pæthsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", + "returnMissing": "[kPevK][นั้Fµñçtïøñ wïth ðëçlærëð rëtµrñ tÿpë \"{rëtµrñTÿpë}\" mµst rëtµrñ vælµë øñ æll çøðë pæthsẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", "returnOutsideFunction": "[O4SJp][นั้\"rëtµrñ\" çæñ þë µsëð øñlÿ wïthïñ æ fµñçtïøñẤğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", "returnTypeContravariant": "[KkMhh][นั้Çøñtræværïæñt tÿpë værïæþlë çæññøt þë µsëð ïñ rëtµrñ tÿpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", "returnTypeMismatch": "[QYqHy][นั้Ëxprëssïøñ øf tÿpë \"{ëxprTÿpë}\" çæññøt þë æssïgñëð tø rëtµrñ tÿpë \"{rëtµrñTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "[aNqDv][นั้Ïñðëx {ïñðëx} ïs øµt øf ræñgë før tÿpë {tÿpë}Ấğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "typeAliasIllegalExpressionForm": "[4u4ay][นั้Ïñvælïð ëxprëssïøñ førm før tÿpë ælïæs ðëfïñïtïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", "typeAliasIsRecursiveDirect": "[r8PyZ][นั้Tÿpë ælïæs \"{ñæmë}\" çæññøt µsë ïtsëlf ïñ ïts ðëfïñïtïøñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", + "typeAliasNotAllowed": "[a8iha][นั้Tÿpë ælïæs \"{ñæmë}\" çæññøt þë µsëð ïñ thïs çøñtëxtẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", "typeAliasNotInModuleOrClass": "[iQpDJ][นั้Æ TÿpëÆlïæs çæñ þë ðëfïñëð øñlÿ wïthïñ æ møðµlë ør çlæss sçøpëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", "typeAliasRedeclared": "[P036x][นั้\"{ñæmë}\" ïs ðëçlærëð æs æ TÿpëÆlïæs æñð çæñ þë æssïgñëð øñlÿ øñçëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", "typeAliasStatementIllegal": "[2EW0Q][นั้Tÿpë ælïæs stætëmëñt rëqµïrës Pÿthøñ 3.12 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index 6ea3cb8bd..9d9e50c98 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -293,7 +293,7 @@ "noOverload": "Не существует перегрузок для \"{name}\", соответствующих указанным аргументам", "noReturnContainsReturn": "Функция с объявленным типом возвращаемого значения \"NoReturn\" не может содержать оператор return", "noReturnContainsYield": "Функция с объявленным типом возвращаемого значения \"NoReturn\" не может содержать инструкцию yield", - "noReturnReturnsNone": "Функция с объявленным типом \"NoReturn\" не может возвращать \"None\"", + "noReturnReturnsNone": "Функция с объявленным типом возвращаемого значения \"NoReturn\" не может возвращать \"None\"", "nonDefaultAfterDefault": "Аргумент, отличный от аргумента по умолчанию, следует за аргументом по умолчанию", "nonLocalInModule": "Нелокальные объявления на уровне модулей не разрешены", "nonLocalNoBinding": "Привязка для нелокального элемента \"{name}\" не найдена", @@ -383,7 +383,7 @@ "requiredArgCount": "Ожидается один аргумент типа после \"Required\"", "requiredNotInTypedDict": "Использование \"Required\" в этом контексте не допускается", "returnInAsyncGenerator": "Оператор return со значением не допускается в асинхронном генераторе", - "returnMissing": "Функция с объявленным типом \"{returnType}\" должна возвращать значение во всех путях кода", + "returnMissing": "Функция с объявленным типом возвращаемого значения \"{returnType}\" должна возвращать значение во всех путях кода", "returnOutsideFunction": "\"return\" можно использовать только внутри функции", "returnTypeContravariant": "Переменная контравариантного типа не может использоваться в возвращаемом типе", "returnTypeMismatch": "Выражение типа \"{exprType}\" не может быть назначено возвращаемому типу \"{returnType}\"", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "Индекс {index} выходит за пределы допустимого диапазона для типа {type}", "typeAliasIllegalExpressionForm": "Недопустимая форма выражения для определения псевдонима типа", "typeAliasIsRecursiveDirect": "Псевдоним типа \"{name}\" не может использовать себя в своем определении", + "typeAliasNotAllowed": "Псевдоним типа \"{name}\" нельзя использовать в этом контексте", "typeAliasNotInModuleOrClass": "TypeAlias можно определить только внутри области модуля или класса", "typeAliasRedeclared": "\"{name}\" объявлен как TypeAlias и может быть присвоен только один раз", "typeAliasStatementIllegal": "Оператор псевдонима типа можно использовать в Python версии не ниже 3.12", diff --git a/packages/pyright-internal/src/localization/package.nls.tr.json b/packages/pyright-internal/src/localization/package.nls.tr.json index 6912a79cf..f8a08e823 100644 --- a/packages/pyright-internal/src/localization/package.nls.tr.json +++ b/packages/pyright-internal/src/localization/package.nls.tr.json @@ -293,7 +293,7 @@ "noOverload": "\"{name}\" için aşırı yüklemelerin hiçbiri sağlanan bağımsız değişkenlerle eşleşmiyor", "noReturnContainsReturn": "Bildirilen dönüş türü \"NoReturn\" olan işlev bir return deyimi içeremez", "noReturnContainsYield": "Bildirilen dönüş türü \"NoReturn\" olan işlev bir yield deyimi içeremez", - "noReturnReturnsNone": "Bildirilen \"NoReturn\" türüne sahip işlev \"None\" döndüremez", + "noReturnReturnsNone": "Bildirilen \"NoReturn\" döndürme türüne sahip işlev \"None\" döndüremez", "nonDefaultAfterDefault": "Varsayılan olmayan bağımsız değişken varsayılan bağımsız değişkeni izler", "nonLocalInModule": "Modül düzeyinde yerel olmayan bildirim kullanılamaz", "nonLocalNoBinding": "Yerel olmayan \"{name}\" öğesi için bağlama bulunamadı", @@ -383,7 +383,7 @@ "requiredArgCount": "\"Required\" sonrasında tek bir tür bağımsız değişken bekleniyordu", "requiredNotInTypedDict": "Bu bağlamda \"Required\" kullanımına izin verilmiyor", "returnInAsyncGenerator": "Zaman uyumsuz oluşturucuda değer içeren dönüş deyimine izin verilmez", - "returnMissing": "Bildirilen \"{returnType}\" türüne sahip işlev, tüm kod yollarında değer döndürmelidir", + "returnMissing": "Bildirilen \"{returnType}\" döndürme türüne sahip işlev, tüm kod yollarında değer döndürmelidir", "returnOutsideFunction": "\"return\" yalnızca bir işlev içinde kullanılabilir", "returnTypeContravariant": "Değişken karşıtı tür değişkeni dönüş türünde kullanılamaz", "returnTypeMismatch": "\"{exprType}\" türündeki ifade \"{returnType}\" dönüş türüne atanamaz", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "{index} dizini {type} türü için aralık dışında", "typeAliasIllegalExpressionForm": "Tür diğer ad tanımı için geçersiz ifade form", "typeAliasIsRecursiveDirect": "Tür diğer adı \"{name}\", tanımında kendisini kullanamaz", + "typeAliasNotAllowed": "\"{name}\" tür adı bu bağlamda kullanılamaz", "typeAliasNotInModuleOrClass": "TypeAlias yalnızca bir modül veya sınıf kapsamında tanımlanabilir", "typeAliasRedeclared": "\"{name}\" bir TypeAlias olarak bildirilmiş ve yalnızca bir kez atanabilir", "typeAliasStatementIllegal": "Tür diğer adı deyimi için Python 3.12 veya daha yeni bir sürümü gerekiyor", 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 1433b6e3d..95cfb5052 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-cn.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-cn.json @@ -293,7 +293,7 @@ "noOverload": "“{name}”的重载与提供的参数不匹配", "noReturnContainsReturn": "声明返回类型为“NoReturn”的函数不能包含 return 语句", "noReturnContainsYield": "声明的返回类型为 “NoReturn” 的函数不能包含 yield 语句", - "noReturnReturnsNone": "声明类型为“NoReturn”的函数无法返回“None”", + "noReturnReturnsNone": "所声明的返回类型为 \"NoReturn\" 的函数无法返回 \"None\"", "nonDefaultAfterDefault": "非默认参数遵循默认参数", "nonLocalInModule": "模块级别不允许使用非本地声明", "nonLocalNoBinding": "找不到非本地“{name}”的绑定", @@ -383,7 +383,7 @@ "requiredArgCount": "\"Required\"后应为单个类型参数", "requiredNotInTypedDict": "此上下文中不允许使用\"Required\"", "returnInAsyncGenerator": "异步生成器中不允许返回值为值的语句", - "returnMissing": "声明类型为“{returnType}”的函数必须在所有代码路径上返回值", + "returnMissing": "所声明的返回类型为“{returnType}”的函数必须在所有代码路径上返回值", "returnOutsideFunction": "“return”只能在函数中使用", "returnTypeContravariant": "逆变类型变量不能用于返回类型", "returnTypeMismatch": "无法将类型“{exprType}”的表达式分配给返回类型“{returnType}”", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "类型 {type} 的索引 {index} 超出范围", "typeAliasIllegalExpressionForm": "类型别名定义的表达式形式无效", "typeAliasIsRecursiveDirect": "类型别名“{name}”不能在其定义中使用自身", + "typeAliasNotAllowed": "类型别名“{name}”不能在此上下文中使用", "typeAliasNotInModuleOrClass": "TypeAlias 只能在模块或类范围内定义", "typeAliasRedeclared": "“{name}”声明为 TypeAlias,只能分配一次", "typeAliasStatementIllegal": "类型别名语句需要 Python 3.12 或更高版本", 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 531d5290b..2d621dd1f 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-tw.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-tw.json @@ -383,7 +383,7 @@ "requiredArgCount": "\"Required\" 後面應有單一型別引數", "requiredNotInTypedDict": "此內容中不允許 \"Required\"", "returnInAsyncGenerator": "非同步產生器中不允許具有值的 return 陳述式", - "returnMissing": "具有宣告 \"{returnType}\" 型別的函式必須在所有程式碼路徑上傳回值", + "returnMissing": "宣告類型為 \"{returnType}\" 的函式必須在所有程式碼路徑上傳回值", "returnOutsideFunction": "\"return\" 只能在函式內使用", "returnTypeContravariant": "逆變數型別變數不能用在傳回型別中", "returnTypeMismatch": "類型 \"{exprType}\" 的運算式不能指派至傳回類型 \"{returnType}\"", @@ -429,6 +429,7 @@ "tupleIndexOutOfRange": "索引 {index} 超過類型 {type} 的範圍", "typeAliasIllegalExpressionForm": "類型別名定義無效的運算式格式", "typeAliasIsRecursiveDirect": "型別別名 \"{name}\" 無法在其定義中使用它自己", + "typeAliasNotAllowed": "類型別名 \"{name}\" 無法在此內容中使用", "typeAliasNotInModuleOrClass": "TypeAlias 只能在模組或類別範圍內定義", "typeAliasRedeclared": "\"{name}\" 宣告為 TypeAlias,且只能指派一次", "typeAliasStatementIllegal": "類型別名陳述式需要 Python 3.12 或更新版本", diff --git a/packages/pyright-internal/src/server.ts b/packages/pyright-internal/src/server.ts index a172a7471..080875e1a 100644 --- a/packages/pyright-internal/src/server.ts +++ b/packages/pyright-internal/src/server.ts @@ -57,6 +57,7 @@ export class PyrightServer extends LanguageServerBase { const console = new ConsoleWithLogLevel(connection.console); const fileWatcherProvider = new WorkspaceFileWatcherProvider(); const fileSystem = createFromRealFileSystem(console, fileWatcherProvider); + const serviceProvider = new ServiceProvider([ { key: ServiceKeys.fs, value: new PyrightFileSystem(fileSystem) }, { key: ServiceKeys.console, value: console }, @@ -73,8 +74,7 @@ export class PyrightServer extends LanguageServerBase { maxAnalysisTimeInForeground, supportedCodeActions: [CodeActionKind.QuickFix, CodeActionKind.SourceOrganizeImports], }, - connection, - console + connection ); this._controller = new CommandController(this); diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 94f0adf61..dfc6d22ee 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -954,7 +954,7 @@ export class TestState { const expectedCompletions = map[markerName].completions; const provider = this.getCompletionResults(this, marker, docFormat, abbrMap); - const results = await provider.getCompletions(); + const results = provider.getCompletions(); if (results) { if (verifyMode === 'exact') { if (results.items.length !== expectedCompletions.length) { @@ -1475,7 +1475,7 @@ export class TestState { readonly importName: string; }; } - ): { getCompletions(): Promise; resolveCompletionItem(item: CompletionItem): void } { + ): { getCompletions(): CompletionList | null; resolveCompletionItem(item: CompletionItem): void } { const filePath = marker.fileName; const completionPosition = this.convertOffsetToPosition(filePath, marker.position); @@ -1495,7 +1495,7 @@ export class TestState { ); return { - getCompletions: () => Promise.resolve(provider.getCompletions()), + getCompletions: () => provider.getCompletions(), resolveCompletionItem: (i) => provider.resolveCompletionItem(i), }; } From be94058247e46a6af1ebcdcd4ce9ed66f710eabd Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 16 Aug 2023 12:57:51 -0700 Subject: [PATCH 515/525] Fixed a bug that led to a false positive error under certain circumstances when a callable using `Concatenate` is assigned to another callable using `Concatenate`. --- .../src/analyzer/typeEvaluator.ts | 15 ++------------- .../src/tests/samples/paramSpec4.py | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 7028ea2f2..b26ca0959 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24057,19 +24057,8 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions targetIncludesParamSpec && srcType.details.paramSpec?.nameWithScope === destType.details.paramSpec?.nameWithScope ) { - const srcParamCount = srcType.details.parameters.length; - const destParamCount = destType.details.parameters.length; - - if (srcParamCount !== destParamCount) { - // If the dest has an extra position-only parameter separator appended - // to the end of the signature, it's OK. - if ( - srcParamCount !== destParamCount - 1 || - destType.details.parameters[destParamCount - 1].category !== ParameterCategory.Simple || - !!destType.details.parameters[destParamCount - 1].name - ) { - canAssign = false; - } + if (srcParamDetails.params.length !== destParamDetails.params.length) { + canAssign = false; } } diff --git a/packages/pyright-internal/src/tests/samples/paramSpec4.py b/packages/pyright-internal/src/tests/samples/paramSpec4.py index 657a7130a..62132d8e8 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec4.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec4.py @@ -1,7 +1,7 @@ # This sample tests the type checker's handling of ParamSpec # and Concatenate as described in PEP 612. -from typing import Callable, Concatenate, ParamSpec, TypeVar +from typing import Callable, Concatenate, ParamSpec, Protocol, TypeVar P = ParamSpec("P") R = TypeVar("R") @@ -108,3 +108,16 @@ def func7(name: str, **kwargs: str): # This should generate an error because 1 isn't assignable to str. v8 = func5(func7, "a", b="b", c=1) + + +T = TypeVar("T", covariant=True) +X = TypeVar("X") + + +class DecoProto(Protocol[P, T]): + def __call__(self, *args: P.args, **kwargs: P.kwargs) -> T: + ... + + +def decorator(cb: Callable[Concatenate[X, P], T]) -> DecoProto[Concatenate[X, P], T]: + return cb From d1c170d093e57114ddcb869e6f586945d03aa50f Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 16 Aug 2023 13:26:33 -0700 Subject: [PATCH 516/525] Fixed bug that can result in a false positive error when a wildcard import targets a module that doesn't contain a `__all__` definition but includes dundered names in its module namespace. This addresses #5737. --- packages/pyright-internal/src/analyzer/binder.ts | 2 +- packages/pyright-internal/src/tests/samples/import17.py | 3 +++ packages/pyright-internal/src/tests/samples/import18.py | 5 ++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index 6b4dcb185..f5f496b74 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -2638,7 +2638,7 @@ export class Binder extends ParseTreeWalker { } lookupInfo.symbolTable.forEach((symbol, name) => { - if (!symbol.isExternallyHidden() && !isPrivateOrProtectedName(name)) { + if (!symbol.isExternallyHidden() && !name.startsWith('_')) { namesToImport!.push(name); } }); diff --git a/packages/pyright-internal/src/tests/samples/import17.py b/packages/pyright-internal/src/tests/samples/import17.py index ee365f082..412af22c7 100644 --- a/packages/pyright-internal/src/tests/samples/import17.py +++ b/packages/pyright-internal/src/tests/samples/import17.py @@ -3,3 +3,6 @@ a: str = "hi" b: float = 1.0 c: int + +_d: int +__e__: int diff --git a/packages/pyright-internal/src/tests/samples/import18.py b/packages/pyright-internal/src/tests/samples/import18.py index 747710c0e..448d3c4da 100644 --- a/packages/pyright-internal/src/tests/samples/import18.py +++ b/packages/pyright-internal/src/tests/samples/import18.py @@ -5,4 +5,7 @@ a: str b: str c: str -d: str + +_d: str +__e__: str +g: str From 6e5f3569ce85fb655381beda5d7e76936c0ed5e0 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 16 Aug 2023 15:12:18 -0700 Subject: [PATCH 517/525] Fixed a false positive error when invoking a call of a variable that is annotated using a PEP 695 type alias. --- .../pyright-internal/src/analyzer/typeEvaluator.ts | 14 ++++++++++++-- .../src/tests/samples/typeAliasStatement1.py | 6 +++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index b26ca0959..30f4a01ef 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -285,6 +285,7 @@ import { TypeBase, TypeCategory, TypeCondition, + TypeFlags, TypeVarScopeType, TypeVarType, TypedDictEntry, @@ -1229,7 +1230,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions function reportInvalidUseOfPep695TypeAlias(type: Type, node: ExpressionNode): boolean { // PEP 695 type aliases cannot be used as instantiable classes. - if (type.typeAliasInfo?.name && type.typeAliasInfo.isPep695Syntax) { + if (type.typeAliasInfo?.name && type.typeAliasInfo.isPep695Syntax && TypeBase.isSpecialForm(type)) { addDiagnostic( AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, DiagnosticRule.reportGeneralTypeIssues, @@ -14956,6 +14957,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions const boundTypeVars = typeParameters.filter( (typeVar) => typeVar.scopeId !== typeAliasScopeId && typeVar.scopeType === TypeVarScopeType.Class ); + if (boundTypeVars.length > 0) { addError( Localizer.Diagnostic.genericTypeAliasBoundTypeVar().format({ @@ -14965,7 +14967,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions ); } - return TypeBase.cloneForTypeAlias( + const typeAlias = TypeBase.cloneForTypeAlias( type, name.value, ParseTreeUtils.getClassFullName(name, fileInfo.moduleName, name.value), @@ -14973,6 +14975,14 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions isPep695Syntax, typeParameters.length > 0 ? typeParameters : undefined ); + + // All PEP 695 type aliases are special forms because they are + // TypeAliasType objects at runtime. + if (isPep695Syntax) { + typeAlias.flags |= TypeFlags.SpecialForm; + } + + return typeAlias; } function createSpecialBuiltInClass(node: ParseNode, assignedName: string, aliasMapEntry: AliasMapEntry): ClassType { diff --git a/packages/pyright-internal/src/tests/samples/typeAliasStatement1.py b/packages/pyright-internal/src/tests/samples/typeAliasStatement1.py index 6d3ac3d10..494c606e7 100644 --- a/packages/pyright-internal/src/tests/samples/typeAliasStatement1.py +++ b/packages/pyright-internal/src/tests/samples/typeAliasStatement1.py @@ -1,7 +1,7 @@ # This sample tests error cases associated with the "type" statement # introduced in PEP 695. -from typing import Callable +from typing import Any, Callable T1 = 0 @@ -63,3 +63,7 @@ def func2(x: object): if isinstance(x, TA10): reveal_type(x) +type TA11 = Callable[..., Any] + +def func3(cb: TA11): + cb() From 745f0642786d66c5fa505969ef43fdb3b97ae08b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 16 Aug 2023 15:41:12 -0700 Subject: [PATCH 518/525] Fixed a bug that caused an incorrect application of a ParamSpec in certain cases where the signature bound to the ParamSpec was generic. This is related to this bug in the mypy issue tracker: https://github.com/python/mypy/issues/15753. --- packages/pyright-internal/src/analyzer/types.ts | 1 + .../src/tests/samples/paramSpec4.py | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 0316a8af5..611387561 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -1653,6 +1653,7 @@ export namespace FunctionType { }); } + newFunction.details.paramSpecTypeVarScopeId = paramSpecValue.details.typeVarScopeId; newFunction.details.paramSpec = paramSpecValue.details.paramSpec; } diff --git a/packages/pyright-internal/src/tests/samples/paramSpec4.py b/packages/pyright-internal/src/tests/samples/paramSpec4.py index 62132d8e8..1a90a1ba4 100644 --- a/packages/pyright-internal/src/tests/samples/paramSpec4.py +++ b/packages/pyright-internal/src/tests/samples/paramSpec4.py @@ -1,7 +1,7 @@ # This sample tests the type checker's handling of ParamSpec # and Concatenate as described in PEP 612. -from typing import Callable, Concatenate, ParamSpec, Protocol, TypeVar +from typing import Callable, Concatenate, Iterable, ParamSpec, Protocol, TypeVar P = ParamSpec("P") R = TypeVar("R") @@ -119,5 +119,14 @@ def __call__(self, *args: P.args, **kwargs: P.kwargs) -> T: ... -def decorator(cb: Callable[Concatenate[X, P], T]) -> DecoProto[Concatenate[X, P], T]: +def func8(cb: Callable[Concatenate[X, P], T]) -> DecoProto[Concatenate[X, P], T]: return cb + + +@func8 +def func9(x: Iterable[T]) -> T: + return next(iter(x)) + + +v9 = func9([1, 2]) +reveal_type(v9, expected_text="int") From 33afc3019b24d39d5cc2d88bf086f537907041a8 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Wed, 16 Aug 2023 16:53:44 -0700 Subject: [PATCH 519/525] Improved validation of `NamedTuple` and `namedtuple` factory calls. This addresses #5699. (#5739) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 47 +++++++++++++++---- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 30f4a01ef..a44e38190 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -9100,6 +9100,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } + let effectiveTypeVarContext = typeVarContext; + if (!effectiveTypeVarContext) { + // If a typeVarContext wasn't provided by the caller, allocate one here. + effectiveTypeVarContext = new TypeVarContext(getTypeVarScopeIds(expandedCallType)); + } + // The stdlib collections/__init__.pyi stub file defines namedtuple // as a function rather than a class, so we need to check for it here. if (expandedCallType.details.builtInName === 'namedtuple') { @@ -9110,9 +9116,19 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions errorNode ); - return { + const result: CallResult = { returnType: createNamedTupleType(evaluatorInterface, errorNode, argList, /* includesTypes */ false), }; + + validateFunctionArguments( + errorNode, + argList, + { type: expandedCallType }, + effectiveTypeVarContext, + skipUnknownArgCheck + ); + + return result; } // Handle the NewType specially, replacing the normal return type. @@ -9120,12 +9136,6 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions return { returnType: createNewType(errorNode, argList) }; } - let effectiveTypeVarContext = typeVarContext; - if (!effectiveTypeVarContext) { - // If a typeVarContext wasn't provided by the caller, allocate one here. - effectiveTypeVarContext = new TypeVarContext(getTypeVarScopeIds(expandedCallType)); - } - const functionResult = validateFunctionArguments( errorNode, argList, @@ -9318,9 +9328,28 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (className === 'NamedTuple') { - return { + const result: CallResult = { returnType: createNamedTupleType(evaluatorInterface, errorNode, argList, /* includesTypes */ true), }; + + const initTypeResult = getTypeOfObjectMember( + errorNode, + ClassType.cloneAsInstance(expandedCallType), + '__init__' + ); + + if (initTypeResult && isOverloadedFunction(initTypeResult.type)) { + validateOverloadedFunctionArguments( + errorNode, + argList, + { type: initTypeResult.type }, + /* typeVarContext */ undefined, + skipUnknownArgCheck, + /* inferenceContext */ undefined + ); + } + + return result; } if (className === 'NewType') { @@ -16040,7 +16069,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } } - // Determine the effective metaclass and detect metaclass conflicts. + // Determine the effective metaclass. if (metaclassNode) { const metaclassType = getTypeOfExpression(metaclassNode, exprFlags).type; if (isInstantiableClass(metaclassType) || isUnknown(metaclassType)) { From a5a6a1930d15d57a40d202f46578a18c5cf75083 Mon Sep 17 00:00:00 2001 From: Vasista Vovveti Date: Thu, 17 Aug 2023 06:14:19 +0530 Subject: [PATCH 520/525] Fix partial rename in tests (#5740) --- packages/pyright-internal/src/tests/samples/hashability2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/tests/samples/hashability2.py b/packages/pyright-internal/src/tests/samples/hashability2.py index 3c8c1a1ec..643d36ec8 100644 --- a/packages/pyright-internal/src/tests/samples/hashability2.py +++ b/packages/pyright-internal/src/tests/samples/hashability2.py @@ -29,8 +29,8 @@ class D(B, C): # Both of these should generate an error because B is unhashable. -s3 = {UnhashableSub()} -d3 = {UnhashableSub(): 100} +s3 = {D()} +d3 = {D(): 100} class E: From b8d278598dad0ce3f52bd6d09c56b870de60fc84 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 17 Aug 2023 08:53:27 -0700 Subject: [PATCH 521/525] Improved detection of redundant pattern capture targets in `case` statements. This addresses #5742. --- .../pyright-internal/src/parser/parser.ts | 117 ++++++++++++++---- .../src/tests/samples/match1.py | 23 ++++ .../src/tests/typeEvaluator3.test.ts | 2 +- 3 files changed, 118 insertions(+), 24 deletions(-) diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index e5c5b3058..7fcb27d5f 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -728,6 +728,12 @@ export class Parser { casePattern = PatternSequenceNode.create(patternList.list[0], patternList.list); } + if (casePattern.nodeType !== ParseNodeType.Error) { + const globalNameMap = new Map(); + const localNameMap = new Map(); + this._reportDuplicatePatternCaptureTargets(casePattern, globalNameMap, localNameMap); + } + let guardExpression: ExpressionNode | undefined; if (this._consumeTokenIfKeyword(KeywordType.If)) { guardExpression = this._parseTestExpression(/* allowAssignmentExpression */ true); @@ -751,6 +757,93 @@ export class Parser { return false; } + // Reports any situations where a capture target (a variable that receives part of a pattern) + // appears twice within the same pattern. This is complicated by the fact that duplicate targets + // are allowed in separate "or" clauses, so we need to track the targets we've seen globally + // as well as the targets we've seen locally within the current "or" clause. + private _reportDuplicatePatternCaptureTargets( + node: PatternAtomNode, + globalNameMap: Map, + localNameMap: Map + ) { + const reportTargetIfDuplicate = (nameNode: NameNode) => { + if (globalNameMap.has(nameNode.value) || localNameMap.has(nameNode.value)) { + this._addError( + Localizer.Diagnostic.duplicateCapturePatternTarget().format({ + name: nameNode.value, + }), + nameNode + ); + } else { + localNameMap.set(nameNode.value, nameNode); + } + }; + + switch (node.nodeType) { + case ParseNodeType.PatternSequence: { + node.entries.forEach((subpattern) => { + this._reportDuplicatePatternCaptureTargets(subpattern, globalNameMap, localNameMap); + }); + break; + } + + case ParseNodeType.PatternClass: { + node.arguments.forEach((arg) => { + this._reportDuplicatePatternCaptureTargets(arg.pattern, globalNameMap, localNameMap); + }); + break; + } + + case ParseNodeType.PatternAs: { + if (node.target) { + reportTargetIfDuplicate(node.target); + } + + const orLocalNameMaps = node.orPatterns.map((subpattern) => { + const orLocalNameMap = new Map(); + this._reportDuplicatePatternCaptureTargets(subpattern, localNameMap, orLocalNameMap); + return orLocalNameMap; + }); + + const combinedLocalOrNameMap = new Map(); + orLocalNameMaps.forEach((orLocalNameMap) => { + orLocalNameMap.forEach((node) => { + if (!combinedLocalOrNameMap.has(node.value)) { + combinedLocalOrNameMap.set(node.value, node); + reportTargetIfDuplicate(node); + } + }); + }); + break; + } + + case ParseNodeType.PatternCapture: { + if (!node.isWildcard) { + reportTargetIfDuplicate(node.target); + } + break; + } + + case ParseNodeType.PatternMapping: { + node.entries.forEach((mapEntry) => { + if (mapEntry.nodeType === ParseNodeType.PatternMappingExpandEntry) { + reportTargetIfDuplicate(mapEntry.target); + } else { + this._reportDuplicatePatternCaptureTargets(mapEntry.keyPattern, globalNameMap, localNameMap); + this._reportDuplicatePatternCaptureTargets(mapEntry.valuePattern, globalNameMap, localNameMap); + } + }); + break; + } + + case ParseNodeType.PatternLiteral: + case ParseNodeType.PatternValue: + case ParseNodeType.Error: { + break; + } + } + } + private _getPatternTargetNames(node: PatternAtomNode, nameSet: Set): void { switch (node.nodeType) { case ParseNodeType.PatternSequence: { @@ -814,33 +907,11 @@ export class Parser { entry.orPatterns[0].nodeType === ParseNodeType.PatternCapture && entry.orPatterns[0].isStar ); + if (starEntries.length > 1) { this._addError(Localizer.Diagnostic.duplicateStarPattern(), starEntries[1].orPatterns[0]); } - // Look for redundant capture targets. - const captureTargetMap = new Map(); - patternList.list.forEach((asPattern) => { - asPattern.orPatterns.forEach((patternAtom) => { - if ( - patternAtom.nodeType === ParseNodeType.PatternCapture && - !patternAtom.isStar && - !patternAtom.isWildcard - ) { - if (captureTargetMap.has(patternAtom.target.value)) { - this._addError( - Localizer.Diagnostic.duplicateCapturePatternTarget().format({ - name: patternAtom.target.value, - }), - patternAtom - ); - } else { - captureTargetMap.set(patternAtom.target.value, patternAtom); - } - } - }); - }); - return patternList; } diff --git a/packages/pyright-internal/src/tests/samples/match1.py b/packages/pyright-internal/src/tests/samples/match1.py index 691e06cd4..75b508523 100644 --- a/packages/pyright-internal/src/tests/samples/match1.py +++ b/packages/pyright-internal/src/tests/samples/match1.py @@ -188,3 +188,26 @@ def func4(): def func5(match: Any): # This should be treated as a list, not a match statement. match[2:8, 2:8] = 0 + + +class Point: + def __init__(self, x: int, y: int) -> None: + self.x = x + self.y = y + +def func6(subj: Any): + match subj: + # This should generate an error because a is used twice in the same pattern. + case [a, *a]: + pass + + case ([c, d] as f) | ([d, c] as f): + pass + + # This should generate an error because h is used twice in the same pattern. + case (g, 1 as h) as h: + pass + + # This should generate an error because j is used twice in the same pattern. + case Point(x=j, y=j): + pass diff --git a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts index 1c0a9ee2a..343320568 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator3.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator3.test.ts @@ -1175,7 +1175,7 @@ test('Match1', () => { configOptions.defaultPythonVersion = PythonVersion.V3_10; const analysisResults = TestUtils.typeAnalyzeSampleFiles(['match1.py'], configOptions); - TestUtils.validateResults(analysisResults, 18); + TestUtils.validateResults(analysisResults, 21); }); test('Match2', () => { From c9bf6527247c8a2baf8630ea8442c796ef3b714e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 17 Aug 2023 09:38:25 -0700 Subject: [PATCH 522/525] Changed the type evaluation logic for the enum `value` member so a custom value type can be specified in the Enum subclass. This addresses #5741. --- packages/pyright-internal/src/analyzer/enums.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index 83bcf78b7..c8c45a902 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -39,6 +39,7 @@ import { UnknownType, combineTypes, findSubtype, + isAny, isClass, isClassInstance, isFunction, @@ -445,6 +446,15 @@ export function getTypeOfEnumMember( if (literalValue) { assert(literalValue instanceof EnumLiteral); + + // If there is no known value type for this literal value, + // return undefined. This will cause the caller to fall back + // on the definition of `value` within the class definition + // (if present). + if (isAny(literalValue.itemType)) { + return undefined; + } + return { type: literalValue.itemType, isIncomplete }; } From adebfbd36e4211b2ff912917fdc0977ae7650d1b Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 17 Aug 2023 11:22:35 -0700 Subject: [PATCH 523/525] Fixed a bug that led to a false positive in the `reportIncompatibleMethodOverride` check in certain circumstances where the method in both the base class and child class are overloaded. This addresses #5718. (#5746) Co-authored-by: Eric Traut --- .../src/analyzer/typeEvaluator.ts | 33 ++++++++++++++----- .../src/localization/localize.ts | 3 +- .../src/localization/package.nls.en-us.json | 2 +- .../src/tests/samples/methodOverride6.py | 30 +++++++++++++++++ 4 files changed, 57 insertions(+), 11 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index a44e38190..bc6e3047c 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24528,30 +24528,42 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // has additional overloads that are not present in the override. let previousMatchIndex = -1; - let overrideOverloadIndex = 0; const baseOverloads = OverloadedFunctionType.getOverloads(baseMethod); for (const overrideOverload of OverloadedFunctionType.getOverloads(overrideMethod)) { - const matchIndex = baseOverloads.findIndex((baseOverload) => { + let possibleMatchIndex: number | undefined; + + let matchIndex = baseOverloads.findIndex((baseOverload, index) => { // If the override isn't applicable for this base class, skip the check. if (baseClass && !isOverrideMethodApplicable(baseOverload, baseClass)) { return false; } - return validateOverrideMethodInternal( + const isCompatible = validateOverrideMethodInternal( baseOverload, overrideOverload, /* diag */ undefined, enforceParamNames, /* exemptSelfClsParam */ false ); + + // If the override is compatible but the match is one that is below the previous + // matched index, keep looking for additional matches. Record the fact that + // we found at least one match. + if (isCompatible && index <= previousMatchIndex && possibleMatchIndex === undefined) { + possibleMatchIndex = index; + return false; + } + + return isCompatible; }); + if (matchIndex < 0 && possibleMatchIndex !== undefined) { + matchIndex = possibleMatchIndex; + } + if (matchIndex < 0) { - diag.addMessage( - Localizer.DiagnosticAddendum.overrideOverloadNoMatch().format({ index: overrideOverloadIndex + 1 }) - ); - return false; + continue; } if (matchIndex < previousMatchIndex) { @@ -24560,7 +24572,12 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } previousMatchIndex = matchIndex; - overrideOverloadIndex++; + } + + if (previousMatchIndex < baseOverloads.length - 1) { + // We didn't find matches for all of the base overloads. + diag.addMessage(Localizer.DiagnosticAddendum.overrideOverloadNoMatch()); + return false; } return true; diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 50a6080e6..294cd8073 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -1235,8 +1235,7 @@ export namespace Localizer { export const overrideNotClassMethod = () => getRawString('DiagnosticAddendum.overrideNotClassMethod'); export const overrideNotInstanceMethod = () => getRawString('DiagnosticAddendum.overrideNotInstanceMethod'); export const overrideNotStaticMethod = () => getRawString('DiagnosticAddendum.overrideNotStaticMethod'); - export const overrideOverloadNoMatch = () => - new ParameterizedString<{ index: number }>(getRawString('DiagnosticAddendum.overrideOverloadNoMatch')); + export const overrideOverloadNoMatch = () => getRawString('DiagnosticAddendum.overrideOverloadNoMatch'); export const overrideOverloadOrder = () => getRawString('DiagnosticAddendum.overrideOverloadOrder'); export const overrideParamKeywordNoDefault = () => new ParameterizedString<{ name: string }>(getRawString('DiagnosticAddendum.overrideParamKeywordNoDefault')); diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index b22ed36b6..0c4e9ada3 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -634,7 +634,7 @@ "overrideNotClassMethod": "Base method is declared as a classmethod but override is not", "overrideNotInstanceMethod": "Base method is declared as an instance method but override is not", "overrideNotStaticMethod": "Base method is declared as a staticmethod but override is not", - "overrideOverloadNoMatch": "Overload {index} is not compatible with base method", + "overrideOverloadNoMatch": "Override does not handle all overloads of base method", "overrideOverloadOrder": "Overloads for override method must be in the same order as the base method", "overrideParamKeywordNoDefault": "Keyword parameter \"{name}\" mismatch: base parameter has default argument value, override parameter does not", "overrideParamKeywordType": "Keyword parameter \"{name}\" type mismatch: base parameter is type \"{baseType}\", override parameter is type \"{overrideType}\"", diff --git a/packages/pyright-internal/src/tests/samples/methodOverride6.py b/packages/pyright-internal/src/tests/samples/methodOverride6.py index 0d3b25e4a..8dbce6c3e 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride6.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride6.py @@ -203,3 +203,33 @@ def method4(cls, x: int) -> int: @classmethod def method4(cls, x: Any) -> Any: ... + + +class Parent3: + @overload + def method(self, x: int) -> int: + ... + + @overload + def method(self, x: str) -> str: + ... + + def method(self, x: int | str) -> int | str: + return x + + +class Child3_1(Parent3): + @overload + def method(self, x: int) -> int: + ... + + @overload + def method(self, x: str) -> str: + ... + + @overload + def method(self, x: list[float]) -> list[float]: + ... + + def method(self, x: int | str | list[float]) -> int | str | list[float]: + return x From 8f1eda2de7be4e5dc2cdf1c61f518ab14fee29a5 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 17 Aug 2023 12:39:51 -0700 Subject: [PATCH 524/525] Fixed bug that resulted in a false positive error when an `async` function with no return type annotation was called recursively. This addresses #5745. --- packages/pyright-internal/src/analyzer/typeEvaluator.ts | 8 ++++---- .../pyright-internal/src/tests/samples/coroutines2.py | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bc6e3047c..bee5b422a 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -17102,13 +17102,13 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions validateTypeParameterDefault(bestErrorNode, typeParam, functionType.details.typeParameters.slice(0, index)); }); + // If it's an async function, wrap the return type in an Awaitable or Generator. + const preDecoratedType = node.isAsync ? createAsyncFunction(node, functionType) : functionType; + // Clear the "partially evaluated" flag to indicate that the functionType // is fully evaluated. functionType.details.flags &= ~FunctionTypeFlags.PartiallyEvaluated; - // If it's an async function, wrap the return type in an Awaitable or Generator. - const preDecoratedType = node.isAsync ? createAsyncFunction(node, functionType) : functionType; - // Apply all of the decorators in reverse order. let decoratedType: Type = preDecoratedType; let foundUnknown = false; @@ -17409,7 +17409,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions // Awaitable[]. Mark the new function as no longer async. const awaitableFunctionType = FunctionType.cloneWithNewFlags( functionType, - functionType.details.flags & ~FunctionTypeFlags.Async + functionType.details.flags & ~(FunctionTypeFlags.Async | FunctionTypeFlags.PartiallyEvaluated) ); if (functionType.details.declaredReturnType) { diff --git a/packages/pyright-internal/src/tests/samples/coroutines2.py b/packages/pyright-internal/src/tests/samples/coroutines2.py index 6a964c7f1..c486e0780 100644 --- a/packages/pyright-internal/src/tests/samples/coroutines2.py +++ b/packages/pyright-internal/src/tests/samples/coroutines2.py @@ -18,3 +18,7 @@ async def inner(sleep: int, message: str) -> str: async def outer(): await inspector(inner(1, "test")) + + +async def recursive1(): + await recursive1() From 9a059b5346050f96a4d9213cff3474da69e2e64d Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 17 Aug 2023 15:53:47 -0700 Subject: [PATCH 525/525] Fixed a bug that led to a false positive in the `reportIncompatibleMethodOverride` check when overriding a method with a ParamSpec. This addresses #5750. --- .../src/analyzer/parameterUtils.ts | 22 +++++++++++++++++++ .../src/analyzer/typeEvaluator.ts | 2 +- .../src/tests/samples/methodOverride2.py | 21 ++++++++++++++++-- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/parameterUtils.ts b/packages/pyright-internal/src/analyzer/parameterUtils.ts index 1e5258699..6d13e3417 100644 --- a/packages/pyright-internal/src/analyzer/parameterUtils.ts +++ b/packages/pyright-internal/src/analyzer/parameterUtils.ts @@ -14,9 +14,11 @@ import { FunctionType, isClassInstance, isPositionOnlySeparator, + isTypeVar, isUnpackedClass, isVariadicTypeVar, Type, + TypeVarType, } from './types'; import { partiallySpecializeType } from './typeUtils'; @@ -62,6 +64,7 @@ export interface ParameterListDetails { hasUnpackedVariadicTypeVar: boolean; hasUnpackedTypedDict: boolean; unpackedKwargsTypedDictType?: ClassType; + paramSpec?: TypeVarType; } // Examines the input parameters within a function signature and creates a @@ -75,6 +78,7 @@ export function getParameterListDetails(type: FunctionType): ParameterListDetail params: [], hasUnpackedVariadicTypeVar: false, hasUnpackedTypedDict: false, + paramSpec: type.details.paramSpec, }; let positionOnlyIndex = type.details.parameters.findIndex((p) => isPositionOnlySeparator(p)); @@ -282,5 +286,23 @@ export function getParameterListDetails(type: FunctionType): ParameterListDetail } }); + // If the signature ends in `*args: P.args, **kwargs: P.kwargs`, + // extract the ParamSpec P. + if (result.params.length >= 2) { + const secondLastParam = result.params[result.params.length - 2].param; + const lastParam = result.params[result.params.length - 1].param; + + if ( + secondLastParam.category === ParameterCategory.ArgsList && + isTypeVar(secondLastParam.type) && + secondLastParam.type.paramSpecAccess === 'args' && + lastParam.category === ParameterCategory.KwargsDict && + isTypeVar(lastParam.type) && + lastParam.type.paramSpecAccess === 'kwargs' + ) { + result.paramSpec = TypeVarType.cloneForParamSpecAccess(secondLastParam.type, undefined); + } + } + return result; } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bee5b422a..69e2c8639 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -24966,7 +24966,7 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } // Verify that one or the other method doesn't contain a ParamSpec. - if (baseMethod.details.paramSpec && !overrideMethod.details.paramSpec) { + if (baseParamDetails.paramSpec && !overrideParamDetails.paramSpec) { diag?.addMessage(Localizer.DiagnosticAddendum.paramSpecMissingInOverride()); canOverride = false; } diff --git a/packages/pyright-internal/src/tests/samples/methodOverride2.py b/packages/pyright-internal/src/tests/samples/methodOverride2.py index ef426fab6..05a134c05 100644 --- a/packages/pyright-internal/src/tests/samples/methodOverride2.py +++ b/packages/pyright-internal/src/tests/samples/methodOverride2.py @@ -2,7 +2,10 @@ # diagnostic check. -class Base: +from typing import Generic, ParamSpec, TypeVar + + +class Base1: def f1(self, *, kwarg0: int) -> None: ... @@ -37,7 +40,7 @@ def h1(self, a: int, *args: int) -> None: ... -class Derived(Base): +class Derived1(Base1): def f1(self, arg0: int = 0, *, kwarg0: int, kwarg1: int = 0) -> None: ... @@ -72,3 +75,17 @@ def g5(self, __a: int, b: str = "hi", *, kwarg0: int) -> None: def g6(self, __a: int, b: str, c: str = "hi", *, kwarg0: int) -> None: ... + + +P = ParamSpec("P") +R = TypeVar("R") + + +class Base2(Generic[P, R]): + def __call__(self, *args: P.args, **kwargs: P.kwargs) -> R: + ... + + +class Derived2(Base2[P, R]): + def __call__(self, *args: P.args, **kwargs: P.kwargs) -> R: + ...